diff --git a/TOC.md b/TOC.md new file mode 100644 index 00000000000..90b4d216611 --- /dev/null +++ b/TOC.md @@ -0,0 +1,88 @@ +# [framework](docs\framework\TOC.md) +# [app-domains](docs\framework\app-domains\TOC.md) +# [common-client-technologies](docs\framework\common-client-technologies\TOC.md) +# [configure-apps](docs\framework\configure-apps\TOC.md) +# [file-schema](docs\framework\configure-apps\file-schema\TOC.md) +# [compiler](docs\framework\configure-apps\file-schema\compiler\TOC.md) +# [cryptography](docs\framework\configure-apps\file-schema\cryptography\TOC.md) +# [network](docs\framework\configure-apps\file-schema\network\TOC.md) +# [runtime](docs\framework\configure-apps\file-schema\runtime\TOC.md) +# [startup](docs\framework\configure-apps\file-schema\startup\TOC.md) +# [trace-debug](docs\framework\configure-apps\file-schema\trace-debug\TOC.md) +# [wcf](docs\framework\configure-apps\file-schema\wcf\TOC.md) +# [wcf-directive](docs\framework\configure-apps\file-schema\wcf-directive\TOC.md) +# [web](docs\framework\configure-apps\file-schema\web\TOC.md) +# [windows-identity-foundation](docs\framework\configure-apps\file-schema\windows-identity-foundation\TOC.md) +# [windows-workflow-foundation](docs\framework\configure-apps\file-schema\windows-workflow-foundation\TOC.md) +# [data](docs\framework\data\TOC.md) +# [adonet](docs\framework\data\adonet\TOC.md) +# [dataset-datatable-dataview](docs\framework\data\adonet\dataset-datatable-dataview\TOC.md) +# [ef](docs\framework\data\adonet\ef\TOC.md) +# [language-reference](docs\framework\data\adonet\ef\language-reference\TOC.md) +# [sql](docs\framework\data\adonet\sql\TOC.md) +# [linq](docs\framework\data\adonet\sql\linq\TOC.md) +# [transactions](docs\framework\data\transactions\TOC.md) +# [wcf](docs\framework\data\wcf\TOC.md) +# [debug-trace-profile](docs\framework\debug-trace-profile\TOC.md) +# [deployment](docs\framework\deployment\TOC.md) +# [get-started](docs\framework\get-started\TOC.md) +# [install](docs\framework\install\TOC.md) +# [interop](docs\framework\interop\TOC.md) +# [mef](docs\framework\mef\TOC.md) +# [migration-guide](docs\framework\migration-guide\TOC.md) +# [misc](docs\framework\misc\TOC.md) +# [net-native](docs\framework\net-native\TOC.md) +# [network-programming](docs\framework\network-programming\TOC.md) +# [performance](docs\framework\performance\TOC.md) +# [reflection-and-codedom](docs\framework\reflection-and-codedom\TOC.md) +# [resources](docs\framework\resources\TOC.md) +# [security](docs\framework\security\TOC.md) +# [serialization](docs\framework\serialization\TOC.md) +# [tools](docs\framework\tools\TOC.md) +# [ui-automation](docs\framework\ui-automation\TOC.md) +# [unmanaged-api](docs\framework\unmanaged-api\TOC.md) +# [wcf](docs\framework\wcf\TOC.md) +# [diagnostics](docs\framework\wcf\diagnostics\TOC.md) +# [etw](docs\framework\wcf\diagnostics\etw\TOC.md) +# [event-logging](docs\framework\wcf\diagnostics\event-logging\TOC.md) +# [exceptions-reference](docs\framework\wcf\diagnostics\exceptions-reference\TOC.md) +# [performance-counters](docs\framework\wcf\diagnostics\performance-counters\TOC.md) +# [tracing](docs\framework\wcf\diagnostics\tracing\TOC.md) +# [wmi](docs\framework\wcf\diagnostics\wmi\TOC.md) +# [extending](docs\framework\wcf\extending\TOC.md) +# [feature-details](docs\framework\wcf\feature-details\TOC.md) +# [samples](docs\framework\wcf\samples\TOC.md) +# [whats-new](docs\framework\whats-new\TOC.md) +# [windows-services](docs\framework\windows-services\TOC.md) +# [windows-workflow-foundation](docs\framework\windows-workflow-foundation\TOC.md) +# [samples](docs\framework\windows-workflow-foundation\samples\TOC.md) +# [winforms](docs\framework\winforms\TOC.md) +# [advanced](docs\framework\winforms\advanced\TOC.md) +# [controls](docs\framework\winforms\controls\TOC.md) +# [wpf](docs\framework\wpf\TOC.md) +# [advanced](docs\framework\wpf\advanced\TOC.md) +# [app-development](docs\framework\wpf\app-development\TOC.md) +# [controls](docs\framework\wpf\controls\TOC.md) +# [data](docs\framework\wpf\data\TOC.md) +# [getting-started](docs\framework\wpf\getting-started\TOC.md) +# [graphics-multimedia](docs\framework\wpf\graphics-multimedia\TOC.md) +# [xaml-services](docs\framework\xaml-services\TOC.md) +# [standard](docs\standard\TOC.md) +# [asynchronous-programming-patterns](docs\standard\asynchronous-programming-patterns\TOC.md) +# [attributes](docs\standard\attributes\TOC.md) +# [base-types](docs\standard\base-types\TOC.md) +# [collections](docs\standard\collections\TOC.md) +# [thread-safe](docs\standard\collections\thread-safe\TOC.md) +# [cross-platform](docs\standard\cross-platform\TOC.md) +# [xml](docs\standard\data\xml\TOC.md) +# [datetime](docs\standard\datetime\TOC.md) +# [design-guidelines](docs\standard\design-guidelines\TOC.md) +# [events](docs\standard\events\TOC.md) +# [exceptions](docs\standard\exceptions\TOC.md) +# [garbage-collection](docs\standard\garbage-collection\TOC.md) +# [generics](docs\standard\generics\TOC.md) +# [globalization-localization](docs\standard\globalization-localization\TOC.md) +# [io](docs\standard\io\TOC.md) +# [parallel-programming](docs\standard\parallel-programming\TOC.md) +# [security](docs\standard\security\TOC.md) +# [threading](docs\standard\threading\TOC.md) diff --git a/docs/framework/64-bit-apps.md b/docs/framework/64-bit-apps.md new file mode 100644 index 00000000000..fbd7c68444b --- /dev/null +++ b/docs/framework/64-bit-apps.md @@ -0,0 +1,71 @@ +--- +title: "64 ビット アプリケーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "64 ビット アプリケーション [C++]" + - "64 ビット プログラミング [C++]" + - "アプリケーション [C++], 64 ビット" +ms.assetid: fd4026bc-2c3d-4b27-86dc-ec5e96018181 +caps.latest.revision: 53 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 53 +--- +# 64 ビット アプリケーション +アプリケーションをコンパイルするときに、Windows 64 ビット オペレーティング システム上で、ネイティブ アプリケーションとして実行するか、WOW64 \(Windows 64 ビット上の Windows 32 ビット\) の制御下で実行するかを指定できます。 WOW64 は互換環境であり、32 ビット アプリケーションを 64 ビット オペレーティング システム上で実行できるようにします。 WOW64 は、Windows オペレーティング システムのすべての 64 ビット バージョンに含まれています。 + +## Windows における 32 ビット アプリケーションと 64 ビット アプリケーションの実行の比較 + .NET Framework 1.0 および 1.1 リリースでビルドされたアプリケーションはすべて、64 ビットのオペレーティング システム上の 32 ビット アプリケーションとして扱われます。そして常に、WOW64 と 32 ビットの共通言語ランタイム \(CLR: Common Language Runtime\) のもとで実行します。 [!INCLUDE[net_v40_long](../../includes/net-v40-long-md.md)] 以降のバージョンでビルドされた 32 ビット アプリケーションも、64 ビット システムでは WOW64 のもとで実行します。 + + Visual Studio は、x86 コンピューターには 32 ビット版の CLR をインストールし、64 ビットの Windows コンピューターには、32 ビット版の CLR と適切な 64 ビット版の CLR の両方をインストールします \(Visual Studio は 32 ビット アプリケーションであるため、64 ビット システムにインストールすると WOW64 の制御下で実行されます\)。 + +> [!NOTE] +> x86 エミュレーションと、Itanium プロセッサ ファミリ向け WOW64 サブシステムの設計のために、アプリケーションの実行は単一のプロセッサ上に制限されます。 これらの要因により、Itanium ベースのシステム上で実行する 32 ビット .NET Framework アプリケーションのパフォーマンスとスケーラビリティは低下します。 パフォーマンスおよびスケーラビリティを向上させるために、Itanium ベースのシステム用のネイティブ 64 ビット サポートを含む [!INCLUDE[net_v40_long](../../includes/net-v40-long-md.md)] を使用することをお勧めします。 + + 既定では、64 ビット Windows オペレーティング システムで 64 ビット マネージ アプリケーションを実行するときに、最大 2 GB のオブジェクトを作成できます。 ただし、[!INCLUDE[net_v45](../../includes/net-v45-md.md)] ではこの制限を上げることができます。 詳細については、「[\ 要素](../../docs/framework/configure-apps/file-schema/runtime/gcallowverylargeobjects-element.md)」を参照してください。 + + 多くのアセンブリは 32 ビットの CLR と 64 ビットの CLR で同じように実行します。 しかし、次の条件が当てはまる場合、一部のプログラムでは動作が CLR によって異なります。 + +- プラットフォームによってメンバーのサイズが変わる構造体 \(ポインター型など\) + +- 定数のサイズを含むポインター演算 + +- ハンドルに `Int32` ではなく `IntPtr` を使用した不適切なプラットフォーム呼び出しまたは COM 宣言 + +- `IntPtr` を `Int32` にキャストするコード + + 32 ビット アプリケーションを 64 ビットの CLR に移行して実行する方法の詳細については、[MSDN ライブラリの「Migrating 32\-bit Managed Code to 64\-bit](http://go.microsoft.com/fwlink/?LinkId=150542)」を参照してください。 + +## 一般的な 64 ビット プログラミングについて + 64 ビット プログラミングの一般的な問題については、次のドキュメントを参照してください。 + +- 64 ビット Windows コンピューター上の 64 ビット版 CLR の詳細については、MSDN Web サイトの「[.NET Framework Developer Center](http://go.microsoft.com/fwlink/?LinkId=37079)」を参照してください。 + +- [!INCLUDE[winsdkshort](../../includes/winsdkshort-md.md)] ドキュメントの「[64 ビット Windows プログラミング ガイド](http://go.microsoft.com/fwlink/p/?LinkId=253512)」を参照してください。 + +- 64 ビット版 CLR をダウンロードする方法については、MSDN Web サイトの「[.NET Framework Developer Center Downloads](http://go.microsoft.com/fwlink/?LinkId=50953)」を参照してください。 + +- 64 ビット アプリケーションを作成するための Visual Studio のサポート機能については、「[Visual Studio IDE の 64 ビット サポート](../Topic/Visual%20Studio%20IDE%2064-Bit%20Support.md)」を参照してください。 + +## 64 ビット アプリケーションを作成するためのコンパイラのサポート + 既定では、.NET Framework を使用して 32 ビット コンピューターまたは 64 ビット コンピューターでアプリケーションをビルドする場合、アプリケーションは 64 ビット コンピューターでネイティブ アプリケーションとして \(WOW64 の制御下ではなく\) 実行します。 次の表に、Visual Studio コンパイラを使用して、ネイティブなアプリケーションとして実行する 64 ビット アプリケーション、WOW64 の下で実行する 64 ビット アプリケーション、またはその両方が可能な 64 ビット アプリケーションを作成するための方法を説明するドキュメントを示します。 + +|コンパイラ|コンパイラ オプション| +|-----------|-----------------| +|Visual Basic|[\/platform](../Topic/-platform%20\(Visual%20Basic\).md)| +|Visual C\#|[\/platform \(Specify Output Platform\)](../Topic/-platform%20\(C%23%20Compiler%20Options\).md)| +|Visual C\+\+|**\/clr:safe** を使用すると、プラットフォームに依存しない、Microsoft Intermediate Language \(MSIL\) アプリケーションを作成できます。 詳しくは、「[\/clr \(共通言語ランタイムのコンパイル\)](../Topic/-clr%20\(Common%20Language%20Runtime%20Compilation\).md)」を参照してください。

Visual C\+\+ には、それぞれの 64 ビット オペレーティング システムを対象とする個別のコンパイラが含まれます。 Visual C\+\+ を使用して 64 ビット Windows オペレーティング システム上で実行するネイティブ アプリケーションを作成する方法の詳細については、「[64\-bit Programming](http://msdn.microsoft.com/library/h2k70f3s\(v=vs.80\))」を参照してください。| + +## .exe ファイルまたは .dll ファイルのステータスの特定 + .exe ファイルまたは .dll ファイルが、特定のプラットフォーム上または WOW64 の下でのみ動作するように意図されているかどうかを確認するには、[CorFlags.exe \(CorFlags 変換ツール\)](../../docs/framework/tools/corflags-exe-corflags-conversion-tool.md) を使用します \(オプションは指定しません\)。 また、CorFlags.exe を使用して、.exe ファイルまたは .dll ファイルのプラットフォームのステータスを変更することもできます。 Visual Studio アセンブリの CLR ヘッダーのメジャー ランタイム バージョン番号が 2、マイナー ランタイム バージョン番号が 5 に設定されています。 マイナー ランタイム バージョンが 0 に設定されたアプリケーションは、レガシ アプリケーションとして扱われ、常に WOW64 の下で実行されます。 + + プログラムによって .exe または .dll を照会し、それが特定のプラットフォーム上または WOW64 の下でのみ動作するように意図されているかどうかを確認するには、 メソッドを使用します。 \ No newline at end of file diff --git a/docs/framework/TOC.md b/docs/framework/TOC.md new file mode 100644 index 00000000000..ac0c43a3fe8 --- /dev/null +++ b/docs/framework/TOC.md @@ -0,0 +1,5 @@ +# [64 ビット アプリケーション](64-bit-apps.md) +# [.NET Framework 4.6 および 4.5](index.md) +# [ASP.NET を使用した Web アプリケーション](develop-web-apps-with-aspnet.md) +# [クライアント アプリケーション](develop-client-apps.md) +# [開発ガイド](development-guide.md) diff --git a/docs/framework/app-domains/TOC.md b/docs/framework/app-domains/TOC.md new file mode 100644 index 00000000000..80280603dc6 --- /dev/null +++ b/docs/framework/app-domains/TOC.md @@ -0,0 +1,46 @@ +# [厳密な名前付きアセンブリの作成と使用](create-and-use-strong-named-assemblies.md) +# [アセンブリの配置](assembly-placement.md) +# [方法 : アセンブリの内容を表示する](how-to-view-assembly-contents.md) +# [方法 : アプリケーション ドメインをアンロードする](how-to-unload-an-application-domain.md) +# [イントラネット アプリケーションの完全信頼での実行](running-intranet-applications-in-full-trust.md) +# [アセンブリと side-by-side 実行](assemblies-and-side-by-side-execution.md) +# [アセンブリのシャドウ コピー](shadow-copy-assemblies.md) +# [厳密な名前付きアセンブリ](strong-named-assemblies.md) +# [グローバル アセンブリ キャッシュ](gac.md) +# [アプリケーション ドメインの使用](use.md) +# [方法 : グローバル アセンブリ キャッシュの内容を表示する](how-to-view-the-contents-of-the-gac.md) +# [方法 : アプリケーション ドメインを作成する](how-to-create-an-application-domain.md) +# [方法 : グローバル アセンブリ キャッシュからアセンブリを削除する](how-to-remove-an-assembly-from-the-gac.md) +# [方法 : グローバル アセンブリ キャッシュにアセンブリをインストールする](how-to-install-an-assembly-into-the-gac.md) +# [方法: シングルファイル アセンブリをビルドする](how-to-build-a-single-file-assembly.md) +# [アセンブリの場所](assembly-location.md) +# [アセンブリへの遅延署名](delay-sign-assembly.md) +# [アプリケーション ドメインとアセンブリ](index.md) +# [アセンブリ名](assembly-names.md) +# [アセンブリ マニフェスト](assembly-manifest.md) +# [アセンブリとグローバル アセンブリ キャッシュの使用](working-with-assemblies-and-the-gac.md) +# [アセンブリのバージョン管理](assembly-versioning.md) +# [拡張された厳密な名前付け](enhanced-strong-naming.md) +# [方法: 初回例外通知を受け取る](how-to-receive-first-chance-exception-notifications.md) +# [アプリケーション ドメインからのセットアップ情報の取得](retrieve-setup-information.md) +# [アセンブリの作成](create-assemblies.md) +# [共通言語ランタイムでの型の転送](type-forwarding-in-the-common-language-runtime.md) +# [アセンブリ読み込みの解決](resolve-assembly-loads.md) +# [方法 : 厳密な名前のアセンブリを参照する](how-to-reference-a-strong-named-assembly.md) +# [アセンブリ属性の設定](set-assembly-attributes.md) +# [方法 : アセンブリから型およびメンバーの情報を取得する](how-to-obtain-type-and-member-information-from-an-assembly.md) +# [サービス コンポーネントとグローバル アセンブリ キャッシュの使用](use-serviced-components-with-the-gac.md) +# [共通言語ランタイムのアセンブリ](assemblies-in-the-common-language-runtime.md) +# [方法 : 厳密な名前でアセンブリに署名する](how-to-sign-an-assembly-with-a-strong-name.md) +# [アセンブリの内容](assembly-contents.md) +# [方法 : マルチファイル アセンブリをビルドする](how-to-build-a-multifile-assembly.md) +# [アセンブリを使用したプログラミング](programming-with-assemblies.md) +# [方法 : 厳密な名前のバイパス機能を無効にする](how-to-disable-the-strong-name-bypass-feature.md) +# [アプリケーション ドメインとアセンブリに関する方法のトピック](application-domains-and-assemblies-how-to-topics.md) +# [アセンブリのセキュリティに関する考慮事項](assembly-security-considerations.md) +# [方法 : アプリケーション ドメインにアセンブリを読み込む](how-to-load-assemblies-into-an-application-domain.md) +# [マルチファイル アセンブリ](multifile-assemblies.md) +# [アプリケーション ドメイン](application-domains.md) +# [方法 : アプリケーション ドメインを構成する](how-to-configure-an-application-domain.md) +# [方法 : 公開キーと秘密キーのキー ペアを作成する](how-to-create-a-public-private-key-pair.md) +# [方法 : アセンブリの完全修飾名を特定する](how-to-determine-assembly-fully-qualified-name.md) diff --git a/docs/framework/app-domains/application-domains-and-assemblies-how-to-topics.md b/docs/framework/app-domains/application-domains-and-assemblies-how-to-topics.md new file mode 100644 index 00000000000..cbc40259438 --- /dev/null +++ b/docs/framework/app-domains/application-domains-and-assemblies-how-to-topics.md @@ -0,0 +1,62 @@ +--- +title: "アプリケーション ドメインとアセンブリに関する方法のトピック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション ドメイン, 方法" + - "アセンブリ [.NET Framework], 方法" +ms.assetid: 2264054e-712e-47e4-8657-1aa1cfec3e3d +caps.latest.revision: 6 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 6 +--- +# アプリケーション ドメインとアセンブリに関する方法のトピック +概念を説明したドキュメントに用意されている、アプリケーション ドメインとアセンブリとのプログラミングに関する方法を説明したトピックへのすべてのリンクを次のセクションに示します。 + + **アプリケーション ドメイン** + +- [方法 : アプリケーション ドメインを作成する](../../../docs/framework/app-domains/how-to-create-an-application-domain.md) + +- [方法 : アプリケーション ドメインをアンロードする](../../../docs/framework/app-domains/how-to-unload-an-application-domain.md) + +- [方法 : アプリケーション ドメインを構成する](../../../docs/framework/app-domains/how-to-configure-an-application-domain.md) + +- [方法 : アプリケーション ドメインにアセンブリを読み込む](../../../docs/framework/app-domains/how-to-load-assemblies-into-an-application-domain.md) + +- [方法 : アセンブリから型およびメンバーの情報を取得する](../../../docs/framework/app-domains/how-to-obtain-type-and-member-information-from-an-assembly.md) + + **アセンブリ** + +- [方法 : アセンブリの完全修飾名を特定する](../../../docs/framework/app-domains/how-to-determine-assembly-fully-qualified-name.md) + +- [方法: シングルファイル アセンブリをビルドする](../../../docs/framework/app-domains/how-to-build-a-single-file-assembly.md) + +- [方法 : マルチファイル アセンブリをビルドする](../../../docs/framework/app-domains/how-to-build-a-multifile-assembly.md) + +- [方法 : 公開キーと秘密キーのキー ペアを作成する](../../../docs/framework/app-domains/how-to-create-a-public-private-key-pair.md) + +- [方法 : 厳密な名前でアセンブリに署名する](../../../docs/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name.md) + +- [方法 : 厳密な名前のアセンブリを参照する](../../../docs/framework/app-domains/how-to-reference-a-strong-named-assembly.md) + +- [方法 : 厳密な名前のバイパス機能を無効にする](../../../docs/framework/app-domains/how-to-disable-the-strong-name-bypass-feature.md) + +- [方法 : グローバル アセンブリ キャッシュにアセンブリをインストールする](../../../docs/framework/app-domains/how-to-install-an-assembly-into-the-gac.md) + +- [方法 : グローバル アセンブリ キャッシュの内容を表示する](../../../docs/framework/app-domains/how-to-view-the-contents-of-the-gac.md) + +- [方法 : グローバル アセンブリ キャッシュからアセンブリを削除する](../../../docs/framework/app-domains/how-to-remove-an-assembly-from-the-gac.md) + +- [方法 : アセンブリの内容を表示する](../../../docs/framework/app-domains/how-to-view-assembly-contents.md) + +## 参照 + [アプリケーション ドメインとアセンブリ](../../../docs/framework/app-domains/index.md) \ No newline at end of file diff --git a/docs/framework/app-domains/application-domains.md b/docs/framework/app-domains/application-domains.md new file mode 100644 index 00000000000..f8f58516994 --- /dev/null +++ b/docs/framework/app-domains/application-domains.md @@ -0,0 +1,171 @@ +--- +title: "アプリケーション ドメイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション ドメイン" + - "アプリケーション ドメイン, 概要" + - "アプリケーションの分離" + - "コード, 検証プロセス" + - "共通言語ランタイム, アプリケーション ドメイン" + - "分離 (アプリケーションの)" + - "プロセス境界 (分離のための)" + - "ランタイム, アプリケーション ドメイン" + - "検証テスト コード" +ms.assetid: 113a8bbf-6875-4a72-a49d-ca2d92e19cc8 +caps.latest.revision: 18 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 16 +--- +# アプリケーション ドメイン +オペレーティング システムやランタイム環境では、通常、複数のアプリケーションがなんらかの形で分離されています。 たとえば、Windows ではプロセスを使用してアプリケーションが分離されています。 このような分離は、あるアプリケーションで実行されているコードが、関係のない別のアプリケーションに悪影響をもたらさないようにするために必要です。 + + アプリケーション ドメインは、セキュリティ、信頼性、バージョン管理のための、またアセンブリをアンロードするための分離の境界を提供します。 通常、アプリケーション ドメインは、アプリケーションの実行前に共通言語ランタイムの起動を行うランタイム ホストによって作成されます。 + + このセクションのトピックでは、アプリケーション ドメインを使用してアセンブリ間を分離する方法について説明します。 + + この概要は、次のセクションで構成されています。 + +- [アプリケーションを分離する利点](#benefits) + +- [参照](#reference) + + +## アプリケーションを分離する利点 + これまで、同じコンピューター上で実行される複数のアプリケーションを分離するためには、プロセス境界が使用されていました。 この場合、各アプリケーションが独立のプロセスに読み込まれることで、アプリケーションは同じコンピューター上で実行されるほかのアプリケーションから分離されます。 + + アプリケーションが分離されるのは、メモリ アドレスがプロセスごとの相対アドレスになっていたためです。つまり、メモリ ポインターをあるプロセスから別のプロセスに渡しても、そのポインターが渡された側のプロセスでは機能しませんでした。 また、2 つのプロセス間で直接呼び出しを行うこともできませんでした。 代わりに間接的な呼び出しを行う場合は、プロキシを使用する必要がありました。 + + マネージ コードは、実行される前に必ず検査プロセスに渡されます \(管理者が検査を省略する許可をコードに与えた場合は除きます\)。 検査プロセスでは、そのコードが無効なメモリ アドレスにアクセスしたり、コードが実行されるプロセスの正常実行を妨げる原因となる動作を実行したりすることがないかどうかを確認します。 検査テストを通過したコードは、タイプ セーフであると言われます。 コードがタイプ セーフかどうかを検査するこのような機能があるため、共通言語ランタイムでは、プロセス境界と同等の高度な分離レベルを実現しながら、パフォーマンスへの影響は大幅に低く抑えることができます。 + + アプリケーション ドメインは、共通言語ランタイムがアプリケーション間を分離するために使用できる、より安全で柔軟性に富んだ処理単位となります。 個別のプロセスを使用する場合と同じ分離レベルを実現しながら、しかしプロセス間での呼び出しやプロセスの切り替えによるオーバーヘッドを生じることもなく、1 つのプロセス内で複数のアプリケーション ドメインを実行できます。 1 つのプロセス内で複数のアプリケーションを実行できるため、サーバーのスケーラビリティが飛躍的に向上します。 + + アプリケーションの分離は、アプリケーションのセキュリティを考えるうえでも重要です。 たとえば、複数のコントロールが互いのデータやリソースにアクセスできないようにして、1 つのブラウザー プロセスで複数の Web アプリケーションのコントロールを実行できます。 + + アプリケーション ドメインによる分離には、次の利点があります。 + +- 1 つのアプリケーションで発生したエラーが、ほかのアプリケーションに影響することはありません。 タイプ セーフなコードではメモリ フォールトが発生しないため、アプリケーション ドメインを使用することで、1 つのドメインで実行されているコードが同じプロセス内のほかのアプリケーションに影響することが確実になくなります。 + +- プロセス全体を停止せずに、個々のアプリケーションを停止できます。 アプリケーション ドメインを使用すると、1 つのアプリケーション内で実行されているコードをアンロードできます。 + + > [!NOTE] + > 個々のアセンブリや型はアンロードできません。 アンロードできるのはドメイン全体だけです。 + +- 1 つのアプリケーションで実行されているコードは、ほかのアプリケーションのコードやリソースに直接アクセスできません。 共通言語ランタイムでは、異なるアプリケーション ドメインにあるオブジェクト間での直接呼び出しを禁止することで分離を実現しています。 ドメイン間で渡されるオブジェクトは、コピーされるか、またはプロキシ経由でアクセスされます。 オブジェクトがコピーされる場合、オブジェクトの呼び出しはローカル呼び出しです。 つまり、呼び出し元と参照先オブジェクトの両方が、同じアプリケーション ドメイン内にあります。 オブジェクトがプロキシ経由でアクセスされる場合は、オブジェクトの呼び出しはリモート呼び出しです。 この場合は、呼び出し元と参照先オブジェクトが別のアプリケーション ドメイン内にあります。 ドメイン間呼び出しでは、2 つのプロセス間や 2 台のコンピューター間での呼び出しと同じリモート呼び出しインフラストラクチャが使用されます。 そのため、メソッドの呼び出しが正しく JIT コンパイルされるように、参照先オブジェクトのメタデータが両方のアプリケーション ドメインから利用できることが必要です。 呼び出し元のドメインが呼び出し先オブジェクトのメタデータにアクセスできない場合、コンパイルは **System.IO.FileNotFound** という例外が発生して失敗する可能性があります。 詳細については、「[リモート オブジェクト](http://msdn.microsoft.com/ja-jp/515686e6-0a8d-42f7-8188-73abede57c58)」を参照してください。 ドメイン間でオブジェクトにアクセスする方法は、アクセス対象のオブジェクトによって決まります。 詳細については、[MarshalByRefObject クラス](frlrfSystemMarshalByRefObjectClassTopic)のトピックを参照してください。 + +- コードが影響する範囲は、そのコードが実行されるアプリケーションによって決まります。 つまり、アプリケーション ドメインは、アプリケーションのバージョン ポリシー、アクセス対象となるリモート アセンブリの位置、ドメインに読み込まれるアセンブリの場所に関する情報などの構成設定を提供します。 + +- コードに与えられるアクセス許可は、そのコードが実行されるアプリケーション ドメインによって制御されます。 + + [ページのトップへ](#top) + +## アプリケーション ドメインとアセンブリ + ここでは、アプリケーション ドメインとアセンブリの関係について説明します。 アセンブリに含まれるコードを実行する前に、そのアセンブリをアプリケーション ドメインに読み込む必要があります。 通常のアプリケーションを実行すると、複数のアセンブリがアプリケーション ドメインに読み込まれます。 + + アセンブリが読み込まれる方法によって、そのアセンブリの Just\-In\-Time \(JIT\) コンパイル コードをプロセス内の複数のアプリケーション ドメインで共有できるかどうか、およびアセンブリをプロセスからアンロードできるかどうかが決まります。 + +- アセンブリがドメインに中立として読み込まれる場合は、同じセキュリティ許可セットを共有するすべてのアプリケーション ドメインが同じ JIT コンパイル コードを共有できるため、アプリケーションに必要なメモリを削減できます。 ただし、アセンブリをプロセスからアンロードできなくなります。 + +- アセンブリがドメインに中立として読み込まれない場合は、そのアセンブリが読み込まれる各アプリケーション ドメインで、そのアセンブリを JIT でコンパイルする必要があります。 ただし、アセンブリが読み込まれているアプリケーション ドメインをすべてアンロードすることで、プロセスからアセンブリをアンロードできます。 + + ランタイム ホストは、ランタイムをプロセスに読み込むときに、アセンブリをドメインに中立なアセンブリとして読み込むかどうかを決定します。 マネージ アプリケーションの場合は、 属性をプロセスのエントリ ポイント メソッドに適用し、関連付けられた 列挙体から値を指定します。 共通言語ランタイムをホストするアンマネージ アプリケーションの場合は、[CorBindToRuntimeEx 関数](../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimeex-function.md) メソッドを呼び出すときに適切なフラグを指定します。 + + アセンブリをドメインに中立として読み込むかどうかに関して、次の 3 つのオプションがあります。 + +- では、常にドメインに中立として読み込まれる Mscorlib を除き、どのアセンブリもドメインに中立として読み込まれません。 この設定は、ホストがプロセス内で 1 つのアプリケーションだけを実行する場合に一般的に使用されるため、シングル ドメインと呼ばれます。 + +- では、すべてのアセンブリがドメインに中立として読み込まれます。 この設定は、同じコードを実行する複数のアプリケーション ドメインが 1 つのプロセス内に存在する場合に使用します。 + +- では、厳密な名前が付いたアセンブリとそのすべての依存関係がグローバル アセンブリ キャッシュにインストールされている場合に、それらのアセンブリがドメインに中立として読み込まれます。 その他のアセンブリは、それらが読み込まれる各アプリケーション ドメインで個別に読み込まれ、JIT でコンパイルされるため、プロセスからアンロードできます。 この設定は、同じプロセスで複数のアプリケーションが実行されている場合、または多数のアプリケーション ドメインで共有されているアセンブリと、プロセスからアンロードする必要があるアセンブリが混在している場合に使用します。 + + クラスの メソッドを使用して読み込み元を指定して読み込まれたアセンブリ、またはバイト配列を指定する メソッドのオーバーロードを使用してイメージから読み込まれたアセンブリについては、JIT コンパイル コードを共有できません。 + + [Ngen.exe \(ネイティブ イメージ ジェネレーター\)](../../../docs/framework/tools/ngen-exe-native-image-generator.md) を使用してネイティブ コードにコンパイルされたアセンブリは、プロセスに最初に読み込まれるときにドメインに中立として読み込まれていれば、アプリケーション ドメイン間で共有できます。 + + アプリケーションのエントリ ポイントを含むアセンブリの JIT コンパイル コードは、そのすべての依存関係を共有できる場合にだけ共有されます。 + + ドメインに中立なアセンブリは、JIT で複数回コンパイルできます。 たとえば、2 つのアプリケーション ドメインのセキュリティ許可セットが異なっている場合、それらのドメインは同じ JIT コンパイル コードを共有できません。 ただし、JIT コンパイル アセンブリの各コピーは、同じ許可セットを持つ他のアプリケーション ドメインと共有できます。 + + アセンブリをドメインに中立として読み込むかどうかを判断する場合は、メモリ使用量の削減とその他のパフォーマンス要因とのトレードオフを考慮する必要があります。 + +- ドメインに中立のアセンブリでは、アセンブリを分離する必要があることから、静的データおよびメソッドにアクセスする速度が遅くなります。 静的フィールド内のオブジェクトがドメイン境界を越えて参照されることがないように、アセンブリにアクセスする各アプリケーション ドメインが、静的データのコピーを個別に保持する必要があるためです。 その結果、ランタイムには、呼び出し元が静的データまたは静的メソッドの適切なコピーにアクセスできるようにするための追加のロジックが必要となります。 この追加のロジックのために、呼び出しの処理速度が低下します。 + +- アセンブリがドメインに中立で読み込まれるときに、アセンブリのすべての依存関係を探し出して読み込む必要があります。これは、ドメインに中立として読み込むことのできない依存関係があると、アセンブリをドメインに中立として読み込むことができなくなるからです。 + +## アプリケーション ドメインとスレッド + アプリケーション ドメインは、セキュリティ、バージョン管理、信頼性のための、またマネージ コードをアンロードするための分離の境界を形成します。 スレッドは、共通言語ランタイムがコードを実行するために使用する、オペレーティング システムの構成です。 実行時には、すべてのマネージ コードがアプリケーション ドメインに読み込まれ、1 つまたは複数のマネージ スレッドによって実行されます。 + + アプリケーション ドメインとスレッドとの関係は一対一ではありません。 1 つのアプリケーション ドメイン内で一度に複数のスレッドが実行される場合があり、また 1 つのスレッドが 1 つのアプリケーション ドメインに限定されることもありません。 つまり、スレッドはアプリケーション ドメイン境界を自由に越えることができ、アプリケーション ドメインごとに新しいスレッドが生成されるわけではありません。 + + 特定の時点に限って見ると、どのスレッドも 1 つのアプリケーション ドメイン内で実行されています。 特定のアプリケーション ドメインでゼロ、1 つ、または複数のスレッドを実行できます。 ランタイムは、どのスレッドがどのアプリケーション ドメインで実行されているかを追跡しています。 任意の時点で、あるスレッドが実行されているドメインを特定するには、 メソッドを呼び出します。 + +### アプリケーション ドメインとカルチャ + オブジェクトによって表されるカルチャは、スレッドに関連付けられます。 プロパティを使用すると、現在実行しているスレッドに関連付けられているカルチャを取得できます。 プロパティを使用すると、現在実行しているスレッドに関連付けられているカルチャを取得または設定できます。 スレッドに関連付けられているカルチャが プロパティを使用して明示的に設定されている場合、スレッドがアプリケーション ドメインの境界を越えても、そのスレッドとの関連付けが維持されます。 それ以外の場合、スレッドに関連付けられるカルチャは、任意の時点でスレッドが実行されているアプリケーション ドメインの プロパティの値によって決まります。 + +- プロパティの値が `null` でない場合、プロパティによって返されるカルチャはスレッドに関連付けられます \(したがって プロパティと プロパティによって返されます\)。 + +- プロパティの値が `null` の場合は、現在のシステム カルチャがスレッドに関連付けられます。 + +## アプリケーション ドメインを使用したプログラミング + 通常、アプリケーション ドメインは、ランタイム ホストによってプログラムで作成および操作されます。 しかし、アプリケーション プログラムでもアプリケーション ドメインを操作する必要が生じる場合があります。 たとえば、アプリケーション プログラムはアプリケーション コンポーネントをドメインに読み込むことができるため、アプリケーション全体を停止せずにドメイン \(およびコンポーネント\) をアンロードできます。 + + [AppDomain クラス](frlrfSystemAppDomainClassTopic)は、アプリケーション ドメインに対するプログラム インターフェイスです。 このクラスには、ドメインを作成およびアンロードするメソッド、型のインスタンスをドメイン内に作成するメソッド、およびアプリケーション ドメインのアンロードなどの各種通知に登録するメソッドが含まれています。 一般的に使用される [AppDomain](frlrfSystemAppDomainMethodsTopic) メソッドを次の表に示します。 + +|AppDomain メソッド|説明| +|--------------------|--------| +||新しいアプリケーション ドメインを作成します。 オブジェクトを指定するこのメソッドのオーバーロードを使用することをお勧めします。 これは、アプリケーション ベース \(アプリケーションのルート ディレクトリ\)、ドメインの構成ファイルの場所、ドメインにアセンブリを読み込むときに共通言語ランタイムが使用する検索パスなど、新しいドメインのプロパティを設定する場合に望ましい方法です。| +| および |アプリケーション ドメインでアセンブリを実行します。 これはインスタンス メソッドであるため、参照先の別のアプリケーション ドメインでコードを実行する場合に使用できます。| +||指定した型のインスタンスをアプリケーション ドメイン内に作成し、プロキシを返します。 このメソッドを使用することで、作成された型を含むアセンブリが呼び出し元のアセンブリに読み込まれることを回避できます。| +||ドメインを正常にシャットダウンします。 アプリケーション ドメインは、ドメイン内で実行されているすべてのスレッドが停止するか、またはドメイン内に存在しなくなるまで、アンロードされません。| + +> [!NOTE] +> 共通言語ランタイムはグローバル メソッドのシリアル化をサポートしないため、デリゲートを使用して他のアプリケーション ドメインでグローバル メソッドを実行できません。 + + 共通言語ランタイムの仕様、「Hosting Interfaces」で説明されているアンマネージ インターフェイスも、アプリケーション ドメインへのアクセスを提供します。 ランタイム ホストは、アンマネージ コードのインターフェイスを使用して、プロセス内にアプリケーション ドメインを作成し、そのドメインにアクセスできます。 + +## COMPLUS\_LoaderOptimization 環境変数 + 実行可能アプリケーションの既定のローダーの最適化ポリシーを設定する環境変数。 + +### 構文 + +``` +COMPLUS_LoaderOptimization = 1 +``` + +### コメント + 一般的なアプリケーションでは、アプリケーション ドメインに複数のアセンブリが読み込まれてから、それに含まれるコードが実行されます。 + + アセンブリが読み込まれる方法によって、そのアセンブリの Just\-In\-Time \(JIT\) コンパイル コードをプロセス内の複数のアプリケーション ドメインで共有できるかどうかが決まります。 + +- アセンブリがドメイン中立として読み込まれる場合は、同じセキュリティ許可セットを共有するすべてのアプリケーション ドメインが同じ JIT コンパイル コードを共有できます。 このため、アプリケーションが必要とするメモリを抑えることができます。 + +- アセンブリがドメイン中立として読み込まれない場合、読み込まれるすべてのアプリケーション ドメインで JIT コンパイル済みである必要があり、またローダーはアプリケーション ドメイン間で内部リソースを共有できません。 + + COMPLUS\_LoaderOptimization 環境フラグを 1 に設定すると、ランタイム ホストは強制的にすべてのアセンブリを SingleDomain と呼ばれるドメイン中立でない方法で読み込みます。 SingleDomain では、常にドメインに中立として読み込まれる Mscorlib を除き、どのアセンブリもドメインに中立として読み込まれません。 この設定は、ホストがプロセス内で 1 つのアプリケーションだけを実行する場合に一般的に使用されるため、シングル ドメインと呼ばれます。 + +> [!CAUTION] +> COMPLUS\_LoaderOptimization 環境フラグは診断およびテストのシナリオで使用するように設計されています。 このフラグをオンにすることにより、速度の大幅な低下と使用メモリの増大が発生する場合があります。 + +### コード例 + 環境の HKEY\_LOCAL\_MACHINE\\SYSTEM\\CurrentControlSet\\services\\IISADMIN キーの複数文字列値に `COMPLUS_LoaderOptimization=1` を追加することにより、強制的にすべてのアセンブリを IISADMIN サービスにドメイン中立として読み込まないようにできます。 + +``` +Key = HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\IISADMIN +Name = Environment +Type = REG_MULTI_SZ +Value (to append) = COMPLUS_LoaderOptimization=1 + +``` + + +## 参照 + \ No newline at end of file diff --git a/docs/framework/app-domains/assemblies-and-side-by-side-execution.md b/docs/framework/app-domains/assemblies-and-side-by-side-execution.md new file mode 100644 index 00000000000..a09e73856df --- /dev/null +++ b/docs/framework/app-domains/assemblies-and-side-by-side-execution.md @@ -0,0 +1,31 @@ +--- +title: "アセンブリと side-by-side 実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], side-by-side 実行" + - "side-by-side 実行 [.NET Framework]" +ms.assetid: e42036ee-7590-47d1-b884-cc856e39bd5d +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# アセンブリと side-by-side 実行 +side\-by\-side 実行は、アプリケーションやコンポーネントの複数のバージョンを同じコンピューターに格納して実行する機能です。 つまり、ランタイムの複数のバージョンと、特定のバージョンのランタイムを使用するアプリケーションおよびコンポーネントの複数のバージョンを、同一コンピューター上に共存させることができます。 side\-by\-side 実行によって、アプリケーションをバインドするコンポーネントのバージョンや、アプリケーションが使用するランタイムのバージョンを細かく制御できます。 + + 同じアセンブリの異なるバージョンの side\-by\-side ストレージにおける side\-by\-side 実行のサポートは、厳密な名前には不可欠の要素であり、ランタイムのインフラストラクチャに組み込まれています。 厳密な名前を持つアセンブリのバージョン番号がその識別子の一部に含まれているため、ランタイムは同じアセンブリの複数のバージョンをグローバル アセンブリ キャッシュに格納し、実行時にこれらのアセンブリを読み込むことができます。 + + ランタイムは、side\-by\-side 実行できるアプリケーションの作成機能を提供しますが、side\-by\-side 実行は自動的にサポートされるわけではありません。 side\-by\-side 実行用のアプリケーション作成の詳細については、「[side\-by\-side 実行用のコンポーネントを作成するためのガイドライン](../../../docs/framework/deployment/guidelines-for-creating-components-for-side-by-side-execution.md)」を参照してください。 + +## 参照 + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) \ No newline at end of file diff --git a/docs/framework/app-domains/assemblies-in-the-common-language-runtime.md b/docs/framework/app-domains/assemblies-in-the-common-language-runtime.md new file mode 100644 index 00000000000..eee7e309c6b --- /dev/null +++ b/docs/framework/app-domains/assemblies-in-the-common-language-runtime.md @@ -0,0 +1,70 @@ +--- +title: "共通言語ランタイムのアセンブリ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework]" + - "アセンブリ [.NET Framework], 概要" + - "アセンブリ [.NET Framework], 境界" + - "境界 (アセンブリの)" + - "動的アセンブリ" + - "参照スコープの境界" + - "セキュリティ [.NET Framework], 境界" + - "型境界" + - "バージョン境界" +ms.assetid: 2cfebe19-7436-49f1-bd99-3c4019f0b676 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 共通言語ランタイムのアセンブリ +アセンブリは .NET Framework アプリケーションのビルド ブロックであり、配置、バージョン管理、再利用、アクティブ化のスコープの指定、およびセキュリティ アクセス許可の基本単位となります。 アセンブリは、相互に連携して 1 つの論理的な機能単位を形成するように構築された型やリソースの集合です。 共通言語ランタイムは、型の実装に関して必要な情報をアセンブリから取得します。 共通言語ランタイムにとって、型はアセンブリのコンテキストの外部には存在しません。 + + アセンブリの機能は次のとおりです。 + +- 共通言語ランタイムが実行するコードを保持します。 ポータブル実行可能 \(PE: Portable Executable\) ファイル内の MSIL \(Microsoft Intermediate Language\) コードにアセンブリ マニフェストが関連付けられていない場合、このコードは実行されません。 各アセンブリが保持できるエントリ ポイントは 1 つだけです \(つまり、`DllMain`、`WinMain`、または `Main`\)。 + +- セキュリティの境界を形成します。 アクセス許可の要求および付与は、アセンブリを単位として行われます。 アセンブリに適用されるセキュリティ境界の詳細については、「[アセンブリのセキュリティに関する考慮事項](../../../docs/framework/app-domains/assembly-security-considerations.md)」を参照してください。 + +- 型の境界を形成します。 すべての型の ID には、その型を含んでいるアセンブリの名前が含まれます。 したがって、あるアセンブリのスコープに読み込まれた `MyType` と呼ばれる型は、別のアセンブリのスコープに読み込まれた `MyType` と呼ばれる型とは異なります。 + +- 参照スコープの境界を形成します。 アセンブリのマニフェストには、型を解決したり、リソース要求に応答したりするために使用されるアセンブリ メタデータが含まれています。 このメタデータは、アセンブリの外部に公開する型およびリソースを指定します。 マニフェストには、そのアセンブリが依存するほかのアセンブリも列挙されています。 + +- バージョンの境界を形成します。 アセンブリは、共通言語ランタイムにおけるバージョン管理の最小単位です。同じアセンブリ内のすべての型およびリソースは、まとめてバージョン管理されます。 アセンブリのマニフェストには、任意の依存アセンブリに対して指定した、バージョンの依存関係が記述されています。 バージョン管理の詳細については、「[アセンブリのバージョン管理](../../../docs/framework/app-domains/assembly-versioning.md)」を参照してください。 + +- 配置を行う場合の単位として機能します。 アプリケーションの起動時には、そのアプリケーションが最初に呼び出すアセンブリだけが必要です。 その他のアセンブリ、たとえばローカリゼーション リソースや、ユーティリティ クラスを格納するアセンブリは必要に応じて取得できます。 これにより、最初にダウンロードされるアプリケーションを単純化し、サイズを縮小できます。 アセンブリの配置の詳細については、「[アプリケーションの配置](../../../docs/framework/deployment/net-framework-and-applications.md)」を参照してください。 + +- side\-by\-side 実行がサポートされる場合、その単位として機能します。 同じアセンブリの複数バージョンの同時実行については、「[アセンブリと side\-by\-side 実行](../../../docs/framework/app-domains/assemblies-and-side-by-side-execution.md)」を参照してください。 + + アセンブリには、静的アセンブリと動的アセンブリの 2 種類があります。 静的アセンブリには、.NET Framework の各型 \(インターフェイスおよびクラス\) と、アセンブリ用のリソース \(ビットマップ、JPEG ファイル、リソース ファイルなど\) を格納できます。 静的アセンブリは、ディスク上のポータブル実行可能 \(PE\) ファイルに保存されます。 .NET Framework を使用して動的アセンブリを作成することもできます。動的アセンブリはメモリから直接実行され、実行前にディスクに保存されることはありません。 動的アセンブリは、実行後にディスクに保存できます。 + + アセンブリを作成するには、いくつかの方法があります。 Visual Studio など、これまで .dll ファイルや .exe ファイルの作成に使用してきた開発ツールを使用できます。 他の開発環境で作成されたモジュールを使ってアセンブリを作成するには、[!INCLUDE[winsdklong](../../../includes/winsdklong-md.md)] に付属している各種ツールを使用できます。 動的アセンブリの作成には、[Reflection.Emit](frlrfSystemReflectionEmit) などの共通言語ランタイム API も使用できます。 + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[アセンブリの利点](../Topic/Assembly%20Benefits.md)|バージョン管理上の問題や DLL 競合を解決するうえでアセンブリがどのように役立つかを説明します。| +|[アセンブリの内容](../../../docs/framework/app-domains/assembly-contents.md)|アセンブリを構成する要素について説明します。| +|[アセンブリ マニフェスト](../../../docs/framework/app-domains/assembly-manifest.md)|アセンブリ マニフェストのデータについて説明し、データをアセンブリに格納する方法について説明します。| +|[グローバル アセンブリ キャッシュ](../../../docs/framework/app-domains/gac.md)|グローバル アセンブリ キャッシュと、そのキャッシュをアセンブリがどのように使用するかを説明します。| +|[厳密な名前付きアセンブリ](../../../docs/framework/app-domains/strong-named-assemblies.md)|厳密な名前付きアセンブリの特性について説明します。| +|[アセンブリのセキュリティに関する考慮事項](../../../docs/framework/app-domains/assembly-security-considerations.md)|セキュリティがアセンブリに対してどのように作用するかを説明します。| +|[アセンブリのバージョン管理](../../../docs/framework/app-domains/assembly-versioning.md)|.NET Framework のバージョン管理ポリシーの概要を説明します。| +|[アセンブリの配置](../../../docs/framework/app-domains/assembly-placement.md)|アセンブリの配置場所について説明します。| +|[アセンブリと side\-by\-side 実行](../../../docs/framework/app-domains/assemblies-and-side-by-side-execution.md)|複数のバージョンのランタイムやアセンブリの同時使用の概要について説明します。| +|[アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md)|アセンブリを作成し、署名し、その属性を設定する方法を説明します。| +|[動的メソッドおよびアセンブリの出力](../../../docs/framework/reflection-and-codedom/emitting-dynamic-methods-and-assemblies.md)|動的アセンブリの作成方法を説明します。| +|[ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md)|実行時に .NET Framework でアセンブリ参照がどのように解決されるかについて説明します。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/app-domains/assembly-contents.md b/docs/framework/app-domains/assembly-contents.md new file mode 100644 index 00000000000..9fbce072a77 --- /dev/null +++ b/docs/framework/app-domains/assembly-contents.md @@ -0,0 +1,59 @@ +--- +title: "アセンブリの内容 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], マルチファイル" + - "アセンブリ [.NET Framework], 単一ファイル" + - "マルチファイル アセンブリ" + - "シングルファイル アセンブリ" +ms.assetid: 28116714-da77-45f7-826d-fa035d121948 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# アセンブリの内容 +一般に、静的アセンブリは次の 4 つの要素から構成されます。 + +- アセンブリ メタデータを保持する[アセンブリ マニフェスト](../../../docs/framework/app-domains/assembly-manifest.md)。 + +- 型メタデータ。 + +- 型を実装する MSIL \(Microsoft Intermediate Language\) コード。 + +- 一連のリソース。 + + このうち必須なのはアセンブリ マニフェストだけですが、アセンブリになんらかの機能を与えるには、型またはリソースのいずれかが必要になります。 + + アセンブリのこれらの要素は、いくつかの方法でグループ化できます。 1 つの方法として、次の図に示すように、すべての要素を 1 つの物理ファイルにまとめることができます。 + + ![MyAssembly.dll](../../../docs/framework/app-domains/media/assemblyover1.gif "assemblyover1") +シングルファイル アセンブリ + + 別の方法として、1 つのアセンブリの要素を複数のファイルに分けることもできます。 この操作には、コンパイル済みコードのモジュール \(.netmodule\)、リソース \(.bmp ファイルや .jpg ファイルなど\)、アプリケーションで必要なその他のファイルなどを使用できます。 複数の言語で記述されたモジュールを組み合わせたり、使用頻度の低い型を必要なときにだけダウンロードされるモジュールに配置することでアプリケーションのダウンロードを最適化したりする場合は、マルチファイル アセンブリを作成します。 + + あるアプリケーションの開発において、特定のユーティリティ コードを独立したモジュールに配置し、サイズの大きいリソース ファイル \(ここでは .bmp イメージ\) を元のファイルに残しておく例を次の図に示します。 .NET Framework では、ファイルが参照される場合にだけそのファイルがダウンロードされます。参照頻度の低いコードをアプリケーションとは別のファイルに保存することで、コードのダウンロードが最適化されます。 + + ![MyAssembly.dll](../../../docs/framework/app-domains/media/assemblyover2.gif "assemblyover2") +マルチファイル アセンブリ + +> [!NOTE] +> マルチファイル アセンブリを構成する各ファイルは、ファイル システムによって物理的にリンクされるわけではありません。 これらのファイルはアセンブリ マニフェストによってリンクされ、共通言語ランタイムがこれらのファイルをまとめて管理します。 + + この例では、MyAssembly.dll に含まれるアセンブリ マニフェストに記述されているように、3 つのファイルがすべて 1 つのアセンブリに属しています。 ファイル システムにとっては、これらは 3 つの独立したファイルです。 Util.netmodule というファイルは、アセンブリ情報を含んでいないため、モジュールとしてコンパイルされています。 アセンブリの作成時に、アセンブリ マニフェストが MyAssembly.dll に追加され、その Util.netmodule および Graphic.bmp との関係が示されます。 + + ソース コードをデザインするときは、作成するアプリケーションの機能を 1 つのファイルにまとめるのか複数のファイルに分割するのか、分割する場合は機能をどのように分けるのかを明確に決める必要があります。 .NET Framework コードをデザインする場合も同様に、機能を 1 つのアセンブリにまとめるのか複数のアセンブリに分割するのか、分割する場合は機能をどのように分割するのかを決めておく必要があります。 + +## 参照 + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) + [アセンブリ マニフェスト](../../../docs/framework/app-domains/assembly-manifest.md) + [アセンブリのセキュリティに関する考慮事項](../../../docs/framework/app-domains/assembly-security-considerations.md) \ No newline at end of file diff --git a/docs/framework/app-domains/assembly-location.md b/docs/framework/app-domains/assembly-location.md new file mode 100644 index 00000000000..0eecda734af --- /dev/null +++ b/docs/framework/app-domains/assembly-location.md @@ -0,0 +1,41 @@ +--- +title: "アセンブリの場所 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 位置" + - "検索 (アセンブリを)" +ms.assetid: 9f1f41a7-2954-49d3-a2c0-62b6ef4d40ab +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# アセンブリの場所 +アセンブリの場所は、共通言語ランタイムが参照されるアセンブリの位置を特定できるかどうかを決定します。また、アセンブリをほかのアセンブリと共有できるかどうかも決定します。 アセンブリは、次の場所に配置できます。 + +- アプリケーションのディレクトリまたはサブディレクトリ + + これは、アセンブリの最も一般的な配置場所です。 アプリケーション ルート ディレクトリのサブディレクトリは、言語またはカルチャに基づいて作成できます。 アセンブリにカルチャ属性の情報がある場合、そのアセンブリは、そのカルチャ名を持つアプリケーション ディレクトリの下位のサブディレクトリに配置する必要があります。 + +- グローバル アセンブリ キャッシュ + + これは、共通言語ランタイムがインストールされると常にインストールされる、コンピューター全体のコード キャッシュです。 通常、あるアセンブリを複数のアプリケーションで共有する場合、そのアセンブリをグローバル アセンブリ キャッシュ内にインストールする必要があります。 + +- HTTP サーバー上 + + アセンブリを HTTP サーバー上に配置する場合、厳密な名前が必要です。アセンブリへのポインターは、アプリケーション構成ファイルのコードベース セクションで指定します。 + +## 参照 + [アセンブリの作成](../../../docs/framework/app-domains/create-assemblies.md) + [グローバル アセンブリ キャッシュ](../../../docs/framework/app-domains/gac.md) + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/assembly-manifest.md b/docs/framework/app-domains/assembly-manifest.md new file mode 100644 index 00000000000..5244b592f0e --- /dev/null +++ b/docs/framework/app-domains/assembly-manifest.md @@ -0,0 +1,66 @@ +--- +title: "アセンブリ マニフェスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], メタデータ" + - "アセンブリ マニフェスト" + - "カルチャ, アセンブリ マニフェスト" + - "動的アセンブリ, アセンブリ マニフェスト" + - "メタデータ, アセンブリ マニフェスト" +ms.assetid: 8e40fab9-549d-4731-aec2-ffa47a382de0 +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# アセンブリ マニフェスト +静的であるか動的であるかにかかわらず、すべてのアセンブリは、アセンブリ内の要素の相互関係を記述したデータのコレクションを含んでいます。 このアセンブリ メタデータは、アセンブリ マニフェストに格納されています。 アセンブリ マニフェストには、アセンブリのバージョン要件およびセキュリティ ID を指定するために必要なすべてのメタデータと、アセンブリのスコープを定義したり、リソースやクラスへの参照を解決したりするために必要なすべてのメタデータが格納されています。 アセンブリ マニフェストは、MSIL \(Microsoft Intermediate Language\) コードが記述されている PE ファイル \(.exe または .dll\)、またはアセンブリ マニフェスト情報だけを格納したスタンドアロンの PE ファイルに保存できます。 + + マニフェストを格納するさまざまな方法を次の図に示します。 + + ![単独ファイル アセンブリ](../../../docs/framework/app-domains/media/assemblytypes.gif "assemblytypes") +アセンブリの種類 + + 関連付けられているファイルが 1 つだけのアセンブリの場合、マニフェストは PE ファイルに組み込まれ、シングルファイル アセンブリを形成します。 マルチファイル アセンブリを作成する場合は、スタンドアロンのマニフェスト ファイルか、またはそのアセンブリの PE ファイルのうちの 1 つに組み込んだマニフェストを使用します。 + + 各アセンブリのマニフェストの機能は次のとおりです。 + +- アセンブリを構成するファイルを列挙します。 + +- アセンブリの型およびリソースへの参照を、それらの宣言と実装が格納されているファイルに割り当てる方法を制御します。 + +- そのアセンブリが依存するほかのアセンブリを列挙します。 + +- アセンブリのコンシューマーと、アセンブリの詳細な実装との間に間接的な関係を確立します。 + +- アセンブリを自己記述型にします。 + +## アセンブリ マニフェストの内容 + アセンブリ マニフェストに格納されている情報を次の表に示します。 アセンブリ名、バージョン番号、カルチャ、厳密な名前情報という最初の 4 項目は、アセンブリの識別子を構成します。 + +|情報|説明| +|--------|--------| +|\[アセンブリ名\]|アセンブリの名前を指定するテキスト文字列。| +|バージョン番号|メジャー バージョン番号、マイナー バージョン番号、リビジョン番号、およびビルド番号。 共通言語ランタイムは、これらの番号を使用してバージョン ポリシーを強制的に適用します。| +|Culture|アセンブリがサポートするカルチャや言語に関する情報。 この情報は、アセンブリをカルチャ固有または言語固有の情報を格納したサテライト アセンブリとして指定する場合にだけ使用します。 カルチャ情報を含むアセンブリは、自動的にサテライト アセンブリと見なされます。| +|厳密な名前情報|アセンブリに厳密な名前が付いている場合の発行者からの公開キー。| +|アセンブリ内のすべてのファイルのリスト|アセンブリに含まれている各ファイルのハッシュおよびファイル名。 アセンブリを構成するすべてのファイルは、アセンブリ マニフェストが含まれているファイルと同じディレクトリに配置する必要があります。| +|型参照情報|型参照をその宣言と実装が格納されているファイルに割り当てるために、ランタイムが使用する情報。 この情報は、アセンブリからエクスポートされた型に対して使用されます。| +|参照先アセンブリに関する情報|このアセンブリによって静的に参照されるほかのアセンブリのリスト。 参照される各アセンブリ \(依存アセンブリ\) について、その名前、アセンブリ メタデータ \(バージョン、カルチャ、オペレーティング システムなど\)、アセンブリに厳密な名前が付いている場合は公開キーなどが示されます。| + + アセンブリ マニフェストの一部の情報は、コード内でアセンブリ属性を使用することで、追加または変更できます。 バージョン情報や、商標、著作権、製品名、会社名、補足バージョンなどの情報属性は変更できます。 アセンブリ属性の完全なリストについては、「[アセンブリ属性の設定](../../../docs/framework/app-domains/set-assembly-attributes.md)」を参照してください。 + +## 参照 + [アセンブリの内容](../../../docs/framework/app-domains/assembly-contents.md) + [アセンブリのバージョン管理](../../../docs/framework/app-domains/assembly-versioning.md) + [サテライト アセンブリの作成](../../../docs/framework/resources/creating-satellite-assemblies-for-desktop-apps.md) + [厳密な名前付きアセンブリ](../../../docs/framework/app-domains/strong-named-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/assembly-names.md b/docs/framework/app-domains/assembly-names.md new file mode 100644 index 00000000000..59f7f6f7365 --- /dev/null +++ b/docs/framework/app-domains/assembly-names.md @@ -0,0 +1,73 @@ +--- +title: "アセンブリ名 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 名前" + - "名前 [.NET Framework], アセンブリ" +ms.assetid: 8f8c2c90-f15d-400e-87e7-a757e4f04d0e +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# アセンブリ名 +アセンブリの名前は、メタデータに格納され、アセンブリのスコープおよびアプリケーションによる使用方法に大きく影響します。 厳密な名前を持つアセンブリは、アセンブリの名前、カルチャ、公開キー、およびバージョン番号を含む完全に限定された名前を持ちます。 この名前は通常、表示名と呼ばれ、ロード済みのアセンブリの場合には プロパティを使用することによって取得できます。 + + ランタイムはこれらの情報を使用して、アセンブリを検索したり、同じ名前を持つ他のアセンブリと区別したりします。 たとえば、`myTypes` という厳密な名前を持つアセンブリが、次のような完全に限定された名前を持つ場合があります。 + +``` +myTypes, Version=1.0.1234.0, Culture=en-US, PublicKeyToken=b77a5c561934e089c, ProcessorArchitecture=msil +``` + +> [!NOTE] +> .NET Framework Version 2.0 では、プロセッサ アーキテクチャがアセンブリ ID に追加されて、アセンブリにプロセッサ固有のバージョンを作成できるようになっています。 たとえば、32 ビット プロセッサ固有のバージョン、64 ビット プロセッサ固有のバージョンのように、ID のプロセッサ アーキテクチャのみが異なっているアセンブリ バージョンを作成できます。 厳密な名前にはプロセッサ アーキテクチャは必要ありません。 詳細については、「」を参照してください。 + + この例では、完全に限定された名前は `myTypes` アセンブリが公開キー トークンを含む厳密な名前を持ち、カルチャ値が US English であり、バージョン番号が 1.0.1234.0 であることを示します。 そのプロセッサ アーキテクチャは "msil" です。これは、オペレーティング システムとプロセッサに応じて 32 ビット コードまたは 64 ビット コードに Just\-In\-Time \(JIT\) コンパイルされることを意味します。 + + アセンブリ内で型を要求するコードは、完全に限定されたアセンブリ名を使用する必要があります。 これを完全限定バインディングと呼びます。 アセンブリ名だけを指定する部分バインディングは、.NET Framework でアセンブリを参照するときには使用できません。 + + .NET Framework を構成するアセンブリに対するすべてのアセンブリ参照には、アセンブリの完全限定名も含まれている必要があります。 たとえば、バージョン 1.0 の System.Data .NET Framework アセンブリを参照する場合は、次のようになります。 + +``` + +System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + +``` + + バージョンは、.NET Framework Version 1.0 に付属するすべての .NET Framework アセンブリのバージョン番号に相当します。 .NET Framework アセンブリでは、カルチャ値は常にニュートラルであり、公開キーは前の例の公開キーと同じです。 + + たとえば、構成ファイルにトレース リスナーを設定するアセンブリ参照を追加するには、システム .NET Framework アセンブリの完全限定名を含めます。 + +``` + +``` + +> [!NOTE] +> ランタイムは、アセンブリへのバインディング時にはアセンブリ名の大文字と小文字を区別しませんが、アセンブリ名で使用された大文字と小文字は保持されます。 [!INCLUDE[winsdklong](../../../includes/winsdklong-md.md)] のいくつかのツールでは、アセンブリ名の大文字と小文字が区別されます。 大文字と小文字は区別されるものとしてアセンブリ名を管理するのが無難です。 + +## アプリケーション コンポーネントの名前付け + ランタイムは、アセンブリを識別するときにファイル名を認識しません。 アセンブリの ID は、アセンブリ名、バージョン、カルチャおよび厳密な名前から構成され、ランタイムによって明確に認識される必要があります。 + + たとえば、myAssembly.dll という名前のアセンブリを参照する myAssembly.exe という名前のアセンブリがある場合は、myAssembly.exe を実行するとバインディングが正しく行われます。 しかし、別のアプリケーションが メソッドを使用して myAssembly.exe を実行した場合は、myAssembly.exe が "myAssembly" に対するバインディングを要求しても、ランタイムは "myAssembly" が既に読み込まれているものと判断します。この場合、myAssembly.dll が読み込まれることはありません。 myAssembly.exe には要求された型が含まれていないため、 が発生します。 + + この問題を回避するには、アプリケーション内で複数のアセンブリが同じアセンブリ名を持たないようにするか、または同じ名前を持つアセンブリをそれぞれ異なるディレクトリに配置します。 + +> [!NOTE] +> 厳密な名前付きアセンブリをグローバル アセンブリ キャッシュに配置する場合、.exe や .dll などのファイル名の拡張子を除いたアセンブリのファイル名とアセンブリ名とが一致している必要があります。 たとえば、アセンブリのファイル名が myAssembly.dll である場合、アセンブリ名は myAssembly である必要があります。 ルート アプリケーション ディレクトリ内にだけ配置されるプライベート アセンブリは、ファイル名と異なるアセンブリ名を持つことができます。 + +## 参照 + [方法 : アセンブリの完全修飾名を特定する](../../../docs/framework/app-domains/how-to-determine-assembly-fully-qualified-name.md) + [アセンブリの作成](../../../docs/framework/app-domains/create-assemblies.md) + [厳密な名前付きアセンブリ](../../../docs/framework/app-domains/strong-named-assemblies.md) + [グローバル アセンブリ キャッシュ](../../../docs/framework/app-domains/gac.md) + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/assembly-placement.md b/docs/framework/app-domains/assembly-placement.md new file mode 100644 index 00000000000..c69494cdd2e --- /dev/null +++ b/docs/framework/app-domains/assembly-placement.md @@ -0,0 +1,33 @@ +--- +title: "アセンブリの配置 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - " 要素" + - "アセンブリ [.NET Framework], 位置" + - "アセンブリ [.NET Framework], 配置" + - "検索 (アセンブリを)" +ms.assetid: ff8d48bc-f606-484f-9fe1-d0af264269fb +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# アセンブリの配置 +多くの .NET Framework アプリケーションの場合、アプリケーションを構成するアセンブリは、そのアプリケーションのディレクトリ、アプリケーション ディレクトリのサブディレクトリ、またはグローバル アセンブリ キャッシュ \(アセンブリが共有されている場合\) に配置します。 構成ファイルの [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/codebase-element.md) を使用すると、共通言語ランタイムがアセンブリを検索する場所をオーバーライドできます。 アセンブリが厳密な名前を持たない場合、[\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/codebase-element.md) を使用して指定できる場所は、そのアプリケーションのディレクトリまたはサブディレクトリに制限されます。 アセンブリが厳密な名前を持つ場合は、[\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/codebase-element.md) を使用してコンピューターまたはネットワーク上の任意の場所を指定できます。 + + また、アンマネージ コード アプリケーションや COM 相互運用アプリケーションで使用するアセンブリを検索する場所についても似たような規則が適用されます。アセンブリを複数のアプリケーションで共有する場合、そのアセンブリの検索場所はグローバル アセンブリ キャッシュになります。 アンマネージ コードで使用するアセンブリは、型ライブラリとしてエクスポートし、登録する必要があります。 COM 相互運用で使用するアセンブリは、カタログに登録する必要がありますが、場合によっては、この登録が自動的に行われることもあります。 + +## 参照 + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [アプリの構成](../../../docs/framework/configure-apps/index.md) + [Advanced COM Interoperability](http://msdn.microsoft.com/ja-jp/3ada36e5-2390-4d70-b490-6ad8de92f2fb) + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) \ No newline at end of file diff --git a/docs/framework/app-domains/assembly-security-considerations.md b/docs/framework/app-domains/assembly-security-considerations.md new file mode 100644 index 00000000000..d5c5136d304 --- /dev/null +++ b/docs/framework/app-domains/assembly-security-considerations.md @@ -0,0 +1,70 @@ +--- +title: "アセンブリのセキュリティに関する考慮事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], セキュリティ" + - "アセンブリ [.NET Framework], 署名" + - "アセンブリ [.NET Framework], 厳密な名前を付けた" + - "付与 (アクセス許可の), アセンブリ" + - "整合性 (アセンブリとの)" + - "名前 [.NET Framework], アセンブリ" + - "名前 [.NET Framework], 厳密な名前" + - "アクセス許可 [.NET Framework], アセンブリ" + - "セキュリティ [.NET Framework], アセンブリ" + - "Signcode" + - "署名 (アセンブリに)" + - "厳密な名前を付けたアセンブリ, セキュリティの注意事項" +ms.assetid: 1b5439c1-f3d5-4529-bd69-01814703d067 +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# アセンブリのセキュリティに関する考慮事項 +アセンブリを作成する場合は、アセンブリの実行に必要となるアクセス許可セットを指定できます。 アセンブリに対して特定のアクセス許可を付与するかどうかは、証拠に基づいて決定されます。 + + 証拠には 2 つの使い方があります。 + +- 入力された証拠をローダーによって収集された証拠とマージして、ポリシーの解決に使用される最終的な証拠のセットを作成します。 この形式を使用するメソッドには、**Assembly.Load**、**Assembly.LoadFrom**、および **Activator.CreateInstance** があります。 + +- 入力された証拠を変更せずに、ポリシーの解決に使用する最終的な証拠のセットとして使用します。 この形式を使用するメソッドには、**Assembly.Load\(byte\[\]\)** および **AppDomain.DefineDynamicAssembly\(\)** があります。 + + アセンブリが実行されるコンピューターで設定されている[セキュリティ ポリシー](../../../docs/framework/misc/code-access-security-basics.md)により、オプションのアクセス許可を与えることもできます。 発生する可能性があるセキュリティ例外をすべて処理するコードを作成するには、次のいずれかを行います。 + +- コードを実行するために必要なすべてのアクセス許可に対してアクセス許可要求を挿入し、アクセス許可が与えられなかった場合に生じる読み込み時エラーをあらかじめ処理しておく。 + +- コードを実行するために必要なアクセス許可を取得するためのアクセス許可要求は使用せず、アクセス許可が与えられなかった場合のセキュリティ例外を処理できるように準備しておく。 + + > [!NOTE] + > セキュリティは複雑な分野で、選択できるオプションも数多くあります。 詳細については、「[セキュリティの基本概念](../../../docs/standard/security/key-security-concepts.md)」を参照してください。 + + アセンブリの読み込み時に、セキュリティ ポリシーへの追加情報としてアセンブリの証拠が使用されます。 セキュリティ ポリシーは、エンタープライズとコンピューターの管理者、およびユーザー ポリシー設定によって確立され、すべてのマネージ コードが実行されるときに与えられるアクセス許可セットを決定します。 セキュリティ ポリシーは、アセンブリの発行者 \(署名ツールで生成されたシグネチャがある場合\)、アセンブリのダウンロード元の Web サイトおよびゾーン \(Internet Explorer の用語\)、またはアセンブリの厳密な名前に対して設定できます。 たとえば、コンピューター管理者は、Web サイトからダウンロードされ、所定のソフトウェア企業の署名のあるすべてのコードについて、コンピューター上のデータベースへのアクセスは許可するが、ディスクへの書き込みは許可しない、というセキュリティ ポリシーを設定できます。 + +## 厳密な名前付きアセンブリと署名ツール + アセンブリの署名は、2 つの異なる補完的な方法で行うことができます。厳密な名前を使用するか、.NET Framework Version 1.0 と 1.1 の [File Signing Tool \(Signcode.exe\)](http://msdn.microsoft.com/ja-jp/2d299154-34ea-41ba-ad12-17075bb7e1db) または .NET Framework のそれ以降のバージョンの [SignTool.exe \(署名ツール\)](../../../docs/framework/tools/signtool-exe.md) を使用する方法です。 厳密な名前を使用してアセンブリに署名すると、アセンブリ マニフェストを格納しているファイルに公開キー暗号化が追加されます。 厳密な名前による署名では、名前の一意性の検証を支援し、名前の悪用を防止し、参照が解決されたときに呼び出し元に ID を提供できます。 + + しかし、厳密な名前そのものには信頼性がないため、信頼性という点では [File Signing Tool \(Signcode.exe\)](http://msdn.microsoft.com/ja-jp/2d299154-34ea-41ba-ad12-17075bb7e1db) および [SignTool.exe \(署名ツール\)](../../../docs/framework/tools/signtool-exe.md) が重要になります。 2 つの署名ツールでは、発行者が第三者機関に対して自分の身元を証明し、証明書を取得する必要があります。 取得した証明書はファイルに埋め込まれ、管理者はその証明書を使用してコードの正当性を信頼するかどうかを判断します。 + + アセンブリには、厳密な名前と [File Signing Tool \(Signcode.exe\)](http://msdn.microsoft.com/ja-jp/2d299154-34ea-41ba-ad12-17075bb7e1db) または [SignTool.exe \(署名ツール\)](../../../docs/framework/tools/signtool-exe.md) を使用して作成されたデジタル署名の両方を与えるか、またはそのいずれか一方だけを適用できます。 2 つの署名ツールでは、署名できるファイルは一度に 1 つだけです。マルチファイル アセンブリの場合は、アセンブリ マニフェストを格納しているファイルに署名します。 厳密な名前はアセンブリ マニフェストが格納されているファイルに保存されますが、[File Signing Tool \(Signcode.exe\)](http://msdn.microsoft.com/ja-jp/2d299154-34ea-41ba-ad12-17075bb7e1db) または [SignTool.exe \(署名ツール\)](../../../docs/framework/tools/signtool-exe.md) を使用して作成された署名は、アセンブリ マニフェストが格納されているポータブル実行可能 \(PE: Portable Executable\) ファイルの予約された専用スロットに保存されます。 [File Signing Tool \(Signcode.exe\)](http://msdn.microsoft.com/ja-jp/2d299154-34ea-41ba-ad12-17075bb7e1db) または [SignTool.exe \(署名ツール\)](../../../docs/framework/tools/signtool-exe.md) を使用するアセンブリに対する署名は、[File Signing Tool \(Signcode.exe\)](http://msdn.microsoft.com/ja-jp/2d299154-34ea-41ba-ad12-17075bb7e1db) または [SignTool.exe \(署名ツール\)](../../../docs/framework/tools/signtool-exe.md) で生成された署名に依存する信頼階層が既に存在する場合や、またはポリシーがキー部分だけを使用し、信頼階層はチェックしていない場合に、\(厳密な名前と組み合わせて、または単独で\) 使用できます。 + +> [!NOTE] +> アセンブリに対して厳密な名前と署名ツールの署名の両方を使用する場合は、厳密な名前を先に割り当てる必要があります。 + + 共通言語ランタイムは、ハッシュ検査も実行します。アセンブリ マニフェストには、アセンブリを構成するすべてのファイルのリストが格納されており、マニフェスト作成時の状態の各ファイルのハッシュも含まれています。 各ファイルが読み込まれたときに、その内容がハッシュされ、マニフェストに格納されているハッシュ値と比較されます。 2 つのハッシュが一致しない場合、アセンブリは読み込まれません。 + + 厳密な名前と[File Signing Tool \(Signcode.exe\)](http://msdn.microsoft.com/ja-jp/2d299154-34ea-41ba-ad12-17075bb7e1db) または[SignTool.exe \(署名ツール\)](../../../docs/framework/tools/signtool-exe.md) を使用する署名によって整合性が保証されるため、これら 2 種類のアセンブリ証拠に基づいてコード アクセス セキュリティ ポリシーを設定できます。 厳密な名前と [File Signing Tool \(Signcode.exe\)](http://msdn.microsoft.com/ja-jp/2d299154-34ea-41ba-ad12-17075bb7e1db) または [SignTool.exe \(署名ツール\)](../../../docs/framework/tools/signtool-exe.md) を使用する署名では、デジタル署名と証明書によって整合性が保証されます。 以上で述べた技術 \(ハッシュ検査、厳密な名前、[File Signing Tool \(Signcode.exe\)](http://msdn.microsoft.com/ja-jp/2d299154-34ea-41ba-ad12-17075bb7e1db) または [SignTool.exe \(署名ツール\)](../../../docs/framework/tools/signtool-exe.md) を使用する署名\) をすべて組み合わせて使用することで、アセンブリがどのような方法によっても変更されていないことが保証されます。 + +## 参照 + [厳密な名前付きアセンブリ](../../../docs/framework/app-domains/strong-named-assemblies.md) + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) + [SignTool.exe \(署名ツール\)](../../../docs/framework/tools/signtool-exe.md) + [File Signing Tool \(Signcode.exe\)](http://msdn.microsoft.com/ja-jp/2d299154-34ea-41ba-ad12-17075bb7e1db) \ No newline at end of file diff --git a/docs/framework/app-domains/assembly-versioning.md b/docs/framework/app-domains/assembly-versioning.md new file mode 100644 index 00000000000..25533944863 --- /dev/null +++ b/docs/framework/app-domains/assembly-versioning.md @@ -0,0 +1,82 @@ +--- +title: "アセンブリのバージョン管理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], バージョン管理" + - "補足バージョン" + - "解決 (アセンブリ バインディング要求を)" + - "バージョン番号, アセンブリ" + - "バージョン管理, アセンブリ" +ms.assetid: 775ad4fb-914f-453c-98ef-ce1089b6f903 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# アセンブリのバージョン管理 +共通言語ランタイムを使用するアセンブリのバージョン管理は、すべてアセンブリ レベルで行われます。 アセンブリの特定のバージョン、および依存する各アセンブリのバージョンは、アセンブリのマニフェストに記録されます。 ランタイムの既定のバージョン ポリシーは、構成ファイル \(アプリケーション構成ファイル、発行者ポリシー ファイル、コンピューター管理者の構成ファイル\) に指定した明示的なバージョン ポリシーでオーバーライドされない限り、アプリケーションが作成およびテストされた時点のバージョンの場合にだけそのアプリケーションを実行します。 + +> [!NOTE] +> バージョン管理は、厳密な名前付きのアセンブリに対してだけ実行されます。 + + ランタイムは、アセンブリ バインディング要求を解決するために、いくつかの手順を実行します。 + +1. 元のアセンブリ参照を確認し、バインド先のアセンブリのバージョンを確認します。 + +2. バージョン ポリシーを適用するために利用できる構成ファイルをすべてチェックします。 + +3. 元のアセンブリ参照と、構成ファイルで指定されているリダイレクトから正しいアセンブリを判断し、呼び出し元のアセンブリにバインドされるバージョンを判断します。 + +4. グローバル アセンブリ キャッシュと、構成ファイルで指定されたコードベースをチェックした後、「[ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md)」に説明されているプローブ規則を使用して、アプリケーションのディレクトリとサブディレクトリをチェックします。 + + これらの手順を次の図に示します。 + + ![.assembly extern myAssembly](../../../docs/framework/app-domains/media/versioningover.gif "versioningover") +アセンブリ バインディング要求の解決 + + アプリケーションの設定の詳細については、「[アプリの構成](../../../docs/framework/configure-apps/index.md)」を参照してください。 バインディング ポリシーの詳細については、「[ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md)」を参照してください。 + +## バージョン情報 + 各アセンブリは、次の 2 種類の形でバージョン情報を表示します。 + +- アセンブリのバージョン番号。アセンブリ名やカルチャ情報と共に、アセンブリの識別子を構成します。 この番号は、バージョン ポリシーを強制適用するためにランタイムで使用され、実行時の型解決プロセスで重要な役割を果たします。 + +- 補足バージョン。これは、情報の提供だけを目的とした、追加のバージョン情報を表す文字列です。 + +### アセンブリのバージョン番号 + 各アセンブリの識別子には、バージョン番号が含まれています。 そのため、バージョン番号が異なる 2 つのアセンブリは、ランタイムでは、まったく異なるアセンブリと見なされます。 このバージョン番号は、次に示す形式の 4 つの部分から成る文字列として表されます。 + + \<メジャー バージョン\>.\<マイナー バージョン\>.\<ビルド番号\>.\<リビジョン\> + + たとえばバージョン 1.5.1254.0 の場合、1 はメジャー バージョン、5 はマイナー バージョン、1254 はビルド番号、0 はリビジョン番号を表します。 + + バージョン番号は、アセンブリ名や公開キーなどのほかの識別子情報や、アプリケーションに関連付けられているほかの複数のアセンブリの関係や識別子に関する情報と共に、アセンブリ マニフェストに保存されます。 + + アセンブリの作成時に、開発ツールによって、アセンブリ マニフェストで参照される各アセンブリについての依存情報が記録されます。 ランタイムは、これらのバージョン番号と、管理者、アプリケーション、または発行者が設定した構成情報を組み合わせて使用し、参照先アセンブリの正しいバージョンを読み込みます。 + + バージョン管理の目的のため、ランタイムでは、通常の名前の付いたアセンブリと、厳密な名前の付いたアセンブリが区別されます。 バージョンのチェックは、厳密な名前付きのアセンブリに対してだけ実行されます。 + + バージョン バインディング ポリシーの指定については、「[アプリの構成](../../../docs/framework/configure-apps/index.md)」を参照してください。 ランタイムがバージョン情報を使用して特定のアセンブリを見つけ出す方法については、「[ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md)」を参照してください。 + +### アセンブリの補足バージョン + 補足バージョンは、情報の提供だけを目的として、追加のバージョン情報をアセンブリに追加するための文字列です。この情報は実行時には使用されません。 補足バージョンはテキスト ベースで、その製品のマーケティング資料、パッケージ、あるいは製品名に対応するものであり、実行時には使用されません。 たとえば、補足バージョンの例は "共通言語ランタイム バージョン 1.0" や "NET Control SP 2" などになります。 Microsoft Windows のファイル プロパティ ダイアログの \[バージョン\] タブでは、この情報は \[製品バージョン\] という項目に表示されます。 + +> [!NOTE] +> 任意のテキストを指定できますが、文字列がアセンブリのバージョン番号で使用されている形式でなかったり、形式が正しくてもワイルドカードを含んでいたりすると、コンパイルで警告メッセージが表示されます。 この警告は、実行には影響を与えません。 + + 補足バージョンは、カスタム属性 を使って表されます。 補足バージョン属性の詳細については、「[アセンブリ属性の設定](../../../docs/framework/app-domains/set-assembly-attributes.md)」を参照してください。 + +## 参照 + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [アプリの構成](../../../docs/framework/configure-apps/index.md) + [アセンブリ属性の設定](../../../docs/framework/app-domains/set-assembly-attributes.md) + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) \ No newline at end of file diff --git a/docs/framework/app-domains/create-and-use-strong-named-assemblies.md b/docs/framework/app-domains/create-and-use-strong-named-assemblies.md new file mode 100644 index 00000000000..ec231a1b6be --- /dev/null +++ b/docs/framework/app-domains/create-and-use-strong-named-assemblies.md @@ -0,0 +1,94 @@ +--- +title: "厳密な名前付きアセンブリの作成と使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 署名" + - "アセンブリ [.NET Framework], 厳密な名前を付けた" + - "アセンブリのバインディング, 厳密な名前を付けた" + - "署名 (アセンブリに)" + - "厳密な名前のバイパス機能" + - "厳密な名前を付けたアセンブリ" + - "厳密な名前を付けたアセンブリ, 厳密な名前付きアセンブリの概要" + - "厳密な名前を付けたアセンブリ, 読み込み (信頼されたアプリケーション ドメインへの)" + - "厳密な名前を付けたアセンブリ, シナリオ" +ms.assetid: ffbf6d9e-4a88-4a8a-9645-4ce0ee1ee5f9 +caps.latest.revision: 17 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 厳密な名前付きアセンブリの作成と使用 +厳密な名前は、単純テキスト名、バージョン番号、カルチャ情報 \(設定されている場合\) から成るアセンブリの識別子と、公開キーおよびデジタル署名で構成されます。 このデジタル署名は、対応する秘密キーを使用してアセンブリ ファイルから生成されます。 \(アセンブリ ファイルにはアセンブリ マニフェストが格納されており、そこに、アセンブリを構成するすべてのファイルの名前とハッシュが含まれます。\) + + 厳密な名前のアセンブリは、他の厳密な名前のアセンブリでのタイプだけを使用できます。 それ以外の場合は、厳密な名前のアセンブリのセキュリティが損なわれます。 + + この概要は、次のセクションで構成されています。 + +- [厳密な名前のシナリオ](#strong_name_scenario) + +- [信頼されたアセンブリの署名検証のバイパス](#bypassing_signature_verification) + +- [関連トピック](#related_topics) + + +## 厳密な名前のシナリオ + 次のシナリオは、厳密な名前のアセンブリに署名した後にそれをその名前で参照するプロセスの概要を示しています。 + +1. アセンブリ A は、次のいずれかの方法を使用して厳密な名前で作成されます。 + + - [!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] など、厳密な名前の作成をサポートする開発環境を使用する。 + + - [厳密名ツール \(Sn.exe\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md) を使用して暗号化キー ペアを作成し、コマンド ライン コンパイラまたは[アセンブリ リンカー \(Al.exe\)](../../../docs/framework/tools/al-exe-assembly-linker.md) のいずれかを使用してそのキー ペアをアセンブリに割り当てる。 Windows ソフトウェア開発キット \(SDK\) には、Sn.exe と Al.exe の両方が用意されています。 + +2. 開発環境またはツールは、アセンブリのマニフェストを含むファイルのハッシュに、開発者の秘密キーで署名します。 このデジタル署名は、アセンブリ A のマニフェストを含むポータブル実行可能 \(PE\) ファイルに格納されます。 + +3. アセンブリ B はアセンブリ A のコンシューマーです。 アセンブリ B のマニフェストの参照セクションには、アセンブリ A の公開キーを表すトークンが含まれています。 トークンは完全な公開キーの一部であり、スペースを節約するために、キー自体ではなくこれが使用されます。 + +4. 共通言語ランタイムは、アセンブリがグローバル アセンブリ キャッシュに入れられる際に、厳密な名前の署名を確認します。 実行時に厳密な名前でバインドするとき、共通言語ランタイムは、アセンブリ B のマニフェストに格納されているキーと、アセンブリ A の厳密な名前を生成するために使用されたキーを比較します。 .NET Framework のセキュリティ チェックに合格してバインドが成功すると、アセンブリ B は、アセンブリ A のビットが改ざんされていないことと、これらのビットが実際にアセンブリ A の開発者からのものであることが保証されます。 + +> [!NOTE] +> このシナリオは、信頼の問題を扱っていません。 厳密な名前に加えて、完全な Microsoft Authenticode 署名をアセンブリに持たせることができます。 Authenticode 署名には、信頼を確立するための証明書が含まれます。 厳密な名前を使用すると、コードにこのように署名する必要がないということに注意してください。 実際に、厳密な名前の署名の生成に使用されるキーは、Authenticode 署名の生成に使用されるキーと同じである必要はありません。 + + [ページのトップへ](#top) + + +## 信頼されたアセンブリの署名検証のバイパス + [!INCLUDE[net_v35SP1_long](../../../includes/net-v35sp1-long-md.md)] 以降、たとえば `MyComputer` ゾーンの既定のアプリケーション ドメインなど、完全に信頼されたアプリケーション ドメインにアセンブリが読み込まれるときに、厳密な名前の署名は検証されなくなりました。 これは厳密な名前のバイパス機能と呼ばれます。 完全に信頼された環境では、 に対する完全に信頼された署名済みアセンブリの要求は、その署名に関係なく、常に成功します。 このような場合、厳密な名前のバイパス機能は、完全に信頼されたアセンブリの厳密名署名検証という不要なオーバーヘッドを回避するので、アセンブリを高速で読み込むことができます。 + + バイ パス機能は、厳密な名前で署名されていて、次の特性を持つアセンブリに適用されます。 + +- 証拠なしで完全に信頼されている \(たとえば、`MyComputer` ゾーン証拠を持っている\)。 + +- 完全に信頼された に読み込まれる。 + +- その プロパティに基づいた場所から読み込まれる。 + +- 遅延署名されていない。 + + この機能は、個々のアプリケーションに対して、またはコンピューターに対して無効にすることができます。 「[方法 : 厳密な名前のバイパス機能を無効にする](../../../docs/framework/app-domains/how-to-disable-the-strong-name-bypass-feature.md)」を参照してください。 + + [ページのトップへ](#top) + + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[方法 : 公開キーと秘密キーのキー ペアを作成する](../../../docs/framework/app-domains/how-to-create-a-public-private-key-pair.md)|署名とアセンブリの暗号化キー ペアを作成する方法について説明します。| +|[方法 : 厳密な名前でアセンブリに署名する](../../../docs/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name.md)|厳密な名前のアセンブリを作成する方法について説明します。| +|[拡張された厳密な名前付け](../../../docs/framework/app-domains/enhanced-strong-naming.md)|[!INCLUDE[net_v45](../../../includes/net-v45-md.md)] での厳密な名前の拡張について説明します。| +|[方法 : 厳密な名前のアセンブリを参照する](../../../docs/framework/app-domains/how-to-reference-a-strong-named-assembly.md)|コンパイル時または実行時に厳密な名前のアセンブリでタイプまたはリソースを参照する方法について説明します。| +|[方法 : 厳密な名前のバイパス機能を無効にする](../../../docs/framework/app-domains/how-to-disable-the-strong-name-bypass-feature.md)|厳密な名前の署名の検証をバイパスする機能を無効にする方法について説明します。 すべてのまたは特定のアプリケーションに対して、この機能を無効にすることができます。| +|[アセンブリの作成](../../../docs/framework/app-domains/create-assemblies.md)|単一ファイル アセンブリおよびマルチファイル アセンブリの概要を示します。| +|[NIB: How to: Delay Sign an Assembly \(Visual Studio\)](http://msdn.microsoft.com/ja-jp/cab63b7a-591e-4674-b236-d77cd29a79ea)|アセンブリを作成した後に厳密な名前でアセンブリに署名する方法について説明します。| +|[Sn.exe \(厳密名ツール\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md)|厳密な名前のアセンブリの作成に役立つ、.NET Framework に付属のツールについて説明します。 このツールには、キーの管理、署名の生成、署名の検査に関する各オプションが用意されています。| +|[Al.exe \(アセンブリ リンカー\)](../../../docs/framework/tools/al-exe-assembly-linker.md)|モジュールまたはリソース ファイルからアセンブリ マニフェストを含むファイルを生成する、.NET Framework に付属のツールについて説明します。| \ No newline at end of file diff --git a/docs/framework/app-domains/create-assemblies.md b/docs/framework/app-domains/create-assemblies.md new file mode 100644 index 00000000000..bf03b404849 --- /dev/null +++ b/docs/framework/app-domains/create-assemblies.md @@ -0,0 +1,59 @@ +--- +title: "アセンブリの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 作成" + - "アセンブリ [.NET Framework], マルチファイル" + - "マルチファイル アセンブリ" + - "シングルファイル アセンブリ" +ms.assetid: 54832ee9-dca8-4c8b-913c-c0b9d265e9a4 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# アセンブリの作成 +[!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] などの IDE、または [!INCLUDE[winsdklong](../../../includes/winsdklong-md.md)] に用意されているコンパイラとツールを使用して、シングルファイル アセンブリまたはマルチファイル アセンブリを作成できます。 最も単純なアセンブリであるシングルファイル アセンブリは、簡易名を持ち、1 つのアプリケーション ドメインに読み込まれます。 このアセンブリは、アプリケーション ディレクトリの外部にあるほかのアセンブリからは参照できず、バージョン チェックの対象にもなりません。 このアセンブリで構成されるアプリケーションをアンインストールするには、アセンブリが格納されているディレクトリを削除するだけですみます。 多くの開発者にとって、これらの機能を持つアセンブリは、アプリケーションの配置に必要なすべての機能を持っています。 + + 複数のコード モジュールとリソース ファイルからマルチファイル アセンブリを作成できます。 複数のアプリケーションで共有するアセンブリを作成することもできます。 共有されるアセンブリは、厳密な名前を持つ必要があり、グローバル アセンブリ キャッシュ内に配置できます。 + + コード モジュールとリソースをグループ化したアセンブリを作成するときには、次の要素に基づいたいくつかのオプションを指定できます。 + +- バージョン管理 + + 同じバージョン情報を持つモジュールをグループ化します。 + +- 配置 + + 使用する配置モデルをサポートするコード モジュールおよびリソースをグループ化します。 + +- 再利用 + + 用途別にまとめて論理的に使用できる場合、モジュールをグループ化します。 たとえば、プログラム保守のための、あまり使用しない型とクラスで構成されるアセンブリは、同じアセンブリに配置できます。 さらに、複数のアプリケーションで共有する型は、アセンブリ内にグループ化して厳密な名前で署名する必要があります。 + +- Security + + 同じセキュリティ アクセス許可を必要とする複数の型を含むモジュールをグループ化します。 + +- スコープの指定 + + 参照可能範囲が同じアセンブリ内に制限されている型を含むモジュールをグループ化します。 + + 共通言語ランタイムアセンブリをアンマネージ COM アプリケーションで使用できるようにする場合は、特別な考慮が必要です。 アンマネージ コードの使用の詳細については、「[COM への .NET Framework コンポーネントの公開](../../../docs/framework/interop/exposing-dotnet-components-to-com.md)」を参照してください。 + +## 参照 + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) + [アセンブリのバージョン管理](../../../docs/framework/app-domains/assembly-versioning.md) + [方法: シングルファイル アセンブリをビルドする](../../../docs/framework/app-domains/how-to-build-a-single-file-assembly.md) + [方法 : マルチファイル アセンブリをビルドする](../../../docs/framework/app-domains/how-to-build-a-multifile-assembly.md) + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [マルチファイル アセンブリ](../../../docs/framework/app-domains/multifile-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/delay-sign-assembly.md b/docs/framework/app-domains/delay-sign-assembly.md new file mode 100644 index 00000000000..4ba4c9d5667 --- /dev/null +++ b/docs/framework/app-domains/delay-sign-assembly.md @@ -0,0 +1,80 @@ +--- +title: "アセンブリへの遅延署名 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "延期 (アセンブリ署名の)" + - "署名 (アセンブリに)" + - "アセンブリ [.NET Framework]、署名" + - "厳密な名前を付けたアセンブリ、遅延 (アセンブリ署名の)" + - "部分アセンブリ署名" +ms.assetid: 9d300e17-5bf1-4360-97da-2aa55efd9070 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# アセンブリへの遅延署名 +開発者側が日常的にアクセスしないキー ペアを、組織で厳重に保護できます。 公開キーは多くのユーザーが使用できることもありますが、秘密キーにアクセスできるユーザーはごくわずかです。 厳密な名前付きのアセンブリを開発する場合、厳密な名前付きの対象アセンブリを参照する各アセンブリには、対象アセンブリに厳密な名前を付けるために使用された公開キーのトークンを格納します。 そのためには、開発プロセス中に公開キーを使用できる必要があります。 + + ビルド時に遅延署名または部分署名を使用すると、ポータブル実行可能 \(PE\) ファイルの領域を厳密な名前の署名のために予約できます。しかし、実際の署名は後の段階 \(通常はアセンブリの出荷直前\) まで遅れます。 + + アセンブリに遅延署名する手順の概要を次に示します。 + +1. 最終的な署名を行う組織からキー ペアの公開キー部分を取得します。 通常、このキーは .snk ファイル形式です。このファイルは、[!INCLUDE[winsdklong](../../../includes/winsdklong-md.md)] に用意されている[厳密名ツール \(Sn.exe\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md) を使用して作成できます。 + +2. の 2 つのカスタム属性を使用して、アセンブリのソース コードに注釈を付けます。 + + - は、公開キーを格納するファイルの名前をパラメーターとしてコンストラクターに渡します。 + + - は、遅延署名を使用していることを示すために、**true** をパラメーターとしてコンストラクターに渡します。 たとえば、次のようになります。 + + [!code-cpp[AssemblyDelaySignAttribute#4](../../../samples/snippets/cpp/VS_Snippets_CLR/AssemblyDelaySignAttribute/cpp/source2.cpp#4)] + [!code-csharp[AssemblyDelaySignAttribute#4](../../../samples/snippets/csharp/VS_Snippets_CLR/AssemblyDelaySignAttribute/cs/source2.cs#4)] + [!code-vb[AssemblyDelaySignAttribute#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AssemblyDelaySignAttribute/vb/source2.vb#4)] + +3. コンパイラは、公開キーをアセンブリ マニフェストに挿入し、PE ファイル内の領域を完全な厳密な名前の署名のために予約します。 実際の公開キーはアセンブリのビルド中に格納してください。これにより、このアセンブリを参照するほかのアセンブリが、それぞれのアセンブリ参照に格納するキーを取得できるようになります。 + +4. アセンブリには有効な厳密な名前の署名がないため、厳密な名前の署名の検証をオフにする必要があります。 検証をオフにするには、厳密名ツールで **–Vr** オプションを使用します。 + + アセンブリ `myAssembly.dll` の検証をオフにする例を次に示します。 + + ``` + sn –Vr myAssembly.dll + ``` + + レジストリ ファイルを作成するために使用 **–Vk** オプション厳密名ツール、RISC コンピューター \(ARM\) の詳細マイクロプロセッサなどの実行できないプラットフォームの検証を無効にする。 検証をオフにするコンピューターのレジストリにレジストリ ファイルをインポートします。 次の例では `myAssembly.dll`のレジストリ ファイルを作成します。 + + ``` + sn –Vk myRegFile.reg myAssembly.dll + ``` + + **–Vr** または **–Vk** オプションを使用すると、必要に応じてテスト キーの署名の .snk ファイルを含めることができます。 + + > [!CAUTION] + > 開発時にだけ **\-Vr** または **–Vk** オプションを使用します。 検証省略リストにアセンブリを追加すると、セキュリティ上の脆弱性が生じます。 悪意のあるアセンブリは、検証省略リストに追加されたアセンブリの完全限定アセンブリ名 \(アセンブリ名、バージョン、カルチャ、および公開キー トークン\) を使用することによって、その ID を偽装できます。 これによって、悪意のあるアセンブリの検証も省略できます。 + + > [!NOTE] + > 64 ビット コンピューターで Visual Studio を使用して開発しているときに遅延署名を使用し、**\[Any CPU\]** のアセンブリをコンパイルする場合は、**\-Vr** オプションを 2 回適用することが必要な場合があります \(Visual Studio では、**\[Any CPU\]** は **\[プラットフォーム ターゲット\]** ビルド プロパティの値です。コマンド ラインからコンパイルする場合は、これが既定です\)。コマンド ラインまたはファイル エクスプローラーからアプリケーションを実行するには、アセンブリに **\-Vr** オプションを適用するために [Sn.exe \(厳密名ツール\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md) の 64 ビット バージョンを使用します。 デザイン時にアセンブリを Visual Studio に読み込むには \(たとえば、アセンブリに、アプリケーションの他のアセンブリで使用されているコンポーネントが含まれている場合\)、32 ビット バージョンの厳密名ツールを使用します。 これは、Just\-In\-Time \(JIT\) コンパイラが、アセンブリがコマンド ラインから実行される場合にはアセンブリを 64 ビット ネイティブ コードにコンパイルし、アセンブリがデザイン時環境に読み込まれる場合には 32 ビット ネイティブ コードにコンパイルするためです。 + +5. その後、通常は出荷の直前に、アセンブリを組織の署名機関に送信し、**–R** オプション付きで厳密名ツールを使用して、実際の厳密な名前の署名を取得します。 + + `sgKey.snk` キー ペアを使用して厳密な名前でアセンブリ `myAssembly.dll` に署名する例を次に示します。 + + ``` + sn -R myAssembly.dll sgKey.snk + ``` + +## 参照 + [アセンブリの作成](../../../docs/framework/app-domains/create-assemblies.md) + [方法 : 公開キーと秘密キーのキー ペアを作成する](../../../docs/framework/app-domains/how-to-create-a-public-private-key-pair.md) + [Sn.exe \(厳密名ツール\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md) + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/enhanced-strong-naming.md b/docs/framework/app-domains/enhanced-strong-naming.md new file mode 100644 index 00000000000..139ae137346 --- /dev/null +++ b/docs/framework/app-domains/enhanced-strong-naming.md @@ -0,0 +1,115 @@ +--- +title: "拡張された厳密な名前付け | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "厳密な名前付け [.NET Framework], 拡張" + - "厳密な名前を付けたアセンブリ" +ms.assetid: 6cf17a82-62a1-4f6d-8d5a-d7d06dec2bb5 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 拡張された厳密な名前付け +厳密な名前の署名は、アセンブリを識別するための .NET Framework の識別機構です。 これは通常、発行元 \(署名者\) から受取人 \(検証者\) に対して渡されるデータの整合性を検証するために使用される、公開キーによるデジタル署名です。 この署名はアセンブリに対する一意の ID として使用され、これによりアセンブリへの参照のあいまいさをなくします。 アセンブリはビルド プロセスの一部として署名され、読み込まれるときに検証されます。 + + 厳密な名前の署名により、悪意のあるユーザーがアセンブリを不正に変更して、元の署名者のキーでアセンブリを再署名することを防ぐことができます。 ただし、厳密な名前キーには、発行者に関する信頼できる情報も、証明書の階層構造も含まれていません。 厳密な名前の署名は、アセンブリの署名者の信頼性を保証するものではなく、またその署名者がキーの正当な所有者であることを示すものでもありません。厳密な名前の署名は、キーの所有者がアセンブリに署名したことのみを示しています。 したがって、信頼できるサードパーティのコードのためのセキュリティの検証コントロールとして、厳密な名前の署名を使用することはお勧めしません。 コードを認証するために推奨される方法は、Microsoft Authenticode です。 + +## 従来の厳密な名前の制限 + [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] 以前のバージョンで使用されている厳密な名前付けのテクノロジには次の欠点があります。 + +- キーが常に攻撃を受ける状態に置かれています。テクノロジとハードウェアの向上により、公開キーから秘密キーを推測することが容易になっています。 攻撃からの保護には、より大きなキーが必要です。[!INCLUDE[net_v45](../../../includes/net-v45-md.md)] より前のバージョンでは任意のサイズのキー \(既定のサイズは 1024 ビット\) で署名する機能を提供していますが、新しいキーでアセンブリを署名すると、アセンブリの古い ID を参照しているすべてのバイナリが動作しなくなります。 したがって、互換性を維持する場合には、署名キーのサイズの更新は非常に困難です。 + +- 厳密な名前の署名は SHA\-1 アルゴリズムのみをサポートします。 SHA\-1 は、最近、セキュリティが強化されたハッシュ アプリケーションのためには不十分であることがわかりました。 したがって、より強力なアルゴリズム \(SHA\-256 以上\) が必要です。 SHA\-1 は FIPS 準拠の地位を失う可能性があり、これによって FIPS 準拠のソフトウェアとアルゴリズムのみを選択して使用しているユーザーには問題が生じることになります。 + +## 強化された厳密な名前の利点 + 強化された厳密な名前の主な利点は、既存の厳密な名前との互換性と、ある ID が別の ID と等価であることを指定できる機能です。 + +- 既存の署名付きアセンブリを持つ開発者は、以前の ID を参照するアセンブリとの互換性を保ちながら、それらのアセンブリの ID を SHA\-2 アルゴリズムに移行できます。 + +- 新しいアセンブリを作成する際に、既存の厳密な名前の署名を考慮する必要のない開発者は、より安全な SHA\-2 アルゴリズムを使用して、今までどおりにアセンブリに署名できます。 + +## 強化された厳密な名前の使用 + 厳密な名前のキーは署名キーと ID のキーで構成されます。 アセンブリは署名キーで署名され、ID キーで識別されます。 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] より前では、これらの 2 つのキーは同一です。 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] 以降では、ID キーは、.NET Framework の以前のバージョンと同じですが、署名キーは、より強力なハッシュ アルゴリズムを備えています。 さらに、副署名を作成するために、署名キーは ID キーで署名されます。 + + 属性によって、アセンブリのメタデータはアセンブリの ID に既存の公開キーを使用することができ、これによって、古いアセンブリ参照は引き続き動作します。 の属性は副署名を使用して、新しい署名キーの所有者が古い ID キーの所有者にもなるようにします。 + +### キー移行を伴わない SHA\-2 による署名 + 厳密な名前の署名を移行せずにアセンブリに署名するには、コマンド プロンプト ウィンドウから次のコマンドを実行します。 + +1. 新しい ID キーを生成します \(必要な場合\)。 + + ``` + sn -k IdentityKey.snk + ``` + +2. ID の公開キーを抽出し、このキーで署名する場合に SHA\-2 アルゴリズムを使用するように指定します。 + + ``` + sn -p IdentityKey.snk IdentityPubKey.snk sha256 + ``` + +3. ID 公開キー ファイルで、アセンブリに遅延署名します。 + + ``` + csc MyAssembly.cs /keyfile:IdentityPubKey.snk /delaySign+ + ``` + +4. 完全な ID キーのペアでアセンブリに再署名します。 + + ``` + sn -Ra MyAssembly.exe IdentityKey.snk + ``` + +### キー移行を伴う SHA\-2 による署名 + 移行した厳密な名前の署名でアセンブリに署名するには、コマンド プロンプト ウィンドウで次のコマンドを実行します。 + +1. ID キーと署名キーのペアを生成します \(必要な場合\)。 + + ``` + sn -k IdentityKey.snk + sn -k SignatureKey.snk + ``` + +2. 署名の公開キーを抽出し、このキーで署名する場合に SHA\-2 アルゴリズムを使用するように指定します。 + + ``` + sn -p SignatureKey.snk SignaturePubKey.snk sha256 + ``` + +3. 副署名を生成するハッシュ アルゴリズムを決定する ID の公開キーを抽出します。 + + ``` + sn -p IdentityKey.snk IdentityPubKey.snk + ``` + +4. の属性のパラメーターを生成し、アセンブリに属性を追加します。 + + ``` + sn -ac IdentityPubKey.snk IdentityKey.snk SignaturePubKey.snk + ``` + +5. ID 公開キーでアセンブリに遅延署名します。 + + ``` + csc MyAssembly.cs /keyfile:IdentityPubKey.snk /delaySign+ + + ``` + +6. 完全な署名キーのペアでアセンブリに署名します。 + + ``` + sn -Ra MyAssembly.exe SignatureKey.snk + ``` + +## 参照 + [厳密な名前付きアセンブリの作成と使用](../../../docs/framework/app-domains/create-and-use-strong-named-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/gac.md b/docs/framework/app-domains/gac.md new file mode 100644 index 00000000000..10ca332a352 --- /dev/null +++ b/docs/framework/app-domains/gac.md @@ -0,0 +1,53 @@ +--- +title: "グローバル アセンブリ キャッシュ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アクセス制御リスト [.NET Framework]" + - "ACL [.NET Framework]" + - "アセンブリ [.NET Framework], グローバル アセンブリ キャッシュ" + - "キャッシュ [.NET Framework], グローバル アセンブリ キャッシュ" + - "GAC (グローバル アセンブリ キャッシュ)" + - "グローバル アセンブリ キャッシュ" + - "グローバル アセンブリ キャッシュ, 概要" +ms.assetid: cf5eacd0-d3ec-4879-b6da-5fd5e4372202 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# グローバル アセンブリ キャッシュ +共通言語ランタイムがインストールされている各コンピューターには、グローバル アセンブリ キャッシュと呼ばれる、コンピューター全体にわたって使用されるコード キャッシュがあります。 グローバル アセンブリ キャッシュは、そのコンピューター上の複数のアプリケーションで共有するように指定されたアセンブリを格納します。 + + アセンブリを共有するには、必要な場合にだけそれらのアセンブリをグローバル アセンブリ キャッシュにインストールします。 一般的には、明らかにアセンブリを共有する必要がある場合を除いて、アセンブリの依存関係はプライベートにし、アセンブリはアプリケーション ディレクトリに配置します。 また、COM 相互運用またはアンマネージ コードからアセンブリにアクセスできるようにするために、アセンブリをグローバル アセンブリ キャッシュにインストールする必要はありません。 + +> [!NOTE] +> アセンブリをグローバル アセンブリ キャッシュにインストールしないようにする必要がある場合もあります。 アプリケーションを構成するアセンブリの 1 つをグローバル アセンブリ キャッシュに配置した場合は、アプリケーション ディレクトリをコピーする **xcopy** コマンドを使用してアプリケーションをレプリケートしたりインストールしたりすることはできなくなります。 この場合、グローバル アセンブリ キャッシュ内に配置したアセンブリも移動する必要があります。 + + アセンブリをグローバル アセンブリ キャッシュに配置するには、次の 2 つの方法があります。 + +- グローバル アセンブリ キャッシュを扱うことができるようにデザインされたインストーラーを使用する。 これは、アセンブリをグローバル アセンブリ キャッシュにインストールするために一般的に使用される方法です。 + +- [!INCLUDE[winsdklong](../../../includes/winsdklong-md.md)] に用意されている[グローバル アセンブリ キャッシュ ツール \(Gacutil.exe\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) という開発者ツールを使用する。 + + > [!NOTE] + > 配置時にアセンブリをグローバル アセンブリ キャッシュにインストールするには、Windows Installer を使用する必要があります。 グローバル アセンブリ キャッシュ ツールの使用は、開発時のみに限定してください。グローバル アセンブリ キャッシュ ツールでは、Windows インストーラーを使用した場合に提供されるアセンブリ参照カウントやその他の機能が提供されません。 + + .NET Framework 4 以降では、グローバル アセンブリ キャッシュの既定の場所は **%windir%\\Microsoft.NET\\assembly** です。 .NET Framework の以前のバージョンでは、既定の場所は **%windir%\\assembly** です。 + + 通常、管理者は、書き込みおよび実行アクセスを制御するアクセス制御リスト \(ACL: Access Control List\) を使用して systemroot ディレクトリを保護します。 グローバル アセンブリ キャッシュは、systemroot ディレクトリのサブディレクトリにインストールされるため、このディレクトリの ACL を継承します。 グローバル アセンブリ キャッシュからファイルを削除する場合は、管理者権限を持つユーザーに対してだけ許可することをお勧めします。 + + グローバル アセンブリ キャッシュに配置するアセンブリには、厳密な名前を付けておく必要があります。 アセンブリをグローバル アセンブリ キャッシュに追加すると、アセンブリを構成するすべてのファイルに対して、整合性チェックが実行されます。 キャッシュはこのような整合性チェックを実行することで、ファイルが変更されたにもかかわらず、マニフェストにその変更が反映されていないなど、アセンブリに不整合が生じていないかどうかを確認します。 + +## 参照 + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) + [アセンブリとグローバル アセンブリ キャッシュの使用](../../../docs/framework/app-domains/working-with-assemblies-and-the-gac.md) + [厳密な名前付きアセンブリ](../../../docs/framework/app-domains/strong-named-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-build-a-multifile-assembly.md b/docs/framework/app-domains/how-to-build-a-multifile-assembly.md new file mode 100644 index 00000000000..ff282dae2e1 --- /dev/null +++ b/docs/framework/app-domains/how-to-build-a-multifile-assembly.md @@ -0,0 +1,104 @@ +--- +title: "方法 : マルチファイル アセンブリをビルドする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework]、マルチファイル" + - "エントリ ポイント (アセンブリの)" + - "コンパイル (アセンブリの)" + - "Al.exe" + - "コマンド ライン コンパイラ" + - "アセンブリ マニフェスト、マルチファイル アセンブリ" + - "アセンブリ [.NET Framework]、コンパイル" + - "アセンブリ リンカー" + - "コード モジュール" + - "マルチファイル アセンブリ" +ms.assetid: 261c5583-8a76-412d-bda7-9b8ee3b131e5 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法 : マルチファイル アセンブリをビルドする +この記事では、マルチファイル アセンブリを作成する方法を説明し、プロシージャの各手順を示すコードを提供します。 + +> [!NOTE] +> Visual Studio IDE for C\# および Visual Basic は、シングルファイル アセンブリの作成でしか使用できません。 マルチファイル アセンブリを作成する場合は、コマンド ライン コンパイラまたは Visual C\+\+ 付き Visual Studio を使用する必要があります。 + +### マルチファイル アセンブリを作成するには、次のようにします。 + +1. アセンブリ内のほかのモジュールによって参照される名前空間を含むすべてのファイルをコンパイルして、コード モジュールを生成します。 コード モジュールの既定の拡張子は .netmodule です。 + + たとえば、`Stringer` ファイルに `Stringer` と呼ばれるクラスを含む `myStringer` という名前空間があるとします。 `Stringer` クラスには、コンソールに 1 つの行を書き込む `StringerMethod` メソッドが含まれます。 + + [!code-cpp[Conceptual.Assembly.Multifile#1](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.assembly.multifile/cpp/stringer.cpp#1)] + [!code-csharp[Conceptual.Assembly.Multifile#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.assembly.multifile/cs/stringer.cs#1)] + [!code-vb[Conceptual.Assembly.Multifile#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.assembly.multifile/vb/stringer.vb#1)] + + このコードをコンパイルするには、次のコマンドを使用します。 + + [!code-cpp[Conceptual.Assembly.Multifile#2](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.assembly.multifile/cpp/stringer.cpp#2)] + [!code-csharp[Conceptual.Assembly.Multifile#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.assembly.multifile/cs/stringer.cs#2)] + [!code-vb[Conceptual.Assembly.Multifile#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.assembly.multifile/vb/stringer.vb#2)] + + *module* パラメーターと **\/t:** コンパイラ オプションを指定すると、ファイルはアセンブリではなくモジュールとしてコンパイルされます。 コンパイラは、アセンブリに追加できる `Stringer.netmodule` モジュールを生成します。 + +2. コード内で参照されるほかのモジュールを示すために必要なコンパイラ オプションを使用して、ほかのすべてのモジュールをコンパイルします。 この手順では、**\/addmodule** コンパイラ オプションを使用します。 + + 次の例では、`Client` コード モジュールに、手順 1. で作成した `Stringer.dll` モジュール内のメソッドを参照するエントリ ポイント `Main` メソッドがあります。 + + [!code-cpp[Conceptual.Assembly.Multifile#3](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.assembly.multifile/cpp/client.cpp#3)] + [!code-csharp[Conceptual.Assembly.Multifile#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.assembly.multifile/cs/client.cs#3)] + [!code-vb[Conceptual.Assembly.Multifile#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.assembly.multifile/vb/client.vb#3)] + + このコードをコンパイルするには、次のコマンドを使用します。 + + [!code-cpp[Conceptual.Assembly.Multifile#4](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.assembly.multifile/cpp/client.cpp#4)] + [!code-csharp[Conceptual.Assembly.Multifile#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.assembly.multifile/cs/client.cs#4)] + [!code-vb[Conceptual.Assembly.Multifile#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.assembly.multifile/vb/client.vb#4)] + + このモジュールは後の手順でアセンブリに追加するため、**\/t:module** オプションを指定します。 `Client` 内のコードが `Stringer.netmodule` 内のコードによって作成された名前空間を参照するため、**\/addmodule** オプションを指定します。 コンパイラは、`Stringer.netmodule` という別のモジュールへの参照を格納する `Client.netmodule` モジュールを生成します。 + + > [!NOTE] + > C\# コンパイラと Visual Basic コンパイラは、マルチファイル アセンブリを直接作成する場合、次の 2 種類の構文を使用します。 + > + > - 2 回のコンパイルで、2 ファイルのアセンブリを作成する。 + > + > [!code-cpp[Conceptual.Assembly.Multifile#5](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.assembly.multifile/cpp/client.cpp#5)] + [!code-csharp[Conceptual.Assembly.Multifile#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.assembly.multifile/cs/client.cs#5)] + [!code-vb[Conceptual.Assembly.Multifile#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.assembly.multifile/vb/client.vb#5)] + > - 1 回のコンパイルで、2 ファイルのアセンブリを作成する。 + > + > [!code-cpp[Conceptual.Assembly.Multifile#6](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.assembly.multifile/cpp/client.cpp#6)] + [!code-csharp[Conceptual.Assembly.Multifile#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.assembly.multifile/cs/client.cs#6)] + [!code-vb[Conceptual.Assembly.Multifile#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.assembly.multifile/vb/client.vb#6)] + +3. [アセンブリ リンカー \(Al.exe\)](../../../docs/framework/tools/al-exe-assembly-linker.md) を使用して、アセンブリ マニフェストを格納する出力ファイルを作成します。 このファイルは、アセンブリの一部であるすべてのモジュールまたはリソースについての参照情報を格納します。 + + コマンド プロンプトに次のコマンドを入力します。 + + **al** \<*module name*\> \<*module name*\> … **\/main:**\<*method name*\> **\/out:**\<*file name*\> **\/target:**\<*assembly file type*\> + + このコマンドで、*module name* 引数はアセンブリに含める各モジュールの名前を指定します。 **\/main:** オプションは、アセンブリのエントリ ポイントであるメソッド名を指定します。 **\/out:** オプションは、アセンブリ メタデータを格納する出力ファイルの名前を指定します。 **\/target:** オプションは、アセンブリがコンソール アプリケーション実行可能ファイル \(.exe\)、Windows 実行可能ファイル \(.win\)、またはライブラリ ファイル \(.lib\) であることを指定します。 + + Al.exe を使用して、コンソール アプリケーションを実行する `myAssembly.exe` という名前のアセンブリを作成する例を次に示します。 このアプリケーションは、`Client.netmodule` と `Stringer.netmodule` の 2 つのモジュール、およびアセンブリ メタデータだけを格納する実行可能ファイル `myAssembly.exe` で構成されます。 アセンブリのエントリ ポイントは `MainClientApp` クラスの `Main` メソッドで、`Client.dll` 内に配置されています。 + + ``` + al Client.netmodule Stringer.netmodule /main:MainClientApp.Main /out:myAssembly.exe /target:exe + ``` + + [MSIL 逆アセンブラー \(Ildasm.exe\)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) を使用すると、アセンブリの内容を調査したり、ファイルがアセンブリであるかモジュールであるかを判断したりできます。 + +## 参照 + [アセンブリの作成](../../../docs/framework/app-domains/create-assemblies.md) + [方法 : アセンブリの内容を表示する](../../../docs/framework/app-domains/how-to-view-assembly-contents.md) + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [マルチファイル アセンブリ](../../../docs/framework/app-domains/multifile-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-build-a-single-file-assembly.md b/docs/framework/app-domains/how-to-build-a-single-file-assembly.md new file mode 100644 index 00000000000..272a7f81ab9 --- /dev/null +++ b/docs/framework/app-domains/how-to-build-a-single-file-assembly.md @@ -0,0 +1,96 @@ +--- +title: "方法: シングルファイル アセンブリをビルドする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 単一ファイル" + - "アセンブリ マニフェスト, シングルファイル アセンブリ" + - "コード モジュール" + - "コマンド ライン コンパイラ" + - "ライブラリ アセンブリ" + - "出力ファイル名 (アセンブリの)" + - "シングルファイル アセンブリ" +ms.assetid: a6063221-43a5-4d3e-814c-288a4ec69aec +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法: シングルファイル アセンブリをビルドする +シングルファイル アセンブリは最も単純な種類のアセンブリであり、[アセンブリ マニフェスト](../../../docs/framework/app-domains/assembly-manifest.md)と同様に型情報と実装を格納します。 コマンド ライン コンパイラまたは [!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] を使用して、シングルファイル アセンブリを作成できます。 既定では、コンパイラは .exe 拡張子の付いたアセンブリ ファイルを作成します。 + +> [!NOTE] +> [!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] for C\# および Visual Basic はシングルファイル アセンブリの作成にしか使用できません。 マルチファイル アセンブリを作成する場合は、コマンド ライン コンパイラまたは [!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] for Visual C\+\+ を使用する必要があります。 + + コマンド ライン コンパイラを使用してシングルファイル アセンブリを作成する手順を次に示します。 + +### .exe 拡張子の付いたアセンブリを作成するには + +1. コマンド プロンプトに次のコマンドを入力します。 + + \<*コンパイラ コマンドの*\> \<*モジュール名*\> + + このコマンドでは、*compiler command* はコード モジュールで使用する言語のコンパイラ コマンドです。*module name* は、コンパイルしてアセンブリを生成するコード モジュールの名前です。 + + コード モジュール `myCode` からアセンブリ `myCode.exe` を作成する例を次に示します。 + +```csharp +csc myCode.cs +``` + +```vb +vbc myCode.vb +``` + +#### .exe 拡張子を持つアセンブリを作成し、出力ファイル名を指定するには + +1. コマンド プロンプトに次のコマンドを入力します。 + + \<*コンパイラ コマンドの*\>**\/out:**の\<*ファイル名の*\> \<*モジュール名*\> + + このコマンドで、*compiler command* はコード モジュールで使用する言語のコンパイラ コマンドです。*file name* は出力ファイル名です。*module name* はコンパイルしてアセンブリを生成するコード モジュールの名前です。 + + コード モジュール `myCode` からアセンブリ `myAssembly.exe` を作成する例を次に示します。 + +```csharp +csc /out:myAssembly.exe myCode.cs +``` + +```vb +vbc /out:myAssembly.exe myCode.vb +``` + +## ライブラリ アセンブリの作成 + ライブラリ アセンブリは、クラス ライブラリに類似しています。 ライブラリ アセンブリには、他のアセンブリが参照する型が格納されますが、実行を開始するためのエントリ ポイントは含まれません。 + +#### ライブラリ アセンブリを作成するには、次のようにします。 + +1. コマンド プロンプトに次のコマンドを入力します。 + + \<*コンパイラ コマンドの*\>**\/t:library** の \<*モジュール名*\> + + このコマンドでは、*compiler command* はコード モジュールで使用する言語のコンパイラ コマンドです。*module name* は、コンパイルしてアセンブリを生成するコード モジュールの名前です。 **\/out:** オプションなどのほかのコンパイラ オプションも使用できます。 + + コード モジュール `myCode` からライブラリ アセンブリ `myCodeAssembly.dll` を作成する例を次に示します。 + +```csharp +csc /out:myCodeLibrary.dll /t:library myCode.cs +``` + +```vb +vbc /out:myCodeLibrary.dll /t:library myCode.vb +``` + +## 参照 + [アセンブリの作成](../../../docs/framework/app-domains/create-assemblies.md) + [マルチファイル アセンブリ](../../../docs/framework/app-domains/multifile-assemblies.md) + [方法 : マルチファイル アセンブリをビルドする](../../../docs/framework/app-domains/how-to-build-a-multifile-assembly.md) + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-configure-an-application-domain.md b/docs/framework/app-domains/how-to-configure-an-application-domain.md new file mode 100644 index 00000000000..0521f8fdeca --- /dev/null +++ b/docs/framework/app-domains/how-to-configure-an-application-domain.md @@ -0,0 +1,40 @@ +--- +title: "方法 : アプリケーション ドメインを構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション ドメイン, 構成" + - "ApplicationBase プロパティ" +ms.assetid: 07ea8438-7a34-49f0-a7e8-3d6ff7e4a482 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 方法 : アプリケーション ドメインを構成する + クラスを使用して、共通言語ランタイムに新しいアプリケーション ドメインの構成情報を提供できます。 独自のアプリケーション ドメインを作成するときに最も重要なプロパティは、 です。 **AppDomainSetup** の他のプロパティは、主にランタイム ホストが特定のアプリケーション ドメインを構成するために使用されます。 + + **ApplicationBase** プロパティは、アプリケーションのルート ディレクトリを定義します。 ランタイムが型要求を満たす必要がある場合、ランタイムは **ApplicationBase** プロパティで指定したディレクトリ内でその型を含むアセンブリを調査します。 + +> [!NOTE] +> 新しいアプリケーション ドメインは、作成元の **ApplicationBase** プロパティだけを継承します。 + + **AppDomainSetup** クラスのインスタンスを作成する例を次に示します。このクラスを使用してアプリケーション ドメインを新しく作成し、情報をコンソールに書き込んでから、このアプリケーション ドメインをアンロードします。 + +## 使用例 + [!code-cpp[ADApplicationBase#2](../../../samples/snippets/cpp/VS_Snippets_CLR/ADApplicationBase/CPP/source2.cpp#2)] + [!code-csharp[ADApplicationBase#2](../../../samples/snippets/csharp/VS_Snippets_CLR/ADApplicationBase/CS/source2.cs#2)] + [!code-vb[ADApplicationBase#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/ADApplicationBase/VB/source2.vb#2)] + +## 参照 + [Hosting Overview](http://msdn.microsoft.com/ja-jp/ea527626-99e3-4995-81c4-c8f3e60eb6d5) + [Programming with Application Domains](http://msdn.microsoft.com/ja-jp/bd36055b-56bd-43eb-b4d8-820c37172131) + [アプリケーション ドメインの使用](../../../docs/framework/app-domains/use.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-create-a-public-private-key-pair.md b/docs/framework/app-domains/how-to-create-a-public-private-key-pair.md new file mode 100644 index 00000000000..4f228f20141 --- /dev/null +++ b/docs/framework/app-domains/how-to-create-a-public-private-key-pair.md @@ -0,0 +1,71 @@ +--- +title: "方法 : 公開キーと秘密キーのキー ペアを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "キー ペア (厳密な名前を持つアセンブリの)" + - "署名 (アセンブリに)" + - "アセンブリ [.NET Framework]、署名" + - "暗号化キー ペア" + - "snk ファイル (キー ペア ファイル)" + - "公開キーと秘密キーのペア" + - ".snk ファイル" + - "厳密な名前を持つアセンブリ、キー ペア" +ms.assetid: 05026813-f3bd-4d7c-9e0b-fc588eb3d114 +caps.latest.revision: 16 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : 公開キーと秘密キーのキー ペアを作成する +厳密な名前でアセンブリに署名するには、公開キーと秘密キーのキー ペアが必要です。 公開キーと秘密キーの暗号キー ペアは、コンパイル中に厳密な名前付きアセンブリを作成するために使用されます。 キー ペアは、[厳密名ツール \(Sn.exe\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md) を使用して生成できます。 通常、キー ペア ファイルには、.snk 拡張子が付きます。 + +> [!NOTE] +> [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] では、C\# および Visual Basic プロジェクトのプロパティ ページに **\[署名\]** タブがあります。このタブでは、既存のキー ファイルを選択したり、Sn.exe を使用せずに新しいキー ファイルを生成したりできます。 Visual C\+\+ では、**\[プロパティ ページ\]** ウィンドウの **\[構成プロパティ\]** セクションの **\[リンカー\]** セクションにある **\[詳細\]** プロパティ ページで、既存のキー ファイルの場所を指定できます。 属性を使用したキー ファイル ペアの指定は、[!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] 以降では行われなくなりました。 + +### ユーザー コントロールを作成するには、次のようにします。 + +1. コマンド プロンプトに次のコマンドを入力します。 + + **sn –k** の \<*ファイル名*\> + + このコマンドで、*file name* はキー ペアを格納する出力ファイルの名前です。 + + キー ペア `sgKey.snk` を作成する例を次に示します。 + +``` +sn -k sgKey.snk +``` + + アセンブリに遅延署名してキー ペア全体を制御する場合 \(通常、テスト シナリオでだけ実行できます\) は、次のコマンドを使用して、キー ペアを生成し、そのキー ペアから公開キーを別のファイルに抽出できます。 最初に、キー ペアを作成します。 + +``` +sn -k keypair.snk +``` + +- 次に、キー ペアから公開キーを抽出し、別のファイルにコピーします。 + +``` +sn -p keypair.snk public.snk +``` + +- キー ペアの作成後に、厳密な名前の署名ツールが検出できる場所にファイルを配置する必要があります。 + + 厳密な名前でアセンブリに署名すると、[アセンブリ リンカー \(Al.exe\)](../../../docs/framework/tools/al-exe-assembly-linker.md) は、現在のディレクトリと出力ディレクトリを基準にしてキー ファイルを検索します。 コマンド ライン コンパイラを使用する場合は、コード モジュールを格納する現在のディレクトリにキーをコピーするだけで十分です。 + + プロジェクト プロパティに **\[署名\]** タブがない以前のバージョンの [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] を使用している場合は、キー ファイルの場所として、次のようにファイル属性を指定したプロジェクト ディレクトリを使用することをお勧めします。 + + [!code-cpp[AssemblyName_KeyPair#21](../../../samples/snippets/cpp/VS_Snippets_CLR/AssemblyName_KeyPair/CPP/keyfileattrib.cpp#21)] + [!code-csharp[AssemblyName_KeyPair#21](../../../samples/snippets/csharp/VS_Snippets_CLR/AssemblyName_KeyPair/CS/keyfileattrib.cs#21)] + [!code-vb[AssemblyName_KeyPair#21](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AssemblyName_KeyPair/VB/keyfileattrib.vb#21)] + +## 参照 + [厳密な名前付きアセンブリの作成と使用](../../../docs/framework/app-domains/create-and-use-strong-named-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-create-an-application-domain.md b/docs/framework/app-domains/how-to-create-an-application-domain.md new file mode 100644 index 00000000000..fb648c89887 --- /dev/null +++ b/docs/framework/app-domains/how-to-create-an-application-domain.md @@ -0,0 +1,36 @@ +--- +title: "方法 : アプリケーション ドメインを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション ドメイン、作成" +ms.assetid: ba1fa43e-49f5-47d9-bd7f-3024af16f4ba +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 方法 : アプリケーション ドメインを作成する +共通言語ランタイム ホストは、必要に応じてアプリケーション ドメインを自動的に作成します。 一方、独自のアプリケーション ドメインを作成して、個人的に管理するアセンブリを読み込ませることもできます。 アプリケーション ドメインを作成してコードを実行することもできます。 + + 新しいアプリケーション ドメインを作成するには、 クラスのオーバーロードされた **CreateDomain** メソッドの 1 つを使用します。 アプリケーション ドメインに名前を付けると、その名前を使用してアプリケーション ドメインを参照できます。 + + `MyDomain` という名前の新しいアプリケーション ドメインを作成し、ホスト ドメイン名と新しく作成された子アプリケーション ドメイン名をコンソールに出力する例を次に示します。 + +## 使用例 + [!code-cpp[ADCreateDomain#2](../../../samples/snippets/cpp/VS_Snippets_CLR/ADCreateDomain/CPP/source2.cpp#2)] + [!code-csharp[ADCreateDomain#2](../../../samples/snippets/csharp/VS_Snippets_CLR/ADCreateDomain/CS/source2.cs#2)] + [!code-vb[ADCreateDomain#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/ADCreateDomain/VB/source2.vb#2)] + +## 参照 + [Hosting Overview](http://msdn.microsoft.com/ja-jp/ea527626-99e3-4995-81c4-c8f3e60eb6d5) + [Programming with Application Domains](http://msdn.microsoft.com/ja-jp/bd36055b-56bd-43eb-b4d8-820c37172131) + [アプリケーション ドメインの使用](../../../docs/framework/app-domains/use.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-determine-assembly-fully-qualified-name.md b/docs/framework/app-domains/how-to-determine-assembly-fully-qualified-name.md new file mode 100644 index 00000000000..238880cd219 --- /dev/null +++ b/docs/framework/app-domains/how-to-determine-assembly-fully-qualified-name.md @@ -0,0 +1,52 @@ +--- +title: "方法 : アセンブリの完全修飾名を特定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 名前" + - "名前 [.NET Framework], アセンブリ" + - "名前 [.NET Framework], 完全修飾型名" +ms.assetid: 009dae23-e1f6-4a64-9a9a-32e4c34802b0 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法 : アセンブリの完全修飾名を特定する +グローバル アセンブリ キャッシュ内のアセンブリの完全修飾名を検出するには、グローバル アセンブリ キャッシュ ツール \([Gacutil.exe](../../../docs/framework/tools/gacutil-exe-gac-tool.md)\) を使用します。 「[方法 : グローバル アセンブリ キャッシュの内容を表示する](../../../docs/framework/app-domains/how-to-view-the-contents-of-the-gac.md)」を参照してください。 + + グローバル アセンブリ キャッシュにないアセンブリについては、複数の方法で完全修飾アセンブリ名を取得できます。コードを使用しコンソールや変数に情報を出力したり、[Ildasm.exe \(IL 逆アセンブラー\)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) を使用して完全修飾名を含むアセンブリのメタデータを調べたりできます。 + +- アセンブリがアプリケーションによって既に読み込まれている場合、 プロパティの値を取得して、完全修飾名を取得できます。 この方法を使用して、アセンブリが GAC 内にあるかどうかを判別できます。 具体的な例を次に示します。 + +- アセンブリのファイル システム パスがわかっている場合は、\(`Shared` Visual Basic で\) 静的 メソッドを呼び出して、完全修飾アセンブリ名を取得できます。 単純な例を次に示します。 + + [!code-csharp[System.Reflection.AssemblyName.GetAssemblyName#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.reflection.assemblyname.getassemblyname/cs/getassemblyname1.cs#1)] + [!code-vb[System.Reflection.AssemblyName.GetAssemblyName#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.reflection.assemblyname.getassemblyname/vb/getassemblyname1.vb#1)] + +- [Ildasm.exe \(IL 逆アセンブラー\)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) を使用して、アセンブリのメタデータを使用できます。これには完全修飾名が含まれています。 + + バージョン、カルチャ、アセンブリ名などのアセンブリ属性の設定の詳細については、「[アセンブリ属性の設定](../../../docs/framework/app-domains/set-assembly-attributes.md)」を参照してください。 アセンブリに厳密な名前を指定する方法の詳細については、「[厳密な名前付きアセンブリの作成と使用](../../../docs/framework/app-domains/create-and-use-strong-named-assemblies.md)」を参照してください。 + +## 使用例 + 指定したクラスを含むアセンブリの完全限定名をコンソールに表示するコード例を次に示します。 アプリによって既に読み込まれているアセンブリの名前を取得するので、アセンブリが GAC 内にあるかどうかは重要ではありません。 + + [!code-cpp[Assembly.Fullname#2](../../../samples/snippets/cpp/VS_Snippets_CLR/Assembly.FullName/CPP/example2.cpp#2)] + [!code-csharp[Assembly.Fullname#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Assembly.FullName/CS/example2.cs#2)] + [!code-vb[Assembly.Fullname#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Assembly.FullName/VB/example2.vb#2)] + +## 参照 + [アセンブリ名](../../../docs/framework/app-domains/assembly-names.md) + [アセンブリの作成](../../../docs/framework/app-domains/create-assemblies.md) + [厳密な名前付きアセンブリの作成と使用](../../../docs/framework/app-domains/create-and-use-strong-named-assemblies.md) + [グローバル アセンブリ キャッシュ](../../../docs/framework/app-domains/gac.md) + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-disable-the-strong-name-bypass-feature.md b/docs/framework/app-domains/how-to-disable-the-strong-name-bypass-feature.md new file mode 100644 index 00000000000..277d1c2e3ce --- /dev/null +++ b/docs/framework/app-domains/how-to-disable-the-strong-name-bypass-feature.md @@ -0,0 +1,64 @@ +--- +title: "方法 : 厳密な名前のバイパス機能を無効にする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "厳密な名前のバイパス機能" + - "厳密な名前を付けたアセンブリ、読み込み (信頼されたアプリケーション ドメインへの)" +ms.assetid: 234e088c-3b11-495a-8817-e0962be79d82 +caps.latest.revision: 30 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 30 +--- +# 方法 : 厳密な名前のバイパス機能を無効にする +.NET Framework Version 3.5 Service Pack 1 \(SP1\) 以降、アセンブリが完全信頼の オブジェクト \(`MyComputer` ゾーンに既定の など\) に読み込まれている場合は、厳密な名前の署名の検証が行われなくなりました。 これは、厳密な名前のバイパス機能と呼ばれます。 完全信頼環境での の要求は、そのシグネチャに関係なく、署名された完全信頼アセンブリであれば常に成功します。 ゾーンは完全に信頼されているため、唯一の制限として、アセンブリは完全に信頼されている必要があります。 このような状況では厳密な名前は決定要因ではないため、これを検証する理由はありません。 厳密な名前の署名の検証をバイパスすることで、パフォーマンスが大幅に向上します。 + + バイパス機能は、 プロパティで指定されたディレクトリから完全信頼の に読み込まれ、遅延署名されていないすべての完全信頼アセンブリに適用されます。 + + レジストリ キー値を設定することで、コンピューターのすべてのアプリケーションに対するバイパス機能をオーバーライドできます。 アプリケーションの構成ファイルを使用すると、単一アプリケーションの設定をオーバーライドできます。 レジストリ キーを使用して無効にされているアプリケーションでは、個別にバイパス機能を元に戻すことはできません。 + + バイパス機能をオーバーライドすると、厳密な名前が正しいかどうかだけが検証されます。 に対するチェックは行われません。 特定の厳密な名前を確認するには、個別にチェックを実行する必要があります。 + +> [!IMPORTANT] +> 厳密な名前の検証を強制する機能は、次の手順で説明するように、レジストリ キーに依存します。 アプリケーションが、該当のレジストリ キーへのアクセスについてアクセス制御リスト \(ACL: Access Control List\) アクセス許可を持っていないアカウントで実行されている場合、その設定は無効となります。 ACL アクセス許可を構成し、すべてのアセンブリ用に読み取ることができるようにキーを設定する必要があります。 + +### すべてのアプリケーションに対して厳密な名前のバイパス機能を無効にするには + +- 32 ビット コンピューターでは、システム レジストリの HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\.NETFramework キーの下に、値が 0 の `AllowStrongNameBypass` という名前の DWORD エントリを作成します。 + +- 64 ビット コンピューターでは、システム レジストリの HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\.NETFramework キーと HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\.NETFramework キーの下に、値が 0 の `AllowStrongNameBypass` という名前の DWORD エントリを作成します。 + +### 単一のアプリケーションに対して厳密な名前のバイパス機能を無効にするには + +1. アプリケーションの構成ファイルを開くか、または作成します。 + + このファイルの詳細については、「[アプリの構成](../../../docs/framework/configure-apps/index.md)」の「アプリケーション構成ファイル」を参照してください。 + +2. 次のエントリを追加します。 + + ``` + + + < bypassTrustedAppStrongNames enabled="false" /> + + + ``` + + アプリケーションのバイパス機能を元に戻すには、構成ファイル設定を削除するか、属性を "true" に設定します。 + +> [!NOTE] +> アプリケーションに対して厳密な名前のバイパス機能の有効\/無効を切り替えることができるのは、コンピューターでバイパス機能が有効になっている場合だけです。 コンピューターでバイパス機能が無効になっている場合は、すべてのアプリケーションに対して厳密な名前が検証され、単一のアプリケーションに対する検証をバイパスすることはできません。 + +## 参照 + [Sn.exe \(厳密名ツール\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md) + [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/bypasstrustedappstrongnames-element.md) + [厳密な名前付きアセンブリの作成と使用](../../../docs/framework/app-domains/create-and-use-strong-named-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-install-an-assembly-into-the-gac.md b/docs/framework/app-domains/how-to-install-an-assembly-into-the-gac.md new file mode 100644 index 00000000000..daab32f06ce --- /dev/null +++ b/docs/framework/app-domains/how-to-install-an-assembly-into-the-gac.md @@ -0,0 +1,90 @@ +--- +title: "方法 : グローバル アセンブリ キャッシュにアセンブリをインストールする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], グローバル アセンブリ キャッシュ" + - "Gacutil.exe" + - "グローバル アセンブリ キャッシュ ツール" + - "グローバル アセンブリ キャッシュ, インストール (アセンブリを)" + - "厳密な名前を付けたアセンブリ, グローバル アセンブリ キャッシュ" +ms.assetid: a7e6f091-d02c-49ba-b736-7295cb0eb743 +caps.latest.revision: 24 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 24 +--- +# 方法 : グローバル アセンブリ キャッシュにアセンブリをインストールする +厳密な名前付きのアセンブリをグローバル アセンブリ キャッシュ \(GAC\) にインストールには、次の 2 つの方法があります。 + +> [!IMPORTANT] +> GAC にインストールできるのは、厳密な名前付きのアセンブリだけです。 厳密な名前付きのアセンブリを作成する方法については、「[方法 : 厳密な名前でアセンブリに署名する](../../../docs/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name.md)」を参照してください。 + +- [Windows インストーラー](http://msdn.microsoft.com/library/windows/desktop/cc185688.aspx) を使用する。 + + この操作を行うには、Visual Studio 2012 および Visual Studio 2013 で、InstallShield Limited Edition プロジェクトを作成します。 + + これは、アセンブリをグローバル アセンブリ キャッシュに追加する最も一般的な方法です。この方法をお勧めします。 このインストーラーを使用すると、グローバル アセンブリ キャッシュ内のアセンブリの参照カウントが示されるなどの利点があります。 + +- [グローバル アセンブリ キャッシュ ツール \(Gacutil.exe\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) を使用する。 + + Gacutil.exe を使用すると、厳密な名前付きアセンブリをグローバル アセンブリ キャッシュに追加したり、グローバル アセンブリ キャッシュの内容を表示したりできます。 + + > [!NOTE] + > Gacutil.exe は開発専用です。製品アセンブリをグローバル アセンブリ キャッシュにインストールするためには使用しないでください。 + +> [!NOTE] +> 以前のバージョンの .NET Framework では、Windows のシェル拡張機能である Shfusion.dll により、エクスプローラーでアセンブリをドラッグしてインストールすることができました。 [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、Shfusion.dll は廃止されましたが、互換性のために残されています。 + +### グローバル アセンブリ キャッシュ ツール \(Gacutil.exe\) を使用するには + +1. コマンド プロンプトに次のコマンドを入力します。 + + **gacutil \-i** \<*assembly name*\> + + このコマンドで、*assembly name* はグローバル アセンブリ キャッシュにインストールされるアセンブリの名前です。 + + ファイル名 `hello.dll` のアセンブリをグローバル アセンブリ キャッシュにインストールする例を次に示します。 + +``` +gacutil -i hello.dll +``` + + 詳細については、「[グローバル アセンブリ キャッシュ ツール \(Gacutil.exe\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md)」を参照してください。 + +### InstallShield Limited Edition プロジェクトを使用するには + +1. ソリューションのショートカット メニューを開き、**\[追加\]**、**\[新しいプロジェクト\]** の順に選択して、ソリューションにセットアップと配置パッケージを追加します。 + +2. **\[新しいプロジェクトの追加\]** ダイアログ ボックスの **\[インストール済み\]** フォルダーで、**\[その他のプロジェクトの種類\]**、**\[セットアップと配置\]**、**\[InstallShield Limited Edition\]** の順に選択し、プロジェクトに名前を付けます。 \(プロンプトが表示されたら、InstallShield をダウンロードし、インストールしてアクティブにします。\) + +3. **ソリューション エクスプローラー**のプロジェクト アシスタントを使用するか、**ソリューション エクスプローラー**の番号付き手順のサブ手順を選択して、セットアップと配置プロジェクトの一般的な構成を行います。 アセンブリを GAC に追加しない場合と同様にセットアップを構成します。 + +4. アセンブリを GAC に追加するプロセスを開始するには、**ソリューション エクスプローラー**の **\[アプリケーション データの指定\]** 手順の下にある **\[ファイル\]** を選択します。 + +5. **\[インストール先コンピューターのフォルダー\]** ペインで、**\[インストール先コンピューター\]** のショートカット メニューを開き、**\[定義済みフォルダーの表示\]**、**\[GlobalAssemblyCache\]** の順に選択します。 + +6. グローバル アセンブリ キャッシュにインストールするアセンブリを含む、ソリューション内の各プロジェクトで、次の操作を行います。 + + 1. **\[インストール元コンピューターのフォルダー\]** ペインでプロジェクトを選択します。 + + 2. **\[インストール先コンピューターのフォルダー\]** ペインで **\[GlobalAssemblyCache\]** を選択します。 + + 3. **\[インストール元コンピューターのファイル\]** ペインで、**\[*\* のプライマリ出力\]** を選択します。 + + 4. 手順 c のファイルを **\[インストール先コンピューターのファイル\]** ペインにドラッグします \(または、ファイルのショートカット メニューの **\[コピー\]** と **\[貼り付け\]** コマンドを使用します\)。 + +## 参照 + [アセンブリとグローバル アセンブリ キャッシュの使用](../../../docs/framework/app-domains/working-with-assemblies-and-the-gac.md) + [方法 : グローバル アセンブリ キャッシュからアセンブリを削除する](../../../docs/framework/app-domains/how-to-remove-an-assembly-from-the-gac.md) + [Gacutil.exe \(グローバル アセンブリ キャッシュ ツール\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) + [方法 : 厳密な名前でアセンブリに署名する](../../../docs/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name.md) + [Windows Installer Deployment](http://msdn.microsoft.com/ja-jp/121be21b-b916-43e2-8f10-8b080516d2a0) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-load-assemblies-into-an-application-domain.md b/docs/framework/app-domains/how-to-load-assemblies-into-an-application-domain.md new file mode 100644 index 00000000000..013485bf681 --- /dev/null +++ b/docs/framework/app-domains/how-to-load-assemblies-into-an-application-domain.md @@ -0,0 +1,57 @@ +--- +title: "方法 : アプリケーション ドメインにアセンブリを読み込む | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション ドメイン, 読み込み (アセンブリを)" + - "読み込み (アセンブリを)" +ms.assetid: 1432aa2d-bd83-4346-bf3b-a1b7920e2aa9 +caps.latest.revision: 16 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 16 +--- +# 方法 : アプリケーション ドメインにアセンブリを読み込む +アプリケーション ドメインにアセンブリを読み込むには、いくつかの方法があります。 推奨されているのは、[System.Reflection.Assembly](https://msdn.microsoft.com/en-us/library/system.reflection.aspx) クラスの `static` \(Visual Basic では `Shared`\) メソッドを使用する方法です。 それ以外には、以下の方法でアセンブリを読み込むことができます。 + +- [Assembly](https://msdn.microsoft.com/en-us/library/system.reflection.aspx) クラスの メソッドは、ファイルの場所が指定されたアセンブリを読み込みます。 このメソッドでアセンブリを読み込む場合は、別の読み込みコンテキストが使用されます。 + +- メソッドと メソッドは、リフレクション専用コンテキストにアセンブリを読み込みます。 このコンテキストに読み込まれたアセンブリはチェックできますが、実行することはできません。この結果、他のプラットフォームを対象とするアセンブリをチェックできます。 「[方法 : リフレクションのみのコンテキストにアセンブリを読み込む](../../../docs/framework/reflection-and-codedom/how-to-load-assemblies-into-the-reflection-only-context.md)」を参照してください。 + +> [!NOTE] +> リフレクション専用コンテキストは、.NET Framework Version 2.0 で新たに追加されました。 + +- クラスの などのメソッドは、アプリケーション ドメインにアセンブリを読み込むことができます。 + +- クラスの メソッドは、アセンブリを読み込むことができます。 + +- クラスの メソッドは、アセンブリを読み込むことができますが、主に COM の相互運用性のために使用されます。 このメソッドの呼び出し元であるアプリケーション ドメイン以外のアプリケーション ドメインにアセンブリを読み込む場合は、このメソッドを使用しないでください。 + +> [!NOTE] +> .NET Framework Version 2.0 以降では、現在読み込まれているランタイムよりもバージョン番号が新しい .NET Framework のバージョンでコンパイルされたアセンブリを、ランタイムが読み込まないようになりました。 これに該当するのは、バージョン番号のメジャー部分とマイナー部分を組み合わせた番号です。 + + 読み込まれたアセンブリの Just\-In\-Time \(JIT\) コンパイル コードがアプリケーション ドメイン間で共有される方法を指定できます。 詳細については、「[Application Domains and Assemblies](http://msdn.microsoft.com/ja-jp/433b04ae-4ba8-4849-9dbd-79194f240346)」を参照してください。 + +## 使用例 + 次に示すコードは、"example.exe" または "example.dll" という名前のアセンブリを現在のアプリケーション ドメインに読み込み、アセンブリから `Example` という型を取得し、さらにその型の `MethodA` というパラメーターを持たないメソッドを取得して、そのメソッドを実行します。 読み込まれたアセンブリから情報を取得する方法の詳細については、「[型の動的な読み込みおよび使用](../../../docs/framework/reflection-and-codedom/dynamically-loading-and-using-types.md)」を参照してください。 + + [!code-cpp[System.AppDomain.Load#2](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.appdomain.load/cpp/source2.cpp#2)] + [!code-csharp[System.AppDomain.Load#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.load/cs/source2.cs#2)] + [!code-vb[System.AppDomain.Load#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.load/vb/source2.vb#2)] + +## 参照 + + [Hosting Overview](http://msdn.microsoft.com/ja-jp/ea527626-99e3-4995-81c4-c8f3e60eb6d5) + [Programming with Application Domains](http://msdn.microsoft.com/ja-jp/bd36055b-56bd-43eb-b4d8-820c37172131) + [リフレクション](../../../docs/framework/reflection-and-codedom/reflection.md) + [アプリケーション ドメインの使用](../../../docs/framework/app-domains/use.md) + [方法 : リフレクションのみのコンテキストにアセンブリを読み込む](../../../docs/framework/reflection-and-codedom/how-to-load-assemblies-into-the-reflection-only-context.md) + [Application Domains and Assemblies](http://msdn.microsoft.com/ja-jp/433b04ae-4ba8-4849-9dbd-79194f240346) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-obtain-type-and-member-information-from-an-assembly.md b/docs/framework/app-domains/how-to-obtain-type-and-member-information-from-an-assembly.md new file mode 100644 index 00000000000..4fe75fb68ae --- /dev/null +++ b/docs/framework/app-domains/how-to-obtain-type-and-member-information-from-an-assembly.md @@ -0,0 +1,36 @@ +--- +title: "方法 : アセンブリから型およびメンバーの情報を取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 取得 (情報を)" + - "取得 (アセンブリ情報を)" +ms.assetid: 348ae651-ccda-4f13-8eda-19e8337e9438 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 方法 : アセンブリから型およびメンバーの情報を取得する + 名前空間には、アセンブリから情報を取得するための多くのメソッドがあります。 このセクションでは、これらのメソッドの 1 つを実行する例を示します。 詳細については、「[リフレクションの概要](../../../docs/framework/reflection-and-codedom/reflection.md)」を参照してください。 + + アセンブリから型情報とメンバー情報を取得する例を次に示します。 + +## 使用例 + [!code-cpp[Conceptual.Types.ViewInfo#8](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.types.viewinfo/cpp/source6.cpp#8)] + [!code-csharp[Conceptual.Types.ViewInfo#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.types.viewinfo/cs/source6.cs#8)] + [!code-vb[Conceptual.Types.ViewInfo#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.types.viewinfo/vb/source6.vb#8)] + +## 参照 + [Hosting Overview](http://msdn.microsoft.com/ja-jp/ea527626-99e3-4995-81c4-c8f3e60eb6d5) + [Programming with Application Domains](http://msdn.microsoft.com/ja-jp/bd36055b-56bd-43eb-b4d8-820c37172131) + [リフレクション](../../../docs/framework/reflection-and-codedom/reflection.md) + [アプリケーション ドメインの使用](../../../docs/framework/app-domains/use.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-receive-first-chance-exception-notifications.md b/docs/framework/app-domains/how-to-receive-first-chance-exception-notifications.md new file mode 100644 index 00000000000..8d19f0c0e6f --- /dev/null +++ b/docs/framework/app-domains/how-to-receive-first-chance-exception-notifications.md @@ -0,0 +1,108 @@ +--- +title: "方法: 初回例外通知を受け取る | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "例外, 初回通知" + - "初回例外通知" +ms.assetid: 66f002b8-a97d-4a6e-a503-2cec01689113 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法: 初回例外通知を受け取る + クラスの イベントを使用すると、共通言語ランタイムが例外ハンドラーの検索を開始する前に、例外がスローされたことを知らせる通知を受け取ることができます。 + + このイベントは、アプリケーション ドメイン レベルで発生します。 実行スレッドは複数のアプリケーション ドメインを通過する可能性があるため、あるアプリケーション ドメインでハンドルされない例外が別のアプリケーション ドメインでハンドルされることもあります。 通知は、イベントにハンドラーを追加した各アプリケーション ドメインで発生します。この処理は、いずれかのアプリケーション ドメインで例外がハンドルされるまで続行されます。 + + ここで紹介するプロシージャと例では、1 つのアプリケーション ドメインを実装する単純なプログラムで初回例外通知を受け取る方法と、作成したアプリケーション ドメインで初回例外通知を受け取る方法について説明します。 + + 複数のアプリケーション ドメインにわたる複雑な例については、 イベントの例を参照してください。 + +## 既定のアプリケーション ドメインで初回例外通知を受け取る + 次の手順では、アプリケーションのエントリ ポイントである `Main()` メソッドが既定のアプリケーション ドメインで実行されます。 + +#### 既定のアプリケーション ドメインで初回例外通知の動作を確認するには + +1. ラムダ関数を使用して イベントのイベント ハンドラーを定義し、それをイベントにアタッチします。 この例では、イベント ハンドラーによって、イベントが処理されたアプリケーション ドメインの名前と、例外の プロパティを出力します。 + + [!code-csharp[System.AppDomain.FirstChanceException_howto_simple#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto_simple/cs/example.cs#2)] + [!code-vb[System.AppDomain.FirstChanceException_howto_simple#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto_simple/vb/example.vb#2)] + +2. 例外をスローし、それをキャッチします。 ランタイムが例外ハンドラーを見つける前に、 イベントが発生し、メッセージが表示されます。 このメッセージの後に、例外ハンドラーによるメッセージが表示されます。 + + [!code-csharp[System.AppDomain.FirstChanceException_howto_simple#3](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto_simple/cs/example.cs#3)] + [!code-vb[System.AppDomain.FirstChanceException_howto_simple#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto_simple/vb/example.vb#3)] + +3. 例外をスローしますが、それをキャッチしません。 ランタイムが例外ハンドラーを検索する前に、 イベントが発生し、メッセージが表示されます。 例外ハンドラーがないため、アプリケーションは終了します。 + + [!code-csharp[System.AppDomain.FirstChanceException_howto_simple#4](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto_simple/cs/example.cs#4)] + [!code-vb[System.AppDomain.FirstChanceException_howto_simple#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto_simple/vb/example.vb#4)] + + この手順の最初の 3 つの手順で示されているコードは、完全なコンソール アプリケーションを形成します。 既定のアプリケーション ドメインの名前は .exe ファイルの名前と拡張子から構成されるため、アプリケーションからの出力は .exe ファイルの名前によって異なります。 次のサンプル出力を参照してください。 + + [!code-csharp[System.AppDomain.FirstChanceException_howto_simple#5](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto_simple/cs/example.cs#5)] + [!code-vb[System.AppDomain.FirstChanceException_howto_simple#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto_simple/vb/example.vb#5)] + +## 別のアプリケーション ドメインで初回例外通知を受け取る + プログラムに複数のアプリケーション ドメインが含まれている場合は、通知を受け取るアプリケーション ドメインを選択できます。 + +#### 作成したアプリケーション ドメインで初回例外通知を受け取るには + +1. イベントのイベント ハンドラーを定義します。 この例では、`static` メソッド \(Visual Basic では `Shared` メソッド\) を使用して、イベントが処理されたアプリケーション ドメインの名前と、例外の プロパティを出力します。 + + [!code-csharp[System.AppDomain.FirstChanceException_howto#3](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/cs/example.cs#3)] + [!code-vb[System.AppDomain.FirstChanceException_howto#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/vb/example.vb#3)] + +2. アプリケーション ドメインを作成し、このアプリケーション ドメインの イベントにイベント ハンドラーを追加します。 この例では、アプリケーション ドメインの名前は `AD1` です。 + + [!code-csharp[System.AppDomain.FirstChanceException_howto#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/cs/example.cs#2)] + [!code-vb[System.AppDomain.FirstChanceException_howto#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/vb/example.vb#2)] + + 既定のアプリケーション ドメインでも、同じようにこのイベントを処理できます。 既定のアプリケーション ドメインへの参照を取得するには、`static` \(Visual Basic では `Shared`\) の プロパティを `Main()` で使用します。 + +#### アプリケーション ドメインで初回例外通知の動作を確認するには + +1. 前の手順で作成したアプリケーション ドメインに `Worker` オブジェクトを作成します。 `Worker` クラスは、パブリックで、 から派生する必要があります。この記事の最後にある完全な例を参照してください。 + + [!code-csharp[System.AppDomain.FirstChanceException_howto#4](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/cs/example.cs#4)] + [!code-vb[System.AppDomain.FirstChanceException_howto#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/vb/example.vb#4)] + +2. 例外をスローする `Worker` オブジェクトのメソッドを呼び出します。 この例では、`Thrower` メソッドが 2 回呼び出されます。 1 回目のメソッド引数は `true` であるため、メソッドが自身の例外をキャッチします。 2 回目の引数は `false` です。この場合、`Main()` メソッドが既定のアプリケーション ドメインで例外をキャッチします。 + + [!code-csharp[System.AppDomain.FirstChanceException_howto#6](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/cs/example.cs#6)] + [!code-vb[System.AppDomain.FirstChanceException_howto#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/vb/example.vb#6)] + +3. `Thrower` メソッドにコードを追加して、メソッドが自身の例外をハンドルするかどうかを制御します。 + + [!code-csharp[System.AppDomain.FirstChanceException_howto#5](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/cs/example.cs#5)] + [!code-vb[System.AppDomain.FirstChanceException_howto#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/vb/example.vb#5)] + +## 使用例 + 次の例では、`AD1` という名前のアプリケーション ドメインを作成し、このアプリケーション ドメインの イベントにイベント ハンドラーを追加します。 この例では、アプリケーション ドメインに `Worker` クラスのインスタンスを作成し、`Thrower` という名前のメソッドを呼び出します。このメソッドにより、 がスローされます。 メソッドは、引数の値に応じて、例外をキャッチするか、またはハンドルしないようにします。 + + `Thrower` メソッドが `AD1` で例外をスローするたびに、`AD1` で イベントが発生し、イベント ハンドラーによりメッセージが表示されます。 次に、ランタイムによって例外ハンドラーが検索されます。 最初のケースでは、例外ハンドラーは `AD1` で見つかります。 2 番目のケースでは、例外は `AD1` でハンドルされず、代わりに既定のアプリケーション ドメインでキャッチされます。 + +> [!NOTE] +> 既定のアプリケーション ドメインの名前は、実行可能ファイルの名前と同じです。 + + 既定のアプリケーション ドメインに イベントのハンドラーを追加すると、既定のアプリケーション ドメインが例外をハンドルする前に、イベントが発生して処理されます。 これを確認するには、`Main()` の先頭に C\# コード `AppDomain.CurrentDomain.FirstChanceException += FirstChanceException;` \(Visual Basic では `AddHandler AppDomain.CurrentDomain.FirstChanceException, FirstChanceExceptio`n\) を追加します。 + + [!code-csharp[System.AppDomain.FirstChanceException_howto#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/cs/example.cs#1)] + [!code-vb[System.AppDomain.FirstChanceException_howto#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.firstchanceexception_howto/vb/example.vb#1)] + +## コードのコンパイル + +- この例はコマンド ライン アプリケーションです。 [!INCLUDE[vs_dev10_long](../../../includes/vs-dev10-long-md.md)] でこのコードをコンパイルして実行するには、出力結果を確認する前にコマンド ウィンドウが閉じないように、`Main()` の最後に C\# コード `Console.ReadLine();` \(Visual Basic では `Console.ReadLine()`\) を追加します。 + +## 参照 + \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-reference-a-strong-named-assembly.md b/docs/framework/app-domains/how-to-reference-a-strong-named-assembly.md new file mode 100644 index 00000000000..5cd1cbdac93 --- /dev/null +++ b/docs/framework/app-domains/how-to-reference-a-strong-named-assembly.md @@ -0,0 +1,75 @@ +--- +title: "方法 : 厳密な名前のアセンブリを参照する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 厳密な名前を付けた" + - "アセンブリのバインディング, 厳密な名前を付けた" + - "コンパイル時アセンブリ参照" + - "厳密な名前を付けたアセンブリ, コンパイル時参照" +ms.assetid: 4c6a406a-b5eb-44fa-b4ed-4e95bb95a813 +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : 厳密な名前のアセンブリを参照する +通常、厳密な名前付きアセンブリ内にある型またはリソースを参照するプロセスは内部で行われます。 コンパイル時 \(事前バインディング\) または実行時に参照を作成できます。 + + コンパイル時参照は、あるアセンブリが別のアセンブリを明示的に参照することをコンパイラに対して指定するときに発生します。 コンパイル時参照を使用する場合、コンパイラは対象の厳密な名前付きアセンブリの公開キーを自動的に取得し、その公開キーをコンパイルされるアセンブリのアセンブリ参照内に自動的に配置します。 + +> [!NOTE] +> 厳密な名前付きアセンブリのみ、他の厳密な名前付きアセンブリ内の型を参照できます。 それ以外の場合は、厳密な名前付きアセンブリのセキュリティが確保されません。 + +### 厳密な名前付きアセンブリへのコンパイル時参照を作成するには、次のようにします。 + +1. コマンド プロンプトに次のコマンドを入力します。 + + \<*compiler command*\> **\/reference:**\<*assembly name*\> + + このコマンドで、*compiler command* は、使用している *assembly name* は参照される厳密な名前付きアセンブリの名前に言語のコンパイラ コマンドです。 ライブラリ アセンブリを作成するための **\/t:library** オプションなどの他のコンパイラ オプションも使用できます。 + + コード モジュール `myAssembly.cs` から厳密な名前付きアセンブリ `myLibAssembly.dll` を参照するアセンブリ `myAssembly.dll` を作成する例を次に示します。 + +``` +csc /t:library myAssembly.cs /reference:myLibAssembly.dll +``` + +### 厳密な名前付きアセンブリへの実行時参照を作成するには、次のようにします。 + +1. メソッドまたは メソッドを使用するなどの方法で、実行時に厳密な名前付きアセンブリ参照を作成する場合は、参照される厳密な名前付きアセンブリの表示名を使用する必要があります。 表示名の構文は、次のとおりです。 + + \<*assembly name*\>**,** \<*version number*\>**,** \<*culture*\>**,** \<*public key token*\> + + たとえば、次のようになります。 + + ``` + myDll, Version=1.1.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33 + ``` + + この例では、`PublicKeyToken` は 16 進形式の公開キー トークンです。 カルチャの値がない場合は、`Culture=neutral` を使用します。 + + この情報と メソッドの使用方法を次のコード例に示します。 + + [!code-cpp[Assembly.Load1#3](../../../samples/snippets/cpp/VS_Snippets_CLR/Assembly.Load1/CPP/load2.cpp#3)] + [!code-csharp[Assembly.Load1#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Assembly.Load1/CS/load2.cs#3)] + [!code-vb[Assembly.Load1#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Assembly.Load1/VB/load2.vb#3)] + + 特定のアセンブリの 16 進形式の公開キーと公開キー トークンは、次の[厳密名 \(Sn.exe\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md) コマンドを使用して出力できます。 + + **sn \-Tp \<** *assembly* **\>** + + 公開キー ファイルがある場合は、代わりに次のコマンドを使用できます。コマンド ライン オプションの大文字と小文字の違いに注意してください。 + + **sn \-tp \<** *assembly* **\>** + +## 参照 + [厳密な名前付きアセンブリの作成と使用](../../../docs/framework/app-domains/create-and-use-strong-named-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-remove-an-assembly-from-the-gac.md b/docs/framework/app-domains/how-to-remove-an-assembly-from-the-gac.md new file mode 100644 index 00000000000..22036bdbb98 --- /dev/null +++ b/docs/framework/app-domains/how-to-remove-an-assembly-from-the-gac.md @@ -0,0 +1,62 @@ +--- +title: "方法 : グローバル アセンブリ キャッシュからアセンブリを削除する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], グローバル アセンブリ キャッシュ" + - "削除 (グローバル アセンブリ キャッシュ内のアセンブリを)" + - "GAC (グローバル アセンブリ キャッシュ), 削除 (アセンブリを)" + - "Gacutil.exe" + - "グローバル アセンブリ キャッシュ ツール" + - "グローバル アセンブリ キャッシュ, 削除 (アセンブリを)" + - "削除 (グローバル アセンブリ キャッシュからアセンブリを)" + - "厳密な名前を付けたアセンブリ, グローバル アセンブリ キャッシュ" +ms.assetid: acdcc588-b458-436d-876c-726de68244c1 +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : グローバル アセンブリ キャッシュからアセンブリを削除する +グローバル アセンブリ キャッシュ \(GAC\) からアセンブリを削除するには、次の 2 つの方法があります。 + +- [グローバル アセンブリ キャッシュ ツール \(Gacutil.exe\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) を使用する方法。 このオプションを使用すると、開発およびテスト時に GAC に配置したアセンブリをアンインストールできます。 + +- [Windows インストーラー](http://msdn.microsoft.com/library/windows/desktop/cc185688.aspx) を使用する方法。 インストール パッケージをテストするとき、そして実稼働システムのために、アセンブリをアンインストールするにはこのオプションを使用する必要があります。 + +### Gacutil.exe によるアセンブリの削除 + +1. コマンド プロンプトに次のコマンドを入力します。 + + **gacutil –u** \<*assembly name*\> + + このコマンドで、*assembly name* はグローバル アセンブリ キャッシュから削除されるアセンブリの名前です。 + + > [!WARNING] + > アセンブリが一部のアプリケーションで引き続き必要となる可能性があるので、Gacutil.exe を使用して実稼働システムのアセンブリを削除しないでください。 代わりに、GAC にインストールされる各アセンブリの参照カウントを保持する Windows インストーラーを使用する必要があります。 + + 次の例では、`hello.dll` という名前のアセンブリが、グローバル アセンブリ キャッシュから削除されます。 + +``` +gacutil -u hello +``` + +### Windows インストーラーでアセンブリを削除する + +1. **コントロール パネル**の**プログラムと機能**アプリで、アンインストールするアプリを選択します。 インストール パッケージが GAC にアセンブリを配置した場合、それらが別のアプリケーションによって使用されないときは、Windows インストーラーはそれらを削除します。 + + > [!NOTE] + > Windows インストーラーは、GAC にインストールされたアセンブリの参照カウントを保持します。 アセンブリの参照カウントがゼロになる場合 \(それが Windows インストーラー パッケージによってインストールされたアプリケーションによって使用されないことを示す\) にのみ、アセンブリが GAC から削除されます。 + +## 参照 + [アセンブリとグローバル アセンブリ キャッシュの使用](../../../docs/framework/app-domains/working-with-assemblies-and-the-gac.md) + [方法: グローバル アセンブリ キャッシュへのアセンブリのインストール](../../../docs/framework/app-domains/how-to-install-an-assembly-into-the-gac.md) + [Gacutil.exe \(グローバル アセンブリ キャッシュ ツール\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name.md b/docs/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name.md new file mode 100644 index 00000000000..82a1991faee --- /dev/null +++ b/docs/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name.md @@ -0,0 +1,107 @@ +--- +title: "方法 : 厳密な名前でアセンブリに署名する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 署名" + - "アセンブリ [.NET Framework], 厳密な名前を付けた" + - "署名 (アセンブリに)" + - "厳密な名前を付けたアセンブリ, 署名 (厳密な名前を使用した)" +ms.assetid: 2c30799a-a826-46b4-a25d-c584027a6c67 +caps.latest.revision: 23 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 23 +--- +# 方法 : 厳密な名前でアセンブリに署名する +厳密な名前でアセンブリに署名するには、いくつかの方法があります。 + +- Visual Studio でプロジェクトの **\[プロパティ\]** ダイアログ ボックスにある **\[署名\]** タブを使用する。 これは、厳密な名前でアセンブリに署名するための最も簡単で便利な方法です。 + +- [アセンブリ リンカー \(Al.exe\)](../../../docs/framework/tools/al-exe-assembly-linker.md) を使用して、.NET Framework のコード モジュール \(.netmodule ファイル\) をキー ファイルにリンクする。 + +- アセンブリ属性を使用して、厳密な名前情報をコードに挿入する。 使用するキー ファイルが配置されている場所に応じて、 または 属性を使用できます。 + +- コンパイラ オプションを使用する。 + + 厳密な名前でアセンブリに署名するには、暗号キー ペアが必要です。 キー ペアの作成の詳細については、「[方法 : 公開キーと秘密キーのキー ペアを作成する](../../../docs/framework/app-domains/how-to-create-a-public-private-key-pair.md)」を参照してください。 + +### Visual Studio を使用してアセンブリを作成し、厳密な名前でそのアセンブリに署名するには + +1. **ソリューション エクスプローラー**で、プロジェクトのショートカット メニューを開き、**\[プロパティ\]** を選択します。 + +2. **\[署名\]** タブを選択します。 + +3. **\[アセンブリの署名\]** ボックスを選択します。 + +4. **\[厳密な名前のキー ファイルを選択してください\]** ボックスで **\[\<参照\>\]** をクリックし、キー ファイルに移動します。 新しいキー ファイルを作成するには、**\[\<新規作成\>\]** を選択し、**\[厳密な名前キーの作成\]** ダイアログ ボックスでその名前を入力します。 + +### アセンブリ リンカーを使用してアセンブリを作成し、厳密な名前でそのアセンブリに署名するには + +- [Visual Studio コマンド プロンプト](../../../docs/framework/tools/developer-command-prompt-for-vs.md)で次のコマンドを入力します。 + + **al** **\/out:**\<*assemblyName*\> *\* **\/keyfile:**\<*keyfileName*\> + + それぞれの文字について以下に説明します。 + + *assemblyName* + アセンブリ リンカーが生成する、厳密な名前で署名されたアセンブリ \(.dll ファイルまたは .exe ファイル\) の名前。 + + *moduleName* + 1 つ以上の型を含む、.NET Framework コード モジュール \(.netmodule ファイル\) の名前。 C\# または Visual Basic で `/target:module` スイッチを使ってコードをコンパイルすることにより、.netmodule ファイルを作成できます。 + + *keyfileName* + キー ペアを格納しているコンテナーまたはファイルの名前。 アセンブリ リンカーは、関係の相対パスを現在のディレクトリとして解釈します。 + + 次の例は、キー ファイル `MyAssembly.dll` を使用して厳密な名前でアセンブリ `sgKey.snk` に署名します。 + +``` +al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk +``` + + このツールの詳細については、「[アセンブリ リカー](../../../docs/framework/tools/al-exe-assembly-linker.md)」を参照してください。 + +#### 属性を使用して厳密な名前でアセンブリに署名するには + +1. または 属性をソース コード ファイルに追加して、厳密な名前でアセンブリに署名するときに使用するキー ペアを格納するファイルまたはコンテナーの名前を指定します。 + +2. ソース コード ファイルを通常どおりにコンパイルします。 + +> [!NOTE] +> C\# および Visual Basic コンパイラは、ソース コードで または 属性が見つかった場合、コンパイラ警告を発行します \(CS1699 と BC41008\)。 この警告は無視してかまいません。 + + 次の例は、 という名前のキー ファイルを指定して、`keyfile.snk` 属性を使用します。このキー ファイルは、アセンブリがコンパイルされるディレクトリにあります。 + + [!code-cpp[AssemblyName_KeyPair#21](../../../samples/snippets/cpp/VS_Snippets_CLR/AssemblyName_KeyPair/CPP/keyfileattrib.cpp#21)] + [!code-csharp[AssemblyName_KeyPair#21](../../../samples/snippets/csharp/VS_Snippets_CLR/AssemblyName_KeyPair/CS/keyfileattrib.cs#21)] + [!code-vb[AssemblyName_KeyPair#21](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AssemblyName_KeyPair/VB/keyfileattrib.vb#21)] + + ソース ファイルのコンパイル時に、アセンブリに遅延署名することもできます。 詳細については、「[アセンブリへの遅延署名](../../../docs/framework/app-domains/delay-sign-assembly.md)」を参照してください。 + +### コンパイラを使用して厳密な名前でアセンブリに署名するには + +- C\# と Visual Basic では `/keyfile` または `/delaysign` コンパイラ オプションを使用し、C\+\+ では `/KEYFILE` または `/DELAYSIGN` リンカー オプションを使用して、ソース コード ファイルをコンパイルします。 オプション名の後に、コロンと、キー ファイルの名前を追加します。 コマンド ライン コンパイラを使用する場合は、ソース コード ファイルを格納するディレクトリにキー ファイルをコピーできます。 + + 遅延署名については、「[アセンブリへの遅延署名](../../../docs/framework/app-domains/delay-sign-assembly.md)」を参照してください。 + + 次の例は、C\# コンパイラを使用し、アセンブリ `UtilityLibrary.dll` にキー ファイル `sgKey.snk` を使用して厳密な名前で署名します。 + + ``` + csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk + ``` + +## 参照 + [厳密な名前付きアセンブリの作成と使用](../../../docs/framework/app-domains/create-and-use-strong-named-assemblies.md) + [方法 : 公開キーと秘密キーのキー ペアを作成する](../../../docs/framework/app-domains/how-to-create-a-public-private-key-pair.md) + [Al.exe \(アセンブリ リンカー\)](../../../docs/framework/tools/al-exe-assembly-linker.md) + [アセンブリへの遅延署名](../../../docs/framework/app-domains/delay-sign-assembly.md) + [アセンブリおよびマニフェストへの署名の管理](../Topic/Managing%20Assembly%20and%20Manifest%20Signing.md) + [\[署名\] ページ \(プロジェクト デザイナー\)](../Topic/Signing%20Page,%20Project%20Designer.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-unload-an-application-domain.md b/docs/framework/app-domains/how-to-unload-an-application-domain.md new file mode 100644 index 00000000000..6dfdc68a6ef --- /dev/null +++ b/docs/framework/app-domains/how-to-unload-an-application-domain.md @@ -0,0 +1,38 @@ +--- +title: "方法 : アプリケーション ドメインをアンロードする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Unload メソッド" + - "アプリケーション ドメイン、アンロード" + - "アンロード (アプリケーション ドメインの)" +ms.assetid: f356116d-e415-4f7c-a332-6e6a60227192 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法 : アプリケーション ドメインをアンロードする +アプリケーション ドメインの使用を終了したら、[System.AppDomain.Unload](frlrfSystemAppDomainClassUnloadTopic) メソッドを使用してアプリケーション ドメインをアンロードします。 **Unload** メソッドは、指定したアプリケーション ドメインを正常にシャットダウンします。 アンロード プロセス中は、新たなスレッドがアプリケーション ドメインにアクセスすることはできず、アプリケーション ドメイン固有のデータ構造体はすべて解放されます。 + + アプリケーション ドメインに読み込まれたアセンブリは削除されるため、以後は使用できません。 アプリケーション ドメイン内のアセンブリがドメインに中立である場合、アセンブリのデータは、プロセス全体がシャットダウンされるまでメモリに残ります。 プロセス全体をシャットダウンする以外に、ドメインに中立なアセンブリをアンロードする方法はありません。 アプリケーション ドメインのアンロード要求が機能しない場合は、 が生成されます。 + + `MyDomain` という新しいアプリケーション ドメインを作成し、所定の情報をコンソールに出力してから、アプリケーション ドメインをアンロードする例を次に示します。 このコードは、アンロードされたアプリケーション ドメインの表示名をコンソールに出力します。 このアクションによって例外が生成され、プログラムの末尾にある try ステートメントと catch ステートメントでこの例外が処理されます。 + +## 使用例 + [!code-cpp[System.AppDomain.Load#3](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.appdomain.load/cpp/source3.cpp#3)] + [!code-csharp[System.AppDomain.Load#3](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.appdomain.load/cs/source3.cs#3)] + [!code-vb[System.AppDomain.Load#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.appdomain.load/vb/source3.vb#3)] + +## 参照 + [Programming with Application Domains](http://msdn.microsoft.com/ja-jp/bd36055b-56bd-43eb-b4d8-820c37172131) + [方法 : アプリケーション ドメインを作成する](../../../docs/framework/app-domains/how-to-create-an-application-domain.md) + [アプリケーション ドメインの使用](../../../docs/framework/app-domains/use.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-view-assembly-contents.md b/docs/framework/app-domains/how-to-view-assembly-contents.md new file mode 100644 index 00000000000..9c2d644c62f --- /dev/null +++ b/docs/framework/app-domains/how-to-view-assembly-contents.md @@ -0,0 +1,97 @@ +--- +title: "方法 : アセンブリの内容を表示する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ マニフェスト、表示 (情報を)" + - "Ildasm.exe" + - "MSIL 逆アセンブラー" + - "アセンブリ [.NET Framework]、表示 (内容を)" + - "表示 (アセンブリ情報を)" + - "MSIL" + - "表示 (MSIL 情報を)" +ms.assetid: fb7baaab-4c0d-47ad-8fd3-4591cf834709 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 方法 : アセンブリの内容を表示する +[Ildasm.exe \(IL 逆アセンブラー\)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) を使用して、ファイル内の MSIL \(Microsoft Intermediate Language\) 情報を表示できます。 内容を調べる対象のファイルがアセンブリの場合、この情報には、アセンブリの属性とほかのモジュールおよびアセンブリへの参照が含まれることがあります。 この情報は、ファイルがアセンブリまたはアセンブリの一部かどうか、およびファイルにほかのモジュールまたはアセンブリへの参照があるかどうかを判断するために役立ちます。 + +### Ildasm.exe を使用してアセンブリの内容を表示するには + +1. コマンド \<プロンプト\> に **\[ildasm\]** の*アセンブリ名*。 たとえば、次のコマンドでは、`Hello.exe` アセンブリが逆アセンブルされます。 + + ``` + ildasm Hello.exe + ``` + +### アセンブリ マニフェストの情報を表示するには + +1. MSIL 逆アセンブラー ウィンドウで、マニフェストのアイコンをダブルクリックします。 + +## 使用例 + 次の例では、基本の "Hello, World" プログラムを使用します。 プログラムをコンパイルしてから、Ildasm.exe を使用して Hello.exe アセンブリを逆アセンブルし、アセンブリ マニフェストを参照します。 + + [!code-cpp[Conceptual.Assembly.Contents#1](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.assembly.contents/cpp/source.cpp#1)] + [!code-csharp[Conceptual.Assembly.Contents#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.assembly.contents/cs/source.cs#1)] + [!code-vb[Conceptual.Assembly.Contents#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.assembly.contents/vb/source.vb#1)] + + Hello.exe アセンブリに対して ildasm.exe コマンドを実行し、IL 逆アセンブラー ウィンドウでマニフェストのアイコンをダブルクリックすると、次の内容が出力されます。 + +``` + +// Metadata version: v4.0.30319 +.assembly extern mscorlib +{ + .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. + .ver 4:0:0:0 +} +.assembly Hello +{ + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx + 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows. + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.module Hello.exe +// MVID: {7C2770DB-1594-438D-BAE5-98764C39CCCA} +.imagebase 0x00400000 +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 // WINDOWS_CUI +.corflags 0x00000001 // ILONLY +// Image base: 0x00600000 + +``` + + 次の表は、例で使用した Hello.exe アセンブリのアセンブリ マニフェストにある各ディレクティブの説明です。 + +|ディレクティブ|説明| +|-------------|--------| +|**.assembly extern \<**の*アセンブリ名* **\>**|現在のモジュールによって参照される項目を含む別のアセンブリを指定します \(この例では `mscorlib`\)。| +|**.publickeytoken \<** *トークン* **\>**|参照されるアセンブリの実際のキーのトークンを指定します。| +|**.ver \<**の*バージョン番号* **\>**|参照されるアセンブリのバージョン番号を指定します。| +|**.assembly \<**の*アセンブリ名* **\>**|アセンブリ名を指定します。| +|**.hash algorithm \<** *int32 値* **\>**|使用されるハッシュ アルゴリズムを指定します。| +|**.ver \<**の*バージョン番号* **\>**|アセンブリのバージョン番号を指定します。| +|**.module \<**の*ファイル名* **\>**|アセンブリを構成するモジュールの名前を指定します。 この例では、アセンブリは 1 つのファイルだけで構成されています。| +|**.subsystem \<** *値* **\>**|プログラムが必要とするアプリケーション環境を指定します。 この例では、値 3 でこの実行可能ファイルがコンソールで実行されることを示します。| +|**.corflags**|現在メタデータ内で予約済みのフィールドです。| + + アセンブリ マニフェストは、アセンブリの内容に応じて、多くの異なるディレクティブを格納できます。 アセンブリ マニフェストに含まれる多様なディレクティブの一覧については、ヨーロッパ電子計算機工業会 \(ECMA : European Computer Manufacturer Association\) のドキュメント、特に「Partition II: Metadata Definition and Semantics」および「Partition III: CIL Instruction Set」を参照してください。 ドキュメントはオンラインで入手できます。; MSDN [ECMA C\# および共通言語基盤 \(CLI\) 標準](http://go.microsoft.com/fwlink/?LinkID=99212) および [" Standard ECMA\-335 \- Common Language Infrastructure \(CLI\)](http://go.microsoft.com/fwlink/?LinkID=65552) Standards \(Web サイトを参照してください。 + +## 参照 + [Application Domains and Assemblies](http://msdn.microsoft.com/ja-jp/433b04ae-4ba8-4849-9dbd-79194f240346) + [アプリケーション ドメインとアセンブリに関する方法のトピック](../../../docs/framework/app-domains/application-domains-and-assemblies-how-to-topics.md) + [Ildasm.exe \(IL 逆アセンブラー\)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) \ No newline at end of file diff --git a/docs/framework/app-domains/how-to-view-the-contents-of-the-gac.md b/docs/framework/app-domains/how-to-view-the-contents-of-the-gac.md new file mode 100644 index 00000000000..db1215f0be0 --- /dev/null +++ b/docs/framework/app-domains/how-to-view-the-contents-of-the-gac.md @@ -0,0 +1,43 @@ +--- +title: "方法 : グローバル アセンブリ キャッシュの内容を表示する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], グローバル アセンブリ キャッシュ" + - "GAC (グローバル アセンブリ キャッシュ), 表示 (内容を)" + - "Gacutil.exe" + - "グローバル アセンブリ キャッシュ ツール" + - "グローバル アセンブリ キャッシュ, 表示 (内容を)" + - "一覧 (グローバル アセンブリ キャッシュ内のアセンブリの)" + - "厳密な名前を付けたアセンブリ, グローバル アセンブリ キャッシュ" + - "表示 (グローバル アセンブリ キャッシュ内のアセンブリを)" +ms.assetid: c5f786a0-969b-4f14-9f02-e77c3384d9af +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法 : グローバル アセンブリ キャッシュの内容を表示する +[グローバル アセンブリ キャッシュ ツール \(Gacutil.exe\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) を使用すると、グローバル アセンブリ キャッシュの内容を表示できます。 + +### グローバル アセンブリ キャッシュ内のアセンブリの一覧を表示するには、次のようにします。 + +1. [Visual Studio コマンド プロンプト](../../../docs/framework/tools/developer-command-prompt-for-vs.md)で次のコマンドを入力します。 + + **gacutil \-l** + または + **gacutil \/l** + + 以前のバージョンの .NET Framework では、Windows のシェル拡張機能である [Shfusion.dll](http://msdn.microsoft.com/ja-jp/0d9464cf-ddba-4ca9-bbec-f678fb58f380) により、エクスプローラーでグローバル アセンブリ キャッシュを表示することができました。 [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、Shfusion.dll は廃止されましたが、互換性のために残されています。 + +## 参照 + [アセンブリとグローバル アセンブリ キャッシュの使用](../../../docs/framework/app-domains/working-with-assemblies-and-the-gac.md) + [Gacutil.exe \(グローバル アセンブリ キャッシュ ツール\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) \ No newline at end of file diff --git a/docs/framework/app-domains/index.md b/docs/framework/app-domains/index.md new file mode 100644 index 00000000000..16449f6c3b4 --- /dev/null +++ b/docs/framework/app-domains/index.md @@ -0,0 +1,50 @@ +--- +title: "アプリケーション ドメインとアセンブリを使用したプログラミング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション ドメイン, プログラミング" + - "アセンブリ [.NET Framework], プログラミング" + - "プログラミング (アプリケーション ドメインの)" + - "プログラミング (アセンブリの)" +ms.assetid: 96d3b8e3-bef8-4da0-9a81-9841e23a94e9 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# アプリケーション ドメインとアセンブリを使用したプログラミング +Microsoft Internet Explorer、ASP.NET、Windows シェルなどのホストは、共通言語ランタイムをプロセスに読み込み、そのプロセス内で[アプリケーション ドメイン](../../../docs/framework/app-domains/application-domains.md)を作成します。その後 .NET Framework アプリケーションを実行するときに、そのアプリケーション ドメインにユーザー コードを読み込んでコードを実行します。 通常は、アプリケーション ドメインの作成およびアセンブリへの読み込みはランタイム ホストで実行するため、考慮する必要はありません。 + + しかし、共通言語ランタイムをホストするアプリケーションを作成する場合、プログラムによってアンロードされるツールまたはコードを作成する場合、または実行時にアンロードおよび再読み込みできるプラグ可能なコンポーネントを作成する場合は、独自のアプリケーション ドメインを作成します。 ランタイム ホストを作成しない場合でも、このセクションにある、アプリケーション ドメインとアプリケーション ドメインに読み込まれたアセンブリをどのように使用するかという説明は重要です。 + +## このセクションの内容 + [アプリケーション ドメインとアセンブリに関する方法のトピック](../../../docs/framework/app-domains/application-domains-and-assemblies-how-to-topics.md) + 概念を説明したドキュメントに用意されている、アプリケーション ドメインとアセンブリを利用したプログラミングに関するトピックへのリンクを示します。 + + [アプリケーション ドメインの使用](../../../docs/framework/app-domains/use.md) + アプリケーション ドメインを作成、構成、および使用する例を示します。 + + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) + アセンブリを作成し、署名し、その属性を設定する方法を説明します。 + +## 関連項目 + [動的メソッドおよびアセンブリの出力](../../../docs/framework/reflection-and-codedom/emitting-dynamic-methods-and-assemblies.md) + 動的アセンブリの作成方法を説明します。 + + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) + アセンブリの概念的な概要を説明します。 + + [アプリケーション ドメイン](../../../docs/framework/app-domains/application-domains.md) + アプリケーション ドメインの概念的な概要を説明します。 + + [リフレクションの概要](../../../docs/framework/reflection-and-codedom/reflection.md) + **Reflection** クラスを使って、アセンブリに関する情報を取得する方法を説明します。 \ No newline at end of file diff --git a/docs/framework/app-domains/media/assemblyover1.gif b/docs/framework/app-domains/media/assemblyover1.gif new file mode 100644 index 00000000000..f359a97e5eb Binary files /dev/null and b/docs/framework/app-domains/media/assemblyover1.gif differ diff --git a/docs/framework/app-domains/media/assemblyover2.gif b/docs/framework/app-domains/media/assemblyover2.gif new file mode 100644 index 00000000000..15467ddede9 Binary files /dev/null and b/docs/framework/app-domains/media/assemblyover2.gif differ diff --git a/docs/framework/app-domains/media/assemblytypes.gif b/docs/framework/app-domains/media/assemblytypes.gif new file mode 100644 index 00000000000..cfee9fdc330 Binary files /dev/null and b/docs/framework/app-domains/media/assemblytypes.gif differ diff --git a/docs/framework/app-domains/media/versioningover.gif b/docs/framework/app-domains/media/versioningover.gif new file mode 100644 index 00000000000..10d4eb980f5 Binary files /dev/null and b/docs/framework/app-domains/media/versioningover.gif differ diff --git a/docs/framework/app-domains/multifile-assemblies.md b/docs/framework/app-domains/multifile-assemblies.md new file mode 100644 index 00000000000..f73f4aa89a0 --- /dev/null +++ b/docs/framework/app-domains/multifile-assemblies.md @@ -0,0 +1,50 @@ +--- +title: "マルチファイル アセンブリ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], マルチファイル" + - "アセンブリ マニフェスト, マルチファイル アセンブリ" + - "コード モジュール" + - "コマンド ライン コンパイラ" + - "コンパイル (アセンブリの)" + - "エントリ ポイント (アセンブリの)" + - "マルチファイル アセンブリ" +ms.assetid: 13509e73-db77-4645-8165-aad8dfaedff6 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# マルチファイル アセンブリ +マルチファイル アセンブリは、コマンド ライン コンパイラまたは Visual C\+\+ 付き [!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] を使用して作成できます。 アセンブリ内の 1 つのファイルでアセンブリ マニフェストを格納している必要があります。 また、アプリケーションを起動するアセンブリは、Main メソッドや WinMain メソッドなどのエントリ ポイントを含む必要があります。 + + たとえば、Client.cs と Stringer.cs の 2 つのコード モジュールを含むアプリケーションがあるとします。 Stringer.cs は、Client.cs 内のコードによって参照される `myStringer` 名前空間を作成します。 Client.cs は、アプリケーションのエントリ ポイントである `Main` メソッドを格納します。 この例で、この 2 つのコード モジュールをコンパイルしてから、アプリケーションを起動するためのアセンブリ マニフェストを格納する 3 番目のファイルを作成します。 アセンブリ マニフェストは、`Client` モジュールと `Stringer` モジュールの両方を参照します。 + +> [!NOTE] +> マルチファイル アセンブリは、アセンブリに複数のコード モジュールがある場合でも、1 つのエントリ ポイントしか持つことができません。 + + マルチファイル アセンブリの作成が必要になる理由は、いくつか考えられます。 + +- 異なる言語で記述された複数のモジュールを結合するため。 これは、マルチファイル アセンブリの作成が必要になる最も一般的な理由です。 + +- 必要な場合にしかダウンロードされないモジュールに使用頻度の低い型を配置することで、アプリケーションのダウンロードを最適化するため。 + + > [!NOTE] + > `` タグと Microsoft Internet Explorer を使用してダウンロードされるアプリケーションを作成する場合は、マルチファイル アセンブリを作成することが重要です。 この方法では、アセンブリは、アセンブリ マニフェストだけを格納するコードモジュールとは分けて作成します。 Internet Explorer は、最初にアセンブリ マニフェストをダウンロードしてから、その他の必要なモジュールまたはアセンブリをすべてダウンロードするためにワーカー スレッドを作成します。 アセンブリ マニフェストを格納するファイルのダウンロード中は、Internet Explorer はユーザーからの入力には応答しません。 アセンブリ マニフェストを格納するファイルが小さいほど、Internet Explorer が応答しない時間は短くなります。 + +- 複数の開発者が記述したコード モジュールを結合するため。 開発者は作成したコード モジュールを各自でコンパイルできます。しかしこの場合、すべてのモジュールを 1 つのマルチファイル アセンブリにするときには公開されない型が、パブリックな型として公開されてしまうことがあります。 + + アセンブリを作成した後は、アセンブリ マニフェストの格納ファイル、つまりアセンブリに署名したり、ファイルおよびアセンブリに厳密な名前を付けてグローバル アセンブリ キャッシュに配置したりできます。 + +## 参照 + [方法 : マルチファイル アセンブリをビルドする](../../../docs/framework/app-domains/how-to-build-a-multifile-assembly.md) + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/programming-with-assemblies.md b/docs/framework/app-domains/programming-with-assemblies.md new file mode 100644 index 00000000000..14994ca42cc --- /dev/null +++ b/docs/framework/app-domains/programming-with-assemblies.md @@ -0,0 +1,91 @@ +--- +title: "アセンブリを使用したプログラミング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], プログラミング" + - "プログラミング (アセンブリの)" +ms.assetid: 25918b15-701d-42c7-95fc-c290d08648d6 +caps.latest.revision: 18 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 18 +--- +# アセンブリを使用したプログラミング +アセンブリは .NET Framework のビルド ブロックであり、配置、バージョン管理、再利用、アクティブ化のスコープの指定、およびセキュリティ アクセス許可の基本単位となります。 共通言語ランタイムは、型の実装に関して必要な情報をアセンブリから取得します。 アセンブリは、相互に連携して 1 つの論理的な機能単位を形成するように構築された型やリソースの集合です。 共通言語ランタイムにとって、型はアセンブリのコンテキストの外部には存在しません。 + + このセクションでは、モジュールの作成、モジュールからのアセンブリの作成、キー ペアの作成、厳密な名前でのアセンブリへの署名、およびグローバル アセンブリ キャッシュへのアセンブリのインストールについて説明します。 また、このセクションでは、[MSIL 逆アセンブラー \(Ildasm.exe\)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) を使用したアセンブリ マニフェスト情報の表示方法についても説明します。 + +> [!NOTE] +> .NET Framework Version 2.0 以降では、現在読み込まれているランタイムよりもバージョン番号が新しい .NET Framework のバージョンでコンパイルされたアセンブリを、ランタイムが読み込まないようになりました。 これに該当するのは、バージョン番号のメジャー部分とマイナー部分を組み合わせた番号です。 + +## このセクションの内容 + [アセンブリの作成](../../../docs/framework/app-domains/create-assemblies.md) + シングルファイル アセンブリとマルチファイル アセンブリの概要を説明します。 + + [アセンブリ名](../../../docs/framework/app-domains/assembly-names.md) + アセンブリの名前付けの概要を説明します。 + + [方法 : アセンブリの完全修飾名を特定する](../../../docs/framework/app-domains/how-to-determine-assembly-fully-qualified-name.md) + アセンブリの完全修飾名を決定する方法を説明します。 + + [イントラネット アプリケーションの完全信頼での実行](../../../docs/framework/app-domains/running-intranet-applications-in-full-trust.md) + イントラネット共有で完全に信頼されているアセンブリのレガシ セキュリティ ポリシーを指定する方法を説明します。 + + [アセンブリの場所](../../../docs/framework/app-domains/assembly-location.md) + アセンブリを配置する場所の概要を説明します。 + + [方法: シングルファイル アセンブリをビルドする](../../../docs/framework/app-domains/how-to-build-a-single-file-assembly.md) + シングルファイル アセンブリの作成方法を説明します。 + + [マルチファイル アセンブリ](../../../docs/framework/app-domains/multifile-assemblies.md) + マルチファイル アセンブリを作成する理由を説明します。 + + [方法 : マルチファイル アセンブリをビルドする](../../../docs/framework/app-domains/how-to-build-a-multifile-assembly.md) + マルチファイル アセンブリの作成方法を説明します。 + + [アセンブリ属性の設定](../../../docs/framework/app-domains/set-assembly-attributes.md) + アセンブリ属性とその設定方法を説明します。 + + [厳密な名前付きアセンブリの作成と使用](../../../docs/framework/app-domains/create-and-use-strong-named-assemblies.md) + 厳密な名前を使用してアセンブリに署名する方法とその理由について、具体的な手順を交えて説明します。 + + [アセンブリへの遅延署名](../../../docs/framework/app-domains/delay-sign-assembly.md) + アセンブリに遅延署名する方法を説明します。 + + [アセンブリとグローバル アセンブリ キャッシュの使用](../../../docs/framework/app-domains/working-with-assemblies-and-the-gac.md) + グローバル アセンブリ キャッシュにアセンブリを追加する方法とその理由について、具体的な手順を交えて説明します。 + + [方法 : アセンブリの内容を表示する](../../../docs/framework/app-domains/how-to-view-assembly-contents.md) + MSIL 逆アセンブラー \(Ildasm.exe\) を使用したアセンブリ内容の表示方法を説明します。 + + [共通言語ランタイムでの型の転送](../../../docs/framework/app-domains/type-forwarding-in-the-common-language-runtime.md) + 型の転送を使用して、既存のアプリケーションを壊すことなく型を別のアセンブリに移動させる方法について説明します。 + +## 関連項目 + + アセンブリを表す .NET Framework クラス。 + +## 関連項目 + [方法 : アセンブリから型およびメンバーの情報を取得する](../../../docs/framework/app-domains/how-to-obtain-type-and-member-information-from-an-assembly.md) + アセンブリから型情報などの情報をプログラムによって取得する方法を説明します。 + + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) + 共通言語ランタイムアセンブリの概念的な概要を説明します。 + + [アセンブリのバージョン管理](../../../docs/framework/app-domains/assembly-versioning.md) + アセンブリのバインディングと、 属性および 属性について概要を説明します。 + + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + バインディング要求を満たすために使用するアセンブリを、ランタイムが決定する方法を説明します。 + + [リフレクション](../../../docs/framework/reflection-and-codedom/reflection.md) + **Reflection** クラスを使って、アセンブリに関する情報を取得する方法を説明します。 \ No newline at end of file diff --git a/docs/framework/app-domains/resolve-assembly-loads.md b/docs/framework/app-domains/resolve-assembly-loads.md new file mode 100644 index 00000000000..c5fb0f27e0e --- /dev/null +++ b/docs/framework/app-domains/resolve-assembly-loads.md @@ -0,0 +1,86 @@ +--- +title: "アセンブリ読み込みの解決 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework]、解決 (読み込みを)" + - "アプリケーション ドメイン、読み込み (アセンブリを)" + - "解決 (アセンブリ読み込みを)" + - "アセンブリ [.NET Framework]、読み込み" + - "アプリケーション ドメイン、解決 (アセンブリ読み込みを)" +ms.assetid: 5099e549-f4fd-49fb-a290-549edd456c6a +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# アセンブリ読み込みの解決 +.NET Framework には、アセンブリの読み込みをより細かく制御する必要があるアプリケーション向けに イベントが用意されています。 このイベントを処理することにより、アプリケーションでは、アセンブリを通常のプローブ パス以外から読み込みコンテキストに読み込んだり、読み込むアセンブリのバージョンを複数選択したり、動的アセンブリを生成して返したりすることができます。 このトピックでは、 イベントの処理に関するガイダンスを示します。 + +> [!NOTE] +> リフレクション専用コンテキストでアセンブリの読み込みを解決する場合は、代わりに イベントを使用します。 + +## AssemblyResolve イベントの動作 + イベントのハンドラーを登録すると、ランタイムで名前によるアセンブリへのバインドに失敗した場合に、必ずこのハンドラーが呼び出されます。 たとえば、ユーザー コードから次のメソッドを呼び出すと、 イベントが発生することがあります。 + +- 読み込むアセンブリの表示名を表す文字列 \( プロパティによって返される文字列\) を最初の引数として指定する メソッド オーバーロードまたは メソッド オーバーロード。 + +- 読み込むアセンブリを識別する オブジェクトを最初の引数として指定する メソッド オーバーロードまたは メソッド オーバーロード。 + +- メソッド オーバーロード。 + +- 別のアプリケーション ドメインのオブジェクトをインスタンス化する または メソッド オーバーロード。 + +### イベント ハンドラーで実行する処理 + イベントのハンドラーは、読み込むアセンブリの表示名を プロパティで受け取ります。 アセンブリ名を認識できない場合、ハンドラーは null \(Visual Basic の場合は `Nothing`、Visual C\+\+ の場合は `nullptr`\) を返します。 + + アセンブリ名を認識すると、ハンドラーは要求を満たすアセンブリを読み込んで返すことができます。 サンプルのシナリオをいくつか示します。 + +- アセンブリのバージョンの場所がわかっている場合、 メソッドまたは メソッドを使用してアセンブリを読み込み、正常に読み込まれた場合はそのアセンブリを返すことができます。 + +- アセンブリがバイト配列として格納されているデータベースにアクセスできる場合、バイト配列を受け取るいずれかの メソッド オーバーロードを使用してバイト配列を読み込むことができます。 + +- 動的アセンブリを生成して返すことができます。 + +> [!NOTE] +> このハンドラーでアセンブリを読み込むときは、読み込み元コンテキストまたは読み込みコンテキストに読み込むか、コンテキストなしで読み込む必要があります。 または メソッドを使用してリフレクション専用コンテキストにアセンブリを読み込もうとすると、 イベントを発生させた読み込みは失敗します。 + + イベント ハンドラーは、適切なアセンブリを返す必要があります。 ハンドラーでは、 プロパティの値を コンストラクターに渡すことによって、要求されたアセンブリの表示名を解析できます。 [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、 プロパティを使用して、現在の要求が別のアセンブリと依存関係にあるかどうかを確認できます。 この情報は、依存関係を満たすアセンブリを識別するうえで役立ちます。 + + イベント ハンドラーは、要求されたバージョンとは異なるバージョンのアセンブリを返すことがあります。 + + ほとんどの場合、ハンドラーによって返されるアセンブリは、ハンドラーが読み込んだコンテキストに関係なく、読み込みコンテキストで返されます。 たとえば、ハンドラーが メソッドを使用して読み込み元コンテキストにアセンブリを読み込んだ場合、ハンドラーからアセンブリが返されるときは読み込みコンテキストで返されます。 ただし、次の場合は、アセンブリがハンドラーからコンテキストなしで返されます。 + +- ハンドラーがコンテキストなしでアセンブリを読み込んだ場合。 + +- プロパティが null でない場合。 + +- 要求元のアセンブリ \( プロパティによって返されるアセンブリ\) がコンテキストなしで読み込まれている場合。 + + コンテキストの詳細については、 メソッド オーバーロードのトピックを参照してください。 + + 同じアセンブリの複数のバージョンを同じアプリケーション ドメインに読み込むこともできますが、 型の割り当てで問題が生じる可能性があるため、この方法はお勧めしません。 「[アセンブリの読み込みのベスト プラクティス](../../../docs/framework/deployment/best-practices-for-assembly-loading.md)」を参照してください。 + +### イベント ハンドラーで実行すべきでない処理 + イベントを処理する際の基本的なルールとして、認識できないアセンブリは返さないようにしてください。 ハンドラーを記述するときは、このイベントが発生する原因となる可能性があるアセンブリを把握しておく必要があります。 それ以外のアセンブリについては、null を返すようにしてください。 + +> [!IMPORTANT] +> [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降では、 イベントはサテライト アセンブリに対して発生します。 この変更は、以前のバージョンの .NET Framework 用に記述されたイベント ハンドラーで、すべてのアセンブリ読み込み要求を解決しようとする場合に影響します。 認識できないアセンブリを無視するイベント ハンドラーには、この変更による影響はありません。それらのイベント ハンドラーは null を返し、通常のフォールバック機構に従います。 + + イベント ハンドラーでアセンブリを読み込むときに、 イベントを再帰的に発生させる可能性がある メソッド オーバーロードまたは メソッド オーバーロードは使用しないでください。これを使用すると、スタック オーバーフローが発生する可能性があります \(前述の一覧を参照してください\)。これは、読み込み要求の例外処理を指定した場合でも発生します。すべてのイベント ハンドラーから制御が戻るまでは例外がスローされないからです。 したがって、次のコードでは、`MyAssembly` が見つからないとスタック オーバーフローが発生します。 + + [!code-cpp[AssemblyResolveRecursive#1](../../../samples/snippets/cpp/VS_Snippets_CLR/assemblyresolverecursive/cpp/example.cpp#1)] + [!code-csharp[AssemblyResolveRecursive#1](../../../samples/snippets/csharp/VS_Snippets_CLR/assemblyresolverecursive/cs/example.cs#1)] + [!code-vb[AssemblyResolveRecursive#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/assemblyresolverecursive/vb/example.vb#1)] + +## 参照 + [アセンブリの読み込みのベスト プラクティス](../../../docs/framework/deployment/best-practices-for-assembly-loading.md) + [アプリケーション ドメインの使用](../../../docs/framework/app-domains/use.md) \ No newline at end of file diff --git a/docs/framework/app-domains/retrieve-setup-information.md b/docs/framework/app-domains/retrieve-setup-information.md new file mode 100644 index 00000000000..8077b96c69b --- /dev/null +++ b/docs/framework/app-domains/retrieve-setup-information.md @@ -0,0 +1,43 @@ +--- +title: "アプリケーション ドメインからのセットアップ情報の取得 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "AppDomainSetup オブジェクト" + - "アプリケーション ドメイン, 取得 (セットアップ情報を)" + - "取得 (セットアップ情報を)" +ms.assetid: 5cdb12ae-1e37-4a62-8ec7-93d6dcc6e8d9 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# アプリケーション ドメインからのセットアップ情報の取得 +アプリケーション ドメインの各インスタンスは、プロパティと 情報で構成されます。 クラスを使用して、アプリケーション ドメインからセットアップ情報を取得できます。 このクラスは、アプリケーション ドメインについての構成情報を取得するいくつかのメンバーを提供します。 + + アプリケーション ドメインの **AppDomainSetup** オブジェクトを問い合わせて、アプリケーション ドメインの作成時に渡されたセットアップ情報を取得することもできます。 + + 新しいアプリケーション ドメインを作成し、いくつかのメンバー値をコンソールに出力する例を次に示します。 + + [!code-cpp[AppDomain_Setup#2](../../../samples/snippets/cpp/VS_Snippets_CLR/AppDomain_Setup/CPP/source2.cpp#2)] + [!code-csharp[AppDomain_Setup#2](../../../samples/snippets/csharp/VS_Snippets_CLR/AppDomain_Setup/CS/source2.cs#2)] + [!code-vb[AppDomain_Setup#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AppDomain_Setup/VB/source2.vb#2)] + + アプリケーション ドメインのセットアップ情報を設定してから取得する例を次に示します。 `AppDomain.SetupInformation.ApplicationBase` は構成情報を取得します。 + + [!code-cpp[AppDomain_Setup#3](../../../samples/snippets/cpp/VS_Snippets_CLR/AppDomain_Setup/CPP/source3.cpp#3)] + [!code-csharp[AppDomain_Setup#3](../../../samples/snippets/csharp/VS_Snippets_CLR/AppDomain_Setup/CS/source3.cs#3)] + [!code-vb[AppDomain_Setup#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AppDomain_Setup/VB/source3.vb#3)] + +## 参照 + [Hosting Overview](http://msdn.microsoft.com/ja-jp/ea527626-99e3-4995-81c4-c8f3e60eb6d5) + [Programming with Application Domains](http://msdn.microsoft.com/ja-jp/bd36055b-56bd-43eb-b4d8-820c37172131) + [アプリケーション ドメインの使用](../../../docs/framework/app-domains/use.md) \ No newline at end of file diff --git a/docs/framework/app-domains/running-intranet-applications-in-full-trust.md b/docs/framework/app-domains/running-intranet-applications-in-full-trust.md new file mode 100644 index 00000000000..16f69478888 --- /dev/null +++ b/docs/framework/app-domains/running-intranet-applications-in-full-trust.md @@ -0,0 +1,43 @@ +--- +title: "イントラネット アプリケーションの完全信頼での実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "完全信頼, 実行 (イントラネット アプリケーションを)" + - "イントラネット アプリケーション, 実行 (完全信頼で)" + - "実行 (イントラネット アプリケーションを完全信頼で)" +ms.assetid: ee13c0a8-ab02-49f7-b8fb-9eab16c6c4f0 +caps.latest.revision: 20 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 20 +--- +# イントラネット アプリケーションの完全信頼での実行 +.NET Framework Version 3.5 Service Pack 1 \(SP1\) 以降では、アプリケーションとライブラリ アセンブリを、完全に信頼されているアセンブリとしてネットワーク共有から実行できるようになりました。 イントラネットの共有から読み込まれるアセンブリには、 ゾーンの証拠が自動的に追加されます。 この証拠はアセンブリに対し、コンピューター上にあるアセンブリと同じ許可セット \(通常は完全信頼\) を付与します。 この機能は、ホスト上で実行するように設計されている ClickOnce アプリケーションには適用されません。 + +## ライブラリ アセンブリの規則 + ネットワーク共有から実行可能ファイルによって読み込まれるアセンブリには、次の規則が適用されます。 + +- ライブラリ アセンブリは、実行可能なアセンブリと同じフォルダーに存在する必要があります。 サブフォルダーにあるアセンブリや、別のパスで参照されるアセンブリには、完全信頼の許可セットは付与されません。 + +- 実行可能ファイルがアセンブリを遅延読み込みする場合、その実行可能ファイルの起動に使用したのと同じパスを使用する必要があります。 たとえば、共有の\\\\の*network\-computer*の\\*share* がドライブ文字にマップされ、実行可能ファイルを実行すると、そのパスから使用して実行可能ファイルによって読み込まれるアセンブリは、ネットワーク パス、完全信頼が付与されません。 ゾーンでアセンブリを遅延読み込みするには、実行可能ファイルがドライブ文字のあるパスを使用している必要があります。 + +## 以前のイントラネット ポリシーの復元 + .NET Framework の以前のバージョンでは、共有アセンブリには ゾーンの証拠が付与されていました。 共有上のアセンブリに完全な信頼を付与するには、コード アクセス セキュリティ ポリシーを指定する必要がありました。 + + この新しい動作は、イントラネット アセンブリの既定の動作です。 コンピューターのすべてのアプリケーションに適用されるレジストリ キー値を設定することで、以前の 証拠が使用される動作に戻すことができます。 この手順は、32 ビット コンピューターと 64 ビット コンピューターで異なります。 + +- 32 ビット コンピューターでは、システム レジストリの HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\.NETFramework キーの下にサブキーを作成します。 キーの名前は LegacyMyComputerZone とし、DWORD 値 1 を設定します。 + +- 64 ビット コンピューターでは、システム レジストリの HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\.NETFramework キーの下にサブキーを作成します。 キーの名前は LegacyMyComputerZone とし、DWORD 値 1 を設定します。 HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\.NETFramework キー下に同じサブキーを作成します。 + +## 参照 + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/set-assembly-attributes.md b/docs/framework/app-domains/set-assembly-attributes.md new file mode 100644 index 00000000000..d6b1a0f2943 --- /dev/null +++ b/docs/framework/app-domains/set-assembly-attributes.md @@ -0,0 +1,92 @@ +--- +title: "アセンブリ属性の設定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 属性" + - "アセンブリのバインディング, 属性" + - "アセンブリ マニフェスト, 属性" +ms.assetid: 36a98a81-b5b5-4c19-912a-11f91eff7f4e +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# アセンブリ属性の設定 +アセンブリの属性は、アセンブリに関する情報を提供する値です。 属性は、次のような情報に分類されます。 + +- アセンブリ ID 属性。 + +- 情報属性。 + +- アセンブリ マニフェスト属性。 + +- 厳密な名前の属性。 + +## アセンブリ ID 属性 + アセンブリは、名前、バージョン、およびカルチャの 3 つの属性と、適用される場合は厳密な名前によって識別されます。 これらの属性は、アセンブリの完全な名前を形成し、コード内でアセンブリを参照するときに必要になります。 属性を使用して、アセンブリのバージョンとのカルチャを設定できます。 コンパイラまたは [アセンブリ リンカー \(Al.exe\)](../../../docs/framework/tools/al-exe-assembly-linker.md) は、アセンブリの作成時に、アセンブリ マニフェストを含むファイルに基づいて名前の値を設定します。 + + バージョン属性とカルチャ属性について次の表で説明します。 + +|アセンブリ ID 属性|説明| +|-----------------|--------| +||アセンブリがサポートするカルチャを示す列挙フィールド。 アセンブリがカルチャに依存しないように指定することもできます。その場合は、アセンブリが既定のカルチャのリソースを格納することを意味します。 **Note:** ランタイムは、カルチャ属性が null に設定されていないすべてのアセンブリを、サテライト アセンブリとして扱います。 そのようなアセンブリには、サテライト アセンブリ バインディング規則が適用されます。 詳細については、「[ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md)」を参照してください。| +||アセンブリを並列で実行できるかどうかなどのアセンブリ属性を設定する値。| +||*major*.*minor*.*build*.*revision* 形式の数値 \(たとえば、2.4.0.0\)。 共通言語ランタイムは、この値を使用して、厳密な名前付きアセンブリでのバインディング操作を実行します。 **Note:** 属性がアセンブリに適用されない場合、 属性によって指定されたバージョン番号が 、および の各プロパティで使用されます。| + + バージョン属性とカルチャ属性をアセンブリに適用する方法を次のコード例で示します。 + + [!code-cpp[AssemblyDelaySignAttribute#3](../../../samples/snippets/cpp/VS_Snippets_CLR/AssemblyDelaySignAttribute/cpp/source2.cpp#3)] + [!code-csharp[AssemblyDelaySignAttribute#3](../../../samples/snippets/csharp/VS_Snippets_CLR/AssemblyDelaySignAttribute/cs/source2.cs#3)] + [!code-vb[AssemblyDelaySignAttribute#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AssemblyDelaySignAttribute/vb/source2.vb#3)] + +## 情報属性 + 情報属性は、追加の会社情報または製品情報をアセンブリに指定する場合に使用できます。 アセンブリに適用できる情報属性について、次の表で説明します。 + +|情報属性|説明| +|----------|--------| +||会社名を指定する文字列値。| +||著作権情報を指定する文字列値。| +||Win32 ファイル バージョン番号を指定する文字列値。 通常、この属性の既定値はアセンブリ バージョンです。| +||完全な製品バージョン番号など、共通言語ランタイムによって使用されないバージョン情報を指定する文字列値。 **Note:** この属性をアセンブリに適用した場合は、 プロパティを使用して、この属性で指定された文字列を実行時に取得できます。 この文字列は、 プロパティと プロパティによって提供されるパスとレジストリ キーにも使用されます。| +||製品情報を指定する文字列値。| +||商標情報を指定する文字列値。| + + これらの属性は、アセンブリの \[Windows のプロパティ\] ページに表示できます。また、独自の Win32 リソース ファイルを指定するために、**\/win32res** コンパイラ オプションを使用してこれらの属性をオーバーライドすることもできます。 + +## アセンブリ マニフェスト属性 + アセンブリ マニフェストの属性を使用すると、タイトル、説明、既定のエイリアス、構成などの情報をアセンブリ マニフェストに指定できます。 アセンブリ マニフェスト属性について、次の表で説明します。 + +|アセンブリ マニフェスト属性|説明| +|--------------------|--------| +||Retail \(製品版\) や Debug \(デバッグ\) など、アセンブリの構成を示す文字列値。 ランタイムはこの値を使用しません。| +||アセンブリの参照に使用する既定のエイリアスを指定する文字列値。 この値は、アセンブリ自体の名前がフレンドリ名ではない場合 \(GUID 値の場合など\) に、フレンドリ名を指定します。 この値は、完全なアセンブリ名の短い形式としても使用できます。| +||アセンブリの特性と目的を要約した短い説明を指定する文字列値。| +||アセンブリのフレンドリ名を指定する文字列値。 たとえば、comdlg という名前のアセンブリに Microsoft Common Dialog Control というタイトルを付けることができます。| + +## 厳密な名前の属性 + 厳密な名前の属性を使用すると、アセンブリに厳密な名前を設定できます。 厳密な名前の属性について、次の表で説明します。 + +|厳密な名前の属性|説明| +|--------------|--------| +||遅延署名が使用されていることを示すブール値。| +||この属性のコンストラクターにパラメーターとして渡される公開キー \(遅延署名を使用する場合\) または公開キーと秘密キーの両方を格納するファイルの名前を示す文字列値。 なお、このファイル名は、ソース ファイルのパスではなく出力ファイルのパスから見た相対パス名 \(.exe または .dll\) です。| +||この属性のコンストラクターにパラメーターとして渡されるキー ペアを格納するキー コンテナーを示します。| + + 次のコード例では、遅延署名を使用し、公開キー ファイル `myKey.snk` を使用する厳密な名前付きアセンブリを作成する場合に適用する属性を示します。 + + [!code-cpp[AssemblyDelaySignAttribute#4](../../../samples/snippets/cpp/VS_Snippets_CLR/AssemblyDelaySignAttribute/cpp/source2.cpp#4)] + [!code-csharp[AssemblyDelaySignAttribute#4](../../../samples/snippets/csharp/VS_Snippets_CLR/AssemblyDelaySignAttribute/cs/source2.cs#4)] + [!code-vb[AssemblyDelaySignAttribute#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AssemblyDelaySignAttribute/vb/source2.vb#4)] + +## 参照 + [アセンブリの作成](../../../docs/framework/app-domains/create-assemblies.md) + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/shadow-copy-assemblies.md b/docs/framework/app-domains/shadow-copy-assemblies.md new file mode 100644 index 00000000000..c4c3c922de4 --- /dev/null +++ b/docs/framework/app-domains/shadow-copy-assemblies.md @@ -0,0 +1,90 @@ +--- +title: "アセンブリのシャドウ コピー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション ドメイン, アセンブリのシャドウ コピー" + - "アセンブリ [.NET Framework], シャドウ コピー" + - "アセンブリのシャドウ コピー" +ms.assetid: de8b8759-fca7-4260-896b-5a4973157672 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# アセンブリのシャドウ コピー +シャドウ コピーにより、アプリケーション ドメインをアンロードしなくても、アプリケーション ドメインで使用されるアセンブリを更新できます。 これは、ASP.NET サイトなど、継続的に使用可能であることが必要なアプリケーションで特に役立ちます。 + +> [!IMPORTANT] +> シャドウ コピーは、[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリではサポートされていません。 + + 共通言語ランタイムは、アセンブリがアンロードされるまでファイルを更新できないように、アセンブリがロードされるときにアセンブリ ファイルをロックします。 アプリケーション ドメインからアセンブリをアンロードする唯一の方法は、アプリケーション ドメインをアンロードすることなので、通常の状況では、アセンブリを使用しているすべてのアプリケーション ドメインがアンロードされるまで、そのアセンブリをディスク上で更新することはできません。 + + ファイルをシャドウ コピーするようにアプリケーション ドメインが構成されると、アプリケーション パスからのアセンブリが別の場所にコピーされて、その場所から読み込まれます。 コピーはロックされますが、元のアセンブリ ファイルはロック解除されて、更新可能になります。 + +> [!IMPORTANT] +> シャドウ コピーが可能な唯一のアセンブリは、アプリケーション ドメインの構成時に または プロパティで指定された、アプリケーション ディレクトリやそのサブディレクトリに保存されているものです。 グローバル アセンブリ キャッシュに格納されているアセンブリは、シャドウ コピーされません。 + + この記事は、次のセクションで構成されています。 + +- 「[シャドウ コピーの有効化と使用](#EnablingAndUsing)」では、シャドウ コピーの基本的な使用方法と使用可能なオプションについて説明します。 + +- 「[起動時のパフォーマンス](#StartupPerformance)」では、起動時のパフォーマンスを改善するために [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] でシャドウ コピーに加えられた変更、および以前のバージョンの動作に戻す方法について説明します。 + +- 「[廃止メソッド](#ObsoleteMethods)」では、[!INCLUDE[dnprdnlong](../../../includes/dnprdnlong-md.md)] でシャドウ コピーを制御するためにプロパティとメソッドに加えられた変更について説明します。 + + +## シャドウ コピーの有効化と使用 + クラスのプロパティを以下のように使用して、シャドウ コピー用のアプリケーション ドメインを構成できます。 + +- プロパティを文字列値に `"true"` に設定して、シャドウ コピーを有効にします。 + + 既定では、この設定は、アプリケーション パス内のすべてのアセンブリを、それらが読み込まれる前にダウンロード キャッシュにコピーします。 これは、他のコンピューターからダウンロードしたファイルを格納するために共通言語ランタイムによって保守されるものと同じキャッシュで、不要になったときには、共通言語ランタイムが自動的にファイルを削除します。 + +- 必要に応じて、 プロパティと プロパティを使用して、シャドウ コピーしたファイルのカスタムの場所を設定します。 + + この場所の基本パスは、 プロパティに プロパティをサブディレクトリとして連結することにより形成されます。 アセンブリは、基本パス自体ではなく、このパスのサブディレクトリにシャドウ コピーされます。 + + > [!NOTE] + > プロパティが設定されていない場合、 プロパティは無視されて、ダウンロード キャッシュが使用されます。 例外をスローすることはありません。 + + カスタムの場所を指定する場合は、不要になったときに、ディレクトリとコピー済みファイルをユーザーがクリーンアップする必要があります。 それらは自動的には削除されません。 + + シャドウ コピーされるファイル用にカスタムの場所を設定すると良いいくつかの理由があります。 アプリケーションが生成するコピーの数が多い場合は、シャドウ コピーされるファイル用にカスタムの場所を設定することができます。 ダウンロード キャッシュは有効期間ではなくサイズによって制限されるので、共通言語ランタイムが、まだ使用されているファイルを削除しようとする可能性があります。 カスタムの場所を設定するもう 1 つの状況は、アプリケーションを実行しているユーザーに、共通言語ランタイムがダウンロード キャッシュ用に使用するディレクトリの場所に対する書き込みアクセス権がない場合です。 + +- 必要に応じて、 プロパティを使用して、シャドウ コピーするアセンブリの数を制限します。 + + アプリケーション ドメインのシャドウ コピーを有効にすると、既定では、アプリケーション パス内の、つまり プロパティで指定されたディレクトリ内の、すべてのアセンブリがコピーされます。 シャドウ コピーするディレクトリのみを含む文字列を作成して、その文字列を プロパティに割り当てることにより、コピー操作を選択したディレクトリに制限できます。 ディレクトリをセミコロンで区切ります。 シャドウ コピーされるアセンブリは、選択したディレクトリ内のものだけです。 + + > [!NOTE] + > 文字列を プロパティに割り当てない場合、またはこのプロパティを `null` に設定した場合は、 プロパティで指定したディレクトリ内のすべてのアセンブリがシャドウ コピーされます。 + + > [!IMPORTANT] + > セミコロンは区切り文字なので、ディレクトリ パスにはセミコロンを含めないでください。 セミコロンのためのエスケープ文字はありません。 + + +## 起動時のパフォーマンス + シャドウ コピーを使用するアプリケーション ドメインを開始するときには、アプリケーション ディレクトリ内のアセンブリをシャドウ コピー ディレクトリにコピーしたり、既にその場所にある場合には検証したりするので、遅延が生じます。 [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] の前には、すべてのアセンブリを一時ディレクトリにコピーしていました。 各アセンブリを開いて、アセンブリ名を確認し、厳密な名前は検証しました。 各アセンブリを検査して、シャドウ コピーのディレクトリにあるコピーよりも最近に更新されていないかどうかを調べました。 更新されていた場合、それはシャドウ コピーのディレクトリにコピーしました。 最後に、一時コピーを破棄しました。 + + [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降は、起動時の既定の動作として、アプリケーション ディレクトリ内にある各アセンブリのファイルの日時を、シャドウ コピーのディレクトリ内にあるコピーのファイルの日時と直接比較します。 アセンブリが更新されている場合は、.NET Framework の以前のバージョンと同じ手順を使用してそれをコピーし、そうでない場合は、シャドウ コピーのディレクトリ内にあるコピーが読み込まれます。 + + 結果としてのパフォーマンスの改善は、アセンブリの変更頻度が小さく、通常はアセンブリの小さなサブセット内で変更が生じるようなアプリケーションで最大となります。 アプリケーション内のアセンブリの大部分が頻繁に変更される場合は、新しい既定動作によって、パフォーマンスが低下する可能性があります。 [\ element](../../../docs/framework/configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md) を構成ファイルに `enabled="false"` と共に追加することによって、.NET Framework の以前のバージョンの起動動作を復元できます。 + + +## 廃止メソッド + クラスには、アプリケーション ドメインでシャドウ コピーを制御するために使用できる などのいくつかのメソッドがありますが、これらは .NET Framework version 2.0 では廃止された機能としてマークされています。 シャドウ コピー用にアプリケーション ドメインを構成するには、 クラスのプロパティを使用することをお勧めします。 + +## 参照 + + + + + [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md) \ No newline at end of file diff --git a/docs/framework/app-domains/strong-named-assemblies.md b/docs/framework/app-domains/strong-named-assemblies.md new file mode 100644 index 00000000000..8403caebfea --- /dev/null +++ b/docs/framework/app-domains/strong-named-assemblies.md @@ -0,0 +1,54 @@ +--- +title: "厳密な名前付きアセンブリ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 厳密な名前を付けた" + - "厳密な名前を付けたアセンブリ, 厳密な名前付きアセンブリの概要" +ms.assetid: d4a80263-f3e0-4d81-9b61-f0cbeae3797b +caps.latest.revision: 14 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 厳密な名前付きアセンブリ +アセンブリの厳格な名前付けにより、アセンブリに対して一意の ID を作成し、アセンブリの競合を防ぐことができます。 + +## 厳格な名前付きのアセンブリを作成する方法 + 厳格な名前付きのアセンブリは、アセンブリと一緒に配布された公開キーに対応する秘密キーとアセンブリ自体を使用して生成されます。 アセンブリには、アセンブリ マニフェストが含まれます。ここには、アセンブリを構成するすべてのファイルの名前とハッシュが格納されています。 同じ厳格な名前を持つ複数のアセンブリは、同一である必要があります。 + + Visual Studio またはコマンド ライン ツールを使用して、アセンブリに厳格な名前を付けることができます。 詳細については、「[方法 : 厳密な名前でアセンブリに署名する](../../../docs/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name.md)」または「[Sn.exe \(厳密名ツール\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md)」を参照してください。 + + 厳格に名前付けされたアセンブリには、アセンブリの単純テキスト名、バージョン番号、カルチャ情報 \(省略可能\)、デジタル署名、および署名に使用する秘密キーに対応した公開キーが含まれています。 + +> [!WARNING] +> セキュリティに関しては、厳格な名前に依存しないでください。 厳格な名前は、一意の ID を提供するだけです。 + +## アセンブリに厳格な名前を付ける理由 + 厳密な名前付きのアセンブリを参照すると、バージョン管理や名前の一意性を保護できるなどの利点を期待できます。 厳密な名前付きのアセンブリは、一部のシナリオを有効にするために必要な、グローバル アセンブリ キャッシュにインストールできます。 + + 厳格な名前付きのアセンブリは次のシナリオで役立ちます。 + +- 独自のアセンブリを厳密な名前付きのアセンブリが参照できるようにする場合、または他の厳密な名前付きのアセンブリから独自のアセンブリへの `friend` アクセスを可能にする場合。 + +- 同じアセンブリのさまざまなバージョンにアプリがアクセスする必要がある場合。 これは、競合することなく同じアプリ ドメインで side\-by\-side の読み込みを実行するために、アセンブリのさまざまなバージョンが必要であることを意味します。 たとえば、同じ簡易名を持つアセンブリ内に API のさまざまな拡張子が存在する場合、厳格な名前付けはアセンブリの各バージョンに一意の ID を提供します。 + +- 独自のアセンブリを使用するアプリのパフォーマンスに悪影響を及ぼさないように、アセンブリをドメインに中立にする場合。 ドメイン中立のアセンブリはグローバル アセンブリ キャッシュにインストールされている必要があるため、この場合は厳密な名前を付ける必要があります。 + +- 発行者ポリシーを提供することにより、アプリへのサービスを集中管理する場合。これは、グローバル アセンブリ キャッシュにアセンブリがインストールされる必要があることを意味します。 + + オープン ソースの開発者が厳密な名前付きのアセンブリによる ID の利点を必要とする場合、アセンブリに関連付けられた秘密キーをソース コントロール システムにチェックインすることを検討してください。 + +## 参照 + [グローバル アセンブリ キャッシュ](../../../docs/framework/app-domains/gac.md) + [方法 : 厳密な名前でアセンブリに署名する](../../../docs/framework/app-domains/how-to-sign-an-assembly-with-a-strong-name.md) + [Sn.exe \(厳密名ツール\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md) + [厳密な名前付きアセンブリの作成と使用](../../../docs/framework/app-domains/create-and-use-strong-named-assemblies.md) \ No newline at end of file diff --git a/docs/framework/app-domains/type-forwarding-in-the-common-language-runtime.md b/docs/framework/app-domains/type-forwarding-in-the-common-language-runtime.md new file mode 100644 index 00000000000..37b480a929b --- /dev/null +++ b/docs/framework/app-domains/type-forwarding-in-the-common-language-runtime.md @@ -0,0 +1,54 @@ +--- +title: "共通言語ランタイムでの型の転送 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework]、型の転送" + - "型の転送" +ms.assetid: 51f8ffa3-c253-4201-a3d3-c4fad85ae097 +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# 共通言語ランタイムでの型の転送 +型の転送を使用すると、別のアセンブリに型を移動する際に、元のアセンブリを使用するアプリケーションを再コンパイルする必要がありません。 + + たとえば、`Utility.dll` というアセンブリ内の `Example` クラスをアプリケーションが使用しているとします。 `Utility.dll` の開発者がアセンブリをリファクタリングすることになり、その過程で `Example` クラスを別のアセンブリに移動します。 `Utility.dll` の前のバージョンが `Utility.dll` の新しいバージョンとそのコンパニオン アセンブリで置換されると、`Example` クラスを使用するアプリケーションは、新しいバージョンの `Utility.dll` で `Example` クラスを見つけられないために失敗します。 + + これを回避するために、`Utility.dll` の開発者は 属性を使用して、`Example` クラスに対する要求を転送します。 この属性が新しいバージョンの `Utility.dll` に適用されている場合は、`Example` クラスに対する要求が現在このクラスを含んでいるアセンブリに転送されます。 既存のアプリケーションは、再コンパイルを必要とすることなく正常に機能し続けます。 + +> [!NOTE] +> .NET Framework Version 2.0 では、Visual Basic で作成されたアセンブリから型を転送できません。 ただし、Visual Basic で作成されたアプリケーションでは、転送された型を使用できます。 つまり、アプリケーションが C\# または C\+\+ で作成されたアセンブリを使用している場合は、そのアセンブリの型が別のアセンブリに転送されても、Visual Basic アプリケーションは転送された型を使用できます。 + +## 型の転送 + 型の転送は 4 つの手順で行います。 + +1. 型のソース コードを、元のアセンブリから転送先のアセンブリに移動します。 + +2. 型の元の場所であるアセンブリで、移動された型に対して を追加します。 次のコードは、移動された `Example` という型の属性を示しています。 + + ```csharp + [assembly:TypeForwardedToAttribute(typeof(Example))] + ``` + + ```cpp# + [assembly:TypeForwardedToAttribute(Example::typeid)] + ``` + +3. 型の現在の場所であるアセンブリをコンパイルします。 + +4. 型の元の場所であるアセンブリを、型の現在の場所であるアセンブリへの参照を指定して再コンパイルします。 たとえば、C\# ファイルをコマンド ラインからコンパイルする場合は、[\/reference \(Import Metadata\)](../Topic/-reference%20\(C%23%20Compiler%20Options\).md) オプションを使用して型の現在の場所であるアセンブリを指定します。 C\+\+ では、ソース ファイルで [\#using](../Topic/%23using%20Directive%20\(C++\).md) ディレクティブを使用して、型の現在の場所であるアセンブリを指定します。 + +## 参照 + + [Type Forwarding \(C\+\+\/CLI\)](../Topic/Type%20Forwarding%20\(C++-CLI\).md) + [\#using ディレクティブ](../Topic/%23using%20Directive%20\(C++\).md) \ No newline at end of file diff --git a/docs/framework/app-domains/use-serviced-components-with-the-gac.md b/docs/framework/app-domains/use-serviced-components-with-the-gac.md new file mode 100644 index 00000000000..542620ef8f7 --- /dev/null +++ b/docs/framework/app-domains/use-serviced-components-with-the-gac.md @@ -0,0 +1,37 @@ +--- +title: "サービス コンポーネントとグローバル アセンブリ キャッシュの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], グローバル アセンブリ キャッシュ" + - "GAC (グローバル アセンブリ キャッシュ), サービス コンポーネント" + - "グローバル アセンブリ キャッシュ, サービス コンポーネント" + - "サービス コンポーネント, グローバル アセンブリ キャッシュ" +ms.assetid: 3423e5d9-234c-4571-8161-e35f6d130128 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 6 +--- +# サービス コンポーネントとグローバル アセンブリ キャッシュの使用 +サービス コンポーネント \(マネージ コード COM\+ コンポーネント\) は、グローバル アセンブリ キャッシュに配置する必要があります。 共通言語ランタイムと COM\+ サービスがグローバル アセンブリ キャッシュ内にないサービス コンポーネントを処理できるシナリオと、処理できないシナリオとがあります。 それぞれのシナリオを次に示します。 + +- COM\+ サーバー アプリケーションのサービス コンポーネントの場合、コンポーネントを含むアセンブリは、グローバル アセンブリ キャッシュ内にある必要があります。これは、Dllhost.exe がサービス コンポーネントを格納するディレクトリと同じディレクトリで実行されないためです。 + +- COM\+ ライブラリ アプリケーションのサービス コンポーネントの場合、ランタイムと COM\+ サービスは、現在のディレクトリ内を検索することによって、コンポーネントを含むアセンブリへの参照を解決できます。 この場合、アセンブリはグローバル アセンブリ キャッシュ内になくてもかまいません。 + +- ASP.NET アプリケーションのサービス コンポーネントの場合、状況は異なります。 サービス コンポーネントを含むアセンブリをアプリケーション ベースの bin ディレクトリに配置してオンデマンド登録を使用する場合、アセンブリはダウンロード キャッシュにシャドウとしてコピーされます。これは、ASP.NET がランタイムのシャドウ機能を利用するためです。 + +## 参照 + [How to: Create a Serviced Component](http://msdn.microsoft.com/ja-jp/7ec0b488-e5fc-46f2-a48d-1278ea4e301d) + [アセンブリとグローバル アセンブリ キャッシュの使用](../../../docs/framework/app-domains/working-with-assemblies-and-the-gac.md) + [Gacutil.exe \(グローバル アセンブリ キャッシュ ツール\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) + [Assembly Cache Viewer \(Shfusion.dll\)](http://msdn.microsoft.com/ja-jp/0d9464cf-ddba-4ca9-bbec-f678fb58f380) \ No newline at end of file diff --git a/docs/framework/app-domains/use.md b/docs/framework/app-domains/use.md new file mode 100644 index 00000000000..705e5ece0a7 --- /dev/null +++ b/docs/framework/app-domains/use.md @@ -0,0 +1,74 @@ +--- +title: "アプリケーション ドメインの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション ドメイン、バージョン情報" + - "共通言語ランタイム、アプリケーション ドメイン" + - "ランタイム、アプリケーション ドメイン" +ms.assetid: c6d99815-e022-4d2c-9420-1d7ab5b9d504 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# アプリケーション ドメインの使用 +アプリケーション ドメインは、共通言語ランタイムで使用する分離の単位です。 アプリケーション ドメインは、プロセスの内部で作成および実行します。 通常、アプリケーション ドメインはランタイム ホストによって作成されます。ランタイム ホストはアプリケーションの一種で、ランタイムをプロセスに読み込み、アプリケーション ドメイン内でユーザー コードを実行します。 ランタイム ホストは、プロセスと既定のアプリケーション ドメインを作成し、アプリケーション ドメイン内でマネージ コードを実行します。 ランタイム ホストには ASP.NET、Microsoft Internet Explorer、Windows シェルがあります。 + + ほとんどのアプリケーションでは、ランタイム ホストが必要なアプリケーション ドメインをすべて作成するため、独自のアプリケーション ドメインを作成する必要はありません。 ただし、アプリケーションでコードを分離する、または DLL を使用したりアンロードしたりする必要がある場合は、追加のアプリケーション ドメインを作成して構成できます。 + +## このセクションの内容 + [方法 : アプリケーション ドメインを作成する](../../../docs/framework/app-domains/how-to-create-an-application-domain.md) + アプリケーション ドメインをプログラムで作成する方法を説明します。 + + [方法 : アプリケーション ドメインをアンロードする](../../../docs/framework/app-domains/how-to-unload-an-application-domain.md) + アプリケーション ドメインをプログラムでアンロードする方法を説明します。 + + [方法 : アプリケーション ドメインを構成する](../../../docs/framework/app-domains/how-to-configure-an-application-domain.md) + アプリケーション ドメインの構成の概要を説明します。 + + [アプリケーション ドメインからのセットアップ情報の取得](../../../docs/framework/app-domains/retrieve-setup-information.md) + アプリケーション ドメインからセットアップ情報を取得する方法を説明します。 + + [方法 : アプリケーション ドメインにアセンブリを読み込む](../../../docs/framework/app-domains/how-to-load-assemblies-into-an-application-domain.md) + アプリケーション ドメインにアセンブリを読み込む方法を説明します。 + + [方法 : アセンブリから型およびメンバーの情報を取得する](../../../docs/framework/app-domains/how-to-obtain-type-and-member-information-from-an-assembly.md) + アセンブリに関する情報を取得する方法を説明します。 + + [アセンブリのシャドウ コピー](../../../docs/framework/app-domains/shadow-copy-assemblies.md) + シャドウ コピーによる使用中のアセンブリの更新、およびシャドウ コピーを設定する方法を説明します。 + + [方法: 初回例外通知を受け取る](../../../docs/framework/app-domains/how-to-receive-first-chance-exception-notifications.md) + 共通言語ランタイムが例外ハンドラーの検索を開始する前に、例外がスローされたことを知らせる通知を受け取る方法について説明します。 + + [アセンブリ読み込みの解決](../../../docs/framework/app-domains/resolve-assembly-loads.md) + イベントを使用してアセンブリの読み込みの失敗を解決する方法について説明します。 + +## 関連項目 + + アプリケーション ドメインを表します。 アプリケーション ドメインを作成および制御するためのメソッドを提供します。 + +## 関連項目 + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) + アセンブリの機能について概要を説明します。 + + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) + アセンブリを作成し、署名し、その属性を設定する方法を説明します。 + + [動的メソッドおよびアセンブリの出力](../../../docs/framework/reflection-and-codedom/emitting-dynamic-methods-and-assemblies.md) + 動的アセンブリの作成方法を説明します。 + + [アプリケーション ドメイン](../../../docs/framework/app-domains/application-domains.md) + アプリケーション ドメインの概念的な概要を説明します。 + + [リフレクションの概要](../../../docs/framework/reflection-and-codedom/reflection.md) + **Reflection** クラスを使って、アセンブリに関する情報を取得する方法を説明します。 \ No newline at end of file diff --git a/docs/framework/app-domains/working-with-assemblies-and-the-gac.md b/docs/framework/app-domains/working-with-assemblies-and-the-gac.md new file mode 100644 index 00000000000..72108f18ac2 --- /dev/null +++ b/docs/framework/app-domains/working-with-assemblies-and-the-gac.md @@ -0,0 +1,80 @@ +--- +title: "アセンブリとグローバル アセンブリ キャッシュの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アクセス制御リスト [.NET Framework]" + - "ACL [.NET Framework]" + - "アセンブリ [.NET Framework], グローバル アセンブリ キャッシュ" + - "GAC (グローバル アセンブリ キャッシュ), 利点" + - "グローバル アセンブリ キャッシュ, 利点" +ms.assetid: 8a18e5c2-d41d-49ef-abcb-7c27e2469433 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# アセンブリとグローバル アセンブリ キャッシュの使用 +あるアセンブリを複数のアプリケーションで共有する場合は、そのアセンブリをグローバル アセンブリ キャッシュ内にインストールできます。 共通言語ランタイムをインストールしている各コンピューターは、このコードをコンピューター全体で使用できます。 グローバル アセンブリ キャッシュは、そのコンピューター上の複数のアプリケーションで共有するように指定されたアセンブリを格納します。 グローバル アセンブリ キャッシュ内にインストールされるアセンブリは、厳密な名前を持つ必要があります。 + +> [!NOTE] +> グローバル アセンブリ キャッシュ内に配置されるアセンブリは、アセンブリ名とファイル名の拡張子を除く部分が一致している必要があります。 たとえば、アセンブリ名が myAssembly のアセンブリの場合、ファイル名は myAssembly.exe または myAssembly.dll である必要があります。 + + アセンブリの共有が必要な場合にだけ、アセンブリをグローバル アセンブリ キャッシュにインストールします。 一般的には、明らかにアセンブリを共有する必要がある場合を除いて、アセンブリの依存関係はプライベートにし、アセンブリはアプリケーション ディレクトリに配置します。 また、COM 相互運用 \(機能\) またはアンマネージ コードからアセンブリにアクセスできるようにするために、アセンブリをグローバル アセンブリ キャッシュにインストールする必要はありません。 + + アセンブリをグローバル アセンブリ キャッシュにインストールする理由は、いくつか考えられます。 + +- 共有の場所。 + + 複数のアプリケーションで使用するアセンブリは、グローバル アセンブリ キャッシュに配置できます。 たとえば、すべてのアプリケーションがグローバル アセンブリ キャッシュ内の 1 つのアセンブリを使用する場合は、アセンブリへの参照をリダイレクトするバージョン ポリシー ステートメントを Machine.config ファイルに追加できます。 + +- ファイル セキュリティ。 + + 通常、管理者は、書き込みおよび実行アクセスを制御するアクセス制御リスト \(ACL: Access Control List\) を使用して systemroot ディレクトリを保護します。 グローバル アセンブリ キャッシュは、systemroot ディレクトリにインストールされるため、このディレクトリの ACL を継承します。 グローバル アセンブリ キャッシュからファイルを削除する場合は、管理者権限を持つユーザーに対してだけ許可することをお勧めします。 + +- side\-by\-side でのバージョン管理。 + + 名前は同じでもバージョン情報が異なるアセンブリの複数のコピーを、グローバル アセンブリ キャッシュ内で管理できます。 + +- 追加の検索場所。 + + 共通言語ランタイムは、構成ファイル内のコードベース情報をプローブまたは使用する前に、グローバル アセンブリ キャッシュ内にアセンブリ要求と一致するアセンブリがあるかどうかをチェックします。 + + アセンブリのグローバル アセンブリ キャッシュへのインストールを明示的に避けたい場合もあります。 アプリケーションを構成するアセンブリの 1 つをグローバル アセンブリ キャッシュに配置した場合は、アプリケーション ディレクトリをコピーする XCOPY を使用してアプリケーションをレプリケートしたりインストールしたりすることはできなくなります。 この場合は、グローバル アセンブリ キャッシュ内のアセンブリも移動する必要があります。 + +## このセクションの内容 + [方法 : グローバル アセンブリ キャッシュにアセンブリをインストールする](../../../docs/framework/app-domains/how-to-install-an-assembly-into-the-gac.md) + アセンブリをグローバル アセンブリ キャッシュにインストールする方法について説明します。 + + [方法 : グローバル アセンブリ キャッシュの内容を表示する](../../../docs/framework/app-domains/how-to-view-the-contents-of-the-gac.md) + [Gacutil.exe \(グローバル アセンブリ キャッシュ ツール\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) を使用して、グローバル アセンブリ キャッシュの内容を表示する方法について説明します。 + + [方法 : グローバル アセンブリ キャッシュからアセンブリを削除する](../../../docs/framework/app-domains/how-to-remove-an-assembly-from-the-gac.md) + [Gacutil.exe \(グローバル アセンブリ キャッシュ ツール\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) を使用して、グローバル アセンブリ キャッシュからアセンブリを削除する方法について説明します。 + + [サービス コンポーネントとグローバル アセンブリ キャッシュの使用](../../../docs/framework/app-domains/use-serviced-components-with-the-gac.md) + サービス コンポーネント \(マネージ COM\+ コンポーネント\) をグローバル アセンブリ キャッシュに配置する必要がある理由について説明します。 + +## 関連項目 + [アセンブリの作成](../../../docs/framework/app-domains/create-assemblies.md) + アセンブリの作成の概要を説明します。 + + [グローバル アセンブリ キャッシュ](../../../docs/framework/app-domains/gac.md) + グローバル アセンブリ キャッシュについて説明します。 + + [方法 : アセンブリの内容を表示する](../../../docs/framework/app-domains/how-to-view-assembly-contents.md) + [Ildasm.exe \(IL 逆アセンブラー\)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) を使用して、アセンブリ内の MSIL \(Microsoft Intermediate Language\) 情報を表示する方法について説明します。 + + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + 共通言語ランタイムが、アプリケーションを構成するアセンブリを検出して読み込む方法について説明します。 + + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) + マネージ アプリケーションを構成するブロックであるアセンブリについて説明します。 \ No newline at end of file diff --git a/docs/framework/common-client-technologies/TOC.md b/docs/framework/common-client-technologies/TOC.md new file mode 100644 index 00000000000..ec693a3403f --- /dev/null +++ b/docs/framework/common-client-technologies/TOC.md @@ -0,0 +1,13 @@ +# [クライアント アプリケーション サービスの概要](client-application-services-overview.md) +# [Full Code Listings](full-code-listings.md) +# [Creating the GamePieceCollection Class](creating-the-gamepiececollection-class.md) +# [Manipulations and Inertia Overview](manipulations-and-inertia-overview.md) +# [チュートリアル : クライアント アプリケーション サービスの使用](walkthrough-using-client-application-services.md) +# [Using Manipulations and Inertia in an XNA Application](use-manipulations-and-inertia-in-an-xna-application.md) +# [共通クライアント技術](index.md) +# [方法: クライアント アプリケーション サービスでユーザーのログインを実装する](how-to-implement-user-login-with-client-application-services.md) +# [Creating the Game1 Class](creating-the-game1-class.md) +# [Creating the GamePiece Class](creating-the-gamepiece-class.md) +# [Manipulations and Inertia](manipulations-and-inertia.md) +# [方法 : クライアント アプリケーション サービスを構成する](how-to-configure-client-application-services.md) +# [クライアント アプリケーション サービス](client-application-services.md) diff --git a/docs/framework/common-client-technologies/client-application-services-overview.md b/docs/framework/common-client-technologies/client-application-services-overview.md new file mode 100644 index 00000000000..3d30e3c479d --- /dev/null +++ b/docs/framework/common-client-technologies/client-application-services-overview.md @@ -0,0 +1,99 @@ +--- +title: "クライアント アプリケーション サービスの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クライアント アプリケーション サービス, クライアント アプリケーション サービスの概要" + - "クライアント アプリケーション サービス, クラス" +ms.assetid: f0a2da13-e282-4fd7-88a1-f9102c9aeab1 +caps.latest.revision: 25 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 25 +--- +# クライアント アプリケーション サービスの概要 +クライアント アプリケーション サービスにより、Windows フォーム アプリケーションおよび Windows Presentation Foundation \(WPF\) アプリケーションから [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] ログイン サービス、ロール サービス、プロファイル サービスに簡単にアクセスできます。 [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] アプリケーション サービスは、[!INCLUDE[vs_orcas_long](../../../includes/vs-orcas-long-md.md)] と [!INCLUDE[net_v35_long](../../../includes/net-v35-long-md.md)] に付属くしている Microsoft ASP.NET 2.0 AJAX Extensions に含まれています。 これらのサービスにより、複数の Web ベースおよび Windows ベースのアプリケーションで、単一のサーバーから提供されるユーザー情報とユーザー管理機能を共有できます。 + + クライアント アプリケーション サービスには、Web サービス機能拡張モデルに組み込まれるクライアント サービス プロバイダーが含まれており、これにより、Windows ベースのアプリケーションで次のことが可能になります。 + +- シンプルなクライアント構成。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] プロジェクト デザイナーを使用するか、プロジェクトの App.config ファイルでクライアント サービス プロバイダーを指定することにより、ログイン サービス、ロール サービス、およびプロファイル サービスを有効化して構成することができます。 詳細については、「[方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md)」を参照してください。 + +- 簡明なプログラミング。 クライアント アプリケーション サービスを有効にして構成すると、既存の [!INCLUDE[dnprdnlong](../../../includes/dnprdnlong-md.md)] のメンバーシップ クラス、ロール クラス、およびアプリケーション設定クラスから間接的にサービス プロバイダーにアクセスできるようになります。 クライアント アプリケーション サービスを実装する [!INCLUDE[net_v35_long](../../../includes/net-v35-long-md.md)] クラスに直接アクセスすることもできます。 しかし、ほとんどの場合、直接アクセスは不要です。クライアント アプリケーション サービスのクラスの詳細については、このトピックの「クライアント アプリケーション サービスのクラス」を参照してください。 + +- オフラインのサポート。 Windows ベースのアプリケーションは、多くの場合、接続頻度の低い環境下に置かれます。 アプリケーションがオンラインのときに、クライアント サービス プロバイダーは、サーバーから取得された値をオフライン時にも使用できるようにキャッシュします。 + +- [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] アプリケーション設定デザイナーとの統合。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でプロジェクトに設定を追加するときに、クライアント設定サービス プロバイダーを介してアクセスされる設定を指定できます。 + + 以下のセクションでは、これらの機能について詳しく説明します。 [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] アプリケーション サービスの詳細については、「[ASP.NET Application Services Overview](../Topic/ASP.NET%20Application%20Services%20Overview.md)」を参照してください。 + +## 認証 + クライアント アプリケーション サービスを使用して、既存の [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] 認証サービスを介してユーザーを検証できます。 Windows 認証またはフォーム認証を使用してユーザーを認証できます。 Windows 認証では、ユーザーがコンピューターまたはドメインにログオンしたときにオペレーティング システムによって付与されたユーザー ID が使用されます。 通常、社内イントラネット上に配置されているアプリケーションにはWindows 認証を使用します。 フォーム認証では、アプリケーションにログイン コントロールを組み込み、取得した資格情報を認証プロバイダーに渡します。 通常、インターネット上に配置されたアプリケーションにはフォーム認証を使用します。 + + ユーザーを検証するには、`static` メソッドを呼び出します。 このメソッドは、アプリケーションで構成されているクライアント サービス プロバイダーにアクセスし、ユーザーが有効であるかどうかを示す 値を返します。 詳細については、「[方法: クライアント アプリケーション サービスでユーザーのログインを実装する](../../../docs/framework/common-client-technologies/how-to-implement-user-login-with-client-application-services.md)」を参照して下さい。 + + Windows 認証を使用している場合は、 メソッドのパラメーターとして空の文字列または `null` を渡す必要があります。 Windows 認証を使用している場合、このメソッドを呼び出すと常に `true` が返されます。 + + フォーム認証では、 メソッドは、リモート サービスがユーザーを認証したかどうかを示す値を返します。 検証が成功すると、認証クッキーがローカル ハード ディスクに格納されます。 ロール サービスおよび設定サービスにアクセスする際、このクッキーが検証の確認に使用されます。 + + フォーム認証を使用している場合は、ユーザー名とパスワードを メソッドに渡すことができます。 また、パラメーターとして空の文字列または `null` を渡して、資格情報プロバイダーを使用することもできます。 資格情報プロバイダーは、アプリケーション構成で指定するクラスです。 資格情報プロバイダー クラスは、 インターフェイスを実装する必要があります。このインターフェイスには、 という単一のメソッドがあります。 資格情報プロバイダーを使用することにより、複数のアプリケーション間で同じログイン ダイアログ ボックスを共有できます。 詳細については、「[方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md)」を参照してください。 + + フォーム認証で資格情報プロバイダーを使用するようにアプリケーションを構成する際には、 メソッドのパラメーターとして空の文字列または `null` を渡す必要があります。 サービス プロバイダーは メソッド実装を呼び出します。 通常、このメソッドを実装してダイアログ ボックスを表示し、データが設定された オブジェクトを返します。 + + 認証の詳細については、「[ASP.NET Authentication](../Topic/ASP.NET%20Authentication.md)」を参照してください。 [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] 認証サービスの設定方法の詳細については、「[Using Forms Authentication with Microsoft Ajax](../Topic/Using%20Forms%20Authentication%20with%20Microsoft%20Ajax.md)」を参照してください。 + +## ロール + クライアント アプリケーション サービスを使用して、既存の [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] ロール サービスからロール情報を取得できます。 現在の認証済みユーザーが特定のロールに属すかどうかを判断するには、`static` プロパティから取得された 参照の メソッドを呼び出します。 メソッドは、パラメーターとしてロール名を受け取り、現在のユーザーが特定のロールにあるかどうかを示す 値を返します。 ユーザーが認証されない場合、または指定されたロールに属していない場合、このメソッドは `false` を返します。 + + [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] ロール サービスの設定方法の詳細については、「[Using Roles Information with Microsoft Ajax](../Topic/Using%20Roles%20Information%20with%20Microsoft%20Ajax.md)」を参照してください。 + +## 設定 + クライアント アプリケーション サービスを使用して、既存の [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] プロファイル サービスからユーザー アプリケーション設定を取得できます。 クライアント アプリケーション サービスの Web 設定機能は、[!INCLUDE[dnprdnlong](../../../includes/dnprdnlong-md.md)] のアプリケーション設定機能と統合されています。Web 設定を取得するには、まず、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] プロジェクト デザイナーの **\[設定\]** タブを使用して、プロジェクトの `Settings` クラス \(C\# では `Properties.Settings.Default`、[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `My.Settings` としてアクセスされる\) を生成します。 **\[設定\]** タブの**\[Web 設定の読み込み\]** ボタンをクリックしてWeb 設定を読み込み、これを生成された `Settings` クラスに追加することができます。 すべての認証済みユーザーまたはすべての匿名ユーザーによって使用されるように構成された Web 設定を使用できます。 + + アプリケーション設定の詳細については、「[アプリケーション設定の概要](../../../docs/framework/winforms/advanced/application-settings-overview.md)」を参照してください。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] で設定クラスを生成するのではなく独自の設定クラスを実装する方法の詳細については、「[方法 : アプリケーション設定を作成する](../../../docs/framework/winforms/advanced/how-to-create-application-settings.md)」を参照してください。 [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] プロファイル サービスの設定方法の詳細については、「[Using Profile Information with Microsoft Ajax](../Topic/Using%20Profile%20Information%20with%20Microsoft%20Ajax.md)」を参照してください。 + +## クライアント アプリケーション サービスのクラス + 次の表は、クライアント アプリケーション サービス機能を実装するクラスの説明です。 + + 認証、ロール、および設定の主要な機能のみを使用するアプリケーションであれば、これらのクラスに直接アクセスする必要はありません。 このようなアプリケーションは、前のセクションで説明したアプリケーション構成や API を使用して間接的にクライアント アプリケーション サービス プロバイダーにアクセスします。 ユーザーのログアウト機能やオフライン機能などの追加機能を実装する場合は、これらのクラスに直接アクセスする必要があります。 + +> [!NOTE] +> すべてのクライアント アプリケーション サービスの API は同期的です。 クライアント アプリケーション サービスは、非同期動作を直接にはサポートしていません。 + + クライアント アプリケーション サービス プロバイダーは、標準 [!INCLUDE[dnprdnlong](../../../includes/dnprdnlong-md.md)] 型を実装または拡張しますが、これらの型で定義されるメンバーと機能をすべて実装するわけではありません。 たとえば、クライアント アプリケーション サービス プロバイダーを使用して、新しいユーザーの作成や、ロール メンバーシップを管理するユーザー管理アプリケーションを実装することはできません。 この機能を実装するには、現在のところ Web アプリケーションとサーバー側のコードを使用する必要があります。 実装されてないメンバーを確認するには、この表に示されているリンクから、リファレンス ドキュメントを参照してください。 + +|クラス|説明| +|---------|--------| +||このクラスは、フォーム認証のユーザー ID と認証クッキーを管理します。

このクラスに直接アクセスする主な理由は、ユーザーを自動的に再検証する メソッドを呼び出すためです。たとえば、オフライン モードからオンライン モードに切り替える場合などが該当します。

フォーム認証を使用してユーザーが認証された後、`static` プロパティを介して取得される 参照の プロパティを使用してこのクラスのインスタンスを取得できます。| +||このクラスは、ユーザー ロールを管理します。

このクラスには、間接的にアクセスできないメンバーはありません。 ただし、ユーザーが認証された後は、`static` プロパティを使用してこのクラスのインスタンスにアクセスできます。| +||このクラスは、アプリケーションをオフライン モードに切り替える際に使用する `static` プロパティを提供します。| +||このクラスはユーザー資格情報を表します。

このクラスは、 インターフェイスを実装する際、 メソッドの戻り値の型としてのみ使用します。| +||このクラスは、フォーム認証のリモート認証サービスへのアクセスを管理します。

このクラスに直接アクセスする主な理由は、 メンバーと メンバーを使用するためです。これらのメンバーは、基本 クラスでは実装されません。 また、 プロパティを使用して、サービスの場所をプログラムによって設定することもできます。

このクラスのインスタンスは、`static` プロパティを使用して取得できます。| +||このクラスは Windows 認証を管理します。

このクラスに直接アクセスする主な理由は、 メソッドを呼び出すためです。 ログアウト後、ユーザーは Windows に対しては認証されていますが、リモート アプリケーション サービスにはアクセスできなくなります。

このクラスのインスタンスは、`static` プロパティを使用して取得できます。| +||このクラスは、リモート ロール サービスへのアクセスを管理します。

このクラスにアクセスする主な理由は、 メソッドを呼び出すためです。 これは、アプリケーションがゼロ以外のロール サービス キャッシュのタイムアウト値を使用するように構成されている場合に便利です。 詳細については、「[方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md)」を参照してください。 また、 プロパティを使用して、サービスの場所をプログラムによって設定することもできます。

このクラスのインスタンスは、`static` プロパティを使用して取得できます。| +||このクラスは、リモート Web 設定サービスへのアクセスを管理します。

このクラスにアクセスする主な理由は、 イベントを処理するためです。 また、 プロパティを使用して、サービスの場所をプログラムによって設定することもできます。| +||このインターフェイスは、このトピックの「認証」セクションで先述されているように、アプリケーションが検証時にユーザーの資格情報を取得するための間接的な手段を提供します。 詳細については、「[方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md)」を参照してください。| +||このクラスは、 イベント ハンドラー内で使用する プロパティを提供します。| +||このクラスは、 イベント ハンドラー内で使用する プロパティを提供します。| + +## 参照 + [クライアント アプリケーション サービス](../../../docs/framework/common-client-technologies/client-application-services.md) + [方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md) + [方法: クライアント アプリケーション サービスでユーザーのログインを実装する](../../../docs/framework/common-client-technologies/how-to-implement-user-login-with-client-application-services.md) + [チュートリアル : クライアント アプリケーション サービスの使用](../../../docs/framework/common-client-technologies/walkthrough-using-client-application-services.md) + [OLD NIB: Managing Application Settings](http://msdn.microsoft.com/ja-jp/7de3c3bd-e0dc-4e75-a1aa-7b0ecfaac4fc) + [アプリケーション設定の概要](../../../docs/framework/winforms/advanced/application-settings-overview.md) + [ASP.NET Application Services Overview](../Topic/ASP.NET%20Application%20Services%20Overview.md) + [Using Forms Authentication with Microsoft Ajax](../Topic/Using%20Forms%20Authentication%20with%20Microsoft%20Ajax.md) + [Using Roles Information with Microsoft Ajax](../Topic/Using%20Roles%20Information%20with%20Microsoft%20Ajax.md) + [Using Profile Information with Microsoft Ajax](../Topic/Using%20Profile%20Information%20with%20Microsoft%20Ajax.md) + [ASP.NET Authentication](../Topic/ASP.NET%20Authentication.md) + [Managing Authorization Using Roles](../Topic/Managing%20Authorization%20Using%20Roles.md) + [Creating and Configuring the Application Services Database for SQL Server](../Topic/Creating%20and%20Configuring%20the%20Application%20Services%20Database%20for%20SQL%20Server.md) \ No newline at end of file diff --git a/docs/framework/common-client-technologies/client-application-services.md b/docs/framework/common-client-technologies/client-application-services.md new file mode 100644 index 00000000000..8b873dc57a8 --- /dev/null +++ b/docs/framework/common-client-technologies/client-application-services.md @@ -0,0 +1,81 @@ +--- +title: "クライアント アプリケーション サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション設定, クライアント アプリケーション サービス" + - "ASP.NET サービス, クライアント アプリケーション サービス" + - "認証 [ASP.NET], クライアント アプリケーション サービス" + - "クライアント アプリケーション サービス" + - "クライアント アプリケーション サービス, クライアント アプリケーション サービスの概要" + - "クライアント アプリケーション, ASP.NET サービス" + - "資格情報 [.NET Framework]" + - "ログイン [クライアント アプリケーション サービス]" + - "プロファイル [ASP.NET], クライアント アプリケーション サービス" + - "ロール ベースのセキュリティ [.NET Framework], クライアント アプリケーション サービス" + - "ロール [.NET Framework], クライアント アプリケーション サービス" + - "共有 (情報と機能を) [クライアント アプリケーション サービス]" + - "Web 設定 [クライアント アプリケーション サービス]" + - "Windows ベースのアプリケーション, クライアント アプリケーション サービス" +ms.assetid: 1487d8df-089e-4f21-abfb-a791a652b58e +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# クライアント アプリケーション サービス +クライアント アプリケーション サービスにより、Microsoft ASP.NET 2.0 AJAX Extensions に含まれる [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] のログイン、ロール、およびアプリケーション サービスを使用する Windows ベースのアプリケーションを簡単に作成できます。 これらのサービスにより、複数の Web アプリケーションおよび Windows ベースのアプリケーションで、単一のサーバーから提供されるユーザー情報とユーザー管理機能を共有できます。 たとえば、これらのサービスを使用して、次のタスクを実行できます。 + +- ユーザーを認証します。 認証サービスを使用して、ユーザー ID を検証することができます。 + +- 認証されたユーザーのロールを確認します。 ロール サービスを使用して、ユーザーのロールに応じてアプリケーションのユーザー インターフェイスを変更できます。 たとえば、管理者ロールのユーザーには機能を追加して提供することができます。 + +- サーバー上に存在する、ユーザーごとのアプリケーションの設定を保存してアクセスします。 Web 設定サービス \(プロファイル サービスとも呼ばれます\) を使用して、複数のアプリケーションや場所で設定を共有することができます。 + + クライアント アプリケーション サービスは、アプリケーション構成ファイルで指定できるクライアントのサービス プロバイダーの Web サービス拡張モデルを活用します。 これらのサービス プロバイダーには、ネットワーク接続が利用できない場合、認証、ロール、および設定のデータのローカル キャッシュを使用するオフライン機能が含まれます。 + + [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] アプリケーション サービスの詳細については、「[ASP.NET Application Services Overview](../Topic/ASP.NET%20Application%20Services%20Overview.md)」を参照してください。 + +## このセクションの内容 + [クライアント アプリケーション サービスの概要](../../../docs/framework/common-client-technologies/client-application-services-overview.md) + クライアント アプリケーション サービス プロバイダーを介して使用できる機能について説明します。 + + [方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md) + このトピックでは、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] プロジェクト デザイナーを使用して、アプリケーション サービスを有効にし、構成する方法について説明します。 対応する App.config ファイルへの変更についても説明します。 + + [方法: クライアント アプリケーション サービスでユーザーのログインを実装する](../../../docs/framework/common-client-technologies/how-to-implement-user-login-with-client-application-services.md) + アプリケーションがクライアントの認証サービス プロバイダーを使用するよう構成される場合のユーザー検証方法について説明します。 + + [チュートリアル : クライアント アプリケーション サービスの使用](../../../docs/framework/common-client-technologies/walkthrough-using-client-application-services.md) + すべてのクライアント アプリケーション サービスの機能を1 つのアプリケーションに結合する方法について説明します。 このチュートリアルでは、エンド ツー エンドのガイダンスを示します。 たとえば、クライアント アプリケーション サービスのテストに使用できる ASP.NET Web サービス アプリケーションを作成する方法の手順が含まれます。 + +## 関連項目 + + + + + + + + + + + + +## 参照 + [ASP.NET Application Services Overview](../Topic/ASP.NET%20Application%20Services%20Overview.md) + [Using Forms Authentication with Microsoft Ajax](../Topic/Using%20Forms%20Authentication%20with%20Microsoft%20Ajax.md) + [Using Roles Information with Microsoft Ajax](../Topic/Using%20Roles%20Information%20with%20Microsoft%20Ajax.md) + [Using Profile Information with Microsoft Ajax](../Topic/Using%20Profile%20Information%20with%20Microsoft%20Ajax.md) + [ASP.NET Authentication](../Topic/ASP.NET%20Authentication.md) + [Managing Authorization Using Roles](../Topic/Managing%20Authorization%20Using%20Roles.md) + [OLD NIB: Managing Application Settings](http://msdn.microsoft.com/ja-jp/7de3c3bd-e0dc-4e75-a1aa-7b0ecfaac4fc) + [アプリケーション設定の概要](../../../docs/framework/winforms/advanced/application-settings-overview.md) \ No newline at end of file diff --git a/docs/framework/common-client-technologies/creating-the-game1-class.md b/docs/framework/common-client-technologies/creating-the-game1-class.md new file mode 100644 index 00000000000..0efd5d190a8 --- /dev/null +++ b/docs/framework/common-client-technologies/creating-the-game1-class.md @@ -0,0 +1,48 @@ +--- +title: "Creating the Game1 Class | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 47932ce3-2ba5-476f-a26b-3ddfd5226f27 +caps.latest.revision: 8 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Creating the Game1 Class +すべての Microsoft XNA プロジェクトと同様、Game1 クラスは [Microsoft.Xna.Framework.Game](http://msdn.microsoft.com/library/microsoft.xna.framework.game.aspx) クラスから派生しています。このクラスでは、XNA ゲーム用に、基本的なグラフィックス デバイスの初期化、ゲーム ロジックの提供、およびコードの表示を行います。 ほとんどの作業は GamePiece クラスと GamePieceCollection クラスで実行されるため、Game1 クラスは非常に簡潔になっています。 + +## コードの作成 + クラスのプライベート メンバーは、ゲーム ピースを保持する **GamePieceCollection** オブジェクト、 [GraphicsDeviceManager](http://msdn.microsoft.com/library/microsoft.xna.framework.graphicsdevicemanager.aspx) オブジェクト、およびゲーム ピースの表示に使用する [SpriteBatch](http://msdn.microsoft.com/library/microsoft.xna.framework.graphics.spritebatch.aspx) オブジェクトで構成されています。 + + [!code-csharp[ManipulationXNA#_Game1_PrivateMembers](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/game1.cs#_game1_privatemembers)] + + ゲームの初期化中にこれらのオブジェクトはインスタンス化されます。 + + [!code-csharp[ManipulationXNA#_Game1_ConstructorInitialize](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/game1.cs#_game1_constructorinitialize)] + + [LoadContent](http://msdn.microsoft.com/library/microsoft.xna.framework.game.loadcontent.aspx) メソッドが呼び出されると、ゲーム ピースが作成されて、 **GamePieceCollection** オブジェクトに割り当てられます。 ゲーム ピースには、次の 2 種類があります。 ピースのスケール ファクターは、小さいピースや大きいピースが存在するようにわずかに変更されます。 + + [!code-csharp[ManipulationXNA#_Game1_LoadContent](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/game1.cs#_game1_loadcontent)] + + [Update](http://msdn.microsoft.com/library/microsoft.xna.framework.game.update.aspx) メソッドは、ゲームの実行中に XNA Framework によって繰り返し呼び出されます。 [Update](http://msdn.microsoft.com/library/microsoft.xna.framework.game.update.aspx) メソッドは、ゲーム ピースのコレクションに対して **ProcessInertia** メソッドおよび **UpdateFromMouse** メソッドを呼び出します。 これらのメソッドの説明は、「[Creating the GamePieceCollection Class](../../../docs/framework/common-client-technologies/creating-the-gamepiececollection-class.md)」にあります。 + + [!code-csharp[ManipulationXNA#_Game1_UpdateGame](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/game1.cs#_game1_updategame)] + + [Draw](http://msdn.microsoft.com/library/microsoft.xna.framework.game.draw.aspx) メソッドも、ゲームの実行中に XNA Framework によって繰り返し呼び出されます。 [Draw](http://msdn.microsoft.com/library/microsoft.xna.framework.game.draw.aspx) メソッドは、**GamePieceCollection** オブジェクトの **Draw** メソッドを呼び出して、ゲーム ピースのレンダリングを実行します。 これらのメソッドの説明は、「[Creating the GamePieceCollection Class](../../../docs/framework/common-client-technologies/creating-the-gamepiececollection-class.md)」にあります。 + + [!code-csharp[ManipulationXNA#_Game1_DrawGame](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/game1.cs#_game1_drawgame)] + +## 参照 + [Manipulations and Inertia](../../../docs/framework/common-client-technologies/manipulations-and-inertia.md) + [Using Manipulations and Inertia in an XNA Application](../../../docs/framework/common-client-technologies/use-manipulations-and-inertia-in-an-xna-application.md) + [Creating the GamePiece Class](../../../docs/framework/common-client-technologies/creating-the-gamepiece-class.md) + [Creating the GamePieceCollection Class](../../../docs/framework/common-client-technologies/creating-the-gamepiececollection-class.md) + [Full Code Listings](../../../docs/framework/common-client-technologies/full-code-listings.md) \ No newline at end of file diff --git a/docs/framework/common-client-technologies/creating-the-gamepiece-class.md b/docs/framework/common-client-technologies/creating-the-gamepiece-class.md new file mode 100644 index 00000000000..4c75457337f --- /dev/null +++ b/docs/framework/common-client-technologies/creating-the-gamepiece-class.md @@ -0,0 +1,111 @@ +--- +title: "Creating the GamePiece Class | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 37a27a86-ac1c-47be-b477-cb4b819459d3 +caps.latest.revision: 9 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 9 +--- +# Creating the GamePiece Class +**GamePiece** クラスは、Microsoft XNA ゲーム ピースのイメージの読み込み、ゲーム ピースに関係するマウスの状態の追跡、マウスのキャプチャ、操作と慣性の処理の実行、およびゲーム ピースがビュー ポートの限度に達したときの跳ね返り機能の提供に必要な機能をすべてカプセル化します。 + +## プライベート メンバー + **GamePiece** クラスの上部で、いくつかのプライベート メンバーが宣言されます。 + + [!code-csharp[ManipulationXNA#_GamePiece_PrivateMembers](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_privatemembers)] + +## パブリック プロパティ + これらの 3 つのプライベート メンバーは、パブリック プロパティを介して公開されます。 **Scale** と **PieceColor** プロパティを使用すると、アプリケーションはピースのサイズと色をそれぞれ指定することができます。 **Bounds** プロパティを公開すると、あるピースが別のピースを重ねて配置する場合など、あるピース自体を表示するために別のピースの境界を使用できるようになります。 次のコードは、パブリック プロパティの宣言を示します。 + + [!code-csharp[ManipulationXNA#_GamePiece_PublicProperties](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_publicproperties)] + +## クラスのコンストラクター + **GamePiece** クラスのコンストラクターは、次のパラメーターを受け入れます。 + +- [SpriteBatch](http://msdn.microsoft.com/library/microsoft.xna.framework.graphics.spritebatch.aspx) 型。 ここで渡される参照は、プライベート メンバー `spriteBatch` に割り当てられ、ゲーム ピースが自身を表示するときに [SpriteBatch.Draw](http://msdn.microsoft.com/library/microsoft.xna.framework.graphics.spritebatch.draw.aspx) メソッドにアクセスするために使用されます。 さらに、[GraphicsDevice](http://msdn.microsoft.com/library/microsoft.xna.framework.graphics.spritebatch.graphicsdevice.aspx) プロパティを使用すると、ゲーム ピースに関連する [Texture](http://msdn.microsoft.com/library/microsoft.xna.framework.graphics.texture.aspx) オブジェクトを作成するとともに、いつゲーム ピースがウィンドウの境界に接したかを検出するために、ビュー ポートのサイズを取得できます。そうすることで、ピースは跳ね返ることができます。 + +- ゲーム ピースに使用するイメージのファイル名を指定する文字列。 + + また、コンストラクターは、 オブジェクトと オブジェクトを作成し、それらのイベントのイベント ハンドラーを確立します。 + + 次のコードは、**GamePiece** クラスのコンストラクターを示します。 + + [!code-csharp[ManipulationXNA#_GamePiece_Constructor](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_constructor)] + +## マウスの入力のキャプチャ + **UpdateFromMouse** メソッドは、マウスがゲーム ピースの境界内にある間にマウス ボタンが押されたときに検出するとともに、マウス ボタンが離されたときに検出する役割を務めます。 + + \(マウスがピースの境界内にある間に\) マウスの左ボタンを押すと、このメソッドはフラグを設定して、ゲーム ピースがマウスをキャプチャして、操作の処理を開始することを示します。 + + 操作の処理は、 オブジェクトの配列を作成し、それを オブジェクトに渡して開始します。 これにより、操作プロセッサがマニピュレーター \(この場合は 1 つのマニピュレーター\) を評価し、操作イベントを発生させます。 + + さらに、ドラッグが発生するポイントが保存されます。 これは後の イベントのときに、ゲーム ピースがドラッグ ポイントの背後の線に向かって移動するようにデルタ変換値を調整するために使用します。 + + 最後に、このメソッドは、マウスのキャプチャの状態を返します。 これにより、[GamePieceCollection](../../../docs/framework/common-client-technologies/creating-the-gamepiececollection-class.md) オブジェクトは、複数のゲーム ピースがある場合にキャプチャを管理できるようになります。 + + 次のコードは、**UpdateFromMouse** メソッドを示しています。 + + [!code-csharp[ManipulationXNA#_GamePiece_UpdateFromMouse](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_updatefrommouse)] + +## 操作の処理 + 操作の開始時に、 イベントが発生します。 このイベントのハンドラーは、慣性の処理が発生している場合は停止し、*processInertia* フラグを `false` に設定します。 + + [!code-csharp[ManipulationXNA#_GamePiece_OnManipulationStarted](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_onmanipulationstarted)] + + 操作に関連している値が変化するため、 イベントが発生します。 このイベントのハンドラーは、ゲーム ピースの位置と回転の値を変更するイベント引数に渡されるデルタ値を使用します。 + + [!code-csharp[ManipulationXNA#_GamePiece_OnManipulationDelta](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_onmanipulationdelta)] + + 操作に関連するすべてのマニピュレーター \(この場合は 1 つのマニピュレーター\) が削除されると、操作プロセッサは イベントを生成します。 このイベントのハンドラーは、慣性プロセッサの初期速度をイベント引数によって報告された初期速度に設定して慣性の処理を開始するとともに、*processInertia* フラグを `true` に設定します。 + + [!code-csharp[ManipulationXNA#_GamePiece_OnManipulationCompleted](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_onmanipulationcompleted)] + +## 慣性の処理 + 慣性の処理では、角速度と直線速度、位置 \(変換\) 座標、および回転の新しい値を推定します。 イベントが発生します。 このイベントのハンドラーは、ゲーム ピースの位置と回転を変更するイベント引数に渡されるデルタ値を使用します。 + + 新しい座標によって、ゲーム ピースがビュー ポートの境界を越えてしまった場合、慣性の処理の速度が元に戻ります。 これにより、ゲーム ピースが接したビュー ポートの境界から跳ね返ります。 + + 推定が実行している間は、 オブジェクトのプロパティを変更できません。 そのため、X または Y の速度を元に戻す場合、イベント ハンドラーは、最初に メソッドを呼び出して慣性を停止します。 続いて、新しい初期速度値を、\(スポンジ動作向けに調整された\) 現在の速度値に割り当てます。また、*processInertia* フラグを `true` に設定します。 + + 次のコードは、 イベントのイベント ハンドラーを示しています。 + + [!code-csharp[ManipulationXNA#_GamePiece_OnInertiaDelta](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_oninertiadelta)] + + 慣性の処理が完了すると、慣性プロセッサは イベントを発生させます。 このイベントのハンドラーは、*processInertia* フラグを `false` に設定します。 + + [!code-csharp[ManipulationXNA#_GamePiece_OnInertiaCompleted](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_oninertiacompleted)] + + これまでに提示したロジックで、実際に慣性の推定が発生するものはありません。 これは、**ProcessInertia** メソッドで実現されます。 このメソッドは、ゲームの更新ループ \([Game.Update](http://msdn.microsoft.com/library/microsoft.xna.framework.game.update.aspx) メソッド\) から繰り返し呼び出され、*processInertia* フラグが `true` に設定されていることを確認します。設定されている場合は メソッドを呼び出します。 このメソッドを呼び出すと、推定が発生して、 イベントが発生します。 + + [!code-csharp[ManipulationXNA#_GamePiece_ProcessInertia](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_processinertia)] + + いずれかの描画メソッドのオーバーロードが呼び出されるまで、ゲーム ピースは実際に表示されません。 このメソッドの最初のオーバーロードは、ゲームの描画ループ \([Game.Draw](http://msdn.microsoft.com/library/microsoft.xna.framework.game.draw.aspx) メソッド\) から繰り返し呼び出されます。 これにより、現在の位置、回転、およびスケール ファクターでゲーム ピースが表示されます。 + + [!code-csharp[ManipulationXNA#_GamePiece_Draw](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_draw)] + +## その他のプロパティ + **GamePiece** クラスによって 3 つのプライベート プロパティが使用されます。 + +1. **Timestamp** – 操作と慣性プロセッサが使用するタイムスタンプ値を取得します。 + +2. **X** – ゲーム ピースの X 座標を取得または設定します。 設定すると、ヒット テストや、操作プロセッサのピボット位置に使用する境界を調整します。 + +3. **Y** – ゲーム ピースの Y 座標を取得または設定します。 設定すると、ヒット テストや、操作プロセッサのピボット位置に使用する境界を調整します。 + + [!code-csharp[ManipulationXNA#_GamePiece_PrivateProperties](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiece_privateproperties)] + +## 参照 + [Manipulations and Inertia](../../../docs/framework/common-client-technologies/manipulations-and-inertia.md) + [Using Manipulations and Inertia in an XNA Application](../../../docs/framework/common-client-technologies/use-manipulations-and-inertia-in-an-xna-application.md) + [Creating the GamePieceCollection Class](../../../docs/framework/common-client-technologies/creating-the-gamepiececollection-class.md) + [Creating the Game1 Class](../../../docs/framework/common-client-technologies/creating-the-game1-class.md) \ No newline at end of file diff --git a/docs/framework/common-client-technologies/creating-the-gamepiececollection-class.md b/docs/framework/common-client-technologies/creating-the-gamepiececollection-class.md new file mode 100644 index 00000000000..d8eb676b19c --- /dev/null +++ b/docs/framework/common-client-technologies/creating-the-gamepiececollection-class.md @@ -0,0 +1,42 @@ +--- +title: "Creating the GamePieceCollection Class | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e4b037ee-1201-4a55-b198-0d6532ed6f35 +caps.latest.revision: 8 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Creating the GamePieceCollection Class +**GamePieceCollection** クラスは、汎用の List クラスから派生し、複数の **GamePiece** オブジェクトをより簡単に管理するメソッドを導入します。 + +## コードの作成 + **GamePieceCollection** クラスのコンストラクターは、プライベート メンバー *capturedIndex* を初期化します。 このフィールドは、現在どのゲーム ピースにマウス キャプチャがあるかを追跡するために使用します。 + + [!code-csharp[ManipulationXNA#_GamePieceCollection_PrivateMembersAndConstructor](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiececollection.cs#_gamepiececollection_privatemembersandconstructor)] + + **ProcessInertia** メソッドと **Draw** メソッドは、ゲームの [Game.Update](http://msdn.microsoft.com/library/microsoft.xna.framework.game.update.aspx) メソッドと [Game.Draw](http://msdn.microsoft.com/library/microsoft.xna.framework.game.draw.aspx) メソッドに必要なコードを簡略化します。これは、コレクション内のゲーム ピースをすべて列挙してから、各 **GamePiece** オブジェクトにそれぞれのメソッドを呼び出して行います。 + + [!code-csharp[ManipulationXNA#_GamePieceCollection_ProcessInertiaAndDraw](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiececollection.cs#_gamepiececollection_processinertiaanddraw)] + + **UpdateFromMouse** メソッドもゲームの更新中に呼び出されます。 最初に現在のキャプチャ \(もしあれば\) が有効なままであるかどうかを確認すると、1 つのゲーム ピースのみがマウス キャプチャするようになります。 有効の場合、他のピースはキャプチャの確認ができません。 + + キャプチャがあるピースがない場合、 **UpdateFromMouse** メソッドから最後から最初へとゲーム ピースを列挙し、対象のピースがマウス キャプチャを報告するかどうかを確認します。 報告する場合、対象のピースは現在キャプチャされているピースになり、後続の処理は実行されません。 **UpdateFromMouse** メソッドは、先にコレクションの最後の項目を確認します。そうすることで、2 つのピースが重なっている場合、Z オーダーが高いピースがキャプチャを取得します。 Z オーダーは明示的ではなく、変更もできません。Z オーダーは、ゲーム ピースがコレクションに追加された順序で管理されます。 + + [!code-csharp[ManipulationXNA#_GamePieceCollection_UpdateFromMouse](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiececollection.cs#_gamepiececollection_updatefrommouse)] + +## 参照 + [Manipulations and Inertia](../../../docs/framework/common-client-technologies/manipulations-and-inertia.md) + [Using Manipulations and Inertia in an XNA Application](../../../docs/framework/common-client-technologies/use-manipulations-and-inertia-in-an-xna-application.md) + [Creating the GamePiece Class](../../../docs/framework/common-client-technologies/creating-the-gamepiece-class.md) + [Creating the Game1 Class](../../../docs/framework/common-client-technologies/creating-the-game1-class.md) + [Full Code Listings](../../../docs/framework/common-client-technologies/full-code-listings.md) \ No newline at end of file diff --git a/docs/framework/common-client-technologies/full-code-listings.md b/docs/framework/common-client-technologies/full-code-listings.md new file mode 100644 index 00000000000..878294b43f4 --- /dev/null +++ b/docs/framework/common-client-technologies/full-code-listings.md @@ -0,0 +1,42 @@ +--- +title: "Full Code Listings | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e4edbe7f-8503-42cb-a8a1-4f49c78e5e00 +caps.latest.revision: 6 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 6 +--- +# Full Code Listings +このトピックでは、[Manipulations and Inertia](../../../docs/framework/common-client-technologies/manipulations-and-inertia.md) プロセッサを使用するアプリケーションの完全なコードの一覧を示します。 + +## GamePiece クラス + 完全な **GamePiece** クラスを次のコードに示します。 + + [!code-csharp[ManipulationXNA#_GamePieceClass](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiece.cs#_gamepiececlass)] + +## GamePieceCollection クラス + 完全な **GamePieceCollection** クラスを次のコードに示します。 + + [!code-csharp[ManipulationXNA#_GamePieceCollectionClass](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/gamepiececollection.cs#_gamepiececollectionclass)] + +## Game1 クラス + 完全な **Game1** クラスを次のコードに示します。 + + [!code-csharp[ManipulationXNA#_Game1Class](../../../samples/snippets/csharp/VS_Snippets_Misc/manipulationxna/cs/game1.cs#_game1class)] + +## 参照 + [Manipulations and Inertia](../../../docs/framework/common-client-technologies/manipulations-and-inertia.md) + [Using Manipulations and Inertia in an XNA Application](../../../docs/framework/common-client-technologies/use-manipulations-and-inertia-in-an-xna-application.md) + [Creating the GamePiece Class](../../../docs/framework/common-client-technologies/creating-the-gamepiece-class.md) + [Creating the GamePieceCollection Class](../../../docs/framework/common-client-technologies/creating-the-gamepiececollection-class.md) + [Creating the Game1 Class](../../../docs/framework/common-client-technologies/creating-the-game1-class.md) \ No newline at end of file diff --git a/docs/framework/common-client-technologies/how-to-configure-client-application-services.md b/docs/framework/common-client-technologies/how-to-configure-client-application-services.md new file mode 100644 index 00000000000..f77c4e337b1 --- /dev/null +++ b/docs/framework/common-client-technologies/how-to-configure-client-application-services.md @@ -0,0 +1,160 @@ +--- +title: "方法 : クライアント アプリケーション サービスを構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クライアント アプリケーション サービス, 構成" +ms.assetid: 34a8688a-a32c-40d3-94be-c8e610c6a4e8 +caps.latest.revision: 23 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 23 +--- +# 方法 : クライアント アプリケーション サービスを構成する +このトピックでは、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] **プロジェクト デザイナー**を使用して、クライアント アプリケーション サービスを有効にし、構成する方法について説明します。 クライアント アプリケーション サービスを使用してユーザーを検証し、既存の [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] アプリケーション サービスからユーザーのロールおよび設定を取得することができます。 構成した後に、「[クライアント アプリケーション サービスの概要](../../../docs/framework/common-client-technologies/client-application-services-overview.md)」に記載されているように、アプリケーション コード内で有効にされているサービスにアクセスできます。 [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] アプリケーション サービスの詳細については、「[ASP.NET Application Services Overview](../Topic/ASP.NET%20Application%20Services%20Overview.md)」を参照してください。 + + クライアント アプリケーション サービスは、**プロジェクト デザイナー**の **\[サービス\]** ページで有効にし、構成することができます。 **\[サービス\]** ページは、プロジェクトの App.config ファイル内の値を更新します。 **プロジェクト デザイナー**にアクセスするには、**\[プロジェクト\]** メニューの **\[プロパティ\]** を使用します。 **\[サービス\]** ページの詳細については、「[\[サービス\] ページ \(プロジェクト デザイナー\)](../Topic/Services%20Page,%20Project%20Designer.md)」を参照してください。 + + 次の手順では、クライアント アプリケーション サービスの基本構成を実行する方法について説明します。 高度な構成オプションについては、以降のセクションで説明します。 + +### クライアント アプリケーション サービスを構成するには + +1. **ソリューション エクスプ ローラー**で、プロジェクト ノードを選択し、**\[プロジェクト\]** メニューの **\[プロパティ\]** をクリックします。 + + **プロジェクト デザイナー**が表示されます。 + +2. **\[サービス\]** タブをクリックします。 次の図に示すように、**\[サービス\]** ページが表示されます。 + + ![プロジェクト デザイナーの [サービス] タブ](../../../docs/framework/common-client-technologies/media/casdesigner.png "casdesigner") + +3. **\[サービス\]** ページで、**\[クライアント アプリケーション サービスを有効にする\]** を選択します。 + + > [!NOTE] + > クライアント アプリケーション サービスには完全版の .NET Framework が必要です。クライアント アプリケーション サービスは、.NET Framework Client Profile ではサポートされません。 **\[クライアント アプリケーション サービスを有効にする\]** チェック ボックスが無効になっている場合、**\[ターゲット フレームワーク\]** が .NET Framework 3.5 以降に設定されていることを確認します。 C\# で **\[ターゲット フレームワーク\]** の設定を表示するには、プロジェクト デザイナーを開き、**\[アプリケーション\]** ページをクリックします。 Visual Basic で **\[ターゲット フレームワーク\]** の設定を表示するには、プロジェクト デザイナーを開き、**\[コンパイル\]** ページをクリックして、**\[詳細コンパイル オプション\]** をクリックします。 + +4. 独自のログイン コントロールまたはダイアログ ボックスを提供する場合は **\[フォーム認証を使用する\]** を選択し、オペレーティング システムによって付与された ID を使用する場合は **\[Windows 認証を使用する\]** を選択します。 詳細については、「[クライアント アプリケーション サービスの概要](../../../docs/framework/common-client-technologies/client-application-services-overview.md)」を参照してください。 + + > [!NOTE] + > **\[Windows 認証を使用する\]** を選択すると、SQL Server Compact データベースを使用するために、クライアント アプリケーション サービスが自動的に構成されます。 これは次のセクションで説明するように、**\[サービスの詳細設定\]** ダイアログ ボックスに示されます。 **\[フォーム認証を使用する\]** を選択すると、**\[カスタム接続文字列を使用する\]** の設定は自動的にオフになりません。 これにより、[!INCLUDE[ssEW](../../../includes/ssew-md.md)] データベースが Windows 認証で使用するために既に生成されている場合、エラーが発生することがあります。 これらのエラーを修正するには、**\[サービスの詳細設定\]** ダイアログ ボックスの **\[カスタム接続文字列を使用する\]** の設定をオフにします。 + +5. **\[フォーム認証を使用する\]** を選択した場合は、**\[認証サービスの場所\]** ボックスで、ファイル名を含まないサービス ホストの URL を指定します。 デザイナーは、構成ファイルに値を書き込むときに、自動的に標準のファイル名 \(Authentication\_JSON\_AppService.axd\) を追加します。 + +6. 必要に応じて、**\[フォーム認証を使用する\]** を選択した場合は、**\[資格情報プロバイダー\]** ボックスに値を指定することができます。 資格情報プロバイダーは、 インターフェイスを実装する必要があります。 資格情報プロバイダーを使用すると、他のアプリケーション コードからログイン ユーザー インターフェイスを分離できます。 これにより、複数のアプリケーションで使用する単一のログイン ダイアログ ボックスを作成することができます。 詳細については、「[方法: クライアント アプリケーション サービスでユーザーのログインを実装する](../../../docs/framework/common-client-technologies/how-to-implement-user-login-with-client-application-services.md)」を参照して下さい。 + + 資格情報プロバイダーを指定する場合は、アセンブリ修飾型名としてを指定する必要があります。 詳細については、「」および「[アセンブリ名](../../../docs/framework/app-domains/assembly-names.md)」を参照してください。 最も単純な形式で、アセンブリ修飾型名は、次のようになります。 + + ``` + MyNamespace.MyLoginClass, MyAssembly + ``` + +7. **\[ロール サービスの場所\]** および **\[Web 設定サービスの場所\]** テキスト ボックスで、ファイル名を含まない、各サービスのサービスの場所を指定します。 デザイナーは、構成ファイルに値を書き込むときに、自動的に標準的なファイル名 \(Role\_JSON\_AppService.axd および Profile\_JSON\_AppService.axd\) を追加します。 + +8. 必要に応じて、**\[詳細設定\]** をクリックして、ローカル キャッシュ動作などの詳細設定を変更します。 詳細については、次の手順を参照してください。 + +## 詳細構成 + 次の手順では、あまり一般的ではないシナリオでクライアント アプリケーション サービスを構成する方法について説明します。 たとえば、これらの構成オプションは、公共の場所で使用したり、ローカル データ キャッシュとして暗号化された SQL Server Compact データベースを使用するために使用したりできます。 + +#### クライアント アプリケーション サービスの詳細設定を構成するには + +1. **プロジェクト デザイナー**の **\[サービス\]** ページで、**\[詳細設定\]** をクリックします。 + + 次の図に示すように、**\[サービスの詳細設定\]** ダイアログ ボックスが表示されます。 このダイアログ ボックスの詳細については、「[\[サービスの詳細設定\] ダイアログ ボックス](../Topic/Advanced%20Settings%20for%20Services%20Dialog%20Box.md)」を参照してください。 + + ![[サービスの詳細設定] ダイアログ ボックス](../../../docs/framework/common-client-technologies/media/casdialog.png "casdialog") + +2. **\[オフラインでログインできるようにパスワードのハッシュをローカルに保存する\]** をオンまたはオフにします。 このオプションを選択すると、ユーザーのパスワードの暗号化された形式がローカルでキャッシュされます。 これは、アプリケーションにオフライン モードを実装する場合に便利です。 このオプションを選択すると、 プロパティが `true` に設定されている場合でもユーザーを検証できます。 + +3. **\[サーバー Cookie の期限が切れた場合は常に再度ログオンすることをユーザーに要求する\]** をオンまたはオフにします。 認証 Cookie はリモート サービスで構成され、ユーザーのログインがアクティブであり続ける期間を示します。 cookie を構成する方法の詳細については、「[authentication の forms 要素 \(ASP.NET 設定スキーマ\)](http://msdn.microsoft.com/ja-jp/8163b8b5-ea6c-46c8-b5a9-c4c3de31c0b3)」の「`timeout` 属性」を参照してください。 + + このオプションを選択した場合、認証 Cookie の有効期限が切れた後にリモート ロールまたは Web 設定サービスにアクセスしようとすると、 がスローされます。 この例外を処理し、ログイン ダイアログ ボックスを表示して、ユーザーを再検証することができます。 この動作の例は、「[チュートリアル : クライアント アプリケーション サービスの使用](../../../docs/framework/common-client-technologies/walkthrough-using-client-application-services.md)」を参照してください。 このオプションは、公共の場所に配置されたアプリケーションで、使用後にアプリケーションを実行中のままにしているユーザーが無期限に認証されないようにするのに便利です。 + + このオプションをオフにし、認証 Cookie の有効期限が切れた後にリモート サービスへのアクセスを試行すると、ユーザーが自動的に再検証されます。 + +4. **\[ロール サービスのキャッシュのタイムアウト\]** の値を指定します。 この時間間隔は、ロールが頻繁に更新される場合は小さい値に設定し、ロールが頻繁に更新されない場合はより大きい値に設定します。 オフライン モードを実装する場合は、時間間隔を大きい値に設定して、ロール情報が、アプリケーションがオフラインのときに期限切れにならないようにします。 + + メソッドを呼び出すと、ロール プロバイダーがキャッシュされたロール値またはロール サービスにアクセスします。 プログラムによってキャッシュをリセットし、強制的にこのメソッドがリモート サービスにアクセスするようにするには、 メソッドを呼び出します。 + +5. **\[カスタム接続文字列を使用する\]** をオンまたはオフにします。 詳細については、次の手順を参照してください。 + +#### ローカル キャッシュ用データベースを使用するようにクライアント アプリケーション サービスを構成するには + +1. **プロジェクト デザイナー**の **\[サービス\]** ページで、**\[詳細設定\]** をクリックします。 + + **\[サービスの詳細設定\]** ダイアログ ボックスが表示されます。 + +2. **\[カスタム接続文字列を使用する\]** を選択します。 + + テキスト ボックスに `Data Source = |SQL/CE|` の既定値が表示されます。 + +3. SQL Server Compact データベースを生成し、使用するには、接続文字列の既定値を保持します。[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] は、データベース ファイルを生成し、 プロパティで示されたディレクトリに配置します。 + +4. 暗号化された [!INCLUDE[ssEW](../../../includes/ssew-md.md)] データベースを生成し、使用するには、次の例に示すように、接続文字列に `password` および `encrypt database` 値を追加します。 + + > [!NOTE] + > 必ず、強力なパスワードを指定してください。 データベースが生成された後は、パスワードを変更することはできません。 + + ``` + Data Source = |SQL/CE|;password=;encrypt database=true + ``` + +5. 独自の [!INCLUDE[ssNoVersion](../../../includes/ssnoversion-md.md)] データベースを使用するには、独自の接続文字列を指定します。 有効な接続文字列の形式の詳細については、[!INCLUDE[ssNoVersion](../../../includes/ssnoversion-md.md)] のドキュメントを参照してください。 このデータベースは自動的には生成されません。 接続文字列は、次の SQL ステートメントを使用して作成できる既存のデータベースを参照する必要があります。 + + ``` + CREATE TABLE ApplicationProperties (PropertyName nvarchar(256), + PropertyValue nvarchar(256)) + CREATE TABLE UserProperties (PropertyName nvarchar(256), + PropertyValue nvarchar(256)) + CREATE TABLE Roles (UserName nvarchar(256), + RoleName nvarchar(256)) + CREATE TABLE Settings (PropertyName nvarchar(256), + PropertyStoredAs nvarchar(1), PropertyValue nvarchar(2048)) + ``` + +## カスタム プロバイダーの使用 + 既定では、クライアント アプリケーション サービスの機能は、 名前空間のプロバイダーを使用します。 **プロジェクト デザイナー**の **\[サービス\]** ページを使用してアプリケーションを構成すると、これらのプロバイダーへの参照が App.config ファイルに追加されます。 これらの既定のプロバイダーは、サーバー上の対応するプロバイダーにアクセスします。 Web サービスは、多くの場合、 などのプロバイダーからユーザー データにアクセスするように構成されます。 + + カスタム サービス プロバイダーを使用する場合は、通常、サーバーにアクセスするすべてのクライアント アプリケーションに影響を与えるようにサーバー側のプロバイダーを変更します。 ただし、クライアント側で既定以外のプロバイダーを使用することもできます。 次の手順に示すように、プロジェクトの App.config ファイルでカスタム認証またはロール プロバイダーを指定できます。 カスタム認証とロール プロバイダーを作成する方法については、「[Implementing a Membership Provider](../Topic/Implementing%20a%20Membership%20Provider.md)」と「[Implementing a Role Provider](../Topic/Implementing%20a%20Role%20Provider.md)」を参照してください。 また、カスタム設定プロバイダーを使用するには、プロジェクトの `Settings` クラス \(C\# では `Properties.Settings.Default` として、`My.Settings` では [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] としてアクセス\) を変更します。 詳細については、「[アプリケーション設定アーキテクチャ](../../../docs/framework/winforms/advanced/application-settings-architecture.md)」を参照してください。 + +#### 既定以外のプロバイダーを使用するようにクライアント アプリケーション サービスを構成するには + +1. 既定以外の認証またはロール サービス プロバイダーを使用するには、最初に、**\[サービス\]** ページを使用して、他のすべての構成設定を完了します。 + +2. **プロジェクト デザイナー**を閉じます。 これは、**\[サービス\]** ページが、設定を変更しない場合でも自動的に App.config ファイルを更新するため、必要となります。 この手順で説明するように、App.config ファイルを手動で変更し、**\[サービス\]** ページに戻ると、変更内容はリセットされます。 + +3. **ソリューション エクスプローラー**で、App.config をダブルクリックします。 + + アプリケーションの構成ファイルがテキスト エディターで開きます。 + +4. `` または `` 要素内の `` 要素を見つけます。 これらの要素は `` 要素の子要素です。 `` 要素を使用して認証プロバイダーを指定し、`` 要素を使用してロール プロバイダーを指定します。 + +5. `` 要素の子要素として `` 要素を追加します。 次の例に示すように、`name` および `type` 属性を指定する必要があります。 `type` 属性値はアセンブリ修飾型の名前である必要があります。 詳細については、「」および「[アセンブリ名](../../../docs/framework/app-domains/assembly-names.md)」を参照してください。 + + ``` + + ``` + +6. `defaultProvider` または `` 要素の `` 属性を変更して、前の手順で追加した `` 要素から名前の値を指定します。 + + ``` + + ``` + +## 参照 + [クライアント アプリケーション サービス](../../../docs/framework/common-client-technologies/client-application-services.md) + [クライアント アプリケーション サービスの概要](../../../docs/framework/common-client-technologies/client-application-services-overview.md) + [\[サービス\] ページ \(プロジェクト デザイナー\)](../Topic/Services%20Page,%20Project%20Designer.md) + [\[サービスの詳細設定\] ダイアログ ボックス](../Topic/Advanced%20Settings%20for%20Services%20Dialog%20Box.md) + [方法: クライアント アプリケーション サービスでユーザーのログインを実装する](../../../docs/framework/common-client-technologies/how-to-implement-user-login-with-client-application-services.md) + [チュートリアル : クライアント アプリケーション サービスの使用](../../../docs/framework/common-client-technologies/walkthrough-using-client-application-services.md) + [Implementing a Membership Provider](../Topic/Implementing%20a%20Membership%20Provider.md) + [Implementing a Role Provider](../Topic/Implementing%20a%20Role%20Provider.md) + [アプリケーション設定アーキテクチャ](../../../docs/framework/winforms/advanced/application-settings-architecture.md) + [Creating and Configuring the Application Services Database for SQL Server](../Topic/Creating%20and%20Configuring%20the%20Application%20Services%20Database%20for%20SQL%20Server.md) \ No newline at end of file diff --git a/docs/framework/common-client-technologies/how-to-implement-user-login-with-client-application-services.md b/docs/framework/common-client-technologies/how-to-implement-user-login-with-client-application-services.md new file mode 100644 index 00000000000..7b9008f4be5 --- /dev/null +++ b/docs/framework/common-client-technologies/how-to-implement-user-login-with-client-application-services.md @@ -0,0 +1,66 @@ +--- +title: "方法: クライアント アプリケーション サービスでユーザーのログインを実装する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クライアント アプリケーション サービス, ユーザーの認証" + - "検証 (ユーザーを) [クライアント アプリケーション サービス]" + - "検証 [.NET Framework], クライアント アプリケーション サービス" +ms.assetid: 5431a671-eb02-4e18-a651-24764fccec9a +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 方法: クライアント アプリケーション サービスでユーザーのログインを実装する +クライアント アプリケーション サービスを使用して、既存の [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] プロファイル サービスを介してユーザーを検証できます。 [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] プロファイル サービスをセットアップする方法については、「[Using Forms Authentication with Microsoft Ajax](../Topic/Using%20Forms%20Authentication%20with%20Microsoft%20Ajax.md)」を参照してください。 + + 次の手順では、アプリケーションがクライアント認証サービス プロバイダーの 1 つを使用するように構成されている場合に、認証サービスを介してユーザーを検証する方法について説明します。 詳細については、「[方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md)」を参照してください。 + + 通常、検証はすべて `static` メソッドを介して実行します。 このメソッドは、認証サービスとの対話を構成済み認証プロバイダーを介して管理します。 詳細については、「[クライアント アプリケーション サービスの概要](../../../docs/framework/common-client-technologies/client-application-services-overview.md)」を参照してください。 + + フォーム認証手順では、実行中の [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] 認証サービスへのアクセスが必要です。 クライアント アプリケーション サービス機能のエンド ツー エンド テストに関するガイダンスについては、「[チュートリアル : クライアント アプリケーション サービスの使用](../../../docs/framework/common-client-technologies/walkthrough-using-client-application-services.md)」を参照してください。 + +### メンバーシップ資格情報プロバイダーを使用して、フォーム認証でユーザーを認証するには + +1. インターフェイスを実装します。 から派生したログイン ダイアログ ボックス クラスに対する の実装コード例を次に示します。 このダイアログ ボックスには、ユーザー名とパスワードのテキスト ボックス、および "次回のために保存" チェック ボックスが含まれています。 クライアント認証プロバイダーが メソッドを呼び出すと、フォームが表示されます。 ユーザーがログイン ダイアログ ボックスに情報を入力し \[OK\] をクリックすると、指定された値が新しい オブジェクトに返されます。 + + [!code-csharp[ClientApplicationServices#210](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Login.cs#210)] + [!code-vb[ClientApplicationServices#210](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Login.vb#210)] + +2. `static` メソッドを呼び出し、空の文字列をパラメーター値として渡します。 空の文字列を指定すると、このメソッドはアプリケーション用に構成された資格情報プロバイダーに対して メソッドを内部的に呼び出します。 次のコード例では、このメソッドを呼び出して、Windows フォーム アプリケーション全体へのアクセスを制限しています。 このコードを ハンドラーに追加できます。 + + [!code-csharp[ClientApplicationServices#317](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Class1.cs#317)] + [!code-vb[ClientApplicationServices#317](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Class1.vb#317)] + +### メンバーシップ資格情報プロバイダーを使用せずに、フォーム認証でユーザーを認証するには + +- `static` メソッドを呼び出し、ユーザーから取得したユーザー名とパスワードの値を渡します。 + + [!code-csharp[ClientApplicationServices#318](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Class1.cs#318)] + [!code-vb[ClientApplicationServices#318](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Class1.vb#318)] + +### Windows 認証でユーザーを認証するには + +- `static` メソッドを呼び出し、空の文字列をパラメーターに渡します。 このメソッド呼び出しでは常に `true` が返され、Windows ID が含まれるユーザーのクッキー キャッシュにクッキーが追加されます。 + + [!code-csharp[ClientApplicationServices#319](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Class1.cs#319)] + [!code-vb[ClientApplicationServices#319](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Class1.vb#319)] + +## 信頼性の高いプログラミング + このトピックのコード例は、Windows クライアント アプリケーションでの認証の最も単純な使用方法を示しています。 ただし、クライアント アプリケーション サービス、およびフォーム認証で `static` メソッドを呼び出すと、 がスローされる場合があります。 これは、認証サービスが使用できないことを示します。 この例外を処理する方法の例は、「[チュートリアル : クライアント アプリケーション サービスの使用](../../../docs/framework/common-client-technologies/walkthrough-using-client-application-services.md)」を参照してください。 + +## 参照 + [クライアント アプリケーション サービス](../../../docs/framework/common-client-technologies/client-application-services.md) + [クライアント アプリケーション サービスの概要](../../../docs/framework/common-client-technologies/client-application-services-overview.md) + [方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md) + [チュートリアル : クライアント アプリケーション サービスの使用](../../../docs/framework/common-client-technologies/walkthrough-using-client-application-services.md) + [Using Forms Authentication with Microsoft Ajax](../Topic/Using%20Forms%20Authentication%20with%20Microsoft%20Ajax.md) \ No newline at end of file diff --git a/docs/framework/common-client-technologies/index.md b/docs/framework/common-client-technologies/index.md new file mode 100644 index 00000000000..59e5479afde --- /dev/null +++ b/docs/framework/common-client-technologies/index.md @@ -0,0 +1,27 @@ +--- +title: ".NET Framework の共通クライアント技術 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 733fc580-337e-4b7c-9756-b70798c18bc3 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# .NET Framework の共通クライアント技術 +このセクションでは、クライアント アプリケーションで使用できるさまざまな技術について説明します。 + +## このセクションの内容 + [Manipulations and Inertia](../../../docs/framework/common-client-technologies/manipulations-and-inertia.md) + Microsoft Windows Presentation Foundation \(WPF\) や Microsoft XNA などのさまざまな UI フレームワークで操作と慣性のプロセッサ クラスを使用する方法について説明します。 + + [クライアント アプリケーション サービス](../../../docs/framework/common-client-technologies/client-application-services.md) + Windows ベースのアプリケーションで Microsoft ASP.NET 2.0 AJAX Extensions に含まれる [!INCLUDE[ajax_current_short](../../../includes/ajax-current-short-md.md)] のログイン、ロール、およびプロファイル アプリケーション サービスを使用する方法を説明します。 \ No newline at end of file diff --git a/docs/framework/common-client-technologies/manipulations-and-inertia-overview.md b/docs/framework/common-client-technologies/manipulations-and-inertia-overview.md new file mode 100644 index 00000000000..ee566ef2eca --- /dev/null +++ b/docs/framework/common-client-technologies/manipulations-and-inertia-overview.md @@ -0,0 +1,82 @@ +--- +title: "Manipulations and Inertia Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dd31b89b-eab6-45a1-8d0b-11e0eb84b234 +caps.latest.revision: 7 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 7 +--- +# Manipulations and Inertia Overview +*操作* では、*マニピュレーター* を使用して、ユーザー インターフェイス \(UI\) 要素の移動、回転、サイズ変更を行えます。 マニピュレーターは、マウス、または \(タッチ対応のシナリオの場合\) スタイラスや指を意味します。 + + *慣性* では、要素上で摩擦力をシミュレートして、動いている UI 要素の実際の動作をエミュレートします。 これにより、要素は \(直線運動と角運動の両方で\) 徐々に動作の速度を遅らせてから停止します。 この記事では、.NET Framework の操作と慣性の概要を説明します。 + +## 操作 + 操作では、マニピュレーターのコレクションを複合オブジェクトとして扱います。 アプリケーションは、個々 のコンポーネントではなく複合オブジェクトへの変更を追跡できます。 + + 次の図の画像を考えてください。 ユーザーは 2 つのマニピュレーターを使用して、画像の移動、回転、拡大\/縮小を行えます。 各マニピュレーターへの変更は、他のマニピュレーターと一緒に解釈されます。 + + たとえば、画像に 2 つのマニピュレーター \(1 および 2\) があり、マニピュレーター 1 を \+Y 方向 \(下\) に移動する場合、画像への変更はマニピュレーター 2 で何が発生するかによって変わります。 マニピュレーター 2 も \+Y 方向 \(下\) に移動する場合、画像は \+Y 方向に移動します。 しかし、マニピュレーター 2 が変更しない場合、または \-Y 方向 \(上\) に移動する場合は、画像は小さくなるか回転します。 + + ![2 本の指で操作中の仮想写真](../../../docs/framework/common-client-technologies/media/manipulation-resize.png "Manipulation\_Resize") + + 2 つのマニピュレーターによって操作されている画像 + + 操作の処理には、マニピュレーターのサブセットを監視し、個別にではなく一緒に動作するかのように解釈するフレームワークがあります。 複数の操作プロセッサのオブジェクトを同時に作成することができ、アプリケーションで UI 要素ごとに 1 つのオブジェクトが操作されます。 操作プロセッサには、[.NET イベント](http://msdn.microsoft.com/library/17sde2xt.aspx) を通じて、どの入力デバイスを観察するかが通知され、それは操作を報告します。 + + 操作プロセッサには、操作する特定の要素に関する情報はありません。 アプリケーションは、アプリケーション固有の要素への変更を個別に適用します。 たとえば、アプリケーションは画像に変換を適用したり、新しい場所に、または新しいサイズや向きに再描画して表示したりします。 + + 操作は 2 次元 \(2\-D\) の[アフィン変換](http://msdn.microsoft.com/library/ms533810\(VS.85\).aspx)用に設計されています。 アフィン変換には、変換、回転、拡大\/縮小などがあります。 + +### 操作のパーツ + 操作は、 オブジェクトのコレクションです。 この集約的な操作は、最初の場所と楕円で表されます。 最初の場所は、要素を操作しているすべてのマニピュレーターの平均位置です。 楕円は、始点から各 オブジェクトまでの平均距離である半径です。 + + ![操作の一部](../../../docs/framework/common-client-technologies/media/manipulation-definition.png "Manipulation\_Definition") + + 2 つのマニピュレーター \(1 と 2\)、始点、および楕円によって操作を指定します。 + + マニピュレーターは UI 要素に対して追加、移動、または削除を行い、アプリケーションは メソッドを呼び出して オブジェクトを更新します。 最初に操作が開始するとき、 イベントが発生します。 + +> [!NOTE] +> 操作の処理は、フレームベースの環境の更新で使用すると、より効率的です。 Microsoft XNA アプリケーションで操作の処理を使用する場合は問題はありません。これは、XNA フレームワークが [Game.Update](http://msdn.microsoft.com/library/microsoft.xna.framework.game.update.aspx) メソッドを使用してフレームベースの更新を行っているためです。 別の環境 \(WinForms など\) では、操作を収集し、定期的にバッチとして メソッドに送信するために、独自のフレームベースのロジックを用意する必要がある場合があります。 + + マニピュレーターの数またはその場所が変化すると、 イベントが発生します。 イベント ハンドラーに渡される オブジェクトのプロパティでは、始点、スケール、回転、および最後のイベント以降に発生した変換の変化を指定します。 マニピュレーターが移動したときや、マニピュレーターが追加または削除されたときには、操作の始点が変化します。 変換値では、操作での X 方向および Y 方向の移動量を指定します。 + + 新しい値を使用して、アプリケーションは UI 要素を再描画します。 + + ![連絡先 A を右側に移動した後の操作](../../../docs/framework/common-client-technologies/media/manipulation-changed.png "Manipulation\_Changed") + + マニピュレーター 1 が移動して始点を変化させる + + 操作に関連付けられている最後のマニピュレーターが オブジェクトから削除されると、 イベントが発生します。 + +### 操作の処理モデル + 操作プロセッサは、直接使用モデルを使用します。 この単純なモデルでは、アプリケーションは操作プロセッサに入力イベントの詳細を渡す必要があります。 入力イベントは、マウス デバイス、スタイラス、指など、任意の入力プリミティブによって発生することがあります。 このプロセスでは、直接フィルター処理メカニズムと単純な使用モデルを提供しているため、アプリケーションは、必要なときに入力イベントをバッチ処理することができます。 + + アプリケーションが操作の処理に入力プリミティブを含めるようにするには、入力プリミティブの内容から 構造体を作成してから、 メソッドを使用してその構造体を操作プロセッサに渡します。 操作プロセッサは、適切な方法でビジュアル コンポーネントを更新するためにアプリケーションが処理する必要のあるイベントを発生させます。 + + ![直接使用モデルの操作フロー](../../../docs/framework/common-client-technologies/media/manipulation-flow.png "Manipulation\_Flow") + + 操作の処理モデル + +## 慣性 + 慣性プロセッサを使用すると、アプリケーションは、実際の動作をシミュレートすることで、UI 要素の位置、向き、その他のプロパティを推定できます。 + + たとえば、ユーザーが要素をフリックすると、要素は引き続き動き、減速し、徐々に停止します。 慣性プロセッサは、2\-D のアフィン値 \(始点、スケール、変換、回転\) を指定した減速率で指定した時間をかけて変化させることで、この動作を実行します。 + + 操作の処理と同様、慣性プロセッサには、特定の UI 要素に関する情報はありません。 オブジェクトで発生するイベントに対応して、アプリケーションは、アプリケーション固有の要素への変更を個別に適用します。 + + 慣性の処理と操作の処理は、多くの場合、一緒に使用されます。 これらのインターフェイスは類似しており、発生するイベントは \(場合によって\) 同一です。 一般に、UI 要素の操作が完了すると、慣性の処理が開始します。 これは、 イベントをリッスンして、そのイベント ハンドラーから慣性の処理を開始することで実現します。 + +## 参照 + \ No newline at end of file diff --git a/docs/framework/common-client-technologies/manipulations-and-inertia.md b/docs/framework/common-client-technologies/manipulations-and-inertia.md new file mode 100644 index 00000000000..f0057f6e921 --- /dev/null +++ b/docs/framework/common-client-technologies/manipulations-and-inertia.md @@ -0,0 +1,30 @@ +--- +title: "Manipulations and Inertia | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3731bf83-dba5-478c-94a5-1d7c36443073 +caps.latest.revision: 3 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 3 +--- +# Manipulations and Inertia +操作と慣性のプロセッサ クラスにより、アプリケーションは、自然かつ直感的な方法で画面上のユーザー インターフェイス \(UI\) 要素を移動できるようになります。 操作では、ユーザーはマウス デバイス、スタイラス、\(タッチ機能が有効になっているシナリオでは\) 指などのマニピュレーターを使用してコンポーネントを移動、回転、およびサイズ変更できます。 慣性では、UI 要素の摩擦力をシミュレートすることによって、動作中の UI 要素の現実の世界での動作がエミュレートされます。 これにより、停止位置に移動するまでの要素の動きは \(線形および角度の両方で\) 徐々に遅くなります。 + + 操作および慣性の処理は、Microsoft Windows Presentation Foundation \(WPF\) や Microsoft XNA などのさまざまな UI フレームワークで使用できます。 + +## このセクションの内容 + [Manipulations and Inertia Overview](../../../docs/framework/common-client-technologies/manipulations-and-inertia-overview.md) + + [Using Manipulations and Inertia in an XNA Application](../../../docs/framework/common-client-technologies/use-manipulations-and-inertia-in-an-xna-application.md) + +## 関連項目 + \ No newline at end of file diff --git a/docs/framework/common-client-technologies/media/casdesigner.png b/docs/framework/common-client-technologies/media/casdesigner.png new file mode 100644 index 00000000000..cadc5248aaf Binary files /dev/null and b/docs/framework/common-client-technologies/media/casdesigner.png differ diff --git a/docs/framework/common-client-technologies/media/casdialog.png b/docs/framework/common-client-technologies/media/casdialog.png new file mode 100644 index 00000000000..b8759aa38cc Binary files /dev/null and b/docs/framework/common-client-technologies/media/casdialog.png differ diff --git a/docs/framework/common-client-technologies/media/manipulation-flow.png b/docs/framework/common-client-technologies/media/manipulation-flow.png new file mode 100644 index 00000000000..418b8ef4a9b Binary files /dev/null and b/docs/framework/common-client-technologies/media/manipulation-flow.png differ diff --git a/docs/framework/common-client-technologies/use-manipulations-and-inertia-in-an-xna-application.md b/docs/framework/common-client-technologies/use-manipulations-and-inertia-in-an-xna-application.md new file mode 100644 index 00000000000..27d528dc966 --- /dev/null +++ b/docs/framework/common-client-technologies/use-manipulations-and-inertia-in-an-xna-application.md @@ -0,0 +1,41 @@ +--- +title: "Using Manipulations and Inertia in an XNA Application | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b7c18905-850c-4da4-8977-a074406a4263 +caps.latest.revision: 7 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 7 +--- +# Using Manipulations and Inertia in an XNA Application +この記事では、操作と慣性の処理を Microsoft XNA アプリケーションで使用して、ゲーム ピースの動きを制御する方法について説明します。 この記事をお読みになる前に、「[Manipulations and Inertia Overview](../../../docs/framework/common-client-technologies/manipulations-and-inertia-overview.md)」トピックの内容、および基本的な XNA のプログラミングの概念についてよく理解してください。 + + この記事で説明するタスクを実行するには、XNA プロジェクトが アセンブリを参照しているとともに、[XNA Game Studio](http://msdn.microsoft.com/library/bb200104.aspx) \([ダウンロード](http://www.microsoft.com/downloads/details.aspx?FamilyId=7D70D6ED-1EDD-4852-9883-9A33C0AD8FEE&displaylang=en)\) がコンピューターにインストールされて、プロジェクトが XNA アセンブリを参照できる状態になっている必要があります。 + +## 機能の概要 + この記事では、操作と慣性の処理を使用するゲーム ピースを表すカスタム クラスの作成方法を示します。 このクラスを使用すると、マウスでゲーム ピースをドラッグしてから放すことで、画面全体で操作できるようになります。 ゲーム ピースを放すと、慣性の処理により、ゲーム ピースの移動速度が徐々に低下します。 直線運動と角運動の両方が行われます。 + + ![単純な操作と慣性のアプリケーション](../../../docs/framework/common-client-technologies/media/ndp-gamexna.png "NDP\_GameXna") + + さらに、複数のゲーム ピースを管理するカスタム コレクションが作成されます。 これにより、XNA Game クラスから必要とされる処理が簡略化します。 + + [Creating the GamePiece Class](../../../docs/framework/common-client-technologies/creating-the-gamepiece-class.md) + + [Creating the GamePieceCollection Class](../../../docs/framework/common-client-technologies/creating-the-gamepiececollection-class.md) + + [Creating the Game1 Class](../../../docs/framework/common-client-technologies/creating-the-game1-class.md) + + [Full Code Listings](../../../docs/framework/common-client-technologies/full-code-listings.md) + +## 参照 + + [Manipulations and Inertia Overview](../../../docs/framework/common-client-technologies/manipulations-and-inertia-overview.md) \ No newline at end of file diff --git a/docs/framework/common-client-technologies/walkthrough-using-client-application-services.md b/docs/framework/common-client-technologies/walkthrough-using-client-application-services.md new file mode 100644 index 00000000000..19a72b2c49d --- /dev/null +++ b/docs/framework/common-client-technologies/walkthrough-using-client-application-services.md @@ -0,0 +1,548 @@ +--- +title: "チュートリアル : クライアント アプリケーション サービスの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション サービス ホスト [クライアント アプリケーション サービス]" + - "クライアント アプリケーション サービス, チュートリアル" +ms.assetid: bb7c8950-4517-4dae-b705-b74a14059b26 +caps.latest.revision: 47 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 47 +--- +# チュートリアル : クライアント アプリケーション サービスの使用 +このトピックでは、ユーザーを認証し、ユーザーのロールと設定を取得するクライアント アプリケーション サービスを使用する Windows アプリケーションを作成する方法について説明します。 + + このチュートリアルでは次のタスクを実行します。 + +- Windows フォーム アプリケーションを作成し、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] プロジェクト デザイナーを使用してクライアント アプリケーション サービスの有効化および構成を行います。 + +- アプリケーション サービスのホストと、クライアント構成のテストを行う、簡単な ASP.NET Web サービス アプリケーションを作成します。 + +- フォーム認証をアプリケーションに追加します。 最初に、ハード コーディングされたユーザー名とパスワードを使用して、サービスをテストします。 次に、アプリケーション構成でログイン フォームを資格情報プロバイダーとして指定して、ログイン フォームを追加します。 + +- "manager” ロールのユーザーのみに対してボタンを有効にして表示し、ロール ベースの機能を追加します。 + +- Web 設定にアクセスします。 最初に、プロジェクト デザイナーの **\[設定\]** ページで認証済みの \(テスト\) ユーザーの Web 設定を読み込みます。 次に、Windows フォーム デザイナーを使用して、テキスト ボックスを Web 設定にバインドします。 最後に、変更済みの値をサーバーに保存し直します。 + +- ログアウトを実装します。 フォームにログアウト オプションを追加して、logout メソッドを呼び出します。 + +- オフライン モードを有効にします。 ユーザーが接続状態を指定できるように、チェック ボックスを用意します。 次に、この値を使用して、クライアント アプリケーション サービス プロバイダーが Web サービスにアクセスするのではなく、ローカルにキャッシュされたデータを使用するかどうかを指定します。 最後に、アプリケーションがオンライン モードに戻るときに、現在のユーザーを再認証します。 + +## 必須コンポーネント + このチュートリアルを実行するには、次のコンポーネントが必要です。 + +- [!INCLUDE[vs_orcas_long](../../../includes/vs-orcas-long-md.md)]。 + +## クライアント アプリケーションの作成 + 最初に、Windows フォーム プロジェクトを作成します。 このチュートリアルでは Windows フォームを使用します。これはより多くの人が使い慣れているためです。しかし、プロセスは Windows Presentation Foundation \(WPF\) プロジェクトと類似しています。 + +#### クライアント アプリケーションを作成し、クライアント アプリケーション サービスを有効にするには + +1. [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] で、**\[ファイル\] | \[新規作成\] | \[プロジェクト\]** メニュー オプションをクリックします。 + +2. **\[新しいプロジェクト\]** ダイアログ ボックスの **\[プロジェクトの種類\]** ペインで、**\[Visual Basic\]** または **\[Visual C\#\]** ノードを展開し、プロジェクトの種類 **\[Windows\]** をクリックします。 + +3. **\[.NET Framework 3.5\]** が選択されていることを確認してから、**\[Windows フォーム アプリケーション\]** テンプレートをクリックします。 + +4. プロジェクトの **\[名前\]** を `ClientAppServicesDemo` に変更してから、**\[OK\]** をクリックします。 + + [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] に新しい Windows フォーム プロジェクトが開きます。 + +5. **\[プロジェクト\]** メニューで、**ClientAppServicesDemo** プロパティを選択します。 + + プロジェクト デザイナーが表示されます。 + +6. **\[サービス\]** タブで、**\[クライアント アプリケーション サービスを有効にする\]** をクリックします。 + +7. **\[フォーム認証\]** が選択されていることを確認してから、**\[認証サービスの場所\]**、**\[ロール サービスの場所\]**、および **\[Web 設定サービスの場所\]** を `http://localhost:55555/AppServices` に設定します。 + +8. [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] の **\[アプリケーション\]** タブで、**\[認証モード\]** を **\[アプリケーション定義\]** に設定します。 + + デザイナーは、アプリケーションの app.config ファイルに指定された設定を格納します。 + + この時点で、アプリケーションは、同じホストの 3 つのすべてのサービスにアクセスするように構成されます。 次のセクションでは、簡単な Web サービス アプリケーションとしてホストを作成し、クライアントの構成をテストできるようにします。 + +## アプリケーションのサービス ホストを作成する + このセクションでは、ローカルの SQL Server Compact データベース ファイルのユーザー データにアクセスする簡単な Web サービス アプリケーションを作成します。 次に、[ASP.NET Web Site Administration Tool](../Topic/ASP.NET%20Web%20Site%20Administration%20Tool.md)を使用してデータベースにデータを入力します。 この簡単な構成では、クライアント アプリケーションを短時間でテストすることができます。 あるいは、Web サービス ホストを構成して、完全な SQL Server データベースから、またはユーザー設定の クラスと クラスを介してユーザー データにアクセスすることもできます。 詳細については、「[Creating and Configuring the Application Services Database for SQL Server](../Topic/Creating%20and%20Configuring%20the%20Application%20Services%20Database%20for%20SQL%20Server.md)」を参照してください。 + + 次の手順では、AppServices の Web サービスを作成および構成します。 + +#### アプリケーション サービス ホストを作成および構成するには + +1. **\[ソリューション エクスプローラー\]** で、ClientAppServicesDemo ソリューションを選択してから、**\[ファイル\]** メニューで **\[追加\] | \[新しいプロジェクト\]** の順にクリックします。 + +2. **\[新しいプロジェクトの追加\]** ダイアログ ボックスの **\[プロジェクトの種類\]** ペインで、**\[Visual Basic\]** または **\[Visual C\#\]** ノードを展開し、プロジェクトの種類 **\[Web\]** をクリックします。 + +3. **\[.NET Framework 3.5\]** が選択されていることを確認してから、**\[ASP.NET サービス アプリケーション\]** テンプレートをクリックします。 + +4. プロジェクトの **\[名前\]** を `AppServices` に変更してから、**\[OK\]** をクリックします。 + + 新しい ASP.NET Web サービス アプリケーション プロジェクトがソリューションに追加され、Service1.asmx.vb または Service1.asmx.cs ファイルがエディターに表示されます。 + + > [!NOTE] + > この例では、Service1.asmx.vb または Service1.asmx.cs ファイルは使用しません。 作業環境をきちんと整頓したい場合は、このファイルを閉じて **\[ソリューション エクスプローラー\]** から削除してください。 + +5. **\[ソリューション エクスプローラー\]** で、AppServices プロジェクトを選択し、**\[プロジェクト\]** メニューで **\[AppServices のプロパティ\]** をクリックします。 + + プロジェクト デザイナーが表示されます。 + +6. **\[Web\]** タブで、**\[Visual Studio 開発サーバーを使用する\]** が選択されていることを確認します。 + +7. **\[特定のポート\]** をクリックし、値に `/AppServices` を指定してから、**\[仮想パス\]** を `55555` に設定します。 + +8. すべてのファイルを保存します。 + +9. **\[ソリューション エクスプローラー\]** で、Web.config を開き、`` の開始タグを検索します。 + +10. `` タグの前に次のマークアップを追加します。 + + このマークアップの `authenticationService`、`profileService`、および `roleService` の各要素で、アプリケーション サービスの有効化と構成を行います。 テスト目的で、`authenticationService` 要素の `requireSSL` 属性が "false" に設定されています。`profileService` 要素の `readAccessProperties` 属性と `writeAccessProperties` 属性は、`WebSettingsTestText` プロパティが読み取りと書き込みが可能であることを示しています。 + + > [!NOTE] + > 実稼働コードでは、HTTPS プロトコルを使用して、常に Secure Socket Layer \(SSL\) 上の認証サービスにアクセスする必要があります。 SSL の設定方法については、「[SSL \(Secure Sockets Layer\) を構成する](http://go.microsoft.com/fwlink/?LinkId=91844)」を参照してください。 + + ``` + + + + + + + + + + ``` + +11. 次のマークアップを、`` 要素内に収まるように、`` の開始タグの後に追加します。 + + `profile` 要素は、`WebSettingsTestText` という名前の 1 つの Web 設定を構成します。 + + ``` + + + + + + + ``` + + 次の手順では、ASP.NET Web サイト管理ツールを使用して、サービスの構成を完了するとともに、ローカル データベース ファイルにデータを読み込みます。 同じ名前の 2 つのロールに属する、`employee` と `manager` という名前の 2 人のユーザーを追加します。 ユーザーのパスワードはそれぞれ、`employee!` と `manager!` です。 + +#### メンバーシップとロールを構成するには + +1. **\[ソリューション エクスプローラー\]** で、AppServices プロジェクトを選択し、**\[プロジェクト\]** メニューで **\[ASP.NET の構成\]** をクリックします。 + + **ASP.NET Web サイト管理ツール**が表示されます。 + +2. **\[セキュリティ\]** タブで、**\[セキュリティ設定ウィザードを使用して手順に従ってセキュリティを構成する\]** をクリックします。 + + **\[セキュリティ セットアップ ウィザード\]** が表示され、**\[ようこそ\]** 手順が表示されます。 + +3. **\[次へ\]** をクリックします。 + + **\[アクセス方法の選択\]** 手順が表示されます。 + +4. **\[インターネットから\]** を選択します。 そうすることで、Windows 認証ではなくフォーム認証を使用するようサービスが構成されます。 + +5. **\[次へ\]** を 2 回クリックします。 + + **\[ロールの定義\]** 手順が表示されます。 + +6. **\[この Web サイトのロールを有効化\]** をクリックします。 + +7. **\[次へ\]** をクリックします。**\[新しいロールの作成\]** フォームが表示されます。 + +8. **\[新しいロール名\]** テキスト ボックスで、「`manager`」と入力してから、**\[ロールの追加\]** をクリックします。 + + 指定した値が入った **\[既存のロール\]** テーブルが表示されます。 + +9. **\[新しいロール名\]** テキスト ボックスで、`manager` を `employee` に置き換えてから、**\[ロールの追加\]** をクリックします。 + + **\[既存のロール\]** テーブルに新しい値が表示されます。 + +10. **\[次へ\]** をクリックします。 + + **\[新しいユーザーの追加\]** 手順が表示されます。 + +11. **\[ユーザーの作成\]** フォームで、次の値を指定します。 + + ||| + |-|-| + |**ユーザー名**|`manager`| + |**パスワード**|`manager!`| + |**パスワードの確認入力**|`manager!`| + |**電子メール**|`manager@contoso.com`| + |**セキュリティの質問**|`manager`| + |**セキュリティ返答**|`manager`| + +12. **\[ユーザーの作成\]** をクリックします。 + + 成功のメッセージが表示されます。 + + > [!NOTE] + > フォームでは **\[電子メール\]**、**\[秘密の質問\]**、および **\[秘密の答え\]** の値が必要ですが、この例では使用しません。 + +13. **\[続行\]** をクリックします。 + + **\[ユーザーの作成\]** フォームが再表示されます。 + +14. **\[ユーザーの作成\]** フォームで、次の値を指定します。 + + ||| + |-|-| + |**ユーザー名**|`employee`| + |**パスワード**|`employee!`| + |**パスワードの確認入力**|`employee!`| + |**電子メール**|`employee@contoso.com`| + |**セキュリティの質問**|`Employee`| + |**セキュリティ返答**|`employee`| + +15. **\[ユーザーの作成\]** をクリックします。 + + 成功のメッセージが表示されます。 + +16. **\[完了\]** をクリックします。 + + **Web サイト管理ツール**が再表示されます。 + +17. **\[管理者ユーザー\]** をクリックします。 + + ユーザーの一覧が表示されます。 + +18. **employee** ユーザーの **\[ロールの編集\]** をクリックしてから、**employee** ロールをクリックします。 + +19. **manager** ユーザーの **\[ロールの編集\]** をクリックしてから、**manager** ロールをクリックします。 + +20. **Web サイト管理ツール**をホストするブラウザのウィンドウを閉じます。 + +21. 変更した Web.config ファイルを再度読み込むかどうかを尋ねるメッセージ ボックスが表示された場合は、**\[はい\]** をクリックします。 + + これにより、Web サービスのセットアップが完了します。 この時点で、F5 キーを押すとクライアント アプリケーションを実行します。**ASP.NET 開発サーバー**は、クライアント アプリケーションとともに自動的に起動します。 サーバーは、アプリケーションが終了しても引き続き実行しますが、アプリケーションを再起動するとサーバーも再起動します。 そうすることで、Web.config に対して行われたすべての変更を検出することができます。 + + サーバーを手動で停止するには、タスク バーの通知領域にある ASP.NET 開発サーバーのアイコンを右クリックしてから、**\[停止\]** をクリックします。 これは、時折クリーン再起動を確実に行うために役立ちます。 + +## フォーム認証を追加する + 次の手順では、ユーザーの検証を試みるとともに、ユーザーが無効な資格情報を指定した場合にアクセスを拒否するコードをメイン フォームに追加します。 ハードコーディングされたユーザー名とパスワードを使用して、サービスをテストします。 + +#### アプリケーション コードでユーザーを検証するには + +1. **\[ソリューション エクスプローラー\]** の ClientAppServicesDemo プロジェクトで、System.Web アセンブリへの参照を追加します。 + +2. Form1 ファイルを選択し、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] のメイン メニューから **\[表示\] | \[コード\]** をクリックします。 + +3. コード エディターで、Form1 ファイルの先頭に次のステートメントを追加します。 + + [!code-csharp[ClientApplicationServices#001](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#001)] + [!code-vb[ClientApplicationServices#001](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#001)] + +4. **\[ソリューション エクスプローラー\]** で、Form1 をダブルクリックしてデザイナーを表示します。 + +5. デザイナーで、フォーム領域をダブルクリックして、`Form1_Load` という名前の イベント ハンドラーを生成します。 + + `Form1_Load` メソッドにカーソルがある状態でコード エディターが表示されます。 + +6. `Form1_Load` メソッドに次のコードを追加します。 + + このコードは認証されていないユーザー アクセスを拒否してアプリケーションを終了します。 あるいは、認証されていないユーザーによるフォームへのアクセスを許可するものの、特定の機能へのアクセスを拒否することもできます。 通常、このようにユーザー名とパスワードをハードコーディングすることはありませんが、テスト目的には役立ちます。 次のセクションではこのコードをより堅牢なコードに置き換えて、ログイン ダイアログ ボックスを表示する、例外処理を含んだものにします。 + + `static` メソッドが [!INCLUDE[dnprdnext](../../../includes/dnprdnext-md.md)] にあることに注意してください。 このメソッドは、構成済みの認証プロバイダーに作業を委任し、認証が成功した場合は `true` を返します。 アプリケーションに、クライアントの認証プロバイダーへの直接の参照は必要ありません。 + + [!code-csharp[ClientApplicationServices#300](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Class1.cs#300)] + [!code-vb[ClientApplicationServices#300](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Class1.vb#300)] + + ここで、F5 キーを押してアプリケーションを実行します。正しいユーザー名とパスワードを指定しているため、フォームが表示されます。 + +> [!NOTE] +> アプリケーションを実行できない場合は、ASP.NET 開発サーバーを停止してください。 サーバーを再起動する際、ポートが 55555 に設定されていることを確認します。 + + 代わりにエラー メッセージを表示するには、 のパラメーターを変更します。 たとえば、2 番目の `"manager!"` パラメーターを `"MANAGER"` などの正しくないパスワードに置き換えます。 + +## 資格情報プロバイダーとしてログイン フォームを追加する + アプリケーション コードでユーザーの資格情報を取得して、 メソッドに渡すことができます。 しかし、資格情報を取得するコードをアプリケーション コードと分けておくと、後でこれを変更するときに便利な場合もあります。 + + 次の手順では、資格情報プロバイダーを使用するようにアプリケーションを構成してから、両方のパラメーターに を渡すように メソッドの呼び出しを変更します。 文字列が空の場合、 メソッドは構成済みの資格情報プロバイダーの メソッドを呼び出します。 + +#### アプリケーションが資格情報プロバイダーを使用するように構成するには + +1. **\[ソリューション エクスプローラー\]** で、ClientAppServicesDemo プロジェクトを選択し、**\[プロジェクト\]** メニューで **\[ClientAppServicesDemo のプロパティ\]** をクリックします。 + + プロジェクト デザイナーが表示されます。 + +2. **\[サービス\]** タブで、**\[省略可能な資格情報プロバイダー\]** を次の値に設定します。 この値は、アセンブリ修飾型名を示しています。 + + ``` + ClientAppServicesDemo.Login, ClientAppServicesDemo + ``` + +3. Form1 コード ファイルで、`Form1_Load` メソッドのコードを次のコードに置き換えます。 + + このコードは、ようこそメッセージを表示してから、次の手順で追加する `ValidateUsingCredentialsProvider` メソッドを呼び出します。 ユーザーが認証されない場合、`ValidateUsingCredentialsProvider` メソッドは `false` を返し、`Form1_Load` メソッドが戻ります。 これにより、アプリケーションが終了するまでそれ以上コードを実行できなくなります。 ようこそメッセージは、アプリケーションが再起動するときが明確になるため便利です。 このチュートリアルの後半でログアウトを実装するときに、アプリケーションを再起動するコードを追加します。 + + [!code-csharp[ClientApplicationServices#011](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#011)] + [!code-vb[ClientApplicationServices#011](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#011)] + +4. `Form1_Load` メソッドの後に次のメソッドを追加します。 + + このメソッドは、`static` メソッドに空の文字列を渡すことによって、\[ログイン\] ダイアログ ボックスを表示させます。 認証サービスが使用できない場合、 メソッドは をスローします。 この場合、`ValidateUsingCredentialsProvider` メソッドは警告メッセージを表示し、オフライン モードで再試行するかどうかをユーザーに尋ねます。 この機能には、「[方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md)」で説明する **\[オフラインでログインできるようにパスワードのハッシュをローカルに保存する\]** 機能が必要です。 この機能は、新しいプロジェクトでは既定で有効になっています。 + + ユーザーが検証されない場合、`ValidateUsingCredentialsProvider` メソッドはエラー メッセージを表示し、アプリケーションを終了します。 最後に、このメソッドは、認証の結果を返します。 + + [!code-csharp[ClientApplicationServices#020](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#020)] + [!code-vb[ClientApplicationServices#020](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#020)] + +### ログイン フォームを作成する + 資格情報プロバイダーとは、 インターフェイスを実装するクラスです。 このインターフェイスには、 オブジェクトを返す という名前の 1 つのメソッドがあります。 次の手順ではログイン ダイアログ ボックスの作成方法を示します。これは を実装してダイアログ ボックスを表示し、ユーザー指定の資格情報を返します。 + + [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] は **\[ログイン フォーム\]** テンプレートを備えているため、[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] と C\# で手順が別々に説明されています。 このテンプレートを使用すると、時間の節約になり、コーディングの手間も省けます。 + +##### Visual Basic で資格情報プロバイダーとしてログイン ダイアログ ボックスを作成するには + +1. **\[ソリューション エクスプローラー\]** で、ClientAppServicesDemo プロジェクトを選択してから、**\[プロジェクト\]** メニューで **\[新しい項目の追加\]** をクリックします。 + +2. **\[新しい項目の追加\]** ダイアログ ボックスで、**\[ログイン フォーム\]** テンプレートを選択し、項目の **\[名前\]** を `Login.vb` に変更してから、**\[追加\]** をクリックします。 + + Windows フォーム デザイナーにログイン ダイアログ ボックスが表示されます。 + +3. デザイナーで、**\[OK\]** ボタンをクリックし、**\[プロパティ\]** ウィンドウで、\[`DialogResult`\] を ”`OK`" に設定します。 + +4. デザイナーで、`CheckBox` コントロールを、**\[パスワード\]** テキスト ボックスの下にあるフォームに追加します。 + +5. **\[プロパティ\]** ウィンドウで、**\[\(名前\)\]** の値を ”`rememberMeCheckBox`" と指定し、**\[テキスト\]** の値を "`&Remember me`” と指定します。 + +6. [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] のメイン メニューで、**\[表示\] | \[コード\]** の順にクリックします。 + +7. コード エディターで、ファイルの先頭に次のコードを追加します。 + + [!code-vb[ClientApplicationServices#101](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Login.vb#101)] + +8. クラスが インターフェイスを実装するようにクラスのシグネチャを変更します。 + + [!code-vb[ClientApplicationServices#110](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Class1.vb#110)] + +9. カーソルが `IClientformsAuthenticationCredentialsProvider` の後にあることを確認してから、Enter キーを押して `GetCredentials` メソッドを生成します。 + +10. の実装を見つけて、次のコードに置き換えます。 + + [!code-vb[ClientApplicationServices#120](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Login.vb#120)] + + 次の C\# の手順では、簡単なログイン ダイアログ ボックス用のコード全体を一覧で示します。 このダイアログ ボックスのレイアウトは少し粗雑ですが、重要な部分は の実装です。 + +##### C\# で資格情報プロバイダーとしてログイン ダイアログ ボックスを作成するには + +1. **\[ソリューション エクスプローラー\]** で、ClientAppServicesDemo プロジェクトを選択してから、**\[プロジェクト\]** メニューで **\[クラスの追加\]** をクリックします。 + +2. **\[新しい項目の追加\]** ダイアログ ボックスで、**\[名前\]** を `Login.cs` に変更してから、**\[追加\]** をクリックします。 + + コード エディターで Login.cs ファイルが開きます。 + +3. 既定のコードを次のコードに置き換えます。 + + [!code-csharp[ClientApplicationServices#200](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Login.cs#200)] + + アプリケーションを実行してログイン ダイアログ ボックスを表示できるようになりました。 このコードをテストするには、有効と無効の両方のさまざまな資格情報を試し、資格情報が有効な場合にのみフォームにアクセスできることを確認します。 有効なユーザー名は、`employee` と `manager` になります。パスワードはそれぞれ、`employee!` と `manager!` です。 + +> [!NOTE] +> この時点で **\[アカウントを記憶\]** は選択しないでください。そうしないと、このチュートリアルの後半でログアウトを実装するまで、別のユーザーとしてログインできなくなります。 + +## ロール ベースの機能を追加する + 次の手順では、フォームにボタンを追加して、manager ロールのユーザーにだけこれを表示します。 + +#### ユーザーのロールに基づいてユーザー インターフェイスを変更するには + +1. **\[ソリューション エクスプローラー\]** の ClientAppServicesDemo プロジェクトで、Form1 を選択してから、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] のメイン メニューで **\[表示\] | \[デザイナー\]** をクリックします。 + +2. デザイナーで、**\[ツールボックス\]** からフォームに コントロールを追加します。 + +3. **\[プロパティ\]** ウィンドウで、ボタンの次のプロパティを設定します。 + + |プロパティ|値| + |-----------|-------| + |**\(名前\)**|managerOnlyButton| + |**テキスト**|&Manager task| + |**Visible**|`False`| + +4. Form1 のコード エディターで、`Form1_Load` メソッドの末尾に次のコードを追加します。 + + このコードは、次の手順で追加する `DisplayButtonForManagerRole` メソッドを呼び出します。 + + [!code-csharp[ClientApplicationServices#012](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#012)] + [!code-vb[ClientApplicationServices#012](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#012)] + +5. 次のメソッドを Form1 クラスの末尾に追加します。 + + このメソッドは、`static` プロパティによって返される メソッドを呼び出します。 クライアント アプリケーション サービスを使用するように構成されたアプリケーションで、このプロパティは を返します。 このクラスは インターフェイスを実装しているため、明示的に参照する必要はありません。 + + ユーザーが "manager" ロールの場合、`DisplayButtonForManagerRole` メソッドは `managerOnlyButton` の プロパティを `true` に設定します。 また、このメソッドは、 がスローされるとエラー メッセージを表示します。これは、ロール サービスが使用できないことを示します。 + + > [!NOTE] + > ユーザー ログインの有効期限が切れている場合、 メソッドは常に `false` を返します。 このチュートリアルのコードの使用例に示すように、アプリケーションが認証のすぐ後に メソッドを 1 回呼び出した場合、これは発生しません。 アプリケーションが他のタイミングでユーザーのロールを取得する必要がある場合は、ログインの有効期限が切れたユーザーを再検証するコードを追加することができます。 有効なユーザーすべてにロールが割り当てられている場合は、 メソッドを呼び出してログインの有効期限が切れていないか判断できます。 ロールが返されない場合は、ログインの有効期限が切れています。 この機能の例については、 メソッドを参照してください。 この機能が必要なのは、アプリケーションの構成で **\[サーバー クッキーの期限が切れた場合は常に再度ログオンすることをユーザーに要求する\]** を選択した場合だけです。 詳細については、「[方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md)」を参照してください。 + + [!code-csharp[ClientApplicationServices#030](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#030)] + [!code-vb[ClientApplicationServices#030](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#030)] + + 認証が成功した場合に、クライアント認証プロバイダーは プロパティを クラスのインスタンスに設定します。 このクラスは、構成済みのロール プロバイダーに作業を委任するよう、 メソッドを実装します。 上記と同様、アプリケーションのコードにサービス プロバイダーへの直接の参照は必要ありません。 + + ここでアプリケーションを実行し、従業員としてログインして、ボタンが表示されないことを確認できます。次いで、管理者としてログインして、ボタンが表示されることを確認します。 + +## Web 設定にアクセスする + 次の手順では、フォームにテキスト ボックスを追加するとともに、Web 設定にバインドします。 認証とロールを使用する前のコードと同様、設定コードは設定プロバイダーに直接アクセスしません。 代わりに、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] がプロジェクト用に生成する、厳密に型指定された `Settings` クラスを使用します \(C\# では `Properties.Settings.Default` として、[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `My.Settings` としてアクセスします\)。 + +#### ユーザー インターフェイスで Web 設定を使用するには + +1. タスクバーの通知領域をチェックして、**ASP.NET Web 開発サーバー**がまだ実行中であることを確認します。 サーバーが停止している場合は、アプリケーションを再起動して \(これによりサーバーが自動的に起動します\)、その後、ログイン ダイアログ ボックスを閉じます。 + +2. **\[ソリューション エクスプローラー\]** で、ClientAppServicesDemo プロジェクトを選択し、**\[プロジェクト\]** メニューで **\[ClientAppServicesDemo のプロパティ\]** をクリックします。 + + プロジェクト デザイナーが表示されます。 + +3. **\[設定\]** タブで、**\[Web 設定の読み込み\]** をクリックします。 + + **\[ログイン\]** ダイアログ ボックスが表示されます。 + +4. 従業員またはマネージャーの資格情報を入力してから、**\[ログイン\]** をクリックします。 使用する Web 設定は認証されたユーザーのみがアクセスできるように構成されているため、**\[ログインのスキップ\]** をクリックすると設定は読み込まれません。 + + `WebSettingsTestText` の設定が、既定値の `DefaultText` でデザイナーに表示されます。 さらに、`WebSettingsTestText` プロパティを含む `Settings` クラスがプロジェクトに生成されます。 + +5. **\[ソリューション エクスプローラー\]** の ClientAppServicesDemo プロジェクトで、Form1 を選択してから、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] のメイン メニューで **\[表示\] | \[デザイナー\]** をクリックします。 + +6. デザイナーで、フォームに コントロールを追加します。 + +7. **\[プロパティ\]** ウィンドウで、**\[\(名前\)\]** の値を "`webSettingsTestTextBox`" と指定します。 + +8. コード エディターで、`Form1_Load` メソッドの末尾に次のコードを追加します。 + + このコードは、次の手順で追加する `BindWebSettingsTestTextBox` メソッドを呼び出します。 + + [!code-csharp[ClientApplicationServices#013](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#013)] + [!code-vb[ClientApplicationServices#013](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#013)] + +9. 次のメソッドを Form1 クラスの末尾に追加します。 + + このメソッドは、`webSettingsTestTextBox` の プロパティを、この手順の前半で生成した `Settings` クラスの `WebSettingsTestText` プロパティにバインドします。 また、このメソッドは、 がスローされるとエラー メッセージを表示します。これは、Web 設定サービスが使用できないことを示します。 + + [!code-csharp[ClientApplicationServices#040](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#040)] + [!code-vb[ClientApplicationServices#040](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#040)] + + > [!NOTE] + > 通常は、データ バインドを使用して、コントロールと Web 設定間の自動双方向通信を有効にします。 しかし、次の例に示すとおり、直接 Web 設定にアクセスすることもできます。 + + [!code-csharp[ClientApplicationServices#322](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Class1.cs#322)] + [!code-vb[ClientApplicationServices#322](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Class1.vb#322)] + +10. デザイナーで、フォームを選択してから、**\[プロパティ\]** ウィンドウの **\[イベント\]** ボタンをクリックします。 + +11. イベントをクリックしてから、Enter キーを押すとイベント ハンドラーが生成されます。 + +12. 生成されたメソッドを次のコードで置き換えます。 + + イベント ハンドラーが `SaveSettings` メソッドを呼び出します。このメソッドは、次のセクションで追加するログアウト機能でも使用されます。 まず、`SaveSettings` メソッドは、ユーザーがログアウトしていないことを確認します。 これは、現在のプリンシパルによって返される プロパティをチェックして行います。 現在のプリンシパルは`static` プロパティを介して取得します。 ユーザーがクライアント アプリケーション サービスで認証済みであれば、認証の種類は "ClientForms" になります。`SaveSettings` メソッドは、単に プロパティをチェックすることはできません。これは、ユーザーがログアウト後に有効な Windows ID を持っていることがあるためです。 + + ユーザーがログアウトしていない場合、`SaveSettings` メソッドは、この手順の前半で生成された `Settings` クラスの メソッドを呼び出します。 認証クッキーの有効期限が切れている場合、このメソッドは をスローすることがあります。 これが発生するのは、アプリケーションの構成で **\[サーバー クッキーの期限が切れた場合は常に再度ログオンすることをユーザーに要求する\]** を選択した場合だけです。 詳細については、「[方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md)」を参照してください。`SaveSettings` メソッドは、 を呼び出してログイン ダイアログ ボックスを表示することで、クッキーの有効期限を処理します。 ユーザーが正常にログインすると、`SaveSettings` メソッドは自身を呼び出して設定を再度保存しようとします。 + + 前のコードと同様、リモート サービスが使用できない場合、`SaveSettings` メソッドはエラー メッセージを表示します。 設定プロバイダーがリモート サービスにアクセスできない場合、設定はローカル キャッシュに保存されたままとなり、アプリケーションの再起動時に再度読み込まれます。 + + [!code-csharp[ClientApplicationServices#050](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#050)] + [!code-vb[ClientApplicationServices#050](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#050)] + +13. 次のメソッドを Form1 クラスの末尾に追加します。 + + このコードは イベントを処理し、設定のいずれかが保存できなかった場合は警告を表示します。 設定サービスが使用できない場合、または認証クッキーの有効期限が切れている場合、 イベントは発生しません。 イベントが発生する 1 つの例は、ユーザーが既にログアウトしている場合です。 このイベント ハンドラーは、 メソッドの呼び出しの直前にある `SaveSettings` メソッドにログアウトのコードを追加することでテストできます。 使用できるログアウトのコードは、次のセクションで説明します。 + + [!code-csharp[ClientApplicationServices#090](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#090)] + [!code-vb[ClientApplicationServices#090](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#090)] + +14. C\# では、`Form1_Load` メソッドの末尾に次のコードを追加します。 このコードは、最後の手順で追加したメソッドと イベントを関連付けます。 + + [!code-csharp[ClientApplicationServices#015](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#015)] + + この時点でアプリケーションをテストするため、従業員として、およびマネージャーとして複数回これを実行し、テキスト ボックスに異なる値を入力します。 値は、ユーザーごとにセッションをまたいで保持されます。 + +## ログアウトを実装する + ユーザーがログイン時に **\[アカウントを記憶\]** チェック ボックスをオンにすると、アプリケーションは以降の実行時に自動的にユーザーを認証します。 自動認証は、アプリケーションがオフライン モードの場合、または認証クッキーの有効期限が切れるまで継続します。 ただし、場合によっては、複数のユーザーがアプリケーションにアクセスしなければならなくなることや、1 人のユーザーが別の資格情報でログインすることもあります。 このシナリオを有効にするには、次の手順に説明するログアウト機能を実装する必要があります。 + +#### ログアウト機能を実装するには + +1. Form1 デザイナーで、**\[ツールボックス\]** から コントロールをフォームに追加します。 + +2. **\[プロパティ\]** ウィンドウで、**\[\(名前\)\]** の値を "`logoutButton`" と指定し、**\[テキスト\]** の値を "**&Log Out**" と指定します。 + +3. "`logoutButton`" をダブルクリックすると、 イベント ハンドラーが生成されます。 + + `logoutButton_Click` メソッドにカーソルがある状態でコード エディターが表示されます。 + +4. 生成された `logoutButton_Click` メソッドを次のコードで置き換えます。 + + まず、このイベント ハンドラーは、前のセクションで追加した `SaveSettings` メソッドを呼び出します。 次に、イベント ハンドラーは メソッドを呼び出します。 認証サービスが使用できない場合、 メソッドは をスローします。 この場合、`logoutButton_Click` メソッドは警告メッセージを表示し、一時的にオフライン モードに切り替えてユーザーをログアウトします。 オフライン モードについては、次のセクションで説明します。 + + ログアウトすると、アプリケーションの再起動時にログインが必要になるように、ローカルの認証クッキーが削除されます。 ログアウト後、イベント ハンドラーは、アプリケーションを再起動します。 アプリケーションは、再起動すると、ようこそメッセージに続いてログイン ダイアログ ボックスを表示します。 ようこそメッセージにより、アプリケーションが再起動したことが明確になります。 こうすることで、ユーザーが設定の保存のためのログインに続いて、アプリケーションの再起動に伴うログインを再度行わなければならない場合に、起こりうる混乱を避けられます。 + + [!code-csharp[ClientApplicationServices#070](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#070)] + [!code-vb[ClientApplicationServices#070](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#070)] + + ログアウト機能をテストするには、アプリケーションを実行し、\[ログイン\] ダイアログ ボックスで **\[アカウントを記憶\]** をクリックします。 次に、ログインする必要がなくなることを確認するため、アプリケーションを閉じて再起動します。 最後に、\[Log out\] をクリックして、アプリケーションを再起動します。 + +## オフライン モードを有効にする + 次の手順では、ユーザーがオフライン モードに入れるようにするチェック ボックスをフォームに追加します。`static` プロパティを `true` に設定すると、アプリケーションはオフライン モードを示します。 オフラインの状態は、ローカルのハード ディスク上の、 プロパティが示す場所に格納されます。 つまり、オフラインの状態は、ユーザーごと、アプリケーションごとに格納されます。 + + オフライン モードの場合、クライアント アプリケーション サービス要求はどれも、サービスへのアクセスを試みることなく、ローカル キャッシュからデータを取得します。 既定の構成では、ローカル データには暗号化された形式のユーザーのパスワードが含まれています。 これにより、ユーザーは、アプリケーションがオフライン モードのときにログインできます。 詳細については、「[方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md)」を参照してください。 + +#### アプリケーションでオフライン モードを有効にするには + +1. **\[ソリューション エクスプローラー\]** の ClientAppServicesDemo プロジェクトで、Form1 を選択してから、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] のメイン メニューで **\[表示\] | \[デザイナー\]** をクリックします。 + +2. デザイナーで、フォームに コントロールを追加します。 + +3. **\[プロパティ\]** ウィンドウで、**\[\(名前\)\]** の値を "`workOfflineCheckBox`" と指定し、**\[テキスト\]** の値を "**&Work offline**" と指定します。 + +4. **\[プロパティ\]** ウィンドウで、**\[イベント\]** ボタンをクリックします。 + +5. イベントをクリックしてから、Enter キーを押すとイベント ハンドラーが生成されます。 + +6. 生成されたメソッドを次のコードで置き換えます。 + + このコードは、 の値を更新し、オンライン モードに戻るときに、ダイアログを表示せずにユーザーを再検証します。 メソッドでは、ユーザーが明示的にログインする必要がないように、キャッシュされた資格情報を使用します。 認証サービスが使用できない場合、警告メッセージが表示され、アプリケーションはオフラインのままになります。 + + > [!NOTE] + > メソッドは便宜的なものに過ぎません。 このメソッドには戻り値がないため、再検証が失敗したかどうかを示すことはできません。 再検証は失敗することがあります。たとえば、サーバーでユーザーの資格情報が変更された場合などです。 この場合、サービスの呼び出しが失敗した後に、明示的にユーザーを検証するコードを含めることができます。 詳細については、このチュートリアルの上述の「Web 設定にアクセスする」を参照してください。 + + 再検証後、前に追加した `SaveSettings` メソッドを呼び出すことで、このコードはローカルの Web 設定への変更をすべて保存します。 続いて、プロジェクトの `Settings` クラスの メソッドを呼び出して、新しい値をすべて取得します \(C\# では `Properties.Settings.Default` として、[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `My.Settings` としてアクセスします\)。 + + [!code-csharp[ClientApplicationServices#080](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#080)] + [!code-vb[ClientApplicationServices#080](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#080)] + +7. `Form1_Load` メソッドの末尾に次のコードを追加して、チェック ボックスが現在の接続状態を示すようにします。 + + [!code-csharp[ClientApplicationServices#014](../../../samples/snippets/csharp/VS_Snippets_Winforms/ClientApplicationServices/CS/Form1.cs#014)] + [!code-vb[ClientApplicationServices#014](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ClientApplicationServices/VB/Form1.vb#014)] + + これで、サンプル アプリケーションが完成しました。 オフライン機能をテストするには、アプリケーションを実行し、従業員またはマネージャーとしてログインしてから、**\[Work offline\]** をクリックします。 テキスト ボックスの値を変更してから、アプリケーションを終了します。 アプリケーションを再起動します ログインする前に、タスク バーの通知領域にある ASP.NET 開発サーバーのアイコンを右クリックしてから、**\[停止\]** をクリックします。 次に、通常どおりにログインします。 サーバーが実行されていない場合でもログインできます。 テキスト ボックスの値を変更してから、終了および再起動を行って、変更された値を確認します。 + +## 概要 + このチュートリアルでは、Windows フォーム アプリケーションでのクライアント アプリケーション サービスの有効化および使用方法について学習しました。 テスト サーバーをセットアップした後、アプリケーションにコードを追加し、ユーザーを認証したり、サーバーからユーザーのロールとアプリケーションの設定を取得したりできるようにしました。 また、接続を使用できない場合に、アプリケーションがリモート サービスではなく、ローカル データ キャッシュを使用できるように、オフライン モードを有効にする方法についても学びました。 + +## 次の手順 + 実際のアプリケーションではリモート サーバーから多数のユーザーのデータを取得しますが、サーバーは常に使用可能であるとは限らず、予告なく停止する可能性もあります。 アプリケーションを堅牢にするため、サービスが利用できない場合に状況に適切に対応する必要があります。 このチュートリアルには、サービスが利用できない場合に をキャッチしてエラー メッセージを表示する try ブロックと catch ブロックが含まれています。 実稼働コードでは、このケースに対処するため、オフライン モードに切り替えることや、アプリケーションを終了すること、特定の機能へのアクセスを拒否することができます。 + + アプリケーションのセキュリティを向上させるため、配置する前に必ずアプリケーションとサーバーを十分にテストしてください。 + +## 参照 + [クライアント アプリケーション サービス](../../../docs/framework/common-client-technologies/client-application-services.md) + [クライアント アプリケーション サービスの概要](../../../docs/framework/common-client-technologies/client-application-services-overview.md) + [方法 : クライアント アプリケーション サービスを構成する](../../../docs/framework/common-client-technologies/how-to-configure-client-application-services.md) + [ASP.NET Web Site Administration Tool](../Topic/ASP.NET%20Web%20Site%20Administration%20Tool.md) + [Creating and Configuring the Application Services Database for SQL Server](../Topic/Creating%20and%20Configuring%20the%20Application%20Services%20Database%20for%20SQL%20Server.md) + [Walkthrough: Using ASP.NET Application Services](../Topic/Walkthrough:%20Using%20ASP.NET%20Application%20Services.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/TOC.md b/docs/framework/configure-apps/TOC.md new file mode 100644 index 00000000000..1aa29946058 --- /dev/null +++ b/docs/framework/configure-apps/TOC.md @@ -0,0 +1,10 @@ +# [暗号化クラスの設定](configure-cryptography-classes.md) +# [暗号化アルゴリズムへのオブジェクト ID の割り当て](map-object-identifiers-to-cryptography-algorithms.md) +# [アセンブリ バージョンのリダイレクト](redirect-assembly-versions.md) +# [アプリの構成](index.md) +# [方法 : 発行者ポリシーを作成する](how-to-create-a-publisher-policy.md) +# [方法: 自動バインディング リダイレクトを有効/無効にする](how-to-enable-and-disable-automatic-binding-redirection.md) +# [方法 : DEVPATH を使用してアセンブリを指定する](how-to-locate-assemblies-by-using-devpath.md) +# [アセンブリ バインディング リダイレクトのセキュリティ アクセス許可](assembly-binding-redirection-security-permission.md) +# [アセンブリの場所の指定](specify-assembly-location.md) +# [暗号化クラスへのアルゴリズム名の割り当て](map-algorithm-names-to-cryptography-classes.md) diff --git a/docs/framework/configure-apps/assembly-binding-redirection-security-permission.md b/docs/framework/configure-apps/assembly-binding-redirection-security-permission.md new file mode 100644 index 00000000000..4bf2605e3c0 --- /dev/null +++ b/docs/framework/configure-apps/assembly-binding-redirection-security-permission.md @@ -0,0 +1,48 @@ +--- +title: "アセンブリ バインディング リダイレクトのセキュリティ アクセス許可 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "アセンブリ [.NET Framework], バインディングのリダイレクト" + - "side-by-side 実行, アセンブリ バインディング リダイレクト" +ms.assetid: 24a5cdff-7ed9-4195-93f3-edf6899019fc +caps.latest.revision: 9 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 8 +--- +# アセンブリ バインディング リダイレクトのセキュリティ アクセス許可 +アプリケーション構成ファイルで明示的にアセンブリ バインディングをリダイレクトするには、セキュリティ アクセス許可が必要です。 これは、.NET Framework アセンブリおよびサードパーティ製アセンブリに適用されます。 アクセス許可は、[SecurityPermission クラス](frlrfSystemSecurityPermissionsSecurityPermissionClassTopic)の [BindingRedirects](frlrfSystemSecurityPermissionsSecurityPermissionFlagClassTopic) フラグを設定することによって付与されます。 既定では、マネージ アセンブリにはアクセス許可が付与されていません。 + + セキュリティ アクセス許可は、Trusted ゾーン \(ローカル マシン\) および Intranet ゾーンで実行されているアプリケーションに付与されます。 Internet ゾーンで実行されているアプリケーションは、アセンブリ バインディングのリダイレクトの実行が禁止されています。 + + コンポーネントの発行者によって制御される発行者ポリシー ファイルまたは管理者によって制御されるマシン構成ファイルで実行されるアセンブリのリダイレクトには、アクセス許可は必要ありません。 ただし、明示的にアプリケーション構成ファイルの [\ 要素](linkedconfiguration-element.md) +# [構成セクション スキーマ](configuration-sections-schema.md) +# [ 要素](assemblybinding-element-for-configuration.md) +# [構成ファイル スキーマ](index.md) +# [アプリケーション設定のスキーマ](application-settings-schema.md) +# [ 要素](configuration-element.md) diff --git a/docs/framework/configure-apps/file-schema/application-settings-schema.md b/docs/framework/configure-apps/file-schema/application-settings-schema.md new file mode 100644 index 00000000000..1469112e695 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/application-settings-schema.md @@ -0,0 +1,99 @@ +--- +title: "アプリケーション設定のスキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "アプリケーション設定, スキーマ [Windows フォーム]" + - "構成スキーマ [.NET Framework], アプリケーション設定" + - "スキーマ (アプリケーション設定)" + - "Windows フォーム, アプリケーション設定スキーマ" +ms.assetid: 5797fcff-6081-4e8c-bebf-63d9c70cf14b +caps.latest.revision: 3 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 3 +--- +# アプリケーション設定のスキーマ +アプリケーション設定によって、Windows フォームまたは ASP.NET アプリケーションはアプリケーション スコープおよびユーザー スコープの設定を格納および取得できます。 ここにおける「設定」は、データベース接続文字列からユーザーの既定のウィンドウ サイズにいたるまでのアプリケーションまたは現在のユーザー固有の情報を意味します。 + + 既定では、Windows フォーム アプリケーションのアプリケーション設定は、.NET 構成システムを使用して設定を XML 構成ファイルに格納する を使用します。 アプリケーション設定が使用するファイルの詳細については、「[アプリケーション設定アーキテクチャ](../../../../docs/framework/winforms/advanced/application-settings-architecture.md)」を参照してください。 + + アプリケーション設定は、使用する構成ファイルで次の要素を定義します。 + +|要素|説明| +|--------|--------| +|`` 要素|アプリケーション固有のすべての `` タグが含まれます。| +|`` 要素|現在のユーザー固有のすべての `` タグが含まれます。| +|`` 要素|設定を定義します。 `` または `` の子要素です。| +|`` 要素|設定の値を定義します。 `` の子要素です。| + +## \ 要素 + この要素には \<、クライアント コンピューターのアプリケーションのインスタンス固有のすべての構成\> タグが含まれます。 属性は定義されません。 + +## \ 要素 + この要素は \<\>、アプリケーションを使用しているユーザー固有のすべての構成 タグが含まれます。 属性は定義されません。 + +## \<構成\> 要素 + この要素は、設定を定義します。 次の属性を持ちます。 + +|要素|説明| +|--------|--------| +|`name`|必須。 設定の一意の ID です。 Visual Studio を使用して作成された設定は `ProjectName``.Properties.Settings` という名前で保存されます。| +|`serializedAs`|必須。 テキストに値をシリアル化するために使用する形式です。 次の値を指定できます。

- `string`: 値は、 を使用して文字列としてシリアル化されます。
- `xml`. 値は、XML シリアル化を使用してシリアル化されます。
- `binary`: 値は、バイナリ シリアル化を使用してテキストでエンコードされたバイナリとしてシリアル化されます。
- `custom`: 設定プロバイダーは、この設定に固有の情報を保有してシリアル化および逆シリアル化を実行します。
- バイナリまたはカスタムのシリアル化を使用する場合は、独自に設定クラスを定義し、 を使用してバイナリまたはカスタムのシリアル化を指定する必要があります。| + +## \<値要素\> + この要素には、設定の値が含まれます。 + +## 使用例 + 2 つのアプリケーション スコープの設定および 2 つのユーザー スコープの設定を定義するアプリケーション設定ファイルのコード例を次に示します。 + +``` + + + + +
+ + +
+ + + + + + Default + + + False + + + + + + + Form1 + + + 595, 536 + + + + +``` + +## 参照 + [アプリケーション設定の概要](../../../../docs/framework/winforms/advanced/application-settings-overview.md) + [アプリケーション設定アーキテクチャ](../../../../docs/framework/winforms/advanced/application-settings-architecture.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/assemblybinding-element-for-configuration.md b/docs/framework/configure-apps/file-schema/assemblybinding-element-for-configuration.md new file mode 100644 index 00000000000..da1a6d2e9b2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/assemblybinding-element-for-configuration.md @@ -0,0 +1,79 @@ +--- +title: "<configuration> の <assemblyBinding> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/assemblyBinding" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "assemblyBinding 要素" +ms.assetid: 6cc55983-b894-449b-8e26-b258e53939cd +caps.latest.revision: 6 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 6 +--- +# <configuration> の <assemblyBinding> 要素 +構成レベルでのアセンブリ バインディング ポリシーを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`xmlns`|必須の属性です。

アセンブリのバインディングに必要な XML 名前空間を指定します。 値として、文字列 "urn:schemas\-microsoft\-com:asm.v1" を使用します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\ 要素](../../../../docs/framework/configure-apps/file-schema/linkedconfiguration-element.md)|インクルードする構成ファイルを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素](../../../../docs/framework/configure-apps/file-schema/configuration-element.md)|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| + +## 解説 + [\ 要素](../../../../docs/framework/configure-apps/file-schema/linkedconfiguration-element.md) は、アセンブリ構成設定を複製するのではなく、既知の場所にあるアセンブリ構成ファイルをアプリケーション構成ファイルにインクルードできるようにすることで、コンポーネント アセンブリの管理を簡素化します。 + +> [!NOTE] +> Windows side\-by\-side マニフェストを使用するアプリケーションに対しては、`` 要素がサポートされません。 + +## 使用例 + ローカル ハード ディスク上の構成ファイルをインクルードする方法を、次のコード例に示します。 + +``` + + + + + +``` + +## 参照 + [構成ファイル スキーマ](../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/compiler/TOC.md b/docs/framework/configure-apps/file-schema/compiler/TOC.md new file mode 100644 index 00000000000..cc068005e31 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/compiler/TOC.md @@ -0,0 +1,5 @@ +# [ 要素](compilers-element.md) +# [コンパイラおよび言語プロバイダー設定のスキーマ](index.md) +# [ 要素](compiler-element.md) +# [ 要素](system-codedom-element.md) +# [ 要素](provideroption-element.md) diff --git a/docs/framework/configure-apps/file-schema/compiler/compiler-element.md b/docs/framework/configure-apps/file-schema/compiler/compiler-element.md new file mode 100644 index 00000000000..3a61853adf4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/compiler/compiler-element.md @@ -0,0 +1,111 @@ +--- +title: "<compiler> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#compiler" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.codedom/compilers/compiler" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンパイラ構成属性" + - "コンパイラ構成要素, 要素" + - "compiler 要素" +ms.assetid: 7a151659-b803-4c27-b5ce-1c4aa0d5a823 +caps.latest.revision: 20 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 20 +--- +# <compiler> 要素 +言語プロバイダーのコンパイラ設定属性を指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`compilerOptions`|省略可能な属性。

コンパイル用のその他のコンパイラ固有引数を指定します。 `compilerOptions` 属性の値については、通常、コンパイラのコンパイラ オプションのトピックで説明されています。 Visual Studio 2005 のドキュメントで「コンパイラ オプション」というキーワードを検索すると、コンパイラのオプションについての説明を見つけることができます。| +|`extension`|必須の属性です。

言語プロバイダーのソース ファイルで使用されるファイル名拡張子のセミコロン区切りのリストを指定します。 たとえば、".cs" とします。| +|`language`|必須の属性です。

言語プロバイダーでサポートされる言語名のセミコロン区切りのリストを指定します。 たとえば、"c\#;cs;csharp" とします。| +|`type`|必須の属性です。

言語プロバイダーの型名と、プロバイダーの実装が含まれているアセンブリの名前を指定します。 型名は、「[完全修飾型名の指定](../../../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md)」で定義されている要件を満たす必要があります。| +|`warningLevel`|省略可能な属性。

コンパイラの既定の警告レベルを指定します。これにより、言語プロバイダーでエラーとして処理されるコンパイラの警告レベルが決定されます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/provideroption-element.md)|言語プロバイダーのコンパイラ バージョン属性を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md)|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/system-codedom-element.md)|利用可能な言語プロバイダー用のコンパイラ構成設定を指定します。| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md)|コンパイラの設定要素用のコンテナーです。0 個以上の `` 要素が含まれます。| + +## 解説 + 各 `` 要素では、特定の言語プロバイダー用のコンパイラ設定属性を指定します。 プロバイダーでは、特定の言語用に クラスを拡張します。`` 要素では、言語プロバイダー用にコンパイラとコード ジェネレーターの設定を定義します。 + + .NET Framework では、マシン構成ファイル \(Machine.config\) にコンパイラの初期設定を定義します。 開発者やコンパイラの販売元では、新しい 実装用に構成の設定を追加できます。 コンピューター上の言語プロバイダーおよびコンパイラの構成の設定をプログラムで列挙するには、 メソッドを使用します。 + + アプリケーションまたは Web の構成ファイル内のコンパイラ要素によって、マシン構成ファイル内の設定を補足またはオーバーライドできます。 複数のプロバイダー実装で同じ言語名または同じファイル拡張子が設定されている場合は、最後に一致した設定で、その言語名またはファイル拡張子のそれまでの設定済みプロバイダーがオーバーライドされます。 + +## 構成ファイル + この要素は、マシン構成ファイルとアプリケーション構成ファイルで使用できます。 + +## 使用例 + 一般的なコンパイラ設定要素を次の例に示します。 + +``` + + + + + + + + +``` + +## 参照 + + + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md) + [完全修飾型名の指定](../../../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md) + [compilation の compilers の compiler 要素 \(ASP.NET 設定スキーマ\)](http://msdn.microsoft.com/ja-jp/f7d6b078-5d42-4134-b3f7-62e1aba1df1e) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/compiler/compilers-element.md b/docs/framework/configure-apps/file-schema/compiler/compilers-element.md new file mode 100644 index 00000000000..2283694b30a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/compiler/compilers-element.md @@ -0,0 +1,93 @@ +--- +title: "<compilers> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#compilers" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.codedom/compilers" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンパイラ構成要素, 要素" + - "compilers 要素" +ms.assetid: d40fba59-98f9-4783-ae0c-2ebea27ce77b +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# <compilers> 要素 +コンパイラの設定要素のコンテナー; [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) 内に含まれています。また、より多くの要素を示します。 + +## 構文 + +``` + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md)|言語プロバイダーのコンパイラ設定属性を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md)|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/system-codedom-element.md)|利用可能な言語プロバイダー用のコンパイラ構成設定を指定します。| + +## 解説 + [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md) 要素はコンピューター上の言語プロバイダー用のコンパイラの構成設定が含まれます。 [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) の各要素は、特定の言語プロバイダー用のコンパイラ設定属性を指定します。 + + .NET Framework では、マシン構成ファイル \(Machine.config\) 内にコンパイラと言語プロバイダーの初期設定が定義されています。 開発者やコンパイラの販売元では、新しい 実装用に構成の設定を追加できます。 コンピューター上の言語プロバイダーおよびコンパイラの構成の設定をプログラムで列挙するには、 メソッドを使用します。 + +## 構成ファイル + この要素は、マシン構成ファイルとアプリケーション構成ファイルで使用できます。 + +## 使用例 + 一般的なコンパイラ設定要素を次の例に示します。 + +``` + + + + + + + + +``` + +## 参照 + + + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [コンパイラおよび言語プロバイダー設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/compiler/index.md) + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/compiler/index.md b/docs/framework/configure-apps/file-schema/compiler/index.md new file mode 100644 index 00000000000..e10ffa3c386 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/compiler/index.md @@ -0,0 +1,75 @@ +--- +title: "コンパイラおよび言語プロバイダー設定のスキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "コンパイラ構成要素" + - "コンパイラ構成要素, スキーマ" + - "コンパイラ構成設定" + - "コンパイラ構成設定, スキーマ" + - "構成スキーマ [.NET Framework], コンパイラ設定" + - "構成の設定 [.NET Framework], コンパイラ" + - "言語プロバイダー" + - "言語プロバイダー, 設定スキーマ" +ms.assetid: c020b139-8699-4f0d-9ac9-70d0c5b2a8c8 +caps.latest.revision: 9 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 9 +--- +# コンパイラおよび言語プロバイダー設定のスキーマ +コンパイラおよび言語プロバイダー設定では、利用可能な言語プロバイダー用のコンパイラの設定要素を指定します。 各コンパイラ設定要素では、コード プロバイダーの型名、コンパイラ パラメーター、サポートされる言語名、およびサポートされるファイル拡張子を指定します。 + + .NET Framework では、マシン構成ファイル \(Machine.config\) にコンパイラの初期設定を定義します。 開発者やコンパイラの販売元では、新しい 実装用に構成の設定を追加できます。 コンピューター上の言語プロバイダーおよびコンパイラの構成の設定をプログラムで列挙するには、 メソッドを使用します。 + + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/compiler/system-codedom-element.md) + + [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md) + + [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/compiler/system-codedom-element.md)|利用可能な言語プロバイダー用のコンパイラ構成設定を指定します。| +|[\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md)|コンパイラの設定要素のコンテナー; [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) 内に含まれています。また、より多くの要素を示します。| +|[\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md)|言語プロバイダーのコンパイラ設定属性を指定します。| + +## 使用例 + 一般的なコンパイラ設定要素を次の例に示します。 + +``` + + + + + + + + +``` + +## 参照 + + + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/compiler/provideroption-element.md b/docs/framework/configure-apps/file-schema/compiler/provideroption-element.md new file mode 100644 index 00000000000..ec6bb7dbbbc --- /dev/null +++ b/docs/framework/configure-apps/file-schema/compiler/provideroption-element.md @@ -0,0 +1,104 @@ +--- +title: "<providerOption> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "provideroption" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "provideroption 要素" + - "providerOptions" +ms.assetid: 014f2e0b-c0b5-4fc4-92d3-73f02978b2a1 +caps.latest.revision: 22 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 22 +--- +# <providerOption> 要素 +言語プロバイダーのコンパイラ バージョン属性を指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`name`|必須の属性です。

オプションの名前を指定します \(たとえば "CompilerVersion"\)。| +|`value`|必須の属性です。

オプションの値を指定します \(たとえば "v3.5"\)。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md)|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/system-codedom-element.md)|利用可能な言語プロバイダー用のコンパイラ構成設定を指定します。| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md)|コンパイラの設定要素用のコンテナーです。0 個以上の `` 要素が含まれます。| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md)|言語プロバイダーのコンパイラ設定属性を指定します。| + +## 解説 + .NET Framework Version 3.5 では、CodeDOM \(Code Document Object Model\) コード プロバイダーは、`` 要素を使用してプロバイダー固有のオプションをサポートできます。 + + .NET Framework 3.5 には、更新された .NET Framework 2.0 アセンブリと、新しい型を含む新しい Version 3.5 アセンブリが用意されています。 Microsoft C\# および Visual Basic のコード プロバイダーは .NET Framework 2.0 アセンブリに含まれますが、Version 3.5 のコンパイラをサポートするように更新されています。 既定では、更新されたコード プロバイダーは Version 2.0 のコンパイラ用のコードを生成します。 `` 要素を使用して、対象のコンパイラのバージョンを 3.5 に変更できます。 これを行うには、`name` 属性に "CompilerVersion" を指定し、`value` 属性に "v3.5" を指定します。 バージョン番号の前に小文字の "v" を指定する必要があります。 + + `` 要素を .NET Framework 2.0 の Machine.config ファイルまたはルートの Web.config ファイルに追加することで、バージョンの指定をグローバルにすることができます。 Machine.config ファイルで既定のコンパイラのバージョンを 3.5 に更新した場合は、アプリケーション構成ファイルで `` 要素を使用することにより、アプリケーションごとに 2.0 に戻すことができます。 + + CodeDOM コード プロバイダーの実装では、 型の `providerOptions` パラメーターを受け取るコンストラクターを用意することで、カスタム オプションを処理できます。 + +## 使用例 + C\# コード プロバイダーの Version 3.5 が使用されるように指定する方法の例を次に示します。 + +``` + + + + + + + + + + +``` + +## 参照 + + + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md) + [完全修飾型名の指定](../../../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md) + [compilation の compilers の compiler 要素 \(ASP.NET 設定スキーマ\)](http://msdn.microsoft.com/ja-jp/f7d6b078-5d42-4134-b3f7-62e1aba1df1e) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/compiler/system-codedom-element.md b/docs/framework/configure-apps/file-schema/compiler/system-codedom-element.md new file mode 100644 index 00000000000..fbff2cfaea0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/compiler/system-codedom-element.md @@ -0,0 +1,104 @@ +--- +title: "<system.codedom> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.codedom" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#system.codedom" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンパイラ構成要素, 要素" + - "system.codedom 要素" +ms.assetid: 672a68f7-e69f-4479-ac30-e980085ec4fe +caps.latest.revision: 17 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 17 +--- +# <system.codedom> 要素 +利用可能な言語プロバイダー用のコンパイラ構成設定を指定します。 + +## 構文 + +``` + + ... + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md)|コンパイラの設定要素のコンテナー; [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) 内に含まれています。また、より多くの要素を示します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md)|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| + +## 解説 + +## .NET Framework Version 2.0 + [\](../../../../../docs/framework/configure-apps/file-schema/compiler/system-codedom-element.md) 要素は などの .NET Framework と、インストールされている既定のプロバイダーの他に、コンピューターにインストールされる言語プロバイダーのコンパイラの構成設定が含まれます。 [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md) 要素が含まれています [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) のゼロ以上の要素を紹介します。 [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) の各要素は、特定の言語プロバイダー用のコンパイラ設定属性を指定します。 + + 開発者やコンパイラの販売元では、新しい 実装用にマシンの構成ファイル \(Machine.config\) に構成の設定を追加できます。 メソッドを使用して、既定の言語プロバイダーおよびコンピューターのコンパイラ設定で識別される言語プロバイダーの両方をプログラムで列挙します。 + +> [!NOTE] +> .NET Framework Version 1.0 および 1.1 では、.NET Framework に用意されている既定の言語プロバイダーは [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md) 要素で識別されます。 .NET Framework version 2.0 では、既定の言語プロバイダーは [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md) 要素では識別されませんが、 のメソッドを使用して列挙できます。 + +## .NET Framework Version 1.0 および 1.1 + [\](../../../../../docs/framework/configure-apps/file-schema/compiler/system-codedom-element.md) 要素はコンピューター上の言語プロバイダー用のコンパイラの構成設定が含まれます。 [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compilers-element.md) 要素が含まれています [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) のゼロ以上の要素を紹介します。 [\<コンパイラ\>](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) の各要素は、特定の言語プロバイダー用のコンパイラ設定属性を指定します。 + + .NET Framework では、マシン構成ファイル \(Machine.config\) にコンパイラの初期設定を定義します。 開発者やコンパイラの販売元では、新しい 実装用に構成の設定を追加できます。 コンピューター上の言語プロバイダーおよびコンパイラの構成の設定をプログラムで列挙するには、 メソッドを使用します。 + +## 構成ファイル + この要素は、マシン構成ファイルとアプリケーション構成ファイルで使用できます。 + +## 使用例 + 一般的なコンパイラ設定を次の例に示します。 + +``` + + + + + + + + +``` + +## 参照 + + + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [コンパイラおよび言語プロバイダー設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/compiler/index.md) + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/compiler/compiler-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/configuration-element.md b/docs/framework/configure-apps/file-schema/configuration-element.md new file mode 100644 index 00000000000..626a3fc763b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/configuration-element.md @@ -0,0 +1,64 @@ +--- +title: "<configuration> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "configuration 要素" + - "コンテナー タグ, 要素" +ms.assetid: 2ec1c9dc-2e5c-4ef0-9958-81670ab88449 +caps.latest.revision: 15 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# <configuration> 要素 +共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。 + + **\** + +## 構文 + +``` + +   +   + +``` + +## 子要素 + +|要素|説明| +|--------|--------| +|[\ 要素](../../../../docs/framework/configure-apps/file-schema/assemblybinding-element-for-configuration.md)|構成レベルでのアセンブリ バインディング ポリシーを指定します。| +|[スタートアップ設定スキーマ](../../../../docs/framework/configure-apps/file-schema/startup/index.md)|スタートアップ設定スキーマのすべての要素。| +|[ランタイム設定スキーマ](../../../../docs/framework/configure-apps/file-schema/runtime/index.md)|ランタイム設定スキーマのすべての要素。| +|[リモート処理設定スキーマ](http://msdn.microsoft.com/ja-jp/dc2d1e62-9af7-4ca1-99fd-98b93bb4db9e)|リモート処理設定スキーマのすべての要素。| +|[ネットワーク設定スキーマ](../../../../docs/framework/configure-apps/file-schema/network/index.md)|ネットワーク設定スキーマのすべての要素。| +|[暗号設定スキーマ](../../../../docs/framework/configure-apps/file-schema/cryptography/index.md)|暗号設定スキーマのすべての要素。| +|[構成セクション スキーマ](../../../../docs/framework/configure-apps/file-schema/configuration-sections-schema.md)|構成セクション設定スキーマのすべての要素。| +|[トレースおよびデバッグ設定のスキーマ](../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md)|トレースおよびデバッグ設定スキーマのすべての要素。| +|[ASP.NET 設定スキーマ](http://msdn.microsoft.com/ja-jp/116608f3-c03d-4413-9fc7-978703e18b0f)|ASP.NET 構成スキーマのすべての要素。これには、ASP.NET Web サイトおよびアプリケーションを構成するための要素が含まれます。 Web.config ファイルで使用します。| +|[XML Web サービス設定スキーマ](http://msdn.microsoft.com/ja-jp/f84d6d55-1add-4eb7-ae46-33df5833ea2e)|Web サービス設定スキーマのすべての要素。| +|[Web 設定スキーマ](../../../../docs/framework/configure-apps/file-schema/web/index.md)|IIS などのホスト アプリケーションと ASP.NET の連携を構成する要素も含め、Web 設定スキーマのすべての要素。 aspnet.config ファイルで使用します。| + +## 解説 + 各構成ファイルは **\** の 1 要素を一つだけ含める必要があります。 + +## 参照 + [構成ファイル スキーマ](../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/configuration-sections-schema.md b/docs/framework/configure-apps/file-schema/configuration-sections-schema.md new file mode 100644 index 00000000000..1aa90bbfd27 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/configuration-sections-schema.md @@ -0,0 +1,55 @@ +--- +title: "構成セクション スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "構成スキーマ [.NET Framework], カスタム設定 (構成ファイルの)" + - "構成のセクション [.NET Framework]" + - "構成の設定 [.NET Framework], カスタム" + - "カスタム要素" + - "要素 [.NET Framework], カスタム設定 (構成ファイルの)" + - "スキーマ構成の設定" +ms.assetid: 6e4cc793-c526-4007-b4e9-37d56295f2cb +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# 構成セクション スキーマ +構成セクション スキーマには、構成ファイルにカスタム設定を追加する要素が含まれています。 + + [\](../../../../docs/framework/configure-apps/file-schema/configuration-element.md) + + [\](http://msdn.microsoft.com/ja-jp/8a5cbc84-0257-4c2e-80a9-a064fe7c896b) + + [\<[clear]\>](http://msdn.microsoft.com/ja-jp/b0ce3c91-89fa-4bb5-a995-30e21a61036b) + + [\<削除\>](http://msdn.microsoft.com/ja-jp/6e2b2d45-113d-4d10-9f8e-0b15fc86bb98) + + [\<セクション\>](http://msdn.microsoft.com/ja-jp/51c9d658-c275-4ab2-aa66-c5d5b5289570) + + [\](http://msdn.microsoft.com/ja-jp/45fbeb5c-26c7-4c68-b732-b3f1e62c53bf) + +|要素|説明| +|--------|--------| +|[configSections の clear 要素 \(全般設定スキーマ\)](http://msdn.microsoft.com/ja-jp/b0ce3c91-89fa-4bb5-a995-30e21a61036b)|以前に定義したセクションとセクション グループをすべて消去します。| +|[configSections 要素 \(全般設定スキーマ\)](http://msdn.microsoft.com/ja-jp/8a5cbc84-0257-4c2e-80a9-a064fe7c896b)|構成セクションと名前空間の宣言を指定します。| +|[configSections の remove 要素 \(全般設定スキーマ\)](http://msdn.microsoft.com/ja-jp/6e2b2d45-113d-4d10-9f8e-0b15fc86bb98)|定義済みのセクションまたはセクション グループを削除します。| +|[configSections の section 要素 \(全般設定スキーマ\)](http://msdn.microsoft.com/ja-jp/51c9d658-c275-4ab2-aa66-c5d5b5289570)|構成セクションの宣言を指定します。| +|[configSections の sectionGroup 要素 \(全般設定スキーマ\)](http://msdn.microsoft.com/ja-jp/45fbeb5c-26c7-4c68-b732-b3f1e62c53bf)|構成セクションの名前空間を定義します。| + +## 参照 + [構成ファイル スキーマ](../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/cryptography/TOC.md b/docs/framework/configure-apps/file-schema/cryptography/TOC.md new file mode 100644 index 00000000000..63cf19f6184 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/cryptography/TOC.md @@ -0,0 +1,9 @@ +# [暗号設定の 要素](mscorlib-element-for-cryptography-settings.md) +# [ 要素](cryptonamemapping-element.md) +# [ 要素](oidmap-element.md) +# [ 要素](nameentry-element.md) +# [ 要素](cryptographysettings-element.md) +# [ 要素](cryptoclasses-element.md) +# [ 要素](oidentry-element.md) +# [暗号設定スキーマ](index.md) +# [ 要素](cryptoclass-element.md) diff --git a/docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md b/docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md new file mode 100644 index 00000000000..c9cfb1aedb4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md @@ -0,0 +1,87 @@ +--- +title: "<cryptoClass> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings/cryptoNameMapping/cryptoClasses/cryptoClass" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#cryptoClass" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "cryptoClass 要素" +ms.assetid: 03db52ef-010e-44ea-b6fd-b9c900ecad50 +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# <cryptoClass> 要素 +[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md) 要素の表示名への割り当てが設定されている暗号化クラスが含まれています。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`customClassName`|必須の属性です。

暗号化クラスの情報が含まれます。 この属性を使用して、クラスに短い名前を付けます。 「[完全修飾型名の指定](../../../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md)」で指定されている要件に合った文字列を指定する必要があります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`cryptoClasses`|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md) 要素の表示名への割り当てが設定されている暗号化クラスを示します。| +|`cryptographySettings`|暗号に関する設定が含まれます。| +|`cryptoNameMapping`|クラスと表示名との割り当てが含まれます。| +|`mscorlib`|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md) 要素が含まれています。| + +## 使用例 + 次の例のように暗号化クラスを参照し、ランタイムを構成するために使用 **\** 要素。 その後、文字列 "RSA" を メソッドに渡し、 メソッドを使用して `MyCryptoRSAClass` オブジェクトを取得できます。 + +``` + + + + + + + + + + + + + +``` + +## 参照 + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [暗号設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/cryptography/index.md) + [暗号サービス](../../../../../docs/standard/security/cryptographic-services.md) + [暗号化クラスの設定](../../../../../docs/framework/configure-apps/configure-cryptography-classes.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/cryptography/cryptoclasses-element.md b/docs/framework/configure-apps/file-schema/cryptography/cryptoclasses-element.md new file mode 100644 index 00000000000..9556c05e084 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/cryptography/cryptoclasses-element.md @@ -0,0 +1,91 @@ +--- +title: "<cryptoClasses> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings/cryptoNameMapping/cryptoClasses" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#cryptoClasses" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "cryptoClasses 要素" +ms.assetid: 290d5f96-946d-4f02-babb-1d31ec0b8295 +caps.latest.revision: 16 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 15 +--- +# <cryptoClasses> 要素 +[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md) 要素の表示名への割り当てが設定されている暗号化クラスを示します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md)|**\** 要素の表示名への割り当てが設定されている暗号化クラスが含まれています。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`cryptographySettings`|暗号に関する設定が含まれます。| +|`cryptoNameMapping`|クラスと表示名との割り当てが含まれます。| +|`mscorlib`|`cryptographySettings` 要素を含みます。| + +## 使用例 + 次の例のように暗号化クラスを参照し、ランタイムを構成するために使用 **\** 要素。 その後、文字列 "RSA" を メソッドに渡し、 メソッドを使用して `MyCryptoRSAClass` オブジェクトを取得できます。 + +``` + + + + + + + + + + + + + + + +``` + +## 参照 + + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [暗号設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/cryptography/index.md) + [暗号サービス](../../../../../docs/standard/security/cryptographic-services.md) + [System.Security.Cryptography.CryptoConfig.CreateFromName](frlrfSystemSecurityCryptographyCryptoConfigClassCreateFromNameTopic) + [暗号化クラスの設定](../../../../../docs/framework/configure-apps/configure-cryptography-classes.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md b/docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md new file mode 100644 index 00000000000..4ec6a2c0956 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md @@ -0,0 +1,91 @@ +--- +title: "<cryptographySettings> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#cryptographySettings" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "cryptographySettings 要素" +ms.assetid: 6201b7da-bcb7-49f7-b9f5-ba1fe05573b9 +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 10 +--- +# <cryptographySettings> 要素 +暗号に関する設定が含まれます。 + +## 構文 + +``` + +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptonamemapping-element.md)|クラスと表示名との割り当てが含まれます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/oidmap-element.md)|クラスへの ASN.1 オブジェクト識別子 \(OID\) 割り当てが含まれます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`mscorlib`|`cryptographySettings` 要素を含みます。| + +## 使用例 + 次の例では、暗号化の名前の割り当てと OID 割り当てを含む使用 **\** 要素。 この例では、[System.Security.Cryptography.HashAlgorithm.Create](frlrfSystemSecurityCryptographyHashAlgorithmClassCreateTopic) が `MyHashClass` オブジェクトを返し、`MyCryptoClass` クラスがオブジェクト識別子 1.3.36.2.1 に割り当てられるようにランタイムが構成されます。 + +``` + + + + + + + + + + + + + + + + +``` + +## 参照 + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [暗号設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/cryptography/index.md) + [暗号サービス](../../../../../docs/standard/security/cryptographic-services.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/cryptography/cryptonamemapping-element.md b/docs/framework/configure-apps/file-schema/cryptography/cryptonamemapping-element.md new file mode 100644 index 00000000000..d9b80a90cdf --- /dev/null +++ b/docs/framework/configure-apps/file-schema/cryptography/cryptonamemapping-element.md @@ -0,0 +1,89 @@ +--- +title: "<cryptoNameMapping> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#cryptoNameMapping" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings/cryptoNameMapping" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "cryptoNameMapping 要素" +ms.assetid: c59c9494-149b-4ce6-b38d-371f896ae85c +caps.latest.revision: 12 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 12 +--- +# <cryptoNameMapping> 要素 +クラスと表示名との割り当てが含まれます。 + +## 構文 + +``` + +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|`cryptoClasses`|**\** 要素の表示名への割り当てが設定されている暗号化クラスを示します。| +|`nameEntry`|クラス名をアルゴリズムの表示名に割り当てます。これにより、1 つのクラスに複数の表示名を割り当てることができるようになります。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`cryptographySettings`|暗号に関する設定が含まれます。| +|`cryptoNameMapping`|クラスと表示名との割り当てが含まれます。| +|`mscorlib`|cryptographySettings\> \<要素を含みます。| + +## 使用例 + 次の例では、暗号化クラスを参照し、ランタイムを構成するために **\** 要素を使用する方法を示します。 その後、文字列 "RSA" を メソッドに渡し、 メソッドを使用して `MyCryptoRSAClass` オブジェクトを取得できます。 + +``` + + + + + + + + + + + + + +``` + +## 参照 + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [暗号設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/cryptography/index.md) + [暗号サービス](../../../../../docs/standard/security/cryptographic-services.md) + [暗号化クラスの設定](../../../../../docs/framework/configure-apps/configure-cryptography-classes.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/cryptography/index.md b/docs/framework/configure-apps/file-schema/cryptography/index.md new file mode 100644 index 00000000000..ff8651a3b95 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/cryptography/index.md @@ -0,0 +1,66 @@ +--- +title: "暗号設定スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "構成スキーマ [.NET Framework], 暗号化" + - "構成のセクション [.NET Framework]" + - "構成の設定 [.NET Framework], 暗号化" + - "暗号化, 割り当て (アルゴリズム名の)" + - "暗号化, 設定スキーマ" + - "要素 [.NET Framework], 暗号化" + - "スキーマ構成の設定" +ms.assetid: 1f55050a-b2a3-4868-a3c0-da20826150f3 +caps.latest.revision: 10 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 10 +--- +# 暗号設定スキーマ +暗号設定スキーマには、アルゴリズムの表示名を暗号化アルゴリズムを実装するクラスに割り当てる方法を指定する要素が含まれます。 + + [\](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/cryptography/mscorlib-element-for-cryptography-settings.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptonamemapping-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptoclasses-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/cryptography/oidmap-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/cryptography/oidentry-element.md) + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptoclasses-element.md)|**\** 要素の表示名への割り当てが設定されている暗号化クラスを示します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md)|**\** 要素の表示名への割り当てが設定されている暗号化クラスが含まれています。| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md)|暗号に関する設定が含まれます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptonamemapping-element.md)|クラスと表示名との割り当てが含まれます。| +|[\<暗号設定の mscorlibelement\>](../../../../../docs/framework/configure-apps/file-schema/cryptography/mscorlib-element-for-cryptography-settings.md)|**\**要素が含まれています。| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md)|クラス名をアルゴリズムの表示名に割り当てます。これにより、1 つのクラスに複数の表示名を割り当てることができるようになります。| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/oidentry-element.md)|ASN.1 オブジェクト識別子 \(OID\) を表示名に割り当てます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/oidmap-element.md)|クラスへの ASN.1 OID 割り当てが含まれます。| + +## 参照 + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [暗号サービス](../../../../../docs/standard/security/cryptographic-services.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/cryptography/mscorlib-element-for-cryptography-settings.md b/docs/framework/configure-apps/file-schema/cryptography/mscorlib-element-for-cryptography-settings.md new file mode 100644 index 00000000000..b7fb4eeb587 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/cryptography/mscorlib-element-for-cryptography-settings.md @@ -0,0 +1,87 @@ +--- +title: "暗号設定の <mscorlib> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#mscorlib" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "mscorlib 要素" +ms.assetid: d549668f-31f1-4b92-8021-a9135c09ca3c +caps.latest.revision: 13 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# 暗号設定の <mscorlib> 要素 +[\ 要素](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptographysettings-element.md)が含まれます。 + +## 構文 + +``` + +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|`cryptographySettings`|暗号に関する設定が含まれます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| + +## 使用例 + 次の例では、暗号化クラスを参照し、ランタイムを構成するために **\** 要素を使用する方法を示します。 その後、文字列 "RSA" を メソッドに渡し、 メソッドを使用して `MyCryptoRSAClass` オブジェクトを取得できます。 + +``` + + + + + + + + + + + + + +``` + +## 参照 + + + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [暗号設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/cryptography/index.md) + [暗号サービス](../../../../../docs/standard/security/cryptographic-services.md) + [暗号化クラスの設定](../../../../../docs/framework/configure-apps/configure-cryptography-classes.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md b/docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md new file mode 100644 index 00000000000..ea10a52e16c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md @@ -0,0 +1,88 @@ +--- +title: "<nameEntry> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#nameEntry" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings/cryptoNameMapping/nameEntry" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "nameEntry 要素" +ms.assetid: 7d7535e9-4b4a-4b8c-82e2-e40dff5a7821 +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# <nameEntry> 要素 +クラス名をアルゴリズムの表示名に割り当てます。これにより、1 つのクラスに複数の表示名を割り当てることができるようになります。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|**name**|必須の属性です。

暗号化クラスを実装するアルゴリズムの表示名を指定します。| +|**class**|必須の属性です。

[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md) 要素で **名前** 属性の値を指定します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.web`|ASP.NET 構成セクションのルート要素を指定します。| + +## 解説 + **name** 属性は、 名前空間に存在するいずれかの抽象クラスの名前です。 抽象暗号化クラスで **Create** メソッドを呼び出すと、抽象クラス名が [Security.CryptoConfig.CreateFromName](frlrfSystemSecurityCryptographyCryptoConfigClassCreateFromNameTopic) メソッドに渡されます。 **CreateFromName** は、**class** 属性で示された型のインスタンスを返します。 **name** 属性が RSA のような短い名前の場合は、**CreateFromName** メソッドを呼び出すときにこの名前を使用できます。 + +## 使用例 + 次の例では、暗号化クラスを参照し、ランタイムを構成するために **\** 要素を使用する方法を示します。 その後、文字列 "RSA" を メソッドに渡し、 メソッドを使用して `MyCryptoRSAClass` オブジェクトを取得できます。 + +``` + + + + + + + + + + + + + +``` + +## 参照 + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [暗号設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/cryptography/index.md) + [暗号サービス](../../../../../docs/standard/security/cryptographic-services.md) + [暗号化クラスの設定](../../../../../docs/framework/configure-apps/configure-cryptography-classes.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/cryptography/oidentry-element.md b/docs/framework/configure-apps/file-schema/cryptography/oidentry-element.md new file mode 100644 index 00000000000..9b3b110cd0b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/cryptography/oidentry-element.md @@ -0,0 +1,92 @@ +--- +title: "<oidEntry> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings/oidMap/oidEntry" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#oidEntry" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "oidEntry 要素" +ms.assetid: 22fb88b0-bf27-489c-9ca0-e65950ac136c +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# <oidEntry> 要素 +ASN.1 オブジェクト識別子 \(OID\) を表示名に割り当てます。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|**OID**|必須の属性です。

クラスで実装されるアルゴリズムに対応する ASN.1 OID を指定します。| +|**name**|必須の属性です。

[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md) タグで **名前** 属性の値を指定します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`cryptographySettings`|暗号に関する設定が含まれます。| +|`mscorlib`|`cryptographySettings` 要素を含みます。| +|`oidMap`|クラスへの ASN.1 オブジェクト識別子 \(OID\) 割り当てが含まれます。| + +## 解説 + ASN.1 オブジェクト識別子は、ある暗号化形式のアルゴリズムを識別します。 オブジェクト識別子を、識別するアルゴリズムの表示名に割り当てます。 オブジェクト識別子の詳細については、MSDN ライブラリを参照してください。 + +## 使用例 + 次の例は、このハッシュ アルゴリズムの実装に RIPEMD\-160 ハッシュ アルゴリズムにオブジェクト ID を割り当てるために **\** 要素を使用する方法を示します。 + +``` + + + + + + + + + + + + + + + +``` + +## 参照 + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [暗号設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/cryptography/index.md) + [暗号サービス](../../../../../docs/standard/security/cryptographic-services.md) + [暗号化クラスの設定](../../../../../docs/framework/configure-apps/configure-cryptography-classes.md) + [暗号化アルゴリズムへのオブジェクト ID の割り当て](../../../../../docs/framework/configure-apps/map-object-identifiers-to-cryptography-algorithms.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/cryptography/oidmap-element.md b/docs/framework/configure-apps/file-schema/cryptography/oidmap-element.md new file mode 100644 index 00000000000..b80c6956844 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/cryptography/oidmap-element.md @@ -0,0 +1,88 @@ +--- +title: "<oidMap> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#oidMap" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/mscorlib/cryptographySettings/oidMap" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "oidMap 要素" +ms.assetid: 7f0c2246-c070-4748-b96a-2f66a296c539 +caps.latest.revision: 9 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 9 +--- +# <oidMap> 要素 +クラスへの ASN.1 オブジェクト識別子 \(OID\) 割り当てが含まれます。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/cryptography/oidentry-element.md)|ASN.1 OID を表示名に割り当てます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`cryptographySettings`|暗号に関する設定が含まれます。| +|`mscorlib`|`cryptographySettings` 要素を含みます。| + +## 使用例 + 次の例は、このハッシュ アルゴリズムの実装に RIPEMD\-160 ハッシュ アルゴリズムの OID を格納するために **\** 要素を使用する方法を示します。 + +``` + + + + + + + + + + + + + + + +``` + +## 参照 + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [暗号設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/cryptography/index.md) + [暗号サービス](../../../../../docs/standard/security/cryptographic-services.md) + [暗号化クラスの設定](../../../../../docs/framework/configure-apps/configure-cryptography-classes.md) + [暗号化アルゴリズムへのオブジェクト ID の割り当て](../../../../../docs/framework/configure-apps/map-object-identifiers-to-cryptography-algorithms.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/index.md b/docs/framework/configure-apps/file-schema/index.md new file mode 100644 index 00000000000..0c73612d7b8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/index.md @@ -0,0 +1,98 @@ +--- +title: ".NET Framework の構成ファイル スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ".NET Framework アプリケーション構成, 構成スキーマ" + - "app.config ファイル, スキーマ" + - "アプリケーション構成ファイル, スキーマ" + - "アプリケーション開発 [.NET Framework], スキーマ" + - "構成スキーマ [.NET Framework]" + - "構成の設定 [.NET Framework], アプリケーション" + - "コンテナー タグ" + - "エンタープライズ セキュリティ構成ファイル" + - "enterprisesec.config ファイル" + - "マシン構成ファイル" + - "machine.config ファイル" + - "スキーマ構成の設定" + - "スキーマ, 構成の設定" + - "セキュリティ [.NET Framework], 構成ファイル" + - "security.config ファイル" + - "整形式の XML" + - "XML タグ" +ms.assetid: 69003d39-dc8a-460c-a6be-e6d93e690b38 +caps.latest.revision: 20 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 18 +--- +# .NET Framework の構成ファイル スキーマ +構成ファイルは、設定を変更し、アプリのポリシーを設定するために使用できる標準 XML ファイルです。 .NET Framework の構成スキーマは、アプリの動作を制御するために構成ファイルで使用できる要素で構成されます。 このセクションの目次は、スキーマ、起動時の階層、ランタイム、ネットワーク、およびその他の種類の構成設定を反映しています。 + + 構成ファイルの種類、形式、および場所については、「[アプリの構成](../../../../docs/framework/configure-apps/index.md)」の記事を参照してください。 構成ファイルを直接編集するには、XML に関する知識が必要です。 + +> [!IMPORTANT] +> 構成ファイルの XML タグおよび属性では、大文字と小文字が区別されます。 + +## このセクションの内容 + [\ 要素](../../../../docs/framework/configure-apps/file-schema/configuration-element.md) + すべての構成ファイルの最上位要素である `` 要素について説明します。 + + [\ 要素](../../../../docs/framework/configure-apps/file-schema/assemblybinding-element-for-configuration.md) + 構成レベルでのアセンブリ バインディング ポリシーを指定します。 + + [\ 要素](../../../../docs/framework/configure-apps/file-schema/linkedconfiguration-element.md) + インクルードする構成ファイルを指定します。 + + [スタートアップ設定スキーマ](../../../../docs/framework/configure-apps/file-schema/startup/index.md) + 使用する共通言語ランタイムのバージョンを指定する要素について説明します。 + + [ランタイム設定スキーマ](../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + アセンブリのバインディングとランタイムの動作を構成する要素について説明します。 + + [ネットワーク設定スキーマ](../../../../docs/framework/configure-apps/file-schema/network/index.md) + .NET Framework がインターネットに接続する方法を指定する要素について説明します。 + + [暗号設定スキーマ](../../../../docs/framework/configure-apps/file-schema/cryptography/index.md) + アルゴリズムの表示名を、暗号化アルゴリズムを実装するクラスに割り当てる要素について説明します。 + + [構成セクション スキーマ](../../../../docs/framework/configure-apps/file-schema/configuration-sections-schema.md) + カスタム設定の構成セクションを作成し、使用するための要素について説明します。 + + [トレースおよびデバッグ設定のスキーマ](../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + トレース スイッチとリスナーを指定する要素について説明します。 + + [コンパイラおよび言語プロバイダー設定のスキーマ](../../../../docs/framework/configure-apps/file-schema/compiler/index.md) + 使用できる言語プロバイダーのコンパイラの構成を指定する要素について説明します。 + + [アプリケーション設定のスキーマ](../../../../docs/framework/configure-apps/file-schema/application-settings-schema.md) + Windows フォームや ASP.NET アプリケーションで、アプリケーション スコープおよびユーザー スコープの設定の格納と取得を可能にする要素について説明します。 + + [Web 設定スキーマ](../../../../docs/framework/configure-apps/file-schema/web/index.md) + IIS などのホスト アプリケーションと ASP.NET の連携を構成する要素も含め、Web 設定スキーマのすべての要素。 aspnet.config ファイルで使用します。 + +## 関連項目 + [Remoting Settings Schema](http://msdn.microsoft.com/ja-jp/dc2d1e62-9af7-4ca1-99fd-98b93bb4db9e) + リモート処理を実装するクライアント アプリケーションとサーバー アプリケーションを構成する要素について説明します。 + + [ASP.NET 設定スキーマ](http://msdn.microsoft.com/library/b5ysx397\(v=vs.100\).aspx) + ASP.NET Web アプリケーションの動作を制御する要素について説明します。 + + [Web Services Settings Schema](http://msdn.microsoft.com/ja-jp/f84d6d55-1add-4eb7-ae46-33df5833ea2e) + ASP.NET Web サービス、およびそれらのクライアントの動作を制御する要素について説明します。 + + [Configuring .NET Framework Apps](http://msdn.microsoft.com/ja-jp/d789b592-fcb5-4e3d-8ac9-e0299adaaa42) + セキュリティ、アセンブリのバインディング、および .NET Framework のリモート処理を構成する方法について説明します。 \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/linkedconfiguration-element.md b/docs/framework/configure-apps/file-schema/linkedconfiguration-element.md new file mode 100644 index 00000000000..36a9cb40758 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/linkedconfiguration-element.md @@ -0,0 +1,94 @@ +--- +title: "<linkedConfiguration> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/assemblyBinding/linkedConfiguration" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#linkedConfiguration" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "構成ファイル [.NET Framework], リンクされた構成ファイル" + - "インクルード (構成ファイルを)" + - "リンクされた構成ファイル" + - "linkedConfiguration 要素" +ms.assetid: 8eb34f3b-427e-4288-a7ff-c73f489deb45 +caps.latest.revision: 6 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 6 +--- +# <linkedConfiguration> 要素 +インクルードする構成ファイルを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`href`|インクルードされる構成ファイルの URL です。 `href` 属性に指定できる形式は "file:\/\/" に限られています。 ローカル ファイルと UNC ファイルがサポートされています。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素](../../../../docs/framework/configure-apps/file-schema/assemblybinding-element-for-configuration.md)|構成レベルでのアセンブリ バインディング ポリシーを指定します。| + +## 解説 + `` 要素は、コンポーネント アセンブリの供給を簡素化します。 既知の場所に構成ファイルがあるアセンブリを 1 つまたは複数のアプリケーションが使用する場合は、それらのアプリケーションの構成ファイルに、構成情報を直接取り込むのではなく、`` 要素を使用してアセンブリ構成ファイルをインクルードできます。 コンポーネント アセンブリが供給される場合は、共通の構成ファイルを更新することで、そのアセンブリを使用するすべてのアプリケーションに更新された構成情報が提供されます。 + +> [!NOTE] +> Windows side\-by\-side マニフェストを使用するアプリケーションに対しては、`` 要素がサポートされません。 + + リンクされた構成ファイルの使用については、次の規則が適用されます。 + +- インクルードされる構成ファイル内の設定は、ローダー バインディング ポリシーにのみ影響し、ローダーのみが使用します。 インクルードされる構成ファイルには、バインディング ポリシー以外の設定も指定できますが、それらの設定には効力がありません。 + +- `href` 属性に指定できる形式は "file:\/\/" に限られています。 ローカル ファイルと UNC ファイルがサポートされています。 + +- 構成ファイルあたりのリンクされる構成の数には制限がありません。 + +- リンクされるすべての構成ファイルは、マージされて 1 つのファイルとなります。これは、C\/C\+\+ の `#include` ディレクティブの動作と似ています。 + +- `` 要素は、アプリケーション構成ファイルでのみ使用でき、Machine.config では無視されます。 + +- 循環参照は、検出されて終了されます。 つまり、一連の構成ファイルの `` 要素がループを生成する場合は、そのループが検出されて停止されます。 + +## 使用例 + ローカル ハード ディスクから構成ファイルをインクルードする方法を、次のコード例に示します。 + +``` + + + + + +``` + +## 参照 + [\ 要素](../../../../docs/framework/configure-apps/file-schema/assemblybinding-element-for-configuration.md) + [構成ファイル スキーマ](../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/TOC.md b/docs/framework/configure-apps/file-schema/network/TOC.md new file mode 100644 index 00000000000..68b9a1b7180 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/TOC.md @@ -0,0 +1,43 @@ +# [connectionManagement の 要素 (ネットワーク設定)](clear-element-for-connectionmanagement-network-settings.md) +# [ネットワーク設定スキーマ](index.md) +# [webRequestModules の 要素 (ネットワーク設定)](remove-element-for-webrequestmodules-network-settings.md) +# [authenticationModules の 要素 (ネットワーク設定)](clear-element-for-authenticationmodules-network-settings.md) +# [ 要素 (Uri 設定)](uri-element-uri-settings.md) +# [ 要素 (ネットワーク設定)](connectionmanagement-element-network-settings.md) +# [authenticationModules の 要素 (ネットワーク設定)](remove-element-for-authenticationmodules-network-settings.md) +# [ 要素 (ネットワーク設定)](webproxyscript-element-network-settings.md) +# [bypasslist の 要素 (ネットワーク設定)](add-element-for-bypasslist-network-settings.md) +# [ 要素 (ネットワーク設定)](defaultproxy-element-network-settings.md) +# [ 要素 (ネットワーク設定)](requestcaching-element-network-settings.md) +# [ 要素 (Uri 設定)](iriparsing-element-uri-settings.md) +# [connectionManagement の 要素 (ネットワーク設定)](remove-element-for-connectionmanagement-network-settings.md) +# [connectionManagement の 要素 (ネットワーク設定)](add-element-for-connectionmanagement-network-settings.md) +# [ 要素 (ネットワーク設定)](servicepointmanager-element-network-settings.md) +# [schemeSettings の 要素 (Uri 設定)](clear-element-for-schemesettings-uri-settings.md) +# [ 要素 (ネットワーク設定)](httplistener-element-network-settings.md) +# [bypasslist の 要素 (ネットワーク設定)](remove-element-for-bypasslist-network-settings.md) +# [schemeSettings の 要素 (Uri 設定)](add-element-for-schemesettings-uri-settings.md) +# [ 要素 (ネットワーク設定)](mailsettings-element-network-settings.md) +# [ 要素 (ネットワーク設定)](system-net-element-network-settings.md) +# [ 要素 (ネットワーク設定)](httpwebrequest-element-network-settings.md) +# [webRequestModules の 要素 (ネットワーク設定)](clear-element-for-webrequestmodules-network-settings.md) +# [webRequestModules の 要素 (ネットワーク設定)](add-element-for-webrequestmodules-network-settings.md) +# [schemeSettings の 要素 (Uri 設定)](remove-element-for-schemesettings-uri-settings.md) +# [ 要素 (ネットワーク設定)](performancecounter-element-network-settings.md) +# [ 要素 (ネットワーク設定)](proxy-element-network-settings.md) +# [ 要素 (ネットワーク設定)](socket-element-network-settings.md) +# [authenticationModules の 要素 (ネットワーク設定)](add-element-for-authenticationmodules-network-settings.md) +# [bypasslist の 要素 (ネットワーク設定)](clear-element-for-bypasslist-network-settings.md) +# [ 要素 (ネットワーク設定)](network-element-network-settings.md) +# [ 要素 (ネットワーク設定)](defaulthttpcachepolicy-element-network-settings.md) +# [ 要素 (ネットワーク設定)](smtp-element-network-settings.md) +# [ 要素 (ネットワーク設定)](settings-element-network-settings.md) +# [ 要素 (Uri 設定)](idn-element-uri-settings.md) +# [ 要素 (ネットワーク設定)](webrequestmodules-element-network-settings.md) +# [ 要素 (ネットワーク設定)](bypasslist-element-network-settings.md) +# [ 要素 (ネットワーク設定)](authenticationmodules-element-network-settings.md) +# [ 要素 (ネットワーク設定)](ipv6-element-network-settings.md) +# [ 要素 (ネットワーク設定)](module-element-network-settings.md) +# [ 要素 (ネットワーク設定)](defaultftpcachepolicy-element-network-settings.md) +# [ 要素 (Uri 設定)](schemesettings-element-uri-settings.md) +# [ 要素 (ネットワーク設定)](specifiedpickupdirectory-element-network-settings.md) diff --git a/docs/framework/configure-apps/file-schema/network/add-element-for-authenticationmodules-network-settings.md b/docs/framework/configure-apps/file-schema/network/add-element-for-authenticationmodules-network-settings.md new file mode 100644 index 00000000000..5ad5ee2c7ae --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/add-element-for-authenticationmodules-network-settings.md @@ -0,0 +1,95 @@ +--- +title: "authenticationModules の <add> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#add" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/authenticationModules/add" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素, authenticationModules" + - ", add 要素" + - "add 要素, authenticationModules" + - "authenticationModules, add 要素" +ms.assetid: 333c5fb0-a2ab-4db8-8531-a7fe37bb9b5b +caps.latest.revision: 15 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 15 +--- +# authenticationModules の <add> 要素 (ネットワーク設定) +認証モジュールをアプリケーションに追加します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`type`|認証を実装するモジュールのクラス名および詳細。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[authenticationModules](../../../../../docs/framework/configure-apps/file-schema/network/authenticationmodules-element-network-settings.md)|ネットワーク要求を認証するために使用するモジュールを指定します。| + +## 解説 + `add` 要素は、登録されている認証モジュールのリストの末尾に認証モジュールを追加します。 認証モジュールは、各認証モジュールがリストに追加された順序で呼び出されます。 + + `type` 属性の値は、有効な DLL 名および対応するクラスの名前をコンマで区切って指定する必要があります。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 既定の認証モジュールを有効にするコード例を次に示します。 Version の値および PublicKeyToken の値は、指定したモジュールに対応する正しい値に置き換える必要があります。 + +``` + + + + + + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/add-element-for-bypasslist-network-settings.md b/docs/framework/configure-apps/file-schema/network/add-element-for-bypasslist-network-settings.md new file mode 100644 index 00000000000..03b504ebf20 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/add-element-for-bypasslist-network-settings.md @@ -0,0 +1,92 @@ +--- +title: "bypasslist の <add> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/defaultProxy/bypasslist/add" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#add" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素, bypasslist" + - ", add 要素" + - "add 要素, bypasslist" + - "bypasslist, add 要素" +ms.assetid: a0b86e28-86b4-4497-abe8-d5fd614c7926 +caps.latest.revision: 17 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 17 +--- +# bypasslist の <add> 要素 (ネットワーク設定) +IP アドレスまたは DNS 名をプロキシ バイパス リストに追加します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|**address**|IP アドレスまたは DNS 名を記述する正規表現。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[bypasslist](../../../../../docs/framework/configure-apps/file-schema/network/bypasslist-element-network-settings.md)|プロキシを使用しないアドレスを記述する一連の正規表現を提供します。| + +## 解説 + `add` 要素は、IP アドレスまたは DNS サーバー名を記述する正規表現を、プロキシ サーバーをバイパスするアドレスのリストに挿入します。 + + `address` 属性の値は、一組の IP アドレスまたはホスト名を記述する正規表現である必要があります。 + + この要素に正規表現を指定する場合は注意が必要です。 たとえば、"\[a\-z\]\+\\.contoso\\.com" という正規表現は、contoso.com ドメインの各ホストに一致しますが、contoso.com.cpandl.com ドメインの各ホストとも一致します。 contoso.com ドメインのホストとだけ一致させるためには、アンカーとして "$" を使用し、"\[a\-z\]\+\\.contoso\\.com$" のように記述します。 + + 正規表現の詳細については、「[.NET Framework の正規表現](../../../../../docs/standard/base-types/regular-expressions.md)」を参照してください。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 2 つのアドレスをバイパス リストに追加するコード例を次に示します。 第 1 の例では、contoso.com ドメインにあるすべてのサーバーでプロキシをバイパスします。第 2 の例では、IP アドレスが 192.168 で始まるすべてのサーバーでプロキシをバイパスします。 + +``` + + + + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/add-element-for-connectionmanagement-network-settings.md b/docs/framework/configure-apps/file-schema/network/add-element-for-connectionmanagement-network-settings.md new file mode 100644 index 00000000000..193cfb45b72 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/add-element-for-connectionmanagement-network-settings.md @@ -0,0 +1,89 @@ +--- +title: "connectionManagement の <add> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#add" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/connectionManagement/add" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素, connectionManagement" + - ", add 要素" + - "add 要素, connectionManagement" + - "connectionManagement, add 要素" +ms.assetid: 856bf57d-1c63-46c7-a178-03d97b0a4149 +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# connectionManagement の <add> 要素 (ネットワーク設定) +IP アドレスまたは DNS 名を接続管理リストに追加します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**属性**|**説明**| +|------------|------------| +|`address`|IP アドレスまたは DNS 名を記述する文字列。| +|`maxconnection`|サーバーに対して許可される接続の最大数。 値が指定されていない場合、既定値は 2 です。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[connectionManagement](../../../../../docs/framework/configure-apps/file-schema/network/connectionmanagement-element-network-settings.md)|ネットワーク ホストへの接続の最大数を指定します。| + +## 解説 + `address` 属性の値は、すべての接続を示すアスタリスク、または形式が `://[:]` の文字列である必要があります。 + + HTTP API に渡される URI に Unicode が含まれる場合、punicode 文字列を返す可能性がある を使用して名前が内部的に変換されます \(動作は現行 IDN 構成によって異なる\)。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 次のコード例では、サーバー www.contoso.com への 4 つの接続とその他のすべてのサーバーへの 2 つの接続を使用するアプリケーションを構成します。 + +``` + + + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/add-element-for-schemesettings-uri-settings.md b/docs/framework/configure-apps/file-schema/network/add-element-for-schemesettings-uri-settings.md new file mode 100644 index 00000000000..c9fee39d5d3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/add-element-for-schemesettings-uri-settings.md @@ -0,0 +1,98 @@ +--- +title: "schemeSettings の <add> 要素 (Uri 設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 594a7b3b-af23-4cfa-b616-0b2dddb1a705 +caps.latest.revision: 7 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 7 +--- +# schemeSettings の <add> 要素 (Uri 設定) +スキーム名に対するスキーム設定を追加します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|name|この設定を適用するスキーム名。 サポートされている値は、name\="http" と name\="https" だけです。| + +## {属性名} 属性 + +|値|説明| +|-------|--------| +|genericUriParserOptions|このスキームのパーサー オプション。 サポートされている値は、genericUriParserOptions\= "DontUnescapePathDotsAndSlashes" だけです。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素 \(Uri 設定\)](../../../../../docs/framework/configure-apps/file-schema/network/schemesettings-element-uri-settings.md)| が特定のスキーマに対して解析される方法を指定します。| + +## 解説 + 既定では、 クラスは、パスの圧縮を実行する前に、パーセント記号をエンコードしたパス区切り記号のエスケープを解除します。 これは、次のような攻撃に対するセキュリティ機構として実装されました。 + + `http://www.contoso.com/..%2F..%2F/Windows/System32/cmd.exe?/c+dir+c:\` + + パーセント記号をエンコードした文字を正しく処理できないモジュールにこの URI が渡されると、次のコマンドがサーバーによって実行されます。 + + `c:\Windows\System32\cmd.exe /c dir c:\` + + このため、 クラスでは、パス区切り記号のエスケープを解除してから、パスの圧縮を適用します。 上のような悪意のある URL を クラス コンストラクターに渡した場合、次の URI になります。 + + `http://www.microsoft.com/Windows/System32/cmd.exe?/c+dir+c:\` + + この既定の動作は、特定のスキームの schemeSettings 構成オプションを使用して、パーセント記号をエンコードしたパス区切り記号のエスケープを解除しないように変更できます。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + http スキームのパーセント記号をエンコードしたパス区切り記号をエスケープしないようにするために、 クラスで使用する構成を次のコード例に示します。 + +``` + + + + + + + +``` + +## 参照 + + + + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/add-element-for-webrequestmodules-network-settings.md b/docs/framework/configure-apps/file-schema/network/add-element-for-webrequestmodules-network-settings.md new file mode 100644 index 00000000000..11999809b4b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/add-element-for-webrequestmodules-network-settings.md @@ -0,0 +1,94 @@ +--- +title: "webRequestModules の <add> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/webRequestModules/add" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#add" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素, webRequestModules" + - ", add 要素" + - "add 要素, webRequestModules" + - "webRequestModules, add 要素" +ms.assetid: 47ec4adc-f39f-4bcd-8680-1ec21fd26890 +caps.latest.revision: 16 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 16 +--- +# webRequestModules の <add> 要素 (ネットワーク設定) +カスタム Web 要求モジュールをアプリケーションに追加します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`prefix`|この Web 要求モジュールで処理される要求の URI プレフィックス。| +|`type`|この Web 要求モジュールを実装するモジュールのアセンブリ名およびクラス名。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[webRequestModules](../../../../../docs/framework/configure-apps/file-schema/network/webrequestmodules-element-network-settings.md)|ネットワーク ホストからの情報を要求するために使用するモジュールを指定します。| + +## 解説 + `prefix` 属性は、指定した Web 要求モジュールを使用する URI プレフィックスを定義します。 通常、Web 要求モジュールは、HTTP や FTP などの特定のプロトコルを処理するために登録します。ただし、特定のサーバーまたはサーバー上の特定のパスへの要求を処理するために登録することもできます。 + + Web 要求モジュールは、プレフィックスと一致する URI が メソッドに渡されると作成されます。 + + `prefix` 属性の値は、"http" や "http:\/\/www.contoso.com" のように、有効な UR の先行文字である必要があります。 + + `type` 属性の値は、有効な DLL 名および対応するクラスの名前をコンマで区切って指定する必要があります。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + HTTP 用のカスタム Web 要求モジュールを登録するコード例を次に示します。 Version の値および PublicKeyToken の値は、指定したモジュールに対応する正しい値に置き換える必要があります。 + +``` + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/authenticationmodules-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/authenticationmodules-element-network-settings.md new file mode 100644 index 00000000000..d7929c17c0c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/authenticationmodules-element-network-settings.md @@ -0,0 +1,84 @@ +--- +title: "<authenticationModules> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#authenticationModules" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/authenticationModules" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "authenticationModules 要素" +ms.assetid: 10fcfaad-82ef-4692-871a-0aec9dfbe75e +caps.latest.revision: 15 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 15 +--- +# <authenticationModules> 要素 (ネットワーク設定) +ネットワーク要求を認証するために使用するモジュールを指定します。 + +## 構文 + +``` + +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|**要素**|**説明**| +|------------|------------| +|[add](../../../../../docs/framework/configure-apps/file-schema/network/add-element-for-authenticationmodules-network-settings.md)|認証モジュールをアプリケーションに追加します。| +|[clear](../../../../../docs/framework/configure-apps/file-schema/network/clear-element-for-authenticationmodules-network-settings.md)|すべての認証モジュールをアプリケーションから削除します。| +|[remove](../../../../../docs/framework/configure-apps/file-schema/network/remove-element-for-authenticationmodules-network-settings.md)|認証モジュールをアプリケーションから削除します。| + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[system.net](../../../../../docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md)|.NET Framework がネットワークに接続する方法を指定するための設定が含まれています。| + +## 解説 + `authenticationModule` 要素は、サーバーとの間の認証プロセスを実行する認証モジュールを指定します。 認証モジュールは、 インターフェイスを実装する必要があります。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 認証モジュールを有効にするコード例を次に示します。 Version の値および PublicKeyToken の値は、指定したモジュールに対応する正しい値に置き換える必要があります。 + +``` + + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/bypasslist-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/bypasslist-element-network-settings.md new file mode 100644 index 00000000000..37f7c9bb268 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/bypasslist-element-network-settings.md @@ -0,0 +1,89 @@ +--- +title: "<bypasslist> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#bypasslist" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/defaultProxy/bypasslist" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "bypasslist 要素" +ms.assetid: 124446b7-abb1-4e5e-a492-b64398f268f1 +caps.latest.revision: 17 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 17 +--- +# <bypasslist> 要素 (ネットワーク設定) +プロキシを使用しないアドレスを記述する一連の正規表現を提供します。 + +## 構文 + +``` + +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|**要素**|**説明**| +|------------|------------| +|[add](../../../../../docs/framework/configure-apps/file-schema/network/add-element-for-bypasslist-network-settings.md)|IP アドレスまたは DNS 名をプロキシ バイパス リストに追加します。| +|[clear](../../../../../docs/framework/configure-apps/file-schema/network/clear-element-for-bypasslist-network-settings.md)|すべてのエントリをバイパス リストから削除します。| +|[remove](../../../../../docs/framework/configure-apps/file-schema/network/remove-element-for-bypasslist-network-settings.md)|IP アドレスまたは DNS 名をプロキシ バイパス リストから削除します。| + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[defaultProxy](../../../../../docs/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings.md)|ハイパーテキスト転送プロトコル \(HTTP: Hypertext Transfer Protocol\) プロキシ サーバーを構成します。| + +## 解説 + バイパス リストには、 インスタンスがプロキシ サーバーを経由せずに直接アクセスする URI を記述する正規表現が格納されます。 + + この要素に正規表現を指定する場合は注意が必要です。 たとえば、"\[a\-z\]\+\\.contoso\\.com" という正規表現は、contoso.com ドメインの各ホストに一致しますが、contoso.com.cpandl.com ドメインの各ホストとも一致します。 contoso.com ドメインのホストとだけ一致させるためには、アンカーとして "$" を使用し、"\[a\-z\]\+\\.contoso\\.com$" のように記述します。 + + 正規表現の詳細については、「[.NET Framework の正規表現](../../../../../docs/standard/base-types/regular-expressions.md)」を参照してください。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 2 つのアドレスをバイパス リストに追加するコード例を次に示します。 第 1 の例では、contoso.com ドメインにあるすべてのサーバーでプロキシをバイパスします。第 2 の例では、IP アドレスが 192.168 で始まるすべてのサーバーでプロキシをバイパスします。 + +``` + + + + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/clear-element-for-authenticationmodules-network-settings.md b/docs/framework/configure-apps/file-schema/network/clear-element-for-authenticationmodules-network-settings.md new file mode 100644 index 00000000000..3ab00b8f722 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/clear-element-for-authenticationmodules-network-settings.md @@ -0,0 +1,80 @@ +--- +title: "authenticationModules の <clear> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/authenticationModules/clear" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#clear" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ", clear 要素" + - " 要素, authenticationModules" + - "authenticationModules, clear 要素" + - "clear 要素, authenticationModules" +ms.assetid: dc522c45-4a80-4831-8955-f7b68a47edfd +caps.latest.revision: 13 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# authenticationModules の <clear> 要素 (ネットワーク設定) +すべての認証モジュールをアプリケーションから削除します。 + +## 構文 + +``` + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[authenticationModules](../../../../../docs/framework/configure-apps/file-schema/network/authenticationmodules-element-network-settings.md)|ネットワーク要求を認証するために使用するモジュールを指定します。| + +## 解説 + `clear` 要素は、構成ファイルまたは構成階層の上位レベルで既に定義されている認証モジュールを削除します。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 構成された認証モジュールのすべてを削除する例を次に示します。 + +``` + + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/clear-element-for-bypasslist-network-settings.md b/docs/framework/configure-apps/file-schema/network/clear-element-for-bypasslist-network-settings.md new file mode 100644 index 00000000000..82a57c8cc06 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/clear-element-for-bypasslist-network-settings.md @@ -0,0 +1,83 @@ +--- +title: "bypasslist の <clear> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/defaultProxy/bypasslist/clear" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#clear" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ", clear 要素" + - " 要素, bypasslist" + - "bypasslist, clear 要素" + - "clear 要素, bypasslist" +ms.assetid: 301584ca-a914-4100-b180-3b288d3b099e +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# bypasslist の <clear> 要素 (ネットワーク設定) +すべてのエントリをプロキシ バイパス リストから削除します。 + +## 構文 + +``` + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[bypasslist](../../../../../docs/framework/configure-apps/file-schema/network/bypasslist-element-network-settings.md)|プロキシを使用しないアドレスを記述する一連の正規表現を提供します。| + +## 解説 + `clear` 要素は、バイパス リストからすべてのエントリを削除します。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + すべてのエントリをバイパス リストから削除し、2 つのアドレスをバイパス リストに追加するコード例を次に示します。 第 1 の例では、contoso.com ドメインにあるすべてのサーバーでプロキシをバイパスします。第 2 の例では、IP アドレスが 192.168 で始まるすべてのサーバーでプロキシをバイパスします。 + +``` + + + + + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/clear-element-for-connectionmanagement-network-settings.md b/docs/framework/configure-apps/file-schema/network/clear-element-for-connectionmanagement-network-settings.md new file mode 100644 index 00000000000..4cf2cdd7ff2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/clear-element-for-connectionmanagement-network-settings.md @@ -0,0 +1,82 @@ +--- +title: "connectionManagement の <clear> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/connectionManagement/clear" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#clear" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素, connectionManagement" + - ", clear 要素" + - "clear 要素, connectionManagement" + - "connectionManagement, clear 要素" +ms.assetid: fb259282-84c4-4dc4-a226-78d904a6edc3 +caps.latest.revision: 13 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# connectionManagement の <clear> 要素 (ネットワーク設定) +すべてのエントリを接続管理リストから削除します。 + +## 構文 + +``` + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[connectionManagement](../../../../../docs/framework/configure-apps/file-schema/network/connectionmanagement-element-network-settings.md)|ネットワーク ホストへの接続の最大数を指定します。| + +## 解説 + `clear` 要素は、接続管理リストからすべてのエントリを削除します。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + すべてのエントリを接続管理リストから削除し、サーバー www.contoso.com とそれ以外のすべてのネットワーク ホストの接続管理エントリを追加するコード例を次に示します。 + +``` + + + + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/clear-element-for-schemesettings-uri-settings.md b/docs/framework/configure-apps/file-schema/network/clear-element-for-schemesettings-uri-settings.md new file mode 100644 index 00000000000..b7c34b3c4cb --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/clear-element-for-schemesettings-uri-settings.md @@ -0,0 +1,89 @@ +--- +title: "schemeSettings の <clear> 要素 (Uri 設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 65098332-ce61-4542-ab8d-e7dc0257d31f +caps.latest.revision: 7 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 7 +--- +# schemeSettings の <clear> 要素 (Uri 設定) +既存のスキーム設定をすべて消去します。 + +## 構文 + +``` + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素 \(Uri 設定\)](../../../../../docs/framework/configure-apps/file-schema/network/schemesettings-element-uri-settings.md)| が特定のスキーマに対して解析される方法を指定します。| + +## 解説 + 既定では、 クラスは、パスの圧縮を実行する前に、パーセント記号をエンコードしたパス区切り記号のエスケープを解除します。 これは、次のような攻撃に対するセキュリティ機構として実装されました。 + + `http://www.contoso.com/..%2F..%2F/Windows/System32/cmd.exe?/c+dir+c:\` + + パーセント記号をエンコードした文字を正しく処理できないモジュールにこの URI が渡されると、次のコマンドがサーバーによって実行されます。 + + `c:\Windows\System32\cmd.exe /c dir c:\` + + このため、 クラスでは、パス区切り記号のエスケープを解除してから、パスの圧縮を適用します。 上のような悪意のある URL を クラス コンストラクターに渡した場合、次の URI になります。 + + `http://www.microsoft.com/Windows/System32/cmd.exe?/c+dir+c:\` + + この既定の動作は、特定のスキームの schemeSettings 構成オプションを使用して、パーセント記号をエンコードしたパス区切り記号のエスケープを解除しないように変更できます。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + スキーム設定をすべて消去してから、http スキームのパーセント記号をエンコードしたパス区切り記号をエスケープしないようにする、 クラスで使用する構成を次のコード例に示します。 + +``` + + + + + + + + +``` + +## 参照 + + + + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/clear-element-for-webrequestmodules-network-settings.md b/docs/framework/configure-apps/file-schema/network/clear-element-for-webrequestmodules-network-settings.md new file mode 100644 index 00000000000..08d2c61ab6a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/clear-element-for-webrequestmodules-network-settings.md @@ -0,0 +1,83 @@ +--- +title: "webRequestModules の <clear> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/webRequestModules/clear" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#clear" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素, webRequestModules" + - ", clear 要素" + - "clear 要素, webRequestModules" + - "webRequestModules, clear 要素" +ms.assetid: 48f38bcb-f30c-4b74-a8f0-1a3caf1aa96f +caps.latest.revision: 13 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# webRequestModules の <clear> 要素 (ネットワーク設定) +登録されているすべての Web 要求モジュールをアプリケーションから削除します。 + +## 構文 + +``` + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[webRequestModules](../../../../../docs/framework/configure-apps/file-schema/network/webrequestmodules-element-network-settings.md)|ネットワーク ホストからの情報を要求するために使用するモジュールを指定します。| + +## 解説 + `clear` 要素は、構成ファイルまたは構成階層の上位レベルで既に定義されているすべての Web 要求モジュールを削除します。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + すべての Web 要求モジュールを削除し、HTTP 用の Web 要求モジュールを登録するコード例を次に示します。 + +``` + + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/connectionmanagement-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/connectionmanagement-element-network-settings.md new file mode 100644 index 00000000000..2d6b8d19bf2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/connectionmanagement-element-network-settings.md @@ -0,0 +1,84 @@ +--- +title: "<connectionManagement> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/connectionManagement" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#connectionManagement" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "connectionManagement 要素" +ms.assetid: bedccaab-12a2-4511-8f67-e961f249aec6 +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# <connectionManagement> 要素 (ネットワーク設定) +ネットワーク ホストへの接続の最大数を指定します。 + +## 構文 + +``` + +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|**要素**|**説明**| +|------------|------------| +|[add](../../../../../docs/framework/configure-apps/file-schema/network/add-element-for-connectionmanagement-network-settings.md)|IP アドレスまたは DNS 名を接続管理リストに追加します。| +|[clear](../../../../../docs/framework/configure-apps/file-schema/network/clear-element-for-connectionmanagement-network-settings.md)|すべてのエントリを接続管理リストから削除します。| +|[remove](../../../../../docs/framework/configure-apps/file-schema/network/remove-element-for-connectionmanagement-network-settings.md)|IP アドレスまたは DNS 名を接続管理リストから削除します。| + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[system.net](../../../../../docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md)|.NET Framework がネットワークに接続する方法を指定するための設定が含まれています。| + +## 解説 + `connectionManagement` 要素は、サーバーまたはサーバー グループへの接続の最大数を定義します。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + アプリケーションの構成でサーバー www.contoso.com への接続数を 4、それ以外のすべてのサーバーへの接続数を 2 に指定するコード例を次に示します。 + +``` + + + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/defaultftpcachepolicy-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/defaultftpcachepolicy-element-network-settings.md new file mode 100644 index 00000000000..f557b980f40 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/defaultftpcachepolicy-element-network-settings.md @@ -0,0 +1,93 @@ +--- +title: "<defaultFtpCachePolicy> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#defaultFtpCachePolicy" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/requestCaching/defaultFtpCachePolicy" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "defaultFtpCachePolicy 要素" +ms.assetid: 0eb0c5cb-dd97-484d-8614-785e88877abb +caps.latest.revision: 13 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# <defaultFtpCachePolicy> 要素 (ネットワーク設定) +FTP キャッシュがアクティブであるかどうかを指定し、既定のキャッシュ ポリシーを記述します。 + +## 構文 + +``` +< defaultFtpCachePolicy + policyLevel="BypassCache|Default|CacheOnly|CacheIfAvailable|Revalidate|Reload|NoCacheNoStore|Revalidate" +/> +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`policyLevel`|FTP キャッシュ ポリシーを指定します。 既定値は `Default` です。| + +## policyLevel 属性 + +|値|説明| +|-------|--------| +|`Default`|キャッシュされているリソースが最新であり、content length が正しく、expiration 属性、modification 属性、および content length 属性が指定されている場合、キャッシュされているリソースを返します。| +|`BypassCache`|サーバーからリソースを返します。| +|`CacheOnly`|content length が指定されており、エントリのサイズに一致する場合、キャッシュされているリソースを返します。| +|`CacheIfAvailable`|content length が指定されており、エントリのサイズに一致する場合には、キャッシュされているリソースを返します。その他の場合には、対象のリソースをサーバーからダウンロードした上で、呼び出し元に返します。| +|`Revalidate`|キャッシュされているリソースのタイムスタンプが、サーバー上のリソースのタイムスタンプと等しい場合には、キャッシュされているリソースを返します。その他の場合には、対象のリソースをサーバーからダウンロードし、キャッシュに格納し、呼び出し元に返します。| +|`Reload`|対象のリソースをサーバーからダウンロードし、キャッシュに格納した上で、呼び出し元に返します。| +|`NoCacheNoStore`|キャッシュされたリソースが存在する場合は削除されます。 サーバーからリソースをダウンロードし、呼び出し元に返します。| +|`Revalidate`|タイムスタンプがサーバーのリソースのタイムスタンプと同じ場合は、キャッシュされたリソースのコピーを使用して要求に応じます。それ以外の場合は、リソースがサーバーからダウンロードされ、呼び出し元に提示され、キャッシュに格納されます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[requestCaching](../../../../../docs/framework/configure-apps/file-schema/network/requestcaching-element-network-settings.md)|ネットワーク要求のキャッシュ機構を制御します。| + +## 解説 + +## 使用例 + 次のコード例は、`NoCacheNoStore` の FTP キャッシュ ポリシーを指定する方法を示しています。 + +``` + + + + + + + + +``` + +## 参照 + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/defaulthttpcachepolicy-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/defaulthttpcachepolicy-element-network-settings.md new file mode 100644 index 00000000000..49ac64ae9d7 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/defaulthttpcachepolicy-element-network-settings.md @@ -0,0 +1,94 @@ +--- +title: "<defaultHttpCachePolicy> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/requestCaching/defaultHttpCachePolicy" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#defaultHttpCachePolicy" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "defaultHttpCachePolicy 要素" +ms.assetid: 2c1247d0-39b0-4c12-919a-a925ce075c79 +caps.latest.revision: 19 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 19 +--- +# <defaultHttpCachePolicy> 要素 (ネットワーク設定) +HTTP キャッシュがアクティブであるかどうかを指定し、既定のキャッシュ ポリシーを記述します。 + +## 構文 + +``` +< defaultHttpCachePolicy + policyLevel="BypassCache|Default" + minimumFresh="d.hh:mm:ss"|"minValue" + maximumAge ="d.hh:mm:ss"|"maxValue" + maximumStale="d.hh:mm:ss"|"maxValue" +/> +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`maximumAge`|キャッシュされたオブジェクトを期限切れであるとマークするまでの最大時間間隔を指定します。| +|`maximumStale`|キャッシュされたオブジェクトを期限切れであるとマークするまでの、計算されたフレッシュネス時間からの最大経過時間を指定します。| +|`minimumFresh`|キャッシュされたオブジェクトをフレッシュであると判断する最小時間を指定します。| +|`policyLevel`|キャッシュ ポリシーが自動であるか、またはキャッシュを迂回するかを指定します。 既定値は `BypassCache` です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[requestCaching](../../../../../docs/framework/configure-apps/file-schema/network/requestcaching-element-network-settings.md)|ネットワーク要求のキャッシュ機構を制御します。| + +## 解説 + `policyLevel` 属性の値は、`BypassCache` または `Default` です。 + + `maximumAge`、`maximumStale`と `minimumFresh` 要素の値は *d*形式の明示的な時間間隔のいずれかです。*hh*:*mm*:*ss* \(日、時、分、秒\)、または適切 `minValue` 定数または `maxValue`。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 次のコード例は、minimumFresh に 6 時間を指定し、maximumAge に 2 日間を指定し、maximumStale に 4 時間を指定する方法を示しています。 + +``` + + + + + + + + + + + +``` + +## 参照 + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings.md new file mode 100644 index 00000000000..f82722ab220 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings.md @@ -0,0 +1,100 @@ +--- +title: "<defaultProxy> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#defaultProxy" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/defaultProxy" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "defaultProxy 要素" +ms.assetid: 9d663c4b-07b4-4f6f-9b12-efbd3630354f +caps.latest.revision: 21 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 21 +--- +# <defaultProxy> 要素 (ネットワーク設定) +ハイパーテキスト転送プロトコル \(HTTP: Hypertext Transfer Protocol\) プロキシ サーバーを構成します。 + +## 構文 + +``` + + + + +/> +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**要素**|**説明**| +|------------|------------| +|`enabled`|Web プロキシが使用されているかどうかを指定します。 既定値は `true` です。| +|`useDefaultCredentials`|このホストに対する既定の資格情報が Web プロキシにアクセスするために使用されるかどうかを指定します。 既定値は `false` です。| + +### 子要素 + +|**要素**|**説明**| +|------------|------------| +|[bypasslist](../../../../../docs/framework/configure-apps/file-schema/network/bypasslist-element-network-settings.md)|プロキシを使用しないアドレスを記述する一連の正規表現を提供します。| +|[モジュール](../../../../../docs/framework/configure-apps/file-schema/network/module-element-network-settings.md)|新しいプロキシ モジュールをアプリケーションに追加します。| +|[プロキシ](../../../../../docs/framework/configure-apps/file-schema/network/proxy-element-network-settings.md)|プロキシ サーバーを定義します。| + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[system. net](../../../../../docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md)|.NET Framework がネットワークに接続する方法を指定するための設定が含まれています。| + +## 解説 + defaultProxy 要素が空の場合、Internet Explorer のプロキシ設定が使用されます。 この動作は、.NET Framework Version 1.1 とは異なります。 + + 例外は クラスから [module](../../../../../docs/framework/configure-apps/file-schema/network/module-element-network-settings.md) 要素で非パブリック型が指定されている場合、型派生していませんスローされます。このオブジェクトの既定のコンストラクターで例外が発生した、またはシステムが指定した既定のプロキシを取得している間に例外が発生しました。 例外の プロパティに、このエラーの根本的な原因に関する詳細情報が含まれています。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + Internet Explorer プロキシの既定値を使用し、プロキシ アドレスを指定し、ローカル アクセスおよび contoso.com のプロキシをバイパスするコード例を次に示します。 + +``` + + + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/httplistener-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/httplistener-element-network-settings.md new file mode 100644 index 00000000000..fa74a118871 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/httplistener-element-network-settings.md @@ -0,0 +1,152 @@ +--- +title: "<httpListener> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 62f121fd-3f2e-4033-bb39-48ae996bfbd9 +caps.latest.revision: 7 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 7 +--- +# <httpListener> 要素 (ネットワーク設定) + クラスで使用されるパラメーターをカスタマイズします。 + +## 構文 + +``` + + +``` + +## 型 + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|unescapeRequestUrl| インスタンスが変換された URI ではなくエスケープされていない生の URI を使用するかどうかを示すブール値。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[設定](../../../../../docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md)| 名前空間の基本的なネットワーク オプションを構成します。| + +## 解説 + **unescapeRequestUrl** 属性は、変換された URI ではなくエスケープされていない生の URI を で使用するかどうかを示します。変換された URI では、パーセント記号をエンコードした値はすべて変換され、その他の正規化手順が実行されます。 + + インスタンスは `http.sys` サービスを通じて要求を受け取ると、`http.sys` から渡された URI 文字列のインスタンスを作成し、そのインスタンスを プロパティとして公開します。 + + `http.sys` サービスでは、次の 2 つの要求 URI 文字列を公開します。 + +- 生の URI + +- 変換された URI + + 生の URI は、HTTP 要求の要求行に指定されている です。 + + `GET /path/` + + `Host: www.contoso.com` + + 前の要求の `http.sys` から渡される生の URI は、"\/path\/" です。 これは、ネットワーク上で送信された HTTP 動詞の後に続く文字列を表します。 + + `http.sys` サービスでは、HTTP 要求行および Host ヘッダーに指定されている URI を使用して要求の転送先となる元のサーバーを特定することによって、要求に指定されている情報から、変換された URI を作成します。 この処理は、要求の情報と一連の登録済み URI プレフィックスとを比較することで行われます。 HTTP Server SDK のドキュメントでは、この変換された URI を HTTP\_COOKED\_URL 構造体と呼びます。 + + 要求と登録済み URI プレフィックスとを比較できるようにするためには、要求の正規化をいくつか行う必要があります。 上のサンプルでは、変換された URI は次のようになります。 + + `http://www.contoso.com/path/` + + `http.sys` サービスでは、 プロパティ値と要求行の文字列を結合して、変換された URI を作成します。 また、`http.sys` と クラスでは、次の処理も行います。 + +- パーセント記号をエンコードしたすべての値のエスケープを解除します。 + +- パーセント記号をエンコードした非 ASCII 文字を UTF\-16 文字表現に変換します。 UTF\-8 文字および ANSI\/DBCS 文字も Unicode 文字 \(%uXXXX 形式を使用した Unicode エンコーディング\) と同様にサポートされることに注意してください。 + +- パスの圧縮など、その他の正規化手順を実行します。 + + パーセント記号をエンコードした値に使用されているエンコーディングに関する情報は要求に含まれていないため、パーセント記号をエンコードした値を解析するだけでは、正しいエンコーディングを判断できない場合があります。 + + そのため、`http.sys` には、次に示すように、この処理を変更するためのレジストリ キーが 2 つ用意されています。 + +|レジストリ キー|既定値|説明| +|--------------|---------|--------| +|EnableNonUTF8|1|ゼロの場合、`http.sys` は UTF\-8 エンコードの URL のみ受け入れます。

ゼロ以外の場合、`http.sys` は要求で ANSI エンコードの URL または DBCS エンコードの URL も受け入れます。| +|FavorUTF8|1|ゼロ以外の場合、`http.sys` は常に最初に URL を UTF\-8 としてデコードしようとします。その変換が失敗した場合、EnableNonUTF8 がゼロ以外のときは、ANSI または DBCS としてデコードしようとします。

ゼロ \(かつ EnableNonUTF8 がゼロ以外\) の場合、`http.sys` は URL を ANSI または DBCS としてデコードしようとします。失敗した場合は、UTF\-8 変換を試行します。| + + は要求を受け取ると、`http.sys` からの変換された URI を プロパティへの入力として使用します。 + + URI では文字と数字以外の文字 \(記号など\) をサポートする必要があります。 例を次に示します。この URI は、顧客番号 "1\/3812" の顧客情報を取得するために使用するものです。 + + `http://www.contoso.com/Customer('1%2F3812')/` + + Uri のパーセント記号をエンコードしたスラッシュに注目してください \(%2F\)。 この場合、スラッシュ文字はデータを表し、パス区切り記号ではないため、この処理は必要です。 + + この文字列をそのまま Uri コンストラクターに渡すと、次の URI になります。 + + `http://www.contoso.com/Customer('1/3812')/` + + パスはセグメントに分割され、次の要素になります。 + + `Customer('1` + + `3812')` + + これでは、要求の送信元の意図とは異なります。 + + **unescapeRequestUrl** 属性が **false** に設定されている場合、 は要求を受け取ると、`http.sys` からの変換された URI ではなく生の URI を プロパティへの入力として使用します。 + + **unescapeRequestUrl** 属性の既定値は **true** です。 + + プロパティを使用すると、適用可能な構成ファイルから **unescapeRequestUrl** 属性の現在の値を取得できます。 + +## 使用例 + 要求を受け取ったときに、`http.sys` からの変換された URI ではなく生の URI を プロパティへの入力として使用するように、 クラスを構成する方法を次のコード例に示します。 + +``` + + + + + + + +``` + +## 要素情報 + +||| +|-|-| +|名前空間|System.Net| +|スキーマ名|| +|検証ファイル|| +|空も使用できる|| + +## 参照 + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/httpwebrequest-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/httpwebrequest-element-network-settings.md new file mode 100644 index 00000000000..2e074af6704 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/httpwebrequest-element-network-settings.md @@ -0,0 +1,89 @@ +--- +title: "<httpWebRequest> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/settings/httpWebRequest" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#httpWebRequest" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "httpWebRequest 要素" +ms.assetid: 52acd9d2-5bdc-4dc4-9c2a-f0a476ccbb31 +caps.latest.revision: 18 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 18 +--- +# <httpWebRequest> 要素 (ネットワーク設定) +Web 要求パラメーターをカスタマイズします。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`maximumResponseHeadersLength`|応答ヘッダーの最大長を KB で指定します。 既定値は 64 です。 \-1 の値は、応答ヘッダーにサイズ制限が設定されていないことを示しています。| +|`maximumErrorResponseLength`|エラー応答の最大長を KB で指定します。 既定値は 64 です。 \-1 の値は、エラー応答にサイズ制限が設定されていないことを示しています。| +|`maximumUnauthorizedUploadLength`|未承認エラー コードに応答してアップロードする最大長をバイトで指定します。 既定値は \-1 です。 値 \-1 は、アップロード情報にサイズ制限が適用されないことを示します。| +|`useUnsafeHeaderParsing`|安全でないヘッダー解析が有効であるかどうかを指定します。 既定値は `false` です。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[設定](../../../../../docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md)| 名前空間の基本的なネットワーク オプションを構成します。| + +## 解説 + 既定では、.NET Framework は URI 解析に対して RFC 2616 を厳密に適用します。 一部のサーバーの応答では、禁止されたフィールドに制御文字が含まれる場合があり、 メソッドが をスローする原因となります。 **useUnsafeHeaderParsing** が **true** に設定されている場合、 はスローしませんが、アプリケーションはいくつかのフォームの URI 解析攻撃を受けやすくなります。 最良のソリューションは、応答に制御文字が含まれないように、サーバーを変更することです。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 次のコード例は、通常の最大ヘッダー長より大きい値を指定する方法を示しています。 + +``` + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/idn-element-uri-settings.md b/docs/framework/configure-apps/file-schema/network/idn-element-uri-settings.md new file mode 100644 index 00000000000..7f06dd0c754 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/idn-element-uri-settings.md @@ -0,0 +1,111 @@ +--- +title: "<idn> 要素 (Uri 設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 16c8e869-1791-4cf5-9244-3d3c738f60ec +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# <idn> 要素 (Uri 設定) +国際化ドメイン名 \(IDN: Internationalized Domain Name\) による解析をドメイン名に適用するかどうかを指定します。 + +## スキーマの階層 + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md) + + [\ 要素 \(Uri 設定\)](../../../../../docs/framework/configure-apps/file-schema/network/uri-element-uri-settings.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/network/idn-element-uri-settings.md) + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**要素**|**説明**| +|------------|------------| +|`enabled`|ドメイン名に国際化ドメイン名 \(IDN: Internationalized Domain Name\) による解析を適用するかどうかを指定します。既定値は None です。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[uri](../../../../../docs/framework/configure-apps/file-schema/network/uri-element-uri-settings.md)|URI \(Uniform Resource Identifier\) で表現された Web アドレスが .NET Framework によってどのように処理されるかの設定を格納します。| + +## 解説 + .NET Framework 3.5、3.0 SP1、および 2.0 SP1 では、既存の クラスが拡張され、IRI \(International Resource Identifier\) および国際化ドメイン名 \(IDN: Internationalized Domain Name\) をサポートするようになりました。 現在のユーザーからは、明確に IRI と IDN サポートを有効にしない限り、.NET Framework 2.0 の動作からの変更点は見えません。 これにより、以前のバージョンの .NET Framework との互換性が確保されます。 + + IRI のサポートを有効にするには、次の 2 点を変更する必要があります。 + +1. .NET Framework 2.0 ディレクトリの machine.config ファイルに次の行を追加する。 + + ``` +
+ ``` + +2. ドメイン名に国際化ドメイン名 \(IDN: Internationalized Domain Name\) による解析を適用するか、IRI の解析規則を適用するかを指定します。 これは machine.config ファイルまたは app.config ファイルで行うことができます。 + + 使用する DNS サーバーに応じて、IDN がとりうる値は次の 3 つです。 + +- idn enabled \= All + + この値は、Unicode のドメイン名があれば、それを等価の Punycode \(IDN 名\) に変換します。 + +- idn enabled \= AllExceptIntranet + + この値は、ローカルなイントラネット以外のすべての Unicode ドメイン名を、等価の Punycode \(IDN 名\) を使用するように変換します。 このように、ローカルなイントラネットで国際名を処理する場合、このイントラネットで使用する DNS サーバーは Unicode の名前解決をサポートしている必要があります。 + +- idn enabled \= None + + この値は、どの Unicode のドメイン名も、Punycode を使用するように変換しません。 これが既定値であり、.NET Framework 2.0 の動作と同じです。 + + IDN を有効にすると、ドメイン名に含まれるすべての Unicode ラベルが等価の Punycode に変換されます。 Punycode 名は ASCII 文字だけで構成され、必ず xn\-\- というプレフィックスで始まります。 この目的は、インターネット上の既存の DNS サーバーをサポートすることです。ほとんどの DNS サーバーは、ASCII 文字しかサポートしていません \(RFC 3940 を参照\)。 + +### 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 例 + +### 説明 + 次のコード例は、 クラスで IRI の解析および IDN 名をサポートするための構成を示しています。 + +### コード + +``` + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/index.md b/docs/framework/configure-apps/file-schema/network/index.md new file mode 100644 index 00000000000..634ef2099b5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/index.md @@ -0,0 +1,57 @@ +--- +title: "ネットワーク設定スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "構成の設定 [.NET Framework], ネットワーク" + - "接続 [.NET Framework], ネットワーク構成要素" + - "要素 [.NET Framework], ネットワーク構成要素" + - "インターネット, ネットワーク構成要素" + - "ネットワーク構成要素" + - "ネットワーク リソース, ネットワーク構成要素" + - "ネットワーク設定" + - "受信 (データを), ネットワーク構成要素" + - "送信 (データを), ネットワーク構成要素" +ms.assetid: f1de5a0f-76c5-4833-819f-5222b8146340 +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# ネットワーク設定スキーマ +ネットワーク設定は、.NET Framework がインターネットに接続する方法を指定します。 [\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md) 下の各子構成要素の機能を説明する表を次に示します。 + +|要素|説明| +|--------|--------| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/authenticationmodules-element-network-settings.md)|インターネット要求を認証するために使用するモジュールを指定します。| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/connectionmanagement-element-network-settings.md)|インターネット ホストへの接続の最大数を指定します。| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings.md)|インターネットへの HTTP 要求のために使用するプロキシ サーバーを指定します。| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/mailsettings-element-network-settings.md)|メール送信オプションの設定を格納します。| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/requestcaching-element-network-settings.md)|インターネット ホストからの情報を要求するために使用するモジュールを指定します。| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/requestcaching-element-network-settings.md)| 名前空間の基本的なネットワーク オプションを構成します。| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/webrequestmodules-element-network-settings.md)|インターネット ホストからの情報を要求するために使用するモジュールを指定します。| + + Uri の設定は、.NET Framework は URI \(Uniform Resource Identifiers \(URIs\) を使用\) で表現された Web アドレスがどのように処理するかを指定します。 [\ 要素 \(Uri 設定\)](../../../../../docs/framework/configure-apps/file-schema/network/uri-element-uri-settings.md) 下の各子構成要素の機能を説明する表を次に示します。 + +|要素|説明| +|--------|--------| +|[\ 要素 \(Uri 設定\)](../../../../../docs/framework/configure-apps/file-schema/network/idn-element-uri-settings.md)|国際化ドメイン名 \(IDN: Internationalized Domain Name\) による解析をドメイン名に適用するかどうかを指定します。| +|[\ 要素 \(Uri 設定\)](../../../../../docs/framework/configure-apps/file-schema/network/iriparsing-element-uri-settings.md)|IRI \(International Resource Identifier\) 解析を に適用するかどうか、および IRI の解析規則を適用するかどうかを指定します。| +|[\ 要素 \(Uri 設定\)](../../../../../docs/framework/configure-apps/file-schema/network/schemesettings-element-uri-settings.md)| が特定のスキーマに対して解析される方法を指定します。| + +## 参照 + [構成 \(インターネット アプリケーションを\)](../../../../../docs/framework/network-programming/configuring-internet-applications.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/ipv6-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/ipv6-element-network-settings.md new file mode 100644 index 00000000000..b2440319a65 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/ipv6-element-network-settings.md @@ -0,0 +1,83 @@ +--- +title: "<ipv6> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/settings/ipv6" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#ipv6" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "ipv6 要素" +ms.assetid: 10b79aef-327b-4718-a892-e11f55e4d169 +caps.latest.revision: 19 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 19 +--- +# <ipv6> 要素 (ネットワーク設定) + クラスにある旧形式のメンバーで Internet Protocol Version 6 \(IPv6\) に対応できるようにします。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`enabled`| クラスのメンバーが Internet Protocol Version 6 \(IPv6\) のアドレスを返すかどうかを指定します。 既定値は `false` です。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[設定](../../../../../docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md)| 名前空間の基本的なネットワーク オプションを構成します。| + +## 解説 + この設定を行うと、 クラスの 、および の旧形式のメンバーで、IPv6 のサポートが有効になります。 名前空間の他のメンバーでは、オペレーティング システムで IPv6 が有効であれば、IPv6 形式のアドレスを返すことができます。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + クラスの IPv6 サポートを有効にするコード例を次に示します。 + +``` + + + + + + + +``` + +## 参照 + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/iriparsing-element-uri-settings.md b/docs/framework/configure-apps/file-schema/network/iriparsing-element-uri-settings.md new file mode 100644 index 00000000000..f87c8473e15 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/iriparsing-element-uri-settings.md @@ -0,0 +1,97 @@ +--- +title: "<iriParsing> 要素 (Uri 設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 953d0b53-445e-41f9-b302-77c4030852ce +caps.latest.revision: 9 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 9 +--- +# <iriParsing> 要素 (Uri 設定) +IRI \(International Resource Identifier\) 解析を に適用するかどうか、および IRI の解析規則を適用するかどうかを指定します。 + +## スキーマの階層 + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md) + + [\ 要素 \(Uri 設定\)](../../../../../docs/framework/configure-apps/file-schema/network/uri-element-uri-settings.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/network/iriparsing-element-uri-settings.md) + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**要素**|**説明**| +|------------|------------| +|`enabled`|IRI の解析が有効かどうかを指定します。 既定値は `false` です。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[uri](../../../../../docs/framework/configure-apps/file-schema/network/uri-element-uri-settings.md)|URI \(Uniform Resource Identifier\) で表現された Web アドレスが .NET Framework によってどのように処理されるかの設定を格納します。| + +## 解説 + .NET Framework 3.5、3.0 SP1、および 2.0 SP1 では、既存の クラスが拡張され、IRI \(International Resource Identifier\) および国際化ドメイン名 \(IDN: Internationalized Domain Name\) をサポートするようになりました。 現在のユーザーからは、明確に IRI と IDN サポートを有効にしない限り、.NET Framework 2.0 の動作からの変更点は見えません。 これにより、以前のバージョンの .NET Framework との互換性が確保されます。 + + IRI のサポートを有効にするには、次の 2 点を変更する必要があります。 + +1. .NET Framework 2.0 ディレクトリの machine.config ファイルに次の行を追加する。 + + ``` +
+ ``` + +2. IRI の解析規則を適用するかどうかを指定する。 これは machine.config ファイルまたは app.config ファイルで行うことができます。 + + IRI 解析を有効にする \(iriParsing enabled \= `true`\) と、RFC 3987 の最新の IRI 規則に従って、正規化と文字チェックが行われます。 既定値は、`false` で、RFC 2396 および RFC 3986 に従って正規化と文字チェックが行われます \(IPv6 リテラルの場合\) + +### 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 例 + +### 説明 + 次のコード例は、 クラスで IRI の解析および IDN 名をサポートするための構成を示しています。 + +### コード + +``` + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/mailsettings-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/mailsettings-element-network-settings.md new file mode 100644 index 00000000000..336bf0b0a7b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/mailsettings-element-network-settings.md @@ -0,0 +1,81 @@ +--- +title: "<mailSettings> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#mailSettings" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/mailSettings" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "mailSettings 要素" +ms.assetid: 54f0f153-17e5-4f49-afdc-deadb940c9c1 +caps.latest.revision: 20 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 20 +--- +# <mailSettings> 要素 (ネットワーク設定) +電子メールの送信オプションを設定します。 + +## 構文 + +``` + + … +/mailsettings> +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|Attribute|説明| +|---------------|--------| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/smtp-element-network-settings.md)|SMTP \(Simple Mail Transport Protocol\) オプションを設定します。| + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md)|.NET Framework がネットワークに接続する方法を指定するための設定が含まれています。| + +## 使用例 + 既定のネットワーク資格情報を使用して電子メールを送信するために、適切な SMTP パラメーターを指定するコード例を次に示します。 + +``` + + + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/module-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/module-element-network-settings.md new file mode 100644 index 00000000000..de4bf6b662f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/module-element-network-settings.md @@ -0,0 +1,85 @@ +--- +title: "<module> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#module" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/defaultProxy/module" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "module 要素" +ms.assetid: 10318725-9666-4d65-ab61-b94c64e59f13 +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# <module> 要素 (ネットワーク設定) +新しいプロキシ モジュールをアプリケーションに追加します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`type`|プロキシを実装するモジュールの名前および詳細。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[defaultProxy](../../../../../docs/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings.md)|ハイパーテキスト転送プロトコル \(HTTP: Hypertext Transfer Protocol\) プロキシ サーバーを構成します。| + +## 解説 + `module` 要素は、 インターフェイスを実装するプロキシ クラスを登録します。 プロキシ クラスを登録したら、`module` がサポートされたプロキシによって情報を要求するために使用できます。 + + `type` 属性の値には、有効なダイナミック リンク ライブラリ \(DLL: Dynamic Link Library\) の名前およびこのモジュールの名前を指定する必要があります。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + カスタム プロキシ クラスを登録するコード例を次に示します。 + +``` + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/network-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/network-element-network-settings.md new file mode 100644 index 00000000000..102e630891e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/network-element-network-settings.md @@ -0,0 +1,123 @@ +--- +title: "<network> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#network" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/mailSettings/smtp/network" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "network 要素" +ms.assetid: 2c2c6ad4-ed11-48ab-b28e-2bc0ba9b42c7 +caps.latest.revision: 13 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# <network> 要素 (ネットワーク設定) +外部 SMTP \(Simple Mail Transport Protocol\) サーバー用のネットワーク オプションを設定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`clientDomain`|SMTP メール サーバーに接続するために最初の SMTP プロトコル要求で使用するクライアント ドメイン名を指定します。 既定値は、要求を送信するローカル コンピューターの localhost 名です。| +|`defaultCredentials`|SMTP トランザクションで SMTP メール サーバーにアクセスするために既定のユーザー資格情報を使用するかどうかを指定します。 既定値は `false` です。| +|`enableSsl`|SMTP メール サーバーへのアクセスに SSL を使用するかどうかを指定します。 既定値は `false` です。| +|`host`|SMTP トランザクションに使用する SMTP メール サーバーのホスト名を指定します。 この属性には既定値はありません。| +|`password`|SMTP メール サーバーへの認証に使用するパスワードを指定します。 この属性には既定値はありません。| +|`port`|SMTP メール サーバーへの接続に使用するポート番号を指定します。 既定値は 25 です。| +|`targetName`|SMTP トランザクションで拡張保護を使用している場合に認証に使用するサービス プロバイダー名 \(SPN: Service Provider Name\) を指定します。 この属性には既定値はありません。| +|`userName`|SMTP メール サーバーへの認証に使用するユーザー名を指定します。 この属性には既定値はありません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/smtp-element-network-settings.md)|SMTP \(Simple Mail Transport Protocol\) の電子メール送信オプションを設定します。| + +## 解説 + 一部の SMTP サーバーでは、使用する前にユーザー認証を受けることが要求されます。 ホストの既定のネットワーク資格情報を使用してユーザー認証を受けるには、`defaultCredentials` 属性を `true` に設定します。 プロパティを使用して、適用可能な構成ファイルから `defaultCredentials` 属性の現在の値を取得できます。 + + 基本認証 \(ユーザー名およびパスワード\) を使用して SMTP サーバーのユーザー認証を受けることもできます。 このオプションを使用するには、指定した SMTP サーバーで有効なユーザー名およびパスワードを指定する必要があります。 + +> [!NOTE] +> 基本認証では、`userName` の値および `password` の値が暗号化されることなくサーバーに送信されます。 ネットワーク トラフィックを監視している者があれば、この資格情報を参照でき、これを使用してサーバーに接続できます。 Kerberos、NT LAN Manager \(NTLM.\) など、より安全な認証方式を使用することを検討してください。`defaultCredentials` が `true` の場合、サーバーでサポートされている場合は、Kerberos または NTLM が使用されます。 + + 基本認証オプションと既定のネットワーク資格情報オプションは相互に排他的です。`defaultCredentials` を `true` に設定し、ユーザー名およびパスワードを指定すると、既定のネットワーク資格情報が使用され、基本認証データは無視されます。 + + 基本認証で `userName` を指定する場合は、メール サーバーの認証を受けるために `password` も指定する必要があります。 + + プロパティを使用して、適用可能な構成ファイルから `userName` 属性の現在の値を取得できます。 プロパティを使用して、適用可能な構成ファイルから `password` 属性の現在の値を取得できます。 セキュリティ上の理由から、通常、`password` 属性は構成ファイルに入力されません。 + + `clientDomain` 属性は、SMTP サーバーへの最初の SMTP プロトコル要求で使用されるクライアント ドメイン名を変更します。 `clientDomain` 属性は、既定で使用される localhost 名ではなく、ローカル コンピューターの完全修飾ドメイン名に設定できます。 これにより、SMTP プロトコル標準への準拠が向上します。 既定値は、要求を送信するローカル コンピューターの localhost 名です。 プロパティを使用して、適用可能な構成ファイルから `clientDomain` 属性の現在の値を取得できます。 + + `targetName` 属性は、拡張保護を使用している場合に認証に使用します。 既定値はフォーム「SMTPSVC\/host\<\>」ホストが \ のホスト名である場所です。 プロパティを使用して、適用可能な構成ファイルから `targetName` 属性の現在の値を取得できます。 + + `enableSsl` 属性は、SMTP メール サーバーへのアクセスに SSL を使用するかどうかを指定します。 クラスでサポートされているのは、RFC 3207 で定義されている SMTP Service Extension for Secure SMTP over Transport Layer Security のみです。 このモードでは、SMTP セッションが暗号化されていないチャネルで開始されます。その後、SSL によるセキュリティで保護された通信に切り替えるために、クライアントからサーバーに対して STARTTLS コマンドが実行されます。 詳細については、インターネット技術標準化委員会 \(IETF: Internet Engineering Task Force\) から発行された RFC 3207 を参照してください。 + + 事前に SSL セッションが確立され、その後にプロトコル コマンドが送信されるという、代替接続方法もあります。 この接続方法は SMTPS とも呼ばれ、既定ではポート 465 を使用します。 SSL を使用するこの代替接続方法は、現在はサポートされていません。 + + プロパティを使用して、適用可能な構成ファイルから `enableSsl` 属性の現在の値を取得できます。 + +## 使用例 + 既定のネットワーク資格情報を使用して電子メールを送信するために、適切な SMTP パラメーターを指定するコード例を次に示します。 + +``` + + + + + + + + + +``` + +## 参照 + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/performancecounter-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/performancecounter-element-network-settings.md new file mode 100644 index 00000000000..d100474cf8a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/performancecounter-element-network-settings.md @@ -0,0 +1,87 @@ +--- +title: "<performanceCounters> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/settings/performanceCounters" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#performanceCounters" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "performanceCounter 要素" +ms.assetid: 3afa1586-e1b8-473d-8985-c3fc90cf561b +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# <performanceCounters> 要素 (ネットワーク設定) +ネットワーク パフォーマンス カウンターを有効または無効にします。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|ネットワーク パフォーマンス カウンターが有効になっているかどうかを指定します。 既定値は `false` です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[設定](../../../../../docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md)| 名前空間の基本的なネットワーク オプションを構成します。| + +## 解説 + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + + ネットワーク パフォーマンス カウンターは、使用される構成ファイルで有効になっている必要があります。 すべてのネットワーク パフォーマンス カウンターは、構成ファイル内の 1 つの設定で有効または無効にされます。 ネットワーク パフォーマンス カウンターを個別に有効または無効にすることはできません。 特定のネットワーク パフォーマンス カウンターの詳細については、「[Networking Performance Counters](http://msdn.microsoft.com/ja-jp/d1860235-f643-46ae-846c-ff0ed8b0e3cd)」を参照してください。 + + 既定では、ネットワーク パフォーマンス カウンターは無効に設定されます。 + + プロパティを使用して、適用可能な構成ファイルから **enabled** 属性の現在の値を取得できます。 + +## 使用例 + およびそれに関連する名前空間をネットワーク パフォーマンス カウンターを有効にするように構成する方法を次のコード例に示します。 + +``` + + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) + [Networking Performance Counters](http://msdn.microsoft.com/ja-jp/d1860235-f643-46ae-846c-ff0ed8b0e3cd) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/proxy-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/proxy-element-network-settings.md new file mode 100644 index 00000000000..ddb602d639a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/proxy-element-network-settings.md @@ -0,0 +1,103 @@ +--- +title: "<proxy> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/defaultProxy/proxy" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#proxy" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "proxy 要素" +ms.assetid: 37a548d8-fade-4ac5-82ec-b49b6c6cb22a +caps.latest.revision: 20 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 20 +--- +# <proxy> 要素 (ネットワーク設定) +プロキシ サーバーを定義します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`autoDetect`|プロキシを自動的に検出するかどうかを指定します。 既定値は `unspecified` です。| +|`bypassonlocal`|ローカル リソースの場合に、プロキシがバイパスされるかどうかを指定します。 ローカル リソースには、ローカル サーバー \(http:\/\/localhost、http:\/\/loopback、または http:\/\/127.0.0.1\) やピリオドのない URI \(http:\/\/webserver\) が含まれます。 既定値は `unspecified` です。| +|`proxyaddress`|使用するプロキシ URI を指定します。| +|`scriptLocation`|構成スクリプトの場所を指定します。| +|`usesystemdefault`|Internet Explorer のプロキシ設定を使用するかどうかを指定します。 `true` に設定されている場合、後続の属性は Internet Explorer のプロキシ設定をオーバーライドします。 既定値は `unspecified` です。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[defaultProxy](../../../../../docs/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings.md)|ハイパーテキスト転送プロトコル \(HTTP: Hypertext Transfer Protocol\) プロキシ サーバーを構成します。| + +## テキスト値 + +## 解説 + `proxy` 要素は、アプリケーションのプロキシ サーバーを定義します。 この要素が構成ファイルで見つからない場合、.NET Framework では、Internet Explorer のプロキシ設定が使用されます。 + + `proxyaddress` 属性の値は、整形式 URI \(Uniform Resource Indicator\) で指定する必要があります。 + + `scriptLocation` 属性は、プロキシ構成スクリプトの自動検出を意味します。 Internet Explorer で、**\[自動構成スクリプトを使用する\]** チェック ボックスがオンの場合、 クラスでは、構成スクリプト \(通常は Wpad.dat ファイル\) の検出が試みられます。 + + Version 2.0 に移行中の .NET Framework Version 1.1 アプリケーションの場合は、`usesystemdefault` 属性を使用してください。 + + `proxyaddress` 属性で無効な既定のプロキシが指定されている場合、例外がスローされます。 例外の プロパティに、このエラーの根本的な原因に関する詳細情報が含まれています。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + Internet Explorer プロキシの既定値を使用し、プロキシ アドレスを指定し、ローカル アクセスのプロキシをバイパスするコード例を次に示します。 + +``` + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/remove-element-for-authenticationmodules-network-settings.md b/docs/framework/configure-apps/file-schema/network/remove-element-for-authenticationmodules-network-settings.md new file mode 100644 index 00000000000..b165e9becb4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/remove-element-for-authenticationmodules-network-settings.md @@ -0,0 +1,86 @@ +--- +title: "authenticationModules の <remove> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/authenticationModules/remove" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#remove" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ", remove 要素" + - " 要素, authenticationModules" + - "authenticationModules, remove 要素" + - "remove 要素, authenticationModules" +ms.assetid: abf79949-b05c-465a-b51c-bbeda9a74173 +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# authenticationModules の <remove> 要素 (ネットワーク設定) +認証モジュールをアプリケーションから削除します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|**name**|削除する認証モジュールの名前。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[authenticationModules](../../../../../docs/framework/configure-apps/file-schema/network/authenticationmodules-element-network-settings.md)|ネットワーク要求を認証するために使用するモジュールを指定します。| + +## 解説 + `remove` 要素は、構成ファイルまたは構成階層の上位レベルで既に定義されている認証モジュールを削除します。 + + `name` 属性の値は、有効なクラス名である必要があります。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 認証モジュールを削除するコード例を次に示します。 + +``` + + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/remove-element-for-bypasslist-network-settings.md b/docs/framework/configure-apps/file-schema/network/remove-element-for-bypasslist-network-settings.md new file mode 100644 index 00000000000..9e1058b52a8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/remove-element-for-bypasslist-network-settings.md @@ -0,0 +1,90 @@ +--- +title: "bypasslist の <remove> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/defaultProxy/bypasslist/remove" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#remove" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ", remove 要素" + - "bypasslist, remove 要素" + - "remove 要素, bypasslist" + - "remove 要素, bypasslist" +ms.assetid: 61dcfb4a-e3d9-4abf-a2cd-7d685fe2f64b +caps.latest.revision: 16 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 16 +--- +# bypasslist の <remove> 要素 (ネットワーク設定) +IP アドレスまたは DNS 名をプロキシ バイパス リストから削除します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`name`|IP アドレスまたは DNS 名を記述する正規表現。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[bypasslist](../../../../../docs/framework/configure-apps/file-schema/network/bypasslist-element-network-settings.md)|プロキシを使用しないアドレスを記述する一連の正規表現を提供します。| + +## 解説 + `remove` 要素は、IP アドレスまたは DNS サーバー名を記述する正規表現を、プロキシ サーバーをバイパスするアドレスのリストから削除します。 アドレスは構成ファイルまたは構成階層の上位レベルで既に定義されています。 + + `name` 属性の値は、一組の IP アドレスまたはホスト名を記述する正規表現である必要があります。 + + 正規表現の詳細については、「[.NET Framework の正規表現](../../../../../docs/standard/base-types/regular-expressions.md)」を参照してください。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + adventure\-works.com ドメインで既に定義されているすべてのエントリを削除し、contoso.com ドメインをバイパス リストに追加するコード例を次に示します。 + +``` + + + + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/remove-element-for-connectionmanagement-network-settings.md b/docs/framework/configure-apps/file-schema/network/remove-element-for-connectionmanagement-network-settings.md new file mode 100644 index 00000000000..85b2a3c19ca --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/remove-element-for-connectionmanagement-network-settings.md @@ -0,0 +1,88 @@ +--- +title: "connectionManagement の <remove> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/connectionManagement/remove" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#remove" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ", remove 要素" + - " 要素, connectionManagement" + - "connectionManagement, remove 要素" + - "remove 要素, connectionManagement" +ms.assetid: 94b81775-5a22-4975-8c47-8620c40c3f35 +caps.latest.revision: 12 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 12 +--- +# connectionManagement の <remove> 要素 (ネットワーク設定) +IP アドレスまたは DNS 名を接続管理リストから削除します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`address`|IP アドレスまたは DNS 名。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[connectionManagement](../../../../../docs/framework/configure-apps/file-schema/network/connectionmanagement-element-network-settings.md)|ネットワーク ホストへの接続の最大数を指定します。| + +## 解説 + `remove` 要素は、指定されたサーバーの接続管理リスト エントリを削除します。 + + `address` 属性の値は、有効な IP アドレスまたはホスト名である必要があります。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + サーバー www.adventure\-works.com のすべての接続管理リスト エントリを削除し、アプリケーションの構成でサーバー www.contoso.com への接続数を 4、それ以外のすべてのサーバーへの接続数を 2 に指定するコード例を次に示します。 + +``` + + + + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/remove-element-for-schemesettings-uri-settings.md b/docs/framework/configure-apps/file-schema/network/remove-element-for-schemesettings-uri-settings.md new file mode 100644 index 00000000000..6cf51c6f70a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/remove-element-for-schemesettings-uri-settings.md @@ -0,0 +1,92 @@ +--- +title: "schemeSettings の <remove> 要素 (Uri 設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 4095ba51-de20-4f87-b562-018abe422c91 +caps.latest.revision: 5 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 5 +--- +# schemeSettings の <remove> 要素 (Uri 設定) +スキーム名に対するスキーム設定を削除します。 + +## 構文 + +``` + + +/> +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|name|この設定を適用するスキーム名。 サポートされている値は、name\="http" と name\="https" だけです。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素 \(Uri 設定\)](../../../../../docs/framework/configure-apps/file-schema/network/schemesettings-element-uri-settings.md)| が特定のスキーマに対して解析される方法を指定します。| + +## 解説 + 既定では、 クラスは、パスの圧縮を実行する前に、パーセント記号をエンコードしたパス区切り記号のエスケープを解除します。 これは、次のような攻撃に対するセキュリティ機構として実装されました。 + + `http://www.contoso.com/..%2F..%2F/Windows/System32/cmd.exe?/c+dir+c:\` + + パーセント記号をエンコードした文字を正しく処理できないモジュールにこの URI が渡されると、次のコマンドがサーバーによって実行されます。 + + `c:\Windows\System32\cmd.exe /c dir c:\` + + このため、 クラスでは、パス区切り記号のエスケープを解除してから、パスの圧縮を適用します。 上のような悪意のある URL を クラス コンストラクターに渡した場合、次の URI になります。 + + `http://www.microsoft.com/Windows/System32/cmd.exe?/c+dir+c:\` + + この既定の動作は、特定のスキームの schemeSettings 構成オプションを使用して、パーセント記号をエンコードしたパス区切り記号のエスケープを解除しないように変更できます。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + http スキームのスキーム設定をすべて削除する、 クラスで使用する構成を次のコード例に示します。 + +``` + + + + + + + +``` + +## 参照 + + + + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/remove-element-for-webrequestmodules-network-settings.md b/docs/framework/configure-apps/file-schema/network/remove-element-for-webrequestmodules-network-settings.md new file mode 100644 index 00000000000..50c75672fea --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/remove-element-for-webrequestmodules-network-settings.md @@ -0,0 +1,89 @@ +--- +title: "webRequestModules の <remove> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/webRequestModules/remove" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#remove" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素, webRequestModules" + - ", remove 要素" + - "remove 要素, webRequestModules" + - "webRequestModules, remove 要素" +ms.assetid: dd84d2fe-2f4f-457a-9d3c-441d0d21cc10 +caps.latest.revision: 13 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# webRequestModules の <remove> 要素 (ネットワーク設定) +カスタム Web 要求モジュールをアプリケーションから削除します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`name`|この Web 要求モジュールで処理される要求の URI プレフィックス。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[webRequestModules](../../../../../docs/framework/configure-apps/file-schema/network/webrequestmodules-element-network-settings.md)|ネットワーク ホストからの情報を要求するために使用するモジュールを指定します。| + +## 解説 + `remove` 要素では、指定された URI プレフィックスに対する登録済み Web 要求モジュールを削除します。 + + `prefix` 属性の値は、"http" や "http:\/\/www.contoso.com" のように、有効な URI の先行文字である必要があります。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + HTTP 用の既存の Web 要求モジュールを削除し、www.contoso.com に対する HTTP 要求用の新規カスタム Web 要求モジュールを登録するコード例を次に示します。 + +``` + + + + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/requestcaching-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/requestcaching-element-network-settings.md new file mode 100644 index 00000000000..1e120c40f03 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/requestcaching-element-network-settings.md @@ -0,0 +1,100 @@ +--- +title: "<requestCaching> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#requestCaching" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/requestCaching" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "requestCaching 要素" +ms.assetid: 9962a2fe-cbda-41a6-9377-571811eaea84 +caps.latest.revision: 20 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 20 +--- +# <requestCaching> 要素 (ネットワーク設定) +ネットワーク要求のキャッシュ機構を制御します。 + +## 構文 + +``` + + … + +/> +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`isPrivateCache`|キャッシュが、異なるユーザーの情報間で分離を提供するかどうかを指定します。 既定値は `true` です。 この値は、中間層アプリケーションの場合は `false` です。| +|`disableAllCaching`|キャッシュがすべての Web 応答に対して無効になっているため、プログラムでオーバーライドできないことを指定します。| +|`defaultPolicyLevel`| 列挙値のいずれか。 既定値は `BypassCache` です。| +|`unspecifiedMaximumAge`|コンテンツを期限切れであるとマークするまでの、既定の時間を指定します。| + +## policyLevel 属性 + +|値|説明| +|-------|--------| +|`Default`|キャッシュされているリソースが最新であり、content length が正しく、expiration 属性、modification 属性、および content length 属性が指定されている場合、キャッシュされているリソースを返します。| +|`BypassCache`|サーバーからリソースを返します。| +|`CacheOnly`|content length が指定されており、エントリのサイズに一致する場合、キャッシュされているリソースを返します。| +|`CacheIfAvailable`|content length が指定されており、エントリのサイズに一致する場合には、キャッシュされているリソースを返します。その他の場合には、対象のリソースをサーバーからダウンロードした上で、呼び出し元に返します。| +|`Revalidate`|キャッシュされているリソースのタイムスタンプが、サーバー上のリソースのタイムスタンプと等しい場合には、キャッシュされているリソースを返します。その他の場合には、対象のリソースをサーバーからダウンロードし、キャッシュに格納した上で、呼び出し元に戻します。| +|`Reload`|対象のリソースをサーバーからダウンロードし、キャッシュに格納した上で、呼び出し元に返します。| +|`NoCacheNoStore`|キャッシュされたリソースが存在する場合は削除されます。 サーバーからリソースをダウンロードし、呼び出し元に返します。| +|`Revalidate`|キャッシュされているリソースのタイムスタンプが、サーバー上のリソースのタイムスタンプと一致する場合には、キャッシュされているリソースのコピーを返して、要求を満たします。その他の場合には、対象のリソースをサーバーからダウンロードして呼び出し元に返し、キャッシュに格納します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[defaultHttpCachePolicy](../../../../../docs/framework/configure-apps/file-schema/network/defaulthttpcachepolicy-element-network-settings.md)|省略可能な要素です。

HTTP キャッシュがアクティブであるかどうかを指定し、既定のキャッシュ ポリシーを記述します。| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/defaultftpcachepolicy-element-network-settings.md)|省略可能な要素です。

FTP キャッシュがアクティブであるかどうかを指定し、既定のキャッシュ ポリシーを記述します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[system.net](../../../../../docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md)|.NET Framework がネットワークに接続する方法を指定するための設定が含まれています。| + +## 使用例 + すべてのキャッシュを無効にする方法を次のコード例に示します。 + +``` + + + + + +``` + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/schemesettings-element-uri-settings.md b/docs/framework/configure-apps/file-schema/network/schemesettings-element-uri-settings.md new file mode 100644 index 00000000000..94ebb0433c4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/schemesettings-element-uri-settings.md @@ -0,0 +1,102 @@ +--- +title: "<schemeSettings> 要素 (Uri 設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 0ae45c6e-8c4c-4c0d-8b9f-a93824648890 +caps.latest.revision: 6 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 6 +--- +# <schemeSettings> 要素 (Uri 設定) + が特定のスキーマに対して解析される方法を指定します。 + +## 構文 + +``` + +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|**要素**|**説明**| +|------------|------------| +|[add](../../../../../docs/framework/configure-apps/file-schema/network/add-element-for-schemesettings-uri-settings.md)|スキーム名に対するスキーム設定を追加します。| +|[clear](../../../../../docs/framework/configure-apps/file-schema/network/clear-element-for-schemesettings-uri-settings.md)|既存のスキーム設定をすべて消去します。| +|[remove](../../../../../docs/framework/configure-apps/file-schema/network/remove-element-for-schemesettings-uri-settings.md)|スキーム名に対するスキーム設定を削除します。| + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[uri](../../../../../docs/framework/configure-apps/file-schema/network/uri-element-uri-settings.md)|URI \(Uniform Resource Identifier\) で表現された Web アドレスが .NET Framework によってどのように処理されるかの設定を格納します。| + +## 解説 + 既定では、 クラスは、パスの圧縮を実行する前に、パーセント記号をエンコードしたパス区切り記号のエスケープを解除します。 これは、次のような攻撃に対するセキュリティ機構として実装されました。 + + `http://www.contoso.com/..%2F..%2F/Windows/System32/cmd.exe?/c+dir+c:\` + + パーセント記号をエンコードした文字を正しく処理できないモジュールにこの URI が渡されると、次のコマンドがサーバーによって実行されます。 + + `c:\Windows\System32\cmd.exe /c dir c:\` + + このため、 クラスでは、パス区切り記号のエスケープを解除してから、パスの圧縮を適用します。 上のような悪意のある URL を クラス コンストラクターに渡した場合、次の URI になります。 + + `http://www.microsoft.com/Windows/System32/cmd.exe?/c+dir+c:\` + + この既定の動作は、特定のスキームの schemeSettings 構成オプションを使用して、パーセント記号をエンコードしたパス区切り記号のエスケープを解除しないように変更できます。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + http スキームのパーセント記号をエンコードしたパス区切り記号をエスケープしないようにするために、 クラスで使用する構成を次のコード例に示します。 + +``` + + + + + + + +``` + +## 要素情報 + +||| +|-|-| +|名前空間|システム| +|スキーマ名|| +|検証ファイル|| +|空も使用できる|| + +## 参照 + + + + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/servicepointmanager-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/servicepointmanager-element-network-settings.md new file mode 100644 index 00000000000..ab3dfa9de10 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/servicepointmanager-element-network-settings.md @@ -0,0 +1,80 @@ +--- +title: "<servicePointManager> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#servicePointManager" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/settings/servicePointManager" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "servicePointManager 要素" +ms.assetid: 6e5def51-3646-4ef6-a7bd-c69151321bec +caps.latest.revision: 16 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 16 +--- +# <servicePointManager> 要素 (ネットワーク設定) +ネットワーク リソースへの接続を設定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`checkCertificateName`|証明書を使用する前に、システムで証明書の名前がサーバー ホスト名に一致することを確認する必要があるかどうかを指定します。 既定値は `true` です。| +|`checkCertificateRevocationList`|証明書を使用する前に、システムで証明書が取り消されていることをチェックする必要があるかどうかを指定します。 既定値は `false` です。| +|`dnsRefreshTimeout`|ドメイン ネーム サービス \(DNS\) 解決が DNS ラウンド ロビン オプションと共にキャッシュされる期間をミリ秒で指定します。 既定値は 120,000 ミリ秒 \(2 分\) です。| +|`enableDnsRoundRobin`|複数のインターネット プロトコル \(IP: Internet Protocol\) アドレスを持つホスト名の DNS 解決がすべてのアドレスを返すか、最初のアドレスだけを返すかを指定します。 既定値は `false` です。| +|`encryptionPolicy`| インスタンスの SSL\/TLS セッションに適用する暗号化ポリシーを指定します。 有効値は、 列挙型の値と同じです。 暗号化ポリシーが `NoEncryption` に設定されている場合は、 を使用する必要があります。 既定値は `RequireEncryption` です。| +|`expect100Continue`|POST メソッドがサーバーから `100-continue` 応答を受け取ることを想定する必要があるかどうかを指定します。 既定値は `true` です。| +|`useNagleAlgorithm`|サービス ポイント マネージャーによって制御される接続が、Nagle アルゴリズムを使用するかどうかを指定します。 既定値は `true` です。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[設定](../../../../../docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md)| 名前空間の基本的なネットワーク オプションを構成します。| + +## 解説 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md new file mode 100644 index 00000000000..d7dbd6df5c9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md @@ -0,0 +1,79 @@ +--- +title: "<settings> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#settings" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/settings" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "settings 要素" +ms.assetid: 189ce989-c39b-427d-b004-6b82a668b931 +caps.latest.revision: 21 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 21 +--- +# <settings> 要素 (ネットワーク設定) + 名前空間の基本的なネットワーク オプションを構成します。 + +## 構文 + +``` + + +.. +.. +.. +.. + +.. +.. + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[httpListener](../../../../../docs/framework/configure-apps/file-schema/network/httplistener-element-network-settings.md)| クラスで使用されるパラメーターをカスタマイズします。| +|[httpWebRequest](../../../../../docs/framework/configure-apps/file-schema/network/httpwebrequest-element-network-settings.md)|Web 要求パラメーターをカスタマイズします。| +|[ipv6](../../../../../docs/framework/configure-apps/file-schema/network/ipv6-element-network-settings.md)|IPv6 \(Internet Protocol Version 6\) のサポートを有効にします。| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/performancecounter-element-network-settings.md)|ネットワーク パフォーマンス カウンターを有効にします。| +|[servicePointManager](../../../../../docs/framework/configure-apps/file-schema/network/servicepointmanager-element-network-settings.md)|ネットワーク リソースへの接続を設定します。| +|[ソケット](../../../../../docs/framework/configure-apps/file-schema/network/socket-element-network-settings.md)|ソケット処理で完了ポートを使用するかどうかを指定します。| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/webproxyscript-element-network-settings.md)|Web プロキシを検出するために使用するスクリプトの特性を設定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[system.net](../../../../../docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md)|.NET Framework がネットワークに接続する方法を指定するための設定が含まれています。| + +## 解説 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 参照 + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/smtp-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/smtp-element-network-settings.md new file mode 100644 index 00000000000..fb6fc859f6d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/smtp-element-network-settings.md @@ -0,0 +1,94 @@ +--- +title: "<smtp> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/mailSettings/smtp" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#smtp" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "smtp 要素" +ms.assetid: 220b0329-e384-4e0c-86b4-0945ad17efd9 +caps.latest.revision: 13 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# <smtp> 要素 (ネットワーク設定) +電子メール送信の配信形式、配信方法、および差出人アドレスを設定します。 + +## 構文 + +``` + + + +/smtp> +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`deliveryFormat`|送信する電子メールの配信形式を指定します。 指定できる値は SevenBit および International です。| +|`deliveryMethod`|電子メールの配信方法を指定します。 指定できる値は、network、pickupDirectoryFromIis、および specifiedPickupDirectory です。| +|`from`|送信する電子メールの差出人アドレスを指定します。| + +### 子要素 + +|Attribute|説明| +|---------------|--------| +|`specifiedPickupDirectory`|SMTP \(Simple Mail Transport Protocol\) サーバー用のローカル ディレクトリを設定します。| +|`network`|外部 SMTP サーバー用のネットワーク オプションを設定します。| + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/mailsettings-element-network-settings.md)|電子メールの送信オプションを設定します。| + +## 使用例 + 既定のネットワーク資格情報を使用して電子メールを送信するために、適切な SMTP パラメーターを指定するコード例を次に示します。 + +``` + + + + + + + + + +``` + +## 参照 + + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/socket-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/socket-element-network-settings.md new file mode 100644 index 00000000000..25ddf7988ba --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/socket-element-network-settings.md @@ -0,0 +1,121 @@ +--- +title: "<socket> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/settings/socket" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#socket" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "socket 要素" +ms.assetid: 366c634c-7d16-478f-aedf-053eda94a1a0 +caps.latest.revision: 21 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 21 +--- +# <socket> 要素 (ネットワーク設定) +ソケット処理で完了ポートを使用するかどうかを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|**Attribute**|**説明**| +|-------------------|------------| +|`alwaysUseCompletionPortsForAccept`|Accept メソッドの呼び出しを行う場合、ソケットで常に完了ポートを使用するかどうかを示します。 既定値は `false` です。| +|`alwaysUseCompletionPortsForConnect`|Connect メソッドの呼び出しを行う場合、ソケットで常に完了ポートを使用するかどうかを示します。 既定値は `false` です。| +|`ipProtectionLevel`|ソケットに使用する既定の を指定します。 既定値は、Windows のバージョンによって異なります。| + +### 子要素 + なし。 + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[設定](../../../../../docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md)| 名前空間の基本的なネットワーク オプションを構成します。| + +## 解説 + クラスによって `alwaysUseCompletionPortsForAccept` と `alwaysUseCompletionPortsForConnect` 属性が .namespace で完了ポートの使用に関する既定の動作を指定するために使用されます。 完了ポートは、高性能なサーバー アプリケーションに推奨されます。 + + `alwaysUseCompletionPortsForAccept` 属性および `alwaysUseCompletionPortsForConnect` 属性の既定値は **false** です。 + + を使用して、適用可能な構成ファイルから `alwaysUseCompletionPortsForAccept` 属性の現在の値を取得できます。 を使用して、適用可能な構成ファイルから `alwaysUseCompletionPortsForConnect` 属性の現在の値を取得できます。 + + `ipProtectionLevel` 属性は、ソケットに使用する既定の を指定します。 プロパティを使用すると、IPv6 ソケットの制限を指定したスコープ \(同じリンク ローカルまたはサイト ローカル プレフィックスを持つアドレスなど\) に構成できます。 このオプションによって、アプリケーションは IPv6 ソケットにアクセス制限を設定できます。 この制限により、プライベート LAN で実行されるアプリケーションを外部からの攻撃に対して簡単、堅牢に強化できます。 このオプションで待機中のソケットのスコープを変更して、適切な場合はパブリック ユーザーおよびプライベート ユーザーからの無制限のアクセスを許可したり、必要に応じて同じサイトへのアクセスのみに制限したりできます。 + + この `ipProtectionLevel` 属性設定は、最初の受信トラフィックにだけ影響します。 + +- ソケットで受信接続を待機する TCP サーバー。 + +- ソケットでパケットを受信する UDP アプリケーション。 + + この構成設定は、既に確立されている TCP 接続には影響しません \(トラフィックはいずれの方向でも制限されません\)。また、アプリケーションが送信する UDP パケットにも影響しません。 + + 列挙体で定義されている保護レベルに対応する `ipProtectionLevel` 属性設定には、次の値を指定できます。 + +||| +|-|-| +|**属性値**|**説明**| +|EdgeRestricted|IP 保護レベルはエッジ制限付きです。 この値は、インターネット経由で動作するように設計されているアプリケーションによって使用されます。 この設定を使用する場合、Windows Teredo 実装を使用したネットワーク アドレス変換 \(NAT: Network Address Translation\) トラバーサルは使用できません。 これらのアプリケーションは、IPv4 のファイアウォールをバイパスすることがあるため、開いているポートを対象としたインターネットからの攻撃に対して堅牢である必要があります。 Windows Server 2003 と Windows XP では、ソケットの IP 保護レベルの既定値はエッジ制限付きです。| +|Restricted|IP 保護レベルは制限付きです。 この値は、インターネットのシナリオを実装しないイントラネット アプリケーションによって使用されます。 これらのアプリケーションは、一般的に、インターネット型の攻撃に対してテストが行われていなかったり堅牢ではなかったりします。 この設定を使用する場合、受信トラフィックはリンクローカルのみに制限されます。| +|制限なし|IP 保護レベルは無制限です。 この値は、Windows に組み込まれている IPv6 NAT Traversal 機能 \(たとえば、Teredo\) を使用するアプリケーションを含む、インターネット経由で動作するように設計されているアプリケーションによって使用されます。 これらのアプリケーションは、IPv4 のファイアウォールをバイパスすることがあるため、開いているポートを対象としたインターネットからの攻撃に対して堅牢である必要があります。 Windows Server 2008 R2 と Windows Vista では、ソケットの IP 保護レベルの既定値は無制限です。| +|Unspecified|IP 保護レベルは未指定です。 Windows 7 と Windows Server 2008 R2 では、ソケットの IP 保護レベルの既定値は未指定です。| + + `ipProtectionLevel` 属性の既定値は **Unspecified** です。 + + プロパティを使用して、適用可能な構成ファイルから `ipProtectionLevel` 属性の現在の値を取得できます。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 完了ポートが使用される必要があることと、既定の が Unrestricted である必要があることを指定する方法を、次のコード例に示します。 + +``` + + + + + + + +``` + +## 参照 + + + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/specifiedpickupdirectory-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/specifiedpickupdirectory-element-network-settings.md new file mode 100644 index 00000000000..77f92b7276c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/specifiedpickupdirectory-element-network-settings.md @@ -0,0 +1,84 @@ +--- +title: "<specifiedPickupDirectory> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#specifiedPickupDirectory" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/mailSettings/smtp/specifiedPickupDirectory" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "specifiedPickupDirectory 要素" +ms.assetid: 0121f49d-bff2-4bc6-af06-f1628dcd61f1 +caps.latest.revision: 8 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 8 +--- +# <specifiedPickupDirectory> 要素 (ネットワーク設定) +SMTP \(Simple Mail Transport Protocol\) サーバー用のローカル ディレクトリを設定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`pickupDirectoryLocation`|後で SMTP サーバーで処理するために、各アプリケーションが電子メールを保存するためのディレクトリです。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/smtp-element-network-settings.md)|SMTP \(Simple Mail Transport Protocol\) の電子メール送信オプションを設定します。| + +## 解説 + アプリケーションは SMTP サーバーが処理するメール メッセージを格納する場所 `specifiedPickupDirectory` 属性設定ディレクトリ。 + +## 使用例 + 電子メールを収集するディレクトリとして、c:\\maildrop を指定するコード例を次に示します。 + +``` + + + + + + + + + +``` + +## 参照 + + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md new file mode 100644 index 00000000000..a6a41bfd2fc --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md @@ -0,0 +1,106 @@ +--- +title: "<system.Net> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#system.Net" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.Net" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "system.Net 要素" +ms.assetid: 52de4d6c-b24d-44aa-ba7d-6b5061f1357e +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# <system.Net> 要素 (ネットワーク設定) +.NET Framework がネットワークに接続する方法を指定するための設定が含まれています。 + +## 構文 + +``` + +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|**要素**|**説明**| +|------------|------------| +|[authenticationModules](../../../../../docs/framework/configure-apps/file-schema/network/authenticationmodules-element-network-settings.md)|インターネット要求を認証するために使用するモジュールを指定します。| +|[connectionManagement](../../../../../docs/framework/configure-apps/file-schema/network/connectionmanagement-element-network-settings.md)|インターネット ホストへの接続の最大数を指定します。| +|[defaultProxy](../../../../../docs/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings.md)|ハイパーテキスト転送プロトコル \(HTTP: Hypertext Transfer Protocol\) プロキシ サーバーを構成します。| +|[mailSettings](../../../../../docs/framework/configure-apps/file-schema/network/mailsettings-element-network-settings.md)|SMTP \(Simple Mail Transport Protocol\) の電子メール送信オプションを設定します。| +|[requestCaching](../../../../../docs/framework/configure-apps/file-schema/network/requestcaching-element-network-settings.md)|ネットワーク要求のキャッシュ機構を制御します。| +|[設定](../../../../../docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md)| 名前空間および関連する子名前空間内のクラスの基本的なネットワーク オプションを構成します。| +|[\ 要素 \(ネットワーク設定\)](../../../../../docs/framework/configure-apps/file-schema/network/webrequestmodules-element-network-settings.md)|インターネット ホストからの情報を要求するために使用するモジュールを指定します。| + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[適用](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md)|すべての名前空間の設定が含まれています。| + +## 解説 + [\](../../../../../docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md) 要素は および関連する子名前空間内のクラスの設定が含まれます。 この設定により、認証モジュール、接続管理、メール設定、プロキシ サーバー、およびインターネット ホストから情報を受け取るためのインターネット要求モジュールが構成されます。 + +## 使用例 + クラスで使用される一般的な構成を次のコード例に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/uri-element-uri-settings.md b/docs/framework/configure-apps/file-schema/network/uri-element-uri-settings.md new file mode 100644 index 00000000000..a7875bfcd55 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/uri-element-uri-settings.md @@ -0,0 +1,83 @@ +--- +title: "<Uri> 要素 (Uri 設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: c22bab8b-477c-4ae4-8498-65ad409e0847 +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# <Uri> 要素 (Uri 設定) +URI \(Uniform Resource Identifier\) で表現された Web アドレスが .NET Framework によってどのように処理されるかの設定を格納します。 + +## スキーマの階層 + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/network/uri-element-uri-settings.md) + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|**要素**|**説明**| +|------------|------------| +|[idn](../../../../../docs/framework/configure-apps/file-schema/network/idn-element-uri-settings.md)|国際化ドメイン名 \(IDN: Internationalized Domain Name\) による解析をドメイン名に適用するかどうかを指定します。| +|[iriParsing](../../../../../docs/framework/configure-apps/file-schema/network/iriparsing-element-uri-settings.md)|IRI \(International Resource Identifier\) 解析を に適用するかどうか、および IRI の解析規則を適用するかどうかを指定します。| +|[schemeSettings](../../../../../docs/framework/configure-apps/file-schema/network/schemesettings-element-uri-settings.md)| が特定のスキーマに対して解析される方法を指定します。| + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[適用](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md)|すべての名前空間の設定が含まれています。| + +## 解説 + `uri` 要素には、 名前空間のクラスによって使用される クラスのメンバーの設定が格納されます。 これらの設定によって、IRI および IDN のサポートが構成されます。 + +## 例 + +### 説明 + 次のコード例は、 クラスで IRI の解析および IDN 名をサポートするための構成を示しています。 また、この例では、すべてのスキーム設定を消去してから、http スキームのパーセント記号をエンコードしたパス区切り記号をエスケープしないように設定します。 + +### コード + +``` + + + + + + + + + + +``` + +## 参照 + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/webproxyscript-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/webproxyscript-element-network-settings.md new file mode 100644 index 00000000000..064e664283b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/webproxyscript-element-network-settings.md @@ -0,0 +1,66 @@ +--- +title: "<webProxyScript> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#webProxyScript" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/settings/webProxyScript" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "webProxyScript 要素" +ms.assetid: a13c26db-6218-4af3-9696-38f24b23bfac +caps.latest.revision: 9 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 9 +--- +# <webProxyScript> 要素 (ネットワーク設定) +Web プロキシを検出するために使用するスクリプトの特性を設定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`downloadTimeout`|スクリプトをダウンロードする最大時間を時、分、および秒で指定します。 既定値は、1 分です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[設定](../../../../../docs/framework/configure-apps/file-schema/network/settings-element-network-settings.md)| 名前空間の基本的なネットワーク オプションを構成します。| + +## 解説 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 参照 + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/network/webrequestmodules-element-network-settings.md b/docs/framework/configure-apps/file-schema/network/webrequestmodules-element-network-settings.md new file mode 100644 index 00000000000..ef1fc4775ec --- /dev/null +++ b/docs/framework/configure-apps/file-schema/network/webrequestmodules-element-network-settings.md @@ -0,0 +1,88 @@ +--- +title: "<webRequestModules> 要素 (ネットワーク設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.net/webRequestModules" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#webRequestModules" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "webRequestModules 要素" +ms.assetid: 1263de11-3e0a-4f94-97c9-710b2ae53817 +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# <webRequestModules> 要素 (ネットワーク設定) +ネットワーク ホストからの情報を要求するために使用するモジュールを指定します。 + +## 構文 + +``` + +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|**要素**|**説明**| +|------------|------------| +|[add](../../../../../docs/framework/configure-apps/file-schema/network/add-element-for-webrequestmodules-network-settings.md)|カスタム Web 要求モジュールをアプリケーションに追加します。| +|[clear](../../../../../docs/framework/configure-apps/file-schema/network/clear-element-for-webrequestmodules-network-settings.md)|登録されているすべての Web 要求モジュールをアプリケーションから削除します。| +|[remove](../../../../../docs/framework/configure-apps/file-schema/network/remove-element-for-webrequestmodules-network-settings.md)|カスタム Web 要求モジュールをアプリケーションから削除します。| + +### 親要素 + +|**要素**|**説明**| +|------------|------------| +|[system.net](../../../../../docs/framework/configure-apps/file-schema/network/system-net-element-network-settings.md)|.NET Framework がネットワークに接続する方法を指定するための設定が含まれています。| + +## 解説 + `webRequestModules` 要素はネットワーク ホストへの情報要求を処理するために クラスの子孫を登録します。 Web 要求モジュールは、 インターフェイスを実装する必要があります。 + + .NET Framework には、http:\/\/、https:\/\/、および file:\/\/ で始まる URI 用に、Web 要求モジュールが用意されています。 構成ファイルにカスタム モジュールを登録するだけで、既定のモジュールをオーバーライドできます。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルまたはマシン構成ファイル \(Machine.config\) で使用できます。 + +## 使用例 + 既定の HTTP モジュールを登録するコード例を次に示します。 Version の値および PublicKeyToken の値は、指定したモジュールに対応する正しい値に置き換える必要があります。 + +``` + + + + + + + +``` + +## 参照 + + + [ネットワーク設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/network/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/TOC.md b/docs/framework/configure-apps/file-schema/runtime/TOC.md new file mode 100644 index 00000000000..3cc837594ea --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/TOC.md @@ -0,0 +1,49 @@ +# [ランタイム設定スキーマ](index.md) +# [ 要素](alwaysflowimpersonationpolicy-element.md) +# [ 要素](clear-element-for-namedcaches.md) +# [ 要素](legacycorruptedstateexceptionspolicy-element.md) +# [ 要素](codebase-element.md) +# [ 要素](thread-useallcpugroups-element.md) +# [ 要素](throwunobservedtaskexceptions-element.md) +# [ 要素](assemblyidentity-element-for-runtime.md) +# [ 要素](add-element-for-namedcaches.md) +# [ 要素](appdomainmanagerassembly-element.md) +# [ 要素](enforcefipspolicy-element.md) +# [ 要素](gccpugroup-element.md) +# [ 要素](userandomizedstringhashalgorithm-element.md) +# [ 要素](disablecachingbindingfailures-element.md) +# [ 要素](appdomainmanagertype-element.md) +# [ 要素](qualifyassembly-element.md) +# [ 要素](prefercominsteadofmanagedremoting-element.md) +# [ 要素 (キャッシュ設定)](system-runtime-caching-element-cache-settings.md) +# [ 要素](assemblybinding-element-for-runtime.md) +# [ 要素](forceperformancecounteruniquesharedmemoryreads-element.md) +# [ 要素](gcserver-element.md) +# [ 要素](timespan-legacyformatmode-element.md) +# [ 要素](relativebindforresources-element.md) +# [ 要素](generatepublisherevidence-element.md) +# [ 要素](compatsortnlsversion-element.md) +# [ 要素](bypasstrustedappstrongnames-element.md) +# [ 要素](legacyimpersonationpolicy-element.md) +# [ 要素 (キャッシュ設定)](namedcaches-element-cache-settings.md) +# [ 要素](bindingredirect-element.md) +# [ 要素](supportportability-element.md) +# [ 要素](developmentmode-element.md) +# [ 要素](gcallowverylargeobjects-element.md) +# [ 要素](disablefusionupdatesfromadmanager-element.md) +# [ 要素](gcconcurrent-element.md) +# [ 要素](publisherpolicy-element.md) +# [ 要素](netfx45-cultureawarecomparergethashcode-longstrings-element.md) +# [ 要素](netfx40-pinvokestackresilience-element.md) +# [ 要素](disablecommitthreadstack-element.md) +# [ 要素](shadowcopyverifybytimestamp-element.md) +# [ 要素](etwenable-element.md) +# [ 要素](remove-element-for-namedcaches.md) +# [ 要素](runtime-element.md) +# [ 要素](usesmallinternalthreadstacks-element.md) +# [ 要素 (キャッシュ設定)](memorycache-element-cache-settings.md) +# [ 要素](dependentassembly-element.md) +# [ 要素](probing-element.md) +# [ 要素](netfx40-legacysecuritypolicy-element.md) +# [ 要素](appdomainresourcemonitoring-element.md) +# [](loadfromremotesources-element.md) diff --git a/docs/framework/configure-apps/file-schema/runtime/add-element-for-namedcaches.md b/docs/framework/configure-apps/file-schema/runtime/add-element-for-namedcaches.md new file mode 100644 index 00000000000..cc9b1fd146c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/add-element-for-namedcaches.md @@ -0,0 +1,88 @@ +--- +title: "<namedCaches> の <add> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の add 要素" +ms.assetid: ce2a63a8-c829-4742-a6ea-72ee5d89f169 +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# <namedCaches> の <add> 要素 +メモリ キャッシュの `namedCaches` コレクションに `namedCache` エントリを追加します。 + +## 構文 + +``` + + + + +``` + +## 型 + `None` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +||| +|-|-| +|Attribute|説明| +|`CacheMemoryLimitMegabytes`| のインスタンスについて許可される最大サイズ \(MB 単位\) を指定する整数値。 既定値は 0 です。これは、 クラスの自動サイズ変更ヒューリスティックが既定で使用されることを意味します。| +|`Name`|キャッシュの名前。| +|`PhysicalMemoryLimitPercentage`|キャッシュで使用できる物理的にインストールされたコンピューター メモリの最大パーセンテージを指定する 0 ~ 100 の整数値。 既定値は 0 です。これは、 クラスの自動サイズ変更ヒューリスティックが既定で使用されることを意味します。| +|`PollingInterval`|キャッシュの実装が、現在のメモリ負荷を、キャッシュ インスタンスに設定されているメモリ制限の絶対値および割合と比較する時間間隔を示す値。 この値は "HH:MM:SS" の形式で入力されます。| + +### 子要素 + `None` + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md)|名前付き インスタンスの構成設定のコレクションが含まれます。| + +## 解説 + `add` 要素は、メモリ キャッシュの `namedCaches` コレクションにエントリを追加します。 `add` 要素を使用する前に [clear](../../../../../docs/framework/configure-apps/file-schema/runtime/clear-element-for-namedcaches.md) 要素を使用すると、コレクション内に他の名前付きキャッシュがないことを確認できます。 この要素は、machine.config ファイルと Web.config ファイルで使用できます。 + +## 使用例 + メモリ キャッシュの `namedCaches` コレクションに既定の `namedCache` エントリの設定を定義する方法を次の例に示します。 + +``` + + + + + + + + + + + +``` + +## 参照 + [\ 要素 \(キャッシュ設定\)](../../../../../docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/alwaysflowimpersonationpolicy-element.md b/docs/framework/configure-apps/file-schema/runtime/alwaysflowimpersonationpolicy-element.md new file mode 100644 index 00000000000..0113803bc99 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/alwaysflowimpersonationpolicy-element.md @@ -0,0 +1,96 @@ +--- +title: "<alwaysFlowImpersonationPolicy> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/alwaysFlowImpersonationPolicy" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#alwaysFlowImpersonationPolicy" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "alwaysFlowImpersonationPolicy 要素" +ms.assetid: ee622801-9e46-470b-85ab-88c4b1dd2ee1 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# <alwaysFlowImpersonationPolicy> 要素 +偽装の実行方法に関係なく、Windows ID が常に非同期ポイント間をフローするように指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

Windows ID が非同期ポイント間をフローするかどうかを示します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`| などのマネージ メソッドを介して偽装が実行されない限り、Windows ID は非同期ポイント間をフローしません。 これは、既定の設定です。| +|`true`|偽装の実行方法に関係なく、Windows ID は常に非同期ポイント間をフローします。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + .NET Framework Version 1.0 および 1.1 では、Windows ID は非同期ポイント間をフローしません。 一方、.NET Framework Version 2.0 には、現在の実行スレッドに関する情報を格納し、これをアプリケーション ドメイン内の非同期ポイント間でフローさせる オブジェクトがあります。 も、非同期ポイント間をフローする情報の一部としてフローします。ただし、偽装が などのマネージ メソッドを使用して実行され、ネイティブ メソッドのプラットフォーム呼び出しなど、他の手段によって実行されていない場合に限ります。 この要素を使用して、偽装の実行方法に関係なく、Windows ID が非同期ポイント間をフローするように指定します。 + + この既定の動作は、さらに次の 2 つの方法で変更できます。 + +1. スレッドごとにマネージ コードを使用する。 + + メソッド、 メソッド、または メソッドを使用して 設定と 設定を変更すると、スレッドごとにフローを止めることができます。 + +2. 共通言語ランタイム \(CLR: Common Language Runtime\) を読み込むアンマネージ ホスト インターフェイスの呼び出しを使用する。 + + 単純なマネージ実行可能ファイルの代わりに、アンマネージ ホスト インターフェイスを使用して CLR を読み込むと、[CorBindToRuntimeEx 関数](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimeex-function.md) 関数の呼び出しで特別なフラグを指定できます。 プロセス全体の互換モードを有効にするには、[CorBindToRuntimeEx 関数](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimeex-function.md) の `flags` パラメーターを STARTUP\_ALWAYSFLOW\_IMPERSONATION に設定します。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルでのみ使用できます。 + +## 使用例 + マネージ メソッド以外の手段によって偽装が実行されている場合でも、Windows ID が非同期ポイント間をフローするように指定する方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/legacyimpersonationpolicy-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/appdomainmanagerassembly-element.md b/docs/framework/configure-apps/file-schema/runtime/appdomainmanagerassembly-element.md new file mode 100644 index 00000000000..8d0b9779aa2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/appdomainmanagerassembly-element.md @@ -0,0 +1,88 @@ +--- +title: "<appDomainManagerAssembly> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "appDomainManagerAssembly 要素" +ms.assetid: c7c56e39-a700-44f5-b94e-411bfce339d9 +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# <appDomainManagerAssembly> 要素 +プロセスの既定のアプリケーション ドメインにアプリケーション ドメイン マネージャーを提供するアセンブリを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`value`|必須の属性です。 プロセスの既定のアプリケーション ドメインにアプリケーション ドメイン マネージャーを提供するアセンブリの表示名を指定します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + アプリケーション ドメイン マネージャーの型を指定するには、この要素と [\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagertype-element.md) 要素の両方を指定する必要があります。 これらの要素のどちらかが指定されていない場合、もう一方の要素は無視されます。 + + 既定のアプリケーション ドメインが読み込まれるとき、 は指定したアセンブリが存在しない場合、またはアセンブリを [\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagertype-element.md) 要素で指定された型がスローされます; とプロセスは起動しません。 アセンブリが見つかってもバージョン情報が一致しない場合は、 がスローされます。 + + 既定のアプリケーション ドメインに対するアプリケーション ドメイン マネージャーの型を指定すると、既定のアプリケーション ドメインから作成される他のアプリケーション ドメインにも、そのアプリケーション ドメイン マネージャーの型が継承されます。 新しいアプリケーション ドメインに対して別のアプリケーション ドメイン マネージャーの型を指定するには、 プロパティと プロパティを使用します。 + + アプリケーション ドメイン マネージャーの型を指定する場合は、アプリケーションに完全信頼が必要です \(たとえば、デスクトップ上で実行されるアプリケーションは完全に信頼されています\)。アプリケーションに完全信頼がない場合は、 がスローされます。 + + アセンブリの表示名の形式については、 プロパティを参照してください。 + + この構成要素は、[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降でのみ使用できます。 + +## 使用例 + 次の例は、プロセスの既定のアプリケーション ドメインのアプリケーション ドメイン マネージャーとして、`AdMgrExample` アセンブリ内の `MyMgr` 型を指定する方法を示しています。 + +``` + + + + + + +``` + +## 参照 + + + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagertype-element.md) + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [SetAppDomainManagerType メソッド](../Topic/ICLRControl::SetAppDomainManagerType%20Method.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/appdomainmanagertype-element.md b/docs/framework/configure-apps/file-schema/runtime/appdomainmanagertype-element.md new file mode 100644 index 00000000000..3bb32485b6f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/appdomainmanagertype-element.md @@ -0,0 +1,88 @@ +--- +title: "<appDomainManagerType> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "appDomainManagerType 要素" +ms.assetid: ae8d5a7e-e7f7-47f7-98d9-455cc243a322 +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# <appDomainManagerType> 要素 +既定のアプリケーション ドメインのアプリケーション ドメイン マネージャーとして機能する型を指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`value`|必須の属性です。 プロセスの既定のアプリケーション ドメインのアプリケーション ドメイン マネージャーとして機能する型の名前を、名前空間を含めて指定します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + アプリケーション ドメイン マネージャーの型を指定するには、この要素と [\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagerassembly-element.md) 要素の両方を指定する必要があります。 これらの要素のどちらかが指定されていない場合、もう一方の要素は無視されます。 + + 既定のアプリケーション ドメインが読み込まれるとき、 は指定された型が [\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagerassembly-element.md) 要素で指定されたアセンブリにあるスローされます; とプロセスは起動しません。 + + 既定のアプリケーション ドメインに対するアプリケーション ドメイン マネージャーの型を指定すると、既定のアプリケーション ドメインから作成される他のアプリケーション ドメインにも、そのアプリケーション ドメイン マネージャーの型が継承されます。 新しいアプリケーション ドメインに対して別のアプリケーション ドメイン マネージャーの型を指定するには、 プロパティと プロパティを使用します。 + + アプリケーション ドメイン マネージャーの型を指定する場合は、アプリケーションに完全信頼が必要です \(たとえば、デスクトップ上で実行されるアプリケーションは完全に信頼されています\)。アプリケーションに完全信頼がない場合は、 がスローされます。 + + 型と名前空間の形式は、 プロパティで使用される形式と同じです。 + + この構成要素は、[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降でのみ使用できます。 + +## 使用例 + 次の例は、プロセスの既定のアプリケーション ドメインのアプリケーション ドメイン マネージャーとして、`AdMgrExample` アセンブリ内の `MyMgr` 型を指定する方法を示しています。 + +``` + + + + + + +``` + +## 参照 + + + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagerassembly-element.md) + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [SetAppDomainManagerType メソッド](../Topic/ICLRControl::SetAppDomainManagerType%20Method.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md b/docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md new file mode 100644 index 00000000000..68bb1f97dd5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md @@ -0,0 +1,84 @@ +--- +title: "<appDomainResourceMonitoring> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "appDomainResourceMonitoring 要素" +ms.assetid: 02119ab6-1e91-448e-97ad-e7b2e5c4bbbd +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# <appDomainResourceMonitoring> 要素 +プロセスの有効期間中、プロセス内のすべてのアプリケーション ドメインに関する統計情報を収集するようにランタイムに指示します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

アプリケーション ドメインのリソース監視に関する統計情報を収集するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`true`|アプリケーション ドメインのリソース監視に関する統計情報が収集されます。| +|`false`|アプリケーション ドメインのリソース監視に関する統計情報は収集されません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + アプリケーション ドメインのリソース監視は、マネージ アプリケーション ドメイン クラス、[ICLRAppDomainResourceMonitor](../../../../../ocs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-interface.md) ホスト インターフェイス、および Windows イベント トレーシング \(ETW\) を通じて実現されます。 監視を有効にすると、プロセスの有効期間中、プロセス内のすべてのアプリケーション ドメインに関する統計情報が収集されます。 + + マネージ コードから監視を有効にするには、 プロパティを使用します。 + + この構成要素は、[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降でのみ使用できます。 + +## 使用例 + アプリケーション ドメインのリソース監視を有効にする方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/assemblybinding-element-for-runtime.md b/docs/framework/configure-apps/file-schema/runtime/assemblybinding-element-for-runtime.md new file mode 100644 index 00000000000..aad1b8366df --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/assemblybinding-element-for-runtime.md @@ -0,0 +1,105 @@ +--- +title: "<runtime> の <assemblyBinding> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/assemblyBinding" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "assemblyBinding 要素" + - "コンテナー タグ, 要素" +ms.assetid: 964cbb35-ab49-4498-8471-209689e5dada +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# <runtime> の <assemblyBinding> 要素 +アセンブリ バージョンのリダイレクトおよびアセンブリの位置に関する情報が含まれます。 + +## 構文 + +``` + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|**xmlns**|必須の属性です。

アセンブリのバインディングに必要な XML 名前空間を指定します。 値として、文字列 "urn:schemas\-microsoft\-com:asm.v1" を使用します。| +|**AppliesTo**|.NET Framework アセンブリのリダイレクトを適用するランタイムのバージョンを指定します。 このオプションの属性では、.NET Framework バージョン番号を使用して、適用するバージョンを指定します。 **appliesTo** 属性が指定されていない場合、**\** 要素は、.NET Framework のすべてのバージョンに適用されます。 **appliesTo** 属性は .NET Framework Version 1.1 で導入されたものであり、.NET Framework Version 1.0 では無視されます。 これは **appliesTo** 属性が指定されている場合でも、.NET Framework version 1.0 を使用している場合 **\** のすべての要素が適用されることを意味します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/dependentassembly-element.md)|アセンブリのバインディング ポリシーとアセンブリの場所をカプセル化します。 アセンブリごとに 1 つの **\** タグを使用します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/probing-element.md)|アセンブリの読み込み時に共通言語ランタイムが検索するサブディレクトリを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/publisherpolicy-element.md)|ランタイムが発行元ポリシーを適用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/qualifyassembly-element.md)|部分名が使用された場合に動的に読み込む必要があるアセンブリの完全名を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 使用例 + あるアセンブリ バージョンを別のバージョンにリダイレクトし、コードベースを提供する例を示します。 + +``` + + + + + + + + + + + +``` + + **appliesTo** 属性を使用して .NET Framework アセンブリのバインディングをリダイレクトする方法の例を示します。 + +``` + + + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [アセンブリ バージョンのリダイレクト](../../../../../docs/framework/configure-apps/redirect-assembly-versions.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/assemblyidentity-element-for-runtime.md b/docs/framework/configure-apps/file-schema/runtime/assemblyidentity-element-for-runtime.md new file mode 100644 index 00000000000..aef3d185af3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/assemblyidentity-element-for-runtime.md @@ -0,0 +1,132 @@ +--- +title: "<runtime> の <assemblyIdentity> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/assemblyBinding/dependentAssembly/assemblyIdentity" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#assemblyIdentity" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "assemblyIdentity 要素" + - "コンテナー タグ, 要素" +ms.assetid: cea4d187-6398-4da4-af09-c1abc6a349c1 +caps.latest.revision: 17 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 17 +--- +# <runtime> の <assemblyIdentity> 要素 +アセンブリに関する識別情報が含まれています。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`name`|必須の属性です。

アセンブリの名前。| +|`culture`|省略可能な属性。

アセンブリの言語、および国または地域を指定する文字列。| +|`publicKeyToken`|省略可能な属性。

アセンブリの厳密な名前を指定する 16 進値。| +|`processorArchitecture`|省略可能な属性。

"x86"、"amd64"、"msil"、または "ia64" のいずれかの値で、プロセッサ固有のコードを含むアセンブリのプロセッサ アーキテクチャを指定します。 値の大文字と小文字は区別されません。 この属性にこれ以外の値を割り当てると、`` 要素全体が無視されます。 「」を参照してください。| + +## processorArchitecture 属性 + +|値|説明| +|-------|--------| +|`amd64`|64 ビット AMD プロセッサのみ| +|`ia64`|64 ビット Intel プロセッサのみ| +|`msil`|プロセッサおよびワードあたりのビット数に関して中立| +|`x86`|32 ビット Intel プロセッサ \(ネイティブまたは 64 ビット プラットフォーム上の WOW \(Windows on Windows\) 環境\)| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`assemblyBinding`|アセンブリ バージョンのリダイレクトおよびアセンブリの位置に関する情報が含まれます。| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`dependentAssembly`|各アセンブリのバインディング ポリシーとアセンブリの場所をカプセル化します。 アセンブリごとに 1 つの `` 要素を使用します。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + **\** の各要素は **\** の 1 種類の子要素が必要です。 + + `processorArchitecture` 属性が指定されている場合、`` 要素は対応するプロセッサ アーキテクチャを使用するアセンブリにのみ適用されます。 `processorArchitecture` 属性が指定されていない場合、`` 要素はどのプロセッサ アーキテクチャを使用するアセンブリにも適用できます。 + + 次の例は、2 種類のプロセッサ アーキテクチャをターゲットとし、かつバージョン管理が同期していない、同じ名前の 2 つのアセンブリ用の構成ファイルを示しています。 アプリケーションが x86 プラットフォームで実行される場合は、最初の `` 要素が適用され、もう 1 つの要素が無視されます。 アプリケーションが x86 または ia64 以外のプラットフォームで実行される場合は、両方の要素が無視されます。 + +``` + +    +       +          +             +             +          +          +             +             +          +       +    + +``` + + 構成ファイルに、`processorArchitecture` 属性が指定されていない `` 要素が含まれ、かつプラットフォームと一致する要素が含まれていない場合は、`processorArchitecture` 属性が指定されていない要素が使用されます。 + +## 使用例 + アセンブリの情報を提供する例を示します。 + +``` + + + + + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [アセンブリ バージョンのリダイレクト](../../../../../docs/framework/configure-apps/redirect-assembly-versions.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/bindingredirect-element.md b/docs/framework/configure-apps/file-schema/runtime/bindingredirect-element.md new file mode 100644 index 00000000000..8d78bc827ba --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/bindingredirect-element.md @@ -0,0 +1,97 @@ +--- +title: "<bindingRedirect> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/assemblyBinding/dependentAssembly/bindingRedirect" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#bindingRedirect" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "bindingRedirect 要素" + - "コンテナー タグ, 要素" +ms.assetid: 67784ecd-9663-434e-bd6a-26975e447ac0 +caps.latest.revision: 12 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# <bindingRedirect> 要素 +1 つのアセンブリ バージョンを別のバージョンにリダイレクトします。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`oldVersion`|必須の属性です。

初めに要求されていたアセンブリのバージョンを指定します。 アセンブリのバージョン番号の形式は *major.minor.build.revision* です。 このバージョン番号の各部分で有効値は、0 ~ 65535 です。

バージョン範囲は、次の形式でも指定できます。

*n.n.n.n \- n.n.n.n*| +|`newVersion`|必須の属性です。

初めに要求されていたバージョンの代わりに使用するアセンブリのバージョンを指定します。形式は *n.n.n.n* です。

この値では `oldVersion` より前のバージョンを指定できます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|なし|| + +### 親要素 + +|要素|説明| +|--------|--------| +|`assemblyBinding`|アセンブリ バージョンのリダイレクトおよびアセンブリの位置に関する情報が含まれます。| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`dependentAssembly`|各アセンブリのバインディング ポリシーとアセンブリの場所をカプセル化します。 アセンブリごとに 1 つの dependentAssembly 要素を使用します。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + 厳密な名前付きアセンブリに対して .NET Framework アプリケーションを構築すると、実行時に新しいバージョンが利用できる場合でも、既定で、アプリケーションの構築時に使用したアセンブリのバージョンが使用されます。 ただし、新しいバージョンのアセンブリで実行するようにもアプリケーションを構成できます。 これらのファイルを使用して、ランタイムが使用するアセンブリ バージョンを決定する方法の詳細については、「[ランタイムがアセンブリを検索する方法](../../../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md)」を参照してください。 + + 複数の `bindingRedirect` 要素を `dependentAssembly` 要素に含めることによって、複数のアセンブリ バージョンをリダイレクトできます。 また、アセンブリの新しいバージョンから古いバージョンにリダイレクトすることもできます。 + + アプリケーション構成ファイルで明示的にアセンブリ バインディングをリダイレクトするには、セキュリティ アクセス許可が必要です。 これは、.NET Framework アセンブリおよびサードパーティ製アセンブリに適用されます。 アクセス許可は、[SecurityPermission クラス](frlrfSystemSecurityPermissionsSecurityPermissionClassTopic)の [BindingRedirects](frlrfSystemSecurityPermissionsSecurityPermissionFlagClassTopic) フラグを設定することによって付与されます。 詳細については、「[アセンブリ バインディング リダイレクトのセキュリティ アクセス許可](../../../../../docs/framework/configure-apps/assembly-binding-redirection-security-permission.md)」を参照してください。 + +## 使用例 + あるアセンブリ バージョンを別のバージョンにリダイレクトする例を示します。 + +``` + + + + + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [アセンブリ バージョンのリダイレクト](../../../../../docs/framework/configure-apps/redirect-assembly-versions.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/bypasstrustedappstrongnames-element.md b/docs/framework/configure-apps/file-schema/runtime/bypasstrustedappstrongnames-element.md new file mode 100644 index 00000000000..d3abba90002 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/bypasstrustedappstrongnames-element.md @@ -0,0 +1,95 @@ +--- +title: "<bypassTrustedAppStrongNames> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "bypassTrustedAppStrongNames 要素" + - "厳密な名前のバイパス機能" + - "厳密な名前を付けたアセンブリ, 読み込み (信頼されたアプリケーション ドメインへの)" +ms.assetid: 71b2ebf6-3843-41e2-ad52-ffa5cd083a40 +caps.latest.revision: 18 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 18 +--- +# <bypassTrustedAppStrongNames> 要素 +完全に信頼されている に読み込まれた、完全信頼アセンブリの厳密な名前の検証をバイパスするかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

完全信頼アセンブリの厳密な名前の検証を回避するバイパス機能を有効にするかどうかを指定します。 この機能を有効にすると、アセンブリを読み込むときに、厳密な名前が正しいかどうかの検証は行われません。 既定値は、`true` です。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`true`|完全に信頼されている にアセンブリを読み込むとき、完全信頼アセンブリの厳密な名前の署名は検証されません。 これは、既定の設定です。| +|`false`|完全に信頼されている にアセンブリを読み込むとき、完全信頼アセンブリの厳密な名前の署名が検証されます。 厳密な名前の署名は、署名が正しいかどうかだけが検証されます。別の厳密な名前と一致するかどうかの比較は行われません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + 厳密な名前のバイパス機能により、完全信頼アセンブリの厳密な名前の署名の検証によるオーバーヘッドを回避することができます。 + + バイパス機能は、厳密な名前を使用して署名されたすべてのアセンブリと、次のような特性を持つすべてのアセンブリに適用されます。 + +- 証拠のない \(たとえば、`MyComputer` ゾーンの証拠が付与されている\)、完全に信頼されているアセンブリ + +- 完全に信頼されている に読み込まれたアセンブリ + +- プロパティで指定された場所から読み込まれたアセンブリ + +- 遅延署名されていないアセンブリ + +> [!NOTE] +> レジストリ キーを使用して、コンピューター上のすべてのアプリケーションに対してバイパス機能が無効になっている場合、この構成ファイルの設定は無効です。 詳細については、「[方法 : 厳密な名前のバイパス機能を無効にする](../../../../../docs/framework/app-domains/how-to-disable-the-strong-name-bypass-feature.md)」を参照してください。 + +## 使用例 + 次の例は、完全信頼アセンブリの厳密な名前の署名の検証動作を指定する方法を示しています。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [方法 : 厳密な名前のバイパス機能を無効にする](../../../../../docs/framework/app-domains/how-to-disable-the-strong-name-bypass-feature.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/clear-element-for-namedcaches.md b/docs/framework/configure-apps/file-schema/runtime/clear-element-for-namedcaches.md new file mode 100644 index 00000000000..3fa90139c5e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/clear-element-for-namedcaches.md @@ -0,0 +1,61 @@ +--- +title: "<namedCaches> の <clear> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の clear 要素" +ms.assetid: ea01a858-65da-4348-800f-5e3df59d4d79 +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# <namedCaches> の <clear> 要素 +メモリ キャッシュの `namedCaches` コレクションのすべての `namedCache` エントリを消去します。 + +## 構文 + +``` + + + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + `None` + +### 子要素 + `None` + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md)|名前付き インスタンスの構成設定のコレクションが含まれます。| + +## 解説 + `clear` 要素は、メモリ キャッシュの名前付きキャッシュ コレクション内のすべての `namedCache` エントリを消去します。 `add` 要素を使用する前に `clear` 要素を使用すると、コレクション内に他の名前付きキャッシュがないことを確認するために、新しい名前付きキャッシュ エントリを追加できます。 + +## 参照 + [\ 要素 \(キャッシュ設定\)](../../../../../docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/codebase-element.md b/docs/framework/configure-apps/file-schema/runtime/codebase-element.md new file mode 100644 index 00000000000..721897056a6 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/codebase-element.md @@ -0,0 +1,101 @@ +--- +title: "<codeBase> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#codeBase" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/assemblyBinding/dependentAssembly/codeBase" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "codeBase 要素" + - "コンテナー タグ, 要素" +ms.assetid: d48a3983-2297-43ff-a14d-1f29d3995822 +caps.latest.revision: 10 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 10 +--- +# <codeBase> 要素 +共通言語ランタイムがアセンブリを検索できる場所を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`href`|必須の属性です。

指定したアセンブリのバージョンをランタイムが検索できる URL を指定します。| +|`version`|必須の属性です。

コードベースを適用するアセンブリのバージョンを指定します。 アセンブリのバージョン番号の形式は、*major.minor.build.revision* です。| + +## version 属性 + +|値|説明| +|-------|--------| +|バージョン番号の各部分で有効値は、0 ~ 65535 です。|使用できません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`buildproviders`|カスタム リソース ファイルをコンパイルするためのビルド プロバイダーのコレクションを定義します。 ビルド プロバイダーの数は任意です。| +|`compilation`|ASP.NET で使用されるすべてのコンパイル設定値を構成します。| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`System.web`|ASP.NET 構成セクションのルート要素を指定します。| + +## 解説 + 設定するマシン構成ファイルまたは発行者ポリシー ファイルの **\** を使用するランタイムのファイルは、アセンブリ バージョンのリダイレクトしなければなりません。 アプリケーション構成ファイルは、アセンブリ バージョンをリダイレクトせずにコードベース設定を指定できます。 使用するアセンブリ バージョンを決定した後、ランタイムはバージョンを決定したファイルのコードベース設定を適用します。 コードベースを指定しないと、ランタイムはアセンブリを通常の方法でプローブします。 + + アセンブリが厳密な名前を持つ場合、コードベース設定はローカル イントラネットまたはインターネットの任意の場所に保存できます。 プライベート アセンブリの場合、コードベース設定はアプリケーションのディレクトリからの相対パスにする必要があります。 + + 厳密な名前のないアセンブリの場合、ローダーはバージョンの使用コードベース\> の \<現れるまで dependentAssembly\>で \<無視されます。 バインディングを他のアセンブリにリダイレクトするアプリケーション構成ファイルにエントリがある場合は、アセンブリのバージョンがバインディング要求と一致しないときでも、リダイレクトが優先されます。 + +## 使用例 + ランタイムがアセンブリを検索できる場所を指定する例を示します。 + +``` + + + + + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [アセンブリの場所の指定](../../../../../docs/framework/configure-apps/specify-assembly-location.md) + [ランタイムがアセンブリを検索する方法](../../../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/compatsortnlsversion-element.md b/docs/framework/configure-apps/file-schema/runtime/compatsortnlsversion-element.md new file mode 100644 index 00000000000..28860331cc9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/compatsortnlsversion-element.md @@ -0,0 +1,101 @@ +--- +title: "<CompatSortNLSVersion> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "CompatSortNLSVersion 要素" +ms.assetid: 782cc82e-83f7-404a-80b7-6d3061a8b6e3 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# <CompatSortNLSVersion> 要素 +文字列比較の実行時に、ランタイムがレガシ並べ替え順序を使用するように指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`enabled`|必須の属性です。

並べ替え順序が使用されるロケール ID を指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|4096|代替の並べ替え順序を表すロケール ID。 この場合、4096 は、[!INCLUDE[net_v35_short](../../../../../includes/net-v35-short-md.md)] およびそれ以前のバージョンの並べ替え順序を表します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| + +## 解説 + [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] で クラスによって実行される文字列の比較、並べ替え、および大文字と小文字の区別の処理は、Unicode 5.1 規格に準拠しているため、 などの文字列比較メソッドの結果は、以前のバージョンの .NET Framework とは異なる場合があります。 アプリケーションがレガシ動作に依存している場合は、`` 要素をアプリケーションの構成ファイルに含めることで、[!INCLUDE[net_v35_short](../../../../../includes/net-v35-short-md.md)] およびそれ以前のバージョンで使用されていた文字列の比較および並べ替えの規則を復元できます。 + +> [!IMPORTANT] +> 文字列の比較および並べ替えのレガシ規則を復元する場合は、ローカル システムで sort00001000.dll ダイナミック リンク ライブラリも使用できるようにする必要があります。 + + アプリケーション ドメインを作成するときに、文字列 "NetFx40\_Legacy20SortingBehavior" を メソッドに渡すことで、文字列の比較および並べ替えのレガシ規則を特定のアプリケーション ドメインで使用することもできます。 + +## 使用例 + 次の例では、2 つの オブジェクトをインスタンス化して、 メソッドを呼び出し、現在のカルチャの規則を使用してそれらのオブジェクトを比較する方法を示します。 + + [!code-csharp[String.BreakingChanges#1](../../../../../samples/snippets/csharp/VS_Snippets_CLR/string.breakingchanges/cs/example1.cs#1)] + [!code-vb[String.BreakingChanges#1](../../../../../samples/snippets/visualbasic/VS_Snippets_CLR/string.breakingchanges/vb/example1.vb#1)] + + [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] で例を実行すると、次のように出力されます。 + +``` +sta follows a in the sort order. +``` + + これは、[!INCLUDE[net_v35_short](../../../../../includes/net-v35-short-md.md)] で例を実行したときに表示される出力とはまったく異なります。 + +``` +sta equals a in the sort order. +``` + + ただし、例のディレクトリに次の構成ファイルを追加し、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] で例を実行すると、[!INCLUDE[net_v35_short](../../../../../includes/net-v35-short-md.md)] で例を実行した場合と同じ出力が生成されます。 + +``` + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/dependentassembly-element.md b/docs/framework/configure-apps/file-schema/runtime/dependentassembly-element.md new file mode 100644 index 00000000000..ea2ebb0d757 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/dependentassembly-element.md @@ -0,0 +1,91 @@ +--- +title: "<dependentAssembly> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/assemblyBinding/dependentAssembly" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#dependentAssembly" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンテナー タグ, 要素" + - "dependentAssembly 要素" +ms.assetid: 14e95627-dd79-4b82-ac85-e682aa3a31d8 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# <dependentAssembly> 要素 +各アセンブリのバインディング ポリシーとアセンブリの場所をカプセル化します。 アセンブリごとに 1 つの `dependentAssembly` 要素を使用します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|`assemblyIdentity`|アセンブリに関する識別情報が含まれています。 各 `dependentAssembly` 要素にこの要素を含める必要があります。| +|`codeBase`|アセンブリがコンピューターにインストールされていない場合に、ランタイムが共有アセンブリを検索できるかどうかを指定します。| +|`bindingRedirect`|1 つのアセンブリ バージョンを別のバージョンにリダイレクトします。| +|`publisherPolicy`|ランタイムがこのアセンブリに発行者ポリシーを適用するかどうかを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`assemblyBinding`|アセンブリ バージョンのリダイレクトおよびアセンブリの位置に関する情報が含まれます。| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 使用例 + 2 つのアセンブリのアセンブリ情報をカプセル化する例を示します。 + +``` + + + + + + + + + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [アセンブリ バージョンのリダイレクト](../../../../../docs/framework/configure-apps/redirect-assembly-versions.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/developmentmode-element.md b/docs/framework/configure-apps/file-schema/runtime/developmentmode-element.md new file mode 100644 index 00000000000..f44782e4ae0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/developmentmode-element.md @@ -0,0 +1,83 @@ +--- +title: "<developmentMode> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/developmentMode" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#developmentMode" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンテナー タグ, 要素" + - "developmentMode 要素" +ms.assetid: 60e79a8c-415a-497d-be29-b9d0fd9bdee3 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# <developmentMode> 要素 +DEVPATH 環境変数で指定されたディレクトリでランタイムがアセンブリを検索するかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|**developerInstallation**|DEVPATH 環境変数で指定されたディレクトリでランタイムがアセンブリを検索するかどうかを指定します。| + +## developerInstallation 属性 + +|値|説明| +|-------|--------| +|**true**|DEVPATH 環境変数で指定されたディレクトリでアセンブリを検索します。| +|**false**|DEVPATH 環境変数で指定されたディレクトリでアセンブリを検索しません。 これが既定値です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + この設定は、開発時にだけ使用します。 ランタイムは、DEVPATH で見つかった厳密な名前付きアセンブリのバージョンを確認しません。 単純に、最初に見つかったアセンブリを使用します。 + +## 使用例 + DEVPATH 環境変数で指定されたディレクトリでランタイムがアセンブリを検索するように指定する例を示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [方法 : DEVPATH を使用してアセンブリを指定する](../../../../../docs/framework/configure-apps/how-to-locate-assemblies-by-using-devpath.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/disablecachingbindingfailures-element.md b/docs/framework/configure-apps/file-schema/runtime/disablecachingbindingfailures-element.md new file mode 100644 index 00000000000..09d62904440 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/disablecachingbindingfailures-element.md @@ -0,0 +1,92 @@ +--- +title: "<disableCachingBindingFailures> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#disableCachingBindingFailures" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/disableCachingBindingFailures" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "アセンブリ [.NET Framework], キャッシュ (バインディング エラーを)" + - "キャッシュ (アセンブリ バインディング エラーを)" + - "disableCachingBindingFailures 要素" +ms.assetid: bf598873-83b7-48de-8955-00b0504fbad0 +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# <disableCachingBindingFailures> 要素 +調査でアセンブリが見つからなかったために発生するバインディング エラーのキャッシュを無効にするかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|enabled|必須の属性です。

調査でアセンブリが見つからなかったために発生するバインディング エラーのキャッシュを無効にするかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|0|調査でアセンブリが見つからなかったために発生するバインディング エラーのキャッシュを無効にしません。 これは .NET Framework Version 2.0 以降での既定のバインディング動作です。| +|1|調査でアセンブリが見つからなかったために発生するバインディング エラーのキャッシュを無効にします。 この設定により、.NET Framework Version 1.1 のバインディング動作に戻ります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + .NET Framework Version 2.0 以降では、アセンブリを読み込む際の既定の動作として、すべてのバインディング エラーおよび読み込みエラーがキャッシュされます。 つまり、アセンブリの読み込みに失敗した場合、それ以降の同じアセンブリの読み込みの要求は即座に失敗します。アセンブリを探す試みは行われません。 この要素は、調査パスでアセンブリが見つからなかったために発生するバインディング エラーに対応するための既定の動作を無効にします。 このようなエラーでは、 がスローされます。 + + バインディング エラーおよび読み込みエラーの中には、この要素の影響を受けないものもあり、このようなエラーは常にキャッシュされます。 このようなエラーは、アセンブリが見つかっても読み込むことができなかった場合に発生します。 または がスローされます。 このようなエラーの例を次の一覧に示します。 + +- 有効なアセンブリではないファイルを読み込もうとした場合、その後に無効なファイルを正しいアセンブリに置き換えても、それ以降のそのアセンブリの読み込みは失敗します。 + +- ファイル システムによってロックされているアセンブリを読み込もうとした場合、その後にそのアセンブリがファイル システムによって解放されても、それ以降のそのアセンブリの読み込みは失敗します。 + +- 読み込もうとしているアセンブリの 1 つ以上のバージョンが調査パスに存在するにもかかわらず、要求している特定のバージョンがその中に含まれていない場合、正しいバージョンを調査パスに移動しても、それ以降のそのバージョンの読み込みは失敗します。 + +## 使用例 + 調査でアセンブリが見つからなかったために発生するアセンブリ バインディング エラーのキャッシュを無効にする方法を次のコード例に示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [ランタイムがアセンブリを検索する方法](../../../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/disablecommitthreadstack-element.md b/docs/framework/configure-apps/file-schema/runtime/disablecommitthreadstack-element.md new file mode 100644 index 00000000000..fc6aa30dc29 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/disablecommitthreadstack-element.md @@ -0,0 +1,88 @@ +--- +title: "<disableCommitThreadStack> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/disableCommitThreadStack" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#disableCommitThreadStack" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "disableCommitThreadStack 要素" +ms.assetid: 3559d46a-7640-4c72-9a11-7e980768929e +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# <disableCommitThreadStack> 要素 +スレッドの起動時にスレッド スタック全体をコミットするかどうかを指定します。 + + \ +\ +\ + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|enabled|必須の属性です。

スレッド起動時にスレッド スタック全体をコミットすること \(既定の動作\) を無効にするかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|0|共通言語ランタイムの既定の動作 \(スレッドの起動時にスレッド スタック全体をコミット\) を無効にしません。| +|1|共通言語ランタイムの既定の動作 \(スレッドの起動時にスレッド スタック全体をコミット\) を無効にします。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + 共通言語ランタイムの既定の動作では、スレッドの起動時にスレッド スタック全体がコミットされます。 メモリが限られているサーバーで多数のスレッドが作成する必要があり、それらのスレッドのほとんどがごくわずかのスタック スペースしか使用しない場合は、スレッドの起動時に共通言語ランタイムが直ちにスレッド スタック全体をコミットしなければ、サーバーのパフォーマンスが向上する可能性があります。 + +> [!NOTE] +> アンマネージ ホストは、[STARTUP\_FLAGS](../../../../../ocs/framework/unmanaged-api/hosting/startup-flags-enumeration.md) 列挙体の `STARTUP_DISABLE_COMMITTHREADSTACK` 起動フラグを使用することにより、同じ結果を得ることができます。 + +## 使用例 + 次の例は、共通言語ランタイムの既定の動作 \(スレッド起動時にスレッド スタック全体をコミット\) を無効にする方法を示しています。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/disablefusionupdatesfromadmanager-element.md b/docs/framework/configure-apps/file-schema/runtime/disablefusionupdatesfromadmanager-element.md new file mode 100644 index 00000000000..5c75cc50c82 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/disablefusionupdatesfromadmanager-element.md @@ -0,0 +1,87 @@ +--- +title: "<disableFusionUpdatesFromADManager> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "disableFusionUpdatesFromADManager 要素" +ms.assetid: 58d2866c-37bd-4ffa-abaf-ff35926a2939 +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# <disableFusionUpdatesFromADManager> 要素 +アプリケーション ドメインの構成設定をランタイム ホストがオーバーライドできるという既定の動作を、無効にするかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|enabled|必須の属性です。

Fusion の設定をオーバーライドする既定の機能を無効にするかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|0|Fusion の設定をオーバーライドする機能を無効にしません。 [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降では、これが既定の動作です。| +|1|Fusion の設定をオーバーライドする機能を無効にします。 これにより、.NET Framework の以前のバージョンの動作に戻ります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降の既定の動作では、 オブジェクトが構成設定をオーバーライドできます。そのためには、 の独自のサブクラスで、 メソッドの実装に渡された オブジェクトの プロパティまたは メソッドを使用します。 既定のアプリケーション ドメインでは、変更された設定によって、アプリケーション構成ファイルで指定された設定がオーバーライドされます。 その他のアプリケーション ドメインでは、 メソッドまたは メソッドに渡された構成設定がオーバーライドされます。 + + 渡された構成情報を削除するには、新しい構成情報を渡すか、または null \(Visual Basic では `Nothing`\) を渡すことができます。 + + 構成情報は、 プロパティと メソッドのどちらか一方に渡すようにしてください。 両方に構成情報を渡した場合、 メソッドはアプリケーション構成ファイルの構成情報をオーバーライドするため、 プロパティに渡した情報は無視されます。 プロパティを使用する場合は、 メソッドに null \(Visual Basic では `Nothing`\) を渡すことで、 メソッドまたは メソッドの呼び出しで指定されたすべての構成バイトを削除できます。 + + 構成情報に加えて、 メソッドの実装に渡される オブジェクトの設定も変更できます。変更できる設定には、、および があります。 + + `` 要素を使用する代わりに、レジストリ設定を作成するか環境変数を設定して、既定の動作を無効にすることもできます。 レジストリの場合、`HKCU\Software\Microsoft\.NETFramework` または `HKLM\Software\Microsoft\.NETFramework` の下に `COMPLUS_disableFusionUpdatesFromADManager` という名前の DWORD 値を作成し、その値を 1 に設定します。 コマンド ラインの場合、`COMPLUS_disableFusionUpdatesFromADManager` 環境変数を 1 に設定します。 + +## 使用例 + 次のコード例は、`` 要素を使用して、Fusion の設定をオーバーライドする機能を無効にする方法を示しています。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [ランタイムがアセンブリを検索する方法](../../../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/enforcefipspolicy-element.md b/docs/framework/configure-apps/file-schema/runtime/enforcefipspolicy-element.md new file mode 100644 index 00000000000..1577121d56e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/enforcefipspolicy-element.md @@ -0,0 +1,83 @@ +--- +title: "<enforceFIPSPolicy> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "enforceFIPSPolicy 要素" + - "連邦情報処理規格 (FIPS: Federal Information Processing Standard)" + - "FIPS" +ms.assetid: c35509c4-35cf-43c0-bb47-75e4208aa24e +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# <enforceFIPSPolicy> 要素 +暗号アルゴリズムが連邦情報処理規格 \(FIPS: Federal Information Processing Standard\) に準拠することを必要とするコンピューターの構成要件を適用するかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|enabled|必須の属性です。

暗号アルゴリズムが FIPS に準拠することを必要とするコンピューターの構成要件の適用を有効にするかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`true`|暗号アルゴリズムが FIPS に準拠することを必要とするようにコンピューターが構成されている場合は、その要件が適用されます。 クラスが FIPS に準拠しないアルゴリズムを実装している場合は、そのコンピューターでの実行時に、そのクラスのコンストラクターまたは `Create` メソッドによって例外がスローされます。 これは、既定の設定です。| +|`false`|コンピューターの構成に関係なく、アプリケーションで使用される暗号アルゴリズムが FIPS に準拠する必要はありません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + .NET Framework 2.0 以降では、暗号アルゴリズムを実装するクラスの作成はコンピューターの構成によって制御されます。 アルゴリズムが FIPS に準拠することを必要とするようにコンピューターが構成されている場合に、クラスが FIPS に準拠しないアルゴリズムを実装しているときは、そのクラスのインスタンスを作成しようとすると例外がスローされます。 コンストラクターは 例外をスローし、`Create` メソッドは内部に 例外を含む 例外をスローします。 + + FIPS への準拠を必要とする構成になっているコンピューターでアプリケーションが実行される場合に、アプリケーションで FIPS に準拠しないアルゴリズムが使用されるときは、構成ファイルでこの要素を使用すると、共通言語ランタイム \(CLR: Common Language Runtime\) によって FIPS への準拠が適用されないようにすることができます。 この要素は、[!INCLUDE[net_v20SP1_long](../../../../../includes/net-v20sp1-long-md.md)] で導入されました。 + +## 使用例 + 次の例では、CLR によって FIPS への準拠が適用されないようにする方法を示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [暗号モデル](../../../../../docs/standard/security/cryptography-model.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/etwenable-element.md b/docs/framework/configure-apps/file-schema/runtime/etwenable-element.md new file mode 100644 index 00000000000..12b0f7f6f34 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/etwenable-element.md @@ -0,0 +1,82 @@ +--- +title: "<etwEnable> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "etwEnable 要素" +ms.assetid: 29dde982-6d8b-4099-8867-ad0d7733f6dc +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# <etwEnable> 要素 +共通言語ランタイム イベントで Windows イベント トレーシング \(ETW\) を有効にするかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|enabled|必須の属性です。

ETW を有効にするかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|true|ETW を有効にします。 これは、Windows Vista および Windows Server 2008 オペレーティング システム以降のバージョンの Windows の既定値です。| +|false|ETW を無効にします。 これは、旧バージョンの Windows の既定値です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + Windows Vista 以降、ETW は既定で有効になっています。 この要素を使用すると、アプリケーションに対して ETW を無効にできます。 それ以前の Windows バージョンでは、この要素を使用すると、アプリケーションに対して ETW を有効にできます。 + +> [!NOTE] +> レジストリ設定を使用すると、サーバーでグローバルに ETW を有効または無効にできます。 「[.NET Framework のログ記録の制御](../../../../../docs/framework/performance/controlling-logging.md)」を参照してください。 + +## 使用例 + アプリケーションに対して ETW トレースを有効にする方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [.NET Framework のログ記録の制御](../../../../../docs/framework/performance/controlling-logging.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/forceperformancecounteruniquesharedmemoryreads-element.md b/docs/framework/configure-apps/file-schema/runtime/forceperformancecounteruniquesharedmemoryreads-element.md new file mode 100644 index 00000000000..cebb14dc28b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/forceperformancecounteruniquesharedmemoryreads-element.md @@ -0,0 +1,90 @@ +--- +title: "<forcePerformanceCounterUniqueSharedMemoryReads> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "forcePerformanceCounterUniqueSharedMemoryReads 要素" +ms.assetid: 91149858-4810-4f65-9b48-468488172c9b +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# <forcePerformanceCounterUniqueSharedMemoryReads> 要素 +PerfCounter.dll がカテゴリ固有の共有メモリとグローバル メモリのどちらからパフォーマンス カウンター データを読み込むかを判断するために .NET Framework Version 1.1 アプリケーションの CategoryOptions レジストリ設定を使用するかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

PerfCounter.dll がカテゴリ固有の共有メモリとグローバル メモリのどちらからパフォーマンス カウンター データを読み込むかを判断するために CategoryOptions レジストリ設定を使用するかどうかを示します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|PerfCounter.dll では、CategoryOptions レジストリ設定が使用されません。これが既定値です。| +|`true`|PerfCounter.dll では、CategoryOptions レジストリ設定が使用されます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] より前のバージョンの .NET Framework では、読み込まれた PerfCounter.dll のバージョンは、プロセスに読み込まれたランタイムに対応します。 コンピューターに、.NET Framework Version 1.1 と [!INCLUDE[dnprdnlong](../../../../../includes/dnprdnlong-md.md)] の両方がインストールされている場合、.NET Framework 1.1 アプリケーションは .NET Framework 1.1 バージョンの PerfCounter.dll を読み込みます。 [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] 以降では、インストールされている最新のバージョンの PerfCounter.dll が読み込まれます。 これにより、.NET Framework 1.1 アプリケーションは、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] がコンピューターにインストールされている場合に、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] バージョンの PerfCounter.dll を読み込みます。 + + [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] 以降では、パフォーマンス カウンターを使用する場合に、PerfCounter.dll は各プロバイダーの CategoryOptions レジストリ エントリをチェックして、カテゴリ固有の共有メモリとグローバル共有メモリのどちらから読み取る必要があるかを判断します。 .NET Framework 1.1 PerfCounter.dll は、カテゴリ固有の共有メモリを認識しないため、このレジストリ エントリを読み取りません。常にグローバル共有メモリから読み取ります。 + + 下位互換性を維持するために、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] PerfCounter.dll は、.NET Framework 1.1 アプリケーションで実行されている場合に、CategoryOptions レジストリ エントリをチェックしません。 .NET Framework 1.1 PerfCounter.dll と同様に、単純にグローバル共有メモリを使用します。 ただし、`` 要素を有効にすることで、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] PerfCounter.dll に対してレジストリ設定をチェックするように指示できます。 + +> [!NOTE] +> `` 要素を有効にしても、カテゴリ固有の共有メモリが使用されるという保証はありません。 `true` を有効にする設定は、PerfCounter.dll が CategoryOptions レジストリ設定を参照する原因にしかなりません。 CategoryOptions の既定の設定では、カテゴリ固有の共有メモリが使用されます。ただし、CategoryOptions を変更して、グローバル共有メモリを使用するように指示できます。 + + CategoryOptions 設定を含むレジストリ キーは、HKEY\_LOCAL\_MACHINE\\System\\CurrentControlSet\\Services\\の categoryName\\Performance\<\>です。 既定では、CategoryOptions は 3 に設定されます。これは、PerfCounter.dll に対してカテゴリ固有の共有メモリを使用するように指示します。 CategoryOptions が 0 に設定されている場合、PerfCounter.dll はグローバル共有メモリを使用します。 インスタンス データは、作成されるインスタンスの名前が再利用されるインスタンスの名前と同じ場合にのみ再利用されます。 すべてのバージョンで、カテゴリに書き込むことができます。 CategoryOptions が 1 に設定されている場合は、グローバル共有メモリが使用されますが、インスタンス データは、カテゴリ名の長さが再利用されるカテゴリと同じ場合にのみ再利用できます。 + + 設定 0 および 1 は、メモリ リークと、パフォーマンス カウンター メモリの不足を引き起こすことがあります。 + +## 使用例 + PerfCounter.dll がカテゴリ固有の共有メモリを使用する必要があるかどうかを判断するために CategoryOptions レジストリ エントリを参照する必要があることを指定する方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/gcallowverylargeobjects-element.md b/docs/framework/configure-apps/file-schema/runtime/gcallowverylargeobjects-element.md new file mode 100644 index 00000000000..201d4b3aaea --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/gcallowverylargeobjects-element.md @@ -0,0 +1,88 @@ +--- +title: "<gcAllowVeryLargeObjects> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "gcAllowVeryLargeObjects 要素" +ms.assetid: 5c7ea24a-39ac-4e5f-83b7-b9f9a1b556ab +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# <gcAllowVeryLargeObjects> 要素 +64 ビット プラットフォームで、合計サイズが 2 GB \(ギガバイト\) を超える配列を有効にします。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

64 ビット プラットフォームで、合計サイズが 2 GB \(ギガバイト\) を超える配列が有効であるかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|合計サイズが 2 GB を超える配列は有効ではありません。 これは、既定の設定です。| +|`true`|64 ビット プラットフォームで、合計サイズが 2 GB を超える配列が有効になっています。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| + +## 解説 + アプリケーション構成ファイルで次の要素を使用すると 2 GB を超えるサイズの配列が有効になりますが、オブジェクトのサイズや配列のサイズに対するその他の制限は変更されません。 + +- 配列の要素の最大数は です。 + +- バイト配列および 1 バイト構造体の配列の場合、単一次元の最大インデックスは 2,147,483,591 \(0x7FFFFFC7\) です。その他の種類の場合は 2,146,435,071 \(0X7FEFFFFF\) です。 + +- 文字列およびその他の非配列オブジェクトの最大サイズは変更されません。 + +> [!CAUTION] +> この機能を有効にする前に、すべての配列のサイズが 2 GB よりも小さいことを前提としたアンセーフ コードがアプリケーションに含まれていないことを確認します。 たとえば、バッファーとして配列を使用するアンセーフ コードが、配列は 2 GB を超えないという前提で記述されている場合、バッファー オーバーランが発生しやすくなる可能性があります。 + +## 使用例 + アプリケーションでこの機能を有効にする方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md b/docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md new file mode 100644 index 00000000000..23fc02eb3f2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md @@ -0,0 +1,105 @@ +--- +title: "<gcConcurrent> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/gcConcurrent" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#gcConcurrent" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンテナー タグ, 要素" + - "gcConcurrent 要素" +ms.assetid: 503f55ba-26ed-45ac-a2ea-caf994da04cd +caps.latest.revision: 18 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 18 +--- +# <gcConcurrent> 要素 +共通言語ランタイムがガベージ コレクションを別のスレッドで実行するかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`enabled`|必須の属性です。

ランタイムがガベージ コレクションを並列に実行するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|ガベージ コレクションを並列に実行しません。| +|`true`|ガベージ コレクションを並列に実行します。 既定値です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + .NET Framework 4 より前の場合、ワークステーション ガベージ コレクションは、同時実行ガベージ コレクションをサポートしており、別個のスレッドでバックグラウンドでガベージ コレクションを実行していました。 .NET Framework 4 では同時実行ガベージ コレクションはバックグラウンド GC に置き換えられており、これも別個のスレッドでバックグラウンドでガベージ コレクションを実行していました。 .NET Framework 4.5 以降では、バックグラウンド コレクションをサーバー ガベージ コレクションで使用できるようになりました。 `` 要素は、ランタイムが同時実行ガベージ コレクションを実行するかバックグラウンド ガベージ コレクションを実行するか \(使用可能な場合\)、またはフォアグラウンドでガベージ コレクションを実行するかどうかを制御します。 + +> [!WARNING] +> .NET Framework 4 以降では、同時実行ガベージ コレクションはバックグラウンド ガベージ コレクションに置き換えられています。 *同時実行*と*バックグラウンド*という用語は、.NET Framework ドキュメントでは同義です。 バックグラウンド ガベージ コレクションを無効にするには、この記事説明されているように `` 要素を使用します。 + + 既定では、ランタイムは同時実行ガベージ コレクションまたはバックグラウンド ガベージ コレクションを使用します。これは待機時間について最適化されています。 アプリケーションでユーザーとのやり取りが多い場合は、同時実行ガベージ コレクションを有効にして、ガベージ コレクションを実行するためのアプリケーションの停止時間を最小限に抑えます。 `` 要素の `enabled` 属性を `false` に設定すると、ランタイムは非同時実行ガベージ コレクションを使用します。これはスループットについて最適化されています。 次の構成ファイルはバック グラウンド ガベージ コレクションを無効にします。 + +```xml + + + + + + + +``` + + マシン構成ファイルに `` 設定が存在する場合、すべての .NET Framework アプリケーションの既定値を定義します。 マシン構成ファイルの設定は、アプリケーション構成ファイルの設定を上書きします。 + + 同時実行ガベージ コレクションおよびバックグラウンド ガベージ コレクションの詳細については、「[Fundamentals of Garbage Collection](../../../../../docs/standard/garbage-collection/fundamentals.md)」トピックの「同時実行ガベージ コレクション」セクションを参照してください。 + +## 使用例 + 同時実行ガベージ コレクションを有効にする方法を次の例に示します。 + +``` + + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [Fundamentals of Garbage Collection](../../../../../docs/standard/garbage-collection/fundamentals.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/gccpugroup-element.md b/docs/framework/configure-apps/file-schema/runtime/gccpugroup-element.md new file mode 100644 index 00000000000..8eabd8b050e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/gccpugroup-element.md @@ -0,0 +1,85 @@ +--- +title: "<GCCpuGroup> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "GCCpuGroup 要素" +ms.assetid: c1fc7d6c-7220-475c-a312-5b8b201f66e0 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# <GCCpuGroup> 要素 +ガベージ コレクションが複数の CPU グループをサポートするかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

ガベージ コレクションが複数の CPU グループをサポートするかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|ガベージ コレクションは複数の CPU グループをサポートしていません。 これは、既定の設定です。| +|`true`|ガベージ コレクションは、サーバーのガベージ コレクションが有効な場合に複数の CPU グループをサポートします。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + コンピューターに複数の CPU グループがあり、サーバーのガベージ コレクション \([\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md) 要素を参照\) が有効になっている場合、ヒープを作成および分散するときに、ガベージ コレクションが CPU グループ全体に分散し、すべてのコアが考慮されます。 + +> [!NOTE] +> この要素は、ガベージ コレクション スレッドにのみ適用されます。 ランタイムが CPU グループ全体にユーザー スレッドを分散できるようにするには、[\](../../../../../docs/framework/configure-apps/file-schema/runtime/thread-useallcpugroups-element.md) 要素を有効にする必要があります。 + +## 使用例 + 次の例は、複数の CPU グループのガベージ コレクションを有効にする方法を示しています。 + +``` + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [How to: Disable Concurrent Garbage Collection](http://msdn.microsoft.com/ja-jp/ba2c6c67-5778-497c-9fac-5f793b5500c7) + [ワークステーションとサーバーのガベージ コレクション](../../../../../docs/standard/garbage-collection/fundamentals.md#workstation_and_server_garbage_collection) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/gcserver-element.md b/docs/framework/configure-apps/file-schema/runtime/gcserver-element.md new file mode 100644 index 00000000000..72e38fe619c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/gcserver-element.md @@ -0,0 +1,93 @@ +--- +title: "<gcServer> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/gcServer" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#gcServer" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "gcServer 要素" +ms.assetid: 8d25b80e-2581-4803-bd87-a59528e3cb03 +caps.latest.revision: 17 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 17 +--- +# <gcServer> 要素 +共通言語ランタイムがサーバーのガベージ コレクションを実行するかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`enabled`|必須の属性です。

ランタイムがサーバーのガベージ コレクションを実行するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|サーバーのガベージ コレクションを実行しません。 既定値です。| +|`true`|サーバーのガベージ コレクションを実行します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + 共通言語ランタイム \(CLR\) は、2 種類のガベージ コレクションをサポートしています。1 つはワークステーション ガベージ コレクションで、すべてのシステムで使用できるものです。もう 1 つはサーバー ガベージ コレクションで、マルチプロセッサ システムで使用できるものです。 `` 要素を使用して、CLR によって実行されるガベージ コレクションの種類を制御します。 プロパティを使用して、サーバー ガベージ コレクションが有効かどうかを決定します。 + + シングル プロセッサ コンピューターの場合、既定のワークステーション ガベージ コレクションが催促のオプションです。 2 つのプロセッサを搭載するコンピューターで、ワークステーションかサーバーのいずれかを使用できます。 3 つ以上のプロセッサでは、サーバー ガベージ コレクションが最速のオプションです。 + + この要素は、アプリケーション構成ファイルでのみ使用できます。要素がマシン構成ファイルにある場合には無視されます。 + +> [!NOTE] +> .NET Framework 4 以前のバージョンでは、サーバー ガベージ コレクションを有効にすると同時実行ガベージ コレクションが使用できません。 [!INCLUDE[net_v45](../../../../../includes/net-v45-md.md)] 以降では、サーバー ガベージ コレクションは同時実行されるようになりました。 非同時実行サーバー ガベージ コレクションを使用するには、`` 要素を `true` に設定し、[\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)を `false` に設定します。 + +## 使用例 + サーバー ガベージ コレクションを有効にする方法を次の例に示します。 + +``` + + + + + + + +``` + +## 参照 + + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [How to: Disable Concurrent Garbage Collection](http://msdn.microsoft.com/ja-jp/ba2c6c67-5778-497c-9fac-5f793b5500c7) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/generatepublisherevidence-element.md b/docs/framework/configure-apps/file-schema/runtime/generatepublisherevidence-element.md new file mode 100644 index 00000000000..53344fcad96 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/generatepublisherevidence-element.md @@ -0,0 +1,89 @@ +--- +title: "<generatePublisherEvidence> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "generatePublisherEvidence 要素" +ms.assetid: 7d208f50-e8d5-4a42-bc1a-1cf3590706a8 +caps.latest.revision: 21 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 21 +--- +# <generatePublisherEvidence> 要素 +ランタイムでコード アクセス セキュリティ \(CAS: Code Access Security\) 用の 証拠を作成するかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

ランタイムで 証拠を作成するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`| 証拠を作成しません。| +|`true`| 証拠を作成します。 これは、既定の設定です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| + +## 解説 + +> [!NOTE] +> [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降では、この要素はアセンブリの読み込み時間に影響を与えません。 詳細については、「[セキュリティの変更点](../../../../../docs/framework/security/security-changes.md)」のセキュリティ ポリシーの簡略化に関するセクションを参照してください。 + + 共通言語ランタイム \(CLR: Common Language Runtime\) は、アセンブリの 証拠を作成するために、読み込み時に Authenticode 署名を検証します。 ただし、既定では、ほとんどのアプリケーションは 証拠を必要としません。 標準的な CAS ポリシーは、 に依存しません。 コンピューター上でカスタム CAS ポリシーを使用してアプリケーションを実行する場合や、部分信頼環境で を実現するための要求への適合を意図する場合を除き、起動時に発行者の署名の検証に関連する不要な処理を実行することは避けることが必要です \(ID アクセス許可の要求は、完全信頼環境下では必ず成功します\)。 + +> [!NOTE] +> 起動時のパフォーマンスを向上させることを目的に、サービスで `` 要素を使用することをお勧めします。この要素は、タイムアウトの原因になる遅延や、サービス開始のキャンセルを回避することにも役立ちます。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルでのみ使用できます。 + +## 使用例 + 次に、`` 要素を使用してアプリケーションの CAS 発行者ポリシー チェックを無効にする方法について説明します。 + +``` + +    +        +    + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/index.md b/docs/framework/configure-apps/file-schema/runtime/index.md new file mode 100644 index 00000000000..77a4903287e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/index.md @@ -0,0 +1,185 @@ +--- +title: "ランタイム設定スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "構成スキーマ [.NET Framework], ランタイム設定" + - "ランタイム設定スキーマ" + - "スキーマ ランタイム設定" +ms.assetid: f04816ab-110d-4e28-9283-845d6d9a4a68 +caps.latest.revision: 49 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 42 +--- +# ランタイム設定スキーマ +ランタイム設定は、共通言語ランタイムがガベージ コレクションを処理する方法と、構成ファイルで使用するアセンブリのバージョンを指定します。 + + [\](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md) + + [\<ランタイム\>](../../../../../docs/framework/configure-apps/file-schema/runtime/runtime-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/alwaysflowimpersonationpolicy-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagerassembly-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagertype-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md) + + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/assemblybinding-element-for-runtime.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/dependentassembly-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/assemblyidentity-element-for-runtime.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/bindingredirect-element.md) + + [\<コードベース\>](../../../../../docs/framework/configure-apps/file-schema/runtime/codebase-element.md) + + [\<プローブ\>](../../../../../docs/framework/configure-apps/file-schema/runtime/probing-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/publisherpolicy-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/qualifyassembly-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/bypasstrustedappstrongnames-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/compatsortnlsversion-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/developmentmode-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/disablecachingbindingfailures-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/disablecommitthreadstack-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/disablefusionupdatesfromadmanager-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/enforcefipspolicy-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/etwenable-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/forceperformancecounteruniquesharedmemoryreads-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/gccpugroup-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/generatepublisherevidence-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/legacycorruptedstateexceptionspolicy-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/legacyimpersonationpolicy-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/loadfromremotesources-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/netfx40-legacysecuritypolicy-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/netfx40-pinvokestackresilience-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/netfx45-cultureawarecomparergethashcode-longstrings-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/prefercominsteadofmanagedremoting-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/relativebindforresources-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/relativebindforresources-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/supportportability-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/system-runtime-caching-element-cache-settings.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/add-element-for-namedcaches.md) + + [\<[clear]\>](../../../../../docs/framework/configure-apps/file-schema/runtime/clear-element-for-namedcaches.md) + + [\<削除\>](../../../../../docs/framework/configure-apps/file-schema/runtime/remove-element-for-namedcaches.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/thread-useallcpugroups-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/runtime-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/userandomizedstringhashalgorithm-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/runtime/usesmallinternalthreadstacks-element.md) + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/add-element-for-namedcaches.md)|名前付きキャッシュをメモリ キャッシュの `namedCaches` コレクションに追加します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/alwaysflowimpersonationpolicy-element.md)|偽装の実行方法に関係なく、Windows ID が常に非同期ポイント間をフローするように指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagerassembly-element.md)|プロセスの既定のアプリケーション ドメインにアプリケーション ドメイン マネージャーを提供するアセンブリを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagertype-element.md)|既定のアプリケーション ドメインのアプリケーション ドメイン マネージャーとして機能する型を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md)|プロセスの有効期間中、プロセス内のすべてのアプリケーション ドメインに関する統計情報を収集するようにランタイムに指示します。| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/assemblybinding-element-for-runtime.md)|アセンブリ バージョンのリダイレクトおよびアセンブリの位置に関する情報が含まれます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/assemblyidentity-element-for-runtime.md)|アセンブリに関する識別情報が含まれています。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/bindingredirect-element.md)|1 つのアセンブリ バージョンを別のバージョンにリダイレクトします。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/bypasstrustedappstrongnames-element.md)|完全に信頼されているアセンブリの厳密な名前の検証をバイパスするかどうかを指定します。| +|[\<[clear]\>](../../../../../docs/framework/configure-apps/file-schema/runtime/clear-element-for-namedcaches.md)|メモリ キャッシュの `namedCaches` コレクションを削除します。| +|[\<コードベース\>](../../../../../docs/framework/configure-apps/file-schema/runtime/codebase-element.md)|ランタイムがアセンブリを検索できる場所を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/compatsortnlsversion-element.md)|文字列比較の実行時に、ランタイムがレガシ並べ替え動作を使用するように指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/dependentassembly-element.md)|各アセンブリのバインディング ポリシーとアセンブリの場所をカプセル化します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/developmentmode-element.md)|DEVPATH 環境変数で指定されたディレクトリでランタイムがアセンブリを検索するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/disablecachingbindingfailures-element.md)|[!INCLUDE[dnprdnext](../../../../../includes/dnprdnext-md.md)] の既定の動作であるバインディング エラーのキャッシュを無効にするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/disablecommitthreadstack-element.md)|スレッドの起動時にスレッド スタック全体をコミットするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/disablefusionupdatesfromadmanager-element.md)|アプリケーション ドメインの構成設定をランタイム ホストがオーバーライドできるという既定の動作を、無効にするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/enforcefipspolicy-element.md)|暗号アルゴリズムが連邦情報処理規格 \(FIPS: Federal Information Processing Standard\) に準拠することを必要とするコンピューターの構成要件を適用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/etwenable-element.md)|共通言語ランタイム イベントで Windows イベント トレーシング \(ETW\) を有効にするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/forceperformancecounteruniquesharedmemoryreads-element.md)|PerfCounter.dll がカテゴリ固有の共有メモリとグローバル メモリのどちらからパフォーマンス カウンター データを読み込むかを判断するために .NET Framework Version 1.1 アプリケーションの CategoryOptions レジストリ設定を使用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcallowverylargeobjects-element.md)|64 ビット プラットフォームで、合計サイズが 2 GB \(ギガバイト\) を超える配列を有効にします。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)|ランタイムがガベージ コレクションを並列に実行するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/gccpugroup-element.md)|ガベージ コレクションが複数の CPU グループをサポートするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)|共通言語ランタイムがサーバーのガベージ コレクションを実行するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/generatepublisherevidence-element.md)|ランタイムがコード アクセス セキュリティ \(CAS: Code Access Security\) 発行者ポリシーを使用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/legacycorruptedstateexceptionspolicy-element.md)|ランタイムでアクセス違反やその他の破損状態の例外をマネージ コードがキャッチできるかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/legacyimpersonationpolicy-element.md)|現在のスレッドの実行コンテキストのフロー設定に関係なく、Windows ID が非同期ポイント間をフローしないように指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/loadfromremotesources-element.md)|リモート ソースからのアセンブリを完全信頼アセンブリとして読み込むかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md)| クラスに基づいたキャッシュの構成に使用される要素を定義します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md)|`namedCache` インスタンスの構成設定のコレクションが含まれます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/netfx40-legacysecuritypolicy-element.md)|ランタイムがレガシ コード アクセス セキュリティ \(CAS: Code Access Security\) ポリシーを使用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/netfx40-pinvokestackresilience-element.md)|ランタイムが、マネージ コードとアンマネージ コードの間の切り替えを低速にしてでも、実行時に不適切なプラットフォーム呼び出し宣言を自動的に修正するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/netfx45-cultureawarecomparergethashcode-longstrings-element.md)| のメソッドのハッシュ コードを計算するためにランタイムが固定メモリを使用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/prefercominsteadofmanagedremoting-element.md)|ランタイムでアプリケーション ドメインの境界を越えたリモート処理ではなく COM 相互運用機能が使用されることを指定します。| +|[\<プローブ\>](../../../../../docs/framework/configure-apps/file-schema/runtime/probing-element.md)|アセンブリを読み込むときに、ランタイムが検索するサブディレクトリを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/publisherpolicy-element.md)|ランタイムが発行者ポリシーを適用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/qualifyassembly-element.md)|部分名が使用された場合に動的に読み込む必要があるアセンブリの完全名を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/relativebindforresources-element.md)|サテライト アセンブリのプローブを最適化します。| +|[\<削除\>](../../../../../docs/framework/configure-apps/file-schema/runtime/remove-element-for-namedcaches.md)|メモリ キャッシュの `namedCaches` コレクションから、名前付きキャッシュ エントリを削除します。| +|[\<ランタイム\>](../../../../../docs/framework/configure-apps/file-schema/runtime/runtime-element.md)|アセンブリのバインディングとガベージ コレクションの動作に関する情報を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md)|シャドウ コピーの動作を、[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] で導入された既定の起動動作にするか、旧バージョンの .NET Framework の起動動作に戻すかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/supportportability-element.md)|.NET Framework の 2 つの異なる実装にある同じアセンブリを 1 つのアプリケーションから参照できるように、既定の動作を無効にすることができます。既定の動作では、アプリケーションの移植性を高めるために、このようなアセンブリは同等のものとして扱われます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/system-runtime-caching-element-cache-settings.md)|既定のメモリ内オブジェクト キャッシュの構成情報を提供します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/thread-useallcpugroups-element.md)|ランタイムによって、すべての CPU グループにマネージ スレッドを分散するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element.md)|未処理の例外を実行中のプロセスを停止する必要があるかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/runtime-element.md)|ランタイムで 値に書式設定のレガシ動作を使用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/userandomizedstringhashalgorithm-element.md)|ランタイムがアプリケーション ドメインごとに文字列のハッシュ コードを計算するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/usesmallinternalthreadstacks-element.md)|ランタイムで内部的に使用する特定のスレッドを作成するときに、既定のスタック サイズではなく明示的なスタック サイズを使用することを要求します。| + +## 参照 + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [How to: Disable Concurrent Garbage Collection](http://msdn.microsoft.com/ja-jp/ba2c6c67-5778-497c-9fac-5f793b5500c7) + [アセンブリ バージョンのリダイレクト](../../../../../docs/framework/configure-apps/redirect-assembly-versions.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/legacycorruptedstateexceptionspolicy-element.md b/docs/framework/configure-apps/file-schema/runtime/legacycorruptedstateexceptionspolicy-element.md new file mode 100644 index 00000000000..1d7a8d8ae9e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/legacycorruptedstateexceptionspolicy-element.md @@ -0,0 +1,89 @@ +--- +title: "<legacyCorruptedStateExceptionsPolicy> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "legacyCorruptedStateExceptionsPolicy 要素" +ms.assetid: e0a55ddc-bfa8-4f3e-ac14-d1fc3330e4bb +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# <legacyCorruptedStateExceptionsPolicy> 要素 +共通言語ランタイムで、アクセス違反やその他の破損状態の例外をマネージ コードがキャッチできるようにするかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

アクセス違反などの破損状態の例外エラーをアプリケーションがキャッチするように指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|アプリケーションは、アクセス違反などの破損状態の例外エラーをキャッチしません。 これは、既定の設定です。| +|`true`|アプリケーションは、アクセス違反などの破損状態の例外エラーをキャッチします。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + .NET Framework Version 3.5 以前では、共通言語ランタイムは、プロセス状態の破損によって発生した例外をマネージ コードがキャッチできるようにしていました。 このような例外の例として、アクセス違反があります。 + + [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降では、このような例外がマネージ コードの `catch` ブロックでキャッチされなくなります。 ただし、次の 2 つの方法により、この変更をオーバーライドして破損状態の例外の処理を維持できます。 + +- `` 要素の `enabled` 属性を `true` に設定します。 この構成設定はプロセス全体に適用され、すべてのメソッドに反映されます。 + + または + +- 例外の `catch` ブロックを含むメソッドに 属性を適用します。 + + この構成要素は、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] 以降でのみ使用できます。 + +## 使用例 + アプリケーションの動作を [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] より前の動作に戻し、破損状態の例外エラーをすべてキャッチするように指定する方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/legacyimpersonationpolicy-element.md b/docs/framework/configure-apps/file-schema/runtime/legacyimpersonationpolicy-element.md new file mode 100644 index 00000000000..86bebd2537a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/legacyimpersonationpolicy-element.md @@ -0,0 +1,97 @@ +--- +title: "<legacyImpersonationPolicy> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#legacyImpersonationPolicy" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/legacyImpersonationPolicy" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "legacyImpersonationPolicy 要素" +ms.assetid: 6e00af10-42f3-4235-8415-1bb2db78394e +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# <legacyImpersonationPolicy> 要素 +現在のスレッドの実行コンテキストのフロー設定に関係なく、Windows ID が非同期ポイント間をフローしないように指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

現在のスレッドの フロー設定に関係なく、 が非同期ポイント間をフローしないように指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|現在のスレッドの フロー設定に基づいて、 が非同期ポイント間をフローします。 これは、既定の設定です。| +|`true`|現在のスレッドの フロー設定に関係なく、 は非同期ポイント間をフローしません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + .NET Framework Version 1.0 および 1.1 では、 はユーザー定義の非同期ポイント間をフローしません。 一方、.NET Framework Version 2.0 には、現在の実行スレッドに関する情報を格納し、これをアプリケーション ドメイン内の非同期ポイント間でフローさせる オブジェクトがあります。 も、非同期ポイント間をフローする情報の一部としてフローします。つまり、偽装コンテキストが終了した場合でもフローします。 この要素は、 が非同期ポイント間をフローしないように指定するために使用されます。 + +> [!NOTE] +> 共通言語ランタイム \(CLR: Common Language Runtime\) は、マネージ コードのみを使用して実行される偽装操作を認識し、アンマネージ コードに対するプラットフォーム呼び出しや Win32 関数に対する直接呼び出しなどを通じてマネージ コードの外部で実行される偽装は認識しません。 `alwaysFlowImpersonationPolicy` 要素が true に設定 \(``\) されていない場合は、マネージ オブジェクトのみが非同期ポイント間をフローできます。 `alwaysFlowImpersonationPolicy` を true に設定すると、偽装の実行方法に関係なく、Windows ID が常に非同期ポイント間をフローするように指定されます。 非同期ポイント間のアンマネージ偽装のフローの詳細については、「[\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/alwaysflowimpersonationpolicy-element.md)」を参照してください。 + + この要素は、アプリケーション構成ファイルでのみ使用できます。 + + この既定の動作は、さらに次の 2 つの方法で変更できます。 + +1. スレッドごとにマネージ コードを使用する。 + + メソッド、 メソッド、または メソッドを使用して 設定と 設定を変更すると、スレッドごとにフローを止めることができます。 + +2. 共通言語ランタイム \(CLR: Common Language Runtime\) を読み込むアンマネージ ホスト インターフェイスの呼び出しを使用する。 + + 単純なマネージ実行可能ファイルの代わりに、アンマネージ ホスト インターフェイスを使用して CLR を読み込むと、[CorBindToRuntimeEx 関数](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimeex-function.md) 関数の呼び出しで特別なフラグを指定できます。 プロセス全体の互換モードを有効にするには、[CorBindToRuntimeEx 関数](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimeex-function.md) の `flags` パラメーターを STARTUP\_LEGACY\_IMPERSONATION に設定します。 + +## 使用例 + 非同期ポイント間で Windows ID をフローしないレガシ動作を指定する方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/loadfromremotesources-element.md b/docs/framework/configure-apps/file-schema/runtime/loadfromremotesources-element.md new file mode 100644 index 00000000000..f44c50afccc --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/loadfromremotesources-element.md @@ -0,0 +1,111 @@ +--- +title: "<loadFromRemoteSources> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "loadFromRemoteSources 要素" + - " 要素" +ms.assetid: 006d1280-2ac3-4db6-a984-a3d4e275046a +caps.latest.revision: 31 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 31 +--- +# <loadFromRemoteSources> 要素 +リモート ソースからのアセンブリに完全信頼を与えるかどうかを指定します。 + +> [!NOTE] +> Visual Studio プロジェクトのエラー一覧に表示されたエラー メッセージ、またはビルド エラーによってこのトピックにたどり着いた場合は、「[方法: Visual Studio で Web からダウンロードしたアセンブリを使用する](http://msdn.microsoft.com/ja-jp/d8635b63-89a0-41aa-90f4-f351b2111070)」を参照してください。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

リモート ソースから読み込まれるアセンブリに完全信頼を与えるかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|リモート ソースからのアプリケーションに完全信頼を与えません。 これは、既定の設定です。| +|`true`|リモート ソースからのアプリケーションに完全信頼を与えます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| + +## 解説 + .NET Framework Version 3.5 以前のバージョンでは、リモートの場所からアセンブリを読み込んだ場合、そのアセンブリは、読み込み先のゾーンに応じた許可セットが与えられた部分的に信頼されるアセンブリとして実行されていました。 たとえば、Web サイトからアセンブリを読み込んだら、インターネット ゾーンに読み込まれ、インターネット アクセス許可セットが与えられていました。 つまり、このようなアセンブリはインターネット サンドボックスで実行されていました。 [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降のバージョンでそのアセンブリを実行しようとすると、例外がスローされます; \([方法 : サンドボックスで部分信頼コードを実行する](../../../../../docs/framework/misc/how-to-run-partially-trusted-code-in-a-sandbox.md)を参照してください\) 明示的にアセンブリのサンドボックスを作成したり、完全信頼で実行します。 + + `` 要素は、.NET Framework の以前のバージョンで部分的に信頼される実行するアセンブリが [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] 以降で完全に信頼されて実行されるように指定することができます。 既定で、リモート アセンブリは [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] 以降では実行されません。 リモート アセンブリを実行するには、完全信頼として実行するか、テストを実行するため サンドボックスを作成する必要があります。 + +> [!NOTE] +> [!INCLUDE[net_v45](../../../../../includes/net-v45-md.md)]では、ローカル ネットワークの共有のアセンブリを完全信頼として、既定で実行して; `` 要素を有効にする必要はありません。 + +> [!NOTE] +> Web からコピーされたアプリケーションは、ローカル コンピューターにある場合でも、フラグが立てられ Web アプリケーションとして Windows によって異なります。 ファイルのプロパティを変更することにより、この指定を変更できます。または、`` 要素を使用して、アセンブリに完全信頼を与えることもできます。 別の方法として、オペレーティング システムがフラグを付けたローカル アセンブリを読み込むために のメソッドを使用して、Web から読み込まれますです。 + + この要素の `enabled` 属性は、コード アクセス セキュリティ \(CAS: Code Access Security\) が無効になっている場合にのみ有効です。 [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] 以降のバージョンでは、CAS ポリシーは既定で無効になっています。 `enabled` を `true` に設定すると、リモート アプリケーションには完全信頼が与えられます。 + + `` の `enabled` が `true` に設定されていない場合は、次の状況で例外がスローされます。 + +- 現在のドメインのサンドボックス化の動作が [!INCLUDE[net_v35_short](../../../../../includes/net-v35-short-md.md)] での動作と異なる。 この場合、CAS ポリシーを無効にし、現在のドメインがサンドボックス化されないようにする必要があります。 + +- 読み込まれるアセンブリが `MyComputer` ゾーンからのアセンブリではない。 + +> [!NOTE] +> Windows Virtual PC アプリケーションの は、ホスト コンピューターのリンクされたフォルダーからファイルを読み込もうとしたときに発生することがあります。 このエラーは、リンクされたフォルダーからファイルを読み込むときに発生する可能性があります \([リモート デスクトップ サービス](http://go.microsoft.com/fwlink/?LinkId=182775) ターミナル サービス\)。 例外を回避するには、`enabled` を `true` に設定します。 + + `` 要素を `true` に設定すると、この例外がスローされなくなります。 この設定により、読み込まれたアセンブリを共通言語ランタイムに依存してセキュリティ目的でサンドボックス化せずに、完全信頼アセンブリとして実行できるように指定できます。 + +> [!IMPORTANT] +> アセンブリを完全に信頼して実行しない場合は、この構成要素を設定しないでください。 代わりに、アセンブリの読み込み先としてサンドボックス化された を作成してください。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルで使用するそのほかの構成ファイルのコンテキストで使用できます。 詳細について、.NET のセキュリティ ブログ記事を [CAS ポリシーの暗黙の使用: loadFromRemoteSources](http://go.microsoft.com/fwlink/p/?LinkId=266839) 参照します。 + +## 使用例 + リモート ソースからのアプリケーションに完全信頼を与える方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + [CAS ポリシーの暗黙の使用: loadFromRemoteSources](http://go.microsoft.com/fwlink/p/?LinkId=266839) + [方法 : サンドボックスで部分信頼コードを実行する](../../../../../docs/framework/misc/how-to-run-partially-trusted-code-in-a-sandbox.md) + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md b/docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md new file mode 100644 index 00000000000..db9b68fff1c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md @@ -0,0 +1,108 @@ +--- +title: "<memoryCache> 要素 (キャッシュ設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "キャッシュ [.NET Framework], 構成" + - "memoryCache 要素" +ms.assetid: 182a622f-f7cf-472d-9d0b-451d2fd94525 +caps.latest.revision: 12 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 12 +--- +# <memoryCache> 要素 (キャッシュ設定) + クラスに基づくキャッシュを構成するために使用される要素を定義します。 クラスは、キャッシュの構成に使用できる [memoryCache](../../../../../docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md) 要素を定義します。 クラスの複数のインスタンスを、単一のアプリケーションで使用できます。 構成ファイル内の各 `memoryCache` 要素には、指定した インスタンスの設定を含むことができます。 + + \ +\ +\ + +## 構文 + +``` + + +
+< memoryCache /> +``` + +## 型 + クラス。 + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`CacheMemoryLimitMegabytes`| オブジェクトのインスタンスを拡張できる最大メモリ サイズ \(メガバイト\)。 既定値は 0 であり、これは クラスの自動サイズ調整ヒューリスティックが既定で使用されることを意味します。| +|`Name`|キャッシュ構成の名前。| +|`PhysicalMemoryLimitPercentage`|キャッシュが使用できる物理メモリの割合。 既定値は 0 であり、これは クラスの自動サイズ調整ヒューリスティックが既定で使用されることを意味します。| +|`PollingInterval`|時間間隔を示す値。この値を超えると、キャッシュの実装によりキャッシュ インスタンスに設定されている絶対およびパーセントのメモリ制限と現在のメモリ負荷が比較されます。 値は "HH:MM:SS" 形式で入力します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md)|`namedCache` インスタンスの構成設定のコレクションが含まれます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/system-runtime-caching-element-cache-settings.md)|[!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] に組み込まれているアプリケーションに出力キャッシュを実装できるようにするタイプが含まれます。| + +## 解説 + クラスは、抽象 クラスの具象実装です。 クラスのインスタンスには、アプリケーション構成ファイルの構成情報を指定することができます。[memoryCache](../../../../../docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md) 構成セクションには、`namedCaches` の構成コレクションが含まれます。 + + メモリ ベースのキャッシュ オブジェクトが初期化されると、まず、メモリ キャッシュ コンストラクターに渡されるパラメーターの名前と一致する `namedCaches` のエントリの検索が試行されます。`namedCaches` のエントリが見つかると、ポーリングとメモリ管理の情報が構成ファイルから取得されます。 + + 次に、初期化プロセスで、コンストラクターの構成情報にある名前\/値ペアの任意のコレクションを使用して、構成エントリがオーバーライドされているかどうかが確認されます。 名前\/値ペアのコレクションの、次の値のいずれかを渡すと、構成ファイルから取得した情報をその値がオーバーライドします。 + +- + +- + +- + +## 使用例 + 次の例は、`name` 属性を "default" に設定することで、 オブジェクトの名前を既定のキャッシュ オブジェクト名に設定する方法を示しています。 + + `cacheMemoryLimitMegabytes` 属性および `physicalMemoryPercentage` 属性はゼロに設定されます。 これらの属性をゼロに設定すると、 の自動サイズ調整ヒューリスティックが既定で使用されることになります。 キャッシュの実装では、現在のメモリ負荷と絶対およびパーセントのメモリ制限を 2 分ごとに比較する必要があります。 + +``` + + + + + + + + + +``` + +## 参照 + + [\ 要素 \(キャッシュ設定\)](../../../../../docs/framework/configure-apps/file-schema/runtime/system-runtime-caching-element-cache-settings.md) + [\ 要素 \(キャッシュ設定\)](../../../../../docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md b/docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md new file mode 100644 index 00000000000..9f550cef985 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md @@ -0,0 +1,98 @@ +--- +title: "<namedCaches> 要素 (キャッシュ設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "キャッシュ [.NET Framework], 構成" + - "namedCaches 要素" +ms.assetid: 6bd4fbc5-55a6-4dc4-998b-cdcc7e023330 +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# <namedCaches> 要素 (キャッシュ設定) +名前付き インスタンスの構成設定のコレクションを指定します。 プロパティは、構成ファイルの 1 つ以上の `namedCaches` 要素の構成設定のコレクションを参照します。 + +## 構文 + +``` + +   +``` + +## 型 + `None` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`CacheMemoryLimitMegabytes`| のインスタンスについて許可される最大サイズ \(MB 単位\) を指定する整数値。 既定値は 0 です。これは、 クラスの自動サイズ変更ヒューリスティックが既定で使用されることを意味します。| +|`Name`|キャッシュの名前。| +|`PhysicalMemoryLimitPercentage`|キャッシュで使用できる物理的にインストールされたコンピューター メモリの最大パーセンテージを指定する 0 ~ 100 の整数値。 既定値は 0 です。これは、 クラスの自動サイズ変更ヒューリスティックが既定で使用されることを意味します。| +|`PollingInterval`|キャッシュの実装が、現在のメモリ負荷を、キャッシュ インスタンスに設定されているメモリ制限の絶対値および割合と比較する時間間隔を示す値。 この値は "HH:MM:SS" の形式で入力されます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/add-element-for-namedcaches.md)|名前付きキャッシュをメモリ キャッシュの `namedCaches` コレクションに追加します。| +|[\<[clear]\>](../../../../../docs/framework/configure-apps/file-schema/runtime/clear-element-for-namedcaches.md)|メモリ キャッシュの `namedCaches` コレクションを削除します。| +|[\<削除\>](../../../../../docs/framework/configure-apps/file-schema/runtime/remove-element-for-namedcaches.md)|メモリ キャッシュの `namedCaches` コレクションから、名前付きキャッシュ エントリを削除します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md)| クラスに基づいたキャッシュの構成に使用される要素を定義します。| + +## 解説 + Web.config ファイルのメモリ キャッシュ構成セクションには、`namedCaches` コレクションの `add`、`remove`、および `clear` 属性を含めることができます。 各 `namedCaches` エントリは、`name` 属性によって一意に識別されます。 + + アプリケーション構成ファイル内の情報を参照することにより、メモリ キャッシュ エントリのインスタンスを取得できます。 既定では、既定のキャッシュ インスタンスのみが構成ファイルにエントリを持ちます。 既定のキャッシュ インスタンスは、 プロパティから返されるインスタンスです。 + + 名前属性を "default" に設定した場合、要素では既定のメモリ キャッシュ インスタンスが使用されます。 + +## 使用例 + `name` 属性を "default" に設定して、キャッシュの名前を既定のキャッシュ エントリ名に設定する方法を次の例に示します。 + + `cacheMemoryLimitMegabytes` 属性と `physicalMemoryPercentage` 属性は 0 に設定されています。 これらの属性を 0 に設定すると、 クラスの自動サイズ変更ヒューリスティックが使用されます。 キャッシュの実装は、現在のメモリ負荷を、メモリ制限の絶対値および割合と 2 分ごとに比較します。 + +``` + + + + + + + + + + + +``` + +## 参照 + [\ 要素 \(キャッシュ設定\)](../../../../../docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/netfx40-legacysecuritypolicy-element.md b/docs/framework/configure-apps/file-schema/runtime/netfx40-legacysecuritypolicy-element.md new file mode 100644 index 00000000000..6d695cdef2a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/netfx40-legacysecuritypolicy-element.md @@ -0,0 +1,95 @@ +--- +title: "<NetFx40_LegacySecurityPolicy> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "NetFx40_LegacySecurityPolicy 要素" +ms.assetid: 07132b9c-4a72-4710-99d7-e702405e02d4 +caps.latest.revision: 21 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 21 +--- +# <NetFx40_LegacySecurityPolicy> 要素 +ランタイムがレガシ コード アクセス セキュリティ \(CAS: Code Access Security\) ポリシーを使用するかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

ランタイムがレガシ CAS ポリシーを使用するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|ランタイムはレガシ CAS ポリシーを使用しません。 これは、既定の設定です。| +|`true`|ランタイムはレガシ CAS ポリシーを使用します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| + +## 解説 + .NET Framework Version 3.5 以前のバージョンでは、CAS ポリシーが常に有効になります。 [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] では、CAS ポリシーを明示的に有効にする必要があります。 + + CAS ポリシーはバージョンに固有です。 旧バージョンの .NET Framework に存在するカスタム CAS ポリシーは、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] では再度指定する必要があります。 + + `` 要素を [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] アセンブリに適用しても、[透過的セキュリティ コード](../../../../../docs/framework/misc/security-transparent-code.md)には影響しません。透過性規則は引き続き適用されます。 + +> [!IMPORTANT] +> `` 要素を適用すると、[グローバル アセンブリ キャッシュ](../../../../../docs/framework/app-domains/gac.md)にインストールされていない、[ネイティブ イメージ ジェネレーター \(Ngen.exe\)](../../../../../docs/framework/tools/ngen-exe-native-image-generator.md) で作成されたネイティブ イメージのアセンブリでパフォーマンスが大幅に低下する可能性があります。 このパフォーマンスの低下が発生するのは、属性が適用されたときに、ランタイムがアセンブリをネイティブ イメージとして読み込むことができず、結果的に Just\-In\-Time アセンブリとして読み込まれるためです。 + +> [!NOTE] +> Visual Studio プロジェクトのプロジェクト設定で、対象となる .NET Framework のバージョンとして、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] より前のバージョンを指定する場合は、そのバージョン用に指定したすべてのカスタム CAS ポリシーを含む CAS ポリシーが有効になります。 ただし、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] の新しい型およびメンバーは使用できません。 また [アプリケーション構成ファイル](../../../../../docs/framework/configure-apps/index.md)でスタートアップ設定スキーマの [\ 要素](../../../../../docs/framework/configure-apps/file-schema/startup/supportedruntime-element.md) を使用して .NET Framework の旧バージョンを指定できます。 + +> [!NOTE] +> 構成ファイルの構文では、大文字と小文字が区別されます。 構文と例の各セクションで提供されている構文を使用する必要があります。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルでのみ使用できます。 + +## 使用例 + アプリケーションのレガシ CAS ポリシーを有効にする方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/netfx40-pinvokestackresilience-element.md b/docs/framework/configure-apps/file-schema/runtime/netfx40-pinvokestackresilience-element.md new file mode 100644 index 00000000000..1f292ca5073 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/netfx40-pinvokestackresilience-element.md @@ -0,0 +1,88 @@ +--- +title: "<NetFx40_PInvokeStackResilience> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "NetFx40_PInvokeStackResilience 要素" +ms.assetid: 39fb1588-72a4-4479-af74-0605233b68bd +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# <NetFx40_PInvokeStackResilience> 要素 +ランタイムが、マネージ コードとアンマネージ コードの間の切り替えを低速にしてでも、実行時に不適切なプラットフォーム呼び出し宣言を自動的に修正するかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

ランタイムが、32 ビット プラットフォームで実行時に不適切なプラットフォーム呼び出し宣言を検出し、スタックを自動的に修正するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`0`|ランタイムは、[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] で導入された、より高速な相互運用マーシャリング アーキテクチャを使用します。このアーキテクチャは、不適切なプラットフォーム呼び出し宣言を検出および修正しません。 これは、既定の設定です。| +|`1`|ランタイムは、不適切なプラットフォーム呼び出し宣言を検出および修正する、より低速な切り替えを使用します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| + +## 解説 + この要素を使用すると、より高速な相互運用マーシャリングを、不適切なプラットフォーム呼び出し宣言に対するランタイム回復と交換できます。 + + [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] 以降では、効率化された相互運用マーシャリング アーキテクチャによって、マネージ コードからアンマネージ コードへの切り替えのパフォーマンスが大幅に向上します。 旧バージョンの .NET Framework では、マーシャリング レイヤーは 32 ビット プラットフォームで不適切なプラットフォーム呼び出し宣言を検出し、スタックを自動的に修正しました。 新しいマーシャリング アーキテクチャでは、この手順が排除されます。 その結果、切り替えは非常に高速ですが、不適切なプラットフォーム呼び出し宣言によってプログラム エラーが発生することがあります。 + + 開発中に不適切な宣言を簡単に検出するために、Visual Studio デバッグ機能が強化されました。 [pInvokeStackImbalance](../../../../../docs/framework/debug-trace-profile/pinvokestackimbalance-mda.md) マネージ デバッグ アシスタント \(MDA\) は、アプリケーションにデバッガーがアタッチされて稼働しているときに、不適切なプラットフォーム呼び出し宣言を通知します。 + + 再コンパイルできず、不適切なプラットフォーム呼び出し宣言のあるコンポーネントをアプリケーションが使用する状況に対処するために、`NetFx40_PInvokeStackResilience` 要素を使用できます。 `enabled="1"` を指定してこの要素をアプリケーション構成ファイルに追加すると、切り替えは遅くなりますが、旧バージョンの .NET Framework の動作との互換モードを選択することができます。 旧バージョンの .NET Framework に対してコンパイルされたアセンブリでは、この互換モードが自動的に選択されるため、この要素は不要です。 + +## 構成ファイル + この要素は、アプリケーション構成ファイルでのみ使用できます。 + +## 使用例 + マネージ コードとアンマネージ コードの間の切り替えは低速になりますが、アプリケーションの不適切なプラットフォーム呼び出し宣言に対する回復を強化する方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [pInvokeStackImbalance](../../../../../docs/framework/debug-trace-profile/pinvokestackimbalance-mda.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/netfx45-cultureawarecomparergethashcode-longstrings-element.md b/docs/framework/configure-apps/file-schema/runtime/netfx45-cultureawarecomparergethashcode-longstrings-element.md new file mode 100644 index 00000000000..3e5d75c5ab3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/netfx45-cultureawarecomparergethashcode-longstrings-element.md @@ -0,0 +1,77 @@ +--- +title: "<NetFx45_CultureAwareComparerGetHashCode_LongStrings> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "NetFx45_CultureAwareComparerGetHashCode_LongStrings 要素" + - " 要素" + - "GetHashCode メソッド" + - "ハッシュ コード, 計算" +ms.assetid: 3a5f38d1-ebc8-44de-aaeb-2929f6e6b48f +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# <NetFx45_CultureAwareComparerGetHashCode_LongStrings> 要素 +ランタイムが メソッドで固定量のメモリを使用してハッシュ コードを計算するかどうかを指定します。 + + \ +\ +\ + +## 構文 + +```vb + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`enabled`|必須の属性です。

ハッシュ コードを計算するときに、共通言語ランタイムが固定メモリを割り当てるかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|0|共通言語ランタイムが メソッドに可変メモリを割り当ててハッシュ コードを計算します。 既定値です。| +|1|共通言語ランタイムが メソッドに固定メモリを割り当ててハッシュ コードを計算します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| + +## 解説 + 既定では、共通言語ランタイムが メソッドに可変メモリを割り当て、メソッドが非常に長い文字列 \(数メガバイト以上\) のハッシュ コードを計算しようとすると 例外がスローされることがあります。 この要素をアプリケーション構成ファイルに追加し、`enabled` 属性を 1 に設定すると、 メソッドでハッシュ コードの計算時に固定メモリを割り当てる別のアルゴリズムを使用することを指定できます。 + +> [!IMPORTANT] +> `` 要素は [!INCLUDE[win8](../../../../../includes/win8-md.md)] 以降のバージョンでは使用されません。 + +## 参照 + + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/prefercominsteadofmanagedremoting-element.md b/docs/framework/configure-apps/file-schema/runtime/prefercominsteadofmanagedremoting-element.md new file mode 100644 index 00000000000..ee47300049b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/prefercominsteadofmanagedremoting-element.md @@ -0,0 +1,84 @@ +--- +title: "<PreferComInsteadOfManagedRemoting> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "PreferComInsteadOfManagedRemoting 要素" +ms.assetid: a279a42a-c415-4e79-88cf-64244ebda613 +caps.latest.revision: 17 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 17 +--- +# <PreferComInsteadOfManagedRemoting> 要素 +アプリケーション ドメインの境界を越えるすべての呼び出しについて、リモート処理ではなく COM 相互運用機能をランタイムで使用するかどうかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

アプリケーション ドメインの境界を越える場合に、リモート処理ではなく COM 相互運用機能をランタイムで使用するかどうかを示します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|ランタイムは、アプリケーション ドメインの境界を越える場合にリモート処理を使用します。 これは、既定の設定です。| +|`true`|ランタイムは、アプリケーション ドメインの境界を越える場合に COM 相互運用機能を使用します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + `enabled` 属性を `true` に設定した場合、ランタイムの動作は次のようになります。 + +- ランタイムは [IManagedObject](../../../../../ocs/framework/unmanaged-api/hosting/imanagedobject-interface.md) インターフェイスをインターフェイスが [IUnknown](http://go.microsoft.com/fwlink/?LinkId=148003) COM インターフェイスを通じてドメインに入ったとき求めません [IUnknown::QueryInterface](http://go.microsoft.com/fwlink/?LinkID=144867)。 代わりに、オブジェクトを囲む[ランタイム呼び出し可能ラッパー](../../../../../docs/framework/interop/runtime-callable-wrapper.md) \(RCW: Runtime Callable Wrapper\) を構築します。 + +- このドメインで生成された [COM 呼び出し可能ラッパー](../../../../../docs/framework/interop/com-callable-wrapper.md) \(CCW: COM Callable Wrapper\) の [IManagedObject](../../../../../ocs/framework/unmanaged-api/hosting/imanagedobject-interface.md) インターフェイスの `QueryInterface` 呼び出しを受け取った場合、ランタイムは E\_NOINTERFACE を返します。 + + この 2 つの動作によって、アプリケーション ドメインの境界を越えるマネージ オブジェクト間での COM インターフェイスを介する呼び出しは、すべてリモート処理ではなく COM と COM 相互運用機能を使用するようになります。 + +## 使用例 + 次の例は、分離の境界を越える場合に、ランタイムで COM 相互運用機能が使用されるように指定する方法を示しています。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/probing-element.md b/docs/framework/configure-apps/file-schema/runtime/probing-element.md new file mode 100644 index 00000000000..0c7c4b95b78 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/probing-element.md @@ -0,0 +1,77 @@ +--- +title: "<probing> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/assemblyBinding/probing" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#probing" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンテナー タグ, 要素" + - "probing 要素" +ms.assetid: 09c80fc9-1ba5-4192-89f7-3a79b2e4b024 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# <probing> 要素 +アセンブリを読み込むときに、共通言語ランタイムが検索するアプリケーション ベース サブディレクトリを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`privatePath`|必須の属性です。

アセンブリが格納されているアプリケーションのベース ディレクトリのサブディレクトリを指定します。 サブディレクトリは、セミコロン \(;\) で区切ります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`assemblyBinding`|アセンブリ バージョンのリダイレクトおよびアセンブリの位置に関する情報が含まれます。| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 使用例 + ランタイムがアセンブリを検索するアプリケーション ベース サブディレクトリを指定する例を示します。 + +``` + + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [アセンブリの場所の指定](../../../../../docs/framework/configure-apps/specify-assembly-location.md) + [ランタイムがアセンブリを検索する方法](../../../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/publisherpolicy-element.md b/docs/framework/configure-apps/file-schema/runtime/publisherpolicy-element.md new file mode 100644 index 00000000000..3599dd7f919 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/publisherpolicy-element.md @@ -0,0 +1,97 @@ +--- +title: "<publisherPolicy> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/assemblyBinding/publisherPolicy" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/assemblyBinding/dependentAssembly/publisherPolicy" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#publisherPolicy" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンテナー タグ, 要素" + - "publisherPolicy 要素" +ms.assetid: 4613407e-d0a8-4ef2-9f81-a6acb9fdc7d4 +caps.latest.revision: 18 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 17 +--- +# <publisherPolicy> 要素 +ランタイムが発行者ポリシーを適用するかどうかを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`apply`|発行者ポリシーを適用するかどうかを指定します。| + +## apply 属性 + +|値|説明| +|-------|--------| +|`yes`|発行者ポリシーを適用します。 これは、既定の設定です。| +|`no`|発行者ポリシーを適用しません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + コンポーネントの販売元は、アセンブリの新しいバージョンをリリースするときに、以前のバージョンを使用していたアプリケーションが新しいバージョンを使用するように、発行者ポリシーを含めることができます。 指定するには、特定のアセンブリの発行者ポリシーを適用するかどうか **\** 要素に **\** 要素を含めます。 + + **apply** 属性の既定の設定は **yes** です。 **apply** 属性を **no** に設定すると、アセンブリに対して既に設定されていたすべての **yes** がオーバーライドされます。 + + アクセス許可はアプリケーションに明示的にアプリケーション構成ファイルの [\ + + + + +
+
+ +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [ランタイムがアセンブリを検索する方法](../../../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [アセンブリ バージョンのリダイレクト](../../../../../docs/framework/configure-apps/redirect-assembly-versions.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/qualifyassembly-element.md b/docs/framework/configure-apps/file-schema/runtime/qualifyassembly-element.md new file mode 100644 index 00000000000..5f3a9c11161 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/qualifyassembly-element.md @@ -0,0 +1,87 @@ +--- +title: "<qualifyAssembly> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#qualifyAssembly" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime/assemblyBinding/qualifyAssembly" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンテナー タグ, 要素" + - "qualifyAssembly 要素" +ms.assetid: ad6442f6-1a9d-43b6-b733-04ac1b7f9b82 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# <qualifyAssembly> 要素 +部分名が使用された場合に動的に読み込む必要があるアセンブリの完全名を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`partialName`|必須の属性です。

コード内で使用するアセンブリの部分名を指定します。| +|`fullName`|必須の属性です。

グローバル アセンブリ キャッシュ内で使用するアセンブリの完全名を指定します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`assemblyBinding`|アセンブリ バージョンのリダイレクトおよびアセンブリの位置に関する情報が含まれます。| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + 部分アセンブリ名を使用して メソッドを呼び出すと、共通言語ランタイムはアプリケーション ベース ディレクトリ内でのみアセンブリを検索します。 完全なアセンブリ情報 \(名前、バージョン、公開キー トークン、およびカルチャ\) を指定すると、共通言語ランタイムはグローバル アセンブリ キャッシュ内のアセンブリを捜させますアプリケーション構成ファイルで **\** 要素を使用します。 + + **fullName** 属性には、アセンブリを識別するための 4 つのフィールド \(名前、バージョン、公開キー トークン、およびカルチャ\) を含める必要があります。 **partialName** 属性は、アセンブリを部分的に参照します。 少なくともアセンブリのテキスト名を指定する必要がありますが \(これが最も一般的です\)、テキスト名だけでなく、バージョン、公開キー トークン、カルチャ、またはこれら 4 つの任意の組み合わせも指定できます。 **partialName** は、呼び出しで指定する名前と一致する必要があります。 たとえば、構成ファイル内の **partialName** 属性として `"math"` を指定した場合に、コード内で呼び出し `Assembly.Load("math, Version=3.3.3.3")` を指定することはできません。 + +## 使用例 + `Assembly.Load("math")` を `Assembly.Load("math,version=1.0.0.0,publicKeyToken=a1690a5ea44bab32,culture=neutral")` の呼び出しに論理的に変換する例を次に示します。 + +``` + + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [ランタイムがアセンブリを検索する方法](../../../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [NIB: Partial Assembly References](http://msdn.microsoft.com/ja-jp/ec90f07a-398c-4306-9401-0fc5ff9cb59f) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/relativebindforresources-element.md b/docs/framework/configure-apps/file-schema/runtime/relativebindforresources-element.md new file mode 100644 index 00000000000..a964dfca3c4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/relativebindforresources-element.md @@ -0,0 +1,83 @@ +--- +title: "<relativeBindForResources> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "RelativeBindForResources 要素" +ms.assetid: 846ffa47-7257-4ce3-8cac-7ff627e0e34f +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# <relativeBindForResources> 要素 +サテライト アセンブリのプローブを最適化します。 + +## 構文 + +```vb + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

共通言語ランタイムはサテライト アセンブリのプローブを最適化するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|ランタイムでは、サテライト アセンブリのプローブを最適化しません。 これが既定値です。| +|`true`|ランタイムでは、サテライト アセンブリのプローブを最適化します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| + +## 解説 + 一般に、リソース マネージャーは [リソースのパッケージ化と配置](../../../../../docs/framework/resources/packaging-and-deploying-resources-in-desktop-apps.md) のトピックで説明されているように、リソースの場合は、プローブします。 これは、リソース マネージャーがリソースのローカライズ バージョンのプローブと、サテライト アセンブリをアプリケーション コード ベースのカルチャ固有のフォルダーのグローバル アセンブリ キャッシュ、外観、クエリ Window インストーラーを表示することもできます。 イベントを発生させることを意味します。 `` 要素は、リソース マネージャーによってサテライト アセンブリのプローブ方法を最適化します。 これは、次の状況下でリソースのプローブとパフォーマンスが向上する場合: + +- サテライト アセンブリがコード アセンブリと同じ場所に配置されます。 つまり、コードのアセンブリがグローバル アセンブリ キャッシュにインストールされている場合、サテライト アセンブリは、そこにインストールする必要があります。 コードのアセンブリがアプリケーション コード ベースにインストールされている場合、サテライト アセンブリは、コード ベースのカルチャ固有のフォルダーにインストールする必要があります。 + +- Windows インストーラーでのサテライト アセンブリのオンデマンド インストールにほとんど使用されず、使用しない場合。 + +- アプリケーション コードが イベントを処理しない場合。 + + `true` へ `` 要素の `enabled` 属性を設定すると、次のようにサテライト アセンブリのリソース マネージャーのプローブを最適化します: + +- これはサテライト アセンブリのプローブに親コード アセンブリの場所が使用されます。 + +- これはサテライト アセンブリのクエリ Window インストーラー。 + +- これは イベントを発生させません。 + +## 参照 + [リソースのパッケージ化と配置](../../../../../docs/framework/resources/packaging-and-deploying-resources-in-desktop-apps.md) + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/remove-element-for-namedcaches.md b/docs/framework/configure-apps/file-schema/runtime/remove-element-for-namedcaches.md new file mode 100644 index 00000000000..020af16be44 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/remove-element-for-namedcaches.md @@ -0,0 +1,61 @@ +--- +title: "<namedCaches> の <remove> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "namedCaches の 要素" + - "namedCaches の remove 要素" +ms.assetid: 24211ea5-163e-4fe5-aed8-004d8499760c +caps.latest.revision: 10 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 10 +--- +# <namedCaches> の <remove> 要素 +メモリ キャッシュの `namedCaches` コレクションから、名前付きキャッシュ エントリを削除します。 + +## 構文 + +``` + + + + +``` + +## 型 + `None` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + `None` + +### 子要素 + `None` + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md)|名前付き インスタンスの構成設定のコレクションが含まれます。| + +## 解説 + `remove` 要素は、メモリ キャッシュの名前付きキャッシュ コレクションから `namedCache` エントリを削除します。 + +## 参照 + [\ 要素 \(キャッシュ設定\)](../../../../../docs/framework/configure-apps/file-schema/runtime/namedcaches-element-cache-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/runtime-element.md b/docs/framework/configure-apps/file-schema/runtime/runtime-element.md new file mode 100644 index 00000000000..25a0662bcc4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/runtime-element.md @@ -0,0 +1,143 @@ +--- +title: "<runtime> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#runtime" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/runtime" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンテナー タグ, 要素" + - "runtime 要素" +ms.assetid: 1eb2fae3-de4b-45b6-852f-517c39b751bd +caps.latest.revision: 70 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 62 +--- +# <runtime> 要素 +アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/alwaysflowimpersonationpolicy-element.md)|偽装の実行方法に関係なく、Windows ID が常に非同期ポイント間をフローするように指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagerassembly-element.md)|プロセスの既定のアプリケーション ドメインにアプリケーション ドメイン マネージャーを提供するアセンブリを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainmanagertype-element.md)|既定のアプリケーション ドメインのアプリケーション ドメイン マネージャーとして機能する型を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md)|プロセスの有効期間中、プロセス内のすべてのアプリケーション ドメインに関する統計情報を収集するようにランタイムに指示します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/assemblybinding-element-for-runtime.md)|アセンブリ バージョンのリダイレクトおよびアセンブリの位置に関する情報が含まれます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/bypasstrustedappstrongnames-element.md)|完全に信頼されているアセンブリの厳密な名前の検証をバイパスするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/compatsortnlsversion-element.md)|文字列比較の実行時に、ランタイムがレガシ並べ替え動作を使用するように指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/developmentmode-element.md)|DEVPATH 環境変数で指定されたディレクトリでランタイムがアセンブリを検索するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/disablecachingbindingfailures-element.md)|.NET Framework Version 2.0 の既定の動作であるバインディング エラーのキャッシュを無効にするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/disablecommitthreadstack-element.md)|スレッドの起動時にスレッド スタック全体をコミットするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/disablefusionupdatesfromadmanager-element.md)|アプリケーション ドメインの構成設定をランタイム ホストがオーバーライドできるという既定の動作を、無効にするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/enforcefipspolicy-element.md)|暗号アルゴリズムが連邦情報処理規格 \(FIPS: Federal Information Processing Standard\) に準拠することを必要とするコンピューターの構成要件を適用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/etwenable-element.md)|共通言語ランタイム イベントで Windows イベント トレーシング \(ETW\) を有効にするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/forceperformancecounteruniquesharedmemoryreads-element.md)|PerfCounter.dll がカテゴリ固有の共有メモリとグローバル メモリのどちらからパフォーマンス カウンター データを読み込むかを判断するために .NET Framework Version 1.1 アプリケーションの CategoryOptions レジストリ設定を使用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcallowverylargeobjects-element.md)|64 ビット プラットフォームで、合計サイズが 2 GB \(ギガバイト\) を超える配列を有効にします。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)|共通言語ランタイムがガベージ コレクションを並列に実行するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/gccpugroup-element.md)|ガベージ コレクションが複数の CPU グループをサポートするかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)|共通言語ランタイムがサーバーのガベージ コレクションを実行するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/generatepublisherevidence-element.md)|ランタイムがコード アクセス セキュリティ \(CAS: Code Access Security\) 発行者ポリシーを使用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/legacycorruptedstateexceptionspolicy-element.md)|ランタイムでアクセス違反やその他の破損状態の例外をマネージ コードがキャッチできるかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/legacyimpersonationpolicy-element.md)|現在のスレッドの実行コンテキストのフロー設定に関係なく、Windows ID が非同期ポイント間をフローしないように指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/loadfromremotesources-element.md)|リモート ソースからのアセンブリを完全信頼アセンブリとして読み込むかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/netfx40-legacysecuritypolicy-element.md)|ランタイムがレガシ コード アクセス セキュリティ \(CAS: Code Access Security\) ポリシーを使用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/netfx40-pinvokestackresilience-element.md)|ランタイムが、マネージ コードとアンマネージ コードの間の切り替えを低速にしてでも、実行時に不適切なプラットフォーム呼び出し宣言を自動的に修正するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/netfx45-cultureawarecomparergethashcode-longstrings-element.md)| のメソッドのハッシュ コードを計算するためにランタイムが固定メモリを使用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/prefercominsteadofmanagedremoting-element.md)|ランタイムでアプリケーション ドメインの境界を越えたリモート処理ではなく COM 相互運用機能が使用されることを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/relativebindforresources-element.md)|サテライト アセンブリのプローブを最適化します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md)|シャドウ コピーの動作を、[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] で導入された既定の起動動作にするか、旧バージョンの .NET Framework の起動動作に戻すかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/supportportability-element.md)|.NET Framework の 2 つの異なる実装にある同じアセンブリを 1 つのアプリケーションから参照できるように、既定の動作を無効にすることができます。既定の動作では、アプリケーションの移植性を高めるために、このようなアセンブリは同等のものとして扱われます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/system-runtime-caching-element-cache-settings.md)|既定のメモリ内オブジェクト キャッシュの構成情報を提供します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/thread-useallcpugroups-element.md)|ランタイムによって、すべての CPU グループにマネージ スレッドを分散するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element.md)|未処理の例外を実行中のプロセスを停止する必要があるかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/runtime-element.md)|ランタイムで 値に書式設定のレガシ動作を使用するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/userandomizedstringhashalgorithm-element.md)|ランタイムがアプリケーション ドメインごとに文字列のハッシュ コードを計算するかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/usesmallinternalthreadstacks-element.md)|ランタイムで内部的に使用する特定のスレッドを作成するときに、既定のスタック サイズではなく明示的なスタック サイズを使用することを要求します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| + +## 解説 + .NET Framework Version 2.0 では、アプリケーション ドメイン内の非同期ポイント間で偽装 ID がフローします。 .NET Framework Version 2.0 では、machine.config ファイルまたはアプリケーションの構成ファイルでランタイム要素を適切に構成することで、非同期ポイント間の偽装のフローを有効または無効にできます。 ASP.NET の場合、偽装のフローは Windows \<\>Folder\\Microsoft.NET\\Framework\\vx.x.xxxx のディレクトリにある aspnet.config ファイルで構成できます。 + + 既定では、ASP.NET は、aspnet.config ファイルに次の構成設定が使用されて偽装フローが無効になります。 + +``` +configuration> + + + + + +``` + + ASP.NET で偽装のフローを可能にする場合は、次の構成設定を明示的に使用する必要があります。 + +``` + + + + + + +``` + + 詳細については、「[\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/legacyimpersonationpolicy-element.md)」および「[\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/alwaysflowimpersonationpolicy-element.md)」を参照してください。 + +## 使用例 + あるアセンブリ バージョンを別のバージョンにリダイレクトする例を示します。 + +``` + + + + + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [アセンブリ バージョンのリダイレクト](../../../../../docs/framework/configure-apps/redirect-assembly-versions.md) + [How to: Disable Concurrent Garbage Collection](http://msdn.microsoft.com/ja-jp/ba2c6c67-5778-497c-9fac-5f793b5500c7) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md b/docs/framework/configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md new file mode 100644 index 00000000000..946830091aa --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/shadowcopyverifybytimestamp-element.md @@ -0,0 +1,79 @@ +--- +title: "<shadowCopyVerifyByTimestamp> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "shadowCopyTimeStampVerification 要素" +ms.assetid: 2f1648e5-997b-435e-a4f9-d236c574c66c +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# <shadowCopyVerifyByTimestamp> 要素 +シャドウ コピーの動作を、[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] で導入された既定の起動動作にするか、旧バージョンの .NET Framework の起動動作に戻すかを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|enabled|必須の属性です。

アセンブリをシャドウ コピーする前にそのアセンブリが更新されているかどうかを確認するため、起動時に、シャドウ コピーを使用するアプリケーション ドメインでアセンブリのタイム スタンプを比較するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|true|起動時、シャドウ コピー ディレクトリに前回コピーされたときから更新されているアセンブリのみをコピーします。 これは [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] の既定値です。| +|false|以前のバージョンの .NET Framework の起動動作に戻します。この場合、起動時にすべてのファイルがコピーされます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] 以降では、アセンブリがシャドウ コピーされるのは、アセンブリがシャドウ コピー ディレクトリに前回コピーされたときから変更されていることがタイム スタンプからわかる場合だけです。 この方法では、シャドウ コピーを使用するアプリケーションの多くで起動時間が速くなります。詳細については、「[アセンブリのシャドウ コピー](../../../../../docs/framework/app-domains/shadow-copy-assemblies.md)」を参照してください。 アセンブリが更新される割合や頻度が高いアプリケーションでは、この動作の変更による利点がないこともあります。 この場合、.NET Framework の以前のバージョンの動作を復元するには、この要素を使用します。 + +## 使用例 + [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] のシャドウ コピーの既定の起動動作を無効にし、以前のバージョンの .NET Framework の起動動作に戻す方法を、次の例に示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [アセンブリのシャドウ コピー](../../../../../docs/framework/app-domains/shadow-copy-assemblies.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/supportportability-element.md b/docs/framework/configure-apps/file-schema/runtime/supportportability-element.md new file mode 100644 index 00000000000..352edf6eb20 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/supportportability-element.md @@ -0,0 +1,88 @@ +--- +title: "<supportPortability> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "supportPortability 要素" +ms.assetid: 6453ef66-19b4-41f3-b712-52d0c2abc9ca +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# <supportPortability> 要素 +.NET Framework の 2 つの異なる実装にある同じアセンブリを 1 つのアプリケーションから参照できるように、既定の動作を無効にすることができます。既定の動作では、アプリケーションの移植性を高めるために、このようなアセンブリは同等のものとして扱われます。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|PKT|必須の属性です。

対象となるアセンブリの公開キー トークンを文字列で指定します。| +|enabled|省略可能な属性。

指定した .NET Framework アセンブリの複数の実装間での移植性に対するサポートを有効にするかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|true|指定した .NET Framework アセンブリの複数の実装間での移植性に対するサポートを有効にします。 これは、既定の設定です。| +|false|指定した .NET Framework アセンブリの複数の実装間での移植性に対するサポートを無効にします。 この場合、指定したアセンブリの複数の実装をアプリケーションで参照できます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| +|`assemblyBinding`|アセンブリ バージョンのリダイレクトおよびアセンブリの位置に関する情報が含まれます。| + +## 解説 + [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降では、.NET Framework の実装と .NET Framework for Silverlight の実装のどちらかなど、.NET Framework の 2 つの実装のうちどちらでも使用できるアプリケーションが自動的にサポートされます。 特定の .NET Framework アセンブリの 2 つの実装は、アセンブリ バインダーで同等と見なされます。 一部のシナリオでは、アプリケーションの移植性を高めるためのこの機能が問題になります。 そのようなシナリオでは、`` 要素を使用して、この機能を無効にすることができます。 + + 一例として、特定の参照アセンブリの .NET Framework の実装と .NET Framework for Silverlight の実装の両方を参照する必要があるアセンブリが挙げられます。 たとえば、WPF \(Windows Presentation Foundation\) で作成された XAML デザイナーにおいて、デザイナーのユーザー インターフェイスとして WPF デスクトップの実装を参照すると共に、Silverlight の実装に組み込まれている WPF のサブセットも参照する必要がある場合があります。 既定では、この 2 つのアセンブリはアセンブリ バインディングで同等と見なされるため、別々に参照するとコンパイラ エラーが発生します。 この要素を使用すると、既定の動作を無効にし、コンパイルを正常に実行できます。 + +> [!IMPORTANT] +> コンパイラから共通言語ランタイムのアセンブリ バインディング ロジックに情報を渡すには、`/appconfig` コンパイラ オプションを使用して、この要素を含む app.config ファイルの場所を指定する必要があります。 + +## 使用例 + .NET Framework と .NET Framework for Silverlight の両方の実装に存在する .NET Framework アセンブリについて、その両方の実装をアプリケーションで参照できるようにする例を次に示します。 `/appconfig` コンパイラ オプションを使用して、この app.config ファイルの場所を指定する必要があります。 + +``` + + + + + + + + +``` + +## 参照 + [\/appconfig \(C\# コンパイラ オプション\)](http://msdn.microsoft.com/library/ee523958.aspx) + [.NET Framework Assembly Unification Overview](http://msdn.microsoft.com/ja-jp/8d8cc65e-031d-463b-bde3-2c6dc2e3bc48) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/system-runtime-caching-element-cache-settings.md b/docs/framework/configure-apps/file-schema/runtime/system-runtime-caching-element-cache-settings.md new file mode 100644 index 00000000000..bbe24f4cd3e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/system-runtime-caching-element-cache-settings.md @@ -0,0 +1,87 @@ +--- +title: "<system.runtime.caching> 要素 (キャッシュ設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "キャッシュ [.NET Framework], 構成" + - "system.runtime.caching 要素" +ms.assetid: 9b44daee-874a-4bd1-954e-83bf53565590 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# <system.runtime.caching> 要素 (キャッシュ設定) +構成ファイル内の `memoryCache` エントリを使用して既定のメモリ内の の実装の構成を提供します。 + + \ +\ + +## 構文 + +``` + +    + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + `None` + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md)| クラスに基づくキャッシュを構成するために使用される要素を定義します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md)|共通言語ランタイムおよび [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] アプリケーションで使用されるすべての構成ファイルのルート要素です。| + +## 解説 + この名前空間のクラスは、ASP.NET のキャッシュ機能と同様のキャッシュ機能を使用する方法を提供しますが、`System.Web` アセンブリに依存しません。 詳細については、「[.NET Framework アプリケーションでのキャッシュ](../../../../../docs/framework/performance/caching-in-net-framework-applications.md)」を参照してください。 + +> [!NOTE] +> 名前空間の出力キャッシュ機能と型は、[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] の新機能です。 + +## 使用例 + 次の例では、 クラスを元にしたキャッシュの構成方法を紹介します。 この例では、メモリ キャッシュ用の `namedCaches` エントリのインスタンスの構成を方法を示します。 キャッシュの名前は、`name` 属性を "default" に設定することによって、既定のキャッシュ エントリ名に設定されます。 + + `cacheMemoryLimitMegabytes` 属性および `physicalMemoryPercentage` 属性はゼロに設定されます。 これらの属性をゼロに設定すると、 の自動サイズ調整ヒューリスティックが既定で使用されることになります。 キャッシュの実装では、現在のメモリ負荷と絶対およびパーセントのメモリ制限を 2 分ごとに比較する必要があります。 + +``` + + + + + + + + + +``` + +## 参照 + [\ 要素 \(キャッシュ設定\)](../../../../../docs/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/thread-useallcpugroups-element.md b/docs/framework/configure-apps/file-schema/runtime/thread-useallcpugroups-element.md new file mode 100644 index 00000000000..eba82f1dcc4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/thread-useallcpugroups-element.md @@ -0,0 +1,79 @@ +--- +title: "<Thread_UseAllCpuGroups> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: d30fe7c5-8469-46e2-b804-e3eec7b24256 +caps.latest.revision: 6 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 6 +--- +# <Thread_UseAllCpuGroups> 要素 +ランタイムによって、すべての CPU グループにマネージ スレッドを分散するかどうかを指定します。 + +## 構文 + +```vb + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

ランタイムによって、すべての CPU グループにマネージ スレッドを分散するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|ランタイムは、複数の CPU グループにマネージ スレッドを分散しません。 これは、既定の設定です。| +|`true`|コンピューターに複数の CPU グループがあり、[\](../../../../../docs/framework/configure-apps/file-schema/runtime/gccpugroup-element.md) 要素が有効になっている場合、ランタイムは、複数の CPU グループにマネージ スレッドを分散します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + コンピューターに複数の CPU グループがある場合、この要素を有効にすると、ランタイムは、すべての CPU グループにマネージ スレッドを分散します。 この機能を使用するには、すべての CPU のグループにガベージ コレクションを拡張し、ヒープの作成時および調整時にすべてのコアを考慮する [\](../../../../../docs/framework/configure-apps/file-schema/runtime/gccpugroup-element.md) 要素も有効にする必要があります。 [\](../../../../../docs/framework/configure-apps/file-schema/runtime/gccpugroup-element.md) 要素を有効にするには、[\](../../../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md) 要素も有効にする必要があります。 これらの要素が有効でない場合、`` 要素を有効にしても効力はありません。 + +## 使用例 + 次の例は、複数の CPU グループのサポートを有効にする方法を示しています。 + +``` + + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/gccpugroup-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element.md b/docs/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element.md new file mode 100644 index 00000000000..1cd89d4af3d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element.md @@ -0,0 +1,99 @@ +--- +title: "<ThrowUnobservedTaskExceptions> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "ThrowUnobservedTaskExceptions 要素" +ms.assetid: cea7e588-8b8d-48d2-9ad5-8feaf3642c18 +caps.latest.revision: 6 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 6 +--- +# <ThrowUnobservedTaskExceptions> 要素 +未処理の例外を実行中のプロセスを停止する必要があるかどうかを指定します。 + +## 構文 + +```vb + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

未処理の例外を実行中のプロセスを停止する必要があるかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|未処理の例外の実行中のプロセスを終了することはありません。 これは、既定の設定です。| +|`true`|未処理の例外の実行中のプロセスを終了します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| +||| + +## 解説 + に関連付けられている例外が確認されていない場合、 操作がない、親が接続されておらず、 のタスクの Exception プロパティは無視して見なされますに読み込まれません。 + + [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)]で、 が無視された例外があるガベージ コレクションに既定で、ファイナライザーが例外をスローし、プロセスが終了します。 プロセスの終了がガベージ コレクションと終了のタイミングによって決まります。 + + 開発者がタスクに基づく非同期コードを記述できる [!INCLUDE[net_v45](../../../../../includes/net-v45-md.md)] が変更された無視された例外に対してこの既定の動作を、を簡単にするには、 無視された例外は、 イベントを発生させますが既定で、プロセスは終了しません。 代わりに、例外がイベント ハンドラーが例外を確認するかどうかをイベントが発生させた後に関係なく、無視されます。 + + [!INCLUDE[net_v45](../../../../../includes/net-v45-md.md)]のアプリケーション構成ファイルで例外をスローする可能性の [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] の動作を有効にするために [\ 要素](../../../../../docs/framework/configure-apps/file-schema/runtime/throwunobservedtaskexceptions-element.md) を使用できます。 + + また、次の 1 種類の例外の動作を指定する: + +- 環境変数 `COMPlus_ThrowUnobservedTaskExceptions` \(`set COMPlus_ThrowUnobservedTaskExceptions=1`\) に設定します。 + +- レジストリ ThrowUnobservedTaskExceptions DWORD 値を設定して \= HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\.NETFramework キーの 1。 + +## 使用例 + 次の例では、アプリケーション構成ファイルを使用してタスクの例外をスローするようにする方法を示します。 + +``` + + + + + + +``` + +## 使用例 + 無視された例外がタスクからスローされるかを次の例に示します。 コードは、解放されたプログラムとして正しく動作するために実行する必要があります。 + + [!code-csharp[ThrowUnobservedTaskExceptions#1](../../../../../samples/snippets/csharp/VS_Snippets_CLR/throwunobservedtaskexceptions/cs/program.cs#1)] + [!code-vb[ThrowUnobservedTaskExceptions#1](../../../../../samples/snippets/visualbasic/VS_Snippets_CLR/throwunobservedtaskexceptions/vb/program.vb#1)] + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/timespan-legacyformatmode-element.md b/docs/framework/configure-apps/file-schema/runtime/timespan-legacyformatmode-element.md new file mode 100644 index 00000000000..2ef690db70d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/timespan-legacyformatmode-element.md @@ -0,0 +1,101 @@ +--- +title: "<TimeSpan_LegacyFormatMode> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "TimeSpan_LegacyFormatMode 要素" +ms.assetid: 865e7207-d050-4442-b574-57ea29d5e2d6 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# <TimeSpan_LegacyFormatMode> 要素 + 値による書式設定操作のレガシ動作をランタイムで維持するかどうかを決定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

値による書式設定のレガシ動作をランタイムで使用するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`false`|書式設定のレガシ動作はランタイムで復元されません。| +|`true`|書式設定のレガシ動作がランタイムで復元されます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| + +## 解説 + [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降の 構造体は、 インターフェイスを実装し、標準およびカスタム書式指定文字列を使用した書式設定操作をサポートするようになっています。 解析メソッドでサポート対象外の書式指定子または書式指定文字列が検出されると、 がスローされます。 + + 以前のバージョンの .NET Framework では、 構造体は、 を実装せず、書式指定文字列をサポートしていませんでした。 ただし、開発者の多くは、 が一連の書式指定文字列をサポートしていると誤って認識し、 などのメソッドでの[複合書式指定の操作](../../../../../docs/standard/base-types/composite-formatting.md)に書式指定文字列を使用していました。 通常、型が を実装し、書式指定文字列をサポートしている場合、サポート対象外の書式指定文字列を使用して書式指定メソッドを呼び出すと、 がスローされます。 ただし、 を実装しなかったため、ランタイムでは書式指定文字列が無視され、代わりに メソッドが呼び出されていました。 つまり、書式設定操作で書式指定文字列を使用しても効果はありませんでしたが、 も発生しませんでした。 + + レガシ コードによって複合書式指定メソッドと無効な書式指定文字列が渡され、そのコードを再コンパイルできない場合、`` 要素を使用して のレガシ動作を復元できます。 この要素の `enabled` 属性を `true` に設定すると、複合書式指定メソッドにより ではなく、 が呼び出され、 はスローされません。 + +## 使用例 + 次の例では、 オブジェクトをインスタンス化し、サポート対象外の標準書式指定文字列を使用して メソッドでそのインスタンスの書式設定を試みています。 + + [!code-csharp[TimeSpan.BreakingChanges#1](../../../../../samples/snippets/csharp/VS_Snippets_CLR/timespan.breakingchanges/cs/legacyformatmode1.cs#1)] + [!code-vb[TimeSpan.BreakingChanges#1](../../../../../samples/snippets/visualbasic/VS_Snippets_CLR/timespan.breakingchanges/vb/legacyformatmode1.vb#1)] + + [!INCLUDE[net_v35_short](../../../../../includes/net-v35-short-md.md)] またはそれ以前のバージョンで例を実行すると、次のように出力されます。 + +``` +12:30:45 +``` + + これは、出力と [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降のバージョンの例を実行すると大きく異なる: + +``` +Invalid Format +``` + + ただし、例のディレクトリに次の構成ファイルを追加し、[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降のバージョンの例を実行すると、出力は [!INCLUDE[net_v35_short](../../../../../includes/net-v35-short-md.md)]で例を実行したで生成されたデータと同じです。 + +``` + + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/userandomizedstringhashalgorithm-element.md b/docs/framework/configure-apps/file-schema/runtime/userandomizedstringhashalgorithm-element.md new file mode 100644 index 00000000000..265d7a00d5b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/userandomizedstringhashalgorithm-element.md @@ -0,0 +1,110 @@ +--- +title: "<UseRandomizedStringHashAlgorithm> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "UseRandomizedStringHashAlgorithm 要素" +ms.assetid: c08125d6-56cc-4b23-b482-813ff85dc630 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# <UseRandomizedStringHashAlgorithm> 要素 +共通言語ランタイムがアプリケーション ドメインごとに文字列のハッシュ コードを計算するかどうかを判定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`enabled`|必須の属性です。

アプリケーション ドメインごとに文字列のハッシュ コードを計算するかどうかを指定します。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|`0`|共通言語ランタイムは、アプリケーション ドメインごとに文字列のハッシュ コードを計算しません。1 つのアルゴリズムを使用して文字列のハッシュ コードを計算します。 これは、既定の設定です。| +|`1`|共通言語ランタイムは、アプリケーション ドメインごとに文字列のハッシュ コードを計算します。 異なるアプリケーション ドメインや異なるプロセスで同一の文字列のハッシュ コードは異なります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|ランタイム初期化オプションに関する情報を含んでいます。| + +## 解説 + 既定では、 のクラスと のメソッドは、アプリケーション ドメイン間で一貫したハッシュ コードを生成する単一のハッシュ アルゴリズムを使用します。 これは、`` 要素の `enabled` 属性を `0` に設定することと同じです。 これは [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] で使用されるハッシュ アルゴリズムです。 + + クラスと メソッドは、別のハッシュ アルゴリズムを使用してアプリケーション ドメインごとのハッシュ コードを計算することもできます。 その結果、同じ文字列のハッシュ コードが、アプリケーション ドメイン間で異なります。 これはオプトイン機能であり、この機能を利用するには、`` 要素の `enabled` 属性を `1` に設定する必要があります。 + + ハッシュ テーブルの文字列検索は、通常 O\(1\) 操作です。 ただし、多くの競合が発生すると、検索は O\(n2\) 操作になることがあります。 特にハッシュ コードを計算するキーがユーザーによる入力データに基づいている場合、`` 構成要素を使用して、アプリケーション ドメインごとにランダムなハッシュ アルゴリズムを生成でき、潜在的な競合の数を制限できます。 + +## 使用例 + 次の例では、値が「This is a string.」であるプライベート文字列定数 `s` を含む `DisplayString` クラスを定義します。また、メソッドを実行しているアプリケーション ドメインの名前と共に文字列値とハッシュ コードを表示する `ShowStringHashCode` メソッドも含まれています。 + + [!code-csharp[System.String.GetHashCode#2](../../../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.String.GetHashCode/CS/perdomain.cs#2)] + [!code-vb[System.String.GetHashCode#2](../../../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.String.GetHashCode/VB/perdomain.vb#2)] + + 構成ファイルを指定せずにこの例を実行すると、次のような出力が表示されます。 文字列のハッシュ コードが 2 つアプリケーション ドメインで同じであることに注意してください。 + +``` + +String 'This is a string.' in domain 'PerDomain.exe': 941BCEAC +String 'This is a string.' in domain 'NewDomain': 941BCEAC + +``` + + ただし、例のディレクトリに次の構成ファイルを追加して例を実行すると、同じ文字列のハッシュ コードがアプリケーション ドメインによって異なります。 + +``` + + + + + + + + +``` + + 構成ファイルが存在する場合、次の出力が表示されます。 + +``` + +String 'This is a string.' in domain 'PerDomain.exe': 5435776D +String 'This is a string.' in domain 'NewDomain': 75CC8236 + +``` + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/runtime/usesmallinternalthreadstacks-element.md b/docs/framework/configure-apps/file-schema/runtime/usesmallinternalthreadstacks-element.md new file mode 100644 index 00000000000..d44d209e0c0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/runtime/usesmallinternalthreadstacks-element.md @@ -0,0 +1,83 @@ +--- +title: "<UseSmallInternalThreadStacks> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "UseSmallInternalThreadStacks 要素" +ms.assetid: 1e3f6ec0-1cac-4e1c-9c81-17d948ae5874 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# <UseSmallInternalThreadStacks> 要素 +共通言語ランタイム \(CLR: Common Language Runtime\) で内部的に使用する特定のスレッドを作成するときに、それらのスレッドに既定のスタック サイズを使用せずに、明示的なスタック サイズを指定してメモリ使用量を減らすことを要求します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|enabled|必須の属性です。

CLR で内部的に使用する特定のスレッドを作成するときに、既定のスタック サイズではなく明示的なスタック サイズを使用することを要求するかどうかを指定します。 明示的なスタック サイズは、既定のスタック サイズの 1 MB よりも小さい値になります。| + +## enabled 属性 + +|値|説明| +|-------|--------| +|true|明示的なスタック サイズを要求します。| +|false|既定のスタック サイズを使用します。 これは [!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] の既定値です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`runtime`|アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。| + +## 解説 + この構成要素は、プロセスでの仮想メモリ使用量を減らすことを要求するために使用します。CLR で内部スレッドに使用する明示的なスタック サイズは、要求が受け入れられる場合、既定のサイズよりも小さくなります。 + +> [!IMPORTANT] +> この構成要素は CLR に対する要求であり、絶対要件ではありません。 [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] では、この要求は x86 アーキテクチャについてのみ受け入れられます。 この要素は、CLR の将来のバージョンでは完全に無視されるか、選択した内部スレッドに対して常に使用される明示的なスタック サイズに置き換えられる可能性があります。 + + この構成要素を指定すると、要求が受け入れられる場合は仮想メモリ使用量を減らすことができる一方で、スタック サイズが小さくなるとスタック オーバーフローが発生する可能性が高くなるため、信頼性が低下します。 + +## 使用例 + CLR で内部的に使用する特定のスレッドに明示的なスタック サイズを使用することを要求する方法を、次の例に示します。 + +``` + + + + + +``` + +## 参照 + [ランタイム設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/startup/TOC.md b/docs/framework/configure-apps/file-schema/startup/TOC.md new file mode 100644 index 00000000000..c2a4d360039 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/startup/TOC.md @@ -0,0 +1,4 @@ +# [ 要素](requiredruntime-element.md) +# [ 要素](startup-element.md) +# [ 要素](supportedruntime-element.md) +# [スタートアップ設定スキーマ](index.md) diff --git a/docs/framework/configure-apps/file-schema/startup/index.md b/docs/framework/configure-apps/file-schema/startup/index.md new file mode 100644 index 00000000000..2eb30f614e6 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/startup/index.md @@ -0,0 +1,39 @@ +--- +title: "スタートアップ設定スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "構成スキーマ [.NET Framework], スタートアップ設定" + - "スキーマ スタートアップ設定" + - "スタートアップ設定スキーマ" +ms.assetid: 03de6972-442a-4648-9f3e-efa654e3b949 +caps.latest.revision: 10 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 10 +--- +# スタートアップ設定スキーマ +スタートアップ設定で、アプリケーションを実行する共通言語ランタイムのバージョンが指定されます。 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/startup/requiredruntime-element.md)|共通言語ランタイムのバージョン 1.0 だけがアプリケーションでサポートされることを指定します。 ランタイム バージョン 1.1 で作成されたアプリケーションは **\** 要素を使用する必要があります。| +|[\](../../../../../docs/framework/configure-apps/file-schema/startup/supportedruntime-element.md)|アプリケーションでサポートされる共通言語ランタイムのバージョンを指定します。| +|[\<スタートアップ\>](../../../../../docs/framework/configure-apps/file-schema/startup/startup-element.md)|**\** と **\** 要素が含まれています。| + +## 参照 + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [\ Specifying Which Runtime Version to Use](http://msdn.microsoft.com/ja-jp/c376208d-980d-42b4-865b-fbe0d9cc97c2) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/startup/requiredruntime-element.md b/docs/framework/configure-apps/file-schema/startup/requiredruntime-element.md new file mode 100644 index 00000000000..c8b3e008114 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/startup/requiredruntime-element.md @@ -0,0 +1,95 @@ +--- +title: "<requiredRuntime> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#requiredRuntime" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/startup/requiredRuntime" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンテナー タグ, 要素" + - "requiredRuntime 要素" +ms.assetid: 9fa1639e-beb8-43be-b7a4-12f7b229c34b +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# <requiredRuntime> 要素 +共通言語ランタイムのバージョン 1.0 だけがアプリケーションでサポートされることを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`version`|省略可能な属性。

このアプリケーションがサポートする .NET Framework のバージョンを指定する文字列値。 文字列値は、.NET Framework のインストール ルートの下にあるディレクトリの名前に一致する必要があります。 文字列値の内容は、解析されません。| +|`safemode`|省略可能な属性。

ランタイム スタートアップ コードが、レジストリを検索してランタイムのバージョンを判断するかどうかを指定します。| + +## safemode 属性 + +|値|説明| +|-------|--------| +|`false`|ランタイム スタートアップ コードはレジストリを検索します。 これが既定値です。| +|`true`|ランタイム スタートアップ コードはレジストリを検索しません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`startup`|`` 要素を含みます。| + +## 解説 + ランタイムのバージョン 1.0 のみをサポートするようにビルドされたアプリケーションでは、`` 要素を使用する必要があります。 ランタイムのバージョン 1.1 以降を使用してビルドされたアプリケーションでは、`` 要素を使用する必要があります。 + +> [!NOTE] +> [CorBindToRuntimeByCfg](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimebycfg-function.md) 関数を使用して構成ファイルを指定する場合は、すべてのバージョンのランタイムに `` 要素を使用する必要があります。 [CorBindToRuntimeByCfg](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimebycfg-function.md) を使用すると、`` 要素は無視されます。 + + `version` 属性文字列は、指定したバージョンの .NET Framework のインストール フォルダー名と一致する必要があります。 この文字列は解釈されません。 ランタイム スタートアップ コードで一致するフォルダーが見つからなかった場合、ランタイムは読み込まれません。スタートアップ コードはエラー メッセージを表示し、終了します。 + +> [!NOTE] +> Microsoft Internet Explorer でホストされるアプリケーションのスタートアップ コードは、`` 要素を無視します。 + +## 使用例 + 構成ファイルでランタイムのバージョンを指定する例を示します。 + +``` + + + + + +``` + +## 参照 + [スタートアップ設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/startup/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [\ Specifying Which Runtime Version to Use](http://msdn.microsoft.com/ja-jp/c376208d-980d-42b4-865b-fbe0d9cc97c2) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/startup/startup-element.md b/docs/framework/configure-apps/file-schema/startup/startup-element.md new file mode 100644 index 00000000000..0ff6929b00a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/startup/startup-element.md @@ -0,0 +1,105 @@ +--- +title: "<startup> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/startup" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#startup" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "コンテナー タグ, 要素" + - "startup 要素" +ms.assetid: 536acfd8-f827-452f-838a-e14fa3b87621 +caps.latest.revision: 19 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 19 +--- +# <startup> 要素 +共通言語ランタイムのスタートアップ情報を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`useLegacyV2RuntimeActivationPolicy`|省略可能な属性。

[!INCLUDE[dnprdnext](../../../../../includes/dnprdnext-md.md)] のランタイムのアクティブ化ポリシーを有効にするか、[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] のアクティブ化ポリシーを使用するかを指定します。| + +## useLegacyV2RuntimeActivationPolicy 属性 + +|値|説明| +|-------|--------| +|`true`|選択されたランタイムで [!INCLUDE[dnprdnext](../../../../../includes/dnprdnext-md.md)] のランタイムのアクティブ化ポリシーを有効にし、ランタイムの上限を CLR バージョン 2.0 とするのではなく、レガシのランタイムのアクティブ化手法 \([CorBindToRuntimeEx 関数](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimeex-function.md)など\) を、構成ファイルから選択されたランタイムにバインドするようにします。 これにより、構成ファイルから CLR バージョン 4 またはそれ以降が選択された場合、それ以前のバージョンの .NET Framework で作成された混合モード アセンブリは、選択された CLR バージョンで読み込まれます。 この値を設定すると、CLR バージョン 1.1 または CLR バージョン 2.0 が同じプロセスに読み込まれなくなり、インプロセスの side\-by\-side 機能は事実上無効になります。| +|`false`|[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] およびそれ以降の既定のアクティブ化ポリシーを使用し、レガシのランタイムのアクティブ化手法で CLR バージョン 1.1 または 2.0 をプロセスに読み込むことができるようにします。 この値を設定すると、.NET Framework 4 以降に読み込まれなく .NET Framework 4 以降でビルドされていない限り、混合モード アセンブリは行われません。 この値が既定値です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/startup/requiredruntime-element.md)|共通言語ランタイムのバージョン 1.0 だけがアプリケーションでサポートされることを指定します。 ランタイムのバージョン 1.1 以降でビルドされたアプリケーションは **\** 要素を使用する必要があります。| +|[\](../../../../../docs/framework/configure-apps/file-schema/startup/supportedruntime-element.md)|アプリケーションでサポートされる共通言語ランタイムのバージョンを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| + +## 解説 + ランタイムのバージョン 1.1 以降を使用して構築されたすべてのアプリケーションでは、**\** 要素を使用する必要があります。 ランタイムのバージョン 1.0 をサポートするアプリケーションでは、**\** 要素を使用する必要があります。 + + Microsoft Internet Explorer でホストされるアプリケーションのスタートアップ コードは **\** 要素およびその子要素は無視されます。 + +## useLegacyV2RuntimeActivationPolicy 属性 + アプリケーションで [CorBindToRuntimeEx 関数](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimeex-function.md)などのレガシ アクティブ化パスが使用されていて、これらのパスで CLR の以前のバージョンではなくバージョン 4 をアクティブ化する場合、または、アプリケーションは [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] でビルドされているが、以前のバージョンの .NET Framework でビルドされた混合モードのアセンブリに対する依存関係がある場合、この属性は便利です。 このようなシナリオでは、属性を `true` に設定します。 + +> [!NOTE] +> 属性を `true` に設定すると、CLR バージョン 1.1 または CLR バージョン 2.0 が同じプロセスに読み込まれなくなり、インプロセスの side\-by\-side 機能は事実上無効になります \(「[Side\-by\-Side Execution for COM Interop](http://msdn.microsoft.com/ja-jp/4302318c-3586-49bf-8620-b9a39cdf4a32)」を参照\)。 + +## 使用例 + 構成ファイルでランタイムのバージョンを指定する例を示します。 + +``` + + + + + + + + + + + + + +``` + +## 参照 + [スタートアップ設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/startup/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [\ Specifying Which Runtime Version to Use](http://msdn.microsoft.com/ja-jp/c376208d-980d-42b4-865b-fbe0d9cc97c2) + [Side\-by\-Side Execution for COM Interop](http://msdn.microsoft.com/ja-jp/4302318c-3586-49bf-8620-b9a39cdf4a32) + [インプロセスの side\-by\-side 実行](../../../../../docs/framework/deployment/in-process-side-by-side-execution.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/startup/supportedruntime-element.md b/docs/framework/configure-apps/file-schema/startup/supportedruntime-element.md new file mode 100644 index 00000000000..4465f802cea --- /dev/null +++ b/docs/framework/configure-apps/file-schema/startup/supportedruntime-element.md @@ -0,0 +1,135 @@ +--- +title: "<supportedRuntime> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#supportedRuntime" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/startup/supportedRuntime" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "supportedRuntime 要素" +ms.assetid: 1ae16e23-afbe-4de4-b413-bc457f37b69f +caps.latest.revision: 33 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 28 +--- +# <supportedRuntime> 要素 +アプリケーションでサポートされる共通言語ランタイムのバージョンを指定します。 バージョン 1.1 以降の .NET Framework で構築されたすべてのアプリケーションでは、この要素を使用する必要があります。 + + [\](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/startup/startup-element.md) + + **\** + +## 構文 + +``` + + +``` + +## 属性 + +|属性|説明| +|--------|--------| +|**version**|省略可能な属性です。

このアプリケーションがサポートする共通言語ランタイム \(CLR: Common Language Runtime\) のバージョンを指定する文字列値。`version` 属性の有効な値については、「["ランタイム バージョン" の値](#version)」セクションを参照してください。 **Note:** .NET Framework 3.5 では、"*ランタイム バージョン*" の値は「*メジャー*.*マイナー*.*ビルド*」の形式になります。[!INCLUDE[net_v40_long](../../../../../includes/net-v40-long-md.md)] 以降では、必要となるのはメジャー バージョン番号とマイナー バージョン番号のみです \(つまり、"v4.0.30319" ではなく "v4.0"\)。 短い文字列を使用することをお勧めします。| +|**sku**|省略可能な属性です。

在庫管理単位 \(SKU\) を指定する文字列の値。SKU はこのアプリケーションがサポートする .NET Framework リリースを指定します。

.NET Framework 4.0 以降では、`sku` 属性の使用が推奨されます。 この属性が指定される場合は、アプリケーションが対象とする .NET Framework のバージョンを示します。

SKU 属性の有効な値については、「["sku id" の値](#sku)」セクションを参照してください。| + +## 解説 + アプリケーション構成ファイルに **\** 要素がない場合は、アプリケーションの構築に使われたランタイムのバージョンが使用されます。 + + ランタイムのバージョン 1.1 以降を使用して構築されたすべてのアプリケーションでは、**\** 要素を使用する必要があります。 ランタイムのバージョン 1.0 をサポートするアプリケーションでは、[\](../../../../../docs/framework/configure-apps/file-schema/startup/requiredruntime-element.md) 要素を使用する必要があります。 + +> [!NOTE] +> [CorBindToRuntimeByCfg](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimebycfg-function.md) 関数を使用して構成ファイルを指定する場合は、すべてのバージョンのランタイムに `` 要素を使用する必要があります。[CorBindToRuntimeByCfg](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimebycfg-function.md) を使用すると、`` 要素は無視されます。 + + NET Framework 1.1 から 3.5 までのランタイムの複数のバージョンをサポートするアプリケーションでは、ランタイムの複数のバージョンをサポートする場合は、最初の要素で最も優先度の高いバージョンを指定し、最後の要素で最も優先度の低いバージョンを指定する必要があります。 .NET Framework 4.0 以降のバージョンをサポートするアプリケーションでは、`version` 属性は .NET Framework 4 以降のバージョンで共通の CLR バージョンを示します。`sku` 属性は、アプリケーションが対象とする単一の .NET Framework バージョンを示します。 + +> [!NOTE] +> アプリケーションで [CorBindToRuntimeEx 関数](../../../../../ocs/framework/unmanaged-api/hosting/corbindtoruntimeex-function.md)などのレガシ アクティブ化パスが使用されていて、これらのパスで CLR の以前のバージョンではなくバージョン 4 をアクティブ化する場合、または、アプリケーションは [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] でビルドされているが、以前のバージョンの .NET Framework でビルドされた混合モードのアセンブリに対する依存関係がある場合、サポートされるランタイムの一覧で [!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] を指定するだけでは十分ではありません。 さらに、構成ファイル内の [\ 要素](../../../../../docs/framework/configure-apps/file-schema/startup/startup-element.md)で、`useLegacyV2RuntimeActivationPolicy` 属性を `true` に設定する必要があります。 ただし、この属性を `true` に設定することは、以前のバージョンの .NET Framework でビルドされたすべてのコンポーネントが、それらのビルドに使用されたランタイムではなく、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] を使用して実行されることを意味します。 + + アプリケーションは、そのアプリケーションを実行できる .NET Framework のすべてのバージョンでテストすることをお勧めします。 + + +## "ランタイム バージョン" の値 + 次の表は、`version` 属性の "*ランタイム バージョン*" に指定可能な値の一覧です。 + +|.NET Framework のバージョン|`version` 属性| +|---------------------------|------------------| +|1.0|"v1.0.3705"| +|1.1|"v1.1.4322"| +|2.0|"v2.0.50727"| +|3.0|"v2.0.50727"| +|3.5|"v2.0.50727"| +|4.0|"v4.0"| +|4.5|"v4.0"| +|4.5.1|"v4.0"| +|4.5.2|"v4.0"| +|4.6|"v4.0"| +|4.6.1|"v4.0"| + + +## "sku id" の値 + 次の表は、`sku` 属性がサポートする .NET Framework 4 以降の .NET Framework のバージョンの一覧です。 .NET Framework 4 以降の `sku` 属性は、アプリケーションが対象とする .NET Framework のバージョンを示す点に注意してください。 + +|.NET Framework のバージョン|`sku` 属性| +|---------------------------|--------------| +|4.0|".NETFramework,Version\=v4.0"| +|4.0、Client Profile|".NETFramework,Version\=v4.0,Profile\=Client"| +|4.0、プラットフォームの更新プログラム 1|.NETFramework,Version\=v4.0.1| +|4.0、Client Profile、更新プログラム 1|.NETFramework,Version\=v4.0.1,Profile\=Client| +|4.0、プラットフォームの更新プログラム 2|.NETFramework,Version\=v4.0.2| +|4.0、Client Profile、更新プログラム 2|.NETFramework,Version\=v4.0.2,Profile\=Client| +|4.0、プラットフォームの更新プログラム 3|.NETFramework,Version\=v4.0.3| +|4.0、Client Profile、更新プログラム 3|.NETFramework,Version\=v4.0.3,Profile\=Client| +|4.5|".NETFramework,Version\=v4.5"| +|4.5.1|".NETFramework,Version\=v4.5.1"| +|4.5.2|".NETFramework,Version\=v4.5.2"| +|4.6|".NETFramework,Version\=v4.6"| +|4.6.1|".NETFramework,Version\=v4.6.1"| + + 次の表に、`version` 属性が v4.0 であり、`sku` 属性が NET Framework 4 またはそのプラットフォーム更新プログラム \(PU\) のいずれかを示す場合に、さまざまな `sku` 属性の値について、アプリケーションが実行されるインストール済みの .NET Framework 4 のバージョンを示します。 + +|`sku` 属性の値|4.0 Client|4.0 Full|4.0 Client \+ PU 1|4.0 Full \+ PU 1|4.0 Client \+ PU 2|4.0 Full \+ PU 2|4.0 Client \+ PU 3|4.0 Full \+ PU 3|4.5 以降| +|----------------|----------------|--------------|------------------------|----------------------|------------------------|----------------------|------------------------|----------------------|------------| +|.NETFramework,Version\=v4.0,Profile\=Client|はい|はい|はい|はい|はい|はい|はい|はい|はい| +|.NETFramework,Version\=v4.0||はい||はい||はい||はい|はい| +|.NETFramework,Version\=v4.0.1,Profile\=Client|||はい|はい|はい|はい|はい|はい|はい| +|.NETFramework,Version\=v4.0.1||||はい||はい||はい|はい| +|.NETFramework,Version\=v4.0.2,Profile\=Client|||||はい|はい|はい|はい|はい| +|.NETFramework,Version\=v4.0.2||||||はい||はい|はい| +|.NETFramework,Version\=v4.0.3,Profile\=Client|||||||はい|はい|はい| +|.NETFramework,Version\=v4.0.3||||||||はい|はい| + +## 使用例 + サポートされているランタイムのバージョンを構成ファイルで指定する例を次に示します。 この構成ファイルは、アプリケーションが .NET Framework 4.6 を対象としていることを示します。 + +```xml + + + +``` + +## 構成ファイル + この要素は、アプリケーション構成ファイルで使用できます。 + +## 参照 + [スタートアップ設定スキーマ](../../../../../docs/framework/configure-apps/file-schema/startup/index.md) + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) + [\ 使用するランタイム バージョンの指定](http://msdn.microsoft.com/ja-jp/c376208d-980d-42b4-865b-fbe0d9cc97c2) + [インプロセスの side\-by\-side 実行](../../../../../docs/framework/deployment/in-process-side-by-side-execution.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/TOC.md b/docs/framework/configure-apps/file-schema/trace-debug/TOC.md new file mode 100644 index 00000000000..69898195b93 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/TOC.md @@ -0,0 +1,22 @@ +# [](assert-element.md) +# [](source-element.md) +# [](filter-element-for-add-for-listeners-for-trace.md) +# [](sharedlisteners-element.md) +# [](sources-element.md) +# [](clear-element-for-listeners-for-trace.md) +# [](performancecounters-element.md) +# [](listeners-element-for-source.md) +# [](remove-element-for-listeners-for-trace.md) +# [](add-element-for-listeners-for-trace.md) +# [](filter-element-for-add-for-sharedlisteners.md) +# [](trace-element.md) +# [](clear-element-for-listeners-for-source.md) +# [](add-element-for-switches.md) +# [](switches-element.md) +# [](add-element-for-listeners-for-source.md) +# [](remove-element-for-listeners-for-source.md) +# [](system-diagnostics-element.md) +# [トレースおよびデバッグ設定のスキーマ](index.md) +# [](add-element-for-sharedlisteners.md) +# [](filter-element-for-add-for-listeners-for-source.md) +# [](listeners-element-for-trace.md) diff --git a/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-source.md b/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-source.md new file mode 100644 index 00000000000..29930c79866 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-source.md @@ -0,0 +1,130 @@ +--- +title: "<source> の <listeners> の <add> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/sources/source/listeners/add" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の add 要素" + - "initializeData 属性" +ms.assetid: 4ce36ac1-81ef-48e8-b8b2-b5a5b0e2adcb +caps.latest.revision: 15 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 15 +--- +# <source> の <listeners> の <add> 要素 +トレース ソース用の `Listeners` コレクションにリスナーを追加します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`type`|必須の属性です。

リスナーの型を指定します。 「[完全修飾型名の指定](../../../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md)」で指定されている要件を満たす文字列を使用する必要があります。| +|`initializeData`|省略可能な属性。

指定したクラスのコンストラクターに渡す文字列。 文字列を受け取るコンストラクターがクラスにない場合は、 がスローされます。| +|`name`|省略可能な属性。

リスナーの名前を指定します。| +|`traceOutputOptions`|省略可能な属性。

トレース リスナーの プロパティ値を指定します。| +|\[カスタム属性\]|省略可能な属性です。

このリスナーの メソッドで識別されるリスナー固有の属性の値を指定します。 は、 クラスに固有の追加属性の例です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-listeners-for-source.md)|トレース ソースの `Listeners` コレクション内のリスナーにフィルターを追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`sources`|トレース メッセージを開始するトレース ソースを保持します。| +|`source`|トレース メッセージを開始するトレース ソースを指定します。| +|`listeners`|メッセージを収集、格納、およびルーティングするリスナーを指定します。| + +## 解説 + .NET Framework に付属のリスナー クラスは、 クラスの派生クラスです。 + + トレース リスナーの `name` 属性を指定しない場合は、トレース リスナーの プロパティは、既定で空の文字列 \(""\) に設定されます。 アプリケーションにリスナーが 1 つしかない場合、名前を指定しなくてもリスナーを追加でき、名前に空の文字列を指定してリスナーを削除できます。 ただし、アプリケーションに複数のリスナーがある場合は、各トレース リスナーの一意の名前を指定する必要があります。これにより、 コレクション内の個別のトレース リスナーを識別および管理できます。 + +> [!NOTE] +> 同じ名前を持つ同じ型のトレース リスナーを複数追加すると、その型と名前を持つトレース リスナーが 1 つだけ `Listeners` コレクションに追加されます。 ただし、プログラムを使用すると、複数の同一のリスナーを `Listeners` コレクションに追加できます。 + + `initializeData` 属性の値は、作成するリスナーの型によって異なります。 `initializeData` を指定する必要のないトレース リスナーもあります。 + +> [!NOTE] +> `initializeData` 属性を使用すると、"initializeData 属性は宣言されていません" というコンパイラの警告が表示される場合があります。この警告は、`initializeData` 属性を認識しない 抽象基本クラスに対して構成設定が検証されたために発生します。 通常、パラメーターを受け取るコンストラクターのあるトレース リスナーの実装では、この警告を無視してもかまいません。 + + .NET Framework に付属するトレース リスナーを次の表に示し、各リスナーの `initializeData` 属性の値を説明します。 + +|トレース リスナー クラス|initializeData 属性の値| +|-------------------|-------------------------| +|| コンストラクターの `useErrorStream` 値。`initializeData` 属性を "`true`" に設定すると、トレース出力とデバッグ出力を標準エラー出力ストリームに書き込みます。"`false`" に設定すると、標準出力ストリームに書き込みます。| +|| が出力を書き込むファイルの名前。| +||既存のイベント ログ ソースの名前。| +|| が出力を書き込むファイルの名前。| +|| が出力を書き込むファイルの名前。| +|| が出力を書き込むファイルの名前。| + +## 構成ファイル + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + `` 要素を使用して、リスナー `console` および `textListener` をトレース リソース `TraceSourceApp` の `Listeners` コレクションに追加する方法を次の例に示します。 `textListener` リスナーは、トレース出力を myListener.log ファイルに書き込みます。 + +``` + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + [Trace Listeners](../../../../../docs/framework/debug-trace-profile/trace-listeners.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-trace.md b/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-trace.md new file mode 100644 index 00000000000..161e8176b39 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-trace.md @@ -0,0 +1,117 @@ +--- +title: "<trace> の <listeners> の <add> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/trace/listeners/add" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の add 要素" + - "initializeData 属性" +ms.assetid: 81e804a3-ef11-4d39-bbde-bfa012c179e2 +caps.latest.revision: 24 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 22 +--- +# <trace> の <listeners> の <add> 要素 +**Listeners** コレクションにリスナーを追加します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|**type**|必須の属性です。

リスナーの型を指定します。 「[完全修飾型名の指定](../../../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md)」に指定されている要件に合った文字列を使用する必要があります。| +|**initializeData**|省略可能な属性。

指定したクラスのコンストラクターに渡す文字列。| +|**name**|省略可能な属性。

リスナーの名前を指定します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-listeners-for-trace.md)|トレース用の `Listeners` コレクションのリスナーにフィルターに追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`listeners`|メッセージを収集、格納、およびルーティングするリスナーを指定します。 リスナーは、トレース出力を適切なターゲットに転送します。| +|`system.diagnostics`|ASP.NET 構成セクションのルート要素を指定します。| +|`trace`|トレース メッセージを収集、格納、およびルーティングするリスナーを保持します。| + +## 解説 + クラスおよび クラスは、同じ **Listeners** コレクションを共有します。 これらのクラスの一方のコレクションにリスナー オブジェクトを追加すると、もう一方のクラスは同じリスナーを使用します。 リスナー クラスは、[TraceListener クラス](frlrfSystemDiagnosticsTraceListenerClassTopic)の派生クラスです。 + + トレース リスナーの `name` 属性を指定しない場合は、トレース リスナーの は、既定で空の文字列 \(""\) に設定されます。 アプリケーションにリスナーが 1 つしかない場合、名前を指定しなくてもリスナーを追加でき、名前に空の文字列を指定してリスナーを削除できます。 ただし、アプリケーションに複数のリスナーがある場合は、各トレース リスナーの一意の名前を指定する必要があります。これにより、 および コレクション内の個別のトレース リスナーを識別および管理できます。 + +> [!NOTE] +> 同じ名前を持つ同じ型のトレース リスナーを複数追加すると、その型と名前を持つトレース リスナーが 1 つだけ `Listeners` コレクションに追加されます。 ただし、プログラムを使用すると、複数の同一のリスナーを `Listeners` コレクションに追加できます。 + + **initializeData** 属性の値は、作成するリスナーの型によって異なります。 **initializeData** を指定する必要のないトレース リスナーもあります。 + +> [!NOTE] +> `initializeData` 属性を使用すると、"initializeData 属性は宣言されていません" というコンパイラの警告が表示される場合があります。この警告は、`initializeData` 属性を認識しない 抽象基本クラスに対して構成設定が検証されたために発生します。 通常、パラメーターを受け取るコンストラクターのあるトレース リスナーの実装では、この警告を無視してもかまいません。 + + .NET Framework に付属するトレース リスナーを次の表に示し、各リスナーの **initializeData** 属性の値を説明します。 + +|トレース リスナー クラス|initializeData 属性の値| +|-------------------|-------------------------| +|| コンストラクターの `useErrorStream` 値。`initializeData` 属性を "`true`" に設定すると、トレースとデバッグの出力を に書き込みます。"`false`" に設定すると、 に書き込みます。| +|| が出力を書き込むファイルの名前。| +||既存のイベント ログ ソースの名前。| +|| が出力を書き込むファイルの名前。| +|| が出力を書き込むファイルの名前。| +|| が出力を書き込むファイルの名前。| + +## 使用例 + 次の例に **リスナー** のコレクションにリスナーを追加するには `MyListener` と `MyEventListener`**\<追加\>** 要素を使用する方法を示します。 `MyListener` は、`MyListener.log` というファイルを作成し、そのファイルに出力を書き込みます。 `MyEventListener` は、イベント ログにエントリを作成します。 + +``` + + + + + + + + + + + +``` + +## 参照 + + + + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + [Trace Listeners](../../../../../docs/framework/debug-trace-profile/trace-listeners.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-sharedlisteners.md b/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-sharedlisteners.md new file mode 100644 index 00000000000..29d2115c796 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-sharedlisteners.md @@ -0,0 +1,119 @@ +--- +title: "<sharedListeners> の <add> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/sharedListeners/add" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の add 要素" + - "initializeData 属性" +ms.assetid: 1595e1bc-2492-421f-8384-7f382eb8eb57 +caps.latest.revision: 13 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# <sharedListeners> の <add> 要素 +`sharedListeners` コレクションにリスナーを追加します。 `sharedListeners` は、任意の [\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/source-element.md) または [\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/trace-element.md) が参照できるリスナーのコレクションです。既定では、`sharedListeners` コレクションのリスナーは `Listeners` コレクションに配置されません。 これらは、[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/source-element.md) または [\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/trace-element.md) に名前で追加する必要があります。 実行時に、`sharedListeners` コレクションのリスナーをコードで取得することはできません。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`name`|必須の属性です。

共有リスナーを `Listeners` コレクションに追加するために使用されるリスナーの名前を指定します。| +|`type`|必須の属性です。

リスナーの型を指定します。 「[完全修飾型名の指定](../../../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md)」で指定されている要件を満たす文字列を使用する必要があります。| +|`initializeData`|省略可能な属性。

指定したクラスのコンストラクターに渡す文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-sharedlisteners.md)|フィルターを `sharedListeners` コレクションのリスナーに追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`sharedListeners`|任意の source 要素または trace 要素が参照できるリスナーのコレクション。| + +## 解説 + .NET Framework に付属のリスナー クラスは、 クラスの派生クラスです。 `name` 属性の値は、トレースまたはトレース ソースの `Listeners` コレクションに共有リスナーを追加するために使用されます。 `initializeData` 属性の値は、作成するリスナーの型によって異なります。 `initializeData` を指定する必要のないトレース リスナーもあります。 + +> [!NOTE] +> `initializeData` 属性を使用すると、"initializeData 属性は宣言されていません" というコンパイラの警告が表示される場合があります。この警告は、`initializeData` 属性を認識しない 抽象基本クラスに対して構成設定が検証されたために発生します。 通常、パラメーターを受け取るコンストラクターのあるトレース リスナーの実装では、この警告を無視してもかまいません。 + + .NET Framework に付属するトレース リスナーを次の表に示し、各リスナーの `initializeData` 属性の値を説明します。 + +|トレース リスナー クラス|initializeData 属性の値| +|-------------------|-------------------------| +|| コンストラクターの `useErrorStream` 値。`initializeData` 属性を "`true`" に設定すると、トレース出力とデバッグ出力を標準エラー出力ストリームに書き込みます。"`false`" に設定すると、標準出力ストリームに書き込みます。| +|| が出力を書き込むファイルの名前。| +||既存のイベント ログ ソースの名前。| +|| が出力を書き込むファイルの名前。| +|| が出力を書き込むファイルの名前。| +|| が出力を書き込むファイルの名前。| + +## 構成ファイル + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + 次の例に `sharedListeners` のコレクションに `textListener` を追加するには `` 要素を使用する方法を示します。`textListener` にトレース ソース `TraceSourceApp`の `Listeners` のコレクションに名前で追加されます。 `textListener` リスナーは、トレース出力を myListener.log ファイルに書き込みます。 + +``` + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + [Trace Listeners](../../../../../docs/framework/debug-trace-profile/trace-listeners.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-switches.md b/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-switches.md new file mode 100644 index 00000000000..b6139aaf738 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/add-element-for-switches.md @@ -0,0 +1,81 @@ +--- +title: "<switches> の <add> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/switches/add" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の add 要素" +ms.assetid: 712ac3a7-7abf-4a9e-8db4-acd241c2f369 +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 9 +--- +# <switches> の <add> 要素 +トレース スイッチを設定するレベルを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|**name**|必須の属性です。

スイッチの名前を指定します。 この属性の値は、スイッチ コンストラクターに渡される *displayName* パラメーターと一致します。| +|**値**|必須の属性です。

スイッチのレベルを指定します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`switches`|トレース スイッチとトレース スイッチを設定するレベルを保持します。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| + +## 解説 + トレース スイッチのレベルは、構成ファイル内に配置することにより変更できます。 スイッチが の場合は、スイッチのオン\/オフを切り替えることができます。 スイッチが の場合は、スイッチにさまざまなレベルを割り当てて、アプリケーションが出力するトレース メッセージまたはデバッグ メッセージの型を指定できます。 + +## 使用例 + 次の例に `General` トレースを設定するには **\<追加\>** 要素を使用する方法をに切り替え [TraceLevel.Error](frlrfSystemDiagnosticsTraceLevelClassTopic) レベルを有効にします `Data` ブール トレース スイッチを示します。 + +``` + + + + + + + + +``` + +## 参照 + + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/assert-element.md b/docs/framework/configure-apps/file-schema/trace-debug/assert-element.md new file mode 100644 index 00000000000..3a66e5188ae --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/assert-element.md @@ -0,0 +1,83 @@ +--- +title: "<assert> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/assert" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#assert" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "assert 要素" +ms.assetid: ef4c3229-b151-4d85-8091-e6456af9b935 +caps.latest.revision: 9 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 9 +--- +# <assert> 要素 + メソッドの呼び出し時にメッセージ ボックスを表示するかどうかを指定し、メッセージの書き込み先のファイルの名前も指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`assertuienabled`|省略可能な属性。

**Debug.Assert** メソッドが **false** になったときにメッセージ ボックスを表示するかどうかを指定します。| +|`logfilename`|省略可能な属性。

**Debug.Assert** が **false** になった場合のメッセージの書き込み先のファイルの名前を指定します。| + +## assertuienabled 属性 + +|値|説明| +|-------|--------| +|`true`|メッセージ ボックスを表示します。 これは、既定の設定です。| +|`false`|メッセージ ボックスを表示しません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| + +## 解説 + **\** 要素の属性は、両方とも省略可能です。 メッセージの書き込み先のファイルを指定せずにメッセージ ボックスを無効にするか、またはメッセージ ボックスを有効なままにして、メッセージの書き込み先のファイルを指定できます。 + +## 使用例 + **Debug.Assert** の呼び出し時のメッセージ ボックス表示を無効にし、メッセージを `c:\log.txt` に書き込む方法を次の例に示します。 + +``` + + + + + +``` + +## 参照 + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-source.md b/docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-source.md new file mode 100644 index 00000000000..689bf69da0b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-source.md @@ -0,0 +1,96 @@ +--- +title: "<source> の <listeners> の <clear> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/sources/source/listeners/clear" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の clear 要素" +ms.assetid: 76796bb2-9c0b-4526-8135-8bf18b16d8d9 +caps.latest.revision: 7 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 7 +--- +# <source> の <listeners> の <clear> 要素 +トレース ソースの `Listeners` コレクションを削除します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`sources`|トレース メッセージを開始するトレース ソースを保持します。| +|`source`|トレース メッセージを開始するトレース ソースを指定します。| +|`listeners`|メッセージを収集、格納、およびルーティングするリスナーを指定します。| + +## 解説 + `` 要素は、 を含め、トレース ソースの `Listeners` コレクションからすべてのリスナーを削除します。 `` 要素を使用する前に、`` 要素を使用すると、コレクション内に他にアクティブなリスナーがないことを確認できます。 + +## 構成ファイル + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + `` 要素を使用してリスナー `console` と `textListener` をトレース ソース `TraceSourceApp` の `Listeners` コレクションに追加する前に、`` 要素を使用する方法を次の例に示します。 + +``` + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + [Trace Listeners](../../../../../docs/framework/debug-trace-profile/trace-listeners.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-trace.md b/docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-trace.md new file mode 100644 index 00000000000..c303cb0d5d6 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-trace.md @@ -0,0 +1,93 @@ +--- +title: "<trace> の <listeners> の <clear> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/trace/listeners/clear" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の clear 要素" +ms.assetid: b44732a8-271f-4a06-ba9e-fe3298d6f192 +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# <trace> の <listeners> の <clear> 要素 +トレースの `Listeners` コレクションを削除します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`trace`|トレース メッセージを収集、格納、およびルーティングするリスナーを保持します。| +|`listeners`|メッセージを収集、格納、およびルーティングするリスナーを保持します。 リスナーは、トレース出力を適切なターゲットに転送します。| + +## 解説 + `` 要素は、トレースの `Listeners` コレクションからすべてのリスナーを削除します。 `` 要素を使用する前に、`` 要素を使用すると、コレクション内に他にアクティブなリスナーがないことを確認できます。 + + プロパティ \(`System.Diagnostics.Trace.Listeners.Clear()`\) で メソッドを呼び出すことにより、プログラムで `Listeners` コレクションを削除できます。 + + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +> [!NOTE] +> `` 要素は、`Listeners` コレクションから を削除することで、、および の各メソッドの動作を変更します。 `Assert` メソッドまたは `Fail` メソッドを呼び出すと、通常はメッセージ ボックスが表示されます。 ただし、`Listeners` コレクションに がない場合は、メッセージ ボックスが表示されません。 + +## 使用例 + `` 要素を使用してリスナー `console` をトレースの `Listeners` コレクションに追加する前に、`` 要素を使用する方法を次の例に示します。 + +``` + + + + + + + + + + + + +``` + +## 参照 + + + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + [\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-trace.md) + [Trace Listeners](../../../../../docs/framework/debug-trace-profile/trace-listeners.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-listeners-for-source.md b/docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-listeners-for-source.md new file mode 100644 index 00000000000..287770d3659 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-listeners-for-source.md @@ -0,0 +1,102 @@ +--- +title: "<source> の <listeners> の <add> の <filter> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#filter" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/sources/source/listeners/add/filter" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素 ()" + - "filter 要素 ()" + - "initializeData 属性" +ms.assetid: 15808b80-4579-4c25-b385-178cfdf154ba +caps.latest.revision: 7 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 7 +--- +# <source> の <listeners> の <add> の <filter> 要素 +トレース ソースの `Listeners` コレクション内のリスナーにフィルターを追加します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`type`|必須の属性です。

クラスを継承するフィルターの型を指定します。 指定する型の プロパティに対応する型の名前空間修飾名を使用するか、 プロパティに対応する、アセンブリ情報を含む完全修飾型名を使用できます。 完全修飾型名については、「[完全修飾型名の指定](../../../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md)」を参照してください。| +|`initializeData`|省略可能な属性。

指定したフィルター クラスのコンストラクターに渡す文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`sources`|トレース メッセージを開始するトレース ソースを保持します。| +|`source`|トレース メッセージを開始するトレース ソースを指定します。| +|`listeners`|メッセージを収集、格納、およびルーティングするリスナーを保持します。 リスナーは、トレース出力を適切なターゲットに転送します。| +|`add`|トレース ソース用の `Listeners` コレクションにリスナーを追加します。| + +## 解説 + `` 要素は、[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/sharedlisteners-element.md) で定義されているリスナーの名前だけでなく、リスナーの型を指定するトレース ソース リスナーの `` 要素に含まれている必要があります。 リスナーが [\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/sharedlisteners-element.md) で定義されている場合は、そのリスナーのフィルターをその要素内で定義する必要があります。 + + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + `` 要素を使用して、トレース ソース `myTraceSource` の `Listeners` コレクション内のリスナー `console` にフィルターを追加する方法を次の例に示します。フィルター イベント レベルは、`Error` として指定します。 + +``` + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-listeners-for-trace.md b/docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-listeners-for-trace.md new file mode 100644 index 00000000000..2b5fbb7e139 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-listeners-for-trace.md @@ -0,0 +1,94 @@ +--- +title: "<trace> の <listeners> の <add> の <filter> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/trace/listeners/add/filter" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素 ()" + - "filter 要素 ()" + - "initializeData 属性" +ms.assetid: eb9c18f5-dfa8-47c5-b91b-e4b93e76e1cc +caps.latest.revision: 9 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 9 +--- +# <trace> の <listeners> の <add> の <filter> 要素 +トレース用の `Listeners` コレクションのリスナーにフィルターに追加します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`type`|必須の属性です。

クラスを継承するフィルターの型を指定します。 指定する型の プロパティに対応する型の名前空間修飾名を使用するか、 プロパティに対応する、アセンブリ情報を含む完全修飾型名を使用できます。 完全修飾型名については、「[完全修飾型名の指定](../../../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md)」を参照してください。| +|`initializeData`|省略可能な属性。

指定したフィルター クラスのコンストラクターに渡す文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`trace`|トレース メッセージを収集、格納、およびルーティングするリスナーを保持します。| +|`listeners`|メッセージを収集、格納、およびルーティングするリスナーを保持します。 リスナーは、トレース出力を適切なターゲットに転送します。| +|`add`|`Listeners` コレクションにリスナーを追加します。| + +## 解説 + `` 要素は、[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/sharedlisteners-element.md) で定義されているリスナーの名前だけでなく、リスナーの型を指定するトレース リスナーの `` 要素に含まれている必要があります。 リスナーが [\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/sharedlisteners-element.md) で定義されている場合は、そのリスナーのフィルターをその要素内で定義する必要があります。 + + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + `` 要素を使用して、トレースのための `Listeners` コレクション内のリスナー `console` にフィルターを追加する方法を次の例に示します。フィルター イベント レベルは、`Error` として指定します。 + +``` + + + + + + + + + + + + +``` + +## 参照 + + + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-sharedlisteners.md b/docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-sharedlisteners.md new file mode 100644 index 00000000000..2511e66ef96 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-sharedlisteners.md @@ -0,0 +1,98 @@ +--- +title: "<sharedListeners> の <add> の <filter> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/sharedListeners/add/filter" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の filter 要素" + - "フィルター, トレース リスナー" + - "initializeData 属性" + - "トレース リスナー, フィルター" +ms.assetid: 7d4e7faa-2e4e-4379-ac76-f6cd7f2f8fac +caps.latest.revision: 7 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 7 +--- +# <sharedListeners> の <add> の <filter> 要素 +フィルターを `sharedListeners` コレクションのリスナーに追加します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|**type**|必須の属性です。

フィルターの型を指定します。 型の完全名 \( プロパティの形式\) のみ使用できます。または、アセンブリ情報を含む完全修飾型名 \( プロパティの形式\) を使用することもできます。 完全修飾型名の作成の詳細については、「[完全修飾型名の指定](../../../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md)」を参照してください。| +|**initializeData**|省略可能な属性。

指定したクラスのコンストラクターに渡す文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`sharedListeners`|任意の source 要素または trace 要素が参照できるリスナーのコレクション。| +|`add`|**sharedListeners** コレクションにリスナーを追加します。| + +## 解説 + リスナーが `` 要素の `` 要素で定義されている場合、そのリスナーのフィルターは `` 要素の子である `` 要素で定義する必要があります。 + + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + `` 要素を使用してフィルターを `sharedListeners` コレクション内のトレース リスナー `console` に追加する方法を次の例に示します。 + +``` + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/index.md b/docs/framework/configure-apps/file-schema/trace-debug/index.md new file mode 100644 index 00000000000..141521b0e36 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/index.md @@ -0,0 +1,66 @@ +--- +title: "トレースおよびデバッグ設定のスキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "構成スキーマ [.NET Framework], トレースおよびデバッグの設定" + - "構成のセクション [.NET Framework]" + - "構成の設定 [.NET Framework], デバッグ" + - "構成の設定 [.NET Framework], トレース" + - "要素 [.NET Framework], トレースおよびデバッグの設定" + - "スキーマ構成の設定" + - "トレース リスナー, トレースおよびデバッグ設定のスキーマ" + - "トレース [.NET Framework], トレースおよびデバッグ設定のスキーマ" +ms.assetid: 277ca5f6-e1c4-41b6-a47f-3a67ce5b94ac +caps.latest.revision: 14 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 14 +--- +# トレースおよびデバッグ設定のスキーマ +トレースおよびデバッグの設定により、メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。 + + 次の表に、トレース設定とデバッグ設定の各要素の機能を示します。 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-source.md)|トレース ソース用の `Listeners` コレクションにリスナーを追加します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-trace.md)|`Listeners` コレクションにリスナーを追加します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/add-element-for-sharedlisteners.md)|`sharedListeners` コレクションにリスナーを追加します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/add-element-for-switches.md)|トレース スイッチを設定するレベルを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/assert-element.md)| メソッドの呼び出し時にメッセージ ボックスを表示するかどうかを指定し、メッセージの書き込み先のファイルの名前も指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-source.md)|トレース ソースの `Listeners` コレクションを削除します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-trace.md)|トレースの `Listeners` コレクションを削除します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-listeners-for-source.md)|トレース ソースの `Listeners` コレクション内のリスナーにフィルターを追加します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-listeners-for-trace.md)|トレース用の `Listeners` コレクションのリスナーにフィルターに追加します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/filter-element-for-add-for-sharedlisteners.md)|フィルターを `sharedListeners` コレクションのリスナーに追加します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/listeners-element-for-source.md)|トレース ソースの `Listeners` コレクションにリスナーを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/listeners-element-for-trace.md)|トレースの `Listeners` コレクションにリスナーを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/performancecounters-element.md)|パフォーマンス カウンターが共有するグローバル メモリのサイズを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-trace.md)|トレースの `Listeners` コレクションからリスナーを削除します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-source.md)|トレース ソースの `Listeners` コレクションからリスナーを削除します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/sharedlisteners-element.md)|任意の source 要素または trace 要素が参照できるリスナーを含みます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/sources-element.md)|トレース メッセージを開始するトレース ソースを保持します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/source-element.md)|トレース メッセージを開始するトレース ソースを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/switches-element.md)|トレース スイッチとトレース スイッチを設定するレベルを保持します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/system-diagnostics-element.md)|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/trace-element.md)|トレース メッセージを収集、格納、およびルーティングするリスナーを保持します。| + +## 参照 + + + + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/listeners-element-for-source.md b/docs/framework/configure-apps/file-schema/trace-debug/listeners-element-for-source.md new file mode 100644 index 00000000000..06aac279cc4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/listeners-element-for-source.md @@ -0,0 +1,99 @@ +--- +title: "<source> の <listeners> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/sources/source/listeners" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の listeners 要素" +ms.assetid: a2991f43-b4d3-4614-a8e7-da392de9697f +caps.latest.revision: 10 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 10 +--- +# <source> の <listeners> 要素 + コレクションでリスナーを追加または削除します。 リスナーにより、トレース出力が適切な場所 \(ログ、ウィンドウ、またはテキスト ファイルなど\) に送られます。 + +## 構文 + +``` + + ... + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-source.md)|`Listeners` コレクションにリスナーを追加します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-source.md)|`Listeners` コレクションからリスナーを削除します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-source.md)|トレース ソースの `Listeners` コレクションを削除します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`sources`|トレース メッセージを開始するトレース ソースを保持します。| +|`source`|トレース メッセージを開始するトレース ソースを指定します。| + +## 解説 + +## 構成ファイル + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + `` 要素を使用して、コンソール トレース リスナーを `mySource` ソースに追加し、既定のトレース リスナーを削除する例を次に示します。 + +``` + + + + + + + + + + + + + + + + + +``` + +## 参照 + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + [Trace Listeners](../../../../../docs/framework/debug-trace-profile/trace-listeners.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/listeners-element-for-trace.md b/docs/framework/configure-apps/file-schema/trace-debug/listeners-element-for-trace.md new file mode 100644 index 00000000000..44d19f74fe5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/listeners-element-for-trace.md @@ -0,0 +1,96 @@ +--- +title: "<trace> の <listeners> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/trace/listeners" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "listeners 要素" +ms.assetid: 1394c2c3-6304-46db-87c1-8e8b16f5ad5b +caps.latest.revision: 17 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 17 +--- +# <trace> の <listeners> 要素 +メッセージを収集、格納、およびルーティングするリスナーを指定します。 リスナーは、トレース出力を適切なターゲットに転送します。 + +## 構文 + +``` + + ... + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-trace.md)|`Listeners` コレクションにリスナーを追加します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-trace.md)|トレースの `Listeners` コレクションを削除します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-trace.md)|`Listeners` コレクションからリスナーを削除します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|ASP.NET 構成セクションのルート要素を指定します。| +|`trace`|トレース メッセージを収集、格納、およびルーティングするリスナーを保持します。| + +## 解説 + クラスおよび クラスは、同じ **Listeners** コレクションを共有します。 これらのクラスの一方のコレクションにリスナー オブジェクトを追加すると、もう一方のクラスは同じリスナーを使用します。 .NET Framework に付属のリスナー クラスは、 クラスの派生クラスです。 + +## 構成ファイル + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + 次の例に **リスナー** のコレクションにリスナーを追加するには `MyListener` と `MyEventListener`**\** 要素を使用する方法を示します。 `MyListener` は、`MyListener.log` というファイルを作成し、そのファイルに出力を書き込みます。 `MyEventListener` は、イベント ログにエントリを作成します。 + +``` + + + + + + + + + + +``` + +## 参照 + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/performancecounters-element.md b/docs/framework/configure-apps/file-schema/trace-debug/performancecounters-element.md new file mode 100644 index 00000000000..3f423bdebbf --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/performancecounters-element.md @@ -0,0 +1,69 @@ +--- +title: "<performanceCounters> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/performanceCounters" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#performanceCounters" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "performanceCounters 要素" +ms.assetid: a71f605b-c7d9-4501-a5c3-abcbb964a43f +caps.latest.revision: 10 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 10 +--- +# <performanceCounters> 要素 +パフォーマンス カウンターが共有するグローバル メモリのサイズを指定します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|filemappingsize|必須の属性です。

パフォーマンス カウンターが共有するグローバル メモリのサイズをバイト単位で指定します。 既定値は 524288 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`Configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|ASP.NET 構成セクションのルート要素を指定します。| + +## 解説 + パフォーマンス カウンターは、メモリ マップト ファイル \(共有メモリ\) を使用してパフォーマンス データを公開します。共有メモリのサイズによって、一度に使用できるインスタンスの数が決まります。共有メモリには、グローバル共有メモリと個別共有メモリの 2 種類があります。グローバル共有メモリは、.NET Framework Version 1.0 または 1.1 と共にインストールされるすべてのパフォーマンス カウンター カテゴリで使用されます。.NET Framework Version 2.0 と共にインストールされるパフォーマンス カウンター カテゴリでは、個別共有メモリが使用されます。この場合、各パフォーマンス カウンター カテゴリが独自のメモリを持ちます。 + + グローバル共有メモリのサイズは、構成ファイル内でのみ設定できます。既定のサイズは 524,288 バイト、最大サイズは 33,554,432 バイト、最小サイズは 32,768 バイトです。グローバル共有メモリはすべてのプロセスおよびカテゴリで共有されるため、最初の作成者がサイズを指定します。アプリケーション構成ファイルにサイズを定義すると、指定したサイズは、そのアプリケーションが最初にパフォーマンス カウンターを実行する場合にのみ使用されます。したがって、`filemappingsize` 値は、Machine.config ファイルで指定する必要があります。グローバル共有メモリ内のメモリはパフォーマンス カウンターごとに解放できないため、異なる名前を使用してパフォーマンス カウンターのインスタンスを大量に作成すると、最終的にはグローバル共有メモリを使い果たすことになります。 + + 個別共有メモリのサイズは、レジストリ キーの HKEY\_LOCAL\_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\*\*\\Performance の DWORD FileMappingSize の値は、構成ファイル内のグローバル共有メモリに指定した値によって、その後に最初に参照されます。 FileMappingSize の値が存在しない場合、個別共有メモリのサイズは、構成ファイル内のグローバル設定の値の 4 分の 1 に設定されます。 + +## 参照 + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-source.md b/docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-source.md new file mode 100644 index 00000000000..e8c34157941 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-source.md @@ -0,0 +1,92 @@ +--- +title: "<source> の <listeners> の <remove> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/sources/source/listeners/remove" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - " の remove 要素" +ms.assetid: 3ff6b578-273d-407f-b07f-8251f1f9f5d0 +caps.latest.revision: 6 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 6 +--- +# <source> の <listeners> の <remove> 要素 +トレース ソースの `Listeners` コレクションからリスナーを削除します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`name`|必須の属性です。

`Listeners` コレクションから削除するリスナーの名前。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`sources`|トレース メッセージを開始するトレース ソースを保持します。| +|`source`|トレース メッセージを開始するトレース ソースを指定します。| +|`listeners`|メッセージを収集、格納、およびルーティングするリスナーを指定します。| + +## 解説 + `` 要素は、トレース ソースの `Listeners` コレクションから指定したリスナーを削除します。 + + インスタンスの プロパティで メソッドを呼び出すことによって、トレース ソースの `Listeners` コレクションから要素をプログラムで削除できます。 + + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + `` 要素を使用してリスナー `console` をトレース ソース `TraceSourceApp` の `Listeners` コレクションに追加する前に、`` 要素を使用する方法を次の例に示します。 + +``` + + + + + + + + + + + + +``` + +## 参照 + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + [\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/clear-element-for-listeners-for-source.md) + [Trace Listeners](../../../../../docs/framework/debug-trace-profile/trace-listeners.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-trace.md b/docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-trace.md new file mode 100644 index 00000000000..6bb86813793 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/remove-element-for-listeners-for-trace.md @@ -0,0 +1,85 @@ +--- +title: "<trace> の <listeners> の <remove> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/trace/listeners/remove" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "remove 要素" +ms.assetid: 9a5cd1b5-be1a-485f-8f0c-2890ad3ef3e0 +caps.latest.revision: 12 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 12 +--- +# <trace> の <listeners> の <remove> 要素 +**Listeners** コレクションからリスナーを削除します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|**name**|必須の属性です。

**Listeners** コレクションから削除するリスナーの名前。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`listeners`|メッセージを収集、格納、およびルーティングするリスナーを指定します。 リスナーは、トレース出力を適切なターゲットに転送します。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`trace`|ASP.NET トレース サービスを設定します。| + +## 解説 + +> [!NOTE] +> `Listeners` コレクションから を削除すると、、および の各メソッドの動作が変わります。 `Assert` メソッドまたは `Fail` メソッドを呼び出すと、通常はメッセージ ボックスが表示されますが、`Listeners` コレクションに がない場合はメッセージ ボックスが表示されません。 + +## 使用例 + トレース **Listeners** コレクションから既定のトレース リスナーを削除する方法を次の例に示します。 + +``` + + + + + + + + + +``` + +## 参照 + + + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/sharedlisteners-element.md b/docs/framework/configure-apps/file-schema/trace-debug/sharedlisteners-element.md new file mode 100644 index 00000000000..33f27beda20 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/sharedlisteners-element.md @@ -0,0 +1,102 @@ +--- +title: "<sharedListeners> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#sharedListeners" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/sharedListeners" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "リスナー" + - "共有リスナー" + - "sharedListeners 要素" + - "トレース リスナー, 要素" +ms.assetid: de200534-19dd-4156-86cf-c50521802c4c +caps.latest.revision: 10 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 10 +--- +# <sharedListeners> 要素 +任意の source 要素または trace 要素が参照できるリスナーを含みます。既定では、これらのリスナーはトレースを受け取りません。また、実行時にこれらのリスナーを取得することはできません。 共有リスナーとして識別されたリスナーは、ソースまたはトレースに名前で追加できます。 + +## 構文 + +``` + + ... + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/add-element-for-listeners-for-trace.md)|`sharedListeners` コレクションにリスナーを追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`Configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|ASP.NET 構成セクションのルート要素を指定します。| + +## 解説 + リスナーを共有リスナーのコレクションに追加しても、アクティブなリスナーにはなりません。 リスナーをさらにその trace 要素の `Listeners` コレクションに追加することによって、トレース ソースまたはトレースに追加する必要があります。 .NET Framework のリスナー クラスは、 クラスの派生クラスです。 + + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + `` 要素を使用して、リスナー `console` を クラスと クラスの `Listeners` コレクションに追加する方法を次の例に示します。 コンソール トレース リスナーは、 または の呼び出しを通じて、トレース情報をコンソールに書き込みます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + +
+``` + +## 参照 + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + [Trace Listeners](../../../../../docs/framework/debug-trace-profile/trace-listeners.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/source-element.md b/docs/framework/configure-apps/file-schema/trace-debug/source-element.md new file mode 100644 index 00000000000..fbd0e85242e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/source-element.md @@ -0,0 +1,95 @@ +--- +title: "<source> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/sources/source" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#source" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "source 要素" +ms.assetid: ecf86505-735d-4844-aaba-266fdd134218 +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 11 +--- +# <source> 要素 +トレース メッセージを開始するトレース ソースを指定します。 + +## 構文 + +``` + + ... + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`name`|省略可能な属性。

トレース ソースの名前を指定します。| +|`switchName`|省略可能な属性。

アプリケーション内のトレース スイッチ インスタンスの名前を指定します。 スイッチが `` 要素で識別されていない場合、値はスイッチのレベルを指定します。| +|`switchType`|省略可能な属性。

トレース スイッチの型を指定します。 型が存在する場合、その型は有効なクラス名である必要があり、空の文字列にはできません。| +|`extraAttribute`|省略可能な属性。

トレース ソースの メソッドによって識別されるそのトレース ソース固有の属性の値を指定します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/listeners-element-for-trace.md)|メッセージを収集、格納、およびルーティングするリスナーを保持します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| +|`sources`|トレース メッセージを開始するトレース ソースを保持します。| + +## 解説 + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + `` 要素を使用してトレース ソース `mySource` を追加し、`sourceSwitch` という名前のソース スイッチのレベルを設定する方法を次の例に示します。 トレース情報をコンソールに書き込むコンソール トレース リスナーが追加されます。 + +``` + + + + + + + + + + + + + + + + + +``` + +## 参照 + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + [Trace Switches](../../../../../docs/framework/debug-trace-profile/trace-switches.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/sources-element.md b/docs/framework/configure-apps/file-schema/trace-debug/sources-element.md new file mode 100644 index 00000000000..5487f151257 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/sources-element.md @@ -0,0 +1,98 @@ +--- +title: "<sources> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/sources" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#sources" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "sources 要素" + - "トレース ソース" +ms.assetid: c727b2e2-423a-4463-a223-013f40ff16a3 +caps.latest.revision: 7 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 7 +--- +# <sources> 要素 +トレース メッセージを開始するトレース ソースを指定します。 + +## 構文 + +``` + + ... + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/source-element.md)|必須の要素です。

トレース メッセージを開始するトレース ソースを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| + +## 解説 + この要素は、マシン構成ファイル \(Machine.config\) およびアプリケーション構成ファイルで使用できます。 + +## 使用例 + `` 要素を使用してトレース ソース `mySource` を追加し、`sourceSwitch` という名前のソース スイッチのレベルを設定する方法を次の例に示します。 トレース情報をコンソールに書き込むコンソール トレース リスナーが追加されます。 + +``` + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) + [\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/source-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/switches-element.md b/docs/framework/configure-apps/file-schema/trace-debug/switches-element.md new file mode 100644 index 00000000000..3333cd0753d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/switches-element.md @@ -0,0 +1,82 @@ +--- +title: "<switches> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/switches" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#switches" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "switches 要素" + - "トレース スイッチ, 要素" +ms.assetid: 4cf36786-b89a-40e2-a0f1-86bb9b783343 +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 9 +--- +# <switches> 要素 +トレース スイッチとトレース スイッチを設定するレベルを保持します。 + +## 構文 + +``` + +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/add-element-for-switches.md)|トレース スイッチを設定するレベルを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`System.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| + +## 解説 + トレース スイッチのレベルは、構成ファイル内に配置することにより変更できます。 スイッチが の場合は、スイッチのオン\/オフを切り替えることができます。 スイッチが の場合は、スイッチにさまざまなレベルを割り当てて、アプリケーションが出力するトレース メッセージまたはデバッグ メッセージの型を指定できます。 + +## 使用例 + 次の例は、`General` トレースを設定するには **\** 要素を使用する方法を [TraceLevel.Error](frlrfSystemDiagnosticsTraceLevelClassTopic) のレベルをに切り替え、`Data` ブール トレース スイッチを有効にします。 + +``` + + + + + + + + +``` + +## 参照 + + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/system-diagnostics-element.md b/docs/framework/configure-apps/file-schema/trace-debug/system-diagnostics-element.md new file mode 100644 index 00000000000..e4593cca70f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/system-diagnostics-element.md @@ -0,0 +1,87 @@ +--- +title: "<system.diagnostics> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#system.diagnostics" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "system.diagnostics 要素" +ms.assetid: 3f348f42-fa72-4ff2-aa1c-bb9eecad4bb2 +caps.latest.revision: 17 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 15 +--- +# <system.diagnostics> 要素 +メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\<アサート\>](../../../../../docs/framework/configure-apps/file-schema/trace-debug/assert-element.md)| メソッドの呼び出し時にメッセージ ボックスを表示するかどうかを指定し、メッセージの書き込み先のファイルの名前も指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/performancecounters-element.md)|パフォーマンス カウンターが共有するグローバル メモリのサイズを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/sharedlisteners-element.md)|任意の source 要素または trace 要素が参照できるリスナーを含みます。 共有リスナーとして識別されたリスナーは、ソースまたはトレースに名前で追加できます。| +|[\<ソース\>](../../../../../docs/framework/configure-apps/file-schema/trace-debug/sources-element.md)|トレース メッセージを開始するトレース ソースを指定します。| +|[\<スイッチ\>](../../../../../docs/framework/configure-apps/file-schema/trace-debug/switches-element.md)|トレース スイッチとトレース スイッチを設定するレベルを保持します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/trace-debug/trace-element.md)|トレース メッセージを収集、格納、およびルーティングするリスナーを保持します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| + +## 使用例 + 次の例 **\** 要素内のトレース スイッチおよびトレース リスナーを埋め込む方法について説明します。 `General` トレース スイッチは、[TraceLevel.Error](frlrfSystemDiagnosticsTraceLevelClassTopic) レベルに設定されています。 トレース リスナー `myListener` は、`MyListener.log` というファイルを作成し、そのファイルに出力を書き込みます。 + +> [!NOTE] +> .NET Framework Version 2.0 では、テキストを使用してスイッチの値を指定できます。 たとえば、 に `true` を指定したり、`Error` などの列挙値を表すテキストを に使用したりできます。 `` 行は、`` に相当します。 + +``` + + + + + + + + + + + + +``` + +## 参照 + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/trace-debug/trace-element.md b/docs/framework/configure-apps/file-schema/trace-debug/trace-element.md new file mode 100644 index 00000000000..149d553cc7f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/trace-debug/trace-element.md @@ -0,0 +1,101 @@ +--- +title: "<trace> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.diagnostics/trace" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#trace" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "リスナー" + - "trace 要素" + - "トレース リスナー, 要素" +ms.assetid: 7931c942-63c1-47c3-a045-9d9de3cacdbf +caps.latest.revision: 13 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 13 +--- +# <trace> 要素 +トレース メッセージを収集、格納、およびルーティングするリスナーを保持します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`autoflush`|省略可能な属性。

トレース リスナーが毎回の書き込み操作の後で出力バッファーを自動的にフラッシュするかどうかを指定します。| +|`indentsize`|省略可能な属性。

インデントするスペース数を指定します。| +|`useGlobalLock`|省略可能な属性。

グローバル ロックを使用する必要があるかどうかを示します。| + +## autoflush 属性 + +|値|説明| +|-------|--------| +|`false`|出力バッファーを自動的にフラッシュしません。 これは、既定の設定です。| +|`true`|出力バッファーを自動的にフラッシュします。| + +## useGlobalLock 属性 + +|値|説明| +|-------|--------| +|`false`|リスナーがスレッド セーフである場合は、グローバル ロックを使用しません。それ以外の場合は、グローバル ロックを使用します。| +|`true`|リスナーがスレッド セーフかどうかにかかわらず、グローバル ロックを使用します。 これは、既定の設定です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\<リスナー\>](../../../../../docs/framework/configure-apps/file-schema/trace-debug/listeners-element-for-trace.md)|メッセージを収集、格納、およびルーティングするリスナーを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|`configuration`|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| +|`system.diagnostics`|メッセージを収集、格納、およびルーティングするトレース リスナーとトレース スイッチを設定するレベルを指定します。| + +## 使用例 + `` 要素を使用して、リスナー `MyListener` を `Listeners` コレクションに追加する方法を次の例に示します。 `MyListener` は、`MyListener.log` というファイルを作成し、そのファイルに出力を書き込みます。 `useGlobalLock` 属性には `false` を設定します。これにより、トレース リスナーがスレッド セーフの場合は、グローバル ロックが使用されなくなります。 `autoflush` 属性には `true` を設定します。これにより、 メソッドが呼び出されるかどうかに関係なく、トレース リスナーからファイルに出力が書き込まれます。 `indentsize` 属性には 0 \(ゼロ\) を設定します。これにより、 メソッドが呼び出されたときに、リスナーは 0 個のスペースをインデントします。 + +``` + + + + + + + + + +``` + +## 参照 + + + + + [トレースおよびデバッグ設定のスキーマ](../../../../../docs/framework/configure-apps/file-schema/trace-debug/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf-directive/TOC.md b/docs/framework/configure-apps/file-schema/wcf-directive/TOC.md new file mode 100644 index 00000000000..0b755b0097d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf-directive/TOC.md @@ -0,0 +1,2 @@ +# [WCF ディレクティブ構文](index.md) +# [@ServiceHost](servicehost.md) diff --git a/docs/framework/configure-apps/file-schema/wcf-directive/index.md b/docs/framework/configure-apps/file-schema/wcf-directive/index.md new file mode 100644 index 00000000000..3e0ed984790 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf-directive/index.md @@ -0,0 +1,36 @@ +--- +title: "WCF ディレクティブ構文 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e471b042-d5e3-491c-bc81-758655016a3a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# WCF ディレクティブ構文 +コンパイラに指示するために .svc ファイルの [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] ディレクティブによって使用される設定を指定します。 各ディレクティブには、そのディレクティブに固有な 1 つ以上の \(値と対にした\) 属性を含めることができます。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] には [@ServiceHost](../../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md) ディレクティブだけがあります。 + +## このセクションの内容 + [@ServiceHost](../../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md) + .svc コンパイラによって使用されるページ固有の属性を定義します。 .svc ファイルだけに組み込むことができます。 + +## 関連項目 + [方法 : IIS で WCF サービスをホストする](../../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md) + インターネット インフォメーション サービス \(IIS\) でサービスをホストするときの @ServiceHost ディレクティブの使用方法について説明します。 + + [方法 : WAS で WCF サービスをホストする](../../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-was.md) + Windows プロセス アクティブ化サービス \(WAS\) でサービスをホストするときの @ServiceHost ディレクティブの使用方法について説明します。 + +## 参照 + [ホスト](../../../../../docs/framework/wcf/feature-details/hosting.md) + [インターネット インフォメーション サービスでのホスティング](../../../../../docs/framework/wcf/feature-details/hosting-in-internet-information-services.md) + [Windows プロセス アクティブ化サービスでのホスティング](../../../../../docs/framework/wcf/feature-details/hosting-in-windows-process-activation-service.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md b/docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md new file mode 100644 index 00000000000..5f7da4a359f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md @@ -0,0 +1,78 @@ +--- +title: "@ServiceHost | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 96ba6967-00f2-422f-9aa7-15de4d33ebf3 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# @ServiceHost +サービス ホストの生成に使用されるファクトリを、ホストされるサービスと、.svc ファイルで提供されるホスティング コードのアクセスとコンパイルに必要なその他のプログラミング部分に関連付けます。 + +## 構文 + +``` + +<% @ServiceHost +Service = "Service, ServiceNamespace" +Factory = "Factory, FactoryNamespace" +Debug = "Debug" +Language = "Language" +CodeBehind = "CodeBehind"%> +``` + +## 属性 + +#### サービス + ホストされるサービスの CLR 型名。 これは、1 つ以上のサービス コンタクトを実装する型の修飾名にする必要があります。 + +#### ファクトリ + サービス ホストのインスタンス化に使用されるサービス ホスト ファクトリの CLR 型名。 この属性は省略できます。 未指定の場合は、 のインスタンスを返す既定の が使用されます。 + +#### デバッグ + デバッグ シンボルを使用して [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスをコンパイルするかどうかを示します。 デバッグ シンボルを含む [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスをコンパイルする場合は `true`、それ以外の場合は `false` を指定します。 + +#### 言語 + ファイル \(.svc\) 内のすべてのインライン コードをコンパイルするときに使用する言語を指定します。 値は、C\#、VB、JS \(それぞれ、C\#、Visual Basic .NET、および JScript .NET を示す\) など、.NET がサポートする任意の言語を表します。 この属性は省略できます。 + +#### CodeBehind + XML Web サービスを実装するクラスが同じファイル内に存在せず、アセンブリとしてコンパイルされずに \\Bin ディレクトリに置かれているとき、XML Web サービスを実装するソース ファイルを指定します。 + +## 解説 + サービスのホストに使用される は、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] プログラミング モデル内の拡張ポイントです。 ファクトリ パターンは、ホスティング環境が直接インスタンス化できないポリモーフィック型の可能性があるため、 のインスタンス化に使用されます。 + + 既定の実装では を使用して、 のインスタンスを作成します。 ただし、ファクトリ実装の CLR 型名を [@ServiceHost](../../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md) ディレクティブに指定して、独自のファクトリ \(派生ホストを返すファクトリ\) を提供できます。 + + 既定のファクトリの代わりに独自のカスタム サービス ホスト ファクトリを使用するには、型名を [@ServiceHost](../../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md) ディレクティブに次のように指定します。 + +``` +<% @ServiceHost Factory=”DerivedFactory” Service=”MyService” %> +``` + + ファクトリ実装はできるだけ軽量に保持してください。 多くのカスタム ロジックがある場合は、それらのロジックをファクトリ内部ではなくホスト内部に置くとコードがさらに再利用可能になります。 + + たとえば、`MyService` の AJAX 対応のエンドポイントを有効にするには、次の例に示す [@ServiceHost](../../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md) ディレクティブで、`Factory` 属性の値に、既定の の代わりに を指定します。 + +## 使用例 + +``` +<% @ServiceHost +Service="MyService" +Language="C#" +Debug="true" +Factory="WebScriptServiceHostFactory" +%> +``` + +## 参照 + [カスタム サービス ホスト](../../../../../docs/framework/wcf/samples/custom-service-host.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/TOC.md b/docs/framework/configure-apps/file-schema/wcf/TOC.md new file mode 100644 index 00000000000..fc4a422fcc0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/TOC.md @@ -0,0 +1,296 @@ +# [](commonparameters.md) +# [](nethttpsbinding.md) +# [](security-of-ws2007httpbinding.md) +# [](wsdualhttpbinding.md) +# [](endpointbehaviors.md) +# [](discoveryendpoint.md) +# [](faultpropagationquery-of-wcf.md) +# [](udpbinding.md) +# [](claimtyperequirements-for-message.md) +# [](policyimporters.md) +# [](issuerchannelbehaviors-element.md) +# [](security-of-peertransport.md) +# [](httpstransport.md) +# [](datacontractserializer-element.md) +# [](declaredtypes.md) +# [メッセージ エンコーディング](message-encoding.md) +# [](mexhttpsbinding.md) +# [](defaultcertificate-element.md) +# [](add-of-defaultports.md) +# [](transport-of-webhttpbinding.md) +# [](clear-of-claimtyperequirements-element.md) +# [](knowntype.md) +# [](msmqintegrationbinding.md) +# [](bookmarkresumptionqueries-of-wcf.md) +# [](webhttpendpoint.md) +# [](messagesenderauthentication.md) +# [](filtertable.md) +# [](soapprocessing.md) +# [](issuermetadata.md) +# [](textmessageencoding.md) +# [](add-of-serviceactivations.md) +# [](persistabletype.md) +# [](servicecertificate-of-clientcredentials-element.md) +# [](mexhttpbinding.md) +# [](binarymessageencoding.md) +# [](add-of-filters.md) +# [](activityscheduledqueries-of-wcf.md) +# [](add-of-scopedcertificates-element.md) +# [](windowsauthentication-of-servicecredentials.md) +# [](endpoint-of-client.md) +# [](security-of-nethttpbinding.md) +# [](additionalrequestparameters-element.md) +# [](transport-of-netnamedpipebinding.md) +# [](datacontractserializer-of-system-runtime-serialization.md) +# [](participants-of-wcf.md) +# [](routing-of-servicebehavior.md) +# [](faultpropagationqueries-of-wcf.md) +# [](callbacktimeouts.md) +# [](transport-of-peertransport.md) +# [](activitystatequery-of-wcf.md) +# [](issuer-of-issuedtokenparameters.md) +# [](standardendpoints.md) +# [](states-of-wcf-workflowinstancequery.md) +# [](metadata.md) +# [](add-of-namespacetable.md) +# [](synchronousreceive-element.md) +# [](dispatchersynchronization.md) +# [](mexendpoint.md) +# [](scopedcertificates-element.md) +# [](headers.md) +# [](add-of-claimtyperequirements.md) +# [](transport-of-netpeertcpbinding.md) +# [](add-of-declaredtypes-element.md) +# [WCF 構成スキーマ](index.md) +# [](clientvia.md) +# [](identity.md) +# [](pnrppeerresolver.md) +# [](peertransport.md) +# [](add-of-wcf.md) +# [](system-servicemodel-activation.md) +# [](workflow-of-wcf.md) +# [](client.md) +# [](host.md) +# [](extensions.md) +# [](add-of-backuplist.md) +# [](websocketsettings.md) +# [](bytestreammessageencoding.md) +# [](bindingelementextensions.md) +# [](security-of-netnamedpipebinding.md) +# [](servicesecurityaudit.md) +# [](behavior-of-endpointbehaviors.md) +# [](issuedtoken.md) +# [](cancelrequestedquery-of-wcf.md) +# [](bindings.md) +# [](add-of-baseaddressprefixfilter.md) +# [](peer-of-servicecredentials.md) +# [](nethttpbinding.md) +# [](policyimporter.md) +# [](workflowinstancequeries-of-wcf.md) +# [](security-of-msmqintegrationbinding.md) +# [](rsa.md) +# [](servicetimeouts.md) +# [](peerauthentication.md) +# [](certificatereference-for-identity.md) +# [](msmqintegration.md) +# [](security-of-wsfederationhttpbinding.md) +# [](system-runtime-serialization.md) +# [](udptransportsettings-of-udpannouncementendpoint.md) +# [](cancelrequestedqueries-of-wcf.md) +# [](discoveryclient.md) +# [](custom.md) +# [](netmsmqbinding.md) +# [](datacontractserializer.md) +# [](backuplist.md) +# [](servicediscovery.md) +# [](persistenceprovider.md) +# [](servicethrottling.md) +# [](claimtyperequirements-element.md) +# [](routing.md) +# [](message-of-ws2007httpbinding.md) +# [](namedpipetransport.md) +# [](activitystatequeries-of-wcf.md) +# [](message-of-nethttpbinding.md) +# [](custombinding.md) +# [](message-element-of-wsfederationhttpbinding.md) +# [](enablewebscript.md) +# [](wsfederationhttpbinding.md) +# [](certificate-element.md) +# [](ws2007federationhttpbinding.md) +# [](scopes.md) +# [](wsdlimporter.md) +# [](serviceactivations.md) +# [](servicecredentials.md) +# [](dynamicendpoint.md) +# [](transportconfigurationtypes.md) +# [](windowsstreamsecurity.md) +# [](clientcertificate-of-servicecredentials.md) +# [](tcptransport.md) +# [](remove-of-claimtyperequirements-element.md) +# [](messagesenderauthentication-element.md) +# [](baseaddressprefixfilters.md) +# [](transactionflow.md) +# [](issuer.md) +# [](net-tcp.md) +# [](httptransport.md) +# [](webmessageencoding.md) +# [](security-of-wsdualhttpbinding.md) +# [](security-of-wshttpbinding.md) +# [](basichttpbinding.md) +# [](webscriptendpoint.md) +# [](ws2007httpbinding.md) +# [](udptransportsettings.md) +# [](webhttpbinding.md) +# [](bindingextensions.md) +# [](security-element-of-ws2007federationhttpbinding.md) +# [](dns.md) +# [](services.md) +# [](timeouts.md) +# [](exposedmethods.md) +# [](filters-of-routing.md) +# [](windows-of-clientcredentials-element.md) +# [](behavior-of-servicebehaviors.md) +# [](baseaddresses.md) +# [](mtommessageencoding.md) +# [](system-servicemodel.md) +# [](add-of-allowaccounts.md) +# [](bookmarkresumptionquery-of-wcf.md) +# [](message-of-wsdualhttpbinding.md) +# [](authentication-of-servicecertificate-element.md) +# [](transport-of-netmsmqbinding.md) +# [](security-of-webhttpbinding.md) +# [](defaultports.md) +# [](compositeduplex.md) +# [](tracking-of-wcf.md) +# [](endpointdiscovery.md) +# [](connectionpoolsettings.md) +# [](userdefinedtypes.md) +# [](message-of-netmsmqbinding.md) +# [](servicedebug.md) +# [](workflowcontrolendpoint.md) +# [](add-of-services.md) +# [](net-pipe.md) +# [](transport-of-ws2007httpbinding.md) +# [](userprincipalname.md) +# [](userequestheadersformetadataaddress.md) +# [](knowncertificates.md) +# [](secureconversationbootstrap.md) +# [](namespacetable.md) +# [](security-of-basichttpbinding.md) +# [](message-of-wshttpbinding.md) +# [](exposedmethod.md) +# [](add-of-authorizationpolicies.md) +# [](contracttypenames.md) +# [](serviceauthenticationmanager.md) +# [](nettcpbinding.md) +# [](issuedtokenauthentication-of-servicecredentials.md) +# [トランスポート](transports.md) +# [](udpannoucementendpoint.md) +# [](authorizationpolicies.md) +# [](servicebehaviors.md) +# [](behaviorextensions.md) +# [](servicecertificate-of-servicecredentials.md) +# [](backuplists.md) +# [](findcriteria.md) +# [](extensions-section.md) +# [](message-element-of-ws2007federationhttpbinding.md) +# [](commonbehaviors.md) +# [](message-of-basichttpbinding.md) +# [](protocolmapping.md) +# [](add-of-issuerchannelbehaviors.md) +# [](peer-of-clientcredentials-element.md) +# [](endtoendtracing.md) +# [](servicehostingenvironment.md) +# [](add-of-allowedaudienceuris.md) +# [](persistabletypes.md) +# [](privacynoticeat.md) +# [](transport-of-basichttpbinding.md) +# [](certificate-for-identity.md) +# [](authentication-of-clientcertificate-element.md) +# [](transport-of-nettcpbinding.md) +# [](certificate-of-peer.md) +# [](channelpoolsettings.md) +# [](localclientsettings-element.md) +# [](sslstreamsecurity.md) +# [](comcontracts.md) +# [](filtertables.md) +# [](state-of-wcf-workflowinstancequery.md) +# [](callbackdebug.md) +# [](comcontract.md) +# [](serviceprincipalname.md) +# [](httpdigest-element.md) +# [](clientcertificate-of-clientcredentials-element.md) +# [](transport-of-nethttpbinding.md) +# [](add-of-entries.md) +# [](basichttpcontextbinding.md) +# [](xmlelement.md) +# [](filters.md) +# [](add-of-commonparameters.md) +# [](workflowinstancequery-of-wcf.md) +# [](endpointextensions.md) +# [](filter.md) +# [](add-of-claimtyperequirements-element.md) +# [](workflowruntime.md) +# [](endpoint-element.md) +# [](connectionpoolsettings-of-tcptransport.md) +# [](transactedbatching.md) +# [](netpeertcpbinding.md) +# [](servicemetadata.md) +# [](security-of-nettcpbinding.md) +# [](wsdlimporters.md) +# [](localissuer.md) +# [](activityscheduledquery-of-wcf.md) +# [](usernameauthentication.md) +# [](security-of-custombinding.md) +# [](transport-of-wshttpbinding.md) +# [](services-of-workflowruntime.md) +# [](entries.md) +# [](tokenrequestparameters.md) +# [](webhttp.md) +# [](udpdiscoveryendpoint.md) +# [](security-of-netpeerbinding.md) +# [](clientcredentials.md) +# [](wshttpcontextbinding.md) +# [](message-element-of-nettcpbinding.md) +# [](nettcpcontextbinding.md) +# [](messagelogging.md) +# [](add-of-baseaddresses.md) +# [](issuermetadata-of-issuedtokenparameters.md) +# [](msmqtransport.md) +# [](mexnamedpipebinding.md) +# [](serviceauthorization-element.md) +# [](usemanagedpresentation.md) +# [](allowaccounts.md) +# [](customtrackingquery-of-wcf.md) +# [](customtrackingqueries-of-wcf.md) +# [](diagnostics-for-activation.md) +# [](service.md) +# [](reliablesession.md) +# [](add-of-knowncertificates.md) +# [](issuedtokenparameters.md) +# [](parameter.md) +# [](userdefinedtype.md) +# [](allowedaudienceuris.md) +# [](wshttpbinding.md) +# [](behaviors.md) +# [](diagnostics.md) +# [](resolver.md) +# [](secureconversationauthentication-of-servicecredential.md) +# [](trackingprofile-of-wcf.md) +# [](peerauthentication-element.md) +# [](msmqtransportsecurity.md) +# [](add-of-protocolmapping.md) +# [](localservicesettings-element.md) +# [](add-of-scopes.md) +# [](transport-of-msmqintegrationbinding.md) +# [](unrecognizedpolicyassertion.md) +# [](headers-element.md) +# [](add-of-transportconfigurationtype.md) +# [](add-of-contracttypenames.md) +# [](announcementendpoint.md) +# [](discoveryclientsettings.md) +# [](mextcpbinding.md) +# [](oneway.md) +# [](netnamedpipebinding.md) +# [](certificate-of-clientcertificate-element.md) +# [](security-of-netmsmqbinding.md) diff --git a/docs/framework/configure-apps/file-schema/wcf/activityscheduledqueries-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/activityscheduledqueries-of-wcf.md new file mode 100644 index 00000000000..e79afd87ae4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/activityscheduledqueries-of-wcf.md @@ -0,0 +1,63 @@ +--- +title: "WCF の <activityScheduledQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e351329f-9676-4f11-9b19-f4bac82f36fc +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <activityScheduledQueries> +親アクティビティによる実行がスケジュールされているアクティビティを追跡するために使用する、クエリのコレクションを表します。 アクティビティがスケジュールされたレコードを追跡参加要素が定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledquery.md)|親アクティビティによる実行がスケジュールされているアクティビティを追跡するために使用するクエリ。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|`activityDefinitionId` プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.ActivityScheduledQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.ActivityScheduledQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityScheduledQuery](assetId:///System.Activities.Tracking.ActivityScheduledQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/activityscheduledquery-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/activityscheduledquery-of-wcf.md new file mode 100644 index 00000000000..30b1f092e68 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/activityscheduledquery-of-wcf.md @@ -0,0 +1,64 @@ +--- +title: "WCF の <activityScheduledQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 25f6eee1-3d98-4c39-b517-c0813f03f106 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <activityScheduledQuery> +親アクティビティによる実行がスケジュールされているアクティビティを追跡するために使用する、クエリのコレクションを表します。 アクティビティがスケジュールされたレコードを追跡参加要素が定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityName|キャンセルを要求しているアクティビティの名前を指定する文字列。| +|childActivityName|キャンセルが要求された子アクティビティの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledquery.md)|親アクティビティによる実行がスケジュールされているアクティビティを追跡するために使用するクエリ。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.ActivityScheduledQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.ActivityScheduledQueryElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityScheduledQuery](assetId:///System.Activities.Tracking.ActivityScheduledQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/activitystatequeries-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/activitystatequeries-of-wcf.md new file mode 100644 index 00000000000..803e2f63c15 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/activitystatequeries-of-wcf.md @@ -0,0 +1,71 @@ +--- +title: "WCF の <activityStateQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9e45db49-ed85-4fdf-bd65-0d5477e31823 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <activityStateQueries> +ワークフロー インスタンスを構成するアクティビティのライフサイクルの変化を追跡するために使用する、クエリのコレクションを表します。 たとえば、ワークフロー インスタンスの "電子メール送信" アクティビティの完了を毎回追跡することが必要な場合があります。 追跡参加要素がアクティビティ状態レコード オブジェクトを定期受信するには、このクエリが必要です。 定期受信可能な状態は ActivityStates で指定します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md)|1 つのアクティビティ内で発生するエラーの処理を追跡するために使用するクエリ。このイベントは、FaultHandler がエラーを処理するたびに発生します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|`activityDefinitionId` プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.ActivityStateQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.ActivityStateQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityStateQuery](assetId:///System.Activities.Tracking.ActivityStateQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/activitystatequery-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/activitystatequery-of-wcf.md new file mode 100644 index 00000000000..0f61667a9ae --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/activitystatequery-of-wcf.md @@ -0,0 +1,95 @@ +--- +title: "WCF の <activityStateQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d6cdc04b-6f3a-4097-a623-ee4a1be3b5c4 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <activityStateQuery> +ワークフロー インスタンスを構成するアクティビティのライフサイクルの変化を追跡するために使用されるクエリを表します。 たとえば、ワークフロー インスタンスの "電子メール送信" アクティビティの完了を毎回追跡することが必要な場合があります。 追跡参加要素がアクティビティ状態レコード オブジェクトを定期受信するには、このクエリが必要です。 定期受信可能な状態は ActivityStates で指定します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityName| インスタンスをフィルターするために、アクティビティの名前を指定する文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md)|このアクティビティ クエリに関連付けられている引数のコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)|追跡レコードを生成する必要がある定期受信済みアクティビティの状態を含む構成要素のコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)|このアクティビティ クエリに関連付けられている変数のコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationquery.md)|親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用する構成要素の一覧を表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。| + +## 解説 + ActivityStateQuery の固有の機能の 1 つは、ワークフローの実行を追跡するときにデータを抽出する機能です。 これにより、実行後に追跡レコードにアクセスするときにコンテキストが追加されます。 [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md)[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素、および `Closed` 要素を使用して、ワークフロー内の任意のアクティビティから任意の変数または引数を抽出できます。次の例は、アクティビティの 追跡レコードが生成されたときに変数と引数を抽出する、アクティビティ状態クエリを示しています。 変数と引数は、ActivityStateRecord でのみ抽出できるため、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md) を使用して追跡プロファイル内で定期受信されます。 + +``` + + +    +    + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.ActivityStateQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.ActivityStateQueryElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityStateQuery](assetId:///System.Activities.Tracking.ActivityStateQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-allowaccounts.md b/docs/framework/configure-apps/file-schema/wcf/add-of-allowaccounts.md new file mode 100644 index 00000000000..4bfc17993e9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-allowaccounts.md @@ -0,0 +1,73 @@ +--- +title: "<allowAccounts> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 763c7b1f-e7b0-4d99-a42c-4506fcb8da00 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <allowAccounts> の <add> +[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスをホストし、共有サービスへの接続アクセスが付与されているプロセスのユーザー アカウントを指定します。 + + \ + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|securityIdentifier|ユーザー アカウントの識別に使用される一意の識別子を指定する文字列。 既定値は LocalSystem、Administrators、NS、LS、および IIS\_USRS です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/allowaccounts.md)|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] をホストするプロセスのユーザー アカウントを指定する `securityIdentifier` 属性が含まれており、共有サービスへの接続アクセス権が付与される構成要素のコレクションです。| + +## 使用例 + 次の構成例は、このコレクションにユーザー アカウントの 5 つの既定の識別子を追加します。 + +``` + + // LocalSystem account + + // LocalService account + + // Administrators account + + // Network Service account + + // IIS_IUSRS account (Vista only) + + +``` + +## 参照 + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-allowedaudienceuris.md b/docs/framework/configure-apps/file-schema/wcf/add-of-allowedaudienceuris.md new file mode 100644 index 00000000000..c20a2ec3c3d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-allowedaudienceuris.md @@ -0,0 +1,72 @@ +--- +title: "<allowedAudienceUris> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4e7b7637-e0ea-4a91-988f-6b6ef28d9fc3 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <allowedAudienceUris> の <add> + インスタンスにより有効と見なされるように、 セキュリティ トークンのターゲットとなる URI を追加します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|allowedAudienceUri| インスタンスにより有効と見なされるように、 セキュリティ トークンのターゲットとなる URI を含む文字列です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/allowedaudienceuris.md)| インスタンスにより有効と見なされるように、 セキュリティ トークンのターゲットとなる URI のコレクションを表します。| + +## 解説 + このコレクションは、 セキュリティ トークンを発行するセキュリティ トークン サービス \(STS\) を利用するフェデレーション アプリケーションで使用する必要があります。 STS がセキュリティ トークンを発行する場合、このセキュリティ トークンに を追加して、セキュリティ トークンの提供先となる Web サービスの URI を指定できます。 これにより、受け取り側 Web サービスは、次のようにしてこのチェックが行われるように指定することで、発行されたセキュリティ トークンがこの Web サービスを対象としていることを確認できます。 + +- `` の `audienceUriMode` 属性を または に設定します。 + +- このコレクションに URI を追加して、有効な URI のセットを指定します。 + + 詳細については、「」を参照してください。 + + この構成要素の使用の詳細については、「[方法 : フェデレーション サービスで資格情報を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md)」を参照してください。 + +## 参照 + + + + + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/allowedaudienceuris.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md) + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [方法 : フェデレーション サービスで資格情報を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-authorizationpolicies.md b/docs/framework/configure-apps/file-schema/wcf/add-of-authorizationpolicies.md new file mode 100644 index 00000000000..d4659184633 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-authorizationpolicies.md @@ -0,0 +1,66 @@ +--- +title: "<authorizationPolicies> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 613a03d8-4384-4556-bce2-8c23286c0bb0 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <authorizationPolicies> の <add> +クレームの変換の承認ポリシーを指定します。 + +## 構文 + +``` + + + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`policyType`|必須の文字列属性。

[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アクセス制御モデルは、承認ポリシーのセットを型として提供します。 この属性は、入力クレームのセットをクレームの別のセットに変換することを可能にする承認ポリシーを指定します。 アクセス制御は、それに基づいて許可または拒否されます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/authorizationpolicies.md)|承認ポリシーの種類のコレクションを指定します。| + +## 解説 + 各承認ポリシーは、文字列の単一の必須属性 `policyType` を含みます。 この属性は、入力クレームのセットをクレームの別のセットに変換することを可能にする承認ポリシーを指定します。 アクセス制御は、それに基づいて許可または拒否されます。 認証ポリシーの動作の詳細については、「」および「[承認ポリシー](../../../../../docs/framework/wcf/samples/authorization-policy.md)」を参照してください。 + +## 参照 + + + + + + + + [サービス操作へのアクセスの承認](../../../../../docs/framework/wcf/samples/authorizing-access-to-service-operations.md) + [方法 : サービスで使用するカスタム承認マネージャーを作成する](../../../../../docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-authorizationpolicies.md) + [承認ポリシー](../../../../../docs/framework/wcf/samples/authorization-policy.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-backuplist.md b/docs/framework/configure-apps/file-schema/wcf/add-of-backuplist.md new file mode 100644 index 00000000000..6b3069b2c69 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-backuplist.md @@ -0,0 +1,59 @@ +--- +title: "<backupList> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bc5939fc-314a-4ea4-a533-c96958da7173 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <backupList> の <add> +バックアップ エンドポイント要素を定義する構成要素を表します。 + +## 構文 + +```vb + + + + + + + + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|バックアップ エンドポイントの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|プライマリ エンドポイントに接続できないときにルーティング サービスが使用するエンドポイントのリストを格納します。| + +## 参照 + [System.ServiceModel.Routing.Configuration.BackupEndpointElement](assetId:///System.ServiceModel.Routing.Configuration.BackupEndpointElement?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-baseaddresses.md b/docs/framework/configure-apps/file-schema/wcf/add-of-baseaddresses.md new file mode 100644 index 00000000000..03e1d788210 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-baseaddresses.md @@ -0,0 +1,54 @@ +--- +title: "<baseAddresses> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1bd7426f-5f4f-43fc-b8e9-de842219aa32 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <baseAddresses> の <add> +サービス ホストによって使用されるベース アドレスを指定する構成要素を表します。 + +## 構文 + +``` + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`baseAddress`|サービス ホストによって使用されるベース アドレスを指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/baseaddresses.md)|`baseAddress` 要素のコレクション。| + +## 参照 + + + + [ホスト](../../../../../docs/framework/wcf/feature-details/hosting.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-baseaddressprefixfilter.md b/docs/framework/configure-apps/file-schema/wcf/add-of-baseaddressprefixfilter.md new file mode 100644 index 00000000000..29ad9d24990 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-baseaddressprefixfilter.md @@ -0,0 +1,89 @@ +--- +title: "<baseAddressPrefixFilter> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b226bede-8459-4de9-b2ac-3d39604ce2bc +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <baseAddressPrefixFilter> の <add> +パススルー フィルターを指定する構成要素を表します。パススルー フィルターには、インターネット インフォメーション サービス \(IIS\) で [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アプリケーションをホストする場合に適切な IIS バインドを選択する機構が用意されています。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|prefix|ベース アドレスの一部の一致に使用される URI。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/baseaddressprefixfilters.md)|パススルー フィルターを指定する構成要素のコレクション。パススルー フィルターには、IIS で [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アプリケーションをホストする場合に適切な IIS バインドを選択する機構が用意されています。| + +## 解説 + プレフィックス フィルターは、サービスによって使用される URI を、共有ホスティング プロバイダーが指定できるようにする手段を提供します。 これにより、共有ホストは、同じサイト上の同じスキームに対して、別々のベース アドレスを使用して複数のアプリケーションをホストできるようになります。 + + IIS Web サイトは、仮想ディレクトリを含む仮想アプリケーションのコンテナーです。 サイト内のアプリケーションに、1 つ以上の IIS バインディングからアクセスできます。 IIS バインディングは、バインディング プロトコルとバインディング情報という 2 つの情報を提供します。 バインディング プロトコル \(HTTP など\) は通信を行うスキームを定義し、バインディング情報 \(IP アドレス、ポート、ホスト ヘッダーなど\) にはサイトにアクセスするために使用するデータが含まれます。 + + IIS では、サイトごとに複数の IIS バインディングを指定できるので、各スキームに複数のベース アドレスが定義されることがあります。 これに対して、サイトでホストされる [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスでは、スキームごとに 1 つのベース アドレスにしかバインドできません。そこで、プレフィックス フィルター機能を使用すると、ホストされるサービスの必要なベース アドレスを選択できます。 IIS によって指定される受信ベース アドレスは、オプションのプレフィックス リスト フィルターに基づいてフィルター処理されます。 + + たとえば、サイトに次のベース アドレスが含まれているとします。 + +``` +http://testl.fabrikam.com/Service.svc +http://test2.fabrikam.com/Service.svc +``` + + 次の構成ファイルを使用して、appdomain レベルでプレフィックス フィルターを指定できます。 + +``` + + + +        +        + + +``` + + この例では、`net.tcp://test1.fabrikam.com:8000` と `http://test2.fabrikam.com:9000` はそれぞれのスキームにおいて、そのまま渡すことができる唯一のベース アドレスです。 + + 既定では、プレフィックスを指定しない場合、すべてのアドレスが渡されます。 プレフィックスだけを指定すると、そのスキームに一致するベース アドレスを渡すことができます。 + +> [!NOTE] +> フィルターでワイルドカードはサポートされません。 また、IIS が提供する baseAddresses には、`baseAddressPrefixFilters` リストに存在しない他のスキームにバインドされたアドレスが指定される場合があります。 これらのアドレスはフィルターで除外されません。 + +## 参照 + + + + [ホスト](../../../../../docs/framework/wcf/feature-details/hosting.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-claimtyperequirements-element.md b/docs/framework/configure-apps/file-schema/wcf/add-of-claimtyperequirements-element.md new file mode 100644 index 00000000000..a5f205ceed8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-claimtyperequirements-element.md @@ -0,0 +1,82 @@ +--- +title: "<claimTypeRequirements> 要素の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3234cd45-1478-468e-8b19-5c50815c4786 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <claimTypeRequirements> 要素の <add> +フェデレーション資格情報に表示されると予想される必須のクレームおよび省略可能なクレームの種類を指定します。 たとえば、サービスは、クレームの種類の特定のセットを処理する必要がある受信資格情報について要件を記述します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|claimType|クレームの種類を定義する URI。 たとえば、Web サイトから製品を購入するために、ユーザーは、十分な与信限度額を備えた有効なクレジット カードを示す必要があります。 クレームの種類として、クレジット カードの URI があります。| +|isOptional|これが省略可能なクレームかどうかを指定するブール値。 これが必須のクレームの場合は、この属性を `false` に設定します。

サービスが必須でない情報を求めるときにこの属性を使用できます。 たとえば、ユーザーに氏名と住所の入力を要求し、電話番号は省略可能にする場合などです。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-for-message.md)|必須のクレームの種類のコレクションを指定します。 各要素は 型です。

フェデレーション シナリオでは、サービスが受信資格情報についての要件を記述します。 たとえば、受信資格情報は、特定のクレーム タイプのセットを処理する必要があります。 このコレクションの要素はそれぞれ、フェデレーション資格情報に表示されると予想される必須の要求および省略可能な要求の種類を指定します。| + +## 解説 + フェデレーション シナリオでは、サービスが受信資格情報についての要件を記述します。 たとえば、受信資格情報は、特定のクレーム タイプのセットを処理する必要があります。 この要件はセキュリティ ポリシー内に明記されます。 クライアントがフェデレーション サービスの資格情報 \(CardSpace など\) を要求する場合、クライアントは要件をトークン要求 \(RequestSecurityToken\) に設定します。これにより、フェデレーション サービスは、要件どおりの資格情報を発行できます。 + +## 使用例 + 次の構成では、2 つのクレームの種類の要件をセキュリティ バインディングに追加しています。 + +``` + + + + + + + + + + + + + + +``` + +## 参照 + + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-claimtyperequirements.md b/docs/framework/configure-apps/file-schema/wcf/add-of-claimtyperequirements.md new file mode 100644 index 00000000000..de554dd1c77 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-claimtyperequirements.md @@ -0,0 +1,90 @@ +--- +title: "<claimTypeRequirements> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c68e83c9-39e8-4264-b1ce-b6a9eb5b98aa +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <claimTypeRequirements> の <add> +フェデレーション資格情報に表示されると予想される必須のクレームおよび省略可能なクレームの種類を指定します。 たとえば、サービスは、クレームの種類の特定のセットを処理する必要がある受信資格情報について要件を記述します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|claimType|クレームの種類を定義する URI。 たとえば、Web サイトから製品を購入するために、ユーザーは、十分な与信限度額を備えた有効なクレジット カードを示す必要があります。 クレームの種類として、クレジット カードの URI があります。| +|isOptional|これが省略可能なクレームかどうかを指定するブール値。 これが必須のクレームの場合は、この属性を `false` に設定します。

サービスが必須でない情報を求めるときにこの属性を使用できます。 たとえば、ユーザーに氏名と住所の入力を要求し、電話番号は省略可能にする場合などです。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-element.md)|必須のクレームの種類のコレクションを指定します。

フェデレーション シナリオでは、サービスが受信資格情報についての要件を記述します。 たとえば、受信資格情報は、特定のクレーム タイプのセットを処理する必要があります。 このコレクションの要素はそれぞれ、フェデレーション資格情報に表示されると予想される必須の要求および省略可能な要求の種類を指定します。| + +## 解説 + フェデレーション シナリオでは、サービスが受信資格情報についての要件を記述します。 たとえば、受信資格情報は、特定のクレーム タイプのセットを処理する必要があります。 この要件はセキュリティ ポリシー内に明記されます。 クライアントがフェデレーション サービスの資格情報 \(CardSpace など\) を要求する場合、クライアントは要件をトークン要求 \(RequestSecurityToken\) に設定します。これにより、フェデレーション サービスは、要件どおりの資格情報を発行できます。 + +## 使用例 + 次の構成では、2 つのクレームの種類の要件をセキュリティ バインディングに追加しています。 + +``` + + + + + + + + + + + + + + +``` + +## 参照 + + + + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-element.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-commonparameters.md b/docs/framework/configure-apps/file-schema/wcf/add-of-commonparameters.md new file mode 100644 index 00000000000..1978041d409 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-commonparameters.md @@ -0,0 +1,89 @@ +--- +title: "<commonParameters> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3713bf25-20c8-455f-bb85-de46b6487932 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <commonParameters> の <add> +複数のサービスでグローバルに使用されるパラメーターの名前と値のペアを指定します。 このパラメーターには通常、永続性サービスによって共有されるデータベース接続文字列が格納されます。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|サービスに対して指定されたパラメーターの名前。| +|value|サービスに対して指定されたパラメーターの値。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](http://msdn.microsoft.com/ja-jp/d0e1e6fc-985a-4713-b7da-194e30dfab4c)|サービスによって使用される共通パラメーターのコレクション。 このコレクションには通常、永続性サービスによって共有されるデータベース接続文字列が格納されます。| + +## 解説 + 最初の要素 `` は、複数のサービスでグローバルに使用されるパラメーターを定義します \(たとえば を使用する場合の `ConnectionString`\)。 + + など、作業バッチを永続的ストアにコミットするサービスでは、`EnableRetries` パラメーターを次の例のように使用することで、トランザクションの再試行を有効にできます。 + +``` + + + + + + + + + +``` + + `EnableRetries` パラメーターは、*CommonParameters* セクションのようにグローバル レベルで設定したり、*Services* セクションのように `EnableRetries` をサポートするサービスごとに設定したりできます。 + + Windows Workflow Foundation ホスト アプリケーションの オブジェクトの動作を制御する構成ファイルの使い方の詳細については、「[Workflow Configuration Files](http://msdn.microsoft.com/ja-jp/ada4bb90-6c9d-4f3d-a9d0-b559bb0f9909)」を参照してください。 + +## 使用例 + +``` + + + + +``` + +## 参照 + + + + + + [Workflow Configuration Files](http://msdn.microsoft.com/ja-jp/ada4bb90-6c9d-4f3d-a9d0-b559bb0f9909) + [\](http://msdn.microsoft.com/ja-jp/d0e1e6fc-985a-4713-b7da-194e30dfab4c) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-contracttypenames.md b/docs/framework/configure-apps/file-schema/wcf/add-of-contracttypenames.md new file mode 100644 index 00000000000..2c203ad142b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-contracttypenames.md @@ -0,0 +1,71 @@ +--- +title: "<contractTypeNames> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 03aff6be-5dfb-4a64-ada3-e36227cd43c7 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <contractTypeNames> の <add> +検索対象サービスのコントラクト名と、サービスを検索するときに一般的に使用される条件を指定する構成要素。 複数のコントラクト名が指定されると、すべてのコントラクトに一致するサービス エンドポイントのみが適用されます。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] では、1 つのエンドポイントでサポートされるのは 1 つのコントラクトだけであることに注意してください。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|コントラクト型の名前を指定する文字列。| +|namespace|コントラクト型の名前空間を指定する文字列。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/contracttypenames.md)|コントラクトの型名のコレクション。| + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-declaredtypes-element.md b/docs/framework/configure-apps/file-schema/wcf/add-of-declaredtypes-element.md new file mode 100644 index 00000000000..f138f1506cb --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-declaredtypes-element.md @@ -0,0 +1,85 @@ +--- +title: "<declaredTypes> 要素の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ コントラクト" + - "DataContractAttribute" + - "DataContractSerializer" + - "dataContractSerializer 要素" +ms.assetid: c3d37ae4-8f1c-463f-b195-658c5a7e90a1 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# <declaredTypes> 要素の <add> +逆シリアル化中に、 で使用される型を追加します。 各宣言型は、宣言型のフィールドまたはプロパティとして返される既知の型を含みます。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|型|必須の文字列属性です。

型名 \(名前空間を含む\)、アセンブリ名、バージョン番号、カルチャ、および公開キー トークンを指定します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/knowntype.md)|追加される宣言型の既知の型を指定します。 宣言型がジェネリック型の場合は、既知の型を返すために使用されるジェネリック パラメーターを指定するために、`` にパラメーター要素も追加する必要があります。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/declaredtypes.md)| による逆シリアル化中に既知のタイプを必要とするタイプが含まれています。| + +## 解説 + 既知の型の詳細については、「[既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」および「」を参照してください。 + + この要素の使用例については、「[\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md)」を参照してください。 + +> [!NOTE] +> 型を `` として追加すると、 がスローされます。 これは、構成で 型を宣言型として使用できないためです。 + +## 使用例 + +``` + + + +``` + +## 参照 + + [既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md) + [\ of \](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-declaredtypes-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-defaultports.md b/docs/framework/configure-apps/file-schema/wcf/add-of-defaultports.md new file mode 100644 index 00000000000..cf8682e6409 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-defaultports.md @@ -0,0 +1,53 @@ +--- +title: "<defaultPorts> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f162ce42-963b-4779-96a7-d6d8b4ea0d2f +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <defaultPorts> の <add> +クライアント アプリケーションがリッスンする既定の通信エンドポイント。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|ポート|既定の通信ポート番号を指定する整数。| +|scheme|通信ポートに関連付けられているプロトコル設定のグループを示す文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/defaultports.md)|クライアント アプリケーションがリッスンする既定の通信エンドポイントの一覧を表示する既定のポートのコレクション。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-entries.md b/docs/framework/configure-apps/file-schema/wcf/add-of-entries.md new file mode 100644 index 00000000000..1c59834dcbd --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-entries.md @@ -0,0 +1,68 @@ +--- +title: "<entries> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3af4805b-dc72-4f68-b168-da4fba8c6170 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <entries> の <add> +以前に定義されたクライアント エンドポイントにフィルターをマップするルーティング エントリを表します。 このフィルターに一致するメッセージは、この宛先に送信されます。 + +## 構文 + +```vb + + +      +         +          +            +          +        +      + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|backupList|エンドポイントのバックアップ リストへの参照を指定する文字列。| +|エンドポイント|`filterName` 属性で指定されたフィルターに一致するメッセージを受信するクライアント エンドポイントへの参照を指定する文字列。| +|filterName|フィルター要素への参照を指定する文字列。| +|priority|このエントリの優先順位を指定する整数。

ルーティング テーブルのエントリは、優先順位に基づいて評価されます。0 が最下位の優先順位です。 特定の優先順位について、すべてのエントリが同時に評価されます。現在の優先順位について一致するエントリが見つからない場合は、次の優先順位が評価されます。

この値はオプションです。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|ルーティング マッピング エントリを含む構成セクション。| + +## 参照 + [System.ServiceModel.Routing.Configuration.RoutingSection](assetId:///System.ServiceModel.Routing.Configuration.RoutingSection?qualifyHint=False&autoUpgrade=True) + [System.ServiceModel.Routing.Configuration.FilterTableEntryElement](assetId:///System.ServiceModel.Routing.Configuration.FilterTableEntryElement?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-filters.md b/docs/framework/configure-apps/file-schema/wcf/add-of-filters.md new file mode 100644 index 00000000000..1ac284a7743 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-filters.md @@ -0,0 +1,83 @@ +--- +title: "<filters> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e3bf437c-dd99-49f3-9792-9a8721e6eaad +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <filters> の <add> +ログに記録するメッセージの種類を指定する XPath フィルター。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|フィルター|XPath 1.0 の式によって定義される、XML ドキュメントのクエリを指定する文字列。 詳細については、「」を参照してください。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filters.md)|ログに記録されるメッセージの種類を制御する XPath フィルターのコレクションを格納します。| + +## 解説 + フィルターは、`logMessagesAtTransportLevel` を `true` に設定することによって指定されるトランスポート層でのみ適用されます。 サービス レベルおよび形式が正しくないメッセージ ログ記録は、フィルターの影響を受けません。 + + コレクションにフィルターを追加するには、`add` を使用します。 1 つ以上のフィルターを定義した場合は、少なくとも 1 つのフィルターと一致するメッセージだけが記録されます。 フィルターを定義しなかった場合は、すべてのメッセージが通過します。 + + フィルターは、完全な XPath 構文をサポートし、構成ファイルでの出現順に適用されます。 フィルターが構文的に正しくない場合は、構成例外が発生します。 + + SOAP ヘッダー セクションがあるメッセージだけを記録するフィルターの設定方法の例を次に示します。 + +## 使用例 + SOAP ヘッダー セクションがあるメッセージだけを記録するフィルターの設定方法の例を次に示します。 + +``` + + /soap:Envelope/soap:Headers +
+
+ +``` + +## 参照 + + + + + + + + [メッセージ ログの構成](../../../../../docs/framework/wcf/diagnostics/configuring-message-logging.md) + [メッセージ ログの構成](../../../../../docs/framework/wcf/diagnostics/configuring-message-logging.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/messagelogging.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-issuerchannelbehaviors.md b/docs/framework/configure-apps/file-schema/wcf/add-of-issuerchannelbehaviors.md new file mode 100644 index 00000000000..328dd5bde22 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-issuerchannelbehaviors.md @@ -0,0 +1,68 @@ +--- +title: "<issuerChannelBehaviors> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 50710506-e28f-45dd-ab7e-bff6f44173db +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <issuerChannelBehaviors> の <add> +STS と通信するときに使用されるエンドポイントの動作を追加します。 + +> [!NOTE] +> エンドポイントの動作に [\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md) 要素が含まれている場合は、例外がスローされます。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|issuerAddress|通信するためのセキュリティ トークン発行者の URI。| +|behaviorConfiguration|同じ構成ファイルに定義されたエンドポイントの動作の名前。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuerchannelbehaviors-element.md)|指定されたセキュリティ トークン サービスと通信するときに使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] クライアント エンドポイントの動作のコレクションが含まれています。| + +## 解説 + `issuerAddress` には、クライアントの通信相手となるセキュリティ トークン サービスの URI が含まれます。 `behaviorConfiguration` は、アプリケーションが使用するエンドポイント動作を表します。アプリケーションは、セキュリティ トークン サービスから発行されたトークンを取得するために、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] によって作成されたチャネルでこの動作を使用します。 + +## 参照 + + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [方法 : フェデレーション クライアントを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [方法 : ローカル発行者を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuerchannelbehaviors-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md b/docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md new file mode 100644 index 00000000000..2e37f717978 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md @@ -0,0 +1,129 @@ +--- +title: "<knownCertificates> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 128aaabe-3f1a-4c3b-b59f-898d0f02910f +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <knownCertificates> の <add> +既知の証明書のコレクションに X.509 証明書を追加します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|findValue|文字列。 検索対象の値。| +|storeLocation|列挙値。 検索する 2 つの格納場所のいずれかです。| +|storeName|列挙値。 検索するシステム ストアのいずれかです。| +|x509FindType|列挙値。 検索する証明書フィールドのいずれかです。| + +## findValue 属性 + +|値|説明| +|-------|--------| +|String|値は、検索されるフィールド \(X509FindType 属性により指定される\) によって異なります。 たとえば、サムプリント検索する場合、値は 16 進数の文字列にする必要があります。| + +## x509FindType 属性 + +|値|説明| +|-------|--------| +|列挙型|値は、FindByThumbprint、FindBySubjectName、FindBySubjectDistinguishedName、FindByIssuerName、FindByIssuerDistinguishedName、FindBySerialNumber、FindByTimeValid、FindByTimeNotYetValid、FindBySerialNumber、FindByTimeExpired、FindByTemplateName、FindByApplicationPolicy、FindByCertificatePolicy、FindByExtension、FindByKeyUsage、FindBySubjectKeyIdentifier です。| + +## storeLocation 属性 + +|値|説明| +|-------|--------| +|列挙型|CurrentUser または LocalMachine です。| + +## storeName 属性 + +|値|説明| +|-------|--------| +|列挙型|値は、AddressBook、AuthRoot、CertificateAuthority、Disallowed、My、Root、TrustedPeople、および TrustedPublisher です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/knowncertificates.md)|セキュリティ トークンを検証するためのセキュリティ トークン サービス \(STS\) によって提供される X.509 証明書のコレクションを表します。| + +## 解説 + 発行されるトークンのシナリオには、3 つの段階があります。 まず、サービスにアクセスしようとしているクライアントが*セキュリティ トークン サービス*に参照されます。 次に、セキュリティ トークン サービスがクライアントを認証し、その後、クライアントにトークン \(通常は、SAML \(Security Assertions Markup Language\) トークン\) を発行します。 最後に、クライアントがトークンを持ってサービスに戻ります。 サービスはトークンを調べ、トークンを認証することでクライアントの認証を可能にするデータを確認します。 トークンを認証するには、セキュリティ トークン サービスで使用される証明書がサービスによって認識されている必要があります。 + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md) 要素は、このようなセキュリティ トークン サービス証明書のリポジトリです。 証明書を追加するには、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/knowncertificates.md) を使用します。 次の例に示すように、証明書ごとに [\ element \ Element](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md) を挿入します。 + +``` + + + + + +``` + + 既定では、証明書はセキュリティ トークン サービスから取得する必要があります。 このような "既知" の証明書により、正当なクライアントのみがサービスにアクセスできるようになります。 + + クライアントがフェデレーション サービスによって認証される条件と、この構成要素の使い方の詳細については、「[方法 : フェデレーション サービスで資格情報を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md)」を参照してください。 フェデレーション シナリオの詳細については、「[フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md)」を参照してください。 + +## 使用例 + 以下の例では、STS 証明書のリポジトリに証明書を追加します。 + +``` + + + + + + + + + + + +``` + +## 参照 + + + + + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/knowncertificates.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [方法 : フェデレーション サービスで資格情報を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-namespacetable.md b/docs/framework/configure-apps/file-schema/wcf/add-of-namespacetable.md new file mode 100644 index 00000000000..8ebb2fb7e1f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-namespacetable.md @@ -0,0 +1,58 @@ +--- +title: "<namespaceTable> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cf7b5b75-63bd-49a6-abac-4bfdab377e36 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <namespaceTable> の <add> +名前空間とプレフィックスのマッピングを含む構成要素を表します。これは、ルーティングの XPath フィルターで使用されます。 + +## 構文 + +```vb + + + +   + + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|namespace|名前空間を示す文字列。| +|prefix|この名前空間のプレフィックスを示す文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/namespacetable.md)|名前空間とプレフィックスのマッピングを含む要素セットを定義する構成セクションを表します。これは、ルーティングの XPath フィルターで使用されます。| + +## 参照 + [System.ServiceModel.Routing.Configuration.NamespaceElement](assetId:///System.ServiceModel.Routing.Configuration.NamespaceElement?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-protocolmapping.md b/docs/framework/configure-apps/file-schema/wcf/add-of-protocolmapping.md new file mode 100644 index 00000000000..bb4f568e2a7 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-protocolmapping.md @@ -0,0 +1,74 @@ +--- +title: "<protocolMapping> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 08e62249-1641-41d1-91b1-66d7b46244e4 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <protocolMapping> の <add> +トランスポート プロトコル スキーム \(http、net.tcp、net.pipe など\) と [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] バインディング間の既定のプロトコル マッピングを表します。 実行時に既定のエンドポイントを作成するときに、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は構成されたマッピングを確認し、特定のベース アドレスに使用するバインディングを決定します。 + +## 構文 + +```vb + + +    + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|要素|説明| +|--------|--------| +|バインド|既定のエンドポイントを作成するときにエンドポイントに使用されるバインディングの種類を指定する文字列。| +|bindingConfiguration|参照されるバインディング構成セクションの名前を指定する文字列。| +|scheme|既定のエンドポイントに使用されるトランスポート プロトコル スキーム。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/protocolmapping.md)|トランスポート プロトコル スキーム \(http、net.tcp、net.pipe など\) と [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] バインディング間の既定のプロトコル マッピングを定義する構成セクションを表します。| + +## 使用例 + 次の構成例は、machine.config ファイル内の既定のプロトコル マッピングを示しています。 machine.config ファイルを変更することで、既定のマッピングをコンピューター レベルでオーバーライドできます。 または、アプリケーションのスコープ内だけでオーバーライドする場合は、アプリケーション構成ファイルのこのセクションをオーバーライドし、各プロトコル スキームのマッピングを変更できます。 + +``` + + +        +        +        +        + + +``` + +## 参照 + [System.ServiceModel.Configuration.ProtocolMappingSection](assetId:///System.ServiceModel.Configuration.ProtocolMappingSection?qualifyHint=False&autoUpgrade=True) + [System.ServiceModel.Configuration.ProtocolMappingElement](assetId:///System.ServiceModel.Configuration.ProtocolMappingElement?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-scopedcertificates-element.md b/docs/framework/configure-apps/file-schema/wcf/add-of-scopedcertificates-element.md new file mode 100644 index 00000000000..b06321aeb3e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-scopedcertificates-element.md @@ -0,0 +1,119 @@ +--- +title: "<scopedCertificates> 要素の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e21c1ef8-d6d6-4bca-ac5a-6fbf4bd77412 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <scopedCertificates> 要素の <add> +範囲指定された証明書のコレクションに X.509 証明書を追加します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|targetUri|文字列。 証明書に関連付けられているサービスの URI を指定します。| +|findValue|文字列。 検索対象の値。| +|x509FindType|列挙値。 検索する証明書フィールドのいずれかです。| +|storeLocation|列挙値。 検索する 2 つの格納場所のいずれかです。| +|storeName|列挙値。 検索するシステム ストアのいずれかです。| + +## findValue 属性 + +|値|説明| +|-------|--------| +|String|値は、検索されるフィールド \(X509FindType 属性により指定される\) によって異なります。 たとえば、サムプリント検索する場合、値は 16 進数の文字列にする必要があります。| + +## x509FindType 属性 + +|値|説明| +|-------|--------| +|列挙型|値は、FindByThumbprint、FindBySubjectName、FindBySubjectDistinguishedName、FindByIssuerName、FindByIssuerDistinguishedName、FindBySerialNumber、FindByTimeValid、FindByTimeNotYetValid、FindBySerialNumber、FindByTimeExpired、FindByTemplateName、FindByApplicationPolicy、FindByCertificatePolicy、FindByExtension、FindByKeyUsage、FindBySubjectKeyIdentifier です。| + +## storeLocation 属性 + +|値|説明| +|-------|--------| +|列挙型|CurrentUser または LocalMachine です。| + +## storeName 属性 + +|値|説明| +|-------|--------| +|列挙型|値は、AddressBook、AuthRoot、CertificateAuthority、Disallowed、My、Root、TrustedPeople、および TrustedPublisher です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/scopedcertificates-element.md)|認証用の \(範囲指定された\) 特定のサービスにより提供される X.509 証明書のコレクションを表します。| + +## 解説 + この要素を使用すると、クライアントは、通信するサービスの URL に基づいて、使用するサービス証明書を構成できます。 これは、クライアントが複数のサービス \(エンド サービスと中間セキュリティ トークン サービス\) と通信している可能性がある発行済みトークンのシナリオで特に便利です。 証明書に基づくメッセージ セキュリティを使用したバインドにおいて、この証明書を使用してサービスへのメッセージを暗号化します。サービスがクライアントへの応答に署名する際には、この証明書を使用することが要求されます。 + + バインディングにサービスの証明書が必要で、サービスの URL に対する特定の証明書が ScopedCertificates 内に存在しない場合は、既定の証明書が使用されます。 + + 詳細については、「[方法 : フェデレーション クライアントを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md)」の「範囲指定された証明書」セクションを参照してください。 + +## 使用例 + 次の例は、コレクションに X.509 証明書を追加します。 + +``` + + + + + + + + + + + + + +``` + +## 参照 + + + + + + [方法 : フェデレーション クライアントを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-scopes.md b/docs/framework/configure-apps/file-schema/wcf/add-of-scopes.md new file mode 100644 index 00000000000..29d269db6e9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-scopes.md @@ -0,0 +1,59 @@ +--- +title: "<scopes> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0563a7d8-fc84-4c85-9066-af32665857c2 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <scopes> の <add> +クエリの実行中に、サービス エンドポイントのフィルター処理に使用できるカスタム スコープ URI を追加します。 + +## 構文 + +``` + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|スコープ|サービス検索の一致条件に使用できるエンドポイントのスコープ情報を格納する URI。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/scopes.md)|クエリの実行中に、サービス エンドポイントのフィルター処理に使用できるカスタム スコープ URI を指定する構成要素のコレクションを含んでいます。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-serviceactivations.md b/docs/framework/configure-apps/file-schema/wcf/add-of-serviceactivations.md new file mode 100644 index 00000000000..b4175ef0759 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-serviceactivations.md @@ -0,0 +1,79 @@ +--- +title: "<serviceActivations> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e5b01fc8-ee84-48b7-95fd-95ab54fa871f +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <serviceActivations> の <add> +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスの種類にマップする仮想サービス アクティベーション設定を定義できる構成要素。 これにより、.svc ファイルを使用せずに、WAS\/IIS でホストされているサービスをアクティブ化できます。 + +## 構文 + +``` + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|factory|サービス アクティベーション要素を生成するファクトリの CLR 型名を指定する文字列。| +|service|サービスを実装する ServiceType \(完全修飾 Typename または省略形の Typename \(App\_Code フォルダーに配置されている場合\)\)。| +|relativeAddress|現在の IIS アプリケーション内の相対アドレス \(たとえば "Service.svc"\)。 WCF 4.0 ではこの相対アドレスが 1 個の既知のファイル拡張子 \(.svc、.xamlx など\) を含む必要があります。 relativeUrl 用の物理ファイルは必要ありません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md)|アクティベーション設定を記述する構成セクション。| + +## 解説 + web.config ファイルでアクティベーション設定を構成する方法を次の例に示します。 + +``` + +    +      +        +      +    + +``` + + この構成を使用して、.svc ファイルを使用せずに、GreetingService をアクティブ化できます。 + + `` はアプリケーション レベルの構成であることに注意してください。 構成を格納した `web.config` は、仮想アプリケーションのルートの下に配置する必要があります。 また、`serviceHostingEnvironment` は machinetoApplication の継承可能なセクションです。 コンピューターのルートに単一のサービスを登録すると、アプリケーションの各サービスはこのサービスを継承します。 + + 構成ベースのアクティベーションは、http および非 http プロトコル経由のアクティベーションをサポートします。 relatativeAddress では、 .svc、.xoml、.xamlx などの拡張子が必要です。 既知の buildProviders に対して独自の拡張子をマップできます。これにより、任意の拡張子を使用してサービスをアクティブ化できるようになります。 競合が発生した場合には、`` セクションにより、.svc の登録がオーバーライドされます。 + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-services.md b/docs/framework/configure-apps/file-schema/wcf/add-of-services.md new file mode 100644 index 00000000000..5f86be656fe --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-services.md @@ -0,0 +1,74 @@ +--- +title: "<services> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6bdc4590-aa9c-4ec8-9345-879d780cd141 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <services> の <add> +ワークフロー ベースの [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスをホストする のインスタンスの設定を指定します。 この要素は 型です。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|型|初期化するサービスのアセンブリ修飾型名を指定する文字列。 指定されたサービスは、そのコンストラクターのシグネチャに関して一定の規則に従う必要があります。 詳細については、「」を参照してください。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/services-of-workflowruntime.md)| エンジンに追加されるサービスのコレクション。 要素は、 型です。 コレクションで指定されたサービスはワークフロー ランタイム エンジンによって初期化され、適切な コンストラクターが呼び出されるとワークフロー ランタイム エンジンのサービスに追加されます。 したがって、コレクションで指定されたサービスは、そのコンストラクターのシグネチャに関して一定の規則に従う必要があります。 詳細については、「」を参照してください。| + +## 解説 + この要素で指定されたサービスはワークフロー ランタイム エンジンによって初期化され、適切な コンストラクターが呼び出されるとワークフロー ランタイム エンジンのサービスに追加されます。 したがって、指定されたサービスは、そのコンストラクターのシグネチャに関して一定の規則に従う必要があります。 詳細については、「」を参照してください。 + +## 使用例 + +``` + + + + + + + + + +``` + +## 参照 + + + + [Workflow Configuration Files](http://msdn.microsoft.com/ja-jp/ada4bb90-6c9d-4f3d-a9d0-b559bb0f9909) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-transportconfigurationtype.md b/docs/framework/configure-apps/file-schema/wcf/add-of-transportconfigurationtype.md new file mode 100644 index 00000000000..fbe6477453b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-transportconfigurationtype.md @@ -0,0 +1,71 @@ +--- +title: "<transportConfigurationType> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 03d79db9-571d-4534-acef-d05e5467b257 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# <transportConfigurationType> の <add> +この要素は、特定のトランスポートの種類を識別するキーと値のペアです。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|必須の文字列属性です。

トランスポートの種類を一意に識別するユーザー定義キーを含みます。| +|transportConfigurationType|特定のトランスポートを実装する種類を含む文字列。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transportconfigurationtypes.md)|特定のトランスポートを実装する型のコレクション。| + +## 使用例 + +``` + + + + + +``` + +## 参照 + + + + [ホスト](../../../../../docs/framework/wcf/feature-details/hosting.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/add-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/add-of-wcf.md new file mode 100644 index 00000000000..df0d6b5158b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/add-of-wcf.md @@ -0,0 +1,101 @@ +--- +title: "WCF の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c196f6d7-77f6-4266-973c-305b2b4dd8a2 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <add> +ランタイムから直接出力される追跡レコードをリッスンし、追跡レコードの構成方法に従って処理を行う追跡参加要素を構成します。 これには、特定の出力 \(ファイル、コンソール、ETW など\) への書き込み、レコードの処理や集計、またはその他の必要な組み合わせが含まれます。 + + ワークフロー追跡と追跡参加要素の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」および「[追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|要素|説明| +|--------|--------| +|name|追跡参加要素の名前を指定する文字列。| +|profileName|追跡参加要素が定期受信した追跡レコードを定義する、追跡プロファイルの名前を指定する文字列。| +|型|追跡参加要素の型を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md)|追跡参加要素の一覧| + +## 解説 + 追跡参加要素は、ワークフローから生成される追跡データを取得し、それを別のメディアに保存するために使用します。 同様に、追跡レコードの後処理はすべて、追跡参加要素内でも実行できます。 + + 複数の追跡参加要素が追跡イベントを同時に使用することができます。 各追跡参加要素は、それぞれ別の追跡プロファイルと関連付けることができます。 + + 追跡レコードを ETW セッションに書き込む、標準の追跡参加要素が用意されています。 参加要素は、追跡固有の動作を構成ファイルに追加することによって、ワークフロー サービスで構成されます。 ETW 追跡参加要素を有効にすると、追跡レコードをイベント ビューアーで表示できます。 これで要件が満たされない場合は、カスタムの追跡参加要素を作成することもできます。 + +## 使用例 + 次の構成例は、Web.config ファイルで構成されている標準の ETW 追跡参加要素を示します。 + + ETW 追跡参加要素が追跡レコードを ETW に書き込むために使用するプロバイダー ID は、`` セクションで定義されます。 追跡参加要素には、その要素が定期受信した追跡レコードを指定するためのプロファイルが関連付けられています。 これは、`` 要素の `profileName` 属性で定義されます。 これらが定義されると、追跡参加要素は `` サービス動作に追加されます。 これにより、選択した追跡参加要素がワークフロー インスタンスの拡張機能に追加され、追跡レコードの受信が開始されます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/additionalrequestparameters-element.md b/docs/framework/configure-apps/file-schema/wcf/additionalrequestparameters-element.md new file mode 100644 index 00000000000..f42a58d1e62 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/additionalrequestparameters-element.md @@ -0,0 +1,35 @@ +--- +title: "<additionalRequestParameters> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: da8109fb-581c-48f4-b718-3bbda1edc47d +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <additionalRequestParameters> 要素 +追加の要求パラメーターを指定する構成要素のコレクションを含みます。 + +## 参照 + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/allowaccounts.md b/docs/framework/configure-apps/file-schema/wcf/allowaccounts.md new file mode 100644 index 00000000000..e2ef2ea5f92 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/allowaccounts.md @@ -0,0 +1,55 @@ +--- +title: "<allowAccounts> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 166923a9-a8ac-478f-92f9-529d9667f3a6 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <allowAccounts> +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスをホストするプロセスのユーザー アカウントを指定し、共有サービスへの接続アクセス権が付与されている構成要素のコレクションを含みます。 + + \ + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|属性|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-allowaccounts.md)|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスをホストし、共有サービスへの接続アクセスが付与されているプロセスのユーザー アカウントを追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/net-pipe.md) または[\](../../../../../docs/framework/configure-apps/file-schema/wcf/net-tcp.md)|Net Pipe または TCP 共有サービスの構成設定を指定します。| + +## 参照 + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/allowedaudienceuris.md b/docs/framework/configure-apps/file-schema/wcf/allowedaudienceuris.md new file mode 100644 index 00000000000..ed0e0224b4e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/allowedaudienceuris.md @@ -0,0 +1,72 @@ +--- +title: "<allowedAudienceUris> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0f4dc73d-d95d-4193-9755-7df4cf2b8e1c +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <allowedAudienceUris> + インスタンスにより有効と見なされるように、 セキュリティ トークンのターゲットとなる URI のコレクションを表します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-allowedaudienceuris.md)| インスタンスにより有効と見なされるように、 セキュリティ トークンのターゲットとなる URI を追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md)|サービス資格情報として発行されるトークンを指定します。| + +## 解説 + このコレクションは、 セキュリティ トークンを発行するセキュリティ トークン サービス \(STS\) を利用するフェデレーション アプリケーションで使用する必要があります。 STS がセキュリティ トークンを発行する場合、このセキュリティ トークンに を追加して、セキュリティ トークンの提供先となる Web サービスの URI を指定できます。 これにより、受け取り側 Web サービスは、次のようにしてこのチェックが行われるように指定することで、発行されたセキュリティ トークンがこの Web サービスを対象としていることを確認できます。 + +- `` の `audienceUriMode` 属性を または に設定します。 + +- このコレクションに URI を追加して、有効な URI のセットを指定します。 + + 詳細については、「」を参照してください。 + + この構成要素の使用の詳細については、「[方法 : フェデレーション サービスで資格情報を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md)」を参照してください。 + +## 参照 + + + + + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-allowedaudienceuris.md) + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [方法 : フェデレーション サービスで資格情報を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/announcementendpoint.md b/docs/framework/configure-apps/file-schema/wcf/announcementendpoint.md new file mode 100644 index 00000000000..54be6ef94cd --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/announcementendpoint.md @@ -0,0 +1,90 @@ +--- +title: "<announcementEndpoint> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 034b7c69-a770-4502-8cef-38007bbcd025 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <announcementEndpoint> +この構成要素は、固定アナウンス コントラクトが設定されている標準エンドポイントを定義します。 サービスは、サービスが開いたとき、または閉じたときにオンラインおよびオフラインのアナウンス メッセージを送信することによって、その可用性をアナウンスすることもできます。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスは、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicediscovery.md) 要素でアナウンス エンドポイントを指定し、AnnouncementClient を使用してアナウンスを実行します。 他のサービスからのアナウンスをリッスンしようとするクライアントは、実際に、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスとして動作します。このため、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/services.md) セクションに、このクライアントのアナウンス エンドポイントを構成する必要があります。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|discoveryVersion|WS\-Discovery プロトコルの 2 つのバージョンのうち、1 つを指定する文字列。 有効値は WSDiscovery11 と WSDiscoveryApril2005 です。 この値は、 型です。| +|maxAnnouncementDelay|Discovery プロトコルが Hello メッセージを送信するまでの待機時間の最大値を指定する Timespan 値。 メッセージは送信前に 0 からこの属性値の間のランダムな時間だけ待機します。 この属性はランダムな短い待機時間を設定するために使用されるもので、ネットワークが機能しなくなり、すべてのサービスが同時にオンラインに戻ったときにネットワーク ストームが発生することを防ぎます。| +|name|標準エンドポイントの構成名を指定する文字列。 この名前は、サービス エンドポイントの `endpointConfiguration` 属性で使用され、標準エンドポイントと構成を関連付けます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|1 つ以上のプロパティ \(アドレス、バインディング、コントラクト\) が固定されている、あらかじめ定義されたエンドポイントである標準エンドポイントのコレクション。| + +## 使用例 + http およびピア ネットワーク経由でアナウンス メッセージをリッスンするクライアントの例を次に示します。 + +``` + + + + + + ... + + + + + + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md b/docs/framework/configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md new file mode 100644 index 00000000000..ed954aa35c5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md @@ -0,0 +1,118 @@ +--- +title: "<clientCertificate> 要素の <authentication> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4a55eea2-1826-4026-b911-b7cc9e9c8bfe +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# <clientCertificate> 要素の <authentication> +サービスによって使用されるクライアント証明書の認証動作を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|customCertificateValidatorType|省略可能な文字列。 カスタム型の検証に使用される型およびアセンブリです。 `certificateValidationMode` が `Custom` に設定されている場合は、この属性を設定する必要があります。| +|certificateValidationMode|省略可能な列挙体です。 資格情報の検証に使用されるモードのいずれかを指定します。 この属性は [System.Servicemodel.Security.X509CertificateValidationMode](assetId:///System.Servicemodel.Security.X509CertificateValidationMode?qualifyHint=False&autoUpgrade=True) 型です。 `Custom` に設定されている場合、`customCertificateValidator` も指定する必要があります。 既定値は、`ChainTrust` です。| +|includeWindowsGroups|省略可能なブール。 セキュリティ コンテキストに Windows グループが含まれているかどうかを指定します。 この属性を `true` に設定すると、グループ全体が拡張されるため、パフォーマンスに影響が及びます。 ユーザーが属するグループの一覧を生成する必要がない場合は、この属性を `false` に設定します。| +|mapClientCertificateToWindowsAcccount|ブール型。 証明書を使用してクライアントを Windows ID にマップできるかどうかを指定します。 これを行うには、Active Directory が有効である必要があります。| +|revocationMode|省略可能な列挙体です。 証明書失効リスト \(RCL\) のチェックに使用されるモードのいずれかです。 既定値は、`Online` です。 この値は、HTTP トランスポート セキュリティを使用する場合は無視されます。| +|trustedStoreLocation|省略可能な列挙体です。 2 つのシステム格納場所 \(`LocalMachine` または `CurrentUser`\) のいずれかです。 この値は、サービス証明書がクライアントにネゴシエートされるときに使用されます。 指定された格納場所の **\[信頼されたユーザー\]** ストアに対して検証が実行されます。 既定値は、`CurrentUser` です。| + +## customCertificateValidatorType 属性 + +|値|説明| +|-------|--------| +|String|タイプ名およびアセンブリと、タイプの検索に使用される他のデータを指定します。| + +## certificateValidationMode 属性 + +|値|説明| +|-------|--------| +|列挙型|None、PeerTrust、ChainTrust、PeerOrChainTrust、Custom のいずれかの値にします。

詳細については、「[証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。| + +## revocationMode 属性 + +|値|説明| +|-------|--------| +|列挙型|NoCheck、Online、Offline のいずれかの値にします。 詳細については、「[証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。| + +## trustedStoreLocation 属性 + +|値|説明| +|-------|--------| +|列挙型|`LocalMachine` または `CurrentUser` のいずれかの値にします。 既定値は、`CurrentUser` です。 クライアント アプリケーションがシステム アカウントで実行されている場合、証明書は通常 `LocalMachine` の下にあります。 クライアント アプリケーションがユーザー アカウントで実行されている場合、証明書は通常 `CurrentUser` の下にあります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-servicecredentials.md)|サービスに対するクライアントの認証に使用する X.509 証明書を定義します。| + +## 解説 + `` 要素は、 クラスに対応します。 この要素を使用すると、クライアントを認証する方法をカスタマイズできます。 `certificateValidationMode` 属性は、`None`、`ChainTrust`、`PeerOrChainTrust`、`PeerTrust`、または `Custom` に設定できます。 既定のレベルは `ChainTrust` に設定され、チェーンの最上位の*ルート証明機関*で終了する証明書の階層構造で各証明書を検索するよう指定します。 これは最もセキュリティで保護されているモードです。 また、値を `PeerOrChainTrust` に設定することもできます。これは、信頼されたチェーン内の証明書と共に、自己発行された証明書 \(ピア信頼\) も受け入れるよう指定します。 自己発行の資格情報は信頼された証明機関から購入したものである必要はないため、この値はクライアントとサービスの開発およびデバッグに使用されます。 クライアントを展開するときは、代わりに `ChainTrust` 値を使用します。 + + また、値を `Custom` に設定することもできます。 `Custom` 値に設定する場合は、`customCertificateValidatorType` 属性を、証明書の検証に使用するアセンブリと型に設定する必要もあります。 独自のカスタム検証を作成するには、抽象 クラスを継承する必要があります。 詳細については、「[方法 : カスタム証明書検証を使用するサービスを作成する](../../../../../docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md)」を参照してください。 + +## 使用例 + 次のコードは、`` 要素の X.509 証明書とカスタム検証タイプを指定します。 + +``` + + + + + + + + +``` + +## 参照 + + + + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [方法 : カスタム証明書検証を使用するサービスを作成する](../../../../../docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/authentication-of-servicecertificate-element.md b/docs/framework/configure-apps/file-schema/wcf/authentication-of-servicecertificate-element.md new file mode 100644 index 00000000000..b5b70338555 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/authentication-of-servicecertificate-element.md @@ -0,0 +1,110 @@ +--- +title: "<serviceCertificate> 要素の <authentication> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 733b67b4-08a1-4d25-9741-10046f9357ef +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <serviceCertificate> 要素の <authentication> +SSL\/TLS ネゴシエーションを使用して取得されたサービス証明書を認証するためにクライアント プロキシが使用する設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|customCertificateValidatorType|文字列。 カスタム型の検証に使用される型およびアセンブリです。| +|certificateValidationMode|資格情報の検証に使用される 3 つのモードのいずれかを指定します。 `Custom` に設定されている場合、customCertificateValidator も指定する必要があります。 既定値は、`ChainTrust` です。| +|revocationMode|証明書失効リスト \(CRL\) のチェックに使用されるモードのいずれかです。 既定値は、`Online` です。| +|trustedStoreLocation|2 つのシステム格納場所 \(`LocalMachine` または `CurrentUser`\) のいずれかです。 この値は、サービス証明書がクライアントにネゴシエートされるときに使用されます。 指定された格納場所の **\[信頼されたユーザー\]** ストアに対して検証が実行されます。 既定値は、`CurrentUser` です。| + +## customCertificateValidator 属性 + +|値|説明| +|-------|--------| +|String|タイプ名およびアセンブリと、タイプの検索に使用される他のデータを指定します。| + +## certificateValidationMode 属性 + +|値|説明| +|-------|--------| +|列挙型|None、PeerTrust、ChainTrust、PeerOrChainTrust、Custom のいずれかの値にします。

詳細については、「[証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。| + +## revocationMode 属性 + +|値|説明| +|-------|--------| +|列挙型|NoCheck、Online、Offline のいずれかの値にします。

詳細については、「[証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。| + +## trustedStoreLocation 属性 + +|値|説明| +|-------|--------| +|列挙型|LocalMachine または CurrentUser のいずれかの値。 既定値は CurrentUser です。 クライアント アプリケーションがシステム アカウントで実行されている場合、証明書は通常 LocalMachine の下にあります。 クライアント アプリケーションがユーザー アカウントで実行されている場合、証明書は通常 CurrentUser の下にあります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md)|クライアントに対してサービスを認証する際に使用される証明書を指定します。| + +## 解説 + この構成要素の `certificateValidationMode` 属性は、証明書の認証に使用される信頼レベルを指定します。 既定のレベルは `ChainTrust` に設定され、チェーンの最上位の信頼された証明機関で終了する証明書の階層構造で各証明書を検索するよう指定します。 これは最もセキュリティで保護されているモードです。 また、値を `PeerOrChainTrust` に設定することもできます。これは、信頼されたチェーン内の証明書と共に、自己発行された証明書 \(ピア信頼\) も受け入れるよう指定します。 自己発行の資格情報は信頼された証明機関から購入したものである必要はないため、この値はクライアントとサービスの開発およびデバッグに使用されます。 クライアントを展開するときは、代わりに `ChainTrust` 値を使用します。 値を `Custom` または `None` に設定することもできます。 `Custom` 値を使用するには、`customCertificateValidator` 属性を証明書の検証に使用するアセンブリと型に設定することも必要です。 独自のカスタム検証を作成するには、抽象 X509CertificateValidator クラスを継承する必要があります。 詳細については、「[方法 : カスタム証明書検証を使用するサービスを作成する](../../../../../docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md)」を参照してください。 + + `revocationMode` 属性は、証明書が失効していないかどうかをチェックする方法を指定します。 既定値は `online` です。この場合、証明書が失効していないかどうかを自動的にチェックします。 詳細については、「[証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。 + +## 使用例 + 次の例は、2 つのタスクを実行します。 最初は、ドメイン名が www.contoso.com であるエンドポイントと HTTPプロトコルを経由して通信するときに使用するクライアントのサービス証明書を指定します。 次に、認証中に使用される失効モードとストアの場所を指定します。 + +``` + + + + + + + +``` + +## 参照 + + + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [方法 : カスタム証明書検証を使用するサービスを作成する](../../../../../docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/authorizationpolicies.md b/docs/framework/configure-apps/file-schema/wcf/authorizationpolicies.md new file mode 100644 index 00000000000..65d30e960df --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/authorizationpolicies.md @@ -0,0 +1,33 @@ +--- +title: "<authorizationPolicies> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5b367489-54d7-408b-8f56-cb157dd68eaf +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <authorizationPolicies> +この構成セクションには、`add` キーワードを使用して追加できる承認ポリシーの種類のコレクションが含まれています。 各承認ポリシーは、文字列の単一の必須属性 `policyType` を含みます。 この属性は、入力クレームのセットをクレームの別のセットに変換することを可能にする承認ポリシーを指定します。 アクセス制御は、それに基づいて許可または拒否されます。 認証ポリシーの動作の詳細については、「」および「[承認ポリシー](../../../../../docs/framework/wcf/samples/authorization-policy.md)」を参照してください。 + +## 参照 + + + + + + + + [サービス操作へのアクセスの承認](../../../../../docs/framework/wcf/samples/authorizing-access-to-service-operations.md) + [方法 : サービスで使用するカスタム承認マネージャーを作成する](../../../../../docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-authorizationpolicies.md) + [承認ポリシー](../../../../../docs/framework/wcf/samples/authorization-policy.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/backuplist.md b/docs/framework/configure-apps/file-schema/wcf/backuplist.md new file mode 100644 index 00000000000..8492f79cdcd --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/backuplist.md @@ -0,0 +1,84 @@ +--- +title: "<backupList> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a3d9d1f9-4a53-45e9-a880-86c8bee0b833 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 1 +--- +# <backupList> +プライマリ エンドポイントに接続できないときにルーティング サービスで使用するエンドポイント セットを列挙したバックアップ リストを定義するための構成セクションを表します。リストの最初のエンドポイントがダウンしていると、ルーティング サービスは自動的にリスト内で次にあるエンドポイントにフェールオーバーします。これにより、クライアント アプリケーションに複雑なパターンの処理方法やサービスの配置場所を示すことなく、アプリケーションの信頼性を高めることができます。 + +## 構文 + +```vb + + + + + + + + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|このエンドポイント リストを指定するために使用される名前を指定する文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filter.md)|| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|バックアップ エンドポイントの一覧。| + +## 解説 + このセクションには、プライマリ エンドポイントへの送信時に通信例外が発生した場合にメッセージが送信されるエンドポイントの、順序付けられたコレクションが含まれます。 + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-entries.md) の `endpointName` 属性に一覧表示されたプライマリ エンドポイントへの送信が通信例外によって失敗した場合、ルーティング サービスはこのセクションに格納された最初のエンドポイントにメッセージを送信しようとします。 これも通信例外によって失敗した場合、ルーティング サービスは、送信に成功するか、通信例外以外のエラーを返すか、コレクション内のすべてのエンドポイントがエラーを返すまで、このセクションに格納された次のエンドポイントにメッセージを送信しようとします。 + + 次の例では、"Destination" という名前のプライマリ エンドポイントへの送信で通信例外が返された場合、サービスは "alternateServiceQueue" にメッセージを送信しようとします。 この試行でも通信例外が返された場合、ルーティング サービスはコレクション内の次のエンドポイントにメッセージを送信しようとします。 + +``` + + + + + + + + + + + + +``` + +## 参照 + [System.ServiceModel.Routing.Configuration.BackupEndpointCollection](assetId:///System.ServiceModel.Routing.Configuration.BackupEndpointCollection?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/backuplists.md b/docs/framework/configure-apps/file-schema/wcf/backuplists.md new file mode 100644 index 00000000000..a48d04f1ed4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/backuplists.md @@ -0,0 +1,59 @@ +--- +title: "<backupLists> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 593b3390-f65b-4684-ad40-0596b62f0954 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <backupLists> +エラー処理に使用されるバックアップ サービス セットを定義する構成セクションを表します。 各子要素は、プライマリ エンドポイントに接続できないときにルーティング サービスが使用するエンドポイント セットを列挙するバックアップ リストです。リストの最初のエンドポイントがダウンしていると、ルーティング サービスは自動的にリスト内で次にあるエンドポイントにフェールオーバーします。これにより、クライアント アプリケーションに複雑なパターンの処理方法やサービスの配置場所を示すことなく、アプリケーションの信頼性を高めることができます。 + +## 構文 + +```vb + + + + + + + + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filter.md)|プライマリ エンドポイントに接続できないときにルーティング サービスが使用するエンドポイントのリストを格納します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|受信メッセージの評価に使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の種類を定義するルーティング フィルター セットと、フィルターが一致するときにメッセージを送信するターゲット エンドポイントを指定するルーティング テーブルを定義する構成セクションを表します。| + +## 参照 + [System.ServiceModel.Routing.Configuration.BackupListCollection](assetId:///System.ServiceModel.Routing.Configuration.BackupListCollection?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/baseaddresses.md b/docs/framework/configure-apps/file-schema/wcf/baseaddresses.md new file mode 100644 index 00000000000..cb3a92ffa9c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/baseaddresses.md @@ -0,0 +1,56 @@ +--- +title: "<baseAddresses> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 78918102-2898-46e0-9ea8-6b8afe65603e +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <baseAddresses> +自己ホスト環境でのサービス ホストのベース アドレスである `baseAddress` 要素のコレクションを表します。 ベース アドレスが存在すると、そのベース アドレスに関連したアドレスを使用してエンドポイントを構成できます。 + +## 構文 + +``` + + + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-baseaddresses.md)|サービス ホストによって使用されるベース アドレスを指定する構成要素。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/host.md)|サービス ホストの設定を指定する構成要素です。| + +## 参照 + + + + [ホスト](../../../../../docs/framework/wcf/feature-details/hosting.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/baseaddressprefixfilters.md b/docs/framework/configure-apps/file-schema/wcf/baseaddressprefixfilters.md new file mode 100644 index 00000000000..bed6a2f7cda --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/baseaddressprefixfilters.md @@ -0,0 +1,92 @@ +--- +title: "<baseAddressPrefixFilters> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8cab2a9a-c51f-4283-bb60-2ad0c274fd46 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <baseAddressPrefixFilters> +パス スルー フィルターを指定する構成要素のコレクションを表します。パス スルー フィルターには、インターネット インフォメーション サービス \(IIS\) で [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アプリケーションをホストする場合に適切な IIS バインドを選択する機構が用意されています。 + +> [!WARNING] +> \ は localhost を認識しません。代わりに、コンピューターの完全修飾名を使用します。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-baseaddressprefixfilter.md)|サービス ホストによって使用されるベース アドレスのプレフィックス フィルターを指定する構成要素を追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md)|環境をホストするサービスがインスタンス化する特定のトランスポートの型を定義します。| + +## 解説 + プレフィックス フィルターは、サービスによって使用される URI を、共有ホスティング プロバイダーが指定できるようにする手段を提供します。 これにより、共有ホストは、同じサイト上の同じスキームに対して、別々のベース アドレスを使用して複数のアプリケーションをホストできるようになります。 + + IIS Web サイトは、仮想ディレクトリを含む仮想アプリケーションのコンテナーです。 サイト内のアプリケーションには、1 つ以上の IIS バインディングからアクセスできます。 IIS バインディングは、バインディング プロトコルとバインディング情報という 2 つの情報を提供します。 バインディング プロトコル \(HTTP など\) は通信を行うスキームを定義し、バインディング情報 \(IP アドレス、ポート、ホスト ヘッダーなど\) にはサイトにアクセスするために使用するデータが含まれます。 + + IIS では、サイトごとに複数の IIS バインディングを指定できるので、各スキームに複数のベース アドレスが定義されることがあります。 これに対して、サイトでホストされる [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスでは、スキームごとに 1 つのベース アドレスにしかバインドできません。そこで、プレフィックス フィルター機能を使用すると、ホストされるサービスの必要なベース アドレスを選択できます。 IIS によって指定される受信ベース アドレスは、オプションのプレフィックス リスト フィルターに基づいてフィルター処理されます。 + + たとえば、サイトに次のベース アドレスが含まれているとします。 + +``` +http://testl.fabrikam.com/Service.svc +http://test2.fabrikam.com/Service.svc +``` + + 次の構成ファイルを使用して、appdomain レベルでプレフィックス フィルターを指定できます。 + +``` + + + +        +        + + +``` + + この例では、`net.tcp://test1.fabrikam.com:8000` と `http://test2.fabrikam.com:9000` が、対応するスキームに渡される唯一のベース アドレスです。 + + 既定では、プレフィックスを指定しない場合、すべてのアドレスが渡されます。 プレフィックスだけを指定すると、そのスキームに一致するベース アドレスを渡すことができます。 + +> [!NOTE] +> フィルターでワイルドカードはサポートされません。 また、IIS が提供する baseAddresses には、`baseAddressPrefixFilters` リストに存在しない他のスキームにバインドされたアドレスが指定される場合があります。 これらのアドレスはフィルターで除外されません。 + +## 参照 + + + + [ホスト](../../../../../docs/framework/wcf/feature-details/hosting.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md new file mode 100644 index 00000000000..7c54b3a32c0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md @@ -0,0 +1,198 @@ +--- +title: "<basicHttpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "basicHttpBinding 要素" +ms.assetid: 85cf1a4f-26c2-48c7-bda6-6c960d5d3fb3 +caps.latest.revision: 43 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 43 +--- +# <basicHttpBinding> +ASMX ベースの Web サービスとクライアント、および WS\-I Basic Profile 1.1 に準拠するその他のサービスと通信できるエンドポイントを構成および公開するために [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスが使用できるバインディングを表します。 + +## 構文 + +``` + + + + + +
+ + +
+``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`allowCookies`|クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定するブール値です。 既定値は、`false` です。

クッキーを使用する ASMX Web サービスと対話する場合にこのプロパティを使用できます。 この方法で、サーバーから返されるクッキーを、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。| +|`bypassProxyOnLocal`|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。

インターネット リソースは、ローカル アドレスを持つ場合ローカルです。 ローカル アドレスは、同じコンピューター、ローカル LAN、またはイントラネット上にあり、"http:\/\/webserver\/"、"http:\/\/localhost\/" などのピリオド \(.\) を含まない URI により構文的に識別されるアドレスです。

この属性の設定は、BasicHttpBinding で構成されたエンドポイントがローカル リソースへのアクセス時にプロキシ サーバーを使用するかどうかを示します。 この属性が `true` の場合、ローカル インターネット リソースへの要求はプロキシ サーバーを使用しません。 この属性を `true` に設定した場合で、同じコンピューター上のサービスと対話するクライアントがプロキシを経由するときは、\(localhost ではなく\) ホスト名を使用します。

この属性が `false` の場合、すべてのインターネット要求はプロキシ サーバー経由で行われます。| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`envelopeVersion`|このバインディングによって処理されるメッセージに使用される SOAP のバージョンを指定します。 有効値は、Soap11 のみです。| +|`hostnameComparisonMode`|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|`maxBufferPoolSize`|チャネルからメッセージを受け取るメッセージ バッファーのマネージャーが使用するために割り当てられる、最大メモリ量を指定する整数値。 既定値は 524288 \(0x80000\) バイトです。

バッファー マネージャーは、バッファー プールを使用することで、バッファーの使用コストを最小化します。 バッファーは、チャネルから出てくるメッセージをサービスが処理するときに必要です。 メッセージの読み込み処理に十分なメモリがバッファー プールにない場合、バッファー マネージャーは、CLR ヒープから追加のメモリを割り当てる必要があります。これにより、ガベージ コレクションのオーバーヘッドが増加します。 CLR ガベージ ヒープから多大な割り当てが行われることは、バッファー プール サイズが小さすぎること、およびこの属性で指定される制限を緩めて割り当てを増やすとパフォーマンスが向上する可能性があることを示します。| +|`maxBufferSize`|このバインディングで構成されるエンドポイントのメッセージが処理されるときのメッセージを格納するバッファーの最大サイズを指定する整数値 \(バイト単位\)。 既定値は 65,536 バイトです。| +|`maxReceivedMessageSize`|このバインディングで構成されるチャネルが受信可能なメッセージの最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で定義する正の整数。 受信側のメッセージが大きすぎると、送信側は SOAP エラーを受け取ります。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65,536 バイトです。| +|`messageEncoding`|SOAP メッセージのエンコードに使用されるエンコーダーを定義します。 以下の値が有効です。

- Text: テキスト メッセージのエンコーダーを使用します。
- Mtom: Message Transmission Organization Mechanism 1.0 \(MTOM\) エンコーダーを使用します。

既定値は Text です。 この属性は 型です。| +|`name`|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。 また、この名前は、同じ種類のバインディング間で一意です。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`namespace`|バインディングの XML 名前空間を指定します。 既定値は "http:\/\/tempuri.org\/Bindings" です。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`proxyAddress`|HTTP プロキシのアドレスを格納する URI。 `useSystemWebProxy` が `true` に設定されている場合、この設定は `null` である必要があります。 既定値は、`null` です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`textEncoding`|バインディングでメッセージの発行に使用される文字セット エンコーディングを設定します。 以下の値が有効です。

- BigEndianUnicode: Unicode BigEndian エンコーディング。
- Unicode: 16 ビット エンコーディング。
- UTF8: 8 ビット エンコーディング。

既定値は UTF8 です。 この属性は 型です。| +|`transferMode`|要求または応答に対してメッセージがバッファーされるか、ストリーム配信されるかを指定する有効な 値。| +|`useDefaultWebProxy`|使用できる場合にシステムの自動設定 HTTP プロキシを使用するかどうかを指定するブール値。 既定値は、`true` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + BasicHttpBinding では、SOAP 1.1 メッセージを送信するために、HTTP をトランスポートとして使用します。 サービスは、ASMX クライアントが消費するエンドポイントなど、WS\-I BP 1.1 に準拠するエンドポイントを開示するためにこのバインディングを使用できます。 同様に、クライアントは BasicHttpBinding を使用して、ASMX Web サービスや BasicHttpBinding で構成されるサービスなどの WS\-I BP 1.1 に準じるエンドポイントを公開するサービスと通信できます。 + + 既定ではセキュリティは無効になります。ただし、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md)`None 子要素のモード属性に` 以外の値を設定してセキュリティを追加できます。 サービスは、"Text" メッセージ エンコードおよび UTF\-8 テキスト エンコードを既定で使用します。 + +## 使用例 + 第 1 世代と第 2 世代の Web サービスで HTTP 通信と最大限の相互運用性を実現する、 の使用例を次に示します。 バインディングは、クライアントとサービスの構成ファイルに指定されます。 バインディングの種類は、`` 要素の `binding` 属性を使用して指定します。 基本的なバインディングを構成してその設定の一部を変更する場合は、バインディング構成を定義する必要があります。 エンドポイントは、`` 要素の `bindingConfiguration` 属性を使用して、名前でバインディング構成を参照する必要があります。次のサービスの構成コードを参照してください。 + +```xml + + + + + + + + + + + + + + +``` + +## 使用例 + [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 前の例の機能を実行するには、エンドポイント アドレスの bindingConfiguration とバインディングの名前を削除します。 + +```xml + + + + + + + + + + + + + + + +``` + + 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +## 参照 + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/basichttpcontextbinding.md b/docs/framework/configure-apps/file-schema/wcf/basichttpcontextbinding.md new file mode 100644 index 00000000000..8c3278792e8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/basichttpcontextbinding.md @@ -0,0 +1,114 @@ +--- +title: "<basicHttpContextBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 39b16b82-4ec6-4eff-8031-67e026870961 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <basicHttpContextBinding> +HTTP クッキーを交換機構として有効にすることにより、交換する のコンテキストを提供するバインディングを指定します。 + +## 構文 + +``` + + + + + +
+ + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`allowCookies`|クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定するブール値です。 既定値は、`false` です。

クッキーを使用する ASMX Web サービスと対話する場合にこのプロパティを使用できます。 この方法で、サーバーから返されるクッキーを、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。| +|`bypassProxyOnLocal`|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。

インターネット リソースは、ローカル アドレスを持つ場合ローカルです。 ローカル アドレスは、同じコンピューター、ローカル LAN、またはイントラネット上にあり、"http:\/\/webserver\/"、"http:\/\/localhost\/" などのピリオド \(.\) を含まない URI により構文的に識別されるアドレスです。

この属性の設定は、BasicHttpBinding で構成されたエンドポイントがローカル リソースへのアクセス時にプロキシ サーバーを使用するかどうかを示します。 この属性が `true` の場合、ローカル インターネット リソースへの要求はプロキシ サーバーを使用しません。 この属性を `true` に設定した場合で、同じコンピューター上のサービスと対話するクライアントがプロキシを経由するときは、\(localhost ではなく\) ホスト名を使用します。

この属性が `false` の場合、すべてのインターネット要求はプロキシ サーバー経由で行われます。| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`envelopeVersion`|このバインディングによって処理されるメッセージに使用される SOAP のバージョンを指定します。 有効値は、Soap11 のみです。| +|`hostnameComparisonMode`|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|`maxBufferPoolSize`|チャネルからメッセージを受け取るメッセージ バッファーのマネージャーが使用するために割り当てられる、最大メモリ量を指定する整数値。 既定値は 524288 \(0x80000\) バイトです。

バッファー マネージャーは、バッファー プールを使用することで、バッファーの使用コストを最小化します。 バッファーは、チャネルから出てくるメッセージをサービスが処理するときに必要です。 メッセージの読み込み処理に十分なメモリがバッファー プールにない場合、バッファー マネージャーは、CLR ヒープから追加のメモリを割り当てる必要があります。これにより、ガベージ コレクションのオーバーヘッドが増加します。 CLR ガベージ ヒープから多大な割り当てが行われることは、バッファー プール サイズが小さすぎること、およびこの属性で指定される制限を緩めて割り当てを増やすとパフォーマンスが向上する可能性があることを示します。| +|`maxBufferSize`|このバインディングで構成されるエンドポイントのメッセージが処理されるときのメッセージを格納するバッファーの最大サイズを指定する整数値 \(バイト単位\)。 既定値は 65,536 バイトです。| +|`maxReceivedMessageSize`|このバインディングで構成されるチャネルが受信可能なメッセージの最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で定義する正の整数。 受信側のメッセージが大きすぎると、送信側は SOAP エラーを受け取ります。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65,536 バイトです。| +|`messageEncoding`|SOAP メッセージのエンコードに使用されるエンコーダーを定義します。 以下の値が有効です。

- Text: テキスト メッセージのエンコーダーを使用します。
- Mtom: Message Transmission Organization Mechanism 1.0 \(MTOM\) エンコーダーを使用します。

既定値は Text です。 この属性は 型です。| +|`messageVersion`|バインディングで構成されるクライアントとサービスが使用するメッセージ バージョンを指定します。 この属性は 型です。| +|`name`|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。 また、この名前は、同じ種類のバインディング間で一意です。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`namespace`|バインディングの XML 名前空間を指定します。 既定値は "http:\/\/tempuri.org\/Bindings" です。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`proxyAddress`|HTTP プロキシのアドレスを格納する URI。 `useSystemWebProxy` が `true` に設定されている場合、この設定は `null` である必要があります。 既定値は、`null` です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`textEncoding`|バインディングでメッセージの発行に使用される文字セット エンコーディングを設定します。 以下の値が有効です。

- BigEndianUnicode: Unicode BigEndian エンコーディング。
- Unicode: 16 ビット エンコーディング。
- UTF8: 8 ビット エンコーディング。

既定値は UTF8 です。 この属性は 型です。| +|`transferMode`|要求または応答に対してメッセージがバッファーされるか、ストリーム配信されるかを指定する有効な 値。| +|`useDefaultWebProxy`|使用できる場合にシステムの自動設定 HTTP プロキシを使用するかどうかを指定するブール値。 既定値は、`true` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + このバインディング要素は、`BasicHttpBinding` のコンテキストの一部として保護レベルと交換機構を提供します。 + +## 参照 + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md b/docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md new file mode 100644 index 00000000000..c8f8bcc7930 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md @@ -0,0 +1,68 @@ +--- +title: "<endpointBehaviors> の <behavior> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: b90ca3bc-3c22-4174-b903-e3a39898bd27 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# <endpointBehaviors> の <behavior> +エンドポイントの動作設定のコレクションを含む `behavior` 要素。 各動作には、それぞれの `name` によってインデックスが付けられます。 エンドポイントは、この名前を使用して各動作にリンクできます。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|動作の構成名を含む一意の文字列。 この値は、要素の識別文字列として機能するため、一意のユーザー定義の文字列である必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)|サービスに対するクライアントの認証に使用される資格情報を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/callbackdebug.md)|[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] コールバック オブジェクトのサービス デバッグを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/callbacktimeouts.md)|クライアント コールバックのタイムアウトを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientvia.md)|メッセージの経路を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer.md)|DataContractSerializer 用の構成データが含まれています。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/dispatchersynchronization.md)|サービスが非同期に応答を返すことができるようにするエンドポイントの動作を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/enablewebscript.md)|ASP.NET AJAX Web ページからサービスを使用できるようにするエンドポイントの動作を有効にします。 この動作は、必ず \ 標準バインディングまたは \ バインディング要素と組み合わせて使用する必要があります。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpointdiscovery.md)|エンドポイントのさまざまな探索設定を指定します \(探索可能性、スコープ、メタデータに対するカスタム拡張など\)。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/soapprocessing.md)|異なるバインディングの種類およびメッセージ バージョンの間でメッセージのマーシャリングに使用されるクライアント エンドポイントの動作を定義します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/synchronousreceive-element.md)|サービスまたはクライアント アプリケーションでメッセージを受信する場合のランタイム動作を指定します。 属性や子要素はありません。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transactedbatching.md)|受信操作でトランザクション バッチがサポートされるかどうかを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttp.md)|構成によってエンドポイントに WebHttpBehavior を指定します。 この動作を \ 標準バインディングと組み合わせて使用すると、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスの Web プログラミング モデルが有効になります。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md)|エンドポイント動作要素のコレクション。| \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md b/docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md new file mode 100644 index 00000000000..0cf0461d163 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md @@ -0,0 +1,70 @@ +--- +title: "<serviceBehaviors> の <behavior> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 78fc0a08-55de-416a-ac12-a5e6ffc9a987 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <serviceBehaviors> の <behavior> +`behavior` 要素には、サービスの動作設定のコレクションが含まれます。 各動作には、それぞれの `name` によってインデックスが付けられます。 サービスは、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpoint-element.md) 要素の `behaviorConfiguration` 属性を使用して、この名前で各動作にリンクできます。 これにより、設定を再定義することなく、エンドポイント間で共通の動作構成を共有できます。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +> [!NOTE] +> Windows Workflow アクティビティに固有の動作要素 \([\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/sendmessagechannelcache.md) 要素など\) については、「[\ の \](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md)」のページを参照してください。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|動作の構成名を含む一意の文字列。 この値は、要素の識別文字列として機能するため、一意のユーザー定義の文字列である必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md)|DataContractSerializer 用の構成データが含まれています。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/persistenceprovider.md)|使用する永続化プロバイダーの実装の型と、永続化操作に使用するタイムアウトを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing-of-servicebehavior.md)|ルーティング構成の動的な変更を可能にするルーティング サービスへの実行時アクセスを提供します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/serviceauthenticationmanager.md)|サービス レベルで転送、メッセージ、または送信元の有効性を確立するワークフロー構成要素を提供します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md)|サービス操作へのアクセスを承認する設定を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)|サービスの認証に使用される資格情報と、クライアントの資格情報検証関連の設定を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicedebug.md)|[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスのデバッグおよびヘルプ情報機能を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicediscovery.md)|サービス エンドポイントの探索可能性を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicemetadata.md)|サービス メタデータと関連情報の公開を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicesecurityaudit.md)|サービス操作中にセキュリティ イベントの監査を有効にする設定を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicethrottling.md)|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスの調整機構を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicetimeouts.md)|サービスのタイムアウトを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/workflowruntime.md)|ワークフロー ベースの [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスをホストするための WorkflowRuntime のインスタンスの設定を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/userequestheadersformetadataaddress.md)|メタデータのアドレス情報を要求メッセージ ヘッダーから取得できるようにします。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md)|サービス動作要素のコレクション。| \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/behaviorextensions.md b/docs/framework/configure-apps/file-schema/wcf/behaviorextensions.md new file mode 100644 index 00000000000..fba8540bea8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/behaviorextensions.md @@ -0,0 +1,58 @@ +--- +title: "<behaviorExtensions> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 59f2791a-c78f-40d7-aa80-0d9cd10135d9 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <behaviorExtensions> +動作の拡張により、ユーザーはユーザー定義の動作要素を作成できます。 これらの要素は、標準の Windows Communication Foundation \(WCF\) 動作要素と共に使用できます。 `behaviorExtensions` セクションでは、構成で使用できるように要素を定義します。 次の例は、一般的な動作拡張を示します。 + +``` + + +     +        +      +    + +``` + + 構成機能を要素に追加するには、構成要素を記述して登録する必要があります。 詳細については、 を参照してください。 + + 要素とその構成の型を定義したら、次の例に示すように拡張を使用できます。 + +``` + + + + + + +``` + +## セキュリティ + `machine.config` ファイルと `app.config` ファイルに型を登録する場合は、完全修飾アセンブリ名の使用を強くお勧めします。 型が一意に定義されていない場合、CLR 型ローダーは次の場所を指定された順序で検索します。 + + 型のアセンブリが判明している場合、ローダーは構成ファイルのリダイレクトの場所、GAC、構成情報を使用する現在のアセンブリ、およびアプリケーションの基本ディレクトリを検索します。 アセンブリが判明していない場合、ローダーは現在のアセンブリ、mscorlib、および `TypeResolve` イベント ハンドラーによって返される場所を検索します。 この CLR 検索順序は、Type Forwarding 機構や AppDomain.TypeResolve イベントなどのフックを使用して変更できます。 + + 攻撃者が CLR 検索順序を悪用して、未承認のコードを実行する可能性があります。 \(厳密な\) 完全修飾名を使用すると、型が一意に識別され、システムのセキュリティがさらに強化されます。 + + 詳細については、「[ランタイムがアセンブリを検索する方法](http://go.microsoft.com/fwlink/?LinkId=95336)」および「」を参照してください。 + +## 参照 + + [動作を使用したランタイムの構成と拡張](../../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/behaviors.md b/docs/framework/configure-apps/file-schema/wcf/behaviors.md new file mode 100644 index 00000000000..f32fa2d69cf --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/behaviors.md @@ -0,0 +1,68 @@ +--- +title: "<behaviors> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0e5da4e6-1aa5-466c-924e-f10efee57f0b +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <behaviors> +この要素は、`endpointBehaviors` と`serviceBehaviors` という 2 つの子コレクションを定義します。 各コレクションは、エンドポイントとサービスによって使用されるそれぞれの動作要素を定義します。 各動作要素は、その一意の `name` 属性で識別されます。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + + \ + +## 構文 + +``` + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md)|この構成セクションは、特定のエンドポイントに対して定義されたすべての動作を表します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md)|この構成セクションは、特定のサービスに対して定義されたすべての動作を表します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md)|すべての Windows Communication Foundation \(WCF\) 構成要素のルート要素です。| + +## 解説 + `` 要素を使用して、コレクションから特定の動作を削除できます。 これを行うには、`` 要素の `name` 属性に、削除する動作の名前を指定します。 また、`` 要素を使用してコレクションの内容をすべて消去し、動作コレクションの初期値を確実に空にすることもできます。 + +## 参照 + + + + + + [動作を使用したランタイムの構成と拡張](../../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md) + [クライアントの動作の構成](../../../../../docs/framework/wcf/configuring-client-behaviors.md) + [クライアントのランタイム動作の指定](../../../../../docs/framework/wcf/specifying-client-run-time-behavior.md) + [サービスのランタイム動作の指定](../../../../../docs/framework/wcf/specifying-service-run-time-behavior.md) + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/binarymessageencoding.md b/docs/framework/configure-apps/file-schema/wcf/binarymessageencoding.md new file mode 100644 index 00000000000..a1b3bfc6318 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/binarymessageencoding.md @@ -0,0 +1,83 @@ +--- +title: "<binaryMessageEncoding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: e4ae3cd4-6b67-4ce1-af4b-9400e0a38dba +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <binaryMessageEncoding> +ネットワーク上で Windows Communication Foundation \(WCF\) メッセージをバイナリにエンコードするバイナリ メッセージ エンコーダーを定義します。 + +## 構文 + +``` + + +``` + +## 参照 + + + + + [メッセージ エンコーディング](../../../../../docs/framework/configure-apps/file-schema/wcf/message-encoding.md) + [メッセージ エンコーダーを選択する](../../../../../docs/framework/wcf/feature-details/choosing-a-message-encoder.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/bindingelementextensions.md b/docs/framework/configure-apps/file-schema/wcf/bindingelementextensions.md new file mode 100644 index 00000000000..254bfa96bee --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/bindingelementextensions.md @@ -0,0 +1,53 @@ +--- +title: "<bindingElementExtensions> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb597fc0-c947-451c-afda-bf23d42f4f4d +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <bindingElementExtensions> +このセクションは、コンピューターまたはアプリケーションの構成ファイルからカスタム バインディング要素を使用できます。 このコレクションにカスタム バインディング要素を追加するには、`add` キーワードを使用し、要素の `type` 属性をバインディング要素拡張に設定して、`name` 属性をカスタム バインディング要素に設定します。 + + バインディングの拡張により、ユーザーは、カスタム バインディングの一部として使用するユーザー定義のバインディング要素を作成できます。 プログラムではバインディング拡張は、抽象クラス を実装する型です。 構成ファイルでは、`bindingElementExtensions` セクションは、拡張要素を定義するために使用されます。 + + 次の例は、`add` 要素と `name` 属性を使用して、構成ファイルの `bindingElementExtensions` セクションにバインディング拡張を追加します。 + +``` + + + + + + + +``` + + 構成機能を要素に追加するには、ユーザーは `bindingElementExtensionSection` を記述して登録する必要があります。 詳細については、 を参照してください。 + + 要素とその構成の型を定義したら、次の例に示すように拡張をカスタム バインディングの一部として使用できます。 + +``` + + + + + + +``` + +## 参照 + + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/bindingextensions.md b/docs/framework/configure-apps/file-schema/wcf/bindingextensions.md new file mode 100644 index 00000000000..03acdde4e2e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/bindingextensions.md @@ -0,0 +1,51 @@ +--- +title: "<bindingExtensions> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8373f94d-d095-486f-8f1e-4ac2f72b58c7 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <bindingExtensions> +このセクションは、コンピューターまたはアプリケーションの構成ファイルからユーザー定義のバインディングを使用できます。 このコレクションにユーザー定義のバインディングを追加するには、`add` キーワードを使用し、要素の `type` 属性をユーザー定義のバインディングに設定して、`name` 属性をユーザー定義のバインディングの名前に設定します。 + + バインディングの拡張により、ユーザーは、エンドポイント構成の一部として使用するユーザー定義のバインディングを作成できます。 プログラムではバインディング拡張は、抽象クラス を実装する型です。 + + 次の例は、`add` 要素と `name` 属性を使用して、構成ファイルの `bindingElementExtensions` セクションにバインディング拡張を追加します。 + +``` + + + + + + + +``` + + 構成機能を要素に追加するには、ユーザーは `bindingSection` を記述して登録する必要があります。 詳細については、 を参照してください。 + + 要素とその構成の型を定義したら、次の例に示すように拡張をエンドポイントの一部として使用できます。 + +``` + + + + + + +``` + +## 参照 + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/bindings.md b/docs/framework/configure-apps/file-schema/wcf/bindings.md new file mode 100644 index 00000000000..a99c9606d3d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/bindings.md @@ -0,0 +1,55 @@ +--- +title: "<bindings> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b62cd369-5409-4030-8490-9759a462dd3a +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <bindings> +このセクションには、標準バインディングおよびカスタム バインディングのコレクションが保持されます。 各エントリは、その一意の `name` 属性で識別できる `binding` 要素です。 サービスは、`name` を使用してバインディングをリンクすることにより、バインディングを使用します。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +## システム指定のバインディング + システム指定のバインディングは、WCF メッセージ スタックの複雑さを隠蔽します。 システム指定のバインディングを使用しているアプリケーションは、スタックを完全に制御する必要はありません。 システム指定の各バインディングに公開される属性は、バインディングが処理する使用シナリオに最適な属性です。 + + システム指定の各バインディングの構成セクションは、バインディングの構成に使用される複数の構成を定義できます。 各構成は、一意の名前によって識別されます。 + + 要素または属性をシステム指定のバインディングに追加することはできません。 追加するには、このトピックの「カスタム バインディング」セクションで説明するように、カスタム バインディングを実装する必要があります。 システム指定のバインディングを完全に再現し、ユーザー アプリケーションで制御するいくつかの設定を追加するカスタム バインディングを定義できます。 + + システム指定のバインディングの一覧については、「[システム標準のバインディング](../../../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。 + +## カスタム バインディング + カスタム バインディングを使用すると、WCF メッセージ スタックのフル コントロールが可能になります。 個別のバインディングは、メッセージ スタックを、スタック要素の構成要素をスタックに出現する順序で指定することにより定義します。 各要素は、スタック内の 1 つの要素を定義および構成します。 各カスタム バインディング内の `transport` 要素は 1 つだけにする必要があります。 この要素がない場合、メッセージ スタックは不完全です。 + + 要素がスタックに出現する順序は重要です。それは、その順序で操作がメッセージに適用されるためです。 スタック要素で必要な順序を次に示します。 + +1. トランザクション \(省略可能\) + +2. リライアブル メッセージ機能 \(省略可能\) + +3. セキュリティ \(省略可能\) + +4. エンコーダー + +5. Transport + + カスタム バインディングは、`name` 属性によって識別されます。 カスタム バインディングの詳細については、「[カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください。 + +## 参照 + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/bookmarkresumptionqueries-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/bookmarkresumptionqueries-of-wcf.md new file mode 100644 index 00000000000..eb0f0f457fc --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/bookmarkresumptionqueries-of-wcf.md @@ -0,0 +1,62 @@ +--- +title: "WCF の <bookmarkResumptionQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ed086712-1dc7-4932-a592-d1116a0155f3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <bookmarkResumptionQueries> +ワークフロー インスタンス内のブックマークの再開を追跡するために使用する、クエリのコレクションを表します。 追跡参加要素がブックマーク再開レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionquery.md)|ワークフロー インスタンス内のブックマークの再開を追跡するために使用されるクエリ。 追跡参加要素がブックマーク再開レコードを定期受信するには、このクエリが必要です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|`activityDefinitionId` プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.BookmarkResumptionQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.BookmarkResumptionQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.BookmarkResumptionQuery](assetId:///System.Activities.Tracking.BookmarkResumptionQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/bookmarkresumptionquery-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/bookmarkresumptionquery-of-wcf.md new file mode 100644 index 00000000000..8cc1004584e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/bookmarkresumptionquery-of-wcf.md @@ -0,0 +1,62 @@ +--- +title: "WCF の <bookmarkResumptionQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 755a34f0-87c9-4a1e-ae4d-0fb8a6fbdc0e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <bookmarkResumptionQuery> +ワークフロー インスタンス内のブックマークの再開を追跡するために使用されるクエリを表します。 追跡参加要素がブックマーク再開レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|定期受信するブックマーク レコードの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionqueries.md)|ワークフロー インスタンス内のブックマークの再開を追跡するために使用する、クエリのコレクションを表します。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.BookmarkResumptionQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.BookmarkResumptionQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.BookmarkResumptionQuery](assetId:///System.Activities.Tracking.BookmarkResumptionQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/bytestreammessageencoding.md b/docs/framework/configure-apps/file-schema/wcf/bytestreammessageencoding.md new file mode 100644 index 00000000000..a878b92afe8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/bytestreammessageencoding.md @@ -0,0 +1,60 @@ +--- +title: "<byteStreamMessageEncoding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bbadd8dd-60a2-4007-b959-89373a8a7d60 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <byteStreamMessageEncoding> +文字エンコーディングを指定するオプションを使用し、メッセージ エンコーディングをバイト ストリームとして指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|messageVersion|バインディングを使用して送信されたメッセージの SOAP バージョンを指定します。 このプロパティは、 のメッセージ バージョン値にのみ設定できます。 バイト ストリーム メッセージ エンコーダーは、他のメッセージ バージョンをサポートしません。

この属性は 型です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 参照 + + + + + [メッセージ エンコーディング](../../../../../docs/framework/configure-apps/file-schema/wcf/message-encoding.md) + [メッセージ エンコーダーを選択する](../../../../../docs/framework/wcf/feature-details/choosing-a-message-encoder.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/callbackdebug.md b/docs/framework/configure-apps/file-schema/wcf/callbackdebug.md new file mode 100644 index 00000000000..ae9082d763f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/callbackdebug.md @@ -0,0 +1,52 @@ +--- +title: "<callbackDebug> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4073feda-1857-4be4-9947-227afb847ced +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <callbackDebug> +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] コールバック オブジェクトのサービス デバッグを指定します。 + +## 構文 + +``` + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`includeExceptionDetailInFaults`|クライアント コールバック オブジェクトが SOAP エラー内のマネージ例外情報をサービスに返すかどうかを指定する値。

プログラムでこの属性を `true` に設定すると、デバッグするために、クライアント コールバック オブジェクト内のマネージ例外情報がサービスに戻るフローを有効にできます。 **Caution:** マネージ例外情報をクライアントに返すことは、セキュリティ リスクになり得ます。 これは、例外の詳細が、認証されていないクライアントによって使用可能な内部サービスの実装に関する情報を公開するためです。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作を指定します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/callbacktimeouts.md b/docs/framework/configure-apps/file-schema/wcf/callbacktimeouts.md new file mode 100644 index 00000000000..1d29d8e6a2d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/callbacktimeouts.md @@ -0,0 +1,51 @@ +--- +title: "<callbackTimeouts> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d7fcfc5f-6d35-491e-8fa6-2f964c1e792f +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <callbackTimeouts> +双方向コールバック コントラクト シナリオでトランザクションをサーバーからクライアントに転送する際のタイムアウト値を指定します。 + +## 構文 + +``` + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`transactionTimeout`|トランザクションが完了する必要があるまたは自動的に終了される必要がある制限時間を指定する 値。 既定値は “00:00:00” です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作を指定します。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/cancelrequestedqueries-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/cancelrequestedqueries-of-wcf.md new file mode 100644 index 00000000000..36db62066e7 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/cancelrequestedqueries-of-wcf.md @@ -0,0 +1,62 @@ +--- +title: "WCF の <cancelRequestedQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a7cc7125-9ea3-4d3f-99c0-878cdeb1258a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# WCF の <cancelRequestedQueries> +親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用する、クエリのコレクションを表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/cancelrequestedquery.md)|親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用するクエリ。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|`activityDefinitionId` プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/cancelrequestedquery-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/cancelrequestedquery-of-wcf.md new file mode 100644 index 00000000000..735bc34f775 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/cancelrequestedquery-of-wcf.md @@ -0,0 +1,64 @@ +--- +title: "WCF の <cancelRequestedQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b690d870-02eb-4c56-8bc3-e5ca99d7097b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <cancelRequestedQuery> +親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用するクエリを表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityName|キャンセルを要求しているアクティビティの名前を指定する文字列。| +|childActivityName|キャンセルが要求された子アクティビティの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationquery.md)|親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用する構成要素の一覧を表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.CancelRequestQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.CancelRequestQueryElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.CancelRequestedQuery](assetId:///System.Activities.Tracking.CancelRequestedQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/certificate-element.md b/docs/framework/configure-apps/file-schema/wcf/certificate-element.md new file mode 100644 index 00000000000..a56ec80cb4a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/certificate-element.md @@ -0,0 +1,87 @@ +--- +title: "<certificate> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9b3d9233-ef35-477a-bf5d-efd1e80a52f4 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# <certificate> 要素 +ピアツーピア クライアントのメッセージの署名と暗号化に使用する X.509 証明書を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`findValue`|X.509 証明書ストアで検索する値を含む文字列。 属性に格納されている型は、指定された `x509FindType` の要件を満たす必要があります。 既定値は空の文字列です。| +|`storeLocation`|クライアントがピアの証明書の検証に使用する X.509 証明書ストアの場所を指定します。 以下の値が有効です。

- LocalMachine: ローカル マシンに割り当てられた証明書ストア。
- CurrentUser: 現在のユーザーに割り当てられた証明書ストア。

既定は LocalMachine です。| +|`storeName`|開く X.509 証明書ストアの名前を指定します。 以下の値が有効です。

- AddressBook: 他のユーザー用の証明書ストア。
- AuthRoot: サードパーティ証明機関 \(CA\) の証明書ストア。
- CertificateAuthority: 中間証明機関 \(CA\) の証明書ストア。
- Disallowed: 失効した証明書の証明書ストア。
- My: 個人用証明書の証明書ストア。
- Root: 信頼されたルート証明機関 \(CA\) の証明書ストア。
- TrustedPeople: 直接信頼されたユーザーやリソースの証明書ストア。
- TrustedPublisher: 直接信頼された発行者の証明書ストア。

既定値は My です。| +|`X509FindType`|実行する X.509 検索の種類を定義します。 以下の値が有効です。

- FindByThumbPrint
- FindBySubjectName
- FindBySubjectDistinguishedName
- FindByIssuerName
- FindByIssuerDistinguishedName
- FindBySerialNumber
- FindByTimeValid
- FindByTimeNotYetValid
- FindByTemplateName
- FindByApplicationPolicy
- FindByCertificatePolicy
- FindByExtension
- FindByKeyUsage
- FindBySubjectKeyIdentifier

`findValue` 属性に格納されている型は、指定された `X509FindType` の要件を満たす必要があります。

既定値は FindBySubjectDistinguishedName です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peer-of-clientcredentials-element.md)|ピアツーピア クライアントの認証時に使用される資格情報を指定します。| + +## 解説 + この構成要素には、ピア メッシュ内の近隣ノードを認証するときに使用される X509Certificate2 インスタンスが格納されます。 + + ピア ツー ピア プログラミングの詳細については、「[ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md)」を参照してください。 + +## 使用例 + 次のコードは、ピアツーピア シナリオで使用される証明書の検索方法を指定します。 + +``` + + + + + + + + + + +``` + +## 参照 + + + + + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md) + [Peer Channel Message Authentication](http://msdn.microsoft.com/ja-jp/80e73386-514e-4c30-9e4a-b9ca8c173a95) + [Peer Channel Custom Authentication](http://msdn.microsoft.com/ja-jp/4aa8a82e-41a8-48e2-8621-7e1cbabdca7c) + [セキュリティによるピア チャネル アプリケーションの保護](../../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/certificate-for-identity.md b/docs/framework/configure-apps/file-schema/wcf/certificate-for-identity.md new file mode 100644 index 00000000000..2368bea5c48 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/certificate-for-identity.md @@ -0,0 +1,64 @@ +--- +title: "<identity> の <certificate> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4aeccaf7-8f23-495c-aa5f-5bd8b5d4a10c +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <identity> の <certificate> +クライアントに対するサービスの検証に使用される X.509 証明書を指定します。 + + 要素の値の設定の詳細については、「[サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|encodedValue|証明書の Base64 エンコーディングです。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|クライアントで認証するサービスの ID を指定します。| + +## 使用例 + 次のコードは、クライアントに対するサーバーの検証に使用される証明書のエンコードされた表現を指定します。 + +``` + + + +``` + +## 参照 + + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/certificate-of-clientcertificate-element.md b/docs/framework/configure-apps/file-schema/wcf/certificate-of-clientcertificate-element.md new file mode 100644 index 00000000000..6baa9dca82b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/certificate-of-clientcertificate-element.md @@ -0,0 +1,85 @@ +--- +title: "<clientCertificate> 要素の <certificate> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 00297efb-a7f2-4e03-bc2b-943d545610fc +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <clientCertificate> 要素の <certificate> +メッセージの署名と暗号化に使用される X.509 証明書を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`findValue`|X.509 証明書ストアで検索する値を含む文字列。 属性に含まれている型は、指定された X509FindType の要件を満たしている必要があります。 既定値は空の文字列です。| +|`storeLocation`|クライアントがサーバーの証明書の検証に使用する X.509 証明書ストアの場所を指定します。 以下の値が有効です。

- LocalMachine: ローカル マシンに割り当てられた証明書ストア。
- CurrentUser: 現在のユーザーに割り当てられた証明書ストア。

既定は LocalMachine です。| +|`storeName`|開く X.509 証明書ストアの名前を指定します。 以下の値が有効です。

- AddressBook: 他のユーザー用の証明書ストア。
- AuthRoot: サードパーティ証明機関 \(CA\) の証明書ストア。
- CertificationAuthority: 中間証明機関 \(CA\) の証明書ストア。
- Disallowed: 失効した証明書の証明書ストア。
- My: 個人用証明書の証明書ストア。
- Root: 信頼されたルート証明機関 \(CA\) の証明書ストア。
- TrustedPeople: 直接信頼されたユーザーやリソースの証明書ストア。
- TrustedPublisher: 直接信頼された発行者の証明書ストア。

既定値は My です。| +|`X509FindType`|実行する X.509 検索の種類を定義します。 以下の値が有効です。

- FindByThumbPrint
- FindBySubjectName
- FindBySubjectDistinguishedName
- FindByIssuerName
- FindByIssuerDistinguishedName
- FindBySerialNumber
- FindByTimeValid
- FindByTimeNotYetValid
- FindByTemplateName
- FindByApplicationPolicy
- FindByCertificatePolicy
- FindByExtension
- FindByKeyUsage
- FindBySubjectKeyIdentifier

`findValue` 属性に含まれている型は、指定された X509FindType の要件を満たしている必要があります。

既定値は FindBySubjectDistinguishedName です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-servicecredentials.md)|| + +## 解説 + `` 要素は、サービスがクライアントと安全に通信するために、サービスが前もってクライアントの証明書を持っている必要がある場合に使用します。 このような状況は、双方向通信パターンを使用する場合に生じます。 より一般的な要求\/応答パターンでは、クライアントは自身の証明書を要求に含め、サービスはそれを使用してクライアントへの応答を暗号化し、署名します。 一方、双方向通信パターンでは、サービスにはクライアントからの要求が来ないので、クライアントの証明書をあらかじめ取得することで、クライアント宛のメッセージのセキュリティを保護する必要があります。 このため、クライアントの証明書を帯域外のネゴシエーションで取得し、この要素を使用して証明書を指定する必要があります。 双方向サービスの詳細については、「[方法 : 双方向コントラクトを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md)」を参照してください。 + +## 使用例 + 次のコードは、`` 要素の適切な X.509 証明書とカスタム検証タイプの検索方法を指定します。 + +``` + + + + + + + + +``` + +## 参照 + + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [方法 : カスタム証明書検証を使用するサービスを作成する](../../../../../docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/certificate-of-peer.md b/docs/framework/configure-apps/file-schema/wcf/certificate-of-peer.md new file mode 100644 index 00000000000..b838d379fbc --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/certificate-of-peer.md @@ -0,0 +1,70 @@ +--- +title: "<peer> の <certificate> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 48b69142-c957-4305-a042-c9d0c9a55c0e +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <peer> の <certificate> +ピアで使用される証明書を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`findValue`|X.509 証明書ストアで検索する値を含む文字列。 属性に格納されている型は、指定された `x509FindType` の要件を満たす必要があります。 既定値は空の文字列です。| +|`storeLocation`|クライアントがピアの証明書の検証に使用する X.509 証明書ストアの場所を指定します。 以下の値が有効です。

- LocalMachine: ローカル マシンに割り当てられた証明書ストア。
- CurrentUser: 現在のユーザーに割り当てられた証明書ストア。

既定は LocalMachine です。| +|`storeName`|開く X.509 証明書ストアの名前を指定します。 以下の値が有効です。

- AddressBook: 他のユーザー用の証明書ストア。
- AuthRoot: サードパーティ証明機関 \(CA: Certificate Authority\) の証明書ストア。
- CertificateAuthority: 中間証明機関 \(CA\) の証明書ストア。
- Disallowed: 失効した証明書の証明書ストア。
- My: 個人用証明書の証明書ストア。
- Root: 信頼されたルート証明機関 \(CA\) の証明書ストア。
- TrustedPeople: 直接信頼されたユーザーやリソースの証明書ストア。
- TrustedPublisher: 直接信頼された発行者の証明書ストア。

既定値は My です。| +|`X509FindType`|実行する X.509 検索の種類を定義します。 以下の値が有効です。

- FindByThumbPrint
- FindBySubjectName
- FindBySubjectDistinguishedName
- FindByIssuerName
- FindByIssuerDistinguishedName
- FindBySerialNumber
- FindByTimeValid
- FindByTimeNotYetValid
- FindByTemplateName
- FindByApplicationPolicy
- FindByCertificatePolicy
- FindByExtension
- FindByKeyUsage
- FindBySubjectKeyIdentifier

`findValue` 属性に格納されている型は、指定された `X509FindType` の要件を満たす必要があります。

既定値は FindBySubjectDistinguishedName です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peer-of-servicecredentials.md)|ピア ノードの現在の資格情報を指定します。| + +## 解説 + この構成要素には、ピア メッシュ内の近隣ノードを認証するときに使用される `X509Certificate2` インスタンスが格納されます。 + + ピア ツー ピア プログラミングの詳細については、「[ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md)」を参照してください。 + +## 参照 + + + + + + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md) + [Peer Channel Message Authentication](http://msdn.microsoft.com/ja-jp/80e73386-514e-4c30-9e4a-b9ca8c173a95) + [Peer Channel Custom Authentication](http://msdn.microsoft.com/ja-jp/4aa8a82e-41a8-48e2-8621-7e1cbabdca7c) + [セキュリティによるピア チャネル アプリケーションの保護](../../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/certificatereference-for-identity.md b/docs/framework/configure-apps/file-schema/wcf/certificatereference-for-identity.md new file mode 100644 index 00000000000..ffe2da3ce2b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/certificatereference-for-identity.md @@ -0,0 +1,63 @@ +--- +title: "<identity> の <certificateReference> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ac359c65-c22d-42d2-97de-db53b77cebdb +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <identity> の <certificateReference> +X.509 証明書検証の設定を指定します。 この ID を持つエンドポイントに接続するセキュリティで保護された [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] クライアントは、サーバーによって提示されるクレームに、この ID を構築するために使用された ID クレームが含まれていることを検証します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|findValue|X.509 証明書ストアで検索する値を指定します。 この属性に格納されている型は、指定された `X509FindType` 値の要件を満たす必要があります。 既定値は空の文字列です。| +|isChainIncluded|証明書チェーンを使用して検証を行うかどうかを指定するブール値です。| +|storeLocation|クライアントがサーバーの証明書の検証に使用できる証明書ストアの場所を指定します。

以下の値が有効です。

- LocalMachine: ローカル マシンに割り当てられた証明書ストア。
- CurrentUser: 現在のユーザーに割り当てられた証明書ストア。

既定値は LocalMachine です。

この属性は 型です。| +|storeName|開く X.509 証明書ストアの名前を指定します。

以下の値が有効です。

- AddressBook: 他のユーザー用の証明書ストア。
- AuthRoot: サードパーティ証明機関 \(CA\) の証明書ストア。
- CertificateAuthority: 中間証明機関 \(CA\) の証明書ストア。
- Disallowed: 失効した証明書の証明書ストア。
- My: 個人用証明書の証明書ストア。
- Root: 信頼されたルート証明機関 \(CA\) の証明書ストア。
- TrustedPeople: 直接信頼されたユーザーやリソースの証明書ストア。
- TrustedPublisher: 直接信頼された発行者の証明書ストア。

既定値は、My です。

この属性は 型です。| +|X509FindType|実行する X.509 検索の種類を指定します。 `findValue` 属性に含まれている型は、指定された X509FindType の要件を満たしている必要があります。

以下の値が有効です。

- FindByThumbPrint
- FindBySubjectName
- FindBySubjectDistinguishedName
- FindByIssuerName
- FindByIssuerDistinguishedName
- FindBySerialNumber
- FindByTimeValid
- FindByTimeNotYetValid
- FindByTemplateName
- FindByApplicationPolicy
- FindByCertificatePolicy
- FindByExtension
- FindByKeyUsage
- FindBySubjectKeyIdentifier

既定値は FindBySubjectDistinguishedName です。

この属性は 型です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|メッセージを交換する他のエンドポイントによるエンドポイントの認証を可能にする設定を指定します。| + +## 参照 + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/channelpoolsettings.md b/docs/framework/configure-apps/file-schema/wcf/channelpoolsettings.md new file mode 100644 index 00000000000..e9146c0c4a7 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/channelpoolsettings.md @@ -0,0 +1,73 @@ +--- +title: "<channelPoolSettings> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4755f3d3-4213-4c68-ae7f-45b67d744459 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <channelPoolSettings> +カスタム バインディングのチャネル プール設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`idleTimeout`|プール内のチャネルの接続が切断されるまでの最大アイドル時間を指定する正の 。 既定値は 00:02:00 です。| +|`leaseTimeout`|プールに返されたチャネルが閉じられるまでの時間を指定する 。 既定値は 00:10:00 です。| +|`maxOutboundChannelsPerEndpoint`|各リモート エンドポイントのプール内に格納できるチャネルの最大数を指定する正の整数。 既定値は 10 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md)|カスタム バインディングでパケット ルーティングを有効にします。| + +## 解説 + クォータは、リソースの過剰な消費を防ぐためのポリシー メカニズムとして使用されます。 クォータは、悪質な、または意図的でないサービス拒否 \(DOS\) 攻撃を防ぎます。 カスタム チャネルにチャネル クォータを設定するには、この要素を使用します。 + + `ChannelPoolSettings` では、次の 3 つのクォータを指定します。 + +- `idleTimeout` クォータは、サーバーでは、長時間リソースを停滞させることによるサービス拒否 \(DOS\) 攻撃を軽減するために使用されます。 クライアントでは、適切な値を設定することで、サービスとの接続の信頼性を高めることができます。 既定値では、リソースが控えめに割り当てられています。 開発環境、および小規模のインストール シナリオに適しています。 インストールでリソースが不足している場合、または追加リソースが使用可能であるにもかかわらず接続が制限されている場合、サービス管理者は値を確認する必要があります。 + +- `leaseTimeout` クォータは、負荷分散機能との統合、および信頼性の向上のために使用されます。 既定値では、リソースが控えめに割り当てられています。 開発環境、および小規模のインストール シナリオに適しています。 インストールでリソースが不足している場合、または追加リソースが使用可能であるにもかかわらず接続が制限されている場合、サービス管理者は値を確認する必要があります。 + +- `maxOutboundChannelsPerEndpoint` クォータは、サーバーとクライアントの両方に対するキャッシュ制限を設定し、信頼性向上のために使用されます。 既定値ではリソースが控えめに割り当てられており、開発環境および小規模なインストール シナリオに適しています。 インストールでリソースが不足している場合、または追加リソースが使用可能であるにもかかわらず接続が制限されている場合、サービス管理者は値を確認する必要があります。 + +## 参照 + + + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-element.md b/docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-element.md new file mode 100644 index 00000000000..b93c2269537 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-element.md @@ -0,0 +1,43 @@ +--- +title: "<claimTypeRequirements> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a26efe73-4bad-4731-8cad-27f00d54354b +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <claimTypeRequirements> 要素 +必須のクレームの種類のコレクションを指定します。 + + フェデレーション シナリオでは、サービスが受信資格情報についての要件を記述します。 たとえば、受信資格情報は、特定のクレーム タイプのセットを処理する必要があります。 このコレクションの子要素はそれぞれ、フェデレーション資格情報に表示されると予想される必須のクレームおよび省略可能なクレームの種類を指定します。 + + クレームの種類の要件は、発行されるトークンで要求されているクレームの種類の URI と、発行されるトークンでそのクレームの種類が必須かまたは省略可能かを示すブール型のパラメーターで構成されます。 + +## 参照 + + + + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-claimtyperequirements.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-for-message.md b/docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-for-message.md new file mode 100644 index 00000000000..d15f67e0ae9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-for-message.md @@ -0,0 +1,31 @@ +--- +title: "<message> の <claimTypeRequirements> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f95c5ecd-abb6-4b77-a6d7-a38727f4a142 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <message> の <claimTypeRequirements> +必須のクレームの種類のコレクションを指定します。 + + このコレクションは、発行されたトークンに含める必要のある必須クレームとオプション クレームを指定するために、サービスによって使用されます。クライアントは、発行されたトークンを使用してサービスにアクセスします。 WSDL の公開が有効になっていても、発行されるトークンに指定されたクレームの種類が含まれていることを WCF が要求しない場合、サービスは必須クレームの種類をメタデータで公開します。 存在している必須クレームの種類を実施しようとするサービスは、承認ポリシーを使用して実施します。 + + フェデレーション クライアント上では、このコレクションには、発行されたトークンに対するクライアントの要求の中でセキュリティ トークン サービスに送信される、必須クレームとオプション クレームのリストが含まれます。 + +## 参照 + + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/clear-of-claimtyperequirements-element.md b/docs/framework/configure-apps/file-schema/wcf/clear-of-claimtyperequirements-element.md new file mode 100644 index 00000000000..0b2453f09ee --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/clear-of-claimtyperequirements-element.md @@ -0,0 +1,51 @@ +--- +title: "<claimTypeRequirements> 要素の <clear> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ef42fde7-f292-4610-9111-9fea382c3b5f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <claimTypeRequirements> 要素の <clear> +すべてのクレームの種類をフェデレーション資格情報から削除するように指定します。 これにより、コレクションの初期値を確実に空にできます。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-for-message.md)|必須のクレームの種類のコレクションを指定します。 各要素は 型です。

フェデレーション シナリオでは、サービスが受信資格情報についての要件を記述します。 たとえば、受信資格情報は、特定のクレーム タイプのセットを処理する必要があります。 このコレクションの要素はそれぞれ、フェデレーション資格情報に表示されると予想される必須の要求および省略可能な要求の種類を指定します。| + +## 参照 + + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/client.md b/docs/framework/configure-apps/file-schema/wcf/client.md new file mode 100644 index 00000000000..4552c53b34b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/client.md @@ -0,0 +1,85 @@ +--- +title: "<client> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.ServiceModel/client" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#client" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: bf0f7031-76c8-4e7e-a6c6-9ad9119134be +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# <client> +`client` 要素は、クライアントが接続可能なエンドポイントの一覧を定義します。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpoint-of-client.md)|このクライアントが接続可能なエンドポイントを指定するエンドポイント要素のコレクションを含みます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/metadata.md)|メタデータを処理するための設定を含みます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md)|すべての Windows Communication Foundation \(WCF\) 構成要素のルート要素です。| + +## 解説 + `client` セクションは、クライアントが接続可能なエンドポイントの一覧を定義します。 クライアント セクションに示される各エンドポイントは、独自のバインディング、動作、およびコントラクトを定義します。 各エンドポイントは、`name` 属性と `contract` 属性の組み合わせで一意に識別されます。 クライアント コードは、クライアントが実装するサービスのエンドポイントに接続するための `name` を指定します。 `name` 属性が省略されている場合、クライアントが実装するコントラクトのエンドポイントが既定のエンドポイントとして機能します。 + + さらに、このセクションはメタデータを処理するための設定も指定します。 + +## 使用例 + +``` + + + + + +``` + +## 参照 + + + [WCF クライアントの構成](../../../../../docs/framework/wcf/feature-details/client-configuration.md) + [クライアント](../../../../../docs/framework/wcf/feature-details/clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-clientcredentials-element.md b/docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-clientcredentials-element.md new file mode 100644 index 00000000000..7c936e36743 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-clientcredentials-element.md @@ -0,0 +1,68 @@ +--- +title: "<clientCredentials> 要素の <clientCertificate> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3b3fa000-3434-4142-a178-11903bdd2c5d +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <clientCredentials> 要素の <clientCertificate> +サービスに対するクライアントの認証に使用される X.509 証明書を定義します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`findValue`|X.509 証明書ストアで検索する値を含む文字列。 属性に格納されている型は、`X509FindType` 属性値の要件を満たす必要があります。 既定値は空の文字列です。| +|`storeLocation`|クライアントがサービスに対して自身を認証するために使用する X.509 証明書の場所を指定します。 以下の値が有効です。

- LocalMachine: ローカル マシンに割り当てられた証明書ストア。
- CurrentUser: 現在のユーザーに割り当てられた証明書ストア。

既定は LocalMachine です。 この属性は 型です。| +|`storeName`|検索する X.509 証明書ストアの名前を指定します。 以下の値が有効です。

- AddressBook: 他のユーザー用の証明書ストア。
- AuthRoot: サードパーティ証明機関 \(CA: Certificate Authority\) の証明書ストア。
- CertificateAuthority: 中間証明機関 \(CA\) の証明書ストア。
- Disallowed: 失効した証明書の証明書ストア。
- My: 個人用証明書の証明書ストア。
- Root: 信頼されたルート証明機関 \(CA\) の証明書ストア。
- TrustedPeople: 直接信頼されたユーザーやリソースの証明書ストア。
- TrustedPublisher: 直接信頼された発行者の証明書ストア。

既定値は My です。 この属性は 型です。| +|X509FindType|実行する X.509 検索の種類を定義します。 `findValue` 属性に格納されている型は、この属性の要件を満たす必要があります。 以下の値が有効です。

- FindByThumbPrint
- FindBySubjectName
- FindBySubjectDistinguishedName
- FindByIssuerName
- FindByIssuerDistinguishedName
- FindBySerialNumber
- FindByTimeValid
- FindByTimeNotYetValid
- FindByTemplateName
- FindByApplicationPolicy
- FindByCertificatePolicy
- FindByExtension
- FindByKeyUsage
- FindBySubjectKeyIdentifier

既定値は FindBySubjectDistinguishedName です。 この属性は 型です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)|サービスに対するクライアントの認証に使用される資格情報を指定します。| + +## 解説 + この構成要素は、この要素によるクライアントの認証に使用する証明書を指定します。 [!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)] [方法 : クライアントの資格情報の値を指定する](../../../../../docs/framework/wcf/how-to-specify-client-credential-values.md). + +## 参照 + + + + + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [方法 : クライアントの資格情報の値を指定する](../../../../../docs/framework/wcf/how-to-specify-client-credential-values.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-servicecredentials.md b/docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-servicecredentials.md new file mode 100644 index 00000000000..6cd29c7d96f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-servicecredentials.md @@ -0,0 +1,67 @@ +--- +title: "<serviceCredentials> の <clientCertificate> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 90ad03aa-2317-43dd-8a72-6d24cdcad15c +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# <serviceCredentials> の <clientCertificate> +双方向通信パターンでサービスからクライアントへのメッセージの署名および暗号化に使用される X.509 証明書を定義します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md)|クライアント証明書の認証オプションを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/certificate-of-clientcertificate-element.md)|使用する証明書を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)|サービスの認証に使用される資格情報と、クライアントの資格情報検証関連の設定を指定します。| + +## 解説 + この要素は、サービスがクライアントと安全に通信するために、サービスが前もってクライアントの証明書を持っている必要がある場合に使用します。 このような状況は、双方向通信パターンを使用する場合に生じます。 より一般的な要求\/応答パターンでは、クライアントは自身の証明書を要求に含め、サービスはそれを使用してクライアントへの応答を暗号化し、署名します。 一方、双方向通信パターンでは、サービスにはクライアントからの要求が来ないので、クライアントの証明書をあらかじめ取得することで、クライアント宛のメッセージのセキュリティを保護する必要があります。 このため、クライアントの証明書を帯域外のネゴシエーションで取得し、この要素を使用して証明書を指定する必要があります。 双方向サービスの詳細については、「[方法 : 双方向コントラクトを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md)」を参照してください。 + + この要素で設定される証明書は、`MutualCertificateDuplex` メッセージ セキュリティ認証モードで構成されているバインディングのみを対象に、クライアントへのメッセージを暗号化するために使用されます。 + +## 参照 + + + + + + [方法 : 双方向コントラクトを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md) + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/clientcredentials.md b/docs/framework/configure-apps/file-schema/wcf/clientcredentials.md new file mode 100644 index 00000000000..25d6ad8bb7a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/clientcredentials.md @@ -0,0 +1,77 @@ +--- +title: "<clientCredentials> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1e6eef0d-a34e-4d74-b0f7-f65d2181858d +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <clientCredentials> +サービスに対するクライアントの認証に使用される資格情報を指定します。 + +## 構文 + +``` + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`supportInteractive`|実行時にクライアントの資格情報を選択する際に、対話型ユーザーを含めるかどうかを指定するブール値。 既定値は `true` です。| +|`type`|この設定要素の種類を指定する文字列です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-clientcredentials-element.md)|サービスに対するクライアントの認証に使用される証明書を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/httpdigest-element.md)|サービスに対するクライアントの認証に使用されるダイジェストを指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtoken.md)|セキュリティ トークン サービス \(STS\) に対するクライアントの認証に使用されるカスタム トークンの種類を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peer-of-clientcredentials-element.md)|現在のピア資格情報を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md)|クライアントに対するサービスの認証に使用される証明書を指定し、証明書オプションを設定するための構造を提供します。 この証明書は、クライアントに対するサービスの帯域外に提供される必要があります。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/windows-of-clientcredentials-element.md)|Windows 資格情報を指定します。 既定値は、現在のスレッドの資格情報です。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作を指定します。| + +## 解説 + クライアント資格情報は、相互認証が必要な場合にサービスに対するクライアントの認証に使用されます。 また、この構成セクションを使用して、クライアントがサービスの証明書によってサービスへのメッセージをセキュリティで保護する必要がある場合に使用するサービス証明書を指定することもできます。 + +## 参照 + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/clientvia.md b/docs/framework/configure-apps/file-schema/wcf/clientvia.md new file mode 100644 index 00000000000..63e6a22cbf9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/clientvia.md @@ -0,0 +1,49 @@ +--- +title: "<clientVia> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c27ee94e-babd-459b-9574-2a6d67d11314 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# <clientVia> +トランスポート チャネルの作成対象となる URI を指定します。 詳細については、「」を参照してください。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`viaUri`|メッセージの経路を示す URI を指定する文字列。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作を指定します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/comcontract.md b/docs/framework/configure-apps/file-schema/wcf/comcontract.md new file mode 100644 index 00000000000..da78326ddb2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/comcontract.md @@ -0,0 +1,104 @@ +--- +title: "<comContract> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3f8e1c0c-cfdf-4c79-ac65-c64e9323a51c +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <comContract> +COM\+ 統合サービス コントラクトを指定します。 + +## 構文 + +``` + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|コントラクト|コントラクトの種類を含む文字列。| +|name|コントラクト名を含む文字列。| +|namespace|コントラクトの名前空間を含む文字列。| +|requiresSession|コントラクトをセッションの多いバインディングでのみ使用できるかどうかを指定するブール値。 サービスが初期化される場合、統合ランタイムは、この設定が、使用されるバインディングの種類と一貫していることを保証します。 コントラクト内の 1 つ以上のバインディングが競合する場合は、例外が生成されます。 このプロパティが `false` で、一方向のチャネルを使用し、いずれかの \[out\] パラメーターが存在する場合は、例外も発生します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|persistableTypes|すべての永続型。| +|userDefinedTypes|サービス コントラクトに含まれるユーザー定義型 \(UDT\) のコレクション。| +|exposedMethods|COM\+ コンポーネントのインターフェイスが Web サービスとして公開されるときに公開される COM\+ メソッドのコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|comContracts|`comContract` 要素のコレクションを含みます。| + +## 解説 + COM\+ 統合サービス コントラクトは、現在 "http:\/\/tempuri.org" 名前空間に制限されており、コントラクト名はサポートする COM インターフェイスから派生します。 ただし、構成ファイルの `comContracts` セクションと `comContract` 要素を使用して代替を指定することができます。 たとえば、次の構成を使用して、名前空間、コントラクト名、組み込まれるユーザー定義型、およびサービス コントラクトのその他の設定を指定できます。 + +``` + + + + + + + + + +``` + + サービスが初期化される場合、指定した名前空間およびコントラクト名が、生成されるサービスの説明に適用されます。 + +## 参照 + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/comcontracts.md) + [COM\+ アプリケーションとの統合](../../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) + [方法 : COM\+ サービス設定を構成する](../../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/comcontracts.md b/docs/framework/configure-apps/file-schema/wcf/comcontracts.md new file mode 100644 index 00000000000..85f73c4cbf3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/comcontracts.md @@ -0,0 +1,52 @@ +--- +title: "<comContracts> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 42e74148-223d-4888-a8ed-1d928527eb09 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <comContracts> +`comContracts` 構成セクションには、COM\+ 統合サービス コントラクトのさまざまなプロパティを指定できる要素が含まれます。 + +## 名前空間およびコントラクトの指定 + COM\+ 統合サービス コントラクトは、現在 "http:\/\/tempuri.org" 名前空間に制限されており、コントラクト名はサポートする COM インターフェイスから派生します。 ただし、構成ファイルの `comContracts` セクションを使用して候補を指定することができます。 + + たとえば、次の構成を使用して、サービス コントラクトの名前空間とコントラクト名、およびセッションの多いバインディングで使用させるオプションを指定できます。 + +``` + + + + +``` + + サービスが初期化される場合、指定した名前空間およびコントラクト名が、生成されるサービスの説明に適用されます。 + + このセクションが空の場合、サービスの初期化によって、サポートしている COM インターフェイス ID から取得された既定の名前空間およびコントラクト名が適用されます。 + + また、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/exposedmethod.md) 要素を使用して、COM\+ コンポーネントのインターフェイスが Web サービスとして公開されるときに公開される COM\+ メソッドを指定できます。 さらに、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/persistabletypes.md) を使用して、統合で使用される永続型も指定できます。 最後に、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/userdefinedtype.md) 要素を使用して、サービス コントラクトに組み込まれるユーザー定義型 \(UDT\) を含めることができます。 + +## 参照 + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/exposedmethod.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/persistabletypes.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/userdefinedtype.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/comcontract.md) + [COM\+ アプリケーションとの統合](../../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) + [方法 : COM\+ サービス設定を構成する](../../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/commonbehaviors.md b/docs/framework/configure-apps/file-schema/wcf/commonbehaviors.md new file mode 100644 index 00000000000..443728d6413 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/commonbehaviors.md @@ -0,0 +1,20 @@ +--- +title: "<commonBehaviors> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5260aeca-388d-4e82-94c0-124fa8054cf5 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <commonBehaviors> +`commonBehaviors` セクションは、machine.config ファイルでだけ定義できます。 このセクションは、`endpointBehaviors` と`serviceBehaviors` という 2 つの子コレクションを定義します。 各コレクションは、コンピューター上の [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] のすべてのエンドポイントとサービスによって使用されるそれぞれの動作要素を定義します。 `endpointBehaviors` で定義される動作はクライアントだけに適用され、`serviceBehaviors` で定義される動作はサービスだけに適用されます。 ある動作が `commonBehaviors` と `behaviors` の両方のセクションで定義されている場合は、`behaviors` セクション内の動作が優先されます。 \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/commonparameters.md b/docs/framework/configure-apps/file-schema/wcf/commonparameters.md new file mode 100644 index 00000000000..fe51c46deed --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/commonparameters.md @@ -0,0 +1,107 @@ +--- +title: "<commonParameters> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ffc20832-34d6-4622-8174-81924fd53514 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <commonParameters> +複数のサービスでグローバルに使用されるパラメーターのコレクションを表します。 このコレクションには通常、永続性サービスによって共有されるデータベース接続文字列が格納されます。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-commonparameters.md)|サービスによって使用される共通パラメーターの名前と値のペアをコレクションに追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/workflowruntime.md)|ワークフロー ベースの [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスをホストする のインスタンスの設定を指定します。| + +## 解説 + 最初の要素 `` は、複数のサービスでグローバルに使用されるパラメーターを定義します \(たとえば を使用する場合の `ConnectionString`\)。 + +> [!NOTE] +> SQL 追跡サービスでは、`` セクションに `ConnectionString` 値を指定しても、その値が常に使用されるとは限りません。 `StateMachineWorkflowInstance.StateHistory` プロパティの取得のように、操作によっては失敗する場合があります。 これを回避するには、次の例に示すように、追跡プロバイダーの構成セクションで `ConnectionString` 属性を指定します。 + + `` + + など、作業バッチを永続的ストアにコミットするサービスでは、`EnableRetries` パラメーターを次の例のように使用することで、トランザクションの再試行を有効にできます。 + +``` + + + + + + + + + +``` + + `EnableRetries` パラメーターは、*CommonParameters* セクションのようにグローバル レベルで設定したり、*Services* セクションのように `EnableRetries` をサポートするサービスごとに設定したりできます。 + + 共通パラメーターをプログラムによって変更する方法を次のコード例に示します。 + +``` +Configuration config=WebConfigurationManager.OpenWebConfiguration("/Workflow", "Default Web Site", null, "localhost"); +WorkflowRuntimeSection wfruntime=config.GetSection("WorkflowRuntime") as WorkflowRuntimeSection; +NameValueConfigurationCollection commonParameters=wfruntime.CommonParameters; +commonParameters["ConnectionString"].Value="another connection string"; +config.Save(); +``` + + 構成ファイルを使用して Windows Workflow Foundation ホスト アプリケーションの オブジェクトの動作を制御する方法の詳細については、「[Workflow Configuration Files](http://msdn.microsoft.com/ja-jp/ada4bb90-6c9d-4f3d-a9d0-b559bb0f9909)」を参照してください。 + +## 使用例 + +``` + + + + +``` + +## 参照 + + + + + + [Workflow Configuration Files](http://msdn.microsoft.com/ja-jp/ada4bb90-6c9d-4f3d-a9d0-b559bb0f9909) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-commonparameters.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/compositeduplex.md b/docs/framework/configure-apps/file-schema/wcf/compositeduplex.md new file mode 100644 index 00000000000..b73648d099f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/compositeduplex.md @@ -0,0 +1,68 @@ +--- +title: "<compositeDuplex> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 725004d1-ce88-4405-a220-78e89844f81f +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <compositeDuplex> +サービスがメッセージをクライアントに返送するためのエンドポイントをクライアントが公開する必要がある場合に使用される、バインディング要素を定義します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|clientBaseAddress|二重モードのバック チャネルのアドレスを設定する URI。 サービスは、このアドレスを使用して、クライアントへのアクセス、接続の確立を行います。

この属性が設定されていない場合は、既定のアドレス “`full qualified name+default port\TemporaryIndigoAddress\guid`” が生成されます。 既定値は、`null` です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + たとえば HTTP のように、この構成要素はネイティブでの二重通信を許可しないトランスポートで使用されます。 これとは対照的に、TCP では、二重通信がネイティブで許可されているので、クライアントにメッセージを返信するためにこのバインディング要素をサービスで使用する必要はありません。 + + クライアントは、サービスのアドレスを公開して、アクセスおよび接続の確立ができるようにする必要があります。 このクライアント アドレスは、`clientBaseAddress` 属性によって提供されます。 ClientBaseAddress がユーザーによって明示的に設定されていない場合は、WCF \(Windows Communication Foundation\) によって自動的に生成されます。 + +## 使用例 + +``` + +``` + +## 参照 + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/connectionpoolsettings-of-tcptransport.md b/docs/framework/configure-apps/file-schema/wcf/connectionpoolsettings-of-tcptransport.md new file mode 100644 index 00000000000..b2df3402fbf --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/connectionpoolsettings-of-tcptransport.md @@ -0,0 +1,65 @@ +--- +title: "<tcpTransport> の <connectionPoolSettings> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2fbc3aa7-fcc9-4193-99a3-85d31d60d3f7 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <tcpTransport> の <connectionPoolSettings> +TCP トランスポートの追加の接続プール設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`groupName`|送信チャネルに使用される接続プールの名前を定義する文字列です。 ストリーム配信モードでは、接続が共有されません。したがって、接続プールは無効です。 既定は、"default" 文字列です。 この値を変更して、特定のクライアントの接続を、個別のグループに分離できます。| +|`idleTimeout`|接続が切断されるまでの最大アイドル時間を指定する正の 。 既定値は 00:02:00 です。| +|`leaseTimeout`|アクティブな接続が終了されるまでの時間を指定する 。 既定値は 00:05:00 です。

接続は、接続キャッシュに返された後、アクティブに転送中ではないときに終了します。 TCP トランスポートによって使用される接続キャッシュは、各エンドポイントの必要に応じて、`maxOutboundConnectionsPerEndpoint` で設定されているキャッシュ制限内で新しい接続を作成します。| +|`maxOutboundConnectionsPerEndpoint`|そのサービスによって開始されるリモート エンドポイントへの接続の最大数を指定する正の整数。 制限を超えた接続は、制限内に空きができるまでキューに置かれます。 `idleTimeout` は、例外がスローされるまでに接続をキューに入れたままにする期間を制限します。 既定値は 10 です。

この属性は、クライアントから特定のサービス エンドポイントへの接続で、同時にアクティブできる接続数を制限します。 この値よりも多くのアクティブなクライアント接続がある場合、サービスは、クライアントに応答しないように見える可能性があります。 この場合は、この値を調整して、予想される特定のエンドポイントへの同時クライアント接続の最大数より大きくする必要があります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/namedpipetransport.md)|チャネルで名前付きパイプを使用してメッセージを転送するトランスポートを定義します。| + +## 参照 + + + + + + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/connectionpoolsettings.md b/docs/framework/configure-apps/file-schema/wcf/connectionpoolsettings.md new file mode 100644 index 00000000000..986754d9884 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/connectionpoolsettings.md @@ -0,0 +1,63 @@ +--- +title: "<connectionPoolSettings> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6fa7fa65-2c6e-4eab-b8cf-7690112c0be5 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <connectionPoolSettings> +名前付きパイプ バインディングの追加の接続プール設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`groupName`|送信チャネルに使用される接続プールの名前を定義する文字列です。 ストリーム配信モードでは、接続が共有されません。したがって、接続プールは無効です。 既定は、"default" 文字列です。 この値を変更して、特定のクライアントの接続を、個別のグループに分離できます。| +|`idleTimeout`|接続が切断されるまでの最大アイドル時間を指定する正の 。 既定値は 00:02:00 です。| +|`maxOutboundConnectionsPerEndpoint`|そのサービスによって開始されるリモート エンドポイントへの接続の最大数を指定する正の整数。 制限を超えた接続は、制限内に空きができるまでキューに置かれます。 `idleTimeout` は、例外がスローされるまでに接続をキューに入れたままにする期間を制限します。 既定値は 10 です。

この属性は、クライアントから特定のサービス エンドポイントへの接続で、同時にアクティブできる接続数を制限します。 この値よりも多くのアクティブなクライアント接続がある場合、サービスは、クライアントに応答しないように見える可能性があります。 この場合は、この値を調整して、予想される特定のエンドポイントへの同時クライアント接続の最大数より大きくする必要があります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/namedpipetransport.md)|チャネルで名前付きパイプを使用してメッセージを転送するトランスポートを定義します。| + +## 参照 + + + + + + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/contracttypenames.md b/docs/framework/configure-apps/file-schema/wcf/contracttypenames.md new file mode 100644 index 00000000000..37f2542cd1e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/contracttypenames.md @@ -0,0 +1,70 @@ +--- +title: "<contractTypeNames> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5ec5efc6-87f8-4160-9be0-dcd2e01df3df +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <contractTypeNames> +検索対象サービスのコントラクト名であるコントラクト型名のリストと、サービスを検索するときに一般的に使用される条件を指定する構成セクション。 複数のコントラクト名が指定されると、すべてのコントラクトに一致するサービス エンドポイントのみが適用されます。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] では、1 つのエンドポイントでサポートされるのは 1 つのコントラクトだけであることに注意してください。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/contracttypenames.md)|コントラクト型名は、サービスを検索するときに一般的に使用される条件セットを参照するプロパティです。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/findcriteria.md)|探索サービスの検索にクライアント アプリケーションによって使用される基準を提供する構成要素。 基準は、\(探しているサービスを指定する\) 検索条件と \(検索をどのくらい続けるかを指定する\) 検索終了条件にグループ化できます。| + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/custom.md b/docs/framework/configure-apps/file-schema/wcf/custom.md new file mode 100644 index 00000000000..d748b23ca12 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/custom.md @@ -0,0 +1,65 @@ +--- +title: "<custom> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a6f65a00-bd1a-4d4a-955a-fe009ec02ab8 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <custom> +ユーザー設定のピア リゾルバー サービスの設定を指定します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`address`|カスタム ピア リゾルバー サービスをホストするピア ノードのエンドポイント アドレスを指定する URI。| +|`resolverType`|カスタム ピア リゾルバー サービスの種類を指定する文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|この要素を使用して構成されたカスタム ピア リゾルバーの ID を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/headers-element.md)|カスタム ピア リゾルバーによって処理される SOAP メッセージに使用するアドレス ヘッダーのコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/resolver.md)|ピア メッシュ ID を解決してメッシュに参加する複数ノードを表すピア ノード アドレスのセットを取得するために使用されるピア リゾルバー。| + +## 解説 + この要素は、サービスをホストするピアのエンドポイント アドレスや特定のバインディング設定など、カスタム ピア リゾルバー サービスの基本設定を定義します。 カスタム リゾルバーを作成する方法の詳細については、「[Adding a Custom Resolver to a PeerChannel Application](http://msdn.microsoft.com/ja-jp/12aa3787-2962-439c-ad27-46523c8b0419)」を参照してください。 + +## 参照 + + + + + [ピア リゾルバー](../../../../../docs/framework/wcf/feature-details/peer-resolvers.md) + [Adding a Custom Resolver to a PeerChannel Application](http://msdn.microsoft.com/ja-jp/12aa3787-2962-439c-ad27-46523c8b0419) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/custombinding.md b/docs/framework/configure-apps/file-schema/wcf/custombinding.md new file mode 100644 index 00000000000..9a69ffcc320 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/custombinding.md @@ -0,0 +1,314 @@ +--- +title: "<customBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 9da4f960-f64e-4d8a-894d-2b09eba5ce4b +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# <customBinding> +ユーザーのメッセージ スタックを完全に制御できます。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|closeTimeout|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|name|バインディングの構成名を格納する文字列です。 この値は、カスタム バインディングの識別文字列として機能するユーザー定義文字列です。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|openTimeout|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|receiveTimeout|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|sendTimeout|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/compositeduplex.md)|カスタム バインディングの双方向のメッセージングを指定します。 たとえば HTTP のように、ネイティブでの二重通信を許可しないトランスポートで使用されます。 これとは対照的に、TCP では、二重通信がネイティブで許可されているので、クライアントにメッセージを返信するためにこのバインディング要素をサービスで使用する必要はありません。

クライアントは、サービスのアドレスを公開して、アクセスおよび接続の確立ができるようにする必要があります。 このクライアント アドレスは、`ClientBaseAddress` 属性によって提供されます。

この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/pnrppeerresolver.md)|PNRP \(Peer Name Resolution Protocol\) ピア名リゾルバーを指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/reliablesession.md)|WS\-ReliableMessaging の設定を指定します。 この要素がカスタム バインディングに追加される場合、その結果となるチャネルにより、正確に 1 回の配信保証をサポートできます。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)|カスタム バインディングのセキュリティ オプションを指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/sslstreamsecurity.md)|SSL ストリーム バインディングのセキュリティ設定を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transactionflow.md)|バインディングがトランザクション フローをサポートし、プロトコルが `transactionProtocol` 属性によって使用される必要があることを指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/windowsstreamsecurity.md)|カスタム バインディングのストリーミング セキュリティのオプションを指定します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|バインディング|Windows Communication Foundation アプリケーションのすべてのバインディングを含みます。| + +## 解説 + カスタム バインディングを使用すると、WCF メッセージ スタックのフル コントロールが可能になります。 特定のエンティティの構成要素を追加した、特別にカスタマイズされたバインディングを作成できます。 たとえば、ユーザーは `httpsTransport` セクション、`reliableSession` セクション、および `security` セクションを組み合わせて、信頼できるセキュリティで保護された HTTPS ベースのバインディングを作成できます。 + + 個別のバインディングは、メッセージ スタックを、スタック要素の構成要素をスタックに出現する順序で指定することにより定義します。 各要素は、スタック内の 1 つの要素を定義および構成します。 各カスタム バインディング内のトランスポート要素は 1 つだけにする必要があります。 この要素がない場合、メッセージ スタックは不完全です。 + + 要素がスタックに出現する順序は重要です。それは、その順序で操作がメッセージに適用されるためです。 スタック要素で推奨される順序を次に示します。 + +1. トランザクション \(省略可能\) + +2. リライアブル メッセージ機能 \(省略可能\) + +3. セキュリティ \(省略可能\) + +4. Transport + +5. エンコーダー \(省略可能\) + + システムが提供するバインディングの中にサービスの要件を満たすものがない場合は、カスタム バインディングを使用します。 たとえば、カスタム バインドを使用すると、サービス エンドポイントで新しいトランスポートや新しいエンコーダーを使用できます。 + + カスタム バインドは、特定の順序で "積み重ねられている" バインド要素のコレクションから の 1 つを使用して作成します。 + +- 最上位にあるのは、トランザクションのフローを可能にするオプションの です。 + +- その次にあるのは、WS\-ReliableMessaging 仕様で定義されているセッションおよび順序指定のメカニズムを提供するオプションの です。 このセッションの概念は、SOAP およびトランスポート中継局を通過できます。 + +- その次にあるのは、承認、認証、保護、機密性などのセキュリティ機能を提供するオプションのセキュリティ バインド要素です。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] では、次のセキュリティ バインド要素が提供されています。 + + - + + - + + - + + - + +- その次にあるのは、バインド要素によって指定されるオプションのメッセージ パターンです。 + +- + +- その次にあるのは、オプションのトランスポート アップグレード\/ヘルパー バインド要素です。 + + - + + - + + - + +- その次にあるのは、必須のメッセージ エンコード バインディング要素です。 独自のトランスポートを使用することも、以下のメッセージ エンコード バインドのいずれかを使用することもできます。 + + - + + - + + - + +- 最下位には、必須のトランスポート要素があります。 独自のトランスポートを使用することも、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] で提供されるトランスポート バインド要素のいずれかを使用することもできます。 + + - + + - + + - + + - + + - + + - + + - + + 各層のオプションの概要を次の表に示します。 + +|レイヤー|オプション|必須| +|----------|-----------|--------| +|トランザクション フロー||X| +|信頼性||X| +|セキュリティ|同期、非同期、トランスポート レベル|X| +|形状の変更||X| +|トランスポートのアップグレード|SSL ストリーム、Windows ストリーム、ピア リゾルバー|X| +|エンコーディング|テキスト、バイナリ、MTOM、カスタム|はい| +|Transport|TCP、名前付きパイプ、HTTP、HTTPS、MSMQ のフレーバー、カスタム|はい| + + さらに、独自のバインド要素を定義し、それを定義済みの層のいずれかの間に挿入できます。 + + カスタム バインディングを使用してシステム提供のバインディングを変更する方法については、「[方法 : システム指定のバインディングをカスタマイズする](../../../../../docs/framework/wcf/extending/how-to-customize-a-system-provided-binding.md)」を参照してください。 + +## 参照 + + + + + [\](../../../../../docs/framework/misc/binding.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [customBinding Element](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/customtrackingqueries-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/customtrackingqueries-of-wcf.md new file mode 100644 index 00000000000..cfc87bde42a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/customtrackingqueries-of-wcf.md @@ -0,0 +1,63 @@ +--- +title: "WCF の <customTrackingQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 14cfe47e-9935-4120-84f1-8f38de8ca4c1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <customTrackingQueries> +コード アクティビティで定義するイベントを追跡するために使用する、クエリのコレクションを表します。 追跡参加要素がカスタム追跡レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingquery.md)|コード アクティビティで定義するイベントを追跡するために使用するクエリ。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|`activityDefinitionId` プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.CustomTrackingQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.CustomTrackingQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.CustomTrackingQuery](assetId:///System.Activities.Tracking.CustomTrackingQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/customtrackingquery-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/customtrackingquery-of-wcf.md new file mode 100644 index 00000000000..4a4be066aed --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/customtrackingquery-of-wcf.md @@ -0,0 +1,64 @@ +--- +title: "WCF の <customTrackingQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 164446ae-8440-4b67-b217-6786cfae1e01 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <customTrackingQuery> +コード アクティビティで定義するイベントを追跡するために使用する、クエリのコレクションを表します。 追跡参加要素がカスタム追跡レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityName|追跡レコードを生成したアクティビティの名前を指定する文字列。| +|name|生成されたカスタム追跡レコードの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingquery.md)|コード アクティビティで定義するイベントを追跡するために使用するクエリ。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.CustomTrackingQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.CustomTrackingQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.CustomTrackingQuery](assetId:///System.Activities.Tracking.CustomTrackingQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md b/docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md new file mode 100644 index 00000000000..961735a5490 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md @@ -0,0 +1,69 @@ +--- +title: "<dataContractSerializer> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - " 要素" + - "DataContractSerializer" + - "dataContractSerializer 要素" + - "KnownTypes" +ms.assetid: f41fb4d5-24e7-4059-8010-286a30bfea93 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# <dataContractSerializer> + 用の設定データが含まれています。 この要素は、2 つの異なる階層で使用されます。 1 つは以下の「スキーマの階層」に示したもので、もう 1 つは「解説」に記載しています。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|要素|説明| +|--------|--------| +|ignoreExtensionDataObject|エンドポイントがシリアル化または逆シリアル化されているときに、そのエンドポイントにより提供されるデータを無視するかどうかを指定するブール値。 この属性は、`` 要素の下の `` でのみ設定可能です。| +|maxItemsInObjectGraph|シリアル化または逆シリアル化する項目の最大数を指定する整数。 この属性は 65536 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md)|サービスの動作設定のコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-runtime-serialization.md)| 名前空間セクションのルート要素を表し、 のオプションを設定するための要素を含みます。| + +## 解説 + このトピックの冒頭で述べたように、この階層は \ 要素が使用される 2 つ目の階層です。 + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-runtime-serialization.md) + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md) + + 既知の型の詳細については、 を参照してください。 + +## 参照 + + + + [既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) + [データ転送とシリアル化](../../../../../docs/framework/wcf/feature-details/data-transfer-and-serialization.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/datacontractserializer-of-system-runtime-serialization.md b/docs/framework/configure-apps/file-schema/wcf/datacontractserializer-of-system-runtime-serialization.md new file mode 100644 index 00000000000..c9120c990df --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/datacontractserializer-of-system-runtime-serialization.md @@ -0,0 +1,71 @@ +--- +title: "<system.runtime.serialization> の <dataContractSerializer> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d9b3d625-be3f-4768-8e0d-1b7e6929f6a8 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <system.runtime.serialization> の <dataContractSerializer> + 用の設定データが含まれています。 + +## 構文 + +``` + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|要素|説明| +|--------|--------| +|ignoreExtensionDataObject|エンドポイントがシリアル化または逆シリアル化されているときに、そのエンドポイントにより提供されるデータを無視するかどうかを指定するブール値。 この属性は、`` 要素の下の `` でのみ設定可能です。| +|maxItemsInObjectGraph|シリアル化または逆シリアル化する項目の最大数を指定する整数。 この属性は 65536 です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/declaredtypes.md)|逆シリアル化時に が使用する既知の型が含まれています。

データ コントラクトと既知の型の詳細については、「[既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-runtime-serialization.md)| 名前空間セクションのルート要素を表し、 のオプションを設定するための要素を含みます。| + +## 解説 + 既知の型の詳細については、「」および「[既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください。 + +## 参照 + + + [既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/datacontractserializer.md b/docs/framework/configure-apps/file-schema/wcf/datacontractserializer.md new file mode 100644 index 00000000000..43750039688 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/datacontractserializer.md @@ -0,0 +1,60 @@ +--- +title: "dataContractSerializer | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a47513a4-a96c-4350-8586-daacb05dee71 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# dataContractSerializer + 用の設定データが含まれています。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|要素|説明| +|--------|--------| +|ignoreExtensionDataObject|エンドポイントがシリアル化または逆シリアル化されているときに、そのエンドポイントにより提供されるデータを無視するかどうかを指定するブール値。| +|maxItemsInObjectGraph|シリアル化または逆シリアル化する項目の最大数を指定する整数。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作を指定します。| + +## 解説 + 既知の型の詳細については、 のドキュメントを参照してください。 + +> [!CAUTION] +> `` 動作要素が存在する場合は、構成ファイル内で `` 動作要素よりも前に出現する必要があります。 それ以外の場合は、動作結果は未定義になります。 + +## 参照 + + + + [既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) + [データ転送とシリアル化](../../../../../docs/framework/wcf/feature-details/data-transfer-and-serialization.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/declaredtypes.md b/docs/framework/configure-apps/file-schema/wcf/declaredtypes.md new file mode 100644 index 00000000000..c6673ed2b94 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/declaredtypes.md @@ -0,0 +1,99 @@ +--- +title: "<declaredTypes> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - " 要素" + - "DataContractSerializer" + - "dataContractSerializer 要素" + - "declaredTypes 要素" + - "KnownTypes" +ms.assetid: f35184e4-9d9e-4d37-8fb4-d5b58220eb3e +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <declaredTypes> +逆シリアル化時に が使用する既知の型が含まれています。 + + データ コントラクトと既知の型の詳細については、「[既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください。 + +## 構文 + +``` + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-declaredtypes-element.md)|既知の型を必要とする型を追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-of-system-runtime-serialization.md)| 用の設定データが含まれています。| + +## 解説 + 既知の型[!INCLUDE[crabout](../../../../../includes/crabout-md.md)]、「[既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」および「」を参照してください。 + +## 使用例 + 次の XML コードに、`DataContractSerializer` 要素に追加された宣言型と既知の型を示します。 この例は、追加された 3 つの型を示しています。 最初の型は、"Item" という既知の型を使用する "Orders" という名前のカスタム型です。 2 つ目の宣言型は、既知の型として `Item` を使用する です。 最後の 3 つ目の宣言型は、 です。 クラスの型は、2 種類のパラメーターを持つジェネリック型です。 最初のパラメーターはキーを表し、2 番目のパラメーターは値を表します。 次の例は、2 番目の型 \(値\) の を既知の型の一覧に追加します。 `index` 属性を使用して、既知の型で使用する型パラメーターを指定する必要があります。 この場合には、"1" に設定された index 属性 \(コレクションは 0 から始まる\) によって値型が示されます。 + +``` + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md) + [既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-declaredtypes-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/defaultcertificate-element.md b/docs/framework/configure-apps/file-schema/wcf/defaultcertificate-element.md new file mode 100644 index 00000000000..c8efb1dd025 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/defaultcertificate-element.md @@ -0,0 +1,106 @@ +--- +title: "<defaultCertificate> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f1ddf364-9a00-45d3-b989-ff381c154ce6 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# <defaultCertificate> 要素 +ネゴシエーション プロトコル経由でサービスまたは STS が証明書を提供しないときに使用される X.509 証明書を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|findValue|文字列。 検索対象の値。| +|x509FindType|列挙値。 検索する証明書フィールドのいずれかです。| +|storeLocation|列挙値。 検索する 2 つのシステム格納場所のいずれかです。| +|storeName|列挙値。 検索するシステム ストアのいずれかです。| + +## findValue 属性 + +|値|説明| +|-------|--------| +|String|値は、検索されるフィールド \(X509FindType 属性により指定される\) によって異なります。 たとえば、サムプリント検索する場合、値は 16 進数の文字列にする必要があります。| + +## x509FindType 属性 + +|値|説明| +|-------|--------| +|列挙型|値は、FindByThumbprint、FindBySubjectName、FindBySubjectDistinguishedName、FindByIssuerName、FindByIssuerDistinguishedName、FindBySerialNumber、FindByTimeValid、FindByTimeNotYetValid、FindBySerialNumber、FindByTimeExpired、FindByTemplateName、FindByApplicationPolicy、FindByCertificatePolicy、FindByExtension、FindByKeyUsage、FindBySubjectKeyIdentifier です。| + +## storeLocation 属性 + +|値|説明| +|-------|--------| +|列挙型|CurrentUser または LocalMachine です。| + +## storeName 属性 + +|値|説明| +|-------|--------| +|列挙型|値は、AddressBook、AuthRoot、CertificateAuthority、Disallowed、My、Root、TrustedPeople、および TrustedPublisher です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md)|クライアントに対してサービスを認証する際に使用される証明書を指定します。| + +## 解説 + 証明書ベースのメッセージ セキュリティを使用するバインディングでは、この構成要素で指定された証明書を使用して、サービスへのメッセージが暗号化されます。この証明書は、サービスがクライアントへの応答に署名するためにも使用されます。 この要素には、サービスで証明書が指定されていないときに使用する証明書を 1 つ格納できます。 + +## 使用例 + URI が http:\/\/www.contoso.com で始まるエンドポイントに使用する証明書と、証明書ネゴシエーションを実行しない他のすべてのエンドポイントに使用する証明書を指定する例を次に示します。 + +``` + + + + + + + +``` + +## 参照 + + + + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/defaultports.md b/docs/framework/configure-apps/file-schema/wcf/defaultports.md new file mode 100644 index 00000000000..1bceb1fd3cb --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/defaultports.md @@ -0,0 +1,52 @@ +--- +title: "<defaultPorts> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 725d4ee5-bd46-4f0e-9c20-30ba75d6eb2c +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <defaultPorts> +クライアント アプリケーションがリッスンする既定の通信エンドポイントの一覧を表示する既定のポートのコレクション。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\ の \](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-defaultports.md)|クライアント アプリケーションがリッスンする既定の通信エンドポイント。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/userequestheadersformetadataaddress.md)|既定のポートの一覧。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/diagnostics-for-activation.md b/docs/framework/configure-apps/file-schema/wcf/diagnostics-for-activation.md new file mode 100644 index 00000000000..280a426698f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/diagnostics-for-activation.md @@ -0,0 +1,55 @@ +--- +title: "アクティベーションの <diagnostics> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1486e0eb-fe2a-46c3-b584-c924889477dd +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# アクティベーションの <diagnostics> +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] リスナーの診断機能を構成します。 + +## 構文 + +``` + + + + + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`performanceCountersEnabled`|診断用パフォーマンス カウンターが有効であるかどうかを示すブール値。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel-activation.md)|リスナー プロセス SMSvcHost.exe の設定が含まれています。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/diagnostics.md b/docs/framework/configure-apps/file-schema/wcf/diagnostics.md new file mode 100644 index 00000000000..27c12b7e668 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/diagnostics.md @@ -0,0 +1,94 @@ +--- +title: "<diagnostics> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0c2f95c4-cc12-4fb5-a70c-7fc6fa95db58 +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# <diagnostics> +`diagnostics` 要素は、ランタイムの検査と管理を行う管理者が使用できる設定を定義します。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|etwProviderId|イベントを ETW セッションに書き込むイベント追跡プロバイダーの識別子を指定する文字列。| +|performanceCounters|アセンブリのパフォーマンス カウンターが有効であるかどうかを指定します。 有効な値は、次のとおりです。

- Off: パフォーマンス カウンターは無効です。
- ServiceOnly: このサービスに関連するパフォーマンス カウンターのみ有効です。
- All: パフォーマンス カウンターを実行時に表示できます。
- 既定値 : 単一のパフォーマンス カウンター インスタンス \_WCF\_Admin が作成されます。 このインスタンスは、インフラストラクチャで使用される SQM データのコレクションを有効にするために使用されます。 このインスタンスのカウンター値は更新されず、0 のままになります。 WCF の構成が存在しない場合は、これが既定値になります。| +|wmiProviderEnabled|アセンブリの WMI プロバイダーが有効であるかどうかを指定するブール値。 ユーザーが Windows Communication Foundation \(WCF\) の検査および制御機能に対する実行時アクセス権を取得するには、WMI プロバイダーが必要です。 既定値は、`false` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endtoendtracing.md)|サービス アプリケーションの実行中にエンドツーエンドのトレースのさまざまな側面を有効または無効にするための構成要素。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/messagelogging.md)|WCF メッセージ ログの設定について説明します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|serviceModel|すべての WCF 構成要素のルート要素です。| + +## 解説 + `diagnostics` セクションは、アセンブリに配置されるすべてのサービスの診断設定を定義します。 アセンブリ内のサービスが 1 つでない限り、サービス レベル別に診断設定を定義することはできません。 属性は、セクションの要件に応じて設定されます。 + +## 使用例 + +``` + + + + + + + +``` + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/discoveryclient.md b/docs/framework/configure-apps/file-schema/wcf/discoveryclient.md new file mode 100644 index 00000000000..2b80414498e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/discoveryclient.md @@ -0,0 +1,65 @@ +--- +title: "<discoveryClient> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a78f74c3-1152-4149-ab29-3f12d316caeb +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <discoveryClient> +クライアント アプリケーションが実行時に探索可能なサービスを自動的に検索し、そのアドレスを見つけることができるカスタム バインディングを作成するための構成要素。 + +## 構文 + +``` + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|discoveryEndpoint|クライアント アプリケーションが実行時に探索可能なサービスを自動的に検索し、そのアドレスを見つけることができる探索エンドポイントの名前を含む文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|探索サービスの検索にクライアント アプリケーションによって使用される基準を提供する構成要素。 基準は、\(探しているサービスを指定する\) 検索条件と \(検索をどのくらい続けるかを指定する\) 検索終了条件にグループ化できます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/discoveryclientsettings.md b/docs/framework/configure-apps/file-schema/wcf/discoveryclientsettings.md new file mode 100644 index 00000000000..f5bb642f7b8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/discoveryclientsettings.md @@ -0,0 +1,72 @@ +--- +title: "<discoveryClientSettings> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 02e1b823-a8bb-4074-90d5-8599f71e8f9d +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <discoveryClientSettings> +サービス探索プロセスにクライアントとして参加するためにアプリケーションが必要とする設定を格納します。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|discoveryEndpoint|クライアント アプリケーションが実行時に探索可能なサービスを自動的に検索し、そのアドレスを見つけることができる探索エンドポイントの名前を含む文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|探索サービスの検索にクライアント アプリケーションによって使用される基準を提供する構成要素。 基準は、\(探しているサービスを指定する\) 検索条件と \(検索をどのくらい続けるかを指定する\) 検索終了条件にグループ化できます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|アプリケーションが実行時に動的にエンドポイント アドレスを検索するクライアント プログラムとして機能するための情報を格納する標準エンドポイントを定義します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/discoveryendpoint.md b/docs/framework/configure-apps/file-schema/wcf/discoveryendpoint.md new file mode 100644 index 00000000000..23bc2351985 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/discoveryendpoint.md @@ -0,0 +1,90 @@ +--- +title: "<discoveryEndpoint> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fae2f48b-a635-4e4b-859d-a1432ac37e1c +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <discoveryEndpoint> +この構成要素は、固定探索コントラクトが含まれた標準エンドポイントを定義します。 サービスの構成に追加すると、この要素により、探索メッセージをリッスンする場所が指定されます。 クライアントの構成に追加すると、この要素により、探索クエリの送信先となる場所が指定されます。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|discoveryMode|探索プロトコルのモードを示す文字列。 有効値は "Adhoc" と "Managed" です。 マネージ モードでは、プロトコルは Discoverable サービスのリポジトリとして機能する Discovery Proxy に依存します。 アドホック モードでは、プロトコルは UDP マルチキャスト メカニズムを使用して利用可能なサービスを探索する必要があります。 この値は、 型です。| +|discoveryVersion|WS\-Discovery プロトコルの 2 つのバージョンのうち、1 つを指定する文字列。 有効値は WSDiscovery11 と WSDiscoveryApril2005 です。 この値は、 型です。| +|maxResponseDelay|Discovery プロトコルが Probe Match や Resolve Match などのメッセージを送信するまでの待機時間の最大値を指定する Timespan 値。

すべての ProbeMatch が同時に送信されると、ネットワーク ストームが発生することがあります。 これを防ぐために、各 ProbeMatch はランダムな時間だけ待機して送信されます。 ランダムな待機時間は、0 からこの属性に設定された値の範囲内で設定されます。 この属性を 0 に設定すると、ProbeMatch メッセージは待機せずに短いループで送信されます。 それ以外の場合は、ProbeMatch メッセージはランダムな時間だけ待機して送信されます。すべての ProbeMatch メッセージの送信にかかる合計時間が maxResponseDelay を超えることはありません。 この値はサービスのみに関連するもので、クライアントが使用するものではありません。| +|`name`|標準エンドポイントの構成名を指定する文字列。 この名前は、サービス エンドポイントの `endpointConfiguration` 属性で使用され、標準エンドポイントと構成を関連付けます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|1 つ以上のプロパティ \(アドレス、バインディング、コントラクト\) が固定されている、あらかじめ定義されたエンドポイントである標準エンドポイントのコレクション。| + +## 使用例 + ピア ネットワーク マルチキャスト トランスポート経由で探索メッセージをリッスンするサービスの例を次に示します。 この例では、明示的に WS\-Discovery April 2005 バージョンを指定します。 + + 標準エンドポイントの構成はサービスごとに定義します。サービス間で共有することはできません。 別のサービスで同じ探索エンドポイントを使用するには、該当のサービスのセクションに同じ構成を追加する必要があります。 + +``` + + + + + + + + + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/dispatchersynchronization.md b/docs/framework/configure-apps/file-schema/wcf/dispatchersynchronization.md new file mode 100644 index 00000000000..3d01a47fb14 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/dispatchersynchronization.md @@ -0,0 +1,55 @@ +--- +title: "<dispatcherSynchronization> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cc030f9c-4e38-4b14-94dc-9a0e41ec8e2d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <dispatcherSynchronization> +サービスが非同期に応答を返すことができるようにするエンドポイントの動作を指定します。 + +## 構文 + +``` + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|asynchronousSendEnabled|非同期の送信動作が有効かどうかを示すブール値。| +|`maxPendingReceives`|チャネルで発行可能な同時受信の数を指定する整数。

この値は、サービス調整の動作を適切に構成した後に構成する必要があります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作を指定します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/dns.md b/docs/framework/configure-apps/file-schema/wcf/dns.md new file mode 100644 index 00000000000..8083d37716c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/dns.md @@ -0,0 +1,64 @@ +--- +title: "<dns> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 81819dae-4825-43b7-bccd-f16d2d3d2f06 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <dns> +予想されるサーバーの ID を指定します。 この ID は、同じ値を持つ DNS がサーバーの証明書に含まれていれば、X509 証明書の認証モードで有効です。 さらに、SPN に同じ値があれば、Windows 認証モードでも有効です。 + + 要素の値の設定の詳細については、「[サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|value|証明書の DNS です。 DNS は、IP ベースのネットワーク上でコンピューターを特定するために使用される業界標準のプロトコルです。 ユーザーは、207.46.131.137 などの数値ベースのアドレスよりも、[http:\/\/go.microsoft.com\/fwlink\/?prd\=10929](http://go.microsoft.com/fwlink/?prd=10929) や [http:\/\/go.microsoft.com\/fwlink\/?LinkID\=96165](http://go.microsoft.com/fwlink/?LinkID=96165) などの表示名の方が簡単に覚えることができます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|クライアントで認証するサービスの ID を指定します。| + +## 使用例 + 次の構成コードは、サーバーの認証に使用される X.509 証明書の DNS を指定します。 + +``` + + + +``` + +## 参照 + + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/dynamicendpoint.md b/docs/framework/configure-apps/file-schema/wcf/dynamicendpoint.md new file mode 100644 index 00000000000..5f9b3d6f130 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/dynamicendpoint.md @@ -0,0 +1,69 @@ +--- +title: "<dynamicEndpoint> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 929f223d-176d-4205-9505-234ddb6dbff4 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <dynamicEndpoint> +この構成要素は、アプリケーションが、実行時に動的にエンドポイント アドレスを検索するクライアント プログラムとして機能するための情報を格納する標準エンドポイントを定義します。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/discoveryclientsettings.md)|サービス探索プロセスにクライアントとして参加するためにアプリケーションが必要とする設定を格納します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|1 つ以上のプロパティ \(アドレス、バインディング、コントラクト\) が固定されている、あらかじめ定義されたエンドポイントである標準エンドポイントのコレクション。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/enablewebscript.md b/docs/framework/configure-apps/file-schema/wcf/enablewebscript.md new file mode 100644 index 00000000000..25e7a3202c1 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/enablewebscript.md @@ -0,0 +1,51 @@ +--- +title: "<enableWebScript> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9c7e96e1-af70-4e6e-ac5c-d67929dddbaa +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <enableWebScript> +この要素は、ASP.NET AJAX Web ページからサービスを使用できるようにするエンドポイントの動作を有効にします。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作のセットを指定します。| + +## 解説 + この動作は、必ず [\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md) 標準バインディングまたは [\](../../../../../docs/framework/configure-apps/file-schema/wcf/webmessageencoding.md) バインディング要素と組み合わせて使用する必要があります。 この動作の詳細については、「」を参照してください。 + +## 参照 + + + [AJAX の統合と JSON のサポート](../../../../../docs/framework/wcf/feature-details/ajax-integration-and-json-support.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttp.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/endpoint-element.md b/docs/framework/configure-apps/file-schema/wcf/endpoint-element.md new file mode 100644 index 00000000000..cefb9ca78e2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/endpoint-element.md @@ -0,0 +1,100 @@ +--- +title: "<endpoint> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 2fc8fedc-78d0-4e87-8142-fbfd26c15a4e +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# <endpoint> 要素 +サービスの公開に使用されるサービス エンドポイントのバインディング、コントラクト、およびアドレスのプロパティを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|address|エンドポイントのアドレスを含む文字列。 アドレスは、絶対または相対アドレスとして指定できます。 相対アドレスが提供されている場合、ホストは、そのバインディングで使用されるトランスポート スキームに適したベース アドレスが提供されることを想定します。 アドレスが構成されていない場合、ベース アドレスはそのエンドポイントのアドレスと見なされます。

既定値は空の文字列です。| +|behaviorConfiguration|エンドポイントで使用される動作の名前を含む文字列。| +|バインド|使用するバインディングの種類を指定する必須の文字列属性。 参照できるようにするには、種類は登録された構成セクションを持っている必要があります。 種類は、バインディングの種類の名前ではなくセクション名で登録されます。| +|bindingConfiguration|エンドポイントがインスタンス化されるときに使用するバインディングのバインディング名を指定する文字列。 バインディング名は、エンドポイントが定義される時点でスコープ内にある必要があります。 既定値は空の文字列です。

この属性は、構成ファイル内の特定のバインディング構成を参照するために、`binding` と組み合わせて使用されます。 カスタム バインディングを使用しようとする場合にこの属性を設定します。 そうでない場合は、例外がスローされることがあります。| +|bindingName|WSDL を介した定義エクスポートに使用するバインディングの一意の修飾名を指定する文字列。 既定値は空の文字列です。| +|bindingNamespace|WSDL を介した定義エクスポートに使用するバインディングの名前空間の修飾名を指定する文字列。 既定値は空の文字列です。| +|コントラクト|このエンドポイントが公開するコントラクトを示す文字列。 アセンブリは、コントラクト型を実装する必要があります。 サービス実装が単一のコントラクトの型を実装する場合は、このプロパティを省略できます。 既定値は空の文字列です。| +|endpointConfiguration|この標準エンドポイントの追加の構成情報を参照する `kind` 属性によって設定される標準エンドポイントの名前を指定する文字列。 同じ名前を `` セクションに定義する必要があります。| +|isSystemEndpoint|インフラストラクチャ エンドポイントであるかどうかを指定するブール値。| +|kind|適用する標準エンドポイントの種類を指定する文字列。 種類は `` セクションまたは machine.config に登録する必要があります。 何も指定されていない場合は、共通のサービス エンドポイントが作成されます。| +|listenUriMode|リッスンするサービスに提供される `ListenUri` をトランスポートが処理する方法を指定します。 有効な値は、次のとおりです。

- Explicit
- ユニーク

既定値は Explicit です。| +|listenUri|サービス エンドポイントがリッスンする URI を指定する文字列。 既定値は空の文字列です。| +|name|省略可能な属性です。 サービス エンドポイントの名前を指定する文字列。 既定値は、バインディング名とコントラクトの説明の名前を連結した値です。 サービスには複数のエンドポイントが存在する場合があるため、エンドポイントの `name` 属性はサービスの名前とは異なります。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/headers.md)|アドレス ヘッダーのコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|メッセージを交換する他のエンドポイントによるエンドポイントの認証を可能にする ID です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/service.md)|クライアントが接続可能なエンドポイントの一覧を定義する設定セクションです。| + +## 使用例 + これはサービス エンドポイントの構成の例です。 + +``` + + + EastCoast + Gold + + +``` + +## 参照 + + + + [エンドポイント : アドレス、バインディング、およびコントラクト](../../../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md) + [方法 : 構成にサービス エンドポイントを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/endpoint-of-client.md b/docs/framework/configure-apps/file-schema/wcf/endpoint-of-client.md new file mode 100644 index 00000000000..c05db2f3f94 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/endpoint-of-client.md @@ -0,0 +1,88 @@ +--- +title: "<client> の <endpoint> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: de6238ae-bbf8-48e9-a1b5-e24c0bea8afa +caps.latest.revision: 22 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 22 +--- +# <client> の <endpoint> +サーバーのサービス エンドポイントに接続するためにクライアントによって使用されるチャネル エンドポイントのコントラクト、バインディング、およびアドレスのプロパティを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|address|必須の文字列属性です。

エンドポイントのアドレスを指定します。 既定値は空の文字列です。 アドレスは、絶対 URI にする必要があります。| +|behaviorConfiguration|エンドポイントのインスタンス化に使用される動作の動作名を含む文字列。 動作名は、サービスが定義される時点でスコープ内にある必要があります。 既定値は空の文字列です。| +|バインド|必須の文字列属性です。

使用するバインディングの種類を示す文字列。 参照できるようにするには、種類は登録された構成セクションを持っている必要があります。 種類は、バインディングの種類の名前ではなくセクション名で登録されます。| +|bindingConfiguration|省略可能です。 エンドポイントがインスタンス化されるときに使用するバインディング構成の名前を含む文字列。 バインディング構成は、エンドポイントが定義される時点でスコープ内にある必要があります。 既定値は空の文字列です。

この属性は、構成ファイル内の特定のバインディング構成を参照するために、`binding` と組み合わせて使用されます。 カスタム バインディングを使用しようとする場合にこの属性を設定します。 そうでない場合は、例外がスローされることがあります。| +|コントラクト|必須の文字列属性です。

このエンドポイントが公開するコントラクトを示す文字列。 アセンブリは、コントラクト型を実装する必要があります。| +|endpointConfiguration|この標準エンドポイントの追加の構成情報を参照する `kind` 属性によって設定される標準エンドポイントの名前を指定する文字列。 同じ名前を `` セクションに定義する必要があります。| +|kind|適用する標準エンドポイントの種類を指定する文字列。 種類は `` セクションまたは machine.config に登録する必要があります。 何も指定されていない場合は、共通のチャネル エンドポイントが作成されます。| +|name|省略可能な文字列属性。 この属性は、特定のコントラクトのエンドポイントを一意に識別します。 特定のコントラクトの種類に、複数のクライアントを定義できます。 それぞれの定義は、一意の構成名で区別できるようにする必要があります。 この属性が省略されている場合、指定されたコントラクトの種類に関連する既定のエンドポイントとして、対応するエンドポイントが使用されます。 既定値は空の文字列です。

バインディングの `name` 属性は、WSDL を介した定義エクスポートに使用されます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/headers.md)|アドレス ヘッダーのコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|メッセージを交換する他のエンドポイントによるエンドポイントの認証を可能にする ID です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/client.md)|クライアントが接続可能なエンドポイントの一覧を定義する設定セクションです。| + +## 使用例 + これはチャネル エンドポイントの構成の例です。 + +``` + + +``` + +## 参照 + + + + + + [WCF クライアントの構成](../../../../../docs/framework/wcf/feature-details/client-configuration.md) + [クライアント](../../../../../docs/framework/wcf/feature-details/clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md b/docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md new file mode 100644 index 00000000000..5384592baf0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md @@ -0,0 +1,26 @@ +--- +title: "<endpointBehaviors> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fb851947-e8dd-4f8c-8323-26fae90b09c3 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <endpointBehaviors> +この構成セクションは、特定のエンドポイントに対して定義されたすべての動作を表します。 クライアント動作の構成の詳細については、「[クライアントのランタイム動作の指定](../../../../../docs/framework/wcf/specifying-client-run-time-behavior.md)」および「[クライアントの動作の構成](../../../../../docs/framework/wcf/configuring-client-behaviors.md)」を参照してください。 + +## 参照 + + + [クライアントのランタイム動作の指定](../../../../../docs/framework/wcf/specifying-client-run-time-behavior.md) + [クライアントの動作の構成](../../../../../docs/framework/wcf/configuring-client-behaviors.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/endpointdiscovery.md b/docs/framework/configure-apps/file-schema/wcf/endpointdiscovery.md new file mode 100644 index 00000000000..b03cd2aecc9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/endpointdiscovery.md @@ -0,0 +1,114 @@ +--- +title: "<endpointDiscovery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 70812717-888a-4748-9640-0df6715ff029 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <endpointDiscovery> +エンドポイントのさまざまな探索設定を指定します \(探索可能性、スコープ、メタデータに対するカスタム拡張など\)。 + +## 構文 + +``` + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|enabled|探索可能性をこのエンドポイントで有効にするかどうかを指定するブール値。 既定値は、`false` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/scopes.md)|エンドポイントのスコープ URI のコレクション。 複数の URI を 1 つのエンドポイントに関連付けることができます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/extensions.md) \[\\]|エンドポイントで発行されるカスタム メタデータを指定できる、XML 要素のコレクション。| +|\|検索するインターフェイスのコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| +||| + +## 解説 + エンドポイントの動作構成に追加し、`enabled` 属性を `true` に設定すると、この構成要素の探索可能性が有効になります。 [\](../../../../../docs/framework/configure-apps/file-schema/wcf/scopes.md)[\](../../../../../docs/framework/configure-apps/file-schema/wcf/extensions.md) 子要素を使用して、標準の探索可能なメタデータと共に発行する必要のあるカスタム メタデータを指定することも可能です \(EPR、ContractTypeName、BindingName、Scope、ListenURI\)。 + + この構成要素は、探索可能性のサービス レベルでの制御を提供する [\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicediscovery.md) 要素に依存します。 これは、構成に [\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicediscovery.md) が指定されていない場合、この要素の設定が無視されることを意味します。 + +## 使用例 + 次の構成例では、フィルターのスコープと、エンドポイントで発行される拡張メタデータを指定しています。 + +``` + + + + + + + + + + + + + + + + + + + + + + The Example Organization + One Example Way, ExampleTown, EX 12345 + support@example.org + + Custom Metadata + + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/endpointextensions.md b/docs/framework/configure-apps/file-schema/wcf/endpointextensions.md new file mode 100644 index 00000000000..5df4d352b00 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/endpointextensions.md @@ -0,0 +1,56 @@ +--- +title: "<endpointExtensions> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 33396e0a-1fae-4616-b822-923584eebfd1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <endpointExtensions> +このセクションは、コンピューターまたはアプリケーションの構成ファイルの拡張セクションに新たな標準エンドポイントを登録します。 このコレクションに標準エンドポイントを追加するには、`add` キーワードを使用し、要素の `type` 属性をエンドポイントの種類に設定して、`name` 属性を標準エンドポイントの名前に設定します。 + + 次の例は、`add` 要素と `name` 属性を使用して、構成ファイルの `` セクションに標準エンドポイントを追加します。 + +``` + + + + + + + +``` + + 標準エンドポイントを追加すると、次の例に示すように、このエンドポイントを使用できます。 [\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpoint-element.md) 要素では、`kind` 属性を使用して、`` セクションに登録されている標準エンドポイントの種類を指定します。 `endpointConfiguration` 属性は、`` セクションにある標準エンドポイントの構成要素の `name` 属性と同じになります。 + +``` + + +     +       +         +       +     +     +       +         +       +     +   + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/endtoendtracing.md b/docs/framework/configure-apps/file-schema/wcf/endtoendtracing.md new file mode 100644 index 00000000000..4c09a69dcbe --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/endtoendtracing.md @@ -0,0 +1,60 @@ +--- +title: "<endToEndTracing> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5034f5de-bb60-4157-9ad4-58aaade094e0 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <endToEndTracing> +サービス アプリケーションの実行中にエンドツーエンドのトレースのさまざまな側面を有効または無効にするための構成要素。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`activityTracing`|アクティビティのトレースが有効かどうかを示すブール値。| +|`messageFlowTracing`|メッセージ フローのトレースが有効かどうかを示すブール値。| +|`propagateActivity`|伝達属性が true に設定されているかどうかを示すブール値。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/diagnostics.md)|管理者が行うランタイムの検査と管理の WCF 設定を定義します。| + +## 参照 + + + + + [エンドツーエンドのトレース](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/entries.md b/docs/framework/configure-apps/file-schema/wcf/entries.md new file mode 100644 index 00000000000..7654d45f3e3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/entries.md @@ -0,0 +1,65 @@ +--- +title: "<entries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 202e430c-c1b9-4343-abe2-ac78c181a3b7 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <entries> +ルーティング フィルターとターゲット エンドポイントとのマッピングを格納するルーティング エントリ。フィルターが一致したときにメッセージを送信するために使用されます。 + +## 構文 + +```vb + + +      +         +          +            +          +        +      + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filters-of-routing.md)|以前に定義されたクライアント エンドポイントにフィルターをマップします。 このフィルターに一致するメッセージは、この宛先に送信されます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|ルーティング テーブルを含む構成セクション。| + +## 参照 + [System.ServiceModel.Routing.Configuration.RoutingSection](assetId:///System.ServiceModel.Routing.Configuration.RoutingSection?qualifyHint=False&autoUpgrade=True) + [System.ServiceModel.Routing.Configuration.FilterTableEntryElement](assetId:///System.ServiceModel.Routing.Configuration.FilterTableEntryElement?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/exposedmethod.md b/docs/framework/configure-apps/file-schema/wcf/exposedmethod.md new file mode 100644 index 00000000000..d29b96f1451 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/exposedmethod.md @@ -0,0 +1,77 @@ +--- +title: "<exposedMethod> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 61c938cd-4ee9-4b06-ab28-922ef491ab11 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <exposedMethod> +COM\+ コンポーネントのインターフェイスが Web サービスとして公開されるときに公開される COM\+ メソッドを表します。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|COM\+ コンポーネントのインターフェイスが Web サービスとして公開されるときに公開される COM\+ メソッドを含む文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/exposedmethods.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/exposedmethod.md) 要素のコレクション。| + +## 解説 + COM\+ 統合構成ツール \(ComSvcConfig.exe\) を使用して、COM インターフェイスから特定のメソッドを追加して、生成されるサービス コントラクトに表示できます。 + + たとえば、次のコマンドを使用して、`ItemOrders`.Financial コンポーネントの `IFinances` COM インターフェイスから、3 つの名前付きメソッドを、生成されるサービス コントラクトに追加できます。 + + `ComSvcConfig.exe /i /application:OnlineStore /contract:ItemOrders.Financial,IFinances.{TransferFunds,AddFunds,RemoveFunds} /hosting:complus` + + ComSvcConfig.exe も実行する場合、前述のメソッドを [\](../../../../../docs/framework/configure-apps/file-schema/wcf/exposedmethod.md) 要素として一覧表示する次のサービス コントラクトを生成します。 + +``` + + + + + +``` + + サービスの初期化時に、ランタイムは、サービス コントラクトを生成しますが、このとき [\](../../../../../docs/framework/configure-apps/file-schema/wcf/exposedmethod.md) 要素の一覧に含まれるメソッドのみを反映して追加しようとします。 トレースは、サービス コントラクトに含まれないインターフェイス メソッド用に作成されます。 + +## 参照 + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/comcontracts.md) + [COM\+ アプリケーションとの統合](../../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) + [方法 : COM\+ サービス設定を構成する](../../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/exposedmethods.md b/docs/framework/configure-apps/file-schema/wcf/exposedmethods.md new file mode 100644 index 00000000000..16ccc98e7be --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/exposedmethods.md @@ -0,0 +1,27 @@ +--- +title: "<exposedMethods> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7f21d7ed-b268-498a-9b08-76c38361fd1e +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <exposedMethods> +このセクションには、`exposedMethod` 要素のコレクションが含まれています。 + +## 参照 + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/comcontracts.md) + [COM\+ アプリケーションとの統合](../../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) + [方法 : COM\+ サービス設定を構成する](../../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/extensions-section.md b/docs/framework/configure-apps/file-schema/wcf/extensions-section.md new file mode 100644 index 00000000000..2a3d746bc81 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/extensions-section.md @@ -0,0 +1,61 @@ +--- +title: "<extensions> セクション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 53a59fb6-dede-47ec-9384-b3c2e8f0c1fa +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <extensions> セクション +この構成セクションには、拡張のコレクションが含まれています。この拡張のコレクションによってユーザーは、ユーザー定義のバインディング、動作、およびその他の拡張機能を作成できます。 + + \ + +## 構文 + +``` + + + + + + + + + +       +       + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behaviorextensions.md)|このセクションには、動作拡張を指定する子要素が含まれています。この動作拡張により、ユーザーはサービスまたはエンドポイントの動作をカスタマイズできます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindingelementextensions.md)|このセクションは、コンピューターまたはアプリケーションの構成ファイルからカスタム バインディング要素を使用できます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindingextensions.md)|このセクションには、バインディング拡張を指定する子要素が含まれています。このバインディング拡張によって、ユーザーはバインディングをカスタマイズできます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpointextensions.md)|このセクションには、標準エンドポイントを登録する子要素が含まれています。| + +### 親要素 + +|要素|説明| +|--------|--------| +|system.ServiceModel|すべての WCF 構成要素のルート要素です。| \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/extensions.md b/docs/framework/configure-apps/file-schema/wcf/extensions.md new file mode 100644 index 00000000000..5713f4bdeea --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/extensions.md @@ -0,0 +1,58 @@ +--- +title: "<extensions> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bcfe5c44-04ef-4a20-96a5-90bfadf39623 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <extensions> +この構成要素には、標準の探索可能なメタデータと共に発行する必要のあるカスタム メタデータ \(EPR、ContractTypeName、BindingName、Scope、ListenURI\) を含む XML 要素のコレクションが格納されます。 この構成要素を使用する場合の例を次に示します。 + +``` + + + + + + + + + + + + + + + + + + The Example Organization + One Example Way, ExampleTown, EX 12345 + support@example.org + + Custom Metadata + + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/faultpropagationqueries-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/faultpropagationqueries-of-wcf.md new file mode 100644 index 00000000000..a7ad22159da --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/faultpropagationqueries-of-wcf.md @@ -0,0 +1,63 @@ +--- +title: "WCF の <faultPropagationQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d85f66a7-e7b0-4dbb-83cc-89fa06fc9161 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <faultPropagationQueries> +1 つのアクティビティ内で発生するエラーの処理を追跡するために使用する、クエリのコレクションを表します。このイベントは、FaultHandler がエラーを処理するたびに発生します。 1 つのアクティビティ内で発生したエラーの処理は、このようなクエリを使用して追跡する必要があります。 追跡参加要素がエラー伝達レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationquery.md)|1 つのアクティビティ内で発生するエラーの処理を追跡するために使用するクエリ。このイベントは、FaultHandler がエラーを処理するたびに発生します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|`activityDefinitionId` プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.FaultPropagationQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.FaultPropagationQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.FaultPropagationQuery](assetId:///System.Activities.Tracking.FaultPropagationQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/faultpropagationquery-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/faultpropagationquery-of-wcf.md new file mode 100644 index 00000000000..d35fa9d6951 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/faultpropagationquery-of-wcf.md @@ -0,0 +1,64 @@ +--- +title: "WCF の <faultPropagationQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fabafbc8-3e45-4feb-8321-0725e9f4079c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <faultPropagationQuery> +1 つのアクティビティ内で発生するエラーの処理を追跡するために使用するクエリを表します。このイベントは、FaultHandler がエラーを処理するたびに発生します。 1 つのアクティビティ内で発生したエラーの処理は、このようなクエリを使用して追跡する必要があります。 追跡参加要素がエラー伝達レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityName|エラーを伝達したエラー ハンドラー アクティビティの名前を指定する文字列。 既定値は \* で、すべてのアクティビティについてエラー伝達レコードが返されることを示します。| +|faultHandlerActivityName|エラーの原因となったアクティビティの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationqueries.md)|1 つのアクティビティ内で発生するエラーの処理を追跡するために使用する、構成要素の一覧を表します。このイベントは、FaultHandler がエラーを処理するたびに発生します。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.FaultPropagationQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.FaultPropagationQueryElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.FaultPropagationQuery](assetId:///System.Activities.Tracking.FaultPropagationQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/filter.md b/docs/framework/configure-apps/file-schema/wcf/filter.md new file mode 100644 index 00000000000..53918b1a834 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/filter.md @@ -0,0 +1,65 @@ +--- +title: "<filter> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3266700b-904b-44e4-93a7-e06a1a445100 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <filter> +受信メッセージの評価に使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の種類と、フィルターが必要とする任意のサポート対象のデータまたはパラメーターを指定するルーティング フィルターを定義します。 + +## 構文 + +```vb + + +      +        +      + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|customType|フィルターとして使用されるカスタム型の完全修飾型名を示す文字列。`filterType` が `custom` に設定されている場合、この属性には作成するクラスの完全修飾型名が指定されます。`filterData` には、カスタム型フィルターの評価時に使用される値を含めることもできます。| +|filterData|フィルター データを示す文字列。 この属性を指定する方法の詳細については、「」を参照してください。| +|filterType|フィルターの種類を示す文字列。 この属性は 型です。 `filterData` 属性を使用する方法の詳細については、「」を参照してください。| +|name|フィルター要素の一意の名前を示す文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|受信メッセージの評価に使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の種類を指定するルーティング フィルター セットを定義する構成セクション。| + +## 参照 + [System.ServiceModel.Routing.Configuration.FilterElement](assetId:///System.ServiceModel.Routing.Configuration.FilterElement?qualifyHint=False&autoUpgrade=True) + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/filters-of-routing.md b/docs/framework/configure-apps/file-schema/wcf/filters-of-routing.md new file mode 100644 index 00000000000..dda1011c0c1 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/filters-of-routing.md @@ -0,0 +1,60 @@ +--- +title: "<routing> の <filters> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7993cf90-9afd-4c3c-9608-184d5da1105c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <routing> の <filters> +受信メッセージの評価に使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の種類を指定するルーティング フィルター セットを定義する構成セクションを表します。 + +## 構文 + +```vb + + +      +        +      + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filter.md)|受信メッセージの評価に使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の種類を定義するルーティング フィルターを格納します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|受信メッセージの評価に使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の種類を定義するルーティング フィルター セットと、フィルターが一致するときにメッセージを送信するターゲット エンドポイントを指定するルーティング テーブルを定義する構成セクションを表します。| + +## 参照 + [System.ServiceModel.Routing.Configuration.FilterElement](assetId:///System.ServiceModel.Routing.Configuration.FilterElement?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/filters.md b/docs/framework/configure-apps/file-schema/wcf/filters.md new file mode 100644 index 00000000000..b1864e213d6 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/filters.md @@ -0,0 +1,53 @@ +--- +title: "<filters> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 37a87222-ec78-4728-8105-9ca1bd961f0c +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <filters> +`filters` 要素は、ログに記録されるメッセージの種類の制御に使用される XPath フィルターのコレクションを保持します。 + + フィルターは、`logMessagesAtTransportLevel` を `true` に設定することによって指定されるトランスポート層でのみ適用されます。 サービス レベルおよび形式が正しくないメッセージ ログ記録は、フィルターの影響を受けません。 + + コレクションにフィルターを追加するには、`add` を使用します。 1 つ以上のフィルターを定義した場合は、少なくとも 1 つのフィルターと一致するメッセージだけが記録されます。 フィルターを定義しなかった場合は、すべてのメッセージが通過します。 + + フィルターは、完全な XPath 構文をサポートし、構成ファイルでの出現順に適用されます。 フィルターが構文的に正しくない場合は、構成例外が発生します。 + + SOAP ヘッダー セクションがあるメッセージだけを記録するフィルターの設定方法の例を次に示します。 + +``` + + /soap:Envelope/soap:Headers +
+ + +``` + +## 参照 + + + + + + + + + [メッセージ ログの構成](../../../../../docs/framework/wcf/diagnostics/configuring-message-logging.md) + [メッセージ ログの構成](../../../../../docs/framework/wcf/diagnostics/configuring-message-logging.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/messagelogging.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/filtertable.md b/docs/framework/configure-apps/file-schema/wcf/filtertable.md new file mode 100644 index 00000000000..12e33427b9f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/filtertable.md @@ -0,0 +1,67 @@ +--- +title: "<filterTable> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e9f05441-3ad1-49b9-a267-71724aa094b4 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <filterTable> +メッセージを評価するフィルターの一覧と、フィルターが true に評価された場合にメッセージをルーティングするクライアント エンドポイントを格納するルーティング テーブルを表します。 + +## 構文 + +```vb + + +      +         +          +            +          +        +      + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|要素|説明| +|--------|--------| +|name|この構成要素の一意の名前を示す文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filters-of-routing.md)|ルーティング フィルターとターゲット エンドポイントとのマッピング。フィルターが一致したときにメッセージを送信するために使用されます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|ルーティング テーブルを含む構成セクション。| + +## 参照 + [System.ServiceModel.Routing.Configuration.RoutingSection](assetId:///System.ServiceModel.Routing.Configuration.RoutingSection?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/filtertables.md b/docs/framework/configure-apps/file-schema/wcf/filtertables.md new file mode 100644 index 00000000000..0bf64365506 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/filtertables.md @@ -0,0 +1,65 @@ +--- +title: "<filterTables> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 41f1ac35-f559-473a-b2c3-8cc83a6a3831 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <filterTables> +ルーティング フィルターとターゲット エンドポイントとのマッピングを格納するルーティング テーブルを定義する構成セクションを表します。フィルターが一致したときにメッセージを送信するために使用されます。 + +## 構文 + +```vb + + +      +         +          +            +          +        +      + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filters-of-routing.md)|ルーティング フィルターとターゲット エンドポイントとのマッピングを格納するルーティング テーブル。フィルターが一致したときにメッセージを送信するために使用されます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|ルーティング フィルターおよびルーティング テーブルを含む構成セクション。| + +## 参照 + [System.ServiceModel.Routing.Configuration.RoutingSection](assetId:///System.ServiceModel.Routing.Configuration.RoutingSection?qualifyHint=False&autoUpgrade=True) + [System.ServiceModel.Routing.Configuration.FilterTableCollection](assetId:///System.ServiceModel.Routing.Configuration.FilterTableCollection?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/findcriteria.md b/docs/framework/configure-apps/file-schema/wcf/findcriteria.md new file mode 100644 index 00000000000..d4c2e811aff --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/findcriteria.md @@ -0,0 +1,76 @@ +--- +title: "<findCriteria> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5454cd19-6bf5-4ba8-94d1-f58d10dc1917 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <findCriteria> +探索サービスの検索にクライアント アプリケーションによって使用される基準を提供する構成要素。 基準は、\(探しているサービスを指定する\) 検索条件と \(検索をどのくらい続けるかを指定する\) 検索終了条件にグループ化できます。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|duration|ネットワーク上でサービスからの応答を待機する最長時間を指定する Timespan 値。 既定の時間は 20 秒です。| +|maxResults|ネットワークまたはインターネット上で待機する、サービスから応答の最大数を指定する整数。 `duration` 属性に指定した時間が経過する前に応答の最大数に達した場合、検索操作は終了します。| +|scopeMatchBy|Probe メッセージのスコープをエンドポイントのスコープと一致させるときに使用する、一致のアルゴリズムを指定する URI。

サポートされているスコープ一致規則は 5 つあります。 スコープ一致規則を指定しなかった場合は、`ScopeMatchByPrefix` が使用されます。 詳細については、「」を参照してください。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/contracttypenames.md)|ワークフロー サービス コントラクト型の名前を格納する構成要素のコレクション。| +|\ の \|拡張を提供する XML 要素オブジェクトのコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/scopes.md)|特定のサービスを特定する検索操作の実行中に使用される絶対 URI を格納するオブジェクトのコレクション。

特定のサービスが見つかった場合、サービス URI とスコープ URI が一致します。複雑な一致を処理するスコープ規則が使用されることもあります。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|サービス探索プロセスにクライアントとして参加するためにアプリケーションが必要とする設定を格納します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/headers-element.md b/docs/framework/configure-apps/file-schema/wcf/headers-element.md new file mode 100644 index 00000000000..436949a2700 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/headers-element.md @@ -0,0 +1,29 @@ +--- +title: "<headers> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 040f7a8c-bb57-4db6-bdb0-cfb92a1b01af +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <headers> 要素 +ローカル発行者を正しくアドレス指定するために必要なアドレス ヘッダーのコレクションが含まれます。 `add` キーワードを使用して、このコレクションにヘッダーを追加できます。 + +## 参照 + + + + + + [方法 : ローカル発行者を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md) + [エンドポイント : アドレス、バインディング、およびコントラクト](../../../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/headers.md b/docs/framework/configure-apps/file-schema/wcf/headers.md new file mode 100644 index 00000000000..60f71090fc0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/headers.md @@ -0,0 +1,59 @@ +--- +title: "<headers> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c79b897d-8ea3-40b5-a8b6-2471941f7ed3 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# <headers> +エンドポイントは、基本となる URI だけでなく、1 つ以上の SOAP ヘッダーによってアドレス指定することもできます。 これが役に立つのは、エンドポイントのクライアントに中継局を指す SOAP ヘッダーを含める必要がある、SOAP 中継局のシナリオの場合です。 この構成要素を使用して、カスタムのアドレス ヘッダーを定義できます。 エンドポイント ヘッダー コレクション内のエントリは、ユーザー定義の XML 要素です。 各要素は、正しい形式の XML である必要があります。 + +## 構文 + +``` + + + "String" + "String" + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|Region|| +|メンバー|| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpoint-of-client.md)|さまざまなタイプのエンドポイントを設定します。| + +## 解説 + オプション ヘッダーは、エンドポイントの識別または対話のために、より詳細なアドレス指定情報を提供します。 たとえば、ヘッダーを使用して、受信メッセージの処理方法や、エンドポイントからの応答メッセージの送信先を指定できるほか、複数のサービス インスタンスが使用できる場合に、特定ユーザーからの受信メッセージの処理に使用するインスタンスを指定できます。 + +## 参照 + + + + + [エンドポイント : アドレス、バインディング、およびコントラクト](../../../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/host.md b/docs/framework/configure-apps/file-schema/wcf/host.md new file mode 100644 index 00000000000..d9e1ad3a8a3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/host.md @@ -0,0 +1,60 @@ +--- +title: "<host> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: be566d55-9d50-4b2e-985d-52a5cc26cbbb +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <host> +サービス ホストの設定を指定します。 + +## 構文 + +``` + + + + + + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/baseaddresses.md)|サービス ホストによって使用されるベース アドレスを指定する `baseAddress` 要素のコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/timeouts.md)|サービス ホストを開くまたは閉じるまでに待機できる期間を指定する構成要素。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/service.md)|[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスの設定を指定します。| + +## 参照 + + + [ホスト](../../../../../docs/framework/wcf/feature-details/hosting.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/httpdigest-element.md b/docs/framework/configure-apps/file-schema/wcf/httpdigest-element.md new file mode 100644 index 00000000000..2f075065f09 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/httpdigest-element.md @@ -0,0 +1,62 @@ +--- +title: "<httpDigest> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3da4f276-dfd9-4247-8c07-01d83618727c +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# <httpDigest> 要素 +サービスに対するクライアントの認証時に使用されるダイジェスト型の資格情報を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`impersonationLevel`|クライアントがサーバーと通信する偽装設定を設定します。 クライアントが選択する偽装モードは、サーバーでは適用されません。 以下の値が有効です。

- Identification: サーバーはクライアントの ID および権限を取得できますが、クライアントを偽装することはできません。
- Impersonation: サーバーは、ローカル システム上にあるクライアントのセキュリティ コンテキストを偽装できます。
- Delegation: サーバーは、リモート システム上にあるクライアントのセキュリティ コンテキストを偽装できます。
- Anonymous: サーバーは、クライアントを偽装したり、識別したりすることができません。
- None: 偽装レベルが割り当てられていません。

既定値は Identification です。 この属性は 型です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)|サービスに対するクライアントの認証に使用される資格情報を指定します。| + +## 解説 + ダイジェストは、アルゴリズムと入力セットを使用して決定されるハッシュです。 認証する側と認証される側はアルゴリズムに同意し、入力として使用されるデータを交換します。 クライアントはハッシュを計算して、サービスに送信できます。 また、サービスもハッシュを計算して、値を比較します。 一致すると、クライアントが検証されます。 + + この機能は、Windows の Active Directory およびインターネット インフォメーション サービス \(IIS\) と共に有効にする必要があります。 [!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)] [IIS 6.0 のダイジェスト認証](http://go.microsoft.com/fwlink/?LinkId=88443)。 + +## 参照 + + + + + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/httpstransport.md b/docs/framework/configure-apps/file-schema/wcf/httpstransport.md new file mode 100644 index 00000000000..9908fa787ce --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/httpstransport.md @@ -0,0 +1,92 @@ +--- +title: "<httpsTransport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: f6ed4bc0-7e38-4348-9259-30bf61eb9435 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# <httpsTransport> +カスタム バインディングの SOAP メッセージを送信する HTTP トランスポートを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|allowCookies|クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定するブール値です。 既定値は、`false` です。

この属性はクッキーを使用する ASMX Web サービスと対話する場合に使用できます。 この方法で、サーバーから返されるクッキーを、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。| +|authenticationScheme|HTTP リスナーにより処理されているクライアント要求の認証に使用するプロトコルを指定します。 以下の値が有効です。

- Digest: ダイジェスト認証を指定します。
- Negotiate: クライアントとネゴシエートし、認証方式を決定します。 クライアントとサーバーの両方が Kerberos をサポートする場合は、この方式が使用されます。それ以外の場合は NTLM が使用されます。
- Ntlm: NTLM 認証を指定します。
- Basic: 基本認証を指定します。
- Anonymous: 匿名認証を指定します。

既定は Anonymous です。 この属性は 型です。 この属性は 1 回だけ設定できます。| +|bypassProxyOnLocal|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。

ローカル アドレスは、ローカル LAN またはイントラネット上にあるアドレスです。

[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] は、サービス アドレスが http:\/\/localhost で始まる場合は常にプロキシを無視します。

クライアントが同じマシン上のサービスと対話するときにプロキシを経由させる場合は、localhost ではなくホスト名を使用する必要があります。| +|hostnameComparisonMode|URI の解析に使用する HTTP ホスト名比較モードを指定します。 有効な値は次のとおりです。

- StrongWildcard: \("\+"\) は、指定されたスキーム、ポート、および相対 URI のコンテキストで存在するすべてのホスト名に一致します。
- Exact: ワイルドカードなし。
- WeakWildcard: \("\*"\) は、StrongWildcard ではっきりとは一致しない、指定されたスキーム、ポート、および相対 URI のコンテキストで存在するすべてのホスト名に一致します。

既定値は StrongWildcard です。 この属性は 型です。| +|manualAddressing|ユーザーによるメッセージのアドレス指定の管理を有効にするブール値です。 このプロパティは、通常、アプリケーションが複数の宛先のどれにメッセージを送信するかを決定するルーターのシナリオで使用されます。

`true` に設定されている場合、チャネルではメッセージが既にアドレス指定されていると見なされ、他の情報は追加されません。 この場合、ユーザーはすべてのメッセージを別個にアドレス指定できます。

`false` に設定されている場合、既定の Windows Communication Foundation \(WCF\) アドレス指定機構により、すべてのメッセージのアドレスが自動的に作成されます。

既定値は、`false` です。| +|maxBufferPoolSize|バッファー プールの最大サイズを指定する正の整数です。 既定値は 524288 です。

WCF の多くの部分でバッファーが使用されます。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxBufferSize|バッファーの最大サイズを指定する正の整数です。 既定値は 524288 です| +|maxReceivedMessageSize|受信できるメッセージの最大サイズを指定する正の整数。 既定値は 65536 です。| +|proxyAddress|HTTP プロキシのアドレスを指定する URI。 `useSystemWebProxy` が `true` の場合、この設定を `null` にする必要があります。 既定値は、`null` です。| +|proxyAuthenticationScheme|HTTP プロキシにより処理されているクライアント要求の認証に使用するプロトコルを指定します。 以下の値が有効です。

- None: 認証は実行されません。
- Digest: ダイジェスト認証を指定します。
- Negotiate: クライアントとネゴシエートし、認証方式を決定します。 クライアントとサーバーの両方が Kerberos をサポートする場合は、この方式が使用されます。それ以外の場合は NTLM が使用されます。
- Ntlm: NTLM 認証を指定します。
- Basic: 基本認証を指定します。
- Anonymous: 匿名認証を指定します。
- IntegratedWindowsAuthentication: Windows 認証を指定します。

既定は Anonymous です。 この属性は 型です。| +|realm|プロキシおよびサーバーで使用するレルムを指定する文字列です。 既定値は空の文字列です。

サーバーは、レルムを使用して、保護されたリソースをパーティションに分割します。 パーティションごとに、独自の認証方式と承認データベースの両方、またはそのいずれかを指定できます。 レルムは、基本認証およびダイジェスト認証だけに使用されます。 クライアントが正常に認証されると、その認証は特定のレルムのすべてのリソースに対して有効となります。 レルムの詳細については、http:\/\/www.ietf.org の RFC 2617 を参照してください。| +|requireClientCertificate|サーバーがクライアントに HTTPS ハンドシェイクの一部としてクライアント証明書の提供を要求するかどうかを指定するブール値。 既定値は、`false` です。| +|transferMode|メッセージが要求や応答をバッファーするか、ストリーミングするかを指定します。 以下の値が有効です。

- Buffered: 要求メッセージと応答メッセージをバッファーします。
- Streamed: 要求メッセージと応答メッセージをストリーミングします。
- StreamedRequest: 要求メッセージをストリーミングし、応答メッセージをバッファーします。
- StreamedResponse: 要求メッセージをバッファーし、応答メッセージをストリーミングします。

既定値はバッファーです。 この属性は 型です。| +|unsafeConnectionNtlmAuthentication|サーバー上で安全ではない接続共有を有効にするかどうかを指定するブール値です。 既定値は、`false` です。 有効な場合、NTLM 認証は、TCP 接続ごとに 1 回実行されます。| +|useDefaultWebProxy|ユーザー固有の設定ではなく、コンピューター全体のプロキシ設定を使用するかどうかを指定するブール値です。 既定値は、`true` です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + `httpsTransport` 要素は、HTTPS トランスポート プロトコルを実装するカスタム バインディングを作成する場合の開始点となります。 HTTPS は、セキュリティで保護された相互運用性のために使用される主要なトランスポートです。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] は、他の Web サービス スタックとの相互運用性を保証するために、HTTPS をサポートします。 + +## 参照 + + + + + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/httptransport.md b/docs/framework/configure-apps/file-schema/wcf/httptransport.md new file mode 100644 index 00000000000..f4cf0dae530 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/httptransport.md @@ -0,0 +1,87 @@ +--- +title: "<httpTransport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 8b30c065-b32a-4fa3-8eb4-5537a9c6b897 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <httpTransport> +カスタム バインディングの SOAP メッセージを送信する HTTP トランスポートを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|allowCookies|クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定するブール値です。 既定値は、`false` です。

この属性はクッキーを使用する ASMX Web サービスと対話する場合に使用できます。 この方法で、サーバーから返されるクッキーを、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。| +|authenticationScheme|HTTP リスナーにより処理されているクライアント要求の認証に使用するプロトコルを指定します。 以下の値が有効です。

- Digest: ダイジェスト認証を指定します。
- Negotiate: クライアントとネゴシエートし、認証方式を決定します。 クライアントとサーバーの両方が Kerberos をサポートする場合は、この方式が使用されます。それ以外の場合は NTLM が使用されます。
- Ntlm: NTLM 認証を指定します。
- Basic: 基本認証を指定します。
- Anonymous: 匿名認証を指定します。

既定は Anonymous です。 この属性は 型です。 この属性は 1 回だけ設定できます。| +|bypassProxyOnLocal|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。

ローカル アドレスは、ローカル LAN またはイントラネット上にあるアドレスです。

[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] は、サービス アドレスが http:\/\/localhost で始まる場合は常にプロキシを無視します。

クライアントが同じマシン上のサービスと対話するときにプロキシを経由させる場合は、localhost ではなくホスト名を使用する必要があります。| +|hostnameComparisonMode|URI の解析に使用する HTTP ホスト名比較モードを指定します。 有効な値は次のとおりです。

- StrongWildcard: \("\+"\) は、指定されたスキーム、ポート、および相対 URI のコンテキストで存在するすべてのホスト名に一致します。
- Exact: ワイルドカードなし。
- WeakWildcard: \("\*"\) は、StrongWildcard ではっきりとは一致しない、指定されたスキーム、ポート、および相対 URI のコンテキストで存在するすべてのホスト名に一致します。

既定値は StrongWildcard です。 この属性は 型です。| +|keepAliveEnabled|インターネット リソースへの永続的な接続を行うかどうかを示すブール値。| +|maxBufferSize|バッファーの最大サイズを指定する正の整数です。 既定値は 524288 です| +|proxyAddress|HTTP プロキシのアドレスを指定する URI。 `useSystemWebProxy` が `true` の場合、この設定を `null` にする必要があります。 既定値は、`null` です。| +|proxyAuthenticationScheme|HTTP プロキシにより処理されているクライアント要求の認証に使用するプロトコルを指定します。 以下の値が有効です。

- None: 認証は実行されません。
- Digest: ダイジェスト認証を指定します。
- Negotiate: クライアントとネゴシエートし、認証方式を決定します。 クライアントとサーバーの両方が Kerberos をサポートする場合は、この方式が使用されます。それ以外の場合は NTLM が使用されます。
- Ntlm: NTLM 認証を指定します。
- Basic: 基本認証を指定します。
- Anonymous: 匿名認証を指定します。
- IntegratedWindowsAuthentication: Windows 認証を指定します。

既定は Anonymous です。 この属性は 型です。| +|realm|プロキシおよびサーバーで使用するレルムを指定する文字列です。 既定値は空の文字列です。

サーバーは、レルムを使用して、保護されたリソースをパーティションに分割します。 パーティションごとに、独自の認証方式と承認データベースの両方、またはそのいずれかを指定できます。 レルムは、基本認証およびダイジェスト認証だけに使用されます。 クライアントが正常に認証されると、その認証は特定のレルムのすべてのリソースに対して有効となります。 レルムの詳細については、http:\/\/www.ietf.org の RFC 2617 を参照してください。| +|transferMode|メッセージが要求や応答をバッファーするか、ストリーミングするかを指定します。 以下の値が有効です。

- Buffered: 要求メッセージと応答メッセージをバッファーします。
- Streamed: 要求メッセージと応答メッセージをストリーミングします。
- StreamedRequest: 要求メッセージをストリーミングし、応答メッセージをバッファーします。
- StreamedResponse: 要求メッセージをバッファーし、応答メッセージをストリーミングします。

既定値はバッファーです。 この属性は 型です。| +|unsafeConnectionNtlmAuthentication|サーバー上で安全ではない接続共有を有効にするかどうかを指定するブール値です。 既定値は、`false` です。 有効な場合、NTLM 認証は、TCP 接続ごとに 1 回実行されます。| +|useDefaultWebProxy|ユーザー固有の設定ではなく、コンピューター全体のプロキシ設定を使用するかどうかを指定するブール値です。 既定値は、`true` です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + `httpTransport` 要素は、HTTP トランスポート プロトコルを実装するカスタム バインディングを作成する場合の開始点となります。 HTTP は、相互運用性のために使用される主要なトランスポートです。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] は、他の非 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] Web サービス スタックとの相互運用性を保証するために、このトランスポートをサポートします。 + +## 参照 + + + + + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/identity.md b/docs/framework/configure-apps/file-schema/wcf/identity.md new file mode 100644 index 00000000000..0d6234f4763 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/identity.md @@ -0,0 +1,73 @@ +--- +title: "<identity> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c1d2ae56-e231-4a07-9c3f-9f13381dc0d8 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# <identity> +ID 要素を使用すると、クライアント開発者は予想されるサービスの ID をデザイン時に指定できます。 クライアントとサービス間のハンドシェイク プロセスでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] インフラストラクチャが、予想されるサービスの ID とこの要素の値との一致を確実に行うので、認証が可能になります。 詳細については、「[サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|certificate|X.509 証明書の設定を指定します。 この要素は 型です。 この要素には、この証明書でエンコードされる値を指定する文字列の `encodedValue` 属性が含まれています。| +|certificateReference|X.509 証明書検証の設定を指定します。 この要素は 型です。| +|dns|サービスの認証に使用される X.509 証明書の DNS を指定します。 この要素には、実際の ID を含む文字列の `value` 属性が含まれています。| +|rsa|クライアントに対するサービスの認証に使用される X.509 証明書の RSA フィールドの値を指定します。 この要素には、実際の ID を含む文字列の `value` 属性が含まれています| +|servicePrincipalName|サーバー プリンシパル名 \(SPN\) ID を指定します。これは、サービスのインスタンスを一意に識別するために、クライアントにより使用されるプリンシパル名です。 この要素には、実際のプリンシパル名が文字列で含まれている `value` 属性が含まれています。 この要素は 型です。| +|userPrincipalName|ユーザー プリンシパル名 \(UPN\) ID を指定します。これは、ネットワーク上のユーザーのログオン名の種類です。 ユーザー プリンシパル名では、Active Directory で使用されるユーザー オブジェクト名の後に、@ 記号が続き、通常はその後にドメイン名システムの親ドメインが続きます。 たとえば、Fabrikam.com ドメイン ツリーの Jeff のユーザー プリンシパル名は、[jeff@fabrikam.com](mailto:jeffsmith@fabrikam.com) となります。 この要素には、実際のプリンシパル名が文字列で含まれている `value` 属性が含まれています。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/custom.md)|netPeerTcpBinding のカスタム ピア リゾルバーを指定します。| +|[\](http://msdn.microsoft.com/ja-jp/13aa23b7-2f08-4add-8dbf-a99f8127c017)|さまざまなタイプのエンドポイントを設定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuer.md)|フェデレーション サービスのセキュリティ トークン サービス \(STS\) を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuermetadata.md)|フェデレーション サービスのセキュリティ トークン サービス \(STS\) のメタデータ エンドポイントを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenparameters.md)|カスタム バインディングで発行済みトークンのパラメーターを定義します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/localissuer.md)|ローカル セキュリティ トークン サービス \(STS\) を指定します。| + +## 参照 + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [エンドポイント : アドレス、バインディング、およびコントラクト](../../../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/index.md b/docs/framework/configure-apps/file-schema/wcf/index.md new file mode 100644 index 00000000000..2479f6077ae --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/index.md @@ -0,0 +1,50 @@ +--- +title: "WCF 構成スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: c282aeb5-91f0-4522-8e2f-704c1ef3651f +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# WCF 構成スキーマ +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] 構成要素を使用して、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] のサービス アプリケーションとクライアント アプリケーションを構成できます。 [構成エディター ツール \(SvcConfigEditor.exe\)](../../../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md) を使用して、クライアントとサービスの構成ファイルを作成および変更できます。 構成ファイルは XML として書式設定されているので、テキスト エディターを使用して手動で編集する場合は、XML について理解している必要があります。 理解しないで編集すると、XML 要素タグや属性が見つからないなどの問題が発生する可能性があります。 問題の原因は、XML 要素タグと属性が大文字と小文字を区別することによります。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] 構成システムは、 名前空間に基づいています。 したがって、 名前空間によって提供される、構成ロック、暗号化、マージなどのすべての標準機能を使用して、アプリケーションとその構成のセキュリティを強化できます。 これらの概念の詳細については、次のトピックを参照してください。 + + [保護された構成を使用した構成情報の暗号化](http://go.microsoft.com/fwlink/?LinkId=95337) + + [構成設定のロック](http://go.microsoft.com/fwlink/?LinkId=95338) + + このセクションでは、各構成項目のすべての可能な値についてと各構成項目が他の WCF 構成要素とやり取りする方法について説明します。 次のマップは、WCF 構成スキーマを示します。 + + ![WCF 構成スキーマ](../../../../../docs/framework/configure-apps/file-schema/wcf/media/orcasconfigschema.gif "OrcasConfigSchema") + +> [!CAUTION] +> 潜在的なセキュリティ上の脅威を避けるために、アプリケーション構成ファイル \(app.config\) の [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] 構成セクションは、適切なアクセス制御リスト \(ACL\) を使用して保護する必要があります。 たとえば、適切なユーザーだけが、アプリケーション バインドのセキュリティ設定、またはサービスの構成ファイルのサービス モデル セクションにアクセスまたは変更できるようにする必要があります。 + +## このセクションの内容 + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) + `ServiceModel` 要素について説明します。 + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel-activation.md) + SMSvcHost.exe ツールを構成します。 + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-runtime-serialization.md) + などのシリアライザーの使用時にオプションを設定するための最上位の要素。 + +## 関連項目 + [Configuring Windows Communication Foundation Applications](http://msdn.microsoft.com/ja-jp/13cb368e-88d4-4c61-8eed-2af0361c6d7a) + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] のサービスとクライアントを構成する方法について説明します。 \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/issuedtoken.md b/docs/framework/configure-apps/file-schema/wcf/issuedtoken.md new file mode 100644 index 00000000000..643508294b9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/issuedtoken.md @@ -0,0 +1,81 @@ +--- +title: "<issuedToken> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b6eae4b7-a6cd-4e1a-b0f6-f407022550b0 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <issuedToken> +サービスに対するクライアントの認証に使用されるカスタム トークンを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`cacheIssuedTokens`|トークンがキャッシュされるかどうかを指定する省略可能なブール属性。 既定値は、`true` です。| +|`defaultKeyEntropyMode`|ハンドシェイク操作に使用されるランダム値 \(エントロピ\) を指定する省略可能な文字列属性。 値には、`ClientEntropy`、`ServerEntropy`、および `CombinedEntropy` があります。既定値は `CombinedEntropy` です。 この属性は 型です。| +|`issuedTokenRenewalThresholdPercentage`|トークンが更新されるまでに待機できる有効な期間 \(トークン発行者によって提供される\) のパーセンテージを指定する省略可能な整数属性。 値は 0 ~ 100 の範囲です。 既定値は 60 で、更新の実行までに待機できる期間の 60% を示します。| +|`issuerChannelBehaviors`|発行者との通信時に使用するチャネル動作を指定する省略可能な属性。| +|`localIssuerChannelBehaviors`|ローカル発行者との通信時に使用するチャネル動作を指定する省略可能な属性。| +|`maxIssuedTokenCachingTime`|トークン発行者 \(STS\) が期間を指定しない場合に、発行済みトークンがキャッシュされる期間を指定する省略可能な Timespan 属性。 既定値は “10675199.02:48:05.4775807” です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/localissuer.md)|トークンのローカル発行者のアドレスと、エンドポイントとの通信に使用されるバインディングを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuerchannelbehaviors-element.md)|ローカル発行者に接続するときに使用するエンドポイント動作を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)|サービスに対するクライアントの認証に使用される資格情報を指定します。| + +## 解説 + 発行済みトークンは、フェデレーション シナリオでセキュリティ トークン サービス \(STS\) を使用して認証するときに使用されるカスタム資格情報の種類です。 既定ではトークンは、SAML トークンです。 詳細については、「[フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md)」を参照してください。 および [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) を参照してください。 + + このセクションには、トークンのローカル発行者やセキュリティ トークン サービスで使用する動作の構成に使用する要素が含まれます。 ローカル発行者を使用するようにクライアントを構成する手順については、「[方法 : ローカル発行者を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md)」を参照してください。 + +## 参照 + + + + + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [方法 : フェデレーション クライアントを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [方法 : ローカル発行者を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md b/docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md new file mode 100644 index 00000000000..5bd971cc94f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md @@ -0,0 +1,102 @@ +--- +title: "<serviceCredentials> の <issuedTokenAuthentication> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5c2e288f-f603-4d13-839a-0fd6d1981bec +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <serviceCredentials> の <issuedTokenAuthentication> +サービス資格情報として発行されるカスタム トークンを指定します。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`allowedAudienceUris`| インスタンスにより有効と見なされるように、 セキュリティ トークンのターゲットとなる URI のセットを取得します。 この属性の使い方の詳細については、「」を参照してください。| +|`allowUntrustedRsaIssuers`|信頼できない RSA 証明書の発行者を許可するかどうかを指定するブール値。

証明書は、信頼性を検証する証明機関 \(CA\) によって署名されます。 信頼できない発行者とは、証明書の署名が信頼できると指定されていない CA です。| +|`audienceUriMode`| セキュリティ トークンの を検証するかどうかを指定する値を取得します。 この値は、 型です。 この属性の使い方の詳細については、「」を参照してください。| +|`certificateValidationMode`|証明書検証モードを設定します。 の有効な値のいずれかです。 `Custom` に設定されている場合、`customCertificateValidator` も指定する必要があります。 既定値は、`ChainTrust` です。| +|`customCertificateValidatorType`|省略可能な文字列。 カスタム型の検証に使用される型およびアセンブリです。 `certificateValidationMode` が `Custom` に設定されている場合は、この属性を設定する必要があります。| +|`revocationMode`|失効状態の検証を行うかどうかに加え、検証をオンラインで実行するか、オフラインで実行するかを指定する失効モードを設定します。 この属性は 型です。| +|`samlSerializer`|サービス資格情報に使用される SamlSerializer の型を指定する省略可能な文字列属性。 既定値は空の文字列です。| +|`trustedStoreLocation`|省略可能な列挙体です。 2 つのシステム格納場所 \(`LocalMachine` または `CurrentUser`\) のいずれかです。| + +### 子要素 + +|要素|説明| +|--------|--------| +|`knownCertificates`|サービス資格情報の信頼できる発行者を指定する 要素のコレクションを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)|サービスの認証に使用される資格情報と、クライアントの資格情報検証関連の設定を指定します。| + +## 解説 + 発行されるトークンのシナリオには、3 つの段階があります。 まず、サービスにアクセスしようとしているクライアントが*セキュリティ トークン サービス*に参照されます。 次に、セキュリティ トークン サービスがクライアントを認証し、その後、クライアントにトークン \(通常は、SAML \(Security Assertions Markup Language\) トークン\) を発行します。 最後に、クライアントがトークンを持ってサービスに戻ります。 サービスはトークンを調べ、トークンを認証することでクライアントの認証を可能にするデータを確認します。 トークンを認証するには、セキュリティ トークン サービスで使用される証明書がサービスによって認識されている必要があります。 + + この要素は、このようなセキュリティ トークン サービス証明書のリポジトリです。 証明書を追加するには、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/knowncertificates.md) を使用します。 次の例に示すように、証明書ごとに [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md) を挿入します。 + +``` + + + + + +``` + + 既定では、証明書はセキュリティ トークン サービスから取得する必要があります。 このような "既知" の証明書により、正当なクライアントのみがサービスにアクセスできるようになります。 + + この構成要素の使用の詳細については、「[方法 : フェデレーション サービスで資格情報を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md)」を参照してください。 + +## 参照 + + + + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [方法 : フェデレーション サービスで資格情報を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/issuedtokenparameters.md b/docs/framework/configure-apps/file-schema/wcf/issuedtokenparameters.md new file mode 100644 index 00000000000..5e14292c8e6 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/issuedtokenparameters.md @@ -0,0 +1,89 @@ +--- +title: "<issuedTokenParameters> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 120b3f37-7331-4816-b712-d6aab39655a4 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <issuedTokenParameters> +フェデレーション セキュリティのシナリオで発行されるセキュリティ トークンのパラメーターを指定します。 + +## 構文 + +``` + + + + + + + + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|defaultMessageSecurityVersion|バインドでサポートする必要があるセキュリティ仕様 \(WS\-Security、WS\-Trust、WS\-Secure Conversation、および WS\-Security Policy\) のバージョンを指定します。 この値は、 型です。| +|inclusionMode|トークン包含要件を指定します。 この属性は 型です。| +|keySize|トークン キー サイズを指定する整数。 既定値は 256 です。| +|keyType|キーの型を指定する の有効な値。 既定値は、`SymmetricKey` です。| +|tokenType|トークンの種類を指定する文字列。 既定値は、"http:\/\/docs.oasis\-open.org\/wss\/oasis\-wss\-saml\-token\-profile\-1.1\#SAML" です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/additionalrequestparameters-element.md)|追加の要求パラメーターを指定する構成要素のコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-element.md)|必須のクレームの種類のコレクションを指定します。

フェデレーション シナリオでは、サービスが受信資格情報についての要件を記述します。 たとえば、受信資格情報は、特定のクレーム タイプのセットを処理する必要があります。 このコレクションの要素はそれぞれ、フェデレーション資格情報に表示されると予想される必須の要求および省略可能な要求の種類を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuer-of-issuedtokenparameters.md)|現在のトークンを発行するエンドポイントを指定する構成要素。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuermetadata-of-issuedtokenparameters.md)|トークン発行者のメタデータのエンドポイント アドレスを指定する構成要素。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md)|セキュリティで保護されたメッセージ交換サービスの開始に使用される既定値を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)|カスタム バインディングのセキュリティ オプションを指定します。| + +## 参照 + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md) + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/issuer-of-issuedtokenparameters.md b/docs/framework/configure-apps/file-schema/wcf/issuer-of-issuedtokenparameters.md new file mode 100644 index 00000000000..83733cdfc2d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/issuer-of-issuedtokenparameters.md @@ -0,0 +1,64 @@ +--- +title: "<issuedTokenParameters> の <issuer> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d6a95f32-d58c-40fc-8658-dd92564d3c90 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <issuedTokenParameters> の <issuer> +セキュリティ トークンを発行するセキュリティ トークン サービス \(STS\) を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|address|必須の文字列。 STS の URL です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/headers-element.md)|ビルダーが作成できるエンドポイントのアドレス ヘッダーのコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|発行されたトークンを使用する場合、クライアントでサーバーの認証を有効にする設定を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenparameters.md)|現在発行されているトークンを指定します。| + +## 参照 + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/issuer.md b/docs/framework/configure-apps/file-schema/wcf/issuer.md new file mode 100644 index 00000000000..574d928046d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/issuer.md @@ -0,0 +1,77 @@ +--- +title: "<issuer> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8c49c6ae-fa1a-4179-a84b-613c3216dcde +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <issuer> +セキュリティ トークンを発行するセキュリティ トークン サービス \(STS\) を指定します。 + +## 構文 + +``` + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|address|必須の文字列。 STS の URL です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/headers-element.md)|ビルダーが作成できるエンドポイントのアドレス ヘッダーのコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|発行されたトークンを使用する場合、クライアントでサーバーの認証を有効にする設定を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-element-of-wsfederationhttpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md) 要素のメッセージ レベル セキュリティの設定を定義します。| + +## 参照 + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/issuerchannelbehaviors-element.md b/docs/framework/configure-apps/file-schema/wcf/issuerchannelbehaviors-element.md new file mode 100644 index 00000000000..3cf7dbe4e8f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/issuerchannelbehaviors-element.md @@ -0,0 +1,65 @@ +--- +title: "<issuerChannelBehaviors> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f7378673-8e9b-45b2-98d1-cf5dccdd8c40 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <issuerChannelBehaviors> 要素 +指定されたセキュリティ トークン サービスと通信するときに使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] クライアント エンドポイントの動作 \(構成で定義されている\) のコレクションが含まれています。 定義された動作には、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md) 要素を含めることができません。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-issuerchannelbehaviors.md)|コレクションに動作を追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtoken.md)|サービスに対するクライアントの認証に使用されるカスタム トークンを指定します。| + +## 解説 + この要素を使用するのは、なんらかの動作 \(`` 要素を含む動作以外\) を使用してサービスと通信する必要がある場合です。 たとえば、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md) 動作の要素を含める必要がある場合などです。 + +## 参照 + + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [方法 : フェデレーション クライアントを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [方法 : ローカル発行者を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/issuermetadata-of-issuedtokenparameters.md b/docs/framework/configure-apps/file-schema/wcf/issuermetadata-of-issuedtokenparameters.md new file mode 100644 index 00000000000..3b556ef1ab5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/issuermetadata-of-issuedtokenparameters.md @@ -0,0 +1,62 @@ +--- +title: "<issuedTokenParameters> の <issuerMetadata> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1a85ca37-496d-4fa3-8d44-d6c9383d735c +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <issuedTokenParameters> の <issuerMetadata> +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|address|必ず指定します。 エンドポイントのアドレスを指定する文字列。 アドレスは、絶対 URI にする必要があります。 既定値は空の文字列です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/headers-element.md)|アドレス ヘッダーのコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|メッセージを交換する他のエンドポイントによるエンドポイントの認証を可能にする ID です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenparameters.md)|フェデレーション セキュリティのシナリオで発行されるセキュリティ トークンのパラメーターを指定します。| + +## 参照 + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/issuermetadata.md b/docs/framework/configure-apps/file-schema/wcf/issuermetadata.md new file mode 100644 index 00000000000..93b20c45b96 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/issuermetadata.md @@ -0,0 +1,72 @@ +--- +title: "<issuerMetadata> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e7eae2c0-cc17-4281-af59-e4eb8d54f92a +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# <issuerMetadata> +## 構文 + +``` + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|address|必須の `string` 属性です。

エンドポイントのアドレスを指定します。 アドレスは、絶対 URI にする必要があります。 既定値は空の文字列です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/headers-element.md)|アドレス ヘッダーのコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|メッセージを交換する他のエンドポイントによるエンドポイントの認証を可能にする ID です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-element-of-wsfederationhttpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md) 要素のメッセージ レベル セキュリティの設定を定義します。| + +## 参照 + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/knowncertificates.md b/docs/framework/configure-apps/file-schema/wcf/knowncertificates.md new file mode 100644 index 00000000000..33e5a74a3a7 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/knowncertificates.md @@ -0,0 +1,88 @@ +--- +title: "<knownCertificates> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 678e21b4-6493-47c3-8359-fcf0d37e2138 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# <knownCertificates> +セキュリティ トークン サービス \(STS\) から発行されるセキュリティ資格情報を認証するために提供される X.509 証明書のコレクションを表します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md)|コレクションに X.509 証明書を追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md)|サービス資格情報として発行されるトークンを指定します。| + +## 解説 + 発行されるトークンのシナリオには、3 つの段階があります。 まず、サービスにアクセスしようとしているクライアントが*セキュリティ トークン サービス*に参照されます。 次に、セキュリティ トークン サービスがクライアントを認証し、その後、クライアントにトークン \(通常は、SAML \(Security Assertions Markup Language\) トークン\) を発行します。 最後に、クライアントがトークンを持ってサービスに戻ります。 サービスはトークンを調べ、トークンを認証することでクライアントの認証を可能にするデータを確認します。 トークンを認証するには、セキュリティ トークン サービスで使用される証明書がサービスによって認識されている必要があります。 + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md) 要素は、このようなセキュリティ トークン サービス証明書のリポジトリです。 証明書を追加するには、[\ element](../../../../../docs/framework/configure-apps/file-schema/wcf/knowncertificates.md) を使用します。 次の例に示すように、証明書ごとに [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md) を挿入します。 + +``` + + + + + +``` + + 既定では、証明書はセキュリティ トークン サービスから取得する必要があります。 このような "既知" の証明書により、正当なクライアントのみがサービスにアクセスできるようになります。 + + クライアントがフェデレーション サービスによって認証される条件と、この構成要素の使い方の詳細については、「[方法 : フェデレーション サービスで資格情報を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md)」を参照してください。 フェデレーション シナリオの詳細については、「[フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md)」を参照してください。 + + 構成のコレクションを設定する方法の例については、「[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md)」を参照してください。 + +## 参照 + + + + + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md) + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [方法 : フェデレーション サービスで資格情報を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/knowntype.md b/docs/framework/configure-apps/file-schema/wcf/knowntype.md new file mode 100644 index 00000000000..09cc8d139a5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/knowntype.md @@ -0,0 +1,78 @@ +--- +title: "<knownType> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ee2b7be3-7148-4a3a-b861-48e7330615e5 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <knownType> +逆シリアル化中に によって使用される型を指定します。 この要素には、"宣言型" のフィールドまたはプロパティによって返される "既知の型" を指定します。詳細については、「[既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください。 + +## 構文 + +``` + + + + +``` + +## 型 + `string` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|型|型 \(名前空間を含む\)、アセンブリ名、バージョン、カルチャ、および公開キー トークンを指定します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/parameter.md)|宣言型がジェネリック型である場合に、パラメーター インデックスを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-declaredtypes-element.md)|宣言されたタイプのコレクションに、宣言されたタイプを追加します。| + +## 解説 + 既知の型の詳細については、「[既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」および「」を参照してください。 + + この要素の使用例については、「[\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md)」を参照してください。 + +## 使用例 + +``` + + + +``` + +## 参照 + + [既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-declaredtypes-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/localclientsettings-element.md b/docs/framework/configure-apps/file-schema/wcf/localclientsettings-element.md new file mode 100644 index 00000000000..34e106b6f3d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/localclientsettings-element.md @@ -0,0 +1,84 @@ +--- +title: "<localClientSettings> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4680ace5-f4e1-4fcb-b9d8-a4a4af5cd7ae +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# <localClientSettings> 要素 +このバインディングのローカル クライアントのセキュリティ設定を指定します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`cacheCookies`|クッキーのキャッシュが有効かどうかを示すブール値。 既定値は、`false` です。| +|`cookieRenewalThresholdPercentage`|更新できるクッキーの最大パーセンテージを指定する整数。 この値は、0 ~ 100 \(0 と 100を含む\) のいずれかです。 既定値は 90 です。| +|`detectReplays`|チャネルに対するリプレイ攻撃を検出し、自動的に処理するかどうかを指定するブール値です。 既定値は、`false` です。| +|`maxClockSkew`|通信している双方の 2 つのシステム クロックのずれの最長時間を指定する 。 既定値は、"00:05:00" です。

この値が既定値に設定されている場合、受信側はメッセージが受信された時間より前後最大 5 分間の送信時間タイム スタンプを持つメッセージを受け入れます。 送信時間テストにパスしないメッセージは拒否されます。 この設定は、`replayWindow` 属性と組み合わせて使用します。| +|`maxCookieCachingTime`|クッキーの最長有効期間を指定する 。 デフォルト値は "10675199.02:48:05.4775807" です。| +|`reconnectTransportOnFailure`|WS\-ReliableMessaging を使用した接続が、トランスポート エラーの後再接続を試みるかどうかを指定するブール値です。 既定値は `true` です。これは、再接続の試行が無限に行われることを意味します。 循環は非アクティブ タイムアウトにより破棄され、再接続できない場合はチャネルが例外をスローします。| +|`replayCacheSize`|リプレイ検証で使用される、キャッシュ済みの nonce 数を指定する正の整数。 この制限を越えると、最も古い nonce が削除され、新しいメッセージ用に新しい nonce が作成されます。 既定値は 500000 です。| +|`replayWindow`|個別のメッセージ nonce の有効期間を指定する

この期間が過ぎると、以前に送信されたメッセージと同じ nonce を持つメッセージは受け入れられません。 この属性は、リプレイ攻撃を防ぐために `maxClockSkew` 属性と組み合わせて使用します。 攻撃者は、メッセージのリプレイ ウィンドウの期限が切れた後にメッセージをリプレイする可能性があります。 ただし、このメッセージは `maxClockSkew` テストに失敗します。このテストは、メッセージが受信された時間の前後指定時間以内の送信時間タイムスタンプを持つメッセージを拒否します。| +|`sessionKeyRenewalInterval`|イニシエーターがセキュリティ セッションのキーを更新するまでの期間を指定する 。 既定値は "10:00:00" です。| +|`sessionKeyRolloverInterval`|キーの更新中に、前のセッション キーが受信メッセージで有効な時間間隔を指定する です。 既定値は "00:05:00" です。

キーの更新中、クライアントおよびサーバーは、常に、利用可能な最新のキーを使用してメッセージを送信する必要があります。 どちらのパーティも、ロールオーバー時間に達するまで、前のセッション キーで保護された受信メッセージを受け入れます。| +|`timestampValidityDuration`|タイムスタンプの有効期間を指定する正の 。 既定値は "00:15:00" です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)|カスタム バインディングのセキュリティ オプションを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md)|セキュリティで保護されたメッセージ交換サービスの開始に使用される既定値を指定します。| + +## 解説 + この設定は、サービスのセキュリティ ポリシーから派生する設定ではないという点でローカルです。 + +## 参照 + + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/localissuer.md b/docs/framework/configure-apps/file-schema/wcf/localissuer.md new file mode 100644 index 00000000000..7f6c71e59d2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/localissuer.md @@ -0,0 +1,92 @@ +--- +title: "<localIssuer> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 26bdd0df-0e7d-4b9e-bbeb-f28c53769385 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <localIssuer> +セキュリティ トークンの取得に使用される、ローカル発行者のアドレスとバインディングを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|address|必須の文字列。 ローカル発行者の URI を指定します。| +|バインド|省略可能な文字列。 システム指定のバインディングの 1 つ。 一覧については、「[システム標準のバインディング](../../../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。| +|bindingConfiguration|省略可能な文字列。 構成ファイル内に存在するバインディング構成を指定します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|ローカル発行者の ID 情報を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/headers-element.md)|ローカル発行者を正しくアドレス指定するために必要なアドレス ヘッダーのコレクション。 `add` キーワードを使用して、このコレクションにヘッダーを追加できます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtoken.md)|サービスに対するクライアントの認証に使用されるカスタム トークンを指定します。| + +## 解説 + 発行されたトークンをセキュリティ トークン サービス \(STS\) から取得する場合は、クライアント アプリケーションに、STS との通信に使用するアドレスとバインディングが構成されている必要があります。 にセキュリティ トークン サービスの URL が設定されていない場合、またはフェデレーション バインディングの発行者アドレスが http:\/\/schemas.microsoft.com\/2005\/12\/ServiceModel\/Addressing\/Anonymous か `null` である場合、クライアントの [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] チャネルは、`address` と `binding` で指定された値を使用して STS と通信し、発行されたトークンを取得します。 ローカル発行者の構成の詳細については、「[方法 : ローカル発行者を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md)」を参照してください。 + +## 使用例 + 次の例は、`localIssuer` 要素の `address`、`binding`、および `bindingConfiguration` 属性を設定します。 + +``` + + + + + + + + + + + + + +``` + +## 参照 + + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [方法 : ローカル発行者を設定する](../../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md) + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [方法 : フェデレーション クライアントを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/localservicesettings-element.md b/docs/framework/configure-apps/file-schema/wcf/localservicesettings-element.md new file mode 100644 index 00000000000..058c6ecac37 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/localservicesettings-element.md @@ -0,0 +1,102 @@ +--- +title: "<localServiceSettings> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0658549c-3f65-46dd-8c5c-9895441ed734 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <localServiceSettings> 要素 +このバインディングのローカル サービスのセキュリティ設定を指定します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`detectReplays`|チャネルに対するリプレイ攻撃を検出し、自動的に処理するかどうかを指定するブール値です。 既定値は、`false` です。| +|`inactivityTimeout`|チャネルがタイムアウトまで待機する非アクティブな期間を指定する、正の 。 既定値は "01:00:00" です。| +|`issuedCookieLifeTime`|すべての新しいセキュリティ クッキーに発行される有効期間を指定する 。 有効期間を超えるクッキーは、再利用され、再度ネゴシエートされる必要があります。 既定値は、"10:00:00" です。| +|`maxCachedCookies`|キャッシュできるクッキーの最大数を指定する正の整数。 既定値は 1000 です。| +|`maxClockSkew`|通信している双方の 2 つのシステム クロックのずれの最長時間を指定する 。 既定値は、"00:05:00" です。

この値が既定値に設定されている場合、受信側はメッセージが受信された時間より前後最大 5 分間の送信時間タイム スタンプを持つメッセージを受け入れます。 送信時間テストにパスしないメッセージは拒否されます。 この設定は、`replayWindow` 属性と組み合わせて使用します。| +|`maxPendingSessions`|サービスがサポートする保留状態のセキュリティ セッションの最大数を指定する正の整数。 この制限に達すると、すべての新しいクライアントが SOAP エラーを受け取ります。 既定値は 1000 です。| +|`maxStatefulNegotiations`|同時にアクティブにできるセキュリティ ネゴシエーションの数を指定する正の整数。 制限を超えるネゴシエーション セッションはキューに置かれ、制限内に空きができた場合にのみ完了できます。 既定値は 1024 です。| +|`negotiationTimeout`|チャネルによって使用されるセキュリティ ポリシーの有効期間を指定する 。 有効期間が切れると、チャネルは新しいセキュリティ ポリシーについてクライアントと再度ネゴシエートします。 既定値は、"00:02:00" です。| +|`reconnectTransportOnFailure`|WS\-ReliableMessaging を使用した接続が、トランスポート エラーの後再接続を試みるかどうかを指定するブール値です。 既定値は `true` です。これは、再接続の試行が無限に行われることを意味します。 循環は非アクティブ タイムアウトにより破棄され、再接続できない場合はチャネルが例外をスローします。| +|`replayCacheSize`|リプレイ検証で使用される、キャッシュ済みの nonce 数を指定する正の整数。 この制限を越えると、最も古い nonce が削除され、新しいメッセージ用に新しい nonce が作成されます。 既定値は 500000 です。| +|`replayWindow`|個別のメッセージ nonce の有効期間を指定する

この期間が過ぎると、以前に送信されたメッセージと同じ nonce を持つメッセージは受け入れられません。 この属性は、リプレイ攻撃を防ぐために `maxClockSkew` 属性と組み合わせて使用します。 攻撃者は、メッセージのリプレイ ウィンドウの期限が切れた後にメッセージをリプレイする可能性があります。 ただし、このメッセージは `maxClockSkew` テストに失敗します。このテストは、メッセージが受信された時間の前後指定時間以内の送信時間タイムスタンプを持つメッセージを拒否します。| +|`sessionKeyRenewalInterval`|イニシエーターがセキュリティ セッションのキーを更新するまでの期間を指定する 。 既定値は "10:00:00" です。| +|`sessionKeyRolloverInterval`|キーの更新中に、前のセッション キーが受信メッセージで有効な時間間隔を指定する です。 既定値は "00:05:00" です。

キーの更新中、クライアントおよびサーバーは、常に、利用可能な最新のキーを使用してメッセージを送信する必要があります。 どちらのパーティも、ロールオーバー時間に達するまで、前のセッション キーで保護された受信メッセージを受け入れます。| +|`timestampValidityDuration`|タイムスタンプの有効期間を指定する正の 。 既定値は "00:15:00" です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)|カスタム バインディングのセキュリティ オプションを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md)|セキュリティで保護されたメッセージ交換サービスの開始に使用される既定値を指定します。| + +## 解説 + この設定は、サービスのセキュリティ ポリシーの一部として公開されず、クライアントのバインディングには影響を与えないため、ローカルです。 + + `localServiceSecuritySettings` 要素の以下の属性は、サービス拒否 \(DOS\) セキュリティ攻撃を軽減するために役立ちます。 + +- `maxCachedCookies`: SPNEGO または SSL の各ネゴシエーションの実行後にサーバーによってキャッシュされる、期限付きの SecurityContextTokens の最大数を制御します。 + +- `issuedCookieLifetime`: SPNEGO または SSL の各ネゴシエーションに続いてサーバーが発行する SecurityContextTokens の有効期限を制御します。 サーバーは、この期間だけ SecurityContextTokens をキャッシュします。 + +- `maxPendingSessions`: サーバーで確立されているが、そのアプリケーション メッセージが処理されていない、セキュリティで保護されたメッセージ交換の最大数を制御します。 このクォータは、クライアントが、セキュリティで保護されたメッセージ交換をサービスで確立しないようにします。それによって、サービスはクライアントごとの状態を保持できますが、それらの状態を使用することはありません。 + +- `inactivityTimeout`: サービスが、セキュリティで保護されたメッセージ交換を、それに対するアプリケーション メッセージを受信しなくても維持する最長時間を制御します。 このクォータは、クライアントが、セキュリティで保護されたメッセージ交換をサービスで確立しないようにします。それによって、サービスはクライアントごとの状態を保持できますが、それらの状態を使用することはありません。 + + セキュリティで保護されたメッセージ交換セッションでは、バインディングの `inactivityTimeout` 属性および `receiveTimeout` 属性の両方が、セッション タイムアウトに影響します。 2 つのうち短い方が、タイムアウトが発生する時間を決定します。 + +## 参照 + + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/media/orcasconfigschema.gif b/docs/framework/configure-apps/file-schema/wcf/media/orcasconfigschema.gif new file mode 100644 index 00000000000..beba37ea24d Binary files /dev/null and b/docs/framework/configure-apps/file-schema/wcf/media/orcasconfigschema.gif differ diff --git a/docs/framework/configure-apps/file-schema/wcf/message-element-of-nettcpbinding.md b/docs/framework/configure-apps/file-schema/wcf/message-element-of-nettcpbinding.md new file mode 100644 index 00000000000..2c8cc2eafcb --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/message-element-of-nettcpbinding.md @@ -0,0 +1,93 @@ +--- +title: "<netTcpBinding> の <message> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1d71edd9-c085-4c2e-b6d3-980c313366f9 +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# <netTcpBinding> の <message> 要素 +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md)を使用して構成されたエンドポイントの、メッセージ レベルのセキュリティ要件の種類を定義します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`algorithmSuite`|メッセージの暗号化とキー ラップ アルゴリズムを設定します。 アルゴリズムとキー サイズは、 クラスにより決まります。 これらのアルゴリズムは、Security Policy Language \(WS\-SecurityPolicy\) の仕様で指定されているアルゴリズムに対応付けられています。

指定できる値を次の表に示します。 既定値は `Basic256` です。

サービス バインディングで指定されている `algorithmSuite` 値が既定値と異なると、Svcutil.exe を使用して構成ファイルを生成したときにファイルが正しく生成されません。この場合は、構成ファイルを手動で編集して、この属性を適切な値に設定する必要があります。| +|`clientCredentialType`|メッセージ ベースのセキュリティを使用してクライアント認証を実行するときに使用される資格情報の種類を指定します。 指定できる値を次の表に示します。 既定値は `UserName` です。 この属性は 型です。| + +## algorithmSuite 属性 + +|値|説明| +|-------|--------| +|Basic128|Aes128 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192|Aes192 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256|Aes256 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Rsa15|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic192Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDes|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Rsa15|メッセージの暗号化には Aes128 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDesRsa15|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic128Sha256|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192Sha256|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Sha256|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|TripleDesSha256|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Sha256Rsa15|メッセージの暗号化には Aes128 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic192Sha256Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic256Sha256Rsa15|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|TripleDesSha256Rsa15|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|なし|サービスが匿名クライアントと対話できるようになります。 サービス側では、サービスがクライアントの資格情報を必要としないことを示しています。 クライアント側では、クライアントがクライアントの資格情報を提示しないことを示しています。| +|Windows|SOAP 交換を、Windows 資格情報の認証されたコンテキストで行うことが可能になります。| +|UserName|サービスが、UserName 資格情報を使用したクライアントの認証を要求できるようにします。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、パスワード ダイジェストの送信、またはパスワードを使用したキーの派生、およびメッセージ セキュリティでのそのようなキーの使用をサポートしません。 そのため、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では UserName 資格情報を使用する場合は、トランスポートが強制的にセキュリティで保護されます。 この資格情報モードは、`negotiateServiceCredential` 属性に基づいて、同時実行可能な交換か、同時実行できないネゴシエーションのいずれかになります。| +|証明書|証明書を使用したクライアントの認証を、サービスで要求することが可能になります。 メッセージ セキュリティ モードが使用され、`negotiateServiceCredential` 属性が `false` に設定されている場合、クライアントにサービス証明書を準備する必要があります。| +|IssuedToken|通常はセキュリティ トークン サービス \(STS\) により発行されるカスタム トークンを指定します。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-nettcpbinding.md)|のセキュリティ機能を定義します。| + +## 解説 + メッセージは、SOAP メッセージの整合性と機密性を確保し、通信ピアの相互認証を行うために、メッセージ レベルのセキュリティを使用します。 バインディング上でこのセキュリティ モードが選択された場合、チャネル スタックは、メッセージ セキュリティ バインディング要素を使用して構成され、SOAP メッセージは WS\-Security\* 標準に従って保護されます。 + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/message-element-of-ws2007federationhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/message-element-of-ws2007federationhttpbinding.md new file mode 100644 index 00000000000..19a5ae2bc17 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/message-element-of-ws2007federationhttpbinding.md @@ -0,0 +1,141 @@ +--- +title: "<ws2007FederationHttpBinding> の <message> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 52cd941d-e230-4c82-8b29-333a7d20eca8 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# <ws2007FederationHttpBinding> の <message> 要素 +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/ws2007federationhttpbinding.md) 要素のメッセージ レベル セキュリティの設定を定義します。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`algorithmSuite`|省略可能です。 メッセージの暗号化、署名、およびキー ラップ アルゴリズムを設定します。 アルゴリズムとキー サイズは、 クラスにより決まります。 これらのアルゴリズムは、Security Policy Language \(WS\-SecurityPolicy\) の仕様で指定されているアルゴリズムに対応付けられています。

それぞれの値については次の表を参照してください。 既定値は Basic256 です。| +|`issuedKeyType`|発行されるキーの種類を指定します。 以下の値が有効です。

- SymmetricKey
- PublicKey
- BearerKey

既定値は SymmetricKey です。 この属性は 型です。| +|`issuedTokenType`|発行されるトークンの型を指定する URI。 既定値は、`null` です。| +|`negotiateServiceCredential`|サービス資格情報がネゴシエーションの一部として交換されるか、帯域外で使用できるかを指定する値。 既定値は `true` で、サービス資格情報がネゴシエートされます。| + +## algorithmSuite 属性 + +|値|説明| +|-------|--------| +|Basic128|Aes128 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192|Aes192 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256|Aes256 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Rsa15|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic192Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDes|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Rsa15|メッセージの暗号化には Aes128 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDesRsa15|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic128Sha256|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192Sha256|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Sha256|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|TripleDesSha256|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Sha256Rsa15|メッセージの暗号化には Aes128 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic192Sha256Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic256Sha256Rsa15|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|TripleDesSha256Rsa15|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-element.md)|このバインディングのクレームの種類のコレクションを指定します。 各要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuer.md)|セキュリティ トークンを発行するエンドポイントを指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuermetadata.md)|発行者のエンドポイント アドレスを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/tokenrequestparameters.md)|トークン要求パラメーターのコレクション。 各パラメーターは、XML 要素です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-element-of-ws2007federationhttpbinding.md)|バインディングのセキュリティ設定を定義します。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/message-element-of-wsfederationhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/message-element-of-wsfederationhttpbinding.md new file mode 100644 index 00000000000..aeb8c83a874 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/message-element-of-wsfederationhttpbinding.md @@ -0,0 +1,141 @@ +--- +title: "<wsFederationHttpBinding> の <message> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9d710389-d9d8-4454-9bf2-da4ccda31cec +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# <wsFederationHttpBinding> の <message> 要素 +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md) のメッセージ レベル セキュリティの設定を定義します。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|algorithmSuite|メッセージの暗号化とキー ラップ アルゴリズムを設定します。 この属性の有効な値については、「algorithmSuite 属性」の表を参照してください。 既定値は `Basic256` です。

この属性は 型です。 これらのアルゴリズムは、Security Policy Language \(WS\-SecurityPolicy\) の仕様で指定されているアルゴリズムに対応付けられています。| +|issuedKeyType|発行されるキーの種類を指定します。 以下の値が有効です。

- SymmetricKey
- PublicKey

既定値は、`SymmetricKey` です。 この属性は 型です。| +|issuedTokenType|発行されるトークンの型を指定する URI を含む文字列。 既定値は、`null` です。| +|negotiateServiceCredential|サービス資格情報がネゴシエーションの一部として交換されるか、帯域外で使用できるかを指定するブール値。 既定値は `true` で、サービス資格情報がネゴシエートされます。| + +## algorithmSuite 属性 + +|値|説明| +|-------|--------| +|Basic128|Basic128 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192|Basic192 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256|Basic256 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Rsa15|メッセージの暗号化には Basic256 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic192Rsa15|メッセージの暗号化には Basic192 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDes|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Rsa15|メッセージの暗号化には Basic128 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDesRsa15|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic128Sha256|メッセージの暗号化には Basic128 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192Sha256|メッセージの暗号化には Basic192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Sha256|メッセージの暗号化には Basic256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|TripleDesSha256|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Sha256Rsa15|メッセージの暗号化には Basic128 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic192Sha256Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic256Sha256Rsa15|メッセージの暗号化には Basic256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|TripleDesSha256Rsa15|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-element.md)|このバインディングのクレームの種類のコレクションを指定します。 各要素は 型です。| +|issuer|セキュリティ トークンを発行するエンドポイントを指定します。 この要素は 型です。| +|issuerMetadata|発行者のエンドポイント アドレスを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/tokenrequestparameters.md)|トークン要求パラメーターのコレクション。 各パラメーターは、XML 要素です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wsfederationhttpbinding.md)|バインディングのセキュリティ設定を定義します。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/message-encoding.md b/docs/framework/configure-apps/file-schema/wcf/message-encoding.md new file mode 100644 index 00000000000..d38b13fb704 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/message-encoding.md @@ -0,0 +1,38 @@ +--- +title: "メッセージ エンコーディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: f30ee941-aca9-4c67-82a5-421568496f07 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# メッセージ エンコーディング +エンコーディングは、Unicode 文字のセットをバイト シーケンスに変換するプロセスです。 デコードは、その逆のプロセスです。 WCF \(Windows Communication Foundation\) には、SOAP メッセージのエンコードとして、テキスト、バイナリ、および MTOM \(Message Transmission Optimization Mechanism\) の 3 種類があります。 + + `binaryMessageEncoding` 構成セクションでは、バイナリ ベースの XML メッセージに使用される文字エンコーディングおよびメッセージ バージョン管理が指定されます。 バイナリ メッセージ エンコーダーは、ネットワーク上で Windows Communication Foundation \(WCF\) メッセージをバイナリにエンコードします。 このエンコーディングによりメッセージ転送は非常に高速になりますが、WS\-\* 標準に基づいた相互運用性は失われます。 + + `mtomMessageEncoding` 構成セクションでは、Message Transmission Optimization Mechanism \(MTOM\) エンコーディングを使用したメッセージの文字エンコーディングおよびメッセージ バージョン管理が指定されます。 \(MTOM\) は、Windows Communication Foundation \(WCF\) メッセージでバイナリ データを送信する効率的な技術です。 MTOM エンコーダーは、効率と相互運用性のバランスをとろうとします。 MTOM エンコーディングは、ほとんどの XML をテキスト形式で転送しますが、大きいサイズのバイナリ データ ブロックはテキストに変換せずにそのまま転送することによって最適化します。 + + `textMessageEncoding` 構成セクションは、ネットワーク上でテキストベースのメッセージの作成に使用されるテキスト エンコーダーを指定します。 このエンコーダーにより生成されるメッセージは、WS\-\* ベースの相互運用に適しています。 Web サービスまたは Web サービス クライアントは、一般に、テキスト形式の XML を認識できます。 ただし、バイナリ データの大きいブロックをテキストとして送信することは、XML メッセージをエンコードする最も効率の悪い方法です。 + +## 参照 + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [メッセージ エンコーダーを選択する](../../../../../docs/framework/wcf/feature-details/choosing-a-message-encoder.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/message-of-basichttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/message-of-basichttpbinding.md new file mode 100644 index 00000000000..6f2ef7f782f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/message-of-basichttpbinding.md @@ -0,0 +1,138 @@ +--- +title: "<basicHttpBinding> の <message> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 51cdd329-6461-471a-8747-56c2299b61e5 +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# <basicHttpBinding> の <message> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)のメッセージ レベル セキュリティの設定を定義します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|algorithmSuite|メッセージの暗号化とキー ラップ アルゴリズムを設定します。 この属性は、アルゴリズムとキー サイズを指定する 型です。 これらのアルゴリズムは、Security Policy Language \(WS\-SecurityPolicy\) の仕様で指定されているアルゴリズムに対応付けられています。

既定値は `Basic256` です。| +|clientCredentialType|メッセージ ベースのセキュリティを使用してクライアント認証を実行するときに使用される資格情報の種類を指定します。 既定値は、`UserName` です。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|UserName|- UserName 資格情報を使用してクライアントをサーバーに認証するように要求します。 この資格情報は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)を使用して指定する必要があります。
- [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、パスワード ダイジェストの送信、またはパスワードを使用したキーの派生、およびメッセージ セキュリティでのそのようなキーの使用をサポートしません。 そのため、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では UserName 資格情報を使用する場合は、トランスポートが強制的にセキュリティで保護されます。 `basicHttpBinding` の場合は、SSL チャネルの設定が必要です。| +|証明書|証明書を使用してクライアントをサーバーに認証するように要求します。 この場合のクライアント資格情報は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)および [\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-servicecredentials.md)を使用して指定する必要があります。 さらに、メッセージのセキュリティ モードを使用する場合は、クライアントにサービス証明書を準備する必要があります。 この場合のサービス資格情報は、 クラスまたは `ClientCredentials` 動作要素を使用し、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md)を使用してサービス証明書を指定して、指定する必要があります。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)のセキュリティ機能を定義します。| + +## 使用例 + このサンプルでは、basicHttpBinding とメッセージ セキュリティを使用するアプリケーションを実装する方法を示します。 サービスの次の構成例では、エンドポイント定義によって basicHttpBinding が指定され、`Binding1` という名前のバインディング構成が参照されます。 サービスがクライアントに対してサービス自体を認証するために使用する証明書は、`serviceCredentials` 要素の下にある構成ファイルの `behaviors` セクションで設定されます。 クライアントがサービスに対してクライアント自体を認証するために使用する証明書に適用される検証モードも、`clientCertificate` 要素の下にある `behaviors` セクションで設定されます。 + + 同じバインディングとセキュリティの詳細が、クライアントの構成ファイルで指定されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/message-of-nethttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/message-of-nethttpbinding.md new file mode 100644 index 00000000000..d7e14c5eab8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/message-of-nethttpbinding.md @@ -0,0 +1,138 @@ +--- +title: "<netHttpBinding> の <message> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9def5a35-475d-40d6-b716-ccdbd93863c7 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <netHttpBinding> の <message> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)のメッセージ レベル セキュリティの設定を定義します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|algorithmSuite|メッセージの暗号化とキー ラップ アルゴリズムを設定します。 この属性は、アルゴリズムとキー サイズを指定する 型です。 これらのアルゴリズムは、Security Policy Language \(WS\-SecurityPolicy\) の仕様で指定されているアルゴリズムに対応付けられています。

既定値は `Basic256` です。| +|clientCredentialType|メッセージ ベースのセキュリティを使用してクライアント認証を実行するときに使用される資格情報の種類を指定します。 既定値は、`UserName` です。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|UserName|- UserName 資格情報を使用してクライアントをサーバーに認証するように要求します。 この資格情報は、\<`clientCredentials`\> 要素を使用して指定する必要があります。
- [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、パスワード ダイジェストの送信、またはパスワードを使用したキーの派生、およびメッセージ セキュリティでのそのようなキーの使用をサポートしません。 そのため、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では UserName 資格情報を使用する場合は、トランスポートが強制的にセキュリティで保護されます。 `basicHttpBinding` の場合は、SSL チャネルの設定が必要です。| +|証明書|証明書を使用してクライアントをサーバーに認証するように要求します。 この場合のクライアント資格情報は、\<`clientCredentials`\> および \<`clientCertificate`\> を使用して指定する必要があります。 さらに、メッセージのセキュリティ モードを使用する場合は、クライアントにサービス証明書を準備する必要があります。 この場合のサービス資格情報は、 クラスまたは `ClientCredentials` 動作要素を使用し、serviceCredentials の \ 要素を使用してサービス証明書を指定して、指定する必要があります。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|\<`security`\> 要素 \(\<`netHttpBinding`\>\)|\<`netHttpBinding`\> 要素のセキュリティ機能を定義します。| + +## 使用例 + このサンプルでは、basicHttpBinding とメッセージ セキュリティを使用するアプリケーションを実装する方法を示します。 サービスの次の構成例では、エンドポイント定義によって basicHttpBinding が指定され、`Binding1` という名前のバインディング構成が参照されます。 サービスがクライアントに対してサービス自体を認証するために使用する証明書は、`serviceCredentials` 要素の下にある構成ファイルの `behaviors` セクションで設定されます。 クライアントがサービスに対してクライアント自体を認証するために使用する証明書に適用される検証モードも、`clientCertificate` 要素の下にある `behaviors` セクションで設定されます。 + + 同じバインディングとセキュリティの詳細が、クライアントの構成ファイルで指定されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/message-of-netmsmqbinding.md b/docs/framework/configure-apps/file-schema/wcf/message-of-netmsmqbinding.md new file mode 100644 index 00000000000..911a1ca96a9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/message-of-netmsmqbinding.md @@ -0,0 +1,65 @@ +--- +title: "<netMsmqBinding> の <message> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6ebf0240-d7be-4493-b0fe-f00fd5989d77 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <netMsmqBinding> の <message> +この `netMsmqBinding` バインディングでの SOAP メッセージ セキュリティ設定を定義します。 + +## 構文 + +``` + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|algorithmSuite|MSMQ トランスポートを介して送信されるメッセージにメッセージ ベースのセキュリティを実現するために使用されるメッセージの暗号化およびキー ラップ アルゴリズムを設定します。

既定値は `Aes256` です。 この属性は 型です。| +|clientCredentialType|MSMQ トランスポートで送信されるメッセージに対してクライアント認証を実行するときに使用される資格情報の種類を指定します。 以下の値が有効です。

- None: サービスが匿名クライアントと対話できるようになります。 サービスとクライアントはいずれも資格情報を要求しません。
- Windows : Windows 資格情報の認証済みコンテキストの制御下での SOAP 交換を可能にします。 これは、常に Kerberos ベースの認証を実行します。
- UserName: UserName 資格情報を使用してクライアントを認証するよう、サービスが要求できるようにします。 この場合の資格情報は、`clientCredentials` 動作を使用して指定する必要があります。 **Caution:** [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] は、パスワード ダイジェストの送信、またはパスワードを使用したキーの派生、およびメッセージ セキュリティでのそのようなキーの使用をサポートしません。 したがって、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、UserName 資格情報を使用する場合に交換が強制的に保護されるようにします。 このモードは、サービス証明書が、`clientCredential` 動作および `serviceCertificate` を使用してクライアント側で指定されることを要求します。

- Certificate: 証明書を使用してクライアントを認証するようサービスが要求できるようにします。 この場合のクライアント資格情報は、`clientCredentials` 動作を使用して指定する必要があります。 この場合のサービス資格情報は、`serviceCertificate` を指定して `clientCredentials` 動作を使用することで、指定する必要があります。
- CardSpace: サービスは、CardSpace を使用してクライアントを認証するよう要求します。 `serviceCertiifcate` は、`clientCredential` 動作で提供される必要があります。

既定値は `Windows` です。 この属性は 型です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-netmsmqbinding.md)|バインディングのセキュリティ設定を定義します。| + +## 参照 + + + + + [WCF のキュー](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/message-of-ws2007httpbinding.md b/docs/framework/configure-apps/file-schema/wcf/message-of-ws2007httpbinding.md new file mode 100644 index 00000000000..a3de7b115f8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/message-of-ws2007httpbinding.md @@ -0,0 +1,104 @@ +--- +title: "<ws2007HttpBinding> の <message> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9ffd8db6-84a8-4b38-a9fe-2cb1a87a1c97 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <ws2007HttpBinding> の <message> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/ws2007httpbinding.md) 要素のメッセージ レベルのセキュリティ設定を定義します。 + +## 構文 + +``` + + + + + + + + +``` + +## 型 + + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`algorithmSuite`|メッセージの暗号化とキー ラップ アルゴリズムを設定します。 アルゴリズムとキー サイズは、 クラスにより決まります。 これらのアルゴリズムは、Security Policy Language \(WS\-SecurityPolicy\) の仕様で指定されているアルゴリズムに対応付けられています。

既定値は Basic256 です。| +|`clientCredentialType`|省略可能です。 セキュリティ モード `Message` または `TransportWithMessageCredentials` を使用してクライアント認証を実行するときに使用される資格情報の種類を指定します。 次の表の列挙値を参照してください。 既定は Windows です。

この属性は 型です。| +|`establishSecurityContext`|セキュリティで保護されたセッションをセキュリティ チャネルが確立するかどうかを示す値。 セキュリティで保護されたセッションは、セキュリティ コンテキスト トークン \(SCT\) を確立してからアプリケーション メッセージを交換します。 SCT が確立されると、セキュリティ チャネルは上位のチャネルに インターフェイスを提供します。 セキュリティで保護されたセッションの使用方法の詳細については、「[方法 : セキュリティで保護されたセッションを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-secure-session.md)」を参照してください。

既定値は `true` です。| +|`negotiateServiceCredential`|省略可能です。 サービス資格情報がクライアントの帯域外で提供されるか、ネゴシエーションのプロセスによってサービスからクライアントに取得されるかを指定する値。 そのようなネゴシエーションは、通常のメッセージ交換の準備です。

`clientCredentialType` 属性が None、Username、または Certificate の場合、この属性を `false` に設定すると、クライアントの帯域外でサービス証明書が使用可能になり、クライアントは [\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)のサービス動作でサービス証明書 \([\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md) を使用\) を指定する必要があります。 このモードは、WS\-Trust および WS\-SecureConversation が実装された SOAP スタックと同時に使用できます。

`ClientCredentialType` 属性が `Windows` に設定されている場合、この属性を `false` に設定すると Kerberos ベースの認証が指定されます。 これは、クライアントおよびサービスが同じ Kerberos ドメインの一部でなければならないことを意味します。 このモードは、Kerberos トークン プロファイル \(OASIS WSS TC で定義\) に加えて WS\-Trust および WS\-SecureConversation が実装された SOAP スタックと同時使用できます。

この属性が `true` の場合、SOAP メッセージを介して 交換をトンネル化する .NET SOAP ネゴシエーションが行われます。

既定値は、`true` です。| + +## algorithmSuite 属性 + +|値|説明| +|-------|--------| +|Basic128|Aes128 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192|Aes192 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256|Aes256 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Rsa15|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic192Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDes|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Rsa15|メッセージの暗号化には Aes128 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDesRsa15|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic128Sha256|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192Sha256|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Sha256|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|TripleDesSha256|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Sha256Rsa15|メッセージの暗号化には Aes128 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic192Sha256Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic256Sha256Rsa15|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|TripleDesSha256Rsa15|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|`None`|サービスが匿名クライアントと対話できるようになります。 サービス側では、サービスがクライアントの資格情報を必要としないことを示しています。 クライアント側では、クライアントがクライアントの資格情報を提示しないことを示しています。| +|`Certificate`|証明書を使用したクライアントの認証を、サービスで要求することが可能になります。 `message` セキュリティ モードが使用されており、`negotiateServiceCredential` 属性が `false` に設定されている場合、クライアントをサービス証明書で準備する必要があります。| +|`IssuedToken`|通常はセキュリティ トークン サービス \(STS\) により発行されるカスタム トークンを指定します。| +|`UserName`|`UserName` 資格情報を使用したクライアントの認証を、サービスで要求することが可能になります。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、パスワード ダイジェストの送信、またはパスワードを使用したキーの派生、およびメッセージ セキュリティでのそのようなキーの使用をサポートしません。 そのため、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では `UserName` 資格情報を使用する場合は、トランスポートが強制的にセキュリティで保護されます。 この資格情報モードは、`negotiateServiceCredential` 属性に基づいて、同時実行可能な交換か、同時実行できないネゴシエーションのいずれかになります。| +|`Windows`|SOAP 交換を、`Windows` 資格情報の認証されたコンテキストで行うことが可能になります。 `negotiateServiceCredential` 属性が `true` に設定されている場合、SSPI ネゴシエーションと Kerberos \(同時使用可能な標準\) のいずれかが実行されます。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-ws2007httpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/ws2007httpbinding.md)のセキュリティ設定を定義します。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/message-of-wsdualhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/message-of-wsdualhttpbinding.md new file mode 100644 index 00000000000..7369d9f97b6 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/message-of-wsdualhttpbinding.md @@ -0,0 +1,96 @@ +--- +title: "<wsDualHttpBinding> の <message> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 75101744-eed8-4d61-91f4-5fc4473a21f2 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# <wsDualHttpBinding> の <message> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md)のメッセージ レベルのセキュリティを定義します。 + +## 構文 + +``` + + + +``` + +## 型 + + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|algorithmSuite|省略可能です。 メッセージの暗号化とキー ラップ アルゴリズムを設定します。 アルゴリズムとキー サイズは、 クラスにより決まります。 これらのアルゴリズムは、Security Policy Language \(WS\-SecurityPolicy\) の仕様で指定されているアルゴリズムに対応付けられています。

有効値については、以下を参照してください。 既定値は `Basic256` です。| +|clientCredentialType|省略可能です。 セキュリティ モード `Message` を使用してクライアント認証を実行するときに使用される資格情報の種類を指定します。 有効値については、以下を参照してください。 既定値は、`Windows` です。

この属性は 型です。| +|negotiateServiceCredential|省略可能です。 サービス資格情報がクライアントの帯域外で提供されるか、ネゴシエーションのプロセスによってサービスからクライアントに取得されるかを指定するブール値。 そのようなネゴシエーションは、通常のメッセージ交換の準備です。

`clientCredentialType` 属性が None、Username、または Certificate の場合、この属性を `false` に設定すると、クライアントの帯域外でサービス証明書が使用可能になり、クライアントは [\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)のサービス動作でサービス証明書 \([\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md) を使用\) を指定する必要があります。 このモードは、WS\-Trust および WS\-SecureConversation が実装された SOAP スタックと同時使用できます。

`ClientCredentialType` 属性が `Windows` に設定されている場合、この属性を `false` に設定すると Kerberos ベースの認証が指定されます。 これは、クライアントおよびサービスが同じ Kerberos ドメインの一部でなければならないことを意味します。 このモードは、Kerberos トークン プロファイル \(OASIS WSS TC で定義\) に加えて WS\-Trust および WS\-SecureConversation が実装された SOAP スタックと同時使用できます。 この属性が `true` の場合、SOAP メッセージを介して SPNego 交換をトンネル化する .NET SOAP ネゴシエーションが行われます。

既定値は、`true` です。| + +## algorithmSuite 属性 + +|値|説明| +|-------|--------| +|Basic128|Aes128 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192|Aes192 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256|Aes256 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Rsa15|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic192Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDes|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Rsa15|メッセージの暗号化には Aes128 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDesRsa15|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic128Sha256|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192Sha256|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Sha256|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|TripleDesSha256|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Sha256Rsa15|メッセージの暗号化には Aes128 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic192Sha256Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic256Sha256Rsa15|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|TripleDesSha256Rsa15|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|なし|サービスが匿名クライアントと対話できるようになります。 サービス側では、サービスがクライアントの資格情報を必要としないことを示しています。 クライアント側では、クライアントがクライアントの資格情報を提示しないことを示しています。| +|Windows|SOAP 交換を、Windows 資格情報の認証されたコンテキストで行うことが可能になります。 `negotiateServiceCredential` 属性が `true` に設定されている場合、SSPI ネゴシエーションと Kerberos \(同時使用可能な標準\) のいずれかが実行されます。| +|UserName|サービスが、UserName 資格情報を使用したクライアントの認証を要求できるようにします。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、パスワード ダイジェストの送信、またはパスワードを使用したキーの派生、およびメッセージ セキュリティでのそのようなキーの使用をサポートしません。 そのため、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では UserName 資格情報を使用する場合は、トランスポートが強制的にセキュリティで保護されます。 この資格情報モードは、`negotiateServiceCredential` 属性に基づいて、同時実行可能な交換か、同時実行できないネゴシエーションのいずれかになります。| +|証明書|証明書を使用したクライアントの認証を、サービスで要求することが可能になります。 メッセージのセキュリティ モードが使用されており、`negotiateServiceCredential` 属性が `false` に設定されている場合、クライアントをサービス証明書で準備する必要があります。| +|IssuedToken|カスタム トークン \(通常はセキュリティ トークン サービスにより発行される\) を指定します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wsdualhttpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md)のセキュリティ機能を定義します。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/message-of-wshttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/message-of-wshttpbinding.md new file mode 100644 index 00000000000..6014c36c5d5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/message-of-wshttpbinding.md @@ -0,0 +1,97 @@ +--- +title: "<wsHttpBinding> の <message> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 621abbde-590b-454d-90ac-68dc3c69c720 +caps.latest.revision: 22 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 22 +--- +# <wsHttpBinding> の <message> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)のメッセージ レベル セキュリティの設定を定義します。 + +## 構文 + +``` + + +``` + +## 型 + + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|algorithmSuite|メッセージの暗号化とキー ラップ アルゴリズムを設定します。 アルゴリズムとキー サイズは、 クラスにより決まります。 これらのアルゴリズムは、Security Policy Language \(WS\-SecurityPolicy\) の仕様で指定されているアルゴリズムに対応付けられています。

既定値は `Basic256` です。| +|clientCredentialType|省略可能です。 セキュリティ モード `Message` または `TransportWithMessageCredentials` を使用してクライアント認証を実行するときに使用される資格情報の種類を指定します。 次の列挙値を参照してください。 既定値は、`Windows` です。

この属性は 型です。| +|establishSecurityContext|セキュリティで保護されたセッションをセキュリティ チャネルが確立するかどうかを示すブール値。 キュリティで保護されたセッションは、セキュリティ コンテキスト トークン \(SCT\) を確立してからアプリケーション メッセージを交換します。 SCT が確立されると、セキュリティ チャネルは上位のチャネルに インターフェイスを提供します。 セキュリティで保護されたセッションの使用方法の詳細については、「[方法 : セキュリティで保護されたセッションを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-secure-session.md)」を参照してください。

既定値は `true` です。| +|negotiateServiceCredential|省略可能です。 サービス資格情報がクライアントの帯域外で提供されるか、ネゴシエーションのプロセスによってサービスからクライアントに取得されるかを指定するブール値。 そのようなネゴシエーションは、通常のメッセージ交換の準備です。

`clientCredentialType` 属性が None、Username、または Certificate の場合、この属性を `false` に設定すると、クライアントの帯域外でサービス証明書が使用可能になり、クライアントは [\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)のサービス動作でサービス証明書 \([\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md) を使用\) を指定する必要があります。 このモードは、WS\-Trust および WS\-SecureConversation が実装された SOAP スタックと同時使用できます。

`ClientCredentialType` 属性が `Windows` に設定されている場合、この属性を `false` に設定すると Kerberos ベースの認証が指定されます。 これは、クライアントおよびサービスが同じ Kerberos ドメインの一部でなければならないことを意味します。 このモードは、Kerberos トークン プロファイル \(OASIS WSS TC で定義\) に加えて WS\-Trust および WS\-SecureConversation が実装された SOAP スタックと同時使用できます。

この属性が `true` の場合、SOAP メッセージを介して SPNego 交換をトンネル化する .NET SOAP ネゴシエーションが行われます。

既定値は、`true` です。| + +## algorithmSuite 属性 + +|値|説明| +|-------|--------| +|Basic128|Basic128 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192|Basic192 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256|Basic256 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Rsa15|メッセージの暗号化には Basic256 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic192Rsa15|メッセージの暗号化には Basic192 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDes|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Rsa15|メッセージの暗号化には Basic128 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDesRsa15|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic128Sha256|メッセージの暗号化には Basic256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192Sha256|メッセージの暗号化には Basic192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Sha256|メッセージの暗号化には Basic256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|TripleDesSha256|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Sha256Rsa15|メッセージの暗号化には Basic128 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic192Sha256Rsa15|メッセージの暗号化には Basic192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic256Sha256Rsa15|メッセージの暗号化には Basic256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|TripleDesSha256Rsa15|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|なし|サービスが匿名クライアントと対話できるようになります。 サービス側では、サービスがクライアントの資格情報を必要としないことを示しています。 クライアント側では、クライアントがクライアントの資格情報を提示しないことを示しています。| +|証明書|証明書を使用したクライアントの認証を、サービスで要求することが可能になります。 メッセージのセキュリティ モードが使用されており、`negotiateServiceCredential` 属性が `false` に設定されている場合、クライアントをサービス証明書で準備する必要があります。| +|IssuedToken|カスタム トークン \(通常はセキュリティ トークン サービスにより発行される\) を指定します。| +|UserName|サービスが、UserName 資格情報を使用したクライアントの認証を要求できるようにします。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、パスワード ダイジェストの送信、またはパスワードを使用したキーの派生、およびメッセージ セキュリティでのそのようなキーの使用をサポートしません。 そのため、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では UserName 資格情報を使用する場合は、トランスポートが強制的にセキュリティで保護されます。 この資格情報モードは、`negotiateServiceCredential` 属性に基づいて、同時実行可能な交換か、同時実行できないネゴシエーションのいずれかになります。| +|Windows|SOAP 交換を、Windows 資格情報の認証されたコンテキストで行うことが可能になります。 `negotiateServiceCredential` 属性が `true` に設定されている場合、SSPI ネゴシエーションと Kerberos \(同時使用可能な標準\) のいずれかが実行されます。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)のセキュリティ設定を定義します。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/messagelogging.md b/docs/framework/configure-apps/file-schema/wcf/messagelogging.md new file mode 100644 index 00000000000..bc222bd4f7b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/messagelogging.md @@ -0,0 +1,132 @@ +--- +title: "<messageLogging></messageLogging> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1d06a7e6-9633-4a12-8c5d-123adbbc19c5 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# <messageLogging></messageLogging> +この要素は Windows Communication Foundation (WCF) のメッセージ ログ機能の設定を定義します。 + + \ +<>\> +<>\> + +## 構文 + +``` + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|---------------|-----------------| +|`logEntireMessage`|メッセージ全体 (メッセージ ヘッダーと本文) を記録するかどうかを指定するブール値。 既定は `false` で、メッセージ ヘッダーだけが記録されます。 この設定は、すべてのメッセージ ログ レベル (サービス、トランスポート、および不正) に影響を与えます。| +|`logMalformedMessages`|無効なメッセージを記録するかどうかを指定するブール値。 無効なメッセージは、`maxMessagesToLog` にカウントされません。 既定値は、`false` です。| +|`logMessagesAtServiceLevel`|(暗号化およびトランスポートに関連する変換の前に) メッセージをサービス レベルでトレースするかどうかを指定するブール値。 既定値は、`false` です。| +|`logMessagesAtTransportLevel`|メッセージをトランスポート レベルでトレースするかどうかを指定するブール値。 構成ファイルに指定されたフィルターが適用され、フィルターに一致するメッセージだけがトレースされます。 既定値は、`false` です。| +|`maxMessagesToLog`|記録するメッセージの最大数を指定する正の整数。 既定値は 1000 です。| +|`maxSizeOfMessageToLog`|記録するメッセージの最大サイズ (バイト単位) を指定する正の整数。 サイズが制限より大きなメッセージは、記録されません。 この設定は、すべてのトレース レベルに影響を与えます。 既定値は 262144 (0x4000) です。| + +### 子要素 + +|要素|説明| +|-------------|-----------------| +|フィルター|`filters` 要素には、XPath フィルターのコレクションが保持されます。 トランスポート メッセージ ログが有効な場合 (`logMessagesAtTransportLevel` が `true`)、フィルターに一致するメッセージだけが記録されます。

フィルターは、トランスポート層でのみ適用されます。 サービス レベルおよび形式が正しくないメッセージ ログ記録は、フィルターの影響を受けません。

この要素の唯一の属性である `filter` は、XpathFilter です。

` /soap:Envelope `| + +### 親要素 + +|要素|説明| +|-------------|-----------------| +|診断|管理者が行うランタイムの検査と管理の WCF 設定を定義します。| + +## コメント + メッセージは、サービス、トランスポート、および不正の&3; 種類のレベルで記録されます。 各レベルは、個別にアクティブにできます。 + + XPath フィルターは、トランスポート レベルとサービス レベルで特定のメッセージを記録するために追加できます。 フィルターが定義されていない場合、すべてのメッセージが記録されます。 フィルターは、メッセージのヘッダーにのみ適用されます。 本文は無視されます。 WCF は、パフォーマンスを強化するためにメッセージ本文を無視します。 本文の内容に基づいてフィルターを適用する場合は、そのためのフィルターを備えたカスタム リスナーを作成できます。 + + メッセージ トレースをアクティブ化するために、トレース リスナーを作成する必要があります。 リスナー自体にで動作するリスナーを指定できます、 トレース アーキテクチャです。 次の例は、そのようなリスナーの作成方法を示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + +``` + +## 例 + +``` + + + + + +``` + +## 関連項目 + + + + + [メッセージ ログの構成](../../../../../docs/framework/wcf/diagnostics/configuring-message-logging.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/messagesenderauthentication-element.md b/docs/framework/configure-apps/file-schema/wcf/messagesenderauthentication-element.md new file mode 100644 index 00000000000..fd5ed096823 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/messagesenderauthentication-element.md @@ -0,0 +1,114 @@ +--- +title: "<messageSenderAuthentication> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8d979dfc-a6f9-42ec-96d5-7fbc13a48118 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <messageSenderAuthentication> 要素 +ピアツーピア メッセージ送信者の認証オプションを指定します。 + + ピア ツー ピア プログラミングの詳細については、「[ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md)」を参照してください。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|customCertificateValidatorType|カスタム型の検証に使用される型およびアセンブリです。 `certificateValidationMode` が `Custom` に設定されている場合は、この属性を設定する必要があります。| +|certifcateValidationMode|資格情報の検証に使用される 3 つのモードのいずれかを指定します。 `Custom` に設定されている場合、`customCertificateValidator` も指定する必要があります。| +|revocationMode|証明書失効リスト \(CRL\) のチェックに使用されるモードのいずれかです。| +|trustedStoreLocation|2 つのシステム格納場所 \(`LocalMachine` または `CurrentUser`\) のいずれかです。 この値は、サービス証明書がクライアントにネゴシエートされるときに使用されます。 指定された格納場所の **\[信頼されたユーザー\]** ストアに対して検証が実行されます。| + +## customCertificateValidatorType 属性 + +|値|説明| +|-------|--------| +|String|省略可能です。 タイプ名およびアセンブリと、タイプの検索に使用される他のデータを指定します。 少なくとも、名前空間とタイプ名が必要です。 省略可能な情報は、アセンブリ名、バージョン番号、カルチャ、および公開キー トークンです。| + +## certificateValidationMode 属性 + +|値|説明| +|-------|--------| +|列挙型|省略可能です。 `None`、`PeerTrust`、`ChainTrust`、`PeerOrChainTrust`、`Custom` のいずれかの値にします。 既定値は、`ChainTrust` です。 既定値は、`ChainTrust` です。

詳細については、「[証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。| + +## revocationMode 属性 + +|値|説明| +|-------|--------| +|列挙型|`NoCheck`、`Online`、`Offline` のいずれかの値にします。 既定値は、`Online` です。

詳細については、「[証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。| + +## trustedStoreLocation 属性 + +|値|説明| +|-------|--------| +|列挙型|`LocalMachine` または `CurrentUser` のいずれかの値にします。 既定値は、`CurrentUser` です。 クライアント アプリケーションがシステム アカウントで実行されている場合、証明書は通常 `LocalMachine` の下にあります。 クライアント アプリケーションがユーザー アカウントで実行されている場合、証明書は通常 `CurrentUser` の下にあります。 既定値は、`CurrentUser` です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peer-of-clientcredentials-element.md)|ピア サービスに対するクライアントの認証に使用される資格情報を指定します。| + +## 解説 + メッセージ認証を選択した場合は、この要素を構成する必要があります。 出力チャネルでは、各メッセージは、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/certificate-element.md) が提供する認証を使用して署名されます。 すべてのメッセージは、アプリケーションに配信される前に、この要素の `customCertificateValidatorType` 属性で指定した検証を使用してメッセージ資格情報がチェックされます。 検証は、資格情報を受け入れることも拒否することもできます。 + +## 使用例 + 次のコードは、メッセージ送信者検証モードを `PeerOrChainTrust` に設定します。 + +``` + + + + + + + + + + + + +``` + +## 参照 + + + + + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md) + [Peer Channel Message Authentication](http://msdn.microsoft.com/ja-jp/80e73386-514e-4c30-9e4a-b9ca8c173a95) + [Peer Channel Custom Authentication](http://msdn.microsoft.com/ja-jp/4aa8a82e-41a8-48e2-8621-7e1cbabdca7c) + [セキュリティによるピア チャネル アプリケーションの保護](../../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/messagesenderauthentication.md b/docs/framework/configure-apps/file-schema/wcf/messagesenderauthentication.md new file mode 100644 index 00000000000..34f070ecc07 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/messagesenderauthentication.md @@ -0,0 +1,67 @@ +--- +title: "<messageSenderAuthentication> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ea62fc06-55fb-42e0-aa2b-8867bdf4b415 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <messageSenderAuthentication> +メッセージ送信者により使用されるピア証明書の認証設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`certificateValidationMode`|省略可能な列挙体です。 資格情報の検証に使用される 5 つのモードのいずれかを指定します。 この属性は 型です。 `Custom` に設定されている場合、`customCertificateValidator` も指定する必要があります。| +|`customCertificateValidatorType`|省略可能な文字列。 ユーザー設定タイプの検証に使用されるタイプおよびアセンブリを指定します。 `certificateValidationMode` が `Custom` に設定されている場合は、この属性を設定する必要があります。 この属性は 型です。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] には、信頼されたユーザーのストアに対してピア証明書を検証する既定のピア証明書検証が用意されており、 証明書が有効なルートまでつながっていることを検証します。 カスタム検証を実装して別の動作を指定したり、この属性を使用してカスタム検証を指定することができます。| +|`revocationMode`|省略可能な列挙体です。 証明書失効モードを指定します。 この属性は 型です。 システムは、ピア証明書を失効証明書リストで検索して、それが失効していないことを検証します。 このチェックは、オンラインで、またはキャッシュされた失効リストをチェックする方法で実行されます。 失効チェックは、この属性を NoCheck に設定することにより無効にできます。| +|`trustedStoreLocation`|省略可能な列挙体です。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] セキュリティ システムによりピア証明書を検証する、信頼されているユーザー ストアを指定します。 この属性は 型です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peer-of-servicecredentials.md)|ピア ノードの現在の資格情報を指定します。| + +## 解説 + メッセージ認証を選択した場合は、この要素を構成する必要があります。 出力チャネルでは、各メッセージは、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/certificate-element.md) が提供する認証を使用して署名されます。 すべてのメッセージは、アプリケーションに配信される前に、この要素の `customCertificateValidatorType` 属性で指定した検証を使用してメッセージ資格情報がチェックされます。 検証は、資格情報を受け入れることも拒否することもできます。 + +## 参照 + + + + + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md) + [Peer Channel Message Authentication](http://msdn.microsoft.com/ja-jp/80e73386-514e-4c30-9e4a-b9ca8c173a95) + [Peer Channel Custom Authentication](http://msdn.microsoft.com/ja-jp/4aa8a82e-41a8-48e2-8621-7e1cbabdca7c) + [セキュリティによるピア チャネル アプリケーションの保護](../../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/metadata.md b/docs/framework/configure-apps/file-schema/wcf/metadata.md new file mode 100644 index 00000000000..ecb621836b8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/metadata.md @@ -0,0 +1,66 @@ +--- +title: "<metadata> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d09653eb-e355-4c73-b87b-28f93d56480d +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <metadata> +サービス メタデータを処理する方法を指定します。 + +## 構文 + +``` + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/policyimporters.md)|バインディングに関するカスタム ポリシー アサーションのインポートを制御するすべてのポリシー インポーターを指定します。 ポリシー インポーターは、バインディング機能についてのカスタム ポリシー アサーションの検索、およびアサーションで必要となる機能を実装するカスタム バインディング要素の結び付けに使用されます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsdlimporters.md)|WS\-Policy が添付された Web サービス記述言語 \(WSDL\) 1.1 メタデータをインポートするすべての WSDL インポーターを指定します。 WSDL インポーターは、メタデータのインポートに加えて、コントラクトおよびエンドポイント情報を表すさまざまなクラスにその情報を変換するために使用されます。 コントラクトおよびエンドポイントの情報やプロパティを選択的にインポートできます。これらは、任意のインポート エラーを公開し、インポートおよび変換プロセスに関連する型情報を受け取ります。 また、任意のポリシー ドキュメント、WSDL ドキュメント、WSDL 拡張、および XML スキーマ ドキュメントにアクセスするためのバインディング情報およびプロパティのインポートもサポートします。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/client.md)|クライアントが接続可能なエンドポイントの一覧を定義するクライアント セクション。| + +## 参照 + + + + + + [WCF クライアントの構成](../../../../../docs/framework/wcf/feature-details/client-configuration.md) + [クライアント](../../../../../docs/framework/wcf/feature-details/clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/mexendpoint.md b/docs/framework/configure-apps/file-schema/wcf/mexendpoint.md new file mode 100644 index 00000000000..fc22a48ec14 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/mexendpoint.md @@ -0,0 +1,52 @@ +--- +title: "<mexEndpoint> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c9823060-0a5d-4f9d-99d4-4d113b758247 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <mexEndpoint> +この構成要素は、固定 IMetadataExchange コントラクトが含まれた標準エンドポイントを定義します。 IMetadataExchange はすべてのメタデータ交換エンドポイントでコントラクトとして指定されるため、独自のエンドポイントを定義せずにこの標準エンドポイントを使用できます。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|標準エンドポイントの構成名を指定する文字列。 この名前は、サービス エンドポイントの `endpointConfiguration` 属性で使用され、標準エンドポイントと構成を関連付けます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|1 つ以上のプロパティ \(アドレス、バインディング、コントラクト\) が固定されている、あらかじめ定義されたエンドポイントである標準エンドポイントのコレクション。| \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/mexhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/mexhttpbinding.md new file mode 100644 index 00000000000..cd53209980a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/mexhttpbinding.md @@ -0,0 +1,71 @@ +--- +title: "<mexHttpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e50b2e1f-9668-41a5-8077-dee7abff9f0f +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <mexHttpBinding> +HTTP 経由の WS\-MetadataExchange \(WS\-MEX\) メッセージ交換に使用されるバインディングの設定を指定します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`name`|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。 また、この名前は、同じ種類のバインディング間で一意です。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + このバインディングは、基本的にはセキュリティを無効にした `WSHttpBinding` バインディングです。 ほとんどのメタデータ要求に対応します。 + +## 参照 + + + [方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md) + [カスタム バインディングを介したメタデータの公開と取得](../../../../../docs/framework/wcf/extending/publishing-and-retrieving-metadata-over-a-custom-binding.md) + [メタデータ](../../../../../docs/framework/wcf/feature-details/metadata.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/mexhttpsbinding.md b/docs/framework/configure-apps/file-schema/wcf/mexhttpsbinding.md new file mode 100644 index 00000000000..63e38df56ac --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/mexhttpsbinding.md @@ -0,0 +1,74 @@ +--- +title: "<mexHttpsBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f2ed3774-78b9-4a15-b79b-655f1ad68b86 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <mexHttpsBinding> +HTTPS 経由の WS\-MetadataExchange \(WS\-MEX\) メッセージ交換に使用されるバインディングの設定を指定します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`name`|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。 また、この名前は、同じ種類のバインディング間で一意です。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + このバインディングは、基本的には証明書を使用してトランスポート レベルのセキュリティをサポートする `WSHttpBinding` バインディングです。 そのようなメタデータ エンドポイントの構成および使用の詳細については、「[方法 : カスタム WS\-Metadata Exchange バインディングを構成する](../../../../../docs/framework/wcf/extending/how-to-configure-a-custom-ws-metadata-exchange-binding.md)」、「[方法: MEX 以外のバインディングを介してメタデータを取得する](../../../../../docs/framework/wcf/extending/how-to-retrieve-metadata-over-a-non-mex-binding.md)」、および「[カスタム セキュア メタデータ エンドポイント](../../../../../docs/framework/wcf/samples/custom-secure-metadata-endpoint.md)」のサンプルを参照してください。 + +## 参照 + + + [方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md) + [カスタム バインディングを介したメタデータの公開と取得](../../../../../docs/framework/wcf/extending/publishing-and-retrieving-metadata-over-a-custom-binding.md) + [方法 : カスタム WS\-Metadata Exchange バインディングを構成する](../../../../../docs/framework/wcf/extending/how-to-configure-a-custom-ws-metadata-exchange-binding.md) + [方法: MEX 以外のバインディングを介してメタデータを取得する](../../../../../docs/framework/wcf/extending/how-to-retrieve-metadata-over-a-non-mex-binding.md) + [カスタム セキュア メタデータ エンドポイント](../../../../../docs/framework/wcf/samples/custom-secure-metadata-endpoint.md) + [メタデータ](../../../../../docs/framework/wcf/feature-details/metadata.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/mexnamedpipebinding.md b/docs/framework/configure-apps/file-schema/wcf/mexnamedpipebinding.md new file mode 100644 index 00000000000..2bd349b92fd --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/mexnamedpipebinding.md @@ -0,0 +1,68 @@ +--- +title: "<mexNamedPipeBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 193412fa-3260-414c-92c6-b32ed3b94a34 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <mexNamedPipeBinding> +名前付きパイプを経由する WS\-MetadataExchange \(WS\-MEX\) メッセージ交換に使用されるバインディングの設定を指定します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`name`|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。 また、この名前は、同じ種類のバインディング間で一意です。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 参照 + + + [方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md) + [カスタム バインディングを介したメタデータの公開と取得](../../../../../docs/framework/wcf/extending/publishing-and-retrieving-metadata-over-a-custom-binding.md) + [メタデータ](../../../../../docs/framework/wcf/feature-details/metadata.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/mextcpbinding.md b/docs/framework/configure-apps/file-schema/wcf/mextcpbinding.md new file mode 100644 index 00000000000..cc855977e3c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/mextcpbinding.md @@ -0,0 +1,68 @@ +--- +title: "<mexTcpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 01baba8d-d784-4255-9ea2-7afff1482bf0 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <mexTcpBinding> +TCP 経由の WS\-MetadataExchange \(WS\-MEX\) メッセージ交換に使用されるバインディングの設定を指定します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`name`|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。 また、この名前は、同じ種類のバインディング間で一意です。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 参照 + + + [方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md) + [カスタム バインディングを介したメタデータの公開と取得](../../../../../docs/framework/wcf/extending/publishing-and-retrieving-metadata-over-a-custom-binding.md) + [メタデータ](../../../../../docs/framework/wcf/feature-details/metadata.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/msmqintegration.md b/docs/framework/configure-apps/file-schema/wcf/msmqintegration.md new file mode 100644 index 00000000000..60cebc320b5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/msmqintegration.md @@ -0,0 +1,98 @@ +--- +title: "<msmqIntegration> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: ab677405-1ffe-457a-803f-00c1770e51e2 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <msmqIntegration> +カスタム バインディングの MSMQ トランスポートを指定します。 + +## 構文 + +``` + + + customDeadLetterQueue="Uri" + deadLetterQueue="Custom/None/System" + durable="Boolean" + exactlyOnce="Boolean" + manualAddressing="Boolean" + maxBufferPoolSize="Integer" + maxImmediateRetries="Integer" + maxReceivedMessageSize="Integer" + maxRetryCycles="Integer" + rejectAfterLastRetry="Boolean" + retryCycleDelay="TimeSpan" + serializationFormat="XML/Binary/ActiveX/ByteArray/Stream" + timeToLive="TimeSpan" + useSourceJournal="Boolean" + useMsmqTracing="Boolean" + + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|customDeadLetterQueue|アプリケーションごとの配信不能キューの場所を示す URI。ここには、期限切れのメッセージや、アプリケーションへの配信に失敗したメッセージが転送されます。

ExactlyOnce 保証が必要なメッセージ \(つまり、`exactlyOnce` が `true` に設定される\) の場合、この属性は、既定で MSMQ のトランザクション システム全体の配信不能キューになります。

保証が必要ないメッセージ \(つまり、`exactlyOnce` が `false` に設定される\) の場合、この属性の既定値は `null` です。

値は、net.msmq スキームを使用する必要があります。 既定値は、`null` です。

`d` `eadLetterQueue` が `None` または `System` に設定されている場合は、この属性を `null` に設定する必要があります。 この属性が `null` でない場合は、`deadLetterQueue` を `Custom` に設定する必要があります。| +|deadLetterQueue|使用する配信不能キューの種類を指定します。

有効な値を次に示します。

- Custom: カスタムの配信不能キュー。
- None: 配信不能キューは使用されません。
- System: システムの配信不能キューを使用します。

この属性は、DeadLetterQueue 型です。| +|durable|このバインディングで処理されるメッセージが非揮発性か揮発性かを指定するブール値。 既定値は、`true` です。

非揮発性メッセージは、キュー マネージャーがクラッシュしても残り、揮発性メッセージは失われます。 アプリケーションで待ち時間の短縮が要求され、場合によってはメッセージが失われてもかまわない場合は、揮発性メッセージが適しています。

`exactlyOnce` が `true` に設定されている場合、メッセージは非揮発性である必要があります。| +|exactlyOnce|このバインディングで処理されるメッセージが正確に 1 回だけ受信されるかどうかを指定するブール値。 既定値は、`true` です。

メッセージは、保証付きまたは保証なしで送信できます。 保証により、アプリケーションは、送信したメッセージが受信メッセージ キューに到達したことを確認できます。到達しなかった場合、アプリケーションは、配信不能キューを読み取ることでそれを判断できます。

`exactlyOnce` は、`true` に設定されている場合、送信されたメッセージが受信メッセージ キューに 1 回だけ配信され、送信に失敗した場合はメッセージが配信不能キューに送信されることを MSMQ が保証することを示します。

`exactlyOnce` を `true` に設定して送信されるメッセージを、トランザクション キューだけに送信する必要があります。| +|manualAddressing|ユーザーによるメッセージのアドレス指定の管理を有効にするブール値です。 このプロパティは、通常、アプリケーションが複数の宛先のどれにメッセージを送信するかを決定するルーターのシナリオで使用されます。

`true` に設定されている場合、チャネルではメッセージが既にアドレス指定されていると見なされ、他の情報は追加されません。 この場合、ユーザーはすべてのメッセージを別個にアドレス指定できます。

`false` に設定されている場合、既定の Windows Communication Foundation \(WCF\) アドレス指定機構により、すべてのメッセージのアドレスが自動的に作成されます。

既定値は、`false` です。| +|maxBufferPoolSize|バッファー プールの最大サイズを指定する正の整数です。 既定値は 524288 です。

WCF の多くの部分でバッファーが使用されます。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxImmediateRetries|アプリケーション キューから読み取られるメッセージの即時再試行の最大回数を指定する整数。 既定値は 5 です。

メッセージの即時再試行を最大回数実行してもアプリケーションでメッセージを処理できない場合、メッセージは、後で再試行するために再試行キューに送信されます。 再試行サイクルが指定されていない場合は、メッセージが有害メッセージ キューに送信されるか、送信者に否定応答が返されます。| +|maxReceivedMessageSize|ヘッダーなどのメッセージの最大サイズ \(バイト単位\) を指定する正の整数。 受信側にとってメッセージが大きすぎると、メッセージの送信側は SOAP エラーを受け取ります。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|maxRetryCycles|受信側アプリケーションにメッセージを配信する再試行サイクルの最大数を指定する整数。 既定値は、 です。

1 回の再試行サイクルで、アプリケーションに、指定された回数のメッセージ配信を試みます。 試行回数は、`maxImmediateRetries` 属性で設定します。 配信を指定された回数試行してもアプリケーションがメッセージを処理できない場合、メッセージは、再試行キューに送信されます。 これに続く再試行サイクルは、`retryCycleDelay` 属性により指定された遅延の後、アプリケーションへの配信を再度試行するアプリケーション キューへの再試行キューから返されるメッセージで構成されています。 `maxRetryCycles` 属性は、アプリケーションがメッセージ配信に使用する再試行サイクル数を指定します。| +|rejectAfterLastRetry|再試行を最大回数実行しても配信できなかったメッセージに対して実行するアクションを指定するブール値。

`true` は、否定応答が送信者に返され、メッセージが削除されることを示します。`false` は、メッセージが有害メッセージ キューに送信されることを示します。 既定値は、`false` です。

値が `false` の場合、受信アプリケーションは、有害メッセージ キューを読み取って、有害メッセージ \(配信に失敗したメッセージ\) を処理できます。

MSMQ 3.0 は送信者への否定応答の返信をサポートしていないので、この属性は、MSMQ 3.0 では無視されます。| +|retryCycleDelay|すぐに配信できなかったメッセージを配信しようとするときの、再試行サイクルの時間遅延を指定する 。 既定値は 00:10:00 です。

1 回の再試行サイクルで、受信アプリケーションに、メッセージ配信を指定回試みます。 試行回数は、`maxImmediateRetries` 属性で指定されます。 即時試行を指定された回数実行してもアプリケーションがメッセージを処理できない場合、メッセージは再試行キューに送信されます。 これに続く再試行サイクルは、`retryCycleDelay` 属性により指定された遅延の後、アプリケーションへの配信を再度試行するアプリケーション キューへの再試行キューから返されるメッセージで構成されています。 再試行サイクル数は、`maxRetryCycles` 属性で指定されます。| +|serializationFormat|MSMQ メッセージの一部として送信されるオブジェクトのシリアル化に使用されるフォーマッタを指定します。 有効な値は、次のとおりです。

- ActiveX: COM オブジェクトをシリアル化するとき、ActiveX フォーマッタが使用されます。
- Binary: オブジェクトをバイナリ パケットにシリアル化します。
- ByteArray: オブジェクトをバイト配列にシリアル化します。
- Stream: オブジェクトをストリームにシリアル化します。
- Xml: オブジェクトを XML パケットにシリアル化します。 既定値は XML です。

この属性は 型です。| +|timeToLive|メッセージの期限が切れて、配信不能キューに入れられるまでのメッセージの有効期間を指定する 。 既定値は 1 日を示す 1.00:00:00 です。

この属性を設定すると、タイムリーなメッセージが受信側アプリケーションで処理される前に古くなることがなくなります。 キュー内のメッセージのうち、指定された期間内に受信アプリケーションで処理されなかったメッセージは、期限切れと呼ばれます。 期限切れのメッセージは、配信不能キューと呼ばれる特別なキューに送信されます。 配信不能キューの場所は、保証の内容に基づいて、`customDeadLetterQueue` 属性を使用して設定されるか、適切な既定値に設定されます。| +|useMsmqTracing|このバインディングにより処理されるメッセージをトレースするかどうかを指定するブール値です。 既定値は、`false` です。

トレースが有効な場合、メッセージ キュー コンピューターでメッセージが送受信されるたびに、レポート メッセージが作成され、レポート キューに送信されます。| +|useSourceJournal|このバインディングにより処理されるメッセージのコピーをソース ジャーナル キューに保存するかどうかを指定するブール値。 既定値は、`false` です。

キューに置かれたアプリケーションでは、コンピューターの発信キューから送信されたメッセージの記録を残す場合は、メッセージをジャーナル キューにコピーできます。 メッセージが発信キューから送信され、送信先のコンピューターで受信されたという応答を受け取ると、メッセージのコピーが送信元のコンピューターのシステム ジャーナル キューに保持されます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|msmqTransportSecurity|このバインディングのトランスポート セキュリティ設定を指定します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 参照 + + + + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [WCF のキュー](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/msmqintegrationbinding.md b/docs/framework/configure-apps/file-schema/wcf/msmqintegrationbinding.md new file mode 100644 index 00000000000..3f093f9d68f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/msmqintegrationbinding.md @@ -0,0 +1,152 @@ +--- +title: "<msmqIntegrationBinding></msmqIntegrationBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "msmqIntegrationBinding 要素" +ms.assetid: edf277f3-e3bf-4ed8-9f55-83b5788430a7 +caps.latest.revision: 34 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 34 +--- +# <msmqIntegrationBinding></msmqIntegrationBinding> +MSMQ を介してメッセージをルーティングすることでキューのサポートを提供するバインディングを定義します。 + + \ +<>\> +msmqIntegrationBinding + +## 構文 + +``` + + + + timeToLive="TimeSpan" + useMsmqTracing="Boolean + useSourceJournal="Boolean" + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|---------------|-----------------| +|closeTimeout|A クローズ操作が完了するまで待機する時間の間隔を指定する値。 この値は以上にする必要がありますです。 既定値は 00:01:00 です。| +|customDeadLetterQueue|アプリケーションごとの配信不能キューの場所が含まれている URI です。ここには、期限切れのメッセージや、転送または配信に失敗したメッセージが配置されます。

配信不能キューは、送信元アプリケーションのキュー マネージャーにある、配信に失敗した期限切れメッセージのキューです。

によって指定される URI net.msmq スキームを使用する必要があります。| +|deadLetterQueue|A .value がある場合に使用するには配信不能キューの種類を指定します。

配信不能キューは、アプリケーションへの配信に失敗したメッセージが転送される場所です。

exactlyOnce 保証が必要なメッセージ (つまり、`exactlyOnce` 属性が `true` に設定される) の場合、この属性は、既定で MSMQ のトランザクション システム全体の配信不能キューになります。

保証が必要ないメッセージの場合、この属性の既定値は `null` です。| +|durable|メッセージがキューで非揮発性か揮発性かを示すブール値です。 非揮発性メッセージは、キュー マネージャーがクラッシュしても残り、揮発性メッセージは失われます。 アプリケーションで待ち時間の短縮が要求され、場合によってはメッセージが失われてもかまわない場合は、揮発性メッセージが適しています。 `exactlyOnce` 属性が `true` に設定されている場合、メッセージは永続的にする必要があります。 既定値は、`true` です。| +|exactlyOnce|各メッセージが&1; 回だけ受信されるかどうかを示すブール値です。 その後、送信側に配信エラーが通知されます。 `durable` が `false` の場合、この属性は無視されて、配信が保証されずにメッセージが転送されます。 既定値は、`true` です。 詳細については、次を参照してください。 します。| +|maxReceivedMessageSize|このバインディングにより処理される最大メッセージ サイズ (ヘッダーを含む) をバイト単位で定義する正の整数です。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。 このメッセージ サイズの制限は、サービス拒否 (DoS) 攻撃への露出を制限するためのものです。| +|maxRetryCycles|有害メッセージ検出機能により使用される再試行サイクルの回数を示す整数です。 すべてのサイクルの配信試行にすべて失敗すると、メッセージは有害メッセージになります。 既定値は 2 です。 詳細については、次を参照してください。 します。| +|name|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成と名前のないバインディングおよび動作に関する詳細については、次を参照してください。[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)と[WCF サービスの構成を簡略化](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)します。| +|openTimeout|A オープン操作が完了するまで待機する時間の間隔を指定する値。 この値は以上にする必要がありますです。 既定値は 00:01:00 です。| +|receiveErrorHandling|A 有害メッセージおよびディスパッチ不能メッセージの処理方法を指定する値。| +|receiveRetryCount|アプリケーション キューからアプリケーションへのメッセージの転送が失敗した場合に、キュー マネージャーが即時再試行を行う最大回数を指定する整数。

配信試行を最大回数実行してもアプリケーションがメッセージにアクセスできない場合、メッセージは、後で再配信するために再試行キューに送信されます。 メッセージが送信キューに戻されるまでの時間は、`retryCycleDelay` で制御されます。 再試行サイクルが `maxRetryCycles` 値に達した場合は、メッセージが有害メッセージ キューに送信されるか、送信者に否定応答が返されます。| +|receiveTimeout|A 受信操作を完了するまで待機する時間の間隔を指定する値。 この値は以上にする必要がありますです。 既定値は 00:10:00 です。| +|receiveContextEnabled|キュー内のメッセージを処理するための受信コンテキストが有効になっているかどうかを指定するブール値。 これが `true` に設定されている場合、サービスではキューのメッセージを "ピーク" してメッセージの処理を開始できます。問題が発生して例外がスローされた場合、メッセージはキューに残ります。 サービスではメッセージを "ロック" して、後で処理を再試行することもできます。 ReceiveContext は、メッセージを「完了」キューから削除できるように処理されたメカニズムを提供します。メッセージは読み込みやに再書き込みキューされなく、ネットワーク経由でし、個々 のメッセージは処理中にさまざまなサービス インスタンスの間でバウンスします。| +|retryCycleDelay|すぐに配信できなかったメッセージを配信しようとするときの、再試行サイクルの時間遅延を指定する TimeSpan 値です。 実際の待機時間はさらに長くなる場合があるため、この値で定義されるのは最小待機時間だけです。 既定値は、00:30:00 です。 詳細については、次を参照してください。 します。| +|sendTimeout|A 送信操作が完了するまで待機する時間の間隔を指定する値。 この値は以上にする必要がありますです。 既定値は 00:01:00 です。| +|serializationFormat|メッセージ本文のシリアル化に使用される形式を定義します。 この属性の型がします。| +|timeToLive|メッセージの期限が切れて、配信不能キューに入れられるまでのメッセージの有効期間を指定する TimeSpan 値です。 既定値は 1.00:00:00 です。

この属性を設定すると、タイムリーなメッセージが受信側アプリケーションで処理される前に古くなることがなくなります。 キュー内のメッセージのうち、指定された期間内に受信アプリケーションで処理されなかったメッセージは、期限切れと呼ばれます。 期限切れのメッセージは、配信不能キューと呼ばれる特別なキューに送信されます。 配信不能キューの場所は、保証の内容に基づいて、`DeadLetterQueue` 属性を使用して設定されるか、適切な既定値に設定されます。| +|useMsmqTracing|このバインディングにより処理されるメッセージをトレースするかどうかを指定するブール値です。 既定値は、`false` です。 トレースが有効な場合、メッセージ キュー コンピューターでメッセージが送受信されるたびに、レポート メッセージが作成され、レポート キューに送信されます。| +|useSourceJournal|このバインディングにより処理されるメッセージのコピーをソース ジャーナルに保存するかどうかを指定するブール値です。 既定値は、`false` です。

キューに置かれたアプリケーションでは、コンピューターの発信キューから送信されたメッセージの記録を残す場合は、メッセージをジャーナル キューにコピーできます。 メッセージが発信キューから送信され、送信先のコンピューターで受信されたという応答を受け取ると、メッセージのコピーが送信元のコンピューターのシステム ジャーナル キューに保持されます。| + +## {SerializationFormat} 属性 + +|値|説明| +|-----------|-----------------| +|Xml|XML 形式| +|2 項|バイナリ形式| +|ActiveX|ActiveX 形式| +|ByteArray|オブジェクトをバイト配列にシリアル化します。| +|ストリーム|ストリームとして書式設定された本文。| + +### 子要素 + +|要素|説明| +|-------------|-----------------| +|[<>\>](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-msmqintegrationbinding.md)|バインディングのセキュリティ設定を定義します。 この要素が型のします。| + +### 親要素 + +|要素|説明| +|-------------|-----------------| +|[<>\>](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## コメント + このバインディング要素は、Windows Communication Foundation (WCF) アプリケーションにメッセージを送信し、COM、MSMQ ネイティブ Api、またはで定義された型のいずれかを使用する既存の MSMQ アプリケーションからメッセージを受信できるようにするために使用できます、 名前空間、キューをアドレスする方法は、転送保証、かどうかのメッセージを永続的に格納する必要があります、およびメッセージを保護および認証する方法を指定するこの構成要素を使用することができます。 詳細については、次を参照してください。[方法: WCF エンドポイントとメッセージ キュー アプリケーションとメッセージの交換](../../../../../docs/framework/wcf/feature-details/how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md)します。 + +## 例 + +``` + + + + + + + + + + +``` + +## 関連項目 + + + + [<>\>](../../../../../docs/framework/misc/binding.md) + [バインド](../../../../../docs/framework/wcf/bindings.md) + [システム指定のバインディングを構成します。](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [バインドを使用して、Windows Communication Foundation サービスとクライアントを構成するには](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [WCF のキュー](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/msmqtransport.md b/docs/framework/configure-apps/file-schema/wcf/msmqtransport.md new file mode 100644 index 00000000000..5ff7d7d49f8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/msmqtransport.md @@ -0,0 +1,102 @@ +--- +title: "<msmqTransport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 19d89f35-76ac-49dc-832b-e8bec2d5e33b +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <msmqTransport> +チャネルがカスタム バインドに含まれているときに、MSMQ トランスポートでメッセージを転送するようにします。 + +## 構文 + +``` + + + customDeadLetterQueue="Uri" + deadLetterQueue="Custom/None/System" + durable="Boolean" + exactlyOnce="Boolean" + manualAddressing="Boolean" + maxBufferPoolSize="Integer" + maxImmediateRetries="Integer" + maxPoolSize="Integer" + maxReceivedMessageSize="Integer" + maxRetryCycles="Integer" +....queueTransferProtocol="Native/Srmp/SrmpSecure" + rejectAfterLastRetry="Boolean" + retryCycleDelay="TimeSpan" + timeToLive="TimeSpan" + useActiveDirectory="Boolean" + useSourceJournal="Boolean" + useMsmqTracing="Boolean" + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|customDeadLetterQueue|アプリケーションごとの配信不能キューの場所を示す URI。ここには、期限切れのメッセージや、アプリケーションへの配信に失敗したメッセージが転送されます。

ExactlyOnce 保証が必要なメッセージ \(つまり、`exactlyOnce` が `true` に設定される\) の場合、この属性は、既定で MSMQ のトランザクション システム全体の配信不能キューになります。

保証が必要ないメッセージ \(つまり、`exactlyOnce` が `false` に設定される\) の場合、この属性の既定値は `null` です。

値は、net.msmq スキームを使用する必要があります。 既定値は、`null` です。

`deadLetterQueue` が `None` または `System` に設定されている場合は、この属性を `null` に設定する必要があります。 この属性が `null` でない場合は、`deadLetterQueue` を `Custom` に設定する必要があります。| +|deadLetterQueue|使用する配信不能キューの種類を指定します。

有効な値を次に示します。

- Custom: カスタムの配信不能キュー。
- None: 配信不能キューは使用されません。
- System: システムの配信不能キューを使用します。

この属性は、DeadLetterQueue 型です。| +|durable|このバインディングで処理されるメッセージが非揮発性か揮発性かを指定するブール値。 既定値は、`true` です。

非揮発性メッセージは、キュー マネージャーがクラッシュしても残り、揮発性メッセージは失われます。 アプリケーションで待ち時間の短縮が要求され、場合によってはメッセージが失われてもかまわない場合は、揮発性メッセージが適しています。

`exactlyOnce` が `true` に設定されている場合、メッセージは非揮発性である必要があります。| +|exactlyOnce|このバインディングで処理されるメッセージが正確に 1 回だけ受信されるかどうかを指定するブール値。 既定値は、`true` です。

メッセージは、保証付きまたは保証なしで送信できます。 保証により、アプリケーションは、送信したメッセージが受信メッセージ キューに到達したことを確認できます。到達しなかった場合、アプリケーションは、配信不能キューを読み取ることでそれを判断できます。

`exactlyOnce` は、`true` に設定されている場合、送信されたメッセージが受信メッセージ キューに 1 回だけ配信され、送信に失敗した場合はメッセージが配信不能キューに送信されることを MSMQ が保証することを示します。

`exactlyOnce` を `true` に設定して送信されるメッセージを、トランザクション キューだけに送信する必要があります。| +|manualAddressing|ユーザーによるメッセージのアドレス指定の管理を有効にするブール値です。 このプロパティは、通常、アプリケーションが複数の宛先のどれにメッセージを送信するかを決定するルーターのシナリオで使用されます。

`true` に設定されている場合、チャネルではメッセージが既にアドレス指定されていると見なされ、他の情報は追加されません。 この場合、ユーザーはすべてのメッセージを別個にアドレス指定できます。

`false` に設定されている場合、既定の Windows Communication Foundation \(WCF\) アドレス指定機構により、すべてのメッセージのアドレスが自動的に作成されます。

既定値は、`false` です。| +|maxBufferPoolSize|バッファー プールの最大サイズを指定する正の整数です。 既定値は 524288 です。

WCF の多くの部分でバッファーが使用されます。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxImmediateRetries|アプリケーション キューから読み取られるメッセージの即時再試行の最大回数を指定する整数。 既定値は 5 です。

メッセージの即時再試行を最大回数実行してもアプリケーションでメッセージを処理できない場合、メッセージは、後で再試行するために再試行キューに送信されます。 再試行サイクルが指定されていない場合は、メッセージが有害メッセージ キューに送信されるか、送信者に否定応答が返されます。| +|maxPoolSize|プールの最大サイズを指定する正の整数です。 既定値は 524288 です。| +|maxReceivedMessageSize|ヘッダーなどのメッセージの最大サイズ \(バイト単位\) を指定する正の整数。 受信側にとってメッセージが大きすぎると、メッセージの送信側は SOAP エラーを受け取ります。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|maxRetryCycles|受信側アプリケーションにメッセージを配信する再試行サイクルの最大数を指定する整数。 既定値は、 です。

1 回の再試行サイクルで、アプリケーションに、指定された回数のメッセージ配信を試みます。 試行回数は、`maxImmediateRetries` 属性で設定します。 配信を指定された回数試行してもアプリケーションがメッセージを処理できない場合、メッセージは、再試行キューに送信されます。 これに続く再試行サイクルは、`retryCycleDelay` 属性により指定された遅延の後、アプリケーションへの配信を再度試行するアプリケーション キューへの再試行キューから返されるメッセージで構成されています。 `maxRetryCycles` 属性は、アプリケーションがメッセージ配信に使用する再試行サイクル数を指定します。| +|queueTransferProtocol|このバインドが使用する、キューに置かれている通信チャネルのトランスポートを指定します。 有効な値は、次のとおりです。

- Native: ネイティブな MSMQ プロトコルを使用します。
- Srmp: SOAP リライアブル メッセージ プロトコル \(SRMP\) を使用します。
- SrmpSecure: SOAP リライアブル メッセージ プロトコル セキュア \(SRMPS\) トランスポートを使用します。

この属性は 型です。

MSMQ は、SOAP リライアブル メッセージ プロトコル \(SRMP\) を使用する場合は Active Directory アドレス指定をサポートしないため、`u``seActiveDirectory` が `true` に設定されている場合は、この属性を Srmp または Srmps に設定しないでください。| +|rejectAfterLastRetry|再試行を最大回数実行しても配信できなかったメッセージに対して実行するアクションを指定するブール値。

`true` は、否定応答が送信者に返され、メッセージが削除されることを示します。`false` は、メッセージが有害メッセージ キューに送信されることを示します。 既定値は、`false` です。

値が `false` の場合、受信アプリケーションは、有害メッセージ キューを読み取って、有害メッセージ \(配信に失敗したメッセージ\) を処理できます。

MSMQ 3.0 は送信者への否定応答の返信をサポートしていないので、この属性は、MSMQ 3.0 では無視されます。| +|retryCycleDelay|すぐに配信できなかったメッセージを配信しようとするときの、再試行サイクルの時間遅延を指定する 。 既定値は 00:10:00 です。

1 回の再試行サイクルで、受信アプリケーションに、メッセージ配信を指定回試みます。 試行回数は、`maxImmediateRetries` 属性で指定されます。 即時試行を指定された回数実行してもアプリケーションがメッセージを処理できない場合、メッセージは再試行キューに送信されます。 これに続く再試行サイクルは、`retryCycleDelay` 属性により指定された遅延の後、アプリケーションへの配信を再度試行するアプリケーション キューへの再試行キューから返されるメッセージで構成されています。 再試行サイクル数は、`maxRetryCycles` 属性で指定されます。| +|timeToLive|メッセージの期限が切れて、配信不能キューに入れられるまでのメッセージの有効期間を指定する 。 既定値は 1 日を示す 1.00:00:00 です。

この属性を設定すると、タイムリーなメッセージが受信側アプリケーションで処理される前に古くなることがなくなります。 キュー内のメッセージのうち、指定された期間内に受信アプリケーションで処理されなかったメッセージは、期限切れと呼ばれます。 期限切れのメッセージは、配信不能キューと呼ばれる特別なキューに送信されます。 配信不能キューの場所は、保証の内容に基づいて、`customDeadLetterQueue` 属性を使用して設定されるか、適切な既定値に設定されます。| +|UseActiveDirectory|キューのアドレスを Active Directory を使用して変換する必要があるかどうかを指定するブール値。

MSMQ キューのアドレスは、パス名または直接形式名で構成できます。 直接形式名を使用する場合、MSMQ は、DNS、NetBIOS、または IP を使用してコンピューター名を解決します。 パス名を使用する場合、MSMQ は、Active Directory を使用してコンピューター名を解決します。 既定では、Windows Communication Framework \(WCF\) キューに置かれているトランスポートは、メッセージ キューの URI を直接形式名に変換します。 この属性を `true` に設定すると、キューに置かれているトランスポートが DNS、NetBIOS、または IP ではなく Active Directory を使用してコンピューター名を解決する必要があることを、アプリケーションで指定できます。| +|useMsmqTracing|このバインディングにより処理されるメッセージをトレースするかどうかを指定するブール値です。 既定値は、`false` です。

トレースが有効な場合、メッセージ キュー コンピューターでメッセージが送受信されるたびに、レポート メッセージが作成され、レポート キューに送信されます。| +|useSourceJournal|このバインディングにより処理されるメッセージのコピーをソース ジャーナル キューに保存するかどうかを指定するブール値。 既定値は、`false` です。

キューに置かれたアプリケーションでは、コンピューターの発信キューから送信されたメッセージの記録を残す場合は、メッセージをジャーナル キューにコピーできます。 メッセージが発信キューから送信され、送信先のコンピューターで受信されたという応答を受け取ると、メッセージのコピーが送信元のコンピューターのシステム ジャーナル キューに保持されます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/msmqtransportsecurity.md)|このバインディングのトランスポート セキュリティ設定を指定します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + `msmqTransport` 要素は、ユーザーがキューに置かれている通信チャネルのプロパティを設定できるようにします。 キューに置かれている通信チャネルは、そのトランスポートにメッセージ キューを使用します。 + + このバインディング要素は、メッセージ キューの標準バインディング \(`netMsmqBinding`\) で使用される既定のバインディング要素です。 + +## 参照 + + + + + [WCF のキュー](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/msmqtransportsecurity.md b/docs/framework/configure-apps/file-schema/wcf/msmqtransportsecurity.md new file mode 100644 index 00000000000..cdd61e09dac --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/msmqtransportsecurity.md @@ -0,0 +1,70 @@ +--- +title: "<msmqTransportSecurity> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 092e911b-ab1b-4069-a26e-6134c3299e06 +caps.latest.revision: 10 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 10 +--- +# <msmqTransportSecurity> +カスタム バインディングの MSMQ トランスポート セキュリティ設定を指定します。 + +## 構文 + +``` + + + msmqAuthenticationMode="None/Windows/Certificate" + msmqEncryptionAlgorithm="RC4Stream/AES" + msmqProtectionLevel="None/Sign/EncryptAndSign" + msmqSecureHashAlgorithm="MD5/SHA1/SHA256/SHA512" /> + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`msmqAuthenticationMode`|MSMQ トランスポートによるメッセージの認証方法を指定します。 これが `None` に設定されている場合、`msmqProtectionLevel` 属性の値も `None` に設定する必要があります。

以下の値が有効です。

- None: 認証は行われません。
- Windows: 認証機構により Active Directory が使用され、メッセージに関連付けられた SID の X.509 証明書が取得されます。 次に、これを使用してキューの ACL がチェックされ、ユーザーがキューに書き込む権限を持っていることが確認されます。
- Certificate: チャネルは、証明書ストアから証明書を取得します。

既定値は Windows です。 この属性は 型です。| +|`msmqEncryptionAlgorithm`|メッセージ キュー マネージャー間でメッセージを転送するときに、ネットワーク上でメッセージの暗号化に使用されるアルゴリズムを指定します。 以下の値が有効です。

- RC4Stream
- AES

既定値は RC4Stream です。 この属性は 型です。| +|`msmqProtectionLevel`|MSMQ トランスポートのレベルでメッセージをセキュリティで保護する方法を指定します。 暗号化を行うとメッセージの整合性が確保されますが、EncryptAndSign を使用するとメッセージの整合性と否認防止の両方が確保されます。つまり、メッセージは本当にその送信者から送信されていることになり、記載されている送信者が実際の送信者になります。 以下の値が有効です。

- None: 保護されません。
- Sign: メッセージは署名されます。
- EncryptAndSign: メッセージは暗号化および署名されます。

既定値は Sign です。 この属性は 型です。| +|`msmqSecureHashAlgorithm`|署名の一部としてダイジェストの計算に使用されるアルゴリズムを指定します。 以下の値が有効です。

- MD5
- SHA1
- SHA256
- SHA512

既定値は SHA1 です。 この属性は 型です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/msmqintegration.md)|Message Queuing \(MSMQ\) の送信側または受信側とのやり取りに必要な設定を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/msmqtransport.md)|ネイティブ MSMQ プロトコルを使用する Windows Communication Foundation \(WCF\) サービスのキュー通信プロパティを指定します。| + +## 解説 + トランスポート セキュリティの詳細については、「[トランスポート セキュリティ](../../../../../docs/framework/wcf/feature-details/transport-security.md)」を参照してください。 + +## 参照 + + + + [WCF のキュー](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [トランスポート セキュリティ](../../../../../docs/framework/wcf/feature-details/transport-security.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/mtommessageencoding.md b/docs/framework/configure-apps/file-schema/wcf/mtommessageencoding.md new file mode 100644 index 00000000000..2a0922eb5cb --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/mtommessageencoding.md @@ -0,0 +1,86 @@ +--- +title: "<mtomMessageEncoding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 7865d171-cd1e-430a-8421-39cc13541d1b +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <mtomMessageEncoding> +SOAP Message Transmission Optimization Mechanism \(MTOM\) ベースのメッセージに使用されるエンコーディングおよびメッセージ バージョン管理を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|maxBufferSize|使用できるバッファーの最大サイズを指定する整数。| +|maxReadPoolSize|新しいリーダーを割り当てずに同時に読み取り可能なメッセージの数を指定する整数です。 プール サイズを大きくすると、システムでは、比較的大きい作業セットで、アクティビティの急増に対する許容度が高まります。 既定値は 64 です。| +|maxWritePoolSize|新しいライターを割り当てずに同時に送信可能なメッセージの数を指定する整数です。 プール サイズを大きくすると、システムでは、比較的大きい作業セットで、アクティビティの急増に対する許容度が高まります。 既定値は 16 です。| +|messageVersion|バインディングを使用して送信されたメッセージの SOAP バージョンを指定します。 有効な値は、次のとおりです。

- Soap11Addressing1
- Soap12Addressing10

既定値は Soap12Addressing10 です。 この属性は 型です。| +|writeEncoding|バインドでメッセージの発行に使用される文字セット エンコーディングを指定します。 有効な値は、次のとおりです。

- UnicodeFffeTextEncoding: Unicode BigEndian エンコーディング
- Utf16TextEncoding: Unicode エンコーディング
- Utf8TextEncoding: 8 ビットのエンコーディング

既定値は Utf8TextEncoding です。 この属性は 型です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + エンコーディングは、メッセージをバイト シーケンスに変換するプロセスです。 デコードは、その逆のプロセスです。 WCF \(Windows Communication Foundation\) には、SOAP メッセージのエンコードとして、テキスト、バイナリ、および MTOM \(Message Transmission Optimization Mechanism\) の 3 種類があります。 + + `MtomMessageEncoding` 要素は、MTOM \(Message Transmission Optimization Mechanism\) エンコーディングを使用するメッセージの文字エンコーディング、メッセージのバージョン管理、およびその他の設定を指定します。 MTOM は、WCF メッセージでバイナリ データを転送するための効率的なテクノロジです。 MTOM エンコーダーは、効率と相互運用性のバランスをとろうとします。 MTOM エンコーディングは、ほとんどの XML をテキスト形式で転送しますが、大きいサイズのバイナリ データ ブロックは、base64 でエンコードされた形式に変換せずに、そのまま転送することによって最適化します。 + +## 使用例 + +``` + +``` + +## 参照 + + + + + [メッセージ エンコーディング](../../../../../docs/framework/configure-apps/file-schema/wcf/message-encoding.md) + [メッセージ エンコーダーを選択する](../../../../../docs/framework/wcf/feature-details/choosing-a-message-encoder.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/namedpipetransport.md b/docs/framework/configure-apps/file-schema/wcf/namedpipetransport.md new file mode 100644 index 00000000000..bd14d0cdd5c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/namedpipetransport.md @@ -0,0 +1,70 @@ +--- +title: "<namedPipeTransport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 9fc3f42f-43e2-4ab1-8bc7-3c95a9220df1 +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <namedPipeTransport> +チャネルがカスタム バインディングに含まれているときに名前付きパイプを使用してメッセージを転送するトランスポートを定義します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\ の \](../../../../../docs/framework/configure-apps/file-schema/wcf/connectionpoolsettings.md)|名前付きパイプ バインディングの追加の接続プール設定を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + このトランスポートは、"net.pipe:\/\/hostname\/path" の形式の URI を使用します。 他の URI コンポーネントは省略可能です。 + + `namedPipeTransport` 要素は、名前付きパイプ トランスポート プロトコルを実装するカスタム バインディングを作成する場合の開始点となります。 このトランスポートは、コンピューター上での WCF \(Windows Communication Foundation\) 間の通信に使用されます。 + +## 参照 + + + + + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/namespacetable.md b/docs/framework/configure-apps/file-schema/wcf/namespacetable.md new file mode 100644 index 00000000000..9614ea51f5b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/namespacetable.md @@ -0,0 +1,57 @@ +--- +title: "<namespaceTable> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 64801766-01b7-4c65-9ce6-70ad5af67689 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <namespaceTable> +名前空間とプレフィックスのマッピングを含む要素セットを定義する構成セクションを表します。これは、ルーティングの XPath フィルターで使用されます。 + +## 構文 + +```vb + + + +   + + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filter.md)|XPath 式に使用される名前空間とプレフィックスのマッピングを定義します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|受信メッセージの評価に使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の種類を定義するルーティング フィルター セットと、フィルターが一致するときにメッセージを送信するターゲット エンドポイントを指定するルーティング テーブルを定義する構成セクションを表します。| + +## 参照 + [System.ServiceModel.Routing.Configuration.NamespaceElementCollection](assetId:///System.ServiceModel.Routing.Configuration.NamespaceElementCollection?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/net-pipe.md b/docs/framework/configure-apps/file-schema/wcf/net-pipe.md new file mode 100644 index 00000000000..fa44fa050ac --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/net-pipe.md @@ -0,0 +1,75 @@ +--- +title: "<net.pipe> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6a0f0318-f8f6-466c-9fae-199d7274a82e +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# <net.pipe> +名前付きパイプ接続の有効期間を管理し、名前付きパイプを介して到着するアクティベーション要求を処理する名前付きパイプ アクティベーション サービスの構成設定を指定します。 + +## 構文 + +``` + + + + + + // LocalSystem account + + // LocalService account + + // Administrators account + + // Network Service account + + // IIS_IUSRS account (Vista only) + + + + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`maxPendingAccepts`|整数は、共有サービスの待機エンドポイントで同時に受け入れる未処理のスレッドの最大数を示しています。 既定値は 2 です。| +|`maxPendingConnections`|ディスパッチを待機できる最大接続数を指定する整数。 既定値は 100 です。| +|`receiveTimeout`|フレーム データを読み取り、基礎となる接続から接続ディスパッチを実行するタイムアウトを指定する です。 既定値は "00:00:10" です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/allowaccounts.md)|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] をホストするプロセスのユーザー アカウントを指定する `securityIdentifier` 属性が含まれており、共有サービスへの接続アクセス権が付与される構成要素のコレクションです。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel-activation.md)|リスナー プロセス SMSvcHost.exe の設定が含まれています。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/net-tcp.md b/docs/framework/configure-apps/file-schema/wcf/net-tcp.md new file mode 100644 index 00000000000..5d1983b6c34 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/net-tcp.md @@ -0,0 +1,84 @@ +--- +title: "<net.tcp> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8bc2f2be-11c1-4bab-9018-1d21ae568d94 +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# <net.tcp> +複数のプロセスが同じ TCP ポートを共有できる NET.TCP ポート共有サービスの構成設定を指定します。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`listenBacklog`|共有接続から受け入れられたが、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスにはまだディスパッチされていない未処理の接続の最大数を指定する整数です。 既定値は 10 です。| +|`maxPendingAccepts`|整数は、共有サービスの待機エンドポイントで同時に受け入れる未処理のスレッドの最大数を示しています。 既定値は 2 です。| +|`MaxPendingConnections`|アプリケーションによる受け入れをリスナーで待機できる最大接続数。 このクォータ値を超過すると、新規の受信接続は受け入れられるのを待機せずに切断されます。 メッセージ セキュリティのような接続機能では、クライアントは複数の接続を開くことがあります。 このクォータ値を設定する場合、サービス管理者はこのような追加の接続も考慮する必要があります。 既定値は 10 です。| +|`receiveTimeout`|フレーム データを読み取り、基礎となる接続から接続ディスパッチを実行するタイムアウトを指定する です。 既定値は "00:00:10" です。| +|`teredoEnabled`|ポート共有サービスが Microsoft Teredo サービスを使用して、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスの代わりに TCP ポートをリッスンするかどうかを示すブール値。 既定値は、`false` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/allowaccounts.md)|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] をホストするプロセスのユーザー アカウントを指定する `securityIdentifier` 属性が含まれており、共有サービスへの接続アクセス権が付与される構成要素のコレクションです。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel-activation.md)|リスナー プロセス SMSvcHost.exe の設定が含まれています。| + +## 解説 + ポート共有の詳細については、「[Net.TCP Port Sharing](http://msdn.microsoft.com/ja-jp/f13692ee-a179-4439-ae72-50db9534eded)」を参照してください。 ポート共有サービスを構成する方法については、「[Configuring the Net.TCP Port Sharing Service](http://msdn.microsoft.com/ja-jp/b6dd81fa-68b7-4e1b-868e-88e5901b7ea0)」を参照してください。 + +## 参照 + + [Net.TCP Port Sharing](http://msdn.microsoft.com/ja-jp/f13692ee-a179-4439-ae72-50db9534eded) + [Configuring the Net.TCP Port Sharing Service](http://msdn.microsoft.com/ja-jp/b6dd81fa-68b7-4e1b-868e-88e5901b7ea0) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/nethttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/nethttpbinding.md new file mode 100644 index 00000000000..909ee9e7c76 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/nethttpbinding.md @@ -0,0 +1,198 @@ +--- +title: "<netHttpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b0d81ca0-87c5-4090-8baa-e390fd3656d2 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <netHttpBinding> +HTTP を介して通信できるエンド ポイントを構成および公開するために [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスが使用できるバインディングを表します。 双方向コントラクトで使用すると、Web ソケットが使用されます。それ以外の場合は、HTTP が使用されます。 + +## 構文 + +```vb + +``` + +```csharp + + + + + +
+ + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`allowCookies`|クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定するブール値です。 既定値は、`false` です。

クッキーを使用する ASMX Web サービスと対話する場合にこのプロパティを使用できます。 この方法で、サーバーから返されるクッキーを、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。| +|`bypassProxyOnLocal`|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。

インターネット リソースは、ローカル アドレスを持つ場合ローカルです。 ローカル アドレスは、同じコンピューター、ローカル LAN、またはイントラネット上にあり、"http:\/\/webserver\/"、"http:\/\/localhost\/" などのピリオド \(.\) を含まない URI により構文的に識別されるアドレスです。

この属性の設定は、BasicHttpBinding で構成されたエンドポイントがローカル リソースへのアクセス時にプロキシ サーバーを使用するかどうかを示します。 この属性が `true` の場合、ローカル インターネット リソースへの要求はプロキシ サーバーを使用しません。 この属性を `true` に設定した場合で、同じコンピューター上のサービスと対話するクライアントがプロキシを経由するときは、\(localhost ではなく\) ホスト名を使用します。

この属性が `false` の場合、すべてのインターネット要求はプロキシ サーバー経由で行われます。| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`hostnameComparisonMode`|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|`maxBufferPoolSize`|チャネルからメッセージを受け取るメッセージ バッファーのマネージャーが使用するために割り当てられる、最大メモリ量を指定する整数値。 既定値は 524288 \(0x80000\) バイトです。

バッファー マネージャーは、バッファー プールを使用することで、バッファーの使用コストを最小化します。 バッファーは、チャネルから出てくるメッセージをサービスが処理するときに必要です。 メッセージの読み込み処理に十分なメモリがバッファー プールにない場合、バッファー マネージャーは、CLR ヒープから追加のメモリを割り当てる必要があります。これにより、ガベージ コレクションのオーバーヘッドが増加します。 CLR ガベージ ヒープから多大な割り当てが行われることは、バッファー プール サイズが小さすぎること、およびこの属性で指定される制限を緩めて割り当てを増やすとパフォーマンスが向上する可能性があることを示します。| +|`maxBufferSize`|このバインディングで構成されるエンドポイントのメッセージが処理されるときのメッセージを格納するバッファーの最大サイズを指定する整数値 \(バイト単位\)。 既定値は 65,536 バイトです。| +|`maxReceivedMessageSize`|このバインディングで構成されるチャネルが受信可能なメッセージの最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で定義する正の整数。 受信側のメッセージが大きすぎると、送信側は SOAP エラーを受け取ります。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65,536 バイトです。| +|`messageEncoding`|SOAP メッセージのエンコードに使用されるエンコーダーを定義します。 以下の値が有効です。

- Text: テキスト メッセージのエンコーダーを使用します。
- Mtom: Message Transmission Organization Mechanism 1.0 \(MTOM\) エンコーダーを使用します。

既定値は Text です。 この属性は 型です。| +|`name`|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。 また、この名前は、同じ種類のバインディング間で一意です。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`namespace`|バインディングの XML 名前空間を指定します。 既定値は "http:\/\/tempuri.org\/Bindings" です。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`proxyAddress`|HTTP プロキシのアドレスを格納する URI。 `useSystemWebProxy` が `true` に設定されている場合、この設定は `null` である必要があります。 既定値は、`null` です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`textEncoding`|バインディングでメッセージの発行に使用される文字セット エンコーディングを設定します。 以下の値が有効です。

- BigEndianUnicode: Unicode BigEndian エンコーディング。
- Unicode: 16 ビット エンコーディング。
- UTF8: 8 ビット エンコーディング。

既定値は UTF8 です。 この属性は 型です。| +|`transferMode`|要求または応答に対してメッセージがバッファーされるか、ストリーム配信されるかを指定する有効な 値。| +|`useDefaultWebProxy`|使用できる場合にシステムの自動設定 HTTP プロキシを使用するかどうかを指定するブール値。 既定値は、`true` です。| +||| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + NetHttpBinding では、メッセージを送信するために、HTTP をトランスポートとして使用します。 双方向コントラクトで使用すると、Web ソケットが使用されます。 要求\/応答コントラクト NetHttpBinding と使用する場合、バイナリ エンコーダーとの BasicHttpBinding のように動作します。 + + 既定ではセキュリティは無効になります。ただし、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md)`None 子要素のモード属性に` 以外の値を設定してセキュリティを追加できます。 サービスは、"Text" メッセージ エンコードおよび UTF\-8 テキスト エンコードを既定で使用します。 + +## 使用例 + 第 1 世代と第 2 世代の Web サービスで HTTP 通信と最大限の相互運用性を実現する、 の使用例を次に示します。 バインディングは、クライアントとサービスの構成ファイルに指定されます。 バインディングの種類は、`` 要素の `binding` 属性を使用して指定します。 基本的なバインディングを構成してその設定の一部を変更する場合は、バインディング構成を定義する必要があります。 エンドポイントは、`` 要素の `bindingConfiguration` 属性を使用して、名前でバインディング構成を参照する必要があります。次のサービスの構成コードを参照してください。 + +```xml + + + + + + + + + + + + + + +``` + +## 使用例 + [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 前の例の機能を実行するには、エンドポイント アドレスの bindingConfiguration とバインディングの名前を削除します。 + +```xml + + + + + + + + + + + + + + +``` + + 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +## 参照 + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/nethttpsbinding.md b/docs/framework/configure-apps/file-schema/wcf/nethttpsbinding.md new file mode 100644 index 00000000000..cc102532104 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/nethttpsbinding.md @@ -0,0 +1,198 @@ +--- +title: "<netHttpsBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ff122116-6042-4792-9f21-275b4f97a105 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <netHttpsBinding> +HTTPS を介して通信できるエンド ポイントを構成および公開するために [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスが使用できるバインディングを表します。 双方向コントラクトで使用すると、Web ソケットが使用されます。それ以外の場合は、HTTPS が使用されます。 + +## 構文 + +```vb + +``` + +```csharp + + + + + +
+ + +
+``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`allowCookies`|クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定するブール値です。 既定値は、`false` です。

クッキーを使用する ASMX Web サービスと対話する場合にこのプロパティを使用できます。 この方法で、サーバーから返されるクッキーを、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。| +|`bypassProxyOnLocal`|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。

インターネット リソースは、ローカル アドレスを持つ場合ローカルです。 ローカル アドレスは、同じコンピューター、ローカル LAN、またはイントラネット上にあり、"http:\/\/webserver\/"、"http:\/\/localhost\/" などのピリオド \(.\) を含まない URI により構文的に識別されるアドレスです。

この属性の設定は、BasicHttpBinding で構成されたエンドポイントがローカル リソースへのアクセス時にプロキシ サーバーを使用するかどうかを示します。 この属性が `true` の場合、ローカル インターネット リソースへの要求はプロキシ サーバーを使用しません。 この属性を `true` に設定した場合で、同じコンピューター上のサービスと対話するクライアントがプロキシを経由するときは、\(localhost ではなく\) ホスト名を使用します。

この属性が `false` の場合、すべてのインターネット要求はプロキシ サーバー経由で行われます。| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`hostnameComparisonMode`|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|`maxBufferPoolSize`|チャネルからメッセージを受け取るメッセージ バッファーのマネージャーが使用するために割り当てられる、最大メモリ量を指定する整数値。 既定値は 524288 \(0x80000\) バイトです。

バッファー マネージャーは、バッファー プールを使用することで、バッファーの使用コストを最小化します。 バッファーは、チャネルから出てくるメッセージをサービスが処理するときに必要です。 メッセージの読み込み処理に十分なメモリがバッファー プールにない場合、バッファー マネージャーは、CLR ヒープから追加のメモリを割り当てる必要があります。これにより、ガベージ コレクションのオーバーヘッドが増加します。 CLR ガベージ ヒープから多大な割り当てが行われることは、バッファー プール サイズが小さすぎること、およびこの属性で指定される制限を緩めて割り当てを増やすとパフォーマンスが向上する可能性があることを示します。| +|`maxBufferSize`|このバインディングで構成されるエンドポイントのメッセージが処理されるときのメッセージを格納するバッファーの最大サイズを指定する整数値 \(バイト単位\)。 既定値は 65,536 バイトです。| +|`maxReceivedMessageSize`|このバインディングで構成されるチャネルが受信可能なメッセージの最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で定義する正の整数。 受信側のメッセージが大きすぎると、送信側は SOAP エラーを受け取ります。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65,536 バイトです。| +|`messageEncoding`|SOAP メッセージのエンコードに使用されるエンコーダーを定義します。 以下の値が有効です。

- Text: テキスト メッセージのエンコーダーを使用します。
- Mtom: Message Transmission Organization Mechanism 1.0 \(MTOM\) エンコーダーを使用します。

既定値は Text です。 この属性は 型です。| +|`name`|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。 また、この名前は、同じ種類のバインディング間で一意です。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`namespace`|バインディングの XML 名前空間を指定します。 既定値は "http:\/\/tempuri.org\/Bindings" です。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`proxyAddress`|HTTP プロキシのアドレスを格納する URI。 `useSystemWebProxy` が `true` に設定されている場合、この設定は `null` である必要があります。 既定値は、`null` です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`textEncoding`|バインディングでメッセージの発行に使用される文字セット エンコーディングを設定します。 以下の値が有効です。

- BigEndianUnicode: Unicode BigEndian エンコーディング。
- Unicode: 16 ビット エンコーディング。
- UTF8: 8 ビット エンコーディング。

既定値は UTF8 です。 この属性は 型です。| +|`transferMode`|要求または応答に対してメッセージがバッファーされるか、ストリーム配信されるかを指定する有効な 値。| +|`useDefaultWebProxy`|使用できる場合にシステムの自動設定 HTTP プロキシを使用するかどうかを指定するブール値。 既定値は、`true` です。| +||| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + NetHttpsBinding では、メッセージを送信するために、HTTPS をトランスポートとして使用します。 双方向コントラクトで使用すると、Web ソケットが使用されます。 要求\/応答コントラクト NetHttpsBinding と使用する場合、バイナリ エンコーダーとの BasicHttpsBinding のように動作します。 + + 既定ではセキュリティは無効になります。ただし、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md)`None 子要素のモード属性に` 以外の値を設定してセキュリティを追加できます。 サービスは、"Text" メッセージ エンコードおよび UTF\-8 テキスト エンコードを既定で使用します。 + +## 使用例 + 第 1 世代と第 2 世代の Web サービスで HTTPS 通信と最大限の相互運用性を実現する、 の使用例を次に示します。 バインディングは、クライアントとサービスの構成ファイルに指定されます。 バインディングの種類は、`` 要素の `binding` 属性を使用して指定します。 基本的なバインディングを構成してその設定の一部を変更する場合は、バインディング構成を定義する必要があります。 エンドポイントは、`` 要素の `bindingConfiguration` 属性を使用して、名前でバインディング構成を参照する必要があります。次のサービスの構成コードを参照してください。 + +```xml + + + + + + + + + + + + + + +``` + +## 使用例 + [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 前の例の機能を実行するには、エンドポイント アドレスの bindingConfiguration とバインディングの名前を削除します。 + +```xml + + + + + + + + + + + + + + +``` + + 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +## 参照 + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/netmsmqbinding.md b/docs/framework/configure-apps/file-schema/wcf/netmsmqbinding.md new file mode 100644 index 00000000000..9556eed5121 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/netmsmqbinding.md @@ -0,0 +1,157 @@ +--- +title: "<netMsmqBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: a68b44d7-7799-43a3-9e63-f07c782810a6 +caps.latest.revision: 35 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 35 +--- +# <netMsmqBinding> +複数コンピューターの通信に適しているキューに置かれたバインディングを定義します。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`customDeadLetterQueue`|アプリケーションごとの配信不能キューの場所が含まれている URI です。ここには、期限切れのメッセージや、転送または配信に失敗したメッセージが配置されます。

配信不能キューは、送信元アプリケーションのキュー マネージャーにある、配信に失敗した期限切れメッセージのキューです。

によって指定される URI は、net.msmq スキームを使用する必要があります。| +|`deadLetterQueue`|使用する配信不能キューがある場合にその種類を指定する 値。

配信不能キューは、アプリケーションへの配信に失敗したメッセージが転送される場所です。

`exactlyOnce` 保証が必要なメッセージ \(つまり、`exactlyOnce` 属性が `true` に設定される\) の場合、この属性は、既定で MSMQ のトランザクション システム全体の配信不能キューになります。

保証が必要ないメッセージの場合、この属性の既定値は `null` です。| +|`durable`|メッセージがキューで非揮発性か揮発性かを示すブール値です。 非揮発性メッセージは、キュー マネージャーがクラッシュしても残り、揮発性メッセージは失われます。 アプリケーションで待ち時間の短縮が要求され、場合によってはメッセージが失われてもかまわない場合は、揮発性メッセージが適しています。 `exactlyOnce` 属性が `true` に設定されている場合、メッセージは永続的にする必要があります。 既定値は、`true` です。| +|`exactlyOnce`|このバインディングで処理される各メッセージが 1 回だけ受信されるかどうかを示すブール値です。 その後、送信側に配信エラーが通知されます。 `durable` が `false` の場合、この属性は無視されて、配信が保証されずにメッセージが転送されます。 既定値は、`true` です。 詳細については、「」を参照してください。| +|`maxBufferPoolSize`|このバインディングに使用するバッファー プール サイズの上限を指定する整数。 既定値は 8 です。| +|`maxReceivedMessageSize`|このバインディングにより処理される最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で定義する正の整数です。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。 このメッセージ サイズの制限は、サービス拒否 \(DoS\) 攻撃への露出を制限するためのものです。| +|`maxRetryCycles`|有害メッセージ検出機能により使用される再試行サイクルの回数を示す整数です。 すべてのサイクルの配信試行にすべて失敗すると、メッセージは有害メッセージになります。 既定値は 3 です。 詳細については、「」を参照してください。| +|`name`|必須の属性です。 バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`QueueTransferProtocol`|このバインディングが使用するキューに置かれた通信チャネルのトランスポートを指定する有効な 値。 MSMQ は、SOAP リライアブル メッセージ プロトコルを使用する場合は Active Directory アドレス指定をサポートしません。 したがって、`u``seActiveDirectory` 属性が `true` に設定されている場合は、この属性を `Srmp` or `Srmps` に設定しないでください。| +|`receiveErrorHandling`|有害メッセージおよびディスパッチ不能メッセージの処理方法を指定する 値。| +|`receiveRetryCount`|キュー マネージャーがメッセージを再試行キューに転送する前にメッセージ送信を試行する最大回数を指定する整数。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`retryCycleDelay`|すぐに配信できなかったメッセージを配信しようとするときの、再試行サイクルの時間遅延を指定する TimeSpan 値です。 実際の待機時間はさらに長くなる場合があるため、この値で定義されるのは最小待機時間だけです。 既定値は、00:10:00 です。 詳細については、「」を参照してください。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`timeToLive`|メッセージの期限が切れて、配信不能キューに入れられるまでのメッセージの有効期間を指定する TimeSpan 値です。 既定値は 1.00:00:00 です。

この属性を設定すると、タイムリーなメッセージが受信側アプリケーションで処理される前に古くなることがなくなります。 キュー内のメッセージのうち、指定された期間内に受信アプリケーションで処理されなかったメッセージは、期限切れと呼ばれます。 期限切れのメッセージは、配信不能キューと呼ばれる特別なキューに送信されます。 配信不能キューの場所は、保証の内容に基づいて、`DeadLetterQueue` 属性を使用して設定されるか、適切な既定値に設定されます。| +|`usingActiveDirectory`|キューのアドレスを Active Directory を使用して変換する必要があるかどうかを指定するブール値。

MSMQ キューのアドレスは、パス名または直接形式名で構成できます。 直接形式名を使用する場合、MSMQ は、DNS、NetBIOS、または IP を使用してコンピューター名を解決します。 パス名を使用する場合、MSMQ は、Active Directory を使用してコンピューター名を解決します。

既定では、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] キューに置かれているトランスポートは、メッセージ キューの URI を直接形式名に変換します。 `UseActiveDirectory` プロパティを true に設定すると、キューに置かれているトランスポートが DNS、NetBIOS、または IP ではなく Active Directory を使用してコンピューター名を解決する必要があることを、アプリケーションで指定できます。| +|`useMsmqTracing`|このバインディングにより処理されるメッセージをトレースするかどうかを指定するブール値です。 既定値は、`false` です。 トレースが有効な場合、メッセージ キュー コンピューターでメッセージが送受信されるたびに、レポート メッセージが作成され、レポート キューに送信されます。| +|`useSourceJournal`|このバインディングにより処理されるメッセージのコピーをソース ジャーナルに保存するかどうかを指定するブール値です。 既定値は、`false` です。

キューに置かれたアプリケーションでは、コンピューターの発信キューから送信されたメッセージの記録を残す場合は、メッセージをジャーナル キューにコピーできます。 メッセージが発信キューから送信され、送信先のコンピューターで受信されたという応答を受け取ると、メッセージのコピーが送信元のコンピューターのシステム ジャーナル キューに保持されます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-netmsmqbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + `netMsmqBinding` バインディングは、Microsoft Message Queuing \(MSMQ\) をトランスポートとして使用したキューのサポートを提供し、疎結合アプリケーション、失敗の切り分け、読み込みの均一化、および切断操作のサポートを有効にします。 これらの機能の詳細については、「[WCF のキュー](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md)」を参照してください。 + +## 使用例 + +``` + + + + + + + + + + + + +``` + +## 参照 + + + [\](../../../../../docs/framework/misc/binding.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [WCF のキュー](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/netnamedpipebinding.md b/docs/framework/configure-apps/file-schema/wcf/netnamedpipebinding.md new file mode 100644 index 00000000000..c47412112de --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/netnamedpipebinding.md @@ -0,0 +1,164 @@ +--- +title: "<netNamedPipeBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 00a8580b-face-47a4-838d-b9fed48e72df +caps.latest.revision: 29 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 29 +--- +# <netNamedPipeBinding> +コンピューター上のプロセス間通信に適した、セキュリティで保護された信頼できる最適バインディングを定義します。 既定では、信頼のための WS\-ReliableMessaging、転送セキュリティ用トランスポート セキュリティ、メッセージ配信用名前付きパイプ、およびバイナリ メッセージ エンコーディングを持つランタイム通信スタックを生成します。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|closeTimeout|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|hostnameComparisonMode|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|maxBufferPoolSize|このバインディングに使用するバッファー プール サイズの上限を指定する整数。 既定は 524,288 バイト \(512 \* 1024\) です。 Windows Communication Foundation \(WCF\) では、多くの部分でバッファーを使用します。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxBufferSize|メッセージをメモリに保存するのに使用するバッファーの最大サイズをバイト単位で指定する正の整数。 バッファーがいっぱいになると、超過データは、バッファーに空きが出るまで、基になるソケットに残されます。 この値が `maxReceivedMessageSize` 属性の値を下回らないようにしてください。 既定値は 65536 です。 詳細については、「」を参照してください。| +|maxConnections|サービスが作成し受け付ける発信\/着信接続数の上限を指定する整数。 この属性により指定された別個の制限に対して、着信接続および発信接続がカウントされます。

制限を超える着信接続は、制限内に空きができるまでキューに置かれます。

制限を超える発信接続は、制限内に空きができるまでキューに置かれます。

既定値は 10 です。| +|maxReceivedMessageSize|このバインディングで構成されるチャネルで受信可能な最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で指定する正の整数。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|name|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|openTimeout|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|receiveTimeout|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|sendTimeout|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|transactionFlow|バインディングが WS\-Transactions のフローをサポートするかどうかを指定するブール値です。 既定値は、`false` です。| +|transactionProtocol|このバインディングで使用されるトランザクション プロトコルを指定します。 有効な値は、次のとおりです。

- OleTransactions
- WS\-AtomicTransactionOctober2004

既定値は OleTransactions です。 この属性は 型です。| +|transferMode|メッセージが要求や応答をバッファーするか、ストリーミングするかを指定する 値です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-netnamedpipebinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + `NetNamedPipeBinding` は、トランスポート セキュリティ、メッセージ配信用の名前付きパイプ、およびバイナリ メッセージ エンコーディングを使用するランタイム通信スタックを既定で生成します。 このバインディングは、コンピューター間通信に適した、WCF \(Windows Communication Foundation\) システム標準の選択肢です。 トランザクションもサポートします。 + + `NetNamedPipeBinding` の既定の構成は、`NetTcpBinding` によって提供される構成に似ていますが、それよりも単純です。この理由は、WCF の実装はコンピューター間での使用のみを目的としているので、公開される機能が少ないためです。 最も顕著な違いは、`securityMode` 設定に `None` オプションと `Transport` オプションしか用意されていないことです。 SOAP セキュリティ サポートは、オプションに含まれません。 このセキュリティ動作は、省略可能な `securityMode` 属性を使用して構成できます。 + +## 使用例 + 次の例では、同じコンピューター上でのプロセス間通信を実現する NetNamedPipeBinding バインディングを示します。 名前付きパイプは、異なるコンピューター間では動作しません。 + + バインディングは、クライアントとサービスの構成ファイルに指定されます。 バインディングの種類は、`` 要素の `binding` 属性に指定します。 netNamedPipeBinding バインディングを構成してその設定の一部を変更する場合は、バインディング構成を定義する必要があります。 エンドポイントは、バインディング構成を `bindingConfiguration` 属性を使用して名前で参照します。 この例では、バインディングの構成の名前は Binding1 です。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [\](../../../../../docs/framework/misc/binding.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/netpeertcpbinding.md b/docs/framework/configure-apps/file-schema/wcf/netpeertcpbinding.md new file mode 100644 index 00000000000..8e619352f08 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/netpeertcpbinding.md @@ -0,0 +1,116 @@ +--- +title: "<netPeerTcpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "netPeerBinding 要素" +ms.assetid: 2dd77ada-a176-47c7-a740-900b279f1aad +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# <netPeerTcpBinding> +ピア チャネル固有の TCP メッセージングのバインディングを定義します。 + +## 構文 + +``` + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|closeTimeout|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|listenIPAddress|ピア ノードが TCP メッセージをリッスンする IP アドレスを指定する文字列です。 既定値は、`null` です。| +|maxBufferPoolSize|このバインディングに使用するバッファー プール サイズの上限を指定する整数。 既定は 524,288 バイト \(512 \* 1024\) です。 Windows Communication Foundation \(WCF\) では、多くの部分でバッファーを使用します。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxReceivedMessageSize|このバインディングで構成されるチャネルで受信可能な最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で指定する正の整数。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|name|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|openTimeout|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|ポート|このバインディングがピア チャネルの TCP メッセージを処理するネットワーク インターフェイス ポートを指定する整数です。 この値の有効値の範囲は です。 既定値は 0 です。| +|receiveTimeout|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|sendTimeout|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/resolver.md)|ピア メッシュ ID を解決してピア メッシュ内のノードのエンドポイント ID アドレスを取得するために、このバインディングによって使用されるピア リゾルバーを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-netpeerbinding.md)|メッセージのセキュリティ設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + このバインディングは、TCP を介したピア トランスポートを使用するピア ツー ピア アプリケーションまたはマルチパーティ アプリケーションの作成をサポートします。 各ピア ノードは、この種類のバイディングを使用して定義された複数のピア チャネルをホストできます。 + +## 使用例 + 次の例では、ピア チャネルを使用してマルチパーティ通信を実現する、NetPeerTcpBinding バインディングを使用する方法を示します。 このバインディングの詳細な使用シナリオについては、「[Net Peer TCP](http://msdn.microsoft.com/ja-jp/31f4db66-edb2-40a6-b92a-14098e92acae)」を参照してください。 + +``` + + + + + + + + + + + + + + +``` + +## 参照 + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) + [Net Peer TCP](http://msdn.microsoft.com/ja-jp/31f4db66-edb2-40a6-b92a-14098e92acae) + [ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md b/docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md new file mode 100644 index 00000000000..6d694e4698c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md @@ -0,0 +1,164 @@ +--- +title: "<netTcpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "netTcpBinding 要素" +ms.assetid: 5c5104a7-8754-4335-8233-46a45322503e +caps.latest.revision: 33 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 33 +--- +# <netTcpBinding> +複数コンピューターの通信に適し、セキュリティで保護されて信頼できる最適化されたバインディングを指定します。 既定では、メッセージ セキュリティと認証用 Windows セキュリティ、メッセージ配信用 TCP、およびバイナリ メッセージ エンコーディングを持つランタイム通信スタックを生成します。 + +## 構文 + +``` + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|closeTimeout|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|hostnameComparisonMode|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|listenBacklog|リスナーで受け入れを待機するチャネルの最大数を指定する正の整数。 この制限を超えた接続は、制限内に空きができるまでキューに置かれます。 `connectionTimeout` 属性は、クライアントが接続を待つ時間を制限します。この時間が経過すると接続の例外をスローします。 既定値は 10 です。| +|maxBufferPoolSize|このバインディングに使用するバッファー プール サイズの上限を指定する整数。 既定は 512 \* 1024 バイトです。 Windows Communication Foundation \(WCF\) では、多くの部分でバッファーを使用します。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxBufferSize|メッセージをメモリに保存するのに使用するバッファーの最大サイズをバイト単位で指定する正の整数。

`transferMode` 属性が `Buffered` に等しい場合は、この属性が `maxReceivedMessageSize` 属性の値と等しくなっている必要があります。

`transferMode` 属性が `Streamed` に等しい場合は、この属性が `maxReceivedMessageSize` 属性の値以下であり、またヘッダーのサイズ以上である必要があります。

既定値は 65536 です。 詳細については、「」を参照してください。| +|maxConnections|サービスが作成し受け付ける発信\/着信接続数の上限を指定する整数。 この属性により指定された別個の制限に対して、着信接続および発信接続がカウントされます。

制限を超える着信接続は、制限内に空きができるまでキューに置かれます。

制限を超える発信接続は、制限内に空きができるまでキューに置かれます。

既定値は 10 です。| +|maxReceivedMessageSize|このバインディングで構成されるチャネルで受信可能な最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で指定する正の整数。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|name|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|openTimeout|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|portSharingEnabled|TCP ポート共有をこの接続で有効にするかどうかを指定するブール値。 これが `false` の場合、各バインドは独自の排他ポートを使用します。 クライアントには影響しないため、この設定はサービスのみに関連します。| +|receiveTimeout|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|sendTimeout|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|transactionFlow|バインディングが WS\-Transactions のフローをサポートするかどうかを指定するブール値です。 既定値は、`false` です。| +|transactionProtocol|このバインディングで使用されるトランザクション プロトコルを指定します。 有効な値は、次のとおりです。

- OleTransactions
- WSAtomicTransactionOctober2004

既定値は OleTransactions です。 この属性は 型です。| +|transferMode|メッセージが要求や応答をバッファーするか、ストリーミングするかを指定する 値です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-nettcpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[reliableSession](http://msdn.microsoft.com/ja-jp/9c93818a-7dfa-43d5-b3a1-1aafccf3a00b)|チャネルのエンドポイント間に信頼できるセッションを確立するかどうかを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + このバインディングは、既定ではランタイム通信スタックを生成し、トランスポート セキュリティ、メッセージ配信用 TCP、およびバイナリ メッセージ エンコーディングを使用します。 このバインドは、イントラネット上の通信に適した [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] システム標準の選択肢です。 + + `netTcpBinding` の既定の構成は、`wsHttpBinding` が提供する構成よりも高速ですが、これは [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] 対 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] 間の通信でのみ使用されることを目的としています。 このセキュリティ動作は、省略可能な `securityMode` 属性を使用して構成できます。 WS\-ReliableMessaging を使用するかどうかは、省略可能な `reliableSessionEnabled` 属性を使用して構成できます。 ただし、信頼できるメッセージングは、既定ではオフです。 `wsHttpBinding` や `basicHttpBinding` などの HTTP システム指定のバインディングは、既定では設定をオンにするように構成され、`netTcpBinding` バインディングは、既定では設定をオフにするように構成されているのが一般的であるため、たとえば、いずれかの WS\-\* 仕様のサポートを得るには、サポートを選択する必要があります。 これは、TCP の既定の構成の方が、HTTP バインディング用の既定の構成より、エンドポイント間でのメッセージ交換が高速になることを意味します。 + +## 使用例 + バインディングは、クライアントとサービスの構成ファイルに指定されます。 バインディングの種類は、`` 要素の `binding` 属性に指定します。 netTcpBinding バインディングを構成してその設定の一部を変更する場合は、バインディング構成を定義する必要があります。 エンドポイントは、`bindingConfiguration` 属性を使用してバインディング構成を参照する必要があります。 次の例では、バインディング構成を定義します。 + +``` + + + ... + + ... + + + + + + + + + + + + + + +``` + +## 参照 + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/nettcpcontextbinding.md b/docs/framework/configure-apps/file-schema/wcf/nettcpcontextbinding.md new file mode 100644 index 00000000000..9259d23a447 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/nettcpcontextbinding.md @@ -0,0 +1,117 @@ +--- +title: "<netTcpContextBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1d4715e1-5fff-4c3d-a226-18f21d0b30c4 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <netTcpContextBinding> +保護レベルの署名を求める のコンテキストを指定します。 NetTcpContextBinding の contextExchangeMechanism は、SOAPHeader です。 + +## 構文 + +``` + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|closeTimeout|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|contextProtectionLevel|コンテキスト情報の反映に使用される SOAP ヘッダーの必要な保護レベルを指定する、有効な 値。 既定値は `Sign` です。| +|hostnameComparisonMode|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|listenBacklog|リスナーで受け入れを待機するチャネルの最大数を指定する正の整数。 この制限を超えた接続は、制限内に空きができるまでキューに置かれます。 `connectionTimeout` 属性は、クライアントが接続を待つ時間を制限します。この時間が経過すると接続の例外をスローします。 既定値は 10 です。| +|maxBufferPoolSize|このバインディングに使用するバッファー プール サイズの上限を指定する整数。 既定は 512 \* 1024 バイトです。 Windows Communication Foundation \(WCF\) では、多くの部分でバッファーを使用します。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxBufferSize|メッセージをメモリに保存するのに使用するバッファーの最大サイズをバイト単位で指定する正の整数。 バッファーがいっぱいになると、超過データは、バッファーに空きが出るまで、基になるソケットに残されます。 この値が `maxReceivedMessageSize` 属性の値を下回らないようにしてください。 既定値は 65536 です。 詳細については、「」を参照してください。| +|maxConnections|サービスが作成し受け付ける発信\/着信接続数の上限を指定する整数。 この属性により指定された別個の制限に対して、着信接続および発信接続がカウントされます。

制限を超える着信接続は、制限内に空きができるまでキューに置かれます。

制限を超える発信接続は、制限内に空きができるまでキューに置かれます。

既定値は 10 です。| +|maxReceivedMessageSize|このバインディングで構成されるチャネルで受信可能な最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で指定する正の整数。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|name|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|openTimeout|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|portSharingEnabled|TCP ポート共有をこの接続で有効にするかどうかを指定するブール値。 これが `false` の場合、各バインドは独自の排他ポートを使用します。 クライアントには影響しないため、この設定はサービスのみに関連します。| +|receiveTimeout|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|sendTimeout|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|transactionFlow|バインディングが WS\-Transactions のフローをサポートするかどうかを指定するブール値です。 既定値は、`false` です。| +|transactionProtocol|このバインディングで使用されるトランザクション プロトコルを指定します。 有効な値は、次のとおりです。

- OleTransactions
- WSAtomicTransactionOctober2004

既定値は OleTransactions です。 この属性は 型です。| +|transferMode|メッセージが要求や応答をバッファーするか、ストリーミングするかを指定する 値です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-nettcpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[reliableSession](http://msdn.microsoft.com/ja-jp/9c93818a-7dfa-43d5-b3a1-1aafccf3a00b)|チャネルのエンドポイント間に信頼できるセッションを確立するかどうかを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 参照 + + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/oneway.md b/docs/framework/configure-apps/file-schema/wcf/oneway.md new file mode 100644 index 00000000000..4ef00e81288 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/oneway.md @@ -0,0 +1,70 @@ +--- +title: "<oneWay> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 00e67e0e-77c0-4695-9138-c0997b0e5f3c +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <oneWay> +カスタム バインディングのパケット ルーティングを有効にし、一方向メソッドを使用できるようにします。 + +## 構文 + +``` + + + +``` + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`packetRoutable`|パケット ルーティングが有効かどうかを示すブール値。 既定値は、`false` です。| +|`MaxAcceptedChannels`|許容できるチャネルの最大数を指定する整数。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/channelpoolsettings.md)|現在のチャネルのチャネル プールのプロパティを格納する オブジェクト。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + パケット ルーティングを有効にするには、この要素が提供する "一方向の変換" 層が必要です。 カスタム バインディングを作成し、このバインディングをセッション対応または要求応答のトランスポートの上に重ねて、パケット ルーティング可能にすることができます。 この要素は、一方向メソッドをよりネイティブな形式で公開するときにも役に立ちます。 複合二重や信頼できるメッセージ機能などのさらに大きい変換は、この層に対して適用できます。 + +## 参照 + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/parameter.md b/docs/framework/configure-apps/file-schema/wcf/parameter.md new file mode 100644 index 00000000000..01b026ac9d9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/parameter.md @@ -0,0 +1,67 @@ +--- +title: "<parameter> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0fb41e2d-64f7-44ab-993e-05892eac6d82 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <parameter> +宣言された型がジェネリック型である場合、ジェネリック パラメーターを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|インデックス|宣言された型がジェネリック型である場合、既知の型を返すジェネリック パラメーターを指定します。| +|型|シリアル化と逆シリアル化で使用される既知の型を説明する文字列。| + +## index 属性 + +|値|説明| +|-------|--------| +|"0"|ジェネリック型の最初のパラメーター。 たとえば、 にはパラメーターが 1 つだけあります。 宣言型として使用される場合、index は "0" に設定されます。| +|"1"|ジェネリック型の 2 番目のパラメーター。 たとえば、 には 2 つのパラメーターがあります。 2 番目のパラメーターによって既知の型が返される場合は、index 属性を "1" に設定します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/knowntype.md)|宣言型のフィールドまたはプロパティによって返される既知の型を指定します。| + +## 解説 + 既知の型[!INCLUDE[crabout](../../../../../includes/crabout-md.md)]、「[既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」および「」を参照してください。 + + この要素の使用例については、「[\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md)」を参照してください。 + + この構成要素に、両方の属性を同時に設定することはできません。 両方の属性が設定された場合、 が発生します。 + +## 参照 + + [既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-element.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-declaredtypes-element.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/participants-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/participants-of-wcf.md new file mode 100644 index 00000000000..fab74e5ab41 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/participants-of-wcf.md @@ -0,0 +1,99 @@ +--- +title: "WCF の <participants> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d99dbddc-0057-4e18-8e42-f91411d39970 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <participants> +ランタイムから直接出力される追跡レコードをリッスンし、追跡レコードの構成方法に従って処理を行う追跡参加要素の一覧を構成します。 これには、特定の出力 \(ファイル、コンソール、ETW など\) への書き込み、レコードの処理や集計、またはその他の必要な組み合わせが含まれます。 + + ワークフロー追跡と追跡参加要素の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」および「[追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/add-of-participants.md)|追跡参加要素を処理するための設定が含まれます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/tracking.md)|ワークフロー サービスの追跡設定を定義する構成セクションを表します。| + +## 解説 + 追跡参加要素は、ワークフローから生成される追跡データを取得し、それを別のメディアに保存するために使用します。 同様に、追跡レコードの後処理はすべて、追跡参加要素内でも実行できます。 + + 複数の追跡参加要素が追跡イベントを同時に使用することができます。 各追跡参加要素は、それぞれ別の追跡プロファイルと関連付けることができます。 + + 追跡レコードを ETW セッションに書き込む、標準の追跡参加要素が用意されています。 参加要素は、追跡固有の動作を構成ファイルに追加することによって、ワークフロー サービスで構成されます。 ETW 追跡参加要素を有効にすると、追跡レコードをイベント ビューアーで表示できます。 これで要件が満たされない場合は、カスタムの追跡参加要素を作成することもできます。 + +## 使用例 + 次の構成例は、Web.config ファイルで構成されている標準の ETW 追跡参加要素を示します。 + + ETW 追跡参加要素が追跡レコードを ETW に書き込むために使用するプロバイダー ID は、`` セクションで定義されます。 追跡参加要素には、その要素が定期受信した追跡レコードを指定するためのプロファイルが関連付けられています。 これは、`` 要素の `profileName` 属性で定義されます。 これらが定義されると、追跡参加要素は `` サービス動作に追加されます。 これにより、選択した追跡参加要素がワークフロー インスタンスの拡張機能に追加され、追跡レコードの受信が開始されます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/peer-of-clientcredentials-element.md b/docs/framework/configure-apps/file-schema/wcf/peer-of-clientcredentials-element.md new file mode 100644 index 00000000000..c3567f11126 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/peer-of-clientcredentials-element.md @@ -0,0 +1,69 @@ +--- +title: "<clientCredentials> 要素の <peer> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 505bd987-0042-4622-b68e-94f439729d53 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <clientCredentials> 要素の <peer> +ピアツーピア クライアントの認証時に使用される資格情報を指定します。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/certificate-element.md)|ピアツーピア クライアントのメッセージの署名と暗号化に使用する X.509 証明書を指定します。 .| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peerauthentication-element.md)|ピア クライアントの認証オプションを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/messagesenderauthentication-element.md)|メッセージ送信者の認証オプションを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)|サービスに対するクライアントの認証に使用される資格情報を指定します。| + +## 解説 + この構成要素は、ピア ノードがメッシュ内の他のノードに対して自身を認証するために使用する資格情報と、ピア ノードが他のピア ノードを認証するために使用する認証設定を指定します。 詳細については、「[Peer Channel Message Authentication](http://msdn.microsoft.com/ja-jp/80e73386-514e-4c30-9e4a-b9ca8c173a95)」および「[セキュリティによるピア チャネル アプリケーションの保護](../../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md)」を参照してください。 + +## 参照 + + + + + + + + [ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [Peer Channel Message Authentication](http://msdn.microsoft.com/ja-jp/80e73386-514e-4c30-9e4a-b9ca8c173a95) + [Peer Channel Custom Authentication](http://msdn.microsoft.com/ja-jp/4aa8a82e-41a8-48e2-8621-7e1cbabdca7c) + [セキュリティによるピア チャネル アプリケーションの保護](../../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/peer-of-servicecredentials.md b/docs/framework/configure-apps/file-schema/wcf/peer-of-servicecredentials.md new file mode 100644 index 00000000000..facf298e059 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/peer-of-servicecredentials.md @@ -0,0 +1,62 @@ +--- +title: "<serviceCredentials> の <peer> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b134e21d-e5b5-458e-9309-626dbf8db4ed +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <serviceCredentials> の <peer> +ピア ノードの現在の資格情報を指定します。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/certificate-of-peer.md)|ピアツーピア サービスのメッセージの署名と暗号化に使用する X.509 証明書を指定します。 .| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/messagesenderauthentication.md)|メッセージ送信者の認証オプションを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peerauthentication.md)|ピア サービスの認証オプションを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)|サービスの認証に使用される資格情報と、クライアントの資格情報検証関連の設定を指定します。| + +## 参照 + + + + + [ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md) + [Peer Channel Message Authentication](http://msdn.microsoft.com/ja-jp/80e73386-514e-4c30-9e4a-b9ca8c173a95) + [Peer Channel Custom Authentication](http://msdn.microsoft.com/ja-jp/4aa8a82e-41a8-48e2-8621-7e1cbabdca7c) + [セキュリティによるピア チャネル アプリケーションの保護](../../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/peerauthentication-element.md b/docs/framework/configure-apps/file-schema/wcf/peerauthentication-element.md new file mode 100644 index 00000000000..02e0895263b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/peerauthentication-element.md @@ -0,0 +1,115 @@ +--- +title: "<peerAuthentication> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 09a8a9ff-e395-42f6-8ceb-9d44bdc1cbe1 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <peerAuthentication> 要素 +ピアツーピア クライアントの認証オプションを指定します。 + + ピアツーピア プログラミング[!INCLUDE[crabout](../../../../../includes/crabout-md.md)]、「[ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md)」を参照してください。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`customCertificateValidatorType`|省略可能な文字列。 カスタム型の検証に使用される型およびアセンブリです。 `certificateValidationMode` が `Custom` に設定されている場合は、この属性を設定する必要があります。| +|`certifcateValidationMode`|省略可能な列挙体です。 資格情報の検証に使用される 3 つのモードのいずれかを指定します。 `Custom` に設定されている場合、`customCertificateValidator` も指定する必要があります。 既定値は、`ChainTrust` です。| +|`revocationMode`|省略可能な列挙体です。 証明書失効リスト \(CRL\) のチェックに使用されるモードのいずれかです。 既定値は、`Online` です。| +|`trustedStoreLocation`|省略可能な列挙体です。 2 つのシステム格納場所 \(`LocalMachine` または `CurrentUser`\) のいずれかです。 この値は、サービス証明書がクライアントにネゴシエートされるときに使用されます。 指定された格納場所の **\[信頼されたユーザー\]** ストアに対して検証が実行されます。 既定値は、`CurrentUser` です。| + +## customCertificateValidatorType 属性 + +|値|説明| +|-------|--------| +|String|タイプ名およびアセンブリと、タイプの検索に使用される他のデータを指定します。 少なくとも、名前空間とタイプ名が必要です。 省略可能な情報は、アセンブリ名、バージョン番号、カルチャ、および公開キー トークンです。| + +## certificateValidationMode 属性 + +|値|説明| +|-------|--------| +|列挙型|`None`、`PeerTrust`、`ChainTrust`、`PeerOrChainTrust`、`Custom` のいずれかの値にします。 既定値は、`ChainTrust` です。

詳細については、「[証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。| + +## revocationMode 属性 + +|値|説明| +|-------|--------| +|列挙型|`NoCheck`、`Online`、`Offline` のいずれかの値にします。 既定値は、`Online` です。

詳細については、「[証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。| + +## trustedStoreLocation 属性 + +|値|説明| +|-------|--------| +|列挙型|`LocalMachine` または `CurrentUser` のいずれかの値にします。 既定値は、`CurrentUser` です。 クライアント アプリケーションがシステム アカウントで実行されている場合、証明書は通常 `LocalMachine` の下にあります。 クライアント アプリケーションがユーザー アカウントで実行されている場合、証明書は通常 `CurrentUser` の下にあります。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peer-of-clientcredentials-element.md)|ピア サービスに対するクライアントの認証に使用される資格情報を指定します。| + +## 解説 + `` 要素は、 クラスに対応します。 この要素は、メッシュ内の近隣ノード間の認証時に呼び出される検証コントロールを指定します。 新しいピアが近隣ノードとの接続を確立しようとするとき、自身の資格情報を応答側のピアに渡します。 リモート パーティの資格情報を検証するために、応答側の検証が呼び出されます。 メッシュ内でピア接続が確立されるたびに、両方のピアが相互に認証されます。つまり、双方の検証が呼び出されます。 + +## 使用例 + 次のコードは、証明書検証モードを `PeerOrChainTrust` に設定します。 + +``` + + + + + + + + + + + + +``` + +## 参照 + + + + + + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md) + [Peer Channel Message Authentication](http://msdn.microsoft.com/ja-jp/80e73386-514e-4c30-9e4a-b9ca8c173a95) + [Peer Channel Custom Authentication](http://msdn.microsoft.com/ja-jp/4aa8a82e-41a8-48e2-8621-7e1cbabdca7c) + [セキュリティによるピア チャネル アプリケーションの保護](../../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/peerauthentication.md b/docs/framework/configure-apps/file-schema/wcf/peerauthentication.md new file mode 100644 index 00000000000..1ff33cd5541 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/peerauthentication.md @@ -0,0 +1,68 @@ +--- +title: "<peerAuthentication> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ad545e6f-f06e-4549-ac92-09d758d5c636 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <peerAuthentication> +ピア ノードで使用されるピア証明書の認証設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`certificateValidationMode`|省略可能な列挙体です。 資格情報の検証に使用される 3 つのモードのいずれかを指定します。 この属性は 型です。 `Custom` に設定されている場合、`customCertificateValidator` も指定する必要があります。| +|`customCertificateValidatorType`|省略可能な文字列。 ユーザー設定タイプの検証に使用されるタイプおよびアセンブリを指定します。 `certificateValidationMode` が `Custom` に設定されている場合は、この属性を設定する必要があります。 この属性は 型です。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] には、信頼されたユーザーのストアに対してピア証明書を検証する既定のピア証明書検証が用意されており、 証明書が有効なルートまでつながっていることを検証します。 カスタム検証を実装して別の動作を指定したり、この属性を使用してカスタム検証を指定することができます。| +|`revocationMode`|省略可能な列挙体です。 証明書失効モードを指定します。 この属性は 型です。 システムは、ピア証明書を失効証明書リストで検索して、それが失効していないことを検証します。 このチェックは、オンラインで、またはキャッシュされた失効リストをチェックする方法で実行されます。 失効チェックは、この属性を NoCheck に設定することにより無効にできます。| +|`trustedStoreLocation`|省略可能な列挙体です。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] セキュリティ システムによりピア証明書を検証する、信頼されているユーザー ストアを指定します。 この属性は 型です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peer-of-servicecredentials.md)|ピア ノードの現在の資格情報を指定します。| + +## 解説 + `` 要素は、 クラスに対応します。 この要素は、メッシュ内の近隣ノード間の認証時に呼び出される検証コントロールを指定します。 新しいピアが近隣ノードとの接続を確立しようとするとき、自身の資格情報を応答側のピアに渡します。 リモート パーティの資格情報を検証するために、応答側の検証が呼び出されます。 メッシュ内でピア接続が確立されるたびに、両方のピアが相互に認証されます。つまり、双方の検証が呼び出されます。 + +## 参照 + + + + + + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [ピアツーピア ネットワーク](../../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md) + [Peer Channel Message Authentication](http://msdn.microsoft.com/ja-jp/80e73386-514e-4c30-9e4a-b9ca8c173a95) + [Peer Channel Custom Authentication](http://msdn.microsoft.com/ja-jp/4aa8a82e-41a8-48e2-8621-7e1cbabdca7c) + [セキュリティによるピア チャネル アプリケーションの保護](../../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/peertransport.md b/docs/framework/configure-apps/file-schema/wcf/peertransport.md new file mode 100644 index 00000000000..bd1d0a26916 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/peertransport.md @@ -0,0 +1,73 @@ +--- +title: "<peerTransport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c1a5013a-9dd4-4a27-b114-795b8b323177 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# <peerTransport> +カスタム バインディングのピア トランスポートを定義します。 + +## 構文 + +``` + + + +/> +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|listenIpAddress|ピア ノードが TCP メッセージをリッスンする IP アドレスを指定する文字列です。 既定値は、`null` です。| +|maxBufferPoolSize|バッファー プールの最大サイズを指定する正の整数です。 既定値は 524288 です。

WCF の多くの部分でバッファーが使用されます。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxReceivedMessageSize|ヘッダーなどのメッセージの最大サイズ \(バイト単位\) を定義する正の整数。 受信側にとってメッセージが大きすぎると、メッセージの送信側は SOAP エラーを受け取ります。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|ポート|このバインディングがピア チャネルの TCP メッセージを処理するネットワーク インターフェイス ポートを指定する整数です。 この値の有効値の範囲は です。 既定値は 0 です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-peertransport.md)|このトランスポートのセキュリティ設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + このトランスポートは、要求\/応答操作を含むコントラクトと共に使用することはできません。 + +## 参照 + + + + + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/persistabletype.md b/docs/framework/configure-apps/file-schema/wcf/persistabletype.md new file mode 100644 index 00000000000..b2978fde64c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/persistabletype.md @@ -0,0 +1,64 @@ +--- +title: "<persistableType> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e5425fe6-523a-4076-aab4-2c2515b1d830 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <persistableType> +すべての永続型を指定します。 + +## 構文 + +``` + + + + + + + + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|id|永続型の一意の ID を指定する文字列を含む必須属性。| +|name|永続型の名前を指定する文字列を含む省略可能な属性。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/persistabletypes.md)|`persistableType` 要素のコレクション。| + +## 参照 + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/comcontracts.md) + [COM\+ アプリケーションとの統合](../../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) + [方法 : COM\+ サービス設定を構成する](../../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/persistabletypes.md b/docs/framework/configure-apps/file-schema/wcf/persistabletypes.md new file mode 100644 index 00000000000..aea94ceb22b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/persistabletypes.md @@ -0,0 +1,27 @@ +--- +title: "<persistableTypes> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4d255097-45f0-4a04-945e-41d9bcfe8c54 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <persistableTypes> +このセクションには、`persistableType` 要素のコレクションが含まれています。 + +## 参照 + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/comcontracts.md) + [COM\+ アプリケーションとの統合](../../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) + [方法 : COM\+ サービス設定を構成する](../../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/persistenceprovider.md b/docs/framework/configure-apps/file-schema/wcf/persistenceprovider.md new file mode 100644 index 00000000000..510a51a7491 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/persistenceprovider.md @@ -0,0 +1,54 @@ +--- +title: "<persistenceProvider> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a37049c5-a7ea-4519-94f2-912eeb010380 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <persistenceProvider> +使用する永続化プロバイダーの実装の型と、永続化操作に使用するタイムアウトを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|persistenceOperationTimeout|永続化動作に使用するタイムアウトを指定する 値。 既定値は “00:00:30” です。| +|型|使用する永続化プロバイダー ファクトリの型を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 解説 + この要素は、WCF サービスの状態をシリアル化するために使用される永続化プロバイダーを指定します。 HTTP ヘッダーに状態情報を渡す `wsHttpContextBinding` と一緒に使用する必要があります。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/pnrppeerresolver.md b/docs/framework/configure-apps/file-schema/wcf/pnrppeerresolver.md new file mode 100644 index 00000000000..7371d569a9f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/pnrppeerresolver.md @@ -0,0 +1,61 @@ +--- +title: "<pnrpPeerResolver> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c1b34f3b-68e5-4911-a367-de49fb61dbc6 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <pnrpPeerResolver> +リゾルバーとして PNRP \(Peer Name Resolution Protocol\) リゾルバーを使用することを指定します。 PNRP は既定のリゾルバーであるため、この要素は省略可能です。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|resolverType|使用されるリゾルバーを指定する文字列。 この属性は省略できます。 設定されていない場合、または空の文字列に設定されている場合は、PNRP が使用されます。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 使用例 + +``` + +``` + +## 参照 + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [ピア リゾルバー](../../../../../docs/framework/wcf/feature-details/peer-resolvers.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/policyimporter.md b/docs/framework/configure-apps/file-schema/wcf/policyimporter.md new file mode 100644 index 00000000000..fa88f7267dd --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/policyimporter.md @@ -0,0 +1,60 @@ +--- +title: "<policyImporter> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b0d03456-546f-44bb-ab12-1b2ce7f98fca +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <policyImporter> +バインディングに関するカスタム ポリシー アサーションのインポートを制御するポリシー インポーターを指定します。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`type`|この要素の型です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/policyimporters.md)|バインディングに関するカスタム ポリシー アサーションのインポートを制御するすべてのポリシー インポーターを指定します。| + +## 解説 + ポリシー インポーターは、バインディング機能についてのカスタム ポリシー アサーションの検索、およびアサーションで必要となる機能を実装するカスタム バインディング要素の結び付けに使用されます。 + +## 参照 + + + + + [WCF クライアントの構成](../../../../../docs/framework/wcf/feature-details/client-configuration.md) + [クライアント](../../../../../docs/framework/wcf/feature-details/clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/policyimporters.md b/docs/framework/configure-apps/file-schema/wcf/policyimporters.md new file mode 100644 index 00000000000..b2952319fe4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/policyimporters.md @@ -0,0 +1,28 @@ +--- +title: "<policyImporters> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f8267a6f-bc09-4ec1-9b26-9445f137f663 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <policyImporters> +この構成要素は、バインディングに関するカスタム ポリシー アサーションのインポートを制御するすべてのポリシー インポーターを指定します。 各子要素は、バインディング機能についてのカスタム ポリシー アサーションの検索、およびアサーションで必要となる機能を実装するカスタム バインディング要素の結び付けに使用される \<`policyImporter`\> です。 + +## 参照 + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/policyimporter.md) + [WCF クライアントの構成](../../../../../docs/framework/wcf/feature-details/client-configuration.md) + [クライアント](../../../../../docs/framework/wcf/feature-details/clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/privacynoticeat.md b/docs/framework/configure-apps/file-schema/wcf/privacynoticeat.md new file mode 100644 index 00000000000..8b195979b6f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/privacynoticeat.md @@ -0,0 +1,59 @@ +--- +title: "<privacyNoticeAt> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4cc96942-4eb9-4241-b2fd-45aa239915e8 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <privacyNoticeAt> +`wsFederationHttp` バインディングで使用されるプライバシーに関する声明を指定する構成要素を表します。 + +## 構文 + +``` + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`url`|プライバシーに関する声明の場所を示す URI を指定する文字列。| +|`version`|このプライバシーに関する声明のバージョンを指定する整数。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 参照 + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/protocolmapping.md b/docs/framework/configure-apps/file-schema/wcf/protocolmapping.md new file mode 100644 index 00000000000..4416ffe2e89 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/protocolmapping.md @@ -0,0 +1,72 @@ +--- +title: "<protocolMapping> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5076644b-1f33-4f26-9488-87de9fcda04c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <protocolMapping> +トランスポート プロトコル スキーム \(http、net.tcp、net.pipe など\) と WCF バインディング間の既定のプロトコル マッピング セットを定義する構成セクションを表します。 実行時に既定のエンドポイントを作成するときに、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] は構成されたマッピングを確認し、特定のベース アドレスに使用するバインディングを決定します。 + +## 構文 + +```vb + + +    + + +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filters-of-routing.md)|トランスポート プロトコル スキーム \(http、net.tcp、net.pipe など\) と WCF バインディング間の既定のプロトコル マッピングを格納します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|system.ServiceModel|すべての WCF 構成要素のルート要素です。| + +## 使用例 + 次の構成例は、machine.config ファイル内の既定のプロトコル マッピングを示しています。 machine.config ファイルを変更することで、既定のマッピングをコンピューター レベルでオーバーライドできます。 または、アプリケーションのスコープ内だけでオーバーライドする場合は、アプリケーション構成ファイルのこのセクションをオーバーライドし、各プロトコル スキームのマッピングを変更できます。 + +``` + + +        +        +        +        + + +``` + +## 参照 + [System.ServiceModel.Configuration.ProtocolMappingSection](assetId:///System.ServiceModel.Configuration.ProtocolMappingSection?qualifyHint=False&autoUpgrade=True) + [System.ServiceModel.Configuration.ProtocolMappingElement](assetId:///System.ServiceModel.Configuration.ProtocolMappingElement?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/reliablesession.md b/docs/framework/configure-apps/file-schema/wcf/reliablesession.md new file mode 100644 index 00000000000..5031080b9b9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/reliablesession.md @@ -0,0 +1,135 @@ +--- +title: "<reliableSession> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 129b4a59-37f0-4030-b664-03795d257d29 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# <reliableSession> +WS\-ReliableMessaging の設定を定義します。 この要素がカスタム バインディングに追加される場合、その結果となるチャネルにより、正確に 1 回の配信保証をサポートできます。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|acknowledgementInterval|そのポイントまで受信したメッセージの受信確認の送信をチャネルが待機する最大時間間隔を含む 。 既定値は 00:00:0.2 です。| +|flowControlEnabled|高度なフロー制御を有効にするかどうかを示すブール値。WS\-ReliableMessaging のフロー制御の Microsoft 固有の実装です。 既定値は、`true` です。| +|inactivityTimeout|他の通信相手がチャネルにメッセージを送信せずにいられる最長期間を指定する 。他の通信相手がメッセージを送信しない期間がこの値を超えると、チャネルでエラーが発生します。 既定値は 00:10:00 です。

チャネルでのアクティビティは、アプリケーションまたはインフラストラクチャのメッセージを受信するように定義されています。 このプロパティは、アクティブでないセッションを維持する最長期間を制御します。 反応のない時間がこれより長く経過すると、インフラストラクチャによってセッションは中止され、チャネルはエラーとなります。 **Note:** アプリケーションでは定期的にメッセージを送信して接続を維持する必要はありません。| +|maxPendingChannels|受け入れるリスナーを待機できるチャネルの最大数を指定する整数。 この値は、1 ~ 16384 \(1 と 16384を含む\) のいずれかです。 既定値は 4 です。

チャネルは、受け入れを待っている間は保留状態になります。 制限に達すると、チャネルは作成されなくなります。 正確には、この数が \(保留状態のチャネルの受け入れによって\) 減少するまで、保留モードにされます。 これはファクトリごとの制限です。

しきい値に達した後に、リモート アプリケーションが新しい信頼できるセッションを確立しようとした場合、要求は拒否され、この原因となる open 操作でエラーが発生します。 この制限は、保留状態の送信チャネルの数には適用されません。| +|maxRetryCount|基になるチャネルで Send を呼び出すことで、信頼できるチャネルが受信確認を受信していないメッセージの再転送を試みる最大回数を指定する整数。

この値は、ゼロより大きい値である必要があります。 既定値は 8 です。

この値は、0 を超えた整数にする必要があります。 最後の再転送後に受信確認が受信されない場合、チャネルでエラーが発生します。

メッセージは、受信側でその配信が確認されている場合、転送されたと見なされます。

転送済みのメッセージの受信確認が一定時間内に受信されない場合、インフラストラクチャは、自動的にそのメッセージを再転送します。 インフラストラクチャは、このプロパティで指定された回数まで、メッセージを再送信しようとします。 最後の再転送後に受信確認が受信されない場合、チャネルでエラーが発生します。

インフラストラクチャは、指数バックオフ アルゴリズムを使用し、計算された平均ラウンドトリップ時間に基づいて、いつ再転送するかを判断します。 時間は、まず再転送の 1 秒前に開始され、試行ごとに遅延が 2 倍にされます。この結果、最初の転送試行から最後の再転送試行までに約 8.5 分かかります。 最初の再転送試行のタイミングは、計算されたラウンドトリップ時間に従って調整されるので、試行にかかる時間延長はさまざまです。 これにより、再転送のタイミングをさまざまなネットワーク条件に動的に適用できます。| +|maxTransferWindowSize|バッファーの最大サイズを指定する整数。 有効値は 1 ~ 4096 の範囲です。

クライアントでは、この属性は、まだ受信側で受信が確認されていないメッセージを保持するために信頼できるチャネルが使用するバッファーの最大サイズを定義します。 クォータの単位はメッセージです。 バッファーがいっぱいになると、それ以降の SEND 操作がブロックされます。

受信側では、この属性は、まだアプリケーションにディスパッチされていない受信メッセージを格納するためにチャネルが使用するバッファーの最大サイズを定義します。 バッファーがいっぱいになると、それ以降のメッセージは、受信側によって通知なしに自動的に削除されるので、クライアントによる再転送が必要になります。| +|ordered|メッセージが送信された順序で到着されることを保証するかどうかを指定するブール値。 この設定が `false` の場合、メッセージは送信された順序で到着しません。 既定値は、`true` です。| +|reliableMessagingVersion|使用する WS\-ReliableMessaging バージョンを指定する の有効な値。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + 信頼できるセッションは、信頼できるメッセージとセッションに関する機能を提供します。 信頼できるメッセージは、エラー時に通信を再試行するほか、メッセージの順次到着などの配信の保証を指定できるようにします。 セッションでは、呼び出し間でクライアントの状態が保持されます。 この要素には、オプションとして、順序付けされたメッセージ配信を行う機能も用意されています。 この実装されたセッションは、SOAP およびトランスポート中継局を通過できます。 + + 各バインド要素は、メッセージの送信または受信時の処理手順を表します。 実行時に、バインディング要素は、メッセージの送受信に求められる送信および受信チャネル スタックを作成するために必要なチャネル ファクトリとリスナーを作成します。 `reliableSession` が提供するスタック内のオプションの層は、エンドポイント間に信頼できるセッションを確立し、このセッションの動作を構成することができます。 + + 詳細については、「[信頼できるセッション](../../../../../docs/framework/wcf/feature-details/reliable-sessions.md)」を参照してください。 + +## 使用例 + 次の例では、さまざまなトランスポートとメッセージ エンコーディング要素を使用し、特に、クライアントの状態を保持し、配信順序を保証することを指定する、信頼できるセッションを有効化することによって、カスタム バインディングを構成する方法を示します。 この機能は、クライアントとサービスのアプリケーション構成ファイルで構成されます。 サービスの構成の例を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + [信頼できるセッション](../../../../../docs/framework/wcf/feature-details/reliable-sessions.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/remove-of-claimtyperequirements-element.md b/docs/framework/configure-apps/file-schema/wcf/remove-of-claimtyperequirements-element.md new file mode 100644 index 00000000000..20a723d682b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/remove-of-claimtyperequirements-element.md @@ -0,0 +1,54 @@ +--- +title: "<claimTypeRequirements> 要素の <remove> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8ef05bc4-1950-4ee4-95c5-1c6a394eff7e +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <claimTypeRequirements> 要素の <remove> +フェデレーション資格情報から削除するクレームの種類を指定します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|claimType|削除するクレームの種類を定義する URI。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/claimtyperequirements-for-message.md)|必須のクレームの種類のコレクションを指定します。 各要素は 型です。

フェデレーション シナリオでは、サービスが受信資格情報についての要件を記述します。 たとえば、受信資格情報は、特定のクレーム タイプのセットを処理する必要があります。 このコレクションの要素はそれぞれ、フェデレーション資格情報に表示されると予想される必須の要求および省略可能な要求の種類を指定します。| + +## 参照 + + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/resolver.md b/docs/framework/configure-apps/file-schema/wcf/resolver.md new file mode 100644 index 00000000000..1131cd4461f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/resolver.md @@ -0,0 +1,63 @@ +--- +title: "<resolver> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0c00200c-f135-4e5c-a024-76b72bcbc021 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# <resolver> +ピア メッシュ ID を解決してメッシュに参加する複数ノードを表すピア アドレス セットを取得するためにピア リゾルバーを指定します。 + +## 構文 + +``` + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`mode`|このサービスに関連付けられるピア リゾルバー インスタンスが PNRP 固有、カスタム リゾルバー、自動的に決定されるのいずれであるかを指定する文字列。 この属性は 型です。| +|`referralPolicy`|ピア間で参照を共有する方法を指定する文字列。 この属性は 型です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/headers.md)|ユーザー設定のピア リゾルバー サービスの設定を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/netpeertcpbinding.md)のすべてのバインディング機能を定義します。| + +## 解説 + ピア名リゾルバーは、ピア メッシュに参加するピア ノードを検索するためにピア チャネルにより使用される探索サービスです。 またピア名リゾルバーは、ノードをピア メッシュに登録するために使用されます。ピア メッシュは、ピア メッシュからピア ノードを認識し、使用可能にするための機構です。 ピア リゾルバーの詳細については、「[ピア リゾルバー](../../../../../docs/framework/wcf/feature-details/peer-resolvers.md)」を参照してください。 + +## 参照 + + + + + + [ピア リゾルバー](../../../../../docs/framework/wcf/feature-details/peer-resolvers.md) + [Adding a Custom Resolver to a PeerChannel Application](http://msdn.microsoft.com/ja-jp/12aa3787-2962-439c-ad27-46523c8b0419) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/routing-of-servicebehavior.md b/docs/framework/configure-apps/file-schema/wcf/routing-of-servicebehavior.md new file mode 100644 index 00000000000..430e916e1e3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/routing-of-servicebehavior.md @@ -0,0 +1,65 @@ +--- +title: "<serviceBehavior> の <routing> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d8f9c844-4629-4a45-9599-856dc8f01794 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <serviceBehavior> の <routing> +ルーティング構成の動的な変更を可能にするルーティング サービスへの実行時アクセスを提供します。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|filterTable|ルーティング サービスによって評価されるフィルターを含むルーティング テーブルの名前を指定する文字列。 この値は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filtertables.md) セクションにある [\](../../../../../docs/framework/configure-apps/file-schema/wcf/filtertable.md) 要素の `name` 属性の値と一致する必要があります。| +|routeOnHeaderOnly|フィルターがメッセージの本文とヘッダーの両方を調べるか、ヘッダーのみを調べるかを指定するブール値。 既定値は、`true` です。| +|soapProcessingEnabled|SOAP 処理を実行するかどうかを指定するブール値。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 解説 + サービスの動作構成に追加すると、この構成要素により、サービスのルーティングが有効になります。 この要素には、サービスで使用される実際のルーティング テーブルを指定できます。 + + この構成セクションを使用すると、配置パターンの変更時にルーティング設定を変更できます。 実行時には、新しいルーティング設定を使用した独自のルーティング拡張を登録できます。ルーティング サービスは \(開始時に適用されていた規則に関係なく\) 更新済みの構成情報を使用して新たなメッセージとセッションにサービスを提供します。ただし、インフライトのメッセージやセッションには以前の規則が適用されます。このようにして、実行時において、セッション セーフでリサイクルの程度を抑えた状態でのルーティング サービスの再構成が可能となります。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/routing.md b/docs/framework/configure-apps/file-schema/wcf/routing.md new file mode 100644 index 00000000000..0dc0368a826 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/routing.md @@ -0,0 +1,70 @@ +--- +title: "<routing> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a210c209-3940-4288-9a8e-39b1e62606bc +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <routing> +受信メッセージの評価に使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の種類を定義するルーティング フィルター セットと、フィルターが一致するときにメッセージを送信するターゲット エンドポイントを指定するルーティング テーブルを定義する構成セクションを表します。 + +## 構文 + +```vb + + +      +        +      +      +         +          +            +          +       
+     
+
+ +``` + +```csharp + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filters-of-routing.md)|受信メッセージの評価に使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] MessageFilter の種類を定義するルーティング フィルター セットを格納します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/filtertables.md)|ルーティング フィルターとターゲット エンドポイントとのマッピングを格納します。フィルターが一致したときにエンドポイントを指定するために使用されます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|system.ServiceModel|すべての WCF 構成要素のルート要素です。| + +## 参照 + [System.ServiceModel.Routing.Configuration.RoutingSection](assetId:///System.ServiceModel.Routing.Configuration.RoutingSection?qualifyHint=False&autoUpgrade=True) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/rsa.md b/docs/framework/configure-apps/file-schema/wcf/rsa.md new file mode 100644 index 00000000000..afdf300c5b9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/rsa.md @@ -0,0 +1,67 @@ +--- +title: "<rsa> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ae1f2267-e40d-42ff-8abf-06ab7067bdb9 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <rsa> +この ID のエンドポイントに接続するセキュリティで保護された WCF クライアントは、サーバーから提示されたクレームに、この ID を構築するために使用された RSA 公開キーを含むクレームが含まれていることを検証します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|value|省略可能な文字列。 クライアントで比較される RSA 公開キー値。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|クライアントで認証するサービスの ID を指定します。| + +## 解説 + RSA チェックを行うと、その RSA キーまたは生成された独自の RSA キー値に基づいて、単一の証明書の認証を明確に制限できます。 これにより、RSA キーが変更された場合に既存のクライアントで使用できなくなるサービスを犠牲にして、特定の RSA キーをより厳しく認証できます。 + + ID を使用したクライアントに対するサービスの検証の詳細については、「[サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください。 + +## 使用例 + 次の構成コードは、サーバーの認証に使用される X.509 証明書の公開キー値を指定します。 + +``` + + + +``` + +## 参照 + + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/scopedcertificates-element.md b/docs/framework/configure-apps/file-schema/wcf/scopedcertificates-element.md new file mode 100644 index 00000000000..41b99d3dbc4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/scopedcertificates-element.md @@ -0,0 +1,83 @@ +--- +title: "<scopedCertificates> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c7b6fc35-d4b2-4c18-98bd-83e09591f1d3 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# <scopedCertificates> 要素 +認証用の \(範囲指定された\) 特定のサービスにより提供される X.509 証明書のコレクションを表します。 このコレクションは一般に、フェデレーション シナリオでセキュリティ トークン サービスのサービス証明書を指定するために使用されます。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-scopedcertificates-element.md)|範囲指定された証明書のコレクションに X.509 証明書を追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md)|クライアントに対してサービスを認証する際に使用される証明書を指定します。| + +## 解説 + このコレクションを使用すると、クライアントは、通信するサービスの URL に基づいて、使用するサービス証明書を構成できます。 これは、クライアントが複数のサービス \(エンド サービスと中間セキュリティ トークン サービス\) と通信している可能性がある発行済みトークンのシナリオで特に便利です。 証明書に基づくメッセージ セキュリティを使用したバインドにおいて、この証明書を使用してサービスへのメッセージを暗号化します。サービスがクライアントへの応答に署名する際には、この証明書を使用することが要求されます。 + + バインディングにサービスの証明書が必要で、サービスの URL に対する特定の証明書が ScopedCertificates 内に存在しない場合は、既定の証明書が使用されます。 + + 詳細については、「[方法 : フェデレーション クライアントを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md)」の「範囲指定された証明書」セクションを参照してください。 + +## 使用例 + ドメイン名が http:\/\/www.contoso.com であるエンドポイントと HTTP プロトコルを経由して通信するときに使用するクライアントのサービス証明書を指定する例を次に示します。 + +``` + + + + + +``` + +## 参照 + + + + + + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [方法 : フェデレーション クライアントを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-scopedcertificates-element.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/scopes.md b/docs/framework/configure-apps/file-schema/wcf/scopes.md new file mode 100644 index 00000000000..7a2ce3fa03f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/scopes.md @@ -0,0 +1,59 @@ +--- +title: "<scopes> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9a0dd3ce-e383-4ac3-b7be-7d604388304a +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <scopes> +クエリの実行中に、サービス エンドポイントのフィルター処理に使用できるカスタム スコープ URI を指定する構成要素のコレクションを含んでいます。 + +## 構文 + +``` + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|属性|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-scopes.md)|サービス検索の一致条件に使用できるエンドポイントのスコープ情報を追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpointdiscovery.md)|エンドポイントのさまざまな探索設定を指定します \(探索可能性、スコープ、メタデータに対するカスタム拡張など\)。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/secureconversationauthentication-of-servicecredential.md b/docs/framework/configure-apps/file-schema/wcf/secureconversationauthentication-of-servicecredential.md new file mode 100644 index 00000000000..d2e894c86ba --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/secureconversationauthentication-of-servicecredential.md @@ -0,0 +1,54 @@ +--- +title: "<serviceCredential> の <secureConversationAuthentication> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0bd3fac7-befd-4a45-ba51-c200b33be0fd +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# <serviceCredential> の <secureConversationAuthentication> +安全な会話サービスの設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`securityStateEncoderType`|使用される の型を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)|サービスの認証に使用される資格情報と、クライアントの資格情報検証関連の設定を指定します。| + +## 解説 + この構成要素を使用して、セキュリティ コンテキスト トークン \(SCT\) クッキーのシリアル化のための既知のクレームの種類のリストと、クッキーの情報をエンコードしてセキュリティで保護するためのエンコーダーを指定します。 SCT の詳細については、「」を参照してください。 + +## 参照 + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md b/docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md new file mode 100644 index 00000000000..761ea3530de --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md @@ -0,0 +1,88 @@ +--- +title: "<secureConversationBootstrap> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 66b46f95-fa2d-4b5b-b6ce-0572ab0cdd50 +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 13 +--- +# <secureConversationBootstrap> +セキュリティで保護されたメッセージ交換サービスの開始に使用される既定値を指定します。 + +## 構文 + +``` + + + securityHeaderLayout="Strict/Lax/LaxTimestampFirst/LaxTimestampLast" + includeTimestamp="Boolean" /> +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`allowSerializedSigningTokenOnReply`|省略可能です。 シリアル化されたトークンを応答で使用できる場合に指定するブール値。 既定値は `false` です。 二重バインドを使用する場合、この設定の既定値は `true` に設定され、行った設定はすべて無視されます。| +|`authenticationMode`|イニシエーターとレスポンダーの間で使用される SOAP 認証モードを指定します。

既定値は sspiNegotiated です。

この属性は 型です。| +|`defaultAlgorithmSuite`|セキュリティ アルゴリズム スイートは、正規化、ダイジェスト、キーラップ、署名、暗号化、およびキー派生の各アルゴリズムなど、さまざまなアルゴリズムを定義します。 各セキュリティ アルゴリズム スイートは、これらのさまざまなパラメーターの値を定義します。 メッセージ ベースのセキュリティは、これらのアルゴリズムを使用して実現されます。

この属性は、既定とは異なるアルゴリズムのセットを選択する別のプラットフォームで操作するときに使用されます。 この設定を修正する場合、関連するアルゴリズムの強さと脆弱性に注意する必要があります。 この属性は 型です。 既定値は、`Basic256` です。| +|`includeTimestamp`|各メッセージにタイム スタンプが含まれるかどうかを指定するブール値です。 既定値は、`true` です。| +|`keyEntropyMode`|メッセージをセキュリティで保護するキーを計算する方法を指定します。 キーは、クライアント キー マテリアルのみ、サービス キー マテリアルのみ、または両方の組み合わせに基づいて生成できます。 次の値を指定できます。

- ClientEntropy: セッション キーは、クライアントから提供されるキー マテリアルに基づいています。
- ServerEntropy: セッション キーは、サービスから提供されるキー マテリアルに基づいています。
- CombinedEntropy: セッション キーは、クライアントとサービスから提供されるキー マテリアルに基づいています。

既定値は CombinedEntropy です。

この属性は 型です。| +|`messageProtectionOrder`|メッセージ レベルのセキュリティ アルゴリズムをメッセージに適用する順序を設定します。 以下の値が有効です。

- SignBeforeEncrypt: 最初に署名してから暗号化します。
- SignBeforeEncryptAndEncryptSignature: 署名してから暗号化し、次に署名を暗号化します。
- EncryptBeforeSign: 最初に暗号化してから署名します。

SignBeforeEncryptAndEncryptSignature は、WS\-Security 1.1 による相互証明書を使用する場合の既定値です。 SignBeforeEncrypt は、WS\-Security 1. 0 での既定値です。

この属性は 型です。| +|`messageSecurityVersion`|使用される WS\-Security のバージョンを設定します。 以下の値が有効です。

- WSSecurityJan2004
- WSSecurityXXX2005

既定値は WSSecurityXXX2005 です。 この属性は 型です。| +|`requireDerivedKeys`|キーを元の証明キーから派生できるかどうかを指定するブール値。 既定値は、`true` です。| +|`requireSecurityContextCancellation`|セキュリティ コンテキストが不要になったときにそれをキャンセルして終了する必要があるかどうかを指定するブール値。 既定値は、`true` です。| +|`requireSignatureConfirmation`|WS\-Security 署名確認を有効にするかどうかを指定するブール値です。 `true` に設定されている場合、メッセージ署名が応答側で確認されます。 既定値は、`false` です。

サービスが要求を完全に認識して応答していることを確認するために、署名確認を使用します。| +|`securityHeaderLayout`|セキュリティ ヘッダーでの要素の順序を指定します。 次の値を指定できます。

- Strict。 "使用前に宣言する" という一般的な方針に従って、項目がセキュリティ ヘッダーに追加されます。
- Lax。 WSS: SOAP メッセージ セキュリティに準じた任意の順序で、項目はセキュリティ ヘッダーに追加されます。
- LaxWithTimestampFirst。 WSS: SOAP メッセージ セキュリティに準じた任意の順序で、項目はセキュリティ ヘッダーに追加されます。ただし、セキュリティ ヘッダーの最初の要素は wsse:Timestamp 要素である必要があります。
- LaxWithTimestampLast。 WSS: SOAP メッセージ セキュリティに準じた任意の順序で、項目はセキュリティ ヘッダーに追加されます。ただし、セキュリティ ヘッダーの最後の要素は wsse:Timestamp 要素である必要があります。

既定値は Strict です。

この要素は 型です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenparameters.md)|現在発行されているトークンを指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/localclientsettings-element.md)|このバインディングのローカル クライアントのセキュリティ設定を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/localservicesettings-element.md)|このバインディングのローカル サービスのセキュリティ設定を指定します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)|カスタム バインディングのセキュリティ オプションを指定します。| + +## 参照 + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-element-of-ws2007federationhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-element-of-ws2007federationhttpbinding.md new file mode 100644 index 00000000000..26f8e95a086 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-element-of-ws2007federationhttpbinding.md @@ -0,0 +1,80 @@ +--- +title: "<ws2007FederationHttpBinding> の <security> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 826219b4-3a16-45fc-832d-0cd7cbbd3b84 +caps.latest.revision: 10 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 10 +--- +# <ws2007FederationHttpBinding> の <security> 要素 +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/ws2007federationhttpbinding.md) 要素のセキュリティ設定を定義します。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`mode`|省略可能です。 適用するセキュリティの種類を指定します。 既定値は `Message` です。 この属性は 型です。| + +## mode 属性 + +|値|説明| +|-------|--------| +|なし|SOAP メッセージは、転送中はセキュリティで保護されません。| +|メッセージ|SOAP メッセージ セキュリティを使用して、整合性、機密性、サーバー認証、およびクライアント認証を提供します。 既定では、本文は暗号化および署名されます。 サービスは、証明書を使用して構成する必要があります。 クライアント認証は、セキュリティ トークン サービスによってクライアントに発行されるトークンに基づいています。| +|TransportWithMessageCredential|整合性、機密性、およびサーバー認証は、HTTPS によって提供されます。 サービスは、証明書を使用して構成する必要があります。 クライアント認証は、SOAP メッセージ セキュリティによって提供され、セキュリティ トークン サービスによってクライアントに発行されるトークンに基づいています。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-of-ws2007httpbinding.md)|メッセージ レベル セキュリティの設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md)のすべてのバインディング機能を定義します。| + +## 参照 + + + + + [方法 : WSFederationHttpBinding を作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [資格情報の種類の選択](../../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md new file mode 100644 index 00000000000..661008bb4e9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md @@ -0,0 +1,82 @@ +--- +title: "<basicHttpBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6432708d-5465-4bd9-bfc2-466742db99cb +caps.latest.revision: 16 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 16 +--- +# <basicHttpBinding> の <security> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)のセキュリティ機能を定義します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|省略可能です。 使用されるセキュリティの種類を指定します。 既定値は、`None` です。 この属性は 型です。| + +## mode 属性 + +|値|説明| +|-------|--------| +|なし|- メッセージは、転送中はセキュリティで保護されません。| +|Transport|セキュリティは、HTTPS トランスポートを使用して提供されます。 SOAP メッセージは、HTTPS を使用したセキュリティで保護されます。 サービスは、サービスの X.509 証明書を使用してクライアントに認証されます。 クライアントは、提供される ClientCredentialType を使用して認証されます。 「[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-basichttpbinding.md)」を参照してください。| +|メッセージ|セキュリティは、SOAP メッセージ セキュリティを使用して確保されます。 既定では、本文は暗号化および署名されます。 このバインディングの場合、サーバー証明書をクライアントの帯域外で提供するように要求されます。 このバインディングの唯一の有効な `ClientCredentialType` は、`Certificate` です。| +|TransportWithMessageCredential|整合性、機密性、およびサーバー認証は、トランスポート セキュリティによって提供されます。 クライアント認証は、SOAP メッセージ セキュリティで提供されます。 このモードは、ユーザーがユーザー名およびパスワードを使用して認証し、メッセージ転送をセキュリティで保護するために既存の HTTP が配置されている場合に関連します。| +|TransportCredentialOnly|このモードは、メッセージの整合性と機密性を提供しません。 http ベースのクライアント認証を提供します。 このモードを使用するときは、十分に注意する必要があります。 トランスポート セキュリティが他の方法 \(IPSec など\) で提供され、クライアント認証だけが [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] インフラストラクチャで提供されている環境で使用する必要があります。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-basichttpbinding.md)|基本 HTTP サービスのトランスポート セキュリティ設定を定義します。 この要素は、 に対応しています。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-of-basichttpbinding.md)|基本 HTTP サービスのメッセージ セキュリティ設定を定義します。 この要素は、 に対応しています。| + +### 親要素 + +|要素|説明| +|--------|--------| +|バインド|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)のバインディング要素です。| + +## 解説 + 既定では、SOAP メッセージはセキュリティで保護されず、クライアントは認証されません。 この要素を使用すると、`basicHttpBinding` 要素に追加のセキュリティ設定を構成できます。 + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [資格情報の種類の選択](../../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md new file mode 100644 index 00000000000..676ed0998cd --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md @@ -0,0 +1,185 @@ +--- +title: "<customBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 243a5148-bbd1-447f-a8a5-6e7792c0a3f1 +caps.latest.revision: 24 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 24 +--- +# <customBinding> の <security> +カスタム バインディングのセキュリティ オプションを指定します。 + +## 構文 + +``` + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|allowSerializedSigningTokenOnReply|省略可能です。 シリアル化されたトークンを応答で使用できる場合に指定するブール値。 既定値は `false` です。 二重バインドを使用する場合、この設定の既定値は `true` に設定され、行った設定はすべて無視されます。| +|authenticationMode|省略可能です。 イニシエーターとレスポンダーの間で使用される認証モードを指定します。 すべての値については、以下を参照してください。

既定値は、`sspiNegotiated` です。| +|defaultAlgorithmSuite|省略可能です。 メッセージの暗号化とキー ラップ アルゴリズムを設定します。 アルゴリズムとキー サイズは、 クラスにより決まります。 これらのアルゴリズムは、Security Policy Language \(WS\-SecurityPolicy\) の仕様で指定されているアルゴリズムに対応付けられています。

指定できる値を以下に示します。 既定値は `Basic256` です。

この属性は、既定とは異なるアルゴリズムのセットを選択する別のプラットフォームで操作するときに使用されます。 この設定を修正する場合、関連するアルゴリズムの強さと脆弱性に注意する必要があります。 この属性は 型です。| +|includeTimestamp|各メッセージにタイム スタンプが含まれるかどうかを指定するブール値です。 既定値は、`true` です。| +|keyEntropyMode|メッセージをセキュリティで保護するキーを計算する方法を指定します。 キーは、クライアント キー マテリアルのみ、サービス キー マテリアルのみ、または両方の組み合わせに基づいて生成できます。 有効な値は、次のとおりです。

- `ClientEntropy`: セッション キーは、クライアントから提供されるキー データに基づいています。
- `ServerEntropy`: セッション キーは、サーバーから提供されるキー データに基づいています。
- `CombinedEntropy`: セッション キーは、クライアントとサービスから提供されるキー データに基づいています。

既定値は、`CombinedEntropy` です。

この属性は 型です。| +|messageProtectionOrder|メッセージ レベルのセキュリティ アルゴリズムをメッセージに適用する順序を設定します。 以下の値が有効です。

- `SignBeforeEncrypt`: 最初に署名してから暗号化します。
- `SignBeforeEncryptAndEncryptSignature`: 最初に署名してから暗号化し、次に署名を暗号化します。
- `EncryptBeforeSign`: 最初に暗号化してから署名します。

既定値は、使用している WS\-Security のバージョンによって異なります。 WS\-Security 1.1 を使用する場合、既定値は `SignBeforeEncryptAndEncryptSignature` です。 WS\-Security 1.0 を使用する場合、既定値は `SignBeforeEncrypt` です。

この属性は 型です。| +|messageSecurityVersion|省略可能です。 使用される WS\-Security のバージョンを設定します。 以下の値が有効です。

- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11
- WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
- WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10

既定は、WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 であり、単純に `Default` として XML で表現できます。 この属性は 型です。| +|requireDerivedKeys|キーを元の証明キーから派生できる場合に指定するブール値。 既定値は、`true` です。| +|requireSecurityContextCancellation|省略可能です。 セキュリティ コンテキストが不要になったときにそれをキャンセルして終了する必要がある場合に指定するブール値。 既定値は、`true` です。| +|requireSignatureConfirmation|省略可能です。 WS\-Security 署名確認を有効にするかどうかを指定するブール値です。 `true` に設定されている場合、メッセージ署名が応答側で確認されます。 カスタム バインディングが相互証明書に対して構成されているか、発行されたトークンを使用するように構成されている場合 \(WSS 1.1 バインド\)、この属性の既定値は `true` です。 それ以外の場合、既定値は `false` になります。

サービスが要求を完全に認識して応答していることを確認するために、署名確認を使用します。| +|securityHeaderLayout|省略可能です。 セキュリティ ヘッダーでの要素の順序を指定します。 有効な値は、次のとおりです。

- `Strict` : "使用前に宣言する" という一般的な方針に従って、項目がセキュリティ ヘッダーに追加されます。
- `Lax`: WSS: SOAP メッセージ セキュリティに準じた任意の順序で、項目はセキュリティ ヘッダーに追加されます。
- `LaxWithTimestampFirst`: WSS: SOAP メッセージ セキュリティに準じた任意の順序で、項目はセキュリティ ヘッダーに追加されます。ただし、セキュリティ ヘッダーの最初の要素は wsse:Timestamp 要素である必要があります。
- `LaxWithTimestampLast`: WSS: SOAP メッセージ セキュリティに準じた任意の順序で、項目はセキュリティ ヘッダーに追加されます。ただし、セキュリティ ヘッダーの最後の要素は wsse:Timestamp 要素である必要があります。

既定値は、`Strict` です。

この要素は 型です。| + +## authenticationMode 属性 + +|値|説明| +|-------|--------| +|String|`AnonymousForCertificate`

`AnonymousForSslNegotiated`

`CertificateOverTransport`

`IssuedToken`

`IssuedTokenForCertificate`

`IssuedTokenForSslNegotiated`

`IssuedTokenOverTransport`

`Kerberos`

`KerberosOverTransport`

`MutualCertificate`

`MutualCertificateDuplex`

`MutualSslNegotiated`

`SecureConversation`

`SspiNegotiated`

`UserNameForCertificate`

`UserNameForSslNegotiated`

`UserNameOverTransport`

`SspiNegotiatedOverTransport`| + +## defaultAlgorithm 属性 + +|値|説明| +|-------|--------| +|Basic128|Aes128 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192|Aes192 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256|Aes256 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Rsa15|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic192Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDes|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Rsa15|メッセージの暗号化には Aes128 を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|TripleDesRsa15|TripleDes 暗号化を使用し、メッセージ ダイジェストには Sha1 を、キー ラップには Rsa15 を使用します。| +|Basic128Sha256|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic192Sha256|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic256Sha256|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|TripleDesSha256|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa\-oaep\-mgf1p を使用します。| +|Basic128Sha256Rsa15|メッセージの暗号化には Aes128 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic192Sha256Rsa15|メッセージの暗号化には Aes192 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|Basic256Sha256Rsa15|メッセージの暗号化には Aes256 を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| +|TripleDesSha256Rsa15|メッセージの暗号化には TripleDes を使用し、メッセージ ダイジェストには Sha256 を、キー ラップには Rsa15 を使用します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenparameters.md)|現在発行されているトークンを指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/localclientsettings-element.md)|このバインディングのローカル クライアントのセキュリティ設定を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/localservicesettings-element.md)|このバインディングのローカル サービスのセキュリティ設定を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md)|セキュリティで保護されたメッセージ交換サービスの開始に使用される既定値を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + この要素の使い方[!INCLUDE[crabout](../../../../../includes/crabout-md.md)]、「[SecurityBindingElement 認証モード](../../../../../docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md)」および「[方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md)」を参照してください。 + +## 使用例 + 次の例では、カスタム バインディングを使用してセキュリティを構成する方法を示します。 カスタム バインディングを使用して、セキュリティで保護されたトランスポートと共にメッセージ レベルのセキュリティを有効にする方法を示します。 これは、クライアントとサービス間でメッセージを転送する際にセキュリティで保護されたトランスポートが必要であると同時に、そのメッセージをメッセージ レベルでセキュリティ保護する必要がある場合に便利です。 この構成は、システム指定のバインディングではサポートされていません。 + + サービス構成では、TLS\/SSL プロトコルを使用して保護される TCP 通信、および Windows メッセージ セキュリティをサポートするカスタム バインディングが定義されます。 カスタム バインディングはサービス証明書を使用して、トランスポート レベルでサービスを認証し、クライアントとサービス間で転送中のメッセージを保護します。 これは [\](../../../../../docs/framework/configure-apps/file-schema/wcf/sslstreamsecurity.md) バインディング要素によって実現されます。 サービスの証明書は、サービス動作を使用して構成されます。 + + さらに、カスタム バインディングは Windows 資格情報の種類 \(既定の資格情報の種類\) によるメッセージ セキュリティを使用します。 これは [security](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) バインディング要素によって実現されます。 Kerberos 認証機構が利用できる場合は、クライアントとサービスはどちらもメッセージ レベルのセキュリティを使用して認証されます。 Kerberos 認証機構が利用できない場合は、NTLM 認証が使用されます。 NTLM はサービスに対してクライアントを認証しますが、クライアントに対するサービスの認証は行いません。 [security](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) バインディング要素は `SecureConversation` authenticationType を使用するように構成されます。この結果、クライアントとサービスの両方でセキュリティ セッションが作成されます。 これは、サービスの双方向コントラクトを動作させるために必要です。 この例の実行の詳細については、「[カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md)」を参照してください。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [カスタム バインディング セキュリティ](../../../../../docs/framework/wcf/samples/custom-binding-security.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-msmqintegrationbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-msmqintegrationbinding.md new file mode 100644 index 00000000000..cffdc1e30c1 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-msmqintegrationbinding.md @@ -0,0 +1,73 @@ +--- +title: "<msmqIntegrationBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ae5c68a8-14a2-4c6e-b9e0-3e94e3e9135e +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 13 +--- +# <msmqIntegrationBinding> の <security> +メッセージ キュー \(MSMQ\) 統合チャネルのトランスポート セキュリティ設定を定義します。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|メッセージ キュー統合チャネルの整合性、機密性、および認証を制御するセキュリティの種類を指定します。 以下の値が有効です。

- None: セキュリティは無効になります。
- Transport: 保護と認証はトランスポートが提供します。 これは、2 つのキュー マネージャー間のメッセージ セキュリティに適用されます。 アプリケーションとキュー マネージャーとの間にセキュリティは提供されません。 既存の Msmq アプリケーションは、この種類のセキュリティ モードと機能的に等価です。

既定値は `Transport` です。 この属性は 型です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-msmqintegrationbinding.md)|メッセージ キュー統合トランスポートのセキュリティ設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/msmqintegrationbinding.md)のバインディング要素です。| + +## 参照 + + + + + [WCF のキュー](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/msmqintegrationbinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-nethttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-nethttpbinding.md new file mode 100644 index 00000000000..ed052fa7b0c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-nethttpbinding.md @@ -0,0 +1,82 @@ +--- +title: "<netHttpBinding> の <security | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dc41f6f7-cabc-4a64-9fa0-ceabf861b348 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <netHttpBinding> の <security +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)のセキュリティ機能を定義します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|省略可能です。 使用されるセキュリティの種類を指定します。 既定値は、`None` です。 この属性は 型です。| + +## mode 属性 + +|値|説明| +|-------|--------| +|なし|- メッセージは、転送中はセキュリティで保護されません。| +|Transport|セキュリティは、HTTPS トランスポートを使用して提供されます。 SOAP メッセージは、HTTPS を使用したセキュリティで保護されます。 サービスは、サービスの X.509 証明書を使用してクライアントに認証されます。 クライアントは、提供される ClientCredentialType を使用して認証されます。| +|メッセージ|セキュリティは、SOAP メッセージ セキュリティを使用して確保されます。 既定では、本文は暗号化および署名されます。 このバインディングの場合、サーバー証明書をクライアントの帯域外で提供するように要求されます。 このバインディングの唯一の有効な `ClientCredentialType` は、`Certificate` です。| +|TransportWithMessageCredential|整合性、機密性、およびサーバー認証は、トランスポート セキュリティによって提供されます。 クライアント認証は、SOAP メッセージ セキュリティで提供されます。 このモードは、ユーザーがユーザー名およびパスワードを使用して認証し、メッセージ転送をセキュリティで保護するために既存の HTTP が配置されている場合に関連します。| +|TransportCredentialOnly|このモードは、メッセージの整合性と機密性を提供しません。 http ベースのクライアント認証を提供します。 このモードを使用するときは、十分に注意する必要があります。 トランスポート セキュリティが他の方法 \(IPSec など\) で提供され、クライアント認証だけが [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] インフラストラクチャで提供されている環境で使用する必要があります。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-nethttpbinding.md)|基本 HTTP サービスのトランスポート セキュリティ設定を定義します。 この要素は、 に対応しています。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-of-nethttpbinding.md)|基本 HTTP サービスのメッセージ セキュリティ設定を定義します。 この要素は、 に対応しています。| + +### 親要素 + +|要素|説明| +|--------|--------| +|バインド|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)のバインディング要素です。| + +## 解説 + 既定では、SOAP メッセージはセキュリティで保護されず、クライアントは認証されません。 この要素を使用すると、`netHttpBinding` 要素に追加のセキュリティ設定を構成できます。 + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [資格情報の種類の選択](../../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-netmsmqbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-netmsmqbinding.md new file mode 100644 index 00000000000..f801cf23aab --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-netmsmqbinding.md @@ -0,0 +1,69 @@ +--- +title: "<netMsmqBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 001d11a9-7439-498c-b09d-fca20eaf8cd3 +caps.latest.revision: 15 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 15 +--- +# <netMsmqBinding> の <security> +MSMQ バインディングのセキュリティ設定を定義します。 トランスポートまたは SOAP セキュリティが有効であるかどうか、および有効である場合は、どの認証モードと保護レベルを使用するかを指定します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|整合性、機密性、および認証を制御するセキュリティの種類を指定します。 以下の値が有効です。

- None: セキュリティは無効になります。
- Transport: 保護と認証はトランスポートが提供します。 これは、2 つのキュー マネージャー間のメッセージ セキュリティに適用されます。 アプリケーションとキュー マネージャーとの間にセキュリティは提供されません。 既存の Msmq アプリケーションは、この種類のセキュリティ モードと機能的に等価です。
- Message: エンドツーエンドのアプリケーション セキュリティを指定します。 トランスポート層で提供されるセキュリティありません。 これは、他の標準バインディングによって提供されたセキュリティと同様です。
- Both: トランスポートと SOAP メッセージング レイヤーの両方でセキュリティを提供します。 同じ資格情報が、両方のレベルで要求されます。

既定値は、Transport です。 この属性は 型です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-of-netmsmqbinding.md)|SOAP メッセージのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-netmsmqbinding.md)|MSMQ トランスポートのセキュリティ設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|バインド|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/netmsmqbinding.md) のバインディング要素です。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) + [WCF のキュー](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-netnamedpipebinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-netnamedpipebinding.md new file mode 100644 index 00000000000..3aeecda4c4e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-netnamedpipebinding.md @@ -0,0 +1,66 @@ +--- +title: "<netNamedPipeBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb3cb022-637e-49fd-92e8-6766038affa7 +caps.latest.revision: 11 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 11 +--- +# <netNamedPipeBinding> の <security> +バインディングのセキュリティ設定を定義します。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|このバインディングに適用されるセキュリティの種類を指定します。 以下の値が有効です。

- None: セキュリティは無効になります。
- Transport: セキュリティは、基になるトランスポート ベースのセキュリティを使用して提供されます。 このモードでの保護レベルを制御できます。
- 既定値は、Transport です。 この属性は 型です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|transport|トランスポートのセキュリティ設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|バインド|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/netnamedpipebinding.md)のバインディング要素です。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [資格情報の種類の選択](../../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-netpeerbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-netpeerbinding.md new file mode 100644 index 00000000000..1497319c116 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-netpeerbinding.md @@ -0,0 +1,78 @@ +--- +title: "<netPeerBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1ef40d8c-f903-4426-9b08-da81462766d8 +caps.latest.revision: 14 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 14 +--- +# <netPeerBinding> の <security> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/netpeertcpbinding.md) のセキュリティ設定を定義します。使用される認証の種類とメッセージ トランスポートで使用されるセキュリティを含みます。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|省略可能です。 このバインディングで構成されたピアが使用するセキュリティの種類を指定します。 既定値は `Message` です。 この属性は 型です。| + +## mode 属性 + +|値|説明| +|-------|--------| +|メッセージ|SOAP セキュリティにより、認証、整合性、および機密性が実現します。| +|なし|セキュリティを無効にします。| +|Transport|セキュリティは、HTTPS を使用して確保されます。| +|TransportWithMessageCredential|HTTPS により、認証および機密性が実現します。 SOAP メッセージには、豊富な資格情報の種類が用意されています。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-netpeertcpbinding.md)|このバインディングで構成されたピアが送信するセキュリティで保護されたメッセージのトランスポートの型を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/netpeertcpbinding.md)のすべてのバインディング機能を定義します。| + +## 解説 + セキュリティは、メッセージ固有にすることも、トランスポート固有にすることもできます。 + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [資格情報の種類の選択](../../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-nettcpbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-nettcpbinding.md new file mode 100644 index 00000000000..d3317b429de --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-nettcpbinding.md @@ -0,0 +1,83 @@ +--- +title: "<netTcpBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 286cd191-4fd5-4c4e-a223-9c71cf7fdead +caps.latest.revision: 18 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 18 +--- +# <netTcpBinding> の <security> +バインディングのセキュリティ設定を定義します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|省略可能です。 適用するセキュリティの種類を指定します。 有効な値を次に示します。 既定値は `Transport` です。

この属性は 型です。| + +## mode 属性 + +|値|説明| +|-------|--------| +|なし|セキュリティを無効にします。| +|Transport|トランスポート セキュリティは、TCP 経由の TLS または SPNaego を使用して提供されます。 サービスは、SSL 証明書を使用して設定する必要があります。 このモードでの保護レベルを制御できます。| +|メッセージ|セキュリティは、SOAP メッセージ セキュリティを使用して確保されます。 既定では、SOAP 本文は暗号化および署名されます。 このモードは、サービス資格情報をクライアントの帯域外で使用可能にするかどうか、使用するアルゴリズム スイート、メッセージ本文に適用する保護レベルなど、さまざまな機能を提供します。 クライアント認証はセッションごとに 1 回実行され、認証の結果はセッションの存続中にキャッシュされます。| +|TransportWithMessageCredential|トランスポート セキュリティは、メッセージ セキュリティと組み合わせて使用されます。 トランスポート セキュリティは、TCP 経由の TLS または SPNego によって提供され、整合性、機密性、およびサーバー認証が保証されます。 SOAP メッセージ セキュリティは、クライアント認証を提供します。 既定では、クライアント認証はセッションごとに 1 回実行され、認証の結果はセッションの存続中にキャッシュされます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-nettcpbinding.md)|トランスポートのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-element-of-nettcpbinding.md)|メッセージのセキュリティ設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|バインド|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md)のバインディング要素です。| + +## 解説 + 標準バインディングにはそれぞれ、転送セキュリティ要件を制御するためのパラメーターが用意されています。 通常、これらのパラメーターには、使用されるセキュリティ レベル \(メッセージ レベルまたはトランスポート レベル\) を指定したセキュリティ モードと、クライアント資格情報の種類が含まれています。 これらのパラメーターが提示するオプションの選択に基づいて、適切なセキュリティが設定されたチャネル スタックが構築されます。 + + WCF \(Windows Communication Foundation\) に用意されているシステム標準のバインディグは、最も一般的なシナリオ要件の一部を満たすように設計されたセットです。 これらのバイディングでは、特定のシナリオを対象とするセキュリティ要件を指定できます。 + + この構成要素によって、`netTcpBinding` のセキュリティ仕様が提供されます。 これは、コンピューター間通信に適した、安全で信頼できる最適化されたバインディングです。 既定では、このバインディングは、メッセージを配信するための TCP、メッセージの保護と認証を行うための Windows セキュリティ、信頼性を高めるための WS\-ReliableMessaging、およびバイナリ メッセージのエンコーディングをサポートするランタイム通信スタックを生成します。 + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-peertransport.md b/docs/framework/configure-apps/file-schema/wcf/security-of-peertransport.md new file mode 100644 index 00000000000..2aa8c125d96 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-peertransport.md @@ -0,0 +1,71 @@ +--- +title: "<peerTransport> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f73634ed-f896-4968-bf74-5e5ac52d3b6b +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# <peerTransport> の <security> +ピア チャネルに関連付けられたセキュリティ設定を格納します。使用される認証の種類とメッセージ トランスポートで使用されるセキュリティを含みます。 + +## 構文 + +``` + + + + 型です。| + +## mode 属性 + +|値|説明| +|-------|--------| +|`None`|セキュリティを無効にします。| +|`Transport`|セキュリティは、HTTPS を使用して確保されます。| +|`Message`|SOAP セキュリティにより、認証、整合性、および機密性が実現します。| +|`TransportWithMessageCredential`|HTTPS により、認証および機密性が実現します。 SOAP メッセージには、豊富な資格情報の種類が用意されています。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-peertransport.md)|カスタム バインディングのピア トランスポートを定義します。 この要素には、サービスと対話するときに使用される資格情報を指定する `clientCredentialType` 属性があります。 この属性は 型です。

この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peertransport.md)|カスタム バインディングのピア トランスポートを定義します。| + +## 参照 + + + + [トランスポート セキュリティ](../../../../../docs/framework/wcf/feature-details/transport-security.md) + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-webhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-webhttpbinding.md new file mode 100644 index 00000000000..06589634bff --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-webhttpbinding.md @@ -0,0 +1,82 @@ +--- +title: "<webHttpBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 727cf3d2-6f56-48ad-a59f-ba423edb9c83 +caps.latest.revision: 9 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 9 +--- +# <webHttpBinding> の <security> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)で構成されるエンドポイントのセキュリティ要件を指定します。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|トランスポート レベルのセキュリティをエンドポイントで使用するか、セキュリティを使用しないかを指定します。 既定値は、`None` です。 この属性は 型です。| + +## Mode 属性 + +|値|説明| +|-------|--------| +|なし|セキュリティを無効にします。| +|Transport|セキュリティは、HTTPS を使用して確保されます。 サービスは、SSL 証明書を使用して構成する必要があります。 メッセージは、HTTPS およびサービスを使用して完全にセキュリティで保護され、サービスの SSL 証明書を使用するクライアントによって認証されます。 クライアント認証は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-webhttpbinding.md) の `ClientCredentialType` 属性を使用して制御されます。| +|TransportCredentialOnly|このモードは、メッセージの整合性と機密性を提供しません。 HTTP ベースのクライアント認証を提供します。 このモードを使用するときは、十分に注意する必要があります。 トランスポート セキュリティが他の方法 \(IPSec など\) で提供され、クライアント認証だけが [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] インフラストラクチャで提供されている環境で使用する必要があります。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-webhttpbinding.md)|トランスポートのセキュリティ設定を定義します。 この要素は、 型に対応しています。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md)|SOAP メッセージに代わって HTTP 要求に応答する [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] Web サービスのエンドポイントを構成するために使用するバインド要素。| + +## 参照 + + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [資格情報の種類の選択](../../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) + [WCF Web HTTP プログラミング モデル](../../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-ws2007httpbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-ws2007httpbinding.md new file mode 100644 index 00000000000..b45fcf5ce74 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-ws2007httpbinding.md @@ -0,0 +1,85 @@ +--- +title: "<ws2007HttpBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fdda0ff7-b462-4e26-af52-e87ddab71945 +caps.latest.revision: 10 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 10 +--- +# <ws2007HttpBinding> の <security> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/ws2007httpbinding.md) 要素と共に使用されるセキュリティ設定を表します。 + +## 構文 + +``` + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`mode`|- 省略可能です。 適用するセキュリティの種類を指定します。 既定値は、`Message` です。

この属性は 型です。| + +## Mode 属性 + +|値|説明| +|-------|--------| +|`None`|セキュリティを無効にします。| +|`Transport`|セキュリティは、HTTPS を使用して確保されます。 サービスは、Secure Sockets Layer \(SSL\) 証明書を使用して構成する必要があります。 メッセージは、HTTPS およびサービスを使用して完全にセキュリティで保護され、サービスの SSL 証明書を使用するクライアントによって認証されます。 クライアント認証は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-ws2007httpbinding.md) 要素の `ClientCredentials` 属性によって制御されます。| +|`Message`|セキュリティは、SOAP メッセージ セキュリティを使用して確保されます。 既定では、SOAP 本文は暗号化および署名されます。 このモードは、サービス資格情報をクライアントの帯域外で使用可能にするかどうか、使用するアルゴリズム スイート、 によってメッセージ本文に適用する保護レベルなど、さまざまな機能を提供します。 クライアント認証はセッションごとに 1 回実行され、認証の結果はセッションの存続中にキャッシュされます。| +|`TransportWithMessageCredential`|このモードでは、HTTPS は、整合性、機密性、およびサーバー認証を提供し、SOAP メッセージ セキュリティはクライアント認証を提供します。 既定では、クライアント認証はセッションごとに 1 回実行され、認証の結果はセッションの存続中にキャッシュされます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-ws2007httpbinding.md)|トランスポートのセキュリティ設定を定義します。 この要素は、 型に対応しています。 これらの設定は、モードが Transport に設定されている場合のみ適用されます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-of-ws2007httpbinding.md)|メッセージのセキュリティ設定を定義します。 この要素は、 型に対応しています。 これらの設定は、モードが Transport に設定されている場合は適用されません。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/ws2007httpbinding.md)|HTTP トランスポート アプリケーションのセキュリティで保護されたバインド。| + +## 解説 + この要素は、WS\-\* 仕様を実装するサービスと相互運用するようにデザインされています。 このバインディングのトランスポート セキュリティは、SSL \(Secure Sockets Layer\) over HTTP または HTTPS です。 + +## 参照 + + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-wsdualhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-wsdualhttpbinding.md new file mode 100644 index 00000000000..36bae299cdc --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-wsdualhttpbinding.md @@ -0,0 +1,75 @@ +--- +title: "<wsDualHttpBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 869c05e7-4ebe-467d-95ab-c8f8de4e6b9e +caps.latest.revision: 15 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 15 +--- +# <wsDualHttpBinding> の <security> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md)のセキュリティ機能を定義します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|- 省略可能です。 適用するセキュリティの種類を指定します。 既定値は `Message` です。 この属性は 型です。| + +## Mode 属性 + +|値|説明| +|-------|--------| +|なし|セキュリティを無効にします。| +|メッセージ|セキュリティは、SOAP メッセージ セキュリティを使用して確保されます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-of-wsdualhttpbinding.md)|メッセージ レベル セキュリティの設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md)のすべてのバインディング機能を定義します。| + +## 解説 + 二重バインディングでは、クライアントの IP アドレスをサービスに公開します。 クライアントは、セキュリティを使用して信頼するサービスに対して接続のみを可能にする必要があります。 + +## 参照 + + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-wsfederationhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-wsfederationhttpbinding.md new file mode 100644 index 00000000000..658c8625173 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-wsfederationhttpbinding.md @@ -0,0 +1,124 @@ +--- +title: "<wsFederationHttpBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a8e5e854-b8dc-4921-843d-34b6a4a6a8ba +caps.latest.revision: 15 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 15 +--- +# <wsFederationHttpBinding> の <security> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md) のセキュリティ設定を定義します。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|省略可能です。 適用するセキュリティの種類を指定します。 既定値は `Message` です。 この属性は 型です。| + +## Mode 属性 + +|値|説明| +|-------|--------| +|なし|SOAP メッセージは、転送中はセキュリティで保護されません。| +|メッセージ|SOAP メッセージ セキュリティを使用して、整合性、機密性、サーバー認証、およびクライアント認証を提供します。 既定では、本文は暗号化および署名されます。 このサービスは、証明書を使用して設定する必要があります。 クライアント認証は、セキュリティ トークン サービスによってクライアントに発行されるトークンに基づいています。| +|TransportWithMessageCredential|整合性、機密性、およびサーバー認証は、HTTPS によって提供されます。 このサービスは、証明書を使用して設定する必要があります。 クライアント認証は、SOAP メッセージ セキュリティによって提供され、セキュリティ トークン サービスによってクライアントに発行されるトークンに基づいています。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-element-of-wsfederationhttpbinding.md)|メッセージ レベル セキュリティの設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md)のすべてのバインディング機能を定義します。| + +## 参照 + + + + + [方法 : WSFederationHttpBinding を作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [資格情報の種類の選択](../../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md new file mode 100644 index 00000000000..f2f1785699f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md @@ -0,0 +1,85 @@ +--- +title: "<wsHttpBinding> の <security> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8658b162-2ddf-4162-a869-aa517a42288a +caps.latest.revision: 18 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 18 +--- +# <wsHttpBinding> の <security> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)のセキュリティ機能を表します。 + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|モード|- 省略可能です。 適用するセキュリティの種類を指定します。 既定値は、`Message` です。
- この属性は 型です。| + +## Mode 属性 + +|値|説明| +|-------|--------| +|なし|セキュリティを無効にします。| +|Transport|セキュリティは、HTTPS を使用して確保されます。 サービスは、SSL 証明書を使用して構成する必要があります。 メッセージは、HTTPS を使用して完全にセキュリティで保護され、サービスの SSL 証明書を使用するクライアントによって認証されます。 クライアント認証は、`ClientCredentials` 属性を使用して制御されます。 これは [\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-wshttpbinding.md) の属性です。| +|メッセージ|セキュリティは、SOAP メッセージ セキュリティを使用して確保されます。 既定では、SOAP 本文は暗号化および署名されます。 このモードは、サービス資格情報をクライアントの帯域外で使用可能にするかどうか、使用するアルゴリズム スイート、Security.Message プロパティを使用してメッセージ本文に適用する保護レベルなど、さまざまな機能を提供します。 クライアント認証はセッションごとに 1 回実行され、認証の結果はセッションの存続中にキャッシュされます。| +|TransportWithMessageCredential|このモードでは、HTTPS は、整合性、機密性、およびサーバー認証を提供し、SOAP メッセージ セキュリティはクライアント認証を提供します。 既定では、クライアント認証はセッションごとに 1 回実行され、認証の結果はセッションの存続中にキャッシュされます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-wshttpbinding.md)|トランスポートのセキュリティ設定を定義します。 この要素は、 型に対応しています。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-of-wshttpbinding.md)|メッセージのセキュリティ設定を定義します。 この要素は、 型に対応しています。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)|HTTP トランスポート アプリケーションのセキュリティで保護されたバインド。| + +## 解説 + WSHttpBinding クラスは、WS\-\* 仕様を実装するサービスと相互運用するようにデザインされています。 このバインディングのトランスポート セキュリティは、SSL \(Secure Sockets Layer\) over HTTP または HTTPS です。 + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/service.md b/docs/framework/configure-apps/file-schema/wcf/service.md new file mode 100644 index 00000000000..c6a865170ab --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/service.md @@ -0,0 +1,81 @@ +--- +title: "<service> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 13123dd6-c4a9-4a04-a984-df184b851788 +caps.latest.revision: 27 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 27 +--- +# <service> +`service` 要素には Windows Communication Foundation \(WCF\) サービスの設定が含まれます。 また、サービスを公開するエンドポイントも含まれます。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|behaviorConfiguration|サービスのインスタンス化に使用される動作の動作名を含む文字列。 動作名は、サービスが定義される時点でスコープ内にある必要があります。 既定値は空の文字列です。| +|name|インスタンス化するサービスの型を指定する必須の文字列属性。 この設定は有効な型と同じでなければなりません。 形式は、`Namespace.Class` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpoint-element.md)|このサービスを公開する `endpoint` 要素のコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/host.md)|このサービス インスタンスのホストを指定します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/services.md)|すべての WCF 構成要素のルート要素です。| + +## 解説 + サービスは、設定ファイルの `services` セクションで定義されます。 アセンブリには、任意の数のサービスを含めることができます。 各サービスには、独自の `service` 設定セクションがあります。 このセクションとその内容は、サービス コントラクト、動作、および特定のサービスのエンドポイントを定義します。 + + `behaviorConfiguration` 要素も省略可能です。 サービスが使用する動作を識別します。 この属性で指定された動作は、同じ設定ファイルの範囲にある動作にリンクしている必要があります。 + + 各サービスでは、固有のアドレスとバインディングを持つ 1 つまたは複数のエンドポイントが公開されます。 構成ファイル内で使用されるすべてのバインディングは、そのファイルのスコープ内で定義される必要があります。 バインディングは、`name` 属性と `bindingConfiguration` 属性の組み合わせによってエンドポイントにリンクされます。 `name` 属性は、バインディングが定義されているセクションを示します。 `bindingConfiguration` 属性は、バインディング セクション内の使用される構成を定義します。 バインディング セクションでは、複数の設定を定義できます。 + +## 使用例 + これはサービスの構成の例です。 + +``` + + + +``` + +## 参照 + + [サービスの構成](../../../../../docs/framework/wcf/configuring-services.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/serviceactivations.md b/docs/framework/configure-apps/file-schema/wcf/serviceactivations.md new file mode 100644 index 00000000000..6f217ef2902 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/serviceactivations.md @@ -0,0 +1,77 @@ +--- +title: "<serviceActivations> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 97e665b6-1c51-410b-928a-9bb42c954ddb +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <serviceActivations> +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスの種類にマップする仮想サービス アクティベーション設定を定義する設定を追加できる構成要素。 これにより、.svc ファイルを使用せずに、WAS\/IIS でホストされているサービスをアクティブ化できます。 + +## 構文 + +``` + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-serviceactivations.md)|サービス アプリケーションのアクティベーションを指定する構成要素を追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md)|環境をホストするサービスがインスタンス化する特定のトランスポートの型を定義します。| + +## 解説 + web.config ファイルでアクティベーション設定を構成する方法を次の例に示します。 + +``` + +    +      +        +      +    + +``` + + この構成を使用して、.svc ファイルを使用せずに、GreetingService をアクティブ化できます。 + + `` はアプリケーション レベルの構成であることに注意してください。 構成を格納した `web.config` は、仮想アプリケーションのルートの下に配置する必要があります。 また、`serviceHostingEnvironment` は machinetoApplication の継承可能なセクションです。 コンピューターのルートに単一のサービスを登録すると、アプリケーションの各サービスはこのサービスを継承します。 + + 構成ベースのアクティベーションは、http および非 http プロトコル経由のアクティベーションをサポートします。 relatativeAddress では、 .svc、.xoml、.xamlx などの拡張子が必要です。 既知の buildProviders に対して独自の拡張子をマップできます。これにより、任意の拡張子を使用してサービスをアクティブ化できるようになります。 競合が発生した場合には、`` セクションにより、.svc の登録がオーバーライドされます。 + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/serviceauthenticationmanager.md b/docs/framework/configure-apps/file-schema/wcf/serviceauthenticationmanager.md new file mode 100644 index 00000000000..8e034c297e3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/serviceauthenticationmanager.md @@ -0,0 +1,55 @@ +--- +title: "<serviceAuthenticationManager> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5d69e64f-f325-4d55-8e2d-0fb30f222dda +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <serviceAuthenticationManager> +サービス レベルで転送、メッセージ、または送信元の有効性を確立するワークフロー構成要素を提供します。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|serviceAuthenticationManagerType|現在の動作の認証ポリシーの種類を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md b/docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md new file mode 100644 index 00000000000..4c36972d18a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md @@ -0,0 +1,112 @@ +--- +title: "<serviceAuthorization> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 18cddad5-ddcb-4839-a0ac-1d6f6ab783ca +caps.latest.revision: 26 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 26 +--- +# <serviceAuthorization> 要素 +サービス操作へのアクセスを許可する設定を指定します。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|impersonateCallerForAllOperations|サービスのすべての操作が呼び出し元を偽装するかどうかを指定するブール値。 既定値は、`false` です。

特定のサービス操作が呼び出し元を偽装する場合、スレッド コンテキストは、指定されたサービスを実行する前に呼び出し元のコンテキストに切り替えられます。| +|principalPermissionMode|サーバーでの操作を実行するために使用されるプリンシパルを設定します。 次の値があります。

- なし
- UseWindowsGroups
- UseAspNetRoles
- Custom

既定値は UseWindowsGroups です。 値は、 型です。 この属性の使い方の詳細については、「[方法 : PrincipalPermissionAttribute クラスでアクセスを制限する](../../../../../docs/framework/wcf/how-to-restrict-access-with-the-principalpermissionattribute-class.md)」を参照してください。| +|roleProviderName|Windows Communication Foundation \(WCF\) アプリケーションにロール情報を提供するロール プロバイダーの名前を指定する文字列。 既定値は空の文字列です。| +|ServiceAuthorizationManagerType|サービス承認マネージャーの型を含む文字列。 詳細については、「」を参照してください。| + +### 子要素 + +|要素|説明| +|--------|--------| +|authorizationPolicies|`add` キーワードを使用して追加できる承認ポリシーの種類のコレクションを含みます。 各承認ポリシーは、文字列の単一の必須属性 `policyType` を含みます。 この属性は、入力クレームのセットをクレームの別のセットに変換することを可能にする承認ポリシーを指定します。 アクセス制御は、それに基づいて許可または拒否されます。 詳細については、「」を参照してください。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|サービスの動作設定のコレクションが含まれています。| + +## 解説 + このセクションには、承認、カスタム ロール プロバイダー、および偽装に影響する要素が含まれています。 + + `principalPermissionMode` 属性は、保護メソッドの使用を承認するときに使用するユーザー グループを指定します。 既定値は `UseWindowsGroups` で、リソースにアクセスしようとしている ID を、"Administrators" や "Users" などの Windows グループから検索するように指定します。 `UseAspNetRoles` を指定すると、次のコードに示すように、\ 要素の下で構成されるカスタム ロール プロバイダーを使用することもできます。 + +``` + + + + + + + + + +``` + + `principalPermissionMode` 属性で `roleProviderName` を使用する方法を次のコードに示します。 + +``` + + + + + + +``` + + この構成要素の使い方の詳細な例については、「[サービス操作へのアクセスの承認](../../../../../docs/framework/wcf/samples/authorizing-access-to-service-operations.md)」および「[承認ポリシー](../../../../../docs/framework/wcf/samples/authorization-policy.md)」を参照してください。 + +## 参照 + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [サービス操作へのアクセスの承認](../../../../../docs/framework/wcf/samples/authorizing-access-to-service-operations.md) + [方法 : サービスで使用するカスタム承認マネージャーを作成する](../../../../../docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md) + [方法 : PrincipalPermissionAttribute クラスでアクセスを制限する](../../../../../docs/framework/wcf/how-to-restrict-access-with-the-principalpermissionattribute-class.md) + [承認ポリシー](../../../../../docs/framework/wcf/samples/authorization-policy.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md b/docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md new file mode 100644 index 00000000000..74ecbf21777 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md @@ -0,0 +1,26 @@ +--- +title: "<serviceBehaviors> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5aed9062-cc36-4b72-b9dd-a3018b8ffafc +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <serviceBehaviors> +この構成セクションは、特定のサービスに対して定義されたすべての動作を表します。 + +## 参照 + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md) + [サービスのランタイム動作の指定](../../../../../docs/framework/wcf/specifying-service-run-time-behavior.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md b/docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md new file mode 100644 index 00000000000..dabe77556b7 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md @@ -0,0 +1,64 @@ +--- +title: "<clientCredentials> 要素の <serviceCertificate> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e50c0ac5-f0df-4c90-b54b-fc602c1f84ea +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <clientCredentials> 要素の <serviceCertificate> +クライアントに対してサービスを認証する際に使用される証明書を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/defaultcertificate-element.md)|ネゴシエーション プロトコル経由でサービスまたは STS が証明書を提供しないときに使用される X.509 証明書を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/scopedcertificates-element.md)|認証用の \(範囲指定された\) 特定のサービスにより提供される X.509 証明書のコレクションを表します。 このコレクションは一般に、フェデレーション シナリオでセキュリティ トークン サービスのサービス証明書を指定するために使用されます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-servicecertificate-element.md)|クライアントで使用されるサービス証明書の認証動作を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)|サービスに対するクライアント自身の認証のためにクライアントによって使用される資格情報を指定します。| + +## 解説 + この構成要素は、SSL 認証を使用してサービスから提示された証明書を検証するためにクライアントが使用する設定を指定します。 また、このクラスには、メッセージ セキュリティを使用してサービスへのメッセージを暗号化するためにクライアントで明示的に構成される、サービスの証明書も含まれます。 + + `serviceCertificate` 要素の属性は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-clientcredentials-element.md)の属性と同じです。 + +## 参照 + + + + + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md b/docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md new file mode 100644 index 00000000000..a0d414e36d5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md @@ -0,0 +1,65 @@ +--- +title: "<serviceCredentials> の <serviceCertificate> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 597ae6d5-4938-4950-9f5e-b2280e816182 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <serviceCredentials> の <serviceCertificate> +メッセージ セキュリティ モードを使用しているクライアントへのサービスの認証に使用する X.509 証明書を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`findValue`|X.509 証明書ストアで検索する値を含む文字列。 属性に含まれている型は、指定された X509FindType の要件を満たしている必要があります。 既定値は空の文字列です。| +|`storeLocation`|クライアントがサーバーの証明書の検証に使用する X.509 証明書ストアの場所を指定します。 以下の値が有効です。

- LocalMachine: ローカル マシンに割り当てられた証明書ストア。
- CurrentUser: 現在のユーザーに割り当てられた証明書ストア。

既定は LocalMachine です。| +|`storeName`|開く X.509 証明書ストアの名前を指定します。 以下の値が有効です。

- AddressBook: 他のユーザー用の証明書ストア。
- AuthRoot: サードパーティ証明機関 \(CA\) の証明書ストア。
- CertificatAuthority: 中間証明機関 \(CA\) の証明書ストア。
- Disallowed: 失効した証明書の証明書ストア。
- My: 個人用証明書の証明書ストア。
- Root: 信頼されたルート証明機関 \(CA\) の証明書ストア。
- TrustedPeople: 直接信頼されたユーザーやリソースの証明書ストア。
- TrustedPublisher: 直接信頼された発行者の証明書ストア。

既定値は My です。| +|`X509FindType`|実行する X.509 検索の種類を定義します。 以下の値が有効です。

- FindByThumbprint
- FindBySubjectName
- FindBySubjectDistinguishedName
- FindByIssuerName
- FindByIssuerDistinguishedName
- FindBySerialNumber
- FindByTimeValid
- FindByTimeNotYetValid
- FindByTemplateName
- FindByApplicationPolicy
- FindByCertificatePolicy
- FindByExtension
- FindByKeyUsage
- FindBySubjectKeyIdentifier

`findValue` 属性に含まれている型は、指定された X509FindType の要件を満たしている必要があります。

既定値は FindBySubjectDistinguishedName です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)|サービスの認証に使用される資格情報と、クライアントの資格情報検証関連の設定を指定します。| + +## 解説 + メッセージ セキュリティ モードを使用しているクライアントへのサービスの認証に使用する X.509 証明書を指定するには、この要素を使用します。 定期的に更新される証明書を使用している場合は、証明書のサムプリントが変更されます。 その場合、証明書を同じサブジェクト名で再発行できるため、`X509FindType` としてサブジェクト名を使用します。 + + この要素の使い方[!INCLUDE[crabout](../../../../../includes/crabout-md.md)]、「[方法 : クライアントの資格情報の値を指定する](../../../../../docs/framework/wcf/how-to-specify-client-credential-values.md)」を参照してください。 + +## 参照 + + + + + [方法 : クライアントの資格情報の値を指定する](../../../../../docs/framework/wcf/how-to-specify-client-credential-values.md) + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicecredentials.md b/docs/framework/configure-apps/file-schema/wcf/servicecredentials.md new file mode 100644 index 00000000000..4c5aa73181e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicecredentials.md @@ -0,0 +1,74 @@ +--- +title: "<serviceCredentials> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 96db336c-4f7a-4193-81a5-910b8ffd804f +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <serviceCredentials> +サービスの認証に使用される資格情報と、クライアントの資格情報検証関連の設定を指定します。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`type`|この設定要素の種類を指定する文字列です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-servicecredentials.md)|クライアント証明書を帯域外で使用できるときに使用される証明書を指定します。 この要素は、クライアント証明書の検証設定も指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md)|このサービス用に現在発行されているトークンを指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/peer-of-servicecredentials.md)|ピア ノードの現在の資格情報を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationauthentication-of-servicecredential.md)|セキュリティで保護されたメッセージ交換の現在の資格情報を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md)|サービスが自身を識別するために使用する証明書を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/usernameauthentication.md)|ユーザー名とパスワードの検証の設定を指定します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/windowsauthentication-of-servicecredentials.md)|Windows 資格情報の検証の設定を指定します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 参照 + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicedebug.md b/docs/framework/configure-apps/file-schema/wcf/servicedebug.md new file mode 100644 index 00000000000..0f8c278c7f4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicedebug.md @@ -0,0 +1,81 @@ +--- +title: "<serviceDebug> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6d7ea986-f232-49fe-842c-f934d9966889 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# <serviceDebug> +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスのデバッグおよびヘルプ情報機能を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|httpHelpPageBinding|HTTP を利用してサービス ヘルプ ページにアクセスする場合に使用するバインディングの種類を指定する文字列値。

[System.ServiceModel.Channels.IReplyChannel](assetId:///System.ServiceModel.Channels.IReplyChannel?qualifyHint=False&autoUpgrade=True) をサポートする内部バインディング要素を使用したバインディングでのみサポートされます。 さらに、バインディングの [System.ServiceModel.Channels.MessageVersion](assetId:///System.ServiceModel.Channels.MessageVersion?qualifyHint=False&autoUpgrade=True) プロパティが [System.ServiceModel.Channels.MessageVersion.None](assetId:///System.ServiceModel.Channels.MessageVersion.None?qualifyHint=False&autoUpgrade=True) である必要があります。| +|httpHelpPageBindingConfiguration|このバインディングの追加の構成情報を参照する `httpHelpPageBinding` 属性に指定されるバインディングの名前を指定する文字列。 同じ名前を `` セクションに定義する必要があります。| +|httpHelpPageEnabled|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] が、`httpHelpPageUrl` 属性により指定されたアドレスに HTML ヘルプ ページを公開するかどうかを制御するブール値です。 既定値は、`true` です。

このプロパティを `false` に設定して、HTML ブラウザーに表示される HTML ヘルプ ページの公開を無効にできます。

HTML ヘルプ ページが、`httpHelpPageUrl` 属性により制御される場所に公開されるようにするには、この属性を `true` に設定する必要があります。 さらに、次のいずれかの条件も満たす必要があります。

- `httpHelpPageUrl` 属性は、HTTP プロトコル スキームをサポートする絶対アドレスです。
- HTTP プロトコル スキームをサポートするサービスのベース アドレスがあります。

HTTP プロトコル スキームをサポートしない絶対アドレスが `httpHelpPageUrl` 属性に割り当てられている場合は例外がスローされますが、前の基準をどれも満たさないその他のシナリオでは、例外も HTML ヘルプ ページも表示されません。| +|httpHelpPageUrl|HTML ブラウザーを使用してエンドポイントを表示するときにユーザーが参照する、カスタム HTML ヘルプ ファイルの相対的または絶対的な HTTP ベースの URL を指定する URI。

この属性を使用して、HTTP\/Get 要求から返されるカスタム HTML ヘルプ ファイルを HTML ブラウザーなどから利用できます。 HTML ヘルプ ファイルの位置は、次のように解決されます。

1. この属性の値が相対アドレスの場合、HTML ヘルプ ファイルの位置は、HTTP 要求をサポートするサービスのベース アドレスにこのプロパティの値を加えた値になります。
2. この属性が絶対アドレスであり、HTTP 要求をサポートする場合は、HTML ヘルプ ファイルの位置はこのプロパティの値になります。
3. この属性の値が絶対値であっても HTTP 要求をサポートしていない場合は、例外がスローされます。

この属性は、`httpHelpPageEnabled` 属性が `true` の場合にだけ有効です。| +|httpsHelpPageBinding|HTTPS を利用してサービス ヘルプ ページにアクセスする場合に使用するバインディングの種類を指定する文字列値。

assetId:///System.ServiceModel.Channels.IReplyChannel?qualifyHint=False&autoUpgrade=True をサポートする内部バインディング要素を使用したバインディングでのみサポートされます。 さらに、バインディングの assetId:///System.ServiceModel.Channels.MessageVersion?qualifyHint=False&autoUpgrade=True プロパティが assetId:///System.ServiceModel.Channels.MessageVersion.None?qualifyHint=False&autoUpgrade=True である必要があります。| +|httpsHelpPageBindingConfiguration|このバインディングの追加の構成情報を参照する `httpsHelpPageBinding` 属性に指定されるバインディングの名前を指定する文字列。 同じ名前を `` セクションに定義する必要があります。| +|httpsHelpPageEnabled|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] が、`httpsHelpPageUrl` 属性により指定されたアドレスに HTML ヘルプ ページを公開するかどうかを制御するブール値です。 既定値は、`true` です。

このプロパティを `false` に設定して、HTML ブラウザーに表示される HTML ヘルプ ページの公開を無効にできます。

HTML ヘルプ ページが、`httpsHelpPageUrl` 属性により制御される場所に公開されるようにするには、この属性を `true` に設定する必要があります。 さらに、次のいずれかの条件も満たす必要があります。

- `httpsHelpPageUrl` 属性は、HTTPS プロトコル スキームをサポートする絶対アドレスです。
- HTTPS プロトコル スキームをサポートするサービスのベース アドレスがあります。

HTTPS プロトコル スキームをサポートしない絶対アドレスが `httpsHelpPageUrl` 属性に割り当てられている場合は例外がスローされますが、前の基準をどれも満たさないその他のシナリオでは、例外も HTML ヘルプ ページも表示されません。| +|httpsHelpPageUrl|HTML ブラウザーを使用してエンドポイントを表示するときにユーザーが参照する、カスタム HTML ヘルプ ファイルの相対的または絶対的な HTTPS ベースの URL を指定する URI。

この属性を使用して、HTTPS\/Get 要求から返されるカスタム HTML ヘルプ ファイルを HTML ブラウザーなどから利用できます。 HTML ヘルプ ファイルの場所は、次のように解決されます。

- このプロパティの値が相対アドレスの場合、HTML ヘルプ ファイルの位置は、HTTPS 要求をサポートするサービスのベース アドレスにこのプロパティの値を加えた値になります。
- このプロパティが絶対アドレスであり、HTTPS 要求をサポートする場合は、HTML ヘルプ ファイルの位置はこのプロパティの値になります。
- このプロパティの値が絶対値であっても HTTPS 要求をサポートしていない場合は、例外がスローされます。

この属性は、`httpHelpPageEnabled` 属性が `true` の場合にだけ有効です。| +|includeExceptionDetailInFaults|デバッグの目的でクライアントに返される SOAP エラーの詳細に、マネージ例外情報を含めるかどうかを指定する値。 既定値は、`false` です。

この属性を `true` に設定すると、デバッグ目的でクライアントへのマネージ例外情報のフロー、および Web ブラウザーでサービスをブラウズするユーザー向けの HTML 情報ファイルの公開を有効にできます。 **Caution:** マネージ例外情報をクライアントに返すことは、セキュリティ リスクになり得ます。 これは、例外の詳細が、認証されていないクライアントによって使用可能な内部サービスの実装に関する情報を公開するためです。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 解説 + 例外が を使用して宣言されていない場合でも、`includeExceptionDetailInFaults` を `true` に設定すると、サービスでは、アプリケーション コードによってスローされる例外を返すことができます。 この設定は、サーバーが予期しない例外をスローしている場合のデバッグ時に役立ちます。 この属性を使用すると、不明な例外がシリアル化された形式で返されるので、例外をより詳細に調べることができます。 + +> [!CAUTION] +> マネージ例外情報をクライアントに戻すことは、セキュリティ リスクになり得ます。これは、例外の詳細が、非承認のクライアントで使用可能な内部サービスの実装についての情報を公開するからです。 セキュリティの問題にかかわるため、この操作は制御されたデバッグ シナリオでのみ行うことを強くお勧めします。 アプリケーションを配置する場合は、`includeExceptionDetailInFaults` を `false` に設定する必要があります。 + + マネージ例外に関連するセキュリティ問題の詳細については、「[コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md)」を参照してください。 コード例については、「[サービス デバッグ動作](../../../../../docs/framework/wcf/samples/service-debug-behavior.md)」を参照してください。 + + `httpsHelpPageEnabled` と `httpsHelpPageUrl` を設定して、ヘルプ ページを有効または無効にすることもできます。 各サービスは、サービスの WSDL を取得するエンドポイントなど、サービスに関する情報が含まれるヘルプ ページをオプションで公開できます。 これを有効にするには、`httpHelpPageEnabled` プロパティを `true` に設定します。 これにより、サービスのベース アドレスへの GET 要求に対して、ヘルプ ページを返すことができます。 このアドレスは、`httpHelpPageUrl` 属性を設定することで変更できます。 また、HTTP の代わりに HTTPS を使用すると、このアドレスをセキュリティで保護できます。 + + 省略可能な `httpHelpPageBinding` 属性および `httpHelpPageBinding` 属性を使用すると、サービス ウェブ ページにアクセスするためのバインディングを構成できます。 これらの属性が指定されていない場合、サービス ヘルプ ページへのアクセスには、適切な既定のバインディグ \(HTTP の場合は `HttpTransportBindingElement`、HTTPS の場合は `HttpsTransportBindingElement`\) が使用されます。 これらの属性は、組み込みの WCF バインディングでは使用できないことに注意してください。 assetId:///System.ServiceModel.Channels.IReplyChannel?qualifyHint=False&autoUpgrade=True をサポートする内部バインディング要素を使用したバインディングでのみサポートされます。 さらに、バインディングの assetId:///System.ServiceModel.Channels.MessageVersion?qualifyHint=False&autoUpgrade=True プロパティが assetId:///System.ServiceModel.Channels.MessageVersion.None?qualifyHint=False&autoUpgrade=True である必要があります。 + +## 参照 + + + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) + [例外とエラーの処理](../../../../../docs/framework/wcf/extending/handling-exceptions-and-faults.md) + [サービス デバッグ動作](../../../../../docs/framework/wcf/samples/service-debug-behavior.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicediscovery.md b/docs/framework/configure-apps/file-schema/wcf/servicediscovery.md new file mode 100644 index 00000000000..6ca5dc22b4d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicediscovery.md @@ -0,0 +1,95 @@ +--- +title: "<serviceDiscovery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a3c68a4a-fc95-43c5-aacb-785936c0cf39 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <serviceDiscovery> +サービス エンドポイントの探索可能性を指定します。 + +## 構文 + +``` + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/announcementendpoint.md)|アナウンス エンドポイントのコレクション。 このセクションを使用して、アナウンス メッセージの送信に使用するエンドポイントを指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/discoveryendpoint.md)|探索エンドポイントのコレクション。 このセクションを使用して、探索メッセージをリッスンするエンドポイントを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 解説 + サービスの動作構成に追加すると、この構成要素により、サービスの探索可能性はすべてのエンドポイントで有効になります。 [\](../../../../../docs/framework/configure-apps/file-schema/wcf/discoveryendpoint.md)[\](../../../../../docs/framework/configure-apps/file-schema/wcf/announcementendpoint.md) 子要素を使用すると、このようなエンドポイントの探索機能をさらに構成できます。 サービス アナウンス \(オンラインになるときは Hello、オフラインになるときは Bye\) の送信に使用するエンドポイント構成を指定してアナウンスを構成するには、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/announcementendpoint.md) セクションを使用します。 探索メッセージをリッスンするエンドポイントを手動で指定するには、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/discoveryendpoint.md) セクションを使用します。 + +## 使用例 + 次の構成例では、CalculatorService を探索可能に指定しています。また、オプションで、使用するアナウンス エンドポイントを指定しています。 + +``` + + + + ... + + + + + + + + + + + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md b/docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md new file mode 100644 index 00000000000..4d6759d7eb0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md @@ -0,0 +1,107 @@ +--- +title: "<serviceHostingEnvironment> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 4f8a7c4f-e735-4987-979a-b74fcdae2652 +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# <serviceHostingEnvironment> +この要素は、環境をホストするサービスがインスタンス化する特定のトランスポートの型を定義します。 この要素が空の場合は、既定の型が使用されます。 この要素は、アプリケーション レベルまたはコンピューター レベルの構成ファイルでのみ使用できます。 + +## 構文 + +``` + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|aspNetCompatibilityEnabled|ASP.NET の互換モードが現在のアプリケーションに対して有効になっているかどうかを示すブール値。 既定値は、`false` です。

この属性が `true` に設定されている場合、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスに対する要求は ASP.NET HTTP パイプラインを通過し、HTTP プロトコル以外を介した通信は禁止されます。 詳細については、「[WCF サービスと ASP.NET](../../../../../docs/framework/wcf/feature-details/wcf-services-and-aspnet.md)」を参照してください。| +|minFreeMemoryPercentageToActivateService|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスをアクティブにする前に、システムに必要な最小限の空きメモリの容量を指定する整数。 **Caution:** [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスの web.config ファイルで、部分信頼と共にこの属性を指定すると、サービスを実行したときに が発生します。| +|multipleSiteBindingsEnabled|1 つのサイトで複数の IIS バインディングが有効になっているかどうかを指定するブール値。

IIS は、仮想ディレクトリを含む仮想アプリケーションのコンテナーとしての Web サイトで構成されています。 サイト内のアプリケーションに、1 つ以上の IIS バインディングからアクセスできます。 IIS バインディングは、バインディング プロトコルとバインディング情報という 2 つの情報を提供します。 バインディング プロトコルは通信を行うスキームを定義するもので、バインディング情報はサイトにアクセスするために使用する情報です。 バインディング プロトコルの例には HTTP があり、一方、バインディング情報には IP アドレス、ポート、ホスト ヘッダーなどを含めることができます。

IIS ではサイトごとに複数の IIS バインディングを指定でき、これによりスキームごとに複数のベース アドレスをサポートできます。 ただし、サイトでホストされている [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスでは、1 つのスキームあたり 1 つのみの baseAddress へのバインディングが許可されています。

[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスに対し、1 つのサイトで複数の IIS バインディングを有効にするには、この属性を `true` に設定します。 複数のサイト バインディングは HTTP プロトコルに対してのみサポートされています。 構成ファイル内のエンドポイントのアドレスには完全な URI を指定する必要があります。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/baseaddressprefixfilters.md)|サービス ホストによって使用されるベース アドレスのプレフィックス フィルターを指定する構成要素のコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/serviceactivations.md)|アクティベーション設定を記述する構成セクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/transportconfigurationtypes.md)|特定のトランスポートの型を識別する構成要素のコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|serviceModel|すべての Windows Communication Foundation \(WCF\) 構成要素のルート要素です。| + +## 解説 + 既定では、WCF サービスは、ホストされるアプリケーション ドメイン \(AppDomain\) で ASP.NET と並行で実行します。 WCF と ASP.NET が同じ AppDomain で共存できても、既定では WCF 要求は ASP.NET HTTP パイプラインでは処理されません。 結果として、ASP.NET アプリケーション プラットフォームのいくつかの要素は、WCF サービスでは使用できません。 これらの要素は次のとおりです。 + +- ASP.NET ファイル\/URL 承認 + +- ASP.NET の偽装 + +- クッキー ベースのセッションの状態 + +- HttpContext.Current + +- カスタム HttpModule を経由するパイプライン拡張 + + WCF サービスが ASP.NET のコンテキストで機能し、HTTP 経由でのみ通信する必要がある場合は、WCF の ASP.NET 互換モードを使用できます。 このモードは、`aspNetCompatibilityEnabled` 属性がアプリケーション レベルで `true` に設定されている場合に有効です。 サービス実装では、 クラスを使用して互換モードで実行できる機能を宣言する必要があります。 互換モードが有効な場合、 + +- ASP.NET ファイル\/URL 承認が、WCF 承認の前に強制的に実行されます。 承認決定は、要求のトランスポート レベルの ID に基づいています。 メッセージ レベルでの ID は、無視されます。 + +- WCF サービス操作は、ASP.NET の偽装コンテキストで実行を開始します。 ASP.NET の偽装と WCF の偽装の両方が特定のサービスで有効な場合は、WCF の偽装コンテキストが適用されます。 + +- HttpContext.Current を WCF サービス コードから使用できるため、サービスは非 HTTP エンドポイントを公開しません。 + +- WCF 要求は、ASP.NET パイプラインによって処理されます。 受信要求を処理するように構成された HttpModules は、WCF 要求も処理できます。 これらには、ASP.NET プラットフォーム コンポーネント \( など\) とカスタム サードパーティ モジュールが含まれます。 + +## 例 + 次のコード サンプルは、ASP 互換モードを有効にする方法を示します。 + +## コード + +``` + +``` + +## 参照 + + + [ホスト](../../../../../docs/framework/wcf/feature-details/hosting.md) + [WCF サービスと ASP.NET](../../../../../docs/framework/wcf/feature-details/wcf-services-and-aspnet.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicemetadata.md b/docs/framework/configure-apps/file-schema/wcf/servicemetadata.md new file mode 100644 index 00000000000..45f7c5c2af2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicemetadata.md @@ -0,0 +1,137 @@ +--- +title: "<serviceMetadata> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 2b4c3b4c-31d4-4908-a9b7-5bb411c221f2 +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# <serviceMetadata> +サービス メタデータと関連情報の公開を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|externalMetadataLocation|WSDL ファイルの位置を含む URI。これは、自動生成される WSDL の代わりに、WSDL 要求および MEX 要求に応答してユーザーに返されます。 この属性が設定されていない場合は、既定の WSDL が返されます。 既定値は空の文字列です。| +|httpGetBinding|HTTP GET 経由でメタデータを取得する場合に使用するバインディングの種類を指定する文字列。 この設定は省略可能です。 指定しない場合、既定のバインディングが使用されます。

をサポートする内部バインディング要素を使用したバインディングでのみサポートされます。 さらに、バインディングの プロパティが である必要があります。| +|httpGetBindingConfiguration|このバインディングの追加の構成情報を参照する `httpGetBinding` 属性に指定されるバインディングの名前を設定する文字列。 同じ名前を `` セクションに定義する必要があります。| +|httpGetEnabled|HTTP\/Get 要求を使用した取得用にサービス メタデータを公開するかどうかを指定するブール値。 既定値は、`false` です。

httpGetUrl 属性が指定されていない場合、メタデータが公開されるアドレスは、サービス アドレスに "?wsdl" を加えたものになります。 たとえば、サービス アドレスが "http:\/\/localhost:8080\/CalculatorService" の場合、HTTP\/Get メタデータ アドレスは、"http:\/\/localhost:8080\/CalculatorService?wsdl" になります。

このプロパティが `false` の場合、あるいはサービスのアドレスが HTTP または HTTPS に基づいていない場合、"?wsdl" は無視されます。| +|httpGetUrl|HTTP\/Get 要求を使用した取得用にメタデータが公開されるアドレスを指定する URI。 相対 URI を指定した場合、サービスのベース アドレスに対する相対として処理されます。| +|httpsGetBinding|HTTPS GET 経由でメタデータを取得する場合に使用するバインディングの種類を指定する文字列。 この設定は省略可能です。 指定しない場合、既定のバインディングが使用されます。

をサポートする内部バインディング要素を使用したバインディングでのみサポートされます。 さらに、バインディングの プロパティが である必要があります。| +|httpsGetBindingConfiguration|このバインディングの追加の構成情報を参照する `httpsGetBinding` 属性に指定されるバインディングの名前を設定する文字列。 同じ名前を `` セクションに定義する必要があります。| +|httpsGetEnabled|HTTPS\/Get 要求を使用した取得用にサービス メタデータを公開するかどうかを指定するブール値。 既定値は、`false` です。

httpsGetUrl 属性が指定されていない場合、メタデータが公開されるアドレスは、サービス アドレスに "?wsdl" を加えたものになります。 たとえば、サービス アドレスが "https:\/\/localhost:8080\/CalculatorService" の場合、HTTP\/Get メタデータ アドレスは、"https:\/\/localhost:8080\/CalculatorService?wsdl" になります。

このプロパティが `false` の場合、あるいはサービスのアドレスが HTTP または HTTPS に基づいていない場合、"?wsdl" は無視されます。| +|httpsGetUrl|HTTPS\/Get 要求を使用した取得用にメタデータが公開されるアドレスを指定する URI。| +|policyVersion|使用する WS\-Policy 仕様のバージョンを指定する文字列。 この属性は 型です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 解説 + この構成要素を使用すると、サービスのメタデータ公開機能を制御できます。 サービスのメタデータには機密情報が含まれる可能性がありますが、意図的ではない開示を回避するために、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスの既定の構成では、メタデータは公開されないようになっています。 この動作は、既定の設定ではセキュリティで保護されますが、同時に、サービスの構成の中でメタデータ公開の動作が明示的に有効化されない限り、サービスの呼び出しに必要なクライアント コードをメタデータ インポート ツール \(Svcutil.exe など\) を使用して生成できないことも意味します。 この構成要素を使用すると、サービスのこの公開動作を有効にできます。 + + この動作を構成する詳細なコード例については、「[メタデータ公開動作](../../../../../docs/framework/wcf/samples/metadata-publishing-behavior.md)」を参照してください。 + + オプションの `httpGetBinding` 属性および `httpsGetBinding` 属性を使用すると、HTTP GET または HTTPS GET を介してメタデータを取得するバインディングを構成できます。 これらの属性を指定しない場合、メタデータの取得には、適切な既定のバインディグ \(HTTP の場合は `HttpTransportBindingElement`、HTTPS の場合は `HttpsTransportBindingElement`\) が使用されます。 これらの属性は、組み込みの WCF バインディングでは使用できないことに注意してください。 をサポートする内部バインディング要素を使用したバインディングでのみサポートされます。 さらに、バインディングの プロパティが である必要があります。 + + サービスが悪意のあるユーザーに公開されないようにするために、SSL over HTTP \(HTTPS\) 機構を使用して転送をセキュリティで保護できます。 転送を保護するには、まず、サービスをホストしているコンピューターの特定のポートに適切な X.509 証明書をバインドする必要があります。 \([!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)] [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md)。\) 次に、この要素をサービス構成に追加し、`httpsGetEnabled` 属性を `true` に設定します。 最後に、次の例に示すように、`httpsGetUrl` 属性をサービス メタデータ エンドポイントの URL に設定します。 + +``` + + + + + + + +``` + +## 使用例 + 次の例では、\ 要素を使用してメタデータを公開するサービスを構成します。 さらに、`IMetadataExchange` コントラクトを WS\-MetadataExchange \(MEX\) プロトコルの実装として公開するエンドポイントも構成します。 この例では、`mexHttpBinding` を使用します。これは使いやすい標準バインドで、セキュリティ モードが `None` に設定されている `wsHttpBinding` と同等です。 エンドポイントには、相対アドレスの "mex" が使用されています。このアドレスがサービスのベース アドレスに対して解決されると、エンドポイントのアドレスは http:\/\/localhost\/servicemodelsamples\/service.svc\/mex になります。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [メタデータ公開動作](../../../../../docs/framework/wcf/samples/metadata-publishing-behavior.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/serviceprincipalname.md b/docs/framework/configure-apps/file-schema/wcf/serviceprincipalname.md new file mode 100644 index 00000000000..f6a0902bf22 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/serviceprincipalname.md @@ -0,0 +1,58 @@ +--- +title: "<servicePrincipalName> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3f3b85d3-20f2-4cd8-8a6a-ee18befbd165 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <servicePrincipalName> +サービスの ID をサービス プリンシパル名 \(SPN\) により指定します。 + + SPN の設定の詳細については、「[サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|value|クライアントがサービスのインスタンスを一意に識別する名前です。 フォレストの複数のコンピューターに 1 つのサービスの複数のインスタンスをインストールする場合、各インスタンスには独自の SPN が必要です。 クライアントが認証に使用できる複数の名前がある場合は、指定したサービス インスタンスに複数の SPN を設定できます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|クライアントで認証するサービスの ID を指定します。| + +## 解説 + この ID を持つエンドポイントに接続するセキュリティで保護された [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] クライアントは、エンドポイントの SSPI 認証を実行するときに SPN を使用します。 + +## 参照 + + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/services-of-workflowruntime.md b/docs/framework/configure-apps/file-schema/wcf/services-of-workflowruntime.md new file mode 100644 index 00000000000..3bc089a0c09 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/services-of-workflowruntime.md @@ -0,0 +1,26 @@ +--- +title: "<workflowRuntime> の <services> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 219a05b1-f573-45c9-849b-e86bc373b62f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <workflowRuntime> の <services> + エンジンに追加されるサービスのコレクションを表します。 要素は、 型です。 コレクションで指定されたサービスはワークフロー ランタイム エンジンによって初期化され、適切な コンストラクターが呼び出されるとワークフロー ランタイム エンジンのサービスに追加されます。 したがって、コレクションで指定されたサービスは、そのコンストラクターのシグネチャに関して一定の規則に従う必要があります。 詳細については、「」を参照してください。 + +## 参照 + + + + [Workflow Configuration Files](http://msdn.microsoft.com/ja-jp/ada4bb90-6c9d-4f3d-a9d0-b559bb0f9909) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/services.md b/docs/framework/configure-apps/file-schema/wcf/services.md new file mode 100644 index 00000000000..5c909afa45c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/services.md @@ -0,0 +1,55 @@ +--- +title: "<services> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 80d76ba9-2058-48ad-9b91-5e4be7e5c113 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <services> +サービスは、設定ファイルの `services` セクションで定義されます。 各サービスには、独自の `service` 設定セクションがあります。 + + \ + +## 構文 + +``` + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/service.md)|サービス コントラクト、動作、および特定のサービスのエンドポイントを定義します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md)|すべての Windows Communication Foundation \(WCF\) 構成要素のルート要素です。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicesecurityaudit.md b/docs/framework/configure-apps/file-schema/wcf/servicesecurityaudit.md new file mode 100644 index 00000000000..05d3bd5b13a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicesecurityaudit.md @@ -0,0 +1,89 @@ +--- +title: "<serviceSecurityAudit> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ba517369-a034-4f8e-a2c4-66517716062b +caps.latest.revision: 17 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 17 +--- +# <serviceSecurityAudit> +サービス操作中にセキュリティ イベントの監査を有効にする設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|auditLogLocation|監査ログの場所を指定します。 以下の値が有効です。

- Default: セキュリティ イベントは、Windows XP のアプリケーション ログと、Windows Server 2003 および Windows Vista のイベント ログに書き込まれます。
- Application: 監査イベントは、アプリケーション イベント ログに書き込まれます。
- Security: 監査イベントは、セキュリティ イベント ログに書き込まれます。

既定値は Default です。 詳細については、「」を参照してください。| +|suppressAuditFailure|監査ログへの書き込みエラーを非表示にする動作を指定します。

アプリケーションには、監査ログへの書き込みエラーを通知する必要があります。 アプリケーションが監査エラーを処理するように設計されていない場合は、この属性を使用して、監査ログへの書き込みでのエラーが表示されないようにする必要があります。

この属性が `true` の場合、監査イベントの書き込み試行の結果発生する例外 \(ただし、OutOfMemoryException、StackOverFlowException、ThreadAbortException、および ArgumentException を除く\) はシステムによって処理され、アプリケーションには伝達されません。 この属性が `false` の場合、監査イベントの書き込み試行の結果発生する例外は、すべてアプリケーションまで渡されます。

既定値は、`true` です。| +|serviceAuthorizationAuditLevel|監査ログに記録される承認イベントの種類を指定します。 以下の値が有効です。

- None: サービス承認イベントの監査が実行されます。
- Success: 成功したサービス承認イベントだけが監査されます。
- Failure: 失敗したサービス承認イベントだけが監査されます。
- SuccessAndFailure: 成功と失敗の両方のサービス承認イベントが監査されます。

既定値は None です。 詳細については、「」を参照してください。| +|messageAuthenticationAuditLevel|ログに記録されるメッセージ認証監査イベントの種類を指定します。 以下の値が有効です。

- None: 監査イベントは生成されません。
- Success: 成功するセキュリティ \(メッセージの署名の検証、暗号、およびトークンの検証を含む完全な検証\) イベントだけがログに記録されます。
- Failure: 失敗したイベントだけがログに記録されます。
- SuccessAndFailure: 成功と失敗の両方のイベントがログに記録されます。

既定値は None です。 詳細については、「」を参照してください。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 解説 + この構成要素は、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] 認証イベントの監査に使用されます。 監査を有効にすると、成功した認証、失敗した認証、またはその両方を監査できます。 イベントは、3 種類のイベント ログ \(アプリケーション ログ、セキュリティ ログ、およびオペレーティング システムのバージョンに対する既定のログ\) のいずれかに書き込まれます。 イベント ログはすべて、Windows イベント ビューアーを使用して表示できます。 + + この構成要素の詳細な使用例については、「[サービス監査動作](../../../../../docs/framework/wcf/samples/service-auditing-behavior.md)」を参照してください。 + + 監査イベントは既定で、Windows XP の場合はアプリケーション ログに、Windows Server 2003 と Windows Vista の場合はセキュリティ ログに表示されます。 監査イベントの場所は、`auditLogLocation` 属性を "Application" または "Security" に設定することによって指定できます。 詳細については、「[方法 : セキュリティ イベントを監査する](../../../../../docs/framework/wcf/feature-details/how-to-audit-wcf-security-events.md)」を参照してください。 イベントをセキュリティ ログに書き込む場合は、\[ローカル セキュリティ ポリシー\] \-\> \[オブジェクト アクセスの監査\] で、\[成功\] と \[失敗\] の各チェック ボックスをオンにする必要があります。 + + イベント ログを調べる場合、監査イベントのソースは "ServiceModel Audit 3.0.0.0" です。 メッセージ認証監査レコードには "MessageAuthentication" のカテゴリ、サービス承認監査レコードには "ServiceAuthorization" のカテゴリが設定されます。 + + メッセージ認証監査イベントは、メッセージの改ざんや期限切れの有無、クライアントによるサービス認証の成否などに適用されます。 このイベントでは、認証の成功または失敗に関する情報とクライアント ID、およびメッセージ送信先のエンドポイントとそのメッセージに関連付けられたアクションに関する情報が提供されます。 + + サービス承認監査イベントは、サービス承認マネージャーによって決定される承認に適用されます。 このイベントでは、承認の成功または失敗に関する情報とクライアント ID、メッセージ送信先のエンドポイント、そのメッセージに関連付けられたアクション、受信メッセージから生成された承認コンテキストの ID、およびアクセス決定を行った承認マネージャーの種類に関する情報が提供されます。 + +## 使用例 + +``` + + + + + + +
+``` + +## 参照 + + + [セキュリティ動作](../../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [監査](../../../../../docs/framework/wcf/feature-details/auditing-security-events.md) + [方法 : セキュリティ イベントを監査する](../../../../../docs/framework/wcf/feature-details/how-to-audit-wcf-security-events.md) + [サービス監査動作](../../../../../docs/framework/wcf/samples/service-auditing-behavior.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicethrottling.md b/docs/framework/configure-apps/file-schema/wcf/servicethrottling.md new file mode 100644 index 00000000000..0fb72411f2b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicethrottling.md @@ -0,0 +1,79 @@ +--- +title: "<serviceThrottling> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: a337d064-1e64-4209-b4a9-db7fdb7e3eaf +caps.latest.revision: 22 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 22 +--- +# <serviceThrottling> +WCF \(Windows Communication Foundation\) サービスの調整機構を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|maxConcurrentCalls| で同時に処理できるメッセージ数を制限する正の整数。 制限を超えた呼び出しはキューに置かれます。 この値を 0 に設定することは、Int32.MaxValue に設定することと同じです。 既定値は 16 x プロセッサ数です。| +|maxConcurrentInstances| で同時に実行できる オブジェクト数を制限する正の整数。 追加インスタンスの作成要求は、キューに置かれ、制限下のスロットが利用できるようになったときに完了されます。 既定値は maxConcurrentSessions と MaxConcurrentCalls の合計です。| +|maxConcurrentSessions| オブジェクトが受け入れることのできるセッション数を制限する正の整数。

サービスは制限を超える接続を受け入れますが、制限内のチャネルだけがアクティブです \(メッセージがチャネルから読み取られます\)。 この値を 0 に設定することは、Int32.MaxValue に設定することと同じです。 既定値は 100 x プロセッサ数です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 解説 + 調整コントロールは、同時呼び出し、同時インスタンス、または同時セッションの数を制限して、リソースの過剰消費を防ぎます。 + + 属性の値に到達するたびにトレースが出力されます。 最初のトレースは警告として出力されます。 + +## 使用例 + 次の構成例では、サービスで同時呼び出しの最大数を 2 に、同時インスタンスの最大数を 10 に制限することを指定しています。 この例の実行例の詳細については、「[調整](../../../../../docs/framework/wcf/samples/throttling.md)」を参照してください。 + +``` + + + + + + + + + + +``` + +## 参照 + + + [WCF サービス パフォーマンスを制御するための ServiceThrottlingBehavior の使用](../../../../../docs/framework/wcf/feature-details/using-servicethrottlingbehavior-to-control-wcf-service-performance.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/servicetimeouts.md b/docs/framework/configure-apps/file-schema/wcf/servicetimeouts.md new file mode 100644 index 00000000000..235b78011c8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/servicetimeouts.md @@ -0,0 +1,51 @@ +--- +title: "<serviceTimeouts> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ada536cf-97dc-4cd7-89ec-ed1466c1c557 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# <serviceTimeouts> +サービスのタイムアウトを指定します。 + +## 構文 + +``` + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`transactionTimeout`|クライアントからサーバーへのトランザクションが発生するまでに待機できる時間を指定する 値。 既定値は “00:00:00” です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/soapprocessing.md b/docs/framework/configure-apps/file-schema/wcf/soapprocessing.md new file mode 100644 index 00000000000..d9f1ec25809 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/soapprocessing.md @@ -0,0 +1,57 @@ +--- +title: "<soapProcessing> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e8707027-e6b8-4539-893d-3cd7c13fbc18 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <soapProcessing> +異なるバインディングの種類およびメッセージ バージョンの間でメッセージのマーシャリングに使用されるクライアント エンドポイントの動作を定義します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|要素|説明| +|--------|--------| +|processMessages|SOAP メッセージ バージョン間のメッセージをマーシャリングするかどうかを指定するブール値。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作を指定します。| + +## 解説 + SOAP 処理は、メッセージ バージョン間でメッセージが変換されるプロセスです。 + + [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] ルーティング サービスは、あるプロトコルから別のプロトコルにメッセージを変換できます。 受信メッセージのバージョンと送信メッセージのバージョンが異なる場合、新しいメッセージが正しいバージョンで作成されます。 受信 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージの本文および関連するヘッダーが含まれた新しい [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージを作成することで、ある から別のメッセージ バージョンへのメッセージの変換が完了します。 アドレス指定に固有のヘッダーまたはルーター レベルで認識されるヘッダーは、新しい WCF メッセージの作成に使用されません。これらのヘッダーは、異なるバージョンであるか \(アドレス指定ヘッダーの場合\)、クライアントとルーターの間の通信の一部として処理されているためです。 + + 発信メッセージにヘッダーが配置されるかどうかは、受信チャネル層を介して渡されたと認識されるようにマークされているかどうかによって決まります。 認識されないヘッダー \(カスタム ヘッダーなど\) は削除されずに送信メッセージにコピーされ、ルーティング サービスを介して渡されます。 メッセージの本文は、送信メッセージにコピーされます。 そして、メッセージは送信チャネルに送信されます。この時点で、すべてのヘッダー、および使用されている通信プロトコル\/トランスポートに固有のエンベロープ データが作成され、追加されます。 + + このような処理手順は、SOAP 処理動作が指定されているときに行われます。 この [\](../../../../../docs/framework/configure-apps/file-schema/wcf/soapprocessing.md) 動作は、ルーティング サービスが開始されたときに、すべてのクライアント \(送信\) エンドポイントに適用されるエンドポイントの動作です。 既定では、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing-of-servicebehavior.md) 動作によって、クライアント エンドポイントごとに `processMessages` が `true` に設定された新しい [\](../../../../../docs/framework/configure-apps/file-schema/wcf/soapprocessing.md) 動作が作成およびアタッチされます。 ルーティング サービスが認識しないプロトコルを使用している場合や既定の処理動作をオーバーライドする場合は、ルーティング サービス全体または特定のエンドポイントにおいて SOAP 処理を無効にできます。すべてのエンドポイントのルーティング サービス全体で SOAP 処理を無効にするには、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing-of-servicebehavior.md) 動作の `soapProcessing` 属性を `false` に設定します。 特定のエンドポイントで SOAP 処理を無効にするには、この動作を使用して `processMessages` 属性を `false` に設定してから、既定の処理コードを実行しないエンドポイントにこの動作をアタッチします。[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing-of-servicebehavior.md) 動作がルーティング サービスを設定するときには、サービスが既に存在しているため、エンドポイントの動作の再適用はスキップされます。 + +## 参照 + SoapProcessingExtensionElement?qualifyHint=False&autoUpgrade=True + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/sslstreamsecurity.md b/docs/framework/configure-apps/file-schema/wcf/sslstreamsecurity.md new file mode 100644 index 00000000000..808930ddcb5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/sslstreamsecurity.md @@ -0,0 +1,56 @@ +--- +title: "<sslStreamSecurity> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 430a378b-a742-4858-8a12-9f9b235fd627 +caps.latest.revision: 11 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 11 +--- +# <sslStreamSecurity> +SSL ストリームを使用してチャネル セキュリティをサポートするカスタム バインド要素を表します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|requireClientCertificate|クライアント証明書がこのバインディングに必要かどうかを指定するブール値。 既定値は、`false` です。| +|sslProtocols|どの SslProtocols がサポートされているのかを指定する SslProtocols 列挙型フラグの値。 既定値は Ssl3|Tls|Tls11|Tls12 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 参照 + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/standardendpoints.md b/docs/framework/configure-apps/file-schema/wcf/standardendpoints.md new file mode 100644 index 00000000000..5548d2a2301 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/standardendpoints.md @@ -0,0 +1,62 @@ +--- +title: "<standardEndpoints> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d62153d7-a6e6-462a-a784-cca61e9c2ba1 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <standardEndpoints> +この構成セクションでは、再使用可能な構成済みのエンドポイントである標準エンドポイントのコレクションを定義できます。 標準エンドポイントは、固定値に設定されたアドレス、バインディング、およびコントラクトの 1 つ以上の属性を持ちます。 たとえば、探索エンドポイントでは、コントラクトが固定されています。 標準エンドポイントを使用して、カスタム バインディングの定義と同様に新しいプロパティを指定して、サービス エンドポイントを拡張することもできます。 + + \ + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/announcementendpoint.md)|固定アナウンス コントラクトが含まれた標準エンドポイントを定義します。 サービスは、サービスが開いたとき、または閉じたときにオンラインおよびオフラインのアナウンス メッセージを送信することによって、その可用性をアナウンスすることもできます。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスは、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicediscovery.md) 要素でアナウンス エンドポイントを指定し、AnnouncementClient を使用してアナウンスを実行します。 他のサービスからのアナウンスをリッスンしようとするクライアントは、実際に、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスとして動作します。このため、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/services.md) セクションに、このクライアントのアナウンス エンドポイントを構成する必要があります。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/discoveryendpoint.md)|固定探索コントラクトが含まれた標準エンドポイントを定義します。 サービスの構成に追加すると、この要素により、探索メッセージをリッスンする場所が指定されます。 クライアントの構成に追加すると、この要素により、探索クエリの送信先となる場所が指定されます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/dynamicendpoint.md)|この構成要素は、アプリケーションが、実行時に動的にエンドポイント アドレスを検索するクライアント プログラムとして機能するための情報を格納する標準エンドポイントを定義します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/mexendpoint.md)|固定 IMetadataExchange コントラクトが含まれた標準エンドポイントを定義します。 IMetadataExchange はすべてのメタデータ交換エンドポイントでコントラクトとして指定されるため、独自のエンドポイントを定義せずにこの標準エンドポイントを使用できます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/udpannoucementendpoint.md)|サービスが UDP バインディングでアナウンス メッセージを送信するために使用する標準エンドポイントを定義します。 これには固定コントラクトがあり、2 つの探索のバージョンをサポートします。 また、WS\-Discovery の仕様 \(WS\-Discovery April 2005 または WS\-Discovery V1.1\) に規定された固定 UDP バインディングと既定のアドレスも備えています。 アナウンス メッセージの送受信に使用するマルチキャスト アドレスを指定できます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/udpdiscoveryendpoint.md)|UDP マルチキャスト バインディングを使用した探索操作用に事前に構成される標準エンドポイントを定義します。 このエンドポイントには固定コントラクトがあり、WS\-Discovery プロトコルの 2 つのバージョンをサポートします。 また、WS\-Discovery の仕様 \(WS\-Discovery April 2005 または WS\-Discovery V1.1\) に規定された固定 UDP バインディングと既定のアドレスも備えています。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttpendpoint.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttp.md) の動作を自動的に追加する固定の [\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md) バインディングを持つ標準エンドポイントを定義します。 このエンドポイントは、REST サービスを作成する場合に使用します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/webscriptendpoint.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/enablewebscript.md) の動作を自動的に追加する固定の [\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md) バインディングを持つ標準エンドポイントを定義します。 このエンドポイントは、ASP.NET AJAX アプリケーションから呼び出されるサービスを作成する場合に使用します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/workflowcontrolendpoint.md)|ワークフロー インスタンスの実行の制御 \(作成、実行、保留、終了など\) に使用する標準エンドポイントを定義します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|\|すべての WCF 構成要素のルート要素です。| + +## 参照 + [標準エンドポイント](../../../../../docs/framework/wcf/feature-details/standard-endpoints.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/state-of-wcf-workflowinstancequery.md b/docs/framework/configure-apps/file-schema/wcf/state-of-wcf-workflowinstancequery.md new file mode 100644 index 00000000000..d060ecc998a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/state-of-wcf-workflowinstancequery.md @@ -0,0 +1,103 @@ +--- +title: "WCF の <state>、<workflowInstanceQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 40f21055-766c-4be9-86c4-d1d899007098 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <state>、<workflowInstanceQuery> +追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態のコレクションを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)|追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態のコレクション。| + +## 解説 + 返されたレコードは、このコレクションの状態でフィルター処理されます。 + + 次の表に、有効な状態の値を示します。 + +|状態|説明| +|--------|--------| +|Aborted|ワークフロー インスタンスは中止されました。| +|Completed|ワークフロー インスタンスは完了しました。| +|Deleted|ワークフロー インスタンスは削除されました。| +|Idle|ワークフロー インスタンスはアイドル状態です。| +|Persisted|ワークフロー インスタンスは永続化されました。| +|Resumed|ワークフロー インスタンスが再開されました。| +|Started|ワークフロー インスタンスが開始されました。| +|UnhandledException|ワークフロー インスタンスで未処理の例外が発生しました。| +|アンロード|ワークフロー インスタンスはアンロードされました。| +|Canceled|ワークフロー インスタンスは取り消されました。| +|Suspended|ワークフロー インスタンスが中断されています。| +|Terminated|ワークフロー インスタンスは終了しました。| +|Unsuspended|ワークフロー インスタンスの中断が解除されました。| + +## 使用例 + 次の構成は、このクエリを使用して、`Started` インスタンス状態のワークフロー インスタンス レベルの追跡レコードを定期受信します。 + +``` + + + + + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement?qualifyHint=False&autoUpgrade=True) + [System.ServiceModel.Activities.Tracking.Configuration.StateElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.StateElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.WorkflowInstanceQuery](assetId:///System.Activities.Tracking.WorkflowInstanceQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/states-of-wcf-workflowinstancequery.md b/docs/framework/configure-apps/file-schema/wcf/states-of-wcf-workflowinstancequery.md new file mode 100644 index 00000000000..bca584fd8cd --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/states-of-wcf-workflowinstancequery.md @@ -0,0 +1,103 @@ +--- +title: "WCF の <states>、<workflowInstanceQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d17f7525-8035-4e9e-85a0-4cddae59f85d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <states>、<workflowInstanceQuery> +追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態のコレクションを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)|追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequery.md)|開始したイベントや完了したイベントなど、ワークフロー インスタンスのライフサイクルの変化を追跡するクエリ。| + +## 解説 + 返されたレコードは、このコレクションの状態でフィルター処理されます。 + + 次の表に、有効な状態の値を示します。 + +|状態|説明| +|--------|--------| +|Aborted|ワークフロー インスタンスは中止されました。| +|Completed|ワークフロー インスタンスは完了しました。| +|Deleted|ワークフロー インスタンスは削除されました。| +|Idle|ワークフロー インスタンスはアイドル状態です。| +|Persisted|ワークフロー インスタンスは永続化されました。| +|Resumed|ワークフロー インスタンスが再開されました。| +|Started|ワークフロー インスタンスが開始されました。| +|UnhandledException|ワークフロー インスタンスで未処理の例外が発生しました。| +|アンロード|ワークフロー インスタンスはアンロードされました。| +|Canceled|ワークフロー インスタンスは取り消されました。| +|Suspended|ワークフロー インスタンスが中断されています。| +|Terminated|ワークフロー インスタンスは終了しました。| +|Unsuspended|ワークフロー インスタンスの中断が解除されました。| + +## 使用例 + 次の構成は、このクエリを使用して、`Started` インスタンス状態のワークフロー インスタンス レベルの追跡レコードを定期受信します。 + +``` + + + + + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement?qualifyHint=False&autoUpgrade=True) + [System.ServiceModel.Activities.Tracking.Configuration.StateElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.StateElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.WorkflowInstanceQuery](assetId:///System.Activities.Tracking.WorkflowInstanceQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/synchronousreceive-element.md b/docs/framework/configure-apps/file-schema/wcf/synchronousreceive-element.md new file mode 100644 index 00000000000..0a967884aa9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/synchronousreceive-element.md @@ -0,0 +1,49 @@ +--- +title: "<synchronousReceive> 要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cc070387-3d11-4b02-a952-bc08ad2df05a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <synchronousReceive> 要素 +この構成要素は、サービスまたはクライアント アプリケーションでメッセージを受信する場合のランタイム動作を指定するために使用されます。 属性や子要素はありません。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作を指定します。| + +## 解説 + この動作を使用して、既定の非同期受信ではなく同期受信を使用するようにチャネル リスナーに指示します。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] は、受け入れた各チャネルに対して新しい処理スレッドを発行します。 チャネルが多数ある場合は、スレッドが不足する可能性があります。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/system-runtime-serialization.md b/docs/framework/configure-apps/file-schema/wcf/system-runtime-serialization.md new file mode 100644 index 00000000000..0ef889431af --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/system-runtime-serialization.md @@ -0,0 +1,65 @@ +--- +title: "<system.runtime.serialization> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a8cebf4c-06d2-4667-8f5b-c3e1fc90df6f +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <system.runtime.serialization> + 名前空間セクションのルート要素を表し、 のオプションを設定するための要素を含みます。 + + system.runtime.serialization + +## 構文 + +``` + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-of-system-runtime-serialization.md)|逆シリアル化時に使用される既知の型の追加を可能にします。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ 要素](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md)|構成の最上位の要素。| + +## 参照 + + [データ コントラクトの使用](../../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + [既知のデータ コントラクト型](../../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/system-servicemodel-activation.md b/docs/framework/configure-apps/file-schema/wcf/system-servicemodel-activation.md new file mode 100644 index 00000000000..5f6d053d5b2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/system-servicemodel-activation.md @@ -0,0 +1,71 @@ +--- +title: "<system.serviceModel.activation> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c0cae85f-56cb-4030-8807-6f96edff8d2d +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <system.serviceModel.activation> +この構成セクションは、SMSvcHost.exe ツールの構成設定を表します。 構成要素は、SMSvcHost.exe.config ファイルで構成できます。 特にここには、構成される必要があるコンピューター全体のすべての設定が含まれます。 + +## サンプル構成ファイル + 次は、リスナー プロセス SMSvcHost.exe で使用されるサンプル構成ファイル \(SMSvcHost.exe.config\) です。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md b/docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md new file mode 100644 index 00000000000..0f5291e10a5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md @@ -0,0 +1,137 @@ +--- +title: "<system.serviceModel> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#system.ServiceModel" + - "http://schemas.microsoft.com/.NetConfiguration/v2.0#configuration/system.ServiceModel" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - " 要素" + - "system.serviceModel 要素" +ms.assetid: 78519531-ad7a-40d3-b3e7-42f1103d8854 +caps.latest.revision: 26 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 26 +--- +# <system.serviceModel> +この構成セクションは、すべての [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] ServiceModel 構成要素を含みます。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md)|このセクションは、`endpointBehaviors` と`serviceBehaviors` という 2 つの子コレクションを定義します。 各コレクションは、エンドポイントとサービスによって使用されるそれぞれの動作要素を定義します。 各動作要素は、その一意の `name` 属性で識別されます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|このセクションには、標準バインディングおよびカスタム バインディングのコレクションが保持されます。 各エントリは、その一意の `name` により識別されます。 サービスは、`name` を使用してバインディングをリンクすることにより、バインディングを使用します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/client.md)|このセクションは、クライアントがサービスの接続に使用するエンドポイントの一覧を含みます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/comcontracts.md)|このセクションは、WCF と COM 相互運用が有効な COM コントラクトを定義します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/commonbehaviors.md)|このセクションは、machine.config ファイルでだけ定義できます。 このセクションは、`endpointBehaviors` と`serviceBehaviors` という 2 つの子コレクションを定義します。 各コレクションは、コンピューター上の [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] のすべてのエンドポイントとサービスによって使用されるそれぞれの動作要素を定義します。 ある動作が `` と `` の両方のセクションで定義されている場合は、\ セクション内の動作が優先されます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/extensions-section.md)|このセクションには、拡張のコレクションが含まれています。これにより、ユーザー定義のバインディング、動作、およびその他の拡張機能を作成できるようになります。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/diagnostics.md)|このセクションには、WCF の診断機能の設定が含まれます。 ユーザーはトレース、パフォーマンス カウンター、および WMI プロバイダーを有効または無効にしたり、カスタム メッセージ フィルターを追加したりできます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/protocolmapping.md)|このセクションは、トランスポート プロトコル スキーム \(http、net.tcp、net.pipe など\) と WCF バインディング間の既定のプロトコル マッピング セットを定義します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing.md)|このセクションは、受信メッセージの評価に使用される [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の種類を定義するルーティング フィルター セットと、フィルターが一致するときにメッセージを送信するターゲット エンドポイントを指定するルーティング テーブルを定義します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md)|このセクションは、環境をホストするサービスがインスタンス化する特定のトランスポートの型を定義します。 このセクションが空の場合は、既定の型が使用されます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/services.md)|このセクションには、サービスのコレクションが含まれています。 アセンブリで定義された各サービスの場合、この要素は、サービスの設定を指定する `service` 要素を含みます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|このセクションは、再使用可能な構成済みのエンドポイントである標準エンドポイントのコレクションを定義します。 標準エンドポイントは、固定値に設定されたアドレス、バインディング、およびコントラクトの 1 つ以上の属性を持ちます。 たとえば、探索エンドポイントでは、コントラクトが固定されています。 標準エンドポイントを使用して、カスタム バインディングの定義と同様に新しいプロパティを指定して、サービス エンドポイントを拡張することもできます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|\|.NET 構成ファイルのすべての構成要素のルート要素。| + +## 解説 + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、他の製品の構成セクションに要素を追加しません。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスは、構成ファイルの `services` セクションで定義されます。 アセンブリには、任意の数のサービスを含めることができます。 各サービスには、独自の `service` 設定セクションがあります。 セクションとその内容は、サービス コントラクト、動作、および特定のサービスのエンドポイントを定義します。 + + サービスの `name` 属性だけが必須項目です。 既定では、サービスの名前は、サービスの実装に使用される、基になる CLR 型を示します。ただし、 の ConfigurationName プロパティを変更して、CLR 型要件をオーバーライドすることもできます。 + + `behaviorConfiguration` 属性は省略できます。 サービスが使用するサービス動作を識別します。 この属性で指定された動作は、同じ構成ファイルの範囲内に定義されたサービス動作にリンクしている必要があります。 たとえば、同一ファイルまたは親ファイルです。 + + 各サービスでは、`endpoint` 要素で定義された 1 つまたは複数のエンドポイントが公開されます。 各エンドポイントには、独自のアドレスおよびバインディングがあります。 構成ファイル内で使用されるすべてのバインディングは、そのファイルのスコープ内で定義される必要があります。 + + バインディングは、`name` 属性と `bindingConfiguration` 属性の組み合わせによってエンドポイントにリンクされます。 `binding` 属性は、バインディングが定義されているセクションで定義します。 `bindingConfiguration` 属性は、バインディング セクション内で使用される構成済みバインディングを定義します。 バインディング セクションでは、複数の構成済みバインディングを定義できます。 + +## 使用例 + これは、WCF 構成ファイルの例です。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/tcptransport.md b/docs/framework/configure-apps/file-schema/wcf/tcptransport.md new file mode 100644 index 00000000000..5874ffa17b3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/tcptransport.md @@ -0,0 +1,78 @@ +--- +title: "<tcpTransport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 8fcd18c1-9958-42e7-b442-7903f7bdb563 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <tcpTransport> +カスタム バインディングのメッセージを転送するためにチャネルで使用できる TCP トランスポートを定義します。 + +## 構文 + +``` + + +/> +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|channelInitializationTimeout|接続が切断されるまでのチャネルの初期化ステータスの最大時間 \(秒単位\)。 このクォータは、.Net メッセージ フレーム プロトコルを使用して TCP 接続が接続を認証するのに必要な時間を含みます。 クライアントは、サーバーが認証を実行するための十分な情報を得る前に初期データを送信する必要があります。 既定値は 30 秒です。| +|listenBacklog|Web サービスの保留可能なキュー内の接続要求の最大数。 `connectionLeaseTimeout` 属性は、クライアントが接続されるのを待つ時間を制限します。この時間が経過すると接続の例外をスローします。 これは、Web サービスに対して保留可能なキュー内の接続要求の最大数を制御するソケット レベルのプロパティです。 したがって、ListenBacklog が低すぎる場合、サーバーが既存のキュー内の接続の一部を確認するまで WCF は要求を受け入れを停止し、新しい接続を破棄します。既定値は 16 x Sql プロセッサの数です。| +|portSharingEnabled|TCP ポート共有をこの接続で有効にする場合に指定するブール値。 これが `false` の場合、各バインディングは独自の排他ポートを使用します。 既定値は、`false` です。

この設定は、サービスのみに関連します。 クライアントには影響はありません。

この設定を使用するには、\[スタートアップの種類\] を \[手動\] または \[自動\] に変更して、Windows Communication Foundation \(WCF\) の TCP ポート共有サービスを有効にする必要があります。| +|teredoEnabled|Teredo \(ファイアウォールの内側にあるクライアントをアドレス指定するためのテクノロジ\) が有効であるかどうかを指定するブール値。 既定値は、`false` です。

このプロパティは、基になる TCP ソケットで Tredo を有効にします。 詳細については、「[Teredo の概要](http://go.microsoft.com/fwlink/?LinkId=95339)」を参照してください。

このプロパティは [!INCLUDE[wxpsp2](../../../../../includes/wxpsp2-md.md)] および [!INCLUDE[ws2003](../../../../../includes/ws2003-md.md)] にのみ適用できます。 [!INCLUDE[wv](../../../../../includes/wv-md.md)] には、Teredo 用のコンピューター全体の構成オプションがあるので、Vista を実行する場合は、このプロパティは無視されます。 Teredo の場合、クライアント コンピューターおよびサービス コンピューターの両方に Microsoft IPv6 スタックをインストールし、Teredo 用に正しく設定する必要があります。 Teredo の構成の詳細については、「[Teredo の概要](http://go.microsoft.com/fwlink/?LinkId=95339)」を参照してください。 詳細については、「[Windows Server 2003 Technology Centers](http://go.microsoft.com/fwlink/?LinkId=49888)」を参照してください。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + このトランスポートは、"net.tcp:\/\/hostname:port\/path" の形式の URI を使用します。 他の URI コンポーネントは省略可能です。 + + `tcpTransport` 要素は、TCP トランスポート プロトコルを実装するカスタム バインディングを作成する場合の開始点となります。 このトランスポートは、WCF 間の通信用に最適化されています。 + +## 参照 + + + + + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/textmessageencoding.md b/docs/framework/configure-apps/file-schema/wcf/textmessageencoding.md new file mode 100644 index 00000000000..d162502cfd0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/textmessageencoding.md @@ -0,0 +1,83 @@ +--- +title: "<textMessageEncoding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: e6d834d0-356e-45eb-b530-bbefbb9ec3f0 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <textMessageEncoding> +テキストベースの XML メッセージに使用される文字エンコーディングおよびメッセージ バージョン管理を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|maxReadPoolSize|新しいリーダーを割り当てずに同時に読み取り可能なメッセージの数を指定する整数です。 プール サイズを大きくすると、システムでは、比較的大きい作業セットで、アクティビティの急増に対する許容度が高まります。 既定値は 64 です。| +|maxWritePoolSize|新しいライターを割り当てずに同時に送信可能なメッセージの数を指定する整数です。 プール サイズを大きくすると、システムでは、比較的大きい作業セットで、アクティビティの急増に対する許容度が高まります。 既定値は 16 です。| +|messageVersion|バインディングを使用して送信されたメッセージの SOAP バージョンを指定します。 有効な値は、次のとおりです。

- Soap11Addressing10
- Soap12Addressing10

既定値は Soap12Addressing10 です。 この属性は 型です。| +|writeEncoding|バインドでメッセージの発行に使用される文字セット エンコーディングを指定します。 有効な値は、次のとおりです。

- UnicodeFffeTextEncoding: Unicode BigEndian エンコーディング
- Utf16TextEncoding: Unicode エンコーディング
- Utf8TextEncoding: 8 ビットのエンコーディング

既定値は Utf8TextEncoding です。 この属性は 型です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + エンコーディングは、メッセージをバイト シーケンスに変換するプロセスです。 デコードは、その逆のプロセスです。 WCF \(Windows Communication Foundation\) には、SOAP メッセージのエンコードとして、テキスト、バイナリ、および MTOM \(Message Transmission Optimization Mechanism\) の 3 種類があります。 + + `textMessageEncoding` 要素で表されるテキスト エンコーディングでは相互運用性が最も高くなりますが、XML メッセージのエンコーダーとしての効率は最も低くなります。 テキスト エンコーダーは、ネットワーク上でテキストベースのメッセージを作成します。 このエンコーダーにより生成されるメッセージは、WS\-\* ベースの相互運用に適しています。 Web サービスまたは Web サービス クライアントは、一般に、テキスト形式の XML を認識できます。 しかし、大きいブロックのバイナリ データをテキストとして転送するのは、XML メッセージをエンコードする上では、最も非効率的な方法です。 + +## 使用例 + +``` + +``` + +## 参照 + + + + + [メッセージ エンコーダーを選択する](../../../../../docs/framework/wcf/feature-details/choosing-a-message-encoder.md) + [メッセージ エンコーディング](../../../../../docs/framework/configure-apps/file-schema/wcf/message-encoding.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/timeouts.md b/docs/framework/configure-apps/file-schema/wcf/timeouts.md new file mode 100644 index 00000000000..ed2b0eac88a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/timeouts.md @@ -0,0 +1,54 @@ +--- +title: "<timeOuts> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7fccd436-b326-48ec-8de1-c16817a09e0d +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <timeOuts> +サービス ホストを開くまたは閉じるまでに待機できる期間を指定する構成要素を表します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`closeTimeout`|サービス ホストを閉じるまでに待機できる期間を指定する 値。| +|`openTimeout`|サービス ホストを開くまでに待機できる期間を指定する 値。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/host.md)|サービス ホストの設定を指定する構成要素です。| + +## 参照 + + + + + [ホスト](../../../../../docs/framework/wcf/feature-details/hosting.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/tokenrequestparameters.md b/docs/framework/configure-apps/file-schema/wcf/tokenrequestparameters.md new file mode 100644 index 00000000000..35a3cd97bb0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/tokenrequestparameters.md @@ -0,0 +1,29 @@ +--- +title: "<tokenRequestParameters> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1fc2b90c-a61f-4337-ac4c-f341e596a781 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <tokenRequestParameters> +この構成要素には、トークンの要求時にセキュリティ トークン サービスに送信される追加の XML 要素をメッセージ本文に指定するために使用できる子要素が含まれています。 + +## 参照 + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/tracking-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/tracking-of-wcf.md new file mode 100644 index 00000000000..b9002450559 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/tracking-of-wcf.md @@ -0,0 +1,106 @@ +--- +title: "WCF の <tracking> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 70cfaf24-a91c-4e56-ac47-d2ed87a963b3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <tracking> +ワークフロー サービスの追跡設定を定義する構成セクションを表します。 + + ワークフロー追跡とその構成の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」および「[ワークフローの追跡の構成](../../../../../docs/framework/windows-workflow-foundation//configuring-tracking-for-a-workflow.md)」を参照してください。 + +## 構文 + +```vb + +  + + + +     +       + + + + + + + + + + + + + + + + + + + + + + + + + + + +            +              +               +             +           + +       +            +  + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md)|追跡レコードを定期受信する参加要素を定義する、構成要素のコレクション。 追跡参加要素には、追跡レコードからペイロードを処理するロジックが含まれています \(たとえば、ファイルへの書き込みを選択できるなど\)。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/trackingprofile.md)|ワークフロー インスタンスで発生した追跡レコードをフィルター処理するための追跡プロファイル。| + +### 親要素 + +|要素|説明| +|--------|--------| +|system.ServiceModel|すべてのワークフロー構成要素のルート要素。| + +## 解説 + 追跡には、ワークフローの実行を検証する機能が用意されています。 ワークフロー追跡インフラストラクチャはワークフローをインストルメント化し、実行中の主要イベントを反映してレコードを生成します。 たとえば、ワークフロー インスタンスが開始または完了すると、追跡レコードが生成されます。 また、追跡によって、ワークフロー変数に関連付けられたビジネス関連データを抽出することもできます。 たとえば、ワークフローが注文処理システムを表している場合は、注文 ID と共に追跡レコードを抽出できます。 一般的に、WF 追跡機能を有効にすると、ワークフロー実行の診断またはビジネス分析が容易になります。 + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.TrackingSection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.TrackingSection?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/trackingprofile-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/trackingprofile-of-wcf.md new file mode 100644 index 00000000000..7c081027acc --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/trackingprofile-of-wcf.md @@ -0,0 +1,131 @@ +--- +title: "WCF の <trackingProfile> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 09b651c2-c0d2-4850-a101-b0e009a1dc3a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <trackingProfile> +追跡参加要素内でワークフロー追跡レコードのサブスクリプションを作成するための、構成セクションを表します。 追跡プロファイルには、実行時にワークフロー インスタンスの状態が変化したときに生成されるワークフロー イベントを追跡参加要素が定期受信できるようにする、追跡クエリが含まれています。 追跡プロファイル セクション内で定義されたクエリでは、サブスクリプションによって返されるイベントの種類が定義されます。 + + ワークフロー追跡とその構成の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」および「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + +  +     +       + + + + + + + + + + + + + + + + + + + + + + + + + + + +            +              +               +             +           + +       +            +  + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|追跡プロファイルの名前を指定する文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md)|`activityDefinitionId` プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/tracking.md)|ワークフロー サービスの追跡設定を定義する構成セクションを表します。| + +## 解説 + 追跡プロファイルには、実行時にワークフロー インスタンスの状態が変化したときに生成されるワークフロー イベントを追跡参加要素が定期受信できるようにする、追跡クエリが含まれています。 監視の要件に応じて、ワークフローの主な状態変化の少数のセットを定期受信する、大まかなプロファイルを作成できます。 それとは反対に、結果として得られるイベントが、後で詳細な実行フローを十分に再構築できるほど豊富な、詳細なプロファイルを作成することもできます。 + + 追跡プロファイルは、特定の追跡レコードを対象としてワークフロー ランタイムを照会できる、追跡レコード用の宣言型のサブスクリプションとして構築されます。 クエリには、TrackingRecord オブジェクトのさまざまなクラスを定期受信できる型が複数あります。 クエリの一覧については、「[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md)[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + + 次の例は、追跡参加要素が `Started`ワークフロー イベントおよび `Completed`ワークフロー イベントを定期受信できるようにする、構成ファイル内の追跡プロファイルを示します。 + +``` + +  +     +       + +            +             +               +               +             +           + +       +            +  + + + +``` + +## 参照 + + + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transactedbatching.md b/docs/framework/configure-apps/file-schema/wcf/transactedbatching.md new file mode 100644 index 00000000000..92887837443 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transactedbatching.md @@ -0,0 +1,93 @@ +--- +title: "<transactedBatching> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2f790a0d-8f03-4b86-81b5-ce1bc1a6c575 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <transactedBatching> +受信操作でトランザクション バッチがサポートされるかどうかを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`maxBatchSize`|1 回のトランザクションでまとめてバッチ処理できる受信操作の最大数を指定する整数。 既定値は 0 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作を指定します。| + +## 解説 + トランザクション バッチで構成されるトランスポートは、複数の受信操作を 1 つのトランザクションにバッチ処理しようとします。 これを実行することにより、受信操作のたびに行うトランザクションの作成とそのコミットの比較的高いコストを回避できます。 + +## 使用例 + 構成ファイル内でサービスにトランザクション バッチ動作を追加する方法を次の例に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transactionflow.md b/docs/framework/configure-apps/file-schema/wcf/transactionflow.md new file mode 100644 index 00000000000..262cb8ea987 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transactionflow.md @@ -0,0 +1,62 @@ +--- +title: "<transactionFlow> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8c7b4c5b-ace3-4fe3-89ff-7b13c9aacd13 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# <transactionFlow> +カスタム バインディングのトランザクション フロー サポートを指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|transactionProtocol|使用されるトランザクション プロトコルを指定します。 以下の値が有効です。

- OleTransactions
- WSAtomicTransactionOctober2004

既定値は OleTransactions です。

この属性は 型です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + この要素により、受信トランザクションの目的のプロトコル形式を指定できるだけでなく、エンドポイントのバインディング設定で受信トランザクション フローを有効または無効にできます。 この構成要素の使い方の詳細については、「[ServiceModel トランザクションの構成](../../../../../docs/framework/wcf/feature-details/servicemodel-transaction-configuration.md)」および「[トランザクション フローの有効化](../../../../../docs/framework/wcf/feature-details/enabling-transaction-flow.md)」を参照してください。 + +> [!CAUTION] +> `OleTransactions` プロトコルを使用してエンドポイント間でトランザクションをフローさせるとき、フロー先のエンドポイントが `OleTransactions` 以外のプロトコルを使用して再びフローを試みると、トランザクション タイムアウトが失われる場合があります。 その結果、OleTransactions ホップより後のすべてのダウンレベル ノードが、予想より遅くタイムアウトする可能性があります。 + +## 参照 + + + + [ServiceModel トランザクションの構成](../../../../../docs/framework/wcf/feature-details/servicemodel-transaction-configuration.md) + [トランザクション フローの有効化](../../../../../docs/framework/wcf/feature-details/enabling-transaction-flow.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-basichttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-basichttpbinding.md new file mode 100644 index 00000000000..d5bc045322a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-basichttpbinding.md @@ -0,0 +1,129 @@ +--- +title: "<basicHttpBinding> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4c5ba293-3d7e-47a6-b84e-e9022857b7e5 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# <basicHttpBinding> の <transport> +HTTP トランスポートの認証パラメーターを制御するプロパティを定義します。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|clientCredentialType|- HTTP 認証を使用してクライアント認証を実行するときに使用される資格情報の種類を指定します。 既定値は、`None` です。 この属性は 型です。| +|proxyCredentialType|- HTTP 経由のプロキシを使用してドメイン内からクライアント認証を実行するときに使用される資格情報の種類を指定します。 この属性は、親 `security` 要素の `mode` 属性が `Transport` または `TransportCredentialsOnly` の場合にだけ適用されます。 この属性は 型です。| +|realm|ダイジェストまたは基本認証の HTTP 認証方式によって使用されるレルムを指定する文字列。 既定値は空の文字列です。| +|policyEnforcement|この列挙体は、 を適用するタイミングを指定します。

1. Never – ポリシーが適用されることはありません \(拡張保護は無効になります\)。
2. WhenSupported – ポリシーが適用されるのは、クライアントが拡張保護をサポートしている場合のみです。
3. Always – ポリシーは常に適用されます。 拡張保護をサポートしていないクライアントは認証に失敗します。| +|protectionScenario|この列挙体は、ポリシーによって適用される保護シナリオを指定します。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|なし|メッセージは、転送中はセキュリティで保護されません。| +|Basic|基本認証を指定します。| +|Digest|ダイジェスト認証を指定します。| +|Ntlm|Windows 認証に失敗した場合で可能な場合は、NTLM 認証を指定します。| +|Windows|Windows 統合認証を指定します。| + +## proxyCredentialType 属性 + +|値|説明| +|-------|--------| +|なし|- メッセージは、転送中はセキュリティで保護されません。| +|Basic|RFC 2617 『HTTP Authentication: Basic and Digest Authentication』で定義されているとおりに基本認証を指定します。| +|Digest|RFC 2617 『HTTP Authentication: Basic and Digest Authentication』で定義されているとおりにダイジェスト認証を指定します。| +|Ntlm|Windows 認証に失敗した場合で可能な場合は、NTLM 認証を指定します。| +|Windows|Windows 統合認証を指定します。| +|証明書|証明書を使用したクライアント認証を実行します。 このオプションは、親要素の `security` の `Mode` 属性が Transport に設定されている場合のみ機能し、TransportCredentialOnly に設定されている場合は機能しません。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)のセキュリティ機能を定義します。| + +## 使用例 + 基本的なバインディングを使用した SSL トランスポート セキュリティの使用例を次に示します。 既定で、基本的なバインディングは HTTP 通信をサポートします。 + +``` + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-msmqintegrationbinding.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-msmqintegrationbinding.md new file mode 100644 index 00000000000..94c90145049 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-msmqintegrationbinding.md @@ -0,0 +1,68 @@ +--- +title: "<msmqIntegrationBinding> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 054579e3-7fdd-47df-99ca-952706ba5c8e +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# <msmqIntegrationBinding> の <transport> +メッセージ キュー統合トランスポートのセキュリティ設定を定義します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`msmqAuthenticationMode`|MSMQ トランスポートによるメッセージの認証方法を指定します。 これが `None` に設定されている場合、`msmqProtectionLevel` 属性の値も `None` に設定する必要があります。

以下の値が有効です。

- None: 認証は行われません。
- WindowsDomain: 認証機構により Active Directory が使用され、メッセージに関連付けられた SID の X.509 証明書が取得されます。 次に、これを使用してキューの ACL がチェックされ、ユーザーがキューに書き込む権限を持っていることが確認されます。
- Certificate: チャネルは、証明書ストアから証明書を取得します。

既定値は WindowsDomain です。 この属性は 型です。| +|`msmqEncryptionAlgorithm`|メッセージ キュー マネージャー間でメッセージを転送するときに、ネットワーク上でメッセージの暗号化に使用されるアルゴリズムを指定します。 以下の値が有効です。

- RC4Stream
- AES

既定値は RC4Stream です。 この属性は 型です。| +|`msmqProtectionLevel`|MSMQ トランスポートのレベルでメッセージをセキュリティで保護する方法を指定します。 暗号化を行うとメッセージの整合性が確保されますが、EncryptAndSign を使用するとメッセージの整合性と否認防止の両方が確保されます。つまり、メッセージは本当にその送信者から送信されていることになり、記載されている送信者が実際の送信者になります。

- 以下の値が有効です。
- None: 保護されません。
- Sign: メッセージは署名されます。
- EncryptAndSign: メッセージは暗号化および署名されます。

既定値は Sign です。 この属性は、ProtectionLevel 型です。| +|`msmqSecureHashAlgorithm`|- 署名の一部としてダイジェストの計算に使用されるアルゴリズムを指定します。 以下の値が有効です。
- MD5
- SHA1
- SHA256
- SHA512

既定値は SHA1 です。 この属性は 型です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md)|MSMQ バインディングのセキュリティ設定を定義します。| + +## 解説 + この要素は、メッセージ キュー統合トランスポートのセキュリティ設定をカプセル化します。 設定は、メッセージ キュー統合トランスポートとキューに置かれているトランスポートの両方で同じです。 この設定を使用すると、認証モード、暗号化アルゴリズム、セキュア ハッシュ アルゴリズム、および保護レベルを設定できます。 + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-nethttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-nethttpbinding.md new file mode 100644 index 00000000000..e6121d83137 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-nethttpbinding.md @@ -0,0 +1,129 @@ +--- +title: "<netHttpBinding> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3b180006-1661-43bf-a699-96fd3da469af +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <netHttpBinding> の <transport> +HTTP トランスポートの認証パラメーターを制御するプロパティを定義します。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|clientCredentialType|- HTTP 認証を使用してクライアント認証を実行するときに使用される資格情報の種類を指定します。 既定値は、`None` です。 この属性は 型です。| +|proxyCredentialType|- HTTP 経由のプロキシを使用してドメイン内からクライアント認証を実行するときに使用される資格情報の種類を指定します。 この属性は、親 `security` 要素の `mode` 属性が `Transport` または `TransportCredentialsOnly` の場合にだけ適用されます。 この属性は 型です。| +|realm|ダイジェストまたは基本認証の HTTP 認証方式によって使用されるレルムを指定する文字列。 既定値は空の文字列です。| +|policyEnforcement|この列挙体は、 を適用するタイミングを指定します。

1. Never – ポリシーが適用されることはありません \(拡張保護は無効になります\)。
2. WhenSupported – ポリシーが適用されるのは、クライアントが拡張保護をサポートしている場合のみです。
3. Always – ポリシーは常に適用されます。 拡張保護をサポートしていないクライアントは認証に失敗します。| +|protectionScenario|この列挙体は、ポリシーによって適用される保護シナリオを指定します。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|なし|メッセージは、転送中はセキュリティで保護されません。| +|Basic|基本認証を指定します。| +|Digest|ダイジェスト認証を指定します。| +|Ntlm|Windows 認証に失敗した場合で可能な場合は、NTLM 認証を指定します。| +|Windows|Windows 統合認証を指定します。| + +## proxyCredentialType 属性 + +|値|説明| +|-------|--------| +|なし|- メッセージは、転送中はセキュリティで保護されません。| +|Basic|RFC 2617 『HTTP Authentication: Basic and Digest Authentication』で定義されているとおりに基本認証を指定します。| +|Digest|RFC 2617 『HTTP Authentication: Basic and Digest Authentication』で定義されているとおりにダイジェスト認証を指定します。| +|Ntlm|Windows 認証に失敗した場合で可能な場合は、NTLM 認証を指定します。| +|Windows|Windows 統合認証を指定します。| +|証明書|証明書を使用したクライアント認証を実行します。 このオプションは、親要素の `security` の `Mode` 属性が Transport に設定されている場合のみ機能し、TransportCredentialOnly に設定されている場合は機能しません。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-nethttpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/nethttpbinding.md)のセキュリティ機能を定義します。| + +## 使用例 + 基本的なバインディングを使用した SSL トランスポート セキュリティの使用例を次に示します。 既定で、基本的なバインディングは HTTP 通信をサポートします。 + +``` + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-netmsmqbinding.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-netmsmqbinding.md new file mode 100644 index 00000000000..6b19b6fc3ca --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-netmsmqbinding.md @@ -0,0 +1,69 @@ +--- +title: "<netMsmqBinding> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 72e1b338-39f0-4af1-a5d9-7a2fb79f6a0b +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <netMsmqBinding> の <transport> +トランスポートのセキュリティ設定を定義します。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|msmqAuthenticationMode|MSMQ トランスポートによるメッセージの認証方法を指定します。 以下の値が有効です。

- None: 認証は行われません。
- WindowsDomain: 認証機構により Active Directory が使用され、メッセージに関連付けられたセキュリティ識別子の X.509 証明書が取得されます。 次に、これを使用してキューの ACL がチェックされ、ユーザーがキューへの書き込み権限を持っていることが確認されます。
- Certificate: チャネルは、証明書ストアから証明書を取得します。

既定値は、`WindowsDomain` です。

この属性が `None` に設定されている場合、`msmqProtectionLevel` 属性も `None` に設定する必要があります。 この属性は 型です。| +|msmqEncryptionAlgorithm|メッセージ キュー マネージャー間でメッセージを転送するときに、ネットワーク上でメッセージの暗号化に使用されるアルゴリズムを指定します。 以下の値が有効です。

- RC4Stream
- AES
- 既定値は `RC4Stream` です。 この属性は 型です。| +|msmqProtectionLevel|MSMQ トランスポートのレベルでメッセージをセキュリティで保護する方法を指定します。 暗号化を行うとメッセージの整合性が確保されますが、署名および暗号化を使用するとメッセージの整合性と否認防止の両方が確保されます。 つまり、メッセージは本当にその送信者から送信されていることになり、記載されている送信者が実際の送信者になります。 以下の値が有効です。

- None: 保護されません。
- Sign: メッセージは署名されます。
- EncryptAndSign: メッセージは暗号化および署名されます。
- 既定値は、`Sign` です。| +|msmqSecureHashAlgorithm|メッセージ ダイジェストの計算に使用されるハッシュ アルゴリズムを指定します。 以下の値が有効です。

- MD5
- SHA1
- SHA256
- SHA512

既定値は、`SHA1` です。 この属性は 型です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-netmsmqbinding.md)|キューに置かれているトランスポートのセキュリティ設定を定義します。| + +## 参照 + + + + + [WCF のキュー](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-netnamedpipebinding.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-netnamedpipebinding.md new file mode 100644 index 00000000000..1ab24533b9a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-netnamedpipebinding.md @@ -0,0 +1,62 @@ +--- +title: "<netNamedPipeBinding> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d9eff52d-4bde-4586-b56a-b0ec24611f8d +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# <netNamedPipeBinding> の <transport> +名前付きパイプのトランスポート セキュリティ設定を定義します。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|protectionLevel|名前付きパイプの保護レベルを定義します。 メッセージに署名すると、転送中のメッセージが第三者によって改ざんされるリスクを軽減します。 暗号化により、転送中にデータレベルのプライバシーが提供されます。 以下の値が有効です。

- None: 保護されません。
- Sign: メッセージは署名されます。
- EncryptAndSign: メッセージは暗号化および署名されます。

既定値は EncryptAndSign です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-netnamedpipebinding.md)|バインディングのセキュリティ設定を定義します。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-netpeertcpbinding.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-netpeertcpbinding.md new file mode 100644 index 00000000000..648e4f4ef9f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-netpeertcpbinding.md @@ -0,0 +1,69 @@ +--- +title: "<netPeerTcpBinding> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c44d86d2-1160-44d7-9c7a-297b12eccc7f +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# <netPeerTcpBinding> の <transport> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/netpeertcpbinding.md)の使用時にトランスポート レベルのセキュリティ設定を指定します。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|credentialType|省略可能です。 ピア トランスポートにより送信されるメッセージの検証に使用される資格情報の種類を指定します。 この属性は 型です。| + +## credentialType 属性 + +|値|説明| +|-------|--------| +|証明書|ピア チャネル トランスポートの認証には X 509 証明書が必要です。| +|\[Password\]|ピア チャネル トランスポートの認証には正しいパスワードが必要です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-netpeerbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/netpeertcpbinding.md)のセキュリティ設定を定義します。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-nettcpbinding.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-nettcpbinding.md new file mode 100644 index 00000000000..9c908ba5f29 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-nettcpbinding.md @@ -0,0 +1,92 @@ +--- +title: "<netTcpBinding> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 49462e0a-66e1-463f-b3e1-c83a441673c6 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# <netTcpBinding> の <transport> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md) を使用して構成されたエンドポイントに対する、メッセージ レベルのセキュリティ要件の種類を定義します。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|clientCredentialType|省略可能です。 トランスポート セキュリティを使用してクライアント認証を実行するときに使用される資格情報の種類を指定します。

- 既定値は `Windows` です。
- この属性は 型です。| +|protectionLevel|省略可能です。 TCP トランスポートのレベルでセキュリティを定義します。 メッセージに署名すると、転送中のメッセージが第三者によって改ざんされるリスクを軽減します。 暗号化により、転送中にデータレベルのプライバシーが提供されます。

既定値は `EncryptAndSign` です。| +|sslProtocols|どの SslProtocols がサポートされているのかを指定する SslProtocols 列挙型フラグの値。 既定値は Ssl3|Tls|Tls11|Tls12 です。| +|policyEnforcement|この列挙体は、 を適用するタイミングを指定します。

1. Never – ポリシーが適用されることはありません \(拡張保護は無効になります\)。
2. WhenSupported – ポリシーが適用されるのは、クライアントが拡張保護をサポートしている場合のみです。
3. Always – ポリシーは常に適用されます。 拡張保護をサポートしていないクライアントは認証に失敗します。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|なし|クライアントは匿名です。 これには、サービスの証明書が必要です。| +|Windows|SP ネゴシエーション \(Kerberos ネゴシエーション\) を使用して、クライアントの Windows 認証を指定します。| +|証明書|クライアントは、証明書を使用して認証されます。 これは SSL ネゴシエーションを使用し、サービスの証明書が必要です。| + +## protectionLevel 属性 + +|値|説明| +|-------|--------| +|なし|保護されません。| +|Sign|メッセージは署名されます。| +|EncryptAndSign|- メッセージは暗号化および署名されます。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-nettcpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md) のセキュリティ機能を指定します。| + +## 解説 + トランスポート セキュリティは、SOAP メッセージの整合性と機密性の保護、および相互認証に使用します。 このセキュリティ モードがバインディング上で選択された場合、チャネル スタックはセキュリティ トランスポートを使用して構成され、SOAP メッセージは Windows \(ネゴシエート\) や TCP 上の SSL などのトランスポート セキュリティを使用して保護されます。 + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-peertransport.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-peertransport.md new file mode 100644 index 00000000000..8f54e9d8900 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-peertransport.md @@ -0,0 +1,70 @@ +--- +title: "<peerTransport> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d7116240-845c-4b6f-b203-262de6b597ef +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <peerTransport> の <transport> +このバインドで構成されたピアが送信する、セキュリティで保護されたメッセージのトランスポートの型を指定します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|credentialType|省略可能です。 ピア トランスポートにより送信されるメッセージの検証に使用される資格情報の種類を指定します。 この属性は 型です。| + +## credentialType 属性 + +|値|説明| +|-------|--------| +|証明書|ピア チャネル トランスポートの認証には X 509 証明書が必要です。| +|\[Password\]|ピア チャネル トランスポートの認証には正しいパスワードが必要です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-peertransport.md)|ピア トランスポートのセキュリティ設定を定義します。| + +## 解説 + この要素は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-peertransport.md) の mode 属性が `Transport` または `TransportWithMessageCredential` に設定されている場合にのみ設定されます。 + +## 参照 + + + + + [トランスポート セキュリティ](../../../../../docs/framework/wcf/feature-details/transport-security.md) + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-webhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-webhttpbinding.md new file mode 100644 index 00000000000..ba2e028a79d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-webhttpbinding.md @@ -0,0 +1,97 @@ +--- +title: "<webHttpBinding> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f150fb19-7de1-44af-81f4-86cad881cd05 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <webHttpBinding> の <transport> +HTTP 要求を受信するように構成されたサービス エンドポイントのトランスポート レベルのセキュリティ設定を定義します。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 型 + + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`clientCredentialType`|サービスに対するクライアントの認証に使用される資格情報を指定します。 この属性は 型です。| +|`proxyCredentialType`|ドメイン プロキシに対するクライアントの認証に使用される資格情報を指定します。 この属性は 型です。| +|`realm`|ダイジェストまたは基本認証の認証レルムを指定する文字列。 既定値は空の文字列です。

認証レルムでは、少なくとも、認証を実行するホストの名前を指定します。 アクセス権のあるユーザーのコレクションも指定できます。 ユーザーは、認証レルムを照会して、複数のユーザー名およびパスワードの候補のうち、どれを使用できるかを確認することができます。| +|`policyEnforcement`|この列挙体は、 を適用するタイミングを指定します。

1. Never – ポリシーが適用されることはありません \(拡張保護は無効になります\)。
2. WhenSupported – ポリシーが適用されるのは、クライアントが拡張保護をサポートしている場合のみです。
3. Always – ポリシーは常に適用されます。 拡張保護をサポートしていないクライアントは認証に失敗します。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|`None`|セキュリティを無効にします。| +|`Basic`|基本認証を使用します。| +|`Certificate`|X.509 証明書を使用して、クライアントを認証します。| +|`Digest`|ダイジェスト認証を使用します。| +|`Ntlm`|Windows ドメインのフォールバックとして NTLM 認証を使用します。| +|`Windows`|統合 Windows 認証を使用します。| + +## proxyCredentialType 属性 + +|値|説明| +|-------|--------| +|`None`|セキュリティを無効にします。| +|`Basic`|基本認証を使用します。| +|`Digest`|ダイジェスト認証を使用します。| +|`Ntlm`|Windows ドメインのフォールバックとして NTLM を使用します。| +|`Windows`|統合 Windows 認証を使用します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-webhttpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) 要素のセキュリティ機能を表します。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) + [WCF Web HTTP プログラミング モデル](../../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-ws2007httpbinding.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-ws2007httpbinding.md new file mode 100644 index 00000000000..955826fe7f5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-ws2007httpbinding.md @@ -0,0 +1,86 @@ +--- +title: "<ws2007HttpBinding> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 692befa3-8b0b-4ec5-b601-755874e98eb0 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <ws2007HttpBinding> の <transport> +HTTP トランスポートの認証設定を定義します。 + +## 構文 + +``` + +transport clientCredentialType = + "Basic/Certificate/Digest/None/Ntlm/Windows" + proxyCredentialType="Basic/Digest/None/Ntlm/Windows" + realm="string" +``` + +## 型 + + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`clientCredentialType`|サービスに対するクライアントの認証に使用される資格情報を指定します。 この属性は 型です。| +|`proxyCredentialType`|ドメイン プロキシに対するクライアントの認証に使用される資格情報を指定します。 この属性は 型です。| +|`realm`|ダイジェスト認証または基本認証の認証レルム。 既定値は空の文字列です。

認証レルムでは、少なくとも、認証を実行するホストの名前を指定します。 アクセス権のあるユーザーのコレクションも指定できます。 ユーザーは、認証レルムを照会して、複数のユーザー名とパスワードの候補のうち、どれを使用できるかを確認できます。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|なし|セキュリティを無効にします。| +|Basic|基本認証を使用します。| +|Digest|ダイジェスト認証を使用します。| +|Ntlm|Windows ドメインのフォールバックとして NTLM 認証を使用します。| +|Windows|統合 Windows 認証を使用します。| +|証明書|X.509 証明書を使用して、クライアントを認証します。| + +## proxyCredentialType 属性 + +|値|説明| +|-------|--------| +|なし|セキュリティを無効にします。| +|Basic|基本認証を使用します。| +|Digest|ダイジェスト認証を使用します。| +|Ntlm|Windows ドメインのフォールバックとして NTLM を使用します。| +|Windows|統合 Windows 認証を使用します。| +|証明書|X.509 証明書を使用して、クライアントを認証します。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-ws2007httpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/ws2007httpbinding.md) 要素のセキュリティ機能を表します。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transport-of-wshttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/transport-of-wshttpbinding.md new file mode 100644 index 00000000000..0881d25eaf3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transport-of-wshttpbinding.md @@ -0,0 +1,97 @@ +--- +title: "<wsHttpBinding> の <transport> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 21e38acf-450a-4bda-82b6-de305e1f7cd8 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# <wsHttpBinding> の <transport> +HTTP トランスポートの認証設定を定義します。 + +## 構文 + +``` + + + + + + + + + + + + +``` + +## 型 + + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`clientCredentialType`|サービスに対するクライアントの認証に使用される資格情報を指定します。 この属性は 型です。| +|`proxyCredentialType`|ドメイン プロキシに対するクライアントの認証に使用される資格情報を指定します。 この属性は 型です。| +|`realm`|ダイジェストまたは基本認証の認証レルムを指定する文字列。 既定値は空の文字列です。

認証レルムでは、少なくとも、認証を実行するホストの名前を指定します。 アクセス権のあるユーザーのコレクションも指定できます。 ユーザーは、認証レルムを照会して、複数のユーザー名およびパスワードの候補のうち、どれを使用できるかを確認することができます。| +|`policyEnforcement`|この列挙体は、 を適用するタイミングを指定します。

1. Never – ポリシーが適用されることはありません \(拡張保護は無効になります\)。
2. WhenSupported – ポリシーが適用されるのは、クライアントが拡張保護をサポートしている場合のみです。
3. Always – ポリシーは常に適用されます。 拡張保護をサポートしていないクライアントは認証に失敗します。| + +## clientCredentialType 属性 + +|値|説明| +|-------|--------| +|`None`|セキュリティを無効にします。| +|`Basic`|基本認証を使用します。| +|`Digest`|ダイジェスト認証を使用します。| +|`Ntlm`|Windows ドメインのフォールバックとして NTLM 認証を使用します。| +|`Windows`|統合 Windows 認証を使用します。| +|`Certificate`|X.509 証明書を使用して、クライアントを認証します。| + +## proxyCredentialType 属性 + +|値|説明| +|-------|--------| +|`None`|セキュリティを無効にします。| +|`Basic`|基本認証を使用します。| +|`Digest`|ダイジェスト認証を使用します。| +|`Ntlm`|Windows ドメインのフォールバックとして NTLM を使用します。| +|`Windows`|統合 Windows 認証を使用します。| +|`Certificate`|X.509 証明書を使用して、クライアントを認証します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md)|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)のセキュリティ機能を表します。| + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transportconfigurationtypes.md b/docs/framework/configure-apps/file-schema/wcf/transportconfigurationtypes.md new file mode 100644 index 00000000000..84f76d78ccb --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transportconfigurationtypes.md @@ -0,0 +1,60 @@ +--- +title: "<transportConfigurationTypes> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 929c8b0a-5460-4f66-a098-2cb8d4e10b69 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <transportConfigurationTypes> +特定のトランスポートの型を識別する構成要素のコレクションを表します。 これはカスタム WAS プロトコルの追加に使用できます。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|トランスポートの名前| +|transportConfigurationType|トランスポートを実装する型| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/add-of-transportconfigurationtype.md)|特定のトランスポートの型を識別する構成要素を追加します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md)|環境をホストするサービスがインスタンス化する特定のトランスポートの型を定義します。| + +## 参照 + + + + [ホスト](../../../../../docs/framework/wcf/feature-details/hosting.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/transports.md b/docs/framework/configure-apps/file-schema/wcf/transports.md new file mode 100644 index 00000000000..4d3db43959d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/transports.md @@ -0,0 +1,34 @@ +--- +title: "トランスポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 5c064c51-5863-4fe7-a772-e298841b62ff +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# トランスポート +トランスポート層は、チャネル スタックの最も低いレベルにあります。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] で使用される主なトランスポートは、HTTP、HTTPS、TCP、および名前付きパイプです。 このセクションでは、さまざまな種類のトランスポートを構成できるすべての構成要素を示します。 + +## 参照 + + + + [トランスポート](../../../../../docs/framework/wcf/feature-details/transports.md) + [トランスポートの選択](../../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/udpannoucementendpoint.md b/docs/framework/configure-apps/file-schema/wcf/udpannoucementendpoint.md new file mode 100644 index 00000000000..e2b107a1ed0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/udpannoucementendpoint.md @@ -0,0 +1,91 @@ +--- +title: "<udpAnnoucementEndpoint> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5b3fa9c5-f372-4df9-a9d6-1e426063b721 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <udpAnnoucementEndpoint> +この構成要素は、UDP バインディングを使用してアナウンス メッセージを送信するためにサービスが使用する標準エンドポイントを定義します。 これには固定コントラクトがあり、2 つの探索のバージョンをサポートします。 また、WS\-Discovery の仕様 \(WS\-Discovery April 2005 または WS\-Discovery V1.1\) に規定された固定 UDP バインディングと既定のアドレスも備えています。 アナウンス メッセージの送受信に使用するマルチキャスト アドレスを指定できます。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|discoveryVersion|WS\-Discovery プロトコルの 2 つのバージョンのうち、1 つを指定する文字列。 有効値は WSDiscovery11 と WSDiscoveryApril2005 です。 この値は、 型です。| +|maxAnnouncementDelay|Discovery プロトコルが Hello メッセージを送信するまでの待機時間の最大値を指定する Timespan 値。 メッセージは送信前に 0 からこの属性値の間のランダムな時間だけ待機します。 この属性はランダムな短い待機時間を設定するために使用されるもので、ネットワークが機能しなくなり、すべてのサービスが同時にオンラインに戻ったときにネットワーク ストームが発生することを防ぎます。| +|multicastAddress|探索メッセージの送受信に使用するマルチキャスト アドレスを指定する URI。 既定値は、プロトコル仕様に準じたマルチキャスト アドレスです。| +|name|標準エンドポイントの構成名を指定する文字列。 この名前は、サービス エンドポイントの `endpointConfiguration` 属性で使用され、標準エンドポイントと構成を関連付けます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/udptransportsettings.md)|UDP エンドポイントの UDP トランスポートを構成できる設定のコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|1 つ以上のプロパティ \(アドレス、バインディング、コントラクト\) が固定されている、あらかじめ定義されたエンドポイントである標準エンドポイントのコレクション。| + +## 使用例 + 既定のマルチキャスト アドレスを使用した UDP マルチキャスト トランスポート経由、および指定されたマルチキャスト アドレスを使用した UDP マルチキャスト トランスポート経由でアナウンスをリッスンするクライアントの例を次に示します。 + +``` + + + + + +... + + + + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/udpbinding.md b/docs/framework/configure-apps/file-schema/wcf/udpbinding.md new file mode 100644 index 00000000000..b3b913c4720 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/udpbinding.md @@ -0,0 +1,120 @@ +--- +title: "<udpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fa291901-8340-45c6-9c44-5d9281c70bc3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <udpBinding> + バインディングの構成に使用する構成要素です。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`duplicateMessageHistoryLength`|重複するメッセージの履歴の長さを指定する整数値。| +|`maxBufferPoolSize`|チャネルからメッセージを受け取るメッセージ バッファーのマネージャーが使用するために割り当てられる、最大メモリ量を指定する整数値。 既定値は 524288 \(0x80000\) バイトです。| +|`maxBufferSize`|このバインディングで構成されるエンドポイントのメッセージが処理されるときのメッセージを格納するバッファーの最大サイズを指定する整数値 \(バイト単位\)。 既定値は 65,536 バイトです。| +|`maxPendingMessagesTotalSize`|受信して、各チャネル インスタンスの入力キューからまだ削除していないメッセージの最大数を指定する整数値。| +|`maxReceivedMessageSize`|このバインディングで構成されるチャネルが受信可能なメッセージの最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で定義する正の整数。 受信側のメッセージが大きすぎると、送信側は SOAP エラーを受け取ります。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65,536 バイトです。| +|`maxRetransmitCount`|再送信メッセージの最大数を指定する整数値。| +|`multicastInterfaceId`|マルチキャストのインターフェイス ID を指定する整数値。| +|`name`|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 各バインドには、サービスのメタデータでこれをまとめて一意に識別する `name` および `namespace` 属性が含まれています。 また、この名前は、同じ種類のバインディング間で一意です。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`textEncoding`|バインディングでメッセージの発行に使用される文字セット エンコーディングを設定します。 以下の値が有効です。

- BigEndianUnicode: Unicode BigEndian エンコーディング。
- Unicode: 16 ビット エンコーディング。
- UTF8: 8 ビット エンコーディング。

既定値は UTF8 です。 この属性は 型です。| +|`timeToLive`|バインディングに対する有効期間を指定する期間値。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + UdpBinding により、WCF サービスが UDP トランスポートを介して通信することができます。 ここでは、クライアントがサービスにメッセージを送信し、応答は返されない "ファイア アンド フォーゲット \(撃ち放し\)" メッセージ交換を使用します。 + +## 使用例 + \<`udpBinding`\> 要素を使用して を構成する方法を次の例に示します。 + +```xml + + + + +``` + +## 参照 + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/udpdiscoveryendpoint.md b/docs/framework/configure-apps/file-schema/wcf/udpdiscoveryendpoint.md new file mode 100644 index 00000000000..97997d1d28c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/udpdiscoveryendpoint.md @@ -0,0 +1,88 @@ +--- +title: "<udpDiscoveryEndpoint> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1f485329-2771-43bc-88de-df8f2faa3bb7 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <udpDiscoveryEndpoint> +この構成要素は、UDP マルチキャスト バインディングを使用した探索操作用に事前に構成される標準エンドポイントを定義します。 このエンドポイントには固定コントラクトがあり、WS\-Discovery プロトコルの 2 つのバージョンをサポートします。 また、WS\-Discovery の仕様 \(WS\-Discovery April 2005 または WS\-Discovery V1.1\) に規定された固定 UDP バインディングと既定のアドレスも備えています。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|discoveryMode|探索プロトコルのモードを示す文字列。 有効値は "Adhoc" と "Managed" です。 マネージ モードでは、プロトコルは Discoverable サービスのリポジトリとして機能する Discovery Proxy に依存します。 アドホック モードでは、プロトコルは UDP マルチキャスト メカニズムを使用して利用可能なサービスを探索する必要があります。 この値は、 型です。| +|discoveryVersion|WS\-Discovery プロトコルの 2 つのバージョンのうち、1 つを指定する文字列。 有効値は WSDiscovery11 と WSDiscoveryApril2005 です。 この値は、 型です。| +|maxResponseDelay|Discovery プロトコルが Probe Match や Resolve Match などのメッセージを送信するまでの待機時間の最大値を指定する Timespan 値。

すべての ProbeMatch が同時に送信されると、ネットワーク ストームが発生することがあります。 これを防ぐために、各 ProbeMatch はランダムな時間だけ待機して送信されます。 ランダムな待機時間は、0 からこの属性に設定された値の範囲内で設定されます。 この属性を 0 に設定すると、ProbeMatch メッセージは待機せずに短いループで送信されます。 それ以外の場合は、ProbeMatch メッセージはランダムな時間だけ待機して送信されます。すべての ProbeMatch メッセージの送信にかかる合計時間が maxResponseDelay を超えることはありません。 この値はサービスのみに関連するもので、クライアントが使用するものではありません。| +|multicastAddress|探索メッセージの送受信に使用するマルチキャスト アドレスを指定する URI。 既定値は、プロトコル仕様に準じたマルチキャスト アドレスです。| +|`name`|標準エンドポイントの構成名を指定する文字列。 この名前は、サービス エンドポイントの `endpointConfiguration` 属性で使用され、標準エンドポイントと構成を関連付けます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/udptransportsettings.md)|UDP エンドポイントの UDP トランスポートを構成できる設定のコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|1 つ以上のプロパティ \(アドレス、バインディング、コントラクト\) が固定されている、あらかじめ定義されたエンドポイントである標準エンドポイントのコレクション。| + +## 使用例 + UDP マルチキャスト トランスポート経由で探索メッセージをリッスンするサービスの例を次に示します。 + +``` + + + + + + + + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/udptransportsettings-of-udpannouncementendpoint.md b/docs/framework/configure-apps/file-schema/wcf/udptransportsettings-of-udpannouncementendpoint.md new file mode 100644 index 00000000000..ae6a1d892ea --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/udptransportsettings-of-udpannouncementendpoint.md @@ -0,0 +1,73 @@ +--- +title: "<udpAnnouncementEndpoint> の <udpTransportSettings> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a7ddff1a-5eed-4bbc-8580-b95ef8890e1f +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <udpAnnouncementEndpoint> の <udpTransportSettings> +この構成要素は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/udpannoucementendpoint.md) の UDP トランスポート設定を公開します。 + +## 構文 + +``` + + + + + + + duplicateMessageHistoryLength=”Integer” +                  maxBufferPoolSize=”Integer” + maxMulticastRetransmitCount=”Integer” +                  maxPendingMessageCount=”Integer” +                  maxReceivedMessageSize=”Integer” +                  maxUnicastRetransmitCount=”Integer” +                  multicastInterfaceId=”String” + socketReceiveBufferSize=”Integer” + timeToLive=”Integer” /> + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|duplicateMessageHistoryLength|重複するメッセージを特定するためにトランスポートによって使用されるメッセージ ハッシュの最大数を指定する整数。 重複の検出は、TransportManager レベルで実行されます。 このプロパティを 0 に設定すると、重複の検出は無効になります。

この属性を使用して、システムの管理者や開発者は重複するメッセージの検出アルゴリズムをオフにできます。 これは、独自の重複検出アルゴリズムを実行する場合に望ましいことがあります。

既定値は 4112 です。| +|maxBufferPoolSize|トランスポートによって使用されるバッファー プールの最大サイズを指定する整数。| +|maxMulticastRetransmitCount|メッセージを \(最初に送信した後に\) 再送信する最大回数を指定する整数。

既定値は 2 です。| +|maxPendingMessageCount|受信して、各チャネル インスタンスの InputQueue からまだ削除していないメッセージの最大数を指定する整数。 InputQueue が保留メッセージ数の上限に達すると、メッセージは削除されます。

既定値は 32 です。| +|maxReceivedMessageSize|バインディングで処理できるメッセージの最大サイズを指定する整数。

既定値は 65507 です。| +|maxUnicastRetransmitCount|メッセージを \(最初に送信した後に\) 再送信する最大回数を指定する整数。 メッセージをユニキャスト アドレスに送信し、対応する RelatesTo ヘッダーの付いた応答メッセージを受信すると、再送信は早期に \(再送信の回数が構成された回数に到達する前に\) 終了することがあります。

既定値は 1 です。| +|multicastInterfaceId|マルチホーム コンピューター上でマルチキャスト トラフィックを送受信するときに使用するネットワーク アダプターを一意に識別する文字列。 実行時には、トランスポートは、この属性値を使用してインターフェイスのインデックスを参照します。このインデックスは、その後、`IP_MULTICAST_IF` および `IPV6_MULTICAST_IF` のソケット オプションの設定に使用されます。 マルチキャスト グループに参加するときには、同じインターフェイス インデックスが使用されます \(該当する場合\)。

既定値は `null` です。| +|socketReceiveBufferSize|基になる WinSock ソケットの受信バッファー サイズを指定する整数。

受信チャネルのユーザーは、バインディング上のこの属性を使用して、データ受信時のシステム動作を制御できます。 たとえば、受信 WCF メッセージを最大しきい値で利用するアプリケーションがある場合、この属性値よりも大きい値を使用すると、アプリケーションが処理できるようになるまで待機している間、メッセージを WinSock バッファーにスタックできます。 同じ状況で属性値よりも小さい値を使用すると、メッセージは削除されることになります。この属性は、基になる WinSock `SO_RCVBUF` ソケット オプションを公開します。この属性値には、`maxReceivedMessageSize` のサイズ以上の値を指定する必要があります。 この値を `maxReceivedMessageSize` よりも小さい値に設定すると、ランタイム例外が発生する原因になります。

既定値は 65536 です。| +|timeToLive|マルチキャスト パケットが走査できるネットワーク セグメント ホップの数を指定する整数。 この属性は、`IP_MULTICAST_TTL` および `IP_TTL` ソケット オプションに関連付けられている機能を公開します。

既定値は 1 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/udpannoucementendpoint.md)|固定アナウンス コントラクトと UDP トランスポート バインディングを持つ標準エンドポイント。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/udptransportsettings.md b/docs/framework/configure-apps/file-schema/wcf/udptransportsettings.md new file mode 100644 index 00000000000..c7bcba12652 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/udptransportsettings.md @@ -0,0 +1,73 @@ +--- +title: "<udpTransportSettings> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 842d92e9-6199-4ec5-b2d1-58533054e1f0 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <udpTransportSettings> +この構成要素は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/udpdiscoveryendpoint.md) の UDP トランスポート設定を公開します。 + +## 構文 + +``` + + + + + + + duplicateMessageHistoryLength=”Integer” +                  maxBufferPoolSize=”Integer” + maxMulticastRetransmitCount=”Integer” +                  maxPendingMessageCount=”Integer” +                  maxReceivedMessageSize=”Integer” +                  maxUnicastRetransmitCount=”Integer” +                  multicastInterfaceId=”String” + socketReceiveBufferSize=”Integer” + timeToLive=”Integer” /> + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|duplicateMessageHistoryLength|重複するメッセージを特定するためにトランスポートによって使用されるメッセージ ハッシュの最大数を指定する整数。 重複の検出は、TransportManager レベルで実行されます。 このプロパティを 0 に設定すると、重複の検出は無効になります。

この属性を使用して、システムの管理者や開発者は重複するメッセージの検出アルゴリズムをオフにできます。 これは、独自の重複検出アルゴリズムを実行する場合に望ましいことがあります。

既定値は 4112 です。| +|maxBufferPoolSize|トランスポートによって使用されるバッファー プールの最大サイズを指定する整数。| +|maxMulticastRetransmitCount|メッセージを \(最初に送信した後に\) 再送信する最大回数を指定する整数。

既定値は 2 です。| +|maxPendingMessageCount|受信して、各チャネル インスタンスの InputQueue からまだ削除していないメッセージの最大数を指定する整数。 InputQueue が保留メッセージ数の上限に達すると、メッセージは削除されます。

既定値は 32 です。| +|maxReceivedMessageSize|バインディングで処理できるメッセージの最大サイズを指定する整数。

既定値は 65507 です。| +|maxUnicastRetransmitCount|メッセージを \(最初に送信した後に\) 再送信する最大回数を指定する整数。 メッセージをユニキャスト アドレスに送信し、対応する RelatesTo ヘッダーの付いた応答メッセージを受信すると、再送信は早期に \(再送信の回数が構成された回数に到達する前に\) 終了することがあります。

既定値は 1 です。| +|multicastInterfaceId|マルチホーム コンピューター上でマルチキャスト トラフィックを送受信するときに使用するネットワーク アダプターを一意に識別する文字列。 実行時には、トランスポートは、この属性値を使用してインターフェイスのインデックスを参照します。このインデックスは、その後、`IP_MULTICAST_IF` および `IPV6_MULTICAST_IF` のソケット オプションの設定に使用されます。 マルチキャスト グループに参加するときには、同じインターフェイス インデックスが使用されます \(該当する場合\)。

既定値は `null` です。| +|socketReceiveBufferSize|基になる WinSock ソケットの受信バッファー サイズを指定する整数。

受信チャネルのユーザーは、バインディング上のこの属性を使用して、データ受信時のシステム動作を制御できます。 たとえば、受信 WCF メッセージを最大しきい値で利用するアプリケーションがある場合、この属性値よりも大きい値を使用すると、アプリケーションが処理できるようになるまで待機している間、メッセージを WinSock バッファーにスタックできます。 同じ状況で属性値よりも小さい値を使用すると、メッセージは削除されることになります。この属性は、基になる WinSock `SO_RCVBUF` ソケット オプションを公開します。この属性値には、`maxReceivedMessageSize` のサイズ以上の値を指定する必要があります。 この値を `maxReceivedMessageSize` よりも小さい値に設定すると、ランタイム例外が発生する原因になります。

既定値は 65536 です。| +|timeToLive|マルチキャスト パケットが走査できるネットワーク セグメント ホップの数を指定する整数。 この属性は、`IP_MULTICAST_TTL` および `IP_TTL` ソケット オプションに関連付けられている機能を公開します。

既定値は 1 です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/udpdiscoveryendpoint.md)|固定探索コントラクトと UDP トランスポート バインディングを持つ標準エンドポイント。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/unrecognizedpolicyassertion.md b/docs/framework/configure-apps/file-schema/wcf/unrecognizedpolicyassertion.md new file mode 100644 index 00000000000..f550c69f4dd --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/unrecognizedpolicyassertion.md @@ -0,0 +1,52 @@ +--- +title: "<unrecognizedPolicyAssertion> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 043c3c8f-f263-4ac7-a1af-945d03413f0b +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <unrecognizedPolicyAssertion> +ポリシー アサーションを指定するバインディング要素を表します。 この要素には属性がなく、空のスイッチとして表されます。 + +## 構文 + +``` + + +``` + +## 型 + `Type` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 参照 + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/usemanagedpresentation.md b/docs/framework/configure-apps/file-schema/wcf/usemanagedpresentation.md new file mode 100644 index 00000000000..7825d8595e0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/usemanagedpresentation.md @@ -0,0 +1,54 @@ +--- +title: "<useManagedPresentation> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 17a0dd77-af54-41db-a9d0-4b17ff42878f +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <useManagedPresentation> +WS\-Trust の CardSpace プロファイルをサポートする CardSpace セキュリティ トークン サービスとの通信に使用するバインディング要素。 この要素には属性がなく、空のスイッチとして表されます。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + この要素は、WS\-Trust の CardSpace プロファイルをサポートするという事実をポリシーで明示するために、ID プロバイダーによって使用されます。 このようなポリシー アサーションを公開する ID プロバイダーは、その CardSpace プロファイルに基づくトークンを発行できる必要があります。 + +## 参照 + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/userdefinedtype.md b/docs/framework/configure-apps/file-schema/wcf/userdefinedtype.md new file mode 100644 index 00000000000..5aebe409c96 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/userdefinedtype.md @@ -0,0 +1,103 @@ +--- +title: "<userDefinedType> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0f70ec06-8249-4f0c-9f49-b4df59985fb8 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <userDefinedType> +サービス コントラクトに含まれるユーザー定義型 \(UDT\) を表します。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`name`|判読可能な型名を提供する文字列を含む省略可能な属性。 これは、ランタイムでは使用されませんが、リーダーが型を区別するのに役立ちます。| +|`TypeDefID`|登録されているタイプ ライブラリ内の特定の UDT 型を識別する GUID 文字列。| +|`TypeLibID`|型を定義する登録されているタイプ ライブラリを識別する GUID 文字列。| +|`TypeLibVersion`|型を定義するタイプ ライブラリ バージョンを識別する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|`userDefinedTypes`|`userDefinedType` 要素のコレクション。| + +## 解説 + COM\+ 統合ランタイムは、タイプ ライブラリを調べることによってサービスを作成します。 COM\+ コンポーネントに VARIANT を渡すメソッドが含まれている場合、システムでは、渡される実際の型を実行前に判断することはできません。 したがって、VARIANT としてユーザー定義型 \(UDT\) を渡そうとしても、シリアル化で認識できる型ではないので失敗します。 + + この問題を回避するには、UDT を構成ファイルに追加して、適切なサービス コントラクトで既知の型として含まれるようにすることができます。 このためには、UDT およびコントラクト、つまりそれを使用する元の COM インターフェイスを一意に識別する必要があります。 + + この目的で、2 つの特定の UDT を構成ファイルの \<`userDefinedTypes`\> セクションに追加するコード例を次に示します。 + +``` + + + + + + + + + + + + + + + +``` + + サービスを初期化する場合、統合ランタイムは、指定された型を検索し、指定されたコントラクトで既知の型のコレクションにそれらを追加します。 + +## 参照 + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/comcontracts.md) + [COM\+ アプリケーションとの統合](../../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) + [方法 : COM\+ サービス設定を構成する](../../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/userdefinedtypes.md b/docs/framework/configure-apps/file-schema/wcf/userdefinedtypes.md new file mode 100644 index 00000000000..ba486723f14 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/userdefinedtypes.md @@ -0,0 +1,28 @@ +--- +title: "<userDefinedTypes> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6f69742e-5144-4115-9344-cbe175aab73d +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <userDefinedTypes> +このセクションには、`userDefinedType` 要素のコレクションが含まれています。 + +## 参照 + + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/comcontracts.md) + [COM\+ アプリケーションとの統合](../../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) + [方法 : COM\+ サービス設定を構成する](../../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/userequestheadersformetadataaddress.md b/docs/framework/configure-apps/file-schema/wcf/userequestheadersformetadataaddress.md new file mode 100644 index 00000000000..6bf3764dd78 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/userequestheadersformetadataaddress.md @@ -0,0 +1,52 @@ +--- +title: "<useRequestHeadersForMetadataAddress> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 679f0eae-f353-44d1-b42d-a9e247509774 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <useRequestHeadersForMetadataAddress> +メタデータのアドレス情報を要求メッセージ ヘッダーから取得できるようにします。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/defaultports.md)|クライアント アプリケーションがリッスンする既定の通信エンドポイントの一覧を表示する既定のポートのコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/usernameauthentication.md b/docs/framework/configure-apps/file-schema/wcf/usernameauthentication.md new file mode 100644 index 00000000000..e061c2635f5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/usernameauthentication.md @@ -0,0 +1,69 @@ +--- +title: "<userNameAuthentication> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 24d8b398-770f-418f-ba23-c4325419cfa6 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# <userNameAuthentication> +ユーザー名とパスワードに基づいてサービスの資格情報を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`cacheLogonTokenLifetime`|トークンがキャッシュ内に保持される最大時間を指定する 。 既定値は 00:15:00 です。| +|`cacheLogonTokens`|ログオン トークンがキャッシュされるかどうかを指定するブール値。 既定値は、`false` です。| +|`customUserNamePasswordValidatorType`|使用されるカスタム ユーザー名およびパスワード検証の種類を指定する文字列。 既定値は空の文字列です。| +|`includeWindowsGroups`|セキュリティ コンテキストに Windows グループが含まれるかどうかを指定するブール値。 既定値は、`true` です。

この属性を `true` に設定すると、グループ全体が拡張されるため、パフォーマンスに影響が及びます。 ユーザーが属するグループの一覧を生成する必要がない場合は、このプロパティを `false` に設定します。| +|`maxCacheLogonTokens`|キャッシュするログオン トークンの最大数を指定する整数。 この値は、ゼロより大きい値である必要があります。 既定値は 128 です。| +|`membershipProviderName`|バインディングの `clientCredentialType` 属性が `username` に設定されている場合、ユーザー名は Windows アカウントにマップされます。 関連するパスワード検証機構を提供する 値の名前を含む文字列であるこの属性を使用して動作をオーバーライドできます。| +|`userNamePasswordValidationMode`|ユーザー名とパスワードを検証する方法を指定します。 次の値を指定できます。

- Windows
- MembershipProvider
- Custom

既定は Windows です。 この属性は 型です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)|サービスの認証に使用される資格情報と、クライアントの資格情報検証関連の設定を指定します。| + +## 解説 + サービスで使用されるバインディングがユーザー名とパスワード ベースの認証を使用するように構成されていない場合、この要素の属性は無視されます。 これには、`customUserNamePasswordValidatorType`、`includeWindowsGroups`、`membershipProviderName`、および `userNamePasswordValidationMode` が含まれます。 + + サービスで使用されるバインディングが Windows 認証のユーザー名とパスワードを使用するように構成されていない場合、ログオン トークンのキャッシュに関連する設定は無視されます。 これには、`cacheLogonTokenLifetime`、`cacheLogonTokens`、および `maxCacheLogonTokens`、が含まれます。 + +## 参照 + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/userprincipalname.md b/docs/framework/configure-apps/file-schema/wcf/userprincipalname.md new file mode 100644 index 00000000000..60462341d64 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/userprincipalname.md @@ -0,0 +1,67 @@ +--- +title: "<userPrincipalName> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 68032f69-149e-4613-bae4-18314d4fd294 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <userPrincipalName> +クライアントで認証するサービスのユーザー プリンシパル名 \(UPN\) を指定します。 + + UPN の設定の詳細については、「[サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|value|ユーザー アカウント名 \(ユーザー ログイン名と呼ばれることもある\) と、ユーザー アカウントの検索範囲のドメインを識別するドメイン名です。 これは、Windows ドメインにログオンするための標準的使用方法です。 形式は、someone@example.com です \(電子メールアドレスの場合\)。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)|クライアントで認証するサービスの ID を指定します。| + +## 解説 + この ID を持つエンドポイントに接続する、セキュリティで保護された [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] クライアントは、エンドポイントの SSPI 認証を実行するときに UPN を使用します。 + +## 使用例 + 次の構成コードは、クライアントで認証するサービスの UPN を指定します。 + +``` + + + +``` + +## 参照 + + + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/identity.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/webhttp.md b/docs/framework/configure-apps/file-schema/wcf/webhttp.md new file mode 100644 index 00000000000..66351e10cd4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/webhttp.md @@ -0,0 +1,55 @@ +--- +title: "<webHttp> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1f9d0754-d41e-44ce-a298-e51cb3096c64 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <webHttp> +この要素は、構成によってエンドポイントに を指定します。 この動作を [\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md) 標準バインディングと組み合わせて使用すると、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスの Web プログラミング モデルが有効になります。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|automaticFormatSelectionEnabled|このプロパティが `true` に設定されている場合は、使用する最適な形式が WCF インフラストラクチャで決定されます。 形式の自動選択は、既定で、下位互換性のために無効になっています。 形式の自動選択は、プログラムで有効にすることも、構成ファイルを使用して有効にすることもできます。| +|defaultBodyStyle|返されたメッセージの既定の本文のスタイルを指定します。 [!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)] および [WCF Web HTTP 形式](../../../../../docs/framework/wcf/feature-details/wcf-web-http-formatting.md)。| +|defaultOutgoingResponseFormat|メッセージの既定の送信応答形式を指定します。 [!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)]詳細については、「[WCF Web HTTP 形式](../../../../../docs/framework/wcf/feature-details/wcf-web-http-formatting.md)」を参照してください。| +|faultExceptionEnabled|内部サーバー エラー \(HTTP ステータス コード: 500\) が発生したときに FaultException が生成されるかどうかを指定するフラグを取得または設定します。| +|helpEnabled|ヘルプ ページが有効かどうかを示す値を取得または設定します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|エンドポイントの動作のセットを指定します。| + +## 参照 + + + [AJAX の統合と JSON のサポート](../../../../../docs/framework/wcf/feature-details/ajax-integration-and-json-support.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md new file mode 100644 index 00000000000..ba2f57ea2a1 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md @@ -0,0 +1,108 @@ +--- +title: "<webHttpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 84179d77-825d-44b9-895a-ab08e7aa044d +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <webHttpBinding> +SOAP メッセージに代わって HTTP 要求に応答する [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] Web サービスのエンドポイントを構成するために使用するバインディング要素を定義します。 + +## 構文 + +``` + + + + +writeEncoding="UnicodeFffeTextEncoding/Utf16TextEncoding/Utf8TextEncoding" + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|allowCookies|クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定するブール値です。 既定値は false です。

クッキーを使用する ASMX Web サービスと対話する場合にこのプロパティを使用できます。 この方法で、サーバーから返されるクッキーを、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。| +|bypassProxyOnLocal|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。| +|closeTimeout|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|hostnameComparisonMode|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|maxBufferPoolSize|このバインディングに使用するバッファー プール サイズの上限を指定する整数。 既定は 524,288 バイト \(512 \* 1024\) です。 Windows Communication Foundation \(WCF\) では、多くの部分でバッファーを使用します。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxBufferSize|チャネルからメッセージを受け取るメッセージ バッファーのマネージャーが使用するために割り当てられる最大メモリ量を指定する整数。 既定値は 524,288 \(0x80000\) バイトです。| +|maxReceivedMessageSize|このバインディングで構成されるチャネルで受信可能な最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で指定する正の整数。 この制限を超えるメッセージの送信者はエラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。 **Note:** ASP.NET 互換モードでは、この値を増やすだけでは十分ではありません。 `httpRuntime` の値も増やす必要があります \(「[httpRuntime 要素 \(ASP.NET 設定スキーマ\)](http://msdn.microsoft.com/ja-jp/e9b81350-8aaf-47cc-9843-5f7d0c59f369)」を参照\)。| +|name|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|openTimeout|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|proxyAddress|HTTP プロキシのアドレスを指定する URI。 `useSystemWebProxy` が `true` の場合、この設定を `null` にする必要があります。 既定値は、`null` です。| +|receiveTimeout|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|sendTimeout|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|transferMode|バインディングで構成されたサービスがメッセージ転送のストリーム モードまたはバッファー モード \(あるいは両方のモード\) を使用するかどうかを示す 値。 既定値は、`Buffered` です。| +|useDefaultWebProxy|システムの自動設定 HTTP プロキシを使用するかどうかを指定するブール値。 既定値は、`true` です。| +|writeEncoding|メッセージ テキストに使用される文字エンコーディングを指定します。 以下の値が有効です。

UnicodeFffeTextEncoding: Unicode BigEndian エンコーディング。

Utf16TextEncoding: 16 ビットのエンコーディング。

Utf8TextEncoding: 8 ビットのエンコーディング。

既定値は Utf8TextEncoding です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインディングを使用して構成されるエンドポイントにより処理可能な、POX メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-webhttpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] Web プログラミング モデルを使用すると、開発者は、SOAP ベースのメッセージングに代わって "Plain Old XML" \(POX\) スタイルのメッセージングを使用する HTTP 要求を通じて [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] Web サービスを公開できます。 HTTP 要求を使用してサービスと通信するクライアントに対しては、サービスのエンドポイントを \ がアタッチされた [\](../../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) で構成する必要があります。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の配信および ASP.AJAX 統合のサポートは、Web プログラミング モデル上に構築されます。 このモデルの詳細については、「[WCF Web HTTP プログラミング モデル](../../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md)」を参照してください。 + +## 参照 + + + [WCF Web HTTP プログラミング モデル](../../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/webhttpendpoint.md b/docs/framework/configure-apps/file-schema/wcf/webhttpendpoint.md new file mode 100644 index 00000000000..22fc50ea703 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/webhttpendpoint.md @@ -0,0 +1,62 @@ +--- +title: "<webHttpEndpoint> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ecaaeb6f-ebd0-411d-8b53-92477cd45347 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <webHttpEndpoint> +この構成要素は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttp.md) の動作を自動的に追加する固定の [\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md) バインディングを持つ標準エンドポイントを定義します。 このエンドポイントは、REST サービスを作成する場合に使用します。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|automaticFormatSelectionEnabled|形式の自動選択が有効かどうかを示すブール値。

形式の自動選択が有効な場合、インフラストラクチャが要求メッセージの `Accept` ヘッダーを解析し、最適な応答形式を判断します。 適切な応答形式が `Accept` ヘッダーに指定されていなかった場合は、要求メッセージの `Content-Type` または操作の既定の応答形式がインフラストラクチャによって使用されます。| +|defaultOutgoingResponseFormat|既定の送信応答形式を指定する属性。 この属性は 型です。| +|helpEnabled|エンドポイントに対して HTTP ヘルプ ページが有効になっているかどうかを示すブール値。| +|webEndpointType|エンドポイントの種類を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|1 つ以上のプロパティ \(アドレス、バインディング、コントラクト\) が固定されている、あらかじめ定義されたエンドポイントである標準エンドポイントのコレクション。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/webmessageencoding.md b/docs/framework/configure-apps/file-schema/wcf/webmessageencoding.md new file mode 100644 index 00000000000..abed82f55fe --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/webmessageencoding.md @@ -0,0 +1,90 @@ +--- +title: "<webMessageEncoding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 892ca485-e21a-4a44-8e40-633161ef6796 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <webMessageEncoding> +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] バインディングで使用されるときに、プレーンテキストの XML、JSON \(JavaScript Object Notation\) メッセージ エンコーディング、および "生の" バイナリ コンテンツの読み取りと書き込みができるようにします。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`maxReadPoolSize`|新しいリーダーを割り当てずに同時に読み取ることができるメッセージの数。 プール サイズを大きくすると、システムでは、比較的大きい作業セットで、アクティビティの急増に対する許容度が高まります。 既定値は、内部エンコーダー \(Text、JSON、および raw \(生\)\) ごとに 64 リーダーです。

この数を増やすとメモリの消費量が増えますが、受信メッセージ数の急激な増加にエンコーダーが対処できるようになります。これは、作成済みのリーダーをプールから使用でき、新しいリーダーを作成する必要がないためです。| +|`maxWritePoolSize`|新しいライターを割り当てずに同時に送信できるメッセージの数。 プール サイズを大きくすると、システムでは、比較的大きい作業セットで、アクティビティの急増に対する許容度が高まります。 既定値は、内部エンコーダー \(Text、JSON、および raw \(生\)\) ごとに 64 リーダーです。

この数を増やすとメモリの消費が増えますが、送信メッセージ数の急激な増加にエンコーダーが対処できるようになります。これは、作成済みのライターをプールから使用でき、新しいライターを作成する必要がないためです。| +|`writeEncoding`|バインドでメッセージの発行に使用される文字セット エンコーディングを指定します。 次の値を指定できます。

- UnicodeFffeTextEncoding: Unicode ビッグ エンディアン エンコーディング。
- Utf16TextEncoding: Unicode エンコーディング。
- Utf8TextEncoding: 8 ビットのエンコーディング。

既定値は Utf8TextEncoding です。 この属性は 型です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + エンコーディングは、メッセージをバイト シーケンスに変換するプロセスです。 デコードは、その逆のプロセスです。 これらのプロセスでは、文字エンコーディングの指定が必要です。 + + `webMessageEncoding` 要素は、プレーンテキストの XML と JSON エンコーディング、および "生" のバイナリ データの処理を、一連の内部エンコーダーに代行させることで機能します。 この委任は、複合メッセージ エンコーダーによって実行されます。 + + このバインディング要素と複合エンコーダーは、`webHttpBinding` 要素によって使用される SOAP メッセージを使用しないシナリオでのエンコーディングを制御するために使用されます。 これらのシナリオには、POX \("Plain Old XML"\)、REST \(Representational State Transfer\)、RSS \(Really Simple Syndication\) と Atom 配信、および AJAX \(Asynchronous JavaScript and XML\) が含まれます。 複合メッセージ エンコーダーは SOAP または WS\-Addressing をサポートしません。 + + `writeEncoding` 属性を使用すると、バインディング要素に書き込みの文字エンコーディングを構成できます。 指定された 値は、JSON およびテキスト形式の XML の場合の書き込みの動作を指定します。 読み取りについては、任意の有効なメッセージ エンコーディングとテキスト エンコーディングが認識されます。 + + `maxReadPoolSize` と `maxWritePoolSize` を使用して、割り当てられるリーダーとライターの最大数をそれぞれ設定することもできます。 既定では、64 のリーダーと 16 のライターが割り当てられています。 + + 既定の複雑さの制約は、[\](../Topic/%3CreaderQuotas%3E.md) 要素を使用して設定されます。これにより、メッセージの複雑さを利用してエンドポイント処理リソースを停滞させる、サービス拒否 \(DOS\) 型の攻撃から保護できます。 + +## 使用例 + +``` + +``` + +## 参照 + + + + + [メッセージ エンコーディング](../../../../../docs/framework/configure-apps/file-schema/wcf/message-encoding.md) + [メッセージ エンコーダーを選択する](../../../../../docs/framework/wcf/feature-details/choosing-a-message-encoder.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/webscriptendpoint.md b/docs/framework/configure-apps/file-schema/wcf/webscriptendpoint.md new file mode 100644 index 00000000000..b57f5d1175d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/webscriptendpoint.md @@ -0,0 +1,56 @@ +--- +title: "<webScriptEndpoint> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 85cb5ecf-351b-45f3-aa29-aa2e4b64bcdd +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <webScriptEndpoint> +この構成要素は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/enablewebscript.md) の動作を自動的に追加する固定の [\](../../../../../docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md) バインディングを持つ標準エンドポイントを定義します。 このエンドポイントは、ASP.NET AJAX アプリケーションから呼び出されるサービスを作成する場合に使用します。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|webEndpointType|エンドポイントの種類を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|1 つ以上のプロパティ \(アドレス、バインディング、コントラクト\) が固定されている、あらかじめ定義されたエンドポイントである標準エンドポイントのコレクション。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/websocketsettings.md b/docs/framework/configure-apps/file-schema/wcf/websocketsettings.md new file mode 100644 index 00000000000..36d74b6bc67 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/websocketsettings.md @@ -0,0 +1,100 @@ +--- +title: "<webSocketSettings> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bbf97e02-8dd1-4922-acac-3cd33397b249 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <webSocketSettings> +Web ソケット設定を指定するために使用される構成要素。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|createNotificationOnConnection|通知を接続時に送信するかどうかを指定します。| +|disablePayloadMasking|Web ソケットのマスクが無効であるかどうかを指定します。| +|keepAliveInterval|接続維持の間隔を指定します。| +|maxPendingConnections|サービスでのディスパッチを待機している接続の最大数を指定します。| +|receiveBufferSize|受信バッファーのサイズを指定します。| +|sendBufferSize|送信バッファーのサイズを指定します。| +|subProtocol|Web ソケットのサブプロトコルを指定します。| +|transportUsage|Web ソケットを使用するタイミングを指定します。| + +## transportUsage 属性 + +|値|説明| +|-------|--------| +|WhenDuplex|コントラクトが双方向の場合に、Web ソケット プロトコルを使用します。| +|Always|コントラクトにかかわらず、常にWeb ソケット プロトコルを使用します。| +|Never|Web ソケット プロトコルを使用しません。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|\|NetHttpBinding を指定します。| + +## 使用例 + \ 要素を使用する方法を次の例に示します。 + +```xml + + + + + + +``` + +## 参照 + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/windows-of-clientcredentials-element.md b/docs/framework/configure-apps/file-schema/wcf/windows-of-clientcredentials-element.md new file mode 100644 index 00000000000..d47f2b46291 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/windows-of-clientcredentials-element.md @@ -0,0 +1,61 @@ +--- +title: "<clientCredentials> 要素の <windows> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 793e41c2-31ea-4159-abbc-2123bf097233 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# <clientCredentials> 要素の <windows> +クライアントを表すために使用される Windows 資格情報の設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`allowedImpersonationLevel`|クライアントがサーバーと通信する偽装設定を設定します。 クライアントが選択する偽装モードは、サーバーでは適用されません。 以下の値が有効です。

- Identification: サーバーはクライアントの ID および権限を取得できますが、クライアントを偽装することはできません。
- Impersonation: サーバーは、ローカル システム上にあるクライアントのセキュリティ コンテキストを偽装できます。
- Delegation: サーバーは、リモート システム上にあるクライアントのセキュリティ コンテキストを偽装できます。
- Anonymous: サーバーは、クライアントを偽装したり、識別したりすることができません。
- None: 偽装レベルが割り当てられていません。

既定値は Identification です。 この属性は 型です。| +|`allowNtlm`|このプロパティを `true` に設定すると、Kerberos 認証を利用できない場合、NTLM 認証にダウングレードできます。

このプロパティを `false` に設定すると、NTLM が使用されている場合、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] はベスト エフォートで例外をスローします。 ただし、このプロパティを `false` に設定しても、ネットワーク経由で NTLM 資格情報が送信されなくなるとは限りません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)|サービスに対するクライアントの認証に使用される資格情報を指定します。| + +## 参照 + + + + + + + + [クライアントのセキュリティ保護](../../../../../docs/framework/wcf/securing-clients.md) + [証明書の使用](../../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [サービスおよびクライアントのセキュリティ保護](../../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/windowsauthentication-of-servicecredentials.md b/docs/framework/configure-apps/file-schema/wcf/windowsauthentication-of-servicecredentials.md new file mode 100644 index 00000000000..1acdf94dbc2 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/windowsauthentication-of-servicecredentials.md @@ -0,0 +1,57 @@ +--- +title: "<serviceCredentials> の <windowsAuthentication> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e0709473-0997-4de3-8f49-783527309a48 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# <serviceCredentials> の <windowsAuthentication> +Windows サービス資格情報の設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`includeWindowsGroups`|セキュリティ コンテキストに Windows グループが含まれるかどうかを指定する省略可能なブール属性。 既定値は、`true` です。

この属性を `true` に設定すると、グループ全体が拡張されるため、パフォーマンスに影響が及びます。 ユーザーが属するグループの一覧を生成する必要がない場合は、この属性を `false` に設定します。| +|`allowAnonymousLogons`|認証されていない匿名の呼び出し元を許可するかどうかを指定する省略可能なブール属性。 既定値は、`false` です。

バインディングの `clientCredentialType` 属性が `Windows` に設定されている場合、匿名の呼び出し元は許可されません。 これは、ドメインまたはワークグループの認証済み呼び出し元だけがシステムへのアクセスを許可されていることを示します。 この動作は、この属性を使用してオーバーライドできます。

この設定を使用するときは十分に注意してください。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)|サービスの認証に使用される資格情報と、クライアントの資格情報検証関連の設定を指定します。| + +## 解説 + 匿名の Windows ユーザーのアクセスを許可するかどうかを指定するには、この要素を使用して、`allowAnonymousLogons` 属性を設定します。 また、`includeWindowsGroups` 属性を設定すると、ユーザーが属するグループの情報を AuthorizationContext に含めるかどうかも指定できます。 この属性が `true` \(既定値\) に設定されている場合、サービスはクライアントが属している Windows グループを特定できます。 + +## 参照 + + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/windowsstreamsecurity.md b/docs/framework/configure-apps/file-schema/wcf/windowsstreamsecurity.md new file mode 100644 index 00000000000..6fa0d094e43 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/windowsstreamsecurity.md @@ -0,0 +1,57 @@ +--- +title: "<windowsStreamSecurity> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 926bea29-90c7-4a26-9cf0-fb4aa44f6f70 +caps.latest.revision: 10 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 10 +--- +# <windowsStreamSecurity> +カスタム バインディングの Windows ストリーム セキュリティ設定を指定します。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|protectionLevel|メッセージ レベルのセキュリティを定義します。 メッセージに署名すると、転送中のメッセージが第三者によって改ざんされるリスクを軽減します。 暗号化により、転送中にデータレベルのプライバシーが提供されます。 以下の値が有効です。

- None: 保護されません。
- Sign: メッセージは署名されます。
- EncryptAndSign: メッセージは署名および暗号化されます。

既定値は EncryptAndSign です。

この属性は 型です。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/misc/binding.md)|カスタム バインドのすべてのバインド機能を定義します。| + +## 解説 + TCP などのストリーム指向プロトコルおよび名前付きパイプを使用するトランスポートは、ストリーム ベースのトランスポート アップグレードをサポートします。 特に、WCF にはセキュリティ アップグレードが用意されています。 このトランスポート セキュリティの構成は、この構成要素および [\](../../../../../docs/framework/configure-apps/file-schema/wcf/sslstreamsecurity.md) によってカプセル化され、構成してカスタム バインディングに追加できます。 + +## 参照 + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [バインディングの拡張](../../../../../docs/framework/wcf/extending/extending-bindings.md) + [カスタム バインディング](../../../../../docs/framework/wcf/extending/custom-bindings.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/workflow-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/workflow-of-wcf.md new file mode 100644 index 00000000000..80dfec39a45 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/workflow-of-wcf.md @@ -0,0 +1,101 @@ +--- +title: "WCF の <workflow> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c0443eba-d3b4-4fae-886e-9878daf77691 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <workflow> +ランタイムから直接出力される追跡レコードをリッスンし、追跡レコードの構成方法に従って処理を行う追跡参加要素を構成します。 これには、特定の出力 \(ファイル、コンソール、ETW など\) への書き込み、レコードの処理や集計、またはその他の必要な組み合わせが含まれます。 + + ワークフロー追跡と追跡参加要素の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」および「[追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|要素|説明| +|--------|--------| +|name|追跡参加要素の名前を指定する文字列。| +|profileName|追跡参加要素が定期受信した追跡レコードを定義する、追跡プロファイルの名前を指定する文字列。| +|型|追跡参加要素の型を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md)|追跡参加要素の一覧| + +## 解説 + 追跡参加要素は、ワークフローから生成される追跡データを取得し、それを別のメディアに保存するために使用します。 同様に、追跡レコードの後処理はすべて、追跡参加要素内でも実行できます。 + + 複数の追跡参加要素が追跡イベントを同時に使用することができます。 各追跡参加要素は、それぞれ別の追跡プロファイルと関連付けることができます。 + + 追跡レコードを ETW セッションに書き込む、標準の追跡参加要素が用意されています。 参加要素は、追跡固有の動作を構成ファイルに追加することによって、ワークフロー サービスで構成されます。 ETW 追跡参加要素を有効にすると、追跡レコードをイベント ビューアーで表示できます。 これで要件が満たされない場合は、カスタムの追跡参加要素を作成することもできます。 + +## 使用例 + 次の構成例は、Web.config ファイルで構成されている標準の ETW 追跡参加要素を示します。 + + ETW 追跡参加要素が追跡レコードを ETW に書き込むために使用するプロバイダー ID は、`` セクションで定義されます。 追跡参加要素には、その要素が定期受信した追跡レコードを指定するためのプロファイルが関連付けられています。 これは、`` 要素の `profileName` 属性で定義されます。 これらが定義されると、追跡参加要素は `` サービス動作に追加されます。 これにより、選択した追跡参加要素がワークフロー インスタンスの拡張機能に追加され、追跡レコードの受信が開始されます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/workflowcontrolendpoint.md b/docs/framework/configure-apps/file-schema/wcf/workflowcontrolendpoint.md new file mode 100644 index 00000000000..a8dfc0f575c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/workflowcontrolendpoint.md @@ -0,0 +1,55 @@ +--- +title: "<workflowControlEndpoint> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6c89e76c-643b-4b6a-9b25-628f753d7027 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <workflowControlEndpoint> +この構成要素は、ワークフロー インスタンスの実行の制御 \(作成、実行、保留、終了など\) に使用する標準エンドポイントを定義します。 + +## 構文 + +``` + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|標準エンドポイントの構成名を指定する文字列。 この名前は、サービス エンドポイントの `endpointConfiguration` 属性で使用され、標準エンドポイントと構成を関連付けます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/standardendpoints.md)|1 つ以上のプロパティ \(アドレス、バインディング、コントラクト\) が固定されている、あらかじめ定義されたエンドポイントである標準エンドポイントのコレクション。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/workflowinstancequeries-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/workflowinstancequeries-of-wcf.md new file mode 100644 index 00000000000..38c91f5421d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/workflowinstancequeries-of-wcf.md @@ -0,0 +1,94 @@ +--- +title: "WCF の <workflowInstanceQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b0852f77-16e4-4d55-8eb7-a19feb0e8fc4 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <workflowInstanceQueries> +開始したイベントや完了したイベントなど、ワークフロー インスタンスのライフサイクルの変化を追跡する構成要素のコレクションを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequery.md)|ワークフロー インスタンスのライフサイクルの変化を追跡するために使用されるクエリ。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|`activityDefinitionId` プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 解説 + は、次の オブジェクトの定期受信に使用されます。 + +- + +- + +- + +- + +- + +## 使用例 + 次の構成は、このクエリを使用して、`Started` インスタンス状態のワークフロー インスタンス レベルの追跡レコードを定期受信します。 + +``` + + + + + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.WorkflowInstanceQuery](assetId:///System.Activities.Tracking.WorkflowInstanceQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/workflowinstancequery-of-wcf.md b/docs/framework/configure-apps/file-schema/wcf/workflowinstancequery-of-wcf.md new file mode 100644 index 00000000000..26de68cfb1f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/workflowinstancequery-of-wcf.md @@ -0,0 +1,94 @@ +--- +title: "WCF の <workflowInstanceQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 35c73f9d-474e-42eb-874d-ddc04b1987f3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF の <workflowInstanceQuery> +開始したイベントや完了したイベントなど、ワークフロー インスタンスのライフサイクルの変化を追跡するクエリを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)|追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態のコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequeries.md)|開始したイベントや完了したイベントなど、ワークフロー インスタンスのライフサイクルの変化を追跡する構成要素のコレクションを表します。| + +## 解説 + は、次の オブジェクトの定期受信に使用されます。 + +- + +- + +- + +- + +- + +## 使用例 + 次の構成は、このクエリを使用して、`Started` インスタンス状態のワークフロー インスタンス レベルの追跡レコードを定期受信します。 + +``` + + + + + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.WorkflowInstanceQuery](assetId:///System.Activities.Tracking.WorkflowInstanceQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/workflowruntime.md b/docs/framework/configure-apps/file-schema/wcf/workflowruntime.md new file mode 100644 index 00000000000..1c6024d80a4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/workflowruntime.md @@ -0,0 +1,91 @@ +--- +title: "<workflowRuntime> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 304c70fa-78d1-4d0f-b89f-0ca23d734c6f +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <workflowRuntime> +ワークフロー ベースの [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスをホストする のインスタンスの設定を指定します。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|cachedInstanceExpiration|ワークフロー インスタンスが強制的にアンロードまたは中止される前に、アイドル状態でメモリに残ることができる最大期間を指定する、省略可能な 値。 unloadOnIdle を実行する `PersistenceService` が workflowruntime に設定されている場合、この属性は無視されます。| +|enablePerformanceCounters|パフォーマンス カウンターが有効であるかどうかを指定する省略可能なブール値。 パフォーマンス カウンターは、ワークフローに関連したさまざまな統計情報を提供します。ただしそのために、ワークフロー ランタイム エンジンが起動してワークフロー インスタンスが実行されている間は、パフォーマンスが低下します。 既定値は `true` です。| +|name|ワークフロー ランタイム エンジンの名前を含む文字列。 名前は出力で使用され、このランタイムを、システムで実行されている他のランタイム \(パフォーマンス カウンターなど\) と区別するために使用されます。

既定値は空の文字列です。| +|validateOnCreate|WorkflowServiceHost を開いたときにワークフロー定義の検証を行うかどうかを指定する省略可能なブール値。 この属性が `true` に設定されているときは、`WorkflowServiceHost.Open` が呼び出されるたびにワークフローの検証が実行されます。 検証エラーが見つかった場合は、 エラーがスローされます。

このプロパティが `false` に設定されている場合、ワークフロー定義の検証は行われません。

このプロパティの既定値は `true` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|commonParameters|サービスによって使用される共通パラメーターのコレクション。 このコレクションには通常、永続性サービスによって共有されるデータベース接続文字列が格納されます。| +|サービス| エンジンに追加されるサービスのコレクション。 要素は、 型です。 コレクションで指定されたサービスはワークフロー ランタイム エンジンによって初期化され、適切な コンストラクターが呼び出されるとワークフロー ランタイム エンジンのサービスに追加されます。 したがって、コレクションで指定されたサービスは、そのコンストラクターのシグネチャに関して一定の規則に従う必要があります。 詳細については、「」を参照してください。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)|動作の要素を指定します。| + +## 解説 + Windows Workflow Foundation ホスト アプリケーションの オブジェクトの動作を制御する構成ファイルの使い方の詳細については、「[Workflow Configuration Files](http://msdn.microsoft.com/ja-jp/ada4bb90-6c9d-4f3d-a9d0-b559bb0f9909)」を参照してください。 + +## 使用例 + +``` + + + + + + + + + + + + + +``` + +## 参照 + + + + [Workflow Configuration Files](http://msdn.microsoft.com/ja-jp/ada4bb90-6c9d-4f3d-a9d0-b559bb0f9909) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/ws2007federationhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/ws2007federationhttpbinding.md new file mode 100644 index 00000000000..ac304bc4dcf --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/ws2007federationhttpbinding.md @@ -0,0 +1,145 @@ +--- +title: "<ws2007FederationHttpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9af4ec79-cdef-457e-9dca-09d5eb821594 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <ws2007FederationHttpBinding> +[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)から派生し、フェデレーション セキュリティをサポートする、セキュリティで保護された相互運用可能なバインディングです。 + +## 構文 + +``` + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`bypassProxyOnLocal`|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示す値。 既定値は、`false` です。| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`hostnameComparisonMode`|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|`maxBufferPoolSize`|このバインドに使用するバッファー プールの最大サイズ。 既定は 524,288 バイト \(512 \* 1024\) です。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の多くの部分でバッファーが使用されます。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|`maxReceivedMessageSize`|チャネルで受信可能な最大メッセージ サイズ \(ヘッダーを含む\) が、このバインドを使用してバイト単位で設定されました。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|`messageEncoding`|メッセージのエンコードに使用されるエンコーダーを定義します。 以下の値が有効です。

- Text: テキスト メッセージのエンコーダーを使用します。
- Mtom: Message Transmission Organization Mechanism 1.0 \(MTOM\) エンコーダーを使用します。

既定値は Text です。

この属性は 型です。| +|`name`|バインドの構成名。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`privactyNoticeAt`|プライバシーに関する声明の場所を示す URI。| +|`privactyNoticeVersion`|現在のプライバシーに関する声明のバージョン。| +|`proxyAddress`|HTTP プロキシのアドレスを指定する URI。 `useDefaultWebProxy` が `true` の場合、この設定を `null` にする必要があります。 既定値は、`null` です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`textEncoding`|バインディングでメッセージの発行に使用される文字セット エンコーディングを設定します。 以下の値が有効です。

- BigEndianUnicode: Unicode ビッグ エンディアン エンコーディング。
- Unicode: 16 ビット エンコーディング。
- UTF8: 8 ビット エンコーディング。

既定値は UTF8 です。 この属性は 型です。| +|`transactionFlow`|バインドが WS\-Transactions のフローをサポートするかどうかを指定する値。 既定値は、`false` です。| +|`useDefaultWebProxy`|システムの自動設定 HTTP プロキシを使用するかどうかを示す値。 この属性が `true` の場合、プロキシ アドレスを `null` \(つまり、設定しない\) にする必要があります。 既定値は、`true` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wsfederationhttpbinding.md)|メッセージのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[reliableSession](http://msdn.microsoft.com/ja-jp/9c93818a-7dfa-43d5-b3a1-1aafccf3a00b)|チャネルのエンドポイント間に信頼できるセッションを確立するかどうかを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + フェデレーションは、複数の企業または信頼するドメインで認証と承認用の ID を共有する機能です。 フェデレーションは、WS\-Trust プロトコルを使用して、ID 形式を、ある信頼するドメインから別の信頼するドメインにマップします。 フェデレーション HTTP バインドは、SOAP セキュリティと混合モード セキュリティをサポートしますが、トランスポート セキュリティの単独使用はサポートしません。 このバインディングで構成されたサービスは、HTTP トランスポートを使用する必要があります。 [!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)] [\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md). + +## 使用例 + +``` + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/ws2007httpbinding.md b/docs/framework/configure-apps/file-schema/wcf/ws2007httpbinding.md new file mode 100644 index 00000000000..f4136407185 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/ws2007httpbinding.md @@ -0,0 +1,153 @@ +--- +title: "<ws2007HttpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8586ecc9-bdaa-44d6-8d4d-7038e4ea1741 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# <ws2007HttpBinding> +、および の各バインディング要素の適切なバージョンをサポートする相互運用可能なバインディングを定義します。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`allowCookies`|クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定する値です。 既定値は、`false` です。

クッキーを使用する ASMX \(ASP.NET Web サービス\) と対話する場合に、このプロパティを使用できます。 これにより、サーバーから返されるクッキーが、このサービスに対するそれ以降のすべてのクライアント要求に自動的にコピーされます。| +|`bypassProxyOnLocal`|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示す値。 既定値は、`false` です。| +|`closeTimeout`|クローズ操作が完了するまでの期間を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`hostnameComparisonMode`|URI \(Uniform Resource Identifier\) の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|`maxBufferPoolSize`|このバインドに使用するバッファー プールの最大サイズ。 既定値は 524,288 バイト \(512 × 1,024\) です。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の多くの部分でバッファーが使用されます。 使用するたびに毎回バッファーを作成および破棄すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄によるオーバーヘッドを回避できます。| +|`maxReceivedMessageSize`|このバインディングで構成されたチャネルで受信可能な、ヘッダーを含む最大メッセージ サイズ \(バイト単位\) です。 この制限を超える場合、メッセージの送信者は SOAP エラーを受け取ります。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|`messageEncoding`|メッセージのエンコードに使用されるエンコーダーを定義します。 以下の値が有効です。

- `Text`: テキスト メッセージ エンコーダーを使用します。
- `Mtom`: MTOM \(Message Transmission Organization Mechanism\) 1.0 エンコーダーを使用します。

既定値は、`Text` です。

この属性は 型です。| +|`name`|バインドの構成名。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|`openTimeout`|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`proxyAddress`|HTTP プロキシのアドレスを指定する URI。 `useSystemWebProxy` が `true` の場合、この設定を `null` にする必要があります。 既定値は、`null` です。| +|`receiveTimeout`|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`sendTimeout`|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|`textEncoding`|バインディングでメッセージの発行に使用する文字セット エンコーディングを指定します。 以下の値が有効です。

- `UnicodeFffeTextEncoding`: Unicode ビッグ エンディアン エンコーディング。
- `Utf16TextEncoding`: 16 ビット エンコーディング。
- `Utf8TextEncoding`: 8 ビット エンコーディング。

既定値は、`Utf8TextEncoding` です。

この属性は 型です。| +|`transactionFlow`|バインドが WS\-Transactions のフローをサポートするかどうかを指定する値。 既定値は、`false` です。| +|`useDefaultWebProxy`|システムの自動設定 HTTP プロキシを使用するかどうかを示す値です。 既定値は、`true` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインディングを使用して設定されるエンドポイントで処理できる、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[reliableSession](http://msdn.microsoft.com/ja-jp/9c93818a-7dfa-43d5-b3a1-1aafccf3a00b)|チャネルのエンドポイント間に信頼できるセッションを確立するかどうかを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + `WS2007HttpBinding` は、`WSHttpBinding` と同様のシステム標準のバインディングを追加しますが、ReliableSession、Security、および TransactionFlow の各プロトコルの OASIS \(Organization for the Advancement of Structured Information Standards\) 標準バージョンを使用します。 このバインドを使用する場合、オブジェクト モデルも既定の設定も変更する必要はありません。 + +## 使用例 + +``` + + + + + + + + + + + + + + + +``` + +## 参照 + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/wsdlimporter.md b/docs/framework/configure-apps/file-schema/wcf/wsdlimporter.md new file mode 100644 index 00000000000..02b642dd461 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/wsdlimporter.md @@ -0,0 +1,61 @@ +--- +title: "<wsdlImporter> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 986b2165-8430-4dba-b1b8-00396841bb96 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# <wsdlImporter> +WS\-Policy が添付された Web サービス記述言語 \(WSDL\) 1.1 メタデータをインポートするすべての WSDL インポーターを指定します。 + +## 構文 + +``` + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|`type`|この要素の型です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/wsdlimporters.md)|WS\-Policy が添付された Web サービス記述言語 \(WSDL\) 1.1 メタデータをインポートするすべての WSDL インポーターを指定します。| + +## 解説 + WSDL インポーターは、メタデータのインポートに加えて、コントラクトおよびエンドポイント情報を表すさまざまなクラスにその情報を変換するために使用されます。 コントラクトおよびエンドポイントの情報やプロパティを選択的にインポートできます。これらは、任意のインポート エラーを公開し、インポートおよび変換プロセスに関連する型情報を受け取ります。 また、任意のポリシー ドキュメント、WSDL ドキュメント、WSDL 拡張、および XML スキーマ ドキュメントにアクセスするためのバインディング情報およびプロパティのインポートもサポートします。 + +## 参照 + + + + + + [WCF クライアントの構成](../../../../../docs/framework/wcf/feature-details/client-configuration.md) + [クライアント](../../../../../docs/framework/wcf/feature-details/clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/wsdlimporters.md b/docs/framework/configure-apps/file-schema/wcf/wsdlimporters.md new file mode 100644 index 00000000000..c93d692d7cb --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/wsdlimporters.md @@ -0,0 +1,28 @@ +--- +title: "<wsdlImporters> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 270c7f93-eab7-47b6-8b94-ac3f5b7f17e4 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <wsdlImporters> +この構成要素は、WS\-Policy が添付された Web サービス記述言語 \(WSDL\) 1.1 メタデータをインポートするすべての WSDL インポートを指定します。 各子要素は、メタデータをインポートし、その情報をコントラクトおよびエンドポイント情報を表すさまざまなクラスに変換する方法を指定する \<`wsdlImporter`\> です。 コントラクトおよびエンドポイントの情報やプロパティを選択的にインポートできます。これらは、任意のインポート エラーを公開し、インポートおよび変換プロセスに関連する型情報を受け取ります。 また、任意のポリシー ドキュメント、WSDL ドキュメント、WSDL 拡張、および XML スキーマ ドキュメントにアクセスするためのバインディング情報およびプロパティのインポートもサポートします。 + +## 参照 + + + + + [WCF クライアントの構成](../../../../../docs/framework/wcf/feature-details/client-configuration.md) + [クライアント](../../../../../docs/framework/wcf/feature-details/clients.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md new file mode 100644 index 00000000000..139db0970ce --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md @@ -0,0 +1,150 @@ +--- +title: "<wsDualHttpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "wsDualHttpBinding 要素" +ms.assetid: fd8ac4e2-5641-473b-9115-73f14ab1c065 +caps.latest.revision: 25 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 25 +--- +# <wsDualHttpBinding> +双方向サービス コントラクト、または SOAP 中継局を介しての通信に適した、セキュリティで保護されて信頼できる相互操作可能なバインディングを定義します。 + +## 構文 + +``` + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|bypassProxyOnLocal|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。| +|clientBaseAddress|サービスからの応答メッセージをクライアントがリッスンするベース アドレスを設定する URI。 指定されている場合は、このアドレス \(およびチャネルごとの GUID\) がリッスンに使用されます。 値が指定されていない場合は、クライアント ベース アドレスは、トランスポートに固有の方法で生成されます。 既定値は、`null` です。| +|closeTimeout|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|hostnameComparisonMode|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|maxBufferPoolSize|このバインディングに使用するバッファー プール サイズの上限を指定する整数。 既定は 524,288 バイト \(512 \* 1024\) です。 Windows Communication Foundation \(WCF\) では、多くの部分でバッファーを使用します。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxReceivedMessageSize|このバインディングで構成されるチャネルで受信可能な最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で指定する正の整数。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|messageEncoding|メッセージのエンコードに使用されるエンコーダーを定義します。 以下の値が有効です。

- Text: テキスト メッセージのエンコーダーを使用します。
- Mtom: Message Transmission Organization Mechanism 1.0 \(MTOM\) エンコーダーを使用します。
- 既定値は Text です。

この属性は 型です。| +|name|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|openTimeout|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|proxyAddress|HTTP プロキシのアドレスを指定する URI。 `useDefaultWebProxy` が `true` の場合、この設定を `null` にする必要があります。 既定値は、`null` です。| +|receiveTimeout|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|sendTimeout|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|textEncoding|バインディングでメッセージの発行に使用される文字セット エンコーディングを設定します。 以下の値が有効です。

- BigEndianUnicode: Unicode BigEndian エンコーディング。
- Unicode: 16 ビット エンコーディング。
- UTF8: 8 ビット エンコーディング。

既定値は UTF8 です。 この属性は 型です。| +|transactionFlow|バインディングが WS\-Transactions のフローをサポートするかどうかを指定するブール値です。 既定値は、`false` です。| +|useDefaultWebProxy|システムの自動設定 HTTP プロキシを使用するかどうかを示すブール値。 この属性が `true` の場合、プロキシ アドレスを `null` \(つまり、設定しない\) にする必要があります。 既定値は、`true` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wsdualhttpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[reliableSession](http://msdn.microsoft.com/ja-jp/9c93818a-7dfa-43d5-b3a1-1aafccf3a00b)|チャネルのエンドポイント間に信頼できるセッションを確立するかどうかを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + `WSDualHttpBinding` は、`WSHttpBinding` と同じ Web サービス プロトコルをサポートしますが、双方向コントラクトでの使用を想定しています。 `WSDualHttpBinding` は SOAP セキュリティのみをサポートし、信頼できるメッセージングを要求します。 このバインディングでは、クライアントが、サービスのコールバック エンドポイントを提供するパブリック URI を保持していることが必要です。 これは `clientBaseAddress` 属性によって提供されます。 二重バインディングでは、クライアントの IP アドレスをサービスに公開します。 クライアントは、セキュリティを使用して信頼するサービスに対して接続のみを可能にする必要があります。 + + このバインディングは、1 つ以上の SOAP 中継局を通じて信頼できる方法で通信するために使用できます。 + + 既定では、このバインディングは、信頼のための WS\-ReliableMessaging、メッセージ セキュリティと認証用 WS\-Security、メッセージ配信用 HTTP、および Text\/XML メッセージ エンコーディングを持つランタイム スタックを生成します。 + +## 使用例 + +``` + + + + + + + + + + + + + + +``` + +## 参照 + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md new file mode 100644 index 00000000000..f73d4b380ac --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md @@ -0,0 +1,208 @@ +--- +title: "<wsFederationHttpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "wsFederationBinding 要素" +ms.assetid: 9c3312b4-2137-4e71-bf3f-de1cf8e9be79 +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# <wsFederationHttpBinding> +WS\-Federation をサポートするバインディングを定義します。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|bypassProxyOnLocal|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。| +|closeTimeout|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|hostnameComparisonMode|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|maxBufferPoolSize|このバインディングに使用するバッファー プール サイズの上限を指定する整数。 既定は 524,288 バイト \(512 \* 1024\) です。 Windows Communication Foundation \(WCF\) では、多くの部分でバッファーを使用します。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxReceivedMessageSize|このバインディングで構成されるチャネルで受信可能な最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で指定する正の整数。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|messageEncoding|メッセージのエンコードに使用されるエンコーダーを定義します。 以下の値が有効です。

- Text: テキスト メッセージのエンコーダーを使用します。
- Mtom: Message Transmission Organization Mechanism 1.0 \(MTOM\) エンコーダーを使用します。

既定値は Text です。

この属性は 型です。| +|name|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|openTimeout|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|privactyNoticeAt|プライバシーに関する声明の場所を示す URI を指定する文字列。| +|privactyNoticeVersion|現在のプライバシーに関する声明のバージョンを指定する整数。| +|proxyAddress|HTTP プロキシのアドレスを指定する URI。 `useDefaultWebProxy` が `true` の場合、この設定を `null` にする必要があります。 既定値は、`null` です。| +|receiveTimeout|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:10:00 です。| +|sendTimeout|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|textEncoding|バインディングでメッセージの発行に使用される文字セット エンコーディングを設定します。 以下の値が有効です。

- BigEndianUnicode: Unicode BigEndian エンコーディング。
- Unicode: 16 ビット エンコーディング。
- UTF8: 8 ビット エンコーディング。

既定値は UTF8 です。 この属性は 型です。| +|transactionFlow|バインディングが WS\-Transactions のフローをサポートするかどうかを指定するブール値です。 既定値は、`false` です。| +|useDefaultWebProxy|システムの自動設定 HTTP プロキシを使用するかどうかを示すブール値。 この属性が `true` の場合、プロキシ アドレスを `null` \(つまり、設定しない\) にする必要があります。 既定値は、`true` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wsfederationhttpbinding.md)|メッセージのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[reliableSession](http://msdn.microsoft.com/ja-jp/9c93818a-7dfa-43d5-b3a1-1aafccf3a00b)|チャネルのエンドポイント間に信頼できるセッションを確立するかどうかを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + フェデレーションは、複数のシステム間で認証と承認用の ID を共有する機能です。 これらの ID は、ユーザーまたはコンピューターを参照できます。 フェデレーション HTTP は、SOAP セキュリティと混合モード セキュリティをサポートしますが、トランスポート セキュリティの単独使用はサポートしません。 このバインドは、WS\-Federation プロトコルに対して [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サポートを提供します。 このバインディングで構成されたサービスは、HTTP トランスポートを使用する必要があります。 + + バインドは、バインド要素のスタックで構成されます。 + + `wsFederationHttpBinding` のバインディング要素のスタックは、`wsHttpBinding` + + に含まれるスタックと同じです \([\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wsfederationhttpbinding.md) が既定値の に設定されている場合\)。 + + `wsFederationHttpBinding` は、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/message-element-of-wsfederationhttpbinding.md) のメッセージ セキュリティ設定の詳細を制御します。 いったんバインディングが作成されると、そのバインディングで使用されるセキュリティは変更できなくなるため、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wsfederationhttpbinding.md) 要素では get アクセスしか提供されないことに注意してください。 + + `wsFederationHttpBinding` は、プライバシーに関する声明の場所を示す URI の設定と取得を行う privactyNoticeAt 属性も提供します。 + + ポリシーをセキュリティで保護することが、フェデレーション シナリオでは特に重要です。 ポリシーを悪意のあるユーザーから保護するには、HTTPS などのセキュリティ形式の使用をお勧めします。 + + フェデレーション シナリオでこのバインディングを使用する場合は、発行済み \(SAML\) トークンの暗号化に使用するキー、トークンに入れるクレームの種類などの重要情報がサービス ポリシーに含まれる可能性があります。 これが改ざんされると、攻撃者は発行済みトークンのキーを発見してさらに改ざんを行ったり、情報を暴露したりなどの悪意ある行動を取る可能性があります。 このような行為を防ぐには、\(HTTPS などを使用して\) ポリシーをセキュリティで保護し、サービスから安全に取得する必要があります。 + + このバインディングの詳細については、「[方法 : WSFederationHttpBinding を作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md)」を参照してください。 + +## 使用例 + +``` + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [方法 : WSFederationHttpBinding を作成する](../../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md b/docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md new file mode 100644 index 00000000000..d8d28c08352 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md @@ -0,0 +1,156 @@ +--- +title: "<wsHttpBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "wsHttpBinding 要素" +ms.assetid: 0eee8ced-ad68-427d-b95a-97260e98deed +caps.latest.revision: 30 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 30 +--- +# <wsHttpBinding> +双方向サービス コントラクト以外に適した、安全で信頼のおける相互操作可能なバインディングを定義します。 バインディングは、信頼のための WS\-ReliableMessaging、およびメッセージのセキュリティと認証のための WS\-Security を実装します。 トランスポートは HTTP、メッセージ エンコーディングは Text\/XML エンコーディングです。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|allowCookies|クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定するブール値です。 既定値は false です。

クッキーを使用する ASMX Web サービスと対話する場合にこのプロパティを使用できます。 この方法で、サーバーから返されるクッキーを、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。| +|bypassProxyOnLocal|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。| +|closeTimeout|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|hostnameComparisonMode|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|maxBufferPoolSize|このバインディングに使用するバッファー プール サイズの上限を指定する整数。 既定は 524,288 バイト \(512 \* 1024\) です。 Windows Communication Foundation \(WCF\) では、多くの部分でバッファーを使用します。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxReceivedMessageSize|このバインディングで構成されるチャネルで受信可能な最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で指定する正の整数。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|messageEncoding|メッセージのエンコードに使用されるエンコーダーを定義します。 以下の値が有効です。

- Text: テキスト メッセージのエンコーダーを使用します。
- Mtom: Message Transmission Organization Mechanism 1.0 \(MTOM\) エンコーダーを使用します。
- 既定値は Text です。

この属性は 型です。| +|name|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|openTimeout|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|proxyAddress|HTTP プロキシのアドレスを指定する URI。 `useSystemWebProxy` が `true` の場合、この設定を `null` にする必要があります。 既定値は、`null` です。| +|receiveTimeout|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|sendTimeout|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|textEncoding|バインドでメッセージの発行に使用される文字セット エンコーディングを指定します。 以下の値が有効です。

- UnicodeFffeTextEncoding: Unicode BigEndian エンコーディング。
- Utf16TextEncoding: 16 ビットのエンコーディング。
- Utf8TextEncoding: 8 ビットのエンコーディング。

既定値は Utf8TextEncoding です。

この属性は 型です。| +|transactionFlow|バインディングが WS\-Transactions のフローをサポートするかどうかを指定するブール値です。 既定値は、`false` です。| +|useDefaultWebProxy|システムの自動設定 HTTP プロキシを使用するかどうかを指定するブール値。 既定値は、`true` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[reliableSession](http://msdn.microsoft.com/ja-jp/9c93818a-7dfa-43d5-b3a1-1aafccf3a00b)|チャネルのエンドポイント間に信頼できるセッションを確立するかどうかを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 解説 + `WSHttpBinding` は `BasicHttpBinding` に似ていますが、より多くの Web サービス機能を提供します。 BasicHttpBinding と同じように HTTP トランスポートを使用し、メッセージ セキュリティを提供します。さらに、トランザクション、信頼できるメッセージング、および WS\-Addressing も提供します。これらは、既定で有効化になっているか、または単一の制御設定で使用できるようになります。 + +## 使用例 + +``` + + + + + + + + + + + + + + + +``` + +## 参照 + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/wshttpcontextbinding.md b/docs/framework/configure-apps/file-schema/wcf/wshttpcontextbinding.md new file mode 100644 index 00000000000..7da3e2a225f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/wshttpcontextbinding.md @@ -0,0 +1,117 @@ +--- +title: "<wsHttpContextBinding> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1e40b5c9-0df2-4d66-afc5-a99d0e4ae7a4 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# <wsHttpContextBinding> +保護レベルの署名を要求する のコンテキストを提供します。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|allowCookies|クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定するブール値です。 既定値は、`false` です。

`allowCookies` が `true` に設定されると、contextChannel は httpCookies をコンテキストの交換モードとして使用します。 この属性が `false` に設定されると、コンテキストは、SOAP ヘッダーとして交換されます。

既定値は `false` です。

クッキーを使用する ASMX Web サービスと対話する場合にこのプロパティを使用できます。 この方法で、サーバーから返されるクッキーを、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。| +|bypassProxyOnLocal|ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定値は、`false` です。| +|closeTimeout|クローズ操作が完了するまでの期間を指定する 値。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|contextProtectionLevel|コンテキスト情報の反映に使用される SOAP ヘッダーの必要な保護レベルを指定する、有効な 値。 既定値は `Sign` です。| +|hostnameComparisonMode|URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は で、一致しているホスト名を無視します。| +|maxBufferPoolSize|このバインディングに使用するバッファー プール サイズの上限を指定する整数。 既定は 524,288 バイト \(512 \* 1024\) です。 Windows Communication Foundation \(WCF\) では、多くの部分でバッファーを使用します。 使用するたびに毎回バッファーを作成および破壊すると負荷が高くなります。バッファーのガベージ コレクションも同様です。 バッファー プールを使用すると、バッファーをプールから取得して使用し、作業が終わったらプールに戻すことができます。 これで、バッファーの作成と破棄のオーバーヘッドを回避できます。| +|maxReceivedMessageSize|このバインディングで構成されるチャネルで受信可能な最大メッセージ サイズ \(ヘッダーを含む\) をバイト単位で指定する正の整数。 この制限を超えるメッセージの送信者が、SOAP エラーを受信します。 メッセージは受信者によって破棄され、トレース ログにこのイベントのエントリが作成されます。 既定値は 65536 です。| +|messageEncoding|メッセージのエンコードに使用されるエンコーダーを定義します。 以下の値が有効です。

- Text: テキスト メッセージのエンコーダーを使用します。
- Mtom: Message Transmission Organization Mechanism 1.0 \(MTOM\) エンコーダーを使用します。
- 既定値は Text です。

この属性は 型です。| +|name|バインディングの構成名を格納する文字列です。 この値は、バインディングの ID として使用されるため、一意にする必要があります。 [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)] 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成、および名前のないバインディングと動作の詳細については、「[簡略化された構成](../../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。| +|openTimeout|実行中の操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|proxyAddress|HTTP プロキシのアドレスを指定する URI。 `useSystemWebProxy` が `true` の場合、この設定を `null` にする必要があります。 既定値は、`null` です。| +|receiveTimeout|受信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|sendTimeout|送信操作が完了するまでの時間間隔を指定する 値です。 この値は必ず 以上である必要があります。 既定値は 00:01:00 です。| +|textEncoding|バインドでメッセージの発行に使用される文字セット エンコーディングを指定します。 以下の値が有効です。

- UnicodeFffeTextEncoding: Unicode BigEndian エンコーディング。
- Utf16TextEncoding: 16 ビットのエンコーディング。
- Utf8TextEncoding: 8 ビットのエンコーディング。

既定値は Utf8TextEncoding です。

この属性は 型です。| +|transactionFlow|バインディングが WS\-Transactions のフローをサポートするかどうかを指定するブール値です。 既定値は、`false` です。| +|useDefaultWebProxy|システムの自動設定 HTTP プロキシを使用するかどうかを指定するブール値。 既定値は、`true` です。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md)|バインディングのセキュリティ設定を定義します。 この要素は 型です。| +|[\](../Topic/%3CreaderQuotas%3E.md)|このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は 型です。| +|[reliableSession](http://msdn.microsoft.com/ja-jp/9c93818a-7dfa-43d5-b3a1-1aafccf3a00b)|チャネルのエンドポイント間に信頼できるセッションを確立するかどうかを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。| + +## 参照 + + + + + [バインディング](../../../../../docs/framework/wcf/bindings.md) + [システムが提供するバインディングの構成](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + [\](../../../../../docs/framework/misc/binding.md) + [\](../../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/wcf/xmlelement.md b/docs/framework/configure-apps/file-schema/wcf/xmlelement.md new file mode 100644 index 00000000000..2b076035c1d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/wcf/xmlelement.md @@ -0,0 +1,56 @@ +--- +title: "<xmlElement> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 395205c2-d8c0-4a5e-90f3-7ce3c085fccd +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <xmlElement> +トークンの要求時にセキュリティ トークン サービスへのメッセージ本文で送信される XML 要素を指定します。 + +## 構文 + +``` + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|xmlElement|トークンの要求時にセキュリティ トークン サービスへのメッセージ本文で送信される XML 要素を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/tokenrequestparameters.md)|トークン要求パラメーターのコレクション。 各パラメーターは、XML 要素です。| + +## 参照 + + + [サービス ID と認証](../../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [フェデレーションと発行済みトークン](../../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [バインディング](../../../../../docs/framework/wcf/bindings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/web/TOC.md b/docs/framework/configure-apps/file-schema/web/TOC.md new file mode 100644 index 00000000000..f0c428fe6b8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/web/TOC.md @@ -0,0 +1,3 @@ +# [Web 設定スキーマ](index.md) +# [ 要素 (Web 設定)](applicationpool-element-web-settings.md) +# [ 要素 (Web 設定)](system-web-element-web-settings.md) diff --git a/docs/framework/configure-apps/file-schema/web/applicationpool-element-web-settings.md b/docs/framework/configure-apps/file-schema/web/applicationpool-element-web-settings.md new file mode 100644 index 00000000000..4477bb914fa --- /dev/null +++ b/docs/framework/configure-apps/file-schema/web/applicationpool-element-web-settings.md @@ -0,0 +1,106 @@ +--- +title: "<applicationPool> 要素 (Web 設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "applicationPool 要素" +ms.assetid: 46d1baaa-e343-4639-b70d-2a43a9f62b2a +caps.latest.revision: 12 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 12 +--- +# <applicationPool> 要素 (Web 設定) +ASP.NET アプリケーションが [!INCLUDE[iisver](../../../../../includes/iisver-md.md)] 以降のバージョンの統合モードで実行されている場合に、プロセス全体の動作を管理するために ASP.NET で使用される構成設定を指定します。 + +> [!IMPORTANT] +> この要素と、この要素でサポートされる機能は、ASP.NET アプリケーションが [!INCLUDE[iisver](../../../../../includes/iisver-md.md)] 以降のバージョンでホストされる場合にのみ機能します。 + +## 構文 + +``` + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|Attribute|説明| +|---------------|--------| +|`maxConcurrentRequestsPerCPU`|ASP.NET で許可する CPU あたりの同時要求数を指定します。| +|`maxConcurrentThreadsPerCPU`|各 CPU のアプリケーション プールで実行できる同時スレッド数を指定します。 これは、要求を処理するために CPU あたりで使用できるマネージ スレッドの数を制限できるため、ASP.NET の同時実行を制御する手段の選択肢となります。 既定の設定は 0 で、この場合、ASP.NET は CPU あたりの作成可能なスレッド数を制限しません。ただし、作成可能なスレッド数には、共通言語ランタイム \(CLR: Common Language Runtime\) のスレッド プールによる制限も適用されます。| +|`requestQueueLimit`|単一のプロセスで ASP.NET のキューに配置できる要求の最大数を指定します。 複数の ASP.NET アプリケーションが 1 つのアプリケーション プールで実行される場合、そのアプリケーション プール内のアプリケーションに対する要求の累積数は、この設定によって制限されます。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/web/system-web-element-web-settings.md)|ASP.NET とホスト アプリケーションの対話方法に関する情報が含まれます。| + +## 解説 + [!INCLUDE[iisver](../../../../../includes/iisver-md.md)] 以降を統合モードで実行する場合は、この要素の組み合わせによって、アプリケーションが IIS アプリケーション プールでホストされているときに ASP.NET でどのようにスレッドを管理し、どのように要求をキューに配置するかを構成できます。 IIS 6 を実行する場合や、[!INCLUDE[iisver](../../../../../includes/iisver-md.md)] をクラシック モードまたは ISAPI モードで実行する場合は、これらの設定は無視されます。 + + `applicationPool` の設定は、.NET Framework の特定のバージョンで実行されるすべてのアプリケーション プールに適用されます。 この設定は aspnet.config ファイルに含まれています。 .NET Framework の Version 2.0 と 4 には、このファイルの個別のバージョンがあります \(.NET Framework Version 3.0 および 3.5 では、Version 2.0 と aspnet.config ファイルが共有されます\)。 + +> [!IMPORTANT] +> [!INCLUDE[win7](../../../../../includes/win7-md.md)] で [!INCLUDE[iisver](../../../../../includes/iisver-md.md)] を実行する場合は、アプリケーション プールごとに別々の aspnet.config ファイルを構成できます。 これにより、アプリケーション プールごとにスレッドのパフォーマンスを調整できます。 + + `maxConcurrentRequestsPerCPU` 設定については、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] での既定の設定は "5000" で、実際に CPU あたりの要求数が 5000 以上にならない限り、ASP.NET によって制御される要求調整は実質的に無効になります。 代わりに、CLR スレッド プールの制限によって、CPU あたりの同時実行が自動的に管理されます。 非同期要求処理を広く利用するアプリケーションや、長時間実行される多数の要求がネットワーク I\/O でブロックされるアプリケーションには、[!INCLUDE[net_v40_short](../../../../../includes/net-v40-short-md.md)] の既定の緩やかな制限が適しています。 `maxConcurrentRequestsPerCPU` を 0 に設定すると、ASP.NET の要求の処理にマネージ スレッドは使用されなくなります。 アプリケーションが IIS アプリケーション プールで実行される場合、要求は IIS I\/O スレッドにとどまるので、同時実行は IIS スレッドの設定によって調整されます。 + + `requestQueueLimit` の設定は、ASP.NET アプリケーションの Web.config ファイルで設定される [processModel](http://msdn.microsoft.com/ja-jp/4b8fe20e-74c8-4566-b72c-ce5f83c8e32d) 要素の `requestQueueLimit` 属性と同じように機能します。 ただし、aspnet.config ファイルにある `requestQueueLimit` の設定は、Web.config ファイルにある `requestQueueLimit` の設定をオーバーライドします。 つまり、両方の属性を設定した場合 \(既定で両方とも設定されています\)、aspnet.config ファイルにある `requestQueueLimit` の設定が優先されます。 + +## 使用例 + 以下の例では、次の環境において aspnet.config ファイルで ASP.NET プロセス全体の動作を構成する方法を示します。 + +- アプリケーションが [!INCLUDE[iisver](../../../../../includes/iisver-md.md)] アプリケーション プールでホストされている。 + +- [!INCLUDE[iisver](../../../../../includes/iisver-md.md)] が統合モードで実行されている。 + +- アプリケーションが [!INCLUDE[net_v35SP1_short](../../../../../includes/net-v35sp1-short-md.md)] 以降を使用している。 + + この例で指定している値は既定値です。 + +``` + + + + + +``` + +## 要素情報 + +||| +|-|-| +|名前空間|| +|スキーマ名|| +|検証ファイル|| +|空も使用できる|| + +## 参照 + [\ 要素 \(Web 設定\)](../../../../../docs/framework/configure-apps/file-schema/web/system-web-element-web-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/web/index.md b/docs/framework/configure-apps/file-schema/web/index.md new file mode 100644 index 00000000000..9e2394df164 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/web/index.md @@ -0,0 +1,52 @@ +--- +title: "Web 設定スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "ASP.NET 構成システム, Web 設定スキーマ" + - "構成ファイル [ASP.NET]" + - "構成スキーマ [.NET Framework], [Web 設定]" + - "スキーマ Web 設定" + - "[Web 設定], スキーマ [ASP.NET]" + - "Web.config 構成ファイル [ASP.NET]" +ms.assetid: ae1ac356-267d-4753-8d7a-7a04eb45a9be +caps.latest.revision: 6 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 6 +--- +# Web 設定スキーマ +Web 設定では、ASP.NET ホスト層で管理されるプロセス全体の動作に適用する、CPU および実行レベルの ASP.NET 設定を指定します。 これらの設定は、ASP.NET アプリケーションの Web.config ファイルで指定されるアプリケーション ドメイン型の設定とは異なります。 + + Web 設定は、.NET Framework の各バージョンのインストール フォルダーにある Aspnet.config ファイルに含まれています。 たとえば、[!INCLUDE[dnprdnext](../../../../../includes/dnprdnext-md.md)] の Aspnet.config ファイルは、次のフォルダーにあります。 + + `C:\Windows\Microsoft.NET\Framework\v2.0.50727\` + + Web 設定は、machine.config ファイル、ルートの Web.config ファイル、アプリケーション レベルの Web.config ファイルなどのその他の構成ファイルでは使用されません。 + + [\ 要素](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md) + + [\ 要素 \(Web 設定\)](../../../../../docs/framework/configure-apps/file-schema/web/system-web-element-web-settings.md) + + [\ 要素 \(Web 設定\)](../../../../../docs/framework/configure-apps/file-schema/web/applicationpool-element-web-settings.md) + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/web/system-web-element-web-settings.md)|ASP.NET ホスト層で使用される情報が含まれています。| +|[\](../../../../../docs/framework/configure-apps/file-schema/web/applicationpool-element-web-settings.md)|ASP.NET ホスト層で管理されるプロセス全体の動作に適用する、CPU および実行レベルの ASP.NET 設定を指定します。| + +## 参照 + [構成ファイル スキーマ](../../../../../docs/framework/configure-apps/file-schema/index.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/web/system-web-element-web-settings.md b/docs/framework/configure-apps/file-schema/web/system-web-element-web-settings.md new file mode 100644 index 00000000000..a006ba3a081 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/web/system-web-element-web-settings.md @@ -0,0 +1,85 @@ +--- +title: "<system.web> 要素 (Web 設定) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - " 要素" + - "ASP.NET 構成システム" + - "構成ファイル [ASP.NET]" + - "system.Web 要素" + - "Web.config 構成ファイル [ASP.NET]" +ms.assetid: 24c4cf4f-ad32-42b2-b040-8e4549e2855e +caps.latest.revision: 9 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 9 +--- +# <system.web> 要素 (Web 設定) +プロセス全体の動作を ASP.NET ホスト層でどのように管理するかについての情報を含みます。 + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/web/applicationpool-element-web-settings.md)|aspnet.config ファイル内で、IIS アプリケーション プールの構成設定を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/configuration-element.md)|共通言語ランタイムおよび [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] アプリケーションで使用されるすべての構成ファイルのルート要素を指定します。| + +## 解説 + `system.web` 要素とその `applicationPool` 子要素は、[!INCLUDE[net_v35SP1_short](../../../../../includes/net-v35sp1-short-md.md)] で [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] に追加されました。 [!INCLUDE[iisver](../../../../../includes/iisver-md.md)] 以降を統合モードで実行する場合、この要素を組み合わせて使用すると、ASP.NET が IIS アプリケーション プールでホストされているときに、ASP.NET でどのようにスレッドを管理し、どのように要求をキューに配置するかを構成できます。 [!INCLUDE[iisver](../../../../../includes/iisver-md.md)] 以降をクラシック モードまたは ISAPI モードで実行する場合、これらの設定は無視されます。 + +## 使用例 + 次の例は、ASP.NET が IIS アプリケーション プールでホストされているときの ASP.NET プロセス全体の動作を aspnet.config ファイルで構成する方法を示しています。 この例では、IIS が統合モードで実行されていること、およびアプリケーションが [!INCLUDE[net_v35SP1_short](../../../../../includes/net-v35sp1-short-md.md)] 以降のバージョンを使用していることが前提になります。 この動作は、[!INCLUDE[net_v35SP1_short](../../../../../includes/net-v35sp1-short-md.md)] より前のバージョンの [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] では発生しません。 この例で指定している値は既定値です。 + +``` + + + + + +``` + +## 要素情報 + +||| +|-|-| +|名前空間|| +|スキーマ名|| +|検証ファイル|| +|空も使用できる|| + +## 参照 + [\ 要素 \(Web 設定\)](../../../../../docs/framework/configure-apps/file-schema/web/applicationpool-element-web-settings.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/TOC.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/TOC.md new file mode 100644 index 00000000000..d49e6d2f463 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/TOC.md @@ -0,0 +1,37 @@ +# [](system-identitymodel-services.md) +# [](issuertokenresolver.md) +# [](securitytokenhandlers.md) +# [](trustedissuers.md) +# [](sessionsecuritytokencache.md) +# [](claimtype.md) +# [](wsfederation.md) +# [](claimtyperequired.md) +# [](cookiehandler.md) +# [](x509securitytokenhandlerrequirement.md) +# [](tokenreplaydetection.md) +# [](customcookiehandler.md) +# [](claimsauthorizationmanager.md) +# [](federationconfiguration.md) +# [](certificatevalidator.md) +# [](audienceuris.md) +# [](chunkedcookiehandler.md) +# [](usernamesecuritytokenhandlerrequirement.md) +# [](servicetokenresolver.md) +# [](claimsauthenticationmanager.md) +# [](certificatevalidation.md) +# [](roleclaimtype.md) +# [](issuernameregistry.md) +# [](clear.md) +# [WIF 構成スキーマ](index.md) +# [](sessiontokenrequirement.md) +# [](add.md) +# [<キャッシュ>](caches.md) +# [](servicecertificate.md) +# [<削除>](remove.md) +# [](certificatereference.md) +# [](securitytokenhandlerconfiguration.md) +# [](system-identitymodel.md) +# [](identityconfiguration.md) +# [](nameclaimtype.md) +# [](tokenreplaycache.md) +# [](samlsecuritytokenrequirement.md) diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/add.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/add.md new file mode 100644 index 00000000000..f82bc967357 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/add.md @@ -0,0 +1,87 @@ +--- +title: "<add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4712a888-f154-4395-8887-ef14a88a6497 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# <add> +指定されたセキュリティ トークン ハンドラーをトークン ハンドラー コレクションに追加します。 + +## 構文 + +``` + +   +     +       +         +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|追加すると、トークン ハンドラーの CLR 型名。 指定する方法の詳細については、 `type`属性は、 [Custom Type References](http://msdn.microsoft.com/ja-jp/7286d2e3-c63d-49fd-abdc-ce2705f22c24)。| + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/samlsecuritytokenrequirement.md)|構成を提供、 クラスは、 クラス、または派生クラスのこれらのクラスのいずれか。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/sessiontokenrequirement.md)|構成を提供、 クラスまたは派生クラス。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/usernamesecuritytokenhandlerrequirement.md)|構成を提供、 クラスまたは派生クラス。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/x509securitytokenhandlerrequirement.md)|オプションの構成を提供、 クラスまたは派生クラス。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlers.md)|エンドポイントには登録されているセキュリティ トークン ハンドラーのコレクションを指定します。| + +## 解説 + ``要素は、トークン ハンドラーの設定を指定します。 単一の子要素を取ることができます。 これかどうか、ハンドラー クラスを通じて参照に依存している、 `type`属性の``要素はこの機能のサポートを提供します。 この機能を提供するトークン ハンドラー クラスを受け取るコンス トラクターを公開する必要があります、 オブジェクト。 + +``` +public class CustomTokenHandler : Microsoft.IdentityModel.Tokens.SecurityTokenHandler +{ + public CustomTokenHandler( XmlElement customConfig ) + { + } +} +``` + + この機能が組み込まれているセキュリティ トークン ハンドラー クラスのいくつかを。 These classes are , , , , and . + +> [!IMPORTANT] +> トークン ハンドラーのコレクションは、指定された型の 1 つのハンドラーを含めることができます。 派生するハンドラーを追加する場合は、たとえば、つまり、 クラス、コレクションには、まず削除する必要があります、 、です、コレクションから既定で存在します。 使用できます、 [\<削除\>](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/remove.md)要素は、コレクションの使用を 1 つのハンドラーを削除するには、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/clear.md)要素は、コレクションからすべてのイベント ハンドラーを削除します。 + + ハンドラーで指定した設定をオーバーライドで、トークン ハンドラーのコレクションで指定された同等の設定に[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)要素とは、サービス レベルで指定されている、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)要素。 + +## 使用例 + 次の XML の使用を示しています、 ``と``カスタム セッション トークン ハンドラーが既定のセッション トークン ハンドラーを置換する要素。 XML から取得されます、 `ClaimsAwareWebFarm`サンプル。 + +``` + + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/audienceuris.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/audienceuris.md new file mode 100644 index 00000000000..0a9044a8994 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/audienceuris.md @@ -0,0 +1,77 @@ +--- +title: "<audienceUris> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7a3d8515-d756-4afe-a22d-07cbe2217ee3 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# <audienceUris> +依存元の相手 \(RP\) の許容可能な識別子は Uri のセットを指定します。 トークンが許可されている対象ユーザーの Uri のいずれかのスコープでない限り許可されません。 + +## 構文 + +``` + +   +     +       +         +           +           +           +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|mode| 、対象者の制限が、受信したトークンに適用かどうかを示す値。 使用可能な値は、「は、」"Never"、および"BearerKeyOnly"です。 既定値は「常に」です。 省略可能です。| + +### 子要素 + +|要素|Description| +|--------|-----------------| +|``|指定した URI を追加、 `value`属性、audienceUris コレクションに。 `value` 属性は必須です。 URI は、大文字小文字を区別です。| +|``|AudienceUris のコレクションを消去します。 すべての識別子は、コレクションから削除されます。| +|``|指定した URI を削除、 `value` audienceUris コレクションから属性をします。 `value` 属性は必須です。 URI は、大文字小文字を区別です。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)|構成コレクションのセキュリティ トークン ハンドラーを提供します。| + +## 解説 + 既定では、コレクションは空です。 使用``、 ``、および``要素は、コレクションを変更します。 オブジェクトの値を構成するのには、対象の URI のコレクションでは、URI の制限で視聴者を許可されて使用オブジェクト。 + + ``要素で表される、 クラス。 コレクションに追加する個々 の URI が表され、 クラス。 + +> [!NOTE] +> 使用、 ``要素の子要素として、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)要素は推奨されていませんが、旧バージョンとの互換性のためのサポートもします。 設定で、 ``要素無効もに、 ``要素。 + +## 使用例 + 次の XML は、アプリケーションを適切な対象ユーザー Uri を構成する方法を示しています。 次の使用例は、単一の URI を設定します。 この URI のスコープのトークンを受け入れられます、他のユーザーはすべて拒否されます。 + +``` + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/caches.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/caches.md new file mode 100644 index 00000000000..72c3a32b7aa --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/caches.md @@ -0,0 +1,67 @@ +--- +title: "<キャッシュ> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4651091b-3a20-40d8-b293-4408c0710143 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# <キャッシュ> +セッション トークンをトークンのリプレイ検出を使用して、キャッシュを登録します。 + +## 構文 + +``` + +   +     +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/sessionsecuritytokencache.md)|セッション トークンをキャッシュ サービスとセキュリティ トークン ハンドラーのコレクションを登録します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaycache.md)|サービスまたはセキュリティ トークン ハンドラーのコレクションを再生のトークン キャッシュを登録します。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)|サービス ・ レベルの id の設定を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)|構成コレクションのセキュリティ トークン ハンドラーを提供します。| + +## 解説 + A ``要素は、サービス ・ レベルで指定できます、 ``要素またはセキュリティ トークン ハンドラー コレクションのレベルの下に、 ``要素。 サービスで指定されているコレクションをトークン ハンドラーの設定をオーバーライドします。 + + ``要素で表される、 クラス。 構成済みキャッシュによって表される、 クラス。 + +## 使用例 + 次の XML は、セッションのセキュリティ トークンを保持して、カスタム キャッシュの構成を示しています \(\)。 構成から取得されます、 `ClaimsAwareWebFarm`サンプル。 + +``` + + + + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatereference.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatereference.md new file mode 100644 index 00000000000..ae38248f958 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatereference.md @@ -0,0 +1,62 @@ +--- +title: "<certificateReference> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2ac8bc14-e9f1-48fb-b662-f5991558fbe4 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# <certificateReference> +検索して、証明書ストアの X.509 証明書を検証するために使用する設定を指定します。 + +## 構文 + +``` + +   +     +       +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|storeName|X.509 証明書ストアの名前。 既定値は「私」。 省略可能です。| +|storeLocation|A 、X.509 証明書ストアの場所を指定する値。 既定値は、"LocalMachine"です。 省略可能です。| +|x509FindType| 、実行する検索の種類を指定する値。 既定値は"FindBySubjectDistinguishedName"です。 省略可能です。| +|findValue|X.509 証明書ストアで検索する値。 省略可能です。| +|isChainIncluded|証明書チェーンを使用して検証を実行するかどうかを指定します。 既定値は"true;"です。 検証は、証明書チェーンを使用して実行されます。 省略可能です。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/servicecertificate.md)|暗号化し、トークンを復号化するために使用する証明書を構成します。| + +## 解説 + ``要素を探し、証明書ストアの X.509 証明書を検証するために使用する設定を指定します。 子要素として指定されると、 ``要素は、場所と検証の設定を暗号化し、トークンを復号化に使用される X.509 証明書の指定します。 ``要素で表される、 クラス。 \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidation.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidation.md new file mode 100644 index 00000000000..1dfa28fea0d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidation.md @@ -0,0 +1,68 @@ +--- +title: "<certificateValidation> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6c54c704-b55e-4631-88ff-4d4a5621554c +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# <certificateValidation> +証明書を検証するためにトークン ハンドラーが使用する設定を制御します。 これらの設定は固有のハンドラーが独自の検証コントロールで構成されている場合はオーバーライドされます。 + +## 構文 + +``` + +   +     +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|certificateValidationMode|X.509 証明書に使用する有効性認証モードを指定する 値。 既定値は 「PeerOrChainTrust」です。 カスタム検証を指定するには、このカスタム属性を 「」に設定し、要素を使用して検証コントロールを [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidator.md) 指定します。 省略可能です。| +|revocationMode|X.509 証明書に使用する失効モードを指定する 値。 既定値は 「オンライン」です。 省略可能です。| +|trustedStoreLocation|X.509 証明書ストアを指定する 値。 既定値は 「LocalMachine」です。 省略可能です。| + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidator.md)|証明書検証するためのカスタム型を指定します。 この型は、要素の `certificateValidationMode` のカスタム [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidation.md) 属性を 「」に設定されている場合のみ使用できます。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)|サービス レベルの ID の設定を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)|セキュリティ トークン ハンドラーの収集の構成を提供します。| + +## 解説 + `` の要素は `` 要素の下のまたは `` 要素の下のセキュリティ トークン ハンドラー コレクション レベル サービス レベルで指定できます。 サービスで指定されたトークン ハンドラー コレクションの設定によってオーバーライドされます。 一部のトークン ハンドラーは構成で証明書検証設定を指定できるようにします。 個別のトークン ハンドラーの設定はサービス レベルでセキュリティ トークン ハンドラー コレクションで指定されたオーバーライドします。 + +## 使用例 + +``` + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidator.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidator.md new file mode 100644 index 00000000000..0c162f25291 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidator.md @@ -0,0 +1,60 @@ +--- +title: "<certificateValidator> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 86161897-c20f-4ad8-9d7f-050c247251bf +caps.latest.revision: 6 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# <certificateValidator> +カスタムの種類の証明書の検証を指定します。 この種類は、場合にのみ使用されます、 `certificateValidationMode`属性の[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidation.md)要素が「カスタム」に設定します。 + +## 構文 + +``` + +   +     +       +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|派生するカスタム型を指定します、 クラス。 設定、 `certificateValidationMode`属性、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidation.md)要素には、\[カスタム\] この型を使用します。 指定する方法の詳細については、 `type`属性は、 [Custom Type References](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_CustomTypeReferences)。 省略可能です。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidation.md)|証明書を検証するトークン ハンドラーを使用する設定を制御します。| + +## 使用例 + +``` + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/chunkedcookiehandler.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/chunkedcookiehandler.md new file mode 100644 index 00000000000..7e2d9d7462e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/chunkedcookiehandler.md @@ -0,0 +1,67 @@ +--- +title: "<chunkedCookieHandler> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7220de45-1d14-4aec-a29e-4a2ea8ac861f +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# <chunkedCookieHandler> +構成、 。 この要素のみが表示される場合、 `mode`属性の`` "Default"または「チャンク」です。 + +## 構文 + +``` + +   +     +       +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|chunkSize|文字数を 1 つの HTTP cookie を HTTP cookie データの最大サイズです。 チャンクのサイズを調整する場合は慎重に行ってください。 Web ブラウザー cookie およびドメインごとに許可される数のサイズに異なる制限をあります。 これらの制限は、元の Netscape 仕様規定をされて: 300 cookie の合計、4096 バイト \(cookie 値だけでなくすべてのメタデータを含む\)、cookie ヘッダーごとおよびドメインごとの 20 の cookie。 既定値は 2000 です。 必ず指定します。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/cookiehandler.md)|構成、 は、 \(SAM\) を使用して cookie を読み書きします。| + +## 解説 + 指定すると、 設定、 `mode`属性の``要素には、"Default"または「チャンク」などで cookie の読み書きに cookie のハンドラーを使用して、チャンク サイズを指定することができます、 ``子要素および設定、 `chunkSize`属性。 場合は、 ``要素が存在しない、既定のチャンク サイズは 2000 バイトが使用されます。 この要素にすることはできませんが指定されて、 `mode`属性が「カスタム」に設定します。 + + ``要素で表される、 クラス。 + +## 使用例 + 次の例では、cookie を 3000 バイトのチャンク単位で書き込むチャンク cookie ハンドラーを構成します。 + +``` + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimsauthenticationmanager.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimsauthenticationmanager.md new file mode 100644 index 00000000000..2e4f86c3931 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimsauthenticationmanager.md @@ -0,0 +1,64 @@ +--- +title: "<claimsAuthenticationManager> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6d30a450-6d13-4671-81a8-77e0204500c5 +caps.latest.revision: 6 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# <claimsAuthenticationManager> +入力受取所の要求認証マネージャーを登録します。 + +## 構文 + +``` + +   +     +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type| のクラスから派生したカスタム型を指定します。 `type` の属性を指定する方法の詳細については、 " " を参照してください。 [Custom Type References](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_CustomTypeReferencess)| + +### 子要素 + `type` の属性がない場合、または `type` の属性参照 のクラス、 `` の要素には子要素がありません; ただし、 から派生したクラスは、子構成要素を定義できます。 + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)|サービス レベルの ID の設定を指定します。| + +## 解説 + のクラスにより提供される既定の動作は、入力がエコーされます。 `type` の属性が指定されていない場合、または `type` の属性が のクラスを指定する場合は、 `` の要素には子要素がありません。 カスタム動作を実行するに クラスから派生した型を登録するに `type` の属性を指定できます。 派生クラスは `` 要素の子要素を使用してこれらの要素を処理する メソッドのオーバーライドにより構成をサポートできます。 子要素に定義されたスキーマは、クラスのデザイナーがあります。 + + `` の要素設定 のプロパティ。 + +## 使用例 + +``` + + + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimsauthorizationmanager.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimsauthorizationmanager.md new file mode 100644 index 00000000000..22392351a6a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimsauthorizationmanager.md @@ -0,0 +1,87 @@ +--- +title: "<claimsAuthorizationManager> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9354eee3-f692-4ad6-8427-3169686b8bcc +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# <claimsAuthorizationManager> +要求の承認マネージャーは、入力方向の要求を登録します。 + +## 構文 + +``` + +   +     +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|派生するカスタム型はクラス。 指定する方法の詳細については、 `type`属性は、 [Custom Type References](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_CustomTypeReferences)。| + +### 子要素 + ある場合は、ない`type`属性、または、 `type`属性への参照、 クラスは、 ``要素に子要素。 ただし、クラスを派生してから子の構成要素を定義することができます。 + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)|サービス ・ レベルの id の設定を指定します。| + +## 解説 + によって提供される既定の動作はクラスは、常に入力方向の要求を承認します。 ない場合`type`属性が指定されて場合、 `type`属性を指定します、 クラス、 ``要素には子要素があります。 指定することができます、 `type`から派生する属性は、タイプを登録するのには、 カスタム動作を実装するクラス。 派生クラスは、構成要素の子要素をサポートできる、 ``要素をオーバーライドすることで、 これらの要素を処理するメソッド。 子要素を定義するスキーマ クラスのデザイナーです。 + +> [!IMPORTANT] +> 使用すると、 や、 クラスをコードで参照されている識別情報構成でクレーム ベースのアクセス制御を提供するために、 ``要素は、要求承認マネージャー、承認決定を行うために使用するポリシーを構成します。 パッシブ Web シナリオ、たとえば、Windows 通信基盤 \(WCF\) アプリケーションまたは Web ベースでないアプリケーションではない場合も同様です。 アプリケーションがパッシブの Web アプリケーションでない場合、 ``要素とその子ポリシー要素が存在する場合\) 参照の id の構成をされるだけの設定を適用します。 これ以外の設定は、すべて無視されます。 詳細については、[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md) 要素を参照してください。 + + この要素を設定する、 プロパティ。 + +## 使用例 + 次の XML 要求の承認の構成マネージャー リソースとアクションのペアの構成のポリシーの各リソースに対してアクションを実行するのには、リクエスターを持つ必要があります要求の論理的な組み合わせを指定しますを実装を示しています。 このポリシーを使用できるクレームの承認マネージャーを実装するコードにあります、 `ClaimsBasedAuthorization`サンプル。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimtype.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimtype.md new file mode 100644 index 00000000000..b5023f44b17 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimtype.md @@ -0,0 +1,51 @@ +--- +title: "<claimType> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d17b5831-9a2c-45c4-b0d1-68f48e72e861 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# <claimType> +1 つのオプションまたは必須の請求の入力方向のセキュリティ トークンを指定します。 + +## 構文 + +``` + +   +     +       +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|クレームの種類。 通常、URI。 必ず指定します。| +|optional|要求の種類が省略可能かどうかを指定するブール値。 省略可能です。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/claimtyperequired.md)|入力方向のセキュリティ トークンに必要なクレームのセットを指定します。| \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimtyperequired.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimtyperequired.md new file mode 100644 index 00000000000..918b85bdba6 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/claimtyperequired.md @@ -0,0 +1,48 @@ +--- +title: "<claimTypeRequired> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c469d71f-6c77-4a24-97aa-53efa126ceef +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# <claimTypeRequired> +入力方向のセキュリティ トークンに必要なクレームのセットを指定します。 + +## 構文 + +``` + +   +     +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/claimtype.md)|1 つのオプションまたは必須の請求の入力方向のセキュリティ トークンを指定します。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)|サービス ・ レベルの id の設定を指定します。| \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/clear.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/clear.md new file mode 100644 index 00000000000..f8009411dd1 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/clear.md @@ -0,0 +1,47 @@ +--- +title: "<clear> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 54dcd1d1-038f-4fc8-a3a4-56ba7a1ca0fd +caps.latest.revision: 3 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 3 +--- +# <clear> +期限内のトークン ハンドラーのコレクションのすべてのセキュリティのトークン ハンドラーをオフにします。 + +## 構文 + +``` + +   +     +       +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlers.md)|エンドポイントに登録されたセキュリティのトークン ハンドラーのコレクションを指定します。| \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/cookiehandler.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/cookiehandler.md new file mode 100644 index 00000000000..53ebbf817a4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/cookiehandler.md @@ -0,0 +1,90 @@ +--- +title: "<cookieHandler> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bfdc127f-8d94-4566-8bef-f583c6ae7398 +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# <cookieHandler> +構成、 は、 \(SAM\) を使用して cookie を読み書きします。 + +## 構文 + +``` + +   +     +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|name|Cookie が書き込まれるすべてのベース名を指定します。 既定値は"FedAuth"です。| +|path|書き込まれたすべての cookie のパス値を指定します。 既定値は"HttpRuntime.AppDomainAppVirtualPath"です。| +|mode|いずれか、 SAM によって使用される cookie のハンドラーの種類を指定する値。 次の値を使用可能性があります。

- 「既定値」\-は「チャンク」します。
- 「チャンク」などのインスタンスを使用して、 クラス。 この cookie のハンドラーは、個々 の cookie がセットの最大サイズを超えないことを確認します。 これは、可能性があります「1 つの論理の cookie cookie に回線の数にチャンクで」実行します。
- 「カスタム」などから派生したカスタム クラス インスタンスを使用して。 派生クラスによって参照される、 ``子要素。

既定値は、"Default"です。| +|persistentSessionLifetime|永続的なセッションの有効期間を指定します。 一時的なセッションは 0 にすると、常に使用されます。 既定値は「一時的なセッションを指定なさい」、です。 「365 日間のセッションを指定 365:0:0」、最大値はです。 次の制限に従って値を指定する必要があります: ``、左端の値日数を指定します。 時間の中央値 \(存在する場合\) を指定します、分の右端の値 \(存在する場合\) を指定します。| +|requireSsl|書き込まれた cookie に"Secure"フラグが出力されるかどうかを指定します。 この値を設定すると、サインイン セッション cookie のみ HTTPS 経由で利用できます。 既定値は"true"です。| +|hideFromScript|書き込まれた cookie の"HttpOnly"フラグが出力されるかどうかを制御します。 一部の web ブラウザーは、cookie の値にアクセスするクライアント側スクリプトを保持することでこのフラグを優先します。 既定値は"true"です。| +|domain|書き込まれたすべての cookie のドメイン値。 既定値は""。| + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/chunkedcookiehandler.md)|構成、 。 この要素のみが表示される場合、 `mode`属性の`` "Default"または「チャンク」です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/customcookiehandler.md)|Cookie のカスタム ハンドラーの種類を設定します。 この要素が存在するにする必要がある場合は、 `mode`属性の``要素は、「ユーザー設定」。 それの他の値が存在することはできません、 `mode`属性。 カスタムの型から派生する必要があります、 クラス。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md)|構成設定を含む、 \(WSFAM\) と、 \(SAM\)。| + +## 解説 + 読み取りおよび書き込みの生の cookie では、HTTP プロトコル ・ レベルの責任を負います。 いずれかを構成することができます、 カスタム cookie のハンドラーから派生、 クラス。 + + チャンクの cookie のハンドラーを構成するには、mode 属性を「チャンク」または「デフォルト」を設定します。 既定のチャンク サイズは 2000 バイトですが、含めることによって、別のチャンク サイズをオプションとして指定できます、 ``子要素。 + + Cookie のカスタム ハンドラーを構成するには、mode 属性に「カスタム」に設定します。 指定する必要があります、 ``カスタム ハンドラーの型を参照する子要素。 + + ``要素で表される、 クラス。 構成で指定した cookie のハンドラーからは、 のプロパティ、 設定オブジェクト、 プロパティ。 + +## 使用例 + 次の XML に示す、 ``要素。 この例では、ため、 `mode`属性が指定されていない、cookie の既定のハンドラーが SAM によって使用されます。 これは、インスタンスのです、 クラス。 ``子要素が指定されていない、既定のチャンク サイズを指定します。 HTTPS は必要なので、 `requireSsl`属性を設定`false`。 + +> [!WARNING] +> この例では、HTTPS セッション cookie を記述する必要はありません。 これは、ためには、 `requireSsl`の属性を``要素に設定する`false`。 セキュリティ上のリスクを提示可能性がありますようにこの設定ほとんどの運用環境でしないでください。 + +``` + +``` + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/customcookiehandler.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/customcookiehandler.md new file mode 100644 index 00000000000..5d51bdc76eb --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/customcookiehandler.md @@ -0,0 +1,67 @@ +--- +title: "<customCookieHandler> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a03b153d-5ec6-4915-9031-6f0c3fd348be +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 6 +--- +# <customCookieHandler> +Cookie のカスタム ハンドラーの種類を設定します。 この要素のみが表示される場合は、 `mode`属性の``要素は、「ユーザー設定」。 カスタムの型から派生する必要があります、 クラス。 + +## 構文 + +``` + +   +     +       +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|派生するカスタム型を指定します、 クラス。 指定する方法の詳細については、 `type`属性は、 [Custom Type References](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_CustomTypeReferences)。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/cookiehandler.md)|構成、 は、 cookie の読み書きに使用します。| + +## 解説 + 設定することにより、クッキーのカスタム ハンドラーを指定すると、 `mode`属性の``要素「ユーザー設定」などでカスタム cookie のハンドラーの種類を指定する必要があります、 ``クッキーのハンドラーの型を参照する子要素。 この要素にすることはできない時に指定、 `mode` 「チャンク」または「既定値」属性を設定します。 ハンドラーのカスタム cookie を派生する必要がありますから、 クラス。 + + ``要素で表される、 クラス。 + +## 使用例 + 次の使用例カスタム cookie のハンドラーの型を使用すると、SAM の構成`MyNamespace.MyCustomCookieHandler`。 + +``` + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md new file mode 100644 index 00000000000..6d780a90ca7 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md @@ -0,0 +1,100 @@ +--- +title: "<federationConfiguration> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8b14054c-6d07-46ab-ab58-03f14beac0f2 +caps.latest.revision: 9 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 9 +--- +# <federationConfiguration> +構成、 \(WSFAM\) と、 \(SAM\) を使用する場合の連合、Ws\-federation プロトコルを使って認証します。 構成、 を使用すると、 や、 クレーム ベースのアクセス制御を提供するクラス。 + +## 構文 + +``` + +   +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|name|このフェデレーションの構成要素の名前。 この属性は、主に将来のプロトコルの機能拡張ポイントを提供します。 省略可能です。| +|identityConfigurationName|Id の構成セクションで指定した名前は、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)要素を使用します。 この属性が指定されていない場合は、既定の id の構成セクションが使用されます。 省略可能です。| + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/cookiehandler.md)|SAM によって使用される cookie のハンドラーを構成します。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/servicecertificate.md)|暗号化し、トークンを復号化するために使用する証明書を構成します。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/wsfederation.md)|WS フェデレーション認証モジュール \(WSFAM\) を構成します。 省略可能です。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/system-identitymodel-services.md)|Ws\-federation プロトコルを使用して、認証用の構成セクション。| + +## 解説 + \ 要素に 2 つの異なるシナリオでの設定が用意されています。 + +- Ws\-federation のパッシブ Web アプリケーションで使用すると、要素には構成設定が含まれています、 \(WSFAM\) と、 \(SAM\)。 また、セキュリティ トークン ハンドラー、証明書、および要求の承認マネージャーやクレームの認証マネージャーのコンポーネントを構成するために使用する識別情報の構成を参照します。 + +- 使用すると、 や、 クラスのコード内でのクレーム ベースのアクセス コントロールを提供するために、要求承認マネージャー、承認決定を行うために使用するポリシーを構成、アイデンティティの構成要素を参照します。 これは、パッシブ Web シナリオでないシナリオにも当てはまります。 たとえば、Windows 通信基盤 \(WCF\) アプリケーションまたは Web ベースでないアプリケーション。 アプリケーションがパッシブの Web アプリケーションでない場合、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/claimsauthorizationmanager.md)要素とその子ポリシー要素が存在する場合\) によって参照されている識別情報の構成の``要素が適用されるだけの設定します。 その他のメンバーはすべて無視されます。 + + シナリオに関係なく、ランタイムは既定のフェデレーション構成を読み込みます。 動作は、次のように定義されています。 + +1. ある場合ない``要素が、ランタイムはフェデレーションの構成を作成し、既定値が設定されます。 この既定のフェデレーションの構成は、既定のユーザー構成を参照します。 + +2. 場合は 1 つの``要素が存在しない場合、という名前のないかにかかわらず、既定のフェデレーション構成です。 場合は、 `identityConfiguration`属性を指定すると、名前付きのアイデンティティ構成が参照されています。 それ以外の場合は、ユーザーの既定の構成を参照します。 + +3. 場合は、名前のない``要素が存在しない場合、既定のフェデレーションの構成です。 場合は、 `identityConfiguration`属性を指定すると、名前付きのアイデンティティ構成が参照されています。 それ以外の場合は、ユーザーの既定の構成を参照します。 + +4. 場合は、複数の名前付き``要素が存在しない無名``要素が存在しない場合、例外がスローされます。 + + 通常、ひとつ``セクションを定義します。 このセクションでは、既定のフェデレーションの構成です。 複数を一意に名前を指定する可能性があります``の要素。 無名以外のフェデレーション構成をロードする場合は、ただし、この例では、ハンドラーを用意する必要があるがします。 イベントとセット、 プロパティ内のハンドラーに、 オブジェクトから適切な値に初期化``構成ファイル内の要素。 + + ``要素で表される、 クラス。 構成オブジェクトによって表される、 クラス。 1 つのインスタンスの設定には、 プロパティとフェデレーションの構成のアプリケーションが用意されています。 + +## 使用例 + 次の XML に示す、 `` 、WSFAM の設定が指定され、要素 cookie の既定のハンドラー \(インスタンスのクラス\) によって SAM を使用します。 + +> [!WARNING] +> この例では、cookie のハンドラーと WSFAM のどちらも必要な HTTPS を使用します。 これは、ためには、 `requireHttps`の属性、 ``要素と、 `requireSsl`の属性、 ``は`false`。 これらの設定は、セキュリティ上のリスクがあるとほとんどの運用環境では推奨されません。 + +``` + + + + + + +``` + +## 参照 + + + + [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md new file mode 100644 index 00000000000..f67022fc324 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md @@ -0,0 +1,100 @@ +--- +title: "<identityConfiguration> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1db76253-07da-447b-9e7a-3705c7228cf4 +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 13 +--- +# <identityConfiguration> +サービス ・ レベルの id の設定を指定します。 + +## 構文 + +``` + +   +      maximumClockSkew=TimeSpan > +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|name|Id の構成セクションの名前。 特定の構成セクションを参照するのにには、この名前を使用できます。 ない場合は`name`属性を指定すると、既定の構成セクションを定義します。 既定の構成は、パッシブ フェデレーション シナリオでは常に使用されます。 詳細については、[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md) 要素を参照してください。| +|saveBootstrapContext|ブートス トラップのトークンをセッション トークンを含める必要がかどうかを指定します。 値も、トークン ハンドラーのコレクションを設定する可能性があります、 `saveBootstrapContext`の属性を[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)要素。 サービスに設定されている値、トークン ハンドラーのコレクションの設定値をオーバーライドします。| +|maximumClockSkew|A は、最大許可された時計の傾斜を指定します。 サインイン セッションの有効期限の検証など、急を要する操作を実行するときの最大許可された時計の傾斜を制御します。 既定値は 5 分です\] 00: 05:00"。 指定する方法の詳細については、 の値を参照してください[Timespan Values](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_TimespanValues)。 最大クロック スキューも、トークン ハンドラーのコレクションを設定する可能性があります、 `maximumClockSkew`の属性を[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)要素。 サービスに設定されている値、トークン ハンドラーのコレクションの設定値をオーバーライドします。| + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\<キャッシュ\>](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/caches.md)|セッション トークンをトークンのリプレイ検出を使用して、キャッシュを登録します。 サービス ・ レベルやセキュリティ トークン ハンドラーのコレクションを指定できます。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidation.md)|証明書を検証するトークン ハンドラーを使用する設定を制御します。 サービス ・ レベルやセキュリティ トークン ハンドラーのコレクションを指定できます。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/claimsauthenticationmanager.md)|クレーム認証マネージャーの入力方向の要求を登録します。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/claimsauthorizationmanager.md)|要求の承認マネージャーは、入力方向の要求を登録します。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/claimtyperequired.md)|入力方向のセキュリティ トークンに必要なクレームのセットを指定します。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlers.md)|セキュリティ トークン ハンドラーのコレクションを指定します。 0 個以上のコレクションのセキュリティ トークン ハンドラーを指定できます。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaydetection.md)|トークンのリプレイ検出を有効にし、トークンの有効期限を指定します。 サービス ・ レベルやセキュリティ トークン ハンドラーのコレクションを指定できます。 省略可能です。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/system-identitymodel.md)|アプリケーションでんだ Windows アイデンティティ基盤 \(ぜ\) オプションを有効にする構成を提供します。| + +## 解説 + 複数のアイデンティティが構成が定義可能性がありますが、それぞれに一意の名前。 動作は次のとおりです。 + +1. ない場合は``要素を指定します。 既定のユーザー構成実行時に作成され、既定値が指定されました。 + +2. 場合は 1 つの``要素を指定します。 これは、ユーザーの既定の構成です。 名前または名前のないかどうかは関係ありません。 + +3. 場合は、複数``要素を指定します。 無名の要素には、ユーザーの既定の構成を指定します。 複数指定する場合にお勧め``要素、それらのいずれかする必要がありますできない名前付き。 + +> [!WARNING] +> 複数指定する場合``要素、それらのいずれかする必要がありますできない名前付き。 名前のない要素は、ユーザーの既定の構成になります。 + + 指定した設定のいくつかの``セキュリティ トークン ハンドラーのコレクションを設定または個々 のセキュリティ トークン ハンドラーの設定によって、要素をオーバーライドできます。 + +> [!IMPORTANT] +> 使用すると、 や、 クラスをコードで参照されている識別情報構成でクレーム ベースのアクセス制御を提供するために、 ``要素は、要求承認マネージャー、承認決定を行うために使用するポリシーを構成します。 パッシブ Web シナリオ、たとえば、Windows 通信基盤 \(WCF\) アプリケーションまたは Web ベースでないアプリケーションではない場合も同様です。 アプリケーションがパッシブの Web アプリケーションでない場合、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/claimsauthorizationmanager.md)要素とその子ポリシー要素が存在する場合\) 参照の id の構成をされるだけの設定を適用します。 これ以外の設定は、すべて無視されます。 詳細については、[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md) 要素を参照してください。 + + ``要素で表される、 クラス。 ユーザーの構成\] セクションで表される、 クラス。 + +> [!IMPORTANT] +> 子要素として、次の要素を指定する、 ``要素が廃止されました、旧バージョンとの互換性はまだ動作がサポートされていますが。 これらの要素で指定する必要があります、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)要素。 +> +> - [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/audienceuris.md) +> - [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/issuernameregistry.md) +> - [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/issuertokenresolver.md) +> - [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/servicetokenresolver.md) + +## 使用例 + 次の使用例は、"alternateConfiguration"という名前は、身元の構成を作成します。 ユーザーの構成の既定の設定を指定します。 + +``` + + + +``` + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/index.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/index.md new file mode 100644 index 00000000000..5837d74be54 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/index.md @@ -0,0 +1,120 @@ +--- +title: "Windows Identity Foundation 構成スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4d4f6d76-49a5-4bad-b345-097b2e2844e9 +caps.latest.revision: 6 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 6 +--- +# Windows Identity Foundation 構成スキーマ +このセクションのトピックでは、たんだ Windows アイデンティティ基盤 \(ぜ\) 構成スキーマに関する情報を提供します。 たんだぜ、フレームワークによって公開されているクラスを使用すると、アプリケーション構成できます、します。 これらのクラスはスキーマに関連する要素を扱うセクションに記載されています。 次に示す基本的な XML 構造をしてたんだぜ構成スキーマを公開するタグです。 属性は省略されます。 強調表示されているコメントは、スキーマの主なコンポーネントを示しています。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## このセクションの内容 + [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/system-identitymodel.md)たんだぜオプションでアプリケーションを有効にする構成を提供します。 + + [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/system-identitymodel-services.md)たんだぜを使用して、パッシブ フェデレーションの構成を提供します。 セッション認証モジュール \(SAM\) とフェデレーション認証モジュール \(WSFAM\) を構成します。 + +## 関連項目 + [Configuration, Administration, And Management](http://msdn.microsoft.com/ja-jp/1e03c389-de2c-4096-aaff-86b087e1bea0)構成してたんだぜのアプリケーションとサービスを管理する方法について説明します。 \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/issuernameregistry.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/issuernameregistry.md new file mode 100644 index 00000000000..8bcf86c7b7f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/issuernameregistry.md @@ -0,0 +1,82 @@ +--- +title: "<issuerNameRegistry> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 58b39d12-c953-40c4-88af-d7eb3343ca28 +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 12 +--- +# <issuerNameRegistry> +ハンドラーで、トークン ハンドラー コレクションで使用される発行者名レジストリを構成します。 + +## 構文 + +``` + +   +     +       +         +           +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|派生した型はクラス。 ユーザー設定を指定する方法の詳細については`type`を参照してください[Custom Type References](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_CustomTypeReferences)。| + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/trustedissuers.md)|`type`属性には、構成ベースの発行者名レジストリを指定します \(、 クラス\) は、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/trustedissuers.md)要素を指定する必要があります。 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/trustedissuers.md)要素を取ることができます``、 ``、または``要素の子要素として。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)|構成コレクションのセキュリティ トークン ハンドラーを提供します。| + +## 解説 + すべてのトークンの発行者、発行者名レジストリを使用して検証されます。 これからの派生オブジェクトです、 クラス。 発行者名レジストリ ニーモニックの名前に対応する発行者によって作成されたトークンの署名を確認するために必要な暗号化の材料を関連付けるために使用されます。 発行者名レジストリ依存元のパーティ \(RP\) アプリケーションによって信頼されている発行者の一覧を維持します。 発行者名レジストリの種類を使用して指定される、 `type`属性。 ``要素は、指定した型の構成を提供する 1 つまたは複数の子要素を持つことができます。 オーバーライドして子要素を処理するロジックを提供、 メソッド。 + + 名前レジストリの種類、ボックスの外の提供、シングル ・発行者をたんだぜ、 クラス。 このクラスは、一連の構成で指定されている信頼された発行者の証明書を使用します。 これは、子の構成要素、する必要があります``、\[信頼できる発行元の証明書のコレクションを設定されている場合します。 証明書を指定する、ASN.1 を使用してエンコードされた形式の証明書の拇印と追加またはを使用して、コレクションからの削除を信頼``、 ``、または``の要素。 + + ``要素で表される、 クラス。 + +> [!NOTE] +> 指定する、 ``要素の子要素として、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)要素は推奨されていませんが、旧バージョンとの互換性のためのサポートもします。 設定で、 ``要素無効もに、 ``要素。 + +## 使用例 + 次の XML 名のレジストリをベースの構成の発行者を指定する方法を示します。 + +``` + + + + + + +``` + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/issuertokenresolver.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/issuertokenresolver.md new file mode 100644 index 00000000000..90401769f1f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/issuertokenresolver.md @@ -0,0 +1,90 @@ +--- +title: "<issuerTokenResolver> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f74392f6-3f5b-4880-bd8a-3a9130d31e65 +caps.latest.revision: 9 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# <issuerTokenResolver> +ハンドラーで、トークン ハンドラー コレクションで使用される発行者トークン リゾルバーを登録します。 署名トークンにトークンとメッセージの受信を解決するには、発行者トークン リゾルバーが使用されます。 + +## 構文 + +``` + +   +     +       +         +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|発行者、トークン リゾルバーの種類を指定します。 いずれかにする必要があります、 クラスまたはから派生した型はクラス。 指定する方法の詳細については、 `type`属性は、 [Custom Type References](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_CustomTypeReferences)。 必ず指定します。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)|構成コレクションのセキュリティ トークン ハンドラーを提供します。| + +## 解説 + 署名トークンにトークンとメッセージの受信を解決するには、発行者トークン リゾルバーが使用されます。 これは、暗号署名をチェックするために使用される材料を取得するために使用されます。 指定する必要があります、 `type`属性。 指定された型はいずれかになりますまたはから派生するカスタム型はクラス。 + + 一部トークン ハンドラー構成で発行者トークン リゾルバーの設定を指定することができます。 指定されたセキュリティ トークン ハンドラー コレクションで個々 のトークン ハンドラーの設定をオーバーライドします。 + +> [!NOTE] +> 指定する、 ``要素の子要素として、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)要素は推奨されていませんが、旧バージョンとの互換性のためのサポートもします。 設定で、 ``要素無効もに、 ``要素。 + +## 使用例 + 次の XML から派生するカスタム クラスに基づいて、発行者トークン リゾルバーの構成を示しています。 トークン リゾルバーからカスタムの構成要素が初期化される対象キーのペアのディクショナリを保持しています \(``\) のクラスを定義します。 クラスのオーバーライド、 この要素を処理するメソッド。 オーバーライドは、次の例では、表示されます。 ただし、それを呼び出す方法を簡潔にするため表示されません。 完全な例についてを参照してください、 `CustomToken`サンプル。 + +``` + + + +``` + +## 使用例 + +``` +public override void LoadCustomConfiguration(System.Xml.XmlNodeList nodelist) +{ + foreach (XmlNode node in nodelist) + { + XmlDictionaryReader rdr = XmlDictionaryReader.CreateDictionaryReader(new XmlTextReader(new StringReader(node.OuterXml))); + rdr.MoveToContent(); + + string symmetricKey = rdr.GetAttribute("symmetricKey"); + string audience = rdr.GetAttribute("audience"); + + this.AddAudienceKeyPair(audience, symmetricKey); + } +} +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/nameclaimtype.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/nameclaimtype.md new file mode 100644 index 00000000000..4775df7ecc7 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/nameclaimtype.md @@ -0,0 +1,70 @@ +--- +title: "<nameClaimType> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 17514d95-f0f5-4789-8e28-346640dc227c +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# <nameClaimType> + のプロパティを指定する要求タイプを設定します。 要求タイプがこのトークン ハンドラーの 方法によって返された のオブジェクト コレクションの の検索に使用されます。 一致の値は、たとえば、このハンドラーから生成される の名前設定されます。 + +## 構文 + +``` + +   +     +       +         +           +           +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|value| のプロパティに使用する要求タイプの要求を表す URI を指定する文字列。 必須。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/samlsecuritytokenrequirement.md)|これらのクラスのいずれかの クラス、 クラス、または派生クラスにコンフィギュレーションを提供します。| + +## 解説 + のオブジェクトを構成から開始されるときに `` の要素セット のプロパティ。 + +## 使用例 + +``` + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/remove.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/remove.md new file mode 100644 index 00000000000..4e61210ac26 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/remove.md @@ -0,0 +1,60 @@ +--- +title: "<削除> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4058e2f1-7db4-4d1a-84dd-1b52836f2ae6 +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# <削除> +指定されたセキュリティ トークン ハンドラーをトークン ハンドラー コレクションから削除します。 + +## 構文 + +``` + +   +     +       +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|削除すると、トークン ハンドラーの CLR 型名。 指定する方法の詳細については、 `type`属性は、 [Custom Type References](http://msdn.microsoft.com/ja-jp/7286d2e3-c63d-49fd-abdc-ce2705f22c24)。 必ず指定します。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlers.md)|エンドポイントには登録されているセキュリティ トークン ハンドラーのコレクションを指定します。| + +## 使用例 + 次の XML の使用を示しています、 ``と``カスタム セッション トークン ハンドラーが既定のセッション トークン ハンドラーを置換する要素。 XML から取得されます、 `ClaimsAwareWebFarm`サンプル。 + +``` + + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/roleclaimtype.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/roleclaimtype.md new file mode 100644 index 00000000000..65fdf53e395 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/roleclaimtype.md @@ -0,0 +1,70 @@ +--- +title: "<roleClaimType> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 69a49deb-6369-41ba-806b-ae8d21fac64b +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# <roleClaimType> +たとえば、ハンドラーの 方法によって返された のオブジェクト コレクションの要求ロールのタイプを定義する要求タイプを指定します。 + +## 構文 + +``` + +   +     +       +         +           +           +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|value|ロールのタイプの要求を使用して要求の要求のタイプを表す URI を指定する文字列。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/samlsecuritytokenrequirement.md)|これらのクラスのいずれかの クラス、 クラス、または派生クラスにコンフィギュレーションを提供します。| + +## 解説 + のオブジェクトを構成から開始されるときに `` の要素セット のプロパティ。 + +## 使用例 + +``` + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/samlsecuritytokenrequirement.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/samlsecuritytokenrequirement.md new file mode 100644 index 00000000000..7daf3b01bb7 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/samlsecuritytokenrequirement.md @@ -0,0 +1,85 @@ +--- +title: "<samlSecurityTokenRequirement> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 09202d12-88d3-49cc-953b-703bcc1690eb +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# <samlSecurityTokenRequirement> +これらのクラスのいずれかの クラス、 クラス、または派生クラスにコンフィギュレーションを提供します。 クラスで表される。 + +## 構文 + +``` + +   +     +       +         +           +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|mapToWindows|たとえば、ハンドラーが Windows アカウントに入力された UPN の要求の使用によって検証のトークンをマップするかどうかを指定します。 既定値は「false」です。| +|issuerCertificateRevocationMode|X.509 証明書に使用する破棄の方法を指定する の値。 既定値は「オンライン」です。| +|issuerCertificateValidationMode|X.509 証明書に使用する検証の方法を指定する の値。 既定値は、「」PeerOrChainTrust です。| +|issuerCertificateTrustedStoreLocation|X.509 証明書の店舗を指定する の値。 既定値は、「」LocalMachine です。| +|issuerCertificateValidator|取得元の注文タイプ。 `issuerCertificateValidationMode` の属性をカスタム「」の場合、この型のインスタンスはフィールドの証明書の検証に使用されます。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/nameclaimtype.md)| のプロパティを指定する要求タイプを設定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/roleclaimtype.md)|たとえば、ハンドラーの 方法によって返された のオブジェクト コレクションの要求ロールのタイプを定義する要求タイプを指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/add.md)|たとえば、ハンドラーのグループに指定セキュリティのトークン ハンドラーを追加します。| + +## 解説 + オブジェクト モデル \( クラスが `` の要素を表され、 または の `SamlSecurityTokenRequirement` のプロパティをコンフィギュレーションします。 + +## 使用例 + +``` + + + + + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md new file mode 100644 index 00000000000..62aef1f49b0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md @@ -0,0 +1,93 @@ +--- +title: "<securityTokenHandlerConfiguration> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 28724cc6-020c-4a06-9a1f-d7594f315019 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# <securityTokenHandlerConfiguration> +構成、トークン ハンドラーのコレクションを提供します。 + +## 構文 + +``` + +   +     +       +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|saveBootstrapContext|ブートス トラップのトークンをセッション トークンを含める必要がかどうかを指定します。 値も、トークン ハンドラーのコレクションを設定する可能性があります、 `saveBootstrapContext`の属性を[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)要素。 サービスに設定されている値、トークン ハンドラーのコレクションの設定値をオーバーライドします。| +|maximumClockSkew|A は、最大許可された時計の傾斜を指定します。 サインイン セッションの有効期限の検証など、急を要する操作を実行するときの最大許可された時計の傾斜を制御します。 既定値は 5 分です\] 00: 05:00"。 指定する方法の詳細については、 の値を参照してください[Timespan Values](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_TimespanValues)。 最大クロックスも、サービス レベルで設定する可能性があります、 `maximumClockSkew`の属性を[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)要素。 サービスに設定されている値、トークン ハンドラーのコレクションの設定値をオーバーライドします。| + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/audienceuris.md)|この依存元の相手の許容可能な識別子は Uri のセットを指定します。 省略可能です。| +|[\<キャッシュ\>](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/caches.md)|セッション トークンをトークンのリプレイ検出を使用して、キャッシュを登録します。 サービス ・ レベルやセキュリティ トークン ハンドラーのコレクションを指定できます。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatevalidation.md)|証明書を検証するトークン ハンドラーを使用する設定を制御します。 サービス ・ レベルやセキュリティ トークン ハンドラーのコレクションを指定できます。 独自の検証コントロールと、特定のハンドラーが設定されている場合、これらの設定はオーバーライドされます。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/issuernameregistry.md)|ハンドラーで、トークン ハンドラー コレクションで使用される発行者名レジストリを構成します。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/issuertokenresolver.md)|ハンドラーで、トークン ハンドラー コレクションで使用される発行者トークン リゾルバーを登録します。 署名トークンにトークンとメッセージの受信を解決するには、発行者トークン リゾルバーが使用されます。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/servicetokenresolver.md)|ハンドラーで、トークン ハンドラー コレクションにより使用されるサービス トークン リゾルバーを登録します。 サービス トークン リゾルバーを使用すると、受信トークンとメッセージの暗号化トークンを解決します。 省略可能です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaydetection.md)|トークンのリプレイ検出を有効にし、トークンの有効期限を指定します。 サービス ・ レベルやセキュリティ トークン ハンドラーのコレクションを指定できます。 省略可能です。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlers.md)|エンドポイントには登録されているセキュリティ トークン ハンドラーのコレクションを指定します。| + +## 解説 + 説明プロパティの値は、 オブジェクト。 ここで構成した設定は、サービスで構成されているをオーバーライドします。 いくつかのこれらの設定ハンドラーはセキュリティ トークン ハンドラー コレクションに追加されるときに指定された設定によって、オーバーライドことができます。 + +## 使用例 + +``` + + + + + + + + + + + + + + + + + + + + + + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlers.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlers.md new file mode 100644 index 00000000000..641694e7db1 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlers.md @@ -0,0 +1,61 @@ +--- +title: "<securityTokenHandlers> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f11a631d-4094-4e11-bb03-4ede74b30281 +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# <securityTokenHandlers> +エンドポイントには登録されているセキュリティ トークン ハンドラーのコレクションを指定します。 + +## 構文 + +``` + +   +     +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|name|トークン ハンドラーのコレクションの名前を指定します。 フレームワークによって認識される唯一の値は、"ActAs"と"OnBehalfOf"です。 トークン ハンドラーのコレクションにこれらの名前のいずれかに指定されている場合は、それぞれトークンの ActAs または OnBehalfOf を処理すると、コレクションが使用されます。| + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/add.md)|セキュリティ トークン ハンドラーは、トークン ハンドラー コレクションに追加します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/clear.md)|すべてのセキュリティ トークン ハンドラー、トークン ハンドラーのコレクションを消去します。| +|[\<削除\>](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/remove.md)|セキュリティ トークン ハンドラーは、トークン ハンドラー コレクションから削除します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)|構成、トークン ハンドラーのコレクションを提供します。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)|サービス ・ レベルの id の設定を指定します。| + +## 解説 + サービスの構成では、セキュリティ トークン ハンドラーの 1 つ以上の名前付きコレクションを指定できます。 使用してコレクションの名前を指定することができます、 `name`属性。 フレームワークの処理のみの名前は"ActAs"と"OnBehalfOf"です。 ハンドラーがコレクションに存在する場合は、セキュリティ トークン サービス \(STS\) の代わりに、既定のハンドラーを処理するとき使用されます`ActAs`と`OnBehalfOf`トークン。 + + 既定では、コレクションの次のハンドラーの種類を設定します。 、および。 使用してそのコレクションを変更することができます、 ``、 ``、および``の要素。 のみ、単一のハンドラーは特定の型のコレクション内に存在することを確認する必要があります。 ハンドラーから派生させる場合は、たとえば、 は、クラス ハンドラーまたは、 両方が、単一のコレクションに構成可能性があります。 + + 使用して、 ``コレクション内で、ハンドラーの構成設定を指定する要素。 この要素で指定された設定をオーバーライドするを通じてサービスに指定された、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)要素。 (いくつかの組み込みのハンドラーの種類を含む) いくつかのハンドラーは、子要素の追加の構成をサポートできる、 ``要素。 ハンドラーで指定した設定は、コレクションまたはサービスで指定された同等の設定をオーバーライドします。 \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/servicecertificate.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/servicecertificate.md new file mode 100644 index 00000000000..c65457631b0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/servicecertificate.md @@ -0,0 +1,57 @@ +--- +title: "<serviceCertificate> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 42c7f291-2ec3-43c5-8872-35897ff3c660 +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# <serviceCertificate> +暗号化し、トークンを復号化に使用される X.509 証明書を構成します。 + +## 構文 + +``` + +   +     +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/certificatereference.md)|検索して、証明書ストアの X.509 証明書を検証するために使用する設定を指定します。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md)|構成設定を含む、 \(WSFAM\) と、 \(SAM\)。| + +## 使用例 + \ の使用、次の XML を示しています。 要素。 XML から取得されます、 `CustomToken`サンプル。 + +``` + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/servicetokenresolver.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/servicetokenresolver.md new file mode 100644 index 00000000000..bd3c5bdf556 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/servicetokenresolver.md @@ -0,0 +1,66 @@ +--- +title: "<serviceTokenResolver> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6e9001e1-e064-4f47-84b2-46225c177746 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# <serviceTokenResolver> +ハンドラーで、トークン ハンドラー コレクションにより使用されるサービス トークン リゾルバーを登録します。 サービス トークン リゾルバーを使用すると、受信トークンとメッセージの暗号化トークンを解決します。 + +## 構文 + +``` + +   +     +       +         +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|サービス トークン リゾルバーの種類を指定します。 一方、 型または派生型、 クラス。 指定する方法の詳細については、 `type`属性は、 [Custom Type References](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_CustomTypeReferences)。 必ず指定します。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)|構成コレクションのセキュリティ トークン ハンドラーを提供します。| + +## 解説 + 受信トークンとメッセージの暗号化トークンを解決するには、サービス トークン リゾルバーを使用できます。 これは、着信トークンを復号化に使用するキーを取得するために使用されます。 指定する必要があります、 `type`属性。 指定された型はいずれかになりますまたはから派生するカスタム型はクラス。 + + 一部トークン ハンドラー構成でサービス トークン リゾルバーの設定を指定することができます。 指定されたセキュリティ トークン ハンドラー コレクションで個々 のトークン ハンドラーの設定をオーバーライドします。 + +> [!NOTE] +> 指定する、 ``要素の子要素として、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)要素は推奨されていませんが、旧バージョンとの互換性のためのサポートもします。 設定で、 ``要素無効もに、 ``要素。 + +## 使用例 + +``` + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/sessionsecuritytokencache.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/sessionsecuritytokencache.md new file mode 100644 index 00000000000..e060205190d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/sessionsecuritytokencache.md @@ -0,0 +1,65 @@ +--- +title: "<sessionSecurityTokenCache> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d43e676c-0153-485c-ab31-0257a2db7507 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# <sessionSecurityTokenCache> +セッション トークンをキャッシュ サービスとセキュリティ トークン ハンドラーのコレクションを登録します。 + +## 構文 + +``` + +   +     +       +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|派生した型はクラス。 ユーザー設定を指定する方法の詳細については`type`を参照してください[Custom Type References](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_CustomTypeReferences)。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\<キャッシュ\>](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/caches.md)|サービス、セキュリティ トークン ハンドラーのコレクションを使用して、キャッシュを登録します。| + +## 使用例 + 次の XML は、セッションのセキュリティ トークンを保持して、カスタム キャッシュの構成を示しています \(\)。 構成から取得されます、 `ClaimsAwareWebFarm`サンプル。 このサンプルの詳細についてを参照してください[WIF コード サンプル インデックス](../../../../../docs/framework/security/wif-code-sample-index.md)。 + +``` + + + + + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/sessiontokenrequirement.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/sessiontokenrequirement.md new file mode 100644 index 00000000000..07693dcc1e9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/sessiontokenrequirement.md @@ -0,0 +1,60 @@ +--- +title: "<sessionTokenRequirement> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 496a1735-cbb7-49d5-a6aa-dd5550462073 +caps.latest.revision: 3 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 3 +--- +# <sessionTokenRequirement> + クラスまたは派生クラスにコンフィギュレーションを提供します。 + +## 構文 + +``` + +   +     +       +         +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|有効期間|セッションのトークンの有効期間を指定します。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/add.md)|たとえば、ハンドラーのグループに指定セキュリティのトークン ハンドラーを追加します。| + +## 使用例 + +``` + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/system-identitymodel-services.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/system-identitymodel-services.md new file mode 100644 index 00000000000..6225d451675 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/system-identitymodel-services.md @@ -0,0 +1,81 @@ +--- +title: "<system.identityModel.services> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fa1624dd-2d74-4ae3-942e-498cee261ac5 +caps.latest.revision: 6 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 6 +--- +# <system.identityModel.services> +Ws\-federation プロトコルを使用して、認証用の構成セクション。 + + \ + +## 構文 + +``` + +   +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md)|構成設定を含む、 \(WSFAM\) と、 \(SAM\) の HTTP モジュール。| + +### 親要素 + なし + +## 解説 + 追加、 `` SAM および WSFAM の設定を提供するために、アプリケーションの構成ファイルを追加します。 + +> [!IMPORTANT] +> 使用すると、 や、 コード、要求の承認マネージャー内のクレームに基づくアクセス制御を提供するクラス \(\) と承認を決定するために使用するポリシーを構成、 ``から暗黙的または明示的に参照される要素が``このセクション内の要素。 詳細についてを参照してください、 **備考**で、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md)要素。 + + ``セクションで表される、 クラス。 コレクションの子`` 、セクション内の構成要素で表される、 クラス。 + +## 使用例 + 次の XML を追加する方法を示しています、 ``するには、構成ファイルのセクション。 最初セクション宣言の両方を追加する必要があります、 ``セクションと、 ``セクション。 \(を追加したとき、 ``セクションでは、する必要がありますも追加すると、宣言を``デフォルトようにするセクション``セクション必要がある場合は、ランタイムで作成できます\)。宣言セクションを追加した後は、統合認証の設定\] を構成できます、 ``要素。 + +``` + + +
+
+ + + + + + + + + + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/system-identitymodel.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/system-identitymodel.md new file mode 100644 index 00000000000..f7228fff121 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/system-identitymodel.md @@ -0,0 +1,84 @@ +--- +title: "<system.identityModel> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 210ce7e9-d07b-400c-800f-5f525dcf95e8 +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# <system.identityModel> +アプリケーションでんだ Windows アイデンティティ基盤 \(ぜ\) オプションを有効にする構成を提供します。 + + \ + +## 構文 + +``` + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)|サービス ・ レベルの id の設定を指定します。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|``|共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。| + +## 解説 + 追加、 ``してたんだ Windows アイデンティティ基盤 \(ぜ\) を使用するアプリケーション、サービスを構成するには、構成ファイルのセクション。 ``要素で表される、 クラス。 + +## 使用例 + 追加する方法の例を示します、 ``するには、構成ファイルのセクション。 構成セクションと名前空間の宣言でを最初に追加する必要があります、 ``要素。 追加することができ、 `` 1 つまたは複数の識別情報の構成を指定するのには、構成ファイルの要素。 + +``` + + + +
+
+ + + ... + + + + + + + + + + + + + + + + ... + + +``` + +## 参照 + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaycache.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaycache.md new file mode 100644 index 00000000000..08f66de532a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaycache.md @@ -0,0 +1,67 @@ +--- +title: "<tokenReplayCache> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1572ab23-6933-41b5-bfb4-0c4548145500 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# <tokenReplayCache> +サービスまたはセキュリティ トークン ハンドラーのコレクションを再生のトークン キャッシュを登録します。 + +## 構文 + +``` + +   +     +       +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|type|派生した型はクラス。 ユーザー設定を指定する方法の詳細については`type`を参照してください[Custom Type References](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_CustomTypeReferences)。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\<キャッシュ\>](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/caches.md)|サービス、セキュリティ トークン ハンドラーのコレクションを使用して、キャッシュを登録します。| + +## 解説 + トークンの再実行キャッシュを使用すると、再生されたトークンを検出します。 トークンのリプレイ検出を有効にして、 [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaydetection.md)要素は、また、最大有効期間トークンを指定します。 + +## 使用例 + 次の XML は、再生されたトークンを検出するためには、カスタムのキャッシュの構成を示しています。 + +``` + + + + +``` + +## 参照 + + [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaydetection.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaydetection.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaydetection.md new file mode 100644 index 00000000000..ed9133f0bec --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaydetection.md @@ -0,0 +1,58 @@ +--- +title: "<tokenReplayDetection> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ac3f588e-5f75-4275-b969-2d492ecc3b47 +caps.latest.revision: 6 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# <tokenReplayDetection> +トークン リプレイ検出を有効にし、トークンの有効期限を指定します。 + +## 構文 + +``` + +   +     +     +   + +``` + +## 型 + + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|enabled|トークン リプレイ検出が有効かどうかを指定する値; 「true」トークン リプレイ検出を有効にします。| +|expirationPeriod| 項目がキャッシュから切らされ、削除されたと見なされる前に時間の最大サイズを指定します。 値を指定する方法の詳細については、 " " を参照してください。 [Timespan Values](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md#BKMK_TimespanValues)| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/identityconfiguration.md)|サービス レベルの ID の設定を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/securitytokenhandlerconfiguration.md)|セキュリティ トークン ハンドラーの収集の構成を提供します。| + +## 解説 + `` の要素は `` 要素の下のまたは `` 要素の下のセキュリティ トークン ハンドラー コレクション レベル サービス レベルで指定できます。 サービスで指定されたトークン ハンドラー コレクションの設定によってオーバーライドされます。 + + トークン再生のキャッシュの種類は、要素で [\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/tokenreplaycache.md) 指定されます。 \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/trustedissuers.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/trustedissuers.md new file mode 100644 index 00000000000..7bea2fd09ed --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/trustedissuers.md @@ -0,0 +1,80 @@ +--- +title: "<trustedIssuers> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d818c917-07b4-40db-9801-8676561859fd +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# <trustedIssuers> +構成ベースの発行者名レジストリで使用される信頼された発行者の証明書の一覧を構成する \(\)。 + +## 構文 + +``` + +   +     +       +         +           +             +             +             +           +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|Description| +|--------|-----------------| +|``|証明書を信頼された発行元のコレクションに追加します。 証明書が指定されて、 `thumbprint`属性。 この属性は必須であり、証明書の拇印の ASN.1 のエンコード形式が含まれている必要があります。 `name`属性はオプションであり、証明書のフレンドリ名を指定するのに使用できます。| +|``|すべての証明書を信頼された発行元のコレクションから削除します。| +|``|証明書は、信頼できる発行元のコレクションから削除します。 証明書が指定されて、 `thumbprint`属性。 この属性は必須です。| + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/issuernameregistry.md)|発行者名レジストリを構成します。 **Important:** `type`属性の``要素を参照するには、する必要があります、 のクラス、 ``要素が有効であること。| + +## 解説 + たんだ Windows アイデンティティ基盤 \(ぜ\) の単一の実装を提供する、 クラス ボックスのアウト、 クラス。 構成の発行者名レジストリ構成から読み込まれる信頼された発行者の一覧を維持します。 一覧では、各発行者名、発行者によって作成されたトークンの署名を確認するために必要な X.509 証明書が関連付けられます。 信頼された発行者の証明書の一覧で指定される、 ``要素。 リスト内の各要素はその発行者によって作成されたトークンの署名を確認するために必要な X.509 証明書、ニーモニックの発行者名を関連付けます。 証明書は、ASN.1 エンコード形式の証明書の拇印を指定して、コレクションを使用して追加の信頼``要素。 オフにしたり、発行者 \(証明書\) を使用して、一覧からの削除、 ``と``の要素。 + + `type`属性の``要素を参照するには、する必要があります、 のクラス、 ``要素が有効であること。 + +## 使用例 + 次の XML 名のレジストリをベースの構成の発行者を指定する方法を示します。 + +``` + + + + + + +``` + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/usernamesecuritytokenhandlerrequirement.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/usernamesecuritytokenhandlerrequirement.md new file mode 100644 index 00000000000..796fc815fd8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/usernamesecuritytokenhandlerrequirement.md @@ -0,0 +1,63 @@ +--- +title: "<userNameSecurityTokenHandlerRequirement> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6ec3bac1-b014-49ae-843c-c54518cb709a +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# <userNameSecurityTokenHandlerRequirement> + クラスまたは派生クラスにコンフィギュレーションを提供します。 + +## 構文 + +``` + +   +     +       +         +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|membershipProviderName|セキュリティのトークン ハンドラーで使用される を指定します。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/add.md)|たとえば、ハンドラーのグループに指定セキュリティのトークン ハンドラーを追加します。| + +## 解説 + のオブジェクトを構成から開始されるときに `` の要素セット のプロパティ。 + +## 使用例 + +``` + + \(WSFAM\)。 + +## 構文 + +``` + +   +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|Description| +|--------|-----------------| +|authenticationType|認証の種類を指定する URI。 WS フェデレーションのサインイン要求の wauth パラメーターを設定します。 省略可能です。 既定値は、wauth パラメーターが要求に含まれていないを指定します。 空の文字列です。| +|最新状態に維持|認証要求を目的の最大年齢 \(分単位\)。 WS フェデレーションのサインイン要求の wfresh パラメーターを設定します。 省略可能です。 既定値は 0 です。 省略可能です。 **Warning:** 次のリリースで。NET Framework 4.5 は、 `freshness`属性の種類が`xs:string`とその既定値は`null`。| +|homeRealm|ホーム ・ レルムの認証に使用する id プロバイダー \(IP\)。 WS フェデレーション サインイン要求の whr パラメーターを設定します。 省略可能です。 Whr パラメーターが要求に含まれていないことを指定します。 空の文字列が省略されます。| +|issuer|目的のトークン発行者の URI を指定します。 要求の基本 URL の Ws\-federation サインインとサインアウトの要求のために必要なに設定します。| +|persistentCookiesOnPassiveRedirects|認証の永続的な cookie が発行されたかどうかを指定します。 省略可能です。 既定値は"false"が、cookie が発行されませんでした。| +|passiveRedirectEnabled|WSFAM は、STS に認証されていない要求を自動的にリダイレクトできるかどうかを指定します。 省略可能です。 既定値は"true"が、認証されていない要求を自動的にリダイレクトされます。| +|policy|サインイン要求で使用する、関連するポリシーの場所を指定します。 URL を指定します。 既定値は空の文字列です。 WS フェデレーション サインイン要求の wp のパラメーターを設定します。 省略可能です。 既定値は、wp のパラメーター要求に含まれていないことを指定します。 空の文字列です。| +|realm|要求元の領域の URI。 \(依存元の相手 \(RP\) が、セキュリティ トークン サービス \(STS\) を識別する URI です。\)要求 wtrealm Ws\-federation サインイン要求のパラメーターを設定します。 必ず指定します。| +|返信|依存元パーティ \(RP\) が、セキュリティ トークン サービス \(STS から\) の返信を受信したいアドレスを識別する URL を指定します。 WS フェデレーションのサインイン要求の wreply パラメーターを設定します。 省略可能です。 既定値は、wreply パラメーターが要求に含まれていないを指定します。 空の文字列です。| +|要求|トークンの発行要求します。 WS フェデレーションのサインイン要求の wreq パラメーターを設定します。 省略可能です。 既定値は、wreq パラメーターが要求に含まれていないを指定します。 空の文字列です。 STS は、トークンを発行するのにはどのような知っている、wreq または wreqptr パラメーター内の要求を含まないを意味します。| +|requestPtr|トークン発行要求の場所を指定します。 URL を指定します。 要求の wreqptr パラメーターを設定します。 省略可能です。 既定値は、wreqptr パラメーターが要求に含まれていないを指定します。 空の文字列です。 STS は、トークンを発行するのにはどのような知っている、wreq または wreqptr パラメーター内の要求を含まないを意味します。| +|requireHttps|セキュリティ トークン サービス \(STS\) との通信が HTTPS プロトコルを使用する必要があるかどうかを指定します。 省略可能です。 既定値は"true"は、HTTPS を使用する必要があります。| +|リソース|アクセスして、リソース、依存元の相手 \(RP\) を識別する URI、セキュリティ トークン サービス \(STS\) にします。 省略可能です。 WS フェデレーションのサインイン要求の wres パラメーターを設定します。 省略可能です。 既定値は、wres パラメーターが要求に含まれていないを指定します。 空の文字列です。 **Note:** wres は、従来型のパラメーターです。 指定、 `realm` wtrealm パラメーターを代わりに使用する属性。| +|signInQueryString|WS フェデレーション サインイン要求の URL にクエリ パラメーターを定義するアプリケーションを指定するのには、機能拡張ポイントを提供します。 省略可能です。 既定値は、要求で追加のパラメーターを含めるしないことを指定します。 空の文字列です。 パラメーターは次の形式を使用してクエリ文字列のフラグメントとして指定されている: `“param1=value1¶m2=value2¶m3=value3”`といった。 **Note:** 構成ファイル内の ' &"は、エンティティ参照を使用して、クエリ文字列内の文字を指定する必要が`&`。| +|signOutQueryString|WS フェデレーション サインイン要求の URL にクエリ パラメーターを定義するアプリケーションを指定するのには、機能拡張ポイントを提供します。 省略可能です。 既定値は、要求で追加のパラメーターを含めるしないことを指定します。 空の文字列です。 パラメーターは次の形式を使用してクエリ文字列のフラグメントとして指定されている: `“param1=value1¶m2=value2¶m3=value3”`といった。 **Note:** 構成ファイル内の ' &"は、エンティティ参照を使用して、クエリ文字列内の文字を指定する必要が`&`。| +|signOutReply|パッシブ、Ws\-federation プロトコルをサインアウト時のセキュリティ トークン サービス \(STS\) にクライアントがリダイレクトする URL を指定します。 Ws\-federation サインアウト要求には、wreply パラメーターを設定します。 省略可能です。 既定値は、要求で追加のパラメーターを含めるしないことを指定します。 空の文字列です。| + +### 子要素 + なし + +### 親要素 + +|要素|Description| +|--------|-----------------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/federationconfiguration.md)|構成設定を含む、 \(WSFAM\) と、 \(SAM\)。| + +## 解説 + 使用できます、 `` 、WSFAM の Ws\-federation パラメーターの既定値の設定および既定の動作を構成するのには。 WS フェデレーション パラメーターの設定\] で定義されている、 ``要素によって公開されるのと同じプロパティを設定する、 クラス。 これらのプロパティを使用すると、WSFAM によって発行されるすべての要求を同じです。 WSFAM によって公開されるイベントのイベント ハンドラーを追加することにより処理要求の実行中に、Ws\-federation パラメーターを動的に変更できます。 例えば、 イベント。 詳細については、 クラスのドキュメントを参照してください。 + + ``要素で表される、 クラス。 構成オブジェクトによって表される、 クラス。 1 つのインスタンスの設定には、 を通じてアクセスされるオブジェクト、 プロパティと構成、WSFAM を提供します。 + +## 使用例 + 次の XML に示す、 `` 、WSFAM の設定を指定する要素。 + +> [!WARNING] +> この例では、WSFAM を HTTPS を使用する必要はありません。 これは、ためには、 `requireHttps`の属性、 ``が要素を設定`false`。 セキュリティ上のリスクを提示可能性がありますようにこの設定ほとんどの運用環境でしないでください。 + +``` + + +``` + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-identity-foundation/x509securitytokenhandlerrequirement.md b/docs/framework/configure-apps/file-schema/windows-identity-foundation/x509securitytokenhandlerrequirement.md new file mode 100644 index 00000000000..92ffa0369e9 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-identity-foundation/x509securitytokenhandlerrequirement.md @@ -0,0 +1,72 @@ +--- +title: "<x509SecurityTokenHandlerRequirement> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aca22c2c-5ae7-42af-9bbd-15c2524692ce +caps.latest.revision: 3 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 3 +--- +# <x509SecurityTokenHandlerRequirement> + クラスまたは派生クラスに必要なコンフィギュレーションを提供します。 + +## 構文 + +``` + +   +     +       +         +          mapToWindows=xs:boolean +          certificateValidationMode="None||ChainTrust||PeerTrust||PeerOrChainTrust||Custom" +          certificateValidator="Namespace.Class, Assembly" +          revocationMode="NoCheck||Offline||Online" +          trustedStoreLocation="CurrentUser||LocalMachine" +         +       +     +   + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|certificateValidationMode|X.509 証明書に使用する検証の方法を指定する の値。 既定値は、「」PeerOrChainTrust です。| +|mapToWindows|たとえば、ハンドラーが Windows アカウントに入力された UPN の要求の使用によって検証のトークンをマップするかどうかを指定します。 既定値は「false」です。| +|revocationMode|X.509 証明書に使用する破棄の方法を指定する の値。 既定値は「オンライン」です。| +|trustedStoreLocation|X.509 証明書の店舗を指定する の値。 既定値は、「」LocalMachine です。| +|certificateValidator|取得元の注文タイプ。 `certificateValidationMode` の属性をカスタム「」の場合、この型のインスタンスはフィールドの証明書の検証に使用されます。| + +### 子要素 + なし + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-identity-foundation/add.md)|たとえば、ハンドラーのグループに指定セキュリティのトークン ハンドラーを追加します。| + +## 使用例 + +``` + + + +``` \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/TOC.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/TOC.md new file mode 100644 index 00000000000..b6a4508943b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/TOC.md @@ -0,0 +1,46 @@ +# [](tracking.md) +# [](states.md) +# [](cancelrequestedqueries.md) +# [Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder](microsoft-visualstudio-activities-asr-clientactivitybuilder.md) +# [](variables.md) +# [Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder.Build](microsoft-visualstudio-activities-asr-clientactivitybuilder-build.md) +# [](etwtracking.md) +# [](activityscheduledqueries.md) +# [](activitystatequeries.md) +# [](workflowidle.md) +# [](bufferreceive.md) +# [](state-of-states.md) +# [](activityscheduledquery.md) +# [](states-of-activitystatequery.md) +# [](argument.md) +# [](activitystatequery.md) +# [](channelsettings.md) +# [](workflowinstancequery.md) +# [](bookmarkresumptionqueries.md) +# [](cancelrequestedquery.md) +# [](sqlworkflowinstancestore.md) +# [Windows Workflow Foundation の構成スキーマ](index.md) +# [Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder..ctor](microsoft-visualstudio-activities-asr-clientactivitybuilder-ctor.md) +# [](system-servicemodel-of-workflow.md) +# [](behavior-of-servicebehaviors-of-workflow.md) +# [](workflowinstancemanagement.md) +# [](state.md) +# [](workflowunhandledexception.md) +# [](participants.md) +# [](workflow.md) +# [](servicebehaviors-of-workflow.md) +# [クエリにおける注釈の使用](using-annotation-in-queries.md) +# [](workflowinstancequeries.md) +# [](faultpropagationquery.md) +# [](customtrackingqueries.md) +# [](customtrackingquery.md) +# [](variable.md) +# [その他のマネージ参照](additional-managed-reference.md) +# [](add-of-participants.md) +# [](behaviors-of-workflow.md) +# [](sendmessagechannelcache.md) +# [](bookmarkresumptionquery.md) +# [](factorysettings.md) +# [](trackingprofile.md) +# [](arguments.md) +# [](faultpropagationqueries.md) diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledqueries.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledqueries.md new file mode 100644 index 00000000000..da7d79628bd --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledqueries.md @@ -0,0 +1,61 @@ +--- +title: "<activityScheduledQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: ca6e82f1-54f2-48d6-899c-9873065b5547 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <activityScheduledQueries> +親アクティビティによる実行がスケジュールされているアクティビティを追跡するために使用する、クエリのコレクションを表します。 アクティビティがスケジュールされたレコードを追跡参加要素が定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledquery.md)|親アクティビティによる実行がスケジュールされているアクティビティを追跡するために使用するクエリ。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|**activityDefinitionId** プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.ActivityScheduledQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.ActivityScheduledQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityScheduledQuery](assetId:///System.Activities.Tracking.ActivityScheduledQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledquery.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledquery.md new file mode 100644 index 00000000000..ef83b687e9d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledquery.md @@ -0,0 +1,62 @@ +--- +title: "<activityScheduledQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: a8bcd6d4-b389-4daf-86bf-1ade85fec114 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <activityScheduledQuery> +親アクティビティによる実行がスケジュールされているアクティビティを追跡するために使用する、クエリのコレクションを表します。 アクティビティがスケジュールされたレコードを追跡参加要素が定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityName|キャンセルを要求しているアクティビティの名前を指定する文字列。| +|childActivityName|キャンセルが要求された子アクティビティの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledquery.md)|親アクティビティによる実行がスケジュールされているアクティビティを追跡するために使用するクエリ。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.ActivityScheduledQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.ActivityScheduledQueryElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityScheduledQuery](assetId:///System.Activities.Tracking.ActivityScheduledQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequeries.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequeries.md new file mode 100644 index 00000000000..f88251897aa --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequeries.md @@ -0,0 +1,69 @@ +--- +title: "<activityStateQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: bdd3c8ae-a13f-4df1-9b3c-a9d6c4bb1b5f +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <activityStateQueries> +ワークフロー インスタンスを構成するアクティビティのライフサイクルの変化を追跡するために使用する、クエリのコレクションを表します。 たとえば、ワークフロー インスタンスの "電子メール送信" アクティビティの完了を毎回追跡することが必要な場合があります。 追跡参加要素がアクティビティ状態レコード オブジェクトを定期受信するには、このクエリが必要です。 定期受信可能な状態は ActivityStates で指定します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md)|1 つのアクティビティ内で発生するエラーの処理を追跡するために使用するクエリ。 このイベントは、FaultHandler がエラーを処理するたびに発生します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|**activityDefinitionId** プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.ActivityStateQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.ActivityStateQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityStateQuery](assetId:///System.Activities.Tracking.ActivityStateQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md new file mode 100644 index 00000000000..329e7dc4bab --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md @@ -0,0 +1,93 @@ +--- +title: "<activityStateQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 9f8c3e4f-e2e3-4402-9760-03bf918ece7b +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <activityStateQuery> +ワークフロー インスタンスを構成するアクティビティのライフサイクルの変化を追跡するために使用されるクエリを表します。 たとえば、ワークフロー インスタンスの "電子メール送信" アクティビティの完了を毎回追跡することが必要な場合があります。 追跡参加要素がアクティビティ状態レコード オブジェクトを定期受信するには、このクエリが必要です。 定期受信可能な状態は ActivityStates で指定します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityName| インスタンスをフィルターするために、アクティビティの名前を指定する文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md)|このアクティビティ クエリに関連付けられている引数のコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)|追跡レコードを生成する必要がある定期受信済みアクティビティの状態を含む構成要素のコレクション。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)|このアクティビティ クエリに関連付けられている変数のコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationquery.md)|親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用する構成要素の一覧を表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。| + +## 解説 + ActivityStateQuery の固有の機能の 1 つは、ワークフローの実行を追跡するときにデータを抽出する機能です。 これにより、実行後に追跡レコードにアクセスするときにコンテキストが追加されます。 [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md) 要素、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素、および [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素を使用して、ワークフロー内の任意のアクティビティから任意の変数または引数を抽出できます。次の例は、アクティビティの `Closed` 追跡レコードが生成されたときに変数と引数を抽出する、アクティビティ状態クエリを示しています。 変数と引数は、ActivityStateRecord でのみ抽出できるため、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md) を使用して追跡プロファイル内で定期受信されます。 + +``` + + +    +    + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.ActivityStateQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.ActivityStateQueryElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityStateQuery](assetId:///System.Activities.Tracking.ActivityStateQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/add-of-participants.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/add-of-participants.md new file mode 100644 index 00000000000..c4778ef057a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/add-of-participants.md @@ -0,0 +1,99 @@ +--- +title: "<participants> の <add> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 3c730850-6f8e-4102-acb8-8effb4e09463 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <participants> の <add> +ランタイムから直接出力される追跡レコードをリッスンし、追跡レコードの構成方法に従って処理を行う追跡参加要素を構成します。 これには、特定の出力 \(ファイル、コンソール、ETW など\) への書き込み、レコードの処理や集計、またはその他の必要な組み合わせが含まれます。 + + ワークフロー追跡と追跡参加要素の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」と「[追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|要素|説明| +|--------|--------| +|name|追跡参加要素の名前を指定する文字列。| +|profileName|追跡参加要素が定期受信した追跡レコードを定義する、追跡プロファイルの名前を指定する文字列。| +|型|追跡参加要素の型を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md)|追跡参加要素の一覧| + +## 解説 + 追跡参加要素は、ワークフローから生成される追跡データを取得し、それを別のメディアに保存するために使用します。 同様に、追跡レコードの後処理はすべて、追跡参加要素内でも実行できます。 + + 複数の追跡参加要素が追跡イベントを同時に使用することができます。 各追跡参加要素は、それぞれ別の追跡プロファイルと関連付けることができます。 + + 追跡レコードを ETW セッションに書き込む、標準の追跡参加要素が用意されています。 参加要素は、追跡固有の動作を構成ファイルに追加することによって、ワークフロー サービスで構成されます。 ETW 追跡参加要素を有効にすると、追跡レコードをイベント ビューアーで表示できます。 これで要件が満たされない場合は、カスタムの追跡参加要素を作成することもできます。 + +## 使用例 + 次の構成例は、Web.config ファイルで構成されている標準の ETW 追跡参加要素を示します。 + + ETW 追跡参加要素が追跡レコードを ETW に書き込むために使用するプロバイダー ID は、**\** セクションで定義されます。 追跡参加要素には、その要素が定期受信した追跡レコードを指定するためのプロファイルが関連付けられています。 これは、**profileName** 要素の **\** 属性で定義されます。 これらが定義されると、追跡参加要素は **\** サービス動作に追加されます。 これにより、選択した追跡参加要素がワークフロー インスタンスの拡張機能に追加され、追跡レコードの受信が開始されます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/additional-managed-reference.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/additional-managed-reference.md new file mode 100644 index 00000000000..9b55c650e01 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/additional-managed-reference.md @@ -0,0 +1,21 @@ +--- +title: "その他のマネージ参照 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 453917f7-5fb9-4572-a681-853f80b2b7c5 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# その他のマネージ参照 +このトピックでは、[Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder.md) クラスについて説明します。 + +## このセクションの内容 + このクラスは wfd1 インフラストラクチャで使用され、ユーザーが呼び出すためのものではありません。 \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/argument.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/argument.md new file mode 100644 index 00000000000..6fc818c6670 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/argument.md @@ -0,0 +1,82 @@ +--- +title: "<argument> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: a7144d53-8023-4e90-971f-895e016fd58a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <argument> +アクティビティ状態クエリに関連付けられている引数を表す構成要素。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|この引数の名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md)|このアクティビティ クエリに関連付けられている引数のコレクション。| + +## 解説 + ActivityStateQuery の固有の機能の 1 つは、ワークフローの実行を追跡するときにデータを抽出する機能です。 これにより、実行後に追跡レコードにアクセスするときにコンテキストが追加されます。 [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md) 要素、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素、および [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素を使用して、ワークフロー内の任意のアクティビティから任意の変数または引数を抽出できます。次の例は、アクティビティの `Closed` 追跡レコードが生成されたときに変数と引数を抽出する、アクティビティ状態クエリを示しています。 変数と引数は、ActivityStateRecord でのみ抽出できるため、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md) を使用して追跡プロファイル内で定期受信されます。 + +``` + + +    +    + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.ArgumentElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.ArgumentElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityStateQuery](assetId:///System.Activities.Tracking.ActivityStateQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md new file mode 100644 index 00000000000..44462b95985 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md @@ -0,0 +1,82 @@ +--- +title: "<arguments> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 0f327196-f468-4be3-b6c4-68ba981a1bd6 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <arguments> +アクティビティ状態クエリに関連付けられている引数のコレクションを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/argument.md)|アクティビティ状態クエリに関連付けられている引数。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md)|親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用する構成要素を表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。| + +## 解説 + ActivityStateQuery の固有の機能の 1 つは、ワークフローの実行を追跡するときにデータを抽出する機能です。 これにより、実行後に追跡レコードにアクセスするときにコンテキストが追加されます。 [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md) 要素、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素、および [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素を使用して、ワークフロー内の任意のアクティビティから任意の変数または引数を抽出できます。次の例は、アクティビティの `Closed` 追跡レコードが生成されたときに変数と引数を抽出する、アクティビティ状態クエリを示しています。 変数と引数は、ActivityStateRecord でのみ抽出できるため、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md) を使用して追跡プロファイル内で定期受信されます。 + +``` + + +    +    + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.ArgumentElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.ArgumentElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityStateQuery](assetId:///System.Activities.Tracking.ActivityStateQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md new file mode 100644 index 00000000000..266ff3e6622 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md @@ -0,0 +1,75 @@ +--- +title: "ワークフローの <serviceBehaviors> の <behavior> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 6a4b718a-1b40-4957-935a-f6122819ab3c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# ワークフローの <serviceBehaviors> の <behavior> +**behavior** 要素には、サービスの動作設定のコレクションが含まれます。 各動作には、それぞれの **name** によってインデックスが付けられます。 サービスは、[\](../../../../../docs/framework/configure-apps/file-schema/wcf/endpoint-element.md) 要素の **behaviorConfiguration** 属性を使用して、この名前で各動作にリンクできます。 これにより、設定を再定義することなく、エンドポイント間で共通の動作構成を共有できます。 + +## 構文 + +``` + + + + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|動作の構成名を含む一意の文字列。 この値は、要素の識別文字列として機能するため、一意のユーザー定義の文字列である必要があります。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/bufferreceive.md)|サービスが、バッファーされた受信処理を使用するためのサービス動作。これにより、ワークフロー サービスは、順番を無視したメッセージを処理できます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/routing-of-servicebehavior.md)| を使用した、サービスによる ETW 追跡の利用を可能にするサービス動作。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/sendmessagechannelcache.md)|キャッシュの共有レベルのカスタマイズや、チャネル ファクトリ キャッシュの設定を可能にするほか、Send メッセージング アクティビティを使用してサービス エンドポイントにメッセージを送信するワークフローのチャネル キャッシュの設定も可能にするサービス動作。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/sqlworkflowinstancestore.md)|ワークフロー サービス インスタンスの状態情報の永続化を SQL Server 2005 または SQL Server 2008 データベースでサポートする 機能を構成するためのサービス動作。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowidle.md)|アイドル状態のワークフロー インスタンスのアンロードおよび永続化のタイミングを制御するサービス動作。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancemanagement.md)|ワークフロー インスタンスの実行方法を制御する設定を指定するためのサービス動作。これには、永続する未処理の例外動作やアイドル状態の動作が含まれます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowunhandledexception.md)|ワークフロー サービス内で未処理の例外が発生した場合のアクションを指定するためのサービス動作。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/servicebehaviors-of-workflow.md)|サービス動作要素のコレクション。| \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/behaviors-of-workflow.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/behaviors-of-workflow.md new file mode 100644 index 00000000000..0ba179a013e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/behaviors-of-workflow.md @@ -0,0 +1,54 @@ +--- +title: "ワークフローの <behaviors> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 3c6017b6-0c4f-4192-bd67-9515f5d1ec82 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# ワークフローの <behaviors> +この要素には、**serviceBehaviors** コレクションが含まれています。 コレクション内の各要素は、ワークフロー サービスによって使用されるそれぞれの動作要素を定義します。 各動作要素は、その一意の **name** 属性で識別されます。 + + \ + +## 構文 + +``` + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/servicebehaviors-of-workflow.md)|この構成セクションは、特定のワークフロー サービスに対して定義されたすべての動作を表します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md)|すべてのワークフロー構成要素のルート要素。| + +## 参照 + + + + [動作を使用したランタイムの構成と拡張](../../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionqueries.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionqueries.md new file mode 100644 index 00000000000..1d13f80e47e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionqueries.md @@ -0,0 +1,60 @@ +--- +title: "<bookmarkResumptionQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 8ed61a7f-4254-439c-bdd8-b474971533f7 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <bookmarkResumptionQueries> +ワークフロー インスタンス内のブックマークの再開を追跡するために使用する、クエリのコレクションを表します。 追跡参加要素がブックマーク再開レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionquery.md)|ワークフロー インスタンス内のブックマークの再開を追跡するために使用されるクエリ。 追跡参加要素がブックマーク再開レコードを定期受信するには、このクエリが必要です。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|**activityDefinitionId** プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.BookmarkResumptionQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.BookmarkResumptionQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.BookmarkResumptionQuery](assetId:///System.Activities.Tracking.BookmarkResumptionQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionquery.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionquery.md new file mode 100644 index 00000000000..66f35000084 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionquery.md @@ -0,0 +1,60 @@ +--- +title: "<bookmarkResumptionQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 226de75d-d25c-48d5-b069-4b7d80a6852b +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <bookmarkResumptionQuery> +ワークフロー インスタンス内のブックマークの再開を追跡するために使用されるクエリを表します。 追跡参加要素がブックマーク再開レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|定期受信するブックマーク レコードの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionqueries.md)|ワークフロー インスタンス内のブックマークの再開を追跡するために使用する、クエリのコレクションを表します。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.BookmarkResumptionQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.BookmarkResumptionQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.BookmarkResumptionQuery](assetId:///System.Activities.Tracking.BookmarkResumptionQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/bufferreceive.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/bufferreceive.md new file mode 100644 index 00000000000..b2cb0238fc0 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/bufferreceive.md @@ -0,0 +1,54 @@ +--- +title: "<bufferReceive> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: b23c3a54-10d4-4f13-ab6d-98b26b76f22a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <bufferReceive> +サービスが、バッファーされた受信処理を使用するためのサービス動作。これにより、ワークフロー サービスは、順番を無視したメッセージを処理できます。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|maxPendingMessagesPerChannel|各チャネルで許容される保留状態のメッセージの最大数を指定する整数。 既定値は 512 です。 このプロパティは、ワークフロー サービスで受信できる、順番を無視したメッセージの数を制限します。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ の \](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md)|動作の要素を指定します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/cancelrequestedqueries.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/cancelrequestedqueries.md new file mode 100644 index 00000000000..1ab220f65ad --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/cancelrequestedqueries.md @@ -0,0 +1,61 @@ +--- +title: "<cancelRequestedQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: eab5af7e-76fa-434d-9d36-873e995cee05 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <cancelRequestedQueries> +親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用する、クエリのコレクションを表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/cancelrequestedquery.md)|親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用するクエリ。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|**activityDefinitionId** プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.CancelRequestQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.CancelRequestQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.CancelRequestQuery](assetId:///System.Activities.Tracking.CancelRequestQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/cancelrequestedquery.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/cancelrequestedquery.md new file mode 100644 index 00000000000..e04fe792e37 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/cancelrequestedquery.md @@ -0,0 +1,62 @@ +--- +title: "<cancelRequestedQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 8da9b1c4-338a-4f23-9830-6d257772d340 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <cancelRequestedQuery> +親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用するクエリを表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityName|キャンセルを要求しているアクティビティの名前を指定する文字列。| +|childActivityName|キャンセルが要求された子アクティビティの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationquery.md)|親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用する構成要素の一覧を表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.CancelRequestQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.CancelRequestQueryElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.CancelRequestedQuery](assetId:///System.Activities.Tracking.CancelRequestedQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/channelsettings.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/channelsettings.md new file mode 100644 index 00000000000..e4d5ea1f31a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/channelsettings.md @@ -0,0 +1,95 @@ +--- +title: "<channelSettings> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 94a4457f-f43f-458d-a47e-2d11103ee75e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <channelSettings> +チャネル キャッシュの設定を指定します。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|idleTimeout|オブジェクトが破棄されるまでにキャッシュ内でアイドル状態を維持できる最大時間を指定する TimeSpan 値。| +|leaseTimeout|オブジェクトがキャッシュから削除されるまでの時間間隔を指定する TimeSpan 値。| +|maxItemsInCache|キャッシュに置くことができるオブジェクトの最大数を指定する整数。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/sendmessagechannelcache.md)|キャッシュの共有レベルのカスタマイズや、チャネル ファクトリ キャッシュの設定を可能にするほか、Send メッセージング アクティビティを使用してサービス エンドポイントにメッセージを送信するワークフローのチャネル キャッシュの設定も可能にするサービス動作。| + +## 解説 + このサービス動作は、サービス エンドポイントにメッセージを送信するワークフローを対象としています。 これらのワークフローは、通常はクライアント ワークフローですが、 でホストされるワークフロー サービスである場合もあります。 + + 既定では、 によってホストされるワークフローでは、 メッセージング アクティビティが使用するキャッシュは のすべてのワークフロー インスタンス間で共有されます \(ホストレベルのキャッシュ\)。 によってホストされないクライアント ワークフローの場合、キャッシュを使用できるのはワークフロー インスタンスだけです \(インスタンスレベルのキャッシュ\)。 構成でエンドポイントが定義されているワークフローに送信アクティビティがある場合、キャッシュは既定で無効になります。 + + [!INCLUDE[crabout](../../../../../includes/crabout-md.md)] チャネル ファクトリおよびチャネル キャッシュの既定のキャッシュ共有レベルとキャッシュ設定を変更する方法については、「[Send アクティビティのキャッシュ共有レベルの変更](../../../../../docs/framework/wcf/feature-details/changing-the-cache-sharing-levels-for-send-activities.md)」を参照してください。 + +## 使用例 + ホストされたワークフロー サービスでは、ファクトリ キャッシュとチャネル キャッシュの設定をアプリケーション構成ファイルで指定できます。 これを行うには、ファクトリ キャッシュおよびチャネル キャッシュのキャッシュ設定を含むサービス動作を追加し、そのサービス動作をサービスに追加します。 次の例は、カスタムのファクトリ キャッシュ設定およびチャネル キャッシュ設定が指定された **MyChannelCacheBehavior** サービス動作を含む構成ファイルの内容を示しています。 このサービス動作は、**behaviorConfiguarion** 属性を通じてサービスに追加されます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + + [Send アクティビティのキャッシュ共有レベルの変更](../../../../../docs/framework/wcf/feature-details/changing-the-cache-sharing-levels-for-send-activities.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingqueries.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingqueries.md new file mode 100644 index 00000000000..ecdee8d78d4 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingqueries.md @@ -0,0 +1,61 @@ +--- +title: "<customTrackingQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 4e9e732d-911d-45a3-a569-4b5e9cd1ffbe +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <customTrackingQueries> +コード アクティビティで定義するイベントを追跡するために使用する、クエリのコレクションを表します。 追跡参加要素がカスタム追跡レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingquery.md)|コード アクティビティで定義するイベントを追跡するために使用するクエリ。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|**activityDefinitionId** プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.CustomTrackingQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.CustomTrackingQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.CustomTrackingQuery](assetId:///System.Activities.Tracking.CustomTrackingQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingquery.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingquery.md new file mode 100644 index 00000000000..3d1d1bba49a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingquery.md @@ -0,0 +1,62 @@ +--- +title: "<customTrackingQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 4e108e89-1132-46b7-868a-c7f5c69dc89f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <customTrackingQuery> +コード アクティビティで定義するイベントを追跡するために使用する、クエリのコレクションを表します。 追跡参加要素がカスタム追跡レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityName|追跡レコードを生成したアクティビティの名前を指定する文字列。| +|name|生成されたカスタム追跡レコードの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingquery.md)|コード アクティビティで定義するイベントを追跡するために使用するクエリ。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.CustomTrackingQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.CustomTrackingQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.CustomTrackingQuery](assetId:///System.Activities.Tracking.CustomTrackingQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/etwtracking.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/etwtracking.md new file mode 100644 index 00000000000..ac144a80d0d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/etwtracking.md @@ -0,0 +1,92 @@ +--- +title: "<etwTracking> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: cb45c82e-6ea1-4c4d-924c-118a25ae1f35 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <etwTracking> + を使用した、サービスによる ETW 追跡の利用を可能にするサービス動作。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|profileName|この動作に関連付けられた追跡プロファイルの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ の \](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md)|動作の要素を指定します。| + +## 解説 + サービスの動作構成に追加すると、この構成要素により、ワークフロー サービスの追跡参加要素が構成されます。 + + 追跡参加要素は、ワークフローから生成される追跡データを取得し、それを別のメディアに保存するために使用します。 同様に、追跡レコードの後処理はすべて、追跡参加要素内でも実行できます。 + +## 使用例 + 次の構成例は、Web.config ファイルで構成されている標準の ETW 追跡参加要素を示します。 + + ETW 追跡参加要素が追跡レコードを ETW に書き込むために使用するプロバイダー ID は、**\** セクションで定義されます。 追跡参加要素には、その要素が定期受信した追跡レコードを指定するためのプロファイルが関連付けられています。 これは、**profileName** 要素の **\** 属性で定義されます。 これらが定義されると、追跡参加要素は **\** サービス動作に追加されます。 これにより、選択した追跡参加要素がワークフロー インスタンスの拡張機能に追加され、追跡レコードの受信が開始されます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/factorysettings.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/factorysettings.md new file mode 100644 index 00000000000..b77022a20d8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/factorysettings.md @@ -0,0 +1,95 @@ +--- +title: "<factorySettings> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 202aad17-1b8b-4c87-ad57-4ca5de18ed35 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <factorySettings> +チャネル ファクトリ キャッシュの設定を指定します。 + +## 構文 + +``` + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|idleTimeout|オブジェクトが破棄されるまでにキャッシュ内でアイドル状態を維持できる最大時間を指定する TimeSpan 値。| +|leaseTimeout|オブジェクトがキャッシュから削除されるまでの時間間隔を指定する TimeSpan 値。| +|maxItemsInCache|キャッシュに置くことができるオブジェクトの最大数を指定する整数。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/sendmessagechannelcache.md)|キャッシュの共有レベルのカスタマイズや、チャネル ファクトリ キャッシュの設定を可能にするほか、Send メッセージング アクティビティを使用してサービス エンドポイントにメッセージを送信するワークフローのチャネル キャッシュの設定も可能にするサービス動作。| + +## 解説 + このサービス動作は、サービス エンドポイントにメッセージを送信するワークフローを対象としています。 これらのワークフローは、通常はクライアント ワークフローですが、 でホストされるワークフロー サービスである場合もあります。 + + 既定では、 によってホストされるワークフローでは、 メッセージング アクティビティが使用するキャッシュは のすべてのワークフロー インスタンス間で共有されます \(ホストレベルのキャッシュ\)。 によってホストされないクライアント ワークフローの場合、キャッシュを使用できるのはワークフロー インスタンスだけです \(インスタンスレベルのキャッシュ\)。 構成でエンドポイントが定義されているワークフローに送信アクティビティがある場合、キャッシュは既定で無効になります。 + + [!INCLUDE[crabout](../../../../../includes/crabout-md.md)] チャネル ファクトリおよびチャネル キャッシュの既定のキャッシュ共有レベルとキャッシュ設定を変更する方法については、「[Send アクティビティのキャッシュ共有レベルの変更](../../../../../docs/framework/wcf/feature-details/changing-the-cache-sharing-levels-for-send-activities.md)」を参照してください。 + +## 使用例 + ホストされたワークフロー サービスでは、ファクトリ キャッシュとチャネル キャッシュの設定をアプリケーション構成ファイルで指定できます。 これを行うには、ファクトリ キャッシュおよびチャネル キャッシュのキャッシュ設定を含むサービス動作を追加し、そのサービス動作をサービスに追加します。 次の例は、カスタムのファクトリ キャッシュ設定およびチャネル キャッシュ設定が指定された **MyChannelCacheBehavior** サービス動作を含む構成ファイルの内容を示しています。 このサービス動作は、**behaviorConfiguarion** 属性を通じてサービスに追加されます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + + [Send アクティビティのキャッシュ共有レベルの変更](../../../../../docs/framework/wcf/feature-details/changing-the-cache-sharing-levels-for-send-activities.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationqueries.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationqueries.md new file mode 100644 index 00000000000..d8d42214a4b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationqueries.md @@ -0,0 +1,61 @@ +--- +title: "<faultPropagationQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 00ff90ae-ebe0-4c85-a93f-61557288d0a3 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <faultPropagationQueries> +1 つのアクティビティ内で発生するエラーの処理を追跡するために使用する、クエリのコレクションを表します。 このイベントは、FaultHandler がエラーを処理するたびに発生します。 1 つのアクティビティ内で発生したエラーの処理は、このようなクエリを使用して追跡する必要があります。 追跡参加要素がエラー伝達レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationquery.md)|1 つのアクティビティ内で発生するエラーの処理を追跡するために使用するクエリ。 このイベントは、FaultHandler がエラーを処理するたびに発生します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|**activityDefinitionId** プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.FaultPropagationQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.FaultPropagationQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.FaultPropagationQuery](assetId:///System.Activities.Tracking.FaultPropagationQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationquery.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationquery.md new file mode 100644 index 00000000000..4cbd8ca4865 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationquery.md @@ -0,0 +1,62 @@ +--- +title: "<faultPropagationQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 4fb5c2b1-3dad-4eca-9c7f-3efb51899813 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <faultPropagationQuery> +1 つのアクティビティ内で発生するエラーの処理を追跡するために使用するクエリを表します。 このイベントは、FaultHandler がエラーを処理するたびに発生します。 1 つのアクティビティ内で発生したエラーの処理は、このようなクエリを使用して追跡する必要があります。 追跡参加要素がエラー伝達レコードを定期受信するには、このクエリが必要です。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityName|エラーを伝達したエラー ハンドラー アクティビティの名前を指定する文字列。 既定値は \* で、すべてのアクティビティについてエラー伝達レコードが返されることを示します。| +|faultHandlerActivityName|エラーの原因となったアクティビティの名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationqueries.md)|1 つのアクティビティ内で発生するエラーの処理を追跡するために使用する、構成要素の一覧を表します。 このイベントは、FaultHandler がエラーを処理するたびに発生します。| + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.FaultPropagationQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.FaultPropagationQueryElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.FaultPropagationQuery](assetId:///System.Activities.Tracking.FaultPropagationQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md new file mode 100644 index 00000000000..b34af02f6a1 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/index.md @@ -0,0 +1,24 @@ +--- +title: "Windows Workflow Foundation の構成スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 7ae70357-b150-4342-8f2a-d5eb6f9c6a0d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# Windows Workflow Foundation の構成スキーマ +[!INCLUDE[wf](../../../../../includes/wf-md.md)] の構成要素を使用して、ワークフロー アプリケーションを構成できます。 ワークフロー アプリケーションでは、追跡とトレースを構成できます。 追跡とトレースの詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」を参照してください。 ワークフロー サービスでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の構成要素も使用できます。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の詳細については、「[WCF 構成スキーマ](../../../../../docs/framework/configure-apps/file-schema/wcf/index.md)」を参照してください。 + + 構成ファイルは XML として書式設定されているため、テキスト エディターを使用して手動で編集する場合は、XML について理解している必要があります。 理解しないで編集すると、XML 要素タグや属性が見つからないなどの問題が発生する可能性があります。 問題の原因は、XML 要素タグと属性が大文字と小文字を区別することによります。 + +## このセクションの内容 + [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/system-servicemodel-of-workflow.md) + **ServiceModel** 要素について説明します。 \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder-build.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder-build.md new file mode 100644 index 00000000000..eed1ba1ef4f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder-build.md @@ -0,0 +1,36 @@ +--- +title: "Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder.Build | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +apiname: + - "Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder.Build" +apilocation: + - "Microsoft.VisualStudio.Activities.dll" +apitype: "Assembly" +ms.assetid: d83033b0-a4cb-4d40-835e-5c1a176cde5b +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder.Build +ワークフロー アクティビティにデータを提供する オブジェクトを作成および構成します。 + +## 構文 + +```csharp +public ActivityBuilder Build(); + +``` + +## 戻り値 + オブジェクトを返します。 + +## 参照 + [Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder-ctor.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder-ctor.md new file mode 100644 index 00000000000..a59ea03eb54 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder-ctor.md @@ -0,0 +1,48 @@ +--- +title: "Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder..ctor | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +apiname: + - "Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder..ctor" +apilocation: + - "Microsoft.VisualStudio.Activities.dll" +apitype: "Assembly" +ms.assetid: 6b44b13c-7a23-4df2-8f9f-45e2b1430002 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder..ctor +[Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder.md) クラスのインスタンスを作成します。 + +## 構文 + +```csharp +public ClientActivityBuilder(OperationDescription operationDescription, string configurationName, string proxyNamespace); + +``` + +#### パラメーター + +## パラメーター値 + *operationDescription* + + 操作名、戻り値の型、パラメーター情報など、生成されるワークフロー アクティビティで実行される操作を記述します。 このパラメーターの値には **null** を指定しないでください。 これは、メッセージ コントラクトを使用し、1 つのメッセージと共に引数を受け取る同期操作を示す必要があります。 これらの条件が満たされていない場合、このクラスのコンストラクターと他のメソッドを使用したランタイムの結果は未定義です。 + + *configurationName* + + エンドポイント構成名を指定します。 このパラメーターの値は **null** または空にしないでください。 これらの条件が満たされていない場合、このクラスのコンストラクターと他のメソッドを使用したランタイムの結果は未定義です。 + + *proxyNamespace* + + 操作のサービスの名前空間を指定します。 このパラメーターの値は **null** または空にしないでください。 これらの条件が満たされていない場合、このクラスのコンストラクターと他のメソッドを使用したランタイムの結果は未定義です。 + +## 参照 + [Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder.md new file mode 100644 index 00000000000..a9aa244055c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder.md @@ -0,0 +1,34 @@ +--- +title: "Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +apiname: + - "Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder" +apilocation: + - "Microsoft.VisualStudio.Activities.dll" +apitype: "Assembly" +ms.assetid: e7287d3f-59ee-448f-b7fe-b640508501a5 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder +このクラスを使用して、ワークフロー アクティビティにデータを提供する オブジェクトを作成および構成します。 + +## 構文 + +```csharp +public class ClientActivityBuilder + +``` + +## 参照 + [Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder.Build](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder-build.md) + [Microsoft.VisualStudio.Activities.Asr.ClientActivityBuilder..ctor](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/microsoft-visualstudio-activities-asr-clientactivitybuilder-ctor.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md new file mode 100644 index 00000000000..60884ef2a9a --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md @@ -0,0 +1,97 @@ +--- +title: "<participants> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 560dd0bb-f9fb-423c-8857-2101a3654b06 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# <participants> +ランタイムから直接出力される追跡レコードをリッスンし、追跡レコードの構成方法に従って処理を行う追跡参加要素の一覧を構成します。 これには、特定の出力 \(ファイル、コンソール、ETW など\) への書き込み、レコードの処理や集計、またはその他の必要な組み合わせが含まれます。 + + ワークフロー追跡と追跡参加要素の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」と「[追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/add-of-participants.md)|追跡参加要素を処理するための設定が含まれます。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/tracking.md)|ワークフロー サービスの追跡設定を定義する構成セクションを表します。| + +## 解説 + 追跡参加要素は、ワークフローから生成される追跡データを取得し、それを別のメディアに保存するために使用します。 同様に、追跡レコードの後処理はすべて、追跡参加要素内でも実行できます。 + + 複数の追跡参加要素が追跡イベントを同時に使用することができます。 各追跡参加要素は、それぞれ別の追跡プロファイルと関連付けることができます。 + + 追跡レコードを ETW セッションに書き込む、標準の追跡参加要素が用意されています。 参加要素は、追跡固有の動作を構成ファイルに追加することによって、ワークフロー サービスで構成されます。 ETW 追跡参加要素を有効にすると、追跡レコードをイベント ビューアーで表示できます。 これで要件が満たされない場合は、カスタムの追跡参加要素を作成することもできます。 + +## 使用例 + 次の構成例は、Web.config ファイルで構成されている標準の ETW 追跡参加要素を示します。 + + ETW 追跡参加要素が追跡レコードを ETW に書き込むために使用するプロバイダー ID は、**\** セクションで定義されます。 追跡参加要素には、その要素が定期受信した追跡レコードを指定するためのプロファイルが関連付けられています。 これは、**profileName** 要素の **\** 属性で定義されます。 これらが定義されると、追跡参加要素は **\** サービス動作に追加されます。 これにより、選択した追跡参加要素がワークフロー インスタンスの拡張機能に追加され、追跡レコードの受信が開始されます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡参加要素](../../../../../docs/framework/windows-workflow-foundation//tracking-participants.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/sendmessagechannelcache.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/sendmessagechannelcache.md new file mode 100644 index 00000000000..dc7c32a1401 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/sendmessagechannelcache.md @@ -0,0 +1,97 @@ +--- +title: "<sendMessageChannelCache> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 241e428e-5030-4b13-8a0a-69f05288d3d9 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <sendMessageChannelCache> +キャッシュの共有レベルのカスタマイズや、チャネル ファクトリ キャッシュの設定を可能にするほか、Send メッセージング アクティビティを使用してサービス エンドポイントにメッセージを送信するワークフローのチャネル キャッシュの設定も可能にするサービス動作。 + +## 構文 + +``` + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|allowUnsafeCaching|キャッシュをオンにするかどうかを示すブール値。 ワークフロー サービスにカスタムのバインディングまたは動作がある場合は、キャッシュが安全性を損う可能性があるため、既定では無効になります。 ただし、キャッシュをオンにする場合は、このプロパティを **true** に設定します。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/channelsettings.md)|チャネル キャッシュの設定を指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/factorysettings.md)|チャネル ファクトリ キャッシュの設定を指定します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ の \](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md)|動作の要素を指定します。| + +## 解説 + このサービス動作は、サービス エンドポイントにメッセージを送信するワークフローを対象としています。 これらのワークフローは、通常はクライアント ワークフローですが、 でホストされるワークフロー サービスである場合もあります。 + + 既定では、 によってホストされるワークフローでは、 メッセージング アクティビティが使用するキャッシュは のすべてのワークフロー インスタンス間で共有されます \(ホストレベルのキャッシュ\)。 によってホストされないクライアント ワークフローの場合、キャッシュを使用できるのはワークフロー インスタンスだけです \(インスタンスレベルのキャッシュ\)。 構成でエンドポイントが定義されているワークフローに送信アクティビティがある場合、キャッシュは既定で無効になります。 + + [!INCLUDE[crabout](../../../../../includes/crabout-md.md)] チャネル ファクトリおよびチャネル キャッシュの既定のキャッシュ共有レベルとキャッシュ設定を変更する方法については、「[Send アクティビティのキャッシュ共有レベルの変更](../../../../../docs/framework/wcf/feature-details/changing-the-cache-sharing-levels-for-send-activities.md)」を参照してください。 + +## 使用例 + ホストされたワークフロー サービスでは、ファクトリ キャッシュとチャネル キャッシュの設定をアプリケーション構成ファイルで指定できます。 これを行うには、ファクトリ キャッシュおよびチャネル キャッシュのキャッシュ設定を含むサービス動作を追加し、そのサービス動作をサービスに追加します。 次の例は、カスタムのファクトリ キャッシュ設定およびチャネル キャッシュ設定が指定された **MyChannelCacheBehavior** サービス動作を含む構成ファイルの内容を示しています。 このサービス動作は、**behaviorConfiguarion** 属性を通じてサービスに追加されます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + [Send アクティビティのキャッシュ共有レベルの変更](../../../../../docs/framework/wcf/feature-details/changing-the-cache-sharing-levels-for-send-activities.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/servicebehaviors-of-workflow.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/servicebehaviors-of-workflow.md new file mode 100644 index 00000000000..abbd3105dcc --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/servicebehaviors-of-workflow.md @@ -0,0 +1,23 @@ +--- +title: "ワークフローの <serviceBehaviors> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 51aba42d-0674-4726-a313-af6ed3aaa8f2 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# ワークフローの <serviceBehaviors> +この構成セクションは、特定のサービスに対して定義されたすべての動作を表します。 + +## 参照 + + + [サービスのランタイム動作の指定](../../../../../docs/framework/wcf/specifying-service-run-time-behavior.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/sqlworkflowinstancestore.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/sqlworkflowinstancestore.md new file mode 100644 index 00000000000..7ae51fc7b65 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/sqlworkflowinstancestore.md @@ -0,0 +1,68 @@ +--- +title: "<sqlWorkflowInstanceStore> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 8a4e4214-fc51-4f4d-b968-0427c37a9520 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <sqlWorkflowInstanceStore> +ワークフロー サービス インスタンスの状態情報の永続化を SQL Server 2005 または SQL Server 2008 データベースでサポートする 機能を構成するためのサービス動作。 この機能の詳細については、「[SQL Workflow Instance Store](../../../../../docs/framework/windows-workflow-foundation//sql-workflow-instance-store.md)」を参照してください。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|connectionString|基になる永続性データベースへの接続に使用する接続文字列を含む文字列。| +|connectionStringName|データベース サーバーへの名前付き接続文字列を含む文字列。 名前付き接続文字列の例は "DefaultConnectionString" です。| +|honstLockRenewalPeriod|ホストがインスタンスのロックを更新するまでの時間を指定する Timespan 値。 指定した時間内にホストがロックを更新しない場合は、インスタンスのロックが解除され、他のホストがそのインスタンスを使用できるようになります。

ワークフローをアンロードすることは、同時に、永続化することも意味します。 この属性をゼロに設定した場合は、ワークフローがアイドル状態になった直後に、ワークフロー インスタンスが永続化され、アンロードされます。 この属性を TimeSpan.MaxValue に設定すると、アンロード操作を事実上、無効にします。 アイドル状態になったワークフロー インスタンスはアンロードされません。| +|instanceCompletionAction|ワークフロー インスタンス完了後にワークフロー インスタンス データを永続化ストアに保持するか、またはその時点で削除するかを指定する値。 この値は、 型です。

列挙されるアクションは、インスタンスがその操作を完了したとき、永続化ストアからインスタンス データを削除するかどうかで構成されます。

完了後にインスタンスを保持すると、永続性データベースが急速に増大して、データベースのパフォーマンスに影響します。 データベースのパフォーマンスがパフォーマンス要件を満たすレベルになるように、これらのレコードを定期的に削除するパージ ポリシーを構成する必要があります。| +|instanceEncodingOption|インスタンス状態情報を永続化ストアに格納する前に、GZip アルゴリズムで圧縮するかどうかを指定する、省略可能な値。 この値は、 型です。 このプロパティの値は、圧縮しない場合は "None"、インスタンス データを gzip アルゴリズムで圧縮する場合は "GZip" です。| +|instanceLockedExceptionAction|現在、他のホストにロックされているインスタンスをホストがロックしようとしたときにスローされる例外への応答として発生するアクションを指定する値。 この値は、 型です。

このフィールドで使用できるオプションは、None、Basic Retry、および Aggressive Retry です。 既定値は None です。 これら 3 つのオプションの説明を次に示します。

- なし。 サービス ホストはインスタンスをロックしようとせず、 を呼び出し元に渡します。
- 基本的な再試行: サービス ホストは一定の再試行間隔でインスタンスのロックを再試行し、シーケンスの最後に例外を呼び出し元に渡します。
- 積極的な再試行: サービス ホストは指数関数的に増加する遅延を使用してインスタンスのロックを再試行し、シーケンスの最後に を呼び出し元に渡します。| +|runnableInstancesDetectionPeriod|| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ の \](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md)|動作の要素を指定します。| + +## 参照 + + + + [SQL Workflow Instance Store](../../../../../docs/framework/windows-workflow-foundation//sql-workflow-instance-store.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/state-of-states.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/state-of-states.md new file mode 100644 index 00000000000..91e745603d5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/state-of-states.md @@ -0,0 +1,82 @@ +--- +title: "<states> の <state> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: ab483c7f-a091-4933-ba6b-708d96846d38 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <states> の <state> +追跡レコードを生成する必要がある定期受信済みアクティビティの状態を含む構成要素。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|追跡レコードを生成する必要がある定期受信済みアクティビティの状態を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states-of-activitystatequery.md)|追跡レコードを生成する必要がある定期受信済みアクティビティの状態を含む構成要素のコレクション。| + +## 解説 + ActivityStateQuery の固有の機能の 1 つは、ワークフローの実行を追跡するときにデータを抽出する機能です。 これにより、実行後に追跡レコードにアクセスするときにコンテキストが追加されます。 [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md) 要素、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素、および [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素を使用して、ワークフロー内の任意のアクティビティから任意の変数または引数を抽出できます。次の例は、アクティビティの `Closed` 追跡レコードが生成されたときに変数と引数を抽出する、アクティビティ状態クエリを示しています。 変数と引数は、ActivityStateRecord でのみ抽出できるため、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md) を使用して追跡プロファイル内で定期受信されます。 + +``` + + +    +    + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.StateElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.StateElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityStateQuery](assetId:///System.Activities.Tracking.ActivityStateQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/state.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/state.md new file mode 100644 index 00000000000..378b036a60e --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/state.md @@ -0,0 +1,101 @@ +--- +title: "<state> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 619414f2-61c2-4427-9977-d05009e343db +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <state> +追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態のコレクションを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)|追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態のコレクション。| + +## 解説 + 返されたレコードは、このコレクションの状態でフィルター処理されます。 + + 次の表に、有効な状態の値を示します。 + +|状態|説明| +|--------|--------| +|Aborted|ワークフロー インスタンスは中止されました。| +|Completed|ワークフロー インスタンスは完了しました。| +|Deleted|ワークフロー インスタンスは削除されました。| +|Idle|ワークフロー インスタンスはアイドル状態です。| +|Persisted|ワークフロー インスタンスは永続化されました。| +|Resumed|ワークフロー インスタンスが再開されました。| +|Started|ワークフロー インスタンスが開始されました。| +|UnhandledException|ワークフロー インスタンスで未処理の例外が発生しました。| +|アンロード|ワークフロー インスタンスはアンロードされました。| +|Canceled|ワークフロー インスタンスは取り消されました。| +|Suspended|ワークフロー インスタンスが中断されています。| +|Terminated|ワークフロー インスタンスは終了しました。| +|Unsuspended|ワークフロー インスタンスの中断が解除されました。| + +## 使用例 + 次の構成は、このクエリを使用して、`Started` インスタンス状態のワークフロー インスタンス レベルの追跡レコードを定期受信します。 + +``` + + + + + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement?qualifyHint=False&autoUpgrade=True) + [System.ServiceModel.Activities.Tracking.Configuration.StateElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.StateElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.WorkflowInstanceQuery](assetId:///System.Activities.Tracking.WorkflowInstanceQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/states-of-activitystatequery.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/states-of-activitystatequery.md new file mode 100644 index 00000000000..749c4c2cd66 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/states-of-activitystatequery.md @@ -0,0 +1,82 @@ +--- +title: "<activityStateQuery> の <states> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: a7cc2018-2b79-44f1-825a-bb7ca08690a3 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <activityStateQuery> の <states> +追跡レコードを生成する必要がある定期受信済みアクティビティの状態を含む構成要素のコレクション。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/state-of-states.md)|追跡レコードを生成する必要がある定期受信済みアクティビティの状態を含む構成要素。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md)|親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用する構成要素を表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。| + +## 解説 + ActivityStateQuery の固有の機能の 1 つは、ワークフローの実行を追跡するときにデータを抽出する機能です。 これにより、実行後に追跡レコードにアクセスするときにコンテキストが追加されます。 [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md) 要素、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素、および [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素を使用して、ワークフロー内の任意のアクティビティから任意の変数または引数を抽出できます。次の例は、アクティビティの `Closed` 追跡レコードが生成されたときに変数と引数を抽出する、アクティビティ状態クエリを示しています。 変数と引数は、ActivityStateRecord でのみ抽出できるため、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md) を使用して追跡プロファイル内で定期受信されます。 + +``` + + +    +    + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.StateElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.StateElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityStateQuery](assetId:///System.Activities.Tracking.ActivityStateQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md new file mode 100644 index 00000000000..4aacc9108f5 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md @@ -0,0 +1,101 @@ +--- +title: "<states> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: ebea5e7c-ad58-43c5-8f2d-cca25ae1b721 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <states> +追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態のコレクションを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)|追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequery.md)|開始したイベントや完了したイベントなど、ワークフロー インスタンスのライフサイクルの変化を追跡するクエリ。| + +## 解説 + 返されたレコードは、このコレクションの状態でフィルター処理されます。 + + 次の表に、有効な状態の値を示します。 + +|状態|説明| +|--------|--------| +|Aborted|ワークフロー インスタンスは中止されました。| +|Completed|ワークフロー インスタンスは完了しました。| +|Deleted|ワークフロー インスタンスは削除されました。| +|Idle|ワークフロー インスタンスはアイドル状態です。| +|Persisted|ワークフロー インスタンスは永続化されました。| +|Resumed|ワークフロー インスタンスが再開されました。| +|Started|ワークフロー インスタンスが開始されました。| +|UnhandledException|ワークフロー インスタンスで未処理の例外が発生しました。| +|アンロード|ワークフロー インスタンスはアンロードされました。| +|Canceled|ワークフロー インスタンスは取り消されました。| +|Suspended|ワークフロー インスタンスが中断されています。| +|Terminated|ワークフロー インスタンスは終了しました。| +|Unsuspended|ワークフロー インスタンスの中断が解除されました。| + +## 使用例 + 次の構成は、このクエリを使用して、`Started` インスタンス状態のワークフロー インスタンス レベルの追跡レコードを定期受信します。 + +``` + + + + + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement?qualifyHint=False&autoUpgrade=True) + [System.ServiceModel.Activities.Tracking.Configuration.StateElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.StateElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.WorkflowInstanceQuery](assetId:///System.Activities.Tracking.WorkflowInstanceQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/system-servicemodel-of-workflow.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/system-servicemodel-of-workflow.md new file mode 100644 index 00000000000..e5dd9196590 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/system-servicemodel-of-workflow.md @@ -0,0 +1,116 @@ +--- +title: "ワークフローの <system.serviceModel> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 6a8eb2bf-f925-40e1-ba5c-a49b1d3a3ac6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# ワークフローの <system.serviceModel> +この構成セクションには、すべてのワークフロー構成要素が含まれます。 + +## 構文 + +``` + + + + + + + + + + + + + + + + +   + + + +     +       + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +            +              +               +             +           + +       +            +  +
+ +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/behaviors-of-workflow.md)|ここでは、**serviceBehaviors** コレクションを定義します。 各コレクション内の要素は、サービスによって使用されるそれぞれの動作要素を定義します。 各動作要素は、その一意の **name** 属性で識別されます。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/tracking.md)|ワークフロー サービスの追跡設定を定義する構成セクションを表します。

ワークフロー追跡とその構成の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」および「[ワークフローの追跡の構成](../../../../../docs/framework/windows-workflow-foundation//configuring-tracking-for-a-workflow.md)」を参照してください。| + +### 親要素 + +|要素|説明| +|--------|--------| +|\|.NET 構成ファイルのすべての構成要素のルート要素。| \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/tracking.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/tracking.md new file mode 100644 index 00000000000..dcad0289b4f --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/tracking.md @@ -0,0 +1,104 @@ +--- +title: "<tracking> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: fd9b50ed-98a1-4518-836d-e4e02c670822 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# <tracking> +ワークフロー サービスの追跡設定を定義する構成セクションを表します。 + + ワークフローの追跡とその構成の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」と「[ワークフローの追跡の構成](../../../../../docs/framework/windows-workflow-foundation//configuring-tracking-for-a-workflow.md)」を参照してください。 + +## 構文 + +```vb + +  + + + +     +       + + + + + + + + + + + + + + + + + + + + + + + + + + + +            +              +               +             +           + +       +            +  + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md)|追跡レコードを定期受信する参加要素を定義する、構成要素のコレクション。 追跡参加要素には、追跡レコードからペイロードを処理するロジックが含まれています \(たとえば、ファイルへの書き込みを選択できるなど\)。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/trackingprofile.md)|ワークフロー インスタンスで発生した追跡レコードをフィルター処理するための追跡プロファイル。| + +### 親要素 + +|要素|説明| +|--------|--------| +|system.ServiceModel|すべてのワークフロー構成要素のルート要素。| + +## 解説 + 追跡には、ワークフローの実行を検証する機能が用意されています。 ワークフロー追跡インフラストラクチャはワークフローをインストルメント化し、実行中の主要イベントを反映してレコードを生成します。 たとえば、ワークフロー インスタンスが開始または完了すると、追跡レコードが生成されます。 また、追跡によって、ワークフロー変数に関連付けられたビジネス関連データを抽出することもできます。 たとえば、ワークフローが注文処理システムを表している場合は、注文 ID と共に追跡レコードを抽出できます。 一般的に、WF 追跡機能を有効にすると、ワークフロー実行の診断またはビジネス分析が容易になります。 + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.TrackingSection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.TrackingSection?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/trackingprofile.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/trackingprofile.md new file mode 100644 index 00000000000..5fccaa86d74 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/trackingprofile.md @@ -0,0 +1,129 @@ +--- +title: "<trackingProfile> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 154830ff-ddd3-4397-a3b5-5b334907777f +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <trackingProfile> +追跡参加要素内でワークフロー追跡レコードのサブスクリプションを作成するための、構成セクションを表します。 追跡プロファイルには、実行時にワークフロー インスタンスの状態が変化したときに生成されるワークフロー イベントを追跡参加要素が定期受信できるようにする、追跡クエリが含まれています。 追跡プロファイル セクション内で定義されたクエリでは、サブスクリプションによって返されるイベントの種類が定義されます。 + + ワークフロー追跡とその構成の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」と「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + +  +     +       + + + + + + + + + + + + + + + + + + + + + + + + + + + +            +              +               +             +           + +       +            +  + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|追跡プロファイルの名前を指定する文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md)|**activityDefinitionId** プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/tracking.md)|ワークフロー サービスの追跡設定を定義する構成セクションを表します。| + +## 解説 + 追跡プロファイルには、実行時にワークフロー インスタンスの状態が変化したときに生成されるワークフロー イベントを追跡参加要素が定期受信できるようにする、追跡クエリが含まれています。 監視の要件に応じて、ワークフローの主な状態変化の少数のセットを定期受信する、大まかなプロファイルを作成できます。 それとは反対に、結果として得られるイベントが、後で詳細な実行フローを十分に再構築できるほど豊富な、詳細なプロファイルを作成することもできます。 + + 追跡プロファイルは、特定の追跡レコードを対象としてワークフロー ランタイムを照会できる、追跡レコード用の宣言型のサブスクリプションとして構築されます。 クエリには、TrackingRecord オブジェクトのさまざまなクラスを定期受信できる型が複数あります。 クエリの完全な一覧については、「[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md)」と「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + + 次の例は、追跡参加要素が `Started`ワークフロー イベントおよび `Completed`ワークフロー イベントを定期受信できるようにする、構成ファイル内の追跡プロファイルを示します。 + +``` + +  +     +       + +            +             +               +               +             +           + +       +            +  + + + +``` + +## 参照 + + + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/using-annotation-in-queries.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/using-annotation-in-queries.md new file mode 100644 index 00000000000..82fc70f8bdd --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/using-annotation-in-queries.md @@ -0,0 +1,43 @@ +--- +title: "クエリにおける注釈の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 50855b30-d5fe-49a9-89d3-3f1bfd670958 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# クエリにおける注釈の使用 +注釈を使用すると、ビルド後に構成できる値を使用して、追跡レコードへのタグ付けを任意に行うことができます。 たとえば、複数のワークフローに存在する複数の追跡レコードに、"Mail Server" \=\= "Mail Server1" というタグを付けることができます。 こうすると、後で追跡レコードのクエリを実行するときに、このタグの付いたすべてのレコードを簡単に見つけることができます。 + +## 注釈の追加 + 次の例に示すように、追跡クエリに注釈を追加できます。 + +``` + +    +    + + +``` + +> [!NOTE] +> これらの追跡クエリ要素は、追跡プロファイルの作成に使用できます。 追跡プロファイルは構成またはコードで作成できます。 + +## 参照 + + + [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/participants.md) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/variable.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/variable.md new file mode 100644 index 00000000000..84bc4719f3b --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/variable.md @@ -0,0 +1,82 @@ +--- +title: "<variable> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 46cc8cbc-10ec-4625-8813-3f5cd6c6afde +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <variable> +このアクティビティ クエリに関連付けられている変数のコレクションを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|name|変数の名前を指定する文字列。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/variable.md)|アクティビティ状態クエリに関連付けられている変数。| + +## 解説 + ActivityStateQuery の固有の機能の 1 つは、ワークフローの実行を追跡するときにデータを抽出する機能です。 これにより、実行後に追跡レコードにアクセスするときにコンテキストが追加されます。 [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md) 要素、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素、および [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素を使用して、ワークフロー内の任意のアクティビティから任意の変数または引数を抽出できます。次の例は、アクティビティの `Closed` 追跡レコードが生成されたときに変数と引数を抽出する、アクティビティ状態クエリを示しています。 変数と引数は、ActivityStateRecord でのみ抽出できるため、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md) を使用して追跡プロファイル内で定期受信されます。 + +``` + + +    +    + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.VariableElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.VariableElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityStateQuery](assetId:///System.Activities.Tracking.ActivityStateQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/variables.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/variables.md new file mode 100644 index 00000000000..87bc8fce63c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/variables.md @@ -0,0 +1,82 @@ +--- +title: "<variables> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: da0fd144-dda9-4613-b650-fe6325076513 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <variables> +このアクティビティ クエリに関連付けられている変数のコレクションを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/variable.md)|アクティビティ状態クエリに関連付けられている変数。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md)|親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用する構成要素を表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。| + +## 解説 + ActivityStateQuery の固有の機能の 1 つは、ワークフローの実行を追跡するときにデータを抽出する機能です。 これにより、実行後に追跡レコードにアクセスするときにコンテキストが追加されます。 [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/arguments.md) 要素、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素、および [\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md) 要素を使用して、ワークフロー内の任意のアクティビティから任意の変数または引数を抽出できます。次の例は、アクティビティの `Closed` 追跡レコードが生成されたときに変数と引数を抽出する、アクティビティ状態クエリを示しています。 変数と引数は、ActivityStateRecord でのみ抽出できるため、[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequery.md) を使用して追跡プロファイル内で定期受信されます。 + +``` + + +    +    + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.VariableElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.VariableElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.ActivityStateQuery](assetId:///System.Activities.Tracking.ActivityStateQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md new file mode 100644 index 00000000000..8bc1b130bf8 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md @@ -0,0 +1,137 @@ +--- +title: "<workflow> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 560aa9b6-9cf3-460e-b798-f87d14b1d2de +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <workflow> +**activityDefinitionId** プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。 + + ワークフロー追跡とその構成の詳細については、「[ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」と「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + +  +     +       + + + + + + + + + + + + + + + + + + + + + + + + + + + +            +              +               +             +           + +       +            +  + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|activityDefinitionId|追跡対象のワークフローのアクティビティ定義 ID を指定する文字列。| + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activityscheduledqueries.md)|親アクティビティによる実行がスケジュールされているアクティビティを追跡するために使用する、クエリのコレクションを表します。 アクティビティがスケジュールされたレコードを追跡参加要素が定期受信するには、このクエリが必要です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/activitystatequeries.md)|ワークフロー インスタンスを構成するアクティビティのライフサイクルの変化を追跡するために使用する、クエリのコレクションを表します。 たとえば、ワークフロー インスタンスの "電子メール送信" アクティビティの完了を毎回追跡することが必要な場合があります。 追跡参加要素がアクティビティ状態レコード オブジェクトを定期受信するには、このクエリが必要です。 定期受信可能な状態は ActivityStates で指定します。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/bookmarkresumptionqueries.md)|ワークフロー インスタンス内のブックマークの再開を追跡するために使用する、クエリのコレクションを表します。 追跡参加要素がブックマーク再開レコードを定期受信するには、このクエリが必要です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/cancelrequestedqueries.md)|親アクティビティが子アクティビティを取り消すための要求を追跡するのに使用する、クエリのコレクションを表します。 追跡参加要素がキャンセル要求レコード オブジェクトを定期受信するには、このクエリが必要です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/customtrackingqueries.md)|コード アクティビティで定義するイベントを追跡するために使用する、クエリのコレクションを表します。 追跡参加要素がカスタム追跡レコードを定期受信するには、このクエリが必要です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/faultpropagationqueries.md)|1 つのアクティビティ内で発生するエラーの処理を追跡するために使用する、クエリのコレクションを表します。 このイベントは、FaultHandler がエラーを処理するたびに発生します。 1 つのアクティビティ内で発生したエラーの処理は、このようなクエリを使用して追跡する必要があります。 追跡参加要素がエラー伝達レコードを定期受信するには、このクエリが必要です。| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequeries.md)|開始したイベントや完了したイベントなど、ワークフロー インスタンスのライフサイクルの変化を追跡する構成要素のコレクションを表します。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/trackingprofile.md)|追跡参加要素内でワークフロー追跡レコードのサブスクリプションを作成するための、構成セクションを表します。 追跡プロファイルには、実行時にワークフロー インスタンスの状態が変化したときに生成されるワークフロー イベントを追跡参加要素が定期受信できるようにする、追跡クエリが含まれています。 追跡プロファイル セクション内で定義されたクエリでは、サブスクリプションによって返されるイベントの種類が定義されます。| + +## 解説 + 追跡プロファイルには、実行時に特定のワークフロー インスタンスの状態が変化したときに生成されるワークフロー イベントを追跡参加要素が定期受信できるようにする、追跡クエリが含まれています。 この構成要素を使用して、追跡対象のワークフロー インスタンスが識別されます。 + + 監視の要件に応じて、ワークフローの主な状態変化の少数のセットを定期受信する、大まかなプロファイルを作成できます。 それとは反対に、結果として得られるイベントが、後で詳細な実行フローを十分に再構築できるほど豊富な、詳細なプロファイルを作成することもできます。 + + 追跡プロファイルは、特定の追跡レコードを対象としてワークフロー ランタイムを照会できる、追跡レコード用の宣言型のサブスクリプションとして構築されます。 クエリには複数の型があり、これらを使用して、追跡レコードのさまざまなクラスを定期受信できます。 クエリの完全な一覧については、このトピックの子要素の一覧と「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + + 次の例は、追跡参加要素が `Started`ワークフロー イベントおよび `Completed`ワークフロー イベントを定期受信できるようにする、構成ファイル内の追跡プロファイルを示します。 + +``` + +  +     +       + +            +             +               +               +             +           + +       +            +  + + + +``` + +## 参照 + + + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowidle.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowidle.md new file mode 100644 index 00000000000..f51f47af51d --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowidle.md @@ -0,0 +1,56 @@ +--- +title: "<workflowIdle> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: b2ef703c-3e01-4213-9d2e-c14c7dba94d2 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <workflowIdle> +アイドル状態のワークフロー インスタンスのアンロードおよび永続化のタイミングを制御するサービス動作。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|timeToPersist|ワークフローがアイドル状態から永続化されるまでの継続時間を指定する Timespan 値。 既定値は TimeSpan.MaxValue です。

継続時間は、ワークフロー インスタンスがアイドル状態になった時点から開始します。 この属性は、ワークフロー インスタンスを、可能な限り長くメモリに保持しながら、積極的に永続化しようとする場合に役立ちます。 この属性は、値が **timeToUnload** 属性の値未満の場合にのみ有効です。 それより大きい場合は無視されます。 この属性が、**timeToUnload** 属性によって指定された値より先に経過する場合は、ワークフローをアンロードする前に永続化を終了する必要があります。 これは、ワークフローを永続化するまでアンロード操作に遅延が生じる場合があることを意味します。 永続化レイヤーは一時的なエラーの再試行処理は行いますが、回復不可能なエラーに対しては例外をスローするだけです。 したがって、永続化中にスローされる例外は致命的な例外として処理され、ワークフロー インスタンスが中止されます。| +|timeToUnload|ワークフローがアイドル状態からアンロードされるまでの継続時間を指定する Timespan 値。 既定値は 1 分です。

ワークフローをアンロードすることは、同時に、永続化することも意味します。 この属性をゼロに設定した場合は、ワークフローがアイドル状態になった直後に、ワークフロー インスタンスが永続化され、アンロードされます。 この属性を TimeSpan.MaxValue に設定すると、アンロード操作を事実上、無効にします。 アイドル状態になったワークフロー インスタンスはアンロードされません。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ の \](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md)|動作の要素を指定します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancemanagement.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancemanagement.md new file mode 100644 index 00000000000..98e6c1224a3 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancemanagement.md @@ -0,0 +1,54 @@ +--- +title: "<workflowInstanceManagement> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 63ac89ba-c844-4ae2-96ae-cd752a90a109 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# <workflowInstanceManagement> +ワークフロー インスタンスの実行方法を制御する設定を指定するためのサービス動作。これには、永続する未処理の例外動作やアイドル状態の動作が含まれます。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|authorizedWindowsGroup|| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ の \](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md)|動作の要素を指定します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequeries.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequeries.md new file mode 100644 index 00000000000..4df2311168c --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequeries.md @@ -0,0 +1,92 @@ +--- +title: "<workflowInstanceQueries> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 4fe7ce85-cf9a-4dbf-a8f7-bc9b1fc2fe35 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# <workflowInstanceQueries> +開始したイベントや完了したイベントなど、ワークフロー インスタンスのライフサイクルの変化を追跡する構成要素のコレクションを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequery.md)|ワークフロー インスタンスのライフサイクルの変化を追跡するために使用されるクエリ。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflow.md)|**activityDefinitionId** プロパティによって識別される特定のワークフローのすべてのクエリを格納する構成要素。| + +## 解説 + は、次の オブジェクトの定期受信に使用されます。 + +- + +- + +- + +- + +- + +## 使用例 + 次の構成は、このクエリを使用して、`Started` インスタンス状態のワークフロー インスタンス レベルの追跡レコードを定期受信します。 + +``` + + + + + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElementCollection](assetId:///System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElementCollection?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.WorkflowInstanceQuery](assetId:///System.Activities.Tracking.WorkflowInstanceQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequery.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequery.md new file mode 100644 index 00000000000..ea677146442 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequery.md @@ -0,0 +1,92 @@ +--- +title: "<workflowInstanceQuery> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 9096e812-626a-409a-9eda-c31a60b84c55 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# <workflowInstanceQuery> +開始したイベントや完了したイベントなど、ワークフロー インスタンスのライフサイクルの変化を追跡するクエリを表します。 + + 追跡プロファイルのクエリの詳細については、「[追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + +## 構文 + +```vb + + + + + + + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + なし。 + +### 子要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/states.md)|追跡レコードが作成されたときの追跡ワークフロー インスタンスの定期受信済み状態のコレクション。| + +### 親要素 + +|要素|説明| +|--------|--------| +|[\](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowinstancequeries.md)|開始したイベントや完了したイベントなど、ワークフロー インスタンスのライフサイクルの変化を追跡する構成要素のコレクションを表します。| + +## 解説 + は、次の オブジェクトの定期受信に使用されます。 + +- + +- + +- + +- + +- + +## 使用例 + 次の構成は、このクエリを使用して、`Started` インスタンス状態のワークフロー インスタンス レベルの追跡レコードを定期受信します。 + +``` + + + + + + + + + +``` + +## 参照 + [System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement](assetId:///System.ServiceModel.Activities.Tracking.Configuration.WorkflowInstanceQueryElement?qualifyHint=False&autoUpgrade=True) + [System.Activities.Tracking.WorkflowInstanceQuery](assetId:///System.Activities.Tracking.WorkflowInstanceQuery?qualifyHint=False&autoUpgrade=True) + [ワークフロー追跡とトレース](../../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md) + [追跡プロファイル](../../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowunhandledexception.md b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowunhandledexception.md new file mode 100644 index 00000000000..14dea475d61 --- /dev/null +++ b/docs/framework/configure-apps/file-schema/windows-workflow-foundation/workflowunhandledexception.md @@ -0,0 +1,54 @@ +--- +title: "<workflowUnhandledException> | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.tgt_pltfrm: "" +ms.topic: "reference" +ms.assetid: 57adeab5-f06a-44b2-916b-0e177cf0f4a6 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# <workflowUnhandledException> +ワークフロー サービス内で未処理の例外が発生した場合のアクションを指定するためのサービス動作。 + +## 構文 + +``` + + + + + + + + + +``` + +## 属性および要素 + 以降のセクションでは、属性、子要素、および親要素について説明します。 + +### 属性 + +|属性|説明| +|--------|--------| +|アクション|未処理の例外が発生した場合のアクションを指定する文字列。 この属性は 型です。| + +### 子要素 + なし。 + +### 親要素 + +|要素|説明| +|--------|--------| +|[\ の \](../../../../../docs/framework/configure-apps/file-schema/windows-workflow-foundation/behavior-of-servicebehaviors-of-workflow.md)|動作の要素を指定します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/configure-apps/how-to-create-a-publisher-policy.md b/docs/framework/configure-apps/how-to-create-a-publisher-policy.md new file mode 100644 index 00000000000..5194f150387 --- /dev/null +++ b/docs/framework/configure-apps/how-to-create-a-publisher-policy.md @@ -0,0 +1,122 @@ +--- +title: "方法 : 発行者ポリシーを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "GAC (グローバル アセンブリ キャッシュ), 発行者ポリシー アセンブリ" + - "グローバル アセンブリ キャッシュ, 発行者ポリシー アセンブリ" + - "発行者ポリシー アセンブリ" + - "発行者ポリシー ファイル" +ms.assetid: 8046bc5d-2fa9-4277-8a5e-6dcc96c281d9 +caps.latest.revision: 15 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 15 +--- +# 方法 : 発行者ポリシーを作成する +アセンブリの販売元は、アップグレードしたアセンブリに発行者ポリシー ファイルを含めることにより、より新しいバージョンのアセンブリを使用してアプリケーションを実行するように指示できます。 発行者ポリシー ファイルには、アセンブリのリダイレクトやコード ベース設定を指定し、その書式にはアプリケーション構成ファイルと同じ書式を使用します。 発行者ポリシーファイルをコンパイルしてアセンブリを生成し、グローバル アセンブリ キャッシュに配置します。 + + 発行者ポリシーは、次の手順で作成します。 + +1. 発行者ポリシー ファイルを作成します。 + +2. 発行者ポリシー アセンブリを作成します。 + +3. その発行者ポリシー アセンブリをグローバル アセンブリ キャッシュに追加します。 + + 発行者ポリシーのスキーマについては、「[アセンブリ バージョンのリダイレクト](../../../docs/framework/configure-apps/redirect-assembly-versions.md)」を参照してください。 `myAssembly` のあるバージョンを別のバージョンにリダイレクトする発行者ポリシー ファイルを次の例に示します。 + +``` + + + + + + + + + + + +``` + + コード ベースの指定方法については、「[アセンブリの場所の指定](../../../docs/framework/configure-apps/specify-assembly-location.md)」を参照してください。 + +## 発行者ポリシー アセンブリの作成 + 発行者ポリシー アセンブリを作成するには、[アセンブリ リンカー \(Al.exe\)](../../../docs/framework/tools/al-exe-assembly-linker.md) を使用します。 + +#### ライブラリ アセンブリを作成するには + +1. コマンド プロンプトに次のコマンドを入力します。 + + **al \/link:** *publisherPolicyFile* **\/out:** *publisherPolicyAssemblyFile* **\/keyfile:** *keyPairFile* **\/platform:** *processorArchitecture* + + 上記のコマンドには、次の引数を指定します。 + + - *publisherPolicyFile* 引数には、発行者ポリシー ファイルの名前を指定します。 + + - *publisherPolicyAssemblyFile* 引数には、このコマンドを実行した結果作成される発行者ポリシー アセンブリの名前を指定します。 アセンブリ ファイルの名前は、次の書式にする必要があります。 + + **policy.** *majorNumber* **.** *minorNumber* **.** *mainAssemblyName* **.dll** + + - *keyPairFile* 引数には、キー ペアを含むファイルの名前を指定します。 アセンブリと発行者ポリシー アセンブリには、同じキー ペアで署名する必要があります。 + + - *processorArchitecture* 引数には、プロセッサ固有のアセンブリが対象とするプラットフォームを指定します。 + + > [!NOTE] + > .NET Framework Version 2.0 では、特定のプロセッサ アーキテクチャを対象にできるようになりました。 + + `policy.1.0.myAssembly` という発行者ポリシー アセンブリを発行者ポリシー ファイル `pub.config` から作成し、そのアセンブリに `sgKey.snk` ファイル内のキー ペアを使用して厳密な名前を割り当て、x86 プロセッサ アーキテクチャを対象とするアセンブリを指定するコマンドを次に示します。 + + ``` + al /link:pub.config /out:policy.1.0.myAssembly.dll /keyfile:sgKey.snk /platform:x86 + ``` + + 発行者ポリシー アセンブリは、適用先アセンブリのプロセッサ アーキテクチャと一致している必要があります。 したがって、アセンブリの 値が である場合、そのアセンブリの発行者ポリシー アセンブリは `/platform:anycpu` を使用して作成されている必要があります。 ポリシー固有のアセンブリごとに個別の発行者ポリシー アセンブリを指定する必要があります。 + + この規則により、アセンブリのプロセッサ アーキテクチャを変更する場合、バージョン番号のメジャー部分またはマイナー部分を変更して、正しいプロセッサ アーキテクチャで新しい発行者ポリシー アセンブリを指定する必要があります。 アセンブリに異なるプロセッサ アーキテクチャが指定されていると、古い発行者ポリシー アセンブリがアセンブリにサービスを提供できません。 + + また、この規則により、常にプロセッサ アーキテクチャが指定されるため、以前のバージョンの .NET Framework を使用してコンパイルしたアセンブリに対しては、バージョン 2.0 のリンカーを使用して発行者ポリシー アセンブリを作成できません。 + +## 発行者ポリシー アセンブリのグローバル アセンブリ キャッシュへの追加 + 発行者ポリシー アセンブリをグローバル アセンブリ キャッシュに追加するには、[グローバル アセンブリ キャッシュ ツール \(Gacutil.exe\)](../../../docs/framework/tools/gacutil-exe-gac-tool.md) を使用します。 + +#### 発行者ポリシー アセンブリをグローバル アセンブリ キャッシュに追加するには + +1. コマンド プロンプトに次のコマンドを入力します。 + + **gacutil \/i** *publisherPolicyAssemblyFile* + + `policy.1.0.myAssembly.dll` をグローバル アセンブリ キャッシュに追加するコマンドを次に示します。 + + ``` + gacutil /i policy.1.0.myAssembly.dll + ``` + + > [!IMPORTANT] + > 発行者ポリシー アセンブリは、元の発行者ポリシー ファイルがアセンブリと同じディレクトリにある場合を除き、グローバル アセンブリ キャッシュに追加できません。 + +## 参照 + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [アプリの構成](../../../docs/framework/configure-apps/index.md) + [Configuring .NET Framework Apps](http://msdn.microsoft.com/ja-jp/d789b592-fcb5-4e3d-8ac9-e0299adaaa42) + [ランタイム設定スキーマ](../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../docs/framework/configure-apps/file-schema/index.md) + [アセンブリ バージョンのリダイレクト](../../../docs/framework/configure-apps/redirect-assembly-versions.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/how-to-enable-and-disable-automatic-binding-redirection.md b/docs/framework/configure-apps/how-to-enable-and-disable-automatic-binding-redirection.md new file mode 100644 index 00000000000..51d954df660 --- /dev/null +++ b/docs/framework/configure-apps/how-to-enable-and-disable-automatic-binding-redirection.md @@ -0,0 +1,100 @@ +--- +title: "方法: 自動バインディング リダイレクトを有効/無効にする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" + - "VB" + - "CSharp" + - "C++" +helpviewer_keywords: + - "アセンブリ [.NET Framework], バインディングのリダイレクト" + - "side-by-side 実行, アセンブリ バインディング リダイレクト" +ms.assetid: 5fca42f3-bdce-4b81-a704-61e42c89d3ba +caps.latest.revision: 17 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 17 +--- +# 方法: 自動バインディング リダイレクトを有効/無効にする +[!INCLUDE[vs_dev12](../../../includes/vs-dev12-md.md)]以降では、[!INCLUDE[net_v451](../../../includes/net-v451-md.md)]を対象とするアプリをコンパイルするときに、アセンブリの統一をオーバーライドするために、アプリ構成ファイルにバインド リダイレクトが自動的に追加される場合があります。 アプリの構成ファイルで手動でバインド リダイレクトを指定している場合でも、アプリまたはそのコンポーネントが同じアセンブリの複数バージョンを参照している場合、バインド リダイレクトが追加されます。 自動バインド リダイレクト機能は、[!INCLUDE[net_v451](../../../includes/net-v451-md.md)] を対象とする従来のデスクトップ アプリと Web アプリに影響します。ただし、Web アプリに対する動作は若干異なります。 以前のバージョンの .NET Framework を対象とする既存のアプリがある場合は、自動バインド リダイレクトを有効にできます。また、手動で作成したバインド リダイレクトを保持する場合は、この機能を無効にできます。 + +## デスクトップ アプリでの自動バインド リダイレクトの無効化 + 自動バインド リダイレクトは、[!INCLUDE[net_v451](../../../includes/net-v451-md.md)] 以上のバージョンを対象とする従来のデスクトップ アプリで、既定で有効になっています。 バインド リダイレクトは、アプリケーションがコンパイルされ、発生する可能性のあるアセンブリの統一をオーバーライドするときに、出力構成ファイル \(app.config\) に追加されます。 ソース app.config ファイルは変更されません。 アプリのプロジェクト ファイルを変更して、この機能を無効にできます。 + +#### 自動バインド リダイレクトを無効にするには + +1. Visual Studio の**ソリューション エクスプローラー**で、プロジェクトを選択し、ショートカット メニューの **\[エクスプローラーでフォルダーを開く\]** をクリックします。 + +2. エクスプローラーで、プロジェクト ファイル \(.csproj または .vbproj\) を検索し、メモ帳で開きます。 + +3. プロジェクト ファイルで、次のプロパティ エントリを検索します。 + + `true` + +4. `true` を `false` に変更します。 + + `false` + +## 自動バインド リダイレクトの手動での有効化 + 自動バインド リダイレクトは、.NET Framework の旧バージョンを対象とする既存のアプリで有効にするか、またはリダイレクトの追加を確認するメッセージが自動的に表示されない場合に有効にできます。 新しいバージョンのフレームワークを対象としているが、リダイレクトの追加を確認するメッセージが自動的に表示されない場合は、ビルド出力でアセンブリを再マップすることが推奨されることがあります。 + +#### 自動バインド リダイレクトのプロパティを手動で追加するには + +1. Visual Studio の**ソリューション エクスプローラー**で、プロジェクトを選択し、ショートカット メニューの **\[エクスプローラーでフォルダーを開く\]** をクリックします。 + +2. エクスプローラーで、プロジェクト ファイル \(.csproj または .vbproj\) を検索し、メモ帳で開きます。 + +3. 最初の構成プロパティ グループ \(\ タグの下\) に次の要素を追加します。 + + `true` + + 要素が挿入されたプロジェクト ファイルの例を次に示します。 + + ``` + + + + + Debug + AnyCPU + {123334} + ... + true + + ... + + + ``` + +4. アプリをコンパイルします。 + +## Web アプリでの自動バインド リダイレクトの有効化 + 自動バインド リダイレクトは、Web アプリでは異なる方法で実装されます。 ソースの構成 \(web.config\) ファイルを Web アプリ用に変更する必要があるため、バインド リダイレクトは構成ファイルに自動的に追加されません。 ただし、Visual Studio によってバインドの競合が通知されるため、バインド リダイレクトを追加して競合を解決できます。 バインド リダイレクトを追加するかどうかの確認メッセージは常に表示されるため、明示的に Web アプリのこの機能を無効にする必要はありません。 + +#### web.config ファイルにバインド リダイレクトを追加するには + +1. Visual Studio で、アプリをコンパイルし、ビルドの警告を確認します。 + + ![アセンブリ参照の競合のビルド警告](../../../docs/framework/configure-apps/media/clr-assemblyrefwarning.png "CLR\_AssemblyRefWarning") + +2. アセンブリ バインドの競合がある場合、警告が表示されます。 警告をダブルクリックします \(キーボード: 警告を選択し、**Enter** キーを押します\)。 + + 自動的にソース web.config ファイルに必要なバインド リダイレクトを追加できるダイアログ ボックスが表示されます。 + + ![バインディング リダイレクトのアクセス許可ダイアログ](../../../docs/framework/configure-apps/media/clr-addbindingredirect.png "CLR\_AddBindingRedirect") + +## 参照 + [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/bindingredirect-element.md) + [アセンブリ バージョンのリダイレクト](../../../docs/framework/configure-apps/redirect-assembly-versions.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/how-to-locate-assemblies-by-using-devpath.md b/docs/framework/configure-apps/how-to-locate-assemblies-by-using-devpath.md new file mode 100644 index 00000000000..f53c99c4ee8 --- /dev/null +++ b/docs/framework/configure-apps/how-to-locate-assemblies-by-using-devpath.md @@ -0,0 +1,59 @@ +--- +title: "方法 : DEVPATH を使用してアセンブリを指定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ".NET Framework アプリケーション構成, アセンブリ" + - "app.config ファイル, アセンブリの場所" + - "アプリケーション構成ファイル, 指定 (アセンブリの場所を)" + - "アセンブリ [.NET Framework], 位置" + - "DEVPATH" + - "検索 (アセンブリを)" +ms.assetid: 44d2eadf-7eec-443c-a2ac-d601fd919e17 +caps.latest.revision: 8 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 8 +--- +# 方法 : DEVPATH を使用してアセンブリを指定する +開発者は、作成する共有アセンブリが複数のアプリケーションで正しく動作することを確認する必要があります。 開発時に、グローバル アセンブリ キャッシュにアセンブリを繰り返し配置する代わりに、アセンブリのビルド出力ディレクトリを指す DEVPATH 環境変数を作成できます。 + + たとえば、MySharedAssembly という共有アセンブリを作成していて、その出力ディレクトリが C:\\MySharedAssembly\\Debug であると仮定します。 開発者は、C:\\MySharedAssembly\\Debug を DEVPATH 変数に格納できます。 マシン構成ファイル内に [\](../../../docs/framework/configure-apps/file-schema/runtime/developmentmode-element.md) 要素を指定する必要があります。 この要素は、共通言語ランタイムに、DEVPATH を使用してアセンブリを特定するように指示します。 + + 共有アセンブリは、実行時に検出可能にする必要があります。アセンブリ参照を解決するためのプライベート ディレクトリを指定するには、「[アセンブリの場所の指定](../../../docs/framework/configure-apps/specify-assembly-location.md)」で説明されているように、構成ファイルで [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/codebase-element.md) または [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/probing-element.md) を使用します。アセンブリをアプリケーション ディレクトリのサブディレクトリに入れることもできます。 詳細については、「[ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md)」を参照してください。 + +> [!NOTE] +> これは、開発者専用の高度な機能です。 + + DEVPATH 環境変数で指定されたディレクトリでランタイムがアセンブリを検索するように指定する例を示します。 + +## 使用例 + +``` + + + + + +``` + + この設定の既定値は、false です。 + +> [!NOTE] +> この設定は、開発時にだけ使用します。 ランタイムは、DEVPATH で見つかった厳密な名前付きアセンブリのバージョンを確認しません。 単純に、最初に見つかったアセンブリを使用します。 + +## 参照 + [Configuring .NET Framework Apps](http://msdn.microsoft.com/ja-jp/d789b592-fcb5-4e3d-8ac9-e0299adaaa42) \ No newline at end of file diff --git a/docs/framework/configure-apps/index.md b/docs/framework/configure-apps/index.md new file mode 100644 index 00000000000..401e87cddb5 --- /dev/null +++ b/docs/framework/configure-apps/index.md @@ -0,0 +1,143 @@ +--- +title: "構成ファイルを使用してアプリを構成する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ".NET Framework アプリケーション構成, 構成ファイル" + - "< runtime > 要素" + - "アプリケーション構成ファイル" + - "アプリケーション構成ファイル, バージョン情報" + - "アプリケーション構成ファイル, format" + - "アプリケーション構成ファイル, マシン" + - "アプリケーション構成ファイル, セキュリティ" + - "アプリケーション [.NET Framework], 構成ファイル" + - "ASP.NET, 構成" + - "構成ファイル [.NET Framework]" + - "構成ファイル [.NET Framework], アプリケーション" + - "構成ファイル [.NET Framework], format" + - "構成ファイル [.NET Framework], マシン" + - "構成ファイル [.NET Framework], セキュリティ" + - "終了タグ" + - "ホスト, アプリケーション" + - "マシン構成ファイル" + - "セキュリティ構成ファイル" + - "開始タグ" +ms.assetid: 86bd26d3-737e-4484-9782-19b17f34cd1f +caps.latest.revision: 28 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 28 +--- +# 構成ファイルを使用してアプリを構成する方法 +.NET Framework を使用すると、開発者および管理者は、構成ファイルを使用することにより、アプリケーションの実行方法を制御し、アプリケーションの実行に柔軟性を持たせることができます。 構成ファイルは XML ファイルで、必要に応じて変更できます。 管理者は、アプリケーションからアクセスできるプロテクト リソース、アプリケーションが使用するアセンブリのバージョン、およびリモート アプリケーションやオブジェクトの配置場所を制御できます。 開発者は、構成ファイル内に設定を格納できます。これにより、設定変更のたびにアプリケーションを再コンパイルする必要がなくなります。 このセクションでは、設定できる内容と、アプリケーションを設定することが有益である理由を説明します。 + +> [!NOTE] +> マネージ コードは、 名前空間のクラスを使用して、構成ファイルから設定を読み込むことができます。設定をファイルへ書き込むことはありません。 + + ここでは、構成ファイルの構文を説明し、3 種類の構成ファイル \(マシン構成ファイル、アプリケーション構成ファイル、およびセキュリティ構成ファイル\) について情報を提供します。 + +## 構成ファイルの形式 + 構成ファイルには、構成情報を設定する論理データ構造体である要素が含まれます。 構成ファイル内では、タグを使用して、それらの要素の先頭と末尾を示します。 たとえば、`` 要素は ``*child elements*`` で構成されます。 空の要素は `` または ```` として書き込まれます。 + + XML ファイルと同様に、構成ファイル内の構文では、大文字と小文字が区別されます。 + + 構成設定は、要素の開始タグの内部に、定義済みの属性の名前と値を組み合わせて使用することで指定します。 `version` 要素に 2 つの属性 \(`href` および ``\) を指定して、ランタイムがアセンブリを検索する場所を指定する例を次に示します。詳細については、「[アセンブリの場所の指定](../../../docs/framework/configure-apps/specify-assembly-location.md)」を参照してください。 + +``` + +``` + +## マシン構成ファイル + マシン構成ファイル Machine.config には、コンピューター全体に適用する設定を含めます。 このファイルは、%*runtime install path*%\\Config ディレクトリに含まれています。 Machine.config には、マシン全体のアセンブリ バインディング、組み込みの[リモート処理チャネル](http://msdn.microsoft.com/ja-jp/6e9b60e0-9bc0-47b4-a8ef-3b78585f9a18)、および ASP.NET に関する構成設定が含まれます。 + + 構成システムは、まずマシン構成ファイル内で、[appSettings 要素](http://msdn.microsoft.com/ja-jp/0d65a3f1-c522-423d-89b6-44921b6daebb)と、開発者が定義したその他の構成セクションを調べます。 次に、アプリケーション構成ファイルを調べます。 マシン構成ファイルを管理しやすくするには、これらの設定をアプリケーション構成ファイルに配置するのが最適です。 しかし、それらの設定をマシン構成ファイル内に配置した方が、システムの保守が簡単になります。 たとえば、クライアント アプリケーションとサーバー アプリケーションの両方で使用されるサードパーティ コンポーネントがある場合、そのコンポーネントの設定を 1 か所に設まとめた方が簡単です。 この場合、同じ設定を 2 つのファイルに配置する必要がなくなるという点から、設定を格納するのに適した場所はマシン構成ファイルになります。 + +> [!NOTE] +> XCOPY を使用してアプリケーションを配置しても、マシン構成ファイル内の設定はコピーされません。 + + 共通言語ランタイムがアセンブリ バインディングに関してマシン構成ファイルを使用する方法の詳細については、「[ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md)」を参照してください。 + +## アプリケーション構成ファイル + アプリケーション構成ファイルは、アプリケーション固有の設定を含みます。 このファイルには、アセンブリ バインディング ポリシー、リモート処理オブジェクトなど、共通言語ランタイムが読み取る構成設定と、アプリケーションが読み取ることのできる設定を含めます。 + + アプリケーション構成ファイルの名前と場所は、アプリケーションのホストによって異なり、次のいずれかの場合が考えられます。 + +- 実行可能ファイルによってホストされるアプリケーション。 + + これらのアプリケーションには構成ファイルが 2 つあります。開発中に開発者によって変更されるソース構成ファイルと、アプリケーションと共に配布される出力構成ファイルです。 + + Visual Studio で開発するときは、プロジェクト ディレクトリにアプリケーションのソース構成ファイルを配置し、その **\[出力ディレクトリにコピー\]** プロパティを **\[常にコピーする\]** または **\[新しい場合はコピーする\]** に設定します。 この構成ファイルの名前は、アプリケーション名に拡張子 .config を付けた名前になります。 たとえば、myApp.exe という名前のアプリケーションは、myApp.exe.config という名前のソース構成ファイルを持ちます。 + + Visual Studio は、コンパイル済みアセンブリが格納されるディレクトリに自動的にソース構成ファイルをコピーして、アプリケーションと共に配置される出力構成ファイルを作成します。 場合によっては、Visual Studio が出力構成ファイルを変更することがあります。詳細については、「[アセンブリ バージョンのリダイレクト](../../../docs/framework/configure-apps/redirect-assembly-versions.md)」の「[アプリ レベルでのアセンブリ バージョンのリダイレクト](../../../docs/framework/configure-apps/redirect-assembly-versions.md#BKMK_Redirectingassemblyversionsattheapplevel)」を参照してください。 + +- ASP.NET によってホストされるアプリケーション。 + + ASP.NET 構成ファイルの詳細については、「[ASP.NET 構成設定](http://msdn.microsoft.com/ja-jp/116608f3-c03d-4413-9fc7-978703e18b0f)」を参照してください。 + +- Internet Explorer によってホストされるアプリケーション。 + + Internet Explorer でホストされるアプリケーションに構成ファイルが関連付けられている場合、そのファイルの場所は、`` タグ内に次の構文で指定します。 + + \ + + このタグ内の `location` は、構成ファイルの場所を示す URL です。 これにより、アプリケーション ベースが設定されます。 構成ファイルは、アプリケーションと同じ Web サイトに配置する必要があります。 + +## セキュリティ構成ファイル + セキュリティ構成ファイルには、コード グループ階層構造に関する情報と、ポリシー レベルに関連付けたアクセス許可セットを含めます。 セキュリティ ポリシーを変更するときは、ポリシーの変更によってセキュリティ構成ファイルが破損しないように、[コード アクセス セキュリティ ポリシー ツール \(Caspol.exe\)](../../../docs/framework/tools/caspol-exe-code-access-security-policy-tool.md) を使用することを強くお勧めします。 + +> [!NOTE] +> [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降では、セキュリティ構成ファイルはセキュリティ ポリシーが変更された場合にのみ存在します。 + + セキュリティ構成ファイルは次の場所にあります。 + +- エンタープライズ ポリシー構成ファイル: %*runtime\-install\-path*%\\Config\\Enterprisesec.config + +- コンピューター ポリシー構成ファイル: %*runtime\-install\-path*%\\Config\\Security.config + +- ユーザー ポリシー構成ファイル: %USERPROFILE%\\Application data\\Microsoft\\CLR security config\\v*xx.xx*\\Security.config + +## このセクションの内容 + [方法 : DEVPATH を使用してアセンブリを指定する](../../../docs/framework/configure-apps/how-to-locate-assemblies-by-using-devpath.md) + アセンブリ検索のときに DEVPATH 環境変数を使用するようにランタイムに指示する方法を説明します。 + + [アセンブリ バージョンのリダイレクト](../../../docs/framework/configure-apps/redirect-assembly-versions.md) + アセンブリの場所および使用するアセンブリ バージョンを指定する方法を説明します。 + + [アセンブリの場所の指定](../../../docs/framework/configure-apps/specify-assembly-location.md) + ランタイムがどの場所でアセンブリを検索するかを指定する方法を説明します。 + + [暗号化クラスの設定](../../../docs/framework/configure-apps/configure-cryptography-classes.md) + 暗号化クラスにアルゴリズム名を割り当てる方法と、暗号化アルゴリズムにオブジェクト ID を割り当てる方法を説明します。 + + [方法 : 発行者ポリシーを作成する](../../../docs/framework/configure-apps/how-to-create-a-publisher-policy.md) + アセンブリのリダイレクトやコード ベース設定を指定する発行者ポリシー ファイルを追加する状況や方法を説明します。 + + [構成ファイル スキーマ](../../../docs/framework/configure-apps/file-schema/index.md) + スキーマ、起動時の階層、ランタイム、ネットワーク、およびその他の種類の構成設定を説明します。 + +## 参照 + [構成ファイル スキーマ](../../../docs/framework/configure-apps/file-schema/index.md) + [アセンブリの場所の指定](../../../docs/framework/configure-apps/specify-assembly-location.md) + [アセンブリ バージョンのリダイレクト](../../../docs/framework/configure-apps/redirect-assembly-versions.md) + [構成ファイルを使用したリモート オブジェクトの登録](http://msdn.microsoft.com/ja-jp/bc503ee1-c811-4f82-9525-470343326adc) + [ASP.NET Web Site Administration](../Topic/ASP.NET%20Web%20Site%20Administration.md) + [NIB: Security Policy Management](http://msdn.microsoft.com/ja-jp/d754e05d-29dc-4d3a-a2c2-95eaaf1b82b9) + [Caspol.exe \(コード アクセス セキュリティ ポリシー ツール\)](../../../docs/framework/tools/caspol-exe-code-access-security-policy-tool.md) + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) + [リモート オブジェクト](http://msdn.microsoft.com/ja-jp/515686e6-0a8d-42f7-8188-73abede57c58) \ No newline at end of file diff --git a/docs/framework/configure-apps/map-algorithm-names-to-cryptography-classes.md b/docs/framework/configure-apps/map-algorithm-names-to-cryptography-classes.md new file mode 100644 index 00000000000..58b49b9ce5b --- /dev/null +++ b/docs/framework/configure-apps/map-algorithm-names-to-cryptography-classes.md @@ -0,0 +1,84 @@ +--- +title: "暗号化クラスへのアルゴリズム名の割り当て | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "暗号アルゴリズム" + - "暗号化, 割り当て (アルゴリズム名の)" + - "割り当て (アルゴリズム名の)" + - "名前 [.NET Framework], アルゴリズムの割り当て" +ms.assetid: 01327c69-c5e1-4ef6-b73f-0a58351f0492 +caps.latest.revision: 11 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 10 +--- +# 暗号化クラスへのアルゴリズム名の割り当て +開発者は、[!INCLUDE[winsdklong](../../../includes/winsdklong-md.md)] を使用して、次の 4 とおりの方法で暗号オブジェクトを作成できます。 + +- **new** 演算子を使用してオブジェクトを作成する。 + +- アルゴリズムの抽象クラスの **Create** メソッドを呼び出して、特定の暗号化アルゴリズムを実装するオブジェクトを作成する。 + +- [System.Security.Cryptography.CryptoConfig.CreateFromName](frlrfSystemSecurityCryptographyCryptoConfigClassCreateFromNameTopic) メソッドを呼び出して、特定の暗号化アルゴリズムを実装するオブジェクトを作成する。 + +- 暗号化アルゴリズムの抽象クラス \( など\) の **Create** メソッドを呼び出して、その種類の暗号化アルゴリズム \(対称ブロック暗号法など\) のクラスを実装するオブジェクトを作成する。 + + たとえば、開発者が、バイト セットの SHA1 ハッシュを計算すると仮定します。 名前空間には、SHA1 アルゴリズムの 2 つの実装が含まれています。1 つは純粋なマネージ実装であり、もう 1 つは CryptoAPI をラップする実装です。 開発者は、**new** 演算子を呼び出すことにより、特定の SHA1 実装 \([SHA1Managed クラス](frlrfSystemSecurityCryptographySHA1ManagedClassTopic)など\) をインスタンス化できます。 しかし、そのクラスが SHA1 ハッシュ アルゴリズムを実装していれば共通言語ランタイムがどのクラスを読み込むかは問題でない場合、開発者は [System.Security.Cryptography.SHA1.Create](frlrfSystemSecurityCryptographySHA1ClassCreateTopic) メソッドを呼び出してオブジェクトを作成できます。 このメソッドは、SHA1 ハッシュ アルゴリズムの実装を返す **System.Security.Cryptography.CryptoConfig.CreateFromName\("System.Security.Cryptography.SHA1"\)** を呼び出します。 + + 暗号構成には、既定として、.NET Framework に付属しているアルゴリズムのための短い名前が含まれているため、開発者は **System.Security.Cryptography.CryptoConfig.CreateFromName\("SHA1"\)** を呼び出すこともできます。 + + どのハッシュ アルゴリズムを使用するかは問題でない場合、開発者はハッシュ変換を実装するオブジェクトを返す [System.Security.Cryptography.HashAlgorithm.Create](frlrfSystemSecurityCryptographyHashAlgorithmClassCreateTopic) メソッドを呼び出すことができます。 + +## 構成ファイル内でのアルゴリズム名の割り当て + 既定では、ランタイムは 4 つのシナリオのいずれの場合にも、[System.Security.Cryptography.SHA1CryptoServiceProvider クラス](frlrfSystemSecurityCryptographySHA1CryptoServiceProviderClassTopic) オブジェクトを返します。 コンピューター管理者は、後の 2 つのシナリオのメソッドが返すオブジェクトの型を変更できます。 オブジェクトの型を変換するには、マシン構成ファイル \(Machine.config\) 内で、使用するクラスにアルゴリズムの表示名を割り当てる必要があります。 + + **System.Security.Cryptography.SHA1.Create**、**System.Security.CryptoConfig.CreateFromName\("SHA1"\)**、および **System.Security.Cryptography.HashAlgorithm.Create** が `MySHA1HashClass` オブジェクトを返すようにランタイムを設定する方法の例を次に示します。 + +``` + + + + + + + + + + + + + + + +``` + + [\ 要素](../../../docs/framework/configure-apps/file-schema/cryptography/cryptoclass-element.md) に属性名を指定できます。上の例では、属性 `MySHA1Hash`を指定します\)。 **\** 要素の属性の値は、共通言語ランタイム クラスを検索するために使用する文字列です。 「[完全限定型名の指定](../../../docs/framework/reflection-and-codedom/specifying-fully-qualified-type-names.md)」に指定されている要件を満たす任意の文字列を使用できます。 + + 同一のクラスに複数のアルゴリズム名を割り当てることができます。 [\ 要素](../../../docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md) は 1 個のわかりやすいアルゴリズムにクラス名を割り当てます。 **name** 属性は、**System.Security.Cryptography.CryptoConfig.CreateFromName** メソッドを呼び出すときに使用する文字列または 名前空間の抽象暗号化クラスです。 **class** 属性の値は **\** 要素内の属性の名前です。 + +> [!NOTE] +> [System.Security.Cryptography.SHA1.Create](frlrfSystemSecurityCryptographySHA1ClassCreateTopic) メソッドまたは **Security.CryptoConfig.CreateFromName\("SHA1"\)** メソッドを呼び出すことにより SHA1 アルゴリズムを取得できます。 それぞれのメソッドで保証されるのは、SHA1 アルゴリズムを実装するオブジェクトを返すことだけです。 構成ファイル内の同じクラスに、アルゴリズムのそれぞれの表示名を割り当てる必要はありません。 + + 既定の名前の一覧およびそれらの名前を割り当てるクラスについては、「[CryptoConfig クラス](frlrfSystemSecurityCryptographyCryptoConfigClassTopic)」を参照してください。 + +## 参照 + [暗号サービス](../../../docs/standard/security/cryptographic-services.md) + [暗号化クラスの設定](../../../docs/framework/configure-apps/configure-cryptography-classes.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/map-object-identifiers-to-cryptography-algorithms.md b/docs/framework/configure-apps/map-object-identifiers-to-cryptography-algorithms.md new file mode 100644 index 00000000000..0f11e8b5f64 --- /dev/null +++ b/docs/framework/configure-apps/map-object-identifiers-to-cryptography-algorithms.md @@ -0,0 +1,57 @@ +--- +title: "暗号化アルゴリズムへのオブジェクト ID の割り当て | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "暗号アルゴリズム" + - "暗号化, 割り当て (オブジェクト ID の)" + - "デジタル署名" + - "識別子, 割り当て (オブジェクト ID の)" + - "割り当て (オブジェクト ID の)" +ms.assetid: c9673f81-bf9e-47fd-bc6f-6bc1c1c4c15e +caps.latest.revision: 8 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 8 +--- +# 暗号化アルゴリズムへのオブジェクト ID の割り当て +デジタル署名は、データをあるプログラムから別のプログラムへ送信したときに、データが不正に変更されないことを保証するために使用されます。 一般に、デジタル署名は、署名の対象となるデータのハッシュに数値演算関数を適用して計算されます。 署名対象のハッシュ値をフォーマットするときに、一定のデジタル署名アルゴリズムにより、フォーマット操作の一部として ASN.1 OID \(オブジェクト ID\) が付加されます。 OID は、ハッシュの計算に使用されたアルゴリズムを識別します。 アルゴリズムにオブジェクト ID を割り当てることにより、カスタムのアルゴリズムを使用するように暗号機構を拡張できます。 新しいハッシュ アルゴリズムにオブジェクト ID を割り当てる方法を次の例で示します。 + +``` + + + + + + + + + + + + + + + +``` + + [\ 要素](../../../docs/framework/configure-apps/file-schema/cryptography/oidentry-element.md) は 2 個の属性が含まれています。 **OID** 属性は、オブジェクト ID 番号です。 **名前** 属性は [\ 要素](../../../docs/framework/configure-apps/file-schema/cryptography/nameentry-element.md)から **名前** 属性の値です。 オブジェクト ID に簡易名を割り当てるには、あらかじめ、クラスにアルゴリズム名を割り当てる必要があります。 + +## 参照 + [暗号化クラスの設定](../../../docs/framework/configure-apps/configure-cryptography-classes.md) + [暗号サービス](../../../docs/standard/security/cryptographic-services.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/media/clr-addbindingredirect.png b/docs/framework/configure-apps/media/clr-addbindingredirect.png new file mode 100644 index 00000000000..8a9624a5a6a Binary files /dev/null and b/docs/framework/configure-apps/media/clr-addbindingredirect.png differ diff --git a/docs/framework/configure-apps/media/clr-assemblyrefwarning.png b/docs/framework/configure-apps/media/clr-assemblyrefwarning.png new file mode 100644 index 00000000000..9dcf33d833d Binary files /dev/null and b/docs/framework/configure-apps/media/clr-assemblyrefwarning.png differ diff --git a/docs/framework/configure-apps/redirect-assembly-versions.md b/docs/framework/configure-apps/redirect-assembly-versions.md new file mode 100644 index 00000000000..e2d185006d0 --- /dev/null +++ b/docs/framework/configure-apps/redirect-assembly-versions.md @@ -0,0 +1,127 @@ +--- +title: "アセンブリ バージョンのリダイレクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "アプリケーションの構成 [.NET Framework]" + - "アセンブリ [.NET Framework], バインディングのリダイレクト" + - "アセンブリのバインディング, リダイレクト" + - "構成 [.NET Framework], アプリケーション" + - "リダイレクト (アセンブリ バインディングを以前のバージョンに)" +ms.assetid: 88fb1a17-6ac9-4b57-8028-193aec1f727c +caps.latest.revision: 26 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 26 +--- +# アセンブリ バージョンのリダイレクト +コンパイル時のバインド参照のリダイレクト先として、.NET Framework アセンブリ、サードパーティ製のアセンブリ、または独自のアプリのアセンブリを指定できます。 アプリで別のバージョンのアセンブリを使用するようにリダイレクトするには、発行者ポリシーを使用する、アプリ構成ファイルを使用する、コンピューター構成ファイルを使用するなど、さまざまな方法があります。 ここでは、.NET Framework でのアセンブリ バインドの動作の仕組みと、構成方法について説明します。 + + +## アセンブリの統一と既定のバインド + .NET Framework アセンブリへのバインドは、*アセンブリの統一*というプロセスによってリダイレクトされる場合があります。 .NET Framework は、1 つのバージョンの共通言語ランタイムと、型ライブラリを構成する 24 個前後の .NET Framework アセンブリで構成されています。 これらの .NET Framework アセンブリは、ランタイムによって単一のユニットとして扱われます。 既定では、アプリを起動するとき、ランタイムによって実行されるコード内の型のすべての参照が、プロセスに読み込まれたランタイムと同じバージョン番号を持つ .NET Framework アセンブリにリダイレクトされます。 このモデルで発生するリダイレクトは、ランタイムの既定の動作となります。 + + たとえば、System.XML 名前空間の型を参照するアプリケーションが、[!INCLUDE[net_v45](../../../includes/net-v45-md.md)] を使用して作成されている場合、このアプリには、ランタイム バージョン 4.5 と共に出荷された System.XML アセンブリへの静的参照が含まれます。 ここで、.NET Framework 4 と共に出荷された System.XML アセンブリを指すようにバインド参照をリダイレクトする場合は、リダイレクト情報をアプリ構成ファイルに追加します。 構成ファイルで、統一された .NET Framework アセンブリに対するバインド リダイレクトを設定すると、このアセンブリの統一が取り消されます。 + + また、使用できる複数のバージョンがある場合は、サードパーティ アセンブリのアセンブリ バインドを手動でリダイレクトすることもできます。 + + +## 発行者ポリシーを使用したアセンブリ バージョンのリダイレクト + アセンブリの販売元は、新しいアセンブリに発行者ポリシー ファイルを含めることにより、より新しいバージョンのアセンブリにアプリをリダイレクトできます。 発行者ポリシー ファイルは、グローバル アセンブリ キャッシュに配置され、アセンブリ リダイレクトの設定が格納されます。 + + アセンブリの *major*.*minor* バージョンごとに、独自の発行者ポリシー ファイルが割り当てられます。 たとえば、バージョン 2.0.2.222 から 2.0.3.000 へのリダイレクトと、バージョン 2.0.2.321 から 2.0.3.000 へのリダイレクトは、いずれもバージョン 2.0 に関連付けられているため、両方とも同じファイルに記述します。 ただし、バージョン 3.0.0.999 から 4.0.0.000 へのリダイレクトは、バージョン 3.0.999 のファイルに記述します。 .NET Framework のメジャー バージョンごとに、独自の発行者ポリシー ファイルが割り当てられます。 + + アセンブリの発行者ポリシー ファイルが存在する場合、ランタイムは、アセンブリのマニフェストとアプリ構成ファイルをチェックした後で、発行者ポリシー ファイルをチェックします。 販売元は、新しいアセンブリがリダイレクト元のアセンブリとの下位互換性を維持している場合にだけ、発行者ポリシー ファイルを使用するようにします。 + + 「[発行者ポリシーの省略](#bypass_PP)」で説明するように、アプリ構成ファイルで設定を指定することによって、アプリの発行者ポリシーを省略することができます。 + + +## アプリ レベルでのアセンブリ バージョンのリダイレクト + アプリ構成ファイルを通じてアプリのバインド動作を変更するには、いくつかの手法があります。手動でのファイルの編集、自動バインド リダイレクトの利用、発行者ポリシーの省略によるバインド動作の指定を行うことができます。 + +### 手動でのアプリ構成ファイルの編集 + 手動でアプリ構成ファイルを編集して、アセンブリの問題を解決できます。 たとえば、販売元が、アプリで使用しているアセンブリの新しいバージョンをリリースしたが、下位互換性を保証していないために、発行者ポリシーを提供しない場合でも、次のように、アプリ構成ファイルにアセンブリ バインド情報を記述することによって、アプリで新しいバージョンのアセンブリを使用するように指示できます。 + +``` + +``` + +### 自動バインド リダイレクトの利用 + [!INCLUDE[vs_dev12](../../../includes/vs-dev12-md.md)] 以降では、[!INCLUDE[net_v451](../../../includes/net-v451-md.md)] を対象とする新しいデスクトップ アプリは自動バインド リダイレクトを使用します。 これは、2 つのコンポーネントが同じ厳密な名前付きアセンブリの異なるバージョンを参照する場合、ランタイムは出力するアプリ構成ファイル \(app.config\) に新しいバージョンのアセンブリへのバインド リダイレクトを自動的に追加することを意味します。 このリダイレクトは、別の方法で発生する可能性があるアセンブリの統一をオーバーライドします。 ソース app.config ファイルは変更されません。 たとえば、アプリがアウトオブバンド .NET Framework コンポーネントを直接参照する場合に、同じコンポーネントの旧バージョンを対象とするサードパーティのライブラリを使用しているとします。 このアプリをコンパイルすると、出力されるアプリ構成ファイルは、新しいバージョンのコンポーネントへのバインド リダイレクトを含むように変更されます。 Web アプリを作成すると、バインドの競合に関するビルドの警告が表示され、ソース Web 構成ファイルに必要なバインド リダイレクトを追加するためオプションが示されます。 + + 手動でソース app.config ファイルにバインド リダイレクトを追加する場合、[!INCLUDE[vs_dev12](../../../includes/vs-dev12-md.md)] はコンパイル時に、追加されたバインド リダイレクトに基づいてアセンブリの統一を試行します。 たとえば、アセンブリの次のバインド リダイレクトを挿入するとします。 + + `` + + アプリ内の別のプロジェクトが同じアセンブリのバージョン 1.0.0.0 を参照する場合、自動バインド リダイレクトは、アプリがこのアセンブリのバージョン 2.0.0.0 で統一されるように、出力 app.config ファイルに次のエントリを追加します。 + + `` + + [!INCLUDE[vs_dev12](../../../includes/vs-dev12-md.md)] で、アプリが .NET Framework の旧バージョンを対象とする場合、自動バインド リダイレクトを有効にすることができます。 どのアセンブリについても、app.config ファイルにバインド リダイレクト情報を記述することによって、この既定の動作をオーバーライドし、バインド リダイレクト機能をオフにすることができます。 この機能をオンまたはオフにする方法については、「[方法: 自動バインディング リダイレクトを有効\/無効にする](../../../docs/framework/configure-apps/how-to-enable-and-disable-automatic-binding-redirection.md)」を参照してください。 + + +### 発行者ポリシーの省略 + アプリの構成ファイルの発行者ポリシーを必要に応じてオーバーライドできます。 たとえば、下位互換性を維持しているとされる新しいアセンブリ バージョンでも、アプリを破壊する可能性があります。 発行者ポリシーを省略する場合は、[\](../../../docs/framework/configure-apps/file-schema/runtime/publisherpolicy-element.md) 要素をアプリケーション構成ファイルの [\](../../../docs/framework/configure-apps/file-schema/runtime/dependentassembly-element.md) 要素に追加し、**apply** 属性を **no** に設定することによって、以前の **yes** の設定がすべてオーバーライドされます。 + + `` + + 発行者ポリシーを省略することにより、アプリの実行を続行できますが、必ず、問題点をアセンブリの販売元に報告してください。 アセンブリに発行者ポリシー ファイルを提供した場合、販売元はそのアセンブリが下位互換性を維持していること、およびクライアントが可能な限り新バージョンを使用できることを確認する必要があります。 + + +## コンピューター レベルでのアセンブリ バージョンのリダイレクト + コンピューター管理者が 1 台のコンピューター上のすべてのアプリで特定のアセンブリ バージョンを使用する場合も、まれにあります。 たとえば、セキュリティ ホールを修復するために、すべてのアプリで特定のアセンブリ バージョンを使用する場合があります。 コンピューターの構成ファイル内でアセンブリをリダイレクトした場合は、そのコンピューターで旧バージョンを使用しているすべてのアプリが新バージョンを使用するようになります。 コンピューター構成ファイルは、アプリ構成ファイルおよび発行者ポリシー ファイルよりも優先されます。 このファイルは、%*runtime install path*%\\Config ディレクトリに含まれています。 通常、.NET Framework は %drive%\\Windows\\Microsoft.NET\\Framework ディレクトリにインストールされます。 + + +## 構成ファイル内でのアセンブリ バインドの指定 + アプリ構成ファイル、コンピューター構成ファイル、発行者ポリシー ファイルのいずれの場合も、同じ XML 形式を使用してバインド リダイレクトを指定できます。 あるバージョンのアセンブリを別のバージョンにリダイレクトするには、[\](../../../docs/framework/configure-apps/file-schema/runtime/bindingredirect-element.md) 要素を使用します。**oldVersion** 属性では、1 つのアセンブリ バージョンまたはバージョンの範囲を指定できます。`newVersion` 属性では、1 つのバージョンを指定する必要があります。 たとえば、`` は、アセンブリ バージョン 1.1.0.0 ~ 1.2.0.0 の代わりにバージョン 2.0.0.0 を使用するようにランタイムに指示します。 + + 次のコード例は、さまざまなバインディング リダイレクトのシナリオを示しています。 この例では、`myAssembly` のバージョンの範囲に対するリダイレクトと、`mySecondAssembly` の単一のバインド リダイレクトを指定します。 この例では、発行者ポリシー ファイルによって `myThirdAssembly` のバインド リダイレクトがオーバーライドされないことも指定しています。 + + アセンブリをバインドするには、**\** タグ内の [xmlns](../../../docs/framework/configure-apps/file-schema/runtime/assemblybinding-element-for-runtime.md) 属性に対して文字列 "urn:schemas\-microsoft\-com:asm.v1" を指定する必要があります。 + +``` + +``` + +### 特定のバージョンへのアセンブリ バインドの制限 + アプリ構成ファイルの **\** 要素で [appliesTo](../../../docs/framework/configure-apps/file-schema/runtime/assemblybinding-element-for-runtime.md) 属性を使用して、アセンブリ バインドの参照を特定のバージョンの .NET Framework にリダイレクトできます。 このオプションの属性では、.NET Framework バージョン番号を使用して、適用するバージョンを指定します。**appliesTo** 属性が指定されていない場合、[\](../../../docs/framework/configure-apps/file-schema/runtime/assemblybinding-element-for-runtime.md) 要素は .NET Framework のすべてのバージョンに適用されます。 + + たとえば、.NET Framework 3.5 アセンブリのアセンブリ バインドをリダイレクトするには、アプリ構成ファイルに次の XML コードを追加します。 + +``` + +``` + + バージョンの順序でリダイレクト情報を入力する必要があります。 たとえば、.NET Framework 3.5 アセンブリのアセンブリ バインド リダイレクト情報を入力し、次に .NET Framework 4.5 アセンブリの情報を入力します。 最後に、**appliesTo** 属性を使用せず、すべてのバージョンの .NET Framework に適用される .NET Framework アセンブリ リダイレクトのアセンブリ バインディング リダイレクト情報を入力します。 リダイレクトで競合が発生した場合は、構成ファイル内で最初に一致したリダイレクト ステートメントが使用されます。 + + たとえば、ある参照を .NET Framework 3.5 のアセンブリにリダイレクトし、別の参照を .NET Framework 4 のアセンブリにリダイレクトするには、次の擬似コードに示すパターンを使用します。 + +``` + +``` + +## 参照 + [方法: 自動バインディング リダイレクトを有効\/無効にする](../../../docs/framework/configure-apps/how-to-enable-and-disable-automatic-binding-redirection.md) + [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/bindingredirect-element.md) + [アセンブリ バインディング リダイレクトのセキュリティ アクセス許可](../../../docs/framework/configure-apps/assembly-binding-redirection-security-permission.md) + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [アプリの構成](../../../docs/framework/configure-apps/index.md) + [.NET Framework アプリの構成](http://msdn.microsoft.com/ja-jp/d789b592-fcb5-4e3d-8ac9-e0299adaaa42) + [ランタイム設定スキーマ](../../../docs/framework/configure-apps/file-schema/runtime/index.md) + [構成ファイル スキーマ](../../../docs/framework/configure-apps/file-schema/index.md) + [方法 : 発行者ポリシーを作成する](../../../docs/framework/configure-apps/how-to-create-a-publisher-policy.md) \ No newline at end of file diff --git a/docs/framework/configure-apps/specify-assembly-location.md b/docs/framework/configure-apps/specify-assembly-location.md new file mode 100644 index 00000000000..e19d5a0c746 --- /dev/null +++ b/docs/framework/configure-apps/specify-assembly-location.md @@ -0,0 +1,84 @@ +--- +title: "アセンブリの場所の指定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "アプリケーションの構成 [.NET Framework]" + - "アセンブリ [.NET Framework], 指定 (場所を)" + - "構成 [.NET Framework], アプリケーション" +ms.assetid: 1cb92bd7-6bab-44cf-8fd3-36303ce84fea +caps.latest.revision: 8 +author: "mcleblanc" +ms.author: "markl" +manager: "markl" +caps.handback.revision: 8 +--- +# アセンブリの場所の指定 +アセンブリの場所は、次の 2 とおりの方法で指定できます。 + +- [\<コードベース\>](../../../docs/framework/configure-apps/file-schema/runtime/codebase-element.md) 要素を使用します。 + +- [\<プローブ\>](../../../docs/framework/configure-apps/file-schema/runtime/probing-element.md) 要素を使用します。 + + [.NET Framework 構成ツール](http://msdn.microsoft.com/ja-jp/a7106c52-68da-490e-b129-971b2c743764)を使用して、アセンブリの場所または共通言語ランタイムがアセンブリを検索する場所を指定することもできます。 + +## codeBase 要素\> \<を使用します。 + 、アセンブリ バージョンのリダイレクトする発行者ポリシー ファイルまたはマシン構成ファイルにのみ **\** 要素を使用できます。 ランタイムは使用するアセンブリ バージョンを決定するときに、バージョンを決定するファイルからコード ベース設定を適用します。 コード ベースが指定されていない場合は、通常の方法でアセンブリを検索します。 詳細については、「[ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md)」を参照してください。 + + アセンブリの場所を指定する方法の例を次に示します。 + +``` + + + + + + + + + + +``` + + **version** 属性は、厳密な名前の付いたすべてのアセンブリに対して設定する必要がありますが、厳密な名前が付いていないアセンブリについては省略してください。 **\** 要素は **href** 属性が必要です。 **\** 要素のバージョンの範囲は指定できません。 + +> [!NOTE] +> 厳密な名前の付いていないアセンブリに対してコード ベースのヒントを提供する場合は、そのヒントでアセンブリ ベースまたはアプリケーション ベース ディレクトリのサブディレクトリを示す必要があります。 + +## プローブ \<\> 要素を使用します。 + ランタイムは、コード ベースを持たないアセンブリの場所を検索して特定します。 検索の詳細については、「[ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md)」を参照してください。 + + アプリケーション構成ファイルでランタイムが検索するサブディレクトリを指定するために [\<プローブ\>](../../../docs/framework/configure-apps/file-schema/runtime/probing-element.md) 要素を使用して、アセンブリの場所を特定するとき。 ランタイムが検索するディレクトリを指定する方法の例を次に示します。 + +``` + + + + + + + +``` + + **privatePath** 属性に、ランタイムがアセンブリを検索する必要があるディレクトリを指定します。 アプリケーションが C:\\Program Files\\MyApp に配置されている場合、ランタイムは、コード ベースが指定されていないアセンブリを C:\\Program Files\\MyApp\\Bin、C:\\Program Files\\MyApp\\Bin2\\Subbin、および C:\\Program Files\\MyApp\\Bin3 内で検索します。 **privatePath** に指定するディレクトリは、アプリケーション ベース ディレクトリのサブディレクトリであることが必要です。 + +## 参照 + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) + [アセンブリを使用したプログラミング](../../../docs/framework/app-domains/programming-with-assemblies.md) + [ランタイムがアセンブリを検索する方法](../../../docs/framework/deployment/how-the-runtime-locates-assemblies.md) + [Configuring .NET Framework Apps](http://msdn.microsoft.com/ja-jp/d789b592-fcb5-4e3d-8ac9-e0299adaaa42) \ No newline at end of file diff --git a/docs/framework/data/TOC.md b/docs/framework/data/TOC.md new file mode 100644 index 00000000000..304e646f445 --- /dev/null +++ b/docs/framework/data/TOC.md @@ -0,0 +1 @@ +# [データとモデリング](index.md) diff --git a/docs/framework/data/adonet/TOC.md b/docs/framework/data/adonet/TOC.md new file mode 100644 index 00000000000..0c08f461ff2 --- /dev/null +++ b/docs/framework/data/adonet/TOC.md @@ -0,0 +1,156 @@ +# [アソシエーション セット End](association-set-end.md) +# [ADO.NET のアーキテクチャ](ado-net-architecture.md) +# [SQL Server データ型のマッピング](sql-server-data-type-mappings.md) +# [Set Operators](method-based-query-syntax-examples-set-operators.md) +# [クエリ結果のページング](paging-through-a-query-result.md) +# [Query Expression Examples](query-expression-examples-linq-to-dataset.md) +# [Join Operators](query-expression-syntax-examples-join-operators.md) +# [Debugging LINQ to DataSet Queries](debugging-linq-to-dataset-queries.md) +# [トランザクションと同時実行](transactions-and-concurrency.md) +# [コマンドを使用したデータ変更](using-commands-to-modify-data.md) +# [DataAdapter パラメーター](dataadapter-parameters.md) +# [Element Operators](method-based-query-syntax-examples-element-operators.md) +# [ADO.NET の概要](ado-net-overview.md) +# [Oracle データ型のマッピング](oracle-data-type-mappings.md) +# [Downloading Sample Databases](downloading-sample-databases-linq-to-dataset.md) +# [DataAdapter によるバッチ操作の実行](performing-batch-operations-using-dataadapters.md) +# [カタログ操作の実行](performing-catalog-operations.md) +# [オプティミスティック同時実行制御](optimistic-concurrency.md) +# [DbDataAdapter を使用したデータの変更](modifying-data-with-a-dbdataadapter.md) +# [LINQ to DataSet Examples](linq-to-dataset-examples.md) +# [LINQ to DataSet Overview](linq-to-dataset-overview.md) +# [ID 値および Autonumber 値の取得](retrieving-identity-or-autonumber-values.md) +# [ADO.NET でのデータ型のマッピング](data-type-mappings-in-ado-net.md) +# [Method-Based Query Examples](method-based-query-examples-linq-to-dataset.md) +# [Oracle データ型のマッピング](oracle-data-type-mappings-2.md) +# [DataAdapter によるデータ ソースの更新](updating-data-sources-with-dataadapters.md) +# [ナビゲーション プロパティ](navigation-property.md) +# [DataAdapter DataTable と DataColumn のマップ](dataadapter-datatable-and-datacolumn-mappings.md) +# [DataAdapter と DataReader](dataadapters-and-datareaders.md) +# [Element Operators](query-expression-syntax-examples-element-operators.md) +# [ADO.NET テクノロジのオプションとガイドライン](ado-net-technology-options-and-guidelines.md) +# [Oracle REF CURSOR](oracle-ref-cursors.md) +# [SQL Server スキーマ コレクション](sql-server-schema-collections.md) +# [Entity Data Model キーの概念](entity-data-model-key-concepts.md) +# [SqlClient ストリーミング サポート](sqlclient-streaming-support.md) +# [Oracle 分散トランザクション](oracle-distributed-transactions.md) +# [REF CURSOR の例](ref-cursor-examples.md) +# [Queries in LINQ to DataSet](queries-in-linq-to-dataset.md) +# [ADO.NET のコード例](ado-net-code-examples.md) +# [LINQ と ADO.NET](linq-and-ado-net.md) +# [Partitioning](query-expression-syntax-examples-partitioning.md) +# [Querying DataSets](querying-datasets-linq-to-dataset.md) +# [Querying the DataRowView Collection in a DataView](querying-the-datarowview-collection-in-a-dataview.md) +# [コマンドとパラメーター](commands-and-parameters.md) +# [ファクトリ モデルの概要](factory-model-overview.md) +# [SQL Server と System.Transactions の統合](system-transactions-integration-with-sql-server.md) +# [データベースからの単一の値の取得](obtaining-a-single-value-from-a-database.md) +# [How to: Implement CopyToDataTable Where the Generic Type T Is Not a DataRow](implement-copytodatatable-where-type-not-a-datarow.md) +# [Querying Typed DataSets](querying-typed-datasets.md) +# [モデル宣言関数](model-declared-function.md) +# [プロパティ](property.md) +# [エンティティ型](entity-type.md) +# [ADO.NET でのデータ トレース](data-tracing.md) +# [アソシエーション セット](association-set.md) +# [Partitioning](method-based-query-syntax-examples-partitioning-linq.md) +# [Loading Data Into a DataSet](loading-data-into-a-dataset.md) +# [DbProviderFactory の取得](obtaining-a-dbproviderfactory.md) +# [Conversion Operators](method-based-query-syntax-examples-conversion-operators.md) +# [ADO.NET での side-by-side 実行](side-by-side-execution.md) +# [データ ソースへの接続](connecting-to-a-data-source.md) +# [1 つまたは複数の REF CURSOR を使用した DataSet の値の設定](filling-a-dataset-using-one-or-more-ref-cursors.md) +# [Entity Data Model: 名前空間](entity-data-model-namespaces.md) +# [DataReader によるデータの取得](retrieving-data-using-a-datareader.md) +# [Programming Guide](programming-guide-linq-to-dataset.md) +# [Getting Started](getting-started-linq-to-dataset.md) +# [接続プール](connection-pooling.md) +# [コード アクセス セキュリティと ADO.NET](code-access-security.md) +# [ファセット](facet.md) +# [DataView Performance](dataview-performance.md) +# [Comparing DataRows](comparing-datarows-linq-to-dataset.md) +# [DataSet-Specific Operator Examples](dataset-specific-operator-examples-linq-to-dataset.md) +# [Ordering](method-based-query-syntax-examples-ordering-linq-to-dataset.md) +# [Oracle および ADO.NET](oracle-and-adonet.md) +# [モデル定義関数](model-defined-function.md) +# [ローカル トランザクション](local-transactions.md) +# [Oracle スキーマ コレクション](oracle-schema-collections.md) +# [Sorting with DataView](sorting-with-dataview-linq-to-dataset.md) +# [Aggregate Operators](query-expression-syntax-examples-aggregate-operators.md) +# [非同期プログラミング](asynchronous-programming.md) +# [接続文字列ビルダー](connection-string-builders.md) +# [ADO.NET データセット](ado-net-datasets.md) +# [OracleDataReader の REF CURSOR パラメーター](ref-cursor-parameters-in-an-oracledatareader.md) +# [SQL Server の接続プール (ADO.NET)](sql-server-connection-pooling.md) +# [ストアド プロシージャでのデータの変更](modifying-data-with-stored-procedures.md) +# [GetSchema およびスキーマ コレクション](getschema-and-schema-collections.md) +# [データベース スキーマ情報の取得](retrieving-database-schema-information.md) +# [Entity Data Model: プリミティブ データ型](entity-data-model-primitive-data-types.md) +# [Creating a DataView Object](creating-a-dataview-object-linq-to-dataset.md) +# [接続文字列](connection-strings.md) +# [LINQ to DataSet](linq-to-dataset.md) +# [スキーマの制限](schema-restrictions.md) +# [浮動小数点数](floating-point-numbers.md) +# [ADO.NET でのデータの取得および変更](retrieving-and-modifying-data.md) +# [分散トランザクション](distributed-transactions.md) +# [CommandBuilder でのコマンドの生成](generating-commands-with-commandbuilders.md) +# [Cross-Table Queries](cross-table-queries-linq-to-dataset.md) +# [Ordering](query-expression-syntax-examples-ordering-linq-to-dataset.md) +# [複合型](complex-type.md) +# [OLE DB スキーマ コレクション](ole-db-schema-collections.md) +# [安全なクライアント アプリケーション](secure-client-applications.md) +# [Security](security-linq-to-dataset.md) +# [Aggregate Operators](method-based-query-syntax-examples-aggregate-operators.md) +# [ADO.NET](index.md) +# [接続イベント](connection-events.md) +# [エンティティ セット](entity-set.md) +# [DbConnection、DbCommand、および DbException](dbconnection-dbcommand-and-dbexception.md) +# [バイナリ データの取得](retrieving-binary-data.md) +# [Filtering with DataView](filtering-with-dataview-linq-to-dataset.md) +# [データ ソースのデータの更新](updating-data-in-a-data-source.md) +# [パラメーターおよびパラメーター データ型の構成](configuring-parameters-and-parameter-data-types.md) +# [共通のスキーマ コレクション](common-schema-collections.md) +# [Join](method-based-query-syntax-examples-join-linq-to-dataset.md) +# [How to: Create a LINQ to DataSet Project In Visual Studio](how-to-create-a-linq-to-dataset-project-in-vs.md) +# [Projection](query-expression-syntax-examples-projection-linq-to-dataset.md) +# [安全なデータ アクセス](secure-data-access.md) +# [プライバシーとデータ セキュリティ](privacy-and-data-security.md) +# [ODBC データ型のマッピング](odbc-data-type-mappings.md) +# [Entity Data Model: 継承](entity-data-model-inheritance.md) +# [コマンドの実行](executing-a-command.md) +# [DataAdapter からの DataSet の読み込み](populating-a-dataset-from-a-dataadapter.md) +# [参照整合性制約](referential-integrity-constraint.md) +# [ADO.NET の新機能](whats-new.md) +# [接続の確立](establishing-the-connection.md) +# [接続文字列と構成ファイル](connection-strings-and-configuration-files.md) +# [OracleDataReader を使用した複数の REF CURSOR からのデータの取得](retrieving-data-from-multiple-ref-cursors.md) +# [Oracle BFILE](oracle-bfiles.md) +# [アソシエーション End の多重度](association-end-multiplicity.md) +# [セキュリティの概要 ](security-overview.md) +# [Data Binding and LINQ to DataSet](data-binding-and-linq-to-dataset.md) +# [DataSet への既存の制約の追加](adding-existing-constraints-to-a-dataset.md) +# [Entity Data Model](entity-data-model.md) +# [アソシエーション End](association-end.md) +# [OLE DB、ODBC、および Oracle 接続プール](ole-db-odbc-and-oracle-connection-pooling.md) +# [How to: Bind a DataView Object to a Windows Forms DataGridView Control](how-to-bind-a-dataview-object-to-a-winforms-datagridview-control.md) +# [DbProviderFactories](dbproviderfactories.md) +# [Oracle シーケンス](oracle-sequences.md) +# [Oracle LOB](oracle-lobs.md) +# [アソシエーション型](association-type.md) +# [外部キーのプロパティ](foreign-key-property.md) +# [Restriction](query-expression-syntax-examples-restriction-linq-to-dataset.md) +# [ODBC スキーマ コレクション](odbc-schema-collections.md) +# [Creating a DataTable From a Query](creating-a-datatable-from-a-query-linq-to-dataset.md) +# [Generic Field and SetField Methods](generic-field-and-setfield-methods-linq-to-dataset.md) +# [OracleType](oracletypes.md) +# [エンティティ コンテナー](entity-container.md) +# [接続情報の保護](protecting-connection-information.md) +# [DataAdapter のイベント処理](handling-dataadapter-events.md) +# [Projection](method-based-query-syntax-examples-projection.md) +# [エンティティ キー](entity-key.md) +# [Single-Table Queries](single-table-queries-linq-to-dataset.md) +# [ADO.NET でのパフォーマンス カウンター](performance-counters.md) +# [接続文字列の構文](connection-string-syntax.md) +# [システム要件](system-requirements-for-the-dotnet-data-provider-for-oracle.md) +# [OLE DB データ型のマッピング](ole-db-data-type-mappings.md) +# [.NET Framework データ プロバイダー](data-providers.md) +# [ADO.NET アプリケーションのセキュリティ保護](securing-ado-net-applications.md) diff --git a/docs/framework/data/adonet/adding-existing-constraints-to-a-dataset.md b/docs/framework/data/adonet/adding-existing-constraints-to-a-dataset.md new file mode 100644 index 00000000000..325267aaf9d --- /dev/null +++ b/docs/framework/data/adonet/adding-existing-constraints-to-a-dataset.md @@ -0,0 +1,71 @@ +--- +title: "DataSet への既存の制約の追加 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 307d2809-208b-4cf8-b6a9-5d16f15fc16c +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSet への既存の制約の追加 +**DataAdapter** の **Fill** メソッドは、 にデータ ソースからのテーブルの列および行だけを格納します。制約は一般にデータ ソースで設定されますが、既定では **Fill** メソッドは **DataSet** にスキーマ情報を追加しません。 データ ソースからの既存の主キー制約情報を **DataSet** に設定するには、**DataAdapter** の **FillSchema** メソッドを呼び出すか、または **Fill** を呼び出す前に **DataAdapter** の **MissingSchemaAction** プロパティを **AddWithKey** に設定します。 これにより、データ ソースの主キー制約が **DataSet** の主キー制約に反映されます。 外部キー制約情報はインクルードされないため、「[DataTable の制約](../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-constraints.md)」で示すように明示的に作成する必要があります。 + + **DataSet** 内にデータを格納する前にスキーマ情報を追加すると、主キー制約が **DataSet** 内の オブジェクトにインクルードされます。 その結果、**DataSet** に対して格納を行う追加の呼び出しを行ったとき、その主キー列情報を使用してデータ ソースから得られた新しい行と各 **DataTable** の現在の行を一致させ、各テーブルの現在のデータをデータ ソースのデータで上書きします。 スキーマ情報がないと、**DataSet** にデータ ソースからの新しい行が付け加えられ、重複行が発生します。 + +> [!NOTE] +> データ ソースの列を自動インクリメント列として指定した場合は、**FillSchema** メソッド \(**MissingSchemaAction** を **AddWithKey** に設定した **Fill** メソッド\) が、**AutoIncrement** プロパティを `true` に設定した **DataColumn** を作成します。 ただし、**AutoIncrementStep** 値と **AutoIncrementSeed** 値は明示的に設定する必要があります。 自動インクリメント列の詳細については、「[AutoIncrement 列の作成](../../../../docs/framework/data/adonet/dataset-datatable-dataview/creating-autoincrement-columns.md)」を参照してください。 + + **FillSchema** の使用や **MissingSchemaAction** の設定を **AddWithKey** にする場合、データ ソースで主キー列情報を確認するための追加の処理が必要になります。 この追加の処理によりパフォーマンスが低下する場合があります。 デザイン時に主キー情報がわかっている場合は、最適のパフォーマンスを得るために主キー列 \(複数の場合もある\) を明示的に指定することをお勧めします。 テーブルに関する主キー情報を明示的に設定する方法については、「[主キーの定義](../../../../docs/framework/data/adonet/dataset-datatable-dataview/defining-primary-keys.md)」を参照してください。 + + **FillSchema** を使用して **DataSet** にスキーマ情報を追加する方法を次のコード サンプルに示します。 + +```vb +Dim custDataSet As DataSet = New DataSet() + +custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers") +custAdapter.Fill(custDataSet, "Customers") +``` + +```csharp +DataSet custDataSet = new DataSet(); + +custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers"); +custAdapter.Fill(custDataSet, "Customers"); +``` + + **Fill** メソッドの **MissingSchemaAction.AddWithKey** プロパティを使用してスキーマ情報を **DataSet** に追加する方法を次のコード サンプルに示します。 + +```vb +Dim custDataSet As DataSet = New DataSet() + +custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey +custAdapter.Fill(custDataSet, "Customers") +``` + +```csharp +DataSet custDataSet = new DataSet(); + +custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; +custAdapter.Fill(custDataSet, "Customers"); +``` + +## 複数の結果セットの処理 + **DataAdapter** は、**SelectCommand** から返された複数の結果セットを検出すると **DataSet** に複数のテーブルを作成します。 これらのテーブルには、0 から始まるインクリメンタル既定名 **Table** *N* が割り当てられます。したがって "Table0" ではなく、**Table** から始まります。 テーブル名が **FillSchema** メソッドに引数として渡されると、0 からから始まるインクリメンタル名 **TableName** *N* が割り当てられます。ここでは、"TableName0" ではなく **TableName** から始まります。 + +> [!NOTE] +> **OleDbDataAdapter** オブジェクトの **FillSchema** メソッドが複数の結果セットを返すコマンドとして呼び出された場合は、最初の結果セットのスキーマ情報が返されます。 **OleDbDataAdapter** を使用して複数の結果セットのスキーマ情報を返すときは、**Fill** メソッドを呼び出すときに **AddWithKey** に設定した **MissingSchemaAction** を指定してスキーマ情報を取得することをお勧めします。 + +## 参照 + [DataAdapter と DataReader](../../../../docs/framework/data/adonet/dataadapters-and-datareaders.md) + [DataSets、DataTables、および DataViews](../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET でのデータの取得および変更](../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/ado-net-architecture.md b/docs/framework/data/adonet/ado-net-architecture.md new file mode 100644 index 00000000000..4154e99db9d --- /dev/null +++ b/docs/framework/data/adonet/ado-net-architecture.md @@ -0,0 +1,68 @@ +--- +title: "ADO.NET のアーキテクチャ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fcd45b99-ae8f-45ab-8b97-d887beda734e +caps.latest.revision: 7 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 6 +--- +# ADO.NET のアーキテクチャ +従来のデータ処理は、主に接続をベースとした 2 層モデルに基づいていました。 近年、データ処理では多層アーキテクチャの採用が増えてきており、アプリケーションのスケーラビリティを高める非接続型アプローチが主流になりつつあります。 + +## ADO.NET のコンポーネント + データのアクセスと操作を実行する、[!INCLUDE[ado_orcas_long](../../../../includes/ado-orcas-long-md.md)] の 2 つの主要コンポーネントが、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーと です。 + +### .NET Framework データ プロバイダー + .NET Framework データ プロバイダーは、データの操作と、データに対する高速かつ前方参照専用、読み込み専用のアクセスを実行することを明確な目標としてデザインされたコンポーネントです。 `Connection` オブジェクトはデータ ソースへの接続を実現します。 `Command` オブジェクトによりデータベース コマンドにアクセスし、データの取得、データの修正、ストアド プロシージャの実行、およびパラメーター情報の送信または取得を実行できます。 `DataReader` は、データ ソースからのパフォーマンスの高いデータ ストリームを実現します。 最後に、`DataAdapter` は `DataSet` オブジェクトとデータ ソース間のブリッジとして機能します。 `DataAdapter` では `Command` オブジェクトを使用してデータ ソースに対して SQL コマンドを実行して、`DataSet` にデータを読み込むと同時に、`DataSet` のデータに加えられた変更をデータ ソースと調整します。 詳細については、「[.NET Framework データ プロバイダー](../../../../docs/framework/data/adonet/data-providers.md)」および「[ADO.NET でのデータの取得および変更](../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md)」を参照してください。 + +### DataSet + ADO.NET `DataSet` は、どのデータ ソースにも依存しないデータ アクセスを行うことを目的としています。 したがって、複数の異なるデータ ソースと併用したり、XML データと併用したり、アプリケーションにとってローカルなデータを管理するために使用したりできます。 `DataSet` には、1 つ以上の オブジェクトのコレクションが含まれます。このオブジェクトは、データの行と列に加え、主キー、外部キー、制約、および `DataTable` オブジェクトのリレーション情報で構成されます。 詳細については、「[DataSets、DataTables、および DataViews](../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md)」を参照してください。 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーと `DataSet` のリレーションシップを次の図に示します。 + + ![ADO.Net グラフィック](../../../../docs/framework/data/adonet/media/ado-1-bpuedev11.png "ado\_1\_bpuedev11") +ADO.NET のアーキテクチャ + +### DataReader または DataSet の選択 + アプリケーションで `DataReader` \(「[DataReader によるデータの取得](../../../../docs/framework/data/adonet/retrieving-data-using-a-datareader.md)」を参照\) または `DataSet` \(「[DataSets、DataTables、および DataViews](../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md)」を参照\) を使用する必要があるかどうかを判断するには、アプリケーションで必要な機能の種類を検討する必要があります。 以下を実行する場合は `DataSet` を使用します。 + +- アプリケーションでデータをローカルにキャッシュすると、そのデータを操作できます。 クエリの実行結果を読み取るだけで良い場合は、`DataReader` の使用をお勧めします。 + +- 層間で、または XML Web サービスからデータをリモート処理する場合。 + +- Windows フォーム コントロールとの連結、または複数ソースに属するデータの組み合わせや関連付けなど、データと動的に対話する場合。 + +- データ ソースとの接続を開かずにデータに対する広範な処理を実行する場合。他のクライアントが使用できるように、接続が解放されます。 + + `DataSet` の機能が必要ない場合は、`DataReader` を使用して前方参照専用、読み取り専用の方法でデータを返すことにより、アプリケーションのパフォーマンスを向上させることができます。 `DataAdapter` は `DataReader` を使用して `DataSet` の内容を入力しますが \(「[DataAdapter からの DataSet の読み込み](../../../../docs/framework/data/adonet/populating-a-dataset-from-a-dataadapter.md)」を参照\)、`DataReader` を使用することでパフォーマンスを向上させることができます。これは、`DataSet` が消費するメモリが節約され、さらに `DataSet` の内容の作成と入力に必要な処理が不要になるためです。 + +## LINQ to DataSet + LINQ to DataSet はクエリ機能を備え、DataSet オブジェクトでキャッシュされたデータに対するコンパイル時の型チェックを行います。 これを使用すると、C\# や Visual Basic などのいずれかの .NET Framework 開発言語でクエリを記述できます。 詳細については、「[LINQ to DataSet](../../../../docs/framework/data/adonet/linq-to-dataset.md)」を参照してください。 + +## LINQ to SQL + LINQ to SQL では、リレーショナル データベースのデータ構造と対応付けられたオブジェクト モデルに対し、中間概念モデルを使用することなくクエリを実行できます。 それぞれのテーブルは独立したクラスで表現され、オブジェクト モデルとリレーショナル データベース スキーマとが緊密に結び付けられます。 LINQ to SQL では、オブジェクト モデルの統合言語クエリが Transact\-SQL に変換され、データベースに送信されて実行されます。 データベースから結果が返されると、LINQ to SQL によって、その結果が再びオブジェクトへと変換されます。 詳細については、「[LINQ to SQL](../../../../docs/framework/data/adonet/sql/linq/index.md)」を参照してください。 + +## ADO.NET Entity Framework + ADO.NET Entity Framework は、開発者がリレーショナル ストレージ スキーマに対して直接プログラムを作成するのではなく、概念アプリケーション モデルに対してプログラムを作成して、データ アクセス アプリケーションを作成できるように設計されています。 その目的は、データ指向アプリケーションに必要なコードの量と保守作業の量を減らすことです。 詳細については、「[ADO.NET Entity Framework](../../../../docs/framework/data/adonet/ef/index.md)」を参照してください。 + +## WCF Data Services + [!INCLUDE[ssAstoria](../../../../includes/ssastoria-md.md)] は、Web またはイントラネットにデータ サービスを展開するために使用されます。 データは、エンティティ データ モデルの仕様に従ってエンティティおよびリレーションシップとして構成されます。 このモデルで展開されるデータは、標準 HTTP プロトコルによってアドレス指定可能です。 詳細については、「[WCF Data Services 4.5](../../../../docs/framework/data/wcf/index.md)」を参照してください。 + +## XML と ADO.NET + [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] では XML の機能を活用して、データに対する非接続型アクセス機能を実現します。 [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] は [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の XML クラスと密接に連携するように設計されています。これらはいずれも同じアーキテクチャに属するコンポーネントです。 + + [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] と、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の XML クラスは、`DataSet` オブジェクトに集約されています。 `DataSet` に、XML ソース \(ファイルまたは XML ストリーム\) に含まれるデータを入力できます。 `DataSet` は、XML スキーマ定義言語 \(XSD\) スキーマを含む、W3C \(World Wide Web Consortium\) 準拠の XML として作成できます。これには `DataSet` 内のデータのソースは関係ありません。 `DataSet` のネイティブのシリアル化形式は XML であることから、層間でデータを移動するための媒体として優れており、XML Web サービスとの間でデータとスキーマ コンテキストをリモート処理する場合には `DataSet` が最適な選択となります。 詳細については、「[XML ドキュメントと XML データ](../../../../docs/standard/data/xml/index.md)」を参照してください。 + +## 参照 + [ADO.NET の概要](../../../../docs/framework/data/adonet/ado-net-overview.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/ado-net-code-examples.md b/docs/framework/data/adonet/ado-net-code-examples.md new file mode 100644 index 00000000000..8631a572a65 --- /dev/null +++ b/docs/framework/data/adonet/ado-net-code-examples.md @@ -0,0 +1,384 @@ +--- +title: "ADO.NET のコード例 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c119657a-9ce6-4940-91e4-ac1d5f0d9584 +caps.latest.revision: 7 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 7 +--- +# ADO.NET のコード例 +このトピックにリストされたコードは、次の ADO.NET テクノロジを使用してデータベースからデータを取得する方法を示しています。 + +- ADO.NET データ プロバイダー: + + - [SqlClient](#_SqlClient) (`System.Data.SqlClient`) + + - [OleDb](#_OleDb) (`System.Data.OleDb`) + + - [Odbc](#_Odbc) (`System.Data.Odbc`) + + - [OracleClient](#_OracleClient) (`System.Data.OracleClient`) + +- ADO.NET Entity Framework: + + - [LINQ to Entities](#_LINQ) + + - [型指定された ObjectQuery](#_QBM) + + - [EntityClient](#_EntityClient) (`System.Data.EntityClient`) + +- [LINQ to SQL](#_LINQ2SQL) + +## ADO.NET データ プロバイダーの例 + 以下に示した各コードは、ADO.NET データ プロバイダーを使用してデータベースからデータを取得する方法を示しています。 データは `DataReader` で返されます。 詳細については、次を参照してください。 [DataReader によるデータの取得](../../../../docs/framework/data/adonet/retrieving-data-using-a-datareader.md)します。 + + +### SqlClient + このコード例は、Microsoft `Northwind` の [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] サンプル データベースに接続できることを前提としています。 このコードを作成、 Products テーブルから行を選択するを追加する、 を指定したパラメーター値では、この場合は 5 よりも大きな UnitPrice を持つ行に結果を制限します。 内に開かれ、`using`によってリソースが閉じられ、破棄、コードが終了したときに、ブロックします。 コードを使用してコマンドを実行する、 、し、コンソール ウィンドウに結果を表示します。 + + [DataWorks SampleApp.SqlClient#1](../CodeSnippet/VS_Snippets_ADO.NET/DataWorks SampleApp.SqlClient#1)] + + [[Top]](#_TOP) + + +### OleDb + このコード例は、Microsoft Access の Northwind サンプル データベースに接続できることを前提としています。 このコードを作成、 Products テーブルから行を選択するを追加する、 を指定したパラメーター値では、この場合は 5 よりも大きな UnitPrice を持つ行に結果を制限します。 内に開かれ、`using`によってリソースが閉じられ、破棄、コードが終了したときに、ブロックします。 コードを使用してコマンドを実行する、 、し、コンソール ウィンドウに結果を表示します。 + + [DataWorks SampleApp.OleDb#1](../CodeSnippet/VS_Snippets_ADO.NET/DataWorks SampleApp.OleDb#1)] + + [[Top]](#_TOP) + + +### Odbc + このコード例は、Microsoft Access の Northwind サンプル データベースに接続できることを前提としています。 このコードを作成、 Products テーブルから行を選択するを追加する、 を指定したパラメーター値では、この場合は 5 よりも大きな UnitPrice を持つ行に結果を制限します。 内に開かれ、`using`によってリソースが閉じられ、破棄、コードが終了したときに、ブロックします。 使用してコマンドを実行、 、し、コンソール ウィンドウに結果を表示します。 + + + + [[Top]](#_TOP) + + +### OracleClient + このコード例では、Oracle サーバー上の DEMO.CUSTOMER との接続を前提としています。 また、System.Data.OracleClient.dll への参照を追加する必要があります。 コード内のデータを返す、 します。 + + [DataWorks SampleApp.Oracle#1](../CodeSnippet/VS_Snippets_ADO.NET/DataWorks SampleApp.Oracle#1)] + + [[Top]](#_TOP) + +## Entity Framework の例 + 以下に示した各コードは、エンティティ データ モデル (EDM) のエンティティを照会して、データ ソースからデータを取得する方法を示しています。 これらの例を使用して、 [Northwind モデル](http://msdn.microsoft.com/ja-jp/74521f8c-e974-48cb-8858-c08deff52638)します。 詳細については、次を参照してください。 [Entity Framework の概要](../../../../docs/framework/data/adonet/ef/overview.md)します。 + + +### LINQ to Entities + この例のコードは LINQ クエリを使用してデータをカテゴリ オブジェクトとして返します。これは、CategoryID および CategoryName プロパティのみを含んでいる匿名型として射影されます。 詳細については、次を参照してください。 [LINQ to Entities の概要](http://msdn.microsoft.com/ja-jp/86d87a27-c17a-45ac-b28d-72c8500333c6)します。 + +``` +Option Explicit On +Option Strict On + +Imports System +Imports System.Linq +Imports System.Data.Objects +Imports NorthwindModel + +Class LinqSample + Public Shared Sub ExecuteQuery() + Using context As NorthwindEntities = New NorthwindEntities() + Try + Dim query = From category In context.Categories _ + Select New With _ + { _ + .categoryID = category.CategoryID, _ + .categoryName = category.CategoryName _ + } + + For Each categoryInfo In query + Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _ + categoryInfo.categoryID, categoryInfo.categoryName) + Next + Catch ex As Exception + Console.WriteLine(ex.Message) + End Try + End Using + End Sub +End Class +``` + + C# の場合: + +``` +using System; +using System.Linq; +using System.Data.Objects; +using NorthwindModel; + +class LinqSample +{ + public static void ExecuteQuery() + { + using (NorthwindEntities context = new NorthwindEntities()) + { + try + { + var query = from category in context.Categories + select new + { + categoryID = category.CategoryID, + categoryName = category.CategoryName + }; + + foreach (var categoryInfo in query) + { + Console.WriteLine("\t{0}\t{1}", + categoryInfo.categoryID, categoryInfo.categoryName); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + } +} +``` + + [[Top]](#_TOP) + + +### 型指定された ObjectQuery + この例のコードを使用して、 をカテゴリ オブジェクトとしてデータを返します。 詳細については、次を参照してください。[オブジェクト クエリ](http://msdn.microsoft.com/ja-jp/0768033c-876f-471d-85d5-264884349276)します。 + +``` +Option Explicit On +Option Strict On + +Imports System +Imports System.Data.Objects +Imports NorthwindModel + +Class ObjectQuerySample + Public Shared Sub ExecuteQuery() + Using context As NorthwindEntities = New NorthwindEntities() + Dim categoryQuery As ObjectQuery(Of Categories) = context.Categories + + For Each category As Categories In _ + categoryQuery.Execute(MergeOption.AppendOnly) + Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _ + category.CategoryID, category.CategoryName) + Next + End Using + End Sub +End Class +``` + + C# の場合: + +``` +using System; +using System.Data.Objects; +using NorthwindModel; + +class ObjectQuerySample +{ + public static void ExecuteQuery() + { + using (NorthwindEntities context = new NorthwindEntities()) + { + ObjectQuery categoryQuery = context.Categories; + + foreach (Categories category in + categoryQuery.Execute(MergeOption.AppendOnly)) + { + Console.WriteLine("\t{0}\t{1}", + category.CategoryID, category.CategoryName); + } + } + } +} +``` + + [[Top]](#_TOP) + + +### EntityClient + この例のコードを使用して、 Entity SQL クエリを実行します。 このクエリは、カテゴリ エンティティ型のインスタンスを示すレコードのリストを返します。 結果セット内のデータ レコードにアクセスするために使用します。 詳細については、次を参照してください。 [Entity Framework 用の EntityClient プロバイダー](../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md)します。 + +``` +Option Explicit On +Option Strict On + +Imports System +Imports System.Data +Imports System.Data.Common +Imports System.Data.EntityClient +Imports NorthwindModel + +Class EntityClientSample + Public Shared Sub ExecuteQuery() + Dim queryString As String = _ + "SELECT c.CategoryID, c.CategoryName " & _ + "FROM NorthwindEntities.Categories AS c" + + Using conn As EntityConnection = _ + New EntityConnection("name=NorthwindEntities") + + Try + conn.Open() + Using query As EntityCommand = _ + New EntityCommand(queryString, conn) + Using rdr As DbDataReader = _ + query.ExecuteReader(CommandBehavior.SequentialAccess) + While rdr.Read() + Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _ + rdr(0), rdr(1)) + End While + End Using + End Using + Catch ex As Exception + Console.WriteLine(ex.Message) + End Try + End Using + End Sub +End Class +``` + + C# の場合: + +``` +using System; +using System.Data; +using System.Data.Common; +using System.Data.EntityClient; +using NorthwindModel; + +class EntityClientSample +{ + public static void ExecuteQuery() + { + string queryString = + @"SELECT c.CategoryID, c.CategoryName + FROM NorthwindEntities.Categories AS c"; + + using (EntityConnection conn = + new EntityConnection("name=NorthwindEntities")) + { + try + { + conn.Open(); + using (EntityCommand query = new EntityCommand(queryString, conn)) + { + using (DbDataReader rdr = + query.ExecuteReader(CommandBehavior.SequentialAccess)) + { + while (rdr.Read()) + { + Console.WriteLine("\t{0}\t{1}", rdr[0], rdr[1]); + } + } + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + } +} +``` + + [[Top]](#_TOP) + + +## LINQ to SQL + この例のコードは LINQ クエリを使用してデータをカテゴリ オブジェクトとして返します。これは、CategoryID および CategoryName プロパティのみを含んでいる匿名型として射影されます。 この例は Northwind データ コンテキストを基にしています。 詳細については、次を参照してください。[概要](../../../../docs/framework/data/adonet/sql/linq/getting-started.md)します。 + +``` +Option Explicit On +Option Strict On + +Imports System +Imports System.Collections.Generic +Imports System.Linq +Imports System.Text +Imports Northwind + +Class LinqSqlSample + Public Shared Sub ExecuteQuery() + Using db As NorthwindDataContext = New NorthwindDataContext() + Try + Dim query = From category In db.Categories _ + Select New With _ + { _ + .categoryID = category.CategoryID, _ + .categoryName = category.CategoryName _ + } + + For Each categoryInfo In query + Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _ + categoryInfo.categoryID, categoryInfo.categoryName) + Next + Catch ex As Exception + Console.WriteLine(ex.Message) + End Try + End Using + End Sub +End Class +``` + + C# の場合: + +``` +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Northwind; + + class LinqSqlSample + { + public static void ExecuteQuery() + { + using (NorthwindDataContext db = new NorthwindDataContext()) + { + try + { + var query = from category in db.Categories + select new + { + categoryID = category.CategoryID, + categoryName = category.CategoryName + }; + + foreach (var categoryInfo in query) + { + Console.WriteLine("vbTab {0} vbTab {1}", + categoryInfo.categoryID, categoryInfo.categoryName); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + } + } +``` + + [[Top]](#_TOP) + +## 関連項目 + [ADO.NET の概要](../../../../docs/framework/data/adonet/ado-net-overview.md) + [取得して、ADO.NET でのデータを変更します。](../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + [データ アプリケーションの作成](../Topic/Creating%20Data%20Applications.md) + [Entity Data Model (Entity Framework Tasks) のクエリを実行します。](http://msdn.microsoft.com/ja-jp/187f1caa-e4d3-4e31-bd99-5d5c2b329c77) + [方法: 匿名型のオブジェクトを返すクエリの実行](http://msdn.microsoft.com/ja-jp/3b264025-e911-4d73-90ce-992d2b9d189d) + [ADO.NET マネージ プロバイダーと DataSet デベロッパー センター](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/ado-net-datasets.md b/docs/framework/data/adonet/ado-net-datasets.md new file mode 100644 index 00000000000..386326c1da1 --- /dev/null +++ b/docs/framework/data/adonet/ado-net-datasets.md @@ -0,0 +1,59 @@ +--- +title: "ADO.NET データセット | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 82b641bb-6001-4512-bf1a-2830acdd92ab +caps.latest.revision: 6 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 6 +--- +# ADO.NET データセット +オブジェクトがサポートするための要に切断されると、分散データ シナリオを[!INCLUDE[vstecado](../../../../includes/vstecado-md.md)]します。 **データセット**データ ソースに関係なく、一貫性のあるリレーショナル プログラミング モデルを提供するデータのメモリ常駐型表現です。 複数の異なるデータ ソースや XML データと組み合わせて使用でき、アプリケーションにとってローカルなデータの管理にも使用できます。 **データセット**関連テーブル、制約、およびテーブル間のリレーションシップを含む、データの完全なセットを表します。 次の図は、**データセット**オブジェクト モデルです。 + + ![ADO.Net グラフィック](../../../../docs/framework/data/adonet/media/ado-1-bpuedev11.png "ado_1_bpuedev11") +DataSet オブジェクト モデル + + メソッドと内のオブジェクト、**データセット**リレーショナル データベースのモデルと一致します。 + + **データセット**永続化してその内容を XML としてとそのスキーマを XML スキーマ定義言語 (XSD) スキーマとして再読み込みできます。 詳細については、次を参照してください。[データセットを使用して XML](../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md)します。 + +## DataTableCollection + [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] **データセット**によって表現される&0; 個以上のテーブルのコレクションを含むオブジェクトです。 すべてを含む、 **DataTable**内のオブジェクト、**データセット**します。 + + A **DataTable**で定義された、 名前空間、メモリ常駐データの&1; つのテーブルを表します。 によって表される列のコレクションが含まれています、 、および制約で表される、 、共にテーブルのスキーマを定義します。 A **DataTable**もで表現される行のコレクションを格納、 テーブルにデータを格納します。 現在の状態と共に、 両方のバージョンを保持現在と元の行に格納された値に対する変更を識別します。 + +## DataView クラス + A に格納されたデータのさまざまなビューを作成することができます、 、データ連結アプリケーションでよく使用されている機能です。 使用して、 さまざまな並べ替え順序のテーブル内のデータを公開する、および行の状態やフィルター式に基づいて、データをフィルター処理できます。 詳細については、次を参照してください。 [Dataview](../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md)します。 + +## DataRelationCollection + A**データセット**リレーションシップに含まれているそのオブジェクトです。 によって表される、リレーションシップ、 オブジェクト、行に関連付けます**DataTable**の行を別**DataTable**します。 リレーションシップは、リレーショナル データベースの主キー列と外部キー列の間に存在する結合パスに似ています。 A **DataRelation**の&2; つのテーブルで一致する列を識別、**データセット**します。 + + リレーションシップは、1 つのテーブル内の別のナビゲーションを有効にする、**データセット**します。 必須の要素、 **DataRelation**はリレーションシップの名前、関連するテーブルの名前、および各テーブルに関連する列。 配列を指定して&1; つのテーブルの&1; つ以上の列を持つリレーションシップを構築できますオブジェクトをキー列として。 リレーションシップを追加すると、 、必要に応じて追加することができます、 **UniqueKeyConstraint**と**ForeignKeyConstraint**関連列の値に変更が加えられたときに整合性制約を適用します。 + + 詳細については、次を参照してください。 [Datarelation の追加](../../../../docs/framework/data/adonet/dataset-datatable-dataview/adding-datarelations.md)します。 + +## XML + 入力することができます、**データセット**から XML ストリームまたはドキュメント。 XML ストリームまたはドキュメントを使用するときに提供する、**データセット**データ、スキーマ情報、またはその両方です。 XML ストリームまたはドキュメントから提供される情報は、既存のデータまたはスキーマ情報に既に存在と組み合わせることができます、**データセット**します。 詳細については、次を参照してください。[データセットを使用して XML](../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md)します。 + +## ExtendedProperties + **データセット**、 **DataTable**、および**DataColumn**すべてである、 **ExtendedProperties**プロパティです。 **ExtendedProperties**は、 **PropertyCollection**結果セットの生成に使用された SELECT ステートメントまたはデータが生成された時刻などの独自の情報を配置することができます。 **ExtendedProperties**コレクションがのスキーマ情報と共に永続化、**データセット**します。 + +## LINQ to DataSet + [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] は、DataSet に格納された非接続型データに対する統合言語クエリ機能を提供します。 [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)]規格を使用して[!INCLUDE[vbteclinq](../../../../includes/vbteclinq-md.md)]構文を使用しているときに、コンパイル時の構文チェック、静的な型指定、および IntelliSense のサポートを提供し、 [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] IDE です。 + + 詳細については、次を参照してください。 [LINQ to DataSet](../../../../docs/framework/data/adonet/linq-to-dataset.md)します。 + +## 関連項目 + [ADO.NET の概要](../../../../docs/framework/data/adonet/ado-net-overview.md) + [Dataset、Datatable、および Dataview](../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [取得して、ADO.NET でのデータを変更します。](../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + [ADO.NET マネージ プロバイダーと DataSet デベロッパー センター](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/ado-net-overview.md b/docs/framework/data/adonet/ado-net-overview.md new file mode 100644 index 00000000000..6fd58a2660d --- /dev/null +++ b/docs/framework/data/adonet/ado-net-overview.md @@ -0,0 +1,70 @@ +--- +title: "ADO.NET の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ee3bc1d8-11db-4be4-89eb-c708cf04117d +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# ADO.NET の概要 +ADO.NET は、SQL Server や XML などのデータ ソースや、OLE DB や ODBC 経由で公開されるデータ ソースに対する一貫性を持ったアクセス機能を実現します。 データを共有する消費者向けアプリケーションで ADO.NET を使用することで、そのようなデータ ソースへの接続や、データ ソースに格納されているデータの取得、操作、更新を実行できます。 + + ADO.NET は、データ操作の中からデータ アクセス機能を分離し、個別にまたは組み合わせて使用できる、独立したコンポーネントへと分解します。 ADO.NET には、データベースとの接続、コマンドの実行、および結果の取得を行うための .NET Framework データ プロバイダーが含まれます。 この結果は直接処理され、ADO.NET オブジェクトに格納されます。この結果は、ユーザーに暫定的に公開したり、複数のソースからのデータと組み合わせたり、層間で受け渡したりするために使用されます。 `DataSet` オブジェクトを .NET Framework データ プロバイダーに関係なく使用した場合でも、アプリケーションにとってローカルなデータや XML から提供されたデータを管理できます。 + + ADO.NET クラスは System.Data.dll にあり、System.Xml.dll に含まれている XML クラスに統合されています。 データベースに接続してデータを取得した後、そのデータをコンソール ウィンドウに表示するサンプル コードについては、「[ADO.NET のコード例](../../../../docs/framework/data/adonet/ado-net-code-examples.md)」を参照してください。 + + マネージ コードを作成する開発者は、ADO.NET により、ネイティブのコンポーネント オブジェクト モデル \(COM\) 開発者が ActiveX Data Object \(ADO\) によって利用できる機能と同等の機能を利用できます。 .NET アプリケーションでのデータのアクセスには、ADO ではなく ADO.NET を使用することをお勧めします。 + + ADO.NET は、.NET Framework におけるデータ アクセスの最も直接的な方法を提供します。 基になるストレージ モデルではなく概念モデルをアプリケーションで使用できるようにするための高度な抽象化については、「[ADO.NET Entity Framework](../../../../docs/framework/data/adonet/ef/index.md)」を参照してください。 + + **プライバシーに関する声明** : System.Data.dll、System.Data.Design.dll、System.Data.OracleClient.dll、System.Data.SqlXml.dll、System.Data.Linq.dll、System.Data.SqlServerCe.dll、System.Data.DataSetExtensions.dll の各アセンブリでは、ユーザーの個人データとそれ以外のデータが区別されません。 これらのアセンブリによって、ユーザーの個人データの収集、格納、送信が実行されることはありません。 ただし、サードパーティ製のアプリケーションでこれらのアセンブリが使用され、ユーザーの個人データの収集、格納、送信が行われる可能性はあります。 + +## このセクションの内容 + [ADO.NET のアーキテクチャ](../../../../docs/framework/data/adonet/ado-net-architecture.md) + ADO.NET のアーキテクチャとコンポーネントの概要を説明します。 + + [ADO.NET テクノロジのオプションとガイドライン](../../../../docs/framework/data/adonet/ado-net-technology-options-and-guidelines.md) + エンティティ データ プラットフォームに含まれている製品とテクノロジを説明します。 + + [LINQ と ADO.NET](../../../../docs/framework/data/adonet/linq-and-ado-net.md) + ADO.NET での統合言語クエリ \(LINQ\) の実装方法を説明し、関連項目へのリンクを示します。 + + [.NET Framework データ プロバイダー](../../../../docs/framework/data/adonet/data-providers.md) + .NET Framework データ プロバイダーと、ADO.NET に同梱される .NET Framework データ プロバイダーのデザインの概要を説明します。 + + [ADO.NET の DataSet](../../../../docs/framework/data/adonet/ado-net-datasets.md) + `DataSet` のデザインとコンポーネントの概要を説明します。 + + [ADO.NET での side\-by\-side 実行](../../../../docs/framework/data/adonet/side-by-side-execution.md) + ADO.NET のバージョン間の相違と、その相違が side\-by\-side 実行とアプリケーションの互換性に及ぼす影響について説明します。 + + [ADO.NET のコード例](../../../../docs/framework/data/adonet/ado-net-code-examples.md) + ADO.NET データ プロバイダーを使用してデータを取得するコード サンプルです。 + +## 関連項目 + [ADO.NET の新機能](../../../../docs/framework/data/adonet/whats-new.md) + [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] の新機能について説明します。 + + [ADO.NET アプリケーションのセキュリティ保護](../../../../docs/framework/data/adonet/securing-ado-net-applications.md) + ADO.NET を使用する場合の安全なコーディング方法について説明します。 + + [ADO.NET でのデータ型のマッピング](../../../../docs/framework/data/adonet/data-type-mappings-in-ado-net.md) + .NET Framework データ型と .NET Framework データ プロバイダーとの間のデータ型のマッピングについて説明します。 + + [ADO.NET でのデータの取得および変更](../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + データ ソースへの接続、データの取得、データの変更の方法について説明します。 これには、`DataReaders` と `DataAdapters` が含まれます。 + +## 参照 + [ADO.NET](../../../../docs/framework/data/adonet/index.md) + [Visual Studio でのデータへのアクセス](../Topic/Accessing%20data%20in%20Visual%20Studio.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/ado-net-technology-options-and-guidelines.md b/docs/framework/data/adonet/ado-net-technology-options-and-guidelines.md new file mode 100644 index 00000000000..ecd60327df5 --- /dev/null +++ b/docs/framework/data/adonet/ado-net-technology-options-and-guidelines.md @@ -0,0 +1,52 @@ +--- +title: "ADO.NET テクノロジのオプションとガイドライン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c8577281-38e6-4ce5-b036-572039a4c3d8 +caps.latest.revision: 6 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 6 +--- +# ADO.NET テクノロジのオプションとガイドライン +ADO.NET データ プラットフォームは、概念エンティティ データ モデルに対してプログラムを作成できるようにして、開発者に必要とされるコード作成と保守作業の量を減らすための、複数のリリースにわたる戦略です。 このプラットフォームには、ADO.NET Entity Framework と関連技術が含まれています。 + +## Entity Framework + ADO.NET Entity Framework は、開発者がリレーショナル ストレージ スキーマに対して直接プログラムを作成するのではなく、概念アプリケーション モデルに対してプログラムを作成して、データ アクセス アプリケーションを作成できるように設計されています。 その目的は、データ指向アプリケーションに必要なコードの量と保守作業の量を減らすことです。 詳細については、「[ADO.NET Entity Framework](../../../../docs/framework/data/adonet/ef/index.md)」を参照してください。 + +### Entity Data Model \(EDM\) + エンティティ データ モデル \(EDM\) は、アプリケーション データをエンティティとリレーションシップの集合として定義するデザイン仕様です。 このモデルのデータは、アプリケーションの境界を越えたオブジェクト リレーショナル マッピングとデータ プログラミング機能をサポートします。 + +### オブジェクト サービス + Object Services を使用すると、プログラマが一連の共通言語ランタイム \(CLR\) クラスを介して概念モデルを操作できるようになります。 これらのクラスは、概念モデルから自動的に生成することも、概念モデルの構造を反映するように別途開発することもできます。 Object Services は、状態の管理、変更の追跡、ID の解決、リレーションシップの読み込みとナビゲート、オブジェクト変更のデータベースへの反映、Entity SQL のクエリ作成サポートなどのサービスを含む、エンティティ フレームワークに対するインフラストラクチャ サポートも提供します。 詳細については、「[Object Services Overview \(Entity Framework\)](http://msdn.microsoft.com/ja-jp/43014cf9-c9cb-4538-bfbb-197820b60038)」を参照してください。 + +### LINQ to Entities + LINQ to Entities は、LINQ の式と標準クエリ演算子を使用することにより、Entity Framework オブジェクト コンテキストに対して厳密に型指定されたクエリを作成できるようにする統合言語クエリ \(LINQ\) の実装です。 LINQ to Entities を使用すると、開発者は Microsoft SQL Server とサードパーティ データベース間の非常に柔軟なオブジェクト リレーショナル マッピングを使用して、概念モデルを操作できます。 詳細については、「[LINQ to Entities](../../../../docs/framework/data/adonet/ef/language-reference/linq-to-entities.md)」を参照してください。 + +### Entity SQL + Entity SQL は、エンティティ データ モデルを操作するように設計されたテキスト ベースのクエリ言語です。 Entity SQL は、継承、複合型、明示的リレーションシップなどの高レベルのモデル概念を使用したクエリ用のコンストラクトを含む SQL 言語の一種です。 Entity SQL は、Object Services で直接使用することもできます。 詳細については、「[Entity SQL 言語](../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-language.md)」を参照してください。 + +### EntityClient + EntityClient は、エンティティ データ モデルを操作するために使用する新しい .NET Framework データ プロバイダーです。 EntityClient は、 を返す および オブジェクトを公開するための .NET Framework データ プロバイダーのパターンに従います。 EntityClient は Entity SQL 言語と共に使用でき、ストレージ固有のデータ プロバイダーに対する柔軟なマッピングを提供します。 詳細については、「[EntityClient and Entity SQL](http://msdn.microsoft.com/ja-jp/49202ab9-ac98-4b4b-a05c-140e422bf527)」を参照してください。 + +### Entity Data Model ツール + Entity Framework には、EDM アプリケーションの構築を容易にするためのコマンド ライン ツール、ウィザード、およびデザイナーが用意されています。 EntityDataSource コントロールでは、EDM に基づくデータ バインドのシナリオがサポートされています。 EntityDataSource コントロールのプログラミング サーフェイスは、Visual Studio の他のデータ ソース コントロールに似ています。 詳細については、「[ADO.NET Entity Data Model Tools](http://msdn.microsoft.com/ja-jp/91076853-0881-421b-837a-f582f36be527)」を参照してください。 + +## LINQ to SQL + LINQ to SQL は、.NET Framework のクラスを使用して SQL Server データベースをモデル化するオブジェクト リレーショナル マッピング \(OR\/M\) の実装です。 LINQ to SQL では、LINQ を使用してデータベースのクエリを実行するだけでなく、そのデータベースのデータを更新、挿入、および削除することができます。 LINQ to SQL では、トランザクション、ビュー、およびストアド プロシージャをサポートし、データ検証ルールとビジネス ロジック ルールをデータ モデルに簡単に統合するための方法を提供します。 オブジェクト リレーショナル デザイナー \(O\/R デザイナー\) を使用して、データベース内のオブジェクトに基づくエンティティ クラスと関連付けのモデル化を実行できます。 詳細については、「[LINQ to Visual Studio での SQL ツール](../Topic/LINQ%20to%20SQL%20Tools%20in%20Visual%20Studio2.md)」を参照してください。 + +## WCF Data Services + [!INCLUDE[ssAstoria](../../../../includes/ssastoria-md.md)] は、Web またはイントラネットにデータ サービスを展開します。 データは、エンティティ データ モデルの仕様に従ってエンティティおよびリレーションシップとして構成されます。 このモデルで展開されるデータは、標準 HTTP プロトコルによってアドレス指定可能です。 詳細については、「[WCF Data Services 4.5](../../../../docs/framework/data/wcf/index.md)」を参照してください。 + +## 参照 + [ADO.NET の概要](../../../../docs/framework/data/adonet/ado-net-overview.md) + [ADO.NET の新機能](../../../../docs/framework/data/adonet/whats-new.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/association-end-multiplicity.md b/docs/framework/data/adonet/association-end-multiplicity.md new file mode 100644 index 00000000000..cfcaee90385 --- /dev/null +++ b/docs/framework/data/adonet/association-end-multiplicity.md @@ -0,0 +1,43 @@ +--- +title: "アソシエーション End の多重度 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 340926ee-aefb-4bef-92cc-453e5251fd03 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# アソシエーション End の多重度 +*アソシエーション End の多重度*は、[アソシエーション](../../../../docs/framework/data/adonet/association-type.md)の 1 つの End に存在できる[エンティティ型](../../../../docs/framework/data/adonet/entity-type.md)のインスタンス数を定義します。 + + アソシエーション End の多重度には、次のいずれかの値を指定できます。 + +- 1 \(1\): アソシエーション End に 1 つのエンティティ型のインスタンスが存在することを示します。 + +- 0 または 1 \(0..1\): アソシエーション End に 0 または 1 つのエンティティ型のインスタンスが存在することを示します。 + +- 多数 \(\*\): アソシエーション End に 0、1 つ、または複数のエンティティ型のインスタンスが存在することを示します。 + + アソシエーションは、多くの場合、そのアソシエーション End の多重度により特徴付けられます。 たとえば、アソシエーション End の多重度が 1 \(1\) と多数 \(\*\) の場合、アソシエーションは一対多のアソシエーションと呼ばれます。 次の例で、`PublishedBy` アソシエーションは一対多のアソシエーションです \(出版社が多くの書籍を出版し、書籍は 1 社の出版社により出版されます\)。 `WrittenBy` アソシエーションは多対多のアソシエーションです \(書籍の著者が複数の場合があり、著者は複数の書籍を執筆することができます\)。 + +## 例 + 下のダイアグラムは、`WrittenBy` および `PublishedBy` という 2 つのアソシエーションの概念モデルを示しています。 `PublishedBy` アソシエーションのアソシエーション End は `Book` および `Publisher` のエンティティ型です。 `Publisher` End の多重度は 1 \(1\) で、`Book` End の多重度は多数 \(\*\) です。 + + ![モデル例](../../../../docs/framework/data/adonet/media/examplemodel.gif "ExampleModel") + + ADO.NET Entity Framework では、概念スキーマ定義言語 \([CSDL](../../../../docs/framework/data/adonet/ef/language-reference/csdl-specification.md)\) と呼ばれるドメイン固有言語 \(DSL\) を使用して概念モデルを定義します。 次の CSDL は、上のダイアグラムに示された `PublishedBy` アソシエーションを定義しています。 + + [!code-xml[EDM_Example_Model#AssociationExample](../../../../samples/snippets/xml/VS_Snippets_Data/edm_example_model/xml/books.edmx#associationexample)] + +## 参照 + [Entity Data Model キーの概念](../../../../docs/framework/data/adonet/entity-data-model-key-concepts.md) + [Entity Data Model](../../../../docs/framework/data/adonet/entity-data-model.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/association-end.md b/docs/framework/data/adonet/association-end.md new file mode 100644 index 00000000000..893351f9581 --- /dev/null +++ b/docs/framework/data/adonet/association-end.md @@ -0,0 +1,46 @@ +--- +title: "アソシエーション End | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2c345213-0296-4d90-ac6d-cef179798a75 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# アソシエーション End +*アソシエーション End* は、[アソシエーション](../../../../docs/framework/data/adonet/association-type.md)の一方の End にある[エンティティ型](../../../../docs/framework/data/adonet/entity-type.md)と、アソシエーションのその End に存在できるエンティティ型のインスタンス数を特定します。 アソシエーション End はアソシエーションの一部として定義され、アソシエーションには必ず 2 つのアソシエーション End が必要です。 [ナビゲーション プロパティ](../../../../docs/framework/data/adonet/navigation-property.md)は、一方のアソシエーション End から他方のアソシエーション End へのナビゲーションを可能にします。 + + アソシエーション End の定義には、次の情報が含まれます。 + +- アソシエーションに含まれるエンティティ型の 1 つ。 \(必須\) + + > [!NOTE] + > アソシエーションでは、各アソシエーション End に同じエンティティ型を指定することができます。 これにより、自己アソシエーションが作成されます。 + +- アソシエーションの 1 つの End に存在できるエンティティ型のインスタンス数を示す[アソシエーション End の多重度](../../../../docs/framework/data/adonet/association-end-multiplicity.md)。 アソシエーション End の多重度には、1 \(1\)、ゼロか 1 \(0..1\)、または多数 \(\*\) の値を指定することができます。 + +- アソシエーション End の名前。 \(オプション\)。 + +- アソシエーション End に実行する CASCADE ON DELETE などの操作の情報。 \(オプション\)。 + +## 例 + 下のダイアグラムは、`WrittenBy` および `PublishedBy` という 2 つのアソシエーションの概念モデルを示しています。 `PublishedBy` アソシエーションのアソシエーション End は `Book` および `Publisher` のエンティティ型です。 `Publisher` End の多重度は 1 \(1\) で、`Book` End の多重度は多数 \(\*\) です。これは、出版社が多くの書籍を出版し、書籍は 1 社の出版社により出版されることを示します。 + + ![モデル例](../../../../docs/framework/data/adonet/media/examplemodel.gif "ExampleModel") + + ADO.NET Entity Framework では、概念スキーマ定義言語 \([CSDL](../../../../docs/framework/data/adonet/ef/language-reference/csdl-specification.md)\) と呼ばれるドメイン固有言語 \(DSL\) を使用して概念モデルを定義します。 次の CSDL は、上のダイアグラムに示された `PublishedBy` アソシエーションを定義します。 各アソシエーション End の型、名前、および多重度は、XML 属性 \(それぞれ `Type` 属性、`Role` 属性、および `Multiplicity` 属性\) で指定されます。 アソシエーション End に実行する操作に関するオプション情報は、XML 要素 \(`OnDelete` 要素\) に指定します。 この場合、出版社を削除すると、関連付けられたすべての書籍も削除されます。 + + [!code-xml[EDM_Example_Model#AssociationEnd](../../../../samples/snippets/xml/VS_Snippets_Data/edm_example_model/xml/books3.edmx#associationend)] + +## 参照 + [Entity Data Model キーの概念](../../../../docs/framework/data/adonet/entity-data-model-key-concepts.md) + [Entity Data Model](../../../../docs/framework/data/adonet/entity-data-model.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/association-set-end.md b/docs/framework/data/adonet/association-set-end.md new file mode 100644 index 00000000000..c1e10d4f5d3 --- /dev/null +++ b/docs/framework/data/adonet/association-set-end.md @@ -0,0 +1,43 @@ +--- +title: "アソシエーション セット End | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fe4bf1d3-047a-4a37-98c5-a66e70811346 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# アソシエーション セット End +*アソシエーション セット End* は、[アソシエーション セット](../../../../docs/framework/data/adonet/association-set.md)の End にある[エンティティ型](../../../../docs/framework/data/adonet/entity-type.md)と[エンティティ セット](../../../../docs/framework/data/adonet/entity-set.md)を識別します。 アソシエーション セット End はアソシエーション セットの一部として定義されます。アソシエーション セットには、アソシエーション セット End が 2 つ必要です。 + + アソシエーション セット End の定義には、次の情報が含まれます。 + +- アソシエーション セットに含まれるエンティティ型の 1 つ。 \(必須\) + +- アソシエーション セットに含まれるエンティティ型のエンティティ セット。 \(必須\) + +## 例 + 下のダイアグラムは、`PublishedBy` および `WrittenBy` という 2 つのアソシエーションの概念モデルを示しています。 + + ![モデル例](../../../../docs/framework/data/adonet/media/examplemodel.gif "ExampleModel") + + 次のダイアグラムには、上の概念モデルに基づくアソシエーション セット \(`PublishedBy`\) と 2 つのエンティティ セット \(`Books` および `Publishers`\) を示しています。 アソシエーション セット End は `Book` および `Publisher` エンティティ セットです。 `Books` エンティティ セット内の Bi は、実行時の `Book` エンティティ型インスタンスを表します。 同様に、Pj は、`Publishers` エンティティ セット内の `Publisher` インスタンスを表します。 BiPj は、`PublishedBy` アソシエーション セット内にある `PublishedBy` アソシエーションのインスタンスを表します。 + + ![例の設定](../../../../docs/framework/data/adonet/media/setsexample.gif "SetsExample") + + [ADO.NET Entity Framework](../../../../docs/framework/data/adonet/ef/index.md) では、概念スキーマ定義言語 \([CSDL](../../../../docs/framework/data/adonet/ef/language-reference/csdl-specification.md)\) と呼ばれる DSL を使用して概念モデルを定義します。 次の CSDL は、上のダイアグラムの各アソシエーションに対して 1 つのアソシエーション セットを持つエンティティ コンテナーを定義しています。 アソシエーション セット End はアソシエーション セット定義の一部として定義されています。 + + [!code-xml[EDM_Example_Model#EntityContainerExample](../../../../samples/snippets/xml/VS_Snippets_Data/edm_example_model/xml/books.edmx#entitycontainerexample)] + +## 参照 + [Entity Data Model キーの概念](../../../../docs/framework/data/adonet/entity-data-model-key-concepts.md) + [Entity Data Model](../../../../docs/framework/data/adonet/entity-data-model.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/association-set.md b/docs/framework/data/adonet/association-set.md new file mode 100644 index 00000000000..793986844a7 --- /dev/null +++ b/docs/framework/data/adonet/association-set.md @@ -0,0 +1,52 @@ +--- +title: "アソシエーション セット | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a65247b6-ce59-44ea-974c-14ae20a7995f +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# アソシエーション セット +*アソシエーション セット*は、同じ型の[アソシエーション](../../../../docs/framework/data/adonet/association-type.md) インスタンスの論理コンテナーです。 アソシエーション セットは、データ モデリング構造ではなく、データ構造やリレーションシップを表しません。 アソシエーション セットは、アソシエーション インスタンスをグループ化してデータ ストアにマップするための、ホスト環境またはストレージ環境 \(共通言語ランタイムや SQL Server データベースなど\) の構造を提供します。 + + アソシエーション セットは、[エンティティ セット](../../../../docs/framework/data/adonet/entity-set.md)とアソシエーション セットの論理グループである[エンティティ コンテナー](../../../../docs/framework/data/adonet/entity-container.md)内に定義します。 + + アソシエーション セットの定義には、次の情報が含まれます。 + +- アソシエーション セット名。 \(必須\) + +- インスタンスを含むアソシエーション。 \(必須\) + +- 2 つの[アソシエーション セット End](../../../../docs/framework/data/adonet/association-set-end.md)。 + +## 例 + 下のダイアグラムは、`PublishedBy` および `WrittenBy` という 2 つのアソシエーションの概念モデルを示しています。 このダイアグラムにはアソシエーション セットに関する情報が示されていませんが、次のダイアグラムはこのモデルに基づくアソシエーション セットとエンティティ セットの例を示しています。 + + ![モデル例](../../../../docs/framework/data/adonet/media/examplemodel.gif "ExampleModel") + + 次の例は、上の概念モデルに基づくアソシエーション セット\(`PublishedBy`\) と 2 つのエンティティ セット \(`Books` および `Publishers`\) を示しています。 `Books` エンティティ セット内の Bi は、実行時の `Book` エンティティ型インスタンスを表します。 同様に、Pj は、`Publishers` エンティティ セット内の `Publisher` インスタンスを表します。 BiPj は、`PublishedBy` アソシエーション セット内にある `PublishedBy` アソシエーションのインスタンスを表します。 + + ![例の設定](../../../../docs/framework/data/adonet/media/setsexample.gif "SetsExample") + + [ADO.NET Entity Framework](../../../../docs/framework/data/adonet/ef/index.md) では、概念スキーマ定義言語 \([CSDL](../../../../docs/framework/data/adonet/ef/language-reference/csdl-specification.md)\) と呼ばれるドメイン固有言語 \(DSL\) を使用して概念モデルを定義します。 次の CSDL は、上のダイアグラムの各アソシエーションに対して 1 つのアソシエーション セットを持つエンティティ コンテナーを定義しています。 各アソシエーション セットの名前とアソシエーションは、XML 属性で定義しています。 + + [!code-xml[EDM_Example_Model#EntityContainerExample](../../../../samples/snippets/xml/VS_Snippets_Data/edm_example_model/xml/books.edmx#entitycontainerexample)] + + 2 つのアソシエーション セットが同じ[アソシエーション セット End](../../../../docs/framework/data/adonet/association-set-end.md) を共有していない限り、アソシエーションごとに複数のアソシエーション セットを定義できます。 次の CSDL は、`WrittenBy` アソシエーションの 2 つのアソシエーション セットを含むエンティティ コンテナーを定義しています。 `Book` エンティティ型と `Author` エンティティ型には複数のエンティティ セットが定義され、同じアソシエーション セット End を共有するアソシエーション セットがないことに注意してください。 + + [!code-xml[EDM_Example_Model#MultipleAssociationSets](../../../../samples/snippets/xml/VS_Snippets_Data/edm_example_model/xml/books3.edmx#multipleassociationsets)] + +## 参照 + [Entity Data Model キーの概念](../../../../docs/framework/data/adonet/entity-data-model-key-concepts.md) + [Entity Data Model](../../../../docs/framework/data/adonet/entity-data-model.md) + [外部キーのプロパティ](../../../../docs/framework/data/adonet/foreign-key-property.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/association-type.md b/docs/framework/data/adonet/association-type.md new file mode 100644 index 00000000000..122bdcfac70 --- /dev/null +++ b/docs/framework/data/adonet/association-type.md @@ -0,0 +1,46 @@ +--- +title: "アソシエーション型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 26c409f6-06e8-4441-ac78-1b1076a3c005 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# アソシエーション型 +*アソシエーション型* \(アソシエーションとも呼ばれます\) は、Entity Data Model \(EDM\) でリレーションシップを記述するために不可欠な構成要素です。 概念モデルでは、アソシエーションが 2 つの[エンティティ型](../../../../docs/framework/data/adonet/entity-type.md) \(`Customer` や `Order` など\) の間のリレーションシップを表します。 アプリケーションでは、アソシエーションのインスタンスが特定のアソシエーション \(`Customer` のインスタンスと `Order` のインスタンスの間のアソシエーションなど\) を表します。 アソシエーション インスタンスは、[アソシエーション セット](../../../../docs/framework/data/adonet/association-set.md)に論理的にグループ化されます。 + + アソシエーションの定義には、次の情報が含まれます。 + +- 一意の名前 \(必須\) + +- 2 つの[アソシエーション End](../../../../docs/framework/data/adonet/association-end.md) \(リレーションシップを構成する各エンティティ型に 1 つずつ\)。 \(必須\) + + > [!NOTE] + > アソシエーションは、2 つ以上のエンティティ型のリレーションシップを表すことができません。 しかし、各アソシエーション End に同じエンティティ型を指定することによって、アソシエーションで自己リレーションシップを定義できます。 + +- [参照整合性制約](../../../../docs/framework/data/adonet/referential-integrity-constraint.md)。 \(オプション\)。 + + 各アソシエーション End には、アソシエーションの 1 つの End に存在できるエンティティ型のインスタンス数を示す[アソシエーション End の多重度](../../../../docs/framework/data/adonet/association-end-multiplicity.md)を指定する必要があります。 アソシエーション End の多重度には、1 \(1\)、ゼロか 1 \(0..1\)、または多数 \(\*\) の値を指定することができます。 アソシエーションの 1 つの End にあるエンティティ型のインスタンスには、エンティティ型で公開されている場合、[ナビゲーション プロパティ](../../../../docs/framework/data/adonet/navigation-property.md)または外部キーからアクセスできます。 詳細については、「[Entity Data Model: 外部キー](../../../../docs/framework/data/adonet/foreign-key-property.md)」を参照してください。 + +## 例 + 下のダイアグラムは、`WrittenBy` および `PublishedBy` という 2 つのアソシエーションの概念モデルを示しています。 `PublishedBy` アソシエーションのアソシエーション End は `Book` および `Publisher` のエンティティ型です。 `Publisher` End の多重度は 1 \(1\) で、`Book` End の多重度は多数 \(\*\) です。これは、出版社が多くの書籍を出版し、書籍は 1 社の出版社により出版されることを示します。 + + ![モデル例](../../../../docs/framework/data/adonet/media/examplemodel.gif "ExampleModel") + + [ADO.NET Entity Framework](../../../../docs/framework/data/adonet/ef/index.md) では、概念スキーマ定義言語 \([CSDL](../../../../docs/framework/data/adonet/ef/language-reference/csdl-specification.md)\) と呼ばれるドメイン固有言語 \(DSL\) を使用して概念モデルを定義します。 次の CSDL は、上のダイアグラムに示された `PublishedBy` アソシエーションを定義しています。 + + [!code-xml[EDM_Example_Model#AssociationExample](../../../../samples/snippets/xml/VS_Snippets_Data/edm_example_model/xml/books.edmx#associationexample)] + +## 参照 + [Entity Data Model キーの概念](../../../../docs/framework/data/adonet/entity-data-model-key-concepts.md) + [Entity Data Model](../../../../docs/framework/data/adonet/entity-data-model.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/asynchronous-programming.md b/docs/framework/data/adonet/asynchronous-programming.md new file mode 100644 index 00000000000..95b86cb4731 --- /dev/null +++ b/docs/framework/data/adonet/asynchronous-programming.md @@ -0,0 +1,823 @@ +--- +title: "非同期プログラミング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 85da7447-7125-426e-aa5f-438a290d1f77 +caps.latest.revision: 30 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 30 +--- +# 非同期プログラミング +このトピックでは、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] で導入された非同期プログラミング機能をサポートするための拡張機能など、[!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] Data Provider for [!INCLUDE[net_v45](../../../../includes/net-v45-md.md)] \(SqlClient\) における非同期プログラミングのサポートについて説明します。 + +## 従来の非同期プログラミング + [!INCLUDE[net_v45](../../../../includes/net-v45-md.md)] より前のバージョンでは、SqlClient による非同期プログラミングは、次のメソッドと `Asynchronous Processing=true` 接続プロパティを使用して行われていました。 + +1. + +2. + +3. + + この機能は [!INCLUDE[net_v45](../../../../includes/net-v45-md.md)] の SqlClient に残っています。 + + [!INCLUDE[net_v45](../../../../includes/net-v45-md.md)] 以降、これらのメソッドでは、接続文字列に `Asynchronous Processing=true` が必要なくなりました。 + +## [!INCLUDE[net_v45](../../../../includes/net-v45-md.md)] で追加された非同期プログラミング機能 + 新しい非同期プログラミング機能を使用すると、コードを簡単に非同期にすることができます。 + + [!INCLUDE[net_v45](../../../../includes/net-v45-md.md)] で導入された非同期プログラミング機能の詳細については、次の Web サイトを参照してください。 + +- [Async および Await を使用した非同期プログラミング](http://go.microsoft.com/fwlink/?LinkId=220765) + +- [.Net 4.5 での SqlDataReader の新しい非同期メソッドの使用 \(パート 1\)](http://blogs.msdn.com/b/adonet/archive/2012/04/20/using-sqldatareader-s-new-async-methods-in-net-4-5-beta.aspx) + +- [.Net 4.5 での SqlDataReader の新しい非同期メソッドの使用 \(パート 2\)](http://blogs.msdn.com/b/adonet/archive/2012/07/15/using-sqldatareader-s-new-async-methods-in-net-4-5-beta-part-2-examples.aspx) + + ユーザー インターフェイスが応答しない場合やサーバーのパフォーマンスが向上しない場合は、コードをさらに非同期にする必要がある可能性があります。 非同期コードの記述には、従来、非同期操作の完了後に発生するロジックを表すコールバック \(または継続とも呼ばれます\) のインストールが伴っていました。 これにより、同期コードと比較して、非同期コードの構造は複雑になります。 + + 現在は、コールバックを使用したり、コードを複数のメソッドやラムダ式で分割したりせずに、非同期メソッドを呼び出すことができるようになりました。 + + `async` 修飾子はメソッドが非同期であることを示します。 `async` メソッドを呼び出すと、タスクが返されます。 タスクに対して `await` ステートメントを呼び出すと、現在のメソッドはすぐに終了します。 タスクが終了すると、同じメソッド内で実行が再開されます。 + +> [!WARNING] +> 非同期呼び出しは、アプリケーションで `Context Connection` 接続文字列キーワードも使用されている場合はサポートされません。 + + `async` メソッドを呼び出すと、追加のスレッドは割り当てられません。 既存の I\/O 完了スレッドが最後に簡単に使用される可能性があります。 + + 非同期プログラミングをサポートするために [!INCLUDE[net_v45](../../../../includes/net-v45-md.md)] に追加されたメソッドは次のとおりです。 + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + + その他の非同期メンバーが、[SqlClient ストリーミング サポート](../../../../docs/framework/data/adonet/sqlclient-streaming-support.md)を行うように追加されました。 + +### 同期から非同期接続を開く + 既存のアプリケーションをアップグレードして、新しい非同期機能を使用できます。 たとえば、同期接続アルゴリズムを使用したアプリケーションで、データベースに接続するたびに UI スレッドをブロックし、接続すると、ユーザーがサインインしたことを他のユーザーに通知するストアド プロシージャが呼び出されるとします。 + +``` +using SqlConnection conn = new SqlConnection("…"); +{ + conn.Open(); + using (SqlCommand cmd = new SqlCommand("StoredProcedure_Logon", conn)) + { + cmd.ExecuteNonQuery(); + } +} + +``` + + 新しい非同期機能を使用するように変換した場合、プログラムは次のようになります。 + +``` +using System; +using System.Data.SqlClient; +using System.Threading.Tasks; + +class A { + +   static async Task Method(SqlConnection conn, SqlCommand cmd) { +      await conn.OpenAsync(); +      await cmd.ExecuteNonQueryAsync(); +      return 1; +   } + +   public static void Main() { +      using (SqlConnection conn = new SqlConnection("Data Source=(local); Initial Catalog=NorthWind; Integrated Security=SSPI")) { +         SqlCommand command = new SqlCommand("select top 2 * from orders", conn); + +         int result = A.Method(conn, command).Result; + +         SqlDataReader reader = command.ExecuteReader(); + while (reader.Read()) + Console.WriteLine(String.Format("{0}", reader[0])); +      } +   } +} +``` + +### 既存アプリケーションに新しい非同期機能を追加する \(古いパターンと新しいパターンが混在\) + 既存の非同期ロジックを変更せずに、新しい非同期機能 \(SqlConnection::OpenAsync\) を追加することもできます。 たとえば、現在、次のアルゴリズムを使用するアプリケーションがあるとします。 + +``` +AsyncCallback productList = new AsyncCallback(ProductList); +SqlConnection conn = new SqlConnection("…"); +conn.Open(); +SqlCommand cmd = new SqlCommand("SELECT * FROM [Current Product List]", conn); +IAsyncResult ia = cmd.BeginExecuteReader(productList, cmd); +``` + + 既存のアルゴリズムを大幅に変更せずに、新しい非同期パターンの使用を開始できます。 + +``` +using System; +using System.Data.SqlClient; +using System.Threading.Tasks; + +class A { +   static void ProductList(IAsyncResult result) { } + +   public static void Main() { +      // AsyncCallback productList = new AsyncCallback(ProductList); +      // SqlConnection conn = new SqlConnection("Data Source=(local); Initial Catalog=NorthWind; Integrated Security=SSPI"); +      // conn.Open(); +      // SqlCommand cmd = new SqlCommand("select top 2 * from orders", conn); +      // IAsyncResult ia = cmd.BeginExecuteReader(productList, cmd); + +      AsyncCallback productList = new AsyncCallback(ProductList); +      SqlConnection conn = new SqlConnection("Data Source=(local); Initial Catalog=NorthWind; Integrated Security=SSPI"); +      conn.OpenAsync().ContinueWith((task) => { +         SqlCommand cmd = new SqlCommand("select top 2 * from orders", conn); +         IAsyncResult ia = cmd.BeginExecuteReader(productList, cmd); +      }, TaskContinuationOptions.OnlyOnRanToCompletion); +   } +} +``` + +### 基本プロバイダー モデルと新しい非同期機能を使用する + 異なるデータベースに接続してクエリを実行できるツールを作成することが必要になる場合があります。 基本プロバイダー モデルと新しい非同期機能を使用できます。 + + 分散トランザクションを使用するには、サーバー上で Microsoft Distributed Transaction Controller \(MSDTC\) サービスを有効にする必要があります。 MSDTC を有効にする方法の詳細については、「[Web サーバーで MSDTC を有効にする方法](http://msdn.microsoft.com/library/dd327979.aspx)」を参照してください。 + +``` +using System; +using System.Data.Common; +using System.Data.SqlClient; +using System.Threading.Tasks; + +class A { + static async Task PerformDBOperationsUsingProviderModel(string connectionString, string providerName) { + DbProviderFactory factory = DbProviderFactories.GetFactory(providerName); + using (DbConnection connection = factory.CreateConnection()) { + connection.ConnectionString = connectionString; + await connection.OpenAsync(); + + DbCommand command = connection.CreateCommand(); + command.CommandText = "SELECT * FROM AUTHORS"; + + using (DbDataReader reader = await command.ExecuteReaderAsync()) { + while (await reader.ReadAsync()) { + for (int i = 0; i < reader.FieldCount; i++) { + // Process each column as appropriate + object obj = await reader.GetFieldValueAsync(i); + Console.WriteLine(obj); + } + } + } + } + } + + public static void Main() + { + SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); + // replace these with your own values + builder.DataSource = "your_server"; + builder.InitialCatalog = "pubs"; + builder.IntegratedSecurity = true; + string provider = "System.Data.SqlClient"; + + Task task = PerformDBOperationsUsingProviderModel(builder.ConnectionString, provider); + task.Wait(); + } +} +``` + +### SQL トランザクションと新しい非同期機能を使用する + +``` +using System; +using System.Data.SqlClient; +using System.Threading.Tasks; + +class Program { + static void Main() { + string connectionString = + "Persist Security Info=False;Integrated Security=SSPI;database=Northwind;server=(local)"; + Task task = ExecuteSqlTransaction(connectionString); + task.Wait(); + } + + static async Task ExecuteSqlTransaction(string connectionString) { + using (SqlConnection connection = new SqlConnection(connectionString)) { + await connection.OpenAsync(); + + SqlCommand command = connection.CreateCommand(); + SqlTransaction transaction = null; + + // Start a local transaction. + transaction = await Task.Run( + () => connection.BeginTransaction("SampleTransaction") + ); + + // Must assign both transaction object and connection + // to Command object for a pending local transaction + command.Connection = connection; + command.Transaction = transaction; + + try { + command.CommandText = + "Insert into Region (RegionID, RegionDescription) VALUES (555, 'Description')"; + await command.ExecuteNonQueryAsync(); + + command.CommandText = + "Insert into Region (RegionID, RegionDescription) VALUES (556, 'Description')"; + await command.ExecuteNonQueryAsync(); + + // Attempt to commit the transaction. + await Task.Run(() => transaction.Commit()); + Console.WriteLine("Both records are written to database."); + } + catch (Exception ex) { + Console.WriteLine("Commit Exception Type: {0}", ex.GetType()); + Console.WriteLine(" Message: {0}", ex.Message); + + // Attempt to roll back the transaction. + try { + transaction.Rollback(); + } + catch (Exception ex2) { + // This catch block will handle any errors that may have occurred + // on the server that would cause the rollback to fail, such as + // a closed connection. + Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType()); + Console.WriteLine(" Message: {0}", ex2.Message); + } + } + } + } +} + +``` + +### SQL トランザクションと新しい非同期機能を使用する + エンタープライズ アプリケーションでは、複数のデータベース サーバー間のトランザクションを有効にするために、一部のシナリオで分散トランザクションの追加が必要になる場合があります。 次のように、System.Transactions 名前空間を使用して分散トランザクションを登録できます。 + +``` +using System; +using System.Data.SqlClient; +using System.Threading.Tasks; +using System.Transactions; + +class Program { + public static void Main() + { + SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); + // replace these with your own values + builder.DataSource = "your_server"; + builder.InitialCatalog = "your_data_source"; + builder.IntegratedSecurity = true; + + Task task = ExecuteDistributedTransaction(builder.ConnectionString, builder.ConnectionString); + task.Wait(); + } + + static async Task ExecuteDistributedTransaction(string connectionString1, string connectionString2) { + using (SqlConnection connection1 = new SqlConnection(connectionString1)) + using (SqlConnection connection2 = new SqlConnection(connectionString2)) { + using (CommittableTransaction transaction = new CommittableTransaction()) { + await connection1.OpenAsync(); + connection1.EnlistTransaction(transaction); + + await connection2.OpenAsync(); + connection2.EnlistTransaction(transaction); + + try { + SqlCommand command1 = connection1.CreateCommand(); + command1.CommandText = "Insert into RegionTable1 (RegionID, RegionDescription) VALUES (100, 'Description')"; + await command1.ExecuteNonQueryAsync(); + + SqlCommand command2 = connection2.CreateCommand(); + command2.CommandText = "Insert into RegionTable2 (RegionID, RegionDescription) VALUES (100, 'Description')"; + await command2.ExecuteNonQueryAsync(); + + transaction.Commit(); + } + catch (Exception ex) { + Console.WriteLine("Exception Type: {0}", ex.GetType()); + Console.WriteLine(" Message: {0}", ex.Message); + + try { + transaction.Rollback(); + } + catch (Exception ex2) { + Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType()); + Console.WriteLine(" Message: {0}", ex2.Message); + } + } + } + } + } +} + +``` + +### 非同期操作を取り消す + を使用して、非同期要求を取り消すことができます。 + +``` +using System; +using System.Data.SqlClient; +using System.Threading; +using System.Threading.Tasks; + +namespace Samples { + class CancellationSample { + public static void Main(string[] args) { + CancellationTokenSource source = new CancellationTokenSource(); + source.CancelAfter(2000); // give up after 2 seconds + try { + Task result = CancellingAsynchronousOperations(source.Token); + result.Wait(); + } + catch (AggregateException exception) { + if (exception.InnerException is SqlException) { + Console.WriteLine("Operation canceled"); + } + else { + throw; + } + } + } + + static async Task CancellingAsynchronousOperations(CancellationToken cancellationToken) { + using (SqlConnection connection = new SqlConnection("Server=(local);Integrated Security=true")) { + await connection.OpenAsync(cancellationToken); + + SqlCommand command = new SqlCommand("WAITFOR DELAY '00:10:00'", connection); + await command.ExecuteNonQueryAsync(cancellationToken); + } + } + } +} +``` + +### SqlBulkCopy を使用した非同期操作 + 非同期機能は、 を使用して、 にも追加されました。 + +``` +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Odbc; +using System.Data.SqlClient; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace SqlBulkCopyAsyncCodeSample { + class Program { + static string selectStatment = "SELECT * FROM [pubs].[dbo].[titles]"; + static string createDestTableStatement = + @"CREATE TABLE {0} ( + [title_id] [varchar](6) NOT NULL, + [title] [varchar](80) NOT NULL, + [type] [char](12) NOT NULL, + [pub_id] [char](4) NULL, + [price] [money] NULL, + [advance] [money] NULL, + [royalty] [int] NULL, + [ytd_sales] [int] NULL, + [notes] [varchar](200) NULL, + [pubdate] [datetime] NOT NULL)"; + + // Replace the connection string if needed, for instance to connect to SQL Express: @"Server=(local)\SQLEXPRESS;Database=Demo;Integrated Security=true" + // static string connectionString = @"Server=(localdb)\V11.0;Database=Demo"; + static string connectionString = @"Server=(local);Database=Demo;Integrated Security=true"; + + // static string odbcConnectionString = @"Driver={SQL Server};Server=(localdb)\V11.0;UID=oledb;Pwd=1Password!;Database=Demo"; + static string odbcConnectionString = @"Driver={SQL Server};Server=(local);Database=Demo;Integrated Security=true"; + + // static string marsConnectionString = @"Server=(localdb)\V11.0;Database=Demo;MultipleActiveResultSets=true;"; + static string marsConnectionString = @"Server=(local);Database=Demo;MultipleActiveResultSets=true;Integrated Security=true"; + + // Replace the Server name with your actual sql azure server name and User ID/Password + static string azureConnectionString = @"Server=SqlAzure;User ID=myUserID;Password=myPassword;Database=Demo"; + + static void Main(string[] args) { + SynchronousSqlBulkCopy(); + AsyncSqlBulkCopy().Wait(); + MixSyncAsyncSqlBulkCopy().Wait(); + AsyncSqlBulkCopyNotifyAfter().Wait(); + AsyncSqlBulkCopyDataRows().Wait(); + // AsyncSqlBulkCopySqlServerToSqlAzure().Wait(); + // AsyncSqlBulkCopyCancel().Wait(); + AsyncSqlBulkCopyMARS().Wait(); + } + + // 3.1.1 Synchronous bulk copy in .NET 4.5 + private static void SynchronousSqlBulkCopy() { + using (SqlConnection conn = new SqlConnection(connectionString)) { + conn.Open(); + DataTable dt = new DataTable(); + using (SqlCommand cmd = new SqlCommand(selectStatment, conn)) { + SqlDataAdapter adapter = new SqlDataAdapter(cmd); + adapter.Fill(dt); + + string temptable = "[#" + Guid.NewGuid().ToString("N") + "]"; + cmd.CommandText = string.Format(createDestTableStatement, temptable); + cmd.ExecuteNonQuery(); + + using (SqlBulkCopy bcp = new SqlBulkCopy(conn)) { + bcp.DestinationTableName = temptable; + bcp.WriteToServer(dt); + } + } + } + + } + + // 3.1.2 Asynchrounous bulk copy in .NET 4.5 + private static async Task AsyncSqlBulkCopy() { + using (SqlConnection conn = new SqlConnection(connectionString)) { + await conn.OpenAsync(); + DataTable dt = new DataTable(); + using (SqlCommand cmd = new SqlCommand(selectStatment, conn)) { + SqlDataAdapter adapter = new SqlDataAdapter(cmd); + adapter.Fill(dt); + + string temptable = "[#" + Guid.NewGuid().ToString("N") + "]"; + cmd.CommandText = string.Format(createDestTableStatement, temptable); + await cmd.ExecuteNonQueryAsync(); + + using (SqlBulkCopy bcp = new SqlBulkCopy(conn)) { + bcp.DestinationTableName = temptable; + await bcp.WriteToServerAsync(dt); + } + } + } + } + + // 3.2 Add new Async.NET capabilities in an existing application (Mixing synchronous and asynchornous calls) + private static async Task MixSyncAsyncSqlBulkCopy() { + using (OdbcConnection odbcconn = new OdbcConnection(odbcConnectionString)) { + odbcconn.Open(); + using (OdbcCommand odbccmd = new OdbcCommand(selectStatment, odbcconn)) { + using (OdbcDataReader odbcreader = odbccmd.ExecuteReader()) { + using (SqlConnection conn = new SqlConnection(connectionString)) { + await conn.OpenAsync(); + string temptable = "temptable";//"[#" + Guid.NewGuid().ToString("N") + "]"; + SqlCommand createCmd = new SqlCommand(string.Format(createDestTableStatement, temptable), conn); + await createCmd.ExecuteNonQueryAsync(); + using (SqlBulkCopy bcp = new SqlBulkCopy(conn)) { + bcp.DestinationTableName = temptable; + await bcp.WriteToServerAsync(odbcreader); + } + } + } + } + } + } + + // 3.3 Using the NotifyAfter property + private static async Task AsyncSqlBulkCopyNotifyAfter() { + using (SqlConnection conn = new SqlConnection(connectionString)) { + await conn.OpenAsync(); + DataTable dt = new DataTable(); + using (SqlCommand cmd = new SqlCommand(selectStatment, conn)) { + SqlDataAdapter adapter = new SqlDataAdapter(cmd); + adapter.Fill(dt); + + string temptable = "[#" + Guid.NewGuid().ToString("N") + "]"; + cmd.CommandText = string.Format(createDestTableStatement, temptable); + await cmd.ExecuteNonQueryAsync(); + + using (SqlBulkCopy bcp = new SqlBulkCopy(conn)) { + bcp.DestinationTableName = temptable; + bcp.NotifyAfter = 5; + bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied); + await bcp.WriteToServerAsync(dt); + } + } + } + } + + private static void OnSqlRowsCopied(object sender, SqlRowsCopiedEventArgs e) { + Console.WriteLine("Copied {0} so far...", e.RowsCopied); + } + + // 3.4 Using the new SqlBulkCopy Async.NET capabilities with DataRow[] + private static async Task AsyncSqlBulkCopyDataRows() { + using (SqlConnection conn = new SqlConnection(connectionString)) { + await conn.OpenAsync(); + DataTable dt = new DataTable(); + using (SqlCommand cmd = new SqlCommand(selectStatment, conn)) { + SqlDataAdapter adapter = new SqlDataAdapter(cmd); + adapter.Fill(dt); + DataRow[] rows = dt.Select(); + + string temptable = "[#" + Guid.NewGuid().ToString("N") + "]"; + cmd.CommandText = string.Format(createDestTableStatement, temptable); + await cmd.ExecuteNonQueryAsync(); + + using (SqlBulkCopy bcp = new SqlBulkCopy(conn)) { + bcp.DestinationTableName = temptable; + await bcp.WriteToServerAsync(rows); + } + } + } + } + + // 3.5 Copying data from SQL Server to SQL Azure in .NET 4.5 + //private static async Task AsyncSqlBulkCopySqlServerToSqlAzure() { + // using (SqlConnection srcConn = new SqlConnection(connectionString)) + // using (SqlConnection destConn = new SqlConnection(azureConnectionString)) { + // await srcConn.OpenAsync(); + // await destConn.OpenAsync(); + // using (SqlCommand srcCmd = new SqlCommand(selectStatment, srcConn)) { + // using (SqlDataReader reader = await srcCmd.ExecuteReaderAsync()) { + // string temptable = "[#" + Guid.NewGuid().ToString("N") + "]"; + // using (SqlCommand destCmd = new SqlCommand(string.Format(createDestTableStatement, temptable), destConn)) { + // await destCmd.ExecuteNonQueryAsync(); + // using (SqlBulkCopy bcp = new SqlBulkCopy(destConn)) { + // bcp.DestinationTableName = temptable; + // await bcp.WriteToServerAsync(reader); + // } + // } + // } + // } + // } + //} + + // 3.6 Cancelling an Asynchronous Operation to SQL Azure + //private static async Task AsyncSqlBulkCopyCancel() { + // CancellationTokenSource cts = new CancellationTokenSource(); + // using (SqlConnection srcConn = new SqlConnection(connectionString)) + // using (SqlConnection destConn = new SqlConnection(azureConnectionString)) { + // await srcConn.OpenAsync(cts.Token); + // await destConn.OpenAsync(cts.Token); + // using (SqlCommand srcCmd = new SqlCommand(selectStatment, srcConn)) { + // using (SqlDataReader reader = await srcCmd.ExecuteReaderAsync(cts.Token)) { + // string temptable = "[#" + Guid.NewGuid().ToString("N") + "]"; + // using (SqlCommand destCmd = new SqlCommand(string.Format(createDestTableStatement, temptable), destConn)) { + // await destCmd.ExecuteNonQueryAsync(cts.Token); + // using (SqlBulkCopy bcp = new SqlBulkCopy(destConn)) { + // bcp.DestinationTableName = temptable; + // await bcp.WriteToServerAsync(reader, cts.Token); + // //Cancel Async SqlBulCopy Operation after 200 ms + // cts.CancelAfter(200); + // } + // } + // } + // } + // } + //} + + // 3.7 Using Async.Net and MARS + private static async Task AsyncSqlBulkCopyMARS() { + using (SqlConnection marsConn = new SqlConnection(marsConnectionString)) { + await marsConn.OpenAsync(); + + SqlCommand titlesCmd = new SqlCommand("SELECT * FROM [pubs].[dbo].[titles]", marsConn); + SqlCommand authorsCmd = new SqlCommand("SELECT * FROM [pubs].[dbo].[authors]", marsConn); + //With MARS we can have multiple active results sets on the same connection + using (SqlDataReader titlesReader = await titlesCmd.ExecuteReaderAsync()) + using (SqlDataReader authorsReader = await authorsCmd.ExecuteReaderAsync()) { + await authorsReader.ReadAsync(); + + string temptable = "[#" + Guid.NewGuid().ToString("N") + "]"; + using (SqlConnection destConn = new SqlConnection(connectionString)) { + await destConn.OpenAsync(); + using (SqlCommand destCmd = new SqlCommand(string.Format(createDestTableStatement, temptable), destConn)) { + await destCmd.ExecuteNonQueryAsync(); + using (SqlBulkCopy bcp = new SqlBulkCopy(destConn)) { + bcp.DestinationTableName = temptable; + await bcp.WriteToServerAsync(titlesReader); + } + } + } + } + } + } + } +} +``` + +## MARS を使用して複数のコマンドを非同期的に使用する + この例では、**AdventureWorks** データベースとの接続を 1 つ開きます。 オブジェクトを使用して、 が作成されます。 リーダーが使用されると、2 番目の リーダーが開かれます。このとき、最初の から取得したデータが 2 番目のリーダーの WHERE 句に入力されます。 + +> [!NOTE] +> 次の例では、 **に含まれるサンプルの [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)]AdventureWorks** データベースを使用します。 サンプル コードの接続文字列は、データベースがローカルのコンピューターにインストールされて利用可能な状態になっていることを前提としています。 必要に応じて、お使いの環境に合わせて接続文字列を変更してください。 + +``` +using System; +using System.Data; +using System.Data.SqlClient; +using System.Threading.Tasks; + +class Class1 { + static void Main() { + Task task = MultipleCommands(); + task.Wait(); + } + + static async Task MultipleCommands() { + // By default, MARS is disabled when connecting to a MARS-enabled. + // It must be enabled in the connection string. + string connectionString = GetConnectionString(); + + int vendorID; + SqlDataReader productReader = null; + string vendorSQL = + "SELECT VendorId, Name FROM Purchasing.Vendor"; + string productSQL = + "SELECT Production.Product.Name FROM Production.Product " + + "INNER JOIN Purchasing.ProductVendor " + + "ON Production.Product.ProductID = " + + "Purchasing.ProductVendor.ProductID " + + "WHERE Purchasing.ProductVendor.VendorID = @VendorId"; + + using (SqlConnection awConnection = + new SqlConnection(connectionString)) { + SqlCommand vendorCmd = new SqlCommand(vendorSQL, awConnection); + SqlCommand productCmd = + new SqlCommand(productSQL, awConnection); + + productCmd.Parameters.Add("@VendorId", SqlDbType.Int); + + await awConnection.OpenAsync(); + using (SqlDataReader vendorReader = await vendorCmd.ExecuteReaderAsync()) { + while (await vendorReader.ReadAsync()) { + Console.WriteLine(vendorReader["Name"]); + + vendorID = (int)vendorReader["VendorId"]; + + productCmd.Parameters["@VendorId"].Value = vendorID; + // The following line of code requires a MARS-enabled connection. + productReader = await productCmd.ExecuteReaderAsync(); + using (productReader) { + while (await productReader.ReadAsync()) { + Console.WriteLine(" " + + productReader["Name"].ToString()); + } + } + } + } + } + } + + private static string GetConnectionString() { + // To avoid storing the connection string in your code, you can retrive it from a configuration file. + return "Data Source=(local);Integrated Security=SSPI;Initial Catalog=AdventureWorks;MultipleActiveResultSets=True"; + } +} +``` + +## MARS を使用してデータの読み取りと更新を非同期的に行う + MARS を使用すると、複数の保留中の操作について、読み取り操作と DML \(データ操作言語\) 操作の両方で 1 つの接続を使用することができます。 この機能により、アプリケーションで接続ビジー エラーを処理する必要がなくなります。 さらに、MARS ではサーバー側カーソルのユーザーを置き換えることができます。通常、この処理は多くのリソースを消費します。 最後に、複数の操作を単一の接続で実行できるので、同じトランザクション コンテキストを共有することにより、システムのストアド プロシージャである **sp\_getbindtoken** と **sp\_bindsession** を使用する必要がなくなります。 + + 次のコンソール アプリケーションでは、2 つの オブジェクトを 3 つの オブジェクトと使用する方法、および 1 つの オブジェクトを MARS を有効にして使用する方法について示します。 最初のコマンド オブジェクトでは、格付けが 5 のベンダーの一覧を取得します。 2 番目のコマンド オブジェクトでは、 から提供されるベンダー ID を使用して特定のベンダーのすべての製品について 2 番目の を読み取ります。 各製品のレコードは、2 番目の によってアクセスされます。 計算が実行され、新規 **OnOrderQty** を判定します。 3 番目のコマンド オブジェクトでは、**ProductVendor** テーブルを新しい値で更新します。 このプロセスはすべて単一のトランザクションで行われ、最後にロールバックされます。 + +> [!NOTE] +> 次の例では、 **に含まれるサンプルの [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)]AdventureWorks** データベースを使用します。 サンプル コードの接続文字列は、データベースがローカルのコンピューターにインストールされて利用可能な状態になっていることを前提としています。 必要に応じて、お使いの環境に合わせて接続文字列を変更してください。 + +``` +using System; +using System.Collections.Generic; +using System.Text; +using System.Data; +using System.Data.SqlClient; +using System.Threading.Tasks; + +class Program { + static void Main() { + Task task = ReadingAndUpdatingData(); + task.Wait(); + } + + static async Task ReadingAndUpdatingData() { + // By default, MARS is disabled when connecting to a MARS-enabled host. + // It must be enabled in the connection string. + string connectionString = GetConnectionString(); + + SqlTransaction updateTx = null; + SqlCommand vendorCmd = null; + SqlCommand prodVendCmd = null; + SqlCommand updateCmd = null; + + SqlDataReader prodVendReader = null; + + int vendorID = 0; + int productID = 0; + int minOrderQty = 0; + int maxOrderQty = 0; + int onOrderQty = 0; + int recordsUpdated = 0; + int totalRecordsUpdated = 0; + + string vendorSQL = + "SELECT VendorID, Name FROM Purchasing.Vendor " + + "WHERE CreditRating = 5"; + string prodVendSQL = + "SELECT ProductID, MaxOrderQty, MinOrderQty, OnOrderQty " + + "FROM Purchasing.ProductVendor " + + "WHERE VendorID = @VendorID"; + string updateSQL = + "UPDATE Purchasing.ProductVendor " + + "SET OnOrderQty = @OrderQty " + + "WHERE ProductID = @ProductID AND VendorID = @VendorID"; + + using (SqlConnection awConnection = + new SqlConnection(connectionString)) { + await awConnection.OpenAsync(); + updateTx = await Task.Run(() => awConnection.BeginTransaction()); + + vendorCmd = new SqlCommand(vendorSQL, awConnection); + vendorCmd.Transaction = updateTx; + + prodVendCmd = new SqlCommand(prodVendSQL, awConnection); + prodVendCmd.Transaction = updateTx; + prodVendCmd.Parameters.Add("@VendorId", SqlDbType.Int); + + updateCmd = new SqlCommand(updateSQL, awConnection); + updateCmd.Transaction = updateTx; + updateCmd.Parameters.Add("@OrderQty", SqlDbType.Int); + updateCmd.Parameters.Add("@ProductID", SqlDbType.Int); + updateCmd.Parameters.Add("@VendorID", SqlDbType.Int); + + using (SqlDataReader vendorReader = await vendorCmd.ExecuteReaderAsync()) { + while (await vendorReader.ReadAsync()) { + Console.WriteLine(vendorReader["Name"]); + + vendorID = (int)vendorReader["VendorID"]; + prodVendCmd.Parameters["@VendorID"].Value = vendorID; + prodVendReader = await prodVendCmd.ExecuteReaderAsync(); + + using (prodVendReader) { + while (await prodVendReader.ReadAsync()) { + productID = (int)prodVendReader["ProductID"]; + + if (prodVendReader["OnOrderQty"] == DBNull.Value) { + minOrderQty = (int)prodVendReader["MinOrderQty"]; + onOrderQty = minOrderQty; + } + else { + maxOrderQty = (int)prodVendReader["MaxOrderQty"]; + onOrderQty = (int)(maxOrderQty / 2); + } + + updateCmd.Parameters["@OrderQty"].Value = onOrderQty; + updateCmd.Parameters["@ProductID"].Value = productID; + updateCmd.Parameters["@VendorID"].Value = vendorID; + + recordsUpdated = await updateCmd.ExecuteNonQueryAsync(); + totalRecordsUpdated += recordsUpdated; + } + } + } + } + Console.WriteLine("Total Records Updated: ", totalRecordsUpdated.ToString()); + await Task.Run(() => updateTx.Rollback()); + Console.WriteLine("Transaction Rolled Back"); + } + } + + private static string GetConnectionString() { + // To avoid storing the connection string in your code, you can retrive it from a configuration file. + return "Data Source=(local);Integrated Security=SSPI;Initial Catalog=AdventureWorks;MultipleActiveResultSets=True"; + } +} +``` + +## 参照 + [ADO.NET でのデータの取得および変更](../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/code-access-security.md b/docs/framework/data/adonet/code-access-security.md new file mode 100644 index 00000000000..3926a048cbc --- /dev/null +++ b/docs/framework/data/adonet/code-access-security.md @@ -0,0 +1,206 @@ +--- +title: "コード アクセス セキュリティと ADO.NET | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 93e099eb-daa1-4f1e-b031-c1e10a996f88 +caps.latest.revision: 6 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 6 +--- +# コード アクセス セキュリティと ADO.NET +.NET Framework はコード アクセス セキュリティ \(CAS\) に加えてロール ベースのセキュリティを備えています。どちらも、共通言語ランタイム \(CLR\) が提供する共通のインフラストラクチャを使って実装されています。 アンマネージ コードの場合、ほとんどのアプリケーションはユーザーまたはプリンシパルの権限で実行されます。 そのため、悪意のあるソフトウェアやエラーを含むソフトウェアが、システム特権を持つユーザーによって実行された場合、コンピューター システムが被害を受けたり、機密データが改ざんされる可能性があります。 + + これに対し、.NET Framework で実行されるマネージ コードには、コードそのものに適用されるコード アクセス セキュリティが存在します。 コードの実行が許可されるかどうかは、プリンシパルの ID だけでなく、コードの作成元など、コードの ID を表す情報に依存します。 これにより、マネージ コードが誤用される可能性が低くなります。 + +## コード アクセス許可 + コードは、実行されるときに、CLR のセキュリティ システムで評価される証拠を提示します。 通常、この証拠は、URL、サイト、ゾーン、アセンブリの ID を保証するデジタル署名などのコードの作成元に関する情報で構成されます。 + + CLR は、そのコードに許されている操作の範囲内で実行を許可します。 コードは権限を要求できますが、その要求は管理者が設定したセキュリティ ポリシーに基づいて受理されます。 + +> [!NOTE] +> CLR で実行されるコード自体に、アクセス許可を与えることはできません。 たとえば、コードから要求できる権限は、セキュリティ ポリシーによって許可されたレベルよりも低い権限だけであり、それを超える権限が付与されることはありません。 権限を付与する場合は、まず、権限をまったく付与しない状態から始め、その後で、実行しようとする特定のタスクに必要な最小限の権限を追加してゆくようにします。 すべての権限を与えてから、不要なものを 1 つずつ拒否していく方法では、アプリケーションを危険にさらす結果となります。必要以上の権限を付与することによって意図しないセキュリティ ホールを招く可能性があります。 詳細については、「[NIB: Configuring Security Policy](http://msdn.microsoft.com/ja-jp/0f130bcd-1bba-4346-b231-0bcca7dab1a4)」および「[NIB: Security Policy Management](http://msdn.microsoft.com/ja-jp/d754e05d-29dc-4d3a-a2c2-95eaaf1b82b9)」を参照してください。 + + コードのアクセス権限には、次の 3 種類があります。 + +- `Code access permissions`。 クラスから派生します。 ファイルや環境変数などの保護されたリソースにアクセスして、保護された操作 \(アンマネージ コードへのアクセスなど\) を実行するには権限が必要です。 + +- `Identity permissions`。アセンブリを識別する特性を表します。 アセンブリには証拠に基づいて権限が付与されます。証拠には、デジタル署名やコードの作成元などの情報が含まれます。 ID 権限も 基本クラスから派生します。 + +- `Role-based security permissions`。プリンシパルが、指定された ID を持っているか、または、指定されたロールに属しているかどうかに基づきます。 クラスにより、アクティブなプリンシパルに対する宣言型および命令型の権限チェックが可能となります。 + + ランタイムのセキュリティ システムは、特定のリソースへのアクセスまたは特定の操作の実行がコードに許されているかどうかを判断するため、呼び出し履歴をたどりながら、各呼び出し元に付与されている権限と、要求されている権限とを比較します。 呼び出し履歴に、要求された権限を持たない呼び出し元が 1 つでも見つかった場合、 がスローされてアクセスが拒否されます。 + +### 権限の要求 + 権限を要求する目的は、そのアプリケーションを実行するために必要な権限をランタイムに伝えると共に、実際に必要な権限以外は付与されないようにすることです。 たとえば、ローカル ディスクにデータを書き込むアプリケーションは を必要とします。 この権限が付与されていない場合、アプリケーションがディスクへの書き込みを試行した時点で実行に失敗します。 ただし、アプリケーションから `FileIOPermission` を要求した場合、その権限が付与されなければ、最初の段階で例外が生成され、アプリケーションが読み込まれることはありません。 + + ディスクからのデータの読み取りだけを必要とするアプリケーションでは、書き込み権限が決して付与されないように要求できます。 バグが存在していたり、悪意のある攻撃を受けたとしても、操作の対象となるデータに損害を与えることはありません。 詳細については、「[NIB: Requesting Permissions](http://msdn.microsoft.com/ja-jp/0447c49d-8cba-45e4-862c-ff0b59bebdc2)」を参照してください。 + +## ロール ベースのセキュリティと CAS + ロール ベースのセキュリティとコード アクセス セキュリティ \(CAS\) の両方を実装することで、アプリケーションの全体的なセキュリティを高めることができます。 ロール ベースのセキュリティには、Windows アカウントまたはカスタム ID を使用できます。セキュリティ プリンシパルに関する情報には、現在のスレッドからアクセスできます。 また、ユーザーによって指定された資格情報に基づいて、データやリソースへのアクセスを提供するアプリケーションも少なくありません。 このようなアプリケーションは、通常、ユーザーのロールを調べ、そのロールに基づいてリソースへのアクセスを許可します。 + + ロール ベースのセキュリティを使用することで、コンポーネントが、現在のユーザーおよびそのユーザーに関連付けられているロールを実行時に特定できるようになります。 この情報を CAS ポリシーを使ってマッピングすることによって、一連の権限が実行時に判別されます。 特定のアプリケーション ドメインでは、ホストが既定のロール ベース セキュリティ ポリシーを変更し、ユーザーおよびそのユーザーに関連付けられたロールを表す既定のセキュリティ プリンシパルを設定できます。 + + CLR にはマネージ コードに制限を適用するためのメカニズムが、権限を使用することによって実装されています。 ロール ベースのセキュリティ権限により、ユーザー \(またはユーザーのために行動するエージェント\) が特定の ID を持っているかどうか、または特定のロールに所属しているかどうかを検出するメカニズムが実現されます。 詳細については、「[Security Permissions](http://msdn.microsoft.com/ja-jp/b03757b4-e926-4196-b738-3733ced2bda0)」を参照してください。 + + 開発しているアプリケーションの種類によっては、データベースに対するロール ベースの権限の実装も考慮する必要があります。 SQL Server におけるロール ベースのセキュリティの詳細については「[SQL Server のセキュリティ](../../../../docs/framework/data/adonet/sql/sql-server-security.md)」を参照してください。 + +## アセンブリ + アセンブリは、.NET Framework アプリケーションの配置、バージョン管理、再利用、アクティベーション スコープ、およびセキュリティ権限の基本単位です。 アセンブリは、互いに連携して動作するように作成された一連の型やリソースを提供し、"機能" の論理上の単位を成すものです。 CLR から見て、型がアセンブリのコンテキスト外に存在することはありません。 アセンブリの作成と配置の詳細については、「[アセンブリを使用したプログラミング](../../../../docs/framework/app-domains/programming-with-assemblies.md)」を参照してください。 + +### 厳密な名前付きアセンブリ + 厳密な名前 \(デジタル署名\) は、アセンブリの ID \(単純なテキスト名、バージョン番号、および使用可能な場合はカルチャ情報\) と、公開キーおよびデジタル署名で構成されます。 このデジタル署名は、対応する秘密キーを使用してアセンブリ ファイルから生成されます。 アセンブリ ファイルにはアセンブリ マニフェストが格納されており、そこに、アセンブリを構成するすべてのファイルの名前とハッシュが含まれます。 + + アセンブリに厳密な名前を付けることで、アプリケーションやコンポーネントに一意の ID が与えられます。他のソフトウェアは、その ID を使用することで、対応するアプリケーションまたはコンポーネントを明示的に参照できます。 アセンブリに厳密な名前を付けると、悪意のあるコードを含むアセンブリのなりすましから保護することができます。 また、異なるバージョンのコンポーネント間でバージョンの整合性をとることもできます。 グローバル アセンブリ キャッシュ \(GAC\) に展開されるアセンブリには、厳密な名前を付ける必要があります。 詳細については、「[厳密な名前付きアセンブリの作成と使用](../../../../docs/framework/app-domains/create-and-use-strong-named-assemblies.md)」を参照してください。 + +## ADO.NET 2.0 での Partial Trust \(部分信頼\) + ADO.NET 2.0 では、.NET Framework Data Provider for SQL Server、.NET Framework Data Provider for OLE DB、.NET Framework Data Provider for ODBC、および .NET Framework Data Provider for Oracle のすべてが、部分的に信頼された環境でも実行できるようになりました。 .NET Framework の以前のリリースでは、信頼性のレベルが full\-trust よりも低いアプリケーションでは のみがサポートされていました。 + + SQL Server プロバイダーを使用する部分的に信頼できるアプリケーションは、少なくとも、Execution アクセス許可と アクセス許可が必要です。 + +### Partial Trust \(部分信頼\) のアクセス許可属性プロパティ + 部分信頼のシナリオでは、 メンバーを使用して、.NET Framework Data Provider for SQL Server が使用できる機能をさらに制限することができます。 + + 使用可能な プロパティとその説明を次の表に示します。 + +|アクセス許可属性プロパティ|説明| +|-------------------|--------| +|`Action`|セキュリティ アクションを取得または設定します。 このプロパティは、 から継承されています。| +|`AllowBlankPassword`|接続文字列内で空白のパスワードの使用を許可または禁止します。 有効な値は、空白のパスワードの使用を許可する `true` および空白のパスワードの使用を禁止する `false` です。 このプロパティは、 から継承されています。| +|`ConnectionString`|使用できる接続文字列を指定します。 複数の接続文字列を指定できます。 **Note:** 接続文字列には、ユーザー ID やパスワードを含めないでください。 このリリースでは、.NET Framework 構成ツールを使用して接続文字列制限を変更することはできません。

このプロパティは、 から継承されています。| +|`KeyRestrictions`|許可または禁止する接続文字列パラメーターを指定します。 接続文字列パラメーターは、*\\=* の形式で指定します。 セミコロン \(;\) で区切って、複数のパラメーターを指定できます。 **Note:** `KeyRestrictions` が指定されておらず、`KeyRestrictionBehavior` プロパティが `AllowOnly` または `PreventUsage` に設定されている場合は、接続文字列パラメーターを追加できません。 このプロパティは、 から継承されています。| +|`KeyRestrictionBehavior`|接続文字列パラメーターが、追加を許可された唯一の接続文字列パラメーター \(`AllowOnly`\) か、または追加を禁止された接続文字列パラメーター \(`PreventUsage`\) かを指定します。 `AllowOnly` が既定値です。 このプロパティは、 から継承されています。| +|`TypeID`|派生クラスで実装すると、この属性の一意の識別子を取得します。 このプロパティは、 から継承されています。| +|`Unrestricted`|このリソースに対する無制限のアクセス許可が宣言されているかどうかを示します。 このプロパティは、 から継承されています。| + +#### ConnectionString の構文 + 次の例では、特定の接続文字列のみ使用できるようにするために、構成ファイルの `connectionStrings` 要素を使用する方法を示しています。 構成ファイルからの接続文字列の格納および取得の詳細については、「[接続文字列](../../../../docs/framework/data/adonet/connection-strings.md)」を参照してください。 + +``` + + + +``` + +#### KeyRestrictions の構文 + 上述の接続文字列の使用を許可し、`Encrypt`、`Packet`、`Size` 接続文字列オプションの使用も許可する一方で、その他の接続文字列オプションの使用を禁止する例を次に示します。 + +``` + + + +``` + +#### KeyRestrictionBehavior を PreventUsage に設定する場合の構文 + 上述の接続文字列の使用を許可し、`User Id`、`Password`、および `Persist Security Info` を除く他のすべての接続パラメーターを許可する例を次に示します。 + +``` + + + +``` + +#### KeyRestrictionBehavior を AllowOnly に設定する場合の構文 + `Initial Catalog`、`Connection Timeout`、`Encrypt`、および `Packet Size` パラメーターも含まれる 2 つの接続文字列の使用を許可する例を次に示します。 その他の接続文字列パラメーターは、すべて制限されます。 + +``` + + + + + +``` + +### カスタム アクセス許可セットを使用した Partial Trust の有効化 + 特定のゾーンに対して アクセス許可を有効にするには、システム管理者がカスタム アクセス許可セットを作成して、目的のゾーンに指定する必要があります。 `LocalIntranet` などの既定のアクセス許可セットは変更できません。 たとえば、 が `LocalIntranet` であるコードに アクセス許可をインクルードするには、システム管理者は `LocalIntranet` アクセス許可セットをコピーして名前を "CustomLocalIntranet" に変更し、 アクセス許可を追加します。次に、[Caspol.exe \(コード アクセス セキュリティ ポリシー ツール\)](../../../../docs/framework/tools/caspol-exe-code-access-security-policy-tool.md) を使用して CustomLocalIntranet アクセス許可セットをインポートし、`LocalIntranet_Zone` のアクセス許可セットを CustomLocalIntranet に設定します。 + +### サンプル アクセス許可セット + 部分信頼のシナリオでの、.NET Framework Data Provider for SQL Server 用アクセス許可セットの例を次に示します。 カスタム アクセス許可セットを作成する方法の詳細については、「[NIB:Configuring Permission Sets Using Caspol.exe](http://msdn.microsoft.com/ja-jp/94e2625e-21ad-4038-af36-6d1f9df40a57)」を参照してください。 + +``` + + + + + + +``` + +## セキュリティ アクセス許可を使用した ADO.NET コード アクセスの検証 + 部分信頼のシナリオでは、 を指定することによって、コード内の特定のメソッドに対する CAS 特権を要求できます。 制限されたセキュリティ ポリシーによって、実際にはその特権が許可されていない場合は、そのコードを実行する前に例外がスローされます。 セキュリティ ポリシーの詳細については、「[NIB: Security Policy Management](http://msdn.microsoft.com/ja-jp/d754e05d-29dc-4d3a-a2c2-95eaaf1b82b9)」および「[NIB: Security Policy Best Practices](http://msdn.microsoft.com/ja-jp/d49bc4d5-efb7-4caa-a2fe-e4d3cec63c05)」を参照してください。 + +### 例 + 次のサンプルは、特定の接続文字列を必要とするコードの作成方法を示しています。 このサンプルは、 に対する無制限の権限を拒否する機能をシミュレートします。この機能は、実際には、システム管理者が、CAS ポリシーを使用して実装します。 + +> [!IMPORTANT] +> ADO.NET の CAS 権限を定義する場合、最も制限の厳しいケース \(権限なし\) から開始し、その後で、コードが実行する特定のタスクに必要な特定の権限を追加するというのが、適切なパターンです。 逆に、すべての権限を与えてから特定の権限を拒否してゆく方法は、安全ではありません。同じ接続文字列を表現する方法が多数あるためです。 たとえば、すべての権限を与えた後で接続文字列 "server\=someserver" の使用を拒否しても、"server\=someserver.mycompany.com" という接続文字列は使用可能です。 常に権限をまったく与えない状態から開始することで、権限セットのセキュリティ ホールを減らすことができます。 + + `SqlClient` でセキュリティ確認要求を実行する方法を、次のコードに示します。CAS の権限が適切に設定されていない場合、 がスローされます。 の出力は、コンソール ウィンドウに表示されます。 + + [!code-csharp[DataWorks SqlClient.CAS#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlClient.CAS/CS/source.cs#1)] + [!code-vb[DataWorks SqlClient.CAS#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlClient.CAS/VB/source.vb#1)] + + コンソール ウィンドウに表示される出力の例を次に示します。 + +``` +Failed, as expected: + + + +Connection opened, as expected. +Failed, as expected: Request failed. +``` + +## アンマネージ コードとの相互運用性 + CLR の外部で実行されるコードはアンマネージ コードと呼ばれます。 したがって、CAS などのセキュリティ メカニズムをアンマネージ コードに適用することはできません。 アンマネージ コードの例としては、COM コンポーネント、ActiveX インターフェイス、Win32 API 関数があります。 アンマネージ コードを実行する場合は、アプリケーションの全体的なセキュリティが損なわれないよう特別な考慮をする必要があります。 詳細については、「[アンマネージ コードとの相互運用](../../../../docs/framework/interop/index.md)」を参照してください。 + + .NET Framework は、COM 相互運用機能を介したアクセスを提供することによって、既存の COM コンポーネントとの下位互換性をサポートしています。 COM 相互運用ツールを使って適切な COM 型をインポートすることにより、.NET Framework アプリケーションに COM コンポーネントを組み込むことができます。 インポートが完了すると、COM 型を使用できるようになります。 アセンブリのメタデータをタイプ ライブラリにエクスポートし、マネージ コンポーネントを COM コンポーネントとして登録することで、COM クライアントからマネージ コードにアクセスすることもできます。 詳細については、「[Advanced COM Interoperability](http://msdn.microsoft.com/ja-jp/3ada36e5-2390-4d70-b490-6ad8de92f2fb)」を参照してください。 + +## 参照 + [ADO.NET アプリケーションのセキュリティ保護](../../../../docs/framework/data/adonet/securing-ado-net-applications.md) + [PAVE Security in Native and .NET Framework Code](http://msdn.microsoft.com/ja-jp/bd61be84-c143-409a-a75a-44253724f784) + [Code Access Security](http://msdn.microsoft.com/ja-jp/23a20143-241d-4fe5-9d9f-3933fd594c03) + [Role\-Based Security](http://msdn.microsoft.com/ja-jp/239442e3-5be4-4203-b7fd-793baffea803) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/commands-and-parameters.md b/docs/framework/data/adonet/commands-and-parameters.md new file mode 100644 index 00000000000..eadd3d095fd --- /dev/null +++ b/docs/framework/data/adonet/commands-and-parameters.md @@ -0,0 +1,44 @@ +--- +title: "コマンドとパラメーター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b623f810-d871-49a5-b0f5-078cc3c34db6 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# コマンドとパラメーター +データ ソースへの接続を確立した後、 オブジェクトを使用してコマンドを実行し、データ ソースから結果を返すことができます。 コマンドは、使用している .NET Framework データ プロバイダーのいずれかのコマンド コンストラクターで作成できます。 コンストラクターには、データ ソースで実行する SQL ステートメント、 オブジェクト、 オブジェクトなど、オプションの引数を渡すことができます。 これらのオブジェクトをコマンドのプロパティとして構成することもできます。 また、`DbConnection` オブジェクトの メソッドを使用して、特定の接続用のコマンドを作成することもできます。 コマンドによって実行される SQL ステートメントは、 プロパティを使って構成できます。 + + .NET Framework に含まれている各 .NET Framework データ プロバイダーは、`Command` オブジェクトを持ちます。 .NET Framework Data Provider for OLE DB には オブジェクト、.NET Framework Data Provider for SQL Server には オブジェクト、.NET Framework Data Provider for ODBC には オブジェクト、.NET Framework Data Provider for Oracle には があります。 + +## このセクションの内容 + [コマンドの実行](../../../../docs/framework/data/adonet/executing-a-command.md) + ADO.NET の `Command` オブジェクトと、それを使用してデータ ソースに対してクエリやコマンドを実行する方法について説明します。 + + [パラメーターおよびパラメーター データ型の構成](../../../../docs/framework/data/adonet/configuring-parameters-and-parameter-data-types.md) + `Command` のパラメーターの使用 \(方向、データ型、パラメーター構文など\) について説明します。 + + [CommandBuilder でのコマンドの生成](../../../../docs/framework/data/adonet/generating-commands-with-commandbuilders.md) + `DataAdapter` に単一テーブルを対象とする SELECT コマンドが割り当てられているときに、コマンド ビルダーを使用して INSERT、UPDATE、DELETE の各コマンドを自動的に生成する方法について説明します。 + + [データベースからの単一の値の取得](../../../../docs/framework/data/adonet/obtaining-a-single-value-from-a-database.md) + `Command` オブジェクトの `ExecuteScalar` メソッドを使用してデータベース クエリから単一の値を返す方法について説明します。 + + [コマンドを使用したデータ変更](../../../../docs/framework/data/adonet/using-commands-to-modify-data.md) + データ プロバイダーを使用して、ストアド プロシージャまたはデータ定義言語 \(DDL\) のステートメントを実行する方法について説明します。 + +## 参照 + [DataAdapter と DataReader](../../../../docs/framework/data/adonet/dataadapters-and-datareaders.md) + [DataSets、DataTables、および DataViews](../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [データ ソースへの接続](../../../../docs/framework/data/adonet/connecting-to-a-data-source.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/common-schema-collections.md b/docs/framework/data/adonet/common-schema-collections.md new file mode 100644 index 00000000000..c0df60dafdb --- /dev/null +++ b/docs/framework/data/adonet/common-schema-collections.md @@ -0,0 +1,107 @@ +--- +title: "共通のスキーマ コレクション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 50127ced-2ac8-4d7a-9cd1-5c98c655ff03 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 共通のスキーマ コレクション +共通のスキーマ コレクションとは、それぞれの .NET Framework マネージ プロバイダーにより実装されるスキーマ コレクションのことです。 .NET Framework マネージ プロバイダーでは、引数を指定しないで、またはスキーマ コレクション名に "MetaDataCollections" を指定して **GetSchema** メソッドを呼び出すことにより、サポートされるスキーマ コレクションの一覧を決定します。 これにより、サポートされるスキーマ コレクションの一覧、それぞれがサポートする制限数、および使用する識別子部分の数と共に、 が返されます。 これらのコレクションは、必要なすべての列を表現します。 プロバイダーでは、任意で列を追加できます。 たとえば、`SqlClient` と `OracleClient` は、ParameterName を制限のコレクションに追加します。 + + プロバイダーでは必要な列の値を特定できない場合、null を返します。 + + **GetSchema** メソッドの使用に関する詳細については、「[GetSchema およびスキーマ コレクション](../../../../docs/framework/data/adonet/getschema-and-schema-collections.md)」を参照してください。 + +## MetaDataCollections + このスキーマ コレクションは、データベースに接続するために現在使用されている、.NET Framework マネージ プロバイダーによりサポートされるすべてのスキーマ コレクションに関する情報を公開します。 + +|ColumnName|DataType|説明| +|----------------|--------------|--------| +|CollectionName|string|コレクションを返すために **GetSchema** メソッドに渡すコレクションの名前。| +|NumberOfRestriction|int|コレクションに対して指定できる制限の数。| +|NumberOfIdentifierParts|int|複合識別子部分とデータベース オブジェクト名部分の数。 たとえば、SQL Server の場合は、テーブルに 3 つ、列に 4 つになります。 Oracle の場合は、テーブルに 2 つ、列に 3 つになります。| + +## DataSourceInformation + このスキーマ コレクションは、.NET Framework マネージ プロバイダーが現在接続しているデータ ソースに関する情報を公開します。 + +|ColumnName|DataType|説明| +|----------------|--------------|--------| +|CompositeIdentifierSeparatorPattern|string|複合識別子内の複合セパレーターと一致する正規表現。 たとえば "\\" です。\(SQL Server の場合\) や、"@|\\." \(Oracle の場合\) のように指定します。

複合識別子は、通常、データベース オブジェクト名で使用されます。たとえば、pubs.dbo.authors または pubs@dbo.authors のようになります。

SQL Server の場合、"\\." という正規表現を使用します。 OracleClient の場合、"@|\\." を使用します。

ODBC の場合、Catalog\_name\_seperator を使用します。

OLE DB の場合、DBLITERAL\_CATALOG\_SEPARATOR または DBLITERAL\_SCHEMA\_SEPARATOR を使用します。| +|DataSourceProductName|string|"Oracle" や "SQLServer" など、プロバイダーによってアクセスされる製品の名前。| +|DataSourceProductVersion|string|プロバイダーによりアクセスされる製品のバージョンを、Microsoft の形式ではなく、データ ソースのネイティブ形式で表します。

場合によっては、DataSourceProductVersion と DataSourceProductVersionNormalized は同じ値になります。 OLE DB と ODBC の場合、これらの値は、元になるネイティブ API 内の同じ関数呼び出しに割り当てられているので、常に同じ値になります。| +|DataSourceProductVersionNormalized|string|`String.Compare()` を使用して比較できるような、データ ソースの正規化されたバージョン。 この形式は、バージョン 10 がバージョン 1 とバージョン 2 の間に並べ替えられることがないように、プロバイダーのすべてのバージョンで一貫しています。

たとえば、Oracle プロバイダーは、正規化されたバージョンで "nn. nn. nn. nn. nn" という形式を使用します。このため、Oracle 8i データ ソースは、"08.01.07.04.01" を返します。 SQL Server では、一般的な Microsoft 形式である "nn. nn. nnnn" を使用します。

場合によっては、DataSourceProductVersion と DataSourceProductVersionNormalized は同じ値になります。 OLE DB と ODBC の場合、これらの値は、元になるネイティブ API 内の同じ関数呼び出しに割り当てられているので、常に同じ値になります。| +|GroupByBehavior||GROUP BY 句の列と SELECT リストの集計以外の列間のリレーションシップを指定します。| +|IdentifierPattern|string|識別子と一致し、その識別子の一致した値がある正規表現。 たとえば "\[A\-Za\-z0\-9\_\#$\]" になります。| +|IdentifierCase||引用符で囲まれていない識別子が、大文字と小文字を区別して扱われるかどうかを示します。| +|OrderByColumnsInSelect|bool|ORDER BY 句の列が SELECT リストになければならないかどうかを示します。 値が true である場合、SELECT リストになければならないことを示します。値が false である場合、SELECT リストにある必要がないことを示します。| +|ParameterMarkerFormat|string|パラメーターを書式設定する方法を表す書式文字列。

名前付きパラメーターがデータ ソースでサポートされている場合、この文字列内の最初のプレースホルダーは、パラメーター名が書式設定される場所である必要があります。

たとえば、データ ソースが名前に ":" というプレフィックスが付いたパラメーターを要求している場合、これは ":{0}" になります。 これを "p1" のパラメーター名で書式設定すると、結果の文字列は ":p1" になります。

データ ソースが "@" というプレフィックスが付いたパラメーターを要求しているが、既に名前に含まれている場合、"{0}" になります。"@p1" というパラメーターを書式設定した結果は、単に "@p1" になります。

名前付きパラメーターを要求せず、"?" 文字の使用を要求するデータ ソースの場合、書式文字列は、パラメーター名を無視する "?" として指定できます。 OLE DB の場合、"?" を返します。| +|ParameterMarkerPattern|string|パラメーター マーカーと一致する正規表現。 パラメーター名の一致する値になります \(一致する値がある場合\)。

たとえば、パラメーター名に "@" という前置文字が含まれている、名前付きパラメーターがサポートされている場合、"\(@\[A\-Za\-z0\-9\_$\#\]\*\)" となります。

ただし、前置文字として ":" が付いた名前付きパラメーターがサポートされていて、":" がパラメーター名の一部になっていない場合、":\(\[A\-Za\-z0\-9\_$\#\]\*\)" となります。

もちろん、データ ソースが名前付きパラメーターをサポートしない場合は、単に "?" になります。| +|ParameterNameMaxLength|int|パラメーター名の文字の最大長。 Visual Studio では、パラメーター名がサポートされている場合、最大長の最小値が 30 文字であることを想定しています。

データ ソースが名前付きパラメーターをサポートしない場合、このプロパティは 0 を返します。| +|ParameterNamePattern|string|有効なパラメーター名と一致する正規表現。 異なるデータ ソースでは、パラメーター名として使用できる文字に関して、規則が異なります。

Visual Studio では、パラメーター名がサポートされている場合、文字 "\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Nd}" が、パラメーター名として有効な、サポートされる最小限の文字のセットです。| +|QuotedIdentifierPattern|string|引用符で囲まれた識別子と一致し、引用符を除いた識別子自体の一致する値のある正規表現。 たとえば、データ ソースが引用符で囲まれた識別子を識別するために、二重引用符を使用した場合、"\(\(\[^\\"\]|\\"\\"\)\*\)" になります。| +|QuotedIdentifierCase||引用符で囲まれた識別子が、大文字と小文字を区別して扱われるかどうかを示します。| +|StatementSeparatorPattern|string|ステートメント区切り文字と一致する正規表現。| +|StringLiteralPattern|string|文字列リテラルと一致し、リテラル自体の一致する値のある正規表現。 たとえば、データ ソースが文字列を識別するために単一引用符を使用した場合、"\('\(\[^'\]|''\)\*'\)"' になります。| +|SupportedJoinOperators||データ ソースでサポートされる SQL の JOIN ステートメントの種類を指定します。| + +## DataTypes + このスキーマ コレクションは、.NET Framework マネージ プロバイダーが現在接続されているデータベースでサポートされているデータ型に関する情報を公開します。 + +|ColumnName|DataType|説明| +|----------------|--------------|--------| +|TypeName|string|プロバイダー固有のデータ型の名前。| +|ProviderDbType|int|パラメーターの型を指定するときに使用する必要のある、プロバイダー固有の型の値。 たとえば、SqlDbType.Money または OracleType.Blob になります。| +|ColumnSize|long|数値以外の列またはパラメーターの長さは、最大長か、プロバイダーによりこの型に定義された長さのいずれかを参照します。

文字データの場合、これは、最大長か、データ ソースにより定義されている単位で定義された長さです。 Oracle には、長さを指定してから、一部の文字データ型の実際の格納サイズを指定するという概念があります。 これは、Oracle の単位で長さのみを定義します。

日時のデータ型の場合、これは \(秒の小数部構成要素の最大有効桁数を前提として\) 文字列表現の長さです。

データ型が数値である場合、これは、データ型の最大有効桁数の上限です。| +|CreateFormat|string|CREATE TABLE などのデータ定義ステートメントに、この列を追加する方法を示す書式文字列。 CreateParameter 配列の各要素は、書式文字列内で "パラメーター マーカー" で表される必要があります。

たとえば、SQL データ型の DECIMAL には Precision と Scale が必要です。 この場合、書式文字列は "DECIMAL\({0},{1}\)" になります。| +|CreateParameters|string|このデータ型の列を作成する場合に指定する必要のある作成パラメーター。 各作成パラメーターは、指定される順序で、コンマで区切られた一覧として文字列内に示されます。

たとえば、SQL データ型の DECIMAL には Precision と Scale が必要です。 この場合、作成パラメーターには、"precision, scale" という文字列が含まれる必要があります。

precision を 10、scale を 2 として DECIMAL 列を作成するためのテキスト コマンド内では、CreateFormat 列の値は DECIMAL\({0},{1}\) になり、完全な型指定は DECIMAL\(10,2\) になります。| +|DataType|string|データ型の .NET Framework 型の名前。| +|IsAutoincrementable|bool|true の場合、このデータ型の値で自動インクリメントが行われます。

false の場合、このデータ型の値で自動インクリメントは行われません。

このデータ型の 1 つの列で自動インクリメントが行われるかどうかを示しているだけであり、この型のすべての列で自動インクリメントが行われるわけではないことに注意してください。| +|IsBestMatch|bool|true の場合、データ ストア内のすべてのデータ型と、DataType 列の値により指定されている .NET Framework データ型との間で、最も一致するデータ型になります。

false の場合、データ型は、最も一致するデータ型ではありません。

DataType 列の値が同じ行のセットでは、1 行だけで BestMatch 列が true に設定されます。| +|IsCaseSensitive|bool|true の場合、データ型は文字型であり、大文字と小文字が区別されます。

false の場合、データ型は文字型ではなく、大文字と小文字は区別されません。| +|IsFixedLength|bool|true の場合、データ定義言語 \(DDL\) により作成されたこのデータ型の列は、固定長になります。

false の場合、DDL により作成されたこのデータ型の列は、可変長になります。

DBNull.Value の場合、プロバイダーがこのフィールドを固定長の列または可変長の列のどちらで割り当てるかは不明です。| +|IsFixedPrecisionScale|bool|true の場合、データ型には、固定有効桁数と小数点以下桁数があります。

false の場合、データ型には、固定有効桁数と小数点以下桁数がありません。| +|IsLong|bool|true の場合、データ型には、非常に長いデータが含まれます。非常に長いデータの定義は、プロバイダーによって異なります。

false の場合、データ型には、非常に長いデータは含まれません。| +|IsNullable|bool|true の場合、データ型は null に設定できます。

false の場合、データ型は null に設定できません。

DBNull.Value の場合、データ型を null に設定できるかどうかは不明です。| +|IsSearchable|bool|true の場合、データ型は、LIKE 述語を除く任意の演算子と共に WHERE 句で使用できます。

false の場合、データ型は、LIKE 述語を除く任意の演算子と共に WHERE 句で使用できません。| +|IsSearchableWithLike|bool|true の場合、データ型は、LIKE 述語と共に使用できます。

false の場合、データ型は、LIKE 述語と共に使用できません。| +|IsUnsigned|bool|true の場合、データ型は符号なしになります。

false の場合、データ型は符号付きになります。

DBNull.Value の場合、データ型に適用されません。| +|MaximumScale|short|型インジケーターが数値型である場合、小数点の右側にとることができる最大桁数になります。 それ以外の場合は DBNull.Value になります。| +|MinimumScale|short|型インジケーターが数値型である場合、小数点の右側にとることができる最小桁数になります。 それ以外の場合は DBNull.Value になります。| +|IsConcurrencyType|bool|true の場合、データ型は、行が変更されるたびにデータベースにより更新され、列の値がすべての前の値とは異なります。

false の場合、行が変更されるたびにデータ型がデータベースにより更新されることはありません。

DBNull.Value の場合、データベースでは、この型のデータ型をサポートしません。| +|IsLiteralsSupported|bool|true の場合、データ型は、リテラルとして表現できます。

false の場合、データ型は、リテラルとして表現できません。| +|LiteralPrefix|string|指定されたリテラルに適用されるプレフィックス。| +|LitteralSuffix|string|指定されたリテラルに適用されるサフィックス。| +|NativeDataType|String|NativeDataType は、データ型の OLE DB 型を公開するための OLE DB 固有の列です。| + +## 制約 + このスキーマ コレクションは、データベースへの接続に現在使用されている、.NET Framework マネージ プロバイダーでサポートされる制限に関する情報を公開します。 + +|ColumnName|DataType|説明| +|----------------|--------------|--------| +|CollectionName|string|これらの制限を適用するコレクションの名前。| +|RestrictionName|string|コレクション内の制限の名前。| +|RestrictionDefault|string|無視されます。| +|RestrictionNumber|int|この特定の制限が収まっているコレクションの制限内の実際の位置。| + +## ReservedWords + このスキーマ コレクションは、.NET Framework マネージ プロバイダーが現在接続されているデータベースにより予約されている予約語に関する情報を公開します。 + +|ColumnName|DataType|説明| +|----------------|--------------|--------| +|ReservedWords|string|プロバイダー固有の予約語。| + +## 参照 + [データベース スキーマ情報の取得](../../../../docs/framework/data/adonet/retrieving-database-schema-information.md) + [GetSchema およびスキーマ コレクション](../../../../docs/framework/data/adonet/getschema-and-schema-collections.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/comparing-datarows-linq-to-dataset.md b/docs/framework/data/adonet/comparing-datarows-linq-to-dataset.md new file mode 100644 index 00000000000..d828925e26d --- /dev/null +++ b/docs/framework/data/adonet/comparing-datarows-linq-to-dataset.md @@ -0,0 +1,48 @@ +--- +title: "Comparing DataRows (LINQ to DataSet) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8fe0eadf-297b-487c-8d4b-7816753c2883 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Comparing DataRows (LINQ to DataSet) +[!INCLUDE[vbteclinqext](../../../../includes/vbteclinqext-md.md)] では、ソース要素を比較し、両者が等しいかどうかを調べるための各種の集合演算子が定義されています。 [!INCLUDE[vbteclinq](../../../../includes/vbteclinq-md.md)] が提供している集合演算子は次のとおりです。 + +- + +- + +- + +- + + これらの演算子は、要素のコレクションに対して メソッドおよび メソッドを呼び出すことによってソース要素を比較します。 の場合、これらの演算子によって実行されるのは参照の比較です。表形式のデータに対する集合演算においては適切な動作とは言えません。 通常、集合演算で重要なのは要素の値が等しいかどうかであって、要素の参照が等しいかどうかではありません。 このような理由から、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] に クラスが追加されました。 このクラスを使用することで行の値を比較できます。 + + クラスには、 の値を比較するための機能が実装されています。このクラスを などの集合演算に使用できます。 このクラスを直接インスタンス化することはできません。代わりに、 プロパティを使用して、 のインスタンスを取得する必要があります。 その後、 メソッドを呼び出す際、比較する 2 つの オブジェクトを入力パラメーターとして渡します。 メソッドは、2 つの オブジェクトに含まれる一連の列値が等しければ `true` を、それ以外の場合は `false` を返します。 + +## 例 + この例では、両方のテーブルに存在する連絡先を `Intersect` を使用して取得します。 + + [!code-csharp[DP LINQ to DataSet Examples#Intersect2](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/CS/Program.cs#intersect2)] + [!code-vb[DP LINQ to DataSet Examples#Intersect2](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/VB/Module1.vb#intersect2)] + +### 例 + 次の例では、2 つの行を比較して、そのハッシュ コードを取得します。 + + [!code-vb[DP LINQ to DataSet Examples#CompareDifferentRows](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/VB/Module1.vb#comparedifferentrows)] + +## 参照 + + [Loading Data Into a DataSet](../../../../docs/framework/data/adonet/loading-data-into-a-dataset.md) + [LINQ to DataSet Examples](../../../../docs/framework/data/adonet/linq-to-dataset-examples.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/complex-type.md b/docs/framework/data/adonet/complex-type.md new file mode 100644 index 00000000000..d2f72a32d7a --- /dev/null +++ b/docs/framework/data/adonet/complex-type.md @@ -0,0 +1,49 @@ +--- +title: "複合型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 63efbd23-11d4-4871-bc88-ad01b9837553 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 複合型 +*複合型*は、[エンティティ型](../../../../docs/framework/data/adonet/entity-type.md)またはその他の複合型に、構造化された豊富なプロパティを定義するためのテンプレートです。 各テンプレートには、以下が含まれています。 + +- 一意の名前 \(必須\) + + > [!NOTE] + > 複合型の名前は、同じ名前空間のエンティティ型の名前と同じにすることはできません。 + +- 1 つ以上の[プロパティ](../../../../docs/framework/data/adonet/property.md)の形式のデータ。 \(省略可能\) + + > [!NOTE] + > 複合型のプロパティには、別の複合型を使用することができます。 + + 複合型は、プリミティブ型のプロパティまたはその他の複合型の形式でデータ ペイロードを伝達できる点がエンティティ型と似ています。 ただし、複合型とエンティティ型の間にはいくつかの重要な違いがあります。 + +- 複合型には ID がないため、独立して存在することができません。 複合型は、エンティティ型またはその他の複合型のプロパティとしてのみ存在できます。 + +- 複合型は、[アソシエーション](../../../../docs/framework/data/adonet/association-type.md)に参加できません。 アソシエーションのいずれの End にも複合型を指定できないため、複合型には[ナビゲーション プロパティ](../../../../docs/framework/data/adonet/navigation-property.md)を定義できません。 + +## 例 + [ADO.NET Entity Framework](../../../../docs/framework/data/adonet/ef/index.md) では、概念スキーマ定義言語 \([CSDL](../../../../docs/framework/data/adonet/ef/language-reference/csdl-specification.md)\) と呼ばれるドメイン固有言語 \(DSL\) を使用して概念モデルを定義します。 次の CSDL は、`StreetAddress`、`City`、`StateOrProvince`、`Country`、および `PostalCode` のプリミティブ型のプロパティの複合型 Address を定義しています。 + + [!code-xml[EDM_Example_Model#ComplexTypeExample](../../../../samples/snippets/xml/VS_Snippets_Data/edm_example_model/xml/books2.edmx#complextypeexample)] + + エンティティ型のプロパティとして複合型 `Address` \(上の図\) を定義するには、エンティティ型の定義にプロパティの型を宣言する必要があります。 次の CSDL は、エンティティ型 \(Publisher\) に複合型として `Address` プロパティを宣言しています。 + + [!code-xml[EDM_Example_Model#EntityWithComplexType](../../../../samples/snippets/xml/VS_Snippets_Data/edm_example_model/xml/books3.edmx#entitywithcomplextype)] + +## 参照 + [Entity Data Model キーの概念](../../../../docs/framework/data/adonet/entity-data-model-key-concepts.md) + [Entity Data Model](../../../../docs/framework/data/adonet/entity-data-model.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/configuring-parameters-and-parameter-data-types.md b/docs/framework/data/adonet/configuring-parameters-and-parameter-data-types.md new file mode 100644 index 00000000000..36c9bd36c95 --- /dev/null +++ b/docs/framework/data/adonet/configuring-parameters-and-parameter-data-types.md @@ -0,0 +1,206 @@ +--- +title: "パラメーターおよびパラメーター データ型の構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 537d8a2c-d40b-4000-83eb-bc1fcc93f707 +caps.latest.revision: 6 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 6 +--- +# パラメーターおよびパラメーター データ型の構成 +コマンド オブジェクトは、パラメーターを使用して SQL ステートメントまたはストアド プロシージャに値を渡すことによって、型チェックと検証の機能を実現します。 コマンド テキストとは異なり、パラメーターの入力は実行可能なコードとしてではなく、リテラル値として扱われます。 これにより、攻撃者がサーバーのセキュリティを侵害するコマンドを SQL ステートメントに "注入" する SQL インジェクション攻撃を防ぐことができます。 + + パラメーター化コマンドによりクエリ実行パフォーマンスも向上します。これは、データベース サーバーが入力コマンドを適切なキャッシュ済みクエリ プランに正確に一致させるのに役立つためです。 詳細については、SQL Server オンライン ブックの「[実行プランのキャッシュと再利用](http://go.microsoft.com/fwlink/?LinkId=120424)」および「[パラメーターと実行プランの再利用](http://go.microsoft.com/fwlink/?LinkId=120423)」を参照してください。 セキュリティおよびパフォーマンス上の利点に加え、パラメーター化コマンドを使用すると、データ ソースに渡す値を簡単に扱うことができます。 + + オブジェクトは、コンストラクターを使って作成できるほか、 コレクションの `Add` メソッドを呼び出し、 にオブジェクトを追加することによって作成することもできます。`Add` メソッドは、コンストラクター引数または既存のパラメーター オブジェクトを入力として受け取ります。この点はデータ プロバイダーによっても異なります。 + +## ParameterDirection プロパティの指定 + パラメーターを追加する際は、入力パラメーターとは別に、パラメーターの プロパティを指定する必要があります。`ParameterDirection` で使用できる の値を次の表に示します。 + +|メンバー名|説明| +|-----------|--------| +||このパラメーターは入力パラメーターです。 既定値です。| +||このパラメーターは入力と出力の両方の機能を持っています。| +||このパラメーターは出力パラメーターです。| +||パラメーターは、ストアド プロシージャ、組み込み関数、ユーザー定義関数などの操作からの戻り値を表します。| + +## パラメーターのプレースホルダーの使用 + パラメーターのプレースホルダーの構文はデータ ソースに依存します。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] のデータ プロバイダーによって、パラメーターおよびパラメーターのプレースホルダーの名前付けや指定方法が異なります。 次の表に示すように、データ ソースごとに固有の構文が採用されています。 + +|データ プロバイダー|パラメーターの名前付け構文| +|----------------|-------------------| +||`@` *parametername* 形式の名前付きパラメーターが使用されます。| +||疑問符 \(`?`\) で指定される位置パラメーター マーカーが使用されます。| +||疑問符 \(`?`\) で指定される位置パラメーター マーカーが使用されます。| +||`:` *parmname* \(または *parmname*\) 形式の名前付きパラメーターが使用されます。| + +## パラメーターのデータ型の指定 + パラメーターのデータ型は [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーに固有の属性です。 型が指定されている場合は、その値がデータ ソースに渡される前に `Parameter` の値が [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダー型に変換されます。`Parameter` オブジェクトの `DbType` プロパティを特定の `Parameter` に設定する一般的な方法で の型を指定することもできます。 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] オブジェクトの `Parameter` データ プロバイダー型は、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] オブジェクトの `Value` の `Parameter` 型、または `DbType` オブジェクトの `Parameter` から推論されます。`Parameter` 値として渡されるオブジェクトまたは指定された `Parameter` に基づいて推論される `DbType` 型を、次の表に示します。 + +|.NET Framework 型|DbType|SqlDbType|OleDbType|OdbcType|OracleType| +|----------------------|------------|---------------|---------------|--------------|----------------| +||ブール型|ビット|Boolean|ビット|Byte| +||Byte|TinyInt|UnsignedTinyInt|TinyInt|Byte| +|byte\[\]|2 項|VarBinary`.` 。バイト配列が VarBinary の最大サイズ \(8000 バイト\) より大きい場合、この暗黙の変換はエラーになります。8000 バイトを超えるバイト配列の場合は、明示的に を設定してください。|VarBinary|2 項|Raw| +||``|char から への推論はサポートされていません。|Char|Char|Byte| +||DateTime|DateTime|DBTimeStamp|DateTime|DateTime| +||DateTimeOffset|SQL Server 2008 の DateTimeOffset。 SQL Server 2008 より前のバージョンの SQL Server では、DateTimeOffset から への推論はサポートされていません。|||DateTime| +||Decimal \(10 進数型\)|Decimal \(10 進数型\)|Decimal \(10 進数型\)|数字|Number| +||倍精度浮動小数点型|Float|Double \(倍精度浮動小数点型\)|Double \(倍精度浮動小数点型\)|倍精度浮動小数点型| +||Single|Real|Single|Real|Float| +||Guid|UniqueIdentifier|Guid|UniqueIdentifier|Raw| +||Int16|SmallInt|SmallInt|SmallInt|Int16| +||Int32|Int|Int|Int|Int32| +||Int64|BigInt|BigInt|BigInt|Number| +||オブジェクト|バリアント|バリアント|Object から OdbcType への推論はサポートされていません。|Blob| +||String|NVarChar。 文字列が NVarChar の最大サイズ \(4000 文字\) より大きい場合、この暗黙の変換はエラーになります。 4000 文字を超える文字列の場合は、明示的に を設定してください。|VarWChar|NVarChar|NVarChar| +||時間|SQL Server 2008 の Time。 SQL Server 2008 より前のバージョンの SQL Server では、TimeSpan から への推論はサポートされていません。|DBTime|時刻|DateTime| +||UInt16|UInt16 から への推論はサポートされていません。|UnsignedSmallInt|Int|UInt16| +||UInt32|UInt32 から への推論はサポートされていません。|UnsignedInt|BigInt|UInt32| +||UInt64|UInt64 から への推論はサポートされていません。|UnsignedBigInt|数字|Number| +||AnsiString|VarChar|VarChar|VarChar|VarChar| +||AnsiStringFixedLength|Char|Char|Char|Char| +|``|通貨|通貨|通貨|`OdbcType` から `Currency` への推論はサポートされていません。|Number| +|``|日付|SQL Server 2008 の Date。 SQL Server 2008 より前のバージョンの SQL Server では、Date から への推論はサポートされていません。|DBDate|日付|DateTime| +|``|SByte|SByte から への推論はサポートされていません。|TinyInt|SByte から `OdbcType` への推論はサポートされていません。|SByte| +||StringFixedLength|NChar|WChar|NChar|NChar| +||時刻|SQL Server 2008 の Time。 SQL Server 2008 より前のバージョンの SQL Server では、Time から への推論はサポートされていません。|DBTime|時刻|DateTime| +||VarNumeric|VarNumeric から への推論はサポートされていません。|VarNumeric|VarNumeric から `OdbcType` への推論はサポートされていません。|Number| +|ユーザー定義型 \( を持つオブジェクト\)|プロバイダーに応じて Object または String \(SqlClient は常に Object を返し、Odbc は常に String を返します。OleDb マネージ データ プロバイダーはいずれかを表示できます\)。| がある場合は SqlDbType.Udt、それ以外の場合は Variant。|OleDbType.VarWChar \(値が null の場合\)、それ以外の場合は OleDbType.Variant。|OdbcType.NVarChar|サポート外| + +> [!NOTE] +> decimal から他の型への変換は縮小変換になるため、decimal 値は最も近い整数値に切り捨てられます。 変換結果が対象の型にならなかった場合、 がスローされます。 + +> [!NOTE] +> サーバーに NULL パラメーター値を送信する場合は、 \(`null` の場合は `Nothing`\) ではなく、[!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] を指定する必要があります。 システムの null 値は、値のない空オブジェクトです。 は、null 値を表すために使用します。 データベースの NULL 値の詳細については、「[NULL 値の処理](../../../../docs/framework/data/adonet/sql/handling-null-values.md)」を参照してください。 + +## パラメーター情報の派生 + `DbCommandBuilder` クラスを使用してストアド プロシージャからパラメーターを派生させることができます。`SqlCommandBuilder` クラスと `OleDbCommandBuilder` クラスはどちらも静的メソッド `DeriveParameters` を提供します。このメソッドは、ストアド プロシージャから得られたパラメーター情報を使用して、コマンド オブジェクトのパラメーター コレクションを設定します。`DeriveParameters` はコマンドの既存のパラメーター情報を上書きします。 + +> [!NOTE] +> パラメーター情報を派生させた場合、情報を取得するためにデータ ソースへのラウンド トリップが 1 つ増えるため、パフォーマンスが低下します。 パラメーター情報がデザイン時にわかっている場合は、パラメーターを明示的に設定することでアプリケーションのパフォーマンスを改善できます。 + + 詳細については、「[CommandBuilder でのコマンドの生成](../../../../docs/framework/data/adonet/generating-commands-with-commandbuilders.md)」を参照してください。 + +## SqlCommand およびストアド プロシージャでのパラメーターの使用 + ストアド プロシージャは、データドリブンのアプリケーションに多くの利点を提供します。 ストアド プロシージャを使用すると、データベースの操作を単一のコマンドにカプセル化し、最大のパフォーマンスが得られるように最適化し、さらに追加のセキュリティ機能を使用して、セキュリティを強化することができます。 ストアド プロシージャは、ストアド プロシージャ名の後にパラメーター引数を記述して SQL ステートメントとして渡すことで呼び出すことができますが、 の [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] オブジェクトの コレクションを使用すると、ストアド プロシージャ パラメーターをより明示的に定義でき、出力パラメーターや戻り値にもアクセスできます。 + +> [!NOTE] +> パラメーター化ステートメントは、`sp_executesql,` を使ってサーバー上で実行されるため、クエリ プランの再利用が可能になります。`sp_executesql` バッチ内のローカル カーソルまたはローカル変数は、`sp_executesql` を呼び出すバッチでは認識されません。 データベース コンテキストの変更は、`sp_executesql` ステートメント終了時まで有効です。 詳細については、SQL Server オンライン ブックを参照してください。 + + でパラメーターを使用して SQL Server のストアド プロシージャを実行する場合は、 コレクションに追加したパラメーターの名前が、ストアド プロシージャ内のパラメーター マーカーの名前と一致している必要があります。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for SQL Server は、SQL ステートメントまたはストアド プロシージャにパラメーターを渡す場合の疑問符 \(?\) プレースホルダーをサポートしていません。 ストアド プロシージャ内のパラメーターは名前付きのパラメーターと見なされ、一致するパラメーター マーカーが検索されます。 たとえば、`CustOrderHist` ストアド プロシージャが、`@CustomerID` という名前のパラメーターで定義されているとします。 このストアド プロシージャを実行する場合、実行元のコードでも `@CustomerID` という名前のパラメーターを使用する必要があります。 + +``` +CREATE PROCEDURE dbo.CustOrderHist @CustomerID varchar(5) +``` + +### 例 + 次の例では、`Northwind` サンプル データベースにある SQL Server ストアド プロシージャを呼び出す方法を説明します。 ストアド プロシージャの名前は `dbo.SalesByCategory` で、`@CategoryName` データ型の `nvarchar(15)` という名前の入力パラメーターを持ちます。 このコードでは、プロシージャの終了時に接続が破棄されるように、using ブロック内で新しい を作成しています。 オブジェクトおよび オブジェクトが作成され、それぞれのプロパティが設定されます。 によって `SqlCommand` が実行された後、ストアド プロシージャから結果セットが返されて、出力がコンソール ウィンドウに表示されます。 + +> [!NOTE] +> `SqlCommand` オブジェクトと `SqlParameter` オブジェクトを作成してから別個のステートメントでプロパティを設定する代わりに、オーバーロード コンストラクターを使用して複数のプロパティを 1 つのステートメントで設定することもできます。 + + [!code-csharp[DataWorks SqlClient.StoredProcedure#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlClient.StoredProcedure/CS/source.cs#1)] + [!code-vb[DataWorks SqlClient.StoredProcedure#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlClient.StoredProcedure/VB/source.vb#1)] + +## OleDbCommand または OdbcCommand によるパラメーターの使用 + または でパラメーターを使用するときは、`Parameters` コレクションにパラメーターが追加されている順序が、ストアド プロシージャ内でパラメーターが定義されている順序と一致している必要があります。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB と [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for ODBC は、ストアド プロシージャ内のパラメーターをプレースホルダーとして処理し、順にパラメーター値を適用します。 また、戻り値パラメーターは、`Parameters` コレクションに最初に追加されたパラメーターにする必要があります。 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB と [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for ODBC は、SQL ステートメントまたはストアド プロシージャにパラメーターを渡す場合の名前付きのパラメーターをサポートしていません。 この場合は、次の例に示すように、疑問符 \(?\) プレースホルダーを使用する必要があります。 + +``` +SELECT * FROM Customers WHERE CustomerID = ? +``` + + したがって、`Parameter` コレクションに `Parameters` オブジェクトを追加する順序は、パラメーターの疑問符 \(?\) プレースホルダーの位置と完全に対応している必要があります。 + +### OleDb の例 + +```vb +Dim command As OleDbCommand = New OleDbCommand( _ + "SampleProc", connection) +command.CommandType = CommandType.StoredProcedure + +Dim parameter As OleDbParameter = command.Parameters.Add( _ + "RETURN_VALUE", OleDbType.Integer) +parameter.Direction = ParameterDirection.ReturnValue + +parameter = command.Parameters.Add( _ + "@InputParm", OleDbType.VarChar, 12) +parameter.Value = "Sample Value" + +parameter = command.Parameters.Add( _ + "@OutputParm", OleDbType.VarChar, 28) +parameter.Direction = ParameterDirection.Output +``` + +```csharp +OleDbCommand command = new OleDbCommand("SampleProc", connection); +command.CommandType = CommandType.StoredProcedure; + +OleDbParameter parameter = command.Parameters.Add( + "RETURN_VALUE", OleDbType.Integer); +parameter.Direction = ParameterDirection.ReturnValue; + +parameter = command.Parameters.Add( + "@InputParm", OleDbType.VarChar, 12); +parameter.Value = "Sample Value"; + +parameter = command.Parameters.Add( + "@OutputParm", OleDbType.VarChar, 28); +parameter.Direction = ParameterDirection.Output; +``` + +## Odbc の例 + +```vb +Dim command As OdbcCommand = New OdbcCommand( _ + "{ ? = CALL SampleProc(?, ?) }", connection) +command.CommandType = CommandType.StoredProcedure + +Dim parameter As OdbcParameter = command.Parameters.Add("RETURN_VALUE", OdbcType.Int) +parameter.Direction = ParameterDirection.ReturnValue + +parameter = command.Parameters.Add( _ + "@InputParm", OdbcType.VarChar, 12) +parameter.Value = "Sample Value" + +parameter = command.Parameters.Add( _ + "@OutputParm", OdbcType.VarChar, 28) +parameter.Direction = ParameterDirection.Output +``` + +```csharp +OdbcCommand command = new OdbcCommand( _ + "{ ? = CALL SampleProc(?, ?) }", connection); +command.CommandType = CommandType.StoredProcedure; + +OdbcParameter parameter = command.Parameters.Add( _ + "RETURN_VALUE", OdbcType.Int); +parameter.Direction = ParameterDirection.ReturnValue; + +parameter = command.Parameters.Add( _ + "@InputParm", OdbcType.VarChar, 12); +parameter.Value = "Sample Value"; + +parameter = command.Parameters.Add( _ + "@OutputParm", OdbcType.VarChar, 28); +parameter.Direction = ParameterDirection.Output; +``` + +## 参照 + [コマンドとパラメーター](../../../../docs/framework/data/adonet/commands-and-parameters.md) + [DataAdapter パラメーター](../../../../docs/framework/data/adonet/dataadapter-parameters.md) + [ADO.NET でのデータ型のマッピング](../../../../docs/framework/data/adonet/data-type-mappings-in-ado-net.md) + [ADO.NET のマネージ プロバイダーと DataSet デベロッパー センター](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/connecting-to-a-data-source.md b/docs/framework/data/adonet/connecting-to-a-data-source.md new file mode 100644 index 00000000000..7fa077c12d2 --- /dev/null +++ b/docs/framework/data/adonet/connecting-to-a-data-source.md @@ -0,0 +1,37 @@ +--- +title: "ADO.NET でのデータ ソースへの接続 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9abc3f92-1be3-4e1a-b360-762dc689650e +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# ADO.NET でのデータ ソースへの接続 +ADO.NET では、**Connection** オブジェクトを使用して、接続文字列に必要な認証情報を指定することにより、特定のデータ ソースに接続します。 どの **Connection** オブジェクトを使用するかは、データ ソースの種類によって異なります。 + + .NET Framework に含まれている各 .NET Framework データ プロバイダーは、 オブジェクトを持っています。.NET Framework Data Provider for OLE DB には オブジェクト、.NET Framework Data Provider for SQL Server には オブジェクト、.NET Framework Data Provider for ODBC には オブジェクト、.NET Framework Data Provider for Oracle には があります。 + +## このセクションの内容 + [接続の確立](../../../../docs/framework/data/adonet/establishing-the-connection.md) + **Connection** オブジェクトを使用して、データ ソースとの接続を確立する方法について説明します。 + + [接続イベント](../../../../docs/framework/data/adonet/connection-events.md) + **InfoMessage** イベントを使用してデータ ソースから情報メッセージを取得する方法について説明します。 + +## 参照 + [接続文字列](../../../../docs/framework/data/adonet/connection-strings.md) + [接続プール](../../../../docs/framework/data/adonet/connection-pooling.md) + [コマンドとパラメーター](../../../../docs/framework/data/adonet/commands-and-parameters.md) + [DataAdapter と DataReader](../../../../docs/framework/data/adonet/dataadapters-and-datareaders.md) + [トランザクションと同時実行](../../../../docs/framework/data/adonet/transactions-and-concurrency.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/connection-events.md b/docs/framework/data/adonet/connection-events.md new file mode 100644 index 00000000000..a04fb9e4223 --- /dev/null +++ b/docs/framework/data/adonet/connection-events.md @@ -0,0 +1,117 @@ +--- +title: "接続イベント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5a29de74-acfc-4134-8616-829dd7ce0710 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 接続イベント +すべての .NET Framework データ プロバイダーには、データ ソースから情報メッセージを取得したり、**Connection** 状態の変化を確認したりするために使用できる 2 つのイベントを持った **Connection** オブジェクトがあります。 **Connection** オブジェクトのイベントを次の表に示します。 + +|Event|説明| +|-----------|--------| +|**InfoMessage**|データ ソースから情報メッセージが返されたときに発生します。 情報メッセージはデータ ソースからのメッセージであり、例外はスローされません。| +|**StateChange**|**Connection** の状態が変化したときに発生します。| + +## InfoMessage イベントの使用 + オブジェクトの イベントを使用して、SQL Server データ ソースから警告や情報メッセージを取得できます。 重大度レベルが 11 から 16 のエラーがデータ ソースから返されると、例外がスローされます。 イベントを使用して、エラーに関連付けられていないメッセージをデータ ソースから取得することもできます。 Microsoft SQL Server の場合は、重大度レベルが 10 以下のエラーは情報メッセージと見なされ、 イベントでキャプチャされます。 詳細については、SQL Server オンライン ブックの「エラー メッセージ重大度レベル」を参照してください。 + + イベントは オブジェクトを受け取りますが、その **Errors** プロパティにはデータ ソースからのメッセージのコレクションが格納されています。 このコレクションの中の **Error** オブジェクトにエラー番号、メッセージ テキスト、およびエラーの原因を問い合わせることができます。 .NET Framework Data Provider for SQL Server には、データベースの詳細情報、ストアド プロシージャ、およびメッセージ送信元の行番号も含まれます。 + +### 例 + イベントのイベント ハンドラーを追加する方法を次のコード サンプルに示します。 + +```vb +' Assumes that connection represents a SqlConnection object. + AddHandler connection.InfoMessage, _ + New SqlInfoMessageEventHandler(AddressOf OnInfoMessage) + +Private Shared Sub OnInfoMessage(sender As Object, _ + args As SqlInfoMessageEventArgs) + Dim err As SqlError + For Each err In args.Errors + Console.WriteLine("The {0} has received a severity {1}, _ + state {2} error number {3}\n" & _ + "on line {4} of procedure {5} on server {6}:\n{7}", _ + err.Source, err.Class, err.State, err.Number, err.LineNumber, _ + err.Procedure, err.Server, err.Message) + Next +End Sub + +``` + +```csharp +// Assumes that connection represents a SqlConnection object. + connection.InfoMessage += + new SqlInfoMessageEventHandler(OnInfoMessage); + +protected static void OnInfoMessage( + object sender, SqlInfoMessageEventArgs args) +{ + foreach (SqlError err in args.Errors) + { + Console.WriteLine( + "The {0} has received a severity {1}, state {2} error number {3}\n" + + "on line {4} of procedure {5} on server {6}:\n{7}", + err.Source, err.Class, err.State, err.Number, err.LineNumber, + err.Procedure, err.Server, err.Message); + } +} + +``` + +## InfoMessages としてのエラー処理 + イベントは通常、サーバーが情報メッセージまたは警告メッセージを送信した場合に限り発生します。 ただし、実際にエラーが発生した場合は、サーバーの操作を開始した **ExecuteNonQuery** メソッドまたは **ExecuteReader** メソッドの実行は停止され、例外がスローされます。 + + サーバーでエラーが発生してもコマンド内の残りのステートメントの処理を続行する場合は、 プロパティを `true` に設定します。 このように設定すると、エラーが発生したとき、接続は例外をスローして処理を中断する代わりに、 イベントを発生させます。 クライアント アプリケーションは、このイベントを処理し、エラーに応答できます。 + +> [!NOTE] +> 重大度レベルが 17 以上のエラーが発生すると、サーバーのコマンド処理が停止します。このエラーは、例外として処理する必要があります。 この場合、 イベントによるエラー処理の方法にかかわらず例外がスローされます。 + +## StateChange イベントの使用 + **StateChange** イベントは、**Connection** の状態が変化したときに発生します。 **StateChange** イベントは **OriginalState** プロパティおよび **CurrentState** プロパティを使用して、**Connection** の状態の変化を判別できる を受け取ります。 **OriginalState** プロパティは、**Connection** の状態が変更される前の状態を示す 列挙体です。 **CurrentState** は、**Connection** の状態が変更された後の状態を示す 列挙体です。 + + **StateChange** イベントを使用して **Connection** の状態が変化したときにコンソールにメッセージを出力するコード サンプルを次に示します。 + +```vb +' Assumes connection represents a SqlConnection object. + AddHandler connection.StateChange, _ + New StateChangeEventHandler(AddressOf OnStateChange) + +Protected Shared Sub OnStateChange( _ + sender As Object, args As StateChangeEventArgs) + + Console.WriteLine( _ + "The current Connection state has changed from {0} to {1}.", _ + args.OriginalState, args.CurrentState) +End Sub + +``` + +```csharp +// Assumes connection represents a SqlConnection object. + connection.StateChange += new StateChangeEventHandler(OnStateChange); + +protected static void OnStateChange(object sender, + StateChangeEventArgs args) +{ + Console.WriteLine( + "The current Connection state has changed from {0} to {1}.", + args.OriginalState, args.CurrentState); +} +``` + +## 参照 + [データ ソースへの接続](../../../../docs/framework/data/adonet/connecting-to-a-data-source.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/connection-pooling.md b/docs/framework/data/adonet/connection-pooling.md new file mode 100644 index 00000000000..c0f49b8cc29 --- /dev/null +++ b/docs/framework/data/adonet/connection-pooling.md @@ -0,0 +1,31 @@ +--- +title: "接続プール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 955c057f-aea8-4ba8-aa6d-e3dfa18ba8d5 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 接続プール +データ ソースへの接続は時間のかかる処理です。 接続を開くコストを最小化するために、ADO.NET は*接続プール*と呼ばれる最適化の手法を使用しています。接続プールを使用することで、接続を開いて閉じるという処理の繰り返しによって生じるコストを最小限に抑えることができます。 接続プールは、.NET Framework データ プロバイダーに応じて異なる処理が行われます。 + +## このセクションの内容 + [SQL Server の接続プール \(ADO.NET\)](../../../../docs/framework/data/adonet/sql-server-connection-pooling.md) + 接続プールの概要および [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] における接続プールの動作を説明します。 + + [OLE DB、ODBC、および Oracle 接続プール](../../../../docs/framework/data/adonet/ole-db-odbc-and-oracle-connection-pooling.md) + .NET Framework Data Provider for OLE DB、.NET Framework Data Provider for ODBC、および .NET Framework Data Provider for Oracle の接続プールについて説明します。 + +## 参照 + [ADO.NET でのデータの取得および変更](../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/connection-string-builders.md b/docs/framework/data/adonet/connection-string-builders.md new file mode 100644 index 00000000000..1ccb01b5d53 --- /dev/null +++ b/docs/framework/data/adonet/connection-string-builders.md @@ -0,0 +1,89 @@ +--- +title: "接続文字列ビルダー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8434b608-c4d3-43d3-8ae3-6d8c6b726759 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 接続文字列ビルダー +以前のバージョンの [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] では、文字列値の連結によって構築された接続文字列がコンパイル時にはチェックされません。そのため、不適切なキーワードが使用された場合、実行時に が発生します。 接続文字列のキーワードの構文は [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] のデータ プロバイダーごとに異なるため、有効な接続文字列を手動で作成するのが難しいという問題がありました。 この問題に対処するため、[!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] 2.0 では、各 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダー用の新しい接続文字列ビルダーが導入されました。 各データ プロバイダーは、 を継承した、厳密に型指定された接続文字列ビルダー クラスを提供しています。 次の表は、各 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーおよび対応する接続文字列ビルダー クラスの一覧です。 + +|プロバイダー|ConnectionStringBuilder クラス| +|------------|---------------------------------| +||| +||| +||| +||| + +## 接続文字列のインジェクション攻撃 + ユーザー入力から文字列を動的に連結することによって接続文字列を構築している場合、接続文字列のインジェクション攻撃を受ける可能性があります。 文字列の検証や悪意のある文字のエスケープを怠ると、機密データなど、サーバー上のリソースへのアクセスを攻撃者に許してしまうことも考えられます。 たとえば、セミコロンに続けて値を追加するだけでも攻撃が成立します。 接続文字列は "後勝ち" のアルゴリズムで解析されるため、悪質な入力データによって本来の値が置き換えられます。 + + 接続文字列ビルダー クラスは推測に頼った作業を排除し、構文エラーやセキュリティ上の脆弱性を防ぐことを目的に設計されています。 このクラスには、各データ プロバイダーによってサポートされた既知のキーと値のペアに対応するプロパティおよびメソッドが存在します。 それぞれのクラスは、あらかじめ決められた一連のシノニムを管理しており、特定のシノニムを対応する既知のキー名に変換することができます。 有効なキーと値のペアに対してチェックが実行され、無効なペアが見つかると例外がスローされます。 また、挿入された値は安全な方法で処理されます。 + + 次の例を実行すると、`Initial Catalog` の設定に対して挿入された余分な値が、 によってどのように処理されるかを確認できます。 + +```vb +Dim builder As New System.Data.SqlClient.SqlConnectionStringBuilder +builder("Data Source") = "(local)" +builder("Integrated Security") = True +builder("Initial Catalog") = "AdventureWorks;NewValue=Bad" +Console.WriteLine(builder.ConnectionString) +``` + +```csharp +System.Data.SqlClient.SqlConnectionStringBuilder builder = + new System.Data.SqlClient.SqlConnectionStringBuilder(); +builder["Data Source"] = "(local)"; +builder["integrated Security"] = true; +builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad"; +Console.WriteLine(builder.ConnectionString); +``` + + 出力結果を見ると、挿入された値が によって適切に処理されていることがわかります。二重引用符内の余分な値は、新しいキーと値のペアとして接続文字列に追加されるのではなくエスケープされています。 + +``` +data source=(local);Integrated Security=True; +initial catalog="AdventureWorks;NewValue=Bad" +``` + +## 構成ファイルからの接続文字列の作成 + 接続文字列の特定の要素があらかじめわかっている場合、接続文字列を構成ファイルに格納しておき、それを実行時に取得することによって完全な接続文字列を作成できます。 たとえば、サーバー名は不明でも、データベースの名前はあらかじめ把握できる場合があります。 または、ユーザーに名前とパスワードだけを実行時に指定してもらい、それ以外の値を接続文字列に挿入できないようにしたい場合もあります。 + + 接続文字列ビルダーには、 を引数として受け取るオーバーロード コンストラクターがあります。この引数に対して接続文字列を部分的に指定しておき、それ以外の部分をユーザー入力で補完することも可能です。 部分的な接続文字列は構成ファイルに保存し、実行時に取得できます。 + +> [!NOTE] +> 構成ファイルへのプログラム アクセスは 名前空間によって実現できます。Web アプリケーションの場合は を、Windows アプリケーションの場合は を使用します。 接続文字列および構成ファイルを使った作業の詳細については、「[接続文字列と構成ファイル](../../../../docs/framework/data/adonet/connection-strings-and-configuration-files.md)」を参照してください。 + +### 例 + この例では、接続文字列の一部を構成ファイルから取得し、 プロパティ、 プロパティ、および プロパティを設定することによって接続文字列全体を作成します。 構成ファイルは次のように定義されています。 + +``` + + + + +``` + +> [!NOTE] +> このコードを実行するには、プロジェクトで `System.Configuration.dll` を参照設定する必要があります。 + + [!code-csharp[DataWorks SqlConnectionStringBuilder.UserNamePwd#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks SqlConnectionStringBuilder.UserNamePwd/CS/source.cs#1)] + [!code-vb[DataWorks SqlConnectionStringBuilder.UserNamePwd#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks SqlConnectionStringBuilder.UserNamePwd/VB/source.vb#1)] + +## 参照 + [接続文字列](../../../../docs/framework/data/adonet/connection-strings.md) + [プライバシーとデータ セキュリティ](../../../../docs/framework/data/adonet/privacy-and-data-security.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/connection-string-syntax.md b/docs/framework/data/adonet/connection-string-syntax.md new file mode 100644 index 00000000000..37522f647d0 --- /dev/null +++ b/docs/framework/data/adonet/connection-string-syntax.md @@ -0,0 +1,203 @@ +--- +title: "接続文字列の構文 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0977aeee-04d1-4cce-bbed-750c77fce06e +caps.latest.revision: 11 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 11 +--- +# 接続文字列の構文 +すべての .NET Framework データ プロバイダーは、 を継承する `Connection` オブジェクトに加え、プロバイダー固有の プロパティを持ちます。 それぞれのプロバイダーに固有の接続文字列の構文は、対応する `ConnectionString` プロパティのトピックで説明されています。 次の表は、.NET Framework に含まれている 4 つのデータ プロバイダーを一覧にしたものです。 + +|.NET Framework データ プロバイダー|説明| +|-------------------------------|--------| +||Microsoft SQL Server へのデータ アクセスを提供します。 接続文字列の構文の詳細については、「」を参照してください。| +||OLE DB を使って公開されたデータ ソースへのデータ アクセスを提供します。 接続文字列の構文の詳細については、「」を参照してください。| +||ODBC を使って公開されたデータ ソースへのデータ アクセスを提供します。 接続文字列の構文の詳細については、「」を参照してください。| +||Oracle バージョン 8.1.7 以降へのデータ アクセスを提供します。 接続文字列の構文の詳細については、「」を参照してください。| + +## 接続文字列ビルダー + ADO.NET 2.0 では、.NET Framework データ プロバイダー用の次の接続文字列ビルダーが導入されました。 + +- + +- + +- + +- + + 接続文字列ビルダーを使用すると、構文的に正しい接続文字列を実行時に構築できるため、コード内で接続文字列値を手動で連結する必要はありません。 詳細については、「[接続文字列ビルダー](../../../../docs/framework/data/adonet/connection-string-builders.md)」を参照してください。 + +## Windows 認証 + データ ソースがサポートしている場合は、Windows 認証 \(*統合セキュリティ*\) を使用して接続することをお勧めします。 接続文字列の構文は、プロバイダーによって異なります。 .NET Framework データ プロバイダーで使用されている Windows 認証の構文を次の表に示します。 + +|プロバイダー|構文| +|------------|--------| +|`SqlClient`|`Integrated Security=true;`

`-- or --`

`Integrated Security=SSPI;`| +|`OleDb`|`Integrated Security=SSPI;`| +|`Odbc`|`Trusted_Connection=yes;`| +|`OracleClient`|`Integrated Security=yes;`| + +> [!NOTE] +> `OleDb` プロバイダーで `Integrated Security=true` に設定すると例外がスローされます。 + +## SqlClient 接続文字列 + 接続文字列の構文については、 プロパティで説明されています。 プロパティを使用すると、SQL Server データベースの接続文字列を取得または設定することができます。 以前のバージョンの SQL Server に接続する必要がある場合は、.NET Framework Data Provider for OleDb \(\) を使用する必要があります。 接続文字列のほとんどのキーワードは、 のプロパティにマップされています。 + + 次の構文のフォームはそれぞれ、Windows 認証を使用してローカル サーバー上の **AdventureWorks** データベースに接続します。 + +``` +"Persist Security Info=False;Integrated Security=true; + Initial Catalog=AdventureWorks;Server=MSSQL1" +"Persist Security Info=False;Integrated Security=SSPI; + database=AdventureWorks;server=(local)" +"Persist Security Info=False;Trusted_Connection=True; + database=AdventureWorks;server=(local)" +``` + +### SQL Server ログイン + SQL Server への接続には Windows 認証の使用をお勧めします。 ただし、どうしても SQL Server 認証を使用する必要がある場合は、次の構文に従ってユーザー名とパスワードを指定してください。 この例では、アスタリスクを使用して有効なユーザー名とパスワードを表しています。 + +``` +"Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer" +``` + +> [!IMPORTANT] +> `Persist` `` `Security Info` キーワードの既定の設定は `false` です。 このキーワードを `true` または `yes` に設定すると、ユーザー ID やパスワードなどのセキュリティ関連情報を、接続を開いた後にその接続から取得できます。 機密を要する接続文字列情報が、信頼できないソースによってアクセスされることのないよう、`Persist` `` `Security Info` は必ず `false` にしてください。 + + SQL Server の名前付きインスタンスに接続するには、*server name\\instance name* 構文を使用します。 + +``` +Data Source=MySqlServer\MSSQL1;" +``` + + 接続文字列の作成時に、`SqlConnectionStringBuilder` の プロパティをインスタンス名に設定することもできます。 オブジェクトの プロパティは読み取り専用です。 + +> [!NOTE] +> Windows 認証は SQL Server ログインよりも優先されます。 Integrated Security を true に指定し、ユーザー名とパスワードも指定した場合、ユーザー名とパスワードは無視され、Windows 認証が使用されます。 + +### Type System Version の変更 + の `Type System Version` キーワードは、クライアント側での [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] 型の表現を指定します。 `Type System Version` キーワードの詳細については、 のトピックを参照してください。 + +## SQL Server Express ユーザー インスタンスへの接続とアタッチ + ユーザー インスタンスは、SQL Server Express の機能の 1 つです。 最小限の特権しか持たないローカル Windows アカウントで実行しているユーザーが、SQL Server データベースにアタッチできます。この場合、管理特権は不要です。 ユーザー インスタンスは、サービスとしてではなく、ユーザーの Windows 資格情報で実行されます。 + + ユーザー インスタンスの使用の詳細については、「[SQL Server Express ユーザー インスタンス](../../../../docs/framework/data/adonet/sql/sql-server-express-user-instances.md)」を参照してください。 + +## TrustServerCertificate の使用 + `TrustServerCertificate` キーワードは、有効な証明書を使用して [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] インスタンスに接続する場合にのみ使用できます。 `TrustServerCertificate` を `true` に設定した場合、トランスポート層に SSL が使用されてチャネルが暗号化されます。また、証明書チェーンをたどることによる信頼性の検証は省略されます。 + +``` +"TrustServerCertificate=true;" +``` + +> [!NOTE] +> `TrustServerCertificate` を `true` に設定して暗号化を有効にした場合、接続文字列で `Encrypt` を `false` に設定したとしても、サーバーで指定された暗号化レベルが使用されます。 それ以外の場合、接続は失敗します。 + +### 暗号化の有効化 + サーバー証明書がプロビジョニングされていない場合、暗号化を有効にするには、SQL Server 構成マネージャーで **\[プロトコルの暗号化を設定する\]** オプションと **\[サーバー証明書を信頼する\]** オプションを設定する必要があります。 このように、検証可能なサーバー証明書がプロビジョニングされていない場合、暗号化には検証を伴わない自己署名入りのサーバー証明書が使用されます。 + + SQL Server で構成されたセキュリティのレベルを、アプリケーションの設定によって緩和することはできません。ただし、必要に応じて厳密にすることはできます。 アプリケーションから暗号化を要求するには、`TrustServerCertificate` キーワードおよび `Encrypt` キーワードを `true` に設定します。こうすることで、サーバー証明書がプロビジョニングされておらず、なおかつ、クライアントで **\[プロトコルの暗号化を設定する\]** が構成されていない場合でも常に暗号化が行われます。 ただし、クライアントの構成で `TrustServerCertificate` を有効にしなかった場合は、プロビジョニングされたサーバー証明書が必要です。 + + 次の表ですべてのケースを説明します。 + +|\[プロトコルの暗号化を設定する\] クライアント設定|\[サーバー証明書を信頼する\] クライアント設定|Encrypt\/Use Encryption for Data 接続文字列\/属性|Trust Server Certificate 接続文字列\/属性|結果| +|---------------------------------|-------------------------------|------------------------------------------------|----------------------------------------|--------| +|X|N\/A|無効 \(既定値\)|無視|暗号化は行われません。| +|X|N\/A|はい|無効 \(既定値\)|暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。| +|X|N\/A|はい|はい|暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。| +|はい|X|無視|無視|暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。| +|はい|はい|無効 \(既定値\)|無視|暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。| +|はい|はい|はい|無効 \(既定値\)|暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。| +|はい|はい|はい|はい|暗号化は、検証可能なサーバー証明書が提供されている場合にのみ行われます。それ以外の場合は、接続試行が失敗します。| + + 詳細については、SQL Server オンライン ブックの「[検証を伴わない暗号化の使用](http://go.microsoft.com/fwlink/?LinkId=120500)」を参照してください。 + +## OleDb 接続文字列 + プロパティを使用すると、Microsoft Access などの OLE DB データ ソースの接続文字列を取得または設定することができます。 クラスを使用して、実行時に `OleDb` 接続文字列を作成することもできます。 + +### OleDb 接続文字列の構文 + 接続文字列では、プロバイダー名を指定する必要があります。 次の接続文字列は、Jet プロバイダーを使用して Microsoft Access データベースに接続します。 `UserID` および `Password` キーワードは、データベースがセキュリティ保護されていない場合は省略できます \(既定\)。 + +``` +Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\Northwind.mdb;User ID=Admin;Password=; +``` + + ユーザー レベルのセキュリティを使用して Jet データベースがセキュリティ保護されている場合は、ワークグループ情報ファイル \(.mdw\) の場所を指定する必要があります。 ワークグループ情報ファイルを使用して接続文字列に表示された資格情報を検証します。 + +``` +Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Northwind.mdb;Jet OLEDB:System Database=d:\NorthwindSystem.mdw;User ID=*****;Password=*****; +``` + +> [!IMPORTANT] +> **OleDbConnection** の接続情報は、UDL \(Universal Data Link\) ファイルを使用して提供できますが、このファイルは使用しないでください。 UDL ファイルは暗号化されないため、接続文字列をテキスト形式で表現してしまいます。 UDL ファイルは、アプリケーションにとって外部ファイルをベースにしたリソースであるため、.NET Framework でセキュリティ保護できません。 **SqlClient** では UDL ファイルはサポートされていません。 + +### DataDirectory を使用した Access\/Jet との接続 + `DataDirectory` の使用は `SqlClient` に限定されません。 および .NET データ プロバイダーでも使用できます。 アプリケーションの app\_data フォルダーに格納された Northwind.mdb に接続するための 文字列の構文を次の例に示します。 この場所には、システム データベース \(System.mdw\) も格納されています。 + +``` +"Provider=Microsoft.Jet.OLEDB.4.0; +Data Source=|DataDirectory|\Northwind.mdb; +Jet OLEDB:System Database=|DataDirectory|\System.mdw;" +``` + +> [!IMPORTANT] +> Access\/Jet データベースをセキュリティで保護しない場合は、接続文字列にシステム データベースの場所を指定する必要はありません。 既定では、セキュリティが無効になります。すべてのユーザーが、空のパスワードで組み込みの Admin ユーザーとして接続することになります。 ユーザー レベルのセキュリティを正しく実装したとしても、Jet データベースは攻撃に対して無防備です。 ファイル ベースのセキュリティでは克服できない限界があるため、Access\/Jet データベースに機密情報を格納することはお勧めできません。 + +### Excel への接続 + Excel ワークブックへの接続には、Microsoft Jet プロバイダーが使用されます。 次の接続文字列では、`Extended Properties` キーワードは Excel に固有のプロパティを設定しています。" HDR\=Yes;" は、最初の列にデータではなく、行の名前が含まれていることを示し、"IMEX\=1;" は、「intermixed」データ行を常にテキストとして読み取ることをドライバーに指示しています。 + +``` +Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"" +``` + + `Extended Properties` を二重引用符で囲む必要があることに注意してください。 + +### Data Shape プロバイダーの接続文字列の構文 + Microsoft Data Shape プロバイダーを使用するときは、`Provider` および `Data Provider` キーワードを両方使用してください。 Shape プロバイダーを使用して SQL Server のローカル インスタンスに接続する例を次に示します。 + +``` +"Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;Integrated Security=SSPI;" +``` + +## Odbc 接続文字列 + プロパティを使用すると、OLE DB データベースで接続文字列を取得または設定することができます。 は、Odbc の接続文字列もサポートしています。 + + 次の接続文字列では、Microsoft Text Driver を使用しています。 + +``` +Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=d:\bin +``` + +### DataDirectory を使用した Visual FoxPro との接続 + 次の 接続文字列は、`DataDirectory` を使用して Microsoft Visual FoxPro ファイルに接続する例を示しています。 + +``` +"Driver={Microsoft Visual FoxPro Driver}; +SourceDB=|DataDirectory|\MyData.DBC;SourceType=DBC;" +``` + +## Oracle 接続文字列 + プロパティを使用すると、OLE DB データベースで接続文字列を取得または設定することができます。 は、Oracle の接続文字列もサポートしています。 + +``` +Data Source=Oracle9i;User ID=*****;Password=*****; +``` + + ODBC 接続文字列の構文の詳細については、「」を参照してください。 + +## 参照 + [接続文字列](../../../../docs/framework/data/adonet/connection-strings.md) + [データ ソースへの接続](../../../../docs/framework/data/adonet/connecting-to-a-data-source.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/connection-strings-and-configuration-files.md b/docs/framework/data/adonet/connection-strings-and-configuration-files.md new file mode 100644 index 00000000000..1b5e6865915 --- /dev/null +++ b/docs/framework/data/adonet/connection-strings-and-configuration-files.md @@ -0,0 +1,182 @@ +--- +title: "接続文字列と構成ファイル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 37df2641-661e-407a-a3fb-7bf9540f01e8 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 接続文字列と構成ファイル +接続文字列をアプリケーションのコードに組み込むと、セキュリティ上の脆弱性やメンテナンスの問題を引き起こす可能性があります。 アプリケーションのソース コード内にコンパイルされた暗号化されていない接続文字列は、[Ildasm.exe \(IL 逆アセンブラー\)](../../../../docs/framework/tools/ildasm-exe-il-disassembler.md) を使用して参照することができます。 さらに、接続文字列が変わるたびにアプリケーションを再コンパイルする必要性が生じます。 そのため、接続文字列はアプリケーション構成ファイルに保存することをお勧めします。 + +## アプリケーション構成ファイルの使用 + アプリケーション構成ファイルには、特定のアプリケーションに固有の設定が格納されます。 たとえば、ASP.NET アプリケーションには少なくとも 1 つの **web.config** ファイルが存在するほか、Windows アプリケーションにも必要に応じて **app.config** ファイルを割り当てることができます。 構成ファイルの名前と場所はアプリケーションのホストによって異なりますが、どの構成ファイルにも共通の要素があります。 + +### connectionStrings セクション + 接続文字列は、アプリケーション構成ファイルの **configuration** 要素の **connectionStrings** セクションにキーと値のペアとして格納できます。 子要素には、**add**、**clear**、および **remove** が存在します。 + + 次の構成ファイル フラグメントは、接続文字列を格納するためのスキーマと構文の例を示しています。 **name** 属性は、実行時に取得する接続文字列を一意に識別するための名前です。 **providerName** は、machine.config ファイルに登録された .NET Framework データ プロバイダーの不変名です。 + +``` + + + + + + + +``` + +> [!NOTE] +> 構成ファイルに接続文字列の一部を保存しておき、 クラスを使用して実行時に補完できます。 接続文字列の要素を事前に知ることができない場合や、機密情報を構成ファイルに保存したくない場合には有効な手段です。 詳細については、「[接続文字列ビルダー](../../../../docs/framework/data/adonet/connection-string-builders.md)」を参照してください。 + +### 外部構成ファイルの使用 + 外部構成ファイルとは、単一のセクションから成る、構成ファイルのフラグメントを含んだ独立したファイルを言います。 外部構成ファイルは、メインの構成ファイルによって参照されます。 **connectionStrings** セクションを物理的に分かれたファイルに保存できるため、アプリケーションの配置後に接続文字列を編集する場合に有効な手段です。 たとえば、構成ファイルに修正が加えられた場合、ASP.NET の標準的な動作ではアプリケーション ドメインが再起動され、その結果、状態情報が失われてしまいます。 しかし、外部構成ファイルに対する修正であればアプリケーションの再起動は伴いません。 外部構成ファイルは ASP.NET だけでなく、Windows アプリケーションでも使用できます。 また、ファイルのアクセス セキュリティや権限を使用して、外部構成ファイルへのアクセスを制限することもできます。 実行時における外部構成ファイルの使用は透過的であり、特殊なコーディングも不要です。 + + 外部構成ファイルに接続文字列を保存するには、**connectionStrings** セクションだけを含んだファイルを別途作成します。 それ以外の要素、セクション、または属性は含めないでください。 外部構成ファイルの構文の例を次に示します。 + +``` + + + +``` + + 外部ファイルの完全修飾名および場所は、メインのアプリケーション構成ファイルの **configSource** 属性で指定します。 この例では、`connections.config` という名前の外部構成ファイルを参照しています。 + +``` + + + + +``` + +## 接続文字列の実行時の取得 + .NET Framework 2.0 では、 名前空間に新しいクラスが導入され、実行時に簡単に構成ファイルから接続文字列を取得できるようになりました。 プログラムから名前またはプロバイダー名を使用して接続文字列を取得できます。 + +> [!NOTE] +> **connectionStrings** セクションは、**machine.config** ファイルにも存在します。このセクションには、Visual Studio によって使用される接続文字列が格納されます。 Windows アプリケーションの **app.config** ファイルからプロバイダー名で接続文字列を取得した場合、まず **machine.config** 内の接続文字列が読み込まれ、その後、**app.config** のエントリが読み込まれます。 **connectionStrings** 要素の直後に **clear** を追加すると、継承されたすべての参照がメモリ内のデータ構造から削除され、ローカルの **app.config** ファイルに定義されている接続文字列だけが考慮されます。 + +### 構成クラスの使用 + .NET Framework 2.0 以降では、ローカル コンピューター上の構成ファイルで作業するときに、廃止された に代わって を使用します。 ASP.NET 構成ファイルでの作業では、 を使用します。 Web サーバー上の構成ファイルを扱うことを目的に設計され、**system.web** など、構成ファイルのセクションにプログラムからアクセスできます。 + +> [!NOTE] +> 実行時に構成ファイルにアクセスするには、呼び出し元に権限を付与する必要があります。必要な権限は、アプリケーションの種類、構成ファイル、格納場所などによって異なります。 詳細については、「[Using the Configuration Classes](../Topic/Using%20the%20Configuration%20Classes.md)」と「」\(ASP.NET アプリケーションの場合\)、および「」\(Windows アプリケーションの場合\) を参照してください。 + + を使用すると、アプリケーション構成ファイルから接続文字列を取得できます。 このコレクションには、それぞれが **connectionStrings** セクションの単一のエントリを表す一連の オブジェクトが格納されます。 個々のプロパティは接続文字列の属性にマップされており、名前またはプロバイダー名を指定することによって接続文字列を取得できます。 + +|プロパティ|説明| +|-----------|--------| +||接続文字列の名前。 **name** 属性にマップされています。| +||プロバイダーの完全修飾名。 **providerName** 属性にマップされています。| +||接続文字列。 **connectionString** 属性にマップされています。| + +### 例 : すべての接続文字列を一覧表示する + この例では、`ConnectionStringSettings` コレクションを反復処理しながら、 の各プロパティをコンソール ウィンドウに表示します。 + +> [!NOTE] +> プロジェクトの種類によっては System.Configuration.dll がインクルードされていない場合があります。構成クラスを使用する場合は、必要に応じて参照設定するようにしてください。 特定のアプリケーションの構成ファイルの名前と場所は、アプリケーションの種類やホストしているプロセスによって異なります。 + + [!code-csharp[DataWorks ConnectionStringSettings.RetrieveFromConfig#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks ConnectionStringSettings.RetrieveFromConfig/CS/source.cs#1)] + [!code-vb[DataWorks ConnectionStringSettings.RetrieveFromConfig#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks ConnectionStringSettings.RetrieveFromConfig/VB/source.vb#1)] + +### 例 : 接続文字列を名前で取得する + 次の例では、接続文字列の名前を指定することによって、接続文字列を構成ファイルから取得する方法を説明します。 このコードでは、指定された入力パラメーターと の名前とを照合することによって、 オブジェクトを作成します。 一致する名前が見つからなかった場合は `null` \(Visual Basic の場合は `Nothing`\) が返されます。 + + [!code-csharp[DataWorks ConnectionStringSettings.RetrieveFromConfigByName#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks ConnectionStringSettings.RetrieveFromConfigByName/CS/source.cs#1)] + [!code-vb[DataWorks ConnectionStringSettings.RetrieveFromConfigByName#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks ConnectionStringSettings.RetrieveFromConfigByName/VB/source.vb#1)] + +### 例 : 接続文字列をプロバイダー名で取得する + 次の例では、プロバイダーの不変名を *System.Data.ProviderName* の形式で指定することによって接続文字列を取得する方法を説明します。 このコードでは、 を反復処理し、最初に見つかった の接続文字列を返します。 プロバイダー名が見つからなかった場合は `null` \(Visual Basic の場合は `Nothing`\) が返されます。 + + [!code-csharp[DataWorks ConnectionStringSettings.RetrieveFromConfigByProvider#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks ConnectionStringSettings.RetrieveFromConfigByProvider/CS/source.cs#1)] + [!code-vb[DataWorks ConnectionStringSettings.RetrieveFromConfigByProvider#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks ConnectionStringSettings.RetrieveFromConfigByProvider/VB/source.vb#1)] + +## 保護構成を使った構成ファイル セクションの暗号化 + ASP.NET 2.0 では、*保護構成*と呼ばれる、構成ファイルの機密情報を暗号化するための新しい機能が導入されました。 保護構成は、主に ASP.NET を想定して設計されたものですが、Windows アプリケーションの構成ファイル セクションを暗号化する目的でも使用できます。 保護構成機能の詳細については、「[Encrypting Configuration Information Using Protected Configuration](../Topic/Encrypting%20Configuration%20Information%20Using%20Protected%20Configuration.md)」を参照してください。 + + 次の構成ファイル フラグメントは、暗号化後の **connectionStrings** セクションを示しています。 **configProtectionProvider** には、接続文字列の暗号化と復号化に使用される、保護構成プロバイダーが指定されています。 **EncryptedData** セクションには暗号文が格納されています。 + +``` + + + + AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... + + + +``` + + 暗号化された接続文字列は実行時に取得されることになります。このとき、.NET Framework は、指定されたプロバイダーを使用して **CipherValue** を復号化し、アプリケーションに利用可能な接続文字列を提供します。 復号化のプロセスを管理するためのコードを自分で作成する必要はありません。 + +### 保護構成プロバイダー + 保護構成プロバイダーは、ローカル コンピューターの **machine.config** ファイルの **configProtectedData** セクションに登録されます。次のフラグメントを見ると、.NET Framework が備えている 2 つの保護構成プロバイダーが指定されていることがわかります。 ここでは、読みやすくするために一部の値を省略しています。 + +``` + + + |構成セクションの暗号化に Windows Data Protection API \(DPAPI\) が使用されます。 この API には、Windows の組み込み暗号化サービスが使用され、コンピューター単位またはユーザー アカウント単位の保護を構成できます。 コンピューター単位の保護は、同じサーバー上の複数のアプリケーションで情報を共有する必要がある場合に使用します。 共有ホスティング環境など、特定のユーザー ID で実行されるサービスには、ユーザー アカウント単位の保護を使用できます。 各アプリケーションは、ファイルやデータベースなど、各種リソースへのアクセスが制限された別々の ID で実行されます。| + + どちらのプロバイダーも、強力なデータ暗号化機能を備えています。 ただし、Web ファームなど、複数のサーバーで、同じ構成ファイルを暗号化して使用する場合、データの暗号化に使用される暗号化キーをエクスポートしたり、それを別のサーバーにインポートしたりできるのは、`RsaProtectedConfigurationProvider` だけです。 詳細については、「[Importing and Exporting Protected Configuration RSA Key Containers](../Topic/Importing%20and%20Exporting%20Protected%20Configuration%20RSA%20Key%20Containers.md)」を参照してください。 + +### 構成クラスの使用 + 名前空間には、構成設定をプログラムから行うためのクラスが存在します。 クラスは、コンピューター、アプリケーション、ユーザーの各構成ファイルへのアクセスを提供します。 ASP.NET アプリケーションを作成している場合は、同じ機能を持った クラスを使用します。他にも **\** の設定など、ASP.NET アプリケーション固有の設定にもアクセスできます。 + +> [!NOTE] +> 名前空間には、データの暗号化と復号化に関連した補足的なオプションを提供するクラスが存在します。 これらのクラスは、保護構成では利用できない暗号化サービスが必要な場合に使用します。 これらのクラスは必ずしも純粋なマネージ実装とは限らず、アンマネージ Microsoft CryptoAPI 用のラッパーもあります。 詳細については、「[Cryptographic Services](http://msdn.microsoft.com/ja-jp/68a1e844-c63c-44af-9247-f6716eb23781)」を参照してください。 + +### App.config の例 + ここでは、Windows アプリケーションの **app.config** ファイルにある **connectionStrings** セクションを条件に応じて暗号化したり復号化したりする方法を紹介します。 この例に示したプロシージャは、MyApplication.exe など、アプリケーションの名前を引数として受け取ります。 その後、**app.config** ファイルを暗号化して、その実行可能ファイルと同じフォルダーに MyApplication.exe.config という名前でコピーします。 + +> [!NOTE] +> 接続文字列は暗号化したときと同じコンピューターでしか復号化できません。 + + このコードは、 メソッドを使用して **app.config** ファイルを編集モードで開き、 メソッドを使用して **connectionStrings** セクションを返します。 さらに、 プロパティをチェックし、セクションがまだ暗号化されていなければ、 を呼び出して暗号化します。 それ以外の場合は、 メソッドを呼び出してセクションを復号化します。 最後に、 メソッドで操作を完了し、変更内容を保存します。 + +> [!NOTE] +> このコードを実行するには、プロジェクトで `System.Configuration.dll` を参照設定する必要があります。 + + [!code-csharp[DataWorks ConnectionStrings.Encrypt#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks ConnectionStrings.Encrypt/CS/source.cs#1)] + [!code-vb[DataWorks ConnectionStrings.Encrypt#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks ConnectionStrings.Encrypt/VB/source.vb#1)] + +### Web.config の例 + この例では、`WebConfigurationManager` の メソッドを使用しています。 この場合、チルダを使用して、**Web.config** ファイルの相対パスを指定できる点に注目してください。 このコードを実行するには、`System.Web.Configuration` クラスへの参照が必要です。 + + [!code-csharp[DataWorks ConnectionStringsWeb.Encrypt#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks ConnectionStringsWeb.Encrypt/CS/source.cs#1)] + [!code-vb[DataWorks ConnectionStringsWeb.Encrypt#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks ConnectionStringsWeb.Encrypt/VB/source.vb#1)] + + ASP.NET アプリケーションのセキュリティ保護の詳細については、「[NIB: ASP.NET Security](http://msdn.microsoft.com/ja-jp/04b37532-18d9-40b4-8e5f-ee09a70b311d)」および ASP.NET デベロッパー センターの「[ASP.NET 2.0 のセキュリティ プラクティス](http://go.microsoft.com/fwlink/?LinkId=59997)」を参照してください。 + +## 参照 + [接続文字列ビルダー](../../../../docs/framework/data/adonet/connection-string-builders.md) + [接続情報の保護](../../../../docs/framework/data/adonet/protecting-connection-information.md) + [Using the Configuration Classes](../Topic/Using%20the%20Configuration%20Classes.md) + [アプリの構成](../../../../docs/framework/configure-apps/index.md) + [ASP.NET Web Site Administration](../Topic/ASP.NET%20Web%20Site%20Administration.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/connection-strings.md b/docs/framework/data/adonet/connection-strings.md new file mode 100644 index 00000000000..5388dcf6efd --- /dev/null +++ b/docs/framework/data/adonet/connection-strings.md @@ -0,0 +1,49 @@ +--- +title: "ADO.NET での接続文字列 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 745c5f95-2f02-4674-b378-6d51a7ec2490 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# ADO.NET での接続文字列 +.NET Framework 2.0 では、接続文字列を扱う新しい機能が導入されました。接続文字列ビルダー クラスに追加された新しいキーワードもその 1 つであり、有効な接続文字列を実行時に簡単に作成できるようになっています。 + + 接続文字列には、データ プロバイダーからデータ ソースにパラメーターとして渡す初期化情報が含まれています。 接続文字列は接続を開くときに解析され、その構文はデータ プロバイダーによって異なります。 構文エラーの場合はランタイム例外が生成されますが、その他のエラーは、データ ソースが接続情報を受け取った後でのみ発生します。 いったん接続文字列が検証されると、接続文字列に指定されたオプションがデータ ソースによって適用されて接続が開かれます。 + + 接続文字列の形式は、キーと値パラメーターのペアをセミコロンで区切ったリストです。 + + `keyword1=value; keyword2=value;` + + キーワードの大文字と小文字は区別されません。また、キーと値のペア間のスペースは無視されます。 ただし、値の大文字と小文字を区別するかどうかはデータ ソースにより異なる場合があります。 値にセミコロン、単一引用符、または二重引用符が含まれている場合は、必ず二重引用符で囲む必要があります。 + + 有効な接続文字列の構文はプロバイダーによって異なり、ODBC のような初期の API から長年にわたって進化しています。 .NET Framework Data Provider for SQL Server \(SqlClient\) には、古い構文の要素が多数組み込まれており、一般的に、共通の接続文字列の構文に対しては柔軟性があります。 多くの場合、接続文字列の構文要素には同等として扱われる有効なシノニムが存在しますが、構文やスペルの誤りによって問題が生じる場合もあります。 たとえば、"`Integrated Security=true`" は有効ですが、"`IntegratedSecurity=true`" ではエラーが発生します。 また、ユーザー入力を基にして接続文字列を実行時に構築する場合、入力された文字列を検証しないと、文字列のインジェクション攻撃を招き、データ ソースのセキュリティが脅かされる可能性があります。 + + こうした問題に対処するため、ADO.NET 2.0 では、各 .NET Framework データ プロバイダー用の新しい接続文字列ビルダーが導入されました。 キーワードがプロパティとして公開され、接続文字列をデータ ソースに送信する前に、その構文を検証できます。 + +## このセクションの内容 + [接続文字列ビルダー](../../../../docs/framework/data/adonet/connection-string-builders.md) + `ConnectionStringBuilder` クラスを使用して、有効な接続文字列を実行時に作成する方法について説明します。 + + [接続文字列と構成ファイル](../../../../docs/framework/data/adonet/connection-strings-and-configuration-files.md) + 構成ファイルを使用した接続文字列の格納と取得の方法について説明します。 + + [接続文字列の構文](../../../../docs/framework/data/adonet/connection-string-syntax.md) + `SqlClient`、`OracleClient`、`OleDb`、`Odbc` の各プロバイダーに固有の接続文字列を構成する方法について説明します。 + + [接続情報の保護](../../../../docs/framework/data/adonet/protecting-connection-information.md) + データ ソースへの接続に使用する情報を保護する方法を示します。 + +## 参照 + [データ ソースへの接続](../../../../ocs/framework/data/adonet/connecting-to-a-data-source.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/creating-a-datatable-from-a-query-linq-to-dataset.md b/docs/framework/data/adonet/creating-a-datatable-from-a-query-linq-to-dataset.md new file mode 100644 index 00000000000..677029078c3 --- /dev/null +++ b/docs/framework/data/adonet/creating-a-datatable-from-a-query-linq-to-dataset.md @@ -0,0 +1,84 @@ +--- +title: "Creating a DataTable From a Query (LINQ to DataSet) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1b97afeb-03f8-41e2-8eb3-58aff65f7d18 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Creating a DataTable From a Query (LINQ to DataSet) + オブジェクトの一般的な利用法の 1 つが、データ バインドです。 メソッドは、クエリの結果を受け取り、そのデータを にコピーします。これをデータ バインドに利用できます。 このデータ操作が実行されると、新しい が、基となった にマージ バックされます。 + + メソッドでは、次の処理を実行することでクエリの結果から を作成します。 + +1. メソッドにより、ソース テーブル \( インターフェイスを実装する オブジェクト\) から を複製します。 通常、 ソースは [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] 式またはメソッド クエリから生成されます。 + +2. 複製の のスキーマは、ソース テーブルで最初に列挙されている オブジェクトの列から作成されます。複製したテーブルの名前は、ソース テーブルの名前に "query" という単語を付加した名前になります。 + +3. ソース テーブルの各行について、行の内容が新しい オブジェクトにコピーされた後、それが複製のテーブルに挿入されます。 このコピー操作の間、 プロパティと プロパティは保持されます。 基になる オブジェクトが別々のテーブルに由来している場合、 がスローされます。 + +4. クエリ実行可能な入力テーブルの オブジェクトがすべてコピーされた後、複製の が返されます。 基となるシーケンスに オブジェクトが含まれていない場合、このメソッドは空の を返します。 + + メソッドを呼び出すと、ソース テーブルにバインドされているクエリが実行されることに注意してください。 + + メソッドにより、ソース テーブルの行に Null 参照または Null 許容の値型が検出された場合、その値は に置き換えられます。 このようにして、返される の Null 値が適切に処理されます。 + + メモ : メソッドは、複数の オブジェクトまたは オブジェクトから行を返せるクエリを入力として受け入れます。 メソッドは、ソースの または オブジェクトから、返された にデータをコピーしますが、プロパティはコピーしません。 などの返された に、明示的にプロパティを設定する必要があります。 + + 次の例では、SalesOrderHeader テーブルに対して 2001 年 8 月 8 日以降の注文をクエリし、 メソッドを使用して、このクエリから を作成します。 次に、 にバインドされます。これは のプロキシとして機能します。 + + [!code-csharp[DP LINQ to DataSet Examples#CopyToDataTable1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/CS/Program.cs#copytodatatable1)] + [!code-vb[DP LINQ to DataSet Examples#CopyToDataTable1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/VB/Module1.vb#copytodatatable1)] + +## カスタム CopyToDataTable\ メソッドの作成 + 既存の メソッドは、ジェネリック パラメーター `T` が 型である ソースに対してのみ作用します。 有用ではありますが、一連のスカラー型、匿名型を返すクエリ、またはテーブルの結合を実行するクエリからは、テーブルを作成できません。 一連のスカラー型または匿名型からテーブルを読み込む 2 つのカスタム `CopyToDataTable` メソッドの実装例については、「[How to: Implement CopyToDataTable\ Where the Generic Type T Is Not a DataRow](../../../../docs/framework/data/adonet/implement-copytodatatable-where-type-not-a-datarow.md)」を参照してください。 + + このセクションの例には、次のカスタム型が使用されています。 + + [!code-csharp[DP Custom CopyToDataTable Examples#ItemClass](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/CS/Program.cs#itemclass)] + [!code-vb[DP Custom CopyToDataTable Examples#ItemClass](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/VB/Module1.vb#itemclass)] + +### 例 + この例では、`SalesOrderHeader` テーブルと `SalesOrderDetail` テーブルを結合し、8 月以降のオンラインでの注文を取得して、クエリからテーブルを作成します。 + + [!code-csharp[DP Custom CopyToDataTable Examples#Join](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/CS/Program.cs#join)] + [!code-vb[DP Custom CopyToDataTable Examples#Join](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/VB/Module1.vb#join)] + +### 例 + 次の例では、価格が $9.99 を超える一連の商品を照会し、そのクエリの結果からテーブルを作成します。 + + [!code-csharp[DP Custom CopyToDataTable Examples#LoadItemsIntoTable](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/CS/Program.cs#loaditemsintotable)] + [!code-vb[DP Custom CopyToDataTable Examples#LoadItemsIntoTable](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/VB/Module1.vb#loaditemsintotable)] + +### 例 + 次の例では、価格が $9.99 を超える一連の商品を照会し、その結果を射影します。 返された一連の匿名型は、既存のテーブルに読み込まれます。 + + [!code-csharp[DP Custom CopyToDataTable Examples#LoadItemsIntoExistingTable](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/CS/Program.cs#loaditemsintoexistingtable)] + [!code-vb[DP Custom CopyToDataTable Examples#LoadItemsIntoExistingTable](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/VB/Module1.vb#loaditemsintoexistingtable)] + +### 例 + 次の例では、価格が $9.99 を超える一連の商品を照会し、その結果を射影します。 返された一連の匿名型は、既存のテーブルに読み込まれます。 `Book` 型と `Movies` 型は `Item` 型から派生するため、テーブル スキーマは自動的に展開されます。 + + [!code-csharp[DP Custom CopyToDataTable Examples#LoadItemsExpandSchema](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/CS/Program.cs#loaditemsexpandschema)] + [!code-vb[DP Custom CopyToDataTable Examples#LoadItemsExpandSchema](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/VB/Module1.vb#loaditemsexpandschema)] + +### 例 + 次の例では、価格が $9.99 を超える一連の商品を照会し、新しいテーブルに読み込まれる一連の を返します。 + + [!code-csharp[DP Custom CopyToDataTable Examples#LoadScalarSequence](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/CS/Program.cs#loadscalarsequence)] + [!code-vb[DP Custom CopyToDataTable Examples#LoadScalarSequence](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP Custom CopyToDataTable Examples/VB/Module1.vb#loadscalarsequence)] + +## 参照 + [Programming Guide](../../../../docs/framework/data/adonet/programming-guide-linq-to-dataset.md) + [Generic Field and SetField Methods](../../../../docs/framework/data/adonet/generic-field-and-setfield-methods-linq-to-dataset.md) + [LINQ to DataSet Examples](../../../../docs/framework/data/adonet/linq-to-dataset-examples.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/creating-a-dataview-object-linq-to-dataset.md b/docs/framework/data/adonet/creating-a-dataview-object-linq-to-dataset.md new file mode 100644 index 00000000000..77199ba2e7d --- /dev/null +++ b/docs/framework/data/adonet/creating-a-dataview-object-linq-to-dataset.md @@ -0,0 +1,80 @@ +--- +title: "Creating a DataView Object (LINQ to DataSet) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 76057508-e12d-4779-a707-06a4c2568acf +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Creating a DataView Object (LINQ to DataSet) +[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] のコンテキストで を作成するには 2 つの方法があります。 は、 に対する [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリから作成したり、型指定されているまたは型指定されていない から作成したりできます。 どちらの場合でも、 を作成するのにいずれかの 拡張メソッドを使用します。[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] のコンテキストで を直接作成することはできません。 + + を作成した後に、Windows フォーム アプリケーションまたは ASP.NET アプリケーションの UI コントロールにバインドしたり、フィルターおよび並べ替えの設定を変更したりできます。 + + は、インデックスを構築します。これにより、フィルター処理や並べ替えなど、インデックスを使用できる操作のパフォーマンスが大幅に向上します。 のインデックスは、 の作成時に構築されるほか、並べ替えまたはフィルター処理の情報が変更されたときにも構築されます。 を作成した後で、並べ替えまたはフィルター処理の情報を設定した場合、インデックスが最低でも 2 回 \( の作成時と、並べ替えまたはフィルターのプロパティの変更時\) 構築されることになります。 + + でのフィルターおよび並べ替えの詳細については、「[Filtering with DataView](../../../../docs/framework/data/adonet/filtering-with-dataview-linq-to-dataset.md)」および「[Sorting with DataView](../../../../docs/framework/data/adonet/sorting-with-dataview-linq-to-dataset.md)」を参照してください。 + +## LINQ to DataSet クエリの結果からの DataView の作成 + オブジェクトは、 オブジェクトの射影である [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリの結果から作成できます。 新しく作成される は、その基となるクエリからのフィルター処理および並べ替え情報を継承します。 + +> [!NOTE] +> ほとんどの場合、フィルターに使用する式は、副作用のない確定的な式である必要があります。 また、並べ替えおよびフィルター処理は任意の回数実行されるため、特定の実行回数に依存するロジックが式に含まれないようにしてください。 + + 匿名型を返すクエリまたは結合操作を実行するクエリからの の作成はサポートされていません。 + + の作成に使用されるクエリでは、次のクエリ演算子のみがサポートされます。 + +- + +- + +- + +- + +- + +- + +- + + [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリから を作成する場合は、 メソッドをクエリで呼び出す最後のメソッドとする必要があります。次の例では、合計支払額別に並べ替えられたオンライン注文の を作成します。 + + [!code-csharp[DP DataView Samples#CreateLDVFromQuery1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP DataView Samples/CS/Form1.cs#createldvfromquery1)] + [!code-vb[DP DataView Samples#CreateLDVFromQuery1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP DataView Samples/VB/Form1.vb#createldvfromquery1)] + + また、文字列ベースの プロパティおよび プロパティを使用して、 をクエリから作成した後でフィルターを適用し、並べ替えることができます。 この操作を行うと、クエリから継承された並べ替えおよびフィルター情報がクリアされます。 次の例では、姓が "S" で始まる連絡先をフィルター処理する [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリから を作成します。 文字列ベースの プロパティは、姓を昇順に並べ替え、名を降順に並べ替えるように設定されています。 + + [!code-csharp[DP DataView Samples#CreateLDVFromQueryStringSort](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP DataView Samples/CS/Form1.cs#createldvfromquerystringsort)] + [!code-vb[DP DataView Samples#CreateLDVFromQueryStringSort](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP DataView Samples/VB/Form1.vb#createldvfromquerystringsort)] + +## DataTable からの DataView の作成 + オブジェクトは、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリから作成できるほか、 メソッドを使用して から作成することもできます。 + + 次の例では、 を SalesOrderDetail テーブルから作成した後、 オブジェクトのデータ ソースとして設定します。 このオブジェクトは、 コントロールのプロキシとして動作します。 + + [!code-csharp[DP DataView Samples#CreateLDVFromTable](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP DataView Samples/CS/Form1.cs#createldvfromtable)] + [!code-vb[DP DataView Samples#CreateLDVFromTable](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP DataView Samples/VB/Form1.vb#createldvfromtable)] + + から を作成した後、フィルターおよび並べ替えを設定できます。 次の例では、 を Contact テーブルから作成した後、姓を昇順に並べ替え、名を降順に並べ替えるための プロパティを設定します。 + + [!code-csharp[DP DataView Samples#LDVStringSort](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP DataView Samples/CS/Form1.cs#ldvstringsort)] + [!code-vb[DP DataView Samples#LDVStringSort](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP DataView Samples/VB/Form1.vb#ldvstringsort)] + + ただし、 をクエリから作成した後に プロパティまたは プロパティを設定する操作を行うと、パフォーマンスが低下します。なぜなら、 により、フィルター処理および並べ替え処理をサポートするためのインデックスが構築されるからです。 プロパティまたは プロパティを設定すると、データのインデックスが再構築され、アプリケーションのオーバーヘッドが増加してパフォーマンスの低下を招きます。 可能な場合は、 を最初に作成するときにフィルター処理および並べ替え情報を指定して、後で情報を変更するのを避けてください。 + +## 参照 + [Data Binding and LINQ to DataSet](../../../../docs/framework/data/adonet/data-binding-and-linq-to-dataset.md) + [Filtering with DataView](../../../../docs/framework/data/adonet/filtering-with-dataview-linq-to-dataset.md) + [Sorting with DataView](../../../../docs/framework/data/adonet/sorting-with-dataview-linq-to-dataset.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/cross-table-queries-linq-to-dataset.md b/docs/framework/data/adonet/cross-table-queries-linq-to-dataset.md new file mode 100644 index 00000000000..0fa017b83fc --- /dev/null +++ b/docs/framework/data/adonet/cross-table-queries-linq-to-dataset.md @@ -0,0 +1,41 @@ +--- +title: "Cross-Table Queries (LINQ to DataSet) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6819a16f-8656-41af-a54d-dfec0cb66366 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Cross-Table Queries (LINQ to DataSet) +[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] では、1 つのテーブルを対象とするクエリに加え、複数のテーブルを対象とするクエリを実行できます。このようなクエリは、*統合*を使用して実現されます。 結合とは、あるデータ ソース内のオブジェクトを、他方のデータ ソース内で共通の属性 \(たとえば製品や連絡先 ID\) を持つオブジェクトと関連付けることです。 オブジェクト指向プログラミングでは、それぞれのオブジェクトが別のオブジェクトを参照するメンバーを持つため、オブジェクト間のリレーションシップを比較的簡単にナビゲートできます。ただし、外部データベース テーブル内でのリレーションシップは、これほど簡単にはナビゲートできません。 データベース テーブルには、組み込みのリレーションシップがありません。このようなケースでは、結合操作を使用して、互いのソースの要素を対応付けることができます。 たとえば、製品情報と売上情報が 2 つのテーブルに格納されている場合、結合操作を使用して、同じ販売注文の売上情報と製品を対応付けることができます。 + + [!INCLUDE[vbteclinqext](../../../../includes/vbteclinqext-md.md)] フレームワークには、 の 2 つの結合演算子が用意されています。これらの演算子は、キーが等しいときだけ 2 つのデータ ソースを対応付ける結合方法である*等結合*を実行します \(これに対し、[!INCLUDE[tsql](../../../../includes/tsql-md.md)] では、`equals` 以外に `less than` 演算子などの結合演算子がサポートされます\)。 + + リレーショナル データベース用語では、 は内部結合を実行します。 内部結合とは、対応するデータセット内で一致するオブジェクトがあるオブジェクトのみが返される結合です。 + + リレーショナル データベース用語で 演算子に相当するものはありません。この演算子は、内部結合と左外部結合のスーパーセットを実装します。左外部結合とは、関連のある要素が 2 つ目のコレクションに存在しない場合でも 1 つ目 \(左側\) のコレクションの各要素を返す結合です。 + + 結合の詳細については、「[Join Operations](../../../../ocs/visual-basic/programming-guide/concepts/linq/join-operations.md)」を参照してください。 + +## 例 + 次の例では、AdventureWorks サンプル データベースの `SalesOrderHeader` テーブルと `SalesOrderDetail` テーブルを従来の方法で結合し、8 月以降のオンラインでの注文を取得します。 + + [!code-csharp[DP LINQ to DataSet Examples#Join](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/CS/Program.cs#join)] + [!code-vb[DP LINQ to DataSet Examples#Join](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/VB/Module1.vb#join)] + +## 参照 + [Querying DataSets](../../../../docs/framework/data/adonet/querying-datasets-linq-to-dataset.md) + [Single\-Table Queries](../../../../docs/framework/data/adonet/single-table-queries-linq-to-dataset.md) + [Querying Typed DataSets](../../../../docs/framework/data/adonet/querying-typed-datasets.md) + [Join Operations](../../../../ocs/visual-basic/programming-guide/concepts/linq/join-operations.md) + [LINQ to DataSet Examples](../../../../docs/framework/data/adonet/linq-to-dataset-examples.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/data-binding-and-linq-to-dataset.md b/docs/framework/data/adonet/data-binding-and-linq-to-dataset.md new file mode 100644 index 00000000000..afc05339f1e --- /dev/null +++ b/docs/framework/data/adonet/data-binding-and-linq-to-dataset.md @@ -0,0 +1,46 @@ +--- +title: "Data Binding and LINQ to DataSet | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 310bff4a-32dd-4f20-a271-6dbd82912631 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Data Binding and LINQ to DataSet +*データ バインド*とは、アプリケーションの UI とビジネス ロジックの間の接続を確立する処理です。 バインドが適切に設定され、データから適切な通知が提供される場合、データの値が変更されると、そのデータにバインドされている要素に変更が自動的に反映されます。 はメモリ内データ表現であり、含まれているデータ ソースとは関係なく、一貫性のあるリレーショナル プログラミング モデルを提供します。 ADO.NET 2.0 の では、 に格納されているデータの並べ替えとフィルター処理を行うことができます。 この機能は、データ バインド アプリケーションで一般に使用されます。 を使用すると、さまざまな並べ替え順序を使用してテーブルのデータを公開したり、行の状態やフィルター式に基づいてデータをフィルター処理したりできます。 オブジェクトの詳細については、「[DataViews](../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md)」を参照してください。 + + [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] では、開発者は、[!INCLUDE[vbteclinqext](../../../../includes/vbteclinqext-md.md)] を使用して、 に対する複雑で強力なクエリを作成できます。 ただし、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリは、バインド シナリオで簡単に使用できない オブジェクトの列挙を返します。バインドを容易にするには、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリから を作成します。 この は、クエリに指定されているフィルター処理および並べ替え処理を使用しますが、よりデータ バインドに適しています。 [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] は、文字列ベースのフィルター処理および並べ替え処理よりもはるかに複雑で強力な [!INCLUDE[vbteclinq](../../../../includes/vbteclinq-md.md)] 式ベースのフィルター処理および並べ替え処理を提供することで、 の機能を拡張します。 + + はクエリ自体を表すもので、クエリに基づくビューではありません。 単純なデータ バインド モデルを提供する場合、 は、 などの UI コントロールにバインドされます。 当該テーブルの既定のビューを提供する場合、 は、 から作成することもできます。 + +## このセクションの内容 + [Creating a DataView Object](../../../../docs/framework/data/adonet/creating-a-dataview-object-linq-to-dataset.md) + の作成に関する情報を提供します。 + + [Filtering with DataView](../../../../docs/framework/data/adonet/filtering-with-dataview-linq-to-dataset.md) + を使用してフィルター処理する方法について説明します。 + + [Sorting with DataView](../../../../docs/framework/data/adonet/sorting-with-dataview-linq-to-dataset.md) + を使用して並べ替えを行う方法について説明します。 + + [Querying the DataRowView Collection in a DataView](../../../../docs/framework/data/adonet/querying-the-datarowview-collection-in-a-dataview.md) + が公開する コレクションを照会する方法について説明します。 + + [DataView Performance](../../../../docs/framework/data/adonet/dataview-performance.md) + およびパフォーマンスに関する情報を提供します。 + + [How to: Bind a DataView Object to a Windows Forms DataGridView Control](../../../../docs/framework/data/adonet/how-to-bind-a-dataview-object-to-a-winforms-datagridview-control.md) + オブジェクトを にバインドする方法について説明します。 + +## 参照 + [Programming Guide](../../../../docs/framework/data/adonet/programming-guide-linq-to-dataset.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/data-providers.md b/docs/framework/data/adonet/data-providers.md new file mode 100644 index 00000000000..2f21ab1ee78 --- /dev/null +++ b/docs/framework/data/adonet/data-providers.md @@ -0,0 +1,167 @@ +--- +title: ".NET Framework データ プロバイダー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 03a9fc62-2d24-491a-9fe6-d6bdb6dcb131 +caps.latest.revision: 13 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 13 +--- +# .NET Framework データ プロバイダー +[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーは、データベースに接続して、コマンドを実行したり、結果を取得したりする目的で使用されます。 その結果は、直接処理されるか、必要に応じてユーザーに公開されるように に格納されるか、取得したデータセットを複数のソースからのデータと組み合わせるか、または、層間でリモート処理されます。 軽量な [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーでは、データ ソースとコード間に形成される層が最小限で済むため、機能を犠牲にすることなく、パフォーマンスを高めることができます。 + + 次の表に、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] に含まれているデータ プロバイダーを示します。 + +|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダー|説明| +|----------------------------------------------------------------------------|--------| +|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)]|Microsoft [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] へのデータ アクセスを提供します。 名前空間を使用してください。| +|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB|OLE DB を使用して公開されるデータ ソースに対応。 名前空間を使用してください。| +|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)]Data Provider for ODBC|ODBC を使用して公開されるデータ ソースに対応。 名前空間を使用してください。| +|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)]Data Provider for Oracle|Oracle データ ソースに対応。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for Oracle は、Oracle クライアント ソフトウェア バージョン 8.1.7 以降をサポートしています。 名前空間を使用してください。| +|EntityClient プロバイダー|エンティティ データ モデル \(EDM\) アプリケーションにデータ アクセスを提供します。 名前空間を使用してください。| +|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] Compact 4.0|Microsoft [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] Compact 4.0 へのデータ アクセスを提供します。[System.Data.SqlServerCe](http://msdn.microsoft.com/library/system.data.sqlserverce.aspx) 名前空間を使用します。| + +## .NET Framework Data Providers の核となるオブジェクト + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーを構成する核となる 4 つのオブジェクトの概要を、次の表に示します。 + +|Object|説明| +|------------|--------| +|`Connection`|特定のデータ ソースへの接続を確立します。 すべての `Connection` オブジェクトの基本クラスは クラスです。| +|`Command`|データ ソースに対してコマンドを実行します。`Parameters` を公開し、`Transaction` から `Connection` のスコープ内で実行できます。 すべての `Command` オブジェクトの基本クラスは クラスです。| +|`DataReader`|データ ソースから、前方参照専用で読み取り専用のデータ ストリームを読み取ります。 すべての `DataReader` オブジェクトの基本クラスは クラスです。| +|`DataAdapter`|`DataSet` にデータ ソースのデータを読み込んだり、データ ソースの更新内容を解決したりします。 すべての `DataAdapter` オブジェクトの基本クラスは クラスです。| + + 前の表で示した核となるクラスの他に、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーには次の表に示すクラスも含まれます。 + +|Object|説明| +|------------|--------| +|`Transaction`|データ ソースでトランザクション内にコマンドを追加します。 すべての `Transaction` オブジェクトの基本クラスは クラスです。 ADO.NET は、 名前空間のクラスを使ったトランザクションもサポートします。| +|`CommandBuilder`|`DataAdapter` のコマンド プロパティを自動的に生成したり、ストアド プロシージャからパラメーター情報を取得したり、`Parameters` オブジェクトの `Command` コレクションにパラメーターを設定したりするためのヘルパー オブジェクトです。 すべての `CommandBuilder` オブジェクトの基本クラスは クラスです。| +|`ConnectionStringBuilder`|`Connection` オブジェクトが使用する接続文字列を簡単に作成および管理するためのヘルパー オブジェクトです。 すべての `ConnectionStringBuilder` オブジェクトの基本クラスは クラスです。| +|`Parameter`|コマンドやストアド プロシージャの入力パラメーター、出力パラメーター、および戻り値パラメーターを定義します。 すべての `Parameter` オブジェクトの基本クラスは クラスです。| +|`Exception`|データ ソースでエラーが検出されたときに返されます。 クライアントで検出されたエラーの場合、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーは [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 例外をスローします。 すべての `Exception` オブジェクトの基本クラスは クラスです。| +|`Error`|データ ソースから返された警告またはエラー情報を公開します。| +|`ClientPermission`|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーにコード アクセス セキュリティ属性を提供します。 すべての `ClientPermission` オブジェクトの基本クラスは クラスです。| + +## .NET Framework Data Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] \(SqlClient\) + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] \(SqlClient\) は独自のプロトコルを使用して [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] と通信します。 これは軽量で高速に動作します。OLE DB または ODBC \(Open Database Connectivity\) 層を追加しなくても、直接 [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] にアクセスするように最適化されているためです。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] と [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB の対比を次の図に示します。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB は、接続プールとトランザクション サービスを提供する OLE DB Service コンポーネントと、データ ソース用の OLE DB プロバイダーの両方をとおして OLE DB データ ソースと通信します。 + +> [!NOTE] +> [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for ODBC は、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB に似たアーキテクチャを持っています。たとえば、ODBC Service コンポーネントへの呼び出しを行います。 + + ![データ プロバイダー](../../../../docs/framework/data/adonet/media/netdataproviders-bpuedev11.png "NETDataProviders\_bpuedev11") +.NET Framework Data Provider for SQL Server と .NET Framework Data Provider for OLE DB の比較 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] クラスは、名前空間 内に配置されます。 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] はローカル トランザクションと分散トランザクションのどちらもサポートします。 分散トランザクションの場合、既定で、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] は自動的にトランザクションに参加し、トランザクションの詳細を Windows コンポーネント サービスまたは から取得します。 詳細については、「[トランザクションと同時実行](../../../../docs/framework/data/adonet/transactions-and-concurrency.md)」を参照してください。 + + 名前空間 `System.Data.SqlClient` をユーザーのアプリケーションにインクルードする方法を次のコード サンプルで示します。 + +```vb +Imports System.Data.SqlClient +``` + +```csharp +using System.Data.SqlClient; +``` + +## .NET Framework Data Provider for OLE DB + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB \(OleDb\) は、COM 相互運用機能を介してネイティブ OLE DB を使用することで、データへのアクセスを可能にします。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB はローカル トランザクションと分散トランザクションのどちらもサポートします。 分散トランザクションの場合、既定で、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB は自動的にトランザクションに参加し、トランザクションの詳細を Windows コンポーネント サービスから取得します。 詳細については、「[トランザクションと同時実行](../../../../docs/framework/data/adonet/transactions-and-concurrency.md)」を参照してください。 + + [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] とのテストが完了しているプロバイダーを次の表に示します。 + +|ドライバー|プロバイダー| +|-----------|------------| +|SQLOLEDB|Microsoft OLE DB Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)]| +|MSDAORA|Microsoft OLE DB Provider for Oracle| +|Microsoft.Jet.OLEDB.4.0|OLE DB Provider for Microsoft Jet| + +> [!NOTE] +> [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アプリケーションなどのマルチスレッド アプリケーションのデータ ソースとして Access \(Jet\) データベースを使用することはお勧めできません。[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アプリケーションのデータ ソースとして Jet を使用する必要がある場合、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アプリケーションから Access データベースへの接続で問題が発生することがあるので注意してください。 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB は OLE DB バージョン 2.5 のインターフェイスをサポートしていません。 OLE DB 2.5 インターフェイスのサポートを必要とする OLE DB Providers は、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB と併用した場合、適切に機能しません。 これには Microsoft OLE DB Provider for Exchange および Microsoft OLE DB Provider for Internet Publishing が含まれます。 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB と OLE DB Provider for ODBC \(MSDASQL\) は併用できません。[!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] を使用して ODBC データ ソースにアクセスするには、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for ODBC を使用してください。 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB クラスは、名前空間 内に配置されます。 名前空間 `System.Data.OleDb` をユーザーのアプリケーションにインクルードする方法を次のコード サンプルで示します。 + +```vb +Imports System.Data.OleDb +``` + +```csharp +using System.Data.OleDb; +``` + +## .NET Framework Data Provider for ODBC + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for ODBC \(Odbc\) は、ネイティブ ODBC ドライバー マネージャー \(DM\) を使用することで、データへのアクセスを可能にします。 ODBC データ プロバイダーはローカル トランザクションと分散トランザクションのどちらもサポートします。 分散トランザクションの場合、既定で、ODBC データ プロバイダーは自動的にトランザクションに参加し、トランザクションの詳細を Windows コンポーネント サービスから取得します。 詳細については、「[トランザクションと同時実行](../../../../docs/framework/data/adonet/transactions-and-concurrency.md)」を参照してください。 + + [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] とのテストが完了している ODBC ドライバーを次の表に示します。 + +|ドライバー| +|-----------| +|[!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)]| +|Microsoft ODBC for Oracle| +|Microsoft Access ドライバー \(\*.mdb\)| + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for ODBC クラスは、名前空間 内に配置されます。 + + 名前空間 `System.Data.Odbc` をユーザーのアプリケーションにインクルードする方法を次のコード サンプルで示します。 + +```vb +Imports System.Data.Odbc +``` + +```csharp +using System.Data.Odbc; +``` + +> [!NOTE] +> [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for ODBC を使用する場合、MDAC 2.6 以降が必要となります。MDAC 2.8 SP1 をお勧めします。 MDAC 2.8 SP1 は「[データ アクセスおよびストレージ デベロッパー センター](http://go.microsoft.com/fwlink/?linkid=4173)」からダウンロードできます。 + +## .NET Framework Oracle 用データ プロバイダー + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for Oracle \(OracleClient\) は、Oracle クライアント接続ソフトウェアを介して、Oracle データ ソースのデータへのアクセスを可能にします。 このデータ プロバイダーは Oracle クライアント ソフトウェア バージョン 8.1.7 以降をサポートしています。 データ プロバイダーはローカル トランザクションと分散トランザクションのどちらもサポートします。 詳細については、「[トランザクションと同時実行](../../../../docs/framework/data/adonet/transactions-and-concurrency.md)」を参照してください。 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for Oracle を使用する場合、Oracle データ ソースに接続する前に、Oracle クライアント ソフトウェア \(バージョン 8.1.7 以降\) をシステムにインストールする必要があります。 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for Oracle クラスは、名前空間 内に配置され、`System.Data.OracleClient.dll` アセンブリに格納されます。 このデータ プロバイダーを使用するアプリケーションをコンパイルする場合は、`System.Data.dll` と `System.Data.OracleClient.dll` の両方を参照する必要があります。 + + 名前空間 `System.Data.OracleClient` をユーザーのアプリケーションにインクルードする方法を次のコード サンプルで示します。 + +```vb +Imports System.Data +Imports System.Data.OracleClient +``` + +```csharp +using System.Data; +using System.Data.OracleClient; +``` + +## .NET Framework データ プロバイダーの選択 + アプリケーションのデザインおよびデータ ソースによっては、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーを選択すると、アプリケーションのパフォーマンス、能力、および整合性が向上します。 各 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーが持つ利点と制限事項を次の表で説明します。 + +|プロバイダー|ノート| +|------------|---------| +|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)]|[!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] を使用する中間層アプリケーションに推奨されています。

Microsoft Database Engine \(MSDE\) または [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] を使用する単層アプリケーションに推奨されています。

SQLOLEDB \(OLE DB Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)]\) と [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB を併用する場合に推奨します。| +|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for OLE DB|[!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] では、このプロバイダーではなく [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Data Provider for [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] が推奨されます。

Microsoft Access データベースを使用する単層アプリケーションに推奨されます。 Access データベースを中間層アプリケーションで使用することはお勧めできません。| +|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] ``Data Provider for ODBC|中間層アプリケーションおよび単層アプリケーションで ODBC データ ソースを使用する場合に推奨します。| +|[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] ``Data Provider for Oracle|中間層アプリケーションおよび単層アプリケーションで Oracle データ ソースを使用する場合に推奨します。| + +## EntityClient プロバイダー + EntityClient プロバイダーは、エンティティ データ モデル \(EDM\) に基づくデータ アクセスで使用されます。 他の .NET Framework データ プロバイダーとは異なり、データ ソースと直接やり取りしません。 代わりに Entity SQL を使用して、基になるデータ プロバイダーと通信します。 詳細については、「[EntityClient and Entity SQL](http://msdn.microsoft.com/ja-jp/49202ab9-ac98-4b4b-a05c-140e422bf527)」を参照してください。 + +## 参照 + [ADO.NET の概要](../../../../docs/framework/data/adonet/ado-net-overview.md) + [ADO.NET でのデータの取得および変更](../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + [ADO.NET のマネージ プロバイダーと DataSet デベロッパー センター](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/data-tracing.md b/docs/framework/data/adonet/data-tracing.md new file mode 100644 index 00000000000..5ae5fcafd3f --- /dev/null +++ b/docs/framework/data/adonet/data-tracing.md @@ -0,0 +1,64 @@ +--- +title: "ADO.NET でのデータ トレース | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a6a752a5-d2a9-4335-a382-b58690ccb79f +caps.latest.revision: 9 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 9 +--- +# ADO.NET でのデータ トレース +ADO.NET は、組み込みデータ トレース機能を特徴としています。この機能は、[!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)]、Oracle、OLE DB、および ODBC 用の .NET データ プロバイダーと、ADO.NET および [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] ネットワーク プロトコルによりサポートされています。 + + データ アクセス API 呼び出しのトレースは、次の問題を診断する際に役立ちます。 + +- クライアント プログラムとデータベース間のスキーマの不一致 + +- データベースの使用不可またはネットワーク ライブラリの問題 + +- 誤った SQL がアプリケーションによりハードコーディングまたは生成された + +- プログラミング ロジックが不適切 + +- 複数の ADO.NET コンポーネント間または ADO.NET と独自コンポーネント間の対話に起因する問題 + + トレースを拡張することにより異なるトレース技術をサポートできます。このため、開発者はアプリケーション スタックのあらゆるレベルで問題をトレースできます。 トレースは ADO.NET のみで使用できる機能ではありませんが、Microsoft プロバイダーでは、汎用トレース機能および instrumentation API を活用しています。 + + ADO.NET におけるマネージ トレースの設定と構成の詳細については、「[データ アクセスのトレース](http://msdn.microsoft.com/library/hh880086.aspx)」を参照してください。 + +## 拡張イベント ログの診断情報へのアクセス + [!INCLUDE[ssNoVersion](../../../../includes/ssnoversion-md.md)] の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーでは、拡張イベント ログのサーバーの接続のリング バッファーやアプリケーションのパフォーマンス情報から、接続の障害などのクライアントのイベントを診断情報と関連付けることを容易にするため、データ アクセスのトレース \(「[データ アクセスのトレース](http://msdn.microsoft.com/library/hh880086.aspx)」\) が更新されました。 拡張イベント ログの読み取りの詳細については、「[イベント セッション データの表示](http://msdn.microsoft.com/library/hh710068\(SQL.110\).aspx)」を参照してください。 + + 接続操作では、ADO.NET はクライアント接続 ID を送信します。 接続が失敗した場合、接続リング バッファー \(「[接続リング バッファーを使用して SQL Server 2008 の接続のトラブルシューティングを実行する](http://go.microsoft.com/fwlink/?LinkId=207752)」\) にアクセスし、`ClientConnectionID` フィールドを見つけて、接続エラーについての診断情報を取得できます。 クライアント接続 ID は、エラーが発生した場合にのみリング バッファーに記録されます。 \(接続がログイン前のパケットを送信する前に失敗すると、クライアント接続 ID は生成されません。\) クライアント接続 ID は 16 バイトの GUID です。 拡張イベント セッション内のイベントに `client_connection_id` アクションが追加された場合にも、拡張イベントのターゲット出力のクライアント接続 ID を見つけることができます。 それ以上にクライアントのドライバーの診断について支援が必要な場合は、データ アクセスのトレースを有効にし、接続コマンドを再実行して、データ アクセスのトレースの `ClientConnectionID` フィールドを確認することができます。 + + `SqlConnection.ClientConnectionID` プロパティを使用して、クライアント接続 ID をプログラムによって取得できます。 + + `ClientConnectionID` は、正常に接続を確立する オブジェクトで使用できます。 接続試行が失敗すると、`ClientConnectionID` は `SqlException.ToString` を通じて利用可能になることがあります。 + + ADO.NET は、スレッド固有のアクティビティ ID も送信します。 TRACK\_CAUSAILITY オプションが有効な状態でセッションが開始されると、アクティビティ ID は拡張イベントのセッションでキャプチャされます。 アクティブな接続のパフォーマンスの問題については、クライアントのデータ アクセスのトレース \(`ActivityID` フィールド\) からアクティビティ ID を取得した後、その拡張イベントの出力のアクティビティ ID を検索できます。 拡張イベントのアクティビティ ID は 16 バイトの GUID \(クライアント接続 ID の GUID と同じではありません\) であり、4 バイトのシーケンス番号が追加されています。 シーケンス番号は、スレッド内で要求の順序を表し、スレッドのバッチと RPC ステートメントの相対的順序を示します。 `ActivityID` は、現在、データ アクセスのトレースが有効な場合、データ アクセスのトレースの構成のワードの 18 番目のビットが有効にされると、オプションとして SQL のバッチ ステートメントと RPC の要求に送信されるようになっています。 + + 次は、リング バッファーに格納され、RPC とバッチ操作でクライアントから送信されるアクティビティ ID を記録する拡張イベントのセッションを開始するために [!INCLUDE[tsql](../../../../includes/tsql-md.md)] を使用するサンプルです。 + +``` +create event session MySession on server +add event connectivity_ring_buffer_recorded, +add event sql_statement_starting (action (client_connection_id)), +add event sql_statement_completed (action (client_connection_id)), +add event rpc_starting (action (client_connection_id)), +add event rpc_completed (action (client_connection_id)) +add target ring_buffer with (track_causality=on) +``` + +## 参照 + [.NET Framework のネットワークのトレース](../../../../docs/framework/network-programming/network-tracing.md) + [Tracing and Instrumenting Applications](../../../../docs/framework/debug-trace-profile/tracing-and-instrumenting-applications.md) + [ADO.NET マネージ プロバイダーおよび DataSet デベロッパー センター](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/data-type-mappings-in-ado-net.md b/docs/framework/data/adonet/data-type-mappings-in-ado-net.md new file mode 100644 index 00000000000..69031a7b8a3 --- /dev/null +++ b/docs/framework/data/adonet/data-type-mappings-in-ado-net.md @@ -0,0 +1,51 @@ +--- +title: "ADO.NET でのデータ型のマッピング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d4afab94-ada6-4c77-a73c-41f17bae6b5a +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# ADO.NET でのデータ型のマッピング +.NET Framework は共通型システムを基にしています。このシステムは実行時の型の宣言、使用、および管理方法を定義するものです。 値型と参照型の両方から構成されており、これらはすべて 基本型から派生します。 データ ソースを操作するときは、データ型が明示的に指定されていない場合はデータ プロバイダーから推論されます。 たとえば、 オブジェクトは、特定のデータ ソースには依存しません。 `DataSet` 内のデータはデータ ソースから取得され、変更は `DataAdapter` によってデータ ソースに反映されます。 つまり、`DataAdapter` が `DataSet` 内の に、データ ソースからの値を格納すると、`DataTable` 内の列で結果として設定されるデータ型は、データ ソースへの接続を行う目的で使用した [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダー固有の型ではなく、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] のデータ型になります。 + + 同様に、`DataReader` がデータ ソースから値を返すと、結果の値が [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型のローカル変数に格納されます。`DataAdapter` の `Fill` 操作の場合も、`DataReader` の `Get` メソッドの場合も、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の型は [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーから返された値から推論されます。 + + 返される値の型がわかっている場合は、推論されるデータ型を使用するのではなく、`DataReader` の型指定されたアクセサー メソッドを使用できます。 型指定されたアクセサー メソッドを使用して [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の特定の型として値を返すと、追加の型変換が不要になるため、パフォーマンスが向上します。 + +> [!NOTE] +> [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーのデータ型の null 値は、`DBNull.Value` で表現されます。 + +## このセクションの内容 + [SQL Server データ型のマッピング](../../../../docs/framework/data/adonet/sql-server-data-type-mappings.md) + 推論されたデータ型マッピングおよび のデータ アクセサー メソッドを一覧で示します。 + + [OLE DB データ型のマッピング](../../../../docs/framework/data/adonet/ole-db-data-type-mappings.md) + 推論されたデータ型マッピングおよび のデータ アクセサー メソッドを一覧で示します。 + + [ODBC データ型のマッピング](../../../../docs/framework/data/adonet/odbc-data-type-mappings.md) + 推論されたデータ型マッピングおよび のデータ アクセサー メソッドを一覧で示します。 + + [Oracle データ型のマッピング](../../../../docs/framework/data/adonet/oracle-data-type-mappings.md) + 推論されたデータ型マッピングおよび のデータ アクセサー メソッドを一覧で示します。 + + [浮動小数点数](../../../../docs/framework/data/adonet/floating-point-numbers.md) + 開発者が浮動小数点数を扱う際の発生頻度の高い問題について説明します。 + +## 参照 + [SQL Server データ型と ADO.NET](../../../../docs/framework/data/adonet/sql/sql-server-data-types.md) + [パラメーターおよびパラメーター データ型の構成](../../../../docs/framework/data/adonet/configuring-parameters-and-parameter-data-types.md) + [データベース スキーマ情報の取得](../../../../docs/framework/data/adonet/retrieving-database-schema-information.md) + [共通型システム](../../../../docs/standard/base-types/common-type-system.md) + [Converting Types](http://msdn.microsoft.com/ja-jp/6038316e-bdaf-4f55-8006-407f591ce156) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataadapter-datatable-and-datacolumn-mappings.md b/docs/framework/data/adonet/dataadapter-datatable-and-datacolumn-mappings.md new file mode 100644 index 00000000000..d7cd01c6419 --- /dev/null +++ b/docs/framework/data/adonet/dataadapter-datatable-and-datacolumn-mappings.md @@ -0,0 +1,109 @@ +--- +title: "DataAdapter DataTable と DataColumn のマップ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d023260a-a66a-4c39-b8f4-090cd130e730 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# DataAdapter DataTable と DataColumn のマップ +**DataAdapter** は、**TableMappings** プロパティに 0 個以上の オブジェクトのコレクションを持っています。 **DataTableMapping** はデータ ソースに対するクエリで返されたデータと の間のマスターのマップを提供します。 **DataTableMapping** 名は、**DataAdapter** の **Fill** メソッドに **DataTable** 名の代わりとして渡すことができます。 **Authors** テーブルに対して **AuthorsMapping** という名前の **DataTableMapping** を作成する例を次に示します。 + +```vb +workAdapter.TableMappings.Add("AuthorsMapping", "Authors") +``` + +```csharp +workAdapter.TableMappings.Add("AuthorsMapping", "Authors"); +``` + + **DataTableMapping** を使用すると、**DataTable** 内でデータベースの列名とは異なる列名を使用できます。 **DataAdapter** はテーブルの更新時にこのマップを使用して列を一致させます。 + + **DataAdapter** の **Fill** メソッドまたは **Update** メソッドを呼び出すときに **TableName** または **DataTableMapping** 名を指定しなかった場合、**DataAdapter** は "Table" という名前の **DataTableMapping** を検索します。 その **DataTableMapping** が存在しない場合は、**DataTable** の **TableName** が "Table" になります。 "Table" という名前の **DataTableMapping** を作成することで既定の **DataTableMapping** を指定できます。 + + 次に示すのは、 名前空間から **DataTableMapping** を作成し、それに "Table" という名前を付けて、指定した **DataAdapter** の既定のマップとして設定するコード サンプルです。 この例では、その後、クエリ結果の最初のテーブル \(**Northwind** データベースの **Customers** テーブル\) の列を の **Northwind Customers** テーブルにある、よりわかりやすい名前のセットに割り当てます。 割り当てられない列には、データ ソースの列名が使用されます。 + +```vb +Dim mapping As DataTableMapping = _ + adapter.TableMappings.Add("Table", "NorthwindCustomers") +mapping.ColumnMappings.Add("CompanyName", "Company") +mapping.ColumnMappings.Add("ContactName", "Contact") +mapping.ColumnMappings.Add("PostalCode", "ZIPCode") + +adapter.Fill(custDS) + +``` + +```csharp +DataTableMapping mapping = + adapter.TableMappings.Add("Table", "NorthwindCustomers"); +mapping.ColumnMappings.Add("CompanyName", "Company"); +mapping.ColumnMappings.Add("ContactName", "Contact"); +mapping.ColumnMappings.Add("PostalCode", "ZIPCode"); + +adapter.Fill(custDS); +``` + + より高度な条件下では、同じ **DataAdapter** を使用して複数の割り当てが設定された複数テーブルの読み込みのサポートが必要な場合があります。 この場合、**DataTableMapping** オブジェクトを追加します。 + + **Fill** メソッドに **DataSet** のインスタンスと **DataTableMapping** 名が渡されたとき、その名前の割り当てが存在する場合はその名前が使用され、存在しない場合はその名前の **DataTable** が使用されます。 + + 次に示すのは、**Customers** という名前と **BizTalkSchema** という **DataTable** 名を持つ **DataTableMapping** を作成する例です。 この例では、その後で、SELECT ステートメントで返された行を **BizTalkSchema** **DataTable** に割り当てています。 + +```vb +Dim mapping As ITableMapping = _ + adapter.TableMappings.Add("Customers", "BizTalkSchema") +mapping.ColumnMappings.Add("CustomerID", "ClientID") +mapping.ColumnMappings.Add("CompanyName", "ClientName") +mapping.ColumnMappings.Add("ContactName", "Contact") +mapping.ColumnMappings.Add("PostalCode", "ZIP") + +adapter.Fill(custDS, "Customers") + +``` + +```csharp +ITableMapping mapping = + adapter.TableMappings.Add("Customers", "BizTalkSchema"); +mapping.ColumnMappings.Add("CustomerID", "ClientID"); +mapping.ColumnMappings.Add("CompanyName", "ClientName"); +mapping.ColumnMappings.Add("ContactName", "Contact"); +mapping.ColumnMappings.Add("PostalCode", "ZIP"); + +adapter.Fill(custDS, "Customers"); +``` + +> [!NOTE] +> 列マップにソースの列名を指定しなかった場合、またはテーブル マップにソース テーブル名を指定しなかった場合は、自動的に既定の名前が生成されます。 列マップにソース列を指定しなかった場合は、列マップに **SourceColumn1** から始まるインクリメンタル既定名 **SourceColumn** *N* が割り当てられます。 テーブル マップにソース テーブル名を指定しなかった場合は、テーブル マップに **SourceTable1** から始まるインクリメンタル既定名 **SourceTable** *N* が割り当てられます。 + +> [!NOTE] +> 列マップには、**SourceColumn** *N* の命名規則を使用しないこと、また、テーブルの割り当てには **SourceTable** *N* を使用しないことをお勧めします。これは、指定した名前が **ColumnMappingCollection** 内の既存する既定の列マップ名または **DataTableMappingCollection** 内のテーブル マップ名と競合しないようにするためです。 指定した名前が既に存在する場合は、例外がスローされます。 + +## 複数の結果セットの処理 + **SelectCommand** が複数のテーブルを返す場合、**Fill** は **DataSet** 内のテーブルに対する、インクリメント値を含むテーブル名を自動的に生成します。これは、指定したテーブル名で開始し、**TableName** *N* の形式で **TableName1** から数値を加算していく名前になります。 自動的に生成されたテーブル名は、テーブルの割り当てを使用して **DataSet** 内でテーブルに指定する名前に変換できます。 たとえば、**Customers** および **Orders** という 2 つのテーブルを返す **SelectCommand** に対して、次の **Fill** 呼び出しを実行します。 + +``` +adapter.Fill(customersDataSet, "Customers") +``` + + **DataSet** 内に **Customers** および **Customers1** という 2 つのテーブルが作成されます。 テーブル マップを使用して、2 つ目のテーブルに **Customers1** という名前の代わりに **Orders** という名前を付けることができます。 それには、次の例に示すように、ソース テーブル **Customers1** を **DataSet** テーブル **Orders** に割り当てます。 + +``` +adapter.TableMappings.Add("Customers1", "Orders") +adapter.Fill(customersDataSet, "Customers") +``` + +## 参照 + [DataAdapter と DataReader](../../../../docs/framework/data/adonet/dataadapters-and-datareaders.md) + [ADO.NET でのデータの取得および変更](../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataadapter-parameters.md b/docs/framework/data/adonet/dataadapter-parameters.md new file mode 100644 index 00000000000..6be4a7cb18f --- /dev/null +++ b/docs/framework/data/adonet/dataadapter-parameters.md @@ -0,0 +1,179 @@ +--- +title: "DataAdapter パラメーター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f21e6aba-b76d-46ad-a83e-2ad8e0af1e12 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# DataAdapter パラメーター + には 4 つのプロパティがあり、データ ソースからデータを取得したりデータ ソースのデータを更新したりするために使用されます。 プロパティは、データ ソースのデータを返します。、および の各プロパティは、データ ソースの変更を管理するために使用されます。 `SelectCommand` プロパティは、`DataAdapter` の `Fill` メソッドを呼び出す前に設定しておく必要があります。 `InsertCommand`、`UpdateCommand`、`DeleteCommand` の各プロパティは、 内のデータに加えられた変更に応じて、`DataAdapter` の `Update` メソッドを呼び出す前に設定する必要があります。 たとえば、行が追加された場合には、`Update` を呼び出す前に `InsertCommand` を設定する必要があります。 `Update` によって挿入行、更新行、または削除行が処理されるとき、`DataAdapter` でそれぞれの `Command` プロパティが使用され、アクションが処理されます。 変更された行に関する現在の情報が `Parameters` コレクションを経由して `Command` オブジェクトに渡されます。 + + データ ソースの行を更新するときは、一意識別子を使用してテーブル内の更新する列を識別する UPDATE ステートメントを呼び出します。 一意識別子は、一般には主キー フィールドの値です。 UPDATE ステートメントでは、次の Transact\-SQL ステートメントに示すように、一意識別子と更新する列および値の両方を含むパラメーターを使用します。 + +``` +UPDATE Customers SET CompanyName = @CompanyName + WHERE CustomerID = @CustomerID +``` + +> [!NOTE] +> パラメーターのプレースホルダーの構文はデータ ソースに依存します。 次に、SQL Server のデータ ソースのプレースホルダーの例を示します。 パラメーターおよび パラメーターのプレースホルダーとして、疑問符 \(?\) を使用します。 + + この [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] の例では、`CustomerID` が `@CustomerID``` パラメーターの値と等しい行の `@CompanyName` パラメーターの値で `CompanyName` フィールドが更新されます。 これらのパラメーターは オブジェクトの プロパティを使用して、変更された行から情報を取得します。 前のサンプル UPDATE ステートメントのパラメーターを次に示します。 このコードは、変数 `adapter` が有効な オブジェクトを表すことを前提としています。 + +``` +adapter.Parameters.Add( _ + "@CompanyName", SqlDbType.NChar, 15, "CompanyName") +Dim parameter As SqlParameter = _ + adapter.UpdateCommand.Parameters.Add("@CustomerID", _ + SqlDbType.NChar, 5, "CustomerID") +parameter.SourceVersion = DataRowVersion.Original +``` + + `Parameters` コレクションの `Add` メソッドは、パラメーター名、データ型、サイズ \(その型に適用可能な場合\)、および の名前を `DataTable` から受け取ります。 `@CustomerID` パラメーターの が `Original` に設定されることに注意してください。 この設定により、変更された で 1 つまたは複数の識別列の値が変更されている場合に、データ ソース内の既存の行が確実に更新されます。 識別列の値が変更されている場合、`Original` 行の値がデータ ソースの現在の値と一致し、`Current` 行の値に更新済みの値が格納されます。 `@CompanyName` パラメーターの `SourceVersion` は設定されていないため、既定値である `Current` の行の値が使用されます。 + +> [!NOTE] +> `DataAdapter` の `Fill` 操作と `DataReader` の `Get` メソッドのどちらの場合も、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の型は [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] データ プロバイダーから返された型から推論されます。 Microsoft SQL Server、OLE DB、および ODBC のデータ型から推論される [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の型およびアクセサー メソッドについては、「[ADO.NET でのデータ型のマッピング](../../../../docs/framework/data/adonet/data-type-mappings-in-ado-net.md)」を参照してください。 + +## Parameter.SourceColumn、Parameter.SourceVersion + `SourceColumn` および `SourceVersion` が、引数として `Parameter` コンストラクターに渡されるか、既存の `Parameter` のプロパティとして設定されます。 `SourceColumn` は、`Parameter` の値の取得先である の名前です。 `SourceVersion` により、`DataAdapter` で値の取得に使用される `DataRow` のバージョンを指定します。 + + `SourceVersion` で使用できる 列挙型の値を次の表に示します。 + +|DataRowVersion 列挙定数|説明| +|-------------------------|--------| +|`Current`|このパラメーターは列の現在の値を使用します。 既定値です。| +|`Default`|このパラメーターには列の `DefaultValue` を使用します。| +|`Original`|このパラメーターは列の元の値を使用します。| +|`Proposed`|このパラメーターは提示された値を使用します。| + + 次のセクションの `SqlClient` コード サンプルでは、`CustomerID` 列を 2 つのパラメーター `@CustomerID` \(`SET CustomerID = @CustomerID`\) および `@OldCustomerID` \(`WHERE CustomerID = @OldCustomerID`\) の `SourceColumn` として使用する のパラメーターを定義します。 `@CustomerID` パラメーターを使用して、**CustomerID** 列を `DataRow` の現在の値に更新します。 そのため、`SourceVersion` が `Current` である `CustomerID` `SourceColumn` が使用されます。 *@OldCustomerID* パラメーターは、データ ソースの現在の行を識別するために使用されています。 一致する列の値がその行の `Original` バージョンで見つかったため、`SourceVersion` が `Original` である同じ `SourceColumn` \(`CustomerID`\) が使用されます。 + +## SqlClient パラメーターの使用 + 次のコード サンプルでは、データベースから追加のスキーマ情報を取得するために を作成し、 に設定する方法を示します。 プロパティ、 プロパティ、 プロパティ、および プロパティが設定され、各プロパティに対応する オブジェクトが コレクションに追加されます。 このメソッドは `SqlDataAdapter` オブジェクトを返します。 + + [!code-csharp[Classic WebData SqlDataAdapter.SqlDataAdapter Example#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/Classic WebData SqlDataAdapter.SqlDataAdapter Example/CS/source.cs#1)] + [!code-vb[Classic WebData SqlDataAdapter.SqlDataAdapter Example#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/Classic WebData SqlDataAdapter.SqlDataAdapter Example/VB/source.vb#1)] + +## OleDb パラメーターのプレースホルダー + オブジェクトと オブジェクトの場合は、疑問符 \(?\) のプレースホルダーを使用してパラメーターを特定する必要があります。 + +```vb +Dim selectSQL As String = _ + "SELECT CustomerID, CompanyName FROM Customers " & _ + "WHERE CountryRegion = ? AND City = ?" +Dim insertSQL AS String = _ + "INSERT INTO Customers (CustomerID, CompanyName) VALUES (?, ?)" +Dim updateSQL AS String = _ + "UPDATE Customers SET CustomerID = ?, CompanyName = ? " & _ + WHERE CustomerID = ?" +Dim deleteSQL As String = "DELETE FROM Customers WHERE CustomerID = ?" +``` + +```csharp +string selectSQL = + "SELECT CustomerID, CompanyName FROM Customers " + + "WHERE CountryRegion = ? AND City = ?"; +string insertSQL = + "INSERT INTO Customers (CustomerID, CompanyName) " + + "VALUES (?, ?)"; +string updateSQL = + "UPDATE Customers SET CustomerID = ?, CompanyName = ? " + + "WHERE CustomerID = ? "; +string deleteSQL = "DELETE FROM Customers WHERE CustomerID = ?"; +``` + + パラメーターとして使用されるクエリ ステートメントは、作成する必要のある入力パラメーターおよび出力パラメーターを定義します。 パラメーターを作成するには、`Parameters.Add` メソッドまたは `Parameter` コンストラクターを使用して、列名、データ型、およびサイズを指定します。 `Integer` などの組み込みのデータ型の場合は、サイズを指定する必要はありません。サイズを指定する場合、既定のサイズを指定することになります。 + + 次のコード サンプルでは、SQL ステートメントのパラメーターを作成した後、`DataSet` にデータを格納します。 + +## OleDb の例 + +```vb +' Assumes that connection is a valid OleDbConnection object. +Dim adapter As OleDbDataAdapter = New OleDbDataAdapter + +Dim selectCMD AS OleDbCommand = New OleDbCommand(selectSQL, connection) +adapter.SelectCommand = selectCMD + +' Add parameters and set values. +selectCMD.Parameters.Add( _ + "@CountryRegion", OleDbType.VarChar, 15).Value = "UK" +selectCMD.Parameters.Add( _ + "@City", OleDbType.VarChar, 15).Value = "London" + +Dim customers As DataSet = New DataSet +adapter.Fill(customers, "Customers") + +``` + +```csharp +// Assumes that connection is a valid OleDbConnection object. +OleDbDataAdapter adapter = new OleDbDataAdapter(); + +OleDbCommand selectCMD = new OleDbCommand(selectSQL, connection); +adapter.SelectCommand = selectCMD; + +// Add parameters and set values. +selectCMD.Parameters.Add( + "@CountryRegion", OleDbType.VarChar, 15).Value = "UK"; +selectCMD.Parameters.Add( + "@City", OleDbType.VarChar, 15).Value = "London"; + +DataSet customers = new DataSet(); +adapter.Fill(customers, "Customers"); +``` + +## Odbc パラメーター + +```vb +' Assumes that connection is a valid OdbcConnection object. +Dim adapter As OdbcDataAdapter = New OdbcDataAdapter + +Dim selectCMD AS OdbcCommand = New OdbcCommand(selectSQL, connection) +adapter.SelectCommand = selectCMD + +' Add Parameters and set values. +selectCMD.Parameters.Add("@CountryRegion", OdbcType.VarChar, 15).Value = "UK" +selectCMD.Parameters.Add("@City", OdbcType.VarChar, 15).Value = "London" + +Dim customers As DataSet = New DataSet +adapter.Fill(customers, "Customers") + +``` + +```csharp +// Assumes that connection is a valid OdbcConnection object. +OdbcDataAdapter adapter = new OdbcDataAdapter(); + +OdbcCommand selectCMD = new OdbcCommand(selectSQL, connection); +adapter.SelectCommand = selectCMD; + +//Add Parameters and set values. +selectCMD.Parameters.Add("@CountryRegion", OdbcType.VarChar, 15).Value = "UK"; +selectCMD.Parameters.Add("@City", OdbcType.VarChar, 15).Value = "London"; + +DataSet customers = new DataSet(); +adapter.Fill(customers, "Customers"); +``` + +> [!NOTE] +> パラメーターにパラメーター名が指定されない場合、Parameter1 から始まり数字が増分される既定名 Parameter*N* が割り当てられます。 パラメーター名を指定するときには、Parameter*N* という名前付け規則を使用しないことをお勧めします。これは、指定した名前が `ParameterCollection` 内の既存の既定パラメーター名と競合しないようにするためです。 指定した名前が既に存在する場合は、例外がスローされます。 + +## 参照 + [DataAdapter と DataReader](../../../../docs/framework/data/adonet/dataadapters-and-datareaders.md) + [コマンドとパラメーター](../../../../docs/framework/data/adonet/commands-and-parameters.md) + [DataAdapter によるデータ ソースの更新](../../../../docs/framework/data/adonet/updating-data-sources-with-dataadapters.md) + [ストアド プロシージャでのデータの変更](../../../../docs/framework/data/adonet/modifying-data-with-stored-procedures.md) + [ADO.NET でのデータ型のマッピング](../../../../docs/framework/data/adonet/data-type-mappings-in-ado-net.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataadapters-and-datareaders.md b/docs/framework/data/adonet/dataadapters-and-datareaders.md new file mode 100644 index 00000000000..581cc300b4b --- /dev/null +++ b/docs/framework/data/adonet/dataadapters-and-datareaders.md @@ -0,0 +1,59 @@ +--- +title: "DataAdapter と DataReader | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cc952ca2-ec19-46ab-9189-15174b52cb74 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataAdapter と DataReader +ADO.NET の **DataReader** を使用すると、データベースから前方への読み取り専用のストリームを取得できます。 結果はクエリを実行すると返され、**DataReader** の **Read** メソッドを使用して要求するまで、クライアントのネットワーク バッファーに格納されます。 **DataReader** を使用すると、アプリケーションのパフォーマンスが向上します。これは、使用可能になったデータをすぐに取得するためと、一度に 1 つの行しかメモリに格納しない \(既定の設定\) ことによってシステムのオーバーヘッドが軽減されるためです。 + + は、データ ソースからデータを取得し、1 つの 内でテーブルを設定するために使用されます。 また、`DataAdapter` は、`DataSet` に対して加えられた変更をデータ ソースに反映させます。 `DataAdapter` は .NET Framework データ プロバイダーの `Connection` オブジェクトを使用してデータ ソースに接続し、`Command` オブジェクトを使用してデータ ソースからデータを取得し、変更をデータ ソースに反映させます。 + + .NET Framework に含まれている各 .NET Framework データ プロバイダーには、 および オブジェクトがあります。.NET Framework Data Provider for OLE DB には および オブジェクトがあります。.NET Framework Data Provider for SQL Server には および オブジェクトがあります。.NET Framework Data Provider for ODBC には、 および オブジェクトがあります。.NET Framework Data Provider for Oracle には、 および オブジェクトがあります。 + +## このセクションの内容 + [DataReader によるデータの取得](../../../../docs/framework/data/adonet/retrieving-data-using-a-datareader.md) + ADO.NET の **DataReader** オブジェクトと、それを使用してデータ ソースから結果ストリームを返す方法について説明します。 + + [DataAdapter からの DataSet の読み込み](../../../../docs/framework/data/adonet/populating-a-dataset-from-a-dataadapter.md) + `DataAdapter` を使用して `DataSet` にテーブル、列、および行を設定する方法について説明します。 + + [DataAdapter パラメーター](../../../../docs/framework/data/adonet/dataadapter-parameters.md) + `DataAdapter` のコマンド プロパティのパラメーターを使用する方法と、`DataSet` の列の内容をコマンド パラメーターに割り当てる方法について説明します。 + + [DataSet への既存の制約の追加](../../../../docs/framework/data/adonet/adding-existing-constraints-to-a-dataset.md) + 既存の制約を `DataSet` に追加する方法について説明します。 + + [DataAdapter DataTable と DataColumn のマップ](../../../../docs/framework/data/adonet/dataadapter-datatable-and-datacolumn-mappings.md) + `DataAdapter` の `DataTableMappings` および `ColumnMappings` を設定する方法について説明します。 + + [クエリ結果のページング](../../../../docs/framework/data/adonet/paging-through-a-query-result.md) + クエリの結果をデータ ページとして表示する例を示します。 + + [DataAdapter によるデータ ソースの更新](../../../../docs/framework/data/adonet/updating-data-sources-with-dataadapters.md) + `DataAdapter` を使用して `DataSet` の変更内容を解決してデータベースに戻す方法について説明します。 + + [DataAdapter のイベント処理](../../../../docs/framework/data/adonet/handling-dataadapter-events.md) + `DataAdapter` のイベントおよびその使用方法について説明します。 + + [DataAdapter によるバッチ操作の実行](../../../../docs/framework/data/adonet/performing-batch-operations-using-dataadapters.md) + `DataSet` から更新を適用する際に、SQL Server へのラウンド トリップ回数を減らすことにより、アプリケーションのパフォーマンスを向上させる方法について説明します。 + +## 参照 + [データ ソースへの接続](../../../../docs/framework/data/adonet/connecting-to-a-data-source.md) + [コマンドとパラメーター](../../../../docs/framework/data/adonet/commands-and-parameters.md) + [トランザクションと同時実行](../../../../docs/framework/data/adonet/transactions-and-concurrency.md) + [DataSets、DataTables、および DataViews](../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/TOC.md b/docs/framework/data/adonet/dataset-datatable-dataview/TOC.md new file mode 100644 index 00000000000..6cbe7419282 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/TOC.md @@ -0,0 +1,71 @@ +# [データの並べ替えとフィルター処理](sorting-and-filtering-data.md) +# [DataSet 内容の XML データとしての書き込み](writing-dataset-contents-as-xml-data.md) +# [DataSet スキーマの推論プロセスの概要](summary-of-the-dataset-schema-inference-process.md) +# [Dataset と XmlDataDocument の同期](synchronizing-a-dataset-with-an-xmldatadocument.md) +# [型指定された DataSet の注釈](annotating-typed-datasets.md) +# [DataTable の編集](datatable-edits.md) +# [DataTable スキーマの定義](datatable-schema-definition.md) +# [DataTable の作成](creating-a-datatable.md) +# [DataTable への列の追加](adding-columns-to-a-datatable.md) +# [DataSet の内容のマージ](merging-dataset-contents.md) +# [DataRelation の移動](navigating-datarelations.md) +# [DataView イベントの処理](handling-dataview-events.md) +# [入れ子になっていない要素間のリレーションの指定](specify-relations-between-elements-with-no-nesting.md) +# [AcceptChanges と RejectChanges](acceptchanges-and-rejectchanges.md) +# [Load メソッド](the-load-method.md) +# [DataTable へのデータの追加](adding-data-to-a-datatable.md) +# [ChildView とリレーション](childviews-and-relations.md) +# [AutoIncrement 列の作成](creating-autoincrement-columns.md) +# [XML からの DataSet リレーショナル構造の推論](inferring-dataset-relational-structure-from-xml.md) +# [DataSet の内容のコピー](copying-dataset-contents.md) +# [DataRow の削除](datarow-deletion.md) +# [DataView の作成](creating-a-dataview.md) +# [DataRelation の追加](adding-datarelations.md) +# [XML Web サービスからの DataSet の使用](consuming-a-dataset-from-an-xml-web-service.md) +# [DataTableReaders](datatablereaders.md) +# [DataRelation の入れ子化](nesting-datarelations.md) +# [リレーションシップの推論](inferring-relationships.md) +# [XML スキーマ (XSD) からの DataSet リレーショナル構造の派生](deriving-dataset-relational-structure-from-xml-schema-xsd.md) +# [DataRow および DataRowView](datarows-and-datarowviews.md) +# [行エラー情報](row-error-information.md) +# [DataSet に対する XPath クエリの実行](performing-an-xpath-query-on-a-dataset.md) +# [要素のテキストの推論](inferring-element-text.md) +# [推論の制限事項](inference-limitations.md) +# [テーブルの推論](inferring-tables.md) +# [DataSets、DataTables、および DataViews](index.md) +# [入れ子になっているスキーマ要素間の暗黙的なリレーションの割り当て](map-implicit-relations-between-nested-schema-elements.md) +# [DataView の変更](modifying-dataviews.md) +# [DataTable イベントの処理](handling-datatable-events.md) +# [行の検索](finding-rows.md) +# [DataTable 内のデータの操作](manipulating-data-in-a-datatable.md) +# [XML スキーマ (XSD) のキー参照制約の DataSet 制約への割り当て](map-keyref-xml-schema-xsd-constraints-to-dataset-constraints.md) +# [DataSet の作成](creating-a-dataset.md) +# [XML スキーマ (XSD) の UNIQUE 制約の DataSet 制約への割り当て](map-unique-xml-schema-xsd-constraints-to-dataset-constraints.md) +# [DataSet への DataTable の追加](adding-a-datatable-to-a-dataset.md) +# [DataSet のイベント処理](handling-dataset-events.md) +# [厳密に型指定された DataSet の生成](generating-strongly-typed-datasets.md) +# [DataTable](datatables.md) +# [XSD としての DataSet スキーマ情報の書き込み](writing-dataset-schema-information-as-xsd.md) +# [DataReader の作成](creating-a-datareader.md) +# [XML からの DataSet の読み込み](loading-a-dataset-from-xml.md) +# [XML の DataSet スキーマ情報の読み込み](loading-dataset-schema-information-from-xml.md) +# [XML スキーマ (XSD) 制約の DataSet 制約への割り当て](mapping-xml-schema-xsd-constraints-to-dataset-constraints.md) +# [DataSet での XML の使用](using-xml-in-a-dataset.md) +# [主キーの定義](defining-primary-keys.md) +# [行の状態とバージョン](row-states-and-row-versions.md) +# [DataView からの DataTable の作成](creating-a-datatable-from-a-dataview.md) +# [DataTable の制約](datatable-constraints.md) +# [入れ子になっている要素に指定したリレーションシップの割り当て](map-relations-specified-for-nested-elements.md) +# [XML スキーマ (XSD) のキー制約の DataSet 制約への割り当て](map-key-xml-schema-xsd-constraints-to-dataset-constraints.md) +# [DataTable の移動](navigating-datatables.md) +# [DataTable 内のデータの表示](viewing-data-in-a-datatable.md) +# [XML スキーマ (XSD) からの DataSet リレーションの生成](generating-dataset-relations-from-xml-schema-xsd.md) +# [XML スキーマ制約およびリレーションシップ](xml-schema-constraints-and-relationships.md) +# [DataViews](dataviews.md) +# [列の推論](inferring-columns.md) +# [DataSet と XmlDataDocument の同期](dataset-and-xmldatadocument-synchronization.md) +# [DataViews の管理](managing-dataviews.md) +# [式列の作成](creating-expression-columns.md) +# [DataSet への XSLT 変換の適用](applying-an-xslt-transform-to-a-dataset.md) +# [DiffGram](diffgrams.md) +# [型指定された DataSet](typed-datasets.md) diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/acceptchanges-and-rejectchanges.md b/docs/framework/data/adonet/dataset-datatable-dataview/acceptchanges-and-rejectchanges.md new file mode 100644 index 00000000000..d7b307c7833 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/acceptchanges-and-rejectchanges.md @@ -0,0 +1,69 @@ +--- +title: "AcceptChanges と RejectChanges | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e2d1a6fe-31f9-4b83-9728-06c406a3394e +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# AcceptChanges と RejectChanges + 内のデータに行われた変更が正確であるかどうかを検証した後で、、または メソッドを使用して、変更を受け入れることができます。変更を受け入れると、**Current** 行値が **Original** 値に設定され、**RowState** プロパティが **Unchanged** に設定されます。 変更を受け入れるかまたは拒否すると、**RowError** 情報が削除され、**HasErrors** プロパティが **false** に設定されます。 変更を受け入れるかまたは拒否した場合、データ ソース内で実行中の更新操作にも影響することがあります。 詳細については、「[DataAdapter によるデータ ソースの更新](../../../../../docs/framework/data/adonet/updating-data-sources-with-dataadapters.md)」を参照してください。 + + **DataTable** に外部キー制約が存在する場合、**AcceptChanges** と **RejectChanges** を使用して受け入れられた変更または拒否された変更は、**ForeignKeyConstraint.AcceptRejectRule** に基づいて **DataRow** の子の行に反映されます。 詳細については、「[DataTable の制約](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-constraints.md)」を参照してください。 + + 行にエラーがあるかどうかをチェックし、必要に応じてエラーを解決し、エラーを解決できない場合にはその行を拒否する例を次に示します。 解決されたエラーについては、**RowError** 値が空の文字列にリセットされるため、**HasErrors** プロパティが **false** に設定されます。 エラーのある行がすべて解決または拒否された時点で、**DataTable** 全体に対するすべての変更を受け入れるために、**AcceptChanges** が呼び出されます。 + +```vb +If workTable.HasErrors Then + Dim errRow As DataRow + + For Each errRow in workTable.GetErrors() + + If errRow.RowError = "Total cannot exceed 1000." Then + errRow("Total") = 1000 + errRow.RowError = "" ' Clear the error. + Else + errRow.RejectChanges() + End If + Next +End If + +workTable.AcceptChanges() + +``` + +```csharp +if (workTable.HasErrors) +{ + + foreach (DataRow errRow in workTable.GetErrors()) + { + if (errRow.RowError == "Total cannot exceed 1000.") + { + errRow["Total"] = 1000; + errRow.RowError = ""; // Clear the error. + } + else + errRow.RejectChanges(); + } +} + +workTable.AcceptChanges(); +``` + +## 参照 + + + + [DataTable 内のデータの操作](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/adding-a-datatable-to-a-dataset.md b/docs/framework/data/adonet/dataset-datatable-dataview/adding-a-datatable-to-a-dataset.md new file mode 100644 index 00000000000..d17e5fd2276 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/adding-a-datatable-to-a-dataset.md @@ -0,0 +1,41 @@ +--- +title: "DataSet への DataTable の追加 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 556d29a3-8fc9-4e38-b3ee-c188f7e7b155 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSet への DataTable の追加 +ADO.NET を使用して オブジェクトを作成し、そのオブジェクトを既存の に追加できます。 プロパティと プロパティを使用することで、 の制約情報を設定できます。 + +## 例 + を構築し、 に新しい オブジェクトを追加してから、3 つの オブジェクトをそのテーブルに追加する例を次に示します。 コードの最後では、1 つの列が主キーの列として設定されています。 + + [!code-csharp[DataWorks Data.DataTableAdd#1](../../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks Data.DataTableAdd/CS/source.cs#1)] + [!code-vb[DataWorks Data.DataTableAdd#1](../../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks Data.DataTableAdd/VB/source.vb#1)] + +## 大文字と小文字の区別 + 大文字と小文字の区別が異なれば、 に存在する 2 つ以上のテーブルまたはリレーションが同じ名前を持つことができます。 この場合、名前を使用してテーブルとリレーションを参照する際に大文字と小文字が区別されます。 たとえば、 **dataSet** に **Table1** と **table1** のテーブルがある場合、**Table1** を参照するには **dataSet.Tables\["Table1"\]**、**table1** を参照するには **dataSet.Tables \["table1"\]** と名前を指定します。 このいずれかのテーブルの参照に **dataSet.Tables \["TABLE1"\]** と指定すると、例外が発生します。 + + 特定の名前を持つテーブルまたはリレーションが 1 つのみの場合、大文字と小文字は区別されません。 たとえば、 に **Table1** しか存在しない場合は、**dataSet.Tables\["TABLE1"\]** を使用してそのテーブルを参照できます。 + +> [!NOTE] +> この動作は プロパティの影響を受けません。 プロパティは、 内のデータに適用され、並べ替え、検索、フィルター処理、制約の適用などに影響を及ぼします。 + +## 名前空間のサポート + 2.0 より前のバージョンの ADO.NET では、異なる名前空間に存在しているテーブルであっても、2 つのテーブルが同じ名前を持つことはできませんでした。 ADO.NET 2.0 には、この制限はありません。 したがって、 に、 プロパティ値が異なり、 プロパティ値が一致する 2 つのテーブルが存在しても問題ありません。 + +## 参照 + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/adding-columns-to-a-datatable.md b/docs/framework/data/adonet/dataset-datatable-dataview/adding-columns-to-a-datatable.md new file mode 100644 index 00000000000..326872dcd1a --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/adding-columns-to-a-datatable.md @@ -0,0 +1,65 @@ +--- +title: "DataTable への列の追加 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e85c4a0e-4f3f-458c-b58b-0ddbc06bf974 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTable への列の追加 + には、テーブルの **Columns** プロパティによって参照される オブジェクトのコレクションが格納されます。 この列のコレクションと制約によって、テーブルのスキーマ \(構造\) が定義されます。 + + テーブル内で **DataColumn** オブジェクトを作成するには、**DataColumn** コンストラクターを使用するか、または の 1 つである、テーブルの **Columns** プロパティの **Add** メソッドを呼び出します。 **Add** メソッドは、オプションの **ColumnName**、**DataType**、**Expression** の各引数を受け取り、新しい **DataColumn** をコレクションのメンバーとして作成します。 また、このメソッドは既存の **DataColumn** オブジェクトを受け取り、このオブジェクトをコレクションに追加します。必要な場合には、追加された **DataColumn** への参照を返します。 **DataTable** オブジェクトはデータ ソースに依存しないため、**DataColumn** のデータ型を指定するときには、.NET Framework 型が使用されます。 + + **DataTable** に 4 つの列を追加する例を次に示します。 + +```vb +Dim workTable As DataTable = New DataTable("Customers") + +Dim workCol As DataColumn = workTable.Columns.Add( _ + "CustID", Type.GetType("System.Int32")) +workCol.AllowDBNull = false +workCol.Unique = true + +workTable.Columns.Add("CustLName", Type.GetType("System.String")) +workTable.Columns.Add("CustFName", Type.GetType("System.String")) +workTable.Columns.Add("Purchases", Type.GetType("System.Double")) + +``` + +```csharp +DataTable workTable = new DataTable("Customers"); + +DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32)); +workCol.AllowDBNull = false; +workCol.Unique = true; + +workTable.Columns.Add("CustLName", typeof(String)); +workTable.Columns.Add("CustFName", typeof(String)); +workTable.Columns.Add("Purchases", typeof(Double)); +``` + + この例では、**DBNull** 値を許可せずに値を一意の値に制約するように、**CustID** 列のプロパティが設定されています。 ただし、**CustID** 列をテーブルの主キー列として定義した場合、**AllowDBNull** プロパティは自動的に **false** に設定され、**Unique** プロパティは自動的に **true** に設定されます。 詳細については、「[主キーの定義](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/defining-primary-keys.md)」を参照してください。 + +> [!CAUTION] +> 列名が指定されていない列を **DataColumnCollection** に追加する場合、この列には "Column1" から始まるインクリメンタル既定名 Column*N* が割り当てられます。 列名を指定するときには、"Column*N*" の命名規則を使用しないことをお勧めします。これは、指定した名前が **DataColumnCollection** に既に存在する既定の列名と競合しないようにするためです。 指定した名前が既に存在する場合は、例外がスローされます。 + + を、 内の として使用すると、データを読み取るときに XML シリアル化が機能しません。 たとえば、`DataTable.WriteXml` メソッドを使用して を書き込むと、XML へのシリアル化で に親ノードが追加されます。 この問題に対処するには、 の代わりに 型を使用します。 `ReadXml` および `WriteXml` は、 で適切に機能します。 + +## 参照 + + + + [DataTable スキーマの定義](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-schema-definition.md) + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/adding-data-to-a-datatable.md b/docs/framework/data/adonet/dataset-datatable-dataview/adding-data-to-a-datatable.md new file mode 100644 index 00000000000..f6b8d685308 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/adding-data-to-a-datatable.md @@ -0,0 +1,103 @@ +--- +title: "DataTable へのデータの追加 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d6aa8474-7bde-48f7-949d-20dc38a1625b +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTable へのデータの追加 + を作成し、列と制約を使用してそのテーブルの構造を定義した後で、テーブルに新しいデータ行を追加できます。 新しい行を追加するには、新しい変数を 型として宣言します。 メソッドを呼び出すと、新しい **DataRow** オブジェクトが返されます。 次に、**DataTable** は、 での定義に従って、テーブルの構造に基づいて **DataRow** オブジェクトを作成します。 + + **NewRow** メソッドを呼び出して新しい行を作成する例を次に示します。 + +```vb +Dim workRow As DataRow = workTable.NewRow() + +``` + +```csharp +DataRow workRow = workTable.NewRow(); +``` + + その後でインデックスまたは列名を使用して、新しく追加した行を操作する例を次に示します。 + +```vb +workRow("CustLName") = "Smith" +workRow(1) = "Smith" + +``` + +```csharp +workRow["CustLName"] = "Smith"; +workRow[1] = "Smith"; +``` + + 新しい行にデータを挿入した後で **Add** メソッドを使用して に行を追加するコードを次に示します。 + +```vb +workTable.Rows.Add(workRow) + +``` + +```csharp +workTable.Rows.Add(workRow); +``` + + **Add** メソッドを呼び出して 型の値の配列を渡すことにより、新しい行を追加する別の例を次に示します。 + +```vb +workTable.Rows.Add(new Object() {1, "Smith"}) + +``` + +```csharp +workTable.Rows.Add(new Object[] {1, "Smith"}); +``` + + **Object** 型の値の配列を **Add** メソッドに渡すと、テーブル内に新しい行が作成され、その行の列値がオブジェクト配列の値に設定されます。 配列内の値は、テーブル内での列の順序に基づいて、列に順次的に割り当てられます。 + + 新しく作成した **Customers** テーブルに 10 行を追加する例を次に示します。 + +```vb +Dim workRow As DataRow +Dim i As Integer + +For i = 0 To 9 + workRow = workTable.NewRow() + workRow(0) = i + workRow(1) = "CustName" & I.ToString() + workTable.Rows.Add(workRow) +Next + +``` + +```csharp +DataRow workRow; + +for (int i = 0; i <= 9; i++) +{ + workRow = workTable.NewRow(); + workRow[0] = i; + workRow[1] = "CustName" + i.ToString(); + workTable.Rows.Add(workRow); +} +``` + +## 参照 + + + + + [DataTable 内のデータの操作](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/adding-datarelations.md b/docs/framework/data/adonet/dataset-datatable-dataview/adding-datarelations.md new file mode 100644 index 00000000000..22c17928b4a --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/adding-datarelations.md @@ -0,0 +1,44 @@ +--- +title: "DataRelation の追加 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a4a564fb-c1c4-4135-b6c2-b030e51195e4 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataRelation の追加 +複数の オブジェクトを含む では、 オブジェクトを使用して 1 つのテーブルを別のテーブルに関連付けたり、テーブル間を移動したり、関連付けたテーブルから子または親の行を戻したりできます。 + + **DataRelation** の作成に必要な引数は、作成する **DataRelation** の名前、およびそのリレーションシップで親子の列となる列への 1 つ以上の 参照の配列です。 **DataRelation** の作成後、DataRelation を使用してテーブル間の移動および値の取得を行うことができます。 + + への **DataRelation** の追加は、既定では が親テーブルに、 が子テーブルに追加されます。 上記の既定の制約の詳細については、「[DataTable の制約](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-constraints.md)」を参照してください。 + + にある 2 つの オブジェクトを使用して、**DataRelation** を作成するコード サンプルを次に示します。 各 には、2 つの オブジェクト間のリンクとなる **CustID** という名前の列があります。 例では、単一の **DataRelation** が の **Relations** コレクションに追加されます。 例にある最初の引数には、作成する **DataRelation** の名前を指定します。 2 番目の引数によって親の **DataColumn** が、3 番目の引数によって子の **DataColumn** が設定されます。 + +```vb +customerOrders.Relations.Add("CustOrders", _ + customerOrders.Tables("Customers").Columns("CustID"), _ + customerOrders.Tables("Orders").Columns("CustID")) +``` + +```csharp +customerOrders.Relations.Add("CustOrders", + customerOrders.Tables["Customers"].Columns["CustID"], + customerOrders.Tables["Orders"].Columns["CustID"]); +``` + + **DataRelation** には、**入れ子になった**プロパティもあります。**true** に設定すると、 を使用して XML 要素として書き込むときに、親テーブルの関連付けられた行の中で子テーブルの行が入れ子になります。 詳細については、「[DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md)」を参照してください。 + +## 参照 + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/annotating-typed-datasets.md b/docs/framework/data/adonet/dataset-datatable-dataview/annotating-typed-datasets.md new file mode 100644 index 00000000000..6d88e748b0d --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/annotating-typed-datasets.md @@ -0,0 +1,240 @@ +--- +title: "型指定された DataSet の注釈 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f82aaa62-321e-4c8a-b51b-9d1114700170 +caps.latest.revision: 6 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 6 +--- +# 型指定された DataSet の注釈 +注釈を使用すると、基になるスキーマを変更せずに型指定された の要素の名前を変更できます。 基になるスキーマの要素の名前を変更すると、データ ソースにあるオブジェクトへの参照が失われるだけでなく、型指定された **DataSet** がデータ ソースにないオブジェクトを参照することになります。 + + 注釈を使用すると、基になるスキーマを変更せずに、型指定された **DataSet** のオブジェクトをわかりやすい名前にカスタマイズできるため、コードが読みやすくなり、型指定された **DataSet** がクライアントで使用しやすくなります。 たとえば、次の **Northwind** データベースの **Customers** テーブルのスキーマ要素は、**CustomersRow** という名前の **DataRow** オブジェクト名および **Customers** という名前の となります。 + +``` + + + + + + + +``` + + **Customers** という **DataRowCollection** 名は、クライアント コードでは意味がありますが、**CustomersRow** という **DataRow** 名は単一のオブジェクトであるため、誤解が生じます。 また、一般的なシナリオでは、CustomersRow オブジェクトは **Row** ID を指定せずに参照されるため、単に **Customer** オブジェクトとして参照されます。 この問題を解決するには、スキーマに注釈を付け、**DataRow** オブジェクトと **DataRowCollection** オブジェクトに新しい名前を指定します。 上記のスキーマに注釈を付けたスキーマを次に示します。 + +``` + + + + + + + +``` + + **Customer** という **typedName** 値を指定すると、**Customer** という **DataRow** オブジェクト名になります。 **Customers** という **typedPlural** 値を指定すると、**Customers** という **DataRowCollection** 名が保存されます。 + + 使用できる注釈を次の表に示します。 + +|注釈|説明| +|--------|--------| +|**typedName**|オブジェクト名。| +|**typedPlural**|オブジェクトのコレクション名。| +|**typedParent**|親のリレーションシップで参照される場合のオブジェクト名。| +|**typedChildren**|子のリレーションシップからオブジェクトを返すメソッド名。| +|**nullValue**|基になる値が **DBNull** の場合の値。 **nullValue** の注釈については、次の表を参照してください。 既定値は **\_throw** です。| + + **nullValue** 注釈に指定できる値を次の表に示します。 + +|nullValue の値|説明| +|------------------|--------| +|*Replacement Value*|返される値を指定します。 返された値は要素の型と一致する必要があります。 たとえば、整数型フィールドが null の場合に 0 を返すために `nullValue="0"` を使用します。| +|**\_throw**|例外をスローします。 既定値です。| +|**\_null**|プリミティブ型が見つかった場合は、null 参照を返すか、例外をスローします。| +|**\_empty**|文字列の場合は **String.Empty** を、それ以外の場合は空のコンストラクターから作成されたオブジェクトを返します。 プリミティブ型が見つかった場合、例外をスローします。| + + 型指定された **DataSet** のオブジェクトの既定値と使用できる注釈を次の表に示します。 + +|オブジェクト\/メソッド\/イベント|既定値|注釈| +|------------------------|---------|--------| +|**DataTable**|TableNameDataTable|typedPlural| +|**DataTable** のメソッド|NewTableNameRow

AddTableNameRow

DeleteTableNameRow|typedName| +|**DataRowCollection**|TableName|typedPlural| +|**DataRow**|TableNameRow|typedName| +|**DataColumn**|DataTable.ColumnNameColumn

DataRow.ColumnName|typedName| +|**プロパティ**|PropertyName|typedName| +|**Child** Accessor|GetChildTableNameRows|typedChildren| +|**Parent** Accessor|TableNameRow|typedParent| +|**DataSet** イベント|TableNameRowChangeEvent

TableNameRowChangeEventHandler|typedName| + + 型指定された **DataSet** の注釈を使用するには、XML スキーマ定義言語 \(XSD\) スキーマに次の **xmlns** 参照をインクルードする必要があります。 \(データベース テーブルから xsd を作成するには、「」または「[Visual Studio でのデータセットの操作](http://msdn.microsoft.com/library/8bw9ksd6.aspx)」 を参照してください。\) + +``` +xmlns:codegen="urn:schemas-microsoft-com:xml-msprop" +``` + + **Orders** テーブルとのリレーションを持つ **Northwind** データベースの **Customers** テーブルを公開する、注釈の付いたスキーマのサンプルを次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + サンプル スキーマから作成された厳密に型指定された **DataSet** を次のコード サンプルで使用します。 また、一方の を使用して **Customers** テーブルを、他方の を使用して **Orders** テーブルを作成します。 厳密に型指定された **DataSet** により、**DataRelations** が定義されます。 + +```vb +' Assumes a valid SqlConnection object named connection. +Dim customerAdapter As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT CustomerID, CompanyName, Phone FROM Customers", & + connection) +Dim orderAdapter As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT OrderID, CustomerID, EmployeeID, OrderAdapter FROM Orders", & + connection) + +' Populate a strongly typed DataSet. +connection.Open() +Dim customers As CustomerDataSet = New CustomerDataSet() +customerAdapter.Fill(customers, "Customers") +orderAdapter.Fill(customers, "Orders") +connection.Close() + +' Add a strongly typed event. +AddHandler customers.Customers.CustomerChanged, & + New CustomerDataSet.CustomerChangeEventHandler( _ + AddressOf OnCustomerChanged) + +' Add a strongly typed DataRow. +Dim newCustomer As CustomerDataSet.Customer = _ + customers.Customers.NewCustomeromer() +newCustomer.CustomerID = "NEW01" +newCustomer.CompanyName = "My New Company" +customers.Customers.AddCustomer(newCustomer) + +' Navigate the child relation. +Dim customer As CustomerDataSet.Customer +Dim order As CustomerDataSet.Order + +For Each customer In customers.Customers + Console.WriteLine(customer.CustomerID) + For Each order In customer.GetOrders() + Console.WriteLine(vbTab & order.OrderID) + Next +Next + +Private Shared Sub OnCustomerChanged( _ + sender As Object, e As CustomerDataSet.CustomerChangeEvent) + +End Sub + +``` + +```csharp +// Assumes a valid SqlConnection object named connection. +SqlDataAdapter customerAdapter = new SqlDataAdapter( + "SELECT CustomerID, CompanyName, Phone FROM Customers", + connection); +SqlDataAdapter orderAdapter = new SqlDataAdapter( + "SELECT OrderID, CustomerID, EmployeeID, OrderAdapter FROM Orders", + connection); + +// Populate a strongly typed DataSet. +connection.Open(); +CustomerDataSet customers = new CustomerDataSet(); +customerAdapter.Fill(customers, "Customers"); +orderAdapter.Fill(customers, "Orders"); +connection.Close(); + +// Add a strongly typed event. +customers.Customers.CustomerChanged += new + CustomerDataSet.CustomerChangeEventHandler(OnCustomerChanged); + +// Add a strongly typed DataRow. +CustomerDataSet.Customer newCustomer = + customers.Customers.NewCustomeromer(); +newCustomer.CustomerID = "NEW01"; +newCustomer.CompanyName = "My New Company"; +customers.Customers.AddCustomer(newCustomer); + +// Navigate the child relation. +foreach(CustomerDataSet.Customer customer in customers.Customers) +{ + Console.WriteLine(customer.CustomerID); + foreach(CustomerDataSet.Order order in customer.GetOrders()) + Console.WriteLine("\t" + order.OrderID); +} + +protected static void OnCustomerChanged(object sender, CustomerDataSet.CustomerChangeEvent e) + { + + } +``` + +## 参照 + + + [型指定された DataSet](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/typed-datasets.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/applying-an-xslt-transform-to-a-dataset.md b/docs/framework/data/adonet/dataset-datatable-dataview/applying-an-xslt-transform-to-a-dataset.md new file mode 100644 index 00000000000..2d941ac07d1 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/applying-an-xslt-transform-to-a-dataset.md @@ -0,0 +1,132 @@ +--- +title: "DataSet への XSLT 変換の適用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 09f2e4ee-1d08-4ba8-8936-83394fee319d +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSet への XSLT 変換の適用 + の **WriteXml** メソッドを使用すると、**DataSet** の内容を XML データとして書き込むことができます。 一般的な作業は、XSLT \(XSL Transformation\) を使用してこの XML を別の形式へ変換する操作です。 ただし **DataSet** を と同期することで、最初に **WriteXml** を使用して **DataSet** の内容を XML データとして書き込む操作を実行せずに、**DataSet** の内容に XSLT スタイルシートを適用できます。 + + **DataSet** にテーブルとリレーションシップを格納し、**DataSet** を **XmlDataDocument** と同期し、XSLT スタイルシートを使用して **DataSet** の一部を HTML ファイルとして書き込む例を次に示します。 次のコードは、XSLT スタイルシートの内容です。 + +``` + + + + + + + + +
+ + +
+ + + + ,
+ + +
+ + + + + + + +
Order:
Date:
Ship To:
+
+ ,
+
+
+ +
+``` + + 次のコードは、**DataSet** にデータを格納し、XSLT スタイル シートを適用します。 + +> [!NOTE] +> リレーションシップが含まれている **DataSet** にスタイル シートを適用する場合は、入れ子になっているリレーションシップごとに の **Nested** プロパティを **true** に設定すると、パフォーマンスが最大になります。 これにより、階層を自然な順番で上から下へと進みながらデータを変換する XSLT スタイル シートを利用できるようになります。パフォーマンスに大きく影響する XPath ロケーション軸 \(たとえば、スタイル シートのノード テスト式での preceding\-sibling や following\-sibling\) を使用して階層をたどる必要はなくなります。 入れ子になったリレーションの詳細については、「[DataRelation の入れ子化](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/nesting-datarelations.md)」を参照してください。 + +```vb +' Assumes connection is a valid SqlConnection. +Dim dataSet As DataSet = New DataSet("CustomerOrders") + +Dim customerAdapter As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT * FROM Customers", connection) +customerAdapter.Fill(dataSet, "Customers") + +Dim orderAdapter As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT * FROM Orders", connection) +orderAdapter.Fill(dataSet, "Orders") + +connection.Close() + +dataSet.Relations.Add("CustOrders", _ +dataSet.Tables("Customers").Columns("CustomerID"), _ +dataSet.Tables("Orders").Columns("CustomerID")).Nested = true + +Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet) + +Dim xslTran As XslTransform = New XslTransform +xslTran.Load("transform.xsl") + +Dim writer As XmlTextWriter = New XmlTextWriter( _ + "xslt_output.html", System.Text.Encoding.UTF8) + +xslTran.Transform(xmlDoc, Nothing, writer) +writer.Close() +``` + +```csharp +// Assumes connection is a valid SqlConnection. +connection.Open(); + +DataSet custDS = new DataSet("CustomerDataSet"); + +SqlDataAdapter customerAdapter = new SqlDataAdapter( + "SELECT * FROM Customers", connection); +customerAdapter.Fill(custDS, "Customers"); + +SqlDataAdapter orderAdapter = new SqlDataAdapter( + "SELECT * FROM Orders", connection); +orderAdapter.Fill(custDS, "Orders"); + +connection.Close(); + +custDS.Relations.Add("CustOrders", + custDS.Tables["Customers"].Columns["CustomerID"], + custDS.Tables["Orders"].Columns["CustomerID"]).Nested = true; + +XmlDataDocument xmlDoc = new XmlDataDocument(custDS); + +XslTransform xslTran = new XslTransform(); +xslTran.Load("transform.xsl"); + +XmlTextWriter writer = new XmlTextWriter("xslt_output.html", + System.Text.Encoding.UTF8); + +xslTran.Transform(xmlDoc, null, writer); +writer.Close(); +``` + +## 参照 + [DataSet と XmlDataDocument の同期](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/childviews-and-relations.md b/docs/framework/data/adonet/dataset-datatable-dataview/childviews-and-relations.md new file mode 100644 index 00000000000..be2a7e362fb --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/childviews-and-relations.md @@ -0,0 +1,86 @@ +--- +title: "ChildView とリレーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d475d356-6abb-4701-8fd1-2906fb93dfba +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# ChildView とリレーション + 内のテーブル間にリレーションシップが存在する場合は、このリレーションシップの子テーブルの行が含まれている を作成できます。このような DataView を作成するには、親テーブルの行に対して メソッドを使用します。 たとえば、次のコードは、**CategoryName** と **ProductName** によってデータをアルファベット順に並べ替えられた **Categories** およびこのテーブルに関連する **Products** を表示します。 + +```vb +Dim catTable As DataTable = catDS.Tables("Categories") +Dim prodTable As DataTable = catDS.Tables("Products") + +' Create a relation between the Categories and Products tables. +Dim relation As DataRelation = catDS.Relations.Add("CatProdRel", _ + catTable.Columns("CategoryID"), _ + prodTable.Columns("CategoryID")) + +' Create DataViews for the Categories and Products tables. +Dim catView As DataView = New DataView(catTable, "", _ + "CategoryName", DataViewRowState.CurrentRows) +Dim prodView As DataView + +' Iterate through the Categories table. +Dim catDRV, prodDRV As DataRowView + +For Each catDRV In catView + Console.WriteLine(catDRV("CategoryName")) + + ' Create a DataView of the child product records. + prodView = catDRV.CreateChildView(relation) + prodView.Sort = "ProductName" + + For Each prodDRV In prodView + Console.WriteLine(vbTab & prodDRV("ProductName")) + Next +Next + +``` + +```csharp +DataTable catTable = catDS.Tables["Categories"]; +DataTable prodTable = catDS.Tables["Products"]; + +// Create a relation between the Categories and Products tables. +DataRelation relation = catDS.Relations.Add("CatProdRel", + catTable.Columns["CategoryID"], + prodTable.Columns["CategoryID"]); + +// Create DataViews for the Categories and Products tables. +DataView catView = new DataView(catTable, "", "CategoryName", + DataViewRowState.CurrentRows); +DataView prodView; + +// Iterate through the Categories table. +foreach (DataRowView catDRV in catView) +{ + Console.WriteLine(catDRV["CategoryName"]); + + // Create a DataView of the child product records. + prodView = catDRV.CreateChildView(relation); + prodView.Sort = "ProductName"; + + foreach (DataRowView prodDRV in prodView) + Console.WriteLine("\t" + prodDRV["ProductName"]); +} +``` + +## 参照 + + + + [DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/consuming-a-dataset-from-an-xml-web-service.md b/docs/framework/data/adonet/dataset-datatable-dataview/consuming-a-dataset-from-an-xml-web-service.md new file mode 100644 index 00000000000..b1bb8b38f35 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/consuming-a-dataset-from-an-xml-web-service.md @@ -0,0 +1,276 @@ +--- +title: "XML Web サービスからの DataSet の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9edd6b71-0fa5-4649-ae1d-ac1c12541019 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XML Web サービスからの DataSet の使用 + は、非接続型デザインで設計されています。インターネットで簡単にデータを転送するのが目的の一部です。 **DataSet** は、**DataSet** の内容を XML Web サービスからクライアントに \(およびその逆方向に\) ストリーム転送するためのコードを追加せずに XML Web サービスへの入力または出力として指定できるという点で、"シリアル化可能" です。 **DataSet** は、DiffGram 形式を使用して暗黙に XML ストリームに変換され、ネットワーク経由で送信されます。その後、受信側で XML ストリームから **DataSet** として再構築されます。 これにより、XML Web サービスを使用してリレーショナル データを送信および返送する、たいへん簡単で柔軟性のある方法が提供されます。 DiffGram 形式の詳細については、「[DiffGram](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/diffgrams.md)」を参照してください。 + + **DataSet** を使用してリレーショナル データ \(変更データを含む\) を転送し、更新内容を元のデータ ソースに反映させる XML Web サービスと XML Web サービスのクライアントを作成する手順を次の例に示します。 + +> [!NOTE] +> XML Web サービスを作成する場合は、常にセキュリティへの影響を考慮することをお勧めします。 XML Web サービスのセキュリティについては、「[Securing XML Web Services Created Using ASP.NET](http://msdn.microsoft.com/ja-jp/354b2ab1-2782-4542-b32a-dc560178b90c)」を参照してください。 + +### DataSet を返し、処理する XML Web サービスを作成するには、次のようにします。 + +1. XML Web サービスを作成します。 + + この例では、データ \(ここでは、**Northwind** データベースの顧客リスト\) を返し、元のデータ ソースに反映させるデータ更新が格納されている **DataSet** を受け取る XML Web サービスを作成します。 + + この XML Web サービスは 2 つのメソッドを公開しています。顧客リストを返す **GetCustomers** と、更新をデータ ソースに反映させる **UpdateCustomers** です。 この XML Web サービスは、Web サーバー上の DataSetSample.asmx というファイルに格納されます。 次のコードは、DataSetSample.asmx の内容の概要を示しています。 + + ```vb + <% @ WebService Language = "vb" Class = "Sample" %> + Imports System + Imports System.Data + Imports System.Data.SqlClient + Imports System.Web.Services + + _ + Public Class Sample + + Public connection As SqlConnection = New SqlConnection("Data Source=(local);Integrated Security=SSPI;Initial Catalog=Northwind") + + _ + Public Function GetCustomers() As DataSet + Dim adapter As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT CustomerID, CompanyName FROM Customers", connection) + + Dim custDS As DataSet = New DataSet() + adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey + adapter.Fill(custDS, "Customers") + + Return custDS + End Function + + _ + Public Function UpdateCustomers(custDS As DataSet) As DataSet + Dim adapter As SqlDataAdapter = New SqlDataAdapter() + + adapter.InsertCommand = New SqlCommand( _ + "INSERT INTO Customers (CustomerID, CompanyName) " & _ + "Values(@CustomerID, @CompanyName)", connection) + adapter.InsertCommand.Parameters.Add( _ + "@CustomerID", SqlDbType.NChar, 5, "CustomerID") + adapter.InsertCommand.Parameters.Add( _ + "@CompanyName", SqlDbType.NChar, 15, "CompanyName") + + adapter.UpdateCommand = New SqlCommand( _ + "UPDATE Customers Set CustomerID = @CustomerID, " & _ + "CompanyName = @CompanyName WHERE CustomerID = " & _ + @OldCustomerID", connection) + adapter.UpdateCommand.Parameters.Add( _ + "@CustomerID", SqlDbType.NChar, 5, "CustomerID") + adapter.UpdateCommand.Parameters.Add( _ + "@CompanyName", SqlDbType.NChar, 15, "CompanyName") + + Dim parameter As SqlParameter = _ + adapter.UpdateCommand.Parameters.Add( _ + "@OldCustomerID", SqlDbType.NChar, 5, "CustomerID") + parameter.SourceVersion = DataRowVersion.Original + + adapter.DeleteCommand = New SqlCommand( _ + "DELETE FROM Customers WHERE CustomerID = @CustomerID", _ + connection) + parameter = adapter.DeleteCommand.Parameters.Add( _ + "@CustomerID", SqlDbType.NChar, 5, "CustomerID") + parameter.SourceVersion = DataRowVersion.Original + + adapter.Update(custDS, "Customers") + + Return custDS + End Function + End Class + + ``` + + ```csharp + <% @ WebService Language = "C#" Class = "Sample" %> + using System; + using System.Data; + using System.Data.SqlClient; + using System.Web.Services; + + [WebService(Namespace="http://microsoft.com/webservices/")] + public class Sample + { + public SqlConnection connection = new SqlConnection("Data Source=(local);Integrated Security=SSPI;Initial Catalog=Northwind"); + + [WebMethod( Description = "Returns Northwind Customers", EnableSession = false )] + public DataSet GetCustomers() + { + SqlDataAdapter adapter = new SqlDataAdapter( + "SELECT CustomerID, CompanyName FROM Customers", connection); + + DataSet custDS = new DataSet(); + adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; + adapter.Fill(custDS, "Customers"); + + return custDS; + } + + [WebMethod( Description = "Updates Northwind Customers", + EnableSession = false )] + public DataSet UpdateCustomers(DataSet custDS) + { + SqlDataAdapter adapter = new SqlDataAdapter(); + + adapter.InsertCommand = new SqlCommand( + "INSERT INTO Customers (CustomerID, CompanyName) " + + "Values(@CustomerID, @CompanyName)", connection); + adapter.InsertCommand.Parameters.Add( + "@CustomerID", SqlDbType.NChar, 5, "CustomerID"); + adapter.InsertCommand.Parameters.Add( + "@CompanyName", SqlDbType.NChar, 15, "CompanyName"); + + adapter.UpdateCommand = new SqlCommand( + "UPDATE Customers Set CustomerID = @CustomerID, " + + "CompanyName = @CompanyName WHERE CustomerID = " + + "@OldCustomerID", connection); + adapter.UpdateCommand.Parameters.Add( + "@CustomerID", SqlDbType.NChar, 5, "CustomerID"); + adapter.UpdateCommand.Parameters.Add( + "@CompanyName", SqlDbType.NChar, 15, "CompanyName"); + SqlParameter parameter = adapter.UpdateCommand.Parameters.Add( + "@OldCustomerID", SqlDbType.NChar, 5, "CustomerID"); + parameter.SourceVersion = DataRowVersion.Original; + + adapter.DeleteCommand = new SqlCommand( + "DELETE FROM Customers WHERE CustomerID = @CustomerID", + connection); + parameter = adapter.DeleteCommand.Parameters.Add( + "@CustomerID", SqlDbType.NChar, 5, "CustomerID"); + parameter.SourceVersion = DataRowVersion.Original; + + adapter.Update(custDS, "Customers"); + + return custDS; + } + } + ``` + + 代表的なシナリオでは、**UpdateCustomers** メソッドはオプティミスティック同時実行制御違反をキャッチするように記述されます。 説明を簡単にするために、この例では UpdateCustmoers メソッドを省略しています。 オプティミスティック同時実行制御の詳細については、「[オプティミスティック同時実行制御](../../../../../docs/framework/data/adonet/optimistic-concurrency.md)」を参照してください。 + +2. XML Web サービス プロキシを作成します。 + + XML Web サービスのクライアントは、公開されたメソッドを使用するために SOAP プロキシを必要とします。 このプロキシは、Visual Studio を使用して生成することができます。 Visual Studio から既存の Web サービスへの Web 参照を設定することにより、この手順で説明されているすべての動作が自動的に実行されます。 プロキシ クラスを手動で作成する場合は、後述の手順を参照してください。 ほとんどの場合、Visual Studio による、クライアント アプリケーションのプロキシ クラスの作成で十分です。 + + プロキシは、Web サービス記述言語ツールを使用して作成できます。 たとえば、XML Web サービスを http:\/\/myserver\/data\/DataSetSample.asmx に公開する場合は、次のようなコマンドを実行して、名前空間 **WebData.DSSample** を指定した Visual Basic .NET プロキシを作成し、それをファイル sample.vb に格納します。 + + ``` + wsdl /l:VB /out:sample.vb http://myserver/data/DataSetSample.asmx /n:WebData.DSSample + ``` + + ファイル sample.cs に C\# プロキシを作成するには、次のコマンドを実行します。 + + ``` + wsdl /l:CS /out:sample.cs http://myserver/data/DataSetSample.asmx /n:WebData.DSSample + ``` + + その後、プロキシをライブラリとしてコンパイルし、XML Web サービスのクライアントにインポートします。 sample.vb に格納されている Visual Basic .NET プロキシ コードを sample.dll としてコンパイルするには次のコマンドを実行します。 + + ``` + vbc /t:library /out:sample.dll sample.vb /r:System.dll /r:System.Web.Services.dll /r:System.Data.dll /r:System.Xml.dll + ``` + + sample.cs に格納されている C\# プロキシ コードを sample.dll としてコンパイルするには次のコマンドを実行します。 + + ``` + csc /t:library /out:sample.dll sample.cs /r:System.dll /r:System.Web.Services.dll /r:System.Data.dll /r:System.Xml.dll + ``` + +3. XML Web サービスのクライアントを作成します。 + + Visual Studio に Web サービスのプロキシ クラスを生成させる場合は、クライアント プロジェクトを作成し、ソリューション エクスプローラー ウィンドウで、そのプロジェクトを右クリックし、\[**Web 参照の追加**\] をクリックし、使用可能な Web サービスの一覧から Web サービスを選択します \(ただし、Web サービスが現行ソリューション内または現在のコンピューターで使用できない場合は、Web サービスのエンド ポイントのアドレスを指定する必要があります\)。上記の手順に従って、XML Web サービス プロキシを作成した場合は、それをクライアント コードにインポートし、XML Web サービスのメソッドを処理できます。 プロキシ ライブラリをインポートし、**GetCustomers** を呼び出して顧客リストを取得し、新しい顧客を追加した後、更新内容が格納された **DataSet** を **UpdateCustomers** に返すサンプル コードを次に示します。 + + この例では、変更された行だけを **UpdateCustomers** に渡す必要があるため、**UpdateCustomers** には、**DataSet.GetChanges** によって返された **DataSet** が渡されることに注意してください。 **UpdateCustomers** は解決された **DataSet** を返します。その後、この DataSet を既存の **DataSet** に **Merge** して、解決された変更と更新からの行エラー情報を取り込むことができます。 次のコードは、Visual Studio を使用して Web 参照が作成済みで、かつ、\[**Add Web 参照の追加**\] ダイアログ ボックスでその Web 参照の名前が DsSample に変更済みであることが前提となっています。 + + ```vb + Imports System + Imports System.Data + + Public Class Client + + Public Shared Sub Main() + Dim proxySample As New DsSample.Sample () ' Proxy object. + Dim customersDataSet As DataSet = proxySample.GetCustomers() + Dim customersTable As DataTable = _ + customersDataSet.Tables("Customers") + + Dim rowAs DataRow = customersTable.NewRow() + row("CustomerID") = "ABCDE" + row("CompanyName") = "New Company Name" + customersTable.Rows.Add(row) + + Dim updateDataSet As DataSet = _ + proxySample.UpdateCustomers(customersDataSet.GetChanges()) + + customersDataSet.Merge(updateDataSet) + customersDataSet.AcceptChanges() + End Sub + End Class + + ``` + + ```csharp + using System; + using System.Data; + + public class Client + { + public static void Main() + { + Sample proxySample = new DsSample.Sample(); // Proxy object. + DataSet customersDataSet = proxySample.GetCustomers(); + DataTable customersTable = customersDataSet.Tables["Customers"]; + + DataRow row = customersTable.NewRow(); + row["CustomerID"] = "ABCDE"; + row["CompanyName"] = "New Company Name"; + customersTable.Rows.Add(row); + + DataSet updateDataSet = new DataSet(); + + updateDataSet = + proxySample.UpdateCustomers(customersDataSet.GetChanges()); + + customersDataSet.Merge(updateDataSet); + customersDataSet.AcceptChanges(); + } + } + ``` + + プロキシ クラスを手動で作成する場合は、次の手順に従ってください。 このサンプルをコンパイルするには、作成したプロキシ ライブラリ \(sample.dll\) および関連する .NET ライブラリを指定します。 ファイル client.vb に格納されている Visual Basic .NET バージョンのサンプルをコンパイルするには次のコマンドを実行します。 + + ``` + vbc client.vb /r:sample.dll /r:System.dll /r:System.Data.dll /r:System.Xml.dll /r:System.Web.Services.dll + ``` + + ファイル client.cs に格納されている C\# バージョンのサンプルをコンパイルするには、次のコマンドを実行します。 + + ``` + csc client.cs /r:sample.dll /r:System.dll /r:System.Data.dll /r:System.Xml.dll /r:System.Web.Services.dll + ``` + +## 参照 + [ADO.NET](../../../../../docs/framework/data/adonet/index.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + [DataAdapter からの DataSet の読み込み](../../../../../docs/framework/data/adonet/populating-a-dataset-from-a-dataadapter.md) + [DataAdapter によるデータ ソースの更新](../../../../../docs/framework/data/adonet/updating-data-sources-with-dataadapters.md) + [DataAdapter パラメーター](../../../../../docs/framework/data/adonet/dataadapter-parameters.md) + [Web Services Description Language Tool \(Wsdl.exe\)](http://msdn.microsoft.com/ja-jp/b9210348-8bc2-4367-8c91-d1a04b403e88) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/copying-dataset-contents.md b/docs/framework/data/adonet/dataset-datatable-dataview/copying-dataset-contents.md new file mode 100644 index 00000000000..257b219c0d2 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/copying-dataset-contents.md @@ -0,0 +1,109 @@ +--- +title: "DataSet の内容のコピー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cb846617-2b1a-44ff-bd7f-5835f5ea37fa +caps.latest.revision: 5 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 5 +--- +# DataSet の内容のコピー + のコピーを作成すると、元のデータに影響せずにデータを使用したり、**DataSet** のデータのサブセットを使用したりできます。 **DataSet** をコピーすると、次の操作を行うことができます。 + +- スキーマ、データ、行状態情報、行バージョンなどの **DataSet** の正確なコピーを作成できます。 + +- 既存の **DataSet** のスキーマを含み、行だけを変更した **DataSet** を作成できます。 変更されたすべての行を返したり、特定の **DataRowState** を指定したりできます。 行の状態の詳細については、「[行の状態とバージョン](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md)」を参照してください。 + +- 行をコピーせずに、**DataSet** のスキーマ \(リレーショナル構造\) だけをコピーできます。 行は、 を使用して、既存の にインポートできます。 + + スキーマとデータを含む **DataSet** の正確なコピーを作成するには、**DataSet** の メソッドを使用します。 **DataSet** の正確なコピーを作成する方法を次のコード サンプルに示します。 + +```vb +Dim copyDataSet As DataSet = customerDataSet.Copy() + +``` + +```csharp +DataSet copyDataSet = customerDataSet.Copy(); +``` + + スキーマ、およびデータが **Added**、**Modified**、または **Deleted** である行だけを含む **DataSet** のコピーを作成するには、**DataSet** の メソッドを使用します。 また、**GetChanges** の呼び出し時に **DataRowState** の値を渡すことによって、**GetChanges** を使用して特定の行状態の行だけを返すことができます。 **GetChanges** の呼び出し時に **DataRowState** を渡す方法を次のコード サンプルに示します。 + +```vb +' Copy all changes. +Dim changeDataSet As DataSet = customerDataSet.GetChanges() +' Copy only new rows. +Dim addedDataSetAs DataSet = _ + customerDataSet.GetChanges(DataRowState.Added) + +``` + +```csharp +// Copy all changes. +DataSet changeDataSet = customerDataSet.GetChanges(); +// Copy only new rows. +DataSet addedDataSet= customerDataSet.GetChanges(DataRowState.Added); +``` + + スキーマだけを含む **DataSet** のコピーを作成するには、**DataSet** の メソッドを使用します。 また、**DataTable** の **ImportRow** メソッドを使用して、複製した **DataSet** に既存の行を追加することもできます。 **ImportRow** メソッドを使用すると、データ、行の状態、および行バージョンの情報が指定したテーブルに追加されます。 列名が一致し、データ型が互換性のある型の場合には、列の値だけが追加されます。 + + **DataSet** のクローンを作成し、**CountryRegion** 列の値が "Germany" の顧客に対する **DataSet** のクローン内の **Customers** テーブルに、元の **DataSet** の行を追加するコード サンプルを次に示します。 + +```vb + +Dim customerDataSet As New DataSet +        customerDataSet.Tables.Add(New DataTable("Customers")) +        customerDataSet.Tables("Customers").Columns.Add("Name", GetType(String)) +        customerDataSet.Tables("Customers").Columns.Add("CountryRegion", GetType(String)) +        customerDataSet.Tables("Customers").Rows.Add("Juan", "Spain") +        customerDataSet.Tables("Customers").Rows.Add("Johann", "Germany") +        customerDataSet.Tables("Customers").Rows.Add("John", "UK") + +Dim germanyCustomers As DataSet = customerDataSet.Clone() + +Dim copyRows() As DataRow = _ + customerDataSet.Tables("Customers").Select("CountryRegion = 'Germany'") + +Dim customerTable As DataTable = germanyCustomers.Tables("Customers") +Dim copyRow As DataRow + +For Each copyRow In copyRows + customerTable.ImportRow(copyRow) +Next + +``` + +```csharp +DataSet customerDataSet = new DataSet(); +customerDataSet.Tables.Add(new DataTable("Customers")); +customerDataSet.Tables["Customers"].Columns.Add("Name", typeof(string)); +customerDataSet.Tables["Customers"].Columns.Add("CountryRegion", typeof(string)); +customerDataSet.Tables["Customers"].Rows.Add("Juan", "Spain"); +customerDataSet.Tables["Customers"].Rows.Add("Johann", "Germany"); +customerDataSet.Tables["Customers"].Rows.Add("John", "UK"); + +DataSet germanyCustomers = customerDataSet.Clone(); + +DataRow[] copyRows = + customerDataSet.Tables["Customers"].Select("CountryRegion = 'Germany'"); + +DataTable customerTable = germanyCustomers.Tables["Customers"]; + +foreach (DataRow copyRow in copyRows) + customerTable.ImportRow(copyRow); +``` + +## 参照 + + + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datareader.md b/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datareader.md new file mode 100644 index 00000000000..b9fb8e2d786 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datareader.md @@ -0,0 +1,41 @@ +--- +title: "DataReader の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 49d4422a-7464-4ab8-8ec7-90185fde3ecf +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# DataReader の作成 + クラスおよび クラスには、 の内容または オブジェクトの コレクションの内容を、読み取り専用で前方参照専用の 1 つ以上の結果セットとして返す メソッドがあります。 + +## 例 + インスタンスを作成するコンソール アプリケーションの例を次に示します。 このアプリケーションは、データが格納された `` を、 メソッドを呼び出すプロシージャに渡します。このメソッドは、 内に格納された結果の反復処理を行います。 + + [!code-csharp[DataWorks DataTable.CreateDataReader#1](../../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks DataTable.CreateDataReader/CS/source.cs#1)] + [!code-vb[DataWorks DataTable.CreateDataReader#1](../../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks DataTable.CreateDataReader/VB/source.vb#1)] + + この例では、次の出力がコンソール ウィンドウに表示されます。 + +``` +1 Mary +2 Andy +3 Peter +4 Russ +``` + +## 参照 + + + [DataTableReaders](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatablereaders.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-dataset.md b/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-dataset.md new file mode 100644 index 00000000000..f346f658b52 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-dataset.md @@ -0,0 +1,38 @@ +--- +title: "DataSet の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 57629d8f-393e-4677-8b83-29ffde27f5fc +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSet の作成 + のインスタンスを作成するには、 のコンストラクターを呼び出します。 必要に応じて、引数 name を指定します。 名前を指定しない場合、 の名前は "NewDataSet" に設定されます。 + + また、既存の に基づいて新しい を作成することもできます。 既存の の正確なコピーを新しい として作成できるのは、リレーショナル構造またはスキーマはコピーするけれども既存の からのデータは含まない のクローン、または メソッドを使用して既存の から変更された行だけを含む のサブセットのいずれかです。 詳細については、「[DataSet の内容のコピー](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/copying-dataset-contents.md)」を参照してください。 + + のインスタンスの作成方法を示すコード例を次に示します。 + +```vb +Dim customerOrders As DataSet = New DataSet("CustomerOrders") + +``` + +```csharp +DataSet customerOrders = new DataSet("CustomerOrders"); +``` + +## 参照 + [DataAdapter からの DataSet の読み込み](../../../../../docs/framework/data/adonet/populating-a-dataset-from-a-dataadapter.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datatable-from-a-dataview.md b/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datatable-from-a-dataview.md new file mode 100644 index 00000000000..e7c8f5141f1 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datatable-from-a-dataview.md @@ -0,0 +1,215 @@ +--- +title: "DataView からの DataTable の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2d45cf41-d8ae-4409-af3e-a96a7e476d85 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# DataView からの DataTable の作成 +データ ソースからデータを取得し、 にデータを格納した後、再度データを取得せずに、返されたデータの並べ替え、フィルター処理、または制限の適用を行うことが必要になる場合があります。 これを行うには、 クラスを使用します。 さらに、 から新しい `` を作成する必要がある場合は、 メソッドを使用して、すべての行および列、またはデータのサブセットを新しい にコピーできます。 メソッドには、次の操作を行うためのオーバーロード機能があります。 + +- 内の列のサブセットである列を含む の作成 + +- Transact\-SQL の DISTINCT キーワードと同様に、 とは異なる行のみを含む `` の作成 + +## 例 + 次のコンソール アプリケーションの例では、**AdventureWorks** サンプル データベース内の **Person.Contact** テーブルからのデータが含まれる `` が作成されます。 次に、 に基づいて、並べ替えおよびフィルター処理を行った `` が作成されます。 `` および の内容が表示された後、 メソッドが呼び出され、 から新しい `` が作成されて、使用可能な列のサブセットのみが選択されます。 最後に、新しい の内容が表示されます。 + +```vb +Private Sub DemonstrateDataView() + ' Retrieve a DataTable from the AdventureWorks sample database. + ' connectionString is assumed to be a valid connection string. + Dim adapter As New SqlDataAdapter( _ + "SELECT FirstName, LastName, EmailAddress FROM Person.Contact WHERE FirstName LIKE 'Mich%'", connectionString) + Dim table As New DataTable + + adapter.Fill(table) + Console.WriteLine("Original table name: " & table.TableName) + ' Print current table values. + PrintTableOrView(table, "Current Values in Table") + + ' Now create a DataView based on the DataTable. + ' Sort and filter the data. + Dim view As DataView = table.DefaultView + view.Sort = "LastName, FirstName" + view.RowFilter = "LastName > 'M'" + PrintTableOrView(view, "Current Values in View") + + ' Create a new DataTable based on the DataView, + ' requesting only two columns with distinct values + ' in the columns. + Dim newTable As DataTable = view.ToTable("UniqueLastNames", True, "FirstName", "LastName") + PrintTableOrView(newTable, "Table created from DataView") + Console.WriteLine("New table name: " & newTable.TableName) + + Console.WriteLine("Press any key to continue.") + Console.ReadKey() + End Sub + +Private Sub PrintTableOrView(ByVal dv As DataView, ByVal label As String) + Dim sw As System.IO.StringWriter + Dim output As String + Dim table As DataTable = dv.Table + + Console.WriteLine(label) + + ' Loop through each row in the view. + For Each rowView As DataRowView In dv + sw = New System.IO.StringWriter + + ' Loop through each column. + For Each col As DataColumn In table.Columns + ' Output the value of each column's data. + sw.Write(rowView(col.ColumnName).ToString() & ", ") + Next + output = sw.ToString + ' Trim off the trailing ", ", so the output looks correct. + If output.Length > 2 Then + output = output.Substring(0, output.Length - 2) + End If + ' Display the row in the console window. + Console.WriteLine(output) + Next + Console.WriteLine() +End Sub + +Private Sub PrintTableOrView(ByVal table As DataTable, ByVal label As String) + Dim sw As System.IO.StringWriter + Dim output As String + + Console.WriteLine(label) + + ' Loop through each row in the table. + For Each row As DataRow In table.Rows + sw = New System.IO.StringWriter + ' Loop through each column. + For Each col As DataColumn In table.Columns + ' Output the value of each column's data. + sw.Write(row(col).ToString() & ", ") + Next + output = sw.ToString + ' Trim off the trailing ", ", so the output looks correct. + If output.Length > 2 Then + output = output.Substring(0, output.Length - 2) + End If + ' Display the row in the console window. + Console.WriteLine(output) + Next + Console.WriteLine() + End Sub +End Module +``` + +```csharp +private static void DemonstrateDataView() +{ +// Retrieve a DataTable from the AdventureWorks sample database. +// connectionString is assumed to be a valid connection string. +SqlDataAdapter adapter = new SqlDataAdapter( + "SELECT FirstName, LastName, EmailAddress " + + "FROM Person.Contact WHERE FirstName LIKE 'Mich%'", + GetConnectionString()); +DataTable table = new DataTable(); + +adapter.Fill(table); +Console.WriteLine("Original table name: " + table.TableName); +// Print current table values. +PrintTableOrView(table, "Current Values in Table"); + +// Now create a DataView based on the DataTable. +// Sort and filter the data. +DataView view = table.DefaultView; +view.Sort = "LastName, FirstName"; +view.RowFilter = "LastName > 'M'"; +PrintTableOrView(view, "Current Values in View"); + +// Create a new DataTable based on the DataView, +// requesting only two columns with distinct values +// in the columns. +DataTable newTable = view.ToTable("UniqueLastNames", + true, "FirstName", "LastName"); +PrintTableOrView(newTable, "Table created from DataView"); +Console.WriteLine("New table name: " + newTable.TableName); + +Console.WriteLine("Press any key to continue."); +Console.ReadKey(); +} + +private static void PrintTableOrView(DataView dv, string label) +{ +System.IO.StringWriter sw; +string output; +DataTable table = dv.Table; + +Console.WriteLine(label); + +// Loop through each row in the view. +foreach (DataRowView rowView in dv) +{ + sw = new System.IO.StringWriter(); + + // Loop through each column. + foreach (DataColumn col in table.Columns) + { + // Output the value of each column's data. + sw.Write(rowView[col.ColumnName].ToString() + ", "); + } + output = sw.ToString(); + // Trim off the trailing ", ", so the output looks correct. + if (output.Length > 2) + { + output = output.Substring(0, output.Length - 2); + } + // Display the row in the console window. + Console.WriteLine(output); +} +Console.WriteLine(); +} + +private static void PrintTableOrView(DataTable table, string label) +{ +System.IO.StringWriter sw; +string output; + +Console.WriteLine(label); + +// Loop through each row in the table. +foreach (DataRow row in table.Rows) +{ + sw = new System.IO.StringWriter(); + // Loop through each column. + foreach (DataColumn col in table.Columns) + { + // Output the value of each column's data. + sw.Write(row[col].ToString() + ", "); + } + output = sw.ToString(); + // Trim off the trailing ", ", so the output looks correct. + if (output.Length > 2) + { + output = output.Substring(0, output.Length - 2); + } + // Display the row in the console window. + Console.WriteLine(output); +} // +Console.WriteLine(); +} +``` + + } + +## 参照 + + [DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datatable.md b/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datatable.md new file mode 100644 index 00000000000..0bb3222d5bb --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datatable.md @@ -0,0 +1,65 @@ +--- +title: "DataTable の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eecf9d78-60e3-4fdc-8de0-e56c13a89414 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTable の作成 + は 1 つのインメモリ リレーショナル データのテーブルを表します。DataTable は単独で作成および使用することも、他の .NET Framework オブジェクトから のメンバーとして使用することもできます。 + + **DataTable** オブジェクトは、適切な **DataTable** コンストラクターを使用することにより作成できます。 このオブジェクトを **DataSet** に追加するには、**Add** メソッドを使用して、**DataTable** オブジェクトの **Tables** コレクションにオブジェクトを追加します。 + + **DataSet** の内部で **DataTable** オブジェクトを作成する場合は、**DataAdapter** オブジェクトの **Fill** メソッドまたは **FillSchema** メソッドを使用できます。また、定義済みまたは推論による XML スキーマで、**DataSet** の **ReadXml**、**ReadXmlSchema**、または **InferXmlSchema** の各メソッドを使用して作成することもできます。 **DataTable** を 1 つの **DataSet** の **Tables** コレクションのメンバーとして追加した後で、その **DataTable** を他の **DataSet** のテーブルのコレクションに追加することはできません。 + + 最初に作成した時点では、**DataTable** にはスキーマ \(構造\) がありません。 テーブルのスキーマを定義するには、 オブジェクトを作成し、テーブルの **Columns** コレクションに追加する必要があります。 テーブルの主キー列を定義したり、**Constraint** オブジェクトを作成してテーブルの **Constraints** コレクションに追加したりすることもできます。 **DataTable** のスキーマを定義した後で、**DataRow** オブジェクトをテーブルの **Rows** コレクションに追加することにより、データ行をテーブルに追加できます。 + + **DataTable** を作成するときに プロパティの値を指定する必要はありません。このプロパティは、後から指定することも、空のままにしておくこともできます。 ただし、**TableName** 値のないテーブルを **DataSet** に追加した場合、そのテーブルの名前は既定のテーブル名 Table*N* になります。この既定名は Table0 に相当する "Table" から始まり、連続する番号が割り当てられていきます。 + +> [!NOTE] +> **TableName** 値を指定するときには、"Table*N*" の命名規則を使用しないことをお勧めします。これは、指定した名前が **DataSet** に既に存在する既定のテーブル名と競合しないようにするためです。 指定した名前が既に存在する場合は、例外がスローされます。 + + **DataTable** オブジェクトのインスタンスを作成し、"Customers" という名前を割り当てる例を次に示します。 + +```vb +Dim workTable as DataTable = New DataTable("Customers") + +``` + +```csharp +DataTable workTable = new DataTable("Customers"); +``` + + **DataTable** のインスタンスを作成し、**DataSet** の **Tables** コレクションに追加する例を次に示します。 + +```vb +Dim customers As DataSet = New DataSet +Dim customersTable As DataTable = _ + customers.Tables.Add("CustomersTable") + +``` + +```csharp +DataSet customers = new DataSet(); +DataTable customersTable = customers.Tables.Add("CustomersTable"); +``` + +## 参照 + + + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + [DataAdapter からの DataSet の読み込み](../../../../../docs/framework/data/adonet/populating-a-dataset-from-a-dataadapter.md) + [XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) + [XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-dataview.md b/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-dataview.md new file mode 100644 index 00000000000..a6c950a4040 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/creating-a-dataview.md @@ -0,0 +1,60 @@ +--- +title: "DataView の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b1cc02d1-23b1-4439-a998-0da1899f3442 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataView の作成 + は 2 とおりの方法で作成できます。 **DataView** コンストラクターを使用するか、または プロパティへの参照を作成します。 空の **DataView** コンストラクターを使用できます。また、**DataView** コンストラクターでは、**DataTable** を 1 つの引数としてとるか、またはフィルター条件、並べ替え条件、および行状態フィルターと共に **DataTable** を使用します。 **DataView** で使用できるその他の引数については、「[データの並べ替えとフィルター処理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/sorting-and-filtering-data.md)」を参照してください。 + + **DataView** のインデックスが作成されるのは、**DataView** が作成される時点と、**Sort**、**RowFilter**、または **RowStateFilter** の各プロパティが変更される時点であるため、**DataView** の作成時に初期の並べ替え順序または初期フィルター条件をコンストラクター引数として指定すると、パフォーマンスを最大限に引き出すことができます。 並べ替え条件やフィルター条件を指定せずに **DataView** を作成してから、**Sort**、**RowFilter**、または **RowStateFilter** の各プロパティを設定すると、インデックスが少なくとも 2 回作成されます。これは、**DataView** の作成時点と、並べ替えプロパティまたはフィルター プロパティの変更時です。 + + 引数をとらないコンストラクターを使用して **DataView** を作成すると、**Table** プロパティを設定していない間は、**DataView** が使用できます。 + + **DataView** コンストラクターを使用して **DataView** を作成するコード サンプルを次に示します。 **DataTable** と共に **RowFilter**、**Sort** 列、および **DataViewRowState** が指定されています。 + +```vb +Dim custDV As DataView = New DataView(custDS.Tables("Customers"), _ + "Country = 'USA'", _ + "ContactName", _ + DataViewRowState.CurrentRows) + +``` + +```csharp +DataView custDV = new DataView(custDS.Tables["Customers"], + "Country = 'USA'", + "ContactName", + DataViewRowState.CurrentRows); +``` + + テーブルの **DefaultView** プロパティを使用して **DataTable** の既定の **DataView** への参照を取得するコード サンプルを次に示します。 + +```vb +Dim custDV As DataView = custDS.Tables("Customers").DefaultView + +``` + +```csharp +DataView custDV = custDS.Tables["Customers"].DefaultView; +``` + +## 参照 + + + [DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md) + [データの並べ替えとフィルター処理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/sorting-and-filtering-data.md) + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/creating-autoincrement-columns.md b/docs/framework/data/adonet/dataset-datatable-dataview/creating-autoincrement-columns.md new file mode 100644 index 00000000000..ef1443c8933 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/creating-autoincrement-columns.md @@ -0,0 +1,47 @@ +--- +title: "AutoIncrement 列の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cf09732a-ab54-4d98-89e2-4d0a1f28fbce +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# AutoIncrement 列の作成 +列値を一意にするために、新しい行がテーブルに追加されたときに列値が自動的にインクリメントされるように設定できます。 自動インクリメント を作成するには、列の プロパティを **true** に設定します。 の値は プロパティで定義された値から開始され、行が追加されるたびに、**AutoIncrement** 列の値には、列の プロパティで定義された値が加算されます。 + + **AutoIncrement** 列では、**DataColumn** の プロパティを **true** に設定することをお勧めします。 + + 値 200 から開始して 3 ずつインクリメントする列を作成する方法を次の例に示します。 + +```vb +Dim workColumn As DataColumn = workTable.Columns.Add( _ + "CustomerID", typeof(Int32)) +workColumn.AutoIncrement = true +workColumn.AutoIncrementSeed = 200 +workColumn.AutoIncrementStep = 3 + +``` + +```csharp +DataColumn workColumn = workTable.Columns.Add( + "CustomerID", typeof(Int32)); +workColumn.AutoIncrement = true; +workColumn.AutoIncrementSeed = 200; +workColumn.AutoIncrementStep = 3; +``` + +## 参照 + + [DataTable スキーマの定義](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-schema-definition.md) + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/creating-expression-columns.md b/docs/framework/data/adonet/dataset-datatable-dataview/creating-expression-columns.md new file mode 100644 index 00000000000..beac43b8090 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/creating-expression-columns.md @@ -0,0 +1,52 @@ +--- +title: "式列の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0af3bd64-92a2-4b47-ae62-f5df35f131a6 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 式列の作成 +列の式を定義すると、同じ行の他の列値またはテーブル内の複数の行の列値に基づいて計算した値を、その列に格納できます。 評価する式を定義するには、対象の列の プロパティを使用し、その式で プロパティを使用して他の列を参照します。 式列の は、その式が返す値に適した型であることが必要です。 + + テーブル内の式列で使用できるいくつかの式の種類を次の表に示します。 + +|式の種類|例| +|----------|-------| +|比較|"Total \>\= 500"| +|計算|"UnitPrice \* Quantity"| +|集約|Sum\(Price\)| + + 次の例に示すように、既存の **DataColumn** オブジェクトの **Expression** プロパティを設定したり、このプロパティを コンストラクターに渡す 3 番目の引数として使用したりできます。 + +```vb +workTable.Columns.Add("Total",Type.GetType("System.Double")) +workTable.Columns.Add("SalesTax", Type.GetType("System.Double"), _ + "Total * 0.086") + +``` + +```csharp +workTable.Columns.Add("Total", typeof(Double)); +workTable.Columns.Add("SalesTax", typeof(Double), "Total * 0.086"); +``` + + 式は他の式列を参照できます。ただし、2 つの式が相互に参照し合う循環参照の場合は、例外が生成されます。 式の記述の規則については、**DataColumn** クラスの プロパティのトピックを参照してください。 + +## 参照 + + + + [DataTable スキーマの定義](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-schema-definition.md) + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/datarow-deletion.md b/docs/framework/data/adonet/dataset-datatable-dataview/datarow-deletion.md new file mode 100644 index 00000000000..cb9234fc91d --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/datarow-deletion.md @@ -0,0 +1,58 @@ +--- +title: "DataRow の削除 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c34f531d-4b9b-4071-b2d7-342c402aa586 +caps.latest.revision: 5 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 5 +--- +# DataRow の削除 + オブジェクトから オブジェクトを削除するには、 オブジェクトの **Remove** メソッドと **DataRow** オブジェクトの メソッドの 2 つのメソッドを使用できます。 メソッドが **DataRowCollection** から **DataRow** を削除するのに対し、 メソッドは削除対象の行をマークするだけです。 実際の削除は、アプリケーションが **AcceptChanges** メソッドを呼び出すと実行されます。 を使用すると、行を実際に削除する前に、削除対象としてどの行がマークされているかをプログラムによってチェックできます。 削除対象としてマークされている行の プロパティは、 に設定されています。 + + オブジェクトを反復処理している間は、foreach ループで も呼び出すことはできません。 または はコレクションの状態を変更します。 + + **DataAdapter** およびリレーショナル データ ソースに関連して または **DataTable** を使用するときは、**DataRow** の **Delete** メソッドを使用して行を削除します。 **Delete** メソッドは、**DataSet** または **DataTable** の行を **Deleted** としてマークしますが、その行を削除しません。 代わりに、**DataAdapter** が **Deleted** としてマークされた行を検出したときに **DeleteCommand** メソッドを実行して、データ ソースの該当する行を削除します。 その後、**AcceptChanges** メソッドを使用して、その行を永続的に削除できます。 **Remove** を使用して行を削除すると、行はテーブルから完全に削除されますが、**DataAdapter** はデータ ソースの該当する行を削除しません。 + + **DataRowCollection** の **Remove** メソッドが **DataRow** を引数として受け取り、その行をコレクションから削除する例を次に示します。 + +```vb +workTable.Rows.Remove(workRow) + +``` + +```csharp +workTable.Rows.Remove(workRow); +``` + + これに対して、**DataRow** の **Delete** メソッドを呼び出して、該当する行の **RowState** を **Deleted** に変更する例を次に示します。 + +```vb +workRow.Delete + +``` + +```csharp +workRow.Delete(); +``` + + 行を削除対象としてマークしてから **DataTable** オブジェクトの **AcceptChanges** メソッドを呼び出すと、その行が **DataTable** から削除されます。 これに対して、**RejectChanges** を呼び出すと、行の **RowState** はその行が **Deleted** としてマークされる前の状態に戻ります。 + +> [!NOTE] +> **DataRow** の **RowState** が **Added** である場合、つまりテーブルに行が追加された直後の状態の場合に、その行を **Deleted** としてマークすると、その行はテーブルから削除されます。 + +## 参照 + + + + [DataTable 内のデータの操作](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/datarows-and-datarowviews.md b/docs/framework/data/adonet/dataset-datatable-dataview/datarows-and-datarowviews.md new file mode 100644 index 00000000000..473ca58cc76 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/datarows-and-datarowviews.md @@ -0,0 +1,73 @@ +--- +title: "DataRow および DataRowView | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8f5eec26-b809-4aca-8778-7e202356d856 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# DataRow および DataRowView + は、 オブジェクトの列挙可能なコレクションを公開します。 **DataRowView** オブジェクトは、基になるテーブルの列の名前または列の序数参照によってインデックスが設定されているオブジェクトの配列として値を公開します。 **DataRowView** が **DataRowView** の プロパティを使用して公開している にアクセスできます。 + + **DataRowView** を使用して値を表示している場合は、**DataView** の プロパティによって、基になる **DataRow** から公開される行バージョンが決まります。 **DataRow** を使用してさまざまな行バージョンにアクセスする方法については、「[行の状態とバージョン](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md)」を参照してください。 + + テーブルの現在の値と元の値をすべて表示するコード サンプルを次に示します。 + +```vb +Dim catView As DataView = New DataView(catDS.Tables("Categories")) +Console.WriteLine("Current Values:") +WriteView(catView) +Console.WriteLine("Original Values:") +catView.RowStateFilter = DataViewRowState.ModifiedOriginal +WriteView(catView) + +Public Shared Sub WriteView(thisDataView As DataView) + Dim rowView As DataRowView + Dim i As Integer + + For Each rowView In thisDataView + For i = 0 To thisDataView.Table.Columns.Count - 1 + Console.Write(rowView(i) & vbTab) + Next + Console.WriteLine() + Next +End Sub + +``` + +```csharp +DataView catView = new DataView(catDS.Tables["Categories"]); +Console.WriteLine("Current Values:"); +WriteView(catView); +Console.WriteLine("Original Values:"); +catView.RowStateFilter = DataViewRowState.ModifiedOriginal; +WriteView(catView); + +public static void WriteView(DataView thisDataView) +{ + foreach (DataRowView rowView in thisDataView) + { + for (int i = 0; i < thisDataView.Table.Columns.Count; i++) + Console.Write(rowView[i] + "\t"); + Console.WriteLine(); + } +} +``` + +## 参照 + + + + + [DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md b/docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md new file mode 100644 index 00000000000..cb40c6aebe9 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md @@ -0,0 +1,121 @@ +--- +title: "DataSet と XmlDataDocument の同期 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0ce3793d-54b2-47e4-8cf7-b0591cc4dd21 +caps.latest.revision: 5 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSet と XmlDataDocument の同期 +ADO.NET の には、データのリレーショナル表現があります。 階層データにアクセスするには、.NET Framework で使用できる XML クラスを使用できます。 従来、この 2 つのデータ表現は個別に使用されていました。 .NET Framework では、データのリレーショナル表現と階層表現の両方へリアルタイムに同期的な方法でアクセスできます。リレーショナル表現にアクセスするには **DataSet** オブジェクトを使用します。階層表現にアクセスするには オブジェクトを使用します。 + + **DataSet** を **XmlDataDocument** と同期するときには、**DataSet** と **XmlDataDocument** で 1 つのデータ セットが使用されます。 つまり **DataSet** が変更されると、その変更内容が **XmlDataDocument** に反映されます。この逆の反映も行われます。 **DataSet** と **XmlDataDocument** の間のリレーションシップにより、1 つのアプリケーションから 1 つのデータ セットを使用して、**DataSet** の周囲に構築されたサービス スイート全体 \(Web フォーム、Windows フォーム コントロール、Visual Studio、.NET デザイナーなど\) にアクセスしたり、XML サービス スイート \(XSL \(Extensible Stylesheet Language\)、XSLT \(XSL Transformations\)、XPath \(XML Path Language\) など\) にアクセスしたりできる優れた柔軟性を実現します。 アプリケーションでアクセス対象とするサービス セットを選択する必要はありません。どちらのサービス セットにもアクセスできます。 + + **DataSet** を **XmlDataDocument** と同期する方法は数種類あります。 次の操作を行うことができます。 + +- **DataSet** にスキーマ \(リレーショナル構造\) とデータを読み込み、この **DataSet** を新しい **XmlDataDocument** と同期します。 この方法では、既存のリレーショナル データの階層ビューが作成されます。 次に例を示します。 + + ```vb + Dim dataSet As DataSet = New DataSet + + ' Add code here to populate the DataSet with schema and data. + + Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet) + ``` + + ```csharp + DataSet dataSet = new DataSet(); + + // Add code here to populate the DataSet with schema and data. + + XmlDataDocument xmlDoc = new XmlDataDocument(dataSet); + ``` + +- **DataSet** にスキーマだけを読み込み、この **DataSet** \(厳密に型指定された **DataSet** など\) を **XmlDataDocument** と同期します。次に、XML ドキュメントから **XmlDataDocument** を読み込みます。 この方法では、既存の階層データのリレーショナル ビューが作成されます。 **DataSet** スキーマのテーブル名と列名が、同期をとる XML 要素の名前と一致している必要があります。 この名前の一致では、大文字と小文字が区別されます。 + + **DataSet** のスキーマが一致する必要があるのは、リレーショナル ビューで公開する XML 要素だけです。 つまり、このドキュメント上に非常に大きい XML ドキュメントと非常に小さなリレーショナル ウィンドウを作成できます。 **DataSet** が XML ドキュメントの一部だけを公開する場合でも、**XmlDataDocument** は XML ドキュメント全体を保持します。 この説明に関する詳しい例については、「[Dataset と XmlDataDocument の同期](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/synchronizing-a-dataset-with-an-xmldatadocument.md)」を参照してください。 + + **DataSet** を作成してそのスキーマを読み込み、**XmlDataDocument** と同期する手順を示すコード サンプルを次に示します。 **DataSet** スキーマが一致する必要があるのは、**XmlDataDocument** の中で **DataSet** を使用して公開する要素だけです。 + + ```vb + Dim dataSet As DataSet = New DataSet + + ' Add code here to populate the DataSet with schema, but not data. + + Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet) + xmlDoc.Load("XMLDocument.xml") + ``` + + ```csharp + DataSet dataSet = new DataSet(); + + // Add code here to populate the DataSet with schema, but not data. + + XmlDataDocument xmlDoc = new XmlDataDocument(dataSet); + xmlDoc.Load("XMLDocument.xml"); + ``` + + データが含まれている **DataSet** を **XmlDataDocument** と同期する場合には、**XmlDataDocument** を読み込むことはできません。 読み込もうとすると例外がスローされます。 + +- 新しい **XmlDataDocument** を作成して、XML ドキュメントからこの **XmlDataDocument** を読み込みます。次に、**XmlDataDocument** の **DataSet** プロパティを使用してデータのリレーショナル ビューにアクセスします。 **DataSet** を使用して **XmlDataDocument** のデータを表示するには、**DataSet** スキーマを設定する必要があります。 この場合も、**DataSet** スキーマのテーブル名と列名が、同期をとる XML 要素の名前と一致している必要があります。 この名前の一致では、大文字と小文字が区別されます。 + + **XmlDataDocument** のデータのリレーショナル ビューにアクセスする方法を次のコード サンプルに示します。 + + ```vb + Dim xmlDoc As XmlDataDocument = New XmlDataDocument + Dim dataSet As DataSet = xmlDoc.DataSet + + ' Add code here to create the schema of the DataSet to view the data. + + xmlDoc.Load("XMLDocument.xml") + + ``` + + ```csharp + XmlDataDocument xmlDoc = new XmlDataDocument(); + DataSet dataSet = xmlDoc.DataSet; + + // Add code here to create the schema of the DataSet to view the data. + + xmlDoc.Load("XMLDocument.xml"); + ``` + + **DataSet** を **XmlDataDocument** と同期するもう 1 つの利点は、XML ドキュメントが完全に保持されることです。 **ReadXml** を使用して XML ドキュメントのデータを **DataSet** に格納すると、**WriteXml** を使用してデータが XML ドキュメントとして書き込まれるときに、この XML ドキュメントと元の XML ドキュメントが大幅に異なる場合があります。 これは、**DataSet** では XML ドキュメントから読み込んだ空白などの書式設定や、要素順序などの階層情報が維持されないためです。 **DataSet** には、XML ドキュメントで無視された要素も含まれていません。これは、これらの要素が **Dataset** のスキーマに一致しないためです。 **XmlDataDocument** を **DataSet** と同期することで、元の XML ドキュメントの書式設定要素や階層要素の構造が **XmlDataDocument** で維持され、**DataSet** には **DataSet** に適切なデータおよびスキーマ情報だけが含まれます。 + + **DataSet** を **XmlDataDocument** と同期する場合、 オブジェクトが入れ子かどうかによって同期結果が異なります。 詳細については、「[DataRelation の入れ子化](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/nesting-datarelations.md)」を参照してください。 + +## このセクションの内容 + [Dataset と XmlDataDocument の同期](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/synchronizing-a-dataset-with-an-xmldatadocument.md) + 最小限のスキーマが含まれており、厳密に型指定された **DataSet** を **XmlDataDocument** と同期させるサンプルを示します。 + + [DataSet に対する XPath クエリの実行](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/performing-an-xpath-query-on-a-dataset.md) + **DataSet** の内容に対する XPath クエリの実行のサンプルを示します。 + + [DataSet への XSLT 変換の適用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/applying-an-xslt-transform-to-a-dataset.md) + **DataSet** の内容に対する XSLT 変換の適用サンプルを示します。 + +## 関連項目 + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + **DataSet** がデータ ソースとして XML と対話する方法を、**DataSet** の内容を XML データとして読み込んで永続化する方法と共に説明します。 + + [DataRelation の入れ子化](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/nesting-datarelations.md) + **DataSet** の内容を XML データとして表現する場合における、入れ子になった **DataRelation** オブジェクトの重要性について説明します。また、このようなリレーションを作成する方法について説明します。 + + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + **DataSet** について説明し、**DataSet** を使用したアプリケーション データの管理方法と、**DataSet** を使用したデータ ソース \(リレーショナル データベースや XML など\) との対話方法について説明します。 + + [XmlDataDocument クラス](frlrfSystemXmlXmlDataDocumentClassTopic) + **XmlDataDocument** クラスに関するリファレンス情報が収録されています。 + +## 参照 + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/datatable-constraints.md b/docs/framework/data/adonet/dataset-datatable-dataview/datatable-constraints.md new file mode 100644 index 00000000000..eea53b5a2f0 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/datatable-constraints.md @@ -0,0 +1,108 @@ +--- +title: "DataTable の制約 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 27c9f2fd-f64d-4b4e-bbf6-1d24f47067cb +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTable の制約 +制約を使用すると、データの整合性を維持するために のデータを強制的に制限できます。 制約は、1 つの列または関連付けられた複数の列に対して自動的に適用される規則であり、行の値がなんらかの方法で変更されたときに実行されるアクションを決定します。 制約は、 の `System.Data.DataSet.EnforceConstraints` プロパティを **true** に設定したときに適用されます。 `EnforceConstraints` プロパティの設定方法のコード例については、 のリファレンス トピックを参照してください。 + + ADO.NET には、 の 2 種類の制約があります。 既定では、 を **DataSet** に追加して複数のテーブル間のリレーションシップを作成すると、この 2 種類の制約が両方とも自動的に作成されます。 ただし、リレーションの作成時に **createConstraints** \= **false** と指定することにより、この動作を無効にできます。 + +## ForeignKeyConstraint + **ForeignKeyConstraint** は、関連付けられているテーブルに更新や削除を反映させる方法についての規則を適用します。 たとえば、あるテーブルの行の値が更新または削除され、その同じ値が、関連付けられている別のテーブルでも使用されている場合、関連付けられているテーブル内で実行されるアクションは **ForeignKeyConstraint** によって決定されます。 + + **ForeignKeyConstraint** の プロパティおよび プロパティは、ユーザーが関連付けられているテーブルの行を削除または更新しようとしたときに実行されるアクションを定義します。 **ForeignKeyConstraint** の **DeleteRule** プロパティおよび **UpdateRule** プロパティに使用できるさまざまな設定の説明を次の表に示します。 + +|規則の設定|説明| +|-----------|--------| +|**Cascade**|関連付けられている行を削除または更新します。| +|**SetNull**|関連付けられている行の値を **DBNull** に設定します。| +|**SetDefault**|関連付けられている行の値を既定値に設定します。| +|**なし**|関連付けられている行に対してアクションは実行しません。 既定値です。| + + **ForeignKeyConstraint** は、関連付けられている行への変更を制限したり、反映させたりできます。 列の **ForeignKeyConstraint** に対して設定されたプロパティによっては、**DataSet** の **EnforceConstraints** プロパティが **true** である場合に親の行に対して操作を実行すると、例外が発生することがあります。 たとえば、**ForeignKeyConstraint** の **DeleteRule** プロパティが **None** の場合、子の行を持っている親の行は削除できません。 + + **ForeignKeyConstraint** コンストラクターを使用すると、単一列間または列配列間の外部キー制約を作成できます。 **ConstraintCollection** の 1 つである、テーブルの **Constraints** プロパティの **Add** メソッドに結果の **ForeignKeyConstraint** オブジェクトを渡します。 コンストラクター引数を **ConstraintCollection** の **Add** メソッドのいくつかのオーバーロードに渡すことにより、**ForeignKeyConstraint** を作成することもできます。 + + **ForeignKeyConstraint** を作成するときに、**DeleteRule** の値と **UpdateRule** の値を引数としてコンストラクターに渡したり、それらの値を次の例に示すようにプロパティとして設定したりできます。この例では、**DeleteRule** の値が **None** に設定されています。 + +```vb +Dim custOrderFK As ForeignKeyConstraint = New ForeignKeyConstraint("CustOrderFK", _ + custDS.Tables("CustTable").Columns("CustomerID"), _ + custDS.Tables("OrdersTable").Columns("CustomerID")) +custOrderFK.DeleteRule = Rule.None +' Cannot delete a customer value that has associated existing orders. +custDS.Tables("OrdersTable").Constraints.Add(custOrderFK) + +``` + +```csharp +ForeignKeyConstraint custOrderFK = new ForeignKeyConstraint("CustOrderFK", + custDS.Tables["CustTable"].Columns["CustomerID"], + custDS.Tables["OrdersTable"].Columns["CustomerID"]); +custOrderFK.DeleteRule = Rule.None; +// Cannot delete a customer value that has associated existing orders. +custDS.Tables["OrdersTable"].Constraints.Add(custOrderFK); +``` + +### AcceptRejectRule + 行への変更は、**AcceptChanges** メソッドを使用して受け入れることができ、**DataSet**、**DataTable**、または **DataRow** の **RejectChanges** メソッドを使用してキャンセルできます。 **DataSet** に **ForeignKeyConstraints** が含まれている場合は、**AcceptChanges** メソッドまたは **RejectChanges** メソッドを呼び出すと、**AcceptRejectRule** が強制適用されます。 **ForeignKeyConstraint** の **AcceptRejectRule** プロパティは、親の行に対して **AcceptChanges** または **RejectChanges** が呼び出されたときに、子の行に対して実行されるアクションを決定します。 + + **AcceptRejectRule** に使用できる設定の一覧を次の表に示します。 + +|規則の設定|説明| +|-----------|--------| +|**Cascade**|子の行への変更を受け入れるかまたは拒否します。| +|**なし**|子の行に対してアクションは実行しません。 既定値です。| + +### 例 + 次の例では、 を作成し、 を含む複数のプロパティを設定して、 オブジェクトの に追加します。 + + [!code-csharp[DataWorks Data.AcceptRejectRule#1](../../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks Data.AcceptRejectRule/CS/source.cs#1)] + [!code-vb[DataWorks Data.AcceptRejectRule#1](../../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks Data.AcceptRejectRule/VB/source.vb#1)] + +## UniqueConstraint + **UniqueConstraint** オブジェクトは、**DataTable** 内の 1 つの列または列の配列に対して割り当てることができ、指定された列内のすべてのデータが行ごとに一意になるようにします。 **UniqueConstraint** コンストラクターを使用して、1 つの列または列の配列に対する UNIQUE 制約を作成できます。 **ConstraintCollection** の 1 つである、テーブルの **Constraints** プロパティの **Add** メソッドに結果の **UniqueConstraint** オブジェクトを渡します。 コンストラクター引数を **ConstraintCollection** の **Add** メソッドのいくつかのオーバーロードに渡すことにより、**UniqueConstraint** を作成することもできます。 1 つの列または複数の列に対して **UniqueConstraint** を作成するときは、オプションで、その列または複数の列を主キーにするかどうかを指定できます。 + + 列の **Unique** プロパティを **true** に設定することにより、1 つの列に対する UNIQUE 制約を作成することもできます。 また、1 つの列の **Unique** プロパティを **false** に設定することにより、既存の UNIQUE 制約を削除できます。 1 つの列 \(または複数の列\) をテーブルの主キーとして定義すると、指定した列 \(または複数の列\) の UNIQUE 制約が自動的に作成されます。 **DataTable** の **PrimaryKey** プロパティから列を削除すると、**UniqueConstraint** が削除されます。 + + **DataTable** の 2 つの列の **UniqueConstraint** を作成する例を次に示します。 + +```vb +Dim custTable As DataTable = custDS.Tables("Customers") +Dim custUnique As UniqueConstraint = _ + New UniqueConstraint(New DataColumn() {custTable.Columns("CustomerID"), _ + custTable.Columns("CompanyName")}) +custDS.Tables("Customers").Constraints.Add(custUnique) + +``` + +```csharp +DataTable custTable = custDS.Tables["Customers"]; +UniqueConstraint custUnique = new UniqueConstraint(new DataColumn[] + {custTable.Columns["CustomerID"], + custTable.Columns["CompanyName"]}); +custDS.Tables["Customers"].Constraints.Add(custUnique); +``` + +## 参照 + + + + + [DataTable スキーマの定義](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-schema-definition.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/datatable-edits.md b/docs/framework/data/adonet/dataset-datatable-dataview/datatable-edits.md new file mode 100644 index 00000000000..ccb0c2d6816 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/datatable-edits.md @@ -0,0 +1,100 @@ +--- +title: "DataTable の編集 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f08008a9-042e-4de9-94f3-4f0e502b1eb5 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTable の編集 + 内の列値を変更すると、その変更はすぐに行の現在の状態に反映されます。 次に、 が **Modified** に設定され、**DataRow** の メソッドまたは メソッドを使用して変更が受け入れられるかまたは拒否されます。 **DataRow** は、行の編集中に、その行の状態を保留にしておくために使用できる 3 つのメソッドも提供します。 これらのメソッドとは、 および です。 + + **DataRow** の列値が直接変更されると、**DataRow** は、**Current**、**Default**、**Original** の各行バージョンを使用して列値を管理します。 **BeginEdit**、**EndEdit**、**CancelEdit** の各メソッドでは、これらの行バージョンに加えて、4 番目の行バージョン **Proposed** を使用します。 行バージョンの詳細については、「[行の状態とバージョン](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md)」を参照してください。 + + **Proposed** 行バージョンは、編集操作中に存在するバージョンです。編集操作は、**BeginEdit** への呼び出しによって開始し、**EndEdit** または **CancelEdit** の使用あるいは **AcceptChanges** または **RejectChanges** の呼び出しによって終了します。 + + 編集操作中に、**DataTable** の **ColumnChanged** イベントで **ProposedValue** を評価することにより、個々の列に検証ロジックを適用できます。 **ColumnChanged** イベントは、変更されている列への参照および **ProposedValue** への参照を維持する **DataColumnChangeEventArgs** を保持します。 提示された値を評価した後で、値を変更するか、または編集をキャンセルできます。 編集が終了すると、行は **Proposed** 状態ではなくなります。 + + **EndEdit** を呼び出すと編集内容を確定でき、**CancelEdit** を呼び出すと編集内容をキャンセルできます。 **EndEdit** は編集内容を確定しますが、**DataSet** は **AcceptChanges** が呼び出されるまでは実際には変更を受け入れません。 また、**EndEdit** または **CancelEdit** を使用して編集を終了する前に **AcceptChanges** を呼び出した場合は、編集が終了し、**Proposed** 行値が **Current** 行バージョンと **Original** 行バージョンの両方に受け入れられます。 同様に、**RejectChanges** を呼び出した場合も編集が終了し、**Current** 行バージョンと **Proposed** 行バージョンの両方が破棄されます。 **AcceptChanges** または **RejectChanges** を呼び出した後で **EndEdit** または **CancelEdit** を呼び出しても、編集が既に終了しているため、その呼び出しは無効になります。 + + **BeginEdit**、**EndEdit**、および **CancelEdit** を使用する方法を次の例に示します。 この例では、**ColumnChanged** イベントで **ProposedValue** をチェックして、編集をキャンセルするかどうかを決定しています。 + +```vb +Dim workTable As DataTable = New DataTable +workTable.Columns.Add("LastName", Type.GetType("System.String")) + +AddHandler workTable.ColumnChanged, _ + New DataColumnChangeEventHandler(AddressOf OnColumnChanged) + +Dim workRow As DataRow = workTable.NewRow() +workRow(0) = "Smith" +workTable.Rows.Add(workRow) + +workRow.BeginEdit() +' Causes the ColumnChanged event to write a message and cancel the edit. +workRow(0) = "" +workRow.EndEdit() + +' Displays "Smith, New". +Console.WriteLine("{0}, {1}", workRow(0), workRow.RowState) + +Private Shared Sub OnColumnChanged( _ + sender As Object, args As DataColumnChangeEventArgs) + If args.Column.ColumnName = "LastName" Then + If args.ProposedValue.ToString() = "" Then + Console.WriteLine("Last Name cannot be blank. Edit canceled.") + args.Row.CancelEdit() + End If + End If +End Sub + +``` + +```csharp +DataTable workTable = new DataTable(); +workTable.Columns.Add("LastName", typeof(String)); + +workTable.ColumnChanged += + new DataColumnChangeEventHandler(OnColumnChanged); + +DataRow workRow = workTable.NewRow(); +workRow[0] = "Smith"; +workTable.Rows.Add(workRow); + +workRow.BeginEdit(); +// Causes the ColumnChanged event to write a message and cancel the edit. +workRow[0] = ""; +workRow.EndEdit(); + +// Displays "Smith, New". +Console.WriteLine("{0}, {1}", workRow[0], workRow.RowState); + +protected static void OnColumnChanged( + Object sender, DataColumnChangeEventArgs args) +{ + if (args.Column.ColumnName == "LastName") + if (args.ProposedValue.ToString() == "") + { + Console.WriteLine("Last Name cannot be blank. Edit canceled."); + args.Row.CancelEdit(); + } +} +``` + +## 参照 + + + + [DataTable 内のデータの操作](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md) + [DataTable イベントの処理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/handling-datatable-events.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/datatable-schema-definition.md b/docs/framework/data/adonet/dataset-datatable-dataview/datatable-schema-definition.md new file mode 100644 index 00000000000..fbd49f80f5c --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/datatable-schema-definition.md @@ -0,0 +1,47 @@ +--- +title: "DataTable スキーマの定義 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: efbcdda4-f5a9-421d-8be2-4c194c74552f +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTable スキーマの定義 +テーブルのスキーマ \(構造\) は、列と制約で表されます。 のスキーマは、 の各オブジェクトを使用して定義します。 テーブルの列は、データ ソースの列に割り当てたり、式で算出された値を格納したり、格納されている値を自動的にインクリメントしたり、主キー値を格納したりできます。 + + テーブルの列、リレーション、および制約を名前で参照する場合は、大文字と小文字が区別されます。 複数の列、リレーション、または制約の名前が同じであっても、大文字と小文字が異なっていれば、1 つのテーブルで使用できます。 たとえば、**Col1** と **col1** を同時に使用できます。 この場合、列を名前で参照するときは、列名の大文字と小文字を正確に指定する必要があります。正確に指定しない場合は、例外がスローされます。 たとえば、テーブル **myTable** に列 **Col1** と列 **col1** がある場合、**Col1** は名前 **myTable.Columns\["Col1"\]** で参照され、**col1** は名前 **myTable.Columns\["col1"\]** で参照されます。 いずれかの列を **myTable.Columns\["COL1"\]** という名前で参照しようとすると、例外が生成されます。 + + 大文字と小文字の区別の規則は、特定の名前の列、リレーション、または制約が 1 つしかない場合には適用されません。 つまり、特定の列、リレーション、または制約オブジェクトと名前が一致する列、リレーション、または制約オブジェクトがテーブルに存在しない場合は、大文字と小文字を区別せずにそのオブジェクトを名前で参照することができます。このとき、例外はスローされません。 たとえば、テーブルに **Col1** が 1 つしかない場合は、**my.Columns\["COL1"\]** を使用してこの列を参照できます。 + +> [!NOTE] +> したがって、この動作は **DataTable** の プロパティの影響を受けません。 **CaseSensitive** プロパティは、テーブルのデータに適用され、並べ替え、検索、フィルター処理、制約の適用などに影響を及ぼします。このプロパティは、テーブルの列、リレーション、および制約の参照には適用されません。 + +## このセクションの内容 + [DataTable への列の追加](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/adding-columns-to-a-datatable.md) + **DataColumn** オブジェクトを使用して、テーブルの列を定義する方法について説明します。 + + [式列の作成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/creating-expression-columns.md) + 列の **Expression** プロパティを使用して、同じ行にある他の列の値を基に値を計算する方法について説明します。 + + [AutoIncrement 列の作成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/creating-autoincrement-columns.md) + 数値を自動的にインクリメントして行ごとに一意の列値が割り当てられるように列を設定する方法について説明します。 + + [主キーの定義](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/defining-primary-keys.md) + 1 つ以上の **DataColumn** オブジェクトからテーブルの主キーを指定する方法について説明します。 + + [DataTable の制約](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-constraints.md) + テーブルの列の外部キー制約と UNIQUE 制約を定義する方法について説明します。 + +## 参照 + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/datatablereaders.md b/docs/framework/data/adonet/dataset-datatable-dataview/datatablereaders.md new file mode 100644 index 00000000000..3512c56be8c --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/datatablereaders.md @@ -0,0 +1,35 @@ +--- +title: "DataTableReaders | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 97546ae2-0e42-4d26-961d-e0b244d81ded +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTableReaders + は、 または の内容を、読み取り専用かつ前方参照専用の 1 つ以上の結果セットとして表します。 + + **DataTable** から **DataTableReader** を作成すると、**DataTableReader** オブジェクトには、その作成元である **DataTable** と同一データ \(ただし、Deleted とマークされた行は除く\) を持つ結果セットが 1 つ設定されます。 各列は、元の **DataTable** と同じ順序で格納されます。 + + の呼び出しにより **DataTableReader** を作成した場合、**DataTableReader** に複数の結果セットが含まれる場合があります。 結果は、**DataSet** オブジェクトの コレクション内の **DataTables** と同じ順序になります。 + +## このセクションの内容 + [DataReader の作成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datareader.md) + **DataTableReader** オブジェクトの作成方法について説明します。 + + [DataTable の移動](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/navigating-datatables.md) + **Read** メソッドを使用して、**DataTableReader** の内容を取得する方法について説明します。 + +## 参照 + [ADO.NET でのデータの取得および変更](../../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/datatables.md b/docs/framework/data/adonet/dataset-datatable-dataview/datatables.md new file mode 100644 index 00000000000..1efca48593d --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/datatables.md @@ -0,0 +1,66 @@ +--- +title: "DataTable | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 52ff0e32-3e5a-41de-9a3b-7b04ea52b83e +caps.latest.revision: 6 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTable + は、テーブル、リレーションシップ、および制約のコレクションで構成されます。 ADO.NET では、**DataSet** 内のテーブルを表すために オブジェクトを使用します。 **DataTable** は、1 つのメモリ内のリレーショナル データ テーブルを表します。このテーブルのデータは、そのデータが存在する .NET ベース アプリケーションのローカル データですが、**DataAdapter** を使用して Microsoft SQL Server などのデータ ソースから読み込むこともできます。詳細については、「[DataAdapter からの DataSet の読み込み](../../../../../docs/framework/data/adonet/populating-a-dataset-from-a-dataadapter.md)」を参照してください。 + + **DataTable** クラスは、.NET Framework クラス ライブラリ内の **System.Data** 名前空間のメンバーです。 **DataTable** は、単独でも **DataSet** のメンバーとしても作成および使用できます。また、**DataTable** オブジェクトは、 などの他の .NET Framework オブジェクトからも使用できます。 **DataSet** 内のテーブルのコレクションには、**DataSet** オブジェクトの **Tables** プロパティを使用してアクセスします。 + + テーブルのスキーマ \(構造\) は、列と制約で表されます。 **DataTable** のスキーマは、 の各オブジェクトを使用して定義します。 テーブルの列は、データ ソースの列に割り当てたり、式で算出された値を格納したり、格納されている値を自動的にインクリメントしたり、主キー値を格納したりできます。 + + **DataTable** には、スキーマだけでなく、データを格納して順序付けるための行も必要です。 クラスは、テーブルに格納される実際のデータを表します。 **DataRow** およびそのプロパティとメソッドを使用して、テーブル内のデータを取得、評価、および操作できます。 行内のデータがアクセスされて変更されたときは、**DataRow** オブジェクトは、変更後の現在の状態と変更前の状態を維持します。 + + テーブル間で 1 つ以上の列を関連付け、テーブル間の親子のリレーションシップを作成できます。 **DataTable** オブジェクト間のリレーションシップを作成するには、 を使用します。 **DataRelation** オブジェクトを使用すると、特定の行に関連付けられた子の行または親の行を返すことができます。 詳細については、「[DataRelation の追加](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/adding-datarelations.md)」を参照してください。 + +## このセクションの内容 + [DataTable の作成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/creating-a-datatable.md) + **DataTable** を作成して **DataSet** に追加する方法について説明します。 + + [DataTable スキーマの定義](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-schema-definition.md) + **DataColumn** オブジェクトと制約の作成および使用について説明します。 + + [DataTable 内のデータの操作](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md) + テーブル内のデータを追加、変更、および削除する方法について説明します。 **DataTable** イベントを使用してテーブル内のデータが変更されたかどうかを確認する方法について説明します。 + + [DataTable イベントの処理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/handling-datatable-events.md) + 列値が変更された場合や行が追加または削除された場合のイベントなど、**DataTable** で使用できるイベントについて説明します。 + +## 関連項目 + [ADO.NET](../../../../../docs/framework/data/adonet/index.md) + ADO.NET のアーキテクチャとコンポーネントについて説明し、ADO.NET を使用して既存のデータ ソースにアクセスしたり、アプリケーション データを管理する方法について説明します。 + + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + テーブル間のリレーションシップを作成する方法も含め、ADO.NET の **DataSet** について説明します。 + + [Constraint クラス](frlrfSystemDataConstraintClassTopic) + **Constraint** オブジェクトの参照情報を提供します。 + + [DataColumn クラス](frlrfSystemDataDataColumnClassTopic) + **DataColumn** オブジェクトの参照情報を提供します。 + + [DataSet クラス](frlrfSystemDataDataSetClassTopic) + **DataSet** オブジェクトの参照情報を提供します。 + + [DataTable クラス](frlrfSystemDataDataTableClassTopic) + **DataTable** オブジェクトの参照情報を提供します。 + + [クラス ライブラリの概要](../../../../../docs/standard/class-library-overview.md) + **System** 名前空間やその下位レベルの名前空間 **System.Data** を含む .NET Framework クラス ライブラリの概要について説明します。 + +## 参照 + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md b/docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md new file mode 100644 index 00000000000..cb9fd29cf4d --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md @@ -0,0 +1,70 @@ +--- +title: "DataViews | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0fe5dfa2-c1cd-435f-90b6-b4dd2e3ef34b +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataViews + では、 に格納されているデータのさまざまなビューを作成できます。この機能は、データ連結アプリケーションで頻繁に使用されます。 **DataView** を使用すると、さまざまな並べ替え順序を使用してテーブルのデータを公開したり、行の状態やフィルター式に基づいてデータをフィルター処理したりできます。 + + **DataView** では、基になる **DataTable** のデータの動的ビューが作成されます。ビューの内容、順序、メンバーシップには、変更が反映されます。 これは、**DataTable** の **Select** メソッドとは異なります。このメソッドでは、特定のフィルターまたは並べ替え順序ごとにテーブルから 配列が戻されます。戻される配列の内容には、基になるテーブルの変更内容が反映されていますが、メンバーシップと順序は静的です。 **DataView** は動的機能を備えているため、データ連結アプリケーションにとって理想的なオブジェクトです。 + + **DataView** は、1 つのデータ セットの動的ビューです。データベースのビューと同様に、この動的ビューには、さまざまな並べ替え順序やフィルター処理条件を適用できます。 ただし、データベース ビューとは異なり、**DataView** は、テーブルとしては処理できず、結合テーブルのビューも作成できません。 また、ソース テーブルの既存の列を除外したり、ソース テーブルにない列 \(計算列など\) を追加することはできません。 + + **DataSet** のすべてのテーブルのビュー設定を管理するには、 を使用します。 **DataViewManager** を使用すると、各テーブルの既定のビュー設定を簡単に管理できます。 **DataSet** の複数のテーブルにコントロールを連結する最適な方法は、**DataViewManager** に連結する方法です。 + +## このセクションの内容 + [DataView の作成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/creating-a-dataview.md) + **DataTable** の **DataView** の作成方法について説明します。 + + [データの並べ替えとフィルター処理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/sorting-and-filtering-data.md) + 特定のフィルター条件を満たすデータ行のサブセットを返すか、または特定の並べ替え順序でデータを返すように **DataView** のプロパティを設定する方法について説明します。 + + [DataRow および DataRowView](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datarows-and-datarowviews.md) + **DataView** によって公開されるデータへのアクセス方法について説明します。 + + [行の検索](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/finding-rows.md) + **DataView** での特定の行の検索方法について説明します。 + + [ChildView とリレーション](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/childviews-and-relations.md) + **DataView** を使用して親子のリレーションシップからデータ ビューを作成する方法について説明します。 + + [DataView の変更](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/modifying-dataviews.md) + **DataView** を使用して、基になる **DataTable** のデータを変更する方法について説明します。また、更新の有効化と無効化についても説明します。 + + [DataView イベントの処理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/handling-dataview-events.md) + **DataView** の内容または順序が更新されるときに、**ListChanged** イベントを使用して通知を受信する方法について説明します。 + + [DataViews の管理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/managing-dataviews.md) + **DataViewManager** を使用して **DataSet** の各テーブルの **DataView** 設定を管理する方法について説明します。 + +## 関連項目 + [ASP.NET Web Applications](http://msdn.microsoft.com/ja-jp/a812d7b7-049e-4234-a4c2-6acf690301f6) + ASP.NET アプリケーション、Web フォームおよび Web サービスを作成する場合の概要と詳細なステップごとの手順を示します。 + + [Windows Applications](http://msdn.microsoft.com/ja-jp/a6bb2180-09b1-4738-b9fd-7fb05fc92f23) + Windows フォームおよびコンソール アプリケーションの操作に関する詳細情報を提供します。 + + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + **DataSet** オブジェクトについて説明し、**DataSet** オブジェクトを使用してアプリケーション データを管理する方法も示します。 + + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + **DataTable** オブジェクトについて説明し、アプリケーション データを単独でまたは **DataSet** の一部として管理するために **DataTable** オブジェクトを使用する方法も示します。 + + [ADO.NET](../../../../../docs/framework/data/adonet/index.md) + ADO.NET のアーキテクチャとコンポーネントについて説明し、ADO.NET を使用して既存のデータ ソースにアクセスしたり、アプリケーション データを管理する方法について説明します。 + +## 参照 + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/defining-primary-keys.md b/docs/framework/data/adonet/dataset-datatable-dataview/defining-primary-keys.md new file mode 100644 index 00000000000..58ee2487fbb --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/defining-primary-keys.md @@ -0,0 +1,78 @@ +--- +title: "主キーの定義 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2ea85959-e763-4669-8bd9-46a9dab894bd +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 主キーの定義 +通常、データベース テーブルには、テーブル内の各行を一意に識別する単一の列または複数の列があります。 行を識別するこのような列を、主キーと呼びます。 + + 1 つの として指定すると、テーブルはその列の プロパティを **false** に、 プロパティを **true** に自動的に設定します。 複数列の主キーの場合は、**AllowDBNull** プロパティだけが自動的に **false** に設定されます。 + + の **PrimaryKey** プロパティがその値として、1 つ以上の **DataColumn** オブジェクトから成る配列を受け取る例を次に示します。 最初の例は、1 つの列を主キーとして定義しています。 + +```vb +workTable.PrimaryKey = New DataColumn() {workTable.Columns("CustID")} + +' Or + +Dim columns(1) As DataColumn +columns(0) = workTable.Columns("CustID") +workTable.PrimaryKey = columns + +``` + +```csharp +workTable.PrimaryKey = new DataColumn[] {workTable.Columns["CustID"]}; + +// Or + +DataColumn[] columns = new DataColumn[1]; +columns[0] = workTable.Columns["CustID"]; +workTable.PrimaryKey = columns; +``` + + 2 つの列を主キーとして定義する例を次に示します。 + +```vb +workTable.PrimaryKey = New DataColumn() {workTable.Columns("CustLName"), _ + workTable.Columns("CustFName")} + +' Or + +Dim keyColumn(2) As DataColumn +keyColumn(0) = workTable.Columns("CustLName") +keyColumn(1) = workTable.Columns("CustFName") +workTable.PrimaryKey = keyColumn + +``` + +```csharp +workTable.PrimaryKey = new DataColumn[] {workTable.Columns["CustLName"], + workTable.Columns["CustFName"]}; + +// Or + +DataColumn[] keyColumn = new DataColumn[2]; +keyColumn[0] = workTable.Columns["CustLName"]; +keyColumn[1] = workTable.Columns["CustFName"]; +workTable.PrimaryKey = keyColumn; +``` + +## 参照 + + [DataTable スキーマの定義](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-schema-definition.md) + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md b/docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md new file mode 100644 index 00000000000..61b8fa19325 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md @@ -0,0 +1,107 @@ +--- +title: "XML スキーマ (XSD) からの DataSet リレーショナル構造の派生 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8f6cd04d-6197-4bc4-9096-8c51c7e4acae +caps.latest.revision: 5 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# XML スキーマ (XSD) からの DataSet リレーショナル構造の派生 +ここでは、XML スキーマ定義言語 \(XSD\) スキーマ ドキュメントから のリレーショナル スキーマを生成する方法についての概要を説明します。 一般的には、スキーマの要素の各 **complexType** 子要素に対して、テーブルが **DataSet** に生成されます。 テーブル構造は、複合型の定義に基づいて決定されます。 テーブルは、スキーマのトップレベル要素の **DataSet** に作成されます。 ただし、**complexType** 要素が別の **complexType** 要素内で入れ子になっている場合、テーブルはトップレベルの **complexType** 要素にだけ作成されます。その場合、入れ子になった **complexType** 要素は、**DataSet** 内の に割り当てられます。 + + XSD の詳細については、World Wide Web Consortium \(W3C\) XML スキーマ パート 0:Primer Recommendation、XML スキーマ パート 1:Structures Recommendation、XML スキーマ パート 2:Datatypes Recommendation \([http:\/\/www.w3.org\/](http://www.w3.org/TR/) にあります\) を参照してください。 + + `customers` 要素が `MyDataSet` 要素の子要素である XML スキーマの例を次に示します。この `MyDataSet` 要素が **DataSet** 要素に該当します。 + +``` + + + + + + + + + + + + + + + + + +``` + + 上記の例では、`customers` 要素は複合型の要素です。 したがって、複合型の定義が解析され、割り当て処理によって次のテーブルが作成されます。 + +``` +Customers (CustomerID , CompanyName, Phone) +``` + + テーブルの各列のデータ型は、それに対応する指定された要素または属性の XML スキーマ型から派生します。 + +> [!NOTE] +> `customers` 要素が **integer** のような単純な XML スキーマ データ型である場合、テーブルは生成されません。 テーブルが作成されるのは、複合型のトップレベル要素に対してだけです。 + + **Schema** 要素に `InStateCustomers` と `OutOfStateCustomers` の 2 つの子要素を持つ XML スキーマの例を次に示します。 + +``` + + + + + + + + + + + + + + + +``` + + `InStateCustomers` と `OutOfStateCustomers` の 2 つの子要素は、複合型の要素です \(`customerType`\)。 したがって、割り当て処理によって **DataSet** に次の 2 つの同じテーブルが生成されます。 + +``` +InStateCustomers (CustomerID , CompanyName, Phone) +OutOfStateCustomers (CustomerID , CompanyName, Phone) +``` + +## このセクションの内容 + [XML スキーマ \(XSD\) 制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md) + **DataSet** での UNIQUE 制約および外部キー制約の作成に使用する XML スキーマの要素について説明します。 + + [XML スキーマ \(XSD\) からの DataSet リレーションの生成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md) + **DataSet** でのテーブル列間のリレーションの生成に使用する XML スキーマの要素について説明します。 + + [XML スキーマ制約およびリレーションシップ](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/xml-schema-constraints-and-relationships.md) + XML スキーマの要素を使用して **DataSet** に制約を作成するときに、リレーションが暗黙的に生成される方法について説明します。 + +## 関連項目 + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + **DataSet** のリレーショナル構造とデータを XML データとして読み込んで、永続化する方法について説明します。 + +## 参照 + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/diffgrams.md b/docs/framework/data/adonet/dataset-datatable-dataview/diffgrams.md new file mode 100644 index 00000000000..cbc12e40cdd --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/diffgrams.md @@ -0,0 +1,146 @@ +--- +title: "DiffGram | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 037f3991-7bbc-424b-b52e-8b03585d3e34 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DiffGram +DiffGram は、データ要素の現在のバージョンと元のバージョンを識別する XML 形式です。 では、 の内容を読み込んで永続化するため、およびネットワーク接続経由で転送する場合にこの内容をシリアル化するために、DiffGram 形式が使用されます。 DiffGram として作成された は、スキーマを使用せずに の内容を正確に再作成するために必要なすべての情報を DiffGram に格納します。このような情報には、**Original** 行バージョンと **Current** 行バージョンの両方の列値、行エラー情報、行順序などが含まれています。 + + XML Web サービスから を送信または取得するときには、DiffGram 形式が暗黙的に使用されます。 また、**ReadXml** メソッドを使用して XML から の内容を読み取るときや、**WriteXml** メソッドを使用して XML に の内容を書き込むときは、読み取りまたは書き込みの形式として DiffGram を指定できます。 詳細については、「[XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md)」および「[DataSet 内容の XML データとしての書き込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md)」を参照してください。 + + .NET Framework では、DiffGram 形式は主に の内容をシリアル化するときの形式として使用されますが、Microsoft SQL Server データベース内のテーブル データを変更するときにも DiffGrams を使用できます。 + + Diffgram は、すべてのテーブルの内容を **\** 要素に書き込むことによって生成されます。 + +### Diffgram を生成するには + +1. ルート テーブル \(親を一切持たないテーブル\) のリストを生成します。 + +2. リストの各テーブルとその子孫について、すべての行の現在のバージョンを最初の Diffgram セクションに書き込みます。 + +3. の各テーブルについて、すべての行の元のバージョン \(存在する場合\) を Diffgram の **\** セクションに書き込みます。 + +4. エラーのある行については、そのエラーの内容を Diffgram の **\** セクションに書き込みます。 + + Diffgram は XML ファイルの上から下に向かって処理されます。 + +### Diffgram を処理するには + +1. Diffgram の最初のセクションを処理します。このセクションには、行の現在のバージョンが格納されています。 + +2. 2 番目のセクションまたは **\** セクションを処理します。このセクションには、修正または削除された行の元のバージョンが格納されています。 + + > [!NOTE] + > 行が削除済みとしてマークされていた場合、削除操作によってその行の子孫も削除される場合があります。この点は、現在の の `Cascade` プロパティに依存します。 + +3. **\** セクションを処理します。 このセクションの各項目について、指定された行および列のエラー情報を設定します。 + +> [!NOTE] +> を Diffgram に設定した場合、ターゲット の内容が、元の の内容と異なる場合があります。 + +## DiffGram 形式 + DiffGram 形式は、現在のデータ、元のデータ \(または前のデータ\)、エラーの 3 つのセクションから構成されています。DiffGram の例を次に示します。 + +``` + + + + + + + + + + + + +``` + + DiffGram 形式を構成するデータ ブロックについて次に説明します。 + + **\<** ***DataInstance*** **\>** + このドキュメントでは、説明の目的でこの要素の名前である ***DataInstance*** を使用します。 ***DataInstance*** 要素は、 の行または を表します。 実際には *DataInstance* の代わりに または の名前がこの要素に含まれます。 DiffGram 形式のこのブロックには現在のデータが含まれています。現在のデータは、変更されている場合と未変更の場合があります。 変更されている要素 \(行\) を識別するため、このような要素には **diffgr:hasChanges** 注釈が付きます。 + + **\** + DiffGram 形式のこのブロックには、行の元の内容が含まれています。 このブロックの要素は、**diffgr:id** 注釈を使用して ***DataInstance*** ブロックの内容と対応しています。 + + **\** + DiffGram 形式のこのブロックには、***DataInstance*** ブロックの特定の行に関するエラー情報が含まれています。 このブロックの要素は、**diffgr:id** 注釈を使用して ***DataInstance*** ブロックの内容と対応しています。 + +## DiffGram 注釈 + DiffGram では、 の行バージョンやエラー情報を表すさまざまな DiffGram ブロックの要素を関連付けるため、いくつかの注釈が使用されます。 + + DiffGram 名前空間 **urn:schemas\-microsoft\-com:xml\-diffgram\-v1** で定義されている DiffGram 注釈を次の表に示します。 + +|注釈|説明| +|--------|--------| +|**id**|**\** ブロックと **\** ブロックの要素を **\<** ***DataInstance*** **\>** ブロックの要素と対応させるために使用されます。 **diffgr:id** 注釈の値は *\[TableName\]\[RowIdentifier\]* という形式で指定されます。 たとえば、`` のように指定します。| +|**parentId**|現在の要素の親要素である **\<** ***DataInstance*** **\>** ブロックの要素を識別します。 **diffgr:parentId** 注釈の値は *\[TableName\]\[RowIdentifier\]* という形式で指定されます。 たとえば、`` のように指定します。| +|**hasChanges**|**\<** ***DataInstance*** **\>** ブロックの行を変更済みとして識別します。 **hasChanges** 注釈には、次の 2 つのうち、いずれかの値を指定できます。

**inserted**
**Added** 行を識別します。

**modified**
対応する **Original** 行バージョンが **\<\\>** ブロックに含まれている **Modified** 行を識別します。 **Deleted** 行の場合、対応する **Original** 行バージョンが **\** ブロックには存在しますが、**\<** ***DataInstance*** **\>** ブロックには注釈付き要素が存在しません。| +|**hasErrors**|**\<** ***DataInstance*** **\>** ブロック内で **RowError** がある行を識別します。 エラー要素は **\** ブロックに挿入されます。| +|**Error**|**\** ブロック内の特定の要素に関する **RowError** のテキストが含まれています。| + + の内容が DiffGram として読み取られる、または書き込まれるときには、上記以外の注釈も含まれます。 名前空間 **urn:schemas\-microsoft\-com:xml\-msdata** で定義されている追加の注釈を次の表に示します。 + +|注釈|説明| +|--------|--------| +|**RowOrder**|元のデータの行順序を保持し、特定の の行のインデックスを識別します。| +|**非表示**|特定の列を **ColumnMapping** プロパティが **MappingType.Hidden** に設定されている列として識別します。 この属性は、**msdata:hidden** *\[ColumnName\]*\="*value*" という形式で書き込まれます。 たとえば、`` のように指定します。

データが格納されている隠し列だけが DiffGram 属性として書き込まれます。 それ以外の場合は無視されます。| + +## DiffGram のサンプル + DiffGram 形式の例を次に示します。 この例では、変更のコミット前のテーブル内の行に対する更新結果が示されています。 CustomerID の "ALFKI" である行は変更されていますが、更新されていません。 このため、**\<** ***DataInstance*** **\>** ブロックに **diffgr:id** が "Customers1" の **Current** 行があり、**\** ブロックに **diffgr:id** が "Customers1" の **Original** 行があります。 CustomerID が "ANATR" である行には **RowError** が含まれているため、この行には `diffgr:hasErrors="true"` という注釈が付いています。**\** ブロックに、この行に関連する要素があります。 + +``` + + + + ALFKI + New Company + + + ANATR + Ana Trujillo Emparedados y Helados + + + ANTON + Antonio Moreno Taquera + + + AROUT + Around the Horn + + + + + ALFKI + Alfreds Futterkiste + + + + + + +``` + +## 参照 + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) + [DataSet 内容の XML データとしての書き込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/finding-rows.md b/docs/framework/data/adonet/dataset-datatable-dataview/finding-rows.md new file mode 100644 index 00000000000..32e88f55c6e --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/finding-rows.md @@ -0,0 +1,106 @@ +--- +title: "行の検索 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5da300e2-74c0-4d13-9202-fc20ed8212d8 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 行の検索 + メソッドと メソッドを使用すると、並べ替えキーの値に基づいて行を検索できます。 **Find** メソッドと **FindRows** メソッドによる検索で、値の大文字と小文字が区別されるかどうかは、基になる の **CaseSensitive** プロパティによって決まります。 検索結果を返すには、検索値が既存の並べ替えキーの値と完全に一致している必要があります。 + + **Find** メソッドは、検索条件に一致する のインデックスの整数値を返します。 複数の行が検索条件に一致する場合は、一致した最初の **DataRowView** が返されます。 一致する DataRowView がない場合には、**Find** は \-1 を返します。 + + 複数の行に一致する検索結果を返すには、**FindRows** メソッドを使用します。 **FindRows** は **Find** メソッドと同様に機能しますが、**DataView** 内で条件に一致するすべての行を参照する **DataRowView** 配列を返す点が **Find** メソッドとは異なります。 一致する行が見つからない場合、**DataRowView** 配列は空になります。 + + **Find** メソッドまたは **FindRows** メソッドを使用するには、並べ替え順序を指定する必要があります。並べ替え順序を指定するには、**ApplyDefaultSort** を **true** に設定するか、または **Sort** プロパティを使用します。 並べ替え順序が指定されないと、例外がスローされます。 + + **Find** メソッドと **FindRows** メソッドには、並べ替え順序に指定されている列の数と長さが一致する値配列を入力として渡します。 1 つの列に基づく並べ替えの場合は、1 つの値を渡します。 複数列に基づく並べ替えの場合は、オブジェクトの配列を渡します。 複数列に基づく並べ替えでは、オブジェクト配列の値の順序が、**DataView** の **Sort** プロパティに指定されている列の順序と一致する必要があります。 + + 1 列の並べ替え順序が設定されている **DataView** に対して **Find** メソッドを呼び出すコード サンプルを次に示します。 + +```vb +Dim custView As DataView = _ + New DataView(custDS.Tables("Customers"), "", _ + "CompanyName", DataViewRowState.CurrentRows) + +Dim rowIndex As Integer = custView.Find("The Cracker Box") + +If rowIndex = -1 Then + Console.WriteLine("No match found.") +Else + Console.WriteLine("{0}, {1}", _ + custView(rowIndex)("CustomerID").ToString(), _ + custView(rowIndex)("CompanyName").ToString()) +End If + +``` + +```csharp +DataView custView = new DataView(custDS.Tables["Customers"], "", + "CompanyName", DataViewRowState.CurrentRows); + +int rowIndex = custView.Find("The Cracker Box"); + +if (rowIndex == -1) + Console.WriteLine("No match found."); +else + Console.WriteLine("{0}, {1}", + custView[rowIndex]["CustomerID"].ToString(), + custView[rowIndex]["CompanyName"].ToString()); +``` + + **Sort** プロパティで複数の列が指定される場合は、次のコード サンプルに示すように、各列に対応する検索値を **Sort** プロパティで指定されている順序で格納したオブジェクト配列を渡す必要があります。 + +```vb +Dim custView As DataView = _ + New DataView(custDS.Tables("Customers"), "", _ + "CompanyName, ContactName", _ + DataViewRowState.CurrentRows) + +Dim foundRows() As DataRowView = _ + custView.FindRows(New object() {"The Cracker Box", "Liu Wong"}) + +If foundRows.Length = 0 Then + Console.WriteLine("No match found.") +Else + Dim myDRV As DataRowView + For Each myDRV In foundRows + Console.WriteLine("{0}, {1}", _ + myDRV("CompanyName").ToString(), myDRV("ContactName").ToString()) + Next +End If + +``` + +```csharp +DataView custView = new DataView(custDS.Tables["Customers"], "", + "CompanyName, ContactName", + DataViewRowState.CurrentRows); + +DataRowView[] foundRows = + custView.FindRows(new object[] {"The Cracker Box", "Liu Wong"}); + +if (foundRows.Length == 0) + Console.WriteLine("No match found."); +else + foreach (DataRowView myDRV in foundRows) + Console.WriteLine("{0}, {1}", myDRV["CompanyName"].ToString(), + myDRV["ContactName"].ToString()); +``` + +## 参照 + + + [DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md b/docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md new file mode 100644 index 00000000000..b38c5bb6bc6 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md @@ -0,0 +1,110 @@ +--- +title: "XML スキーマ (XSD) からの DataSet リレーションの生成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1c9a1413-c0d2-4447-88ba-9a2b0cbc0aa8 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XML スキーマ (XSD) からの DataSet リレーションの生成 + では、親子のリレーションを作成することにより、2 つ以上の列間の関連付けを行います。 XML スキーマ定義言語 \(XSD\) スキーマ内で **DataSet** のリレーションを表すには、次の 3 つの方法があります。 + +- 入れ子になった複合型を指定する方法 + +- **msdata:Relationship** 注釈を使用する方法 + +- **msdata:ConstraintOnly** 注釈を使用せずに **xs:keyref** を指定する方法 + +## 入れ子になった複合型 + スキーマ内で複数の複合型の定義が入れ子になっている場合は、それらの入れ子状の要素間に親子のリレーションシップがあります。 **OrderDetail** が **Order** 要素の子要素であることを示す XML スキーマのフラグメントを次に示します。 + +``` + + + + + + + + + +``` + + XML スキーマの割り当て処理によって、スキーマの入れ子になった複合型に対応する **DataSet** にテーブルが作成されます。 また、生成されたテーブルの親子列として使用される追加列も作成されます。 その親子列ではリレーションシップが指定されますが、主キー制約や外部キー制約の指定とは異なるため注意してください。 + +## msdata:Relationship 注釈 + **msdata:Relationship** 注釈を使用すると、入れ子になっていないスキーマの要素間の親子のリレーションシップを明示的に指定できます。 **Relationship** 要素の構造を示す例を次に示します。 + +``` + + +``` + + **msdata:Relationship** 注釈の属性は、リレーションシップに必要な **parentkey** 要素と **childkey** 要素、および属性と同様に親子のリレーションシップに必要な要素を示します。 割り当て処理では、その情報に基づいて **DataSet** にテーブルを作成し、それらのテーブル間に主キー\/外部キーのリレーションシップを作成します。 + + たとえば、同じレベルで \(入れ子にせずに\) **Order** 要素と **OrderDetail** 要素を指定するスキーマのフラグメントを次に示します。 スキーマに **msdata:Relationship** 注釈を指定すると、その 2 つの要素間に親子のリレーションシップが指定されます。 この場合、**msdata:Relationship** 注釈を使用してリレーションシップを明示的に指定する必要があります。 + +``` + + + + + + + + + + + + + + + + + + + + + + +``` + + 割り当て処理では、**Relationship** 要素を使用して、**DataSet** にある **Order** テーブルの **OrderNumber** 列と **OrderDetail** テーブルの **OrderNo** 列に親子のリレーションシップが生成されます。 割り当て処理で指定されるのはリレーションシップだけで、リレーショナル データベースにおける主キー制約や外部キー制約の場合とは異なり、該当する列の値に対する制約が自動的に指定されることはありません。 + +### このセクションの内容 + [入れ子になっているスキーマ要素間の暗黙的なリレーションの割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/map-implicit-relations-between-nested-schema-elements.md) + XML スキーマ内で要素が入れ子になっている場合に、**DataSet** 内に暗黙的に作成される制約とリレーションについて説明します。 + + [入れ子になっている要素に指定したリレーションシップの割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/map-relations-specified-for-nested-elements.md) + XML スキーマで入れ子になっている要素に対して、**DataSet** におけるリレーションを明示的に設定する方法について説明します。 + + [入れ子になっていない要素間のリレーションの指定](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/specify-relations-between-elements-with-no-nesting.md) + XML スキーマで入れ子になっていない要素間に、**DataSet** におけるリレーションを作成する方法について説明します。 + +### 関連項目 + [XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md) + XML スキーマ定義言語 \(XSD\) スキーマから作成された **DataSet** のリレーショナル構造 \(スキーマ\) について説明します。 + + [XML スキーマ \(XSD\) 制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md) + **DataSet** での UNIQUE 制約および外部キー制約の作成に使用する XML スキーマの要素について説明します。 + +## 参照 + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/generating-strongly-typed-datasets.md b/docs/framework/data/adonet/dataset-datatable-dataview/generating-strongly-typed-datasets.md new file mode 100644 index 00000000000..9aed990ffd4 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/generating-strongly-typed-datasets.md @@ -0,0 +1,108 @@ +--- +title: "厳密に型指定された DataSet の生成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 54333cbf-bb43-4314-a7d4-6dc1dd1c44b3 +caps.latest.revision: 5 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 5 +--- +# 厳密に型指定された DataSet の生成 +XML スキーマ定義言語 \(XSD\) 標準に準拠する XML スキーマがあれば、[!INCLUDE[winsdklong](../../../../../includes/winsdklong-md.md)] に付属の XSD.exe ツールを使用して、厳密に型指定された を生成できます。 + + \(データベース テーブルから xsd を作成するには、「」または「[Visual Studio でのデータセットの操作](http://msdn.microsoft.com/library/8bw9ksd6.aspx)」 を参照してください。\) + + XSD.exe ツールを使用して **DataSet** を生成する構文を次のコードで示します。 + +``` +xsd.exe /d /l:CS XSDSchemaFileName.xsd /eld /n:XSDSchema.Namespace +``` + + この構文では、`/d` ディレクティブが **DataSet** を生成することを知らせます。また、`/l:` は使用する言語 \(C\#、Visual Basic .NET など\) をツールに知らせます。 オプションの `/eld` ディレクティブを指定すると、生成された **DataSet** に対し、[!INCLUDE[linq_dataset](../../../../../includes/linq-dataset-md.md)] を使用してクエリを実行できます。このオプションは、`/d` オプションと組み合わせて指定します。 詳細については、「[Querying Typed DataSets](../../../../../docs/framework/data/adonet/querying-typed-datasets.md)」を参照してください。 オプションの `/n:` ディレクティブは、**XSDSchema.Namespace** と呼ばれる **DataSet** の名前空間も生成することをツールに知らせます。 コマンドの出力は XSDSchemaFileName.cs で、ADO.NET アプリケーションでコンパイルおよび使用できます。 生成されたコードをライブラリまたはモジュールとしてコンパイルできます。 + + C\# コンパイラ \(csc.exe\) を使用して、生成されたコードをライブラリとしてコンパイルする構文を次のコードで示します。 + +``` +csc.exe /t:library XSDSchemaFileName.cs /r:System.dll /r:System.Data.dll +``` + + `/t:` ディレクティブはライブラリとしてコンパイルすることをツールに知らせ、`/r:` ディレクティブはコンパイルに必要な依存ライブラリを指定します。 コマンドの出力は XSDSchemaFileName.dll で、`/r:` ディレクティブによる ADO.NET アプリケーションのコンパイル時にコンパイラに渡すことができます。 + + ADO.NET アプリケーションの XSD.exe に渡された名前空間にアクセスする構文を次のコードで示します。 + +```vb +Imports XSDSchema.Namespace + +``` + +```csharp +using XSDSchema.Namespace; +``` + + **CustomerDataSet** という名前の型指定された **DataSet** を使用して、**Northwind** データベースから顧客リストを読み込むコード サンプルを次に示します。 **Fill** メソッドを使用してデータが読み込まれると、例では、型指定された **CustomersRow** \(**DataRow**\) オブジェクトを使用して、**Customers** テーブルの各顧客をループします。 これにより、**DataColumnCollection** を経由せずに **CustomerID** 列に直接アクセスできます。 + +```vb +Dim customers As CustomerDataSet= New CustomerDataSet() +Dim adapter As SqlDataAdapter New SqlDataAdapter( _ + "SELECT * FROM dbo.Customers;", _ + "Data Source=(local);Integrated " & _ + "Security=SSPI;Initial Catalog=Northwind") + +adapter.Fill(customers, "Customers") + +Dim customerRow As CustomerDataSet.CustomersRow +For Each customerRow In customers.Customers + Console.WriteLine(customerRow.CustomerID) +Next + +``` + +```csharp +CustomerDataSet customers = new CustomerDataSet(); +SqlDataAdapter adapter = new SqlDataAdapter( + "SELECT * FROM dbo.Customers;", + "Data Source=(local);Integrated " + + "Security=SSPI;Initial Catalog=Northwind"); + +adapter.Fill(customers, "Customers"); + +foreach(CustomerDataSet.CustomersRow customerRow in customers.Customers) + Console.WriteLine(customerRow.CustomerID); +``` + + 例に使用された XML スキーマを次に示します。 + +``` + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [型指定された DataSet](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/typed-datasets.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/handling-dataset-events.md b/docs/framework/data/adonet/dataset-datatable-dataview/handling-dataset-events.md new file mode 100644 index 00000000000..8cbecb61246 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/handling-dataset-events.md @@ -0,0 +1,67 @@ +--- +title: "DataSet のイベント処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 54edefe0-bc38-419b-b486-3d8a0c356f13 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSet のイベント処理 + オブジェクトには、 という 3 つのイベントがあります。 + +## MergeFailed イベント + `DataSet` オブジェクトのイベントの中で最も使用頻度が高いイベントは、マージしようとしている `MergeFailed` オブジェクトのスキーマが競合する場合に発生する `DataSet` です。 この状況は、ターゲットとソースの が同じ主キー値を持ち、なおかつ、 プロパティが `true` に設定されている場合に発生します。 たとえば、マージ対象のテーブルの主キーの列が 2 つの `DataSet` オブジェクトのテーブル間で同じ場合、例外がスローされ、`MergeFailed` イベントが発生します。 イベントに渡される `MergeFailed` オブジェクトには、2 つの オブジェクト間のスキーマで発生した競合を示す `DataSet` プロパティ、および競合が発生したテーブルの名前を示す プロパティがあります。 + + 次のコードは、`MergeFailed` イベントのイベント ハンドラーを追加する方法を示しています。 + +```vb +AddHandler workDS.MergeFailed, New MergeFailedEventHandler( _ + AddressOf DataSetMergeFailed) + +Private Shared Sub DataSetMergeFailed( _ + sender As Object,args As MergeFailedEventArgs) + Console.WriteLine("Merge failed for table " & args.Table.TableName) + Console.WriteLine("Conflict = " & args.Conflict) +End Sub + +``` + +```csharp +workDS.MergeFailed += new MergeFailedEventHandler(DataSetMergeFailed); + +private static void DataSetMergeFailed( + object sender, MergeFailedEventArgs args) +{ + Console.WriteLine("Merge failed for table " + args.Table.TableName); + Console.WriteLine("Conflict = " + args.Conflict); +} +``` + +## Initialized イベント + イベントは、`DataSet` のコンストラクターによって `DataSet` の新しいインスタンスが初期化された後に発生します。 + + プロパティは、`true` の初期化が完了した場合に `DataSet` を返します。それ以外の場合は `false` を返します。 この値は、 の初期化を開始する `DataSet` メソッドによって が `false` に設定されます。 また、 の初期化を終了する `DataSet` メソッドによって `true` に設定されます。 これらのメソッドは、別のコンポーネントによって使用されている [!INCLUDE[vsprvs](../../../../../includes/vsprvs-md.md)] を初期化する目的で、`DataSet` のデザイン環境によって使用されます。 通常、コード内で直接使用することはありません。 + +## Disposed イベント + `DataSet` は、 メソッドおよび イベントの両方を公開する クラスから派生しています。イベントでは、コンポーネントが破棄されたことを伝えるイベントを待機するためのイベント ハンドラーを追加します。 の `DataSet` イベントを使用することで、 メソッドが呼び出されたときにコードを実行できます。 は、 で使用したリソースを解放します。 + +> [!NOTE] +> `DataSet` オブジェクトと `DataTable` オブジェクトは から継承し、リモート処理用の インターフェイスをサポートします。 これらは、リモート処理ができる唯一の ADO.NET オブジェクトです。 詳細については、「[Remote Objects](http://msdn.microsoft.com/ja-jp/515686e6-0a8d-42f7-8188-73abede57c58)」を参照してください。 + + `DataSet` の使用時に使用できるその他のイベントについては、「[DataTable イベントの処理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/handling-datatable-events.md)」および「[DataAdapter のイベント処理](../../../../../docs/framework/data/adonet/handling-dataadapter-events.md)」を参照してください。 + +## 参照 + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [データの検証](../Topic/Validating%20Data.md) + [ADO.NET でのデータの取得および変更](../../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + [ADO.NET のマネージ プロバイダーと DataSet デベロッパー センター](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/handling-datatable-events.md b/docs/framework/data/adonet/dataset-datatable-dataview/handling-datatable-events.md new file mode 100644 index 00000000000..1624a428a8d --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/handling-datatable-events.md @@ -0,0 +1,90 @@ +--- +title: "DataTable イベントの処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 62f404a5-13ea-4b93-a29f-55b74a16c9d3 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTable イベントの処理 + オブジェクトは、アプリケーションが処理できる一連のイベントを提供します。 `DataTable` のイベントを次の表に示します。 + +|Event|説明| +|-----------|--------| +||`DataTable` の メソッドが呼び出された後に発生します。 このイベントは、主にデザイン時のシナリオをサポートすることを目的としています。| +|| で値が正常に変更された後に発生します。| +||`DataColumn` に対して値が送信されたときに発生します。| +||`DataColumn` 値または `DataTable` の が正常に変更された後で発生します。| +||`DataColumn` 値または `DataTable` の `DataRow` の `RowState` に対して変更が送信されたときに発生します。| +||`DataTable` の `DataRow` が `Deleted` としてマークされた後に発生します。| +||`DataTable` の `DataRow` が `Deleted` としてマークされる前に発生します。| +||`DataTable` の メソッドがすべての `DataRow` を正常にクリアした後で発生します。| +||`Clear` メソッドが呼び出された後、`Clear` 操作が開始される前に発生します。| +||`DataTable` の `NewRow` メソッドの呼び出しにより、新しい `DataRow` が作成された後で発生します。| +||`DataTable` が破棄 \(`Disposed`\) されたときに発生します。 このプロパティは、 から継承されています。| + +> [!NOTE] +> 行の追加または削除を行う操作の多くは、`ColumnChanged` イベントも `ColumnChanging` イベントも生成しません。 ただし、`ReadXml` メソッドでは、`XmlReadMode` が `DiffGram` または `Auto` \(読み込む XML ドキュメントが `DiffGram` の場合\) に設定されていない限り、`ColumnChanged` イベントおよび `ColumnChanging` イベントが生成されます。 + +> [!WARNING] +> `RowChanged` イベントの生成元の `DataSet` でデータが変更されると、データが破損する可能性があります。 このようなデータの破損が起きた場合、例外は発生しません。 + +## その他の関連イベント + プロパティは インスタンスを保持します。 クラスは、 イベントを公開します。 このイベントは、`ConstraintCollection` に対して制約の追加、変更、または削除が実行されたときに発生します。 + + プロパティは インスタンスを保持します。 `DataColumnCollection` クラスは、 イベントを公開します。 このイベントは、`DataColumn` が追加、変更、または `DataColumnCollection` から削除されたときに発生します。 イベントの発生を伴う変更には、名前の変更、型の変更、式の変更、列の序数位置の変更などがあります。 + + プロパティは インスタンスを保持します。 `DataTableCollection` クラスは、`CollectionChanged` イベントと `CollectionChanging` イベントの両方を公開します。 これらのイベントは、`DataSet` に対して、`DataTable` の追加、変更、または削除が実行されたときに発生します。 + + `DataRows` への変更によって、関連する のイベントがトリガーされる場合もあります。 `DataView` クラスは、`DataColumn` 値が変更されたとき、または、ビューの構成や並べ替え順が変更されたときに発生する イベントを公開します。 クラスは、関連する `DataColumn` 値が変更されたときに発生する イベントを公開します。 + +## 操作の順序 + `DataRow` が追加、変更、または削除されたときに発生する操作の順序について説明します。 + +1. 提示されたレコードを作成し、変更を適用します。 + +2. 式以外の列の制約をチェックします。 + +3. 適宜 `RowChanging` イベントまたは `RowDeleting` イベントを発生させます。 + +4. 提示されたレコードを現在のレコードとして設定します。 + +5. 関連するインデックスをすべて更新します。 + +6. 関連する `DataView` オブジェクトの `ListChanged` イベントおよび関連する `DataRowView` オブジェクトの `PropertyChanged` イベントを発生させます。 + +7. すべての式列を評価します。ただし、これらの列に対する制約のチェックは、この段階では行われません。 + +8. 式列の評価によって影響を受ける、関連する `DataView` オブジェクトの `ListChanged` イベントおよび関連する `DataRowView` オブジェクトの `PropertyChanged` イベントを発生させます。 + +9. 適宜 `RowChanged` イベントまたは `RowDeleted` イベントを発生させます。 + +10. 式列の制約をチェックします。 + +> [!NOTE] +> 式列に対する変更で `DataTable` のイベントが発生することはありません。 式列に対する変更で発生するのは、`DataView` と `DataRowView` のイベントだけです。 式列には他の複数の列に対する依存関係が存在することもあるため、1 回の `DataRow` 操作で複数回、評価される場合もあります。 イベントは式が評価されるたびに発生するため、式列が変更された場合、1 回の `DataRow` 操作で複数の `ListChanged` イベントおよび `PropertyChanged` イベントが発生し、同じ式列に対して複数のイベントが発生する場合もあります。 + +> [!WARNING] +> を `RowChanged` イベント ハンドラー内でスローしないでください。 が `DataTable` の `RowChanged` イベント内でスローされると、`DataTable` が破損します。 + +### 例 + 次の例では、`RowChanged`、`RowChanging`、`RowDeleted`、`RowDeleting`、`ColumnChanged`、`ColumnChanging`、`TableNewRow`、`TableCleared`、`TableClearing` の各イベントについてイベント ハンドラーを作成しています。 イベントが発生すると、各イベント ハンドラーによって、出力結果がコンソール ウィンドウに表示されます。 + + [!code-csharp[DataWorks DataTable.Events#1](../../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks DataTable.Events/CS/source.cs#1)] + [!code-vb[DataWorks DataTable.Events#1](../../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks DataTable.Events/VB/source.vb#1)] + +## 参照 + [DataTable 内のデータの操作](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md) + [DataAdapter のイベント処理](../../../../../docs/framework/data/adonet/handling-dataadapter-events.md) + [DataSet のイベント処理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/handling-dataset-events.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/handling-dataview-events.md b/docs/framework/data/adonet/dataset-datatable-dataview/handling-dataview-events.md new file mode 100644 index 00000000000..c3ad9305412 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/handling-dataview-events.md @@ -0,0 +1,63 @@ +--- +title: "DataView イベントの処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e5675663-fc91-4e0d-87a9-481b25b64c0f +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataView イベントの処理 + イベントを使用して、ビューが更新されているかどうかを確認できます。 基になるテーブルの行の追加、削除、または変更や、このスキーマの列の追加または削除、親子のリレーションシップの変更など、これらの更新を行うとこのイベントが発生します。 さらに、現在表示されている行のリストが新しい並べ替え順序またはフィルターの適用により大幅に変更された場合、**ListChanged** イベントはそのことも通知します。 + + **ListChanged** イベントは、 名前空間の **ListChangedEventHandler** デリゲートを実装し、 オブジェクトを入力として受け取ります。 発生した変更の内容を確認するには、**ListChangedEventArgs** オブジェクトの **ListChangedType** プロパティの 列挙値を使用します。 行の追加、削除、または移動による変更の場合、追加された行または移動された行の新しいインデックスと削除された行の古いインデックスには、**ListChangedEventArgs** オブジェクトの **NewIndex** プロパティを使用してアクセスできます。 移動された行の場合、移動前の古いインデックスにアクセスするには **ListChangedEventArgs** オブジェクトの **OldIndex** プロパティを使用します。 + + **DataViewManager** は、さらにテーブルが追加または削除された場合に、または基になる **DataSet** の **Relations** コレクションが変更された場合に、そのことを通知するために **ListChanged** イベントを公開します。 + + **ListChanged** イベント ハンドラーを追加する方法を次のコード サンプルに示します。 + +```vb +AddHandler custView.ListChanged, _ + New System.ComponentModel.ListChangedEventHandler( _ + AddressOf OnListChanged) + +Private Shared Sub OnListChanged( _ + sender As Object, args As System.ComponentModel.ListChangedEventArgs) + Console.WriteLine("ListChanged:") + Console.WriteLine(vbTab & " Type = " & _ + System.Enum.GetName(args.ListChangedType.GetType(), _ + args.ListChangedType)) + Console.WriteLine(vbTab & "OldIndex = " & args.OldIndex) + Console.WriteLine(vbTab & "NewIndex = " & args.NewIndex) +End Sub + +``` + +```csharp +custView.ListChanged += new + System.ComponentModel.ListChangedEventHandler(OnListChanged); + +protected static void OnListChanged(object sender, + System.ComponentModel.ListChangedEventArgs args) +{ + Console.WriteLine("ListChanged:"); + Console.WriteLine("\t Type = " + args.ListChangedType); + Console.WriteLine("\tOldIndex = " + args.OldIndex); + Console.WriteLine("\tNewIndex = " + args.NewIndex); +} +``` + +## 参照 + + + [DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/index.md b/docs/framework/data/adonet/dataset-datatable-dataview/index.md new file mode 100644 index 00000000000..f339c24f6e3 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/index.md @@ -0,0 +1,90 @@ +--- +title: "DataSets、DataTables、および DataViews | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6d4c4b69-8919-4224-8a65-6cca1c61b48f +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSets、DataTables、および DataViews +ADO.NET はメモリ常駐型のデータ表現であり、含まれているデータ ソースとは関係なく、一貫性のあるリレーショナル プログラミング モデルを提供します。 とは、テーブル間のリレーションシップだけでなく、包括するテーブル、整列するテーブル、およびデータを制約するテーブルを含むデータのセットを表します。 + + にはさまざまな使用方法があり、単独または組み合わせで使用できます。 次の操作を行うことができます。 + +- プログラムを使用して 内に 、および を作成し、テーブルにデータを設定できます。 + +- `DataAdapter` を使用して、既存のリレーショナル データ ソースから取得したデータのテーブルで を作成できます。 + +- XML を使用して、 の内容を読み込んだり、永続化したりできます。 詳細については、「[DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md)」を参照してください。 + + 厳密に型指定された も XML Web サービスを使用して転送できます。 は、XML Web サービスを使用してデータの転送が理想的に行えるように設計されています。 XML Web サービスの概要については、「[XML Web Services Overview](http://msdn.microsoft.com/ja-jp/9db0c7b8-bca6-462b-9be5-f5f9a7f05a4d)」を参照してください。 XML Web サービスから を使用する例については、「[XML Web サービスからの DataSet の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/consuming-a-dataset-from-an-xml-web-service.md)」を参照してください。 + +## このセクションの内容 + [DataSet の作成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/creating-a-dataset.md) + のインスタンス作成に使用する構文について説明します。 + + [DataSet への DataTable の追加](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/adding-a-datatable-to-a-dataset.md) + テーブルと列の作成方法および への追加方法について説明します。 + + [DataRelation の追加](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/adding-datarelations.md) + のテーブル間のリレーションを作成する方法について説明します。 + + [DataRelation の移動](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/navigating-datarelations.md) + のテーブル間のリレーションを使用して、親子のリレーションシップに基づく子または親の行を返す方法について説明します。 + + [DataSet の内容のマージ](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/merging-dataset-contents.md) + の各配列の内容を別の にマージする方法について説明します。 + + [DataSet の内容のコピー](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/copying-dataset-contents.md) + 指定されたデータだけでなく、スキーマを持つことができる のコピーを作成する方法について説明します。 + + [DataSet のイベント処理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/handling-dataset-events.md) + のイベントおよびその使用方法について説明します。 + + [型指定された DataSet](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/typed-datasets.md) + 型指定された の概要と、その作成および使用方法について説明します。 + + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + の作成方法、スキーマの定義方法、およびデータの操作方法について説明します。 + + [DataTableReaders](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatablereaders.md) + の作成方法および使用方法について説明します。 + + [DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md) + `DataViews` の作成方法および操作方法、および イベントの操作方法について説明します。 + + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + がデータ ソースとして XML と対話する方法を、 の内容を XML データとして読み込んで永続化する方法と共に説明します。 + + [XML Web サービスからの DataSet の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/consuming-a-dataset-from-an-xml-web-service.md) + を使用してデータを転送する XML Web サービスを作成する方法について説明します。 + +## 関連項目 + [ADO.NET の新機能](../../../../../docs/framework/data/adonet/whats-new.md) + ADO.NET の新機能について説明します。 + + [ADO.NET の概要](../../../../../docs/framework/data/adonet/ado-net-overview.md) + ADO.NET のデザインとコンポーネントを紹介します。 + + [DataAdapter からの DataSet の読み込み](../../../../../docs/framework/data/adonet/populating-a-dataset-from-a-dataadapter.md) + **DataSet** にデータ ソースのデータを読み込む方法について説明します。 + + [DataAdapter によるデータ ソースの更新](../../../../../docs/framework/data/adonet/updating-data-sources-with-dataadapters.md) + **DataSet** のデータに加えた変更をデータ ソースに反映する方法について説明します。 + + [DataSet への既存の制約の追加](../../../../../docs/framework/data/adonet/adding-existing-constraints-to-a-dataset.md) + **DataSet** にデータ ソースの主キー情報を設定する方法について説明します。 + +## 参照 + [ADO.NET](../../../../../docs/framework/data/adonet/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/inference-limitations.md b/docs/framework/data/adonet/dataset-datatable-dataview/inference-limitations.md new file mode 100644 index 00000000000..223d3d936b7 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/inference-limitations.md @@ -0,0 +1,70 @@ +--- +title: "推論の制限事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 78517994-5d57-44f8-9d20-38812977de09 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 推論の制限事項 +各ドキュメントに含まれている XML 要素によっては、XML から のスキーマを推論するプロセスにより、異なるスキーマが生成される可能性があります。 たとえば、次のような XML ドキュメントがあるとします。 + + Document1: + +``` + + Text1 + Text2 + +``` + + Document2: + +``` + + Text1 + +``` + + 推論プロセスでは、"Document1" については、"DocumentElement" という名前の **DataSet** と "Element1" という名前のテーブルが作成されます。これは、"Element1" が繰り返し出現する要素であるためです。 + + **DataSet:** DocumentElement + + **Table:** Element1 + +|Element1\_Text| +|--------------------| +|Text1| +|Text2| + + これに対して、"Document2" については、"NewDataSet" という名前の **DataSet** と "DocumentElement" という名前のテーブルが生成されます。この場合、属性も子要素も持たない "Element1" は列として推論されます。 + + **DataSet:** NewDataSet + + **Table:** DocumentElement + +|Element1| +|--------------| +|Text1| + + これらの 2 つの XML ドキュメントは、同じスキーマを生成することを意図して記述されていますが、推論プロセスでは、各ドキュメントに含まれる要素を基にまったく異なるスキーマが生成されてしまいます。 + + XML ドキュメントからスキーマを生成するときに生じる可能性のあるこのような矛盾を避けるため、XML から **DataSet** を読み込むときは、XSD \(XML スキーマ定義言語\) または XDR \(XML\-Data Reduced\) を使用して、スキーマを明示的に指定することをお勧めします。 XML スキーマを使用して **DataSet** スキーマを明示的に指定する方法については、「[XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md)」を参照してください。 + +## 参照 + [XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md) + [XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) + [XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md) + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/inferring-columns.md b/docs/framework/data/adonet/dataset-datatable-dataview/inferring-columns.md new file mode 100644 index 00000000000..90e4b8b97bc --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/inferring-columns.md @@ -0,0 +1,81 @@ +--- +title: "列の推論 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0e022699-c922-454c-93e2-957dd7e7247a +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 列の推論 +ADO.NET は、 のテーブルとして推論する要素を、XML ドキュメントから決定した後、それらのテーブルの列を推論します。 ADO.NET 2.0 では、各 **simpleType** 要素の厳密に型指定されたデータ型を推論する新しいスキーマ推論エンジンが導入されました。 以前のバージョンでは、推論される **simpleType** 要素のデータ型は、常に **xsd:string** でした。 + +## 移行および下位互換性 + **ReadXml** メソッドは、**InferSchema** 型の引数を取ります。 この引数を使用することにより、以前のバージョンと互換性のある推論方法を指定することができます。 **InferSchema** 列挙体で使用できる値を、次の表に示します。 + + + 単純型を として常に推論することで下位互換性を提供します。 + + + 厳密に型指定されたデータ型を推論します。 で使用した場合、例外をスローします。 + + + インライン スキーマを無視し、データを既存の スキーマに読み取ります。 + +## 属性 + 「[テーブルの推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-tables.md)」で説明したとおり、属性を持つ要素は、テーブルとして推論されます。 その要素の属性は、そのテーブルの列として推論されます。 スキーマが XML に書き戻される場合に、列の名前が確実に属性として書き込まれるように、推論された列の **ColumnMapping** プロパティは **MappingType.Attribute** に設定されます。 属性の値は、テーブルの行に格納されます。 たとえば、次のような XML があるとします。 + +``` + + + +``` + + 推論プロセスにより、**attr1** および **attr2** という 2 つの列を持つ **Element1** という名前のテーブルが生成されます。 2 つの列の **ColumnMapping** プロパティは、**MappingType.Attribute** に設定されます。 + + **DataSet:** DocumentElement + + **Table:** Element1 + +|attr1|attr2| +|-----------|-----------| +|value1|value2| + +## 属性または子の要素を持たない要素 + 要素に子の要素または属性がない場合、その要素は列として推論されます。 列の **ColumnMapping** プロパティは、**MappingType.Element** に設定されます。 子の要素のテキストは、テーブルの行に格納されます。 たとえば、次のような XML があるとします。 + +``` + + + Text1 + Text2 + + +``` + + 推論プロセスにより、**ChildElement1** および **ChildElement2** という 2 つの列を持つ **Element1** という名前のテーブルが生成されます。 2 つの列の **ColumnMapping** プロパティは、**MappingType.Element** に設定されます。 + + **DataSet:** DocumentElement + + **Table:** Element1 + +|ChildElement1|ChildElement2| +|-------------------|-------------------| +|Text1|Text2| + +## 参照 + [XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md) + [XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) + [XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md) + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md b/docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md new file mode 100644 index 00000000000..1013ef45f77 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md @@ -0,0 +1,58 @@ +--- +title: "XML からの DataSet リレーショナル構造の推論 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cd2f41c6-6785-420e-aa43-3ceb0bdccdce +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XML からの DataSet リレーショナル構造の推論 + のリレーショナル構造 \(スキーマ\) は、テーブル、列、制約、およびリレーションで構成されます。 XML から を読み込むときには、事前定義されたスキーマを使用するか、または読み込む対象の XML から明示的にまたは推論によってスキーマを作成できます。 XML から のスキーマおよび内容を読み込む方法の詳細については、「[XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md)」および「[XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md)」を参照してください。 + + のスキーマを XML から作成する場合は、XML スキーマ定義言語 \(「[XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md)」を参照\) または XDR \(XML\-Data Reduced\) を使用してスキーマを明示的に指定することをお勧めします。 XML で利用できる XML スキーマまたは XDR スキーマがない場合は、XML の要素および属性の構造から のスキーマを推論できます。 + + ここでは、XML の要素と属性およびその構造を示し、 スキーマの推論に関する規則について説明します。また、その規則に基づいて推論した スキーマも示します。 + + XML ドキュメント内のすべての属性を推論プロセスの対象には含めないでください。 名前空間で修飾された属性には、XML ドキュメントにとっては重要ですが、 スキーマにとっては不要なメタデータが含まれていることがあります。 を使用して、推論プロセスの間に無視する特定の名前空間を指定できます。 詳細については、「[XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md)」を参照してください。 + +## このセクションの内容 + [DataSet スキーマの推論プロセスの概要](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/summary-of-the-dataset-schema-inference-process.md) + XML から のスキーマを推論するときの規則について概要を示します。 + + [テーブルの推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-tables.md) + のテーブルとして推論される XML の要素について説明します。 + + [列の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-columns.md) + テーブルの列として推論される XML の要素と属性について説明します。 + + [リレーションシップの推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-relationships.md) + 推論された入れ子状のテーブルに対して作成される オブジェクトおよび オブジェクトについて説明します。 + + [要素のテキストの推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-element-text.md) + XML 要素のテキストに対して作成される列について、および XML 要素のテキストが無視される場合について説明します。 + + [推論の制限事項](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inference-limitations.md) + スキーマ推論の制限事項について説明します。 + +## 関連項目 + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + オブジェクトと XML データとの対話について説明します。 + + [XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md) + XML スキーマ定義言語 \(XSD\) スキーマから作成された のリレーショナル構造 \(スキーマ\) について説明します。 + + [ADO.NET の概要](../../../../../docs/framework/data/adonet/ado-net-overview.md) + ADO.NET のアーキテクチャとコンポーネントについて、また ADO.NET を使用して既存のデータ ソースにアクセスしたり、アプリケーション データを管理する方法について説明します。 + +## 参照 + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/inferring-element-text.md b/docs/framework/data/adonet/dataset-datatable-dataview/inferring-element-text.md new file mode 100644 index 00000000000..6ec29f705fe --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/inferring-element-text.md @@ -0,0 +1,66 @@ +--- +title: "要素のテキストの推論 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 789799e5-716f-459f-a168-76c5cf22178b +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 要素のテキストの推論 +要素にテキストは含まれているが、テーブルとして推論される \(属性を持つ要素または繰り返し出現する要素などの\) 子の要素がない場合は、**TableName\_Text** という名前の新しい列が、要素に対して推論されるテーブルに追加されます。 要素に含まれているテキストはテーブルの行に追加され、新しい列に格納されます。 新しい列の **ColumnMapping** プロパティは、**MappingType.SimpleContent** に設定されます。 + + たとえば、次のような XML があるとします。 + +``` + + Text1 + +``` + + 推論プロセスにより、**attr1** および **Element1\_Text** という 2 つの列を持つ **Element1** という名前のテーブルが生成されます。 **attr1** 列の **ColumnMapping** プロパティは、**MappingType.Attribute** に設定されます。 **Element1\_Text** 列の **ColumnMapping** プロパティは、**MappingType.SimpleContent** に設定されます。 + + **DataSet:** DocumentElement + + **Table:** Element1 + +|attr1|Element1\_Text| +|-----------|--------------------| +|value1|Text1| + + 要素にテキストだけでなく、テキストを含む子の要素も含まれている場合は、その要素に含まれているテキストを格納するための列はテーブルに追加されません。 要素に含まれるテキストは無視されますが、子の要素のテキストはテーブルの行に追加されます。 たとえば、次のような XML があるとします。 + +``` + + Text1 + Text2 + Text3 + +``` + + 推論プロセスにより、**ChildElement1** という 1 つの列を持つ **Element1** という名前のテーブルが生成されます。 **ChildElement1** 要素のテキストは、テーブルの行に追加されます。 その他のテキストは無視されます。 **ChildElement1** 列の **ColumnMapping** プロパティは、**MappingType.Element** に設定されます。 + + **DataSet:** DocumentElement + + **Table:** Element1 + +|ChildElement1| +|-------------------| +|Text2| + +## 参照 + [XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md) + [XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) + [XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md) + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/inferring-relationships.md b/docs/framework/data/adonet/dataset-datatable-dataview/inferring-relationships.md new file mode 100644 index 00000000000..2c428700d83 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/inferring-relationships.md @@ -0,0 +1,86 @@ +--- +title: "リレーションシップの推論 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8fa86a9d-6545-4a9d-b1f5-58d9742179c7 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# リレーションシップの推論 +テーブルとして推論される要素に、同じくテーブルとして推論される子の要素が含まれている場合には、2 つのテーブル間に が作成されます。 この場合、**ParentTableName\_Id** という名前の新しい列が、親の要素に対して作成されたテーブルと、子の要素に対して作成されたテーブルの両方に追加されます。 この ID 列の **ColumnMapping** プロパティは、**MappingType.Hidden** に設定されます。 この列が、親テーブルの自動的にインクリメントされる主キーとなり、2 つのテーブル間の **DataRelation** で使用されます。 推論される他のすべての列のデータ型は **System.String** になりますが、追加される ID 列のデータ型は **System.Int32** になります。 親テーブルおよび子テーブルの両方に追加されたこの新しい列を使用して、**DeleteRule** \= **Cascade** である も作成されます。 + + たとえば、次のような XML があるとします。 + +``` + + + + Text2 + + +``` + + 推論プロセスにより、**Element1** および **ChildElement1** という名前の 2 つのテーブルが生成されます。 + + **Element1** テーブルには、**Element1\_Id** および **ChildElement2** という名前の 2 つの列があります。 **Element1\_Id** 列の **ColumnMapping** プロパティは、**MappingType.Hidden** に設定されます。 **ChildElement2** 列の **ColumnMapping** プロパティは、**MappingType.Element** に設定されます。 **Element1\_Id** 列は、**Element1** テーブルの主キーとして設定されます。 + + **ChildElement1** テーブルには、**attr1**、**attr2**、および **Element1\_Id** という名前の 3 つの列があります。 **attr1** 列および **attr2** 列の **ColumnMapping** プロパティは、**MappingType.Attribute** に設定されます。 **Element1\_Id** 列の **ColumnMapping** プロパティは、**MappingType.Hidden** に設定されます。 + + 2 つのテーブルの **Element1\_Id** 列を使用して、**DataRelation** および **ForeignKeyConstraint** が作成されます。 + + **DataSet:** DocumentElement + + **Table:** Element1 + +|Element1\_Id|ChildElement2| +|------------------|-------------------| +|0|Text2| + + **Table:** ChildElement1 + +|attr1|attr2|Element1\_Id| +|-----------|-----------|------------------| +|value1|value2|0| + + **DataRelation:** Element1\_ChildElement1 + + **ParentTable:** Element1 + + **ParentColumn:** Element1\_Id + + **ChildTable:** ChildElement1 + + **ChildColumn:** Element1\_Id + + **Nested:** True + + **ForeignKeyConstraint:** Element1\_ChildElement1 + + **Column:** Element1\_Id + + **ParentTable:** Element1 + + **ChildTable:** ChildElement1 + + **DeleteRule:** Cascade + + **AcceptRejectRule:** None + +## 参照 + [XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md) + [XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) + [XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md) + [DataRelation の入れ子化](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/nesting-datarelations.md) + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/inferring-tables.md b/docs/framework/data/adonet/dataset-datatable-dataview/inferring-tables.md new file mode 100644 index 00000000000..6ea4893ef77 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/inferring-tables.md @@ -0,0 +1,134 @@ +--- +title: "テーブルの推論 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 74a288d4-b8e9-4f1a-b2cd-10df92c1ed1f +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# テーブルの推論 +XML ドキュメントから のスキーマを推論するときには、ADO.NET では、テーブルを表す XML 要素を最初に決定します。 次に示すいくつかの XML 構造は、**DataSet** スキーマのテーブルとして推論されます。 + +- 属性を持つ要素 + +- 子要素を持つ要素 + +- 繰り返し出現する要素 + +## 属性を持つ要素 + 要素に属性が指定されている場合は、それらの要素はテーブルとして推論されます。 たとえば、次のような XML があるとします。 + +``` + + + Text1 + +``` + + 推論プロセスにより、"Element1" という名前のテーブルが生成されます。 + + **DataSet:** DocumentElement + + **Table:** Element1 + +|attr1|Element1\_Text| +|-----------|--------------------| +|value1|| +|value2|Text1| + +## 子要素を持つ要素 + 子要素を持つ要素は、テーブルとして推論されます。 たとえば、次のような XML があるとします。 + +``` + + + Text1 + + +``` + + 推論プロセスにより、"Element1" という名前のテーブルが生成されます。 + + **DataSet:** DocumentElement + + **Table:** Element1 + +|ChildElement1| +|-------------------| +|Text1| + + ドキュメント \(ルート\) 要素に属性または子要素があり、それらが列として推論される場合には、そのドキュメント要素はテーブルとして推論されます。 ドキュメント要素の属性や子要素が列として推論されない場合には、そのドキュメント要素は **DataSet** として推論されます。 たとえば、次のような XML があるとします。 + +``` + + Text1 + Text2 + +``` + + 推論プロセスにより、"DocumentElement" という名前のテーブルが生成されます。 + + **DataSet:** NewDataSet + + **Table:** DocumentElement + +|Element1|Element2| +|--------------|--------------| +|Text1|Text2| + + または、次のような XML があるとします。 + +``` + + + +``` + + 推論プロセスにより、"Element1" という名前のテーブルを含む "DocumentElement" という名前の **DataSet** が生成されます。 + + **DataSet:** DocumentElement + + **Table:** Element1 + +|attr1|attr2| +|-----------|-----------| +|value1|value2| + +## 繰り返し出現する要素 + 繰り返し出現する要素は、単一のテーブルとして推論されます。 たとえば、次のような XML があるとします。 + +``` + + Text1 + Text2 + +``` + + 推論プロセスにより、"Element1" という名前のテーブルが生成されます。 + + **DataSet:** DocumentElement + + **Table:** Element1 + +|Element1\_Text| +|--------------------| +|Text1| +|Text2| + +## 参照 + [XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md) + [XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) + [XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md) + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md b/docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md new file mode 100644 index 00000000000..706337e9501 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md @@ -0,0 +1,130 @@ +--- +title: "XML からの DataSet の読み込み | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 49c083b7-a5ed-41cf-aabc-5aaba96f00e6 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XML からの DataSet の読み込み +ADO.NET では、XML ストリームまたは XML ドキュメントから の内容を作成できます。 また、.NET Framework では、XML から読み込まれる情報と のスキーマまたはリレーショナル構造の作成方法を柔軟に変更できます。 + + に XML のデータを格納するには、 オブジェクトの **ReadXml** メソッドを使用します。 **ReadXml** メソッドは、ファイル、ストリーム、または **XmlReader** からデータを読み取り、XML のソースを引数として受け取ります。また、**XmlReadMode** 引数を受け取ることもあります。 **XmlReader** に関する詳細については、「[NIB: Reading XML Data with XmlTextReader](http://msdn.microsoft.com/ja-jp/762c069b-b50c-41b8-936e-39eacfb0d540)」を参照してください。**ReadXml** メソッドは、XML ストリームまたは XML ドキュメントの内容を読み取り、 にデータを読み込みます。 また、指定されている **XmlReadMode** と、リレーショナル スキーマが既に存在しているかどうかに応じて、 のリレーショナル スキーマも作成します。 + + **XmlReadMode** 引数のオプションを次の表に示します。 + +|オプション|説明| +|-----------|--------| +|**Auto**|既定値です。 XML を調べ、次の順序で最適なオプションを選択します。

- XML が DiffGram の場合は、**DiffGram** が使用されます。
- にスキーマが含まれている場合、または XML にインライン スキーマが含まれている場合は、**ReadSchema** が使用されます。
- にスキーマが含まれておらず、XML にインライン スキーマが含まれていない場合は、**InferSchema** が使用されます。

読み取られる XML の形式が判明している場合は、パフォーマンスを最大限に引き出すため、既定値 **Auto** を使用する代わりに、**XmlReadMode** を明示的に設定することをお勧めします。| +|**ReadSchema**|インライン スキーマを読み取り、データとスキーマを読み込みます。

に既にスキーマが含まれている場合には、読み取るインライン スキーマの新しいテーブルが の既存のスキーマに追加されます。 インライン スキーマのテーブルが既に に存在している場合には、例外がスローされます。 **XmlReadMode.ReadSchema** を使用して既存のテーブルのスキーマを修正できません。

にスキーマが含まれておらず、インライン スキーマが存在しない場合には、データは読み取られません。

インライン スキーマを定義するには、XML スキーマ定義言語 \(XSD\) スキーマを使用します。 XML スキーマとしてのインライン スキーマを書き込む方法の詳細については、「[XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md)」を参照してください。| +|**IgnoreSchema**|インライン スキーマを無視し、データを既存の スキーマへ読み込みます。 既存のスキーマに一致しないデータは破棄されます。 にスキーマがない場合には、データは読み込まれません。

データが DiffGram の場合、**IgnoreSchema** は **DiffGram** と同様に機能します。| +|**InferSchema**|インライン スキーマを無視し、XML データ構造ごとにスキーマを推論し、データを読み込みます。

に既にスキーマが含まれている場合、既存のテーブルに列を追加することによって現在のスキーマが拡張されます。 既存のテーブルが存在しない場合、余分なテーブルは追加されません。 推論されたテーブルが他の名前空間に既に存在している場合、または推論された列と既存の列が矛盾する場合には、例外がスローされます。

**ReadXmlSchema** による XML ドキュメントからのスキーマの推論方法の詳細については、「[XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md)」を参照してください。| +|**DiffGram**|DiffGram を読み取り、現在のスキーマへデータを追加します。 **DiffGram** は、既存の行に対し、固有の識別子の値が一致する新しい行を結合します。 このトピックの最後にある「XML のデータの結合」の説明を参照してください。 DiffGrams の詳細については、「[DiffGram](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/diffgrams.md)」を参照してください。| +|**Fragment**|ストリームの終わりに達するまで、複数 XML フラグメントの読み取りを続行します。 スキーマに一致するフラグメントが適切なテーブルに追加されます。 スキーマに一致しないフラグメントは破棄されます。| + +> [!NOTE] +> XML ドキュメントにアクセスするためのオブジェクトである **ReadXml** に **XmlReader** を渡すと、**ReadXml** は次の要素ノードを読み取り、このノードをルート要素として処理し、このノードの終わりに到達するまで読み取ります。 ただし **XmlReadMode.Fragment** を指定する場合にはこれは該当しません。 + +## DTD エンティティ + ドキュメント型定義 \(DTD\) スキーマで定義されているエンティティが、XML に含まれている場合に、ファイル名、ストリーム、または非検証 **XmlReader** を **ReadXml** に渡して を読み込むと、例外がスローされます。 この方法の代わりに、**EntityHandling** を **EntityHandling.ExpandEntities** に設定して **XmlValidatingReader** を作成し、**XmlValidatingReader** を **ReadXml** へ渡してください。 **XmlValidatingReader** によってエンティティが展開された後で、 がこのエンティティを読み取ります。 + + XML ストリームから を読み込むコード サンプルを次に示します。 1 番目の例では、ファイル名が **ReadXml** メソッドに渡されます。 2 番目の例では、XML が含まれている文字列が によって読み込まれます。 + +```vb +Dim dataSet As DataSet = New DataSet +dataSet.ReadXml("input.xml", XmlReadMode.ReadSchema) +``` + +```csharp +DataSet dataSet = new DataSet(); +dataSet.ReadXml("input.xml", XmlReadMode.ReadSchema); +``` + +```vb +Dim dataSet As DataSet = New DataSet +Dim dataTable As DataTable = New DataTable("table1") +dataTable.Columns.Add("col1", Type.GetType("System.String")) +dataSet.Tables.Add(dataTable) + +Dim xmlData As String = "Value1Value2" + +Dim xmlSR As System.IO.StringReader = New System.IO.StringReader(xmlData) + +dataSet.ReadXml(xmlSR, XmlReadMode.IgnoreSchema) +``` + +```csharp +DataSet dataSet = new DataSet(); +DataTable dataTable = new DataTable("table1"); +dataTable.Columns.Add("col1", typeof(string)); +dataSet.Tables.Add(dataTable); + +string xmlData = "Value1Value2"; + +System.IO.StringReader xmlSR = new System.IO.StringReader(xmlData); + +dataSet.ReadXml(xmlSR, XmlReadMode.IgnoreSchema); +``` + +> [!NOTE] +> 非常に大きなファイルを読み込む際に **ReadXml** を呼び出すと、パフォーマンスが低下することがあります。 大きなファイルを読み込む場合に、**ReadXml** のパフォーマンスを最大にするには、 のテーブルごとに メソッドを呼び出し、その後で **ReadXml** を呼び出します。 最後に、次の例に示すように、 のテーブルごとに を呼び出します。 + +```vb +Dim dataTable As DataTable + +For Each dataTable In dataSet.Tables + dataTable.BeginLoadData() +Next + +dataSet.ReadXml("file.xml") + +For Each dataTable in dataSet.Tables + dataTable.EndLoadData() +Next +``` + +```csharp +foreach (DataTable dataTable in dataSet.Tables) + dataTable.BeginLoadData(); + +dataSet.ReadXml("file.xml"); + +foreach (DataTable dataTable in dataSet.Tables) + dataTable.EndLoadData(); +``` + +> [!NOTE] +> の XSD スキーマに **targetNamespace** がインクルードされている場合、**ReadXml** を呼び出して、名前空間が修飾されていない要素を含む XML を に読み込もうとすると、データが読み取られず、例外が発生することがあります。 この場合に、名前空間が指定されていない要素を読み込むには、XSD スキーマで **elementFormDefault** を "qualified" に設定します。 次に例を示します。 + +``` + + +``` + +## XML のデータの結合 + 既に、 にデータが含まれている場合には、 の既存のデータに XML の新しいデータが追加されます。 **ReadXml** では、XML の中で主キーが一致する行情報を に結合しません。 既存の行情報を XML の新しい情報で上書きするには、**ReadXml** を使用して新しい を作成してから、新しい を既存の へ結合 \(\) します。 **XmlReadMode** が **DiffGram** の **ReadXML** を使用して DiffGram を読み込むと、同一の一意の識別子を持つ行が結合されます。 + +## 参照 + + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [DiffGram](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/diffgrams.md) + [XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md) + [XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md) + [XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md b/docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md new file mode 100644 index 00000000000..58dd6090e28 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md @@ -0,0 +1,98 @@ +--- +title: "XML の DataSet スキーマ情報の読み込み | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 43dfb23b-5cef-46f2-8d87-78f0fba1eb8c +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XML の DataSet スキーマ情報の読み込み + のスキーマ \(テーブル、列、リレーション、および制約\) は、プログラムを使用して定義され、 の **Fill** メソッドまたは **FillSchema** メソッドによって作成されるか、あるいは XML ドキュメントから読み込まれます。 XML ドキュメントから **DataSet** スキーマ情報を読み込むには、**DataSet** の **ReadXmlSchema** メソッドまたは **InferXmlSchema** メソッドを使用します。 **ReadXmlSchema** を使用すると、XML スキーマ定義言語 \(XSD\) スキーマが含まれているドキュメントまたはインライン XML スキーマが含まれている XML ドキュメントから、**DataSet** スキーマ情報を読み込むかまたは推論できます。 **InferXmlSchema** を使用すると、XML ドキュメントからスキーマを推論できます。このとき、指定した特定の XML 名前空間は無視されます。 + +> [!NOTE] +> XSD の構造 \(入れ子になったリレーションなど\) を使用してメモリ内で作成された **DataSet** を、Web サービスまたは XML シリアル化を使って転送した場合、**DataSet** 内のテーブルの順序が維持されない場合があります。 この場合、**DataSet** の受け取り側はテーブルの順序に依存していないことが必要です。 ただし、メモリ内で作成するのではなく、転送する **DataSet** のスキーマを XSD ファイルから読み取った場合は、テーブルの順序が常に維持されます。 + +## ReadXmlSchema + XML ドキュメントから **DataSet** のスキーマだけを読み込み、データを読み込まないようにするには、**DataSet** の **ReadXmlSchema** メソッドを使用します。 **ReadXmlSchema** は、XML スキーマ定義言語 \(XSD\) スキーマを使用して定義されている **DataSet** を作成します。 + + **ReadXmlSchema** メソッドは、ファイル名、ストリーム、または読み込む XML ドキュメントが格納されている **XmlReader** のいずれか 1 つを引数として受け取ります。 この XML ドキュメントには、スキーマだけが含まれているか、またはデータのある XML 要素と共にスキーマがインラインで含まれています。 XML スキーマとしてのインライン スキーマを書き込む方法の詳細については、「[XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md)」を参照してください。 + + **ReadXmlSchema** に渡された XML ドキュメントに、インライン スキーマ情報が含まれていない場合、**ReadXmlSchema** は XML ドキュメントの要素からスキーマを推論します。 **DataSet** に既にスキーマが含まれている場合、テーブルが存在しなければ新しいテーブルを追加することによって現在のスキーマが拡張されます。 既存のテーブルには新しい列は追加されません。 **DataSet** に既に追加される列が存在していますが、XML で検出された列の型と矛盾する場合には、例外がスローされます。 **ReadXmlSchema** による XML ドキュメントからのスキーマの推論方法の詳細については、「[XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md)」を参照してください。 + + **ReadXmlSchema** は **DataSet** スキーマの読み込みまたは推論のいずれかを実行しますが、**DataSet** の **ReadXml** メソッドは、スキーマと XML ドキュメントのデータの両方の読み込みまたは推論を実行します。 詳細については、「[XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md)」を参照してください。 + + XML ドキュメントまたは XML ストリームから **DataSet** スキーマを読み込む方法を次のコード サンプルに示します。 1 番目の例では、XML スキーマ ファイル名が **ReadXmlSchema** メソッドへ渡されます。 2 番目の例では、**System.IO.StreamReader** が示されています。 + +```vb +Dim dataSet As DataSet = New DataSet +dataSet.ReadXmlSchema("schema.xsd") +``` + +```csharp +DataSet dataSet = new DataSet(); +dataSet.ReadXmlSchema("schema.xsd"); +``` + +```vb +Dim xmlStream As System.IO.StreamReader = New System.IO.StreamReader ("schema.xsd"); +Dim dataSet As DataSet = New DataSet +dataSet.ReadXmlSchema(xmlStream) +xmlStream.Close() +``` + +```csharp +System.IO.StreamReader xmlStream = new System.IO.StreamReader("schema.xsd"); +DataSet dataSet = new DataSet(); +dataSet.ReadXmlSchema(xmlStream); +xmlStream.Close(); +``` + +## InferXmlSchema + **DataSet** に対し、**DataSet** の **InferXmlSchema** メソッドを使用して XML ドキュメントのスキーマを推論するように指示できます。 **InferXmlSchema** は、**XmlReadMode** を **InferSchema** に設定した **ReadXml** \(データの読み込みとスキーマの推論\) と、読み取られるドキュメントにインライン スキーマが含まれていない場合の **ReadXmlSchema** の両方と同様の機能を備えています。 ただし **InferXmlSchema** には、スキーマを推論するときに無視する特定の XML 名前空間を指定できる追加機能を用意しています。 **InferXmlSchema** に必要な 2 つの引数は、XML ドキュメントの位置と、この操作によって無視される XML 名前空間の文字列配列です。XML ドキュメントの位置は、ファイル名、ストリーム、または **XmlReader** によって指定されます。 + + たとえば、次のような XML があるとします。 + +``` + + + 1 + Beverages + Soft drinks and teas + + + 1 + 10 + 0 + + +``` + + 前述の XML ドキュメントの要素に対して指定されている属性により、**ReadXmlSchema** メソッドと、**XmlReadMode** が **InferSchema** に設定されている **ReadXml** メソッドは、いずれもドキュメントのすべての要素 \(**Categories**、**CategoryID**、**CategoryName**、**Description**、**Products**、**ProductID**、**ReorderLevel**、および **Discontinued**\) に対してテーブルを作成します。 \(詳細については、「[XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md)」を参照してください\)。ただし、この作成方法よりも適切な方法としては、最初に **Categories** テーブルと **Products** テーブルだけを作成し、次に **Categories** テーブルの **CategoryID**、**CategoryName**、および **Description** 列を作成し、**Products** テーブルの **ProductID**、**ReorderLevel** および **Discontinued** 列を作成する方法があります。 推論されたスキーマが、XML 要素に指定されている属性を無視するようにするには、**InferXmlSchema** メソッドを使用して **officedata** の XML 名前空間を無視するように指定します。この例を次に示します。 + +```vb +Dim dataSet As DataSet = New DataSet +dataSet.InferXmlSchema("input_od.xml", New String() {"urn:schemas-microsoft-com:officedata"}) +``` + +```csharp +DataSet dataSet = new DataSet(); +dataSet.InferXmlSchema("input_od.xml", new string[] "urn:schemas-microsoft-com:officedata"); +``` + +## 参照 + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md) + [XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md) + [XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/managing-dataviews.md b/docs/framework/data/adonet/dataset-datatable-dataview/managing-dataviews.md new file mode 100644 index 00000000000..5358957fb30 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/managing-dataviews.md @@ -0,0 +1,133 @@ +--- +title: "DataViews の管理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0b67fab5-1722-4d2b-bfc1-247a75f0f1ee +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataViews の管理 + のすべてのテーブルのビュー設定を管理するには、 を使用します。 リレーションシップを移動するグリッドなどのように、1 つのコントロールを複数のテーブルに連結する場合は、**DataViewManager** が適しています。 + + **DataViewManager** には、 のテーブルのビュー設定に使用される オブジェクトのコレクションが含まれています。 には、**DataSet** の各テーブルに対応する オブジェクトが 1 つずつ含まれています。 参照テーブルの既定の **ApplyDefaultSort**、**Sort**、**RowFilter**、**RowStateFilter** の各プロパティを設定するには、**DataViewSetting** を使用します。 名前または序数参照によって、または参照をその特定のテーブル オブジェクトに渡すことによって、特定のテーブルの **DataViewSetting** を参照できます。 **DataViewManager** の **DataViewSetting** オブジェクトのコレクションにアクセスするには、**DataViewSettings** プロパティを使用します。 + + **DataSet** に、SQL Server **Northwind** データベースの **Customers**、**Orders**、**Order Details** の各テーブルを格納し、テーブル間のリレーションシップを作成し、**DataViewManager** を使用して既定の **DataView** 設定を指定し、**DataGrid** を **DataViewManager** に連結するコード サンプルを次に示します。 この例では **DataSet** のすべてのテーブルを対象とした既定の **DataView** 設定が設定されます。この設定では、テーブルの主キーによってテーブルの内容が並べ替えられ \(**ApplyDefaultSort** \= **true**\)、次に **Customers** テーブルの並べ替え順序が、**CompanyName** による並べ替え順序に変更されます。 + +```vb +' Assumes connection is a valid SqlConnection to Northwind. +' Create a Connection, DataAdapters, and a DataSet. +Dim custDA As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT CustomerID, CompanyName FROM Customers", connection) +Dim orderDA As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT OrderID, CustomerID FROM Orders", connection) +Dim ordDetDA As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT OrderID, ProductID, Quantity FROM [Order Details]", connection) + +Dim custDS As DataSet = New DataSet() + +' Open the Connection. +connection.Open() + + ' Fill the DataSet with schema information and data. + custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey + orderDA.MissingSchemaAction = MissingSchemaAction.AddWithKey + ordDetDA.MissingSchemaAction = MissingSchemaAction.AddWithKey + + custDA.Fill(custDS, "Customers") + orderDA.Fill(custDS, "Orders") + ordDetDA.Fill(custDS, "OrderDetails") + + ' Close the Connection. + connection.Close() + + ' Create relationships. + custDS.Relations.Add("CustomerOrders", _ + custDS.Tables("Customers").Columns("CustomerID"), _ + custDS.Tables("Orders").Columns("CustomerID")) + + custDS.Relations.Add("OrderDetails", _ + custDS.Tables("Orders").Columns("OrderID"), _ + custDS.Tables("OrderDetails").Columns("OrderID")) + +' Create default DataView settings. +Dim viewManager As DataViewManager = New DataViewManager(custDS) + +Dim viewSetting As DataViewSetting +For Each viewSetting In viewManager.DataViewSettings + viewSetting.ApplyDefaultSort = True +Next + +viewManager.DataViewSettings("Customers").Sort = "CompanyName" + +' Bind to a DataGrid. +Dim grid As System.Windows.Forms.DataGrid = New System.Windows.Forms.DataGrid() +grid.SetDataBinding(viewManager, "Customers") + +``` + +```csharp +// Assumes connection is a valid SqlConnection to Northwind. +// Create a Connection, DataAdapters, and a DataSet. +SqlDataAdapter custDA = new SqlDataAdapter( + "SELECT CustomerID, CompanyName FROM Customers", connection); +SqlDataAdapter orderDA = new SqlDataAdapter( + "SELECT OrderID, CustomerID FROM Orders", connection); +SqlDataAdapter ordDetDA = new SqlDataAdapter( + "SELECT OrderID, ProductID, Quantity FROM [Order Details]", connection); + +DataSet custDS = new DataSet(); + +// Open the Connection. +connection.Open(); + + // Fill the DataSet with schema information and data. + custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey; + orderDA.MissingSchemaAction = MissingSchemaAction.AddWithKey; + ordDetDA.MissingSchemaAction = MissingSchemaAction.AddWithKey; + + custDA.Fill(custDS, "Customers"); + orderDA.Fill(custDS, "Orders"); + ordDetDA.Fill(custDS, "OrderDetails"); + + // Close the Connection. + connection.Close(); + + // Create relationships. + custDS.Relations.Add("CustomerOrders", + custDS.Tables["Customers"].Columns["CustomerID"], + custDS.Tables["Orders"].Columns["CustomerID"]); + + custDS.Relations.Add("OrderDetails", + custDS.Tables["Orders"].Columns["OrderID"], + custDS.Tables["OrderDetails"].Columns["OrderID"]); + +// Create default DataView settings. +DataViewManager viewManager = new DataViewManager(custDS); + +foreach (DataViewSetting viewSetting in viewManager.DataViewSettings) + viewSetting.ApplyDefaultSort = true; + +viewManager.DataViewSettings["Customers"].Sort = "CompanyName"; + +// Bind to a DataGrid. +System.Windows.Forms.DataGrid grid = new System.Windows.Forms.DataGrid(); +grid.SetDataBinding(viewManager, "Customers"); +``` + +## 参照 + + + + + [DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md b/docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md new file mode 100644 index 00000000000..a9bba88fbdf --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md @@ -0,0 +1,50 @@ +--- +title: "DataTable 内のデータの操作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5cb86d48-a987-4af4-80e0-8cc2c8373d62 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTable 内のデータの操作 + 内に を作成した後で、データベース内のテーブルを使用する場合と同じ操作を実行できます。 テーブル内のデータの追加、表示、編集、および削除を実行したり、エラーとイベントを監視したり、テーブル内のデータを照会したりできます。 **DataTable** 内のデータを変更するときには、変更が正確かどうかを検証したり、変更をプログラムによって受け入れるかまたは拒否するかを決定したりすることもできます。 + +## このセクションの内容 + [DataTable へのデータの追加](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/adding-data-to-a-datatable.md) + 新しい行を作成してテーブルに追加する方法について説明します。 + + [DataTable 内のデータの表示](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/viewing-data-in-a-datatable.md) + 元のバージョンのデータや現在のバージョンのデータを含め、行内のデータにアクセスする方法について説明します。 + + [Load メソッド](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/the-load-method.md) + **Load** メソッドを使用して、**DataTable** に行を格納する方法について説明します。 + + [DataTable の編集](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatable-edits.md) + 提示された変更が検証され、受け入れられるまで行への実際の変更を保留しておく方法も含め、行内のデータを変更する方法について説明します。 + + [行の状態とバージョン](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md) + 行のさまざまな状態について説明します。 + + [DataRow の削除](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datarow-deletion.md) + テーブルから行を削除する方法について説明します。 + + [行エラー情報](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/row-error-information.md) + アプリケーション内でのデータに関する問題を解決するために、行ごとのエラー情報を挿入する方法について説明します。 + + [AcceptChanges と RejectChanges](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/acceptchanges-and-rejectchanges.md) + 行への変更を受け入れたり拒否したりする方法について説明します。 + +## 参照 + [DataTable](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatables.md) + [DataTable イベントの処理](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/handling-datatable-events.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/map-implicit-relations-between-nested-schema-elements.md b/docs/framework/data/adonet/dataset-datatable-dataview/map-implicit-relations-between-nested-schema-elements.md new file mode 100644 index 00000000000..652d1c2c70b --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/map-implicit-relations-between-nested-schema-elements.md @@ -0,0 +1,110 @@ +--- +title: "入れ子になっているスキーマ要素間の暗黙的なリレーションの割り当て | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6b25002a-352e-4d9b-bae3-15129458a355 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 入れ子になっているスキーマ要素間の暗黙的なリレーションの割り当て +XML スキーマ言語定義 \(XSD\) スキーマでは、複数の複合型を入れ子にして指定できます。 この場合、割り当て処理には既定の割り当てが適用されます。その際、 に作成される内容を次に示します。 + +- 複合型 \(親および子\) それぞれに対して 1 つのテーブル。 + +- 親に UNIQUE 制約がなく、親テーブル名が *TableName* である場合は、*TableName*\_Id という名前の主キー列が、テーブル定義ごとに 1 つ追加されます。 + +- 親テーブルの主キー制約により、追加された列が主キーとして認識されます \(**IsPrimaryKey** プロパティを **True** に設定することで\)。 制約には、Constraint*\#* \(*\#* は、1、2、3 など\) という名前が付けられます。 たとえば、最初の制約の既定の名前は Constraint1 となります。 + +- 子テーブルの外部キー制約により、追加された列が親テーブルの主キーを参照する外部キーとして認識されます。 親テーブル名が *ParentTable*、子テーブル名が *ChildTable* の場合には、制約の名前は *ParentTable\_ChildTable* となります。 + +- その結果、親テーブルと子テーブル間のデータが関連付けられます。 + + **OrderDetail** が **Order** 要素の子要素であることを示すスキーマの例を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + XML スキーマの割り当て処理によって **DataSet** に作成される内容は、次のとおりです。 + +- **Order** および **OrderDetail** テーブル。 + + ``` + Order(OrderNumber, EmpNumber, Order_Id) + OrderDetail(OrderNo, ItemNo, Order_Id) + ``` + +- **Order** テーブルの UNIQUE 制約。 **IsPrimaryKey** プロパティは **True** に設定されるので注意してください。 + + ``` + ConstraintName: Constraint1 + Type: UniqueConstraint + Table: Order + Columns: Order_Id + IsPrimaryKey: True + ``` + +- **OrderDetail** テーブルの外部キー制約。 + + ``` + ConstraintName: Order_OrderDetail + Type: ForeignKeyConstraint + Table: OrderDetail + Columns: Order_Id + RelatedTable: Order + RelatedColumns: Order_Id + ``` + +- **Order** テーブルと **OrderDetail** テーブル間のリレーションシップ。 スキーマの **Order** 要素と **OrderDetail** 要素が入れ子になっているため、このリレーションシップの **Nested** プロパティは **True** に設定されます。 + + ``` + ParentTable: Order + ParentColumns: Order_Id + ChildTable: OrderDetail + ChildColumns: Order_Id + ParentKeyConstraint: Constraint1 + ChildKeyConstraint: Order_OrderDetail + RelationName: Order_OrderDetail + Nested: True + ``` + +## 参照 + [XML スキーマ \(XSD\) からの DataSet リレーションの生成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md) + [XML スキーマ \(XSD\) 制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/map-key-xml-schema-xsd-constraints-to-dataset-constraints.md b/docs/framework/data/adonet/dataset-datatable-dataview/map-key-xml-schema-xsd-constraints-to-dataset-constraints.md new file mode 100644 index 00000000000..1a676e2fcfa --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/map-key-xml-schema-xsd-constraints-to-dataset-constraints.md @@ -0,0 +1,92 @@ +--- +title: "XML スキーマ (XSD) のキー制約の DataSet 制約への割り当て | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 22664196-f270-4ebc-a169-70e16a83dfa1 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XML スキーマ (XSD) のキー制約の DataSet 制約への割り当て +スキーマでは、**key** 要素を使用して要素または属性のキー制約を指定できます。 キー制約を指定する要素または属性の値は、スキーマ インスタンス内で一意になる必要があります。また、null 値にすることはできません。 + + キー制約を定義する列の値を null 値にできない点を除くと、キー制約は UNIQUE 制約と同じです。 + + **key** 要素に指定できる **msdata** 属性を次の表に示します。 + +|属性名|説明| +|---------|--------| +|**msdata:ConstraintName**|この属性を指定した場合、その値が制約名として使用されます。 それ以外の場合は、**name** 属性によって制約名の値が設定されます。| +|**msdata:PrimaryKey**|`PrimaryKey="true"` が指定されている場合、**IsPrimaryKey** 制約のプロパティを **true** に設定することによって、主キーになります。 主キーの値は null 値にできないため、**AllowDBNull** 列のプロパティが **false** に設定されます。| + + キー制約を指定するスキーマの変換では、割り当て処理により、制約の列ごとに **AllowDBNull** 列のプロパティが **false** に設定された状態でテーブルに UNIQUE 制約が作成されます。 **key** 要素で `msdata:PrimaryKey="true"` を指定しない限り、UNIQUE 制約の **IsPrimaryKey** プロパティも **false** に設定されます。 これは、スキーマに `PrimaryKey="true"` が指定される UNIQUE 制約と同じです。 + + **key** 要素を使用して **CustomerID** 要素のキー制約を指定するスキーマの例を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + +``` + + **key** 要素は、**Customers** 要素の **CustomerID** 子要素の値を一意の値にし、null 値を許可しないように指定します。 XML スキーマ定義言語 \(XSD\) スキーマの変換では、割り当て処理によって次のテーブルが作成されます。 + +``` +Customers(CustomerID, CompanyName, Phone) +``` + + また、次の に示すように、XML スキーマの割り当てによって **CustomerID** 列の **UniqueConstraint** を作成することもできます \(わかりやすいように、関連するプロパティだけを示します\)。 + +``` + + DataSetName: MyDataSet +TableName: customers + ColumnName: CustomerID + AllowDBNull: False + Unique: True + ConstraintName: KeyCustID + Table: customers + Columns: CustomerID + IsPrimaryKey: True +``` + + 生成される **DataSet** では、スキーマの **Key** 要素で `msdata:PrimaryKey="true"` が指定されるため、**UniqueConstraint** の **IsPrimaryKey** プロパティが **true** に設定されます。 + + **DataSet** にある **UniqueConstraint**の **ConstraintName** プロパティの値は、スキーマの**key** 要素で指定した **msdata:ConstraintName** 属性の値です。 + +## 参照 + [XML スキーマ \(XSD\) 制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md) + [XML スキーマ \(XSD\) からの DataSet リレーションの生成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/map-keyref-xml-schema-xsd-constraints-to-dataset-constraints.md b/docs/framework/data/adonet/dataset-datatable-dataview/map-keyref-xml-schema-xsd-constraints-to-dataset-constraints.md new file mode 100644 index 00000000000..e7c88244330 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/map-keyref-xml-schema-xsd-constraints-to-dataset-constraints.md @@ -0,0 +1,125 @@ +--- +title: "XML スキーマ (XSD) のキー参照制約の DataSet 制約への割り当て | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5b634fea-cc1e-4f6b-9454-10858105b1c8 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XML スキーマ (XSD) のキー参照制約の DataSet 制約への割り当て +**keyref** 要素を使用すると、ドキュメント内の要素間にリンクを確立できます。 これは、リレーショナル データベースの外部キーのリレーションシップと同様です。 スキーマに **keyref** 要素を指定すると、スキーマの割り当て処理時に keyref 要素がそれに対応する の列の外部キー制約に変換されます。 既定では、**keyref** 要素によってリレーションも生成され、リレーションに **ParentColumn**、**ChildTable**、**ParentColumn** および **ChildColumn** プロパティが指定されます。 + + **keyref** 要素で指定できる **msdata** 属性を次の表に示します。 + +|属性名|説明| +|---------|--------| +|**msdata:ConstraintOnly**|スキーマの **keyref** 要素で **ConstraintOnly\="true"** を指定した場合、制約が作成されますが、リレーションは作成されません。 この属性を指定しない \(または **False** に設定する\) 場合、制約およびリレーションが **DataSet** に作成されます。| +|**msdata:ConstraintName**|**ConstraintName** 属性を指定した場合、その値が制約名として使用されます。 それ以外の場合、スキーマの **keyref** 要素の **name** 属性によって **DataSet** の制約名が設定されます。| +|**msdata:UpdateRule**|スキーマの **keyref** 要素で **UpdateRule** 属性を指定した場合、その値が **DataSet** の **UpdateRule** 制約プロパティに割り当てられます。 それ以外の場合、**UpdateRule** プロパティは **Cascade** に設定されます。| +|**msdata:DeleteRule**|スキーマの **keyref** 要素で **DeleteRule** 属性を指定した場合、その値が **DataSet** の **DeleteRule** 制約プロパティに割り当てられます。 それ以外の場合、**DeleteRule** プロパティは **Cascade** に設定されます。| +|**msdata:AcceptRejectRule**|スキーマの **keyref** 要素で **AcceptRejectRule** 属性を指定した場合、その値が **DataSet** の **AcceptRejectRule** 制約プロパティに割り当てられます。 それ以外の場合、**AcceptRejectRule** プロパティは **None** に設定されます。| + + **Order** 要素の **OrderNumber** 子要素と **OrderDetail** 要素の **OrderNo** 子要素間のリレーションシップを指定する **key** 属性と **keyref** 属性を含むスキーマを次の例に示します。 + + 例では、**OrderDetail** 要素の **OrderNumber** 子要素が **Order** 要素の **OrderNo** キーの子要素を参照します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + XML スキーマ定義言語 \(XSD\) スキーマの割り当て処理によって、2 つのテーブルを持つ次の **DataSet** が生成されます。 + +``` +OrderDetail(OrderNo, ItemNo) and +Order(OrderNumber, EmpNumber) +``` + + さらに、**DataSet** によって次の制約が定義されます。 + +- **Order** テーブルの UNIQUE 制約。 + + ``` + + Table: Order + Columns: OrderNumber + ConstraintName: OrderNumberKey + Type: UniqueConstraint + IsPrimaryKey: False + ``` + +- **Order** テーブルと **OrderDetail** テーブル間のリレーションシップ。 スキーマの 2 つの要素が入れ子になっていないため、**Nested** プロパティは **False** に設定されます。 + + ``` + + ParentTable: Order + ParentColumns: OrderNumber + ChildTable: OrderDetail + ChildColumns: OrderNo + ParentKeyConstraint: OrderNumberKey + ChildKeyConstraint: OrderNoRef + RelationName: OrderNoRef + Nested: False + ``` + +- **OrderDetail** テーブルの外部キー制約。 + + ``` + + ConstraintName: OrderNoRef + Type: ForeignKeyConstraint + Table: OrderDetail + Columns: OrderNo + RelatedTable: Order + RelatedColumns: OrderNumber + ``` + +## 参照 + [XML スキーマ \(XSD\) 制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md) + [XML スキーマ \(XSD\) からの DataSet リレーションの生成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/map-relations-specified-for-nested-elements.md b/docs/framework/data/adonet/dataset-datatable-dataview/map-relations-specified-for-nested-elements.md new file mode 100644 index 00000000000..4df83119bcd --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/map-relations-specified-for-nested-elements.md @@ -0,0 +1,87 @@ +--- +title: "入れ子になっている要素に指定したリレーションシップの割り当て | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 24a2d3e5-4af7-4f9a-ab7a-fe6684c9e4fe +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 入れ子になっている要素に指定したリレーションシップの割り当て +スキーマには、その中の 2 つの要素間の割り当てを明示的に指定するために、**msdata:Relationship** 注釈をインクルードすることができます。 **msdata:Relationship** で指定されたスキーマの 2 つの要素は、必要に応じて、入れ子にすることができます。 割り当て処理では、スキーマの **msdata:Relationship** を使用して 2 つの列間に主キー\/外部キーのリレーションシップを生成します。 + + **OrderDetail** 要素が **Order** の子要素であることを示す XML スキーマの例を次に示します。 **msdata:Relationship** はこの親子のリレーションシップを識別し、生成された **Order** テーブルの **OrderNumber** 列と生成された **OrderDetail** テーブルの **OrderNo** 列が関連付けられていることを示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + XML スキーマの割り当て処理によって に作成される内容は、次のとおりです。 + +- **Order** および **OrderDetail** テーブル。 + + ``` + Order(OrderNumber, EmpNumber) + OrderDetail(OrderNo, ItemNo) + ``` + +- **Order** テーブルと **OrderDetail** テーブル間のリレーションシップ。 スキーマの **Order** 要素と **OrderDetail** 要素が入れ子になっているため、このリレーションシップの **Nested** プロパティは **True** に設定されます。 + + ``` + ParentTable: Order + ParentColumns: OrderNumber + ChildTable: OrderDetail + ChildColumns: OrderNo + RelationName: OrdODRelation + Nested: True + ``` + + 割り当て処理によって制約は作成されません。 + +## 参照 + [XML スキーマ \(XSD\) からの DataSet リレーションの生成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md) + [XML スキーマ \(XSD\) 制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/map-unique-xml-schema-xsd-constraints-to-dataset-constraints.md b/docs/framework/data/adonet/dataset-datatable-dataview/map-unique-xml-schema-xsd-constraints-to-dataset-constraints.md new file mode 100644 index 00000000000..b4d79743df0 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/map-unique-xml-schema-xsd-constraints-to-dataset-constraints.md @@ -0,0 +1,114 @@ +--- +title: "XML スキーマ (XSD) の UNIQUE 制約の DataSet 制約への割り当て | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 56da90bf-21d3-4d1a-8bb8-de908866b78d +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XML スキーマ (XSD) の UNIQUE 制約の DataSet 制約への割り当て +XML スキーマ定義言語 \(XSD\) スキーマでは、**unique** 要素を使用して要素または属性の UNIQUE 制約を指定します。 XML スキーマをリレーショナル スキーマに変換する処理では、XML スキーマの要素または属性で指定した UNIQUE 制約が、生成される に対応する の UNIQUE 制約に割り当てられます。 + + **unique** 要素で指定できる **msdata** 属性を次の表に示します。 + +|属性名|説明| +|---------|--------| +|**msdata:ConstraintName**|この属性を指定した場合、その値が制約名として使用されます。 それ以外の場合は、**name** 属性によって制約名の値が設定されます。| +|**msdata:PrimaryKey**|**unique** 要素に `PrimaryKey="true"` がある場合、UNIQUE 制約は、**IsPrimaryKey** プロパティが **true** に設定された状態で作成されます。| + + **unique** 要素を使用して UNIQUE 制約を指定する XML スキーマの例を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + +``` + + スキーマの **unique** 要素を使用して、ドキュメント インスタンスのすべての **Customers** 要素に unique 要素を指定します。**CustomerID** 子要素の値は一意になる必要があります。 **DataSet** を作成する場合は、割り当て処理によってスキーマが読み込まれ、次のテーブルが生成されます。 + +``` +Customers (CustomerID, CompanyName, Phone) +``` + + 次の **DataSet** に示すように、割り当てプロセスによって **CustomerID** 列に対して UNIQUE 制約を作成することもできます \(わかりやすいように、関連するプロパティだけを示します\)。 + +``` + + DataSetName: MyDataSet +TableName: Customers + ColumnName: CustomerID + AllowDBNull: True + Unique: True + ConstraintName: UcustID + Type: UniqueConstraint + Table: Customers + Columns: CustomerID + IsPrimaryKey: False +``` + + 生成される **DataSet** は UNIQUE 制約のために **IsPrimaryKey** プロパティが **False** に設定されます。 列の **unique** プロパティは、**CustomerID** 列の値が一意であることを示します \(ただし、列の **AllowDBNull** プロパティで指定されているように、CustomerID の値は null 参照となります\)。 + + スキーマを変更し、オプションの **msdata:PrimaryKey** 属性を **True** に設定すると、UNIQUE 制約がテーブルに作成されます。 **AllowDBNull** 列のプロパティが **False** に、制約の **IsPrimaryKey** プロパティが **True** に設定されると、**CustomerID** 列が主キー列になります。 + + XML スキーマの要素や属性を組み合わせて UNIQUE 制約を指定できます。 スキーマに別の xs:field 要素を追加することにより、Customer**ID** の値と **CompanyName** の値の組み合わせを任意のインスタンスのすべての **Customers** に対して必ず一意になるように指定する方法を次の例で示します。 + +``` + +   +   +   +   + +``` + + その結果、**DataSet** に作成される制約を次に示します。 + +``` +ConstraintName: SomeName + Table: Customers + Columns: CustomerID CompanyName + IsPrimaryKey: False +``` + +## 参照 + [XML スキーマ \(XSD\) 制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md) + [XML スキーマ \(XSD\) からの DataSet リレーションの生成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md b/docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md new file mode 100644 index 00000000000..a112a2ae10a --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md @@ -0,0 +1,54 @@ +--- +title: "XML スキーマ (XSD) 制約の DataSet 制約への割り当て | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3d0d1a4b-9104-434f-ac04-6c01ab5716b5 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XML スキーマ (XSD) 制約の DataSet 制約への割り当て +XML スキーマ定義言語 \(XSD\) を使用すると、定義する要素と属性で制約を指定できます。 XML スキーマを のリレーショナル スキーマに割り当てると、XML スキーマの制約が **DataSet** 内のテーブルと列の適切なリレーショナル制約に割り当てられます。 + + このセクションでは、次の XML スキーマの制約の割り当てについて説明します。 + +- **unique** 要素を使用して指定される UNIQUE 制約 + +- **key** 要素を使用して指定されるキー制約 + +- **keyref** 要素を使用して指定されるキー参照制約 + + 要素または属性に対して制約を指定することにより、同じスキーマに基づくあらゆるドキュメントで、その要素の値について特定の制限を適用できます。 たとえば、スキーマにある **Customer** 要素の **CustomerID** 子要素のキー制約は、**CustomerID** 子要素の値がすべてのドキュメントのインスタンスで一意であり、null 値が許可されないことを示します。 + + さらに、ドキュメント内のリレーションシップを確立するために、ドキュメント内の要素および属性間に制約を指定することもできます。 ドキュメント内で制約を指定するためにスキーマ内で key 制約または keyref 制約を使用すると、ドキュメントの要素と属性間にリレーションシップを持つことになります。 + + 割り当て処理は、これらのスキーマ制約を **DataSet** 内に作成されたテーブルでの適切な制約に変換します。 + +## このセクションの内容 + [XML スキーマ \(XSD\) の UNIQUE 制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/map-unique-xml-schema-xsd-constraints-to-dataset-constraints.md) + **DataSet** での UNIQUE 制約の作成に使用する XML スキーマの要素について説明します。 + + [XML スキーマ \(XSD\) のキー制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/map-key-xml-schema-xsd-constraints-to-dataset-constraints.md) + **DataSet** でのキー制約 \(UNIQUE 制約では null 値が許可されません\) の作成に使用する XML スキーマの要素について説明します。 + + [XML スキーマ \(XSD\) のキー参照制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/map-keyref-xml-schema-xsd-constraints-to-dataset-constraints.md) + **DataSet** でのキー参照 \(外部キー\) 制約の作成に使用する XML スキーマの要素について説明します。 + +## 関連項目 + [XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md) + XSD スキーマから作成された **DataSet** のリレーショナル構造 \(スキーマ\) について説明します。 + + [XML スキーマ \(XSD\) からの DataSet リレーションの生成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md) + **DataSet** でのテーブル列間のリレーションの生成に使用する XML スキーマの要素について説明します。 + +## 参照 + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/merging-dataset-contents.md b/docs/framework/data/adonet/dataset-datatable-dataview/merging-dataset-contents.md new file mode 100644 index 00000000000..3dded0bbd3b --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/merging-dataset-contents.md @@ -0,0 +1,91 @@ +--- +title: "DataSet の内容のマージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e5e9309a-3ebb-4a9c-9d78-21c4e2bafc5b +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSet の内容のマージ + メソッドを使用して、、または の配列の内容を既存の `DataSet` にマージできます。 いくつかの要因とオプションが、新しいデータを既存の `DataSet` にマージする方法に影響します。 + +## 主キー + マージによって新しいデータとスキーマを受け取るテーブルに主キーがある場合、受信データの新しい行と、 行バージョンの主キーの値が受信データの主キーの値と同じである既存の行が照合されます。 受信スキーマの列が既存のスキーマの列と一致する場合、既存の行にあるデータが変更されます。 既存のスキーマと一致しない列は、 パラメーターに基づいて無視または追加されます。 主キーの値が既存の行と一致しない新しい行は、既存のテーブルに追加されます。 + + 受信する行または既存の行の状態が の場合、`Original` 行バージョンが存在しないため、`Added` の行の 行バージョンの主キーの値を使用して、その 2 つの行の主キーの値を照合します。 + + 受信テーブルと既存のテーブルに、名前が同じでデータ型が異なる列が含まれている場合、例外がスローされ、`DataSet` の イベントが発生します。 受信テーブルと既存のテーブルの両方にキーが定義されていても、主キーの対象の列が異なる場合、例外がスローされ、`DataSet` の `MergeFailed` イベントが発生します。 + + マージによって新しいデータを受け取るテーブルに主キーがない場合、受信データの新しい行とそのテーブルの既存の行は一致しません。その代わりに新しい行が既存のテーブルに追加されます。 + +## テーブル名と名前空間 + オブジェクトには、 プロパティ値を割り当てることができます。 の値が割り当てられている場合、 には、 の値が同じである複数の オブジェクトを含めることができます。 マージ操作の際には、 の両方を使用してマージの対象を識別します。 が割り当てられていない場合、 のみを使用してマージの対象を識別します。 + +> [!NOTE] +> この動作は .NET Framework version 2.0 で変更されました。 .NET Framework version 1.1 では、名前空間はサポートされていましたが、マージ操作中には無視されました。 そのため、 プロパティ値を使用する の動作は、実行されている .NET Framework のバージョンに応じて変わります。 たとえば、`DataTables` を含む 2 つの `DataSets` があり、どちらの プロパティの値も同じですが、 プロパティの値が異なっているとします。 .NET Framework 1.1 では、この 2 つの オブジェクトをマージするときには の名前の違いが無視されます。 しかし、バージョン 2.0 以降では、マージを実行すると対象の に新しい `DataTables` が 2 つ作成されます。 元の `DataTables` はマージの影響を受けません。 + +## PreserveChanges + `DataSet`、`DataTable`、または `DataRow` の各配列を `Merge` メソッドに渡すときに、オプション パラメーターを含めることができます。そのパラメーターを使用して、変更内容を既存の `DataSet` に保存するかどうか、および受信データで見つかった新しいスキーマの要素を処理する方法を指定します。 受信データの後に続く最初のオプション パラメーターは、Boolean 型のフラグ で、変更内容を既存の `DataSet` に保存するかどうかを指定します。 `PreserveChanges` フラグを `true` に設定した場合、既存の行の `Current` 行バージョンの値は受信する値で上書きされません。 `PreserveChanges` フラグを `false` に設定した場合、既存の行の `Current` 行バージョンの値が受信した値で上書きされます。 `PreserveChanges` フラグを指定しない場合は、既定で `false` に設定されます。 行バージョンの詳細については、「[行の状態とバージョン](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md)」を参照してください。 + + `PreserveChanges` を `true` に設定すると、既存の行のデータは 行バージョンで保存されますが、既存の行の 行バージョンのデータは受信した行の `Original` 行バージョンのデータで上書きされます。 既存の行の は、 に設定されます。 適用される例外を次に示します。 + +- 既存の行の `RowState` が `Deleted` の場合、この `RowState` は `Deleted` のままであり、`Modified` には設定されません。 この場合、受信した行のデータは既存の行の `Original` 行バージョンとして保存され、既存の行の `Original` 行バージョンのデータが上書きされます \(受信する行の `RowState` が `Added` でない場合\)。 + +- 受信した行の `RowState` が `Added` の場合、受信した行には `Original` 行バージョンが存在しないため、既存の行の `Original` 行バージョンのデータは受信した行のデータで上書きされません。 + + `PreserveChanges` が `false` の場合、既存の行の `Current` と `Original` の両方の行バージョンが受信した行のデータで上書きされます。さらに、既存の行の `RowState` が、受信した行の `RowState` に設定されます。 適用される例外を次に示します。 + +- 受信した行の `RowState` が `Unchanged` であり、既存の行の `RowState` が `Modified`、`Deleted`、または `Added` である場合、既存の行の `RowState` は `Modified` に設定されます。 + +- 受信した行の `RowState` が `Added` であり、既存の行の `RowState` が `Unchanged`、`Modified`、または `Deleted` である場合、既存の行の `RowState` は `Modified` に設定されます。 また、受信した行には `Original` 行バージョンが存在しないため、既存の行の `Original` 行バージョンのデータは、受信した行のデータで上書きされません。 + +## MissingSchemaAction + `Merge` メソッドのオプションである パラメーターを使用して、既存の `DataSet` に含まれない受信データのスキーマ要素を `Merge` で処理する方法を指定できます。 + + 次の表で、`MissingSchemaAction` のオプションについて説明します。 + +|MissingSchemaAction のオプション|説明| +|--------------------------------|--------| +||新しいスキーマ情報を `DataSet` に追加し、受信した値を新しい列に読み込みます。 既定値です。| +||新しいスキーマおよび主キーの情報を `DataSet` に追加し、受信した値を新しい列に読み込みます。| +||一致しないスキーマ情報が見つかった場合、例外をスローします。| +||新しいスキーマ情報を無視します。| + +## 制約 + `Merge` メソッドでは、新しいデータがすべて既存の `DataSet` に追加されるまで制約がチェックされません。 データが追加されると、`DataSet` の現在の値に制約が適用されます。 開発者は、制約違反のためにスローされる例外をコードで処理する必要があります。 + + `DataSet` 内に、`Unchanged` に設定され、主キー値が 1 である既存の行があるとします。 マージ操作の際、受信した行が `Modified` に設定され、`Original` 行バージョンの主キーの値が 2 であり、`Current` 行バージョンの主キーの値が 1 である場合、`Original` 行バージョンの主キーの値が一致しないため、既存の行と受信した行は一致していると見なされません。 マージが完了し、制約がチェックされると、`Current` 行バージョンの主キーの値が主キー列の UNIQUE 制約に違反するため、例外がスローされます。 + +> [!NOTE] +> ID 列などの自動インクリメント列を含むデータベース テーブルに行を挿入すると、挿入によって返される ID 列の値が `DataSet` の列の値と一致せず、返された列がマージされずに追加されることがあります。 詳細については、「[ID 値および Autonumber 値の取得](../../../../../docs/framework/data/adonet/retrieving-identity-or-autonumber-values.md)」を参照してください。 + + 次のコード サンプルでは、スキーマが異なる 2 つの `DataSet` オブジェクトをマージし、その 2 つの受信 `DataSet` オブジェクトのスキーマを組み合わせたスキーマを持つ 1 つの `DataSet` を作成します。 + + [!code-csharp[DataWorks DataSet.Merge#1](../../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks DataSet.Merge/CS/source.cs#1)] + [!code-vb[DataWorks DataSet.Merge#1](../../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks DataSet.Merge/VB/source.vb#1)] + + 次のコード サンプルでは、更新内容を含む既存の `DataSet` を取得し、その更新内容を `DataAdapter` に渡してデータ ソースで処理します。 次に、その結果を元の `DataSet` にマージします。 エラーとなった変更内容が拒否された後、マージされた変更内容が `AcceptChanges` を使用してコミットされます。 + + [!code-csharp[DataWorks DataSet.MergeAcceptChanges#1](../../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks DataSet.MergeAcceptChanges/CS/source.cs#1)] + [!code-vb[DataWorks DataSet.MergeAcceptChanges#1](../../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks DataSet.MergeAcceptChanges/VB/source.vb#1)] + + [!code-csharp[DataWorks DataSet.MergeAcceptChanges#2](../../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks DataSet.MergeAcceptChanges/CS/source.cs#2)] + [!code-vb[DataWorks DataSet.MergeAcceptChanges#2](../../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks DataSet.MergeAcceptChanges/VB/source.vb#2)] + +## 参照 + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [行の状態とバージョン](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md) + [DataAdapter と DataReader](../../../../../docs/framework/data/adonet/dataadapters-and-datareaders.md) + [ADO.NET でのデータの取得および変更](../../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + [ID 値および Autonumber 値の取得](../../../../../docs/framework/data/adonet/retrieving-identity-or-autonumber-values.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/modifying-dataviews.md b/docs/framework/data/adonet/dataset-datatable-dataview/modifying-dataviews.md new file mode 100644 index 00000000000..d3b8b46ab8b --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/modifying-dataviews.md @@ -0,0 +1,64 @@ +--- +title: "DataView の変更 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 697a3991-b660-4a5a-8a54-1a2304ff158e +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataView の変更 + を使用して、データ行を基になるテーブルに追加、削除、または変更できます。 基になるテーブルのデータを **DataView** で変更できるかどうかは、**DataView** の 3 つのブール値プロパティで制御されます。 この 3 つのプロパティとは、 および です。 これらのプロパティの既定値は **true** です。 + + **AllowNew** が **true** の場合は、**DataView** の メソッドを使用して を新規に作成できます。 **DataRowView** の メソッドが呼び出されるまでは、新規に作成された行は基になる に追加されません。 **DataRowView** の メソッドが呼び出されると、新規に作成された行は破棄されます。 一度に編集できるのは、1 つの **DataRowView** だけです。 保留中の行がある場合は、**DataRowView** の **AddNew** メソッドまたは **BeginEdit** メソッドを呼び出すと、保留中の行に対して **EndEdit** が暗黙的に呼び出されます。 **EndEdit** が呼び出されると、基になる **DataTable** に対して変更が適用されます。適用された変更をコミットするには **DataTable**、**DataSet**、または **DataRow** の各オブジェクトの **AcceptChanges** メソッドを使用し、拒否するにはこれらのオブジェクトの **RejectChanges** メソッドを使用します。 **AllowNew** が **false** の場合は、**DataRowView** の **AddNew** メソッドを呼び出すと例外がスローされます。 + + **AllowEdit** が **true** の場合は、**DataRowView** を使用すると **DataRow** の内容を変更できます。 基になる行の変更内容を確定するには **DataRowView.EndEdit** を使用し、変更内容を取り消すには **DataRowView.CancelEdit** を使用します。 一度に編集できるのは 1 行だけです。 保留中の行がある場合は、**DataRowView** の **AddNew** メソッドまたは **BeginEdit** メソッドを呼び出すと、保留中の行に対して **EndEdit** が暗黙的に呼び出されます。 **EndEdit** が呼び出されると、基になる **DataRow** の **Current** 行バージョンに対して変更が適用されます。適用された変更をコミットするには **DataTable**、**DataSet**、または **DataRow** の各オブジェクトの **AcceptChanges** メソッドを使用し、拒否するにはこれらのオブジェクトの **RejectChanges** メソッドを使用します。 **AllowEdit** が **false** の場合は、**DataView** の値を変更しようとすると例外がスローされます。 + + 既存の **DataRowView** の編集中でも、まだ確定されていない変更に関して、基になる **DataTable** のイベントが発生する場合があります。 **DataRowView** に対して **EndEdit** と **CancelEdit** のどちらが呼び出されているかに関係なく、基になる **DataRow** に対して **EndEdit** を呼び出すと、確定されていない変更が適用され、**CancelEdit** を呼び出すと、確定されていない変更が取り消されます。 + + **AllowDelete** が **true** の場合は、**DataView** オブジェクトまたは **DataRowView** オブジェクトの **Delete** メソッドを使用して **DataView** の行を削除できます。DataView の行を削除すると、基になる **DataTable** から行が削除されます。 後でこの削除操作をコミットするには **AcceptChanges** を使用し、拒否するには **RejectChanges** を使用します。 **AllowDelete** が **false** の場合は、**DataView** または **DataRowView** の **Delete** メソッドを呼び出すと例外がスローされます。 + + 次のコード サンプルは、**DataView** を使用して行を削除する機能を無効にし、**DataView** を使用して基になるテーブルに新しい行を追加します。 + +```vb +Dim custTable As DataTable = custDS.Tables("Customers") +Dim custView As DataView = custTable.DefaultView +custView.Sort = "CompanyName" + +custView.AllowDelete = False + +Dim newDRV As DataRowView = custView.AddNew() +newDRV("CustomerID") = "ABCDE" +newDRV("CompanyName") = "ABC Products" +newDRV.EndEdit() + +``` + +```csharp +DataTable custTable = custDS.Tables["Customers"]; +DataView custView = custTable.DefaultView; +custView.Sort = "CompanyName"; + +custView.AllowDelete = false; + +DataRowView newDRV = custView.AddNew(); +newDRV["CustomerID"] = "ABCDE"; +newDRV["CompanyName"] = "ABC Products"; +newDRV.EndEdit(); +``` + +## 参照 + + + + [DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/navigating-datarelations.md b/docs/framework/data/adonet/dataset-datatable-dataview/navigating-datarelations.md new file mode 100644 index 00000000000..07c49c27f1f --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/navigating-datarelations.md @@ -0,0 +1,58 @@ +--- +title: "DataRelation の移動 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e5e673f4-9b44-45ae-aaea-c504d1cc5d3e +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# DataRelation の移動 + の主な機能の 1 つは、 の 1 つの から別の を移動できることです。 この参照により、関連付けられた **DataTable** から単一の **DataRow** を指定すると、1 つの **DataTable** 内の関連する オブジェクトをすべて取得できます。 たとえば、顧客のテーブルとオーダーのテーブル間に **DataRelation** を確立すると、**GetChildRows** を使用して特定の顧客行のオーダー行をすべて取得できます。 + + **DataSet** の **Customers** テーブルと **Orders** テーブル間の **DataRelation** を作成し、各顧客のすべてのオーダーを返すコード サンプルを次に示します。 + + [!code-csharp[DataWorks Data.DataTableRelation#1](../../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks Data.DataTableRelation/CS/source.cs#1)] + [!code-vb[DataWorks Data.DataTableRelation#1](../../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks Data.DataTableRelation/VB/source.vb#1)] + + 上記の例に基づいて、4 つのテーブルを相互に関連付け、そのテーブルのリレーションシップ間を移動する例を次に示します。 上記の例に示すように、**CustomerID** は **Customers** テーブルを **Orders** テーブルに関連付けます。 **Customers** テーブルにある各顧客に対しては、**Orders** テーブルにあるすべての子の行が確定され、該当する顧客のオーダー数とその **OrderID** の値が返されます。 + + 展開された例では、**OrderDetails** テーブルおよび **Products** テーブルからも値が返されます。 各顧客のオーダーに対しては、オーダーされた製品および数量を示すために、**OrderID** を使用して **Orders** テーブルが **OrderDetails** テーブルに関連付けられます。 **OrderDetails** テーブルに含まれているのは、オーダーされた製品の **ProductID** だけであるため、**ProductID** を使用して、**OrderDetails** を **Products** に関連付けて **ProductName** を返します。 このリレーションでは、**Products** テーブルが親となり、**Order Details** テーブルが子となります。 その結果、**OrderDetails** テーブルを順次処理すると、**GetParentRow** が呼び出され、関連付けられた **ProductName** の値を取得します。 + + **DataRelation** が **Customers** テーブルと **Orders** テーブルに対して作成された場合には、**createConstraints** フラグには値が指定されません \(既定値は **true**\)。 これは、**Orders** テーブルにあるすべての行に対して親の **Customers** テーブルにある **CustomerID** の値が設定されているためです。 **Orders** テーブルに、**Customers** テーブルに存在しない **CustomerID** が存在する場合、 は例外をスローします。 + + 親の列に含まれていない値が子の列に含まれる場合、**DataRelation** の追加時に **createConstraints** フラグが **false** に設定されます。 例では、**Orders** テーブルと **OrderDetails** テーブル間の **DataRelation** に対して、**createConstraints** フラグが **false** に設定されています。 このため、このアプリケーションでは **OrderDetails** テーブルからすべてのレコードを返し、実行時に例外を生成せずに **Orders** テーブルからレコードのサブセットだけを返すことができます。 展開された例では、次の形式で出力が生成されます。 + +``` +Customer ID: NORTS + Order ID: 10517 + Order Date: 4/24/1997 12:00:00 AM + Product: Filo Mix + Quantity: 6 + Product: Raclette Courdavault + Quantity: 4 + Product: Outback Lager + Quantity: 6 + Order ID: 11057 + Order Date: 4/29/1998 12:00:00 AM + Product: Outback Lager + Quantity: 3 +``` + + **Orders** テーブルのレコードのサブセットだけと共に、**OrderDetails** テーブルと **Products** テーブルからの値が返された場合に展開された例を次のコード サンプルに示します。 + + [!code-csharp[DataWorks Data.DataTableNavigation#1](../../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks Data.DataTableNavigation/CS/source.cs#1)] + [!code-vb[DataWorks Data.DataTableNavigation#1](../../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks Data.DataTableNavigation/VB/source.vb#1)] + +## 参照 + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/navigating-datatables.md b/docs/framework/data/adonet/dataset-datatable-dataview/navigating-datatables.md new file mode 100644 index 00000000000..aad93082e29 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/navigating-datatables.md @@ -0,0 +1,32 @@ +--- +title: "DataTable の移動 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 202026a1-ec79-435e-b507-12a77f5011b2 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# DataTable の移動 + は、1 つ以上の オブジェクトの内容を、読み取り専用、前方参照専用の 1 つ以上の結果セットとして取得します。 + + メソッドの呼び出しにより DataTableReader を作成した場合、 に複数の結果セットが含まれる場合があります。 結果セットが複数ある場合、 メソッドは、カーソルを次の結果セットに移動します。 これは前方参照専用です。 前の結果セットに戻ることはできません。 + +## 例 + 2 つの `` インスタンスを作成する `TestConstructor` メソッドの例を次に示します。 クラスを対象としたこのコンストラクターを示すために、この例では、2 つの **DataTables** が含まれる配列に基づいた新しい **DataTableReader** を作成し、単純な操作を実行して、最初の 2 ~ 3 列の内容をコンソール ウィンドウに表示します。 + + [!code-csharp[DataWorks DataTableReader.NextResult#1](../../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks DataTableReader.NextResult/CS/source.cs#1)] + [!code-vb[DataWorks DataTableReader.NextResult#1](../../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks DataTableReader.NextResult/VB/source.vb#1)] + +## 参照 + [DataTableReaders](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/datatablereaders.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/nesting-datarelations.md b/docs/framework/data/adonet/dataset-datatable-dataview/nesting-datarelations.md new file mode 100644 index 00000000000..ead5cbc4a02 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/nesting-datarelations.md @@ -0,0 +1,142 @@ +--- +title: "DataRelation の入れ子化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9530f9c9-dd98-4b93-8cdb-40d7f1e8d0ab +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataRelation の入れ子化 +データのリレーショナル表現では、各テーブルに含まれている行が、列または列セットを使用して相互に関連付けられています。 ADO.NET の では、テーブル間のリレーションシップは を使用して実装されます。 **DataRelation** を作成すると、親子の列のリレーションシップはこのリレーションだけをとおして管理されます。 テーブルと列はそれぞれ別個のエンティティです。 XML のデータ階層表現では、子要素が入れ子の状態で含まれている親要素によって親子のリレーションシップが表現されます。 + + 子オブジェクトの入れ子を実現するため、**DataSet** が と同期されるか、または **WriteXml** を使用して XML データとして書き込まれるときに、**DataRelation** が **Nested** プロパティを公開します。 **DataRelation** の **Nested** プロパティを **true** に設定すると、XML データとして書き込まれるとき、または **XmlDataDocument** と同期されるときに、このリレーションにおける子の行が親の列の中で入れ子になります。 **DataRelation** の **Nested** プロパティは既定では **false** に設定されています。 + + たとえば、次のような **DataSet** があるとします。 + +```vb +' Assumes connection is a valid SqlConnection. +Dim customerAdapter As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT CustomerID, CompanyName FROM Customers", connection) +Dim orderAdapter As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT OrderID, CustomerID, OrderDate FROM Orders", connection) + +connection.Open() + +Dim dataSet As DataSet = New DataSet("CustomerOrders") +customerAdapter.Fill(dataSet, "Customers") +orderAdapter.Fill(dataSet, "Orders") + +connection.Close() + +Dim customerOrders As DataRelation = dataSet.Relations.Add( _ + "CustOrders", dataSet.Tables("Customers").Columns("CustomerID"), _ + dataSet.Tables("Orders").Columns("CustomerID")) +``` + +```csharp +// Assumes connection is a valid SqlConnection. +SqlDataAdapter customerAdapter = new SqlDataAdapter( + "SELECT CustomerID, CompanyName FROM Customers", connection); +SqlDataAdapter orderAdapter = new SqlDataAdapter( + "SELECT OrderID, CustomerID, OrderDate FROM Orders", connection); + +connection.Open(); + +DataSet dataSet = new DataSet("CustomerOrders"); +customerAdapter.Fill(dataSet, "Customers"); +orderAdapter.Fill(dataSet, "Orders"); + +connection.Close(); + +DataRelation customerOrders = dataSet.Relations.Add( + "CustOrders", dataSet.Tables["Customers"].Columns["CustomerID"], + dataSet.Tables["Orders"].Columns["CustomerID"]); +``` + + この **DataSet** では **DataRelation** オブジェクトの **Nested** プロパティが **true** に設定されていないため、**DataSet** が XML データとして表されるときに、子オブジェクトは親要素の中で入れ子になりません。 関連する **DataSet** を含んだ **DataSet** の XML 表現を変換するとき、データ リレーションが入れ子になっていないと、パフォーマンスが低下する場合があります。 データ リレーションシップは入れ子にすることをお勧めします。 入れ子にするには、**Nested** プロパティを **true** に設定します。 次に、トップダウン階層形式の XPath クエリ式を使用してデータを検索、変換するコードを XSLT スタイル シートに記述します。 + + **DataSet** に対して **WriteXml** を呼び出した結果を次のコード サンプルに示します。 + +``` + + + ALFKI + Alfreds Futterkiste + + + ANATR + Ana Trujillo Emparedados y helados + + + 10643 + ALFKI + 1997-08-25T00:00:00 + + + 10692 + ALFKI + 1997-10-03T00:00:00 + + + 10308 + ANATR + 1996-09-18T00:00:00 + + +``` + + **Customers** 要素と **Orders** 要素が兄弟要素として示されています。 **Orders** 要素を該当する親要素の子として表すには、**DataRelation** の **Nested** プロパティを **true** に設定し、次のコードを追加する必要があります。 + +```vb +customerOrders.Nested = True +``` + +```csharp +customerOrders.Nested = true; +``` + + 上記のコードを追加した結果の出力を次のコードに示します。この例では、**Orders** 要素がそれぞれ該当する親要素の中で入れ子になっています。 + +``` + + + ALFKI + + 10643 + ALFKI + 1997-08-25T00:00:00 + + + 10692 + ALFKI + 1997-10-03T00:00:00 + + Alfreds Futterkiste + + + ANATR + + 10308 + ANATR + 1996-09-18T00:00:00 + + Ana Trujillo Emparedados y helados + + +``` + +## 参照 + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [DataRelation の追加](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/adding-datarelations.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/performing-an-xpath-query-on-a-dataset.md b/docs/framework/data/adonet/dataset-datatable-dataview/performing-an-xpath-query-on-a-dataset.md new file mode 100644 index 00000000000..1f4cff450cb --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/performing-an-xpath-query-on-a-dataset.md @@ -0,0 +1,110 @@ +--- +title: "DataSet に対する XPath クエリの実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7e828566-fffe-4d38-abb2-4d68fd73f663 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSet に対する XPath クエリの実行 +同期された との間のリレーションシップによって、XPath \(XML Path Language\) クエリなどの XML サービスが使用できます。XML サービスは **XmlDataDocument** にアクセスし、**DataSet** に直接アクセスするよりも、特定の機能を効率的に実行できます。 たとえば、 の **Select** メソッドを使用して **DataSet** の他のテーブルとのリレーションシップをナビゲートする代わりに、**DataSet** と同期化された **XmlDataDocument** に対して XPath クエリを実行すると、 形式で XML 要素のリストを取得できます。 ノードとしてキャストされた **XmlNodeList** のノードを **XmlDataDocument** の **GetRowFromElement** メソッドに渡すと、同期化された **DataSet** のテーブルの行に一致する 参照が返されます。 + + たとえば、次に示すコード サンプルでは孫 XPath クエリが実行されます。 **DataSet** には、**Customers**、**Orders**、および **OrderDetails** の 3 つのテーブルが格納されています。 このサンプルでは、**Customers** テーブルと **Orders** テーブルの間に親子のリレーションが作成され、次に **Orders** テーブルと **OrderDetails** テーブルの間に親子のリレーションが作成されます。 XPath クエリが実行され、値 43 の **ProductID** ノードを持つ孫 **OrderDetails** ノードのある **Customers** ノードの **XmlNodeList** リストが返されます。 つまり、このサンプルでは、XPath クエリを使用して **ProductID** が 43 の製品を注文した顧客を確認します。 + +```vb +' Assumes that connection is a valid SqlConnection. +connection.Open() +Dim dataSet As DataSet = New DataSet("CustomerOrders") +Dim customerAdapter As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT * FROM Customers", connection) +customerAdapter.Fill(dataSet, "Customers") + +Dim orderAdapter As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT * FROM Orders", connection) +orderAdapter.Fill(dataSet, "Orders") + +Dim detailAdapter As SqlDataAdapter = New SqlDataAdapter( _ + "SELECT * FROM [Order Details]", connection) +detailAdapter.Fill(dataSet, "OrderDetails") + +connection.Close() + +dataSet.Relations.Add("CustOrders", _ +dataSet.Tables("Customers").Columns("CustomerID"), _ +dataSet.Tables("Orders").Columns("CustomerID")).Nested = true + +dataSet.Relations.Add("OrderDetail", _ + dataSet.Tables("Orders").Columns("OrderID"), _ +dataSet.Tables("OrderDetails").Columns("OrderID"), false).Nested = true + +Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet) + +Dim nodeList As XmlNodeList = xmlDoc.DocumentElement.SelectNodes( _ + "descendant::Customers[*/OrderDetails/ProductID=43]") + +Dim dataRow As DataRow +Dim xmlNode As XmlNode + +For Each xmlNode In nodeList + dataRow = xmlDoc.GetRowFromElement(CType(xmlNode, XmlElement)) + + If Not dataRow Is Nothing then Console.WriteLine(xmlRow(0).ToString()) +Next +``` + +```csharp +// Assumes that connection is a valid SqlConnection. +connection.Open(); + +DataSet dataSet = new DataSet("CustomerOrders"); + +SqlDataAdapter customerAdapter = new SqlDataAdapter( + "SELECT * FROM Customers", connection); +customerAdapter.Fill(dataSet, "Customers"); + +SqlDataAdapter orderAdapter = new SqlDataAdapter( + "SELECT * FROM Orders", connection); +orderAdapter.Fill(dataSet, "Orders"); + +SqlDataAdapter detailAdapter = new SqlDataAdapter( + "SELECT * FROM [Order Details]", connection); +detailAdapter.Fill(dataSet, "OrderDetails"); + +connection.Close(); + +dataSet.Relations.Add("CustOrders", + dataSet.Tables["Customers"].Columns["CustomerID"], + dataSet.Tables["Orders"].Columns["CustomerID"]).Nested = true; + +dataSet.Relations.Add("OrderDetail", + dataSet.Tables["Orders"].Columns["OrderID"], + dataSet.Tables["OrderDetails"].Columns["OrderID"], + false).Nested = true; + +XmlDataDocument xmlDoc = new XmlDataDocument(dataSet); + +XmlNodeList nodeList = xmlDoc.DocumentElement.SelectNodes( + "descendant::Customers[*/OrderDetails/ProductID=43]"); + +DataRow dataRow; +foreach (XmlNode xmlNode in nodeList) +{ + dataRow = xmlDoc.GetRowFromElement((XmlElement)xmlNode); + if (dataRow != null) + Console.WriteLine(dataRow[0]); +} +``` + +## 参照 + [DataSet と XmlDataDocument の同期](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/row-error-information.md b/docs/framework/data/adonet/dataset-datatable-dataview/row-error-information.md new file mode 100644 index 00000000000..e8c903c2174 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/row-error-information.md @@ -0,0 +1,90 @@ +--- +title: "行エラー情報 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8b1f9070-d032-48c7-b030-bd8fbb2ca59a +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 行エラー情報 + の値を編集しているときに、行エラーに対処する必要をなくすために、エラー情報を行に追加して後で使用することができます。 オブジェクトは、この目的のために各行に プロパティを提供します。 **DataRow** の **RowError** プロパティにデータを追加すると、その **DataRow** の プロパティが **true** に設定されます。 **DataRow** が **DataTable** の一部であり、**DataRow.HasErrors** が **true** である場合は、**DataTable.HasErrors** プロパティも **true** になります。 この原則は、**DataTable** が属している **DataSet** に対しても適用されます。 エラーの有無を確認する場合は、**HasErrors** プロパティをチェックして、エラー情報が追加された行があるかどうかを判断できます。 **HasErrors** が **true** の場合に **DataTable** の メソッドを使用して、エラーのある行だけを返してチェックする例を次に示します。 + +```vb +Dim workTable As DataTable = New DataTable("Customers") +workTable.Columns.Add("CustID", Type.GetType("System.Int32")) +workTable.Columns.Add("Total", Type.GetType("System.Double")) + +AddHandler workTable.RowChanged, New DataRowChangeEventHandler(AddressOf OnRowChanged) + +Dim i As Int32 + +For i = 0 To 10 + workTable.Rows.Add(New Object() {i , i *100}) +Next + +If workTable.HasErrors Then + Console.WriteLine("Errors in Table " & workTable.TableName) + + Dim myRow As DataRow + + For Each myRow In workTable.GetErrors() + Console.WriteLine("CustID = " & myRow("CustID").ToString()) + Console.WriteLine(" Error = " & myRow.RowError & vbCrLf) + Next +End If + +Private Shared Sub OnRowChanged( _ + sender As Object, args As DataRowChangeEventArgs) + ' Check for zero values. + If CDbl(args.Row("Total")) = 0 Then args.Row.RowError = _ + "Total cannot be 0." +End Sub + +``` + +```csharp +DataTable workTable = new DataTable("Customers"); +workTable.Columns.Add("CustID", typeof(Int32)); +workTable.Columns.Add("Total", typeof(Double)); + +workTable.RowChanged += new DataRowChangeEventHandler(OnRowChanged); + +for (int i = 0; i < 10; i++) + workTable.Rows.Add(new Object[] {i, i*100}); + +if (workTable.HasErrors) +{ + Console.WriteLine("Errors in Table " + workTable.TableName); + + foreach (DataRow myRow in workTable.GetErrors()) + { + Console.WriteLine("CustID = " + myRow["CustID"]); + Console.WriteLine(" Error = " + myRow.RowError + "\n"); + } +} + +protected static void OnRowChanged( + Object sender, DataRowChangeEventArgs args) +{ + // Check for zero values. + if (args.Row["Total"].Equals(0D)) + args.Row.RowError = "Total cannot be 0."; +} +``` + +## 参照 + + + + [DataTable 内のデータの操作](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md b/docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md new file mode 100644 index 00000000000..07bf1fd87b9 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md @@ -0,0 +1,107 @@ +--- +title: "行の状態とバージョン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2e6642c9-bfc6-425c-b3a7-e4912ffa6c1f +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 行の状態とバージョン +ADO.NET は、行の状態とバージョンを使用してテーブル内の行を管理します。 行状態は、1 つの行のステータスを示します。行バージョンは、1 つの行の値が変更されるときに、変更に応じてその行に格納される現在の値、元の値、既定値などを維持します。 たとえば、ある行の 1 つの列を変更すると、この行の状態は `Modified` になり、次の 2 つの行バージョンが存在することになります。`Current` には現在の行値が格納され、`Original` にはその列が変更される前の行値が格納されます。 + + 各 オブジェクトにある プロパティを調べると、行の現在の状態を確認できます。 `RowState` 列挙値ごとの簡単な説明を次の表に示します。 + +|RowState の値|説明| +|-----------------|--------| +||`AcceptChanges` が最後に呼び出されてから、または `DataAdapter.Fill` によって行が作成されてから変更は行われていません。| +||行がテーブルに追加されましたが、`AcceptChanges` が呼び出されていません。| +||行のいくつかの要素が変更されました。| +||行がテーブルから削除されましたが、`AcceptChanges` が呼び出されていません。| +||行がどの `DataRowCollection` にも属していません。 新しく作成された行の `RowState` は `Detached` に設定されます。 `Add` メソッドを呼び出して新しい `DataRow` を `DataRowCollection` に追加すると、`RowState` プロパティの値は `Added` に設定されます。

`Detached` は、`Remove` メソッドを使用するか、または `Delete` メソッドに続いて `AcceptChanges` メソッドを使用して `DataRowCollection` から削除された行に対しても設定されます。| + + 、または の `AcceptChanges` が呼び出されると、`Deleted` の行状態を持つすべての行が削除されます。 残りの行の行状態は `Unchanged` になり、`Current` 行バージョンの値は `Original` 行バージョンの値で上書きされます。 `RejectChanges` が呼び出されると、`Added` の行状態を持つすべての行が削除されます。 残りの行の行状態は `Unchanged` になり、`Original` 行バージョンの値は `Current` 行バージョンの値で上書きされます。 + + パラメーターと列参照を渡すことにより、ある行の行バージョンを表示する例を次に示します。 + +```vb +Dim custRow As DataRow = custTable.Rows(0) +Dim custID As String = custRow("CustomerID", DataRowVersion.Original).ToString() + +``` + +```csharp +DataRow custRow = custTable.Rows[0]; +string custID = custRow["CustomerID", DataRowVersion.Original].ToString(); +``` + + `DataRowVersion` 列挙値ごとの簡単な説明を次の表に示します。 + +|DataRowVersion の値|説明| +|-----------------------|--------| +||行の現在の値。 この行バージョンは、`Deleted` の `RowState` を持つ行については存在しません。| +||特定の行の既定の行バージョン。 `Added`、`Modified`、または `Unchanged` 行の既定の行バージョンは、`Current` です。 `Deleted` 行の既定の行バージョンは、`Original` です。 `Detached` 行の既定の行バージョンは、`Proposed` です。| +||行の元の値。 この行バージョンは、`Added` の `RowState` を持つ行については存在しません。| +||行に対して提示された値。 この行バージョンは、行、つまり `DataRowCollection` の一部ではない行に対する編集操作の間存在します。| + + メソッドを呼び出して `DataRowVersion` を引数として渡すことにより、`DataRow` が特定の行バージョンを持っているかどうかを確認できます。 たとえば、`DataRow.HasVersion(DataRowVersion.Original)` は、新しく追加された行に対して `AcceptChanges` が呼び出されていない場合に `false` を返します。 + + テーブルから削除されたすべての行の値を表示するコード サンプルを次に示します。 `Deleted` 行には `Current` 行バージョンがないため、列値にアクセスするときに `DataRowVersion.Original` を渡す必要があります。 + +```vb +Dim catTable As DataTable = catDS.Tables("Categories") + +Dim delRows() As DataRow = catTable.Select(Nothing, Nothing, DataViewRowState.Deleted) + +Console.WriteLine("Deleted rows:" & vbCrLf) + +Dim catCol As DataColumn +Dim delRow As DataRow + +For Each catCol In catTable.Columns + Console.Write(catCol.ColumnName & vbTab) +Next +Console.WriteLine() + +For Each delRow In delRows + For Each catCol In catTable.Columns + Console.Write(delRow(catCol, DataRowVersion.Original) & vbTab) + Next + Console.WriteLine() +Next + +``` + +```csharp +DataTable catTable = catDS.Tables["Categories"]; + +DataRow[] delRows = catTable.Select(null, null, DataViewRowState.Deleted); + +Console.WriteLine("Deleted rows:\n"); + +foreach (DataColumn catCol in catTable.Columns) + Console.Write(catCol.ColumnName + "\t"); +Console.WriteLine(); + +foreach (DataRow delRow in delRows) +{ + foreach (DataColumn catCol in catTable.Columns) + Console.Write(delRow[catCol, DataRowVersion.Original] + "\t"); + Console.WriteLine(); +} +``` + +## 参照 + [DataTable 内のデータの操作](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [DataAdapter と DataReader](../../../../../docs/framework/data/adonet/dataadapters-and-datareaders.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/sorting-and-filtering-data.md b/docs/framework/data/adonet/dataset-datatable-dataview/sorting-and-filtering-data.md new file mode 100644 index 00000000000..ceca8a201c0 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/sorting-and-filtering-data.md @@ -0,0 +1,70 @@ +--- +title: "データの並べ替えとフィルター処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fdd9c753-39df-48cd-9822-2781afe76200 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# データの並べ替えとフィルター処理 + には、 のデータの並べ替えとフィルター処理を行うさまざまな方法が用意されています。 + +- プロパティを使用すれば、1 列または複数列の並べ替え順序を指定し、ASC \(昇順\) パラメーターと DESC \(降順\) パラメーターを含めることができます。 + +- プロパティを使用すると、テーブルの主キー列 \(1 列または複数列\) に基づいて、昇順の並べ替え順序を自動的に作成できます。 **Sort** プロパティが null 参照または空の文字列の場合、およびテーブルに主キーが定義されている場合は、 だけが適用されます。 + +- プロパティを使用すると、列の値に基づいて行のサブセットを指定できます。 **RowFilter** プロパティの有効な式の詳細については、 クラスの プロパティの情報を参照してください。 + + データ サブセットの動的ビューの作成とは対照的に、データに対して特定のクエリの実行結果を返す場合、パフォーマンスを最大限に引き出すには、**RowFilter** プロパティを設定する代わりに **DataView** の メソッドまたは メソッドを使用します。 **RowFilter** プロパティを設定すると、データのインデックスが再作成され、アプリケーションのオーバーヘッドが増加してパフォーマンスの低下を招きます。 **RowFilter** プロパティは、データ連結アプリケーションでの使用に適しています。このアプリケーションでは、連結されたコントロールによってフィルター処理結果が表示されます。 **Find** メソッドと **FindRows** メソッドでは、現在のインデックスが使用されます。このため、インデックスを再作成する必要はありません。 **Find** メソッドと **FindRows** メソッドの詳細については、「[行の検索](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/finding-rows.md)」を参照してください。 + +- プロパティを使用して、表示する行バージョンを指定できます。 **DataView** は、基になる行の **RowState** に従って、暗黙的に行バージョンを公開します。 たとえば、**RowStateFilter** が **DataViewRowState.Deleted** に設定されている場合、**DataView** は行バージョンが **Original** の **Deleted** 行をすべて公開します。これは、**Current** 行バージョンが存在しないためです。 **DataRowView** の **RowVersion** プロパティを使用すると、公開される行のバージョンを確認できます。 + + **DataViewRowState** のオプションを次の表に示します。 + + |DataViewRowState のオプション|説明| + |-----------------------------|--------| + |**CurrentRows**|**Current** 行バージョンのすべての **Unchanged** 行、**Added** 行、および **Modified** 行です。 既定値です。| + |**Added**|**Current** 行バージョンのすべての **Added** 行です。| + |**Deleted**|**Original** 行バージョンのすべての **Deleted** 行です。| + |**ModifiedCurrent**|**Current** 行バージョンのすべての **Modified** 行です。| + |**ModifiedOriginal**|**Original** 行バージョンのすべての **Modified** 行です。| + |**なし**|行がありません。| + |**OriginalRows**|**Original** 行バージョンのすべての **Unchanged** 行、**Modified** 行、および **Deleted** 行です。| + |**Unchanged**|**Current** 行バージョンのすべての **Unchanged** 行です。| + + 行状態と行バージョンの詳細については、「[行の状態とバージョン](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md)」を参照してください。 + + 在庫数が標準在庫数以下である製品を、仕入先 ID \(supplier ID\) で並べ替え、さらに製品名 \(product name\) で並べ替えたビューを作成するコード サンプルを次に示します。 + +```vb +Dim prodView As DataView = New DataView(prodDS.Tables("Products"), _ + "UnitsInStock <= ReorderLevel", _ + "SupplierID, ProductName", _ + DataViewRowState.CurrentRows) + +``` + +```csharp +DataView prodView = new DataView(prodDS.Tables["Products"], + "UnitsInStock <= ReorderLevel", + "SupplierID, ProductName", + DataViewRowState.CurrentRows); +``` + +## 参照 + + + + + [DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/specify-relations-between-elements-with-no-nesting.md b/docs/framework/data/adonet/dataset-datatable-dataview/specify-relations-between-elements-with-no-nesting.md new file mode 100644 index 00000000000..c631ce05604 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/specify-relations-between-elements-with-no-nesting.md @@ -0,0 +1,77 @@ +--- +title: "入れ子になっていない要素間のリレーションの指定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e31325da-7691-4d33-acf4-99fccca67006 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 入れ子になっていない要素間のリレーションの指定 +要素が入れ子になっていない場合、暗黙的なリレーションは作成されません。 それに対し、**msdata:Relationship** 注釈を使用すると、入れ子になっていない要素間にリレーションを明示的に指定できます。 + + 互いに入れ子になっていない **Order** 要素と **OrderDetail** 要素の間に **msdata:Relationship** 注釈を指定する XML スキーマの例を次に示します。 **msdata:Relationship** 注釈は、**Schema** 要素の子要素として指定します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + 次に示すように、XML スキーマ定義言語 \(XSD\) スキーマの割り当て処理によって、**Order** テーブルと **OrderDetail** テーブルを含む が生成され、それらのテーブル間にリレーションシップが指定されます。 + +``` +RelationName: OrdOrderDetailRelation +ParentTable: Order +ParentColumns: OrderNumber +ChildTable: OrderDetail +ChildColumns: OrderNo +Nested: False +``` + +## 参照 + [XML スキーマ \(XSD\) からの DataSet リレーションの生成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md) + [XML スキーマ \(XSD\) 制約の DataSet 制約への割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/mapping-xml-schema-xsd-constraints-to-dataset-constraints.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/summary-of-the-dataset-schema-inference-process.md b/docs/framework/data/adonet/dataset-datatable-dataview/summary-of-the-dataset-schema-inference-process.md new file mode 100644 index 00000000000..0ff41be4c3e --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/summary-of-the-dataset-schema-inference-process.md @@ -0,0 +1,46 @@ +--- +title: "DataSet スキーマの推論プロセスの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fd0891c8-d068-4e30-a76f-7c375f078bf7 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSet スキーマの推論プロセスの概要 +推論プロセスでは、まず、テーブルとして推論する XML ドキュメントの要素を決定します。 XML ドキュメントの残りの要素から、それらのテーブルの列が推論によって決定されます。 入れ子状のテーブルの場合は、入れ子になった オブジェクトと オブジェクトが生成されます。 + + 推論規則について、次に簡単に説明します。 + +- 属性を持つ要素は、テーブルとして推論されます。 + +- 子要素を持つ要素は、テーブルとして推論されます。 + +- 繰り返し出現する要素は、単一のテーブルとして推論されます。 + +- ドキュメント \(ルート\) 要素に属性がなく、列として推論される子要素もない場合、その要素は として推論されます。 それ以外の場合は、ドキュメント要素はテーブルとして推論されます。 + +- 属性は、列として推論されます。 + +- 属性または子要素を持たず、繰り返し出現することもない要素は、列として推論されます。 + +- テーブルとして推論される要素が、同じくテーブルとして推論される他の要素の内部に入れ子になっている場合は、その 2 つのテーブル間に入れ子になった **DataRelation** が作成されます。 その場合、**TableName\_Id** という名前の新しい主キー列がその両方のテーブルに追加され、**DataRelation** によって使用されます。 この **TableName\_Id** 列を使用して、この 2 つのテーブル間に **ForeignKeyConstraint** が作成されます。 + +- テーブルとして推論される要素に、テキストは含まれているが子要素は含まれていない場合は、**TableName\_Text** という名前の新しい列が各要素のテキストに作成されます。 テーブルとして推論される要素にテキストだけでなく、子要素もある場合、テキストは無視されます。 + +## 参照 + [XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md) + [XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) + [XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md) + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/synchronizing-a-dataset-with-an-xmldatadocument.md b/docs/framework/data/adonet/dataset-datatable-dataview/synchronizing-a-dataset-with-an-xmldatadocument.md new file mode 100644 index 00000000000..c4e47481d28 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/synchronizing-a-dataset-with-an-xmldatadocument.md @@ -0,0 +1,240 @@ +--- +title: "Dataset と XmlDataDocument の同期 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fbc96fa9-b5d1-4f97-b099-c89b0e14ce2c +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# Dataset と XmlDataDocument の同期 +このセクションでは、 と同期され、厳密に型指定された を使用して、注文書を処理する手順の 1 ステップを例に説明します。 この例では、**DataSet** をソース XML ドキュメントの一部だけと一致する最小限のスキーマと共に作成します。 この例では、**XmlDataDocument** を使用してソース XML ドキュメントが完全に保持されるため、XML ドキュメントのサブセットを公開するときに **DataSet** を使用できます。 + + 注文書に関する情報 \(顧客情報、発注品目、出荷情報など\) をすべて含む XML ドキュメントの例を次に示します。 + +``` + + + + CHOPS + + 10966 + + 10966 + 37 + 26 + 8 + 0 + + + 10966 + 56 + 38 + 12 + 0.15 + + + 10966 + 62 + 49.3 + 12 + 0.15 + + CHOPS + 4 + 1998-03-20T00:00:00.0000000 + 1998-04-17T00:00:00.0000000 + 1998-04-08T00:00:00.0000000 + 1 + 27.19 + Chop-suey Chinese + Hauptstr. 31 + Bern + 3012 + Switzerland + + Chop-suey Chinese + Yang Wang + Owner +
Hauptstr. 29
+ Bern + 3012 + Switzerland + 0452-076545 +
+ + 1 + Speedy Express + (503) 555-0100 + + + 2 + United Package + (503) 555-0101 + + + 3 + Federal Shipping + (503) 555-0102 + + + 37 + Gravad lax + 12 - 500 g pkgs. + 11 + 50 + 25 + + + 56 + Gnocchi di nonna Alice + 24 - 250 g pkgs. + 21 + 10 + 30 + + + 62 + Tarte au sucre + 48 pies + 17 + 0 + 0 + +
+``` + + 前述の XML ドキュメントに含まれている注文書の情報を処理する手順の 1 ステップとして、企業の現在の在庫のデータを使用してこの注文書が処理されます。 企業の倉庫で注文を処理する従業員は、注文書の内容をすべて確認する必要はありません。確認する必要がある情報は、注文書の製品情報だけです。 XML ドキュメントの製品情報だけを公開するには、厳密に型指定した **DataSet** を作成し、XML スキーマ定義言語 \(XSD\) スキーマとして記述されているスキーマをこの **DataSet** に読み込みます。このスキーマは、注文の製品と数量に対応しています。 厳密に型指定された **DataSet** オブジェクトの詳細については、「[型指定された DataSet](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/typed-datasets.md)」を参照してください。 + + このサンプルの厳密に型指定された **DataSet** の生成元となるスキーマを次のコードに示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + 元の XML ドキュメントの **OrderDetails** 要素と **Products** 要素の情報だけが **DataSet** のスキーマにインクルードされます。 **DataSet** を **XmlDataDocument** と同期させることで、**DataSet** にインクルードされていない要素も XML ドキュメントに保持されます。 + + **Northwind.FillOrder** の名前空間を使用して XML スキーマから生成される、厳密に型指定された **DataSet** を使用すると、元の XML ドキュメントの一部を公開できます。XML ドキュメントの一部を公開するには、ソース XML ドキュメントから読み込まれた **XmlDataDocument** に **DataSet** を同期させます。 このスキーマから生成された **DataSet** には構造が含まれていますが、データは含まれていません。 XML を **XmlDataDocument** に読み込むと、データが格納されます。 データが既に含まれている **DataSet** と同期された **XmlDataDocument** を読み込もうとすると、例外がスローされます。 + + **DataSet** と **XmlDataDocument** の更新後には、**XmlDataDocument** によって、変更後の XML ドキュメントと、**DataSet** によって無視された要素を出力できます。この例を次に示します。 注文書の処理手順では、注文品目の入力後に、変更された XML ドキュメントが注文処理の次のステップ \(社内の出荷部門\) に渡されます。 + +```vb +Imports System +Imports System.Data +Imports System.Xml +Imports Northwind.FillOrder + +Public class Sample + Public Shared Sub Main() + + Dim orderDS As OrderDetail = New OrderDetail + + Dim xmlDocument As XmlDataDocument = New XmlDataDocument(orderDS) + + xmlDocument.Load("Order.xml") + + Dim orderItem As OrderDetail.LineItem + Dim product As OrderDetail.Product + + For Each orderItem In orderDS.LineItems + product = orderItem.Product + + ' Remove quantity from the current stock. + product.UnitsInStock = CType(product.UnitsInStock - orderItem.Quantity, Short) + + ' If the remaining stock is less than the reorder level, order more. + If ((product.UnitsInStock + product.UnitsOnOrder) < product.ReorderLevel) Then + product.UnitsOnOrder = CType(product.UnitsOnOrder + product.ReorderLevel, Short) + End If + Next + + xmlDocument.Save("Order_out.xml") + End Sub +End Class +``` + +```csharp +using System; +using System.Data; +using System.Xml; +using Northwind.FillOrder; + +public class Sample +{ + public static void Main() + { + OrderDetail orderDS = new OrderDetail(); + + XmlDataDocument xmlDocument = new XmlDataDocument(orderDS); + + xmlDocument.Load("Order.xml"); + + foreach (OrderDetail.LineItem orderItem in orderDS.LineItems) + { + OrderDetail.Product product = orderItem.Product; + + // Remove quantity from the current stock. + product.UnitsInStock = (short)(product.UnitsInStock - orderItem.Quantity); + + // If the remaining stock is less than the reorder level, order more. + if ((product.UnitsInStock + product.UnitsOnOrder) < product.ReorderLevel) + product.UnitsOnOrder = (short)(product.UnitsOnOrder + product.ReorderLevel); + } + + xmlDocument.Save("Order_out.xml"); + } +} +``` + +## 参照 + [DataSet と XmlDataDocument の同期](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/the-load-method.md b/docs/framework/data/adonet/dataset-datatable-dataview/the-load-method.md new file mode 100644 index 00000000000..b54c7d62e03 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/the-load-method.md @@ -0,0 +1,80 @@ +--- +title: "Load メソッド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e22e5812-89c6-41f0-9302-bb899a46dbff +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# Load メソッド + メソッドを使用して、データ ソースの行を に読み込むことができます。 これはオーバーロードされたメソッドで、最も単純な形式で単一の **DataReader** パラメーターを受け取ります。 この形式により、このメソッドは **DataTable** に対する行の読み込みのみを行います。 あるいは、**LoadOption** パラメーターを指定して **DataTable** へのデータの追加方法を制御することもできます。 + + **LoadOption** パラメーターは、**DataTable** にデータの行が既に含まれている場合に特に役立ちます。それは、このパラメーターによって、データ ソースから読み込まれるデータとテーブル内に既に存在するデータを組み合わせる方法が指定されているためです。 たとえば、**PreserveCurrentValues** \(既定値\) は、**DataTable** の行が **Added** としてマークされ、データ ソースの行に一致する内容に対して **Original** 値または各列が設定されている場合に指定します。 **Current** 値は、行が追加されたときに割り当てられた値が保持され、その行の **RowState** は **Changed** に設定されます。 + + 列挙値の簡単な説明を次の表に示します。 + +|LoadOption の値|説明| +|-------------------|--------| +|**OverwriteRow**|読み込まれる行と **DataTable** に既に存在する行で **PrimaryKey** 値が同じ場合、各列の **Original** 値と **Current** 値は読み込まれる行の値に置き換えられ、**RowState** プロパティは **Unchanged** に設定されます。

**DataTable** に存在していなかった行がデータ ソースから読み込まれ、その行の **RowState** 値は **Unchanged** に設定されます。

このオプションは **DataTable** の内容を更新して、データ ソースの内容と一致するようにします。| +|**PreserveCurrentValues \(既定値\)**|読み込まれる行と **DataTable** に既に存在する行の **PrimaryKey** 値が同じ場合、**Original** 値には読み込まれる行の内容が設定されますが、**Current** 値は変更されません。

**RowState** が **Added** または **Modified** の場合、この値は **Modified** に設定されます。

**RowState** が **Deleted** であった場合、この値は **Deleted** のままとなります。

**DataTable** に存在していなかった行がデータ ソースから読み込まれ、その行の **RowState** は **Unchanged** に設定されます。| +|**UpdateCurrentValues**|読み込まれる行と **DataTable** に既に存在する行の **PrimaryKey** 値が同じ場合、**Current** 値が **Original** 値にコピーされ、**Current** 値には読み込まれる行の内容が設定されます。

**DataTable** の **RowState** が **Added** の場合、**RowState** は **Added** のままとなります。 **Modified** または **Deleted** としてマークされた行の **RowState** は **Modified** になります。

**DataTable** に存在していなかった行がデータ ソースから読み込まれ、その行の **RowState** は **Added** に設定されます。| + + **Load** メソッドを使用して **Northwind** データベースに従業員の誕生日リストを表示する例を次に示します。 + + \[Visual Basic\] + +``` +Private Sub LoadBirthdays(ByVal connectionString As String) + ' Assumes that connectionString is a valid connection string + ' to the Northwind database on SQL Server. + Dim queryString As String = _ + "SELECT LastName, FirstName, BirthDate " & _ + " FROM dbo.Employees " & _ + "ORDER BY BirthDate, LastName, FirstName" + + ' Open and fill a DataSet. + Dim adapter As SqlDataAdapter = New SqlDataAdapter( _ + queryString, connectionString) + Dim employees As New DataSet + adapter.Fill(employees, "Employees") + + ' Create a SqlDataReader for use with the Load Method. + Dim reader As DataTableReader = employees.GetDataReader() + + ' Create an instance of DataTable and assign the first + ' DataTable in the DataSet.Tables collection to it. + Dim dataTableEmp As DataTable = employees.Tables(0) + + ' Fill the DataTable with data by calling Load and + ' passing the SqlDataReader. + dataTableEmp.Load(reader, LoadOption.OverwriteRow) + + ' Loop through the rows collection and display the values + ' in the console window. + Dim employeeRow As DataRow + For Each employeeRow In dataTableEmp.Rows + Console.WriteLine("{0:MM\\dd\\yyyy}" & ControlChars.Tab & _ + "{1}, {2}", _ + employeeRow("BirthDate"), _ + employeeRow("LastName"), _ + employeeRow("FirstName")) + Next employeeRow + + ' Keep the window opened to view the contents. + Console.ReadLine() +End Sub +``` + +## 参照 + [DataTable 内のデータの操作](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/typed-datasets.md b/docs/framework/data/adonet/dataset-datatable-dataview/typed-datasets.md new file mode 100644 index 00000000000..5d21e7a6d82 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/typed-datasets.md @@ -0,0 +1,35 @@ +--- +title: "型指定された DataSet | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 033d2548-cf24-4c05-8179-67d8b009c048 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 型指定された DataSet +厳密に型指定されていない変数を使用した値への遅延バインディング アクセスに加えて、 には、厳密に型指定された変数を使用したデータへのアクセスも用意されています。 **DataSet** の一部であるテーブルと列は、ユーザーが認識しやすい名前と厳密に型指定された変数を使用してアクセスできます。 + + 型指定された **DataSet** とは、**DataSet** から派生するクラスのことです。 したがって、型指定された **DataSet** は **DataSet** のすべてのメソッド、イベント、およびプロパティを継承します。 さらに、型指定された **DataSet** には、厳密に型指定されたメソッド、イベント、およびプロパティが用意されています。 つまり、コレクションベースのメソッドを使用せずに名前でテーブルおよび列にアクセスできます。 コードが読みやすく変更されただけでなく、型指定された **DataSet** を使用して、入力するとおりにラインを Visual Studio .NET コード エディターに自動挿入できます。 + + さらに、厳密に型指定された **DataSet** を使用してコンパイル時に正しい型で値にアクセスできます。 厳密に型指定された **DataSet** を使用すると、型の不一致が実行時ではなく、コードのコンパイル時にキャッチされます。 + +## このセクションの内容 + [厳密に型指定された DataSet の生成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/generating-strongly-typed-datasets.md) + 厳密に型指定された **DataSet** の作成および使用方法について説明します。 + + [型指定された DataSet の注釈](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/annotating-typed-datasets.md) + 基になるスキーマを変更せずに **DataSet** の要素に表示名を付けるために、厳密に型指定された **DataSet** の生成に使用する XML スキーマ定義言語 \(XSD\) スキーマに注釈を付ける方法について説明します。 + +## 参照 + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md b/docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md new file mode 100644 index 00000000000..4e3ab9e6278 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md @@ -0,0 +1,58 @@ +--- +title: "DataSet での XML の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 35138159-e199-49ec-baf7-1ec6777e171e +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataSet での XML の使用 +ADO.NET では、XML ストリームまたは XML ドキュメントから にデータを格納できます。 にデータまたはスキーマ情報を格納するには、XML ストリームまたは XML ドキュメントを使用します。 XML ストリームまたは XML ドキュメントから提供される情報を の既存のデータまたはスキーマ情報と組み合わせることもできます。 + + ADO.NET では、他のアプリケーションや XML 対応プラットフォームで が使用される場合に、この を HTTP 経由で転送するため、**DataSet** の XML 表現を作成できます。このとき、**DataSet** にスキーマが含まれていても、含まれていなくてもかまいません。 の XML 表現では、データを XML で記述します。XML 表現にスキーマをインラインで含める場合は、このスキーマを XML スキーマ定義言語 \(XSD\) で記述します。 XML および XML スキーマには、リモート クライアントとの間で の内容を転送するための便利な書式が用意されています。 + +## このセクションの内容 + [DiffGram](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/diffgrams.md) + の内容の読み取りと書き込みに使用される XML 形式である DiffGram について詳しく説明します。 + + [XML からの DataSet の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) + XML ドキュメントから の内容を読み込むときに考慮する必要のある各種オプションについて説明します。 + + [DataSet 内容の XML データとしての書き込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md) + の内容を XML データとして生成する方法と、使用できる各種 XML 形式オプションについて説明します。 + + [XML の DataSet スキーマ情報の読み込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-dataset-schema-information-from-xml.md) + XML から のスキーマを読み込むために使用される のメソッドについて説明します。 + + [XSD としての DataSet スキーマ情報の書き込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-schema-information-as-xsd.md) + XML スキーマの使用方法と、 からの XML スキーマの生成方法について説明します。 + + [DataSet と XmlDataDocument の同期](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md) + 1 つのデータ セットのリレーショナル ビューおよび階層ビューの両方に同期的な方法でアクセスする .NET Framework の機能について説明し、 の間で同期的なリレーションシップを確立する方法について説明します。 + + [DataRelation の入れ子化](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/nesting-datarelations.md) + の内容を XML データとして表現する場合において、入れ子になった オブジェクトの重要性について説明します。また、入れ子になったこれらのオブジェクトの作成方法について説明します。 + + [XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md) + XML スキーマから作成された のリレーショナル構造 \(スキーマ\) について説明します。 + + [XML からの DataSet リレーショナル構造の推論](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/inferring-dataset-relational-structure-from-xml.md) + XML 要素から推論する際に作成される のリレーショナル構造 \(スキーマ\) について説明します。 + +## 関連項目 + [ADO.NET の概要](../../../../../docs/framework/data/adonet/ado-net-overview.md) + ADO.NET のアーキテクチャとコンポーネントについて説明し、それらを使用して既存のデータ ソースにアクセスしたり、アプリケーション データを管理したりする方法を示します。 + +## 参照 + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/viewing-data-in-a-datatable.md b/docs/framework/data/adonet/dataset-datatable-dataview/viewing-data-in-a-datatable.md new file mode 100644 index 00000000000..719c26e30eb --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/viewing-data-in-a-datatable.md @@ -0,0 +1,122 @@ +--- +title: "DataTable 内のデータの表示 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1d26e0fb-f6e0-4afa-9a9c-b8d55b8f20dc +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# DataTable 内のデータの表示 + の内容には、**DataTable** の **Rows** コレクションと **Columns** コレクションを使用してアクセスできます。 また、 メソッドを使用すると、検索条件、並べ替え順序、行の状態などの基準に基づいて **DataTable** 内のデータのサブセットを返すことができます。 さらに、主キー値を使用して特定の行を検索するときは、**DataRowCollection** の メソッドを使用できます。 + + **DataTable** オブジェクトの **Select** メソッドは、指定された基準と一致する オブジェクトのセットを返します。 **Select** は、フィルター式、並べ替え式、および **DataViewRowState** のオプション引数を受け取ります。 フィルター式は、**DataColumn** 値に基づいて返す行を識別する `LastName = 'Smith'` などの式です。 並べ替え式は、列の並べ替えについての標準 SQL 規則に基づく `LastName ASC, FirstName ASC` などの式です。 式の記述の規則については、**DataColumn** クラスの プロパティのトピックを参照してください。 + +> [!TIP] +> **DataTable** の **Select** メソッドへの呼び出しを多数実行する場合は、最初に **DataTable** の を作成することにより、パフォーマンスを向上させることができます。 **DataView** を作成すると、テーブルの行にインデックスが付けられます。 **Select** メソッドがこのインデックスを使用すると、クエリ結果を生成するまでの時間が大幅に減少します。 **DataTable** の **DataView** を作成する方法については、「[DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataviews.md)」を参照してください。 + + **Select** メソッドは、 に基づいて、表示または操作する行のバージョンを判断します。 有効な **DataViewRowState** 列挙値の説明を次の表に示します。 + +|DataViewRowState の値|説明| +|-------------------------|--------| +|**CurrentRows**|変更されていない行、追加された行、および変更された行を含む現在の行。| +|**Deleted**|削除された行。| +|**ModifiedCurrent**|元のデータを変更した後のバージョンである、現在のバージョン。 **ModifiedOriginal** を参照してください。| +|**ModifiedOriginal**|変更されたすべての行の元のバージョン。 現在のバージョンは、**ModifiedCurrent**. を使用して取得できます。| +|**Added**|新しい行。| +|**なし**|なし。| +|**OriginalRows**|変更されていない行および削除された行を含む元の行。| +|**Unchanged**|変更されていない行。| + + **DataSet** オブジェクトをフィルター処理して、**DataViewRowState** が **CurrentRows** に設定されている行だけを操作できるようにする例を次に示します。 + +```vb +Dim column As DataColumn +Dim row As DataRow + +Dim currentRows() As DataRow = _ + workTable.Select(Nothing, Nothing, DataViewRowState.CurrentRows) + +If (currentRows.Length < 1 ) Then + Console.WriteLine("No Current Rows Found") +Else + For Each column in workTable.Columns + Console.Write(vbTab & column.ColumnName) + Next + + Console.WriteLine(vbTab & "RowState") + + For Each row In currentRows + For Each column In workTable.Columns + Console.Write(vbTab & row(column).ToString()) + Next + + Dim rowState As String = _ + System.Enum.GetName(row.RowState.GetType(), row.RowState) + Console.WriteLine(vbTab & rowState) + Next +End If + +``` + +```csharp +DataRow[] currentRows = workTable.Select( + null, null, DataViewRowState.CurrentRows); + +if (currentRows.Length < 1 ) + Console.WriteLine("No Current Rows Found"); +else +{ + foreach (DataColumn column in workTable.Columns) + Console.Write("\t{0}", column.ColumnName); + + Console.WriteLine("\tRowState"); + + foreach (DataRow row in currentRows) + { + foreach (DataColumn column in workTable.Columns) + Console.Write("\t{0}", row[column]); + + Console.WriteLine("\t" + row.RowState); + } +} +``` + + **Select** メソッドを使用して、異なる **RowState** 値またはフィールド値を持つ行を返すこともできます。 削除されたすべての行を参照する **DataRow** 配列を返し、また、**CustLName** を基準にして並べ替えた **CustID** 列が 5 より大きいすべての行を参照する、別の **DataRow** 配列も返す例を次に示します。 **Deleted** 行の情報を表示する方法については、「[行の状態とバージョン](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md)」を参照してください。 + +```vb +' Retrieve all deleted rows. +Dim deletedRows() As DataRow = workTable.Select(Nothing, Nothing, DataViewRowState.Deleted) + +' Retrieve rows where CustID > 5, and order by CustLName. +Dim custRows() As DataRow = workTable.Select( _ + "CustID > 5", "CustLName ASC") + +``` + +```csharp +// Retrieve all deleted rows. +DataRow[] deletedRows = workTable.Select( + null, null, DataViewRowState.Deleted); + +// Retrieve rows where CustID > 5, and order by CustLName. +DataRow[] custRows = workTable.Select("CustID > 5", "CustLName ASC"); +``` + +## 参照 + + + + + [DataTable 内のデータの操作](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/manipulating-data-in-a-datatable.md) + [行の状態とバージョン](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/row-states-and-row-versions.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md b/docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md new file mode 100644 index 00000000000..293d7998378 --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md @@ -0,0 +1,89 @@ +--- +title: "DataSet 内容の XML データとしての書き込み | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fd15f8a5-3b4c-46d0-a561-4559ab2a4705 +caps.latest.revision: 5 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 5 +--- +# DataSet 内容の XML データとしての書き込み +ADO.NET での XML 表現を記述する、、またはスキーマなし。 XML にインラインで含まれているスキーマ情報は、XML スキーマ定義言語 (XSD) を使用して記述されています。 スキーマにはテーブルの定義が含まれています、リレーションシップと制約の定義とします。 + + ときに、内の行、XML データとして書き込まれる、が現在のバージョンで書き込まれます。 ただし、書き込むこともできますが DiffGram としてそう、現在と行の元の値の両方が含まれています。 + + XML 表現、ファイル、ストリームに書き込むことが、 **XmlWriter**、または文字列です。 これらの選択肢では、優れた柔軟性を提供の XML 表現の転送方法をします。 XML 表現を取得する、を文字列として使用して、 **GetXml**メソッドを次の例で示すようにします。 + +```vb +Dim xmlDS As String = custDS.GetXml() +``` + +```csharp +string xmlDS = custDS.GetXml(); +``` + + **GetXml**の XML 表現を返す、スキーマ情報がない場合。 スキーマ情報を書き込むため、(XML スキーマ) として使用して、文字列に**GetXmlSchema**します。 + + 書き込む、、ファイル、ストリーム、または**XmlWriter**を使用して、 **WriteXml**メソッドです。 最初のパラメーターに渡す**WriteXml** XML の出力先であります。 たとえば、ファイル名を含む文字列を渡して、 **System.IO.TextWriter**オブジェクト、およびなどです。 省略可能な&2; 番目のパラメーターを渡すことができます、**から成る**XML 出力が書き込まれる方法を指定します。 + + 次の表に、オプションの**から成る**します。 + +|XmlWriteMode のオプション|説明| +|-------------------------|-----------------| +|**IgnoreSchema**|現在の内容を書き込み、せず、XML スキーマの XML データとして。 既定値です。| +|**書き込むには**|現在の内容を書き込み、インライン XML スキーマとして、リレーショナル構造の XML データとして。| +|**DiffGram**|全体を書き込みますを DiffGram として元と現在の値を含みます。 詳細については、次を参照してください。 [Diffgram](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/diffgrams.md)します。| + + XML 表現を記述するとき、を含む**DataRelation**オブジェクトの場合、結果の XML を持つ、関連する親要素内で入れ子になった各リレーションシップの子の行にする可能性があります。 これを実現する次のように設定します。、**入れ子になった**のプロパティ、 **DataRelation**に**true**を追加すると、 **DataRelation**に、します。 詳細については、次を参照してください。 [Datarelation の入れ子](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/nesting-datarelations.md)します。 + + XML 表現を記述する方法の&2; つの例を次に、ファイルにします。 最初の例では、xml ファイルの名前を渡しますに文字列として**WriteXml**します。 2 番目の例では、 **System.IO.StreamWriter**オブジェクトです。 + +```vb +custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema) + +``` + +```csharp +custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema); + +``` + +```vb +Dim xmlSW As System.IO.StreamWriter = New System.IO.StreamWriter("Customers.xml") +custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema) +xmlSW.Close() + +``` + +```csharp +System.IO.StreamWriter xmlSW = new System.IO.StreamWriter("Customers.xml"); +custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema); +xmlSW.Close(); +``` + +## XML 要素、属性、およびテキストへの列の割り当て + テーブルの列を XML で表現する方法を指定することができますを使用して、 **ColumnMapping**のプロパティ、 **DataColumn**オブジェクトです。 次の表に示します**MappingType**の値、 **ColumnMapping**テーブルの列と、結果の XML のプロパティです。 + +|MappingType の値|説明| +|-----------------------|-----------------| +|**要素**|既定値です。 列が XML 要素として書き込まれます。このとき、ColumnName は要素名になり、列の内容は要素のテキストとして書き込まれます。 例:

`Column Contents`| +|**属性**|列が、現在の行の XML 要素の XML 属性として書き込まれます。このとき、ColumnName は属性名になり、列の内容は属性の値として書き込まれます。 例:

``| +|**SimpleContent**|列の内容が、現在の行の XML 要素のテキストとして書き込まれます。 例:

`Column Contents`

なお**SimpleContent**を持つテーブルの列を設定できません**要素**列または入れ子になったリレーションです。| +|**非表示**|列は XML 出力に書き込まれません。| + +## 関連項目 + [データセットの XML を使用します。](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [Diffgram](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/diffgrams.md) + [Datarelation の入れ子化](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/nesting-datarelations.md) + [XSD としての DataSet スキーマ情報の書き込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-schema-information-as-xsd.md) + [Dataset、Datatable、および Dataview](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET マネージ プロバイダーと DataSet デベロッパー センター](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-schema-information-as-xsd.md b/docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-schema-information-as-xsd.md new file mode 100644 index 00000000000..866965cc8cc --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-schema-information-as-xsd.md @@ -0,0 +1,61 @@ +--- +title: "XSD としての DataSet スキーマ情報の書き込み | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4e530831-695e-49ff-8f0b-e5b0c526b8eb +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XSD としての DataSet スキーマ情報の書き込み + のスキーマを XML スキーマ定義言語 \(XSD\) スキーマとして書き込むと、このスキーマを XML ドキュメントに転送できます。このとき関連データを含む定義、または関連データを含まない定義ができます。 XML スキーマはファイル、ストリーム、、または文字列に書き込むことができるため、厳密に型指定された **DataSet** を生成するときに役立ちます。 厳密に型指定された **DataSet** オブジェクトの詳細については、「[型指定された DataSet](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/typed-datasets.md)」を参照してください。 + + テーブルの列を XML スキーマで表す方法を指定するには、 オブジェクトの **ColumnMapping** プロパティを使用します。 詳細については、「[DataSet 内容の XML データとしての書き込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md)」の「XML 要素、属性、およびテキストへの列の割り当て」を参照してください。 + + **DataSet** スキーマを XML スキーマとしてファイル、ストリーム、または **XmlWriter** に書き込むには、**DataSet** の **WriteXmlSchema** メソッドを使用します。 **WriteXmlSchema** は、XML スキーマの書き込み先を指定するパラメーターを 1 つ受け取ります。 ファイル名を含んだ文字列と オブジェクトを渡して **DataSet** の XML スキーマをファイルに書き込む方法を示すコード サンプルを次に示します。 + +```vb +dataSet.WriteXmlSchema("Customers.xsd") +``` + +```csharp +dataSet.WriteXmlSchema("Customers.xsd"); +``` + +```vb +Dim writer As System.IO.StreamWriter = New System.IO.StreamWriter("Customers.xsd") +dataSet.WriteXmlSchema(writer) +writer.Close() +``` + +```csharp +System.IO.StreamWriter writer = new System.IO.StreamWriter("Customers.xsd"); +dataSet.WriteXmlSchema(writer); +writer.Close(); +``` + + **DataSet** のスキーマを取得し、XML スキーマ文字列として書き込むには、次の例に示すように **GetXmlSchema** メソッドを使用します。 + +```vb +Dim schemaString As String = dataSet.GetXmlSchema() +``` + +```csharp +string schemaString = dataSet.GetXmlSchema(); +``` + +## 参照 + [DataSet での XML の使用](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) + [DataSet 内容の XML データとしての書き込み](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md) + [型指定された DataSet](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/typed-datasets.md) + [DataSets、DataTables、および DataViews](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/index.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-datatable-dataview/xml-schema-constraints-and-relationships.md b/docs/framework/data/adonet/dataset-datatable-dataview/xml-schema-constraints-and-relationships.md new file mode 100644 index 00000000000..2345384c71a --- /dev/null +++ b/docs/framework/data/adonet/dataset-datatable-dataview/xml-schema-constraints-and-relationships.md @@ -0,0 +1,198 @@ +--- +title: "XML スキーマ制約およびリレーションシップ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 165bc2bc-60a1-40e0-9b89-7c68ef979079 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# XML スキーマ制約およびリレーションシップ +XML スキーマ定義言語 \(XSD\) スキーマでは、制約 \(UNIQUE、キー、キー参照\) およびリレーションシップ \(**msdata:Relationship** 注釈を使用した\) を指定できます。 このトピックでは、XML スキーマで指定した制約およびリレーションシップを解釈して を生成する方法について説明します。 + + 一般的に、XML スキーマでは **DataSet** にリレーションシップだけを生成する場合に、**msdata:Relationship** 注釈を指定します。 詳細については、「[XML スキーマ \(XSD\) からの DataSet リレーションの生成](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/generating-dataset-relations-from-xml-schema-xsd.md)」を参照してください。 **DataSet** に制約を生成する場合は、制約 \(UNIQUE、キー、およびキー参照\) を指定します。 このトピックの後に説明されているように、リレーションシップを生成するにはキー制約とキー参照制約も使用するので注意してください。 + +## キー制約およびキー参照制約によるリレーションシップの生成 + **msdata:Relationship** 注釈を指定する代わりに、XML スキーマの割り当て処理時に使用するキー制約とキー参照制約を指定し、制約だけでなく、**DataSet** のリレーションシップも生成することができます。 ただし、**keyref** 要素で `msdata:ConstraintOnly="true"` を指定した場合、**DataSet** には制約だけが作成され、リレーションシップは生成されません。 + + 入れ子になっていない **Order** 要素と **OrderDetail** 要素を含む XML スキーマの例を次に示します。 スキーマでは、キー制約とキー参照制約も指定します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + XML スキーマの割り当て処理時に生成される **DataSet** には、**Order** テーブルと **OrderDetail** テーブルが含まれます。 さらに、**DataSet** にはリレーションシップと制約も含まれます。 そのリレーションシップと制約の例を次に示します。 スキーマでは、**msdata:Relationship** 注釈が指定されないことに注意してください。代わりに、キー制約とキー参照制約を使用してリレーションを生成します。 + +``` +....ConstraintName: OrderNumberKey +....Type: UniqueConstraint +....Table: Order +....Columns: OrderNumber +....IsPrimaryKey: False + +....ConstraintName: OrderNoRef +....Type: ForeignKeyConstraint +....Table: OrderDetail +....Columns: OrderNo +....RelatedTable: Order +....RelatedColumns: OrderNumber + +..RelationName: OrderNoRef +..ParentTable: Order +..ParentColumns: OrderNumber +..ChildTable: OrderDetail +..ChildColumns: OrderNo +..ParentKeyConstraint: OrderNumberKey +..ChildKeyConstraint: OrderNoRef +..Nested: False +``` + + 上記のスキーマの例では、**Order** 要素と **OrderDetail** 要素は入れ子になっていません。 入れ子になっている **Order** 要素と **OrderDetail** 要素を含むスキーマの例を次に示します。 ただし、**msdata:Relationship** 注釈が指定されていないため、暗黙のリレーションが適用されます。 詳細については、「[入れ子になっているスキーマ要素間の暗黙的なリレーションの割り当て](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/map-implicit-relations-between-nested-schema-elements.md)」を参照してください。 スキーマでは、キー制約とキー参照制約も指定します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + XML スキーマの割り当て処理によって生成された **DataSet** には、次の 2 つのテーブルが含まれます。 + +``` +Order(OrderNumber, EmpNumber, Order_Id) +OrderDetail(OrderNumber, ItemNumber, Order_Id) +``` + + さらに、**DataSet** には 2 つのリレーションシップ \(1 つは **msdata:relationship** 注釈に基づいた、もう 1 つはキー制約とキー参照制約に基づいた\) およびさまざまな制約も含まれます。 リレーションおよび制約の例を次に示します。 + +``` +..RelationName: Order_OrderDetail +..ParentTable: Order +..ParentColumns: Order_Id +..ChildTable: OrderDetail +..ChildColumns: Order_Id +..ParentKeyConstraint: Constraint1 +..ChildKeyConstraint: Order_OrderDetail +..Nested: True + +..RelationName: OrderNoRef +..ParentTable: Order +..ParentColumns: OrderNumber +..ChildTable: OrderDetail +..ChildColumns: OrderNo +..ParentKeyConstraint: OrderNumberKey +..ChildKeyConstraint: OrderNoRef +..Nested: False + +..ConstraintName: OrderNumberKey +..Type: UniqueConstraint +..Table: Order +..Columns: OrderNumber +..IsPrimaryKey: False + +..ConstraintName: Constraint1 +..Type: UniqueConstraint +..Table: Order +..Columns: Order_Id +..IsPrimaryKey: True + +..ConstraintName: Order_OrderDetail +..Type: ForeignKeyConstraint +..Table: OrderDetail +..Columns: Order_Id +..RelatedTable: Order +..RelatedColumns: Order_Id + +..ConstraintName: OrderNoRef +..Type: ForeignKeyConstraint +..Table: OrderDetail +..Columns: OrderNo +..RelatedTable: Order +..RelatedColumns: OrderNumber +``` + + 入れ子になっているテーブルを参照するキー参照制約に **msdata:IsNested\="true"** 注釈が含まれている場合は、そのキー参照制約と関連する UNIQUE\/ キー制約に基づいて、1 つの入れ子になったリレーションシップが作成されます。 + +## 参照 + [XML スキーマ \(XSD\) からの DataSet リレーショナル構造の派生](../../../../../docs/framework/data/adonet/dataset-datatable-dataview/deriving-dataset-relational-structure-from-xml-schema-xsd.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataset-specific-operator-examples-linq-to-dataset.md b/docs/framework/data/adonet/dataset-specific-operator-examples-linq-to-dataset.md new file mode 100644 index 00000000000..da69b139cc9 --- /dev/null +++ b/docs/framework/data/adonet/dataset-specific-operator-examples-linq-to-dataset.md @@ -0,0 +1,54 @@ +--- +title: "DataSet-Specific Operator Examples (LINQ to DataSet) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8fdd64af-6ad0-46cd-91c8-dbe26620eeb1 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# DataSet-Specific Operator Examples (LINQ to DataSet) +このトピックでは、 メソッドおよび クラスの使用例を紹介しています。 + + これらの例で使用されている `FillDataSet` メソッドの指定については、「[Loading Data Into a DataSet](../../../../docs/framework/data/adonet/loading-data-into-a-dataset.md)」を参照してください。 + + このトピックの例には、AdventureWorks サンプル データベースの Contact、Address、Product、SalesOrderHeader、SalesOrderDetail の各テーブルが使用されています。 + + このトピックの例には、次の `using`\/`Imports` ステートメントが使用されています。 + + [!code-csharp[DP LINQ to DataSet Examples#ImportsUsing](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/CS/Program.cs#importsusing)] + [!code-vb[DP LINQ to DataSet Examples#ImportsUsing](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/VB/Module1.vb#importsusing)] + + 詳細については、「[How to: Create a LINQ to DataSet Project In Visual Studio](../../../../docs/framework/data/adonet/how-to-create-a-linq-to-dataset-project-in-vs.md)」を参照してください。 + +## CopyToDataTable + +### 例 + この例では、 メソッドを使用して、 にクエリ結果を読み込みます。 + + [!code-csharp[DP LINQ to DataSet Examples#LoadDataTableWithQueryResults](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/CS/Program.cs#loaddatatablewithqueryresults)] + [!code-vb[DP LINQ to DataSet Examples#LoadDataTableWithQueryResults](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/VB/Module1.vb#loaddatatablewithqueryresults)] + +``` + +``` + +## DataRowComparer + +### 例 + この例では 2 つの異なるデータ行を を使用して比較します。 + + [!code-csharp[DP LINQ to DataSet Examples#CompareDifferentDataRows](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP LINQ to DataSet Examples/CS/Program.cs#comparedifferentdatarows)] + +## 参照 + [Loading Data Into a DataSet](../../../../docs/framework/data/adonet/loading-data-into-a-dataset.md) + [LINQ to DataSet Examples](../../../../docs/framework/data/adonet/linq-to-dataset-examples.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/dataview-performance.md b/docs/framework/data/adonet/dataview-performance.md new file mode 100644 index 00000000000..395ac81324f --- /dev/null +++ b/docs/framework/data/adonet/dataview-performance.md @@ -0,0 +1,94 @@ +--- +title: "DataView Performance | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 90820e49-9d46-41f6-9a3d-6c0741bbd8eb +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# DataView Performance +このトピックでは、 クラスの メソッドと メソッドを使用すること、および、Web アプリケーションで をキャッシュすることのパフォーマンス上の利点について説明します。 + +## Find と FindRows + はインデックスを構築します。 インデックスには、テーブル内またはビュー内の 1 つ以上の列から構築されたキーが含まれています。 これらのキーは特定の構造内に格納され、 はその構造を使用して、キー値に関連した 1 つ以上の行を効率よく迅速に検出できます。 フィルター処理や並べ替えなど、インデックスを使用した操作では、大幅なパフォーマンス向上が期待できます。 のインデックスは、 の作成時に構築されるほか、並べ替えまたはフィルター処理の情報が変更されたときにも構築されます。 を作成した後で、並べ替えまたはフィルター処理の情報を設定した場合、インデックスが最低でも 2 回 \( の作成時と、並べ替えまたはフィルターのプロパティの変更時\) 構築されることになります。 でのフィルターおよび並べ替えの詳細については、「[Filtering with DataView](../../../../docs/framework/data/adonet/filtering-with-dataview-linq-to-dataset.md)」および「[Sorting with DataView](../../../../docs/framework/data/adonet/sorting-with-dataview-linq-to-dataset.md)」を参照してください。 + + データ サブセットの動的ビューの作成とは対照的に、データに対する特定のクエリの結果を取得する場合は、 プロパティを設定する代わりに メソッドまたは メソッドを使用します。 プロパティは、データ連結アプリケーションでの使用に適しています。このアプリケーションでは、連結されたコントロールによってフィルター処理結果が表示されます。 プロパティを設定すると、データのインデックスが再構築され、アプリケーションのオーバーヘッドが増加してパフォーマンスの低下を招きます。 メソッドと メソッドでは、現在のインデックスが使用されます。このため、インデックスを再構築する必要はありません。 または を 1 回だけ呼び出す場合は、既存の を使用するようにします。 または を複数回呼び出す場合は、新しい を作成して検索対象の列のインデックスを再構築した後、 メソッドまたは メソッドを呼び出します。 メソッドおよび メソッドの詳細については、「[行の検索](../../../../docs/framework/data/adonet/dataset-datatable-dataview/finding-rows.md)」を参照してください。 + + 次の例では、 メソッドを使用して、姓が "Zhu" である連絡先を検索します。 + + [!code-csharp[DP DataView Samples#LDVFromQueryOrderByFind](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP DataView Samples/CS/Form1.cs#ldvfromqueryorderbyfind)] + [!code-vb[DP DataView Samples#LDVFromQueryOrderByFind](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP DataView Samples/VB/Form1.vb#ldvfromqueryorderbyfind)] + + 次の例では、 メソッドを使用して、赤色の製品をすべて検索します。 + + [!code-csharp[DP DataView Samples#LDVFromQueryFindRows](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DP DataView Samples/CS/Form1.cs#ldvfromqueryfindrows)] + [!code-vb[DP DataView Samples#LDVFromQueryFindRows](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DP DataView Samples/VB/Form1.vb#ldvfromqueryfindrows)] + +## ASP.NET + ASP.NET は、メモリ内に作成するときにサーバー リソースを激しく消費するオブジェクトを保存するためのキャッシュ メカニズムを備えています。 こうしたリソースをキャッシュすることで、アプリケーションのパフォーマンスを大幅に向上させることができます。 キャッシュは、 クラスに実装されています。キャッシュ インスタンスは、アプリケーションごとにプライベートに保たれます。 新しい オブジェクトの作成はリソースを大量に消費する処理です。Web アプリケーションにこのキャッシュ機能を使用すれば、Web ページが更新されるたびに を再構築する必要はありません。 + + 次の例では、ページが更新されたときにデータの並べ替えをし直さなくても済むように、 をキャッシュしています。 + +```vb +If (Cache("ordersView") = Nothing) Then + +Dim dataSet As New DataSet() + + FillDataSet(dataSet) + + Dim orders As DataTable = dataSet.Tables("SalesOrderHeader") + + Dim query = _ + From order In orders.AsEnumerable() _ + Where order.Field(Of Boolean)("OnlineOrderFlag") = True _ + Order By order.Field(Of Decimal)("TotalDue") _ + Select order + + Dim view As DataView = query.AsDataView() + + Cache.Insert("ordersView", view) + +End If + +Dim ordersView = CType(Cache("ordersView"), DataView) + +GridView1.DataSource = ordersView +GridView1.DataBind() +``` + +```csharp +if (Cache["ordersView"] == null) +{ + // Fill the DataSet. + DataSet dataSet = FillDataSet(); + + DataTable orders = dataSet.Tables["SalesOrderHeader"]; + + EnumerableRowCollection query = + from order in orders.AsEnumerable() + where order.Field("OnlineOrderFlag") == true + orderby order.Field("TotalDue") + select order; + + DataView view = query.AsDataView(); + Cache.Insert("ordersView", view); +} + +DataView ordersView = (DataView)Cache["ordersView"]; + +GridView1.DataSource = ordersView; +GridView1.DataBind(); +``` + +## 参照 + [Data Binding and LINQ to DataSet](../../../../docs/framework/data/adonet/data-binding-and-linq-to-dataset.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/dbconnection-dbcommand-and-dbexception.md b/docs/framework/data/adonet/dbconnection-dbcommand-and-dbexception.md new file mode 100644 index 00000000000..946f8d750ac --- /dev/null +++ b/docs/framework/data/adonet/dbconnection-dbcommand-and-dbexception.md @@ -0,0 +1,74 @@ +--- +title: "DbConnection、DbCommand、および DbException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 58aab611-7e6f-4749-b983-28ab7ae87dbe +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# DbConnection、DbCommand、および DbException + および を作成すると、コマンドおよびデータ リーダーを使用してデータ ソースからデータを取得できます。 + +## データの取得例 + 次のコード例は、`DbConnection` オブジェクトを引数として受け取ります。 に SQL SELECT ステートメントを設定することによって、Categories テーブルからデータを検索するための を作成します。 このコードを実行するには、データ ソースに Categories テーブルが存在する必要があります。 接続を開いた後、 を使用してデータが取得されます。 + + [!code-csharp[DataWorks DbProviderFactories.DbCommandData#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks DbProviderFactories.DbCommandData/CS/source.cs#1)] + [!code-vb[DataWorks DbProviderFactories.DbCommandData#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks DbProviderFactories.DbCommandData/VB/source.vb#1)] + +## コマンド実行例 + 次のコード例は、`DbConnection` オブジェクトを引数として受け取ります。 `DbConnection` が有効である場合、接続が開かれ、 が作成されて実行されます。 には、Northwind データベースの Categories テーブルへの挿入操作を実行する SQL INSERT ステートメントが設定されています。 このコードを実行するには、データ ソースに Northwind データベースが存在すること、および、指定されたプロバイダーの有効な SQL 構文が INSERT ステートメントに使用されていることが必要です。 データ ソースで発生したエラーは コード ブロックで処理され、それ以外のすべての例外は ブロックで処理されます。 + + [!code-csharp[DataWorks DbProviderFactories.DbCommand#1](../../../../samples/snippets/csharp/VS_Snippets_ADO.NET/DataWorks DbProviderFactories.DbCommand/CS/source.cs#1)] + [!code-vb[DataWorks DbProviderFactories.DbCommand#1](../../../../samples/snippets/visualbasic/VS_Snippets_ADO.NET/DataWorks DbProviderFactories.DbCommand/VB/source.vb#1)] + +## DbException でのデータ エラーの処理 + クラスは、データ ソースでスローされるすべての例外の基本クラスです。 このクラスを例外処理コードに使用することで、プロバイダーに固有の例外クラスを参照することなく、各種のプロバイダーによってスローされる例外を処理できます。 次のコード フラグメントでは、 の各プロパティ \(、および \) を使って、データ ソースから返されたエラー情報を表示しています。 出力結果には、エラーの種類、エラーの発生元 \(プロバイダー名\)、エラー コード、および、エラーに関連付けられたメッセージが表示されます。 + +```vb +Try + ' Do work here. +Catch ex As DbException + ' Display information about the exception. + Console.WriteLine("GetType: {0}", ex.GetType()) + Console.WriteLine("Source: {0}", ex.Source) + Console.WriteLine("ErrorCode: {0}", ex.ErrorCode) + Console.WriteLine("Message: {0}", ex.Message) +Finally + ' Perform cleanup here. +End Try +``` + +```csharp +try +{ + // Do work here. +} +catch (DbException ex) +{ + // Display information about the exception. + Console.WriteLine("GetType: {0}", ex.GetType()); + Console.WriteLine("Source: {0}", ex.Source); + Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); + Console.WriteLine("Message: {0}", ex.Message); +} +finally +{ + // Perform cleanup here. +} +``` + +## 参照 + [DbProviderFactories](../../../../docs/framework/data/adonet/dbproviderfactories.md) + [DbProviderFactory の取得](../../../../docs/framework/data/adonet/obtaining-a-dbproviderfactory.md) + [DbDataAdapter を使用したデータの変更](../../../../docs/framework/data/adonet/modifying-data-with-a-dbdataadapter.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/dbproviderfactories.md b/docs/framework/data/adonet/dbproviderfactories.md new file mode 100644 index 00000000000..64b1dfe353d --- /dev/null +++ b/docs/framework/data/adonet/dbproviderfactories.md @@ -0,0 +1,39 @@ +--- +title: "DbProviderFactories | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2a8e2640-3a49-42a1-a3a9-b43026907ae1 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# DbProviderFactories + 名前空間には、特定のデータ ソースを使用するための インスタンスを作成するクラスが用意されています。 インスタンスを作成し、データ プロバイダーに関する情報をそのインスタンスに渡すと、`DbProviderFactory` はあらかじめ提供された情報に基づいて厳密に型指定された正しいオブジェクトを判断して返すことができます。 + + .NET Framework バージョン 4 以降では、、および などのデータ プロバイダーは machine.config ファイルに表示されなくなりますが、カスタム プロバイダーは表示されます。 + +## このセクションの内容 + [ファクトリ モデルの概要](../../../../docs/framework/data/adonet/factory-model-overview.md) + ファクトリ デザイン パターンとプログラミング インターフェイスの概要を説明します。 + + [DbProviderFactory の取得](../../../../docs/framework/data/adonet/obtaining-a-dbproviderfactory.md) + インストールされているデータ プロバイダーの一覧を取得したり、`DbProviderFactory` から を作成したりする方法について説明します。 + + [DbConnection、DbCommand、および DbException](../../../../docs/framework/data/adonet/dbconnection-dbcommand-and-dbexception.md) + の作成方法のほか、 を使ったデータ エラーの処理方法について説明します。 + + [DbDataAdapter を使用したデータの変更](../../../../docs/framework/data/adonet/modifying-data-with-a-dbdataadapter.md) + を使用して、データを取得したり変更したりする方法について説明します。 + +## 参照 + [ADO.NET でのデータの取得および変更](../../../../docs/framework/data/adonet/retrieving-and-modifying-data.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/debugging-linq-to-dataset-queries.md b/docs/framework/data/adonet/debugging-linq-to-dataset-queries.md new file mode 100644 index 00000000000..efc339a7b89 --- /dev/null +++ b/docs/framework/data/adonet/debugging-linq-to-dataset-queries.md @@ -0,0 +1,38 @@ +--- +title: "Debugging LINQ to DataSet Queries | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f4c54015-8ce2-4c5c-8d18-7038144cc66d +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# Debugging LINQ to DataSet Queries +[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] は、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] コードのデバッグをサポートしています。 ただし、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] コードのデバッグと [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] 以外のマネージ コードのデバッグとでは若干違いがあります。ステップ実行、ブレークポイントの設定、デバッガー ウィンドウでの結果の確認など、ほとんどのデバッグ機能は [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] ステートメントでも使用できます。 ただし、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] コードをデバッグする際は、クエリの遅延実行によって生じる副作用を考慮する必要があります。また、エディット コンティニュにも使用上の制限がいくつかあります。 このトピックでは、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] でデバッグを行う場合に固有の事項について、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] 以外のマネージ コードと比較しつつ説明します。 + +## 結果の表示 + [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] ステートメントの結果は、データヒント、\[ウォッチ\] ウィンドウ、\[クイック ウォッチ\] ダイアログ ボックスを使用して確認できます。 ソース ウィンドウで特定のクエリにポインターを置くと、データヒントが表示されます。 [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] の変数をコピーし、それを \[ウォッチ\] ウィンドウまたは \[クイック ウォッチ\] ダイアログ ボックスに貼り付けることができます。[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] では、クエリが評価されるのは、作成したときでも宣言したときでもなく、実際にそのクエリが実行されたときです。 これを*遅延実行*といいます。 したがって、それが評価されるまでは、クエリ変数に値は割り当てられません。 詳細については、「[Queries in LINQ to DataSet](../../../../docs/framework/data/adonet/queries-in-linq-to-dataset.md)」を参照してください。 + + デバッガーは、クエリの結果を表示するために、そのクエリを評価する必要があります。 この暗黙的な評価は、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] のクエリ結果をデバッガーで表示したときに実行されます。この点には、考慮する必要のあるいくつかの影響があります。 クエリの評価には時間がかかります。 結果ノードを展開するときにも時間を要します。 クエリによっては繰り返し評価が実行され、パフォーマンスが著しく低下する場合があります。 さらに、データの値またはプログラムの状態が変わるという副作用が伴う場合もあります。 すべてのクエリに副作用があるわけではありません。 副作用を伴うことなく安全にクエリを評価できるかどうかを判断するには、クエリが実装されているコードを十分に理解する必要があります。 詳細については、「[副作用と式](../Topic/Side%20Effects%20and%20Expressions.md)」を参照してください。 + +## エディット コンティニュ + エディット コンティニュは、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリに対する変更をサポートしません。 デバッグ セッション中に [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] ステートメントを追加、削除、または変更しようとした場合、エディット コンティニュでサポートされない変更であることを伝えるダイアログ ボックスが表示されます。 このとき、変更を元に戻すか、デバッグ セッションを中止して編集済みのコードで新たなセッションを開始するかを選択できます。 + + また、エディット コンティニュでは、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] ステートメントで使用されている変数の型または値を変更することはできません。 この場合も、変更を元に戻すか、デバッグ セッションを中止して新たなセッションを開始するかを選択できます。 + + Visual Studio の Visual C\# では、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリを含んだメソッドのコードに対して、エディット コンティニュを使用することはできません。 + + Visual Studio の Visual Basic では、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリを含んだメソッドであっても、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] 以外のコードであればエディット コンティニュを使用できます。 [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] ステートメントの前にコードを追加したり削除したりすることもできます。その変更によって [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリの行番号に影響が生じる場合でも可能です。 [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] 以外のコードの Visual Basic デバッグは、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] が導入される前と同じように動作します。 ただし、[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] クエリの変更、追加、または削除を行う場合は、デバッグを停止してから変更を適用する必要があります。 + +## 参照 + [マネージ コードのデバッグ](../Topic/Debugging%20Managed%20Code.md) + [Programming Guide](../../../../docs/framework/data/adonet/programming-guide-linq-to-dataset.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/distributed-transactions.md b/docs/framework/data/adonet/distributed-transactions.md new file mode 100644 index 00000000000..b4fd9f9708f --- /dev/null +++ b/docs/framework/data/adonet/distributed-transactions.md @@ -0,0 +1,60 @@ +--- +title: "分散トランザクション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 718b257c-bcb2-408e-b004-a7b0adb1c176 +caps.latest.revision: 7 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 7 +--- +# 分散トランザクション +トランザクションとは、たとえば、1 つの単位として成功 \(コミット\) または失敗 \(アボート\) する関連タスク セットです。 *分散トランザクション*は、複数のリソースに影響するトランザクションです。 分散トランザクションがコミットされるためには、すべての参加要素が、すべてのデータ変更が永久的な変更となることを保証する必要があります。 システム クラッシュその他の予期しない出来事が発生した場合でも、変更は保持されます。 1 つの参加要素がこの保証に失敗しただけでも、トランザクション全体が失敗し、トランザクションのスコープ内のデータに対する変更がロールバックされます。 + +> [!NOTE] +> トランザクションがアクティブであるときに `DataReader` が開始された場合、トランザクションをコミットまたはロールバックしようとすると例外がスローされます。 + +## System.Transactions の操作 + .NET Framework では、分散トランザクションは 名前空間内の API を介して管理されます。 複数の永続的なリソース マネージャーが関係する場合、 API は分散トランザクション処理を Microsoft Distributed Transaction Coordinator \(MS DTC\) などのトランザクション モニターに委任します。 詳細については、「[Transaction Fundamentals](http://msdn.microsoft.com/ja-jp/2a476b63-b94f-443f-992d-53943fdf4e5d)」を参照してください。 + + ADO.NET 2.0 では、`EnlistTransaction` メソッドを使用した分散トランザクションへの参加のサポートが導入されました。これにより、接続を インスタンスに参加させることができます。 ADO.NET の以前のバージョンでは、分散トランザクションへの明示的な参加は、接続の `EnlistDistributedTransaction` メソッドを使用して実行されていました。これによって インスタンス内の接続を参加させることで、下位互換性を得ることができます。 Enterprise Services トランザクションの詳細については、「[Interoperability with Enterprise Services and COM\+ Transactions](http://msdn.microsoft.com/ja-jp/2e93b3c6-4d48-4b9b-82b2-7d5908a2c970)」を参照してください。 + + .NET Framework Provider for SQL Server で SQL Server データベースに対して トランザクションを使用する場合は、軽量な が自動的に使用されます。 トランザクションは、必要に応じて完全な分散トランザクションに昇格させることができます。 詳細については、「[SQL Server と System.Transactions の統合](../../../../docs/framework/data/adonet/system-transactions-integration-with-sql-server.md)」を参照してください。 + +> [!NOTE] +> 既定では、1 つの Oracle データベースが一度に参加できる分散トランザクションの最大数は 10 に設定されています。 Oracle データベースに接続している場合、トランザクション数が 10 個を超えると例外がスローされます。 Oracle では、分散トランザクション内での `DDL` はサポートされません。 + +## 分散トランザクションへの自動参加 + 自動参加は、ADO.NET 接続を `System.Transactions` に統合する場合の既定の \(推奨される\) 方法です。 接続オブジェクトは、トランザクションがアクティブであると判定されると、既存の分散トランザクションに自動的に参加します。トランザクションがアクティブであることは、`System.Transaction` から見ると、`Transaction.Current` が null でないことを意味します。 自動トランザクション参加は、接続が開かれた場合に行われます。 その後は、コマンドがトランザクションのスコープ内で実行された場合でも、自動トランザクション参加は行われません。 の接続文字列パラメーターとして `Enlist=false` を指定するか、 の接続文字パラメーターとして `OLE DB Services=-7` を指定すると、既存のトランザクションへの自動参加を無効にできます。 Oracle および ODBC 接続文字列パラメーターの詳細については、「」および「」を参照してください。 + +## 手動による分散トランザクションへの参加 + 自動参加が無効になっている場合、または接続が開いた後に開始したトランザクションに参加する必要がある場合は、使用中のプロバイダーの オブジェクトの `EnlistTransaction` メソッドを使用して、既存の分散トランザクションに参加できます。 既存の分散トランザクションに参加すると、トランザクションがコミットまたはロールバックされた場合、データ ソースに対してコードで行った変更もコミットまたはロールバックされます。 + + 分散トランザクションへの参加は、特にビジネス オブジェクトをプールする場合に適切です。 ビジネス オブジェクトが、開かれている接続と共にプールされている場合は、その接続を開くときだけ、自動トランザクション参加が行われます。 プールされているビジネス オブジェクトを使用して複数のトランザクションが実行される場合、そのオブジェクトの開かれている接続は、新しく開始されるトランザクションには自動参加しません。 この場合には、接続の自動トランザクション参加を無効にし、`EnlistTransaction` を使用して、接続をトランザクションに参加させることができます。 + + `EnlistTransaction` は、既存のトランザクションを参照する 型の引数を 1 つ受け取ります。 接続の `EnlistTransaction` メソッドを呼び出した後、接続を使用してデータ ソースに対して行ったすべての変更は、トランザクションに組み込まれます。 null 値を渡すことで、現在の分散トランザクションから接続の参加が解除されます。 この接続は、`EnlistTransaction` を呼び出す前に開く必要があることに注意してください。 + +> [!NOTE] +> 一度接続を明示的にトランザクションに参加させると、最初のトランザクションが終了するまでは、参加を解除したり別のトランザクションに参加させたりすることはできません。 + +> [!CAUTION] +> 接続の メソッドを使用してトランザクションが既に開始していた場合、`EnlistTransaction` は例外をスローします。 ただし、トランザクションがデータ ソースで開始されたローカル トランザクションである場合 \(たとえば を使用して BEGIN TRANSACTION ステートメントを明示的に実行した場合\)、`EnlistTransaction` はローカル トランザクションをロールバックし、要求されたように既存の分散トランザクションに参加します。 ローカル トランザクションがロールバックされたことは通知されないため、 を使用して開始したのではないローカル トランザクションについては、自分で管理する必要があります。 .NET Framework Data Provider for SQL Server \(`SqlClient`\) を SQL Server で使用する場合は、参加を試みると例外がスローされます。 その他の場合については検出されません。 + +## SQL Server の昇格可能なトランザクション + SQL Server は、軽量のローカル トランザクションを必要に応じて分散トランザクションに自動的に昇格できる、昇格可能なトランザクションをサポートしています。 昇格可能なトランザクションは、必要な場合以外、分散トランザクションのオーバーヘッドの増加を引き起こすことはありません。 詳細とコード サンプルについては、「[SQL Server と System.Transactions の統合](../../../../docs/framework/data/adonet/system-transactions-integration-with-sql-server.md)」を参照してください。 + +## 分散トランザクションの設定 + 分散トランザクションを使用するには、ネットワーク上の MS DTC を有効にする必要があります。 Windows ファイアウォールを有効にしている場合は、MS DTC サービスでネットワークを使用するか MS DTC ポートを開くことができるようにする必要があります。 + +## 参照 + [トランザクションと同時実行](../../../../docs/framework/data/adonet/transactions-and-concurrency.md) + [SQL Server と System.Transactions の統合](../../../../docs/framework/data/adonet/system-transactions-integration-with-sql-server.md) + [ADO.NET Managed Providers and DataSet Developer Center \(ADO.NET マネージ プロバイダーと DataSet デベロッパー センター\)](http://go.microsoft.com/fwlink/?LinkId=217917) \ No newline at end of file diff --git a/docs/framework/data/adonet/downloading-sample-databases-linq-to-dataset.md b/docs/framework/data/adonet/downloading-sample-databases-linq-to-dataset.md new file mode 100644 index 00000000000..6f4dfe00d15 --- /dev/null +++ b/docs/framework/data/adonet/downloading-sample-databases-linq-to-dataset.md @@ -0,0 +1,84 @@ +--- +title: "Downloading Sample Databases (LINQ to DataSet) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eb42a7af-d410-4b7f-b4a8-13c72ce6fd09 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Downloading Sample Databases (LINQ to DataSet) +[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] のドキュメントで取り上げられているサンプルおよびチュートリアルでは、AdventureWorks サンプル データベースが使用されています。 この製品は、Microsoft のダウンロード サイトから無償でダウンロードできます。[!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] のドキュメントに記載されているサンプルおよびチュートリアルでは、データ ストアとして SQL Server が使用されています。 SQL Server の代わりに、無償で提供されている SQL Server Express Edition をデータ ストアとして使用することもできます。 + +## AdventureWorks データベースのダウンロードとインストール + +#### SQL Server の AdventureWorks サンプル データベースをダウンロードおよびインストールするには + +1. Internet Explorer を開きます。 + +2. 「[SQL Server 2005 サンプルとサンプル データベース](http://go.microsoft.com/fwlink/?linkid=31046)」の Web サイトに移動します。 + +3. 記載されている手順に従ってプロセッサの種類に応じた AdventureWorks サンプル データベース \(AdventureWorksDB.msi など\) をダウンロードし、.MSI ファイルをローカル コンピューターに保存します。 + +4. 以前のバージョンの AdventureWorks は、単体でダウンロードしたか SQL Server のセットアップ時にインストールしたかに関係なく、AdventureWorks.msi の実行前に削除しておく必要があります。 + +#### 単体でダウンロードした以前のバージョンの AdventureWorks サンプル データベースを削除するには + +1. AdventureWorks データベースまたは AdventureWorksDW データベースを削除します。 + +2. **\[プログラムの追加と削除\]** で **\[AdventureWorksDB\]** または **\[AdventureWorksBI\]** を選択し、**\[削除\]** をクリックします。 + +#### 過去にセットアップ プログラムを使用してインストールした AdventureWorks サンプル データベースを削除するには + +1. AdventureWorks データベースまたは AdventureWorksDW データベースを削除します。 + +2. **\[プログラムの追加と削除\]** で **\[Microsoft SQL Server 2005\]** を選択し、**\[変更\]** をクリックします。 + +3. **\[コンポーネントの選択\]** で **\[ワークステーション コンポーネント\]** を選択し、**\[次へ\]** をクリックします。 + +4. **\[Microsoft SQL Server インストール ウィザードへようこそ\]** で、**\[次へ\]** をクリックします。 + +5. **\[システム構成チェック\]** で、**\[次へ\]** をクリックします。 + +6. **\[インスタンスの変更または削除\]** で、**\[インストール済みコンポーネントの変更\]** をクリックします。 + +7. **\[機能の選択\]** をクリックし、**\[ドキュメント、サンプル、およびサンプル データベース\]** ノードを展開します。 + +8. **\[サンプル コードとアプリケーション\]** を選択します。 **\[サンプル データベース\]** を展開し、削除するサンプル データベースを選択して、**\[インストールしない\]** を選択します。 **\[次へ\]** をクリックします。 + +9. **\[インストール\]** をクリックしてインストール ウィザードを完了します。 + +#### AdventureWorks サンプル データベース ファイルを SQL Server のインスタンスにアタッチするには + +1. サンプル データベースのインストーラー ファイルをダウンロードしたら、ダウンロードしたファイル \(**AdventureWorksDB.msi** など\) をダブルクリックして、データベースをインストールします。 既定では、データベースは c:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data にインストールされます。 + +2. SQLCMD または SQL Server Management Studio で次のスクリプトを実行し、AdventureWorks データベース ファイルを SQL Server のインスタンスにアタッチします。 + + ``` + exec sp_attach_db @dbname=N'AdventureWorks', @filename1=N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf', @filename2=N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf' + ``` + + これらのファイルが異なるドライブまたはディレクトリにインストールされている場合は、パスを適宜修正してから、`sp_attach_db` ストアド プロシージャを実行してください。 + +## SQL Server Express Edition のダウンロード + [!INCLUDE[linq_dataset](../../../../includes/linq-dataset-md.md)] セクションで取り上げられているサンプルおよびチュートリアルには、データ ストアとして SQL Server 2005 が使用されていますが、代わりに SQL Server Express Edition を使用するように修正することもできます。 SQL Server Express Edition は無料で入手でき、アプリケーションと共に再配布できます。 Professional Edition 以上の [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] には、SQL Server Express Edition が付属しています。 + +#### SQL Server Express Edition をダウンロードおよびインストールするには + +1. Internet Explorer を開始します。 + +2. [Microsoft SQL Server 2005 Express Edition](http://go.microsoft.com/fwlink/?LinkID=31070) のダウンロード ページに移動します。 + +3. Web サイトに記載されているインストールの指示に従います。 + +## 参照 + [Getting Started](../../../../docs/framework/data/adonet/getting-started-linq-to-dataset.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/TOC.md b/docs/framework/data/adonet/ef/TOC.md new file mode 100644 index 00000000000..550c2911afa --- /dev/null +++ b/docs/framework/data/adonet/ef/TOC.md @@ -0,0 +1,53 @@ +# [EDM ジェネレーター (EdmGen.exe)](edm-generator-edmgen-exe.md) +# [Entity Framework の用語](terminology.md) +# [入れ子になったコレクションを返すクエリの実行方法](how-to-execute-a-query-that-returns-nested-collections.md) +# [Entity Framework 用 SqlClient の型](sqlclient-for-ef-types.md) +# [モデリングとマッピング](modeling-and-mapping.md) +# [データ定義言語の操作](working-with-data-definition-language.md) +# [EntityCommand を使用してパラメーター化 Entity SQL クエリを実行する方法](how-to-execute-a-parameterized-entity-sql-query-using-entitycommand.md) +# [サンプル プロバイダーでの SQL 生成](sql-generation-in-the-sample-provider.md) +# [概念モデルに対するクエリ](querying-a-conceptual-model.md) +# [移行に関する注意点](migration-considerations.md) +# [方法: EdmGen.exe を使用してオブジェクトレイヤー コードを生成する](how-to-use-edmgen-exe-to-generate-object-layer-code.md) +# [複合型を返すクエリの実行方法](how-to-execute-a-query-that-returns-complex-types.md) +# [アーキテクチャとデザイン](architecture-and-design.md) +# [プロバイダー マニフェストの仕様](provider-manifest-specification.md) +# [システム関数](system-functions.md) +# [データ プロバイダーの操作](working-with-data-providers.md) +# [数学関数](mathematical-functions.md) +# [ADO.NET Entity Framework](index.md) +# [エンティティ フレームワークの概要](overview.md) +# [Entity Framework 用 SqlClient](sqlclient-for-the-entity-framework.md) +# [日付と時刻関数](date-and-time-functions.md) +# [Entity Framework 用の EntityClient プロバイダー](entityclient-provider-for-the-entity-framework.md) +# [セキュリティに関する注意事項](security-considerations.md) +# [RefType 結果を返すクエリの実行方法](how-to-execute-a-query-that-returns-reftype-results.md) +# [Navigate 演算子でリレーションシップをナビゲートする方法](how-to-navigate-relationships-with-the-navigate-operator.md) +# [接続文字列](connection-strings.md) +# [コマンド ツリーからの SQL の生成: ベスト プラクティス](generating-sql-from-command-trees-best-practices.md) +# [Entity Framework 用 SqlClient 関数](sqlclient-for-ef-functions.md) +# [PrimitiveType 結果を返すクエリの実行方法](how-to-execute-a-query-that-returns-primitivetype-results.md) +# [パフォーマンスに関する考慮事項](performance-considerations.md) +# [接続文字列を定義する方法](how-to-define-the-connection-string.md) +# [EntityConnection の接続文字列を作成する方法](how-to-build-an-entityconnection-connection-string.md) +# [開発および配置に関する注意事項](development-and-deployment-considerations.md) +# [Entity Framework データ プロバイダー](data-providers.md) +# [EntityCommand を使用してパラメーター化されたストアド プロシージャを実行する方法](how-to-execute-a-parameterized-stored-procedure-using-entitycommand.md) +# [Entity Framework 用の SqlClient の既知の問題](known-issues-in-sqlclient-for-entity-framework.md) +# [はじめに](getting-started.md) +# [方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する](how-to-use-edmgen-exe-to-generate-the-model-and-mapping-files.md) +# [配置に関する注意事項](deployment-considerations.md) +# [文字列関数](string-functions.md) +# [オブジェクトの使用](working-with-objects.md) +# [ポリモーフィック クエリを実行する方法](how-to-execute-a-polymorphic-query.md) +# [方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを検証する](how-to-use-edmgen-exe-to-validate-model-and-mapping-files.md) +# [StructuralType 結果を返すクエリの実行方法](how-to-execute-a-query-that-returns-structuraltype-results.md) +# [コマンド ツリーの構造](the-shape-of-the-command-trees.md) +# [変更 SQL 生成](modification-sql-generation.md) +# [モデル ファイルとマッピング ファイルを組み込みリソースにする方法](how-to-make-model-and-mapping-files-embedded-resources.md) +# [概念モデル正規関数と SQL Server 関数とのマッピング](conceptual-model-canonical-to-sql-server-functions-mapping.md) +# [チュートリアル: SQL 生成](walkthrough-sql-generation.md) +# [SQL 生成](sql-generation.md) +# [Entity Framework のリソース](resources.md) +# [Entity Framework データ プロバイダーの作成](writing-an-ef-data-provider.md) +# [集計関数](aggregate-functions-sqlclient-for-entity-framework.md) diff --git a/docs/framework/data/adonet/ef/aggregate-functions-sqlclient-for-entity-framework.md b/docs/framework/data/adonet/ef/aggregate-functions-sqlclient-for-entity-framework.md new file mode 100644 index 00000000000..48ef5479865 --- /dev/null +++ b/docs/framework/data/adonet/ef/aggregate-functions-sqlclient-for-entity-framework.md @@ -0,0 +1,61 @@ +--- +title: "集計関数 (Entity Framework 用 SqlClient) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 03303f01-b591-4efc-9875-f9c608edff0b +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 集計関数 (Entity Framework 用 SqlClient) +.NET Framework Data Provider for SQL Server \(SqlClient\) には、集計関数が用意されています。 集計関数は、一連の入力値に対して計算を実行し、値を返します。 これらの関数は、SqlClient の SqlServer 名前空間に存在します。 Entity Framework は、プロバイダーの名前空間プロパティを使用することにより、型や関数など、特定のコンストラクターに対してこのプロバイダーによってどのプレフィックスが使用されているかを特定できます。 + + 次の表に、SqlClient の集計関数を示します。 + +|関数|説明| +|--------|--------| +|`AVG(` `expression` `)`|コレクション内の値の平均値を返します。

NULL 値は無視されます。

**引数**

`Int32`、`Int64`、`Double`、`Decimal`。

**戻り値**

`expression` の型。

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_AVG](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_avg)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_AVG](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_avg)]| +|`CHECKSUM_AGG(` `collection` `)`|コレクション内にある値のチェックサムを返します。

NULL 値は無視されます。

**引数**

Collection \(`Int32`\)。

**戻り値**

`Int32`。

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_CHECKSUM](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_checksum)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_CHECKSUM](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_checksum)]| +|`COUNT(` `expression` `)`|コレクション内のアイテムの数を `Int32` 型の値として返します。

**引数**

Collection \(T\)。ここで、T は次のいずれかの型になります。

`Guid` \(SQL Server 2000 では返されません\)、

`Boolean`、`Double`、`DateTime`、`DateTimeOffset`、`Time`、`String`、または `Binary`。

**戻り値**

`Int32`。

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_COUNT](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_count)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_COUNT](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_count)]| +|`COUNT_BIG(` `expression` `)`|コレクション内のアイテムの数を `bigint` 型の値として返します。

**引数**

Collection \(T\)。ここで、T は次のいずれかの型になります。

`Guid` \(SQL Server 2000 では返されません\)、`Boolean`、`Double`、`DateTime`、`DateTimeOffset`、`Time`、`String`、または `Binary`。

**戻り値**

`Int64`。

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_COUNTBIG](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_countbig)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_COUNTBIG](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_countbig)]| +|`MAX(` `expression` `)`|コレクション内の最大値を返します。

**引数**

Collection \(T\)。ここで、T は `Byte`、`Int16`、`Int32`、`Int64`、`Byte`、`Single`、`Double`、`Decimal`、`DateTime`、`DateTimeOffset`、`Time`、`String`、`Binary` のいずれかの型になります。

**戻り値**

`expression` の型。

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_MAX](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_max)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_MAX](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_max)]| +|`MIN(` `expression` `)`|コレクション内の最小値を返します。

**引数**

Collection \(T\)。ここで、T は `Byte`、`Int16`、`Int32`、`Int64`、`Byte`、`Single`、`Double`、`Decimal`、`DateTime`、`DateTimeOffset`、`Time`、`String` のいずれかの型になります。

`Binary`.

**戻り値**

`expression` の型。

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_MIN](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_min)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_MIN](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_min)]| +|`STDEV(` `expression` `)`|指定された式のすべての値の統計的標準偏差を返します。

**引数**

Collection \(`Double`\)。

**戻り値**

`Double`

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_STDEV](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_stdev)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_STDEV](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_stdev)]| +|`STDEVP(` `expression` `)`|指定された式のすべての値を母集団として統計的標準偏差を返します。

**引数**

Collection \(`Double`\)。

**戻り値**

`Double`

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_STDEVP](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_stdevp)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_STDEVP](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_stdevp)]| +|`SUM(` `expression` `)`|コレクション内のすべての値の合計を返します。

**引数**

Collection \(T\)。ここで、T は `Int32`、`Int64`、`Double`、`Decimal` のいずれかの型になります。

**戻り値**

`expression` の型。

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_SUM](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_sum)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_SUM](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_sum)]| +|`VAR(` `expression` `)`|指定された式のすべての値の統計的分散を返します。

**引数**

Collection \(`Double`\)。

**戻り値**

`Double`

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_VAR](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_var)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_VAR](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_var)]| +|`VARP(` `expression` `)`|指定した式のすべての値について、母集団に対する統計的変位を返します。

**引数**

Collection \(`Double`\)。

**戻り値**

`Double`

**例**

[!code-csharp[DP EntityServices Concepts#SQLSERVER_VARP](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#sqlserver_varp)] + [!code-sql[DP EntityServices Concepts#SQLSERVER_VARP](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#sqlserver_varp)]| + + SqlClient でサポートされる集計関数の詳細については、SqlClient プロバイダー マニフェストで指定した SQL Server のバージョンのドキュメントを参照してください。 + +|SQL Server 2000|SQL Server 2005|SQL Server 2008| +|---------------------|---------------------|---------------------| +|[集約関数 \(Transact\-SQL\)](http://go.microsoft.com/fwlink/?LinkId=115906)|[集約関数 \(Transact\-SQL\)](http://go.microsoft.com/fwlink/?LinkID=115903)|[集約関数 \(Transact\-SQL\)](http://go.microsoft.com/fwlink/?LinkId=115907)| + +## 参照 + [Entity SQL 言語](../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-language.md) + [集計正規関数](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/architecture-and-design.md b/docs/framework/data/adonet/ef/architecture-and-design.md new file mode 100644 index 00000000000..1185d969bfd --- /dev/null +++ b/docs/framework/data/adonet/ef/architecture-and-design.md @@ -0,0 +1,425 @@ +--- +title: "アーキテクチャとデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bd738d39-00e2-4bab-b387-90aac1a014bd +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# アーキテクチャとデザイン +[サンプル プロバイダー](http://go.microsoft.com/fwlink/?LinkId=180616) の SQL 生成モジュールは、コマンド ツリーを表す式ツリー上のビジターとして実装されます。 生成は、式ツリーを介した単一のパスで行われます。 + + ツリーのノードはボトムアップ方式で処理されます。 まず、中間構造として SqlSelectStatement または SqlBuilder が生成され、どちらも ISqlFragment を実装します。 次に、文字列である SQL ステートメントがその構造から生成されます。 中間構造には 2 つの理由があります。 + +- 論理上、SQL SELECT ステートメントは順序を無視して挿入されます。 FROM 句に参加するノードは、WHERE 句、GROUP BY 句、および ORDER BY 句に参加するノードの前にアクセスされます。 + +- 別名の名前を変更するには、名前の変更中に競合が発生しないように、使用されているすべての別名を識別する必要があります。 SqlBuilder で名前変更の選択を遅らせるには、Symbol オブジェクトを使用して、名前変更の候補となる列を表します。 + + ![図](../../../../../docs/framework/data/adonet/ef/media/de1ca705-4f7c-4d2d-ace5-afefc6d3cefa.gif "de1ca705\-4f7c\-4d2d\-ace5\-afefc6d3cefa") + + 最初のフェーズでは、式ツリーにアクセスしている間、式が SqlSelectStatement にグループ化され、結合がフラット化され、結合の別名がフラット化されます。 この段階では、Symbol オブジェクトは、名前変更が可能な列または入力の別名を表します。 + + 2 番目のフェーズでは、実際の文字列を生成している間、別名の名前が変更されます。 + +## データ構造 + このセクションでは、SQL ステートメントのビルドに使用する [サンプル プロバイダー](http://go.microsoft.com/fwlink/?LinkId=180616) で使用される種類について説明します。 + +### ISqlFragment + このセクションでは、ISqlFragment インターフェイスを実装するクラスについて説明します。このインターフェイスは、2 つの目的を達成します。 + +- すべてのビジター メソッドに共通する戻り値の型です。 + +- 最終的な SQL 文字列を作成するためのメソッドを指定します。 + +``` +internal interface ISqlFragment { + void WriteSql(SqlWriter writer, SqlGenerator sqlGenerator); +} +``` + +#### SqlBuilder + SqlBuilder は、StringBuilder と同様に、最終的な SQL 文字列の収集デバイスです。 これは、最終的な SQL を構成する文字列、および文字列に変換できる ISqlFragment で構成されます。 + +``` +internal sealed class SqlBuilder : ISqlFragment { + public void Append(object s) + public void AppendLine() + public bool IsEmpty +} +``` + +#### SqlSelectStatement + SqlSelectStatement は、"SELECT … FROM .. WHERE … GROUP BY … ORDER BY" 形式の正規 SQL SELECT ステートメントを表します。 + + 各 SQL 句は StringBuilder によって表されます。 また、Distinct が指定されているかどうか、およびステートメントが最上位かどうかを追跡します。 ステートメントが最上位ではなく、ステートメントに TOP 句も含まれていない場合は、ORDER BY 句は省略されます。 + + FromExtents には、SELECT ステートメントの入力のリストが格納されます。 通常、これに含まれる要素は 1 つだけです。 結合のための SELECT ステートメントには、一時的に、複数の要素が含まれる場合があります。 + + SELECT ステートメントが結合ノードによって作成されると、SqlSelectStatement は、AllJoinExtents の結合でフラット化されたすべてのエクステントのリストを保持します。 OuterExtents は SqlSelectStatement の外部参照を表し、入力の別名の名前変更に使用されます。 + +``` +internal sealed class SqlSelectStatement : ISqlFragment { + internal bool IsDistinct { get, set }; + internal bool IsTopMost + + internal List AllJoinExtents { get, set }; + internal List FromExtents { get}; + internal Dictionary OuterExtents { get}; + + internal TopClause Top { get, set }; + + internal SqlBuilder Select {get}; + internal SqlBuilder From + internal SqlBuilder Where + internal SqlBuilder GroupBy + public SqlBuilder OrderBy +} +``` + +#### TopClause + TopClause は SqlSelectStatement の TOP 式を表します。 TopCount プロパティは、選択する必要がある TOP 行の数を示します。 WithTies が true の場合、TopClause は DbLimitExpession から作成されています。 + +``` +class TopClause : ISqlFragment { + internal bool WithTies {get} + internal ISqlFragment TopCount {get} + internal TopClause(ISqlFragment topCount, bool withTies) + internal TopClause(int topCount, bool withTies) +} +``` + +### Symbols + Symbol 関連のクラスおよびシンボル テーブルは、入力の別名の名前変更、結合の別名のフラット化、および列の別名の名前変更を実行します。 + + Symbol クラスは、エクステント、入れ子になった SELECT ステートメント、または列を表します。 Symbol クラスは、使用後に名前を変更できるように、実際の別名の代わりに使用されます。また、Symbol クラスが表す成果物の追加情報も伝達します \(型も同様です\)。 + +``` +class Symbol : ISqlFragment { + internal Dictionary Columns {get} + internal bool NeedsRenaming {get, set} + internal bool IsUnnest {get, set} //not used + + public string Name{get} + public string NewName {get,set} + internal TypeUsage Type {get, set} + + public Symbol(string name, TypeUsage type) +} +``` + + Name には、表されるエクステント、入れ子になった SELECT ステートメント、または列の元の別名が格納されます。 + + NewName には、SQL SELECT ステートメントで使用される別名が格納されます。 最初は Name に設定され、最終的な文字列クエリを生成する際に必要な場合のみ、名前が変更されます。 + + Type は、エクステントおよび入れ子になった SELECT ステートメントを表すシンボルの場合のみ有効です。 + +#### SymbolPair + SymbolPair クラスは、レコードのフラット化に対処します。 + + プロパティ式 D\(v, "j3.j2.j1.a.x"\) を考えてみます。この式では、v は VarRef、j1、j2、j3 は結合、a はエクステント、x は列です。 + + これは、最終的に {j'}.{x'} に変換する必要があります。 ソース フィールドが表す最も外側の SqlStatement は、結合式 \(j2 など\) を表します。つまり、これは常に Join シンボルです。 列フィールドは、非結合シンボルで停止するまで、ある結合シンボルから次の結合シンボルに移動します。 これは、DbPropertyExpression にアクセスすると返されますが、SqlBuilder に追加されることはありません。 + +``` +class SymbolPair : ISqlFragment { + public Symbol Source; + public Symbol Column; + public SymbolPair(Symbol source, Symbol column) +} +``` + +#### JoinSymbol + Join シンボルは、結合または結合入力を含む入れ子になった SELECT ステートメントを表す Symbol です。 + +``` +internal sealed class JoinSymbol : Symbol { + internal List ColumnList {get, set} + internal List ExtentList {get} + internal List FlattenedExtentList {get, set} + internal Dictionary NameToExtent {get} + internal bool IsNestedJoin {get, set} + + public JoinSymbol(string name, TypeUsage type, List extents) +} +``` + + このシンボルが SQL SELECT ステートメントを表す場合、ColumnList は SELECT 句内の列のリストを表します。 ExtentList は、SELECT 句内のエクステントのリストです。 結合により最上位で複数のエクステントがフラット化された場合、FlattenedExtentList はそのエクステントを追跡し、エクステントの別名が正しく変更されたことを確認します。 + + NameToExtent は、ExtentList 内のすべてのエクステントをディクショナリとして使用します。 IsNestedJoin は、JoinSymbol が通常の結合シンボルか、対応する SqlSelectStatement を持つ結合シンボルかを判断するために使用します。 + + すべてのリストは、正確に設定されると、参照または列挙に使用されます。 + +#### SymbolTable + SymbolTable は、変数名を Symbol に解決するために使用されます。 SymbolTable は、各スコープの新しいエントリを持つスタックとして実装されます。 Lookup は、エントリが見つかるまでスタックの最上位から最下位まで検索します。 + +``` +internal sealed class SymbolTable { + internal void EnterScope() + internal void ExitScope() + internal void Add(string name, Symbol value) + internal Symbol Lookup(string name) +} +``` + + SQL 生成モジュールのインスタンス 1 つにつき、SymbolTable は 1 つしかありません。 各リレーショナル ノードでは、スコープへの出入りが行われます。 前のスコープ内のすべてのシンボルは、同じ名前の他のシンボルによって非表示になっている場合を除いて、後のスコープに表示されます。 + +### ビジターのグローバル状態 + 別名と列の名前変更を支援するために、クエリ ツリーを最初に通過する際に使用されたすべての列名 \(AllColumnNames\) とすべてのエクステントの別名 \(AllExtentNames\) のリストを保持します。 シンボル テーブルは、変数名を Symbol に解決します。 IsVarRefSingle は、検証目的でのみ使用されるため、必ずしも必要ではありません。 + + CurrentSelectStatement および IsParentAJoin を介して使用される 2 つのスタックは、親ノードから子ノードに "parameters" を渡すために使用されます。これは、ビジター パターンによってパラメーターを渡すことができないためです。 + +``` +internal Dictionary AllExtentNames {get} +internal Dictionary AllColumnNames {get} +SymbolTable symbolTable = new SymbolTable(); +bool isVarRefSingle = false; + +Stack selectStatementStack; +private SqlSelectStatement CurrentSelectStatement{get} + +Stack isParentAJoinStack; +private bool IsParentAJoin{get} +``` + +## 一般的なシナリオ + このセクションでは、一般的なプロバイダー シナリオについて説明します。 + +### SQL ステートメントへの式ノードのグループ化 + ボトムアップ方式でツリーにアクセスしたときに最初のリレーショナル ノード \(通常は DbScanExpression エクステント\) が見つかった場合に SqlSelectStatement が作成されます。 入れ子になったクエリをできるだけ少なくして SQL SELECT ステートメントを生成するには、その SqlSelectStatement でできるだけ多くの親ノードを集計します。 + + 特定の \(リレーショナル\) ノードを現在の SqlSelectStatement \(入力にアクセスしたときに返される SqlSelectStatement\) に追加できるかどうか、または新しいステートメントを開始する必要があるかどうかの決定は、IsCompatible メソッドによって計算され、SqlSelectStatement に既に含まれるノードに依存します。これは、指定されたノードの下にあったノードによって異なります。 + + 通常、連結が検討されているノードが空ではない句の後に SQL ステートメントの句が評価される場合、そのノードを現在のステートメントに追加することはできません。 たとえば、次のノードが Filter の場合、そのノードを現在の SqlSelectStatement に組み込むことができるのは、次の条件に当てはまる場合のみです。 + +- SELECT リストが空の場合。 SELECT リストが空ではない場合、SELECT リストはフィルターの前のノードによって生成されているため、述語はその SELECT リストによって生成された列を参照できます。 + +- GROUPBY が空の場合。 GROUPBY が空ではない場合、フィルターを追加すると、グループ化の前にフィルター処理することになりますが、これは正しい処理ではありません。 + +- TOP 句が空の場合。 TOP 句が空ではない場合、フィルターを追加すると、TOP を実行する前にフィルター処理することになりますが、これは正しい処理ではありません。 + + これは、DbConstantExpression や算術式のような非リレーショナル ノードには当てはまりません。非リレーショナル ノードは、常に既存の SqlSelectStatement に含まれているためです。 + + また、結合ツリーのルート \(結合の親を持たない結合ノード\) が見つかると、新しい SqlSelectStatement が開始されます。 左辺スパイン結合の子はすべて、その SqlSelectStatement に集計されます。 + + 新しい SqlSelectStatement が開始され、現在の SqlSelectStatement が入力に追加されるたびに、投影列 \(SELECT 句\) が存在しない場合はこの列を追加することによって、現在の SqlSelectStatement を完了することが必要になる場合があります。 これを行うには、AddDefaultColumns メソッドを使用します。このメソッドは、SqlSelectStatement の FromExtents を参照し、FromExtents が表すエクステントのリストによってスコープに取り込まれるすべての列を、投影された列のリストに追加します。 これが実行されるのは、その時点で、他のノードが参照している列が不明なためです。 これは、後で使用できる列のみを投影するように最適化できます。 + +### 結合のフラット化 + IsParentAJoin プロパティは、特定の結合をフラット化できるかどうかを判断するのに役立ちます。 特に、IsParentAJoin は、結合の左側の子、および結合への即時入力となる各 DbScanExpression に対してのみ `true` を返します。この場合、その子ノードでは、後で親で使用されるのと同じ SqlSelectStatement が再利用されます。 詳細については、「結合式」を参照してください。 + +### 入力の別名のリダイレクト + 入力の別名のリダイレクトは、シンボル テーブルによって行われます。 + + 入力の別名のリダイレクトを説明するには、「[コマンド ツリーからの SQL の生成: ベスト プラクティス](../../../../../docs/framework/data/adonet/ef/generating-sql-from-command-trees-best-practices.md)」の最初の例を参照してください。 この例では、"a" を投影の "b" にリダイレクトする必要がありました。 + + SqlSelectStatement オブジェクトが作成されると、ノードへの入力であるエクステントが SqlSelectStatement の From プロパティに配置されます。 Symbol \(\\) は、入力バインディング名 \("b"\) に基づいて作成され、エクステントおよび "AS " \+ \ が From 句に追加されることを表します。 シンボルは FromExtents プロパティにも追加されます。 + + シンボルはシンボル テーブルにも追加され、入力バインディング名がシンボルにリンクされます \("b", \\)。 + + 後続のノードが SqlSelectStatement を再利用する場合、シンボル テーブルにエントリが追加され、その入力バインディング名がそのシンボルにリンクされます。 この例では、入力バインディング名が "a" の DbProjectExpression は、SqlSelectStatement を再利用して \("a", \\) を表に追加します。 + + SqlSelectStatement を再利用しているノードの入力バインディング名を式で参照すると、その参照は、シンボル テーブルを使用して、リダイレクトされた正しいシンボルに解決されます。 "a" を表す DbVariableReferenceExpression にアクセスしているときに "a.x" から "a" に解決されると、Symbol \ に解決されます。 + +### 結合の別名のフラット化 + 結合の別名のフラット化は、「DbPropertyExpression」で説明されているように、DbPropertyExpression にアクセスするときに行われます。 + +### 列名およびエクステントの別名の名前変更 + 列名とエクステントの別名の名前変更に関する問題を解決するには、「SQL 生成の 2 番目のフェーズ: 文字列コマンドの生成」で説明されている、生成の 2 番目のフェーズで別名に置換されるシンボルを使用します。 + +## SQL 生成の最初のフェーズ: 式ツリーへのアクセス + このセクションでは、SQL 生成の最初のフェーズについて説明します。このフェーズでは、クエリを表す式にアクセスするときに、中間構造 SqlSelectStatement または SqlBuilder が生成されます。 + + このセクションでは、さまざまな式ノード カテゴリにアクセスする際の原則、および特定の式の型にアクセスする際の詳細について説明します。 + +### リレーショナル \(非結合\) ノード + 非結合ノードをサポートする式の型を次に示します。 + +- DbDistinctExpression + +- DbFilterExpression + +- DbGroupByExpression + +- DbLimitExpession + +- DbProjectExpression + +- DbSkipExpression + +- DbSortExpression + + これらのノードへのアクセスは、次のパターンに従います。 + +1. リレーショナル入力にアクセスし、結果の SqlSelectStatement を取得します。 リレーショナル ノードへの入力は次のいずれかになります。 + + - エクステントを含むリレーショナル ノード \(DbScanExpression など\)。 このようなノードにアクセスすると、SqlSelectStatement が返されます。 + + - 集合演算式 \(UNION ALL など\)。 結果は、角かっこで囲み、新しい SqlSelectStatement の FROM 句に配置する必要があります。 + +2. 入力によって生成された SqlSelectStatement に現在のノードを追加できるかどうかを確認します。 これについては、「SQL ステートメントへの式ノードのグループ化」で説明しています。 追加できない場合は、次の操作を行います。 + + - 現在の SqlSelectStatement オブジェクトを表示します。 + + - 新しい SqlSelectStatement オブジェクトを作成し、表示された SqlSelectStatement を新しい SqlSelectStatement オブジェクトの FROM として追加します。 + + - スタックの先頭に新しいオブジェクトを配置します。 + +3. 入力式バインディングを入力から正しいシンボルにリダイレクトします。 この情報は、SqlSelectStatement オブジェクトに保持されます。 + +4. 新しい SymbolTable スコープを追加します。 + +5. 式の非入力部分 \(投影や述語など\) にアクセスします。 + +6. グローバル スタックに追加されたすべてのオブジェクトを表示します。 + + SQL で DbSkipExpression に相当するものはありません。 論理上、次のように変換されます。 + +``` +SELECT Y.x1, Y.x2, ..., Y.xn +FROM ( + SELECT X.x1, X.x2, ..., X.xn, row_number() OVER (ORDER BY sk1, sk2, ...) AS [row_number] + FROM input as X + ) as Y +WHERE Y.[row_number] > count +ORDER BY sk1, sk2, ... +``` + +### 結合式 + 次の式は結合式と見なされ、VisitJoinExpression メソッドによって一般的な方法で処理されます。 + +- DbApplyExpression + +- DbJoinExpression + +- DbCrossJoinExpression + + アクセスする手順を次に示します。 + + まず、子にアクセスする前に、IsParentAJoin を呼び出し、結合ノードが左スパインに沿った結合の子であるかどうかを確認します。 false が返された場合は、新しい SqlSelectStatement が開始されます。 その意味で、結合にアクセスする方法はその他のノードとは異なります。これは、親 \(結合ノード\) によって、子が使用する可能性のある SqlSelectStatement が作成されるためです。 + + 次に、入力を 1 つずつ処理します。 入力ごとに、次の手順を実行します。 + +1. 入力にアクセスします。 + +2. ProcessJoinInputResult を呼び出して、入力にアクセスした結果の後処理を実行します。ProcessJoinInputResult は、結合式の子にアクセスした後にシンボル テーブルを保持し、場合によっては、子によって生成された SqlSelectStatement を終了します。 子の結果は次のいずれかになります。 + + - 親が追加される SqlSelectStatement とは別の SqlSelectStatement。 この場合、既定の列を追加して完了する必要があります。 入力が Join だった場合、新しい結合シンボルを作成する必要があります。 それ以外の場合は、標準のシンボルを作成します。 + + - エクステント \(DbScanExpression など\)。この場合、エクステントは親の SqlSelectStatement の入力のリストに追加されます。 + + - SqlSelectStatement 以外。この場合、角かっこで囲まれています。 + + - 親が追加されるのと同じ SqlSelectStatement。 この場合、FromExtents リスト内のシンボルは、すべてのシンボルを表す新しい 1 つの JoinSymbol に置き換える必要があります。 + + - 最初の 3 つの場合、AS 句を追加してシンボル テーブルを更新するために AddFromSymbol が呼び出されます。 + + その後、結合条件がある場合は、その条件にアクセスします。 + +### セット操作 + 集合演算 DbUnionAllExpression、DbExceptExpression、および DbIntersectExpression は、VisitSetOpExpression メソッドによって処理されます。 次の構造の SqlBuilder が作成されます。 + +``` + +``` + + この場合、\ および \ は、各入力にアクセスすることで取得される SqlSelectStatement を表し、\ は対応する演算 \(UNION ALL など\) を表します。 + +### DbScanExpression + \(別の結合の左側の子である結合への入力として\) 結合コンテキストにアクセスすると、DbScanExpression は対応するターゲット \(定義クエリ、テーブル、またはビュー\) のターゲット SQL と共に SqlBuilder を返します。 それ以外の場合は、対応するターゲットに対応するように設定された FROM フィールドを使用して新しい SqlSelectStatement が作成されます。 + +### DbVariableReferenceExpression + DbVariableReferenceExpression にアクセスすると、シンボル テーブル内の参照に基づいてその変数参照式に対応する Symbol が返されます。 + +### DbPropertyExpression + 結合の別名のフラット化は、DbPropertyExpression にアクセスするときに識別および処理されます。 + + Instance プロパティは最初にアクセスされると、結果は Symbol、JoinSymbol、または SymbolPair になります。 この 3 つのケースを処理する方法を次に示します。 + +- JoinSymbol が返された場合、その NameToExtent プロパティには、必要なプロパティのシンボルが格納されます。 結合シンボルが入れ子になった結合を表す場合、新しい Symbol のペアが結合シンボルと共に返され、インスタンスの別名として使用されるシンボルと、さらに解決するために実際のプロパティを表すシンボルを追跡します。 + +- SymbolPair が返され、その Column 部分が結合シンボルである場合、結合シンボルが再び返されますが、現在のプロパティ式で表されるプロパティを指すように列プロパティが更新されます。 それ以外の場合は、別名として SymbolPair ソース、および列として現在のプロパティのシンボルを含む SqlBuilder が返されます。 + +- Symbol が返された場合、Visit メソッドは、別名としてそのインスタンス、および列名としてプロパティ名を含む SqlBuilder メソッドを返します。 + +### DbNewInstanceExpression + DbProjectExpression の Projection プロパティとして使用する場合、DbNewInstanceExpression は、投影された列を表すためにコンマで区切った引数のリストを生成します。 + + DbNewInstanceExpression が、コレクションの戻り値の型を格納しており、引数として指定される式の新しいコレクションを定義している場合、次の 3 つのケースは個別に処理されます。 + +- DbNewInstanceExpression に唯一の引数として DbElementExpression が使用されている場合、次のように変換されます。 + + ``` + NewInstance(Element(X)) => SELECT TOP 1 …FROM X + ``` + + DbNewInstanceExpression に引数がない \(空のテーブルを表す\) 場合、DbNewInstanceExpression は次のように変換されます。 + +``` +SELECT CAST(NULL AS ) as X +FROM (SELECT 1) AS Y WHERE 1=0 +``` + + それ以外の場合、DbNewInstanceExpression は引数の全体結合ラダーを作成します。 + +``` +SELECT as X +UNION ALL SELECT as X +UNION ALL … +UNION ALL SELECT as X +``` + +### DbFunctionExpression + 正規関数と組み込み関数は同じように処理されます。そのため、これらの関数に特別な処理 \(TRIM\(string\) の LTRIM\(RTRIM\(string\)\) へのマップなど\) が必要な場合は、適切なハンドラーが呼び出されます。 それ以外の場合、これらの関数は FunctionName\(arg1, arg2, ..., argn\) に変換されます。 + + 特別な処理が必要な関数、およびその関数の適切なハンドラーを追跡するには、ディクショナリを使用します。 + + ユーザー定義関数は NamespaceName.FunctionName\(arg1, arg2, ..., argn\) に変換されます。 + +### DbElementExpression + DbElementExpression にアクセスするメソッドは、スカラー サブクエリを表すために使用されると DbElementExpression にアクセスする場合にのみ呼び出されます。 したがって、DbElementExpression は、完全な SqlSelectStatement に変換され、その周囲に角かっこを追加します。 + +### DbQuantifierExpression + 式の型 \(Any または All\) に応じて、DbQuantifierExpression は次のように変換されます。 + +``` +Any(input, x) => Exists(Filter(input,x)) +All(input, x) => Not Exists(Filter(input, not(x)) +``` + +### DbNotExpression + 場合によっては、入力式を使用して DbNotExpression の変換を折りたたむことができます。 次に例を示します。 + +``` +Not(IsNull(a)) => "a IS NOT NULL" +Not(All(input, x) => Not (Not Exists(Filter(input, not(x))) => Exists(Filter(input, not(x)) +``` + + 2 番目の折りたたみが行われるのは、All 型の DbQuantifierExpression を変換するときにプロバイダーによって非効率が生じたためです。 したがって、Entity Framework は単純化を実行できませんでした。 + +### DbIsEmptyExpression + DbIsEmptyExpression は次のように変換されます。 + +``` +IsEmpty(inut) = Not Exists(input) +``` + +## SQL 生成の 2 番目のフェーズ: 文字列コマンドの生成 + 文字列 SQL コマンドを生成すると、SqlSelectStatement によって、シンボルの実際の別名が生成されます。これにより、列名とエクステントの別名の名前変更に関する問題が解決されます。 + + エクステントの別名の名前変更は、SqlSelectStatement オブジェクトを文字列に書き込むときに行われます。 まず、外部エクステントで使用されるすべての別名のリストを作成します。 FromExtents \(または null 以外の場合は AllJoinExtents\) 内の各シンボルは、外部エクステントのいずれかと衝突する場合に名前が変更されます。 名前の変更が必要な場合は、AllExtentNames で収集されたエクステントと競合することはありません。 + + 列の名前変更は、Symbol オブジェクトを文字列に書き込むときに行われます。 最初のフェーズの AddDefaultColumns は、特定の列のシンボルの名前を変更する必要があるかどうかを判断します。 2 番目のフェーズでは、生成された名前が AllColumnNames で使用される名前と競合しないことを確認するために、名前の変更のみが行われます。 + + エクステントの別名と列の両方について一意の名前を生成するには、\\_n を使用します。n はまだ使用されていない最小の別名です。 すべての別名のグローバル リストを使用すると、連鎖名前変更の必要性が高くなります。 + +## 参照 + [サンプル プロバイダーでの SQL 生成](../../../../../docs/framework/data/adonet/ef/sql-generation-in-the-sample-provider.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/conceptual-model-canonical-to-sql-server-functions-mapping.md b/docs/framework/data/adonet/ef/conceptual-model-canonical-to-sql-server-functions-mapping.md new file mode 100644 index 00000000000..5936843c237 --- /dev/null +++ b/docs/framework/data/adonet/ef/conceptual-model-canonical-to-sql-server-functions-mapping.md @@ -0,0 +1,123 @@ +--- +title: "概念モデル正規関数と SQL Server 関数とのマッピング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 1a2631bc-a426-4c0a-ba8d-26d9c80d39e2 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 概念モデル正規関数と SQL Server 関数とのマッピング +このトピックでは、概念モデル正規関数を対応する SQL Server 関数にマップする方法について説明します。 + +## 日付と時刻関数 + 日付と時刻の関数のマッピングを次の表に示します。 + +|正規関数|SQL Server 関数| +|----------|-------------------| +|[AddDays\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEADD(day, number, date)`| +|[AddHours\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEADD(hour, number, date)`| +|[AddMicroseconds\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEADD(microsecond, number, date)`| +|[AddMilliseconds\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEADD(millisecond, number, date)`| +|[AddMinutes\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEADD(minute, number, date)`| +|[AddMonths\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEADD(month, number, date)`| +|[AddNanoseconds\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEADD(nanosecond, number, date)`| +|[AddSeconds\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEADD(second, number, date)`| +|[AddYears\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEADD(year, number, date)`| +|[CreateDateTime\(year, month, day, hour, minute, second\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|SQL Server 2000 と SQL Server 2005 の場合、書式指定された `datetime` 値がサーバー上に作成されます。 SQL Server 2008 以上の場合、`datetime2` 値がサーバー上に作成されます。| +|[CreateDateTimeOffset\(year, month, day, hour, minute, second, tzoffset\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|書式指定された `datetimeoffset` 値がサーバー上に作成されます。

SQL Server 2000 と SQL Server 2005 ではサポートされません。| +|[CreateTime\(hour, minute, second\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|書式指定された `time` 値がサーバー上に作成されます。

SQL Server 2000 と SQL Server 2005 ではサポートされません。| +|[CurrentDateTime\(\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`SysDateTime()` \(SQL Server 2008\)。

`GetDate()` \(SQL Server 2000 および SQL Server 2005\)。| +|[CurrentDateTimeOffset\(\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`SysDateTimeOffset()` \(SQL Server 2008\)。

SQL Server 2000 と SQL Server 2005 ではサポートされません。| +|[CurrentUtcDateTime\(\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`SysUtcDateTime()` \(SQL Server 2008\)。 `GetUtcDate()` \(SQL Server 2000 および SQL Server 2005\)。| +|[DayOfYear\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DatePart(dayofyear, expression)`| +|[Day\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DatePart(day, expression)`| +|[DiffDays\(startExpression, endExpression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEDIFF(day, startdate, enddate)`| +|[DiffHours\(startExpression, endExpression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEDIFF(hour, startdate, enddate)`| +|[DiffMicroseconds\(startExpression, endExpression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEDIFF(microsecond, startdate, enddate)`| +|[DiffMilliseconds\(startExpression, endExpression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEDIFF(millisecond, startdate, enddate)`| +|[DiffMinutes\(startExpression, endExpression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEDIFF(minute, startdate, enddate)`| +|[DiffNanoseconds\(startExpression, endExpression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEDIFF(nanosecond, startdate, enddate)`| +|[DiffSeconds\(startExpression, endExpression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEDIFF(second, startdate, enddate)`| +|[DiffYears\(startExpression, endExpression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DATEDIFF(year, startdate, enddate)`| +|[GetTotalOffsetMinutes\(DateTimeOffset\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DatePart(tzoffset, expression)`| +|[Hour\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DatePart(hour, expression)`| +|[Millisecond\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DatePart(millisecond, expression)`| +|[Minute\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DatePart(minute, expression)`| +|[Month\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DatePart(month, expression)`| +|[Second\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DatePart(second, expression)`| +|[Truncate\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|SQL Server 2000 と SQL Server 2005 の場合、切り詰められ、書式設定された `datetime` `` 値がサーバー上に作成されます。 SQL Server 2008 以上の場合、切り詰められた `datetime2` 値か `` `datetimeoffset` 値がサーバー上に作成されます。| +|[Year\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|`DatePart(YEAR, expression)`| + +## 集計関数 + 集計関数のマッピングを次の表に示します。 + +|正規関数|SQL Server 関数| +|----------|-------------------| +|[Avg\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|`AVG(expression)`| +|[BigCount\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|`BIGCOUNT(expression)`| +|[Count\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|`COUNT(expression)`| +|[Min\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|`MIN(expression)`| +|[Max\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|`MAX(expression)`| +|[StDev\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|`STDEV(expression)`| +|[StDevP\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|`STDEVP(expression)`| +|[Sum\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|`SUM(expression)`| +|[Var\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|`VAR(expression)`| +|[VarP\(expression\)](../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|`VARP(expression)`| + +## 数学関数 + 数学関数のマッピングを次の表に示します。 + +|正規関数|SQL Server 関数| +|----------|-------------------| +|[Abs\(value\)](../../../../../docs/framework/data/adonet/ef/language-reference/math-canonical-functions.md)|`ABS(value)`| +|[Ceiling\(value\)](../../../../../docs/framework/data/adonet/ef/language-reference/math-canonical-functions.md)|`CEILING(value)`| +|[Floor\(value\)](../../../../../docs/framework/data/adonet/ef/language-reference/math-canonical-functions.md)|`FLOOR(value)`| +|[Power\(value\)](../../../../../docs/framework/data/adonet/ef/language-reference/math-canonical-functions.md)|`POWER(value, exponent)`| +|[Round\(value\)](../../../../../docs/framework/data/adonet/ef/language-reference/math-canonical-functions.md)|`ROUND(value, digits, 0)`| +|[Truncate](../../../../../docs/framework/data/adonet/ef/language-reference/math-canonical-functions.md)|`ROUND(value , digits, 1)`| + +## 文字列関数 + 文字列関数のマッピングを次の表に示します。 + +|正規関数|SQL Server 関数| +|----------|-------------------| +|[Contains\(string, target\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`CHARINDEX(target, string)`| +|[Concat\(string1, string2\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|string1 \+ string2| +|[EndsWith\(string, target\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`CHARINDEX(REVERSE(target), REVERSE(string)) = 1`

**メモ** `string` が固定長文字列の列に格納されており、`target` が定数である場合、`CHARINDEX` 関数は `false` を返します。 この場合、末尾の埋め込み空白も含めて文字列全体が検索されます。 この問題を回避するには、データを固定長文字列の長さに合わせて切り詰めてから、文字列を `EndsWith` 関数に渡します。たとえば、`EndsWith(TRIM(string), target)` のように指定します。| +|[IndexOf\(target, string2\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`CHARINDEX(target, string2)`| +|[Left \(string1, length\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`LEFT(string1, length)`| +|[Length \(string\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`LEN(string)`| +|[LTrim\(string\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`LTRIM(string)`| +|[Right \(string1, length\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`RIGHT (string1, length)`| +|[Trim\(string\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`LTRIM(RTRIM(string))`| +|[Replace \(string1, string2, string3\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`REPLACE(string1, string2, string3)`| +|[Reverse \(string\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`REVERSE (string)`| +|[RTrim\(string\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`RTRIM(string)`| +|[StartsWith\(string, target\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`CHARINDEX(target, string)`| +|[Substring\(string, start, length\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`SUBSTRING(string, start, length)`| +|[ToLower\(string\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`LOWER(string)`| +|[ToUpper\(string\)](../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|`UPPER(string)`| + +## ビット単位の関数 + ビット単位の関数のマッピングを次の表に示します。 + +|正規関数|SQL Server 関数| +|----------|-------------------| +|[BitWiseAnd \(value1, value2\)](../../../../../docs/framework/data/adonet/ef/language-reference/bitwise-canonical-functions.md)|value1 & value2| +|[BitWiseNot \(value\)](../../../../../docs/framework/data/adonet/ef/language-reference/bitwise-canonical-functions.md)|~value| +|[BitWiseOr \(value1, value2\)](../../../../../docs/framework/data/adonet/ef/language-reference/bitwise-canonical-functions.md)|value1 | value2| +|[BitWiseXor \(value1, value2\)](../../../../../docs/framework/data/adonet/ef/language-reference/bitwise-canonical-functions.md)|value1 ^ value2| \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/connection-strings.md b/docs/framework/data/adonet/ef/connection-strings.md new file mode 100644 index 00000000000..5ed798f62bb --- /dev/null +++ b/docs/framework/data/adonet/ef/connection-strings.md @@ -0,0 +1,126 @@ +--- +title: "接続文字列 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 78d516bc-c99f-4865-8ff1-d856bc1a01c0 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 接続文字列 +接続文字列には、データ プロバイダーからデータ ソースにパラメーターとして渡す初期化情報が含まれています。 接続文字列は接続を開くときに解析され、その構文はデータ プロバイダーによって異なります。 Entity Framework で使用される接続文字列には、Entity Framework のサポート基盤である ADO.NET データ プロバイダーへの接続に使用される情報が含まれています。 また、必要なモデル ファイルおよびマッピング ファイルに関する情報も含まれています。 + + 接続文字列は、モデル メタデータおよびマッピング メタデータにアクセスしてデータ ソースに接続する際に EntityClient プロバイダーによって使用されます。 接続文字列へのアクセスや接続文字列の設定は、 プロパティを使用して行います。 クラスを使用すると、接続文字列内のパラメーターの構築やこれらへのアクセスをプログラムで行えます。 詳細については、「[EntityConnection の接続文字列を作成する方法](../../../../../docs/framework/data/adonet/ef/how-to-build-an-entityconnection-connection-string.md)」を参照してください。 + + [Entity Data Model ツール](http://msdn.microsoft.com/ja-jp/91076853-0881-421b-837a-f582f36be527)は、アプリケーションの構成ファイルに保存される接続文字列を生成します。 は、オブジェクト クエリの作成時に自動的にこの接続情報を取得します。 インスタンスで使用される には、 プロパティからアクセスできます。 詳細については、「[Managing Connections and Transactions](http://msdn.microsoft.com/ja-jp/b6659d2a-9a45-4e98-acaa-d7a8029e5b99)」を参照してください。 + +## 接続文字列パラメーター + 接続文字列の形式は、キーと値パラメーターのペアをセミコロンで区切ったリストです。 + + `keyword1=value; keyword2=value;` + + それぞれのキーワードと値の関連付けには、等号 \(\=\) が使用されます。 キーワードの大文字と小文字は区別されません。また、キーと値のペア間のスペースは無視されます。 ただし、値の大文字と小文字を区別するかどうかはデータ ソースにより異なる場合があります。 値にセミコロン、単一引用符、または二重引用符が含まれている場合は、必ず二重引用符で囲む必要があります。 のキーワード値に有効な名前を次の表に示します。 + +|キーワード|説明| +|-----------|--------| +|`Provider`|`Name` キーワードが指定されていない場合に必要です。 基になるプロバイダーの オブジェクトを取得するために使用されるプロバイダー名です。 この値は定数です。

`Name` キーワードがエンティティ接続文字列に含まれていない場合、`Provider` キーワードの空でない値が必要になります。 このキーワードは `Name` キーワードと同時に指定できません。| +|`Provider Connection String`|省略可能です。 基になるデータ ソースに渡される、プロバイダー固有の接続文字列を指定します。 この接続文字列は、データ プロバイダーの有効なキーワード\/値ペアを使用して表されます。 無効な `Provider Connection String` がデータ ソースによって評価されると、ランタイム エラーが発生します。

このキーワードは `Name` キーワードと同時に指定できません。

`Provider Connection String` の値は、引用符で囲む必要があります。 次に例を示します。

`Provider Connection String ="Server=serverName; User ID = userID";`

次に誤った例を示します。

`Provider Connection String =Server=serverName; User ID = userID`| +|`Metadata`|`Name` キーワードが指定されていない場合に必要です。 メタデータとマッピング情報の検索対象となるディレクトリ、ファイル、およびリソースの場所をパイプで区切って指定したリストです。 次に例を示します。

`Metadata=`

`c:\model | c:\model\sql\mapping.msl;`

パイプ区切り記号の両側の空白は無視されます。

このキーワードは `Name` キーワードと同時に指定できません。| +|`Name`|アプリケーションは、オプションで、必要なキーワード\/値接続文字列値を提供する接続名をアプリケーション構成ファイル内で指定できます。 その場合は、接続文字列内に値を直接記述することはできません。 `Name` キーワードは、構成ファイル内で使用できません。

`Name` キーワードが接続文字列に含まれていない場合、Provider キーワードの空でない値が必要になります。

このキーワードは他のすべての接続文字列キーワードと同時に指定できません。| + + アプリケーション構成ファイルに格納された [AdventureWorks Sales Model](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) の接続文字列の例を次に示します。 + + + +## モデル ファイルおよびマッピング ファイルの場所 + `Metadata` パラメーターには、`EntityClient` プロバイダーがモデル ファイルおよびマッピング ファイルを検索するための場所のリストが格納されます。 多くの場合、モデル ファイルとマッピング ファイルは、アプリケーション実行可能ファイルと同じディレクトリに配置されます。 これらのファイルは、特定の場所に配置することも組み込みリソースとしてアプリケーションに含めることもできます。 + + 組み込みリソースは次のように指定します。 + +``` +Metadata=res:///. +``` + + 組み込みリソースの場所を定義するには、次のオプションを使用できます。 + +||| +|-|-| +|オプション|説明| +|`assemblyFullName`|リソースが組み込まれたアセンブリの完全な名前。 この名前には、次のように単純な名前、バージョン名、サポートされるカルチャ、および公開キーが含まれます。

`ResourceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null`

リソースは、アプリケーションからアクセスできる任意のアセンブリに組み込むことができます。

`assemblyFullName` にワイルドカード \(\*\) を指定すると、Entity Framework ランタイムでは、次の場所のリソースがこの順序で検索されます。

1. 呼び出し側のアセンブリ
2. 参照アセンブリ
3. アプリケーションの bin ディレクトリ内のアセンブリ

ファイルが上記のどの場所にもない場合は、例外がスローされます。 **Note:** ワイルドカード \(\*\) を使用する場合、Entity Framework では、正しい名前のリソースを見つけるためにすべてのアセンブリを調べる必要があります。 パフォーマンスを向上させるには、ワイルドカードではなくアセンブリ名を指定してください。| +|`resourceName`|AdvendtureWorksModel.csdl などの含まれるリソースの名前。 メタデータ サービスでは、拡張子が .csdl、.ssdl、または .msl のいずれかであるファイルまたはリソースのみが検索されます。 `resourceName` を指定しない場合は、すべてのメタデータ リソースが読み込まれます。 リソースには、アセンブリ内で一意の名前を付ける必要があります。 同じ名前が付けられた複数のファイルがアセンブリ内の異なるディレクトリで定義されている場合、`resourceName` には、リソースの名前の前にフォルダー構造を含める必要があります \(FolderName.FileName.csdl など\)。

`assemblyFullName` にワイルドカード \(\*\) を指定した場合、`resourceName` は不要です。| + +> [!NOTE] +> パフォーマンスを向上させるには、リソースを呼び出し側のアセンブリに組み込んでください。ただし、呼び出し側のアセンブリ内の基になるマッピング ファイルとメタデータ ファイルへの参照が存在しない Web 以外のシナリオの場合は除きます。 + + 次の例では、呼び出し側のアセンブリ、参照アセンブリ、およびアプリケーションの bin ディレクトリ内のその他のアセンブリに存在するすべてのモデル ファイルおよびマッピング ファイルを読み込みます。 + +``` +Metadata=res://*/ +``` + + 次の例では、model.csdl ファイルを AdventureWorks アセンブリから読み込み、model.ssdl ファイルと model.msl ファイルを実行中のアプリケーションの既定のディレクトリから読み込みます。 + +``` +Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|model.ssdl|model.msl +``` + + 次の例では、指定した 3 つのリソースを特定のアセンブリから読み込みます。 + +``` +Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl| +res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.ssdl| +res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.msl +``` + + 次の例では、拡張子が .csdl、.msl、および .ssdl であるすべての組み込みリソースをアセンブリから読み込みます。 + +``` +Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/ +``` + + 次の例では、相対ファイル パスと "datadir\\metadata\\" 内のすべてのリソースを読み込まれたアセンブリの場所から読み込みます。 + +``` +Metadata=datadir\metadata\ +``` + + 次の例では、相対ファイル パス内のすべてのリソースを読み込まれたアセンブリの場所から読み込みます。 + +``` +Metadata=.\ +``` + +## |DataDirectory| 置換文字列と Web アプリケーション ルート演算子 \(~\) のサポート + `DataDirectory` と ~ 演算子は、`Metadata` キーワードと `Provider Connection String` キーワードの一部として `` で使用されます。 によって、`DataDirectory` と ~ 演算子がそれぞれ とストア プロバイダーに転送されます。 + +|用語|説明| +|--------|--------| +|`|DataDirectory|`|マッピング ファイルとメタデータ ファイルの相対パスに解決されます。 この値は、`AppDomain.SetData("DataDirectory", objValue)` メソッドで設定される値です。 `DataDirectory` 置換文字列はパイプ文字で囲む必要があり、その名前とパイプ文字の間に空白を含めることはできません。 `DataDirectory` の名前では大文字と小文字は区別されません。

"DataDirectory" という名前の物理ディレクトリをメタデータ パスのリストのメンバーとして渡す必要がある場合は、名前の片側または両側に空白を追加します \(`Metadata="DataDirectory1 | DataDirectory | DataDirectory2"` など\)。 ASP.NET アプリケーションでは、|DataDirectory| は "\\/app\_data" フォルダーに解決されます。| +|~|Web アプリケーション ルートに解決されます。 先頭の ~ 文字は、有効なローカル サブディレクトリを表すこともありますが、常に Web アプリケーション ルート演算子 \(~\) として解釈されます。 このようなローカル サブディレクトリを参照するには、ユーザーが明示的に `./~` を渡す必要があります。| + + `DataDirectory` と ~ 演算子は、パスの先頭にのみ指定する必要があります。その他の位置では解決されません。 Entity Framework では、`~/data` の解決は試行されますが、`/data/~` は物理パスとして処理されます。 + + `DataDirectory` または ~ 演算子で始まるパスは、`DataDirectory` と ~ 演算子の分岐の外側の物理パスには解決できません。 たとえば、パス `~`、`~/data`、`~/bin/Model/SqlServer` は解決されます。 パス `~/..` や `~/../other` は解決できません。 + + `DataDirectory` と ~ 演算子は、`|DataDirectory|\Model` や `~/bin/Model` など、サブディレクトリが含まれるように拡張できます。 + + `DataDirectory` 置換文字列と ~ 演算子の解決は非再帰型です。 たとえば、`DataDirectory` に `~` 文字が含まれる場合は、例外が発生します。 これにより、無限再帰が回避されます。 + +## 参照 + [データ プロバイダーの操作](../../../../../docs/framework/data/adonet/ef/working-with-data-providers.md) + [配置に関する注意事項](../../../../../docs/framework/data/adonet/ef/deployment-considerations.md) + [Managing Connections and Transactions](http://msdn.microsoft.com/ja-jp/b6659d2a-9a45-4e98-acaa-d7a8029e5b99) + [接続文字列](../../../../../docs/framework/data/adonet/connection-strings.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/data-providers.md b/docs/framework/data/adonet/ef/data-providers.md new file mode 100644 index 00000000000..38ce98e5dd1 --- /dev/null +++ b/docs/framework/data/adonet/ef/data-providers.md @@ -0,0 +1,37 @@ +--- +title: "Entity Framework データ プロバイダー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5252e639-ff11-4818-82e7-07221ed6ae23 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Entity Framework データ プロバイダー +ここでは、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] をサポートするデータ プロバイダーについて説明します。 + +## このセクションの内容 + [Entity Framework 用の EntityClient プロバイダー](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md) + EntityClient データ プロバイダーについて説明します。 このプロバイダーは、データ モデルに対するクエリを正規コマンド ツリーに変換します。 すると、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] 用の [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] データ プロバイダーが、このコマンド ツリーを消費できるようになります。 + + [Entity Framework 用 SqlClient](../../../../../docs/framework/data/adonet/ef/sqlclient-for-the-entity-framework.md) + [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を [!INCLUDE[ssNoVersion](../../../../../includes/ssnoversion-md.md)] データベースと共に使用できる [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] データ プロバイダーについて説明します。 + +## 関連項目 + [Entity Framework \(SQL Server Compact\)](http://go.microsoft.com/fwlink/?LinkId=135638) + プロバイダーの制限事項と、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を SQL Server Compact のデータベースと組み合わせて使用する方法について説明します。 + + [Entity Framework のサードパーティ プロバイダー](http://go.microsoft.com/fwlink/?LinkId=143699) + 現在、Entity Framework 用として公開されているサードパーティのデータ プロバイダーの一覧。 + +## 参照 + [データ プロバイダーの操作](../../../../../docs/framework/data/adonet/ef/working-with-data-providers.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/date-and-time-functions.md b/docs/framework/data/adonet/ef/date-and-time-functions.md new file mode 100644 index 00000000000..d8b7491b548 --- /dev/null +++ b/docs/framework/data/adonet/ef/date-and-time-functions.md @@ -0,0 +1,48 @@ +--- +title: "日付と時刻関数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 971762d0-663b-4b64-8c61-352a8e6d3949 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 日付と時刻関数 +.NET Framework Data Provider for SQL Server \(SqlClient\) には、`System.DateTime` 型の入力値に対して操作を実行し、`string`、数値、または `System.DateTime` 値の結果を返す日付と時刻関数が用意されています。 これらの関数は、SqlClient の SqlServer 名前空間に存在します。 Entity Framework は、プロバイダーの名前空間プロパティを使用することにより、型や関数など、特定のコンストラクターに対してこのプロバイダーによってどのプレフィックスが使用されているかを特定できます。次の表に、SqlClient の日付と時刻関数を示します。 + +|関数|説明| +|--------|--------| +|`DATEADD(` `datepart`, `number`, `date``)`|指定された日付に特定の期間を加えた新しい `DateTime` 型の値を返します。

**引数**

`datepart`: 新しい値を返す対象となる日付の要素を表す `String`。

`number`: `datepart` に加算する値 \(`Int32`、`Int64`、`Decimal`、`Double` のいずれか\)。

`date`: 有効桁数が 0 ~ 7 の `DateTime`、`DateTimeOffset`、`Time` のいずれかの値を返す式、または日付形式の文字列。

**戻り値**

有効桁数が 0 ~ 7 の `DateTime`、`DateTimeOffset`、または `Time` の新しい値。

**例**

`SqlServer.DATEADD('day', 22, cast('6/9/2006' as DateTime))`| +|`DATEDIFF(` `datepart`, `startdate`, `enddate``)`|指定された 2 つの日付間の差を、日付および時刻の単位で返します。

**引数**

`datepart`: 差分を計算する日付の要素を表す `String`。

`startdate`: 計算の開始日として、有効桁数が 0 ~ 7 の `DateTime`、`DateTimeOffset`、`Time` のいずれかの値を返す式、または日付形式の文字列を指定します。

`enddate`: 計算の終了日として、有効桁数が 0 ~ 7 の `DateTime`、`DateTimeOffset`、`Time` のいずれかの値を返す式、または日付形式の文字列を指定します。

**戻り値**

`Int32`。

**例**

`SqlServer.DATEDIFF('day', cast('6/9/2006' as DateTime),`

`cast('6/20/2006' as DateTime))`| +|`DATENAME(` `datepart`, `date``)`|指定された日付の特定の日付構成要素を文字列で返します。

**引数**

`datepart`: 新しい値を返す対象となる日付の要素を表す `String`。

`date`: 有効桁数が 0 ~ 7 の `DateTime`、`DateTimeOffset`、`Time` のいずれかの値を返す式、または日付形式の文字列。

**戻り値**

指定された日付について、特定の日付要素を表す文字列。

**例**

`SqlServer.DATENAME('year', cast('6/9/2006' as DateTime))`| +|`DATEPART(` `datepart`, `date``)`|指定された日付について、特定の日付要素を整数で返します。

**引数**

`datepart`: 新しい値を返す対象となる日付の要素を表す `String`。

`date`: 有効桁数が 0 ~ 7 の `DateTime`、`DateTimeOffset`、`Time` のいずれかの値を返す式、または日付形式の文字列。

**戻り値**

指定された日付の特定の日付要素を表す `Int32` 値。

**例**

`SqlServer.DATEPART('year', cast('6/9/2006' as DateTime))`| +|`DAY(` `date` `)`|指定された日付の日を整数として返します。

**引数**

`date`:有効桁数が 0 ~ 7 の `DateTime` 型または `DateTimeOffset` 型の式。

**戻り値**

指定された日付の日を表す `Int32` 値。

**例**

`SqlServer.DAY(cast('6/9/2006' as DateTime))`| +|`GETDATE()`|datetime 値に使用する現在の日付と時刻を SQL Server の内部形式で生成します。

**戻り値**

有効桁数が 3 の `DateTime` としての現在のシステム日時。

**例**

`SqlServer.GETDATE()`| +|`GETUTCDATE()`|UTC \(協定世界時またはグリニッジ標準時\) 形式の datetime 値を生成します。

**戻り値**

UTC 形式の有効桁数 3 の `DateTime` 値。

**例**

`SqlServer.GETUTCDATE()`| +|`MONTH(` `date` `)`|指定された日付の月を整数として返します。

**引数**

`date`:有効桁数が 0 ~ 7 の `DateTime` 型または `DateTimeOffset` 型の式。

**戻り値**

指定された日付の月を表す `Int32` 値。

**例**

`SqlServer.MONTH(cast('6/9/2006' as DateTime))`| +|`YEAR(` `date` `)`|指定された日付の年を整数として返します。

**引数**

`date`:有効桁数が 0 ~ 7 の `DateTime` 型または `DateTimeOffset` 型の式。

**戻り値**

指定された日付の年を表す `Int32` 値。

**例**

`SqlServer.YEAR(cast('6/9/2006' as DateTime))`| +|`SYSDATETIME()`|有効桁数が 7 の `DateTime` 値を返します。

**戻り値**

有効桁数が 7 の `DateTime` 値。

**例**

`SqlServer.SYSDATETIME()`| +|`SYSUTCDATE()`|UTC \(協定世界時またはグリニッジ標準時\) 形式の datetime 値を生成します。

**戻り値**

UTC 形式の有効桁数 7 の `DateTime` 値。

**例**

`SqlServer.SYSUTCDATE()`| +|`SYSDATETIMEOFFSET()`|有効桁数が 7 の `DateTimeOffset` 値を返します。

**戻り値**

UTC 形式の有効桁数 7 の `DateTimeOffset` 値。

**例**

`SqlServer.SYSDATETIMEOFFSET()`| + + SqlClient でサポートされる日付と時刻の関数の詳細については、SqlClient プロバイダー マニフェストで指定した SQL Server のバージョンのドキュメントを参照してください。 + +|SQL Server 2000|SQL Server 2005|SQL Server 2008| +|---------------------|---------------------|---------------------| +|[日付と時間関数 \(Transact\-SQL\)](http://go.microsoft.com/fwlink/?LinkId=115908)|[日付と時間関数 \(Transact\-SQL\)](http://go.microsoft.com/fwlink/?LinkId=115909)|[日付と時間関数 \(Transact\-SQL\)](http://go.microsoft.com/fwlink/?LinkId=98360)| + +## 参照 + [Entity Framework 用 SqlClient 関数](../../../../../docs/framework/data/adonet/ef/sqlclient-for-ef-functions.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/deployment-considerations.md b/docs/framework/data/adonet/ef/deployment-considerations.md new file mode 100644 index 00000000000..b4a3946d0ae --- /dev/null +++ b/docs/framework/data/adonet/ef/deployment-considerations.md @@ -0,0 +1,44 @@ +--- +title: "配置に関する注意事項 (Entity Framework) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 3a847a22-4eb8-4565-b18b-453bbca070db +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 配置に関する注意事項 (Entity Framework) +このトピックでは、データ アクセスに ADO.NET Entity Framework を使用するアプリケーションの配置について説明します。 Entity Framework の詳細については、「[はじめに](../../../../../docs/framework/data/adonet/ef/getting-started.md)」を参照してください。 + + Entity Framework は、Visual Studio に組み込むことにより Visual Studio での開発を容易にする一連のツールを提供します。 詳細については、「[ADO.NET Entity Data Model Tools](http://msdn.microsoft.com/ja-jp/91076853-0881-421b-837a-f582f36be527)」を参照してください。 このトピックでは、Entity Framework ベースのアプリケーションを配置するための具体的なテクノロジの使用法については触れません。 + + Visual Studio では、ClickOnce 配置など、アプリケーションの配布および配置のための機能が提供されています。 詳細については、Visual Studio ドキュメントの「[アプリケーションとコンポーネントの配置](../Topic/Deploying%20Applications,%20Services,%20and%20Components.md)」を参照してください。 + + Entity Framework を使用するアプリケーションを配置する場合は、次の注意事項が適用されます。 + +- .NET Framework 3.5 Service Pack 1 \(SP1\) 以降、Entity Framework は .NET Framework のコンポーネントになっています。 Entity Framework ベースのアプリケーションを配置する場合は、.NET Framework 3.5 SP1 以降のバージョンがインストールされていることを確認する必要があります。 + +- Entity Data Model ウィザードで概念モデルが生成されると、アプリケーション設定ファイルに接続文字列が作成されます。 モデル ファイルおよびマッピング ファイルをアプリケーション リソースとして埋め込むか、出力ディレクトリにコピーすることができます。 既定では、モデル ファイルとマッピング ファイルは、組み込みアプリケーション リソースとして配置されます。 エンティティ デザイナー ファイルの `Metadata Artifact Processing` プロパティを使用して、次のオプションのいずれかを選択することができます。 詳細については、「[How to: Copy Model and Mapping Files to the Output Directory](http://msdn.microsoft.com/ja-jp/e2c9820f-1705-457e-9fdb-8b289f3179b4)」を参照してください。 + +- モデルとマッピングの情報 \(概念スキーマ定義言語 \(CSDL\)、ストア スキーマ定義言語 \(SSDL\)、およびマッピング仕様言語 \(MSL\) で表現\) は、アプリケーションと共に配置され、その場所は、接続文字列によって指定されます。 詳細については、「[接続文字列](../../../../../docs/framework/data/adonet/ef/connection-strings.md)」を参照してください。 + +- モデルとマッピングの情報をアプリケーション リソースとして組み込む場合は、概念モデルを更新するたびに、アプリケーションの再コンパイルと再配置が必要になります。 + +- Entity Framework は .NET Framework のコンポーネントであるため、.NET Framework 使用許諾契約書での許可に従ってアプリケーションと共に再配布できます。 + +## 参照 + [ADO.NET Entity Framework](../../../../../docs/framework/data/adonet/ef/index.md) + [開発および配置に関する注意事項](../../../../../docs/framework/data/adonet/ef/development-and-deployment-considerations.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/development-and-deployment-considerations.md b/docs/framework/data/adonet/ef/development-and-deployment-considerations.md new file mode 100644 index 00000000000..a1d574df394 --- /dev/null +++ b/docs/framework/data/adonet/ef/development-and-deployment-considerations.md @@ -0,0 +1,35 @@ +--- +title: "開発および配置に関する注意事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 535e6611-02de-484c-b5ff-6ffeed04d740 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 開発および配置に関する注意事項 +このセクションのトピックでは、ADO.NET Entity Framework に基づくアプリケーションを開発または配置する際に考慮する必要のある問題について説明します。 + +## このセクションの内容 + [セキュリティに関する注意事項](../../../../../docs/framework/data/adonet/ef/security-considerations.md) + + [パフォーマンスに関する考慮事項](../../../../../docs/framework/data/adonet/ef/performance-considerations.md) + + [移行に関する注意点](../../../../../docs/framework/data/adonet/ef/migration-considerations.md) + + [配置に関する注意事項](../../../../../docs/framework/data/adonet/ef/deployment-considerations.md) + +## 参照 + [ADO.NET Entity Framework](../../../../../docs/framework/data/adonet/ef/index.md) + [エンティティ フレームワークの概要](../../../../../docs/framework/data/adonet/ef/overview.md) + [はじめに](../../../../../docs/framework/data/adonet/ef/getting-started.md) + [ADO.NET Entity Data Model Tools](http://msdn.microsoft.com/ja-jp/91076853-0881-421b-837a-f582f36be527) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/edm-generator-edmgen-exe.md b/docs/framework/data/adonet/ef/edm-generator-edmgen-exe.md new file mode 100644 index 00000000000..7e1c3b10d24 --- /dev/null +++ b/docs/framework/data/adonet/ef/edm-generator-edmgen-exe.md @@ -0,0 +1,88 @@ +--- +title: "EDM ジェネレーター (EdmGen.exe) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: fe8297a1-1fc3-48ce-8eeb-f70f63f857aa +caps.latest.revision: 6 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 6 +--- +# EDM ジェネレーター (EdmGen.exe) +EdmGen.exe は、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] モデルとマッピング ファイルを操作するためのコマンドライン ツールです。 EdmGen.exe ツールを使用すると、次の操作を行うことができます。 + +- データ ソース固有の .NET Framework データ プロバイダーを使用してデータ ソースに接続し、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] で使用される概念モデル \(.csdl\)、ストレージ モデル \(.ssdl\)、およびマッピング \(.msl\) のファイルを生成する。 詳細については、「[方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-the-model-and-mapping-files.md)」を参照してください。 + +- 既存のモデルを検証する。 詳細については、「[方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを検証する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-validate-model-and-mapping-files.md)」を参照してください。 + +- 概念モデル \(.csdl\) ファイルから生成されたオブジェクト クラスを含む C\# コード ファイルまたは Visual Basic コード ファイルを生成する。 詳細については、「[方法: EdmGen.exe を使用してオブジェクトレイヤー コードを生成する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-object-layer-code.md)」を参照してください。 + +- 事前に生成した既存のモデルのビューを含む C\# コード ファイルまたは Visual Basic コード ファイルを生成する。 詳細については、「[How to: Pre\-Generate Views to Improve Query Performance](http://msdn.microsoft.com/ja-jp/b18a9d16-e10b-4043-ba91-b632f85a2579)」を参照してください。 + + EdmGen.exe ツールは [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] ディレクトリにインストールされます。 多くの場合、C:\\windows\\Microsoft.NET\\Framework\\v4.0 にあります。 64 ビット システムの場合は、C:\\windows\\Microsoft.NET\\Framework64\\v4.0 にあります。 Visual Studio のコマンド プロンプトから EdmGen.exe ツールにアクセスすることもできます \(**\[スタート\]** ボタンをクリックし、**\[すべてのプログラム\]**、**\[Microsoft Visual Studio 2010\]**、**\[Visual Studio ツール\]** の順にポイントして、**\[Visual Studio 2010 コマンド プロンプト\]** をクリックします\)。 + +## 構文 + +``` +EdmGen /mode:choice [options] +``` + +## モード + EdmGen.exe ツールを使用する場合、次のいずれかのモードを指定する必要があります。 + +|モード|説明| +|---------|--------| +|`/mode:ValidateArtifacts`|.csdl、.ssdl、および .msl ファイルを検証し、エラーまたは警告を表示します。

このオプションを使用するには、少なくとも `/inssdl` 引数または `/incsdl` 引数のどちらかが必要です。 `/inmsl` を指定する場合は、`/inssdl` 引数と `/incsdl` 引数も必要です。| +|`/mode:FullGeneration`|`/connectionstring` オプションで指定されたデータベース接続情報を使用し、.csdl、.ssdl、.msl、オブジェクト レイヤー、およびビュー ファイルを生成します。

このオプションを使用するには、`/connectionstring` 引数に加え、`/project` 引数を指定するか、`/outssdl`、`/outcsdl`、`/outmsdl`、`/outobjectlayer`、`/outviews`、`/namespace`、`/entitycontainer` の各引数を指定する必要があります。| +|`/mode:FromSSDLGeneration`|指定された .ssdl ファイルから、.csdl ファイル、.msl ファイル、ソース コード、およびビューを生成します。

このオプションを使用するには、`/inssdl` 引数に加え、`/project` 引数を指定するか、`/outcsdl`、`/outmsl`、`/outobjectlayer`、`/outviews`、、`/entitycontainer` の各引数を指定する必要があります。| +|`/mode:EntityClassGeneration`|.csdl ファイルから生成されたクラスを含むソース コード ファイルを作成します。

このオプションを使用するには、`/incsdl` 引数に加え、`/project` 引数または `/outobjectlayer` 引数のどちらかを指定する必要があります。 `/language` 引数は省略可能です。| +|`/mode:ViewGeneration`|.csdl、.ssdl、および .msl ファイルから生成されたビューを含むソース コード ファイルを作成します。

このオプションを使用するには、`/inssdl`、`/incsdl`、 の各引数に加え、`/project` 引数または `/outviews` 引数のどちらかを指定する必要があります。 `/language` 引数は省略可能です。| + +## オプション + +|オプション|説明| +|-----------|--------| +|`/p[roject]:`\|使用するプロジェクト名を指定します。 このプロジェクト名は、名前空間の設定の既定値、モデル ファイルとマッピング ファイルの名前、オブジェクト ソース ファイルの名前、およびビュー生成のソース ファイルの名前として使用されます。 エンティティのコンテナ名が \Context に設定されています。| +|`/prov[ider]:`\|ストレージ モデル \(.ssdl\) ファイルの生成に使用する [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] データ プロバイダーの名前です。 既定のプロバイダーは [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] Data Provider for SQL Server \(\) です。| +|`/c[onnectionstring]:`\|データ ソースへの接続に使用する文字列を指定します。| +|`/incsdl:`\|.csdl ファイル、または .csdl ファイルがあるディレクトリを指定します。 この引数は複数回指定できるので、複数のディレクトリまたは .csdl ファイルを指定できます。 概念モデルが複数のファイルに分割されている場合にクラスの生成 \(`/mode:EntityClassGeneration`\) またはビューの生成 \(`/mode:ViewGeneration`\) を行うときは、複数のディレクトリを指定すると便利です。 また、複数のモデルを検証する \(`/mode:ValidateArtifacts`\) 場合にも役立ちます。| +|`/refcsdl:`\|追加の .csdl ファイル、またはソース .csdl ファイルの参照の解決に使用するファイルを指定します \(ソース .csdl ファイルは、`/incsdl` オプションで指定したファイルです\)。 `/refcsdl` ファイルには、ソース .csdl ファイルが依存する型が含まれています。 この引数は複数回指定できます。| +|`/inmsl:`\|.msl ファイル、または .msl ファイルがあるディレクトリを指定します。 この引数は複数回指定できるので、複数のディレクトリまたは .msl ファイルを指定できます。 概念モデルが複数のファイルに分割されている場合にビューを生成 \(`/mode:ViewGeneration`\) するときは、複数のディレクトリを指定すると便利です。 また、複数のモデルを検証する \(`/mode:ValidateArtifacts`\) 場合にも役立ちます。| +|`/inssdl:`\|.ssdl ファイル、または .ssdl ファイルがあるディレクトリを指定します。 この引数は複数回指定できるので、複数のディレクトリまたは .ssdl ファイルを指定できます。 これは、複数のモデルを検証する場合 `(/mode:ValidateArtifacts)` に役立ちます。| +|`/outcsdl:`\|作成される .csdl ファイルの名前を指定します。| +|`/outmsl:`\|作成される .msl ファイルの名前を指定します。| +|`/outssdl:`\|作成される .ssdl ファイルの名前を指定します。| +|`/outobjectlayer:`\|.csdl ファイルから生成されたオブジェクトを含むソース コード ファイルの名前を指定します。| +|`/outviews:`\|生成されたビューを含むソース コード ファイルの名前を指定します。| +|`/language:`\[VB|CSharp\]|生成されるソース コード ファイルの言語を指定します。 既定の言語は C\# です。| +|`/namespace:`\|使用するモデル名前空間を指定します。 名前空間は、`/mode:FullGeneration` または `/mode:FromSSDLGeneration` の実行時に .csdl ファイルに設定されます。 `/mode:EntityClassGeneration` の実行時には名前空間は使用されません。| +|`/entitycontainer:`\|生成されたモデル ファイルとマッピング ファイルの `` 要素に適用する名前を指定します。| +|`/pl[uralize]`|単数形と複数形の英語のルールを、概念モデルの `Entity`、`EntitySet`、および `NavigationProperty` の各名前に適用します。 このオプションでは、以下の処理が実行されます。

- `EntityType` 名がすべて単数形になります。
- `EntitySet` 名がすべて複数形になります。
- 各 `NavigationProperty` が返すエンティティが最大で 1 つの場合、名前は単数形になります。
- 各 `NavigationProperty` が返すエンティティが複数の場合、名前は複数形になります。| +|`/SupressForeignKeyProperties or /nofk`|外部キー列が概念モデルのエンティティ型のスカラー プロパティとして公開されないようにします。| +|`/help` または`?`|このツールのコマンド構文とオプションを表示します。| +|`/nologo`|著作権メッセージが表示されないようにします。| +|`/targetversion:` \|生成されたコードのコンパイルに使用される .NET Framework のバージョンです。 サポートされているバージョンは 4 と 4.5 です。 既定値は 4 です。| + +## このセクションの内容 + [方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-the-model-and-mapping-files.md) + + [方法: EdmGen.exe を使用してオブジェクトレイヤー コードを生成する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-object-layer-code.md) + + [方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを検証する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-validate-model-and-mapping-files.md) + +## 参照 + [ADO.NET Entity Data Model Tools](http://msdn.microsoft.com/ja-jp/91076853-0881-421b-837a-f582f36be527) + [Entity Data Model](../../../../../docs/framework/data/adonet/entity-data-model.md) + [CSDL、SSDL、および MSL 仕様](../../../../../docs/framework/data/adonet/ef/language-reference/csdl-ssdl-and-msl-specifications.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md b/docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md new file mode 100644 index 00000000000..beca9faeb4a --- /dev/null +++ b/docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md @@ -0,0 +1,80 @@ +--- +title: "Entity Framework 用の EntityClient プロバイダー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 8c5db787-78e6-4a34-8dc1-188bca0aca5e +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# Entity Framework 用の EntityClient プロバイダー +EntityClient プロバイダーは、概念モデルで記述されているデータにアクセスするために Entity Framework アプリケーションで使用するデータ プロバイダーです。 概念モデルの詳細については、「[モデリングとマッピング](../../../../../docs/framework/data/adonet/ef/modeling-and-mapping.md)」を参照してください。 EntityClient は、他の .NET Framework データ プロバイダーを使用してデータ ソースにアクセスします。 たとえば、EntityClient は、SQL Server データベースにアクセスするときは .NET Framework Data Provider for SQL Server \(SqlClient\) を使用します。 SqlClient プロバイダーの詳細については、「[Entity Framework 用 SqlClient](../../../../../docs/framework/data/adonet/ef/sqlclient-for-the-entity-framework.md)」を参照してください。 EntityClient プロバイダーは 名前空間で実装されます。 + +## 接続の管理 + [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] は、基になるデータ プロバイダーおよびリレーショナル データベースに を提供することにより、ストレージ固有の [!INCLUDE[vstecado](../../../../../includes/vstecado-md.md)] データ プロバイダーに基づいて構築されます。 オブジェクトを構築するには、必要なモデルとマッピング、さらにストレージ固有のデータ プロバイダー名と接続文字列を含んだ一連のメタデータを参照する必要があります。 を確立すると、概念モデルから生成されたクラスを使用してエンティティにアクセスできます。 + + app.config ファイルの接続文字列を指定できます。 + + には、 クラスも含まれています。 このクラスを使用すると、開発者はこのクラスのプロパティおよびメソッドを使用することによって、正しい構文の接続文字列をプログラムで作成し、既存の接続文字列の解析や再作成を行うことができます。 詳細については、「[EntityConnection の接続文字列を作成する方法](../../../../../docs/framework/data/adonet/ef/how-to-build-an-entityconnection-connection-string.md)」を参照してください。 + +## クエリの作成 + [!INCLUDE[esql](../../../../../includes/esql-md.md)] 言語は、エンティティの概念スキーマを直接操作し、継承やリレーションシップなどの Entity Data Model 概念をサポートする、ストレージの影響を受けない SQL の言語です。 エンティティ モデルに対して [!INCLUDE[esql](../../../../../includes/esql-md.md)] コマンドを実行するには、 クラスを使用します。 オブジェクトを構築する場合は、ストアド プロシージャ名またはクエリ テキストを指定できます。 [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] は、ストレージ固有のデータ プロバイダーと連携し、汎用的な [!INCLUDE[esql](../../../../../includes/esql-md.md)] をストレージ固有のクエリに変換します。 [!INCLUDE[esql](../../../../../includes/esql-md.md)] クエリ記述の詳細については、「[Entity SQL 言語](../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-language.md)」を参照してください。 + + 次の例では、 オブジェクトを作成し、[!INCLUDE[esql](../../../../../includes/esql-md.md)] クエリ テキストを プロパティに割り当てます。 この [!INCLUDE[esql](../../../../../includes/esql-md.md)] クエリは、概念モデルから表示価格で並べ替えた製品を要求します。 次のコードでは、ストレージ モデルが認識されません。 + + `EntityCommand cmd = conn.CreateCommand();` + + `cmd.CommandText = @"` `SELECT VALUE p` + + `FROM AdventureWorksEntities.Product AS p` + + `ORDER BY p.ListPrice ";` + +## クエリの実行 + クエリを実行すると、そのクエリが解析され、正規コマンド ツリーに変換されます。 すべての後続の処理は、コマンド ツリーで行われます。 コマンド ツリーは など、 と基になる [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] データ プロバイダー間の通信手段です。 + + 概念モデルに対する の実行結果は、 によって公開されます。 を返すコマンドを実行するには、 を呼び出します。 は、構造化されたさまざまな結果を記述するための を実装します。 + +## トランザクションの管理 + Entity Framework では、自動トランザクションと明示的トランザクションという 2 つの使用方法があります。 自動トランザクションでは 名前空間を使用し、明示的トランザクションでは クラスを使用します。 + + 概念モデル経由で公開されたデータを更新するには、「[How to: Manage Transactions in the Entity Framework](http://msdn.microsoft.com/ja-jp/4a55eb7f-f826-4a48-9df1-aebe2352ebef)」を参照してください。 + +## このセクションの内容 + [EntityConnection の接続文字列を作成する方法](../../../../../docs/framework/data/adonet/ef/how-to-build-an-entityconnection-connection-string.md) + + [PrimitiveType 結果を返すクエリの実行方法](../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-primitivetype-results.md) + + [StructuralType 結果を返すクエリの実行方法](../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md) + + [RefType 結果を返すクエリの実行方法](../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-reftype-results.md) + + [複合型を返すクエリの実行方法](../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-complex-types.md) + + [入れ子になったコレクションを返すクエリの実行方法](../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-nested-collections.md) + + [EntityCommand を使用してパラメーター化 Entity SQL クエリを実行する方法](../../../../../docs/framework/data/adonet/ef/how-to-execute-a-parameterized-entity-sql-query-using-entitycommand.md) + + [EntityCommand を使用してパラメーター化されたストアド プロシージャを実行する方法](../../../../../docs/framework/data/adonet/ef/how-to-execute-a-parameterized-stored-procedure-using-entitycommand.md) + + [ポリモーフィック クエリを実行する方法](../../../../../docs/framework/data/adonet/ef/how-to-execute-a-polymorphic-query.md) + + [Navigate 演算子でリレーションシップをナビゲートする方法](../../../../../docs/framework/data/adonet/ef/how-to-navigate-relationships-with-the-navigate-operator.md) + +## 参照 + [Managing Connections and Transactions](http://msdn.microsoft.com/ja-jp/b6659d2a-9a45-4e98-acaa-d7a8029e5b99) + [ADO.NET Entity Framework](../../../../../docs/framework/data/adonet/ef/index.md) + [言語リファレンス](../../../../../docs/framework/data/adonet/ef/language-reference/index.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/generating-sql-from-command-trees-best-practices.md b/docs/framework/data/adonet/ef/generating-sql-from-command-trees-best-practices.md new file mode 100644 index 00000000000..be6aee0bebc --- /dev/null +++ b/docs/framework/data/adonet/ef/generating-sql-from-command-trees-best-practices.md @@ -0,0 +1,149 @@ +--- +title: "コマンド ツリーからの SQL の生成: ベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 71ef6a24-4c4f-4254-af3a-ffc0d855b0a8 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# コマンド ツリーからの SQL の生成: ベスト プラクティス +出力クエリ コマンド ツリーは、SQL で表現できるクエリに厳密に従って作成されます。 ただし、出力コマンド ツリーから SQL を生成する際にプロバイダーの作成者が直面する、一般的な問題がいくつかあります。 このトピックでは、これらの問題について説明します。 これらの問題への対処方法については、次のトピックでサンプル プロバイダーを介して紹介します。 + +## SQL SELECT ステートメントでの DbExpression ノードのグループ化 + 一般的な SQL ステートメントは、次の形状の入れ子の構造を持ちます。 + +``` +SELECT … +FROM … +WHERE … +GROUP BY … +ORDER BY … +``` + + 1 つ以上の句が空でもかまいません。 入れ子の SELECT ステートメントは、どの行にも出現する可能性があります。 + + クエリ コマンド ツリーを SQL SELECT ステートメントに変換すると、すべての関係演算子に対応する 1 つのサブクエリが生成されます。 ただしその結果、入れ子になった不要なサブクエリが生成され、読み取りが困難になります。 一部のデータ ストアでは、クエリは十分なパフォーマンスを発揮しません。 + + 例として、次のクエリ コマンド ツリーについて考えます。 + +``` +Project ( +a.x, + a = Filter( + b.y = 5, + b = Scan("TableA") + ) +) +``` + + 非効率な変換を行った場合、次のような SQL が生成されます。 + +``` +SELECT a.x +FROM ( SELECT * + FROM TableA as b + WHERE b.y = 5) as a +``` + + すべての関係式ノードが新しい SQL SELECT ステートメントになっていることに注目してください。 + + そのため、正確性を維持しながら、可能な限り多くの式ノードを 1 つの SQL SELECT ステートメントに集約することが重要になります。 + + このような集約を上の例に適用した場合、結果は次のようになります。 + +``` +SELECT b.x +FROM TableA as b +WHERE b.y = 5 +``` + +## SQL SELECT ステートメントでの結合のフラット化 + 複数のノードを 1 つの SQL SELECT ステートメントに集約する処理の 1 つに、1 つの SQL SELECT ステートメントへの複数の結合式の集約があります。 DbJoinExpression は、2 つの入力の間の 1 つの結合を表します。 ただし、1 つの SQL SELECT ステートメントの一部として、複数の結合を指定できます。 その場合、結合は指定の順序で実行されます。 + + 左辺スパイン結合 \(別の結合の左辺の子として表示される結合\) は、1 つの SQL SELECT ステートメントに簡単にフラット化できます。 たとえば、次のクエリ コマンド ツリーについて考えます。 + +``` +InnerJoin( + a = LeftOuterJoin( + b = Extent("TableA") + c = Extent("TableB") + ON b.y = c.x ), + d = Extent("TableC") + ON a.b.y = d.z +) +``` + + これは、次のように適切に変換できます。 + +``` +SELECT * +FROM TableA as b +LEFT OUTER JOIN TableB as c ON b.y = c.x +INNER JOIN TableC as d ON b.y = d.z +``` + + ただし、左辺スパイン結合以外の結合のフラット化は容易ではないので、実行しないでください。 たとえば、次のクエリ コマンド ツリーの結合について考えます。 + +``` +InnerJoin( + a = Extent("TableA") + b = LeftOuterJoin( + c = Extent("TableB") + d = Extent("TableC") + ON c.y = d.x), + ON a.z = b.c.y +) +``` + + これは、サブクエリを持つ SQL SELECT ステートメントに変換されます。 + +``` +SELECT * +FROM TableA as a +INNER JOIN (SELECT * + FROM TableB as c + LEFT OUTER JOIN TableC as d + ON c.y = d.x) as b +ON b.y = d.z +``` + +## 入力の別名のリダイレクト + 入力の別名のリダイレクトについて理解するために、DbFilterExpression、DbProjectExpression、DbCrossJoinExpression、DbJoinExpression、DbSortExpression、DbGroupByExpression、DbApplyExpression、DbSkipExpression などの関係式の構造について考えてみましょう。 + + これらの型はそれぞれ、入力コレクションを示す 1 つ以上の入力プロパティを持ちます。各入力に対応するバインディング変数は、コレクションのトラバース時にその入力の各要素を表すために使用されます。 バインディング変数は、DbFilterExpression の Predicate プロパティや DbProjectExpression の Projection プロパティなどにおいて、入力要素を参照するときに使用されます。 + + 多数の関係式ノードを 1 つの SQL SELECT ステートメントに集約し、関係式の一部 \(たとえば、DbProjectExpression の Projection プロパティの一部\) である式を評価する場合、複数の式のバインディングを 1 つのエクステントにリダイレクトする必要があるため、使用されるバインディング変数が入力の別名と異なる可能性があります。 この問題は、別名の名前変更と呼ばれます。 + + このトピックの最初の例について考えてみてください。 単純な変換を実行して Projection a.x \(DbPropertyExpression\(a, x\)\) を変換する場合、バインディング変数に合わせて入力に "a" という別名を設定しているため、`a.x` に変換するのが適切な処理です。 ただし、両方のノードを 1 つの SQL SELECT ステートメントに集約する場合は、入力に "b" という別名が設定されているため、同じ DbPropertyExpression を `b.x` に変換する必要があります。 + +## 結合の別名のフラット化 + 出力コマンド ツリーの他の関係式とは異なり、DbJoinExpression は 2 つの列から成る行として結果の型を出力します。この 2 つの列のそれぞれが、いずれか 1 つの入力に対応しています。 結合から生じたスカラー プロパティにアクセスするために作成された DbPropertyExpresssion は、別の DbPropertyExpresssion に基づいています。 + + 例として、例 2 の "a.b.y" と例 3 の "b.c.y" が挙げられます。 ただし、対応する SQL ステートメントでは、これらは "b.y" になります。 この別名の再設定は、結合の別名のフラット化と呼ばれます。 + +## 列名およびエクステントの別名の名前変更 + 結合を持つ SQL SELECT クエリを射影を使用して完成させる必要がある場合、関与するすべての列を入力から列挙する際に、名前の競合が発生することがあります。これは、複数の入力が同じ列名を持っている場合です。 競合を避けるには、列に異なる名前を使用してください。 + + また、結合のフラット化の際にも、関与するテーブル \(またはサブクエリ\) の別名が競合することがあります。この場合にも名前の変更が必要です。 + +## SELECT \* の回避 + ベース テーブルから選択する際には `SELECT *` を使用しないでください。 [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] アプリケーションのストレージ モデルでは、データベース テーブル内の列のサブセットのみを含めることができます。 この場合、`SELECT *` によって正しくない結果が生成される可能性があります。 代わりに、関与する式の結果の型の列名を使用して、関与するすべての列を指定してください。 + +## 式の再利用 + 式は、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] によって渡されたクエリ コマンド ツリーで再利用される場合があります。各式は一度しかクエリ コマンド ツリーに表示されないわけではありません。 + +## プリミティブ型のマッピング + 概念 \(EDM\) 型をプロバイダー型にマップする場合は、さまざまな値に対応できるように、最も幅の広い型 \(Int32\) にマップする必要があります。 また、BLOB 型のような、多様な操作に使用できない型 \([!INCLUDE[ssNoVersion](../../../../../includes/ssnoversion-md.md)] の `ntext` など\) にマップすることは避けてください。 + +## 参照 + [SQL 生成](../../../../../docs/framework/data/adonet/ef/sql-generation.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/getting-started.md b/docs/framework/data/adonet/ef/getting-started.md new file mode 100644 index 00000000000..684951d342e --- /dev/null +++ b/docs/framework/data/adonet/ef/getting-started.md @@ -0,0 +1,29 @@ +--- +title: "はじめに (Entity Framework) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 4735a220-3301-4ec4-8833-7209abb7208f +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# はじめに (Entity Framework) +[!INCLUDE[vstecado](../../../../../includes/vstecado-md.md)] [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] は、データ中心のアプリケーションとサービスをサポートし、抽象化のレベルを論理リレーショナル レベルから概念レベルに引き上げるようなデータに対するプログラミングのためのプラットフォームを提供します。 抽象化レベルの高いデータを開発者が操作できるように、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] は特定のデータ ストレージ エンジンまたはリレーショナル スキーマに依存しないコードをサポートします。詳細については、「[エンティティ フレームワークの概要](../../../../../docs/framework/data/adonet/ef/overview.md)」を参照してください。 + + 最新バージョンの Entity Framework の使用を今すぐ開始するには、「[使用の開始](http://go.microsoft.com/fwlink/?LinkId=235280)」を参照してください。 + +## 参照 + [Entity Framework](http://go.microsoft.com/fwlink/?LinkID=234900&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-build-an-entityconnection-connection-string.md b/docs/framework/data/adonet/ef/how-to-build-an-entityconnection-connection-string.md new file mode 100644 index 00000000000..083b8c515d9 --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-build-an-entityconnection-connection-string.md @@ -0,0 +1,45 @@ +--- +title: "EntityConnection の接続文字列を作成する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 5bd1a748-3df7-4d0a-a607-14f25e3175e9 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# EntityConnection の接続文字列を作成する方法 +このトピックでは、 を作成する方法について説明します。 + +### この例のコードを実行するには + +1. [AdventureWorks Sales Model](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) をプロジェクトに追加して、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するようにプロジェクトを構成します。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +2. アプリケーションのコード ページで、次の `using` ステートメント \(Visual Basic の場合は `Imports`\) を追加します。 + + [!code-csharp[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#namespaces)] + [!code-vb[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#namespaces)] + +## 使用例 + 次の例では、基になるプロバイダーの を初期化した後、 オブジェクトを初期化して、このオブジェクトを のコンストラクターに渡しています。 + + [!code-csharp[DP EntityServices Concepts#BuildingConnectionStringWithEntityCommand](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#buildingconnectionstringwithentitycommand)] + [!code-vb[DP EntityServices Concepts#BuildingConnectionStringWithEntityCommand](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#buildingconnectionstringwithentitycommand)] + +## 参照 + [How to: Use EntityConnection with an Object Context](http://msdn.microsoft.com/ja-jp/2140fe7b-b88b-47c8-a749-d7f142eb1080) + [Entity Framework 用の EntityClient プロバイダー](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-define-the-connection-string.md b/docs/framework/data/adonet/ef/how-to-define-the-connection-string.md new file mode 100644 index 00000000000..412fcf8297f --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-define-the-connection-string.md @@ -0,0 +1,42 @@ +--- +title: "接続文字列を定義する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 6027335d-4e26-420d-9151-6523289b1989 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 接続文字列を定義する方法 +このトピックでは、概念モデルに接続するための接続文字列を定義する方法について説明します。 このトピックには、[AdventureWorks Sales](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) 概念モデルが使用されています。 AdventureWorks Sales Model は、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] ドキュメントのタスク関連のトピック全般で使用されます。 このトピックでは、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] の構成が済んでいること、および AdventureWorks Sales Model が定義済みであることを前提としています。 詳細については、「[How to: Manually Define the Model and Mapping Files](http://msdn.microsoft.com/ja-jp/d4fd6864-f2a1-48f0-aa32-1e318775a99a)」を参照してください。 このトピックの手順は、「[How to: Manually Configure an Entity Framework Project](http://msdn.microsoft.com/ja-jp/73f6ae1d-b3b2-4577-aebd-ad5a75954e9e)」にも記載されています。 + +> [!NOTE] +> [!INCLUDE[vsprvs](../../../../../includes/vsprvs-md.md)] プロジェクトで [!INCLUDE[adonet_edm](../../../../../includes/adonet-edm-md.md)] ウィザードを使用した場合、自動的に .edmx ファイルが生成され、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するようにプロジェクトが構成されます。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +### Entity Framework 接続文字列を定義するには + +- プロジェクトのアプリケーション構成ファイル \(app.config\) を開き、次の接続文字列を追加します。 + + + + プロジェクトにアプリケーション構成ファイルが存在しない場合は、**\[プロジェクト\]** メニューの **\[新しい項目の追加\]** を選択し、**\[全般\]** カテゴリの **\[アプリケーション構成ファイル\]** を選択して、**\[追加\]** をクリックすることによって追加できます。 + +## 参照 + [Quickstart](http://msdn.microsoft.com/ja-jp/0bc534be-789f-4819-b9f6-76e51d961675) + [How to: Create a New .edmx File](http://msdn.microsoft.com/ja-jp/beb8189e-e51c-4051-839c-9902c224abf2) + [ADO.NET Entity Data Model Tools](http://msdn.microsoft.com/ja-jp/91076853-0881-421b-837a-f582f36be527) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-execute-a-parameterized-entity-sql-query-using-entitycommand.md b/docs/framework/data/adonet/ef/how-to-execute-a-parameterized-entity-sql-query-using-entitycommand.md new file mode 100644 index 00000000000..6c3f2dc8371 --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-execute-a-parameterized-entity-sql-query-using-entitycommand.md @@ -0,0 +1,45 @@ +--- +title: "EntityCommand を使用してパラメーター化 Entity SQL クエリを実行する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: e93fea43-7e03-4d7d-9fee-2517b8b88cba +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# EntityCommand を使用してパラメーター化 Entity SQL クエリを実行する方法 +このトピックでは、 オブジェクトを使用して、パラメーター付きの [!INCLUDE[esql](../../../../../includes/esql-md.md)] クエリを実行する方法について説明します。 + +### この例のコードを実行するには + +1. [AdventureWorks Sales Model](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) をプロジェクトに追加して、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するようにプロジェクトを構成します。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +2. アプリケーションのコード ページで、次の `using` ステートメント \(Visual Basic の場合は `Imports`\) を追加します。 + + [!code-csharp[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#namespaces)] + [!code-vb[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#namespaces)] + +## 使用例 + 次の例では、2 つのパラメーターを持つクエリ文字列を作成する方法を示します。 次に、 を作成した後、2 つのパラメーターを コレクションに追加し、`Contact` アイテムのコレクションに対して反復処理を実行します。 + + [!code-csharp[DP EntityServices Concepts#ParameterizedQueryWithEntityCommand](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#parameterizedquerywithentitycommand)] + [!code-vb[DP EntityServices Concepts#ParameterizedQueryWithEntityCommand](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#parameterizedquerywithentitycommand)] + +## 参照 + [How to: Execute a Parameterized Query](http://msdn.microsoft.com/ja-jp/42048f03-c65c-4d98-b50a-3e7d537a63e8) + [Entity SQL 言語](../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-language.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-execute-a-parameterized-stored-procedure-using-entitycommand.md b/docs/framework/data/adonet/ef/how-to-execute-a-parameterized-stored-procedure-using-entitycommand.md new file mode 100644 index 00000000000..6cf4c054e57 --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-execute-a-parameterized-stored-procedure-using-entitycommand.md @@ -0,0 +1,46 @@ +--- +title: "EntityCommand を使用してパラメーター化されたストアド プロシージャを実行する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 4f5639bf-bb7f-4982-bb1d-c7caa4348888 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# EntityCommand を使用してパラメーター化されたストアド プロシージャを実行する方法 +このトピックでは、 クラスを使用して、パラメーター化されたストアド プロシージャを実行する方法を示します。 + +### この例のコードを実行するには + +1. [School Model](http://msdn.microsoft.com/ja-jp/859a9587-81ea-4a45-9bc0-f8d330e1adac) をプロジェクトに追加して、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するようにプロジェクトを構成します。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +2. アプリケーションのコード ページで、次の `using` ステートメント \(Visual Basic の場合は `Imports`\) を追加します。 + + [!code-csharp[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#namespaces)] + [!code-vb[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#namespaces)] + +3. `GetStudentGrades` ストアド プロシージャをインポートし、戻り値の型として `CourseGrade` エンティティを指定します。 ストアド プロシージャのインポート方法の詳細については、「[How to: Import a Stored Procedure](http://msdn.microsoft.com/ja-jp/24e68bf4-bd6d-428d-bc35-92d7b8e3736d)」を参照してください。 + +## 使用例 + 次のコードでは、`GetStudentGrades` ストアド プロシージャが実行されます。`StudentId` は必須パラメーターです。 結果は によって読み取られます。 + + [!code-csharp[DP EntityServices Concepts#StoredProcWithEntityCommand](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#storedprocwithentitycommand)] + [!code-vb[DP EntityServices Concepts#StoredProcWithEntityCommand](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#storedprocwithentitycommand)] + +## 参照 + [Entity Framework 用の EntityClient プロバイダー](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-execute-a-polymorphic-query.md b/docs/framework/data/adonet/ef/how-to-execute-a-polymorphic-query.md new file mode 100644 index 00000000000..49c18aa8a5e --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-execute-a-polymorphic-query.md @@ -0,0 +1,47 @@ +--- +title: "ポリモーフィック クエリを実行する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 2f05da1e-845b-4f14-83e4-c6353a850553 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# ポリモーフィック クエリを実行する方法 +このトピックでは、[OFTYPE](../../../../../docs/framework/data/adonet/ef/language-reference/oftype-entity-sql.md) 演算子を使ってポリモーフィックな [!INCLUDE[esql](../../../../../includes/esql-md.md)] クエリを実行する方法について説明します。 + +### この例のコードを実行するには + +1. [School Model](http://msdn.microsoft.com/ja-jp/859a9587-81ea-4a45-9bc0-f8d330e1adac) をプロジェクトに追加し、Entity Framework が使用されるようにプロジェクトを構成します。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +2. アプリケーションのコード ページで、次の `using` ステートメント \(Visual Basic の場合は `Imports`\) を追加します。 + + [!code-csharp[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#namespaces)] + [!code-vb[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#namespaces)] + +3. 概念モデルを変更して、Table\-Per\-Hierarchy 継承を持つようにします。そのためには、「[Walkthrough: Mapping Inheritance \- Table\-per\-Hierarchy](http://msdn.microsoft.com/ja-jp/49b685cf-9db8-4d6d-b885-8837ed238f55)」で説明されている手順に従います。 + +## 使用例 + 次の例では、OFTYPE 演算子を使用し、`Courses` のコレクションから `OnsiteCourses` のコレクションだけを取得して表示します。 + + [!code-csharp[DP EntityServices Concepts#PolymorphicQuery](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#polymorphicquery)] + [!code-vb[DP EntityServices Concepts#PolymorphicQuery](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#polymorphicquery)] + +## 参照 + [Entity Framework 用の EntityClient プロバイダー](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md) + [Entity SQL 言語](../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-language.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-complex-types.md b/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-complex-types.md new file mode 100644 index 00000000000..457f50c824e --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-complex-types.md @@ -0,0 +1,47 @@ +--- +title: "複合型を返すクエリの実行方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: c2209fdb-70ef-4dea-8bb8-097fe96f5563 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 複合型を返すクエリの実行方法 +このトピックでは、複合型プロパティを含むエンティティ型オブジェクトを返す [!INCLUDE[esql](../../../../../includes/esql-md.md)] クエリを実行する方法について説明します。 + +### この例のコードを実行するには + +1. [AdventureWorks Sales Model](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) をプロジェクトに追加して、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するようにプロジェクトを構成します。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +2. アプリケーションのコード ページで、次の `using` ステートメント \(Visual Basic の場合は `Imports`\) を追加します。 + + [!code-csharp[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#namespaces)] + [!code-vb[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#namespaces)] + +3. .edmx ファイルをダブルクリックして、エンティティ デザイナーの [[モデル ブラウザー] ウィンドウ](http://msdn.microsoft.com/ja-jp/94e836e8-a5ea-47ff-aa3e-599d8a02ebfd)にモデルを表示します。 エンティティ デザイナー画面で、`Contact` エンティティ型の `Email` プロパティと `Phone` プロパティを選択し、右クリックして **\[新しい複合型へのリファクター\]** を選択します。 + +4. 選択した `Email` プロパティと `Phone` プロパティの新しい複合型が**モデル ブラウザー**に追加されます。 複合型には既定の名前が付きます。**プロパティ** ウィンドウで型の名前を `EmailPhone` に変更します。 また、新しい `ComplexProperty` プロパティが `Contact` エンティティ型に追加されます。 プロパティの名前を に変更します。 + + Entity Data Model ウィザードを使用した複合型の作成と変更の詳細については、「[How to: Refactor Existing Properties into a Complex Type Property](http://msdn.microsoft.com/ja-jp/5b2eb3b3-693d-42cb-b43a-405812d677eb)」および「[How to: Create and Modify Complex Types](http://msdn.microsoft.com/ja-jp/afb8e206-0ffe-4597-b6d4-6ab566897e1d)」を参照してください。 + +## 使用例 + 次の例は、`Contact` オブジェクトのコレクションを返し、`Contact` オブジェクトの 2 つのプロパティとして `ContactID` と `EmailPhoneComplexType` 複合型の値を表示するクエリを実行します。 + + [!code-csharp[DP EntityServices Concepts#ComplexTypeWithEntityCommand](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#complextypewithentitycommand)] + [!code-vb[DP EntityServices Concepts#ComplexTypeWithEntityCommand](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#complextypewithentitycommand)] \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-nested-collections.md b/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-nested-collections.md new file mode 100644 index 00000000000..61bbc287cdd --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-nested-collections.md @@ -0,0 +1,44 @@ +--- +title: "入れ子になったコレクションを返すクエリの実行方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: f7f385f3-ffcf-4f3b-af35-de8818938e5f +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 入れ子になったコレクションを返すクエリの実行方法 +ここでは、 オブジェクトを使用して概念モデルに対してコマンドを実行する方法、および を使用して入れ子になったコレクションの結果を取得する方法について説明します。 + +### この例のコードを実行するには + +1. [AdventureWorks Sales Model](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) をプロジェクトに追加して、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するようにプロジェクトを構成します。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +2. アプリケーションのコード ページで、次の `using` ステートメント \(Visual Basic の場合は `Imports`\) を追加します。 + + [!code-csharp[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#namespaces)] + [!code-vb[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#namespaces)] + +## 使用例 + *入れ子になったコレクション*とは、別のコレクションに含まれているコレクションのことです。 次に示すコードでは、`Contact` のコレクションと、それぞれの `Contact` に関連付けられている、`SalesOrderHeader` の入れ子になったコレクションを取得します。 + + [!code-csharp[DP EntityServices Concepts#ReturnNestedCollectionWithEntityCommand](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#returnnestedcollectionwithentitycommand)] + [!code-vb[DP EntityServices Concepts#ReturnNestedCollectionWithEntityCommand](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#returnnestedcollectionwithentitycommand)] + +## 参照 + [Entity Framework 用の EntityClient プロバイダー](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-primitivetype-results.md b/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-primitivetype-results.md new file mode 100644 index 00000000000..d6492a4ea5c --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-primitivetype-results.md @@ -0,0 +1,53 @@ +--- +title: "PrimitiveType 結果を返すクエリの実行方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 7139d585-4034-4dfa-916f-2120a8b72792 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# PrimitiveType 結果を返すクエリの実行方法 +このトピックでは、 を使用して概念モデルに対してコマンドを実行する方法と、 を使用して の結果を取得する方法について説明します。 + +### この例のコードを実行するには + +1. [AdventureWorks Sales Model](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) をプロジェクトに追加して、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するようにプロジェクトを構成します。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +2. アプリケーションのコード ページで、次の `using` ステートメント \(Visual Basic の場合は `Imports`\) を追加します。 + + [!code-csharp[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#namespaces)] + [!code-vb[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#namespaces)] + +## 使用例 + この例は、 の結果を返すクエリを実行します。 次のクエリを引数として `ExecutePrimitiveTypeQuery` 関数に渡すと、関数は、すべての `Products` の平均表示価格を表示します。 + + [!code-csharp[DP EntityServices Concepts#EDM_AVG](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_avg)] + [!code-sql[DP EntityServices Concepts#EDM_AVG](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_avg)] + + パラメーター化されたクエリを渡す場合は、次のように、 オブジェクトの プロパティに オブジェクトを追加します。 + + [!code-csharp[DP EntityServices Concepts#CASE_WHEN_THEN_ELSE](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#case_when_then_else)] + [!code-sql[DP EntityServices Concepts#CASE_WHEN_THEN_ELSE](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#case_when_then_else)] + + [!code-csharp[DP EntityServices Concepts#eSQLPrimitiveTypes](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#esqlprimitivetypes)] + [!code-vb[DP EntityServices Concepts#eSQLPrimitiveTypes](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#esqlprimitivetypes)] + +## 参照 + [Entity SQL リファレンス](../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [Entity Framework 用の EntityClient プロバイダー](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-reftype-results.md b/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-reftype-results.md new file mode 100644 index 00000000000..2460821d026 --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-reftype-results.md @@ -0,0 +1,53 @@ +--- +title: "RefType 結果を返すクエリの実行方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 7dbbfbcd-93f5-4546-9dbf-e5fa290b69fa +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# RefType 結果を返すクエリの実行方法 +このトピックでは、 オブジェクトを使用して概念モデルに対してコマンドを実行する方法と、 を使用して の結果を取得する方法を示します。 + +### この例のコードを実行するには + +1. [AdventureWorks Sales Model](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) をプロジェクトに追加して、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するようにプロジェクトを構成します。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +2. アプリケーションのコード ページで、次の `using` ステートメント \(Visual Basic の場合は `Imports`\) を追加します。 + + [!code-csharp[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#namespaces)] + [!code-vb[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#namespaces)] + +## 使用例 + この例は、 の結果を返すクエリを実行します。 次のクエリを引数として `ExectueRefTypeQuery` 関数に渡すと、関数はエンティティへの参照を返します。 + + [!code-csharp[DP EntityServices Concepts#REF2](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#ref2)] + [!code-sql[DP EntityServices Concepts#REF2](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#ref2)] + + パラメーター化されたクエリを渡す場合は、次のように、 オブジェクトの プロパティに オブジェクトを追加します。 + + [!code-csharp[DP EntityServices Concepts#REF3](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#ref3)] + [!code-sql[DP EntityServices Concepts#REF3](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#ref3)] + + [!code-csharp[DP EntityServices Concepts#eSQLRefTypes](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#esqlreftypes)] + [!code-vb[DP EntityServices Concepts#eSQLRefTypes](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#esqlreftypes)] + +## 参照 + [Entity SQL リファレンス](../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [Entity Framework 用の EntityClient プロバイダー](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md b/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md new file mode 100644 index 00000000000..cbcf266ad8f --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md @@ -0,0 +1,53 @@ +--- +title: "StructuralType 結果を返すクエリの実行方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 2314f2a2-b1c3-40c4-95bb-cdf9b21a7b53 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# StructuralType 結果を返すクエリの実行方法 +このトピックでは、 オブジェクトを使用して概念モデルに対してコマンドを実行する方法と、 を使用して の結果を取得する方法を示します。 および クラスは、 クラスから派生します。 + +### この例のコードを実行するには + +1. [AdventureWorks Sales Model](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) をプロジェクトに追加して、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するようにプロジェクトを構成します。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +2. アプリケーションのコード ページで、次の `using` ステートメント \(Visual Basic の場合は `Imports`\) を追加します。 + + [!code-csharp[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#namespaces)] + [!code-vb[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#namespaces)] + +## 使用例 + この例は、 の結果を返すクエリを実行します。 次のクエリを引数として `ExecuteStructuralTypeQuery` 関数に渡すと、この関数は、`Products` に関する詳細を表示します。 + + [!code-csharp[DP EntityServices Concepts#SelectProduct](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#selectproduct)] + [!code-sql[DP EntityServices Concepts#SelectProduct](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#selectproduct)] + + パラメーター化されたクエリを渡す場合は、次のように、 オブジェクトの プロパティに オブジェクトを追加します。 + + [!code-csharp[DP EntityServices Concepts#GREATER_OR_EQUALS](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#greater_or_equals)] + [!code-sql[DP EntityServices Concepts#GREATER_OR_EQUALS](../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#greater_or_equals)] + + [!code-csharp[DP EntityServices Concepts#eSQLStructuralTypes](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#esqlstructuraltypes)] + [!code-vb[DP EntityServices Concepts#eSQLStructuralTypes](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#esqlstructuraltypes)] + +## 参照 + [Entity SQL リファレンス](../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [Entity Framework 用の EntityClient プロバイダー](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-make-model-and-mapping-files-embedded-resources.md b/docs/framework/data/adonet/ef/how-to-make-model-and-mapping-files-embedded-resources.md new file mode 100644 index 00000000000..27ea286a779 --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-make-model-and-mapping-files-embedded-resources.md @@ -0,0 +1,58 @@ +--- +title: "モデル ファイルとマッピング ファイルを組み込みリソースにする方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 20dfae4d-e95a-4264-9540-f5ad23b462d3 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# モデル ファイルとマッピング ファイルを組み込みリソースにする方法 +[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用すると、モデル ファイルとマッピング ファイルをアプリケーションの組み込みリソースとして配置できます。 モデル ファイルとマッピング ファイルが組み込まれたアセンブリは、エンティティ接続と同じアプリケーション ドメインに読み込む必要があります。 詳細については、「[接続文字列](../../../../../docs/framework/data/adonet/ef/connection-strings.md)」を参照してください。 既定では、[!INCLUDE[adonet_edm](../../../../../includes/adonet-edm-md.md)] ツールが、モデル ファイルとマッピング ファイルを組み込みます。モデル ファイルとマッピング ファイルを手動で定義する場合は、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] アプリケーションと共にモデル ファイルとマッピング ファイルが組み込みリソースとして確実に配置されるように、この手順を使用します。 + +> [!NOTE] +> 組み込みリソースを保持するには、モデル ファイルとマッピング ファイルを変更するたびに、この手順を繰り返す必要があります。 + +### モデル ファイルとマッピング ファイルを組み込むには + +1. **ソリューション エクスプローラー**で、概念 \(.csdl\) ファイルを選択します。 + +2. **\[プロパティ\]** ペインで、**\[ビルド アクション\]** を **\[組み込まれたリソース\]** に設定します。 + +3. ストレージ \(.ssdl\) ファイルとマッピング \(.msl\) ファイルに対して手順 1. と手順 2. を繰り返します。 + +4. **ソリューション エクスプローラー**で、App.config ファイルをダブルクリックし、次のいずれかの形式に基づいて `connectionString` 属性の `Metadata` パラメーターを変更します。 + + - `Metadata=` `res:///;` + + - `Metadata=` `res://*/;` + + - `Metadata=res://*;` + + 詳細については、「[接続文字列](../../../../../docs/framework/data/adonet/ef/connection-strings.md)」を参照してください。 + +## 使用例 + 次の接続文字列は、[AdventureWorks Sales Model](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) の組み込みモデル ファイルとマッピング ファイルを参照しています。 この接続文字列は、プロジェクトの App.config ファイルに格納されています。 + + + +## 参照 + [モデリングとマッピング](../../../../../docs/framework/data/adonet/ef/modeling-and-mapping.md) + [接続文字列を定義する方法](../../../../../docs/framework/data/adonet/ef/how-to-define-the-connection-string.md) + [EntityConnection の接続文字列を作成する方法](../../../../../docs/framework/data/adonet/ef/how-to-build-an-entityconnection-connection-string.md) + [ADO.NET Entity Data Model Tools](http://msdn.microsoft.com/ja-jp/91076853-0881-421b-837a-f582f36be527) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-navigate-relationships-with-the-navigate-operator.md b/docs/framework/data/adonet/ef/how-to-navigate-relationships-with-the-navigate-operator.md new file mode 100644 index 00000000000..40bc16ffd2c --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-navigate-relationships-with-the-navigate-operator.md @@ -0,0 +1,45 @@ +--- +title: "Navigate 演算子でリレーションシップをナビゲートする方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 79996d2d-9b03-4a9d-82cc-7c5e7c2ad93d +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# Navigate 演算子でリレーションシップをナビゲートする方法 +このトピックでは、 オブジェクトを使用して概念モデルに対してコマンドを実行する方法と、 を使用して の結果を取得する方法を示します。 + +### この例のコードを実行するには + +1. [AdventureWorks Sales Model](http://msdn.microsoft.com/ja-jp/f16cd988-673f-4376-b034-129ca93c7832) をプロジェクトに追加して、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するようにプロジェクトを構成します。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +2. アプリケーションのコード ページで、次の `using` ステートメント \(Visual Basic の場合は `Imports`\) を追加します。 + + [!code-csharp[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#namespaces)] + [!code-vb[DP EntityServices Concepts#Namespaces](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#namespaces)] + +## 使用例 + 次の例では、[!INCLUDE[esql](../../../../../includes/esql-md.md)] で [NAVIGATE](../../../../../docs/framework/data/adonet/ef/language-reference/navigate-entity-sql.md) 演算子を使用してリレーションシップをナビゲートする方法を示しています。`Navigate` 演算子は、エンティティのインスタンス、リレーションシップの種類、リレーションシップの終端エンティティ、およびリレーションシップの開始エンティティをパラメーターとして受け取ります。 オプションとして、エンティティのインスタンスとリレーションシップ型だけを `Navigate` 演算子に渡すこともできます。 + + [!code-csharp[DP EntityServices Concepts#NavigateWithNavOperatorWithEntityCommand](../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/source.cs#navigatewithnavoperatorwithentitycommand)] + [!code-vb[DP EntityServices Concepts#NavigateWithNavOperatorWithEntityCommand](../../../../../samples/snippets/visualbasic/VS_Snippets_Data/dp entityservices concepts/vb/source.vb#navigatewithnavoperatorwithentitycommand)] + +## 参照 + [Entity Framework 用の EntityClient プロバイダー](../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md) + [Entity SQL 言語](../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-language.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-object-layer-code.md b/docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-object-layer-code.md new file mode 100644 index 00000000000..98903bc57c7 --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-object-layer-code.md @@ -0,0 +1,59 @@ +--- +title: "方法: EdmGen.exe を使用してオブジェクトレイヤー コードを生成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: c44d2ebe-f66f-42cb-9741-4a3f0c2dcffb +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 方法: EdmGen.exe を使用してオブジェクトレイヤー コードを生成する +このトピックでは、[EDM ジェネレーター \(EdmGen.exe\)](../../../../../docs/framework/data/adonet/ef/edm-generator-edmgen-exe.md) ツールを使用して、.csdl ファイルに基づくオブジェクトレイヤー コードを生成する方法について説明します。 + +### EdmGen.exe を使用して Visual Basic プロジェクト用の School モデルのオブジェクトレイヤー コードを生成するには + +1. School データベースを作成します。 詳細については、「[Creating the School Sample Database](http://msdn.microsoft.com/ja-jp/c1bec483-a0ea-4660-aa0b-7b0a8b68fed0)」を参照してください。 + +2. School モデルを生成するか、School.csdl ファイルを取得します。 詳細については、「[方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-the-model-and-mapping-files.md)」を参照してください。 + +3. コマンド プロンプトで、次のコマンド \(改行なし\) を実行します。 + + ``` + "%windir%\Microsoft.NET\Framework\v4.0.30319\edmgen.exe" /mode:EntityClassGeneration + /incsdl:.\School.csdl /outobjectlayer:.\School.Objects.vb /language:VB + ``` + +### EdmGen.exe を使用して C\# プロジェクト用の School モデルのオブジェクトレイヤー コードを生成するには + +1. School データベースを作成します。 詳細については、「[Creating the School Sample Database](http://msdn.microsoft.com/ja-jp/c1bec483-a0ea-4660-aa0b-7b0a8b68fed0)」を参照してください。 + +2. School モデルを生成するか、School.csdl ファイルを取得します。 詳細については、「[方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-the-model-and-mapping-files.md)」を参照してください。 + +3. コマンド プロンプトで、次のコマンド \(改行なし\) を実行します。 + + ``` + "%windir%\Microsoft.NET\Framework\v4.0.30319\edmgen.exe" /mode:EntityClassGeneration + /incsdl:.\School.csdl /outobjectlayer:.\School.Objects.cs /language:CSharp + ``` + +## 参照 + [モデリングとマッピング](../../../../../docs/framework/data/adonet/ef/modeling-and-mapping.md) + [How to: Manually Configure an Entity Framework Project](http://msdn.microsoft.com/ja-jp/73f6ae1d-b3b2-4577-aebd-ad5a75954e9e) + [ADO.NET Entity Data Model Tools](http://msdn.microsoft.com/ja-jp/91076853-0881-421b-837a-f582f36be527) + [How to: Pre\-Generate Views to Improve Query Performance](http://msdn.microsoft.com/ja-jp/b18a9d16-e10b-4043-ba91-b632f85a2579) + [方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-the-model-and-mapping-files.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-the-model-and-mapping-files.md b/docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-the-model-and-mapping-files.md new file mode 100644 index 00000000000..0a2925aa9fa --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-the-model-and-mapping-files.md @@ -0,0 +1,75 @@ +--- +title: "方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 40db462d-2fd2-4cc1-ad86-d280403e63fa +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する +このトピックでは、EDM ジェネレーター \(EdmGen.exe\) ツールを使用して、School データベースに基づく次のファイルを生成する方法について説明します。 + +- 概念モデル \(.csdl ファイル\) + +- ストレージ モデル \(.ssdl ファイル\) + +- 概念モデルとストレージ モデル間のマッピング \(.msl ファイル\) + +- Visual Basic または C\# のオブジェクト レイヤー コード + +- ビュー ファイル + + EdmGen.exe ツールでは、\/mode:FullGeneration を使用して上記のファイルを生成します。 EdemGen.exe コマンドの詳細については、「[EDM ジェネレーター \(EdmGen.exe\)](../../../../../docs/framework/data/adonet/ef/edm-generator-edmgen-exe.md)」を参照してください。 + + EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する場合は、[!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] を使用するように [!INCLUDE[vsprvs](../../../../../includes/vsprvs-md.md)] プロジェクトを構成する必要もあります。 詳細については、「[How to: Manually Configure an Entity Framework Project](http://msdn.microsoft.com/ja-jp/73f6ae1d-b3b2-4577-aebd-ad5a75954e9e)」を参照してください。 + +> [!NOTE] +> EdmGen.exe によって生成された概念モデルには、データベース内のすべてのオブジェクトが含まれています。 特定のオブジェクトだけを含んだ概念モデルを生成する場合は、Entity Data Model ウィザードを使用してください。 詳細については、「[How to: Use the Entity Data Model Wizard](http://msdn.microsoft.com/ja-jp/dadb058a-c5d9-4c5c-8b01-28044112231d)」を参照してください。 + +### EdmGen.exe を使用して Visual Basic プロジェクト用の School モデルを生成するには + +1. School データベースを作成します。 詳細については、「[Creating the School Sample Database](http://msdn.microsoft.com/ja-jp/c1bec483-a0ea-4660-aa0b-7b0a8b68fed0)」を参照してください。 + +2. コマンド プロンプトで、次のコマンド \(改行なし\) を実行します。 + + ``` + "%windir%\Microsoft.NET\Framework\v4.0.30319\edmgen.exe" /mode:fullgeneration + /c:"Data Source=%datasourceserver%; Initial Catalog=School; Integrated Security=SSPI" + /project:School /entitycontainer:SchoolEntities /namespace:SchoolModel /language:VB + + ``` + +### EdmGen.exe を使用して C\# プロジェクト用の School モデルを生成するには + +1. School データベースを作成します。 詳細については、「[Creating the School Sample Database](http://msdn.microsoft.com/ja-jp/c1bec483-a0ea-4660-aa0b-7b0a8b68fed0)」を参照してください。 + +2. コマンド プロンプトで、次のコマンド \(改行なし\) を実行します。 + + ``` + "%windir%\Microsoft.NET\Framework\v4.0.30319\edmgen.exe" /mode:fullgeneration + /c:"Data Source=%datasourceserver%; Initial Catalog=School; Integrated Security=SSPI" + /project:School /entitycontainer:SchoolEntities /namespace:SchoolModel /language:CSharp + ``` + +## 参照 + [モデリングとマッピング](../../../../../docs/framework/data/adonet/ef/modeling-and-mapping.md) + [How to: Manually Configure an Entity Framework Project](http://msdn.microsoft.com/ja-jp/73f6ae1d-b3b2-4577-aebd-ad5a75954e9e) + [How to: Pre\-Generate Views to Improve Query Performance](http://msdn.microsoft.com/ja-jp/b18a9d16-e10b-4043-ba91-b632f85a2579) + [ADO.NET Entity Data Model Tools](http://msdn.microsoft.com/ja-jp/91076853-0881-421b-837a-f582f36be527) + [方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを検証する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-validate-model-and-mapping-files.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-validate-model-and-mapping-files.md b/docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-validate-model-and-mapping-files.md new file mode 100644 index 00000000000..bb1583cd509 --- /dev/null +++ b/docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-validate-model-and-mapping-files.md @@ -0,0 +1,44 @@ +--- +title: "方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを検証する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" + - "jsharp" +ms.assetid: 2641906a-971a-4d0b-8aee-13fabc02a1cc +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを検証する +このトピックでは、[EDM ジェネレーター \(EdmGen.exe\)](../../../../../docs/framework/data/adonet/ef/edm-generator-edmgen-exe.md) ツールを使用してモデル ファイルとマッピング ファイルを検証する方法を示します。 詳細については、「[Entity Data Model](../../../../../docs/framework/data/adonet/entity-data-model.md)」を参照してください。 + +### EdmGen.exe を使用して School モデルを検証するには + +1. School データベースを作成します。 詳細については、「[Creating the School Sample Database](http://msdn.microsoft.com/ja-jp/c1bec483-a0ea-4660-aa0b-7b0a8b68fed0)」を参照してください。 + +2. School モデルを生成します。 詳細については、「[方法: EdmGen.exe を使用してモデル ファイルとマッピング ファイルを生成する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-the-model-and-mapping-files.md)」を参照してください。 + +3. コマンド プロンプトで、次のコマンド \(改行なし\) を実行します。 + + ```scr + "%windir%\Microsoft.NET\Framework\v4.0.30319\edmgen.exe" /mode:ValidateArtifacts /inssdl:.\School.ssdl /inmsl:.\School.msl /incsdl:.\School.csdl + ``` + +## 参照 + [How to: Manually Configure an Entity Framework Project](http://msdn.microsoft.com/ja-jp/73f6ae1d-b3b2-4577-aebd-ad5a75954e9e) + [ADO.NET Entity Data Model Tools](http://msdn.microsoft.com/ja-jp/91076853-0881-421b-837a-f582f36be527) + [How to: Pre\-Generate Views to Improve Query Performance](http://msdn.microsoft.com/ja-jp/b18a9d16-e10b-4043-ba91-b632f85a2579) + [方法: EdmGen.exe を使用してオブジェクトレイヤー コードを生成する](../../../../../docs/framework/data/adonet/ef/how-to-use-edmgen-exe-to-generate-object-layer-code.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/index.md b/docs/framework/data/adonet/ef/index.md new file mode 100644 index 00000000000..bbd6441be6f --- /dev/null +++ b/docs/framework/data/adonet/ef/index.md @@ -0,0 +1,26 @@ +--- +title: "ADO.NET Entity Framework | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: a437041f-6899-4ae7-96ce-aabf528d7205 +caps.latest.revision: 10 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 10 +--- +# ADO.NET Entity Framework +現在、[msdn.com\/data\/ef](http://msdn.microsoft.com/data/ef) サイトでは、主に Entity Framework に関するコンテンツを提供しています。 + + このトピックの内容は、「[Entity Framework の導入](http://msdn.microsoft.com/data/jj590134)」ページでご利用いただけます。 \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/known-issues-in-sqlclient-for-entity-framework.md b/docs/framework/data/adonet/ef/known-issues-in-sqlclient-for-entity-framework.md new file mode 100644 index 00000000000..fb56783f8a9 --- /dev/null +++ b/docs/framework/data/adonet/ef/known-issues-in-sqlclient-for-entity-framework.md @@ -0,0 +1,75 @@ +--- +title: "Entity Framework 用の SqlClient の既知の問題 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 48fe4912-4d0f-46b6-be96-3a42c54780f6 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Entity Framework 用の SqlClient の既知の問題 +ここでは、.NET Framework Data Provider for SQL Server \(SqlClient\) に関連する既知の問題について説明します。 + +## 文字列関数の末尾のスペース + [!INCLUDE[ssNoVersion](../../../../../includes/ssnoversion-md.md)] では、文字列値の末尾のスペースは無視されます。 そのため、文字列の末尾にスペースを挿入すると、予期できない結果が生じたり、場合によってはエラーが発生することもあります。 + + 文字列の末尾にスペースを挿入する必要がある場合は、[!INCLUDE[ssNoVersion](../../../../../includes/ssnoversion-md.md)] が文字列を切り捨てることがないように、空白文字を挿入することを検討してください。 末尾のスペースが不要である場合は、クエリ パイプラインに渡す前にスペースを削除してください。 + +## RIGHT 関数 + `RIGHT(nvarchar(max)`, 0`)` または `RIGHT(varchar(max)`, 0`)` に、最初の引数として `null` 以外の値を、2 番目の引数として 0 を渡すと、`empty` 文字列の代わりに `NULL` 値が返されます。 + +## CROSS APPLY 演算子および OUTER APPLY 演算子 + CROSS APPLY 演算子および OUTER APPLY 演算子は [!INCLUDE[ssVersion2005](../../../../../includes/ssversion2005-md.md)] で導入されました。 場合によっては、クエリ パイプラインにより、CROSS APPLY 演算子または OUTER APPLY 演算子を含む Transact\-SQL ステートメントが生成されることがあります。 一部のバックエンド プロバイダー \([!INCLUDE[ssVersion2005](../../../../../includes/ssversion2005-md.md)] より古いバージョンの [!INCLUDE[ssNoVersion](../../../../../includes/ssnoversion-md.md)] など\) では、これらの演算子がサポートされていません。したがって、このようなクエリをこれらのバックエンド プロバイダーで実行することはできません。 + + CROSS APPLY 演算子または OUTER APPLY 演算子を含むクエリの生成につながる可能性がある一般的なシナリオを次に示します。 + +- ページングを使用した相関サブクエリ + +- 相関サブクエリ全体、またはナビゲーションによって生成されたコレクション全体を対象とした `AnyElement` + +- 要素セレクターを受け取るグループ化メソッドを使用する LINQ クエリ + +- CROSS APPLY 演算子または OUTER APPLY 演算子が明示的に指定されたクエリ + +- REF コンストラクターを引数に取る DEREF コンストラクターを含むクエリ。 + +## SKIP 演算子 + [!INCLUDE[ssVersion2000](../../../../../includes/ssversion2000-md.md)] を使用している場合、キー以外の列で ORDER BY と共に SKIP を使用すると、不適切な結果が返されることがあります。 キー以外の列に重複するデータが存在する場合、指定された数を超える行はスキップされます。 これは、[!INCLUDE[ssVersion2000](../../../../../includes/ssversion2000-md.md)] 用に SKIP が変換される方法によるものです。 たとえば、次のクエリでは、`E.NonKeyColumn` に重複値が存在する場合、5 行を超える行はスキップされます。 + +``` +SELECT [E] FROM Container.EntitySet AS [E] ORDER BY [E].[NonKeyColumn] DESC SKIP 5L +``` + +## 適切なバージョンの SQL Server を対象としたクエリの実行 + [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] は、SQL Server のバージョンに基づいて実行対象の [!INCLUDE[tsql](../../../../../includes/tsql-md.md)] クエリを決定します。このバージョンは、ストレージ モデル \(.ssdl\) ファイルの Schema 要素の `ProviderManifestToken` 属性で指定されたものです。 このバージョンは、実際に接続する SQL Server のバージョンとは異なる場合があります。 たとえば、使用している SQL Server のバージョンが 2005 であるのに、`ProviderManifestToken` 属性が 2008 に設定されている場合、生成された [!INCLUDE[tsql](../../../../../includes/tsql-md.md)] クエリがサーバーで実行されないことがあります。たとえば、SQL Server 2008 で導入された新しい日時型を使用するクエリは、以前のバージョンの SQL Server では実行されません。 使用している SQL Server のバージョンが 2005 で、`ProviderManifestToken` 属性が 2000 に設定されている場合、生成された [!INCLUDE[tsql](../../../../../includes/tsql-md.md)] クエリが十分に最適化されなかったり、クエリがサポートされていないことを示す例外が発生することがあります。 詳細については、このトピックの「CROSS APPLY 演算子および OUTER APPLY 演算子」を参照してください。 + + データベースの一部の動作は、データベースの互換性レベルの設定に依存します。 使用している SQL Server のバージョンが 2005 で、`ProviderManifestToken` 属性が 2005 に、データベースの互換性レベルが "80" \(SQL Server 2000\) に設定されている場合、生成された [!INCLUDE[tsql](../../../../../includes/tsql-md.md)] の実行対象は SQL Server 2005 になりますが、互換性レベルの設定が原因で予期したとおりに実行されないことがあります。 たとえば、ORDER BY リストの列名とセレクターの列名が一致する場合、順序付けが失われることがあります。 + +## 投影内の入れ子になったクエリ + projection 句内の入れ子になったクエリは、サーバーでデカルト積に変換されないことがあります。 SLQ Server などの一部のバックエンド サーバーでは、これによって TempDB テーブルのサイズが非常に大きくなり、 サーバーのパフォーマンスが低下する可能性があります。 + + projection 句内の入れ子になったクエリの例を次に示します。 + +``` +SELECT c, (SELECT c, (SELECT c FROM AdventureWorksModel.Vendor AS c ) As Inner2 FROM AdventureWorksModel.JobCandidate AS c ) As Inner1 FROM AdventureWorksModel.EmployeeDepartmentHistory AS c +``` + +## サーバー生成の GUID ID 値 + [!INCLUDE[adonet_ef](../../../../../includes/adonet-ef-md.md)] では、サーバー生成の GUID 型 ID 値がサポートされますが、プロバイダーは、サーバー生成の ID 値を行の挿入後に返す動作をサポートする必要があります。 [!INCLUDE[ssNoVersion](../../../../../includes/ssnoversion-md.md)] 2005 以降、[!INCLUDE[ssNoVersion](../../../../../includes/ssnoversion-md.md)] データベース内のサーバー生成 GUID 型を [OUTPUT 句](http://go.microsoft.com/fwlink/?LinkId=169400) で返すことができるようになりました。 + +## 参照 + [Entity Framework 用 SqlClient](../../../../../docs/framework/data/adonet/ef/sqlclient-for-the-entity-framework.md) + [LINQ to Entities の既知の問題および注意点](../../../../../docs/framework/data/adonet/ef/language-reference/known-issues-and-considerations-in-linq-to-entities.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/TOC.md b/docs/framework/data/adonet/ef/language-reference/TOC.md new file mode 100644 index 00000000000..b67f917b357 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/TOC.md @@ -0,0 +1,136 @@ +# [FROM](from-entity-sql.md) +# [NAVIGATE](navigate-entity-sql.md) +# [Entity SQL の概要](entity-sql-overview.md) +# [NULL 比較](null-comparisons.md) +# [/ (除算)](divide-entity-sql.md) +# [NULL リテラルと型推論](null-literals-and-type-inference-entity-sql.md) +# [比較式](comparison-expressions.md) +# [MULTISET](multiset-entity-sql.md) +# [演算子の優先順位](operator-precedence-entity-sql.md) +# [&& (AND)](and-entity-sql.md) +# [Entity SQL クイック リファレンス](entity-sql-quick-reference.md) +# [メソッドベースのクエリ構文例: フィルター処理](method-based-query-syntax-examples-filtering.md) +# [CLR メソッドと正規関数とのマッピング](clr-method-to-canonical-function-mapping.md) +# [SKIP](skip-entity-sql.md) +# [UNION](union-entity-sql.md) +# [ISNULL](isnull-entity-sql.md) +# [クエリ式の構文例 : 集計演算子](query-expression-syntax-examples-aggregate-operators.md) +# [LINQ to Entities クエリ内の式](expressions-in-linq-to-entities-queries.md) +# [識別子](identifiers-entity-sql.md) +# [EXISTS](exists-entity-sql.md) +# [GROUPPARTITION](grouppartition-entity-sql.md) +# [メソッド ベースのクエリ構文例 : 結合演算子](method-based-query-syntax-examples-join-operators.md) +# [GROUP BY](group-by-entity-sql.md) +# [KEY](key-entity-sql.md) +# [メソッド ベースのクエリ構文例 : グループ化](method-based-query-syntax-examples-grouping.md) +# [REF](ref-entity-sql.md) +# [クエリ式](query-expressions-entity-sql.md) +# [クエリ式の構文例: フィルター処理](query-expression-syntax-examples-filtering.md) +# [LIMIT](limit-entity-sql.md) +# [クエリの実行](query-execution.md) +# [ORDER BY](order-by-entity-sql.md) +# [LINQ to Entities でのクエリ](queries-in-linq-to-entities.md) +# [クエリ結果](query-results.md) +# [クエリ式の構文例 : 並べ替え](query-expression-syntax-examples-ordering.md) +# [- (減算)](subtract-entity-sql.md) +# [CSDL、SSDL、および MSL 仕様](csdl-ssdl-and-msl-specifications.md) +# [正規関数](canonical-functions.md) +# [言語リファレンス](index.md) +# [ページング](paging-entity-sql.md) +# [メソッド ベースのクエリ構文例 : パーティション分割](method-based-query-syntax-examples-partitioning.md) +# [HAVING](having-entity-sql.md) +# [正規関数を呼び出す方法](how-to-call-canonical-functions.md) +# [比較セマンティクス](comparison-semantics-entity-sql.md) +# [NULL 値が許容される構造化型](nullable-structured-types-entity-sql.md) +# [集計関数](aggregate-functions-entity-sql.md) +# [LINQ to Entities の既知の問題および注意点](known-issues-and-considerations-in-linq-to-entities.md) +# [WHERE](where-entity-sql.md) +# [! (NOT)](not-entity-sql.md) +# [メソッド ベースのクエリ構文例 : リレーションシップのナビゲーション](method-based-query-syntax-examples-navigating-relationships.md) +# [Entity SQL 言語](entity-sql-language.md) +# [定数式](constant-expressions.md) +# [SSDL 仕様](ssdl-specification.md) +# [Entity SQL と Transact-SQL の相違点](how-entity-sql-differs-from-transact-sql.md) +# [関数のオーバーロードの解決方法](function-overload-resolution-entity-sql.md) +# [SELECT](select-entity-sql.md) +# [ビット単位の正規関数](bitwise-canonical-functions.md) +# [初期化式](initialization-expressions.md) +# [日付と時刻の正規関数](date-and-time-canonical-functions.md) +# [= (等しい)](equals-entity-sql.md) +# [INTERSECT](intersect-entity-sql.md) +# [空間関数](spatial-functions.md) +# [クエリ プランのキャッシュ](query-plan-caching-entity-sql.md) +# [|| (OR)](or-entity-sql.md) +# [パラメーター](parameters-entity-sql.md) +# [メソッド ベースのクエリ構文例 : 要素演算子](method-based-query-syntax-examples-element-operators.md) +# [名前空間](namespaces-entity-sql.md) +# [LIKE](like-entity-sql.md) +# [型システム](type-system-entity-sql.md) +# [コンパイル済みクエリ (LINQ to Entities)](compiled-queries-linq-to-entities.md) +# [LINQ to Entities クエリの標準クエリ演算子](standard-query-operators-in-linq-to-entities-queries.md) +# [サポート対象の LINQ メソッドとサポート非対象の LINQ メソッド (LINQ to Entities)](supported-and-unsupported-linq-methods-linq-to-entities.md) +# [クエリ式の構文例 : パーティション分割](query-expression-syntax-examples-partitioning.md) +# [<= (以下)](less-than-or-equal-to-entity-sql.md) +# [データベース関数を呼び出す方法](how-to-call-database-functions.md) +# [その他の正規関数](other-canonical-functions.md) +# [>= (以上)](greater-than-or-equal-to-entity-sql.md) +# [数学正規関数](math-canonical-functions.md) +# [OFTYPE](oftype-entity-sql.md) +# [方法: クエリを使用してモデル定義関数を呼び出す](how-to-call-model-defined-functions-in-queries.md) +# [CSDL 仕様](csdl-specification.md) +# [EXCEPT](except-entity-sql.md) +# [入れ子になった Entity SQL クエリの作成](composing-nested-entity-sql-queries.md) +# [LINQ to Entities](linq-to-entities.md) +# [Entity SQL リファレンス](entity-sql-reference.md) +# [サポートされていない式](unsupported-expressions-entity-sql.md) +# [文字列正規関数](string-canonical-functions.md) +# [-- (コメント)](comment-entity-sql.md) +# [メソッド ベースのクエリ構文例 : 並べ替え](method-based-query-syntax-examples-ordering.md) +# [TREAT](treat-entity-sql.md) +# [ISOF](isof-entity-sql.md) +# [+ (文字列連結)](string-concatenation-entity-sql.md) +# [名前付きの型コンストラクター](named-type-constructor-entity-sql.md) +# [THEN](then-entity-sql.md) +# [関数](functions-entity-sql.md) +# [+ (加算)](add.md) +# [IN](in-entity-sql.md) +# [* (乗算)](multiply-entity-sql.md) +# [メソッド ベースのクエリ構文例 : 射影](method-based-query-syntax-examples-projection.md) +# [BETWEEN](between-entity-sql.md) +# [> (より大きい)](greater-than-entity-sql.md) +# [DEREF](deref-entity-sql.md) +# [TOP](top-entity-sql.md) +# [CREATEREF](createref-entity-sql.md) +# [ANYELEMENT](anyelement-entity-sql.md) +# [. (メンバー アクセス)](member-access-entity-sql.md) +# [方法: カスタム データベース関数を呼び出す](how-to-call-custom-database-functions.md) +# [コンストラクター](constructing-types-entity-sql.md) +# [OVERLAPS](overlaps-entity-sql.md) +# [ユーザー定義関数](user-defined-functions-entity-sql.md) +# [変数](variables-entity-sql.md) +# [集計正規関数](aggregate-canonical-functions.md) +# [!= (等しくない)](not-equal-to-entity-sql.md) +# [クエリ式の構文例 : 結合演算子](query-expression-syntax-examples-join-operators.md) +# [方法: モデル定義関数をオブジェクト メソッドとして呼び出す](how-to-call-model-defined-functions-as-object-methods.md) +# [クエリ式の構文例 : 要素演算子](query-expression-syntax-examples-element-operators.md) +# [型定義](type-definitions-entity-sql.md) +# [クエリ式の構文例 : グループ化](query-expression-syntax-examples-grouping.md) +# [SET](set-entity-sql.md) +# [CASE](case-entity-sql.md) +# [パーセント (剰余)](modulo-entity-sql.md) +# [USING](using-entity-sql.md) +# [- (負符号)](negative-entity-sql.md) +# [< (より小さい)](less-than-entity-sql.md) +# [FLATTEN](flatten-entity-sql.md) +# [メソッド ベースのクエリ構文例 : 変換](method-based-query-syntax-examples-conversion.md) +# [MSL 仕様](msl-specification.md) +# [入力文字セット](input-character-set-entity-sql.md) +# [LINQ to Entities クエリ内の関数の呼び出し](calling-functions-in-linq-to-entities-queries.md) +# [メソッド ベースのクエリ構文例 : 集計演算子](method-based-query-syntax-examples-aggregate-operators.md) +# [クエリ式の構文例 : リレーションシップのナビゲーション](query-expression-syntax-examples-navigating-relationships.md) +# [FUNCTION](function-entity-sql.md) +# [リテラル](literals-entity-sql.md) +# [CAST](cast-entity-sql.md) +# [クエリ式の構文例 : 射影](query-expression-syntax-examples-projection.md) +# [ROW](row-entity-sql.md) +# [COLLECTION](collection-entity-sql.md) diff --git a/docs/framework/data/adonet/ef/language-reference/add.md b/docs/framework/data/adonet/ef/language-reference/add.md new file mode 100644 index 00000000000..b619e384b7a --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/add.md @@ -0,0 +1,57 @@ +--- +title: "+ (加算) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 51769b02-a8f7-4177-9e99-bbd10e77092c +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# + (加算) +2 つの値を加算します。 + +## 構文 + +``` + +expression ++ +expression + +``` + +## 引数 + `expression` + 任意の数値データ型の有効な式。 + +## 戻り値の型 + 2 つの引数の暗黙の型の昇格の結果であるデータ型。 暗黙の型の昇格について詳しくは、「[型システム](../../../../../../docs/framework/data/adonet/ef/language-reference/type-system-entity-sql.md)」をご覧ください。 + +## 解説 + EDM.String 型の場合は、値が連結されます。 + +## 使用例 + 次の Entity SQL クエリでは、\+ 算術演算子を使用して 2 つの数値を加算します。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#ADD](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#add)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [概念モデルの型 \(CSDL\)](http://msdn.microsoft.com/ja-jp/987b995f-e429-4569-9559-b4146744def4) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md b/docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md new file mode 100644 index 00000000000..d4cc60310e2 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md @@ -0,0 +1,89 @@ +--- +title: "集計正規関数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 3bcff826-ca90-41b3-a791-04d6ff0e5085 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 集計正規関数 +集計とは、一連の入力値をまとまった値 \(単一の値など\) に変換する式を指します。 集計は SELECT 式の GROUP BY 句と組み合わせて使用されるのが一般的であり、どこで使用できるかについては制約があります。 + + 次の表に、集計 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数を示します。 + +|関数|説明| +|--------|--------| +|`Avg(` `expression` `)`|NULL 以外の値の平均を返します。

**引数**

`Int32`、`Int64`、`Double`、`Decimal`。

**戻り値**

`expression` の型。 すべての入力値が `null` の場合は `Null` です。

**例**

[!code-csharp[DP EntityServices Concepts#EDM_AVG](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_avg)] + [!code-sql[DP EntityServices Concepts#EDM_AVG](../../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_avg)]| +|`BigCount(` `expression` `)`|NULL 値および重複値を含む集計のサイズを返します。

**引数**

任意の型。

**戻り値**

`Int64`。

**例**

[!code-csharp[DP EntityServices Concepts#EDM_BIGCOUNT](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_bigcount)] + [!code-sql[DP EntityServices Concepts#EDM_BIGCOUNT](../../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_bigcount)]| +|`Count(` `expression` `)`|NULL 値および重複値を含む集計のサイズを返します。

**引数**

任意の型。

**戻り値**

`Int32`。

**例**

[!code-csharp[DP EntityServices Concepts#EDM_COUNT](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_count)] + [!code-sql[DP EntityServices Concepts#EDM_COUNT](../../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_count)]| +|`Max(` `expression` `)`|NULL 以外の値の最大値を返します。

**引数**

`Byte`、`Int16`、`Int32`、`Int64`、`Byte`、`Single`、`Double`、`Decimal`、`DateTime`、`DateTimeOffset`、`Time`、`String`、`Binary`。

**戻り値**

`expression` の型。 すべての入力値が `null` の場合は `Null` です。

**例**

[!code-csharp[DP EntityServices Concepts#EDM_MAX](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_max)] + [!code-sql[DP EntityServices Concepts#EDM_MAX](../../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_max)]| +|`Min(` `expression` `)`|NULL 以外の値の最小値を返します。

**引数**

`Byte`、`Int16`、`Int32`、`Int64`、`Byte`、`Single`、`Double`、`Decimal`、`DateTime`、`DateTimeOffset`、`Time`、`String`、`Binary`。

**戻り値**

`expression` の型。 すべての入力値が `null` の場合は `Null` です。

**例**

[!code-csharp[DP EntityServices Concepts#EDM_MIN](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_min)] + [!code-sql[DP EntityServices Concepts#EDM_MIN](../../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_min)]| +|`StDev(` `expression` `)`|NULL 以外の値の標準偏差を返します。

**引数**

`Int32`、`Int64`、`Double`、`Decimal`。

**戻り値**

`Double` すべての入力値が `null` の場合は `Null` です。

**例**

[!code-csharp[DP EntityServices Concepts#EDM_STDEV](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_stdev)] + [!code-sql[DP EntityServices Concepts#EDM_STDEV](../../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_stdev)]| +|`StDevP(` `expression` `)`|すべての値の母集団の標準偏差を返します。

**引数**

`Int32`、`Int64`、`Double`、`Decimal`。

**戻り値**

`Double` すべての入力値が `null` の場合は `Null` です。

**例**

[!code-csharp[DP EntityServices Concepts#EDM_STDEVP](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_stdevp)] + [!code-sql[DP EntityServices Concepts#EDM_STDEVP](../../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_stdevp)]| +|`Sum(` `expression` `)`|NULL 以外の値の合計を返します。

**引数**

`Int32`、`Int64`、`Double`、`Decimal`。

**戻り値**

`Double` すべての入力値が `null` の場合は `Null` です。

**例**

[!code-csharp[DP EntityServices Concepts#EDM_SUM](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_sum)] + [!code-sql[DP EntityServices Concepts#EDM_SUM](../../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_sum)]| +|`Var(` `expression` `)`|すべての null 以外の値の分散を返します。

**引数**

`Int32`、`Int64`、`Double`、`Decimal`。

**戻り値**

`Double` すべての入力値が `null` の場合は `Null` です。

**例**

[!code-csharp[DP EntityServices Concepts#EDM_VAR](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_var)] + [!code-sql[DP EntityServices Concepts#EDM_VAR](../../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_var)]| +|`VarP(` `expression` `)`|すべての null 以外の値の母集団の分散を返します。

**引数**

`Int32`、`Int64`、`Double`、`Decimal`。

**戻り値**

`Double` すべての入力値が `null` の場合は `Null` です。

**例**

[!code-csharp[DP EntityServices Concepts#EDM_VARP](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts/cs/entitysql.cs#edm_varp)] + [!code-sql[DP EntityServices Concepts#EDM_VARP](../../../../../../samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#edm_varp)]| + + 同等の機能は、Microsoft SQL クライアント マネージ プロバイダーでも利用できます。 詳細については、「[Entity Framework 用 SqlClient 関数](../../../../../../docs/framework/data/adonet/ef/sqlclient-for-ef-functions.md)」を参照してください。 + +## コレクションベースの集計 + コレクションベースの集計 \(コレクション関数\) は、コレクションに対して演算を実行して、値を返します。 たとえば、ORDERS がすべての注文のコレクションである場合、次の式を使って、最も早い出荷日を計算できます。 + +``` +min(select value o.ShipDate from LOB.Orders as o) +``` + + コレクションベースの集計では、現在の周囲の名前解決スコープ内で式が評価されます。 + +## グループベースの集計 + グループベースの集計では、GROUP BY 句によって定義されたグループごとに計算が実行されます。 その結果の各グループについて、それぞれのグループ内の要素を、集計計算の入力として使って別個の集計が計算されます。 select 式で group by 句を使用した場合、投影または order by 句で使用できるのは、グループ化式の名前、集計式、または定数式だけです。 + + 次の例では、製品ごとの平均発注数量を計算しています。 + +``` +select p, avg(ol.Quantity) from LOB.OrderLines as ol + group by ol.Product as p +``` + + SELECT 式に明示的な group by 句を指定せずに、グループベースの集計を行うこともできます。 この場合、すべての要素が単一のグループとして扱われます。 これは、定数に基づくグループ化を指定した場合と同等です。 たとえば、次のような式があったとします。 + +``` +select avg(ol.Quantity) from LOB.OrderLines as ol +``` + + これは、次の指定と同じです。 + +``` +select avg(ol.Quantity) from LOB.OrderLines as ol group by 1 +``` + + グループベースの集計内の式は、WHERE 句式から可視である名前解決スコープ内で評価されます。 + + [!INCLUDE[tsql](../../../../../../includes/tsql-md.md)] の場合と同様、グループベースの集計には、ALL または DISTINCT の修飾子を指定することもできます。 DISTINCT 修飾子が指定された場合、集計を計算する前に、集計の入力コレクションから重複が除外されます。 ALL 修飾子が指定された場合 \(または修飾子が指定されなかった場合\)、重複は除外されません。 + +## 参照 + [正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/canonical-functions.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/aggregate-functions-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/aggregate-functions-entity-sql.md new file mode 100644 index 00000000000..02dc5990367 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/aggregate-functions-entity-sql.md @@ -0,0 +1,53 @@ +--- +title: "集計関数 (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: acfd3149-f519-4c6e-8fe1-b21d243a0e58 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 集計関数 (Entity SQL) +集計は、コレクションをグループ操作の一部としてスカラーに圧縮する言語構成要素です。 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 集計には次の 2 つの形式があります。 + +- 式内のあらゆる位置で使用できる [!INCLUDE[esql](../../../../../../includes/esql-md.md)] コレクション関数。これには、コレクションに対して作用するプロジェクションおよび述語での集計関数の使用が含まれます。[!INCLUDE[esql](../../../../../../includes/esql-md.md)] で集計を指定するには、コレクション関数を使用することをお勧めします。 + +- GROUP BY 句を含むクエリ式内のグループ集計。 [!INCLUDE[tsql](../../../../../../includes/tsql-md.md)] と同様に、グループ集計では集計の入力に対する修飾子として DISTINCT と ALL を受け入れます。 + + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] は、まず式をコレクション関数として解釈しようとしますが、SELECT 式のコンテキストにある式はグループ集計として解釈されます。 + + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] は、[GROUPPARTITION](../../../../../../docs/framework/data/adonet/ef/language-reference/grouppartition-entity-sql.md) という特殊な集計演算子を定義します。 この演算子を使用すると、グループ化された入力セットへの参照を取得できます。 これにより、GROUP BY 句の結果をグループ集計関数やコレクション関数以外の場所で使用できる高度なグループ化クエリが可能になります。 + +## コレクション関数 + コレクション関数はコレクションに対して実行され、スカラー値を返します。 たとえば、`orders` がすべての `orders` のコレクションである場合、次の式を使用して、最も早い出荷日を計算できます。 + + `min(select value o.ShipDate from LOB.Orders as o)` + +## グループ集計 + グループ集計では、GROUP BY 句によって定義されたグループ結果ごとに計算が実行されます。 GROUP BY 句により、データがグループに分けられます。 分けられた各グループに集計関数が適用され、それぞれのグループ内の要素を集計計算の入力として使用して、各集計が計算されます。 SELECT 式で GROUP BY 句を使用した場合、プロジェクション、HAVING、または ORDER BY 句で使用できるのは、グループ化式の名前、集計式、または定数式だけです。 + + 次の例では、製品ごとの平均発注数量を計算しています。 + + `select p, avg(ol.Quantity) from LOB.OrderLines as ol` + + `group by ol.Product as p` + + SELECT 式に明示的な GROUP BY 句を指定せずに、グループ集計を行うこともできます。 すべての要素が 1 つのグループとして処理されます。これは定数に基づくグループ化を指定する場合と同じです。 + + `select avg(ol.Quantity) from LOB.OrderLines as ol` + + `select avg(ol.Quantity) from LOB.OrderLines as ol group by 1` + + GROUP BY 句で使用される式は、WHERE 句式から参照できる同じ名前解決スコープを使用して評価されます。 + +## 参照 + [関数](../../../../../../docs/framework/data/adonet/ef/language-reference/functions-entity-sql.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/and-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/and-entity-sql.md new file mode 100644 index 00000000000..1e2a0947ad8 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/and-entity-sql.md @@ -0,0 +1,60 @@ +--- +title: "&& (AND) (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: e7d24213-471d-4807-b85e-570375df89b5 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# && (AND) (Entity SQL) +両方の式が `true` の場合は `true` を返します。それ以外の場合は `false` または `NULL` を返します。 + +## 構文 + +``` + + boolean_expression AND boolean_expression +or +boolean_expression && boolean_expression +``` + +## 引数 + `boolean_expression` + ブール値を返す任意の有効な式。 + +## 解説 + 二重のアンパサンド \(&&\) は、AND 演算子と同じ効果を持ちます。 + + 使用可能な入力値と戻り値の型を次の表に示します。 + +||`TRUE`|`FALSE`|`NULL`| +|-|------------|-------------|------------| +|`TRUE`|TRUE|FALSE|NULL| +|`FALSE`|FALSE|FALSE|FALSE| +|`NULL`|NULL|FALSE|NULL| + +## 使用例 + 次の Entity SQL クエリは、AND 演算子の使い方を示しています。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#AND](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#and)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/anyelement-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/anyelement-entity-sql.md new file mode 100644 index 00000000000..cdb9d5ac1d7 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/anyelement-entity-sql.md @@ -0,0 +1,58 @@ +--- +title: "ANYELEMENT (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 475a9ad6-8c8d-4f49-9970-af273e5360f1 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# ANYELEMENT (Entity SQL) +複数値のコレクションから要素を抽出します。 + +## 構文 + +``` + +ANYELEMENT (expression) +``` + +## 引数 + `expression` + 要素の抽出元のコレクションを返す任意の有効なクエリ式。 + +## 戻り値 + コレクションに複数の要素が存在する場合はコレクション内の単一の要素 \(任意の要素\) が、コレクションが空の場合は `null` が返されます。```collection``` が `Collection` 型のコレクションである場合、 `ANYELEMENT(collection)` は、`T` 型のインスタンスを生成する正しい式です。 + +## 解説 + ANYELEMENT では、複数値のコレクションから任意の要素が抽出されます。 たとえば、次の例では、 `Customers` という集合から単一の要素が抽出されます。 + +``` +ANYELEMENT(Customers) +``` + +## 使用例 + 次の [!INCLUDE[esql](../../../../../../includes/esql-md.md)] クエリでは、ANYELEMENT 演算子を使用して、複数値のコレクションから要素を抽出します。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#ANYELEMENT](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#anyelement)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [NULL 値が許容される構造化型](../../../../../../docs/framework/data/adonet/ef/language-reference/nullable-structured-types-entity-sql.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/between-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/between-entity-sql.md new file mode 100644 index 00000000000..c3a24d41fa6 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/between-entity-sql.md @@ -0,0 +1,65 @@ +--- +title: "BETWEEN (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 4dcdd754-ae01-4e78-bf28-8a117fb2b73e +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# BETWEEN (Entity SQL) +式の結果が指定の範囲内の値になるかどうかを判断します。[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の BETWEEN 式は、Transact\-SQL の BETWEEN 式と同じ効果を持ちます。 + +## 構文 + +``` + +expression [ NOT ] BETWEEN begin_expression AND end_expression +``` + +## 引数 + `expression` + `begin_expression` と `end_expression` で定義される範囲についてテストするための任意の有効な式。`expression` は、`begin_expression` と `end_expression` の両方と同じ型にする必要があります。 + + `begin_expression` + 任意の有効な式。`begin_expression` は、`expression` と `end_expression` の両方と同じ型にする必要があります。`begin_expression` は、`end_expression` 未満でなければなりません。それ以外の場合、戻り値は否定されます。 + + `end_expression` + 任意の有効な式。`end_expression` は、`expression` と `begin_expression` の両方と同じ型にする必要があります。 + + NOT + BETWEEN の結果を否定することを指定します。 + + AND + `expression` と `begin_expression` で表される範囲内で `end_expression` をテストする必要があることを示すプレースホルダーです。 + +## 戻り値 + `true` が、`expression` と `begin_expression` で指定される範囲内にある場合は `end_expression`。それ以外の場合は `false`。`null` が `expression` であるか、`null` または `begin_expression` が `end_expression` である場合は、`null` が返されます。 + +## 解説 + 両端を除いた範囲を指定するには、BETWEEN の代わりに、より大きい \(\>\) とより小さい \(\<\) を意味する演算子を使用します。 + +## 使用例 + 次の Entity SQL クエリでは、BETWEEN 演算子を使用して、式の結果が指定の範囲内の値になるかどうかを調べます。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#BETWEEN](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#between)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/bitwise-canonical-functions.md b/docs/framework/data/adonet/ef/language-reference/bitwise-canonical-functions.md new file mode 100644 index 00000000000..5164dd48386 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/bitwise-canonical-functions.md @@ -0,0 +1,37 @@ +--- +title: "ビット単位の正規関数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 993868ca-16e3-47b6-9915-c29cd63b0a21 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# ビット単位の正規関数 +[!INCLUDE[esql](../../../../../../includes/esql-md.md)] にはビット単位の正規関数があります。 + +## 解説 + 次の表に、ビット単位の [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数を示します。 `Null` が入力された場合、これらの関数は `Null` を返します。 戻り値の型は、引数の型と同じです。 複数の引数を関数が受け取る場合、それらの引数は同じ型にする必要があります。 異なる型でビット単位の演算を実行するには、明示的に同じ型にキャストする必要があります。 + +|関数|説明| +|--------|--------| +|`BitWiseAnd (` `value1` `,` `value2` `)`|`value1` と `value2` のビット単位の論理積を `value1` と `value2` の型で返します。

**引数**

`Byte`、`Int16`、`Int32`、および `Int64`。

**例**

`-- The following example returns 1.`

`BitWiseAnd(1,3)`| +|`BitWiseNot (` `value` `)`|`value` のビット単位の否定を返します。

**引数**

`Byte`、`Int16`、`Int32`、および `Int64`。

**例**

`-- The following example returns -4.`

`BitWiseNot(3)`| +|`BitWiseOr (` `value1` `,` `value2` `)`|`value1` と `value2` のビット単位の論理和を `value1` と `value2` の型で返します。

**引数**

`Byte`、`Int16`、`Int32`、および `Int64`。

**例**

`-- The following example returns 3.`

`BitWiseOr(1,3)`| +|`BitWiseXor (` `value1` `,` `value2` `)`|`value1` と `value2` のビット単位の排他的論理和を `value1` と `value2` の型で返します。

**引数**

`Byte`、`Int16`、`Int32`、および `Int64`。

**例**

`-- The following example returns 2.`

`BitWiseXor (1,3)`| + +## 参照 + [正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/canonical-functions.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/calling-functions-in-linq-to-entities-queries.md b/docs/framework/data/adonet/ef/language-reference/calling-functions-in-linq-to-entities-queries.md new file mode 100644 index 00000000000..7e1d7e5ecc7 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/calling-functions-in-linq-to-entities-queries.md @@ -0,0 +1,49 @@ +--- +title: "LINQ to Entities クエリ内の関数の呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 12a525a9-727c-4464-a0c7-71a0ef541792 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# LINQ to Entities クエリ内の関数の呼び出し +このセクションの各トピックでは、LINQ to Entities クエリで関数を呼び出す方法について説明します。 + + クラスおよび クラスを使用すると、Entity Framework の一部として正規関数およびデータベース関数にアクセスできます。 詳細については、「[正規関数を呼び出す方法](../../../../../../docs/framework/data/adonet/ef/language-reference/how-to-call-canonical-functions.md)」および「[データベース関数を呼び出す方法](../../../../../../docs/framework/data/adonet/ef/language-reference/how-to-call-database-functions.md)」を参照してください。 + + カスタム関数を呼び出すプロセスには、3 つの基本的な手順が必要です。 + +1. 概念モデルで関数を定義するか、ストレージ モデルで関数を宣言します。 + +2. メソッドをアプリケーションに追加し、 を使用してこれをモデルの関数にマップします。 + +3. LINQ to Entities クエリから関数を呼び出します。 + + 詳細については、このセクションの各トピックを参照してください。 + +## このセクションの内容 + [正規関数を呼び出す方法](../../../../../../docs/framework/data/adonet/ef/language-reference/how-to-call-canonical-functions.md) + + [データベース関数を呼び出す方法](../../../../../../docs/framework/data/adonet/ef/language-reference/how-to-call-database-functions.md) + + [方法: カスタム データベース関数を呼び出す](../../../../../../docs/framework/data/adonet/ef/language-reference/how-to-call-custom-database-functions.md) + + [方法: クエリを使用してモデル定義関数を呼び出す](../../../../../../docs/framework/data/adonet/ef/language-reference/how-to-call-model-defined-functions-in-queries.md) + + [方法: モデル定義関数をオブジェクト メソッドとして呼び出す](../../../../../../docs/framework/data/adonet/ef/language-reference/how-to-call-model-defined-functions-as-object-methods.md) + +## 参照 + [LINQ to Entities でのクエリ](../../../../../../docs/framework/data/adonet/ef/language-reference/queries-in-linq-to-entities.md) + [正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/canonical-functions.md) + [.edmx File Overview](http://msdn.microsoft.com/ja-jp/f4c8e7ce-1db6-417e-9759-15f8b55155d4) + [How to: Define Custom Functions in the Conceptual Model](http://msdn.microsoft.com/ja-jp/0dad7b8b-58f6-4271-b238-f34810d68e5f) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/canonical-functions.md b/docs/framework/data/adonet/ef/language-reference/canonical-functions.md new file mode 100644 index 00000000000..2f6efb324af --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/canonical-functions.md @@ -0,0 +1,65 @@ +--- +title: "正規関数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: bbcc9928-36ea-4dff-9e31-96549ffed958 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 正規関数 +このセクションでは、すべてのデータ プロバイダーがサポートし、あらゆるクエリ テクノロジで使用されている正規関数について説明します。 正規関数は、プロバイダーが拡張することはできません。 + + これらの正規関数は、プロバイダーの対応するデータ ソース機能に変換されます。 これによって、全データ ソースに共通する形式で表現される関数を呼び出すことができます。 + + これらの正規関数はデータ ソースから独立しているため、正規関数の引数の型と戻り値の型は、概念モデルの型の語句で定義されます。 ただし、データ ソースの中には概念モデルのすべての型をサポートしていないものもあります。 + + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] クエリで正規関数を使用すると、適切な関数がデータ ソースで呼び出されます。 + + すべての正規関数は、NULL が入力された場合の動作と明示的に指定されたエラー状況の両方を含んでいます。 ストア プロバイダーはその動作に従う必要がありますが、[!INCLUDE[adonet_ef](../../../../../../includes/adonet-ef-md.md)] にはこの動作が適用されません。 + + LINQ のシナリオの場合、[!INCLUDE[adonet_ef](../../../../../../includes/adonet-ef-md.md)] に対するクエリでは、基になるデータ ソース内のメソッドへの CLR メソッドのマッピングも行われます。 特定の一連のメソッドが適切にマップされるように、CLR メソッドはデータ ソースに関係なく正規関数にマップされます。 + +## 正規関数の名前空間 + 正規関数の名前空間は です。 名前空間は、自動的にすべてのクエリに含まれます。 ただし、 名前空間に正規関数と同じ名前の関数を含む別の名前空間がインポートされている場合は、名前空間を指定する必要があります。 + +## このセクションの内容 + [集計正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md) + 集計 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数について説明します。 + + [数学正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/math-canonical-functions.md) + 数学 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数について説明します。 + + [文字列正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md) + 文字列 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数について説明します。 + + [日付と時刻の正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md) + 日付および時刻の [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数について説明します。 + + [ビット単位の正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/bitwise-canonical-functions.md) + ビット単位の [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数について説明します。 + + [空間関数](../../../../../../docs/framework/data/adonet/ef/language-reference/spatial-functions.md) + 空間に関する [!INCLUDE[esql](../../../../../../includes/esql-md.md)] の正規関数について説明します。 + + [その他の正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/other-canonical-functions.md) + ビット単位、日付\/時刻、文字列、数学、または集計に分類されない関数について説明します。 + +## 参照 + [Entity SQL の概要](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md) + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [概念モデル正規関数と SQL Server 関数とのマッピング](../../../../../../docs/framework/data/adonet/ef/conceptual-model-canonical-to-sql-server-functions-mapping.md) + [ユーザー定義関数](../../../../../../docs/framework/data/adonet/ef/language-reference/user-defined-functions-entity-sql.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/case-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/case-entity-sql.md new file mode 100644 index 00000000000..05995c4bb32 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/case-entity-sql.md @@ -0,0 +1,74 @@ +--- +title: "CASE (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 26a47873-e87d-4ba2-9e2c-3787c21efe89 +caps.latest.revision: 5 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 5 +--- +# CASE (Entity SQL) +一連の `Boolean` 式を評価して結果を決定します。 + +## 構文 + +``` + +CASE +     WHEN Boolean_expression THEN result_expression +    [ ...n ] +     [ +    ELSE else_result_expression +     ] +END +``` + +## 引数 + `n` + 複数の WHEN `Boolean_expression` THEN `result_expression` 句が使用できることを示すプレースホルダーです。 + + THEN `result_expression` + `Boolean_expression` が `true` に評価されると返される式です。`result expression` は、任意の有効な式です。 + + ELSE `else_result_expression` + 比較操作の評価がいずれも `true` でなかった場合に返される式です。 この引数を省略し、比較演算のいずれも `true` に評価されなかった場合、CASE は NULL を返します。`else_result_expression` は、任意の有効な式です。`else_result_expression` と任意の `result_expression` のデータ型は同一であるか、暗黙的な変換によって同一の型になる必要があります。 + + WHEN `Boolean_expression` + 検索 CASE 形式を使用した場合に評価される `Boolean` 式です。`Boolean_expression` は、任意の有効な `Boolean` 式です。 + +## 戻り値 + `result_expression` およびオプションの `else_result_expression` の一連の型の中から、最も優先順位の高い型を返します。 + +## 解説 + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] の case 式は、[!INCLUDE[tsql](../../../../../../includes/tsql-md.md)] の case 式と似ています。 case 式を使用すると、適切な結果が得られる式を、一連の条件判定によって決めることができます。 この形式の case 式では、1 つまたは複数の `Boolean` 式によって、最終的に使用される式が決定されます。 + + CASE 関数は、各 WHEN 句の `Boolean_expression` を指定された順序で評価し、`result_expression` として評価された最初の `Boolean_expression` の `true` を返します。 残りの式は評価されません。`Boolean_expression` の評価がいずれも `true` でなかった場合、データベース エンジンは、ELSE 句が指定されていれば `else_result_expression` を、ELSE 句が指定されていない場合は NULL 値を返します。 + + CASE ステートメントでマルチセットを取得することはできません。 + +## 使用例 + 次の Entity SQL クエリでは、CASE 式を使用して、一連の `Boolean` 式を評価し、結果を取得しています。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[PrimitiveType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-primitivetype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecutePrimitiveTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#CASE_WHEN_THEN_ELSE](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#case_when_then_else)] + +## 参照 + [THEN](../../../../../../docs/framework/data/adonet/ef/language-reference/then-entity-sql.md) + [SELECT](../../../../../../docs/framework/data/adonet/ef/language-reference/select-entity-sql.md) + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/cast-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/cast-entity-sql.md new file mode 100644 index 00000000000..6db3a91a677 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/cast-entity-sql.md @@ -0,0 +1,75 @@ +--- +title: "CAST (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 07b6d750-dfd4-48a9-b86c-3badcbba6f70 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# CAST (Entity SQL) +あるデータ型の式を別のデータ型に変換します。 + +## 構文 + +``` + +CAST ( expression AS data_type) +``` + +## 引数 + `expression` + `data_type` に変換できる任意の有効な式。 + + `data_type` + 対象システムで提供されるデータ型。 プリミティブ \(スカラー\) 型でなければなりません。 使用される `data_type` は、クエリのスペースによって異なります。 クエリが で実行される場合、データ型は概念モデルで定義された型です。 詳細については、「[CSDL 仕様](../../../../../../docs/framework/data/adonet/ef/language-reference/csdl-specification.md)」を参照してください。 クエリが で実行される場合、データ型は共通言語ランタイム \(CLR\) 型です。 + +## 戻り値 + `data_type` と同じ値が返されます。 + +## 解説 + キャスト式のセマンティックスは [!INCLUDE[tsql](../../../../../../includes/tsql-md.md)] CONVERT 式と似ています。 キャスト式は、ある型の値を別の型の値に変換する場合に使用します。 + +``` +CAST( e as T ) +``` + + e が S 型で、S を T に変換できる場合、上記の式は有効なキャスト式です。 T はプリミティブ \(スカラー\) 型でなければなりません。 + + `Edm.Decimal` にキャストする場合は、オプションで精度と小数点以下桁数のファセットの値を指定できます。 明示的に指定しない場合、精度と小数点以下桁数の既定値はそれぞれ 18 と 0 です。 具体的には、`Decimal` で次のオーバーロードがサポートされています。 + +- `CAST( d as Edm.Decimal );` + +- `CAST( d as Edm.Decimal(precision) );` + +- `CAST( d as Edm.Decimal(precision, scale) );` + + キャスト式の使用は明示的な変換と見なされます。 明示的な変換では、データが切り捨てられたり、精度が失われたりする場合があります。 + +> [!NOTE] +> CAST はプリミティブ型と列挙メンバー型のみでサポートされています。 + +## 使用例 + 次の [!INCLUDE[esql](../../../../../../includes/esql-md.md)] クエリは CAST 演算子を使用して、あるデータ型の式を別のデータ型にキャストします。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[PrimitiveType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-primitivetype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecutePrimitiveTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#CAST](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#cast)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/clr-method-to-canonical-function-mapping.md b/docs/framework/data/adonet/ef/language-reference/clr-method-to-canonical-function-mapping.md new file mode 100644 index 00000000000..b7162a9b2bf --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/clr-method-to-canonical-function-mapping.md @@ -0,0 +1,211 @@ +--- +title: "CLR メソッドと正規関数とのマッピング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: e3363261-2cb8-4b54-9555-2870be99b929 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# CLR メソッドと正規関数とのマッピング +Entity Framework は、文字列操作、数学関数などの多くのデータベース システム間で共通の機能を実装する正規関数のセットを提供します。 この関数により、開発者は広範なデータベース システムをターゲットとして指定することができます。 LINQ to Entities などのクエリ テクノロジから呼び出されると、これらの正規関数は使用されているプロバイダーに対応した正しい格納関数に変換されます。 これにより、関数の呼び出しをデータ ソース間で共通の形式で表すことができ、データ ソース間に一貫した方法でクエリを利用できます。 オペランドが数値型である場合は、ビット単位の AND、OR、NOT、および XOR 演算子も正規関数にマップされます。ブール型のオペランドの場合、ビット単位の AND、OR、NOT、および XOR 演算子は、それぞれのオペランドの論理 AND、OR、NOT、および XOR 演算を計算します。 詳細については、「[正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/canonical-functions.md)」を参照してください。 + + LINQ シナリオの場合、Entity Framework に対するクエリでは、正規関数による、基になるデータ ソース上のメソッドへの特定の CLR メソッドのマッピングも行われます。 正規関数に明示的にマップされない LINQ to Entities クエリで任意のメソッドの呼び出しが実行されると、ランタイムの 例外がスローされます。 + +## System.String メソッド \(静的\) のマッピング + +|System.String メソッド \(静的\)|正規関数| +|-------------------------------|----------| +|System.String Concat\(String `str0`, String `str1`\)|Concat\(`str0`, `str1`\)| +|System.String Concat\(String `str0`, String `str1`, String `str2`\)|Concat\(Concat\(`str0`, `str1`\), `str2`\)| +|System.String Concat\(String `str0`, String `str1`, String `str2`, String `str03`\)|Concat\(Concat\(Concat\(`str0`, `str1`\), `str2`\), `str3`\)| +|Boolean Equals\(String `a`, String `b`\)|\= 演算子| +|Boolean IsNullOrEmpty\(String `value`\)|\(IsNull\(`value`\)\) OR Length\(`value`\) \= 0| +|Boolean op\_Equality\(String `a`, String `b`\)|\= 演算子| +|Boolean op\_Inequality\(String `a` , String `b`\)|\!\= 演算子| +|Microsoft.VisualBasic.Strings.Trim\(String `str`\)|Trim\(`str`\)| +|Microsoft.VisualBasic.Strings.LTrim\(String `str`\)|Ltrim\(`str`\)| +|Microsoft.VisualBasic.Strings.RTrim\(String `str`\)|Rtrim\(`str`\)| +|Microsoft.VisualBasic.Strings.Len\(String `expression`\)|Length\(`expression`\)| +|Microsoft.VisualBasic.Strings.Left\(String `str`, Int32 `Length`\)|Left\(`str`, `Length`\)| +|Microsoft.VisualBasic.Strings.Mid\(String `str`, Int32 `Start`, Int32 `Length`\)|Substring\(`str`, `Start`, `Length`\)| +|Microsoft.VisualBasic.Strings.Right\(String `str`, Int32 `Length`\)|Right\(`str`, `Length`\)| +|Microsoft.VisualBasic.Strings.UCase\(String `Value`\)|ToUpper\(`Value`\)| +|Microsoft.VisualBasic.Strings.LCase\(String Value\)|ToLower\(`Value`\)| + +## System.String メソッド \(インスタンス\) のマッピング + +|System.String メソッド \(インスタンス\)|正規関数|メモ| +|-----------------------------------|----------|--------| +|Boolean Contains\(String `value`\)|`this` LIKE '%`value`%'|`value` が定数ではない場合、IndexOf\(`this`, `value`\) \> 0 にマップされます。| +|Boolean EndsWith\(String `value`\)|`this` LIKE `'`%`value`'|`value` が定数ではない場合、Right\(`this`, length\(`value`\)\) \= `value` にマップされます。| +|Boolean StartsWith\(String `value`\)|`this` LIKE '`value`%'|`value` が定数ではない場合、IndexOf\(`this`, `value`\) \= 1 にマップされます。| +|長さ|Length\(`this`\)|| +|Int32 IndexOf\(String `value`\)|IndexOf\(`this`, `value`\) \- 1|| +|System.String Insert\(Int32 `startIndex`, String `value`\)|Concat\(Concat\(Substring\(`this`, 1, `startIndex`\), `value`\), Substring\(`this`, `startIndex`\+1, Length\(`this`\) \- `startIndex`\)\)|| +|System.String Remove\(Int32 `startIndex`\)|Substring\(`this`, 1, `startIndex`\)|| +|System.String Remove\(Int32 `startIndex`, Int32 `count`\)|Concat\(Substring\(`this`, 1, `startIndex`\) , Substring\(`this`, `startIndex` \+ `count` \+1, Length\(`this`\) \- \(`startIndex` \+ `count`\)\)\)|`count` が 0 以上の整数である場合、サポートされるのは Remove\(`startIndex`, `count`\) だけです。| +|System.String Replace\(String `oldValue`, String `newValue`\)|Replace\(`this`, `oldValue`, `newValue`\)|| +|System.String Substring\(Int32 `startIndex`\)|Substring\(`this`, `startIndex` \+1, Length\(`this`\) \- `startIndex`\)|| +|System.String Substring\(Int32 `startIndex`, Int32 `length`\)|Substring\(`this`, `startIndex` \+1, `length`\)|| +|System.String ToLower\(\)|ToLower\(`this`\)|| +|System.String ToUpper\(\)|ToUpper\(`this`\)|| +|System.String Trim\(\)|Trim\(`this`\)|| +|System.String TrimEnd\(Char\[\] `trimChars`\)|RTrim\(`this`\)|| +|System.String TrimStart\(Char\[\]`trimChars`\)|LTrim\(`this`\)|| +|Boolean Equals\(String `value`\)|\= 演算子|| + +## System.DateTime メソッド \(静的\) のマッピング + +|System.DateTime メソッド \(静的\)|正規関数|メモ| +|---------------------------------|----------|--------| +|Boolean Equals\(DateTime `t1`, DateTime `t2`\)|\= 演算子|| +|System.DateTime.Now|CurrentDateTime\(\)|| +|System.DateTime.UtcNow|CurrentUtcDateTime\(\)|| +|Boolean op\_Equality\(DateTime `d1`, DateTime `d2`\)|\= 演算子|| +|Boolean op\_GreaterThan\(DateTime `t1`, DateTime `t2`\)|\> 演算子|| +|Boolean op\_GreaterThanOrEqual\(DateTime `t1`, DateTime `t2`\)|\>\= 演算子|| +|Boolean op\_Inequality\(DateTime `t1`, DateTime `t2`\)|\!\= 演算子|| +|Boolean op\_LessThan\(DateTime `t1`, DateTime `t2`\)|\< 演算子|| +|Boolean op\_LessThanOrEqual\(DateTime `t1`, DateTime `t2`\)|\<\= 演算子|| +|Microsoft.VisualBasic.DateAndTime.DatePart\( \_

ByVal `Interval` As DateInterval, \_

ByVal `DateValue` As DateTime, \_

Optional ByVal `FirstDayOfWeekValue` As FirstDayOfWeek \= VbSunday, \_

Optional ByVal `FirstWeekOfYearValue` As FirstWeekOfYear \= VbFirstJan1 \_

\) As Integer||詳細については、「DatePart 関数」を参照してください。| +|Microsoft.VisualBasic.DateAndTime.Now|CurrentDateTime\(\)|| +|Microsoft.VisualBasic.DateAndTime.Year\(DateTime `TimeValue`\)|Year\(\)|| +|Microsoft.VisualBasic.DateAndTime.Month\(DateTime `TimeValue`\)|Month\(\)|| +|Microsoft.VisualBasic.DateAndTime.Day\(DateTime `TimeValue`\)|Day\(\)|| +|Microsoft.VisualBasic.DateAndTime.Hour\(DateTime `TimeValue`\)|Hour\(\)|| +|Microsoft.VisualBasic.DateAndTime.Minute\(DateTime `TimeValue`\)|Minute\(\)|| +|Microsoft.VisualBasic.DateAndTime.Second\(DateTime `TimeValue`\)|Second\(\)|| + +## System.DateTime メソッド \(インスタンス\) のマッピング + +|System.DateTime メソッド \(インスタンス\)|正規関数| +|-------------------------------------|----------| +|Boolean Equals\(DateTime `value`\)|\= 演算子| +|Day|Day\(`this`\)| +|Hour|Hour\(`this`\)| +|Millisecond|Millisecond\(`this`\)| +|Minute|Minute\(`this`\)| +|月|Month\(`this`\)| +|Second|Second\(`this`\)| +|Year|Year\(`this`\)| + +## System.DateTimeOffset メソッド \(インスタンス\) のマッピング + 示されているプロパティに対する `get` メソッドのマッピングを示します。 + +|System.DateTimeOffset メソッド \(インスタンス\)|正規関数|メモ| +|-------------------------------------------|----------|--------| +|Day|Day\(`this`\)|SQL Server 2005 ではサポートされません。| +|Hour|Hour\(`this`\)|SQL Server 2005 ではサポートされません。| +|Millisecond|Millisecond\(`this`\)|SQL Server 2005 ではサポートされません。| +|Minute|Minute\(`this`\)|SQL Server 2005 ではサポートされません。| +|月|Month\(`this`\)|SQL Server 2005 ではサポートされません。| +|Second|Second\(`this`\)|SQL Server 2005 ではサポートされません。| +|Year|Year\(`this`\)|SQL Server 2005 ではサポートされません。| + +> [!NOTE] +> 比較した オブジェクトが等しい場合、 メソッドは `true` を返します。それ以外の場合は `false` を返します。 比較した オブジェクトが等しい、より大きい、またはより小さい場合、 メソッドはそれぞれ 0、1、または \-1 を返します。 + +## System.DateTimeOffset メソッド \(静的\) のマッピング + 示されているプロパティに対する `get` メソッドのマッピングを示します。 + +|System.DateTimeOffset メソッド \(静的\)|正規関数|メモ| +|---------------------------------------|----------|--------| +|System.DateTimeOffset.Now\(\)|CurrentDateTimeOffset\(\)|SQL Server 2005 ではサポートされません。| + +## System.TimeSpan メソッド \(インスタンス\) のマッピング + 示されているプロパティに対する `get` メソッドのマッピングを示します。 + +|System.TimeSpan メソッド \(インスタンス\)|正規関数|メモ| +|-------------------------------------|----------|--------| +|時間|Hour\(`this`\)|SQL Server 2005 ではサポートされません。| +|Milliseconds|Millisecond\(`this`\)|SQL Server 2005 ではサポートされません。| +|分|Minute\(`this`\)|SQL Server 2005 ではサポートされません。| +|Seconds|Second\(`this`\)|SQL Server 2005 ではサポートされません。| + +> [!NOTE] +> 比較した オブジェクトが等しい場合、 メソッドは `true` を返します。それ以外の場合は `false` を返します。 比較した オブジェクトが等しい、より大きい、またはより小さい場合、 メソッドはそれぞれ 0、1、または \-1 を返します。 + +### DatePart 関数 + `DatePart` 関数は、`Interval` の値に応じて、複数の異なる正規関数のいずれかにマップされます。 サポートされている各 `Interval` 値に対応する正規関数のマッピングを次の表に示します。 + +|Interval 値|正規関数| +|----------------|----------| +|DateInterval.Year|Year\(\)| +|DateInterval.Month|Month\(\)| +|DateInterval.Day|Day\(\)| +|DateInterval.Hour|Hour\(\)| +|DateInterval.Minute|Minute\(\)| +|DateInterval.Second|Second\(\)| + +## 数学関数のマッピング + +|CLR メソッド|正規関数| +|--------------|----------| +|System.Decimal.Ceiling\(Decimal `d`\)|Ceiling\(`d`\)| +|System.Decimal.Floor\(Decimal `d`\)|Floor\(`d`\)| +|System.Decimal.Round\(Decimal `d`\)|Round\(`d`\)| +|System.Math.Ceiling\(Decimal `d`\)|Ceiling\(`d`\)| +|System.Math.Floor\(Decimal `d`\)|Floor\(`d`\)| +|System.Math.Round\(Decimal `d`\)|Round\(`d`\)| +|System.Math.Ceiling\(Double `a`\)|Ceiling\(`a`\)| +|System.Math.Floor\(Double `a`\)|Floor\(`a`\)| +|System.Math.Round\(Double `a`\)|Round\(`a`\)| +|System.Math.Round\(Double value, Int16 digits\)|Round\(value, digits\)| +|System.Math.Round\(Double value, Int32 digits\)|Round\(value, digits\)| +|System.Math.Round\(Decimal value, Int16 digits\)|Round\(value, digits\)| +|System.Math.Round\(Decimal value, Int32, digits\)|Round\(value, digits\)| +|System.Math.Abs\(Int16 value\)|Abs\(value\)| +|System.Math.Abs\(Int32 value\)|Abs\(value\)| +|System.Math.Abs\(Int64 value\)|Abs\(value\)| +|System.Math.Abs\(Byte value\)|Abs\(value\)| +|System.Math.Abs\(Single value\)|Abs\(value\)| +|System.Math.Abs\(Double value\)|Abs\(value\)| +|System.Math.Abs\(Decimal value\)|Abs\(value\)| +|System.Math.Truncate\(Double value, Int16 digits\)|Truncate\(value, digits\)| +|System.Math.Truncate\(Double value, Int32 digits\)|Truncate\(value, digits\)| +|System.Math.Truncate\(Decimal value, Int16 digits\)|Truncate\(value, digits\)| +|System.Math.Truncate\(Decimal value, Int32 digits\)|Truncate\(value, digits\)| +|System.Math.Power\(Int32 value, Int64 exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Int32 value, Double exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Int32 value, Decimal exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Int64 value, Int64 exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Int64 value, Double exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Int64 value, Decimal exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Double value, Int64 exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Double value, Double exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Double value, Decimal exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Decimal value, Int64 exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Decimal value, Double exponent\)|Power\(value, exponent\)| +|System.Math.Power\(Decimal value, Decimal exponent\)|Power\(value, exponent\)| + +## ビット演算子のマッピング + +|ビット演算子|非ブール型のオペランドの正規関数|ブール型のオペランドの正規関数| +|------------|----------------------|---------------------| +|ビット演算子 AND|BitWiseAnd|op1 AND op2| +|ビット演算子 OR|BitWiseOr|op1 OR op2| +|ビット演算子 NOT|BitWiseNot|NOT\(op\)| +|ビット演算子 XOR|BitWiseXor|\(\(op1 AND NOT\(op2\)\) OR \(NOT\(op1\) AND op2\)\)| + +## その他のマッピング + +|メソッド|正規関数| +|----------|----------| +|Guid.NewGuid\(\)|NewGuid\(\)| + +## 参照 + [LINQ to Entities](../../../../../../docs/framework/data/adonet/ef/language-reference/linq-to-entities.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/collection-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/collection-entity-sql.md new file mode 100644 index 00000000000..8a8851cb0bc --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/collection-entity-sql.md @@ -0,0 +1,42 @@ +--- +title: "COLLECTION (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 03228bfa-be3a-4ccc-82f8-eee429f85cf1 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# COLLECTION (Entity SQL) +COLLECTION キーワードは、インライン関数を定義する場合にのみ使用します。 コレクション関数は、値のコレクションを操作してスカラー出力を生成する関数です。 + +## 構文 + +``` + +COLLECTION(type_definition) +``` + +## 引数 + `type_definition` + サポートされる型、行、または参照のコレクションを返す式。 + +## 解説 + COLLECTION キーワードについて詳しくは、「[型定義](../../../../../../docs/framework/data/adonet/ef/language-reference/type-definitions-entity-sql.md)」をご覧ください。 + +## 使用例 + 次の例は、COLLECTION キーワードを使用して 10 進数のコレクションをインライン クエリ関数の引数として宣言する方法を示します。 + + [!code-csharp[DP EntityServices Concepts 2#Collection_GroupPartition](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#collection_grouppartition)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/comment-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/comment-entity-sql.md new file mode 100644 index 00000000000..7db33e270fc --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/comment-entity-sql.md @@ -0,0 +1,48 @@ +--- +title: "-- (コメント) (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 5d9de735-2099-47f1-b7e7-60856f494924 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# -- (コメント) (Entity SQL) +[!INCLUDE[esql](../../../../../../includes/esql-md.md)] クエリには、コメントを含めることができます。 コメント行の先頭には、2 個のダッシュ \(`--`\) を付けます。 + +## 構文 + +``` + +-- text_of_comment +``` + +## 引数 + `text_of_comment` + コメントのテキストを表す文字列です。 + +## 使用例 + 次の Entity SQL クエリは、コメントの使い方を示しています。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#COMMENT](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#comment)] + +## 参照 + [Entity SQL の概要](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md) + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/comparison-expressions.md b/docs/framework/data/adonet/ef/language-reference/comparison-expressions.md new file mode 100644 index 00000000000..99fbc78c5bc --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/comparison-expressions.md @@ -0,0 +1,65 @@ +--- +title: "比較式 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: ec7637a9-01d5-4a95-8bb0-478311cd263b +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 比較式 +比較式は、定数値、プロパティ値、またはメソッドの結果と別の値を比較して、両者が等しいかどうか、または一方の値がもう一方の値より大きい \(小さい\) かどうかを調べます。 特定の比較が [!INCLUDE[linq_entities](../../../../../../includes/linq-entities-md.md)] に対して無効な場合は、例外がスローされます。 暗黙的および明示的な比較を行う場合は、データ ソース内のすべてのコンポーネントが比較可能である必要があります。 比較式は、クエリ結果を絞り込むために `Where` 句で頻繁に使用されます。 + + 次のクエリ式の構文の例は、販売注文番号が "SO43663" である結果を返すクエリを示しています。 + + [!code-csharp[DP L2E Conceptual Examples#RestrictionExpression](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#restrictionexpression)] + [!code-vb[DP L2E Conceptual Examples#RestrictionExpression](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#restrictionexpression)] + + 次のメソッド ベースのクエリ構文の例は、販売注文番号が "SO43663" である結果を返すクエリを示しています。 + + [!code-csharp[DP L2E Conceptual Examples#RestrictionExpression_MQ](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#restrictionexpression_mq)] + [!code-vb[DP L2E Conceptual Examples#RestrictionExpression_MQ](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#restrictionexpression_mq)] + + 次のクエリ式の構文の例は、出荷日が 2001 年 7 月 8 日である販売注文情報を返すクエリを示しています。 + + [!code-csharp[DP L2E Conceptual Examples#DateTimeComparison](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#datetimecomparison)] + [!code-vb[DP L2E Conceptual Examples#DateTimeComparison](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#datetimecomparison)] + + 次のメソッド ベースのクエリ構文の例は、出荷日が 2001 年 7 月 8 日である販売注文情報を返すクエリを示しています。 + + [!code-csharp[DP L2E Conceptual Examples#DateTimeComparison_MQ](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#datetimecomparison_mq)] + [!code-vb[DP L2E Conceptual Examples#DateTimeComparison_MQ](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#datetimecomparison_mq)] + + 定数を返す式はサーバーで変換されます。そのため、ローカルで評価されることはありません。 次の例では、定数を返す式を `Where` 句で使用しています。 + + [!code-csharp[DP L2E Conceptual Examples#ConstantExpression](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#constantexpression)] + [!code-vb[DP L2E Conceptual Examples#ConstantExpression](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#constantexpression)] + + [!INCLUDE[linq_entities](../../../../../../includes/linq-entities-md.md)] では、ユーザー クラスを定数として使用することはできません。 ただし、ユーザー クラスのプロパティ参照は定数と見なされます。そのため、コマンド ツリーの定数式に変換され、データ ソースで実行されます。 + + [!code-csharp[DP L2E Conceptual Examples#MyClass](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#myclass)] + [!code-vb[DP L2E Conceptual Examples#MyClass](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#myclass)] + + [!code-csharp[DP L2E Conceptual Examples#PropertyAsConstant](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#propertyasconstant)] + [!code-vb[DP L2E Conceptual Examples#PropertyAsConstant](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#propertyasconstant)] + + 定数式を返すメソッドはサポートされません。 次の例の `Where` 句には、定数を返すメソッドが含まれています。 この例を実行すると、例外がスローされます。 + + [!code-csharp[DP L2E Conceptual Examples#MethodAsConstantFails](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#methodasconstantfails)] + [!code-vb[DP L2E Conceptual Examples#MethodAsConstantFails](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#methodasconstantfails)] + +## 参照 + [LINQ to Entities クエリ内の式](../../../../../../docs/framework/data/adonet/ef/language-reference/expressions-in-linq-to-entities-queries.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/comparison-semantics-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/comparison-semantics-entity-sql.md new file mode 100644 index 00000000000..5e259c98ebb --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/comparison-semantics-entity-sql.md @@ -0,0 +1,118 @@ +--- +title: "比較セマンティクス (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: b36ce28a-2fe4-4236-b782-e5f7c054deae +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 比較セマンティクス (Entity SQL) +次のいずれかの [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 演算子を実行すると、型インスタンスの比較が行われます。 + +## 明示的な比較 + 等価演算 + +- \= + +- \!\= + + 順序付け操作 + +- \< + +- \<\= + +- \> + +- \>\= + + NULL 値が許容される操作 + +- IS\_NULL + +- IS NOT NULL + +## 明示的な区別 + 等価区別 + +- DISTINCT + +- GROUP BY + + 順序付け区別 + +- ORDER BY + +## 暗黙的な区別 + 設定操作および述語 \(等価\) + +- UNION + +- INTERSECT + +- EXCEPT + +- SET + +- OVERLAPS + + 項目述語 \(等価\) + +- IN + +## サポートされている組み合わせ + 次の表は、各種類の型の比較演算子のサポートされているすべての組み合わせを示します。 + +||||||||| +|-|-|-|-|-|-|-|-| +|**種類**|**\=**

**\!\=**|**GROUP BY**

**DISTINCT**|**UNION**

**INTERSECT**

**EXCEPT**

**SET**

**OVERLAPS**|**IN**|**\< \<\=**

**\> \>\=**|**ORDER BY**|**IS\_NULL**

**IS NOT NULL**| +|エンティティ型|参照1|すべてのプロパティ2|すべてのプロパティ2|すべてのプロパティ2|スロー3|スロー3|参照1| +|複合型|スロー3|スロー3|スロー3|スロー3|スロー3|スロー3|スロー3| +|行|すべてのプロパティ4|すべてのプロパティ4|すべてのプロパティ4|スロー3|スロー3|すべてのプロパティ4|スロー3| +|プリミティブ型|プロバイダー固有|プロバイダー固有|プロバイダー固有|プロバイダー固有|プロバイダー固有|プロバイダー固有|プロバイダー固有| +|マルチセット|スロー3|スロー3|スロー3|スロー3|スロー3|スロー3|スロー3| +|参照|○5|○5|○5|○5|Throw|Throw|○5| +|関連付け

型|スロー3|Throw|Throw|Throw|スロー3|スロー3|スロー3| + + 1次の例に示すように、エンティティ型インスタンスの参照は暗黙的に比較されます。 + +``` +SELECT p1, p2 +FROM AdventureWorksEntities.Product AS p1 + JOIN AdventureWorksEntities.Product AS p2 +WHERE p1 != p2 OR p1 IS NULL +``` + + エンティティ インスタンスは、明示的な参照に対して比較できません。 明示的な参照に対する比較を行った場合は、例外がスローされます。 たとえば、次のクエリを実行すると、例外がスローされます。 + +``` +SELECT p1, p2 +FROM AdventureWorksEntities.Product AS p1 + JOIN AdventureWorksEntities.Product AS p2 +WHERE p1 != REF(p2) +``` + + 2複合型のプロパティは、ストアに送信される前にフラット化されるので、比較が可能になります \(すべてのプロパティが比較可能である場合\)。 4 も参照してください。 + + 3Entity Framework ランタイムでは、サポートされていないケースが検出され、プロバイダー\/ストアは呼び出されずに、意味のある例外がスローされます。 + + 4すべてのプロパティの比較が試行されます。 比較不能な型のプロパティ \(text、ntext、image など\) がある場合、サーバー例外がスローされることがあります。 + + 5参照のすべての個々の要素 \(エンティティ セット名およびエンティティ型のすべてのキー プロパティを含む\) が比較されます。 + +## 参照 + [Entity SQL の概要](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/compiled-queries-linq-to-entities.md b/docs/framework/data/adonet/ef/language-reference/compiled-queries-linq-to-entities.md new file mode 100644 index 00000000000..7bff5cfd593 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/compiled-queries-linq-to-entities.md @@ -0,0 +1,82 @@ +--- +title: "コンパイル済みクエリ (LINQ to Entities) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 8025ba1d-29c7-4407-841b-d5a3bed40b7a +caps.latest.revision: 5 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 5 +--- +# コンパイル済みクエリ (LINQ to Entities) +似たような構造のクエリを Entity Framework で何度も実行するアプリケーションがある場合は、クエリを一度コンパイルし、異なるパラメーターを指定して複数回実行することで、パフォーマンスを改善できる場合がよくあります。 たとえば、アプリケーションで特定の市区町村に住む顧客をすべて取得する必要がある場合は、ユーザーが実行時にフォーム内で市区町村を指定します。 LINQ to Entities では、この目的のためにコンパイル済みクエリをサポートしています。 + + .NET Framework 4.5 以降では、LINQ クエリは自動的にキャッシュされます。 ただし、引き続きコンパイル済み LINQ クエリを使用して後続の実行でさらにコストを削減できます。コンパイル済みクエリは、自動的にキャッシュされる LINQ クエリよりも効率的である場合があります。 メモリ内コレクションへ `Enumerable.Contains` 演算子を追加する LINQ to Entities クエリは自動的にキャッシュされないことに注意してください。 またコンパイル済み LINQ クエリのメモリ内コレクションをパラメーターで表すことは許可されていません。 + + クラスは、クエリをコンパイルおよびキャッシュして、再利用できるようにします。 このクラスには、概念上、 の `Compile` メソッドとその複数のオーバーロードが存在します。 `Compile` メソッドを呼び出すと、コンパイル済みクエリを表す新しいデリゲートを作成できます。 およびパラメーター値が指定された `Compile` メソッドは、なんらかの結果 \( インスタンスなど\) をもたらすデリゲートを返します。 クエリは、初回実行時に 1 回だけコンパイルされます。 コンパイル時にクエリに対して設定したマージ オプションは、後から変更できません。 一度クエリがコンパイルされると、プリミティブ型のパラメーターを指定することしかできず、生成された SQL を変更するクエリの部分を置き換えることはできません。 詳細については、「[Entity Framework のマージ オプションおよびコンパイルされたクエリ](http://go.microsoft.com/fwlink/?LinkId=199591)」を参照してください。 + + の `Compile` メソッドによってコンパイルされる [!INCLUDE[linq_entities](../../../../../../includes/linq-entities-md.md)] クエリ式は、 などのジェネリック `Func` デリゲートのいずれかによって表されます。 クエリ式は、最大で、`ObjectContext` パラメーター、戻りパラメーター、および 16 個のクエリ パラメーターをカプセル化できます。 17 個以上のクエリ パラメーターが必要な場合は、クエリ パラメーターを表すプロパティを持つ構造体を作成できます。 次に、その構造体のプロパティを設定した後、それらのプロパティをクエリ式で使用できます。 + +## 例 + 次の例では、入力パラメーターとして を受け取り、合計支払額が $200.00 以上である一連の注文を返すクエリをコンパイルして呼び出します。 + + [!code-csharp[DP L2E Conceptual Examples#CompiledQuery2](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#compiledquery2)] + [!code-vb[DP L2E Conceptual Examples#CompiledQuery2](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#compiledquery2)] + +## 例 + 次の例では、 のインスタンスを返すクエリをコンパイルして呼び出します。 + + [!code-csharp[DP L2E Conceptual Examples#CompiledQuery1_MQ](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#compiledquery1_mq)] + [!code-vb[DP L2E Conceptual Examples#CompiledQuery1_MQ](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#compiledquery1_mq)] + +## 例 + 次の例では、製品の定価の平均を 値として返すクエリをコンパイルして呼び出します。 + + [!code-csharp[DP L2E Conceptual Examples#CompiledQuery3_MQ](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#compiledquery3_mq)] + [!code-vb[DP L2E Conceptual Examples#CompiledQuery3_MQ](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#compiledquery3_mq)] + +## 例 + 次の例では、入力パラメーターとして を受け取り、指定された文字列で電子メール アドレスが始まる `Contact` を返すクエリをコンパイルして呼び出します。 + + [!code-csharp[DP L2E Conceptual Examples#CompiledQuery4_MQ](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#compiledquery4_mq)] + [!code-vb[DP L2E Conceptual Examples#CompiledQuery4_MQ](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#compiledquery4_mq)] + +## 例 + 次の例では、入力パラメーターとして および を受け取り、注文日が 2003 年 3 月 8 日より遅く合計支払額が $300.00 未満である一連の注文を返すクエリをコンパイルして呼び出します。 + + [!code-csharp[DP L2E Conceptual Examples#CompiledQuery5](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#compiledquery5)] + [!code-vb[DP L2E Conceptual Examples#CompiledQuery5](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#compiledquery5)] + +## 例 + 次の例では、入力パラメーターとして を受け取り、注文日が 2004 年 3 月 8 日より遅い一連の注文を返すクエリをコンパイルして呼び出します。 このクエリは、注文情報を一連の匿名型として返します。 匿名型はコンパイラによって推論されるので、型パラメーターを の `Compile` メソッドに指定することはできず、型はクエリ自体で定義されます。 + + [!code-csharp[DP L2E Conceptual Examples#CompiledQuery6](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#compiledquery6)] + [!code-vb[DP L2E Conceptual Examples#CompiledQuery6](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#compiledquery6)] + +## 例 + 次の例では、入力パラメーターとしてユーザー定義の構造体を受け取り、一連の注文を返すクエリをコンパイルして呼び出します。 この構造体では開始日、終了日、合計支払額のクエリ パラメーターを定義しており、クエリは、2003 年 3 月 3 日から 3 月 8 日までに出荷された、合計支払額が $700.00 を超える注文を返します。 + + [!code-csharp[DP L2E Conceptual Examples#CompiledQuery7](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#compiledquery7)] + [!code-vb[DP L2E Conceptual Examples#CompiledQuery7](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#compiledquery7)] + + クエリ パラメーターを定義する構造体を次に示します。 + + [!code-csharp[DP L2E Conceptual Examples#MyParamsStruct](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#myparamsstruct)] + [!code-vb[DP L2E Conceptual Examples#MyParamsStruct](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#myparamsstruct)] + +## 参照 + [ADO.NET Entity Framework](../../../../../../docs/framework/data/adonet/ef/index.md) + [LINQ to Entities](../../../../../../docs/framework/data/adonet/ef/language-reference/linq-to-entities.md) + [Entity Framework のマージ オプションおよびコンパイルされたクエリ](http://go.microsoft.com/fwlink/?LinkId=199591) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/composing-nested-entity-sql-queries.md b/docs/framework/data/adonet/ef/language-reference/composing-nested-entity-sql-queries.md new file mode 100644 index 00000000000..f79f3b9c1dc --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/composing-nested-entity-sql-queries.md @@ -0,0 +1,90 @@ +--- +title: "入れ子になった Entity SQL クエリの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 685d4cd3-2c1f-419f-bb46-c9d97a351eeb +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# 入れ子になった Entity SQL クエリの作成 +[!INCLUDE[esql](../../../../../../includes/esql-md.md)] は、機能の豊富な関数言語です。 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] の構成要素は式です。 従来の SQL と異なり、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] は表形式の結果セットに限定されていません。[!INCLUDE[esql](../../../../../../includes/esql-md.md)] では、リテラル、パラメーター、入れ子になった式などが含まれた複雑な式を作成できます。 式の値は、パラメーター化されている場合、つまり他の式で構成される場合があります。 + +## 入れ子になった式 + 入れ子になった式は、その式によって返される型の値が受け入れられる場所であればどこにでも配置できます。 次に例を示します。 + +``` +-- Returns a hierarchical collection of three elements at top-level. +-- x must be passed in the parameter collection. +ROW(@x, {@x}, {@x, 4, 5}, {@x, 7, 8, 9}) + +-- Returns a hierarchical collection of one element at top-level. +-- x must be passed in the parameter collection. +{{{@x}}}; +``` + + 入れ子になったクエリは、projection 句に配置できます。 次に例を示します。 + +``` +-- Returns a collection of rows where each row contains an Address entity. +-- and a collection of references to its corresponding SalesOrderHeader entities. +SELECT address, (SELECT DEREF(soh) + FROM NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS soh) + AS salesOrderHeader FROM AdventureWorksEntities.Address AS address +``` + + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] では、入れ子になったクエリを次のようにかっこで囲む必要があります。 + +``` +-- Pseudo-Entity SQL +( SELECT … +FROM … ) +UNION ALL +( SELECT … +FROM … ); +``` + + 「[How to: Order the Union of Two Queries](http://msdn.microsoft.com/ja-jp/853c583a-eaba-4400-830d-be974e735313)」の例では、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] で式を正しく入れ子にする方法を示します。 + +## 投影内の入れ子になったクエリ + project 句内の入れ子になったクエリは、サーバーでデカルト積に変換されないことがあります。 SLQ Server などの一部のバックエンド サーバーでは、これによって TempDB テーブルのサイズが非常に大きくなり、サーバーのパフォーマンスに悪影響を及ぼす場合があります。 + + 以下は、このようなクエリの例です。 + +``` +SELECT c, (SELECT c, (SELECT c FROM AdventureWorksModel.Vendor AS c ) As Inner2 FROM AdventureWorksModel.JobCandidate AS c ) As Inner1 FROM AdventureWorksModel.EmployeeDepartmentHistory AS c +``` + +## 入れ子になったクエリの順序 + Entity Framework では、入れ子になった式をクエリ内の任意の場所に配置できます。 Entity SQL ではクエリを柔軟に作成できるので、入れ子になったクエリの順序を含むクエリを記述できます。 ただし、入れ子になったクエリの順序は維持されません。 + +``` +-- The following query will order the results by last name. +SELECT C1.FirstName, C1.LastName + FROM AdventureWorksModel.Contact as C1 + ORDER BY C1.LastName +``` + +``` +-- In the following query, ordering of the nested query is ignored. +SELECT C2.FirstName, C2.LastName + FROM (SELECT C1.FirstName, C1.LastName + FROM AdventureWorksModel.Contact as C1 + ORDER BY C1.LastName) as C2 +``` + +## 参照 + [Entity SQL の概要](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/constant-expressions.md b/docs/framework/data/adonet/ef/language-reference/constant-expressions.md new file mode 100644 index 00000000000..48e4e0e6db8 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/constant-expressions.md @@ -0,0 +1,34 @@ +--- +title: "定数式 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 9d98a7be-b110-4edb-8eba-bed10f250b6d +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 定数式 +定数式は、定数値で構成されています。 定数値は、クライアント側で変換されることなく、コマンド ツリーの定数式に直接変換されます。 これには、定数値になる式が含まれます。 したがって、定数にかかわるすべての式でデータ ソースの動作が、予期したとおりになります。 これは CLR の動作とは異なる結果となります。 + + 次の例では、サーバーで評価される定数式を示します。 + + [!code-csharp[DP L2E Conceptual Examples#ConstantExpression](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#constantexpression)] + [!code-vb[DP L2E Conceptual Examples#ConstantExpression](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#constantexpression)] + + [!INCLUDE[linq_entities](../../../../../../includes/linq-entities-md.md)] では、ユーザー クラスを定数として使用することはできません。 ただし、ユーザー クラスのプロパティ参照は定数と見なされます。そのため、コマンド ツリーの定数式に変換され、データ ソースで実行されます。 + +## 参照 + [LINQ to Entities クエリ内の式](../../../../../../docs/framework/data/adonet/ef/language-reference/expressions-in-linq-to-entities-queries.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/constructing-types-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/constructing-types-entity-sql.md new file mode 100644 index 00000000000..82db8124af9 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/constructing-types-entity-sql.md @@ -0,0 +1,81 @@ +--- +title: "コンストラクター (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "ESQL" +ms.assetid: 41fa7bde-8d20-4a3f-a3d2-fb791e128010 +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# コンストラクター (Entity SQL) +[!INCLUDE[esql](../../../../../../includes/esql-md.md)] には、行コンストラクター、名前付きの型コンストラクター、およびコレクション コンストラクターの 3 種類のコンストラクターが用意されています。 + +## 行コンストラクター + 1 つまたは複数の値から構造的に型付けされた匿名レコードを構築するには、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の行コンストラクターを使用します。 行コンストラクターの結果の型は、行の構築に使用された値の型に対応するフィールド型を持つ行型です。 たとえば、次の式は `Record(a int, b string, c int)` 型の値を構築します。 + + `ROW(1 AS a, "abc" AS b, a + 34 AS c)` + + 行コンストラクターで式の別名が指定されていなければ、Entity Framework は別名の生成を試みます。 詳細については、「[識別子](../../../../../../docs/framework/data/adonet/ef/language-reference/identifiers-entity-sql.md)」の「別名の規則」を参照してください。 + + 次の規則は、行コンストラクターで別名を定義する式に適用されます。 + +- 行コンストラクターの式で同じコンストラクターの他の別名を参照することはできません。 + +- 同じ行コンストラクター内の 2 つの式に同じ別名を指定することはできません。 + + 行コンストラクターの詳細については、「[ROW](../../../../../../docs/framework/data/adonet/ef/language-reference/row-entity-sql.md)」を参照してください。 + +## コレクション コンストラクター + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] のコレクション コンストラクターを使用して、値のリストからマルチセットのインスタンスを作成します。 コンストラクターのすべての値は、相互に互換性のある型 `T` でなければなりません。また、コンストラクターは `Multiset` 型のコレクションを生成します。 たとえば、次の式は整数のコレクションを作成します。 + + `Multiset(1, 2, 3)` + + `{1, 2, 3}` + + 要素の型が確認できないため、空のマルチセット コンストラクターは使用できません。 次の式は無効です。 + + `multiset() {}` + + 詳細については、「[MULTISET](../../../../../../docs/framework/data/adonet/ef/language-reference/multiset-entity-sql.md)」を参照してください。 + +## 名前付きの型コンストラクター \(NamedType 初期化子\) + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] では、型コンストラクター \(初期化子\) を使用して、名前付きの複合型およびエンティティ型のインスタンスを作成できます。 たとえば、次の式は `Person` 型のインスタンスを作成します。 + + `Person("abc", 12)` + + 次の式は、複合型のインスタンスを作成する式です。 + + `MyModel.ZipCode(‘98118’, ‘4567’)` + + 次の式は、入れ子になった複合型のインスタンスを作成する式です。 + + `MyModel.AddressInfo('My street address', 'Seattle', 'WA', MyModel.ZipCode('98118', '4567'))` + + 次の式は、入れ子になった複合型を持つエンティティのインスタンスを作成する式です。 + + `MyModel.Person("Bill", MyModel.AddressInfo('My street address', 'Seattle', 'WA', MyModel.ZipCode('98118', '4567')))` + + 次の例は、複合型のプロパティを null に初期化する方法を示しています。 `MyModel.ZipCode(‘98118’, null)` + + コンストラクターに対する引数は、型の属性の宣言と同じ順序であると見なされます。 + + 詳細については、「[名前付きの型コンストラクター](../../../../../../docs/framework/data/adonet/ef/language-reference/named-type-constructor-entity-sql.md)」を参照してください。 + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [Entity SQL の概要](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md) + [型システム](../../../../../../docs/framework/data/adonet/ef/language-reference/type-system-entity-sql.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/createref-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/createref-entity-sql.md new file mode 100644 index 00000000000..4e43e6840a7 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/createref-entity-sql.md @@ -0,0 +1,63 @@ +--- +title: "CREATEREF (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 489828cf-a335-4449-9360-b0d92eec5481 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# CREATEREF (Entity SQL) +エンティティ セット内のエンティティへの参照を作成します。 + +## 構文 + +``` + +CreateRef(entityset_identifier, row_typed_expression) +``` + +## 引数 + `entityset_identifier` + エンティティ セット識別子。文字列リテラルは使用できません。 + + `row_typed_expression` + エンティティ型のキー プロパティに対応する行型の式。 + +## 解説 + `row_typed_expression` は、エンティティのキーの種類に構造的に同等である必要があります。 つまり、エンティティ キーのフィールドの数、型、および順序と一致している必要があります。 + + 次の例では、Orders と BadOrders は両方とも Order 型のエンティティ セットで、ID は Order の 1 つのキー プロパティであると見なされます。 この例は、BadOrders 内のエンティティへの参照を生成する方法を示しています。 参照は未解決の場合がある点に注意してください。 つまり、参照は実際には指定のエンティティを識別しない場合があります。 そのような場合、その参照に対して `DEREF` 操作を行うと、null が返されます。 + +``` +select CreateRef(LOB.BadOrders, row(o.Id)) +from LOB.Orders as o +``` + +## 使用例 + 次の Entity SQL クエリは、CREATEREF 演算子を使用してエンティティ セット内のエンティティへの参照を作成します。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#CREATEREF](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#createref)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [DEREF](../../../../../../docs/framework/data/adonet/ef/language-reference/deref-entity-sql.md) + [KEY](../../../../../../docs/framework/data/adonet/ef/language-reference/key-entity-sql.md) + [REF](../../../../../../docs/framework/data/adonet/ef/language-reference/ref-entity-sql.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/csdl-specification.md b/docs/framework/data/adonet/ef/language-reference/csdl-specification.md new file mode 100644 index 00000000000..15f19233026 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/csdl-specification.md @@ -0,0 +1,26 @@ +--- +title: "CSDL 仕様 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 6bb94c37-87da-447a-8dfd-83d1c4b5a2d2 +caps.latest.revision: 5 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 5 +--- +# CSDL 仕様 +現在、[msdn.microsoft.com\/data\/ef](http://msdn.microsoft.com/data/ef) サイトでは、主に Entity Framework に関するコンテンツを提供しています。 + + このトピックの内容は、「[CSDL 仕様](http://msdn.microsoft.com/data/jj652004)」ページでご利用いただけます。 \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/csdl-ssdl-and-msl-specifications.md b/docs/framework/data/adonet/ef/language-reference/csdl-ssdl-and-msl-specifications.md new file mode 100644 index 00000000000..80978c6c015 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/csdl-ssdl-and-msl-specifications.md @@ -0,0 +1,26 @@ +--- +title: "CSDL、SSDL、および MSL 仕様 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: bbdc9237-ff4c-4441-9565-31ebc29743e9 +caps.latest.revision: 5 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 5 +--- +# CSDL、SSDL、および MSL 仕様 +現在、[msdn.microsoft.com\/data\/ef](http://msdn.microsoft.com/data/ef) サイトでは、主に Entity Framework に関するコンテンツを提供しています。 + + このトピックの内容は、「[EDMX ファイル](http://msdn.microsoft.com/data/jj650889)」ページでご利用いただけます。 \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md b/docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md new file mode 100644 index 00000000000..a7051ae149f --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md @@ -0,0 +1,71 @@ +--- +title: "日付と時刻の正規関数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 9628b74f-1585-436a-b385-8b02ed0cdd63 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# 日付と時刻の正規関数 +[!INCLUDE[esql](../../../../../../includes/esql-md.md)] には、日付および時刻の正規関数が含まれます。 + +## 解説 + 次の表に、日付と時刻の [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数を示します。`datetime` は、 値です。 + +|関数|説明| +|--------|--------| +|`AddNanoseconds(` `expression`, `number``)`|指定されたナノ秒数を表す `number` を `expression` に追加します。

**引数**

`expression`、`DateTime`、`DateTimeOffset`、または `Time`。

`number`: `Int32`.

**戻り値**

`expression` の型。| +|`AddMicroseconds(` `expression`, `number``)`|指定されたマイクロ秒数を表す `number` を `expression` に追加します。

**引数**

`expression`、`DateTime`、`DateTimeOffset`、または `Time`。

`number`: `Int32`.

**戻り値**

`expression` の型。| +|`AddMilliseconds(` `expression`, `number``)`|指定されたミリ秒数を表す `number` を `expression` に追加します。

**引数**

`expression`、`DateTime`、`DateTimeOffset`、または `Time`。

`number`: `Int32`.

**戻り値**

`expression` の型。| +|`AddSeconds(` `expression`, `number``)`|指定された秒数を表す `number` を `expression` に追加します。

**引数**

`expression`、`DateTime`、`DateTimeOffset`、または `Time`。

`number`: `Int32`.

**戻り値**

`expression` の型。| +|`AddMinutes(` `expression`, `number``)`|指定された分数を表す `number` を `expression` に追加します。

**引数**

`expression`、`DateTime`、`DateTimeOffset`、または `Time`。

`number`: `Int32`.

**戻り値**

`expression` の型。| +|`AddHours(` `expression`, `number``)`|指定された時間数を表す `number` を `expression` に追加します。

**引数**

`expression`、`DateTime`、`DateTimeOffset`、または `Time`。

`number`: `Int32`.

**戻り値**

`expression` の型。| +|`AddDays(` `expression`, `number``)`|指定された日数を表す `number` を `expression` に追加します。

**引数**

`expression`: `DateTime` または `DateTimeOffset`。

`number`: `Int32`.

**戻り値**

`expression` の型。| +|`AddMonths(` `expression`, `number``)`|指定された月数を表す `number` を `expression` に追加します。

**引数**

`expression`: `DateTime` または `DateTimeOffset`。

`number`: `Int32`.

**戻り値**

`expression` の型。| +|`AddYears(` `expression`, `number``)`|指定された年数を表す `number` を `expression` に追加します。

**引数**

`expression`: `DateTime` または `DateTimeOffset`。

`number`: `Int32`.

**戻り値**

`expression` の型。| +|`CreateDateTime(` `year`, `month`, `day`, `hour`, `minute`, `second``)`|サーバーのタイム ゾーンでのサーバーの現在の日時として新しい `DateTime` 値を返します。

**引数**

`year`、`month`、`day`、`hour`、`minute`: `Int16` および `Int32`。

`second`: `Double`.

**戻り値**

`DateTime`| +|`CreateDateTimeOffset(` `year`, `month`, `day`, `hour`, `minute`, `second`, `tzoffset``)`|世界協定時刻 \(UTC\) を基準としたサーバーの現在の日時として新しい `DateTimeOffset` 値を返します。

**引数**

`year`, `month`, `day`, `hour`, `minute`, `tzoffset`: `Int32`.

`second`: `Double`.

**戻り値**

`DateTimeOffset`| +|`CreateTime(` `hour`, `minute`, `second``)`|現在の時刻として新しい `Time` 値を返します。

**引数**

`hour` および `minute`: `Int32`。

`second`: `Double`.

**戻り値**

`Time`| +|`CurrentDateTime()`|サーバーのタイム ゾーンでのサーバーの現在の日時として `DateTime` 値を返します。

**戻り値**

`DateTime`| +|`CurrentDateTimeOffset()`|現在の日付、時刻、およびオフセットを `DateTimeOffset` として返します。

**戻り値**

`DateTimeOffset`| +|`CurrentUtcDateTime()`|UTS タイム ゾーンでのサーバーの現在の日時として 値を返します。

**戻り値**

`DateTime`| +|`Day(` `expression` `)`|1 ~ 31 の間の `Int32` として `expression` の日付の部分を返します。

**引数**

`DateTime` および `DateTimeOffset`。

**戻り値**

`Int32`。

**例**

`-- The following example returns 12.`

`Day(cast('03/12/1998' as DateTime))`| +|`DayOfYear(` `expression` `)`|`expression` の日付の部分を 1 ~ 366 の間の `Int32` として返します。366 はうるう年の最後の日に対して返されます。

**引数**

`DateTime` または `DateTimeOffset`。

**戻り値**

`Int32`。| +|`DiffNanoseconds(` `startExpression`, `endExpression``)`|`startExpression` と `endExpression` の差をナノ秒単位で返します。

**引数**

`startExpression`、`endExpression`: `DateTime`、`DateTimeOffset`、または `Time`。 **Note:** `startExpression` と `endExpression` は、同じ型である必要があります。

**戻り値**

`Int32`。| +|`DiffMilliseconds(` `startExpression`, `endExpression``)`|`startExpression` と `endExpression` の差をミリ秒単位で返します。

**引数**

`startExpression`、`endExpression`: `DateTime`、`DateTimeOffset`、または `Time`。 **Note:** `startExpression` と `endExpression` は、同じ型である必要があります。

**戻り値**

`Int32`。| +|`DiffMicroseconds(` `startExpression`, `endExpression``)`|`startExpression` と `endExpression` の差をマイクロ秒単位で返します。

**引数**

`startExpression`、`endExpression`: `DateTime`、`DateTimeOffset`、または `Time`。 **Note:** `startExpression` と `endExpression` は、同じ型である必要があります。

**戻り値**

`Int32`。| +|`DiffSeconds(` `startExpression`, `endExpression``)`|`startExpression` と `endExpression` の差を秒単位で返します。

**引数**

`startExpression`、`endExpression`: `DateTime`、`DateTimeOffset`、または `Time`。 **Note:** `startExpression` と `endExpression` は、同じ型である必要があります。

**戻り値**

`Int32`。| +|`DiffMinutes(` `startExpression`, `endExpression``)`|`startExpression` と `endExpression` の差を分単位で返します。

**引数**

`startExpression`、`endExpression`: `DateTime`、`DateTimeOffset`、または `Time`。 **Note:** `startExpression` と `endExpression` は、同じ型である必要があります。

**戻り値**

`Int32`。| +|`DiffHours(` `startExpression`, `endExpression``)`|`startExpression` と `endExpression` の差を時間単位で返します。

**引数**

`startExpression`、`endExpression`: `DateTime`、`DateTimeOffset`、または `Time`。 **Note:** `startExpression` と `endExpression` は、同じ型である必要があります。

**戻り値**

`Int32`。| +|`DiffDays(` `startExpression`, `endExpression``)`|`startExpression` と `endExpression` の差を日単位で返します。

**引数**

`startExpression`、`endExpression`: `DateTime` または `DateTimeOffset`。 **Note:** `startExpression` と `endExpression` は、同じ型である必要があります。

**戻り値**

`Int32`。| +|`DiffMonths(` `startExpression`, `endExpression``)`|`startExpression` と `endExpression` の差を月単位で返します。

**引数**

`startExpression`、`endExpression`: `DateTime` または `DateTimeOffset`。 **Note:** `startExpression` と `endExpression` は、同じ型である必要があります。

**戻り値**

`Int32`。| +|`DiffYears(` `startExpression`, `endExpression``)`|`startExpression` と `endExpression` の差を年単位で返します。

**引数**

`startExpression`、`endExpression`: `DateTime` または `DateTimeOffset`。 **Note:** `startExpression` と `endExpression` は、同じ型である必要があります。

**戻り値**

`Int32`。| +|`GetTotalOffsetMinutes(` `datetimeoffset` `)`|GMT からのオフセット `datetimeoffset` \(分数\) を返します。 この値は通常、\+780 ~ \-780 \(\+ 13 時間~ \- 13 時間\) の間になります。 **Note:** この関数は、SQL Server 2008 でのみサポートされます。

**引数**

`DateTimeOffset`

**戻り値**

`Int32`。| +|`Hour (` `expression` `)`|0 ~ 23 の間の `Int32` として `expression` の時間の部分を返します。

**引数**

`DateTime, Time` および `DateTimeOffset`。

**例**

`-- The following example returns 22.`

`Hour(cast('22:35:5' as DateTime))`| +|`Millisecond(` `expression` `)`|0 ~ 999 の間の `Int32` として `expression` のミリ秒の部分を返します。

**引数**

`DateTime, Time` および `DateTimeOffset`。

**戻り値**

`Int32`。| +|`Minute(` `expression` `)`|0 ~ 59 の間の `Int32` として `expression` の分の部分を返します。

**引数**

`DateTime, Time` または `DateTimeOffset`。

**戻り値**

`Int32`。

**例**

`-- The following example returns 35`

`Minute(cast('22:35:5' as DateTime))`| +|`Month` `(``expression``)`|1 ~ 12 の間の `Int32` として `expression` の月の部分を返します。

**引数**

`DateTime` または `DateTimeOffset`。

**戻り値**

`Int32`。

**例**

`-- The following example returns 3.`

`Month(cast('03/12/1998' as DateTime))`| +|`Second(` `expression` `)`|0 ~ 59 の間の `Int32` として `expression` の秒の部分を返します。

**引数**

`DateTime, Time` および `DateTimeOffset`。

**戻り値**

`Int32`。

**例**

`-- The following example returns 5`

`Second(cast('22:35:5' as DateTime))`| +|`TruncateTime(` `expression` `)`|時間の値が切り捨てられた `expression` を返します。

**引数**

`DateTime` または `DateTimeOffset`。

**戻り値**

`expression` の型。| +|`Year(` `expression` `)`|`Int32` `YYYY` として `expression` の年の部分を返します。

**引数**

`DateTime` および `DateTimeOffset`。

**戻り値**

`Int32`。

**例**

`-- The following example returns 1998.`

`Year(cast('03/12/1998' as DateTime))`| + + `null` が入力された場合、これらの関数は `null` を返します。 + + 同等の機能は、Microsoft SQL クライアント マネージ プロバイダーでも利用できます。 詳細については、「[Entity Framework 用 SqlClient 関数](../../../../../../docs/framework/data/adonet/ef/sqlclient-for-ef-functions.md)」を参照してください。 + +## 参照 + [正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/canonical-functions.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/deref-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/deref-entity-sql.md new file mode 100644 index 00000000000..bbe83deec50 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/deref-entity-sql.md @@ -0,0 +1,57 @@ +--- +title: "DEREF (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 4c78e833-b260-453d-9bf4-eb39857dd0fa +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# DEREF (Entity SQL) +参照値を逆参照し、その逆参照の結果を生成します。 + +## 構文 + +``` + +SELECT DEREF ( o.expression) from Table as o; +``` + +## 引数 + `expression` + コレクションを返す任意の有効なクエリ式。 + +## 戻り値 + 参照されるエンティティの値。 + +## 解説 + DEREF 演算子は参照値を逆参照し、その逆参照の結果を生成します。 たとえば、 `r` が ref\ 型の参照である場合、 `Deref` `(r)` は `r` によって参照されるエンティティを生成する `T` 型の式です。 参照値が null または未解決 \(つまり、参照先が存在しない\) の場合、DEREF 演算子の結果は null になります。 + +## 使用例 + 次の [!INCLUDE[esql](../../../../../../includes/esql-md.md)] クエリでは、DEREF 演算子を使用して参照値を逆参照し、その逆参照の結果を生成します。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[PrimitiveType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-primitivetype-results.md)」の手順に従います。 + +2. 次のクエリを引数として ExecutePrimitiveTypeQuery メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#DEREF](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#deref)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [REF](../../../../../../docs/framework/data/adonet/ef/language-reference/ref-entity-sql.md) + [CREATEREF](../../../../../../docs/framework/data/adonet/ef/language-reference/createref-entity-sql.md) + [KEY](../../../../../../docs/framework/data/adonet/ef/language-reference/key-entity-sql.md) + [NULL 値が許容される構造化型](../../../../../../docs/framework/data/adonet/ef/language-reference/nullable-structured-types-entity-sql.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/divide-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/divide-entity-sql.md new file mode 100644 index 00000000000..398fb598f94 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/divide-entity-sql.md @@ -0,0 +1,56 @@ +--- +title: "/ (除算) (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: ef48c368-f3ed-4275-8ada-4e9649781262 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# / (除算) (Entity SQL) +1 つの値を別の値で除算します。 + +## 構文 + +``` + +dividend +/ +divisor + +``` + +## 引数 + `dividend` + 除算する数値式。`dividend` は、任意の数値データ型の有効な式です。 + + `divisor` + 被除数を除算する数値式。`divisor` は、任意の数値データ型の有効な式です。 + +## 戻り値の型 + 2 つの引数の暗黙の型の昇格の結果であるデータ型。 暗黙の型の昇格について詳しくは、「[型システム](../../../../../../docs/framework/data/adonet/ef/language-reference/type-system-entity-sql.md)」をご覧ください。 + +## 使用例 + 次の Entity SQL クエリでは、\/ 算術演算子を使用して 2 つの数値の間で除算をします。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#DIVIDE](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#divide)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/entity-sql-language.md b/docs/framework/data/adonet/ef/language-reference/entity-sql-language.md new file mode 100644 index 00000000000..7a78220f3c3 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/entity-sql-language.md @@ -0,0 +1,95 @@ +--- +title: "Entity SQL 言語 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 9e7d8837-28c5-429d-a824-7bafb59724cf +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# Entity SQL 言語 +Entity SQL は、ストレージに依存しない SQL と似たクエリ言語です。 Entity SQL を使用すると、オブジェクトとして、または表形式でエンティティ データに対してクエリを実行できます。 次の場合には Entity SQL の使用を検討してください。 + +- クエリを実行時に動的に作成する必要がある場合。 その場合、実行時に Entity SQL クエリ文字列を作成する代わりに、 のクエリ ビルダー メソッドを使用することも検討してください。 + +- モデル定義の一部としてクエリを定義する場合。 データ モデルでは Entity SQL のみがサポートされます。 詳細については、「[QueryView Element \(MSL\)](http://msdn.microsoft.com/ja-jp/f0426b34-45cb-4fd7-9777-e0570c5e0e80)」を参照してください。 + +- EntityClient で を使用して行セットとして読み取り専用エンティティ データを返す場合。 詳細については、「[Entity Framework 用の EntityClient プロバイダー](../../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md)」を参照してください。 + +- SQL ベースのクエリ言語に詳しい場合、Entity SQL の使用が最も適切に思われるでしょう。 + +## Entity SQL と EntityClient プロバイダーの使用 + Entity SQL を EntityClient プロバイダーと一緒に使用する際の詳細については、次のトピックを参照してください。 + + [Entity Framework 用の EntityClient プロバイダー](../../../../../../docs/framework/data/adonet/ef/entityclient-provider-for-the-entity-framework.md) + + [EntityConnection の接続文字列を作成する方法](../../../../../../docs/framework/data/adonet/ef/how-to-build-an-entityconnection-connection-string.md) + + [PrimitiveType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-primitivetype-results.md) + + [StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md) + + [RefType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-reftype-results.md) + + [複合型を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-complex-types.md) + + [入れ子になったコレクションを返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-nested-collections.md) + + [EntityCommand を使用してパラメーター化 Entity SQL クエリを実行する方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-parameterized-entity-sql-query-using-entitycommand.md) + + [EntityCommand を使用してパラメーター化されたストアド プロシージャを実行する方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-parameterized-stored-procedure-using-entitycommand.md) + + [ポリモーフィック クエリを実行する方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-polymorphic-query.md) + + [Navigate 演算子でリレーションシップをナビゲートする方法](../../../../../../docs/framework/data/adonet/ef/how-to-navigate-relationships-with-the-navigate-operator.md) + +## Entity SQL とオブジェクト クエリの使用 + Entity SQL をオブジェクト クエリと一緒に使用する際の詳細については、次のトピックを参照してください。 + + [How to: Execute a Query that Returns Entity Type Objects](http://msdn.microsoft.com/ja-jp/f73e137d-1534-42bb-9e31-99ca42c19b48) + + [How to: Execute a Parameterized Query](http://msdn.microsoft.com/ja-jp/42048f03-c65c-4d98-b50a-3e7d537a63e8) + + [How to: Navigate Relationships Using Navigation Properties](http://msdn.microsoft.com/ja-jp/b1d71c7d-16a7-4b46-96ac-690176bd5057) + + [How to: Call a User\-Defined Function](http://msdn.microsoft.com/ja-jp/ad131b86-8b4e-4747-8605-d4fc64fb9d02) + + [How to: Filter Data](http://msdn.microsoft.com/ja-jp/776f8556-3350-4572-804a-b1513515c1b2) + + [How to: Sort Data](http://msdn.microsoft.com/ja-jp/c05f2506-cb9d-4ebc-822b-300042ad53e7) + + [How to: Group Data](http://msdn.microsoft.com/ja-jp/df801d9d-9a8a-4157-97a6-5016b18998e1) + + [How to: Aggregate Data](http://msdn.microsoft.com/ja-jp/4cf04ce8-3c0f-4f88-9d97-8fac8622598d) + + [How to: Execute a Query that Returns Anonymous Type Objects](http://msdn.microsoft.com/ja-jp/3b264025-e911-4d73-90ce-992d2b9d189d) + + [How to: Execute a Query that Returns a Collection of Primitive Types](http://msdn.microsoft.com/ja-jp/115b52c0-4f27-4253-8991-284b450000b5) + + [How to: Query Related Objects in an EntityCollection](http://msdn.microsoft.com/ja-jp/11ce946f-16f8-4c1d-9d80-f740853807ba) + + [How to: Order the Union of Two Queries](http://msdn.microsoft.com/ja-jp/853c583a-eaba-4400-830d-be974e735313) + + [How to: Page Through Query Results](http://msdn.microsoft.com/ja-jp/ffc0f920-e7de-42e0-9b12-ef356421d030) + +## このセクションの内容 + [Entity SQL の概要](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md) + + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + +## 参照 + [ADO.NET Entity Framework](../../../../../../docs/framework/data/adonet/ef/index.md) + [言語リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/index.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md b/docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md new file mode 100644 index 00000000000..f869e0c53ba --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md @@ -0,0 +1,78 @@ +--- +title: "Entity SQL の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: f0bb8120-e709-40a3-ac1e-5520dc47477d +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Entity SQL の概要 +[!INCLUDE[esql](../../../../../../includes/esql-md.md)] は、[!INCLUDE[adonet_ef](../../../../../../includes/adonet-ef-md.md)] 内の概念モデルに対するクエリの実行に使用できる SQL に似た言語です。 概念モデルは、データをエンティティおよびリレーションシップとして表します。[!INCLUDE[esql](../../../../../../includes/esql-md.md)] を使用すると、SQL を使用したことのあるユーザーが慣れている形式でそれらのエンティティおよびリレーションシップに対してクエリを実行できます。 + + [!INCLUDE[adonet_ef](../../../../../../includes/adonet-ef-md.md)] は、ストレージ固有のデータ プロバイダーと連携し、汎用的な [!INCLUDE[esql](../../../../../../includes/esql-md.md)] をストレージ固有のクエリに変換します。 EntityClient プロバイダーには、エンティティ モデルに対して [!INCLUDE[esql](../../../../../../includes/esql-md.md)] コマンドを実行し、スカラー結果、結果セット、オブジェクト グラフなど、さまざまなデータ型を返すための手段が用意されています。 オブジェクトを構築する場合は、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] のクエリ文字列を プロパティに割り当てることで、ストアド プロシージャの名前またはクエリのテキストを指定できます。 EDM に対する の実行結果は、 によって公開されます。 を返すコマンドを実行するには、 を呼び出します。 + + EntityClient プロバイダーだけでなく [!INCLUDE[adonet_ef](../../../../../../includes/adonet-ef-md.md)] でも、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] を使用して概念モデルに対するクエリを実行し、エンティティ型のインスタンスである厳密に型指定された CLR オブジェクトとしてデータを返すことができます。 詳細については、「[オブジェクトの使用](../../../../../../docs/framework/data/adonet/ef/working-with-objects.md)」を参照してください。 + + ここでは、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の概念について説明します。 + +## このセクションの内容 + [Entity SQL と Transact\-SQL の相違点](../../../../../../docs/framework/data/adonet/ef/language-reference/how-entity-sql-differs-from-transact-sql.md) + + [Entity SQL クイック リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-quick-reference.md) + + [型システム](../../../../../../docs/framework/data/adonet/ef/language-reference/type-system-entity-sql.md) + + [型定義](../../../../../../docs/framework/data/adonet/ef/language-reference/type-definitions-entity-sql.md) + + [コンストラクター](../../../../../../docs/framework/data/adonet/ef/language-reference/constructing-types-entity-sql.md) + + [クエリ プランのキャッシュ](../../../../../../docs/framework/data/adonet/ef/language-reference/query-plan-caching-entity-sql.md) + + [名前空間](../../../../../../docs/framework/data/adonet/ef/language-reference/namespaces-entity-sql.md) + + [識別子](../../../../../../docs/framework/data/adonet/ef/language-reference/identifiers-entity-sql.md) + + [パラメーター](../../../../../../docs/framework/data/adonet/ef/language-reference/parameters-entity-sql.md) + + [変数](../../../../../../docs/framework/data/adonet/ef/language-reference/variables-entity-sql.md) + + [サポートされていない式](../../../../../../docs/framework/data/adonet/ef/language-reference/unsupported-expressions-entity-sql.md) + + [リテラル](../../../../../../docs/framework/data/adonet/ef/language-reference/literals-entity-sql.md) + + [NULL リテラルと型推論](../../../../../../docs/framework/data/adonet/ef/language-reference/null-literals-and-type-inference-entity-sql.md) + + [入力文字セット](../../../../../../docs/framework/data/adonet/ef/language-reference/input-character-set-entity-sql.md) + + [クエリ式](../../../../../../docs/framework/data/adonet/ef/language-reference/query-expressions-entity-sql.md) + + [関数](../../../../../../docs/framework/data/adonet/ef/language-reference/functions-entity-sql.md) + + [演算子の優先順位](../../../../../../docs/framework/data/adonet/ef/language-reference/operator-precedence-entity-sql.md) + + [ページング](../../../../../../docs/framework/data/adonet/ef/language-reference/paging-entity-sql.md) + + [比較セマンティクス](../../../../../../docs/framework/data/adonet/ef/language-reference/comparison-semantics-entity-sql.md) + + [入れ子になった Entity SQL クエリの作成](../../../../../../docs/framework/data/adonet/ef/language-reference/composing-nested-entity-sql-queries.md) + + [NULL 値が許容される構造化型](../../../../../../docs/framework/data/adonet/ef/language-reference/nullable-structured-types-entity-sql.md) + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [Entity SQL 言語](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-language.md) + [CSDL、SSDL、および MSL 仕様](../../../../../../docs/framework/data/adonet/ef/language-reference/csdl-ssdl-and-msl-specifications.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/entity-sql-quick-reference.md b/docs/framework/data/adonet/ef/language-reference/entity-sql-quick-reference.md new file mode 100644 index 00000000000..fdc00dd9fbb --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/entity-sql-quick-reference.md @@ -0,0 +1,378 @@ +--- +title: "Entity SQL クイック リファレンス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: e53dad9e-5e83-426e-abb4-be3e78e3d6dc +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Entity SQL クイック リファレンス +このトピックでは、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] クエリのクイック リファレンスを提供します。 このトピックのクエリでは、AdventureWorks Sales Model が使用されています。 + +## リテラル + +### String + Unicode と非 Unicode の文字列リテラルがあります。 Unicode 文字列には、 たとえば、`N'hello'` のようにします。 + + 非 Unicode 文字列リテラルの例を次に示します。 + +``` +'hello' +--same as +"hello" +``` + + Output: + +|値| +|-------| +|hello| + +### DateTime + DateTime リテラルでは、日付部分と時刻部分の両方が必須です。 既定値はありません。 + + 例: + +``` +DATETIME '2006-12-25 01:01:00.000' +--same as +DATETIME '2006-12-25 01:01' +``` + + Output: + +|値| +|-------| +|12\/25\/2006 1:01:00 AM| + +### 整数 + 整数リテラルには Int32 \(123\) 型、UInt32 \(123U\) 型、Int64 \(123L\) 型、および UInt64 \(123UL\) 型があります。 + + 例: + +``` +--a collection of integers +{1, 2, 3} +``` + + Output: + +|値| +|-------| +|1| +|2| +|3| + +### その他 + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] でサポートされているその他のリテラルは、Guid、Binary、Float\/Double、Decimal、および `null` です。 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] の NULL リテラルは、概念モデルのその他すべての型と互換性があると見なされます。 + +## 型コンストラクター + +### ROW + [ROW](../../../../../../docs/framework/data/adonet/ef/language-reference/row-entity-sql.md) は、構造的に型指定された匿名のレコード値を作成します。`ROW(1 AS myNumber, ‘Name’ AS myName).` + + 例: + +``` +SELECT VALUE row (product.ProductID as ProductID, product.Name + as ProductName) FROM AdventureWorksEntities.Product AS product +``` + + Output: + +|ProductID|名前| +|---------------|--------| +|1|Adjustable Race| +|879|All\-Purpose Bike Stand| +|712|AWC Logo Cap| +|...|...| + +### MULTISET + [MULTISET](../../../../../../docs/framework/data/adonet/ef/language-reference/multiset-entity-sql.md) は、次のようなコレクションを作成します。 + + `MULTISET(1,2,2,3)` `--same as`\-`{1,2,2,3}.` + + 例: + +``` +SELECT VALUE product FROM AdventureWorksEntities.Product AS product WHERE product.ListPrice IN MultiSet (125, 300) +``` + + Output: + +|ProductID|名前|ProductNumber|…| +|---------------|--------|-------------------|-------| +|842|Touring\-Panniers, Large|PA\-T100|…| + +### Object + [名前付きの型コンストラクター](../../../../../../docs/framework/data/adonet/ef/language-reference/named-type-constructor-entity-sql.md) は、`person("abc", 12)` のように、名前付きのユーザー定義オブジェクトを作成します。 + + 例: + +``` +SELECT VALUE AdventureWorksModel.SalesOrderDetail (o.SalesOrderDetailID, o.CarrierTrackingNumber, o.OrderQty, +o.ProductID, o.SpecialOfferID, o.UnitPrice, o.UnitPriceDiscount, +o.rowguid, o.ModifiedDate) FROM AdventureWorksEntities.SalesOrderDetail +AS o +``` + + Output: + +|SalesOrderDetailID|CarrierTrackingNumber|OrderQty|ProductID|...| +|------------------------|---------------------------|--------------|---------------|---------| +|1|4911\-403C\-98|1|776|...| +|2|4911\-403C\-98|3|777|...| +|...|...|...|...|...| + +## 参照 + +### REF + [REF](../../../../../../docs/framework/data/adonet/ef/language-reference/ref-entity-sql.md) は、エンティティ型のインスタンスへの参照を作成します。 たとえば、次のクエリは、Orders エンティティ セットの各 Order エンティティへの参照を返します。 + +``` +SELECT REF(o) AS OrderID FROM Orders AS o +``` + + Output: + +|値| +|-------| +|1| +|2| +|3| +|...| + + 次の例では、プロパティ抽出演算子 \(.\) を使用して、エンティティのプロパティにアクセスします。 プロパティ抽出演算子を使用すると、参照は自動的に逆参照されます。 + + 例: + +``` +SELECT VALUE REF(p).Name FROM + AdventureWorksEntities.Product as p +``` + + Output: + +|値| +|-------| +|Adjustable Race| +|All\-Purpose Bike Stand| +|AWC Logo Cap| +|...| + +### DEREF + [DEREF](../../../../../../docs/framework/data/adonet/ef/language-reference/deref-entity-sql.md) は参照値を逆参照し、その逆参照の結果を生成します。 たとえば、次のクエリは、`SELECT DEREF(o2.r) FROM (SELECT REF(o) AS r FROM LOB.Orders AS o) AS o2` のように、Orders エンティティ セットの各 Order について Order エンティティを生成します。 + + 例: + +``` +SELECT VALUE DEREF(REF(p)).Name FROM + AdventureWorksEntities.Product as p +``` + + Output: + +|値| +|-------| +|Adjustable Race| +|All\-Purpose Bike Stand| +|AWC Logo Cap| +|...| + +### CREATEREF と KEY + [CREATEREF](../../../../../../docs/framework/data/adonet/ef/language-reference/createref-entity-sql.md) は、キーを渡す参照を作成します。 [KEY](../../../../../../docs/framework/data/adonet/ef/language-reference/key-entity-sql.md) は、型参照を持つ式のキー部分を抽出します。 + + 例: + +``` +SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID))) + FROM AdventureWorksEntities.Product as p +``` + + Output: + +|ProductID| +|---------------| +|980| +|365| +|771| +|...| + +## 関数 + +### 正規 + [正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/canonical-functions.md)の名前空間は Edm で、`Edm.Length("string")` のように使用されます。 正規関数と同じ名前の関数を含んでいる別の名前空間がインポートされない限り、名前空間を指定する必要はありません。 2 つの名前空間に同じ関数が存在する場合は、完全な名前を指定する必要があります。 + + 例: + +``` +SELECT Length(c. FirstName) As NameLen FROM + AdventureWorksEntities.Contact AS c + WHERE c.ContactID BETWEEN 10 AND 12 +``` + + Output: + +|NameLen| +|-------------| +|6| +|6| +|5| + +### Microsoft プロバイダー固有 + [Microsoft プロバイダー固有の関数](../../../../../../docs/framework/data/adonet/ef/sqlclient-for-ef-functions.md)は、`SqlServer` 名前空間にあります。 + + 例: + +``` +SELECT SqlServer.LEN(c.EmailAddress) As EmailLen FROM + AdventureWorksEntities.Contact AS c WHERE + c.ContactID BETWEEN 10 AND 12 +``` + + Output: + +|EmailLen| +|--------------| +|27| +|27| +|26| + +## 名前空間 + [USING](../../../../../../docs/framework/data/adonet/ef/language-reference/using-entity-sql.md) は、クエリ式で使用する名前空間を指定します。 + + 例: + +``` +using SqlServer; LOWER('AA'); +``` + + Output: + +|値| +|-------| +|aa| + +## ページング + ページングは、[SKIP](../../../../../../docs/framework/data/adonet/ef/language-reference/skip-entity-sql.md) および [LIMIT](../../../../../../docs/framework/data/adonet/ef/language-reference/limit-entity-sql.md) サブ句を [ORDER BY](../../../../../../docs/framework/data/adonet/ef/language-reference/order-by-entity-sql.md) 句に宣言することによって表現できます。 + + 例: + +``` +SELECT c.ContactID as ID, c.LastName as Name FROM + AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3; +``` + + Output: + +|ID|名前| +|--------|--------| +|10|Adina| +|11|Agcaoili| +|12|Aguilar| + +## グループ化 + [GROUPING BY](../../../../../../docs/framework/data/adonet/ef/language-reference/group-by-entity-sql.md) は、クエリ \([SELECT](../../../../../../docs/framework/data/adonet/ef/language-reference/select-entity-sql.md)\) 式によって返されるオブジェクトをグループ化するよう指定します。 + + 例: + +``` +SELECT VALUE name FROM AdventureWorksEntities.Product as P + GROUP BY P.Name HAVING MAX(P.ListPrice) > 5 +``` + + Output: + +|name| +|----------| +|LL Mountain Seat Assembly| +|ML Mountain Seat Assembly| +|HL Mountain Seat Assembly| +|...| + +## ナビゲーション + リレーションシップ ナビゲーション操作を使用すると、開始側のエンティティと終了側のエンティティ間のリレーションシップをナビゲートできます。 [NAVIGATE](../../../../../../docs/framework/data/adonet/ef/language-reference/navigate-entity-sql.md) は、\.\ として修飾されるリレーションシップ型をとります。 終了側の基数が 1 の場合、Ref\ が返されます。 終端の基数が n の場合、Collection\\> が返されます。 + + 例: + +``` +SELECT a.AddressID, (SELECT VALUE DEREF(v) FROM + NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v) + FROM AdventureWorksEntities.Address AS a +``` + + Output: + +|AddressID| +|---------------| +|1| +|2| +|3| +|...| + +## SELECT VALUE AND SELECT + +### SELECT VALUE + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] には、暗黙の行の構築をスキップする SELECT VALUE 句が用意されています。 SELECT VALUE 句には 1 つの項目のみを指定できます。 このような句を使用した場合、SELECT 句内の項目には row ラッパーは構築されず、`SELECT VALUE a` などの目的の構造を持つコレクションを作成できます。 + + 例: + +``` +SELECT VALUE p.Name FROM AdventureWorksEntities.Product as p +``` + + Output: + +|名前| +|--------| +|Adjustable Race| +|All\-Purpose Bike Stand| +|AWC Logo Cap| +|...| + +### SELECT + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] には、任意の行を構築するための行コンストラクターも用意されています。 SELECT は、投影内の 1 つまたは複数の要素、および `SELECT a, b, c` などのフィールドを持つデータ レコードの結果を取得します。 + + 例: + + SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p Output: + +|名前|ProductID| +|--------|---------------| +|Adjustable Race|1| +|All\-Purpose Bike Stand|879| +|AWC Logo Cap|712| +|...|...| + +## CASE 式 + [CASE 式](../../../../../../docs/framework/data/adonet/ef/language-reference/case-entity-sql.md)は、一連のブール式を評価して結果を判定します。 + + 例: + +``` +CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END +``` + + Output: + +|値| +|-------| +|TRUE| + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [Entity SQL の概要](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md b/docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md new file mode 100644 index 00000000000..0600fda7553 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md @@ -0,0 +1,145 @@ +--- +title: "Entity SQL リファレンス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 61ce7ee1-ffe2-477d-8a9f-835b0a11d900 +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# Entity SQL リファレンス +このセクションには、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] リファレンス トピックがあります。このトピックでは、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の演算子について概要を説明し、カテゴリ別に分類しています。 + +## 算術演算子 + 算術演算子は、数値データ型が 1 つ以上含まれる 2 つの式の間で、数学的な操作を実行します。 次の表は、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の算術演算子の一覧です。 + +|演算子|用途| +|---------|--------| +|[\+ \(加算\)](../../../../../../docs/framework/data/adonet/ef/language-reference/add.md)|加算。| +|[\/ \(除算\)](../../../../../../docs/framework/data/adonet/ef/language-reference/divide-entity-sql.md)|除算。| +|[% \(剰余\)](../../../../../../docs/framework/data/adonet/ef/language-reference/modulo-entity-sql.md)|除算の剰余| +|[\* \(乗算\)](../../../../../../docs/framework/data/adonet/ef/language-reference/multiply-entity-sql.md)|乗算。| +|[\- \(負符号\)](../../../../../../docs/framework/data/adonet/ef/language-reference/negative-entity-sql.md)|否定| +|[\- \(減算\)](../../../../../../docs/framework/data/adonet/ef/language-reference/subtract-entity-sql.md)|減算。| + +## 正規関数 + 正規関数とは、すべてのデータ プロバイダーがサポートし、あらゆるクエリ テクノロジで使用できる関数です。 次の表に正規関数を示します。 + +|関数|種類| +|--------|--------| +|[集計 Entity SQL 正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/aggregate-canonical-functions.md)|集計 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数について説明します。| +|[数値演算正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/math-canonical-functions.md)|数学 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数について説明します。| +|[文字列正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/string-canonical-functions.md)|文字列 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数について説明します。| +|[日付と時刻の正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/date-and-time-canonical-functions.md)|日付および時刻の [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数について説明します。| +|[ビット単位の正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/bitwise-canonical-functions.md)|ビット単位の [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 正規関数について説明します。| +|[その他の正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/other-canonical-functions.md)|ビット単位、日付\/時刻、文字列、数学、または集計に分類されない関数について説明します。| + +## 比較演算子 + 比較演算子は、`Byte`、`Int16`、`Int32`、`Int64`、`Double`、`Single`、`Decimal`、`String`、`DateTime`、`Date`、`Time`、`DateTimeOffset` のデータ型に対して定義されます。 比較演算子が適用される前に、オペランドに対して暗黙の型の昇格が行われます。 比較演算子は常にブール値を取得します。 1 つ以上のオペランドが `null` である場合、結果は `null` になります。 + + 等価演算子および非等価演算子は、`Boolean` 型など、ID を持つオブジェクト型に対して定義されます。 ID を含む非プリミティブ オブジェクトは、同じ ID を共有している場合に等価と見なされます。 次の表は、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の比較演算子の一覧です。 + +|演算子|説明| +|---------|--------| +|[\= \(等しい\)](../../../../../../docs/framework/data/adonet/ef/language-reference/equals-entity-sql.md)|2 つの式の等価性を比較します。| +|[\> \(より大きい\)](../../../../../../docs/framework/data/adonet/ef/language-reference/greater-than-entity-sql.md)|2 つの式を比較して、左の式の値が右の式の値よりも大きいかどうかを判別します。| +|[\>\= \(以上\)](../../../../../../docs/framework/data/adonet/ef/language-reference/greater-than-or-equal-to-entity-sql.md)|2 つの式を比較して、左の式の値が右の式の値以上であるかどうかを判別します。| +|[IS [NOT] NULL](../../../../../../docs/framework/data/adonet/ef/language-reference/isnull-entity-sql.md)|クエリ式が NULL かどうかを調べます。| +|[\< \(より小さい\)](../../../../../../docs/framework/data/adonet/ef/language-reference/less-than-entity-sql.md)|2 つの式を比較して、左の式の値が右の式の値よりも小さいかどうかを判別します。| +|[\<\= \(以下\)](../../../../../../docs/framework/data/adonet/ef/language-reference/less-than-or-equal-to-entity-sql.md)|2 つの式を比較して、左の式の値が右の式の値以下であるかどうかを判別します。| +|[[NOT] BETWEEN](../../../../../../docs/framework/data/adonet/ef/language-reference/between-entity-sql.md)|式の結果が指定の範囲内の値になるかどうかを判断します。| +|[\!\= \(等しくない\)](../../../../../../docs/framework/data/adonet/ef/language-reference/not-equal-to-entity-sql.md)|2 つの式を比較して、左の式の値が右の式の値と等しくないかどうかを判別します。| +|[[NOT] LIKE](../../../../../../docs/framework/data/adonet/ef/language-reference/like-entity-sql.md)|指定された文字列が指定されたパターンと一致するかどうかを判断します。| + +## 論理演算子と CASE 式演算子 + 論理演算子は、条件の真偽をテストします。 CASE 式は、一連のブール式を評価して結果を判定します。 次の表に論理演算子と CASE 式演算子を示します。 + +|演算子|説明| +|---------|--------| +|[&& \(論理 AND\)](../../../../../../docs/framework/data/adonet/ef/language-reference/and-entity-sql.md)|論理 AND。| +|[\! \(論理 NOT\)](../../../../../../docs/framework/data/adonet/ef/language-reference/not-entity-sql.md)|論理 NOT。| +|[|| \(論理 OR\)](../../../../../../docs/framework/data/adonet/ef/language-reference/or-entity-sql.md)|論理 OR。| +|[CASE](../../../../../../docs/framework/data/adonet/ef/language-reference/case-entity-sql.md)|一連のブール式を評価して結果を決定します。| +|[THEN](../../../../../../docs/framework/data/adonet/ef/language-reference/then-entity-sql.md)|[WHEN](http://msdn.microsoft.com/ja-jp/6233fe9f-00b0-460e-8372-64e138a5f998) 句が true に評価された場合の結果です。| + +## クエリ演算子 + クエリ演算子は、エンティティ データを返すクエリ式を定義するために使用されます。 次の表にクエリ演算子を示します。 + +|演算子|用途| +|---------|--------| +|[FROM](../../../../../../docs/framework/data/adonet/ef/language-reference/from-entity-sql.md)|[SELECT](../../../../../../docs/framework/data/adonet/ef/language-reference/select-entity-sql.md) ステートメントで使用するコレクションを指定します。| +|[GROUP BY](../../../../../../docs/framework/data/adonet/ef/language-reference/group-by-entity-sql.md)|クエリ \([SELECT](../../../../../../docs/framework/data/adonet/ef/language-reference/select-entity-sql.md)\) 式によって返されるオブジェクトをグループ化するよう指定します。| +|[GroupPartition](../../../../../../docs/framework/data/adonet/ef/language-reference/grouppartition-entity-sql.md)|引数値のコレクションを返します。この値は、集計の関係先であるグループ パーティションから投影されたものです。| +|[HAVING](../../../../../../docs/framework/data/adonet/ef/language-reference/having-entity-sql.md)|グループまたは集計の検索条件を指定します。| +|[LIMIT](../../../../../../docs/framework/data/adonet/ef/language-reference/limit-entity-sql.md)|[ORDER BY](../../../../../../docs/framework/data/adonet/ef/language-reference/order-by-entity-sql.md) 句と共に使用されて、物理ページングを実行します。| +|[ORDER BY](../../../../../../docs/framework/data/adonet/ef/language-reference/order-by-entity-sql.md)|[SELECT](../../../../../../docs/framework/data/adonet/ef/language-reference/select-entity-sql.md) ステートメントで返されるオブジェクトで使用される並べ替え順を指定します。| +|[SELECT](../../../../../../docs/framework/data/adonet/ef/language-reference/select-entity-sql.md)|クエリによって返される投影の要素を指定します。| +|[SKIP](../../../../../../docs/framework/data/adonet/ef/language-reference/skip-entity-sql.md)|[ORDER BY](../../../../../../docs/framework/data/adonet/ef/language-reference/order-by-entity-sql.md) 句と共に使用されて、物理ページングを実行します。| +|[TOP](../../../../../../docs/framework/data/adonet/ef/language-reference/top-entity-sql.md)|クエリ結果の先頭から指定した行セットだけを返すよう指定します。| +|[WHERE](../../../../../../docs/framework/data/adonet/ef/language-reference/where-entity-sql.md)|クエリによって返されるデータを条件に基づいてフィルター処理します。| + +## リファレンス演算子 + リファレンスは、特定のエンティティ セットにある特定のエンティティへの論理ポインター \(外部キー\) です。 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] では、参照の構築、分解、およびナビゲートを行うための次の演算子がサポートされています。 + +|演算子|用途| +|---------|--------| +|[CREATEREF](../../../../../../docs/framework/data/adonet/ef/language-reference/createref-entity-sql.md)|エンティティ セット内のエンティティへの参照を作成します。| +|[DEREF](../../../../../../docs/framework/data/adonet/ef/language-reference/deref-entity-sql.md)|参照値を逆参照し、その逆参照の結果を生成します。| +|[KEY](../../../../../../docs/framework/data/adonet/ef/language-reference/key-entity-sql.md)|参照またはエンティティ式のキーを抽出します。| +|[NAVIGATE](../../../../../../docs/framework/data/adonet/ef/language-reference/navigate-entity-sql.md)|リレーションシップ内のエンティティ型間を移動するために使用します。| +|[REF](../../../../../../docs/framework/data/adonet/ef/language-reference/ref-entity-sql.md)|エンティティ インスタンスへの参照を返します。| + +## 集合演算子 + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] は各種の強力な集合演算機能を備えています。 これには、UNION、INTERSECT、EXCEPT、EXISTS などの Transact\-SQL  演算子に類似する集合演算子が含まれます。 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] では、重複排除 \(SET\)、メンバーシップのテスト \(IN\)、および結合 \(JOIN\) の演算子もサポートされています。 次の表に [!INCLUDE[esql](../../../../../../includes/esql-md.md)] の集合演算子を示します。 + +|演算子|用途| +|---------|--------| +|[ANYELEMENT](../../../../../../docs/framework/data/adonet/ef/language-reference/anyelement-entity-sql.md)|複数値のコレクションから要素を抽出します。| +|[EXCEPT](../../../../../../docs/framework/data/adonet/ef/language-reference/except-entity-sql.md)|EXCEPT オペランドの左辺のクエリ式から返される結果のうち、右辺のクエリ式でも返される結果を除いた、重複しない値のコレクションを返します。| +|[[NOT] EXISTS](../../../../../../docs/framework/data/adonet/ef/language-reference/exists-entity-sql.md)|コレクションが空かどうかを調べます。| +|[FLATTEN](../../../../../../docs/framework/data/adonet/ef/language-reference/flatten-entity-sql.md)|コレクションのコレクションをフラット化して単一のコレクションに変換します。| +|[[NOT] IN](../../../../../../docs/framework/data/adonet/ef/language-reference/in-entity-sql.md)|コレクション内に一致する値があるかどうかを調べます。| +|[INTERSECT](../../../../../../docs/framework/data/adonet/ef/language-reference/intersect-entity-sql.md)|INTERSECT オペランドの左右両方のクエリ式によって返される個別の値のコレクションを返します。| +|[OVERLAPS](../../../../../../docs/framework/data/adonet/ef/language-reference/overlaps-entity-sql.md)|2 つのコレクションに共通の要素が存在するかどうかを調べます。| +|[SET](../../../../../../docs/framework/data/adonet/ef/language-reference/set-entity-sql.md)|重複する要素をすべて除外した新しいコレクションを生成することによって、オブジェクトのコレクションを 1 つの集合に変換するために使用されます。| +|[UNION](../../../../../../docs/framework/data/adonet/ef/language-reference/union-entity-sql.md)|複数のクエリの結果を 1 つのコレクションに結合します。| + +## 型演算子 + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] では、式 \(値\) の型の構築、クエリの実行、および操作を実行できます。 次の表に型の操作に使用される演算子を示します。 + +|演算子|用途| +|---------|--------| +|[CAST](../../../../../../docs/framework/data/adonet/ef/language-reference/cast-entity-sql.md)|あるデータ型の式を別のデータ型に変換します。| +|[COLLECTION](../../../../../../docs/framework/data/adonet/ef/language-reference/collection-entity-sql.md)|[FUNCTION](../../../../../../docs/framework/data/adonet/ef/language-reference/function-entity-sql.md) 演算で使用され、エンティティ型または複合型のコレクションを宣言します。| +|[IS [NOT] OF](../../../../../../docs/framework/data/adonet/ef/language-reference/isof-entity-sql.md)|式の型が指定の型であるか、またはそのサブタイプであるかを判断します。| +|[OFTYPE](../../../../../../docs/framework/data/adonet/ef/language-reference/oftype-entity-sql.md)|クエリ式を使用して、指定された型のオブジェクトのコレクションを返します。| +|[名前付きの型コンストラクター](../../../../../../docs/framework/data/adonet/ef/language-reference/named-type-constructor-entity-sql.md)|エンティティ型または複合型のインスタンスの作成に使用されます。| +|[MULTISET](../../../../../../docs/framework/data/adonet/ef/language-reference/multiset-entity-sql.md)|値のリストからマルチセットのインスタンスを作成します。| +|[ROW](../../../../../../docs/framework/data/adonet/ef/language-reference/row-entity-sql.md)|1 つまたは複数の値から構造的に型付けされた匿名レコードを構築します。| +|[TREAT](../../../../../../docs/framework/data/adonet/ef/language-reference/treat-entity-sql.md)|特定の基本データ型のオブジェクトを指定の派生型のオブジェクトとして処理します。| + +## その他の演算子 + 次の表にその他の [!INCLUDE[esql](../../../../../../includes/esql-md.md)] 演算子を示します。 + +|演算子|用途| +|---------|--------| +|[\+ \(文字列連結\)](../../../../../../docs/framework/data/adonet/ef/language-reference/string-concatenation-entity-sql.md)|[!INCLUDE[esql](../../../../../../includes/esql-md.md)] で文字列を連結するために使用されます。| +|[. \(メンバー アクセス\)](../../../../../../docs/framework/data/adonet/ef/language-reference/member-access-entity-sql.md)|構造型概念モデル型のインスタンスのプロパティ値またはフィールド値にアクセスするために使用されます。| +|[\-\- \(コメント\)](../../../../../../docs/framework/data/adonet/ef/language-reference/comment-entity-sql.md)|[!INCLUDE[esql](../../../../../../includes/esql-md.md)] コメントを含めます。| +|[FUNCTION](../../../../../../docs/framework/data/adonet/ef/language-reference/function-entity-sql.md)|Entity SQL クエリで実行できるインライン関数を定義します。| + +## 参照 + [Entity SQL 言語](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-language.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/equals-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/equals-entity-sql.md new file mode 100644 index 00000000000..9c9d4540267 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/equals-entity-sql.md @@ -0,0 +1,57 @@ +--- +title: "= (等しい) (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 948eb588-7080-4046-bb48-633b007393bf +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# = (等しい) (Entity SQL) +2 つの式の等価性を比較します。 + +## 構文 + +``` + + expression + = + expression +or +expression==expression +``` + +## 引数 + `expression` + 任意の有効な式。 両方の式とも、暗黙的に変換可能なデータ型でなければなりません。 + +## 戻り値の型 + 左の式が右の式と等しい場合は `true`、等しくない場合は `false`。 + +## 解説 + \=\= 演算子は \= 演算子と同じです。 + +## 使用例 + 次の Entity SQL クエリでは、\= 比較演算子を使用して 2 つの式の等価性を比較します。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#EQUALS](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#equals)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/except-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/except-entity-sql.md new file mode 100644 index 00000000000..4bfc9c952b4 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/except-entity-sql.md @@ -0,0 +1,60 @@ +--- +title: "EXCEPT (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 69cc23e5-3f8f-4b49-b20e-2f84ff11c80d +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# EXCEPT (Entity SQL) +EXCEPT オペランドの左辺のクエリ式から返される結果のうち、右辺のクエリ式でも返される結果を除いた、重複しない値のコレクションを返します。 すべての式は、`expression` と同じ型であるか、共通の基本型または派生型である必要があります。 + +## 構文 + +``` + +expression EXCEPT expression +``` + +## 引数 + `expression` + コレクションを返す任意の有効なクエリ式。もう一方のクエリ式から返されたコレクションと比較されます。 + +## 戻り値 + `expression` と同じ型であるか、共通の基本データ型または派生型であるコレクション。 + +## 解説 + EXCEPT は、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の集合演算子の 1 つです。[!INCLUDE[esql](../../../../../../includes/esql-md.md)] のすべての集合演算子は左から右に評価されます。 次の表に、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] 集合演算子の優先順位を示します。 + +|優先順位|演算子| +|----------|---------| +|最高|INTERSECT| +||UNION

UNION ALL| +||EXCEPT| +|最低|EXISTS

OVERLAPS

FLATTEN

SET| + +## 使用例 + 次の Entity SQL クエリでは、EXCEPT 演算子を使用して、2 つのクエリ式から重複しない値のコレクションを返します。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#EXCEPT](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#except)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/exists-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/exists-entity-sql.md new file mode 100644 index 00000000000..ca8d1ea492b --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/exists-entity-sql.md @@ -0,0 +1,56 @@ +--- +title: "EXISTS (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: d28ead43-4afb-4bdc-af64-efd2e05005d7 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# EXISTS (Entity SQL) +コレクションが空かどうかを調べます。 + +## 構文 + +``` + +[NOT] EXISTS (expression) +``` + +## 引数 + `expression` + コレクションを返す任意の有効な式。 + + NOT + EXISTS の結果を否定することを指定します。 + +## 戻り値 + コレクションが空でない場合は `true`、それ以外の場合は `false` です。 + +## 解説 + EXISTS は、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の集合演算子の 1 つです。[!INCLUDE[esql](../../../../../../includes/esql-md.md)] のすべての集合演算子は左から右に評価されます。[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の集合演算子の優先順位に関する情報については、「[EXCEPT](../../../../../../docs/framework/data/adonet/ef/language-reference/except-entity-sql.md)」をご覧ください。 + +## 使用例 + 次の Entity SQL クエリでは、EXISTS 演算子を使用して、コレクションが空かどうかを調べます。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#EXISTS](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#exists)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/expressions-in-linq-to-entities-queries.md b/docs/framework/data/adonet/ef/language-reference/expressions-in-linq-to-entities-queries.md new file mode 100644 index 00000000000..6055eeeca6c --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/expressions-in-linq-to-entities-queries.md @@ -0,0 +1,48 @@ +--- +title: "LINQ to Entities クエリ内の式 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: d70b502f-6a15-4120-b4fe-500b173ad9cc +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# LINQ to Entities クエリ内の式 +式は、単一の値、オブジェクト、メソッド、または名前空間として評価されるコード フラグメントです。 式には、リテラル値、メソッド呼び出し、演算子とそのオペランド、または単純な名前を含めることができます。 単純な名前には、変数、型メンバー、メソッド パラメーター、名前空間、または型の名前を指定できます。 式では、他の式をパラメーターとして使用する演算子、またはパラメーターが他のメソッド呼び出しであるメソッド呼び出しを使用できます。 したがって、単純な式だけでなく、非常に複雑な式も作成できます。 + + [!INCLUDE[linq_entities](../../../../../../includes/linq-entities-md.md)] クエリの式には、ラムダ式など、 名前空間内の型で許容されている要素であれば何でも使用できます。 [!INCLUDE[linq_entities](../../../../../../includes/linq-entities-md.md)] クエリで使用可能な式は、[!INCLUDE[adonet_ef](../../../../../../includes/adonet-ef-md.md)] に対してクエリを実行するために使用可能な式のスーパーセットです。 [!INCLUDE[adonet_ef](../../../../../../includes/adonet-ef-md.md)] に対するクエリの一部である式は、`ObjectQuery` および基になるデータ ソースでサポートされている演算に制限されます。 + + 次の例では、`Where` 句で使用される比較の式を示します。 + + [!code-csharp[DP L2E Conceptual Examples#WhereExpression](../../../../../../samples/snippets/csharp/VS_Snippets_Data/DP L2E Conceptual Examples/CS/Program.cs#whereexpression)] + [!code-vb[DP L2E Conceptual Examples#WhereExpression](../../../../../../samples/snippets/visualbasic/VS_Snippets_Data/DP L2E Conceptual Examples/VB/Module1.vb#whereexpression)] + +> [!NOTE] +> C\# の `unchecked` などの特殊な言語構造は、[!INCLUDE[linq_entities](../../../../../../includes/linq-entities-md.md)] では意味がありません。 + +## このセクションの内容 + [定数式](../../../../../../docs/framework/data/adonet/ef/language-reference/constant-expressions.md) + + [比較式](../../../../../../docs/framework/data/adonet/ef/language-reference/comparison-expressions.md) + + [NULL 比較](../../../../../../docs/framework/data/adonet/ef/language-reference/null-comparisons.md) + + [初期化式](../../../../../../docs/framework/data/adonet/ef/language-reference/initialization-expressions.md) + + [Navigation Properties](http://msdn.microsoft.com/ja-jp/41e1e6b9-8a57-467d-99d9-1857d2ca2ea5) + +## 参照 + [ADO.NET Entity Framework](../../../../../../docs/framework/data/adonet/ef/index.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/flatten-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/flatten-entity-sql.md new file mode 100644 index 00000000000..5f1b474ed9b --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/flatten-entity-sql.md @@ -0,0 +1,50 @@ +--- +title: "FLATTEN (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 1a670c63-0a29-4738-80e6-101f66af05c3 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# FLATTEN (Entity SQL) +コレクションのコレクションをフラット化して単一のコレクションに変換します。 変換後のコレクションは、入れ子構造が失われるだけで、変換前のコレクションとまったく同じ要素を格納します。 + +## 構文 + +``` + +FLATTEN ( collection ) +``` + +## 引数 + `collection` + 値のコレクションのコレクションをフラット化して単一のコレクションとして返す有効な任意の式。 + +## 解説 + `FLATTEN` は、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の集合演算子の 1 つです。[!INCLUDE[esql](../../../../../../includes/esql-md.md)] のすべての集合演算子は左から右に評価されます。[!INCLUDE[esql](../../../../../../includes/esql-md.md)] の集合演算子の優先順位に関する情報については、「[EXCEPT](../../../../../../docs/framework/data/adonet/ef/language-reference/except-entity-sql.md)」をご覧ください。 + +## 使用例 + 次の Entity SQL クエリでは、`FLATTEN` 演算子を使用して、コレクションのコレクションをフラット化されたコレクションに変換します。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#FLATTEN](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#flatten)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/from-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/from-entity-sql.md new file mode 100644 index 00000000000..29c23910d81 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/from-entity-sql.md @@ -0,0 +1,169 @@ +--- +title: "FROM (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: ff3e3048-0d5d-4502-ae5c-9187fcbd0514 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# FROM (Entity SQL) +[SELECT](../../../../../../docs/framework/data/adonet/ef/language-reference/select-entity-sql.md) ステートメントで使用するコレクションを指定します。 + +## 構文 + +``` +FROM expression [ ,...n ] as C +``` + +## 引数 + `expression` + `SELECT` ステートメントのソースとして使用するコレクションを生成する任意の有効なクエリ式。 + +## 解説 + `FROM` 句は、1 つ以上の `FROM` 句の項目をコンマで区切ったリストです。 `FROM` 句を使用して、`SELECT` ステートメントのソースを 1 つ以上指定できます。 `FROM` 句の最も単純な形式は、次の例に示すように、`SELECT` ステートメントのソースとして使用する 1 つのコレクションと 1 つの別名を識別する単一のクエリ式です。 + + `FROM C as c` + +## FROM 句の項目 + 各 `FROM` 句項目は、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] クエリ内のソース コレクションを参照します。 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] は、`FROM` 句項目のクラスとして、単純 `FROM` 句項目、`JOIN FROM` 句項目、および `APPLY FROM` 句項目をサポートしています。 これらの `FROM` 句の各項目については、以下のセクションで詳しく説明します。 + +### 単純な FROM 句の項目 + 最も単純な `FROM` 句の項目は、1 つのコレクションと 1 つの別名を識別する単一の式です。 式には、エンティティ セット、サブクエリ、またはコレクション型のその他の任意の式を使用できます。 次に例を示します。 + +``` +LOB.Customers as c +``` + + 別名の指定は省略可能です。 上記のように FROM 句の項目を指定する代わりに、次のように指定することもできます。 + +``` +LOB.Customers +``` + + 別名を指定しない場合、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] はコレクション式に基づいて別名の生成を試みます。 + +### JOIN FROM 句の項目 + `JOIN FROM` 句項目は、2 つの `FROM` 句項目の間の結合を表します。 [!INCLUDE[esql](../../../../../../includes/esql-md.md)] では、クロス結合、内部結合、左外部結合、右外部結合、および完全外部結合をサポートしています。 これらすべての結合は、[!INCLUDE[tsql](../../../../../../includes/tsql-md.md)] でのサポートと同様にサポートされます。 [!INCLUDE[tsql](../../../../../../includes/tsql-md.md)] の場合と同様に、`JOIN` に含まれる 2 つの `FROM` 句の項目は独立している必要があります。 つまり、相互に関連付けられた項目は使用できません。 このような場合には、`CROSS APPLY` または `OUTER APPLY` を使用できます。 + +#### クロス結合 + 次の例に示すように、`CROSS JOIN` クエリ式は 2 つのコレクションのデカルト積を生成します。 + + `FROM C AS c CROSS JOIN D as d` + +#### 内部結合 + 次の例に示すように、`INNER JOIN` は 2 つのコレクションの制約付きデカルト積を生成します。 + + `FROM C AS c [INNER] JOIN D AS d ON e` + + 上記のクエリ式では、`ON` 条件が指定されており、右のコレクションの各要素と対になっている左のコレクションの各要素を結合して処理します。 `ON` 条件を指定しない場合、`INNER JOIN` の動作は `CROSS JOIN` と同じになります。 + +#### 左外部結合と右外部結合 + 次の例に示すように、`OUTER JOIN` クエリ式は 2 つのコレクションの制約付きデカルト積を生成します。 + + `FROM C AS c LEFT OUTER JOIN D AS d ON e` + + 上記のクエリ式では、`ON` 条件が指定されており、右のコレクションの各要素と対になっている左のコレクションの各要素を結合して処理します。 `ON` 条件が指定されていない場合、式は、NULL 値を使用して、右の要素と対になっている左の要素の単一のインスタンスを処理します。 + + `RIGHT OUTER JOIN` についても同様です。 + +#### 完全外部結合 + 次の例に示すように、明示的な `FULL OUTER JOIN` は 2 つのコレクションの制約付きデカルト積を生成します。 + + `FROM C AS c FULL OUTER JOIN D AS d ON e` + + 上記のクエリ式では、`ON` 条件が指定されており、右のコレクションの各要素と対になっている左のコレクションの各要素を結合して処理します。 `ON` 条件が指定されていない場合、式は、NULL 値を使用して、右の要素と対になっている左の要素のインスタンスを 1 つ処理します。 また、NULL 値を使用して、左の要素と対になっている右の要素のインスタンスも 1 つ処理します。 + +> [!NOTE] +> SQL\-92 との互換性を保つため、[!INCLUDE[tsql](../../../../../../includes/tsql-md.md)] では、OUTER キーワードは省略可能です。 したがって、`LEFT JOIN`、`RIGHT JOIN`、および `FULL JOIN` は、`LEFT OUTER JOIN`、`RIGHT OUTER JOIN`、および `FULL OUTER JOIN` のシノニムです。 + +### APPLY 句の項目 + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] は、`CROSS APPLY` と `OUTER APPLY` という 2 種類の `APPLY` をサポートしています。 + + `CROSS APPLY` は、左のコレクションの各要素と右の式の評価によって生成されたコレクションの要素との一意の組み合わせを生成します。 `CROSS APPLY` では、右の式は左の要素に機能的に依存します。このような関連付けられたコレクションの例を次に示します。 + + `SELECT c, f FROM C AS c CROSS APPLY c.Assoc AS f` + + `CROSS APPLY` の動作は結合リストに似ています。 右の式が空のコレクションとして評価される場合、`CROSS APPLY` は、左の要素のそのインスタンスの組み合わせを生成しません。 + + `OUTER APPLY` は、右の式が空のコレクションとして評価される場合でも組み合わせを生成する以外は、`CROSS APPLY` と同様です。 `OUTER APPLY` の使用例を次に示します。 + + `SELECT c, f FROM C AS c OUTER APPLY c.Assoc AS f` + +> [!NOTE] +> [!INCLUDE[tsql](../../../../../../includes/tsql-md.md)] とは異なり、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] では、明示的なネスト解除の手順は不要です。 + +> [!NOTE] +> `CROSS` 演算子および `OUTER APPLY` 演算子は [!INCLUDE[ssVersion2005](../../../../../../includes/ssversion2005-md.md)] で導入されました。 場合によっては、クエリ パイプラインにより、`CROSS APPLY` 演算子または `OUTER APPLY` 演算子を含む Transact\-SQL が生成されることがあります。 一部のバックエンド プロバイダー \([!INCLUDE[ssVersion2005](../../../../../../includes/ssversion2005-md.md)] より古いバージョンの [!INCLUDE[ssNoVersion](../../../../../../includes/ssnoversion-md.md)] など\) では、これらの演算子がサポートされていません。したがって、このようなクエリをこれらのバックエンド プロバイダーで実行することはできません。 +> +> `CROSS APPLY` 演算子または `OUTER APPLY` 演算子を含むクエリの生成につながる可能性がある一般的なシナリオとしては、ページングを使用した相関サブクエリ、相関サブクエリ全体またはナビゲーションによって生成されたコレクション全体を対象とした AnyElement、要素セレクターを受け取るグループ化メソッドを使用した LINQ クエリ、`CROSS APPLY` 演算子または `OUTER APPLY` 演算子が明示的に指定されたクエリ、`REF` コンストラクターを引数に取る `DEREF` コンストラクターを含むクエリなどがあります。 + +## FROM 句での複数のコレクション + `FROM` 句には、複数のコレクションをコンマで区切って含めることができます。 この場合、これらのコレクションは 1 つに結合されるものと見なされます。 これは、n 方向の CROSS JOIN と考えることができます。 + + 次の例で、`C` と `D` は独立したコレクションですが、`c.Names` は `C` に依存しています。 + +``` +FROM C AS c, D AS d, c.Names AS e +``` + + 上記の例は、次の例と論理的に等価です。 + + `FROM (C AS c JOIN D AS d) CROSS APPLY c.Names AS e` + +## 左の相関関係 + `FROM` 句の項目は、前の句で指定された項目を参照できます。 次の例で、`C` と `D` は独立したコレクションですが、`c.Names` は `C` に依存しています。 + +``` +from C as c, D as d, c.Names as e +``` + + 上記の例は、次の例と論理的に等価です。 + +``` +from (C as c join D as d) cross apply c.Names as e +``` + +## Semantics + 論理上、`FROM` 句のコレクションは `n` 方向のクロス結合の一部になると見なされます \(1 方向のクロス結合の場合を除く\)。 `FROM` 句内の別名は、左から右へと処理され、後で参照できるように現在のスコープに追加されます。 `FROM` 句は、行のマルチセットを生成すると見なされます。 `FROM` 句の項目ごとに 1 つのフィールドが生成され、そのコレクションの項目の 1 つの要素を表します。 + + `FROM` 句は、c、d、e の各フィールドが `C`、`D`、`c.Names` の要素型になると見なされる Row\(c, d, e\) 型の行のマルチセットを論理的に生成します。 + + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] では、単純な `FROM` 句の項目ごとの別名がスコープに導入されます。 たとえば、次の FROM 句の例では、スコープに導入される名前は c、d、e です。 + +``` +from (C as c join D as d) cross apply c.Names as e +``` + + [!INCLUDE[esql](../../../../../../includes/esql-md.md)] では [!INCLUDE[tsql](../../../../../../includes/tsql-md.md)] と異なり、`FROM` 句では別名のみがスコープに導入されます。 これらのコレクションの列 \(プロパティ\) への参照は、別名を使用して修飾する必要があります。 + +## 入れ子になったクエリからのキーの抽出 + 入れ子になったクエリからのキーの抽出を必要とする特定の種類のクエリはサポートされていません。 たとえば、次のクエリは有効です。 + +``` +select c.Orders from Customers as c +``` + + しかし、次のクエリは、入れ子になったクエリにキーがないため無効です。 + +``` +select {1} from {2, 3} +``` + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [クエリ式](../../../../../../docs/framework/data/adonet/ef/language-reference/query-expressions-entity-sql.md) + [NULL 値が許容される構造化型](../../../../../../docs/framework/data/adonet/ef/language-reference/nullable-structured-types-entity-sql.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/function-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/function-entity-sql.md new file mode 100644 index 00000000000..51f97c58ea8 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/function-entity-sql.md @@ -0,0 +1,87 @@ +--- +title: "FUNCTION (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0bb88992-37ed-4991-ace5-55be612a2c4d +caps.latest.revision: 4 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 4 +--- +# FUNCTION (Entity SQL) +Entity SQL クエリ コマンドのスコープに関数を定義します。 + +## 構文 + +``` + +FUNCTION function-name( [ { parameter_name + [ ,...n ] + ] +) AS ( function_expression ) + +::= + { data_type | COLLECTION ( ) + | REF (data_type) + | ROW (row_expression) + } +``` + +## 引数 + `function-name` + 関数名。 + + `parameter-name` + 関数のパラメーター名。 + + `function_expression` + 関数である有効な Entity SQL 式。 関数内のコマンドは、関数に渡される `parameter_name` パラメーターに基づいて実行されます。 + + `data_type` + サポートされる型の名前。 + + COLLECTION \( \` \) + サポートされる型、行、または参照のコレクションを返す式。 + + REF **\(** `data_type` **\)** + エンティティ型への参照を返す式。 + + ROW **\(** `row_expression` **\)** + 1 つまたは複数の値から構造的に型指定された匿名レコードを返す式。 詳細については、「[ROW](../../../../../../docs/framework/data/adonet/ef/language-reference/row-entity-sql.md)」を参照してください。 + +## 解説 + 関数のシグネチャが異なっていれば、名前が同じ複数の関数をインラインで宣言することは可能です。 詳細については、「[関数のオーバーロードの解決方法](../../../../../../docs/framework/data/adonet/ef/language-reference/function-overload-resolution-entity-sql.md)」を参照してください。 + + 関数がインラインである場合、Entity SQL コマンドに呼び出せるのは、そのコマンド内で定義された後のみです。 ただし、インライン関数を別のインライン関数内で呼び出す場合には、呼び出される関数が定義される前でも後でもかまいません。 次の例では、関数 B が定義される前に、関数 A が関数 B を呼び出しています。 + + `Function A() as ('A calls B. ' + B())` + + `Function B() as ('B was called.')` + + `A()` + + 詳しくは、「[ユーザー定義関数を呼び出す方法](http://msdn.microsoft.com/ja-jp/ad131b86-8b4e-4747-8605-d4fc64fb9d02)」をご覧ください。 + + 関数をモデル自体で宣言することもできます。 モデルで宣言された関数は、コマンドでインラインで宣言された関数と同じように実行されます。 詳細については、「[ユーザー定義関数](../../../../../../docs/framework/data/adonet/ef/language-reference/user-defined-functions-entity-sql.md)」を参照してください。 + +## 使用例 + 次の Entity SQL コマンドは、関数 `Products` を定義します。この関数は、整数値を受け取って、返された製品をフィルター処理します。 + + [!code-csharp[DP EntityServices Concepts 2#FUNCTION1](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#function1)] + +## 使用例 + 次の Entity SQL コマンドは、関数 `StringReturnsCollection` を定義します。この関数は、文字列のコレクションを受け取って、返された連絡先をフィルター処理します。 + + [!code-csharp[DP EntityServices Concepts 2#FUNCTION2](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#function2)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [Entity SQL 言語](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-language.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/function-overload-resolution-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/function-overload-resolution-entity-sql.md new file mode 100644 index 00000000000..aad7de69fac --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/function-overload-resolution-entity-sql.md @@ -0,0 +1,47 @@ +--- +title: "関数のオーバーロードの解決方法 (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 9c648054-3808-4a69-9d3e-98e6a4f9c5ca +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 関数のオーバーロードの解決方法 (Entity SQL) +このトピックでは、[!INCLUDE[esql](../../../../../../includes/esql-md.md)] 関数の解決方法について説明します。 + + それぞれのシグネチャが一意であれば、複数の関数を同じ名前で定義することは可能です。 + + その場合、式でどの関数が参照されているのかを判断するには、以下の基準を適用する必要があります。 これらの基準は順番に適用されます。 1 つの関数のみに該当する最初の基準が、どの関数に解決されるかを決定します。 + +1. **パラメーターの数**。 関数が、式で指定されているパラメーター数と同じ数のパラメーターを含んでいます。 + +2. **型の完全一致**。 関数の各引数の型が、パラメーターの型と完全に一致するか、NULL リテラルになっています。 + +3. **サブタイプの一致**。 関数の各引数の型が、パラメーターの型に完全に一致するか、そのサブタイプになっています。または、引数が NULL リテラルになっています。 複数の関数が、必要なサブタイプの型変換数においてのみ異なる場合は、最も少ないサブタイプの型変換数を持つ関数が、解決された関数になります。 + +4. **サブタイプまたは型の昇格の一致**。 関数の各引数の型が、パラメーターの型に完全に一致しているか、そのサブタイプであるか、その型に昇格できます。または、引数が NULL リテラルになっています。 ここでも、複数の関数が、サブタイプの型変換および昇格の数においてのみ異なる場合は、最も少ないサブタイプの型変換および昇格の数を持つ関数が、解決された関数になります。 + + これらの基準のいずれによっても 1 つの関数を選択できない場合、関数の呼び出し式はあいまいになります。 + + これらの規則を使用して 1 つの関数を抽出できても、引数がパラメーターに一致しない場合があります。 この場合は、エラーが発生します。 + + ユーザー定義関数の場合、そのユーザー定義関数に適したシグネチャとモデル定義関数が存在する場合でも、インライン クエリ関数の定義が優先されます。 + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) + [Entity SQL の概要](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md) + [関数](../../../../../../docs/framework/data/adonet/ef/language-reference/functions-entity-sql.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/functions-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/functions-entity-sql.md new file mode 100644 index 00000000000..a03f45e2660 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/functions-entity-sql.md @@ -0,0 +1,38 @@ +--- +title: "関数 (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 52b3d776-5acc-4f69-b614-5a43ce56ef9f +caps.latest.revision: 2 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 2 +--- +# 関数 (Entity SQL) +Entity SQL では、ユーザー定義関数、正規の関数、およびプロバイダー固有の関数がサポートされています。 ユーザー定義関数は、概念モデルまたはクエリでインラインで指定されます。 詳細については、「[ユーザー定義関数](../../../../../../docs/framework/data/adonet/ef/language-reference/user-defined-functions-entity-sql.md)」を参照してください。 + + 正規の関数は Entity Framework で定義済みであり、データ プロバイダーによってサポートされています。 プロバイダーによってサポートされていない関数を呼び出すと、Entity SQL コマンドは失敗します。 そのため、通常は、プロバイダー固有の名前空間にあるストア固有の関数よりも正規の関数が推奨されます。 詳細については、「[正規関数](../../../../../../docs/framework/data/adonet/ef/language-reference/canonical-functions.md)」を参照してください。 + + Microsoft SQL クライアント マネージ プロバイダーは、プロバイダー固有の一連の関数を提供しています。 詳細については、「[Entity Framework 用 SqlClient 関数](../../../../../../docs/framework/data/adonet/ef/sqlclient-for-ef-functions.md)」を参照してください。 + +## このセクションの内容 + [ユーザー定義関数](../../../../../../docs/framework/data/adonet/ef/language-reference/user-defined-functions-entity-sql.md) + + [関数のオーバーロードの解決方法](../../../../../../docs/framework/data/adonet/ef/language-reference/function-overload-resolution-entity-sql.md) + + [集計関数](../../../../../../docs/framework/data/adonet/ef/aggregate-functions-sqlclient-for-entity-framework.md) + +## 参照 + [Entity SQL の概要](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-overview.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/greater-than-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/greater-than-entity-sql.md new file mode 100644 index 00000000000..acff5001d73 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/greater-than-entity-sql.md @@ -0,0 +1,53 @@ +--- +title: "> (より大きい) (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 4cea865c-677c-4b06-99a1-010f2ae2394a +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# > (より大きい) (Entity SQL) +2 つの式を比較して、左の式の値が右の式の値よりも大きいかどうかを判別します。 + +## 構文 + +``` + +expression +> +expression + +``` + +## 引数 + `expression` + 任意の有効な式。 両方の式とも、暗黙的に変換可能なデータ型でなければなりません。 + +## 戻り値の型 + 左の式の値が右の式の値よりも大きい場合は `true`、そうでない場合は `false`。 + +## 使用例 + 次の Entity SQL クエリは「\>」比較演算子を使用して 2 つの式を比較し、左の式の値が右の式の値よりも大きいかどうかを判別します。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#GREATER](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#greater)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/greater-than-or-equal-to-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/greater-than-or-equal-to-entity-sql.md new file mode 100644 index 00000000000..67f7ca73973 --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/greater-than-or-equal-to-entity-sql.md @@ -0,0 +1,53 @@ +--- +title: ">= (以上) (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: 70780ac4-0123-4da8-b731-8af856daffe3 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# >= (以上) (Entity SQL) +2 つの式を比較して、左の式の値が右の式の値以上であるかどうかを判別します。 + +## 構文 + +``` + +expression +>= +expression + +``` + +## 引数 + `expression` + 任意の有効な式。 両方の式とも、暗黙的に変換可能なデータ型でなければなりません。 + +## 戻り値の型 + 左の式の値が右の式の値以上である場合は `true`、そうでない場合は `false`。 + +## 使用例 + 次の Entity SQL クエリは「\>\=」比較演算子を使用して 2 つの式を比較し、左の式の値が右の式の値以上であるかどうかを判別します。 このクエリは、AdventureWorks Sales Model に基づいています。 このクエリをコンパイルして実行するには、次の手順を実行します。 + +1. 「[StructuralType 結果を返すクエリの実行方法](../../../../../../docs/framework/data/adonet/ef/how-to-execute-a-query-that-returns-structuraltype-results.md)」の手順に従います。 + +2. 次のクエリを引数として `ExecuteStructuralTypeQuery` メソッドに渡します。 + + [!code-csharp[DP EntityServices Concepts 2#GREATER_OR_EQUALS](../../../../../../samples/snippets/csharp/VS_Snippets_Data/dp entityservices concepts 2/cs/entitysql.cs#greater_or_equals)] + +## 参照 + [Entity SQL リファレンス](../../../../../../docs/framework/data/adonet/ef/language-reference/entity-sql-reference.md) \ No newline at end of file diff --git a/docs/framework/data/adonet/ef/language-reference/group-by-entity-sql.md b/docs/framework/data/adonet/ef/language-reference/group-by-entity-sql.md new file mode 100644 index 00000000000..04624c5a32e --- /dev/null +++ b/docs/framework/data/adonet/ef/language-reference/group-by-entity-sql.md @@ -0,0 +1,85 @@ +--- +title: "GROUP BY (Entity SQL) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-ado" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" +ms.assetid: cf4f4972-4724-4945-ba44-943a08549139 +caps.latest.revision: 3 +author: "JennieHubbard" +ms.author: "jhubbard" +manager: "jhubbard" +caps.handback.revision: 3 +--- +# GROUP BY (Entity SQL) +クエリ \([SELECT](../../../../../../docs/framework/data/adonet/ef/language-reference/select-entity-sql.md)\) 式によって返されるオブジェクトをグループ化するよう指定します。 + +## 構文 + +``` + +[ GROUP BY aliasedExpression [ ,...n ] ] +``` + +## 引数 + `aliasedExpression` + グループ化の実行対象となる有効なクエリ式。`expression` には、プロパティを指定することも、FROM 句から返されたプロパティを参照する非集計式を指定することもできます。 GROUP BY 句内の各式は、等価かどうかを比較できる型に評価される必要があります。 通常、これらの型は数値、文字列、日付などのスカラー プリミティブです。 コレクション別にグループ化することはできません。 + +## 解説 + SELECT 句の \] +``` + +## オプション + 最新のオプションの一覧を確認するには、コマンド プロンプトでインストール場所に移動し、「`sqlmetal /?`」と入力します。 + + **接続オプション** + +|オプション|説明| +|-----------|--------| +|**\/server:** *\<名前\>*|データベース サーバーの名前を指定します。| +|**\/database:** *\<名前\>*|サーバー上のデータベース カタログを指定します。| +|**\/user:** *\<名前\>*|ログオン ユーザー ID を指定します。 既定値は、Windows 認証を使用します。| +|**\/password:** *\<パスワード\>*|ログオン パスワードを指定します。 既定値は、Windows 認証を使用します。| +|**\/conn:** *\*|データベース接続文字列を指定します。**\/server**、**\/database**、**\/user**、または **\/password** オプションと共に使用することはできません。

接続文字列にファイル名は含めないでください。 代わりに、コマンド ラインにファイル名を入力ファイルとして追加します。 たとえば、**sqlmetal \/code:"c:\\northwind.cs" \/language:csharp "c:\\northwnd.mdf"** というコマンド ラインは、入力ファイルとして "c:\\northwnd.mdf" を指定します。| +|**\/timeout:** *\<秒\>*|SqlMetal がデータベースにアクセスする際のタイムアウト値を指定します。 既定値は 0 \(時間制限なし\) です。| + + **抽出オプション** + +|オプション|説明| +|-----------|--------| +|**\/views**|データベース ビューを抽出します。| +|**\/functions**|データベース関数を抽出します。| +|**\/sprocs**|ストアド プロシージャを抽出します。| + + **出力オプション** + +|オプション|説明| +|-----------|--------| +|**\/dbml** *\[:file\]*|出力を .dbml として送ります。**\/map** オプションと共に使用することはできません。| +|**\/code** *\[:file\]*|出力をソース コードとして送ります。**\/dbml** オプションと共に使用することはできません。| +|**\/map** *\[:file\]*|属性ではなく XML マッピング ファイルを生成します。**\/dbml** オプションと共に使用することはできません。| + + **その他** + +|オプション|説明| +|-----------|--------| +|**\/language:** *\*|ソース コードの言語を指定します。

有効な *\* は、vb と csharp です。

既定値は、コード ファイル名の拡張子から派生します。| +|**\/namespace:** *\<名前\>*|生成されるコードの名前空間を指定します。 既定値は、名前空間なしです。| +|**\/context:** *\*|データ コンテキスト クラスの名前を指定します。 既定値は、データベース名から派生します。| +|**\/entitybase:** *\*|生成されるコード内のエンティティ クラスの基本クラスを指定します。 既定値は、エンティティの基本クラスなしです。| +|**\/pluralize**|クラスとメンバーの名前を自動的に複数化または単数化します。

このオプションは、米国英語バージョンでのみ使用できます。| +|**\/serialization:** *\*|シリアル化可能なクラスを生成します。

有効な *\* は、None と Unidirectional です。 既定値は None です。

詳細については、「[Serialization](../../../docs/framework/data/adonet/sql/linq/serialization.md)」を参照してください。| + + **入力ファイル** + +|オプション|説明| +|-----------|--------| +|**\<入力ファイル\>**|SQL Server Express .mdf ファイル、[!INCLUDE[ssEW](../../../includes/ssew-md.md)] .sdf ファイル、または .dbml 中間ファイルを指定します。| + +## 解説 + SqlMetal の実際の機能には、次の 2 つの段階が含まれています。 + +- データベースのメタデータを .dbml ファイルに抽出する。 + +- コード出力ファイルを生成する。 + + 適切なコマンド ライン オプションを使用することで、[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] または C\# ソース コードを生成するか、XML マッピング ファイルを生成できます。 + + メタデータを .mdf ファイルから抽出するには、他のすべてのオプションの後に .mdf ファイルの名前を指定する必要があります。 + + **\/server** を指定しない場合、**localhost\/sqlexpress** と見なされます。 + + 次の条件が少なくとも 1 つ満たされる場合、[!INCLUDE[sqprsqext](../../../includes/sqprsqext-md.md)] は例外をスローします。 + +- 自身を呼び出すストアド プロシージャを SqlMetal が抽出しようとした。 + +- ストアド プロシージャ、関数、またはビューの入れ子レベルが 32 を超える。 + + SqlMetal はこの例外をキャッチして、それを警告として報告します。 + + 入力ファイル名を指定するには、その名前をコマンド ラインに入力ファイルとして追加します。 \(**\/conn** オプションを使用して\) 接続文字列にファイル名を含める操作は、サポートされていません。 + +## 例 + 抽出された SQL メタデータを格納する .dbml ファイルを生成します。 + + **sqlmetal \/server:myserver \/database:northwind \/dbml:mymeta.dbml** + + SQL Server Express を使用して .mdf ファイルから抽出された SQL メタデータを格納する .dbml ファイルを生成します。 + + **sqlmetal \/dbml:mymeta.dbml mydbfile.mdf** + + SQL Server Express から抽出された SQL メタデータを格納する .dbml ファイルを生成します。 + + **sqlmetal \/server:.\\sqlexpress \/dbml:mymeta.dbml \/database:northwind** + + .dbml メタデータ ファイルからソース コードを生成します。 + + **sqlmetal \/namespace:nwind \/code:nwind.cs \/language:csharp mymetal.dbml** + + SQL メタデータからソース コードを直接生成します。 + + **sqlmetal \/server:myserver \/database:northwind \/namespace:nwind \/code:nwind.cs \/language:csharp** + +> [!NOTE] +> サンプル データベース Northwind で **\/pluralize** オプションを使用する場合には、注意を必要とする動作があります。 SqlMetal がテーブルのために行型の名前を生成するとき、テーブル名は単数形です。 テーブルに関する プロパティを生成するときには、テーブル名は複数形です。 偶然にも、サンプル データベース Northwind 内のテーブルには既に複数形が使われています。 このため、この部分はうまく機能しません。 データベース テーブルの名前は単数形にするのが一般的ですが、.NET では、コレクションの名前を複数形にすることも一般的です。 + +## 参照 + [How to: Generate the Object Model in Visual Basic or C\#](../../../docs/framework/data/adonet/sql/linq/how-to-generate-the-object-model-in-visual-basic-or-csharp.md) + [Code Generation in LINQ to SQL](../../../docs/framework/data/adonet/sql/linq/code-generation-in-linq-to-sql.md) + [External Mapping](../../../docs/framework/data/adonet/sql/linq/external-mapping.md) \ No newline at end of file diff --git a/docs/framework/tools/storeadm-exe-isolated-storage-tool.md b/docs/framework/tools/storeadm-exe-isolated-storage-tool.md new file mode 100644 index 00000000000..d2a49e3579c --- /dev/null +++ b/docs/framework/tools/storeadm-exe-isolated-storage-tool.md @@ -0,0 +1,77 @@ +--- +title: "Storeadm.exe (分離ストレージ ツール) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "分離ストレージ ツール" + - "一覧 (現在のユーザーのストアの)" + - "削除 (ストアを)" + - "Storeadm.exe" + - "ストア, 現在のユーザー" +ms.assetid: b81202b8-d91d-4b23-9c53-4a112f74a44a +caps.latest.revision: 17 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 17 +--- +# Storeadm.exe (分離ストレージ ツール) +分離ストレージ ツールは、現在のユーザーに関するすべての既存ストアの一覧表示または削除を行います。 + + このツールは、Visual Studio と共に自動的にインストールされます。 このツールを実行するには、開発者コマンド プロンプト \(または、Windows 7 の Visual Studio コマンド プロンプト\) を使用します。 詳細については、「[コマンド プロンプト](../../../docs/framework/tools/developer-command-prompt-for-vs.md)」を参照してください。 + + コマンド プロンプトに次のように入力します。 + +## 構文 + +``` + +storeadm [/list][/machine][/remove][/roaming][/quiet] +``` + +#### パラメーター + +|オプション|説明| +|-----------|--------| +|**\/h**\[**elp**\]|このツールのコマンド構文とオプションを表示します。| +|**\/list**|現在のユーザーに関するすべての既存ストアを表示します。 このユーザーによって実行された、すべてのアプリケーションまたはアセンブリに関するストアなどが表示されます。| +|**\/machine**|コンピューター ストアを選択します。 アクションをコンピューター ストアに適用する場合は、このオプションを **\/list** オプションまたは **\/remove** オプションと共に使用します。

.NET Framework 2.0 で新たに追加されました。| +|**\/quiet**|クワイエット モードを指定します。このモードでは、情報の出力が中止され、エラー メッセージだけが表示されます。| +|**\/remove**|現在のユーザーに関するすべての既存ストアを削除します。| +|**\/roaming**|ローミング ストアを選択します。 このオプションを **\/list** または **\/remove** オプションと一緒に使用すると、それらのアクションをローミング ストアに適用する必要があることを指定できます。| +|**\/?**|このツールのコマンド構文とオプションを表示します。| + +## 解説 + オプションを指定せずにコマンド ラインから Storeadm.exe を実行すると、Storeadm.exe に関する構文とオプションが表示されます。 + + 一般に、**\/list** オプションと **\/remove** オプションは同時に使用されますが、2 つ以上のオプションを指定した場合、それらのオプションはコマンド ラインに表示されている順序で実行されます。 + + アプリケーションは、ユーザー ストアまたはコンピューター ストアのいずれかを選択して保存できます。 + +- ローカル ストアは、該当するユーザーに関するデータのローミングが有効な場合でも、ローミングされないことが保証されている場所 \(Windows 2000 以降\) に存在します。 + +- ローミング ストアは、ローミングできる場所に存在しますが、ローミングできるのは、Windows NT の管理機能を通じて、該当するユーザーに対してローミングが有効化されている場合に限られます。 + +- コンピューター ストアは、コンピューターのすべてのユーザーに共通で、コンピューターの共通ディレクトリに格納されます。 + + > [!NOTE] + > コンピューター ストアは .NET Framework Version 2.0 で新たに追加されました。 + + ユーザーに対してローミングが実際に有効になっているかどうかは、Storeadm.exe の管理に影響を与えません。 オプションを指定せずに Storeadm.exe を実行した場合、すべてのアクションがローカル ストアに適用されます。 **\/roaming** オプションを指定した場合は、すべてのアクションが、ローミングできるストアに適用されます。 **\/machine** オプションを指定してこのツールを実行すると、すべてのアクションがコンピューター ストアに適用されます。 + +## 参照 + [ツール](../../../docs/framework/tools/index.md) + [分離ストレージ](../../../docs/standard/io/isolated-storage.md) + [コマンド プロンプト](../../../docs/framework/tools/developer-command-prompt-for-vs.md) \ No newline at end of file diff --git a/docs/framework/tools/tlbexp-exe-type-library-exporter.md b/docs/framework/tools/tlbexp-exe-type-library-exporter.md new file mode 100644 index 00000000000..935974b27af --- /dev/null +++ b/docs/framework/tools/tlbexp-exe-type-library-exporter.md @@ -0,0 +1,149 @@ +--- +title: "Tlbexp.exe (タイプ ライブラリ エクスポーター) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "エクスポーター ツール [.NET Framework]" + - "エクスポート (タイプ ライブラリを) [.NET Framework]" + - "Tlbexp.exe" + - "タイプ ライブラリ [.NET Framework], エクスポート" + - "タイプ ライブラリ エクスポーター" +ms.assetid: a487d61b-d166-467b-a7ca-d8b52fbff42d +caps.latest.revision: 35 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 35 +--- +# Tlbexp.exe (タイプ ライブラリ エクスポーター) +タイプ ライブラリ エクスポーターは、共通言語ランタイム アセンブリで定義されている型を記述するタイプ ライブラリを生成します。 + + このツールは、Visual Studio と共に自動的にインストールされます。 このツールを実行するには、開発者コマンド プロンプト \(または、Windows 7 の Visual Studio コマンド プロンプト\) を使用します。 詳細については、「[コマンド プロンプト](../../../docs/framework/tools/developer-command-prompt-for-vs.md)」を参照してください。 + + コマンド プロンプトに次のように入力します。 + +## 構文 + +``` + +tlbexp assemblyName [options] +``` + +#### パラメーター + +|引数|説明| +|--------|--------| +|*assemblyName*|タイプ ライブラリをエクスポートする対象のアセンブリ。| + +|オプション|説明| +|-----------|--------| +|**\/asmpath:** *directory*|アセンブリを検索する場所を指定します。 このオプションを使用する場合は、現在のディレクトリを含め、参照アセンブリの検索場所を明示的に指定する必要があります。

**asmpath** オプションを使用すると、タイプ ライブラリ エクスポーターは、グローバル アセンブリ キャッシュ \(GAC\) 内のアセンブリを検索しません。| +|**\/help**|このツールのコマンド構文とオプションを表示します。| +|**\/names:** *filename*|タイプ ライブラリにおける大文字の使用スタイルを指定します。 *filename* 引数はテキスト ファイルです。 このファイルには、タイプ ライブラリ内の名前に対する大文字の使用スタイルを 1 行に 1 つずつ指定します。| +|**\/nologo**|Microsoft 著作権情報を表示しません。| +|**\/oldnames**|型名が競合している場合は、Tlbexp.exe は装飾された型名をエクスポートします。 バージョン 2.0 より以前の .NET Framework では、これが既定の動作であることに注意してください。| +|**\/out:** *file*|生成するタイプ ライブラリ ファイルの名前を指定します。 このオプションを省略した場合、アセンブリ名に拡張子 .tlb を付加した名前のタイプ ライブラリが生成されます。このアセンブリ名は実際のアセンブリ名ですが、アセンブリを含むファイルの名前と必ずしも同じである必要はありません。| +|**\/silence:** `warningnumber`|指定された警告を表示しません。 このオプションは、**\/silent** オプションと共に使用することはできません。| +|**\/silent**|成功メッセージを表示しません。 このオプションは、**\/silence** オプションと共に使用することはできません。| +|**\/tlbreference:** *typelibraryname*|Tlbexp.exe はレジストリを参照せずに、タイプ ライブラリの参照を明示的に解決します。 たとえば、アセンブリ B がアセンブリ A を参照する場合は、レジストリで指定されているタイプ ライブラリを参照するのではなく、このオプションを使用してタイプ ライブラリの参照を明示的に指定できます。 Tlbexp.exe はバージョン チェックを実行して、タイプ ライブラリとアセンブリのバージョンが同じであることを確認します。バージョンが異なる場合は、エラーを生成します。

**tlbreference** オプションを指定しても、 属性の適用先のインターフェイスが別の型に実装される場合には、レジストリが参照されます。| +|**\/tlbrefpath:** *path*|参照タイプ ライブラリの絶対パス。| +|**\/win32**|このオプションを指定すると、64 ビットのコンピューターでコンパイルする場合、Tlbexp.exe は 32 ビットのタイプ ライブラリを生成します。| +|**\/win64**|このオプションを指定すると、32 ビットのコンピューターでコンパイルする場合、Tlbexp.exe は 64 ビットのタイプ ライブラリを生成します。| +|**\/verbose**|詳細出力モードを指定します。このモードでは、タイプ ライブラリを生成する必要のある参照先アセンブリがある場合は、その一覧を表示します。| +|**\/?**|このツールのコマンド構文とオプションを表示します。| + +> [!NOTE] +> Tlbexp.exe のコマンド ライン オプションでは、大文字と小文字が区別されません。また、これらのオプションは任意の順序で指定できます。 オプションを一意に識別するために十分である場合は、オプションの一部を指定するだけでもかまいません。 たとえば、**\/n** を指定した場合は **\/nologo**、**\/o:** *outfile.tlb* と指定した場合は **\/out:** *outfile.tlb* であると見なされます。 + +## 解説 + Tlbexp.exe は、アセンブリで定義されている型の定義を含む、タイプ ライブラリを生成します。 Visual Basic 6.0 などのアプリケーションは、このツールで生成されたタイプ ライブラリを使用して、アセンブリ内で定義されている .NET 型にバインドできます。 + +> [!IMPORTANT] +> Tlbexp.exe を使用して Windows メタデータ \(.winmd\) ファイルをエクスポートすることはできません。 Windows ランタイム アセンブリのエクスポートはサポートされていません。 + + アセンブリ全体が一度に変換されます。 Tlbexp.exe を使用しても、アセンブリで定義されている型のサブセットに関する型情報は生成できません。 + + Tlbexp.exe を使用して、[タイプ ライブラリ インポーター \(Tlbimp.exe\)](../../../docs/framework/tools/tlbimp-exe-type-library-importer.md) でインポートしたアセンブリからタイプ ライブラリを生成することもできません。 代わりに、Tlbimp.exe でインポートした元のタイプ ライブラリを参照する必要があります。 しかし、Tlbimp.exe でインポートしたアセンブリを参照するアセンブリから、タイプ ライブラリをエクスポートすることはできます。 後の例を参照してください。 + + Tlbexp.exe は、生成したタイプ ライブラリを現在のディレクトリ、または出力ファイルとして指定したディレクトリに格納します。 単一のアセンブリから複数のタイプ ライブラリが生成されることもあります。 + + Tlbexp.exe はタイプ ライブラリを生成しますが、生成したタイプ ライブラリの登録は行いません。 これは、タイプ ライブラリの生成と登録を両方とも行う[アセンブリ登録ツール \(Regasm.exe\)](../../../docs/framework/tools/regasm-exe-assembly-registration-tool.md) とは対照的です。 タイプ ライブラリを生成して COM に登録するには、Regasm.exe を使用します。 + + `/win32` オプションまたは `/win64` オプションを指定しないと、Tlbexp.exe はコンパイルを実行するコンピューターのタイプ \(32 ビット コンピューターまたは 64 ビット コンピューター\) に応じて、32 ビットまたは 64 ビットのタイプ ライブラリを生成します。 クロス コンパイルを行う場合は、32 ビット コンピューター上で `/win64` オプションを使用して 64 ビットのタイプ ライブラリを生成したり、64 ビット コンピューター上で `/win32` オプションを使用して 32 ビットのタイプ ライブラリを生成したりできます。 32 ビットのタイプ ライブラリでは、 値は に設定されます。 64 ビットのタイプ ライブラリでは、 値は に設定されます。 すべてのデータ型変換 \(たとえば、`IntPtr` や `UIntPtr` などのポインター\-サイズ データ型\) は、適切に変換されます。 + + 属性を使用して、`VT_UNKOWN` または `VT_DISPATCH` の 値を指定すると、Tlbexp.exe は後続で使用される フィールドをすべて無視します。 たとえば、次のようなシグネチャがあるとします。 + +``` +[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_UNKNOWN, SafeArrayUserDefinedSubType=typeof(ConsoleKeyInfo))] public Array StructUnkSafe(){return null;} +[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_DISPATCH, SafeArrayUserDefinedSubType=typeof(ConsoleKeyInfo))] public Array StructDispSafe(){return null;} +``` + + 次のタイプ ライブラリが生成されます。 + +``` +[id(0x60020004)] +HRESULT StructUnkSafe([out, retval] SAFEARRAY(IUnknown*)* pRetVal); +[id(0x60020005)] +HRESULT StructDispSafe([out, retval] SAFEARRAY(IDispatch*)* pRetVal); +``` + + Tlbexp.exe は フィールドを無視することに注意してください。 + + アセンブリ内にあるすべての情報をタイプ ライブラリに含めることはできないので、エクスポート プロセス中、Tlbexp.exe によって一部のデータが破棄される場合があります。 変換処理、およびタイプ ライブラリに出力される各情報のソースの識別については、「[アセンブリからタイプ ライブラリへの変換の要約](http://msdn.microsoft.com/ja-jp/3a37eefb-a76c-4000-9080-7dbbf66a4896)」を参照してください。 + + タイプ ライブラリ エクスポーターは、 オブジェクトがアンマネージ コードで意味を持たない場合でも、 パラメーターが `VARIANT` であるメソッドをエクスポートします。 パラメーターを持つメソッドをエクスポートしても、タイプ ライブラリ エクスポーターは警告やエラーを生成しません。作成されたタイプ ライブラリを使用するアンマネージ コードは、正しく動作しません。 + + タイプ ライブラリ エクスポーターは、Microsoft Windows 2000 以降でサポートされます。 + +## 例 + `myTest.dll` 内で見つかったアセンブリと同じ名前を持つタイプ ライブラリを生成するコマンドを次に示します。 + +``` +tlbexp myTest.dll +``` + + `clipper.tlb` という名前を持つタイプ ライブラリを生成するコマンドを次に示します。 + +``` +tlbexp myTest.dll /out:clipper.tlb +``` + + Tlbexp.exe を使用してインポートしたアセンブリを参照するアセンブリから、Tlbimp.exe を使用してタイプ ライブラリをエクスポートする例を次に示します。 + + まず、Tlbimp.exe を使用してタイプ ライブラリ `myLib.tlb` をインポートし、`myLib.dll` として保存します。 + +``` +tlbimp myLib.tlb /out:myLib.dll +``` + + 上記の例で作成した `myLib.dll` を参照する `Sample.dll` を C\# コンパイラでコンパイルするコマンドを次に示します。 + +``` +CSC Sample.cs /reference:myLib.dll /out:Sample.dll +``` + + `myLib.dll` を参照する `Sample.dll` 用のタイプ ライブラリを生成するコマンドを次に示します。 + +``` +tlbexp Sample.dll +``` + +## 参照 + + [ツール](../../../docs/framework/tools/index.md) + [Regasm.exe \(アセンブリ登録ツール\)](../../../docs/framework/tools/regasm-exe-assembly-registration-tool.md) + [Assembly to Type Library Conversion Summary](http://msdn.microsoft.com/ja-jp/3a37eefb-a76c-4000-9080-7dbbf66a4896) + [Tlbimp.exe \(タイプ ライブラリ インポーター\)](../../../docs/framework/tools/tlbimp-exe-type-library-importer.md) + [コマンド プロンプト](../../../docs/framework/tools/developer-command-prompt-for-vs.md) \ No newline at end of file diff --git a/docs/framework/tools/tlbimp-exe-type-library-importer.md b/docs/framework/tools/tlbimp-exe-type-library-importer.md new file mode 100644 index 00000000000..2590051a19e --- /dev/null +++ b/docs/framework/tools/tlbimp-exe-type-library-importer.md @@ -0,0 +1,148 @@ +--- +title: "Tlbimp.exe (タイプ ライブラリ インポーター) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "変換 (型定義の)" + - "インポート (タイプ ライブラリの)" + - "Tlbimp.exe" + - "型定義変換" + - "タイプ ライブラリ" + - "タイプ ライブラリ [.NET Framework], インポート" + - "タイプ ライブラリ インポーター" +ms.assetid: ec0a8d63-11b3-4acd-b398-da1e37e97382 +caps.latest.revision: 29 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 27 +--- +# Tlbimp.exe (タイプ ライブラリ インポーター) +タイプ ライブラリ インポーターは、COM タイプ ライブラリにある型定義を共通言語ランタイム アセンブリで等価な定義に変換します。 Tlbimp.exe の出力は、元のタイプ ライブラリで定義された型のランタイム メタデータを格納するバイナリ ファイル \(アセンブリ\) です。 このファイルは [ildasm.exe](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) などのツールでチェックできます。 + + このツールは、Visual Studio と共に自動的にインストールされます。 このツールを実行するには、開発者コマンド プロンプト \(または、Windows 7 の Visual Studio コマンド プロンプト\) を使用します。 詳細については、「[コマンド プロンプト](../../../docs/framework/tools/developer-command-prompt-for-vs.md)」を参照してください。 + + コマンド プロンプトに次のように入力します。 + +## 構文 + +``` + +tlbimp tlbFile [options] +``` + +#### パラメーター + +|引数|説明| +|--------|--------| +|*tlbFile*|COM タイプ ライブラリを格納する任意のファイルの名前。| + +|オプション|説明| +|-----------|--------| +|**\/asmversion:** *versionnumber*|生成するアセンブリのバージョン番号を指定します。 *versionnumber* は *major.minor.build.revision* の形式で指定します。| +|**\/company:** `companyinformation`|出力アセンブリに会社情報を追加します。| +|**\/copyright:** `copyrightinformation`|出力アセンブリに著作権情報を追加します。 この情報は、アセンブリの **\[ファイルのプロパティ\]** ダイアログ ボックスで確認できます。| +|**\/delaysign**|Tlbimp.exe が遅延署名を使用して、生成されたアセンブリに厳密な名前で署名するように指定します。 このオプションは、**\/keycontainer:**、**\/keyfile:**、または **\/publickey:** のいずれかのオプションと共に指定する必要があります。 遅延署名プロセスの詳細については、「[アセンブリへの遅延署名](../../../docs/framework/app-domains/delay-sign-assembly.md)」を参照してください。| +|**\/help**|このツールのコマンド構文とオプションを表示します。| +|**\/keycontainer:** *containername*|*containername* で指定されたキー コンテナーの公開キーと秘密キーのペアを使用して、生成されたアセンブリに厳密な名前で署名します。| +|**\/keyfile:** *filename*|*filename* にある発行者の正式な公開キーと秘密キーのペアを使用して、生成されたアセンブリに厳密な名前で署名します。| +|**\/machine:** `machinetype`|指定したコンピューターの種類 \(マイクロプロセッサ\) を対象とするアセンブリを作成します。 サポートされているコンピューターの種類は、x86、x64、Itanium、および「不明」です。| +|**\/namespace:** *namespace*|アセンブリの生成先の名前空間を指定します。| +|**\/noclassmembers**|Tlbimp.exe がメンバーをクラスに追加できないようにします。 これにより、 が発生する可能性がなくなります。| +|**\/nologo**|Microsoft 著作権情報を表示しません。| +|**\/out:** *filename*|メタデータ定義の書き込み先の出力ファイル、アセンブリ、および名前空間の名前を指定します。 アセンブリの名前空間を明示的に制御するインターフェイス定義言語 \(IDL: Interface Definition Language\) カスタム属性がタイプ ライブラリで指定されている場合、**\/out** オプションはアセンブリの名前空間を制御できません。 このオプションを指定しない場合、Tlbimp.exe は、入力ファイルで定義された実際のタイプ ライブラリと同じ名前のファイルにメタデータを書き込み、そのファイルに .dll 拡張子を割り当てます。 出力ファイルの名前が入力ファイルと同じ場合は、タイプ ライブラリが上書きされるのを防ぐためにエラーが発生します。| +|**\/primary**|指定したタイプ ライブラリのプライマリ相互運用機能アセンブリを生成します。 アセンブリに追加される情報は、アセンブリを生成したタイプ ライブラリの発行者を示します。 プライマリ相互運用機能アセンブリを指定すると、Tlbimp.exe を使用して、ある発行者のアセンブリとタイプ ライブラリから作成された他のアセンブリを区別します。 Tlbimp.exe を使用してインポートするタイプ ライブラリの発行者である場合は、**\/primary** オプションを使用してください。 プライマリ相互運用機能アセンブリには、[厳密な名前](../../../docs/framework/app-domains/strong-named-assemblies.md)で署名する必要があります。 詳細については、「[プライマリ相互運用機能アセンブリ](http://msdn.microsoft.com/ja-jp/b977a8be-59a0-40a0-a806-b11ffba5c080)」を参照してください。| +|**\/product:** `productinformation`|出力アセンブリに製品情報を追加します。 この情報は、アセンブリの **\[ファイルのプロパティ\]** ダイアログ ボックスで確認できます。| +|**\/productversion:** `productversioninformation`|出力アセンブリにバージョン情報を追加します。 形式の制限はありません。 この情報は、アセンブリの **\[ファイルのプロパティ\]** ダイアログ ボックスで確認できます。| +|**\/publickey:** *filename*|生成されたアセンブリに署名するために使用する公開キーを格納するファイルを指定します。 **\/publickey:** オプションの代わりに **\/keyfile:** オプションまたは **\/keycontainer:** オプションを指定した場合、Tlbimp.exe は、**\/keyfile:** または **\/keycontainer:** で指定された公開キーと秘密キーのペアから公開キーを生成します。 **\/publickey:** オプションを指定すると、テスト キーと遅延署名を使用できます。 ファイルは Sn.exe で生成された形式になります。 詳細については、「[厳密名ツール \(Sn.exe\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md)」にある Sn.exe の **\-p** オプションの説明を参照してください。| +|**\/reference:** *filename*|現在のタイプ ライブラリ以外で定義された型への参照を解決するために使用するアセンブリ ファイルを指定します。 **\/reference** オプションを指定しない場合、Tlbimp.exe は、インポートされるタイプ ライブラリが参照しているすべての外部タイプ ライブラリを再帰的に自動インポートします。 **\/reference** オプションを指定した場合、このツールは、他のタイプ ライブラリをインポートする前に、参照されたアセンブリ内の外部型を解決しようとします。| +|**\/silence:** `warningnumber`|指定された警告を表示しません。 このオプションは、**\/silent** オプションと共に使用することはできません。| +|**\/silent**|成功メッセージを表示しません。 このオプションは、**\/silence** オプションと共に使用することはできません。| +|**\/strictref**|ツールが現在のアセンブリ内、**\/reference** オプションで指定されたアセンブリ内、または登録されているプライマリ相互運用機能アセンブリ \(PIA\) 内のすべての参照を解決できない場合は、タイプ ライブラリをインポートしません。| +|**\/strictref:nopia**|**\/strictref** と同じですが、PIA を無視します。| +|**\/sysarray**|ツールが COM スタイル SafeArray をマネージ [System.Array クラス](frlrfSystemArrayClassTopic)型としてインポートするように指定します。| +|**\/tlbreference:** *filename*|レジストリを参照せずにタイプ ライブラリ参照を解決する場合に使用するタイプ ライブラリ ファイルを指定します。

このオプションでは、古いタイプ ライブラリの形式の一部が読み込まれないことに注意してください。ただし、古いタイプ ライブラリの形式は、レジストリまたは現在のディレクトリから暗黙的に読み込むことができます。| +|**\/trademark:** `trademarkinformation`|出力アセンブリに商標情報を追加します。 この情報は、アセンブリの **\[ファイルのプロパティ\]** ダイアログ ボックスで確認できます。| +|**\/transform:** *transformname*|*transformname* パラメーターで指定されたようにメタデータを変換します。

ディスパッチ専用インターフェイスに対するメソッドの \[out, retval\] パラメーターを戻り値に変換するには、*transformname* パラメーターに **dispret** を指定します。

このオプションの詳細については、このトピックの下記の例を参照してください。| +|**\/unsafe**|.NET Framework セキュリティ チェックなしでインターフェイスを生成します。 この方法で公開されているメソッドを呼び出す場合には、セキュリティ上のリスクが伴います。 このオプションは、上記に該当するコードを公開するリスクを理解した上で使用してください。| +|**\/verbose**|詳細モードを指定します。インポートされたタイプ ライブラリについての詳細情報を表示します。| +|**\/VariantBoolFieldToBool**|構造体の `VARIANT_BOOL` フィールドを に変換します。| +|**\/?**|このツールのコマンド構文とオプションを表示します。| + +> [!NOTE] +> Tlbimp.exe のコマンド ライン オプションでは、大文字と小文字が区別されません。また、これらのオプションは任意の順序で指定できます。 オプションを一意に識別するために十分である場合は、オプションの一部を指定するだけでもかまいません。 したがって、**\/n** と指定した場合は **\/nologo**、**\/ou:** *outfile.dll* と指定した場合は **\/out:** *outfile.dll* であると見なされます。 + +## 解説 + Tlbimp.exe は、タイプ ライブラリ全体の変換を一括して実行します。 このツールを使用しても、単一のタイプ ライブラリで定義されている型のサブセットに関する型情報は生成できません。 + + アセンブリへの[厳密な名前](../../../docs/framework/app-domains/strong-named-assemblies.md)の割り当てを許可しておくと、さまざまな場合に役立ちます。この割り当てが必須であることもあります。 このため、Tlbimp.exe には、厳密な名前を持つアセンブリを生成するために必要な情報を提供するオプションが用意されています。 **\/keyfile:** オプションと **\/keycontainer:** オプションは、両方ともアセンブリに厳密な名前で署名します。 したがって、これらのオプションを両方同時に指定しないでください。 + + **\/reference** オプションを複数回使用すると、複数の参照アセンブリを指定できます。 + + 複数のタイプ ライブラリを格納するモジュールから 1 つのタイプ ライブラリをインポートするときに、タイプ ライブラリ ファイルにリソース ID を追加することもできます。 Tlbimp.exe は、このファイルが現在のディレクトリにあるか、ユーザーが完全パスを指定した場合にだけこのファイルを認識できます。 このトピックの下記の例を参照してください。 + +## 例 + `myTest.tlb` 内で見つかったタイプ ライブラリと同じ名前で、.dll 拡張子を持つアセンブリを生成するコマンドを次に示します。 + +``` +tlbimp myTest.tlb +``` + + `myTest.dll` という名前を持つアセンブリを生成するコマンドを次に示します。 + +``` +tlbimp myTest.tlb /out:myTest.dll +``` + + `MyModule.dll\1` で指定されているタイプ ライブラリと同じ名前で、.dll 拡張子を持つアセンブリを生成するコマンドを次に示します。 `MyModule.dll\1` は現在のディレクトリ内に置かれている必要があります。 + +``` +tlbimp MyModule.dll\1 +``` + + タイプ ライブラリ `TestLib.dll` に対して、`myTestLib.dll` という名前のアセンブリを生成するコマンドを次に示します。 **\/transform:dispret** オプションは、タイプ ライブラリのディスパッチ インターフェイスに対するメソッドの \[out, retval\] パラメーターをマネージ ライブラリの戻り値に変換します。 + +``` +tlbimp TestLib.dll /transform:dispret /out:myTestLib.dll +``` + + 上記の例のタイプ ライブラリ `TestLib.dll` には、void 型を返し、\[out, retval\] パラメーターを持つ、`SomeMethod` という名前のディスパッチ インターフェイス メソッドが含まれています。 `TestLib.dll` の `SomeMethod` に対する入力タイプ ライブラリ メソッド シグネチャのコードを次に示します。 + +``` +void SomeMethod([out, retval] VARIANT_BOOL*); +``` + + **\/transform:dispret** オプションを指定すると、Tlbimp.exe は、`SomeMethod` の `[out, retval]` パラメーターを `bool` 型の戻り値に変換します。 **\/transform:dispret** オプションを指定した場合に、Tlbimp.exe が、マネージ ライブラリ `myTestLib.dll` で `SomeMethod` に対して生成するメソッド シグネチャを次に示します。 + +```csharp +bool SomeMethod(); +``` + + Tlbimp.exe を使用して、**\/transform:dispret** を指定せずに `TestLib.dll` のマネージ ライブラリを生成すると、マネージ ライブラリ `myTestLib.dll` には `SomeMethod` の次のメソッド シグネチャが生成されます。 + +```csharp +void SomeMethod(out bool x); +``` + +## 参照 + [ツール](../../../docs/framework/tools/index.md) + [Tlbexp.exe \(タイプ ライブラリ エクスポーター\)](../../../docs/framework/tools/tlbexp-exe-type-library-exporter.md) + [タイプ ライブラリのアセンブリとしてのインポート](../../../docs/framework/interop/importing-a-type-library-as-an-assembly.md) + [Type Library to Assembly Conversion Summary](http://msdn.microsoft.com/ja-jp/bf3f90c5-4770-4ab8-895c-3ba1055cc958) + [Ildasm.exe \(IL 逆アセンブラー\)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) + [Sn.exe \(厳密名ツール\)](../../../docs/framework/tools/sn-exe-strong-name-tool.md) + [厳密な名前付きアセンブリ](../../../docs/framework/app-domains/strong-named-assemblies.md) + [Attributes for Importing Type Libraries into Interop Assemblies](http://msdn.microsoft.com/ja-jp/81e587b8-393f-43e1-9add-c4b05e65cbfd) + [コマンド プロンプト](../../../docs/framework/tools/developer-command-prompt-for-vs.md) \ No newline at end of file diff --git a/docs/framework/tools/winmdexp-exe-error-messages.md b/docs/framework/tools/winmdexp-exe-error-messages.md new file mode 100644 index 00000000000..5a3669d57f3 --- /dev/null +++ b/docs/framework/tools/winmdexp-exe-error-messages.md @@ -0,0 +1,188 @@ +--- +title: "Winmdexp.exe のエラー メッセージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "WME1095" + - "WME1110" + - "WME15" + - "WME1094" + - "WME1078" + - "WME1080" + - "WME1014" + - "WME1025" + - "WME1089" + - "WME1111" + - "WME1010" + - "WME1013" + - "WME1055" + - "WME1005" + - "WME1033" + - "WME1003" + - "WME1011" + - "WME1046" + - "WME0013" + - "WME1032" + - "WME1029" + - "WME1048" + - "WME1019" + - "WME1106" + - "WME0012" + - "WME1017" + - "WME1098" + - "WME1039" + - "WME20" + - "WME1006" + - "WME1088" + - "WME0004" + - "WME10" + - "WME12" + - "WME0015" + - "WME0017" + - "WME1026" + - "WME1045" + - "WME1002" + - "WME1051" + - "WME1107" + - "WME1100" + - "WME1072" + - "WME1090" + - "WME1105" + - "WME1022" + - "WME11" + - "WME17" + - "WME1063" + - "WME1041" + - "WME1057" + - "WME1037" + - "WME1007" + - "WME3" + - "WME1096" + - "WME0003" + - "WME0006" + - "WME1065" + - "WME1102" + - "WME1070" + - "WME1113" + - "WME1064" + - "WME1061" + - "WME1066" + - "WME1018" + - "WME1049" + - "WME1027" + - "WME1101" + - "WME1058" + - "WME0005" + - "WME1083" + - "WME1004" + - "WME1073" + - "WME1087" + - "WME1077" + - "WME19" + - "WME1086" + - "WME1085" + - "WME1040" + - "WME8" + - "WME1081" + - "WME1023" + - "WME4" + - "WME1050" + - "WME7" + - "WME1091" + - "WME14" + - "WME0007" + - "WME1024" + - "WME1012" + - "WME1036" + - "WME0010" + - "WME1104" + - "WME1035" + - "WME1021" + - "WME1075" + - "WME5" + - "WME13" + - "WME1074" + - "WME1028" + - "WME0014" + - "WME1030" + - "WME1008" + - "WME1052" + - "WME1079" + - "WME1054" + - "WME1093" + - "WME1042" + - "WME2" + - "WME1062" + - "WME6" + - "WME1001" + - "WME0011" + - "WME16" + - "WME0001" + - "WME1020" + - "WME1084" + - "WME1103" + - "WME1092" + - "WME1" + - "WME0002" + - "WME1112" + - "WME1016" + - "WME1060" + - "WME0008" + - "WME0016" + - "WME1097" + - "WME1034" + - "WME1108" + - "WME1082" + - "WME1099" + - "WME1069" + - "WME1031" + - "WME1009" + - "WME1068" + - "WME1067" + - "WME1059" + - "WME18" + - "WME1038" + - "WME0009" + - "WME1109" + - "WME1056" + - "WME1076" + - "WME1071" + - "WME1044" + - "WME1043" + - "WME1053" + - "WME1015" + - "WME1047" + - "WME9" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "エラー メッセージ, Winmdexp.exe" + - "Windows ランタイム メタデータのエクスポート ツール, エラー メッセージ" + - "Winmdexp.exe, エラー メッセージ" +ms.assetid: 8271973c-deba-47a6-8e5e-04ce63f146ad +caps.latest.revision: 5 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 5 +--- +# Winmdexp.exe のエラー メッセージ +ビルド処理は [!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]で **\[[!INCLUDE[wrt](../../../includes/wrt-md.md)] Component\]** のテンプレートを使用するため、Winmdexp.exe のエラー メッセージが **\[エラー一覧\]** に表示されて [Winmdexp.exe \(Windows ランタイム メタデータのエクスポート ツール\)](../../../docs/framework/tools/winmdexp-exe-windows-runtime-metadata-export-tool.md) を呼び出します。 Winmdexp.exe は `/target:winmdobj` オプションを指定してコンパイルされたモジュールを操作します。 これが入力としてコンパイルしたモジュールが必要になるため、エラー メッセージは、コンパイルが成功した場合のみ表示されます。 + + エラー メッセージで報告されるエラー条件をアドレス指定するのに必要なすべての情報を保持するように設計されています。 ただし、一部の問題はメッセージに収まるよりも多くの情報を必要とします。 Windows デベロッパー センター [Windows ランタイム コンポーネントのエラー条件の診断](http://go.microsoft.com/fwlink/p/?LinkId=251127) の追加情報を確認できます。 + + 問題を解決するためにメッセージに十分な情報が含まれていない場合、エラーがこの記事で説明は、\/EHa フィードバック リンクをこの記事で使用し、エラー メッセージを指定します。 また、でバグを報告できます [Microsoft Connect Web サイト](http://go.microsoft.com/fwlink/p/?LinkId=251130)。 また、より多くの情報を検索できます [Microsoft のフォーラム](http://go.microsoft.com/fwlink/p/?LinkId=251129)。 + +## 参照 + [Winmdexp.exe \(Windows ランタイム メタデータのエクスポート ツール\)](../../../docs/framework/tools/winmdexp-exe-windows-runtime-metadata-export-tool.md) + [Windows ランタイム コンポーネントのエラー条件の診断](http://go.microsoft.com/fwlink/p/?LinkId=251127) \ No newline at end of file diff --git a/docs/framework/tools/winmdexp-exe-windows-runtime-metadata-export-tool.md b/docs/framework/tools/winmdexp-exe-windows-runtime-metadata-export-tool.md new file mode 100644 index 00000000000..a9dc5ec81ee --- /dev/null +++ b/docs/framework/tools/winmdexp-exe-windows-runtime-metadata-export-tool.md @@ -0,0 +1,68 @@ +--- +title: "Winmdexp.exe (Windows ランタイム メタデータのエクスポート ツール) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "Windows ランタイム メタデータのエクスポート ツール" + - "Winmdexp.exe" +ms.assetid: d2ce0683-343d-403e-bb8d-209186f7a19d +caps.latest.revision: 16 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# Winmdexp.exe (Windows ランタイム メタデータのエクスポート ツール) +[!INCLUDE[wrt](../../../includes/wrt-md.md)] メタデータ エクスポート ツール \(Winmdexp.exe\) は、.NET Framework モジュールを、[!INCLUDE[wrt](../../../includes/wrt-md.md)] メタデータを含むファイルに変換します。 .NET Framework アセンブリと [!INCLUDE[wrt](../../../includes/wrt-md.md)] メタデータ ファイルは同じ物理形式を使用しますが、メタデータ テーブルの内容に違いがあります。つまり、.NET Framework アセンブリは、自動的に [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントとして使用できるわけではありません。 .NET Framework モジュールを [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントにするプロセスは、*エクスポート*と呼ばれます。 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] と [!INCLUDE[net_v451](../../../includes/net-v451-md.md)] では、生成される Windows メタデータ \(.winmd\) ファイルにメタデータと実装の両方が含まれます。 + + [!INCLUDE[vs_dev12](../../../includes/vs-dev12-md.md)] または [!INCLUDE[vs_dev11_ext](../../../includes/vs-dev11-ext-md.md)] で、C\# および Visual Basic の **\[Windows Store\]** の下にある **\[[!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネント\]** を使用する場合、コンパイラのターゲットは .winmdobj ファイルであり、後続のビルド ステップで Winmdexp.exe が呼び出され、.winmdobj ファイルが .winmd ファイルにエクスポートされます。 [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントをビルドする場合は、この方法をお勧めします。 Visual Studio による制御より細かくビルド プロセスを制御する場合は、Winmdexp.exe ファイルを直接使用します。 + + このツールは、Visual Studio と共に自動的にインストールされます。 このツールを実行するには、開発者コマンド プロンプト \(または、Windows 7 の Visual Studio コマンド プロンプト\) を使用します。 詳細については、「[コマンド プロンプト](../../../docs/framework/tools/developer-command-prompt-for-vs.md)」を参照してください。 + + コマンド プロンプトに次のように入力します。 + +## 構文 + +``` + +winmdexp [options] winmdmodule +``` + +#### パラメーター + +|引数またはオプション|説明| +|----------------|--------| +|`winmdmodule`|エクスポートするモジュール \(.winmdobj\) を指定します。 指定できるのは 1 つのモジュールのみです。 このモジュールを作成するには、`winmdobj` ターゲットと共に `/target` コンパイラ オプションを使用します。 MSDN ライブラリの「[\/target:winmdobj \(Windows ランタイムの中間ファイルの作成\)](../Topic/-target:winmdobj%20\(C%23%20Compiler%20Options\).md)」または「[\/target](../Topic/-target%20\(Visual%20Basic\).md)」を参照してください。| +|`/docfile:` `docfile`

`/d:` `docfile`|Winmdexp.exe が生成する出力 XML ドキュメント ファイルを指定します。 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] では、出力ファイルは基本的に入力 XML ドキュメント ファイルと同じです。| +|`/moduledoc:` `docfile`

`/md:` `docfile`|コンパイラが `winmdmodule` と共に生成した XML ドキュメント ファイルの名前を指定します。| +|`/modulepdb:` `symbolfile`

`/mp:` `symbolfile`|`winmdmodule` のシンボルを含むプログラム データベース \(PDB\) ファイルの名前を指定します。| +|`/nowarn:` `warning`|指定した警告番号が使用されなくなります。 *warning* の場合は、エラー コードの数字部分だけを先行ゼロなしで指定してください。| +|`/out:` `file`

`/o:` `file`|出力 Windows メタデータ \(.winmd\) ファイルの名前を指定します。| +|`/pdb:` `symbolfile`

`/p:` `symbolfile`|エクスポートされた Windows メタデータ \(.winmd\) ファイルのシンボルを含む出力プログラム データベース \(PDB\) ファイルの名前を指定します。| +|`/reference:` `winmd`

`/r:` `winmd`|エクスポート時に参照するメタデータ ファイル \(.winmd またはアセンブリ\) を指定します。 「\\Program Files \(x86\)\\Reference Assemblies\\Microsoft\\Framework\\.NETCore\\v4.5」\(32 ビット コンピューターでは「\\Program Files\\...」\) にある参照アセンブリを使用する場合は、System.Runtime.dll と mscorlib.dll の両方への参照を含めます。| +|`/utf8output`|UTF\-8 エンコードでメッセージが出力される必要があることを指定します。| +|`/warnaserror+`|すべての警告をエラーとして扱うよう指定しています。| +|**@** `responsefile`|オプション \(および、必要に応じて `winmdmodule`\) を含む応答 \(.rsp\) ファイルを指定します。 `responsefile` の各行に 1 つの引数またはオプションが含まれている必要があります。| + +## 解説 + Winmdexp.exe は、任意の .NET Framework アセンブリを .winmd ファイルに変換するようには設計されていません。 `/target:winmdobj` オプションでコンパイルされるモジュールが必要で、追加の制限が適用されます。 この中で最も重要な制限は、アセンブリの API サーフェイスで公開されるすべての型は必ず [!INCLUDE[wrt](../../../includes/wrt-md.md)] 型であるということです。 詳細については、Windows デベロッパー センターの記事「[C\# および Visual Basic での Windows ランタイム コンポーネントの作成](http://go.microsoft.com/fwlink/p/?LinkID=238313)」の「Windows ランタイム コンポーネントの宣言型」セクションを参照してください。 + + C\# または Visual Basic で [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリまたは [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントを作成する場合は、[!INCLUDE[wrt](../../../includes/wrt-md.md)] でのプログラミングをより自然にするためのサポートが .NET Framework で提供されています。 これは、記事「[Windows ストア アプリおよび Windows ランタイムのための .NET Framework サポート](../../../docs/standard/cross-platform/support-for-windows-store-apps-and-windows-runtime.md)」で解説されています。 プロセスでは、一般的に使用される [!INCLUDE[wrt](../../../includes/wrt-md.md)] 型が .NET Framework 型にマップされます。 Winmdexp.exe は、このプロセスを反転し、対応する [!INCLUDE[wrt](../../../includes/wrt-md.md)] 型を使用する API サーフェイスを生成します。 たとえば、 インターフェイスから構築された型は、[!INCLUDE[wrt](../../../includes/wrt-md.md)] [IVector\](http://go.microsoft.com/fwlink/p/?LinkId=251132) インターフェイスから構築された型にマップされます。 + +## 参照 + [Windows ストア アプリおよび Windows ランタイムのための .NET Framework サポート](../../../docs/standard/cross-platform/support-for-windows-store-apps-and-windows-runtime.md) + [Creating Windows Runtime Components in C\# and Visual Basic \(C\# および Visual Basic での Windows ランタイム コンポーネントの作成\)](http://go.microsoft.com/fwlink/p/?LinkID=238313) + [Winmdexp.exe のエラー メッセージ](../../../docs/framework/tools/winmdexp-exe-error-messages.md) + [Build, Deployment, and Configuration Tools \(.NET Framework\)](http://msdn.microsoft.com/ja-jp/b8c921be-6012-4181-b8d4-ab15813fc9a7) \ No newline at end of file diff --git a/docs/framework/tools/winres-exe-windows-forms-resource-editor.md b/docs/framework/tools/winres-exe-windows-forms-resource-editor.md new file mode 100644 index 00000000000..b87ae31bf2a --- /dev/null +++ b/docs/framework/tools/winres-exe-windows-forms-resource-editor.md @@ -0,0 +1,154 @@ +--- +title: "Winres.exe (Windows フォーム リソース エディター) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ".resx ファイル" + - "フォーム, ローカライズ" + - "ローカリゼーション" + - "resx ファイル" + - "Windows フォーム リソース エディター" + - "Windows フォーム, ローカリゼーション" + - "Winres.exe" +ms.assetid: cb8bc835-9221-4888-af53-1a4f5fad6c48 +caps.latest.revision: 23 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 23 +--- +# Winres.exe (Windows フォーム リソース エディター) +Windows フォーム リソース エディター \(Winres.exe\) は、ビジュアル レイアウト ツールです。ローカリゼーションの専門家は、このツールにより、Windows フォームのユーザー インターフェイス \(UI: User Interface\) で使用されるリソースをローカライズできます。 Winres.exe への入力として使用される .resx ファイルおよび .resources ファイルは、Microsoft Visual Studio などのビジュアル デザイン環境を使用して作成できます。 .NET Framework アプリケーションにおけるリソースの配置については、「[デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md)」をご覧ください。 + + このツールは、Visual Studio と共に自動的にインストールされます。 このツールを実行するには、開発者コマンド プロンプト \(または、Windows 7 の Visual Studio コマンド プロンプト\) を使用します。 詳しくは、「[コマンド プロンプト](../../../docs/framework/tools/developer-command-prompt-for-vs.md)」をご覧ください。 + + コマンド プロンプトに次のように入力します。 + +## 構文 + +``` +winres resourceFile +winres /? +``` + +## 解説 + +|引数|説明| +|--------|--------| +|`resourceFile`|ローカライズするリソース ファイル。 このファイルは Visual Studio デザイナーで作成した、Windows フォームの .resx ファイルまたは .resources ファイルである必要があります。 Winres.exe では、汎用的な .resx ファイルまたは .resources ファイルは開くことができません。| + +|オプション|説明| +|-----------|--------| +|**\/?**|このツールのコマンド構文とオプションを表示します。| + + Windows フォーム プロジェクトのフォームの UI 要素の状態は、通常、リソース ファイルに格納されます。リソース ファイルは、拡張子 .resx を持つ XML ベースのファイル、または、これに対応する、拡張子 .resources が設定された、コンパイル済みのバイナリ形式のファイルのいずれかです。 Winres.exe ツールでは、上記いずれかの形式のファイルを、Visual Studio のデザイン環境を使用しないで編集できますが、制限があります。 具体的には、以下の編集操作を行うことができます。 + +- ニュートラルまたは特定のカルチャ リソース ファイルを編集して、テキスト、サイズ、位置など、フォームやそのコントロールの UI プロパティを変更できます。 + +- ニュートラルまたは特定のカルチャのリソース ファイルを、既定のリソース ファイルから作成できます。 + +- カルチャ リソース ファイルを別のカルチャのリソース ファイルとして保存できます。 たとえば、英語 \(U.S.\) のリソース ファイルを、ポーランド語のリソース ファイルとして保存できます。 通常は、新しいファイルを引き続き編集して、新しいカルチャに対応させます。 + + さらに、「[ローカリゼーション用リソースの階層編成](http://msdn.microsoft.com/library/756hydy4\(v=vs.110\))」または「[ローカリゼーション用リソースの階層編成](http://msdn.microsoft.com/library/756hydy4\(v=vs.120\))」もご覧ください。 + + Winres.exe では、対応する .resources ファイルに .resx ファイルを変換できません。この場合は Resgen.exe ツールを使用してください。 Resgen.exe について詳しくは、「[Resgen.exe \(リソース ファイル ジェネレーター\)](../../../docs/framework/tools/resgen-exe-resource-file-generator.md)」をご覧ください。 + + Winres.exe はグラフィカル アプリケーションであり、ソース コードにアクセスすることなく、リソース ファイルだけを使用して、Windows フォームのデザイン時バージョンを再作成できます。 Winres.exe は、Visual Studio の Windows フォーム デザイナーおよび \[プロパティ\] ウィンドウを管理します。 この機能を使用すると、Windows フォームが含まれている .resources ファイルや .resx ファイルをビジュアル編集できます。 Winres.exe でのローカライズでは、通常、コントロールのラベルを編集し、ターゲット カルチャに合わせてローカライズしたラベルが納まるようにコントロールの位置とサイズを調整できます。 + + Winres.exe がコントロールの型を解決できない場合、ローカライズされた .resx ファイルまたは .resources ファイルには、プレースホルダー コントロールが作成されます。 このプレースホルダー コントロールは、Windows フォーム上にハッチ ウィンドウとして表示されます。 このハッチ ウィンドウのサイズおよび位置は、実際のコントロールのサイズおよび位置と一致します。 プレースホルダー コントロールのプロパティでローカライズできるプロパティは、すべて \[プロパティ\] ウィンドウに表示されます。 プレースホルダー コントロールに対して行ったすべての変更内容が、実際のコントロールに保存されます。 + +## Winres.exe と Visual Studio の比較 + 通常、アプリケーションの Windows フォームのローカライズを開始する前に、ローカリゼーション ツールとして Visual Studio と Winres.exe のどちらを使用するのかを決定する必要があります。 この後で説明するバージョンの互換性の問題が原因で、途中でツールを切り替えることができない場合があるためです。 + + Visual Studio の利点は、アプリケーションの開発にもローカライズにも使用できる点です。 フォームをローカライズするには、開発を完了してから、プロパティ エディターの Localizable プロパティでフォームの を `true` に設定し、**Language** プロパティを目的のカルチャに変更します。 次に、文字列を編集し、ターゲット カルチャに合わせて変更した文字列が納まるようにコントロールの位置およびサイズを調整します。 ローカライズ済み .resx file を保存するときに、Visual Studio は、ローカライズ可能なプロパティ \(ターゲット カルチャで変更したプロパティ\) だけをファイルに書き込みます。 Visual Studio は、ローカライズ済み .resx ファイル用のサテライト アセンブリを正しいディレクトリ位置に自動的に作成します。 さらに、「[チュートリアル : Windows フォームのローカリゼーション](http://msdn.microsoft.com/library/y99d1cd3\(v=vs.110\))」もご覧ください。 + + Visual Studio は、開発およびローカリゼーション用の統合環境を提供しますが、ローカリゼーションがサードパーティのローカライザーによって行われる場合には Winres.exe をツールとして使用することを推奨します。 Winres.exe はローカリゼーション専用のツールであるため、アプリケーションのコードとローカライズ対象のフォームを明確に分離でき、大規模なプロジェクトを管理するうえでより実用的です。 + +## Winres.exe の使用 + Winres.exe でローカライズを行う場合は、まず、Visual Studio のフォーム デザイナーなどのビジュアル デザイナーを使用してアプリケーションを開発する必要があります。 開発が完了したら、プロパティ エディターの Localizable プロパティでフォームの を `true` に設定し、既定のカルチャの .resx ファイルを、サードパーティのローカライザーに渡します。 この .resx ファイルには、Winres.exe が元のフォームのデザイン時バージョンを再作成するために使用する補足情報が含まれています。 + +> [!CAUTION] +> Winres.exe で既定のリソース ファイルを編集することはできません。 Winres.exe では、変更されたすべてのプロパティがローカライズされたプロパティと解釈され、ターゲット カルチャ リソース ファイルに保存されます。 + + カルチャ リソース ファイルの最終バージョンが完成したら、これを使用して、アプリケーションのローカライズ バージョンを作成できます。 詳細については、「[デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md)」を参照してください。 + + Winres.exe バージョン 2.0 には、以下の機能があります。 + +- Winres は、単一ファイル モード \(SFM: Single File Mode\) または Visual Studio ファイル モード \(VSFM: Visual Studio File Mode\) で使用できます。 SFM は、フォームとその内容についての情報すべてをリソース ファイルに格納する、レガシなモードです。 VSFM では、カルチャの変更点のみがリソース ファイルに格納されます。 + +- エラー レポート ウィンドウがインターフェイスに追加されました。メイン ウィンドウの左下に表示されます。 + +- ホット キーの重複をチェックできます。\[書式\] メニューの **\[ホット キーの確認\]** をクリックします。 + +## バージョンの互換性 + Visual Studio .NET 2002 と Visual Studio 2005 では、リソース ファイルの形式が変更されたため、Winres.exe もこれに合わせて変更されました。 したがって、原則として、アプリケーションの作成に使用している .NET Framework と共にリリースされた Winres.exe のバージョンを使用する必要があります。 次の表は、互換性のあるバージョンの一覧です。 + +|Visual Studio|.NET Framework|Winres.exe| +|-------------------|--------------------|----------------| +|Visual Studio .NET 2002|1.0|1.0| +|Visual Studio .NET 2003|1.1|1.1| +|Visual Studio 2005|2.0|2.0| +|Visual Studio 2008|3.0 と 3.5|3.0 と 3.5| +|Visual Studio 2010|4.0|4.0| + + Winres.exe バージョン 2.0 で、古いバージョンのリソース ファイルを開こうとすると、.NET Framework バージョン 2.0 互換の形式にファイルをアップグレードするよう促すメッセージが表示されます。 + + バージョン 2.0 より前のバージョンの .NET Framework の場合、Winres.exe および Visual Studio のフォーム デザイナーは、互換性のないカルチャ ニュートラルなリソース ファイルおよびカルチャ固有のリソース ファイルを作成していました。‏ したがって、ローカリゼーション処理を開始した後は、一方のツールだけを使用する必要がありました。 一方、Winres.exe バージョン 2.0 では、Visual Studio ファイル モード \(VSFM\) が追加されました。 この名前からわかるようにこのモードには互換性があり、このモードで保存したリソース ファイルはどちらのツールでも編集できます。 + +> [!NOTE] +> VSFM には、Visual Studio 互換であるという長所がありますが、変更点だけをリソース ファイルに格納するため、Winres.exe で VSFM を使用するには、現在のリソース ファイルの親ファイルが同じディレクトリに存在する必要があります。 たとえば、ドイツ語のリソース ファイル `TestApp.de-DE.resources` を編集している場合は、既定のリソース ファイル `TestApp.resx` が存在する必要があり、ときにはカルチャ ニュートラルなリソース ファイル `TestApp.de.resources` も必要となることがあります。 + +## 例 + +#### フォームに関連付けられた .resx ファイルまたは .resources ファイルをローカライズするには + +1. 開発者コマンド プロンプトで「`winres`」と入力して、Winres.exe を実行します。 + +2. ローカライズするフォームの既定のリソースを開くには、**\[ファイル\]** メニューの **\[開く\]** をクリックし、開くファイルを指定します。 + + または + + Winres.exe を起動するときに、コマンド ラインで開くファイルを指定します。 + + 次のコマンドは、Winres.exe を起動し、`TestApp.resx` に関連付けられたフォームをフォーム デザイナーに読み込みます。 + + ``` + winres TestApp.resx + ``` + + 次のコマンドは、Winres.exe を起動し、`TestApp.resources` に関連付けられたフォームをフォーム デザイナーに読み込みます。 + + ``` + winres TestApp.resources + ``` + + > [!NOTE] + > リソースが編集中であるフォームが他のフォームを継承したフォームである場合は、継承したフォームを含むアセンブリと、継承元 \(派生元\) のフォームを含むアセンブリの両方が、グローバル アセンブリ キャッシュ \(GAC: Global Assembly Cache\) に登録されているか、WinRes.exe と同じディレクトリに存在する必要があります。 .NET Framework のコンポーネントを GAC にインストールする方法の詳細については、「[グローバル アセンブリ キャッシュ](../../../docs/framework/app-domains/gac.md)」をご覧ください。 + +3. フォーム上のコントロールを選択し、このコントロールの などのプロパティを変更して、ローカライズ後のカルチャおよび言語を反映します。 ローカライズされたテキストが納まるように、必要に応じてコントロールを移動したりそのサイズを変更したりします。 + +4. ローカライズしたバージョンの .resx ファイルや .resources ファイルを保存するには、**\[上書き保存\]** ボタンをクリックするか、**\[ファイル\]** メニューの \[上書き保存\] をクリックします。 **\[カルチャを選択する\]** ウィンドウが表示されます。 + +5. 適切なカルチャおよびファイル モードを選択し、**\[OK\]** をクリックします。 ファイルは、ローカライズ後のリソース ファイルで予測される名前付け規則を使用して保存されます。 たとえば、`TestApp.resources` をドイツのドイツ語用にローカライズする場合、ファイルは `TestApp.de-DE.resources` という名前で保存されます。 `TestApp.resx` をドイツのドイツ語用にローカライズする場合、ファイルは `TestApp.de-DE.resx` という名前で保存されます。 リソースの名前付け規則について詳しくは、「[リソースのパッケージ化と配置](../../../docs/framework/resources/packaging-and-deploying-resources-in-desktop-apps.md)」をご覧ください。 ランタイムで使用される定義済みカルチャ名の一覧については、「[CultureInfo クラス](https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx)」を参照してください。 + +## 参照 + + + + + + [ツール](../../../docs/framework/tools/index.md) + [デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md) + [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/TOC.md b/docs/framework/ui-automation/TOC.md new file mode 100644 index 00000000000..806d92e8d37 --- /dev/null +++ b/docs/framework/ui-automation/TOC.md @@ -0,0 +1,117 @@ +# [Obtain Text Attributes Using UI Automation](obtain-text-attributes-using-ui-automation.md) +# [UI Automation Support for the Tab Control Type](ui-automation-support-for-the-tab-control-type.md) +# [Implement UI Automation Providers in a Client Application](implement-ui-automation-providers-in-a-client-application.md) +# [Use Caching in UI Automation](use-caching-in-ui-automation.md) +# [Implementing the UI Automation Dock Control Pattern](implementing-the-ui-automation-dock-control-pattern.md) +# [UI Automation Support for the Calendar Control Type](ui-automation-support-for-the-calendar-control-type.md) +# [Accessibility](accessibility.md) +# [Accessibility Best Practices](accessibility-best-practices.md) +# [Implementing the UI Automation Invoke Control Pattern](implementing-the-ui-automation-invoke-control-pattern.md) +# [UI Automation Clients for Managed Code](ui-automation-clients-for-managed-code.md) +# [Create a Client-Side UI Automation Provider](create-a-client-side-ui-automation-provider.md) +# [UI Automation Support for the Header Control Type](ui-automation-support-for-the-header-control-type.md) +# [UI Automation Fundamentals](index.md) +# [Obtain Mixed Text Attribute Details Using UI Automation](obtain-mixed-text-attribute-details-using-ui-automation.md) +# [UI Automation Control Patterns Overview](ui-automation-control-patterns-overview.md) +# [How-to Topics](ui-automation-text-pattern-how-to-topics.md) +# [UI Automation Support for the ToolTip Control Type](ui-automation-support-for-the-tooltip-control-type.md) +# [Find a UI Automation Element for a List Item](find-a-ui-automation-element-for-a-list-item.md) +# [Obtaining UI Automation Elements](obtaining-ui-automation-elements.md) +# [UI Automation Support for the MenuBar Control Type](ui-automation-support-for-the-menubar-control-type.md) +# [UI オートメーション GridItem コントロール パターンの実装](implementing-the-ui-automation-griditem-control-pattern.md) +# [UI Automation Support for the ComboBox Control Type](ui-automation-support-for-the-combobox-control-type.md) +# [クライアントの UI オートメーション イベント](ui-automation-events-for-clients.md) +# [Find and Highlight Text Using UI Automation](find-and-highlight-text-using-ui-automation.md) +# [UI オートメーション イベントのサブスクライブ](subscribe-to-ui-automation-events.md) +# [UI Automation Text Pattern](ui-automation-text-pattern.md) +# [UI Automation Specification and Community Promise](ui-automation-specification-and-community-promise.md) +# [Implementing the UI Automation Value Control Pattern](implementing-the-ui-automation-value-control-pattern.md) +# [Navigate Among UI Automation Elements with TreeWalker](navigate-among-ui-automation-elements-with-treewalker.md) +# [Expose the Content of a Table Using UI Automation](expose-the-content-of-a-table-using-ui-automation.md) +# [UI オートメーション TableItem コントロール パターンの実装](implementing-the-ui-automation-tableitem-control-pattern.md) +# [UI Automation Support for the Text Control Type](ui-automation-support-for-the-text-control-type.md) +# [UI Automation Support for the Document Control Type](ui-automation-support-for-the-document-control-type.md) +# [UI Automation Properties Overview](ui-automation-properties-overview.md) +# [Access Embedded Objects Using UI Automation](access-embedded-objects-using-ui-automation.md) +# [UI Automation Support for the DataGrid Control Type](ui-automation-support-for-the-datagrid-control-type.md) +# [Implementing the UI Automation Window Control Pattern](implementing-the-ui-automation-window-control-pattern.md) +# [Use the AutomationID Property](use-the-automationid-property.md) +# [Register a Client-Side Provider Assembly](register-a-client-side-provider-assembly.md) +# [Raise Events from a UI Automation Provider](raise-events-from-a-ui-automation-provider.md) +# [UI Automation Support for the CheckBox Control Type](ui-automation-support-for-the-checkbox-control-type.md) +# [UI Automation Support for the TabItem Control Type](ui-automation-support-for-the-tabitem-control-type.md) +# [Caching in UI Automation Clients](caching-in-ui-automation-clients.md) +# [TextPattern and Embedded Objects Overview](textpattern-and-embedded-objects-overview.md) +# [UI Automation Support for the Table Control Type](ui-automation-support-for-the-table-control-type.md) +# [UI オートメーション ScrollItem コントロール パターンの実装](implementing-the-ui-automation-scrollitem-control-pattern.md) +# [Add Content to a Text Box Using UI Automation](add-content-to-a-text-box-using-ui-automation.md) +# [Control Pattern Mapping for UI Automation Clients](control-pattern-mapping-for-ui-automation-clients.md) +# [UI Automation Support for the Separator Control Type](ui-automation-support-for-the-separator-control-type.md) +# [How-to Topics](ui-automation-providers-for-managed-code-how-to-topics.md) +# [UI オートメーション Table コントロール パターンの実装](implementing-the-ui-automation-table-control-pattern.md) +# [UI Automation and Microsoft Active Accessibility](ui-automation-and-microsoft-active-accessibility.md) +# [UI Automation Support for the RadioButton Control Type](ui-automation-support-for-the-radiobutton-control-type.md) +# [UI Automation Providers Overview](ui-automation-providers-overview.md) +# [UI Automation Support for the ToolBar Control Type](ui-automation-support-for-the-toolbar-control-type.md) +# [Get the Toggle State of a Check Box Using UI Automation](get-the-toggle-state-of-a-check-box-using-ui-automation.md) +# [UI Automation Support for the Pane Control Type](ui-automation-support-for-the-pane-control-type.md) +# [Implementing the UI Automation SelectionItem Control Pattern](implementing-the-ui-automation-selectionitem-control-pattern.md) +# [UI Automation Control Types Overview](ui-automation-control-types-overview.md) +# [Implementing the UI Automation Scroll Control Pattern](implementing-the-ui-automation-scroll-control-pattern.md) +# [How-to Topics](ui-automation-control-patterns-how-to-topics.md) +# [UI Automation Support for the Edit Control Type](ui-automation-support-for-the-edit-control-type.md) +# [Server-Side UI Automation Provider Implementation](server-side-ui-automation-provider-implementation.md) +# [UI Automation Events Overview](ui-automation-events-overview.md) +# [How-to Topics](ui-automation-clients-for-managed-code-how-to-topics.md) +# [UI Automation Overview](ui-automation-overview.md) +# [UI Automation Providers for Managed Code](ui-automation-providers-for-managed-code.md) +# [Implementing the UI Automation Transform Control Pattern](implementing-the-ui-automation-transform-control-pattern.md) +# [Invoke a Control Using UI Automation](invoke-a-control-using-ui-automation.md) +# [Return Properties from a UI Automation Provider](return-properties-from-a-ui-automation-provider.md) +# [Implementing the UI Automation MultipleView Control Pattern](implementing-the-ui-automation-multipleview-control-pattern.md) +# [UI Automation Control Patterns for Clients](ui-automation-control-patterns-for-clients.md) +# [Expose a Server-side UI Automation Provider](expose-a-server-side-ui-automation-provider.md) +# [UI Automation Support for the MenuItem Control Type](ui-automation-support-for-the-menuitem-control-type.md) +# [UI Automation Support for the Window Control Type](ui-automation-support-for-the-window-control-type.md) +# [UI Automation Support for the Image Control Type](ui-automation-support-for-the-image-control-type.md) +# [UI Automation Support for the StatusBar Control Type](ui-automation-support-for-the-statusbar-control-type.md) +# [Implementing the UI Automation Selection Control Pattern](implementing-the-ui-automation-selection-control-pattern.md) +# [UI Automation and Screen Scaling](ui-automation-and-screen-scaling.md) +# [UI Automation TextPattern Overview](ui-automation-textpattern-overview.md) +# [Move a UI Automation Element](move-a-ui-automation-element.md) +# [Traverse Text Using UI Automation](traverse-text-using-ui-automation.md) +# [Implementing the UI Automation Toggle Control Pattern](implementing-the-ui-automation-toggle-control-pattern.md) +# [Enable Navigation in a UI Automation Fragment Provider](enable-navigation-in-a-ui-automation-fragment-provider.md) +# [UI Automation Support for the TitleBar Control Type](ui-automation-support-for-the-titlebar-control-type.md) +# [Find a UI Automation Element Based on a Property Condition](find-a-ui-automation-element-based-on-a-property-condition.md) +# [UI Automation Support for the Spinner Control Type](ui-automation-support-for-the-spinner-control-type.md) +# [Using UI Automation for Automated Testing](using-ui-automation-for-automated-testing.md) +# [UI Automation Support for Standard Controls](ui-automation-support-for-standard-controls.md) +# [Client-Side UI Automation Provider Implementation](client-side-ui-automation-provider-implementation.md) +# [UI Automation Support for the ListItem Control Type](ui-automation-support-for-the-listitem-control-type.md) +# [UI Automation Support for the ScrollBar Control Type](ui-automation-support-for-the-scrollbar-control-type.md) +# [UI Automation Support for the Tree Control Type](ui-automation-support-for-the-tree-control-type.md) +# [UI Automation Support for the ProgressBar Control Type](ui-automation-support-for-the-progressbar-control-type.md) +# [UI Automation Control Types](ui-automation-control-types.md) +# [UI Automation Properties for Clients](ui-automation-properties-for-clients.md) +# [Implementing the UI Automation Grid Control Pattern](implementing-the-ui-automation-grid-control-pattern.md) +# [UI Automation Support for the TreeItem Control Type](ui-automation-support-for-the-treeitem-control-type.md) +# [Implementing the UI Automation RangeValue Control Pattern](implementing-the-ui-automation-rangevalue-control-pattern.md) +# [UI Automation Control Patterns](ui-automation-control-patterns.md) +# [Implementing the UI Automation ExpandCollapse Control Pattern](implementing-the-ui-automation-expandcollapse-control-pattern.md) +# [UI Automation Security Overview](ui-automation-security-overview.md) +# [UI Automation Support for the Group Control Type](ui-automation-support-for-the-group-control-type.md) +# [UI Automation Support for the DataItem Control Type](ui-automation-support-for-the-dataitem-control-type.md) +# [UI Automation Support for the SplitButton Control Type](ui-automation-support-for-the-splitbutton-control-type.md) +# [UI Automation Support for the Thumb Control Type](ui-automation-support-for-the-thumb-control-type.md) +# [UI Automation Support for the Hyperlink Control Type](ui-automation-support-for-the-hyperlink-control-type.md) +# [UI Automation Support for the List Control Type](ui-automation-support-for-the-list-control-type.md) +# [Support Control Patterns in a UI Automation Provider](support-control-patterns-in-a-ui-automation-provider.md) +# [UI Automation Threading Issues](ui-automation-threading-issues.md) +# [UI Automation Support for the HeaderItem Control Type](ui-automation-support-for-the-headeritem-control-type.md) +# [Get UI Automation Element Properties](get-ui-automation-element-properties.md) +# [UI Automation Support for the Button Control Type](ui-automation-support-for-the-button-control-type.md) +# [UI Automation Support for the Slider Control Type](ui-automation-support-for-the-slider-control-type.md) +# [UI オートメーション ツリーの概要](ui-automation-tree-overview.md) +# [UI Automation Support for the Menu Control Type](ui-automation-support-for-the-menu-control-type.md) +# [サポートされている UI オートメーション コントロール パターンの取得](get-supported-ui-automation-control-patterns.md) diff --git a/docs/framework/ui-automation/access-embedded-objects-using-ui-automation.md b/docs/framework/ui-automation/access-embedded-objects-using-ui-automation.md new file mode 100644 index 00000000000..f8a4e8eef62 --- /dev/null +++ b/docs/framework/ui-automation/access-embedded-objects-using-ui-automation.md @@ -0,0 +1,64 @@ +--- +title: "Access Embedded Objects Using UI Automation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "embedded objects, accessing" + - "accessing embedded objects" + - "UI Automation, accessing embedded objects" +ms.assetid: a5b513ec-7fa6-4460-869f-c18ff04f7cf2 +caps.latest.revision: 17 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 17 +--- +# Access Embedded Objects Using UI Automation +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、どのように [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] を使用して、テキスト コントロールのコンテンツ内に埋め込みオブジェクトを公開できるのかを示しています。 + +> [!NOTE] +> 埋め込みオブジェクトには、イメージ、ハイパーリンク、ボタン、テーブル、ActiveX コントロールを含めることができます。 + + 埋め込みオブジェクトは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] テキスト プロバイダーの子と見なされます。 これにより、他のすべての [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] 要素と同じ UI オートメーション ツリーの構造を介して公開することができます。 次に、機能は、埋め込みオブジェクトのコントロール型で通常必要とされるコントロール パターンを通じて公開されます \(たとえば、ハイパーリンクはテキスト ベースであるため、 をサポートします\)。 + + ![テキスト コンテナー内の埋め込みオブジェクト。](../../../docs/framework/ui-automation/media/uia-textpattern-embeddedobjects.PNG "UIA\_TextPattern\_EmbeddedObjects") +テキスト コンテンツ \(「ご存知でしたか?」\) を含むドキュメントのサンプル および 2 つの埋め込みオブジェクト \(クジラの画像とテキストのハイパーリンク\)。コード例のターゲットとして使用されます。 + +## 使用例 + 次のコード例は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] テキスト プロバイダー内から埋め込みオブジェクトのコレクションを取得する方法を示します。 概要で提供されたサンプルのドキュメントについては、2 つのオブジェクトが返されます \(イメージ要素と、テキスト要素\)。 + +> [!NOTE] +> イメージ要素には、画像に関連付けられて説明する組み込みテキストが必要であり、通常は 内にあります \(「青いクジラ」など\)。 ただし、イメージ オブジェクトにまたがるテキスト範囲を取得すると、イメージもこの説明のテキストもテキストのストリームで返されません。 + + [!code-csharp[FindText#StartApp](../../../samples/snippets/csharp/VS_Snippets_Wpf/FindText/CSharp/SearchWindow.cs#startapp)] + [!code-vb[FindText#StartApp](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FindText/VisualBasic/SearchWindow.vb#startapp)] +[!code-csharp[FindText#FindTextProvider](../../../samples/snippets/csharp/VS_Snippets_Wpf/FindText/CSharp/SearchWindow.cs#findtextprovider)] +[!code-vb[FindText#FindTextProvider](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FindText/VisualBasic/SearchWindow.vb#findtextprovider)] +[!code-csharp[FindText#GetChildren](../../../samples/snippets/csharp/VS_Snippets_Wpf/FindText/CSharp/SearchWindow.cs#getchildren)] +[!code-vb[FindText#GetChildren](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FindText/VisualBasic/SearchWindow.vb#getchildren)] + +## 使用例 + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] テキスト プロバイダー内の埋め込みオブジェクトからテキストの範囲を取得する方法を、次のコード例で示します。 取得されるテキストの範囲は空の範囲です。ここで、開始エンドポイントは "… ocean.\(space\)" の後に続き、終了エンドポイントは、\(概要で提供した画像に示されているように\) 埋め込みハイパーリンクを表す終了の "." に先行します。 これは空の範囲ですが、スパンが 0 ではないため、低次元テキスト範囲とはみなされません。 + +> [!NOTE] +> はハイパーリンクなどのテキスト ベースの埋め込みオブジェクトを取得することができます。ただし、セカンダリ は完全な機能を公開するために、埋め込みオブジェクトから取得する必要があります。 + + [!code-csharp[UIATextPattern_snip#GetRangeFromChild](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATextPattern_snip/CSharp/SearchWindow.cs#getrangefromchild)] + [!code-vb[UIATextPattern_snip#GetRangeFromChild](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIATextPattern_snip/VisualBasic/SearchWindow.vb#getrangefromchild)] + +## 参照 + [UI Automation TextPattern Overview](../../../docs/framework/ui-automation/ui-automation-textpattern-overview.md) + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Add Content to a Text Box Using UI Automation](../../../docs/framework/ui-automation/add-content-to-a-text-box-using-ui-automation.md) + [Find and Highlight Text Using UI Automation](../../../docs/framework/ui-automation/find-and-highlight-text-using-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/accessibility-best-practices.md b/docs/framework/ui-automation/accessibility-best-practices.md new file mode 100644 index 00000000000..bba3d2131eb --- /dev/null +++ b/docs/framework/ui-automation/accessibility-best-practices.md @@ -0,0 +1,143 @@ +--- +title: "Accessibility Best Practices | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "best practices for accessibility" + - "accessibility, best practices for" +ms.assetid: e6d5cd98-21a3-4b01-999c-fb953556d0e6 +caps.latest.revision: 16 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 16 +--- +# Accessibility Best Practices +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + コントロールやアプリケーションで以下のベスト プラクティスを実行すると、[!INCLUDE[TLA#tla_at](../../../includes/tlasharptla-at-md.md)] デバイスを使用するユーザーのアクセシビリティ が向上します。 これらのベスト プラクティスの多くは [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] に適した設計を中心としています。 各ベスト プラクティスには、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)] コントロールまたはアプリケーションの実装の情報が含まれています。 多くの場合、これらのベスト プラクティスに対応する作業は既に [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] コントロールに含まれています。 + + +## プログラムによるアクセス + プログラムによるアクセスにより、すべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素にラベルが付き、プロパティの値が公開され、適切なイベントが発生するようになります。 標準の [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] コントロールでは、この作業の大部分が を介して既に実行されています。 カスタム コントロールでは、プログラムによるアクセスが正しく実装されていることを確認する必要があります。 + + +### すべての UI 要素とテキストでのプログラムによるアクセスの有効化 + [!INCLUDE[TLA#tla_ui#initcap](../../../includes/tlasharptla-uisharpinitcap-md.md)] 要素では、プログラムによるアクセスを有効にする必要があります。[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] が標準的な [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] コントロールである場合、プログラムによるアクセスのサポートがコントロールに含まれます。 コントロールがカスタム コントロール \(コモン コントロールのサブクラスに指定されているコントロール、またはコントロールからサブクラスに指定されたコントロール\) である場合、変更が必要な領域に対する の実装を確認する必要があります。 + + このベスト プラクティスに従うことで [!INCLUDE[TLA2#tla_at](../../../includes/tla2sharptla-at-md.md)] ベンダーは、製品の [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] の要素を特定および操作することができます。 + + +### UI オブジェクト、フレーム、およびページにおける、場所の名前、タイトル、説明 + スクリーン リーダーなどの支援のテクノロジでは、ナビゲーション スキーム内のフレーム、オブジェクト、またはページの場所を理解するためにタイトルを使用します。 そのため、タイトルは非常にわかりやすくする必要があります。 たとえば、「Microsoft Web ページ」といった Web ページのタイトルでは、ユーザーはいくつかの特定の領域に深く入っていった場合に役に立ちません。 わかりやすいタイトルは、スクリーン リーダーに依存する視覚障がい者にとって重要です。 同様に、 [!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)] コントロールでも、 は [!INCLUDE[TLA2#tla_at](../../../includes/tla2sharptla-at-md.md)] デバイスにとって重要です。 + + このベスト プラクティスに従うことにより、[!INCLUDE[TLA2#tla_at](../../../includes/tla2sharptla-at-md.md)] はサンプル コントロールとアプリケーションの [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] を特定および操作できるようになります。 + + +### プログラムによるイベントが、すべての UI 操作によってトリガーされることを確認する + このベスト プラクティスに従うことにより、[!INCLUDE[TLA2#tla_at](../../../includes/tla2sharptla-at-md.md)] は [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] の変化をリッスンし、変化についてユーザーに通知できるようになります。 + + +## ユーザー設定 + このセクションのベスト プラクティスでは、コントロールやアプリケーションはユーザー設定をオーバーライドしないようにします。 + + +### すべてのシステム全体の設定を尊重し、ユーザー補助機能に干渉しない + ユーザーは、コントロール パネルを使用して、システム全体のフラグを設定できます。その他のフラグはプログラムで設定できます。 これらの設定は、コントロールやアプリケーションで変更しないでください。 また、アプリケーションは、ホスト オペレーティング システムのユーザー補助の設定をサポートする必要があります。 + + このベスト プラクティスに従うことにより、ユーザーはユーザー補助の設定を行えるとともに、これらの設定がアプリケーションによって変更されないことを認識できます。 + + +## UI のビジュアル デザイン + このセクションのベスト プラクティスでは、コントロールまたはアプリケーションが色と画像を効果的に使用するとともに、[!INCLUDE[TLA2#tla_at#plural](../../../includes/tla2sharptla-atsharpplural-md.md)] によって使用できるようにします。 + + +### 色をハードコーディングしない + 色覚に障がいがあるユーザー、弱視のユーザー、または白黒の画面を使用するユーザーは、ハード コーディングされた色を持つアプリケーションを使用できません。 + + このベスト プラクティスに従うことにより、ユーザーは、個人のニーズに基づいて色の組み合わせを調整できるようになります。 + + +### ハイ コントラストとすべてのシステム表示属性をサポートする + アプリケーションは、ユーザーが選択したシステム全体のコントラスト設定、色の選択、またはその他のシステム全体のディスプレイの設定と属性を中断または無効にしてはなりません。 ユーザーが採用しているシステム全体の設定は、アプリケーションのユーザー補助機能を強化します。そのため、これをアプリケーションによって無効にしたり、無視したりしないでください。 色は、正しいコントラストを提供するため、正しい前景色と背景色の組み合わせで使用する必要があります。 関係のない色を混在させないでください。また、色を反転させないでください。 + + 黒の背景に白いテキストなど、特定のハイ コントラストの組み合わせが必要なユーザーは多数います。 それらを反転させて、白地に黒のテキストとして描画すると、前景色の上に背景色がにじみ、一部のユーザーには読みづらくなります。 + + +### すべての DPI 設定によってすべての UI を正しく拡大\/縮小する + すべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 設定によってすべての [!INCLUDE[TLA#tla_dpi](../../../includes/tlasharptla-dpi-md.md)] が正しく拡大\/縮小されていることを確認します。 また、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素が 1024 x 768、120 [!INCLUDE[TLA#tla_dpi](../../../includes/tlasharptla-dpi-md.md)] の画面に合っていることを確認します。 + + +## ナビゲーション + このセクションのベスト プラクティスでは、ナビゲーションがコントロールとアプリケーションで対処されていることを確認します。 + + +### すべての UI 要素にキーボード インターフェイスを指定する + タブ ストップは、特に慎重に計画された場合は、ユーザーが [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] をナビゲートする別の方法を提供します。 + + アプリケーションは、次のキーボード インターフェイスを備えている必要があります。 + +- ボタン、リンク、またはリスト ボックスなど、ユーザーが操作できるすべてのコントロールのタブ ストップ + +- 論理的なタブの順序 + + +### キーボード フォーカスの表示 + ユーザーがキーストロークの効果を予測できるように、ユーザーはどのオブジェクトにキーボード フォーカスがあるかを認識しておく必要があります。 キーボード フォーカスを強調表示するには、色、フォント、または四角形や拡大などのグラフィックスを使用します。 キーボード フォーカスを音声で強調表示するには、音量、音の高さ、または音質を変更します。 + + 混乱を回避するには、アプリケーションはビジュアル フォーカス インジケーターをすべて非表示にし、非アクティブなウィンドウ \(またはペイン\) にある選択項目を暗くする必要があります。 + + アプリケーションは、キーボード フォーカスで以下を行う必要があります。 + +- 1 つの項目が常にキーボード フォーカスされている必要がある + +- キーボード フォーカスは明確に表示されている必要がある + +- 選択項目またはフォーカスされた項目は視覚的に強調表示されている必要がある + + +### ナビゲーションの標準と強力なナビゲーション スキームをサポートする + さまざまなキーボード ナビゲーションの側面で、ユーザーが [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] をナビゲートするさまざまな方法が提供されています。 + + アプリケーションは、次のキーボード インターフェイスを備えている必要があります。 + +- すべてのコマンド、メニュー、およびコントロール用のショートカット キーと下線付きのアクセス キー + +- 重要なリンクへのキーボード ショートカット + +- すべてのメニュー項目にアクセス キーがあり、すべてのボタンにアクセラレータ キーがあり、すべてのコマンドにアクセラレータ キーがある + + +### マウスの位置がキーボード ナビゲーションと干渉しないようにする + マウスの位置は、キーボードのナビゲーションと干渉しないようにしてください。 たとえば、マウスが別の場所に位置し、ユーザーがキーボードでナビゲートする場合、マウスのクリックは、ユーザーが開始するまで発生しないようにします。 + + +## マルチモーダル インターフェイス + このセクションのベスト プラクティスでは、アプリケーション [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] にはビジュアル要素の代替案が含まれています。 + + +### テキスト以外の要素に相当する、ユーザーが選択可能な項目を提供する + テキスト以外の各要素について、テキスト、チャット内容、または音声による説明 \(代替テキスト、キャプション、視覚的なフィードバックなど\) に相当する、ユーザーが選択可能な項目を提供します。 + + テキスト以外の要素には、幅広い範囲の [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素 \(画像、画像マップ領域、アニメーション、アプレット、フレーム、スクリプト、グラフィカルなボタン、サウンド、スタンドアロンのオーディオ ファイル、およびビデオなど\) があります。 テキスト以外の要素は、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] のコンテンツを理解するためにユーザーがアクセスを必要とする視覚的な情報、音声、または通常のオーディオ情報が含まれる場合は重要になります。 + + +### 色を使用するだけでなく、色の代替手段を提供する + 色を使用して、他の手段によって示される情報を強化、強調、または再反復処理します。ただし、色単独を使用して情報を伝達しないでください。 色覚に障がいがあるユーザーまたは白黒表示のディスプレイを持つユーザーには、色の代替手段が必要です。 + + +### デバイスに依存しない呼び出しで標準の入力 API を使用する + デバイスに依存しない呼び出しは、キーボードとマウスの機能が同等であることを保証する一方、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] に関する必要な情報を [!INCLUDE[TLA2#tla_at](../../../includes/tla2sharptla-at-md.md)] に提供します。 + +## 参照 + + [NumericUpDown Custom Control with Theme and UI Automation Support Sample](http://msdn.microsoft.com/ja-jp/9aed3c10-68eb-419e-a57f-1d2af15a8253) + [キーボード ユーザー インターフェイス設計のガイドライン](http://msdn2.microsoft.com/library/ms971323.aspx) \ No newline at end of file diff --git a/docs/framework/ui-automation/accessibility.md b/docs/framework/ui-automation/accessibility.md new file mode 100644 index 00000000000..ae7c4b54635 --- /dev/null +++ b/docs/framework/ui-automation/accessibility.md @@ -0,0 +1,41 @@ +--- +title: "Accessibility | Microsoft Docs" +ms.custom: "" +ms.date: "03/17/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "UI Automation" +ms.assetid: e7ec856e-41ee-47b1-9d57-b75a3dad088c +caps.latest.revision: 80 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +--- +# Accessibility +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]は、[!INCLUDE[TLA#tla_win](../../../includes/tlasharptla-win-md.md)] の新しいアクセシビリティ フレームワークです。 [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] に関する情報にプログラムからアクセスできるようにすることで、支援技術製品や自動テスト フレームワークのニーズに応えます。 さらに、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を利用することで、ユーザー補助を備えたコントロールやアプリケーション製品を開発できます。 + + ここでは、マネージ コード用の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] [!INCLUDE[TLA#tla_api](../../../includes/tlasharptla-api-md.md)] について説明します。 C\+\+ での [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]のプログラミングについては、「[Win32 アプリケーションの UI オートメーション](entry_uiauto_win32)」を参照してください。 + +## このセクションの内容 + [Accessibility Best Practices](../../../docs/framework/ui-automation/accessibility-best-practices.md) + [UI Automation Fundamentals](../../../docs/framework/ui-automation/index.md) + [UI Automation Providers for Managed Code](../../../docs/framework/ui-automation/ui-automation-providers-for-managed-code.md) + [UI Automation Clients for Managed Code](../../../docs/framework/ui-automation/ui-automation-clients-for-managed-code.md) + [UI Automation Control Patterns](../../../docs/framework/ui-automation/ui-automation-control-patterns.md) + [UI Automation Text Pattern](../../../docs/framework/ui-automation/ui-automation-text-pattern.md) + [UI Automation Control Types](../../../docs/framework/ui-automation/ui-automation-control-types.md) + [UI Automation Specification and Community Promise](../../../docs/framework/ui-automation/ui-automation-specification-and-community-promise.md) + +## 関連項目 + [Accessibility Samples](http://msdn.microsoft.com/ja-jp/17dd2b9f-9e36-4432-8b9b-6c5fc295b4a6) \ No newline at end of file diff --git a/docs/framework/ui-automation/add-content-to-a-text-box-using-ui-automation.md b/docs/framework/ui-automation/add-content-to-a-text-box-using-ui-automation.md new file mode 100644 index 00000000000..aba77bb7c36 --- /dev/null +++ b/docs/framework/ui-automation/add-content-to-a-text-box-using-ui-automation.md @@ -0,0 +1,36 @@ +--- +title: "Add Content to a Text Box Using UI Automation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "adding content to text boxes" + - "text boxes, adding content" + - "UI Automation, adding content to text boxes" +ms.assetid: 8bdd1a73-1ecb-4a05-a891-a7827ebb767f +caps.latest.revision: 13 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 13 +--- +# Add Content to a Text Box Using UI Automation +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックのコード例では、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]を使用して 1 行のテキスト ボックスにテキストを挿入する方法を示します。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を適用できない複数行コントロールおよびリッチ テキスト コントロールのために、別の方法も提供されています。 また、比較のために、この例では Win32 メソッドを使用して同じことを実現する方法も示します。 + +## 使用例 + 次の例では、ターゲット アプリケーションで一連のテキスト コントロールをステップ スルーします。 各テキスト コントロールについては、 メソッドを使用して、各コントロールから オブジェクトを取得できるかどうかがテストされます。 テキスト コントロールが をサポートしていない場合は、 メソッドを使用して、ユーザー定義文字列をテキスト コントロールに挿入します。 それ以外の場合は、 メソッドが使用されます。 + + [!code-csharp[InsertText#InsertText](../../../samples/snippets/csharp/VS_Snippets_Wpf/InsertText/CSharp/Window1.xaml.cs#inserttext)] + [!code-vb[InsertText#InsertText](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/InsertText/VisualBasic/Window1.xaml.vb#inserttext)] + +## 参照 + [TextPattern Insert Text Sample](http://msdn.microsoft.com/ja-jp/67353f93-7ee2-42f2-ab76-5c078cf6ca16) \ No newline at end of file diff --git a/docs/framework/ui-automation/caching-in-ui-automation-clients.md b/docs/framework/ui-automation/caching-in-ui-automation-clients.md new file mode 100644 index 00000000000..117228e2ee6 --- /dev/null +++ b/docs/framework/ui-automation/caching-in-ui-automation-clients.md @@ -0,0 +1,114 @@ +--- +title: "Caching in UI Automation Clients | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation caching in clients" + - "caching, UI Automation clients" +ms.assetid: 94c15031-4975-43cc-bcd5-c9439ed21c9c +caps.latest.revision: 24 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 24 +--- +# Caching in UI Automation Clients +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティとコントロール パターンのキャッシュについて説明します。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では、キャッシュとはデータをプリフェッチすることを意味します。 そのデータには、さらにプロセス間通信を行わずにアクセスできます。 キャッシュは通常、UI オートメーション クライアント アプリケーションによって使用され、プロパティとコントロール パターンを一括で取得します。 それから、必要に応じて情報がキャッシュから取得されます。 アプリケーションはキャッシュを定期的に更新します。通常は、[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] で何かが変更されたことを示すイベントへの応答として更新を行います。 + + キャッシュの効果は、サーバー側 UI オートメーション プロバイダーを持つ [!INCLUDE[TLA#tla_wpf](../../../includes/tlasharptla-wpf-md.md)] コントロールとカスタム コントロールで最も顕著に表れます。[!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] コントロールの既定のプロバイダーなど、クライアント側プロバイダーにアクセスするときは、メリットは小さくなります。 + + キャッシュはアプリケーションが をアクティブにしたときに発生し、 など、 を返すメソッドやプロパティを使用します。 クラスのメソッドは例外で、 がパラメーターとして指定された場合 \(たとえば、\) にのみ、キャッシュが行われます。 + + また、キャッシュは、 がアクティブなときにイベントにサブスクライブする場合にも発生します。 イベントのソースとしてイベント ハンドラーに渡された には、元の によって指定されているキャッシュされたプロパティとパターンが含まれています。 イベントにサブスクライブした後で に加えられた変更が、影響を与えることはありません。 + + 要素の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティとコントロール パターンはキャッシュすることができます。 + + +## キャッシュのオプション + はキャッシュ用の次のオプションを指定します。 + + +### キャッシュするプロパティ + 要求をアクティブ化する前に、各プロパティの を呼び出して、キャッシュするプロパティを指定できます。 + + +### キャッシュするコントロール パターン + 要求をアクティブ化する前に、各パターンの を呼び出して、キャッシュするコントロール パターンを指定できます。 パターンがキャッシュされるとき、そのプロパティは自動的にはキャッシュされません。 を使用して、キャッシュするプロパティを指定する必要があります。 + + +### キャッシュのスコープとフィルター処理 + 要求をアクティブ化する前に プロパティを設定し、キャッシュするプロパティやパターンを持つ要素を指定できます。 スコープは、要求がアクティブな間に取得される要素を基準としています。 たとえば、 のみを設定し、 を取得する場合に、要素の子のプロパティとパターンはキャッシュされますが、要素自体のプロパティとパターンはキャッシュされません。 取得される要素自体についてキャッシュが行われるようにするには、 プロパティに を含める必要があります。 スコープを または に設定することはできません。 ただし、子要素がキャッシュされると親要素をキャッシュできます。このトピックの「キャッシュされた子と親の取得」を参照してください。 + + キャッシュの範囲は、 プロパティによっても影響を受けます。 既定では、キャッシュは [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに表示される要素にのみ実行されます。 ただし、キャッシュをすべての要素に適用したり、コンテンツ ビューに表示される要素にのみ適用したりするように、このプロパティを変更することができます。 + + +### 要素の参照の強度 + を取得するときは、既定では、キャッシュされていないものも含め、その要素のすべてのプロパティとパターンにアクセスできます。 ただし、作業効率を向上するために、 プロパティを に設定して、要素への参照がキャッシュされたデータのみを参照するよう指定できます。 この場合、取得された要素のキャッシュされていないプロパティとパターンには、いずれもアクセスできません。 つまり、 を通してプロパティにアクセスしたり、 の `Current` プロパティやコントロール パターンにアクセスすることはできません。また、 を使用してパターンを取得することもできません。 キャッシュされたパターンでは、 などの配列のプロパティを取得するメソッドを呼び出すことができますが、 などのコントロール上でアクションを実行するものは呼び出すことができません。 + + オブジェクトへの完全参照を必要としない可能性があるアプリケーションの例として、スクリーン リーダーがあります。これは、ウィンドウ内の要素の プロパティと プロパティをプリフェッチしても、 オブジェクト自体は必要としません。 + + +## CacheRequest のアクティブ化 + が現在のスレッドに対してアクティブである間に オブジェクトが取得された場合にのみ、キャッシュが実行されます。 をアクティブ化するには、2 つの方法があります。 + + 通常の方法では、 を呼び出します。 このメソッドは、 を実装するオブジェクトを返します。 要求は、 オブジェクトが存在する限りアクティブなままです。 オブジェクトの有効期間を制御する最も簡単な方法は、`using` \([!INCLUDE[TLA#tla_cshrp](../../../includes/tlasharptla-cshrp-md.md)]\) または `Using` \([!INCLUDE[TLA2#tla_visualb](../../../includes/tla2sharptla-visualb-md.md)]\) のブロック内に呼び出しを埋め込むことです。 これにより、例外が発生した場合でも、スタックから要求がポップされます。 + + キャッシュ要求を入れ子にする場合に有用な別の方法は、 を呼び出すことです。 この方法では、スタック上に要求が配置され、アクティブ化されます。 によってスタックから削除されるまで、要求はアクティブなままです。 別の要求がスタックにプッシュされた場合、要求は一時的に非アクティブになります。スタックの最上位の要求のみがアクティブになります。 + + +## キャッシュされたプロパティの取得 + 要素のキャッシュされたプロパティを取得するには、次のメソッドとプロパティを使用します。 + +- + +- + + 要求されたプロパティがキャッシュ内にない場合、例外が発生します。 + + と同様、 は構造体のメンバーとして、個々のプロパティを公開します。 ただし、この構造体を取得する必要はありません。個々のプロパティに直接アクセスすることができます。 たとえば、 プロパティは `element.Cached.Name` から取得できます。ここで、`element` は です。 + + +## キャッシュされたコントロール パターンの取得 + 要素のキャッシュされたコントロール パターンを取得するには、次のメソッドを使用します。 + +- + +- + + パターンがキャッシュ内にない場合、 で例外が発生し、 が `false` を返します。 + + パターン オブジェクトの `Cached` プロパティを使用して、コントロール パターンのキャッシュされたプロパティを取得できます。`Current` プロパティを通じて現在の値を取得することもできますが、 が取得されたときに が指定されていない場合に限ります。 \( は既定値であり、これにより現在の値へのアクセスが許可されます。\) + + +## キャッシュされた子と親の取得 + を取得し、要求の プロパティを通じてその要素の子のキャッシュを要求すると、その後は、取得した要素の プロパティから子要素を取得することが可能になります。 + + がキャッシュ要求のスコープに含まれていた場合には、要求のルート要素は、その後、任意の子要素の プロパティから利用できます。 + +> [!NOTE] +> 要求のルート要素の親または先祖をキャッシュすることはできません。 + + +## キャッシュの更新 + [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] で何も変更されない限り、キャッシュは有効です。 キャッシュの更新は、通常はイベントへの応答として、アプリケーションが行います。 + + がアクティブな間にイベントにサブスクライブすると、イベント ハンドラーのデリゲートが呼び出されるたびに、イベントのソースとしてキャッシュが更新された を取得します。 また、 を呼び出して、要素のキャッシュされた情報を更新することもできます。 元の を渡して、以前にキャッシュされたすべての情報を更新できます。 + + キャッシュを更新しても、既存の の参照のプロパティはいずれも変更されません。 + +## 参照 + [UI Automation Events for Clients](../../../docs/framework/ui-automation/ui-automation-events-for-clients.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) + [FetchTimer Sample](http://msdn.microsoft.com/ja-jp/5b7d3294-de22-4f24-b2d6-d4785a304b90) \ No newline at end of file diff --git a/docs/framework/ui-automation/client-side-ui-automation-provider-implementation.md b/docs/framework/ui-automation/client-side-ui-automation-provider-implementation.md new file mode 100644 index 00000000000..5494d95185f --- /dev/null +++ b/docs/framework/ui-automation/client-side-ui-automation-provider-implementation.md @@ -0,0 +1,61 @@ +--- +title: "Client-Side UI Automation Provider Implementation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, client-side provider implementation" + - "client-side UI Automation provider, implementation" + - "provider implementation, UI Automation" +ms.assetid: 3584c0a1-9cd0-4968-8b63-b06390890ef6 +caps.latest.revision: 14 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 13 +--- +# Client-Side UI Automation Provider Implementation +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + [!INCLUDE[TLA#tla_ms](../../../includes/tlasharptla-ms-md.md)] のオペレーティング システムでは、[!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)]、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)] など、いくつかの異なる [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] フレームワークが使用されています。[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] は、UI 要素に関する情報をクライアントに公開します。 ただし、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 自体は、それらのフレームワークに存在する各種のコントロールや、それらから情報を抽出するために必要な手法を認識しているわけではありません。 その代わりに、このタスクをプロバイダーと呼ばれるオブジェクトに任せます。 プロバイダーは、特定のコントロールから情報を抽出し、その情報を [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] に渡します。次に UI オートメーションが、その情報を一貫性のある方法でクライアントに提示します。 + + プロバイダーは、サーバー側とクライアント側のどちらにも配置できます。 サーバー側プロバイダーは、コントロール自体によって実装されます。[!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] 要素は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] で作成されたすべてのサードパーティ コントロールを考慮してプロバイダーを実装しています。 + + ただし、[!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] や [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] に含まれているコントロールなどの比較的古いコントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] を直接サポートしていません。 これらのコントロールは、代わりにクライアント プロセス内のプロバイダーによって処理され、プロセス間通信を使用して、たとえば、コントロール間でのウィンドウ メッセージを監視することで、コントロールに関する情報を取得します。 このようなクライアント側プロバイダーは、プロキシと呼ばれることがあります。 + + [!INCLUDE[TLA2#tla_winvista](../../../includes/tla2sharptla-winvista-md.md)] には、[!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] および [!INCLUDE[TLA2#tla_winforms](../../../includes/tla2sharptla-winforms-md.md)] の標準のコントロール用のプロバイダーが用意されています。 さらに、サーバー側プロバイダーやプロキシで処理されないコントロールでも、[!INCLUDE[TLA#tla_aa](../../../includes/tlasharptla-aa-md.md)] が実装されているコントロールに対しては、代替プロバイダーが [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の部分的なサポートを提供します。 これらすべてのプロバイダーは、自動的に読み込まれ、クライアント アプリケーションから使用できるようになります。 + + [!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] コントロールと [!INCLUDE[TLA2#tla_winforms](../../../includes/tla2sharptla-winforms-md.md)] コントロールのサポートの詳細については、「[UI Automation Support for Standard Controls](../../../docs/framework/ui-automation/ui-automation-support-for-standard-controls.md)」を参照してください。 + + アプリケーションが他のクライアント側プロバイダーを登録することもできます。 + + +## クライアント側プロバイダーを配布する + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では、クライアント側プロバイダーがマネージ コード アセンブリ内に見つかることを前提としています。 このアセンブリ内の名前空間は、アセンブリと同じ名前を持つ必要があります。 たとえば、ContosoProxies.dll というアセンブリには、ContosoProxies という名前空間が含まれます。 その名前空間内に、 クラスを作成します。 静的 フィールドの実装内に、プロバイダーを記述した 構造体の配列を作成します。 + + +## クライアント側プロバイダーを登録および構成する + [!INCLUDE[TLA#tla_dll](../../../includes/tlasharptla-dll-md.md)] 内のクライアント側プロバイダーは、 を呼び出すことで読み込まれます。 クライアント アプリケーションでは、プロバイダーを利用するために、それ以上のアクションは必要ありません。 + + クライアント独自のコードで実装されたプロバイダーは、 を使用して登録されます。 このメソッドは引数として、 構造体の配列を受け取ります。各構造体では、次のプロパティが指定されます。 + +- プロバイダー オブジェクトを作成するコールバック関数。 + +- プロバイダーが使用されるコントロールのクラス名。 + +- プロバイダーが使用されるアプリケーションのイメージ名 \(通常は実行可能ファイルの完全名\)。 + +- クラス名と、ターゲット アプリケーションで検出されたウィンドウ クラスを照合する方法を制御するフラグ。 + + 最後の 2 つのパラメーターは省略できます。 クライアントでは、異なるアプリケーションに対して異なるプロバイダーを使用する必要がある場合、ターゲット アプリケーションのイメージ名を指定することができます。 たとえば、クライアントは、Multiple View パターンをサポートする既知のアプリケーションの [!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] リスト ビュー コントロールに対して、あるプロバイダーを使用し、そのパターンをサポートしない別の既知のアプリケーションの同様のコントロールに対して別のプロバイダーを使用できます。 + +## 参照 + [Create a Client\-Side UI Automation Provider](../../../docs/framework/ui-automation/create-a-client-side-ui-automation-provider.md) + [Implement UI Automation Providers in a Client Application](../../../docs/framework/ui-automation/implement-ui-automation-providers-in-a-client-application.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md b/docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md new file mode 100644 index 00000000000..b52311f077e --- /dev/null +++ b/docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md @@ -0,0 +1,87 @@ +--- +title: "Control Pattern Mapping for UI Automation Clients | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control patterns, for UI Automation clients" + - "UI Automation, clients, control patterns for" +ms.assetid: 8b81645b-8be3-4e26-9c98-4fb0fceca06b +caps.latest.revision: 18 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 18 +--- +# Control Pattern Mapping for UI Automation Clients +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、コントロール型とそれに関連するコントロール パターンを示します。 + + 次の表に、コントロール パターンを次のカテゴリに整理して示します。 + +- サポートされています。 コントロールはこのコントロール パターンをサポートする必要があります。 + +- 条件付きサポート。 コントロールは、その状態に応じてこのコントロール パターンをサポートする場合があります。 + +- サポートされていません。 コントロールはこのコントロール パターンをサポートしません。カスタム コントロールは、このコントロール パターンをサポートする場合があります。 + +> [!NOTE] +> 一部のコントロールは、その機能に応じて複数のコントロール パターンを条件付きでサポートします。 たとえば、メニュー項目コントロールは、メニュー コントロール内での機能に応じて、、または コントロール パターンを条件付きでサポートします。 + + +## クライアントの UI オートメーション コントロール パターン + +|コントロール型|サポート状況|条件付きサポート|サポート非対象| +|-------------|------------|--------------|-------------| +|ボタン|なし|呼び出し、トグル、展開\/折りたたみ|なし| +|予定表|グリッド、テーブル|選択、スクロール|値| +|チェック ボックス|切り替え|なし|なし| +|コンボ ボックス|展開\/折りたたみ|選択、値|スクロール| +|データ グリッド|グリッド|スクロール、選択、テーブル|なし| +|データ項目|選択項目|展開\/折りたたみ、グリッド項目、スクロール項目、テーブル、トグル、値|なし| +|ドキュメント|テキスト|スクロール、値|なし| +|編集|なし|テキスト、範囲の値、値|なし| +|グループ化|なし|展開\/折りたたみ|なし| +|ヘッダー|なし|変換|なし| +|ヘッダー項目|なし|変換、呼び出し|なし| +|ハイパーリンク|呼び出し|値|なし| +|イメージ|なし|グリッド項目、テーブル項目|呼び出し、選択項目| +|リスト|なし|グリッド、複数のビュー、スクロール、選択|テーブル| +|リスト項目|選択項目|展開\/折りたたみ、グリッド項目、呼び出し、スクロール項目、トグル、値|なし| +|メニュー|なし|なし|なし| +|メニュー バー|なし|展開\/折りたたみ、ドック、変換|なし| +|メニュー項目|なし|展開\/折りたたみ、呼び出し、選択項目、トグル|なし| +|ペイン|なし|ドック、 スクロール、変換|ウィンドウ| +|進行状況バー|なし|範囲の値、値|なし| +|オプション ボタン|選択項目|なし|切り替え| +|スクロール バー|なし|範囲値|スクロール| +|区切り記号|なし|なし|なし| +|スライダー|なし|範囲の値、選択、値|なし| +|Spinner|なし|範囲の値、選択、値|なし| +|分割ボタン|呼び出し、展開\/折りたたみ|なし|なし| +|ステータス バー|なし|グリッド|なし| +|タブ|選択ツール|スクロール|なし| +|タブ項目|選択項目|なし|呼び出し| +|テーブル|グリッド、グリッド項目、テーブル、テーブル項目|なし|なし| +|テキスト|なし|グリッド項目、テーブル項目、テキスト|値| +|つまみ|変換|なし|なし| +|タイトル バー|なし|なし|なし| +|ツール バー|なし|ドック、展開\/折りたたみ、変換|なし| +|ツール ヒント|なし|テキスト、ウィンドウ|なし| +|ツリー|なし|スクロール、選択|なし| +|ツリー項目|展開\/折りたたみ|呼び出し、スクロール項目、選択項目、トグル|なし| +|ウィンドウ|変換、ウィンドウ|ドッキング|なし| + +> [!NOTE] +> 上記のサポート対象のコントロール パターンが存在せず、条件付きサポートのコントロール パターンが 1 つ以上存在するコントロール型では、それらの条件付きコントロール パターンのうちの 1 つが必ずサポートされます。 + +## 参照 + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/create-a-client-side-ui-automation-provider.md b/docs/framework/ui-automation/create-a-client-side-ui-automation-provider.md new file mode 100644 index 00000000000..49a1d824358 --- /dev/null +++ b/docs/framework/ui-automation/create-a-client-side-ui-automation-provider.md @@ -0,0 +1,36 @@ +--- +title: "Create a Client-Side UI Automation Provider | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, creating client-side provider" + - "client-side UI Automation provider, creating" +ms.assetid: d91edaf2-be28-41ec-a508-af421cb43c3d +caps.latest.revision: 11 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 11 +--- +# Create a Client-Side UI Automation Provider +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックのコード例では、クライアント側 UI オートメーション プロバイダーを実装する方法を示します。 + +## 使用例 + コンソール ウィンドウの非常に単純なクライアント側プロバイダーを実装する [!INCLUDE[TLA#tla_dll](../../../includes/tlasharptla-dll-md.md)] に、次のコード例を組み込むことができます。 このコードは、有用な機能は備えていませんが、UI オートメーション クライアント アプリケーションによって登録できるプロバイダー アセンブリを設定する際の基本的な手順を示すために用意されています。 + + [!code-csharp[UIAClientSideProvider_snip#101](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClientSideProvider_snip/CSharp/CSProviderProgram.cs#101)] + [!code-vb[UIAClientSideProvider_snip#101](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClientSideProvider_snip/visualbasic/csproviderprogram.vb#101)] + +## 参照 + [UI Automation Providers Overview](../../../docs/framework/ui-automation/ui-automation-providers-overview.md) + [Register a Client\-Side Provider Assembly](../../../docs/framework/ui-automation/register-a-client-side-provider-assembly.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/enable-navigation-in-a-ui-automation-fragment-provider.md b/docs/framework/ui-automation/enable-navigation-in-a-ui-automation-fragment-provider.md new file mode 100644 index 00000000000..fd8e7ca4f48 --- /dev/null +++ b/docs/framework/ui-automation/enable-navigation-in-a-ui-automation-fragment-provider.md @@ -0,0 +1,36 @@ +--- +title: "Enable Navigation in a UI Automation Fragment Provider | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, enabling navigation in provider" + - "navigation, enabling in UI Automation provider" +ms.assetid: 3cb6092a-58c9-4ca0-84a5-0e54d5d00a0d +caps.latest.revision: 16 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 16 +--- +# Enable Navigation in a UI Automation Fragment Provider +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックのコード例では、フラグメント内の要素に対して UI オートメーション プロバイダーでのナビゲーションを有効にする方法を示します。 + +## 使用例 + 次のコード例では、リスト内のリスト項目に対して を実装しています。 親要素はリスト ボックス要素で、兄弟要素はそのリスト コレクション内の他の項目です。 このメソッドは正しくない方向の場合に `null` \(Visual Basic では `Nothing`\) を返します。このケースでは、 がこれに相当します \(要素に子がないため\)。 + + [!code-csharp[UIAFragmentProvider_snip#103](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAFragmentProvider_snip/CSharp/ListItemFragment.cs#103)] + [!code-vb[UIAFragmentProvider_snip#103](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAFragmentProvider_snip/VisualBasic/ListItemFragment.vb#103)] + +## 参照 + [UI Automation Providers Overview](../../../docs/framework/ui-automation/ui-automation-providers-overview.md) + [Server\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/expose-a-server-side-ui-automation-provider.md b/docs/framework/ui-automation/expose-a-server-side-ui-automation-provider.md new file mode 100644 index 00000000000..c83a1fe3f1c --- /dev/null +++ b/docs/framework/ui-automation/expose-a-server-side-ui-automation-provider.md @@ -0,0 +1,37 @@ +--- +title: "Expose a Server-side UI Automation Provider | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "expose a server-side UI Automation provider" + - "UI Automation, server-side provider, exposing" + - "server-side UI Automation provider, exposing" +ms.assetid: 55d419c0-2201-4101-90c9-2888df4dbb47 +caps.latest.revision: 20 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 20 +--- +# Expose a Server-side UI Automation Provider +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックには、 ウィンドウにホストされているサーバー側 UI オートメーション プロバイダーを公開する方法を示すコード例が含まれています。 + + この例は、WM\_GETOBJECT \(クライアント アプリケーションがウィンドウに関する情報を要求したときに、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コア サービスによって送信されるメッセージ\) をトラップするためのウィンドウ プロシージャをオーバーライドします。 + +## 使用例 + [!code-csharp[UIAFragmentProvider_snip#116](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAFragmentProvider_snip/CSharp/ListFragment.cs#116)] + [!code-vb[UIAFragmentProvider_snip#116](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAFragmentProvider_snip/VisualBasic/ListFragment.vb#116)] + +## 参照 + [UI Automation Providers Overview](../../../docs/framework/ui-automation/ui-automation-providers-overview.md) + [Server\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/expose-the-content-of-a-table-using-ui-automation.md b/docs/framework/ui-automation/expose-the-content-of-a-table-using-ui-automation.md new file mode 100644 index 00000000000..e540b1a2358 --- /dev/null +++ b/docs/framework/ui-automation/expose-the-content-of-a-table-using-ui-automation.md @@ -0,0 +1,54 @@ +--- +title: "Expose the Content of a Table Using UI Automation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "tables, exposing content of" + - "UI Automation, exposing content of tables" + - "exposing content of tables using UI Automation" +ms.assetid: ac3c5eaa-49c7-4653-b83e-532e2a2604a2 +caps.latest.revision: 12 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 12 +--- +# Expose the Content of a Table Using UI Automation +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]を使用して、表コントロール内の各セルの内容と各セル固有のプロパティを公開する方法を示します。 + +## 使用例 + テーブル セルの内容を表す を取得する方法を次のコード例に示します。行と列のインデックス、行と列の範囲、行と列のヘッダー情報などのセル プロパティも取得します。 この例では、フォーカス変更イベント ハンドラーを使用して、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を実装する表コントロールのキーボード トラバーサルをシミュレートします。 各テーブル項目の情報は、フォーカス変更イベントで公開されます。 + +> [!NOTE] +> フォーカス変更はグローバル デスクトップ イベントであるため、テーブルの外部のフォーカス変更イベントにはフィルター処理が必要です。 関連する実装については、「[TrackFocus Sample](http://msdn.microsoft.com/ja-jp/4a91c0af-6bb5-4d38-a743-cf136f268fc9)」を参照してください。 + + [!code-csharp[UIATableItemPattern_snip#StartTarget](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATableItemPattern_snip/CSharp/UIATableItemPattern_snippets.cs#starttarget)] + [!code-vb[UIATableItemPattern_snip#StartTarget](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIATableItemPattern_snip/VisualBasic/UIATableItemPattern_snippets.vb#starttarget)] +[!code-csharp[UIATableItemPattern_snip#GetTableElement](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATableItemPattern_snip/CSharp/UIATableItemPattern_snippets.cs#gettableelement)] +[!code-vb[UIATableItemPattern_snip#GetTableElement](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIATableItemPattern_snip/VisualBasic/UIATableItemPattern_snippets.vb#gettableelement)] +[!code-csharp[UIATableItemPattern_snip#101](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATableItemPattern_snip/CSharp/UIATableItemPattern_snippets.cs#101)] +[!code-vb[UIATableItemPattern_snip#101](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIATableItemPattern_snip/VisualBasic/UIATableItemPattern_snippets.vb#101)] +[!code-csharp[UIATableItemPattern_snip#1015](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATableItemPattern_snip/CSharp/UIATableItemPattern_snippets.cs#1015)] +[!code-vb[UIATableItemPattern_snip#1015](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIATableItemPattern_snip/VisualBasic/UIATableItemPattern_snippets.vb#1015)] +[!code-csharp[UIATableItemPattern_snip#102](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATableItemPattern_snip/CSharp/UIATableItemPattern_snippets.cs#102)] +[!code-vb[UIATableItemPattern_snip#102](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIATableItemPattern_snip/VisualBasic/UIATableItemPattern_snippets.vb#102)] +[!code-csharp[UIATableItemPattern_snip#103](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATableItemPattern_snip/CSharp/UIATableItemPattern_snippets.cs#103)] +[!code-vb[UIATableItemPattern_snip#103](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIATableItemPattern_snip/VisualBasic/UIATableItemPattern_snippets.vb#103)] + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Implementing the UI Automation Table Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-table-control-pattern.md) + [Implementing the UI Automation TableItem Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-tableitem-control-pattern.md) + [Implementing the UI Automation Grid Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-grid-control-pattern.md) + [Implementing the UI Automation GridItem Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-griditem-control-pattern.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/find-a-ui-automation-element-based-on-a-property-condition.md b/docs/framework/ui-automation/find-a-ui-automation-element-based-on-a-property-condition.md new file mode 100644 index 00000000000..e122a299648 --- /dev/null +++ b/docs/framework/ui-automation/find-a-ui-automation-element-based-on-a-property-condition.md @@ -0,0 +1,40 @@ +--- +title: "Find a UI Automation Element Based on a Property Condition | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "elements, finding by property conditions" + - "UI Automation, finding elements by property conditions" +ms.assetid: 3acaee5a-6ce8-4c3e-81c8-67e59eb74477 +caps.latest.revision: 19 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 19 +--- +# Find a UI Automation Element Based on a Property Condition +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックのコード例では、特定のプロパティに基づいて [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー内の要素を配置する方法を示します。 + +## 使用例 + 次の例では、 ツリー内の対象の要素 \(1 つまたは複数\) を識別するプロパティ条件のセットを指定します。 一致するすべての要素の検索は、 メソッドで実行します。このメソッドでは、組み込まれている一連の ブール演算により、一致する要素の数を制限します。 + +> [!NOTE] +> から検索するときは、直接の子だけを取得する必要があります。 子孫を検索すると、要素の処理が数百回または数千回も繰り返される場合があるため、スタック オーバーフローが発生する可能性があります。 低いレベルにある特定の要素を取得する場合は、アプリケーション ウィンドウまたは低いレベルのコンテナーから検索を開始する必要があります。 + + [!code-csharp[InvokePatternApp#1100](../../../samples/snippets/csharp/VS_Snippets_Wpf/InvokePatternApp/CSharp/InvokePatternApp.cs#1100)] + [!code-vb[InvokePatternApp#1100](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/InvokePatternApp/VisualBasic/Client.vb#1100)] + +## 参照 + [InvokePattern and ExpandCollapsePattern Menu Item Sample](http://msdn.microsoft.com/ja-jp/b7fa141c-e2d1-4da2-a27f-81a7d1172210) + [Obtaining UI Automation Elements](../../../docs/framework/ui-automation/obtaining-ui-automation-elements.md) + [Use the AutomationID Property](../../../docs/framework/ui-automation/use-the-automationid-property.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/find-a-ui-automation-element-for-a-list-item.md b/docs/framework/ui-automation/find-a-ui-automation-element-for-a-list-item.md new file mode 100644 index 00000000000..cda51c90066 --- /dev/null +++ b/docs/framework/ui-automation/find-a-ui-automation-element-for-a-list-item.md @@ -0,0 +1,38 @@ +--- +title: "Find a UI Automation Element for a List Item | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "list items, finding elements for" + - "elements, finding for list items" + - "UI Automation, finding elements for List items" +ms.assetid: c326ad2b-2144-4f64-ae4c-d850c74f95c5 +caps.latest.revision: 5 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 5 +--- +# Find a UI Automation Element for a List Item +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、項目のインデックスがわかっている場合に、リスト内の項目の を取得する方法を示します。 + +## 使用例 + リストから指定した項目を取得する 2 つの方法を次の例に示します。1 つは、 を使用し、もう 1 つは、 を使用します。 + + [!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] コントロールでは最初の手法の方が速く、[!INCLUDE[TLA#tla_wpf](../../../includes/tlasharptla-wpf-md.md)] コントロールでは 2 番目の手法の方が速い傾向にあります。 + + [!code-csharp[UIAClient_snip#184](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#184)] + [!code-vb[UIAClient_snip#184](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#184)] + +## 参照 + [Obtaining UI Automation Elements](../../../docs/framework/ui-automation/obtaining-ui-automation-elements.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/find-and-highlight-text-using-ui-automation.md b/docs/framework/ui-automation/find-and-highlight-text-using-ui-automation.md new file mode 100644 index 00000000000..b02203e2fe6 --- /dev/null +++ b/docs/framework/ui-automation/find-and-highlight-text-using-ui-automation.md @@ -0,0 +1,43 @@ +--- +title: "Find and Highlight Text Using UI Automation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "text, highlighting" + - "finding text" + - "text, finding" + - "UI automation, highlighting text" + - "UI automation, finding text" + - "highlighting text" +ms.assetid: b77693f5-87bb-4b29-a297-05ff882e2044 +caps.latest.revision: 15 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 15 +--- +# Find and Highlight Text Using UI Automation +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]を使用して、テキスト コントロールのコンテンツ内で順次検索し、見つかった文字列をそれぞれ強調表示する方法を示します。 + +## 使用例 + テキスト コントロールから オブジェクトを取得する例を次に示します。 オブジェクトは、ドキュメント全体のテキスト コンテンツを表し、この プロパティを使用して作成されます。 次に、2 つの追加 オブジェクトが、順次検索機能および強調表示機能用に作成されます。 + + [!code-csharp[FindText#StartApp](../../../samples/snippets/csharp/VS_Snippets_Wpf/FindText/CSharp/SearchWindow.cs#startapp)] + [!code-vb[FindText#StartApp](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FindText/VisualBasic/SearchWindow.vb#startapp)] +[!code-csharp[FindText#FindTextProvider](../../../samples/snippets/csharp/VS_Snippets_Wpf/FindText/CSharp/SearchWindow.cs#findtextprovider)] +[!code-vb[FindText#FindTextProvider](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FindText/VisualBasic/SearchWindow.vb#findtextprovider)] +[!code-csharp[FindText#SearchTarget](../../../samples/snippets/csharp/VS_Snippets_Wpf/FindText/CSharp/SearchWindow.cs#searchtarget)] +[!code-vb[FindText#SearchTarget](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FindText/VisualBasic/SearchWindow.vb#searchtarget)] + +## 参照 + [Find and Highlight Text Using UI Automation](../../../docs/framework/ui-automation/find-and-highlight-text-using-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/get-supported-ui-automation-control-patterns.md b/docs/framework/ui-automation/get-supported-ui-automation-control-patterns.md new file mode 100644 index 00000000000..4725ae57c66 --- /dev/null +++ b/docs/framework/ui-automation/get-supported-ui-automation-control-patterns.md @@ -0,0 +1,51 @@ +--- +title: "サポートされている UI オートメーション コントロール パターンの取得 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "取得するコントロール パターン" + - "UI オートメーション、コントロール パターンの取得" + - "コントロール パターンを取得します。" +ms.assetid: 006c54c9-50bf-48d9-a855-9d62eb95603a +caps.latest.revision: 10 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 10 +--- +# サポートされている UI オートメーション コントロール パターンの取得 +> [!NOTE] +> このドキュメントが目的とする、管理を使用する .NET Framework 開発者[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]で定義されたクラス、 名前空間。 最新情報について[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を参照してください[Windows Automation API: UI 自動化](http://go.microsoft.com/fwlink/?LinkID=156746)します。 + + このトピックからのコントロール パターンのオブジェクトを取得する方法を示しています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]要素。 + +### すべてのコントロール パターンの取得 + +1. 取得、 関心のあるパターンを制御します。 + +2. 呼び出す要素からすべてのコントロール パターンを取得します。 + +> [!CAUTION] +> クライアントが使用しないことを強くお勧めします。 パフォーマンスにこのメソッドは、深刻な影響の各既存のコントロール パターンを内部的にします。 可能であれば、クライアントが呼び出す必要がありますの関心のある主要なパターンです。 + +### 特定のコントロール パターンの取得 + +1. 取得、 関心のあるパターンを制御します。 + +2. 呼び出すまたはの特定のパターンを照会します。 これらのメソッドは、のようなパターンが見つからない場合はで例外が発生し、 を返します`false`します。 + +## 例 + 次の例では取得、 リスト項目の取得と、 その要素から。 + + [!code-csharp[UIAClient_snip#103](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#103)] + [!code-vb[UIAClient_snip#103](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#103)] + +## 関連項目 + [クライアントの UI オートメーション コントロール パターン](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/get-the-toggle-state-of-a-check-box-using-ui-automation.md b/docs/framework/ui-automation/get-the-toggle-state-of-a-check-box-using-ui-automation.md new file mode 100644 index 00000000000..eabba354f90 --- /dev/null +++ b/docs/framework/ui-automation/get-the-toggle-state-of-a-check-box-using-ui-automation.md @@ -0,0 +1,33 @@ +--- +title: "Get the Toggle State of a Check Box Using UI Automation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, getting toggle states of check boxes" + - "check boxes, getting toggle states of" + - "getting, toggle states of check boxes" +ms.assetid: 84fc31a3-175f-4e93-90a0-dd29d89b77ce +caps.latest.revision: 10 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 10 +--- +# Get the Toggle State of a Check Box Using UI Automation +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]を使用してコントロールのトグル状態を取得する方法を示します。 + +## 使用例 + この例では、 クラスの メソッドを使用して、コントロールから オブジェクトを取得し、その プロパティを返します。 + + [!code-csharp[NavigatingWithTreeWalker#1200](../../../samples/snippets/csharp/VS_Snippets_Wpf/NavigatingWithTreeWalker/CSharp/ClientClass.cs#1200)] + [!code-vb[NavigatingWithTreeWalker#1200](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/NavigatingWithTreeWalker/visualbasic/clientclass.vb#1200)] \ No newline at end of file diff --git a/docs/framework/ui-automation/get-ui-automation-element-properties.md b/docs/framework/ui-automation/get-ui-automation-element-properties.md new file mode 100644 index 00000000000..d0419a2b897 --- /dev/null +++ b/docs/framework/ui-automation/get-ui-automation-element-properties.md @@ -0,0 +1,49 @@ +--- +title: "Get UI Automation Element Properties | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "properties, retrieving" + - "UI Automation, retrieving properties of elements" +ms.assetid: 09576b1a-291f-435c-980e-dee32d899ae1 +caps.latest.revision: 5 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 5 +--- +# Get UI Automation Element Properties +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]要素のプロパティを取得する方法について説明します。 + +### 現在のプロパティ値の取得 + +1. 取得するプロパティを持つ を取得します。 + +2. を呼び出すか、または プロパティ構造体を取得し、そのメンバーの 1 つから値を取得します。 + +### キャッシュされたプロパティ値の取得 + +1. 取得するプロパティを持つ を取得します。 プロパティは、 で指定されている必要があります。 + +2. を呼び出すか、または プロパティ構造体を取得し、そのメンバーの 1 つから値を取得します。 + +## 使用例 + 次の例では、 の現在のプロパティを取得するためのさまざまな方法を示します。 + + [!code-csharp[UIAClient_snip#170](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#170)] + [!code-vb[UIAClient_snip#170](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#170)] + +## 参照 + [UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) + [Caching in UI Automation Clients](../../../docs/framework/ui-automation/caching-in-ui-automation-clients.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implement-ui-automation-providers-in-a-client-application.md b/docs/framework/ui-automation/implement-ui-automation-providers-in-a-client-application.md new file mode 100644 index 00000000000..152c0ede966 --- /dev/null +++ b/docs/framework/ui-automation/implement-ui-automation-providers-in-a-client-application.md @@ -0,0 +1,40 @@ +--- +title: "Implement UI Automation Providers in a Client Application | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "client-side UI Automation provider, implementation within applications" + - "UI Automation, implementing client-side provider within application" +ms.assetid: f325f0d8-1715-41ea-85ca-45b82ffea8bc +caps.latest.revision: 6 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 6 +--- +# Implement UI Automation Providers in a Client Application +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックのコード例では、アプリケーション内のクライアント側 UI オートメーション プロバイダーを実装する方法を示します。 + + これは、一般的ではないシナリオです。 通常は、UI オートメーション クライアント アプリケーションは、サーバー側プロバイダーを使用するか、または DLL 内に存在するクライアント側プロバイダーを使用します。 + +## 使用例 + 次のコード例では、コンソール ウィンドウ用の簡単なプロバイダーを実装します。 このコードは、有用な機能は備えていませんが、クライアント コード内でプロバイダーを設定し、 を使用して登録する際の基本的な手順を示すために用意されています。 + + [!code-csharp[UIAClientSideProvider_snip#201](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClientSideProvider_snip/CSharp/ClientImplementationProgram.cs#201)] + [!code-vb[UIAClientSideProvider_snip#201](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClientSideProvider_snip/visualbasic/clientimplementationprogram.vb#201)] + +## 参照 + [UI Automation Providers Overview](../../../docs/framework/ui-automation/ui-automation-providers-overview.md) + [Register a Client\-Side Provider Assembly](../../../docs/framework/ui-automation/register-a-client-side-provider-assembly.md) + [Create a Client\-Side UI Automation Provider](../../../docs/framework/ui-automation/create-a-client-side-ui-automation-provider.md) + [Client\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/client-side-ui-automation-provider-implementation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-dock-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-dock-control-pattern.md new file mode 100644 index 00000000000..827782e24f4 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-dock-control-pattern.md @@ -0,0 +1,70 @@ +--- +title: "Implementing the UI Automation Dock Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control patterns, dock" + - "dock control pattern" + - "UI Automation, dock control pattern" +ms.assetid: ea3d2212-7c8e-4dd7-bf08-73141ca2d4fb +caps.latest.revision: 23 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 23 +--- +# Implementing the UI Automation Dock Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、プロパティに関する情報など、 を実装するガイドラインと規則について説明します。 その他のリファレンスへのリンクは、トピックの最後に記載します。 + + コントロール パターンは、ドッキング コンテナー内のコントロールのドッキング プロパティを公開するために使用します。 ドッキング コンテナーは、子要素を互いに水平方向または垂直方向に整列できるコントロールです。 このコントロール パターンを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」を参照してください。 + + ![ドッキングされた 2 つの子を持つドッキング コンテナー。](../../../docs/framework/ui-automation/media/uia-dockpattern-dockingexample.PNG "UIA\_DockPattern\_DockingExample") +"Class View" ウィンドウが DockPosition.Right に "Error List" ウィンドウが DockPosition.Bottom にそれぞれ配置された Visual Studio のドッキングの例 + + +## 実装のガイドラインと規則 + Dock コントロール パターンを実装する場合は、次のガイドラインと規則に注意してください。 + +- は、ドッキング コンテナーのプロパティや、ドッキング コンテナー内の現在のコントロールに隣接してドッキングされるコントロールのプロパティは公開しません。 + +- コントロールは、現在の重ね順に基づき、互いを基準としてドッキングされます。重ね順が上位であるほど、指定されたドッキング コンテナーの端から離れた位置に配置されます。 + +- ドッキング コンテナーのサイズを変更すると、コンテナー内にドッキングされているコントロールは、もともとドッキングされていたのと同じ端に合わせて再配置されます。 また、ドッキングされているコントロールは、 のドッキング動作に従って、コンテナー内のスペースを埋めるようにサイズ変更されます。 たとえば、 が指定されている場合は、コントロールの左側と右側が広がって、使用できるスペースを埋めます。 が指定されている場合は、コントロールの 4 つの側面すべてが広がって、使用できるスペースを埋めます。 + +- マルチモニター システムでは、コントロールは現在のモニターの左側または右側にドッキングする必要があります。 それが不可能な場合は、左端のモニターの左側、または右端のモニターの右側にドッキングする必要があります。 + + +## IDockProvider の必須メンバー + 次のプロパティとメソッドは、IDockProvider インターフェイスの実装時に必要です。 + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||プロパティ|なし| +||メソッド|なし| + + このコントロール パターンに関連付けられたイベントはありません。 + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +||

- 要求されたドッキング スタイルをコントロールが実行することができない場合。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md new file mode 100644 index 00000000000..ff7862b6170 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md @@ -0,0 +1,79 @@ +--- +title: "Implementing the UI Automation ExpandCollapse Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, ExpandCollapse control pattern" + - "ExpandCollapse control pattern" + - "control patterns, ExpandCollapse" +ms.assetid: 1dbabb8c-0d68-47c1-a35e-1c01cb01af26 +caps.latest.revision: 25 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 25 +--- +# Implementing the UI Automation ExpandCollapse Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、プロパティ、メソッド、イベントに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、概要の最後に記載します。 + + コントロール パターンは、視覚的に展開してより多くのコンテンツを表示したり、折りたたんでコンテンツを非表示にしたりするコントロールをサポートするために使用します。 このコントロール パターンを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」を参照してください。 + + +## 実装のガイドラインと規則 + ExpandCollapse コントロール パターンを実装する場合は、次のガイドラインと規則に注意してください。 + +- 展開または折りたたみの機能を備えた UI を提供する子オブジェクトで構成された集約コントロールは、 コントロール パターンをサポートする必要がありますが、その子要素がサポートする必要はありません。 たとえば、コンボ ボックス コントロールは、リスト ボックス、ボタン、およびエディット コントロールの組み合わせで構成されていますが、 をサポートする必要があるのは親のコンボ ボックスのみです。 + + > [!NOTE] + > メニュー コントロールは例外であり、これは個々の MenuItem オブジェクトの集合体です。 MenuItem オブジェクトは コントロール パターンをサポートできますが、親の Menu コントロールはできません。 同様の例外が、Tree および Tree Item コントロールにも適用されます。 + +- コントロールの に設定されている場合、コントロールに対して現在アクティブな 機能は存在せず、このコントロール パターンを使用して取得できる情報は だけです。 その後、子オブジェクトが追加された場合は、 が変更され、 機能がアクティブになります。 + +- は、すべての子孫オブジェクトの可視性を表すのではなく、直接の子オブジェクトの可視性のみを表します。 + +- 展開および折りたたみ機能は、コントロールに固有の機能です。 この機能の動作例を次に示します。 + + - Office Personal のメニューには、3 つの状態を示す MenuItem \(、および \) を指定できます。この場合、 または を呼び出したときに選択される状態は、コントロールによって指定されます。 + + - TreeItem で を呼び出すと、すべての子孫または直接の子のみを表示できます。 + + - コントロールでの または の呼び出しによってその子孫の状態が維持されるとき、状態の変更イベントではなく、可視性の変更イベントが送信されます。折りたたみの実行時に親コントロールが子孫の状態を維持しないときは、コントロールが表示されなくなったすべての子孫を破棄し、破棄イベントを発生させる場合と、子孫ごとに を変更して、可視性の変更イベントを発生させる場合があります。 + +- ナビゲーションを確実にするには、オブジェクトを親の に関係なく、\(可視性の状態が適切な\) [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー内に配置することをお勧めします。 子孫が必要に応じて生成される場合、それらが [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーに表示されるのは、初回の表示以降か、または可視状態になっている間に限られます。 + + +## IExpandCollapseProvider の必須メンバー + の実装には、次のプロパティとメソッドが必要です。 + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||プロパティ|なし| +||メソッド|なし| +||メソッド|なし| +||Event|このコントロールには関連付けられているイベントがありません。この汎用デリゲートを使用します。| + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +|| \= の場合、 または のどちらかが呼び出されます。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Navigate Among UI Automation Elements with TreeWalker](../../../docs/framework/ui-automation/navigate-among-ui-automation-elements-with-treewalker.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-grid-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-grid-control-pattern.md new file mode 100644 index 00000000000..9920df26ea5 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-grid-control-pattern.md @@ -0,0 +1,79 @@ +--- +title: "Implementing the UI Automation Grid Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control patterns, grid" + - "grid control pattern" + - "UI Automation, grid control pattern" +ms.assetid: 234d11a0-7ce7-4309-8989-2f4720e02f78 +caps.latest.revision: 27 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 27 +--- +# Implementing the UI Automation Grid Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、プロパティ、メソッド、イベントに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、概要の最後に記載します。 + + コントロール パターンは、子要素のコレクションのコンテナーとして機能するコントロールをサポートするために使用します。 この要素の子には を実装する必要があります。また、この要素の子は、行と列で表現できる 2 次元の論理座標システムで編成しなければなりません。 このコントロール パターンを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」を参照してください。 + + +## 実装のガイドラインと規則 + Grid コントロール パターンを実装する場合は、次のガイドラインと規則に注意してください。 + +- グリッド座標は 0 から始まり、左上 \(ロケールによっては右上\) のセルの座標が \(0,0\) になります。 + +- セルが空の場合でも、そのセルの プロパティをサポートするために、UI オートメーション要素を返す必要があります。 これが可能なのは、グリッド内の子要素のレイアウトが不調和配列に似ている場合です \(次の例を参照\)。 + + ![不規則なレイアウトを示す Windows エクスプローラー ビュー。](../../../docs/framework/ui-automation/media/uia-gridpattern-ragged-array.PNG "UIA\_GridPattern\_Ragged\_Array") +空の座標を持つグリッド コントロールの例 + +- 項目が 1 つのグリッドでも、論理的にグリッドであると見なされる場合は、 を実装する必要があります。 グリッド内の子項目の数は問題ではありません。 + +- プロバイダーの実装によっては、非表示の行および列は [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーに読み込まれ、 プロパティおよび プロパティに反映されます。 読み込まれていない場合は、非表示の行および列はカウントされません。 + +- はグリッドのアクティブな操作を有効にしないため、 を実装してこの機能を有効にする必要があります。 + +- を使用すると、追加、削除、マージされたセルなど、グリッドの構造またはレイアウトの変更をリッスンできます。 + +- を使用すると、グリッドの項目またはセルの反復処理を追跡できます。 + + +## IGridProvider の必須メンバー + IGridProvider インターフェイスの実装時には、次のプロパティとメソッドが必要です。 + +|必須メンバー|型|ノート| +|------------|-------|---------| +||プロパティ|なし| +||プロパティ|なし| +||メソッド|なし| + + このコントロール パターンに関連付けられたイベントはありません。 + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +||

- 要求された行座標が より大きい、または列座標が より大きい。| +||

- 要求された行座標または列座標が 0 未満である。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Implementing the UI Automation GridItem Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-griditem-control-pattern.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-griditem-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-griditem-control-pattern.md new file mode 100644 index 00000000000..578ca57fc9a --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-griditem-control-pattern.md @@ -0,0 +1,67 @@ +--- +title: "UI オートメーション GridItem コントロール パターンの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "GridItem コントロール パターン" + - "UI オートメーション GridItem コントロール パターン" + - "GridItem コントロール パターン" +ms.assetid: bffbae08-fe2a-42fd-ab84-f37187518916 +caps.latest.revision: 15 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 15 +--- +# UI オートメーション GridItem コントロール パターンの実装 +> [!NOTE] +> このドキュメントが目的とする、管理を使用する .NET Framework 開発者[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]で定義されたクラス、 名前空間。 最新情報について[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を参照してください[Windows Automation API: UI 自動化](http://go.microsoft.com/fwlink/?LinkID=156746)します。 + + このトピックでは、実装するため、プロパティに関する情報などです。 その他のリファレンスへのリンクは、概要の最後に記載します。 + + コントロール パターンが実装したコンテナーの個々 の子コントロールをサポートするために使用されるします。 このコントロール パターンを実装するコントロールの例については、次を参照してください。 [UI オートメーション クライアントのコントロール パターン マッピング](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)します。 + + +## 実装のガイドラインと規則 + 実装するときに、次のガイドラインと規則に注意してください。 + +- グリッドの座標は 0 から始まり、左上のセルの座標が (0, 0) です。 + +- 結合されたセルが報告されます、プロパティは、UI オートメーション プロバイダーで定義されている、基になるアンカー セルに基づいています。 通常、これは、最上位の左端の行または列です。 + +- は、グリッドの結合またはセルの分割などのアクティブな操作を提供しません。 + +- 実装するコントロール走査できる通常 (つまり、UI オートメーション クライアントが隣接するコントロールに移動できる)、キーボードを使用しています。 + + +## IGridItemProvider の必須メンバー + 次のプロパティとメソッドを実装するために必要なします。 + +|必須メンバー|メンバーの型|ノート| +|----------------------|-----------------|-----------| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| + + このコントロール パターンに関連するメソッドまたはイベントはありません。 + + +## 例外 + このコントロール パターンに関連付けられる例外はありません。 + +## 関連項目 + [UI オートメーション コントロール パターンの概要](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI オートメーション プロバイダーでコントロール パターンをサポートします。](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [クライアントの UI オートメーション コントロール パターン](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI オートメーション Grid コントロール パターンの実装](../../../docs/framework/ui-automation/implementing-the-ui-automation-grid-control-pattern.md) + [UI オートメーション ツリーの概要](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [UI オートメーションにおけるキャッシュを使用します。](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-invoke-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-invoke-control-pattern.md new file mode 100644 index 00000000000..382443b51d7 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-invoke-control-pattern.md @@ -0,0 +1,82 @@ +--- +title: "Implementing the UI Automation Invoke Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Invoke control pattern" + - "control patterns, Invoke" + - "Invoke control pattern" +ms.assetid: e5b1e239-49f8-468e-bfec-1fba02ec9ac4 +caps.latest.revision: 31 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 30 +--- +# Implementing the UI Automation Invoke Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、イベントおよびプロパティに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、トピックの最後に記載します。 + + コントロール パターンは、アクティブになったときに状態を保持せずに単一の明確なアクションを開始または実行するコントロールをサポートするために使用されます。 チェック ボックスやオプション ボタンなどの状態を保持するコントロールは、代わりに をそれぞれ実装する必要があります。 Invoke コントロール パターンを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」を参照してください。 + + +## 実装のガイドラインと規則 + Invoke コントロール パターンを実装する場合は、次のガイドラインと規則に注意してください。 + +- 別のコントロール パターン プロバイダーを通じて同じ動作が公開されていない場合、コントロールは を実装します。 たとえば、コントロールの メソッドが メソッドまたは メソッドと同じ処理を実行する場合、コントロールに を実装しないようにします。 + +- 通常、コントロールの呼び出しは、クリックまたはダブルクリックするか、Enter キー、定義済みのキーボード ショートカット、または何らかの代替的なキーの組み合わせを押すことによって実行されます。 + +- \(関連付けられたアクションを実行したコントロールへの応答として\) アクティブ化されたコントロールで が生成されます。 可能な場合は、コントロールがアクションを完了し、ブロックせずに戻った後に、イベントを生成する必要があります。 次のシナリオでは、Invoke 要求を処理する前に Invoked イベントを生成する必要があります。 + + - 処理が完了するまで待機することが不可能または非現実的である。 + + - 処理にユーザー操作が必要になる。 + + - アクションに時間がかかり、呼び出し側のクライアントを長時間ブロックする。 + +- コントロールの呼び出しに大きな副作用が伴う場合は、その副作用を、 プロパティを介して公開する必要があります。 たとえば、 が選択に関連付けられていない場合でも、 によって別のコントロールが選択された状態になることがあります。 + +- ホバー \(マウス オーバー\) 効果は、一般に Invoked イベントを発生させません。 ただし、ホバー状態に基づいて \(視覚効果を発生させることなく\) アクションを実行するコントロールは、 コントロール パターンをサポートする必要があります。 + +> [!NOTE] +> マウス関連の副作用の結果として呼び出す以外にコントロールを呼び出す方法がない場合、そのような実装はユーザー補助に問題があるものと見なされます。 + +- コントロールの呼び出しは、項目の選択とは異なります。 ただし、コントロールによっては、その呼び出しの副作用として、項目が選択された状態になることがあります。 たとえば、My Documents フォルダー内にある [!INCLUDE[TLA#tla_word](../../../includes/tlasharptla-word-md.md)] ドキュメントのリスト項目を呼び出すと、その項目が選択され、ドキュメントが開きます。 + +- 要素は、呼び出されるとすぐに [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーから消える場合があります。 そのため、イベント コールバックで提供された要素に情報を要求すると失敗することがあります。 推奨される回避策は、キャッシュされた情報をプリフェッチすることです。 + +- コントロールは、複数のコントロール パターンを実装できます。 たとえば、[!INCLUDE[TLA#tla_xl](../../../includes/tlasharptla-xl-md.md)] ツール バーの \[塗りつぶしの色\] コントロールは、 コントロール パターンと コントロール パターンを実装しています。 はメニューを公開し、 は選択された色でアクティブな選択内容を塗りつぶします。 + + +## IInvokeProvider の必須メンバー + の実装には、次のプロパティとメソッドが必要です。 + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||メソッド| は非同期呼び出しであるため、クライアントをブロックせずに即座に戻る必要があります。

呼び出されたときにモーダル ダイアログを直接的または間接的に表示するコントロールでは、この動作は特に重要です。 イベントを発生させたすべての UI オートメーション クライアントは、モーダル ダイアログが閉じられるまで、ブロックされたままになります。| + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +||コントロールが有効ではない。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Invoke a Control Using UI Automation](../../../docs/framework/ui-automation/invoke-a-control-using-ui-automation.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-multipleview-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-multipleview-control-pattern.md new file mode 100644 index 00000000000..2f14d467574 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-multipleview-control-pattern.md @@ -0,0 +1,71 @@ +--- +title: "Implementing the UI Automation MultipleView Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, MultipleView control pattern" + - "MultipleView control pattern" + - "control patterns, MultipleView" +ms.assetid: 5bf1b248-ffee-48c8-9613-0b134bbe9f6a +caps.latest.revision: 15 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 15 +--- +# Implementing the UI Automation MultipleView Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、イベントおよびプロパティに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、トピックの最後に記載します。 + + コントロール パターンは、同じ情報セットまたは子コントロールの複数の表現を提供し、それらの表現を切り替えることができるコントロールをサポートするために使用します。 + + 複数のビューを表示できるコントロールの例には、リスト ビュー \(サムネイル、タイル、アイコン、または詳細の形でコンテンツを表示できる\)、[!INCLUDE[TLA#tla_xl](../../../includes/tlasharptla-xl-md.md)] チャート \(円、線、棒、式を含むセル値\)、[!INCLUDE[TLA#tla_word](../../../includes/tlasharptla-word-md.md)] 文書 \(標準、Web レイアウト、印刷レイアウト、閲覧レイアウト、アウトライン\)、[!INCLUDE[TLA#tla_outlook](../../../includes/tlasharptla-outlook-md.md)] カレンダー \(年、月、週、日\)、[!INCLUDE[TLA#tla_wmp](../../../includes/tlasharptla-wmp-md.md)] スキンなどがあります。 サポートされるビューはコントロールの開発者によって決定され、各コントロールに固有です。 + + +## 実装のガイドラインと規則 + Multiple View コントロール パターンを実装する場合は、次のガイドラインと規則にご注意ください。 + +- 現在のビューを管理するコンテナーが現在のビューを提供するコントロールとは異なる場合は、現在のビューを管理するためのコンテナーにも を実装する必要があります。 たとえば、Windows エクスプローラーには現在のフォルダーのコンテンツの List コントロールが含まれていますが、そのコントロールのビューは Windows エクスプローラーのアプリケーションから管理されています。 + +- 自身のコンテンツを並べ替えることができるコントロールは、複数のビューをサポートしているとは見なされません。 + +- ビューのコレクションは、インスタンス間で同じである必要があります。 + +- ビューの名前は、読み上げ、ブライユ点字、その他の人間が判読できるアプリケーションでの使用に適した名前にする必要があります。 + + +## IMultipleViewProvider の必須メンバー + IMultipleViewProvider の実装には、次のプロパティとメソッドが必要です。 + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||プロパティ|なし| +||メソッド|なし| +||メソッド|なし| +||メソッド|なし| + + このコントロールのパターンに関連付けられているイベントはありません。 + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +|| または が、サポートされているビュー コレクションのメンバーではないパラメーターで呼び出された場合。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-rangevalue-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-rangevalue-control-pattern.md new file mode 100644 index 00000000000..d6c6a48806e --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-rangevalue-control-pattern.md @@ -0,0 +1,70 @@ +--- +title: "Implementing the UI Automation RangeValue Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control patterns, Range Value" + - "Range Value control pattern" + - "UI Automation, Range Value control pattern" +ms.assetid: 225feaa4-918e-418b-938e-7389338d0a69 +caps.latest.revision: 19 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 19 +--- +# Implementing the UI Automation RangeValue Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、イベントおよびプロパティに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、トピックの最後に記載します。 + + コントロール パターンは、一定の範囲内の値に設定できるコントロールをサポートするために使用します。 このコントロール パターンを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」を参照してください。 + + +## 実装のガイドラインと規則 + Range Value コントロール パターンを実装する場合は、次のガイドラインと規則に留意してください。 + +- コントロールでは、ロケールまたはユーザー設定に基づいてサポートされているプロパティを再調整できます。 たとえば、温度計コントロールを、華氏または摂氏で温度を表示するように設定できます。 + +- 進行状況バーやスライダーなどのあいまいな範囲の値を持つコントロールでは、それらの値を正規化する必要があります。 + + ![進行状況バー。](../../../docs/framework/ui-automation/media/uia-rangevaluepattern-progress-bar.PNG "UIA\_RangeValuePattern\_Progress\_Bar") +値が整数型で、最小値と最大値のプロパティ値がそれぞれ 0 と 100 に正規化された進行状況バーの例 + + +## IRangeValueProvider の必須メンバー + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||メソッド|なし| + + このコントロール パターンに関連付けられたイベントはありません。 + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +|| は、 より大きい値または より小さい値で呼び出されます。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-scroll-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-scroll-control-pattern.md new file mode 100644 index 00000000000..2c5ced882ac --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-scroll-control-pattern.md @@ -0,0 +1,85 @@ +--- +title: "Implementing the UI Automation Scroll Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Scroll control pattern" + - "control patterns, Scroll" + - "Scroll control pattern" +ms.assetid: 73d64242-6cbb-424c-92dd-dc69530b7899 +caps.latest.revision: 23 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 23 +--- +# Implementing the UI Automation Scroll Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、イベントおよびプロパティに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、このトピックの最後に記載します。 + + コントロール パターンは、子オブジェクトのコレクションのスクロール可能なコンテナーとして機能するコントロールをサポートするために使用します。 通常は、スクロール バーを使用してスクロール機能をサポートするためにコントロールが必要ですが、ここでは必要ありません。 + + ![スクロール バーのないスクロール コントロール。](../../../docs/framework/ui-automation/media/uia-scrollpattern-without-scrollbars.PNG "UIA\_ScrollPattern\_Without\_Scrollbars") +スクロール バーを使用しないスクロール コントロールの例 + + このコントロールを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」を参照してください。 + + +## 実装のガイドラインと規則 + スクロール コントロール パターンを実装する場合は、次のガイドラインと規則に留意してください。 + +- このコントロールの子は を実装する必要があります。 + +- コンテナー コントロールのスクロール バーは コントロール パターンをサポートしません。 代わりに、 コントロール パターンをサポートする必要があります。 + +- スクロールをパーセンテージで測定する場合は、スクロール目盛りに関連するすべての値または量を 0 ~ 100 の範囲に正規化する必要があります。 + +- とは無関係です。 + +- \= `false` の場合は、 を 100% に設定し、 に設定する必要があります。 同様に、 \= `false` の場合は、 を 100% に設定し、 に設定する必要があります。 これにより、UI オートメーション クライアントは、スクロールしたくない方向がアクティブになっている場合の[競合状態](http://support.microsoft.com/default.aspx?scid=kb;en-us;317723)を回避しながら、 メソッド内でこれらのプロパティ値を使用できます。 + +- はロケール固有です。 HorizontalScrollPercent \= 100.0 の設定では、左から右に読む英語などの言語の場合、右端に相当する位置にコントロールのスクロール位置を設定する必要があります。 また、右から左に読むアラビア語などの言語の場合は、HorizontalScrollPercent \= 100.0 の設定でスクロール位置を左端の位置に設定する必要があります。 + + +## IScrollProvider の必須メンバー + の実装には、次のプロパティとメソッドが必要です。 + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||メソッド|なし| +||メソッド|なし| + + このコントロール パターンには、関連するイベントがありません。 + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +||コントロールが水平または垂直スクロールの場合にだけ の値をサポートするはずが、 の値が渡された場合に、 がこの例外をスローします。| +|| は、倍精度浮動小数点型に変換できない値が渡された場合に、この例外をスローします。| +|| は、100 を超える値または 0 未満の値が渡された場合に、この例外をスローします \( に相当する \-1 を除く\)。| +|| はどちらも、サポートされていない方向にスクロールされたときに、この例外をスローします。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-scrollitem-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-scrollitem-control-pattern.md new file mode 100644 index 00000000000..456b9ca2040 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-scrollitem-control-pattern.md @@ -0,0 +1,60 @@ +--- +title: "UI オートメーション ScrollItem コントロール パターンの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "スクロール項目コントロール パターン" + - "UI オートメーション、スクロール項目コントロール パターン" + - "スクロール項目コントロール パターン" +ms.assetid: 903bab5c-80c1-44d7-bdc2-0a418893b987 +caps.latest.revision: 16 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 16 +--- +# UI オートメーション ScrollItem コントロール パターンの実装 +> [!NOTE] +> このドキュメントが目的とする、管理を使用する .NET Framework 開発者[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]で定義されたクラス、 名前空間。 最新情報について[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を参照してください[Windows Automation API: UI 自動化](http://go.microsoft.com/fwlink/?LinkID=156746)します。 + + このトピックでは、実装するため、 プロパティ、メソッド、およびイベントに関する情報などです。 その他のリファレンスへのリンクは、トピックの最後に記載します。 + + コントロール パターンが実装したコンテナーの個々 の子コントロールをサポートするために使用されるします。 このコントロール パターンは、子コントロールとそのコンテナーの間の通信チャネルとして機能することで、ビューポート内に現在表示されているコンテンツ (または領域) がコンテナーによって確実に変更され、子コントロールが表示されるようにします。 このコントロール パターンを実装するコントロールの例については、次を参照してください。 [UI オートメーション クライアントのコントロール パターン マッピング](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)します。 + + +## 実装のガイドラインと規則 + スクロール項目コントロール パターンを実装する場合は、次のガイドラインと規則にご留意ください。 + +- ウィンドウ コントロールまたはキャンバス コントロール内の項目で、IScrollItemProvider インターフェイスを実装する必要はありません。 代わりに、ただし、必要があります公開の有効な場所、 します。 これにより、UI オートメーション クライアント アプリケーションを使用する、 子アイテムを表示するコンテナーでのパターンのメソッドを制御します。 + + +## IScrollItemProvider の必須メンバー + IScrollProvider インターフェイスを実装するには、次のメソッドが必要です。 + +|必須メンバー|メンバーの型|ノート| +|----------------------|-----------------|-----------| +||メソッド|なし| + + このコントロール パターンに関連付けられるプロパティやイベントはありません。 + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|--------------------|---------------| +||項目をビューにスクロールできない場合:

- | + +## 関連項目 + [UI オートメーション コントロール パターンの概要](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI オートメーション プロバイダーでコントロール パターンをサポートします。](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [クライアントの UI オートメーション コントロール パターン](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI オートメーション ツリーの概要](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [UI オートメーションにおけるキャッシュを使用します。](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-selection-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-selection-control-pattern.md new file mode 100644 index 00000000000..e06a47784a8 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-selection-control-pattern.md @@ -0,0 +1,74 @@ +--- +title: "Implementing the UI Automation Selection Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Selection control pattern" + - "UI Automation, Selection control pattern" + - "control patterns, Selection" +ms.assetid: 449c3068-a5d6-4f66-84c6-1bcc7dd4d209 +caps.latest.revision: 33 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 33 +--- +# Implementing the UI Automation Selection Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、イベントおよびプロパティに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、トピックの最後に記載します。 + + コントロール パターンは、選択可能な子項目のコレクションのコンテナーとして機能するコントロールをサポートするために使用します。 この要素の子は を実装する必要があります。 このコントロール パターンを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」をご覧ください。 + + +## 実装のガイドラインと規則 + Selection コントロール パターンを実装する場合は、次のガイドラインと規則にご留意ください。 + +- を実装するコントロールでは、単一の子または複数の子項目を選択できます。 たとえば、リスト ボックス、リスト ビュー、ツリー ビューでは複数の項目を選択できる一方、コンボ ボックス、スライダー、ラジオ ボタン グループでは 1 つの項目だけを選択できます。 + +- **音量**スライダー コントロールなど、最小値、最大値、連続した値の範囲を持つコントロールは、 ではなく を実装する必要があります。 + +- **\[画面のプロパティ\]** ダイアログ ボックスの **\[画面解像度\]** スライダーや、[!INCLUDE[TLA#tla_word](../../../includes/tlasharptla-word-md.md)] の**カラー ピッカー**選択コントロールなど \(以下を参照\)、 を実装する子コントロールを管理する単一選択コントロールは を実装する必要があり、その子は の両方を実装する必要があります。 + + ![黄色が強調表示されたカラー ピッカー。](../../../docs/framework/ui-automation/media/uia-valuepattern-colorpicker.png "UIA\_ValuePattern\_ColorPicker") +色見本の文字列のマッピング例 + +- メニューは をサポートしていません。 グラフィックスとテキストの両方を含むメニュー項目 \([!INCLUDE[TLA#tla_outlook](../../../includes/tlasharptla-outlook-md.md)] の **\[表示\]** メニューにある **\[プレビュー ウィンドウ\]** 項目など\) を処理していて、状態を伝える必要がある場合は、 を実装する必要があります。 + + +## ISelectionProvider の必須メンバー + インターフェイスには、次のプロパティ、メソッド、イベントが必要です。 + +|必須メンバー|型|ノート| +|------------|-------|---------| +||プロパティ| を使用してプロパティ変更イベントをサポートする必要があります。| +||プロパティ| を使用してプロパティ変更イベントをサポートする必要があります。| +||メソッド|なし| +||Event|コンテナー内の選択が大幅に変更され、 定数で許可されるよりも多くの追加イベントと削除イベントを送信する必要がある場合に発生します。| + + プロパティと プロパティは、動的に設定できます。 たとえば、既定で初期状態では何も項目が選択されていないコントロールがあるとします。これは、 が `false` であるということです。 しかし、項目が 1 つ選択されると、このコントロールは、項目が常に 1 つ以上選択された状態を保持する必要があります。 同様に、まれなケースとして、初期設定では複数の項目の選択を許可し、以降は 1 項目の選択だけを許可するようにコントロールが設定される場合があります。 + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +||コントロールが有効でない場合。| +||コントロールが非表示の場合。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Implementing the UI Automation SelectionItem Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-selectionitem-control-pattern.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-selectionitem-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-selectionitem-control-pattern.md new file mode 100644 index 00000000000..ce764c01335 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-selectionitem-control-pattern.md @@ -0,0 +1,65 @@ +--- +title: "Implementing the UI Automation SelectionItem Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Selection Item control pattern" + - "UI Automation, Selection Item control pattern" + - "control patterns, Selection Item" +ms.assetid: 76b0949a-5b23-4cfc-84cc-154f713e2e12 +caps.latest.revision: 22 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 22 +--- +# Implementing the UI Automation SelectionItem Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、プロパティ、メソッド、イベントに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、概要の最後に記載します。 + + コントロール パターンは、 を実装するコンテナー コントロールの個別の選択可能な子項目として機能するコントロールをサポートするために使用します。 SelectionItem コントロール パターンを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」を参照してください。 + + +## 実装のガイドラインと規則 + Selection Item コントロール パターンを実装する場合は、次のガイドラインと規則に留意してください。 + +- **\[画面のプロパティ\]** ダイアログ ボックスの **\[画面解像度\]** スライダーなどの を実装する子コントロールを管理する単一選択コントロールは を実装する必要があり、その子は の両方を実装する必要があります。 + + +## ISelectionItemProvider の必須メンバー + の実装には、次のプロパティ、メソッド、およびイベントが必要です。 + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||プロパティ|なし| +||プロパティ|なし| +||メソッド|なし| +||イベント|コンテナー内の選択が大幅に変更され、 定数で許可されたよりも多くの イベントと イベントを送信する必要がある場合に発生します。| + +- 、または の結果が単一選択項目の場合は、 が発生するはずです。それ以外の場合は、必要に応じて、\/ が送信されます。 + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +||次のいずれが試行された場合:

- \= `true` で、既に 1 つの要素が選択されている単一選択コンテナーで が呼び出された場合。
- \= `true` で、1 つの要素だけが選択されている複数選択コンテナーで が呼び出された場合。
- \= `false` で、既に別の要素が選択されている単一選択コンテナーで が呼び出された場合。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Implementing the UI Automation Selection Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-selection-control-pattern.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) + [Fragment Provider Sample](http://msdn.microsoft.com/ja-jp/778ef1bc-8610-4bc9-886e-aeff94a8a13e) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-table-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-table-control-pattern.md new file mode 100644 index 00000000000..b47f98585ee --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-table-control-pattern.md @@ -0,0 +1,75 @@ +--- +title: "UI オートメーション Table コントロール パターンの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI オートメーション Table コントロール パターン" + - "テーブルのコントロール パターン" + - "TableControl パターン" +ms.assetid: 880cd85c-aa8c-4fb5-9369-45491d34bb78 +caps.latest.revision: 19 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 18 +--- +# UI オートメーション Table コントロール パターンの実装 +> [!NOTE] +> このドキュメントが目的とする、管理を使用する .NET Framework 開発者[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]で定義されたクラス、 名前空間。 最新情報について[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を参照してください[Windows Automation API: UI 自動化](http://go.microsoft.com/fwlink/?LinkID=156746)します。 + + このトピックでは、実装するためプロパティ、メソッド、およびイベントに関する情報などです。 その他のリファレンスへのリンクは、概要の最後に記載します。 + + 子要素のコレクションのコンテナーとして機能するコントロールをサポートするコントロール パターンを使用します。 この要素の子を実装する必要がありますや、2 次元論理座標系行と列で走査できるで整理されます。 このコントロール パターンと似ています、任意の制御を実装する区別をも、各子要素の列や行ヘッダー リレーションシップを公開する必要があります。 このコントロール パターンを実装するコントロールの例については、次を参照してください。 [UI オートメーション クライアントのコントロール パターン マッピング](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)します。 + + +## 実装のガイドラインと規則 + Table コントロール パターンを実装する場合は、次のガイドラインと規則に留意してください。 + +- 個別のセルのコンテンツへのアクセスは&2; 次元の論理座標系または配列の必要な同時実行の実装によって提供される、 します。 + +- 列ヘッダーまたは行ヘッダーは、テーブル オブジェクト内に含めることも、テーブル オブジェクトに関連付けられた別のヘッダー オブジェクトにすることもできます。 + +- 列ヘッダーと行ヘッダーには、プライマリ ヘッダーだけでなく、任意の補助ヘッダーも含めることができます。 + +> [!NOTE] +> この概念がで明らかになります、[!INCLUDE[TLA#tla_xl](../../../includes/tlasharptla-xl-md.md)]スプレッドシート ユーザーが「姓」列が定義されています。 これで、この列のヘッダーは、ユーザーが定義した [ファースト ネーム] ヘッダーとアプリケーションによって割り当てられたその列の英数字指定の&2; つになります。 + +- 参照してください[UI オートメーション Grid コントロール パターンを実装する](../../../docs/framework/ui-automation/implementing-the-ui-automation-grid-control-pattern.md)の関連するグリッド機能します。 + + ![複雑なヘッダー項目を含むテーブルです。](../../../docs/framework/ui-automation/media/uia-tablepattern-complex-column-headers.PNG "UIA_TablePattern_Complex_Column_Headers") +列ヘッダーが複雑なテーブルの例 + + ![あいまいな RowOrColumnMajor プロパティを含むテーブル。](../../../docs/framework/ui-automation/media/uia-tablepattern-roworcolumnmajorproperty.PNG "UIA_TablePattern_RowOrColumnMajorProperty") +RowOrColumnMajor プロパティがあいまいなテーブルの例 + + +## ITableProvider の必須メンバー + ITableProvider インターフェイスには、次のプロパティとメソッドが必要です。 + +|必須メンバー|メンバーの型|ノート| +|----------------------|-----------------|-----------| +||プロパティ|なし| +||メソッド|なし| +||メソッド|なし| + + このコントロール パターンに関連付けられたイベントはありません。 + + +## 例外 + このコントロール パターンに関連付けられる例外はありません。 + +## 関連項目 + [UI オートメーション コントロール パターンの概要](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI オートメーション プロバイダーでコントロール パターンをサポートします。](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [クライアントの UI オートメーション コントロール パターン](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI オートメーション TableItem コントロール パターンの実装](../../../docs/framework/ui-automation/implementing-the-ui-automation-tableitem-control-pattern.md) + [UI オートメーション Grid コントロール パターンの実装](../../../docs/framework/ui-automation/implementing-the-ui-automation-grid-control-pattern.md) + [UI オートメーション ツリーの概要](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [UI オートメーションにおけるキャッシュを使用します。](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-tableitem-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-tableitem-control-pattern.md new file mode 100644 index 00000000000..fca0eb2ddac --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-tableitem-control-pattern.md @@ -0,0 +1,57 @@ +--- +title: "UI オートメーション TableItem コントロール パターンの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "テーブル項目コントロール パターン" + - "UI オートメーション、テーブル項目コントロール パターン" + - "TableItem コントロール パターン" +ms.assetid: ac178408-1485-436f-8d3e-eee3bf80cb24 +caps.latest.revision: 14 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 14 +--- +# UI オートメーション TableItem コントロール パターンの実装 +> [!NOTE] +> このドキュメントが目的とする、管理を使用する .NET Framework 開発者[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]で定義されたクラス、 名前空間。 最新情報について[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を参照してください[Windows Automation API: UI 自動化](http://go.microsoft.com/fwlink/?LinkID=156746)します。 + + このトピックでは、実装するためイベント、およびプロパティに関する情報などです。 その他のリファレンスへのリンクは、概要の最後に記載します。 + + コントロール パターンが実装したコンテナーの子コントロールをサポートするために使用されるします。 個々 のセル機能へのアクセスは、実装によって提供される、必要な同時実行のします。 このコントロール パターンをに似て区別のいずれかの制御を実装することを個々 のセルとその行と列の情報間のリレーションシップをプログラムで公開する必要があります。 このコントロール パターンを実装するコントロールの例については、次を参照してください。 [UI オートメーション クライアントのコントロール パターン マッピング](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)します。 + + +## 実装のガイドラインと規則 + +- 関連するグリッド項目の機能を参照してください。 [UI オートメーション GridItem コントロール パターンを実装する](../../../docs/framework/ui-automation/implementing-the-ui-automation-griditem-control-pattern.md)です。 + + +## ITableItemProvider の必須メンバー + +|必須メンバー|メンバーの型|ノート| +|---------------------|-----------------|-----------| +||メソッド|なし| +||メソッド|なし| + + このコントロール パターンに関連付けられるプロパティやイベントはありません。 + + +## 例外 + このコントロール パターンに関連付けられる例外はありません。 + +## 関連項目 + [UI オートメーション コントロール パターンの概要](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI オートメーション プロバイダーでコントロール パターンをサポートします。](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [クライアントの UI オートメーション コントロール パターン](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI オートメーション Table コントロール パターンの実装](../../../docs/framework/ui-automation/implementing-the-ui-automation-table-control-pattern.md) + [UI オートメーション GridItem コントロール パターンの実装](../../../docs/framework/ui-automation/implementing-the-ui-automation-griditem-control-pattern.md) + [UI オートメーション ツリーの概要](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [UI オートメーションにおけるキャッシュを使用します。](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-toggle-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-toggle-control-pattern.md new file mode 100644 index 00000000000..d5da8cf5c80 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-toggle-control-pattern.md @@ -0,0 +1,64 @@ +--- +title: "Implementing the UI Automation Toggle Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Toggle control pattern" + - "control patterns, Toggle" + - "UI Automation, Toggle control pattern" +ms.assetid: 3cfe875f-b0c0-413d-9703-5f14e6a1a30e +caps.latest.revision: 19 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 19 +--- +# Implementing the UI Automation Toggle Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、メソッドおよびプロパティに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、トピックの最後に記載します。 + + コントロール パターンは、一連の状態を順番に繰り返し、状態を一度設定したらそれを保持できるコントロールをサポートするために使用します。 このコントロール パターンを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」をご覧ください。 + + +## 実装のガイドラインと規則 + Toggle コントロール パターンを実装する場合は、次のガイドラインと規則にご留意ください。 + +- ボタン、ツール バー ボタン、ハイパーリンクなど、アクティブになったときに状態を保持しないコントロールは、代わりに を実装する必要があります。 + +- コントロールは、 \(サポートされている場合\) の順にその を繰り返す必要があります。 + +- は、SetState\(newState\) メソッドを提供しません。これは、適切な の順番の繰り返しをせずに、3 つの状態を持つ CheckBox を直接設定することに関連する問題のためです。 + +- RadioButton コントロールは を実装しません。これは、その正しい状態を順番に繰り返す機能がないためです。 + + +## IToggleProvider の必須メンバー + の実装には、次のプロパティとメソッドが必要です。 + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||メソッド|なし| +||プロパティ|なし| + + このコントロール パターンに関連付けられたイベントはありません。 + + +## 例外 + このコントロール パターンに関連付けられた例外はありません。 + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Get the Toggle State of a Check Box Using UI Automation](../../../docs/framework/ui-automation/get-the-toggle-state-of-a-check-box-using-ui-automation.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-transform-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-transform-control-pattern.md new file mode 100644 index 00000000000..6c098bc8018 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-transform-control-pattern.md @@ -0,0 +1,73 @@ +--- +title: "Implementing the UI Automation Transform Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control patterns, Transform" + - "Transform control pattern" + - "UI Automation, Transform control pattern" +ms.assetid: 5f49d843-5845-4800-9d9c-56ce0d146844 +caps.latest.revision: 14 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 14 +--- +# Implementing the UI Automation Transform Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、プロパティ、メソッド、イベントに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、トピックの最後に記載します。 + + コントロール パターンは、2 次元空間で移動、サイズ変更、または回転できるコントロールをサポートするために使用されます。 このコントロール パターンを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」をご覧ください。 + + +## 実装のガイドラインと規則 + Transform コントロール パターンを実装する場合は、次のガイドラインと規則にご留意ください。 + +- このコントロール パターンのサポートは、デスクトップ上のオブジェクトに制限されません。 コンテナーの境界内で子が自由に移動、サイズ変更、または回転できるようにする場合は、そのコンテナー オブジェクトの子もこのコントロール パターンをサポートしている必要があります。 + +- 操作後の画面位置が完全にそのコンテナーの座標外となり、キーボードやマウスからアクセスできなくなる場合 \(たとえば、トップレベルのウィンドウが画面外に移動したり、子オブジェクトがコンテナーのビューポートの境界外へ移動したりする場合\) は、オブジェクトの移動、サイズ変更、および回転はできません。 このような場合、上辺または左辺の座標をコンテナーの境界内にオーバーライドして、要求された画面座標のできるだけ近くにオブジェクトが配置されます。 + +- マルチモニター システムでは、結合したデスクトップ画面座標の完全に外へオブジェクトを移動、サイズ変更、または回転した場合、プライマリ モニター上の、要求された画面座標のできるだけ近くにオブジェクトが配置されます。 + +- すべてのパラメーターとプロパティの値は絶対値で、ロケールには依存しません。 + + +## ITransformProvider の必須メンバー + の実装には、次のプロパティとメソッドが必要です。 + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||メソッド|なし| +||メソッド|なし| +||メソッド|なし| + + このコントロール パターンに関連付けられたイベントはありません。 + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +||

- が false の場合。| +||

- が false の場合。| +||

- が false の場合。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-value-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-value-control-pattern.md new file mode 100644 index 00000000000..9d8c4278c10 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-value-control-pattern.md @@ -0,0 +1,79 @@ +--- +title: "Implementing the UI Automation Value Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control patterns, Value" + - "UI Automation, Value control pattern" + - "Value control pattern" +ms.assetid: b0fcdd87-3add-4345-bca9-e891205e02ba +caps.latest.revision: 25 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 24 +--- +# Implementing the UI Automation Value Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、イベントおよびプロパティに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、このトピックの最後に記載します。 + + コントロール パターンは、範囲にまたがることのない組み込み値を持つコントロールや、文字列として表すことができるコントロールをサポートするために使用されます。 この文字列は、コントロールとその設定によっては、編集できます。 このパターンを実装するコントロールの例については、「[Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md)」を参照してください。 + + +## 実装のガイドラインと規則 + Value コントロール パターンを実装する場合は、次のガイドラインと規則に留意してください。 + +- などのコントロールは、コントロールの現在の編集モードに関係なく、いずれかの項目の値が編集可能である場合は、 をサポートする必要があります。 子項目が編集可能である場合は、親コントロールも をサポートする必要があります。 + + ![編集可能なリスト項目。](../../../docs/framework/ui-automation/media/uia-valuepattern-editable-listitem.PNG "UIA\_ValuePattern\_Editable\_ListItem") +編集可能なリスト項目の例 + +- 単一行のエディット コントロールは、そのコンテンツへのプログラムによるアクセスをサポートするために、 を実装します。 一方、複数行のエディット コントロールは を実装しません。代わりに を実装して、そのコンテンツへのアクセスを提供します。 + +- 複数行の編集コントロールのテキスト コンテンツを取得するには、コントロールが を実装していなければなりません。 ただし、 はコントロールの値の設定はサポートしていません。 + +- は、書式設定情報や部分文字列の値の取得をサポートしていません。 このようなシナリオでは を実装します。 + +- を実装する必要があるコントロールの一例は、[!INCLUDE[TLA#tla_word](../../../includes/tlasharptla-word-md.md)] の **カラー ピッカー**選択コントロールです \(以下を参照\)。このコントロールは、色の値 \(たとえば「黄」\) と同等の内部 [!INCLUDE[TLA#tla_rgb](../../../includes/tlasharptla-rgb-md.md)] 構造の間の文字列マッピングをサポートしています。 + + ![黄色が強調表示されたカラー ピッカー。](../../../docs/framework/ui-automation/media/uia-valuepattern-colorpicker.png "UIA\_ValuePattern\_ColorPicker") +色見本の文字列マッピング例 + +- を呼び出せるようにするには、コントロールの を `true` に設定し、 を `false` に設定する必要があります。 + + +## IValueProvider の必須メンバー + の実装には、次のプロパティとメソッドが必要です。 + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||プロパティ|なし| +||プロパティ|なし| +||メソッド|なし| + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +||

- ロケールに固有の情報が、誤った形式でコントロールに渡された場合 \(誤った日付形式など\)。| +||

- 新しい値を、文字列からコントロールが認識する形式に変換できない場合。| +||

- 有効になっていないコントロールの操作が試行された場合。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [TextPattern Insert Text Sample](http://msdn.microsoft.com/ja-jp/67353f93-7ee2-42f2-ab76-5c078cf6ca16) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/implementing-the-ui-automation-window-control-pattern.md b/docs/framework/ui-automation/implementing-the-ui-automation-window-control-pattern.md new file mode 100644 index 00000000000..d0ddbd0b853 --- /dev/null +++ b/docs/framework/ui-automation/implementing-the-ui-automation-window-control-pattern.md @@ -0,0 +1,78 @@ +--- +title: "Implementing the UI Automation Window Control Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control patterns, Window" + - "UI Automation, Window control pattern" + - "Window control pattern" +ms.assetid: a28cb286-296e-4a62-b4cb-55ad636ebccc +caps.latest.revision: 21 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 20 +--- +# Implementing the UI Automation Window Control Pattern +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、 のプロパティ、メソッド、イベントに関する情報など、 の実装のためのガイドラインと規則について説明します。 その他のリファレンスへのリンクは、このトピックの最後に記載します。 + + コントロール パターンは、従来の [!INCLUDE[TLA#tla_gui](../../../includes/tlasharptla-gui-md.md)] 内で、ウィンドウ ベースの基本的な機能を提供するコントロールをサポートするために使用されます。 このコントロール パターンを実装する必要があるコントロールの例として、最上位のアプリケーション ウィンドウ、[!INCLUDE[TLA#tla_mdi](../../../includes/tlasharptla-mdi-md.md)] 子ウィンドウ、サイズ変更可能な分割ウィンドウ コントロール、モーダル ダイアログ ボックス、バルーン ヘルプ ウィンドウがあります。 + + +## 実装のガイドラインと規則 + Window コントロール パターンを実装する場合は、次のガイドラインと規則に注意してください。 + +- UI オートメーションを使用してウィンドウのサイズと位置の両方を変更する機能をサポートするには、コントロールが に加えて を実装する必要があります。 + +- コントロールを移動、サイズ変更、最大化、最小化、および閉じられるようにするタイトル バーの要素とタイトル バーを格納するコントロールは、通常 を実装することが求められます。 + +- ツールヒントのポップアップやコンボ ボックス、またはメニューのドロップダウンなどのコントロールは、通常 を実装しません。 + +- バルーン ヘルプ ウィンドウは、ウィンドウと同様の閉じるボタンを提供することで、基本的なツールヒント ポップアップから区別されます。 + +- 全画面表示モードは、アプリケーション固有の機能であり、通常のウィンドウの動作ではないため、IWindowProvider によってサポートされません。 + + +## IWindowProvider の必須メンバー + IWindowProvider インターフェイスには、次のプロパティ、メソッド、イベントが必要です。 + +|必須メンバー|メンバーの型|ノート| +|------------|------------|---------| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||プロパティ|なし| +||メソッド|なし| +||メソッド|なし| +||メソッド|なし| +||Event|なし| +||Event|なし| +||イベント| であると保証されない| + + +## 例外 + プロバイダーは、次の例外をスローする必要があります。 + +|例外の種類|状態| +|-----------|--------| +||

- コントロールが、要求された動作をサポートしない場合。| +||

- パラメーターが、有効な値ではない場合。| + +## 参照 + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/index.md b/docs/framework/ui-automation/index.md new file mode 100644 index 00000000000..9b4ce65b3dd --- /dev/null +++ b/docs/framework/ui-automation/index.md @@ -0,0 +1,46 @@ +--- +title: "UI Automation Fundamentals | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "UI automation fundamentals" +ms.assetid: e7ec856e-41ee-47b1-9d57-b75a3dad088c +caps.latest.revision: 80 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 54 +--- +# UI Automation Fundamentals +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] [!INCLUDE[TLA#tla_api](../../../includes/tlasharptla-api-md.md)] の全般的な概要を示します。 + +## このセクションの内容 + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) + [UI Automation and Microsoft Active Accessibility](../../../docs/framework/ui-automation/ui-automation-and-microsoft-active-accessibility.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI Automation Properties Overview](../../../docs/framework/ui-automation/ui-automation-properties-overview.md) + [UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md) + [UI Automation Security Overview](../../../docs/framework/ui-automation/ui-automation-security-overview.md) + [Using UI Automation for Automated Testing](../../../docs/framework/ui-automation/using-ui-automation-for-automated-testing.md) + +## 関連項目 + + + + + + + \ No newline at end of file diff --git a/docs/framework/ui-automation/invoke-a-control-using-ui-automation.md b/docs/framework/ui-automation/invoke-a-control-using-ui-automation.md new file mode 100644 index 00000000000..896204ae798 --- /dev/null +++ b/docs/framework/ui-automation/invoke-a-control-using-ui-automation.md @@ -0,0 +1,46 @@ +--- +title: "Invoke a Control Using UI Automation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "invoking controls" + - "UI Automation, invoking controls" + - "controls, invoking" +ms.assetid: 5ee2de3f-256c-43ec-b64c-62ace91f9983 +caps.latest.revision: 15 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 15 +--- +# Invoke a Control Using UI Automation +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、次のタスクを実行する方法について示します。 + +- ターゲット アプリケーションの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューを調べて、特定のプロパティ条件に一致するコントロールを検索する。 + +- 各コントロールに対して を作成する。 + +- コントロール パターンをサポートする [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要素から オブジェクトを取得する。 + +- を使用して、クライアントのイベント ハンドラーからコントロールを呼び出す。 + +## 使用例 + この例では、 クラスの メソッドを使用して オブジェクトを生成し、 メソッドを使用してコントロールを呼び出します。 + + [!code-csharp[InvokePatternApp#1100](../../../samples/snippets/csharp/VS_Snippets_Wpf/InvokePatternApp/CSharp/InvokePatternApp.cs#1100)] + [!code-vb[InvokePatternApp#1100](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/InvokePatternApp/VisualBasic/Client.vb#1100)] +[!code-csharp[InvokePatternApp#1102](../../../samples/snippets/csharp/VS_Snippets_Wpf/InvokePatternApp/CSharp/InvokePatternApp.cs#1102)] +[!code-vb[InvokePatternApp#1102](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/InvokePatternApp/VisualBasic/Client.vb#1102)] + +## 参照 + [InvokePattern and ExpandCollapsePattern Menu Item Sample](http://msdn.microsoft.com/ja-jp/b7fa141c-e2d1-4da2-a27f-81a7d1172210) \ No newline at end of file diff --git a/docs/framework/ui-automation/media/uia-dockpattern-dockingexample.PNG b/docs/framework/ui-automation/media/uia-dockpattern-dockingexample.PNG new file mode 100644 index 00000000000..5d15ef477cb Binary files /dev/null and b/docs/framework/ui-automation/media/uia-dockpattern-dockingexample.PNG differ diff --git a/docs/framework/ui-automation/media/uia-gridpattern-ragged-array.PNG b/docs/framework/ui-automation/media/uia-gridpattern-ragged-array.PNG new file mode 100644 index 00000000000..4ac0a0ddf5b Binary files /dev/null and b/docs/framework/ui-automation/media/uia-gridpattern-ragged-array.PNG differ diff --git a/docs/framework/ui-automation/media/uia-rangevaluepattern-progress-bar.PNG b/docs/framework/ui-automation/media/uia-rangevaluepattern-progress-bar.PNG new file mode 100644 index 00000000000..9171e197a2f Binary files /dev/null and b/docs/framework/ui-automation/media/uia-rangevaluepattern-progress-bar.PNG differ diff --git a/docs/framework/ui-automation/media/uia-scrollpattern-without-scrollbars.PNG b/docs/framework/ui-automation/media/uia-scrollpattern-without-scrollbars.PNG new file mode 100644 index 00000000000..51dd79f0b79 Binary files /dev/null and b/docs/framework/ui-automation/media/uia-scrollpattern-without-scrollbars.PNG differ diff --git a/docs/framework/ui-automation/media/uia-tablepattern-complex-column-headers.PNG b/docs/framework/ui-automation/media/uia-tablepattern-complex-column-headers.PNG new file mode 100644 index 00000000000..c9e5f36b328 Binary files /dev/null and b/docs/framework/ui-automation/media/uia-tablepattern-complex-column-headers.PNG differ diff --git a/docs/framework/ui-automation/media/uia-tablepattern-roworcolumnmajorproperty.PNG b/docs/framework/ui-automation/media/uia-tablepattern-roworcolumnmajorproperty.PNG new file mode 100644 index 00000000000..e3da9701f58 Binary files /dev/null and b/docs/framework/ui-automation/media/uia-tablepattern-roworcolumnmajorproperty.PNG differ diff --git a/docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-example1.png b/docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-example1.png new file mode 100644 index 00000000000..b5e99de3e83 Binary files /dev/null and b/docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-example1.png differ diff --git a/docs/framework/ui-automation/media/uia-textpattern-embeddedobjects.PNG b/docs/framework/ui-automation/media/uia-textpattern-embeddedobjects.PNG new file mode 100644 index 00000000000..3100532baba Binary files /dev/null and b/docs/framework/ui-automation/media/uia-textpattern-embeddedobjects.PNG differ diff --git a/docs/framework/ui-automation/media/uia-textpattern-embeddedobjecttextranges.png b/docs/framework/ui-automation/media/uia-textpattern-embeddedobjecttextranges.png new file mode 100644 index 00000000000..653d32366d8 Binary files /dev/null and b/docs/framework/ui-automation/media/uia-textpattern-embeddedobjecttextranges.png differ diff --git a/docs/framework/ui-automation/media/uia-textpattern-endpoints.PNG b/docs/framework/ui-automation/media/uia-textpattern-endpoints.PNG new file mode 100644 index 00000000000..f92072803f5 Binary files /dev/null and b/docs/framework/ui-automation/media/uia-textpattern-endpoints.PNG differ diff --git a/docs/framework/ui-automation/media/uia-textpattern-moveandexpand-examples.png b/docs/framework/ui-automation/media/uia-textpattern-moveandexpand-examples.png new file mode 100644 index 00000000000..188a9e62bad Binary files /dev/null and b/docs/framework/ui-automation/media/uia-textpattern-moveandexpand-examples.png differ diff --git a/docs/framework/ui-automation/media/uia-valuepattern-colorpicker.png b/docs/framework/ui-automation/media/uia-valuepattern-colorpicker.png new file mode 100644 index 00000000000..a4091e65cb2 Binary files /dev/null and b/docs/framework/ui-automation/media/uia-valuepattern-colorpicker.png differ diff --git a/docs/framework/ui-automation/media/uia-valuepattern-editable-listitem.PNG b/docs/framework/ui-automation/media/uia-valuepattern-editable-listitem.PNG new file mode 100644 index 00000000000..3b2419bb082 Binary files /dev/null and b/docs/framework/ui-automation/media/uia-valuepattern-editable-listitem.PNG differ diff --git a/docs/framework/ui-automation/media/uiauto-data-grid-detailed.GIF b/docs/framework/ui-automation/media/uiauto-data-grid-detailed.GIF new file mode 100644 index 00000000000..d7775fb6b8f Binary files /dev/null and b/docs/framework/ui-automation/media/uiauto-data-grid-detailed.GIF differ diff --git a/docs/framework/ui-automation/move-a-ui-automation-element.md b/docs/framework/ui-automation/move-a-ui-automation-element.md new file mode 100644 index 00000000000..da308f56dd4 --- /dev/null +++ b/docs/framework/ui-automation/move-a-ui-automation-element.md @@ -0,0 +1,38 @@ +--- +title: "Move a UI Automation Element | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "moving elements" + - "elements, moving" + - "UI Automation, moving elements" +ms.assetid: 4042cb44-e27e-4a03-ac36-9be1eed65b47 +caps.latest.revision: 19 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 19 +--- +# Move a UI Automation Element +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + この例では、指定した画面位置に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]要素を移動する方法を示しています。 + +## 使用例 + 次の例では、 および コントロール パターンを使用して、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] ターゲット アプリケーションを非連続の画面位置にプログラムで移動し、 を追跡します。 + + [!code-csharp[WindowMove#1301](../../../samples/snippets/csharp/VS_Snippets_Wpf/WindowMove/CSharp/WindowMove.cs#1301)] + [!code-vb[WindowMove#1301](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/WindowMove/VisualBasic/windowmove.vb#1301)] +[!code-csharp[WindowMove#1300](../../../samples/snippets/csharp/VS_Snippets_Wpf/WindowMove/CSharp/WindowMove.cs#1300)] +[!code-vb[WindowMove#1300](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/WindowMove/VisualBasic/windowmove.vb#1300)] + +## 参照 + [WindowPattern Sample](http://msdn.microsoft.com/ja-jp/598b695c-8baf-406e-bbfb-2a1c7842a1de) \ No newline at end of file diff --git a/docs/framework/ui-automation/navigate-among-ui-automation-elements-with-treewalker.md b/docs/framework/ui-automation/navigate-among-ui-automation-elements-with-treewalker.md new file mode 100644 index 00000000000..cd161525094 --- /dev/null +++ b/docs/framework/ui-automation/navigate-among-ui-automation-elements-with-treewalker.md @@ -0,0 +1,43 @@ +--- +title: "Navigate Among UI Automation Elements with TreeWalker | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "classes, TreeWalker" + - "TreeWalker class" + - "elements, navigating among" + - "UI Automation, navigating among elements" +ms.assetid: afcd21dc-2ffa-48c9-9332-51269f44b7e9 +caps.latest.revision: 8 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 8 +--- +# Navigate Among UI Automation Elements with TreeWalker +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックのコード例では、 クラスを使用して [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]要素間を移動する方法を示します。 + +## 使用例 + を使用して、ルート要素であるデスクトップを見つけるまで [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] ツリーを上方向へ移動する例を次に示します。 そのすぐ下の要素は指定した要素の親ウィンドウです。 + + [!code-csharp[UIAFocusTracker_snip#102](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAFocusTracker_snip/CSharp/FocusTracker.cs#102)] + [!code-vb[UIAFocusTracker_snip#102](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAFocusTracker_snip/VisualBasic/FocusTracker.vb#102)] + +## 使用例 + 次の例では、 を使用して、コントロール ビュー内にある有効な [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]要素のサブツリー全体を表示する を作成します。 + + [!code-csharp[UIAClient_snip#174](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#174)] + [!code-vb[UIAClient_snip#174](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#174)] + +## 参照 + [Obtaining UI Automation Elements](../../../docs/framework/ui-automation/obtaining-ui-automation-elements.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/obtain-mixed-text-attribute-details-using-ui-automation.md b/docs/framework/ui-automation/obtain-mixed-text-attribute-details-using-ui-automation.md new file mode 100644 index 00000000000..15113c045ba --- /dev/null +++ b/docs/framework/ui-automation/obtain-mixed-text-attribute-details-using-ui-automation.md @@ -0,0 +1,39 @@ +--- +title: "Obtain Mixed Text Attribute Details Using UI Automation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d0e4c005-abd1-42bb-92a4-5faf87097311 +caps.latest.revision: 11 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 11 +--- +# Obtain Mixed Text Attribute Details Using UI Automation +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]を使用して、複数の属性値にまたがるテキスト範囲からテキスト属性の詳細を取得する方法を示します。 テキスト範囲は、ドキュメント内でのキャレット \(^\) の現在位置 \(つまり低次元の選択範囲\)、連続したテキストを選択したもの、個別に選択したテキストの集合、またはドキュメントに含まれるテキスト全体のいずれかに対応します。 + +## 使用例 + 次のコード例は、 オブジェクトを返すテキスト範囲から を取得する方法を示しています。 + + [!code-csharp[FindText#RetrieveMixedAttributes](../../../samples/snippets/csharp/VS_Snippets_Wpf/FindText/CSharp/SearchWindow.cs#retrievemixedattributes)] + [!code-vb[FindText#RetrieveMixedAttributes](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FindText/VisualBasic/SearchWindow.vb#retrievemixedattributes)] + + コントロール パターンは、 クラスと共に、基本的なテキスト属性、プロパティ、およびメソッドをサポートします。 または によってサポートされないコントロール固有の機能の場合、UI オートメーション クライアントが対応するネイティブ オブジェクト モデルにアクセスできるように、 クラスがメソッドを提供します。 + +## 参照 + [UI Automation TextPattern Overview](../../../docs/framework/ui-automation/ui-automation-textpattern-overview.md) + [Add Content to a Text Box Using UI Automation](../../../docs/framework/ui-automation/add-content-to-a-text-box-using-ui-automation.md) + [Find and Highlight Text Using UI Automation](../../../docs/framework/ui-automation/find-and-highlight-text-using-ui-automation.md) + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Obtain Text Attributes Using UI Automation](../../../docs/framework/ui-automation/obtain-text-attributes-using-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/obtain-text-attributes-using-ui-automation.md b/docs/framework/ui-automation/obtain-text-attributes-using-ui-automation.md new file mode 100644 index 00000000000..46416f6af30 --- /dev/null +++ b/docs/framework/ui-automation/obtain-text-attributes-using-ui-automation.md @@ -0,0 +1,47 @@ +--- +title: "Obtain Text Attributes Using UI Automation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "getting, text attributes" + - "UI Automation, getting text attributes" + - "text attributes, getting" +ms.assetid: fdefc6c3-b836-4cfe-8dec-1484bfdc5551 +caps.latest.revision: 13 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 13 +--- +# Obtain Text Attributes Using UI Automation +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]を使用して、テキスト範囲からテキスト属性を取得する方法について説明します。 テキスト範囲は、ドキュメント内のキャレットの現在の位置 \(または低次元選択\)、テキストの連続した選択、非連続のテキスト選択のコレクション、またはドキュメントのテキスト コンテンツ全体に対応します。 + +## 使用例 + 次のコード例は、テキスト範囲から を取得する方法を示しています。 + + [!code-csharp[UIATextPattern_snip#StartTarget](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATextPattern_snip/CSharp/SearchWindow.cs#starttarget)] + [!code-vb[UIATextPattern_snip#StartTarget](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIATextPattern_snip/VisualBasic/SearchWindow.vb#starttarget)] +[!code-csharp[UIATextPattern_snip#GetTextElement](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATextPattern_snip/CSharp/SearchWindow.cs#gettextelement)] +[!code-vb[UIATextPattern_snip#GetTextElement](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIATextPattern_snip/VisualBasic/SearchWindow.vb#gettextelement)] +[!code-csharp[UIATextPattern_snip#FontName](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATextPattern_snip/CSharp/SearchWindow.cs#fontname)] +[!code-vb[UIATextPattern_snip#FontName](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIATextPattern_snip/VisualBasic/SearchWindow.vb#fontname)] + + コントロール パターンは クラスと連携して、基本のテキスト属性、プロパティ、メソッドをサポートします。 または によってサポートされないコントロール固有の機能の場合、 クラスは対応するネイティブ オブジェクト モデルにアクセスするための UI オートメーション クライアントのメソッドを提供します。 + +## 参照 + [UI Automation TextPattern Overview](../../../docs/framework/ui-automation/ui-automation-textpattern-overview.md) + [Add Content to a Text Box Using UI Automation](../../../docs/framework/ui-automation/add-content-to-a-text-box-using-ui-automation.md) + [Find and Highlight Text Using UI Automation](../../../docs/framework/ui-automation/find-and-highlight-text-using-ui-automation.md) + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Obtain Mixed Text Attribute Details Using UI Automation](../../../docs/framework/ui-automation/obtain-mixed-text-attribute-details-using-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/obtaining-ui-automation-elements.md b/docs/framework/ui-automation/obtaining-ui-automation-elements.md new file mode 100644 index 00000000000..50da62c1753 --- /dev/null +++ b/docs/framework/ui-automation/obtaining-ui-automation-elements.md @@ -0,0 +1,109 @@ +--- +title: "Obtaining UI Automation Elements | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, obtaining elements" + - "elements, UI Automation, obtaining" +ms.assetid: c2caaf45-e59c-42a1-bc9b-77a6de520171 +caps.latest.revision: 23 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 23 +--- +# Obtaining UI Automation Elements +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] 要素の オブジェクトを取得するさまざまな方法について説明します。 + +> [!CAUTION] +> クライアント アプリケーションが独自のユーザー インターフェイスで要素の検索を試行する可能性がある場合は、すべての [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の呼び出しを個別のスレッドで実行する必要があります。 詳細については、「[UI Automation Threading Issues](../../../docs/framework/ui-automation/ui-automation-threading-issues.md)」を参照してください。 + + +## ルート要素 + オブジェクトの検索には必ず、開始場所が必要です。 この開始場所には、デスクトップ、アプリケーション ウィンドウ、コントロールなど任意の要素を指定できます。 + + デスクトップのルート要素 \(すべての要素が派生する\) が静的 プロパティから取得されます。 + +> [!CAUTION] +> 通常、 の直接の子のみの取得を試行する必要があります。 子孫の検索は、数百または数千もの要素を反復処理する場合があり、スタック オーバーフローを引き起こす可能性があります。 下位レベルの特定の要素を取得しようとする場合、アプリケーション ウィンドウから、または下位レベルのコンテナーから検索を開始する必要があります。 + + +## 条件 + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要素を取得するために使用できるほとんどの手法では、 を指定する必要があります。これは、取得する要素を定義する一連の条件になります。 + + 最も簡単な条件は で、検索範囲内のすべての要素を指定する定義済みオブジェクトが返されます。 要素が検出されなくなるため、 \( の逆\) はあまり有用ではありません。 + + その他の 3 つの定義済み条件 \(、および \) は、単独で使用することも、その他の条件と組み合わせて使用することもできます。 を単独で使用した場合、 または プロパティで要素をフィルター処理しないため と同等になります。 + + その他の条件は 1 つ以上の オブジェクトで構築され、それぞれはプロパティ値を指定します。 たとえば、 は要素が有効であることを指定したり、特定のコントロール パターンをサポートすることを指定したりします。 + + 、および の型のオブジェクトを構築することによって、ブール ロジックを使用して条件を組み合わせることができます。 + + +## 検索範囲 + または 使用した検索には、範囲と開始場所が必要です。 + + 範囲は、検索対象の開始場所の周囲の領域を定義します。 これには、要素自体、その兄弟、その親、その先祖、その直接の子、およびその子孫を含めることができます。 + + 列挙の値のビットごとの組み合わせによって、検索の範囲が定義されます。 + + +## 既知の要素の検索 + 既知の要素 \(その 、または他のプロパティまたはプロパティの組み合わせによって識別される\) を検索する方法として、 メソッドを使用する方法が最も簡単です。 検索する要素がアプリケーション ウィンドウである場合は、検索の開始点を にすることができます。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要素を検索するこの方法は、自動化されたシナリオ テストの最も有用な方法になります。 + + +## サブツリー内の要素の検索 + 既知の要素に関連する特定の条件を満たすすべての要素を検索するには、 を使用します。 たとえば、このメソッドを使用して、リストまたはメニューからリスト項目またはメニュー項目を取得したり、ダイアログ ボックスのすべてのコントロールを識別したりできます。 + + +## サブツリーのウォーク + クライアントで使用されるアプリケーションについて予備知識がない場合、 クラスを使用して、対象となるすべての要素のサブツリーを構築することができます。 アプリケーションは、フォーカス変更イベントへの応答でこれを実行することができます。つまり、アプリケーションやコントロールが入力フォーカスを受け取るときに、UI オートメーション クライアントはフォーカスされている要素の子およびすべての子孫を調べます。 + + で使用できる別の方法は、要素の先祖を特定する方法です。 たとえば、ツリーをウォークすることによって、コントロールの親ウィンドウを特定できます。 + + クラスのオブジェクトを作成する \( を渡すことによって対象の要素を定義する\) か、 のフィールドとして定義されている次の定義済みオブジェクトのいずれかを使用することによって、 を使用できます。 + +||| +|-|-| +|| プロパティが `true` である要素のみを検索します。| +|| プロパティが `true` である要素のみを検索します。| +||すべての要素を検索します。| + + を取得した後、それを使用することは簡単です。`Get` メソッドを呼び出し、サブツリーの要素間を移動するだけです。 + + メソッドを使用すると、ビューの一部ではない要素からサブツリー内の他の要素に移動できます。 たとえば、 を使用してサブツリーのビューを作成したとします。 スクロール バーが入力フォーカスを受信したことを示す通知を、アプリケーションが受け取ります。 スクロール バーはコンテンツ要素ではないため、サブツリーのビューには存在しません。 しかし、スクロール バーを表す に渡し、コンテンツ ビュー内にある最も近い先祖を取得することができます。 + + +## 要素を取得する別の方法 + 検索とナビゲーションに加えて、次の方法で を取得できます。 + +### イベントから + アプリケーションが [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを受信するときに、イベント ハンドラーに渡されるソース オブジェクトは です。 たとえば、フォーカス変更イベントをサブスクライブしている場合、 に渡されるソースはフォーカスを受け取った要素になります。 + + 詳細については、「[Subscribe to UI Automation Events](../../../docs/framework/ui-automation/subscribe-to-ui-automation-events.md)」を参照してください。 + +### ポイントから + 画面座標 \(たとえば、カーソル位置\) がある場合、静的 メソッドを使用して を取得できます。 + +### ウィンドウ ハンドルから + HWND から を取得するには、静的 メソッドを使用します。 + +### フォーカスされたコントロールから + 静的 プロパティから、フォーカスされたコントロールを表す を取得できます。 + +## 参照 + [Find a UI Automation Element Based on a Property Condition](../../../docs/framework/ui-automation/find-a-ui-automation-element-based-on-a-property-condition.md) + [Navigate Among UI Automation Elements with TreeWalker](../../../docs/framework/ui-automation/navigate-among-ui-automation-elements-with-treewalker.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/raise-events-from-a-ui-automation-provider.md b/docs/framework/ui-automation/raise-events-from-a-ui-automation-provider.md new file mode 100644 index 00000000000..10613aba2b6 --- /dev/null +++ b/docs/framework/ui-automation/raise-events-from-a-ui-automation-provider.md @@ -0,0 +1,36 @@ +--- +title: "Raise Events from a UI Automation Provider | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, raising events" + - "raising UI Automation events" +ms.assetid: 9fe2f01b-f7d8-49a8-a185-d4472b9976c0 +caps.latest.revision: 13 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 13 +--- +# Raise Events from a UI Automation Provider +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックには、UI オートメーション プロバイダーからイベントを発生させる方法を示すコード例が記載されています。 + +## 使用例 + 次の例では、カスタム ボタン コントロールの実装で [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントが発生します。 実装により、UI オートメーション クライアント アプリケーションがボタンのクリックをシミュレートできるようになります。 + + 不要な処理を回避するために、例では をチェックして、イベントが発生するかどうかを確認しています。 + + [!code-csharp[UIAProvider_snip#150](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAProvider_snip/CSharp/FragmentRoot.cs#150)] + +## 参照 + [UI Automation Providers Overview](../../../docs/framework/ui-automation/ui-automation-providers-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/register-a-client-side-provider-assembly.md b/docs/framework/ui-automation/register-a-client-side-provider-assembly.md new file mode 100644 index 00000000000..f563ecb460f --- /dev/null +++ b/docs/framework/ui-automation/register-a-client-side-provider-assembly.md @@ -0,0 +1,37 @@ +--- +title: "Register a Client-Side Provider Assembly | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "registering client-side provider assemblies" + - "client-side provider assemblies, registering" + - "UI Automation, registering provider assemblies" + - "provider assemblies, registering" +ms.assetid: a03af4d9-2771-43cc-b07b-d468dca23190 +caps.latest.revision: 8 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 8 +--- +# Register a Client-Side Provider Assembly +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、クライアント側 UI オートメーション プロバイダーを格納する DLL を登録する方法を説明します。 + +## 使用例 + 次の例では、コンソール ウィンドウのプロバイダーを格納するアセンブリを登録する方法を示します。 + + [!code-csharp[UIAClientSideProvider_snip#102](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClientSideProvider_snip/CSharp/CSClientProgram.cs#102)] + [!code-vb[UIAClientSideProvider_snip#102](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClientSideProvider_snip/visualbasic/csclientprogram.vb#102)] + +## 参照 + [Create a Client\-Side UI Automation Provider](../../../docs/framework/ui-automation/create-a-client-side-ui-automation-provider.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/return-properties-from-a-ui-automation-provider.md b/docs/framework/ui-automation/return-properties-from-a-ui-automation-provider.md new file mode 100644 index 00000000000..5e174ef1b36 --- /dev/null +++ b/docs/framework/ui-automation/return-properties-from-a-ui-automation-provider.md @@ -0,0 +1,37 @@ +--- +title: "Return Properties from a UI Automation Provider | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "providers, UI Automation, returning properties" + - "properties, returned by UI Automation providers" + - "UI Automation, providers returning properties" +ms.assetid: 5eba950e-b9e1-48eb-ab8e-b69db76bf589 +caps.latest.revision: 14 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 14 +--- +# Return Properties from a UI Automation Provider +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックのサンプル コードでは、UI オートメーション プロバイダーが、要素のプロパティをクライアント アプリケーションへどのように返すかを示します。 + + 明示的にサポートしていないプロパティについては、プロバイダーは `null` \(Visual Basic では `Nothing`\) を返す必要があります。 これにより、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] はホスト ウィンドウ プロバイダーなど、別のソースからプロパティを取得しようとします。 + +## 使用例 + [!code-csharp[UIAFragmentProvider_snip#117](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAFragmentProvider_snip/CSharp/ListFragment.cs#117)] + [!code-vb[UIAFragmentProvider_snip#117](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAFragmentProvider_snip/VisualBasic/ListFragment.vb#117)] + +## 参照 + [UI Automation Providers Overview](../../../docs/framework/ui-automation/ui-automation-providers-overview.md) + [Server\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md b/docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md new file mode 100644 index 00000000000..f4cffb92546 --- /dev/null +++ b/docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md @@ -0,0 +1,188 @@ +--- +title: "Server-Side UI Automation Provider Implementation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "server-side UI Automation provider implementation" + - "UI Automation, server-side provider implementation" + - "provider implementation, UI Automation" +ms.assetid: 6acc6d08-bd67-4e2e-915c-9c1d34eb86fe +caps.latest.revision: 39 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 38 +--- +# Server-Side UI Automation Provider Implementation +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このセクションでは、カスタム コントロールのサーバー側 UI オートメーション プロバイダーを実装する方法について説明します。 + + [!INCLUDE[TLA#tla_wpf](../../../includes/tlasharptla-wpf-md.md)] 要素の実装と非 [!INCLUDE[TLA2#tla_wpf](../../../includes/tla2sharptla-wpf-md.md)] 要素 \([!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] 向けに設計されたものなど\) の実装は、根本的に異なります。[!INCLUDE[TLA2#tla_wpf](../../../includes/tla2sharptla-wpf-md.md)] 要素は、 から派生したクラスを使用して [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] をサポートします。 非 [!INCLUDE[TLA2#tla_wpf](../../../includes/tla2sharptla-wpf-md.md)] 要素は、プロバイダー インターフェイスの実装を通じてサポートを提供します。 + + +## セキュリティの考慮事項 + プロバイダーは、部分的に信頼された環境で動作できるように記述する必要があります。 UIAutomationClient.dll は部分的な信頼で動作するように構成されていないため、プロバイダーのコードではこのアセンブリを参照しないでください。 参照している場合、完全に信頼された環境ではコードを実行できますが、部分的に信頼された環境では失敗します。 + + 具体的には、 などの UIAutomationClient.dll のクラスのフィールドを使用しないでください。 代わりに、 などの UIAutomationTypes.dll のクラスの同等のフィールドを使用します。 + + +## Windows Presentation Foundation 要素によるプロバイダーの実装 + このトピックの詳細については、「[WPF カスタム コントロールの UI オートメーション](../../../docs/framework/wpf/controls/ui-automation-of-a-wpf-custom-control.md)」を参照してください。 + + +## 非 WPF 要素によるプロバイダーの実装 + [!INCLUDE[TLA2#tla_wpf](../../../includes/tla2sharptla-wpf-md.md)] フレームワークの一部ではないが、マネージ コードで記述されたカスタム コントロール \(多くの場合、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] コントロール\) は、インターフェイスを実装することで [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] をサポートします。 すべての要素は、次のセクションの最初のテーブルに示されているインターフェイスを 1 つ以上実装する必要があります。 さらに、要素が 1 つ以上のコントロール パターンをサポートする場合、コントロール パターンごとに適切なインターフェイスを実装する必要があります。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロバイダー プロジェクトは、次のアセンブリを参照する必要があります。 + +- UIAutomationProviders.dll + +- UIAutomationTypes.dll + +- WindowsBase.dll + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +### プロバイダーのインターフェイス + すべての [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロバイダーは、次のインターフェイスのいずれかを実装する必要があります。 + +|インターフェイス|説明| +|--------------|--------| +||コントロール パターンやプロパティのサポートを含む、ウィンドウでホストされる単純なコントロールの機能を提供します。| +|| から継承します。 フラグメント内のナビゲーション、フォーカスの設定、要素の四角形領域の復帰などを含む、複雑なコントロールの要素の機能を追加します。| +|| から継承します。 指定した座標での子要素の検索やコントロール全体のフォーカス状態の設定などを含む、複雑なコントロールのルート要素の機能を追加します。| + + 次のインターフェイスは追加機能を提供しますが、実装する必要はありません。 + +|インターフェイス|説明| +|--------------|--------| +||プロバイダーがイベントの要求を追跡できるようにします。| +||フラグメントの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー内のウィンドウ ベースの要素の位置を変更できるようにします。| + + 名前空間内の他のすべてのインターフェイスは、コントロール パターンをサポートします。 + + +### 非 WPF プロバイダーの要件 + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] と通信するために、コントロールは次の主な領域の機能を実装する必要があります。 + +|機能|実装| +|--------|--------| +|プロバイダーを [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に公開する|コントロール ウィンドウに送信された WM\_GETOBJECT メッセージの応答として、 \(または派生インターフェイス\) を実装するオブジェクトを返します。 フラグメントの場合、これはフラグメント ルートのプロバイダーである必要があります。| +|プロパティ値を指定する|値を指定または上書きする を実装します。| +|クライアントがコントロールと対話できるようにする| などのコントロール パターンをサポートするインターフェイスを実装します。 の実装でこれらのパターンのプロバイダーを返します。| +|イベントを発生させる| のメソッドの 1 つを呼び出して、クライアントがリッスンできるイベントを発生させます。| +|フラグメント内のナビゲーションとフォーカス設定を有効にする|フラグメント内の各要素に を実装します \(フラグメントの一部でない要素に対しては必要ありません\)。| +|フラグメント内のフォーカス設定と子要素の配置を有効にする| を実装します。 \(フラグメント ルートでない要素に対しては必要ありません\)。| + + +### 非 WPF プロバイダー内のプロパティ値 + カスタム コントロールの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロバイダーは、オートメーション システムおよびクライアント アプリケーションで使用できる特定のプロパティをサポートする必要があります。 ウィンドウでホストされている \(HWND\) 要素の場合、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は一部のプロパティを既定のウィンドウ プロバイダーから取得できますが、他のプロパティはカスタム プロバイダーから取得する必要があります。 + + HWND ベースのコントロールのプロバイダーは通常、次のプロパティを指定する必要はありません \(フィールド値で識別されます\)。 + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +> [!NOTE] +> 単純な要素またはウィンドウでホストされているフラグメント ルートの は、ウィンドウから取得されます。ただし、ルートの下にあるフラグメント要素 \(リスト ボックス内のリスト項目など\) は独自の識別子を提供する必要があります。 詳細については、「」を参照してください。 +> +> は、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] コントロールでホストされるプロバイダーに返される必要があります。 この場合、ウィンドウの既定のプロバイダーは適切な値を取得できないことがあります。 +> +> は通常、ホスト プロバイダーによって提供されます。 たとえば、カスタム コントロールが から派生している場合、名前はこのコントロールの `Text` プロパティから派生します。 + + コード例については、「[Return Properties from a UI Automation Provider](../../../docs/framework/ui-automation/return-properties-from-a-ui-automation-provider.md)」を参照してください。 + + +### 非 WPF プロバイダー内のイベント + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロバイダーは、イベントを発生させて、UI の状態の変更をクライアント アプリケーションに通知する必要があります。 イベントを発生させるには、次のメソッドを使用します。 + +|メソッド|説明| +|----------|--------| +||コントロール パターンによってトリガーされるイベントを含む、さまざまなイベントを発生させます。| +||[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティが変更された場合にイベントを発生させます。| +||要素の追加や削除などによって [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの構造が変更された場合にイベントを発生させます。| + + イベントの目的は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] システム自体によってトリガーされたアクティビティかどうかにかかわらず、何かが [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] 内で行われたことをクライアントに通知することです。 たとえば、 によって識別されるイベントは、ユーザーの直接入力の場合でもクライアント アプリケーションの 呼び出しの場合でも、コントロールが呼び出されるたびに発生させる必要があります。 + + パフォーマンスを最適化するため、プロバイダーは選択的にイベントを発生させたり、イベントを受け取るクライアント アプリケーションが登録されていないときにはイベントを発生させないようにすることができます。 最適化には、次のメソッドを使用します。 + +|メソッド|説明| +|----------|--------| +||この静的プロパティは、クライアント アプリケーションが [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントにサブスクライブしているかどうかを指定します。| +||プロバイダーがこのインターフェイスをフラグメント ルートに実装すると、クライアントがフラグメント上のイベント用のイベント ハンドラーを登録および登録解除したときに通知されるようにすることができます。| + + +### 非 WPF プロバイダーのナビゲーション + ウィンドウでホストされる \(HWND\) カスタム ボタンなどの単純なコントロールのプロバイダーは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー内のナビゲーションをサポートする必要はありません。 要素間のナビゲーションは、ホスト ウィンドウの既定のプロバイダーによって処理されます。これは、 の実装で指定されます。 ただし、複雑なカスタム コントロール用のプロバイダーを実装する場合は、フラグメントのルート ノードと子孫ノード、および兄弟ノード間のナビゲーションをサポートする必要があります。 + +> [!NOTE] +> ルート以外のフラグメントの要素は、 から `null` 参照を返す必要があります。これらが直接ウィンドウでホストされておらず、これらの間のナビゲーションをサポートできる既定のプロバイダーがないためです。 + + フラグメントの構造は、 の実装によって決まります。 このメソッドは、各フラグメントから可能なそれぞれの方向に対して、その方向の要素に対するプロバイダー オブジェクトを返します。 その方向に要素がない場合、メソッドは `null` 参照を返します。 + + フラグメント ルートは、子要素へのナビゲーションのみをサポートします。 たとえば、リスト ボックスは、方向が の場合はリスト内の最初の項目を、方向が の場合は最後の項目を返します。 フラグメント ルートは、親または兄弟へのナビゲーションをサポートしません。これはホスト ウィンドウ プロバイダーによって処理されます。 + + ルート以外のフラグメントの要素は、親へのナビゲーションと、\(存在する場合は\) 兄弟や子へのナビゲーションをサポートする必要があります。 + + +### 非 WPF プロバイダーの親の変更 + ポップアップ ウィンドウは、実際には最上位のウィンドウであり、既定ではデスクトップの子として [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーに表示されます。 ただし、多くの場合、ポップアップ ウィンドウは論理的には他のコントロールの子になります。 たとえば、コンボ ボックスのドロップダウン リストは、論理的にはコンボ ボックスの子です。 同様に、メニューのポップアップ ウィンドウは、論理的にはメニューの子になります。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] はポップアップ ウィンドウの親の変更をサポートしているため、ポップアップ ウィンドウを関連するコントロールの子として表示できます。 + + ポップアップ ウィンドウの親を変更するには: + +1. ポップアップ ウィンドウ用のプロバイダーを作成します。 これには、ポップアップ ウィンドウのクラスを事前に知っておく必要があります。 + +2. そのポップアップ自体がコントロールであるかのように、ポップアップのすべてのプロパティとパターンを通常どおりに実装します。 + +3. プロパティを実装し、 から取得した値を返せるようにします。パラメーターは、ポップアップ ウィンドウのウィンドウ ハンドルです。 + +4. ポップアップ ウィンドウとその親の を実装し、論理上の親から論理上の子へのナビゲーションおよび子の兄弟間のナビゲーションが適切に処理されるようにします。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は、ポップアップ ウィンドウを検出すると、既定のナビゲーションがオーバーライドされていると認識し、デスクトップの子として検出されたポップアップ ウィンドウをスキップします。 代わりに、ノードはフラグメントによってのみ、到達可能になります。 + + コントロールが任意のクラスのウィンドウをホストできる場合には、親の変更は適切ではありません。 たとえば、Rebar はそのバンド内で任意の型の HWND をホストできます。 このような場合を処理するため、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は次のセクションで説明する、別の形の HWND 再配置をサポートしています。 + + +### 非 WPF プロバイダーの再配置 + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] フラグメントは、それぞれウィンドウ \(HWND\) に含まれる 2 つ以上の要素を含んでいる場合があります。 各 HWND には独自の既定のプロバイダーがあり、その HWND を含む HWND をその親と見なしているため、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーは既定で、HWND を親ウィンドウの子としてフラグメント内に表示します。 ほとんどの場合、これは適切な動作ですが、場合によっては [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] の論理構造が一致しないために混乱を招く可能性があります。 + + 良い例が Rebar コントロールです。 Rebar はバンドを格納し、各バンドはツール バー、編集ボックス、コンボ ボックスなど HWND ベースのコントロールを格納します。 Rebar HWND の既定のウィンドウ プロバイダーは、バンド コントロール HWND を子と見なし、Rebar プロバイダーはバンドを子と見なします。 HWND プロバイダーと Rebar プロバイダーは連動し、互いの子を結合するため、バンドと HWND ベースのコントロールはどちらも Rebar の子として表示されます。 ただし、論理的には、バンドのみが Rebar の子として表示され、各バンド プロバイダーは、格納されるコントロールの既定の HWND プロバイダーと結合される必要があります。 + + これを実現するため、Rebar のフラグメント ルート プロバイダーは、バンドを表す子のセットを公開します。 各バンドには、プロパティとパターンを公開するプロバイダーが 1 つあります。 その の実装で、バンド プロバイダーはコントロール HWND の既定のウィンドウ プロバイダーを返します。これを取得するには、コントロールのウィンドウ ハンドルを渡して を呼び出します。 最後に、Rebar のフラグメント ルート プロバイダーは インターフェイスを実装し、その の実装で、指定した HWND に含まれるコントロールの適切なバンド プロバイダーを返します。 + +## 参照 + [UI Automation Providers Overview](../../../docs/framework/ui-automation/ui-automation-providers-overview.md) + [Expose a Server\-side UI Automation Provider](../../../docs/framework/ui-automation/expose-a-server-side-ui-automation-provider.md) + [Return Properties from a UI Automation Provider](../../../docs/framework/ui-automation/return-properties-from-a-ui-automation-provider.md) + [Raise Events from a UI Automation Provider](../../../docs/framework/ui-automation/raise-events-from-a-ui-automation-provider.md) + [Enable Navigation in a UI Automation Fragment Provider](../../../docs/framework/ui-automation/enable-navigation-in-a-ui-automation-fragment-provider.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [Simple Provider Sample](http://msdn.microsoft.com/ja-jp/c10a6255-e8dc-494b-a051-15111b47984a) + [Fragment Provider Sample](http://msdn.microsoft.com/ja-jp/778ef1bc-8610-4bc9-886e-aeff94a8a13e) \ No newline at end of file diff --git a/docs/framework/ui-automation/subscribe-to-ui-automation-events.md b/docs/framework/ui-automation/subscribe-to-ui-automation-events.md new file mode 100644 index 00000000000..a83a9a8127b --- /dev/null +++ b/docs/framework/ui-automation/subscribe-to-ui-automation-events.md @@ -0,0 +1,46 @@ +--- +title: "UI オートメーション イベントのサブスクライブ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI オートメーション、イベントにサブスクライブします。" + - "サブスクライブ (UI オートメーション イベントを)" + - "イベントをサブスクライブするには" + - "リッスン (イベントを)" +ms.assetid: b688effa-b3e8-4b05-944d-05ed89a245aa +caps.latest.revision: 16 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 16 +--- +# UI オートメーション イベントのサブスクライブ +> [!NOTE] +> このドキュメントが目的とする、管理を使用する .NET Framework 開発者[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]で定義されたクラス、 名前空間。 最新情報について[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を参照してください[Windows Automation API: UI 自動化](http://go.microsoft.com/fwlink/?LinkID=156746)します。 + + このトピックでは、UI オートメーション プロバイダーによって生成されるイベントをサブスクライブする方法について説明します。 + +## 例 + 次のコード例では、ボタンなどのコントロールが呼び出された場合に生成されるイベントに対してイベント ハンドラーを登録し、アプリケーション フォームが閉じられた時にそのイベント ハンドラーを削除します。 イベントがで識別される、 をパラメーターとして渡されたします。 + + [!code-csharp[UIAClient_snip#101](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#101)] + [!code-vb[UIAClient_snip#101](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#101)] + +## 例 + 次の例は、使用する方法を示しています。[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]フォーカスが変更されたときに発生するイベントを定期受信します。 イベント ハンドラーの登録は、アプリケーションのシャットダウン時に呼び出されるメソッドで解除されるか、UI イベントの通知が必要なくなった時に解除されます。 + + [!code-csharp[UIAClient_snip#102](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#102)] + [!code-vb[UIAClient_snip#102](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#102)] + +## 関連項目 + + + + [UI オートメーション イベントの概要](../../../docs/framework/ui-automation/ui-automation-events-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md b/docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md new file mode 100644 index 00000000000..90f5f32edf5 --- /dev/null +++ b/docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md @@ -0,0 +1,48 @@ +--- +title: "Support Control Patterns in a UI Automation Provider | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control patterns, supporting in UI Automation provider" + - "UI Automation, supporting control patterns in provider" +ms.assetid: 0d635c35-ffa8-4dc8-bbc9-12fcd5445776 +caps.latest.revision: 13 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 13 +--- +# Support Control Patterns in a UI Automation Provider +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、クライアント アプリケーションがコントロールを操作して、それらからデータを取得できるように、UI オートメーション プロバイダーに 1 つ以上のコントロール パターンを実装する方法を説明します。 + +### コントロール パターンのサポート + +1. など、要素がサポートする必要のあるコントロール パターンの適切なインターフェイスを実装します。 + +2. の実装で各コントロール インターフェイスの実装を格納するオブジェクトを返します。 + +## 使用例 + 単一選択のカスタム リスト ボックスの の実装例を次に示します。 3 つのプロパティを返し、現在選択されている項目を取得します。 + + [!code-csharp[UIAFragmentProvider_snip#119](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAFragmentProvider_snip/CSharp/ListPattern.cs#119)] + [!code-vb[UIAFragmentProvider_snip#119](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAFragmentProvider_snip/VisualBasic/ListPattern.vb#119)] + +## 使用例 + を実装するクラスを返す の実装例を次に示します。 ほとんどのリスト ボックス コントロールは、同様にその他のパターンをサポートしますが、次の例では、他のすべてのパターン識別子に対して null 参照 \([!INCLUDE[TLA#tla_visualbnet](../../../includes/tlasharptla-visualbnet-md.md)] の `Nothing`\) が返されます。 + + [!code-csharp[UIAFragmentProvider_snip#120](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAFragmentProvider_snip/CSharp/ListFragment.cs#120)] + [!code-vb[UIAFragmentProvider_snip#120](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAFragmentProvider_snip/VisualBasic/ListFragment.vb#120)] + +## 参照 + [UI Automation Providers Overview](../../../docs/framework/ui-automation/ui-automation-providers-overview.md) + [Server\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/textpattern-and-embedded-objects-overview.md b/docs/framework/ui-automation/textpattern-and-embedded-objects-overview.md new file mode 100644 index 00000000000..c0531df2b37 --- /dev/null +++ b/docs/framework/ui-automation/textpattern-and-embedded-objects-overview.md @@ -0,0 +1,166 @@ +--- +title: "TextPattern and Embedded Objects Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, TextPattern class" + - "embedded objects, accessing" + - "accessing embedded objects" + - "embedded objects, UI Automation" +ms.assetid: 93fdfbb9-0025-4b72-8ca0-0714adbb70d5 +caps.latest.revision: 17 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 17 +--- +# TextPattern and Embedded Objects Overview +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + この概要では、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]がテキスト ドキュメントまたはコンテナー内で埋め込みオブジェクトや子要素を公開する方法について説明します。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]では、埋め込みオブジェクトは、テキスト以外の境界を持つ任意の要素です。たとえば、イメージ、ハイパーリンク、テーブル、ドキュメントの種類 \([!INCLUDE[TLA#tla_xl](../../../includes/tlasharptla-xl-md.md)] スプレッドシートや [!INCLUDE[TLA#tla_winmedia](../../../includes/tlasharptla-winmedia-md.md)] ファイルなど\) があります。 これは、あるアプリケーションで要素が作成され、別のアプリケーション内に埋め込まれる \(リンクされる\) 標準的な定義とは異なります。 オブジェクトを元のアプリケーション内で編集できるかどうかは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の状況とは無関係です。 + + +## 埋め込みオブジェクトと UI オートメーション ツリー + 埋め込みオブジェクトは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビュー内では個々の要素として扱われます。 これらはテキスト コンテナーの子として公開され、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の他のコントロールと同じモデルを介してアクセスできます。 + + ![テキスト コンテナー内にイメージを含む埋め込みテーブル](../../../docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-example1.png "UIA\_TextPattern\_Embedded\_Objects\_Overview\_Example1") +テーブル、イメージ、ハイパーリンクの埋め込みオブジェクトを含むテキスト コンテナーの例 + + ![前の例の内容ビュー](../../../docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-example2.png "UIA\_TextPattern\_Embedded\_Objects\_Overview\_Example2") +前のテキスト コンテナーの一部のコンテンツ ビューの例 + + +## TextPattern と TextPatternRange を使用した埋め込みオブジェクトの公開 + コントロール パターン クラスと クラスを組み合わせて使用すると、埋め込みオブジェクトのナビゲーションと照会を容易にするメソッドとプロパティが公開されます。 + + テキスト コンテナーのテキスト コンテンツ \(内部テキスト\) と埋め込みオブジェクト \(ハイパーリンクやテーブルのセルなど\) は、連続する単一のテキスト ストリームとして、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューの両方で公開されます。そのため、オブジェクトの境界は無視されます。 UI オートメーション クライアントがなんらかの方法で列挙、解釈、分析を目的としてテキストを取得している場合、テキスト コンテンツを含むテーブルやその他の埋め込みオブジェクトなど、特殊なケースについて、テキスト範囲を確認する必要があります。 これを行うには、 を呼び出して各埋め込みオブジェクトの を取得した後、 を呼び出して各要素のテキスト範囲を取得します。 この操作は、すべてのテキスト コンテンツが取得されるまで再帰的に行われます。 + + ![埋め込みオブジェクトにまたがるテキスト範囲。](../../../docs/framework/ui-automation/media/uia-textpattern-embeddedobjecttextranges.png "UIA\_TextPattern\_EmbeddedObjectTextRanges") +埋め込みオブジェクトとその範囲を含むテキスト ストリームの例 + + テキスト範囲の内容を走査する必要がある場合、 メソッドを正常に実行するために、一連の手順がその背後で関係しています。 + +1. テキスト範囲は正規化されます。つまり、テキスト範囲は エンドポイントで低次元テキスト範囲に縮小されるため、 エンドポイントは不要になります。 この手順は、テキスト範囲が複数の 境界にまたがる状況であいまいさをなくすために必要です。たとえば、"{" と "}" がテキスト範囲エンドポイントである "{The U}RL [http:\/\/www.microsoft.com](http://www.microsoft.com) is embedded in text" のような場合です。 + +2. 結果として得られる範囲は、 内で、要求された 境界の先頭に向かって後方に移動されます。 + +3. この範囲は、 内で、 境界の要求された数だけ、前方または後方に移動されます。 + +4. その後、この範囲は、要求された 1 つの 境界の分、 エンドポイントを移動することによって、低次元テキスト範囲の状態から展開されます。 + + ![Move & ExpandToEnclosingUnit による範囲調整](../../../docs/framework/ui-automation/media/uia-textpattern-moveandexpand-examples.png "UIA\_TextPattern\_MoveAndExpand\_Examples") +テキスト範囲を Move\(\) と ExpandToEnclosingUnit\(\) に対して調整する方法の例 + + +## 一般的なシナリオ + 以下のセクションでは、埋め込みオブジェクトが関連する最も一般的なシナリオの例を紹介します。 + + この例で使用される凡例は次のとおりです。 + + { \= + + } \= + + +### ハイパーリンク + **例 1: 埋め込みテキスト ハイパーリンクを含むテキスト範囲** + + {The URL [http:\/\/www.microsoft.com](http://www.microsoft.com) is embedded in text}. + +|呼び出されるメソッド|結果| +|----------------|--------| +||文字列 "The URL http:\/\/www.microsoft.com is embedded in text" を返します。| +||テキスト範囲を囲む最も内側の を返します。この場合は、テキスト プロバイダー自体を表す を返します。| +||ハイパーリンク コントロールを表す を返します。| +| \( は、前の `GetChildren` メソッドから返されるオブジェクト\)|"http:\/\/www.microsoft.com" を表す範囲を返します。| + + **例 2: 埋め込みテキスト ハイパーリンクに部分的にかかるテキスト範囲** + + The URL http:\/\/{[www](www)} is embedded in text. + +|呼び出されるメソッド|結果| +|----------------|--------| +||文字列 "www" を返します。| +||テキスト範囲を囲む最も内側の を返します。この場合は、ハイパーリンク コントロールです。| +||テキスト範囲が URL 文字列全体をカバーしていないため、`null` を返します。| + + **例 3: テキスト コンテナーのコンテンツに部分的にかかるテキスト範囲 テキスト コンテナーには、テキスト範囲に含まれない埋め込みテキスト ハイパーリンクが含まれます。** + + {The URL} [http:\/\/www.microsoft.com](http://www.microsoft.com) is embedded in text. + +|呼び出されるメソッド|結果| +|----------------|--------| +||文字列 "The URL" を返します。| +||テキスト範囲を囲む最も内側の を返します。この場合は、テキスト プロバイダー自体を表す を返します。| +| \(パラメーターは \(TextUnit.Word, 1\)\)|ハイパーリンクのテキストは個々の単語で構成されているため、テキスト範囲は "http" に移動します。 この場合、ハイパーリンクは 1 つのオブジェクトとして扱われません。

The URL {[http](../../../ocs/framework/network-programming/http.md)} is embedded in text.| + + +### イメージ + **例 1: 埋め込みイメージを含むテキスト範囲** + + {The image ![埋め込みイメージの例](../../../docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-imageexample.png "UIA\_TextPattern\_Embedded\_Objects\_Overview\_ImageExample") is embedded in text}. + +|呼び出されるメソッド|結果| +|----------------|--------| +||文字列 "The is embedded in text" を返します。 イメージに関連付けられた代替テキストがテキスト ストリームに含まれることはありません。| +||テキスト範囲を囲む最も内側の を返します。この場合は、テキスト プロバイダー自体を表す を返します。| +||イメージ コントロールを表す を返します。| +| \( は、前の メソッドから返されるオブジェクト\)|"![埋め込みイメージの例](../../../docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-imageexample.png "UIA\_TextPattern\_Embedded\_Objects\_Overview\_ImageExample")" を表す低次元テキスト範囲を返します。| + + **例 2: テキスト コンテナーのコンテンツに部分的にかかるテキスト範囲 テキスト コンテナーには、テキスト範囲に含まれない埋め込みイメージが含まれます。** + + {The image} ![埋め込みイメージの例](../../../docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-imageexample.png "UIA\_TextPattern\_Embedded\_Objects\_Overview\_ImageExample") is embedded in text. + +|呼び出されるメソッド|結果| +|----------------|--------| +||文字列 "The image" を返します。| +||テキスト範囲を囲む最も内側の を返します。この場合は、テキスト プロバイダー自体を表す を返します。| +| \(パラメーターは \(TextUnit.Word, 1\)\)|テキスト範囲は "is " に移動します。 テキスト ベースの埋め込みオブジェクトのみがテキスト ストリームの一部と見なされるため、この例のイメージは Move やその戻り値 \(この場合は 1\) に影響を与えません。| + + +### テーブル + +### 例で使用するテーブル + +|イメージを含むセル|テキストを含むセル| +|---------------|---------------| +|![埋め込みイメージの例](../../../docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-imageexample.png "UIA\_TextPattern\_Embedded\_Objects\_Overview\_ImageExample")|X| +|![埋め込みイメージの例 2](../../../docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-imageexample2.png "UIA\_TextPattern\_Embedded\_Objects\_Overview\_ImageExample2")|Y| +|![埋め込みイメージの例 3](../../../docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-imageexample3.png "UIA\_TextPattern\_Embedded\_Objects\_Overview\_ImageExample3")

Z のイメージ|Z| + + **例 1: セルのコンテンツからテキスト コンテナーを取得する** + +|呼び出されるメソッド|結果| +|----------------|--------| +| \(パラメーターは \(0, 0\)\)|セルのコンテンツを表す を返します。この場合、要素はテキスト コントロールです。| +| \( は、前の `GetItem` メソッドから返されるオブジェクト\)|イメージ ![埋め込みイメージの例](../../../docs/framework/ui-automation/media/uia-textpattern-embedded-objects-overview-imageexample.png "UIA\_TextPattern\_Embedded\_Objects\_Overview\_ImageExample") をカバーする範囲を返します。| +|前の `RangeFromChild` メソッドから返されるオブジェクトの |セルを表す を返します。この場合、要素は TableItemPattern をサポートするテキスト コントロールです。| +|前の `GetEnclosingElement` メソッドから返されるオブジェクトの |テーブルを表す を返します。| +|前の `GetEnclosingElement` メソッドから返されるオブジェクトの |テキスト プロバイダー自体を表す を返します。| + + **例 2: セルのテキスト コンテンツを取得する** + +|呼び出されるメソッド|結果| +|----------------|--------| +| \(パラメーターは \(1, 1\)\)|セルのコンテンツを表す を返します。この場合、要素はテキスト コントロールです。| +| \( は、前の `GetItem` メソッドから返されるオブジェクト\)|"Y" を返します。| + +## 参照 + + + + + [Access Embedded Objects Using UI Automation](../../../docs/framework/ui-automation/access-embedded-objects-using-ui-automation.md) + [Expose the Content of a Table Using UI Automation](../../../docs/framework/ui-automation/expose-the-content-of-a-table-using-ui-automation.md) + [Traverse Text Using UI Automation](../../../docs/framework/ui-automation/traverse-text-using-ui-automation.md) + [TextPattern Search and Selection Sample](http://msdn.microsoft.com/ja-jp/0a3bca57-8b72-489d-a57c-da85b7a22c7f) \ No newline at end of file diff --git a/docs/framework/ui-automation/traverse-text-using-ui-automation.md b/docs/framework/ui-automation/traverse-text-using-ui-automation.md new file mode 100644 index 00000000000..0aea5b49f40 --- /dev/null +++ b/docs/framework/ui-automation/traverse-text-using-ui-automation.md @@ -0,0 +1,49 @@ +--- +title: "Traverse Text Using UI Automation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, traversing text" + - "text, traversing" + - "traversing text" +ms.assetid: 3ddb3b7b-1d6b-4dba-8678-5a68e868aadb +caps.latest.revision: 11 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 11 +--- +# Traverse Text Using UI Automation +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]を使用して、 ずつインクリメントしながらドキュメントのテキスト コンテンツを走査する方法を示します。 + +## 使用例 + 次のコード例では、UI オートメーション テキスト プロバイダーのコンテンツを走査する方法を示しています。 メソッドは、 エンドポイントと エンドポイントを移動させます。 このテキスト範囲は、通常、テキスト挿入ポイントを表す低次元テキスト範囲です。 + +> [!NOTE] +> テキスト ベースの埋め込みオブジェクトのみがテキスト ストリームの一部と見なされるため、イメージなどの埋め込みオブジェクトは、`Move` またはその戻り値に影響を与えません。 + + [!code-csharp[FindText#StartApp](../../../samples/snippets/csharp/VS_Snippets_Wpf/FindText/CSharp/SearchWindow.cs#startapp)] + [!code-vb[FindText#StartApp](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FindText/VisualBasic/SearchWindow.vb#startapp)] +[!code-csharp[FindText#FindTextProvider](../../../samples/snippets/csharp/VS_Snippets_Wpf/FindText/CSharp/SearchWindow.cs#findtextprovider)] +[!code-vb[FindText#FindTextProvider](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FindText/VisualBasic/SearchWindow.vb#findtextprovider)] +[!code-csharp[FindText#Navigate](../../../samples/snippets/csharp/VS_Snippets_Wpf/FindText/CSharp/SearchWindow.cs#navigate)] +[!code-vb[FindText#Navigate](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FindText/VisualBasic/SearchWindow.vb#navigate)] + + 指定した をコントロールがサポートしない場合、 を使用するすべてのメソッドは、サポートされる次に大きい を使用します。 + +## 参照 + [UI Automation TextPattern Overview](../../../docs/framework/ui-automation/ui-automation-textpattern-overview.md) + [Add Content to a Text Box Using UI Automation](../../../docs/framework/ui-automation/add-content-to-a-text-box-using-ui-automation.md) + [Find and Highlight Text Using UI Automation](../../../docs/framework/ui-automation/find-and-highlight-text-using-ui-automation.md) + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-and-microsoft-active-accessibility.md b/docs/framework/ui-automation/ui-automation-and-microsoft-active-accessibility.md new file mode 100644 index 00000000000..7e07ef5b7ea --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-and-microsoft-active-accessibility.md @@ -0,0 +1,260 @@ +--- +title: "UI Automation and Microsoft Active Accessibility | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Active Accessibility" + - "UI Automation, Active Accessibility compared to" + - "UI Automation, Microsoft Active Accessibility" + - "Active Accessibility, UI Automation compared to" +ms.assetid: 87bee662-0a3e-4232-a421-20e7a5968321 +caps.latest.revision: 24 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 23 +--- +# UI Automation and Microsoft Active Accessibility +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + アプリケーションをアクセス可能にするための以前のソリューションは [!INCLUDE[TLA#tla_aa](../../../includes/tlasharptla-aa-md.md)] です。[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] は [!INCLUDE[TLA#tla_win](../../../includes/tlasharptla-win-md.md)] の新しいユーザー補助モデルであり、その目的は支援技術製品と自動テスト ツールのニーズを解決することです。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は多くの点で [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] よりも強化されています。 + + このトピックでは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の主な機能を紹介し、[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] との違いについて説明します。 + + +## プログラミング言語 + [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] は [!INCLUDE[TLA#tla_com](../../../includes/tlasharptla-com-md.md)] をベースにしてデュアル インターフェイスをサポートしているため、C\/C\+\+、[!INCLUDE[TLA#tla_vb6](../../../includes/tlasharptla-vb6-md.md)]、およびスクリプト言語でプログラムすることができます。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] \(標準コントロールのクライアント側プロバイダー ライブラリを含む\) はマネージ コードで記述されており、[!INCLUDE[TLA#tla_vcshrp](../../../includes/tlasharptla-vcshrp-md.md)] または [!INCLUDE[TLA#tla_visualbnet](../../../includes/tlasharptla-visualbnet-md.md)] を使用して UI オートメーション クライアント アプリケーションを実に簡単にプログラムすることができます。 インターフェイスを実装する UI オートメーション プロバイダーは、マネージ コードまたは C\/C\+\+ で記述できます。 + + +## Windows Presentation Foundation におけるサポート + [!INCLUDE[TLA#tla_wpf](../../../includes/tlasharptla-wpf-md.md)] はユーザー インターフェイスを作成するための新しいモデルです。[!INCLUDE[TLA2#tla_wpf](../../../includes/tla2sharptla-wpf-md.md)] の要素には [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] のネイティブ サポート機能はありませんが、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] をサポートしており、これに [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] クライアントのためのブリッジ サポートが含まれています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 専用に作成されたクライアントだけが [!INCLUDE[TLA2#tla_wpf](../../../includes/tla2sharptla-wpf-md.md)] のユーザー補助機能 \(テキストに関する豊富なサポートなど\) を最大限に利用できます。 + + +## サーバーとクライアント + [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] では、サーバーとクライアントは、主にサーバーによる `IAccessible` の実装を介して直接通信します。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では、サーバー \(プロバイダー\) とクライアントの間にコア サービスが存在します。 このコア サービスは、プロバイダーによって実装されたインターフェイスを呼び出して、追加のサービス \(要素の一意のランタイム識別子の生成など\) を提供します。 クライアント アプリケーションはライブラリ関数を使用して [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サービスを呼び出します。 + + UI オートメーション プロバイダーは [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] クライアントに情報を提供でき、[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] サーバーは UI オートメーション クライアント アプリケーションに情報を提供できます。 ただし、[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] は [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ほど多くの情報を公開しないため、この 2 つのモデルには完全な互換性がありません。 + + +## UI 要素 + [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] では [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素を `IAccessible` インターフェイスまたは子識別子として表現します。 2 つの `IAccessible` ポインターを比較してそれらが同じ要素を参照しているかどうかを判断するのは困難です。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では、すべての要素が オブジェクトとして表現されます。 比較は等値演算子または メソッドを使用して行われますが、どちらの方法でも、要素の一意のランタイム識別子が比較されます。 + + +## ツリー ビューとナビゲーション + 画面上の [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] 要素は、ツリー構造で表すことができます。デスクトップがルートで、その直接の子としてアプリケーション ウィンドウがあり、アプリケーション内の要素がその子孫となります。 + + [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] では、エンドユーザーには無関係なオートメーション要素も多数、ツリー内に公開されます。 クライアント アプリケーションは、すべての要素の中から意味のあるものを特定する必要があります。 + + UI オートメーション クライアント アプリケーションは、フィルタリングしたビューを使用して [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] を確認します。 このビューには、必要な要素 \(ユーザーに情報を提供したり、対話を可能にしたりする要素\) のみが表示されます。 コントロール要素だけが含まれるビューや、コンテンツ要素だけが含まれるビューがあらかじめ定義されています。さらに、アプリケーションでカスタム ビューを定義することもできます。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は、ユーザーに対して [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] を簡単に表せるようにして、ユーザーとアプリケーションの対話を支援します。 + + [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] における要素間ナビゲーションは、空間的 \(画面上で左にある要素に移動するなど\)、論理的 \(次のメニュー項目に移動する、ダイアログ ボックスのタブ オーダー内で次の項目に移動するなど\)、階層的 \(コンテナー内の最初の子に移動する、子からその親に移動するなど\) のいずれかです。 子要素が `IAccessible` を実装しているオブジェクトであるとは限らないため、階層的ナビゲーションは複雑です。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では、すべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素は、同じ基本機能をサポートする オブジェクトです \(プロバイダーの観点では、 から継承されたインターフェイスを実装するオブジェクトです\)。 ナビゲーションは主に階層的 \(親から子、兄弟から次の兄弟\) です \(兄弟間のナビゲーションは、タブ オーダーに従う場合があるため、論理的要素も持っています\)。 フィルタリングされたツリー ビューで クラスを使用して、任意の場所からナビゲーションを開始できます。 を使用して、特定の子または子孫に移動することもできます。たとえば、指定したコントロール パターンがサポートされるダイアログ ボックス内のすべての要素を非常に簡単に取得できます。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] におけるナビゲーションは [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] におけるナビゲーションより一貫性があります。 ドロップダウン リストやポップアップ ウィンドウなど、[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] ツリーに 2 回表示される要素がありますが、このような要素からナビゲーションすると、予期しない結果が生じる可能性があります。 実際には、rebar コントロールに対して [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] を正しく実装することは不可能です。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では親の再指定や位置の変更が可能なため、ウィンドウの所有関係による階層にかかわらず、要素をツリー内の任意の場所に配置できます。 + + +## 役割とコントロール型 + [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] は、`accRole` プロパティ \(`IAccessible::get_actRole`\) を使用して、ROLE\_SYSTEM\_SLIDER や ROLE\_SYSTEM\_MENUITEM などの [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 内の要素のywの記述を取得します。 要素の役割は、要素の機能を表す主要な鍵になります。 コントロールとの対話は、`IAccessible::accSelect` や `IAccessible::accDoDefaultAction` などの固定のメソッドを使用して実現されます。 クライアント アプリケーションと [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] の間の対話は、`IAccessible` を通して実行できる範囲に限定されます。 + + これに対して、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では、要素のコントロール型 \( プロパティで記述\) と、その要素に期待される機能とが大きく分離されています。 機能は、特殊なインターフェイスの実装を通じてプロバイダーによってサポートされる、コントロール パターンによって決定されます。 複数のコントロール パターンを組み合わせると、特定の [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素がサポートする機能をすべて記述することができます。 プロバイダーによっては、ある 1 つの特定のコントロール パターンをサポートしなければならないものがあります。たとえば、チェック ボックスのプロバイダーは Toggle コントロール パターンをサポートする必要があります。 また、コントロール パターンのセットを 1 つ以上サポートしなければならないものもあります。たとえば、ボタンは、Toggle と Invoke のいずれかをサポートする必要があります。 さらに、コントロール パターンをまったくサポートしないものもあります。たとえば、移動もサイズ変更もドッキングもできないペインには、コントロール パターンはありません。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は、 プロパティによって識別され、 プロパティによって記述可能なカスタム コントロールをサポートします。 + + 次の表に、[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] の役割と [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のコントロール型のマッピングを示します。 + +|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] の役割|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のコントロール型| +|---------------------------------------------------------------------|------------------------------------------------------------------------------------| +|ROLE\_SYSTEM\_PUSHBUTTON|ボタン| +|ROLE\_SYSTEM\_CLIENT|予定表| +|ROLE\_SYSTEM\_CHECKBUTTON|チェック ボックス| +|ROLE\_SYSTEM\_COMBOBOX|コンボ ボックス| +|ROLE\_SYSTEM\_CLIENT|カスタム| +|ROLE\_SYSTEM\_LIST|データ グリッド| +|ROLE\_SYSTEM\_LISTITEM|データ項目| +|ROLE\_SYSTEM\_DOCUMENT|ドキュメント| +|ROLE\_SYSTEM\_TEXT|編集| +|ROLE\_SYSTEM\_GROUPING|グループ化| +|ROLE\_SYSTEM\_LIST|ヘッダー| +|ROLE\_SYSTEM\_COLUMNHEADER|ヘッダー項目| +|ROLE\_SYSTEM\_LINK|ハイパーリンク| +|ROLE\_SYSTEM\_GRAPHIC|イメージ| +|ROLE\_SYSTEM\_LIST|リスト| +|ROLE\_SYSTEM\_LISTITEM|リスト項目| +|ROLE\_SYSTEM\_MENUPOPUP|メニュー| +|ROLE\_SYSTEM\_MENUBAR|メニュー バー| +|ROLE\_SYSTEM\_MENUITEM|メニュー項目| +|ROLE\_SYSTEM\_PANE|ペイン| +|ROLE\_SYSTEM\_PROGRESSBAR|進行状況バー| +|ROLE\_SYSTEM\_RADIOBUTTON|オプション ボタン| +|ROLE\_SYSTEM\_SCROLLBAR|スクロール バー| +|ROLE\_SYSTEM\_SEPARATOR|区切り記号| +|ROLE\_SYSTEM\_SLIDER|スライダー| +|ROLE\_SYSTEM\_SPINBUTTON|Spinner| +|ROLE\_SYSTEM\_SPLITBUTTON|分割ボタン| +|ROLE\_SYSTEM\_STATUSBAR|ステータス バー| +|ROLE\_SYSTEM\_PAGETABLIST|タブ| +|ROLE\_SYSTEM\_PAGETAB|タブ項目| +|ROLE\_SYSTEM\_TABLE|テーブル| +|ROLE\_SYSTEM\_STATICTEXT|テキスト| +|ROLE\_SYSTEM\_INDICATOR|つまみ| +|ROLE\_SYSTEM\_TITLEBAR|タイトル バー| +|ROLE\_SYSTEM\_TOOLBAR|ツール バー| +|ROLE\_SYSTEM\_TOOLTIP|ヒント| +|ROLE\_SYSTEM\_OUTLINE|ツリー| +|ROLE\_SYSTEM\_OUTLINEITEM|ツリー項目| +|ROLE\_SYSTEM\_WINDOW|\[Window\]| + + さまざまなコントロール型の詳細については、「[UI Automation Control Types](../../../docs/framework/ui-automation/ui-automation-control-types.md)」を参照してください。 + + +## 状態とプロパティ + [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] では、要素は一般的なプロパティのセットをサポートします。一部のプロパティ \(`accState` など\) は、要素の役割に応じてまったく異なる内容を記述する必要があります。 サーバーは、プロパティを返す `IAccessible` のメソッドをすべて \(要素に無関係なものも含む\) 実装する必要があります。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では、さらに多くのプロパティが定義されており、その一部は [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] での状態に対応します。 すべての要素に共通するものもあれば、コントロール型とコントロール パターンに固有のものもあります。 プロパティは一意の識別子によって識別され、ほとんどのプロパティは単一のメソッド \( または \) を使用して取得できます。 多くのプロパティは、 プロパティ アクセサーおよび プロパティ アクセサーからも容易に取得できます。 + + UI オートメーション プロバイダーは、無関係なプロパティを実装する必要はなく、サポートしていないプロパティに対しては単に `null` 値を返すことができます。 また、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のコア サービスは、一部のプロパティを既定のウィンドウ プロバイダーから取得できます。これらのプロパティは、プロバイダーによって明示的に実装されたプロパティと 1 つにまとめられます。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では、多くのプロパティをサポートすることに加えて、単一のプロセス間呼び出しで複数のプロパティを取得できるので、パフォーマンスが向上します。 + + 次の表に、2 つのモデルのプロパティ間の対応を示します。 + +|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] のプロパティ アクセサー|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ ID|解説| +|------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|--------| +|`get_accKeyboardShortcut`| または |両方とも存在する場合は `AccessKeyProperty` が優先されます。| +|`get_accName`||``| +|`get_accRole`||役割とコントロール型のマッピングについては、前の表を参照してください。| +|`get_accValue`|

|ValuePattern または RangeValuePattern をサポートするコントロール型でのみ有効です。 MSAA 動作との一貫性を保つために、RangeValue 値は 0 ~ 100 に正規化されます。 Value 項目は文字列を使用します。| +|`get_accHelp`||| +|`accLocation`||| +|`get_accDescription`|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ではサポートされていません。|`accDescription` に関する明確な仕様が MSAA 内に存在しなかったので、このプロパティに格納される情報はプロバイダーによって異なります。| +|`get_accHelpTopic`|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ではサポートされていません。|| + + 次の表に、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティと [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] の状態定数との対応を示します。 + +|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] の状態|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|状態の変更をトリガーする| +|---------------------------------------------------------------------|---------------------------------------------------------------------------------|------------------| +|STATE\_SYSTEM\_CHECKED|チェック ボックスの場合、

オプション ボタンの場合、|Y| +|STATE\_SYSTEM\_COLLAPSED| \= |Y| +|STATE\_SYSTEM\_EXPANDED| \= または |Y| +|STATE\_SYSTEM\_FOCUSABLE||N| +|STATE\_SYSTEM\_FOCUSED||N| +|STATE\_SYSTEM\_HASPOPUP| \(メニュー項目の場合\)|N| +|STATE\_SYSTEM\_INVISIBLE| \= True かつ の場合に が発生|N| +|STATE\_SYSTEM\_LINKED| \=

|N| +|STATE\_SYSTEM\_MIXED| \= |N| +|STATE\_SYSTEM\_MOVEABLE||N| +|STATE\_SYSTEM\_MUTLISELECTABLE||N| +|STATE\_SYSTEM\_OFFSCREEN| \= True|N| +|STATE\_SYSTEM\_PROTECTED||N| +|STATE\_SYSTEM\_READONLY| および |N| +|STATE\_SYSTEM\_SELECTABLE| がサポートされています|N| +|STATE\_SYSTEM\_SELECTED||N| +|STATE\_SYSTEM\_SIZEABLE||N| +|STATE\_SYSTEM\_UNAVAILABLE||Y| + + 次は、ほとんどの [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] コントロール サーバーで実装されていなかったか、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] に対応するものがない状態を示します。 + +|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] の状態|コメント| +|---------------------------------------------------------------------|----------| +|STATE\_SYSTEM\_BUSY|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では使用できません| +|STATE\_SYSTEM\_DEFAULT|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では使用できません| +|STATE\_SYSTEM\_ANIMATED|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では使用できません| +|STATE\_SYSTEM\_EXTSELECTABLE|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] サーバーで広範に実装されていません| +|STATE\_SYSTEM\_MARQUEED|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] サーバーで広範に実装されていません| +|STATE\_SYSTEM\_SELFVOICING|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] サーバーで広範に実装されていません| +|STATE\_SYSTEM\_TRAVERSED|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では使用できません| +|STATE\_SYSTEM\_ALERT\_HIGH|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] サーバーで広範に実装されていません| +|STATE\_SYSTEM\_ALERT\_MEDIUM|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] サーバーで広範に実装されていません| +|STATE\_SYSTEM\_ALERT\_LOW|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] サーバーで広範に実装されていません| +|STATE\_SYSTEM\_FLOATING|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] サーバーで広範に実装されていません| +|STATE\_SYSTEM\_HOTTRACKED|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では使用できません| +|STATE\_SYSTEM\_PRESSED|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では使用できません| + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ識別子の完全な一覧については、「[UI Automation Properties Overview](../../../docs/framework/ui-automation/ui-automation-properties-overview.md)」を参照してください。 + + +## イベント + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のイベント機構は、[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] とは異なり、Windows のイベント ルーティング \(ウィンドウ ハンドルと密接に関連する\) に依存せず、クライアント アプリケーションでフックを設定する必要もありません。 イベントのサブスクリプションは、特定のイベントに対してだけでなく、ツリーの特定の部分を対象とするように細かく調整できます。 プロバイダーも、リッスンされているイベントを追跡して、イベントの生成を細かく調整できます。 + + イベントを生成した要素をクライアントで取得することも簡単です。このような要素は、イベント コールバックに直接渡されるからです。 クライアントがイベントをサブスクライブしているときにキャッシュ要求がアクティブであった場合は、自動的に要素のプロパティがプリフェッチされます。 + + 次の表に、[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] の WinEvent と [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のイベントとの対応を示します。 + +|WinEvent|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のイベント識別子| +|--------------|------------------------------------------------------------------------------------| +|EVENT\_OBJECT\_ACCELERATORCHANGE| プロパティの変更| +|EVENT\_OBJECT\_CONTENTSCROLLED|関連付けられたスクロール バーにおける または プロパティの変更| +|EVENT\_OBJECT\_CREATE|| +|EVENT\_OBJECT\_DEFACTIONCHANGE|同等の機能がありません| +|EVENT\_OBJECT\_DESCRIPTIONCHANGE|まったく同等の項目はありません \(おそらく または プロパティの変更\)| +|EVENT\_OBJECT\_DESTROY|| +|EVENT\_OBJECT\_FOCUS|| +|EVENT\_OBJECT\_HELPCHANGE| の変更| +|EVENT\_OBJECT\_HIDE|| +|EVENT\_OBJECT\_LOCATIONCHANGE| プロパティの変更| +|EVENT\_OBJECT\_NAMECHANGE| プロパティの変更| +|EVENT\_OBJECT\_PARENTCHANGE|| +|EVENT\_OBJECT\_REORDER|[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] での使用は一貫していません。 直接対応するイベントが [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では定義されていません。| +|EVENT\_OBJECT\_SELECTION|| +|EVENT\_OBJECT\_SELECTIONADD|| +|EVENT\_OBJECT\_SELECTIONREMOVE|| +|EVENT\_OBJECT\_SELECTIONWITHIN|同等の機能がありません| +|EVENT\_OBJECT\_SHOW|| +|EVENT\_OBJECT\_STATECHANGE|さまざまなプロパティ変更イベント| +|EVENT\_OBJECT\_VALUECHANGE| および の変更| +|EVENT\_SYSTEM\_ALERT|同等の機能がありません| +|EVENT\_SYSTEM\_CAPTUREEND|同等の機能がありません| +|EVENT\_SYSTEM\_CAPTURESTART|同等の機能がありません| +|EVENT\_SYSTEM\_CONTEXTHELPEND|同等の機能がありません| +|EVENT\_SYSTEM\_CONTEXTHELPSTART|同等の機能がありません| +|EVENT\_SYSTEM\_DIALOGEND|| +|EVENT\_SYSTEM\_DIALOGSTART|| +|EVENT\_SYSTEM\_DRAGDROPEND|同等の機能がありません| +|EVENT\_SYSTEM\_DRAGDROPSTART|同等の機能がありません| +|EVENT\_SYSTEM\_FOREGROUND|| +|EVENT\_SYSTEM\_MENUEND|| +|EVENT\_SYSTEM\_MENUPOPUPEND|| +|EVENT\_SYSTEM\_MENUPOPUPSTART|| +|EVENT\_SYSTEM\_MENUSTART|| +|EVENT\_SYSTEM\_MINIMIZEEND| プロパティの変更| +|EVENT\_SYSTEM\_MINIMIZESTART| プロパティの変更| +|EVENT\_SYSTEM\_MOVESIZEEND| プロパティの変更| +|EVENT\_SYSTEM\_MOVESIZESTART| プロパティの変更| +|EVENT\_SYSTEM\_SCROLLINGEND| または プロパティの変更| +|EVENT\_SYSTEM\_SCROLLINGSTART| または プロパティの変更| +|EVENT\_SYSTEM\_SOUND|同等の機能がありません| +|EVENT\_SYSTEM\_SWITCHEND|同等の項目はありませんが、新しいアプリケーションがフォーカスを受け取ったことは イベントによって通知されます。| +|EVENT\_SYSTEM\_SWITCHSTART|同等の機能がありません| +|同等の機能がありません| プロパティの変更| +|同等の機能がありません| プロパティの変更| +|同等の機能がありません| プロパティの変更| +|同等の機能がありません| プロパティの変更| +|同等の機能がありません| プロパティの変更| +|同等の機能がありません| プロパティの変更| +|同等の機能がありません| プロパティの変更| +|同等の機能がありません| プロパティの変更| +|同等の機能がありません| プロパティの変更| +|同等の機能がありません| イベント| +|同等の機能がありません|| + + +## セキュリティ + `IAccessible` をカスタマイズするシナリオでは、基本 `IAccessible` をラップしてからこれに対する呼び出しを行うという要件が生じることがあります。 このことは、セキュリティに影響を及ぼします。部分信頼コンポーネントにコード パスを中継させてはならないからです。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] モデルでは、プロバイダーが他のプロバイダー コードを呼び出す必要がありません。 必要な集約はすべて [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コア サービスが行います。 + +## 参照 + [UI Automation Fundamentals](../../../docs/framework/ui-automation/index.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-and-screen-scaling.md b/docs/framework/ui-automation/ui-automation-and-screen-scaling.md new file mode 100644 index 00000000000..5f6bf3a448a --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-and-screen-scaling.md @@ -0,0 +1,83 @@ +--- +title: "UI Automation and Screen Scaling | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "scaling, screens" + - "screens, scaling" + - "UI (user interface), automation" + - "UI Automation" +ms.assetid: 4380cad7-e509-448f-b9a5-6de042605fd4 +caps.latest.revision: 16 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 16 +--- +# UI Automation and Screen Scaling +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + [!INCLUDE[TLA#tla_longhorn](../../../includes/tlasharptla-longhorn-md.md)] では、ユーザーが [!INCLUDE[TLA#tla_dpi](../../../includes/tlasharptla-dpi-md.md)] 設定を変更して、画面上のほとんどの [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] 要素を拡大表示できます。 この機能は長い間、[!INCLUDE[TLA#tla_win](../../../includes/tlasharptla-win-md.md)] で有効でしたが、以前のバージョンでは、アプリケーションによって拡大縮小を実装しなければなりませんでした。[!INCLUDE[TLA#tla_longhorn](../../../includes/tlasharptla-longhorn-md.md)] では、独自の拡大縮小処理を行わないアプリケーションのすべてについて、デスクトップ ウィンドウ マネージャーが既定の拡大縮小を行います。 UI オートメーション クライアント アプリケーションでは、この機能を考慮に入れる必要があります。 + + +## Windows Vista での拡大縮小 + 既定の [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] 設定は 96 です。つまり、幅または高さの概念上の 1 インチが 96 ピクセルで占められます。 「インチ」の正確な寸法は、モニターのサイズと物理的な解像度によって異なります。 たとえば、幅 12 インチで水平方向の解像度 1280 ピクセルのモニターでは、96 ピクセルの水平線は 1 インチの約 9\/10 の長さになります。 + + [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] 設定を変更することは、画面の解像度を変更することと同じではありません。[!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] の拡大縮小では、画面上の物理的ピクセル数はそのまま変わりません。 拡大縮小が適用されるのは、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素のサイズと位置です。 拡大縮小しないよう明示的に指定されていないデスクトップとアプリケーションに対し、デスクトップ ウィンドウ マネージャー \(DWM\) はこの拡大縮小を自動的に実行できます。 + + 実際には、ユーザーがスケール ファクターを 120 [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] に設定すると、画面上の垂直または水平方向のインチが 25% 拡大されます。 すべての寸法は、それに応じて拡大されます。 画面の左上隅からのアプリケーション ウィンドウのオフセットは、25% 増加します。 アプリケーションの拡大縮小が有効であり、アプリケーションが [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] 対応でない場合、ウィンドウのサイズが同じ比率で大きくなります。ウィンドウに含まれるすべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素のオフセットとサイズも同様です。 + +> [!NOTE] +> 既定では、ユーザーが [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] を 120 に設定した場合、DWM は [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] 非対応のアプリケーションに対して拡大縮小を実行しませんが、[!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] が 144 以上のカスタム値に設定されている場合には拡大縮小を実行します。 ただし、この既定の動作は、ユーザーがオーバーライドできます。 + + 画面の拡大縮小は、画面座標に何らかの関わりを持つアプリケーションに新しい課題をもたらします。 現在、画面には物理座標と論理座標という 2 つの座標系が含まれています。 あるポイントの物理座標は、原点の左上からの実際のオフセット \(ピクセル数\) です。 論理座標は、ピクセル自体が拡大縮小された場合のオフセットです。 + + たとえば、ダイアログ ボックスを設計し、座標 \(100, 48\) にボタンを配置するとします。 このダイアログ ボックスが既定の 96 [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] で表示される場合、ボタンは物理座標 \(100, 48\) に位置します。 120 [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] の場合は、物理座標 \(125, 60\) に位置します。 しかし、論理座標は [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] の設定に関係なく、\(100, 48\) のままです。 + + 論理座標は、[!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] の設定に関係なく、オペレーティング システムとアプリケーションの動作を一貫性のあるものとするので重要です。 たとえば、 は通常、論理座標を返します。 カーソルをダイアログ ボックス内の要素に移動すると、[!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] の設定に関係なく、同じ座標が返されます。 \(100, 100\) にコントロールを描画する場合、そのコントロールはこの論理座標に描画され、[!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] の設定に関係なく、同じ相対位置を占めることになります。 + + +## UI オートメーション クライアントにおける拡大縮小 + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] [!INCLUDE[TLA#tla_api](../../../includes/tlasharptla-api-md.md)] は論理座標を使用しません。 次のメソッドとプロパティが返す、あるいはパラメーターとして受け取るのは、物理座標です。 + +- + +- + +- + +- + +- + + 96 [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] ではない環境で実行されている UI オートメーション クライアント アプリケーションは、既定では、これらのメソッドとプロパティから正しい結果を取得できません。 たとえば、カーソルの位置は論理座標で表されるため、クライアントはそのカーソルの位置にある要素を取得するために、これらの座標をそのまま に渡すことができません。 さらに、アプリケーションはクライアント領域外にウィンドウを正しく配置することもできません。 + + 解決方法は 2 つの部分で構成されます。 + +1. まず、クライアント アプリケーションを [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] 対応にします。 それには、起動時に [!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] 関数 `SetProcessDPIAware` を呼び出します。 マネージ コードで、次の宣言によりこの関数を使用できるようになります。 + + [!code-csharp[Highlighter#101](../../../samples/snippets/csharp/VS_Snippets_Wpf/Highlighter/CSharp/NativeMethods.cs#101)] + [!code-vb[Highlighter#101](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/Highlighter/VisualBasic/NativeMethods.vb#101)] + + この関数は、プロセス全体を [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] 対応にします。つまり、プロセスに属するすべてのウィンドウは拡大縮小されません。[Highlighter Sample](http://msdn.microsoft.com/ja-jp/19ba4577-753e-4efd-92cc-c02ee67c1b69) では、たとえば強調表示の四角形を構成する 4 つのウィンドウは、論理座標ではなく、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] から取得した物理座標に位置します。 この例が [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] 非対応だったなら、強調表示はデスクトップ上の論理座標で描画されるため、96 [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] 以外の環境では誤った位置に配置されることになります。 + +2. カーソルの座標を取得するには、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] 関数 `GetPhysicalCursorPos` を呼び出します。 次の例に、この関数を宣言して使用する方法を示します。 + + [!code-csharp[UIAClient_snip#185](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#185)] + [!code-vb[UIAClient_snip#185](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#185)] + +> [!CAUTION] +> は使用しないでください。 拡大縮小される環境において、クライアント ウィンドウ外でのこのプロパティの動作は定義されていません。 + + アプリケーションが [!INCLUDE[TLA2#tla_dpi](../../../includes/tla2sharptla-dpi-md.md)] 非対応のアプリケーションと直接プロセス間通信を行う場合は、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] 関数 `PhysicalToLogicalPoint` および `LogicalToPhysicalPoint` を使用して、論理座標と物理座標を互いに変換できます。 + +## 参照 + [Highlighter Sample](http://msdn.microsoft.com/ja-jp/19ba4577-753e-4efd-92cc-c02ee67c1b69) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-clients-for-managed-code-how-to-topics.md b/docs/framework/ui-automation/ui-automation-clients-for-managed-code-how-to-topics.md new file mode 100644 index 00000000000..bd4027a2e64 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-clients-for-managed-code-how-to-topics.md @@ -0,0 +1,38 @@ +--- +title: "UI Automation Clients for Managed Code How-to Topics | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "UI Automation, clients for managed code" + - "managed code, UI Automation clients" +ms.assetid: 665b01b5-25f5-47a1-ab11-cffe8ebbf2a7 +caps.latest.revision: 58 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 58 +--- +# UI Automation Clients for Managed Code How-to Topics +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、クライアント アプリケーションでの [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]の機能の実装について詳しく説明します。 + +## このセクションの内容 + [Find a UI Automation Element Based on a Property Condition](../../../docs/framework/ui-automation/find-a-ui-automation-element-based-on-a-property-condition.md) + [Navigate Among UI Automation Elements with TreeWalker](../../../docs/framework/ui-automation/navigate-among-ui-automation-elements-with-treewalker.md) + [Find a UI Automation Element for a List Item](../../../docs/framework/ui-automation/find-a-ui-automation-element-for-a-list-item.md) + [Get UI Automation Element Properties](../../../docs/framework/ui-automation/get-ui-automation-element-properties.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) + [Subscribe to UI Automation Events](../../../docs/framework/ui-automation/subscribe-to-ui-automation-events.md) + [Register a Client\-Side Provider Assembly](../../../docs/framework/ui-automation/register-a-client-side-provider-assembly.md) + [Use the AutomationID Property](../../../docs/framework/ui-automation/use-the-automationid-property.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-clients-for-managed-code.md b/docs/framework/ui-automation/ui-automation-clients-for-managed-code.md new file mode 100644 index 00000000000..9cbb874efd3 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-clients-for-managed-code.md @@ -0,0 +1,43 @@ +--- +title: "UI Automation Clients for Managed Code | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "UI Automation, clients for managed code" + - "managed code, UI Automation clients" +ms.assetid: e1ed1197-3e9e-4e78-8845-92e82787faed +caps.latest.revision: 58 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 58 +--- +# UI Automation Clients for Managed Code +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このセクションには、UI オートメーション クライアントの概要と、クライアントの開発に役立つハウツーに関するトピックが含まれています。 + +## このセクションの内容 + [UI Automation and Screen Scaling](../../../docs/framework/ui-automation/ui-automation-and-screen-scaling.md) + [UI Automation Support for Standard Controls](../../../docs/framework/ui-automation/ui-automation-support-for-standard-controls.md) + [UI Automation Events for Clients](../../../docs/framework/ui-automation/ui-automation-events-for-clients.md) + [Caching in UI Automation Clients](../../../docs/framework/ui-automation/caching-in-ui-automation-clients.md) + [UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md) + [Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Obtaining UI Automation Elements](../../../docs/framework/ui-automation/obtaining-ui-automation-elements.md) + [UI Automation Threading Issues](../../../docs/framework/ui-automation/ui-automation-threading-issues.md) + [How\-to Topics](../../../docs/framework/ui-automation/ui-automation-clients-for-managed-code-how-to-topics.md) + +## 関連項目 + \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md b/docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md new file mode 100644 index 00000000000..d925ba41062 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md @@ -0,0 +1,62 @@ +--- +title: "UI Automation Control Patterns for Clients | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, control patterns for clients" + - "control patterns, UI Automation clients" +ms.assetid: 571561d8-5f49-43a9-a054-87735194e013 +caps.latest.revision: 24 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 24 +--- +# UI Automation Control Patterns for Clients +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + この概要では、UI オートメーション クライアントのコントロール パターンについて説明します。 また、UI オートメーション クライアントがコントロール パターンを使用して、[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] の情報にアクセスするしくみについても説明します。 + + コントロール パターンは、コントロール型や外観に関係なく、コントロールの機能を分類したり公開したりするための手段です。 UI オートメーション クライアントは、 を調べてどのコントロール パターンがサポートされているかを特定し、そのコントロールの動作を確実に実行することができます。 + + コントロール パターンの完全なリストについては、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」をご覧ください。 + + +## コントロール パターンの取得 + クライアントは、 または を呼び出して、 からコントロール パターンを取得します。 + + クライアントは、 メソッドまたは個別の `IsPatternAvailable` プロパティ \( など\) を使用して、パターンまたはパターンのグループが でサポートされているかどうかを特定できます。 ただし、サポートされているプロパティを確認してコントロール パターンを取得するよりも、コントロール パターンを取得して `null` 参照に対するテストを試行する方が、プロセス間呼び出しが少なくなるため効率的です。 + + から コントロール パターンを取得する方法を次の例に示します。 + + [!code-csharp[UIATextPattern_snip#1037](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIATextPattern_snip/CSharp/SearchWindow.cs#1037)] + + +## コントロール パターンのプロパティの取得 + クライアントは、 または を呼び出し、返されたオブジェクトを適切な型にキャストすることで、コントロール パターンのプロパティ値を取得できます。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティについて詳しくは、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」をご覧ください。 + + `GetPropertyValue` メソッドに加え、[!INCLUDE[TLA#tla_clr](../../../includes/tlasharptla-clr-md.md)] アクセサーを介してパターンの[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティにアクセスすることで、プロパティ値を取得することもできます。 + + +## 変数パターンを持つコントロール + 一部のコントロール型は、状態やコントロールの使用方法に応じた複数のパターンをサポートしています。 変数パターンを持つコントロールの例としては、リスト ビュー \(サムネイル、タイル、アイコン、リスト、詳細\)、[!INCLUDE[TLA#tla_xl](../../../includes/tlasharptla-xl-md.md)] グラフ \(円、線、横棒、式を使用するセル値\)、[!INCLUDE[TLA#tla_word](../../../includes/tlasharptla-word-md.md)] のドキュメント領域 \(標準、Web レイアウト、アウトライン、印刷レイアウト、印刷プレビュー\)、[!INCLUDE[TLA#tla_wmp](../../../includes/tlasharptla-wmp-md.md)] スキンなどがあります。 + + カスタム コントロール型を実装するコントロールは、機能を表すために必要なコントロール パターンの任意のセットを持つことができます。 + +## 参照 + [UI Automation Control Patterns](../../../docs/framework/ui-automation/ui-automation-control-patterns.md) + [UI Automation Text Pattern](../../../docs/framework/ui-automation/ui-automation-text-pattern.md) + [Invoke a Control Using UI Automation](../../../docs/framework/ui-automation/invoke-a-control-using-ui-automation.md) + [Get the Toggle State of a Check Box Using UI Automation](../../../docs/framework/ui-automation/get-the-toggle-state-of-a-check-box-using-ui-automation.md) + [Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md) + [TextPattern Insert Text Sample](http://msdn.microsoft.com/ja-jp/67353f93-7ee2-42f2-ab76-5c078cf6ca16) + [TextPattern Search and Selection Sample](http://msdn.microsoft.com/ja-jp/0a3bca57-8b72-489d-a57c-da85b7a22c7f) + [InvokePattern and ExpandCollapsePattern Menu Item Sample](http://msdn.microsoft.com/ja-jp/b7fa141c-e2d1-4da2-a27f-81a7d1172210) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-control-patterns-how-to-topics.md b/docs/framework/ui-automation/ui-automation-control-patterns-how-to-topics.md new file mode 100644 index 00000000000..515d1f10946 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-control-patterns-how-to-topics.md @@ -0,0 +1,35 @@ +--- +title: "UI Automation Control Patterns How-to Topics | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "control patterns, UI Automation" + - "UI Automation, control patterns" +ms.assetid: 72c80262-8ca9-4624-9bd6-96984c5b7c5c +caps.latest.revision: 62 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 62 +--- +# UI Automation Control Patterns How-to Topics +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + ここでは、コントロール パターンの実装について詳しく説明します。 + +## このセクションの内容 + [Expose the Content of a Table Using UI Automation](../../../docs/framework/ui-automation/expose-the-content-of-a-table-using-ui-automation.md) + [Get Supported UI Automation Control Patterns](../../../docs/framework/ui-automation/get-supported-ui-automation-control-patterns.md) + [Get the Toggle State of a Check Box Using UI Automation](../../../docs/framework/ui-automation/get-the-toggle-state-of-a-check-box-using-ui-automation.md) + [Invoke a Control Using UI Automation](../../../docs/framework/ui-automation/invoke-a-control-using-ui-automation.md) + [Move a UI Automation Element](../../../docs/framework/ui-automation/move-a-ui-automation-element.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-control-patterns-overview.md b/docs/framework/ui-automation/ui-automation-control-patterns-overview.md new file mode 100644 index 00000000000..9d0cc52c857 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-control-patterns-overview.md @@ -0,0 +1,87 @@ +--- +title: "UI Automation Control Patterns Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control patterns" + - "UI Automation, control patterns" +ms.assetid: cc229b33-234b-469b-ad60-f0254f32d45d +caps.latest.revision: 34 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 33 +--- +# UI Automation Control Patterns Overview +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + この概要では、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] コントロール パターンについて説明します。 コントロール パターンは、コントロール型や外観に関係なく、コントロールの機能を分類したり公開したりするための手段です。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は、コントロールの一般的な動作を表すコントロール パターンを使用します。 たとえば、呼び出し可能なコントロール \(ボタンなど\) には Invoke コントロール パターンを使用し、スクロール バーを持つコントロール \(リスト ボックス、リスト ビュー、コンボ ボックスなど\) には Scroll コントロール パターンを使用します。 コントロール パターンごとに別の機能を表すため、コントロール パターンを組み合わせて、特定のコントロールでサポートされる機能の完全なセットを表すことができます。 + +> [!NOTE] +> 集約コントロール \(親によって公開される機能のために [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] を提供する子コントロールで構築されるもの\) は、各子コントロールに通常関連付けられるすべてのコントロール パターンを実装する必要があります。 一方、これらの同じコントロール パターンを子コントロールで実装する必要はありません。 + + +## UI オートメーションのコントロール パターン コンポーネント + コントロール パターンは、コントロールで使用可能な機能の個々の部分を定義するために必要なメソッド、プロパティ、イベント、およびリレーションシップをサポートします。 + +- UI オートメーション要素とその親、子、兄弟との間の関係によって、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー内の要素の構造を記述します。 + +- メソッドは、UI オートメーション クライアントがコントロールを操作できるようにします。 + +- プロパティとイベントは、コントロール パターンの機能に関する情報だけでなく、コントロールの状態に関する情報も提供します。 + + コントロール パターンと [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] の関係は、インターフェイスと [!INCLUDE[TLA#tla_com](../../../includes/tlasharptla-com-md.md)] オブジェクトの関係に似ています。[!INCLUDE[TLA2#tla_com](../../../includes/tla2sharptla-com-md.md)] では、オブジェクトを照会してサポートされるインターフェイスを確認し、それらのインターフェイスを使用して機能にアクセスすることができます。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] では、UI オートメーション クライアントは、サポートされるコントロール パターンをコントロールに対して確認し、サポートされているコントロール パターンによって公開されているプロパティ、メソッド、イベント、構造体を使用してコントロールとやり取りすることができます。 たとえば、複数行のエディット ボックスでは、UI オートメーション プロバイダーは を実装します。 クライアントは、 コントロール パターンをサポートしていることを認識すると、そのコントロール パターンによって公開されているプロパティ、メソッド、イベントを使用して、コントロールを操作したり、コントロールに関する情報にアクセスしたりできます。 + + +## UI オートメーションのプロバイダーおよびクライアント + UI オートメーション プロバイダーは、コントロール パターンを実装して、コントロールによってサポートされる特定の機能の適切な動作を公開します。 + + UI オートメーション クライアントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターン クラスのメソッドとプロパティにアクセスし、それらを使用して [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] に関する情報を取得したり、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] を操作したりします。 これらのコントロール パターン クラスは、 名前空間 \(たとえば、\) にあります。 + + クライアントは メソッド \( など\) または [!INCLUDE[TLA#tla_clr](../../../includes/tlasharptla-clr-md.md)] アクセサーを使用して、パターン上の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティにアクセスします。 各コントロール パターン クラスには、そのコントロール パターンを識別するフィールド メンバー \(たとえば、`` または \) があります。それらをパラメーターとして または に渡して、 のそのパターンを取得することができます。 + + +## 動的コントロール パターン + 一部のコントロールでは、コントロール パターンの同じセットを必ずしもサポートしません。 コントロール パターンは、UI オートメーション クライアントから使用できる場合に、サポートされていると見なされます。 たとえば、複数行のエディット ボックスでは、表示可能領域に表示できる行以上のテキストが含まれている場合にのみ、垂直スクロールが有効にされます。 テキストが削除されスクロールする必要がなくなると、スクロールは無効になります。 この例では、ScrollPattern コントロール パターンは、コントロールの現在の状態 \(エディット ボックスのテキストの量\) に応じて動的にサポートされます。 + + +## コントロール パターン クラスとインターフェイス + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンについて次の表で説明します。 またこの表には、コントロール パターンにアクセスするために UI オートメーション クライアントで使用するクラスと、それらを実装するために UI オートメーション プロバイダーで使用するインターフェイスも示します。 + +|コントロール パターン クラス|プロバイダーのインターフェイス|説明| +|---------------------|---------------------|--------| +|||ドッキング コンテナーにドッキングすることができるコントロールに使用されます。 たとえば、ツールバーやツール パレットです。| +|||展開したり折りたたんだりできるコントロールに使用されます。 たとえば、**\[ファイル\]** メニューなどアプリケーションのメニュー項目。| +|||サイズ変更や指定したセルへの移動などグリッド機能をサポートするコントロールに使用されます。 たとえば、Windows エクスプローラーの大きいアイコンの表示や [!INCLUDE[TLA#tla_word](../../../includes/tlasharptla-word-md.md)] のヘッダーのない簡単な表。| +|||グリッド内にセルを持つコントロールに使用されます。 個々のセルは GridItem パターンをサポートしている必要があります。 たとえば、[!INCLUDE[TLA#tla_winexpl](../../../includes/tlasharptla-winexpl-md.md)] 詳細ビューの各セル。| +|||ボタンなど、呼び出すことができるコントロールに使用されます。| +|||情報、データ、子の同じセットの複数の表現の間で切り替えることができるコントロールに使用されます。 たとえば、サムネイル、タイル、アイコン、リスト、詳細ビューでデータを使用できるリスト ビュー コントロール。| +|||コントロールに適用できる値の範囲を持つコントロールに使用されます。 たとえば、年を含むスピン ボックス コントロールは 1900 から 2010 の範囲を持ち、月を表すスピン ボックス コントロールは 1 から 12 の範囲を持ちます。| +|||スクロールできるコントロールに使用されます。 たとえば、コントロールの表示可能領域に表示できる量より多くの情報があるとアクティブになるスクロール バーを持つコントロール。| +|||スクロールされるリスト内に個々の項目を持つコントロールに使用されます。 たとえば、コンボ ボックス コントロールなどスクロール リストに個々の項目を持つリスト コントロール。| +|||選択コンテナー コントロールに使用されます。 たとえば、リスト ボックスやコンボ ボックス。| +|||リスト ボックスやコンボ ボックスなどの選択コンテナー コントロールの個々の項目に使用されます。| +|||グリッドとヘッダー情報を持つコントロールに使用されます。 たとえば、[!INCLUDE[TLA#tla_xl](../../../includes/tlasharptla-xl-md.md)] ワークシートです。| +|||テーブル内の項目に使用されます。| +|||テキストの情報を公開するエディット コントロールとドキュメントに使用されます。| +|||状態を切り替えることができるコントロールに使用されます。 たとえば、チェック ボックスやチェック可能なメニュー項目。| +|||サイズ変更、移動、または回転を行えるコントロールに使用されます。 Transform コントロール パターンの一般的な用途は、デザイナー、フォーム、グラフィカル エディター、および描画アプリケーションでの使用です。| +|||クライアントで、値の範囲をサポートしないコントロールで値を取得したり、設定したりできます。 たとえば、日時指定のピッカーなどがあります。| +|||[!INCLUDE[TLA#tla_win](../../../includes/tlasharptla-win-md.md)] オペレーティング システムの基本概念であるウィンドウに固有の情報を公開します。 ウィンドウのコントロールの例として、最上位のアプリケーション ウィンドウ \([!INCLUDE[TLA#tla_word](../../../includes/tlasharptla-word-md.md)] や [!INCLUDE[TLA#tla_winexpl](../../../includes/tlasharptla-winexpl-md.md)] など\)、[!INCLUDE[TLA#tla_mdi](../../../includes/tlasharptla-mdi-md.md)] 子ウィンドウ、ダイアログがあります。| + +## 参照 + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) + [UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md) + [UI Automation Events for Clients](../../../docs/framework/ui-automation/ui-automation-events-for-clients.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-control-patterns.md b/docs/framework/ui-automation/ui-automation-control-patterns.md new file mode 100644 index 00000000000..caa4e42e4d1 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-control-patterns.md @@ -0,0 +1,48 @@ +--- +title: "UI Automation Control Patterns | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "control patterns, UI Automation" + - "UI Automation, control patterns" +ms.assetid: 1f8b5ab3-c193-4d0f-9e67-a0076225a1a5 +caps.latest.revision: 60 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 60 +--- +# UI Automation Control Patterns +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] コントロール パターンを使用する方法について詳しく説明します。 + +## このセクションの内容 + [Implementing the UI Automation Dock Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-dock-control-pattern.md) + [Implementing the UI Automation ExpandCollapse Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-expandcollapse-control-pattern.md) + [Implementing the UI Automation Grid Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-grid-control-pattern.md) + [Implementing the UI Automation GridItem Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-griditem-control-pattern.md) + [Implementing the UI Automation Invoke Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-invoke-control-pattern.md) + [Implementing the UI Automation MultipleView Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-multipleview-control-pattern.md) + [Implementing the UI Automation RangeValue Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-rangevalue-control-pattern.md) + [Implementing the UI Automation Scroll Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-scroll-control-pattern.md) + [Implementing the UI Automation ScrollItem Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-scrollitem-control-pattern.md) + [Implementing the UI Automation Selection Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-selection-control-pattern.md) + [Implementing the UI Automation SelectionItem Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-selectionitem-control-pattern.md) + [Implementing the UI Automation Table Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-table-control-pattern.md) + [Implementing the UI Automation TableItem Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-tableitem-control-pattern.md) + [Implementing the UI Automation Toggle Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-toggle-control-pattern.md) + [Implementing the UI Automation Transform Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-transform-control-pattern.md) + [Implementing the UI Automation Value Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-value-control-pattern.md) + [Implementing the UI Automation Window Control Pattern](../../../docs/framework/ui-automation/implementing-the-ui-automation-window-control-pattern.md) + [How\-to Topics](../../../docs/framework/ui-automation/ui-automation-control-patterns-how-to-topics.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-control-types-overview.md b/docs/framework/ui-automation/ui-automation-control-types-overview.md new file mode 100644 index 00000000000..9b10f834cf1 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-control-types-overview.md @@ -0,0 +1,123 @@ +--- +title: "UI Automation Control Types Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, control types" + - "control types, UI Automation" +ms.assetid: 75159ef8-bd43-4d13-acb7-1f1fe9253160 +caps.latest.revision: 22 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 22 +--- +# UI Automation Control Types Overview +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] コントロール型は、コンボ ボックスやボタンなど、特定の要素が表すコントロールの種類を示すのに使用できる既知の識別子です。 + + 既知の識別子を使用すると、支援テクノロジ デバイスで、[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] で使用できるコントロール型およびコントロールとの対話方法を簡単に確認できるようになります。 + + +## UI オートメーション コントロール型の要件 + [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] コントロール型は、プロバイダーが満たす必要のある一連の条件を提供します。 これらの条件が満たされると、コントロールは特定のコントロール型名を使用できます。 コントロール型にはそれぞれ、次のような条件があります。 + +- [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターン \- サポートする必要があるコントロール パター、省略可能なコントロール パターン、およびコントロールでサポートする必要がないコントロール パターン。 + +- [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ値 \- サポートされるプロパティ値。 + +- [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造 \- コントロールに必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造。 + + コントロールが特定のコントロール型の条件を満たす場合、 プロパティの値がそのコントロール型を示します。 + + +## 現在の UI オートメーション コントロール型 + 現在の [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] コントロール型の一覧を次に示します。 + +- [UI Automation Support for the Button Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-button-control-type.md) + +- [UI Automation Support for the Calendar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-calendar-control-type.md) + +- [UI Automation Support for the CheckBox Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-checkbox-control-type.md) + +- [UI Automation Support for the ComboBox Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-combobox-control-type.md) + +- [UI Automation Support for the DataGrid Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-datagrid-control-type.md) + +- [UI Automation Support for the DataItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-dataitem-control-type.md) + +- [UI Automation Support for the Document Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-document-control-type.md) + +- [UI Automation Support for the Edit Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-edit-control-type.md) + +- [UI Automation Support for the Group Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-group-control-type.md) + +- [UI Automation Support for the Header Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-header-control-type.md) + +- [UI Automation Support for the HeaderItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-headeritem-control-type.md) + +- [UI Automation Support for the Hyperlink Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-hyperlink-control-type.md) + +- [UI Automation Support for the Image Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-image-control-type.md) + +- [UI Automation Support for the List Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-list-control-type.md) + +- [UI Automation Support for the ListItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-listitem-control-type.md) + +- [UI Automation Support for the Menu Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-menu-control-type.md) + +- [UI Automation Support for the MenuBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md) + +- [UI Automation Support for the MenuItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-menuitem-control-type.md) + +- [UI Automation Support for the Pane Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-pane-control-type.md) + +- [UI Automation Support for the ProgressBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-progressbar-control-type.md) + +- [UI Automation Support for the RadioButton Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-radiobutton-control-type.md) + +- [UI Automation Support for the ScrollBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-scrollbar-control-type.md) + +- [UI Automation Support for the Separator Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-separator-control-type.md) + +- [UI Automation Support for the Slider Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-slider-control-type.md) + +- [UI Automation Support for the Spinner Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-spinner-control-type.md) + +- [UI Automation Support for the SplitButton Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-splitbutton-control-type.md) + +- [UI Automation Support for the StatusBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-statusbar-control-type.md) + +- [UI Automation Support for the Tab Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-tab-control-type.md) + +- [UI Automation Support for the TabItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-tabitem-control-type.md) + +- [UI Automation Support for the Table Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-table-control-type.md) + +- [UI Automation Support for the Text Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-text-control-type.md) + +- [UI Automation Support for the Thumb Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-thumb-control-type.md) + +- [UI Automation Support for the TitleBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-titlebar-control-type.md) + +- [UI Automation Support for the ToolBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-toolbar-control-type.md) + +- [UI Automation Support for the ToolTip Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-tooltip-control-type.md) + +- [UI Automation Support for the Tree Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-tree-control-type.md) + +- [UI Automation Support for the TreeItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type.md) + +- [UI Automation Support for the Window Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-window-control-type.md) + +## 参照 + \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-control-types.md b/docs/framework/ui-automation/ui-automation-control-types.md new file mode 100644 index 00000000000..1d3b7935c65 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-control-types.md @@ -0,0 +1,74 @@ +--- +title: "UI Automation Control Types | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "UI Automation, control types" + - "control types, UI Automation" +ms.assetid: 261dcc59-3a62-4e40-91dd-63ff9d2241c0 +caps.latest.revision: 61 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 61 +--- +# UI Automation Control Types +**メモ** このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]でのコントロール型のサポートについて説明します。 + +## このセクションの内容 + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Support for the Button Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-button-control-type.md) + [UI Automation Support for the Calendar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-calendar-control-type.md) + [UI Automation Support for the CheckBox Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-checkbox-control-type.md) + [UI Automation Support for the ComboBox Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-combobox-control-type.md) + [UI Automation Support for the DataGrid Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-datagrid-control-type.md) + [UI Automation Support for the DataItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-dataitem-control-type.md) + [UI Automation Support for the Document Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-document-control-type.md) + [UI Automation Support for the Edit Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-edit-control-type.md) + [UI Automation Support for the Group Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-group-control-type.md) + [UI Automation Support for the Header Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-header-control-type.md) + [UI Automation Support for the HeaderItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-headeritem-control-type.md) + [UI Automation Support for the Hyperlink Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-hyperlink-control-type.md) + [UI Automation Support for the Image Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-image-control-type.md) + [UI Automation Support for the List Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-list-control-type.md) + [UI Automation Support for the ListItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-listitem-control-type.md) + [UI Automation Support for the Menu Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-menu-control-type.md) + [UI Automation Support for the MenuBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md) + [UI Automation Support for the MenuItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-menuitem-control-type.md) + [UI Automation Support for the Pane Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-pane-control-type.md) + [UI Automation Support for the ProgressBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-progressbar-control-type.md) + [UI Automation Support for the RadioButton Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-radiobutton-control-type.md) + [UI Automation Support for the ScrollBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-scrollbar-control-type.md) + [UI Automation Support for the Separator Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-separator-control-type.md) + [UI Automation Support for the Slider Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-slider-control-type.md) + [UI Automation Support for the Spinner Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-spinner-control-type.md) + [UI Automation Support for the SplitButton Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-splitbutton-control-type.md) + [UI Automation Support for the StatusBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-statusbar-control-type.md) + [UI Automation Support for the Tab Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-tab-control-type.md) + [UI Automation Support for the TabItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-tabitem-control-type.md) + [UI Automation Support for the Table Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-table-control-type.md) + [UI Automation Support for the Text Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-text-control-type.md) + [UI Automation Support for the Thumb Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-thumb-control-type.md) + [UI Automation Support for the TitleBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-titlebar-control-type.md) + [UI Automation Support for the ToolBar Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-toolbar-control-type.md) + [UI Automation Support for the ToolTip Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-tooltip-control-type.md) + [UI Automation Support for the Tree Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-tree-control-type.md) + [UI Automation Support for the TreeItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type.md) + [UI Automation Support for the Window Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-window-control-type.md) + +## 関連項目 + + +## 参照 + [UI Automation Control Patterns](../../../docs/framework/ui-automation/ui-automation-control-patterns.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-events-for-clients.md b/docs/framework/ui-automation/ui-automation-events-for-clients.md new file mode 100644 index 00000000000..c20a876ac4d --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-events-for-clients.md @@ -0,0 +1,71 @@ +--- +title: "クライアントの UI オートメーション イベント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI オートメーション クライアントのイベント" + - "イベント、UI オートメーション クライアント" +ms.assetid: b909e388-3f24-4997-b6d4-bd9c35c2dc27 +caps.latest.revision: 32 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 32 +--- +# クライアントの UI オートメーション イベント +> [!NOTE] +> このドキュメントが目的とする、管理を使用する .NET Framework 開発者[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]で定義されたクラス、 名前空間。 最新情報について[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を参照してください[Windows Automation API: UI 自動化](http://go.microsoft.com/fwlink/?LinkID=156746)します。 + + このトピックについて説明する方法[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]イベントは、UI オートメーション クライアントによって使用されます。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]クライアントは、関心のあるイベントを定期受信できます。 この機能は、すべてをポーリングし続ける必要がある、パフォーマンスを改善、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]すべてについては、構造体、または状態が変更されたかどうか、システム内の要素。 + + また、定義されたスコープ内のイベントだけをリッスンできるため、効率性も向上します。 たとえば、クライアントをリッスンできますフォーカス変更イベントをすべて[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]ツリーで、または&1; つだけの要素とその子孫の要素。 + +> [!NOTE] +> 使用できるすべてのイベントを発生すると想定しないで、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]プロバイダー。 たとえば、すべてのプロパティの変更が発生するの標準のプロキシ プロバイダーによって発生させるイベントを[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)]と[!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)]コントロールです。 + + 広い視野の[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]イベントを参照してください[UI オートメーション イベントの概要](../../../docs/framework/ui-automation/ui-automation-events-overview.md)します。 + + +## イベントのサブスクライブ + クライアント アプリケーションは特定の種類のイベントをサブスクライブするために、次のいずれかのメソッドを使用してイベント ハンドラーを登録します。 + +|メソッド|イベントの種類|イベント引数の種類|デリゲート型| +|------------|----------------|--------------------------|-------------------| +||フォーカスの変更||| +||プロパティの変更||| +||構造の変更||| +||識別されるその他のすべてのイベント、 |または|| + + メソッドを呼び出す前に、イベントを処理するデリゲート メソッドを作成する必要があります。 必要に応じて、単一のメソッドでさまざまな種類のイベントを処理し、そのメソッドを複数の呼び出しで表中のメソッドの&1; つに渡すことができます。 たとえば、1 つ異なるによると、さまざまなイベントを処理するを設定することができます、 します。 + +> [!NOTE] +> ウィンドウを閉じるイベントを処理する、イベント ハンドラーに渡される引数の型をキャストします。 [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]ウィンドウの要素が無効になって、使用することはできません、`sender`情報を取得するパラメーターを使用して代わりにします。 + +> [!CAUTION] +> アプリケーションが独自のイベントを受け取った場合[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]、アプリケーションを使用しないでください[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]スレッドまたは登録を解除する、イベントを定期受信します。 使用すると、予期しない動作を招く可能性があります。 詳細については、次を参照してください。 [UI オートメーション スレッド処理の問題](../../../docs/framework/ui-automation/ui-automation-threading-issues.md)します。 + + シャット ダウン、または[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]イベントは、アプリケーションにとって重要な不要になった、UI オートメーション クライアントは、次の方法のいずれかを呼び出す必要があります。 + +|メソッド|説明| +|------------|-----------------| +||使用して登録されたイベント ハンドラーの登録を解除します。| +||使用して登録されたイベント ハンドラーの登録を解除します。| +||使用して登録されたイベント ハンドラーの登録を解除します。| +||登録済みのすべてのイベント ハンドラーの登録を解除します。| + + コード例は、「 [UI オートメーション イベントをサブスクライブ](../../../docs/framework/ui-automation/subscribe-to-ui-automation-events.md)します。 + +## 関連項目 + [UI オートメーション イベントを購読します。](../../../docs/framework/ui-automation/subscribe-to-ui-automation-events.md) + [UI オートメーション イベントの概要](../../../docs/framework/ui-automation/ui-automation-events-overview.md) + [UI オートメーション プロパティの概要](../../../docs/framework/ui-automation/ui-automation-properties-overview.md) + [TrackFocus サンプル](http://msdn.microsoft.com/ja-jp/4a91c0af-6bb5-4d38-a743-cf136f268fc9) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-events-overview.md b/docs/framework/ui-automation/ui-automation-events-overview.md new file mode 100644 index 00000000000..627ccff5e16 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-events-overview.md @@ -0,0 +1,94 @@ +--- +title: "UI Automation Events Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, providers" + - "UI Automation, events" + - "clients, UI Automation" + - "events, UI Automation" + - "providers, UI Automation" + - "UI Automation, clients" +ms.assetid: 69eebd8b-39ed-40e7-93cc-4457c4caf746 +caps.latest.revision: 22 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 22 +--- +# UI Automation Events Overview +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の最新情報については、「[Windows Automation API: UI Automation \(Windows のオートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] イベント通知は、スクリーン リーダーやスクリーン拡大鏡などの支援技術にとっての重要な機能です。 これらの UI オートメーション クライアントは、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] で何かが発生したときに UI オートメーション プロバイダーが発生させるイベントを追跡し、その情報を使用してエンド ユーザーに通知します。 + + これらのイベントにサブスクライブしているクライアントがあるか、それともイベントをリッスンするクライアントがなく、サブスクライブしているクライアントがまったくないかに応じて、プロバイダー アプリケーションが選択的にイベントを発生させることで効率が向上します。 + + +## イベントの種類 + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントは次のカテゴリに分けられます。 + +|イベント|説明| +|----------|--------| +|プロパティの変更|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要素のプロパティまたはコントロール パターンが変更された場合に発生します。 たとえば、クライアントがアプリケーションのチェック ボックス コントロールの監視を必要とする場合に、 プロパティ上のプロパティの変更イベントをリッスンするよう登録できます。 チェック ボックス コントロールがオンまたはオフになったときに、プロバイダーがイベントを発生させ、クライアントが必要なアクションを実行できます。| +|要素のアクション|[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] の変更がエンド ユーザーまたはプログラムによるアクティビティに起因する場合に発生します。たとえば、ボタンがクリックされたり、 を通じて呼び出される場合です。| +|構造の変更|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの構造が変更された場合に発生します。 構造が変更されるのは、デスクトップ上で新しい [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 項目が表示または非表示にされるか、削除された場合です。| +|グローバル デスクトップの変更|ある要素から別の要素にフォーカスが移った場合やウィンドウが閉じられた場合など、クライアントにグローバルに関連するアクションが起こった場合に発生します。| + + イベントによっては、必ずしも UI の状態が変更されたことを意味しません。 たとえば、ユーザーが Tab キーを押して、テキスト入力フィールドに移動し、フィールドを更新するボタンをクリックした場合、ユーザーが実際にテキストを変更していない場合でも `TextChangedEvent` が発生します。 イベントを処理する際、クライアント アプリケーションがアクションを起こす前に、実際に変更が行われたかどうかのチェックが必要となる場合があります。 + + 次のイベントは、UI の状態が変更されていない場合でも発生する可能性があります。 + +- `AutomationPropertyChangedEvent` \(変更されたプロパティによって変わります\) + +- `ElementSelectedEvent` + +- `InvalidatedEvent` + +- `TextChangedEvent` + + +## UI オートメーション イベント識別子 + [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] イベントは、 オブジェクトによって識別されます。 プロパティには、イベントの種類を一意に識別する値が含まれます。 + + に指定できる値と、イベント引数に使用する種類を次の表に示します。 クライアントとプロバイダーが使用する識別子は、異なるクラスで同じ名前のフィールドです。 + +|クライアント識別子|プロバイダー識別子|イベント引数の種類| +|---------------|---------------|---------------| +|||| +|























|























|| +|||| +|||| +|||| +|||| + + +## UI オートメーション イベント引数 + 次のクラスは、イベント引数をカプセル化します。 + +|クラス|説明| +|---------|--------| +||読み込みが完了した割合など、コンテンツの非同期読み込みに関する情報を含んでいます。| +||追加データを必要としない単純なイベントに関する情報を含んでいます。| +||ある要素から別の要素への入力フォーカスの変化に関する情報を含んでいます。 この種類のイベントは、プロバイダーではなく、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] システムによって発生します。| +||要素のプロパティ値またはコントロール パターンの変更に関する情報を含んでいます。| +||[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの変更に関する情報を含んでいます。| +||ウィンドウ クローズに関する情報を含んでいます。| + + すべてのイベント引数クラスには、 メンバーが含まれます。 この識別子は にカプセル化されます。 + + イベントを識別するために使用する オブジェクトは、 およびコントロール パターン識別子クラス \( など\) のフィールドからプロバイダーによって取得されます。 等価のフィールドが、 およびコントロール パターン クラス \( など\) のフィールドからクライアント アプリケーションによって取得されます。 + + イベント識別子の一覧については、「[UI Automation Events for Clients](../../../docs/framework/ui-automation/ui-automation-events-for-clients.md)」を参照してください。 + +## 参照 + [UI Automation Events for Clients](../../../docs/framework/ui-automation/ui-automation-events-for-clients.md) + [Server\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md) + [Subscribe to UI Automation Events](../../../docs/framework/ui-automation/subscribe-to-ui-automation-events.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-overview.md b/docs/framework/ui-automation/ui-automation-overview.md new file mode 100644 index 00000000000..b122db2c5c5 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-overview.md @@ -0,0 +1,89 @@ +--- +title: "UI Automation Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, overview" + - "user interface, see UI" + - "accessibility, UI automation" +ms.assetid: 65847654-9994-4a9e-b36d-2dd5d998770b +caps.latest.revision: 35 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 35 +--- +# UI Automation Overview +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]は、[!INCLUDE[TLA#tla_win](../../../includes/tlasharptla-win-md.md)] をサポートするすべてのオペレーティング システムで利用可能な、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)] の新しいアクセシビリティ フレームワークです。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]は、デスクトップ上のほとんどの [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] 要素へのプログラムによるアクセスを提供し、スクリーン リーダーなどの補助技術製品が [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] に関する情報をエンド ユーザーに提供したり、標準入力方式以外の方法で [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] を操作したりできるようにします。 また、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]は、自動テスト スクリプトが [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] と対話できるようにします。 + +> [!NOTE] +> [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]では、**\[別のユーザーとして実行\]** コマンドを使用して別々のユーザーが開始したプロセス間の通信を行うことはできません。 + + UI オートメーション クライアント アプリケーションを作成すると、そのアプリケーションは、複数のフレームワーク上で動作することが保証されます。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コアは、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] のさまざまな部分の基になるフレームワークのあらゆる差異をマスクします。 たとえば、`Content` のボタンの [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] プロパティ、`Caption` のボタンの [!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] プロパティ、および HTML イメージの `ALT` プロパティは、 ビュー内では、すべて単一のプロパティ、つまり [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] にマップされます。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の完全な機能は、[!INCLUDE[TLA#tla_longhorn](../../../includes/tlasharptla-longhorn-md.md)]、[!INCLUDE[TLA#tla_winxp](../../../includes/tlasharptla-winxp-md.md)]、および [!INCLUDE[TLA2#tla_winnetsvrfam](../../../includes/tla2sharptla-winnetsvrfam-md.md)] で利用できます。 + + UI オートメーション プロバイダーは、組み込みのブリッジ サービスを通じて、[!INCLUDE[TLA#tla_aa](../../../includes/tlasharptla-aa-md.md)] クライアント アプリケーションを一部サポートします。 + + +## プロバイダーおよびクライアント + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]には、次の表に示す 4 つの主要なコンポーネントがあります。 + +|コンポーネント|説明| +|-------------|--------| +|プロバイダー [!INCLUDE[TLA#tla_api](../../../includes/tlasharptla-api-md.md)] \(UIAutomationProvider.dll および UIAutomationTypes.dll\)|UI オートメーション プロバイダーによって実装されるインターフェイス定義のセット。[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素に関する情報を提供し、プログラムによる入力に応答するオブジェクトです。| +|クライアント API \(UIAutomationClient.dll および UIAutomationTypes.dll\)|UI オートメーション クライアント アプリケーションが、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] に関する情報を取得し、コントロールに入力を送信することを可能にする、各種マネージ コードのセット。| +|UiAutomationCore.dll|プロバイダーとクライアントの間の通信を処理する、基になるコード \([!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コアとも呼ばれます\)。| +|UIAutomationClientsideProviders.dll|従来の標準コントロールに使用する UI オートメーション プロバイダーのセット。 \([!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] コントロールは [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]をネイティブにサポートします\)。 このサポートは、クライアント アプリケーションに対して自動的に有効になります。| + + ソフトウェア開発者の観点からは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を使用するには、カスタム コントロール用のサポートを作成する \(プロバイダー API を使用\) か、または [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コアを使用して [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素と通信するアプリケーションを作成する \(クライアント API を使用\)、という 2 つの方法があります。 主要な目的に応じて、ドキュメントの該当箇所を参照してください。 次の各セクションでは、概念の詳細と、実際的な方法について説明します。 + +|セクション|主題|対象ユーザー| +|-----------|--------|------------| +|[UI Automation Fundamentals](../../../docs/framework/ui-automation/index.md) \(このセクション\)|概念についての広範な概要。|すべて。| +|[UI Automation Providers for Managed Code](../../../docs/framework/ui-automation/ui-automation-providers-for-managed-code.md)|プロバイダー API を使用する際に役立つ概要と「方法」トピック。|コントロールの開発者。| +|[UI Automation Clients for Managed Code](../../../docs/framework/ui-automation/ui-automation-clients-for-managed-code.md)|クライアント API を使用する際に役立つ概要と「方法」トピック。|クライアント アプリケーションの開発者。| +|[UI Automation Control Patterns](../../../docs/framework/ui-automation/ui-automation-control-patterns.md)|コントロール パターンをプロバイダーで実装する方法と、クライアントで使用可能な機能に関する情報。|すべて。| +|[UI Automation Text Pattern](../../../docs/framework/ui-automation/ui-automation-text-pattern.md)|Text コントロール パターンをプロバイダーで実装する方法と、クライアントで使用可能な機能に関する情報。|すべて。| +|[UI Automation Control Types](../../../docs/framework/ui-automation/ui-automation-control-types.md)|さまざまなコントロール型でサポートされるプロパティとコントロール パターンに関する情報。|すべて。| + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の名前空間、それらの名前空間を含む DLL、およびそれらを使用する対象ユーザーを次の表に示します。 + +|名前空間|参照される DLL|対象ユーザー| +|----------|---------------|------------| +||UIAutomationClientUIAutomationTypes|UI オートメーション クライアントの開発者。 オブジェクトの検索、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントの登録、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のコントロール パターンの利用の際に使用します。| +||UIAutomationProviderUIAutomationTypes|[!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] 以外のフレームワークの UI オートメーション プロバイダーの開発者。| +||UIAutomationClientUIAutomationTypes|[!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] 以外のフレームワークで使用する UI オートメーション プロバイダーの開発者が、TextPattern コントロール パターンを実装する際に使用します。| +||PresentationFramework|[!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] で使用する UI オートメーション プロバイダーの開発者。| + + +## UI オートメーション モデル + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]は、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] のすべての部分を、クライアント アプリケーションに対して、 として公開します。 各要素は、デスクトップをルート要素とするツリー構造に格納されます。 クライアントでは、ツリーの未加工ビューを、コントロール ビューまたはコンテンツ ビューとしてフィルター処理できます。 アプリケーションでは、カスタム ビューを作成することもできます。 + + オブジェクトは、それらが表す [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素の一般的なプロパティを公開します。 これらのプロパティの 1 つにコントロール型があります。これは、その基本的な外観と機能を認識可能な単一のエンティティとして定義するもので、ボタンやチェック ボックスなどがその例です。 + + また、各要素は、そのコントロール型に固有のプロパティを提供するコントロール パターンも公開します。 コントロール パターンは、クライアントが要素に関するより詳細な情報を取得し、入力を提供できるようにするメソッドも公開します。 + +> [!NOTE] +> コントロール型とコントロール パターンの間には、1 対 1 の対応はありせん。 1 つのコントロール パターンが複数のコントロール型でサポートされる場合もありますし、1 つのコントロールが複数のコントロール パターンをサポートし、各パターンがそのコントロールの動作の異なる側面を公開する場合もあります。 たとえば、1 つのコンボ ボックスは、少なくとも 2 つのコントロール パターンを持ちます。1 つは、それを展開して折りたたむ機能を表し、もう 1 つは、選択機構を表します。 詳しくは、「[UI Automation Control Types](../../../docs/framework/ui-automation/ui-automation-control-types.md)」をご覧ください。 + + また、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]は、クライアント アプリケーションにイベントを通じて情報を提供します。[!INCLUDE[TLA2#tla_winevents](../../../includes/tla2sharptla-winevents-md.md)] とは異なり、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のイベントは、ブロードキャスト機構に基づいていません。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]のクライアントは、特定のイベント通知を登録し、特定の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティとコントロール パターン情報を自身のイベント ハンドラーに渡すように要求することができます。 また、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントには、原因となった要素への参照が含まれています。 プロバイダーはイベントを選択的に発生させることによってパフォーマンスを向上させることができますが、クライアントがリッスンしているかどうかによって異なります + +## 参照 + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI Automation Properties Overview](../../../docs/framework/ui-automation/ui-automation-properties-overview.md) + [UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md) + [UI Automation Security Overview](../../../docs/framework/ui-automation/ui-automation-security-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-properties-for-clients.md b/docs/framework/ui-automation/ui-automation-properties-for-clients.md new file mode 100644 index 00000000000..6f089eb168a --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-properties-for-clients.md @@ -0,0 +1,113 @@ +--- +title: "UI Automation Properties for Clients | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "properties, UI Automation clients" + - "UI Automation, client properties" +ms.assetid: 255905af-0b17-485c-93d4-8a2db2a6524b +caps.latest.revision: 17 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 17 +--- +# UI Automation Properties for Clients +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、UI オートメーション クライアント アプリケーションに公開される [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティについて説明します。 + + オブジェクトのプロパティには、[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] 要素 \(通常はコントロール\) に関する情報が含まれます。 のプロパティは汎用的なもので、コントロール型に固有ではありません。 これらのプロパティの多くは、 構造体で公開されます。 + + また、コントロール パターンもプロパティを持ちます。 コントロール パターンのプロパティは、パターンに固有です。 たとえば、 に含まれるプロパティを使用すると、ウィンドウを垂直方向または水平方向のどちらにスクロールできるのかや、現在のビュー サイズおよびスクロール位置をクライアント アプリケーションで検出できます。 コントロール パターンは、そのすべてのプロパティを構造体 \( など\) を介して公開します。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティは読み取り専用です。 コントロールのプロパティを設定するには、適切なコントロール パターンのメソッドを使用する必要があります。 たとえば、スクロール ウィンドウの位置の値を変更する場合は、 を使用します。 + + パフォーマンスを向上させるために、 オブジェクトを取得したときに、コントロールおよびコントロール パターンのプロパティ値をキャッシュできます。 詳細については、「[Caching in UI Automation Clients](../../../docs/framework/ui-automation/caching-in-ui-automation-clients.md)」を参照してください。 + + +## プロパティ ID + プロパティ [!INCLUDE[TLA#tla_id#plural](../../../includes/tlasharptla-idsharpplural-md.md)] は、 オブジェクトにカプセル化される一意の定数値です。 UI オートメーション クライアント アプリケーションは、これらの [!INCLUDE[TLA2#tla_id#plural](../../../includes/tla2sharptla-idsharpplural-md.md)] を クラスまたは適切なコントロール パターン クラス \( など\) から取得します。 UI オートメーション プロバイダーは、 またはコントロール パターン識別子クラスの 1 つ \( など\) からこれらを取得します。 + + の数値 は、 メソッドで照会するプロパティを識別するために、プロバイダーによって使用されます。 通常、クライアント アプリケーションで を調べる必要はありません。 は、デバッグと診断の目的のみに使用されます。 + + +## プロパティ条件 + プロパティ [!INCLUDE[TLA2#tla_id#plural](../../../includes/tla2sharptla-idsharpplural-md.md)] は、 オブジェクトの検出に使用する オブジェクトを構築する際に使用されます。 たとえば、特定の名前を持つ を検出したい場合や、すべての有効なコントロールを検出したい場合があります。 各 では、 識別子と、そのプロパティが一致する必要がある値を指定します。 + + 詳細については、次のリファレンス トピックを参照してください。 + +- + +- + +- + + +## プロパティの取得 + のいくつかのプロパティと、コントロール パターン クラスのすべてのプロパティは、 またはコントロール パターン オブジェクトの、`Current` プロパティまたは `Cached` プロパティの入れ子になったプロパティとして公開されます。 + + また、 または の構造体にはないプロパティを含む、任意の またはコントロール パターン プロパティは、次のいずれかのメソッドを使用して取得できます。 + +- + +- + + これらのメソッドを使用すると、パフォーマンスがわずかながら向上すると共に、すべてのプロパティにアクセスできます。 + + のプロパティを取得する 2 とおりの方法を次のコード例で示します。 + + [!code-csharp[UIAClient_snip#121](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#121)] + [!code-vb[UIAClient_snip#121](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#121)] + + でサポートされるコントロール パターンのプロパティを取得する場合は、コントロール パターン オブジェクトを取得する必要はありません。 単にパターン プロパティ識別子の 1 つをメソッドに渡します。 + + コントロール パターンのプロパティを取得する 2 とおりの方法を次のコード例で示します。 + + [!code-csharp[UIAClient_snip#122](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#122)] + [!code-vb[UIAClient_snip#122](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#122)] + + `Get` メソッドは を返します。 アプリケーションは、この値を使用する前に、返されたオブジェクトを適切な型にキャストする必要があります。 + + +## 既定のプロパティ値 + UI オートメーション プロバイダーがプロパティを実装していない場合、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] システムは既定値を提供できます。 たとえば、コントロールのプロバイダーが によって識別されたプロパティをサポートしていない場合、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は空の文字列を返します。 同様に、プロバイダーが によって識別されたプロパティをサポートしていない場合、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は `false` を返します。 + + この動作は、 のメソッド オーバーロードを使用して変更できます。 2 番目のパラメーターとして `true` を指定した場合、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は既定値を返さず、代わりに特殊な値 を返します。 + + 次のコード例は、要素からプロパティを取得することを試みています。プロパティがサポートされていない場合は、代わりにアプリケーション定義の値が使用されます。 + + [!code-csharp[UIAClient_snip#123](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#123)] + [!code-vb[UIAClient_snip#123](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#123)] + + 要素によってサポートされているプロパティを調べるためには、 を使用します。 これにより、 識別子の配列が返されます。 + + +## プロパティ変更イベント + またはコントロール パターンのプロパティ値が変化すると、イベントが発生します。 アプリケーションは、 を呼び出し、目的のプロパティを指定するために最後のパラメーターとして 識別子の配列を提供して、このようなイベントをサブスクライブできます。 + + では、イベント引数の メンバーを調べることによって、変更されたプロパティを識別できます。 また、引数には、変更された [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの古い値と新しい値も含まれています。 これらの値は 型であり、使用する前に正しい型にキャストする必要があります。 + + +## その他の AutomationElement プロパティ + プロパティおよび プロパティの構造体に加えて、 には、単純なプロパティ アクセサーを介して取得される次のプロパティがあります。 + +|プロパティ|説明| +|-----------|--------| +||キャッシュ内にある子 オブジェクトのコレクション。| +||キャッシュ内にある 親オブジェクト。| +||\(静的なプロパティ\) 入力フォーカスがある 。| +||\(静的プロパティ\) ルート 。| + +## 参照 + [Caching in UI Automation Clients](../../../docs/framework/ui-automation/caching-in-ui-automation-clients.md) + [Server\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md) + [Subscribe to UI Automation Events](../../../docs/framework/ui-automation/subscribe-to-ui-automation-events.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-properties-overview.md b/docs/framework/ui-automation/ui-automation-properties-overview.md new file mode 100644 index 00000000000..40e1859d9ae --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-properties-overview.md @@ -0,0 +1,175 @@ +--- +title: "UI Automation Properties Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, properties" + - "properties, UI Automation" +ms.assetid: a6c31d7b-b33e-49b3-b5c1-31a345f9b7c8 +caps.latest.revision: 17 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 17 +--- +# UI Automation Properties Overview +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + UI オートメーション プロバイダーは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] 要素のプロパティを公開します。 これらのプロパティにより、UI オートメーション クライアント アプリケーションは、静的データと動的データを含め、[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] の構成部分 \(特にコントロール\) に関する情報を探索できます。 + + このセクションでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] プロパティの概要を説明します。 詳細については、以下のトピックで説明しています。 + +- [UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md) + +- [Server\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md) + + +## プロパティ識別子 + すべてのプロパティは、番号と名前によって識別されます。 プロパティの名前を使用するのは、デバッグおよび診断を行う場合のみです。 プロバイダーは、数値の [!INCLUDE[TLA2#tla_id#plural](../../../includes/tla2sharptla-idsharpplural-md.md)] を使用して、着信プロパティ要求を識別します。 ただし、クライアント アプリケーションは、番号と名前をカプセル化した だけを使用して、取得したいプロパティを識別します。 + + 特定のプロパティを表す オブジェクトは、さまざまなクラスでフィールドとして使用できます。 セキュリティ上の理由から、UI オートメーション プロバイダーは、Uiautomationtypes.dll に含まれている別のクラスのセットから、これらのオブジェクトを取得します。 + + 次の表に、 [!INCLUDE[TLA2#tla_id#plural](../../../includes/tla2sharptla-idsharpplural-md.md)] を格納するクラス別にプロパティを分類します。 + +|プロパティの種類|クライアントが ID を取得する場所|プロバイダーが ID を取得する場所| +|--------------|------------------------|------------------------| +|すべての要素に共通のプロパティ \(下記の表を参照\)||| +|ドッキング ウィンドウの位置||| +|展開または折りたたみが可能な要素の状態||| +|グリッド内の項目のプロパティ||| +|グリッドのプロパティ||| +|複数のビューを持つ要素の現在のサポートされているビュー||| +|一定の値の範囲を移動する要素 \(スライダーなど\) のプロパティ||| +|スクロール ウィンドウのプロパティ||| +|選択できる項目 \(リスト内の項目など\) の状態およびコンテナー||| +|選択項目を含むコントロールのプロパティ||| +|テーブル内の項目の列と行のヘッダー||| +|テーブルの列と行のヘッダーおよびテーブルの向き||| +|切り替えコントロールの状態||| +|移動、回転、またはサイズ変更できる要素の機能||| +|値を持つ要素の値および読み取り\/書き込み機能||| +|ウィンドウの機能および状態||| + + +## カテゴリ別プロパティ + 次の表に、 および に [!INCLUDE[TLA2#tla_id#plural](../../../includes/tla2sharptla-idsharpplural-md.md)] があるプロパティを分類します。 これらのプロパティは、すべてのコントロールに共通です。 一部の例外を除き、ほとんどのプロパティがプロバイダー アプリケーションの有効期間にわたって静的です。動的プロパティのほとんどは、コントロール パターンに関連付けられています。 + + **「プロパティ アクセス」**列には、 だけでなく、各プロパティのすべてのアクセサーを示しています。 クライアント アプリケーションでプロパティを取得する方法の詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +> [!NOTE] +> 各プロパティの詳細については、**「プロパティ アクセス」**列のリンク先を参照してください。 + +### 表示特性 + +|プロパティの識別子|プロパティ アクセス| +|---------------|----------------| +||| +||適用なし| +||| +||| +||| + +### 要素型 + +|プロパティの識別子|プロパティ アクセス| +|---------------|----------------| +||| +||| +||| +||| +||| + +### 識別 + +|プロパティの識別子|プロパティ アクセス| +|---------------|----------------| +||| +||| +||| +||| +||| +||| +||| +||| + +### 相互作用 + +|プロパティの識別子|プロパティ アクセス| +|---------------|----------------| +||| +||| +||| +||| +||| +||| + +### パターンのサポート + +|プロパティの識別子|プロパティ アクセス| +|---------------|----------------| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| + +### その他の指定 + +|プロパティの識別子|プロパティ アクセス| +|---------------|----------------| +||| +||| +||| + + +## ローカリゼーション + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロバイダーは、以下のプロパティをオペレーティング システムの言語で提示する必要があります。 + +- + +- + +- + +- + +- + + +## プロパティおよびイベント + プロパティ変更イベントの概念は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティと密接に関連しています。 動的プロパティの場合は、プロパティの値が変更されたときにキャッシュの情報を更新したり新しい情報に何らかの形で対応したりできるように、クライアント アプリケーションは、プロパティの値が変更されたことを認識できなければなりません。 + + [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] で何らかの変更が発生すると、プロバイダーはイベントを生成します。 たとえば、チェック ボックスのオン\/オフが切り替えられると、プロバイダーの Toggle パターンの実装によって、プロパティ変更イベントが生成されます。 プロバイダーは、クライアントがイベントをリッスンしているのか、特定のイベントをリッスンしているのかに応じて、イベントを選択的に生成できます。 + + すべてのプロパティ変更がイベントを生成するわけではありません。これは完全に、該当する要素の UI オートメーション プロバイダーの実装に依存します。 たとえば、リスト ボックスの標準プロキシ プロバイダーは、 が変更されてもイベントを生成しません。 この場合、アプリケーションが をリッスンする必要があります。 + + クライアントは、イベントをサブスクライブすることでイベントをリッスンします。 イベントをサブスクライブすることは、イベントを処理できるデリゲート メソッドを作成し、それらのメソッドで処理する特定のイベントと共に、それらのメソッドを [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] に渡すことを意味します。 特にプロパティ変更イベントについては、クライアントが を実装する必要があります。 + +## 参照 + [Caching in UI Automation Clients](../../../docs/framework/ui-automation/caching-in-ui-automation-clients.md) + [UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md) + [Server\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md) + [Find a UI Automation Element Based on a Property Condition](../../../docs/framework/ui-automation/find-a-ui-automation-element-based-on-a-property-condition.md) + [Return Properties from a UI Automation Provider](../../../docs/framework/ui-automation/return-properties-from-a-ui-automation-provider.md) + [Raise Events from a UI Automation Provider](../../../docs/framework/ui-automation/raise-events-from-a-ui-automation-provider.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-providers-for-managed-code-how-to-topics.md b/docs/framework/ui-automation/ui-automation-providers-for-managed-code-how-to-topics.md new file mode 100644 index 00000000000..bc766fabd75 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-providers-for-managed-code-how-to-topics.md @@ -0,0 +1,38 @@ +--- +title: "UI Automation Providers for Managed Code How-to Topics | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "UI Automation, providers" + - "UI Automation, custom user interface (UI) elements" + - "providers, UI Automation" +ms.assetid: 88bc4212-3f4e-4bac-bae0-faef31944b71 +caps.latest.revision: 60 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 60 +--- +# UI Automation Providers for Managed Code How-to Topics +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このセクションには、[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] 要素の [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] プロバイダーを作成する場合のタスクを示すコード例が含まれています。 + +## このセクションの内容 + [Expose a Server\-side UI Automation Provider](../../../docs/framework/ui-automation/expose-a-server-side-ui-automation-provider.md) + [Return Properties from a UI Automation Provider](../../../docs/framework/ui-automation/return-properties-from-a-ui-automation-provider.md) + [Raise Events from a UI Automation Provider](../../../docs/framework/ui-automation/raise-events-from-a-ui-automation-provider.md) + [Enable Navigation in a UI Automation Fragment Provider](../../../docs/framework/ui-automation/enable-navigation-in-a-ui-automation-fragment-provider.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [Create a Client\-Side UI Automation Provider](../../../docs/framework/ui-automation/create-a-client-side-ui-automation-provider.md) + [Implement UI Automation Providers in a Client Application](../../../docs/framework/ui-automation/implement-ui-automation-providers-in-a-client-application.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-providers-for-managed-code.md b/docs/framework/ui-automation/ui-automation-providers-for-managed-code.md new file mode 100644 index 00000000000..d7e54fbccf9 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-providers-for-managed-code.md @@ -0,0 +1,35 @@ +--- +title: "UI Automation Providers for Managed Code | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "UI Automation, providers" + - "UI Automation, custom user interface (UI) elements" + - "providers, UI Automation" +ms.assetid: 5f82f731-f1b5-4c8b-b47c-d11279a02574 +caps.latest.revision: 58 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 58 +--- +# UI Automation Providers for Managed Code +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このセクションには、カスタム [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] 要素の [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] プロバイダーの作成に関する概要と方法のトピックが含まれています。 + +## このセクションの内容 + [Server\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md) + [UI Automation Providers Overview](../../../docs/framework/ui-automation/ui-automation-providers-overview.md) + [Client\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/client-side-ui-automation-provider-implementation.md) + [How\-to Topics](../../../docs/framework/ui-automation/ui-automation-providers-for-managed-code-how-to-topics.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-providers-overview.md b/docs/framework/ui-automation/ui-automation-providers-overview.md new file mode 100644 index 00000000000..1f8c6af7287 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-providers-overview.md @@ -0,0 +1,87 @@ +--- +title: "UI Automation Providers Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, providers" + - "providers, UI Automation" +ms.assetid: 859557b8-51e1-4d15-92e8-318d2dcdb2f7 +caps.latest.revision: 38 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 38 +--- +# UI Automation Providers Overview +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + UI オートメーション プロバイダーを使用すれば、コントロールで UI オートメーション クライアント アプリケーションと通信することができます。 一般に、各コントロールまたは [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] 内のその他の要素はプロバイダーによって表現されます。 プロバイダーは、要素に関する情報を公開し、必要に応じて、クライアント アプリケーションがコントロールと対話できるようにするコントロール パターンを実装します。 + + 通常、クライアント アプリケーションはプロバイダーと直接連動する必要はありません。[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)]、または [!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)] フレームワークを使用するアプリケーション内の標準コントロールのほとんどが自動的に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] システムに公開されます。 カスタム コントロールを実装するアプリケーションがそれらのコントロール用の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロバイダーを実装することもできます。クライアント アプリケーションがそれらにアクセスするために特別な手順を実行する必要はありません。 + + このトピックでは、コントロールの開発者が [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] と [!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] のウィンドウのコントロール専用に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロバイダーを実装する方法について説明します。 + + +## プロバイダーの種類 + UI オートメーション プロバイダーは、クライアント側プロバイダーとサーバー側プロバイダーの 2 つのカテゴリに分類されます。 + +### クライアント側プロバイダー + クライアント側プロバイダーは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] をサポートしていないか部分的にサポートしているアプリケーションと通信する UI オートメーション クライアントによって実装されます。 通常、クライアント側プロバイダーは [!INCLUDE[TLA2#tla_win](../../../includes/tla2sharptla-win-md.md)] メッセージを送受信することによって、プロセス境界を越えてサーバーと通信します。 + + [!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)]、[!INCLUDE[TLA2#tla_winforms](../../../includes/tla2sharptla-winforms-md.md)]、または [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] アプリケーション内のコントロール用の UI オートメーション プロバイダーはオペレーティング システムの一部として供給されるため、ほとんどのクライアント アプリケーションが独自のプロバイダーを実装する必要がなく、この概要ではそれについてこれ以上説明しません。 + +### サーバー側プロバイダー + サーバー側プロバイダーは、[!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)]、[!INCLUDE[TLA2#tla_winforms](../../../includes/tla2sharptla-winforms-md.md)]、または [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] 以外の UI フレームワークに基づくカスタム コントロールまたはアプリケーションによって実装されます。 + + また、サーバー側プロバイダーは、サーバーからクライアントに要求するインターフェイスを [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コア システムに公開することにより、プロセス境界を越えてクライアント アプリケーションと通信します。 + + +## UI オートメーション プロバイダーの概念 + ここでは、UI オートメーション プロバイダーを実装するために理解しておく必要があるいくつかの重要な概念について簡単に説明します。 + +### Elements + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要素は、UI オートメーション クライアントからアクセス可能な [!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] の一部です。 例として、アプリケーション ウィンドウ、ペイン、ボタン、ツールヒント、リスト ボックス、およびリスト項目が含まれています。 + +### ナビゲーション + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要素は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーとしてクライアントに公開されます。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は、要素間を移動することによって、ツリーを構成します。 ナビゲーションは、親、兄弟、または子を指す要素ごとに、プロバイダーによって有効にされます。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのクライアント ビューの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +### ビュー + 次の表に示すように、クライアントは 3 つのプリンシパル ビューで [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーを表示できます。 + +||| +|-|-| +|列ビュー|すべての要素が含まれます。| +|コントロール ビュー|コントロールである要素が含まれます。| +|コンテンツ ビュー|コンテンツである要素が含まれます。| + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのクライアント ビューの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + + コンテンツ要素またはコントロール要素としての要素の定義はプロバイダー実装で行う必要があります。 コントロール要素はコンテンツ要素であることもないこともありますが、コンテンツ要素はすべてコントロール要素です。 + +### フレームワーク + フレームワークは、画面のある領域で子コントロール、ヒット テスト、およびレンダリングを管理するコンポーネントです。 たとえば、HWND とも呼ばれる [!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] ウィンドウは、メニュー バー、ステータス バー、ボタンなどの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要素が複数含まれるフレームワークとして機能することができます。 + + リスト ボックスやツリー ビューなどの [!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] コンテナー コントロールは、子項目をレンダリングしたり、それらに対してヒット テストを実行したりするための独自のコードが含まれているため、フレームワークと見なされます。 これに対して、[!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] リスト ボックスは、包含する [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] ウィンドウによってレンダリングやヒット テストが処理されるため、フレームワークではありません。 + + アプリケーション内の [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] はさまざまなフレームワークで構成することができます。 たとえば、HWND アプリケーション ウィンドウには、HWND 内のコンボ ボックスなどのコンポーネントを含む [!INCLUDE[TLA#tla_dhtml](../../../includes/tlasharptla-dhtml-md.md)] を含めることができます。 + +### フラグメント + フラグメントは、特定のフレームワーク内の要素のサブツリー全体です。 サブツリーのルート ノードにある要素はフラグメント ルートと呼ばれます。 フラグメント ルートは、親がありませんが、他の何らかのフレームワーク \(通常は [!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] ウィンドウ \(HWND\)\) 内でホストされます。 + +### ホスト + すべてのフラグメントのルート ノードは、1 つの要素 \(通常は [!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] ウィンドウ \(HWND\)\) 内でホストする必要があります。 例外は、他の要素でホストされないデスクトップです。 カスタム コントロールのホストは、アプリケーション ウィンドウやトップ レベル コントロールのグループを含めることができるその他のウィンドウではなく、コントロール自体の HWND です。 + + フラグメントのホストは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サービスを提供するうえで重要な役割を果たします。 このホストがフラグメント ルートへの移動を可能にし、いくつかの既定のプロパティを提供するため、カスタム プロバイダーはそれらを実装する必要がありません。 + +## 参照 + [Server\-Side UI Automation Provider Implementation](../../../docs/framework/ui-automation/server-side-ui-automation-provider-implementation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-security-overview.md b/docs/framework/ui-automation/ui-automation-security-overview.md new file mode 100644 index 00000000000..42c0a2eb6f9 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-security-overview.md @@ -0,0 +1,68 @@ +--- +title: "UI Automation Security Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, security model" + - "security model, UI Automation" +ms.assetid: 1d853695-973c-48ae-b382-4132ae702805 +caps.latest.revision: 23 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 23 +--- +# UI Automation Security Overview +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + この概要では、[!INCLUDE[TLA#tla_winvista](../../../includes/tlasharptla-winvista-md.md)] における [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] のセキュリティ モデルについて説明します。 + + +## ユーザー アカウント制御 + セキュリティは [!INCLUDE[TLA#tla_winvista](../../../includes/tlasharptla-winvista-md.md)] の重要点であり、とりわけ顕著な革新として、より高い特権が必要なアプリケーションとサービスの実行を必ずしもブロックされずに、\(管理者以外の\) 標準ユーザーとして実行する能力が挙げられます。 + + [!INCLUDE[TLA2#tla_winvista](../../../includes/tla2sharptla-winvista-md.md)] では、ほとんどのアプリケーションに、標準トークンまたは管理トークンのいずれかが付属しています。 アプリケーションが管理アプリケーションとして識別できない場合は、既定で標準のアプリケーションとして起動されます。 管理アプリケーションとして識別されたアプリケーションが起動される前に、[!INCLUDE[TLA2#tla_winvista](../../../includes/tla2sharptla-winvista-md.md)] は、昇格された権限でアプリケーションを実行することへの同意をユーザーに求めるメッセージを表示します。 ユーザーがローカル管理者グループのメンバーである場合でも、同意を求めるメッセージは既定で表示されます。これは、管理者の資格情報を必要とするアプリケーションまたはシステム コンポーネントが実行の許可を要求するまで、管理者は標準ユーザーとして実行するためです。 + + +## より高い特権が必要なタスク + 管理者特権が必要なタスクをユーザーが実行しようとする場合、[!INCLUDE[TLA2#tla_winvista](../../../includes/tla2sharptla-winvista-md.md)] はユーザーに続行に同意するかを確認するダイアログ ボックスを表示します。 このダイアログ ボックスは、悪意のあるソフトウェアがユーザー入力をシミュレートできないように、プロセス間通信から保護されます。 同様に、デスクトップのログオン画面は、通常は他のプロセスからはアクセスできません。 + + UI オートメーション クライアントは、他のプロセスと通信する必要があります。プロセスによっては、より高い特権レベルで実行している可能性があります。 クライアントにも、通常は他のプロセスによって表示できないシステム ダイアログ ボックスへのアクセスが必要になる可能性があります。 そのため、 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クライアントはシステムによって信頼されている必要があり、特別な特権で実行する必要があります。 + + より高い権限レベルで実行されているアプリケーションと通信する信頼を得るためには、アプリケーションに署名する必要があります。 + + +## マニフェスト ファイル + 保護されたシステム [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] にアクセスするためには、マニフェスト ファイル内に特別な属性が含まれるマニフェスト ファイルを使ってアプリケーションをビルドする必要があります。 次のように、この `uiAccess` 属性は `requestedExecutionLevel` タグに含まれます。 + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + このコードの `level` 属性の値は一例にすぎません。 + + 既定では `UIAccess` は "false" です。つまり、属性を省略した場合、またはアセンブリのマニフェストが存在しない場合、アプリケーションは保護された [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] にアクセスできなくなります。 + + [!INCLUDE[TLA#tla_longhorn2](../../../includes/tlasharptla-longhorn2-md.md)] セキュリティ、アプリケーションの署名、およびアセンブリ マニフェストの作成の詳細については、[MSDN](http://msdn.microsoft.com/library/default.asp?url=/library/dnlong/html/AccProtVista.asp) の「最小限の特権環境での開発者向けアプリケーションのベスト プラクティスとガイドライン」を参照してください。 \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-specification-and-community-promise.md b/docs/framework/ui-automation/ui-automation-specification-and-community-promise.md new file mode 100644 index 00000000000..cac95c6a334 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-specification-and-community-promise.md @@ -0,0 +1,24 @@ +--- +title: "UI Automation Specification and Community Promise | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b238fd69-2f62-499c-bea0-b91dfb9204f0 +caps.latest.revision: 5 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 5 +--- +# UI Automation Specification and Community Promise +UI オートメーションは、デスクトップ上のほとんどのユーザー インターフェイス \(UI\) 要素へのプログラムによるアクセスを提供し、スクリーン リーダーなどの支援技術製品が UI に関する情報をエンド ユーザーに提供したり、標準の入力方式以外の方法で UI を操作したりできるようにします。 + +## 参照 + [UI Automation Specification \(UI オートメーション仕様\)](http://go.microsoft.com/fwlink/?LinkId=108541) + [UI Automation Community Promise \(UI Automation Community Promise\)](http://go.microsoft.com/fwlink/?LinkId=108542) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-standard-controls.md b/docs/framework/ui-automation/ui-automation-support-for-standard-controls.md new file mode 100644 index 00000000000..e75d306b72d --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-standard-controls.md @@ -0,0 +1,178 @@ +--- +title: "UI Automation Support for Standard Controls | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "controls, UI Automation support for" + - "UI Automation, support for standard controls" +ms.assetid: 3770ea8a-2655-4add-9c59-fe0610ad5084 +caps.latest.revision: 11 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 10 +--- +# UI Automation Support for Standard Controls +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、[!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、および [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] フレームワーク向けに開発されたアプリケーションの標準コントロールに対する [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] サポートについて説明します。 + + +## Windows Presentation Foundation コントロール + ユーザー操作に関する情報やサポートを提供するすべての [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] コントロール要素は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] を全面的にネイティブ サポートしています。 パネルなどのその他の要素は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] からは認識できません。 + + +## Win32 コントロール + ほとんどの [!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] コントロールは、UIAutomationClientsideProviders.dll のクライアント側プロバイダーによって [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] に公開されています。 このアセンブリは、UI オートメーション クライアント アプリケーションで使用するために、自動的に登録されます。 + + 完全なサポートは、ComCtrl32.dll のバージョン 6 \([!INCLUDE[TLA#tla_winxp](../../../includes/tlasharptla-winxp-md.md)] 以降で使用可能\) のコントロールに対してのみ提供されています。 + + 次のコントロールがサポートされています。 + +|クラス名|コントロール型| +|----------|-------------| +|ボタン|ボタン| +|ボタン|RadioButton| +|ボタン|グループ化| +|ボタン|CheckBox| +|ボタン|ハイパーリンク| +|ボタン|SplitButton| +|ボタン|CheckBox| +|ComboBoxEx32|ComboBox| +|ComboBox|ComboBox| +|編集|ドキュメント| +|編集|編集| +|SysLink|ハイパーリンク| +|スタティック|テキスト| +|スタティック|イメージ| +|SysIPAddress32|カスタム| +|SysHeader32|Header\/HeaderItem| +|SysListView32|DataGrid| +|SysListView32|リスト| +|ListBox|リスト| +|ListBox|ListItem| +|\#32768|メニュー| +|\#32768|MenuItem| +|msctls\_progress32|ProgressBar| +|RichEdit|ドキュメント。 注を参照。| +|RichEdit20A|ドキュメント| +|RichEdit20W|ドキュメント| +|RichEdit50W|ドキュメント| +|ScrollBar|スライダー| +|msctls\_trackbar32|スライダー| +|msctls\_updown32|Spinner| +|msctls\_statusbar32|StatusBar| +|SysTabControl32|タブ| +|SysTabControl32|TabItem| +|ToolbarWindow32|ToolBar| +|ToolbarWindow32|MenuItem| +|ToolbarWindow32|ボタン| +|ToolbarWindow32|CheckBox| +|ToolbarWindow32|RadioButton| +|ToolbarWindow32|区切り記号| +|tooltips\_class32|ヒント| +|\#32774|ヒント| +|ReBarWindow32|ツール バー| +|SysTreeView32|ツリー| +|SysTreeView32|TreeItem| + + **注** RichEdit コントロールは、[!INCLUDE[TLA#tla_winvista](../../../includes/tlasharptla-winvista-md.md)] に付属するバージョン \(RichEd20.dll バージョン 3.1 以降、および MsftEdit.dll バージョン 4.1 以降\) に対してのみサポートされます。 + + 次のコントロールはサポートされていません。 + +|クラス名|コントロールの種類| +|----------|---------------| +|SysAnimate32|イメージ| +|SysPager|Spinner| +|SysDateTimePick32|カスタム| +|SysMonthCal32|予定表| +|MS\_WINNOTE|Tooltip| +|VBBubble|Tooltip| +|ScrollBar \(スタンドアロン コントロールとして使用される場合\)|スライダー| +|SuperGrid|カスタム| + + +## Windows フォーム コントロール + [!INCLUDE[TLA2#tla_winforms](../../../includes/tla2sharptla-winforms-md.md)] コントロールは、UIAutomationClientsideProviders.dll のクライアント側プロバイダーによって [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] に公開されています。 このアセンブリは、UI オートメーション クライアント アプリケーションで使用するために、自動的に登録されます。 + + 通常、[!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] の一般的なコントロールのマネージ ラッパーである [!INCLUDE[TLA2#tla_winforms](../../../includes/tla2sharptla-winforms-md.md)] コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] によってサポートされます。 次のコントロールがサポートされています。 + +|クラス名| +|----------| +|ボタン| +|CheckBox| +|CheckedListBox| +|ColorDialog| +|ComboBox| +|FolderBrowser| +|FontDialog| +|GroupBox| +|HscrollBar| +|ImageList| +|ラベル| +|ListBox| +|ListView| +|MainMenu\/ContextMenu| +|MonthCalendar| +|NotifyIcon| +|OpenFileDialog| +|PageSetupDialog| +|PrintDialog| +|ProgressBar| +|RadioButton| +|RichTextBox| +|SaveFileDialog| +|ScrollableControl| +|SoundPlayer| +|StatusBar| +|TabControl\/TabPage| +|TextBox| +|タイマー| +|ツール バー| +|ヒント| +|TrackBar| +|TreeView| +|VscrollBar| +|Web ブラウザー| + + 次に示すコントロールは、[!INCLUDE[TLA#tla_aa](../../../includes/tlasharptla-aa-md.md)] のサポートによってのみ、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] に公開されています。 一部の機能が使用できないことがあります。 + +|コントロール名| +|-------------| +|BindingSource| +|DataGrid| +|DataGridView| +|DataNavigator| +|DomainUpDown| +|ErrorProvider| +|FlowLayoutPanel| +|フォーム| +|LinkLabel| +|HelpProvider| +|MaskedTextBox| +|MenuStrip\/ContextMenuStrip| +|NumericUpDown| +|パネル| +|PictureBox| +|PrintDocument| +|PrintPreview\-Control| +|PrintPreview\-Dialog| +|PropertyGrid| +|UserControl| +|ToolStrip| +|TableLayoutPanel| +|SplitContainer\/SplitterPanel| +|スプリッター| +|RaftingContainer| +|StatusStrip| + +## 参照 + [UI Automation Control Types](../../../docs/framework/ui-automation/ui-automation-control-types.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-button-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-button-control-type.md new file mode 100644 index 00000000000..5bb99d96e1b --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-button-control-type.md @@ -0,0 +1,88 @@ +--- +title: "UI Automation Support for the Button Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Button" + - "UI Automation, Button control type" + - "Button control type" +ms.assetid: 057c983a-da83-4c50-86c7-26fe381076a6 +caps.latest.revision: 34 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 34 +--- +# UI Automation Support for the Button Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Button コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、コントロール パターン、および [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントに関する特定のガイドラインが含まれます。 + + ボタンとは、ユーザーが操作を実行するために対話するオブジェクトのことです。その例には、ダイアログ ボックスにある **\[OK\]** ボタンや **\[キャンセル\]** ボタンなどがあります。 ボタン コントロールは、ユーザーがコマンドを完了できるよう、単一のコマンドにマップされて公開されることから、単純なコントロールです。 + + 以降のセクションで、Button コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかに関わらず、すべてのボタン コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、コントロール ビューと、ボタン コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ボタン

- イメージ \(0 個以上\)
- テキスト \(0 個以上\)|ボタン| + + +## 必須の UI オートメーション プロパティ + 次の表に、Button コントロール型を実装するコントロール \(ボタン コントロールなど\) に特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|ボタン コントロールは、通常、そのコントロールが表す操作をエンド ユーザーがキーボードから素早く実行できるように、アクセラレータ キーをサポートする必要があります。| +||「ノート」を参照。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||ボタン|この値は、すべての UI フレームワークで同じです。| +||「ノート」を参照。|ヘルプ テキストで、ボタンをアクティブにした場合の最終結果を説明できます。 これは一般に、ツールヒントに表示する情報と同じような情報です。| +||True|Button コントロールは、常にコンテンツである必要があります。| +||True|Button コントロールは、常にコントロールである必要があります。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||`Null`|ボタン コントロールは、そのコンテンツで自己ラベル付けを行います。| +||「ボタン」|Button コントロール型に対応する、ローカライズされた文字列。| +||「ノート」を参照。|ボタン コントロールの名前は、そのコントロールのラベル付けに使用されるテキストです。 ボタンのラベル付けにイメージを使用する場合は、必ずボタンの Name プロパティに代替テキストを指定する必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのボタン コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||「ノート」を参照。|すべてのボタンは、Invoke コントロール パターンまたは Toggle コントロール パターンをサポートする必要があります。 Invoke は、ボタンがユーザーの要求時にコマンドを実行する場合にサポートされます。 このコマンドは、切り取り、コピー、貼り付け、削除などの単一の操作にマップされます。| +||「ノート」を参照。|すべてのボタンは、Invoke コントロール パターンまたは Toggle コントロール パターンをサポートする必要があります。 Toggle は、ボタンが最大 3 つの一連の状態を循環できる場合にサポートされます。 通常は、特定の機能のオン\/オフの切り替えと見なされます。| +||「ノート」を参照。|ボタンが分割ボタンの子としてホストされる場合、子ボタンは Invoke または Toggle パターンの代わりに ExpandCollapse パターンをサポートすることができます。 ExpandCollapse パターンは、ボタン要素に関連付けられたメニューやその他のサブ構造を開く、または閉じるために使用できます。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのボタン コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||状況に依存|コントロールが Invoke コントロール パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールが Toggle コントロール パターンをサポートする場合は、このイベントをサポートする必要があります。| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-calendar-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-calendar-control-type.md new file mode 100644 index 00000000000..7c1ed90d941 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-calendar-control-type.md @@ -0,0 +1,96 @@ +--- +title: "UI Automation Support for the Calendar Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Calendar control type" + - "Calendar control type" + - "control types, Calendar" +ms.assetid: e91a7393-a7f9-4838-a1a6-857438b24bc9 +caps.latest.revision: 26 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 26 +--- +# UI Automation Support for the Calendar Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Calendar コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、コントロール パターン、および [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントに関する特定のガイドラインが含まれます。 + + Calendar コントロールでは、簡単に日付を指定したり、他の日付を選択したりできます。 + + 以下の各セクションで、Calendar コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の各要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべてのカレンダー コントロールに当てはまります。 + + +## 必須の UI オートメーション ツリー構造 + 次の表では、カレンダー コントロールに関連した [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|予定表

  • DataGrid

    • Header \(0 または 1\)
    • HeaderItem \(0 または 7、数量は列に表示される日数によって異なる\)
    • ListItem \(数量は表示される日数によって異なる\)
    • Button \(0 または 2、カレンダー ビューのページ移動用\)
|予定表

- ListItem \(数量は表示される日数によって異なる\)| + + Calendar コントロールは、ユーザー インターフェイスのさまざまな形式で表すことができます。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれることが保証されるコントロールは、データ グリッド、ヘッダー、ヘッダー項目、およびリスト項目のコントロールだけです。 + + +## 必須の UI オートメーション プロパティ + 次の表に、カレンダー コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照してください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照してください。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||予定表|この値は、すべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークで同じです。| +||True|カレンダー コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに常に含まれます。| +||True|カレンダー コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| +||「ノート」を参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照してください。|ドキュメント コントロールのラベル。 通常は、ドキュメントのタイトルが使用されます。| +||"カレンダー"|Calendar コントロール型に対応するローカライズされた文字列。| +||「ノート」を参照してください。|通常、カレンダー コントロールの名前は、今日の日付から取得されます。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのカレンダー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン\/パターン プロパティ|Support|ノート| +|-----------------------------|-------------|---------| +||はい|1 か月の中に含まれる日付が空間的に移動できる項目になるため、カレンダー コントロールは必ず Grid パターンをサポートします。| +||状況に依存|ほとんどのカレンダー コントロールはページごとのビューのフリッピングをサポートしています。 ページ移動をサポートするために、Scroll パターンを使用することをお勧めします。| +||状況に依存|ほとんどのカレンダー コントロールは、特定の日付、月、または年を、サブ要素の選択内容の形で保存します。 複数選択が可能なカレンダーもあれば、1 つしか選択できないカレンダーもあります。| +||はい|カレンダー コントロールには曜日のサブツリー内に常にヘッダーがあるため、Table パターンがサポートされる必要があります。| +||いいえ|カレンダー コントロールでは値を直接設定できないため、このコントロールに Value コントロール パターンは必要ありません。 特定の日付がコントロールに関連付けられている場合は、Selection コントロール パターンによって情報を提供する必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのカレンダー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll コントロール パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll コントロール パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll コントロール パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll コントロール パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll コントロール パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll コントロール パターンをサポートする場合は、このイベントをサポートする必要があります。| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-checkbox-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-checkbox-control-type.md new file mode 100644 index 00000000000..765e4e7c4cc --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-checkbox-control-type.md @@ -0,0 +1,88 @@ +--- +title: "UI Automation Support for the CheckBox Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "CheckBox control type" + - "control types, CheckBox" + - "UI Automation, CheckBox control type" +ms.assetid: 9c2a0e70-3a39-4ba9-96ea-a7fe531fae9f +caps.latest.revision: 31 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 31 +--- +# UI Automation Support for the CheckBox Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、CheckBox コントロール型の [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 これらの条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + チェック ボックスは、ユーザーが対話的にその状態を循環させることが可能な状態を示すために使用されるオブジェクトです。 チェック ボックスでは、2 項 \(はい\/いいえ\)、\(オン\/オフ\) または 3 項 \(オン\/オフ、不定\) のいずれかのオプションをユーザーに提示できます。 + + 以降のセクションで、CheckBox コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかに関わらず、すべてのチェック ボックス コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、チェック ボックス コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|CheckBox|CheckBox| + +> [!NOTE] +> チェック ボックスは、コントロールやコンテンツ ビュー内に子要素を持つことはありません。 コントロールに子要素を入れる必要があるのであれば、それは別のコントロール型を使用する必要があるということです。 + +### 必須の UI オートメーション プロパティ + 次の表に、チェック ボックス コンロトールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||ノートを参照してください。|このプロパティの値は、アプリケーション内のすべてのコントロールで一意である必要があります。| +||ノートを参照してください。|コントロール全体を格納する最も外側の四角形。| +||ノートを参照してください。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||CheckBox|この値は、すべての UI フレームワークで同じです。| +||True|このプロパティの値は、常に True にする必要があります。 つまり、チェック ボックス コントロールが常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれている必要があります。| +||True|このプロパティの値は、常に True にする必要があります。 つまり、チェック ボックス コントロールが常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれている必要があります。| +||ノートを参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||`Null`|チェック ボックスはそれ自体がラベルであるコントロールです。| +||"チェック ボックス"|CheckBox コントロール型に対応する、ローカライズされた文字列。| +||ノートを参照してください。|チェック ボックス コントロールの `Name` プロパティの値は、切り替えの状態を保持するボックスの横に表示されるテキストです。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのチェック ボックス コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||必要|チェック ボックスで、プログラムを使用して内部の状態をいつでも循環できるようにします。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのチェック ボックス コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| + + +## 既定の動作 + チェック ボックスの既定の動作では、ラジオ ボタンにフォーカスが設定されて、その現在の状態を切り替えます。 前述のように、チェック ボックスでは、2 項 \(はい\/いいえ\)、\(オン\/オフ\) または 3 項 \(オン\/オフ、不定\) のいずれかの決定項目をユーザーに提示します。 チェック ボックスが 2 項の場合、既定の動作では、「オン」の状態が「オフ」になり、「オフ」の状態が「オン」になります。 3 項のチェック ボックスで、既定の動作では、ユーザーがコントロールに連続するマウス クリックを送信した場合と同じ順序で、チェック ボックスの状態を切り替えます。 + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-combobox-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-combobox-control-type.md new file mode 100644 index 00000000000..27edf5175bb --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-combobox-control-type.md @@ -0,0 +1,89 @@ +--- +title: "UI Automation Support for the ComboBox Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Combo Box" + - "UI Automation, Combo Box control type" + - "ComboBox controls" +ms.assetid: bb321126-4770-41da-983a-67b7b89d45dd +caps.latest.revision: 23 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 23 +--- +# UI Automation Support for the ComboBox Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、ComboBox コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、コントロール パターン、および [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントに関する特定のガイドラインが含まれます。 + + コンボ ボックスは、スタティック コントロールまたは編集コントロールが組み合わせられたリスト ボックスです。コンボ ボックスのリスト ボックスの部分には、現在選択されている項目が表示されます。 コントロールのリスト ボックスの部分は常に表示されるか、ユーザーがコントロールの横にあるドロップダウン矢印 \(プッシュ ボタン\) を選択したときにのみ表示されます。 選択フィールドが編集コントロールである場合、ユーザーは、リスト ボックスに含まれていない情報を入力できます。そうでない場合、ユーザーはリスト ボックスに含まれる項目を選択することしかできません。 + + 以降のセクションで、ComboBox コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかに関わらず、すべてのコンボ ボックス コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、コンボ ボックス コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ComboBox

- エディット \(0 または 1 個\)
- リスト \(1 個\)
- リスト項目 \(リストの子。0 個以上\)
- ボタン \(1 個\)|ComboBox

- リスト項目 \(0 個以上\)| + + コンボ ボックスのコントロール ビュー内の編集コントロールは、\[実行\] ダイアログ ボックスの場合と同じく、コンボ ボックスが編集可能で任意の入力値を受け取る場合にのみ必要です。 + + +## 必須の UI オートメーション プロパティ + 次の表に、コンボ ボックス コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||ComboBox|この値は、すべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークで同じです。| +||「ノート」を参照。|コンボ ボックス コントロールのヘルプ テキストで、コンボ ボックスからオプションを選択するようにユーザーに求める理由を説明する必要があります。 テキストは、ツールヒントに表示する情報に似ています。 たとえば、「項目を選択してモニターのディスプレイ解像度を設定してください」などです。| +||True|コンボ ボックス コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに組み込まれます。| +||True|コンボ ボックス コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに組み込まれます。| +||True|コンボ ボックス コントロールは、選択コンテナーの項目のセットを公開します。 コンボ ボックス コントロールは、キーボード フォーカスを受け取ることができますが、UI オートメーション クライアントがコンボ ボックスにフォーカスを設定すると、コンボ ボックス サブツリーの項目がフォーカスを受け取る場合があります。| +||「ノート」を参照。|コンボ ボックス コントロールには、通常、このプロパティが参照する静的なテキスト ラベルがあります。| +||「コンボ ボックス」|ComboBox コントロール型に対応する、ローカライズされた文字列。| +||「ノート」を参照。|コンボ ボックス コントロールの名前は、通常、静的なテキスト コントロールから取得されます。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのコンボ ボックス コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||はい|コンボ ボックス コントロールがコンボ ボックスであるためには、必ず、ドロップダウン ボタンがなければなりません。| +||はい|コンボ ボックスで現在選択されている項目を表示します。 このサポートは、コンボ ボックスの下にあるリスト ボックスに委任されます。| +||状況に依存|コンボ ボックスが任意のテキスト値を受け取ることができる場合、Value パターンをサポートする必要があります。 このパターンでは、コンボ ボックスの文字列の内容をプログラムで設定することができます。 Value パターンがサポートされていない場合、ユーザーはコンボ ボックスのサブツリー内のリスト項目から項目を選択する必要があります。| +||Never|スクロール パターンがコンボ ボックスで直接サポートされることはありません。 コンボ ボックスに含まれるリスト ボックスをスクロールできる場合は、このパターンがサポートされます。 リスト ボックスが画面に表示されている場合にのみサポートできます。| + + +## 必須イベント + 次の表に、すべてのコンボ ボックス コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|コントロールが Value パターンをサポートする場合は、このイベントをサポートする必要があります。| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-datagrid-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-datagrid-control-type.md new file mode 100644 index 00000000000..6ae838f4c1f --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-datagrid-control-type.md @@ -0,0 +1,117 @@ +--- +title: "UI Automation Support for the DataGrid Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Data Grid control type" + - "control types, Data Grid" + - "UI Automation, Data Grid control type" +ms.assetid: a3db4a3f-feb5-4e5f-9b42-aae7fa816e8a +caps.latest.revision: 32 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 32 +--- +# UI Automation Support for the DataGrid Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、DataGrid コントロール型の [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] サポートに関する情報を提供します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが `ControlType` プロパティを使用するために満たす必要がある一連の条件のことです。 これらの条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + DataGrid コントロール型により、列で表されるメタデータを含む項目をユーザーが簡単に扱うことができます。 データ グリッド コントロールでは、項目の行と、それらの項目に関する情報の列があります。 Microsoft Vista Explorer のリスト ビュー コントロールは、DataGrid コントロール型をサポートする例です。 + + 以下の各セクションで、DataGrid コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合も、すべてのデータ グリッド コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表では、データ グリッド コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含まれる可能性のある内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コントロール ビュー|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コンテンツ ビュー| +|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| +|DataGrid

  • Header \(0、1、または 2\)

    • HeaderItem \(列または行の数\)
  • DataItem \(0 以上。階層で構造化できます\)
|DataGrid

- DataItem \(0 以上。階層で構造化できます\)| + + +## 必須の UI オートメーション プロパティ + 次の表に、データ グリッド コントロールに特に関連する値または定義を持つプロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|プロパティ|値|ノート| +|-----------|-------|---------| +||ノートを参照してください。|このプロパティの値は、アプリケーション内のすべてのコントロールで一意である必要があります。| +||ノートを参照してください。|コントロール全体を格納する最も外側の四角形。| +||ノートを参照してください。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||DataGrid|この値は、すべての UI フレームワークで同じです。| +||True|このプロパティの値は、常に True にする必要があります。 つまり、データ グリッド コントロールが常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに存在している必要があります。| +||True|このプロパティの値は、常に True にする必要があります。 つまり、データ グリッド コントロールが常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに存在している必要があります。| +||ノートを参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||ノートを参照してください。|静的なテキスト ラベルがある場合、このプロパティは対象のコントロールへの参照を公開する必要があります。| +||"データ グリッド"|DataGrid コントロール型に対応するローカライズされた文字列。| +||ノートを参照してください。|データ グリッド コントロールは、通常、静的テキスト ラベルから `Name` プロパティの列を取得します。 静的なテキスト ラベルがない場合は、アプリケーション開発者が `Name` のプロパティ値を割り当てる必要があります。`Name` プロパティの値が、編集コントロールのテキストの内容になることは決してありません。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのデータ グリッド コントロールでサポートされなければならないコントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||はい|データ グリッド コントロール自体は、メタデータを格納する項目がグリッドに配置されるため、常に、グリッド コントロール パターンをサポートします。| +||状況に依存|データ グリッドをスクロールする機能はコンテンツ、およびスクロール バーが存在するかどうかによって異なります。| +||状況に依存|データ グリッドを選択する機能は、コンテンツに依存します。| +||はい|データ グリッド コントロールはサブツリー内に常にヘッダーがあるため、Table コントロール パターンがサポートされる必要があります。| + + データ グリッド コンテナー内のデータ項目は、少なくとも次をサポートします。 + +- 選択項目コントロール パターン \(データ グリッドが選択可能な場合\) + +- スクロール項目コントロール パターン \(データ グリッドがスクロール可能な場合\) + +- グリッド項目コントロール パターン + +- テーブル項目コントロール パターン + + +## 必須の UI オートメーション イベント + 次の表に、すべてのデータ グリッド コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||状況に依存|なし| +||必要|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll パターンをサポートする場合は、このイベントをサポートする必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールで Scroll パターンをサポートする場合は、このイベントをサポートする必要があります。| +||必要|なし| + + +## データ グリッド コントロール型の例 + 次の図に、DataGrid コントロール型を実装するリスト ビュー コントロールを示します。 + + ![2 つのデータ項目を含むリスト ビュー コントロールのグラフィック](../../../docs/framework/ui-automation/media/uiauto-data-grid-detailed.GIF "uiauto\_data\_grid\_detailed") + + 以下には、リスト ビュー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューが表示されています。 オートメーションの各要素のコントロール パターンが、かっこ内に示されています。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コントロール ビュー|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コンテンツ ビュー| +|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| +|
  • DataGrid \(Table、Grid、Selection\)
  • ヘッダー

    • HeaderItem "Name" \(Invoke\)
    • HeaderItem "Date Modified" \(Invoke\)
    • HeaderItem "Size" \(Invoke\)
  • Group "Contoso" \(TableItem、GridItem、SelectionItem、Table\*、Grid\*\)

    • DataItem "Accounts Receivable.doc" \(SelectionItem、Invoke、TableItem\*、GridItem\*\)
    • DataItem "Accounts Payable.doc" \(SelectionItem、Invoke、TableItem\*、GridItem\*\)
|
  • DataGrid \(Table、Grid、Selection\)
  • Group "Contoso" \(TableItem、GridItem、SelectionItem、Table\*、Grid\*\)

    • DataItem "Accounts Receivable.doc" \(SelectionItem、Invoke、TableItem\*、GridItem\*\)
    • DataItem "Accounts Payable.doc" \(SelectionItem、Invoke、TableItem\*、GridItem\*\)
| + + \* 上記の例では、コントロールの複数のレベルを含む DataGrid を示します。 グループ \("Contoso"\) のコントロールには、2 つのDataItem コントロール \("Accounts Receivable.doc" および "Accounts Payable.doc"\) が含まれています。 DataGrid と GridItem ペアは、他のレベルのペアから独立しています。 グループの下にある DataItem コントロールは、ListItem コントロール型として公開することもでき、単純なデータ要素としてではなく、選択可能オブジェクトとして、より明確に提示することができます。 この例では、グループ化されたデータ項目のサブ要素は含まれません。 + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-dataitem-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-dataitem-control-type.md new file mode 100644 index 00000000000..8cb289d5344 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-dataitem-control-type.md @@ -0,0 +1,119 @@ +--- +title: "UI Automation Support for the DataItem Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Data Item control type" + - "Data Item control type" + - "control types, Data Item" +ms.assetid: 181708fd-2595-4c43-9abd-75811627d64c +caps.latest.revision: 36 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 36 +--- +# UI Automation Support for the DataItem Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、DataItem コントロール型に対する [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + 連絡先リストのエントリは、データ項目コントロールの一例です。 データ項目コントロールには、エンド ユーザーに必要な情報が格納されます。 これは、より豊富な情報が格納されるため、単純なリスト項目よりも複雑になります。 + + 以下の各セクションで、DataItem コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合も、すべてのデータ項目コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、データ項目コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コントロール ビュー|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コンテンツ ビュー| +|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| +|DataItem

- 多種多様 \(0 以上。階層で構造化できます\)|DataItem

- 多種多様 \(0 以上。階層で構造化できます\)| + + データ グリッド内のデータ項目要素は、さまざまなオブジェクトをホストできます。たとえば、別のレイヤーのデータ項目や、テキスト、イメージ、エディット コントロールなどの特定のグリッド要素をホストできます。 データ項目要素に特定のオブジェクトの役割がある場合は、その要素を特定のコントロール型 \(たとえば、グリッド内の選択可能なデータ項目の場合は ListItem コントロール型など\) として公開する必要があります。 + + +## 必須の UI オートメーション プロパティ + 次の表に、データ項目コントロールに特に関連する値または定義を持つプロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|プロパティ|値|ノート| +|-----------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||DataItem|この値は、すべての UI フレームワークで同じです。| +||True|データ項目コントロールは、常にコンテンツである必要があります。| +||True|データ項目コントロールは、常にコントロールである必要があります。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照。|コントロールに動的に更新される状態が含まれる場合、要素の状態が変化したときに支援技術が更新を受け取ることができるように、このプロパティをサポートする必要があります。| +||「ノート」を参照。|これは、項目が表す基になるオブジェクトをエンド ユーザーに伝達する文字列値です。 例として "メディア ファイル" や "連絡先" があります。| +||`Null`|データ項目コントロールに静的なテキスト ラベルはありません。| +||"data item"|DataItem コントロール型に対応するローカライズされた文字列。| +||「ノート」を参照。|データ項目コントロールには、主要なテキスト要素が常に含まれています。この要素は、その項目に対してユーザーが最も意味的な識別子として連想するものに関連しています。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのデータ項目コントロールでサポートされなければならない [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|データ項目を展開したり折りたたんだりして、情報の表示\/非表示を切り替える場合、Expand Collapse パターンをサポートする必要があります。| +||状況に依存|データ項目の集合が、空間的に項目間を移動できるコンテナー内にある場合、データ項目は Grid Item パターンをサポートします。| +||状況に依存|画面に収まる項目数を超える項目がデータ コンテナーにある場合、すべてのデータ項目は Scroll Item パターンを使用して、スクロールして表示する機能をサポートします。| +||はい|すべてのデータ項目は、項目が選択されたタイミングを示す Selection Item パターンをサポートする必要があります。| +||状況に依存|データ項目が Data Grid コントロール型の中に含まれている場合、このパターンをサポートします。| +||状況に依存|データ項目に循環する状態が含まれる場合。| +||状況に依存|データ項目の主要なテキストが編集可能な場合は、Value パターンをサポートする必要があります。| + + +## 大きなリストでのデータ項目の操作 + 大きなリストでは、多くの場合、パフォーマンスを向上させるため、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワーク内でデータが仮想化されます。 そのため、UI オートメーション クライアントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クエリ機能を使用して、他の項目コンテナーと同じように完全なツリーからコンテンツを取得することができません。 クライアントは、データ項目の完全に揃った情報にアクセスする前に、項目をスクロールして表示する \(またはコントロールを展開して重要なすべてのオプションを表示する\) 必要があります。 + + データ項目の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要素で `SetFocus` を呼び出すときに、[!INCLUDE[TLA#tla_winexpl](../../../includes/tlasharptla-winexpl-md.md)] の場合は正常に値を返し、データ項目サブツリー内でフォーカスを編集に設定します。 + + +## 必須の UI オートメーション イベント + 次の表に、すべてのデータ項目コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| + + +## DataItem コントロール型の例 + 次の図は、列の豊富な情報をサポートするリスト ビュー コントロール内の DataItem コントロール型を示しています。 + + ![2 つのデータ項目を含むリスト ビュー コントロールのグラフィック](../../../docs/framework/ui-automation/media/uiauto-data-grid-detailed.GIF "uiauto\_data\_grid\_detailed") + + 以下には、データ項目コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューが表示されています。 オートメーションの各要素のコントロール パターンが、かっこ内に示されています。 グループ "Contoso" は、データ グリッド ホスト コントロールのグリッドの一部でもあります。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コントロール ビュー|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コンテンツ ビュー| +|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| +|- Group "Contoso" \(Table, Grid\)
- DataItem "Accounts Receivable.doc" \(TableItem, GridItem, SelectionItem, Invoke\)
- Image "Accounts Receivable.doc"
- Edit "Name" \(TableItem, GridItem, Value "Accounts Receivable.doc"\)
- Edit "Date modified" \(TableItem, GridItem, Value "8\/25\/2006 3:29 PM"\)
- Edit "Size" \(GridItem, TableItem, Value "11.0 KB\)
- DataItem "Accounts Payable.doc" \(TableItem, GridItem, SelectionItem, Invoke\)
- ...|- Group "Contoso" \(Table, Grid\)
- DataItem "Accounts Receivable.doc" \(TableItem, GridItem, SelectionItem, Invoke\)
- Image "Accounts Receivable.doc"
- Edit "Name" \(TableItem, GridItem, Value "Accounts Receivable.doc"\)
- Edit "Date modified" \(TableItem, GridItem, Value "8\/25\/2006 3:29 PM"\)
- Edit "Size" \(GridItem, TableItem, Value "11.0 KB\)
- DataItem "Accounts Payable.doc" \(TableItem, GridItem, SelectionItem, Invoke\)
- …| + + グリッドが選択可能な項目のリストを表している場合、DataItem コントロール型の代わりに、ListItem コントロール型で対応する UI 要素を公開できます。 前の例では、グループ \("Contoso"\) の下の DataItem 要素 \("Accounts Receivable.doc" および "Accounts Payable.doc"\) を ListItem コントロール型として公開することで、その型が既に SelectionItem コントロール パターンをサポートしているため、それらの要素を向上させることができます。 + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-document-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-document-control-type.md new file mode 100644 index 00000000000..b6cb593baef --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-document-control-type.md @@ -0,0 +1,93 @@ +--- +title: "UI Automation Support for the Document Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Document" + - "Document control type" + - "UI Automation, Document control type" +ms.assetid: a79d594b-1ca0-4543-8dac-afd2c645201d +caps.latest.revision: 27 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 27 +--- +# UI Automation Support for the Document Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Document コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートに関する情報を提供します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 これらの条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + ドキュメント コントロールを使用すると、ユーザーは複数ページのテキストを表示して操作できます。 書式設定されていない単純なテキスト行しかサポートしない編集コントロールとは異なり、ドキュメント コントロールは、さまざまなスタイルおよび書式を使用したテキストをホストできます。 + + 以降のセクションで、Document コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのドキュメント コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、ドキュメント コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ドキュメント

- 可変|ドキュメント

- 可変| + + +## 必須の UI オートメーション プロパティ + 次の表に、ドキュメント コンロトールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーション内のすべてのコントロールで一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|ドキュメントにはクリック可能なポイントがあり、そのポイントをクリックすると、ドキュメント コンテナー内のいずれかの要素のドキュメントがフォーカスを受け取ります。| +||ドキュメント|この値は、すべての UI フレームワークで同じです。| +||True|ドキュメント コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに組み込まれます。| +||True|ドキュメント コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに組み込まれます。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照。|このプロパティの値は、ドキュメント コントロールのラベルでなければなりません。 通常、ドキュメントのタイトルが使用されます。| +||「ドキュメント」|Document コントロール型に対応する、ローカライズされた文字列。| +||「ノート」を参照。|通常、ドキュメント コントロールの名前は、読み込み元のファイル名から取得されます。 この名前は多くの場合、そのコントロールを格納するウィンドウまたはフレームのタイトルに表示されます。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、ドキュメント コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|ドキュメント コントロールは、ビューポートのスパンを超えてスパンできます。 コントロールのコンテンツがスクロール可能な場合は、Scroll コントロール パターンをサポートする必要があります。| +||必要|ドキュメント コントロールは、ビューポートのスパンを超えてスパンできます。 コントロールのコンテンツがスクロール可能な場合は、Scroll コントロール パターンをサポートする必要があります。| +||Never|通常、ドキュメント コントロールのコンテンツは複数のページにまたがるため、ドキュメント コントロールはこのコントロール パターンをサポートしません。 UI オートメーション クライアントは、 を使用してドキュメントに関するテキスト情報を取得する必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのドキュメント コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||状況に依存|コントロールが Selection コントロール パターンをサポートする場合は、このイベントをサポートする必要があります。| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|Never|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-edit-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-edit-control-type.md new file mode 100644 index 00000000000..399ff7bc47f --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-edit-control-type.md @@ -0,0 +1,105 @@ +--- +title: "UI Automation Support for the Edit Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Edit" + - "Edit control type" + - "UI Automation, Edit control type" +ms.assetid: 6db9d231-c0a0-4e17-910e-ac80357f774f +caps.latest.revision: 29 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 29 +--- +# UI Automation Support for the Edit Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、Edit コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、コントロール パターンに関する特定のガイドラインが含まれます。 + + 編集コントロールを使用すると、さまざまな書式設定の機能をサポートしなくてもユーザーは単純なテキスト行を表示、および編集することができます。 + + 以降のセクションで、Edit コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、イベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべての編集コントロールに当てはまります。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、編集コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーについて詳しくは、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」をご覧ください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|編集|編集| + + Edit コントロール型を実装するコントロールは単一行のコントロールであるため、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューにスクロール バーは表示されません。 1 行のテキストは、一部のレイアウト シナリオでは折り返されることがあります。 Edit コントロール型は、編集可能または選択可能なテキストを少量保持するのに最適です。 + + +## 必須の UI オートメーション プロパティ + 次の表に、編集コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティについて詳しくは、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」をご覧ください。|このプロパティの値は、アプリケーション内のすべてのコントロールで一意にする必要があります。| +||「ノート」をご覧ください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」をご覧ください。|編集コントロールには、ユーザーがその場所でマウスをクリックしたときに、コントロールの編集部分に入力フォーカスを設定する、クリック可能なポイントが必要です。| +||「ノート」をご覧ください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」をご覧ください。|編集コントロールの名前は、通常、静的なテキスト ラベルから生成されます。 静的なテキスト ラベルがない場合は、アプリケーション開発者が `Name` のプロパティ値を割り当てる必要があります。`Name` プロパティには、編集コントロールのテキスト コンテンツを含めることができません。| +||「ノート」をご覧ください。|コントロールに関連付けられた静的なテキスト ラベルが存在する場合、このプロパティはそのコントロールへの参照を公開する必要があります。 テキスト コントロールが別のコントロールのサブコンポーネントである場合、`LabeledBy` プロパティは設定されません。| +||編集|この値はすべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークで同じです。| +||"エディット"|Edit コントロール型に対応する、ローカライズされた文字列。| +||True|編集コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれます。| +||True|編集コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| +||「ノート」をご覧ください。|パスワードが含まれている編集コントロールの場合は true に設定する必要があります。 編集コントロールにパスワードのコンテンツが含まれる場合、スクリーン リーダーはこのプロパティを使用して、ユーザーが入力するキーストロークを読み上げる必要があるかどうかを判別できます。| + + +## 必須の UI オートメーション コントロール パターンおよびプロパティ + 次の表に、すべての編集コントロールでサポートする必要があるコントロール パターンの一覧を示します。 コントロール パターンについて詳しくは、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」をご覧ください。 + +|コントロール パターン\/コントロール パターン プロパティ|サポート\/値|ノート| +|------------------------------------|-------------|---------| +||状況に依存|編集コントロールは、テキスト コントロール パターンをサポートする必要があります。これは、クライアントが常に詳しいテキスト情報を利用できるようにする必要があるためです。| +||状況に依存|文字列を受け取るすべての編集コントロールは、Value パターンを公開する必要があります。| +||「ノート」をご覧ください。|コントロールがプログラムで値を設定できるか、それともユーザーが値を編集できるかを示すために、このプロパティを設定する必要があります。| +||「ノート」をご覧ください。|このプロパティは、編集コントロールのテキスト コンテンツを返します。`IsPasswordProperty` が `true` に設定されている場合、このプロパティは要求されたときに `InvalidOpertaionException` を発生させる必要があります。| +||状況に依存|数値の範囲を受け取るすべての編集コントロールは、Range Value コントロール パターンを公開する必要があります。| +||「ノート」をご覧ください。|このプロパティは、編集コントロールのコンテンツに対して設定できる最小値にする必要があります。| +||「ノート」をご覧ください。|このプロパティは、編集コントロールのコンテンツに対して設定できる最大値にする必要があります。| +||「ノート」をご覧ください。|このプロパティは、値に対して設定できる小数点以下の桁数を示す必要があります。 エディットが整数のみを受け取る場合は、`SmallChangeProperty` を 1 にする必要があります。 エディットが 1.0 ~ 2.0 の範囲を受け取る場合は、`SmallChangeProperty` を 0.1 にする必要があります。 編集コントロールが 1.00 ~ 2.00 の範囲を受け取る場合は、`SmallChangeProperty` を 0.001 にする必要があります。| +||`Null`|このプロパティは、編集コントロールで公開する必要はありません。| +||「ノート」をご覧ください。|このプロパティは、編集コントロールの数値コンテンツを示します。`Minimum` および `Maximum` プロパティで指定された範囲内で [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クライアントによってより精度の高い値が設定された場合、Value プロパティは、受け入れ可能な値に最も近い値に自動的に丸められます。| + + +## 必須の UI オートメーション イベント + 次の表に、すべての編集コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントの一覧を示します。 イベントについて詳しくは、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|状況に依存|コントロールが Range Value コントロール パターンをサポートする場合は、このイベントをサポートする必要があります。| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-group-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-group-control-type.md new file mode 100644 index 00000000000..75d69c9a945 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-group-control-type.md @@ -0,0 +1,85 @@ +--- +title: "UI Automation Support for the Group Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Group control type" + - "Group control type" + - "control types, Group" +ms.assetid: 18e01bab-01f8-4567-b867-88dce9c4a435 +caps.latest.revision: 27 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 27 +--- +# UI Automation Support for the Group Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Group コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、および [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンに関する特定のガイドラインが含まれます。 + + グループ コントロールは、階層内のノードを表します。 Group コントロール型は、グループとしてまとめられた項目が [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー内で論理区画を持つように、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーに区画を作成します。 + + 以下の各セクションで、Group コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべてのグループ コントロールに当てはまります。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、グループ コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|グループ化

- 0 以上のコントロール|グループ化

- 0 以上のコントロール| + + 通常、グループ コントロールのコントロール型は、[UI Automation Support for the ListItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-listitem-control-type.md)、[UI Automation Support for the TreeItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type.md)、または [UI Automation Support for the DataItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-dataitem-control-type.md) であり、サブツリーではグループ コントロールの下にこれらが存在します。 'Group' は汎用的なコンテナーであるため、任意の型のコントロールを、ツリーのグループ コントロールの下に配置できます。 + + +## 必須の UI オートメーション プロパティ + 次の表に、グループ コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照。|通常、グループ コントロールの名前は、コントロールにラベル付けするテキストから取得されます。| +||「ノート」を参照。|通常、グループ コントロールは、自動的にラベル付けされます。 ここでは、`null` が返されます。 グループに静的なテキスト ラベルが存在する場合は、そのラベルを LabeledBy プロパティの値として返す必要があります。| +||グループ化|この値は、すべての UI フレームワークで同じです。| +||"group"|Group コントロール型に対応する、ローカライズされた文字列。| +||True|グループ コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれます。| +||True|カレンダー グループは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、Group コントロール型でサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|情報の表示\/非表示を切り替えるために使用するグループ コントロールは、Expand Collapse パターンをサポートする必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのグループ コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-header-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-header-control-type.md new file mode 100644 index 00000000000..5e56f63fc37 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-header-control-type.md @@ -0,0 +1,86 @@ +--- +title: "UI Automation Support for the Header Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Header control type" + - "Header control type" + - "control types, Header" +ms.assetid: d2e48891-2dbe-409e-8655-2f753908e29b +caps.latest.revision: 20 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 20 +--- +# UI Automation Support for the Header Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Header コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + ヘッダー コントロールは、情報の行または列のラベルのためのビジュアル コンテナーを提供します。 + + 以下の各セクションで、Header コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべてのヘッダー コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、ヘッダー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ヘッダー

- HeaderItem \(1 個以上\)|なし| + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューには、必ず、ヘッダー コントロールの 1 つ以上の子が存在します。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューには、ヘッダー コントロールの子は存在しません。 + + +## 必須の UI オートメーション プロパティ + 次の表に、ヘッダー コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照。|複数の行ヘッダーまたは複数の列ヘッダーがある場合、ヘッダー コントロールには名前が必要です。 これにより、ヘッダー内の情報を識別します。| +||`Null`。|ヘッダー コントロールに静的ラベルはありません。| +||Header|この値はすべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークで同じです。| +||"header"|この値はすべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークで同じです。| +||\[水平方向\]|このプロパティの値は、ヘッダー コントロールの位置 \(行ヘッダーまたは列ヘッダーが存在する位置\) を公開します。| +||False|ヘッダー コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれません。| +||True|ヘッダー コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに常に含まれます。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのヘッダー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|ヘッダー コントロールのサイズを変更できる場合は、このコントロール パターンを実装します。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのヘッダー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-headeritem-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-headeritem-control-type.md new file mode 100644 index 00000000000..119b9af2818 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-headeritem-control-type.md @@ -0,0 +1,84 @@ +--- +title: "UI Automation Support for the HeaderItem Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Header Item control type" + - "Header Item control type" + - "control types, Header Item" +ms.assetid: 09ce1310-ee31-493c-a71e-010bafc42fcf +caps.latest.revision: 20 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 20 +--- +# UI Automation Support for the HeaderItem Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、HeaderItem コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + HeaderItem コントロール型は、情報の行または列のビジュアル ラベルを提供します。 + + HeaderItem コントロール型を実装するコントロールの例には、ヘッダー項目コントロールがあります。 以降のセクションに記載する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関わらず、すべてのヘッダー コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、コントロール ビューと、ヘッダー項目コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューを示し、それぞれのビューに含められる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|HeaderItem|なし| + + +## 必須の UI オートメーション プロパティ + 次の表に、ヘッダー項目コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照。|ヘッダー項目コントロールは、常に自己ラベル付けを行います。| +||`Null`。|ヘッダー項目コントロールに静的ラベルはありません。| +||HeaderItem|この値は、すべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークで同じです。| +||「ヘッダー項目」|HeaderItem コントロール型のローカライズされた文字列。| +||False|ヘッダー項目コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに組み込まれません。| +||True|ヘッダー項目コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに組み込まれます。| +||「ノート」を参照。|このプロパティは、ヘッダー項目による並べ替え順序の情報を提供します。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのヘッダー項目コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|ヘッダー項目コントロールのサイズを変更できる場合は、このコントロール パターンを実装します。| +||状況に依存|ヘッダー項目コントロールをクリックしてデータを並べ替えることができる場合は、このコントロール パターンを実装します。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのヘッダー項目コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||状況に依存|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-hyperlink-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-hyperlink-control-type.md new file mode 100644 index 00000000000..02b8032b51a --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-hyperlink-control-type.md @@ -0,0 +1,85 @@ +--- +title: "UI Automation Support for the Hyperlink Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Hyperlink control type" + - "UI Automation, Hyperlink control type" + - "control types, Hyperlink" +ms.assetid: 110cceea-5932-4955-a1a6-13afc51422b2 +caps.latest.revision: 22 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 22 +--- +# UI Automation Support for the Hyperlink Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Hyperlink コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + ハイパーリンク コントロールによって、ユーザーはページ内の移動、ページ間の移動、およびウィンドウのオープンを実行できます。 + + 以下の各セクションで、Hyperlink コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべてのハイパーリンク コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、ハイパーリンク コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ハイパーリンク|ハイパーリンク| + + +## 必須の UI オートメーション プロパティ + 次の表に、Hyperlink コントロール型に特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照してください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照してください。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||「ノート」を参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照してください。|ハイパーリンク コントロールの名前は、下線付きで画面に表示されるテキストです。| +||「ノート」を参照してください。|ハイパーリンク コントロールのクリック可能なポイントは、マウス ポインターを使用してクリックした場合にハイパーリンクを起動するポイントである必要があります。| +||「ノート」を参照してください。|静的なテキスト ラベルがある場合、このプロパティは対象のコントロールへの参照を公開する必要があります。| +||ハイパーリンク|この値は、すべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークで同じです。| +||"ハイパーリンク"|Hyperlink コントロール型に対応するローカライズされた文字列。| +||True|ハイパーリンク コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれます。| +||True|ハイパーリンク コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| + + +## 必須の UI オートメーション コントロール パターンおよびプロパティ + 次の表に、すべてのハイパーリンク コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン\/パターン プロパティ|サポート\/値|ノート| +|-----------------------------|-------------|---------| +||はい|すべてのハイパーリンク コントロールは、Invoke パターンをサポートする必要があります。| +||状況に依存|ユーザーにとって有効で意味のある情報がリンクに含まれている場合、ハイパーリンク コントロールは Value コントロール パターンをサポートする必要があります。| +||例: "http:\/\/www..."|インターネット アドレスまたはイントラネット アドレスの URL は、ユーザーにとって意味のある情報が含まれるハイパーリンクの例です。 一方、プログラム リンクはアプリケーションにしか意味がないため、Value プロパティには使用しないことをお勧めします。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのハイパーリンク コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-image-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-image-control-type.md new file mode 100644 index 00000000000..4115b6e1a86 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-image-control-type.md @@ -0,0 +1,91 @@ +--- +title: "UI Automation Support for the Image Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Image control type" + - "control types, Image" + - "Image control type" +ms.assetid: 4e0eeefb-e09b-46d2-b83b-0a7e35543ab8 +caps.latest.revision: 21 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 21 +--- +# UI Automation Support for the Image Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、Image コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、コントロール パターンに関する特定のガイドラインが含まれます。 + + アイコン、情報のグラフィック、チャートとして使用されるイメージ コントロールは、Image コントロール型をサポートします。 背景、またはウォーターマークのイメージとして使用されるコントロールは、Image コントロール型をサポートしません。 + + 以降のセクションで、Image コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、イベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合も、すべてのイメージ コントロールに当てはまります。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、イメージ コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーについて詳しくは、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」をご覧ください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|イメージ|Image \(イメージに、\(`IsContentElement` プロパティの値に基づいた\) 情報が含まれるかどうかによって異なります\)| + + +## 必須の UI オートメーション プロパティ + 次の表に、Image コントロール型に特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティについて詳しくは、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」をご覧ください。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||「ノート」をご覧ください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」をご覧ください。|イメージ コントロールのクリック可能なポイントは、イメージ コントロールの四角形領域内のポイントである必要があります。| +||「ノート」をご覧ください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」をご覧ください。|情報が含まれているイメージ コントロールはすべて、Name プロパティが公開される必要があります。 この情報にプログラムでアクセスするには、グラフィックと等価なテキストを指定する必要があります。 イメージ コントロールが純粋な装飾の場合は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに表示するだけにとどめ、名前を付ける必要はありません。 UI フレームワークは、イメージ上の ALT \(代替テキスト\) プロパティをサポートする必要があります。これはそのフレームワークの内部から設定できます。 次いで、このプロパティは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] Name プロパティにマップされます。| +||「ノート」をご覧ください。|静的なテキスト ラベルがある場合、このプロパティは対象のコントロールへの参照を公開する必要があります。| +||イメージ|この値は、すべての UI フレームワークで同じです。| +||"image"|Image コントロール型に対応する、ローカライズされた文字列。| +||「ノート」をご覧ください。|エンド ユーザーに対してまだ公開されていない有用な情報がイメージ コントロールに含まれている場合、イメージ コントロールを [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含める必要があります。| +||True|イメージ コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| +||「ノート」をご覧ください。|HelpText プロパティは、コントロールの実際の外見 \(白い 'X' が記された赤い四角形など\) を説明するローカライズされた文字列や、イメージに関連する他のヒント情報を公開します。

イメージ コントロールについてより詳しい情報を示すために長い説明が必要な場合は、このプロパティをサポートする必要があります。 たとえば、複雑なチャートや図などです。 このプロパティは、HTML の LongDesc タグとスケーラブル ベクター グラフィックス \(SVG\) の Desc タグにマップされます。 イメージ コントロールを使用する開発者は、コントロールに視覚的な説明を設定できるようにするために、プロパティをサポートする必要があります。 このプロパティは、UI Automation VisualDescription プロパティにマップされる必要があります。| +||「ノート」をご覧ください。|イメージ コントロールが画面上の特定の項目に関する状態情報を表している場合は、そのコントロールを対象の項目に含める必要があります。 ある項目の中にイメージが含まれている場合、その項目は状態プロパティをサポートし、状態が変わったときに適切な通知を発生させる必要があります。

イメージがスタンドアロン コントロールであり、状態を示している場合は、このプロパティをサポートする必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのイメージ コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンについて詳しくは、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」をご覧ください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|イメージ コントロールは、コントロールがグリッドのコンテナー内にある場合、Grid Item パターンをサポートします。| +||状況に依存|イメージ コントロールは、コントロールがヘッダー コントロールを持つコンテナー内にある場合、Table Item パターンをサポートします。| +||Never|イメージ コントロールにクリック可能なイメージが含まれている場合、コントロールは、Invoke パターン \(ボタン コントロール型など\) をサポートしているコントロール型をサポートする必要があります。| +||Never|イメージ コントロールは、Selection Item パターンをサポートしてはなりません。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのイメージ コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントについて詳しくは、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||Never|なし| +||Never|なし| +||Never|なし| +||Never|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-list-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-list-control-type.md new file mode 100644 index 00000000000..0612ebe692d --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-list-control-type.md @@ -0,0 +1,119 @@ +--- +title: "UI Automation Support for the List Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, List" + - "List control type" + - "UI Automation, List control type" +ms.assetid: 0e959fcb-50f2-413b-948d-7167d279bc11 +caps.latest.revision: 20 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 20 +--- +# UI Automation Support for the List Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、List コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + List コントロール型を使用すると、項目のフラットなグループを編成して、ユーザーにそれらの項目から 1 つ以上選択させることができます。 List コントロール型には、含めることができる子要素の型に関する緩い制限があります。 これにより、UI オートメーション プロバイダーは選択コンテナーの既知の要素をサポートできます。 + + 以下のセクションの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、List コントロール型を実装するすべてのコントロールに適用されます。 List コントロール型を実装するコントロールの例として、リスト コンテナー コントロールなどがあります。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、リスト コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの 2 つのビューを示し、それぞれのビューに含めることができる内容について説明します。 コントロール ビューでは、コントロールである要素のみが表示されます。また、コンテンツ ビューでは、冗長な情報がツリーから除外されます。 たとえば、コンボ ボックスのラベルに使用されるテキスト コントロールは、`ComboBox NameProperty` として公開されます。 このテキスト コントロールは、このようにコントロール ビューを介して既に公開されているため、2 回公開する必要はありません。したがって、コンテンツ ビューからは除外されます。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|コントロールに対応する要素が含まれています。|支援技術がエンド ユーザーにとって意味のある最小限の情報を使用できるように、ツリーから冗長な情報を除外します。| +|リスト

- DataItem \(0 以上\)
- ListItem \(0 以上\)
- Group \(0 以上\)
- ScrollBar \(0、1、または 2\)|リスト

- DataItem \(0 以上\)
- ListItem \(0 以上\)
- Group \(0 以上\)| + + List コントロール型 \(リスト コントロールなど\) を実装するコントロールのコントロール ビューは以下で構成されます。 + +- リスト コントロール内の 0 個以上の項目 \(項目は List Item または Data Item のコントロール型に基づきます\) + +- リスト コントロール内の 0 個以上のグループ コントロール + +- 0、1、または 2 個のスクロール バー コントロール。 + +- + + List コントロール型 \(リスト コントロールなど\) を実装するコントロールのコンテンツ ビューは以下で構成されます。 + +- リスト コントロール内の 0 個以上の項目 \(項目は List Item または Data Item のコントロール型に基づきます\) + +- リスト コントロール内の 0 個以上のグループ + + リスト コントロールには、一緒にグループ化されていない階層リレーションシップを持つ項目を含めることはできません。 項目が [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー内に子を持つ場合、リスト コンテナーは Tree コントロール型に基づく必要があります。 + + リスト コントロール内の選択可能項目は、リスト コントロールの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの子孫から取得できます。 リスト コントロール内のすべての項目は、同じ選択グループに属している必要があります。 リスト内の選択可能項目は ListItem \(DataItem ではなく\) コントロール型として公開する必要があります。 + + +## 必須の UI オートメーション プロパティ + 次の表に、リスト コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照してください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照してください。|リスト コントロールにクリック可能なポイント \(クリックするとリストがフォーカスを受け取るポイント\) がある場合、このプロパティでそのポイントを公開する必要があります。

`IsOffScreen` プロパティの値が true の場合、 が生成されます。| +||「ノート」を参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照してください。|リスト コントロールの Name プロパティ値は、ユーザーに選択を求めるオプションのカテゴリを表すものでなければなりません。 このプロパティの名前は、通常、静的なテキスト ラベルから取得されます。 静的なテキスト ラベルがない場合は、アプリケーション開発者が Name プロパティの値を公開する必要があります。

リスト コントロールでこのプロパティが不要になるのは、別のコントロールのサブツリー内でコントロールが使用される場合のみです。| +||「ノート」を参照してください。|静的なテキスト ラベルがある場合、このプロパティは対象のコントロールへの参照を公開する必要があります。| +||リスト|この値は、すべての UI フレームワークで同じです。| +||"リスト"|List コントロール型に対応する、ローカライズされた文字列。| +||True|リスト コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれます。| +||True|リスト コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| +||True|コンテナーがキーボード入力を受け取ることができる場合、このプロパティ値は true である必要があります。| +||「ノート」を参照してください。|リスト コントロールのヘルプ テキストは、オプションのリストから選択することをユーザーに求める理由を説明するものでなければなりません。 たとえば、「項目を選択してモニターのディスプレイ解像度を設定してください」などです。| + + +## 必須の UI オートメーション コントロール パターンおよびプロパティ + 次の表に、リスト コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン\/パターン プロパティ|サポート\/値|ノート| +|-----------------------------|-------------|---------| +||必要|List コントロール型をサポートするすべてのコントロールは、コントロールに含まれている項目の間で選択状態が維持される場合に、`ISelectionProvider` を実装する必要があります。 コンテナー内の項目が選択可能でない場合は、Group コントロール型を使用する必要があります。| +||状況に依存|リスト コントロールでは、常に項目を選択する必要があるわけではありません。| +||状況に依存|リスト コントロールでは、コンテナーを 1 つまたは複数選択できます。| +||状況に依存|コンテナー内の項目がスクロール可能な場合は、このコントロール パターンを実装します。| +||状況に依存|グリッド ナビゲーションを項目ごとに使用可能にする必要がある場合は、このパターンを実装します。| +||状況に依存|コントロールがコンテナー内の項目の複数のビューをサポートできる場合は、このコントロール パターンを実装します。| +||Never|`ITableProvider` は List コントロール型をサポートしません。 コントロールがこのコントロール パターンをサポートする必要がある場合、コントロールは Data Grid コントロール型に基づく必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのリスト コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|サポート\/値|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||状況に依存|なし| +||状況に依存|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-listitem-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-listitem-control-type.md new file mode 100644 index 00000000000..34904a1ad49 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-listitem-control-type.md @@ -0,0 +1,101 @@ +--- +title: "UI Automation Support for the ListItem Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, List" + - "List Item control type" + - "UI Automation, List Item control type" +ms.assetid: 34f533bf-fc14-4e78-8fee-fb7107345fab +caps.latest.revision: 24 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 24 +--- +# UI Automation Support for the ListItem Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、 コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + ListItem コントロール型を実装するコントロールの例として、リスト項目コントロールなどがあります。 + + 以下の各セクションで、ListItem コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の各要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべてのリスト コントロールに当てはまります。 + + +## 必須の UI オートメーション ツリー構造 + 次の表では、リスト項目コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ListItem

- イメージ \(0 個以上\)
- テキスト \(0 個以上\)
- Edit \(0 以上\)|ListItem| + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビュー内のリスト項目コントロールの子は、常に "0" である必要があります。 リスト項目の下に他の項目が含まれるような構造を持つコントロールは、[UI Automation Support for the TreeItem Control Type](../../../docs/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type.md) コントロール型の要件に従う必要があります。 + + +## 必須の UI オートメーション プロパティ + 次の表に、リスト項目コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照してください。|このプロパティのこの値には、リスト項目のイメージおよびテキスト コンテンツの領域を含める必要があります。| +||状況に依存|リスト コントロールにクリック可能なポイント \(クリックするとリストがフォーカスを受け取るポイント\) がある場合、このプロパティでそのポイントを公開する必要があります。 リスト コントロールが子孫のリスト項目に完全に覆われている場合は、クリック可能なポイントがないかリスト コントロール内の項目を調べる必要があることをクライアントに示すために、 を生成します。| +||「ノート」を参照してください。|リスト項目コントロールの名前プロパティの値は、その項目のテキスト コンテンツから取得されます。| +||「ノート」を参照してください。|静的なテキスト ラベルがある場合、このプロパティは対象のコントロールへの参照を公開する必要があります。| +||ListItem|この値は、すべての UI フレームワークで同じです。| +||"リスト項目"|ListItem コントロール型に対応するローカライズされた文字列。| +||True|リスト コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれます。| +||True|リスト コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| +||True|コンテナーがキーボード入力を受け取ることができる場合、このプロパティ値は true である必要があります。| +||""|リスト コントロールのヘルプ テキストは、オプションのリストから選択することをユーザーに求める理由を説明するものでなければなりません。一般には、ツールヒントに表示する情報と同様の内容になります。 たとえば、「項目を選択してモニターのディスプレイ解像度を設定してください」などです。| +||状況に依存|このプロパティは、基になるオブジェクトを表しているリスト項目コントロールに対して公開される必要があります。 そのようなリスト項目コントロールには、通常、ユーザーが基になるオブジェクトと関連付けたコントロールに関連付けられたアイコンがあります。| +||状況に依存|このプロパティは、そのリスト項目が現在、スクロール コントロール パターンを実装した親コンテナー内でスクロールして表示されているかどうかを示す値を返す必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、リスト項目コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||はい|リスト項目コントロールには、このコントロール パターンを実装する必要があります。 これにより、リスト項目コントロールは、選択されたことを伝達できます。| +||状況に依存|このリスト項目がスクロール可能なコンテナーに格納されている場合には、このコントロール パターンを実装する必要があります。| +||状況に依存|このリスト項目がチェック可能で、アクションによって選択状態の変更が実行されない場合には、このコントロール パターンを実装する必要があります。| +||状況に依存|この項目を操作して情報を表示または非表示にできる場合は、このコントロール パターンを実装する必要があります。| +||状況に依存|この項目が編集可能である場合は、このコントロール パターンを実装する必要があります。 このリスト項目コントロールを変更すると、 および の値が変更されます。| +||状況に依存|リスト コンテナー内で項目間の空間的移動がサポートされており、コンテナーが行と列に配置されている場合は、グリッド項目コントロール パターンを実装する必要があります。| +||状況に依存|この項目に、この項目自体に対して実行できる選択以外のコマンドがある場合には、このパターンを実装する必要があります。 これは通常、リスト項目コントロールのダブルクリックに関連付けられたアクションです。 この例としては、[!INCLUDE[TLA#tla_winexpl](../../../includes/tlasharptla-winexpl-md.md)] からのドキュメントの起動や、[!INCLUDE[TLA#tla_wmp](../../../includes/tlasharptla-wmp-md.md)] での音楽ファイルの再生などがあります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのリスト項目コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||状況に依存|なし| +||必要|なし| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-menu-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-menu-control-type.md new file mode 100644 index 00000000000..0b0dff1dde3 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-menu-control-type.md @@ -0,0 +1,79 @@ +--- +title: "UI Automation Support for the Menu Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Menu" + - "UI Automation, Menu control type" + - "Menu control type" +ms.assetid: 016323cb-f800-4938-b77b-2eb25d646090 +caps.latest.revision: 24 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 24 +--- +# UI Automation Support for the Menu Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Menu コントロール型の [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] サポートについて説明します。 このコントロールの [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] ツリー構造を説明し、特定のコントロール シナリオでのプロパティとコントロール パターンを示します。 + + メニュー コントロールを使用すると、コマンドおよびイベント ハンドラーに関連付けられている要素を階層に編成できます。 一般的な [!INCLUDE[TLA#tla_win](../../../includes/tlasharptla-win-md.md)] アプリケーションでは、メニュー バーに複数のメニュー ボタン \(**\[ファイル\]**、**\[編集\]**、**\[ウィンドウ\]** など\) が含まれ、各メニュー ボタンがメニューを表示します。 メニューには、メニュー項目 \(**\[新規\]**、**\[開く\]**、**\[閉じる\]** など\) のコレクションが含まれていて、メニュー項目を展開して追加のメニュー項目を表示したり、クリックして特定の操作を実行したりできます。 + + 以降のセクションで、Menu コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合も、すべてのリスト コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、メニュー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|メニュー

- MenuItem \(1 個以上\)|該当なし \(メニュー コントロールが、メニュー項目でないオブジェクトの親であるコンテキスト メニューに相当する場合を除く\)

- MenuItem \(1 個以上\)| + + メニュー コントロールは、コントロール ビューと [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに常に表示されます。 Menu コントロール型は、その情報が参照しているコントロールの下に表示されます。 UI オートメーション クライアントは、メニュー コントロールによって伝えられる情報を常に取得できるよう、`MenuOpenedEvent` をリッスンする必要があります。 コンテキスト メニュー コントロールは、特殊なケースです。 これらのコントロールは、デスクトップの子として表示されます。 + + +## 必須の UI オートメーション プロパティ + 次の表に、Menu コントロール型に特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||サポート非対象|メニュー コントロールでは、Name プロパティを設定する必要はありません。| +||`Null`|一般的なメニュー コントロールには、ラベルは不要です。| +||メニュー|この値は、すべての UI フレームワークで同じです。| +||False|メニュー コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに組み込まれません。| +||True|メニュー コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに常に組み込まれます。| + + +## 必須の UI オートメーション コントロール パターン + Menu コントロール型に必要なコントロール パターンはありません。 + + +## 必須の UI オートメーション イベント + メニュー コントロールは、画面に表示された場合に `MenuOpenedEvent` を生成する必要があります。`MenuOpenedEvent` にはコントロールのテキストが含まれます。 メニューが画面から非表示になった場合には、`MenuClosedEvent` が生成されなければなりません。 + + 次の表に、すべてのメニュー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|サポート\/値|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +|プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md new file mode 100644 index 00000000000..04d7f89038c --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-menubar-control-type.md @@ -0,0 +1,89 @@ +--- +title: "UI Automation Support for the MenuBar Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Menu Bar control type" + - "control types, Menu Bar" + - "Menu Bar control type" +ms.assetid: c1202b21-c1f0-4560-853c-7b99bd73ad97 +caps.latest.revision: 22 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 22 +--- +# UI Automation Support for the MenuBar Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、 コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + MenuBar コントロール型を実装するコントロールの例には、メニュー バー コントロールがあります。 メニュー バーは、ユーザーがアプリケーションに含まれるコマンドおよびオプションをアクティブにするための手段を提供します。 + + 以降のセクションで、MenuBar コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合も、すべてのリスト コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、コントロール ビューと、メニュー バー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|メニュー バー

- MenuItem \(1 個以上\)
- その他のコントロール \(0 個以上\)|メニュー バー

- MenuItem \(1 個以上\)
- その他のコントロール \(0 個以上\)| + + メニュー バー コントロールの構造には、エディット コントロールやコンボ ボックスなどの他のコントロールを含めることができます。 これらの追加コントロールは、コントロール ビューおよびコンテンツ ビューに含まれる、上記に一覧した「その他のコントロール」に対応します。 + + +## 必須の UI オートメーション プロパティ + 次の表に、メニュー バー コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティで公開する値には、メニュー バー コントロールに含まれるすべてのコントロールを含める必要があります。| +||「ノート」を参照。|アプリケーションに複数のメニュー バーがある場合を除き、メニュー バー コントロールに名前は必要ありません。 アプリケーションに複数のメニュー バーがある場合、このプロパティを使用して、「書式設定」や「アウトライン」といった識別名を公開する必要があります| +||`Null`|メニュー バー コントロールには例外なく、ラベルはありません。| +||メニュー バー|この値は、すべての UI フレームワークで同じです。| +||「メニュー バー」|MenuBar コントロール型に対応する、ローカライズされた文字列。| +||True|メニュー バー コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに組み込まれます。| +||True|メニュー バー コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに組み込まれます。| +||「ノート」を参照。|このプロパティの値は、コントロールを画面に表示できるかどうかによって異なります。| +||状況に依存|このプロパティは、メニュー バー コントロールが水平または垂直のいずれかであるかを公開します。| +||True|メニュー バー コントロールに含まれるコントロールはキーボード フォーカスを受け取ることができるため、メニュー バー コントロールはキーボード フォーカスを受け取ることができます。| +||「ノート」を参照。|メニュー バー コントロールにヘルプ テキストが必要になるシナリオはありません。| +||`Null`|メニュー バーでアクセラレータ キーを使用することは決してありません。| +||「ALT」|ALT キーを押すと常に、アプリケーション内のメニュー バーにフォーカスが移動します。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、メニュー バー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|コントロールを展開または折りたたむことができる場合は、 を実装します。| +||状況に依存|コントロールを画面のさまざまな部分にドッキングできる場合は、 を実装します。| +||状況に依存|コントロールのサイズ変更、回転、移動が可能な場合は、 を実装する必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのメニュー バー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|サポート\/値|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-menuitem-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-menuitem-control-type.md new file mode 100644 index 00000000000..081be9252a2 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-menuitem-control-type.md @@ -0,0 +1,110 @@ +--- +title: "UI Automation Support for the MenuItem Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Menu Item" + - "Menu Item control type" + - "UI Automation, Menu Item control type" +ms.assetid: 54bce311-3d23-40b9-ba90-1bdbdaf8fbba +caps.latest.revision: 23 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 23 +--- +# UI Automation Support for the MenuItem Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、MenuItem コントロール型の [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] サポートについて説明します。 ここではコントロールの [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] ツリー構造について説明し、MenuItem コントロール型に必要なプロパティとコントロール パターンを示します。 + + メニュー コントロールを使用すると、コマンドおよびイベント ハンドラーに関連付けられている要素を階層的に編成できます。 一般的な [!INCLUDE[TLA#tla_win](../../../includes/tlasharptla-win-md.md)] アプリケーションでは、メニュー バーに複数のメニュー項目 \(**\[ファイル\]**、**\[編集\]**、**\[ウィンドウ\]** など\) が含まれ、各メニュー項目にメニューが表示されます。 メニューには、メニュー項目 \(**\[新規\]**、**\[開く\]**、**\[閉じる\]** など\) のコレクションが含まれていて、クリックされると展開して追加のメニュー項目を表示したり、特定の操作を実行したりできます。 メニュー項目は、メニュー、メニュー バー、またはツール バーに配置できます。 + + 以下のセクションでは、MenuItem コントロール型で必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、イベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのリスト コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表では、メニュー項目コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、各ビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーについて詳しくは、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」をご覧ください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|MenuItem "Help"

  • Menu \(Help メニュー項目のサブ メニュー\)

    • MenuItem "Help Topics"
    • MenuItem "About Notepad"
|MenuItem "Help"

- MenuItem "Help Topics"
- MenuItem "About Notepad"| + + メニュー項目コントロールのコントロール ビューには、上記の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造があります。 メニューからサブメニューへの階層の典型的な構造をより良く表現するために、**\[ヘルプ\]** メニュー項目が含まれていることにご注意ください。 + + コンテンツ ビューでは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーにメニューがありません。これは、メニューでは有用な情報がエンド ユーザーに提供されないためです。 + + +## 必須の UI オートメーション プロパティ + 次の表に、メニュー項目コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティについて詳しくは、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」をご覧ください。 + +|プロパティ|値|説明| +|-----------|-------|--------| +||「ノート」をご覧ください。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||「ノート」をご覧ください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」をご覧ください。|四角形領域が存在する場合にサポートされます。 四角形領域内にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、オーバーライドしてクリック可能な点を提供します。| +||「ノート」をご覧ください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」をご覧ください。|メニュー項目コントロールは [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれていて、名前が自動的にラベル付けされます。| +||`Null`|ラベルなし。| +||MenuItem|この値は、すべての UI フレームワークで同じです。| +||"メニュー項目"|MenuItem コントロール型に対応するローカライズされた文字列。| +||True|メニュー項目コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューには含まれません。| +||True|メニュー項目コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに常に含まれている必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、メニュー項目コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンの一覧を示します。 コントロール パターンについて詳しくは、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」をご覧ください。 + +|コントロール パターン プロパティ|Support|ノート| +|-----------------------|-------------|---------| +||状況に依存|コントロールを展開または折りたたむことができる場合は、 を実装します。| +||状況に依存|コントロールが単一のアクションまたはコマンドを実行する場合は、 を実装します。| +||状況に依存|コントロールがオンまたはオフを切り替えられるオプションを表す場合は、 を実装します。| +||状況に依存|コントロールを使用してメニュー項目のオプションのリストから選ぶ場合は、 を実装します。| + + +## メニュー項目の UI オートメーション イベント + 次の表に、メニュー項目コントロールに関連付けられている [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] イベントの一覧を示します。 + +|イベント|Support|説明| +|----------|-------------|--------| +||状況に依存|コントロールが呼び出しコントロール パターンをサポートしている場合に、発生させる必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールがトグル コントロール パターンをサポートしている場合に、発生させる必要があります。| +| プロパティ変更イベント。|状況に依存|コントロールが展開\/折りたたみコントロール パターンをサポートしている場合に、発生させる必要があります。| +||状況に依存|なし。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのメニュー項目コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントの一覧を示します。 イベントについて詳しくは、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|サポート\/値|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||状況に依存|なし| +||状況に依存|なし| +||状況に依存|なし| +||状況に依存|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + + +## 既知の問題 + トグル パターンがサポートされるのは、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] メニュー項目がチェックされ、トグル パターンをサポートすることが必要であるとプログラムで判断できる場合のみです。[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] メニュー項目はチェックできるかどうかを公開しないため、メニュー項目がチェックされていない場合は呼び出しパターンがサポートされます。 トグル パターンのみをサポートするべきメニュー項目に対して常に呼び出しパターンをサポートするには、例外が作成されます。 このようにすると、\(メニュー項目がクリアされていたときに\) 呼び出しパターンをサポートしていた要素が、チェックされたときにそのパターンをサポートしなくなっても、クライアントは混乱しません。 + +## 参照 + + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-pane-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-pane-control-type.md new file mode 100644 index 00000000000..62f10761afc --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-pane-control-type.md @@ -0,0 +1,106 @@ +--- +title: "UI Automation Support for the Pane Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Pane control type" + - "Pane control type" + - "control types, Pane" +ms.assetid: 79761191-4449-4630-899c-9cbdb8867d3f +caps.latest.revision: 25 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 25 +--- +# UI Automation Support for the Pane Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、Pane コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + Pane コントロール型は、フレームまたはドキュメント ウィンドウ内のオブジェクトを表すために使用します。 ユーザーはペイン コントロール間や現在のペインの内容の中を移動することができますが、異なるペインの項目間を移動することはできません。 そのため、ペイン コントロールは、ウィンドウやドキュメントより下で、個々のコントロールより上のグループ化のレベルを表します。 ユーザーは、状況に応じて、TAB、F6、または CTRL \+ TAB キーを押すことによって、ペイン間を移動します。 Pane コントロール型には、特定のキーボード ナビゲーションは必要ありません。 + + 以降のセクションでは、Pane コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合も、すべてのリスト コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、ペイン コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ペイン|ペイン| + + +## 必須の UI オートメーション プロパティ + 次の表に、ペイン コントロールに特に関連する値や定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照。|このプロパティの値は、必ず明確で簡潔でわかりやすいタイトルにする必要があります。| +||「ノート」を参照。|このプロパティは、クリックされた場合にペインにフォーカスが移動する、ペイン コントロールのクリック可能なポイントを公開します。| +||「ノート」を参照。|通常、ペイン コントロールに静的ラベルはありません。 静的なテキスト ラベルが存在する場合は、このプロパティを介して公開する必要があります。| +||Pane|この値は、すべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークで同じです。| +||"pane"|Pane コントロール型に対応する、ローカライズされた文字列。| +||True|ペイン コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに組み込まれます。| +||True|ペイン コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに組み込まれます。| +||""|ペイン コントロールのヘルプ テキストで、各フレームの用途とフレーム間の関係を説明する必要があります。 フレームの目的や関係が `NameProperty` の値からわからない場合は、説明が必要です。 "| +||「ノート」を参照。|特定のキーの組み合わせによってペインにフォーカスが移動する場合は、このプロパティを介してその情報を公開する必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのペイン コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|画面上でのペイン コントロールの移動、サイズ変更、または回転が可能な場合は、このコントロール パターンを実装します。| +||Never|このコントロール パターンを実装する必要がある場合は、コントロールが コントロール型に基づいている必要があります。| +||状況に依存|ペイン コントロールがドッキング可能な場合は、このコントロール パターンを実装します。| +||状況に依存|ペイン コントロールがスクロール可能な場合は、このコントロール パターンを実装します。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのペイン コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|サポート\/値|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||Never|なし| +||Never|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|Never|なし| +||必要|なし| +||必要|なし| + + +## Pane コントロール型の例 + 次の図に、Pane コントロール型を実装するコントロールを示します。 + + ![2 つのペインを含むアプレット ウィンドウのスクリーンショット](../../../docs/framework/ui-automation/media/uiauto-pane.png "uiauto\_pane") + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コントロール ビュー|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コンテンツ ビュー| +|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| +|
  • ペイン
  • ツリー \(スクロール パターン\)

    • TreeItem
    • ペイン
    • 編集 \(スクロール パターン\)
|- ペイン
- ツリー \(スクロール パターン\)
- TreeItem
- …Pane
- 編集
- \(スクロール パターン\)| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-progressbar-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-progressbar-control-type.md new file mode 100644 index 00000000000..4f0039e5051 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-progressbar-control-type.md @@ -0,0 +1,92 @@ +--- +title: "UI Automation Support for the ProgressBar Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Progress Bar" + - "ProgressBar control type" + - "UI Automation, Progress Bar control type" +ms.assetid: 302e778c-24b0-4789-814a-c8d37cf53a5f +caps.latest.revision: 21 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 21 +--- +# UI Automation Support for the ProgressBar Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、ProgressBar コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、コントロール パターン、および [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントに関する特定のガイドラインが含まれます。 + + ProgressBar コントロール型を実装するコントロールの例として、進行状況バー コントロールなどがあります。 進行状況バー コントロールは、時間のかかる処理の進行状況を示すために使用します。 このコントロールは、処理の進行状況に合わせてシステムの強調表示色で塗りつぶされていく四角形で構成されます。 + + 以下の各セクションで、ProgressBar コントロール型の必須の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の各要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべてのリスト コントロールに当てはまります。 + + +## 必須の UI オートメーション ツリー構造 + 次の表では、進行状況バー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ProgressBar|ProgressBar| + + 進行状況バー コントロールは、コントロール ビューまたはコンテンツ ビューの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー内に子を持つことはありません。 + + +## 必須の UI オートメーション プロパティ + 次の表に、進行状況バー コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照してください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照してください。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||「ノート」を参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照してください。|進行状況バー コントロールの名前は、通常、静的なテキスト ラベルから取得されます。 静的なテキスト ラベルがない場合は、アプリケーション開発者が `Name` のプロパティ値を公開する必要があります。| +||「ノート」を参照してください。|静的なテキスト ラベルがある場合、このプロパティは対象のコントロールへの参照を公開する必要があります。| +||ProgressBar|この値は、すべての UI フレームワークで同じです。| +||"進行状況バー"|ProgressBar コントロール型に対応する、ローカライズされた文字列。| +||True|進行状況バー コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれます。| +||True|進行状況バー コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| + + +## 必須の UI オートメーション コントロール パターンおよびプロパティ + 次の表に、進行状況バー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン\/パターン プロパティ|サポート\/値|ノート| +|-----------------------------|-------------|---------| +||状況に依存|進行状況をテキストで示す進行状況バー コントロールは、 を実装する必要があります。| +||True|このプロパティの値は常に True です。| +||「ノート」を参照してください。|このプロパティは、進行状況バー コントロールのテキストによる進行状況を公開します。| +||状況に依存|数値の範囲を取る進行状況バー コントロールは、 を実装する必要があります。| +||0.0|このプロパティの値は、コントロールに対して設定できる最小の値です。| +||100.0|このプロパティの値は、コントロールに対して設定できる最大の値です。| +||NaN|進行状況バー コントロールは読み取り専用のため、このプロパティは不要です。| +||NaN|進行状況バー コントロールは読み取り専用のため、このプロパティは不要です。| + + +## 必須の UI オートメーション イベント + 次の表に、すべての進行状況バー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-radiobutton-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-radiobutton-control-type.md new file mode 100644 index 00000000000..66f58d759cb --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-radiobutton-control-type.md @@ -0,0 +1,88 @@ +--- +title: "UI Automation Support for the RadioButton Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Radio Button" + - "UI Automation, Radio Button control type" + - "RadioButton control type" +ms.assetid: 87170464-7857-41f1-bcf7-bb41be31cb53 +caps.latest.revision: 21 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 21 +--- +# UI Automation Support for the RadioButton Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、RadioButton コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 これらの条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + オプション ボタンは、丸形のボタンとアプリケーションで定義されたテキスト \(ラベル\)、アイコン、またはユーザーがボタンを選択することで選択できる選択肢を示すビットマップで構成されます。 多くのアプリケーションでは、関連しているものの相互に排他的なオプションのセットからユーザーが選択できるようにするグループ ボックス内でオプション ボタンが使用されます。 たとえば、ユーザーがクライアント領域で選択したテキストの書式設定を選択できるオプション ボタンのグループをアプリケーションで表示することができます。 ユーザーは、対応するオプション ボタンを選択することによって、左揃え、右揃え、または中央揃えの形式を選択できます。 通常、ユーザーは、オプション ボタンのセットから、一度に 1 つのオプションしか選択することができません。 + + 以降のセクションでは、RadioButton コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのリスト コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、オプション ボタン コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|RadioButton|RadioButton| + + コントロール ビューまたはコンテンツ ビューに子は存在しません。 + + +## 必須の UI オートメーション プロパティ + 次の表に、RadioButton コントロール型に特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを列挙します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||ノートを参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||ノートを参照してください。|コントロール全体を格納する最も外側の四角形。| +||ノートを参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||ノートを参照してください。|オプション ボタン コントロールの名前は、選択状態を保持するボタンの横に表示されたテキストです。| +||ノートを参照してください。|オプション ボタン コントロールのクリック可能なポイントは、マウス ポインターでクリックされた場合にオプション ボタン上に選択が設定されるポイントにする必要があります。| +||`Null`|オプション ボタンはそれ自体がラベルであるコントロールです。| +||RadioButton|この値は、すべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークで同じです。| +||"オプション ボタン"|RadioButton コントロール型に対応する、ローカライズされた文字列。| +||True|オプション ボタン コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに組み込まれます。| +||True|オプション ボタン コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに組み込まれます。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのオプション ボタン コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを列挙します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン\/コントロール パターン プロパティ|サポート\/値|ノート| +|------------------------------------|-------------|---------| +||はい|すべてのオプション ボタン コントロールが、それ自体を選択可能にする選択項目パターンをサポートする必要があります。| +||ノートを参照してください。|UI オートメーション クライアントが特定のコンテキスト内で相互に関連する他のオプション ボタンを特定できるためには、`SelectionContainerProperty` が設定されている必要があります。 オプション ボタンの [!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] バージョンでは、このプロパティがサポートされません。これは、従来のフレームワークからこの情報を取得できないためです。| +||Never|オプション ボタンは、いったん設定されると、その状態を循環させることができません。 このパターンは、オプション ボタンではサポートしないでください。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのオプション ボタン コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを列挙します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-scrollbar-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-scrollbar-control-type.md new file mode 100644 index 00000000000..3ada7aedb90 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-scrollbar-control-type.md @@ -0,0 +1,94 @@ +--- +title: "UI Automation Support for the ScrollBar Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Scroll Bar control type" + - "control types, Scroll Bar" + - "Scroll Bar control type" +ms.assetid: 329891d7-b609-49e6-920a-09ea8a627d07 +caps.latest.revision: 24 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 24 +--- +# UI Automation Support for the ScrollBar Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、ScrollBar コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + スクロール バー コントロールを使用すると、ユーザーは、ウィンドウまたは項目のコンテナー内のコンテンツをスクロールできます。 このコントロールは、ボタンのセットと Thumb コントロールから構成されます。 + + 以下の各セクションで、ScrollBar コントロール型の必須の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の各要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべてのリスト コントロールに当てはまります。 + + +## 必須の UI オートメーション ツリー構造 + 次の表では、スクロール バー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ScrollBar

- Button \(2 または 4\)
- Thumb \(0 または 1\)|該当なし。 スクロール バー コントロールは、コンテンツを含みません。| + + スクロール バー コントロールは、常に 3 ~ 5 個の子を持っています。 サブツリーには複数のボタン コントロールが存在するため、各項目に特定の 値を設定して、それらの項目が自動テスト ツールで検出されるようにする必要があります。 + + +## 必須の UI オートメーション プロパティ + 次の表に、スクロール バー コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。 スクロール バー コントロールはコンテンツを持たないことに注意してください。このコントロールの機能は、スクロールされるコンテナーでサポートされる Scroll コントロール パターンによって公開されます。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照してください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||`Null`|スクロール バー コントロールはコンテンツ要素を持たないため、`NameProperty` を設定する必要はありません。| +||数値でない値。|スクロール バー コントロールには、クリック可能なポイントはありません。| +||`Null`|スクロール バーには、ラベルはありません。| +||ScrollBar|この値は、すべてのフレームワークで同じです。 スライダーとして機能するスクロール バーには、Slider コントロール型を使用する必要があります。| +||"スクロール バー"|Button コントロール型に対応するローカライズされた文字列。| +||False|スクロール バー コントロールは、コンテンツ要素ではありません。 スクロール バーがスタンドアロンのコントロールである場合、そのスクロール バーは、Slider コントロール型の機能を満たし、`ControlType` プロパティの `ControlType.Slider` を返す必要があります。| +||True|スクロール バーは、常にコントロールである必要があります。| +||True|スクロール バー コントロールは、水平方向または垂直方向の向きを常に公開する必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、スクロール バー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 スクロール バーをマウス操作専用のコントロールとして使用する場合、スクロール バーはコントロール パターンをサポートしないことに注意してください。 スクロール バーをアプリケーション内のスライダー コントロールとして使用する場合は、Slider コントロール型にする必要があります。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||Never|Scroll コントロール パターンは、スクロール バーで直接的にはサポートされていません。| +||状況に依存|この機能は、スクロール バーのあるコンテナーで Scroll コントロール パターンがサポートされない場合に限ってサポートする必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのスクロール バー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|サポート\/値|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|Never|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-separator-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-separator-control-type.md new file mode 100644 index 00000000000..c34df154659 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-separator-control-type.md @@ -0,0 +1,77 @@ +--- +title: "UI Automation Support for the Separator Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Separator control type" + - "Separator control type" + - "control types, Separator" +ms.assetid: 89f42247-c699-4afa-91e1-2baaf0d86c9d +caps.latest.revision: 20 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 20 +--- +# UI Automation Support for the Separator Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、Separator コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 これらの条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + 区切り記号コントロールは、視覚的にスペースを 2 つの領域に分割するために使用します。 たとえば、区切り記号コントロールは、ウィンドウ内の 2 つのペインを定義するバーにすることができます。 区切り記号が移動可能な場合は、コントロールをコントロールの種類のサムネイルとして公開する必要があります。 + + 以降のセクションでは、Separator コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのリスト コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、区切り記号コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|区切り記号|- 区切り記号コントロールにはコンテンツがありません。| + + +## 必須の UI オートメーション プロパティ + 次の表に、区切り記号コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを列挙します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||ノートを参照してください。|このプロパティの値は、アプリケーション内のすべてのコントロールで一意である必要があります。| +||ノートを参照してください。|コントロール全体を格納する最も外側の四角形。| +||ノートを参照してください。|四角形領域が存在する場合にサポートされます。 四角形領域内にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、オーバーライドしてクリック可能な点を提供します。| +||ノートを参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||""|区切り記号コントロールには NameProperty が必要ありません。| +||`null`|区切り記号コントロールには静的ラベルがありません。| +||区切り記号|この値は、すべての UI フレームワークで同じです。| +||"区切り記号"|Separator コントロール型に対応する、ローカライズされた文字列。| +||False|区切り記号コントロールはコンテンツではありません。| +||True|区切り記号コントロールは常にコントロールにする必要があります。| + + +## 必須の UI オートメーション コントロール パターン + コントロール パターンをサポートするために、区切り記号コントロールは必要ありません。 + + +## 必須の UI オートメーション イベント + 次の表に、すべての区切り記号コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを列挙します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント|必須|なし| +| プロパティ変更イベント|必須|なし| +| プロパティ変更イベント|必須|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-slider-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-slider-control-type.md new file mode 100644 index 00000000000..21a39fdf80c --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-slider-control-type.md @@ -0,0 +1,87 @@ +--- +title: "UI Automation Support for the Slider Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Slider" + - "UI Automation, Slider control type" + - "Slider control type" +ms.assetid: 045ea62f-7b50-46cf-a5a9-8eb97704355f +caps.latest.revision: 18 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 18 +--- +# UI Automation Support for the Slider Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、スライダー コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、コントロールの種類に関する特定のガイドラインが含まれます。 + + スライダー コントロールは、ボタンを使用した複合コントロールであり、ユーザーはこれらのボタンを使用して、マウスで数値の範囲を設定したり、項目のセットから選択したりできます。 + + 以降のセクションで、スライダー コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかに関わらず、すべてのスライダー コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、コントロール ビューと、スライダー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|スライダー

- ボタン \(2 個または 4 個\)
- つまみ \(1 個のみ\)
- リスト項目 \(0 個以上\)|スライダー

- リスト項目 \(0 個以上\)| + + +## 必須の UI オートメーション プロパティ + 次の表に、スライダー コントロール型に特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|スライダー コントロールの四角形領域全体が子コントロールで占有されるため、スライダー コントロールの大多数は、 を生成する必要があります。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照。|編集コントロールの名前は、通常、静的なテキスト ラベルから生成されます。 静的なテキスト ラベルがない場合は、アプリケーション開発者が `Name` のプロパティ値を割り当てる必要があります。`Name` プロパティに、編集コントロールのテキストの内容が格納されることは決してありません。| +||「ノート」を参照。|コントロールに静的なテキスト ラベルが関連付けられている場合、このプロパティがそのコントロールの参照を公開する必要があります。 テキスト コントロールが別のコントロールのサブコンポーネントの場合、`LabeledBy` プロパティは設定されません。| +||スライダー|この値は、すべての [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークで同じです。| +||「スライダー」|編集コントロール型に対応する、ローカライズされた文字列。| +||True|編集コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに常に組み込まれます。| +||True|編集コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに常に組み込まれます。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、すべてのスライダー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|コンテンツが個別のオプション セットのうちの 1 つの値を表す場合、スライダーは Selection コントロール パターンをサポートする必要があります。 Selection コントロール パターンがサポートされている場合、対応する選択を、スライダーの 1 つまたは複数の子リスト項目として公開する必要があります。| +||状況に依存|コンテンツを数値の範囲内の値に設定できる場合、スライダーは RangeValue コントロール パターンをサポートする必要があります。| +||状況に依存|コンテンツが個別のオプション セットのうちの 1 つの値を表す場合、スライダーは Value コントロール パターンをサポートする必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのスライダー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 + + イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||状況に依存|なし| +| プロパティ変更イベント|必須|なし| +| プロパティ変更イベント|必須|なし| +| プロパティ変更イベント|必須|なし| +| プロパティ変更イベント|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-spinner-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-spinner-control-type.md new file mode 100644 index 00000000000..c5d6ddb5e64 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-spinner-control-type.md @@ -0,0 +1,97 @@ +--- +title: "UI Automation Support for the Spinner Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Spinner control type" + - "Spinner control type" + - "control types, Spinner" +ms.assetid: 3a29d185-65d8-42e3-bcc3-7f43e96f40c5 +caps.latest.revision: 21 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 21 +--- +# UI Automation Support for the Spinner Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Spinner コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 これらの条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + スピン ボタン コントロールは、ある範囲の項目や数字から選択するために使用します。 + + 以降のセクションでは、Spinner コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべてのスピン ボタン コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、Range Value、Value、および Selection の各コントロール パターンをサポートするスピン ボタン コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、各ビューに格納できるものについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + + **Range Value コントロール パターンまたは Value コントロール パターン** + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|Spinner

- Edit \(0 または 1\)
- Button \(2\)|Spinner| + + **Selection コントロール パターン** + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|Spinner

- Edit \(0 または 1\)
- Button \(2\)
- List Item \(0 以上\)|Spinner

- ListItem \(0 以上\)| + + コントロール ビュー サブツリーの 2 つのボタンを自動テスト ツールが区別できるようにするには、必要に応じて `SmallIncrement` または `SmallDecrement` `AutomationId` を割り当てます。 実装によっては、関連付けられたエディット コントロールが Spinner コントロールのピアである場合があります。 + + +## 必須の UI オートメーション プロパティ + 次の表に、スピン ボタン コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||ノートを参照してください。|このプロパティの値は、アプリケーション内のすべてのコントロールで一意にする必要があります。| +||ノートを参照してください。|コントロール全体を格納する最も外側の四角形。| +||ノートを参照してください。|スピン ボタン コントロールのクリック可能なポイントは、コントロールの編集部分にフォーカスを設定します。| +||ノートを参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||ノートを参照してください。|スピン ボタン コントロールは、通常、静的テキスト ラベルからその名前を取得します。| +||ノートを参照してください。|スピン ボタン コントロールには静的なテキスト ラベルがあります。| +||Spinner|この値は、すべての UI フレームワークで同じです。| +||"スピン ボタン"|Spinner コントロール型に対応する、ローカライズされた文字列。| +||True|スピン ボタン コントロールは、常にコンテンツである必要があります。| +||True|Spinner コントロールは、常にコントロールである必要があります。| + + +## 必須の UI オートメーション コントロール パターンおよびプロパティ + 次の表に、スピン ボタン コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン\/パターン プロパティ|サポート\/値|ノート| +|-----------------------------|-------------|---------| +||状況に依存|選択する項目のリストを持つスピン ボタン コントロールは、このパターンをサポートする必要があります。| +||False|スピン ボタン コントロールは、常に単一選択コンテナーです。| +||状況に依存|数値の範囲を対象にするスピン ボタン コントロールは、このパターンをサポートできます。| +||状況に依存|個別のオプション セットまたは数値のセットを対象にするスピン ボタン コントロールは、このパターンをサポートできます。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのスピン ボタン コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||状況に依存|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-splitbutton-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-splitbutton-control-type.md new file mode 100644 index 00000000000..4f77f67aaad --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-splitbutton-control-type.md @@ -0,0 +1,97 @@ +--- +title: "UI Automation Support for the SplitButton Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Split Button control type" + - "control types, Split Button" + - "UI Automation, Split Button control type" +ms.assetid: 14b05ccf-bcd8-4045-9bae-f7679cd98711 +caps.latest.revision: 23 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 23 +--- +# UI Automation Support for the SplitButton Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、SplitButton コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + 分割ボタン コントロールは、コントロールの操作を実行する機能、コントロールを展開して実行可能なその他の操作を一覧表示する機能を有効にします。 + + 以下の各セクションで、SplitButton コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合も、すべての分割ボタン コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、分割ボタン コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|SplitButton

  • Image \(0 または 1\)
  • Text \(0 または 1\)
  • Button \(1 または 2\)

    • Menu \(0 または 1。ExpandCollapse パターンをサポートするボタンの子として表示されます\)
    • MenuItem \(1 個以上\)
|SplitButton

- MenuItem \(1 個以上\)| + + +## 必須の UI オートメーション プロパティ + 次の表に、分割ボタン コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||"Back"|分割ボタン コントロールの名前は、ボタンに表示されます。| +||Null|分割ボタン コントロールに静的なテキスト ラベルはありません。| +||SplitButton|この値は、すべての UI フレームワークで同じです。| +||"split button"|SplitButton コントロール型に対応する、ローカライズされた文字列。| +||「ノート」を参照。|ヘルプ テキストで、分割ボタンをアクティブ化した場合の結果を示すことができます。これは一般に、ツールヒントに表示する情報と同じような情報です。| +||True|分割ボタン コントロールには、エンド ユーザーに対する情報が含まれます。| +||True|分割ボタン コントロールは、エンド ユーザーに表示されます。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、分割ボタン コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||必要|分割ボタンには、必ず呼び出しに関連付けられている既定の操作があります。| +||必要|分割ボタンには、必ずオプションの一覧を展開できる機能があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべての分割ボタン コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| + + +## SplitButton コントロールの例 + 次の図は、データ グリッド コントロールの SplitButton コントロール型を示しています。 + + ![分割ボタン](../../../docs/framework/ui-automation/media/uiauto-splitbutton-detailed.png "uiauto\_splitbutton\_detailed") + + 以下に、データ グリッド コントロールと分割ボタン コントロールに関連する UI オートメーション ツリーのコントロール ビューとコンテンツ ビューを示します。 オートメーションの各要素のコントロール パターンが、かっこ内に示されています。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コントロール ビュー|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー \- コンテンツ ビュー| +|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------| +|
  • SplitButton "Name" \(Invoke, ExpandCollapse\)
  • Button "More options" \(Invoke\)

    • メニュー
    • MenuItem
|
  • SplitButton "Name" \(Invoke, ExpandCollapse\)
  • Button "More options" \(Invoke\)

    • メニュー
    • MenuItem
| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-statusbar-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-statusbar-control-type.md new file mode 100644 index 00000000000..bb06d602ec6 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-statusbar-control-type.md @@ -0,0 +1,85 @@ +--- +title: "UI Automation Support for the StatusBar Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "StatusBar control type" + - "UI Automation, Status Bar control type" + - "control types, Status Bar" +ms.assetid: 48dee94a-5119-4939-a4c7-ffeaf794c732 +caps.latest.revision: 22 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 22 +--- +# UI Automation Support for the StatusBar Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、StatusBar コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、コントロール パターンに関する特定のガイドラインが含まれます。 + + ステータス バー コントロールは、アプリケーションのウィンドウに表示されているオブジェクトの情報、そのオブジェクトのコンポーネント、またはそのオブジェクトのアプリケーション内での操作に関連するコンテキストについての情報を表示します。 + + 以降のセクションで、StatusBar コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、イベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのステータス バー コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、ステータス バー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーについて詳しくは、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」をご覧ください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|StatusBar

- Edit \(0 以上\)
- ProgressBar \(0 以上\)
- Image \(0 以上\)
- Button \(0 以上\)|StatusBar

- Edit \(0 以上\)
- ProgressBar \(0 以上\)
- Image \(0 以上\)
- Button \(0 以上\)| + + +## 必須の UI オートメーション プロパティ + 次の表に、進行状況バー コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティについて詳しくは、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」をご覧ください。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||「ノート」をご覧ください。|ステータス バーの四角形領域は、ステータス バー コントロールに含まれるコントロールをすべて囲んでいる必要があります。| +||「ノート」をご覧ください。|四角形領域が存在する場合にサポートされます。 四角形領域内にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、オーバーライドしてクリック可能な点を提供します。| +||「ノート」をご覧ください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」をご覧ください。|アプリケーション内で複数のステータス バー コントロールが使用されている場合を除き、ステータス バー コントロールに名前は必要ありません。 複数のステータス バー コントロールが使用されている場合は、「インターネットの状態」や「アプリケーションの状態」などの名前で各バーを区別します。| +||`Null`|通常、ステータス バー コントロールにラベルはありません。| +||StatusBar|この値は、すべての UI フレームワークで同じです。| +||「ステータス バー」|StatusBar コントロール型に対応する、ローカライズされた文字列。| +||True|ステータス バー コントロールには、常にコンテンツが含まれます。| +||True|ステータス バー コントロールは、常にコントロールです。| +||状況に依存|ステータス バー コントロールは、現在画面上に表示されていなければこのプロパティに True を返します。| +||状況に依存|コントロールの向きを示す値 \(水平または垂直\)。| +||False|利用不可| +||`Null`|ステータス バーにアクセラレータ キーはありません。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、ステータス バー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンについて詳しくは、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」をご覧ください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||省略可能|個々の項目を監視して簡単に情報を参照できるように、ステータス バー コントロールはグリッド コントロール パターンをサポートする必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのステータス バー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントについて詳しくは、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-tab-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-tab-control-type.md new file mode 100644 index 00000000000..5bcd900b812 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-tab-control-type.md @@ -0,0 +1,98 @@ +--- +title: "UI Automation Support for the Tab Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "TabControl type" + - "UI Automation, Tab control type" + - "control types, Tab" +ms.assetid: f8be2732-836d-4e4d-85e2-73aa39479bf4 +caps.latest.revision: 20 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 20 +--- +# UI Automation Support for the Tab Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Tab コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 これらの条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ値、および [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]. コントロール パターンに関する特定のガイドラインが含まれます。 + + タブ コントロールは、ノートの仕切ページまたはファイル キャビネットのラベルに似ています。 タブ コントロールを使用すると、アプリケーションでウィンドウまたはダイアログ ボックスの同じ領域に複数のページを定義できます。 + + 以降のセクションでは、Tab コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)]であるかどうかに関係なく、すべてのタブ コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、タブ コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|タブ

  • TabItem \(1 以上\)
  • ScrollBar \(0 または 1\)

    • Button \(0 または 2\)
|タブ

- TabItem \(1 以上\)| + + タブ コントロールには、Tab Item コントロール型に基づく子 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]要素があります。 タブ項目がグループ化されている場合 \(たとえば、Microsoft Office 2007 アプリケーションでのように\)、Tab コントロール型では、次のツリー構造に示すように、グループ化されたタブ項目の Group コントロール型もホストできます。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|タブ

  • TabItem \(1 以上\)
  • Group \(0 以上\)

    • TabItem \(0 以上\)
  • ScrollBar \(0 以上\)

    • Button \(0 または 2\)
|タブ

  • TabItem \(1 以上\)
  • Group \(0 以上\)

    • TabItem \(0 以上\)
| + + +## 必須の UI オートメーション プロパティ + 次の表に、Tab コントロール型に特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||ノートを参照してください。|このプロパティの値は、アプリケーション内のすべてのコントロールで一意にする必要があります。| +||ノートを参照してください。|コントロール全体を格納する最も外側の四角形。| +||ノートを参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||ノートを参照してください。|タブ コントロールで、Name プロパティが必要になることはほとんどありません。| +||いいえ|タブ コントロールには、クリックできるポイントはありません。| +||ノートを参照してください。|タブ コントロールには、通常、このプロパティで公開される静的なテキスト ラベルがあります。| +||タブ|この値は、すべての UI フレームワークで同じです。| +||"タブ"|Tab コントロール型に対応する、ローカライズされた文字列。| +||True|Tab コントロール型は、キーボード フォーカスを受け取ることができる必要があります。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クライアントは、通常タブ コントロールの SetFocus を呼び出し、その項目の 1 つが、キーボード フォーカスをタブ コントロールに送ります。 タブ コンテナーによっては、その項目の 1 つにフォーカスを設定することなく、フォーカスを受け取ることができます。| +||True|タブ コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれます。| +||True|タブ コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| +||ノートを参照してください。|タブ コントロールでは、そのタブが水平方向または垂直方向のどちらに配置されるのかを常に示す必要があります。| + + +## 必須の UI オートメーション コントロール パターンおよびプロパティ + 次の表に、すべてのタブ コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン\/パターン プロパティ|サポート\/値|ノート| +|-----------------------------|-------------|---------| +||はい|すべてのタブ コントロールが、Selection パターンをサポートする必要があります。| +||True|タブ コントロールで、常に選択が行われる必要があります。| +||False|タブ コントロールは、常に単一選択コンテナーです。| +||状況に依存|Scroll パターンは、一連のタブ項目全体をスクロールできるようにするウィジェットを持つタブ コントロールでサポートされる必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのタブ コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-tabitem-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-tabitem-control-type.md new file mode 100644 index 00000000000..3e8a5e76b91 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-tabitem-control-type.md @@ -0,0 +1,85 @@ +--- +title: "UI Automation Support for the TabItem Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Tab Item control type" + - "control types, Tab Item" + - "UI Automation, Tab Item control type" +ms.assetid: 9b21160d-e1c2-468b-9275-26e4369ae40d +caps.latest.revision: 22 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 22 +--- +# UI Automation Support for the TabItem Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、TabItem コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートに関する情報を提供します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 これらの条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + タブ項目コントロールは、ウィンドウに表示される特定のページを選択するタブ コントロール内のコントロールとして使用されます。 + + 以降のセクションでは、TabItem コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのタブ項目コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表では、タブ項目コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、各ビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|TabItem

  • イメージ \(0 または 1\)
  • テキスト
  • ペイン

    • 各種コントロール \(0 以上\)
|TabItem

  • ペイン

    • 各種コントロール \(0 以上\)
| + + +## 必須の UI オートメーション プロパティ + 次の表に、タブ項目コンロトールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||ノートを参照してください。|このプロパティの値は、アプリケーション内のすべてのコントロールで一意である必要があります。| +||ノートを参照してください。|コントロール全体を格納する最も外側の四角形。| +||ノートを参照してください。|タブ項目コントロールには、項目が選択された状態になるクリック可能なポイントが必要です。| +||ノートを参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||ノートを参照してください。|タブ項目コントロールは、それ自体がラベルです。| +||`Null`|タブ項目コントロールには、静的テキスト ラベルはありません。| +||TabItem|この値は、すべての UI フレームワークで同じです。| +||"タブ項目"|このコントロール型に対応する、ローカライズされた文字列。| +||True|タブ項目コントロールは、常にコンテンツである必要があります。| +||True|タブ項目コントロールは、常にコントロールである必要があります。| +||ノートを参照してください。|このプロパティは、関連付けられたタブ ウィンドウへのポインターとして使用できます。 これは、タブ項目のオブジェクトの子として、ウィンドウをホストできない場合に便利です。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、タブ項目コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンの一覧を示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||はい|タブ項目コントロールは、SelectionItemPattern をサポートする必要があります。| +||いいえ|タブ項目コントロールは、InvokePattern をサポートしません。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのタブ項目コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントの一覧を示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-table-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-table-control-type.md new file mode 100644 index 00000000000..6d2879e5594 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-table-control-type.md @@ -0,0 +1,88 @@ +--- +title: "UI Automation Support for the Table Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "TableControl type" + - "control types, Table" + - "UI Automation, Table control type" +ms.assetid: 9050dde5-6469-4c83-abb7-f861c24ff985 +caps.latest.revision: 21 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 21 +--- +# UI Automation Support for the Table Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、Table コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートに関する情報を提供します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、コントロール パターンに関する特定のガイドラインが含まれます。 + + テーブル コントロールは、テキストの行と列、およびオプションで行ヘッダーと列ヘッダーを格納します。 + + 以降のセクションでは、Table コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、イベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのテーブル コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、テーブル コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーについて詳しくは、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」をご覧ください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|テーブル

- ヘッダー \(0 または 1\)
- テキスト \(0 または 1\)
- 各種コントロール \(0 以上\)|テーブル

- テキスト \(0 以上\)
- 各種コントロール \(0 以上\)| + + テーブル コントロールに行ヘッダーまたは列ヘッダーが含まれている場合は、それらを UI オートメーション ツリーのコントロール ビューで公開する必要があります。 コンテンツ ビューは、TablePattern を使用してアクセスできるため、この情報を公開する必要がありません。 + + +## 必須の UI オートメーション プロパティ + 次の表に、テーブル コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティについて詳しくは、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」をご覧ください。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||「ノート」をご覧ください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」をご覧ください。|四角形領域が存在する場合にサポートされます。 四角形領域内にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、オーバーライドしてクリック可能な点を提供します。| +||「ノート」をご覧ください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」をご覧ください。|通常、テーブル コントロールは、静的テキスト ラベルからその名前を取得します。 静的テキスト ラベルが存在しない場合は、Name プロパティを割り当てる必要があります。このプロパティは、テーブルの目的を説明するために常に利用できる必要があります。| +||「ノート」をご覧ください。|静的テキスト ラベルが存在する場合、このプロパティは、そのコントロールのオートメーション要素への参照を公開する必要があります。| +||テーブル|この値は、すべての UI フレームワークで同じです。| +||"テーブル"|Table コントロール型に対応する、ローカライズされた文字列。| +||「ノート」をご覧ください。|NameProperty にアクセスするだけではテーブルの目的が十分伝わらない場合は、このプロパティを介してさらに詳しく説明する必要があります。| +||「ノート」をご覧ください。|他の UI 要素 \(テーブルの説明を保持するテキスト要素など\) によってテーブルに注釈が指定されている場合、DescribedBy プロパティは、そのテキスト コントロールのオートメーション要素への参照を公開する必要があります。| +||True|テーブル コントロールは、常にコンテンツである必要があります。| +||True|テーブル コントロールは、常にコントロールである必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、テーブル コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンについて詳しくは、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」をご覧ください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||はい|テーブルに格納される項目にはグリッドに表示されるデータが含まれるため、テーブル コントロールはこのコントロール パターンを常にサポートします。| +||はい \(子オブジェクトでは必須\)|テーブルの内部オブジェクトは、GridItem と TableItem の両方のコントロール パターンをサポートする必要があります。 テーブル自体では、それが別のテーブルの一部である場合を除いて、GridItem コントロール パターンも TableItem コントロール パターンもサポートする必要がありません。| +||はい|テーブル コントロールは、常に、ヘッダーとコンテンツを関連付けることができます。| +||はい \(子オブジェクトでは必須\)|テーブルの内部オブジェクトは、GridItem と TableItem の両方のコントロール パターンをサポートする必要があります。 テーブル自体では、それが別のテーブルの一部である場合を除いて、GridItem コントロール パターンも TableItem コントロール パターンもサポートする必要がありません。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのテーブル コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントについて詳しくは、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-text-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-text-control-type.md new file mode 100644 index 00000000000..3cef463739c --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-text-control-type.md @@ -0,0 +1,98 @@ +--- +title: "UI Automation Support for the Text Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Text control type" + - "UI Automation, Text control type" + - "control types, Text" +ms.assetid: ab0d0ada-8a71-4547-9c03-aadf675938f2 +caps.latest.revision: 19 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 19 +--- +# UI Automation Support for the Text Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Text コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 これらの条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + テキスト コントロールは、画面上のテキストを表す、基本的なユーザー インターフェイス項目です。 + + 以降のセクションで、Text コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのテキスト コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、テキスト コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|テキスト|テキスト \(コンテンツの場合\)| + + テキスト コントロールは、単独でラベルとして使用することも、フォーム上の静的テキストとして使用することもできます。 また、次の構造に含めることもできます。 + +- ListItem + +- TreeItem + +- DataItem + + テキストは多くの場合、別のコントロールの `NameProperty` によって表示されるため、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューにテキスト コントロールは含まれないことがあります。 たとえば、コンボ ボックス コントロールのラベル付けに使用されるテキストは、そのコントロールの `NameProperty` 値を使用して公開されます。 コンボ ボックス コントロールが UI オートメーション ツリーのコンテンツ ビューに存在するので、テキスト コントロールがこのビューに存在する必要はありません。 コンテンツ ビューに、テキスト コントロールの子が存在することはありません。 + + +## 必須の UI オートメーション プロパティ + 次の表に、テキスト コンロトールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーション内のすべてのコントロールで一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照。|常に、テキスト バー コントロールが表示するテキストが、そのコントロールの名前になります。| +||`Null`|テキスト コントロールに静的なテキスト ラベルはありません。| +||テキスト|この値は、すべての UI フレームワークで同じです。| +||「テキスト」|Text コントロール型に対応する、ローカライズされた文字列。| +||状況に依存|テキスト コントロールに、別のコントロールの NameProperty で公開されていない情報が含まれている場合、テキスト コントロールはコンテンツになります。| +||True|テキスト コントロールは、常にコントロールである必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、テキスト コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||Never|テキストが ValuePattern をサポートすることはありません。 テキストが編集可能な場合、それは Edit コントロール型です。| +||状況に依存|テキストはアクセシビリティを向上させるために Text コントロール パターンをサポートする必要がありますが、必須ではありません。 テキストにさまざまなスタイルや属性 \(たとえば、色、太字、斜体など\) がある場合、Text コントロール パターンを使用すると便利です。これは、フレームワークに依存します。| +||状況に依存|テキスト要素がテーブル コントロール内に含まれている場合は、サポートする必要があります。| +||状況に依存|テキスト要素がテーブル コントロール内に含まれている場合は、サポートする必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのテキスト コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|Never|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-thumb-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-thumb-control-type.md new file mode 100644 index 00000000000..659ccf9e872 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-thumb-control-type.md @@ -0,0 +1,83 @@ +--- +title: "UI Automation Support for the Thumb Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Thumb" + - "UI Automation, Thumb control type" + - "Thumb control type" +ms.assetid: 13636338-e320-4355-b071-ede20a3fb1de +caps.latest.revision: 20 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 20 +--- +# UI Automation Support for the Thumb Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Thumb コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + Thumb コントロールは、スクロール バー ボタンなどのようにコントロールを移動 \(またはドラッグ\) したり、ウィンドウ サイズ変更ウィジェットなどのようにサイズ変更したりできる機能を提供します。 Thumb コントロールは、ウィンドウの移動可能な枠線として実装することもできます。 ドラッグ アンド ドロップ機能は提供されないことに注意してください。 Thumb コントロールは、マウス フォーカスを受け取ることはできますが、通常キーボード フォーカスを受け取ることはできません。 コントロール開発者は、適切に動作するように \(ドラッグしたりサイズ変更したりできるように\)、コントロールを実装する必要があります。 + + 以下の各セクションで、Thumb コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべての Thumb コントロールに当てはまります。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、Thumb コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|つまみ|- 該当なし| + + Thumb コントロールは、マウスを使用して操作するためだけに存在しているので、コンテンツ ビューには表示されません。 これらの機能は、Thumb コンテナーでサポートされる Scroll パターン、Transform パターン、RangeValue パターンなど別のコントロール パターンを使用して公開されます。 + + +## 必須の UI オートメーション プロパティ + 次の表に、Thumb コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照してください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照してください。|Thumb コントロールの表示されているクライアント領域内の任意のポイント。| +||「ノート」を参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||`Null`|Thumb コントロールは、UI オートメーション ツリーのコンテンツ ビューには表示されないため、名前は不要です。| +||`Null`|Thumb コントロールにラベルはありません。| +||つまみ|この値は、すべての UI フレームワークで同じです。| +||"Thumb"|Thumb コントロール型に対応する、ローカライズされた文字列。| +||False|Thumb コントロールにコンテンツはありません。| +||True|Thumb コントロールは、常にコントロールである必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、Thumb コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン\/パターン プロパティ|サポート\/値|ノート| +|-----------------------------|-------------|---------| +||必要|Thumb コントロールを画面で移動できるようにします。| + + +## 必須の UI オートメーション イベント + 次の表に、すべての Thumb コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-titlebar-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-titlebar-control-type.md new file mode 100644 index 00000000000..44aaaddfe17 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-titlebar-control-type.md @@ -0,0 +1,80 @@ +--- +title: "UI Automation Support for the TitleBar Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Title Bar" + - "Title Bar control type" + - "UI Automation, Title Bar control type" +ms.assetid: 3b7a4e13-0305-45d5-bc33-1f4133c50782 +caps.latest.revision: 21 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 21 +--- +# UI Automation Support for the TitleBar Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、TitleBar コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 これらの条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のプロパティ値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + タイトル バー コントロールは、ウィンドウ内のタイトルまたはキャプション バーを表します。 + + 以下の各セクションで、TitleBar コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのタイトル バー コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、タイトル バー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含まれる可能性のある内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|TitleBar

- Menu \(0 または 1\)
- Button \(0 以上\)|該当なし。 \(タイトル バー コントロールにはコンテンツはありません。\)| + + +## 必須の UI オートメーション プロパティ + 次の表に、TitleBar コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||ノートを参照してください。|このプロパティの値は、アプリケーション内のすべてのコントロールで一意にする必要があります。| +||ノートを参照してください。|タイトル バーの四角形領域は、タイトル バー コントロールに含まれるコントロールをすべて囲んでいる必要があります。| +||ノートを参照してください。|四角形領域が存在する場合にサポートされます。 四角形領域の内側にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、クリック可能な点をオーバーライドして提供します。| +||False|タイトル バーで、キーボード フォーカスを持つことはありません。| +||""|タイトル バーはコンテンツではありません。タイトル バーのテキスト情報は、親ウィンドウで公開されます。| +||ノートを参照してください。|通常、タイトル バー コントロールにラベルはありません。| +||TitleBar|この値は、すべての UI フレームワークで同じです。| +||"タイトル バー"|TitleBar コントロール型に対応する、ローカライズされた文字列。| +||False|タイトル バー コントロールはコンテンツではありません。| +||True|タイトル バー コントロールは、常にコントロールである必要があります。| +||状況に依存|このコントロールは、タイトル バーが画面上に表示されているかどうかに応じた値を返します。| +||""|ヘルプ テキストを公開する必要はありません。| +||""|タイトル バーで、アクセラレータ キーを持つことはありません。| +||""|タイトル バー コントロールにアクセス キーはありません。| + + +## 必須の UI オートメーション コントロール パターン + TitleBar コントロール型は、どのコントロール パターンもサポートする必要はありません。 タイトル バーの機能は、Window コントロール上の Window コントロール パターンを通じて公開されます。 + +## 必須の UI オートメーション イベント + 次の表に、すべてのタイトル バー コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|Never|なし| +||Never|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-toolbar-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-toolbar-control-type.md new file mode 100644 index 00000000000..819046ccc69 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-toolbar-control-type.md @@ -0,0 +1,84 @@ +--- +title: "UI Automation Support for the ToolBar Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Toolbar" + - "UI Automation, Toolbar control type" + - "ToolBar control type" +ms.assetid: 85152efd-f4c5-430c-8878-3371cc598616 +caps.latest.revision: 21 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 21 +--- +# UI Automation Support for the ToolBar Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、ToolBar コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 ツール バー コントロールを使用すれば、エンドユーザーは、アプリケーション内に含まれるコマンドやツールをアクティブにすることができます。 + + 以下の各セクションで、ToolBar コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのツール バー コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、ツール バー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ToolBar

- 各種コントロール \(0 以上\)|ToolBar

- 各種コントロール \(0 以上\)| + + ツール バー コントロールには、そのサブツリー内に任意の型のコントロールを含めることができます。 ほとんどの場合は、ボタン、コンボ ボックス、およびスプリット ボタンが含まれています。 + + +## 必須の UI オートメーション プロパティ + 次の表に、ツール バー コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照してください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照してください。|四角形領域が存在する場合にサポートされます。 四角形領域内にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、オーバーライドしてクリック可能な点を提供します。| +||「ノート」を参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||状況に依存|アプリケーション内で複数のツール バー コントロールが使用されている場合を除き、ツール バー コントロールに名前は必要ありません。 複数のツール バー コントロールが存在する場合は、それぞれに特徴的な名前 \(Formatting や Outlining など\) を付ける必要があります。| +||`Null`|ツール バー コントロールにラベルはありません。| +||ToolBar|この値は、すべての UI フレームワークで同じです。| +||"tool bar"|ToolBar コントロール型に対応する、ローカライズされた文字列。| +||True|ツール バー コントロールは常にコンテンツです。| +||True|ツール バー コントロールは、常にコントロールである必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、ツール バー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|ツール バーを展開または折りたたむことでさらに多くの項目を表示可能な場合は、このパターンをサポートする必要があります。| +||状況に依存|ツール バーを画面のさまざまな部分にドッキング可能な場合は、このパターンをサポートする必要があります。| +||状況に依存|ツール バーをサイズ変更、回転、または移動可能な場合は、このパターンをサポートする必要があります。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのツール バー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-tooltip-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-tooltip-control-type.md new file mode 100644 index 00000000000..0340e039810 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-tooltip-control-type.md @@ -0,0 +1,96 @@ +--- +title: "UI Automation Support for the ToolTip Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, ToolTip control type" + - "ToolTip control type" + - "control types, ToolTip" +ms.assetid: c3779d78-3164-43ae-8dae-bfaeafffdd65 +caps.latest.revision: 22 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 22 +--- +# UI Automation Support for the ToolTip Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、ToolTip コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + ツール ヒント コントロールは、テキストを含むポップアップ ウィンドウです。 + + 以下の各セクションで、ToolTip コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、すべてのツール ヒント コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、ツール ヒント コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ヒント

- テキスト \(0 個以上\)
- イメージ \(0 個以上\)|ヒント| + + ツール ヒント コントロールは、キーボード フォーカスを受け取ることができる場合は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューにのみ表示されます。 それ以外の場合、ツール ヒントの情報はすべて、ツール ヒントが参照している [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要素の `HelpTextProperty` から取得できます。 + + ツール ヒントは、その情報が参照しているコントロールの下に表示されます。 クライアントは、ツール ヒントに含まれる情報を常に取得できるよう、`ToolTipOpenedEvent` をリッスンする必要があります。 + + +## 必須の UI オートメーション プロパティ + 次の表に、ツール ヒント コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照してください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照してください。|クリック可能なポイントは、コントロールを閉じるツール ヒントの部分である必要があります。 一部のツール ヒントには、この機能がありません。その場合、クリック可能なポイントを持ちません。| +||「ノート」を参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照してください。|ツール ヒント内に表示されるテキストがツール ヒント コントロールの名前になります。| +||`Null`|ツール ヒント コントロールは、常にそのコンテンツで自己ラベル付けを行います。| +||ヒント|この値は、すべての UI フレームワークで同じです。| +||"ツール ヒント"|ToolTip コントロール型に対応する、ローカライズされた文字列。| +||状況に依存|ツール ヒント コントロールがキーボード フォーカスを受け取ることができる場合、ツリーのコンテンツ ビューにのみ表示される必要があります。 テキストのみである場合は、生成元のコントロールの HelpTextProperty として取得できます。| +||True|ツール ヒント コントロールは、常にコントロールである必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、ツール ヒント コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||状況に依存|UI 項目をクリックして閉じることができるツール ヒントは、自動的に閉じるように、WindowPattern をサポートする必要があります。| +||状況に依存|アクセシビリティを向上させるために、ツール ヒント コントロールでは Text コントロール パターンをサポートできますが、必須ではありません。 テキストにさまざまなスタイルや属性 \(たとえば、色、太字、斜体など\) がある場合、Text コントロール パターンの使用をお勧めします。| + + +## 必須の UI オートメーション イベント + ツール ヒント コントロールは、画面に表示された場合に `ToolTipOpenedEvent` を生成する必要があります。 イベントにツール ヒント自体の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 要素への参照が組み込まれます。 + + 次の表に、すべてのツール ヒント コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||状況に依存|なし| +||状況に依存|なし| +||状況に依存|なし| +||状況に依存|なし| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-tree-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-tree-control-type.md new file mode 100644 index 00000000000..d54ecd6b1f6 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-tree-control-type.md @@ -0,0 +1,99 @@ +--- +title: "UI Automation Support for the Tree Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Tree" + - "Tree control type" + - "UI Automation, Tree control type" +ms.assetid: 312dd04d-a86b-4072-8b12-2beeabdff5e3 +caps.latest.revision: 20 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 20 +--- +# UI Automation Support for the Tree Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、Tree コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + Tree コントロール型は、ファイルやフォルダーが [!INCLUDE[TLA#tla_winexpl](../../../includes/tlasharptla-winexpl-md.md)] の左ウィンドウに表示される場合のように、ノード階層の関係を持つコンテンツのコンテナーに使用されます。 各ノードに、子ノードと呼ばれる他のノードが含まれている可能性があります。 親ノード \(子ノードを含むノード\) は、展開した状態または折りたたんだ状態で表示できます。 + + 以下の各セクションで、Tree コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、または [!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] であるかどうかに関係なく、すべてのツリー コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、ツリー コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ツリー

  • DataItem \(0 以上\)
  • TreeItem \(0 以上\)

    • TreeItem \(0 以上\)• …
  • ScrollBar \(0、1、2\)
|ツリー

  • DataItem \(0 以上\)
  • TreeItem \(0 以上\)

    • TreeItem \(0 以上\)• …
| + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューは、次のものから構成されます。 + +- コンテナー内の 0 個以上の項目 \(項目は、Tree Item コントロール型、Data Item コントロール型、またはその他のコントロール型に基づいて設定できます\)。 + +- 0、1、または 2 個のスクロール バー。 + + コンテンツ ビューの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーは、コンテナー内の 0 個以上の項目から構成されます \(項目は、TreeItem コントロール型、DataItem コントロール型、またはその他のコントロール型に基づいている可能性があります\)。 + + +## 必須の UI オートメーション プロパティ + 次の表に、リスト コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照してください。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照してください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照してください。|ツリー コントロールには、クリックするとツリーまたはツリー コンテナー内の 1 つの項目にフォーカスが設定される、クリック可能なポイントがあります。 ツリーのクリック可能なポイントを取得するのは、項目を 1 つ選択したり項目にフォーカスを設定したりすることなくクリックできる場所がある場合に限られます。| +||ツリー|この値は、すべての UI フレームワークで同じです。| +||True|ツリー コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれます。| +||True|ツリー コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| +||「ノート」を参照してください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照してください。|ツリー コントロールにラベルが関連付けられている場合、このプロパティはそのラベルの を返します。 それ以外の場合、このプロパティは null 参照 \([!INCLUDE[TLA#tla_visualbnet](../../../includes/tlasharptla-visualbnet-md.md)] の `Nothing`\) を返します。| +||"ツリー"|List コントロール型に対応する、ローカライズされた文字列。| +||「ノート」を参照してください。|ツリー コントロールの名前プロパティの値は、通常、コントロールにラベルを付けるテキストから取得されます。 テキスト ラベルが存在しない場合は、アプリケーションの開発者がこのプロパティの値を提供する必要があります。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、リスト コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン\/パターン プロパティ|サポート\/値|ノート| +|-----------------------------|-------------|---------| +||状況に依存|選択可能な一連の項目を含むツリー コントロールは、このコントロール パターンを実装する必要があります。 項目を選択してもユーザーに意味のある情報が伝達されない場合は、このコントロール パターンを実装する必要はありません。| +||「ノート」を参照してください。|ツリー コントロールが複数選択をサポートする場合、このプロパティを実装します \(ほとんどのツリー コントロールは、複数選択をサポートしません\)。| +||「ノート」を参照してください。|このプロパティの値は、コントロールで項目が選択される必要がある場合に公開されます。| +||状況に依存|ツリー コンテナーのコンテンツがスクロールできる場合は、このコントロール パターンを実装します。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのツリー コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||状況に依存|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type.md new file mode 100644 index 00000000000..ed0bf0aae66 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-treeitem-control-type.md @@ -0,0 +1,105 @@ +--- +title: "UI Automation Support for the TreeItem Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "control types, Tree Item" + - "Tree Item control type" + - "UI Automation, Tree Item control type" +ms.assetid: 229f341a-477f-434e-b877-4db9973068eb +caps.latest.revision: 22 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 22 +--- +# UI Automation Support for the TreeItem Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックでは、TreeItem コントロール型に対する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] のサポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、およびコントロール パターンに関する特定のガイドラインが含まれます。 + + TreeItem コントロール型は、ツリー コンテナー内のノードを表します。 各ノードには、"子ノード" と呼ばれるその他のノードが含まれている可能性があります。 親ノード \(子ノードを含むノード\) は、展開した状態または折りたたんだ状態で表示できます。 + + 以下の各セクションで、TreeItem コントロール型に必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合も、すべてのツリー項目コントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、ツリー項目コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、各ビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|TreeItem

- CheckBox \(0 または 1\)
- Image \(0 または 1\)
- Button \(0 または 1\)
- TreeItem \(0 以上\)|TreeItem

- TreeItem \(0 以上\)| + + ツリー項目コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに 0 個以上のツリー項目の子を持つことができます。 ツリー項目コントロールに次に示すコントロール パターンで公開されている以外の機能がある場合は、コントロールは Data Item コントロール型に基づく必要があります。 + + 折りたたまれているツリー項目は、展開して表示される \(または、スクロールして表示される\) まで、コントロール ビューまたはコンテンツ ビューに表示されません。 + + コントロール ビューには、関連付けられているイメージやボタンなど、コントロールの追加の詳細を含めることができます。 たとえば、アウトライン表示の項目には、イメージの他にアウトラインを展開または折りたたむボタンが含まれる場合があります。 これらの詳細オブジェクトは、情報が親のツリー項目によって既に表されているため、コンテンツ ビューに表示されません。 画面の外にスクロールされたツリー項目が [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューの両方に表示されます。それらの は true に設定する必要があります。 + + +## 必須の UI オートメーション プロパティ + 次の表に、リスト コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの詳細については、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」を参照。|このプロパティの値は、アプリケーションのすべてのコントロールにおいて一意である必要があります。| +||「ノート」を参照。|コントロール全体を格納する最も外側の四角形。| +||「ノート」を参照。|このプロパティは、選択状態を変更またはフォーカスを設定する項目を原因となるアイテムの場所を返す必要があります。| +||TreeItem|この値は、すべての UI フレームワークで同じです。| +||True|リスト コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに含まれます。| +||True|リスト コントロールは、常に [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューに含まれます。| +||「ノート」を参照。|このプロパティは、ツリー項目コントロールが画面の外にスクロールされたことを示すために設定します。| +||「ノート」を参照。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||「ノート」を参照。|ツリー項目コントロールで、特定の型のオブジェクトであることを示すために表示されるアイコンを使用する場合、このプロパティをサポートし、オブジェクトの種類を指定する必要があります。| +||`Null`|ツリー項目コントロールは、自動的にラベル付けされます。| +||"tree item"|TreeItem コントロール型に対応するローカライズされた文字列。| +||「ノート」を参照。|このプロパティは、各ツリー項目コントロールに表示されるテキストを公開します。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、リスト コントロールでサポートされなければならない [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンを示します。 コントロール パターンの詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +|コントロール パターン\/パターン プロパティ|サポート\/値|ノート| +|-----------------------------|-------------|---------| +||状況に依存|ツリー項目に操作可能な別のコマンドがある場合は、このコントロール パターンを実装します。| +||はい|すべてのツリー項目を展開または折りたたむことができます。| +||展開されたノード、折りたたまれたノード、またはリーフ ノード|ツリー項目は、展開されたり、折りたたまれたりしない場合は、リーフ ノードになります。| +||状況に依存|ツリー コンテナーが Scroll コントロール パターンをサポートする場合、このコントロール パターンを実装します。| +||状況に依存|ユーザーがツリー コンテナーに戻るときに、アクティブな選択を保持することができる場合、このコントロール パターンを実装します。| +||はい|このプロパティは、コンテナー内のすべての項目に対して同じコンテナーを公開します。| +||状況に依存|ツリー項目に関連付けられたチェック ボックスがある場合、このコントロール パターンを実装します。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのツリー項目コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントの詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +||状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +||状況に依存|なし| +||状況に依存|なし| +||状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-support-for-the-window-control-type.md b/docs/framework/ui-automation/ui-automation-support-for-the-window-control-type.md new file mode 100644 index 00000000000..d3908cdaef6 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-support-for-the-window-control-type.md @@ -0,0 +1,95 @@ +--- +title: "UI Automation Support for the Window Control Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, Window control type" + - "Window control type" + - "control types, Window" +ms.assetid: 53be78a6-cdcc-4af3-a464-5927d19c54e8 +caps.latest.revision: 19 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 19 +--- +# UI Automation Support for the Window Control Type +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + このトピックでは、Window コントロール型の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] サポートについて説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]でのコントロール型とは、コントロールが プロパティを使用するために満たす必要がある一連の条件のことです。 条件には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー構造、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティの値、コントロール パターンに関する特定のガイドラインが含まれます。 + + ウィンドウ コントロールは、子オブジェクト \(タイトル バー、クライアント、その他のオブジェクトなど\) が含まれているウィンドウ フレームで構成されます。 + + 以下のセクションの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の要件は、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)]、[!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)] のいずれの場合でも、Window コントロール型を実装するすべてのコントロールに適用されます。 + + +## 必須の UI オートメーション ツリー構造 + 次の表に、ウィンドウ コントロールに関連する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコントロール ビューとコンテンツ ビューを示し、それぞれのビューに含めることができる内容について説明します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーについて詳しくは、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」をご覧ください。 + +|コントロール ビュー|コンテンツ ビュー| +|----------------|---------------| +|ウィンドウ|ウィンドウ| + + +## 必須の UI オートメーション プロパティ + 次の表に、ウィンドウ コントロールに特に関連する値または定義を持つ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを示します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティについて詳しくは、「[UI Automation Properties for Clients](../../../docs/framework/ui-automation/ui-automation-properties-for-clients.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティ|値|ノート| +|---------------------------------------------------------------------------------|-------|---------| +||「ノート」をご覧ください。|このプロパティの値は、アプリケーションのすべてのコントロールで一意である必要があります。| +||「ノート」をご覧ください。|コントロール全体を格納する最も外側の四角形。| +||「ノート」をご覧ください。|ウィンドウ コントロールにはクリック可能なポイントがなければならず、これをクリックすることによってウィンドウが選択、または選択解除された状態になります。| +||\[Window\]|この値は、すべての UI フレームワークで同じです。| +||True|ウィンドウ コントロールは、常にコンテンツである必要があります。| +||True|ウィンドウ コントロールは、常にコントロールである必要があります。| +||「ノート」をご覧ください。|コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。| +||`null`|ウィンドウ コントロールには、静的な Window ラベルがありません。| +||"window"|Window コントロール型に対応する、ローカライズされた文字列。| +||「ノート」をご覧ください。|ウィンドウ コントロールには、主要なウィンドウ要素が常に含まれています。この要素は、ユーザーがその項目の最もセマンティックな識別子として関連付けるであろうものに関連しています。| + + +## 必須の UI オートメーション コントロール パターン + 次の表に、ウィンドウ コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンの一覧を示します。 コントロール パターンについて詳しくは、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」をご覧ください。 + +|コントロール パターン|Support|ノート| +|-----------------|-------------|---------| +||条件|ウィンドウがドッキングできる場合は、サポートする必要があります。| +||必要|ウィンドウが画面上で移動、サイズ変更、または回転できるようにします。| +||必要|ウィンドウで特定の操作ができるようにします。| + + +## 必須の UI オートメーション イベント + 次の表に、すべてのウィンドウ コントロールでサポートする必要がある [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベントを示します。 イベントについて詳しくは、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」をご覧ください。 + +|[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント|Support|ノート| +|--------------------------------------------------------------------------------|-------------|---------| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +| プロパティ変更イベント。|必須|なし| +||必要|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +| プロパティ変更イベント。|状況に依存|なし| +||必要|なし| +||必要|なし| +| プロパティ変更イベント。|状況に依存|なし| + +## 参照 + + [UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md) + [UI Automation Overview](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-text-pattern-how-to-topics.md b/docs/framework/ui-automation/ui-automation-text-pattern-how-to-topics.md new file mode 100644 index 00000000000..917bc2f4006 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-text-pattern-how-to-topics.md @@ -0,0 +1,37 @@ +--- +title: "UI Automation Text Pattern-How-to Topics | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "UI Automation, TextPattern class" + - "TextPattern class" + - "classes, TextPattern" +ms.assetid: ca6ac045-7b21-4487-9379-59aa20909670 +caps.latest.revision: 62 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 62 +--- +# UI Automation Text Pattern-How-to Topics +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このセクションのトピックでは、UI オートメーション テキスト パターンの使用方法について説明します。 + +## このセクションの内容 + [Add Content to a Text Box Using UI Automation](../../../docs/framework/ui-automation/add-content-to-a-text-box-using-ui-automation.md) + [Find and Highlight Text Using UI Automation](../../../docs/framework/ui-automation/find-and-highlight-text-using-ui-automation.md) + [Obtain Text Attributes Using UI Automation](../../../docs/framework/ui-automation/obtain-text-attributes-using-ui-automation.md) + [Obtain Mixed Text Attribute Details Using UI Automation](../../../docs/framework/ui-automation/obtain-mixed-text-attribute-details-using-ui-automation.md) + [Traverse Text Using UI Automation](../../../docs/framework/ui-automation/traverse-text-using-ui-automation.md) + [Access Embedded Objects Using UI Automation](../../../docs/framework/ui-automation/access-embedded-objects-using-ui-automation.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-text-pattern.md b/docs/framework/ui-automation/ui-automation-text-pattern.md new file mode 100644 index 00000000000..80d752fbfc5 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-text-pattern.md @@ -0,0 +1,41 @@ +--- +title: "UI Automation Text Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "UI Automation, TextPattern class" + - "TextPattern class" + - "classes, TextPattern" +ms.assetid: b51206f2-1281-4ad0-9820-ea39d88ae577 +caps.latest.revision: 61 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 61 +--- +# UI Automation Text Pattern +> [!NOTE] +> このドキュメントは、 名前空間で定義されているマネージ [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クラスを使用する .NET Framework 開発者を対象としています。 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]に関する最新情報については、「[Windows Automation API: UI Automation \(Windows オートメーション API: UI オートメーション\)](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]のテキスト要素のプログラミングに役立つ概要と方法のトピックを示します。 + +## このセクションの内容 + [UI Automation TextPattern Overview](../../../docs/framework/ui-automation/ui-automation-textpattern-overview.md) + [TextPattern and Embedded Objects Overview](../../../docs/framework/ui-automation/textpattern-and-embedded-objects-overview.md) + [How\-to Topics](../../../docs/framework/ui-automation/ui-automation-text-pattern-how-to-topics.md) + +## 関連項目 + + +## 参照 + [UI Automation Control Patterns](../../../docs/framework/ui-automation/ui-automation-control-patterns.md) + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-textpattern-overview.md b/docs/framework/ui-automation/ui-automation-textpattern-overview.md new file mode 100644 index 00000000000..af7e40474c9 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-textpattern-overview.md @@ -0,0 +1,144 @@ +--- +title: "UI Automation TextPattern Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, TextPattern class" + - "TextPattern class" + - "classes, TextPattern" +ms.assetid: 41787927-df1f-4f4a-aba3-641662854fc4 +caps.latest.revision: 38 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 37 +--- +# UI Automation TextPattern Overview +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」をご覧ください。 + + この概要では、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] を使用して、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] でサポートされているプラットフォームのテキスト コントロールのテキストの内容 \(書式とスタイルの属性など\) を公開する方法について説明します。 これらのコントロールには、[!INCLUDE[TLA#tla_winfx](../../../includes/tlasharptla-winfx-md.md)] 、およびその [!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] に相当するものが含まれますが、これに限定されません。 + + コントロールのテキストの内容は、 コントロール パターンを使用することで公開できます。コントロール パターンは、テキスト コンテナーの内容をテキスト ストリームとして表したものです。 さらに、 は、書式とスタイルの属性を公開する クラスをサポートする必要があります。 は、 および エンドポイントのコレクションがあるテキスト コンテナーに、連続する、または複数の非結合テキスト範囲を表すことで をサポートします。 は、選択、比較、取得、トラバースなどの機能をサポートしています。 + +> [!NOTE] +> クラスには、テキストを挿入または変更する手段がありません。 しかし、コントロールによっては、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] によって、または直接キーボードから入力して、これを実現できます。 例については、「[TextPattern Insert Text Sample](http://msdn.microsoft.com/ja-jp/67353f93-7ee2-42f2-ab76-5c078cf6ca16)」をご覧ください。 + + この概要で説明されている機能は、支援技術ベンダーとそのエンドユーザーにとって重要です。 支援技術は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] を使用してユーザー向けに完全なテキストの書式設定情報を収集するとともに、プログラムによるナビゲーションと、 によるテキストの選択 \(文字、単語、行、または段落\) を行います。 + + +## UI オートメーション TextPattern とText Services Framework \(TSF\) + [!INCLUDE[TLA#tla_tsf](../../../includes/tlasharptla-tsf-md.md)] は、デスクトップ上およびアプリケーション内で、自然言語サービスと高度なテキスト入力を行えるようにする、拡張性のあるシステム フレームワークです。 アプリケーションのテキスト ストアを公開するインターフェイスをアプリケーションに提供するだけでなく、そのテキスト ストアのメタデータもサポートします。 + + ただし、[!INCLUDE[TLA2#tla_tsf](../../../includes/tla2sharptla-tsf-md.md)] は、コンテキストに対応したシナリオに入力を挿入する必要がある一方、 は、スクリーン リーダーとブライユ点字デバイス用のテキスト ストアに最適にアクセスできるようにすることを意図した、\(前述の制限付きの回避策による\) 読み取り専用のソリューションです。 + + つまり、テキスト ストアへの読み取り専用のアクセスが必要なアクセス可能なテクノロジでは を使用できますが、コンテキストに対応する入力には [!INCLUDE[TLA2#tla_tsf](../../../includes/tla2sharptla-tsf-md.md)] のより複雑な機能が必要になります。 + + +## コントロールの種類 + +#### テキスト + テキスト コントロールは、画面上のテキストの一部を表す基本要素です。 + + スタンドアロンのテキスト コントロールは、フォーム上のラベルまたは静的テキストとして使用できます。 また、テキスト コントロールを、、または の構造に含めることもできます。 + +> [!NOTE] +> テキスト コントロールは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに表示されないことがあります \(「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」をご覧ください\)。 これは、テキスト コントロールが別のコントロールの Name プロパティを通じて表示されることがよくあるためです。 たとえば、エディット コントロールのラベルに使用するテキストは、エディット コントロールの Name プロパティを通じて公開されます。 エディット コントロールが [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーのコンテンツ ビューに存在するので、テキスト要素自体は [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーの対象のビューに存在する必要はありません。 コンテンツ ビューに表示されるテキストは、冗長な情報ではないテキストのみです。 これにより、支援テクノロジは、ユーザーが必要とする情報のみをすばやくフィルター処理できるようになります。 + +#### 編集 + エディット コントロールを使用すると、ユーザーは 1 行のテキストを表示および編集できます。 + +> [!NOTE] +> 1 行のテキストは、特定のレイアウトのシナリオでは折り返すことができます。 + +#### ドキュメント + ドキュメント コントロールを使用すると、ユーザーは複数のページのテキストに移動して、そこから情報を取得できます。 + + +## TextPattern クライアント API + +||| +|-|-| +|`System.Windows.Automation.TextPattern Class`|[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] テキスト モデルのエントリ ポイントです。

このクラスには、 という 2 つの イベント リスナーが含まれています。| +|`System.Windows.Automation.Text.TextPatternRange Class`| をサポートする、テキスト コンテナー内のテキストの範囲の表記です。

UI オートメーション クライアントは、 を使用して作成されるテキスト範囲の現在の有効性に関して注意する必要があります。 テキスト コントロールにある元のテキストが完全に新しいテキストに置き換えられた場合、現在のテキスト範囲は無効になります。 ただし、元のテキストの一部のみが変更され、基になるテキスト コントロールが、文字の絶対位置ではなくアンカー \(またはエンドポイント\) が付いたテキストの「ポインター」で管理している場合、テキスト範囲にはまだいくらかの有効性があります。

クライアントは、 をリッスンして、操作するテキスト コンテンツに変更があった場合に通知を受けることができます。| +|`System.Windows.Automation.AutomationTextAttribute Class`|テキスト範囲の書式設定の属性を識別するために使用されます。| + + +## TextPattern プロバイダー API + ネイティブに、または [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] プロキシを介して および の各インターフェイスを実装することで をサポートする UI 要素またはコントロールは、堅牢なナビゲーション機能を提供するだけでなく、含まれている任意のテキストの詳細な属性情報を公開することができます。 + + プロバイダーは、コントロールで特定の属性のサポートが不足している場合、すべてのテキスト属性をサポートする必要はありません。 + + プロバイダーは、コントロールがテキスト領域内でテキストの選択またはテキストのカーソル \(またはシステム キャレット\) の配置をサポートする場合に 機能と 機能をサポートする必要があります。 コントロールがこの機能をサポートしない場合、これらのメソッドのいずれもサポートする必要はありません。 ただし、 プロパティを実装することで、コントロールはサポートするテキスト選択項目の種類を公開する必要があります。 + + プロバイダーは、 の定数 、およびサポートが可能なその他すべての 定数を常にサポートする必要があります。 + +> [!NOTE] +> プロバイダーは、次に大きい \( の順序でサポートされています\) を遅らせることで、特定の のサポートを省略できます。 + +||| +|-|-| +|`ITextProvider Interface`|クライアント アプリケーションで をサポートするメソッド、プロパティ、および属性を公開します \( を参照してください\)。| +|`ITextRangeProvider Interface`|テキスト プロバイダー内のテキストの範囲を表します \( を参照してください\)。| +|`System.Windows.Automation.TextPatternIdentifiers Class`|テキスト プロバイダーの識別子として使用される値が含まれています \( を参照してください\)。| + + +## セキュリティ + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] アーキテクチャは、セキュリティを考慮して設計されました \(「[UI Automation Security Overview](../../../docs/framework/ui-automation/ui-automation-security-overview.md)」をご覧ください\)。 ただし、この概要で説明する TextPattern クラスにはいくつか特定のセキュリティの考慮事項が必要です。 + +- [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] テキスト プロバイダーは、読み取り専用のインターフェイスを提供しますが、コントロールにある既存のテキストを変更する機能はありません。 + +- UI オートメーション クライアントは、それらが完全に「信頼できる」場合にのみ [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] を使用します。 この一例となるものが、信頼できる既知のアプリケーションのみが実行できる、保護されたログオン デスクトップです。 + +- UI オートメーション プロバイダーの開発者は、[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] を介してコントロールに公開することにしたすべての情報が、基本的にパブリックであり、他のコードで完全にアクセスできることを認識する必要があります。[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] は、UI オートメーション クライアントの信頼性を判断しようとしません。そのため、保護されたコンテンツまたは機密性の高いテキストの情報 \(パスワード フィールドなど\) をUI オートメーション プロバイダーで公開しないことをお勧めします。 + +- [!INCLUDE[TLA#tla_winvista](../../../includes/tlasharptla-winvista-md.md)] のセキュリティにおける最も重要な変更の 1 つは、「セキュリティで保護された入力」と広く言われるものです。これは、最小特権 \(または制限付き\) ユーザー アカウント \(LUA\) と UI 特権レベルの分離 \(UIPI\) などのテクノロジを包含しています。 + + - UIPI は、プログラムが他のより「特権が高い」プログラムを制御または監視できないようにすることで、ユーザー入力になりすましたプロセス間のウィンドウ メッセージ攻撃を防ぎます。 + + - LUA は、管理者グループのユーザーが実行しているアプリケーションの特権に制限を設定します。 アプリケーションには必ずしも管理者特権は必要なく、代わりに必要最小限の特権で実行します。 その結果、LUA シナリオに制限が適用される可能性があります。 最も顕著な文字列の切り捨て \(TextPattern 文字列など\) では、管理者レベルのアプリケーションから取得される文字列のサイズを制限する必要があることがあります。そうすることで、これらのアプリケーションは、アプリケーションを無効にするポイントまで強制的にメモリを割り当てられずに済みます。 + + +## パフォーマンス + TextPattern はその機能のほとんどでプロセス間の呼び出しに依存しているので、コンテンツを処理するときにパフォーマンスを向上させるキャッシュのメカニズムは提供しません。 これは、 メソッドまたは メソッドを使用してアクセスできる [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] の他のコントロール パターンとは異なります。 + + パフォーマンスを向上させるための 1 つの方法は、 を使用して、UI オートメーション クライアントに中型のテキスト ブロックの取得を試みさせることです。 たとえば、GetText\(1\) の呼び出しでは、文字ごとにプロセス間の影響を受けます。一方、GetText\(\-1\) の呼び出しでは、1 つのプロセス間の影響を受けますが、テキストのプロバイダーのサイズによっては待機時間が長くなることがあります。 + + +## TextPattern 用語集 + **属性** + テキスト範囲の書式設定特性 \( または など\)。 + + **低次元テキスト範囲** + 低次元テキスト範囲は、空または 0 文字のテキスト範囲です。 TextPattern コントロール パターンの目的から、テキスト挿入ポイント \(またはシステム キャレット\) は低次元テキスト範囲と見なされます。 テキストが選択されていない場合、 は、テキスト挿入ポイントで低次元テキスト範囲を返し、 は、開始エンドポイントとして低次元テキスト範囲を返します。 テキスト プロバイダーで指定された条件に一致するテキスト範囲が見つからない場合、 および は低次元テキスト範囲を返す可能性があります。 この低次元テキスト範囲は、テキスト プロバイダー内の開始エンドポイントとして使用できます。 検出した範囲と低次元テキスト範囲を混同しないように、 は null 参照を返します \([!INCLUDE[TLA2#tla_visualbnet](../../../includes/tla2sharptla-visualbnet-md.md)] の `Nothing`\)。 + + **埋め込みオブジェクト** + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] テキスト モデルには、2 種類の埋め込みオブジェクトがあります。 これらは、ハイパーリンクやテーブルなどのテキスト ベースのコンテンツ要素、およびイメージとボタンなどのコントロール要素で構成しています。 詳しくは、「[Access Embedded Objects Using UI Automation](../../../docs/framework/ui-automation/access-embedded-objects-using-ui-automation.md)」をご覧ください。 + + **エンドポイント** + テキスト コンテナー内のテキスト範囲の または の絶対ポイント。 + + ![TextPatternRangeEndpoints (開始および終了)。](../../../docs/framework/ui-automation/media/uia-textpattern-endpoints.PNG "UIA\_TextPattern\_Endpoints") +始点と終点のセットを次に示します。 + + **TextRange** + 関連するすべての属性と機能を含むテキスト コンテナーの始点と終点で、テキストの範囲を表したもの。 + + + テキストの範囲の論理セグメントを介して移動するために使用するテキストの定義済みの単位 \(文字、単語、行、または段落\) 。 + +## 参照 + [UI Automation Control Patterns for Clients](../../../docs/framework/ui-automation/ui-automation-control-patterns-for-clients.md) + [UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md) + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Use Caching in UI Automation](../../../docs/framework/ui-automation/use-caching-in-ui-automation.md) + [Support Control Patterns in a UI Automation Provider](../../../docs/framework/ui-automation/support-control-patterns-in-a-ui-automation-provider.md) + [Control Pattern Mapping for UI Automation Clients](../../../docs/framework/ui-automation/control-pattern-mapping-for-ui-automation-clients.md) + [Text Services Framework \(TSF\)](http://msdn.microsoft.com/library/default.asp?url=/library/tsf/tsf/text_services_framework.asp) \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-threading-issues.md b/docs/framework/ui-automation/ui-automation-threading-issues.md new file mode 100644 index 00000000000..e2624e8bb7b --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-threading-issues.md @@ -0,0 +1,30 @@ +--- +title: "UI Automation Threading Issues | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "UI Automation, threading issues" + - "threading issues with UI Automation" +ms.assetid: 0ab8d42c-5b8b-481b-b788-2caecc2f0191 +caps.latest.revision: 9 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 9 +--- +# UI Automation Threading Issues +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] の Windows メッセージを使用する方法が原因で、クライアント アプリケーションが [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] スレッド上のそれ自体の [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] と対話しようとするときに、競合が発生する可能性があります。 これらの競合が発生すると、パフォーマンスが著しく低下する恐れがあります。また、アプリケーションが応答を停止する可能性もあります。 + + クライアント アプリケーションがデスクトップ上のすべての要素 \(それ自体の [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] を含む\) と対話する場合、すべての [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の呼び出しを個別のスレッドで実行する必要があります。 これには、要素の検索 \(たとえば、 または メソッドを使用\) とコントロール パターンの使用が含まれます。 + + イベント ハンドラーは常に [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 以外のスレッドで呼び出されるため、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の呼び出しを [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] イベント ハンドラー内で実行しても問題ありません。 ただし、クライアント アプリケーションの [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] から発生するイベントをサブスクライブする場合、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 以外のスレッド上の \(または関連するメソッド\) への呼び出しを実行する必要があります。 同じスレッドにあるイベント ハンドラーを削除します。 \ No newline at end of file diff --git a/docs/framework/ui-automation/ui-automation-tree-overview.md b/docs/framework/ui-automation/ui-automation-tree-overview.md new file mode 100644 index 00000000000..d5aed53fc11 --- /dev/null +++ b/docs/framework/ui-automation/ui-automation-tree-overview.md @@ -0,0 +1,66 @@ +--- +title: "UI オートメーション ツリーの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "オートメーション ツリー" + - "UI オートメーション、ツリー" +ms.assetid: 03b98058-bdb3-47a0-8ff7-45e6cdf67166 +caps.latest.revision: 25 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 25 +--- +# UI オートメーション ツリーの概要 +> [!NOTE] +> このドキュメントが目的とする、管理を使用する .NET Framework 開発者[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]で定義されたクラス、 名前空間。 最新情報について[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を参照してください[Windows Automation API: UI 自動化](http://go.microsoft.com/fwlink/?LinkID=156746)します。 + + 支援技術製品やテスト スクリプトは、移動、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]ツリーに関する情報を収集するために、[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)]とその要素。 + + 内で、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]ツリーがありますが、ルート要素 () を表す現在のデスクトップと子要素は、アプリケーション ウィンドウを表します。 これらの各子要素を表すの要素を含めることができます[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]メニューのボタン、ツールバー、およびリスト ボックスなどです。 さらに、これらの要素には、リスト項目などの要素を含めることができます。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]ツリーは、固定構造ではないと、何千もの要素を含めることがあるため、全体的なでほとんど見します。 その一部は必要に応じてビルドされ、要素の追加、移動、削除に伴って変更されます。 + + UI オートメーション プロバイダーのサポート、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]はルート (通常はウィンドウでホストされている) と、サブツリーのフラグメント内の項目間のナビゲーションを実装することによってツリーです。 ただし、プロバイダーは、コントロール間のナビゲーションには関与しません。 によって管理されて、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]コアの既定のウィンドウのプロバイダーから情報を使用します。 + + +## オートメーション ツリーのビュー + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]だけを含むビューを作成するツリーをフィルター処理できます特定のクライアントに関連するオブジェクト。 このアプローチにより、クライアントで表示される構造をカスタマイズする[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]ニーズに合わせて特定します。 + + クライアントがビューをカスタマイズする方法には、スコープ設定とフィルター処理の&2; つがあります。 スコープ設定では、基本要素を起点としてビューの範囲を定義します。たとえば、アプリケーションがデスクトップの直接の子だけを検索するか、アプリケーション ウィンドウのすべての子孫を検索するかを定義できます。 フィルター処理では、ビューに含める要素の種類を定義します。 + + UI オートメーション プロバイダーのサポートなどの要素のプロパティを定義することでフィルター処理、 プロパティです。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]次の&3; つの既定のビューを提供します。 これらのビューは、実行されるフィルター処理の種類によって定義されます。すべてのビューのスコープは、アプリケーションによって定義されます。 さらに、アプリケーションではプロパティに他のフィルターを適用して、たとえば有効にされているコントロールだけをコントロール ビューに含めることもできます。 + + +### 列ビュー + 未加工のビュー、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]ツリーの完全なツリーは、 デスクトップをルート オブジェクトです。 未加工ビューは、アプリケーションのネイティブ プログラムによる構造に忠実に従っているため、使用できるビューの中では最も詳細なビューです。 また、ツリーの他のビューは、未加工ビューに基づいて構築されます。 このビューが、基になる依存[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]フレームワークの未加工のビュー、[!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)]さまざまな未加工のビューよりも作成したボタンも、 [!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] ボタンをクリックします。 + + プロパティを指定せずに要素を検索して、またはを使用して、未加工のビューが取得した、 ツリー内で移動します。 + + +### コントロール ビュー + コントロールのビューの[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]ツリーを記述する支援技術製品のタスクを簡略化、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]エンドユーザーを支援することをエンドユーザーとやり取りするアプリケーションに密接にマッピングされるため、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]エンドユーザーによって認識される構造体。 + + コントロール ビューは、未加工ビューのサブセットです。 すべてが含まれています[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]対話型または内のコントロールの論理構造に関係するいると、エンドユーザーが理解できるように未加工のビューの項目を[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]です。 例として[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]の論理的な構造に影響するアイテム、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]は対話型自体では、ヘッダーを一覧表示する、ツールバー、メニューのおよびステータス バーなどの項目のコンテナーです。 レイアウトや装飾の目的のためだけに使用される非対話型項目は、コントロール ビューには表示されません。 その一例は、パネルです。パネルは、ダイアログでコントロールをレイアウトするためだけに使用され、情報はまったく含まれません。 コントロール ビューに表示される非対話型の項目は、情報を提供するグラフィックとダイアログ内の静的テキストです。 コントロール ビューに含まれる非対話型の項目がキーボード フォーカスを受け取ることはできません。 + + コントロールのビューを持つ要素を検索して取得した、 プロパティに設定`true`、またはを使用して、 ツリー内で移動します。 + + +### コンテンツ ビュー + コンテンツ ビュー、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]ツリー コントロールのビューのサブセットであります。 含まれている[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]ユーザー インターフェイスで真の情報を伝達する項目を含む[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]が受信可能な項目はキーボード フォーカスとなんらかのテキストのラベルではありませんが、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]項目。 たとえば、ドロップダウン コンボ ボックス内の値は、エンドユーザーが使用する情報を表すため、コンテンツ ビューに表示されます。 コンテンツ ビューにコンボ ボックスやリスト ボックスが両方とものコレクションとして表さ[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)]項目の&1; つ以上、または&1; つの項目を選択できます。 コンテンツ ビューの目的は、ユーザーに提示するデータ (つまりコンテンツ) を表示することなので、このビューは、どの項目が常に開かれていて、どの項目が展開または折りたたむことができるかは重要ではありません。 + + コンテンツ ビューを持つ要素を検索して取得した、 プロパティに設定`true`、またはを使用して、 ツリー内で移動します。 + +## 関連項目 + + [UI オートメーションの概要](../../../docs/framework/ui-automation/ui-automation-overview.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/use-caching-in-ui-automation.md b/docs/framework/ui-automation/use-caching-in-ui-automation.md new file mode 100644 index 00000000000..f0436638d3d --- /dev/null +++ b/docs/framework/ui-automation/use-caching-in-ui-automation.md @@ -0,0 +1,71 @@ +--- +title: "Use Caching in UI Automation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "caching, UI Automation" + - "UI Automation, caching" +ms.assetid: ec722dff-6009-4279-b86a-e18d3fa94ebf +caps.latest.revision: 14 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 14 +--- +# Use Caching in UI Automation +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、 プロパティとコントロール パターンのキャッシュを実装する方法について説明します。 + +### キャッシュ要求のアクティブ化 + +1. を作成します。 + +2. を使用して、キャッシュするプロパティとパターンを指定します。 + +3. プロパティを設定することにより、キャッシュのスコープを指定します。 + +4. プロパティを設定することにより、サブツリーのビューを指定します。 + +5. オブジェクトへの完全な参照を取得しないようにして効率化を図りたい場合は、 プロパティを に設定します。 \(このようにすると、これらのオブジェクトから現在の値を取得できなくなります。\) + +6. `using` ブロック内 \([!INCLUDE[TLA#tla_visualbnet](../../../includes/tlasharptla-visualbnet-md.md)] 内の `Using`\) で を使用して、要求をアクティブ化します。 + + オブジェクトの取得後、またはイベントのサブスクライブ後に、 を使用するか \( を使用した場合\)、または で作成したオブジェクトを破棄することにより、要求を非アクティブ化します。 \( は `using` ブロック内 \([!INCLUDE[TLA#tla_visualbnet](../../../includes/tlasharptla-visualbnet-md.md)] 内の `Using`\) で使用してください。\) + +### AutomationElement プロパティのキャッシュ + +1. がアクティブな間に、 または を使用して、 オブジェクトを取得します。あるいは、 がアクティブな間に登録したイベントのソースとして を取得します \(GetUpdatedCache またはいずれかの メソッドに を渡すことにより、キャッシュを作成することも可能です\)。 + +2. を使用するか、または プロパティからプロパティを取得します。 + +### キャッシュされたパターンとプロパティの取得 + +1. がアクティブな間に、 または を使用して、 オブジェクトを取得します。あるいは、 がアクティブな間に登録したイベントのソースとして を取得します \(GetUpdatedCache またはいずれかの メソッドに を渡すことにより、キャッシュを作成することも可能です\)。 + +2. キャッシュされたパターンを取得するために、 または を使用します。 + +3. コントロール パターンの `Cached` プロパティからプロパティ値を取得します。 + +## 使用例 + 次のコード例は、キャッシュのさまざまな側面を示し、 を使用して をアクティブ化しています。 + + [!code-csharp[UIAClient_snip#107](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#107)] + [!code-vb[UIAClient_snip#107](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#107)] + +## 使用例 + 次のコード例は、キャッシュのさまざまな側面を示し、 を使用して をアクティブ化しています。 キャッシュ要求を入れ子にする場合を除き、 を使用する方法をお勧めします。 + + [!code-csharp[UIAClient_snip#108](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAClient_snip/CSharp/ClientForm.cs#108)] + [!code-vb[UIAClient_snip#108](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAClient_snip/VisualBasic/ClientForm.vb#108)] + +## 参照 + [Caching in UI Automation Clients](../../../docs/framework/ui-automation/caching-in-ui-automation-clients.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/use-the-automationid-property.md b/docs/framework/ui-automation/use-the-automationid-property.md new file mode 100644 index 00000000000..1bcad9ab2f6 --- /dev/null +++ b/docs/framework/ui-automation/use-the-automationid-property.md @@ -0,0 +1,66 @@ +--- +title: "Use the AutomationID Property | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "AutomationId property" + - "UI Automation, AutomationId property" + - "properties, AutomationId" +ms.assetid: a24e807b-d7c3-4e93-ac48-80094c4e1c90 +caps.latest.revision: 21 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 21 +--- +# Use the AutomationID Property +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + このトピックには、 を使用して [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー内の要素を配置する方法とタイミングを示すシナリオおよびサンプル コードが記載されています。 + + は、UI オートメーション要素をその兄弟から一意に識別します。 コントロール ID に関連するプロパティの識別子の詳細については、「[UI Automation Properties Overview](../../../docs/framework/ui-automation/ui-automation-properties-overview.md)」を参照してください。 + +> [!NOTE] +> では、ツリー全体で一意の ID は保証されません。これが役に立つには、通常、コンテナーとスコープ情報が必要です。 たとえば、アプリケーションには複数のトップレベルのメニュー項目を持つメニュー コントロールが含まれ、さらに、それらのメニュー項目に複数の子メニュー項目が含まれている場合があります。 これらの 2 次メニュー項目は、"Item1"、"Item 2" などの汎用スキームで識別され、トップレベルのメニュー項目間で子の識別子が重複することがあります。 + +## シナリオ + 要素を検索するときに、正確で一貫性のある結果を実現するために の使用を必要とする 3 つの主な UI オートメーション クライアント アプリケーションのシナリオが識別されています。 + +> [!NOTE] +> をサポートしているのは、最上位のアプリケーション ウィンドウ以外のコントロール ビューにあるすべての UI オートメーション要素、ID または x:Uid を持たない [!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)] コントロールから派生した UI オートメーション要素、およびコントロール ID を持たない [!INCLUDE[TLA#tla_win32](../../../includes/tlasharptla-win32-md.md)] コントロールから派生した UI オートメーション要素です。 + +#### 一意で探索可能な AutomationID を使用して UI オートメーション ツリーで特定の要素を検索する + +- [!INCLUDE[TLA#tla_uispy](../../../includes/tlasharptla-uispy-md.md)] などのツールを使用して関心のある [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素の をレポートします。 この値をコピーし、その後の自動テストのテスト スクリプトなどのクライアント アプリケーションに貼り付けることができます。 この方法により、実行時に要素を特定して検索するために必要なコードを削減して簡略化します。 + +> [!CAUTION] +> 通常、 の直接の子のみの取得を試行する必要があります。 子孫の検索は、数百または数千もの要素を反復処理する場合があり、スタック オーバーフローを引き起こす可能性があります。 下位レベルの特定の要素を取得しようとする場合、アプリケーション ウィンドウから、または下位レベルのコンテナーから検索を開始する必要があります。 + + [!code-csharp[UIAAutomationID_snip#100](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAAutomationID_snip/CSharp/FindByAutomationID.xaml.cs#100)] + [!code-vb[UIAAutomationID_snip#100](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAAutomationID_snip/VisualBasic/FindByAutomationID.xaml.vb#100)] + +#### 永続的なパスを使用して、既に特定されている AutomationElement に戻る + +- クライアント アプリケーションは \(単純なテスト スクリプトから、堅牢な記録と再生のためのユーティリティまで\)、ファイルを開くダイアログやメニュー項目など、現在インスタンス化されていないために UI オートメーション ツリーに存在しない要素にアクセスしなければならないことがあります。 これらの要素をインスタンス化するには、AutomationID、コントロール パターンとイベント リスナーなどの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを使用することで、[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] アクションの特定のシーケンスを再現または「再生」する必要があります。[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] を使用し、[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] とのユーザー対話に基づくテスト スクリプトを生成する例については、「[Test Script Generator Sample](http://msdn.microsoft.com/ja-jp/028467fd-2980-4691-9522-0131dcef23a0)」を参照してください。 + + [!code-csharp[UIAAutomationID_snip#UIAWorkerThread](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAAutomationID_snip/CSharp/FindByAutomationID.xaml.cs#uiaworkerthread)] + [!code-vb[UIAAutomationID_snip#UIAWorkerThread](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAAutomationID_snip/VisualBasic/FindByAutomationID.xaml.vb#uiaworkerthread)] +[!code-csharp[UIAAutomationID_snip#Playback](../../../samples/snippets/csharp/VS_Snippets_Wpf/UIAAutomationID_snip/CSharp/FindByAutomationID.xaml.cs#playback)] +[!code-vb[UIAAutomationID_snip#Playback](../../../samples/snippets/visualbasic/VS_Snippets_Wpf/UIAAutomationID_snip/VisualBasic/FindByAutomationID.xaml.vb#playback)] + +#### 相対パスを使用して、既に特定されている AutomationElement に戻る + +- 特定の状況では、AutomationID が兄弟間でのみ一意であることが保証されているので、UI オートメーション ツリー内の複数の要素が同一の AutomationID プロパティの値を持っていることがあります。 このような場合、親 \(または必要に応じて親の親\) に基づいて、要素を一意に識別できます。 たとえば、開発者が複数のメニュー項目を持ち、それぞれに複数の子メニュー項目があるメニュー バーを提供するとします。ここで、子は "Item1"、"Item2" など、シーケンシャルの AutomationID で識別されます。 各メニュー項目は、それ自体の AutomationID と、その親の AutomationID \(必要に応じて親の親の AutomationID も\) によって一意に識別されます。 + +## 参照 + + [UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md) + [Find a UI Automation Element Based on a Property Condition](../../../docs/framework/ui-automation/find-a-ui-automation-element-based-on-a-property-condition.md) \ No newline at end of file diff --git a/docs/framework/ui-automation/using-ui-automation-for-automated-testing.md b/docs/framework/ui-automation/using-ui-automation-for-automated-testing.md new file mode 100644 index 00000000000..a556df716ba --- /dev/null +++ b/docs/framework/ui-automation/using-ui-automation-for-automated-testing.md @@ -0,0 +1,122 @@ +--- +title: "Using UI Automation for Automated Testing | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "automated testing" + - "testing, UI Automation" + - "UI Automation, automated testing" +ms.assetid: 3a0435c0-a791-4ad7-ba92-a4c1d1231fde +caps.latest.revision: 26 +author: "Xansky" +ms.author: "mhopkins" +manager: "markl" +caps.handback.revision: 25 +--- +# Using UI Automation for Automated Testing +> [!NOTE] +> このドキュメントは、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] 名前空間で定義されているマネージ クラスを使用する .NET Framework 開発者を対象としています。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] の最新情報については、「[Windows Automation API: UI オートメーション](http://go.microsoft.com/fwlink/?LinkID=156746)」を参照してください。 + + ここでは、自動テストのシナリオで、プログラムによるアクセスのためのフレームワークとして [!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)]がどのように役立つかについて説明します。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の統一されたオブジェクト モデルを使用すると、すべての[!INCLUDE[TLA#tla_ui](../../../includes/tlasharptla-ui-md.md)] フレームワークにおいて、複雑で豊富な機能をアクセシビリティが高く自動化しやすい方法で公開できます。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] は、[!INCLUDE[TLA#tla_aa](../../../includes/tlasharptla-aa-md.md)] の後継として開発されました。[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] は、コントロールとアプリケーションにアクセスできるように設計された既存のフレームワークです。 ユーザー補助と自動化の要件がよく似ているため、[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] はテストの自動化に使用されるようになりましたが、この役割を想定して設計されたものではありません。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]は、ユーザー補助のためのより洗練されたソリューションを提供するだけでなく、信頼性の高い自動テスト機能を提供するように設計されています。 たとえば、[!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] では、UI に関する情報の公開と、AT 製品に必要な情報の収集の両方に、同じインターフェイスを使用します。これに対して [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]では、2 つのモデルを分けています。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を自動テスト ツールとして利用するには、プロバイダーとクライアントの両方にこれを実装する必要があります。 UI オートメーション プロバイダーは、Microsoft Word、Excel やその他のサードパーティ アプリケーションなどのアプリケーション、または [!INCLUDE[TLA#tla_win](../../../includes/tlasharptla-win-md.md)] オペレーティング システムに基づくコントロールです。 UI オートメーション クライアントは、自動テスト スクリプトや支援 \(補助\) 技術アプリケーションなどです。 + +> [!NOTE] +> この概要の目的は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の、自動テストに関する新機能と強化された機能について説明することです。 この概要はユーザー補助機能に関する情報の提供を目的とするものではなく、必要な場合以外、ユーザー補助については説明しません。 + + +## プロバイダーにおける UI オートメーション + [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] を自動化するためにアプリケーションやコントロールの開発者が注意する必要があるのは、その [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] オブジェクトでキーボードとマウスの標準操作を使用して実行できるエンド ユーザーのアクションです。 + + これらの主要なアクションを特定したら、対応する [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターン \(つまり、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素の機能と動作をミラー化するコントロール パターン\) をコントロール上に実装します。 たとえば、コンボ ボックス コントロール \(実行用のダイアログなど\) でのユーザー操作には、通常、項目の一覧を非表示にしたり表示したりするためのコンボ ボックスの展開と折りたたみ、一覧からの項目の選択、またはキーボード入力による新しい値の追加が含まれます。 + +> [!NOTE] +> 他のユーザー補助モデルでは、開発者が直接、個々のボタン、メニューなどのコントロールから情報を収集する必要があります。 しかも、各コントロール型には、細部の異なるバリエーションが多数存在します。 つまり、あるプッシュボタンに 10 個のバリエーションが存在すると、それらすべての動作と機能が同じであっても、それぞれを別個のコントロールとして扱う必要があります。 これらのコントロールが機能的に同等であることを知る方法はありません。 コントロール パターンは、こうした共通のコントロール動作を表すために開発されました。 詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + + +### UI オートメーションの実装 + 既に述べたように、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の統一されたモデルを使用しない場合、フレームワーク内のコントロールのプロパティや動作を公開するためには、フレームワーク固有の情報をテスト ツールや開発者が知る必要があります。[!INCLUDE[TLA2#tla_win](../../../includes/tla2sharptla-win-md.md)] オペレーティング システム内には常に、[!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)]、[!INCLUDE[TLA#tla_winforms](../../../includes/tlasharptla-winforms-md.md)]、[!INCLUDE[TLA#tla_wpf](../../../includes/tlasharptla-wpf-md.md)] などの複数の UI フレームワークが存在する可能性があるため、似たようなコントロールを持つ複数のアプリケーションをテストすることは困難な場合があります。 次の表では、例として、あるボタン コントロールに関連付けられた名前 \(またはテキスト\) を取得するために必要なフレームワーク固有のプロパティ名と、それと同等の単一 [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]プロパティを示します。 + +|UI オートメーション コントロール型|UI フレームワーク|フレームワーク固有のプロパティ|UI Automation のプロパティ| +|-------------------------|----------------|---------------------|--------------------------| +|ボタン|Windows Presentation Foundation|Content|NameProperty| +|ボタン|Win32|\[キャプション\]|NameProperty| +|イメージ|HTML|alt|NameProperty| + + UI オートメーション プロバイダーは、そのコントロールのフレームワーク固有のプロパティから、同等の [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティへのマッピングを行います。 + + [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]をプロバイダーに実装する方法については、「[UI Automation Providers for Managed Code](../../../docs/framework/ui-automation/ui-automation-providers-for-managed-code.md)」を参照してください。 コントロール パターンを実装する方法については、「[UI Automation Control Patterns](../../../docs/framework/ui-automation/ui-automation-control-patterns.md)」および「[UI Automation Text Pattern](../../../docs/framework/ui-automation/ui-automation-text-pattern.md)」を参照してください。 + + +## クライアントにおける UI オートメーション + 多くの自動テスト ツールやシナリオの目的は、一貫性があって再現可能なユーザー インターフェイス操作です。 これには、特定のコントロールの単体テストから、コントロールのグループに対する一連の一般的なアクションを反復処理するテスト スクリプトの記録と再生までが含まれます。 + + 自動アプリケーションでの問題は、動的な対象にテストを合わせることが難しい点です。 たとえば、Windows タスク マネージャーに含まれているような、現在実行中のアプリケーションを一覧表示するリスト ボックス コントロールがあります。 リスト ボックス内の項目はテスト アプリケーションの制御範囲外で動的に更新されるため、リスト ボックスの特定の項目を一貫性を保って繰り返し選択することは不可能です。 テスト アプリケーションの制御範囲外の [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] でフォーカスの単純な変更を繰り返そうとした場合も、同様の問題が起きることがあります。 + + +### プログラムによるアクセス + プログラムによるアクセスでは、従来のマウス入力やキーボード入力によって公開される対話やエクスペリエンスをコードによって模倣する機能が提供されます。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]は、5 つのコンポーネントにより、プログラムによるアクセスを有効にします。 + +- [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリーは、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] の構造全体にわたってナビゲーションを容易にします。 ツリーは、hWnd のツリーのコレクションから構築されます。 詳細については、「[UI Automation Tree Overview](../../../docs/framework/ui-automation/ui-automation-tree-overview.md)」を参照してください。 + +- オートメーション要素は、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] の個々のコンポーネントです。 通常、これらは hWnd よりも細かい単位です。 詳細については、「[UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md)」を参照してください。 + +- オートメーション プロパティは、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 要素に関する具体的な情報を提供します。 詳細については、「[UI Automation Properties Overview](../../../docs/framework/ui-automation/ui-automation-properties-overview.md)」を参照してください。 + +- コントロール パターンは、コントロールが持つ機能の特定の側面を定義します。プロパティ、メソッド、イベント、および構造体の情報で構成することができます。 詳細については、「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。 + +- オートメーション イベントは、イベント通知と情報を提供します。 詳細については、「[UI Automation Events Overview](../../../docs/framework/ui-automation/ui-automation-events-overview.md)」を参照してください。 + + +### 自動テストの主要なプロパティ + [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] 内の任意のコントロールを一意に識別して検索する機能は、自動テスト アプリケーションがその [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] を処理する基盤です。[!INCLUDE[TLA#tla_uiautomation](../../../includes/tlasharptla-uiautomation-md.md)] プロパティの中にはこれを支援するものがいくつかあり、クライアントとプロバイダーによって使用されます。 + +#### AutomationID + オートメーション要素をその兄弟から一意に識別します。 製品が複数言語で出荷される場合に通常ローカライズされる などのプロパティとは異なり、 はローカライズされません。 「[Use the AutomationID Property](../../../docs/framework/ui-automation/use-the-automationid-property.md)」を参照してください。 + +> [!NOTE] +> では、オートメーション ツリー全体にわたって一意に識別できるとは限りません。 たとえば、アプリケーションには複数のトップレベルのメニュー項目を持つメニュー コントロールが含まれ、さらに、それらのメニュー項目に複数の子メニュー項目が含まれている場合があります。 これらの 2 次メニュー項目は、Item1、Item2、Item3 などの汎用スキームで識別され、トップレベルのメニュー項目間で子の識別子が重複することがあります。 + +#### ControlType + オートメーション要素によって表されるコントロール型を識別します。 コントロール型がわかると、そこから多くの情報を推測できます。 「[UI Automation Control Types Overview](../../../docs/framework/ui-automation/ui-automation-control-types-overview.md)」を参照してください。 + +#### NameProperty + これは、コントロールを識別または説明するテキスト文字列です。 はローカライズされる可能性があるため、注意して使用する必要があります。 「[UI Automation Properties Overview](../../../docs/framework/ui-automation/ui-automation-properties-overview.md)」を参照してください。 + + +### テスト アプリケーションへの UI オートメーションの実装 + +||| +|-|-| +|UI オートメーション参照を追加します。|UI オートメーション クライアントに必要な [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の dll を次に示します。

- UIAutomationClient.dll は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]のクライアント側 API へのアクセスを提供します。
- UIAutomationClientSideProvider.dll は、[!INCLUDE[TLA2#tla_win32](../../../includes/tla2sharptla-win32-md.md)] コントロールを自動化する機能を提供します。 「[UI Automation Support for Standard Controls](../../../docs/framework/ui-automation/ui-automation-support-for-standard-controls.md)」を参照してください。
- UIAutomationTypes.dll は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]で定義された特定の型へのアクセスを提供します。| +| 名前空間を追加します。|この名前空間には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]のテキスト処理以外の機能を使用するために UI オートメーション クライアントが必要とするすべてのものが含まれています。| +| 名前空間を追加します。|この名前空間には、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]のテキスト処理機能を使用するために UI オートメーション クライアントが必要とするすべてのものが含まれています。| +|目的のコントロールを検索します。|自動テスト スクリプトは、目的のコントロールを表す UI オートメーション要素をオートメーション ツリー内で検索します。

コードで UI オートメーション要素を取得する方法は複数あります。

- [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] ステートメントを使用して を照会します。 この場合は、通常、言語に依存しない を使用します。 **Note:** は、コントロールの [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] プロパティを項目別に示すことができる Inspect.exe などのツールを使用して取得できます。

- [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] ツリー全体またはそのサブセットを検索するには、 クラスを使用します。
- フォーカスを追跡します。
- コントロールの hWnd を使用します。
- マウス カーソルの位置など、画面位置を使用します。

「[Obtaining UI Automation Elements](../../../docs/framework/ui-automation/obtaining-ui-automation-elements.md)」を参照してください。| +|コントロール パターンを取得します。|コントロール パターンは、機能的によく似た複数のコントロールにおける共通の動作を公開します。

自動テスト スクリプトは、テストする必要があるコントロールを特定すると、それらの UI オートメーション要素から目的のコントロール パターンを取得します。 たとえば、一般的なボタン機能には コントロール パターンを、ウィンドウ機能には コントロール パターンを使用します。

「[UI Automation Control Patterns Overview](../../../docs/framework/ui-automation/ui-automation-control-patterns-overview.md)」を参照してください。| +|UI を自動化します。|自動テスト スクリプトで、[!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] フレームワークの任意の [!INCLUDE[TLA2#tla_ui](../../../includes/tla2sharptla-ui-md.md)] を、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] コントロール パターンによって公開された情報や機能を使用して制御できるようになりました。| + + +## 関連ツールと関連技術 + 複数の関連ツールや関連技術で、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を使用した自動テストがサポートされています。 + +- Inspect.exe は、プロバイダーとクライアントの開発およびデバッグのために [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]の情報を収集するために使用できる[!INCLUDE[TLA#tla_gui](../../../includes/tlasharptla-gui-md.md)] アプリケーションです。Inspect.exe は [!INCLUDE[TLA#tla_winfxsdk](../../../includes/tlasharptla-winfxsdk-md.md)] に含まれています。 + +- MSAABridge は、[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)] クライアントに対して [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)]情報を公開します。[!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]と [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] の間に継続性を持たせる主な目的は、既存の [!INCLUDE[TLA2#tla_aa](../../../includes/tla2sharptla-aa-md.md)] クライアントが [!INCLUDE[TLA2#tla_uiautomation](../../../includes/tla2sharptla-uiautomation-md.md)]を実装済みの任意のフレームワークと対話できるようにすることです。 + + +## セキュリティ + セキュリティについては、「[UI Automation Security Overview](../../../docs/framework/ui-automation/ui-automation-security-overview.md)」を参照してください。 + +## 参照 + [UI Automation Fundamentals](../../../docs/framework/ui-automation/index.md) \ No newline at end of file diff --git a/docs/framework/unmanaged-api/TOC.md b/docs/framework/unmanaged-api/TOC.md new file mode 100644 index 00000000000..0a152748b7a --- /dev/null +++ b/docs/framework/unmanaged-api/TOC.md @@ -0,0 +1,5 @@ +# [共有のデータ型](common-data-types-unmanaged-api-reference.md) +# [アンマネージ API リファレンス](index.md) +# [COR_PRF_ALLOWABLE_AFTER_ATTACH ビットマスク](cor-prf-allowable-after-attach-bitmask.md) +# [定数](constants-unmanaged-api-reference.md) +# [GUID_ManagedName 属性](guid-managedname-attribute.md) diff --git a/docs/framework/unmanaged-api/common-data-types-unmanaged-api-reference.md b/docs/framework/unmanaged-api/common-data-types-unmanaged-api-reference.md new file mode 100644 index 00000000000..a168705bbf0 --- /dev/null +++ b/docs/framework/unmanaged-api/common-data-types-unmanaged-api-reference.md @@ -0,0 +1,47 @@ +--- +title: "共有のデータ型 (アンマネージ API リファレンス) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "reference" +dev_langs: + - "C++" +ms.assetid: e4ab2c4c-9433-4eba-9e9a-096de406cafb +caps.latest.revision: 4 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 4 +--- +# 共有のデータ型 (アンマネージ API リファレンス) +このトピックでは、C\/C\+\+ `typedef` ステートメントで定義される .NET Framework のアンマネージ API で使用する、簡単なデータ型について示します。 これらのデータ型は通常、C\/C\+\+ のプリミティブ データ型のエイリアスです。 一般的にこれらのデータ型の値は不透明です。これらのデータ型の値は他の関数またはメソッドに対して変更なしで渡せるように、特定の関数またはメソッドによって返されるためです。 + +|データ型|定義|定義されている場所|説明| +|----------|--------|---------------|--------| +|AppDomainID|`typedef UINT_PTR AppDomainID;`|corprof.h|アプリケーション ドメインの識別子。| +|AssemblyID|`typedef UINT_PTR AssemblyID;`|corprof.h|アセンブリの識別子。| +|ClassID|`typedef UINT_PTR ClassID;`|corprof.h|マネージ クラスの識別子。| +|CONNID|`typedef DWORD CONNID;`|cordebug.h、mscoree.h|Microsoft SQL Server のインスタンスへ接続されるスレッドの接続識別子。| +|ContextID|`typedef UINT_PTR ContextID;`|corprof.h|特定のマネージ スレッドに関連付けられているコンテキストの識別子。| +|COR\_PRF\_ELT\_INFO|`typedef UINT_PTR COR_PRF_ELT_INFO;`|corprof.h|特定のスタック フレームに関する情報を表す不透明なハンドル。| +|COR\_PRF\_FRAME\_INFO|`typedef UINT_PTR COR_PRF_FRAME_INFO;`|corprof.h|スタック フレームを指す不透明なハンドル。 これは、自身が渡されるコールバックの間のみ有効です。| +|CORDB\_ADDRESS|`typedef ULONG64 CORDB_ADDRESS;`|cordebug.h|メモリ内アドレス。| +|CORDB\_CONTINUE\_STATUS|`typedef DWORD CORDB_CONTINUE_STATUS;`|cordebug.h|継続状態。| +|CORDB\_REGISTER|`typedef ULONG64 CORDB_REGISTER;`|cordebug.h|CPU レジスタの値。| +|FunctionID|`typedef UINT_PTR FunctionID;`|corprof.h|関数またはメソッドの識別子。| +|GCHandleID|`typedef UINT_PTR GCHandleID;`|corprof.h|ガベージ コレクション ハンドル。| +|mdToken|`typedef UINT32 mdToken;`|corprof.h|メタデータ トークン \(メタデータ テーブル内の行\)。| +|ModuleID|`typedef UINT_PTR ModuleID;`|corprof.h|アセンブリ モジュールの識別子。| +|ObjectID|`typedef UINT_PTR ObjectID;`|corprof.h|オブジェクトの識別子。| +|ProcessID|`typedef UINT_PTR ProcessID;`|corprof.h|マネージ プロセスの識別子。| +|ReJITID|`typedef UINT_PTR ReJITID;`|corprof.h|JIT コンパイルされた関数の識別子。| +|TASKID|`typedef UINT64 TASKID;`|cordebug.h、mscoree.h|[ICLRTask](../../../ocs/framework/unmanaged-api/hosting/iclrtask-interface.md) インスタンスの識別子。| +|ThreadID|`typedef UINT_PTR ThreadID;`|corprof.h|マネージ スレッドの識別子。| + +## 参照 + [アンマネージ API リファレンス](../../../docs/framework/unmanaged-api/index.md) \ No newline at end of file diff --git a/docs/framework/unmanaged-api/constants-unmanaged-api-reference.md b/docs/framework/unmanaged-api/constants-unmanaged-api-reference.md new file mode 100644 index 00000000000..61ff20c0a31 --- /dev/null +++ b/docs/framework/unmanaged-api/constants-unmanaged-api-reference.md @@ -0,0 +1,61 @@ +--- +title: "定数 (アンマネージ API リファレンス) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "reference" +dev_langs: + - "C++" +helpviewer_keywords: + - "アンマネージ API の定数 [.NET Framework]" + - "ネイティブの API 参照 [.NET Framework] 定数" + - "アンマネージの API 参照 [.NET Framework] 定数" +ms.assetid: 77526f65-b71c-4483-9d19-3a3751fd8a45 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 定数 (アンマネージ API リファレンス) +このトピックでは、言語の種類、言語の販売元 CorSym.idl で定義されているドキュメント型の定数を説明します。 + +## 言語の型の定数 + 次の表は、言語のプログラミング言語を識別する Guid を表す型の定数を示します。 + +|シンボル|説明| +|----------|--------| +|CorSym\_LanguageType\_C|C 言語を示します。| +|CorSym\_LanguageType\_CPlusPlus|C\+\+ 言語を示します。| +|CorSym\_LanguageType\_CSharp|C\# 言語を示します。| +|CorSym\_LanguageType\_Basic|基本的な言語を示します。| +|CorSym\_LanguageType\_Java|Java 言語を示します。| +|CorSym\_LanguageType\_Cobol|COBOL 言語を示します。| +|CorSym\_LanguageType\_Pascal|Pascal 形式の言語を示します。| +|CorSym\_LanguageType\_ILAssembly|Microsoft 中間言語 \(MSIL\) アセンブリのコードを示します。| +|CorSym\_LanguageType\_JScript|JScript 言語を示します。| +|CorSym\_LanguageType\_SMC|SMC 言語を示します。| +|CorSym\_LanguageType\_MCPlusPlus|.NET Framework の有効な C\+\+ 言語を示します。| + +## 言語ベンダー定数 + 次の表は、仕入先の定数は、プログラミング言語ベンダーを識別する Guid を表す言語を示します。 + +|シンボル|説明| +|----------|--------| +|CorSym\_LanguageVendor\_Microsoft|Microsoft を示します。| + +## ドキュメント型定数 + 次の表は、ドキュメントの種類のドキュメントを識別する Guid を表す型の定数を示します。 + +|シンボル|説明| +|----------|--------| +|CorSym\_DocumentType\_Text|テキスト ドキュメントを示します。| +|CorSym\_DocumentType\_MC|テキスト以外のドキュメントを示します。| + +## 参照 + [アンマネージ API リファレンス](../../../docs/framework/unmanaged-api/index.md) \ No newline at end of file diff --git a/docs/framework/unmanaged-api/cor-prf-allowable-after-attach-bitmask.md b/docs/framework/unmanaged-api/cor-prf-allowable-after-attach-bitmask.md new file mode 100644 index 00000000000..20c7d81afe8 --- /dev/null +++ b/docs/framework/unmanaged-api/cor-prf-allowable-after-attach-bitmask.md @@ -0,0 +1,31 @@ +--- +title: "COR_PRF_ALLOWABLE_AFTER_ATTACH ビットマスク | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "reference" +apiname: + - "COR_PRF_ALLOWABLE_AFTER_ATTACH" +apilocation: + - "mscorwks.dll" +apitype: "COM" +f1_keywords: + - "COR_PRF_ALLOWABLE_AFTER_ATTACH" +dev_langs: + - "C++" +helpviewer_keywords: + - "COR_PRF_ALLOWABLE_AFTER_ATTACH ビットマスク [.NET Framework プロファイリング]" +ms.assetid: 9326ced8-7609-4ffe-a644-b73cf77607d0 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# COR_PRF_ALLOWABLE_AFTER_ATTACH ビットマスク +このトピックは使用できなくなりました。 COR\_PRF\_ALLOWABLE\_AFTER\_ATTACH の詳細については、「[COR\_PRF\_MONITOR 列挙型](../../../ocs/framework/unmanaged-api/profiling/cor-prf-monitor-enumeration.md)」のドキュメントを参照してください。 \ No newline at end of file diff --git a/docs/framework/unmanaged-api/guid-managedname-attribute.md b/docs/framework/unmanaged-api/guid-managedname-attribute.md new file mode 100644 index 00000000000..8faf2c7998a --- /dev/null +++ b/docs/framework/unmanaged-api/guid-managedname-attribute.md @@ -0,0 +1,75 @@ +--- +title: "GUID_ManagedName 属性 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "reference" +apiname: + - "GUID_ManagedName" +apilocation: + - "alink.dll" +apitype: "COM" +f1_keywords: + - "GUID_ManagedName" +dev_langs: + - "C++" +helpviewer_keywords: + - "GUID_ManagedName 属性" +ms.assetid: 11e18095-e444-47bc-aff6-b887ac5dc01e +caps.latest.revision: 6 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 6 +--- +# GUID_ManagedName 属性 +コンポーネント オブジェクト モデル \(COM\) ライブラリの管理対象名前空間名を指定するカスタム インターフェイス属性を定義します。 + +## 構文 + +``` +[ + custom(GUID_ManagedName, value) +] +``` + +#### パラメーター + `value` + ライブラリの管理対象名前空間の名前。 + +## 定義 + `GUID_ManagedName` Cor.h のように定義されています。 + +``` +// {0F21F359-AB84-41e8-9A78-36D110E6D2F9} +EXTERN_GUID(GUID_ManagedName, 0xf21f359, 0xab84, 0x41e8, 0x9a, 0x78, 0x36, 0xd1, 0x10, 0xe6, 0xd2, 0xf9); +``` + +## 解説 + カスタム インターフェイス属性は、タイプ ライブラリ内のオブジェクトのメタデータを定義します。 + + 使用 または 属性から管理対象の名前を取得します。 + + 詳細については、次を参照してください。 [Interface Attributes](../Topic/Interface%20Attributes.md) Visual c での説明を参照します。 + +## 使用例 + 次の例を使用してライブラリ定義、 `GUID_ManagedName` 属性です。 + +``` +[ + ... + custom(GUID_ManagedName, Microsoft.VisualStudio.CommandBars.dll") +] +library Microsoft_VisualStudio_CommandBars +{ + ... +} +``` + +## 必要条件 + **ヘッダー:** Cor.h \ No newline at end of file diff --git a/docs/framework/unmanaged-api/index.md b/docs/framework/unmanaged-api/index.md new file mode 100644 index 00000000000..f51899fef47 --- /dev/null +++ b/docs/framework/unmanaged-api/index.md @@ -0,0 +1,72 @@ +--- +title: "アンマネージ API リファレンス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "reference" +dev_langs: + - "C++" +helpviewer_keywords: + - "実行時、アンマネージ Api" + - "共通言語ランタイム、アンマネージ Api" + - "ネイティブ API 参照 [.NET Framework]" + - "アンマネージ API 参照 [.NET Framework]" +ms.assetid: 9aa000ee-c04c-492c-ae4f-83ecdf4fdbbe +caps.latest.revision: 24 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 24 +--- +# アンマネージ API リファレンス +このセクションには、ランタイム ホスト、コンパイラ、逆アセンブラー、難読化ツール、デバッガー、プロファイラーなど、マネージ コード関連のアプリケーションが使用できるアンマネージ API に関する情報が含まれています。 + +## このセクションの内容 + [一般的なデータ型](../../../docs/framework/unmanaged-api/common-data-types-unmanaged-api-reference.md) + 特にアンマネージ プロファイリング API とデバッギング API で使用される一般的なデータ型を示します。 + + [ALink](../../../ml/index.xml) + ALink API について説明します。この API は .NET Framework アセンブリおよび非バインド モジュールの作成をサポートします。 + + [Authenticode](../../../ml/index.xml) + Authenticode XrML ライセンスの作成および検証モジュールをサポートします。 + + [定数](../../../docs/framework/unmanaged-api/constants-unmanaged-api-reference.md) + CorSym.idl で定義される定数について説明します。 + + [カスタム インターフェイス属性](http://msdn.microsoft.com/ja-jp/940952f9-46ad-4a1a-920f-118dc0bdcd9f) + コンポーネント オブジェクト モデル \(COM\) のカスタム インターフェイス属性について説明します。 + + [デバッグ](../../../ml/index.xml) + デバッグ API について説明します。これによりデバッガーは、共通言語ランタイム \(CLR\) 環境で実行するコードをデバッグできます。 + + [シンボル ストア診断](../../../ml/index.xml) + シンボル ストア診断 API について説明します。これによりコンパイラは、デバッガーが使用するためのシンボル情報を生成できます。 + + [Fusion](../../../ml/index.xml) + Fusion API について説明します。これによりランタイム ホストは、アプリケーションに対するリソースの正しいバージョンを見つけるために、アプリケーションのリソースのプロパティにアクセスできます。 + + [ホスト](../../../ml/index.xml) + ホスト API について説明します。これにより、アンマネージ ホストが CLR をホストのアプリケーションに統合できます。 + + [メタデータ](../../../ml/index.xml) + メタデータ API について説明します。これによりコンパイラなどのクライアントは、CLR によって読み込まれる型を使用せずに、コンポーネントのメタデータを生成したり、メタデータにアクセスしたりできます。 + + [プロファイル](../../../ml/index.xml) + プロファイル API について説明します。これによりプロファイラーは CLR によるプログラムの実行を監視できます。 + + [厳密な名前](../../../ml/index.xml) + 厳密な名前付け API について説明します。これによりクライアントは、アセンブリに対する厳密な名前の署名を管理できます。 + + [Tlbexp ヘルパー関数](../../../ml/index.xml) + タイプ ライブラリ エクスポーター \(Tlbexp.exe\) がアセンブリからタイプ ライブラリへの変換プロセス中に使用する、2 つのヘルパー関数とインターフェイスについて説明します。 + +## 関連項目 + [開発ガイド](../../../docs/framework/development-guide.md) + + [.NET Framework の高度な読み取り](http://msdn.microsoft.com/ja-jp/faae8083-fecb-4514-b133-b0a5a32a7c3c) \ No newline at end of file diff --git a/docs/framework/wcf/TOC.md b/docs/framework/wcf/TOC.md new file mode 100644 index 00000000000..0119f70db2a --- /dev/null +++ b/docs/framework/wcf/TOC.md @@ -0,0 +1,111 @@ +# [WCF クライアントの概要](wcf-client-overview.md) +# [エンドポイントの作成の概要](endpoint-creation-overview.md) +# [サービスのセキュリティ保護](securing-services.md) +# [拡張機能の概要](introduction-to-extensibility.md) +# [方法 : サービス コントラクトでのエラーを宣言する](how-to-declare-faults-in-service-contracts.md) +# [XML からのデータ型クラスの生成](generating-data-type-classes-from-xml.md) +# [チュートリアル入門](getting-started-tutorial.md) +# [クライアントの動作の構成](configuring-client-behaviors.md) +# [簡略化された構成](simplified-configuration.md) +# [同期操作と非同期操作](synchronous-and-asynchronous-operations.md) +# [WCF クライアントを使用したサービスへのアクセス](accessing-services-using-a-wcf-client.md) +# [方法 : サービス コントラクトを実装する](how-to-implement-a-wcf-contract.md) +# [WCF のテスト用クライアント (WcfTestClient.exe)](wcf-test-client-wcftestclient-exe.md) +# [方法 : Windows 資格情報でサービスをセキュリティで保護する](how-to-secure-a-service-with-windows-credentials.md) +# [クライアントのランタイム動作の指定](specifying-client-run-time-behavior.md) +# [方法 : クライアントを構成する](how-to-configure-a-basic-wcf-client.md) +# [WCF のバインディングの概要](bindings-overview.md) +# [WCF に必要なオペレーティング システム リソース](operating-system-resources-required-by-wcf.md) +# [構成ファイルを使用してサービスを構成する方法](configuring-services-using-configuration-files.md) +# [プライバシー情報](privacy-information.md) +# [WCF サービス発行](wcf-service-publishing.md) +# [システム要件](wcf-system-requirements.md) +# [サービスとクライアントを構成するためのバインディングの使用](using-bindings-to-configure-services-and-clients.md) +# [エラーの定義と指定](defining-and-specifying-faults.md) +# [ベスト プラクティス : データ コントラクトのバージョン管理](best-practices-data-contract-versioning.md) +# [サービスの構成](configuring-services.md) +# [エンドポイント](endpoints.md) +# [フィードバックとコミュニティ](feedback-and-community.md) +# [WCF および .NET Framework のクライアント プロファイル](wcf-and-net-framework-client-profile.md) +# [秘密キー検索ツール (FindPrivateKey.exe)](find-private-key-tool-findprivatekey-exe.md) +# [一般的なリファレンス](general-reference.md) +# [サービス コントラクトの実装](implementing-service-contracts.md) +# [エンドポイント アドレスの指定](specifying-an-endpoint-address.md) +# [wsatConfig.exe によって返されたエラー コードの解釈](interpreting-error-codes-returned-by-wsatconfig-exe.md) +# [WCF トラブルシューティング クイックスタート](wcf-troubleshooting-quickstart.md) +# [コントラクトおよびサービスのエラーの指定と処理](specifying-and-handling-faults-in-contracts-and-services.md) +# [方法 : クライアントを作成する](how-to-create-a-wcf-client.md) +# [Windows Communication Foundation のアーキテクチャ](architecture.md) +# [WCF ライブラリ プロジェクトの配置](deploying-a-wcf-library-project.md) +# [ワークフロー サービス登録ツール (WFServicesReg.exe)](workflow-service-registration-tool-wfservicesreg-exe.md) +# [.NET Framework 4 で実行されている IIS 内の .NET Framework 3.5 で作成された WCF サービスをホストする方法](host-a-wcf-service-net-framework-3-5-iis--net-framework-4.md) +# [リソース消費の制御とパフォーマンスの向上](controlling-resource-consumption-and-improving-performance.md) +# [サービスのバインディングの構成](configuring-bindings-for-wcf-services.md) +# [WCF を使用したサービス指向アプリケーション](developing-service-oriented-applications-with-wcf.md) +# [WS-I Basic Profile 1.1 の相互運用可能サービスの作成](creating-ws-i-basic-profile-1-1-interoperable-services.md) +# [サービス トレース ビューアー ツール (SvcTraceViewer.exe)](service-trace-viewer-tool-svctraceviewer-exe.md) +# [サービス コントラクトの設計](designing-service-contracts.md) +# [方法 : 構成でサービス バインディングを指定する](how-to-specify-a-service-binding-in-configuration.md) +# [セッションの使用](using-sessions.md) +# [サービスとトランザクション](services-and-transactions.md) +# [WCF サービス ホスト (WcfSvcHost.exe)](wcf-service-host-wcfsvchost-exe.md) +# [バインディング](bindings.md) +# [方法 : クライアントの資格情報の値を指定する](how-to-specify-client-credential-values.md) +# [Windows Communication Foundation 4.5 の新機能](whats-new.md) +# [基本的なプログラミング ライフサイクル](basic-programming-lifecycle.md) +# [エラーの送受信](sending-and-receiving-faults.md) +# [COM+ サービス モデル構成ツール (ComSvcConfig.exe)](com-service-model-configuration-tool-comsvcconfig-exe.md) +# [方法 : セキュリティ モードを設定する](how-to-set-the-security-mode.md) +# [方法 : コード内でクライアント バインディングを指定する](how-to-specify-a-client-binding-in-code.md) +# [WCF サービス ホストの自動起動の制御](controlling-auto-launching-of-wcf-service-host.md) +# [WCF Visual Studio テンプレート](wcf-vs-templates.md) +# [チュートリアル入門のトラブルシューティング](troubleshooting-the-getting-started-tutorial.md) +# [方法 : サービス コントラクトを定義する](how-to-define-a-wcf-service-contract.md) +# [方法 : コード内でサービス バインディングを指定する](how-to-specify-a-service-binding-in-code.md) +# [ポータブル サブセット プロジェクトでサービス参照を追加する](add-service-reference-in-a-portable-subset-project.md) +# [方法 : マネージ アプリケーションで WCF サービスをホストする](how-to-host-a-wcf-service-in-a-managed-application.md) +# [サービスのランタイム動作の指定](specifying-service-run-time-behavior.md) +# [方法 : PrincipalPermissionAttribute クラスでアクセスを制限する](how-to-restrict-access-with-the-principalpermissionattribute-class.md) +# [ガイドラインとベスト プラクティス](guidelines-and-best-practices.md) +# [概念](conceptual-overview.md) +# [方法 : 非同期サービス操作を実装する](how-to-implement-an-asynchronous-service-operation.md) +# [方法 : 構成でクライアント バインディングを指定する](how-to-specify-a-client-binding-in-configuration.md) +# [WCF の単純化機能](wcf-simplification-features.md) +# [クライアントのセキュリティ保護](securing-clients.md) +# [方法 : サービスでクライアントに偽装する](how-to-impersonate-a-client-on-a-service.md) +# [Windows Communication Foundation とは](whats-wcf.md) +# [Windows Communication Foundation の基本概念](fundamental-concepts.md) +# [方法 : ProtectionLevel プロパティを設定する](how-to-set-the-protectionlevel-property.md) +# [基本的な WCF プログラミング](basic-wcf-programming.md) +# [Windows Communication Foundation 用語集](glossary.md) +# [Windows Communication Foundation ツール](tools.md) +# [ServiceModel 登録ツール (ServiceModelReg.exe)](servicemodelreg-exe.md) +# [方法 : セキュリティ コンテキストを調べる](how-to-examine-the-security-context.md) +# [サービスのバージョン管理](service-versioning.md) +# [方法 : 基本的なサービスをホストおよび実行する](how-to-host-and-run-a-basic-wcf-service.md) +# [構成エディター ツール (SvcConfigEditor.exe)](configuration-editor-tool-svcconfigeditor-exe.md) +# [ベスト プラクティス: 中継局](best-practices-intermediaries.md) +# [システム標準のバインディング](system-provided-bindings.md) +# [ドキュメントのガイド](guide-to-the-documentation.md) +# [メタデータ エンドポイントを公開する](publishing-metadata-endpoints.md) +# [クライアントを構築する](building-clients.md) +# [WS-AtomicTransaction 構成 MMC スナップイン](ws-atomictransaction-configuration-mmc-snap-in.md) +# [WCF エラー処理](wcf-error-handling.md) +# [WS-AtomicTransaction 構成ユーティリティ (wsatConfig.exe)](ws-atomictransaction-configuration-utility-wsatconfig-exe.md) +# [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](servicemodel-metadata-utility-tool-svcutil-exe.md) +# [ClickOnce を使用して WCF アプリケーションを展開する](deploying-wcf-applications-with-clickonce.md) +# [コード内での WCF サービスの構成](configuring-wcf-services-in-code.md) +# [ホスティング サービス](hosting-services.md) +# [方法 : クライアントを使用する](how-to-use-a-wcf-client.md) +# [.NET リモート処理から WCF への移行](migrating-from-net-remoting-to-wcf.md) +# [セットアップ問題のトラブルシューティング](troubleshooting-setup-issues.md) +# [Windows Communication Foundation](index.md) +# [負荷分散](load-balancing.md) +# [WCF サービス名の変更](renaming-a-wcf-service.md) +# [方法 : クライアントの資格情報の種類を指定する](how-to-specify-the-client-credential-type.md) +# [保護レベルの理解](understanding-protection-level.md) +# [コントラクト優先ツール](contract-first-tool.md) +# [WCF と ASP.NET Web API](wcf-and-aspnet-web-api.md) +# [信頼できるサービス](reliable-services.md) +# [WCF 開発ツールの使用](using-the-wcf-development-tools.md) +# [サービスの設計と実装](designing-and-implementing-services.md) diff --git a/docs/framework/wcf/accessing-services-using-a-wcf-client.md b/docs/framework/wcf/accessing-services-using-a-wcf-client.md new file mode 100644 index 00000000000..19f2f4b584e --- /dev/null +++ b/docs/framework/wcf/accessing-services-using-a-wcf-client.md @@ -0,0 +1,196 @@ +--- +title: "WCF クライアントを使用したサービスへのアクセス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "クライアント [WCF], サービスの利用" +ms.assetid: d780af9f-73c5-42db-9e52-077a5e4de7fe +caps.latest.revision: 36 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 36 +--- +# WCF クライアントを使用したサービスへのアクセス +サービスを作成したら、次に、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント プロキシを作成します。 クライアント アプリケーションは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント プロキシを使用してサービスと通信します。 通常、クライアント アプリケーションはサービスのメタデータをインポートし、サービスを呼び出すことのできる [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント コードを生成します。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントを作成するための基本手順は、次のとおりです。 + +1. サービス コードをコンパイルします。 + +2. [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント プロキシを生成します。 + +3. WCF クライアント プロキシをインスタンス化します。 + + WCF クライアント プロキシは、サービス モデル メタデータ ユーティリティ ツール \(SvcUtil.exe\) を使って手動で生成できます。詳細については、「[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)」を参照してください。 WCF クライアント プロキシは、Visual Studio の "サービス参照の追加" 機能を使って生成することもできます。 いずれかの方法で WCF クライアント プロキシを生成するには、サービスが実行中であることが必要です。 サービスが自己ホスト型の場合は、ホストを実行する必要があります。 サービスが IIS\/WAS でホストされている場合、特に必要な操作はありません。 + +## ServiceModel メタデータ ユーティリティ ツール + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) ツールは、メタデータからコードを生成するコマンド ライン ツールです。 基本的な Svcutil.exe コマンドの使用例を次に示します。 + +``` +Svcutil.exe +``` + + また、Svcutil.exe は、ファイル システム上の Web サービス記述言語 \(WSDL\) ファイルや XML スキーマ定義言語 \(XSD\) ファイルを指定して使用することもできます。 + +``` +Svcutil.exe +``` + + 結果として、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント コードが格納されたコード ファイルが作成されます。クライアント アプリケーションはこのコードを使用してサービスを呼び出すことができます。 + + このツールを使用して構成ファイルを生成することもできます。 + +``` +Svcutil.exe +``` + + ファイル名を 1 つだけ指定した場合、それは出力ファイルの名前になります。 ファイル名を 2 つ指定した場合は、1 番目のファイルが入力構成ファイルになり、そのファイルの内容と生成された構成がマージされ、2 番目のファイルに書き出されます。 構成[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[サービスのバインディングの構成](../../../docs/framework/wcf/configuring-bindings-for-wcf-services.md)」を参照してください。 + +> [!IMPORTANT] +> セキュリティで保護されていないメタデータ要求には、セキュリティで保護されていないネットワーク要求と同様の一定の危険が伴います。通信先のエンドポイントが、本当に相手から通知されたとおりのエンドポイントかどうかわからない場合、取得した情報は悪質なサービスからのメタデータである可能性があります。 + +## Visual Studio の "サービス参照の追加" + サービスを実行した状態で、WCF クライアント プロキシを含むプロジェクトを右クリックし、**\[サービス参照の追加\]** を選択します。 **\[サービス参照の追加\]** ダイアログ ボックスで、呼び出すサービスの URL を入力し、**\[移動\]** をクリックします。 このダイアログ ボックスには、指定したアドレスで利用可能なサービスの一覧が表示されます。 サービスをダブルクリックすると、利用可能なコントラクトと操作が表示されるので、生成されたコードの名前空間を指定して、**\[OK\]** をクリックします。 + +## 例 + サービス用に作成されたコントラクトのコード例を次に示します。 + +```csharp +// Define a service contract. +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public interface ICalculator +{ + [OperationContract] + double Add(double n1, double n2); + // Other methods are not shown here. +} +``` + +```vb +' Define a service contract. + _ +Public Interface ICalculator + _ + Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double + ' Other methods are not shown here. +End Interface +``` + + ServiceModel メタデータ ユーティリティ ツールと、Visual Studio の "サービス参照の追加" により、次の [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント クラスが生成されます。 このクラスは ジェネリック クラスから継承されたもので、`ICalculator` インターフェイスを実装します。 このツールは、`ICalculator` インターフェイス \(この例には表示されていません\) も生成します。 + +```csharp +public partial class CalculatorClient : System.ServiceModel.ClientBase, ICalculator +{ + public CalculatorClient(){} + + public CalculatorClient(string configurationName) : + base(configurationName) + {} + + public CalculatorClient(System.ServiceModel.Binding binding) : + base(binding) + {} + + public CalculatorClient(System.ServiceModel.EndpointAddress address, + System.ServiceModel.Binding binding) : + base(address, binding) + {} + + public double Add(double n1, double n2) + { + return base.InnerChannel.Add(n1, n2); + } +} + +``` + +```vb +Partial Public Class CalculatorClient + Inherits System.ServiceModel.ClientBase(Of ICalculator) + Implements ICalculator + + Public Sub New() + MyBase.New + End Sub + + Public Sub New(ByVal configurationName As String) + MyBase.New(configurationName) + End Sub + + Public Sub New(ByVal binding As System.ServiceModel.Binding) + MyBase.New(binding) + End Sub + + Public Sub New(ByVal address As _ + System.ServiceModel.EndpointAddress, _ + ByVal binding As System.ServiceModel.Binding) + MyBase.New(address, binding) + End Sub + + Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As _ + Double Implements ICalculator.Add + Return MyBase.InnerChannel.Add(n1, n2) + End Function +End Class + +``` + +## WCF クライアントの使用 + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントを使用するには、次のコードのように [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントのインスタンスを作成し、次にそのメソッドを呼び出します。 + +```csharp +// Create a client object with the given client endpoint configuration. +CalculatorClient calcClient = new CalculatorClient("CalculatorEndpoint")); +// Call the Add service operation. +double value1 = 100.00D; +double value2 = 15.99D; +double result = calcClient.Add(value1, value2); +Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + +``` + +```vb +' Create a client object with the given client endpoint configuration. +Dim calcClient As CalculatorClient = _ +New CalculatorClient("CalculatorEndpoint") + +' Call the Add service operation. +Dim value1 As Double = 100.00D +Dim value2 As Double = 15.99D +Dim result As Double = calcClient.Add(value1, value2) +Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result) + +``` + +## クライアントによってスローされた例外のデバッグ + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントからスローされる例外の多くは、サービスで発生した例外が原因となって引き起こされます。 いくつかの例を次に示します。 + +- : 既存の接続がリモート ホストによって強制終了されました。 + +- : 基になる接続が予期せずに閉じられました。 + +- : ソケット接続が中止されました。 これは、メッセージ処理時のエラー、リモート ホストでの受信タイムアウトの超過、または基になるネットワーク リソースの問題が原因で発生する可能性があります。 + + このような種類の例外が発生した場合、問題を解決するには、サービス側でトレースをオンにし、そこで発生した例外を特定することをお勧めします。 トレース[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[トレース](../../../docs/framework/wcf/diagnostics/tracing/index.md)」および「[トレースを使用したアプリケーションのトラブルシューティング](../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md)」を参照してください。 + +## 参照 + [方法 : クライアントを作成する](../../../docs/framework/wcf/how-to-create-a-wcf-client.md) + [方法 : 双方向コントラクトを使用してサービスにアクセスする](../../../docs/framework/wcf/feature-details/how-to-access-services-with-a-duplex-contract.md) + [方法 : サービス操作を非同期に呼び出す](../../../docs/framework/wcf/feature-details/how-to-call-wcf-service-operations-asynchronously.md) + [方法 : 一方向コントラクトと要求\/応答コントラクトを使用してサービスにアクセスする](../../../docs/framework/wcf/feature-details/how-to-access-wcf-services-with-one-way-and-request-reply-contracts.md) + [方法 : WSE 3.0 サービスにアクセスする](../../../docs/framework/wcf/feature-details/how-to-access-a-wse-3-0-service-with-a-wcf-client.md) + [生成されたクライアント コードの理解](../../../docs/framework/wcf/feature-details/understanding-generated-client-code.md) + [方法 : XmlSerializer を使用する WCF クライアント アプリケーションの起動時間を短縮する](../../../docs/framework/wcf/feature-details/startup-time-of-wcf-client-applications-using-the-xmlserializer.md) + [クライアントのランタイム動作の指定](../../../docs/framework/wcf/specifying-client-run-time-behavior.md) + [クライアントの動作の構成](../../../docs/framework/wcf/configuring-client-behaviors.md) \ No newline at end of file diff --git a/docs/framework/wcf/add-service-reference-in-a-portable-subset-project.md b/docs/framework/wcf/add-service-reference-in-a-portable-subset-project.md new file mode 100644 index 00000000000..d6fb53ae333 --- /dev/null +++ b/docs/framework/wcf/add-service-reference-in-a-portable-subset-project.md @@ -0,0 +1,55 @@ +--- +title: "ポータブル サブセット プロジェクトでサービス参照を追加する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 61ccfe0f-a34b-40ca-8f5e-725fa1b8095e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# ポータブル サブセット プロジェクトでサービス参照を追加する +ポータブル サブセット プロジェクトにより、.NET アセンブリ プログラマは 1 つのソース ツリーを保持しつつ、システムを構築できるようになります。また、ポータブル サブセット プロジェクトは、複数の .NET プラットフォーム \(デスクトップ、Silverlight、Windows Phone、および XBOX\) をサポートしています。ポータブル サブセット プロジェクトは、コア .NET プラットフォームで使用できる .NET Framework アセンブリである .NET ポータブル ライブラリのみを参照します。 + +## サービス参照の追加の詳細 + ポータブル サブセット プロジェクトでサービス参照を追加する場合は、次の制限が適用されます。 + +1. では、文字エンコーディングのみを使用できます。SOAP エンコーディングを使用すると、インポート中にエラーが発生します。 + +2. シナリオを使用するサービスの場合、再利用された型をポータブル サブセットからのみ受け取ることを確認するために、データ コントラクト サロゲートが提供されます。 + +3. ポータブル ライブラリでサポートされていないバインド \(、トランザクション フロー、信頼できるセッション、または MTOM エンコーディングがない 、および等価のカスタム バインドを除くすべてのバインド\) に依存するエンドポイントは無視されます。 + +4. メッセージ ヘッダーは、インポート前にすべての操作におけるすべてのメッセージの説明から削除されます。 + +5. 非ポータブル属性 \(、および \) は、生成されたクライアント プロキシ コードから削除されます。 + +6. 非ポータブル プロパティ \(ProtectionLevel、SessionMode、IsInitiating、IsTerminating\) は、、および から削除されます。 + +7. すべてのサービス操作は、クライアント プロキシ上で非同期操作として生成されます。 + +8. 非ポータブル型を使用する生成済みのクライアント コンストラクターは削除されます。 + +9. インスタンスは、生成されたクライアントで公開されます。 + +10. コード ジェネレーターのアセンブリとバージョンを示すコメント "`// This code was auto-generated by Microsoft.VisualStudio.Portable.AddServiceReference, version 1.0.0.0`" がファイルの先頭に挿入されます。 + +11. インターフェイスはサポートされません。 + +12. Net.Tcp および PollingDuplex バインドはサポートされません。 + +13. は常にエラーに対して使用されます。 + +14. ポータブル サブセット プロジェクトでは はサポートされません。 + +## 参照 + [WCF クライアントを使用したサービスへのアクセス](../../../docs/framework/wcf/accessing-services-using-a-wcf-client.md) + [汎用性のあるクラス ライブラリ](http://msdn.microsoft.com/library/gg597391\(v=vs.110\)) \ No newline at end of file diff --git a/docs/framework/wcf/architecture.md b/docs/framework/wcf/architecture.md new file mode 100644 index 00000000000..28e26f89866 --- /dev/null +++ b/docs/framework/wcf/architecture.md @@ -0,0 +1,57 @@ +--- +title: "Windows Communication Foundation のアーキテクチャ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アーキテクチャ [WCF]" + - "WCF [WCF], アーキテクチャ" + - "Windows Communication Foundation [WCF], アーキテクチャ" +ms.assetid: a3bcb0a1-56ea-4ba6-9736-d260d90dade5 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# Windows Communication Foundation のアーキテクチャ +次の図は、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アーキテクチャの主要なレイヤーを示しています。 + +## WCF アーキテクチャ + ![WCF アーキテクチャ](../../../docs/framework/wcf/media/wcf-architecture.gif "WCF\_Architecture") + +### コントラクトと記述 + コントラクトは、メッセージ システムのさまざまな側面を定義します。データ コントラクトには、サービスが作成または処理できるすべてのメッセージを構成するすべてのパラメーターが記述されます。メッセージ パラメーターは、XML を理解できるすべてのシステムがドキュメントを処理できるように XML スキーマ定義言語 \(XSD\) ドキュメントによって定義されます。メッセージ コントラクトは、SOAP プロトコルを使用する特定のメッセージ部分を定義し、相互運用性機能によって正確さが要求される場合に、よりきめ細かな制御を許可します。サービス コントラクトは、サービスの実際のメソッド署名を指定し、サポートされているプログラミング言語のいずれか \(Visual Basic や Visual C\# など\) で記述されたインターフェイスとして配布されます。 + + ポリシーとバインディングは、サービスとの通信に必要な条件を規定します。たとえば、バインディングでは、使用するトランスポート \(HTTP や TCP など\) とエンコーディングを少なくとも指定する必要があります。ポリシーには、セキュリティ要件、およびサービスと通信するために満たす必要があるその他の条件が含まれます。 + +### サービス ランタイム + サービス ランタイム レイヤーには、サービスの実際の操作の実行中にのみ発生する動作 \(つまり、サービスのランタイム動作\) が含まれます。調整コントロールでは、処理されるメッセージの数を制御します。サービスの需要が事前設定した上限に達した場合は、この数を変更できます。エラー動作では、サービスで内部エラーが発生した場合の処理方法 \(たとえば、クライアントに伝達される情報を制御するなど\) を指定します \(情報の量が多すぎると、悪意のあるユーザーに攻撃のきっかけを与える可能性があります\)。メタデータの動作では、メタデータを外部に公開するかどうか、およびその方法を制御します。インスタンスの動作では、サービスのインスタンスをいくつ実行できるかを指定します \(たとえば、シングルトンは、1 つのインスタンスですべてのメッセージを処理するように指定します\)。トランザクションの動作では、エラーが発生した場合にトランザクション操作をロールバックできるようにします。ディスパッチの動作では、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] インフラストラクチャによるメッセージの処理方法を制御します。 + + 拡張機能を使用すると、ランタイム プロセスをカスタマイズできます。たとえば、メッセージの検査はメッセージの各部分を検査する機能です。また、パラメーターのフィルター処理を使用すると、メッセージ ヘッダーに作用するフィルターに基づいて、事前設定されたアクションを実行できます。 + +### メッセージング + メッセージング レイヤーは、*チャネル*で構成されます。チャネルは、何らかの方法 \(たとえば、メッセージを認証するなど\) によってメッセージを処理するコンポーネントです。チャネルのセットは、*チャネル スタック*とも呼ばれます。チャネルは、メッセージおよびメッセージ ヘッダーに対して作用します。これは、主にメッセージ本文の内容の処理に関係するサービス ランタイム レイヤーとは異なります。 + + チャネルの種類としては、トランスポート チャネルとプロトコル チャネルの 2 つがあります。 + + トランスポート チャネルは、ネットワーク \(または外部との通信ポイント\) からのメッセージの読み取りと書き込みを行います。一部のトランスポートはエンコーダーを使用して、\(XML Infoset として表現される\) メッセージを、ネットワークで使用されるバイト ストリーム表現に \(またはその逆に\) 変換します。トランスポートの例としては、HTTP、名前付きパイプ、TCP、MSMQ などがあります。エンコーディングの例としては、XML と最適化されたバイナリがあります。 + + プロトコル チャネルは、メッセージ処理プロトコルを実装します。多くの場合、これはメッセージから追加のヘッダーを読み取るまたは書き込むことによって行います。このようなプロトコルの例としては、WS\-Security と WS\-Reliability があります。 + + メッセージング レイヤーは、データに使用できる形式と交換パターンを示します。WS\-Security は、メッセージ レイヤーでのセキュリティを有効にする WS\-Security 仕様の実装です。WS\-ReliableMessaging チャネルは、メッセージ配信の保証を有効にします。エンコーダーは、メッセージのニーズに合わせて使用できるさまざまなエンコーディングを提供します。HTTP チャネルは、ハイパーテキスト転送プロトコルをメッセージ配信に使用することを指定します。同様に、TCP チャネルは TCP プロトコルを指定します。トランザクション フロー チャネルは、トランザクション メッセージ パターンを制御します。名前付きパイプ チャネルは、プロセス間通信を有効にします。MSMQ チャネルは、MSMQ アプリケーションとの相互運用を有効にします。 + +### ホストとアクティブ化 + サービスの最終的な形はプログラムです。他のプログラムと同様、サービスは実行可能ファイルで実行される必要があります。これは、*自己ホスト*サービスと呼ばれます。 + + また、サービスは、IIS や Windows アクティブ化サービス \(WAS\) などの外部エージェントによって管理されている実行可能ファイルで*ホスト*、つまり実行することもできます。WAS を使用した場合、WAS を実行しているコンピューター上で [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションを展開すると、自動的にそのアプリケーションをアクティブ化できます。サービスは、実行可能ファイル \(.exe ファイル\) として手動で実行することもできます。また、Windows サービスとして自動的に実行することもできます。COM\+ コンポーネントを、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスとしてホストすることもできます。 + +## 参照 + [Windows Communication Foundation とは](../../../docs/framework/wcf/whats-wcf.md) + [Windows Communication Foundation の基本概念](../../../docs/framework/wcf/fundamental-concepts.md) \ No newline at end of file diff --git a/docs/framework/wcf/basic-programming-lifecycle.md b/docs/framework/wcf/basic-programming-lifecycle.md new file mode 100644 index 00000000000..7676c106197 --- /dev/null +++ b/docs/framework/wcf/basic-programming-lifecycle.md @@ -0,0 +1,45 @@ +--- +title: "基本的なプログラミング ライフサイクル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "サービスの作成 [WCF]" +ms.assetid: 7cf21bfe-23bd-46aa-8033-609f851dbf76 +caps.latest.revision: 36 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 36 +--- +# 基本的なプログラミング ライフサイクル +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] では、アプリケーションは、同一のコンピューター上、インターネット上、異なるアプリケーション プラットフォーム上のいずれに存在しても、通信できます。ここでは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションを構築するために必要な作業について説明します。実際に動作するサンプル アプリケーションについては、「[チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 + +## 基本的な作業 + 基本的な作業は、次の順序で行います。 + +1. サービス コントラクトを定義します。サービス コントラクトでは、サービスの署名、交換するデータ、およびコントラクトに必要なその他のデータを指定します。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)][サービス コントラクトの設計](../../../docs/framework/wcf/designing-service-contracts.md). + +2. コントラクトを実装します。サービス コントラクトを実装するには、そのコントラクトを実装するクラスを作成し、ランタイムに必要なカスタム動作を指定します。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)][サービス コントラクトの実装](../../../docs/framework/wcf/implementing-service-contracts.md). + +3. エンドポイントおよびその他の動作情報を指定して、サービスを構成します。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)][サービスの構成](../../../docs/framework/wcf/configuring-services.md). + +4. サービスをホストします。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)][ホスティング サービス](../../../docs/framework/wcf/hosting-services.md). + +5. クライアント アプリケーションを構築します。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)][クライアントを構築する](../../../docs/framework/wcf/building-clients.md). + + このセクションのトピックではこの順に従って説明しますが、手順を最初から実行しないシナリオもあります。たとえば、既存のサービスを使用するクライアントを構築する場合は、手順 5. から開始します。また、既存のクライアント アプリケーションが使用するサービスを構築する場合は、手順 5. を省略できます。 + + サービス コントラクトの開発について理解したら、「[拡張機能の概要](../../../docs/framework/wcf/introduction-to-extensibility.md)」にも目を通します。サービスで問題が発生した場合は、「[WCF トラブルシューティング クイックスタート](../../../docs/framework/wcf/wcf-troubleshooting-quickstart.md)」をチェックし、同様の問題が他のサービスで発生していないかどうかを確認してください。 + +## 参照 + [サービス コントラクトの実装](../../../docs/framework/wcf/implementing-service-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/basic-wcf-programming.md b/docs/framework/wcf/basic-wcf-programming.md new file mode 100644 index 00000000000..08eef9b8731 --- /dev/null +++ b/docs/framework/wcf/basic-wcf-programming.md @@ -0,0 +1,80 @@ +--- +title: "基本的な WCF プログラミング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "基本的なプログラミング [WCF]" + - "WCF [WCF], 基本的なプログラミング" + - "WCF [WCF], プログラミング" + - "Windows Communication Foundation [WCF], 基本的なプログラミング" + - "Windows Communication Foundation [WCF], プログラミング" +ms.assetid: 3ae3d498-f43c-4ecc-8cc0-6cbe36b62593 +caps.latest.revision: 31 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 31 +--- +# 基本的な WCF プログラミング +ここでは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションを作成するときの基本を示します。 + +## このセクションの内容 + [基本的なプログラミング ライフサイクル](../../../docs/framework/wcf/basic-programming-lifecycle.md) + 設計、ビルド、展開から成る [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスおよびクライアント アプリケーションのライフサイクルについて説明します。 + + [サービスの設計と実装](../../../docs/framework/wcf/designing-and-implementing-services.md) + サービス コントラクトの設計および実装方法、メッセージ交換パターンの選択方法、エラー コントラクトの指定方法、およびその他のサービスの基本的な側面について説明します。 + + [サービスの構成](../../../docs/framework/wcf/configuring-services.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスを構成して、コントラクト要件のサポート、ローカル ランタイム動作のカスタマイズ、およびサービスを公開するアドレスの指定を行う方法について説明します。 + + [ホスティング サービス](../../../docs/framework/wcf/hosting-services.md) + アプリケーションでサービスをホストするときの基本について説明します。 + + [クライアントを構築する](../../../docs/framework/wcf/building-clients.md) + サービスからのメタデータの取得、取得したメタデータの [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント コードへの変換、セキュリティ問題の処理、および [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントのビルド、構成、ホスティングを行う方法について説明します。 + + [拡張機能の概要](../../../docs/framework/wcf/introduction-to-extensibility.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] を拡張してカスタム ソリューションを作成する方法について説明します。 + + [WCF トラブルシューティング クイックスタート](../../../docs/framework/wcf/wcf-troubleshooting-quickstart.md) + 最も起こりやすい問題の一部を挙げ、その問題の解決方法とその問題の詳細情報を掲載している場所について説明します。 + + [WCF と ASP.NET Web API](../../../docs/framework/wcf/wcf-and-aspnet-web-api.md) + 2 つのテクノロジ、そのテクノロジの相互関係、およびそのテクノロジを使用するタイミングについて説明します。 + +## 関連項目 + + + + + + +## 関連項目 + [システム要件](../../../docs/framework/wcf/wcf-system-requirements.md) + + [概念](../../../docs/framework/wcf/conceptual-overview.md) + + [チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md) + + [ガイドラインとベスト プラクティス](../../../docs/framework/wcf/guidelines-and-best-practices.md) + + [Windows Communication Foundation ツール](../../../docs/framework/wcf/tools.md) + + [Windows Communication Foundation Samples](http://msdn.microsoft.com/ja-jp/8ec9d192-5d81-4f64-bfd3-90c5e5858c91) + + [概要](../../../docs/framework/wcf/samples/getting-started-sample.md) + + [インライン コードを使用した IIS ホスティング](../../../docs/framework/wcf/samples/iis-hosting-using-inline-code.md) + + [自己ホスト](../../../docs/framework/wcf/samples/self-host.md) \ No newline at end of file diff --git a/docs/framework/wcf/best-practices-data-contract-versioning.md b/docs/framework/wcf/best-practices-data-contract-versioning.md new file mode 100644 index 00000000000..ab25f21b7c2 --- /dev/null +++ b/docs/framework/wcf/best-practices-data-contract-versioning.md @@ -0,0 +1,117 @@ +--- +title: "ベスト プラクティス : データ コントラクトのバージョン管理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "ベスト プラクティス [WCF], データ コントラクトのバージョン管理" + - "データ コントラクト" + - "サービス コントラクト" + - "Windows Communication Foundation, データ コントラクト" +ms.assetid: bf0ab338-4d36-4e12-8002-8ebfdeb346cb +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# ベスト プラクティス : データ コントラクトのバージョン管理 +このトピックでは、長期的に容易に拡張させることのできるデータ コントラクトを作成するためのベスト プラクティスをいくつか紹介します。 データ コントラクト[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[データ コントラクトの使用](../../../docs/framework/wcf/feature-details/using-data-contracts.md)」の各トピックを参照してください。 + +## スキーマ検証に関する注意事項 + データ コントラクトのバージョン管理に関してまず注意を要することは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] がエクスポートしたデータ コントラクト スキーマには、省略可能を示すマークが既定で各要素に付けられることを除き、バージョン管理のサポートがないという点です。 + + したがって、新しいデータ メンバーを追加するなどの一般的なバージョン管理シナリオであっても、スキーマに関してはシームレスに実装することはできません。 新しいバージョンのデータ コントラクト \(この例ではデータ メンバーが追加されたもの\) を、古いスキーマに基づいて検証することはできません。 + + ただし、スキーマへの厳密な準拠が要求されない場合も数多くあります。 ASP.NET を使って実現される、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] Web サービスや XML Web サービスなど多くの Web サービス プラットフォームでは、特に必要な場合を除いてスキーマ検証が実施されないので、スキーマに定義されていない要素も容認されます。 このようなプラットフォームであればバージョン管理は容易です。 + + これらのことから、データ コントラクトのバージョン管理に関するガイドラインには、厳密なスキーマ検証が必要な場合とそうでない場合の 2 種類があります。 + +## スキーマ検証が必要な場合のバージョン管理 + 新から旧、旧から新の両方向で厳密なスキーマ検証が必要な場合、データ コントラクトは変更不可であると考えなければなりません。 バージョン管理が必要であれば、別の名前または名前空間で新しいデータ コントラクトを作成したうえで、そのデータ型が使用されているサービス コントラクトにバージョンを付ける必要があります。 + + たとえば、`PoProcessing` という発注書処理サービス コントラクトに対して、`PurchaseOrder` データ コントラクトに適合したパラメーターを受け取る `PostPurchaseOrder` という操作が定義されているとします。 `PurchaseOrder` コントラクトの内容を変更したい場合は、新しく `PurchaseOrder2` というデータ コントラクトを作成し、こちらに変更内容を含める必要があります。 そのうえで、サービス コントラクト レベルでバージョン管理を行う必要があります。 たとえば、`PurchaseOrder2` パラメーターを受け取る `PostPurchaseOrder2` 操作を別に作成するか、`PoProcessing2` サービス コントラクトを別途作成して `PostPurchaseOrder` 操作が `PurchaseOrder2` データ コントラクトを受け取るようにします。 + + なお、他のデータ コントラクトから参照されるデータ コントラクトに変更を施すと、サービス モデル レイヤーも拡張されます。 たとえば、先ほどの例で、`PurchaseOrder` データ コントラクトは変更の必要がないとします。 ただし、そのデータ メンバーである `Customer` データ コントラクトに、さらに `Address` データ コントラクトが含まれており、これを変更しなければならないとします。 この場合は、まず `Address2` というデータ コントラクトを別に作成して必要な変更を行います。次に `Customer2` というデータ コントラクトを作成し、`Address2` をそのデータ メンバーとして定義します。さらに、`PurchaseOrder2` というデータ コントラクトを作成して、`Customer2` をデータ メンバーとして定義します。 先ほどの例と同様、サービス コントラクトに対してもバージョン管理を行う必要があります。 + + ここまでの例では "2" を付けて名前を変えましたが、実際には、バージョン番号または日付を付加して、名前空間の方を変更するようお勧めします。 たとえば、`http://schemas.contoso.com/2005/05/21/PurchaseOrder` というデータ コントラクトを `http://schemas.contoso.com/2005/10/14/PurchaseOrder` に変更します。 + + ベスト プラクティスの[!INCLUDE[crdefault](../../../includes/crdefault-md.md)]「[サービスのバージョン管理](../../../docs/framework/wcf/service-versioning.md)」を参照してください。 + + アプリケーションから送信するメッセージは厳密にスキーマに適合させる必要があるが、外部から受信したメッセージがこれに適合しているとは限らない、という場合もあります。 この場合、受信したメッセージには、異質なデータが含まれているおそれがあります。 異質な値も [!INCLUDE[indigo2](../../../includes/indigo2-md.md)]に格納され、そのまま返されるので、スキーマに適合しないというメッセージが送信される結果になります。 これを回避するには、ラウンド トリップ機能を無効にする必要があります。 これには、2 つの方法があります。 + +- 独自に定義した型に インターフェイスを実装しない。 + +- サービス コントラクトに 属性を適用し、 プロパティ値を `true` に設定する。 + + ラウンドトリップ[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[上位互換性のあるデータ コントラクト](../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md)」を参照してください。 + +## スキーマ検証が不要な場合のバージョン管理 + スキーマへの厳密な適合が求められるケースはそれほど多くありません。 多くのプラットフォームでは、スキーマに記述されていない余分な要素が許容されています。 これが許容される場合は、「[データ コントラクトのバージョン管理](../../../docs/framework/wcf/feature-details/data-contract-versioning.md)」および「[上位互換性のあるデータ コントラクト](../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md)」に記載されている機能をすべて使用できます。 その場合は、以下のガイドラインに従うことをお勧めします。 + + 旧バージョンの型が想定されている場所へ新バージョンの型を送信したり、新バージョンが想定されている場所へ旧バージョンを送信したりするには、いくつかのガイドラインに厳密に従う必要があります。 それ以外の項目への準拠は、それほど厳密には要求されませんが、これらはスキーマの将来的なバージョン管理に影響する可能性があります。 + +1. 型の継承でデータ コントラクトをバージョン化してはいけません。 新バージョンを作成する場合は、既存の型のデータ コントラクトを直接変更するか、新しく型を定義してください。 + +2. 継承とデータ コントラクトを併用してもかまいませんが、バージョン管理の目的で継承を使用しないことなど、いくつかの規則に従う必要があります。 ある型が基本型から派生している場合、その型は将来のバージョンで別の基本型から派生させてはいけません \(データ コントラクトが同一である場合を除きます\)。 例外として、階層内で、基本型と派生したデータ コントラクト型との間に別の型を追加することは可能です。ただし追加する型に含まれるデータ メンバーの名前は、階層内の他の型のどのバージョンに含まれるメンバーとも、同じにならないようにする必要があります。 一般に、同じ継承階層の異なるレベルで同名のデータ メンバーを使用すると、バージョン管理の上で重大な問題が生じるおそれがあります。 + +3. ラウンド トリップが有効になるように、データ コントラクトの最初のバージョンから、必ず を実装します。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [上位互換性のあるデータ コントラクト](../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md). このインターフェイスが実装されていない型の 1 つ以上のバージョンがリリース済みである場合は、この型の次のバージョンで実装します。 + +4. 新しいバージョンで、データ コントラクト名や名前空間を変更しないでください。 データ コントラクトの基になる型の名前や名前空間を変更する場合、 プロパティを使うなど、適切なメカニズムを使用して、データ コントラクト名と名前空間を残しておく必要があります。 名前付け[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[データ コントラクト名](../../../docs/framework/wcf/feature-details/data-contract-names.md)」を参照してください。 + +5. 新しいバージョンで、データ メンバーの名前を変更しないでください。 データ メンバーの基になるフィールド、プロパティ、イベントの名前を変更する場合は、 の `Name` プロパティを使用して、既存のデータ メンバー名を残しておく必要があります。 + +6. 新しいバージョンで、データ メンバーの基になるフィールド、プロパティ、イベントの型を変更して、そのデータ メンバーに対応するデータ コントラクトが変わってしまうようなことは避けてください。 予測されるデータ コントラクトを判断するうえで、インターフェイス型は に相当することを念頭に置きます。 + +7. 新しいバージョンで、 属性の プロパティを調整して既存のデータ メンバーの順序を変えることは避けてください。 + +8. 新しいバージョンで、新しいデータ メンバーを追加することは可能ですが、 以下の規則に従う必要があります。 + + 1. プロパティ値は、既定値である `false` のまま変更しないでください。 + + 2. メンバーの既定値として `null` または 0 を許容できない場合は、 を使用してコールバック メソッドを指定する必要があります。該当するメンバーが受信ストリーム内に含まれていない場合は、このコールバック メソッドで妥当な既定値を設定します。 コールバック[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[バージョン トレラントなシリアル化コールバック](../../../docs/framework/wcf/feature-details/version-tolerant-serialization-callbacks.md)」を参照してください。 + + 3. `DataMemberAttribute` の `Order` プロパティを使用して、新しく追加されたデータ メンバーがすべて、既存のデータ メンバーの後に配置されるようにします。 これを実現するために、最初のバージョンのデータ コントラクトでは、どのデータ メンバーにも `Order` プロパティを設定しないことをお勧めします。 バージョン 2 のデータ コントラクトで追加されたすべてのデータ メンバーについては、`Order` プロパティを 2 に設定します。 バージョン 3 のデータ コントラクトで追加されたすべてのデータ メンバーについては、`Order` プロパティを 3 に設定します。以降のバージョンも同様にしていきます。 複数のデータ メンバーに同じ `Order` 番号を設定してかまいません。 + +9. 新しいバージョンで、データ メンバーを削除しないでください。旧バージョンで、 プロパティ値が `false` \(既定値\) であった場合も同様です。 + +10. 既存のデータ メンバーの `IsRequired` プロパティ値をバージョンごとに変更しないでください。 + +11. 必須データ メンバー \(`IsRequired` の値が `true`\) の場合、`EmitDefaultValue` プロパティ値をバージョンごとに変更しないでください。 + +12. バージョン階層を分岐させないでください。 つまり、あるバージョンから別のバージョンへのパスは、このガイドラインで認められている変更のみを使用して、1 方向に 1 つのみになるようにします。 + + たとえば、Person データ コントラクトのバージョン 1 に、Name というデータ メンバーだけが定義されているとします。これに対し、Age というメンバーのみを追加したバージョン 2a と、Address というメンバーのみを追加したバージョン 2b を作成してはいけません。 2a から 2b に移行しようとすると、Age を削除して Address を追加することになります。この逆方向に移行する場合は、Address を削除して Age を追加しなければなりません。 このガイドラインでは、メンバーの削除が禁止されています。 + +13. 一般に、アプリケーションの新しいバージョンで、既存のデータ コントラクト型のサブタイプを新たに作成することはできません。 同様に、Object 型またはインターフェイス型として宣言されたデータ メンバーの代わりに、新しいデータ コントラクトを作成して使うことはできません。 新規にクラスを定義できるのは、旧アプリケーションのすべてのインスタンスについて、既知の型リストにその新しい型を追加できることがわかっている場合に限ります。 たとえば、アプリケーションのバージョン 1 に LibraryItem というデータ コントラクト型があり、そのサブタイプとして Book および Newspaper が定義されているとします。 LibraryItem には、Book と Newspaper を含む既知の型のリストがあります。 この状況で、LibraryItem のサブタイプである Magazine をバージョン 2 に追加するとします。 バージョン 2 の Magazine のインスタンスをバージョン 1 に送信した場合、既知の型のリストに Magazine データ コントラクトが見つからないので、例外がスローされます。 + +14. バージョン間で列挙型メンバーを追加または削除することはできません。 また、列挙型メンバーの名前を変更することもできません。ただし `EnumMemberAttribute` 属性の Name プロパティを使用して、データ コントラクト モデル内の名前を同じに保つ場合は例外です。 + +15. コレクションは、「[データ コントラクトのコレクション型](../../../docs/framework/wcf/feature-details/collection-types-in-data-contracts.md)」で説明されているように、データ コントラクト モデル内で交換できます。 これにより、高い柔軟性を実現できます。 ただし、バージョン間で交換できないような形でコレクション型を不用意に変更しないように注意してください。 たとえば、カスタマイズされていない \(`CollectionDataContractAttribute` 属性がない\) コレクションをカスタマイズされたコレクションに変更したり、カスタマイズされたコレクションをカスタマイズされていないコレクションに変更したりしないでください。 また、`CollectionDataContractAttribute` のプロパティをバージョンごとに変更しないでください。 許可されている変更は、Name プロパティまたは Namespace プロパティの追加だけです。この変更は、基になるコレクション型の名前または名前空間が変更されたとき、データ コントラクト名および名前空間を旧バージョンと同じにしておきたい場合に行います。 + + 以上の中には、状況によっては従わなくてもよいガイドラインもあります。 その判断は、シリアル化、逆シリアル化、およびスキーマのメカニズムを完全に理解したうえで行ってください。 + +## 参照 + + + + + + + + + + [データ コントラクトの使用](../../../docs/framework/wcf/feature-details/using-data-contracts.md) + [データ コントラクトのバージョン管理](../../../docs/framework/wcf/feature-details/data-contract-versioning.md) + [データ コントラクト名](../../../docs/framework/wcf/feature-details/data-contract-names.md) + [上位互換性のあるデータ コントラクト](../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md) + [バージョン トレラントなシリアル化コールバック](../../../docs/framework/wcf/feature-details/version-tolerant-serialization-callbacks.md) \ No newline at end of file diff --git a/docs/framework/wcf/best-practices-intermediaries.md b/docs/framework/wcf/best-practices-intermediaries.md new file mode 100644 index 00000000000..a1c16eb24c9 --- /dev/null +++ b/docs/framework/wcf/best-practices-intermediaries.md @@ -0,0 +1,45 @@ +--- +title: "ベスト プラクティス: 中継局 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2d41b337-8132-4ac2-bea2-6e9ae2f00f8d +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# ベスト プラクティス: 中継局 +サービス側のチャネルが正常閉じられていることを確認するために中継局を呼び出すときには、例外処理が正しく行われることに注意が必要です。 + + 次のようなシナリオがあるとします。クライアントは、バックエンド サービスを呼び出す中継局を呼び出します。バックエンド サービスは、エラー コントラクトを定義しません。したがって、そのサービスからスローされたエラーは型指定されていないエラーとして扱われます。バックエンド サービスは をスローし、WCF サービス側のチャネルを中止します。 は、中継局へスローされる として表示されます。中継局は を再スローします。WCF はこれを中継局からの型指定されていないエラーとして解釈し、クライアントに転送します。エラーを受け取ると、中継局とクライアントは、クライアント側のチャネルをエラーにします。ただし、WCF はそのエラーが致命的であると認知しないため、中間サービス側のチャネルは開いたままとなります。 + + このシナリオのベスト プラクティスは、サービスからのエラーを致命的であるかどうかを検出し、エラーである場合は、次のコード スニペットに示すように、中継局がそのサービス側のチャネルをエラーとします。 + +```csharp +catch (Exception e) +{ + bool faulted = service.State == CommunicationState.Faulted; + service.Abort(); + if (faulted) + { + throw new ApplicationException(e.Message); + } + Else + { + throw; + } +} + +``` + +## 参照 + [WCF エラー処理](../../../docs/framework/wcf/wcf-error-handling.md) + [コントラクトおよびサービスのエラーの指定と処理](../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/bindings-overview.md b/docs/framework/wcf/bindings-overview.md new file mode 100644 index 00000000000..dd673d10b99 --- /dev/null +++ b/docs/framework/wcf/bindings-overview.md @@ -0,0 +1,66 @@ +--- +title: "Windows Communication Foundation のバインディングの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "バインディング [WCF], 概要" +ms.assetid: cfb5842f-e0f9-4c56-a015-f2b33f258232 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# Windows Communication Foundation のバインディングの概要 +バインディングとは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスのエンドポイントへの接続に必要な通信の詳細設定を指定する際に使用するオブジェクトのことです。 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスの各エンドポイントでは、バインディングを適切に指定する必要があります。 ここでは、バインディングによって定義される通信の詳細設定、バインディングの要素、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] に用意されているバインディング、およびエンドポイントにバインディングを指定する方法について説明します。 + +## バインディングの定義内容 + バインディングの情報は非常に基本的にも複雑にもなりえます。 最も基本的なバインディングはトランスポート プロトコル \(HTTP など\) のみを指定したもので、これはエンドポイントへの接続に必ず使用します。 一般的に、バインディングに含まれるエンドポイントへの接続方法を示す情報は、次のカテゴリのいずれかに当てはまります。 + + プロトコル + 使用されているセキュリティ機構 \(信頼性の高いメッセージング機能またはトランザクション コンテキストのフロー設定のいずれか\) を決定します。 + + エンコーディング + メッセージ エンコーディング \(テキストまたはバイナリなど\) を決定します。 + + Transport + 使用する基本のトランスポート プロトコル \(TCP や HTTP など\) を決定します。 + +## バインディングの要素 + バインディングは、基本的に、バインド要素の順序付きスタックで構成されます。各バインド要素では、サービス エンドポイントに接続するために必要な通信情報の一部を指定します。 スタックの 2 つの最も低い層は両方とも必須です。 スタックの一番下にトランスポート バインド要素があり、そのすぐ上にメッセージ エンコーディング仕様を含んだ要素があります。 その他の通信プロトコルを指定するオプションのバインド要素は、この 2 つの必須要素の上に配置されます。 これらのバインド要素とその正確な順序[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[カスタム バインディング](../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください。 + +## システム標準のバインディング + バインディングの情報は複雑になる可能性があり、一部の設定は他の設定と互換性がない場合もあります。 このため、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] には、システム指定のバインディングが用意されています。 このバインディングは、アプリケーション要件のほとんどに対応するように設計されています。 システム指定のバインディングの例のいくつかを次のクラスで示します。 + +- : WS\-I Basic Profile 仕様に準拠する Web サービス \(ASP.NET Web サービス ベースのサービスなど\) への接続に適した HTTP プロトコル バインディング。 + +- : WS\-\* プロトコルに準拠するエンドポイントへの接続に適した相互運用可能なバインディング。 + +- : 同じコンピューター上の他の [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] エンドポイントへの接続に [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] を使用するバインディング。 + +- : キューに置かれたメッセージと他の [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] エンドポイントとの接続を作成するために [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] を使用するバインディング。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 指定のバインディングの完全な一覧と説明については、「[システム標準のバインディング](../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。 + +## 独自のバインディングの使用 + システム指定のバインディングに、サービス アプリケーションに必要な正しい組み合わせの機能がない場合、独自のバインディングを作成できます。 これには、2 つの方法があります。 オブジェクトを使用して既存のバインド要素から新しいバインディングを作成するか、 バインディングから派生することによって完全にユーザー定義のバインディングを作成することができます。 これら 2 つの方法で独自のバインディングを作成する手順[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[カスタム バインディング](../../../docs/framework/wcf/extending/custom-bindings.md)」および「[ユーザー定義バインディングの作成](../../../docs/framework/wcf/extending/creating-user-defined-bindings.md)」を参照してください。 + +## バインディングの使用 + バインディングを使用する際には、次の 2 つの基本手順があります。 + +1. バインディングを選択、または定義します。 最も簡単な方法は、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] に用意されているシステム指定のバインディングを 1 つ選択し、それを既定の設定で使用することです。 また、システム指定のバインディングを選択し、そのプロパティを要件に適した値に再設定することもできます。 別の方法として、カスタム バインディングまたはユーザー定義バインディングを作成し、より高度な制御とカスタマイズを実現することができます。 + +2. 選択または定義されたバインディングを使用するエンドポイントを作成します。 + +## コードおよび構成 + バインディングを定義するには、コードによる方法と構成による方法の 2 とおりがあります。 この 2 つの方法は、システム指定またはカスタムのどちらのバインディングを使用している場合でも有効です。 一般的には、コードを使用すると、開発者がデザイン時にバインディングの定義を完全に制御することになります。 一方、構成を使用する場合は、システム管理者や、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスまたはクライアントのユーザーが、サービス アプリケーションをコンパイルし直すことなくバインディングのパラメーターを変更できます。 通常は、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションの展開先の具体的なコンピューター要件を予測する方法がないため、柔軟性のあるこの方法が望まれます。 バインディング情報とアドレス情報をコードに含めないでおくと、これらの情報を変更したときにアプリケーションを再度コンパイルしたり、展開したりする必要がなくなります。 コードで定義したバインディングは、構成で指定したバインディングの後に作成されます。そのため、構成で定義したバインディングはコードで定義したバインディングによって上書きされることに注意してください。 + +## 参照 + [サービスとクライアントを構成するためのバインディングの使用](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/bindings.md b/docs/framework/wcf/bindings.md new file mode 100644 index 00000000000..a80eac120a5 --- /dev/null +++ b/docs/framework/wcf/bindings.md @@ -0,0 +1,46 @@ +--- +title: "Windows Communication Foundation バインディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "バインディング [WCF]" +ms.assetid: 845df323-be53-4848-92ef-ba67a406484d +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# Windows Communication Foundation バインディング +バインディングは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービス エンドポイントが他のエンドポイントと通信する方法を指定します。バインディングでは、まず、使用するトランスポート \(HTTP や TCP など\) を指定する必要があります。セキュリティやトランザクションのサポートなど、その他の特性もバインディングによって設定できます。 + +## このセクションの内容 + [WCF のバインディングの概要](../../../docs/framework/wcf/bindings-overview.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のバインディングの機能、システム指定のバインディング、およびバインディングを定義または変更する方法の概要を説明します。 + + [システム標準のバインディング](../../../docs/framework/wcf/system-provided-bindings.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] に用意されているバインディングの一覧を示します。これらのバインディングは、ほとんどのセキュリティ要件およびメッセージ パターン要件を満たします。 + + [サービスとクライアントを構成するためのバインディングの使用](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] バインディングには、サービス エンドポイントに接続するためにクライアントが使用しなければならない重要な情報が含まれます。 + + [サービスのバインディングの構成](../../../docs/framework/wcf/configuring-bindings-for-wcf-services.md) + 管理者やインストール担当者は、構成を使用してサービス エンドポイントのバインディングをカスタマイズできます。 + +## 関連項目 + + +## 関連項目 + [エンドポイント : アドレス、バインディング、およびコントラクト](../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md) + + [バインディング](../../../docs/framework/wcf/feature-details/bindings.md) + +## 参照 + [カスタム バインディング](../../../docs/framework/wcf/extending/custom-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/building-clients.md b/docs/framework/wcf/building-clients.md new file mode 100644 index 00000000000..d8ce2d88741 --- /dev/null +++ b/docs/framework/wcf/building-clients.md @@ -0,0 +1,56 @@ +--- +title: "クライアントを構築する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "クライアント [WCF]" + - "クライアント [WCF], 構築" +ms.assetid: 28dfff47-d95b-4cc2-9d5c-b3b9ba71fd50 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# クライアントを構築する +このセクションのトピックでは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] クライアントの作成方法と使用方法について説明します。 + +## このセクションの内容 + [WCF クライアントの概要](../../../docs/framework/wcf/wcf-client-overview.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントとその動作の概要について説明します。 + + [WCF クライアントを使用したサービスへのアクセス](../../../docs/framework/wcf/accessing-services-using-a-wcf-client.md) + クライアント アプリケーションで使用する [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント オブジェクトを作成するための基本的な方法の概要について説明します。 + + [クライアントのセキュリティ保護](../../../docs/framework/wcf/securing-clients.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントのセキュリティを構成する方法について説明します。 + +## 関連項目 + + + + + + + + + + + + + + +## 関連項目 + [ホスティング サービス](../../../docs/framework/wcf/hosting-services.md) + + [サービスの設計と実装](../../../docs/framework/wcf/designing-and-implementing-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/com-service-model-configuration-tool-comsvcconfig-exe.md b/docs/framework/wcf/com-service-model-configuration-tool-comsvcconfig-exe.md new file mode 100644 index 00000000000..589af017035 --- /dev/null +++ b/docs/framework/wcf/com-service-model-configuration-tool-comsvcconfig-exe.md @@ -0,0 +1,109 @@ +--- +title: "COM+ サービス モデル構成ツール (ComSvcConfig.exe) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "WCF, COM+ 統合" + - "Windows Communication Foundation, COM+ 統合" +ms.assetid: 7717c6c2-85fc-418b-a8ed-bad8e61cec5c +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# COM+ サービス モデル構成ツール (ComSvcConfig.exe) +COM\+ サービス モデル構成コマンド ライン ツール \(ComSvcConfig.exe\) を使用すると、COM\+ インターフェイスを Web サービスとして公開するように構成できます。 + +## 構文 + +``` + +ComSvcConfig.exe /install | /uninstall | /list [/application:] [/contract:] [/hosting:] [/webSite:] [/webDirectory:] [/mex] [/id] [/nologo] [/verbose] [/help] [/partial] +``` + +## 解説 + +> [!NOTE] +> ComSvcConfig.exe を使用するには、ローカル コンピューターの管理者である必要があります。 + + ツールは次の場所にあります。 + + %SystemRoot%\\Microsoft.Net\\Framework\\v3.0\\Windows Communication Foundation\\ + + ComSvcConfig.exe の詳細については、「[方法 : COM\+ サービス モデル構成ツールを使用する](../../../docs/framework/wcf/feature-details/how-to-use-the-com-service-model-configuration-tool.md)」を参照してください。 + + 次の表は、ComSvcConfig.exe で使用できるモードを示します。 + +|オプション|説明| +|-----------|--------| +|`install`|サービス モデル統合に COM\+ インターフェイスの構成をインストールします。

短縮形 : `/i`。| +|`uninstall`|サービス モデル統合から COM\+ インターフェイスの構成をアンインストールします。

短縮形 : `/u`。| +|`list`|サービス モデル統合に構成されるインターフェイスを持つ COM\+ アプリケーションとコンポーネントの情報を一覧表示します。

短縮形 : `/l`。| + + 次の表は、ComSvcConfig.exe で使用できるフラグを示します。 + +|オプション|説明| +|-----------|--------| +|`/application:<` *ApplicationID* `|` *ApplicationName* `>`|構成する COM\+ アプリケーションを指定します。

短縮形 : `/a`。| +|`/contract:<` *ClassID* `|` *ProgID* `| *,` *InterfaceID* `|` *InterfaceName* `| *` `>`|サービスのコントラクトとして構成される COM\+ コンポーネントとインターフェイスを指定します。

短縮形 : `/c`。

コンポーネント名とインターフェイス名を指定する場合はワイルドカード文字 \(\*\) を使用できますが、望まないインターフェイスも公開されることがあるため、ワイルドカード文字を使用しないことをお勧めします。| +|`/hosting:<` *complus* `|` *was* `>`|COM\+ ホスト モードと Web ホスト モードのどちらを使用するかを指定します。

短縮形 : `/h`。

COM\+ ホスト モードを使用するには、COM \+ アプリケーションの明示的なアクティブ化が必要です。Web ホスト モードを使用すると、COM\+ アプリケーションを必要なときに自動的にアクティブ化できます。COM\+ アプリケーションがライブラリ アプリケーションの場合は、インターネット インフォメーション サービス \(IIS\) のプロセスで実行します。COM\+ アプリケーションがサーバー アプリケーションの場合は、Dllhost.exe のプロセスで実行します。| +|`/webSite:<` *WebsiteName* `>`|Web ホスト モードを使用する場合は、ホストする Web サイトを指定します \(`/hosting` フラグを参照\)。

短縮形 : `/w`。

Web サイトを指定しない場合は、既定の Web サイトが使用されます。| +|`/webDirectory:<` *WebDirectoryName* `>`|Web ホストを使用する場合は、ホストする仮想ディレクトリを指定します \(`/hosting` フラグを参照\)。

短縮形 : `/d`。| +|`/mex`|サービスからコントラクト定義を取得するクライアントをサポートするには、既定のサービス構成に Metadata Exchange \(MEX\) サービス エンドポイントを追加します。

短縮形 : `/x`。| +|`/id`|アプリケーション、コンポーネント、およびインターフェイス情報を ID として表示します。

短縮形 : `/k`。| +|`/nologo`|ComSvcConfig.exe がロゴを表示しないようにします。

短縮形 : `/n`。| +|`/verbose`|発生するエラーに加えて、すべての警告または情報テキストを出力します。

短縮形 : `/v`。| +|`/help`|使用方法を示すメッセージを表示します。

短縮形 : `/?`。| +|`/partial`|指定されたインターフェイスが、公開できる 1 つ以上のメソッド署名を含む場合にサービス構成を生成します。サービスの初期化時に、互換性のあるメソッドはサービス コントラクトで操作として表示され、互換性のないメソッドはサービス コントラクトから除外されます。

このフラグが指定されていない場合は、指定されたインターフェイスが互換性のないメソッドを 1 つ以上含むとツールはサービス構成を生成しません。| + +## 例 + +### 説明 + 次の例は、COM\+ ホスト モードを使用する Web サービスとして公開されるインターフェイスのセットに \(OnlineStore COM\+ アプリケーションの\) `ItemOrders.IFinancial` コンポーネントの `IFinances` インターフェイスを追加します。発生するエラーに加えて、すべての警告が出力されます。 + +### コード + +``` +ComSvcConfig.exe /install /application:OnlineStore /contract:ItemOrders.Financial,IFinances /hosting:complus /verbose +``` + +### 説明 + 次の例は、Web ホスト モードを使用する Web サービスとして公開されるインターフェイスのセットに \(OnlineWarehouse COM\+ アプリケーションの\) `ItemInventory.Warehouse` コンポーネントの `IStockLevels` インターフェイスを追加します。Web サービスは、IIS の OnlineWarehouse 仮想ディレクトリで Web ホストされます。 + +### コード + +``` +ComSvcConfig.exe /install /application:OnlineWarehouse /contract:ItemInventory.Warehouse,IStockLevels /hosting:was /webDirectory:root/OnlineWarehouse +``` + +### 説明 + 次の例は、Web サービスとして公開されるインターフェイスのセットから \(OnlineStore COM\+ アプリケーションの\) `ItemOrders.Financial` コンポーネントの `IFinances` インターフェイスを削除します。 + +### コード + +``` +ComSvcConfig.exe /uninstall /application:OnlineStore /interface:ItemOrders.Financial,IFinances /hosting:complus +``` + +### 説明 + 次の例は、ローカル マシン上の OnlineStore COM\+ アプリケーションの現在公開されている COM\+ ホスト インターフェイスを、対応するアドレスやバインディングの詳細と共に一覧表示します。 + +### コード + +``` +ComSvcConfig.exe /list /application:OnlineStore /hosting:complus +``` + +## 参照 + [方法 : COM\+ サービス モデル構成ツールを使用する](../../../docs/framework/wcf/feature-details/how-to-use-the-com-service-model-configuration-tool.md) \ No newline at end of file diff --git a/docs/framework/wcf/conceptual-overview.md b/docs/framework/wcf/conceptual-overview.md new file mode 100644 index 00000000000..aeebb09848a --- /dev/null +++ b/docs/framework/wcf/conceptual-overview.md @@ -0,0 +1,52 @@ +--- +title: "概念 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "WCF [WCF], 概念" + - "Windows Communication Foundation [WCF], 概念" +ms.assetid: 503fae4b-014c-44df-a9c7-c76ec4ed4229 +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# 概念 +ここでは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] メッセージング システムおよびその使用をサポートしているクラスの概要について説明します。 + +## このセクションの内容 + [Windows Communication Foundation とは](../../../docs/framework/wcf/whats-wcf.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の概要です。 + + [Windows Communication Foundation の基本概念](../../../docs/framework/wcf/fundamental-concepts.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] プログラミング モデルの主要概念についての概要です。 + + [Windows Communication Foundation のアーキテクチャ](../../../docs/framework/wcf/architecture.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アーキテクチャを図で説明します。 + +## 関連項目 + + +## 関連項目 + [基本的な WCF プログラミング](../../../docs/framework/wcf/basic-wcf-programming.md) + + [ガイドラインとベスト プラクティス](../../../docs/framework/wcf/guidelines-and-best-practices.md) + + [Windows Communication Foundation サンプル](../../../docs/framework/wcf/samples/index.md) + + [ツール](../../../docs/framework/wcf/diagnostics/exceptions-reference/tools.md) + + [システム要件](../../../docs/framework/wcf/wcf-system-requirements.md) + + [一般的なリファレンス](../../../docs/framework/wcf/general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md b/docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md new file mode 100644 index 00000000000..9ffb418c53a --- /dev/null +++ b/docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md @@ -0,0 +1,406 @@ +--- +title: "構成エディター ツール (SvcConfigEditor.exe) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "構成ファイル" + - "構成ファイル スキーマ" + - "構成ファイル" + - "構成ファイル, 作成" +ms.assetid: 2db21a57-5f64-426f-89df-fb0dc2d2def5 +caps.latest.revision: 45 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 45 +--- +# 構成エディター ツール (SvcConfigEditor.exe) +管理者と開発者は、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービス構成エディター \(SvcConfigEditor.exe\) のグラフィカル ユーザー インターフェイスを使用して、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスの構成設定を作成および変更できます。このツールを使用すると、XML 構成ファイルを直接編集せずに、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のバインディング、動作、サービス、および診断の設定を管理できます。 + + サービス構成エディターは、C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\Bin フォルダーにあります。 + +## WCF 構成エディター + サービス構成エディターには、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のサービスやクライアントを構成する手順をすべてガイドするウィザードが付属しています。エディターで直接編集する代わりにウィザードを使用することを強くお勧めします。 + + 標準の System.Configuration スキーマに準拠する構成ファイルが既にいくつかある場合は、ユーザー インターフェイスを使用してバインディング、動作、サービス、および診断の固有の設定を管理できます。サービス構成エディターを使用すると、既存の [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 構成ファイルの設定だけでなく、実行可能ファイル、COM\+ サービス、および Web ホスト サービスの設定を管理できます。サービス構成エディターで Web ホスト サービスを開くと、上位レベル ノードのサービス固有の構成セクションおよび継承された構成セクションの両方が表示されます。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 構成設定は、構成ファイルの `` セクションにあるため、エディターはこの要素の内容だけを操作し、同じファイル内の他の要素にはアクセスしません。既存の構成ファイルに直接移動したり、サービス、仮想ディレクトリ、または COM\+ サービスを含むアセンブリを選択することができます。エディターがその特定のサービスの構成ファイルを読み込むと、ユーザーは新しい要素を追加したり、構成ファイルの `` セクションで入れ子になっている既存の要素を編集することができます。 + + エディターは、IntelliSense をサポートし、スキーマ準拠を強制します。結果として得られる出力は、構成ファイルのスキーマに準拠し、構文的に正しいデータ値を持つことが保証されます。ただし、エディターは構成ファイルのセマンティクスが有効であることは保証しません。つまり、エディターは構成ファイルが関連するサービスで有効に機能することは保証しません。 + +> [!CAUTION] +> 要素を変更すると、エディターは構成ファイルからその構成要素を削除できません。たとえば、エディターを使用してエンドポイント名を空でない文字列に設定して保存すると、構成ファイルは次の内容になります。 +> +> `` +> +> そのエンドポイント名を削除するために名前を空の文字列に設定して保存しようとしても、構成ファイルには、`name` 属性が残ります。 +> +> `` +> +> 属性を削除するには、別のテキスト エディターを使用して要素を手動で編集する必要があります。 +> +> 特に、`clientCredential` エンドポイント動作の `issueToken` 要素を使用する場合は、この問題に注意する必要があります。具体的には、`localIssuer` サブ要素の `address` 属性を空の文字列にしないようにします。構成エディターを使用して既に `address` 属性を変更している場合にその属性を完全に削除したい場合は、構成エディター以外のツールを使用して削除する必要があります。そうでない場合、属性は空の文字列を含むことになるため、アプリケーションは例外をスローします。 + +## 構成エディターの使用 + サービス構成エディターは、次の Windows SDK のインストール場所にあります。 + + C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\Bin\\SvcConfigEditor.exe + + サービス構成エディターを起動したら、**\[ファイル\]** メニューの **\[開く\]** を使用して、管理するサービスまたはアセンブリを参照できます。構成ファイルを直接開き、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] \/COM\+ サービスを参照し、Web ホスト サービスの構成設定を開くことができます。 + + サービス構成エディターのユーザー インターフェイスは、次の領域に分割されています。 + +- ツリー ビュー ペイン: 左側に構成要素をツリー構造で表示します。ノードを右クリックと、ツリーで操作を実行できます。 + +- タスク ペイン: ウィンドウの左下に現在の要素の一般的なタスクを表示します。 + +- 詳細ペイン: ツリー ビューで選択された構成ノードの詳細設定を右側に表示します。 + +### 構成ファイルを開く + +1. サービス構成エディターを起動するには、コマンド ウィンドウで [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のインストール場所に移動し、「`SvcConfigEditor.exe`」と入力します。 + +2. **\[ファイル\]** メニューの **\[開く\]** を選択し、管理するファイルの種類をクリックします。 + +3. **\[開く\]** ダイアログ ボックスで、管理する特定のファイルに移動し、ダブルクリックします。 + + ビューアーは、構成のマージ パスを自動的にたどり、マージされた構成のビューを生成します。たとえば、ホストなしのサービスの実際の構成は、Machine.config と App.config の組み合わせです。変更があれば、SvcConfigEditor のアクティブ ファイルに適用されます。構成マージ パスの特定ファイルを編集する場合は、直接開く必要があります。 + +> [!NOTE] +> 構成ファイルが構成エディター以外で変更されている場合、構成エディターは、現在開いている構成ファイルを再読み込みします。再読み込みが発生すると、エディター内で永続的に保存されていないすべての変更が失われます。再読み込みが連続して発生する場合は、構成ファイルに定期的にアクセスするサービス \(バックグラウンドで実行するウイルス対策ソフトウェアなど\) が原因と考えられます。この問題を解決するには、ファイルが開いているときに、構成エディターがそのファイルにアクセスできる唯一のプロセスであることを保証する必要があります。 + +### サービス + **\[サービス\]** ノードは、構成ファイルで現在割り当てられているすべてのサービスを表示します。ツリー内の各サブノードは、構成ファイル内の \<`services`\> 要素のサブ要素に対応します。 + + **\[サービス\]** ノードをクリックして、**詳細**ペインのサービスの概要ページでタスクを表示または実行できます。 + +#### 新しいサービス構成の作成 + 新しいサービス構成は次の方法で作成できます。 + +- ウィザードの使用: ウィザードを起動するには、タスク ペインまたは概要ページの **\[新しいサービスの作成\]** リンクをクリックします。**\[ファイル\]** メニューの **\[新しい項目の追加\]** を選択することでも起動できます。 + +- 手動による作成 : **\[サービス\]** ノードを右クリックし、**\[新しいサービス\]** を選択します。 + +#### 新しいサービス エンドポイント構成の作成 + 新しいサービス エンドポイント構成は次の方法で作成できます。 + +- ウィザードによる作成: ウィザードを起動するには、タスク ペインまたは概要ページの **\[新しいサービス エンドポイントの作成\]** リンクをクリックします。**\[ファイル\]** メニューの **\[新しい項目の追加\]** を選択することでも起動できます。 + +- 手動による作成 : サービスを作成したら、**\[エンドポイント\]** ノードを右クリックし、**\[新しいサービス エンドポイント\]** を選択します。 + +#### サービス構成の編集 + +1. **\[サービス\]** ノードをクリックします。 + +2. プロパティ グリッドで設定を編集します。 + +#### サービス エンドポイント構成の編集 + +1. **\[サービス エンドポイント\]** ノードをクリックします。 + +2. プロパティ グリッドで設定を編集します。 + +#### ベース アドレスの追加 + +1. **\[ホスト\]** ノードをクリックします。 + +2. **\[ベース アドレス\]** セクションの **\[新規作成\]** ボタンをクリックします。 + +3. ダイアログ ボックスにベース アドレスの URI を入力します。 + +4. **\[OK\]** をクリックします。 + +> [!NOTE] +> このツール内では、[\](../../../docs/framework/configure-apps/file-schema/wcf/baseaddressprefixfilters.md) の値を編集できません。この要素を追加または変更するには、テキスト エディターまたは [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] を使用する必要があります。 + +### クライアント + **\[クライアント\]** ノードは、構成ファイルのすべてのクライアント エンドポイントを表示します。ツリー内のすべてのサブノードは、構成ファイル内の \<`client`\> 要素のサブ要素に対応します。 + + **\[クライアント\]** ノードをクリックして、**\[詳細ペイン\]** のクライアントの**概要ページ**でタスクを表示または実行できます。 + +#### 新しいクライアント エンドポイント構成の作成 + 新しいクライアント エンドポイント構成は次の方法で作成できます。 + +- ウィザードによる作成: ウィザードを起動するには、ウィンドウの左下のタスク ペインまたは概要ページの **\[新しいクライアントの作成\]** リンクをクリックします。**\[ファイル\]** メニューの **\[新しい項目の追加\]** をクリックして起動することもできます。クライアント構成を生成するサービス構成の場所の指定を求めるプロンプトが表示されます。接続するサービス エンドポイントを選択できるようになります。 + +- 手動による作成: クライアントの下のエンドポイント ノードを右クリックし、**\[新しいクライアント エンドポイント\]** をクリックします。 + +#### クライアント エンドポイント構成の編集 + +1. クライアント エンドポイント ノードをクリックします。 + +2. プロパティ グリッドで設定を編集します。 + +### 標準エンドポイント + 標準エンドポイントは、既定値に設定されたアドレス、コントラクト、およびバインディングの 1 つ以上の特性を持つ特殊なエンドポイントです。 + + これらの構成設定は、**\[標準エンドポイント\]** ノードに格納されます。**\[標準エンドポイント\]** ノードは、構成ファイルのすべての標準エンドポイント設定を表示します。ツリー内のすべてのサブノードは、構成ファイル内の `` 要素のサブ要素に対応します。 + + **\[標準エンドポイント\]** ノードをクリックして、**詳細ペイン**の標準エンドポイントの概要ページで、タスクを表示または実行できます。 + +#### 新しい標準エンドポイント構成の作成 + 新しい標準エンドポイント構成は、次の方法で作成できます。 + +- **\[標準エンドポイント\]** ノードを右クリックし、**\[新しい標準エンドポイント構成\]** を選択します。ダイアログ ボックスでバインディングの種類を選択し、**\[OK\]** をクリックします。 + +- **\[標準エンドポイント\]** ノードを選択し、ウィンドウの左下にあるタスク ペインの **\[新しい標準エンドポイント構成\]** をクリックします。 + + **\[新しい標準エンドポイントの作成\]** ダイアログ ボックスが表示され、登録されているすべての標準エンドポイントの種類が一覧表示されます。 + +#### 標準エンドポイント構成の表示および編集 + 表示および編集する標準エンドポイント構成は、次の方法で開くことができます。 + +- **\[標準エンドポイント\]** ノードをクリックして展開し、それぞれのエンドポイント サブノードをクリックします。 + +- **\[標準エンドポイント\]** ノードをクリックし、詳細ペインでそれぞれのエンドポイントをクリックします。 + + エンドポイントの属性を右ペインに表示して、編集できます。 + +#### 標準エンドポイント構成の削除 + 標準エンドポイント構成は次の方法で削除できます。 + +- **\[標準エンドポイント\]** ノードをクリックして展開し、それぞれのエンドポイント サブノードを右クリックします。コンテキスト コマンド **\[標準エンドポイント構成の削除\]** を使用して、エンドポイントを削除します。 + +- **\[標準エンドポイント\]** ノードをクリックします。**タスク** ペインで、**\[標準エンドポイント構成の削除\]** をクリックします。 + + 標準エンドポイントが使用中の場合は、削除しようとしたときに警告メッセージが表示されます。警告は**「標準エンドポイントは使用されています。削除する場合は、構成の他の部分 \(サービス エンドポイントやクライアント エンドポイントなど\) からもすべての参照を必ず削除してください。そうしないと、構成が無効になり、次回から開けなくなります。標準エンドポイントを削除しますか?」**です。 + +### バインディング + バインディング構成は、エンドポイントでバインディングを構成するために使用されます。これらの構成設定は、**\[バインド\]** ノードに格納されます。エンドポイントはバインディング構成を名前で参照し、複数のエンドポイントは単一のバインディング構成を参照できます。 + + **\[バインド\]** ノードは、構成ファイルのすべてのバインディング設定を表示します。ツリー内のすべてのサブノードは、構成ファイル内の \<`bindings`\> 要素のサブ要素に対応します。 + + **\[バインド\]** ノードをクリックして、**\[詳細ペイン\]** のバインディングの**概要ページ**でタスクを表示または実行できます。 + +#### 新しいバインディング構成の作成 + 新しいバインディング構成は次の方法で作成できます。 + +- **\[バインド\]** ノードを右クリックし、**\[新しいバインド構成\]** を選択します。ダイアログ ボックスでバインディングの種類を選択し、**\[OK\]** をクリックします。 + +- **\[バインド\]** ノードを選択し、ウィンドウの左下のタスク ペインで **\[新しいバインド構成\]** をクリックします。 + +- サービスまたはクライアントの概要ページで、**\[バインドの構成\]** フィールドの **\[クリックして作成\]** をクリックすると、対応するエンドポイントのバインディング構成が作成されます。 + +#### カスタム バインディングへのバインディング要素拡張の追加 + +1. 拡張要素を追加するバインディングを選択します。 + +2. **\[追加\]** をクリックします。 + +3. 使用できる拡張一覧から、追加するバインディング要素拡張を選択します。複数の項目を選択するには、Ctrl キーを同時に押します。 + +4. **\[追加\]** をクリックします。 + +#### カスタム バインディングの拡張位置の調整 + カスタム バインディングは、スタックを形成するバインディング要素のコレクションです。スタックの各バインディング要素には、独自の構成設定があります。カスタム バインディング内のバインディング要素拡張の順序は、スタック内のそれらの位置を示します。スタックの最上位の要素が最初に適用されます。順序を変更するには + +1. カスタム バインディング ノードを選択します。 + +2. **\[バインド要素の拡張の位置\]** セクションでバインディング拡張要素の 1 つを選択します。 + +3. 一覧の左側にある **\[Up\]** ボタンまたは **\[Down\]** ボタンを使用して、選択した要素の位置を変更します。 + +#### カスタム バインディングのバインディング要素拡張の構成の編集 + +1. ツリー内のバインディング ノードを選択します。 + +2. 編集する要素を含むカスタム バインディングを選択します。 + +3. 編集するバインディング要素拡張を選択します。要素の設定が、編集場所である右ペインに表示されます。 + +### 診断 + **\[診断\]** ノードは、構成ファイルのすべての診断設定を表示します。診断を使用すると、パフォーマンス カウンターのオンまたはオフ、Windows Management Instrumentation \(WMI\) の有効または無効、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] トレースの構成、および [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] メッセージ ログの構成を行うことができます。**\[診断\]** ノードの設定は、\<`system.diagnostics`\> セクションと構成ファイルの ```` の セクションに対応します。 + + **\[診断\]** ノードをクリックして、**\[詳細ペイン\]** の診断の**概要ページ**でタスクを表示または実行できます。 + +#### パフォーマンス カウンターと WMI の構成 + +1. 診断ノードをクリックします。 + +2. **\[パフォーマンス カウンターの切り替え\]** をクリックします。パフォーマンス カウンターには、Off \(既定\)、ServiceOnly、All の 3 つの状態があります。リンクをクリックすると、これらの 3 つの状態の間で設定が切り替わります。 + +#### WMI プロバイダーの構成 + +1. 診断ノードをクリックします。 + +2. WMI プロバイダーを有効にするには、**\[WMI プロバイダーの有効化\]** リンクをクリックします。 + +#### WCF トレースの有効化 + 標準プロパティを持つ [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] トレース ファイルを作成したり、カスタム トレース ファイルを設定したりできます。 + +1. 診断ノードをクリックします。 + +2. **\[トレースの有効化\]** をクリックします。 + +3. トレース レベルを調整するには、**\[トレース レベル\]** リンクをクリックします。トレース レベルは、Off、Critical、Error、Warning、Information、Verbose の 6 つあります。**\[アクティビティのトレース\]** と **\[アクティビティの伝達\]** オプションを使用すると、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アクティビティ トレース機能を使用できます。 + +4. トレース ファイルとオプションを指定するには、トレース リスナー名をクリックします。 + +#### WCF ログの有効化 + 標準プロパティを持つ [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] トレース ファイルの作成またはカスタム トレース ファイルを作成できます。 + +1. 診断ノードをクリックします。 + +2. **\[メッセージ ログの有効化\]** をクリックします。 + +3. ログ レベルを調整するには、**\[ログ レベル\]** リンクをクリックします。ログ レベルには、無効な形式、サービス、トランスポートの 3 つがあります。 + +4. ログ ファイルとオプションを指定するには、リスナー名をクリックします。 + +> [!NOTE] +> アプリケーションを閉じるときにトレース ログとメッセージ ログを自動的にフラッシュする場合は、**\[ログの自動フラッシュ\]** オプションを有効にします。 + + **\[診断\]** の**概要ページ**を使用すると、診断の構成で最も一般的なタスクを実行できます。ただし、リスナーとソースの設定を手動で編集する場合は、診断ノードを展開して、メッセージ ログ、リスナー、およびソースの各ノードの設定を編集する必要があります。 + +#### WCF カスタム トレースまたはメッセージ ログの有効化 + +1. 診断ノードをクリックして展開します。 + +2. リスナー ノードを右クリックし、**\[新しいリスナー\]** を選択します。 + +3. **\[InitData\]** フィールドにトレース ファイル名を入力します。\[...\] ボタンをクリックすると、パスを参照できます。 + +4. **\[TypeName\]** ラインをクリックすると、\[…\] ボタンが表示されます。このボタンをクリックすると、**\[トレース リスナー型ブラウザー\]** が開きます。これを使用すると、既にインストールされている事前構成のトレース リスナーを見つけることができます。 + +5. **\[ソース\]** セクションに注意してください。このセクションで **\[追加\]** をクリックすると、ダイアログ ボックスが開き、使用できるトレース ソースの一覧がドロップダウン メニューに表示されます。トレース ソースを選択して、**\[OK\]** をクリックします。 + +6. メッセージ ログ設定を編集するには、メッセージ ログ ノードをクリックします。プロパティ グリッドで設定を編集できます。 + +### 詳細設定 + +#### 動作 + **\[動作\]** ノードは、現在構成ファイルに定義されている動作を表示します。 + + 動作構成は、エンドポイントとサービスの動作を構成するために使用されます。これらの構成設定は、**\[サービス動作\]** と **\[エンドポイント動作\]** の下にある **\[詳細設定\]** ノードに格納されます。サービス動作はサービスによって使用され、エンドポイント動作はエンドポイントによって使用されます。 + + 動作は、スタックを形成する拡張要素のコレクションです。スタック最上位の要素が最初に適用されます。各拡張要素は独自の構成を持つことができます。 + +##### 新しい動作構成の作成 + 新しい動作構成は次の 2 つの方法で作成できます。 + +- 動作ノードの 1 つを右クリックし、**\[新しいエンドポイント動作の構成\]** または **\[新しいサービス動作の構成\]** を選択します。 + +- 動作ノードの 1 つを選択し、ウィンドウの左下のタスク ペインの **\[新しいサービス動作の構成\]** または \[新しいエンドポイント動作の構成\] をクリックします。 + +##### 動作への動作要素拡張の追加 + +1. 動作ノードのいずれかを選択します。 + +2. 編集する動作を選択します。 + +3. **\[追加\]** をクリックします。 + +4. 使用できる拡張一覧から、追加する動作要素拡張を選択します。 + +5. **\[追加\]** をクリックします。 + +##### 動作の拡張位置の調整 + 動作は、スタックを形成する要素のコレクションです。スタックの各要素には、独自の構成があります。動作内の動作要素拡張の順序は、スタック内のそれらの位置を示します。スタックの最上位の要素が最初に適用されます。順序を変更するには + +1. 動作ノードのいずれかを選択します。 + +2. 編集する動作を選択します。 + +3. **\[動的要素の拡張の位置\]** セクションで動作拡張要素を選択します。 + +4. 一覧の左側にある **\[Up\]** ボタンまたは **\[Down\]** ボタンを使用して、選択した要素の位置を変更します。 + +##### 動作要素拡張の構成の編集 + +1. ツリー内の動作ノードの 1 つを選択します。 + +2. 編集する要素を含む動作を選択します。 + +3. 編集する動作要素拡張を選択します。要素の設定が右ペインに表示されるので、ここで編集できます。 + +#### ProtocolMapping + このセクションでは、プロトコル アドレス スキームと可能なバインドの間に定義されているマッピングを介して、http、tcp、MSMQ、net.pipe などのさまざまなプロトコルに対する既定のバインドの種類を設定できます。他のプロトコルへの新しいマッピングを追加することもできます。 + +#### 拡張 + 新しいバインディング拡張、バインディング要素拡張、標準エンドポイント拡張、および動作拡張を登録して、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 構成に使用できます。拡張は、名前と種類のペアです。名前は構成の拡張の名前を定義し、種類は拡張を実装します。拡張には次の 4 種類があります。 + +- バインディング拡張は、バインディングの種類全体を定義します。例 : `basicHttpBinding`。 + +- バインディング要素拡張は、バインディングの要素を定義します。例: `textMessageEncoding`。 + +- 標準エンドポイント拡張は、標準エンドポイント全体を定義します。例: `discoveryEndpoint`。 + +- 動作要素拡張は、動作の要素を定義します。例 : `clientVia`。 + + 構成に登録されている拡張は、同じ種類の他のすべての [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] コンポーネントと同じように使用できます。 + +##### 新しい機能の追加 + 詳細設定ノード内の拡張ノードの 1 つを選択します。 + +1. **\[新規作成\]** をクリックします。 + +2. 名前と種類を入力します。 + +3. **\[OK\]** をクリックします。 + +4. 拡張は、エディターの適切な場所に表示されるようになります。たとえば、動作要素拡張を追加すると、使用できる拡張一覧に表示されます。 + +#### ホスト環境 + ここでは、環境をホストするサービスのインスタンス化設定を定義できます。 + +### ウィザードによる構成ファイルの作成 + 新しい構成ファイルを作成する 1 つの方法として、新しいサービス要素ウィザードを使用します。ウィザードは、インストールされたサービスの種類および [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] と互換性のある、COM\+、Web ホストの仮想ディレクトリなどの他の要素をコンピューター上で見つけると、それらを読み込んで、構成の作成を効率よく行います。 + +#### 構成ファイルの作成 + +1. サービス構成エディターを起動するには、コマンド ウィンドウで [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のインストール場所に移動し、「`SvcConfigEditor.exe`」と入力します。 + +2. **\[ファイル\]** メニューの **\[開く\]** を選択し、作成する構成ファイルの種類に応じて **\[実行可能\]**、**\[COM\+ サービス\]**、または **\[Web ホスト サービス\]** をクリックします。 + +3. **\[開く\]** ダイアログ ボックスで、構成ファイルを作成する特定のファイルに移動し、ダブルクリックします。 + +4. **\[ファイル\]** メニューの **\[新しい項目の追加\]** をポイントし、**\[サービス\]** をクリックします。新しいサービス要素ウィザードが開きます。 + +5. ウィザードの手順に従って新しいサービスを作成します。 + +> [!NOTE] +> ウィザードによって生成される構成ファイルから NetPeerTcpBinding を使用する場合は、手動でバインディング構成要素を追加し、その `security` 要素の `mode` 属性を "None" に変更する必要があります。 + +## COM\+ の構成 + サービス構成エディターによって、既存の COM\+ アプリケーションに新しい構成ファイルを作成したり、既存の COM\+ 構成を編集することができます。構成ファイルに \<`comContract`\> セクションが存在する場合は、**\[COM コントラクト\]** ノードだけが表示されます。 + +### 新しい COM\+ 構成の作成 + 新しい COM\+ 構成を作成する前に、COM\+ アプリケーションがコンポーネント サービスにインストールされて、グローバル アセンブリ キャッシュ \(GAC\) に登録されていることを確認します。 + +1. **\[ファイル\]** メニューの **\[統合\]** をポイントし、**\[COM\+ アプリケーション\]** を選択します。この操作は、現在開いているファイルを閉じます。現在のファイルに保存されていないデータがあれば、\[保存\] ダイアログ ボックスが表示されます。**COM\+ 統合ウィザード**が起動されます。 + +2. 最初のページで、ツリーから COM\+ アプリケーションを選択します。ツリーで COM\+ アプリケーションが見つからない場合は、COM\+ アプリケーションがコンポーネント サービスにインストールされて、グローバル アセンブリ キャッシュ \(GAC\) に登録されていることを確認します。 + +3. 次のページで、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスとして公開するメソッドを選択します。既定では、COM\+ アプリケーションでサポートされるすべてのメソッドが表示され、選択されます。 + +4. ホスト メソッドを選択します。 + +5. ウィザードの手順に従って他の設定を構成します。 + +6. サービス構成エディターは、バックグラウンドで ComSvcConfig.exe を利用して、構成ファイルを生成します。これが完了すると、概要を表示してウィザードを終了できます。構成を直接編集できるように、生成された構成ファイルが開きます。 + +### 既存の COM\+ 構成の編集 + +1. **\[ファイル\]** メニューの **\[開く\]** をポイントし、**\[COM\+ サービス\]** を選択します。 + +2. 編集する COM\+ サービスを一覧から選択します。 + +3. **\[COM コントラクト\]** ノードで構成設定を編集します。 + + > [!NOTE] + > COM コントラクトを含む構成ファイルを直接開いて編集することもできます。 + +## セキュリティ + 構成エディターによって生成されるサービス構成ファイルは、セキュリティによる保護が保証されていません。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスをセキュリティで保護する方法については、「[セキュリティ](../../../docs/framework/wcf/feature-details/security.md)」を参照してください。 + + また、構成エディターを使用して読み書きできるのは、有効な [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 構成要素だけです。ツールは、スキーマに準拠するユーザー定義の要素を無視します。また、これらの要素を構成ファイルから削除したり、既知の [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 要素に対する影響を究明することはありません。これらの要素がアプリケーションやシステムに脅威を与えるかどうかを究明するのはユーザーの責任です。 \ No newline at end of file diff --git a/docs/framework/wcf/configuring-bindings-for-wcf-services.md b/docs/framework/wcf/configuring-bindings-for-wcf-services.md new file mode 100644 index 00000000000..5509f2c1afb --- /dev/null +++ b/docs/framework/wcf/configuring-bindings-for-wcf-services.md @@ -0,0 +1,182 @@ +--- +title: "Windows Communication Foundation サービスのバインディングの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "バインディング構成 [WCF]" +ms.assetid: 99a85fd8-f7eb-4a84-a93e-7721b37d415c +caps.latest.revision: 36 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 36 +--- +# Windows Communication Foundation サービスのバインディングの構成 +アプリケーションの作成では、アプリケーションの配置後は各種決定事項を管理者に任せる場合がよくあります。たとえば、どのサービス アドレス \(URI \(Uniform Resource Identifier\)\) を使用するかなどの情報は、多くの場合、前もって知る方法がありません。アドレスをハードコーディングする代わりに、サービスの作成後に管理者が指定する方が便利です。構成を活用することで、この柔軟性が得られます。 + +> [!NOTE] +> 構成ファイルをすばやく作成するには、`/config` スイッチを指定して [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用します。 + +## 主要なセクション + [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] 構成スキームは、3 つの主要なセクション \(`serviceModel`、`bindings`、および `services`\) で構成されます。 + +``` + + + + + + + + + + +``` + +### ServiceModel 要素 + `system.ServiceModel` 要素によって囲まれたこのセクションを使用して、1 つ以上のエンドポイントを持つサービス型、およびサービスの設定を構成できます。各エンドポイントでは、アドレス、コントラクト、およびバインディングをそれぞれ 1 つずつ構成できます。エンドポイント[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[エンドポイントの作成の概要](../../../docs/framework/wcf/endpoint-creation-overview.md)」を参照してください。エンドポイントを指定しない場合、ランタイムは、既定のエンドポイントを追加します。既定のエンドポイント、バインディング、および動作[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[簡略化された構成](../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + + バインディングはトランスポート \(HTTP、TCP、パイプ、およびメッセージ キュー\) とプロトコル \(セキュリティ、信頼性、およびトランザクション フロー\) を指定し、バインディング要素で構成されます。各バインディング要素は、エンドポイントの通信方法のさまざまな側面を指定します。 + + たとえば、[\](../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md) 要素を指定すると、エンドポイントのトランスポートとして HTTP が使用されます。このエンドポイントを使用するサービスが開かれる実行時に、エンドポイントとの接続に HTTP が使用されます。 + + バインディングには、定義済みバインディングとカスタム バインディングの 2 種類があります。定義済みバインディングには、一般的なシナリオで使用される要素の組み合わせが含まれています。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] で提供される定義済みバインディングの種類の一覧については、「[システム標準のバインディング](../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。定義済みバインディング コレクションに、サービス アプリケーションに必要な正しい機能の組み合わせがないときは、カスタム バインディングを作成して、そのアプリケーションの要件を満たすことができます。カスタム バインディング[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[\](../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)」を参照してください。 + + 次の 4 つの例は、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスの設定に使用される最も一般的なバインディング構成を示しています。 + +#### バインディングの種類を使用するエンドポイントの指定 + 最初の例は、アドレス、コントラクト、およびバインディングをそれぞれ 1 つずつ使用して構成されたエンドポイントを指定する方法を示しています。 + +``` + + + + + +``` + + この例では、`name` 属性は、構成がどのサービス型に対するものであるかを示します。`HelloWorld` コントラクトを使用してコードでサービスを作成すると、そのサービスは、この例の構成に定義されているすべてのエンドポイントと共に初期化されます。アセンブリにサービス コントラクトが 1 つしか実装されない場合、サービスは使用可能なタイプだけを使用するため、`name` 属性を省略できます。この属性が受け取る文字列は、`Namespace.Class, AssemblyName, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null` の形式で指定される必要があります。 + + `address` 属性では、他のエンドポイントがこのサービスと通信するために使用する URI を指定します。この URI は、絶対パスでも相対パスでもかまいません。相対アドレスを指定すると、ホストは、そのバインディングで使用されるトランスポート スキームに適したベース アドレスを提供します。アドレスが構成されていない場合、ベース アドレスはそのエンドポイントのアドレスと見なされます。 + + `contract` 属性では、このエンドポイントが公開するコントラクトを指定します。サービス実装の型は、コントラクト型を実装する必要があります。サービス実装が単一のコントラクト型を実装する場合は、このプロパティを省略できます。 + + `binding` 属性では、この特定のエンドポイントに使用される定義済みバインディングまたはカスタム バインディングを選択します。バインディングが明示的に選択されていないエンドポイントでは、既定のバインディング選択 \(`BasicHttpBinding`\) を使用します。 + +#### 定義済みバインディングの変更 + 次の例では、定義済みバインディングを変更します。これにより、サービスの任意のエンドポイントを構成するために使用できるようになります。バインディングの変更では、 値を 1 秒に設定します。このプロパティは、 オブジェクトを返します。 + + 変更されたバインディングは、バインディング セクションにあります。この変更したバインディングは、`endpoint` 要素の `binding` 属性を設定することにより、任意のエンドポイントを作成するときに使用できます。 + +> [!NOTE] +> バインディングに特定の名前を付ける場合、サービス エンドポイントで指定した `bindingConfiguration` と同じ名前にする必要があります。 + +``` + + + + + + + +``` + +## サービスに適用する動作の構成 + 次の例では、サービス型に対して、特定の動作を構成します。サービスに照会し、メタデータから Web サービス記述言語 \(WSDL: Web Services Description Language\) のドキュメントを生成するには、`ServiceMetadataBehavior` 要素を使用して [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を有効にします。 + +> [!NOTE] +> 動作に特定の名前を付ける場合、サービスまたはエンドポイント セクションで指定した `behaviorConfiguration` と同じ名前にする必要があります。 + +``` + + + + + + + + + + +``` + + 前の構成では、クライアントが "HelloWorld" の型指定されたサービスを呼び出してメタデータを取得できます。 + + `svcutil /config:Client.exe.config http://computer:8080/Hello?wsdl` + +## 異なるバインディング値を使用する 2 つのエンドポイントを持つサービスの指定 + この最後の例では、`HelloWorld` サービス型に 2 つのエンドポイントを構成します。各エンドポイントでは、同じバインディングの種類を使用しますが、カスタマイズした異なる `bindingConfiguration` 属性を使用します \(それぞれで `basicHttpBinding` を変更\)。 + +``` + + + + + + + + + +``` + + 次の例に示すように、`protocolMapping` セクションを追加してバインディングを構成することによって、既定の構成を使用する同じ動作を取得できます。 + +```xml + + + + + + + + + +``` + +## 参照 + [簡略化された構成](../../../docs/framework/wcf/simplified-configuration.md) + [システム標準のバインディング](../../../docs/framework/wcf/system-provided-bindings.md) + [エンドポイントの作成の概要](../../../docs/framework/wcf/endpoint-creation-overview.md) + [サービスとクライアントを構成するためのバインディングの使用](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/configuring-client-behaviors.md b/docs/framework/wcf/configuring-client-behaviors.md new file mode 100644 index 00000000000..82b97970cbf --- /dev/null +++ b/docs/framework/wcf/configuring-client-behaviors.md @@ -0,0 +1,59 @@ +--- +title: "クライアントの動作の構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: df5b32fa-e73b-4e8e-b66f-357c748e0173 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# クライアントの動作の構成 +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] は 2 とおりの方法で動作を構成します。1 つは動作の構成を参照する方法で、これはクライアント アプリケーションの構成ファイルの `` セクションで定義されます。もう 1 つは、呼び出し元アプリケーションでプログラムによって動作を構成する方法です。 このトピックでは、両方の方法について説明します。 + + 構成ファイルを使用する場合、動作の構成には、構成設定の名前付きコレクションがあります。 各動作の構成には、一意の名前を指定する必要があります。 この文字列をエンドポイントの構成の `behaviorConfiguration` 属性で使用し、エンドポイントと動作を関連付けます。 + +## 例 + `myBehavior` という動作を定義する構成コードを次に示します。 クライアント エンドポイントは、この動作を `behaviorConfiguration` 属性で参照します。 + +``` + + + + + + + + + + + + + + + + + + + +``` + +## プログラムによる動作の使用 + クライアントを開く前に、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] クライアント オブジェクトまたはクライアント チャネル ファクトリ オブジェクト上の適切な `Behaviors` プロパティを見つけることで、動作をプログラムによって構成または挿入することもできます。 + +## 例 + 次のコード例は、チャネル オブジェクトの作成前に、 プロパティから返される 上の プロパティにアクセスすることで、プログラムでクライアント動作が挿入される方法を示します。 + + [!code-csharp[ChannelFactoryBehaviors#10](../../../samples/snippets/csharp/VS_Snippets_CFX/channelfactorybehaviors/cs/client.cs#10)] + [!code-vb[ChannelFactoryBehaviors#10](../../../samples/snippets/visualbasic/VS_Snippets_CFX/channelfactorybehaviors/vb/client.vb#10)] + +## 参照 + [\](../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) \ No newline at end of file diff --git a/docs/framework/wcf/configuring-services-using-configuration-files.md b/docs/framework/wcf/configuring-services-using-configuration-files.md new file mode 100644 index 00000000000..6fa68d6e03a --- /dev/null +++ b/docs/framework/wcf/configuring-services-using-configuration-files.md @@ -0,0 +1,283 @@ +--- +title: "構成ファイルを使用してサービスを構成する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "サービスの構成 [WCF]" +ms.assetid: c9c8cd32-2c9d-4541-ad0d-16dff6bd2a00 +caps.latest.revision: 29 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# 構成ファイルを使用してサービスを構成する方法 +構成ファイルを使用して [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスを構成すると、デザイン時ではなく配置時にエンドポイントとサービス動作のデータを指定できるという柔軟性が生まれます。 ここでは使用可能な主要な技術について説明します。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスは、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] の構成技術を使用して構成できます。 通常、XML 要素は、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスをホストするインターネット インフォメーション サービス \(IIS\) サイトの Web.config ファイルに追加されます。 この要素によって、コンピューターごとにエンドポイント アドレス \(サービスと通信するために使用する実際のアドレス\) などの詳細情報を変更できます。 また、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] には、システム指定の要素がいくつか用意されており、これらの要素によって、サービスの最も基本的な機能を簡単に選択できます。[!INCLUDE[netfx40_long](../../../includes/netfx40-long-md.md)] 以降では、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] には、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 構成要件を簡略化する新しい既定の構成モデルが付属しています。 特定のサービスに対し [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 構成を指定しないと、ランタイムは自動的にいくつかの標準エンドポイントおよびバインディング\/動作でサービスを構成します。 実際、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションのプログラミングにおいては、構成ファイルの記述が作業の大きな部分を占めます。 + + [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [サービスのバインディングの構成](../../../docs/framework/wcf/configuring-bindings-for-wcf-services.md)。 最もよく使用される要素の[!INCLUDE[crlist](../../../includes/crlist-md.md)]については、「[システム標準のバインディング](../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。 既定のエンドポイント、バインディング、および動作の[!INCLUDE[crabout](../../../includes/crabout-md.md)]については、「[簡略化された構成](../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +> [!IMPORTANT] +> 2 つの異なるバージョンのサービスが配置される side\-by\-side のシナリオを配置する場合、構成ファイルで参照されるアセンブリの部分名を指定する必要があります。 これは構成ファイルがすべてのバージョンのサービスで共有されて、異なるバージョンの .NET Framework で実行される可能性があるためです。 + +## System.Configuration: Web.config と App.config + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] の System.Configuration 構成システムを使用します。 + + [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でサービスを構成するとき、Web.config ファイルまたは App.config ファイルのいずれかを使用して、設定を指定します。 選択する構成ファイル名は、サービスに選択したホスト環境によって異なります。 サービスのホストに IIS を使用している場合は、Web.config ファイルを使用します。 他のホスト環境を使用している場合、App.config ファイルを使用します。 + + [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] では、App.config という名前のファイルを使用して、最終の構成ファイルを作成します。 構成で実際に使用される最終的な名前は、アセンブリ名によって異なります。 たとえば、アセンブリ名が "Cohowinery.exe" の場合、最終の構成ファイルの名前は "Cohowinery.exe.config" になります。 ただし、変更する必要があるのは App.config ファイルだけです。 このファイルで行った変更は、コンパイル時に自動的に最終のアプリケーション構成ファイルに反映されます。 + + App.config ファイルを使用しているとき、アプリケーションが開始され、構成が適用されると、構成システムは App.config ファイルを Machine.config ファイルの内容とマージします。 このしくみによって、Machine.config ファイルにはコンピューター全体の設定を定義できます。 App.config ファイルは、Machine.config ファイルの設定をオーバーライドするために使用できます。また、Machine.config ファイルにある設定をロックしてこの設定が使用されるようにすることもできます。 Web.config の場合、構成システムは、アプリケーション ディレクトリまでのすべてのディレクトリにある Web.config ファイルを、適用される構成にマージします。 構成と設定の優先順位[!INCLUDE[crabout](../../../includes/crabout-md.md)]、 名前空間のトピックを参照してください。 + +## 構成ファイルの主要セクション + 構成ファイルの主要セクションには、次の要素があります。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +> [!NOTE] +> バインディングと動作のセクションは省略可能であり、必要な場合のみ追加されます。 + +### \ 要素 + `services` 要素には、アプリケーションによってホストされるすべてのサービスの仕様が入ります。[!INCLUDE[netfx40_short](../../../includes/netfx40-short-md.md)] の簡略化された構成モデル以降の場合、このセクションは省略可能です。 + + [\](../../../docs/framework/configure-apps/file-schema/wcf/services.md) + +### \ 要素 + 各サービスには次の属性があります。 + +- `name`。 \- サービス コントラクトの実装を提供する型を指定します。 これは、名前空間、期間、および型名を構成する完全修飾名です。 たとえば、`"MyNameSpace.myServiceType"` などです。 + +- `behaviorConfiguration`。 \- `behavior` 要素に存在するいずれかの `behaviors` 要素の名前を指定します。 指定された動作は、サービスが偽装を許可するかどうかなどのアクションを制御します。 その値が空の名前であるか、または `behaviorConfiguration` が指定されていない場合、サービスの動作の既定のセットがサービスに追加されます。 + +- [\](../../../docs/framework/configure-apps/file-schema/wcf/service.md) + +### \ 要素 + 各エンドポイントには、次の属性で表されるアドレス、バインディング、およびコントラクトが必要です。 + +- `address`。 サービスの URI \(Uniform Resource Identifier\) を指定します。絶対アドレスまたはサービスのベース アドレスからの相対アドレスを指定できます。 空の文字列を設定した場合、サービスの を作成するときに指定したベース アドレスでエンドポイントを使用できることを示します。 + +- `binding`。 \- 通常、 などのシステム指定のバインディングを指定しますが、ユーザー定義バインディングを指定することも可能です。 指定するバインディングによって、トランスポートの種類、使用するセキュリティとエンコーディング、および信頼できるセッション、トランザクション、またはストリーミングがサポートされるかどうか、または有効かどうかが決まります。 + +- `bindingConfiguration`。 バインディングの既定値を変更する必要がある場合、`binding` 要素の該当する `bindings` 要素を構成することによって変更できます。 この属性には、既定値の変更に使用される `name` 要素の`binding` 属性と同じ値を指定する必要があります。 名前を指定しない場合、またはバインディングに `bindingConfiguration` を指定しない場合、バインディングの種類の既定のバインディングは、エンドポイントで使用されます。 + +- `contract`。 コントラクトを定義するインターフェイスを指定します。 これは `name` 要素の `service` 属性で指定された共通言語ランタイム \(CLR\) 型で実装されたインターフェイスです。 + +- [\ element reference](http://msdn.microsoft.com/ja-jp/13aa23b7-2f08-4add-8dbf-a99f8127c017) + +### \ 要素 + `bindings` 要素には、任意のサービスで定義される任意のエンドポイントによって使用できるすべてのバインディングに関する仕様が入ります。 + + [\](../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) + +### \ 要素 + `bindings` 要素に含まれる `binding` 要素には、システム指定のバインディング \(「[システム標準のバインディング](../../../docs/framework/wcf/system-provided-bindings.md)」を参照\) またはカスタム バインディング \(「[カスタム バインディング](../../../docs/framework/wcf/extending/custom-bindings.md)」を参照\) のどちらかを指定できます。`binding` 要素には、バインディングを `name` 要素の `bindingConfiguration` 属性で指定されたエンドポイントと関連付ける `endpoint` 属性があります。 名前を指定しない場合、バインディングは、バインディングの既定の種類に対応します。 + + サービスとクライアントの構成の[!INCLUDE[crabout](../../../includes/crabout-md.md)]については、「[Configuring Windows Communication Foundation Applications](http://msdn.microsoft.com/ja-jp/13cb368e-88d4-4c61-8eed-2af0361c6d7a)」を参照してください。 + + [\](../../../docs/framework/misc/binding.md) + +### \ 要素 + これは、サービスの動作を定義する `behavior` 要素のコンテナー要素です。 + + [\](../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) + +### \ 要素 + 各 `behavior` 要素は、`name` 属性によって識別され、\<`throttling`\> などのシステム指定の動作またはカスタム動作のいずれかを定義します。 名前を指定しない場合、動作要素は、既定のサービスまたはエンドポイント動作に対応します。 + + [\](../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md) + +## バインディングと動作の構成を使用する方法 + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、構成で参照システムを使用することによって、エンドポイント間で構成を簡単に共有できます。 構成値を直接エンドポイントに割り当てるのではなく、バインディング関連の構成値を `bindingConfiguration` セクションの `` 要素にグループ化します。 バインディング構成とは、バインディングの設定の名前付きグループです。 エンドポイントは、名前によって `bindingConfiguration` を参照できます。 + +``` + + + + + + + + + + + + + + + + + + + +``` + + `name` の `bindingConfiguration` は、`` 要素で設定します。`name` には、バインディングの種類 \(この場合は [\](../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)\) のスコープ内で一意の文字列、または既定のバインディングを参照する空の値を指定する必要があります。 エンドポイントは、`bindingConfiguration` 属性をこの文字列に設定することによって構成にリンクします。 + + `behaviorConfiguration` は、次のサンプルに示すように、同じ方法で実装されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + +``` + + サービスの動作の既定のセットは、サービスに追加されることに注意してください。 このシステムでは、設定を再定義することなく、エンドポイント間で共通の構成を共有できます。 コンピューター全体のスコープが必要な場合は、バインディングまたは動作の構成を Machine.config に作成します。 構成設定は、すべての App.config ファイルで操作できます。[構成エディター ツール \(SvcConfigEditor.exe\)](../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md) を使用すると、構成を簡単に作成できます。 + +## 動作のマージ + 動作のマージ機能を使用すると、共通動作のセットを常に使用する場合に動作の管理が容易になります。 この機能では、さまざまなレベルの構成階層で動作を指定し、サービスが複数レベルの構成階層から動作を継承することができます。 このしくみを説明するため、IIS に次の仮想ディレクトリ レイアウトが存在するとします。 + + ~\\Web.config~\\Service.svc~\\Child\\Web.config~\\Child\\Service.svc + + また ~\\Web.config ファイルに次の内容が含まれているとします。 + +```xml + + + + + + + + + + + + +``` + + さらに ~\\Child\\Web.config にある子 Web.config に次の内容が含まれているとします。 + +```xml + + + + + + + + + + + + +``` + + ~\\Child\\Service.svc にあるサービスは、serviceDebug 動作と serviceMetadata 動作の両方を持つ場合と同様に動作します。 ~\\Service.svc にあるサービスは、serviceDebug 動作のみを持ちます。 これによって、同じ名前の 2 つの動作コレクション \(この例では空の文字列\) がマージされます。 + + また、\ タグを使用して動作コレクションを消去したり、\ タグを使用してコレクションから個々の動作を削除することができます。 たとえば、次の 2 つの構成は serviceMetadata 動作のみを持つ子サービスになります。 + +```xml + + + + + + + + + + + + + +``` + +```xml + + + + + + + + + + + + + +``` + + 動作のマージは、上に示した名前なし動作コレクションだけでなく、名前付き動作コレクションにも適用できます。 + + 動作のマージは、IIS ホスト環境で機能し、Web.config ファイルがルートの Web.config ファイルおよび machine.config と階層的にマージされます。 ただし、動作のマージはアプリケーション環境でも機能し、machine.config を App.config ファイルとマージできます。 + + 動作のマージは、構成内のエンドポイント動作とサービス動作の両方に適用されます。 + + 親動作コレクションに既に存在する動作が子動作コレクションにも含まれている場合、子動作が親をオーバーライドします。 たとえば、親動作コレクションに `` があり、子動作コレクションに `` がある場合、動作コレクションで子動作が親動作をオーバーライドし、httpGetEnabled が "true" になります。 + +## 参照 + [簡略化された構成](../../../docs/framework/wcf/simplified-configuration.md) + [Configuring Windows Communication Foundation Applications](http://msdn.microsoft.com/ja-jp/13cb368e-88d4-4c61-8eed-2af0361c6d7a) + [\](../../../docs/framework/configure-apps/file-schema/wcf/service.md) + [\](../../../docs/framework/misc/binding.md) \ No newline at end of file diff --git a/docs/framework/wcf/configuring-services.md b/docs/framework/wcf/configuring-services.md new file mode 100644 index 00000000000..48df1b9a58f --- /dev/null +++ b/docs/framework/wcf/configuring-services.md @@ -0,0 +1,68 @@ +--- +title: "サービスの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "構成 [WCF]" +ms.assetid: beac771e-f28e-4f84-9ff1-ad9251c726d3 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# サービスの構成 +サービス コントラクトの設計、実装が終われば、サービスを構成できる状態になります。 クライアント側から見たサービスの動作は、ここで定義、カスタマイズします。サービスと通信するためのアドレス、メッセージの送受信に使うトランスポートやエンコーディング、必要なセキュリティ型などを指定できます。 + + 定義やカスタマイズは、コード内で強制的に \(簡単には変更できないような形で\) 行う方法と、構成ファイルに記述して行う方法があります。エンドポイントのアドレス、実際に使うトランスポート、セキュリティ スキーマなど、サービスに関するさまざまな事項を定義、カスタマイズできます。 実際、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションのプログラミングにおいては、構成ファイルの記述が作業の大きな部分を占めます。 + +## このセクションの内容 + [簡略化された構成](../../../docs/framework/wcf/simplified-configuration.md) + [!INCLUDE[netfx40_long](../../../includes/netfx40-long-md.md)] 以降では、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] には、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 構成要件を簡略化する新しい既定の構成モデルが付属しています。 特定のサービスに対し [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 構成を指定しないと、ランタイムは自動的に既定のエンドポイント、バインディング、および動作でサービスを構成します。 + + [構成ファイルを使用してサービスを構成する方法](../../../docs/framework/wcf/configuring-services-using-configuration-files.md) + [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスは、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] の構成技術を使用して構成できます。 通常、XML 要素は、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスをホストするインターネット インフォメーション サービス \(IIS\) サイトの Web.config ファイルに追加されます。 この要素によって、コンピューターごとにエンドポイント アドレス \(サービスと通信するために使用する実際のアドレス\) などの詳細情報を変更できます。 + + [バインディング](../../../docs/framework/wcf/bindings.md) + さらに [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] には、一般的な構成がシステム提供のバインディングとして用意されています。これを使用すると、クライアントとサービスの通信方法に関する基本事項 \(トランスポート、セキュリティ、メッセージのエンコーディングなど\) を容易に選択できます。 + + [エンドポイント](../../../docs/framework/wcf/endpoints.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスを使用して行われるすべての通信では、サービスの*エンドポイント*が使用されます。 エンドポイントには、コントラクト、バインディングで指定されている構成情報、およびサービスの検索場所やサービスに関する情報の取得場所を示すアドレスが設定されています。 + + [サービスのセキュリティ保護](../../../docs/framework/wcf/securing-services.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] および既存のセキュリティ機構を使用することにより、機密性、整合性、認証、および承認をサービスに実装できます。 また、セキュリティに関する成功および失敗を監査することも可能です。 + + [WS\-I Basic Profile 1.1 の相互運用可能サービスの作成](../../../docs/framework/wcf/creating-ws-i-basic-profile-1-1-interoperable-services.md) + 他のプラットフォームやオペレーティング システム上で動作するサービスやクライアントと、相互に運用できるような形でサービスを配置するために必要な事項は、WS\-I Basic Profile 1.1 の仕様に記載されています。 + +## 関連項目 + + + + + + +## 関連項目 + [基本的なプログラミング ライフサイクル](../../../docs/framework/wcf/basic-programming-lifecycle.md) + + [サービスの設計と実装](../../../docs/framework/wcf/designing-and-implementing-services.md) + + [ホスティング サービス](../../../docs/framework/wcf/hosting-services.md) + + [クライアントを構築する](../../../docs/framework/wcf/building-clients.md) + + [拡張機能の概要](../../../docs/framework/wcf/introduction-to-extensibility.md) + + [管理と診断](../../../docs/framework/wcf/diagnostics/index.md) + +## 参照 + [基本的な WCF プログラミング](../../../docs/framework/wcf/basic-wcf-programming.md) + [概念](../../../docs/framework/wcf/conceptual-overview.md) + [WCF 機能の詳細](../../../docs/framework/wcf/feature-details/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/configuring-wcf-services-in-code.md b/docs/framework/wcf/configuring-wcf-services-in-code.md new file mode 100644 index 00000000000..18b4ebce3c0 --- /dev/null +++ b/docs/framework/wcf/configuring-wcf-services-in-code.md @@ -0,0 +1,116 @@ +--- +title: "コード内での WCF サービスの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 193c725d-134f-4d31-a8f8-4e575233bff6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# コード内での WCF サービスの構成 +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] では、開発者が構成ファイルまたはコードを使用してサービスを構成できます。構成ファイルは、配置した後にサービスを構成する必要がある場合に役立ちます。構成ファイルを使用する場合、IT 専門家は構成ファイルを更新するだけでよく、再コンパイルは必要ありません。ただし、構成ファイルが複雑化し、保守が難しくなる場合があります。構成ファイルのデバッグはサポートしていません。また、構成要素は名前で参照されるため、構成ファイルの作成時にエラーが発生しやすくなるほか、構成ファイルの作成が困難になります。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、コードでサービスを構成することもできます。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の以前のバージョン \(4.0 およびそれ以前\) では、自己ホストのシナリオであればコード内でのサービスの構成が簡単で、 クラスにより、ServiceHost.Open を呼び出す前にエンドポイントと動作を構成できました。ただし、Web ホストのシナリオでは、 クラスへの直接のアクセス権がありません。Web ホスト サービスを構成するには、 を作成し、必要な構成を実行する を作成する必要がありました。.NET 4.5 以降では、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] によって、自己ホスト サービスと Web ホスト サービスのどちらもコードで簡単に構成できます。 + +## Configure メソッド + サービス実装クラスで、次のシグネチャを持つ `Configure` という名前のパブリックな静的メソッドを定義します。 + +```csharp +public static void Configure(ServiceConfiguration config) +``` + + Configure メソッドは、開発者がエンドポイントおよび動作を追加できるようにする インスタンスを受け取ります。このメソッドは、サービス ホストが開かれる前に、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] によって呼び出されます。app.config ファイルまたは web.config ファイルで指定されたすべてのサービスの構成設定は、定義されている場合、無視されます。 + + 次のコード スニペットは、`Configure` メソッドを定義し、サービス エンドポイント、エンドポイントの動作、およびサービスの動作を追加する方法を示しています。 + +```csharp +public class Service1 : IService1 + { + public static void Configure(ServiceConfiguration config) + { + ServiceEndpoint se = new ServiceEndpoint(new ContractDescription("IService1"), new BasicHttpBinding(), new EndpointAddress("basic")); + se.Behaviors.Add(new MyEndpointBehavior()); + config.AddServiceEndpoint(se); + + config.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true }); + config.Description.Behaviors.Add(new ServiceDebugBehavior { IncludeExceptionDetailInFaults = true }); + } + + public string GetData(int value) + { + return string.Format("You entered: {0}", value); + } + + public CompositeType GetDataUsingDataContract(CompositeType composite) + { + if (composite == null) + { + throw new ArgumentNullException("composite"); + } + if (composite.BoolValue) + { + composite.StringValue += "Suffix"; + } + return composite; + } + } +``` + + サービスで https などのプロトコルを有効にするには、プロトコルを使用するエンドポイントを明示的に追加するか、ServiceConfiguration.EnableProtocol\(Binding\) を呼び出すことによって自動的にエンドポイントを追加させることができます。このメソッドは、プロトコルおよび定義された各サービス コントラクトと互換性がある各ベース アドレスのエンドポイントを追加します。次のコードは、ServiceConfiguration.EnableProtocol メソッドを使用する方法を示しています。 + +```csharp +public class Service1 : IService1 +{ + public string GetData(int value); + public static void Configure(ServiceConfiguration config) + { + // Enable “Add Service Reference” support + config.Description.Behaviors.Add( new ServiceMetadataBehavior { HttpGetEnabled = true }); + // set up support for http, https, net.tcp, net.pipe + config.EnableProtocol(new BasicHttpBinding()); + config.EnableProtocol(new BasicHttpBinding()); + config.EnableProtocol(new NetTcpBinding()); + config.EnableProtocol(new NetNamedPipeBinding()); + // add an extra BasicHttpBinding endpoint at http:///basic + config.AddServiceEndpoint(typeof(IService1), new BasicHttpBinding(),"basic"); + } +} +``` + + \<`protocolMappings`\> セクションの設定は、アプリケーション エンドポイントがプログラムによって に追加されなかった場合にだけ使用されます。また、 を呼び出すことによって既定のアプリケーション構成ファイルからサービス構成を読み込み、設定を変更することもできます。 クラスを使って、集中化された構成から構成を読み込むこともできます。次のコードは、その実装方法を示しています。 + +``` +public class Service1 : IService1 +{ + public void DoWork(); + public static void Configure(ServiceConfiguration config) + { + config.LoadFromConfiguration(ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = @"c:\sharedConfig\MyConfig.config" }, ConfigurationUserLevel.None)); + } +} + +``` + +> [!IMPORTANT] +> は、\<`system.serviceModel`\> の \<`service`\> タグ内の \<`host`\> 設定を無視することに注意してください。概念的には、\<`host`\> はサービス構成でなくホスト構成についてのものであり、Configure メソッドを実行する前に読み込まれます。 + +## 参照 + [構成ファイルを使用してサービスを構成する方法](../../../docs/framework/wcf/configuring-services-using-configuration-files.md) + [クライアントの動作の構成](../../../docs/framework/wcf/configuring-client-behaviors.md) + [簡略化された構成](../../../docs/framework/wcf/simplified-configuration.md) + [構成ベースのアクティブ化](../../../docs/framework/wcf/samples/configuration-based-activation.md) + [構成](../../../docs/framework/wcf/samples/configuration-sample.md) + [IIS と WAS における構成ベースのアクティブ化](../../../docs/framework/wcf/feature-details/configuration-based-activation-in-iis-and-was.md) + [構成とメタデータのサポート](../../../docs/framework/wcf/extending/configuration-and-metadata-support.md) + [構成](../../../docs/framework/wcf/diagnostics/exceptions-reference/configuration.md) + [方法 : 構成でサービス バインディングを指定する](../../../docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md) + [方法 : 構成にサービス エンドポイントを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md) + [方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md) + [方法 : 構成でクライアント バインディングを指定する](../../../docs/framework/wcf/how-to-specify-a-client-binding-in-configuration.md) \ No newline at end of file diff --git a/docs/framework/wcf/contract-first-tool.md b/docs/framework/wcf/contract-first-tool.md new file mode 100644 index 00000000000..2b2fb3b87d1 --- /dev/null +++ b/docs/framework/wcf/contract-first-tool.md @@ -0,0 +1,357 @@ +--- +title: "コントラクト優先ツール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0a880690-f460-4475-a5f4-9f91ce08fcc6 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# コントラクト優先ツール +サービス コントラクトは、多くの場合、既存のサービスから作成する必要があります。[!INCLUDE[net_v45](../../../includes/net-v45-md.md)] では、コントラクト優先ツールを使用して、データ コントラクト クラスを既存のサービスから自動的に作成できます。コントラクト優先ツールを使用するには、XML スキーマ定義ファイル \(XSD\) をローカルにダウンロードする必要があります。ツールは、HTTP 経由でリモート データ コントラクトをインポートすることはできません。 + + コントラクト優先ツールは、ビルド タスクとして、[!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] に統合されています。ビルド タスクによって生成されるコード ファイルは、基になるサービス コントラクトの変更をプロジェクトが簡単に取り込めるように、プロジェクトがビルドされるたびに作成されます。 + + コントラクト優先ツールがインポートできるスキーマ型には、次のようなものがあります。 + +``` + + +``` + + 単純型は、`Int16` または `String` のようなプリミティブである場合は生成されません。複合型は、`Collection` 型である場合は生成されません。他の `xsd:complexType` の一部である型も、生成されません。これらのすべての場合に、型はプロジェクト内の既存の型を参照するようになります。 + +## プロジェクトへのデータ コントラクトの追加 + コントラクト優先ツールを使用する前に、サービス コントラクト \(XSD\) をプロジェクトに追加する必要があります。この概要説明では、コントラクト優先機能を示すために、次のコントラクトを使用します。このサービス定義は、Bing の検索 API で使用されているサービス コントラクトのごく一部です。 + +```xml + + + + + + + + + + + + + + + + + + + + + + +``` + + 上のサービス コントラクトをプロジェクトに追加するには、プロジェクトを右クリックし、**\[新規追加\]** をクリックします。\[テンプレート\] ダイアログ ボックスの \[WCF\] ペインで \[スキーマ定義\] を選択し、新しいファイルの名前を SampleContract.xsd にします。上のコードをコピーし、新しいファイルのコード ビューに貼り付けます。 + +## コントラクト優先のオプションの構成 + コントラクト優先のオプションは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] プロジェクトの \[プロパティ\] メニューで構成できます。コントラクト優先を開発できるようにするには、プロジェクト プロパティ ウィンドウの WCF ページで **\[XSD を型定義言語として有効にする\]** チェック ボックスをオンにします。 + + ![コントラクト優先を示す WCF プロジェクト オプション](../../../docs/framework/wcf/media/contractfirstoptions.png "ContractFirstOptions") + + 高度なプロパティを構成するには、\[詳細設定\] ボタンをクリックします。 + + ![詳細なコントラクト優先プロパティ](../../../docs/framework/wcf/media/contractfirstadvanced.png "ContractFirstAdvanced") + + 次の詳細設定は、コントラクトからコードを生成するために構成できます。設定は、プロジェクト内のすべてのファイルに対してのみ構成できます。現時点では、ファイルごとの構成はできません。 + +- **\[シリアライザー モード\]**: この設定は、サービス コントラクト ファイルの読み取りにどのシリアライザーを使用するかを決定します。**\[XML シリアライザー\]** を選択すると、**\[コレクションの型\]** と **\[再利用の型\]** オプションは無効になります。これらのオプションは、**\[データ コントラクト シリアライザー\]** だけに適用されます。 + +- **\[再利用の型\]**: この設定は、型の再利用にどのライブラリを使用するかを指定します。この設定は、**\[シリアライザー モード\]** が **\[データ コントラクト シリアライザー\]** に設定されている場合にだけ適用されます。 + +- **\[コレクションの型\]**: この設定は、コレクション データ型に使用する完全修飾型またはアセンブリ修飾型を指定します。この設定は、**\[シリアライザー モード\]** が **\[データ コントラクト シリアライザー\]** に設定されている場合にだけ適用されます。 + +- **\[ディクショナリの型\]**: この設定は、ディクショナリ データ型に使用する完全修飾型またはアセンブリ修飾型を指定します。 + +- **\[EnableDataBinding\]**: この設定は、データ バインドを実装するために、すべてのデータ型に インターフェイスを実装するかどうかを指定します。 + +- **\[ExcludedTypes\]**: この設定は、参照アセンブリから除外する完全修飾型またはアセンブリ修飾型のリストを指定します。この設定は、**\[シリアライザー モード\]** が **\[データ コントラクト シリアライザー\]** に設定されている場合にだけ適用されます。 + +- **\[GenerateInternalTypes\]**: この設定は、internal としてマークされるクラスを生成するかどうかを指定します。この設定は、**\[シリアライザー モード\]** が **\[データ コントラクト シリアライザー\]** に設定されている場合にだけ適用されます。 + +- **\[GenerateSerializableTypes\]**: この設定は、 属性を持つクラスを生成するかどうかを指定します。この設定は、**\[シリアライザー モード\]** が **\[データ コントラクト シリアライザー\]** に設定されている場合にだけ適用されます。 + +- **\[ImportXMLTypes\]**: この設定は、 属性がないクラスに 属性を適用するようにデータ コントラクト シリアライザーを構成するかどうかを指定します。この設定は、**\[シリアライザー モード\]** が **\[データ コントラクト シリアライザー\]** に設定されている場合にだけ適用されます。 + +- **\[SupportFx35TypedDataSets\]**: この設定は、.NET Framework 3.5 用に作成された、型指定されたデータ セットのために、追加機能を提供するかどうかを指定します。**\[シリアライザー モード\]** が **\[XML シリアライザー\]** に設定されている場合、この値が True に設定されていると、 拡張機能が XML スキーマ インポーターに追加されます。**\[シリアライザー モード\]** が **\[データ コントラクト シリアライザー\]** に設定されている場合、この値が False に設定されていると、型 が \[参照\] から除外され、より古いフレームワーク バージョンのために [DateTimeOffset](assetId:///DateTimeOffset?qualifyHint=False&autoUpgrade=True) が常に生成されるようになります。 + +- **\[InputXsdFiles\]**: この設定は、入力ファイルのリストを指定します。各ファイルは、有効な XML スキーマを含んでいる必要があります。 + +- **\[言語\]**: この設定は、生成されるコントラクト コードの言語を指定します。設定は、 が認識できるものである必要があります。 + +- **\[NamespaceMappings\]**: この設定は、XSD ターゲット名前空間から CLR 名前空間へのマッピングを指定します。各マッピングは、次の形式を使用する必要があります。 + + ```xml + “, ” + ``` + + XML シリアライザーは、次の形式の 1 つのマッピングだけを受け取ります。 + + ```xml + “*, ” + ``` + +- **\[OutputDirectory\]**: この設定は、コード ファイルが生成されるディレクトリを指定します。 + + 設定は、プロジェクトのビルド時に、サービス コントラクト ファイルからサービス コントラクト型を生成するために使用されます。 + +## コントラクト優先開発の使用 + サービス コントラクトをプロジェクトに追加し、ビルド設定を確認した後、**F6** キーを押してプロジェクトをビルドします。これで、サービス コントラクトで定義された型が、プロジェクト内で利用できるようになります。 + + サービス コントラクトで定義した型を使用するには、現在の名前空間に `ContractTypes` への参照を追加します。 + +```csharp +using MyProjectNamespace.ContractTypes; +``` + + これで、サービス コントラクトで定義された型が、以下に示すように、プロジェクト内で解決可能になります。 + + ![サービス コントラクトから派生した型の使用](../../../docs/framework/wcf/media/contractfirsttypes.png "ContractFirstTypes") + + ツールによって生成された型は、GeneratedXSDTypes.cs ファイル内に作成されます。このファイルは、既定では、\<プロジェクト ディレクトリ\>\/obj\/\<ビルド構成\>\/XSDGeneratedCode\/ ディレクトリ下に作成されます。このトピックの冒頭のサンプル スキーマは、次のように変換されています。 + +```scr +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.17330 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace TestXSD3.ContractTypes +{ + using System.Xml.Serialization; + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.17330")] + [System.SerializableAttribute()] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/ServiceSchema.xsd")] + [System.Xml.Serialization.XmlRootAttribute(Namespace="http://tempuri.org/ServiceSchema.xsd", IsNullable=true)] + public partial class SearchRequest + { + + private string versionField; + + private string marketField; + + private string uILanguageField; + + private string queryField; + + private string appIdField; + + private double latitudeField; + + private bool latitudeFieldSpecified; + + private double longitudeField; + + private bool longitudeFieldSpecified; + + private double radiusField; + + private bool radiusFieldSpecified; + + public SearchRequest() + { + this.versionField = "2.2"; + } + + /// + [System.ComponentModel.DefaultValueAttribute("2.2")] + public string Version + { + get + { + return this.versionField; + } + set + { + this.versionField = value; + } + } + + /// + public string Market + { + get + { + return this.marketField; + } + set + { + this.marketField = value; + } + } + + /// + public string UILanguage + { + get + { + return this.uILanguageField; + } + set + { + this.uILanguageField = value; + } + } + + /// + public string Query + { + get + { + return this.queryField; + } + set + { + this.queryField = value; + } + } + + /// + public string AppId + { + get + { + return this.appIdField; + } + set + { + this.appIdField = value; + } + } + + /// + public double Latitude + { + get + { + return this.latitudeField; + } + set + { + this.latitudeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool LatitudeSpecified + { + get + { + return this.latitudeFieldSpecified; + } + set + { + this.latitudeFieldSpecified = value; + } + } + + /// + public double Longitude + { + get + { + return this.longitudeField; + } + set + { + this.longitudeField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool LongitudeSpecified + { + get + { + return this.longitudeFieldSpecified; + } + set + { + this.longitudeFieldSpecified = value; + } + } + + /// + public double Radius + { + get + { + return this.radiusField; + } + set + { + this.radiusField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool RadiusSpecified + { + get + { + return this.radiusFieldSpecified; + } + set + { + this.radiusFieldSpecified = value; + } + } + } + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.17330")] + [System.SerializableAttribute()] + [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/ServiceSchema.xsd")] + [System.Xml.Serialization.XmlRootAttribute(Namespace="http://tempuri.org/ServiceSchema.xsd", IsNullable=false)] + public enum WebSearchOption + { + + /// + DisableHostCollapsing, + + /// + DisableQueryAlterations, + } +} + +``` + +## エラーと警告 + XSD スキーマの解析中に発生したエラーと警告は、ビルドのエラーと警告として表示されます。 + +## インターフェイスの継承 + コントラクト優先開発と共にインターフェイス継承を使用することはできません。これは、インターフェイスが他の操作で動作する方法と一致しています。基本インターフェイスを継承するインターフェイスを使用するには、2 つの別個のエンドポイントを使用します。最初のエンドポイントは継承されるコントラクトを使用し、2 番目のエンドポイントは基本インターフェイスを実装します。 \ No newline at end of file diff --git a/docs/framework/wcf/controlling-auto-launching-of-wcf-service-host.md b/docs/framework/wcf/controlling-auto-launching-of-wcf-service-host.md new file mode 100644 index 00000000000..99fe94bb1b2 --- /dev/null +++ b/docs/framework/wcf/controlling-auto-launching-of-wcf-service-host.md @@ -0,0 +1,39 @@ +--- +title: "WCF サービス ホストの自動起動の制御 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "WcfOptions" +ms.assetid: 6abe5d34-519b-4cef-8f02-3c0a7f125585 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# WCF サービス ホストの自動起動の制御 +[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] ソリューションに複数のプロジェクトが含まれている場合、既定では、同じソリューション内の別のプロジェクトをデバッグするときでも、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス ライブラリ プロジェクトの [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービス ホスト \(WcfSvcHost.exe\) が自動的に起動します。この自動起動機能は制御できます。 + + これを行うには、**ソリューション エクスプローラー**で [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス プロジェクトを右クリックし、**\[プロパティ\]** をクリックして、**\[WCF オプション\]** タブをクリックします。既定では、**\[同じソリューション内での別のプロジェクトのデバッグ時に WCF サービス ホストを開始する\]** チェック ボックスがオンになっています。チェック ボックスをオフにすると、同じソリューションで別のプロジェクトがデバッグされるときに、この特定のプロジェクトの [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス ホストを起動しないように指定できます。 + + この動作は、F5 キーによるデバッグや、このプロジェクトへのサービス参照の追加の機能には影響を与えません。 + + このオプションは、次のプロジェクトで使用できます。 + +- [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス ライブラリ プロジェクト + +- シーケンシャル ワークフロー サービス ライブラリ プロジェクト + +- ステート マシン ワークフロー サービス ライブラリ プロジェクト + +- 配信サービス ライブラリ プロジェクト + +## 参照 + [WCF サービス ホスト \(WcfSvcHost.exe\)](../../../docs/framework/wcf/wcf-service-host-wcfsvchost-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/controlling-resource-consumption-and-improving-performance.md b/docs/framework/wcf/controlling-resource-consumption-and-improving-performance.md new file mode 100644 index 00000000000..fde0a9d07c2 --- /dev/null +++ b/docs/framework/wcf/controlling-resource-consumption-and-improving-performance.md @@ -0,0 +1,58 @@ +--- +title: "リソース消費の制御とパフォーマンスの向上 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9a829669-5f76-4c88-80ec-92d0c62c0660 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# リソース消費の制御とパフォーマンスの向上 +ここでは、リソース消費を制御し、パフォーマンス メトリックに影響を与える [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アーキテクチャのさまざまな領域の各種プロパティについて説明します。 + +## WCF でのリソース消費を制約するプロパティ + [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] では、セキュリティまたはパフォーマンスを向上する目的で、特定の種類のプロセスに制約が適用されます。これらの制約には、クォータとスロットルという 2 つの主要な形式があります。*"クォータ"* は、この値に達するか、または超えたときに、システムの特定の場所で即座に例外を発生させる制限です。*"スロットル"* は、即座に例外がスローされない制限です。スロットル制限に達すると、例外がスローされる代わりに、そのスロットル値によって設定された制限の範囲内で処理が続行されます。この制限された処理によって他の場所で例外が発生する可能性がありますが、これはアプリケーションに依存します。 + + クォータとスロットルの違いに加え、シリアル化レベル、トランスポート レベル、およびアプリケーション レベルにも制約を加えるプロパティがあります。たとえば、システム提供のすべてのトランスポート バインディング要素によって実装されるクォータである は、既定で 65,536 バイトに設定されます。これは、悪意のあるクライアントがサービスに対して、大量のメモリを消費させるサービス拒否攻撃を実行することを防ぐための措置です \(通常は、この値を下げることによってパフォーマンスを向上できます\)。 + + シリアル化のクォータの例としては、 プロパティがあります。このプロパティは、シリアライザーが メソッドの 1 回の呼び出しでシリアル化または逆シリアル化するオブジェクトの最大数を指定します。アプリケーション レベルのスロットルの例としては、 プロパティがあります。このプロパティは、既定で、セッションフル チャネルの同時接続の最大数を 10 に制限します \(クォータとは異なり、このスロットル値に達しても、アプリケーションは処理を続行しますが、新しいセッションフル チャネルは受け入れません。つまり、他のセッションフル チャネルのいずれかが終了するまで、新しいクライアントは接続できません\)。 + + これらの制御は、特定の種類の攻撃に対してすぐに使用できる軽減策を提供し、メモリの占有領域や起動時間などのパフォーマンス メトリックを向上するように設計されています。ただし、アプリケーションによっては、これらの制御によってサービス アプリケーションのパフォーマンスが低下したり、アプリケーションがまったく動作しなくなったりする可能性があります。たとえば、ビデオ ストリーミング用に設計されたアプリケーションは、既定の プロパティをすぐに超える可能性があります。ここでは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のすべてのレベルでアプリケーションに適用されるさまざまな制御の概要を示し、特定の設定がアプリケーションの実行を妨げているかどうかに関する詳細情報を取得するためのさまざまな方法について説明し、さまざまな問題を修正する方法について説明します。ほとんどのスロットルおよび一部のクォータは、基本プロパティがシリアル化またはトランスポートの制約である場合でも、アプリケーション レベルで利用できます。たとえば、サービス クラスの を使用して、 プロパティを設定できます。 + +> [!NOTE] +> 特定の問題がある場合は、まず「[WCF トラブルシューティング クイックスタート](../../../docs/framework/wcf/wcf-troubleshooting-quickstart.md)」に目を通し、発生している問題 \(および解決方法\) が記載されているかどうかを確認してください。 + + シリアル化プロセスを制限するプロパティの一覧は、「[セキュリティに関するデータの考慮事項](../../../docs/framework/wcf/feature-details/security-considerations-for-data.md)」にあります。トランスポートに関連するリソースの消費を制限するプロパティの一覧は、「[トランスポート クォータ](../../../docs/framework/wcf/feature-details/transport-quotas.md)」にあります。アプリケーション層でリソースの消費を制限するプロパティは、 クラスのメンバーです。 + +## クォータ設定に関連するアプリケーションとパフォーマンスの問題の検出 + 上記の値の既定値は、一般的なセキュリティの問題に対する基本的な保護を提供しながら、さまざまなアプリケーションで基本的なアプリケーション機能を使用できるように選択されたものです。ただし、アプリケーション デザインによっては、1 つ以上のスロットル設定を超えてしまったためにアプリケーションがセキュリティで保護されなかったり、設計どおりに動作しなかったりする場合があります。その場合は、超過したスロットル値とそのレベルを特定し、アプリケーションのスループットを向上するための適切な手順を決定する必要があります。 + + 通常、アプリケーションを作成してデバッグする際には、構成ファイルまたはプログラムで プロパティを `true` に設定します。これによって、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] にサービス例外のスタック トレースをクライアント アプリケーションに返して表示するように指示できます。この機能により、ほとんどのアプリケーション レベルの例外が報告され、問題が発生している場合に、どのクォータ設定が関係しているかを表示できます。 + + 実行時に発生する一部の例外はアプリケーション層から見えないため、このメカニズムでは返されません。このため、カスタムの 実装で処理できないことがあります。Microsoft Visual Studio などの開発環境で作業している場合は、これらの例外のほとんどは自動的に表示されます。ただし、Visual Studio 2005 の \[[マイ コードのみ](http://go.microsoft.com/fwlink/?LinkId=82174)\] の設定など、開発環境設定によって一部の例外がマスクされる可能性があります。 + + 開発環境の機能に関係なく、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のトレース機能とメッセージ ログ機能を使用すると、すべての例外のデバッグとアプリケーションのパフォーマンス調整を実行できます。詳細については、「[トレースを使用したアプリケーションのトラブルシューティング](../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md)」を参照してください。 + +## パフォーマンスの問題と XmlSerializer + を使用してシリアル化できるデータ型を使用するサービスおよびクライアント アプリケーションは、実行時にこのようなデータ型のシリアル化コードを生成およびコンパイルします。このため、起動時のパフォーマンスが低下することがあります。 + +> [!NOTE] +> 生成済みシリアル化コードはクライアント アプリケーションでのみ使用できます。サービスでは使用できません。 + + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用すると、必要なシリアル化コードをアプリケーションのコンパイル済みアセンブリから生成することで、このようなアプリケーションの起動時のパフォーマンスを改善できます。詳細については、「[方法 : XmlSerializer を使用する WCF クライアント アプリケーションの起動時間を短縮する](../../../docs/framework/wcf/feature-details/startup-time-of-wcf-client-applications-using-the-xmlserializer.md)」を参照してください。 + +## ASP.NET で WCF サービスをホストする場合のパフォーマンスの問題 + WCF サービスを IIS および ASP.NET でホストする場合、IIS と ASP.NET の構成設定が WCF サービスのスループットやメモリの占有領域に影響する場合があります。ASP.NET のパフォーマンス[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[ASP.NET パフォーマンスの向上](http://go.microsoft.com/fwlink/?LinkId=186462)」を参照してください。予想外の結果を引き起こす可能性のある設定の 1 つに、 があります。これは、 のプロパティです。アプリケーションのクライアントが固定数または少数である場合、 を 2 に設定すると、CPU の使用率が 100% に近いマルチプロセッサ コンピューターのスループットが向上する場合があります。このパフォーマンスの向上にはコストが伴います。つまり、メモリの使用率も増加するため、スケーラビリティが低下する場合があります。 + +## 参照 + [管理と診断](../../../docs/framework/wcf/diagnostics/index.md) + [大規模データとストリーミング](../../../docs/framework/wcf/feature-details/large-data-and-streaming.md) \ No newline at end of file diff --git a/docs/framework/wcf/creating-ws-i-basic-profile-1-1-interoperable-services.md b/docs/framework/wcf/creating-ws-i-basic-profile-1-1-interoperable-services.md new file mode 100644 index 00000000000..3bc2963c037 --- /dev/null +++ b/docs/framework/wcf/creating-ws-i-basic-profile-1-1-interoperable-services.md @@ -0,0 +1,50 @@ +--- +title: "WS-I Basic Profile 1.1 の相互運用可能サービスの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "構成 [WCF], 相互運用可能サービス" +ms.assetid: 91b70a21-8f5c-4679-808c-2ed5fa6b2013 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# WS-I Basic Profile 1.1 の相互運用可能サービスの作成 +[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] Web サービス クライアントと相互運用できるように [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] サービス エンドポイントを構成するには、以下に従います。 + +- 使用して、 サービス エンドポイントのバインディングの種類として。 + +- コールバック コントラクト機能とセッション コントラクト機能の使用、およびトランザクション動作のサービス エンドポイントでの使用をいずれも行わない。 + + 必要に応じて、HTTPS およびトランスポート レベルのクライアント認証のサポートをバインディングで有効にできます。 + + 次の機能、 クラスは、WS 以外の機能を必要と-基本プロファイル 1.1。 + +- によって制御される message Transmission Optimization Mechanism (MTOM) メッセージ エンコーディング、 プロパティです。 このプロパティは、既定値のままに MTOM を使用しないようにします。 + +- によって制御されるメッセージ セキュリティ、 値に準拠した Ws-security サポートを提供するには Basic Security Profile 1.0 です。 このプロパティは、既定値のままに Ws-security を使用しないようにします。 + + メタデータを有効にする、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)]に利用できるサービス[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)]、Web サービス クライアント生成ツールを使用して: [Web サービス記述言語ツール (Wsdl.exe)](http://msdn.microsoft.com/ja-jp/b9210348-8bc2-4367-8c91-d1a04b403e88)、 [Web サービス検出ツール (Disco.exe)](http://msdn.microsoft.com/ja-jp/acd88078-c581-42bc-94ca-6633e2851979)、および`Add Web Reference`機能[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)]; メタデータの公開を有効にする必要があります。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)][メタデータ エンドポイントを公開](../../../docs/framework/wcf/publishing-metadata-endpoints.md)します。 + +## 例 + +### 説明 + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] Web サービス クライアントと互換性のある [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] エンドポイントをコードおよび構成ファイルで追加する方法を次のコード例に示します。 + +### コード + [!code-csharp[C_HowTo-WCFServiceAndASMXClient#0](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto-wcfserviceandasmxclient/cs/program.cs#0)] + [!code-vb[C_HowTo-WCFServiceAndASMXClient#0](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto-wcfserviceandasmxclient/vb/program.vb#0)] + + [!code[C_HowTo-WCFServiceAndASMXClient#1](../../../samples/snippets/common/VS_Snippets_CFX/c_howto-wcfserviceandasmxclient/common/app.config#1)] + +## 関連項目 + [ASP.NET Web サービスとの相互運用性](../../../docs/framework/wcf/feature-details/interop-with-aspnet-web-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/defining-and-specifying-faults.md b/docs/framework/wcf/defining-and-specifying-faults.md new file mode 100644 index 00000000000..eeb8cba7b9a --- /dev/null +++ b/docs/framework/wcf/defining-and-specifying-faults.md @@ -0,0 +1,103 @@ +--- +title: "エラーの定義と指定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "エラーの処理 [WCF], 定義" + - "エラーの処理 [WCF], 指定" +ms.assetid: c00c84f1-962d-46a7-b07f-ebc4f80fbfc1 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# エラーの定義と指定 +SOAP エラーを使用する目的は、エラー状態情報をサービスからクライアントに伝達し、双方向のシナリオでは、相互利用が可能な手段でクライアントからサービスにも伝達することです。 ここでは、カスタムのエラー コンテンツをいつどのように定義し、そのエラーを返す操作をどのように指定するかについて説明します。 サービスまたは双方向クライアントがエラーを送信する方法、およびクライアントまたはサービス アプリケーションがエラーを処理する方法[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[エラーの送受信](../../../docs/framework/wcf/sending-and-receiving-faults.md)」を参照してください。 [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションでのエラー処理の概要については、「[コントラクトおよびサービスのエラーの指定と処理](../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md)」を参照してください。 + +## 概要 + 宣言された SOAP エラーは、カスタム SOAP エラーの種類を指定する を含む操作で発生します。 宣言されていない SOAP エラーとは、操作のコントラクトに指定されていないエラーです。 ここでは、各種のエラー状態を特定したうえで、サービスに関するエラー コントラクトを作成する方法について説明します。クライアントは、カスタムの SOAP エラーから通知を受けたときに、これらを使用することでエラーを適切に処理できます。 基本的な作業は、次の順序で行います。 + +1. サービスのクライアントに通知する必要があるエラー状態を定義します。 + +2. そのエラー状態に対して SOAP エラーのカスタム コンテンツを定義します。 + +3. 操作でスローされた特定の SOAP エラーがクライアントに公開されるように、WSDL でその操作にマークします。 + +### クライアントに通知する必要があるエラー状態の定義 + SOAP エラーは、特定の操作に関するフォールト情報を伝達するためにパブリックに記述されたメッセージです。 これらのメッセージは、WSDL で他の操作メッセージと共に記述されているので、クライアントは、操作を呼び出した時点でこのようなエラー処理を予測できます。 ただし、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスはマネージ コードで記述されています。マネージ コードで記述されたどのエラー状態をフォールトに変換し、クライアントに返す必要があるかを決定することによって、サービスのエラー状態やバグは、クライアントとの間でエラーに関して行われる正規のメッセージ交換から分離することができます。 + + たとえば、次のコード例には、2 つの整数を受け取り、別の整数を返す操作があります。 ここではいくつかの例外がスローされる可能性があります。そのため、エラー コントラクトを設計するときに、クライアントにとって重要なエラー状態を判別する必要があります。 この場合、サービスでは 例外を検出する必要があります。 + +```csharp +[ServiceContract] +public class CalculatorService +{ + [OperationContract] + int Divide(int a, int b) + { + if (b==0) throw new Exception("Division by zero!"); + return a/b; + } +} +``` + +```vb + _ +Public Class CalculatorService + _ + Public Function Divide(ByVal a As Integer, ByVal b As Integer) _ + As Integer + If (b==0) Then + Throw New Exception("Division by zero!") + Return a/b + End Function +End Class +``` + + この例で操作から返せるエラーには、ゼロによる除算に特化したカスタム SOAP エラー、ゼロ除算に特化した情報が算術演算に特化したエラーに含まれているもの、複数の異なるエラー状態に対する複数のエラーなどがあります。SOAP エラーを返さないことも選択できます。 + +### エラー状態のコンテンツの定義 + 意義のあるカスタム SOAP エラーを返すエラー状態を特定したら、次の手順では、そのエラーのコンテンツを定義し、コンテンツ構造をシリアル化できるようにします。 前のセクションのコード例では、`Divide` 演算に特化したエラーを示していました。しかし、`Calculator` サービスに他の演算がある場合、1 つのカスタム SOAP エラーで、`Divide` を含むすべての電卓エラー状態をクライアントに通知することも可能です。 次のコード例では、`Divide` を含むすべての算術演算で生成されたエラーを報告するためのカスタム SOAP エラー `MathFault` を作成しています。 このクラスでは、操作 \(`Operation` プロパティ\) と問題を説明する値 \(`ProblemType` プロパティ\) を指定できますが、カスタム SOAP エラーでクライアントに転送するには、クラスとこれらのプロパティがシリアル化可能である必要があります。 このため、 属性と 属性を使用して、型とそのプロパティをシリアル化可能にし、できる限り相互運用可能にします。 + + [!code-csharp[Faults#2](../../../samples/snippets/csharp/VS_Snippets_CFX/faults/cs/service.cs#2)] + [!code-vb[Faults#2](../../../samples/snippets/visualbasic/VS_Snippets_CFX/faults/vb/service.vb#2)] + + データをシリアル化可能にする方法[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[サービス コントラクトでのデータ転送の指定](../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md)」を参照してください。 で提供されるシリアル化サポートの一覧については、「[データ コントラクト シリアライザーでサポートされる型](../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md)」を参照してください。 + +### エラー コントラクトを確立するための操作のマーク + カスタム SOAP エラーの一部として返されるシリアル化可能なデータ構造を定義したら、最後に、その型の SOAP エラーをスローできることを操作コントラクトにマークします。 これには、 属性を使用して、作成したカスタム データ型の型を渡します。 属性を使用して、`Divide` 操作で `MathFault` 型の SOAP エラーを返すように指定する方法を次のコード例に示します。 他の算術に関する操作でも、`MathFault` を返せるように指定できます。 + + [!code-csharp[Faults#1](../../../samples/snippets/csharp/VS_Snippets_CFX/faults/cs/service.cs#1)] + [!code-vb[Faults#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/faults/vb/service.vb#1)] + + 操作に複数の 属性をマークすることによって、その操作で複数のカスタム エラーを返すことを指定できます。 + + 操作実装にエラー コントラクトを実装する方法については、「[エラーの送受信](../../../docs/framework/wcf/sending-and-receiving-faults.md)」を参照してください。 + +#### SOAP、WSDL、相互運用性に関する考慮事項 + 特に他のプラットフォームと相互運用するときなど、状況によっては、SOAP メッセージでエラーを表す方法または WSDL メタデータでエラーを記述する方法を制御することが重要な場合があります。 + + 属性の プロパティを使用すると、エラーに対してメタデータで生成される WSDL エラー要素名を制御できます。 + + SOAP 標準に従って、エラーには、`Action`、`Code`、および `Reason` を指定することができます。 `Action` は、 プロパティによって制御されます。 プロパティと プロパティは、ジェネリック の親クラスである クラスのプロパティです。 `Code` プロパティには、 メンバーが含まれています。 + + エラーを生成する非サービスを利用する場合には、特定の制限事項があります。 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、スキーマによって記述され、データ コントラクトと互換性のある、詳細な型を持つエラーしかサポートされません。 たとえば、上記のように [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、詳細な型で XML 属性を使用するエラーや、詳細セクションに複数のトップレベル要素を持つエラーがサポートされていません。 + +## 参照 + + + + [コントラクトおよびサービスのエラーの指定と処理](../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) + [エラーの送受信](../../../docs/framework/wcf/sending-and-receiving-faults.md) + [方法 : サービス コントラクトでのエラーを宣言する](../../../docs/framework/wcf/how-to-declare-faults-in-service-contracts.md) + [保護レベルの理解](../../../docs/framework/wcf/understanding-protection-level.md) + [方法 : ProtectionLevel プロパティを設定する](../../../docs/framework/wcf/how-to-set-the-protectionlevel-property.md) + [サービス コントラクトでのデータ転送の指定](../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/deploying-a-wcf-library-project.md b/docs/framework/wcf/deploying-a-wcf-library-project.md new file mode 100644 index 00000000000..89994265cb0 --- /dev/null +++ b/docs/framework/wcf/deploying-a-wcf-library-project.md @@ -0,0 +1,27 @@ +--- +title: "WCF ライブラリ プロジェクトの配置 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9f9222fe-d358-443c-9a49-12c5498e35e7 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# WCF ライブラリ プロジェクトの配置 +ここでは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービス ライブラリ プロジェクトの配置方法について説明します。 + +## WCF サービス ライブラリの配置 + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス ライブラリは、ダイナミックリンク ライブラリ \(DLL\) です。それ自体を単独で実行することはできません。ホスティング環境に配置する必要があります。このプロセスの詳細については、「[WCF サービスのホスティングと利用](http://go.microsoft.com/fwlink/?LinkId=99932)」を参照してください。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス ライブラリは、他の [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスと同様に配置できます。ただし、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では、DLL に対する構成はサポートされていません では、アプリケーション ドメイン 1 つにつき、1 つの構成ファイルがサポートされています。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス ライブラリ プロジェクトにより、配置中、ライブラリに App.config ファイルが提供され、この制限が緩和されます。ただし、配置後、この App.config ファイルは認識されません。 + + 構成コードは、ホスティング環境で認識されている構成ファイルに移動する必要があります。自己ホストを行うには、App.config ファイルの内容をホスティング実行可能形式の App.config ファイルにコピーしてください。サービスのホスティングに IIS を使用する場合は、App.config ファイルの内容を仮想ディレクトリの Web.config ファイルにコピーする必要があります。 \ No newline at end of file diff --git a/docs/framework/wcf/deploying-wcf-applications-with-clickonce.md b/docs/framework/wcf/deploying-wcf-applications-with-clickonce.md new file mode 100644 index 00000000000..4b2ec95e337 --- /dev/null +++ b/docs/framework/wcf/deploying-wcf-applications-with-clickonce.md @@ -0,0 +1,26 @@ +--- +title: "ClickOnce を使用して WCF アプリケーションを展開する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1a11feee-2a47-4d3e-a28a-ad69d5ff93e0 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ClickOnce を使用して WCF アプリケーションを展開する +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] を使用しているクライアント アプリケーションは、ClickOnce テクノロジを使用して展開できます。このテクノロジを使用すると、クライアント アプリケーションが、信頼できる証明書でデジタル署名されている場合、コード アクセス セキュリティによって提供されるランタイム セキュリティ保護を受けられます。ClickOnce アプリケーションの署名に使用される証明書は、信頼された発行者のストアに存在する必要があり、またそのクライアント コンピューターのローカル セキュリティ ポリシーでは、発行者の証明書で署名されたアプリケーションに対して、完全信頼のアクセス許可が構成される必要があります。 + + ClickOnce アプリケーションの構成と信頼された発行者の詳細については、「[Configuring ClickOnce Trusted Publishers](http://go.microsoft.com/fwlink/?LinkId=94774)」を参照してください。 + +## 参照 + [信頼されたアプリケーションの配置の概要](http://go.microsoft.com/fwlink/?LinkId=94775) + [Windows フォーム アプリケーションの ClickOnce 配置](http://go.microsoft.com/fwlink/?LinkId=94776) \ No newline at end of file diff --git a/docs/framework/wcf/designing-and-implementing-services.md b/docs/framework/wcf/designing-and-implementing-services.md new file mode 100644 index 00000000000..7ebbbce2360 --- /dev/null +++ b/docs/framework/wcf/designing-and-implementing-services.md @@ -0,0 +1,81 @@ +--- +title: "サービスの設計と実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "サービス コントラクトの定義 [WCF]" +ms.assetid: 036fae20-7c55-4002-b71d-ac4466e167a3 +caps.latest.revision: 37 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 37 +--- +# サービスの設計と実装 +ここでは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] コントラクトを定義および実装する方法について説明します。サービス コントラクトでは、エンドポイントが外部と何をやりとりするかが指定されます。具体的には、要求\/応答、一方向、双方向など、基本的なメッセージ交換パターン \(MEP\) に編成された一連のメッセージに関する記述です。サービス コントラクトがメッセージ交換の論理的に関連したセットであるとすると、サービス操作は単一のメッセージ交換です。たとえば、`Hello` 操作は、呼び出し元があいさつを通知できるように、1 つのメッセージを受け入れる必要があることは明らかであり、メッセージを返す場合もあれば、返さない場合もあります \(この操作のマナーによって異なります\)。 + + コントラクトおよびその他の [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] の中核的な概念の詳細については、「[Windows Communication Foundation の基本概念](../../../docs/framework/wcf/fundamental-concepts.md)」を参照してください。ここでは、サービス コントラクトを理解することに重点を置きます。サービス コントラクトを使用してサービスに接続するクライアントを構築する方法の詳細については、「[WCF クライアントの概要](../../../docs/framework/wcf/wcf-client-overview.md)」を参照してください。 + +## 概要 + ここでは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスの設計および実装に関する大まかな概念的方向付けを行います。サブトピックでは、設計と実装の仕様についてさらに詳しく説明します。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションを設計および実装する前に、次の準備をしておくことをお勧めします。 + +- サービス コントラクトの概要、しくみ、および作成方法について理解する。 + +- コントラクトとは、実行時の構成またはホスト環境でサポートされていない可能性のある最小限の要件を記述するものであることを理解する。 + +## サービス コントラクト + サービス コントラクトは、次の内容を指定します。 + +- コントラクトが公開する操作 + +- 交換するメッセージに関する操作のシグネチャ + +- 交換するメッセージのデータ型 + +- 操作の場所 + +- サービスとの正常な通信をサポートするために使用するプロトコルとシリアル化形式 + + たとえば、注文情報の種類に関する入力を受け入れ、発注 ID を含めた成功または失敗の情報を返す `CreateOrder` 操作が含まれた発注書コントラクトがあるとします。このコントラクトには、発注 ID を受け入れ、注文ステータス情報を返す `GetOrderStatus` 操作も含まれている場合があります。この種のサービス コントラクトでは、次のような指定が必要になります。 + +1. 発注書コントラクトが `CreateOrder` 操作と `GetOrderStatus` 操作で構成されていること。 + +2. これらの操作によって、入力メッセージと出力メッセージが指定されていること。 + +3. これらのメッセージが伝達できるデータ。 + +4. メッセージを正常に処理するために必要な通信インフラストラクチャに関する明確な記述。たとえば、正常な通信を確立するためにセキュリティが必要かどうか、また、どのような形式のセキュリティが必要かなどの詳細を記述します。 + + この種の情報を多くのプラットフォーム上 \(マイクロソフト以外のプラットフォームも含みます\) の他のアプリケーションに伝達するために、XML サービス コントラクトは、[Web Services Description Language](http://go.microsoft.com/fwlink/?LinkId=94952) \(WSDL\) や [XML Schema](http://go.microsoft.com/fwlink/?LinkId=94953) \(XSD\) などの標準 XML 形式で公開されます。多くのプラットフォームの開発者は、このパブリック コントラクト情報を使用して、サービスと通信できるアプリケーションを作成できます。これは、開発者が仕様の言語を理解しているだけでなく、これらの言語はサービスがサポートするパブリックな形式、書式、およびプロトコルを記述することで相互運用できるように設計されているためです。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] がこの種の情報を処理する方法の詳細については、「[メタデータ](../../../docs/framework/wcf/feature-details/metadata.md)」を参照してください。 + + コントラクトはさまざまな方法で表現できます。WSDL と XSD は、利用しやすい方法でサービスを記述する優れた言語である一方、直接使用することが難しい言語です。また、サービスを記述するに過ぎず、サービス コントラクトの実装ではありません。そのため、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションでは、マネージ属性、マネージ インターフェイス、およびマネージ クラスを使用して、サービスの構造の定義と実装の両方を行います。 + + マネージ型で定義されたコントラクトは、クライアントやその他のサービス実装側が必要とする場合に、メタデータ \(WSDL および XSD\) として*エクスポート*することができます。これにより、どのクライアント アプリケーションに対しても \(パブリック メタデータを使用して\) 記述できる、簡単なプログラミング モデルが実現します。基になる SOAP メッセージの詳細や、トランスポートとセキュリティ関連の情報などは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] に残しておくことができます。WCF は、サービス コントラクト型システムと XML 型システム間で必要な変換を自動的に実行します。 + + コントラクトの設計の詳細については、「[サービス コントラクトの設計](../../../docs/framework/wcf/designing-service-contracts.md)」を参照してください。コントラクトの実装の詳細については、「[サービス コントラクトの実装](../../../docs/framework/wcf/implementing-service-contracts.md)」を参照してください。 + +### 重要なメッセージ + リモート プロシージャ コール \(RPC\) スタイルのメソッド シグネチャを使用する場合、マネージ インターフェイス、マネージ クラス、およびマネージ メソッドを使用してサービス操作をモデル化することは簡単です。メソッドにパラメーターを渡し、戻り値を受け取る方法は、オブジェクトや他の種類のコードから機能を要求する通常の形式です。たとえば、[!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] や C\+\+ COM のようなマネージ言語を使用するプログラマは、\(オブジェクトとインターフェイスのどちらを使用するかに関係なく\) RPC スタイルの手法に関する知識を、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス コントラクトの作成に応用できます。この場合、RPC スタイルの分散オブジェクト システムに固有の問題は発生しません。サービス指向では、RPC プログラミングの容易さと知識を保持しながら、疎結合のメッセージ指向プログラミングの利点を得ることができます。 + + プログラマの多くは、メッセージ キュー \(Microsoft MSMQ、.NET Framework の 名前空間、HTTP 要求における構造化されていない XML の送信など\) のようなメッセージ指向のアプリケーション プログラミング インターフェイスの方が使いやすいと考えています。メッセージ レベルのプログラミングの詳細については、「[メッセージ コントラクトの使用](../../../docs/framework/wcf/feature-details/using-message-contracts.md)」、「[サービス チャネル レベルのプログラミング](../../../docs/framework/wcf/extending/service-channel-level-programming.md)」、および「[POX アプリケーションとの相互運用性](../../../docs/framework/wcf/feature-details/interoperability-with-pox-applications.md)」を参照してください。 + +### 要件の階層の理解 + サービス コントラクトは、操作をグループ化し、メッセージ交換パターン、メッセージの種類、およびメッセージに格納されているデータ型を指定します。さらに、実装でコントラクトをサポートするために必要な実行時の動作のカテゴリ \(メッセージの暗号化と署名を要求するなど\) を示します。サービス コントラクト自体は、これらの要件を満たす方法を正確に指定するわけではなく、これらの要件が必要であることを示すだけです。暗号化の種類やメッセージに署名する方法は、準拠サービスの実装と構成によって決まります。 + + コントラクトに必要なのは、サービス コントラクトの実装と、動作を追加するための実行時の構成に関するものであるという点に注意してください。使用するサービスを公開するために満たす必要のある要件のセットは、上記の要件のセットを基に作成されます。コントラクトが実装の要件を作成しても、実装ではサービスの実行を可能にするために、さらに多くの構成とバインディングを必要とする場合があります。また、ホスト アプリケーションも、サービス構成とバインディングによって追加されるすべての要件をサポートする必要があります。 + + [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービス アプリケーションを設計、実装、構成、およびホストする際には、この追加要件の処理に注意することが重要です。たとえば、コントラクトでセッションをサポートする必要があることが指定されている場合があります。その場合、コントラクトの要件をサポートするようにバインディングを構成する必要があります。そうしないと、サービス実装は機能しなくなります。また、サービスで統合 Windows 認証が必要であり、インターネット インフォメーション サービス \(IIS\) でホストされる場合、サービスが存在する Web アプリケーションでは、統合 Windows 認証を有効にし、匿名サポートを無効にする必要があります。さまざまなサービス ホスト アプリケーションの機能と影響の詳細については、「[ホスティング サービス](../../../docs/framework/wcf/hosting-services.md)」を参照してください。 + +## 参照 + [サービス コントラクトの設計](../../../docs/framework/wcf/designing-service-contracts.md) + [サービス コントラクトの実装](../../../docs/framework/wcf/implementing-service-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/designing-service-contracts.md b/docs/framework/wcf/designing-service-contracts.md new file mode 100644 index 00000000000..8f02a6f9ad8 --- /dev/null +++ b/docs/framework/wcf/designing-service-contracts.md @@ -0,0 +1,291 @@ +--- +title: "サービス コントラクトの設計 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "サービス コントラクト [WCF]" +ms.assetid: 8e89cbb9-ac84-4f0d-85ef-0eb6be0022fd +caps.latest.revision: 34 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 33 +--- +# サービス コントラクトの設計 +ここでは、サービス コントラクトの概要、定義方法、使用できる操作 \(および基になるメッセージ交換に対する影響\)、使用するデータ型、およびシナリオの要件を満たす操作を設計する際に役立つその他の問題について説明します。 + +## サービス コントラクトの作成 + サービスは複数の操作を公開します。[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションでは、メソッドを作成し、 属性でマークすることによって操作を定義します。次に、サービス コントラクトを作成するために、 属性でマークされたインターフェイス内で操作を宣言するか、この属性でマークされたクラス内で操作を定義することにより、操作をグループ化します \(基本的な例については、「[方法 : サービス コントラクトを定義する](../../../docs/framework/wcf/how-to-define-a-wcf-service-contract.md)」を参照してください\)。 + + 属性を持たないメソッドはサービス操作ではないため、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスによって公開されることはありません。 + + ここでは、サービス コントラクトの設計時に決定すべき以下のポイントについて説明します。 + +- クラスとインターフェイスのどちらを使用するか + +- 交換するデータ型の指定方法 + +- 使用できる交換パターンの種類 + +- コントラクトのセキュリティ要件の部分を明示的に作成できるかどうか + +- 操作の入力と出力の制限 + +## クラスとインターフェイス + クラスとインターフェイスは、いずれも機能のグループ化を表します。したがって、どちらを使用しても [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス コントラクトを定義できます。ただし、インターフェイスはサービス コントラクトを直接モデル化するため、インターフェイスを使用することをお勧めします。実装のないインターフェイスは、特定のシグネチャを持つメソッドのグループ化を定義しているにすぎません。サービス コントラクト インターフェイスを実装してはじめて、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスを実装したことになります。 + + サービス コントラクト インターフェイスには、次のようにマネージ インターフェイスのあらゆる利点がもたらされます。 + +- サービス コントラクト インターフェイスでは、他のサービス コントラクト インターフェイスをいくつでも拡張できます。 + +- これらのサービス コントラクト インターフェイスを実装することにより、1 つのクラスでサービス コントラクトをいくつでも実装できます。 + +- インターフェイスの実装を変更することにより、同じサービス コントラクトを引き続き使用したまま、そのコントラクトの実装を変更できます。 + +- 以前のインターフェイスと新しいインターフェイスを実装することで、サービスをバージョン管理できます。以前のクライアントは元のバージョンに接続し、新しいクライアントは新しいバージョンに接続できます。 + +> [!NOTE] +> 他のサービス コントラクト インターフェイスから継承した場合、操作のプロパティ \(名前や名前空間など\) をオーバーライドすることはできません。これを行う場合は、現在のサービス コントラクトに新しい操作を作成します。 + + インターフェイスを使用したサービス コントラクトの作成[!INCLUDE[crexample](../../../includes/crexample-md.md)]、「[方法 : コントラクト インターフェイスを使用してサービスを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-service-with-a-contract-interface.md)」を参照してください。 + + クラスを使用すると、サービス コントラクトの定義と実装を一度に行うことができます。 をそれぞれクラスとクラスのメソッドに直接適用してサービスを作成する方法には、サービスを迅速かつ簡単に作成できるという利点があります。欠点は、マネージ クラスでは複数の継承をサポートしていないため、サービス コントラクトを一度に 1 つしか実装できないことです。また、クラスまたはメソッド シグネチャに変更を加えると、そのサービスのパブリック コントラクトが変更されるため、変更されていないクライアントがサービスを使用できなくなることがあります。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)][サービス コントラクトの実装](../../../docs/framework/wcf/implementing-service-contracts.md). + + クラスを使用してサービス コントラクトの作成と実装を一度に行う例については、「[方法 : コントラクト クラスを使用してサービスを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-wcf-contract-with-a-class.md)」を参照してください。 + + これで、サービス コントラクトを定義する際に、インターフェイスを使用した場合とクラスを使用した場合の違いがわかりました。次に、サービスとクライアント間で受け渡しできるデータを決定します。 + +## パラメーターと戻り値 + 各操作は戻り値とパラメーターを持ちます \(戻り値とパラメーターが `void` の場合も含まれます\)。ただし、オブジェクトへの参照をオブジェクト間で渡すことができるローカル メソッドとは異なり、サービス操作ではオブジェクトへの参照を渡しません。代わりに、オブジェクトのコピーを渡します。 + + これが重要なのは、パラメーターまたは戻り値で使用される各型がシリアル化可能でなければならないためです。つまり、その型のオブジェクトをバイト ストリームに変換でき、バイト ストリームからオブジェクトに変換できる必要があります。 + + プリミティブ型は既定でシリアル化可能であり、.NET Framework の多くの型も同様です。 + +> [!NOTE] +> 操作シグネチャのパラメーター名の値はコントラクトに含まれ、大文字と小文字が区別されます。ローカルでは同じパラメーター名を使用するが、公開されるメタデータでは名前を変更する場合は、 を参照してください。 + +#### データ コントラクト + [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションのようなサービス指向アプリケーションは、マイクロソフトとマイクロソフト以外の両方のプラットフォームで、できる限り多くのクライアント アプリケーションと相互運用できるように設計されています。最大限の相互運用性を実現するために、使用する型を 属性と 属性でマークして、データ コントラクトを作成することをお勧めします。データ コントラクトは、サービス コントラクトの一部であり、サービス操作で交換するデータを記述したものです。 + + データ コントラクトは opt\-in 方式のコントラクトです。つまり、データ コントラクト属性を明示的に適用しない限り、型またはデータ メンバーはシリアル化されません。データ コントラクトはマネージ コードのアクセス スコープとして関連付けられていません。プライベートのデータ メンバーはシリアル化され、パブリックにアクセスされる他の場所に送信されます \(データ コントラクトの基本的な例については、「[方法 : クラスまたは構造体に基本的なデータ コントラクトを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-basic-data-contract-for-a-class-or-structure.md)」を参照してください\)。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] は、基になる SOAP メッセージの定義を処理します。このメッセージにより、操作の機能が有効になるだけでなく、データ型とメッセージ本文との間での双方向のシリアル化が可能になります。使用するデータ型がシリアル化可能であれば、操作の設計時に、基盤となるメッセージ交換インフラストラクチャについて考える必要はありません。 + + 通常の [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションは 属性および 属性を使用して操作のデータ コントラクトを作成しますが、他のシリアル化機構を使用することもできます。、および の各標準機構はすべて、基になる SOAP メッセージへのデータ型のシリアル化を処理します。このメッセージはアプリケーション間でデータ型を伝達します。使用するデータ型で特別なサポートが必要な場合は、さらに多くのシリアル化方法を使用できます。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションのデータ型をシリアル化するためのオプション[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[サービス コントラクトでのデータ転送の指定](../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md)」を参照してください。 + +#### メッセージ交換へのパラメーターと戻り値のマッピング + サービス操作は、特定の標準セキュリティ、トランザクション、およびセッション関連の機能をサポートするためにアプリケーションが必要とするデータに加え、アプリケーション データをやり取りする SOAP メッセージの基になる交換によってサポートされます。このため、サービス操作のシグネチャでは、データ転送と操作に必要な機能をサポートできる、基になる*メッセージ交換パターン* \(MEP: Message Exchange Pattern\) を指定します。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] プログラミング モデルでは、要求\/応答、一方向、および双方向の 3 つのメッセージ パターンを指定できます。 + +##### 要求\/応答 + 要求\/応答パターンでは、要求の送信側 \(クライアント アプリケーション\) は、その要求に関連付けられた応答を受信します。このパターンでは、1 つの操作において、1 つ以上のパラメーターを操作に渡し、戻り値を呼び出し元に返すことができるため、このパターンが既定の MEP となります。たとえば、次の C\# コード例は、文字列を 1 つ受け取り、文字列を返す基本的なサービス操作を示しています。 + +```csharp +[OperationContractAttribute] +string Hello(string greeting); +``` + + 次のコードは同等の Visual Basic コードです。 + +```vb + +Function Hello (ByVal greeting As String) As String +``` + + この操作シグネチャは、基になるメッセージ交換の形式を指定しています。相関関係がない場合、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] は戻り値の対象となる操作を特定できません。 + + 別の基になるメッセージ パターンを指定しない限り、`void` \([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `Nothing`\) を返すサービス操作も要求\/応答メッセージ交換です。クライアントが操作を非同期で呼び出していない場合、通常、メッセージが空の場合でも、戻りメッセージを受信するまでクライアントは処理を中止します。クライアントが応答で空のメッセージを受信するまで制御が戻らない操作の C\# コード例を次に示します。 + +```csharp +[OperationContractAttribute] +void Hello(string greeting); +``` + + 次のコードは同等の Visual Basic コードです。 + +```vb + +Sub Hello (ByVal greeting As String) +``` + + 上記の例では、実行に時間のかかる操作の場合に、クライアントのパフォーマンスと応答性が低下するおそれがありますが、要求\/応答操作で `void` を返す場合でも、この操作には利点があります。最も明らかな利点は、応答メッセージで SOAP エラーを返すことが可能であるということです。これにより、通信と処理のどちらで発生したかに関係なく、サービス関連の何らかのエラー状態が発生したことがわかります。サービス コントラクトに指定された SOAP エラーは、 オブジェクトとしてクライアント アプリケーションに渡されます。このオブジェクトの型パラメーターは、サービス コントラクトで指定された型です。これにより、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスのエラー状態をクライアントに通知しやすくなります。例外、SOAP エラー、およびエラー処理[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[コントラクトおよびサービスのエラーの指定と処理](../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md)」を参照してください。要求\/応答サービスおよびクライアントの例については、「[方法 : 要求\/応答コントラクトを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-request-reply-contract.md)」を参照してください。要求\/応答パターンに関する問題[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[要求\/応答サービス](../../../docs/framework/wcf/feature-details/request-reply-services.md)」を参照してください。 + +##### 一方向 + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス アプリケーションのクライアントが操作の完了まで待機する必要がなく、SOAP エラーも処理しない場合は、操作で一方向メッセージ パターンを指定できます。一方向操作では、クライアントが操作を呼び出し、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] がメッセージをネットワークに書き込んだら、クライアントは処理を続行できます。通常、これは、送信メッセージで送信するデータが膨大な量でない限り、\(データ送信時にエラーが発生しなければ\) クライアントはほぼすぐに実行を続けることを意味します。この種のメッセージ交換パターンでは、クライアントからサービス アプリケーションへのイベントのような動作をサポートします。 + + 1 つのメッセージを送信し、何も受信しないメッセージ交換では、`void` 以外の戻り値を指定したサービス操作をサポートすることはできません。この場合、 例外がスローされます。 + + 戻りメッセージがないということは、処理または通信時のエラーを示すために SOAP エラーを返すこともできないということです \(操作が一方向操作の場合にエラー情報を伝達するには、双方向メッセージ交換パターンが必要です\)。 + + `void` を返す操作で一方向メッセージ交換を指定するには、次の C\# コード例に示すように、 プロパティを `true` に設定します。 + +```csharp +[OperationContractAttribute(IsOneWay=true)] +void Hello(string greeting); +``` + + 次のコードは同等の Visual Basic コードです。 + +```vb + +Sub Hello (ByVal greeting As String) +``` + + このメソッドは、前述の要求\/応答の例と同じです。ただし、 プロパティを `true` に設定するということは、メソッドは同じでも、サービス操作は戻りメッセージを送信せず、送信メッセージがチャネル レイヤーに渡されると、すぐにクライアントに制御が戻ることを意味します。例については、「[方法 : 一方向コントラクトを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-one-way-contract.md)」を参照してください。一方向デザイン パターン[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[一方向サービス](../../../docs/framework/wcf/feature-details/one-way-services.md)」を参照してください。 + +##### 双方向 + 双方向パターンの特徴は、一方向メッセージングと要求\/応答メッセージングのどちらを使用しているかに関係なく、サービスとクライアントが共に独立して、相互にメッセージを送信できるという点です。二方向通信のこの形式は、サービスがクライアントと直接通信する必要がある場合や、イベントのような動作など、メッセージを交換するどちらの側も非同期で動作できるようにする場合に役立ちます。 + + 双方向パターンでは、クライアントと通信するための機構が別途必要になるため、要求\/応答パターンや一方向パターンに比べると若干複雑になります。 + + 双方向コントラクトを設計する場合、コールバック コントラクトも設計し、そのコールバック コントラクトの型を、サービス コントラクトをマークする 属性の プロパティに割り当てる必要があります。 + + 双方向パターンを実装するには、クライアントで呼び出されるメソッド宣言を含む 2 つ目のインターフェイスを作成する必要があります。 + + サービス、およびそのサービスにアクセスするクライアントの作成方法[!INCLUDE[crexample](../../../includes/crexample-md.md)]、「[方法 : 双方向コントラクトを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md)」および「[方法 : 双方向コントラクトを使用してサービスにアクセスする](../../../docs/framework/wcf/feature-details/how-to-access-services-with-a-duplex-contract.md)」を参照してください。実際に動作するサンプルについては、「[二重](../../../docs/framework/wcf/samples/duplex.md)」を参照してください。双方向コントラクトの使用に関する問題[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[双方向サービス](../../../docs/framework/wcf/feature-details/duplex-services.md)」を参照してください。 + +> [!CAUTION] +> サービスは、双方向メッセージを受信すると、その受信メッセージの `ReplyTo` 要素を参照して応答の送信先を決定します。メッセージの受信に使用するチャネルがセキュリティで保護されていない場合、信頼関係のないクライアントが対象コンピューターの `ReplyTo` を使用して悪意のあるメッセージを送信し、その対象コンピューターのサービス拒否 \(DOS: Denial Of Service\) を引き起こすおそれがあります。 + +##### Out パラメーターと Ref パラメーター + ほとんどの場合、`in` パラメーター \([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `ByVal`\) および `out` パラメーターと `ref` パラメーター \([!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] では `ByRef`\) を使用できます。`out` パラメーターと `ref` パラメーターは、操作からデータが返されることを示すため、操作シグネチャが `void` を返す場合でも、次のような操作シグネチャによって要求\/応答操作が必要であることを指定します。 + +```csharp +[ServiceContractAttribute] +public interface IMyContract +{ + [OperationContractAttribute] + public void PopulateData(ref CustomDataType data); +} +``` + + 次のコードは同等の Visual Basic コードです。 + + \[Visual Basic\] + +```vb + _ +Public Interface IMyContract + _ + Public Sub PopulateData(ByRef data As CustomDataType) +End Interface +``` + + 唯一の例外は、シグネチャに特定の構造体が含まれている場合です。たとえば、 バインディングを使用してクライアントと通信できるのは、操作の宣言に使用されたメソッドが `void` を返す場合だけです。戻り値、`ref` パラメーター、または `out` パラメーターのいずれであるかに関係なく、出力値を指定することはできません。 + + また、`out` パラメーターまたは `ref` パラメーターを使用する場合、操作には基になる応答メッセージが必要です。このメッセージが変更されたオブジェクトを返します。操作が一方向操作の場合、実行時に 例外がスローされます。 + +### コントラクトでのメッセージ保護レベルの指定 + コントラクトの設計時に、コントラクトを実装するサービスのメッセージ保護レベルも決定する必要があります。これは、メッセージ セキュリティをコントラクトのエンドポイントのバインディングに適用する場合にのみ必要です。バインディングのセキュリティが無効になっている場合 \(つまり、システム指定のバインディングで の値が に設定されている場合\)、コントラクトのメッセージ保護レベルを決定する必要はありません。ほとんどの場合、メッセージ レベルのセキュリティが適用されたシステム指定のバインディングは、十分な保護レベルを備えているため、操作ごとまたはメッセージごとに保護レベルを検討する必要はありません。 + + 保護レベルは、サービスをサポートするメッセージ \(またはメッセージ部分\) が署名されるのか、署名および暗号化されるのか、または署名と暗号化なしで送信されるのかを指定する値です。保護レベルは、さまざまなスコープ \(サービス レベル、特定の操作、その操作内のメッセージ、またはメッセージ部分\) で設定できます。あるスコープで設定された値は、明示的にオーバーライドしない限り、そのスコープよりも小さなスコープの既定値になります。コントラクトに必要とされる最小限の保護レベルをバインディング構成で提供できない場合は、例外がスローされます。保護レベルの値がコントラクトで明示的に設定されていない場合、バインディングのメッセージ セキュリティが有効であれば、バインディング構成によってすべてのメッセージの保護レベルが制御されます。これが既定の動作です。 + +> [!IMPORTANT] +> 一般に、コントラクトのさまざまなスコープを完全な保護レベルである よりも下のレベルに明示的に設定するかどうかは、パフォーマンスの向上と引き換えに、ある程度のセキュリティで妥協できるかどうかという判断によって決まります。このような場合、操作および操作で交換するデータの価値に焦点を絞って判断を下す必要があります。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)][サービスのセキュリティ保護](../../../docs/framework/wcf/securing-services.md). + + たとえば、次のコード例では、 も、コントラクトの プロパティも設定していません。 + +```csharp +[ServiceContract] +public interface ISampleService +{ + [OperationContractAttribute] + public string GetString(); + + [OperationContractAttribute] + public int GetInt(); +} +``` + + 次のコードは同等の Visual Basic コードです。 + + \[Visual Basic\] + +```vb + _ +Public Interface ISampleService + + _ + Public Function GetString()As String + + _ + Public Function GetData() As Integer + +End Interface + +``` + + 既定の \(既定の \) を使用するエンドポイントの `ISampleService` 実装とやり取りする場合は、暗号化と署名が既定の保護レベルであるため、すべてのメッセージが暗号化および署名されます。ただし、既定の \(既定の \) を使用して `ISampleService` サービスを使用すると、すべてのメッセージがテキストとして送信されます。これは、このバインディングにはセキュリティがないため、保護レベルが無視されるためです \(つまり、メッセージの暗号化も署名も行われません\)。 に変更すると、これがこのバインディングの既定の保護レベルになるため、これらのメッセージは暗号化および署名されるようになります。 + + コントラクトの保護要件を明示的に指定または調整する場合は、 プロパティ \(またはより小さなスコープの `ProtectionLevel` プロパティのいずれか\) をサービス コントラクトに必要なレベルに設定します。この場合、明示的な設定を使用するには、使用するスコープに少なくともその設定をサポートするバインディングが必要です。たとえば、次のコード例では、`GetGuid` 操作の の値を明示的に指定しています。 + +```csharp +[ServiceContract] +public interface IExplicitProtectionLevelSampleService +{ + [OperationContractAttribute] + public string GetString(); + + [OperationContractAttribute(ProtectionLevel=ProtectionLevel.None)] + public int GetInt(); + [OperationContractAttribute(ProtectionLevel=ProtectionLevel.EncryptAndSign)] + public int GetGuid(); +} +``` + + 次のコードは同等の Visual Basic コードです。 + +```vb + _ +Public Interface IExplicitProtectionLevelSampleService + _ + Public Function GetString() As String + End Function + + _ + Public Function GetInt() As Integer + End Function + + _ + Public Function GetGuid() As Integer + End Function + +End Interface + +``` + + この `IExplicitProtectionLevelSampleService` コントラクトを実装し、既定の \(既定の \) を使用するエンドポイントを持つサービスの動作は次のようになります。 + +- `GetString` 操作のメッセージは、暗号化および署名されます。 + +- `GetInt` 操作のメッセージは、暗号化も署名もされない \(プレーン\) テキストとして送信されます。 + +- `GetGuid` 操作の は、暗号化および署名されたメッセージで返されます。 + + 保護レベルとその使用方法[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[保護レベルの理解](../../../docs/framework/wcf/understanding-protection-level.md)」を参照してください。セキュリティ[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[サービスのセキュリティ保護](../../../docs/framework/wcf/securing-services.md)」を参照してください。 + +##### 操作シグネチャのその他の要件 + アプリケーションの一部の機能では、特定の種類の操作シグネチャを必要とします。たとえば、 バインディングは、永続的なサービスとクライアントをサポートします。永続的なサービスとクライアントでは、通信の途中でアプリケーションを再起動し、メッセージを失うことなく、アプリケーションが中止された場所を検出できます \([!INCLUDE[crdefault](../../../includes/crdefault-md.md)][WCF のキュー](../../../docs/framework/wcf/feature-details/queues-in-wcf.md).\)ただし、永続的操作では、`in` パラメーターを 1 つしか受け取ることができず、戻り値を持つこともできません。 + + もう 1 つの例として、操作における 型の使用が挙げられます。 パラメーターにはメッセージの本文全体が含まれるため、入力または出力 \(つまり、`ref` パラメーター、`out` パラメーター、または戻り値\) が 型である場合、操作で指定された入力または出力に限定する必要があります。また、パラメーターまたは戻り値の型は のいずれかである必要があります。ストリーム[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[大規模データとストリーミング](../../../docs/framework/wcf/feature-details/large-data-and-streaming.md)」を参照してください。 + +##### 名前、名前空間、および隠ぺい + コントラクトおよび操作の定義内の .NET 型の名前や名前空間は、コントラクトが WSDL に変換されるとき、およびコントラクト メッセージが作成および送信されるときに重要になります。したがって、サービス コントラクトの名前と名前空間は、 などの、すべてのサポート対象コントラクト属性や、他のコントラクト属性の `Name` プロパティと `Namespace` プロパティを使用して明示的に設定することを強くお勧めします。 + + この 1 つの結果として、名前と名前空間が明示的に設定されていない場合、アセンブリで IL 隠ぺいを使用すると、コントラクトの型名と名前空間が変更され、その結果、WSDL が変更され、通常はネットワークでのメッセージ交換に失敗します。コントラクトの名前と名前空間を明示的に設定せずに隠ぺいを使用する場合は、 属性と 属性を使用して、コントラクトの型名と名前空間が変更されないようにします。 + +## 参照 + [方法 : 要求\/応答コントラクトを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-request-reply-contract.md) + [方法 : 一方向コントラクトを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-one-way-contract.md) + [方法 : 双方向コントラクトを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md) + [サービス コントラクトでのデータ転送の指定](../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md) + [コントラクトおよびサービスのエラーの指定と処理](../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) + [セッションの使用](../../../docs/framework/wcf/using-sessions.md) + [同期操作と非同期操作](../../../docs/framework/wcf/synchronous-and-asynchronous-operations.md) + [信頼できるサービス](../../../docs/framework/wcf/reliable-services.md) + [サービスとトランザクション](../../../docs/framework/wcf/services-and-transactions.md) \ No newline at end of file diff --git a/docs/framework/wcf/developing-service-oriented-applications-with-wcf.md b/docs/framework/wcf/developing-service-oriented-applications-with-wcf.md new file mode 100644 index 00000000000..27f3e8313d0 --- /dev/null +++ b/docs/framework/wcf/developing-service-oriented-applications-with-wcf.md @@ -0,0 +1,29 @@ +--- +title: "WCF でのサービス指向アプリケーションの開発 | Microsoft Docs" +ms.custom: "" +ms.date: "12/14/2016" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "サービス指向のアプリ [.NET Framework]" + - "WCF" + - "Windows Communication Foundation" +ms.assetid: 96aad289-58bc-4389-89d0-b09dfc4d5c58 +caps.latest.revision: 2 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +--- +# WCF でのサービス指向アプリケーションの開発 +このセクションでは、サービス指向アプリケーションを構築するための統一プログラミング モデルを提供する Windows Communication Foundation \(WCF\) について説明します。 これを使用して開発者は、プラットフォーム間を統合し、既存のコンポーネントと相互運用する、セキュリティで保護された信頼性の高いトランザクション型のソリューションを構築できます。 + +## このセクションの内容 + [Windows Communication Foundation \(WCF\)](http://go.microsoft.com/fwlink/?LinkId=228205) + +## 参照 + [開発ガイド](../../../docs/framework/development-guide.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/TOC.md b/docs/framework/wcf/diagnostics/TOC.md new file mode 100644 index 00000000000..9f658561afb --- /dev/null +++ b/docs/framework/wcf/diagnostics/TOC.md @@ -0,0 +1,9 @@ +# [メッセージ フローの概要](message-flow-overview.md) +# [サービスの配置](deploying-services.md) +# [アプリケーションの構成](configuring-your-application.md) +# [メッセージ ログ](message-logging.md) +# [ServiceModel 登録ツール](servicemodel-registration-tool.md) +# [管理と診断](index.md) +# [メッセージ ログを参照する](viewing-message-logs.md) +# [メッセージ ログ記録のセキュリティの考慮事項](security-concerns-for-message-logging.md) +# [メッセージ ログの構成](configuring-message-logging.md) diff --git a/docs/framework/wcf/diagnostics/configuring-message-logging.md b/docs/framework/wcf/diagnostics/configuring-message-logging.md new file mode 100644 index 00000000000..6134a861504 --- /dev/null +++ b/docs/framework/wcf/diagnostics/configuring-message-logging.md @@ -0,0 +1,176 @@ +--- +title: "メッセージ ログの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "メッセージ ログ [WCF]" +ms.assetid: 0ff4c857-8f09-4b85-9dc0-89084706e4c9 +caps.latest.revision: 40 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 40 +--- +# メッセージ ログの構成 +ここでは、さまざまなシナリオでのメッセージ ログの構成方法を示します。 + +## メッセージ ログの有効化 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、既定で、メッセージを記録しません。メッセージ ログをアクティブにするには、トレース リスナーを `System.ServiceModel.MessageLogging` トレース ソースに追加し、構成ファイルで `` 要素の属性を設定する必要があります。 + + 次の例は、ログを有効にして追加オプションを指定する方法を示しています。 + +``` + + + + + + + + + + + + + + + +``` + + メッセージ ログ設定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[トレースとメッセージ ログの推奨設定](../../../../docs/framework/wcf/diagnostics/tracing/recommended-settings-for-tracing-and-message-logging.md)」を参照してください。 + + `add` を使用して、使用するリスナーの名前と型を指定することができます。この例の構成では、リスナーに "messages" という名前を付け、使用する型として標準の .NET Framework トレース リスナー \(`System.Diagnostics.XmlWriterTraceListener`\) を追加しています。`System.Diagnostics.XmlWriterTraceListener` を使用する場合は、構成ファイルで出力ファイルの場所と名前を指定する必要があります。指定するには、`initializeData` をログ ファイルの名前に設定します。それ以外の場合、例外がスローされます。また、既定のファイルにログを出力するカスタム リスナーを実装することもできます。 + +> [!NOTE] +> メッセージ ログはディスク領域にアクセスするため、ディスクに書き込む特定のサービスのメッセージ数を制限する必要があります。メッセージ数が上限に達すると、情報レベルでのトレースが生成され、すべてのメッセージ ログ処理が停止します。 + + ログ レベルと追加オプションについては、「ログ レベルとオプション」のセクションで説明します。 + + `source` の `switchValue` 属性は、トレースに対してのみ有効です。`switchValue` 属性を `System.ServiceModel.MessageLogging` トレース ソースに対して次のように指定しても無効です。 + +``` + +``` + + トレース ソースを無効にする場合は、代わりに `messageLogging` 要素の `logMessagesAtServiceLevel` 属性、`logMalformedMessages` 属性、および `logMessagesAtTransportLevel` 属性を使用する必要があります。これらすべての属性を `false` に設定します。この設定を行うには、構成エディター UI インターフェイスで前のコード例の構成ファイルを使用するか、または WMI を使用します。構成エディター ツール[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[構成エディター ツール \(SvcConfigEditor.exe\)](../../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md)」を参照してください。WMI [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[診断用の WMI \(Windows Management Instrumentation\) の使用](../../../../docs/framework/wcf/diagnostics/wmi/index.md)」を参照してください。 + +## ログ レベルとオプション + 受信メッセージの場合は、メッセージが形成された直後、サービス レベルでメッセージがユーザー コードで処理される直前、および正しくないメッセージが検出されたときに、ログが記録されます。 + + 送信メッセージの場合は、メッセージがユーザー コードから出力された直後およびメッセージがネットワークに出力される直前に、ログが記録されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、サービスとトランスポートの 2 種類のレベルでメッセージを記録します。不正なメッセージも記録されます。3 つのカテゴリは互いに独立しており、構成で個別に有効にすることができます。 + + `messageLogging` 要素の `logMessagesAtServiceLevel`、`logMalformedMessages`、および `logMessagesAtTransportLevel` の各属性を設定することによって、ログ レベルを制御することができます。 + +### サービス レベル + このレイヤーでは、ユーザー コードに入力 \(受信時\) される直前、またはユーザー コードから出力 \(送信時\) される直前のメッセージが記録されます。フィルターを定義した場合は、そのフィルターと一致するメッセージだけが記録されます。それ以外の場合は、サービス レベルのすべてのメッセージが記録されます。このレベルでは、インフラストラクチャ メッセージ \(トランザクション、ピア チャネル、およびセキュリティ\) も記録されます。ただし、信頼できるメッセージング メッセージは記録されません。ストリーム メッセージの場合は、ヘッダーだけが記録されます。また、セキュリティで保護されたメッセージもこのレベルで復号化されて記録されます。 + +### トランスポート レベル + このレイヤーで記録されるメッセージは、ネットワーク上での転送に向けてエンコードできる状態になっているもの、および転送後にデコードできる状態になっているものです。フィルターを定義した場合は、そのフィルターと一致するメッセージだけが記録されます。それ以外の場合は、トランスポート レイヤーのすべてのメッセージが記録されます。このレイヤーでは、信頼できるメッセージング メッセージを含むすべてのインフラストラクチャ メッセージが記録されます。ストリーム メッセージの場合は、ヘッダーだけが記録されます。また、セキュリティで保護されたメッセージも、HTTPS などのセキュリティで保護されたトランスポートを使用している場合を除き、暗号化された状態でこのレベルで記録されます。 + +### 不正レベル + 不正なメッセージとは、処理の任意の段階で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] スタックによって拒否されたメッセージのことです。正しくないメッセージは、そのままの状態で記録されます。暗号化されていれば、暗号化されたままで、適切でない XML も、そのままになります。`maxSizeOfMessageToLog` は、CDATA として記録されるメッセージのサイズを定義します。`maxSizeOfMessageToLog` の既定値は 256 K です。この属性[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「他のオプション」のセクションを参照してください。 + +### その他のオプション + ログ レベルに加えて、次のオプションを指定することができます。 + +- 全体メッセージの記録 \(`logEntireMessage` 属性\) : この値は、全体メッセージ \(メッセージ ヘッダーと本文\) を記録するかどうかを指定します。既定値は、`false` で、ヘッダーだけ記録することを意味します。この設定は、サービス メッセージ ログ レベルおよびトランスポート メッセージ ログ レベルに影響を与えます。 + +- 記録するメッセージの最大数 \(`maxMessagesToLog` 属性\) : この値は、記録するメッセージの最大数を指定します。すべてのメッセージ \(サービス メッセージ、トランスポート メッセージ、および不正メッセージ\) が、このクォータに対してカウントされます。クォータに達すると、トレースが出力され、それ以上メッセージは記録されません。既定値は 10000 です。 + +- 記録するメッセージの最大サイズ \(`maxSizeOfMessageToLog` 属性\) : この値は、記録するメッセージの最大サイズをバイト単位で指定します。サイズ制限を超えたメッセージは記録されず、そのメッセージに対して何の処理も実行されません。この設定は、すべてのトレース レベルに影響を与えます。ServiceModel トレースがオンの場合は、最初の記録ポイントで警告レベル トレース \(ServiceModelSend\* または TransportReceive\) が出力され、ユーザーに通知します。サービス レベルとトランスポート レベルのメッセージの既定値は 256 K ですが、正しくないメッセージの既定値は 4 K です。 + + > [!CAUTION] + > `maxSizeOfMessageToLog` と照合するために計算されるメッセージ サイズは、シリアル化される前のメモリ上でのメッセージ サイズです。このサイズは、記録されるメッセージ文字列の実際の長さとは異なります。実際のサイズよりも大きい場合がほとんどです。その結果、メッセージが記録されない場合があります。`maxSizeOfMessageToLog` 属性をメッセージの見積もりサイズよりも 10% 大きく設定することによって、この現象を回避することができます。また、不正メッセージを記録する場合は、メッセージ ログに使用する実際のディスク領域を、`maxSizeOfMessageToLog` で指定した値の最大 5 倍にすることができます。 + + 構成ファイルでトレース リスナーを定義していない場合は、ログ レベルの指定に関係なくログ出力は生成されません。 + + このセクションで説明されている属性などのメッセージ ログ オプションは、実行時に WMI \(Windows Management Instrumentation\) を使用して変更できます。変更するには、`LogMessagesAtServiceLevel`、`LogMessagesAtTransportLevel`、および `LogMalformedMessages` のブール型プロパティを公開する [AppDomainInfo](../../../../docs/framework/wcf/diagnostics/wmi/appdomaininfo.md) インスタンスにアクセスします。そのため、メッセージ ログ用のトレース リスナーを構成していても、これらのオプションを構成で `false` に設定している場合は、後でアプリケーションを実行しているときに `true` に変更できます。これで、メッセージ ログが実行時に有効になります。同様に、構成ファイルでメッセージ ログを有効にしている場合は、実行時に WMI を使用して無効にできます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][診断用の WMI \(Windows Management Instrumentation\) の使用](../../../../docs/framework/wcf/diagnostics/wmi/index.md). + + メッセージ ログの `source` フィールドは、要求メッセージを送信または受信する際に要求\/応答または一方向の要求については、サービス モデル レイヤーまたはトランスポート レイヤーで、または正しくないメッセージの場合に、メッセージを記録するコンテキストを指定します。 + + 正しくないメッセージの場合、`source` は、`Malformed` になります。それ以外の場合、source には、コンテキストに基づいて、以下の値が設定されます。 + + 要求\/応答の場合 + +||Send Request|Receive Request|Send Reply|Receive Reply| +|-|------------------|---------------------|----------------|-------------------| +|Service Model layer|サービス

レベル

Send

要求|サービス

レベル

Receive

要求|サービス

レベル

Send

Reply|サービス

レベル

Receive

Reply| +|Transport layer|トランスポート

Send|トランスポート

Receive|トランスポート

Send|トランスポート

Receive| + + 一方向の要求の場合 + +||Send Request|Receive Request| +|-|------------------|---------------------| +|Service Model layer|サービス

レベル

Send

データグラム|サービス

レベル

Receive

データグラム| +|Transport layer|トランスポート

Send|トランスポート

Receive| + +## メッセージ フィルター + メッセージ フィルターは、`diagnostics` 構成セクションの `messageLogging` 構成要素で定義されます。これらは、サービス レベルとトランスポート レベルで適用されます。1 つ以上のフィルターを定義した場合は、少なくとも 1 つのフィルターと一致するメッセージだけが記録されます。フィルターを定義しなかった場合は、すべてのメッセージが通過します。 + + フィルターは、完全な XPath 構文をサポートし、構成ファイルでの出現順に適用されます。構文的に不正なフィルターによって、構成例外が発生します。 + + フィルターは、フィルターに一致するかどうかを確認できる、XPath DOM 内のノードの最大数を制限する `nodeQuota` 属性を使用することで、安全機能も提供します。 + + 次の例は、SOAP ヘッダー セクションがあるメッセージだけを記録するフィルターの設定方法を示します。 + +``` + + + + /soap:Envelope/soap:Header + + + +``` + + フィルターは、メッセージの本文には適用できません。メッセージの本文を操作しようとするフィルターは、フィルターの一覧から削除されます。その場合には、このことを示すイベントも出力されます。たとえば、次のフィルターは、フィルター テーブルから削除されます。 + +``` +/s:Envelope/s:Body[contains(text(), "Hello")] +``` + +## カスタム リスナーの構成 + 追加オプションでカスタム リスナーを構成することもできます。カスタム リスナーは、記録を行う前に、アプリケーション固有の PII 要素をメッセージからフィルター処理するのに役立ちます。次の例は、カスタム リスナーの構成を示しています。 + +``` + + + + + + + + + +``` + + `type` 属性は、型のアセンブリ修飾名に設定する必要があることに注意してください。 + +## 参照 + [\](../../../../docs/framework/configure-apps/file-schema/wcf/messagelogging.md) + [メッセージ ログ](../../../../docs/framework/wcf/diagnostics/message-logging.md) + [トレースとメッセージ ログの推奨設定](../../../../docs/framework/wcf/diagnostics/tracing/recommended-settings-for-tracing-and-message-logging.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/configuring-your-application.md b/docs/framework/wcf/diagnostics/configuring-your-application.md new file mode 100644 index 00000000000..55ad1e349d2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/configuring-your-application.md @@ -0,0 +1,42 @@ +--- +title: "アプリケーションの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a2f995b0-669d-4721-b00f-4561ec7eb6a4 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# アプリケーションの構成 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、.NET 構成システムを使用して、コンピューターとアプリケーションのスコープでサービスを構成できるようにします。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって定義された構成設定は、`` セクション グループにあります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの構成方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、次のトピックを参照してください。 + +- [サービスの構成](../../../../docs/framework/wcf/configuring-services.md) + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) + + アプリケーション定義の構成設定は、`` セクション グループで定義されます。.NET 構成ファイルのアプリケーション設定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[\](http://go.microsoft.com/fwlink/?LinkId=95159)」を参照してください。 + +## 構成エディターの使用 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] [構成エディター ツール \(SvcConfigEditor.exe\)](../../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md) のグラフィカル ユーザー インターフェイスを使用して、管理者と開発者は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの構成設定を作成および変更できます。このツールを使用すると、XML 構成ファイルを直接編集せずに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のバインディング、動作、サービス、および診断の設定を管理できます。 + +## Visual Studio の構成ファイルの編集 + [!INCLUDE[vs_current_short](../../../../includes/vs-current-short-md.md)] で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス プロジェクトの構成ファイルを編集するには、**ソリューション エクスプローラー**で構成ファイルを右クリックし、**\[WCF 構成の編集\]** コンテキスト メニュー項目を選択します。これにより[構成エディター ツール \(SvcConfigEditor.exe\)](../../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md) が起動されます。 + +> [!NOTE] +> [!INCLUDE[vs_current_short](../../../../includes/vs-current-short-md.md)] の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Web サービス プロジェクトの構成ファイルを**ソリューション エクスプローラー**で右クリックして編集する場合は、**\[Edit WCF Config\]** コンテキスト メニュー項目が表示されません。この問題を回避するには、**\[ツール\]** メニューをクリックし、**\[WCF Service Config Editor\]** を選択します。この操作を行った後は、構成ファイルを右クリックして **\[Edit WCF Config\]** コンテキスト メニュー項目を表示できます。 + +## 参照 + [構成エディター ツール \(SvcConfigEditor.exe\)](../../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md) + [サービスの構成](../../../../docs/framework/wcf/configuring-services.md) + [\](../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/deploying-services.md b/docs/framework/wcf/diagnostics/deploying-services.md new file mode 100644 index 00000000000..0b854978a86 --- /dev/null +++ b/docs/framework/wcf/diagnostics/deploying-services.md @@ -0,0 +1,27 @@ +--- +title: "サービスの配置 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ac361bfb-017d-4da9-a2d7-fc0fb72d65bb +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# サービスの配置 +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションをランタイム環境に配置する方法を説明します。 + +## アプリケーションのホスト環境の選択 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、マネージ コードをサポートする任意の Windows プロセスで実行されるように設計されています。アクティブにするには、サービスを作成してそのコンテキストと有効期間を制御するランタイム環境内で、サービスをホストする必要があります。ホスティング環境の範囲は、最も単純なコンソール アプリケーション内、Windows サービスやインターネット インフォメーション サービス \(IIS\) のようなサーバー環境、あるいは Windows アクティブ化サービス \(WAS\) で管理されるワーカー プロセス内での実行にまで及びます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションに対する各種のホスティング環境については、「[ホスティング サービス](../../../../docs/framework/wcf/hosting-services.md)」を参照してください。 + +## 参照 + [ホスト](../../../../docs/framework/wcf/feature-details/hosting.md) + [ホスティング サービス](../../../../docs/framework/wcf/hosting-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/131-bufferpoolallocation.md b/docs/framework/wcf/diagnostics/etw/131-bufferpoolallocation.md new file mode 100644 index 00000000000..a47e1c422a9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/131-bufferpoolallocation.md @@ -0,0 +1,37 @@ +--- +title: "131 - BufferPoolAllocation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1ddaf86a-a453-4862-9269-8fa38a47c8b9 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 131 - BufferPoolAllocation +BufferPoolAllocation + +## プロパティ + +||| +|-|-| +|ID|131| +|キーワード|Infrastructure| +|レベル|Verbose| +|チャネル|DEBUG| + +## 説明 + このイベントは、BufferPool がバッファーにメモリを割り当てるときに生成されます + +## Message + プールが %1 バイトを割り当てています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/132-bufferpoolchangequota.md b/docs/framework/wcf/diagnostics/etw/132-bufferpoolchangequota.md new file mode 100644 index 00000000000..917d87b484d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/132-bufferpoolchangequota.md @@ -0,0 +1,37 @@ +--- +title: "132 - BufferPoolChangeQuota | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fe18d326-4220-46fc-9109-cec3d1530281 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 132 - BufferPoolChangeQuota +BufferPoolChangeQuota + +## プロパティ + +||| +|-|-| +|ID|132| +|キーワード|インフラストラクチャ| +|レベル|詳細| +|チャネル|デバッグ| + +## 説明 + このイベントは、バッファー プールに対するクォータが変更された後に生成されます。 + +## メッセージ + BufferPool のサイズ: %1、クォータの変更: %2。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/133-actionitemscheduled.md b/docs/framework/wcf/diagnostics/etw/133-actionitemscheduled.md new file mode 100644 index 00000000000..86af28b073a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/133-actionitemscheduled.md @@ -0,0 +1,35 @@ +--- +title: "133 - ActionItemScheduled | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a226aeea-69f4-438c-909b-05bd68b99220 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 133 - ActionItemScheduled +## プロパティ + +||| +|-|-| +|ID|133| +|キーワード|スレッド| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、IO スレッド スケジューラのコールバック呼び出しが開始されると生成されます。 + +## メッセージ + IO スレッド スケジューラのコールバックが呼び出されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/134-actionitemcallbackinvoked.md b/docs/framework/wcf/diagnostics/etw/134-actionitemcallbackinvoked.md new file mode 100644 index 00000000000..973ff3ce58b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/134-actionitemcallbackinvoked.md @@ -0,0 +1,35 @@ +--- +title: "134 - ActionItemCallbackInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9547f8a6-8f75-4c64-9d6d-391385557d8c +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 134 - ActionItemCallbackInvoked +## プロパティ + +||| +|-|-| +|ID|134| +|キーワード|スレッド| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、IO スレッド スケジューラのコールバック呼び出しが終了すると生成されます。 + +## メッセージ + IO スレッド スケジューラのコールバックが呼び出されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1400-channelinitializationtimeout.md b/docs/framework/wcf/diagnostics/etw/1400-channelinitializationtimeout.md new file mode 100644 index 00000000000..f5f9cee0873 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1400-channelinitializationtimeout.md @@ -0,0 +1,35 @@ +--- +title: "1400 - ChannelInitializationTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 95de02d3-7986-4bbc-934f-c9dc4a809682 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1400 - ChannelInitializationTimeout +## プロパティ + +||| +|-|-| +|ID|1400| +|キーワード|ServiceModel| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、チャネルの初期化がタイムアウトしたときに生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1401-closetimeout.md b/docs/framework/wcf/diagnostics/etw/1401-closetimeout.md new file mode 100644 index 00000000000..a1ee7298121 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1401-closetimeout.md @@ -0,0 +1,35 @@ +--- +title: "1401 - CloseTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 612c7292-999e-4c3e-97f3-87b0ef0c2739 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1401 - CloseTimeout +## プロパティ + +||| +|-|-| +|ID|1401| +|キーワード|ServiceModel| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントはタイムアウト時に生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1402-idletimeout.md b/docs/framework/wcf/diagnostics/etw/1402-idletimeout.md new file mode 100644 index 00000000000..97713f1b7a1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1402-idletimeout.md @@ -0,0 +1,35 @@ +--- +title: "1402 - IdleTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 581233aa-ce1a-49b6-9497-8bff88664036 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1402 - IdleTimeout +## プロパティ + +||| +|-|-| +|ID|1402| +|キーワード|ServiceModel| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントはアイドル タイムアウト時に生成されます。 + +## メッセージ + %1 接続プール キー: %2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1403-leasetimeout.md b/docs/framework/wcf/diagnostics/etw/1403-leasetimeout.md new file mode 100644 index 00000000000..79e0a6c751d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1403-leasetimeout.md @@ -0,0 +1,35 @@ +--- +title: "1403 - LeaseTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3908748b-f060-46a2-8043-49e09218d2e5 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1403 - LeaseTimeout +## プロパティ + +||| +|-|-| +|ID|1403| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントはリース タイムアウト時に生成されます。 + +## メッセージ + %1 接続プール キー: %2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1405-opentimeout.md b/docs/framework/wcf/diagnostics/etw/1405-opentimeout.md new file mode 100644 index 00000000000..ba991883157 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1405-opentimeout.md @@ -0,0 +1,35 @@ +--- +title: "1405 - OpenTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 45470cf9-b84c-4e5e-86e2-2eb7722cbc1a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1405 - OpenTimeout +## プロパティ + +||| +|-|-| +|ID|1405| +|キーワード|ServiceModel| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントはオープン タイムアウト時に生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1406-receivetimeout.md b/docs/framework/wcf/diagnostics/etw/1406-receivetimeout.md new file mode 100644 index 00000000000..ef276b67ca6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1406-receivetimeout.md @@ -0,0 +1,35 @@ +--- +title: "1406 - ReceiveTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c2543f9b-94fb-406e-8e96-1110b0f338f3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1406 - ReceiveTimeout +## プロパティ + +||| +|-|-| +|ID|1406| +|キーワード|ServiceModel| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは受信タイムアウト時に生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1407-sendtimeout.md b/docs/framework/wcf/diagnostics/etw/1407-sendtimeout.md new file mode 100644 index 00000000000..c58052985c7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1407-sendtimeout.md @@ -0,0 +1,35 @@ +--- +title: "1407 - SendTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1df1c98e-89ac-441a-b943-6dd2d41a37ed +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1407 - SendTimeout +## プロパティ + +||| +|-|-| +|ID|1407| +|キーワード|ServiceModel| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは送信タイムアウト時に生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1409-inactivitytimeout.md b/docs/framework/wcf/diagnostics/etw/1409-inactivitytimeout.md new file mode 100644 index 00000000000..a9096a0186c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1409-inactivitytimeout.md @@ -0,0 +1,35 @@ +--- +title: "1409 - InactivityTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 38fb99b7-b00d-4b55-b9d0-48bd17c441aa +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1409 - InactivityTimeout +## プロパティ + +||| +|-|-| +|ID|1409| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは無通信タイムアウト時に生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1416-maxreceivedmessagesizeexceeded.md b/docs/framework/wcf/diagnostics/etw/1416-maxreceivedmessagesizeexceeded.md new file mode 100644 index 00000000000..94d503ad6b4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1416-maxreceivedmessagesizeexceeded.md @@ -0,0 +1,35 @@ +--- +title: "1416 - MaxReceivedMessageSizeExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ee5562dd-29e1-432d-9c78-0bdc3ae365c4 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1416 - MaxReceivedMessageSizeExceeded +## プロパティ + +||| +|-|-| +|ID|1416| +|キーワード|クォータ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージの最大受信サイズを超えたときに生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1417-maxsentmessagesizeexceeded.md b/docs/framework/wcf/diagnostics/etw/1417-maxsentmessagesizeexceeded.md new file mode 100644 index 00000000000..28dbfdc5822 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1417-maxsentmessagesizeexceeded.md @@ -0,0 +1,35 @@ +--- +title: "1417 - MaxSentMessageSizeExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3cb7c2f0-97bf-4ee9-a037-ed64a25a18fd +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1417 - MaxSentMessageSizeExceeded +## プロパティ + +||| +|-|-| +|ID|1417| +|キーワード|クォータ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージの最大送信サイズを超えたときに生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1418-maxoutboundconnectionsperendpointexceeded.md b/docs/framework/wcf/diagnostics/etw/1418-maxoutboundconnectionsperendpointexceeded.md new file mode 100644 index 00000000000..4e1db8c1359 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1418-maxoutboundconnectionsperendpointexceeded.md @@ -0,0 +1,35 @@ +--- +title: "1418 - MaxOutboundConnectionsPerEndpointExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d0739a83-376a-43a5-946c-1b6641f28e51 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1418 - MaxOutboundConnectionsPerEndpointExceeded +## プロパティ + +||| +|-|-| +|ID|1418| +|キーワード|クォータ| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ポイントごとの最大送信接続数を超えたときに生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1419-maxpendingconnectionsexceeded.md b/docs/framework/wcf/diagnostics/etw/1419-maxpendingconnectionsexceeded.md new file mode 100644 index 00000000000..456d55ce69f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1419-maxpendingconnectionsexceeded.md @@ -0,0 +1,35 @@ +--- +title: "1419 - MaxPendingConnectionsExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e48e438e-f4c1-4f4f-85d6-c6c820a81df9 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1419 - MaxPendingConnectionsExceeded +## プロパティ + +||| +|-|-| +|ID|1419| +|キーワード|クォータ| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、保留接続の最大数に達したときに生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1420-readerquotaexceeded.md b/docs/framework/wcf/diagnostics/etw/1420-readerquotaexceeded.md new file mode 100644 index 00000000000..5b081057f21 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1420-readerquotaexceeded.md @@ -0,0 +1,35 @@ +--- +title: "1420 - ReaderQuotaExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d2e8cd7e-f7aa-476c-9857-1e04c4b52dc0 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1420 - ReaderQuotaExceeded +## プロパティ + +||| +|-|-| +|ID|1420| +|キーワード|クォータ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、リーダーのクォータを超えたときに生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1422-negotiatetokenauthenticatorstatecacheexceeded.md b/docs/framework/wcf/diagnostics/etw/1422-negotiatetokenauthenticatorstatecacheexceeded.md new file mode 100644 index 00000000000..4e677eecae1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1422-negotiatetokenauthenticatorstatecacheexceeded.md @@ -0,0 +1,35 @@ +--- +title: "1422 - NegotiateTokenAuthenticatorStateCacheExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bfabfb52-ebfb-489f-bdb4-408536c24e52 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1422 - NegotiateTokenAuthenticatorStateCacheExceeded +## プロパティ + +||| +|-|-| +|ID|1422| +|キーワード|クォータ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、トークン認証システムのネゴシエートの状態のキャッシュを超えたときに生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1423-negotiatetokenauthenticatorstatecacheratio.md b/docs/framework/wcf/diagnostics/etw/1423-negotiatetokenauthenticatorstatecacheratio.md new file mode 100644 index 00000000000..fd2c300e453 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1423-negotiatetokenauthenticatorstatecacheratio.md @@ -0,0 +1,35 @@ +--- +title: "1423 - NegotiateTokenAuthenticatorStateCacheRatio | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6301db99-bb23-40d1-b8df-f0ae1793ce68 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1423 - NegotiateTokenAuthenticatorStateCacheRatio +## プロパティ + +||| +|-|-| +|ID|1423| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、トークン認証システムのネゴシエートの状態のキャッシュの比率に関する情報が提供されるときに生成されます。 + +## メッセージ + トークン認証システムのネゴシエートの状態のキャッシュ比率: %1\/%2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1424-securitysessionratio.md b/docs/framework/wcf/diagnostics/etw/1424-securitysessionratio.md new file mode 100644 index 00000000000..6970684568d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1424-securitysessionratio.md @@ -0,0 +1,35 @@ +--- +title: "1424 - SecuritySessionRatio | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fd960f10-dd43-42d4-a415-75eae0cb7cac +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1424 - SecuritySessionRatio +## プロパティ + +||| +|-|-| +|ID|1424| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、セキュリティ セッションの比率に関する情報を提供するために生成されます。 + +## メッセージ + セキュリティ セッションの比率: %1\/%2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1430-pendingconnectionsratio.md b/docs/framework/wcf/diagnostics/etw/1430-pendingconnectionsratio.md new file mode 100644 index 00000000000..3a8b55f34db --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1430-pendingconnectionsratio.md @@ -0,0 +1,35 @@ +--- +title: "1430 - PendingConnectionsRatio | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c9df7da9-26e7-444f-9e36-86de1676442d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1430 - PendingConnectionsRatio +## プロパティ + +||| +|-|-| +|ID|1430| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、保留中の接続の比率に関する情報を提供するために生成されます。 + +## メッセージ + 保留中の接続の比率: %1\/%2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1431-concurrentcallsratio.md b/docs/framework/wcf/diagnostics/etw/1431-concurrentcallsratio.md new file mode 100644 index 00000000000..83be985bfa2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1431-concurrentcallsratio.md @@ -0,0 +1,35 @@ +--- +title: "1431 - ConcurrentCallsRatio | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 571dc259-78a7-4e91-9a7e-b83644d20229 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1431 - ConcurrentCallsRatio +## プロパティ + +||| +|-|-| +|ID|1431| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、同時呼び出しの比率に関する情報を提供するために生成されます。 + +## メッセージ + 同時セッションの比率: %1\/%2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1432-concurrentsessionsratio.md b/docs/framework/wcf/diagnostics/etw/1432-concurrentsessionsratio.md new file mode 100644 index 00000000000..aeb8b78cab6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1432-concurrentsessionsratio.md @@ -0,0 +1,35 @@ +--- +title: "1432 - ConcurrentSessionsRatio | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a8b6efce-cf46-485f-9cd6-58126b627032 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1432 - ConcurrentSessionsRatio +## プロパティ + +||| +|-|-| +|ID|1432| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、同時実行セッションの比率に関する情報を提供するために生成されます。 + +## メッセージ + 同時セッションの比率: %1\/%2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1433-outboundconnectionsperendpointratio.md b/docs/framework/wcf/diagnostics/etw/1433-outboundconnectionsperendpointratio.md new file mode 100644 index 00000000000..ea7597babe4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1433-outboundconnectionsperendpointratio.md @@ -0,0 +1,35 @@ +--- +title: "1433 - OutboundConnectionsPerEndpointRatio | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5f17f20d-7035-45f7-85a6-a6743f77fe70 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1433 - OutboundConnectionsPerEndpointRatio +## プロパティ + +||| +|-|-| +|ID|1433| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、エンドポイントごとの送信接続の比率に関する情報を提供するために生成されます。 + +## メッセージ + エンドポイントごとの送信接続の比率: %1\/%2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1436-pendingmessagesperchannelratio.md b/docs/framework/wcf/diagnostics/etw/1436-pendingmessagesperchannelratio.md new file mode 100644 index 00000000000..309db0d8c29 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1436-pendingmessagesperchannelratio.md @@ -0,0 +1,35 @@ +--- +title: "1436 - PendingMessagesPerChannelRatio | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1f5b779b-1ca1-4653-b79b-db31df8fbb8b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1436 - PendingMessagesPerChannelRatio +## プロパティ + +||| +|-|-| +|ID|1436| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、チャネルごとの保留メッセージの比率に関する情報を提供するために生成されます。 + +## メッセージ + チャネルごとの保留メッセージの比率: %1\/%2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1438-concurrentinstancesratio.md b/docs/framework/wcf/diagnostics/etw/1438-concurrentinstancesratio.md new file mode 100644 index 00000000000..3e455c0964a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1438-concurrentinstancesratio.md @@ -0,0 +1,35 @@ +--- +title: "1438 - ConcurrentInstancesRatio | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3234f307-22c9-4961-97a8-88d7c77e9945 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1438 - ConcurrentInstancesRatio +## プロパティ + +||| +|-|-| +|ID|1438| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、同時インスタンスの比率に関する情報を提供するために生成されます。 + +## メッセージ + 同時インスタンスの比率: %1\/%2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1439-pendingacceptsatzero.md b/docs/framework/wcf/diagnostics/etw/1439-pendingacceptsatzero.md new file mode 100644 index 00000000000..91b413c02e0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1439-pendingacceptsatzero.md @@ -0,0 +1,35 @@ +--- +title: "1439 - PendingAcceptsAtZero | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a57d550d-70f5-4f63-9ba7-e0f666b8f0ac +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1439 - PendingAcceptsAtZero +## プロパティ + +||| +|-|-| +|ID|1439| +|キーワード|クォータ| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、保留中の受け入れがない場合に生成されます。 + +## メッセージ + 保留中の受け入れはありません + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1441-maxsessionsizereached.md b/docs/framework/wcf/diagnostics/etw/1441-maxsessionsizereached.md new file mode 100644 index 00000000000..3e5fe36e887 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1441-maxsessionsizereached.md @@ -0,0 +1,35 @@ +--- +title: "1441 - MaxSessionSizeReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ccf51232-cdbc-4004-a4b9-aed0c256dfe4 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1441 - MaxSessionSizeReached +## プロパティ + +||| +|-|-| +|ID|1441| +|キーワード|クォータ| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、セッションの最大サイズに達したときに生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1442-receiveretrycountreached.md b/docs/framework/wcf/diagnostics/etw/1442-receiveretrycountreached.md new file mode 100644 index 00000000000..d88df3393fb --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1442-receiveretrycountreached.md @@ -0,0 +1,35 @@ +--- +title: "1442 - ReceiveRetryCountReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9f66cd1c-950b-4073-a1c9-62eba33dbc22 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1442 - ReceiveRetryCountReached +## プロパティ + +||| +|-|-| +|ID|1442| +|キーワード|クォータ| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、MSMQ メッセージが受信再試行回数に達したときに生成されます。 + +## メッセージ + ID '%1' の MSMQ メッセージが受信再試行回数に達しました + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1443-maxretrycyclesexceededmsmq.md b/docs/framework/wcf/diagnostics/etw/1443-maxretrycyclesexceededmsmq.md new file mode 100644 index 00000000000..855b60727b9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1443-maxretrycyclesexceededmsmq.md @@ -0,0 +1,35 @@ +--- +title: "1443 - MaxRetryCyclesExceededMsmq | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5fb5b119-7ae0-4c88-b3ab-3679063707d9 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1443 - MaxRetryCyclesExceededMsmq +## プロパティ + +||| +|-|-| +|ID|1443| +|キーワード|クォータ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、MSMQ メッセージで再試行サイクルの最大数を超過すると生成されます。 + +## メッセージ + ID '%1' の MSMQ メッセージが最大再試行サイクルを超えました + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1445-readpoolmiss.md b/docs/framework/wcf/diagnostics/etw/1445-readpoolmiss.md new file mode 100644 index 00000000000..c6f478bd5f7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1445-readpoolmiss.md @@ -0,0 +1,35 @@ +--- +title: "1445 - ReadPoolMiss | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6a8fa431-42a2-4a77-9a04-a269236e83ad +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1445 - ReadPoolMiss +## プロパティ + +||| +|-|-| +|ID|1445| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、読み取りプールの不足時に生成されます。 + +## メッセージ + 新しい '%1' を作成しました + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1446-writepoolmiss.md b/docs/framework/wcf/diagnostics/etw/1446-writepoolmiss.md new file mode 100644 index 00000000000..9e90e7286f1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1446-writepoolmiss.md @@ -0,0 +1,35 @@ +--- +title: "1446 - WritePoolMiss | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 48dd3aa2-46d5-4bbf-8ce7-68e1b684b7b7 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1446 - WritePoolMiss +## プロパティ + +||| +|-|-| +|ID|1446| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、書き込みプールの不足時に生成されます。 + +## メッセージ + 新しい '%1' を作成しました + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/1451-maxretrycyclesexceeded.md b/docs/framework/wcf/diagnostics/etw/1451-maxretrycyclesexceeded.md new file mode 100644 index 00000000000..dcb8e8d02fd --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/1451-maxretrycyclesexceeded.md @@ -0,0 +1,35 @@ +--- +title: "1451 - MaxRetryCyclesExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0b2466f5-a6cb-43b7-aff1-70327ffbdbc1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 1451 - MaxRetryCyclesExceeded +## プロパティ + +||| +|-|-| +|ID|1451| +|キーワード|クォータ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、再試行サイクルの最大数を超過すると生成されます。 + +## メッセージ + 1% + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/201-clientmessageinspectorafterreceiveinvoked.md b/docs/framework/wcf/diagnostics/etw/201-clientmessageinspectorafterreceiveinvoked.md new file mode 100644 index 00000000000..072a6cbec3d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/201-clientmessageinspectorafterreceiveinvoked.md @@ -0,0 +1,41 @@ +--- +title: "201 - ClientMessageInspectorAfterReceiveInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9ff637f1-cc26-4400-ab9b-546f70e5057d +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 201 - ClientMessageInspectorAfterReceiveInvoked +## プロパティ + +||| +|-|-| +|ID|201| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、クライアント メッセージ インスペクターで Service Model が `AfterReceiveReply` メソッドを呼び出した後に生成されます。 + +## メッセージ + ディスパッチャーが型 '%1' の ClientMessageInspector で 'AfterReceiveReply' を呼び出しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|TypeName|`xs:string`|呼び出されたインスペクターの型の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/202-clientmessageinspectorbeforesendinvoked.md b/docs/framework/wcf/diagnostics/etw/202-clientmessageinspectorbeforesendinvoked.md new file mode 100644 index 00000000000..9aa07cdc7a7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/202-clientmessageinspectorbeforesendinvoked.md @@ -0,0 +1,41 @@ +--- +title: "202 - ClientMessageInspectorBeforeSendInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0b02ca82-8a55-45e3-b2e2-ddfe28a7269c +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 202 - ClientMessageInspectorBeforeSendInvoked +## プロパティ + +||| +|-|-| +|ID|202| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、クライアント メッセージ インスペクターで Service Model が `BeforeSendRequest` メソッドを呼び出した後に生成されます。 + +## メッセージ + ディスパッチャーが型 '%1' の ClientMessageInspector で 'BeforeSendRequest' を呼び出しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|TypeName|`xs:string`|呼び出されたインスペクターの型の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/203-clientparameterinspectoraftercallinvoked.md b/docs/framework/wcf/diagnostics/etw/203-clientparameterinspectoraftercallinvoked.md new file mode 100644 index 00000000000..6ad7cb1d42d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/203-clientparameterinspectoraftercallinvoked.md @@ -0,0 +1,41 @@ +--- +title: "203 - ClientParameterInspectorAfterCallInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b9592212-07e2-43e0-8b00-affd195cf55a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 203 - ClientParameterInspectorAfterCallInvoked +## プロパティ + +||| +|-|-| +|ID|203| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、クライアント パラメーター インスペクターで Service Model が `AfterCall` メソッドを呼び出した後に生成されます。 + +## メッセージ + ディスパッチャーが型 '%1' の ClientParameterInspector で 'AfterCall' を呼び出しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|TypeName|`xs:string`|呼び出されたインスペクターの型の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。 その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。 例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/204-clientparameterinspectorbeforecallinvoked.md b/docs/framework/wcf/diagnostics/etw/204-clientparameterinspectorbeforecallinvoked.md new file mode 100644 index 00000000000..861198b90dd --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/204-clientparameterinspectorbeforecallinvoked.md @@ -0,0 +1,41 @@ +--- +title: "204 - ClientParameterInspectorBeforeCallInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8253555a-9002-4565-8ede-33d7a33a895f +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 204 - ClientParameterInspectorBeforeCallInvoked +## プロパティ + +||| +|-|-| +|ID|204| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、クライアント パラメーター インスペクターで Service Model が `BeforeCall` メソッドを呼び出した後に生成されます。 + +## メッセージ + ディスパッチャーが型 '%1' の ClientParameterInspector で 'BeforeCall' を呼び出しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|TypeName|`xs:string`|呼び出されたインスペクターの型の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/205-operationinvoked.md b/docs/framework/wcf/diagnostics/etw/205-operationinvoked.md new file mode 100644 index 00000000000..5fab608c6da --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/205-operationinvoked.md @@ -0,0 +1,42 @@ +--- +title: "205 - OperationInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9c8d6c90-dfa5-4ae0-a589-96679a8fb3ba +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 205 - OperationInvoked +## プロパティ + +||| +|-|-| +|ID|205| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービス モデルの既定の `OperationInvoker` がメソッドの呼び出しを開始する直前に生成されます。 + +## メッセージ + OperationInvoker が '%1' メソッドを呼び出しました。呼び出し元の情報: '%2'。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Method Name|`xs:string`|`OperationInvoker` によって呼び出されたメソッドの CLR 名。| +|Caller Information|`xs:string`|クライアントの IP アドレスとポート番号。'\:\<ポート番号\>' の形式で指定します。この 2 つの値は、操作コンテキスト内の 'System.ServiceModel.Channels.RemoteEndpointMessageProperty' メッセージ プロパティから取得します。TCP 以外のバインドの場合、この値は `null` になることに注意してください。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/206-errorhandlerinvoked.md b/docs/framework/wcf/diagnostics/etw/206-errorhandlerinvoked.md new file mode 100644 index 00000000000..659acf96865 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/206-errorhandlerinvoked.md @@ -0,0 +1,43 @@ +--- +title: "206 - ErrorHandlerInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 97340f4d-4e09-4e42-a17a-982b3868dbcf +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 206 - ErrorHandlerInvoked +## プロパティ + +||| +|-|-| +|ID|206| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービス操作中に発生した例外を処理する機会が `ErrorHandler` に与えられた後に、生成されます。 + +## メッセージ + ディスパッチャーが型 '%1' の ErrorHandler を呼び出し、種類 '%3' の例外がスローされました。ErrorHandled \=\= '%2'。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|TypeName|`xs:string`|呼び出された `ErrorHandler` の型の CLR FullName。| +|Handled|`xs:unsignedByte`|エラー ハンドラーがエラーを処理した場合は `true`。それ以外の場合は `false`。| +|ExceptionTypeName|`xs:string`|処理対象である例外の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/207-faultproviderinvoked.md b/docs/framework/wcf/diagnostics/etw/207-faultproviderinvoked.md new file mode 100644 index 00000000000..0d1256e75f0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/207-faultproviderinvoked.md @@ -0,0 +1,42 @@ +--- +title: "207 - FaultProviderInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b730d903-01c2-4deb-85a4-da12f8a21fe4 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 207 - FaultProviderInvoked +## プロパティ + +||| +|-|-| +|ID|207| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、`FaultProvider` が呼び出された後に生成されます。 + +## メッセージ + ディスパッチャーが型 '%1' の FaultProvider を呼び出し、種類 '%2' の例外がスローされました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|TypeName|`xs:string`|呼び出された `FaultProvider` の型の CLR FullName。| +|ExceptionTypeName|`xs:string`|`FaultProvider` の操作対象である例外の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。 その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。 例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/208-messageinspectorafterreceiveinvoked.md b/docs/framework/wcf/diagnostics/etw/208-messageinspectorafterreceiveinvoked.md new file mode 100644 index 00000000000..f0cfda6a924 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/208-messageinspectorafterreceiveinvoked.md @@ -0,0 +1,41 @@ +--- +title: "208 - MessageInspectorAfterReceiveInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dfb5f7b0-4346-4949-8104-351726b1f502 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 208 - MessageInspectorAfterReceiveInvoked +## プロパティ + +||| +|-|-| +|ID|208| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ インスペクターで Service Model が `AfterReceive` メソッドを呼び出した後に生成されます。 + +## メッセージ + ディスパッチャーが型 '%1' の MessageInspector で 'AfterReceiveReply' を呼び出しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|TypeName|`xs:string`|呼び出された `MessageInspector` の型の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。 その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。 例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/209-messageinspectorbeforesendinvoked.md b/docs/framework/wcf/diagnostics/etw/209-messageinspectorbeforesendinvoked.md new file mode 100644 index 00000000000..18dbb45c322 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/209-messageinspectorbeforesendinvoked.md @@ -0,0 +1,41 @@ +--- +title: "209 - MessageInspectorBeforeSendInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7d710875-fb77-4463-978b-bc86d59d84cd +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 209 - MessageInspectorBeforeSendInvoked +## プロパティ + +||| +|-|-| +|ID|209| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ インスペクターで Service Model が `BeforeSend` メソッドを呼び出した後に生成されます。 + +## メッセージ + ディスパッチャーが型 '%1' の MessageInspector で 'BeforeSendRequest' を呼び出しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|TypeName|`xs:string`|呼び出された `MessageInspector` の型の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/210-messagethrottleexceeded.md b/docs/framework/wcf/diagnostics/etw/210-messagethrottleexceeded.md new file mode 100644 index 00000000000..f5dd52a2a6b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/210-messagethrottleexceeded.md @@ -0,0 +1,42 @@ +--- +title: "210 - MessageThrottleExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 24ca08ea-c11c-4753-946e-98aa820f8711 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 210 - MessageThrottleExceeded +## プロパティ + +||| +|-|-| +|ID|210| +|キーワード|EndToEndMonitoring、HealthMonitoring、Troubleshooting、ServiceModel| +|レベル|Warning \(警告\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、3 つの主要なサービス スロットルの 1 つを超過したときに生成されます。このイベントが生成されるのは、最初にスロットル制限を超過したときのみです。たとえば、同時呼び出しのスロットル制限が 10 の場合は、11 番目の同時呼び出しが `MessageThrottleExceeded` イベントになります。12 番目の呼び出しが別のイベントになることはありません。また、イベント ストリームが煩雑になるのを避けるため、制限値の前後のアクティビティの結果が別のイベントになることはありません。この例では、2 つの呼び出しが完了した場合、9 つの同時呼び出しが行われます。続いて 2 つの呼び出しが行われた場合は、現在の値が再び 11 になります。これは、別のイベントにはなりません。現在の値がスロットル制限の 70% になると、アクティビティの遅れを示す別のイベントが生成されます。以降のアクティビティが制限を超えた場合は、別の `MessageThrottleExceeded` イベントが生成されます。この例では、同時呼び出しの数が 7 になり、再び 11 に達すると、別の `MessageThrottleExceeded` イベントが生成されます。 + +## メッセージ + スロットル '%1' の '%2' の制限に達しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Throttle Name|`xs:string`|超過したスロットルの名前。`MaxConcurrentCalls`、`MaxConcurrentInstances`、または `MaxConcurrentSessions`。| +|Limit|`xs:long`|現在構成されている、スロットルの制限。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/211-parameterinspectoraftercallinvoked.md b/docs/framework/wcf/diagnostics/etw/211-parameterinspectoraftercallinvoked.md new file mode 100644 index 00000000000..bf22d1eb17f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/211-parameterinspectoraftercallinvoked.md @@ -0,0 +1,41 @@ +--- +title: "211 - ParameterInspectorAfterCallInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c0e21297-10b8-4456-a0e1-e019145cd5ac +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 211 - ParameterInspectorAfterCallInvoked +## プロパティ + +||| +|-|-| +|ID|211| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、Service Model が `AfterCall` メソッドを `ParameterInspector` で呼び出した後に生成されます。 + +## メッセージ + ディスパッチャーが型 '%1' の ParameterInspector で 'AfterCall' を呼び出しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|型の名前|`xs:string`|呼び出された `ParameterInspector` の型の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。 その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。 例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/212-parameterinspectorbeforecallinvoked.md b/docs/framework/wcf/diagnostics/etw/212-parameterinspectorbeforecallinvoked.md new file mode 100644 index 00000000000..70ccac5afd4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/212-parameterinspectorbeforecallinvoked.md @@ -0,0 +1,41 @@ +--- +title: "212 - ParameterInspectorBeforeCallInvoked | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 063fc8d2-ceac-4c18-8368-de84f2c78035 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 212 - ParameterInspectorBeforeCallInvoked +## プロパティ + +||| +|-|-| +|ID|212| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、Service Model が `BeforeCall` メソッドを `ParameterInspector` で呼び出した後に生成されます。 + +## メッセージ + ディスパッチャーが型 '%1' の ParameterInspector で 'BeforeCall' を呼び出しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|TypeName|`xs:string`|呼び出されたインスペクターの型の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/213-servicehoststarted.md b/docs/framework/wcf/diagnostics/etw/213-servicehoststarted.md new file mode 100644 index 00000000000..a6c0489e8de --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/213-servicehoststarted.md @@ -0,0 +1,41 @@ +--- +title: "213 - ServiceHostStarted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a6f7facc-342f-46bb-9d52-a470178ba6bb +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 213 - ServiceHostStarted +## プロパティ + +||| +|-|-| +|ID|213| +|キーワード|EndToEndMonitoring、HealthMonitoring、Troubleshooting、ServiceHost| +|レベル|LogAlways \(常にログ\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、Web でホストされているサービス ホストが起動されるときに生成されます。通常、サービスがメッセージによってアクティブにされた時点で発生します。また、サービスが自動的に開始するように構成されている場合も発生します。 + +## メッセージ + ServiceHost は '%1' で開始されています。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Service Type Name|`xs:string`|サービス実装の型の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/214-operationcompleted.md b/docs/framework/wcf/diagnostics/etw/214-operationcompleted.md new file mode 100644 index 00000000000..e8de147fcb8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/214-operationcompleted.md @@ -0,0 +1,42 @@ +--- +title: "214 - OperationCompleted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a6287eef-023f-4816-813c-1802c82366df +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 214 - OperationCompleted +## プロパティ + +||| +|-|-| +|ID|214| +|キーワード|HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|レベル|Information \(情報\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービス モデルの既定の `OperationInvoker` が、メソッドから例外がスローされることなく、メソッドへの呼び出しを完了したときに生成されます。 + +## メッセージ + OperationInvoker がメソッド '%1' への呼び出しを完了しました。メソッド呼び出し時間は '%2' ミリ秒でした。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Method Name|`xs:string`|`OperationInvoker` によって呼び出されたメソッドの CLR 名。| +|Duration|`xs:long`|`OperationInvoker` でメソッドを呼び出すのにかかった時間 \(ミリ秒単位\)。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/215-messagereceivedbytransport.md b/docs/framework/wcf/diagnostics/etw/215-messagereceivedbytransport.md new file mode 100644 index 00000000000..7a01bc90439 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/215-messagereceivedbytransport.md @@ -0,0 +1,44 @@ +--- +title: "215 - MessageReceivedByTransport | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb32aa60-5207-4711-9f08-110e8ac327e5 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 215 - MessageReceivedByTransport +## プロパティ + +||| +|-|-| +|ID|215| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、TCP ベースのトランスポートがメッセージを受信するときに発生します。 トランスポート レベルでは、1 つの操作に対して複数のメッセージが、クライアントとサービス間で交換されることがあります。 これはインフラストラクチャの動作によるもので、セキュリティがその一例です。 そのため、生成される `MessageReceivedByTransport` イベントの数が、サービスのバインディングとその構成に応じて異なります。 + +> [!NOTE] +> 一方向トランスポートでは、このイベントは発生しません。 + +## メッセージ + トランスポートが '%1' からメッセージを受信しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Listen Address|`xs:string`|メッセージを受信したアドレス。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。 その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。 例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/216-messagesentbytransport.md b/docs/framework/wcf/diagnostics/etw/216-messagesentbytransport.md new file mode 100644 index 00000000000..c712ed2b3ad --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/216-messagesentbytransport.md @@ -0,0 +1,41 @@ +--- +title: "216 - MessageSentByTransport | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 150c3167-4154-4225-8d94-57cc94341233 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 216 - MessageSentByTransport +## プロパティ + +||| +|-|-| +|ID|216| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、TCP ベースのトランスポートがメッセージを送信するときに発生します。トランスポート レベルでは、1 つの操作に対して複数のメッセージが、クライアントとサービス間で交換されることがあります。これはインフラストラクチャの動作によるもので、セキュリティがその一例です。そのため、生成される **MessageSentByTransport** イベントの数が、サービスのバインディングとその構成に応じて異なります。 + +## メッセージ + トランスポートが '%1' にメッセージを送信しました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|DestinationAddress|`xs:string`|要求メッセージが送信されたアドレス。| +|HostReference|xs:string|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/217-clientoperationprepared.md b/docs/framework/wcf/diagnostics/etw/217-clientoperationprepared.md new file mode 100644 index 00000000000..8df49d8bf6a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/217-clientoperationprepared.md @@ -0,0 +1,43 @@ +--- +title: "217 - ClientOperationPrepared | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ad207f04-b038-4f33-95e9-27a361df8ecd +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 217 - ClientOperationPrepared +## プロパティ + +||| +|-|-| +|ID|217| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、操作がサービスに送信される直前に、クライアントによって生成されます。 + +## メッセージ + クライアントは '%2' コントラクトと関連付けられている Action '%1' を実行しています。メッセージは '%3' に送信されます。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Action|`xs:string`|送信メッセージの SOAP アクション ヘッダー。| +|Contract Name|`xs:string`|コントラクトの名前。例: ICalculator。| +|Destination|`xs:string`|メッセージの送信先となるサービス エンドポイントのアドレス。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/218-clientoperationcompleted.md b/docs/framework/wcf/diagnostics/etw/218-clientoperationcompleted.md new file mode 100644 index 00000000000..834306a506b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/218-clientoperationcompleted.md @@ -0,0 +1,43 @@ +--- +title: "218 - ClientOperationCompleted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b069bced-7bb2-4e01-8227-e5dbda17af09 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 218 - ClientOperationCompleted +## プロパティ + +||| +|-|-| +|ID|218| +|キーワード|Troubleshooting、ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ある操作が完了した直後にクライアントによって生成されます。一方向の操作の場合は、メッセージが正常に送信された直後に生成されます。要求 \- 応答の操作の場合は、応答の受信後に生成されます。 + +## メッセージ + クライアントは '%2' コントラクトと関連付けられている Action '%1' の実行を完了しました。メッセージは '%3' に送信されました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Action|xs:string|送信メッセージの SOAP アクション ヘッダー。| +|Contract Name|`xs:string`|コントラクトの名前。例: ICalculator。| +|Destination|`xs:string`|メッセージの送信先のサービス エンドポイントのアドレス。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/219-serviceexception.md b/docs/framework/wcf/diagnostics/etw/219-serviceexception.md new file mode 100644 index 00000000000..43e4731b53d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/219-serviceexception.md @@ -0,0 +1,42 @@ +--- +title: "219 - ServiceException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 81e2efac-39aa-4ed2-85a9-97eb8793b844 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 219 - ServiceException +## プロパティ + +||| +|-|-| +|ID|219| +|キーワード|EndToEndMonitoring、HealthMonitoring、Troubleshooting、ServiceModel| +|レベル|Error \(エラー\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、WCF サービスがハンドルされない例外を検出した場合に生成されます。これには、アクティベーション中のハンドルされない例外、メッセージ処理中のハンドルされない例外、およびユーザー コード内でのハンドルされない例外が含まれます。 + +## メッセージ + メッセージの処理中に種類 '%2' のハンドルされない例外がスローされました。完全な例外 ToString: %1。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|ExceptionToString|`xs:string`|CLR 例外に対して `ToString`\(\) を呼び出した結果。| +|ExceptionTypeName|`xs:string`|例外の型の CLR FullName。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/220-messagesenttotransport.md b/docs/framework/wcf/diagnostics/etw/220-messagesenttotransport.md new file mode 100644 index 00000000000..142152da8cf --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/220-messagesenttotransport.md @@ -0,0 +1,44 @@ +--- +title: "220 - MessageSentToTransport | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aef4e781-240b-45bc-bff8-400053037e71 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 220 - MessageSentToTransport +## プロパティ + +||| +|-|-| +|\[ID\]|220| +|キーワード|EndToEndMonitoring、Troubleshooting、ServiceModel| +|レベル|Information \(情報\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービス モデルがトランスポートにメッセージを送信すると生成されます。 + +> [!NOTE] +> 一方向トランスポートでは、このイベントは発生しません。 + +## メッセージ + ディスパッチャーがトランスポートにメッセージを送信しました。関連付け ID \=\= '%1'。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Correlation ID|`xs:GUID`|サービスまたはクライアントからの `MessageSentToTransport` イベントを、反対側の対応する `MessageReceivedFromTransport` と関連付けるのに使用する、アクティビティ ID。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/221-messagereceivedfromtransport.md b/docs/framework/wcf/diagnostics/etw/221-messagereceivedfromtransport.md new file mode 100644 index 00000000000..b6671c081fd --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/221-messagereceivedfromtransport.md @@ -0,0 +1,41 @@ +--- +title: "221 - MessageReceivedFromTransport | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4995f0d5-c182-4d97-981f-6951da6df1fb +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 221 - MessageReceivedFromTransport +## プロパティ + +||| +|-|-| +|ID|221| +|キーワード|EndToEndMonitoring、Troubleshooting、ServiceModel| +|レベル|Information \(情報\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービス モデルがトランスポートからメッセージを受信すると生成されます。 + +## メッセージ + ディスパッチャーがトランスポートからメッセージを受信しました。関連付け ID \=\= '%1'。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Correlation ID|`xs:GUID`|サービスまたはクライアントからの `MessageSentToTransport` イベントを、反対側の対応する `MessageReceivedFromTransport` と関連付けるのに使用する、アクティビティ ID。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/222-operationfailed.md b/docs/framework/wcf/diagnostics/etw/222-operationfailed.md new file mode 100644 index 00000000000..d8ddd98e397 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/222-operationfailed.md @@ -0,0 +1,42 @@ +--- +title: "222 - OperationFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6b530ded-8f20-4d78-8bfe-1875276df6ba +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 222 - OperationFailed +## プロパティ + +||| +|-|-| +|ID|222| +|キーワード|EndToEndMonitoring、HealthMonitoring、Troubleshooting、ServiceModel| +|レベル|Warning \(警告\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービス モデルの既定の `OperationInvoker` が、そのメソッドを呼び出している間に例外に遭遇すると生成されます。`FaultException` から派生する例外では、このイベントは生成されません。 + +## メッセージ + OperationInvoker によって呼び出されたメソッド '%1' で、ハンドルされない例外がスローされました。メソッド呼び出し時間は '%2' ミリ秒でした。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Method Name|`xs:string`|`OperationInvoker` によって呼び出されたメソッドの CLR 名。| +|Duration|`xs:long`|`OperationInvoker` でメソッドを呼び出すのにかかった時間 \(ミリ秒単位\)。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/223-operationfaulted.md b/docs/framework/wcf/diagnostics/etw/223-operationfaulted.md new file mode 100644 index 00000000000..47d598a820d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/223-operationfaulted.md @@ -0,0 +1,42 @@ +--- +title: "223 - OperationFaulted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2f7d89d7-3a6a-40fe-9610-5424eb6bbf61 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 223 - OperationFaulted +## プロパティ + +||| +|-|-| +|ID|223| +|キーワード|EndToEndMonitoring、HealthMonitoring、Troubleshooting、ServiceModel| +|レベル|Warning \(警告\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービス モデルの既定の `OperationInvoker` が、そのメソッドを呼び出している間に `FaultException` から派生する例外に遭遇すると生成されます。 + +## メッセージ + OperationInvoker によって呼び出されたメソッド '%1' で FaultException がスローされました。メソッド呼び出し時間は '%2' ミリ秒でした。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|MethodName|`xs:string`|`OperationInvoker` によって呼び出されたメソッドの CLR 名。| +|Duration|`xs:long`|`OperationInvoker` でメソッドを呼び出すのにかかった時間 \(ミリ秒単位\)。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/224-messagethrottleatseventypercent.md b/docs/framework/wcf/diagnostics/etw/224-messagethrottleatseventypercent.md new file mode 100644 index 00000000000..71d19114d9a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/224-messagethrottleatseventypercent.md @@ -0,0 +1,42 @@ +--- +title: "224 - MessageThrottleAtSeventyPercent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 82bbbfd7-10d2-41fd-805d-2443b0c1b96b +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 224 - MessageThrottleAtSeventyPercent +## プロパティ + +||| +|-|-| +|ID|224| +|キーワード|EndToEndMonitoring、HealthMonitoring、Troubleshooting、ServiceModel| +|レベル|Warning \(警告\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + `MessageThrottleExceeded` イベントは、主要なサービス スロットルの 1 つを超過したときに生成されます。アクティビティの急増が緩やかになり、スロットルの現在の値が現在の制限の 70% である場合は、このイベントが生成されます。このイベントは、アクティビティが緩やかになったときに一度だけ生成されます。現在の値が 70% の基準付近を上下している \(70、69、70、71、70、69 など\) 場合は、最初に 70% に達したときにイベントが生成されます。このイベントが生成された後にスロットル制限を超えた場合は、`MessageThrottleExceeded` イベントが生成されます。 + +## メッセージ + スロットル '%1' の '%2' の制限は 70%% です。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Throttle Name|`xs:string`|超過したスロットルの名前。`MaxConcurrentCalls`、`MaxConcurrentInstances`、または `MaxConcurrentSessions`。| +|Limit|`xs:long`|現在構成されている、スロットルの制限。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/226-idleservicesclosed.md b/docs/framework/wcf/diagnostics/etw/226-idleservicesclosed.md new file mode 100644 index 00000000000..4a670b55b5c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/226-idleservicesclosed.md @@ -0,0 +1,35 @@ +--- +title: "226 - IdleServicesClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b5e72de3-33c6-46a2-998a-3809b520bb30 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 226 - IdleServicesClosed +## プロパティ + +||| +|-|-| +|ID|226| +|キーワード|HealthMonitoring、WebHost| +|レベル|LogAlways \(常にログ\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、アイドル状態のサービスが閉じられたときに生成されます。 + +## メッセージ + アクティブ化された合計 %2 個のサービスのうち、アイドル状態の %1 個のサービスが閉じられました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/301-userdefinederroroccurred.md b/docs/framework/wcf/diagnostics/etw/301-userdefinederroroccurred.md new file mode 100644 index 00000000000..4f3ce0dcbf0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/301-userdefinederroroccurred.md @@ -0,0 +1,41 @@ +--- +title: "301 - UserDefinedErrorOccurred | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a0285d1c-550f-4c14-9c36-a96e97f1c4e4 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 301 - UserDefinedErrorOccurred +## プロパティ + +||| +|-|-| +|ID|301| +|キーワード|Troubleshooting、HealthMonitoring、UserEvents、ServiceModel、EndToEndMonitoring| +|レベル|Error \(エラー\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ユーザー コードから生成されます。開発者は、カスタム定義のエラー イベントがサービスで発生したときに、このイベントを生成できます。これは、 API を使用して実行できます。また、その API をラップし、このイベントを適切に生成する方法を示す、WCF サンプルもあります。 + +## メッセージ + 名前:'%1'、参照:'%2'、ペイロード:%3 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Name|`xs:string`|イベントのユーザー定義名。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|Payload|`xs:string`|イベントのユーザー定義ペイロード。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/302-userdefinedwarningoccurred.md b/docs/framework/wcf/diagnostics/etw/302-userdefinedwarningoccurred.md new file mode 100644 index 00000000000..f44e6e0e0f0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/302-userdefinedwarningoccurred.md @@ -0,0 +1,41 @@ +--- +title: "302 - UserDefinedWarningOccurred | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8d1f0bf1-0151-45e6-be92-573d397b54de +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 302 - UserDefinedWarningOccurred +## プロパティ + +||| +|-|-| +|ID|302| +|キーワード|Troubleshooting、HealthMonitoring、UserEvents、ServiceModel、EndToEndMonitoring| +|レベル|Warning \(警告\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ユーザー コードから生成されます。開発者は、カスタム定義の警告イベントがサービスで発生したときに、このイベントを生成できます。これは、 API を使用して実行できます。また、その API をラップし、このイベントを適切に生成する方法を示す、WCF サンプルもあります。 + +## メッセージ + 名前:'%1'、参照:'%2'、ペイロード:%3 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Name|`xs:string`|イベントのユーザー定義名。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|Payload|`xs:string`|イベントのユーザー定義ペイロード。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/303-userdefinedinformationeventoccured.md b/docs/framework/wcf/diagnostics/etw/303-userdefinedinformationeventoccured.md new file mode 100644 index 00000000000..8c50af4d75a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/303-userdefinedinformationeventoccured.md @@ -0,0 +1,41 @@ +--- +title: "303 - UserDefinedInformationEventOccured | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5ed5acaf-3755-4417-92c4-4ebc8e854ca1 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 303 - UserDefinedInformationEventOccured +## プロパティ + +||| +|-|-| +|ID|303| +|キーワード|Troubleshooting、HealthMonitoring、UserEvents、ServiceModel、EndToEndMonitoring| +|レベル|Information \(情報\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ユーザー コードから生成されます。開発者は、カスタム定義の情報イベントがサービスで発生したときに、このイベントを生成できます。これは、 API を使用して実行できます。また、その API をラップし、このイベントを適切に生成する方法を示す、WCF サンプルもあります。 + +## メッセージ + 名前:'%1'、参照:'%2'、ペイロード:%3 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Name|`xs:string`|イベントのユーザー定義名。| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|Payload|`xs:string`|イベントのユーザー定義ペイロード。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3300-receivecontextcompletefailed.md b/docs/framework/wcf/diagnostics/etw/3300-receivecontextcompletefailed.md new file mode 100644 index 00000000000..da1377a3927 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3300-receivecontextcompletefailed.md @@ -0,0 +1,35 @@ +--- +title: "3300 - ReceiveContextCompleteFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6d6b3a31-5c12-4886-b682-2d0d86407d82 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3300 - ReceiveContextCompleteFailed +## プロパティ + +||| +|-|-| +|ID|3300| +|キーワード|チャネル| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、受信コンテキストを完了できないときに生成されます。 + +## メッセージ + %1 を完了できませんでした。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3301-receivecontextabandonfailed.md b/docs/framework/wcf/diagnostics/etw/3301-receivecontextabandonfailed.md new file mode 100644 index 00000000000..6c431e52e60 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3301-receivecontextabandonfailed.md @@ -0,0 +1,35 @@ +--- +title: "3301 - ReceiveContextAbandonFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4495e0c4-3518-4a40-a203-760782e2b1f0 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 3301 - ReceiveContextAbandonFailed +## プロパティ + +||| +|-|-| +|ID|3301| +|キーワード|チャネル| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、受信コンテキストを破棄できないときに生成されます。 + +## メッセージ + %1 を破棄できませんでした。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3302-receivecontextfaulted.md b/docs/framework/wcf/diagnostics/etw/3302-receivecontextfaulted.md new file mode 100644 index 00000000000..376f5e94114 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3302-receivecontextfaulted.md @@ -0,0 +1,35 @@ +--- +title: "3302 - ReceiveContextFaulted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: af3d1fc2-40e9-4466-b756-51a582505f3d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3302 - ReceiveContextFaulted +## プロパティ + +||| +|-|-| +|ID|3302| +|キーワード|ServiceModel| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、受信コンテキストでエラーが発生したときに生成されます。 + +## メッセージ + 受信コンテキストでエラーが発生しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3303-receivecontextabandonwithexception.md b/docs/framework/wcf/diagnostics/etw/3303-receivecontextabandonwithexception.md new file mode 100644 index 00000000000..1d9eed8dd96 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3303-receivecontextabandonwithexception.md @@ -0,0 +1,35 @@ +--- +title: "3303 - ReceiveContextAbandonWithException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eae255f8-13fd-4d8e-9f9e-56aea0d588c3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3303 - ReceiveContextAbandonWithException +## プロパティ + +||| +|-|-| +|ID|3303| +|キーワード|チャネル| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、例外によって受信コンテキストの破棄に失敗したときに生成されます。 + +## メッセージ + 例外 %2 が発生したため、%1 が破棄されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3305-clientbasecachedchannelfactorycount.md b/docs/framework/wcf/diagnostics/etw/3305-clientbasecachedchannelfactorycount.md new file mode 100644 index 00000000000..fa50485d5ea --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3305-clientbasecachedchannelfactorycount.md @@ -0,0 +1,35 @@ +--- +title: "3305 - ClientBaseCachedChannelFactoryCount | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6ae6f58f-cee3-4bb1-8402-4445401f3436 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3305 - ClientBaseCachedChannelFactoryCount +## プロパティ + +||| +|-|-| +|ID|3305| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、クライアント ベースでキャッシュされているチャネル ファクトリの数を報告するために生成されます。 + +## メッセージ + キャッシュされたチャネル ファクトリの数は '%1' です。 最大で '%2' 個のチャネル ファクトリをキャッシュできます。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3306-clientbasechannelfactoryagedoutofcache.md b/docs/framework/wcf/diagnostics/etw/3306-clientbasechannelfactoryagedoutofcache.md new file mode 100644 index 00000000000..79bae69616e --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3306-clientbasechannelfactoryagedoutofcache.md @@ -0,0 +1,35 @@ +--- +title: "3306 - ClientBaseChannelFactoryAgedOutofCache | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d8af1dbf-ea3b-4931-94eb-6d21e30a886e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3306 - ClientBaseChannelFactoryAgedOutofCache +## プロパティ + +||| +|-|-| +|ID|3306| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、キャッシュがその上限に達したため、チャネル ファクトリがキャッシュから削除されたときに生成されます。 + +## メッセージ + キャッシュが上限の '%1' に達したため、チャネル ファクトリがキャッシュから削除されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3307-clientbasechannelfactorycachehit.md b/docs/framework/wcf/diagnostics/etw/3307-clientbasechannelfactorycachehit.md new file mode 100644 index 00000000000..ce8d6d75f88 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3307-clientbasechannelfactorycachehit.md @@ -0,0 +1,35 @@ +--- +title: "3307 - ClientBaseChannelFactoryCacheHit | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 93d332af-a666-4fa4-81a3-2db6b1eaf190 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3307 - ClientBaseChannelFactoryCacheHit +## プロパティ + +||| +|-|-| +|ID|3307| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、キャッシュで見つかった一致するチャネル ファクトリが使用されたときに生成されます。 + +## メッセージ + キャッシュで見つかった一致するチャネル ファクトリが使用されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3308-clientbaseusinglocalchannelfactory.md b/docs/framework/wcf/diagnostics/etw/3308-clientbaseusinglocalchannelfactory.md new file mode 100644 index 00000000000..3c541a42c20 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3308-clientbaseusinglocalchannelfactory.md @@ -0,0 +1,35 @@ +--- +title: "3308 - ClientBaseUsingLocalChannelFactory | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f1488c75-38ab-47a0-9951-852488683f2a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3308 - ClientBaseUsingLocalChannelFactory +## プロパティ + +||| +|-|-| +|ID|3308| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、キャッシュのチャネル ファクトリを使用しないときに生成されます。 + +## メッセージ + キャッシュ内のチャネル ファクトリは使用されません \(つまり、インスタンスのキャッシュは無効になっています\)。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3309-querycompositionexecuted.md b/docs/framework/wcf/diagnostics/etw/3309-querycompositionexecuted.md new file mode 100644 index 00000000000..4707f2def05 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3309-querycompositionexecuted.md @@ -0,0 +1,35 @@ +--- +title: "3309 - QueryCompositionExecuted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a7ae2267-b478-4115-8317-a89ce4ced65d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3309 - QueryCompositionExecuted +## プロパティ + +||| +|-|-| +|ID|3309| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、クエリの構成が実行されるときに生成されます。 + +## メッセージ + '%1' を使用したクエリの構成が要求 URI: '%2' で実行されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3310-dispatchfailed.md b/docs/framework/wcf/diagnostics/etw/3310-dispatchfailed.md new file mode 100644 index 00000000000..85445f009b0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3310-dispatchfailed.md @@ -0,0 +1,35 @@ +--- +title: "3310 - DispatchFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6b8d7d9f-c6d9-4275-9121-a47519094124 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3310 - DispatchFailed +## プロパティ + +||| +|-|-| +|ID|3310| +|キーワード|ServiceModel| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ディスパッチに失敗したときに生成されます。 + +## メッセージ + '%1' 操作のディスパッチでエラーが発生しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3311-dispatchsuccessful.md b/docs/framework/wcf/diagnostics/etw/3311-dispatchsuccessful.md new file mode 100644 index 00000000000..78486276bb7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3311-dispatchsuccessful.md @@ -0,0 +1,35 @@ +--- +title: "3311 - DispatchSuccessful | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6995fdd4-520e-46b9-a825-a3001dcdb0ef +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3311 - DispatchSuccessful +## プロパティ + +||| +|-|-| +|ID|3311| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ディスパッチが成功したときに生成されます。 + +## メッセージ + '%1' 操作が正常にディスパッチされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3312-messagereadbyencoder.md b/docs/framework/wcf/diagnostics/etw/3312-messagereadbyencoder.md new file mode 100644 index 00000000000..c5d102d7d2d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3312-messagereadbyencoder.md @@ -0,0 +1,35 @@ +--- +title: "3312 - MessageReadByEncoder | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cdcc8e3d-e2aa-4c5e-a580-bdf581a66709 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3312 - MessageReadByEncoder +## プロパティ + +||| +|-|-| +|ID|3312| +|キーワード|チャネル| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、メッセージがエンコーダーによって読み取られたときに生成されます。 + +## メッセージ + サイズ '%1' バイトのメッセージがエンコーダーによって読み取られました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3313-messagewrittenbyencoder.md b/docs/framework/wcf/diagnostics/etw/3313-messagewrittenbyencoder.md new file mode 100644 index 00000000000..542b2b387b6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3313-messagewrittenbyencoder.md @@ -0,0 +1,35 @@ +--- +title: "3313 - MessageWrittenByEncoder | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: abdb7db5-373e-4862-b53d-befbb0949e32 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3313 - MessageWrittenByEncoder +## プロパティ + +||| +|-|-| +|ID|3313| +|キーワード|チャネル| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、メッセージがエンコーダーによって書き込まれたときに生成されます。 + +## メッセージ + サイズ '%1' バイトのメッセージがエンコーダーによって書き込まれました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3314-sessionidletimeout.md b/docs/framework/wcf/diagnostics/etw/3314-sessionidletimeout.md new file mode 100644 index 00000000000..6c65ef2a779 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3314-sessionidletimeout.md @@ -0,0 +1,35 @@ +--- +title: "3314 - SessionIdleTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a00f104e-3bea-4185-b7b0-ec1ed8212a74 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3314 - SessionIdleTimeout +## プロパティ + +||| +|-|-| +|ID|3314| +|キーワード|ServiceModel| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、アイドル チャネルのセッションが中止されたときに生成されます。 + +## メッセージ + URI: '%1' へのアイドル チャネルのセッションを中止しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3319-socketacceptenqueued.md b/docs/framework/wcf/diagnostics/etw/3319-socketacceptenqueued.md new file mode 100644 index 00000000000..8ac991ae7fd --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3319-socketacceptenqueued.md @@ -0,0 +1,35 @@ +--- +title: "3319 - SocketAcceptEnqueued | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 87afe601-5e25-4964-b9c5-aed6d3d35e1c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3319 - SocketAcceptEnqueued +## プロパティ + +||| +|-|-| +|ID|3319| +|キーワード|TCP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、接続の受け入れを開始したときに生成されます。 + +## メッセージ + 接続の受け入れを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3320-socketaccepted.md b/docs/framework/wcf/diagnostics/etw/3320-socketaccepted.md new file mode 100644 index 00000000000..b0b3e863024 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3320-socketaccepted.md @@ -0,0 +1,35 @@ +--- +title: "3320 - SocketAccepted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b98b0066-b78c-4c11-9567-43dbbbd254ce +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3320 - SocketAccepted +## プロパティ + +||| +|-|-| +|ID|3320| +|キーワード|TCP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ソケットが受け入れられたときに生成されます。 + +## メッセージ + ListenerId:%1 が SocketId:%2 を受け入れました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3321-connectionpoolmiss.md b/docs/framework/wcf/diagnostics/etw/3321-connectionpoolmiss.md new file mode 100644 index 00000000000..843ff925c4d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3321-connectionpoolmiss.md @@ -0,0 +1,35 @@ +--- +title: "3321 - ConnectionPoolMiss | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d889fe16-2224-4770-9917-09f1805397ed +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3321 - ConnectionPoolMiss +## プロパティ + +||| +|-|-| +|ID|3321| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、プールに使用可能な接続がないときに生成されます。 + +## メッセージ + %1 のプールに使用可能な接続がありません。%2 個の接続がビジー状態です。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3322-dispatchformatterdeserializerequeststart.md b/docs/framework/wcf/diagnostics/etw/3322-dispatchformatterdeserializerequeststart.md new file mode 100644 index 00000000000..6d4ab4a7f3d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3322-dispatchformatterdeserializerequeststart.md @@ -0,0 +1,35 @@ +--- +title: "3322 - DispatchFormatterDeserializeRequestStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 94ea9c4d-6344-431b-9965-c7094259044d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3322 - DispatchFormatterDeserializeRequestStart +## プロパティ + +||| +|-|-| +|ID|3322| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ディスパッチャーが要求メッセージのシリアル化解除を開始したときに生成されます。 + +## メッセージ + ディスパッチャーが要求メッセージのシリアル化解除を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3323-dispatchformatterdeserializerequeststop.md b/docs/framework/wcf/diagnostics/etw/3323-dispatchformatterdeserializerequeststop.md new file mode 100644 index 00000000000..09e9e432552 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3323-dispatchformatterdeserializerequeststop.md @@ -0,0 +1,35 @@ +--- +title: "3323 - DispatchFormatterDeserializeRequestStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 867fc93e-ae8f-41b4-9264-210042c4bb75 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3323 - DispatchFormatterDeserializeRequestStop +## プロパティ + +||| +|-|-| +|ID|3323| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ディスパッチャーが要求メッセージのシリアル化解除を完了したときに生成されます。 + +## メッセージ + ディスパッチャーが要求メッセージのシリアル化解除を完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3324-dispatchformatterserializereplystart.md b/docs/framework/wcf/diagnostics/etw/3324-dispatchformatterserializereplystart.md new file mode 100644 index 00000000000..5d6a46be3e4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3324-dispatchformatterserializereplystart.md @@ -0,0 +1,35 @@ +--- +title: "3324 - DispatchFormatterSerializeReplyStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a76cb3c1-e6e7-4b36-9e84-f74f638c867e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3324 - DispatchFormatterSerializeReplyStart +## プロパティ + +||| +|-|-| +|ID|3324| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ディスパッチャーが応答メッセージのシリアル化を開始したときに生成されます。 + +## メッセージ + ディスパッチャーが応答メッセージのシリアル化を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3325-dispatchformatterserializereplystop.md b/docs/framework/wcf/diagnostics/etw/3325-dispatchformatterserializereplystop.md new file mode 100644 index 00000000000..5bd5e093d91 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3325-dispatchformatterserializereplystop.md @@ -0,0 +1,35 @@ +--- +title: "3325 - DispatchFormatterSerializeReplyStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c96ffb5f-24e2-4c54-92ba-66277b1cea91 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3325 - DispatchFormatterSerializeReplyStop +## プロパティ + +||| +|-|-| +|ID|3325| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ディスパッチャーが応答メッセージのシリアル化を完了したときに生成されます。 + +## メッセージ + ディスパッチャーが応答メッセージのシリアル化を完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3326-clientformatterserializerequeststart.md b/docs/framework/wcf/diagnostics/etw/3326-clientformatterserializerequeststart.md new file mode 100644 index 00000000000..b944f23e466 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3326-clientformatterserializerequeststart.md @@ -0,0 +1,35 @@ +--- +title: "3326 - ClientFormatterSerializeRequestStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1d212383-5a34-43f5-8522-9b15ed8ebd87 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3326 - ClientFormatterSerializeRequestStart +## プロパティ + +||| +|-|-| +|ID|3326| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、クライアント要求のシリアル化を開始したときに生成されます。 + +## メッセージ + クライアント要求のシリアル化を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3327-clientformatterserializerequeststop.md b/docs/framework/wcf/diagnostics/etw/3327-clientformatterserializerequeststop.md new file mode 100644 index 00000000000..09ef08acdae --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3327-clientformatterserializerequeststop.md @@ -0,0 +1,35 @@ +--- +title: "3327 - ClientFormatterSerializeRequestStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 823b34b0-b386-4df4-bb93-4625515761ef +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3327 - ClientFormatterSerializeRequestStop +## プロパティ + +||| +|-|-| +|ID|3327| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、クライアントが要求メッセージのシリアル化を完了したときに生成されます。 + +## メッセージ + クライアントが要求メッセージのシリアル化を完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3328-clientformatterdeserializereplystart.md b/docs/framework/wcf/diagnostics/etw/3328-clientformatterdeserializereplystart.md new file mode 100644 index 00000000000..0932c92ada8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3328-clientformatterdeserializereplystart.md @@ -0,0 +1,35 @@ +--- +title: "3328 - ClientFormatterDeserializeReplyStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3e8cb064-3052-481e-8a81-3e311d9ce138 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3328 - ClientFormatterDeserializeReplyStart +## プロパティ + +||| +|-|-| +|ID|3328| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、クライアントが応答メッセージのシリアル化解除を開始したときに生成されます。 + +## メッセージ + クライアントが応答メッセージのシリアル化解除を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3329-clientformatterdeserializereplystop.md b/docs/framework/wcf/diagnostics/etw/3329-clientformatterdeserializereplystop.md new file mode 100644 index 00000000000..6a30fb9eb43 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3329-clientformatterdeserializereplystop.md @@ -0,0 +1,35 @@ +--- +title: "3329 - ClientFormatterDeserializeReplyStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c65657a4-80c1-448a-81d9-02d734e66075 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3329 - ClientFormatterDeserializeReplyStop +## プロパティ + +||| +|-|-| +|ID|3329| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、クライアントが応答メッセージのシリアル化解除を完了したときに生成されます。 + +## メッセージ + クライアントが応答メッセージのシリアル化解除を完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3330-securitynegotiationstart.md b/docs/framework/wcf/diagnostics/etw/3330-securitynegotiationstart.md new file mode 100644 index 00000000000..d07e0c3c6c9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3330-securitynegotiationstart.md @@ -0,0 +1,35 @@ +--- +title: "3330 - SecurityNegotiationStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 83bdebcd-9e84-4be3-81f8-1ec458fe2d5a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3330 - SecurityNegotiationStart +## プロパティ + +||| +|-|-| +|ID|3330| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、セキュリティ ネゴシエーションが開始されたときに生成されます。 + +## メッセージ + セキュリティ ネゴシエーションを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3331-securitynegotiationstop.md b/docs/framework/wcf/diagnostics/etw/3331-securitynegotiationstop.md new file mode 100644 index 00000000000..d48d988e48d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3331-securitynegotiationstop.md @@ -0,0 +1,35 @@ +--- +title: "3331 - SecurityNegotiationStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 66ae93c8-00d3-4d6e-88ae-6da694285220 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3331 - SecurityNegotiationStop +## プロパティ + +||| +|-|-| +|ID|3331| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、セキュリティ ネゴシエーションが完了したときに生成されます。 + +## メッセージ + セキュリティ ネゴシエーションが完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3332-securitytokenprovideropened.md b/docs/framework/wcf/diagnostics/etw/3332-securitytokenprovideropened.md new file mode 100644 index 00000000000..782691a34d6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3332-securitytokenprovideropened.md @@ -0,0 +1,35 @@ +--- +title: "3332 - SecurityTokenProviderOpened | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 777f58af-0f4a-49b7-a0da-17d54f73dad1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3332 - SecurityTokenProviderOpened +## プロパティ + +||| +|-|-| +|ID|3332| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、SecurityTokenProvider のオープンが完了したときに生成されます。 + +## メッセージ + SecurityTokenProvider のオープンが完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3333-outgoingmessagesecured.md b/docs/framework/wcf/diagnostics/etw/3333-outgoingmessagesecured.md new file mode 100644 index 00000000000..7554f8fa610 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3333-outgoingmessagesecured.md @@ -0,0 +1,35 @@ +--- +title: "3333 - OutgoingMessageSecured | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 21fe9445-4fa4-4d67-b865-78cecf9b5b82 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3333 - OutgoingMessageSecured +## プロパティ + +||| +|-|-| +|ID|3333| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、送信メッセージがセキュリティで保護されたときに生成されます。 + +## メッセージ + 送信メッセージがセキュリティで保護されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3334-incomingmessageverified.md b/docs/framework/wcf/diagnostics/etw/3334-incomingmessageverified.md new file mode 100644 index 00000000000..d18b95359cb --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3334-incomingmessageverified.md @@ -0,0 +1,35 @@ +--- +title: "3334 - IncomingMessageVerified | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9fed3d02-72d7-4581-9abb-aede74331e22 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3334 - IncomingMessageVerified +## プロパティ + +||| +|-|-| +|ID|3334| +|キーワード|セキュリティ ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、受信メッセージが確認されたときに生成されます。 + +## メッセージ + 受信メッセージが確認されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3335-getserviceinstancestart.md b/docs/framework/wcf/diagnostics/etw/3335-getserviceinstancestart.md new file mode 100644 index 00000000000..02ecedd5b2d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3335-getserviceinstancestart.md @@ -0,0 +1,35 @@ +--- +title: "3335 - GetServiceInstanceStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c35025d1-b2a1-454d-a6a1-784fc03e2670 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3335 - GetServiceInstanceStart +## プロパティ + +||| +|-|-| +|ID|3335| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、サービス インスタンスの取得を開始したときに生成されます。 + +## メッセージ + サービス インスタンスの取得を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3336-getserviceinstancestop.md b/docs/framework/wcf/diagnostics/etw/3336-getserviceinstancestop.md new file mode 100644 index 00000000000..bc5bb6f99b1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3336-getserviceinstancestop.md @@ -0,0 +1,35 @@ +--- +title: "3336 - GetServiceInstanceStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4648026e-670d-4743-85f8-3ccfaaf18d6f +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3336 - GetServiceInstanceStop +## プロパティ + +||| +|-|-| +|ID|3336| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、サービス インスタンスが取得されたときに生成されます。 + +## メッセージ + サービス インスタンスが取得されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3337-channelreceivestart.md b/docs/framework/wcf/diagnostics/etw/3337-channelreceivestart.md new file mode 100644 index 00000000000..33d806e6e1e --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3337-channelreceivestart.md @@ -0,0 +1,35 @@ +--- +title: "3337 - ChannelReceiveStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aa0d226a-3862-4a16-87e6-3bb601084203 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3337 - ChannelReceiveStart +## プロパティ + +||| +|-|-| +|ID|3337| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、チャネルの受信が開始されると生成されます。 + +## メッセージ + ChannelHandlerId:%1 \- メッセージ受信ループを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3338-channelreceivestop.md b/docs/framework/wcf/diagnostics/etw/3338-channelreceivestop.md new file mode 100644 index 00000000000..691f2ffb117 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3338-channelreceivestop.md @@ -0,0 +1,35 @@ +--- +title: "3338 - ChannelReceiveStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e8f0c71e-69e5-4390-aef3-e51c67d0bf0d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3338 - ChannelReceiveStop +## プロパティ + +||| +|-|-| +|ID|3338| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、チャネルの受信が停止されると生成されます。 + +## メッセージ + ChannelHandlerId:%1 \- メッセージ受信ループを停止しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3339-channelfactorycreated.md b/docs/framework/wcf/diagnostics/etw/3339-channelfactorycreated.md new file mode 100644 index 00000000000..169d6766ca0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3339-channelfactorycreated.md @@ -0,0 +1,35 @@ +--- +title: "3339 - ChannelFactoryCreated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 97a395dd-d0d4-471b-b42f-eb4368cd15e4 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3339 - ChannelFactoryCreated +## プロパティ + +||| +|-|-| +|ID|3339| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、チャネル ファクトリの作成時に生成されます。 + +## メッセージ + ChannelFactory が作成されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3340-pipeconnectionacceptstart.md b/docs/framework/wcf/diagnostics/etw/3340-pipeconnectionacceptstart.md new file mode 100644 index 00000000000..9a85493b53a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3340-pipeconnectionacceptstart.md @@ -0,0 +1,35 @@ +--- +title: "3340 - PipeConnectionAcceptStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c18d0db8-6f44-42ab-b297-5e0209789e5c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3340 - PipeConnectionAcceptStart +## プロパティ + +||| +|-|-| +|ID|3340| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、パイプ接続の受け入れが開始されるときに生成されます。 + +## メッセージ + %1 でパイプ接続の受け入れを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3341-pipeconnectionacceptstop.md b/docs/framework/wcf/diagnostics/etw/3341-pipeconnectionacceptstop.md new file mode 100644 index 00000000000..940a40bbafa --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3341-pipeconnectionacceptstop.md @@ -0,0 +1,35 @@ +--- +title: "3341 - PipeConnectionAcceptStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 85d20b28-53c2-4206-90bc-8564a03dcb49 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3341 - PipeConnectionAcceptStop +## プロパティ + +||| +|-|-| +|ID|3341| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、パイプ接続の受け入れを停止したときに生成されます。 + +## メッセージ + パイプ接続を受け入れました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3342-establishconnectionstart.md b/docs/framework/wcf/diagnostics/etw/3342-establishconnectionstart.md new file mode 100644 index 00000000000..83626cd1990 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3342-establishconnectionstart.md @@ -0,0 +1,35 @@ +--- +title: "3342 - EstablishConnectionStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2f2e3446-1f0c-4e8a-b14c-0e500de0f075 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3342 - EstablishConnectionStart +## プロパティ + +||| +|-|-| +|ID|3342| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、接続の確立を開始したときに生成されます。 + +## メッセージ + %1 の接続の確立を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3343-establishconnectionstop.md b/docs/framework/wcf/diagnostics/etw/3343-establishconnectionstop.md new file mode 100644 index 00000000000..e0cae02af06 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3343-establishconnectionstop.md @@ -0,0 +1,35 @@ +--- +title: "3343 - EstablishConnectionStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4ddbaae5-2de0-45d0-90d2-0ab135fea31f +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3343 - EstablishConnectionStop +## プロパティ + +||| +|-|-| +|ID|3343| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、接続の確立を停止したときに生成されます。 + +## メッセージ + 接続が確立されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3345-sessionpreambleunderstood.md b/docs/framework/wcf/diagnostics/etw/3345-sessionpreambleunderstood.md new file mode 100644 index 00000000000..ac29bd9e624 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3345-sessionpreambleunderstood.md @@ -0,0 +1,35 @@ +--- +title: "3345 - SessionPreambleUnderstood | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e8e9fcda-7dbc-4670-bb47-b365219f3046 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3345 - SessionPreambleUnderstood +## プロパティ + +||| +|-|-| +|ID|3345| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、NetTcp のセッション プリアンブルが認識されると生成されます。 + +## メッセージ + '%1' のセッション プリアンブルが認識されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3346-connectionreadersendfault.md b/docs/framework/wcf/diagnostics/etw/3346-connectionreadersendfault.md new file mode 100644 index 00000000000..cde780c1276 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3346-connectionreadersendfault.md @@ -0,0 +1,35 @@ +--- +title: "3346 - ConnectionReaderSendFault | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 137c665f-0ea1-4405-bf48-65aabfad97e5 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3346 - ConnectionReaderSendFault +## プロパティ + +||| +|-|-| +|ID|3346| +|キーワード|チャネル| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、接続リーダーがエラーを送信するときに生成されます。 + +## メッセージ + 接続リーダーがエラー '%1' を送信しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3347-socketacceptclosed.md b/docs/framework/wcf/diagnostics/etw/3347-socketacceptclosed.md new file mode 100644 index 00000000000..a9e30b15c8b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3347-socketacceptclosed.md @@ -0,0 +1,35 @@ +--- +title: "3347 - SocketAcceptClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a84ea364-b0e1-4bee-a497-dc2b988cc4c3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3347 - SocketAcceptClosed +## プロパティ + +||| +|-|-| +|ID|3347| +|キーワード|TCP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ソケットの受け入れが終了したときに生成されます。 + +## メッセージ + ソケットの受け入れを終了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3348-servicehostfaulted.md b/docs/framework/wcf/diagnostics/etw/3348-servicehostfaulted.md new file mode 100644 index 00000000000..e7a365b188c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3348-servicehostfaulted.md @@ -0,0 +1,35 @@ +--- +title: "3348 - ServiceHostFaulted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1b58ab2e-4b11-4967-ad16-724d509814a1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3348 - ServiceHostFaulted +## プロパティ + +||| +|-|-| +|ID|3348| +|キーワード|TCP| +|レベル|重大| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービス ホストが途中終了したときに生成されます。 + +## メッセージ + サービス ホストが途中終了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3349-listeneropenstart.md b/docs/framework/wcf/diagnostics/etw/3349-listeneropenstart.md new file mode 100644 index 00000000000..d69e87906e4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3349-listeneropenstart.md @@ -0,0 +1,35 @@ +--- +title: "3349 - ListenerOpenStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9625f9bc-45c0-4a0d-8f97-34d1672f556c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3349 - ListenerOpenStart +## プロパティ + +||| +|-|-| +|ID|3349| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ListenerOpen が開始されると生成されます。 + +## メッセージ + '%1' のリスナーを開いています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3350-listeneropenstop.md b/docs/framework/wcf/diagnostics/etw/3350-listeneropenstop.md new file mode 100644 index 00000000000..a47c218faf8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3350-listeneropenstop.md @@ -0,0 +1,35 @@ +--- +title: "3350 - ListenerOpenStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 67211588-3c52-465a-92dd-20185e7edcf0 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3350 - ListenerOpenStop +## プロパティ + +||| +|-|-| +|ID|3350| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ListenerOpen が停止すると生成されます。 + +## メッセージ + リスナーのオープンが完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3351-servermaxpooledconnectionsquotareached.md b/docs/framework/wcf/diagnostics/etw/3351-servermaxpooledconnectionsquotareached.md new file mode 100644 index 00000000000..44c1470b2c0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3351-servermaxpooledconnectionsquotareached.md @@ -0,0 +1,35 @@ +--- +title: "3351 - ServerMaxPooledConnectionsQuotaReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b2ca1131-0017-4a5f-ab7b-2b0f73589e84 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3351 - ServerMaxPooledConnectionsQuotaReached +## プロパティ + +||| +|-|-| +|ID|3351| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サーバーのプールされた接続の最大クォータに達したときに生成されます。 + +## メッセージ + サーバーのプールされた接続の最大クォータに達しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3352-tcpconnectiontimedout.md b/docs/framework/wcf/diagnostics/etw/3352-tcpconnectiontimedout.md new file mode 100644 index 00000000000..fcdd7da663b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3352-tcpconnectiontimedout.md @@ -0,0 +1,35 @@ +--- +title: "3352 - TcpConnectionTimedOut | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8340caa6-1ccb-48b7-8340-5052d3c811f6 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3352 - TcpConnectionTimedOut +## プロパティ + +||| +|-|-| +|ID|3352| +|キーワード|TCP| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、TCP 接続がタイムアウトしたときに生成されます。 + +## メッセージ + リモート アドレス %2 への SocketId:%1 がタイムアウトしました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3353-tcpconnectionreseterror.md b/docs/framework/wcf/diagnostics/etw/3353-tcpconnectionreseterror.md new file mode 100644 index 00000000000..4c38bce3aab --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3353-tcpconnectionreseterror.md @@ -0,0 +1,35 @@ +--- +title: "3353 - TcpConnectionResetError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 19df26fe-1088-4969-b137-b6f25740b468 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3353 - TcpConnectionResetError +## プロパティ + +||| +|-|-| +|ID|3353| +|キーワード|TCP| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、TCP 接続リセット エラーが発生すると生成されます。 + +## メッセージ + リモート アドレス %2 への SocketId:%1 で接続リセット エラーが発生しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3354-servicesecuritynegotiationcompleted.md b/docs/framework/wcf/diagnostics/etw/3354-servicesecuritynegotiationcompleted.md new file mode 100644 index 00000000000..5ea021b2d3c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3354-servicesecuritynegotiationcompleted.md @@ -0,0 +1,35 @@ +--- +title: "3354 - ServiceSecurityNegotiationCompleted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 093aeefe-1609-4409-b6d2-00f71772bcf7 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3354 - ServiceSecurityNegotiationCompleted +## プロパティ + +||| +|-|-| +|ID|3354| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、サービス セキュリティ ネゴシエーションが完了したときに生成されます。 + +## メッセージ + サービス セキュリティ ネゴシエーションが完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3355-securitynegotiationprocessingfailure.md b/docs/framework/wcf/diagnostics/etw/3355-securitynegotiationprocessingfailure.md new file mode 100644 index 00000000000..f6ee7ab95bb --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3355-securitynegotiationprocessingfailure.md @@ -0,0 +1,35 @@ +--- +title: "3355 - SecurityNegotiationProcessingFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 504f85f0-d11d-4de0-a0ab-ea580a476d18 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3355 - SecurityNegotiationProcessingFailure +## プロパティ + +||| +|-|-| +|ID|3355| +|キーワード|セキュリティ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、セキュリティ ネゴシエーション処理に失敗したときに生成されます。 + +## メッセージ + セキュリティ ネゴシエーション処理が失敗しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3356-securityidentityverificationsuccess.md b/docs/framework/wcf/diagnostics/etw/3356-securityidentityverificationsuccess.md new file mode 100644 index 00000000000..3ec7f35fe78 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3356-securityidentityverificationsuccess.md @@ -0,0 +1,35 @@ +--- +title: "3356 - SecurityIdentityVerificationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4fb4899c-bfcc-437e-b4d5-313b83b1ae29 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3356 - SecurityIdentityVerificationSuccess +## プロパティ + +||| +|-|-| +|ID|3356| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、セキュリティの検証に成功したときに生成されます。 + +## メッセージ + セキュリティ検証が成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3357-securityidentityverificationfailure.md b/docs/framework/wcf/diagnostics/etw/3357-securityidentityverificationfailure.md new file mode 100644 index 00000000000..1417841eb14 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3357-securityidentityverificationfailure.md @@ -0,0 +1,35 @@ +--- +title: "3357 - SecurityIdentityVerificationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e5629542-9067-42ba-b1cc-e8af61484643 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3357 - SecurityIdentityVerificationFailure +## プロパティ + +||| +|-|-| +|ID|3357| +|キーワード|セキュリティ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、セキュリティ検証に失敗したときに生成されます。 + +## メッセージ + セキュリティ検証に失敗しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3358-portsharingduplicatedsocket.md b/docs/framework/wcf/diagnostics/etw/3358-portsharingduplicatedsocket.md new file mode 100644 index 00000000000..c655cee7d1f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3358-portsharingduplicatedsocket.md @@ -0,0 +1,35 @@ +--- +title: "3358 - PortSharingDuplicatedSocket | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c6e5c051-5597-49d1-a5ea-0a26ec04443d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3358 - PortSharingDuplicatedSocket +## プロパティ + +||| +|-|-| +|ID|3358| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ポート共有ソケットが複製されるときに生成されます。 + +## メッセージ + %1 のソケットが複製されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3359-securityimpersonationsuccess.md b/docs/framework/wcf/diagnostics/etw/3359-securityimpersonationsuccess.md new file mode 100644 index 00000000000..e0223303a80 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3359-securityimpersonationsuccess.md @@ -0,0 +1,35 @@ +--- +title: "3359 - SecurityImpersonationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 80bcea7c-ae57-4b89-8032-5f9787545b07 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3359 - SecurityImpersonationSuccess +## プロパティ + +||| +|-|-| +|ID|3359| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、セキュリティの偽装に成功すると生成されます。 + +## メッセージ + セキュリティの偽装に成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3360-securityimpersonationfailure.md b/docs/framework/wcf/diagnostics/etw/3360-securityimpersonationfailure.md new file mode 100644 index 00000000000..c090f7ecdc2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3360-securityimpersonationfailure.md @@ -0,0 +1,35 @@ +--- +title: "3360 - SecurityImpersonationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5ef28970-7822-4eb3-b266-f6554deb1b5b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3360 - SecurityImpersonationFailure +## プロパティ + +||| +|-|-| +|ID|3360| +|キーワード|セキュリティ| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、セキュリティの偽装に失敗すると生成されます。 + +## メッセージ + セキュリティの偽装に失敗しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3361-httpchannelrequestaborted.md b/docs/framework/wcf/diagnostics/etw/3361-httpchannelrequestaborted.md new file mode 100644 index 00000000000..80d6e1579de --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3361-httpchannelrequestaborted.md @@ -0,0 +1,35 @@ +--- +title: "3361 - HttpChannelRequestAborted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0150156e-9ff9-4f44-b941-2441d40fc265 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3361 - HttpChannelRequestAborted +## プロパティ + +||| +|-|-| +|ID|3361| +|キーワード|HTTP| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、HTTP チャネルの要求が中止されたときに生成されます。 + +## メッセージ + HTTP チャネルの要求が中止されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3362-httpchannelresponseaborted.md b/docs/framework/wcf/diagnostics/etw/3362-httpchannelresponseaborted.md new file mode 100644 index 00000000000..f3ff07f31fb --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3362-httpchannelresponseaborted.md @@ -0,0 +1,35 @@ +--- +title: "3362 - HttpChannelResponseAborted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 94bb6f7c-fa87-400c-9f11-75a139f51de4 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3362 - HttpChannelResponseAborted +## プロパティ + +||| +|-|-| +|ID|3362| +|キーワード|HTTP| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、HTTP チャネルの応答が中止されたときに生成されます。 + +## メッセージ + HTTP チャネルの応答が中止されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3363-httpauthfailed.md b/docs/framework/wcf/diagnostics/etw/3363-httpauthfailed.md new file mode 100644 index 00000000000..bd0e6e3f06f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3363-httpauthfailed.md @@ -0,0 +1,35 @@ +--- +title: "3363 - HttpAuthFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8ddfc1f0-ab6f-4fd4-a138-05ded7f6680a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3363 - HttpAuthFailed +## プロパティ + +||| +|-|-| +|ID|3363| +|キーワード|HTTP| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、HTTP 認証が失敗したときに生成されます。 + +## メッセージ + HTTP 認証に失敗しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3364-sharedlistenerproxyregisterstart.md b/docs/framework/wcf/diagnostics/etw/3364-sharedlistenerproxyregisterstart.md new file mode 100644 index 00000000000..cc79395c378 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3364-sharedlistenerproxyregisterstart.md @@ -0,0 +1,35 @@ +--- +title: "3364 - SharedListenerProxyRegisterStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dfbbf889-46ef-484c-8811-1f51ae4790d8 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 3364 - SharedListenerProxyRegisterStart +## プロパティ + +||| +|-|-| +|ID|3364| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、SharedListenerProxy の登録が開始されたときに生成されます。 + +## メッセージ + URI '%1' の SharedListenerProxy の登録を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3365-sharedlistenerproxyregisterstop.md b/docs/framework/wcf/diagnostics/etw/3365-sharedlistenerproxyregisterstop.md new file mode 100644 index 00000000000..41c39166f2f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3365-sharedlistenerproxyregisterstop.md @@ -0,0 +1,35 @@ +--- +title: "3365 - SharedListenerProxyRegisterStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a74173b3-13e8-41b0-9753-8eaef9b71b90 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3365 - SharedListenerProxyRegisterStop +## プロパティ + +||| +|-|-| +|ID|3365| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、SharedListenerProxy の登録が停止されたときに生成されます。 + +## メッセージ + SharedListenerProxy の登録を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3366-sharedlistenerproxyregisterfailed.md b/docs/framework/wcf/diagnostics/etw/3366-sharedlistenerproxyregisterfailed.md new file mode 100644 index 00000000000..924d7e898bf --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3366-sharedlistenerproxyregisterfailed.md @@ -0,0 +1,35 @@ +--- +title: "3366 - SharedListenerProxyRegisterFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 28f6151c-650f-473d-a807-cb06b56f67f1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3366 - SharedListenerProxyRegisterFailed +## プロパティ + +||| +|-|-| +|ID|3366| +|キーワード|ActivationServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、SharedListenerProxy の登録が失敗すると生成されます。 + +## メッセージ + SharedListenerProxy の登録は状態 '%1' で失敗しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3367-connectionpoolpreamblefailed.md b/docs/framework/wcf/diagnostics/etw/3367-connectionpoolpreamblefailed.md new file mode 100644 index 00000000000..de2c89332b2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3367-connectionpoolpreamblefailed.md @@ -0,0 +1,35 @@ +--- +title: "3367 - ConnectionPoolPreambleFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a8ce3088-b621-4c84-a4d7-826afc33537f +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3367 - ConnectionPoolPreambleFailed +## プロパティ + +||| +|-|-| +|ID|3367| +|キーワード|チャネル| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ConnectionPoolPreamble が失敗したときに生成されます。 + +## メッセージ + ConnectionPoolPreambleFailed。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3368-ssloninitiateupgrade.md b/docs/framework/wcf/diagnostics/etw/3368-ssloninitiateupgrade.md new file mode 100644 index 00000000000..442dd7b0c82 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3368-ssloninitiateupgrade.md @@ -0,0 +1,35 @@ +--- +title: "3368 - SslOnInitiateUpgrade | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: daba19f6-f4b3-4dd6-9ba2-93c9666ba71e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3368 - SslOnInitiateUpgrade +## プロパティ + +||| +|-|-| +|ID|3368| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、SslOnAcceptUpgrade が開始すると生成されます。 + +## メッセージ + SslOnAcceptUpgradeStart + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3369-sslonacceptupgrade.md b/docs/framework/wcf/diagnostics/etw/3369-sslonacceptupgrade.md new file mode 100644 index 00000000000..0483219bb8a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3369-sslonacceptupgrade.md @@ -0,0 +1,35 @@ +--- +title: "3369 - SslOnAcceptUpgrade | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dec93b38-d97c-4c9e-8891-7cefa0a8aa5b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3369 - SslOnAcceptUpgrade +## プロパティ + +||| +|-|-| +|ID|3369| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、SslOnAcceptUpgrade が停止すると生成されます。 + +## メッセージ + SslOnAcceptUpgradeStop + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3370-binarymessageencodingstart.md b/docs/framework/wcf/diagnostics/etw/3370-binarymessageencodingstart.md new file mode 100644 index 00000000000..e9d0b9c446e --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3370-binarymessageencodingstart.md @@ -0,0 +1,35 @@ +--- +title: "3370 - BinaryMessageEncodingStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 624f8dab-a150-468e-9709-613621a8627f +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3370 - BinaryMessageEncodingStart +## プロパティ + +||| +|-|-| +|ID|3370| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、BinaryMessageEncoder がメッセージのエンコードを開始したときに生成されます。 + +## メッセージ + BinaryMessageEncoder がメッセージのエンコードを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3371-mtommessageencodingstart.md b/docs/framework/wcf/diagnostics/etw/3371-mtommessageencodingstart.md new file mode 100644 index 00000000000..1a9677f1d36 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3371-mtommessageencodingstart.md @@ -0,0 +1,35 @@ +--- +title: "3371 - MtomMessageEncodingStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b1ba417f-f765-4567-82e3-ea2080e0ac73 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3371 - MtomMessageEncodingStart +## プロパティ + +||| +|-|-| +|ID|3371| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、MtomMessageEncoder がメッセージのエンコードを開始したときに生成されます。 + +## メッセージ + MtomMessageEncoder がメッセージのエンコードを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3372-textmessageencodingstart.md b/docs/framework/wcf/diagnostics/etw/3372-textmessageencodingstart.md new file mode 100644 index 00000000000..425333e2ad2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3372-textmessageencodingstart.md @@ -0,0 +1,35 @@ +--- +title: "3372 - TextMessageEncodingStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c57e3fe3-b12d-415e-925e-b09590722d0c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3372 - TextMessageEncodingStart +## プロパティ + +||| +|-|-| +|ID|3372| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、TextMessageEncoder がメッセージのエンコードを開始したときに生成されます。 + +## メッセージ + TextMessageEncoder がメッセージのエンコードを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3373-binarymessagedecodingstart.md b/docs/framework/wcf/diagnostics/etw/3373-binarymessagedecodingstart.md new file mode 100644 index 00000000000..0f6a0e40e07 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3373-binarymessagedecodingstart.md @@ -0,0 +1,35 @@ +--- +title: "3373 - BinaryMessageDecodingStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 20b13b33-d67d-47fd-aeec-a7fa3fc87c26 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3373 - BinaryMessageDecodingStart +## プロパティ + +||| +|-|-| +|ID|3373| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、BinaryMessageEncoder がメッセージのデコードを開始したときに生成されます。 + +## メッセージ + BinaryMessageEncoder がメッセージのデコードを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3374-mtommessagedecodingstart.md b/docs/framework/wcf/diagnostics/etw/3374-mtommessagedecodingstart.md new file mode 100644 index 00000000000..0c20c1c9914 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3374-mtommessagedecodingstart.md @@ -0,0 +1,35 @@ +--- +title: "3374 - MtomMessageDecodingStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 72afd61d-da6b-418e-b26a-efc7bdb0a218 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3374 - MtomMessageDecodingStart +## プロパティ + +||| +|-|-| +|ID|3374| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、MtomMessageEncoder がメッセージのデコードを開始したときに生成されます。 + +## メッセージ + MtomMessageEncoder がメッセージのデコードを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3375-textmessagedecodingstart.md b/docs/framework/wcf/diagnostics/etw/3375-textmessagedecodingstart.md new file mode 100644 index 00000000000..1c0f96e50dc --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3375-textmessagedecodingstart.md @@ -0,0 +1,35 @@ +--- +title: "3375 - TextMessageDecodingStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a7152c0e-10e5-4446-b52d-60838fb99748 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3375 - TextMessageDecodingStart +## プロパティ + +||| +|-|-| +|ID|3375| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、TextMessageEncoder がメッセージのデコードを開始したときに生成されます。 + +## メッセージ + TextMessageEncoder がメッセージのデコードを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3376-httpresponsereceivestart.md b/docs/framework/wcf/diagnostics/etw/3376-httpresponsereceivestart.md new file mode 100644 index 00000000000..41c3e501a05 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3376-httpresponsereceivestart.md @@ -0,0 +1,35 @@ +--- +title: "3376 - HttpResponseReceiveStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 37cdd555-b28d-42d8-ab35-085417309503 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3376 - HttpResponseReceiveStart +## プロパティ + +||| +|-|-| +|ID|3376| +|キーワード|HTTP| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、HTTP トランスポートがメッセージの受信を開始したときに生成されます。 + +## メッセージ + HTTP トランスポートがメッセージの受信を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3377-socketreadstop.md b/docs/framework/wcf/diagnostics/etw/3377-socketreadstop.md new file mode 100644 index 00000000000..63063c1cfb0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3377-socketreadstop.md @@ -0,0 +1,35 @@ +--- +title: "3377 - SocketReadStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 980c24e8-47d5-4f1e-86cc-1cb1c0736d19 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3377 - SocketReadStop +## プロパティ + +||| +|-|-| +|ID|3377| +|キーワード|TCP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、SocketRead が停止すると生成されます。 + +## メッセージ + SocketId:%1 が '%3' から '%2' バイトを読み取りました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3378-socketasyncreadstop.md b/docs/framework/wcf/diagnostics/etw/3378-socketasyncreadstop.md new file mode 100644 index 00000000000..7bc84b3b0f2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3378-socketasyncreadstop.md @@ -0,0 +1,35 @@ +--- +title: "3378 - SocketAsyncReadStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c7b5b73e-c1cd-41a5-9a0b-ab86af437f60 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3378 - SocketAsyncReadStop +## プロパティ + +||| +|-|-| +|ID|3378| +|キーワード|TCP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、SocketAsyncRead が停止している場合に生成されます。 + +## メッセージ + SocketId:%1 が '%3' から '%2' バイトを読み取りました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3379-socketwritestart.md b/docs/framework/wcf/diagnostics/etw/3379-socketwritestart.md new file mode 100644 index 00000000000..6d04cc756cb --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3379-socketwritestart.md @@ -0,0 +1,35 @@ +--- +title: "3379 - SocketWriteStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 26523526-258b-4721-b681-ef1a19f33fa1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3379 - SocketWriteStart +## プロパティ + +||| +|-|-| +|ID|3379| +|キーワード|TCP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、SocketWrite が開始するときに生成されます。 + +## メッセージ + SocketId:%1 が '%3' に '%2' バイトを書き込んでいます。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3380-socketasyncwritestart.md b/docs/framework/wcf/diagnostics/etw/3380-socketasyncwritestart.md new file mode 100644 index 00000000000..2e25bef27c4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3380-socketasyncwritestart.md @@ -0,0 +1,35 @@ +--- +title: "3380 - SocketAsyncWriteStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1de37c02-e14b-42ad-a23a-9ee8edc354b5 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3380 - SocketAsyncWriteStart +## プロパティ + +||| +|-|-| +|ID|3380| +|キーワード|TCP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、SocketAsyncWrite が開始すると生成されます。 + +## メッセージ + SocketId:%1 が '%3' に '%2' バイトを書き込んでいます。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3381-sequenceacknowledgementsent.md b/docs/framework/wcf/diagnostics/etw/3381-sequenceacknowledgementsent.md new file mode 100644 index 00000000000..072e64529f0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3381-sequenceacknowledgementsent.md @@ -0,0 +1,35 @@ +--- +title: "3381 - SequenceAcknowledgementSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 42630d32-c24d-41b9-9106-9ca1a3e2f7d8 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3381 - SequenceAcknowledgementSent +## プロパティ + +||| +|-|-| +|ID|3381| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、SequenceAcknowledgement が送信されるときに生成されます。 + +## メッセージ + SessionId:%1 の受信確認が送信されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3382-clientreliablesessionreconnect.md b/docs/framework/wcf/diagnostics/etw/3382-clientreliablesessionreconnect.md new file mode 100644 index 00000000000..ac4a4875fc9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3382-clientreliablesessionreconnect.md @@ -0,0 +1,36 @@ +--- +title: "3382 - ClientReliableSessionReconnect | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 029c0e75-8cf0-4860-8539-c2baa18eb7a7 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3382 - ClientReliableSessionReconnect +## プロパティ + +||| +|-|-| +|ID|3382| +|キーワード|チャネル| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは ClientReliableSession を再接続するときに生成されます。 + +## メッセージ + SessionId:%1 を再接続します。 + +## 詳細 + このイベントは ClientReliableSession を再接続するときに生成されます。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3383-reliablesessionchannelfaulted.md b/docs/framework/wcf/diagnostics/etw/3383-reliablesessionchannelfaulted.md new file mode 100644 index 00000000000..55cc6f3276c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3383-reliablesessionchannelfaulted.md @@ -0,0 +1,35 @@ +--- +title: "3383 - ReliableSessionChannelFaulted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f5948284-8536-4ab8-9c81-e22da5b56d62 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3383 - ReliableSessionChannelFaulted +## プロパティ + +||| +|-|-| +|ID|3383| +|キーワード|チャネル| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ReliableSessionChannel が失敗したときに生成されます。 + +## メッセージ + SessionId:%1 でエラーが発生しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3384-windowsstreamsecurityoninitiateupgrade.md b/docs/framework/wcf/diagnostics/etw/3384-windowsstreamsecurityoninitiateupgrade.md new file mode 100644 index 00000000000..af5abe70841 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3384-windowsstreamsecurityoninitiateupgrade.md @@ -0,0 +1,35 @@ +--- +title: "3384 - WindowsStreamSecurityOnInitiateUpgrade | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9a9f6b38-5ee7-45f3-9d87-556045d15e09 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3384 - WindowsStreamSecurityOnInitiateUpgrade +## プロパティ + +||| +|-|-| +|ID|3384| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、WindowsStreamSecurity がセキュリティ アップグレードを開始したときに生成されます。 + +## メッセージ + WindowsStreamSecurity がセキュリティ アップグレードを開始しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3385-windowsstreamsecurityonacceptupgrade.md b/docs/framework/wcf/diagnostics/etw/3385-windowsstreamsecurityonacceptupgrade.md new file mode 100644 index 00000000000..2323b114adf --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3385-windowsstreamsecurityonacceptupgrade.md @@ -0,0 +1,35 @@ +--- +title: "3385 - WindowsStreamSecurityOnAcceptUpgrade | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3d17dc6a-befb-49f0-a150-c4875405ce7a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3385 - WindowsStreamSecurityOnAcceptUpgrade +## プロパティ + +||| +|-|-| +|ID|3385| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、Windows ストリーム セキュリティがセキュリティ アップグレードを受け入れるときに生成されます。 + +## メッセージ + Windows ストリーミング セキュリティがアップグレードを受け入れています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3386-socketconnectionabort.md b/docs/framework/wcf/diagnostics/etw/3386-socketconnectionabort.md new file mode 100644 index 00000000000..aae21118125 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3386-socketconnectionabort.md @@ -0,0 +1,35 @@ +--- +title: "3386 - SocketConnectionAbort | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 37a184f2-af60-4339-820a-857e2375cb1c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3386 - SocketConnectionAbort +## プロパティ + +||| +|-|-| +|ID|3386| +|キーワード|TCP| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ソケット接続を中止するときに生成されます。 + +## メッセージ + SocketId:%1 を中止しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3388-httpgetcontextstart.md b/docs/framework/wcf/diagnostics/etw/3388-httpgetcontextstart.md new file mode 100644 index 00000000000..b1b43b14990 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3388-httpgetcontextstart.md @@ -0,0 +1,35 @@ +--- +title: "3388 - HttpGetContextStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: def9b441-9bb2-4bc0-a4b3-4db07b80b557 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3388 - HttpGetContextStart +## プロパティ + +||| +|-|-| +|ID|3388| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、HttpGetContext の開始時に生成されます。 + +## メッセージ + HttpGetContext を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3389-clientsendpreamblestart.md b/docs/framework/wcf/diagnostics/etw/3389-clientsendpreamblestart.md new file mode 100644 index 00000000000..cf510273754 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3389-clientsendpreamblestart.md @@ -0,0 +1,35 @@ +--- +title: "3389 - ClientSendPreambleStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c31e8b2d-14ba-41c4-ab9b-205d591b078d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3389 - ClientSendPreambleStart +## プロパティ + +||| +|-|-| +|ID|3389| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、クライアントがプリアンブルの送信を開始したときに生成されます。 + +## メッセージ + クライアントがプリアンブルの送信を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3390-clientsendpreamblestop.md b/docs/framework/wcf/diagnostics/etw/3390-clientsendpreamblestop.md new file mode 100644 index 00000000000..b582c08a769 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3390-clientsendpreamblestop.md @@ -0,0 +1,35 @@ +--- +title: "3390 - ClientSendPreambleStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fbf6e4ed-8538-417e-b4d1-a30b45ee6b5d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3390 - ClientSendPreambleStop +## プロパティ + +||| +|-|-| +|ID|3390| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、クライアントがプリアンブルの送信を停止したときに生成されます。 + +## メッセージ + クライアントがプリアンブルの送信を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3391-httpmessagereceivefailed.md b/docs/framework/wcf/diagnostics/etw/3391-httpmessagereceivefailed.md new file mode 100644 index 00000000000..d6d1d341301 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3391-httpmessagereceivefailed.md @@ -0,0 +1,35 @@ +--- +title: "3391 - HttpMessageReceiveFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9fc527ed-57ad-46fe-8b81-940f4b992368 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3391 - HttpMessageReceiveFailed +## プロパティ + +||| +|-|-| +|ID|3391| +|キーワード|HTTP| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、HTTP メッセージの受信に失敗したときに生成されます。 + +## メッセージ + HTTP メッセージの受信に失敗しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3392-transactionscopecreate.md b/docs/framework/wcf/diagnostics/etw/3392-transactionscopecreate.md new file mode 100644 index 00000000000..01fd77adb24 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3392-transactionscopecreate.md @@ -0,0 +1,35 @@ +--- +title: "3392 - TransactionScopeCreate | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2b6257a6-683b-4adc-aca5-6d095e4c03a0 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3392 - TransactionScopeCreate +## プロパティ + +||| +|-|-| +|ID|3392| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、TransactionScope の作成時に生成されます。 + +## メッセージ + LocalIdentifier:'%1' および DistributedIdentifier:'%2' の TransactionScope を作成しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3393-streamedmessagereadbyencoder.md b/docs/framework/wcf/diagnostics/etw/3393-streamedmessagereadbyencoder.md new file mode 100644 index 00000000000..ac851037d49 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3393-streamedmessagereadbyencoder.md @@ -0,0 +1,35 @@ +--- +title: "3393 - StreamedMessageReadByEncoder | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 70ebde45-9e46-4adb-9020-c17e9c6786e4 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3393 - StreamedMessageReadByEncoder +## プロパティ + +||| +|-|-| +|ID|3393| +|キーワード|チャネル| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、エンコーダーによってストリーム メッセージが読み取られたときに生成されます。 + +## メッセージ + エンコーダーによってストリーム メッセージが読み取られました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3394-streamedmessagewrittenbyencoder.md b/docs/framework/wcf/diagnostics/etw/3394-streamedmessagewrittenbyencoder.md new file mode 100644 index 00000000000..fedc71e5b4d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3394-streamedmessagewrittenbyencoder.md @@ -0,0 +1,35 @@ +--- +title: "3394 - StreamedMessageWrittenByEncoder | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8b3a1a76-e5f7-4421-86cf-d201d724671e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3394 - StreamedMessageWrittenByEncoder +## プロパティ + +||| +|-|-| +|ID|3394| +|キーワード|チャネル| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、エンコーダーによってストリーム メッセージが書き込まれたときに生成されます。 + +## メッセージ + エンコーダーによってストリーム メッセージが書き込まれました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3395-messagewrittenasynchronouslybyencoder.md b/docs/framework/wcf/diagnostics/etw/3395-messagewrittenasynchronouslybyencoder.md new file mode 100644 index 00000000000..140ac9d70fb --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3395-messagewrittenasynchronouslybyencoder.md @@ -0,0 +1,35 @@ +--- +title: "3395 - MessageWrittenAsynchronouslyByEncoder | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f2b015b3-dafe-4468-a3ac-5b547ff413e6 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3395 - MessageWrittenAsynchronouslyByEncoder +## プロパティ + +||| +|-|-| +|ID|3395| +|キーワード|チャネル| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、エンコーダーによってストリーム メッセージが非同期で書き込まれたときに生成されます。 + +## メッセージ + エンコーダーによってメッセージが非同期で書き込まれました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3396-bufferedasyncwritestart.md b/docs/framework/wcf/diagnostics/etw/3396-bufferedasyncwritestart.md new file mode 100644 index 00000000000..a9e4954e962 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3396-bufferedasyncwritestart.md @@ -0,0 +1,35 @@ +--- +title: "3396 - BufferedAsyncWriteStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f8baff8c-0a47-47a6-9997-d3b178176bb9 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3396 - BufferedAsyncWriteStart +## プロパティ + +||| +|-|-| +|ID|3396| +|キーワード|チャネル| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、バッファリングされた非同期書き込みが完了したときに生成されます。 + +## メッセージ + BufferId:%1 から基になるストリームへの '%2' バイトの書き込みが完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3397-bufferedasyncwritestop.md b/docs/framework/wcf/diagnostics/etw/3397-bufferedasyncwritestop.md new file mode 100644 index 00000000000..8cd75e386ee --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3397-bufferedasyncwritestop.md @@ -0,0 +1,35 @@ +--- +title: "3397 - BufferedAsyncWriteStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1bbf56fc-04fe-443b-ae97-769814c7be57 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3397 - BufferedAsyncWriteStop +## プロパティ + +||| +|-|-| +|ID|3397| +|キーワード|チャネル| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、エンコーダーによってメッセージが非同期に書き込まれたときに生成されます。 + +## メッセージ + エンコーダーによってメッセージが非同期で書き込まれました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3398-pipesharedmemorycreated.md b/docs/framework/wcf/diagnostics/etw/3398-pipesharedmemorycreated.md new file mode 100644 index 00000000000..c292251e7bc --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3398-pipesharedmemorycreated.md @@ -0,0 +1,35 @@ +--- +title: "3398 - PipeSharedMemoryCreated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d68ec947-a174-4425-9c12-de56dd3a7f7a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3398 - PipeSharedMemoryCreated +## プロパティ + +||| +|-|-| +|ID|3398| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、パイプ共有メモリが作成されたときに生成されます。 + +## メッセージ + パイプ共有メモリが '%1' に作成されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3399-namedpipecreated.md b/docs/framework/wcf/diagnostics/etw/3399-namedpipecreated.md new file mode 100644 index 00000000000..d7d069196fc --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3399-namedpipecreated.md @@ -0,0 +1,35 @@ +--- +title: "3399 - NamedPipeCreated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1619c06b-4d27-4e23-8967-bb1d19a27792 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3399 - NamedPipeCreated +## プロパティ + +||| +|-|-| +|ID|3399| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、名前付きパイプが作成されたときに生成されます。 + +## メッセージ + NamedPipe '%1' が作成されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3401-signatureverificationstart.md b/docs/framework/wcf/diagnostics/etw/3401-signatureverificationstart.md new file mode 100644 index 00000000000..3d6cbe7fc07 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3401-signatureverificationstart.md @@ -0,0 +1,35 @@ +--- +title: "3401 - SignatureVerificationStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fb2c81be-3dae-45a8-8558-c5d0cbb8958a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3401 - SignatureVerificationStart +## プロパティ + +||| +|-|-| +|ID|3401| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、署名の検証が開始されたときに生成されます。 + +## メッセージ + 署名の検証を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3402-signatureverificationsuccess.md b/docs/framework/wcf/diagnostics/etw/3402-signatureverificationsuccess.md new file mode 100644 index 00000000000..470f48f96bd --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3402-signatureverificationsuccess.md @@ -0,0 +1,35 @@ +--- +title: "3402 - SignatureVerificationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2d3a3026-25a8-4f13-a76f-8d3afdeb3bf3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3402 - SignatureVerificationSuccess +## プロパティ + +||| +|-|-| +|ID|3402| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、署名の検証に成功すると生成されます。 + +## メッセージ + 署名の検証に成功しました + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3403-wrappedkeydecryptionstart.md b/docs/framework/wcf/diagnostics/etw/3403-wrappedkeydecryptionstart.md new file mode 100644 index 00000000000..e0d6bcd6009 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3403-wrappedkeydecryptionstart.md @@ -0,0 +1,35 @@ +--- +title: "3403 - WrappedKeyDecryptionStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 267e2b54-6c42-42c0-bb2e-7e6af013bc6b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3403 - WrappedKeyDecryptionStart +## プロパティ + +||| +|-|-| +|ID|3403| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ラップされたキーの解読が開始されたときに生成されます。 + +## メッセージ + ラップされたキーの解読を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3404-wrappedkeydecryptionsuccess.md b/docs/framework/wcf/diagnostics/etw/3404-wrappedkeydecryptionsuccess.md new file mode 100644 index 00000000000..ac51a99a390 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3404-wrappedkeydecryptionsuccess.md @@ -0,0 +1,35 @@ +--- +title: "3404 - WrappedKeyDecryptionSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 35ae79a1-ec00-4db7-9073-4a5dbd62dc82 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3404 - WrappedKeyDecryptionSuccess +## プロパティ + +||| +|-|-| +|ID|3404| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ラップされたキーの解読に成功すると生成されます。 + +## メッセージ + ラップされたキーの解読に成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3405-encrypteddataprocessingstart.md b/docs/framework/wcf/diagnostics/etw/3405-encrypteddataprocessingstart.md new file mode 100644 index 00000000000..120cb7375fd --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3405-encrypteddataprocessingstart.md @@ -0,0 +1,35 @@ +--- +title: "3405 - EncryptedDataProcessingStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bdb6e4e8-ec85-4629-a43a-7836d445ecab +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3405 - EncryptedDataProcessingStart +## プロパティ + +||| +|-|-| +|ID|3405| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、暗号化されたデータの処理が開始されたときに生成されます。 + +## メッセージ + 暗号化されたデータの処理を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3406-encrypteddataprocessingsuccess.md b/docs/framework/wcf/diagnostics/etw/3406-encrypteddataprocessingsuccess.md new file mode 100644 index 00000000000..ca76e2acc75 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3406-encrypteddataprocessingsuccess.md @@ -0,0 +1,35 @@ +--- +title: "3406 - EncryptedDataProcessingSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7065c508-46c4-49ea-a7cf-e038e9246e29 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3406 - EncryptedDataProcessingSuccess +## プロパティ + +||| +|-|-| +|ID|3406| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、暗号化されたデータの処理が成功したときに生成されます。 + +## メッセージ + 暗号化されたデータの処理に成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3407-httppipelineprocessinboundrequeststart.md b/docs/framework/wcf/diagnostics/etw/3407-httppipelineprocessinboundrequeststart.md new file mode 100644 index 00000000000..563c88b4d87 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3407-httppipelineprocessinboundrequeststart.md @@ -0,0 +1,35 @@ +--- +title: "3407 - HttpPipelineProcessInboundRequestStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f9cc34e8-f4e1-43c8-823f-6186ee5e676f +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3407 - HttpPipelineProcessInboundRequestStart +## プロパティ + +||| +|-|-| +|ID|3407| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、http メッセージ ハンドラーが受信要求の処理を開始したときに生成されます。 + +## メッセージ + http メッセージ ハンドラーは、受信要求の処理を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3408-httppipelinebeginprocessinboundrequeststart.md b/docs/framework/wcf/diagnostics/etw/3408-httppipelinebeginprocessinboundrequeststart.md new file mode 100644 index 00000000000..04a40fe0f57 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3408-httppipelinebeginprocessinboundrequeststart.md @@ -0,0 +1,35 @@ +--- +title: "3408 - HttpPipelineBeginProcessInboundRequestStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7ca229e2-93bb-4993-807c-9ad5d4ab5092 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3408 - HttpPipelineBeginProcessInboundRequestStart +## プロパティ + +||| +|-|-| +|ID|3408| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、http メッセージ ハンドラーが受信要求の非同期処理を開始したときに生成されます。 + +## メッセージ + http メッセージ ハンドラーは、受信要求の非同期処理を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3409-httppipelineprocessinboundrequeststop.md b/docs/framework/wcf/diagnostics/etw/3409-httppipelineprocessinboundrequeststop.md new file mode 100644 index 00000000000..9ee5381d58b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3409-httppipelineprocessinboundrequeststop.md @@ -0,0 +1,35 @@ +--- +title: "3409 - HttpPipelineProcessInboundRequestStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8f20271f-a30b-456c-a416-73329921c6d3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3409 - HttpPipelineProcessInboundRequestStop +## プロパティ + +||| +|-|-| +|ID|3409| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、http メッセージ ハンドラーが受信要求の処理を完了したときに生成されます。 + +## メッセージ + http メッセージ ハンドラーは、受信要求の処理を完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3410-httppipelinefaulted.md b/docs/framework/wcf/diagnostics/etw/3410-httppipelinefaulted.md new file mode 100644 index 00000000000..5e782b5eb13 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3410-httppipelinefaulted.md @@ -0,0 +1,35 @@ +--- +title: "3410 - HttpPipelineFaulted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8586c3c1-3da5-4f5b-b637-4671b14fb65e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3410 - HttpPipelineFaulted +## プロパティ + +||| +|-|-| +|ID|3410| +|キーワード|HTTP| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、HTTP メッセージ ハンドラーに障害が発生したときに生成されます。 + +## メッセージ + http メッセージ ハンドラーに障害があります。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3411-httppipelinetimeoutexception.md b/docs/framework/wcf/diagnostics/etw/3411-httppipelinetimeoutexception.md new file mode 100644 index 00000000000..be810ce787c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3411-httppipelinetimeoutexception.md @@ -0,0 +1,35 @@ +--- +title: "3411 - HttpPipelineTimeoutException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1f10a482-9e8f-4726-bdc8-b18a32e4dfdc +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3411 - HttpPipelineTimeoutException +## プロパティ + +||| +|-|-| +|ID|3411| +|キーワード|HTTP| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、WebSocket 接続がタイムアウトしたときに生成されます。 + +## メッセージ + WebSocket の接続がタイムアウトしました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3412-httppipelineprocessresponsestart.md b/docs/framework/wcf/diagnostics/etw/3412-httppipelineprocessresponsestart.md new file mode 100644 index 00000000000..e3e8667f751 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3412-httppipelineprocessresponsestart.md @@ -0,0 +1,35 @@ +--- +title: "3412 - HttpPipelineProcessResponseStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c4704eef-609f-45a1-8e15-ec94e9549789 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3412 - HttpPipelineProcessResponseStart +## プロパティ + +||| +|-|-| +|ID|3412| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、http メッセージ ハンドラーが応答の処理を開始したときに生成されます。 + +## メッセージ + http メッセージ ハンドラーは、応答の処理を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3413-httppipelinebeginprocessresponsestart.md b/docs/framework/wcf/diagnostics/etw/3413-httppipelinebeginprocessresponsestart.md new file mode 100644 index 00000000000..2a5190e952d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3413-httppipelinebeginprocessresponsestart.md @@ -0,0 +1,35 @@ +--- +title: "3413 - HttpPipelineBeginProcessResponseStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 85c4d51b-f5b0-4bf4-86ce-6296115dc120 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3413 - HttpPipelineBeginProcessResponseStart +## プロパティ + +||| +|-|-| +|ID|3413| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、http メッセージ ハンドラーが応答の非同期処理を開始したときに生成されます。 + +## メッセージ + http メッセージ ハンドラーは、応答の非同期処理を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3414-httppipelineprocessresponsestop.md b/docs/framework/wcf/diagnostics/etw/3414-httppipelineprocessresponsestop.md new file mode 100644 index 00000000000..731b56b781e --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3414-httppipelineprocessresponsestop.md @@ -0,0 +1,35 @@ +--- +title: "3414 - HttpPipelineProcessResponseStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 71ebd2ee-aedd-47ef-9a2b-00f778f7e225 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3414 - HttpPipelineProcessResponseStop +## プロパティ + +||| +|-|-| +|ID|3414| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、http メッセージ ハンドラーが応答の処理を完了したときに生成されます。 + +## メッセージ + http メッセージ ハンドラーは、応答の処理を完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3415-websocketconnectionrequestsendstart.md b/docs/framework/wcf/diagnostics/etw/3415-websocketconnectionrequestsendstart.md new file mode 100644 index 00000000000..9f05174e1d1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3415-websocketconnectionrequestsendstart.md @@ -0,0 +1,35 @@ +--- +title: "3415 - WebSocketConnectionRequestSendStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2fdf39ec-3aad-45bf-ba80-759e6e10fe37 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3415 - WebSocketConnectionRequestSendStart +## プロパティ + +||| +|-|-| +|ID|3415| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket 接続要求の送信が開始したときに生成されます。 + +## メッセージ + '%1' への WebSocket 接続要求の送信を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3416-websocketconnectionrequestsendstop.md b/docs/framework/wcf/diagnostics/etw/3416-websocketconnectionrequestsendstop.md new file mode 100644 index 00000000000..a4700685916 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3416-websocketconnectionrequestsendstop.md @@ -0,0 +1,35 @@ +--- +title: "3416 - WebSocketConnectionRequestSendStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2288f390-9263-4acf-b0ef-b0cab82bbec1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3416 - WebSocketConnectionRequestSendStop +## プロパティ + +||| +|-|-| +|ID|3416| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket 接続要求の送信が停止したときに生成されます。 + +## メッセージ + WebSocketId:%1 の接続要求を送信しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3417-websocketconnectionacceptstart.md b/docs/framework/wcf/diagnostics/etw/3417-websocketconnectionacceptstart.md new file mode 100644 index 00000000000..66f4a2e8f75 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3417-websocketconnectionacceptstart.md @@ -0,0 +1,35 @@ +--- +title: "3417 - WebSocketConnectionAcceptStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9d595fe3-2276-4d77-85c8-b6a966199c5b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3417 - WebSocketConnectionAcceptStart +## プロパティ + +||| +|-|-| +|ID|3417| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket 接続の受け入れが開始されたときに生成されます。 + +## メッセージ + WebSocket 接続の受け入れを開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3418-websocketconnectionaccepted.md b/docs/framework/wcf/diagnostics/etw/3418-websocketconnectionaccepted.md new file mode 100644 index 00000000000..c0a50bd0771 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3418-websocketconnectionaccepted.md @@ -0,0 +1,35 @@ +--- +title: "3418 - WebSocketConnectionAccepted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 684a1806-27a4-4ac8-87d4-9089d55def13 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3418 - WebSocketConnectionAccepted +## プロパティ + +||| +|-|-| +|ID|3418| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket 接続が受け入れられたときに生成されます。 + +## メッセージ + WebSocketId:%1 の接続を受け入れました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3419-websocketconnectiondeclined.md b/docs/framework/wcf/diagnostics/etw/3419-websocketconnectiondeclined.md new file mode 100644 index 00000000000..0a1ea76f8ef --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3419-websocketconnectiondeclined.md @@ -0,0 +1,35 @@ +--- +title: "3419 - WebSocketConnectionDeclined | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d1d27f33-7d59-40c7-b464-6cd1f13b7c72 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3419 - WebSocketConnectionDeclined +## プロパティ + +||| +|-|-| +|ID|3419| +|キーワード|HTTP| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、WebSocket 接続が拒否されたときに生成されます。 + +## メッセージ + WebSocket 接続が状態コード '%1' で拒否されました + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3420-websocketconnectionfailed.md b/docs/framework/wcf/diagnostics/etw/3420-websocketconnectionfailed.md new file mode 100644 index 00000000000..c497cc704f0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3420-websocketconnectionfailed.md @@ -0,0 +1,35 @@ +--- +title: "3420 - WebSocketConnectionFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1b5ed1ce-ba57-473c-bc64-fd52646ed3a6 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3420 - WebSocketConnectionFailed +## プロパティ + +||| +|-|-| +|ID|3420| +|キーワード|HTTP| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、WebSocket 接続要求に失敗したときに生成されます。 + +## メッセージ + WebSocket 接続要求が失敗しました: '%1' + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3421-websocketconnectionaborted.md b/docs/framework/wcf/diagnostics/etw/3421-websocketconnectionaborted.md new file mode 100644 index 00000000000..6e8a25edd5a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3421-websocketconnectionaborted.md @@ -0,0 +1,35 @@ +--- +title: "3421 - WebSocketConnectionAborted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6ca325f5-7a06-4719-a236-72767a8e0530 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3421 - WebSocketConnectionAborted +## プロパティ + +||| +|-|-| +|ID|3421| +|キーワード|HTTP| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、WebSocket 接続が中止されときに生成されます。 + +## メッセージ + WebSocketId:%1 の接続が中止されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3422-websocketasyncwritestart.md b/docs/framework/wcf/diagnostics/etw/3422-websocketasyncwritestart.md new file mode 100644 index 00000000000..98b24b9d0b2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3422-websocketasyncwritestart.md @@ -0,0 +1,35 @@ +--- +title: "3422 - WebSocketAsyncWriteStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4d0c7ab4-9044-464b-b2dc-0b5e59a773aa +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3422 - WebSocketAsyncWriteStart +## プロパティ + +||| +|-|-| +|ID|3422| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket 非同期書き込みが開始されたときに生成されます。 + +## メッセージ + WebSocketId:%1 が '%3' に '%2' バイトを書き込んでいます。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3423-websocketasyncwritestop.md b/docs/framework/wcf/diagnostics/etw/3423-websocketasyncwritestop.md new file mode 100644 index 00000000000..efb63dbc597 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3423-websocketasyncwritestop.md @@ -0,0 +1,35 @@ +--- +title: "3423 - WebSocketAsyncWriteStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b2074414-abad-4643-ba38-f94b331def93 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3423 - WebSocketAsyncWriteStop +## プロパティ + +||| +|-|-| +|ID|3423| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket の非同期書き込みが停止されたときに生成されます。 + +## メッセージ + WebSocketId:%1 が非同期書き込みを停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3424-websocketasyncreadstart.md b/docs/framework/wcf/diagnostics/etw/3424-websocketasyncreadstart.md new file mode 100644 index 00000000000..8d7f71d4c9e --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3424-websocketasyncreadstart.md @@ -0,0 +1,35 @@ +--- +title: "3424 - WebSocketAsyncReadStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fdcbca02-163d-4dd3-aa40-9fd9a149eb10 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3424 - WebSocketAsyncReadStart +## プロパティ + +||| +|-|-| +|ID|3424| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket 非同期読み取りが開始されたときに生成されます。 + +## メッセージ + WebSocketId:%1 が読み取りを開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3425-websocketasyncreadstop.md b/docs/framework/wcf/diagnostics/etw/3425-websocketasyncreadstop.md new file mode 100644 index 00000000000..769bd1784d2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3425-websocketasyncreadstop.md @@ -0,0 +1,35 @@ +--- +title: "3425 - WebSocketAsyncReadStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6d86fd8f-d430-45c0-94ee-827f4fa5881a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3425 - WebSocketAsyncReadStop +## プロパティ + +||| +|-|-| +|ID|3425| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket 非同期読み取りが停止したときに生成されます。 + +## メッセージ + WebSocketId:%1 が '%3' から '%2' バイトを読み取りました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3426-websocketclosesent.md b/docs/framework/wcf/diagnostics/etw/3426-websocketclosesent.md new file mode 100644 index 00000000000..546e9ebb794 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3426-websocketclosesent.md @@ -0,0 +1,35 @@ +--- +title: "3426 - WebSocketCloseSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2eedb6bb-c114-40bb-9b24-e5f00723a24a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3426 - WebSocketCloseSent +## プロパティ + +||| +|-|-| +|ID|3426| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket の終了が送信されると生成されます。 + +## メッセージ + WebSocketId:%1 が、終了ステータス '%3' の終了メッセージを '%2' に送信しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3427-websocketcloseoutputsent.md b/docs/framework/wcf/diagnostics/etw/3427-websocketcloseoutputsent.md new file mode 100644 index 00000000000..325b0bed97b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3427-websocketcloseoutputsent.md @@ -0,0 +1,35 @@ +--- +title: "3427 - WebSocketCloseOutputSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c9de20d8-9f53-432d-8100-c05387441f65 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3427 - WebSocketCloseOutputSent +## プロパティ + +||| +|-|-| +|ID|3427| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket の終了出力が送信されたときに生成されます。 + +## メッセージ + WebSocketId:%1 が、終了ステータス '%3' の終了出力メッセージを '%2' に送信しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3428-websocketconnectionclosed.md b/docs/framework/wcf/diagnostics/etw/3428-websocketconnectionclosed.md new file mode 100644 index 00000000000..b42bd398d96 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3428-websocketconnectionclosed.md @@ -0,0 +1,35 @@ +--- +title: "3428 - WebSocketConnectionClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cb16c9da-37b3-4cbd-800e-0d1691eb0bb2 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3428 - WebSocketConnectionClosed +## プロパティ + +||| +|-|-| +|ID|3428| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket の接続が終了したときに生成されます。 + +## メッセージ + WebSocketId:%1 の接続を終了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3429-websocketclosestatusreceived.md b/docs/framework/wcf/diagnostics/etw/3429-websocketclosestatusreceived.md new file mode 100644 index 00000000000..b4336ea709c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3429-websocketclosestatusreceived.md @@ -0,0 +1,35 @@ +--- +title: "3429 - WebSocketCloseStatusReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b4f16083-cb55-4215-af12-478d5e70301e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3429 - WebSocketCloseStatusReceived +## プロパティ + +||| +|-|-| +|ID|3429| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebSocket の終了ステータスを受信したときに生成されます。 + +## メッセージ + WebSocketId:%1 が、状態 '%2' の接続終了メッセージを受信しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3430-websocketuseversionfromclientwebsocketfactory.md b/docs/framework/wcf/diagnostics/etw/3430-websocketuseversionfromclientwebsocketfactory.md new file mode 100644 index 00000000000..30367a3857e --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3430-websocketuseversionfromclientwebsocketfactory.md @@ -0,0 +1,35 @@ +--- +title: "3430 - WebSocketUseVersionFromClientWebSocketFactory | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fb04adb2-e629-4ae7-b3a6-5512f3927cb2 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3430 - WebSocketUseVersionFromClientWebSocketFactory +## プロパティ + +||| +|-|-| +|ID|3430| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、クライアント WebSocket ファクトリから WebSocketVersion を使用しているときに生成されます。 + +## メッセージ + 型 '%1' のクライアント WebSocket ファクトリから WebSocketVersion を使用しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3431-websocketcreateclientwebsocketwithfactory.md b/docs/framework/wcf/diagnostics/etw/3431-websocketcreateclientwebsocketwithfactory.md new file mode 100644 index 00000000000..30c3631ca5b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3431-websocketcreateclientwebsocketwithfactory.md @@ -0,0 +1,35 @@ +--- +title: "3431 - WebSocketCreateClientWebSocketWithFactory | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8311f19c-970f-436a-b985-0dc8bcac85c0 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3431 - WebSocketCreateClientWebSocketWithFactory +## プロパティ + +||| +|-|-| +|ID|3431| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、クライアント WebSocket が作成されるときに生成されます。 + +## メッセージ + 型 '%1' のファクトリでクライアント WebSocket を作成しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3553-xamlservicesloadstart.md b/docs/framework/wcf/diagnostics/etw/3553-xamlservicesloadstart.md new file mode 100644 index 00000000000..ba87b034e23 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3553-xamlservicesloadstart.md @@ -0,0 +1,35 @@ +--- +title: "3553 - XamlServicesLoadStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 23b6e14a-019f-48fc-b2d5-aaa3dc88d79a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3553 - XamlServicesLoadStart +## プロパティ + +||| +|-|-| +|ID|3553| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは XamlServicesLoad が開始されると生成されます。 + +## メッセージ + XamlServicesLoad が開始します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3554-xamlservicesloadstop.md b/docs/framework/wcf/diagnostics/etw/3554-xamlservicesloadstop.md new file mode 100644 index 00000000000..bc29707fa0d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3554-xamlservicesloadstop.md @@ -0,0 +1,35 @@ +--- +title: "3554 - XamlServicesLoadStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1d3a3bd9-fdaf-4c57-bede-e8392b077c99 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3554 - XamlServicesLoadStop +## プロパティ + +||| +|-|-| +|ID|3554| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは XamlServicesLoad が停止されると生成されます。 + +## メッセージ + XamlServicesLoad が停止します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3555-createworkflowservicehoststart.md b/docs/framework/wcf/diagnostics/etw/3555-createworkflowservicehoststart.md new file mode 100644 index 00000000000..1a9e094cb0d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3555-createworkflowservicehoststart.md @@ -0,0 +1,35 @@ +--- +title: "3555 - CreateWorkflowServiceHostStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 14038438-774f-4651-b83e-c149da688a1b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3555 - CreateWorkflowServiceHostStart +## プロパティ + +||| +|-|-| +|ID|3555| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、CreateWorkflowServiceHost が開始すると生成されます。 + +## メッセージ + CreateWorkflowServiceHost が開始します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3556-createworkflowservicehoststop.md b/docs/framework/wcf/diagnostics/etw/3556-createworkflowservicehoststop.md new file mode 100644 index 00000000000..d127d597384 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3556-createworkflowservicehoststop.md @@ -0,0 +1,35 @@ +--- +title: "3556 - CreateWorkflowServiceHostStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bac6387b-1096-4e17-9907-8e464ee780db +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3556 - CreateWorkflowServiceHostStop +## プロパティ + +||| +|-|-| +|ID|3556| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、CreateWorkflowServiceHost が停止すると生成されます。 + +## メッセージ + CreateWorkflowServiceHost が停止します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3558-serviceactivationstart.md b/docs/framework/wcf/diagnostics/etw/3558-serviceactivationstart.md new file mode 100644 index 00000000000..d8a1fb00917 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3558-serviceactivationstart.md @@ -0,0 +1,35 @@ +--- +title: "3558 - ServiceActivationStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9062c6f4-2252-460c-ad29-f8effa72fcd1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3558 - ServiceActivationStart +## プロパティ + +||| +|-|-| +|ID|3558| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービスのアクティブ化を開始すると生成されます。 + +## メッセージ + サービスのアクティブ化を開始します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3559-serviceactivationstop.md b/docs/framework/wcf/diagnostics/etw/3559-serviceactivationstop.md new file mode 100644 index 00000000000..d975c613aff --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3559-serviceactivationstop.md @@ -0,0 +1,35 @@ +--- +title: "3559 - ServiceActivationStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 57aa18b4-6512-4f1a-a4e3-71f58a867ed2 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3559 - ServiceActivationStop +## プロパティ + +||| +|-|-| +|ID|3559| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービスのアクティブ化を停止すると生成されます。 + +## メッセージ + サービスのアクティブ化を停止します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3560-serviceactivationavailablememory.md b/docs/framework/wcf/diagnostics/etw/3560-serviceactivationavailablememory.md new file mode 100644 index 00000000000..303141fd2c5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3560-serviceactivationavailablememory.md @@ -0,0 +1,35 @@ +--- +title: "3560 - ServiceActivationAvailableMemory | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b9360acf-53e6-422f-bacf-12918088c824 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3560 - ServiceActivationAvailableMemory +## プロパティ + +||| +|-|-| +|ID|3560| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービスのアクティブ化に使用できるメモリ サイズを取得するために生成されます。 + +## メッセージ + 使用可能なメモリ \(バイト\): %1 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3800-routingserviceclosingclient.md b/docs/framework/wcf/diagnostics/etw/3800-routingserviceclosingclient.md new file mode 100644 index 00000000000..cf7623284a9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3800-routingserviceclosingclient.md @@ -0,0 +1,35 @@ +--- +title: "3800 - RoutingServiceClosingClient | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0baf214b-fa19-4871-a314-735c5939f92c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3800 - RoutingServiceClosingClient +## プロパティ + +||| +|-|-| +|ID|3800| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスがクライアントを終了しているときに生成されます。 + +## メッセージ + ルーティング サービスがクライアント '%1' を終了しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3801-routingservicechannelfaulted.md b/docs/framework/wcf/diagnostics/etw/3801-routingservicechannelfaulted.md new file mode 100644 index 00000000000..1fdbe02e95a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3801-routingservicechannelfaulted.md @@ -0,0 +1,35 @@ +--- +title: "3801 - RoutingServiceChannelFaulted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 06cd2a1a-ee5f-4f44-900c-15b5bb6e302b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3801 - RoutingServiceChannelFaulted +## プロパティ + +||| +|-|-| +|ID|3801| +|キーワード|RoutingServices| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービス クライアントが失敗したときに生成されます。 + +## メッセージ + ルーティング サービスのクライアント '%1' が途中終了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3802-routingservicecompletingoneway.md b/docs/framework/wcf/diagnostics/etw/3802-routingservicecompletingoneway.md new file mode 100644 index 00000000000..cae343673de --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3802-routingservicecompletingoneway.md @@ -0,0 +1,35 @@ +--- +title: "3802 - RoutingServiceCompletingOneWay | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 34bfe6c6-b6d0-4b38-854f-4ad245e90e15 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3802 - RoutingServiceCompletingOneWay +## プロパティ + +||| +|-|-| +|ID|3802| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスの一方向メッセージを完了するときに生成されます。 + +## メッセージ + ルーティング サービスの一方向メッセージを完了しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3803-routingserviceprocessingfailure.md b/docs/framework/wcf/diagnostics/etw/3803-routingserviceprocessingfailure.md new file mode 100644 index 00000000000..f4e7a4bd238 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3803-routingserviceprocessingfailure.md @@ -0,0 +1,35 @@ +--- +title: "3803 - RoutingServiceProcessingFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8d01aa0d-b456-49c0-8255-1040e2e66a57 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3803 - RoutingServiceProcessingFailure +## プロパティ + +||| +|-|-| +|ID|3803| +|キーワード|RoutingServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、エンドポイントでのメッセージの処理中にルーティング サービスでエラーが発生したときに生成されます。 + +## メッセージ + アドレス '%1' のエンドポイントでメッセージを処理しているときにルーティング サービスでエラーが発生しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3804-routingservicecreatingclientforendpoint.md b/docs/framework/wcf/diagnostics/etw/3804-routingservicecreatingclientforendpoint.md new file mode 100644 index 00000000000..42c6100fbf4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3804-routingservicecreatingclientforendpoint.md @@ -0,0 +1,35 @@ +--- +title: "3804 - RoutingServiceCreatingClientForEndpoint | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f53304b0-1201-4fff-94ed-d054774871c7 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3804 - RoutingServiceCreatingClientForEndpoint +## プロパティ + +||| +|-|-| +|ID|3804| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスがエンドポイントのクライアントを作成しているときに生成されます。 + +## メッセージ + ルーティング サービスが、エンドポイント: '%1' のクライアントを作成しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3805-routingservicedisplayconfig.md b/docs/framework/wcf/diagnostics/etw/3805-routingservicedisplayconfig.md new file mode 100644 index 00000000000..4694c6ecb9a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3805-routingservicedisplayconfig.md @@ -0,0 +1,35 @@ +--- +title: "3805 - RoutingServiceDisplayConfig | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ae58c16e-25e1-4a64-8e8c-3d0006cff0f8 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3805 - RoutingServiceDisplayConfig +## プロパティ + +||| +|-|-| +|ID|3805| +|キーワード|RoutingServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスが RouteOnHeadersOnly に構成されると生成されます。 + +## メッセージ + ルーティング サービスは、RouteOnHeadersOnly: %1、SoapProcessingEnabled: %2、EnsureOrderedDispatch: %3 に構成されています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3807-routingservicecompletingtwoway.md b/docs/framework/wcf/diagnostics/etw/3807-routingservicecompletingtwoway.md new file mode 100644 index 00000000000..6bf5cf01d59 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3807-routingservicecompletingtwoway.md @@ -0,0 +1,35 @@ +--- +title: "3807 - RoutingServiceCompletingTwoWay | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9bcc3b48-1b84-4fb0-89b2-c54e45304007 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3807 - RoutingServiceCompletingTwoWay +## プロパティ + +||| +|-|-| +|ID|3807| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスの要求応答メッセージを完了しているときに生成されます。 + +## メッセージ + ルーティング サービスの要求応答メッセージを完了しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3809-routingservicemessageroutedtoendpoints.md b/docs/framework/wcf/diagnostics/etw/3809-routingservicemessageroutedtoendpoints.md new file mode 100644 index 00000000000..16842b4292b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3809-routingservicemessageroutedtoendpoints.md @@ -0,0 +1,35 @@ +--- +title: "3809 - RoutingServiceMessageRoutedToEndpoints | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 22479cc6-72d1-48df-912c-fc37bddeb043 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3809 - RoutingServiceMessageRoutedToEndpoints +## プロパティ + +||| +|-|-| +|ID|3809| +|キーワード|RoutingServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスがエンドポイントにルーティングされたときに生成されます。 + +## メッセージ + ルーティング サービスにより、ID: '%1' のメッセージが %2 エンドポイント リストにルーティングされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3810-routingserviceconfigurationapplied.md b/docs/framework/wcf/diagnostics/etw/3810-routingserviceconfigurationapplied.md new file mode 100644 index 00000000000..5ea95a1f6e7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3810-routingserviceconfigurationapplied.md @@ -0,0 +1,35 @@ +--- +title: "3810 - RoutingServiceConfigurationApplied | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1bef4b66-6a63-4f42-8396-6e21510fa4fb +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3810 - RoutingServiceConfigurationApplied +## プロパティ + +||| +|-|-| +|ID|3810| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング構成がルーティング サービスに適用されると生成されます。 + +## メッセージ + 新しい RoutingConfiguration がルーティング サービスに適用されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3815-routingserviceprocessingmessage.md b/docs/framework/wcf/diagnostics/etw/3815-routingserviceprocessingmessage.md new file mode 100644 index 00000000000..cf1070c79fa --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3815-routingserviceprocessingmessage.md @@ -0,0 +1,35 @@ +--- +title: "3815 - RoutingServiceProcessingMessage | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c632b4a6-31f2-4f81-a484-02eb340ae951 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3815 - RoutingServiceProcessingMessage +## プロパティ + +||| +|-|-| +|ID|3815| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスがメッセージを処理しているときに生成されます。 + +## メッセージ + ルーティング サービスが、トランザクション: %4 で受信された ID: '%1'、アクション: '%2'、着信 URL: '%3' のメッセージを処理しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3816-routingservicetransmittingmessage.md b/docs/framework/wcf/diagnostics/etw/3816-routingservicetransmittingmessage.md new file mode 100644 index 00000000000..864e72cd6ce --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3816-routingservicetransmittingmessage.md @@ -0,0 +1,35 @@ +--- +title: "3816 - RoutingServiceTransmittingMessage | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a7ee6e3b-4a02-47bd-b004-46abb6dd820e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3816 - RoutingServiceTransmittingMessage +## プロパティ + +||| +|-|-| +|ID|3816| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスがメッセージを転送しているときに生成されます。 + +## メッセージ + ルーティング サービスが、ID: '%1' \[operation %2\] のメッセージを '%3' に転送しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3817-routingservicecommittingtransaction.md b/docs/framework/wcf/diagnostics/etw/3817-routingservicecommittingtransaction.md new file mode 100644 index 00000000000..b838c397061 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3817-routingservicecommittingtransaction.md @@ -0,0 +1,35 @@ +--- +title: "3817 - RoutingServiceCommittingTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 85d71995-3a19-4955-81ba-3e72fe4c5b32 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3817 - RoutingServiceCommittingTransaction +## プロパティ + +||| +|-|-| +|ID|3817| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスがメッセージをコミットしているときに生成されます。 + +## メッセージ + ルーティング サービスが、ID: '%1' のトランザクションをコミットしています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3818-routingserviceduplexcallbackexception.md b/docs/framework/wcf/diagnostics/etw/3818-routingserviceduplexcallbackexception.md new file mode 100644 index 00000000000..8ef034c68d6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3818-routingserviceduplexcallbackexception.md @@ -0,0 +1,35 @@ +--- +title: "3818 - RoutingServiceDuplexCallbackException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aafc3932-5a52-4b99-89ca-09341ac4d39b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3818 - RoutingServiceDuplexCallbackException +## プロパティ + +||| +|-|-| +|ID|3818| +|キーワード|RoutingServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスで二重コールバックの例外が発生したときに生成されます。 + +## メッセージ + ルーティング サービスのコンポーネント %1 で二重コールバックの例外が発生しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3819-routingservicemovedtobackup.md b/docs/framework/wcf/diagnostics/etw/3819-routingservicemovedtobackup.md new file mode 100644 index 00000000000..d66eb4012e7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3819-routingservicemovedtobackup.md @@ -0,0 +1,35 @@ +--- +title: "3819 - RoutingServiceMovedToBackup | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bf4086de-efd4-413c-9bc3-32a85b6b6722 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3819 - RoutingServiceMovedToBackup +## プロパティ + +||| +|-|-| +|ID|3819| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスがバックアップ エンドポイントに移動されたときに生成されます。 + +## メッセージ + ID: '%1' \[operation %2\] のルーティング サービス メッセージがバックアップ エンドポイント '%3' に移動されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3820-routingservicecreatingtransaction.md b/docs/framework/wcf/diagnostics/etw/3820-routingservicecreatingtransaction.md new file mode 100644 index 00000000000..237cd2f348a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3820-routingservicecreatingtransaction.md @@ -0,0 +1,35 @@ +--- +title: "3820 - RoutingServiceCreatingTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 11b15ba8-7d62-4235-8efd-bc6b60218247 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3820 - RoutingServiceCreatingTransaction +## プロパティ + +||| +|-|-| +|ID|3820| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスがメッセージを処理するために新しいトランザクションを作成したときに生成されます。 + +## メッセージ + ルーティング サービスが、メッセージを処理するために ID '%1' の新しいトランザクションを作成しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3821-routingserviceclosefailed.md b/docs/framework/wcf/diagnostics/etw/3821-routingserviceclosefailed.md new file mode 100644 index 00000000000..bd74b047322 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3821-routingserviceclosefailed.md @@ -0,0 +1,35 @@ +--- +title: "3821 - RoutingServiceCloseFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 584cc4d0-6c9e-4dce-b1d1-5bcc9a41011b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3821 - RoutingServiceCloseFailed +## プロパティ + +||| +|-|-| +|ID|3821| +|キーワード|RoutingServices| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、発信クライアントを終了しているときにルーティング サービスでエラーが発生すると生成されます。 + +## メッセージ + 発信クライアント '%1' を終了しているときにルーティング サービスでエラーが発生しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3822-routingservicesendingresponse.md b/docs/framework/wcf/diagnostics/etw/3822-routingservicesendingresponse.md new file mode 100644 index 00000000000..9f14e64fb31 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3822-routingservicesendingresponse.md @@ -0,0 +1,35 @@ +--- +title: "3822 - RoutingServiceSendingResponse | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 46965a31-eab0-4141-843d-800ccc0a6a7e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3822 - RoutingServiceSendingResponse +## プロパティ + +||| +|-|-| +|ID|3822| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスが応答メッセージを返送しているときに生成されます。 + +## メッセージ + ルーティング サービスが、Action '%1' を含む応答メッセージを返送しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3823-routingservicesendingfaultresponse.md b/docs/framework/wcf/diagnostics/etw/3823-routingservicesendingfaultresponse.md new file mode 100644 index 00000000000..b21c7d1d58b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3823-routingservicesendingfaultresponse.md @@ -0,0 +1,35 @@ +--- +title: "3823 - RoutingServiceSendingFaultResponse | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 843cbce6-f2df-4067-aaf2-394b65034282 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3823 - RoutingServiceSendingFaultResponse +## プロパティ + +||| +|-|-| +|ID|3823| +|キーワード|RoutingServices| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスがエラー応答メッセージを返送しているときに生成されます。 + +## メッセージ + ルーティング サービスが、Action '%1' を含むエラー応答メッセージを返送しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3824-routingservicecompletingreceivecontext.md b/docs/framework/wcf/diagnostics/etw/3824-routingservicecompletingreceivecontext.md new file mode 100644 index 00000000000..5f169ca7aec --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3824-routingservicecompletingreceivecontext.md @@ -0,0 +1,35 @@ +--- +title: "3824 - RoutingServiceCompletingReceiveContext | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b716f0a1-c2ce-4e7c-b2d6-405a488c6591 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3824 - RoutingServiceCompletingReceiveContext +## プロパティ + +||| +|-|-| +|ID|3824| +|キーワード|RoutingServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、指定した ID のメッセージに対してルーティング サービスが ReceiveContext.Complete を呼び出しているときに生成されます。 + +## メッセージ + ルーティング サービスが、ID: '%1' のメッセージに対して ReceiveContext.Complete を呼び出しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3825-routingserviceabandoningreceivecontext.md b/docs/framework/wcf/diagnostics/etw/3825-routingserviceabandoningreceivecontext.md new file mode 100644 index 00000000000..bf6300a9e70 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3825-routingserviceabandoningreceivecontext.md @@ -0,0 +1,35 @@ +--- +title: "3825 - RoutingServiceAbandoningReceiveContext | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3e16528e-d340-4245-89b2-f8ac16621e94 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3825 - RoutingServiceAbandoningReceiveContext +## プロパティ + +||| +|-|-| +|ID|3825| +|キーワード|RoutingServices| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、指定した ID を持つメッセージに対してルーティング サービスが ReceiveContext.Abandon を呼び出しているときに生成されます。 + +## メッセージ + ルーティング サービスが、ID: '%1' のメッセージに対して ReceiveContext.Abandon を呼び出しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3826-routingserviceusingexistingtransaction.md b/docs/framework/wcf/diagnostics/etw/3826-routingserviceusingexistingtransaction.md new file mode 100644 index 00000000000..c42b889f497 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3826-routingserviceusingexistingtransaction.md @@ -0,0 +1,35 @@ +--- +title: "3826 - RoutingServiceUsingExistingTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e73b2492-10e9-418e-bdf3-a2605d046acb +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3826 - RoutingServiceUsingExistingTransaction +## プロパティ + +||| +|-|-| +|ID|3826| +|キーワード|RoutingServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスが既存のトランザクションを使用してメッセージを送信するときに生成されます。 + +## メッセージ + ルーティング サービスは、既存のトランザクション '%1' を使用してメッセージを送信します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3827-routingservicetransmitfailed.md b/docs/framework/wcf/diagnostics/etw/3827-routingservicetransmitfailed.md new file mode 100644 index 00000000000..e0adb626a86 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3827-routingservicetransmitfailed.md @@ -0,0 +1,35 @@ +--- +title: "3827 - RoutingServiceTransmitFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 92e94472-e91e-4c9c-81b1-b5bb11655c04 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3827 - RoutingServiceTransmitFailed +## プロパティ + +||| +|-|-| +|ID|3827| +|キーワード|RoutingServices| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスの送信が失敗したときに生成されます。 + +## メッセージ + '%1' への送信中にルーティング サービスでエラーが発生しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3828-routingservicefiltertablematchstart.md b/docs/framework/wcf/diagnostics/etw/3828-routingservicefiltertablematchstart.md new file mode 100644 index 00000000000..73797d9cfaf --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3828-routingservicefiltertablematchstart.md @@ -0,0 +1,35 @@ +--- +title: "3828 - RoutingServiceFilterTableMatchStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 883b1215-6e24-49c6-9816-22e2e57a1264 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3828 - RoutingServiceFilterTableMatchStart +## プロパティ + +||| +|-|-| +|ID|3828| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ルーティング サービス MessageFilterTable の照合が開始されたときに生成されます。 + +## メッセージ + ルーティング サービス MessageFilterTable の照合が開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3829-routingservicefiltertablematchstop.md b/docs/framework/wcf/diagnostics/etw/3829-routingservicefiltertablematchstop.md new file mode 100644 index 00000000000..a855aeab101 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3829-routingservicefiltertablematchstop.md @@ -0,0 +1,35 @@ +--- +title: "3829 - RoutingServiceFilterTableMatchStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3355b8c2-2d5b-4c1b-8981-0cda08dee519 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3829 - RoutingServiceFilterTableMatchStop +## プロパティ + +||| +|-|-| +|ID|3829| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ルーティング サービス MessageFilterTable の照合が停止したときに生成されます。 + +## メッセージ + ルーティング サービス MessageFilterTable の照合が停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3830-routingserviceabortingchannel.md b/docs/framework/wcf/diagnostics/etw/3830-routingserviceabortingchannel.md new file mode 100644 index 00000000000..b1438a8af6e --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3830-routingserviceabortingchannel.md @@ -0,0 +1,35 @@ +--- +title: "3830 - RoutingServiceAbortingChannel | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fba86ec8-4360-43e5-be54-cce43270af21 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3830 - RoutingServiceAbortingChannel +## プロパティ + +||| +|-|-| +|ID|3830| +|キーワード|RoutingServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、指定されたチャネルでルーティング サービスが中止を呼び出しているときに生成されます。 + +## メッセージ + ルーティング サービスがチャネル '%1' で中止を呼び出しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3831-routingservicehandledexception.md b/docs/framework/wcf/diagnostics/etw/3831-routingservicehandledexception.md new file mode 100644 index 00000000000..f24d5ca9213 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3831-routingservicehandledexception.md @@ -0,0 +1,35 @@ +--- +title: "3831 - RoutingServiceHandledException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dd7351e4-3adb-4d53-9329-c88e968633af +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3831 - RoutingServiceHandledException +## プロパティ + +||| +|-|-| +|ID|3831| +|キーワード|RoutingServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスが例外を処理したときに生成されます。 + +## メッセージ + ルーティング サービスが例外を処理しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/3832-routingservicetransmitsucceeded.md b/docs/framework/wcf/diagnostics/etw/3832-routingservicetransmitsucceeded.md new file mode 100644 index 00000000000..209c4c8c400 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/3832-routingservicetransmitsucceeded.md @@ -0,0 +1,35 @@ +--- +title: "3832 - RoutingServiceTransmitSucceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 72e0c6b0-7ed2-4a48-aaa0-d5a761a9a469 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 3832 - RoutingServiceTransmitSucceeded +## プロパティ + +||| +|-|-| +|ID|3832| +|キーワード|RoutingServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング サービスが指定された ID を持つメッセージを正常に送信したときに生成されます。 + +## メッセージ + ルーティング サービスが、ID: '%1 \[operation %2\] のメッセージを '%3' に正常に送信しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4001-transportlistenersessionsreceived.md b/docs/framework/wcf/diagnostics/etw/4001-transportlistenersessionsreceived.md new file mode 100644 index 00000000000..7c1e67a84a8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4001-transportlistenersessionsreceived.md @@ -0,0 +1,35 @@ +--- +title: "4001 - TransportListenerSessionsReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a2c7bb92-f02d-4947-98fd-247b0a55d814 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4001 - TransportListenerSessionsReceived +## プロパティ + +||| +|-|-| +|ID|4001| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、トランスポート リスナー セッションの受信時に生成されます。 + +## メッセージ + '%1' でトランスポート リスナー セッションを受信しました + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4002-failfastexception.md b/docs/framework/wcf/diagnostics/etw/4002-failfastexception.md new file mode 100644 index 00000000000..7c7466f92ef --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4002-failfastexception.md @@ -0,0 +1,35 @@ +--- +title: "4002 - FailFastException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8b84fe87-916c-4923-bf49-9b6bf391fa34 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4002 - FailFastException +## プロパティ + +||| +|-|-| +|ID|4002| +|キーワード|ActivationServices| +|レベル|重大| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは FailFastException 時に生成されます。 + +## メッセージ + FailFastException。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4003-servicestartpipeerror.md b/docs/framework/wcf/diagnostics/etw/4003-servicestartpipeerror.md new file mode 100644 index 00000000000..63d5fdd6dd3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4003-servicestartpipeerror.md @@ -0,0 +1,35 @@ +--- +title: "4003 - ServiceStartPipeError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6001510b-49b1-40b3-9173-de1f0031a8e7 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4003 - ServiceStartPipeError +## プロパティ + +||| +|-|-| +|ID|4003| +|キーワード|ActivationServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、サービス開始パイプ エラーが発生すると生成されます。 + +## メッセージ + サービス開始パイプ エラー。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4008-dispatchsessionstart.md b/docs/framework/wcf/diagnostics/etw/4008-dispatchsessionstart.md new file mode 100644 index 00000000000..165d53b54b2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4008-dispatchsessionstart.md @@ -0,0 +1,35 @@ +--- +title: "4008 - DispatchSessionStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 488c78a7-aee0-4754-98d5-44afa838fed7 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4008 - DispatchSessionStart +## プロパティ + +||| +|-|-| +|ID|4008| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、セッション ディスパッチが開始されたときに生成されます。 + +## メッセージ + セッション ディスパッチを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/401-stopsignpostevent.md b/docs/framework/wcf/diagnostics/etw/401-stopsignpostevent.md new file mode 100644 index 00000000000..69912ff6a59 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/401-stopsignpostevent.md @@ -0,0 +1,40 @@ +--- +title: "401- StopSignPostEvent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e033d03a-510d-4300-aa65-ef02cb4807f2 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 401- StopSignPostEvent +## プロパティ + +||| +|-|-| +|ID|401| +|キーワード|トラブルシューティング| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、エンド ツー エンド アクティビティの終了を示します。 ここにはアクティビティの名前が指定されています。 + +## メッセージ + アクティビティの境界 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Extended Data|`xs:string`|アクティビティの名前。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4010-pendingsessionqueuefull.md b/docs/framework/wcf/diagnostics/etw/4010-pendingsessionqueuefull.md new file mode 100644 index 00000000000..160640ba78a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4010-pendingsessionqueuefull.md @@ -0,0 +1,35 @@ +--- +title: "4010 - PendingSessionQueueFull | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 14696793-16eb-4847-a530-fa2f90f682c9 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4010 - PendingSessionQueueFull +## プロパティ + +||| +|-|-| +|ID|4010| +|キーワード|ActivationServices| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、保留中のセッションのキューがいっぱいであるためにセッション ディスパッチが失敗すると生成されます。 + +## メッセージ + '%1' のセッション ディスパッチに失敗しました。保留セッション キューがいっぱいです。保留中の項目が '%2' 個あります。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4011-messagequeueregisterstart.md b/docs/framework/wcf/diagnostics/etw/4011-messagequeueregisterstart.md new file mode 100644 index 00000000000..048e4abd633 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4011-messagequeueregisterstart.md @@ -0,0 +1,35 @@ +--- +title: "4011 - MessageQueueRegisterStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ab806605-810a-406e-981e-38e25c66ac6f +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4011 - MessageQueueRegisterStart +## プロパティ + +||| +|-|-| +|ID|4011| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ キューの登録の開始時に生成されます。 + +## メッセージ + メッセージ キューの登録を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4012-messagequeueregisterabort.md b/docs/framework/wcf/diagnostics/etw/4012-messagequeueregisterabort.md new file mode 100644 index 00000000000..012ea961934 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4012-messagequeueregisterabort.md @@ -0,0 +1,35 @@ +--- +title: "4012 - MessageQueueRegisterAbort | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b992f9ee-bae5-4bad-99ad-e141e2f0b036 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4012 - MessageQueueRegisterAbort +## プロパティ + +||| +|-|-| +|ID|4012| +|キーワード|ActivationServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ キューの登録が中止されたときに生成されます。 + +## メッセージ + URI:'%2' のメッセージ キューの登録が状態:'%1' で中止されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4013-messagequeueunregistersucceeded.md b/docs/framework/wcf/diagnostics/etw/4013-messagequeueunregistersucceeded.md new file mode 100644 index 00000000000..0f164f78fd9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4013-messagequeueunregistersucceeded.md @@ -0,0 +1,35 @@ +--- +title: "4013 - MessageQueueUnregisterSucceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 16ed96c1-9f8d-4f08-b57c-5cba3b88b475 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4013 - MessageQueueUnregisterSucceeded +## プロパティ + +||| +|-|-| +|ID|4013| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ キューの登録解除が成功すると生成されます。 + +## メッセージ + URI:'%1' のメッセージ キューの登録解除に成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4014-messagequeueregisterfailed.md b/docs/framework/wcf/diagnostics/etw/4014-messagequeueregisterfailed.md new file mode 100644 index 00000000000..bce9cf99655 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4014-messagequeueregisterfailed.md @@ -0,0 +1,35 @@ +--- +title: "4014 - MessageQueueRegisterFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d8aa80ea-e251-4b54-ade7-bfbd6670a6ef +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4014 - MessageQueueRegisterFailed +## プロパティ + +||| +|-|-| +|ID|4014| +|キーワード|ActivationServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ キューの登録が失敗したときに生成されます。 + +## メッセージ + URI:'%1' のメッセージ キューの登録が状態:'%2' で失敗しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4015-messagequeueregistercompleted.md b/docs/framework/wcf/diagnostics/etw/4015-messagequeueregistercompleted.md new file mode 100644 index 00000000000..01645a6af9b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4015-messagequeueregistercompleted.md @@ -0,0 +1,35 @@ +--- +title: "4015 - MessageQueueRegisterCompleted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d8d65570-9dcc-436c-b446-a33404e31652 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4015 - MessageQueueRegisterCompleted +## プロパティ + +||| +|-|-| +|ID|4015| +|キーワード|ActivationServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ キューの登録が完了したときに生成されます。 + +## メッセージ + URI '%1' のメッセージ キューの登録が完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4016-messagequeueduplicatedsocketerror.md b/docs/framework/wcf/diagnostics/etw/4016-messagequeueduplicatedsocketerror.md new file mode 100644 index 00000000000..f80a2211455 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4016-messagequeueduplicatedsocketerror.md @@ -0,0 +1,35 @@ +--- +title: "4016 - MessageQueueDuplicatedSocketError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4c35cf2c-e6fc-48e2-bc40-3af01cb5d31e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4016 - MessageQueueDuplicatedSocketError +## プロパティ + +||| +|-|-| +|ID|4016| +|キーワード|ActivationServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ キューがソケットの複製に失敗すると生成されます。 + +## メッセージ + メッセージ キューがソケットの複製に失敗しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4019-messagequeueduplicatedsocketcomplete.md b/docs/framework/wcf/diagnostics/etw/4019-messagequeueduplicatedsocketcomplete.md new file mode 100644 index 00000000000..502652da583 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4019-messagequeueduplicatedsocketcomplete.md @@ -0,0 +1,35 @@ +--- +title: "4019 - MessageQueueDuplicatedSocketComplete | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2dc5bde8-4f98-45ac-a768-50d417e8b65e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4019 - MessageQueueDuplicatedSocketComplete +## プロパティ + +||| +|-|-| +|ID|4019| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ キューがソケットの複製を完了すると生成されます。 + +## メッセージ + MessageQueueDuplicatedSocketComplete + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/402-startsignpostevent.md b/docs/framework/wcf/diagnostics/etw/402-startsignpostevent.md new file mode 100644 index 00000000000..02b7f773af2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/402-startsignpostevent.md @@ -0,0 +1,40 @@ +--- +title: "402 - StartSignpostEvent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5e5be126-765d-4ac9-88e7-008e9ef4f0e5 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 402 - StartSignpostEvent +## プロパティ + +||| +|-|-| +|ID|402| +|キーワード|Troubleshooting| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、エンド ツー エンド アクティビティの開始を示します。ここにはアクティビティの名前が指定されています。 + +## メッセージ + アクティビティの境界。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Extended Data|`xs:string`|アクティビティの名前。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4020-tcptransportlistenerlisteningstart.md b/docs/framework/wcf/diagnostics/etw/4020-tcptransportlistenerlisteningstart.md new file mode 100644 index 00000000000..5797f1aab38 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4020-tcptransportlistenerlisteningstart.md @@ -0,0 +1,35 @@ +--- +title: "4020 - TcpTransportListenerListeningStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6c10fef2-2f12-462f-b266-3127a6e60379 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4020 - TcpTransportListenerListeningStart +## プロパティ + +||| +|-|-| +|ID|4020| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、TCP トランスポート リスナーがリッスンを開始したときに生成されます。 + +## メッセージ + TCP トランスポート リスナーが URI: '%1' でリッスンを開始しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4021-tcptransportlistenerlisteningstop.md b/docs/framework/wcf/diagnostics/etw/4021-tcptransportlistenerlisteningstop.md new file mode 100644 index 00000000000..1ace392ceda --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4021-tcptransportlistenerlisteningstop.md @@ -0,0 +1,35 @@ +--- +title: "4021 - TcpTransportListenerListeningStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 00108ffa-fe02-477e-b9aa-6f08f6849cd2 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4021 - TcpTransportListenerListeningStop +## プロパティ + +||| +|-|-| +|ID|4021| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、TCP トランスポート リスナーがリッスンしているときに生成されます。 + +## メッセージ + TCP トランスポート リスナーがリッスンしています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4022-webhostunregisterprotocolfailed.md b/docs/framework/wcf/diagnostics/etw/4022-webhostunregisterprotocolfailed.md new file mode 100644 index 00000000000..a46386784c0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4022-webhostunregisterprotocolfailed.md @@ -0,0 +1,35 @@ +--- +title: "4022 - WebhostUnregisterProtocolFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cdebf42c-d880-4509-82be-8fdc9f88d203 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4022 - WebhostUnregisterProtocolFailed +## プロパティ + +||| +|-|-| +|ID|4022| +|キーワード|ActivationServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、Web ホストのプロトコルの登録解除が失敗したときに生成されます。 + +## メッセージ + エラー コード:%1 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4023-wasclosealllistenerchannelinstancescompleted.md b/docs/framework/wcf/diagnostics/etw/4023-wasclosealllistenerchannelinstancescompleted.md new file mode 100644 index 00000000000..526b144ffc3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4023-wasclosealllistenerchannelinstancescompleted.md @@ -0,0 +1,35 @@ +--- +title: "4023 - WasCloseAllListenerChannelInstancesCompleted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 95dd5810-78a5-4183-98ef-77267dd64aac +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4023 - WasCloseAllListenerChannelInstancesCompleted +## プロパティ + +||| +|-|-| +|ID|4023| +|キーワード|ActivationServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、すべてのリスナー チャネルのインスタンスの終了が完了すると生成されます。 + +## メッセージ + WAS がすべてのリスナー チャネル インスタンスのクローズを完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4024-wasclosealllistenerchannelinstancesfailed.md b/docs/framework/wcf/diagnostics/etw/4024-wasclosealllistenerchannelinstancesfailed.md new file mode 100644 index 00000000000..b35a720ae47 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4024-wasclosealllistenerchannelinstancesfailed.md @@ -0,0 +1,35 @@ +--- +title: "4024 - WasCloseAllListenerChannelInstancesFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 73f0dc73-f0b7-4c13-8328-9fdc262009ec +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4024 - WasCloseAllListenerChannelInstancesFailed +## プロパティ + +||| +|-|-| +|ID|4024| +|キーワード|ActivationServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、すべてのリスナー チャネルのインスタンスの終了が失敗すると生成されます。 + +## メッセージ + エラー コード:%1 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4025-openlistenerchannelinstancefailed.md b/docs/framework/wcf/diagnostics/etw/4025-openlistenerchannelinstancefailed.md new file mode 100644 index 00000000000..91b2cd4fa83 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4025-openlistenerchannelinstancefailed.md @@ -0,0 +1,35 @@ +--- +title: "4025 - OpenListenerChannelInstanceFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 451192e0-e21a-44c9-b528-8cb984454b34 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4025 - OpenListenerChannelInstanceFailed +## プロパティ + +||| +|-|-| +|ID|4025| +|キーワード|ActivationServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、リスナー チャネルのインスタンスが開けなかったときに生成されます。 + +## メッセージ + エラー コード:%1 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4026-wasconnected.md b/docs/framework/wcf/diagnostics/etw/4026-wasconnected.md new file mode 100644 index 00000000000..08efe165c7f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4026-wasconnected.md @@ -0,0 +1,35 @@ +--- +title: "4026 - WasConnected | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e0ba2cbf-28cf-4b8b-b40b-bfdb8a77afa0 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4026 - WasConnected +## プロパティ + +||| +|-|-| +|ID|4026| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、Windows プロセス アクティブ化サービスが接続されたときに生成されます。 + +## メッセージ + WAS が接続されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4027-wasdisconnected.md b/docs/framework/wcf/diagnostics/etw/4027-wasdisconnected.md new file mode 100644 index 00000000000..fdba909a04c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4027-wasdisconnected.md @@ -0,0 +1,35 @@ +--- +title: "4027 - WasDisconnected | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 940337a3-3094-488a-a1b5-0fb4ab16da73 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4027 - WasDisconnected +## プロパティ + +||| +|-|-| +|ID|4027| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、Windows アクティブ化サービスの接続が切断されたときに生成されます。 + +## メッセージ + WAS の接続が解除されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4028-pipetransportlistenerlisteningstart.md b/docs/framework/wcf/diagnostics/etw/4028-pipetransportlistenerlisteningstart.md new file mode 100644 index 00000000000..7cf659b6995 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4028-pipetransportlistenerlisteningstart.md @@ -0,0 +1,35 @@ +--- +title: "4028 - PipeTransportListenerListeningStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 75f83342-09bc-4ab5-b363-01b3cebcc821 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4028 - PipeTransportListenerListeningStart +## プロパティ + +||| +|-|-| +|ID|4028| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、パイプ トランスポート リスナーがリッスンを開始したときに生成されます。 + +## メッセージ + パイプ トランスポート リスナーが URI:%1 でリッスンを開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4029-pipetransportlistenerlisteningstop.md b/docs/framework/wcf/diagnostics/etw/4029-pipetransportlistenerlisteningstop.md new file mode 100644 index 00000000000..2f0432a67b9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4029-pipetransportlistenerlisteningstop.md @@ -0,0 +1,35 @@ +--- +title: "4029 - PipeTransportListenerListeningStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 870d196d-b5c6-462e-be74-d6ab0d452bd0 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4029 - PipeTransportListenerListeningStop +## プロパティ + +||| +|-|-| +|ID|4029| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、パイプ トランスポート リスナーがリッスンを停止したときに生成されます。 + +## メッセージ + パイプ トランスポート リスナーがリッスンを停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/403-suspendsignpostevent.md b/docs/framework/wcf/diagnostics/etw/403-suspendsignpostevent.md new file mode 100644 index 00000000000..362dd61f55f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/403-suspendsignpostevent.md @@ -0,0 +1,40 @@ +--- +title: "403 - SuspendSignpostEvent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fb2e6f29-e556-47b4-b4c1-acd6b8879702 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 403 - SuspendSignpostEvent +## プロパティ + +||| +|-|-| +|ID|403| +|キーワード|トラブルシューティング| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、エンド ツー エンド アクティビティの中断を示します。 ここにはアクティビティの名前が指定されています。 + +## メッセージ + アクティビティの境界 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Extended Data|`xs:string`|アクティビティの名前。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4030-dispatchsessionsuccess.md b/docs/framework/wcf/diagnostics/etw/4030-dispatchsessionsuccess.md new file mode 100644 index 00000000000..7b4a026763a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4030-dispatchsessionsuccess.md @@ -0,0 +1,35 @@ +--- +title: "4030 - DispatchSessionSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6530a13d-27d3-4a51-ab3c-7dd962f57b2f +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4030 - DispatchSessionSuccess +## プロパティ + +||| +|-|-| +|ID|4030| +|キーワード|ActivationServices| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、セッション ディスパッチが成功したときに生成されます。 + +## メッセージ + セッション ディスパッチに成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4031-dispatchsessionfailed.md b/docs/framework/wcf/diagnostics/etw/4031-dispatchsessionfailed.md new file mode 100644 index 00000000000..38542c777d5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4031-dispatchsessionfailed.md @@ -0,0 +1,35 @@ +--- +title: "4031 - DispatchSessionFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c9fe9959-aeac-4446-a488-7c7c94c92cef +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 4031 - DispatchSessionFailed +## プロパティ + +||| +|-|-| +|ID|4031| +|キーワード|ActivationServices| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、セッション ディスパッチに失敗したときに生成されます。 + +## メッセージ + セッション ディスパッチに失敗しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4032-wasconnectiontimedout.md b/docs/framework/wcf/diagnostics/etw/4032-wasconnectiontimedout.md new file mode 100644 index 00000000000..6ace9a5cf3b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4032-wasconnectiontimedout.md @@ -0,0 +1,35 @@ +--- +title: "4032 - WasConnectionTimedout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 91acad10-f3cc-4075-804f-22c49131b7bf +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4032 - WasConnectionTimedout +## プロパティ + +||| +|-|-| +|ID|4032| +|キーワード|ActivationServices| +|レベル|重大| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、WAS の接続がタイムアウトしたときに生成されます。 + +## メッセージ + WAS の接続がタイムアウトしました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4033-routingtablelookupstart.md b/docs/framework/wcf/diagnostics/etw/4033-routingtablelookupstart.md new file mode 100644 index 00000000000..d22f682154b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4033-routingtablelookupstart.md @@ -0,0 +1,35 @@ +--- +title: "4033 - RoutingTableLookupStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d621ecfe-3335-44cb-97cd-a6648eecd9e2 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4033 - RoutingTableLookupStart +## プロパティ + +||| +|-|-| +|ID|4033| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ルーティング テーブルの参照が開始されたときに生成されます。 + +## メッセージ + ルーティング テーブルの参照を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4034-routingtablelookupstop.md b/docs/framework/wcf/diagnostics/etw/4034-routingtablelookupstop.md new file mode 100644 index 00000000000..c5f0e5f812c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4034-routingtablelookupstop.md @@ -0,0 +1,35 @@ +--- +title: "4034 - RoutingTableLookupStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8a7ae705-77fd-42ce-a181-814765873d73 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4034 - RoutingTableLookupStop +## プロパティ + +||| +|-|-| +|ID|4034| +|キーワード|ActivationServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントはルーティング テーブルの参照が停止したときに生成されます。 + +## メッセージ + ルーティング テーブルの参照が完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4035-pendingsessionqueueratio.md b/docs/framework/wcf/diagnostics/etw/4035-pendingsessionqueueratio.md new file mode 100644 index 00000000000..6196e3d7954 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4035-pendingsessionqueueratio.md @@ -0,0 +1,35 @@ +--- +title: "4035 - PendingSessionQueueRatio | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fe40094f-6f2c-4dd8-b872-191c7812118e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4035 - PendingSessionQueueRatio +## プロパティ + +||| +|-|-| +|ID|4035| +|キーワード|クォータ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、保留セッション キューの比率に関する情報を提供するために生成されます。 + +## メッセージ + 保留セッション キューの比率: %1\/%2 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/404-resumesignpostevent.md b/docs/framework/wcf/diagnostics/etw/404-resumesignpostevent.md new file mode 100644 index 00000000000..3dd179e742f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/404-resumesignpostevent.md @@ -0,0 +1,40 @@ +--- +title: "404 - ResumeSignpostEvent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 395cc7ca-f35f-4295-be97-39a077f99c97 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 404 - ResumeSignpostEvent +## プロパティ + +||| +|-|-| +|ID|404| +|キーワード|Troubleshooting| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、エンド ツー エンド アクティビティの再開を示します。ここにはアクティビティの名前が指定されています。 + +## メッセージ + アクティビティの境界。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|Extended Data|`xs:string`|アクティビティの名前。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/451-messageloginfo.md b/docs/framework/wcf/diagnostics/etw/451-messageloginfo.md new file mode 100644 index 00000000000..930b283f75b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/451-messageloginfo.md @@ -0,0 +1,40 @@ +--- +title: "451 - MessageLogInfo | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 485b4b29-dc21-4a35-93f8-5f4726d6aa5a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 451 - MessageLogInfo +## プロパティ + +||| +|-|-| +|ID|451| +|キーワード|Troubleshooting、WCFMessageLogging| +|レベル|Information \(情報\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ ログ情報が送信されるときに出力されます。 + +## Message + %1 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|data1|`xs:string`|| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/452-messagelogwarning.md b/docs/framework/wcf/diagnostics/etw/452-messagelogwarning.md new file mode 100644 index 00000000000..92c8c54923d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/452-messagelogwarning.md @@ -0,0 +1,40 @@ +--- +title: "452 - MessageLogWarning | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 22a9f6ea-5b5f-4110-8a4e-9be9c983fbbb +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 452 - MessageLogWarning +## プロパティ + +||| +|-|-| +|ID|452| +|キーワード|Troubleshooting、WCFMessageLogging| +|レベル|Warning \(警告\)| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージ ログ警告が送信されるときに出力されます。 + +## Message + %1 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|data1|`xs:string`|| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4600-messagelogeventsizeexceeded.md b/docs/framework/wcf/diagnostics/etw/4600-messagelogeventsizeexceeded.md new file mode 100644 index 00000000000..20bf3c5d8ae --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4600-messagelogeventsizeexceeded.md @@ -0,0 +1,35 @@ +--- +title: "4600 - MessageLogEventSizeExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 469c4fbb-847c-4d3e-b8d7-934e952eb535 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4600 - MessageLogEventSizeExceeded +## プロパティ + +||| +|-|-| +|ID|4600| +|キーワード|WCFMessageLogging| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ETW イベントのサイズを上回っているためにメッセージをログに記録できなかったときに生成されます。 + +## メッセージ + メッセージが ETW イベントのサイズを上回っているため、メッセージをログに記録できませんでした + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4801-discoveryclientinclientchannelfailedtoclose.md b/docs/framework/wcf/diagnostics/etw/4801-discoveryclientinclientchannelfailedtoclose.md new file mode 100644 index 00000000000..de3e506bc21 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4801-discoveryclientinclientchannelfailedtoclose.md @@ -0,0 +1,35 @@ +--- +title: "4801 - DiscoveryClientInClientChannelFailedToClose | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9d85113b-73b9-4599-b776-30b40aaf1e7a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4801 - DiscoveryClientInClientChannelFailedToClose +## プロパティ + +||| +|-|-| +|ID|4801| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DiscoveryClientChannel 内で作成された DiscoveryClient を閉じることができず、異常終了したときに生成されます。 + +## メッセージ + DiscoveryClientChannel 内で作成された DiscoveryClient を閉じることができず、異常終了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4802-discoveryclientprotocolexceptionsuppressed.md b/docs/framework/wcf/diagnostics/etw/4802-discoveryclientprotocolexceptionsuppressed.md new file mode 100644 index 00000000000..b53113ef9eb --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4802-discoveryclientprotocolexceptionsuppressed.md @@ -0,0 +1,35 @@ +--- +title: "4802 - DiscoveryClientProtocolExceptionSuppressed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 568212f7-1060-4f5c-a7a0-1352c7cc743b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4802 - DiscoveryClientProtocolExceptionSuppressed +## プロパティ + +||| +|-|-| +|ID|4802| +|キーワード|探索| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは DiscoveryClient の終了中に ProtocolException が抑制されたときに生成されます。 + +## メッセージ + DiscoveryClient を閉じているときに ProtocolException が抑制されました。 その理由として、DiscoveryService がまだ DiscoveryClient に応答を送信しようとしていることが考えられます。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4803-discoveryclientreceivedmulticastsuppression.md b/docs/framework/wcf/diagnostics/etw/4803-discoveryclientreceivedmulticastsuppression.md new file mode 100644 index 00000000000..df00f1cd4c9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4803-discoveryclientreceivedmulticastsuppression.md @@ -0,0 +1,35 @@ +--- +title: "4803 - DiscoveryClientReceivedMulticastSuppression | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4a0aa0f5-e20e-4004-bdeb-15c19a5477d9 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4803 - DiscoveryClientReceivedMulticastSuppression +## プロパティ + +||| +|-|-| +|ID|4803| +|キーワード|探索| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DiscoveryClient が DiscoveryProxy からマルチキャスト抑制メッセージを受け取ったときに生成されます。 + +## メッセージ + DiscoveryClient は DiscoveryProxy からマルチキャスト抑制メッセージを受け取りました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4804-discoverymessagereceivedafteroperationcompleted.md b/docs/framework/wcf/diagnostics/etw/4804-discoverymessagereceivedafteroperationcompleted.md new file mode 100644 index 00000000000..4d521d845d8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4804-discoverymessagereceivedafteroperationcompleted.md @@ -0,0 +1,35 @@ +--- +title: "4804 - DiscoveryMessageReceivedAfterOperationCompleted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 61d2791c-e1a2-400a-a57e-66818ac5962e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4804 - DiscoveryMessageReceivedAfterOperationCompleted +## プロパティ + +||| +|-|-| +|ID|4804| +|キーワード|探索| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、操作の完了後、探索メッセージを受信したときに生成されます。 + +## メッセージ + messageId\='%2' の %1 メッセージは、対応する %3 操作が完了したため、DiscoveryClient によってドロップされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4805-discoverymessagewithinvalidcontent.md b/docs/framework/wcf/diagnostics/etw/4805-discoverymessagewithinvalidcontent.md new file mode 100644 index 00000000000..3114fd6b244 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4805-discoverymessagewithinvalidcontent.md @@ -0,0 +1,35 @@ +--- +title: "4805 - DiscoveryMessageWithInvalidContent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2c69a7ef-2f5a-438d-bcaf-b3e4c79f0ab7 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4805 - DiscoveryMessageWithInvalidContent +## プロパティ + +||| +|-|-| +|ID|4805| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、探索メッセージに無効なコンテンツが含まれているときに生成されます。 + +## メッセージ + messageId\='%2' の %1 メッセージは、無効なコンテンツがあったため、ドロップされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4806-discoverymessagewithinvalidrelatestooroperationcompleted.md b/docs/framework/wcf/diagnostics/etw/4806-discoverymessagewithinvalidrelatestooroperationcompleted.md new file mode 100644 index 00000000000..ac17a167649 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4806-discoverymessagewithinvalidrelatestooroperationcompleted.md @@ -0,0 +1,35 @@ +--- +title: "4806 - DiscoveryMessageWithInvalidRelatesToOrOperationCompleted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 19e9a660-25f3-4332-b716-a12a59f2cbbb +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4806 - DiscoveryMessageWithInvalidRelatesToOrOperationCompleted +## プロパティ + +||| +|-|-| +|ID|4806| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、対応する操作が完了したか、relatesTo 値が無効であるため、探索メッセージが DiscoveryClient によってドロップされたときに生成されます。 + +## メッセージ + messageId\='%2' および relatesTo\='%3' の %1 メッセージは、対応する %4 操作が完了したか、relatesTo 値が無効であるため、DiscoveryClient によってドロップされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4807-discoverymessagewithinvalidreplyto.md b/docs/framework/wcf/diagnostics/etw/4807-discoverymessagewithinvalidreplyto.md new file mode 100644 index 00000000000..202b054173f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4807-discoverymessagewithinvalidreplyto.md @@ -0,0 +1,35 @@ +--- +title: "4807 - DiscoveryMessageWithInvalidReplyTo | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7f104c23-cee3-4e22-89ad-4934b8a587bb +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4807 - DiscoveryMessageWithInvalidReplyTo +## プロパティ + +||| +|-|-| +|ID|4807| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、無効な ReplyTo のアドレスがあったため、探索メッセージがドロップされたときに生成されます。 + +## メッセージ + messageId\='%1' の探索要求メッセージは、無効な ReplyTo アドレスがあったため、ドロップされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4808-discoverymessagewithnocontent.md b/docs/framework/wcf/diagnostics/etw/4808-discoverymessagewithnocontent.md new file mode 100644 index 00000000000..688e687827c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4808-discoverymessagewithnocontent.md @@ -0,0 +1,35 @@ +--- +title: "4808 - DiscoveryMessageWithNoContent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 489b17f3-c475-40e4-adde-d8b8515b4912 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4808 - DiscoveryMessageWithNoContent +## プロパティ + +||| +|-|-| +|ID|4808| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、無効な ReplyTo のアドレスがあったため、探索メッセージがドロップされたときに生成されます。 + +## メッセージ + %1 メッセージは、コンテンツがなかったため、ドロップされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4809-discoverymessagewithnullmessageid.md b/docs/framework/wcf/diagnostics/etw/4809-discoverymessagewithnullmessageid.md new file mode 100644 index 00000000000..0d5f582e8fb --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4809-discoverymessagewithnullmessageid.md @@ -0,0 +1,35 @@ +--- +title: "4809 - DiscoveryMessageWithNullMessageId | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d8947028-ae7e-45a2-a438-43162894519e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4809 - DiscoveryMessageWithNullMessageId +## プロパティ + +||| +|-|-| +|ID|4809| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、メッセージ ヘッダーに必要な MessageId プロパティが含まれていなかったため、探索メッセージがドロップされたときに生成されます。 + +## メッセージ + %1 メッセージは、メッセージ ヘッダーに必要な MessageId プロパティが含まれていなかったため、ドロップされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4810-discoverymessagewithnullmessagesequence.md b/docs/framework/wcf/diagnostics/etw/4810-discoverymessagewithnullmessagesequence.md new file mode 100644 index 00000000000..f79c6917a5f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4810-discoverymessagewithnullmessagesequence.md @@ -0,0 +1,35 @@ +--- +title: "4810 - DiscoveryMessageWithNullMessageSequence | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aa70573e-8a76-486a-9616-ccca8c7008b6 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4810 - DiscoveryMessageWithNullMessageSequence +## プロパティ + +||| +|-|-| +|ID|4810| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DiscoveryMessageSequence プロパティがなかったことが原因で探索要求メッセージが DiscoveryClient によってドロップされたときに生成されます。 + +## メッセージ + messageId\='%2' の %1 メッセージは、DiscoveryMessageSequence プロパティがなかったため、DiscoveryClient によってドロップされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4811-discoverymessagewithnullrelatesto.md b/docs/framework/wcf/diagnostics/etw/4811-discoverymessagewithnullrelatesto.md new file mode 100644 index 00000000000..39d0f89868b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4811-discoverymessagewithnullrelatesto.md @@ -0,0 +1,35 @@ +--- +title: "4811 - DiscoveryMessageWithNullRelatesTo | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dab901e8-a2b3-41c1-a76b-bcd8b3c7c29a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4811 - DiscoveryMessageWithNullRelatesTo +## プロパティ + +||| +|-|-| +|ID|4811| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、メッセージ ヘッダーに必要な RelatesTo プロパティが含まれていなかったため、探索メッセージが DiscoveryClient によってドロップされたときに生成されます。 + +## メッセージ + messageId\='%2' の %1 メッセージは、メッセージ ヘッダーに必要な RelatesTo プロパティが含まれていなかったため、DiscoveryClient によってドロップされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4812-discoverymessagewithnullreplyto.md b/docs/framework/wcf/diagnostics/etw/4812-discoverymessagewithnullreplyto.md new file mode 100644 index 00000000000..9ca4ebf5d1f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4812-discoverymessagewithnullreplyto.md @@ -0,0 +1,35 @@ +--- +title: "4812 - DiscoveryMessageWithNullReplyTo | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a40e6b7e-c2a6-4186-b1d6-c9560f24a959 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4812 - DiscoveryMessageWithNullReplyTo +## プロパティ + +||| +|-|-| +|ID|4812| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ReplyTo アドレスがなかったことが原因で探索要求メッセージが DiscoveryClient によってドロップされたときに生成されます。 + +## メッセージ + messageId\='%1' の探索要求メッセージは、ReplyTo アドレスがなかったため、ドロップされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4813-duplicatediscoverymessage.md b/docs/framework/wcf/diagnostics/etw/4813-duplicatediscoverymessage.md new file mode 100644 index 00000000000..b2584c078a8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4813-duplicatediscoverymessage.md @@ -0,0 +1,35 @@ +--- +title: "4813 - DuplicateDiscoveryMessage | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c49417d1-1f21-4a85-88a5-cbfe108ac8a1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4813 - DuplicateDiscoveryMessage +## プロパティ + +||| +|-|-| +|ID|4813| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、メッセージが重複していたため、ドロップされたときに生成されます。 + +## メッセージ + messageId\='%2' の %1 メッセージは、重複していたため、ドロップされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4814-endpointdiscoverabilitydisabled.md b/docs/framework/wcf/diagnostics/etw/4814-endpointdiscoverabilitydisabled.md new file mode 100644 index 00000000000..dffbf707369 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4814-endpointdiscoverabilitydisabled.md @@ -0,0 +1,35 @@ +--- +title: "4814 - EndpointDiscoverabilityDisabled | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b3805218-4865-42d8-976a-cbbd4ff6fcc8 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4814 - EndpointDiscoverabilityDisabled +## プロパティ + +||| +|-|-| +|ID|4814| +|キーワード|探索| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、エンドポイントの探索が無効になっているときに生成されます。 + +## メッセージ + EndpointAddress\='%1' および ListenUri\='%2' のエンドポイントの探索が無効になりました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4815-endpointdiscoverabilityenabled.md b/docs/framework/wcf/diagnostics/etw/4815-endpointdiscoverabilityenabled.md new file mode 100644 index 00000000000..4ed157bdff8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4815-endpointdiscoverabilityenabled.md @@ -0,0 +1,35 @@ +--- +title: "4815 - EndpointDiscoverabilityEnabled | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cd027b98-da63-4046-8243-c09e30870b5f +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4815 - EndpointDiscoverabilityEnabled +## プロパティ + +||| +|-|-| +|ID|4815| +|キーワード|探索| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、エンドポイントの探索が有効になっているときに生成されます。 + +## メッセージ + EndpointAddress\='%1' および ListenUri\='%2' のエンドポイントの探索が有効になりました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4816-findinitiatedindiscoveryclientchannel.md b/docs/framework/wcf/diagnostics/etw/4816-findinitiatedindiscoveryclientchannel.md new file mode 100644 index 00000000000..3401b0b4dc2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4816-findinitiatedindiscoveryclientchannel.md @@ -0,0 +1,35 @@ +--- +title: "4816 - FindInitiatedInDiscoveryClientChannel | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e64ad429-3a9a-4df6-893a-36a116d393ee +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4816 - FindInitiatedInDiscoveryClientChannel +## プロパティ + +||| +|-|-| +|ID|4816| +|キーワード|探索| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、エンドポイントを探索するために、Find 操作が DiscoveryClientChannel で開始されたときに生成されます。 + +## メッセージ + エンドポイントを探索するために、Find 操作が DiscoveryClientChannel で開始されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4817-innerchannelcreationfailed.md b/docs/framework/wcf/diagnostics/etw/4817-innerchannelcreationfailed.md new file mode 100644 index 00000000000..4fa247a15a3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4817-innerchannelcreationfailed.md @@ -0,0 +1,35 @@ +--- +title: "4817 - InnerChannelCreationFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c1a20619-beda-49b9-bb64-76b6a009c32b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4817 - InnerChannelCreationFailed +## プロパティ + +||| +|-|-| +|ID|4817| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DiscoveryClientChannel が、探索されたエンドポイントを使用してチャネルを作成できなかったときに生成されます。 DiscoveryClientChannel は、次に使用可能な探索されたエンドポイントを使用します。 + +## メッセージ + DiscoveryClientChannel は、EndpointAddress\='%1' および Via\='%2' の探索されたエンドポイントを使用して、チャネルを作成できませんでした。 DiscoveryClientChannel は、次に使用可能な探索されたエンドポイントを使用します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4818-innerchannelopenfailed.md b/docs/framework/wcf/diagnostics/etw/4818-innerchannelopenfailed.md new file mode 100644 index 00000000000..d88a5330ca7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4818-innerchannelopenfailed.md @@ -0,0 +1,35 @@ +--- +title: "4818 - InnerChannelOpenFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c8ac6447-4fbb-4e08-ab26-91acae48dd11 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4818 - InnerChannelOpenFailed +## プロパティ + +||| +|-|-| +|ID|4818| +|キーワード|探索| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DiscoveryClientChannel が、探索されたエンドポイントを使用してチャネルを開くことができなかったときに生成されます。 DiscoveryClientChannel は、次に使用可能な探索されたエンドポイントを使用します。 + +## メッセージ + DiscoveryClientChannel は、EndpointAddress\='%1' および Via\='%2' の探索されたエンドポイントを使用して、チャネルを開くことができませんでした。 DiscoveryClientChannel は、次に使用可能な探索されたエンドポイントを使用します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4819-innerchannelopensucceeded.md b/docs/framework/wcf/diagnostics/etw/4819-innerchannelopensucceeded.md new file mode 100644 index 00000000000..b59e99e5050 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4819-innerchannelopensucceeded.md @@ -0,0 +1,35 @@ +--- +title: "4819 - InnerChannelOpenSucceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1ea7f6ac-a7d8-4ae6-89c7-4fdf99665b4b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4819 - InnerChannelOpenSucceeded +## プロパティ + +||| +|-|-| +|ID|4819| +|キーワード|探索| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DiscoveryClientChannel がエンドポイントを探索し、そのエンドポイントを使用してチャネルを開くことができたときに生成されます。 + +## メッセージ + DiscoveryClientChannel は正常にエンドポイントを探索し、それを使用してチャネルを開きました。 クライアントは EndpointAddress\='%1' および Via\='%2' を使用して、サービスに接続されています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4820-synchronizationcontextreset.md b/docs/framework/wcf/diagnostics/etw/4820-synchronizationcontextreset.md new file mode 100644 index 00000000000..8a921b3603c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4820-synchronizationcontextreset.md @@ -0,0 +1,35 @@ +--- +title: "4820 - SynchronizationContextReset | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8a5c1597-5270-4b0a-9c8c-bf5f07f7e816 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4820 - SynchronizationContextReset +## プロパティ + +||| +|-|-| +|ID|4820| +|キーワード|探索| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは SynchronizationContext が DiscoveryClientChannel によって元の値にリセットされると生成されます。 + +## メッセージ + SynchronizationContext は DiscoveryClientChannel によって、元の値 %1 にリセットされました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/4821-synchronizationcontextsettonull.md b/docs/framework/wcf/diagnostics/etw/4821-synchronizationcontextsettonull.md new file mode 100644 index 00000000000..b5b243e8c2b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/4821-synchronizationcontextsettonull.md @@ -0,0 +1,35 @@ +--- +title: "4821 - SynchronizationContextSetToNull | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0fbff6f6-752a-4a4a-b5a3-3adb5e688527 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 4821 - SynchronizationContextSetToNull +## プロパティ + +||| +|-|-| +|ID|4821| +|キーワード|探索| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、SynchronizationContext が Find 操作を始める前に DiscoveryClientChannel によって NULL に設定されたときに生成されます。 + +## メッセージ + SynchronizationContext は、Find 操作を開始する前に、DiscoveryClientChannel によって NULL に設定されました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/499-transferemitted.md b/docs/framework/wcf/diagnostics/etw/499-transferemitted.md new file mode 100644 index 00000000000..48bbef5d650 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/499-transferemitted.md @@ -0,0 +1,40 @@ +--- +title: "499 - TransferEmitted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 07a26434-a7a0-40fc-b5d0-3520a04328ae +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 499 - TransferEmitted +## プロパティ + +||| +|-|-| +|ID|499| +|キーワード|Troubleshooting、UserEvents、EndToEndMonitoring、ServiceModel、WFTracking、ServiceHost、WCFMessageLogging| +|レベル|LogAlways| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、転送イベントが発生したときに作成されます。 + +## Message + 転送イベントが作成されました。 + +## 詳細 + +|データ項目名|データ項目の型|説明| +|------------|-------------|--------| +|HostReference|`xs:string`|Web ホスト サービスの場合は、このフィールドにより、サービスが Web 階層内で一意に識別されます。その形式は、'Web サイト名アプリケーション仮想パス|サービス仮想パス|サービス名' と定義されます。例: 'Default Web Site\/CalculatorApplication|\/CalculatorService.svc|CalculatorService'。| +|AppDomain|`xs:string`|AppDomain.CurrentDomain.FriendlyName で返される文字列。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5001-dcserializewithsurrogatestart.md b/docs/framework/wcf/diagnostics/etw/5001-dcserializewithsurrogatestart.md new file mode 100644 index 00000000000..b34871a7b8f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5001-dcserializewithsurrogatestart.md @@ -0,0 +1,35 @@ +--- +title: "5001 - DCSerializeWithSurrogateStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 42cb442e-ff16-4809-bbee-6d31f012b9b2 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5001 - DCSerializeWithSurrogateStart +## プロパティ + +||| +|-|-| +|ID|5001| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DataContract のサロゲートによるシリアル化を開始すると生成されます。 + +## メッセージ + DataContract のサロゲートによる %1 のシリアル化を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5002-dcserializewithsurrogatestop.md b/docs/framework/wcf/diagnostics/etw/5002-dcserializewithsurrogatestop.md new file mode 100644 index 00000000000..da4b21d5c98 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5002-dcserializewithsurrogatestop.md @@ -0,0 +1,35 @@ +--- +title: "5002 - DCSerializeWithSurrogateStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 66fd4496-8b94-46d4-b987-19040b4ea4bc +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5002 - DCSerializeWithSurrogateStop +## プロパティ + +||| +|-|-| +|ID|5002| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DataContract のサロゲートによるシリアル化を停止すると生成されます。 + +## メッセージ + DataContract のサロゲートによるシリアル化を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5003-dcdeserializewithsurrogatestart.md b/docs/framework/wcf/diagnostics/etw/5003-dcdeserializewithsurrogatestart.md new file mode 100644 index 00000000000..d2af8aa44a7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5003-dcdeserializewithsurrogatestart.md @@ -0,0 +1,35 @@ +--- +title: "5003 - DCDeserializeWithSurrogateStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 497a78ca-d4d6-4b9d-9b35-bc2db33d6e9c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5003 - DCDeserializeWithSurrogateStart +## プロパティ + +||| +|-|-| +|ID|5003| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DataContract のサロゲートによる逆シリアル化を開始すると生成されます。 + +## メッセージ + DataContract のサロゲートによる %1 のシリアル化解除を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5004-dcdeserializewithsurrogatestop.md b/docs/framework/wcf/diagnostics/etw/5004-dcdeserializewithsurrogatestop.md new file mode 100644 index 00000000000..adec927904d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5004-dcdeserializewithsurrogatestop.md @@ -0,0 +1,35 @@ +--- +title: "5004 - DCDeserializeWithSurrogateStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3d2f0c9f-9b28-40b1-91ff-c1e16afca484 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5004 - DCDeserializeWithSurrogateStop +## プロパティ + +||| +|-|-| +|ID|5004| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DataContract のサロゲートによるシリアル化解除を停止すると生成されます。 + +## メッセージ + DataContract のサロゲートによるシリアル化解除を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5005-importknowntypesstart.md b/docs/framework/wcf/diagnostics/etw/5005-importknowntypesstart.md new file mode 100644 index 00000000000..5fc535e889a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5005-importknowntypesstart.md @@ -0,0 +1,35 @@ +--- +title: "5005 - ImportKnownTypesStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e70c9c92-833d-4e88-b129-1decf7a0491d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5005 - ImportKnownTypesStart +## プロパティ + +||| +|-|-| +|ID|5005| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ImportKnownTypes が開始されると生成されます。 + +## メッセージ + ImportKnownTypes を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5006-importknowntypesstop.md b/docs/framework/wcf/diagnostics/etw/5006-importknowntypesstop.md new file mode 100644 index 00000000000..151ee449ce5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5006-importknowntypesstop.md @@ -0,0 +1,35 @@ +--- +title: "5006 - ImportKnownTypesStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2e1786c1-cbdd-4427-b8fc-cbf86b8debae +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5006 - ImportKnownTypesStop +## プロパティ + +||| +|-|-| +|ID|5006| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ImportKnownTypes が停止すると生成されます。 + +## メッセージ + ImportKnownTypes を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5007-dcresolverresolve.md b/docs/framework/wcf/diagnostics/etw/5007-dcresolverresolve.md new file mode 100644 index 00000000000..ccbc36e24f4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5007-dcresolverresolve.md @@ -0,0 +1,35 @@ +--- +title: "5007 - DCResolverResolve | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 156d92a9-1de5-4ba8-a7a3-e8bf487c5523 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5007 - DCResolverResolve +## プロパティ + +||| +|-|-| +|ID|5007| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DataContract リゾルバーが解決を開始すると生成されます。 + +## メッセージ + DataContract リゾルバーが %1 の解決を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5008-dcgenwriterstart.md b/docs/framework/wcf/diagnostics/etw/5008-dcgenwriterstart.md new file mode 100644 index 00000000000..3e51744f6c9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5008-dcgenwriterstart.md @@ -0,0 +1,35 @@ +--- +title: "5008 - DCGenWriterStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a132bd14-15e9-4a14-8a64-41ac85adf620 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5008 - DCGenWriterStart +## プロパティ + +||| +|-|-| +|ID|5008| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DataContract のライターの生成を開始すると生成されます。 + +## メッセージ + DataContract の %2 の %1 ライターの生成を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5009-dcgenwriterstop.md b/docs/framework/wcf/diagnostics/etw/5009-dcgenwriterstop.md new file mode 100644 index 00000000000..bab24f2ec5e --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5009-dcgenwriterstop.md @@ -0,0 +1,35 @@ +--- +title: "5009 - DCGenWriterStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8489e542-b2ab-4c31-9150-08d4f6704150 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5009 - DCGenWriterStop +## プロパティ + +||| +|-|-| +|ID|5009| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DataContract のライターの生成が停止すると生成されます。 + +## メッセージ + DataContract のライターの生成を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/501-compilationstart.md b/docs/framework/wcf/diagnostics/etw/501-compilationstart.md new file mode 100644 index 00000000000..589d682a17f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/501-compilationstart.md @@ -0,0 +1,35 @@ +--- +title: "501 - CompilationStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5d4a214f-e242-4475-8bc9-02409190dc2c +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 501 - CompilationStart +## プロパティ + +||| +|-|-| +|ID|501| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、servicehost のコンパイルが開始されるときに生成されます。 + +## メッセージ + コンパイルを開始します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5010-dcgenreaderstart.md b/docs/framework/wcf/diagnostics/etw/5010-dcgenreaderstart.md new file mode 100644 index 00000000000..cb4db3ad4e6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5010-dcgenreaderstart.md @@ -0,0 +1,35 @@ +--- +title: "5010 - DCGenReaderStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 199ff3ce-b811-4151-a9c2-e726c109e87b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5010 - DCGenReaderStart +## プロパティ + +||| +|-|-| +|ID|5010| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DataContract のリーダーの生成を開始すると生成されます。 + +## メッセージ + DataContract の %2 の %1 リーダーの生成を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5011-dcgenreaderstop.md b/docs/framework/wcf/diagnostics/etw/5011-dcgenreaderstop.md new file mode 100644 index 00000000000..6e94a97bcf6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5011-dcgenreaderstop.md @@ -0,0 +1,35 @@ +--- +title: "5011 - DCGenReaderStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7d59368a-5ef0-4d3c-8bfe-8bb509b90afa +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5011 - DCGenReaderStop +## プロパティ + +||| +|-|-| +|ID|5011| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DataContract の生成を停止すると生成されます。 + +## メッセージ + DataContract の生成を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5012-dcjsongenreaderstart.md b/docs/framework/wcf/diagnostics/etw/5012-dcjsongenreaderstart.md new file mode 100644 index 00000000000..51dfa3db74d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5012-dcjsongenreaderstart.md @@ -0,0 +1,35 @@ +--- +title: "5012 - DCJsonGenReaderStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6d2ad3c9-47ee-4e77-b1c6-259ab15b0cfb +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5012 - DCJsonGenReaderStart +## プロパティ + +||| +|-|-| +|ID|5012| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、Json の生成リーダーを開始すると生成されます。 + +## メッセージ + Json の %2 の %1 リーダーの生成を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5013-dcjsongenreaderstop.md b/docs/framework/wcf/diagnostics/etw/5013-dcjsongenreaderstop.md new file mode 100644 index 00000000000..93914ac4484 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5013-dcjsongenreaderstop.md @@ -0,0 +1,35 @@ +--- +title: "5013 - DCJsonGenReaderStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7021eca6-6fdf-4f23-96aa-02d7df0c7dfe +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5013 - DCJsonGenReaderStop +## プロパティ + +||| +|-|-| +|ID|5013| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、Json リーダーの生成を停止すると生成されます。 + +## メッセージ + Json のリーダーの生成を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5014-dcjsongenwriterstart.md b/docs/framework/wcf/diagnostics/etw/5014-dcjsongenwriterstart.md new file mode 100644 index 00000000000..88fa446248a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5014-dcjsongenwriterstart.md @@ -0,0 +1,35 @@ +--- +title: "5014 - DCJsonGenWriterStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 038ccc90-63f8-42c2-aa17-94a16fde6566 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5014 - DCJsonGenWriterStart +## プロパティ + +||| +|-|-| +|ID|5014| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、Json リーダーの生成を開始すると生成されます。 + +## メッセージ + Json の %2 の %1 ライターの生成を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5015-dcjsongenwriterstop.md b/docs/framework/wcf/diagnostics/etw/5015-dcjsongenwriterstop.md new file mode 100644 index 00000000000..4c051288519 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5015-dcjsongenwriterstop.md @@ -0,0 +1,35 @@ +--- +title: "5015 - DCJsonGenWriterStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c7d70416-88e3-409a-90d7-0f412fa37f2e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5015 - DCJsonGenWriterStop +## プロパティ + +||| +|-|-| +|ID|5015| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、Json で生成されたライターが停止すると生成されます。 + +## メッセージ + Json のライターの生成を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5016-genxmlserializablestart.md b/docs/framework/wcf/diagnostics/etw/5016-genxmlserializablestart.md new file mode 100644 index 00000000000..b991d127a62 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5016-genxmlserializablestart.md @@ -0,0 +1,35 @@ +--- +title: "5016 - GenXmlSerializableStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e1284ef0-2ec9-4acf-8901-c61521561cce +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5016 - GenXmlSerializableStart +## プロパティ + +||| +|-|-| +|ID|5016| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、XML シリアル化が可能な要素の生成を開始したときに生成されます。 + +## メッセージ + '%1' の XML シリアル化が可能な要素の生成を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5017-genxmlserializablestop.md b/docs/framework/wcf/diagnostics/etw/5017-genxmlserializablestop.md new file mode 100644 index 00000000000..868868ba6dc --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5017-genxmlserializablestop.md @@ -0,0 +1,35 @@ +--- +title: "5017 - GenXmlSerializableStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 41f0d433-487a-4e48-b397-d8d7b6b64b50 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5017 - GenXmlSerializableStop +## プロパティ + +||| +|-|-| +|ID|5017| +|キーワード|シリアル化| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、XML シリアル化が可能な要素の生成を停止したときに生成されます。 + +## メッセージ + XML シリアル化が可能な要素の生成を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/502-compilationstop.md b/docs/framework/wcf/diagnostics/etw/502-compilationstop.md new file mode 100644 index 00000000000..d0f7979532b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/502-compilationstop.md @@ -0,0 +1,35 @@ +--- +title: "502 - CompilationStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d7d3ab29-0dfa-4cf4-9bca-cd8191c51db5 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 502 - CompilationStop +## プロパティ + +||| +|-|-| +|ID|502| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、servicehost のコンパイルが終了するときに生成されます。 + +## メッセージ + コンパイルを終了します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/503-servicehostfactorycreationstart.md b/docs/framework/wcf/diagnostics/etw/503-servicehostfactorycreationstart.md new file mode 100644 index 00000000000..fd4ec60f22c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/503-servicehostfactorycreationstart.md @@ -0,0 +1,35 @@ +--- +title: "503 - ServiceHostFactoryCreationStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6ae63a4e-a4dd-44de-881f-95b50f983ef5 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 503 - ServiceHostFactoryCreationStart +## プロパティ + +||| +|-|-| +|ID|503| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ServiceHostFactory の作成が開始されるときに生成されます。 + +## メッセージ + ServiceHostFactory が作成を開始します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/504-servicehostfactorycreationstop.md b/docs/framework/wcf/diagnostics/etw/504-servicehostfactorycreationstop.md new file mode 100644 index 00000000000..9de8bbc90ad --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/504-servicehostfactorycreationstop.md @@ -0,0 +1,35 @@ +--- +title: "504 - ServiceHostFactoryCreationStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 284d240a-ef0c-4572-b3cd-8fbc579db05f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 504 - ServiceHostFactoryCreationStop +## プロパティ + +||| +|-|-| +|ID|504| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、ServiceHostFactory の作成が終了するときに生成されます。 + +## メッセージ + ServiceHostFactory が作成を終了します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/505-createservicehoststart.md b/docs/framework/wcf/diagnostics/etw/505-createservicehoststart.md new file mode 100644 index 00000000000..4fc8eb82e22 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/505-createservicehoststart.md @@ -0,0 +1,35 @@ +--- +title: "505 - CreateServiceHostStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5f2c670b-c212-458e-bcd0-cdc2f17a6cf6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 505 - CreateServiceHostStart +## プロパティ + +||| +|-|-| +|ID|505| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、CreateServiceHost が開始したときに生成されます。 + +## メッセージ + CreateServiceHost を開始します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/506-createservicehoststop.md b/docs/framework/wcf/diagnostics/etw/506-createservicehoststop.md new file mode 100644 index 00000000000..1536dcddd03 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/506-createservicehoststop.md @@ -0,0 +1,35 @@ +--- +title: "506 - CreateServiceHostStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f51e4903-1162-47bd-bf8a-f4177c48768a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 506 - CreateServiceHostStop +## プロパティ + +||| +|-|-| +|ID|506| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、CreateServiceHost が終了したときに生成されます。 + +## メッセージ + CreateServiceHost を終了します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/507-hostedtransportconfigurationmanagerconfiginitstart.md b/docs/framework/wcf/diagnostics/etw/507-hostedtransportconfigurationmanagerconfiginitstart.md new file mode 100644 index 00000000000..56571a2852f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/507-hostedtransportconfigurationmanagerconfiginitstart.md @@ -0,0 +1,35 @@ +--- +title: "507 - HostedTransportConfigurationManagerConfigInitStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cf8956cd-2f97-4536-af17-1f42618b4f11 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 507 - HostedTransportConfigurationManagerConfigInitStart +## プロパティ + +||| +|-|-| +|ID|507| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、HostedTransportConfigurationManager の初期化が開始されると生成されます。 + +## メッセージ + HostedTransportConfigurationManager が構成の初期化を開始します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/508-hostedtransportconfigurationmanagerconfiginitstop.md b/docs/framework/wcf/diagnostics/etw/508-hostedtransportconfigurationmanagerconfiginitstop.md new file mode 100644 index 00000000000..221625b546f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/508-hostedtransportconfigurationmanagerconfiginitstop.md @@ -0,0 +1,35 @@ +--- +title: "508 - HostedTransportConfigurationManagerConfigInitStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 24838d74-05e4-4860-876e-428f947dc7ca +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 508 - HostedTransportConfigurationManagerConfigInitStop +## プロパティ + +||| +|-|-| +|ID|508| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、HostedTransportConfigurationManager の初期化の終了時に生成されます。 + +## メッセージ + HostedTransportConfigurationManager が構成の初期化を終了します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/509-servicehostopenstart.md b/docs/framework/wcf/diagnostics/etw/509-servicehostopenstart.md new file mode 100644 index 00000000000..abb6bfb1a43 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/509-servicehostopenstart.md @@ -0,0 +1,35 @@ +--- +title: "509 - ServiceHostOpenStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e53683f9-b2c4-4a61-bd66-3956b1914d8f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 509 - ServiceHostOpenStart +## プロパティ + +||| +|-|-| +|ID|509| +|キーワード|ServiceHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ServiceHost Open が開始されたときに生成されます。 + +## メッセージ + ServiceHost Open を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/510-servicehostopenstop.md b/docs/framework/wcf/diagnostics/etw/510-servicehostopenstop.md new file mode 100644 index 00000000000..d25253f00d9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/510-servicehostopenstop.md @@ -0,0 +1,35 @@ +--- +title: "510 - ServiceHostOpenStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3377246a-e74c-4d4c-9dda-36d21bd5a48f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 510 - ServiceHostOpenStop +## プロパティ + +||| +|-|-| +|ID|510| +|キーワード|ServiceHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ServiceHost Open の完了時に生成されます。 + +## メッセージ + ServiceHost Open が完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/513-webhostrequeststart.md b/docs/framework/wcf/diagnostics/etw/513-webhostrequeststart.md new file mode 100644 index 00000000000..722362c25ed --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/513-webhostrequeststart.md @@ -0,0 +1,35 @@ +--- +title: "513 - WebHostRequestStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d664cf1e-f114-4441-8c59-65b98ea498e9 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 513 - WebHostRequestStart +## プロパティ + +||| +|-|-| +|ID|513| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebHostRequest が開始されたときに生成されます。 + +## メッセージ + AppDomain '%1' からの仮想パス '%2' で要求を受信しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/514-webhostrequeststop.md b/docs/framework/wcf/diagnostics/etw/514-webhostrequeststop.md new file mode 100644 index 00000000000..ef6bd78b4d3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/514-webhostrequeststop.md @@ -0,0 +1,35 @@ +--- +title: "514 - WebHostRequestStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c5858bf6-3330-4f2a-9907-a99692fa8817 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 514 - WebHostRequestStop +## プロパティ + +||| +|-|-| +|ID|514| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、WebHostRequest が終了したときに生成されます。 + +## メッセージ + WebHostRequest を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5203-jsonmessagedecodingstart.md b/docs/framework/wcf/diagnostics/etw/5203-jsonmessagedecodingstart.md new file mode 100644 index 00000000000..9a7a68095d6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5203-jsonmessagedecodingstart.md @@ -0,0 +1,35 @@ +--- +title: "5203 - JsonMessageDecodingStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 83836ebf-8cc9-4f4c-92ff-4fd28304a299 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5203 - JsonMessageDecodingStart +## プロパティ + +||| +|-|-| +|ID|5203| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、JsonMessageEncoder がメッセージのデコードを開始したときに生成されます。 + +## メッセージ + JsonMessageEncoder がメッセージのデコードを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5204-jsonmessageencodingstart.md b/docs/framework/wcf/diagnostics/etw/5204-jsonmessageencodingstart.md new file mode 100644 index 00000000000..ea5355844c1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5204-jsonmessageencodingstart.md @@ -0,0 +1,35 @@ +--- +title: "5204 - JsonMessageEncodingStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eda84660-7bf9-4633-81ce-e294f258d8e4 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5204 - JsonMessageEncodingStart +## プロパティ + +||| +|-|-| +|ID|5204| +|キーワード|チャネル| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、JsonMessageEncoder がメッセージのエンコードを開始したときに生成されます。 + +## メッセージ + JsonMessageEncoder がメッセージのエンコードを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5402-tokenvalidationstarted.md b/docs/framework/wcf/diagnostics/etw/5402-tokenvalidationstarted.md new file mode 100644 index 00000000000..6d4269ec645 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5402-tokenvalidationstarted.md @@ -0,0 +1,35 @@ +--- +title: "5402 - TokenValidationStarted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d3e9a727-92dd-4d5b-bca9-2ec98c1fde5c +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5402 - TokenValidationStarted +## プロパティ + +||| +|-|-| +|ID|5402| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、SecurityToken の検証が開始されたときに生成されます。 + +## メッセージ + SecurityToken \(型 '%1'、ID '%2'\) の検証を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5403-tokenvalidationsuccess.md b/docs/framework/wcf/diagnostics/etw/5403-tokenvalidationsuccess.md new file mode 100644 index 00000000000..ad745a22c6a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5403-tokenvalidationsuccess.md @@ -0,0 +1,35 @@ +--- +title: "5403 - TokenValidationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 322efeb2-8081-4d3c-ab92-31d5b236f4d3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5403 - TokenValidationSuccess +## プロパティ + +||| +|-|-| +|ID|5403| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、SecurityToken の検証に成功したときに生成されます。 + +## メッセージ + SecurityToken \(型 '%1'、ID '%2'\) の検証に成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5404-tokenvalidationfailure.md b/docs/framework/wcf/diagnostics/etw/5404-tokenvalidationfailure.md new file mode 100644 index 00000000000..bea998c3496 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5404-tokenvalidationfailure.md @@ -0,0 +1,35 @@ +--- +title: "5404 - TokenValidationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 19783336-5560-4334-be13-2efd15da3e2a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5404 - TokenValidationFailure +## プロパティ + +||| +|-|-| +|ID|5404| +|キーワード|セキュリティ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、SecurityToken の検証が失敗したときに生成されます。 + +## メッセージ + SecurityToken \(型 '%1'、ID '%2'\) の検証に失敗しました。 %3 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5405-getissuernamesuccess.md b/docs/framework/wcf/diagnostics/etw/5405-getissuernamesuccess.md new file mode 100644 index 00000000000..a8194fe395b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5405-getissuernamesuccess.md @@ -0,0 +1,35 @@ +--- +title: "5405 - GetIssuerNameSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b7904796-0eb2-4d45-a1bb-d13af9ab740d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5405 - GetIssuerNameSuccess +## プロパティ + +||| +|-|-| +|ID|5405| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、発行者名の取得に成功したときに生成されます。 + +## メッセージ + トークン ID: %2 からの発行者名: %1 の取得に成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5406-getissuernamefailure.md b/docs/framework/wcf/diagnostics/etw/5406-getissuernamefailure.md new file mode 100644 index 00000000000..59915205b4e --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5406-getissuernamefailure.md @@ -0,0 +1,35 @@ +--- +title: "5406 - GetIssuerNameFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ea38c75b-f594-49c1-8800-ccbf1b8306f1 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5406 - GetIssuerNameFailure +## プロパティ + +||| +|-|-| +|ID|5406| +|キーワード|セキュリティ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、発行者名の取得に失敗したときに生成されます。 + +## メッセージ + トークン ID: %1 からの発行者名の取得に失敗しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5600-federationmessageprocessingstarted.md b/docs/framework/wcf/diagnostics/etw/5600-federationmessageprocessingstarted.md new file mode 100644 index 00000000000..7eb441fad3b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5600-federationmessageprocessingstarted.md @@ -0,0 +1,35 @@ +--- +title: "5600 - FederationMessageProcessingStarted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 52f36a6f-cc3f-441f-a4c2-e8df2e747d52 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5600 - FederationMessageProcessingStarted +## プロパティ + +||| +|-|-| +|ID|5600| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、フェデレーション メッセージの処理を開始すると生成されます。 + +## メッセージ + フェデレーション メッセージの処理を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5601-federationmessageprocessingsuccess.md b/docs/framework/wcf/diagnostics/etw/5601-federationmessageprocessingsuccess.md new file mode 100644 index 00000000000..6d862334931 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5601-federationmessageprocessingsuccess.md @@ -0,0 +1,35 @@ +--- +title: "5601 - FederationMessageProcessingSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 767591c3-2674-4d7e-a61b-e76da3b159ae +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5601 - FederationMessageProcessingSuccess +## プロパティ + +||| +|-|-| +|ID|5601| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、フェデレーション メッセージの処理に成功すると生成されます。 + +## メッセージ + フェデレーション メッセージの処理に成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5602-federationmessagecreationstarted.md b/docs/framework/wcf/diagnostics/etw/5602-federationmessagecreationstarted.md new file mode 100644 index 00000000000..6b39a2de69a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5602-federationmessagecreationstarted.md @@ -0,0 +1,35 @@ +--- +title: "5602 - FederationMessageCreationStarted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a93a5057-86d8-4be9-a5a4-09ba935fef01 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5602 - FederationMessageCreationStarted +## プロパティ + +||| +|-|-| +|ID|5602| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、フォーム ポストからのフェデレーション メッセージの作成を開始したときに生成されます。 + +## メッセージ + フォーム ポストからのフェデレーション メッセージの作成を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5603-federationmessagecreationsuccess.md b/docs/framework/wcf/diagnostics/etw/5603-federationmessagecreationsuccess.md new file mode 100644 index 00000000000..53cf264a44d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5603-federationmessagecreationsuccess.md @@ -0,0 +1,35 @@ +--- +title: "5603 - FederationMessageCreationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b55abdf4-cbe1-401e-b23e-f2bf1bcca719 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5603 - FederationMessageCreationSuccess +## プロパティ + +||| +|-|-| +|ID|5603| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、フォーム ポストからのフェデレーション メッセージの作成に成功したときに生成されます。 + +## メッセージ + フォーム ポストからのフェデレーション メッセージの作成に成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5604-sessioncookiereadingstarted.md b/docs/framework/wcf/diagnostics/etw/5604-sessioncookiereadingstarted.md new file mode 100644 index 00000000000..a46b4afce83 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5604-sessioncookiereadingstarted.md @@ -0,0 +1,35 @@ +--- +title: "5604 - SessionCookieReadingStarted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7348caaa-add0-473d-8af3-b2dadb68abdb +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5604 - SessionCookieReadingStarted +## プロパティ + +||| +|-|-| +|ID|5604| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、セッション クッキーからのセッション トークンの読み取りが開始されたときに生成されます。 + +## メッセージ + セッション クッキーからのセッション トークンの読み取りを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5605-sessioncookiereadingsuccess.md b/docs/framework/wcf/diagnostics/etw/5605-sessioncookiereadingsuccess.md new file mode 100644 index 00000000000..fca26572255 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5605-sessioncookiereadingsuccess.md @@ -0,0 +1,35 @@ +--- +title: "5605 - SessionCookieReadingSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2cc1693d-7834-45ce-9a6d-dbe31dc2d517 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5605 - SessionCookieReadingSuccess +## プロパティ + +||| +|-|-| +|ID|5605| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、セッション クッキーからのセッション トークンの読み取りが成功したときに生成されます。 + +## メッセージ + セッション クッキーからのセッション トークンの読み取りに成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5606-principalsettingfromsessiontokenstarted.md b/docs/framework/wcf/diagnostics/etw/5606-principalsettingfromsessiontokenstarted.md new file mode 100644 index 00000000000..792f79e1a93 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5606-principalsettingfromsessiontokenstarted.md @@ -0,0 +1,35 @@ +--- +title: "5606 - PrincipalSettingFromSessionTokenStarted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f307ffda-8a89-4527-a7e5-915b820508ee +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5606 - PrincipalSettingFromSessionTokenStarted +## プロパティ + +||| +|-|-| +|ID|5606| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、セッション クッキーからのプリンシパルの設定が開始されたときに生成されます。 + +## メッセージ + セッション トークンからのプリンシパルの設定を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/5607-principalsettingfromsessiontokensuccess.md b/docs/framework/wcf/diagnostics/etw/5607-principalsettingfromsessiontokensuccess.md new file mode 100644 index 00000000000..262a5a2cb1c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/5607-principalsettingfromsessiontokensuccess.md @@ -0,0 +1,35 @@ +--- +title: "5607 - PrincipalSettingFromSessionTokenSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f36cf68c-58e2-4bdd-bed9-eb7727650010 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 5607 - PrincipalSettingFromSessionTokenSuccess +## プロパティ + +||| +|-|-| +|ID|5607| +|キーワード|セキュリティ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、セッション クッキーからのプリンシパルの設定に成功したときに生成されます。 + +## メッセージ + セッション トークンからのプリンシパルの設定に成功しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57393-appdomainunload.md b/docs/framework/wcf/diagnostics/etw/57393-appdomainunload.md new file mode 100644 index 00000000000..46231d27ba4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57393-appdomainunload.md @@ -0,0 +1,35 @@ +--- +title: "57393 - AppDomainUnload | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e8f45002-025e-4c93-b7b1-a09d631dbb1d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57393 - AppDomainUnload +## プロパティ + +||| +|-|-| +|ID|57393| +|キーワード|インフラストラクチャ| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは AppDomain のアンロード時に生成されます。 + +## メッセージ + AppDomain をアンロードしています。 AppDomain.FriendlyName %1、ProcessName %2、ProcessId %3。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57394-handledexception.md b/docs/framework/wcf/diagnostics/etw/57394-handledexception.md new file mode 100644 index 00000000000..57216210a4c --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57394-handledexception.md @@ -0,0 +1,35 @@ +--- +title: "57394 - HandledException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c9e63436-6550-4891-9673-cbc72dda20e3 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57394 - HandledException +## プロパティ + +||| +|-|-| +|ID|57394| +|キーワード|インフラストラクチャ| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、例外の処理時に生成されます。 + +## メッセージ + 例外を処理しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57395-shipassertexceptionmessage.md b/docs/framework/wcf/diagnostics/etw/57395-shipassertexceptionmessage.md new file mode 100644 index 00000000000..5a47e059d6b --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57395-shipassertexceptionmessage.md @@ -0,0 +1,35 @@ +--- +title: "57395 - ShipAssertExceptionMessage | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 37f0c15b-e34e-42fe-8f86-b122e592add5 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57395 - ShipAssertExceptionMessage +## プロパティ + +||| +|-|-| +|ID|57395| +|キーワード|インフラストラクチャ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、予期しないエラーが発生した場合に生成されます。 + +## メッセージ + 予期しないエラーが発生しました。 アプリケーションではこのエラーを処理することはできません。 診断上の目的から、次の英語のメッセージがエラーに関連付けられています: %1。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57396-throwingexception.md b/docs/framework/wcf/diagnostics/etw/57396-throwingexception.md new file mode 100644 index 00000000000..e7fafd959fb --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57396-throwingexception.md @@ -0,0 +1,35 @@ +--- +title: "57396 - ThrowingException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4f865de5-62c1-443c-9dcd-1675ca127334 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57396 - ThrowingException +## プロパティ + +||| +|-|-| +|ID|57396| +|キーワード|インフラストラクチャ| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、例外のスロー時に生成されます。 + +## メッセージ + 例外をスローしています。 発生元 %1。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57397-unhandledexception.md b/docs/framework/wcf/diagnostics/etw/57397-unhandledexception.md new file mode 100644 index 00000000000..558125b4b22 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57397-unhandledexception.md @@ -0,0 +1,35 @@ +--- +title: "57397 - UnhandledException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0576aa4a-544c-45c1-8319-1b214824e83e +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57397 - UnhandledException +## プロパティ + +||| +|-|-| +|ID|57397| +|キーワード|インフラストラクチャ| +|レベル|重大| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントはハンドルされない例外の発生時に生成されます。 + +## メッセージ + ハンドルされていない例外です。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57399-tracecodeeventlogcritical.md b/docs/framework/wcf/diagnostics/etw/57399-tracecodeeventlogcritical.md new file mode 100644 index 00000000000..00dcd9d383f --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57399-tracecodeeventlogcritical.md @@ -0,0 +1,35 @@ +--- +title: "57399 - TraceCodeEventLogCritical | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0f41451c-1e90-4bc1-8538-2876df819c7f +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57399 - TraceCodeEventLogCritical +## プロパティ + +||| +|-|-| +|ID|57399| +|キーワード|インフラストラクチャ| +|レベル|重大| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは TraceCodeEventLogCritical で生成されます。 + +## メッセージ + イベント ログに書き込みました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57400-tracecodeeventlogerror.md b/docs/framework/wcf/diagnostics/etw/57400-tracecodeeventlogerror.md new file mode 100644 index 00000000000..b0110823734 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57400-tracecodeeventlogerror.md @@ -0,0 +1,35 @@ +--- +title: "57400 - TraceCodeEventLogError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 89864cd9-24fd-4568-920f-d0ba434b6f15 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57400 - TraceCodeEventLogError +## プロパティ + +||| +|-|-| +|ID|57400| +|キーワード|インフラストラクチャ| +|レベル|Error| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは TraceCodeEventLogError で生成されます。 + +## メッセージ + イベント ログに書き込みました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57401-tracecodeeventloginfo.md b/docs/framework/wcf/diagnostics/etw/57401-tracecodeeventloginfo.md new file mode 100644 index 00000000000..23ae0df35c7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57401-tracecodeeventloginfo.md @@ -0,0 +1,35 @@ +--- +title: "57401 - TraceCodeEventLogInfo | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 64f01506-0c11-4cdb-b9a2-552938da487b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57401 - TraceCodeEventLogInfo +## プロパティ + +||| +|-|-| +|ID|57401| +|キーワード|インフラストラクチャ| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは TraceCodeEventLogInfo 時に生成されます。 + +## メッセージ + イベント ログに書き込みました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57402-tracecodeeventlogverbose.md b/docs/framework/wcf/diagnostics/etw/57402-tracecodeeventlogverbose.md new file mode 100644 index 00000000000..8e53b101bae --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57402-tracecodeeventlogverbose.md @@ -0,0 +1,35 @@ +--- +title: "57402 - TraceCodeEventLogVerbose | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d6b1d6a7-a067-40d9-842a-ef451cebe03b +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57402 - TraceCodeEventLogVerbose +## プロパティ + +||| +|-|-| +|ID|57402| +|キーワード|インフラストラクチャ| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは TraceCodeEventLogVerbose で生成されます。 + +## メッセージ + イベント ログに書き込みました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57403-tracecodeeventlogwarning.md b/docs/framework/wcf/diagnostics/etw/57403-tracecodeeventlogwarning.md new file mode 100644 index 00000000000..e6728e55c29 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57403-tracecodeeventlogwarning.md @@ -0,0 +1,35 @@ +--- +title: "57403 - TraceCodeEventLogWarning | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f5e7b068-a335-4c4b-9cae-44d0ffeaa595 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57403 - TraceCodeEventLogWarning +## プロパティ + +||| +|-|-| +|ID|57403| +|キーワード|インフラストラクチャ| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは TraceCodeEventLogWarning で生成されます。 + +## メッセージ + イベント ログに書き込みました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/57404-handledexceptionwarning.md b/docs/framework/wcf/diagnostics/etw/57404-handledexceptionwarning.md new file mode 100644 index 00000000000..6d26aded297 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/57404-handledexceptionwarning.md @@ -0,0 +1,35 @@ +--- +title: "57404 - HandledExceptionWarning | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 81fc404c-6341-4fa0-a58e-c32875471c12 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 57404 - HandledExceptionWarning +## プロパティ + +||| +|-|-| +|ID|57404| +|キーワード|インフラストラクチャ| +|レベル|警告| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは例外の処理時に生成されます。 + +## メッセージ + 例外を処理しています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/601-cbaentryread.md b/docs/framework/wcf/diagnostics/etw/601-cbaentryread.md new file mode 100644 index 00000000000..062e60edaca --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/601-cbaentryread.md @@ -0,0 +1,35 @@ +--- +title: "601 - CBAEntryRead | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7d8b757f-e8d8-4c12-927e-ba3776c17983 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 601 - CBAEntryRead +## プロパティ + +||| +|-|-| +|ID|601| +|キーワード|| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、CBAEntry 読み取り時に生成されます。 + +## メッセージ + ServiceActivation 要素の相対アドレス: '%1'、標準化相対アドレス '%2' を処理しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/602-cbamatchfound.md b/docs/framework/wcf/diagnostics/etw/602-cbamatchfound.md new file mode 100644 index 00000000000..203eba309a9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/602-cbamatchfound.md @@ -0,0 +1,35 @@ +--- +title: "602 - CBAMatchFound | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6b1ccbb8-5a43-4b36-9949-702877cef90a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 602 - CBAMatchFound +## プロパティ + +||| +|-|-| +|ID|602| +|キーワード|| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、CBAMatch の検出時に生成されます。 + +## メッセージ + 受信要求が、アドレス '%1' の ServiceActivation 要素と一致します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/603-aspnetroutingservice.md b/docs/framework/wcf/diagnostics/etw/603-aspnetroutingservice.md new file mode 100644 index 00000000000..cdc9ec0d472 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/603-aspnetroutingservice.md @@ -0,0 +1,35 @@ +--- +title: "603 - AspNetRoutingService | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4a63dddc-72a2-4b43-b1f1-bfce434dcee9 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 603 - AspNetRoutingService +## プロパティ + +||| +|-|-| +|ID|603| +|キーワード|RoutingServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、受信要求が、アドレス %1 の Asp.Net ルートで定義された WCF サービスと一致すると生成されます。 + +## メッセージ + 受信要求が、アドレス %1 の Asp.Net ルートで定義された WCF サービスと一致します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/604-aspnetroute.md b/docs/framework/wcf/diagnostics/etw/604-aspnetroute.md new file mode 100644 index 00000000000..8da8e8d5526 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/604-aspnetroute.md @@ -0,0 +1,35 @@ +--- +title: "604 - AspNetRoute | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 761748b5-1b7c-4b17-98ba-0579876632f1 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 604 - AspNetRoute +## プロパティ + +||| +|-|-| +|ID|604| +|キーワード|RoutingServices| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、serviceType '%2' および serviceHostFactoryType '%3' の新しい Asp.Net ルート ''%1'' が追加されたときに生成されます。 + +## メッセージ + serviceType '%2' および serviceHostFactoryType '%3' の新しい Asp.Net ルート '%1' が追加されます。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/605-incrementbusycount.md b/docs/framework/wcf/diagnostics/etw/605-incrementbusycount.md new file mode 100644 index 00000000000..b1716341a70 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/605-incrementbusycount.md @@ -0,0 +1,35 @@ +--- +title: "605 - IncrementBusyCount | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 33ea5f9e-cd58-4833-8082-b99bab5cb254 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 605 - IncrementBusyCount +## プロパティ + +||| +|-|-| +|ID|605| +|キーワード|WebHost| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、IncrementBusyCount が呼び出されたときに生成されます。 + +## メッセージ + IncrementBusyCount が呼び出されました。 ソース: %1 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/606-decrementbusycount.md b/docs/framework/wcf/diagnostics/etw/606-decrementbusycount.md new file mode 100644 index 00000000000..c1eeaa8dfca --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/606-decrementbusycount.md @@ -0,0 +1,35 @@ +--- +title: "606 - DecrementBusyCount | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3dd6c6ae-1010-415c-82e4-51eaa897f1fa +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 606 - DecrementBusyCount +## プロパティ + +||| +|-|-| +|ID|606| +|キーワード|WebHost| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、DecrementBusyCount が呼び出されたときに生成されます。 + +## メッセージ + DecrementBusyCount が呼び出されました。 ソース: %1 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/62326-httphandlerpickedforurl.md b/docs/framework/wcf/diagnostics/etw/62326-httphandlerpickedforurl.md new file mode 100644 index 00000000000..6594b99d671 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/62326-httphandlerpickedforurl.md @@ -0,0 +1,35 @@ +--- +title: "62326 - HttpHandlerPickedForUrl | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: edb9fb88-dfb0-486c-971d-26735d80dc0d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 62326 - HttpHandlerPickedForUrl +## プロパティ + +||| +|-|-| +|ID|62326| +|キーワード|WebHost| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、この URL に対して行われるすべての要求を処理するために HTTP ハンドラーが選択されるときに生成されます。 + +## メッセージ + URL '%1' は、ルート要素型 '%2' の XAML ドキュメントをホストします。 この URL に対して行われるすべての要求を処理するために、HTTP ハンドラー型 '%3' が選択されています。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/701-servicechannelopenstart.md b/docs/framework/wcf/diagnostics/etw/701-servicechannelopenstart.md new file mode 100644 index 00000000000..ee0a0aeb723 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/701-servicechannelopenstart.md @@ -0,0 +1,35 @@ +--- +title: "701 - ServiceChannelOpenStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aaf1896e-b55a-4a91-854f-b59672bab3c7 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 701 - ServiceChannelOpenStart +## プロパティ + +||| +|-|-| +|ID|701| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ServiceChannelOpen が開始されると生成されます。 + +## メッセージ + ServiceChannelOpen を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/702-servicechannelopenstop.md b/docs/framework/wcf/diagnostics/etw/702-servicechannelopenstop.md new file mode 100644 index 00000000000..2c06a767b89 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/702-servicechannelopenstop.md @@ -0,0 +1,35 @@ +--- +title: "702 - ServiceChannelOpenStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 190298c4-8216-4eb5-b8b0-8072400838c5 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 702 - ServiceChannelOpenStop +## プロパティ + +||| +|-|-| +|ID|702| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ServiceChannelOpen の完了時に生成されます。 + +## メッセージ + ServiceChannelOpen が完了しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/703-servicechannelcallstart.md b/docs/framework/wcf/diagnostics/etw/703-servicechannelcallstart.md new file mode 100644 index 00000000000..e5ea3742ffb --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/703-servicechannelcallstart.md @@ -0,0 +1,35 @@ +--- +title: "703 - ServiceChannelCallStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a2595b36-a894-45c3-b722-e945107c0542 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 703 - ServiceChannelCallStart +## プロパティ + +||| +|-|-| +|ID|703| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ServiceChannelCall が開始されると生成されます。 + +## メッセージ + ServiceChannelCall を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/704-servicechannelbegincallstart.md b/docs/framework/wcf/diagnostics/etw/704-servicechannelbegincallstart.md new file mode 100644 index 00000000000..20fac42124d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/704-servicechannelbegincallstart.md @@ -0,0 +1,35 @@ +--- +title: "704 - ServiceChannelBeginCallStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 708819d3-45cc-46c3-938c-80f38b1fa9e2 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 704 - ServiceChannelBeginCallStart +## プロパティ + +||| +|-|-| +|ID|704| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ServiceChannel 非同期呼び出しが開始されたときに生成されます。 + +## メッセージ + ServiceChannel の非同期呼び出しを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/706-httpsendmessagestart.md b/docs/framework/wcf/diagnostics/etw/706-httpsendmessagestart.md new file mode 100644 index 00000000000..1e64a8a07a9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/706-httpsendmessagestart.md @@ -0,0 +1,35 @@ +--- +title: "706 - HttpSendMessageStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 825d3697-4b6c-4156-8f3a-ce24c4e39c48 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 706 - HttpSendMessageStart +## プロパティ + +||| +|-|-| +|ID|706| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、HTTP 送信要求が開始されると生成されます。 + +## メッセージ + HTTP 送信要求を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/707-httpsendstop.md b/docs/framework/wcf/diagnostics/etw/707-httpsendstop.md new file mode 100644 index 00000000000..cb4f012a182 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/707-httpsendstop.md @@ -0,0 +1,35 @@ +--- +title: "707 - HttpSendStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5c8a607a-be7a-4e36-a885-67746f03cae6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 707 - HttpSendStop +## プロパティ + +||| +|-|-| +|ID|707| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Debug| + +## 説明 + このイベントは、HTTP 送信要求が停止されると生成されます。 + +## メッセージ + HTTP 送信要求を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/708-httpmessagereceivestart.md b/docs/framework/wcf/diagnostics/etw/708-httpmessagereceivestart.md new file mode 100644 index 00000000000..26345d53917 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/708-httpmessagereceivestart.md @@ -0,0 +1,35 @@ +--- +title: "708 - HttpMessageReceiveStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fde15725-fca8-4e8c-963c-6d9ae9552a8a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 708 - HttpMessageReceiveStart +## プロパティ + +||| +|-|-| +|ID|708| +|キーワード|HTTP| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、HTTP トランスポートからのメッセージを受信したときに生成されます。 + +## メッセージ + HTTP トランスポートからメッセージを受信しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/709-dispatchmessagestart.md b/docs/framework/wcf/diagnostics/etw/709-dispatchmessagestart.md new file mode 100644 index 00000000000..ccd4cc19097 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/709-dispatchmessagestart.md @@ -0,0 +1,35 @@ +--- +title: "709 - DispatchMessageStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aef78385-681a-40fb-9809-0862c655fd06 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 709 - DispatchMessageStart +## プロパティ + +||| +|-|-| +|ID|709| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージのディスパッチが開始されると生成されます。 + +## メッセージ + メッセージのディスパッチを開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/710-httpcontextbeforeprocessauthentication.md b/docs/framework/wcf/diagnostics/etw/710-httpcontextbeforeprocessauthentication.md new file mode 100644 index 00000000000..d85856efa9a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/710-httpcontextbeforeprocessauthentication.md @@ -0,0 +1,35 @@ +--- +title: "710 - HttpContextBeforeProcessAuthentication | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a2e20c23-e54c-4774-8809-dfdc92f7eff9 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 710 - HttpContextBeforeProcessAuthentication +## プロパティ + +||| +|-|-| +|ID|710| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージのディスパッチの認証が開始されると生成されます。 + +## メッセージ + メッセージのディスパッチの認証を開始します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/711-dispatchmessagebeforeauthorization.md b/docs/framework/wcf/diagnostics/etw/711-dispatchmessagebeforeauthorization.md new file mode 100644 index 00000000000..0a73354811e --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/711-dispatchmessagebeforeauthorization.md @@ -0,0 +1,35 @@ +--- +title: "711 - DispatchMessageBeforeAuthorization | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ea7f7228-e642-441d-9470-6609a9fe08f0 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 711 - DispatchMessageBeforeAuthorization +## プロパティ + +||| +|-|-| +|ID|711| +|キーワード|ServiceModel| +|レベル|詳細| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージのディスパッチの認証が開始されると生成されます。 + +## メッセージ + メッセージのディスパッチの承認を開始します + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/712-dispatchmessagestop.md b/docs/framework/wcf/diagnostics/etw/712-dispatchmessagestop.md new file mode 100644 index 00000000000..86f165e4525 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/712-dispatchmessagestop.md @@ -0,0 +1,35 @@ +--- +title: "712 - DispatchMessageStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5e1894a6-9c44-4533-aaec-64063a2cbb06 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 712 - DispatchMessageStop +## プロパティ + +||| +|-|-| +|ID|712| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、メッセージのディスパッチが完了するときに生成されます。 + +## メッセージ + メッセージのディスパッチが完了しました + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/715-clientchannelopenstart.md b/docs/framework/wcf/diagnostics/etw/715-clientchannelopenstart.md new file mode 100644 index 00000000000..b0df6fd0960 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/715-clientchannelopenstart.md @@ -0,0 +1,35 @@ +--- +title: "715 - ClientChannelOpenStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 62be7826-9c4e-4fec-b958-185ddfaed976 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 715 - ClientChannelOpenStart +## プロパティ + +||| +|-|-| +|ID|715| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは ServiceChannel Open を開始すると生成されます。 + +## メッセージ + ServiceChannel Open を開始します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/716-clientchannelopenstop.md b/docs/framework/wcf/diagnostics/etw/716-clientchannelopenstop.md new file mode 100644 index 00000000000..e01340bad96 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/716-clientchannelopenstop.md @@ -0,0 +1,35 @@ +--- +title: "716 - ClientChannelOpenStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 55dc74a8-348f-47f3-aaca-4aef6cd75651 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 716 - ClientChannelOpenStop +## プロパティ + +||| +|-|-| +|ID|716| +|キーワード|ServiceModel| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは ServiceChannel Open を停止すると生成されます。 + +## メッセージ + ServiceChannel Open を停止します。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/717-httpsendstreamedmessagestart.md b/docs/framework/wcf/diagnostics/etw/717-httpsendstreamedmessagestart.md new file mode 100644 index 00000000000..8a62a6bf7d6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/717-httpsendstreamedmessagestart.md @@ -0,0 +1,35 @@ +--- +title: "717 - HttpSendStreamedMessageStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a157fdd5-b1b7-4498-9b0c-8a68c6f1f020 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 717 - HttpSendStreamedMessageStart +## プロパティ + +||| +|-|-| +|ID|717| +|キーワード|HTTP| +|レベル|情報| +|チャネル|Microsoft\-Windows\-Application Server\-Applications\/Analytic| + +## 説明 + このイベントは、ストリーム メッセージの HTTP 送信が開始されると生成されます。 + +## メッセージ + ストリーム メッセージの HTTP 送信を開始しました。 + +## 詳細 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/TOC.md b/docs/framework/wcf/diagnostics/etw/TOC.md new file mode 100644 index 00000000000..c9275f2b027 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/TOC.md @@ -0,0 +1,359 @@ +# [4035 - PendingSessionQueueRatio](4035-pendingsessionqueueratio.md) +# [132 - BufferPoolChangeQuota](132-bufferpoolchangequota.md) +# [708 - HttpMessageReceiveStart](708-httpmessagereceivestart.md) +# [3424 - WebSocketAsyncReadStart](3424-websocketasyncreadstart.md) +# [1424 - SecuritySessionRatio](1424-securitysessionratio.md) +# [3390 - ClientSendPreambleStop](3390-clientsendpreamblestop.md) +# [3830 - RoutingServiceAbortingChannel](3830-routingserviceabortingchannel.md) +# [403 - SuspendSignpostEvent](403-suspendsignpostevent.md) +# [3401 - SignatureVerificationStart](3401-signatureverificationstart.md) +# [3430 - WebSocketUseVersionFromClientWebSocketFactory](3430-websocketuseversionfromclientwebsocketfactory.md) +# [3407 - HttpPipelineProcessInboundRequestStart](3407-httppipelineprocessinboundrequeststart.md) +# [3396 - BufferedAsyncWriteStart](3396-bufferedasyncwritestart.md) +# [57403 - TraceCodeEventLogWarning](57403-tracecodeeventlogwarning.md) +# [3383 - ReliableSessionChannelFaulted](3383-reliablesessionchannelfaulted.md) +# [3804 - RoutingServiceCreatingClientForEndpoint](3804-routingservicecreatingclientforendpoint.md) +# [506 - CreateServiceHostStop](506-createservicehoststop.md) +# [5607 - PrincipalSettingFromSessionTokenSuccess](5607-principalsettingfromsessiontokensuccess.md) +# [5606 - PrincipalSettingFromSessionTokenStarted](5606-principalsettingfromsessiontokenstarted.md) +# [3395 - MessageWrittenAsynchronouslyByEncoder](3395-messagewrittenasynchronouslybyencoder.md) +# [3308 - ClientBaseUsingLocalChannelFactory](3308-clientbaseusinglocalchannelfactory.md) +# [1416 - MaxReceivedMessageSizeExceeded](1416-maxreceivedmessagesizeexceeded.md) +# [62326 - HttpHandlerPickedForUrl](62326-httphandlerpickedforurl.md) +# [5204 - JsonMessageEncodingStart](5204-jsonmessageencodingstart.md) +# [3303 - ReceiveContextAbandonWithException](3303-receivecontextabandonwithexception.md) +# [711 - DispatchMessageBeforeAuthorization](711-dispatchmessagebeforeauthorization.md) +# [5406 - GetIssuerNameFailure](5406-getissuernamefailure.md) +# [57393 - AppDomainUnload](57393-appdomainunload.md) +# [3338 - ChannelReceiveStop](3338-channelreceivestop.md) +# [3345 - SessionPreambleUnderstood](3345-sessionpreambleunderstood.md) +# [サービス操作の実行時間の確認](determining-service-operation-duration.md) +# [3826 - RoutingServiceUsingExistingTransaction](3826-routingserviceusingexistingtransaction.md) +# [5005 - ImportKnownTypesStart](5005-importknowntypesstart.md) +# [4816 - FindInitiatedInDiscoveryClientChannel](4816-findinitiatedindiscoveryclientchannel.md) +# [3357 - SecurityIdentityVerificationFailure](3357-securityidentityverificationfailure.md) +# [509 - ServiceHostOpenStart](509-servicehostopenstart.md) +# [1419 - MaxPendingConnectionsExceeded](1419-maxpendingconnectionsexceeded.md) +# [分析トレース イベント リファレンス](analytic-trace-event-reference.md) +# [5016 - GenXmlSerializableStart](5016-genxmlserializablestart.md) +# [4026 - WasConnected](4026-wasconnected.md) +# [401- StopSignPostEvent](401-stopsignpostevent.md) +# [3364 - SharedListenerProxyRegisterStart](3364-sharedlistenerproxyregisterstart.md) +# [208 - MessageInspectorAfterReceiveInvoked](208-messageinspectorafterreceiveinvoked.md) +# [3388 - HttpGetContextStart](3388-httpgetcontextstart.md) +# [3369 - SslOnAcceptUpgrade](3369-sslonacceptupgrade.md) +# [3831 - RoutingServiceHandledException](3831-routingservicehandledexception.md) +# [3368 - SslOnInitiateUpgrade](3368-ssloninitiateupgrade.md) +# [4811 - DiscoveryMessageWithNullRelatesTo](4811-discoverymessagewithnullrelatesto.md) +# [4015 - MessageQueueRegisterCompleted](4015-messagequeueregistercompleted.md) +# [3306 - ClientBaseChannelFactoryAgedOutofCache](3306-clientbasechannelfactoryagedoutofcache.md) +# [4014 - MessageQueueRegisterFailed](4014-messagequeueregisterfailed.md) +# [4809 - DiscoveryMessageWithNullMessageId](4809-discoverymessagewithnullmessageid.md) +# [3321 - ConnectionPoolMiss](3321-connectionpoolmiss.md) +# [502 - CompilationStop](502-compilationstop.md) +# [57402 - TraceCodeEventLogVerbose](57402-tracecodeeventlogverbose.md) +# [3398 - PipeSharedMemoryCreated](3398-pipesharedmemorycreated.md) +# [513 - WebHostRequestStart](513-webhostrequeststart.md) +# [4033 - RoutingTableLookupStart](4033-routingtablelookupstart.md) +# [5402 - TokenValidationStarted](5402-tokenvalidationstarted.md) +# [1420 - ReaderQuotaExceeded](1420-readerquotaexceeded.md) +# [3419 - WebSocketConnectionDeclined](3419-websocketconnectiondeclined.md) +# [1418 - MaxOutboundConnectionsPerEndpointExceeded](1418-maxoutboundconnectionsperendpointexceeded.md) +# [507 - HostedTransportConfigurationManagerConfigInitStart](507-hostedtransportconfigurationmanagerconfiginitstart.md) +# [4022 - WebhostUnregisterProtocolFailed](4022-webhostunregisterprotocolfailed.md) +# [3312 - MessageReadByEncoder](3312-messagereadbyencoder.md) +# [4815 - EndpointDiscoverabilityEnabled](4815-endpointdiscoverabilityenabled.md) +# [1441 - MaxSessionSizeReached](1441-maxsessionsizereached.md) +# [3428 - WebSocketConnectionClosed](3428-websocketconnectionclosed.md) +# [4031 - DispatchSessionFailed](4031-dispatchsessionfailed.md) +# [57394 - HandledException](57394-handledexception.md) +# [1430 - PendingConnectionsRatio](1430-pendingconnectionsratio.md) +# [3427 - WebSocketCloseOutputSent](3427-websocketcloseoutputsent.md) +# [3325 - DispatchFormatterSerializeReplyStop](3325-dispatchformatterserializereplystop.md) +# [4818 - InnerChannelOpenFailed](4818-innerchannelopenfailed.md) +# [5015 - DCJsonGenWriterStop](5015-dcjsongenwriterstop.md) +# [3378 - SocketAsyncReadStop](3378-socketasyncreadstop.md) +# [3358 - PortSharingDuplicatedSocket](3358-portsharingduplicatedsocket.md) +# [3329 - ClientFormatterDeserializeReplyStop](3329-clientformatterdeserializereplystop.md) +# [3815 - RoutingServiceProcessingMessage](3815-routingserviceprocessingmessage.md) +# [514 - WebHostRequestStop](514-webhostrequeststop.md) +# [3372 - TextMessageEncodingStart](3372-textmessageencodingstart.md) +# [4813 - DuplicateDiscoveryMessage](4813-duplicatediscoverymessage.md) +# [3412 - HttpPipelineProcessResponseStart](3412-httppipelineprocessresponsestart.md) +# [3335 - GetServiceInstanceStart](3335-getserviceinstancestart.md) +# [3389 - ClientSendPreambleStart](3389-clientsendpreamblestart.md) +# [1406 - ReceiveTimeout](1406-receivetimeout.md) +# [4817 - InnerChannelCreationFailed](4817-innerchannelcreationfailed.md) +# [3340 - PipeConnectionAcceptStart](3340-pipeconnectionacceptstart.md) +# [211 - ParameterInspectorAfterCallInvoked](211-parameterinspectoraftercallinvoked.md) +# [1422 - NegotiateTokenAuthenticatorStateCacheExceeded](1422-negotiatetokenauthenticatorstatecacheexceeded.md) +# [3819 - RoutingServiceMovedToBackup](3819-routingservicemovedtobackup.md) +# [3405 - EncryptedDataProcessingStart](3405-encrypteddataprocessingstart.md) +# [215 - MessageReceivedByTransport](215-messagereceivedbytransport.md) +# [3556 - CreateWorkflowServiceHostStop](3556-createworkflowservicehoststop.md) +# [4012 - MessageQueueRegisterAbort](4012-messagequeueregisterabort.md) +# [3320 - SocketAccepted](3320-socketaccepted.md) +# [203 - ClientParameterInspectorAfterCallInvoked](203-clientparameterinspectoraftercallinvoked.md) +# [3560 - ServiceActivationAvailableMemory](3560-serviceactivationavailablememory.md) +# [5405 - GetIssuerNameSuccess](5405-getissuernamesuccess.md) +# [207 - FaultProviderInvoked](207-faultproviderinvoked.md) +# [3824 - RoutingServiceCompletingReceiveContext](3824-routingservicecompletingreceivecontext.md) +# [226 - IdleServicesClosed](226-idleservicesclosed.md) +# [5603 - FederationMessageCreationSuccess](5603-federationmessagecreationsuccess.md) +# [3429 - WebSocketCloseStatusReceived](3429-websocketclosestatusreceived.md) +# [4814 - EndpointDiscoverabilityDisabled](4814-endpointdiscoverabilitydisabled.md) +# [3351 - ServerMaxPooledConnectionsQuotaReached](3351-servermaxpooledconnectionsquotareached.md) +# [3423 - WebSocketAsyncWriteStop](3423-websocketasyncwritestop.md) +# [3371 - MtomMessageEncodingStart](3371-mtommessageencodingstart.md) +# [218 - ClientOperationCompleted](218-clientoperationcompleted.md) +# [3302 - ReceiveContextFaulted](3302-receivecontextfaulted.md) +# [709 - DispatchMessageStart](709-dispatchmessagestart.md) +# [220 - MessageSentToTransport](220-messagesenttotransport.md) +# [3805 - RoutingServiceDisplayConfig](3805-routingservicedisplayconfig.md) +# [分析トレースの概要](analytic-tracing-overview.md) +# [217 - ClientOperationPrepared](217-clientoperationprepared.md) +# [3313 - MessageWrittenByEncoder](3313-messagewrittenbyencoder.md) +# [4011 - MessageQueueRegisterStart](4011-messagequeueregisterstart.md) +# [3818 - RoutingServiceDuplexCallbackException](3818-routingserviceduplexcallbackexception.md) +# [701 - ServiceChannelOpenStart](701-servicechannelopenstart.md) +# [4810 - DiscoveryMessageWithNullMessageSequence](4810-discoverymessagewithnullmessagesequence.md) +# [3337 - ChannelReceiveStart](3337-channelreceivestart.md) +# [5602 - FederationMessageCreationStarted](5602-federationmessagecreationstarted.md) +# [3367 - ConnectionPoolPreambleFailed](3367-connectionpoolpreamblefailed.md) +# [1432 - ConcurrentSessionsRatio](1432-concurrentsessionsratio.md) +# [3347 - SocketAcceptClosed](3347-socketacceptclosed.md) +# [3816 - RoutingServiceTransmittingMessage](3816-routingservicetransmittingmessage.md) +# [3309 - QueryCompositionExecuted](3309-querycompositionexecuted.md) +# [3324 - DispatchFormatterSerializeReplyStart](3324-dispatchformatterserializereplystart.md) +# [3365 - SharedListenerProxyRegisterStop](3365-sharedlistenerproxyregisterstop.md) +# [3375 - TextMessageDecodingStart](3375-textmessagedecodingstart.md) +# [213 - ServiceHostStarted](213-servicehoststarted.md) +# [214 - OperationCompleted](214-operationcompleted.md) +# [1439 - PendingAcceptsAtZero](1439-pendingacceptsatzero.md) +# [4812 - DiscoveryMessageWithNullReplyTo](4812-discoverymessagewithnullreplyto.md) +# [710 - HttpContextBeforeProcessAuthentication](710-httpcontextbeforeprocessauthentication.md) +# [4001 - TransportListenerSessionsReceived](4001-transportlistenersessionsreceived.md) +# [703 - ServiceChannelCallStart](703-servicechannelcallstart.md) +# [133 - ActionItemScheduled](133-actionitemscheduled.md) +# [717 - HttpSendStreamedMessageStart](717-httpsendstreamedmessagestart.md) +# [5008 - DCGenWriterStart](5008-dcgenwriterstart.md) +# [301 - UserDefinedErrorOccurred](301-userdefinederroroccurred.md) +# [3314 - SessionIdleTimeout](3314-sessionidletimeout.md) +# [201 - ClientMessageInspectorAfterReceiveInvoked](201-clientmessageinspectorafterreceiveinvoked.md) +# [3334 - IncomingMessageVerified](3334-incomingmessageverified.md) +# [3391 - HttpMessageReceiveFailed](3391-httpmessagereceivefailed.md) +# [1442 - ReceiveRetryCountReached](1442-receiveretrycountreached.md) +# [4801 - DiscoveryClientInClientChannelFailedToClose](4801-discoveryclientinclientchannelfailedtoclose.md) +# [3417 - WebSocketConnectionAcceptStart](3417-websocketconnectionacceptstart.md) +# [205 - OperationInvoked](205-operationinvoked.md) +# [3807 - RoutingServiceCompletingTwoWay](3807-routingservicecompletingtwoway.md) +# [3384 - WindowsStreamSecurityOnInitiateUpgrade](3384-windowsstreamsecurityoninitiateupgrade.md) +# [3377 - SocketReadStop](3377-socketreadstop.md) +# [3339 - ChannelFactoryCreated](3339-channelfactorycreated.md) +# [206 - ErrorHandlerInvoked](206-errorhandlerinvoked.md) +# [3349 - ListenerOpenStart](3349-listeneropenstart.md) +# [1400 - ChannelInitializationTimeout](1400-channelinitializationtimeout.md) +# [4023 - WasCloseAllListenerChannelInstancesCompleted](4023-wasclosealllistenerchannelinstancescompleted.md) +# [134 - ActionItemCallbackInvoked](134-actionitemcallbackinvoked.md) +# [3322 - DispatchFormatterDeserializeRequestStart](3322-dispatchformatterdeserializerequeststart.md) +# [3362 - HttpChannelResponseAborted](3362-httpchannelresponseaborted.md) +# [4027 - WasDisconnected](4027-wasdisconnected.md) +# [3307 - ClientBaseChannelFactoryCacheHit](3307-clientbasechannelfactorycachehit.md) +# [3827 - RoutingServiceTransmitFailed](3827-routingservicetransmitfailed.md) +# [4032 - WasConnectionTimedout](4032-wasconnectiontimedout.md) +# [3558 - ServiceActivationStart](3558-serviceactivationstart.md) +# [3409 - HttpPipelineProcessInboundRequestStop](3409-httppipelineprocessinboundrequeststop.md) +# [3363 - HttpAuthFailed](3363-httpauthfailed.md) +# [302 - UserDefinedWarningOccurred](302-userdefinedwarningoccurred.md) +# [3803 - RoutingServiceProcessingFailure](3803-routingserviceprocessingfailure.md) +# [4002 - FailFastException](4002-failfastexception.md) +# [3394 - StreamedMessageWrittenByEncoder](3394-streamedmessagewrittenbyencoder.md) +# [4034 - RoutingTableLookupStop](4034-routingtablelookupstop.md) +# [4820 - SynchronizationContextReset](4820-synchronizationcontextreset.md) +# [57400 - TraceCodeEventLogError](57400-tracecodeeventlogerror.md) +# [3828 - RoutingServiceFilterTableMatchStart](3828-routingservicefiltertablematchstart.md) +# [3319 - SocketAcceptEnqueued](3319-socketacceptenqueued.md) +# [4029 - PipeTransportListenerListeningStop](4029-pipetransportlistenerlisteningstop.md) +# [3323 - DispatchFormatterDeserializeRequestStop](3323-dispatchformatterdeserializerequeststop.md) +# [3817 - RoutingServiceCommittingTransaction](3817-routingservicecommittingtransaction.md) +# [3341 - PipeConnectionAcceptStop](3341-pipeconnectionacceptstop.md) +# [3413 - HttpPipelineBeginProcessResponseStart](3413-httppipelinebeginprocessresponsestart.md) +# [3410 - HttpPipelineFaulted](3410-httppipelinefaulted.md) +# [5009 - DCGenWriterStop](5009-dcgenwriterstop.md) +# [3823 - RoutingServiceSendingFaultResponse](3823-routingservicesendingfaultresponse.md) +# [3330 - SecurityNegotiationStart](3330-securitynegotiationstart.md) +# [5203 - JsonMessageDecodingStart](5203-jsonmessagedecodingstart.md) +# [3352 - TcpConnectionTimedOut](3352-tcpconnectiontimedout.md) +# [3431 - WebSocketCreateClientWebSocketWithFactory](3431-websocketcreateclientwebsocketwithfactory.md) +# [224 - MessageThrottleAtSeventyPercent](224-messagethrottleatseventypercent.md) +# [706 - HttpSendMessageStart](706-httpsendmessagestart.md) +# [204 - ClientParameterInspectorBeforeCallInvoked](204-clientparameterinspectorbeforecallinvoked.md) +# [3327 - ClientFormatterSerializeRequestStop](3327-clientformatterserializerequeststop.md) +# [57404 - HandledExceptionWarning](57404-handledexceptionwarning.md) +# [219 - ServiceException](219-serviceexception.md) +# [3359 - SecurityImpersonationSuccess](3359-securityimpersonationsuccess.md) +# [4807 - DiscoveryMessageWithInvalidReplyTo](4807-discoverymessagewithinvalidreplyto.md) +# [601 - CBAEntryRead](601-cbaentryread.md) +# [209 - MessageInspectorBeforeSendInvoked](209-messageinspectorbeforesendinvoked.md) +# [5011 - DCGenReaderStop](5011-dcgenreaderstop.md) +# [3408 - HttpPipelineBeginProcessInboundRequestStart](3408-httppipelinebeginprocessinboundrequeststart.md) +# [3332 - SecurityTokenProviderOpened](3332-securitytokenprovideropened.md) +# [5601 - FederationMessageProcessingSuccess](5601-federationmessageprocessingsuccess.md) +# [604 - AspNetRoute](604-aspnetroute.md) +# [4028 - PipeTransportListenerListeningStart](4028-pipetransportlistenerlisteningstart.md) +# [4024 - WasCloseAllListenerChannelInstancesFailed](4024-wasclosealllistenerchannelinstancesfailed.md) +# [5604 - SessionCookieReadingStarted](5604-sessioncookiereadingstarted.md) +# [3832 - RoutingServiceTransmitSucceeded](3832-routingservicetransmitsucceeded.md) +# [3374 - MtomMessageDecodingStart](3374-mtommessagedecodingstart.md) +# [3414 - HttpPipelineProcessResponseStop](3414-httppipelineprocessresponsestop.md) +# [3393 - StreamedMessageReadByEncoder](3393-streamedmessagereadbyencoder.md) +# [704 - ServiceChannelBeginCallStart](704-servicechannelbegincallstart.md) +# [3406 - EncryptedDataProcessingSuccess](3406-encrypteddataprocessingsuccess.md) +# [5013 - DCJsonGenReaderStop](5013-dcjsongenreaderstop.md) +# [3425 - WebSocketAsyncReadStop](3425-websocketasyncreadstop.md) +# [3300 - ReceiveContextCompleteFailed](3300-receivecontextcompletefailed.md) +# [5012 - DCJsonGenReaderStart](5012-dcjsongenreaderstart.md) +# [3421 - WebSocketConnectionAborted](3421-websocketconnectionaborted.md) +# [4020 - TcpTransportListenerListeningStart](4020-tcptransportlistenerlisteningstart.md) +# [3310 - DispatchFailed](3310-dispatchfailed.md) +# [222 - OperationFailed](222-operationfailed.md) +# [602 - CBAMatchFound](602-cbamatchfound.md) +# [3305 - ClientBaseCachedChannelFactoryCount](3305-clientbasecachedchannelfactorycount.md) +# [503 - ServiceHostFactoryCreationStart](503-servicehostfactorycreationstart.md) +# [1445 - ReadPoolMiss](1445-readpoolmiss.md) +# [3311 - DispatchSuccessful](3311-dispatchsuccessful.md) +# [3418 - WebSocketConnectionAccepted](3418-websocketconnectionaccepted.md) +# [3350 - ListenerOpenStop](3350-listeneropenstop.md) +# [5002 - DCSerializeWithSurrogateStop](5002-dcserializewithsurrogatestop.md) +# [3331 - SecurityNegotiationStop](3331-securitynegotiationstop.md) +# [4030 - DispatchSessionSuccess](4030-dispatchsessionsuccess.md) +# [57401 - TraceCodeEventLogInfo](57401-tracecodeeventloginfo.md) +# [1423 - NegotiateTokenAuthenticatorStateCacheRatio](1423-negotiatetokenauthenticatorstatecacheratio.md) +# [715 - ClientChannelOpenStart](715-clientchannelopenstart.md) +# [3370 - BinaryMessageEncodingStart](3370-binarymessageencodingstart.md) +# [4804 - DiscoveryMessageReceivedAfterOperationCompleted](4804-discoverymessagereceivedafteroperationcompleted.md) +# [1401 - CloseTimeout](1401-closetimeout.md) +# [4003 - ServiceStartPipeError](4003-servicestartpipeerror.md) +# [1443 - MaxRetryCyclesExceededMsmq](1443-maxretrycyclesexceededmsmq.md) +# [505 - CreateServiceHostStart](505-createservicehoststart.md) +# [1433 - OutboundConnectionsPerEndpointRatio](1433-outboundconnectionsperendpointratio.md) +# [3360 - SecurityImpersonationFailure](3360-securityimpersonationfailure.md) +# [303 - UserDefinedInformationEventOccured](303-userdefinedinformationeventoccured.md) +# [402 - StartSignpostEvent](402-startsignpostevent.md) +# [712 - DispatchMessageStop](712-dispatchmessagestop.md) +# [501 - CompilationStart](501-compilationstart.md) +# [707 - HttpSendStop](707-httpsendstop.md) +# [サービス操作エラーの監視](monitoring-service-operation-failures.md) +# [分析トレースの動的な有効化](dynamically-enabling-analytic-tracing.md) +# [3821 - RoutingServiceCloseFailed](3821-routingserviceclosefailed.md) +# [1402 - IdleTimeout](1402-idletimeout.md) +# [3559 - ServiceActivationStop](3559-serviceactivationstop.md) +# [1431 - ConcurrentCallsRatio](1431-concurrentcallsratio.md) +# [4802 - DiscoveryClientProtocolExceptionSuppressed](4802-discoveryclientprotocolexceptionsuppressed.md) +# [716 - ClientChannelOpenStop](716-clientchannelopenstop.md) +# [5600 - FederationMessageProcessingStarted](5600-federationmessageprocessingstarted.md) +# [3355 - SecurityNegotiationProcessingFailure](3355-securitynegotiationprocessingfailure.md) +# [3356 - SecurityIdentityVerificationSuccess](3356-securityidentityverificationsuccess.md) +# [57396 - ThrowingException](57396-throwingexception.md) +# [3343 - EstablishConnectionStop](3343-establishconnectionstop.md) +# [3422 - WebSocketAsyncWriteStart](3422-websocketasyncwritestart.md) +# [4016 - MessageQueueDuplicatedSocketError](4016-messagequeueduplicatedsocketerror.md) +# [603 - AspNetRoutingService](603-aspnetroutingservice.md) +# [4803 - DiscoveryClientReceivedMulticastSuppression](4803-discoveryclientreceivedmulticastsuppression.md) +# [221 - MessageReceivedFromTransport](221-messagereceivedfromtransport.md) +# [5003 - DCDeserializeWithSurrogateStart](5003-dcdeserializewithsurrogatestart.md) +# [1446 - WritePoolMiss](1446-writepoolmiss.md) +# [4808 - DiscoveryMessageWithNoContent](4808-discoverymessagewithnocontent.md) +# [4008 - DispatchSessionStart](4008-dispatchsessionstart.md) +# [451 - MessageLogInfo](451-messageloginfo.md) +# [4600 - MessageLogEventSizeExceeded](4600-messagelogeventsizeexceeded.md) +# [3822 - RoutingServiceSendingResponse](3822-routingservicesendingresponse.md) +# [3336 - GetServiceInstanceStop](3336-getserviceinstancestop.md) +# [1405 - OpenTimeout](1405-opentimeout.md) +# [4025 - OpenListenerChannelInstanceFailed](4025-openlistenerchannelinstancefailed.md) +# [3301 - ReceiveContextAbandonFailed](3301-receivecontextabandonfailed.md) +# [5001 - DCSerializeWithSurrogateStart](5001-dcserializewithsurrogatestart.md) +# [3381 - SequenceAcknowledgementSent](3381-sequenceacknowledgementsent.md) +# [5017 - GenXmlSerializableStop](5017-genxmlserializablestop.md) +# [3328 - ClientFormatterDeserializeReplyStart](3328-clientformatterdeserializereplystart.md) +# [3825 - RoutingServiceAbandoningReceiveContext](3825-routingserviceabandoningreceivecontext.md) +# [606 - DecrementBusyCount](606-decrementbusycount.md) +# [5004 - DCDeserializeWithSurrogateStop](5004-dcdeserializewithsurrogatestop.md) +# [3385 - WindowsStreamSecurityOnAcceptUpgrade](3385-windowsstreamsecurityonacceptupgrade.md) +# [1417 - MaxSentMessageSizeExceeded](1417-maxsentmessagesizeexceeded.md) +# [404 - ResumeSignpostEvent](404-resumesignpostevent.md) +# [1403 - LeaseTimeout](1403-leasetimeout.md) +# [1409 - InactivityTimeout](1409-inactivitytimeout.md) +# [57395 - ShipAssertExceptionMessage](57395-shipassertexceptionmessage.md) +# [3376 - HttpResponseReceiveStart](3376-httpresponsereceivestart.md) +# [3386 - SocketConnectionAbort](3386-socketconnectionabort.md) +# [3404 - WrappedKeyDecryptionSuccess](3404-wrappedkeydecryptionsuccess.md) +# [3802 - RoutingServiceCompletingOneWay](3802-routingservicecompletingoneway.md) +# [605 - IncrementBusyCount](605-incrementbusycount.md) +# [510 - ServiceHostOpenStop](510-servicehostopenstop.md) +# [3829 - RoutingServiceFilterTableMatchStop](3829-routingservicefiltertablematchstop.md) +# [1438 - ConcurrentInstancesRatio](1438-concurrentinstancesratio.md) +# [5403 - TokenValidationSuccess](5403-tokenvalidationsuccess.md) +# [3415 - WebSocketConnectionRequestSendStart](3415-websocketconnectionrequestsendstart.md) +# [223 - OperationFaulted](223-operationfaulted.md) +# [3342 - EstablishConnectionStart](3342-establishconnectionstart.md) +# [3426 - WebSocketCloseSent](3426-websocketclosesent.md) +# [5006 - ImportKnownTypesStop](5006-importknowntypesstop.md) +# [4019 - MessageQueueDuplicatedSocketComplete](4019-messagequeueduplicatedsocketcomplete.md) +# [3402 - SignatureVerificationSuccess](3402-signatureverificationsuccess.md) +# [5605 - SessionCookieReadingSuccess](5605-sessioncookiereadingsuccess.md) +# [4805 - DiscoveryMessageWithInvalidContent](4805-discoverymessagewithinvalidcontent.md) +# [3392 - TransactionScopeCreate](3392-transactionscopecreate.md) +# [3366 - SharedListenerProxyRegisterFailed](3366-sharedlistenerproxyregisterfailed.md) +# [504 - ServiceHostFactoryCreationStop](504-servicehostfactorycreationstop.md) +# [3403 - WrappedKeyDecryptionStart](3403-wrappedkeydecryptionstart.md) +# [3379 - SocketWriteStart](3379-socketwritestart.md) +# [210 - MessageThrottleExceeded](210-messagethrottleexceeded.md) +# [508 - HostedTransportConfigurationManagerConfigInitStop](508-hostedtransportconfigurationmanagerconfiginitstop.md) +# [3553 - XamlServicesLoadStart](3553-xamlservicesloadstart.md) +# [452 - MessageLogWarning](452-messagelogwarning.md) +# [3416 - WebSocketConnectionRequestSendStop](3416-websocketconnectionrequestsendstop.md) +# [3809 - RoutingServiceMessageRoutedToEndpoints](3809-routingservicemessageroutedtoendpoints.md) +# [3333 - OutgoingMessageSecured](3333-outgoingmessagesecured.md) +# [3373 - BinaryMessageDecodingStart](3373-binarymessagedecodingstart.md) +# [1436 - PendingMessagesPerChannelRatio](1436-pendingmessagesperchannelratio.md) +# [3411 - HttpPipelineTimeoutException](3411-httppipelinetimeoutexception.md) +# [4819 - InnerChannelOpenSucceeded](4819-innerchannelopensucceeded.md) +# [1407 - SendTimeout](1407-sendtimeout.md) +# [3380 - SocketAsyncWriteStart](3380-socketasyncwritestart.md) +# [131 - BufferPoolAllocation](131-bufferpoolallocation.md) +# [Analytic Tracing with ETW](index.md) +# [3554 - XamlServicesLoadStop](3554-xamlservicesloadstop.md) +# [3326 - ClientFormatterSerializeRequestStart](3326-clientformatterserializerequeststart.md) +# [3810 - RoutingServiceConfigurationApplied](3810-routingserviceconfigurationapplied.md) +# [3397 - BufferedAsyncWriteStop](3397-bufferedasyncwritestop.md) +# [3420 - WebSocketConnectionFailed](3420-websocketconnectionfailed.md) +# [3348 - ServiceHostFaulted](3348-servicehostfaulted.md) +# [4806 - DiscoveryMessageWithInvalidRelatesToOrOperationCompleted](4806-discoverymessagewithinvalidrelatestooroperationcompleted.md) +# [3353 - TcpConnectionResetError](3353-tcpconnectionreseterror.md) +# [5010 - DCGenReaderStart](5010-dcgenreaderstart.md) +# [5404 - TokenValidationFailure](5404-tokenvalidationfailure.md) +# [702 - ServiceChannelOpenStop](702-servicechannelopenstop.md) +# [4013 - MessageQueueUnregisterSucceeded](4013-messagequeueunregistersucceeded.md) +# [3399 - NamedPipeCreated](3399-namedpipecreated.md) +# [5007 - DCResolverResolve](5007-dcresolverresolve.md) +# [メッセージ フローのトレースの構成](configuring-message-flow-tracing.md) +# [216 - MessageSentByTransport](216-messagesentbytransport.md) +# [4010 - PendingSessionQueueFull](4010-pendingsessionqueuefull.md) +# [3555 - CreateWorkflowServiceHostStart](3555-createworkflowservicehoststart.md) +# [3346 - ConnectionReaderSendFault](3346-connectionreadersendfault.md) +# [3820 - RoutingServiceCreatingTransaction](3820-routingservicecreatingtransaction.md) +# [4821 - SynchronizationContextSetToNull](4821-synchronizationcontextsettonull.md) +# [57399 - TraceCodeEventLogCritical](57399-tracecodeeventlogcritical.md) +# [3800 - RoutingServiceClosingClient](3800-routingserviceclosingclient.md) +# [1451 - MaxRetryCyclesExceeded](1451-maxretrycyclesexceeded.md) +# [202 - ClientMessageInspectorBeforeSendInvoked](202-clientmessageinspectorbeforesendinvoked.md) +# [3354 - ServiceSecurityNegotiationCompleted](3354-servicesecuritynegotiationcompleted.md) +# [499 - TransferEmitted](499-transferemitted.md) +# [3801 - RoutingServiceChannelFaulted](3801-routingservicechannelfaulted.md) +# [212 - ParameterInspectorBeforeCallInvoked](212-parameterinspectorbeforecallinvoked.md) +# [57397 - UnhandledException](57397-unhandledexception.md) +# [5014 - DCJsonGenWriterStart](5014-dcjsongenwriterstart.md) +# [3382 - ClientReliableSessionReconnect](3382-clientreliablesessionreconnect.md) +# [3361 - HttpChannelRequestAborted](3361-httpchannelrequestaborted.md) +# [4021 - TcpTransportListenerListeningStop](4021-tcptransportlistenerlisteningstop.md) diff --git a/docs/framework/wcf/diagnostics/etw/analytic-trace-event-reference.md b/docs/framework/wcf/diagnostics/etw/analytic-trace-event-reference.md new file mode 100644 index 00000000000..8e5c995e43d --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/analytic-trace-event-reference.md @@ -0,0 +1,380 @@ +--- +title: "分析トレース イベント リファレンス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "分析トレース [WCF] リファレンス" +ms.assetid: e44540cf-44a1-4efc-b965-7fbfd2131d73 +caps.latest.revision: 50 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 50 +--- +# 分析トレース イベント リファレンス +次の表に、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の分析トレースに関連するイベント レベル、識別子、およびメッセージの定義を示します。 + +## イベント リファレンス + +|イベント ID|イベント レベル|イベント メッセージ|キーワード| +|-------------|--------------|----------------|-----------| +|[131 \- BufferPoolAllocation](../../../../../docs/framework/wcf/diagnostics/etw/131-bufferpoolallocation.md)|詳細|プールが %1 バイトを割り当てています。|インフラストラクチャ| +|[132 \- BufferPoolChangeQuota](../../../../../docs/framework/wcf/diagnostics/etw/132-bufferpoolchangequota.md)|詳細|BufferPool のサイズ: %1、クォータの変更: %2。|インフラストラクチャ| +|[133 \- ActionItemScheduled](../../../../../docs/framework/wcf/diagnostics/etw/133-actionitemscheduled.md)|詳細|IO スレッド スケジューラのコールバックが呼び出されました。|インフラストラクチャ| +|[134 \- ActionItemCallbackInvoked](../../../../../docs/framework/wcf/diagnostics/etw/134-actionitemcallbackinvoked.md)|詳細|IO スレッド スケジューラのコールバックが呼び出されました。|インフラストラクチャ| +|[201 \- ClientMessageInspectorAfterReceiveInvoked](../../../../../docs/framework/wcf/diagnostics/etw/201-clientmessageinspectorafterreceiveinvoked.md)|情報|ディスパッチャーが型 '%1' の ClientMessageInspector で 'AfterReceiveReply' を呼び出しました。|Troubleshooting、ServiceModel| +|[202 \- ClientMessageInspectorBeforeSendInvoked](../../../../../docs/framework/wcf/diagnostics/etw/202-clientmessageinspectorbeforesendinvoked.md)|情報|ディスパッチャーが型 '%1' の ClientMessageInspector で 'BeforeSendRequest' を呼び出しました。|Troubleshooting、ServiceModel| +|[203 \- ClientParameterInspectorAfterCallInvoked](../../../../../docs/framework/wcf/diagnostics/etw/203-clientparameterinspectoraftercallinvoked.md)|情報|ディスパッチャーが 型 '%1' の ClientParameterInspector で 'AfterCall' を呼び出しました。|Troubleshooting、ServiceModel| +|[204 \- ClientParameterInspectorBeforeCallInvoked](../../../../../docs/framework/wcf/diagnostics/etw/204-clientparameterinspectorbeforecallinvoked.md)|情報|ディスパッチャーが型 '%1' の ClientParameterInspector で 'BeforeCall' を呼び出しました。|Troubleshooting、ServiceModel| +|[205 \- OperationInvoked](../../../../../docs/framework/wcf/diagnostics/etw/205-operationinvoked.md)|情報|OperationInvoker が '%1' メソッドを呼び出しました。|EndToEndMonitoring、Troubleshooting、ServiceModel| +|[206 \- ErrorHandlerInvoked](../../../../../docs/framework/wcf/diagnostics/etw/206-errorhandlerinvoked.md)|情報|ディスパッチャーが型 '%1' の ErrorHandler を呼び出し、種類 '%3' の例外がスローされました。 ErrorHandled \=\= '%2'。|Troubleshooting、ServiceModel| +|[207 \- FaultProviderInvoked](../../../../../docs/framework/wcf/diagnostics/etw/207-faultproviderinvoked.md)|情報|ディスパッチャーが型 '%1' の FaultProvider を呼び出し、種類 '%2' の例外がスローされました。|Troubleshooting、ServiceModel| +|[208 \- MessageInspectorAfterReceiveInvoked](../../../../../docs/framework/wcf/diagnostics/etw/208-messageinspectorafterreceiveinvoked.md)|情報|ディスパッチャーが型 '%1' の MessageInspector で 'AfterReceiveReply' を呼び出しました。|Troubleshooting、ServiceModel| +|[209 \- MessageInspectorBeforeSendInvoked](../../../../../docs/framework/wcf/diagnostics/etw/209-messageinspectorbeforesendinvoked.md)|情報|ディスパッチャーが型 '%1' の MessageInspector で 'BeforeSendRequest' を呼び出しました。|Troubleshooting、ServiceModel| +|[210 \- MessageThrottleExceeded](../../../../../docs/framework/wcf/diagnostics/etw/210-messagethrottleexceeded.md)|警告|スロットル '%1' の '%2' の制限に達しました。|HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|[211 \- ParameterInspectorAfterCallInvoked](../../../../../docs/framework/wcf/diagnostics/etw/211-parameterinspectoraftercallinvoked.md)|情報|ディスパッチャーが型 '%1' の ParameterInspector で 'AfterCall' を呼び出しました。|Troubleshooting、ServiceModel| +|[212 \- ParameterInspectorBeforeCallInvoked](../../../../../docs/framework/wcf/diagnostics/etw/212-parameterinspectorbeforecallinvoked.md)|情報|ディスパッチャーが型 '%1' の ParameterInspector で 'BeforeCall' を呼び出しました。|Troubleshooting、ServiceModel| +|[213 \- ServiceHostStarted](../../../../../docs/framework/wcf/diagnostics/etw/213-servicehoststarted.md)|LogAlways \(常にログ\)|ServiceHost は '%1' で開始されています。|HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|[214 \- OperationCompleted](../../../../../docs/framework/wcf/diagnostics/etw/214-operationcompleted.md)|情報|OperationInvoker がメソッド '%1' への呼び出しを完了しました。 メソッド呼び出し時間は '%2' ミリ秒でした。|HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|[215 \- MessageReceivedByTransport](../../../../../docs/framework/wcf/diagnostics/etw/215-messagereceivedbytransport.md)|情報|トランスポートが '%1' からメッセージを受信しました。|Troubleshooting、ServiceModel| +|[216 \- MessageSentByTransport](../../../../../docs/framework/wcf/diagnostics/etw/216-messagesentbytransport.md)|情報|トランスポートが '%1' にメッセージを送信しました。|Troubleshooting、ServiceModel| +|[217 \- ClientOperationPrepared](../../../../../docs/framework/wcf/diagnostics/etw/217-clientoperationprepared.md)|情報|クライアントは '%2' コントラクトと関連付けられている Action '%1' を実行しています。 メッセージは '%3' に送信されます。|Troubleshooting、ServiceModel| +|[218 \- ClientOperationCompleted](../../../../../docs/framework/wcf/diagnostics/etw/218-clientoperationcompleted.md)|情報|クライアントは '%1' コントラクトと関連付けられている Action '%1' の実行を完了しました。 メッセージは '%3' に送信されました。|Troubleshooting、ServiceModel| +|[219 \- ServiceException](../../../../../docs/framework/wcf/diagnostics/etw/219-serviceexception.md)|Error|メッセージの処理中に種類 '%2' のハンドルされない例外がスローされました。 完全な例外 ToString: %1。|HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|[220 \- MessageSentToTransport](../../../../../docs/framework/wcf/diagnostics/etw/220-messagesenttotransport.md)|情報|ディスパッチャーがトランスポートにメッセージを送信しました。 関連付け ID \=\= '%1'。|EndToEndMonitoring、Troubleshooting、ServiceModel| +|[221 \- MessageReceivedFromTransport](../../../../../docs/framework/wcf/diagnostics/etw/221-messagereceivedfromtransport.md)|情報|ディスパッチャーがトランスポートからメッセージを受信しました。 関連付け ID \=\= '%1'。|EndToEndMonitoring、Troubleshooting、ServiceModel| +|[222 \- OperationFailed](../../../../../docs/framework/wcf/diagnostics/etw/222-operationfailed.md)|警告|OperationInvoker によって呼び出されたメソッド '%1' で、ハンドルされない例外がスローされました。 メソッド呼び出し時間は '%2' ミリ秒でした。|HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|[223 \- OperationFaulted](../../../../../docs/framework/wcf/diagnostics/etw/223-operationfaulted.md)|警告|OperationInvoker によって呼び出されたメソッド '%1' で FaultException がスローされました。 メソッド呼び出し時間は '%2' ミリ秒でした。|HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|[224 \- MessageThrottleAtSeventyPercent](../../../../../docs/framework/wcf/diagnostics/etw/224-messagethrottleatseventypercent.md)|警告|スロットル '%1' の '%2' の制限は 70% です。|HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|[226 \- IdleServicesClosed](../../../../../docs/framework/wcf/diagnostics/etw/226-idleservicesclosed.md)|LogAlways \(常にログ\)|アクティブ化された合計 %2 個のサービスのうち、アイドル状態の %1 個のサービスが閉じられました。|HealthMonitoring WebHost| +|[301 \- UserDefinedErrorOccurred](../../../../../docs/framework/wcf/diagnostics/etw/301-userdefinederroroccurred.md)|Error|名前: '%1'、参照: '%2'、ペイロード: %3|UserEvents、HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|[302 \- UserDefinedWarningOccurred](../../../../../docs/framework/wcf/diagnostics/etw/302-userdefinedwarningoccurred.md)|警告|名前: '%1'、参照: '%2'、ペイロード: %3|UserEvents、HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|[303 \- UserDefinedInformationEventOccured](../../../../../docs/framework/wcf/diagnostics/etw/303-userdefinedinformationeventoccured.md)|情報|名前: '%1'、参照: '%2'、ペイロード: %3|UserEvents、HealthMonitoring、EndToEndMonitoring、Troubleshooting、ServiceModel| +|[401\- StopSignPostEvent](../../../../../docs/framework/wcf/diagnostics/etw/401-stopsignpostevent.md)|情報|アクティビティの境界|トラブルシューティング| +|[402 \- StartSignpostEvent](../../../../../docs/framework/wcf/diagnostics/etw/402-startsignpostevent.md)|情報|アクティビティの境界|トラブルシューティング| +|[403 \- SuspendSignpostEvent](../../../../../docs/framework/wcf/diagnostics/etw/403-suspendsignpostevent.md)|情報|アクティビティの境界|トラブルシューティング| +|[404 \- ResumeSignpostEvent](../../../../../docs/framework/wcf/diagnostics/etw/404-resumesignpostevent.md)|情報|アクティビティの境界|トラブルシューティング| +|[451 \- MessageLogInfo](../../../../../docs/framework/wcf/diagnostics/etw/451-messageloginfo.md)|情報|%1|Troubleshooting、WCFMessageLogging| +|[452 \- MessageLogWarning](../../../../../docs/framework/wcf/diagnostics/etw/452-messagelogwarning.md)|警告|%1|Troubleshooting、WCFMessageLogging| +|[499 \- TransferEmitted](../../../../../docs/framework/wcf/diagnostics/etw/499-transferemitted.md)|LogAlways \(常にログ\)|転送イベントが作成されました。|Troubleshooting、UserEvents、EndToEndMonitoring、ServiceModel、WFTracking、ServiceHost、WCFMessageLogging| +|[501 \- CompilationStart](../../../../../docs/framework/wcf/diagnostics/etw/501-compilationstart.md)|情報|コンパイルを開始します|WebHost| +|[502 \- CompilationStop](../../../../../docs/framework/wcf/diagnostics/etw/502-compilationstop.md)|情報|コンパイルを終了します|WebHost| +|[503 \- ServiceHostFactoryCreationStart](../../../../../docs/framework/wcf/diagnostics/etw/503-servicehostfactorycreationstart.md)|情報|ServiceHostFactory が作成を開始します|WebHost| +|[504 \- ServiceHostFactoryCreationStop](../../../../../docs/framework/wcf/diagnostics/etw/504-servicehostfactorycreationstop.md)|情報|ServiceHostFactory が作成を終了します|WebHost| +|[505 \- CreateServiceHostStart](../../../../../docs/framework/wcf/diagnostics/etw/505-createservicehoststart.md)|情報|CreateServiceHost を開始します|WebHost| +|[506 \- CreateServiceHostStop](../../../../../docs/framework/wcf/diagnostics/etw/506-createservicehoststop.md)|情報|CreateServiceHost を終了します|WebHost| +|[507 \- HostedTransportConfigurationManagerConfigInitStart](../../../../../docs/framework/wcf/diagnostics/etw/507-hostedtransportconfigurationmanagerconfiginitstart.md)|情報|HostedTransportConfigurationManager が構成の初期化を開始します|WebHost| +|[508 \- HostedTransportConfigurationManagerConfigInitStop](../../../../../docs/framework/wcf/diagnostics/etw/508-hostedtransportconfigurationmanagerconfiginitstop.md)|情報|HostedTransportConfigurationManager が構成の初期化を終了します|WebHost| +|[509 \- ServiceHostOpenStart](../../../../../docs/framework/wcf/diagnostics/etw/509-servicehostopenstart.md)|情報|HostedTransportConfigurationManager が構成の初期化を終了します|ServiceHost| +|[510 \- ServiceHostOpenStop](../../../../../docs/framework/wcf/diagnostics/etw/510-servicehostopenstop.md)|情報|ServiceHost Open が完了しました。|ServiceHost| +|[513 \- WebHostRequestStart](../../../../../docs/framework/wcf/diagnostics/etw/513-webhostrequeststart.md)|情報|AppDomain '%1' からの仮想パス '%2' で要求を受信しました。|WebHost| +|[514 \- WebHostRequestStop](../../../../../docs/framework/wcf/diagnostics/etw/514-webhostrequeststop.md)|情報|WebHostRequest を停止します。|WebHost| +|[601 \- CBAEntryRead](../../../../../docs/framework/wcf/diagnostics/etw/601-cbaentryread.md)|詳細|ServiceActivation 要素の相対アドレス: '%1'、標準化相対アドレス '%2' を処理しました。|| +|[602 \- CBAMatchFound](../../../../../docs/framework/wcf/diagnostics/etw/602-cbamatchfound.md)|詳細|受信要求が、アドレス '%1' の ServiceActivation 要素と一致します。|| +|[603 \- AspNetRoutingService](../../../../../docs/framework/wcf/diagnostics/etw/603-aspnetroutingservice.md)|詳細|受信要求が、アドレス %1 の Asp.Net ルートで定義された WCF サービスと一致します。|RoutingServices| +|[604 \- AspNetRoute](../../../../../docs/framework/wcf/diagnostics/etw/604-aspnetroute.md)|詳細|serviceType '%2' および serviceHostFactoryType '%3' の新しい Asp.Net ルート '%1' が追加されます。|RoutingServices| +|[605 \- IncrementBusyCount](../../../../../docs/framework/wcf/diagnostics/etw/605-incrementbusycount.md)|詳細|IncrementBusyCount が呼び出されました。 ソース: %1|WebHost| +|[606 \- DecrementBusyCount](../../../../../docs/framework/wcf/diagnostics/etw/606-decrementbusycount.md)|詳細|DecrementBusyCount が呼び出されました。 ソース: %1|WebHost| +|[701 \- ServiceChannelOpenStart](../../../../../docs/framework/wcf/diagnostics/etw/701-servicechannelopenstart.md)|詳細|ServiceChannelOpen を開始しました。|WebHost| +|[702 \- ServiceChannelOpenStop](../../../../../docs/framework/wcf/diagnostics/etw/702-servicechannelopenstop.md)|情報|ServiceChannelOpen が完了しました。|ServiceModel| +|[703 \- ServiceChannelCallStart](../../../../../docs/framework/wcf/diagnostics/etw/703-servicechannelcallstart.md)|情報|ServiceChannelCall を開始しました。|ServiceModel| +|[704 \- ServiceChannelBeginCallStart](../../../../../docs/framework/wcf/diagnostics/etw/704-servicechannelbegincallstart.md)|情報|ServiceChannel の非同期呼び出しを開始しました。|ServiceModel| +|[706 \- HttpSendMessageStart](../../../../../docs/framework/wcf/diagnostics/etw/706-httpsendmessagestart.md)|詳細|HTTP 送信要求を開始します。|HTTP| +|[707 \- HttpSendStop](../../../../../docs/framework/wcf/diagnostics/etw/707-httpsendstop.md)|詳細|HTTP 送信要求を停止します。|HTTP| +|[708 \- HttpMessageReceiveStart](../../../../../docs/framework/wcf/diagnostics/etw/708-httpmessagereceivestart.md)|詳細|HTTP トランスポートからメッセージを受信しました。|HTTP| +|[709 \- DispatchMessageStart](../../../../../docs/framework/wcf/diagnostics/etw/709-dispatchmessagestart.md)|情報|メッセージのディスパッチを開始しました。|ServiceModel| +|[710 \- HttpContextBeforeProcessAuthentication](../../../../../docs/framework/wcf/diagnostics/etw/710-httpcontextbeforeprocessauthentication.md)|詳細|メッセージのディスパッチの認証を開始します|ServiceModel| +|[711 \- DispatchMessageBeforeAuthorization](../../../../../docs/framework/wcf/diagnostics/etw/711-dispatchmessagebeforeauthorization.md)|詳細|メッセージのディスパッチの承認を開始します|ServiceModel| +|[712 \- DispatchMessageStop](../../../../../docs/framework/wcf/diagnostics/etw/712-dispatchmessagestop.md)|情報|メッセージのディスパッチが完了しました|ServiceModel| +|[715 \- ClientChannelOpenStart](../../../../../docs/framework/wcf/diagnostics/etw/715-clientchannelopenstart.md)|情報|ServiceChannel Open を開始します。|ServiceModel| +|[716 \- ClientChannelOpenStop](../../../../../docs/framework/wcf/diagnostics/etw/716-clientchannelopenstop.md)|情報|ServiceChannel Open を停止します。|ServiceModel| +|[717 \- HttpSendStreamedMessageStart](../../../../../docs/framework/wcf/diagnostics/etw/717-httpsendstreamedmessagestart.md)|情報|ストリーム メッセージの HTTP 送信を開始しました。|HTTP| +|[1400 \- ChannelInitializationTimeout](../../../../../docs/framework/wcf/diagnostics/etw/1400-channelinitializationtimeout.md)|Error|1%|ServiceModel| +|[1401 \- CloseTimeout](../../../../../docs/framework/wcf/diagnostics/etw/1401-closetimeout.md)|Error|1%|ServiceModel| +|[1402 \- IdleTimeout](../../../../../docs/framework/wcf/diagnostics/etw/1402-idletimeout.md)|Error|%1 接続プール キー: %2|ServiceModel| +|[1403 \- LeaseTimeout](../../../../../docs/framework/wcf/diagnostics/etw/1403-leasetimeout.md)|情報|%1 接続プール キー: %2|ServiceModel| +|[1405 \- OpenTimeout](../../../../../docs/framework/wcf/diagnostics/etw/1405-opentimeout.md)|Error|%1|ServiceModel| +|[1406 \- ReceiveTimeout](../../../../../docs/framework/wcf/diagnostics/etw/1406-receivetimeout.md)|Error|%1|ServiceModel| +|[1407 \- SendTimeout](../../../../../docs/framework/wcf/diagnostics/etw/1407-sendtimeout.md)|Error|%1|ServiceModel| +|[1409 \- InactivityTimeout](../../../../../docs/framework/wcf/diagnostics/etw/1409-inactivitytimeout.md)|情報|%1|ServiceModel| +|[1416 \- MaxReceivedMessageSizeExceeded](../../../../../docs/framework/wcf/diagnostics/etw/1416-maxreceivedmessagesizeexceeded.md)|Error|%1|クォータ| +|[1417 \- MaxSentMessageSizeExceeded](../../../../../docs/framework/wcf/diagnostics/etw/1417-maxsentmessagesizeexceeded.md)|Error|%1|クォータ| +|[1418 \- MaxOutboundConnectionsPerEndpointExceeded](../../../../../docs/framework/wcf/diagnostics/etw/1418-maxoutboundconnectionsperendpointexceeded.md)|情報|%1|クォータ| +|[1419 \- MaxPendingConnectionsExceeded](../../../../../docs/framework/wcf/diagnostics/etw/1419-maxpendingconnectionsexceeded.md)|情報|%1|クォータ| +|[1420 \- ReaderQuotaExceeded](../../../../../docs/framework/wcf/diagnostics/etw/1420-readerquotaexceeded.md)|Error|%1|クォータ| +|[1422 \- NegotiateTokenAuthenticatorStateCacheExceeded](../../../../../docs/framework/wcf/diagnostics/etw/1422-negotiatetokenauthenticatorstatecacheexceeded.md)|Error|%1|クォータ| +|[1423 \- NegotiateTokenAuthenticatorStateCacheRatio](../../../../../docs/framework/wcf/diagnostics/etw/1423-negotiatetokenauthenticatorstatecacheratio.md)|詳細|トークン認証システムのネゴシエートの状態のキャッシュ比率: %1\/%2|クォータ| +|[1424 \- SecuritySessionRatio](../../../../../docs/framework/wcf/diagnostics/etw/1424-securitysessionratio.md)|詳細|セキュリティ セッションの比率: %1\/%2|クォータ| +|[1430 \- PendingConnectionsRatio](../../../../../docs/framework/wcf/diagnostics/etw/1430-pendingconnectionsratio.md)|詳細|保留中の接続の比率: %1\/%2|クォータ| +|[1431 \- ConcurrentCallsRatio](../../../../../docs/framework/wcf/diagnostics/etw/1431-concurrentcallsratio.md)|詳細|同時セッションの比率: %1\/%2|クォータ| +|[1432 \- ConcurrentSessionsRatio](../../../../../docs/framework/wcf/diagnostics/etw/1432-concurrentsessionsratio.md)|詳細|同時セッションの比率: %1\/%2|クォータ| +|[1433 \- OutboundConnectionsPerEndpointRatio](../../../../../docs/framework/wcf/diagnostics/etw/1433-outboundconnectionsperendpointratio.md)|詳細|エンドポイントごとの送信接続の比率: %1\/%2|クォータ| +|[1433 \- OutboundConnectionsPerEndpointRatio](../../../../../docs/framework/wcf/diagnostics/etw/1433-outboundconnectionsperendpointratio.md)|詳細|エンドポイントごとの送信接続の比率: %1\/%2|クォータ| +|[1436 \- PendingMessagesPerChannelRatio](../../../../../docs/framework/wcf/diagnostics/etw/1436-pendingmessagesperchannelratio.md)|詳細|チャネルごとの保留メッセージの比率: %1\/%2|クォータ| +|[1438 \- ConcurrentInstancesRatio](../../../../../docs/framework/wcf/diagnostics/etw/1438-concurrentinstancesratio.md)|詳細|同時インスタンスの比率: %1\/%2|クォータ| +|[1439 \- PendingAcceptsAtZero](../../../../../docs/framework/wcf/diagnostics/etw/1439-pendingacceptsatzero.md)|情報|保留中の受け入れはありません|クォータ| +|[1441 \- MaxSessionSizeReached](../../../../../docs/framework/wcf/diagnostics/etw/1441-maxsessionsizereached.md)|警告|1%|クォータ| +|[1442 \- ReceiveRetryCountReached](../../../../../docs/framework/wcf/diagnostics/etw/1442-receiveretrycountreached.md)|警告|ID '%1' の MSMQ メッセージが受信再試行回数に達しました|クォータ| +|[1443 \- MaxRetryCyclesExceededMsmq](../../../../../docs/framework/wcf/diagnostics/etw/1443-maxretrycyclesexceededmsmq.md)|Error|ID '%1' の MSMQ メッセージが最大再試行サイクルを超えました|クォータ| +|[1445 \- ReadPoolMiss](../../../../../docs/framework/wcf/diagnostics/etw/1445-readpoolmiss.md)|詳細|新しい '%1' を作成しました|クォータ| +|[1446 \- WritePoolMiss](../../../../../docs/framework/wcf/diagnostics/etw/1446-writepoolmiss.md)|詳細|新しい '%1' を作成しました|クォータ| +|[1451 \- MaxRetryCyclesExceeded](../../../../../docs/framework/wcf/diagnostics/etw/1451-maxretrycyclesexceeded.md)|Error|1%|クォータ| +|[3300 \- ReceiveContextCompleteFailed](../../../../../docs/framework/wcf/diagnostics/etw/3300-receivecontextcompletefailed.md)|警告|%1 を完了できませんでした。|チャネル| +|[3301 \- ReceiveContextAbandonFailed](../../../../../docs/framework/wcf/diagnostics/etw/3301-receivecontextabandonfailed.md)|警告|%1 を破棄できませんでした。|チャネル| +|[3303 \- ReceiveContextAbandonWithException](../../../../../docs/framework/wcf/diagnostics/etw/3303-receivecontextabandonwithexception.md)|警告|受信コンテキストでエラーが発生しました。|ServiceModel| +|[3303 \- ReceiveContextAbandonWithException](../../../../../docs/framework/wcf/diagnostics/etw/3303-receivecontextabandonwithexception.md)|情報|例外 %2 が発生したため、%1 が破棄されました。|チャネル| +|[3305 \- ClientBaseCachedChannelFactoryCount](../../../../../docs/framework/wcf/diagnostics/etw/3305-clientbasecachedchannelfactorycount.md)|情報|キャッシュされているチャネル ファクトリの数は '%1' です。キャッシュできるチャネル ファクトリの最大数は '%2' です。|ServiceModel| +|[3306 \- ClientBaseChannelFactoryAgedOutofCache](../../../../../docs/framework/wcf/diagnostics/etw/3306-clientbasechannelfactoryagedoutofcache.md)|情報|キャッシュが上限の '%1' に達したため、チャネル ファクトリがキャッシュから削除されました。|ServiceModel| +|[3307 \- ClientBaseChannelFactoryCacheHit](../../../../../docs/framework/wcf/diagnostics/etw/3307-clientbasechannelfactorycachehit.md)|情報|キャッシュで見つかった一致するチャネル ファクトリが使用されました。|ServiceModel| +|[3308 \- ClientBaseUsingLocalChannelFactory](../../../../../docs/framework/wcf/diagnostics/etw/3308-clientbaseusinglocalchannelfactory.md)|情報|キャッシュ内のチャネル ファクトリは使用されません \(つまり、インスタンスのキャッシュは無効になっています\)。|ServiceModel| +|[3309 \- QueryCompositionExecuted](../../../../../docs/framework/wcf/diagnostics/etw/3309-querycompositionexecuted.md)|情報|'%1' を使用したクエリの構成が要求 URI: '%2' で実行されました。|ServiceModel| +|[3310 \- DispatchFailed](../../../../../docs/framework/wcf/diagnostics/etw/3310-dispatchfailed.md)|Error|'%1' 操作のディスパッチでエラーが発生しました。|ServiceModel| +|[3311 \- DispatchSuccessful](../../../../../docs/framework/wcf/diagnostics/etw/3311-dispatchsuccessful.md)|情報|'%1' 操作が正常にディスパッチされました。|ServiceModel| +|[3312 \- MessageReadByEncoder](../../../../../docs/framework/wcf/diagnostics/etw/3312-messagereadbyencoder.md)|情報|サイズ '%1' バイトのメッセージがエンコーダーによって読み取られました。|チャネル| +|[3312 \- MessageReadByEncoder](../../../../../docs/framework/wcf/diagnostics/etw/3312-messagereadbyencoder.md)|情報|サイズ '%1' バイトのメッセージがエンコーダーによって書き込まれました。|チャネル| +|[3314 \- SessionIdleTimeout](../../../../../docs/framework/wcf/diagnostics/etw/3314-sessionidletimeout.md)|Error|URI: '%1' へのアイドル チャネルのセッションを中止しています。|ServiceModel| +|[3319 \- SocketAcceptEnqueued](../../../../../docs/framework/wcf/diagnostics/etw/3319-socketacceptenqueued.md)|詳細|接続の受け入れを開始しました。|TCP| +|[3320 \- SocketAccepted](../../../../../docs/framework/wcf/diagnostics/etw/3320-socketaccepted.md)|詳細|ListenerId:%1 が SocketId:%2 を受け入れました。|TCP| +|[3321 \- ConnectionPoolMiss](../../../../../docs/framework/wcf/diagnostics/etw/3321-connectionpoolmiss.md)|詳細|%1 のプールに使用可能な接続がありません。%2 個の接続がビジー状態です。|チャネル| +|[3322 \- DispatchFormatterDeserializeRequestStart](../../../../../docs/framework/wcf/diagnostics/etw/3322-dispatchformatterdeserializerequeststart.md)|詳細|ディスパッチャーが要求メッセージのシリアル化解除を開始しました。|ServiceModel| +|[3323 \- DispatchFormatterDeserializeRequestStop](../../../../../docs/framework/wcf/diagnostics/etw/3323-dispatchformatterdeserializerequeststop.md)|詳細|ディスパッチャーが要求メッセージのシリアル化解除を完了しました。|ServiceModel| +|[3324 \- DispatchFormatterSerializeReplyStart](../../../../../docs/framework/wcf/diagnostics/etw/3324-dispatchformatterserializereplystart.md)|詳細|ディスパッチャーが応答メッセージのシリアル化を開始しました。|ServiceModel| +|[3325 \- DispatchFormatterSerializeReplyStop](../../../../../docs/framework/wcf/diagnostics/etw/3325-dispatchformatterserializereplystop.md)|詳細|ディスパッチャーが応答メッセージのシリアル化を完了しました。|ServiceModel| +|[3326 \- ClientFormatterSerializeRequestStart](../../../../../docs/framework/wcf/diagnostics/etw/3326-clientformatterserializerequeststart.md)|詳細|クライアント要求のシリアル化を開始しました。|ServiceModel| +|[3327 \- ClientFormatterSerializeRequestStop](../../../../../docs/framework/wcf/diagnostics/etw/3327-clientformatterserializerequeststop.md)|詳細|クライアントが要求メッセージのシリアル化を完了しました。|ServiceModel| +|[3328 \- ClientFormatterDeserializeReplyStart](../../../../../docs/framework/wcf/diagnostics/etw/3328-clientformatterdeserializereplystart.md)|詳細|クライアントが応答メッセージのシリアル化解除を開始しました。|ServiceModel| +|[3329 \- ClientFormatterDeserializeReplyStop](../../../../../docs/framework/wcf/diagnostics/etw/3329-clientformatterdeserializereplystop.md)|詳細|クライアントが応答メッセージのシリアル化解除を完了しました。|ServiceModel| +|[3330 \- SecurityNegotiationStart](../../../../../docs/framework/wcf/diagnostics/etw/3330-securitynegotiationstart.md)|詳細|セキュリティ ネゴシエーションを開始しました。|セキュリティ| +|[3331 \- SecurityNegotiationStop](../../../../../docs/framework/wcf/diagnostics/etw/3331-securitynegotiationstop.md)|詳細|セキュリティ ネゴシエーションが完了しました。|セキュリティ| +|[3332 \- SecurityTokenProviderOpened](../../../../../docs/framework/wcf/diagnostics/etw/3332-securitytokenprovideropened.md)|詳細|SecurityTokenProvider のオープンが完了しました。|セキュリティ| +|[3333 \- OutgoingMessageSecured](../../../../../docs/framework/wcf/diagnostics/etw/3333-outgoingmessagesecured.md)|詳細|送信メッセージがセキュリティで保護されました。|セキュリティ| +|[3334 \- IncomingMessageVerified](../../../../../docs/framework/wcf/diagnostics/etw/3334-incomingmessageverified.md)|詳細|受信メッセージが確認されました。|セキュリティ ServiceModel| +|[3335 \- GetServiceInstanceStart](../../../../../docs/framework/wcf/diagnostics/etw/3335-getserviceinstancestart.md)|詳細|サービス インスタンスの取得を開始しました。|ServiceModel| +|[3336 \- GetServiceInstanceStop](../../../../../docs/framework/wcf/diagnostics/etw/3336-getserviceinstancestop.md)|詳細|サービス インスタンスが取得されました。|ServiceModel| +|[3337 \- ChannelReceiveStart](../../../../../docs/framework/wcf/diagnostics/etw/3337-channelreceivestart.md)|詳細|ChannelHandlerId:%1 \- メッセージ受信ループを開始しました。|チャネル| +|[3338 \- ChannelReceiveStop](../../../../../docs/framework/wcf/diagnostics/etw/3338-channelreceivestop.md)|詳細|ChannelHandlerId:%1 \- メッセージ受信ループを停止しました。|チャネル| +|[3339 \- ChannelFactoryCreated](../../../../../docs/framework/wcf/diagnostics/etw/3339-channelfactorycreated.md)|詳細|ChannelFactory が作成されました。|ServiceModel| +|[3340 \- PipeConnectionAcceptStart](../../../../../docs/framework/wcf/diagnostics/etw/3340-pipeconnectionacceptstart.md)|詳細|%1 でパイプ接続の受け入れを開始しました。|チャネル| +|[3341 \- PipeConnectionAcceptStop](../../../../../docs/framework/wcf/diagnostics/etw/3341-pipeconnectionacceptstop.md)|詳細|パイプ接続を受け入れました。|チャネル| +|[3342 \- EstablishConnectionStart](../../../../../docs/framework/wcf/diagnostics/etw/3342-establishconnectionstart.md)|詳細|%1 の接続の確立を開始しました。|チャネル| +|[3343 \- EstablishConnectionStop](../../../../../docs/framework/wcf/diagnostics/etw/3343-establishconnectionstop.md)|詳細|接続が確立されました。|チャネル| +|[3345 \- SessionPreambleUnderstood](../../../../../docs/framework/wcf/diagnostics/etw/3345-sessionpreambleunderstood.md)|詳細|'%1' のセッション プリアンブルが認識されました。|チャネル| +|[3346 \- ConnectionReaderSendFault](../../../../../docs/framework/wcf/diagnostics/etw/3346-connectionreadersendfault.md)|Error|接続リーダーがエラー '%1' を送信しています。|チャネル| +|[3347 \- SocketAcceptClosed](../../../../../docs/framework/wcf/diagnostics/etw/3347-socketacceptclosed.md)|詳細|ソケットの受け入れを終了しました。|TCP| +|[3348 \- ServiceHostFaulted](../../../../../docs/framework/wcf/diagnostics/etw/3348-servicehostfaulted.md)|Critical|サービス ホストが途中終了しました。|TCP| +|[3349 \- ListenerOpenStart](../../../../../docs/framework/wcf/diagnostics/etw/3349-listeneropenstart.md)|詳細|'%1' のリスナーを開いています。|チャネル| +|[3350 \- ListenerOpenStop](../../../../../docs/framework/wcf/diagnostics/etw/3350-listeneropenstop.md)|詳細|リスナーのオープンが完了しました。|チャネル| +|[3351 \- ServerMaxPooledConnectionsQuotaReached](../../../../../docs/framework/wcf/diagnostics/etw/3351-servermaxpooledconnectionsquotareached.md)|詳細|サーバーのプールされた接続の最大クォータに達しました。|クォータ| +|[3352 \- TcpConnectionTimedOut](../../../../../docs/framework/wcf/diagnostics/etw/3352-tcpconnectiontimedout.md)|Error|リモート アドレス %2 への SocketId:%1 がタイムアウトしました。|TCP| +|[3353 \- TcpConnectionResetError](../../../../../docs/framework/wcf/diagnostics/etw/3353-tcpconnectionreseterror.md)|警告|リモート アドレス %2 への SocketId:%1 で接続リセット エラーが発生しました。|TCP| +|[3354 \- ServiceSecurityNegotiationCompleted](../../../../../docs/framework/wcf/diagnostics/etw/3354-servicesecuritynegotiationcompleted.md)|詳細|サービス セキュリティ ネゴシエーションが完了しました。|セキュリティ| +|[3355 \- SecurityNegotiationProcessingFailure](../../../../../docs/framework/wcf/diagnostics/etw/3355-securitynegotiationprocessingfailure.md)|Error|セキュリティ ネゴシエーション処理が失敗しました。|セキュリティ| +|[3356 \- SecurityIdentityVerificationSuccess](../../../../../docs/framework/wcf/diagnostics/etw/3356-securityidentityverificationsuccess.md)|詳細|セキュリティ検証が成功しました。|セキュリティ| +|[3357 \- SecurityIdentityVerificationFailure](../../../../../docs/framework/wcf/diagnostics/etw/3357-securityidentityverificationfailure.md)|Error|セキュリティ検証に失敗しました。|セキュリティ| +|[3358 \- PortSharingDuplicatedSocket](../../../../../docs/framework/wcf/diagnostics/etw/3358-portsharingduplicatedsocket.md)|詳細|%1 のソケットが複製されました。|ActivationServices| +|[3359 \- SecurityImpersonationSuccess](../../../../../docs/framework/wcf/diagnostics/etw/3359-securityimpersonationsuccess.md)|詳細|セキュリティの偽装に成功しました。|セキュリティ| +|[3360 \- SecurityImpersonationFailure](../../../../../docs/framework/wcf/diagnostics/etw/3360-securityimpersonationfailure.md)|警告|セキュリティの偽装に失敗しました。|セキュリティ| +|[3361 \- HttpChannelRequestAborted](../../../../../docs/framework/wcf/diagnostics/etw/3361-httpchannelrequestaborted.md)|警告|HTTP チャネルの要求が中止されました。|HTTP| +|[3362 \- HttpChannelResponseAborted](../../../../../docs/framework/wcf/diagnostics/etw/3362-httpchannelresponseaborted.md)|警告|HTTP チャネルの応答が中止されました。|HTTP| +|[3363 \- HttpAuthFailed](../../../../../docs/framework/wcf/diagnostics/etw/3363-httpauthfailed.md)|警告|HTTP 認証に失敗しました。|HTTP| +|[3364 \- SharedListenerProxyRegisterStart](../../../../../docs/framework/wcf/diagnostics/etw/3364-sharedlistenerproxyregisterstart.md)|詳細|URI '%1' の SharedListenerProxy の登録を開始しました。|ActivationServices| +|[3365 \- SharedListenerProxyRegisterStop](../../../../../docs/framework/wcf/diagnostics/etw/3365-sharedlistenerproxyregisterstop.md)|詳細|SharedListenerProxy の登録を停止します。|ActivationServices| +|[3366 \- SharedListenerProxyRegisterFailed](../../../../../docs/framework/wcf/diagnostics/etw/3366-sharedlistenerproxyregisterfailed.md)|Error|SharedListenerProxy の登録は状態 '%1' で失敗しました。|ActivationServices| +|[3367 \- ConnectionPoolPreambleFailed](../../../../../docs/framework/wcf/diagnostics/etw/3367-connectionpoolpreamblefailed.md)|Error|ConnectionPoolPreambleFailed。|チャネル| +|[3368 \- SslOnInitiateUpgrade](../../../../../docs/framework/wcf/diagnostics/etw/3368-ssloninitiateupgrade.md)|詳細|SslOnAcceptUpgradeStart|セキュリティ| +|[3369 \- SslOnAcceptUpgrade](../../../../../docs/framework/wcf/diagnostics/etw/3369-sslonacceptupgrade.md)|詳細|SslOnAcceptUpgradeStop|セキュリティ| +|[3370 \- BinaryMessageEncodingStart](../../../../../docs/framework/wcf/diagnostics/etw/3370-binarymessageencodingstart.md)|詳細|BinaryMessageEncoder がメッセージのエンコードを開始しました。|チャネル| +|[3371 \- MtomMessageEncodingStart](../../../../../docs/framework/wcf/diagnostics/etw/3371-mtommessageencodingstart.md)|詳細|MtomMessageEncoder がメッセージのエンコードを開始しました。|チャネル| +|[3372 \- TextMessageEncodingStart](../../../../../docs/framework/wcf/diagnostics/etw/3372-textmessageencodingstart.md)|詳細|TextMessageEncoder がメッセージのエンコードを開始しました。|チャネル| +|[3373 \- BinaryMessageDecodingStart](../../../../../docs/framework/wcf/diagnostics/etw/3373-binarymessagedecodingstart.md)|詳細|BinaryMessageEncoder がメッセージのデコードを開始しました。|チャネル| +|[3374 \- MtomMessageDecodingStart](../../../../../docs/framework/wcf/diagnostics/etw/3374-mtommessagedecodingstart.md)|詳細|MtomMessageEncoder がメッセージのデコードを開始しました。|チャネル| +|[3375 \- TextMessageDecodingStart](../../../../../docs/framework/wcf/diagnostics/etw/3375-textmessagedecodingstart.md)|詳細|TextMessageEncoder がメッセージのデコードを開始しました。|チャネル| +|[3376 \- HttpResponseReceiveStart](../../../../../docs/framework/wcf/diagnostics/etw/3376-httpresponsereceivestart.md)|情報|HTTP トランスポートがメッセージの受信を開始しました。|HTTP| +|[3377 \- SocketReadStop](../../../../../docs/framework/wcf/diagnostics/etw/3377-socketreadstop.md)|詳細|SocketId:%1 が '%3' から '%2' バイトを読み取りました。|TCP| +|[3378 \- SocketAsyncReadStop](../../../../../docs/framework/wcf/diagnostics/etw/3378-socketasyncreadstop.md)|詳細|SocketId:%1 が '%3' から '%2' バイトを読み取りました。|TCP| +|[3379 \- SocketWriteStart](../../../../../docs/framework/wcf/diagnostics/etw/3379-socketwritestart.md)|詳細|SocketId:%1 が '%3' に '%2' バイトを書き込んでいます。|TCP| +|[3380 \- SocketAsyncWriteStart](../../../../../docs/framework/wcf/diagnostics/etw/3380-socketasyncwritestart.md)|詳細|SocketId:%1 が '%3' に '%2' バイトを書き込んでいます。|TCP| +|[3381 \- SequenceAcknowledgementSent](../../../../../docs/framework/wcf/diagnostics/etw/3381-sequenceacknowledgementsent.md)|詳細|SessionId:%1 の受信確認が送信されました。|チャネル| +|[3382 \- ClientReliableSessionReconnect](../../../../../docs/framework/wcf/diagnostics/etw/3382-clientreliablesessionreconnect.md)|情報|SessionId:%1 を再接続します。|チャネル| +|[3383 \- ReliableSessionChannelFaulted](../../../../../docs/framework/wcf/diagnostics/etw/3383-reliablesessionchannelfaulted.md)|情報|SessionId:%1 でエラーが発生しました。|チャネル| +|[3384 \- WindowsStreamSecurityOnInitiateUpgrade](../../../../../docs/framework/wcf/diagnostics/etw/3384-windowsstreamsecurityoninitiateupgrade.md)|詳細|WindowsStreamSecurity がセキュリティ アップグレードを開始しています。|セキュリティ| +|[3385 \- WindowsStreamSecurityOnAcceptUpgrade](../../../../../docs/framework/wcf/diagnostics/etw/3385-windowsstreamsecurityonacceptupgrade.md)|詳細|Windows ストリーミング セキュリティがアップグレードを受け入れています。|セキュリティ| +|[3386 \- SocketConnectionAbort](../../../../../docs/framework/wcf/diagnostics/etw/3386-socketconnectionabort.md)|警告|SocketId:%1 を中止しています。|TCP| +|[3388 \- HttpGetContextStart](../../../../../docs/framework/wcf/diagnostics/etw/3388-httpgetcontextstart.md)|詳細|HttpGetContext を開始します。|HTTP| +|[3389 \- ClientSendPreambleStart](../../../../../docs/framework/wcf/diagnostics/etw/3389-clientsendpreamblestart.md)|詳細|クライアントがプリアンブルの送信を開始します。|チャネル| +|[3390 \- ClientSendPreambleStop](../../../../../docs/framework/wcf/diagnostics/etw/3390-clientsendpreamblestop.md)|詳細|クライアントがプリアンブルの送信を停止します。|チャネル| +|[3391 \- HttpMessageReceiveFailed](../../../../../docs/framework/wcf/diagnostics/etw/3391-httpmessagereceivefailed.md)|警告|HTTP メッセージの受信に失敗しました。|HTTP| +|[3392 \- TransactionScopeCreate](../../../../../docs/framework/wcf/diagnostics/etw/3392-transactionscopecreate.md)|情報|LocalIdentifier:'%1' および DistributedIdentifier:'%2' の TransactionScope を作成しています。|ServiceModel| +|[3393 \- StreamedMessageReadByEncoder](../../../../../docs/framework/wcf/diagnostics/etw/3393-streamedmessagereadbyencoder.md)|情報|エンコーダーによってストリーム メッセージが読み取られました。|チャネル| +|[3394 \- StreamedMessageWrittenByEncoder](../../../../../docs/framework/wcf/diagnostics/etw/3394-streamedmessagewrittenbyencoder.md)|情報|エンコーダーによってストリーム メッセージが書き込まれました。|チャネル| +|[3395 \- MessageWrittenAsynchronouslyByEncoder](../../../../../docs/framework/wcf/diagnostics/etw/3395-messagewrittenasynchronouslybyencoder.md)|情報|エンコーダーによってメッセージが非同期で書き込まれました。|チャネル| +|[3396 \- BufferedAsyncWriteStart](../../../../../docs/framework/wcf/diagnostics/etw/3396-bufferedasyncwritestart.md)|情報|BufferId:%1 から基になるストリームへの '%2' バイトの書き込みが完了しました。|チャネル| +|[3397 \- BufferedAsyncWriteStop](../../../../../docs/framework/wcf/diagnostics/etw/3397-bufferedasyncwritestop.md)|情報|エンコーダーによってメッセージが非同期で書き込まれました。|チャネル| +|[3398 \- PipeSharedMemoryCreated](../../../../../docs/framework/wcf/diagnostics/etw/3398-pipesharedmemorycreated.md)|詳細|パイプ共有メモリが '%1' に作成されました。|チャネル| +|[3399 \- NamedPipeCreated](../../../../../docs/framework/wcf/diagnostics/etw/3399-namedpipecreated.md)|詳細|NamedPipe '%1' が作成されました。|チャネル| +|[3401 \- SignatureVerificationStart](../../../../../docs/framework/wcf/diagnostics/etw/3401-signatureverificationstart.md)|詳細|署名の検証を開始しました。|セキュリティ| +|[3402 \- SignatureVerificationSuccess](../../../../../docs/framework/wcf/diagnostics/etw/3402-signatureverificationsuccess.md)|詳細|署名の検証に成功しました|セキュリティ| +|[3403 \- WrappedKeyDecryptionStart](../../../../../docs/framework/wcf/diagnostics/etw/3403-wrappedkeydecryptionstart.md)|詳細|ラップされたキーの解読を開始しました。|セキュリティ| +|[3404 \- WrappedKeyDecryptionSuccess](../../../../../docs/framework/wcf/diagnostics/etw/3404-wrappedkeydecryptionsuccess.md)|詳細|ラップされたキーの解読に成功しました。|セキュリティ| +|[3405 \- EncryptedDataProcessingStart](../../../../../docs/framework/wcf/diagnostics/etw/3405-encrypteddataprocessingstart.md)|詳細|暗号化されたデータの処理を開始しました。|セキュリティ| +|[3406 \- EncryptedDataProcessingSuccess](../../../../../docs/framework/wcf/diagnostics/etw/3406-encrypteddataprocessingsuccess.md)|詳細|暗号化されたデータの処理に成功しました。|セキュリティ| +|[3407 \- HttpPipelineProcessInboundRequestStart](../../../../../docs/framework/wcf/diagnostics/etw/3407-httppipelineprocessinboundrequeststart.md)|詳細|http メッセージ ハンドラーは、受信要求の処理を開始しました。|HTTP| +|[3408 \- HttpPipelineBeginProcessInboundRequestStart](../../../../../docs/framework/wcf/diagnostics/etw/3408-httppipelinebeginprocessinboundrequeststart.md)|詳細|http メッセージ ハンドラーは、受信要求の非同期処理を開始しました。|HTTP| +|[3409 \- HttpPipelineProcessInboundRequestStop](../../../../../docs/framework/wcf/diagnostics/etw/3409-httppipelineprocessinboundrequeststop.md)|詳細|http メッセージ ハンドラーは、受信要求の処理を完了しました。|HTTP| +|[3410 \- HttpPipelineFaulted](../../../../../docs/framework/wcf/diagnostics/etw/3410-httppipelinefaulted.md)|警告|http メッセージ ハンドラーに障害があります。|HTTP| +|[3411 \- HttpPipelineTimeoutException](../../../../../docs/framework/wcf/diagnostics/etw/3411-httppipelinetimeoutexception.md)|Error|WebSocket の接続がタイムアウトしました。|HTTP| +|[3412 \- HttpPipelineProcessResponseStart](../../../../../docs/framework/wcf/diagnostics/etw/3412-httppipelineprocessresponsestart.md)|詳細|http メッセージ ハンドラーは、応答の処理を開始しました。|HTTP| +|[3413 \- HttpPipelineBeginProcessResponseStart](../../../../../docs/framework/wcf/diagnostics/etw/3413-httppipelinebeginprocessresponsestart.md)|詳細|http メッセージ ハンドラーは、応答の非同期処理を開始しました。|HTTP| +|[3414 \- HttpPipelineProcessResponseStop](../../../../../docs/framework/wcf/diagnostics/etw/3414-httppipelineprocessresponsestop.md)|詳細|http メッセージ ハンドラーは、応答の処理を完了しました。|HTTP| +|[3415 \- WebSocketConnectionRequestSendStart](../../../../../docs/framework/wcf/diagnostics/etw/3415-websocketconnectionrequestsendstart.md)|詳細|'%1' への WebSocket 接続要求の送信を開始します。|HTTP| +|[3416 \- WebSocketConnectionRequestSendStop](../../../../../docs/framework/wcf/diagnostics/etw/3416-websocketconnectionrequestsendstop.md)|詳細|WebSocketId:%1 の接続要求を送信しました。|HTTP| +|[3417 \- WebSocketConnectionAcceptStart](../../../../../docs/framework/wcf/diagnostics/etw/3417-websocketconnectionacceptstart.md)|詳細|WebSocket 接続の受け入れを開始します。|HTTP| +|[3418 \- WebSocketConnectionAccepted](../../../../../docs/framework/wcf/diagnostics/etw/3418-websocketconnectionaccepted.md)|詳細|WebSocketId:%1 の接続を受け入れました。|HTTP| +|[3419 \- WebSocketConnectionDeclined](../../../../../docs/framework/wcf/diagnostics/etw/3419-websocketconnectiondeclined.md)|Error|WebSocket 接続が状態コード '%1' で拒否されました|HTTP| +|[3420 \- WebSocketConnectionFailed](../../../../../docs/framework/wcf/diagnostics/etw/3420-websocketconnectionfailed.md)|Error|WebSocket 接続要求が失敗しました: '%1'|HTTP| +|[3421 \- WebSocketConnectionAborted](../../../../../docs/framework/wcf/diagnostics/etw/3421-websocketconnectionaborted.md)|Error|WebSocketId:%1 の接続が中止されました。|HTTP| +|[3422 \- WebSocketAsyncWriteStart](../../../../../docs/framework/wcf/diagnostics/etw/3422-websocketasyncwritestart.md)|詳細|WebSocketId:%1 が '%3' に '%2' バイトを書き込んでいます。|HTTP| +|[3423 \- WebSocketAsyncWriteStop](../../../../../docs/framework/wcf/diagnostics/etw/3423-websocketasyncwritestop.md)|詳細|WebSocketId:%1 が非同期書き込みを停止します。|HTTP| +|[3424 \- WebSocketAsyncReadStart](../../../../../docs/framework/wcf/diagnostics/etw/3424-websocketasyncreadstart.md)|詳細|WebSocketId:%1 が読み取りを開始します。|HTTP| +|[3425 \- WebSocketAsyncReadStop](../../../../../docs/framework/wcf/diagnostics/etw/3425-websocketasyncreadstop.md)|詳細|WebSocketId:%1 が '%3' から '%2' バイトを読み取りました。|HTTP| +|[3426 \- WebSocketCloseSent](../../../../../docs/framework/wcf/diagnostics/etw/3426-websocketclosesent.md)|詳細|WebSocketId:%1 が、終了ステータス '%3' の終了メッセージを '%2' に送信しています。|HTTP| +|[3427 \- WebSocketCloseOutputSent](../../../../../docs/framework/wcf/diagnostics/etw/3427-websocketcloseoutputsent.md)|詳細|WebSocketId:%1 が、終了ステータス '%3' の終了出力メッセージを '%2' に送信しています。|HTTP| +|[3428 \- WebSocketConnectionClosed](../../../../../docs/framework/wcf/diagnostics/etw/3428-websocketconnectionclosed.md)|詳細|WebSocketId:%1 の接続を終了しました。|HTTP| +|[3429 \- WebSocketCloseStatusReceived](../../../../../docs/framework/wcf/diagnostics/etw/3429-websocketclosestatusreceived.md)|詳細|WebSocketId:%1 が、状態 '%2' の接続終了メッセージを受信しました。|HTTP| +|[3430 \- WebSocketUseVersionFromClientWebSocketFactory](../../../../../docs/framework/wcf/diagnostics/etw/3430-websocketuseversionfromclientwebsocketfactory.md)|詳細|型 '%1' のクライアント WebSocket ファクトリから WebSocketVersion を使用しています。|HTTP| +|[3431 \- WebSocketCreateClientWebSocketWithFactory](../../../../../docs/framework/wcf/diagnostics/etw/3431-websocketcreateclientwebsocketwithfactory.md)|詳細|型 '%1' のファクトリでクライアント WebSocket を作成しています。|HTTP| +|[3553 \- XamlServicesLoadStart](../../../../../docs/framework/wcf/diagnostics/etw/3553-xamlservicesloadstart.md)|情報|XamlServicesLoad が開始します|WebHost| +|[3554 \- XamlServicesLoadStop](../../../../../docs/framework/wcf/diagnostics/etw/3554-xamlservicesloadstop.md)|情報|XamlServicesLoad が停止します|WebHost| +|[3555 \- CreateWorkflowServiceHostStart](../../../../../docs/framework/wcf/diagnostics/etw/3555-createworkflowservicehoststart.md)|情報|CreateWorkflowServiceHost が開始します|WebHost| +|[3556 \- CreateWorkflowServiceHostStop](../../../../../docs/framework/wcf/diagnostics/etw/3556-createworkflowservicehoststop.md)|情報|CreateWorkflowServiceHost が停止します|WebHost| +|[3558 \- ServiceActivationStart](../../../../../docs/framework/wcf/diagnostics/etw/3558-serviceactivationstart.md)|情報|サービスのアクティブ化を開始します|WebHost| +|[3559 \- ServiceActivationStop](../../../../../docs/framework/wcf/diagnostics/etw/3559-serviceactivationstop.md)|情報|サービスのアクティブ化を停止します|WebHost| +|[3560 \- ServiceActivationAvailableMemory](../../../../../docs/framework/wcf/diagnostics/etw/3560-serviceactivationavailablememory.md)|詳細|使用可能なメモリ \(バイト\): %1|クォータ| +|[3800 \- RoutingServiceClosingClient](../../../../../docs/framework/wcf/diagnostics/etw/3800-routingserviceclosingclient.md)|情報|ルーティング サービスがクライアント '%1' を終了しています。|RoutingServices| +|[3800 \- RoutingServiceClosingClient](../../../../../docs/framework/wcf/diagnostics/etw/3800-routingserviceclosingclient.md)|警告|ルーティング サービスのクライアント '%1' が途中終了しました。|RoutingServices| +|[3802 \- RoutingServiceCompletingOneWay](../../../../../docs/framework/wcf/diagnostics/etw/3802-routingservicecompletingoneway.md)|情報|ルーティング サービスの一方向メッセージを完了しています。|RoutingServices| +|[3803 \- RoutingServiceProcessingFailure](../../../../../docs/framework/wcf/diagnostics/etw/3803-routingserviceprocessingfailure.md)|Error|アドレス '%1' のエンドポイントでメッセージを処理しているときにルーティング サービスでエラーが発生しました。|RoutingServices| +|[3804 \- RoutingServiceCreatingClientForEndpoint](../../../../../docs/framework/wcf/diagnostics/etw/3804-routingservicecreatingclientforendpoint.md)|情報|ルーティング サービスが、エンドポイント: '%1' のクライアントを作成しています。|RoutingServices| +|[3805 \- RoutingServiceDisplayConfig](../../../../../docs/framework/wcf/diagnostics/etw/3805-routingservicedisplayconfig.md)|詳細|ルーティング サービスは、RouteOnHeadersOnly: %1、SoapProcessingEnabled: %2、EnsureOrderedDispatch: %3 に構成されています。|RoutingServices| +|[3807 \- RoutingServiceCompletingTwoWay](../../../../../docs/framework/wcf/diagnostics/etw/3807-routingservicecompletingtwoway.md)|情報|ルーティング サービスの要求応答メッセージを完了しています。|RoutingServices| +|[3809 \- RoutingServiceMessageRoutedToEndpoints](../../../../../docs/framework/wcf/diagnostics/etw/3809-routingservicemessageroutedtoendpoints.md)|詳細|ルーティング サービスにより、ID: '%1' のメッセージが %2 エンドポイント リストにルーティングされました。|RoutingServices| +|[3810 \- RoutingServiceConfigurationApplied](../../../../../docs/framework/wcf/diagnostics/etw/3810-routingserviceconfigurationapplied.md)|情報|新しい RoutingConfiguration がルーティング サービスに適用されました。|RoutingServices| +|[3815 \- RoutingServiceProcessingMessage](../../../../../docs/framework/wcf/diagnostics/etw/3815-routingserviceprocessingmessage.md)|情報|ルーティング サービスが、トランザクション: %4 で受信された ID: '%1'、アクション: '%2'、着信 URL: '%3' のメッセージを処理しています。|RoutingServices| +|[3816 \- RoutingServiceTransmittingMessage](../../../../../docs/framework/wcf/diagnostics/etw/3816-routingservicetransmittingmessage.md)|情報|ルーティング サービスが、ID: '%1' \[operation %2\] のメッセージを '%3' に転送しています。|RoutingServices| +|[3817 \- RoutingServiceCommittingTransaction](../../../../../docs/framework/wcf/diagnostics/etw/3817-routingservicecommittingtransaction.md)|情報|ルーティング サービスが、ID: '%1' のトランザクションをコミットしています。|RoutingServices| +|[3818 \- RoutingServiceDuplexCallbackException](../../../../../docs/framework/wcf/diagnostics/etw/3818-routingserviceduplexcallbackexception.md)|Error|ルーティング サービスのコンポーネント %1 で二重コールバックの例外が発生しました。|RoutingServices| +|[3819 \- RoutingServiceMovedToBackup](../../../../../docs/framework/wcf/diagnostics/etw/3819-routingservicemovedtobackup.md)|情報|ID: '%1' \[operation %2\] のルーティング サービス メッセージがバックアップ エンドポイント '%3' に移動されました。|RoutingServices| +|[3820 \- RoutingServiceCreatingTransaction](../../../../../docs/framework/wcf/diagnostics/etw/3820-routingservicecreatingtransaction.md)|情報|ルーティング サービスが、メッセージを処理するために ID '%1' の新しいトランザクションを作成しました。|RoutingServices| +|[3821 \- RoutingServiceCloseFailed](../../../../../docs/framework/wcf/diagnostics/etw/3821-routingserviceclosefailed.md)|警告|発信クライアント '%1' を終了しているときにルーティング サービスでエラーが発生しました。|RoutingServices| +|[3822 \- RoutingServiceSendingResponse](../../../../../docs/framework/wcf/diagnostics/etw/3822-routingservicesendingresponse.md)|情報|ルーティング サービスが、Action '%1' を含む応答メッセージを返送しています。|RoutingServices| +|[3823 \- RoutingServiceSendingFaultResponse](../../../../../docs/framework/wcf/diagnostics/etw/3823-routingservicesendingfaultresponse.md)|警告|ルーティング サービスが、Action '%1' を含むエラー応答メッセージを返送しています。|RoutingServices| +|[3824 \- RoutingServiceCompletingReceiveContext](../../../../../docs/framework/wcf/diagnostics/etw/3824-routingservicecompletingreceivecontext.md)|詳細|ルーティング サービスが、ID: '%1' のメッセージに対して ReceiveContext.Complete を呼び出しています。|RoutingServices| +|[3825 \- RoutingServiceAbandoningReceiveContext](../../../../../docs/framework/wcf/diagnostics/etw/3825-routingserviceabandoningreceivecontext.md)|警告|ルーティング サービスが、ID: '%1' のメッセージに対して ReceiveContext.Abandon を呼び出しています。|RoutingServices| +|[3826 \- RoutingServiceUsingExistingTransaction](../../../../../docs/framework/wcf/diagnostics/etw/3826-routingserviceusingexistingtransaction.md)|詳細|ルーティング サービスは、既存のトランザクション '%1' を使用してメッセージを送信します。|RoutingServices| +|[3827 \- RoutingServiceTransmitFailed](../../../../../docs/framework/wcf/diagnostics/etw/3827-routingservicetransmitfailed.md)|警告|'%1' への送信中にルーティング サービスでエラーが発生しました。|RoutingServices| +|[3828 \- RoutingServiceFilterTableMatchStart](../../../../../docs/framework/wcf/diagnostics/etw/3828-routingservicefiltertablematchstart.md)|情報|ルーティング サービス MessageFilterTable の照合が開始します。|RoutingServices| +|[3829 \- RoutingServiceFilterTableMatchStop](../../../../../docs/framework/wcf/diagnostics/etw/3829-routingservicefiltertablematchstop.md)|情報|ルーティング サービス MessageFilterTable の照合が停止します。|RoutingServices| +|[3830 \- RoutingServiceAbortingChannel](../../../../../docs/framework/wcf/diagnostics/etw/3830-routingserviceabortingchannel.md)|詳細|ルーティング サービスがチャネル '%1' で中止を呼び出しています。|RoutingServices| +|[3831 \- RoutingServiceHandledException](../../../../../docs/framework/wcf/diagnostics/etw/3831-routingservicehandledexception.md)|詳細|ルーティング サービスが例外を処理しました。|RoutingServices| +|[3832 \- RoutingServiceTransmitSucceeded](../../../../../docs/framework/wcf/diagnostics/etw/3832-routingservicetransmitsucceeded.md)|情報|ルーティング サービスが、ID: '%1 \[operation %2\] のメッセージを '%3' に正常に送信しました。|RoutingServices| +|[4001 \- TransportListenerSessionsReceived](../../../../../docs/framework/wcf/diagnostics/etw/4001-transportlistenersessionsreceived.md)|詳細|'%1' でトランスポート リスナー セッションを受信しました|ActivationServices| +|[4002 \- FailFastException](../../../../../docs/framework/wcf/diagnostics/etw/4002-failfastexception.md)|Critical|FailFastException。|ActivationServices| +|[4003 \- ServiceStartPipeError](../../../../../docs/framework/wcf/diagnostics/etw/4003-servicestartpipeerror.md)|Error|サービス開始パイプ エラー。|ActivationServices| +|[4008 \- DispatchSessionStart](../../../../../docs/framework/wcf/diagnostics/etw/4008-dispatchsessionstart.md)|詳細|セッション ディスパッチを開始しました。|ActivationServices| +|[4008 \- DispatchSessionStart](../../../../../docs/framework/wcf/diagnostics/etw/4008-dispatchsessionstart.md)|警告|'%1' のセッション ディスパッチに失敗しました。保留セッション キューがいっぱいです。保留中の項目が '%2' 個あります。|ActivationServices| +|[4011 \- MessageQueueRegisterStart](../../../../../docs/framework/wcf/diagnostics/etw/4011-messagequeueregisterstart.md)|詳細|メッセージ キューの登録を開始します。|ActivationServices| +|[4012 \- MessageQueueRegisterAbort](../../../../../docs/framework/wcf/diagnostics/etw/4012-messagequeueregisterabort.md)|Error|URI:'%2' のメッセージ キューの登録が状態:'%1' で中止されました。|ActivationServices| +|[4013 \- MessageQueueUnregisterSucceeded](../../../../../docs/framework/wcf/diagnostics/etw/4013-messagequeueunregistersucceeded.md)|詳細|URI:'%1' のメッセージ キューの登録解除に成功しました。|ActivationServices| +|[4014 \- MessageQueueRegisterFailed](../../../../../docs/framework/wcf/diagnostics/etw/4014-messagequeueregisterfailed.md)|Error|URI:'%1' のメッセージ キューの登録が状態:'%2' で失敗しました。|ActivationServices| +|[4015 \- MessageQueueRegisterCompleted](../../../../../docs/framework/wcf/diagnostics/etw/4015-messagequeueregistercompleted.md)|情報|URI '%1' のメッセージ キューの登録が完了しました。|ActivationServices| +|[4016 \- MessageQueueDuplicatedSocketError](../../../../../docs/framework/wcf/diagnostics/etw/4016-messagequeueduplicatedsocketerror.md)|Error|メッセージ キューがソケットの複製に失敗しました。|ActivationServices| +|[4019 \- MessageQueueDuplicatedSocketComplete](../../../../../docs/framework/wcf/diagnostics/etw/4019-messagequeueduplicatedsocketcomplete.md)|詳細|MessageQueueDuplicatedSocketComplete|ActivationServices| +|[4020 \- TcpTransportListenerListeningStart](../../../../../docs/framework/wcf/diagnostics/etw/4020-tcptransportlistenerlisteningstart.md)|詳細|TCP トランスポート リスナーが URI: '%1' でリッスンを開始しています。|ActivationServices| +|[4021 \- TcpTransportListenerListeningStop](../../../../../docs/framework/wcf/diagnostics/etw/4021-tcptransportlistenerlisteningstop.md)|詳細|TCP トランスポート リスナーがリッスンしています。|ActivationServices| +|[4022 \- WebhostUnregisterProtocolFailed](../../../../../docs/framework/wcf/diagnostics/etw/4022-webhostunregisterprotocolfailed.md)|Error|エラー コード:%1|ActivationServices| +|[4023 \- WasCloseAllListenerChannelInstancesCompleted](../../../../../docs/framework/wcf/diagnostics/etw/4023-wasclosealllistenerchannelinstancescompleted.md)|情報|WAS がすべてのリスナー チャネル インスタンスのクローズを完了しました。|ActivationServices| +|[4024 \- WasCloseAllListenerChannelInstancesFailed](../../../../../docs/framework/wcf/diagnostics/etw/4024-wasclosealllistenerchannelinstancesfailed.md)|Error|エラー コード:%1|ActivationServices| +|[4025 \- OpenListenerChannelInstanceFailed](../../../../../docs/framework/wcf/diagnostics/etw/4025-openlistenerchannelinstancefailed.md)|Error|エラー コード:%1|ActivationServices| +|[4026 \- WasConnected](../../../../../docs/framework/wcf/diagnostics/etw/4026-wasconnected.md)|詳細|WAS が接続されました。|ActivationServices| +|[4027 \- WasDisconnected](../../../../../docs/framework/wcf/diagnostics/etw/4027-wasdisconnected.md)|詳細|WAS の接続が解除されました。|ActivationServices| +|[4028 \- PipeTransportListenerListeningStart](../../../../../docs/framework/wcf/diagnostics/etw/4028-pipetransportlistenerlisteningstart.md)|詳細|パイプ トランスポート リスナーが URI:%1 でリッスンを開始します。|ActivationServices| +|[4029 \- PipeTransportListenerListeningStop](../../../../../docs/framework/wcf/diagnostics/etw/4029-pipetransportlistenerlisteningstop.md)|詳細|パイプ トランスポート リスナーがリッスンを停止します。|ActivationServices| +|[4030 \- DispatchSessionSuccess](../../../../../docs/framework/wcf/diagnostics/etw/4030-dispatchsessionsuccess.md)|情報|セッション ディスパッチに成功しました。|ActivationServices| +|[4031 \- DispatchSessionFailed](../../../../../docs/framework/wcf/diagnostics/etw/4031-dispatchsessionfailed.md)|Error|セッション ディスパッチに失敗しました。|ActivationServices| +|[4032 \- WasConnectionTimedout](../../../../../docs/framework/wcf/diagnostics/etw/4032-wasconnectiontimedout.md)|Critical|WAS の接続がタイムアウトしました。|ActivationServices| +|[4033 \- RoutingTableLookupStart](../../../../../docs/framework/wcf/diagnostics/etw/4033-routingtablelookupstart.md)|詳細|ルーティング テーブルの参照を開始しました。|ActivationServices| +|[4034 \- RoutingTableLookupStop](../../../../../docs/framework/wcf/diagnostics/etw/4034-routingtablelookupstop.md)|詳細|ルーティング テーブルの参照が完了しました。|ActivationServices| +|[4035 \- PendingSessionQueueRatio](../../../../../docs/framework/wcf/diagnostics/etw/4035-pendingsessionqueueratio.md)|詳細|保留セッション キューの比率: %1\/%2|クォータ| +|[4600 \- MessageLogEventSizeExceeded](../../../../../docs/framework/wcf/diagnostics/etw/4600-messagelogeventsizeexceeded.md)|警告|メッセージが ETW イベントのサイズを上回っているため、メッセージをログに記録できませんでした|WCFMessageLogging| +|[4801 \- DiscoveryClientInClientChannelFailedToClose](../../../../../docs/framework/wcf/diagnostics/etw/4801-discoveryclientinclientchannelfailedtoclose.md)|警告|DiscoveryClientChannel 内で作成された DiscoveryClient を閉じることができず、異常終了しました。|探索| +|[4802 \- DiscoveryClientProtocolExceptionSuppressed](../../../../../docs/framework/wcf/diagnostics/etw/4802-discoveryclientprotocolexceptionsuppressed.md)|情報|DiscoveryClient を閉じているときに ProtocolException が抑制されました。 その理由として、DiscoveryService がまだ DiscoveryClient に応答を送信しようとしていることが考えられます。|探索| +|[4803 \- DiscoveryClientReceivedMulticastSuppression](../../../../../docs/framework/wcf/diagnostics/etw/4803-discoveryclientreceivedmulticastsuppression.md)|情報|DiscoveryClient は DiscoveryProxy からマルチキャスト抑制メッセージを受け取りました。|探索| +|[4804 \- DiscoveryMessageReceivedAfterOperationCompleted](../../../../../docs/framework/wcf/diagnostics/etw/4804-discoverymessagereceivedafteroperationcompleted.md)|情報|messageId\='%2' の %1 メッセージは、対応する %3 操作が完了したため、DiscoveryClient によってドロップされました。|探索| +|[4805 \- DiscoveryMessageWithInvalidContent](../../../../../docs/framework/wcf/diagnostics/etw/4805-discoverymessagewithinvalidcontent.md)|警告|messageId\='%2' の %1 メッセージは、無効なコンテンツがあったため、ドロップされました。|探索| +|[4806 \- DiscoveryMessageWithInvalidRelatesToOrOperationCompleted](../../../../../docs/framework/wcf/diagnostics/etw/4806-discoverymessagewithinvalidrelatestooroperationcompleted.md)|警告|messageId\='%2' および relatesTo\='%3' の %1 メッセージは、対応する %4 操作が完了したか、relatesTo 値が無効であるため、DiscoveryClient によってドロップされました。|探索| +|[4807 \- DiscoveryMessageWithInvalidReplyTo](../../../../../docs/framework/wcf/diagnostics/etw/4807-discoverymessagewithinvalidreplyto.md)|警告|messageId\='%1' の探索要求メッセージは、無効な ReplyTo アドレスがあったため、ドロップされました。|探索| +|[4808 \- DiscoveryMessageWithNoContent](../../../../../docs/framework/wcf/diagnostics/etw/4808-discoverymessagewithnocontent.md)|警告|%1 メッセージは、コンテンツがなかったため、ドロップされました。|探索| +|[4809 \- DiscoveryMessageWithNullMessageId](../../../../../docs/framework/wcf/diagnostics/etw/4809-discoverymessagewithnullmessageid.md)|警告|%1 メッセージは、メッセージ ヘッダーに必要な MessageId プロパティが含まれていなかったため、ドロップされました。|探索| +|[4810 \- DiscoveryMessageWithNullMessageSequence](../../../../../docs/framework/wcf/diagnostics/etw/4810-discoverymessagewithnullmessagesequence.md)|警告|messageId\='%2' の %1 メッセージは、DiscoveryMessageSequence プロパティがなかったため、DiscoveryClient によってドロップされました。|探索| +|[4811 \- DiscoveryMessageWithNullRelatesTo](../../../../../docs/framework/wcf/diagnostics/etw/4811-discoverymessagewithnullrelatesto.md)|警告|messageId\='%2' の %1 メッセージは、メッセージ ヘッダーに必要な RelatesTo プロパティが含まれていなかったため、DiscoveryClient によってドロップされました。|探索| +|[4812 \- DiscoveryMessageWithNullReplyTo](../../../../../docs/framework/wcf/diagnostics/etw/4812-discoverymessagewithnullreplyto.md)|警告|messageId\='%1' の探索要求メッセージは、ReplyTo アドレスがなかったため、ドロップされました。|探索| +|[4813 \- DuplicateDiscoveryMessage](../../../../../docs/framework/wcf/diagnostics/etw/4813-duplicatediscoverymessage.md)|警告|messageId\='%2' の %1 メッセージは、重複していたため、ドロップされました。|探索| +|[4814 \- EndpointDiscoverabilityDisabled](../../../../../docs/framework/wcf/diagnostics/etw/4814-endpointdiscoverabilitydisabled.md)|情報|EndpointAddress\='%1' および ListenUri\='%2' のエンドポイントの探索が無効になりました。|探索| +|[4814 \- EndpointDiscoverabilityDisabled](../../../../../docs/framework/wcf/diagnostics/etw/4814-endpointdiscoverabilitydisabled.md)|情報|EndpointAddress\='%1' および ListenUri\='%2' のエンドポイントの探索が有効になりました。|探索| +|[4816 \- FindInitiatedInDiscoveryClientChannel](../../../../../docs/framework/wcf/diagnostics/etw/4816-findinitiatedindiscoveryclientchannel.md)|詳細|エンドポイントを探索するために、Find 操作が DiscoveryClientChannel で開始されました。|探索| +|[4817 \- InnerChannelCreationFailed](../../../../../docs/framework/wcf/diagnostics/etw/4817-innerchannelcreationfailed.md)|警告|DiscoveryClientChannel は、EndpointAddress\='%1' および Via\='%2' の探索されたエンドポイントを使用して、チャネルを作成できませんでした。 DiscoveryClientChannel は、次に使用可能な探索されたエンドポイントを使用します。|探索| +|[4818 \- InnerChannelOpenFailed](../../../../../docs/framework/wcf/diagnostics/etw/4818-innerchannelopenfailed.md)|警告|DiscoveryClientChannel は、EndpointAddress\='%1' および Via\='%2' の探索されたエンドポイントを使用して、チャネルを開くことができませんでした。 DiscoveryClientChannel は、次に使用可能な探索されたエンドポイントを使用します。|探索| +|[4819 \- InnerChannelOpenSucceeded](../../../../../docs/framework/wcf/diagnostics/etw/4819-innerchannelopensucceeded.md)|情報|DiscoveryClientChannel は正常にエンドポイントを探索し、それを使用してチャネルを開きました。 クライアントは EndpointAddress\='%1' および Via\='%2' を使用して、サービスに接続されています。|探索| +|[4820 \- SynchronizationContextReset](../../../../../docs/framework/wcf/diagnostics/etw/4820-synchronizationcontextreset.md)|情報|SynchronizationContext は DiscoveryClientChannel によって、元の値 %1 にリセットされました。|探索| +|[4821 \- SynchronizationContextSetToNull](../../../../../docs/framework/wcf/diagnostics/etw/4821-synchronizationcontextsettonull.md)|情報|SynchronizationContext は、Find 操作を開始する前に、DiscoveryClientChannel によって NULL に設定されました。|探索| +|[5001 \- DCSerializeWithSurrogateStart](../../../../../docs/framework/wcf/diagnostics/etw/5001-dcserializewithsurrogatestart.md)|詳細|DataContract のサロゲートによる %1 のシリアル化を開始します。|シリアル化| +|[5002 \- DCSerializeWithSurrogateStop](../../../../../docs/framework/wcf/diagnostics/etw/5002-dcserializewithsurrogatestop.md)|詳細|DataContract のサロゲートによるシリアル化を停止します。|シリアル化| +|[5003 \- DCDeserializeWithSurrogateStart](../../../../../docs/framework/wcf/diagnostics/etw/5003-dcdeserializewithsurrogatestart.md)|詳細|DataContract のサロゲートによる %1 のシリアル化解除を開始します。|シリアル化| +|[5004 \- DCDeserializeWithSurrogateStop](../../../../../docs/framework/wcf/diagnostics/etw/5004-dcdeserializewithsurrogatestop.md)|詳細|DataContract のサロゲートによるシリアル化解除を停止します。|シリアル化| +|[5005 \- ImportKnownTypesStart](../../../../../docs/framework/wcf/diagnostics/etw/5005-importknowntypesstart.md)|詳細|ImportKnownTypes を開始します。|シリアル化| +|[5006 \- ImportKnownTypesStop](../../../../../docs/framework/wcf/diagnostics/etw/5006-importknowntypesstop.md)|詳細|ImportKnownTypes を停止します。|シリアル化| +|[5007 \- DCResolverResolve](../../../../../docs/framework/wcf/diagnostics/etw/5007-dcresolverresolve.md)|詳細|DataContract リゾルバーが %1 の解決を開始します。|シリアル化| +|[5008 \- DCGenWriterStart](../../../../../docs/framework/wcf/diagnostics/etw/5008-dcgenwriterstart.md)|詳細|DataContract の %2 の %1 ライターの生成を開始します。|シリアル化| +|[5009 \- DCGenWriterStop](../../../../../docs/framework/wcf/diagnostics/etw/5009-dcgenwriterstop.md)|詳細|DataContract のライターの生成を停止します。|シリアル化| +|[5010 \- DCGenReaderStart](../../../../../docs/framework/wcf/diagnostics/etw/5010-dcgenreaderstart.md)|詳細|DataContract の %2 の %1 リーダーの生成を開始します。|シリアル化| +|[5011 \- DCGenReaderStop](../../../../../docs/framework/wcf/diagnostics/etw/5011-dcgenreaderstop.md)|詳細|DataContract の生成を停止します。|シリアル化| +|[5012 \- DCJsonGenReaderStart](../../../../../docs/framework/wcf/diagnostics/etw/5012-dcjsongenreaderstart.md)|詳細|Json の %2 の %1 リーダーの生成を開始します。|シリアル化| +|[5013 \- DCJsonGenReaderStop](../../../../../docs/framework/wcf/diagnostics/etw/5013-dcjsongenreaderstop.md)|詳細|Json のリーダーの生成を停止します。|シリアル化| +|[5014 \- DCJsonGenWriterStart](../../../../../docs/framework/wcf/diagnostics/etw/5014-dcjsongenwriterstart.md)|詳細|Json の %2 の %1 ライターの生成を開始します。|シリアル化| +|[5015 \- DCJsonGenWriterStop](../../../../../docs/framework/wcf/diagnostics/etw/5015-dcjsongenwriterstop.md)|詳細|Json のライターの生成を停止します。|シリアル化| +|[5016 \- GenXmlSerializableStart](../../../../../docs/framework/wcf/diagnostics/etw/5016-genxmlserializablestart.md)|詳細|'%1' の XML シリアル化が可能な要素の生成を開始します。|シリアル化| +|[5017 \- GenXmlSerializableStop](../../../../../docs/framework/wcf/diagnostics/etw/5017-genxmlserializablestop.md)|詳細|XML シリアル化が可能な要素の生成を停止します。|シリアル化| +|[5203 \- JsonMessageDecodingStart](../../../../../docs/framework/wcf/diagnostics/etw/5203-jsonmessagedecodingstart.md)|詳細|JsonMessageEncoder がメッセージのデコードを開始しました。|チャネル| +|[5204 \- JsonMessageEncodingStart](../../../../../docs/framework/wcf/diagnostics/etw/5204-jsonmessageencodingstart.md)|詳細|JsonMessageEncoder がメッセージのエンコードを開始しました。|チャネル| +|[5402 \- TokenValidationStarted](../../../../../docs/framework/wcf/diagnostics/etw/5402-tokenvalidationstarted.md)|詳細|SecurityToken \(型 '%1'、ID '%2'\) の検証を開始しました。|セキュリティ| +|[5403 \- TokenValidationSuccess](../../../../../docs/framework/wcf/diagnostics/etw/5403-tokenvalidationsuccess.md)|詳細|SecurityToken \(型 '%1'、ID '%2'\) の検証に成功しました。|セキュリティ| +|[5404 \- TokenValidationFailure](../../../../../docs/framework/wcf/diagnostics/etw/5404-tokenvalidationfailure.md)|Error|SecurityToken \(型 '%1'、ID '%2'\) の検証に失敗しました。 %3|セキュリティ| +|[5405 \- GetIssuerNameSuccess](../../../../../docs/framework/wcf/diagnostics/etw/5405-getissuernamesuccess.md)|詳細|トークン ID: %2 からの発行者名: %1 の取得に成功しました。|セキュリティ| +|[5406 \- GetIssuerNameFailure](../../../../../docs/framework/wcf/diagnostics/etw/5406-getissuernamefailure.md)|Error|トークン ID: %1 からの発行者名の取得に失敗しました。|セキュリティ| +|[5600 \- FederationMessageProcessingStarted](../../../../../docs/framework/wcf/diagnostics/etw/5600-federationmessageprocessingstarted.md)|詳細|フェデレーション メッセージの処理を開始しました。|セキュリティ| +|[5601 \- FederationMessageProcessingSuccess](../../../../../docs/framework/wcf/diagnostics/etw/5601-federationmessageprocessingsuccess.md)|詳細|フェデレーション メッセージの処理に成功しました。|セキュリティ| +|[5602 \- FederationMessageCreationStarted](../../../../../docs/framework/wcf/diagnostics/etw/5602-federationmessagecreationstarted.md)|詳細|フォーム ポストからのフェデレーション メッセージの作成を開始しました。|セキュリティ| +|[5603 \- FederationMessageCreationSuccess](../../../../../docs/framework/wcf/diagnostics/etw/5603-federationmessagecreationsuccess.md)|詳細|フォーム ポストからのフェデレーション メッセージの作成に成功しました。|セキュリティ| +|[5604 \- SessionCookieReadingStarted](../../../../../docs/framework/wcf/diagnostics/etw/5604-sessioncookiereadingstarted.md)|詳細|セッション クッキーからのセッション トークンの読み取りを開始しました。|セキュリティ| +|[5605 \- SessionCookieReadingSuccess](../../../../../docs/framework/wcf/diagnostics/etw/5605-sessioncookiereadingsuccess.md)|詳細|セッション クッキーからのセッション トークンの読み取りに成功しました。|セキュリティ| +|[5606 \- PrincipalSettingFromSessionTokenStarted](../../../../../docs/framework/wcf/diagnostics/etw/5606-principalsettingfromsessiontokenstarted.md)|詳細|セッション トークンからのプリンシパルの設定を開始しました。|セキュリティ| +|[5607 \- PrincipalSettingFromSessionTokenSuccess](../../../../../docs/framework/wcf/diagnostics/etw/5607-principalsettingfromsessiontokensuccess.md)|詳細|セッション トークンからのプリンシパルの設定に成功しました。|セキュリティ| +|[57393 \- AppDomainUnload](../../../../../docs/framework/wcf/diagnostics/etw/57393-appdomainunload.md)|情報|AppDomain をアンロードしています。 AppDomain.FriendlyName %1、ProcessName %2、ProcessId %3。|インフラストラクチャ| +|[57394 \- HandledException](../../../../../docs/framework/wcf/diagnostics/etw/57394-handledexception.md)|情報|例外を処理しています。|インフラストラクチャ| +|[57395 \- ShipAssertExceptionMessage](../../../../../docs/framework/wcf/diagnostics/etw/57395-shipassertexceptionmessage.md)|Error|予期しないエラーが発生しました。 アプリケーションではこのエラーを処理することはできません。 診断上の目的から、次の英語のメッセージがエラーに関連付けられています: %1。|インフラストラクチャ| +|[57396 \- ThrowingException](../../../../../docs/framework/wcf/diagnostics/etw/57396-throwingexception.md)|警告|例外をスローしています。 発生元 %1。|インフラストラクチャ| +|[57397 \- UnhandledException](../../../../../docs/framework/wcf/diagnostics/etw/57397-unhandledexception.md)|Critical|ハンドルされていない例外です。|インフラストラクチャ| +|[57399 \- TraceCodeEventLogCritical](../../../../../docs/framework/wcf/diagnostics/etw/57399-tracecodeeventlogcritical.md)|Critical|イベント ログに書き込みました。|インフラストラクチャ| +|[57400 \- TraceCodeEventLogError](../../../../../docs/framework/wcf/diagnostics/etw/57400-tracecodeeventlogerror.md)|Error|イベント ログに書き込みました。|インフラストラクチャ| +|[57401 \- TraceCodeEventLogInfo](../../../../../docs/framework/wcf/diagnostics/etw/57401-tracecodeeventloginfo.md)|情報|イベント ログに書き込みました。|インフラストラクチャ| +|[57402 \- TraceCodeEventLogVerbose](../../../../../docs/framework/wcf/diagnostics/etw/57402-tracecodeeventlogverbose.md)|詳細|イベント ログに書き込みました。|インフラストラクチャ| +|[57403 \- TraceCodeEventLogWarning](../../../../../docs/framework/wcf/diagnostics/etw/57403-tracecodeeventlogwarning.md)|警告|イベント ログに書き込みました。|インフラストラクチャ| +|[57404 \- HandledExceptionWarning](../../../../../docs/framework/wcf/diagnostics/etw/57404-handledexceptionwarning.md)|警告|例外を処理しています。|インフラストラクチャ| +|[62326 \- HttpHandlerPickedForUrl](../../../../../docs/framework/wcf/diagnostics/etw/62326-httphandlerpickedforurl.md)|情報|URL '%1' は、ルート要素型 '%2' の XAML ドキュメントをホストします。 この URL に対して行われるすべての要求を処理するために、HTTP ハンドラー型 '%3' が選択されています。|WebHost| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/analytic-tracing-overview.md b/docs/framework/wcf/diagnostics/etw/analytic-tracing-overview.md new file mode 100644 index 00000000000..2f0cbb1beef --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/analytic-tracing-overview.md @@ -0,0 +1,59 @@ +--- +title: "分析トレースの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "分析トレース [WCF], 概要" +ms.assetid: ae55e9cc-0809-442f-921f-d644290ebf15 +caps.latest.revision: 22 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 22 +--- +# 分析トレースの概要 +[!INCLUDE[netfx_current_long](../../../../../includes/netfx-current-long-md.md)] の分析トレースは、Event Tracing for Windows \(ETW\) を基盤とするトレース機能のセットです。詳細度は低いのですが、パフォーマンスに優れています。 ETW は、カーネル レベルで実行され、トレース操作のオーバーヘッドを大幅に削減します。 ユーザー モードおよびカーネル モードのイベントを効率よくバッファーし、サービスの再起動を必要とすることなく、動的にログを有効化できます。 トレース データは、生成および受信されると、イベント ログから確認できます。 + + ETW の[!INCLUDE[crabout](../../../../../includes/crabout-md.md)]については、「[ETW によりデバッグおよびパフォーマンス調整を改善する](http://go.microsoft.com/fwlink/?LinkId=164781)」を参照してください。 + + Windows のシステム、セキュリティ、およびアプリケーション イベント ログによるアプリケーションの分析のほかに、[!INCLUDE[wv](../../../../../includes/wv-md.md)] および [!INCLUDE[lserver](../../../../../includes/lserver-md.md)] では、最上位ノードの \[アプリケーションとサービス ログ\] の下にログが追加されています。 これらの新しいログは、システム全体に影響するグローバルなイベント \(セキュリティ イベント ログで記録されるようなイベントなど\) ではなく、特定のアプリケーションやコンポーネントのイベントを格納することを目的としています。[!INCLUDE[netfx_current_short](../../../../../includes/netfx-current-short-md.md)] では、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] トレース イベント、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージ ログ、および [!INCLUDE[wf1](../../../../../includes/wf1-md.md)] 追跡レコードのログを \[アプリケーションとサービス ログ\] にまとめ、相互に関連付けています。 + +## 概念と機能 + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] 分析トレースには、次の概念と機能があります。 + +### WCF 診断設定の有効化 + WCF の診断は、\\<\>diagnostics 構成セクション内で有効にします。 + +``` + + + +``` + + Web でホストされる IIS 仮想アプリケーションの WCF 診断の設定は、アプリケーションの Web.config ファイルで有効にします。 または、アプリケーション内のサブディレクトリに Web.config を作成することもできます。 この方法では、設定がサブディレクトリ内のすべてのサービスに適用されます。  診断設定が、アプリケーション内のすべてのサービスに対して一貫して初期化されるようにするには、これらの設定を、アプリケーション内の個別のサブディレクトリの 1 つではなく、アプリケーション ディレクトリ内の Web.config に含める必要があります。 + +### チャネル + ETW の場合、ソフトウェア コンポーネントは、チャネルを使用することで、トレース イベントをユーザーの種類に応じて振り分けることができます。 たとえば、システム管理者向けのイベントを 1 つのチャネルに送信し、アプリケーション開発者にとって重要なイベントを別のチャネルに送信できます。 チャネルには名前が付けられ、Windows に登録されるので、ユーザーは、特定のチャネルのイベントをイベント ビューアーを使用して確認できます。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の [!INCLUDE[netfx_current_short](../../../../../includes/netfx-current-short-md.md)] の分析トレース機能は、Microsoft\-Windows\-Application\-Server\-Applications チャネルに書き込みます。 このチャネルは、特に、運用中の [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスの状態を監視する必要があるユーザー向けに設計されています。 このチャネルでは、さまざまな状態監視およびトラブルシューティング シナリオで使用できるイベントがいくつか定義されています。 + + メッセージがイベント ログで正常にデコードされるように Event Tracing for Windows マニファストを有効にするために、次のようにコマンド ラインで ServiceModelReg ツールを使用します。 + + `ServiceModelReg.exe -i -c:etw` + +### 動的構成 + ETW のインフラストラクチャでは、標準の Windows ツールを使用して動的にトレースを有効化および構成できます。[!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)][分析トレースの動的な有効化](../../../../../docs/framework/wcf/diagnostics/etw/dynamically-enabling-analytic-tracing.md). + +### メッセージ フローのトレース + メッセージ フローのトレースを有効にする方法の[!INCLUDE[crabout](../../../../../includes/crabout-md.md)]については、「[メッセージ フローのトレースの構成](../../../../../docs/framework/wcf/diagnostics/etw/configuring-message-flow-tracing.md)」を参照してください。 + +### キーワード + キーワードは、トレース メッセージをフィルター処理するため、およびイベントを生成した [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] コンポーネントを定義するために使用されます。[!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)] [分析トレースの動的な有効化](../../../../../docs/framework/wcf/diagnostics/etw/dynamically-enabling-analytic-tracing.md)。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/configuring-message-flow-tracing.md b/docs/framework/wcf/diagnostics/etw/configuring-message-flow-tracing.md new file mode 100644 index 00000000000..664dadf747a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/configuring-message-flow-tracing.md @@ -0,0 +1,64 @@ +--- +title: "メッセージ フローのトレースの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 15571ca2-bee2-47fb-ba10-fcbc09152ad0 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# メッセージ フローのトレースの構成 +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] のアクティビティ トレースが有効な場合は、エンド ツー エンド アクティビティ ID が、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] スタック全体で論理アクティビティに割り当てられます。 [!INCLUDE[netfx_current_short](../../../../../includes/netfx-current-short-md.md)] では、この機能の高パフォーマンス バージョンが導入されており、"メッセージ フローのトレース" と呼ばれる Event Tracing for Windows \(ETW\) と連携します。 この機能が有効な場合は、エンド ツー エンド アクティビティ ID が受信メッセージから取得され \(空の場合は割り当てられ\)、チャネルによってメッセージがデコードされた後に生成されたすべてのトレース イベントに伝達されます。 ユーザーはこの機能を使用して、デコード後に、異なるサービスから取得したトレース ログでメッセージ フローを再構築できます。 + + トレースは、アプリケーションで問題が検出された後に有効にし、その問題が解決された後は無効にすることができます。 + +## トレースの有効化 + メッセージ フローのトレースを有効にするには、次の例に示すように、.NET Framework 4 の `messageFlowTracing` 構成要素を `true` に設定します。 + +``` + + + + + + +``` + +> [!NOTE] +> `endToEndTracing` 構成要素は Web.config ファイル内にあるため、ETW と同じ方法で動的に構成することはできません。 `endToEndTracing` 構成要素を有効にするには、アプリケーションをリサイクルする必要があります。 + + アクティビティはアクティビティ ID と呼ばれる識別子の交換によって関連付けられます。 この識別子は GUID で、System.Diagnostics.CorrelationManager クラスによって生成されます。 System.Diagnostics.Trace.CorrelationManager.ActivityID を操作する場合は、実行の制御が WCF コードに転送を返すときに値を元の値に設定するようにしてください。 また、非同期 WCF プログラミング モデルを使用する場合は、System.Diagnostics.Trace.CorrelationManager.ActivityID がスレッド間で転送されるようにしてください。 + +## メッセージ フローのトレース REST サービス + メッセージ フローのトレースでは、要求をエンドツーエンドでトレースできます。 SOAP ベースのサービスでは、アクティビティ ID は、SOAP メッセージのヘッダー内で送信されます。 REST 要求にはこのヘッダーは含まれないため、代わりに、特殊な HTTP イベント ヘッダーが使用されます。 次のコード スニペットには、アクティビティ ID をプログラムで取得する方法が示されています。 + +```vb + +Object output = null;                  +if (OperationContext.Current.IncomingMessageProperties.TryGetValue(HttpRequestMessageProperty.Name, out output)) +{ + HttpRequestMessageProperty httpHeaders = output as HttpRequestMessageProperty; + // Retrieve the Activity Id from the HTTP header string e2eId = httpHeaders.Headers["E2EActivity"]; + // ... +} + +``` + + 次のコードを使用するとプログラムでヘッダーを追加できます。 + +```csharp + +HttpContent content = new StreamContent(contentStream); +Guid correlation = Guid.NewGuid(); +content.Headers.Add("E2EActivity", Convert.ToBase64String(correlation.ToByteArray())); + +``` \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/determining-service-operation-duration.md b/docs/framework/wcf/diagnostics/etw/determining-service-operation-duration.md new file mode 100644 index 00000000000..a6ba10b9d12 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/determining-service-operation-duration.md @@ -0,0 +1,37 @@ +--- +title: "サービス操作の実行時間の確認 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e8a93a2c-2c20-48b3-8986-57e90e9aa908 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# サービス操作の実行時間の確認 +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アプリケーションで分析トレースを有効にしている場合、イベント ログを調べるだけでサービス操作の実行時間を簡単に確認できます。 ここでは、サービス操作の実行にかかる時間を確認する方法を示します。 + +### サービス操作の実行時間の確認 + +1. **\[スタート\]** ボタン、**\[ファイル名を指定して実行\]** の順にクリックし、「`eventvwr.exe`」と入力してイベント ビューアーを開きます。 + +2. 分析トレースを有効にしていない場合は、**\[アプリケーションとサービス ログ\]**、**\[Microsoft\]**、**\[Windows\]**、**\[アプリケーション サーバー \- アプリケーション\]** の順に展開します。 **\[表示\]**、**\[分析およびデバッグ ログの表示\]** の順にクリックします。 **\[分析\]** を右クリックし、**\[ログを有効にする\]** をクリックします。 サービス操作が実行された後にトレースを表示できるように、イベント ビューアーを開いたままにしておきます。 + +3. 次に、サービス プロジェクトおよびそのサービスと対話するクライアント プロジェクトが含まれている [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] アプリケーションを開きます。 このようなアプリケーションの作成方法については、「[チュートリアル入門](../../../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サンプルがインストールされている場合、このチュートリアルで作成する完成済みのプロジェクトが含まれている[概要](../../../../../docs/framework/wcf/samples/getting-started-sample.md)を開くことができます。 + +4. **F5** キーを押してサーバー アプリケーションを実行します。 **Client** プロジェクトを右クリックし、**\[デバッグ\]**、**\[新しいインスタンスを開始\]** の順にクリックして、クライアント アプリケーションを実行します。 + +5. イベント ビューアーで、分析ログを更新し、イベント ID でイベントを並べ替えます。 イベント ID が [214 \- OperationCompleted](../../../../../docs/framework/wcf/diagnostics/etw/214-operationcompleted.md) のイベントを探します。 これらのイベントは、完了した操作、およびその操作にかかった時間を示します。 次のイベントは、追加操作の時間を示しています。 + + ```Output + + OperationInvoker がメソッド 'Add' への呼び出しを完了しました。 メソッド呼び出し時間は '3' ミリ秒でした。 + ``` \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/dynamically-enabling-analytic-tracing.md b/docs/framework/wcf/diagnostics/etw/dynamically-enabling-analytic-tracing.md new file mode 100644 index 00000000000..ca42b46b295 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/dynamically-enabling-analytic-tracing.md @@ -0,0 +1,51 @@ +--- +title: "分析トレースの動的な有効化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 58b63cfc-307a-427d-b69d-9917ff9f44ac +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 分析トレースの動的な有効化 +Windows オペレーティング システムに付属のツールでは、ETW \(Event Tracing for Windows\) を使用して、トレースを動的に有効化または無効化できます。 すべての [!INCLUDE[netfx_current_long](../../../../../includes/netfx-current-long-md.md)] [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] サービスについては、アプリケーションの Web.config ファイルを変更したり、サービスを再起動したりせずに、分析トレースを動的に有効化および無効化できます。 このため、トレース イベントを生成するアプリケーションに影響が生じません。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] のトレース オプションも同様に構成できます。 たとえば、アプリケーションに影響を与えずに、重大度レベルを **Error** から **Information** に変更できます。 これは、次のツールで実行できます。 + +- **Logman**: トレース データを構成、制御、および照会するためのコマンド ライン ツールです。[!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)][logman create trace](http://go.microsoft.com/fwlink/?LinkId=165426)」と「[logman update trace](http://go.microsoft.com/fwlink/?LinkId=165427)」を参照してください。 + +- **EventViewer**: トレース結果を表示するための、Windows のグラフィカル管理ツールです。[!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)][WCF サービスと Event Tracing for Windows](../../../../../docs/framework/wcf/samples/wcf-services-and-event-tracing-for-windows.md)」および「[イベント ビューアー](http://go.microsoft.com/fwlink/?LinkId=165428)」を参照してください。 + +- **Perfmon**: カウンターを使用して、トレース カウンターおよびパフォーマンス トレースの効果を監視する、Windows のグラフィカル管理ツールです。[!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)][データ コレクター セットを手動で作成する](http://go.microsoft.com/fwlink/?LinkId=165429)」を参照してください。 + +### キーワード + クラスを使用するときには、通常、.NET Framework トレース メッセージが重大度レベル \(エラー、警告、情報など\) でフィルターされます。 ETW は、重大度レベルの概念をサポートしますが、キーワードを使用して、新しい柔軟なフィルター機構も追加されています。 キーワードは任意のテキスト値で、これによって、トレース イベントでそのイベントの意味に関する追加のコンテキストが提供されます。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の分析トレースでは、各トレース イベントに 2 種類のキーワードがあります。 まず、各イベントには 1 つ以上のシナリオ キーワードがあります。 これらのキーワードは、そのイベントがサポートするシナリオを示します。 次の表に示すように、特定の目的に対応する 3 つのシナリオ キーワードがあります。 キーワードを使用したフィルター処理は、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスに影響を与えずに動的に変更できます。 このため、現在のトレース シナリオおよび収集するトレース情報の量を動的に変更できます。 たとえば、`HealthMonitoring` を `Troubleshooting` に変更し、トレース イベントの詳細度を上げることができます。 + +|キーワード|説明| +|-----------|--------| +|`HealthMonitoring`|サービスのアクティビティを監視できる、軽量の、最小限のトレース。| +|`EndToEndMonitoring`|メッセージ フロー トレースのサポートに使用するイベント。| +|`Troubleshooting`|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の拡張ポイントに関連するより詳細なイベント。| + + キーワードの 2 番目のグループは、[!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] のどのコンポーネントがイベントを生成するかを定義します。 + +|キーワード|説明| +|-----------|--------| +|`UserEvents`|[!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] ではなく、ユーザー コードが生成するイベント。| +|`ServiceModel`|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] ランタイムが生成するイベント。| +|`ServiceHost`|サービス ホストが生成するイベント。| +|`WCFMessageLogging`|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージ ログ イベント。| + +## 参照 + [WCF サービスと Event Tracing for Windows](../../../../../docs/framework/wcf/samples/wcf-services-and-event-tracing-for-windows.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/index.md b/docs/framework/wcf/diagnostics/etw/index.md new file mode 100644 index 00000000000..a1258766b8a --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/index.md @@ -0,0 +1,41 @@ +--- +title: "Analytic Tracing with ETW | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "diagnostics [WCF], analytic tracing" + - "administration [WCF], analytic tracing" + - "analytic tracing [WCF]" +ms.assetid: 1d518e47-a38d-41e8-93d7-8c3b361f6a56 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# Analytic Tracing with ETW +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の分析トレースでは、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスの実行中に診断情報をキャプチャする手段が提供されます。[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] スタック内のキー ポイントで [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の分析トレース イベントが生成され、運用環境での [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスのトラブルシューティングが可能になります。[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスの分析トレースは、[!INCLUDE[netfx_current_long](../../../../../includes/netfx-current-long-md.md)] [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスをホストする運用サーバーのパフォーマンスに最小限の影響しか与えません。これは、これらのイベントが効率的に ETW \(Event Tracing for Windows\) セッションに送出されるためです。 + +## このセクションの内容 + [分析トレースの概要](../../../../../docs/framework/wcf/diagnostics/etw/analytic-tracing-overview.md) + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の分析トレースが [!INCLUDE[netfx_current_long](../../../../../includes/netfx-current-long-md.md)] でどのように機能するかについて説明します。 + + [分析トレースの動的な有効化](../../../../../docs/framework/wcf/diagnostics/etw/dynamically-enabling-analytic-tracing.md) + ETW を使用してトレースを動的に有効化または無効化する方法について説明します。 + + [メッセージ フローのトレースの構成](../../../../../docs/framework/wcf/diagnostics/etw/configuring-message-flow-tracing.md) + メッセージ フローのトレースを構成する方法について説明します。 + + [分析トレース イベント リファレンス](../../../../../docs/framework/wcf/diagnostics/etw/analytic-trace-event-reference.md) + イベント ID とそれらのイベント レベル、イベント メッセージ、およびキーワードを表で示します。 + +## 参照 + [WCF サービスと Event Tracing for Windows](../../../../../docs/framework/wcf/samples/wcf-services-and-event-tracing-for-windows.md) + [Windows のイベント トレースへの追跡イベント](../../../../../docs/framework/windows-workflow-foundation/samples/tracking-events-into-event-tracing-in-windows.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/etw/monitoring-service-operation-failures.md b/docs/framework/wcf/diagnostics/etw/monitoring-service-operation-failures.md new file mode 100644 index 00000000000..33127a79b94 --- /dev/null +++ b/docs/framework/wcf/diagnostics/etw/monitoring-service-operation-failures.md @@ -0,0 +1,59 @@ +--- +title: "サービス操作エラーの監視 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 59472ba3-8ebf-4479-bd7b-f440d5e636cb +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# サービス操作エラーの監視 +アプリケーションに対して分析トレースが有効になっている場合、サービス エラーはイベント ビューアーで簡単に監視できます。ここでは、サービス操作が失敗したことを確認する方法、およびエラーの原因を特定する方法を示します。 + +### サービス操作エラーに関する情報の確認 + +1. **\[スタート\]** ボタン、**\[ファイル名を指定して実行\]** の順にクリックし、「`eventvwr.exe`」と入力してイベント ビューアーを開きます。 + +2. 分析トレースを有効にしていない場合は、**\[アプリケーションとサービス ログ\]**、**\[Microsoft\]**、**\[Windows\]**、**\[アプリケーション サーバー \- アプリケーション\]** の順に展開します。**\[表示\]**、**\[分析およびデバッグ ログの表示\]** の順にクリックします。**\[分析\]** を右クリックし、**\[ログを有効にする\]** を選択します。サービス操作が失敗した後にトレースを表示できるように、イベント ビューアーを開いたままにしておきます。 + +3. 次に、[!INCLUDE[vs_current_long](../../../../../includes/vs-current-long-md.md)] の「[チュートリアル入門](../../../../../docs/framework/wcf/getting-started-tutorial.md)」で作成したサンプルを開きます。サービスを作成できるように、管理者として [!INCLUDE[vs_current_long](../../../../../includes/vs-current-long-md.md)] を実行する必要があることに注意してください。[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サンプルがインストールされている場合、このチュートリアルで作成する完成済みのプロジェクトが含まれている[概要](../../../../../docs/framework/wcf/samples/getting-started-sample.md)を開くことができます。 + +4. Server プロジェクトの Program.cs ファイルで、`CalculatorService` クラスの `Divide` メソッドの先頭に次のコード行を追加します。 + + ``` + if (n2 == 0) throw new DivideByZeroException(); + + ``` + +5. クライアント プロジェクトの Program.cs ファイルで、value2 に割り当てる値をゼロに変更します。 + + ``` + //Call the Divide service operation + value1 = 22.00D; + value2 = 0.00D; + result = client.Divide(value1, value2); + Console.WriteLine("Divide({0}, {1}) = {2}", value1, value2, result); + + ``` + +6. **Ctrl** キーを押しながら F5 キーを押して、サーバー アプリケーションをデバッグなしで実行します。 + +7. Visual Studio コマンド プロンプトを開きます。クライアント ディレクトリに移動し、コマンド ラインからクライアントを実行します。 + +8. イベント ビューアーで、分析ログを無効化および更新し、イベント ID でイベントを並べ替えます。サービス エラーを示すイベント ID [219 \- ServiceException](../../../../../docs/framework/wcf/diagnostics/etw/219-serviceexception.md) のイベントを検索します。 + + ```Output + メッセージの処理中に種類 'System.DivideByZeroException' のハンドルされない例外がスローされました。完全な例外の ToString: System.DivideByZeroException: 0 で除算しようとしました。 + ``` + + > [!NOTE] + > イベントは、イベント ビューアーへの送信時にバッファーされます。そのため、エラー イベントはすぐに表示されない場合があります。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/TOC.md b/docs/framework/wcf/diagnostics/event-logging/TOC.md new file mode 100644 index 00000000000..666b0743e5a --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/TOC.md @@ -0,0 +1,79 @@ +# [ComPlusTLBImportError](complustlbimporterror.md) +# [PiiLoggingNotAllowed](piiloggingnotallowed.md) +# [ComPlusInstanceCreationError](complusinstancecreationerror.md) +# [UnhandledStateMachineExceptionRecordDescription](unhandledstatemachineexceptionrecorddescription.md) +# [UnknownListenerAdapterError](unknownlisteneradaptererror.md) +# [FailFastException](failfastexception.md) +# [ThumbPrintNotValidated](thumbprintnotvalidated.md) +# [WmiAdminTypeMismatch](wmiadmintypemismatch.md) +# [WebHostHttpError](webhosthttperror.md) +# [FailedToSetupTracing](failedtosetuptracing.md) +# [StartErrorPublish](starterrorpublish.md) +# [ComPlusInvokingMethodFailedMismatchedTransactions](complusinvokingmethodfailedmismatchedtransactions.md) +# [FailedToInitializeTraceSource](failedtoinitializetracesource.md) +# [MessageAuthenticationFailure](messageauthenticationfailure.md) +# [イベント一覧](events-general-reference.md) +# [FailedToRemovePerformanceCounter](failedtoremoveperformancecounter.md) +# [WmiCreateInstanceFailed](wmicreateinstancefailed.md) +# [NonFatalUnexpectedStateMachineEvent](nonfatalunexpectedstatemachineevent.md) +# [WasConnectionTimedout](wasconnectiontimedout.md) +# [ProtocolStopped](protocolstopped.md) +# [FailedToLoadPerformanceCounter](failedtoloadperformancecounter.md) +# [ProtocolStartFailure](protocolstartfailure.md) +# [MessageLoggingOn](messageloggingon.md) +# [FailedToTraceEventWithException](failedtotraceeventwithexception.md) +# [TransportAuthenticationFailure](transportauthenticationfailure.md) +# [ComPlusDllHostInitializerStartingError](complusdllhostinitializerstartingerror.md) +# [MissingNecessaryKeyUsage](missingnecessarykeyusage.md) +# [ParticipantRecoveryLogEntryCorrupt](participantrecoverylogentrycorrupt.md) +# [イベント ログ](index.md) +# [ComPlusInvokingMethodFailed](complusinvokingmethodfailed.md) +# [ServiceAuthorizationFailure](serviceauthorizationfailure.md) +# [TransactionBridgeRecoveryFailure](transactionbridgerecoveryfailure.md) +# [FailedToTraceEvent](failedtotraceevent.md) +# [CoordinatorRecoveryLogEntryCreationFailure](coordinatorrecoverylogentrycreationfailure.md) +# [WebHostUnhandledException](webhostunhandledexception.md) +# [MissingNecessaryEnhancedKeyUsage](missingnecessaryenhancedkeyusage.md) +# [MessageLoggingOff](messageloggingoff.md) +# [MessageQueueDuplicatedSocketLeak](messagequeueduplicatedsocketleak.md) +# [InvariantAssertionFailed](invariantassertionfailed.md) +# [SslNoAccessiblePrivateKey](sslnoaccessibleprivatekey.md) +# [LAFailedToListenForApp](lafailedtolistenforapp.md) +# [ProtocolInitializationFailure](protocolinitializationfailure.md) +# [WmiExecMethodFailed](wmiexecmethodfailed.md) +# [ProtocolStopFailure](protocolstopfailure.md) +# [SecurityNegotiationSuccess](securitynegotiationsuccess.md) +# [PerformanceCounterInitializationFailure](performancecounterinitializationfailure.md) +# [WasDisconnected](wasdisconnected.md) +# [WmiUnregistrationFailed](wmiunregistrationfailed.md) +# [TransportAuthenticationSuccess](transportauthenticationsuccess.md) +# [FailedToCreateMessageLoggingTraceSource](failedtocreatemessageloggingtracesource.md) +# [MessageAuthenticationSuccess](messageauthenticationsuccess.md) +# [MessageQueueDuplicatedPipeLeak](messagequeueduplicatedpipeleak.md) +# [ProtocolRecoveryComplete](protocolrecoverycomplete.md) +# [WmiRegistrationFailed](wmiregistrationfailed.md) +# [SslNoPrivateKey](sslnoprivatekey.md) +# [WmiGetObjectFailed](wmigetobjectfailed.md) +# [FailedToLogMessage](failedtologmessage.md) +# [FatalUnexpectedStateMachineEvent](fatalunexpectedstatemachineevent.md) +# [FailFast](failfast.md) +# [ServiceAuthorizationSuccess](serviceauthorizationsuccess.md) +# [WmiDeleteInstanceFailed](wmideleteinstancefailed.md) +# [ProtocolRecoveryBeginningFailure](protocolrecoverybeginningfailure.md) +# [WmiExecQueryFailed](wmiexecqueryfailed.md) +# [CoordinatorRecoveryLogEntryCorrupt](coordinatorrecoverylogentrycorrupt.md) +# [ProtocolRecoveryCompleteFailure](protocolrecoverycompletefailure.md) +# [ServiceStartFailed](servicestartfailed.md) +# [WebHostFailedToListen](webhostfailedtolisten.md) +# [ImpersonationFailure](impersonationfailure.md) +# [TraceCodeRemovedBadFilter](tracecoderemovedbadfilter.md) +# [ImpersonationSuccess](impersonationsuccess.md) +# [SecurityNegotiationFailure](securitynegotiationfailure.md) +# [WmiPutInstanceFailed](wmiputinstancefailed.md) +# [BindingError](bindingerror.md) +# [WebHostFailedToProcessRequest](webhostfailedtoprocessrequest.md) +# [WmiPropertyMissing](wmipropertymissing.md) +# [ComPlusServiceHostStartingServiceError](complusservicehoststartingserviceerror.md) +# [ThumbPrintNotFound](thumbprintnotfound.md) +# [ParticipantRecoveryLogEntryCreationFailure](participantrecoverylogentrycreationfailure.md) +# [PiiLoggingOn](piiloggingon.md) diff --git a/docs/framework/wcf/diagnostics/event-logging/bindingerror.md b/docs/framework/wcf/diagnostics/event-logging/bindingerror.md new file mode 100644 index 00000000000..4d2d286c95d --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/bindingerror.md @@ -0,0 +1,31 @@ +--- +title: "BindingError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 19d90e9d-c92a-4ca7-ba31-aa07882bb81e +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# BindingError +ID : 159 + + 重大度 : エラー + + カテゴリ : SMSvcHost + +## 説明 + このイベントは、特定のサイトの特定のバインディングの解析中にエラーが発生したため、このサイトのプロトコルが一時的に無効になっていることを示します。イベントには、バインディング、ソース、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/complusdllhostinitializerstartingerror.md b/docs/framework/wcf/diagnostics/event-logging/complusdllhostinitializerstartingerror.md new file mode 100644 index 00000000000..99e3a6f9707 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/complusdllhostinitializerstartingerror.md @@ -0,0 +1,31 @@ +--- +title: "ComPlusDllHostInitializerStartingError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ad7d176a-cf40-412a-9335-eef64a25454a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ComPlusDllHostInitializerStartingError +ID : 131 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、DllHost 初期化子の開始時にエラーが発生したことを示します。イベントには、AppID、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/complusinstancecreationerror.md b/docs/framework/wcf/diagnostics/event-logging/complusinstancecreationerror.md new file mode 100644 index 00000000000..f692c1bd65d --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/complusinstancecreationerror.md @@ -0,0 +1,31 @@ +--- +title: "ComPlusInstanceCreationError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f54078e6-7de0-4d0e-bda7-a420da110311 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ComPlusInstanceCreationError +ID : 134 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + COM\+ : COM インスタンスの作成中にエラーが発生しました。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/complusinvokingmethodfailed.md b/docs/framework/wcf/diagnostics/event-logging/complusinvokingmethodfailed.md new file mode 100644 index 00000000000..afaee54a6c5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/complusinvokingmethodfailed.md @@ -0,0 +1,28 @@ +--- +title: "ComPlusInvokingMethodFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aa435a6d-87a1-468e-a73a-f287fcf697c3 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ComPlusInvokingMethodFailed +ID : 133 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/complusinvokingmethodfailedmismatchedtransactions.md b/docs/framework/wcf/diagnostics/event-logging/complusinvokingmethodfailedmismatchedtransactions.md new file mode 100644 index 00000000000..dbc1e4249aa --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/complusinvokingmethodfailedmismatchedtransactions.md @@ -0,0 +1,31 @@ +--- +title: "ComPlusInvokingMethodFailedMismatchedTransactions | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d13f1978-ff42-443a-939f-75c8c8d50286 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ComPlusInvokingMethodFailedMismatchedTransactions +ID : 135 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + ComPlus: メソッド呼び出しのトランザクションが一致しません。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/complusservicehoststartingserviceerror.md b/docs/framework/wcf/diagnostics/event-logging/complusservicehoststartingserviceerror.md new file mode 100644 index 00000000000..933e62f7638 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/complusservicehoststartingserviceerror.md @@ -0,0 +1,31 @@ +--- +title: "ComPlusServiceHostStartingServiceError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 10994991-3717-4352-ad58-c22c3eff60d5 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ComPlusServiceHostStartingServiceError +ID : 130 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、COM\+ サービスの開始時にエラーが発生したことを示します。イベントには、AppID、CLSID、サロゲート、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/complustlbimporterror.md b/docs/framework/wcf/diagnostics/event-logging/complustlbimporterror.md new file mode 100644 index 00000000000..4b2238e3ba1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/complustlbimporterror.md @@ -0,0 +1,31 @@ +--- +title: "ComPlusTLBImportError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fe087e97-efbb-4006-8465-ec2ff7860c7b +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ComPlusTLBImportError +ID : 132 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、タイプ ライブラリのインポート中にエラーが発生したことを示します。 イベントには、IID、タイプ ライブラリ ID、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/coordinatorrecoverylogentrycorrupt.md b/docs/framework/wcf/diagnostics/event-logging/coordinatorrecoverylogentrycorrupt.md new file mode 100644 index 00000000000..8d7030d65f8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/coordinatorrecoverylogentrycorrupt.md @@ -0,0 +1,31 @@ +--- +title: "CoordinatorRecoveryLogEntryCorrupt | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3cd0c3e3-84c8-4d43-a561-a8851c78e565 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# CoordinatorRecoveryLogEntryCorrupt +ID: 139 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、コーディネーターの回復ログ エントリが破損し、逆シリアル化できなかったことを示します。このエラーが原因で、データの損失が発生することがあります。イベントには、トランザクション ID、回復データ \(Base64 エンコード\)、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/coordinatorrecoverylogentrycreationfailure.md b/docs/framework/wcf/diagnostics/event-logging/coordinatorrecoverylogentrycreationfailure.md new file mode 100644 index 00000000000..982a4a10065 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/coordinatorrecoverylogentrycreationfailure.md @@ -0,0 +1,31 @@ +--- +title: "CoordinatorRecoveryLogEntryCreationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9f2b1a5c-f5a6-4203-87ff-601635b9ae40 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# CoordinatorRecoveryLogEntryCreationFailure +ID : 140 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + 回復ログのエントリを、コーディネーターの登録用に生成できませんでした。トランザクションは中止されます。イベントには、トランザクション ID、理由、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/events-general-reference.md b/docs/framework/wcf/diagnostics/event-logging/events-general-reference.md new file mode 100644 index 00000000000..89c20ae77c9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/events-general-reference.md @@ -0,0 +1,20 @@ +--- +title: "イベント一覧 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c77b8029-64f4-48c6-a67a-2999f417495d +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# イベント一覧 +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] によって送出されるすべてのイベントを示します。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/failedtocreatemessageloggingtracesource.md b/docs/framework/wcf/diagnostics/event-logging/failedtocreatemessageloggingtracesource.md new file mode 100644 index 00000000000..6c6685782a7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/failedtocreatemessageloggingtracesource.md @@ -0,0 +1,31 @@ +--- +title: "FailedToCreateMessageLoggingTraceSource | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 75e91aad-6d83-4e5e-8c70-fed1625e522f +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# FailedToCreateMessageLoggingTraceSource +ID : 115 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、メッセージ ログでトレース ソースを作成できなかったことを示します。イベントには、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/failedtoinitializetracesource.md b/docs/framework/wcf/diagnostics/event-logging/failedtoinitializetracesource.md new file mode 100644 index 00000000000..647b047d8cb --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/failedtoinitializetracesource.md @@ -0,0 +1,31 @@ +--- +title: "FailedToInitializeTraceSource | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ce6fea55-292c-4fb9-908e-3713fcd4cf8f +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# FailedToInitializeTraceSource +ID : 101 + + 重大度 : エラー + + カテゴリ : トレース + +## 説明 + トレース ソースは初期化されませんでした。 トレースは無効になります。 イベントには、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/failedtoloadperformancecounter.md b/docs/framework/wcf/diagnostics/event-logging/failedtoloadperformancecounter.md new file mode 100644 index 00000000000..3922f8d588c --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/failedtoloadperformancecounter.md @@ -0,0 +1,31 @@ +--- +title: "FailedToLoadPerformanceCounter | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb333946-738e-4937-808e-5b6c0ac44e1b +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# FailedToLoadPerformanceCounter +ID : 118 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、パフォーマンス カウンターが読み込まれなかったことを示します。 イベントには、カテゴリ名、カウンター名、インスタンス名、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/failedtologmessage.md b/docs/framework/wcf/diagnostics/event-logging/failedtologmessage.md new file mode 100644 index 00000000000..75f2fbaa49b --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/failedtologmessage.md @@ -0,0 +1,31 @@ +--- +title: "FailedToLogMessage | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 589d5af7-685f-4456-bebf-d6d6fa1f8475 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# FailedToLogMessage +ID : 113 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、メッセージがログに記録されなかったことを示します。イベントには、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/failedtoremoveperformancecounter.md b/docs/framework/wcf/diagnostics/event-logging/failedtoremoveperformancecounter.md new file mode 100644 index 00000000000..da8ea79b38f --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/failedtoremoveperformancecounter.md @@ -0,0 +1,31 @@ +--- +title: "FailedToRemovePerformanceCounter | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c5991c11-f8a9-46ab-94e8-b30ea8e3c12f +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# FailedToRemovePerformanceCounter +ID : 119 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、パフォーマンス カウンターが削除されなかったことを示します。 イベントには、カテゴリ名、カウンター名、インスタンス名、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/failedtosetuptracing.md b/docs/framework/wcf/diagnostics/event-logging/failedtosetuptracing.md new file mode 100644 index 00000000000..725745dd8fc --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/failedtosetuptracing.md @@ -0,0 +1,33 @@ +--- +title: "FailedToSetupTracing | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dd61db93-4687-4832-8dc9-99e38fa83671 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# FailedToSetupTracing +ID : 100 + + 重大度 : エラー + + カテゴリ : トレース + +## 説明 + トレースを設定できませんでした。 トレースは無効になります。 + + イベントには、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/failedtotraceevent.md b/docs/framework/wcf/diagnostics/event-logging/failedtotraceevent.md new file mode 100644 index 00000000000..9ab128a2a0c --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/failedtotraceevent.md @@ -0,0 +1,31 @@ +--- +title: "FailedToTraceEvent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a13f19e3-a6e0-4e58-bb45-73bed6cf4421 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# FailedToTraceEvent +ID : 104 + + 重大度 : エラー + + カテゴリ : トレース + +## 説明 + イベント \(1 つまたは複数\) はトレースされませんでした。イベントには、元のイベント文字列、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/failedtotraceeventwithexception.md b/docs/framework/wcf/diagnostics/event-logging/failedtotraceeventwithexception.md new file mode 100644 index 00000000000..2e8f54b8c4e --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/failedtotraceeventwithexception.md @@ -0,0 +1,33 @@ +--- +title: "FailedToTraceEventWithException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b605b2b8-acd6-4762-8269-b025758a2404 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# FailedToTraceEventWithException +ID : 105 + + 重大度 : エラー + + カテゴリ : トレース + +## 説明 + イベント \(1 つまたは複数\) はトレースされませんでした。 + + イベントには、元のイベント文字列、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/failfast.md b/docs/framework/wcf/diagnostics/event-logging/failfast.md new file mode 100644 index 00000000000..13145caa38d --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/failfast.md @@ -0,0 +1,31 @@ +--- +title: "FailFast | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4fc4e476-997b-4166-90af-8d164f775924 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# FailFast +ID : 102 + + 重大度 : エラー + + カテゴリ : トレース + +## 説明 + FailFast が呼び出されました。イベントには、メッセージ、スタック トレース、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/failfastexception.md b/docs/framework/wcf/diagnostics/event-logging/failfastexception.md new file mode 100644 index 00000000000..568afa46b35 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/failfastexception.md @@ -0,0 +1,31 @@ +--- +title: "FailFastException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f30de0d9-3a91-4800-9d09-3504d7e5a10f +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# FailFastException +ID : 103 + + 重大度 : エラー + + カテゴリ : トレース + +## 説明 + FailFast 中に例外がスローされました。 イベントには、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/fatalunexpectedstatemachineevent.md b/docs/framework/wcf/diagnostics/event-logging/fatalunexpectedstatemachineevent.md new file mode 100644 index 00000000000..31fbf1244b2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/fatalunexpectedstatemachineevent.md @@ -0,0 +1,31 @@ +--- +title: "FatalUnexpectedStateMachineEvent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 57714066-921f-4ced-90a7-5fdd3dd79552 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# FatalUnexpectedStateMachineEvent +ID : 137 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、ステート マシンが予期しないイベントを処理しようとしたことを示します。このイベントは致命的なものと見なされました。イベントには、トランザクション ID、ステート マシン、現在の状態、履歴、イベント名、イベントの詳細、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/impersonationfailure.md b/docs/framework/wcf/diagnostics/event-logging/impersonationfailure.md new file mode 100644 index 00000000000..9f61de2989a --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/impersonationfailure.md @@ -0,0 +1,31 @@ +--- +title: "ImpersonationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3005d73d-2164-4ed0-9da1-9f83bd5b9d06 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ImpersonationFailure +ID : 176 + + 重大度 : エラー + + カテゴリ : SecurityAudit + +## 説明 + このイベントは偽装が失敗したことを示し、メソッド名、クライアント ID、およびアクティビティ ID を表示します。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/impersonationsuccess.md b/docs/framework/wcf/diagnostics/event-logging/impersonationsuccess.md new file mode 100644 index 00000000000..a099e0b823c --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/impersonationsuccess.md @@ -0,0 +1,31 @@ +--- +title: "ImpersonationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 20b2ab9c-7ced-45d6-8bb0-d480e186102e +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ImpersonationSuccess +ID : 175 + + 重大度 : 情報 + + カテゴリ : SecurityAudit + +## 説明 + このイベントは偽装が成功したことを示し、メソッド名、クライアント ID、およびアクティビティ ID を表示します。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/index.md b/docs/framework/wcf/diagnostics/event-logging/index.md new file mode 100644 index 00000000000..736a16095d7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/index.md @@ -0,0 +1,59 @@ +--- +title: "WCF のイベント ログ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "イベント ログ [WCF]" +ms.assetid: aac0530d-f44c-45a1-bada-e30e0677b41f +caps.latest.revision: 22 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 22 +--- +# WCF のイベント ログ +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] は、Windows イベント ログで内部イベントをトレースします。 + +## イベント ログの表示 + イベント ログは、既定で自動的に有効になります。無効にする方法はありません。[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] によってログに記録されるイベントは、イベント ビューアーを使用して表示できます。このツールを起動するには、**\[スタート\]** ボタンをクリックし、**\[コントロール パネル\]** をクリックします。次に、**\[管理ツール\]** をダブルクリックし、**\[イベント ビューアー\]** をダブルクリックします。 + +### アプリケーション イベント ログ + **アプリケーション イベント ログ**には、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] によって生成されるイベントの大半が含まれています。このエントリの多くは、アプリケーションに関して特定の機能を起動できなかったことを示しています。ログの内容には次のような種類があります。 + +- メッセージのログ記録とトレース : [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では、トレースとメッセージのログ記録に失敗すると、イベント ログにイベントが記録されます。ただし、トレース エラーが発生するたびにイベントがトリガーされるわけではありません。イベント ログがトレース エラーでいっぱいになってしまう状況を回避するために、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では、このようなイベントに 10 分のブラックアウト期間を設けています。つまり、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] がトレース エラーをイベント ログに書き込んだ後、少なくとも 10 分間はトレース エラーのログ記録が行われません。 + +- 共有リスナー : WCF TCP ポート共有サービスが開始に失敗すると、イベントがログに記録されます。 + +- [!INCLUDE[infocard](../../../../../includes/infocard-md.md)]: サービスが開始に失敗すると、イベントがログに記録されます。 + +- 起動エラーやクラッシュなど、重大なエラー イベント。 + +- メッセージ ログの有効化 : メッセージ ログが有効化された場合に、イベントがログに記録されます。これには機密情報やアプリケーション固有の情報がメッセージのヘッダーや本文に記録されている可能性があることを管理者に知らせる目的があります。 + +- `machine.config` ファイルの `machineSettings` 要素で、`enableLoggingKnownPII` 属性が設定されている場合、イベントはログに記録されます。この属性は、コンピューター上で実行しているアプリケーションが、既知の個人を特定できる情報 \(PII\) をログに記録できるかどうかを指定します。 + +- 特定のアプリケーションで PII ログを有効にするために、`app.config` ファイルまたは `web.config` ファイルの `logKnownPii` 属性が `true` に設定され、`machine.config` ファイルの `machineSettings` 要素で、`enableLoggingKnownPII` 属性が `false` に設定されている場合、イベントはログに記録されます。また、`logKnownPii` と `enableLoggingKnownPII` の両方が `true` に設定されている場合、イベントはログに記録されます。このような構成設定の詳細については、「[メッセージ ログの構成](../../../../../docs/framework/wcf/diagnostics/configuring-message-logging.md)」のセキュリティに関するセクションを参照してください。 + +### セキュリティ イベント ログ + **セキュリティ イベント ログ**には、WCF によってログ記録されたセキュリティ監査イベントが書き込まれます。 + +### システム イベント ログ + WCF では、**システム イベント ログ**に対する記録は行われません。 + +### イベント ログ エントリ + イベントの**ソース**は、ログ エントリを生成するアセンブリの名前です。 + + イベント ログ エントリの型によって、イベントの重大度がわかります。各イベントは単一の型でなければなりません。アプリケーションがイベントをレポートする際には、そのイベントの型が示されます。イベント ビューアーは、この型を使用して、ログのリスト ビューに表示するアイコンを決定します。イベント ログ エントリで使用されるイベントの型については、「」を参照してください。 + + イベント ビューアーでイベントを表示しているときに "詳細な情報" をクリックすると、インターネット上に情報が送信される場合があります。詳細については、イベント ビューアーのヘルプを参照してください。 + +## 参照 + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/invariantassertionfailed.md b/docs/framework/wcf/diagnostics/event-logging/invariantassertionfailed.md new file mode 100644 index 00000000000..410a7c44a56 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/invariantassertionfailed.md @@ -0,0 +1,31 @@ +--- +title: "InvariantAssertionFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 96c8a97a-3c04-4c35-9302-a6648ccfe5b6 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# InvariantAssertionFailed +ID : 106 + + 重大度 : エラー + + カテゴリ : トレース + +## 説明 + このイベントは、インバリアント アサーションが false であることを示します。イベントには、メッセージ、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/lafailedtolistenforapp.md b/docs/framework/wcf/diagnostics/event-logging/lafailedtolistenforapp.md new file mode 100644 index 00000000000..864d237d485 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/lafailedtolistenforapp.md @@ -0,0 +1,31 @@ +--- +title: "LAFailedToListenForApp | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8ef16d4e-fab7-4ffc-829b-1e3163e72337 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# LAFailedToListenForApp +ID : 160 + + 重大度 : エラー + + カテゴリ : SMSvcHost + +## 説明 + このイベントは、指定されたサイトをリッスンしようとしたときに、指定されたプロトコルの指定されたアクティブ化サービスでエラーが発生したため、このサイトのプロトコルが一時的に無効になっていることを示します。このイベントには、URL、状態、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/messageauthenticationfailure.md b/docs/framework/wcf/diagnostics/event-logging/messageauthenticationfailure.md new file mode 100644 index 00000000000..1b7fe4c46ef --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/messageauthenticationfailure.md @@ -0,0 +1,31 @@ +--- +title: "MessageAuthenticationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cde6beae-2d57-447e-8885-a1cfc66bbcbb +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# MessageAuthenticationFailure +ID : 170 + + 重大度 : エラー + + カテゴリ : SecurityAudit + +## 説明 + このイベントは、メッセージの承認に失敗したことを示します。 イベントには、サービス、アクション、クライアント ID、およびアクティビティ ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/messageauthenticationsuccess.md b/docs/framework/wcf/diagnostics/event-logging/messageauthenticationsuccess.md new file mode 100644 index 00000000000..1554cb1bea2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/messageauthenticationsuccess.md @@ -0,0 +1,31 @@ +--- +title: "MessageAuthenticationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 75974896-9d26-4586-92fb-578f6c71f0e1 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# MessageAuthenticationSuccess +ID : 169 + + 重大度 : 情報 + + カテゴリ : SecurityAudit + +## 説明 + このイベントは、メッセージ認証が成功したことを示します。イベントには、サービス、アクション、クライアント ID、およびアクティビティ ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/messageloggingoff.md b/docs/framework/wcf/diagnostics/event-logging/messageloggingoff.md new file mode 100644 index 00000000000..2a8598cc242 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/messageloggingoff.md @@ -0,0 +1,31 @@ +--- +title: "MessageLoggingOff | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 98cb139d-cb10-4d8c-9087-3dc3c6f23521 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# MessageLoggingOff +ID : 117 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、メッセージ ログが無効になっていることを示します。イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/messageloggingon.md b/docs/framework/wcf/diagnostics/event-logging/messageloggingon.md new file mode 100644 index 00000000000..0866469c87a --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/messageloggingon.md @@ -0,0 +1,31 @@ +--- +title: "MessageLoggingOn | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b6252ce4-395f-4b9a-a58c-7de8c81c7c5a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# MessageLoggingOn +ID : 116 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + メッセージ ログが有効になりました。 ネットワーク上で暗号化されていても、重要な情報をログに記録できます。 たとえば、メッセージ本文などです。 イベントには、AppID、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/messagequeueduplicatedpipeleak.md b/docs/framework/wcf/diagnostics/event-logging/messagequeueduplicatedpipeleak.md new file mode 100644 index 00000000000..816ba869407 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/messagequeueduplicatedpipeleak.md @@ -0,0 +1,31 @@ +--- +title: "MessageQueueDuplicatedPipeLeak | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 743db7f1-32cc-4a3b-8d1a-5d1cf25e439c +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# MessageQueueDuplicatedPipeLeak +ID : 166 + + 重大度 : エラー + + カテゴリ: SMSvcHost + +## 説明 + このイベントは、複製された名前付きパイプのディスパッチ中にエラーが発生したことを示します。このハンドルは現在プロセスでリークされています。イベントには、ソース、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/messagequeueduplicatedsocketleak.md b/docs/framework/wcf/diagnostics/event-logging/messagequeueduplicatedsocketleak.md new file mode 100644 index 00000000000..ac7fc3c0555 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/messagequeueduplicatedsocketleak.md @@ -0,0 +1,31 @@ +--- +title: "MessageQueueDuplicatedSocketLeak | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9721a463-15d1-43dc-8e3a-cae44448de91 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# MessageQueueDuplicatedSocketLeak +ID : 165 + + 重大度 : エラー + + カテゴリ : SMSvcHost + +## 説明 + このイベントは、複製されたソケットのディスパッチ中にエラーが発生したことを示します。このハンドルは現在プロセスでリークされています。イベントには、ソース、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/missingnecessaryenhancedkeyusage.md b/docs/framework/wcf/diagnostics/event-logging/missingnecessaryenhancedkeyusage.md new file mode 100644 index 00000000000..13a4fc776ae --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/missingnecessaryenhancedkeyusage.md @@ -0,0 +1,31 @@ +--- +title: "MissingNecessaryEnhancedKeyUsage | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9dffd071-0b79-4e10-9027-06760b4cc3ca +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# MissingNecessaryEnhancedKeyUsage +ID : 157 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、特定のサブジェクト名と拇印を持つ ID 証明書が、対応する EnhancedKeyUsages に特定のデータを提供していないことを示します。イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/missingnecessarykeyusage.md b/docs/framework/wcf/diagnostics/event-logging/missingnecessarykeyusage.md new file mode 100644 index 00000000000..7ee4452df8a --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/missingnecessarykeyusage.md @@ -0,0 +1,31 @@ +--- +title: "MissingNecessaryKeyUsage | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: abce3542-29d8-4b51-ab5f-f3845242c3c1 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# MissingNecessaryKeyUsage +ID : 156 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、指定したサブジェクト名と拇印を持つ ID 証明書が、対応する KeyUsages に特定のデータを提供していないことを示します。プロセス名とプロセス ID も表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/nonfatalunexpectedstatemachineevent.md b/docs/framework/wcf/diagnostics/event-logging/nonfatalunexpectedstatemachineevent.md new file mode 100644 index 00000000000..de156adcc39 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/nonfatalunexpectedstatemachineevent.md @@ -0,0 +1,31 @@ +--- +title: "NonFatalUnexpectedStateMachineEvent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bfa37c10-cf1b-4325-b756-6ef200606510 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# NonFatalUnexpectedStateMachineEvent +ID : 148 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、ステート マシンが予期しないイベントを処理しようとしたことを示します。 このイベントは致命的なものとは見なされません。 イベントには、トランザクション ID、ステート マシン、現在の状態、履歴、イベント名、イベントの詳細、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/participantrecoverylogentrycorrupt.md b/docs/framework/wcf/diagnostics/event-logging/participantrecoverylogentrycorrupt.md new file mode 100644 index 00000000000..382b9bfe84c --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/participantrecoverylogentrycorrupt.md @@ -0,0 +1,31 @@ +--- +title: "ParticipantRecoveryLogEntryCorrupt | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ab34785f-f953-4428-93ca-3c50d3f50a4a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ParticipantRecoveryLogEntryCorrupt +ID : 138 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、参加要素の回復ログ エントリが破損し、逆シリアル化できなかったことを示します。このエラーが原因で、データの損失が発生することがあります。イベントには、トランザクション ID、回復データ \(Base64 エンコード\)、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/participantrecoverylogentrycreationfailure.md b/docs/framework/wcf/diagnostics/event-logging/participantrecoverylogentrycreationfailure.md new file mode 100644 index 00000000000..36a8cb09b1e --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/participantrecoverylogentrycreationfailure.md @@ -0,0 +1,31 @@ +--- +title: "ParticipantRecoveryLogEntryCreationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0bda0f08-7614-40f8-912a-06f5a99393e6 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ParticipantRecoveryLogEntryCreationFailure +ID : 141 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、回復ログのエントリを参加要素の参加リスト用に生成できなかったことを示します。トランザクションは中止されます。イベントには、トランザクション ID、参加リスト ID、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/performancecounterinitializationfailure.md b/docs/framework/wcf/diagnostics/event-logging/performancecounterinitializationfailure.md new file mode 100644 index 00000000000..45b7a77642c --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/performancecounterinitializationfailure.md @@ -0,0 +1,31 @@ +--- +title: "PerformanceCounterInitializationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 85050ac6-7f7b-4dd3-8e5e-f5116d7c9906 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# PerformanceCounterInitializationFailure +ID : 149 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、パフォーマンス カウンターを初期化できなかったことを示します。イベントには、カウンター名、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/piiloggingnotallowed.md b/docs/framework/wcf/diagnostics/event-logging/piiloggingnotallowed.md new file mode 100644 index 00000000000..0fac0f64c01 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/piiloggingnotallowed.md @@ -0,0 +1,31 @@ +--- +title: "PiiLoggingNotAllowed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fc34a0b6-fee7-4da4-b146-b0c1c8b7519a +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# PiiLoggingNotAllowed +ID : 108 + + 重大度 : エラー + + カテゴリ : トレース + +## 説明 + このイベントは、既知の PII がログ記録されていないことを示します。 既知の PII はログ記録できません。 既知の PII をログ記録できるようにするには、Machine.config の "enableLoggingKnownPii" を `true` に設定します。 イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/piiloggingon.md b/docs/framework/wcf/diagnostics/event-logging/piiloggingon.md new file mode 100644 index 00000000000..21a0fab8ed3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/piiloggingon.md @@ -0,0 +1,31 @@ +--- +title: "PiiLoggingOn | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 08940d0f-dc4c-49e0-b6f6-b70856b5060d +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# PiiLoggingOn +ID : 107 + + 重大度 : エラー + + カテゴリ : トレース + +## 説明 + このイベントは、PII ログ記録が有効になっていることを示します。重要な情報がログに記録されます。イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/protocolinitializationfailure.md b/docs/framework/wcf/diagnostics/event-logging/protocolinitializationfailure.md new file mode 100644 index 00000000000..123fdd92844 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/protocolinitializationfailure.md @@ -0,0 +1,31 @@ +--- +title: "ProtocolInitializationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8ee26f94-c85e-4e92-b56b-16f486c8b00e +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ProtocolInitializationFailure +ID : 142 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、WS\-AtomicTransaction プロトコル サービスを初期化できなかったことを示します。この結果、WS\-AtomicTransaction 機能は無効になります。イベントには、プロトコル ID、プロトコル名、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/protocolrecoverybeginningfailure.md b/docs/framework/wcf/diagnostics/event-logging/protocolrecoverybeginningfailure.md new file mode 100644 index 00000000000..cbe50204fbc --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/protocolrecoverybeginningfailure.md @@ -0,0 +1,31 @@ +--- +title: "ProtocolRecoveryBeginningFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4b6ddabf-3861-4c40-b9a2-b153cf1e4d35 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ProtocolRecoveryBeginningFailure +ID : 144 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、回復の開始時に MSDTC WS\-AtomicTransaction プロトコルでエラーが発生したことを示しています。この結果、WS\-AtomicTransaction 機能は無効になります。イベントには、プロトコル ID、プロトコル名、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/protocolrecoverycomplete.md b/docs/framework/wcf/diagnostics/event-logging/protocolrecoverycomplete.md new file mode 100644 index 00000000000..cefbf3d8047 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/protocolrecoverycomplete.md @@ -0,0 +1,31 @@ +--- +title: "ProtocolRecoveryComplete | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 71b2a222-f3a5-4e71-8ecd-ca53c8f8ef00 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ProtocolRecoveryComplete +ID : 150 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、WS\-AtomicTransaction プロトコル サービスが起動と回復を正常に完了したことを示します。イベントには、プロトコル ID、プロトコル名、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/protocolrecoverycompletefailure.md b/docs/framework/wcf/diagnostics/event-logging/protocolrecoverycompletefailure.md new file mode 100644 index 00000000000..c1610960d06 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/protocolrecoverycompletefailure.md @@ -0,0 +1,31 @@ +--- +title: "ProtocolRecoveryCompleteFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 369aac88-e66d-48cc-a432-c5f2073b7a1b +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ProtocolRecoveryCompleteFailure +ID: 145 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、WS\-AtomicTransaction プロトコル サービスが起動と回復を完了できなかったことを示します。この結果、WS\-AtomicTransaction 機能は無効になりました。イベントには、プロトコル ID、プロトコル名、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/protocolstartfailure.md b/docs/framework/wcf/diagnostics/event-logging/protocolstartfailure.md new file mode 100644 index 00000000000..979416b4f83 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/protocolstartfailure.md @@ -0,0 +1,31 @@ +--- +title: "ProtocolStartFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b722d1d5-bfef-4dc9-bfa3-85178b6d2ae3 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ProtocolStartFailure +ID : 143 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、WS\-AtomicTransaction プロトコル サービスを開始できなかったことを示します。 その結果、WS\-AtomicTransaction 機能が無効化されました。 イベントには、プロトコル ID、プロトコル名、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/protocolstopfailure.md b/docs/framework/wcf/diagnostics/event-logging/protocolstopfailure.md new file mode 100644 index 00000000000..cb5512870b8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/protocolstopfailure.md @@ -0,0 +1,31 @@ +--- +title: "ProtocolStopFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8b246f8f-eb0f-430b-a82b-3d55aad287a1 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ProtocolStopFailure +ID : 147 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、WS\-AtomicTransaction プロトコル サービスを停止できなかったことを示します。イベントには、プロトコル ID、プロトコル名、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/protocolstopped.md b/docs/framework/wcf/diagnostics/event-logging/protocolstopped.md new file mode 100644 index 00000000000..a81c2856c4f --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/protocolstopped.md @@ -0,0 +1,31 @@ +--- +title: "ProtocolStopped | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bc4c892f-b5ed-40cd-979c-382f4bed41b6 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ProtocolStopped +ID : 151 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、WS\-AtomicTransaction プロトコル サービスが停止したことを示します。 イベントには、プロトコル ID、プロトコル名、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/securitynegotiationfailure.md b/docs/framework/wcf/diagnostics/event-logging/securitynegotiationfailure.md new file mode 100644 index 00000000000..969e4dee026 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/securitynegotiationfailure.md @@ -0,0 +1,31 @@ +--- +title: "SecurityNegotiationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2060a678-f97b-4491-acd9-6c57c732afd7 +caps.latest.revision: 6 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 6 +--- +# SecurityNegotiationFailure +ID : 172 + + 重大度 : エラー + + カテゴリ : SecurityAudit + +## 説明 + このイベントは、セキュリティ ネゴシエーションに失敗したことを示します。イベントには、サービス、アクション、クライアント ID、アクティビティ ID、およびネゴシエーションが表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/securitynegotiationsuccess.md b/docs/framework/wcf/diagnostics/event-logging/securitynegotiationsuccess.md new file mode 100644 index 00000000000..e2e9ad4f406 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/securitynegotiationsuccess.md @@ -0,0 +1,31 @@ +--- +title: "SecurityNegotiationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 884dc3ae-c2ff-4793-b60c-d01d44712687 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# SecurityNegotiationSuccess +ID : 171 + + 重大度 : 情報 + + カテゴリ : SecurityAudit + +## 説明 + このイベントは、セキュリティ ネゴシエーションが成功したことを示し、サービスの名前、アクション、クライアント ID、アクティビティ ID、およびネゴシエーションを表示します。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/serviceauthorizationfailure.md b/docs/framework/wcf/diagnostics/event-logging/serviceauthorizationfailure.md new file mode 100644 index 00000000000..bed732f5301 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/serviceauthorizationfailure.md @@ -0,0 +1,31 @@ +--- +title: "ServiceAuthorizationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a6a57896-41d5-4c05-a2fb-184d828e20c1 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ServiceAuthorizationFailure +ID : 168 + + 重大度 : エラー + + カテゴリ : SecurityAudit + +## 説明 + このイベントは、サービスの承認に失敗したことを示します。イベントには、サービス、アクション、クライアント ID、承認コンテキスト、アクティビティ ID、および ServiceAuthorizationManager が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/serviceauthorizationsuccess.md b/docs/framework/wcf/diagnostics/event-logging/serviceauthorizationsuccess.md new file mode 100644 index 00000000000..f55984a8186 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/serviceauthorizationsuccess.md @@ -0,0 +1,31 @@ +--- +title: "ServiceAuthorizationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4e379f38-23f3-498b-b3fd-28cedefbf878 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ServiceAuthorizationSuccess +ID : 176 + + 重大度 : 情報 + + カテゴリ : SecurityAudit + +## 説明 + このイベントは、サービスの承認に成功したことを示します。イベントには、サービス、アクション、クライアント ID、承認コンテキスト、アクティビティ ID、および ServiceAuthorizationManager が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/servicestartfailed.md b/docs/framework/wcf/diagnostics/event-logging/servicestartfailed.md new file mode 100644 index 00000000000..319fd1304f8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/servicestartfailed.md @@ -0,0 +1,31 @@ +--- +title: "ServiceStartFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 33a42eae-d57a-48b3-955c-a8e10b0bb66d +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ServiceStartFailed +ID : 164 + + 重大度 : エラー + + カテゴリ : SMSvcHost + +## 説明 + このイベントは、サービス開始の要求が失敗したことを示します。イベントには、エラー コード、プロセス名、およびプロセス ID が一覧表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/sslnoaccessibleprivatekey.md b/docs/framework/wcf/diagnostics/event-logging/sslnoaccessibleprivatekey.md new file mode 100644 index 00000000000..61f9959fc13 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/sslnoaccessibleprivatekey.md @@ -0,0 +1,31 @@ +--- +title: "SslNoAccessiblePrivateKey | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 90cc793e-7ac8-45b2-81b8-2976e2485734 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# SslNoAccessiblePrivateKey +ID : 155 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、特定のサブジェクト名と拇印を持つ ID 証明書にアクセス可能な秘密キーがないことを示します。イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/sslnoprivatekey.md b/docs/framework/wcf/diagnostics/event-logging/sslnoprivatekey.md new file mode 100644 index 00000000000..4b2f8da8ca7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/sslnoprivatekey.md @@ -0,0 +1,31 @@ +--- +title: "SslNoPrivateKey | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 67eef8f6-360d-42f2-a3ac-2bb17329f247 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# SslNoPrivateKey +ID : 154 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、特定のサブジェクト名と拇印を持つ ID 証明書に秘密キーがないことを示します。イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/starterrorpublish.md b/docs/framework/wcf/diagnostics/event-logging/starterrorpublish.md new file mode 100644 index 00000000000..ba8db893492 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/starterrorpublish.md @@ -0,0 +1,31 @@ +--- +title: "StartErrorPublish | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d261929a-bd41-4611-8951-d1fb16bda0bc +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# StartErrorPublish +ID : 158 + + 重大度 : エラー + + カテゴリ: SMSvcHost + +## 説明 + このイベントは、NT サービスの開始に失敗したことを示します。 待機エンドポイントを公開できませんでした。 イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/thumbprintnotfound.md b/docs/framework/wcf/diagnostics/event-logging/thumbprintnotfound.md new file mode 100644 index 00000000000..aadb62869da --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/thumbprintnotfound.md @@ -0,0 +1,31 @@ +--- +title: "ThumbPrintNotFound | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0e901d43-5359-4f06-a564-6e5821253ece +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ThumbPrintNotFound +ID : 152 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、特定の拇印を持つ ID 証明書が見つからなかったことを示します。イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/thumbprintnotvalidated.md b/docs/framework/wcf/diagnostics/event-logging/thumbprintnotvalidated.md new file mode 100644 index 00000000000..ed17a3a9b74 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/thumbprintnotvalidated.md @@ -0,0 +1,31 @@ +--- +title: "ThumbPrintNotValidated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e3e110f5-2853-4150-99c9-18236df320e2 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ThumbPrintNotValidated +ID : 153 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、指定した拇印を持つ ID 証明書を検証できなかったことを示します。 イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/tracecoderemovedbadfilter.md b/docs/framework/wcf/diagnostics/event-logging/tracecoderemovedbadfilter.md new file mode 100644 index 00000000000..5c47deff99f --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/tracecoderemovedbadfilter.md @@ -0,0 +1,31 @@ +--- +title: "TraceCodeRemovedBadFilter | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 22f169ae-ea2c-444c-b211-50d3b7bece34 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# TraceCodeRemovedBadFilter +ID : 114 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、メッセージ本文にアクセスしていた不適切なメッセージ ログ記録フィルターが削除されたことを示します。イベントには、XPath、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/transactionbridgerecoveryfailure.md b/docs/framework/wcf/diagnostics/event-logging/transactionbridgerecoveryfailure.md new file mode 100644 index 00000000000..89bee9e3514 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/transactionbridgerecoveryfailure.md @@ -0,0 +1,31 @@ +--- +title: "TransactionBridgeRecoveryFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a53891d9-67ea-4ead-8d38-3193cb57cd37 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# TransactionBridgeRecoveryFailure +ID : 146 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、回復時に MSDTC TransactionBridge でエラーが発生したことを示しています。これは致命的な状況であるため、MSDTC サービスは終了されました。イベントには、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/transportauthenticationfailure.md b/docs/framework/wcf/diagnostics/event-logging/transportauthenticationfailure.md new file mode 100644 index 00000000000..e7c9ad64744 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/transportauthenticationfailure.md @@ -0,0 +1,31 @@ +--- +title: "TransportAuthenticationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: adbdbda0-de52-448c-a938-cc9f5db2980e +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# TransportAuthenticationFailure +ID : 174 + + 重大度 : エラー + + カテゴリ : SecurityAudit + +## 説明 + このイベントはトランスポート認証が失敗したことを示し、クライアント ID、およびアクティビティ ID を表示します。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/transportauthenticationsuccess.md b/docs/framework/wcf/diagnostics/event-logging/transportauthenticationsuccess.md new file mode 100644 index 00000000000..8ce9ea2fa09 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/transportauthenticationsuccess.md @@ -0,0 +1,31 @@ +--- +title: "TransportAuthenticationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7a7c3013-3d05-4d32-857b-759e98d91259 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# TransportAuthenticationSuccess +ID : 173 + + 重大度 : 情報 + + カテゴリ : SecurityAudit + +## 説明 + このイベントは、トランスポート認証が成功したことを示します。イベントには、サービス、クライアント ID、およびアクティビティ ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/unhandledstatemachineexceptionrecorddescription.md b/docs/framework/wcf/diagnostics/event-logging/unhandledstatemachineexceptionrecorddescription.md new file mode 100644 index 00000000000..3e64e6b4f31 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/unhandledstatemachineexceptionrecorddescription.md @@ -0,0 +1,31 @@ +--- +title: "UnhandledStateMachineExceptionRecordDescription | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f4a0e8af-7d6c-4091-8d6c-b99e8ff3a07b +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# UnhandledStateMachineExceptionRecordDescription +ID : 136 + + 重大度 : エラー + + カテゴリ : TransactionBridge + +## 説明 + このイベントは、ステート マシンがイベントを処理中に、処理不能の例外がスローされたことを示します。 イベントには、トランザクション ID、ステート マシン名、現在の状態、履歴、参加リスト ID、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/unknownlisteneradaptererror.md b/docs/framework/wcf/diagnostics/event-logging/unknownlisteneradaptererror.md new file mode 100644 index 00000000000..5508392895c --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/unknownlisteneradaptererror.md @@ -0,0 +1,31 @@ +--- +title: "UnknownListenerAdapterError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f454773d-a208-4ce0-8675-b6dd7ebd5a5a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# UnknownListenerAdapterError +ID : 161 + + 重大度 : エラー + + カテゴリ: SMSvcHost + +## 説明 + このイベントは、Windows プロセス アクティブ化サービス \(WAS\) の通知を処理中に、リスナー アダプターで予期しないエラーが発生したことを示します。 プロセスは終了しました。 イベントには、プロトコル、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wasconnectiontimedout.md b/docs/framework/wcf/diagnostics/event-logging/wasconnectiontimedout.md new file mode 100644 index 00000000000..707706fa8ea --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wasconnectiontimedout.md @@ -0,0 +1,31 @@ +--- +title: "WasConnectionTimedout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: be762c57-5641-4761-bd74-ce42603d40bc +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WasConnectionTimedout +ID : 163 + + 重大度 : エラー + + カテゴリ: SMSvcHost + +## 説明 + このイベントは、Windows プロセス アクティブ化サービス \(WAS\) で必要な接続がタイムアウトになったことを示し、プロセス名とプロセス ID を表示します。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wasdisconnected.md b/docs/framework/wcf/diagnostics/event-logging/wasdisconnected.md new file mode 100644 index 00000000000..5c22e50f497 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wasdisconnected.md @@ -0,0 +1,31 @@ +--- +title: "WasDisconnected | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7d86f1a7-a9f9-41f5-9ba2-3ffa70972a9c +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WasDisconnected +ID : 162 + + 重大度 : エラー + + カテゴリ : SMSvcHost + +## 説明 + このイベントは、WAS \(Windows Process Activation\) が切断されたことを示します。イベントには、HRESULT、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/webhostfailedtolisten.md b/docs/framework/wcf/diagnostics/event-logging/webhostfailedtolisten.md new file mode 100644 index 00000000000..60739a5cf24 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/webhostfailedtolisten.md @@ -0,0 +1,31 @@ +--- +title: "WebHostFailedToListen | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 328468a6-6388-425a-a122-49306e303d19 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WebHostFailedToListen +ID : 112 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、特定の URL をリッスンしようとしたときにエラーが発生したことを示します。このワーカー プロセスは終了します。イベントには、例外、プロセス名、およびプロセス ID が一覧表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/webhostfailedtoprocessrequest.md b/docs/framework/wcf/diagnostics/event-logging/webhostfailedtoprocessrequest.md new file mode 100644 index 00000000000..a7e4dd15cf0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/webhostfailedtoprocessrequest.md @@ -0,0 +1,31 @@ +--- +title: "WebHostFailedToProcessRequest | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1637e7ab-ed00-4ee5-b7e9-d3e8d8376147 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WebHostFailedToProcessRequest +ID : 111 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WebHost が要求の処理に失敗したことを示します。イベントには、送信者の情報、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/webhosthttperror.md b/docs/framework/wcf/diagnostics/event-logging/webhosthttperror.md new file mode 100644 index 00000000000..918844a0cef --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/webhosthttperror.md @@ -0,0 +1,31 @@ +--- +title: "WebHostHttpError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dff35e7e-5571-463d-abcf-7e048381f91f +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WebHostHttpError +ID : 110 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WebHost HTTP 例外が発生したことを示します。 イベントには、送信者の情報、HtmlErrorMessage、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/webhostunhandledexception.md b/docs/framework/wcf/diagnostics/event-logging/webhostunhandledexception.md new file mode 100644 index 00000000000..86b4cc17027 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/webhostunhandledexception.md @@ -0,0 +1,31 @@ +--- +title: "WebHostUnhandledException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9e8564c6-8fd2-4bc9-85b5-68e0b55438ee +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WebHostUnhandledException +ID : 109 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WebHost で処理されない例外が発生したことを示します。イベントには、送信者の情報、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wmiadmintypemismatch.md b/docs/framework/wcf/diagnostics/event-logging/wmiadmintypemismatch.md new file mode 100644 index 00000000000..1fd2886c852 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wmiadmintypemismatch.md @@ -0,0 +1,31 @@ +--- +title: "WmiAdminTypeMismatch | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e1b5d70e-6e95-48b3-a3dd-4687484babf7 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WmiAdminTypeMismatch +ID : 128 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、型の不一致が発生したことを示します。 指定した CIM クラスのプロパティには、指定の型の値を使用できません。 イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wmicreateinstancefailed.md b/docs/framework/wcf/diagnostics/event-logging/wmicreateinstancefailed.md new file mode 100644 index 00000000000..62ed98f0c45 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wmicreateinstancefailed.md @@ -0,0 +1,31 @@ +--- +title: "WmiCreateInstanceFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c419e62e-6545-4aec-be6b-dda5276855e5 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# WmiCreateInstanceFailed +ID : 123 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WMI CreateInstance 要求が処理されなかったことを示します。 イベントには、クラス名、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wmideleteinstancefailed.md b/docs/framework/wcf/diagnostics/event-logging/wmideleteinstancefailed.md new file mode 100644 index 00000000000..1bbb3380ef8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wmideleteinstancefailed.md @@ -0,0 +1,31 @@ +--- +title: "WmiDeleteInstanceFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4d61107a-1428-4281-8d1b-372240f4a723 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WmiDeleteInstanceFailed +ID : 122 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WMI DeleteInstance 要求が処理されなかったことを示します。イベントには、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wmiexecmethodfailed.md b/docs/framework/wcf/diagnostics/event-logging/wmiexecmethodfailed.md new file mode 100644 index 00000000000..241117dff54 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wmiexecmethodfailed.md @@ -0,0 +1,31 @@ +--- +title: "WmiExecMethodFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8cb52fa8-0c36-4761-bf8e-2d7e1b73372e +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WmiExecMethodFailed +ID : 125 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WMI ExecMethod 要求が処理されなかったことを示します。イベントには、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wmiexecqueryfailed.md b/docs/framework/wcf/diagnostics/event-logging/wmiexecqueryfailed.md new file mode 100644 index 00000000000..144fc229c2e --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wmiexecqueryfailed.md @@ -0,0 +1,31 @@ +--- +title: "WmiExecQueryFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 464ffd94-1bb2-4eda-ad87-24ca567bf7f3 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WmiExecQueryFailed +ID : 124 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WMI ExecQuery 要求が処理されなかったことを示します。イベントには、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wmigetobjectfailed.md b/docs/framework/wcf/diagnostics/event-logging/wmigetobjectfailed.md new file mode 100644 index 00000000000..221daf2e268 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wmigetobjectfailed.md @@ -0,0 +1,31 @@ +--- +title: "WmiGetObjectFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 676691b5-705e-4422-8dca-c6f517964116 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WmiGetObjectFailed +ID : 120 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WMI GetObject 要求が処理されなかったことを示します。イベントには、WMI オブジェクト、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wmipropertymissing.md b/docs/framework/wcf/diagnostics/event-logging/wmipropertymissing.md new file mode 100644 index 00000000000..7df8518b688 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wmipropertymissing.md @@ -0,0 +1,31 @@ +--- +title: "WmiPropertyMissing | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 109fa6b4-93dc-4785-bec4-5aa02c434a65 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WmiPropertyMissing +ID : 129 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、型の不一致が発生したことを示します。指定した CIM クラスには、指定した特定の型のプロパティがありません。イベントには、プロセス名とプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wmiputinstancefailed.md b/docs/framework/wcf/diagnostics/event-logging/wmiputinstancefailed.md new file mode 100644 index 00000000000..13258fb8cfd --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wmiputinstancefailed.md @@ -0,0 +1,31 @@ +--- +title: "WmiPutInstanceFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1e56f6db-c6f6-4e57-9668-3ca79c3750af +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WmiPutInstanceFailed +ID : 121 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WMI PutInstance 要求が処理されなかったことを示します。イベントには、WMI オブジェクト、例外、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wmiregistrationfailed.md b/docs/framework/wcf/diagnostics/event-logging/wmiregistrationfailed.md new file mode 100644 index 00000000000..a8b64b01044 --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wmiregistrationfailed.md @@ -0,0 +1,31 @@ +--- +title: "WmiRegistrationFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 69ac6b2b-770c-49e1-9865-34773767971c +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WmiRegistrationFailed +ID : 126 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WMI プロバイダーが登録されなかったことを示します。イベントには、WMI オブジェクト、エラー、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/event-logging/wmiunregistrationfailed.md b/docs/framework/wcf/diagnostics/event-logging/wmiunregistrationfailed.md new file mode 100644 index 00000000000..7d5dfba96ec --- /dev/null +++ b/docs/framework/wcf/diagnostics/event-logging/wmiunregistrationfailed.md @@ -0,0 +1,31 @@ +--- +title: "WmiUnregistrationFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7d1d31a7-efab-492d-b0ff-3233d5dc7a2a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WmiUnregistrationFailed +ID : 127 + + 重大度 : エラー + + カテゴリ : ServiceModel + +## 説明 + このイベントは、WMI プロバイダーが登録解除されなかったことを示します。イベントには、WMI オブジェクト、エラー、プロセス名、およびプロセス ID が表示されます。 + +## 参照 + [イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [イベント一覧](../../../../../docs/framework/wcf/diagnostics/event-logging/events-general-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/TOC.md b/docs/framework/wcf/diagnostics/exceptions-reference/TOC.md new file mode 100644 index 00000000000..d4247ce0838 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/TOC.md @@ -0,0 +1,25 @@ +# [コア通信 : InternalDuplex トランスポート チャネル](core-communications-internal-duplex-transport-channels.md) +# [ピア チャネル](peer-channel.md) +# [コア通信 : TCP トランスポート チャネル](core-communications-tcp-transport-channels.md) +# [コア通信 : ユーティリティ](core-communications-utilities.md) +# [例外リファレンス](index.md) +# [ホスティング](hosting-exceptions.md) +# [コア通信 : トランスポート フレームワーク](core-communications-transport-framework.md) +# [コア通信 : チャネル フレームワーク](core-communications-channel-framework.md) +# [ツール](tools.md) +# [構成](configuration.md) +# [セキュリティ例外](security-exceptions.md) +# [サービス フレームワークのメタデータ](service-framework-metadata.md) +# [サービス フレームワーク](service-framework.md) +# [トランザクション フォーマッタ](transaction-formatter.md) +# [コア通信 : HTTP/HTTPS トランスポート チャネル](core-communications-http-https-transport-channels.md) +# [COM+ 統合](com-integration.md) +# [コア通信 : 接続フレームワーク](core-communications-connection-framework.md) +# [IdentityModel](identitymodel-exceptions.md) +# [信頼できるメッセージ機能](reliable-messaging.md) +# [MSMQ トランスポート](msmq-transport.md) +# [MSMQ 統合のトランスポート](msmq-integration-transport.md) +# [サービス フレームワーク データ](service-framework-data.md) +# [トランザクション](transaction-exceptions.md) +# [コア通信 : 名前付きパイプ トランスポート チャネル](core-communications-named-pipe-transport-channels.md) +# [コア通信 : Webhost サポート](core-communications-webhost-support.md) diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/com-integration.md b/docs/framework/wcf/diagnostics/exceptions-reference/com-integration.md new file mode 100644 index 00000000000..5844b9fa55a --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/com-integration.md @@ -0,0 +1,28 @@ +--- +title: "COM+ 統合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6a687c1b-d0be-42fb-8f9b-20fea1317411 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# COM+ 統合 +ここでは、COM\+ 統合によって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|CannotResolveTypeForParamInMessageDescription|指定された名前空間内の指定されたパラメーターの型を解決できません。| +|NoEqualSignFound|指定されたキーワードの後に等号がありません。各キーワードの後に等号と値が続くことを確認してください。| +|UdtNotFoundInAssembly|指定されたユーザー定義型が見つかりませんでした。正しい型およびタイプ ライブラリが登録および指定されていることを確認してください。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/configuration.md b/docs/framework/wcf/diagnostics/exceptions-reference/configuration.md new file mode 100644 index 00000000000..b5f5dc13c81 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/configuration.md @@ -0,0 +1,40 @@ +--- +title: "構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 86a6e12f-73b5-450e-8725-f4ca5fe0702c +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 構成 +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] 構成によって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|ConfigBindingCannotBeConfigured|サービス エンドポイントのバインディングを構成できません。| +|ConfigElementKeyNull|指定された構成要素キーを NULL にすることはできません。| +|ConfigExtensionTypeNotRegisteredInCollection|指定された拡張の型は、指定された拡張のコレクションに登録されていません。| +|ConfigIndexOutOfRange|指定された属性の値が範囲外です。| +|ConfigInvalidBindingConfigurationName|指定された構成に指定された名前のバインディングが含まれていません。| +|ConfigInvalidBindingName|指定された構成に指定された名前のバインディングが含まれていません。これはこのバインディングに対して無効な値です。| +|ConfigInvalidCommonEndpointBehaviorType|指定された動作拡張は指定された型を実装していないため、共通エンドポイント動作に追加できません。| +|ConfigInvalidCommonServiceBehaviorType|指定された動作拡張は指定された型を実装していないため、共通サービス動作に追加できません。| +|ConfigInvalidEndpointBehaviorType|基になる動作型が IServiceBehavior インターフェイスを実装していないため、指定された動作拡張を指定されたエンドポイント動作に追加できません。| +|ConfigInvalidExtensionType|指定された型をコレクションで使用するには、指定された拡張から派生する必要があります。| +|ConfigInvalidServiceBehaviorType|基になる動作型が IServiceBehavior インターフェイスを実装していないため、動作拡張を指定された名前のサービス動作に追加できません。| +|ConfigMessageEncodingAlreadyInBinding|指定されたメッセージ エンコーディング要素を追加できません。指定されたバインディングには、別のメッセージ エンコーディング要素が既に存在しています。バインディングのメッセージ エンコーディング要素は各バインディングに 1 つしか指定できません。| +|ConfigNoExtensionCollectionAssociatedWithType|指定された型の拡張に関連付けられた拡張のコレクションが見つかりません。| +|ConfigSectionNotFound|指定された構成セクションを作成できません。Machine.config ファイルに情報がありません。構成セクションが適切に登録されていること、およびセクション名を正しく入力していることを確認してください。Windows Communication Foundation セクションの場合は、ServiceModelReg.exe \-i を実行してこのエラーを修正してください。| +|ConfigTransportAlreadyInBinding|指定されたトランスポート要素を追加できません。指定されたバインディングには、別のトランスポート要素が既に存在しています。バインディングのメッセージ エンコーディング要素は各バインディングに 1 つしか指定できません。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-channel-framework.md b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-channel-framework.md new file mode 100644 index 00000000000..0711b740259 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-channel-framework.md @@ -0,0 +1,28 @@ +--- +title: "コア通信 : チャネル フレームワーク | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8caeb496-8d4c-477e-a476-994ece685a68 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# コア通信 : チャネル フレームワーク +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] チャネル フレームワークによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|ReceiveRequestTimedOut|指定されたローカル アドレスで受信された要求は、指定された時間の経過後にタイムアウトしました。この操作に割り当てられた時間は、より長く設定されたタイムアウトの一部になる可能性があります。| +|ReceiveTimedOutNoLocalAddress|受信操作は指定された時間の経過後にタイムアウトになります。この操作に割り当てられた時間は、より長く設定されたタイムアウトの一部になる可能性があります。| +|UnableToDemuxChannel|指定されたアクションでメッセージを受け入れるチャネルがありません。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-connection-framework.md b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-connection-framework.md new file mode 100644 index 00000000000..bb3866022cc --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-connection-framework.md @@ -0,0 +1,32 @@ +--- +title: "コア通信 : 接続フレームワーク | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 61ee00e1-896d-47c8-942f-1db28ac89cdc +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# コア通信 : 接続フレームワーク +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] 接続フレームワークによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|CloseTimedOut|Close メソッドは、指定された時間の経過後にタイムアウトしました。Close の呼び出しに渡されるタイムアウト値を増やすか、バインディングの CloseTimeout 値を増やします。この操作に割り当てられた時間は、より長く設定されたタイムアウトの一部になる可能性があります。| +|ContentTypeMismatch|指定されたものを予期していたサービスに対して、指定されたコンテンツ タイプが送信されました。クライアントとサービスのバインディングは一致しない場合もあります。| +|DuplexChannelAbortedDuringOpen|指定対象への二重チャネルは、開始処理中に中止されました。| +|FramingValueNotAvailable|完全にデコードされていないため、値にアクセスできません。| +|OperationAbortedDuringConnectionEstablishment|指定対象への接続の確立中に操作が中止されました。| +|ReceiveTimedOut2|受信操作は指定された時間の経過後にタイムアウトになります。この操作に割り当てられた時間は、より長く設定されたタイムアウトの一部になる可能性があります。| +|SendCannotBeCalledAfterCloseOutputSession|CloseOutputSession の呼び出し後にチャネルでメッセージを送信することはできません。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-http-https-transport-channels.md b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-http-https-transport-channels.md new file mode 100644 index 00000000000..ddb4fee7d66 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-http-https-transport-channels.md @@ -0,0 +1,41 @@ +--- +title: "コア通信 : HTTP/HTTPS トランスポート チャネル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6c0a23c9-a663-461c-bdab-58b4d3e23642 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# コア通信 : HTTP/HTTPS トランスポート チャネル +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] の HTTP\/HTTPS トランスポート チャネルによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|DigestExplicitCredsImpersonationLevel|指定された偽装レベルが指定されました。 明示的な資格情報を使用する場合に 'Impersonation' レベルをサポートできるのは、HTTP ダイジェスト認証のみです。| +|FramingContentTypeMismatch|指定されたコンテンツの種類は、指定されたサービスでサポートされていませんでした。 クライアントとサービスのバインディングは一致しない場合もあります。| +|Hosting\_SslSettingsMisconfigured|指定されたサービスの SSL \(Secure Sockets Layer\) 設定が、インターネット インフォメーション サービスの SSL 設定と一致しません。| +|HttpAuthSchemeAndClientCert|HTTPS リスナー ファクトリが、クライアント証明書と指定された認証方式を要求するように構成されています。 ただし、クライアント認証の方式は、一度に 1 種類しか要求できません。| +|HttpReceiveFailure|指定された対象への HTTP 応答の受信中にエラーが発生しました。 サービス エンドポイント バインディングが HTTP プロトコルを使用していない可能性があります。 サービスがシャットダウンしたため、HTTP 要求コンテキストがサーバーによって中止された可能性もあります。 詳細については、サーバー ログを参照してください。| +|HttpRegistrationAccessDenied|HTTP は指定された URL を登録できません。 プロセスにこの名前空間へのアクセス権がありません \(詳細については、http:\/\/msdn.microsoft.com\/library\/default.asp?url\=\/library\/http\/http\/namespace\_reservations\_registrations\_and\_routing.asp を参照してください\)。| +|HttpRegistrationAlreadyExists|HTTP は指定された URL を登録できません。 別のアプリケーションが既にこの URL を HTTP.SYS に登録しています。| +|HttpRegistrationPortInUse|HTTP が指定された URL を登録できませんでした。指定された TCP ポートは別のアプリケーションが使用しています。| +|HttpSendFailure|指定された対象への HTTP 要求の発行中にエラーが発生しました。 この原因がセキュリティ バインディングの不一致ではないことを確認してください。 また、サービスが SSL \(Secure Sockets Layer\) 用に構成されていないことも確認してください。| +|MessageXmlProtocolError|ネットワークから受信した XML に問題があります。 詳細については、内部例外を参照してください。| +|MissingContentType|受信側は、指定された対象への要求でコンテンツの種類が指定されていないことを示すエラーを返しました。 詳細については、内部例外を参照してください。| +|ProxyAuthenticationLevelMismatch|HTTP プロキシ認証の資格情報で、対象サーバーの認証要件より厳しい要件である相互認証が指定されています。| +|ProxyImpersonationLevelMismatch|HTTP プロキシ認証の資格情報で、対象サーバーの認証制限より厳しい制限である偽装レベルの制限が指定されています。| +|SecureChannelFailure|指定された証明機関との間で、SSL\/TLS のセキュリティで保護されたチャネルを確立できませんでした。| +|TrustFailure|指定された証明機関との間の SSL\/TLS のセキュリティで保護されたチャネルで、信頼関係を確立できません。| +|UseDefaultWebProxyCantBeUsedWithExplicitProxyAddress|HttpTransportBinding 要素では、明示的なプロキシ アドレスだけでなく、UseDefaultWebProxy\=true も指定できません。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-internal-duplex-transport-channels.md b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-internal-duplex-transport-channels.md new file mode 100644 index 00000000000..7c1f81a8e84 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-internal-duplex-transport-channels.md @@ -0,0 +1,26 @@ +--- +title: "コア通信 : InternalDuplex トランスポート チャネル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e1004536-afe0-4e06-b3ed-b4ee08bb0189 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# コア通信 : InternalDuplex トランスポート チャネル +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] 内部二重トランスポート チャネルによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|MessageMustHaveViaOrToSetForSendingOnServerSideCompositeDuplexChannels|サーバー側の複合二重チャネルでメッセージを送信するには、メッセージの 'Via' プロパティまたは 'To' ヘッダーが設定されている必要があります。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-named-pipe-transport-channels.md b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-named-pipe-transport-channels.md new file mode 100644 index 00000000000..1f97648fc28 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-named-pipe-transport-channels.md @@ -0,0 +1,30 @@ +--- +title: "コア通信 : 名前付きパイプ トランスポート チャネル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 14ab8f84-ab3e-47cd-8ac5-dd68af940175 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# コア通信 : 名前付きパイプ トランスポート チャネル +ここでは、名前付きパイプ トランスポート チャネルによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|PipeCantCloseWithPendingWrite|パイプへの書き込み処理中はパイプを閉じることはできません。| +|PipeReadPending|このパイプでは読み込み操作を実行中です。| +|PipeShutdownReadError|パイプ 'シャットダウン' インジケーターの読み取り操作に失敗しました。| +|PipeShutdownWriteError|パイプ 'シャットダウン' インジケーターの書き込み操作に失敗しました。| +|PipeWritePending|このパイプでは書き込み操作を実行中です。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-tcp-transport-channels.md b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-tcp-transport-channels.md new file mode 100644 index 00000000000..6f71640b043 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-tcp-transport-channels.md @@ -0,0 +1,26 @@ +--- +title: "コア通信 : TCP トランスポート チャネル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d5cd057f-faec-4e21-ae0e-18bbc22bcfb1 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# コア通信 : TCP トランスポート チャネル +ここでは、TCP トランスポート チャネル によって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|SocketCloseReadTimeout|指定したソケットのリモート エンドポイントは、割り当てられたタイムアウト時間内に終了要求に応答しませんでした。 この原因としては、リモート エンドポイントが Receive 操作から EOF 信号 \(NULL\) を受信した後に Close を呼び出していない可能性があります。 この操作に割り当てられた時間は、より長いタイムアウト時間の一部であった可能性があります。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-transport-framework.md b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-transport-framework.md new file mode 100644 index 00000000000..ae9771a1cc7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-transport-framework.md @@ -0,0 +1,26 @@ +--- +title: "コア通信 : トランスポート フレームワーク | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9fae1728-1377-4cc1-8fc3-d5d9a23546bd +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# コア通信 : トランスポート フレームワーク +ここでは、トランスポート フレームワークによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|Hosting\_TransportBindingNotFound|指定したアドレスに一致するプロトコル バインディングがありません。プロトコル バインディングは、インターネット インフォメーション サービスまたは Windows プロセス アクティブ化サービスの構成でサイト レベルで構成されます。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-utilities.md b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-utilities.md new file mode 100644 index 00000000000..57241bc47a9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-utilities.md @@ -0,0 +1,26 @@ +--- +title: "コア通信 : ユーティリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b9e4f873-e26a-4ed1-9766-3541082dc999 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# コア通信 : ユーティリティ +ここでは、コア通信ユーティリティによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|AsyncObjectAlreadyEnded|End メソッドはこの非同期の結果、オブジェクトで既に呼び出されています。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-webhost-support.md b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-webhost-support.md new file mode 100644 index 00000000000..859d6f4295c --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/core-communications-webhost-support.md @@ -0,0 +1,30 @@ +--- +title: "コア通信 : Webhost サポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 034c501f-96f9-4ef7-9602-3ac21788fd3e +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# コア通信 : Webhost サポート +ここでは、Webhost サポートによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|Hosting\_CompatibilityServiceNotHosted|このサービスでは、ASP.NET 互換性が必要です。また、IIS でホストする必要もあります。Web.config で ASP.NET 互換性を有効にして IIS でサービスをホストするか、または AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode プロパティを Required 以外の値に設定します。| +|Hosting\_ListenerNotFoundForActivationInRecycling|指定されたアドレスをアクティブにリッスンしているチャネルはありません。アプリケーションがリサイクルされる場合、サービスは閉じられます。| +|Hosting\_NonHTTPInCompatibilityMode|ASP.NET 互換性でサポートされるプロトコルは HTTP と HTTPS のみです。指定されたエンドポイントを削除するか、アプリケーションに対して ASP.NET 互換性を無効にします。| +|Hosting\_ProcessNotExecutingUnderHostedContext|指定されたホスト プロセスは、現在のホスト環境内で呼び出すことができません。この API では、アプリケーションの呼び出しがインターネット インフォメーション サービスまたは Windows プロセス アクティブ化サービス内で干すとされている必要があります。| +|Hosting\_ServiceCompatibilityRequire|このサービスは ASP.NET 互換性を必要とするため、アクティブにできません。このアプリケーションに対して、ASP.NET 互換性が有効になっていません。Web.config ファイルで ASP.NET 互換性を有効にするか、AspNetCompatibilityRequirementsAttribute.AspNetCompatibilit を設定します。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/hosting-exceptions.md b/docs/framework/wcf/diagnostics/exceptions-reference/hosting-exceptions.md new file mode 100644 index 00000000000..d1f0be4f38e --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/hosting-exceptions.md @@ -0,0 +1,27 @@ +--- +title: "ホスティング例外 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ad9e14f8-fa17-4d59-b365-fe0e7ec17c98 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# ホスティング例外 +ここでは、ホスティングによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|Hosting\_AddressIsAbsoluteUri|完全 URI は許可されていません。完全 URI は、ServiceHostingEnvironment.EnsureServiceAvailable API に対しては許可されていません。対応するサービスの仮想パスを使用してください。| +|Hosting\_BuildProviderCouldNotCreateType|指定した CLR 型をサービスのコンパイル中に読み込むことができません。この型が、アプリケーションの \\\\App\_Code ディレクトリに配置されているソース ファイルで定義されているか、アプリケーションの \\\\bin ディレクトリに配置されているコンパイル済みアセンブリ内、もしくはグローバル アセンブリ キャッシュにインストールされているアセンブリ内にあるか確認してください。型名では、大文字と小文字が区別されます。\\\\App\_Code、\\\\bin などのディレクトリは、アプリケーションのルート ディレクトリに配置する必要があります。\\\\App\_Code ディレクトリと \\\\bin ディレクトリは、サブディレクトリで入れ子にはできません。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/identitymodel-exceptions.md b/docs/framework/wcf/diagnostics/exceptions-reference/identitymodel-exceptions.md new file mode 100644 index 00000000000..77010f57375 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/identitymodel-exceptions.md @@ -0,0 +1,305 @@ +--- +title: "IdentityModel 例外 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4ef34497-8ff5-4621-b773-7731cc721231 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# IdentityModel 例外 +ここでは、IdentityModel によって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|現在の文字列| +|--------------|------------| +|ValueMustBeOf2Types|この引数の値は、この 2 つの型のいずれかである必要があります。| +|SAMLSubjectNameIdentifierRequiresNameValue|SamlNameIdentifier に対して指定された 'Name' は、NULL や長さ 0 であってはいけません。| +|TraceCodeIssuanceTokenProviderEndSecurityNegotiation|IssuanceTokenProvider はセキュリティ ネゴシエーションを完了しました。| +|TraceCodeSecurityNewServerSessionKeyIssued|新しいセキュリティのセッション キーがサーバーによって発行されました。| +|SAMLAttributeMissingNameAttributeOnRead|読み取り中の SamlAttribute の 'Name' が指定されていないか、長さが 0 です。| +|UnknownICryptoType|ICrypto 実装はサポートされていません。| +|TraceCodeSecurityTokenProviderClosed|セキュリティ トークン プロバイダーは閉じられました。| +|SAMLUnableToLoadAdvice|\ 要素を読み込むことができませんでした。| +|SAMLAuthenticationStatementMissingAuthenticationMethodOnRead|SamlAuthenticationStatement の読み取り中の 'AuthenticationMethod' 属性は指定されていないか、長さが 0 です。| +|UnsupportedTransformAlgorithm|サポートされない変換または標準化アルゴリズムです。| +|SAMLAudienceRestrictionShouldHaveOneAudience|SamlAudienceRestrictionCondition には、少なくとも 1 つの Audience \(URI\) が含まれている必要があります。| +|SAMLEvidenceShouldHaveOneAssertion|SamlEvidence は、ID または参照によって少なくとも 1 つの SamlAssertion を参照している必要があります。| +|SAMLAudienceRestrictionInvalidAudienceValueOnRead|読み取り中の SamlAudienceRestrictionCondition に 'Audience' 要素の値がありません。| +|X509ChainBuildFail|指定された X.509 証明書のチェーンを構築できませんでした。使用された証明書には、検証できない信頼チェーンが含まれています。証明書を交換するか、certificateValidationMode を変更してください。| +|XDCannotFindValueInDictionaryString|指定された値 ID が辞書の文字列で見つかりません。| +|TraceCodeImportSecurityChannelBindingEntry|セキュリティの ImportChannelBinding を開始しています。| +|PrivateKeyExchangeNotSupported|秘密キーは、交換 KeySpec をサポートしていません。| +|TokenProviderUnableToGetToken|指定されたトークン プロバイダーはセキュリティ トークンを提供できませんでした。| +|SAMLEntityCannotBeNullOrEmpty|指定された SamlAssertion エンティティは NULL や空にはできません。| +|SAMLAssertionRequireOneStatement|SamlAssertion には少なくとも 1 つのステートメントが必要です。作成する SamlAssertion に少なくとも 1 つの SamlStatement を追加済みであることを確認してください。| +|AESInvalidInputBlockSize|入力サイズは指定されたバイトの倍数である必要があります。| +|AESCryptAcquireContextFailed|CSP コンテキストを取得できませんでした。| +|SAMLAssertionRequireOneStatementOnRead|読み取り中の SamlAssertion に SamlStatement がありませんでした。SamlAssertion には 1 つ以上の SamlStatement が含まれている必要があります。| +|TraceCodeSecuritySessionClosedFaultReceived|クライアントのセキュリティ セッションでサーバーからセッション終了済みのフォールトを受信しました。| +|TraceCodeIssuanceTokenProviderRedirectApplied|IssuanceTokenProvider によってリダイレクト ヘッダーが適用されました。| +|TraceCodeSecuritySessionClosedFaultSendFailure|セキュリティ セッション終了済みのフォールトをクライアントに送信中にエラーが発生しました。| +|ValueMustBeZero|この引数の値は 0 でなければなりません。| +|SAMLUnableToResolveSignatureKey|SamlAssertion 署名で見つかった SecurityKeyIdentifier を解決できません。指定された発行者の SamlAssertion 署名を検証できません。| +|X509IsNotInTrustedStore|指定された X.509 証明書は信頼されたユーザーのストアにありません。| +|SAMLElementNotRecognized|指定された要素はサポートされていません。| +|SAMLAuthorizationDecisionStatementMissingResourceAttributeOnRead|読み取り中の SamlAuthorizationDecisionStatement の 'Resource' 属性は指定されていないか、長さが 0 です。| +|SamlTokenMissingSignature|SamlAssertion は署名されていません。SamlAssertions に署名するには、SigningCredentials を設定します。| +|ExpectedElementMissing|指定された名前空間を持つ予期された要素がありません。| +|NoKeyIdentifierClauseFound|指定された型の句が SecurityKeyIdentifier で見つかりませんでした。| +|MissingPrivateKey|X.509 証明書に秘密キーがありません。| +|UnexpectedEOFFromReader|XML リーダーからの予期しない EOF です。| +|UnsupportedKeyDerivationAlgorithm|指定されたキー派生アルゴリズムはサポートされていません。| +|TokenDoesNotSupportKeyIdentifierClauseCreation|指定されたトークンは、指定されたキー識別句の作成をサポートしていません。| +|LastMessageNumberExceeded|シーケンス番号プロトコル違反が検出されました。| +|SymmetricKeyLengthTooShort|指定された対称キーの長さが短すぎます。| +|SAMLAuthorityBindingMissingAuthorityKindOnRead|読み取り中の SamlAuthorityBinding に、指定されていないか長さが 0 の 'AuthorityKind' がありました。これは許可されていません。| +|XmlTokenBufferIsEmpty|XmlTokenBuffer が空です。| +|InvalidXmlQualifiedName|Xml 修飾名が必要ですが、無効な名前が見つかりました。| +|SAMLAuthorityKindMissingName|SamlAuthorityBinding の 'AuthorityKind' を表す XmlQualifiedName は、NULL や長さ 0 であってはいけません。| +|AESCryptEncryptFailed|指定されたデータを暗号化できませんでした。| +|AuthorizationContextCreated|指定された ID を持つ承認コンテキストが作成されます。| +|SamlSerializerUnableToReadSecurityKeyIdentifier|SamlSerializer には、SecurityKeyIdentifier を読み取ることができる SecurityTokenSerializer が含まれていません。カスタム SecurityKeyIdentifier を使用している場合は、カスタムの SecurityTokenSerializer を指定する必要があります。| +|TraceCodeIssuanceTokenProviderServiceTokenCacheFull|IssuanceTokenProvider によってサービス トークン キャッシュが削減されました。| +|TraceCodeSecurityTokenProviderOpened|セキュリティ トークン プロバイダーを開きました。| +|PublicKeyNotRSA|公開キーは RSA キーではありません。| +|InvalidReaderState|指定された状態は、指定された入力リーダーに対して無効です。| +|UnableToResolveReferenceUriForSignature|署名の指定された URI を解決してダイジェストを計算できません。| +|EmptyBase64Attribute|必須の Base64 属性名と名前空間に対して空の値が見つかりました。| +|SAMLSubjectRequiresConfirmationMethodWhenConfirmationDataOrKeyInfoIsSpecified|SAML SubjectConfirmation では、Confirmation Data または KeyInfo が指定されている場合、Confirmation メソッドを指定する必要があります。| +|SAMLAudienceRestrictionShouldHaveOneAudienceOnRead|読み取り中の SamlAudienceRestrictionCondition には 1 つ以上の 'Audience' 値が含まれている必要があります。この値は見つかりませんでした。| +|TokenProviderUnableToRenewToken|指定されたトークン プロバイダーは、セキュリティ トークンを更新できませんでした。| +|AESIVLengthNotSupported|指定されたビットの IV はサポートされていません。128 ビットの IV のみサポートされます。| +|SAMLAuthorityBindingMissingAuthorityKind|SamlAuthorityBinding には、NULL でない 'AuthorityKind' が含まれている必要があります。| +|TraceCodeSecuritySessionDemuxFailure|受信メッセージは既存のセキュリティ セッションの一部ではありません。| +|TokenRenewalNotSupported|指定されたトークン プロバイダーは、トークンの更新をサポートしていません。| +|AtLeastOneReferenceRequired|署名には参照が少なくとも 1 つ必要です。| +|SAMLSignatureAlreadyRead|この署名は既に SAML アサーションに読み込まれています。| +|AlgorithmAndPrivateKeyMisMatch|指定されたアルゴリズムと秘密キーが適合しません。| +|EmptyTransformChainNotSupported|空の変換チェーンはサポートされていません。| +|SspiWrapperEncryptDecryptAssert1|SSPIWrapper::EncryptDecryptHelper|'offset' は範囲外です。| +|SspiWrapperEncryptDecryptAssert2|SSPIWrapper::EncryptDecryptHelper|'size' は範囲外です。SecurityTokenManagerCannotCreateAuthenticatorForRequirement\=セキュリティ トークン マネージャーは、指定された要件に対応するトークン認証システムを作成できません。| +|UnableToCreateKeyedHashAlgorithm|指定された署名アルゴリズムの指定された値から KeyedHashAlgorithm を作成できません。| +|SAMLUnableToLoadAssertion|\ 要素を読み込むことができませんでした。| +|X509FindValueMismatchMulti|指定された X509FindType では、引数 findValue の型が 2 つの値のいずれかである必要があります。引数 findValue は別の型です。| +|TraceCodeSecurityIdentityDeterminationSuccess|EndpointAddress の ID が特定されました。| +|UndefinedUseOfPrefixAtElement|この要素で使用される指定されたプレフィックスに定義済みの名前空間がありません。| +|TraceCodeSecuritySessionResponderOperationFailure|サーバーでセキュリティ セッションの操作に失敗しました。| +|CannotFindCert|StoreName、StoreLocation、FindType、FindValue という検索条件で検索しましたが、X.509 証明書が見つかりませんでした。| +|X509InvalidUsageTime|指定された X.509 証明書の使用時間が無効です。使用時間が、必要な NotBefore の時刻から NotAfter の時刻までの範囲内にありません。| +|TraceCodeSecurityIdentityDeterminationFailure|EndpointAddress の ID を特定できません。| +|AsyncObjectAlreadyEnded|End メソッドはこの非同期の結果、オブジェクトで既に呼び出されています。| +|ExternalDictionaryDoesNotContainAllRequiredStrings|この外部辞書には、必要な文字列の一部の定義しか含まれていません。指定された文字列はリモート辞書で使用できません。| +|TraceCodeSecuritySessionKeyRenewalFaultReceived|クライアントのセキュリティ セッションはサーバーからキーの更新エラーを受信しました。| +|SAMLActionNameRequired|SamlAction を表す文字列は、NULL や長さ 0 にはできません。| +|SignatureVerificationFailed|署名の確認に失敗しました。| +|TraceCodeSecurityContextTokenCacheFull|SecurityContextSecurityToken のキャッシュがいっぱいです。| +|SAMLAssertionMissingMajorVersionAttributeOnRead|読み取り中の SamlAssertion の MajorVersion が指定されていないか、長さが 0 です。| +|SamlAttributeClaimRightShouldBePossessProperty|この SamlAttribute コンストラクターでは、クレームの権限に System.IdentityModel.Claims.Rights.PossessProperty という値が割り当てられていることが要求されます。| +|AuthorizationPolicyEvaluated|指定された ID を持つポリシーが評価されます。| +|SAMLUnableToLoadCondtions|\ 要素を読み込めませんでした。| +|AESKeyLengthNotSupported|指定されたビット キーはサポートされていません。128、192、および 256 ビット キーのみサポートされます。| +|UserNameCannotBeEmpty|ユーザー名を空にすることはできません。| +|AlgorithmAndPublicKeyMisMatch|指定されたアルゴリズムと公開キーが適合しません。| +|SAMLUnableToLoadCondtion|\ 要素を読み込めませんでした。| +|SamlAssertionMissingSigningCredentials|SigningCredentials が SamlAssertion に設定されていません。SamlAssertions には署名が必要です。続行するには、有効な SigningCredentials を SamlAssertion に設定してください。| +|SspiPayloadNotEncrypted|バイナリ データは SSPI セキュリティ コンテキストを使用して暗号化されていませんでした。| +|SAMLAuthorizationDecisionShouldHaveOneActionOnRead|読み取り中の SamlAuthorizationDecisionStatement には SamlAction がありません。| +|TraceCodeSecurityBindingSecureOutgoingMessageFailure|セキュリティ プロトコルでは送信メッセージをセキュリティで保護することはできません。| +|UndefinedUseOfPrefixAtAttribute|指定された属性で使用される指定されたプレフィックスに定義済みの名前空間がありません。| +|NoInputIsSetForCanonicalization|正規化された出力の書き込みを行うための入力が設定されていません。| +|TraceCodeSecurityPendingServerSessionAdded|保留中のセキュリティ セッションがサーバーに追加されました。| +|AsyncCallbackException|AsyncCallback が例外を返しました。| +|PrivateKeyNotRSA|秘密キーは RSA キーではありません。| +|TraceCodeSecurityClientSessionKeyRenewed|クライアントのセキュリティ セッションはセッション キーを更新しました。| +|SAMLAuthorizationDecisionStatementMissingDecisionAttributeOnRead|読み取り中の SamlAuthorizationDecisionStatement の 'Decision' は指定されていないか、長さが 0 です。| +|SAMLAttributeNameAttributeRequired|SamlAttribute に対して指定された 'Name' は、NULL や長さ 0 であってはいけません。| +|SamlSerializerRequiresExternalSerializers|SamlSerializer は、トークン内に存在する SecurityKeyIdentifier をシリアル化するために SecurityTokenSerializer を必要とします。| +|UnableToResolveKeyReference|トークン リゾルバーは、指定されたセキュリティ キーの参照を解決できません。| +|UnsupportedKeyWrapAlgorithm|指定されたキー ラップ アルゴリズムはサポートされていません。| +|SAMLAssertionMissingIssuerAttributeOnRead|読み取り中の SamlAssertion の 'Issuer' が指定されていないか、長さが 0 です。| +|TraceCodeIssuanceTokenProviderUsingCachedToken|IssuanceTokenProvider はキャッシュされたサービス トークンを使用しました。| +|AESCryptGetKeyParamFailed|指定されたキー パラメーターを取得できませんでした。| +|InvalidNamespaceForEmptyPrefix|この名前空間は空のプレフィックスに対して無効です。| +|AESCipherModeNotSupported|指定された暗号モードはサポートされていません。CBC のみがサポートされます。| +|ArgumentCannotBeEmptyString|引数には空でない文字列を指定する必要があります。| +|SAMLAssertionMissingMinorVersionAttributeOnRead|読み取り中の SamlAssertion の MinorVersion が指定されていないか、長さが 0 です。| +|SpecifiedStringNotAvailableInDictionary|指定された文字列は現在の辞書のエントリではありません。| +|KerberosApReqInvalidOrOutOfMemory|AP\-REQ が無効であるか、またはシステムに十分なメモリがありません。| +|FailLogonUser|指定されたユーザーの LogonUser エラーです。このユーザーが有効な Windows アカウントを持っていることを確認してください。| +|ValueMustBeNonNegative|この引数の値は、負ではない値である必要があります。| +|X509ValidationFail|指定された X.509 証明書の検証に失敗しました。| +|TraceCodeSecuritySessionRequestorOperationSuccess|セキュリティ セッションの操作がクライアントで正常に完了しました。| +|SAMLActionNameRequiredOnRead|SamlAction について読み取られる文字列が指定されていないか、長さが 0 です。| +|KerberosMultilegsNotSupported|ID が UPN として指定されています。ユーザー アカウントで実行されているサービスを認証するには Kerberos マルチレッグ認証が必要ですが、これはサポートされていません。| +|SAMLAssertionIdRequired|SamlAssertion の 'assertionId' は、NULL や空であってはいけません。| +|InvalidOperationForWriterState|指定された操作は、XmlWriter の指定された状態では無効です。| +|CannotValidateSecurityTokenType|指定されたセキュリティ トークン認証システムは、指定された型のトークンを検証できません。| +|X509FindValueMismatch|指定された X509FindType では、引数 findValue の型が指定された値である必要があります。引数 findValue は別の型です。| +|TraceCodeSecurityClientSessionCloseSent|クライアントのセキュリティ セッションが Close メッセージを送信しました。| +|SuiteDoesNotAcceptAlgorithm|指定されたアルゴリズムは、指定されたアルゴリズム スイートによる指定された操作には使用できません。| +|TraceCodeSecuritySessionRequestorOperationFailure|クライアントのセキュリティ セッションの操作が失敗しました。| +|SAMLUnableToLoadStatement|SamlStatement を読み込むことができませんでした。| +|InnerReaderMustBeAtElement|内部リーダーは要素に配置されている必要があります。| +|UnableToCreateTokenReference|セキュリティ トークン参照を作成できません。| +|TraceCodeSecurityBindingIncomingMessageVerified|セキュリティ プロトコルは受信メッセージを確認しました。| +|ObjectIsReadOnly|このオブジェクトは読み取り専用です。| +|TraceCodeSecurityClientSessionPreviousKeyDiscarded|クライアントのセキュリティ セッションは直前のセッション キーを破棄しました。| +|SAMLTokenTimeInvalid|SamlToken の有効期限が切れました。現在の時刻は、トークンの Effective および Expiration 時刻の範囲外です。| +|TraceCodeSecurityIdentityVerificationSuccess|ID の検査が成功しました。| +|SigningTokenHasNoKeys|指定された署名トークンにはキーがありません。| +|TraceCodeSecurityIdentityVerificationFailure|ID の検査が失敗しました。| +|AESCryptImportKeyFailed|キー マテリアルをインポートできませんでした。| +|FailInitializeSecurityContext|InitializeSecurityContent エラーです。サービス プリンシパル名が正しいことを確認してください。| +|TraceCodeStreamSecurityUpgradeAccepted|ストリームのセキュリティ更新を正常に受信しました。| +|SAMLAuthorityBindingRequiresLocation|SamlAuthorityBinding で指定された 'Location' 属性は、NULL や長さ 0 であってはいけません。| +|PublicKeyNotDSA|公開キーは DSA キーではありません。| +|ImpersonationLevelNotSupported|Kerberos を使用した認証モードは、指定された偽装レベルをサポートしていません。有効な ID または偽装レベルを指定してください。| +|RequiredTargetNotSigned|指定された ID を持つ要素には署名が必要ですが、署名されていませんでした。| +|SAMLAuthenticationStatementMissingAuthenticationInstanceOnRead|SamlAuthenticationStatement の読み取り中の 'AuthenticationInstant' 属性は指定されていないか、長さが 0 です。| +|SAMLEvidenceShouldHaveOneAssertionOnRead|読み取り中の SamlEvidence には、SamlAssertion への参照または組み込みの SamlAssertion のどちらもありませんでした。| +|LengthOfArrayToConvertMustGreaterThanZero|整数に変換する配列の長さは、0 を超える値である必要があります。| +|InvalidAsyncResult|AsyncResult が無効です。| +|TraceCodeIssuanceTokenProviderRemovedCachedToken|IssuanceTokenProvider は期限切れのサービス トークンを削除しました。| +|IncorrectUserNameFormat|ユーザー名の形式が無効です。ユーザー名の形式は、'ユーザー名' または 'ドメイン\\\\ユーザー名' である必要があります。| +|TraceCodeExportSecurityChannelBindingEntry|セキュリティの ExportChannelBinding を開始しています。| +|UnsupportedInputTypeForTransform|指定された入力型は変換用にサポートされていません。| +|CannotFindDocumentRoot|ドキュメントのルートが見つかりません。| +|XmlBufferQuotaExceeded|XML コンテンツのバッファリングに必要なサイズがバッファー クォータを超過しました。| +|TraceCodeSecuritySessionClosedResponseSendFailure|セキュリティ セッションの Close 応答をクライアントに送信中、エラーが発生しました。| +|UnableToResolveReferenceInSamlSignature|AssertionID を持つ SAML 署名の指定された参照を解決できません。| +|SAMLSubjectRequiresNameIdentifierOrConfirmationMethod|SamlSubject では、'NameIdentifier' または 'ConfirmationMethod' を指定する必要があります。どちらも指定されていません。| +|SAMLAttributeMissingNamespaceAttributeOnRead|読み取り中の SamlAttribute の 'Namespace' が指定されていないか長さが 0 です。| +|SAMLSubjectConfirmationClauseMissingConfirmationMethodOnRead|読み取り中の SamlSubjectConfirmation で 'ConfirmationMethod' が見つかりません。| +|SecurityTokenRequirementHasInvalidTypeForProperty|トークンの要件に、指定されたプロパティの予期されていない型が含まれています。予期されたプロパティの型は別の値です。| +|TraceCodeNegotiationTokenProviderAttached|NegotiationTokenProvider が割り当てられました。| +|TraceCodeSpnegoClientNegotiationCompleted|SpnegoTokenProvider は SSPI ネゴシエーションを完了しました。| +|SAMLUnableToLoadUnknownElement|選択された SamlSerializer は、この要素を逆シリアル化できません。カスタム要素のシリアル化を解除するためのカスタム SamlSerializer を登録してください。| +|CreateSequenceRefused|作成シーケンス要求が RM 宛先により拒否されました。| +|TraceCodeSecuritySessionRedirectApplied|クライアントのセキュリティ セッションがリダイレクトされました。| +|SecurityTokenRequirementDoesNotContainProperty|トークンの要件に、指定されたプロパティが含まれていません。| +|SAMLAttributeValueCannotBeNull|SamlAttribute で見つかった attributeValues の 1 つが NULL 値でした。SamlAttribute 作成時にリストが NULL でないことを確認してください。| +|ValueMustBeGreaterThanZero|この引数の値は、正の値である必要があります。| +|TraceCodeNegotiationAuthenticatorAttached|NegotiationTokenAuthenticator が割り当てられました。| +|ValueMustBePositive|| +|SAMLAuthorizationDecisionShouldHaveOneAction|SamlAuthorizationDecisionStatement には、少なくとも 1 つの SamlAction が含まれている必要があります。| +|TraceCodeSecurityTokenAuthenticatorClosed|セキュリティ トークンの認証システムは閉じられました。| +|TraceCodeSecurityAuditWrittenSuccess|セキュリティ監査ログが正常に書き込まれました。| +|PrivateKeyNotDSA|秘密キーは DSA キーではありません。| +|MessageNumberRollover|このシーケンスの最大シーケンス番号を超えました。| +|AESPaddingModeNotSupported|指定された埋め込みモードはサポートされていません。PKCS7 および ISO10126 のみサポートされます。| +|SAMLSubjectRequiresNameIdentifierOrConfirmationMethodOnRead|読み取り中の SamlSubject について必須の 'NameIdentifier' 要素および 'ConfirmationMethod' 要素が見つかりません。| +|TraceCodeSecurityAuditWrittenFailure|セキュリティの監査ログへの書き込み時にエラーが発生しました。| +|UnsupportedCryptoAlgorithm|指定された暗号アルゴリズムは、このコンテキストではサポートされていません。| +|SigningTokenHasNoKeysSupportingTheAlgorithmSuite|署名トークンに、指定されたアルゴリズム スイートをサポートするキーがありません。| +|SAMLNameIdentifierMissingIdentifierValueOnRead|読み取り中の SamlNameIdentifier の 'Identifier' 文字列がありません。| +|SAMLSubjectStatementRequiresSubject|SAML Subject Statement では、SAML サブジェクトを指定する必要があります。| +|TraceCodeSslClientCertMissing|リモートの SSL クライアントは必要な資格情報を提供できませんでした。| +|SAMLTokenVersionNotSupported|指定されたメジャー バージョンとマイナー バージョンはサポートされていません。| +|TraceCodeConfigurationIsReadOnly|構成は読み取り専用です。| +|TraceCodeSecuritySessionRenewFaultSendFailure|セキュリティ セッション キーの更新エラーをクライアントに送信中にエラーが発生しました。| +|TraceCodeSecurityInactiveSessionFaulted|アクティブでないセキュリティ セッションはサーバー側でエラーとなりました。| +|SAMLUnableToLoadAttribute|SamlAttribute を読み込むことができませんでした。| +|Psha1KeyLengthInvalid|指定された PSHA1 キーの長さが無効です。| +|KeyIdentifierCannotCreateKey|この SecurityKeyIdentifier には、キーを作成できる句がありません。| +|X509IsInUntrustedStore|指定された X.509 証明書は、信頼されていない証明書ストアにあります。| +|UnexpectedXmlChildNode|指定された型の指定された XML 子ノードは、指定された要素に対して予期されていません。| +|TokenDoesNotMeetKeySizeRequirements|指定されたアルゴリズム スイートのキー サイズ要件が、指定されたトークンによって満たされていません。| +|TraceCodeSecuritySessionRequestorStartOperation|クライアントでセキュリティ セッションの操作が開始されました。| +|InvalidHexString|16 進数文字列の形式が無効です。| +|SamlAttributeClaimResourceShouldBeAString|この SamlAttribute コンストラクターでは、クレームのリソースが 'string' 型であることが要求されます。| +|SamlSigningTokenNotFound|SamlAssertion は署名されていますが、SamlAssertion に署名したトークンが見つかりません。SecurityTokenResolver に、SamlAssertion に署名したトークンが含まれていることを確認してください。| +|TraceCodeSecuritySpnToSidMappingFailure|ServicePrincipalName を SecurityIdentifier にマップできませんでした。| +|UnableToCreateSignatureFormatterFromAsymmetricCrypto|指定された非対称暗号から、指定されたアルゴリズムの署名フォーマッタを作成できません。| +|TraceCodeSecurityServerSessionClosedFaultSent|サーバーのセキュリティ セッションによりセッション終了済みのフォールトがクライアントに送信されました。| +|UnableToFindPrefix|指定された要素で明示的に使用される指定されたプレフィックスのプレフィックスが見つかりません。| +|TraceCodeSecurityTokenAuthenticatorOpened|セキュリティ トークンの認証システムを開きました。| +|RequiredAttributeMissing|指定された属性は指定された要素で必要です。| +|LocalIdCannotBeEmpty|localId を空にすることはできません。有効な 'localId' を指定してください。| +|ValueMustBeInRange|この引数の値は、指定された範囲内である必要があります。| +|TraceCodeIssuanceTokenProviderBeginSecurityNegotiation|IssuanceTokenProvider が新しいセキュリティ ネゴシエーションを開始しました。| +|InvalidNtMapping|指定された X.509 証明書を Windows アカウントにマップできません。UPN サブジェクト代替名が必要です。| +|AESCryptSetKeyParamFailed|指定されたキー パラメーターを設定できませんでした。| +|TraceCodeSecuritySessionClosedResponseReceived|クライアントのセキュリティ セッションはサーバーから終了応答を受信しました。| +|UnableToCreateSignatureDeformatterFromAsymmetricCrypto|指定された非対称暗号から、指定されたアルゴリズムの署名デフォーマッタを作成できません。| +|TraceCodeIdentityModelAsyncCallbackThrewException|非同期コールバックで例外がスローされました。| +|LengthMustBeGreaterThanZero|この引数の長さは、0 を超える値である必要があります。| +|FoundMultipleCerts|StoreName、StoreLocation、FindType、FindValue という検索条件で検索しましたが、複数の X.509 証明書が見つかりました。より具体的な検索条件を指定してください。| +|AtLeastOneTransformRequired|Transforms 要素には変換が少なくとも 1 つ必要です。| +|SAMLTokenNotSerialized|SamlAssertion を XML にシリアル化できませんでした。詳細については、内部例外を参照してください。| +|TraceCodeSecurityBindingOutgoingMessageSecured|セキュリティ プロトコルは送信メッセージをセキュリティで保護しました。| +|KeyIdentifierClauseDoesNotSupportKeyCreation|この SecurityKeyIdentifierClause は、キーの作成をサポートしていません。| +|UnableToResolveTokenReference|トークン リゾルバーは、指定されたトークン参照を解決できません。| +|UnsupportedEncryptionAlgorithm|指定された暗号化アルゴリズムはサポートされていません。| +|SamlSerializerUnableToWriteSecurityKeyIdentifier|SamlSerializer には、指定された SecurityKeyIdentifier をシリアル化できる SecurityTokenSerializer が含まれていません。カスタム SecurityKeyIdentifier を使用している場合は、カスタムの SecurityTokenSerializer を指定する必要があります。| +|SAMLAttributeShouldHaveOneValue|属性値が見つかりませんでした。SamlAttribute 属性には、少なくとも 1 つの属性値が必要です。| +|TraceCodeSecurityBindingVerifyIncomingMessageFailure|セキュリティ プロトコルにより受信メッセージを検証できません。| +|SamlSigningTokenMissing|SamlSecurityTokenAuthenticator に渡された SamlAssertion に署名トークンがありません。| +|NoPrivateKeyAvailable|秘密キーがありません。| +|ValueMustBeOne|この引数の値は 1 でなければなりません。| +|TraceCodeSecurityPendingServerSessionRemoved|保留中のセキュリティ セッションがサーバーによって有効化されました。| +|TraceCodeImportSecurityChannelBindingExit|セキュリティの ImportChannelBinding を終了しました。| +|X509CertStoreLocationNotValid|StoreLocation は、LocalMachine または CurrentUser である必要があります。| +|SettingdMayBeModifiedOnlyWhenTheWriterIsInStartState|ライターの設定は、ライターが Start 状態にある場合のみ変更できます。| +|ArgumentInvalidCertificate|証明書が無効です。| +|DigestVerificationFailedForReference|指定された参照のダイジェスト認証が失敗しました。| +|SAMLAuthorityBindingRequiresBinding|SamlAuthorityBinding で指定された 'Binding' 属性は、NULL や長さ 0 であってはいけません。| +|AESInsufficientOutputBuffer|出力バッファーは指定されたバイトを超える値である必要があります。| +|SAMLAuthorityBindingMissingBindingOnRead|読み取り中の SamlAuthorityBinding の 'Binding' 属性は指定されていないか、長さが 0 です。| +|SAMLAuthorityBindingInvalidAuthorityKind|読み取られる SamlAuthorityBinding に無効な AuthorityKind が指定されています。AuthorityKind の形式は QName である必要があります。| +|ProvidedNetworkCredentialsForKerberosHasInvalidUserName|Kerberos トークンに指定された NetworkCredentials に有効な UserName がありません。| +|SSPIPackageNotSupported|指定された SSPI パッケージはサポートされていません。| +|TokenCancellationNotSupported|指定されたトークン プロバイダーは、トークンのキャンセルをサポートしていません。| +|UnboundPrefixInQName|バインドされていないプレフィックスが、指定された修飾名で使用されています。| +|SAMLAuthorizationDecisionResourceRequired|SamlAuthorizationDecisionStatement に指定された 'resource' は、NULL や長さ 0 であってはいけません。| +|TraceCodeSecurityNegotiationProcessingFailure|サービス セキュリティ ネゴシエーション処理が失敗しました。| +|SAMLAssertionIssuerRequired|SamlAssertion に対して指定された 'Issuer' は、NULL や空であってはいけません。| +|UnableToCreateHashAlgorithmFromAsymmetricCrypto|指定された非対称暗号から、指定されたアルゴリズムの HashAlgorithm を作成できません。| +|SamlUnableToExtractSubjectKey|SamlSubject で見つかった SecurityKeyIdentifier を SecurityToken に解決できません。SecurityTokenResolver には、SecurityKeyIdentifier の解決対象となる SecurityToken が含まれている必要があります。| +|ChildNodeTypeMissing|指定された XML 要素には、指定された型の子がありません。| +|TraceCodeSecurityPendingServerSessionClosed|保留中のセキュリティ セッションはサーバーによって閉じられました。| +|TraceCodeSecuritySessionCloseResponseSent|サーバーのセキュリティ セッションはクライアントに Close 応答を送信しました。| +|TraceCodeSecurityIdentityHostNameNormalizationFailure|エンドポイント アドレスの HostName 部分は標準化できません。| +|FailAcceptSecurityContext|AcceptSecurityContext エラーです。| +|EmptyXmlElementError|指定された要素を空にすることはできません。| +|PrefixNotDefinedForNamespace|指定された名前空間のプレフィックスはこのコンテキストで定義されていないため、宣言できません。| +|SAMLAuthorizationDecisionHasMoreThanOneEvidence|読み取られる SamlAuthorizationDecisionStatement には複数の Evidence が含まれています。これは許可されていません。| +|SamlTokenAuthenticatorCanOnlyProcessSamlTokens|SamlSecurityTokenAuthenticator は SamlSecurityToken のみを処理できます。指定された SecurityTokenType が受信されました。| +|SAMLAttributeStatementMissingAttributeOnRead|読み取り中の SamlAttributeStatement に 'SamlAttribute' 要素が含まれていません。これは許可されていません。| +|CouldNotFindNamespaceForPrefix|指定されたプレフィックスの名前空間が見つかりません。| +|TraceCodeExportSecurityChannelBindingExit|セキュリティの ExportChannelBinding を終了しました。| +|AESCryptDecryptFailed|指定されたデータを復号化できませんでした。| +|SAMLAttributeNamespaceAttributeRequired|SamlAttribute に対して指定された 'Namespace' は、NULL や長さ 0 であってはいけません。| +|TraceCodeSpnegoServiceNegotiationCompleted|SpnegoTokenAuthenticator は SSPI ネゴシエーションを完了しました。| +|TraceCodeSecurityServerSessionRenewalFaultSent|サーバーのセキュリティ セッションはクライアントにキーの更新エラーを送信しました。| +|AlgorithmMismatchForTransform|変換用のアルゴリズムで不整合が発生しました。| +|UserNameAuthenticationFailed|指定された機構を使用したユーザー名\/パスワードの認証に失敗しました。ユーザーは認証されていません。| +|SamlInvalidSigningToken|SamlAssertion は、プロトコルに従って検証されていないトークンを使用して署名されています。X.509 証明書を使用している場合は、検証セマンティクスを調べてください。| +|TraceCodeSecurityServerSessionKeyUpdated|セキュリティ セッション キーはサーバーによって更新されました。| +|TraceCodeSecurityServerSessionCloseReceived|サーバーのセキュリティ セッションはクライアントから Close メッセージを受信しました。| +|SAMLAuthenticationStatementMissingSubject|SamlAuthenticationStatement に、必要な SamlSubjectStatement がありません。| +|UnexpectedEndOfFile|予期しない EOF エラーです。| +|UnsupportedAlgorithmForCryptoOperation|指定されたアルゴリズムは、指定された操作でサポートされていません。| +|XmlLangAttributeMissing|必要な xml:lang 属性がありません。| +|TraceCodeSecurityImpersonationSuccess|サーバー側でセキュリティの偽装が成功しました。| +|SAMLAuthorityBindingMissingLocationOnRead|読み取り中の SamlAuthorityBinding の 'Location' 属性は指定されていないか、長さが 0 です。| +|SAMLAttributeStatementMissingSubjectOnRead|SamlAttributeStatement の 'SamlSubject' 要素が指定されていません。| +|SAMLAuthorizationDecisionStatementMissingSubjectOnRead|読み取り中の SamlAuthorizationDecisionStatement の 'SamlSubject' 要素が指定されていません。| +|SAMLBadSchema|SamlAssertion の読み取り中に、この指定された要素がスキーマに準拠していないことがわかりました。| +|SAMLAssertionIDIsInvalid|SamlAssertion の指定された 'assertionId' は、文字または '\_' で始まる必要があります。| +|TraceCodeSecurityActiveServerSessionRemoved|アクティブなセキュリティ セッションはサーバー側で削除されました。| +|UnableToCreateKeyedHashAlgorithmFromSymmetricCrypto|指定された対称暗号から、指定されたアルゴリズムの keyedHashAlgorithm を作成できません。| +|SAMLAuthenticationStatementMissingAuthenticationMethod|SamlAuthenticationStatement に対して指定された 'AuthenticationMethod' は、NULL や長さ 0 であってはいけません。| +|TraceCodeSecurityImpersonationFailure|サーバー側でセキュリティの偽装が失敗しました。| +|Default|\(既定値\)| +|UnsupportedNodeTypeInReader|指定された名前の指定されたノード型はサポートされていません。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/index.md b/docs/framework/wcf/diagnostics/exceptions-reference/index.md new file mode 100644 index 00000000000..9b33bf70b6e --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/index.md @@ -0,0 +1,66 @@ +--- +title: "例外リファレンス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: adc19950-5f79-4045-8403-bf6310118ee3 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 例外リファレンス +ここでは、次のエリアで [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] によって生成されるすべての例外を示します。 + + [IdentityModel](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/identitymodel-exceptions.md) + + [COM\+ 統合](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/com-integration.md) + + [構成](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/configuration.md) + + [コア通信 : チャネル フレームワーク](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/core-communications-channel-framework.md) + + [コア通信 : 接続フレームワーク](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/core-communications-connection-framework.md) + + [コア通信 : HTTP\/HTTPS トランスポート チャネル](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/core-communications-http-https-transport-channels.md) + + [コア通信 : InternalDuplex トランスポート チャネル](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/core-communications-internal-duplex-transport-channels.md) + + [コア通信 : 名前付きパイプ トランスポート チャネル](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/core-communications-named-pipe-transport-channels.md) + + [コア通信 : TCP トランスポート チャネル](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/core-communications-tcp-transport-channels.md) + + [コア通信 : トランスポート フレームワーク](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/core-communications-transport-framework.md) + + [コア通信 : ユーティリティ](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/core-communications-utilities.md) + + [コア通信 : Webhost サポート](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/core-communications-webhost-support.md) + + [トランザクション](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/transaction-exceptions.md) + + [ホスティング](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/hosting-exceptions.md) + + [ピア チャネル](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/peer-channel.md) + + [MSMQ 統合のトランスポート](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/msmq-integration-transport.md) + + [MSMQ トランスポート](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/msmq-transport.md) + + [信頼できるメッセージ機能](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/reliable-messaging.md) + + [セキュリティ例外](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/security-exceptions.md) + + [サービス フレームワーク](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/service-framework.md) + + [サービス フレームワーク データ](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/service-framework-data.md) + + [トランザクション フォーマッタ](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/transaction-formatter.md) + + [ツール](../../../../../docs/framework/wcf/diagnostics/exceptions-reference/tools.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/msmq-integration-transport.md b/docs/framework/wcf/diagnostics/exceptions-reference/msmq-integration-transport.md new file mode 100644 index 00000000000..1c186456ca2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/msmq-integration-transport.md @@ -0,0 +1,33 @@ +--- +title: "MSMQ 統合のトランスポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2bf9893a-fbd1-41fc-b6de-a41a44279936 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# MSMQ 統合のトランスポート +ここでは、MSMQ 統合トランスポートによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|MessageSizeMustBeInIntegerRange|このファクトリはメッセージをバッファーするため、メッセージ サイズは整数値の範囲内である必要があります。| +|MsmqByteArrayBodyExpected|指定されたシリアル化形式と MSMQ メッセージの間で不整合が検出されました。メッセージを送受信できません。シリアル化形式 ByteArray では、MSMQ メッセージの本文が byte\[\] の種類でなければなりません。| +|MsmqCannotDeserializeActiveXMessage|ActiveX のシリアル化中に、エラーが発生しました。メッセージを送受信できません。本文に指定されたバリアント型は、実際の MSMQ メッセージ本文と一致しません。| +|MsmqCannotUseBodyTypeWithActiveXSerialization|メッセージのプロパティが整合していません。メッセージを送受信できません。シリアル化の形式として ActiveX が使用されている場合は、BodyType メッセージ プロパティを指定できません。| +|MsmqInvalidServiceOperationForMsmqIntegrationBinding|MsmqIntegrationBinding の検証が失敗しました。サービス エンドポイントを開始できません。指定したバインディングは、指定したコントラクトの指定したサービス操作に対してメソッド署名をサポートしていません。MsmqIntegrationBinding を使用するよう、サービス操作を修正してください。| +|MsmqInvalidTypeDeserialization|シリアル化の形式を認識できないため、ActiveX のシリアル化が失敗しました。メッセージを送受信できません。| +|MsmqInvalidTypeSerialization|バリアント型を認識できません。ActiveX のシリアル化が失敗しました。メッセージを送受信できません。指定されたバリアント型はサポートされていません。| +|MsmqStreamBodyExpected|シリアル化形式と本文のコンテンツの間で不整合があります。メッセージを送受信できません。ストリーム シリアル化モードを使用して送受信できるのは、ストリーム型の本文に限られます。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/msmq-transport.md b/docs/framework/wcf/diagnostics/exceptions-reference/msmq-transport.md new file mode 100644 index 00000000000..478bd740903 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/msmq-transport.md @@ -0,0 +1,49 @@ +--- +title: "MSMQ トランスポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3f29a2fe-24df-4614-b64c-b0c084fb7003 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# MSMQ トランスポート +ここでは、MSMQ トランスポートによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|MsmqActiveDirectoryRequiresNativeTransfer|メッセージのバインディングを検証できませんでした。クライアントはメッセージを送信できません。バインディングのプロパティの競合が原因でこのエラーが発生しました。UseActiveDirectory は true に設定されており、QueueTransferProtocol は Native に設定されています。競合を解決するには、どちらかのプロパティを適切な値に変更してください。| +|MsmqAuthNoneRequiresProtectionNone|サービスのバインディングを検証できませんでした。サービスのエンドポイントまたはクライアントを開始できません。バインディングのプロパティの競合が原因でこのエラーが発生しました。MsmqAuthenticationMode が None に設定されている場合、MsmqProtectionLevel を None に設定する必要があります。競合を解決するには、どちらかのプロパティを適切な値に変更してください。| +|MsmqCustomRequiresPerAddDLQ|メッセージのバインディングを検証できませんでした。クライアントはメッセージを送信できません。DeadLetterQueue は Custom に設定されていますが、CustomDeadLetterQueue が指定されていません。CustomDeadLetterQueue プロパティで、各アプリケーションの配信不能メッセージ キューの URI を指定してください。| +|MsmqDeserializationError|XML メッセージの逆シリアル化時にエラーが発生しました。メッセージを受信できないため、破棄しました。| +|MsmqDLQNotWriteable|クライアントのバインディングを検証できませんでした。クライアントはメッセージを送信できません。指定された配信不能メッセージ キューが存在していないか書き込み不能です。このキューが存在しており、このキューに書き込むための適切な権限が割り当てられいることを確認してください。| +|MsmqGetPrivateComputerInformationError|バージョン チェックが、指定されたエラーで失敗しました。MSMQ のバージョンを検出できません。キューにあるチャネルでのすべての操作は失敗します。MSMQ がインストールされており、使用可能であることを確認してください。| +|MsmqNoAssurancesForVolatile|サービスのバインディングを検証できませんでした。サービスのエンドポイントまたはクライアントを開始できません。ExactlyOnce プロパティは true に設定されており、Durable プロパティは false に設定されていますが、これはサポートされていません。競合を解決するには、どちらかのプロパティを適切な値に変更してください。| +|MsmqNonTransactionalQueueNeeded|バインドと MSMQ キューの構成間で不整合が検出されました。サービス エンドポイントを開始できません。ExactlyOnce プロパティは false に設定されており、メッセージが読み取られるキューはトランザクション キューです。このエラーを修正するには、ExactlyOnce プロパティを true に設定するか、非トランザクション バインドを作成してください。| +|MsmqOpenError|指定されたキュー を開く際にエラーが発生しました。キューからメッセージを送受信できません。MSMQ がインストールされ、実行されていることを確認します。また、要求されたアクセス モードおよび認証を使用してキューを開いて利用できることも確認してください。| +|MsmqPathLookupError|指定されたキュー パス名を指定の形式名に変換中にエラーが発生しました。キュー内のチャネルに対するすべての操作が失敗しました。キュー アドレスが有効であることを確認してください。Active Directory 統合が有効になった状態で MSMQ がインストールされている必要があり、MSMQ にアクセスできる必要があります。| +|MsmqPerAppDLQRequiresCustom|クライアントのバインドの検証が失敗しました。クライアントはメッセージを送信できません。CustomDeadLetterQueue プロパティが設定されていますが、DeadLetterQueue プロパティが Custom に設定されていません。DeadLetterQueue プロパティを Custom に設定してください。| +|MsmqPerAppDLQRequiresExactlyOnce|クライアントのバインディングを検証できませんでした。クライアントはメッセージを送信できません。バインド プロパティ内の競合が原因です。カスタムの配信不能メッセージ キューを使用するには、ExactlyOnce を true に設定して競合を解決する必要があります。| +|MsmqPerAppDLQRequiresMsmq4|バインドと MSMQ の構成間で不整合が検出されました。クライアントはメッセージを送信できません。カスタムの配信不能メッセージ キューを使用するには、MSMQ Version 4.0 以降が必要です。MSMQ Version 4.0 以降がない場合は、DeadLetterQueue プロパティを System または None に設定してください。| +|MsmqReceiveError|キューからのメッセージを受信中にエラーが発生しました。MSMQ がインストールされ、実行されていることを確認します。また、このキューからの受信が可能であることを確認してください。| +|MsmqSameTransactionExpected|このセッションでトランザクション エラーが発生しました。セッション チャネルは途中終了されました。このセッション内のメッセージは送信も受信もできません。キュー内の 1 つのセッションを複数のトランザクションに関連付けることはできません。セッション内のすべてのメッセージが単一のトランザクションを使用して送信または受信されていることを確認してください。| +|MsmqSendError|指定されたキューへの送信中にエラーが発生しました。MSMQ がインストールされて実行されていることを確認してください。ローカル キューに送信している場合は、このキューが存在しており、必要なアクセス モードと権限が設定されていることを確認してください。| +|MsmqTimeSpanTooLarge|メッセージの Time to Live \(TTL\) が長すぎます。メッセージを送信できません。メッセージの Time To Live は Int32 の最大値を超えることはできません。| +|MsmqTokenProviderNeededForCertificates|X509SecurityTokenProvider が見つかりません。メッセージを送信できません。証明書認証モードには、X.509 トークン プロバイダーが必要です。インストールされた証明書でセキュリティ トークン プロバイダーが使用できることを確認します。| +|MsmqTransactedDLQExpected|バインドと MSMQ の構成間で不整合が発生しました。メッセージを送信できません。バインドで指定されたカスタムの配信不能メッセージ キューは、トランザクション キューである必要があります。カスタムの配信不能メッセージ キューのアドレスが正しいこと、およびこのキューがトランザクション キューであることを確認してください。| +|MsmqTransactionalQueueNeeded|バインドと MSMQ キューの構成間で不整合が発生しました。サービス エンドポイントを開始できません。ExactlyOnce プロパティは true に設定されており、メッセージが読み取られるキューはトランザクション キューではありません。このエラーを修正するには、ExactlyOnce プロパティを false に設定するか、このバインディング用のトランザクション キューを作成してください。| +|MsmqTransactionCurrentRequired|セッションでメッセージを送信するためにトランザクションを使用できません。キュー内のセッションにあるメッセージを送信するにはトランザクションが必要です。セッションでメッセージを送信するためにトランザクション範囲が指定されていることを確認してください。| +|MsmqTransactionRequired|トランザクションが必要ですが、使用できません。メッセージが送信または受信できません。メッセージを送信または受信するためのトランザクション範囲が指定されていることを確認してください。| +|MsmqUnsupportedSerializationFormat|逆シリアル化エラーが発生しました。メッセージを受信できないため、破棄しました。指定されたシリアル化形式はサポートされていません。| +|MsmqWrongPrivateQueueSyntax|URL が無効です。キューの URL に '$' 文字を使用することはできません。net.msmq:\/\/machine\/private\/queueName の構文を使用して、プライベート キューをアドレス指定してください。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/peer-channel.md b/docs/framework/wcf/diagnostics/exceptions-reference/peer-channel.md new file mode 100644 index 00000000000..8a7f09bce7d --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/peer-channel.md @@ -0,0 +1,30 @@ +--- +title: "ピア チャネル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e06a2efb-8e70-4299-8b0f-bfb37efb074b +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# ピア チャネル +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] ピア チャネルによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|InsufficientCredentials|この資格情報では、要求された操作を行うことはできません。 指定した操作に有効な値を設定してください。| +|InvalidResolverMode|指定した PeerResolverMode の値は無効です。 PeerResolveMode.Auto、Default、PNRP のいずれかを指定してください。| +|PeerNodeAborted|PeerNode は既に終了しているので開けませんでした。| +|PeerNullRegistrationInfo|登録情報として null を指定することはできません。 有効な RegistrationInfo オブジェクトを使用して Register 操作を呼び出してください。| +|PeerNullResolveInfo|参照の解決に使用する情報として `null` を指定することはできません。 有効な ResolveInfo オブジェクトを使用して Resolve 操作を呼び出してください。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/reliable-messaging.md b/docs/framework/wcf/diagnostics/exceptions-reference/reliable-messaging.md new file mode 100644 index 00000000000..6c933b147f1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/reliable-messaging.md @@ -0,0 +1,26 @@ +--- +title: "信頼できるメッセージ機能 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 46d41fdf-b1f8-4968-8e54-c896848885fa +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 信頼できるメッセージ機能 +ここでは、信頼できるメッセージ機能によって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|InvalidBufferRemaining|バッファーの残りサイズが指定値に達したというメッセージが受信されました。残りのバッファーをゼロ未満にすることはできません。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/security-exceptions.md b/docs/framework/wcf/diagnostics/exceptions-reference/security-exceptions.md new file mode 100644 index 00000000000..efe45a74a22 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/security-exceptions.md @@ -0,0 +1,165 @@ +--- +title: "セキュリティ例外 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 76d5e5cd-e4f4-404f-9a5a-ec3522494ad8 +caps.latest.revision: 6 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 6 +--- +# セキュリティ例外 +ここでは、すべてのセキュリティ例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|AnonymousLogonsAreNotAllowed|このサービスでは匿名ログオンは許可されていません。| +|AtLeastOneContractOperationRequestRequiresProtectionLevelNotSupportedByBinding|要求メッセージは保護される必要があります。これは指定されたコントラクトの操作で必要です。指定されたバインディングで保護される必要があります。| +|AtLeastOneContractOperationResponseRequiresProtectionLevelNotSupportedByBinding|応答メッセージは保護される必要があります。これは指定されたコントラクトの操作で必要です。指定されたバインディングで保護される必要があります。| +|AtMostOnePrimarySignatureInReceiveSecurityHeader|セキュリティ ヘッダーに指定できるプライマリ署名は 1 つだけです。| +|BadContextTokenFaultReason|セキュリティ コンテキスト トークンが期限切れであるか無効です。メッセージは処理されませんでした。| +|BadEncryptionState|EncryptedData または EncryptedKey は、この操作に対して無効な状態です。| +|BasicHttpMessageSecurityRequiresCertificate|BasicHttp のバインディングでは、メッセージをセキュリティで保護するために BasicHttpBinding.Security.Message.ClientCredentialType が BasicHttpMessageCredentialType.Certificate 資格情報型と等しいことが要求されています。UserName 資格情報には、Transport または TransportWithMessageCredential セキュリティを選択してください。| +|BasicTokenCannotBeWrittenWithoutEncryption|基本トークンを暗号化せずに書き込むことはできません。| +|BindingDoesNotSupportProtectionForRst|指定されたコントラクトの指定されたバインディングには SecureConversation が構成されていますが、この認証モードでは、ネゴシエーションに必要な要求\/応答ベースの整合性と機密性を実現できません。| +|BindingDoesNotSupportWindowsIdenityForImpersonation|自動的に偽装を行うには指定されたコントラクト操作に Windows ID が必要です。呼び出し元を表す Windows ID が、指定されたコントラクトの指定されたバインディングによって提供されていません。| +|CachedNegotiationStateQuotaReached|容量が指定された制限に達したため、サービスがネゴシエーションの状態をキャッシュできません。要求を再試行してください。| +|CacheQuotaReached|項目を追加できません。キャッシュの最大サイズが指定されています。| +|CannotDetermineSPNBasedOnAddress|クライアントは、SspiNegotiation\/Kerberos に使用される指定された対象アドレスの ID から、サービス プリンシパル名を特定できません。対象アドレス ID は、UPN ID \(例: acmedomain\\\\alice\) または SPN ID \(例: host\/bobs\-machine\) である必要があります。| +|CannotFindCert|StoreName、StoreLocation、FindType、FindValue という検索条件で検索しましたが、X.509 証明書が見つかりません。| +|CannotFindCertForTarget|指定された対象の StoreName、StoreLocation、FindType、FindValue という、指定された検索条件で検索しましたが、X.509 証明書が見つかりません。| +|CannotFindCorrelationStateForApplyingSecurity|応答側の応答にセキュリティを適用するために必要な相関状態が見つかりません。| +|CannotFindNegotiationState|指定されたコンテキストのネゴシエーションの状態が見つかりません。| +|CannotFindSecuritySession|指定された ID を持つセキュリティ セッションが見つかりません。| +|CannotImportProtectionLevelForContract|プロセスをインポートするポリシーが指定されたコントラクトのバインディングをインポートできません。このバインディングの保護要件は、このコントラクトについて既にインポートされたバインディングに適合していません。このバインディングを構成し直す必要があります。| +|CannotImportSupportingTokensForOperationWithoutRequestAction|セキュリティ ポリシーのインポートに失敗しました。このセキュリティ ポリシーには、操作範囲にサポート トークン要件が含まれています。コントラクトの説明では、この操作に関連付けられている要求メッセージに対するアクションが指定されていません。| +|CannotIssueRstTokenType|トークンまたは指定された型を発行できません。| +|CannotObtainIssuedTokenKeySize|発行されたトークンのキー サイズを特定できません。| +|CannotPerformImpersonationOnUsernameToken|クライアント トークンを使用した偽装はできません。指定されたコントラクトの指定されたバインディングでは、登録済みのメンバーシップ プロバイダーによるクライアント認証にユーザー名セキュリティ トークンを使用します。クライアント用に別の種類のセキュリティ トークンを使用してください。| +|CannotPerformS4UImpersonationOnPlatform|指定されたコントラクトの指定されたバインディングは、[!INCLUDE[ws2003](../../../../../includes/ws2003-md.md)] 以降のバージョンの Windows でのみ偽装をサポートします。SspiNegotiated 認証とキャンセルを有効にした SecureConversation を使用したバインディングを使用してください。| +|CannotReadKeyIdentifier|指定された名前空間を持つ指定された要素から KeyIdentifier を読み取ることができません。| +|CannotReadToken|指定された ValueType が設定された BinarySecretSecurityToken の、指定された名前空間を持つ指定された要素からトークンを読み取ることができません。この要素が有効であることが要求される場合は、指定された名前、名前空間、および値の型のトークンを使用するようにセキュリティが構成されていることを確認してください。| +|CertificateUnsupportedForHttpTransportCredentialOnly|証明書ベースのクライアント認証は TransportCredentialOnly セキュリティ モードではサポートされません。Transport セキュリティ モードを選択してください。| +|ClaimTypeCannotBeEmpty|claimType を空の文字列にすることはできません。| +|ClientCertificateNotProvided|クライアントの証明書が提供されていません。証明書は、ClientCredentials または ServiceCredentials で設定できます。| +|ClientCredentialTypeMustBeSpecifiedForMixedMode|ClientCredentialType.None は、TransportWithMessageCredential セキュリティ モードでは無効です。資格情報の種類を指定するか、別のセキュリティ モードを使用してください。| +|ConfigurationSchemaInsuffientForSecurityBindingElementInstance|この構成スキーマは、次のセキュリティ バインド要素の非標準構成を記述するには不十分です:| +|DerivedKeyTokenGenerationAndLengthTooHigh|派生キーの指定された世代と長さに問題があるため、キー派生オフセットが許可されている最大オフセットを超えています。| +|DnsIdentityCheckFailedForIncomingMessage|受信メッセージの ID 検査が失敗しました。リモート エンドポイントの予測されたドメイン ネーム システム \(DNS\) ID は既に指定されています。リモート エンドポイントから提供されたのは、指定されたドメイン ネーム システム \(DNS\) クレームでした。これが適正なリモート エンドポイントである場合は、チャネルのプロキシを作成する際に、ドメイン ネーム システム ID を EndpointAddress の ID プロパティとして指定することで問題を修正できます。| +|DnsIdentityCheckFailedForOutgoingMessage|送信メッセージの ID の確認に失敗しました。リモート エンドポイントには、指定されたドメイン ネーム システム ID が必要でした。リモート エンドポイントから提供されたのは、ドメイン ネーム システム \(DNS\) クレームでした。これが適正なリモート エンドポイントである場合は、チャネルのプロキシを作成する際に、DNS ID を EndpointAddress の ID プロパティとして明示的に指定することで問題を修正できます。| +|DuplicateIdInMessageToBeVerified|検証対象のメッセージに、指定された ID が 2 つあります。| +|EmptyBase64Attribute|必須の Base64 属性名と名前空間に対して空の値が見つかりました。| +|ExportOfBindingWithAsymmetricAndTransportSecurityNotSupported|セキュリティ ポリシーをエクスポートできませんでした。このバインディングには、AsymmetricSecurityBindingElement とセキュリティで保護されたトランスポート バインド要素の両方が指定されています。そのようなバインディングへのポリシーのエクスポートはサポートされていません。| +|ExportOfBindingWithSymmetricAndTransportSecurityNotSupported|セキュリティ ポリシーをエクスポートできませんでした。このバインディングには、SymmetricSecurityBindingElement とセキュリティで保護されたトランスポート バインド要素の両方が指定されています。そのようなバインディングへのポリシーのエクスポートはサポートされていません。| +|ExportOfBindingWithTransportSecurityBindingElementAndNoTransportSecurityNotSupported|セキュリティ ポリシーをエクスポートできませんでした。このバインディングには、TransportSecurityBindingElement が指定されていますが、ITransportTokenAssertionProvider を実装するトランスポート バインド要素がありません。そのようなバインディングへのポリシーのエクスポートはサポートされていません。バインディングに ITransportTokenAssertionProvider インターフェイスを実装するトランスポート バインド要素を設定してください。| +|FoundMultipleCerts|StoreName、StoreLocation、FindType、FindValue という検索条件で検索しましたが、複数の X.509 証明書が見つかりました。より具体的な検索条件を指定してください。| +|FoundMultipleCertsForTarget|指定された対象の StoreName、StoreLocation、FindType、FindValue という、指定された検索条件で検索したところ、複数の X.509 証明書が見つかりました。より具体的な検索条件を指定してください。| +|HeaderDecryptionNotSupportedInWsSecurityJan2004|SecurityVersion.WSSecurityJan2004 は、ヘッダーの解読をサポートしていません。SecurityVersion.WsSecurityXXX2005 以降を使用するか、トランスポート セキュリティを使用してメッセージ全体を暗号化してください。| +|IdentityCheckFailedForIncomingMessage|受信メッセージの ID 検査が失敗しました。予測される ID が対象エンドポイントに指定されています。| +|IdentityCheckFailedForOutgoingMessage|送信メッセージの ID の確認が失敗しました。予測される ID が対象エンドポイントに指定されています。| +|IncorrectSpnOrUpnSpecified|SSPI \(Security Support Provider Interface\) 認証が失敗しました。サーバーが、指定された ID を持つアカウントで実行されていない可能性があります。サーバーがサービス アカウント \(ネットワーク サービスなど\) で実行されている場合は、そのアカウントの ServicePrincipalName をサーバーの EndpointAddress で ID として指定してください。サーバーがユーザー アカウントで実行されている場合は、そのアカウントの UserPrincipalName をサーバーの EndpointAddress で ID として指定してください。| +|InvalidAttributeInSignedHeader|指定された署名済みヘッダーには指定された属性が含まれています。必要な属性が指定されています。| +|InvalidCloseResponseAction|指定された無効なアクションによってセキュリティ セッションの終了応答を受信しました。| +|InvalidQName|この QName は無効です。| +|InvalidRenewResponseAction|指定された無効なアクションによってセキュリティ セッションの更新応答を受信しました。| +|InvalidSspiNegotiation|セキュリティ サポート プロバイダー インターフェイス ネゴシエーションが失敗しました。| +|IssuerBindingNotPresentInTokenRequirement|セキュリティ トークン マネージャーでは、セキュリティで保護されたメッセージ交換を記述するトークン要件に、ブートストラップ セキュリティ バインド要素を指定する必要があります。このトークン要件は、次のように指定されています。| +|KeyLengthMustBeMultipleOfEight|対称キーについては、指定されたキーの長さが 8 の倍数ではありません。| +|LsaAuthorityNotContacted|内部 SSL エラーです \(詳細については Win32 状態コードを参照してください\)。サーバー証明書がキーの交換に対応しているかどうかを確認してください。| +|MaximumPolicyRedirectionsExceeded|再帰ポリシー フェッチ制限に達しました。フェデレーション サービス チェーン内にループがないか確認してください。| +|MessagePartSpecificationMustBeImmutable|メッセージ部分の指定は、設定する前に固定値にしておく必要があります。| +|MissingCustomCertificateValidator|X509CertificateValidationMode.Custom では、CustomCertificateValidator が必要です。CustomCertificateValidator プロパティを指定してください。| +|MissingCustomUserNamePasswordValidator|UserNamePasswordValidationMode.Custom では、CustomUserNamePasswordValidator が必要です。CustomUserNamePasswordValidator プロパティを指定してください。| +|MissingMembershipProvider|UserNamePasswordValidationMode.MembershipProvider では、MembershipProvider が必要です。MembershipProvider プロパティを指定してください。| +|NoBinaryNegoToSend|相手に送信したバイナリ ネゴシエーションはありません。| +|NoEncryptionPartsSpecified|指定されたアクションを含むメッセージに、暗号化メッセージ部分が指定されていませんでした。| +|NoKeyInfoInEncryptedItemToFindDecryptingToken|解読トークンの検出に必要な KeyInfo 値が暗号化項目で見つかりませんでした。| +|NonceLengthTooShort|指定された nonce が短すぎます。nonce の長さは少なくとも 4 バイト必要です。| +|NoOutgoingEndpointAddressAvailableForDoingIdentityCheck|送信メッセージに対する ID の確認を行うための送信 EndpointAddress がありません。| +|NoOutgoingEndpointAddressAvailableForDoingIdentityCheckOnReply|受信応答に対する ID の確認を行うための送信 EndpointAddress がありません。| +|NoPartsOfMessageMatchedPartsToSign|メッセージの中に、指定されたメッセージ部分仕様に合うものがなかったため、署名は作成されませんでした。| +|NoPrincipalSpecifiedInAuthorizationContext|承認コンテキストにカスタム プリンシパルが指定されていません。| +|NoSignatureAvailableInSecurityHeaderToDoReplayDetection|リプレイ検出に必要な nonce を提供するための署名がセキュリティ ヘッダーにありません。| +|NoSignaturePartsSpecified|指定されたアクションを含むメッセージに、署名メッセージ部分が指定されていませんでした。| +|NoSigningTokenAvailableToDoIncomingIdentityCheck|受信 ID の確認に必要な署名トークンがありません。| +|NoTimestampAvailableInSecurityHeaderToDoReplayDetection|リプレイ検出の実行に必要なタイムスタンプがセキュリティ ヘッダーにありません。| +|NoTransportTokenAssertionProvided|セキュリティ ポリシーのエクスポートが失敗しました。提供された、指定された型のトランスポート トークン アサーションは、sp:TransportBinding セキュリティ ポリシー アサーションを含むトランスポート トークン アサーションを作成していません。| +|OnlyOneOfEncryptedKeyOrSymmetricBindingCanBeSelected|共通鍵セキュリティ プロトコルには、共通鍵トークン プロバイダーと共通鍵トークン認証システム、または公開鍵トークン プロバイダーを構成できますが、両方を構成することはできません。| +|OperationCannotBeDoneOnReceiverSideSecurityHeaders|この操作は、受信側のセキュリティ ヘッダーに対しては実行できません。| +|OperationDoesNotAllowImpersonation|指定された名前と名前空間を持つコントラクトに属する指定されたサービス操作は、偽装を許可していません。| +|PolicyRequiresConfidentialityWithoutIntegrity|指定されたアクションのメッセージ セキュリティ ポリシーには、整合性が確保されない機密性が必要です。整合性を確保しない機密性はサポートされていません。| +|PrimarySignatureIsRequiredToBeEncrypted|プライマリ署名は暗号化されている必要があります。| +|PropertySettingErrorOnProtocolFactory|指定されたセキュリティ プロトコル ファクトリの必須のプロパティが設定されていないか、このプロパティに無効な値が含まれています。| +|ProtocolFactoryCouldNotCreateProtocol|このプロトコル ファクトリでプロトコルを作成できません。| +|PublicKeyNotRSA|公開キーは RSA キーではありません。| +|RequiredMessagePartNotEncrypted|指定された必須のメッセージ部分が暗号化されていませんでした。| +|RequiredMessagePartNotEncryptedNs|指定された必須のメッセージ部分が暗号化されていませんでした。| +|RequiredMessagePartNotSigned|指定された必須のメッセージ部分が署名されていませんでした。| +|RequiredMessagePartNotSignedNs|指定された必須のメッセージ部分が署名されていませんでした。| +|RequiredSecurityHeaderElementNotSigned|指定された ID を持つ指定されたセキュリティ ヘッダー要素は署名されている必要があります。| +|RequiredSecurityTokenNotEncrypted|指定された添付モードの指定されたセキュリティ トークンは暗号化されている必要があります。| +|RequiredSecurityTokenNotSigned|指定された添付モードの指定されたセキュリティ トークンは署名されている必要があります。| +|RequiredSignatureMissing|署名はセキュリティ ヘッダーに含まれている必要があります。| +|RequireNonCookieMode|指定された名前空間を持つ指定されたバインディングは、クッキー セキュリティ コンテキスト トークンを発行するように構成されていますが、COM\+ Integration サービスはクッキー セキュリティ コンテキスト トークンをサポートしていません。| +|RevertingPrivilegeFailed|指定された例外が発生したため、元に戻す処理に失敗しました。| +|RSTRAuthenticatorIncorrect|RequestSecurityTokenResponse の CombinedHash が正しくありません。| +|SecureConversationCancelNotAllowedFaultReason|セキュリティで保護されたメッセージ交換の取り消しは、バインディングによって許可されていません。| +|SecureConversationDriverVersionDoesNotSupportSession|構成された SecureConversation バージョンはセッションをサポートしていません。WSSecureConversationFeb2005 以上を使用してください。| +|SecureConversationRequiredByReliableSession|セキュリティで保護された通信を使用せずに、信頼できるセッションを確立することはできません。セキュリティで保護されたメッセージ交換を有効にしてください。| +|SecurityAuditFailToLoadDll|指定されたダイナミック リンク ライブラリ \(dll\) を読み込むことができませんでした。| +|SecurityAuditNotSupportedOnChannelFactory|SecurityAuditBehavior は、チャネル ファクトリではサポートされていません。| +|SecurityAuditPlatformNotSupported|現在のプラットフォームでは、セキュリティ ログへの監査メッセージの書き込みはサポートされていません。監査メッセージはアプリケーション ログに書き込む必要があります。| +|SecurityBindingElementCannotBeExpressedInConfig|エンドポイントのセキュリティ ポリシーがインポートされました。このセキュリティ ポリシーには、Windows Communication Foundation の構成では表現できない要件が含まれています。生成された構成ファイルで、必須の SecurityBindingElement パラメーターに関するコメントを参照してください。コードを使用して正しいバインド要素を作成してください。構成ファイル内のバインディング構成はセキュリティで保護されていません。| +|SecurityBindingSupportsOneWayOnly|指定されたコントラクトに対する指定されたバインディングの SecurityBinding は、OneWay 操作のみをサポートしています。| +|SecurityContextDoesNotAllowImpersonation|指定されたアクションを含む要求メッセージの UltimateReceiver ロールの SecurityContext が Windows ID に割り当てられていないため、偽装を開始できません。| +|SecurityListenerClosing|リスナーは、閉じている途中のため、セキュリティで保護された新しいメッセージ交換を受け入れていません。| +|SecurityListenerClosingFaultReason|サーバーは、閉じている途中のため、現在はセキュリティで保護された新しいメッセージ交換を受け入れていません。後で再試行してください。| +|SecurityProtocolFactoryShouldBeSetBeforeThisOperation|この操作が実行される前に、セキュリティ プロトコル ファクトリが設定されている必要があります。| +|SecuritySessionAbortedFaultReason|セキュリティ セッションが中止されました。これは、セッションでメッセージが長時間受信されなかったことが原因である可能性があります。| +|SecuritySessionKeyIsStale|セッション キーを使用してアプリケーション メッセージをセキュリティで保護するには、セッション キーを更新する必要があります。| +|SecuritySessionLimitReached|セキュリティ セッションを作成できません。後でやり直してください。| +|SecuritySessionNotPending|指定された ID を持つ保留中のセキュリティ セッションはありません。| +|SecurityTokenParametersHasIncompatibleInclusionMode|指定されたバインディングは、互換性のないセキュリティ トークンの指定されたインクルード モードが設定されたセキュリティ トークン パラメーターを使用して構成されています。別のセキュリティ トークンのインクルード モードを指定してください。| +|SecurityVersionDoesNotSupportEncryptedKeyBinding|指定されたコントラクトの指定されたバインディングは、EncryptedKeys への添付されない参照をサポートしていない、互換性のないセキュリティ バージョンで構成されています。バインディングのセキュリティ バージョンとして、指定された値以降の値を使用してください。| +|SecurityVersionDoesNotSupportSignatureConfirmation|指定された SecurityVersion は署名確認をサポートしていません。これより後の SecurityVersion を使用してください。| +|SecurityVersionDoesNotSupportThumbprintX509KeyIdentifierClause|指定されたコントラクトの指定されたバインディングは、証明書の拇印値を使用した X.509 トークンへの外部参照をサポートしていないセキュリティ バージョンで構成されています。バインディングのセキュリティ バージョンとして、指定された値以降を使用してください。| +|SenderSideSupportingTokensMustSpecifySecurityTokenParameters|セキュリティ トークン パラメーターは、各メッセージのサポート トークンを使用して指定する必要があります。| +|ServerCertificateNotProvided|受信側が証明書を提供しませんでした。この証明書は TLS プロトコルによって要求されています。送信側と受信側の両方とも、各自の証明書にアクセスする必要があります。| +|SignatureConfirmationNotSupported|構成されている SecurityVersion は署名確認をサポートしていません。WSSecurityXXX2005 以上を使用してください。| +|SignatureConfirmationRequiresRequestReply|署名確認を行えるようにするには、プロトコル ファクトリで Request\/Reply セキュリティをサポートする必要があります。| +|SignatureNotExpected|このメッセージに署名は必要ありません。| +|SigningTokenHasNoKeys|指定された署名トークンにはキーがありません。このセキュリティ トークンは、暗号化操作を実行するためにセキュリティ トークンを必要とするコンテキストで使用されます。ただし、このトークンには暗号化キーが含まれていません。このトークンの型が暗号化操作をサポートしていないか、特定のトークン インスタンスに暗号化キーが含まれていません。構成を確認し、暗号化を無効とするトークンの型 \(UserNameSecurityToken など\) が、暗号化操作を必要とするコンテキスト \(保証サポート トークンなど\) で指定されていないことを確認してください。| +|SpnegoImpersonationLevelCannotBeSetToNone|SSPI は、'None' という偽装レベルをサポートしていません。Identification、Impersonation または Delegation のいずれかのレベルを指定してください。| +|SslClientCertMustHavePrivateKey|指定された証明書には秘密キーが必要です。プロセスには秘密キーへのアクセス権が必要です。| +|SslServerCertMustDoKeyExchange|指定された証明書には、キー交換に対応した秘密キーが必要です。プロセスには秘密キーへのアクセス権が必要です。| +|StandardsManagerCannotWriteObject|このトークン シリアライザーは、指定されたオブジェクトをシリアル化できません。これがカスタム型である場合は、カスタム シリアライザーを提供する必要があります。| +|TimeStampHasCreationAheadOfExpiry|このセキュリティ タイムスタンプは、作成時刻が有効期限以降であるため、無効です。| +|TimeStampHasCreationTimeInFuture|このセキュリティ タイムスタンプは、作成時刻が未来の日付であるため、無効です。現在の時刻と許可される時刻のずれが指定されています。| +|TimeStampHasExpiryTimeInPast|このセキュリティ タイムスタンプは、有効期限が過去の日付であるため、古くなっています。現在の時刻と許可される時刻のずれが指定されています。| +|TimeStampWasCreatedTooLongAgo|このセキュリティ タイムスタンプは、作成時刻がかなり以前であるため、古くなっています。現在の時刻、タイムスタンプの最大有効期限、および許可される時刻のずれが指定されています。| +|TokenProviderCannotGetTokensForTarget|トークン プロバイダーは指定された対象のトークンを取得できません。| +|TooManyIssuedSecurityTokenParameters|統合されたセキュリティ チェーンの各要素には複数の IssuedSecurityTokenParameters があります。InfoCard システムは、要素ごとに 1 つの IssuedSecurityTokenParameters しかサポートしていません。| +|TransportDoesNotProtectMessage|指定されたコントラクトの指定されたバインディングは、トランスポート レベルの整合性と機密性を必要とする認証モードで構成されています。ただし、トランスポートによって整合性と機密性を実現することはできません。| +|TrustApr2004DoesNotSupportCertainIssuedTokens|WSTrustApr2004 では、X.509 証明書や EncryptedKeys の発行がサポートされません。WsTrustFeb2005 以上を使用してください。| +|TrustDriverVersionDoesNotSupportSession|構成されたバージョンの Trust では、セッションがサポートされません。WSTrustFeb2005 またはそれ以降を使用してください。| +|UnableToCreateICryptoFromTokenForSignatureVerification|署名確認用の指定されたトークンから ICrypto インターフェイスを作成できません。| +|UnableToCreateSymmetricAlgorithmFromToken|トークンから指定された対称アルゴリズムを作成できません。| +|UnableToDeriveKeyFromKeyInfoClause|指定された KeyInfo 句は指定されたトークンに解決されましたが、このトークンには派生に使用できる対称キーが含まれていません。| +|UnableToFindTokenAuthenticator|指定されたトークンの型に対応するトークン認証システムが見つかりません。現在のセキュリティ設定により、この型のトークンは承認できません。| +|UnableToLoadCertificateIdentity|構成で指定された X.509 証明書の ID を読み込めません。| +|UnexpectedEmptyElementExpectingClaim|指定された名前空間の指定された要素が空であり、有効な ID クレームが指定されていません。| +|UnknownEncodingInBinarySecurityToken|バイナリ セキュリティ トークンの読み取り中に不明なエンコードが検出されました。| +|UnsecuredMessageFaultReceived|セキュリティで保護されていないか正しくセキュリティで保護されていないフォールトを相手側から受信しました。フォールト コードおよび詳細については、内部の FaultException を参照してください。| +|UnsupportedPasswordType|指定されたユーザー名トークンには、サポートされていないパスワードの種類が含まれています。| +|UnsupportedSecureConversationBootstrapProtectionRequirements|セキュリティ ポリシーをインポートできません。セキュリティで保護されたメッセージ交換のブートストラップ バインディングの保護要件はサポートされていません。セキュリティで保護されたメッセージ交換のブートストラップの保護要件は、要求および応答ともに署名され暗号化されている必要があります。| +|UnsupportedSecurityPolicyAssertion|指定されたセキュリティ ポリシーのインポート中に、サポートされていないセキュリティ ポリシー アサーションが検出されました。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/service-framework-data.md b/docs/framework/wcf/diagnostics/exceptions-reference/service-framework-data.md new file mode 100644 index 00000000000..8458d42fca9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/service-framework-data.md @@ -0,0 +1,51 @@ +--- +title: "サービス フレームワーク データ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2a2c8ddc-4e82-4e7f-a79f-97085c469517 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# サービス フレームワーク データ +ここでは、サービス フレームワーク データによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|AddressingExtensionInBadNS|指定した名前空間の指定した要素が無効です。これは、指定した要素が重複する要素であること、または、拡張要素はアドレス名前空間内に存在できないため、この要素が有効な拡張ではないことを意味します。| +|BinaryEncoderSessionInvalid|前のメッセージのデコード中にエラーが発生したために、バイナリ エンコーダーのセッションが無効です。| +|CannotDetectAddressingVersion|WS\-Addressing のバージョンを検出できません。EndpointAddress が要素で開始していません。| +|CouldNotFindNamespaceForPrefix|指定したプレフィックスは、スコープ内に名前空間バインディングがありません。| +|EncoderBadContentType|contentType を処理できません。| +|EncoderEnvelopeVersionMismatch|指定した受信メッセージのエンベロープのバージョンが、指定したエンコーダーのバージョンと一致しません。バインドに構成されているバージョンが、予期されるメッセージと同じであることを確認してください。| +|EncoderMessageVersionMismatch|指定した送信メッセージのメッセージ バージョンが、指定したエンコーダーのバージョンと一致しません。バインドに構成されているバージョンが、メッセージと同じであることを確認してください。| +|ExtraContentIsPresentInFaultDetail|fault detail 要素に追加の XML \(Extensible Markup Language\) コンテンツがあります。1 つの要素のみが許可されています。| +|FilterBadTableType|フィルター用に作成された IMessageFilterTable を、MessageFilterTable または MessageFilterTable のサブクラスにすることはできません。| +|FilterTableInvalidForLookup|MessageFilterTable の状態が破損しています。要求された検索を実行できません。| +|MandatoryHeaderNotUnderstood|要求された 1 つ以上の SOAP \(Simple Object Access Protocol\) ヘッダー ブロックが認識されませんでした。| +|MessageBodyIsStream|メッセージ本文がストリームです。| +|MessageBodyIsUnknown|メッセージ本文の形式が不明です。| +|MessageBodyReaderInvalidReadState|メッセージ本文のリーダーの指定した ReadState を利用できません。| +|MessageTextEncodingNotSupported|テキスト メッセージ形式に使用されている、指定したテキスト エンコードはサポートされていません。| +|MissingMessageID|要求メッセージに MessageID ヘッダーがありません。このヘッダーは応答を相関付けるために必要です。| +|MultipleMessageHeaders|指定した名前と名前空間を持つヘッダーが複数あります。| +|MultipleMessageHeadersWithActor|指定した名前、名前空間、およびロールを持つヘッダーが複数あります。| +|MultipleRelatesToHeaders|指定したリレーションシップを持つ RelatesTo ヘッダーが複数あります。このヘッダーは、1 つのリレーションシップにつき 1 つしか許可されていません。| +|QueryFunctionTypeNotSupported|IXsltContextFunction の指定した戻り値の型はサポートされていません。| +|QueryIteratorOutOfScope|XPathNodeIterator は無効にされました。IXsltContextFunctions の引数として渡された XPathNodeIterators は、関数内でのみ有効です。これらは、後で使用するためにキャッシュされることも、関数の結果として返されることもありません。| +|QueryVariableNull|IXsltContextVariable メソッドは、Null を返すことができません。| +|QueryVariableTypeNotSupported|指定した IXsltContextVariable の派生型はサポートされていません。| +|ReceiveShutdownReturnedMessage|チャネルを閉じているときに、指定したアクションを持つ予期しない入力メッセージを受信しました。チャネルは、追加の入力メッセージを受信する可能性がない場合にのみ閉じる必要があります。| +|XmlBufferInInvalidState|内部エラーが発生しました。XML バッファーの状態が原因で、操作を実行できません。| +|XmlBufferQuotaExceeded|XML \(Extensible Markup Language\) コンテンツのバッファリングに必要なサイズがバッファー クォータを超過しました。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/service-framework-metadata.md b/docs/framework/wcf/diagnostics/exceptions-reference/service-framework-metadata.md new file mode 100644 index 00000000000..d55e46c5467 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/service-framework-metadata.md @@ -0,0 +1,41 @@ +--- +title: "サービス フレームワークのメタデータ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 76afc73a-0770-4084-93f3-6701a757911e +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# サービス フレームワークのメタデータ +ここでは、サービス フレームワーク メタデータによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|AsyncEndCalledOnWrongChannel|非同期 End が間違ったチャネルで呼び出されました。| +|AsyncEndCalledWithAnIAsyncResult|非同期 End が別の Begin メソッドから IAsyncResult を指定して呼び出されました。| +|AttemptedToGetContractTypeForButThatTypeIs1|指定された対象のコントラクトの型の取得を試みましたが、この型は ServiceContract ではありません。また、ServiceContract を継承しているわけでもありません。| +|CannotHaveTwoOperationsWithTheSameName3|同じ名前の 2 つの操作を同一のコントラクトに含めることはできません。指定された型の指定されたメソッドは、このルールに違反しています。いずれかの操作の名前を変更するには、メソッド名を変更するか、OperationContractAttribute の Name プロパティを使用します。| +|CannotInheritTwoOperationsWithTheSameName3|同じ名前を持つ 2 つの異なる操作を継承することはできません。指定されたコントラクトの指定された操作は、このルールに違反しています。いずれかの操作の名前を変更するには、メソッド名を変更するか、OperationContractAttribute の Name プロパティを使用します。| +|CantCreateChannelWithManualAddressing|要求\/応答が必要なコントラクト、および双方向の通信のみをサポートする手動によるアドレス指定が必要なバインドのチャネルを作成することができません。| +|DuplicateBehavior1|値をコレクションに追加できません。コレクションには、指定された同じ型の項目が既に含まれています。このコレクションは、各型のインスタンスを 1 つだけサポートします。| +|InAContractInheritanceHierarchyIfParentHasCallbackChildMustToo|指定された基本サービス コントラクトは指定されたコールバック コントラクトを持つため、指定された派生サービス コントラクトも、指定された型または派生型をコールバック コントラクトとして指定する必要があります。| +|InvalidAsyncBeginMethodSignatureForMethod2|指定された ServiceContract 型の指定されたメソッドの非同期 Begin メソッドの署名が無効です。Begin メソッドは、AsyncCallback およびオブジェクトを最後の 2 つの引数として受け取って、IAsyncResult を返す必要があります。| +|InvalidAsyncEndMethodSignatureForMethod2|指定された ServiceContract 型の指定されたメソッドの非同期 End メソッドの署名が無効です。End メソッドは、IAsyncResult を最後の引数として受け取る必要があります。| +|MessagePropertiesArraySize0|渡された配列には、このコレクションに含まれるすべてのプロパティを保持するだけの容量がありません。| +|OneWayAndFaultsIncompatible2|指定された型の指定されたメソッドでは、IsOneWay\=true が設定されており、1 つ以上の FaultContractAttributes が宣言されています。一方向のメソッドでは FaultContractAttributes を宣言できません。IsOneWay を false に変更するか、FaultContractAttribute を削除してください。| +|UnsupportedWSDLOnlyOneMessage|サポートされていない Web サービス記述言語。エラー メッセージには、1 つのメッセージ部のみがサポートされています。このエラー メッセージは、複数のメッセージ部を参照しています。WSDL ファイルへの編集アクセス権がある場合は、余分なメッセージ部を削除してエラー メッセージが 1 つのメッセージ部のみを参照するようにすることで問題を修正できます。| +|UnsupportedWSDLTheFault|サポートされていない Web サービス記述言語。エラー メッセージ部は 1 つの要素だけを参照する必要があります。このエラー メッセージは要素を参照していません。この WSDL ドキュメントへの編集アクセス権がある場合は、'element' 属性を使用してスキーマ要素を参照することでこの問題を修正できます。| +|WsdlImportErrorDependencyDetail|指定された他の値が依存する指定された対象のインポート中にエラーが発生しました。Xpath も指定されています。| +|XsdMissingRequiredAttribute1|指定された必須の属性がありません。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/service-framework.md b/docs/framework/wcf/diagnostics/exceptions-reference/service-framework.md new file mode 100644 index 00000000000..58c3ab35ab6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/service-framework.md @@ -0,0 +1,171 @@ +--- +title: "サービス フレームワーク | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 75f60b87-f80e-4377-ba7c-8e6becaa2b28 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# サービス フレームワーク +ここでは、サービス フレームワーク データによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|ABindingInstanceHasAlreadyBeenAssociatedTo1|バインディング インスタンスは、指定されたリッスン URI に既に関連付けられています。2 つのエンドポイントが同じ ListenUniform Resource Indicator を共有する場合、同じバインディング中のオブジェクト インスタンスを共有する必要があります。2 つの競合するエンドポイントが AddServiceEndpoint\(\) 呼び出しで指定されているか、AddServiceEndpoint\(\) および構成ファイルの両方に指定されています。| +|AChannelServiceEndpointIsNull0|チャネルまたはサービスのエンドポイントが NULL です。| +|AChannelServiceEndpointSContractSNameIsNull0|チャネルまたはサービスのエンドポイントのコントラクト名が NULL または空です。| +|AChannelServiceEndpointSContractSNamespace0|チャネルまたはサービスのエンドポイントの名前空間が NULL です。| +|BaseAddressCannotHaveFragment|ベース アドレスに URI フラグメントを含めることはできません。| +|BaseAddressCannotHaveQuery|ベース アドレスに URI クエリ文字列を含めることはできません。| +|BaseAddressCannotHaveUserInfo|ベース アドレスに URI ユーザー情報セクションを含めることはできません。| +|BaseAddressDuplicateScheme|このコレクションには、指定されたスキームを使用するアドレスが既に含まれています。このコレクションでは、スキームごとに 1 つのアドレスしか許可されていません。| +|BaseAddressMustBeAbsolute|ベース アドレスとして使用できる絶対 URI は 1 つのみです。| +|BindingDoesnTSupportAnyChannelTypes1|指定されたバインディングは、どのチャネルの種類の作成もサポートしていません。カスタム バインディング内のバインド要素が適切にスタックされていないか、スタックの順序が間違っています。スタックの一番下にはトランスポートが必要です。推奨されるバインド要素の順序は、TransactionFlow、ReliableSession、Security、CompositeDuplex、OneWay、StreamSecurity、MessageEncoding、Transport です。| +|BindingDoesnTSupportDuplexButContractRequires1|コントラクトには Duplex が必要です。指定されたバインディングはこれをサポートしていないか、サポートするように正しく構成されていません。| +|BindingDoesnTSupportOneWayButContractRequires1|コントラクトには OneWay が必要です。指定されたバインディングはこれをサポートしていないか、サポートするように正しく構成されていません。| +|BindingDoesnTSupportRequestReplyButContract1|コントラクトには Request\/Reply が必要です。指定されたバインディングはこれをサポートしていないか、サポートするように正しく構成されていません。| +|BindingDoesnTSupportSessionButContractRequires1|コントラクトには Session が必要です。指定されたバインディングはこれをサポートしていないか、サポートするように正しく構成されていません。| +|BindingDoesnTSupportTwoWayButContractRequires1|コントラクトは、TwoWay \(要求\-応答、または双方向\) を必要とします。指定されたバインディングはこれをサポートしていないか、サポートするように正しく構成されていません。| +|BindingRequirementsAttributeDisallowsQueuedDelivery1|DeliveryRequirementsAttribute は QueuedDelivery を許可していません。指定されたコントラクトを持つエンドポイントのバインディングはこれをサポートしています。| +|BindingRequirementsAttributeRequiresQueuedDelivery1|DeliveryRequirementsAttribute には QueuedDelivery が必要です。指定されたコントラクトを持つエンドポイントのバインディングはこれをサポートしていないか、サポートするように正しく構成されていません。| +|channelDoesNotHaveADuplexSession0|現在のチャネルは、出力セッションの終了をサポートしていません。このチャネルは、ISessionChannel\ を実装していません。| +|ClientRuntimeRequiresFormatter0|SerializeRequest と DeserializeReply の両方が false ではないため、指定された ClientOperation にはフォーマッタが必要です。| +|CommunicationObjectAborted1|指定された通信オブジェクトは停止しているため、通信に使用できません。| +|CommunicationObjectAbortedStack2|指定された通信オブジェクトは停止しているため、通信に使用できません: {1}| +|CommunicationObjectBaseClassMethodNotCalled|指定された通信オブジェクトは、仮想関数 {1} をオーバーライドしましたが、基本クラスで定義されたバージョンを呼び出しません。| +|ContractIsNotSelfConsistentItHasOneOrMore2|指定されたコントラクトには、IsTerminating 操作または IsInitiating 以外の操作が 1 つ以上あります。SessionMode.Required に設定された SessionMode プロパティがありません。IsInitiating 属性と IsTerminating 属性は、セッションのコンテキストでのみ使用できます。| +|CouldnTCreateChannelForChannelType2|指定されたチャネルの種類が要求されましたが、指定されたバインディングはこれをサポートしていないか、サポートするように正しく構成されていません。| +|DispatchRuntimeRequiresFormatter0|DeserializeRequest と SerializeReply の両方が false ではないため、指定された DispatchOperation にはフォーマッタが必要です。| +|EndMethodsCannotBeDecoratedWithOperationContractAttribute|IAsyncResult デザイン パターンを使用する場合、OperationContractAttribute と共に End メソッドを使用することはできません。OperationContractAttribute と共に使用できるのは、対応する Begin メソッドのみです。この属性は、メソッドの Begin と End のペアに適用されます。| +|EndpointListenerRequirementsCannotBeMetBy3|指定されたバインディングの IChannelListener が ChannelDispatcher の要件を満たすことができません。コントラクトには、指定されたこれらのチャネルの種類のいずれか 1 つのサポートが必要ですが、バインディングがサポートしているのは、指定されたこれらのチャネルの種類のみです。| +|EndpointsMustHaveAValidBinding0|エンドポイントには有効なバインディングが必要です。| +|InvalidOrUnrecognizedAction|指定されたアクションが無効であるか、または認識できないため、メッセージを処理できません。| +|MultipleMebesInParameters|BindingContext の BindingParameter に複数の MessageEncodingBindingElement が見つかりました。CustomBinding に複数の MessageEncodingBindingElement を含めることはできません。これらの要素の 1 つ以外はすべて削除します。| +|MultipleStreamUpgradeProvidersInParameters|BindingContext の BindingParameter に複数の IStreamUpgradeProviderElement が見つかりました。CustomBinding に複数の IStreamUpgradeProviderElement を含めることはできません。これらの要素の 1 つ以外はすべて削除します。| +|NoChannelBuilderAvailable|バインディングに TransportBindingElement が含まれていないため、このバインディングを使用してチャネル ファクトリやチャネル リスナーを作成することはできません。いずれのバインディングにも TransportBindingElement から派生するバインド要素を少なくとも 1 つ含んでいる必要があります。| +|NotAllBindingElementsBuilt|このバインディング内の一部のバインド要素は、チャネル ファクトリ\/チャネル リスナーの構築時に使用されませんでした。バインド要素の順序が正しくありません。推奨されるバインド要素の順序は、TransactionFlow、ReliableSession、Security、CompositeDuplex、OneWay、StreamSecurity、MessageEncoding、Transport です。TransportBindingElement は最後である必要があります。指定されたバインド要素は構築されませんでした。| +|RuntimeRequiresInvoker0|ディスパッチ操作は呼び出しの起動者が必要です。| +|ServiceHasZeroAppEndpoints|指定されたサービスには、アプリケーション \(インフラストラクチャ以外\) エンドポイントがありません。これは、アプリケーション用の構成ファイルが見つからなかったこと、サービス名と一致するサービス要素が構成ファイル内から見つからなかったこと、またはサービス要素内でエンドポイントが定義されていないことが原因である可能性があります。| +|SFxActionMismatch|動作が一致しないため、入力されたメッセージを作成できません。指定されたアクションを予期していましたが、別のアクションが発生しました| +|SFxAnonymousTypeNotSupported|指定されたメッセージの指定された部分は種類が不明であるため、RPC でのエクスポートやエンコードを実行できません。| +|SFxBadMetadataLocationNoAppropriateBaseAddress|構成ファイルの serviceMetadata セクションにある ExternalMetadataLocation プロパティまたは externalMetadataLocation 属性を介して ServiceMetadataBehavior に渡された URL は、相対 URL であったため、この URL を解決するためのベース アドレスがありません。| +|SFxBadMetadataMustBePolicy|ポリシーでは、指定された名前空間と名前を持つ XmlElement を指定する必要があります。この XmlElement は、指定された名前空間と名前を持ちます。| +|SFxBodyObjectTypeCannotBeInherited|RPC スタイルの body オブジェクトとして使用されるオブジェクト以外のクラスから、指定された型を継承することはできません。| +|SFxBodyObjectTypeCannotBeInterface|指定された型が実装している指定されたインターフェイスは、RPC スタイルの body オブジェクトでサポートされていません。| +|SFxCallbackBehaviorAttributeOnlyOnDuplex|CallbackBehaviorAttribute は、双方向コントラクトを使用したエンドポイント上の操作としてのみ実行できます。指定されたコントラクトは、コールバック操作を含んでいないため、双方向ではありません。| +|SFxCallbackRequestReplyInOrder1|現在のメッセージが処理を完了するまで、この操作から応答を受信することはできません。順番を無視したメッセージ処理を許可するには、指定された対象で Reentrant または Multiple の ConcurrencyMode を指定してください。| +|SfxCallbackTypeCannotBeNull|指定されたコントラクトを DuplexChannelFactory と共に使用するには、このコントラクトで有効なコールバック コントラクトを指定する必要があります。使用しているコントラクトにコールバック コントラクトがある場合は、DuplexChannelFactory の代わりに ChannelFactory を使用してください。| +|SFxCannotGetMetadataFromLocation|MetadataExchangeClient は HTTP および HTTPS の MetadataLocations からのみメタデータを取得できます。指定された対象からメタデータを取得できません。| +|SFxCannotHttpGetMetadataFromAddress|MetadataExchangeClient は、MetadataExchangeClientMode HttpGet を使用した場合に HTTP アドレスまたは HTTPS アドレスからのみメタデータを取得できます。指定された対象からメタデータを取得できません。| +|SFxCannotImportAsParameters\_Bare|指定された操作は RPC でもラップされたドキュメントでもないため、メッセージ コントラクトを生成しています。| +|SFxCannotImportAsParameters\_DifferentWrapperName|指定されたメッセージのラッパーの名前が既定値と一致しないため、メッセージ コントラクトを生成しています。| +|SFxCannotImportAsParameters\_DifferentWrapperNs|指定されたメッセージのラッパーの名前空間が既定値と一致しないため、メッセージ コントラクトを生成しています。| +|SFxCannotImportAsParameters\_ElementIsNotNillable|指定された名前空間の指定された要素名が nillable に設定されていないため、メッセージ コントラクトを生成しています。| +|SFxCannotImportAsParameters\_HeadersAreUnsupported|指定されたメッセージにヘッダーが含まれるため、メッセージ コントラクトを生成しています。| +|SFxCannotImportAsParameters\_Message|指定された操作には、引数または戻り値の型として型指定されていない Message が含まれるため、メッセージ コントラクトを生成しています。| +|SFxCannotImportAsParameters\_MessageHasProtectionLevel|指定されたメッセージには保護が必要なため、メッセージ コントラクトを生成しています。| +|SFxCannotImportAsParameters\_NamespaceMismatch|指定されたメッセージ部分の名前空間が既定値と一致しないため、メッセージ コントラクトを生成しています。| +|SFxCannotRequireBothSessionAndDatagram3|指定されたコントラクトは SessionMode.NotAllowed を指定し、かつ SessionMode.Required を指定しています。どちらかの SessionMode の値を変更するか、エンドポイントごとに異なるアドレス \(または ListenURI\) を指定してください。| +|SFxCannotSetExtensionsByIndex|このコレクションは、インデックスによる拡張の設定をサポートしていません。InsertItem または RemoveItem メソッドを使用してください。| +|SFxChannelDispatcherDifferentHost0|この ChannelDispatcher は、指定された ServiceHost に現在アタッチされていません。| +|SFxChannelDispatcherMultipleHost0|複数の ServiceHost に ChannelDispatcher を追加することはできません。| +|SFxChannelDispatcherNoHost0|ChannelDispatcher は、ServiceHost にアタッチされていないため、開くことができません。| +|SfxChannelFactoryDisposed|この ChannelFactory は既に破棄されているため開けません。この ChannelFactory を使用する前に再作成してください。| +|SFxChannelFactoryNoBinding|ChannelFactory のエンドポイントにバインディングが関連付けられていないため、ChannelFactory を開くことができません。コンストラクターまたはエンドポイント プロパティでバインディングを指定してください。| +|SFxChannelTerminated0|IsTerminating が設定された操作はこのチャネルで既に呼び出されており、その結果このチャネルの接続は終了しました。このチャネルでは追加の操作を呼び出すことはできません。通信を続行するには、このチャネルを再作成してください。| +|SFxCloseTimedOut1|ServiceHost の閉じる操作が、指定された時間後に中止されました。クライアントがセッションフル チャネルを要求された時間内に閉じることができなかったことが原因である可能性があります。この操作に割り当てられた時間は、より長いタイムアウト時間の一部であった可能性があります。| +|SfxCloseTimedOutWaitingForDispatchToComplete|サービスのディスパッチが完了するのを待機しているときに Close プロセスがタイムアウトしました。| +|SFxCodeGenIsNotAssignableFrom|指定された対象を割り当てることはできません。| +|SFxConfigChannelConfigurationNotFound|ServiceModel クライアント構成セクションで、指定された名前とコントラクトを持つエンドポイント要素が見つかりません。| +|SFxConflictingGlobalElement|指定された名前空間に含まれる指定された名前を持つトップ レベルの XML 要素が、指定された型を参照できません。この要素は別の型を既に参照しています。異なる操作名を使用するか、MessageBodyAttribute を使用して、メッセージまたはメッセージ部分に別の名前を指定してください。| +|SFxContractHasZeroInitiatingOperations|コントラクトには、少なくとも 1 つの IsInitiating\=true 操作が必要です。| +|SFxContractHasZeroOperations|コントラクトには、少なくとも 1 つの操作が必要です。| +|SFxContractInheritanceRequiresInterfaces|指定された型のサービス クラスでは、ServiceContract が定義されていると共に、指定された型から ServiceContract を継承しています。コントラクトの継承はインターフェイス型の中でのみ使用できます。クラスに ServiceContractAttribute が設定されている場合、そのクラスは、ServiceContractAttribute が設定された階層内の唯一の型である必要があります。指定された型の ServiceContractAttribute を、指定された型で実装されている別のインターフェイスに移動してください。| +|SFxCreateDuplexChannel1|指定されたコントラクトのコールバック コントラクトは存在していないか、またはどの操作も定義していません。これが双方向コントラクトでない場合は、DuplexChannelFactory の代わりに ChannelFactory を使用してください。| +|SFxCreateDuplexChannelNoCallback|この CreateChannel オーバーロードは DuplexChannelFactory のこのインスタンスでは呼び出せません。DuplexChannelFactory が InstanceContext を使用して初期化されませんでした。InstanceContext を受け取る CreateChannel オーバーロードを呼び出します。| +|SFxCreateDuplexChannelNoCallback1|この CreateChannel オーバーロードは DuplexChannelFactory のこのインスタンスでは呼び出せません。Type を使用して DuplexChannelFactory が初期化されて、有効な InstanceContext が指定されませんでした。InstanceContext を受け取る CreateChannel オーバーロードを呼び出します。| +|SFxCreateDuplexChannelNoCallbackUserObject|この CreateChannel オーバーロードは DuplexChannelFactory のこのインスタンスでは呼び出せません。DuplexChannelFactory に渡された InstanceContext に有効な UserObject が含まれていません。| +|SFxCreateNonDuplexChannel1|ChannelFactory は指定されたコントラクトをサポートしていません。ChannelFactory は 1 つ以上の操作が含まれたコールバック コントラクトを定義しています。ChannelFactory の代わりに DuplexChannelFactory を使用してください。| +|SFxCustomBindingNeedsTransport1|指定されたコントラクトを持つ ServiceEndpoint の CustomBinding には、TransportBindingElement がありません。いずれのバインディングにも TransportBindingElement から派生するバインド要素を少なくとも 1 つ含んでいる必要があります。| +|SFxCustomBindingWithoutTransport|このカスタム バインディングには TransportBindingElement がないため、このバインディング用のスキームを計算できません。いずれのバインディングにも TransportBindingElement から派生するバインド要素を少なくとも 1 つ含んでいる必要があります。| +|SFxDataContractSerializerDoesNotSupportBareArray|DataContractSerializer は、指定された要素で指定されたコレクションをサポートしていません。| +|SFxDictionaryIsEmpty|辞書が空なので、この操作を行えません。| +|SFxDocEncodedNotSupported|指定された対象の反映中にエラーが発生しました。エンコードされたドキュメントはサポートされていません。'Use' をリテラルに変更するか、'Style' を RPC に変更してください。| +|SFxDuplicateInitiatingActionAtSameVia|このサービスには、指定された対象でリッスンしているエンドポイントが複数あります。これらのエンドポイントでは、指定された開始アクションが同じです。ディスパッチャーがメッセージ処理用の正しいエンドポイントを判断できなくなるため、このアクションが指定されたメッセージは削除されます。| +|SFXEndpointBehaviorUsedOnWrongSide|指定された IEndpointBehavior をサーバーで使用することはできません。この動作はクライアントにのみ適用できます。| +|SFxEndpointNoMatchingScheme|指定されたバインディングを使用するエンドポイントの、指定されたスキームに適合するベース アドレスが見つかりません。登録されているベース アドレス スキームが指定されています。| +|SFxErrorCreatingMtomReader|MTOM メッセージ用のリーダーを作成しているときにエラーが発生しました。| +|SFxErrorDeserializingFault|サーバーから無効な SOAP フォールトが返されました。詳細については、InnerException を参照してください。| +|SFxErrorDeserializingHeader|指定されたメッセージに含まれるヘッダーの 1 つの逆シリアル化中にエラーが発生しました。詳細については、InnerException を参照してください。| +|SFxErrorReflectingOnMethod3|指定された型で、指定されたメソッドの指定された属性の読み込み中にエラーが発生しました。詳細については、InnerException を参照してください。| +|SFxErrorReflectingOnParameter4|指定された型の指定されたメソッドの指定されたパラメーターの指定された属性を読み込み中にエラーが発生しました。詳細については、InnerException を参照してください。| +|SFxErrorReflectingOnType2|指定された型の指定された属性を読み込み中にエラーが発生しました。詳細については、InnerException を参照してください。| +|SFxErrorSerializingBody|指定されたメッセージの本文のシリアル化中にエラーが発生しました。詳細については、InnerException を参照してください。| +|SFxErrorSerializingHeader|指定されたメッセージに含まれるヘッダーの 1 つのシリアル化中にエラーが発生しました。詳細については、InnerException を参照してください。| +|SFxExpectedIMethodCallMessage|内部エラーです。メッセージは有効な IMethodCallMessage である必要があります。| +|SFxExportMustHaveType|指定された操作の指定された部分には有効な CLR 型が含まれていないため、エクスポートできません。| +|SFxHeaderNotUnderstood|メッセージは処理されませんでした。指定された名前空間の指定されたヘッダーをこのメッセージの受信側で認識できませんでした。このエラーは一般に、受信側で処理できない通信プロトコルがこのメッセージの送信側で有効になっていることを示します。クライアントのバインディングの構成がサービスのバインディングと一致していることを確認してください。| +|SFxHeadersAreNotSupportedInEncoded|指定されたメッセージに、リモート プロシージャ コールでエンコードされたスタイルで使用するヘッダーを含めることはできません。| +|SFxInconsistentWsdlOperationStyleInMessageParts|指定された操作内のメッセージを構成するすべての部分は、型または要素のいずれかを格納している必要があります。| +|SFxInconsistentWsdlOperationStyleInOperationMessages|指定された操作内のメッセージから生成された指定されたスタイルが、バインディングによって指定された予期された指定のスタイルと一致しません。| +|SFxInvalidCallbackIAsyncResult|IAsyncResult が指定されていないか、型が正しくありません。| +|SFxInvalidMessageBody|OperationFormatter で、無効なメッセージ本文が検出されました。指定された名前と名前空間を持つ 'Element' ノード型が予期されていましたが、指定された名前と名前空間を持つ指定されたノード型が見つかりました。| +|SFxInvalidMessageBodyEmptyMessage|OperationFormatter は、メッセージが空のため、メッセージから情報を逆シリアル化できません。| +|SFxInvalidMessageBodyErrorDeserializingParameter|指定されたパラメーターを逆シリアル化しようとしているときにエラーが発生しました。詳細については InnerException を参照してください。| +|SFxInvalidMessageBodyErrorSerializingParameter|指定されたパラメーターをシリアル化しようとしているときにエラーが発生しました。InnerException メッセージが指定されています。詳細については、InnerException を参照してください。| +|SFxInvalidMessageBodyUnexpectedNode|パラメーターを逆シリアル化中に、指定された名前空間から指定された予期しないノードが検出されました。| +|SFxInvalidMessageContractSignature|指定された操作に、MessageContractAttribute が設定されたパラメーターまたは戻り値の型が含まれています。メッセージ コントラクトを使用して要求メッセージを表現するには、この操作には MessageContractAttribute を持つ単一のパラメーターが含まれている必要があります。メッセージ コントラクトを使用して応答メッセージを表現するには、この操作の戻り値は MessageContractAttribute を持つ型である必要があります。この操作には 'out' パラメーターや 'ref' パラメーターを含めることはできません。| +|SFxInvalidReplyAction|操作の送信応答メッセージには指定された Action が含まれていますが、この操作のコントラクトは別の ReplyAction を指定しています。メッセージで指定された Action がコントラクト内の ReplyAction と一致しているか、この操作のコントラクトが ReplyAction\='\*' を指定している必要があります。| +|SFxInvalidRequestAction|操作の送信要求メッセージには指定された Action が含まれていますが、この操作のコントラクトは別の RequestAction を指定しています。メッセージで指定された Action がコントラクト内の RequestAction と一致しているか、操作コントラクトが RequestAction\='\*' を指定している必要があります。| +|SFxInvalidStaticOverloadCalledForDuplexChannelFactory1|指定されたコントラクトはコールバック コントラクトを定義しているため、このコントラクトでは静的な CreateChannel メソッドを使用できません。DuplexChannelFactory\ で静的な CreateChannel オーバーロードのいずれか 1 つを使用してください。| +|SFxInvalidStreamInRequest|指定された操作における要求をストリームにするには、この操作は Stream 型の単一のパラメーターを持つ必要があります。| +|SFxInvalidStreamInResponse|指定された操作における応答をストリームにするには、この操作が Stream 型の単一の out パラメーターまたは戻り値を持つ必要があります。| +|SFxInvalidStreamInTypedMessage|メッセージ コントラクト プログラミング モデルでストリームを使用するには、指定された型が Stream 型の単一の MessageBody メンバーを持つ必要があります。| +|SFxInvalidUseOfPrimitiveOperationFormatter|PrimitiveOperationFormatter に、サポートされていないパラメーターまたは戻り値の型が指定されました。| +|SFxMessageContractBaseTypeNotValid|指定された型は MessageContract を定義していますが、その派生元である指定された型は MessageContract を定義していません。指定された継承階層内のすべてのオブジェクトが MessageContract を定義している必要があります。| +|SFxMethodNotSupported1|指定されたメソッドは、このオブジェクトでサポートされていません。これは、メソッドが OperationContractAttribute でマークされていない場合、またはインターフェイスの種類が ServiceContractAttribute でマークされていない場合に発生することがあります。| +|SFxMethodNotSupportedByType2|ServiceHost の指定された実装型は、指定されたサービス コントラクトを実装していません。| +|SFxMethodNotSupportedOnCallback1|指定されたコールバック メソッドはサポートされていません。この原因としては、このメソッドに OperationContractAttribute が設定されていないこと、またはそのインターフェイスの型が ServiceContractAttribute の CallbackContract のターゲットでないことが考えられます。| +|SFxMismatchedOperationParent|DispatchOperation または ClientOperation を追加できるのは、親の DispatchRuntime または ClientRuntime だけです。| +|SFxNameCannotBeEmpty|Name プロパティを空の文字列にすることはできません。| +|SfxNoTypeSpecifiedForParameter|パラメーターに CLR 型が指定されていなかったため、操作を生成できませんでした。| +|SFxOperationBehaviorAttributeOnlyOnServiceClass|OperationBehaviorAttribute を指定できるのはサービス クラスのみです。ServiceContract インターフェイスで指定することはできません。指定された型の指定されたメソッドは、これに違反しています。| +|SFxOperationContractOnNonServiceContract|指定されたメソッドには OperationContractAttribute が設定されていますが、それを囲む指定された型に ServiceContractAttribute が設定されていません。OperationContractAttribute は、ServiceContractAttribute 型のメソッド、または CallbackContract 型でのみ使用できます。| +|SFxParameterCountMismatch|指定された引数の数と必要な引数の数が一致しませんでした。具体的には、指定された引数には指定された個数の要素があり、必要な引数には指定された個数の要素があります。| +|SFxPartNameMustBeUniqueInRpc|リモート プロシージャ コール メッセージ内で、指定されたメッセージ部分名が一意ではありません。| +|SFxReplyActionMismatch3|指定されたアクションが含まれる指定された操作に対する応答メッセージを受信しましたが、クライアント コードには指定されたアクションが必要です。| +|SFxRequestReplyNone|"None" アドレスを対象にした WS\-Addressing の ReplyTo または FaultTo ヘッダーが含まれたメッセージを受信しました。これらの値は、要求\-応答の操作に対しては無効です。ReplyTo または FaultTo の値として "None" をサポートする必要がある場合は、一方向の操作を使用するか、ManualAddressing を有効にしてください。| +|SFxRequestTimedOut1|この要求操作は、指定された構成済みの時間内に応答を受信しませんでした。許可された時間はより長く設定されたタイムアウトの一部になる可能性があります。この原因としては、サービスがまだこの操作を処理していること、またはサービスが応答メッセージを送信できなかったことが考えられます。| +|SFxRequestTimedOut2|指定された場所に送信されたこの要求操作は、指定された構成済みの時間内に応答を受信しませんでした。許可された時間はより長く設定されたタイムアウトの一部になる可能性があります。この原因としては、サービスがまだこの操作を処理していること、またはサービスが応答メッセージを送信できなかったことが考えられます。| +|SFxSchemaDoesNotContainType|指定されたターゲット名前空間を持つスキーマに、指定された名前を持つ型が含まれていません。| +|SfxServiceContractAttributeNotFound|指定されたコントラクト型には ServiceContractAttribute 属性が設定されていません。有効なコントラクトを定義するには、指定された型に ServiceContractAttribute が設定されている必要があります。コントラクト インターフェイスまたはサービス クラスを型として指定できます。| +|SFxServiceContractGeneratorConfigRequired|GenerateServiceEndpoint メソッドを使用して構成情報を生成するためには、有効な構成オブジェクトを使用して ServiceContractGenerator インスタンスが初期化されている必要があります。| +|SFxServiceHostBaseCannotAddEndpointAfterOpen|ServiceHost が次のいずれかの状態になった後に、エンドポイントを追加することはできません。

- オープン
- 途中終了
- 終了
- Closed| +|SFxServiceHostBaseCannotAddEndpointWithoutDescription|Description プロパティが初期化される前に、エンドポイントを追加することはできません。| +|SFxServiceMetadataBehaviorNoHttpBaseAddress|ServiceMetadataBehavior の HttpGetEnabled プロパティが True に設定され、HttpGetUrl プロパティが相対アドレスですが、HTTP ベース アドレスがありません。HTTP ベース アドレスを指定するか、HttpGetUrl を絶対アドレスに設定してください。| +|SFxServiceMetadataBehaviorNoHttpsBaseAddress|ServiceMetadataBehavior の HttpsGetEnabled プロパティが True に設定され、HttpsGetUrl プロパティが相対アドレスですが、HTTPS ベース アドレスがありません。HTTPS ベース アドレスを指定するか、HttpsGetUrl を絶対アドレスに設定してください。| +|SFxServiceMetadataBehaviorUrlMustBeHttpOrRelative|動作 URI は、指定されたスキームの相対 URI または絶対 URI である必要があります。指定された URI は、指定されたスキームの絶対 URI です。| +|SFxStreamRequestMessageClosed|このストリームを含むメッセージは閉じられています。サービス操作が返った後に要求ストリームにアクセスすることはできません。| +|SFxStreamResponseMessageClosed|このストリームを含むメッセージは閉じられています。| +|SFxTerminateRequestProcessingException|操作パイプラインを拡張する場合、このメッセージの処理を中止する必要があります。| +|SFxTerminatingOperationAlreadyCalled1|IsTerminating 操作が既に呼び出されているため、このチャネルでこれ以上、メッセージを送信することはできません。| +|SFxThrottleLimitMustBeGreaterThanZero0|スロットル制限は、0 より大きい必要があります。スロットル制限を無効にするには、値を Int32.MaxValue に設定してください。| +|SFxTypedOrUntypedMessageCannotBeMixedWithVoidInRpc|RPC エンコード スタイルを使用しているときに、操作にパラメーターがない場合や void の戻り値がある場合は、メッセージ コントラクト型や System.ServiceModel.Channels.Message 型を使用できません。ブランク メッセージ コントラクト型を指定された操作に、パラメーターまたは戻り値の型として追加してください。| +|SFxUserCodeThrewException|指定されたユーザー操作によって、ユーザー コードで未処理の例外がスローされました。この問題が繰り返し発生する場合は、指定されたメソッドの実装にエラーが含まれている可能性があります。| +|SfxUseTypedMessageForCustomAttributes|指定されたパラメーターには追加属性が必要であるため、このパラメーターを操作パラメーターにマップすることはできません。| +|SFxVersionMismatchInOperationContextAndMessage2|OperationContext.Current の MessageVersion が、処理中のメッセージのヘッダー バージョンと一致しないため、送信ヘッダーをメッセージに追加できません。| +|SFxWellKnownNonSingleton0|サービス インスタンスを受け取る ServiceHost コンストラクターのいずれか 1 つを使用するには、サービスの InstanceContextMode が InstanceContextMode.Single に設定されている必要があります。これは ServiceBehaviorAttribute を使用して構成できます。または、Type 引数を受け取る ServiceHost コンストラクターを使用してください。| +|SFxWrapperTypeHasMultipleNamespaces|指定されたメッセージのラッパー型は複数の名前空間を持つため、データ コントラクト型として投影できません。XmlSerializer を使用してください。| +|UriMustBeAbsolute|URI は絶対 URI である必要があります。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/tools.md b/docs/framework/wcf/diagnostics/exceptions-reference/tools.md new file mode 100644 index 00000000000..95b9ac2d2fe --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/tools.md @@ -0,0 +1,155 @@ +--- +title: "ツール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 89c907f9-313f-408c-992a-631f1eadf1da +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# ツール +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] ツールによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|ParametersTarget|\| +|ParametersToolConfig|\| +|ErrInvalidPath|指定されたパスが無効です。指定された引数を確認してください。| +|ParametersReference|\<ファイル パス\>| +|WrnCannotLoadConfigFileForValidation|指定された場所から読み込んだ構成ファイルの処理中にエラーが発生しました。この構成ファイルで定義されているサービスを検証できません。| +|MoreHelp|詳細なヘルプを表示するには、指定された引数と共に "svcutil" を入力してください。| +|HelpMergeConfig|既存ファイルを上書きする代わりに、生成された構成が既存ファイルにマージされます。| +|ErrCannotWriteFile|出力ファイルに書き込めません。| +|ErrInvalidNamespaceArgument|指定された無効な値が、指定されたオプションに渡されました。コンマ区切りのターゲット名前空間と CLR 名前空間の組み合わせを指定してください。| +|HelpImportXmlType|非 DataContract 型を IXmlSerializable 型としてインポートするように DataContract シリアライザーを構成します。| +|ErrExclusiveOptionsSpecified|もう一方の指定されたオプションが指定されているときは、指定されたオプションを使用できません。| +|WrnHttpGetFailed|指定された URI で HTTP GET Error が発生しました。| +|ErrInputFileNotAssemblyOrMetadata|指定された入力引数を介して読み取った指定された場所にあるファイルは、XML メタデータ ファイルまたは有効なアセンブリではないように思われます。| +|WrnUnknownMetadataFound|指定された種類の認識できないメタデータ ドキュメントを保存できません。| +|ErrDirectoryContainsInvalidCharacters|指定された無効な値が指定されたオプションに渡されました。指定された文字はパスで使用できません。| +|WrnCannotResolveServiceForValidation|指定された configName のサービスを読み込めません。サービスを検証するには、サービス型を含むアセンブリと実行可能ファイルの両方に、該当するサービスの構成を提供してください。| +|ErrUnexpectedValue|指定されたオプションは値をサポートしていません。| +|\#InvalidArg|指定された対象に無効な引数が含まれています。| +|ParametersExcludeType|\| +|HelpXmlSerializer|シリアル化と逆シリアル化に XmlSerializer を使用するデータ型を生成します。| +|\#|\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\=| +|ErrUnexpectedError|ツールでエラーが発生しました。| +|HelpNologo|著作権とバナー メッセージは表示されません。| +|ErrInputConflictsWithTarget|指定の値に設定された指定のオプションでは、指定された対象から読み取った入力の種類はサポートされません。| +|WrnCannotLoadServiceForExport|エクスポートするサービス型の読み込み中にエラーが発生しました。| +|HelpMetadataDownloadCategory|\-\= メタデータのダウンロード \=\-| +|WrnNoServiceContractTypes|指定されたアセンブリの XmlSerializer 型を生成できません。サービス コントラクト型が見つかりませんでした。| +|WrnCouldNotLoadTypesFromReferenceAssemblyAt|指定された対象から読み込んだアセンブリで、型の読み込み中にエラーが発生しました。アセンブリ内の一部の型は読み込めないため、ツールで使用できません。| +|ErrDirectoryPointsToAFile|指定された無効な値が指定されたオプションに渡されました。指定された値はファイルへのパスです。| +|Error|エラー :| +|ErrDuplicateReferenceValues|指定されたオプションを使用して、指定されたアセンブリが 2 回読み込まれました。アセンブリは、1 回しか参照できません。| +|WrnNoXmlSerializerOperationBehavior|指定されたアセンブリの XmlSerializer を生成できません。このアセンブリには、XmlSerializerOperationBehavior を使用する操作を含むサービス コントラクトがありません。| +|ErrCannotCreateDirectory|指定されたディレクトリを作成できません。| +|ErrCouldNotLoadTypesFromAssemblyAt|指定されたアセンブリ内の型を読み込めません。| +|ErrUnknownSwitch|指定されたスイッチは認識できないオプションです。| +|Logo|このツールのロゴは、バージョンが付加された "Microsoft ® Service Model Metadata Tool" です。| +|NoCodeWasGenerated|コードが生成されませんでした。

クライアントを生成しようとした場合は、この原因として、有効なコントラクトやサービスがメタデータ ドキュメントに含まれていないか、

検索されたすべてのコントラクト\/サービスが参照アセンブリに存在する可能性があります。すべてのメタデータ ドキュメントをツールに渡したことを確認してください。| +|WrnUnableToLoadContractForSGen|コントラクトの種類を読み込み中にエラーが発生しました。このコントラクト用の XmlSerializer 型を生成できません。型と詳細が指定されています。| +|WrnOptionConflictsWithInput|複数入力アセンブリでは、指定されたオプションを使用できません。指定されたオプションは無視されます。| +|ErrUnableToImportMetadata|メタデータをインポートしようとしたときに重大なエラーが発生しました。| +|ErrInvalidSerializer|シリアライザーの無効な値が指定されたオプションに渡されました。サポートされているシリアライザーが指定されています。| +|SavingDownloadedMetadata|ダウンロードしたメタデータ ファイルを保存しています。| +|WrnNoConfigForServices|渡されたアセンブリが、構成ファイルを含む実行可能ファイルでないか、または、指定された構成名を持つサービスを含む構成ファイルがありません。| +|ErrInputConflictsWithOption|指定された対象から読み取った入力は、ツール操作の別のモードを意味するため、指定されたオプションと共に使用することはできません。| +|ErrUnableToExportEndpoints|指定されたサービス型のエクスポート中にエラーが発生しました。| +|ErrInputSchemaParseError|指定された対象の読み取り中に XML スキーマ解析エラーが発生しました。XML の形式が正しく、有効であることを確認してください。| +|ErrInputPolicyParseError|指定された対象の読み取り中に WS\-Policy 解析エラーが発生しました。XML の形式が正しく、有効であることを確認してください。| +|ErrUnableToLoadReferenceType|参照されたコントラクト型の読み込み中にエラーが発生しました。この指定された型は無視されます。| +|WrnCannotLoadServiceForValidation|検証するサービスの読み込み中にエラーが発生しました。型と詳細が指定されています。| +|HelpCodeGenerationCategory|\-\= コードの生成 \=\-| +|RetreivingMetadataWithMexAndDisco|WS\-Metadata Exchange または DISCO を使用して、指定された対象からメタデータをダウンロードしようとしています。| +|ErrGeneralSchemaValidation|エクスポート時に生成された XML スキーマの検証中にエラーが発生しました。| +|ParametersDirectory|\| +|ErrCannotLoadSpecifiedType|指定されたオプションに渡された指定された値のための型を読み込めません。この型が属するアセンブリが、指定されたオプションを使用して指定されていることを確認してください。| +|ErrOptionModeConflict|指定されたオプションは、別の出力の種類を意味するため、指定されたオプションと共に使用することはできません。| +|ErrIsNotAnAssembly|指定された対象をアセンブリとして読み込めません。このファイルが .NET アセンブリであることを確認してください。| +|ErrInputConflictsWithMode|指定された対象から読み取った入力が、他のオプションと矛盾しています。| +|ErrDuplicateValuePassedToTypeArg|指定された値が指定されたオプションに繰り返し、渡されました。各型は 1 回しか指定できません。| +|ErrInputEPRFileParseError|指定された対象からエンドポイント参照を読み取ることができません。XML の形式が正しく、有効であることを確認してください。| +|ErrCouldNotCreateCodeProvider|\/{1} 引数に渡された指定された値に対してコード プロバイダーを作成できません。コード プロバイダーが適切にインストールおよび構成されていることを確認してください。| +|ErrPathTooLongDirOnly|結果の指定されたパスが長すぎます。指定された引数を確認してください。| +|HelpDataContractSerializer|シリアル化と逆シリアル化に DataContract シリアライザーを使用するデータ型を生成します。| +|ErrUnableToExportEndpoint|指定された名前空間の指定されたエンドポイント名を、アセンブリに対して読み込んだ構成ファイル内の指定されたサービス型にエクスポートしているときにエラーが発生しました。| +|HelpUsage1|ヘルプの使用方法を表示します。| +|HelpUsage2|ヘルプの使用方法を表示します。| +|HelpUsage3|ヘルプの使用方法を表示します。| +|HelpUsage4|ヘルプの使用方法を表示します。| +|HelpUsage5|ヘルプの使用方法を表示します。| +|ErrDirectoryNotFound|指定されたディレクトリが見つかりません。このディレクトリが存在することと、このディレクトリを読み取るための適切な権限を持っていることを確認してください。| +|ErrUnableToLoadFile|指定されたファイルを読み取ることができません。| +|ErrNoFilesFound|指定された入力パスは、既存のファイルを参照していないように思われます。| +|ParametersConfig|\| +|ErrDirectoryInsteadOfFile|指定された入力パスは、ディレクトリのように思われます。URL またはファイル パスを入力する必要があります。| +|HelpConfig|指定した名前を持つ構成ファイルを生成するようにツールに指示します。既定 : output.config。| +|ErrSingleUseSwitch|指定されたオプションを繰り返し指定することはできません。| +|Warning|警告 :| +|WrnAmbiguousServiceConfig|指定された構成名を持つ複数のサービス構成が見つかりました。次のアセンブリが指定されています。| +|ErrInvalidInputPath|指定された入力パスは、既存のファイルを参照していないように思われます。また、有効な URI ではないように思われます。| +|ErrUnableToLoadInputs|読み込まれたメタデータの読み取り中にエラーが発生しました。| +|GeneratingSerializer|XML シリアライザーを生成しています。| +|HelpToolConfig|アプリケーション構成ファイルの代わりに使用するカスタム構成ファイル。これを使用すると、ツールの構成ファイルを変更せずに、メタデータ構成を変更したり、構成の拡張を登録したりできます。| +|ErrValidateInvalidUse|指定されたオプションを指定されたオプションと共に使用することはできません。| +|WrnWSMExFailed|指定された URI で WS\-Metadata Exchange Error が発生しました。| +|HelpNoconfig|構成を生成しません。| +|HelpCodeGenerationDescription|指定された対象は、サービス コントラクト、クライアント、およびデータ型をメタデータ ドキュメントから生成できます。| +|HelpTargetMetadata|メタデータを出力します。入力が URL の場合、Svcutil.exe はメタデータをディスクに保存し、コードを生成しません。入力が 1 つ以上のアセンブリの場合、Svcutil.exe は、アセンブリ内の型からメタデータを生成します。| +|ErrAmbiguousOptionModeConflict|指定されたオプションは、他のオプションと競合しています。ツールの使用法を確認してください。| +|ErrNotLanguageOrCodeDomType|指定された引数に渡された指定された値は、定義された言語を表していないため、完全修飾された CLR 型として読み込めません。| +|ErrUnableToUniquifyFilename|出力ファイル名を作成できません。指定されたプレフィックスを使用して作成されているファイルが多すぎます。| +|ErrCannotCreateFile|指定された出力ファイルを作成できません。| +|ErrExpectedValue|指定されたオプションには値を指定する必要があります。| +|ErrCannotDisambiguateSpecifiedTypes|同じ名前を持つ複数の型が参照アセンブリのセットに存在します。指定されたオプションで、アセンブリ修飾名を使用して指定された型を区別してください。| +|RetreivingMetadataWithMexOnly|WS\-Metadata Exchange を使用して、指定された場所からメタデータをダウンロードしようとしています。この URL は DISCO をサポートしていません。| +|ErrInvalidTarget|指定されたターゲットは、指定されたオプションを使用して指定した場合は無効です。サポートされているターゲットが指定されています。| +|ErrPathTooLong|結果のパスが長すぎます。指定された引数を確認してください。| +|HelpCommonOptionsCategory|\-\= 共通のオプション \=\-| +|ParametersServiceName|\| +|ErrNoValidInputFilesSpecified|有効な入力ファイルが指定されていません。メタデータ ドキュメントまたはアセンブリ ファイルを指定してください。| +|ParametersLanguage|\| +|ErrUnableToLoadMetadataDocument|読み込んだドキュメントの 1 つからメタデータを読み取っているときにエラーが発生しました。ドキュメント識別子が指定されています。| +|ErrConflictingInputs|指定された入力引数は、ツール操作の別のモードを意味するため、指定された対象と競合しています。| +|WrnUnableToLoadContractForValidation|コントラクトの型の読み込み中にエラーが発生しました。型と詳細が指定されています。| +|WrnAttributeReflectionErrors|指定された対象から読み込んだアセンブリ内の一部の型で、属性のリフレクションに失敗しました。このアセンブリが、適切なセキュリティ特権を使用してこの場所から読み込むことができることを確認してください。| +|HelpMetadataExportCategory|\-\= メタデータのエクスポート \=\-| +|HelpValidationCategory|\-\= サービスの検証 \=\-| +|ValidationError|検証エラー :| +|GeneratingFiles|ファイルを生成しています...| +|ErrCannotSpecifyMultipleMappingsForNamespace|無効な値が、指定されたオプションに渡されました。指定されたターゲット名前空間は、指定された複数の CLR 名前空間にマップできません。| +|ErrCouldNotLoadReferenceAssemblyAt|指定された参照アセンブリを読み込めません。| +|ParametersOut|\| +|NoCodeWasGeneratedSuggestDCOnly|スキーマからコントラクトを生成するには、指定されたオプションを使用してください。| +|ErrUnableToLoadInputConfig|指定された構成ファイルを読み込むことができません。| +|ErrUnexpectedDelimiter|オプションの先頭には、無効な引数区切り記号 \(':' または '\='\) を使用できません。| +|ErrMergeConfigUsedWithoutConfig|もう一方の指定されたオプションを指定せずに、指定されたオプションを使用することはできません。| +|ErrUnableToExportContract|指定された型から読み込んだコントラクトのエクスポート中にエラーが発生しました。| +|GeneratingMetadata|メタデータ ファイルを生成しています。| +|ErrNotCodeDomType|指定された引数に渡された指定された型は、指定された派生クラスの型ではありません。| +|WrnNoTypeForServices|渡されたアセンブリには、指定された構成名を持つサービス型を含むものがありません。| +|ErrAssemblyLoadFailed|指定されたファイルをアセンブリとして読み込めません。詳細については、「FusionLogs」を参照してください。| +|NoMetadataWasGenerated|メタデータ ファイルが生成されませんでした。エクスポートされたサービス コントラクトはありません。

サービスをエクスポートするには、指定されたオプションを使用してください。データ コントラクトをエクスポートするには、オプションを指定してください。| +|WrnCannotResolveServiceForExport|指定された configName のサービスを読み込めません。サービスをエクスポートするには、サービス型を含むアセンブリと実行可能ファイルに、該当するサービスの構成を提供してください。| +|ParametersCollectionType|\| +|ErrOptionConflictsWithTarget|指定の値に設定された指定のオプションでは、指定されたオプションの使用がサポートされません。| +|ErrCodegenError|指定された言語でコードを生成しているときにエラーが発生しました。

この言語は、生成されているすべてのコード要素をサポートしているわけではありません。別の言語を使用してください。| +|ErrInputWsdlParseError|指定された対象の読み取り中に WSDL 解析エラーが発生しました。XML の形式が正しく、有効であることを確認してください。| +|ErrCouldNotCreateInstance|指定された引数に渡された指定された型のインスタンスを作成できません。| +|ParametersNamespace|\| +|HelpNostdlib|標準ライブラリを参照しません \(既定では、mscorlib.dll と system.servicemodel.dll が参照されます\)。| +|WrnCannotLoadConfigFileForExport|指定された対象から読み込んだ構成ファイルの処理中にエラーが発生しました。この構成ファイルで定義されているサービスを読み込むことができません。| +|WrnUnableToLoadContractForExport|コントラクトの型の読み込み中にエラーが発生しました。この指定された型はエクスポートできません。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/transaction-exceptions.md b/docs/framework/wcf/diagnostics/exceptions-reference/transaction-exceptions.md new file mode 100644 index 00000000000..ba0afb90cdd --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/transaction-exceptions.md @@ -0,0 +1,30 @@ +--- +title: "トランザクションの例外 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1d27ed51-7eda-477f-9eca-94fa129f3e07 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# トランザクションの例外 +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] トランザクションによって生成されるすべての例外を示します。 + +## 例外の一覧 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|SFxCannotHaveDifferentTransactionProtocolsInOneBinding|メタデータからインポートされたポリシー情報により、TransactionProtocol に操作間で異なる値が指定されました。各エンドポイントでサポートされる TransactionProtocol は 1 つに限られます。| +|SFxTransactionAutoCompleteFalseAndInstanceContextMode|TransactionAutoComplete は、サービスの InstanceContextMode が PerSession にならない限り、false にはなりません。指定したコントラクトと操作の実装でエラーが発生しました。| +|SFxTransactionInvalidSetTransactionComplete|OperationContext.SetTransactionComplete は、TransactionAutoComplete が false に設定され、TransactionScopeRequired が true に設定されている場合にのみ、操作から呼び出すことができます。これは無効なシナリオであり、現在のトランザクションは終了しました。| +|TransactionFlowRequiredIssuedTokens|トランザクションをフローさせるには、発行済みトークンのフローもサポートされる必要があります。| +|TrustDriverVersionDoesNotSupportIssuedTokens|構成されたバージョンの Trust では、発行済みトークンがサポートされません。WSTrustFeb2005 またはそれ以降を使用してください。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/exceptions-reference/transaction-formatter.md b/docs/framework/wcf/diagnostics/exceptions-reference/transaction-formatter.md new file mode 100644 index 00000000000..db1827dbef0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/exceptions-reference/transaction-formatter.md @@ -0,0 +1,30 @@ +--- +title: "トランザクション フォーマッタ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 727b3f1c-fffa-4753-bc76-713e331c631a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# トランザクション フォーマッタ +ここでは、トランザクション フォーマッタによって生成されるすべての例外を示します。 + +## 例外 + +|リソース コード|リソースの文字列| +|--------------|--------------| +|TMCommunicationError|分散トランザクション マネージャーとの通信中にエラーが発生しました。| +|WhereaboutsNoHostName|MSDTC 所在情報にホスト名が含まれていません。| +|WhereaboutsReadFailed|MSDTC 所在情報を逆シリアル化できませんでした。| +|WhereaboutsSignatureMissing|MSDTC 所在情報に標準の所在署名がありません。| +|WsatUriCreationFailed|登録サービス アドレスを MSDTC 所在情報から作成できませんでした。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/index.md b/docs/framework/wcf/diagnostics/index.md new file mode 100644 index 00000000000..3e7ad71d2f2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/index.md @@ -0,0 +1,61 @@ +--- +title: "管理と診断 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "管理 [WCF]" + - "診断 [WCF]" + - "WCF, 管理" + - "WCF, 診断" + - "Windows Communication Foundation, 管理" + - "Windows Communication Foundation, 診断" +ms.assetid: 34c81c08-0e0f-4fbc-9ae8-91948640ee43 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# 管理と診断 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、アプリケーションのライフサイクルのさまざまな段階を監視できるようにする豊富な機能が用意されています。たとえば、展開時に構成を使用してサービスとクライアントを設定できます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、アプリケーションのパフォーマンス測定に役立つ多数のパフォーマンス カウンターが備わっています。また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WMI \(Windows Management Instrumentation\) プロバイダーを介して実行時のサービスの検査データを公開します。アプリケーションにエラーが発生したり、適切に動作しなくなったりした場合は、イベント ログを使用して、何か重大なことが発生していないかを確認できます。メッセージ ログとトレースを使用して、アプリケーションでどのようなイベントが発生しているのかをエンドツーエンドで確認することもできます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションが正常に動作しなくなった場合、開発者や IT 専門家は、これらの機能を使用してトラブルシューティングを行うことができます。 + +> [!NOTE] +> エラーが発生した際にエラーに関する具体的な詳細情報が得られなかった場合は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicedebug.md) 構成要素の `includeExceptionDetailInFaults` 属性を有効にする必要があります。これにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は例外に関する詳細をクライアントに送信するようになり、より詳しい診断を行わなくても多くの一般的な問題を検出できるようになります。詳細については、「[エラーの送受信](../../../../docs/framework/wcf/sending-and-receiving-faults.md)」を参照してください。 + +## WCF に用意された診断機能 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、次の診断機能が用意されています。 + +- エンド ツー エンドのトレースは、デバッガーを使用せずにアプリケーションのトラブルシューティングを行うためのインストルメンテーション データを提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、処理マイルストーンのトレースとエラー メッセージを出力します。これには、チャネル ファクトリのオープンやサービス ホストによるメッセージの送受信が含まれます。実行中のアプリケーションに対してトレースを有効にすると、その進行状況を監視できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[トレース](../../../../docs/framework/wcf/diagnostics/tracing/index.md)」のトピックを参照してください。トレースを使用してアプリケーションをデバッグする方法については、「[トレースを使用したアプリケーションのトラブルシューティング](../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md)」を参照してください。 + +- メッセージ ログを使用すると、送信前と送信後の両方のメッセージを確認できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[メッセージ ログ](../../../../docs/framework/wcf/diagnostics/message-logging.md)」のトピックを参照してください。 + +- イベント トレースは、すべての重大な問題に関連するイベントをイベント ログに書き込みます。後でイベント ビューアーを使用して異常を調査できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[イベント ログ](../../../../docs/framework/wcf/diagnostics/event-logging/index.md)」のトピックを参照してください。 + +- パフォーマンス モニターを介して公開されるパフォーマンス カウンターを使用すると、アプリケーションとシステムの状態を監視できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[WCF パフォーマンス カウンター](../../../../docs/framework/wcf/diagnostics/performance-counters/index.md)」のトピックを参照してください。 + +- 名前空間を使用すると、構成ファイルを読み込んでサービスまたはクライアント エンドポイントを設定できます。多数のコンピューターに更新を展開する必要がある場合は、オブジェクト モデルを使用して、さまざまなアプリケーションに対する変更をスクリプトで処理できます。また、[構成エディター ツール \(SvcConfigEditor.exe\)](../../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md)の GUI ウィザードを使用して、構成設定を編集することもできます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[アプリケーションの構成](../../../../docs/framework/wcf/diagnostics/configuring-your-application.md)」のトピックを参照してください。 + +- WMI を使用すると、コンピューター上でリッスン中のサービスと使用しているバインディングを確認できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[診断用の WMI \(Windows Management Instrumentation\) の使用](../../../../docs/framework/wcf/diagnostics/wmi/index.md)」のトピックを参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションの作成、展開、および管理を容易にする GUI ツールとコマンド ライン ツールも用意されています。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][Windows Communication Foundation ツール](../../../../docs/framework/wcf/tools.md).たとえば、[構成エディター ツール \(SvcConfigEditor.exe\)](../../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md)を使用すると、XML を直接編集するのではなく、ウィザードを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の構成設定を作成および編集できます。また、[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) を使用してトレース メッセージを表示、グループ化、およびフィルター処理することにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに関する問題を診断、修復、および検証できます。 + +## 参照 + [アプリケーションの構成](../../../../docs/framework/wcf/diagnostics/configuring-your-application.md) + [サービスの配置](../../../../docs/framework/wcf/diagnostics/deploying-services.md) + [例外リファレンス](../../../../docs/framework/wcf/diagnostics/exceptions-reference/index.md) + [イベント ログ](../../../../docs/framework/wcf/diagnostics/event-logging/index.md) + [メッセージ ログ](../../../../docs/framework/wcf/diagnostics/message-logging.md) + [構成エディター ツール \(SvcConfigEditor.exe\)](../../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md) + [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) + [ServiceModel 登録ツール](../../../../docs/framework/wcf/diagnostics/servicemodel-registration-tool.md) + [トレース](../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [診断用の WMI \(Windows Management Instrumentation\) の使用](../../../../docs/framework/wcf/diagnostics/wmi/index.md) + [WCF パフォーマンス カウンター](../../../../docs/framework/wcf/diagnostics/performance-counters/index.md) + [Windows Communication Foundation ツール](../../../../docs/framework/wcf/tools.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/message-flow-overview.md b/docs/framework/wcf/diagnostics/message-flow-overview.md new file mode 100644 index 00000000000..050acf4166e --- /dev/null +++ b/docs/framework/wcf/diagnostics/message-flow-overview.md @@ -0,0 +1,101 @@ +--- +title: "メッセージ フローの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fb0899e1-84cc-4d90-b45b-dc5a50063943 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# メッセージ フローの概要 +相互接続されたサービスを持つ分散システムでは、サービス間の因果関係を調べる必要があります。 状態監視、トラブルシューティング、原因分析などの重要なシナリオをサポートするには、要求フローに含まれるさまざまなコンポーネントを理解することが重要です。 .NET Framework 4 では、多様なサービス間でトレースを関連付けることができるように、次の機能のサポートが追加されています。 + +- 分析トレース: Event Tracing for Windows \(ETW\) を使用したトレース機能です。詳細度が低く、パフォーマンスに優れています。 + +- WCF\/WF サービス用のエンドツーエンドのアクティビティ モデル: 名前空間および 名前空間が生成するトレースの相関関係をサポートする機能です。 + +- WF の ETW 追跡: この機能では、WF サービスによって生成された追跡レコードを使用して、ワークフローの現在の状態と進行状況を把握します。 + + 追跡レコードまたはトレース レコードに記録されたエラーを使用して、コード障害や誤った形式のメッセージを検出できます。 エラー状態のアクティビティの特定には、イベントのメッセージ ヘッダーにある Correlation ノードの ActivityId プロパティを使用することができます。 アクティビティ ID ごとにメッセージ フローのトレースを有効にする方法については、「[メッセージ フローのトレースの構成](../../../../docs/framework/wcf/diagnostics/etw/configuring-message-flow-tracing.md)」を参照してください。 このトピックでは、チュートリアル入門で作成されたプロジェクトでメッセージ フローのトレースを有効にする方法を示します。 + +### チュートリアル入門で作成されたプロジェクトでメッセージ フローのトレースを有効にするには + +1. **\[スタート\]** ボタン、**\[ファイル名を指定して実行\]** の順にクリックし、「`eventvwr.exe`」と入力してイベント ビューアーを開きます。 + +2. 分析トレースを有効にしていない場合は、**\[アプリケーションとサービス ログ\]**、**\[Microsoft\]**、**\[Windows\]**、**\[アプリケーション サーバー \- アプリケーション\]** の順に展開します。 **\[表示\]**、**\[分析およびデバッグ ログの表示\]** の順にクリックします。 **\[分析\]** を右クリックし、**\[ログを有効にする\]** をクリックします。 トレースが表示されるように、イベント ビューアーを開いたままにします。 + +3. [チュートリアル入門](../../../../docs/framework/wcf/getting-started-tutorial.md)で作成されたサンプルを [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] で開きます。 サービスを作成できるように、管理者として [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を実行する必要があることに注意してください。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サンプルがインストールされている場合、このチュートリアルで作成する完成済みのプロジェクトが含まれている[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)を開くことができます。 + +4. **Service** プロジェクトを右クリックして、**\[追加\]**、**\[新しい項目\]** の順にクリックします。 **\[アプリケーション構成ファイル\]** をクリックし、**\[OK\]** をクリックします。 + +5. 上の手順で作成した App.Config ファイルに次のコードを追加します。 + + ``` + +   +     +   + + + ``` + +6. Ctrl キーを押しながら F5 キーを押して、サーバー アプリケーションをデバッグなしで実行します。 **Client** プロジェクトを右クリックし、**\[デバッグ\]**、**\[新しいインスタンスを開始\]** の順にクリックして、Client プロジェクトを実行します。 + +7. クライアントからサーバーへのイベントをトレースするには、Client プロジェクトのアプリケーション構成ファイルに次の内容を追加します。 + + ``` + +   + + + ``` + +8. クライアントの Program.cs に、次の Using ステートメントを追加します。 + + ``` + using System.Diagnostics; + + ``` + +9. Client プロジェクトの program.cs ファイルにある Main メソッドで、トレース GUID をイベント ログに伝達するように設定します。 + + ``` + Guid guid = Guid.NewGuid(); + Trace.CorrelationManager.ActivityId = guid; + + ``` + +10. 最新の情報に更新し、**\[分析\]** ログを調べます。 イベント ID が 220 のイベントを探します。 イベントを選択し、プレビュー ペインで **\[詳細\]** タブをクリックします。 このイベントには、呼び出し元アクティビティの相関 ID が含まれています。 + + ``` + + ``` + + > [!NOTE] + > ActivityID に同じ GUID を持つすべてのイベントは、1 つの要求に関連しています。 これは、特定のクライアントから特定のサービスへメッセージを関連付けるために使用できます。 このクライアントが別のサービスを呼び出した場合、同じクライアントが ActivityID によって識別されます。 + +11. 場合によっては、ActivityID が元の GUID から新しい ActivityID に変更されます。 その場合、転送イベントが生成されます。 このイベント ID は 499 で、イベントのヘッダーに次のデータが格納されます。 + + ``` + + + + 499 + ... + + ... + + + ``` + + > [!NOTE] + > 転送イベントは、アクティブな ActivityID が、ActivityID として指定された GUID から RelatedActivityID として指定された GUID に変更されたことを記録します。 転送イベントの生成後は、すべてのイベントに新しい GUID が ActivityID として格納されます。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/message-logging.md b/docs/framework/wcf/diagnostics/message-logging.md new file mode 100644 index 00000000000..a71594404e6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/message-logging.md @@ -0,0 +1,40 @@ +--- +title: "メッセージ ログ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6bce0682-75ef-4d65-a659-b328fba4a8b5 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# メッセージ ログ +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、オフラインで使用できるように送受信メッセージをログに記録できます。メッセージ ログを使用すると、メッセージとメッセージ本文を確認できます。この種のログは、どの引数が渡され、XML で表現された引数が受信エンドポイントでどのように表示されるかを知る上で特に役立ちます。また、受信時にメッセージをログに記録すると、無効なメッセージを診断できるだけでなく、メッセージがどのような経路で到着したかを確認できます。また、使用されたセキュリティ トークン、暗号化および署名された部分、および元のままの部分を調べることもできます。 + +## このセクションの内容 + [メッセージ フローの概要](../../../../docs/framework/wcf/diagnostics/message-flow-overview.md) + + ここでは、イベント ログ メッセージがクライアント イベントとサービス イベントにどのように対応するかについて説明します。 + + [メッセージ ログの構成](../../../../docs/framework/wcf/diagnostics/configuring-message-logging.md) + + ここでは、さまざまなシナリオでのメッセージ ログの構成方法を示します。 + + [メッセージ ログを参照する](../../../../docs/framework/wcf/diagnostics/viewing-message-logs.md) + + ここでは、メッセージ ログの表示方法について説明します。 + + [メッセージ ログ記録のセキュリティの考慮事項](../../../../docs/framework/wcf/diagnostics/security-concerns-for-message-logging.md) + + ここでは、メッセージ ログに表示される機密データだけでなく、メッセージ ログによって生成されるイベントを保護する方法についても説明します。 + +## 参照 + [管理と診断](../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/TOC.md b/docs/framework/wcf/diagnostics/performance-counters/TOC.md new file mode 100644 index 00000000000..c9978a30f4e --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/TOC.md @@ -0,0 +1,71 @@ +# [WCF パフォーマンス カウンター](index.md) +# [トランザクション フロー](transactions-flowed.md) +# [呼び出し](calls.md) +# [1 秒あたりのトランザクション フロー](service-transactions-flowed-per-second.md) +# [信頼できるメッセージの 1 秒あたりの破棄されたメッセージ](endpoint-reliable-messaging-messages-dropped-per-second.md) +# [1 秒あたりのエラーとなった信頼できるメッセージ セッション](endpoint-reliable-messaging-sessions-faulted-per-second.md) +# [1 秒あたりの失敗した呼び出し](calls-failed-per-second.md) +# [呼び出す期間](call-duration.md) +# [呼び出す期間](service-call-duration.md) +# [保留状態の呼び出し](calls-outstanding.md) +# [承認されていないセキュリティ呼び出し](endpoint-security-calls-not-authorized.md) +# [1 秒あたりのキューに置かれた有害メッセージ](queued-poison-messages-per-second.md) +# [中止されたトランザクション操作](transacted-operations-aborted.md) +# [信頼できるメッセージの破棄されたメッセージ](endpoint-reliable-messaging-messages-dropped.md) +# [保留状態の呼び出し](endpoint-calls-outstanding.md) +# [承認されていないセキュリティ呼び出し](security-calls-not-authorized.md) +# [1 秒あたりの呼び出し回数](endpoint-calls-per-second.md) +# [インスタンス](instances.md) +# [1 秒あたりの承認されていないセキュリティ呼び出し](endpoint-security-calls-not-authorized-per-second.md) +# [1 秒あたりの失敗した呼び出し](endpoint-calls-failed-per-second.md) +# [失敗した呼び出し](calls-faulted.md) +# [1 秒あたりのトランザクション フロー](transactions-flowed-per-second.md) +# [信頼できるメッセージの 1 秒あたりの破棄されたメッセージ](reliable-messaging-messages-dropped-per-second.md) +# [信頼できるメッセージの破棄されたメッセージ](reliable-messaging-messages-dropped.md) +# [1 秒あたりの失敗した呼び出し](endpoint-calls-faulted-per-second.md) +# [1 秒あたりの失敗した呼び出し](service-calls-faulted-per-second.md) +# [1 秒あたりのエラーとなった信頼できるメッセージ セッション](reliable-messaging-sessions-faulted-per-second.md) +# [キューに置かれた拒否メッセージ](queued-rejected-messages.md) +# [1 秒あたりのセキュリティ検証と認証エラー](endpoint-security-validation-and-authentication-failures-per-second.md) +# [未完了の呼び出し数](service-calls-outstanding.md) +# [不明なトランザクション操作](transacted-operations-in-doubt.md) +# [キューに置かれた有害メッセージ](queued-poison-messages.md) +# [同時セッションの最大数に対する割合](percent-of-max-concurrent-sessions.md) +# [同時インスタンスの最大数に対する割合](percent-of-max-concurrent-instances.md) +# [1 秒あたりの失敗した呼び出し](calls-faulted-per-second.md) +# [1 秒あたりの不明なトランザクション操作](transacted-operations-in-doubt-per-second.md) +# [エンドポイントのパフォーマンス カウンター](endpoint-performance-counters.md) +# [トランザクション フロー](service-transactions-flowed.md) +# [1 秒あたりのキューに置かれた拒否メッセージ](queued-rejected-messages-per-second.md) +# [1 秒あたりのインスタンス](instances-per-second.md) +# [1 秒あたりの破棄されたメッセージのキュー](queue-dropped-messages-per-second.md) +# [1 秒あたりのコミットされたトランザクション操作](transacted-operations-committed-per-second.md) +# [失敗した呼び出し](service-calls-failed.md) +# [失敗した呼び出し](service-calls-faulted.md) +# [コミットされたトランザクション操作](transacted-operations-committed.md) +# [トランザクション フロー](endpoint-transactions-flowed.md) +# [エラーとなった信頼できるメッセージ セッション](endpoint-reliable-messaging-sessions-faulted.md) +# [1 秒あたりの呼び出し回数](service-calls-per-second.md) +# [セキュリティ検証と認証エラー](endpoint-security-validation-and-authentication-failures.md) +# [1 秒あたりの失敗した呼び出し](service-calls-failed-per-second.md) +# [セキュリティ検証と認証エラー](service-security-validation-and-authentication-failures.md) +# [失敗した呼び出し](calls-failed.md) +# [1 秒あたりのセキュリティ検証と認証エラー](service-security-validation-and-authentication-failures-per-second.md) +# [サービス パフォーマンス カウンター](service-performance-counters.md) +# [失敗した呼び出し](endpoint-calls-failed.md) +# [操作パフォーマンス カウンター](operation-performance-counters.md) +# [承認されていないセキュリティ呼び出し](service-security-calls-not-authorized.md) +# [失敗した呼び出し](endpoint-calls-faulted.md) +# [1 秒あたりのセキュリティ検証と認証エラー](security-validation-and-authentication-failures-per-second.md) +# [同時呼び出しの最大数に対する割合](percent-of-max-concurrent-calls.md) +# [呼び出し](endpoint-calls.md) +# [破棄されたメッセージのキュー](queue-dropped-messages.md) +# [1 秒あたりの承認されていないセキュリティ呼び出し](service-security-calls-not-authorized-per-second.md) +# [呼び出し](service-calls.md) +# [呼び出す期間](endpoint-call-duration.md) +# [1 秒あたりの中止されたトランザクション操作](transacted-operations-aborted-per-second.md) +# [1 秒あたりのトランザクション フロー](endpoint-transactions-flowed-per-second.md) +# [1 秒あたりの承認されていないセキュリティ呼び出し](security-calls-not-authorized-per-second.md) +# [1 秒あたりの呼び出し回数](calls-per-second.md) +# [セキュリティ検証と認証エラー](security-validation-and-authentication-failures.md) +# [信頼できるメッセージ セッション違反](reliable-messaging-sessions-faulted.md) diff --git a/docs/framework/wcf/diagnostics/performance-counters/call-duration.md b/docs/framework/wcf/diagnostics/performance-counters/call-duration.md new file mode 100644 index 00000000000..12870252ecd --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/call-duration.md @@ -0,0 +1,29 @@ +--- +title: "呼び出す期間 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e4973ec3-3c66-4c0b-b5d0-294b62c83f7d +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 呼び出す期間 +カウンター名 : 呼び出す期間 + +## 説明 + この操作の呼び出しの平均期間です。 平均期間は、\(N1\-N0\)\/\(D1\-D0\) という数式に基づいて計算されます。 + +> [!WARNING] +> 非同期の WCF サービス上で使用される場合、呼び出す期間カウンターは常に \-1 を返します。 + +## 参照 + [PERF\_AVERAGE\_TIMER](http://go.microsoft.com/fwlink/?LinkId=95015) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/calls-failed-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/calls-failed-per-second.md new file mode 100644 index 00000000000..c8ce30136ce --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/calls-failed-per-second.md @@ -0,0 +1,32 @@ +--- +title: "1 秒あたりの失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e4ef3773-f650-4876-99cf-4d0c02aa03d4 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 1 秒あたりの失敗した呼び出し +カウンター名 : 1 秒あたりの失敗した呼び出し + +## 説明 + 1 秒間にこの操作で未処理の例外が発生した呼び出しの回数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) + + このカウンターは、この操作で未処理の例外が発生するたびにインクリメントされます。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/calls-failed.md b/docs/framework/wcf/diagnostics/performance-counters/calls-failed.md new file mode 100644 index 00000000000..920cf4bc17f --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/calls-failed.md @@ -0,0 +1,26 @@ +--- +title: "失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 52afeff8-333c-44a5-96ce-1f3c418523fc +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 失敗した呼び出し +カウンター名 : 失敗した呼び出し + +## 説明 + この操作で未処理の例外が発生した呼び出しの回数です。このカウンターは、この操作で未処理の例外が発生するたびにインクリメントされます。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/calls-faulted-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/calls-faulted-per-second.md new file mode 100644 index 00000000000..dc814e37ca9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/calls-faulted-per-second.md @@ -0,0 +1,32 @@ +--- +title: "1 秒あたりの失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 81c88073-8e32-4520-a71a-2c56b71ee515 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 1 秒あたりの失敗した呼び出し +カウンター名 : 1 秒あたりの失敗した呼び出し + +## 説明 + この操作への呼び出しに失敗した回数です \(1 秒あたり\)。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) + + [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アプリケーションでは、サービス メソッドは SOAP エラー メッセージを使用して操作エラー情報を通知します。SOAP エラーは、サービス操作のメタデータに含まれるメッセージ型であり、堅牢かつインタラクティブに実行できるようにクライアントが使用するエラー コントラクトを作成するために使用されます。SOAP エラーは XML 形式でクライアントに渡されるので、相互運用性の面でも優れています。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/calls-faulted.md b/docs/framework/wcf/diagnostics/performance-counters/calls-faulted.md new file mode 100644 index 00000000000..bc03a536250 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/calls-faulted.md @@ -0,0 +1,26 @@ +--- +title: "失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb9e8045-6aeb-4b7f-a825-8283c44252a1 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 失敗した呼び出し +カウンター名 : 失敗した呼び出し + +## 説明 + この操作への呼び出しに失敗した回数です。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アプリケーションでは、サービス メソッドは SOAP エラー メッセージを使用して操作エラー情報を通知します。 SOAP エラーは、サービス操作のメタデータに含まれるメッセージ型であり、堅牢かつインタラクティブに実行できるようにクライアントが使用するエラー コントラクトを作成するために使用されます。 SOAP エラーは XML 形式でクライアントに渡されるので、相互運用性の面でも優れています。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/calls-outstanding.md b/docs/framework/wcf/diagnostics/performance-counters/calls-outstanding.md new file mode 100644 index 00000000000..84851c493e1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/calls-outstanding.md @@ -0,0 +1,23 @@ +--- +title: "保留状態の呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dd36ef27-81a6-4c39-8d76-d01022d52d6f +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 保留状態の呼び出し +カウンター名 : 保留状態の呼び出し + +## 説明 + 実行中のこの操作を呼び出す回数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/calls-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/calls-per-second.md new file mode 100644 index 00000000000..cebb0bcad94 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/calls-per-second.md @@ -0,0 +1,27 @@ +--- +title: "1 秒あたりの呼び出し回数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0efb5a94-d83b-4793-b529-6fcbedb65c43 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 1 秒あたりの呼び出し回数 +カウンター名 : 1 秒あたりの呼び出し回数 + +## 説明 + この操作が 1 秒あたりに呼び出される回数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/calls.md b/docs/framework/wcf/diagnostics/performance-counters/calls.md new file mode 100644 index 00000000000..d0e6364ed06 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/calls.md @@ -0,0 +1,23 @@ +--- +title: "呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: efbaa8f8-624d-4c68-a5b4-1f14da679b58 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 呼び出し +カウンター名 : 呼び出し + +## 説明 + この操作への呼び出しの数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-call-duration.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-call-duration.md new file mode 100644 index 00000000000..1b7c8c54300 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-call-duration.md @@ -0,0 +1,23 @@ +--- +title: "エンドポイント : 呼び出す期間 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1aebe748-ad05-4ade-819c-d480379ccfb9 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# エンドポイント : 呼び出す期間 +このエンドポイントの呼び出しの平均期間です。平均期間は、\(N1\-N0\)\/\(D1\-D0\) という数式に基づいて計算されます。 + +## 参照 + [PERF\_COUNTER\_TYPE](http://go.microsoft.com/fwlink/?LinkID=94649) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-failed-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-failed-per-second.md new file mode 100644 index 00000000000..df2e2f991f3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-failed-per-second.md @@ -0,0 +1,32 @@ +--- +title: "エンドポイント: 1 秒あたりの失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bcbe9da4-c8dd-4e27-b630-11611adc7580 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# エンドポイント: 1 秒あたりの失敗した呼び出し +カウンター名 : 1 秒あたりの失敗した呼び出し。 + +## 説明 + 未処理の例外を伴ってこのエンドポイントに到達した、1 秒あたりの呼び出しの回数。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) + + このカウンターは、このエンドポイントで未処理の例外が発生すると常にインクリメントされます。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-failed.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-failed.md new file mode 100644 index 00000000000..cb07d47de1e --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-failed.md @@ -0,0 +1,26 @@ +--- +title: "エンドポイント : 失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3bdca983-7199-4596-b7e1-de15c0766250 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# エンドポイント : 失敗した呼び出し +カウンター名 : 失敗した呼び出し。 + +## 説明 + このエンドポイントで処理できない例外が発生した呼び出しの数です。このカウンターは、このエンドポイントで未処理の例外が発生するたびにインクリメントされます。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-faulted-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-faulted-per-second.md new file mode 100644 index 00000000000..6b9a0fd8739 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-faulted-per-second.md @@ -0,0 +1,32 @@ +--- +title: "エンドポイント : 1 秒あたりの失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9840fc0a-0e4d-4638-96fd-40e3ab9e4667 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# エンドポイント : 1 秒あたりの失敗した呼び出し +カウンター名 : 1 秒あたりの失敗した呼び出し。 + +## 説明 + このエンドポイントの呼び出しのうち、エラーを返したものの 1 秒あたりの回数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) + + [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アプリケーションでは、サービス メソッドは SOAP エラー メッセージを使用して操作エラー情報を通知します。SOAP エラーは、サービス操作のメタデータに含まれるメッセージ型であり、堅牢かつインタラクティブに実行できるようにクライアントが使用するエラー コントラクトを作成するために使用されます。SOAP エラーは XML 形式でクライアントに渡されるので、相互運用性の面でも優れています。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-faulted.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-faulted.md new file mode 100644 index 00000000000..31b02e76795 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-faulted.md @@ -0,0 +1,26 @@ +--- +title: "エンドポイント : 失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 271e6284-9c4b-465f-b619-069e1555a5e4 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# エンドポイント : 失敗した呼び出し +カウンター名 : 失敗した呼び出し。 + +## 説明 + このエンドポイントの呼び出しのうち、エラーとなったものの回数です。[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アプリケーションでは、サービス メソッドは SOAP エラー メッセージを使用して操作エラー情報を通知します。SOAP エラーは、サービス操作のメタデータに含まれるメッセージ型であり、堅牢かつインタラクティブに実行できるようにクライアントが使用するエラー コントラクトを作成するために使用されます。SOAP エラーは XML 形式でクライアントに渡されるので、相互運用性の面でも優れています。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-outstanding.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-outstanding.md new file mode 100644 index 00000000000..e28ad3f7112 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-outstanding.md @@ -0,0 +1,23 @@ +--- +title: "エンドポイント : 実行中の呼び出し数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cf1e854a-92bc-4850-81a2-a8134c9fd7d2 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# エンドポイント : 実行中の呼び出し数 +カウンター名 : 保留状態の呼び出し + +## 説明 + このエンドポイントに対する進行中の呼び出しの数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-per-second.md new file mode 100644 index 00000000000..3976871726d --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls-per-second.md @@ -0,0 +1,27 @@ +--- +title: "エンドポイント : 1 秒あたりの呼び出し回数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ca0fc06d-d68f-4236-bd5f-c7ff6214acdd +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# エンドポイント : 1 秒あたりの呼び出し回数 +カウンター名 : 1 秒あたりの呼び出し + +## 説明 + このエンドポイントが 1 秒あたりに呼び出される回数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls.md new file mode 100644 index 00000000000..68b515da02d --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-calls.md @@ -0,0 +1,23 @@ +--- +title: "エンドポイント : 呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 223aefec-3011-4f35-afa7-a34c76708d52 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# エンドポイント : 呼び出し +カウンター名 : 呼び出し。 + +## 説明 + このエンドポイントへの呼び出しの数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-performance-counters.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-performance-counters.md new file mode 100644 index 00000000000..db4a68034fb --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-performance-counters.md @@ -0,0 +1,32 @@ +--- +title: "エンドポイントのパフォーマンス カウンター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7d44d576-bd4e-453b-8b76-a818ce90b806 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# エンドポイントのパフォーマンス カウンター +エンドポイントのパフォーマンス カウンターは、エンドポイントがどのようにメッセージを受信しているかを示すデータをキャプチャします。パフォーマンス モニターを使用して表示する場合、これらのカウンターは、`ServiceModelEndpoint 4.0.0.0` パフォーマンス オブジェクトの下にあります。インスタンスの名前には次のパターンが使用されます。 + +``` +(ServiceName).(ContractName)@(endpoint listener address) +``` + + このデータは、個々の操作で収集されるデータに似ていますが、そのエンドポイントだけで集約されたデータです。 + +> [!CAUTION] +> パフォーマンス カウンターのインスタンス名の長さには制限があります。[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] カウンターのインスタンス名の長さが最大長を超えると、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] によってインスタンス名の一部はハッシュ値に置き換えられます。 + +## 参照 + [WCF パフォーマンス カウンター](../../../../../docs/framework/wcf/diagnostics/performance-counters/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-messages-dropped-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-messages-dropped-per-second.md new file mode 100644 index 00000000000..73eda6d5e5a --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-messages-dropped-per-second.md @@ -0,0 +1,27 @@ +--- +title: "エンドポイント : 信頼できるメッセージの 1 秒あたりの破棄されたメッセージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ea3c4fc0-1e0f-4863-8879-57bc6c113018 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# エンドポイント : 信頼できるメッセージの 1 秒あたりの破棄されたメッセージ +カウンター名 : 1 秒あたりに破棄された信頼できるメッセージ セッション + +## 説明 + このエンドポイントで 1 秒間に破棄された信頼できるメッセージング メッセージの合計数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-messages-dropped.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-messages-dropped.md new file mode 100644 index 00000000000..3e22fe99add --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-messages-dropped.md @@ -0,0 +1,23 @@ +--- +title: "エンドポイント : 信頼できるメッセージの破棄されたメッセージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d0c5b842-3b75-4cd1-91c4-a702ae17bdcd +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# エンドポイント : 信頼できるメッセージの破棄されたメッセージ +カウンター名 : 破棄された信頼できるメッセージ。 + +## 説明 + このエンドポイントで破棄された信頼できるメッセージング メッセージの合計数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-sessions-faulted-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-sessions-faulted-per-second.md new file mode 100644 index 00000000000..5bc15c922df --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-sessions-faulted-per-second.md @@ -0,0 +1,27 @@ +--- +title: "エンドポイント : 1 秒あたりのエラーとなった信頼できるメッセージ セッション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e9ae808a-7e1f-46b0-9560-d5a866be6d6e +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# エンドポイント : 1 秒あたりのエラーとなった信頼できるメッセージ セッション +カウンター名 : 1 秒あたりのエラーとなった信頼できるメッセージ セッション + +## 説明 + 1 秒以内にこのエンドポイントでエラーになった信頼できるメッセージ セッション数。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-sessions-faulted.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-sessions-faulted.md new file mode 100644 index 00000000000..c1b72473f2c --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-reliable-messaging-sessions-faulted.md @@ -0,0 +1,23 @@ +--- +title: "エンドポイント : エラーとなった信頼できるメッセージ セッション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 63eb536f-cb9d-4c9a-b620-947d1828b1ce +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# エンドポイント : エラーとなった信頼できるメッセージ セッション +カウンター名 : 1 秒あたりのエラーとなった信頼できるメッセージ セッション + +## 説明 + 1 秒以内にこのエンドポイントでエラーになった信頼できるメッセージ セッション数。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-calls-not-authorized-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-calls-not-authorized-per-second.md new file mode 100644 index 00000000000..e713a7e4192 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-calls-not-authorized-per-second.md @@ -0,0 +1,29 @@ +--- +title: "エンドポイント : 1 秒あたりの承認されていないセキュリティ呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c8a1547b-986b-45c1-b302-dea0cd4b516d +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# エンドポイント : 1 秒あたりの承認されていないセキュリティ呼び出し +カウンター名 : 1 秒あたりの承認されていないセキュリティ呼び出し。 + +## 説明 + 有効なユーザーから適切な保護を適用して送信されたが、特定のタスクの実行がユーザーに許可されていない、受信メッセージの 1 秒あたりの数です。 + + このカウンターは メソッドで `false` が返された場合にインクリメントされます。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-calls-not-authorized.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-calls-not-authorized.md new file mode 100644 index 00000000000..7219cca2a4c --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-calls-not-authorized.md @@ -0,0 +1,23 @@ +--- +title: "エンドポイント : 承認されていないセキュリティ呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d25095ff-9ff0-4c69-a674-4e6a9fe3f4dc +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# エンドポイント : 承認されていないセキュリティ呼び出し +カウンター名 : 承認されていないセキュリティ呼び出し。 + +## 説明 + このカウンターは メソッドで `false` が返された場合にインクリメントされます。 受信メッセージが有効なユーザーから適切な保護を適用して送信されたものであり、その一方でそのユーザーが特定のタスクの実行を許可されていないことを示します。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-validation-and-authentication-failures-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-validation-and-authentication-failures-per-second.md new file mode 100644 index 00000000000..2d6d9bf20d2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-validation-and-authentication-failures-per-second.md @@ -0,0 +1,41 @@ +--- +title: "エンドポイント : 1 秒あたりのセキュリティ検証と認証エラー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 89a70b90-d7e4-4b03-9b84-4dc88ce3d605 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# エンドポイント : 1 秒あたりのセキュリティ検証と認証エラー +カウンター名 : 1 秒あたりのセキュリティ検証と認証エラー + +## 説明 + このカウンターは、"承認されていないセキュリティ呼び出し" カウンターでカウントの対象とならないセキュリティ上の問題が原因でメッセージが拒否されるたびにインクリメントされます。この問題には、次のようなものがあります。 + +- メッセージからクライアント トークンを読み取ることができない。 + +- クライアント トークンが認証に失敗した \(例 : 無効なパスワード\)。 + +- 署名の検証に失敗した \(例 : メッセージが改ざんされた\)。 + +- メッセージが以前のメッセージと重複する。この現象はリプレイ攻撃中に発生することがあります。 + +- 復号化に失敗した。 + +- 一部の必須要素 \(タイムスタンプ、暗号化データ ブロックなど\) がメッセージにない。 + +- TLSNEGO\/SPNEGO ハンドシェイク中にエラーが発生した。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N1\-N0\)\/\(\(D1\-D0\)\/F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-validation-and-authentication-failures.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-validation-and-authentication-failures.md new file mode 100644 index 00000000000..92b7ca025bf --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-security-validation-and-authentication-failures.md @@ -0,0 +1,37 @@ +--- +title: "エンドポイント : セキュリティ検証エラーと認証エラー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5bad60aa-6084-4c7b-aefd-9b581f04382e +caps.latest.revision: 6 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 6 +--- +# エンドポイント : セキュリティ検証エラーと認証エラー +カウンター名 : セキュリティ検証と認証エラー + +## 説明 + このカウンターは、"承認されていないセキュリティ呼び出し" カウンターでカウントの対象とならないセキュリティ上の問題が原因でメッセージが拒否されるたびに増分されます。この問題には、次のようなものがあります。 + +- メッセージからクライアント トークンを読み取ることができない。 + +- クライアント トークンが認証に失敗した \(無効なパスワード\)。 + +- 署名の検証に失敗した \(メッセージが改変された\)。 + +- メッセージが以前のメッセージと重複する。この現象はリプレイ攻撃中に発生することがあります。 + +- 復号化に失敗した。 + +- 一部の必須要素 \(タイムスタンプ、暗号化データ ブロック\) がメッセージにない。 + +- TLSNEGO\/SPNEGO ハンドシェイク中にエラーが発生した。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-transactions-flowed-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-transactions-flowed-per-second.md new file mode 100644 index 00000000000..7cddb28dc5b --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-transactions-flowed-per-second.md @@ -0,0 +1,27 @@ +--- +title: "エンドポイント : 1 秒あたりのトランザクション フロー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0f370ff1-a913-450b-bccb-c279ad165b3d +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# エンドポイント : 1 秒あたりのトランザクション フロー +カウンター名 : 1 秒あたりのトランザクション フロー。 + +## 説明 + このエンドポイントでの操作に対して実行された 1 秒あたりのトランザクションの数です。このカウンターは、エンドポイントに送信されたメッセージにトランザクション ID が付与されている場合は常にインクリメントされます。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/endpoint-transactions-flowed.md b/docs/framework/wcf/diagnostics/performance-counters/endpoint-transactions-flowed.md new file mode 100644 index 00000000000..7c043595434 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/endpoint-transactions-flowed.md @@ -0,0 +1,23 @@ +--- +title: "エンドポイント : トランザクション フロー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 66e83f05-349b-4e4f-ac4a-58345e503a30 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# エンドポイント : トランザクション フロー +カウンター名 : トランザクション フロー。 + +## 説明 + このエンドポイントでの操作に対して実行されたトランザクションの数です。このカウンターは、エンドポイントに送信されたメッセージにトランザクション ID が付与されている場合は常にインクリメントされます。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/index.md b/docs/framework/wcf/diagnostics/performance-counters/index.md new file mode 100644 index 00000000000..11cab7b5751 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/index.md @@ -0,0 +1,149 @@ +--- +title: "WCF パフォーマンス カウンター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "パフォーマンス カウンター [WCF]" +ms.assetid: f559b2bd-ed83-4988-97a1-e88f06646609 +caps.latest.revision: 37 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 37 +--- +# WCF パフォーマンス カウンター +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] には、アプリケーションのパフォーマンス測定に役立つ多数のパフォーマンス カウンターが備わっています。 + +## パフォーマンス カウンターの有効化 + 次のように、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスの app.config 構成ファイルを使用して [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスのパフォーマンス カウンターを有効にできます。 + +``` + + + + + +``` + + 特定の種類のパフォーマンス カウンターを有効にするよう `performanceCounters` 属性を設定できます。 有効な値は、次のとおりです。 + +- All : すべてのカテゴリ カウンター \(ServiceModelService、ServiceModelEndpoint、ServiceModelOperation\) を有効にします。 + +- ServiceOnly : ServiceModelService カテゴリ カウンターのみを有効にします。 これが既定値です。 + +- Off : ServiceModel\* パフォーマンス カウンターを無効にします。 + + すべての [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] アプリケーションのパフォーマンス カウンターを有効にする場合は、構成設定を Machine.config ファイルに配置します。 コンピューターのパフォーマンス カウンター用に十分なメモリを構成する方法については、後の「**パフォーマンス カウンターのメモリ サイズの増加**」セクションを参照してください。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] 機能拡張ポイント \(カスタム操作の呼び出し元など\) を使用する場合、独自のパフォーマンス カウンターを出力する必要もあります。 これは、機能拡張ポイントを実装すると、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] が既定のパスに標準のパフォーマンス カウンター データを出力できなくなるためです。 手動パフォーマンス カウンターのサポートを実装しない場合、予測したパフォーマンス カウンター データが得られない場合があります。 + + また次のように、コード内でパフォーマンス カウンターを有効にすることもできます。 + +``` +using System.Configuration; +using System.ServiceModel.Configuration; +using System.ServiceModel.Diagnostics; +Configuration config = ConfigurationManager.OpenExeConfiguration( + ConfigurationUserLevel.None); +ServiceModelSectionGroup sg = ServiceModelSectionGroup.GetSectionGroup(config); +sg.Diagnostic.PerformanceCounters = PerformanceCounterScope.All; +config.Save(); +``` + +## パフォーマンス データの表示 + Windows に付属のパフォーマンス モニター \(Perfmon.exe\) を使用して、パフォーマンス カウンターによりキャプチャされたデータを表示できます。 このツールを起動するには、**\[スタート\]** ボタンをクリックし、**\[ファイル名を指定して実行\]** をクリックして、ダイアログ ボックスに`「perfmon.exe」`と入力します。 + +> [!NOTE] +> エンドポイント ディスパッチャーによって最後のメッセージが処理される前に、パフォーマンス カウンター インスタンスが解放される場合があります。 その結果、パフォーマンス データに一部のメッセージがキャプチャされない可能性があります。 + +## パフォーマンス カウンターのメモリ サイズの増加 + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、パフォーマンス カウンター カテゴリごとに別々の共有メモリを使用します。 + + 既定では、個々の共有メモリは、グローバル パフォーマンス カウンターのメモリ サイズの 4 分の 1 に設定されます。 グローバル パフォーマンス カウンターのメモリの既定値は 524,288 バイトです。 したがって、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の 3 つのパフォーマンス カウンター カテゴリの既定サイズは、それぞれ約 128 KB になります。 コンピューター上での [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] アプリケーションの実行時特性によっては、パフォーマンス カウンター メモリが足りなくなる場合があります。 メモリ不足が発生すると、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] により、そのアプリケーションのイベント ログにエラーが書き込まれます。 エラーの内容にはパフォーマンス カウンターが読み込まれなかったことが示され、エントリには、"System.InvalidOperationException: カスタム カウンター ファイル ビューのメモリが足りません" という例外が含まれます。このエラー レベルでトレースが有効になっている場合は、さらにこの障害がトレースされます。 パフォーマンス カウンターのメモリがなくなった場合、パフォーマンス カウンターを有効にして [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] アプリケーションを続行するとパフォーマンスが低下する可能性があります。 コンピューターの管理者は、使用可能なすべてのパフォーマンス カウンターをいつでも読み込めるだけの十分なメモリを割り当てておく必要があります。 + + レジストリで [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] カテゴリごとにパフォーマンス カウンター メモリの量を変更できます。 これを行うには、次の 3 つの場所に `FileMappingSize` という名前の新しい DWORD 値を追加し、目的の値をバイト単位で設定します。 コンピューターを再起動すると、設定した値が有効になります。 + +- HKLM\\System\\CurrentControlSet\\Services\\ServiceModelEndpoint 4.0.0.0\\Performance + +- HKLM\\System\\CurrentControlSet\\Services\\ServiceModelOperation 4.0.0.0\\Performance + +- HKLM\\System\\CurrentControlSet\\Services\\ServiceModelService 4.0.0.0\\Performance + + 膨大な数のオブジェクト \(ServiceHost など\) が破棄され、ガベージ コレクトされるまで待機している場合、`PrivateBytes` パフォーマンス カウンターには非常に高い数値が登録されます。 この問題を解決するには、アプリケーション固有の独自のカウンターを追加するか、`performanceCounters` 属性を使用してサービス レベルのカウンターだけを有効にします。 + +## パフォーマンス カウンターの種類 + パフォーマンス カウンターには、サービス、エンドポイント、操作の 3 つのレベルがあります。 + + WMI を使用してパフォーマンス カウンターのインスタンス名を取得できます。 次に例を示します。 + +- サービス カウンターのインスタンス名は、WMI [サービス](../../../../../docs/framework/wcf/diagnostics/wmi/service.md) インスタンスの "CounterInstanceName" プロパティを使用して取得できます。 + +- エンドポイント カウンターのインスタンス名は、WMI [エンドポイント](../../../../../docs/framework/wcf/diagnostics/wmi/endpoint.md) インスタンスの "CounterInstanceName" プロパティを使用して取得できます。 + +- 操作カウンターのインスタンス名は、WMI [エンドポイント](../../../../../docs/framework/wcf/diagnostics/wmi/endpoint.md)インスタンスの "GetOperationCounterInstanceName" メソッドを使用して取得できます。 + + WMI の詳細については、「[診断用の WMI \(Windows Management Instrumentation\) の使用](../../../../../docs/framework/wcf/diagnostics/wmi/index.md)」を参照してください。 + +### サービスのパフォーマンス カウンター + サービスのパフォーマンス カウンターはサービス動作全体を測定し、サービス全体のパフォーマンスを診断するために使用できます。 パフォーマンス モニターを使用して表示する場合、これらのカウンターは、`ServiceModelService 4.0.0.0` パフォーマンス オブジェクトの下にあります。 インスタンスには次のパターンの名前が付けられています。 + +``` +ServiceName@ServiceBaseAddress +``` + + サービス スコープ内のカウンターは、エンドポイントのコレクションのカウンターが集計されています。 + + サービス インスタンス作成のパフォーマンス カウンターは、新しい InstanceContext が作成されるとインクリメントされます。 新しい InstanceContext は、非アクティブ化メッセージを \(既存のサービスで\) 受信した場合でも、あるセッションからインスタンスに接続し、セッションを終了後に別のセッションから再接続した場合でも作成されることに注意してください。 + +### エンドポイントのパフォーマンス カウンター + エンドポイントのパフォーマンス カウンターにより、エンドポイントでのメッセージの受信状況を表すデータを参照できます。 パフォーマンス モニターを使用して表示する場合、これらのカウンターは、`ServiceModelEndpoint 4.0.0.0` パフォーマンス オブジェクトの下にあります。 インスタンスには次のパターンの名前が付けられています。 + +``` +(ServiceName).(ContractName)@(endpoint listener address) +``` + + このデータは、個々の操作で収集されるデータに似ていますが、エンドポイントから集計されただけのデータです。 + + エンドポイント スコープ内のカウンターは、操作のコレクションのカウンターから集計されます。 + +> [!NOTE] +> コントラクト名とアドレスが同一の 2 つのエンドポイントは、同じカウンター インスタンスにマップされます。 + +### 操作のパフォーマンス カウンター + パフォーマンス モニターを使用して表示する場合、操作パフォーマンス カウンターは、`ServiceModelOperation 4.0.0.0` パフォーマンス オブジェクトの下にあります。 それぞれの操作に個別のインスタンスがあります。 つまり、指定したコントラクトに 10 の操作がある場合、10 の操作カウンター インスタンスがそのコントラクトに関連付けられます。 オブジェクトのインスタンスには次のパターンの名前が付いています。 + +``` +(ServiceName).(ContractName).(OperationName)@(first endpoint listener address) +``` + + このカウンターにより呼び出しがどのように使用されている、操作がどれほど効率的に実行されているかを調べることができます。 + + カウンターが複数のスコープで表示される場合、上位のスコープで収集されたデータは、下位のスコープからのデータが集計されています。 たとえば、エンドポイントの `Calls` は、エンドポイント内のすべての操作呼び出しの合計を表します。サービスの `Calls` は、サービス内のすべての操作呼び出しの合計を表します。 + +> [!NOTE] +> 1 つのコントラクトに重複した操作名がある場合は、その両方の操作に対してカウンター インスタンスは 1 つだけ取得されます。 + +## WCF パフォーマンス カウンターのプログラミング + プログラムで [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] パフォーマンス カウンターにアクセスできるよう SDK インストール フォルダーにはいくつかのファイルがインストールされています。 そのファイルを次に示します。 + +- \_ServiceModelEndpointPerfCounters.vrg + +- \_ServiceModelOperationPerfCounters.vrg + +- \_ServiceModelServicePerfCounters.vrg + +- \_SMSvcHostPerfCounters.vrg + +- \_TransactionBridgePerfCounters.vrg + + プログラムでカウンターにアクセスする方法の詳細については、「[パフォーマンス カウンターのプログラミング アーキテクチャ](http://go.microsoft.com/fwlink/?LinkId=95179)」を参照してください。 + +## 参照 + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/instances-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/instances-per-second.md new file mode 100644 index 00000000000..55bc0d83200 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/instances-per-second.md @@ -0,0 +1,27 @@ +--- +title: "1 秒あたりのインスタンス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 74579397-1058-4278-80cf-2d00854a480f +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 1 秒あたりのインスタンス +カウンター名 : 1 秒あたりに作成されたインスタンス。 + +## 説明 + 1 秒あたりに作成されたサービス インスタンスの合計数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/instances.md b/docs/framework/wcf/diagnostics/performance-counters/instances.md new file mode 100644 index 00000000000..4f59b5060af --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/instances.md @@ -0,0 +1,32 @@ +--- +title: "インスタンス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c8cf3460-0ca1-4411-8262-e9ecaf7f0a31 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# インスタンス +カウンター名 : インスタンス + +## 説明 + 現在サービスに含まれているインスタンス コンテキストの数。 + + 多くの場合、インスタンス コンテキストの数とインスタンスの数は同じです。 ただし、次のシナリオではこの規則は当てはまりません。 + +- サービス メソッドが メソッドを明示的に呼び出している場合。 + +- インスタンスに適用されている場合。 + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/operation-performance-counters.md b/docs/framework/wcf/diagnostics/performance-counters/operation-performance-counters.md new file mode 100644 index 00000000000..01f92f4dde8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/operation-performance-counters.md @@ -0,0 +1,32 @@ +--- +title: "操作パフォーマンス カウンター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 333a51e0-f56e-4e1a-b359-5c91ff390568 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 操作パフォーマンス カウンター +操作パフォーマンス カウンターは、パフォーマンス モニター \(Perfmon.exe\) を使用して表示した場合、`ServiceModelOperation 4.0.0.0` パフォーマンス オブジェクトの下にあります。それぞれの操作に個別のインスタンスがあります。つまり、指定したコントラクトに 10 の操作がある場合、10 の操作カウンター インスタンスがそのコントラクトに関連付けられます。オブジェクトのインスタンスには次のパターンの名前が付いています。 + +``` +(ServiceName).(ContractName).(OperationName)@(first endpoint listener address) +``` + + このカウンターにより呼び出しがどのように使用されている、操作がどれほど効率的に実行されているかを調べることができます。 + +> [!CAUTION] +> パフォーマンス カウンターのインスタンス名の長さには制限があります。[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] カウンターのインスタンス名の長さが最大長を超えると、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] によってインスタンス名の一部はハッシュ値に置き換えられます。 + +## 参照 + [WCF パフォーマンス カウンター](../../../../../docs/framework/wcf/diagnostics/performance-counters/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/percent-of-max-concurrent-calls.md b/docs/framework/wcf/diagnostics/performance-counters/percent-of-max-concurrent-calls.md new file mode 100644 index 00000000000..8fe6a4e7826 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/percent-of-max-concurrent-calls.md @@ -0,0 +1,23 @@ +--- +title: "同時呼び出しの最大数に対する割合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 22f18a91-1188-4c4e-9ad1-93f0dc180858 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# 同時呼び出しの最大数に対する割合 +カウンター名: 同時呼び出しの最大数に対する割合 + +## 説明 + 同時呼び出しの最大数に対する割合としての同時呼び出し数。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/percent-of-max-concurrent-instances.md b/docs/framework/wcf/diagnostics/performance-counters/percent-of-max-concurrent-instances.md new file mode 100644 index 00000000000..659305d5a13 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/percent-of-max-concurrent-instances.md @@ -0,0 +1,23 @@ +--- +title: "同時インスタンスの最大数に対する割合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8228c15c-51ee-483d-b28b-e1f5c0ac643b +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# 同時インスタンスの最大数に対する割合 +カウンター名: 同時インスタンスの最大数に対する割合 + +## 説明 + 同時インスタンスの最大数に対する割合としての現在のインスタンス数。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/percent-of-max-concurrent-sessions.md b/docs/framework/wcf/diagnostics/performance-counters/percent-of-max-concurrent-sessions.md new file mode 100644 index 00000000000..60415b80c82 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/percent-of-max-concurrent-sessions.md @@ -0,0 +1,23 @@ +--- +title: "同時セッションの最大数に対する割合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 823b1287-002b-4a3a-81fd-183f15a482ca +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# 同時セッションの最大数に対する割合 +カウンター名: 同時セッションの最大数に対する割合 + +## 説明 + 同時セッションの最大数に対する割合としての同時セッション数。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/queue-dropped-messages-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/queue-dropped-messages-per-second.md new file mode 100644 index 00000000000..86950d0c88a --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/queue-dropped-messages-per-second.md @@ -0,0 +1,27 @@ +--- +title: "1 秒あたりの破棄されたメッセージのキュー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 74540f52-8762-4147-b5ba-e171180515a3 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 1 秒あたりの破棄されたメッセージのキュー +カウンター名 : 1 秒あたりの破棄されたメッセージのキュー。 + +## 説明 + このサービスでキューに置かれたトランスポートによって 1 秒あたりに破棄されたメッセージの数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/queue-dropped-messages.md b/docs/framework/wcf/diagnostics/performance-counters/queue-dropped-messages.md new file mode 100644 index 00000000000..628f354bd1a --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/queue-dropped-messages.md @@ -0,0 +1,25 @@ +--- +title: "破棄されたメッセージのキュー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2125e32b-837c-4de9-ac02-750ad8f7472f +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 破棄されたメッセージのキュー +カウンター名 : キューに置かれ破棄されたメッセージ。 + +## 説明 + このサービスでキューに置かれたトランスポートによって破棄されたメッセージの数です。 + + メッセージがいつ破棄されるかの詳細については、「[有害メッセージの処理](http://go.microsoft.com/fwlink/?LinkId=96233)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/queued-poison-messages-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/queued-poison-messages-per-second.md new file mode 100644 index 00000000000..05bdd12de8f --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/queued-poison-messages-per-second.md @@ -0,0 +1,27 @@ +--- +title: "1 秒あたりのキューに置かれた有害メッセージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d193fdd1-02f1-44a0-906e-f632a8f574c3 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 1 秒あたりのキューに置かれた有害メッセージ +カウンター名 : 1 秒あたりのキューに置かれた有害メッセージ + +## 説明 + このサービスでキューに置かれたトランスポートによって 1 秒あたりに有害とマークされたメッセージの数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/queued-poison-messages.md b/docs/framework/wcf/diagnostics/performance-counters/queued-poison-messages.md new file mode 100644 index 00000000000..d3eb7267fbe --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/queued-poison-messages.md @@ -0,0 +1,25 @@ +--- +title: "キューに置かれた有害メッセージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8257ba45-08ac-4301-93c3-c93b4b78737a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# キューに置かれた有害メッセージ +カウンター名 : キューに置かれた有害メッセージ。 + +## 説明 + このサービスでキューに置かれたトランスポートによって有害とマークされたメッセージの数です。 + + メッセージが有害とマークされる状況の詳細については、「[Poison\-Message Handling](http://go.microsoft.com/fwlink/?LinkID=96233)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/queued-rejected-messages-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/queued-rejected-messages-per-second.md new file mode 100644 index 00000000000..a1bf0da9474 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/queued-rejected-messages-per-second.md @@ -0,0 +1,27 @@ +--- +title: "1 秒あたりのキューに置かれた拒否メッセージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 77ea9aa3-b9e2-4a1d-a65e-5ca115ba0567 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 1 秒あたりのキューに置かれた拒否メッセージ +カウンター名 : 1 秒あたりに拒否されたキューに置かれたメッセージ。 + +## 説明 + このサービスでキューに置かれたトランスポートによって 1 秒あたりに拒否されたメッセージの数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/queued-rejected-messages.md b/docs/framework/wcf/diagnostics/performance-counters/queued-rejected-messages.md new file mode 100644 index 00000000000..340cd4391e7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/queued-rejected-messages.md @@ -0,0 +1,25 @@ +--- +title: "キューに置かれた拒否メッセージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8eb75a76-4fb3-4d33-bd9f-6d91e09c5843 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# キューに置かれた拒否メッセージ +カウンター名 : キューに置かれた拒否されたメッセージ。 + +## 説明 + このサービスでキューに置かれたトランスポートによって拒否されたメッセージの数です。 + + メッセージが拒否される状況の詳細については、「[Poison\-Message Handling](http://go.microsoft.com/fwlink/?LinkID=96233)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-messages-dropped-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-messages-dropped-per-second.md new file mode 100644 index 00000000000..876882ddfc0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-messages-dropped-per-second.md @@ -0,0 +1,27 @@ +--- +title: "信頼できるメッセージの 1 秒あたりの破棄されたメッセージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a11b0b80-b242-48e1-b0bb-7f756db5486b +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 信頼できるメッセージの 1 秒あたりの破棄されたメッセージ +カウンター名 : 1 秒あたりに破棄された信頼できるメッセージ セッション + +## 説明 + このサービスで 1 秒間に破棄された信頼できるメッセージング メッセージの合計数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-messages-dropped.md b/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-messages-dropped.md new file mode 100644 index 00000000000..80088d7b036 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-messages-dropped.md @@ -0,0 +1,23 @@ +--- +title: "信頼できるメッセージの破棄されたメッセージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9933abaa-33ec-4245-b083-bf94415929b5 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 信頼できるメッセージの破棄されたメッセージ +カウンター名 : 破棄された信頼できるメッセージ。 + +## 説明 + このサービスで破棄された信頼できるメッセージング メッセージの合計数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-sessions-faulted-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-sessions-faulted-per-second.md new file mode 100644 index 00000000000..f594c15c11e --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-sessions-faulted-per-second.md @@ -0,0 +1,27 @@ +--- +title: "1 秒あたりのエラーとなった信頼できるメッセージ セッション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8f8ca2eb-1be4-4b6a-aa78-fcd3ee145fe8 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 1 秒あたりのエラーとなった信頼できるメッセージ セッション +カウンター名 : 1 秒あたりのエラーとなった信頼できるメッセージ セッション + +## 説明 + 1 秒以内にこのサービスでエラーになった信頼できるメッセージ セッションの数。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-sessions-faulted.md b/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-sessions-faulted.md new file mode 100644 index 00000000000..a7c6c3b2941 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/reliable-messaging-sessions-faulted.md @@ -0,0 +1,23 @@ +--- +title: "信頼できるメッセージ セッション違反 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0b8a694a-92fa-498b-b5d6-fcf75e4d329d +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 信頼できるメッセージ セッション違反 +カウンター名 : エラーとなった信頼できるメッセージ。 + +## 説明 + このサービスでエラーが発生した信頼できるメッセージ セッションの数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/security-calls-not-authorized-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/security-calls-not-authorized-per-second.md new file mode 100644 index 00000000000..082e6c513ec --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/security-calls-not-authorized-per-second.md @@ -0,0 +1,29 @@ +--- +title: "1 秒あたりの承認されていないセキュリティ呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0f189767-8c05-478a-8f0b-9228e5d351e5 +caps.latest.revision: 9 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 9 +--- +# 1 秒あたりの承認されていないセキュリティ呼び出し +カウンター名 : 1 秒あたりの承認されていないセキュリティ呼び出し。 + +## 説明 + この操作で 1 秒あたりに承認に失敗した呼び出しの数です。 + + このカウンターは メソッドで `false` が返された場合にインクリメントされます。受信メッセージが有効なユーザーから適切な保護を適用して送信されたものであり、その一方でそのユーザーが特定のタスクの実行を許可されていないことを示します。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/security-calls-not-authorized.md b/docs/framework/wcf/diagnostics/performance-counters/security-calls-not-authorized.md new file mode 100644 index 00000000000..64a5b5d2a43 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/security-calls-not-authorized.md @@ -0,0 +1,23 @@ +--- +title: "承認されていないセキュリティ呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cb6acdcd-7336-42e1-9ae8-ac891336cd58 +caps.latest.revision: 6 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 6 +--- +# 承認されていないセキュリティ呼び出し +カウンター名 : 承認されていないセキュリティ呼び出し。 + +## 説明 + このカウンターは メソッドで `false` が返された場合にインクリメントされます。 受信メッセージが有効なユーザーから適切な保護を適用して送信されたものであり、その一方でそのユーザーが特定のタスクの実行を許可されていないことを示します。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/security-validation-and-authentication-failures-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/security-validation-and-authentication-failures-per-second.md new file mode 100644 index 00000000000..2043913bfe7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/security-validation-and-authentication-failures-per-second.md @@ -0,0 +1,41 @@ +--- +title: "1 秒あたりのセキュリティ検証と認証エラー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 266c3bd3-2ffc-4471-94b7-3675443be1ac +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# 1 秒あたりのセキュリティ検証と認証エラー +カウンター名 : 1 秒あたりのセキュリティ検証と認証エラー + +## 説明 + このカウンターは、"承認されていないセキュリティ呼び出し" カウンターでカウントの対象とならないセキュリティ上の問題が原因でメッセージが拒否されるたびに増分されます。この問題には、次のようなものがあります。 + +- メッセージからクライアント トークンを読み取ることができない。 + +- クライアント トークンが認証に失敗した \(例 : 無効なパスワード\)。 + +- 署名の検証に失敗した \(例 : メッセージが改ざんされた\)。 + +- メッセージが以前のメッセージと重複する。この現象はリプレイ攻撃中に発生することがあります。 + +- 復号化に失敗した。 + +- 一部の必須要素 \(タイムスタンプ、暗号化データ ブロックなど\) がメッセージにない。 + +- TLSNEGO\/SPNEGO ハンドシェイク中にエラーが発生した。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N1\-N0\)\/\(\(D1\-D0\)\/F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/security-validation-and-authentication-failures.md b/docs/framework/wcf/diagnostics/performance-counters/security-validation-and-authentication-failures.md new file mode 100644 index 00000000000..731c9cfd72d --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/security-validation-and-authentication-failures.md @@ -0,0 +1,37 @@ +--- +title: "セキュリティ検証と認証エラー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0d4e3666-dfc6-421c-baf8-9479c22f7050 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# セキュリティ検証と認証エラー +カウンター名 : セキュリティ検証と認証エラー + +## 説明 + このカウンターは、"承認されていないセキュリティ呼び出し" カウンターでカウントの対象とならないセキュリティ上の問題が原因でメッセージが拒否されるたびに増分されます。この問題には、次のようなものがあります。 + +- メッセージからクライアント トークンを読み取ることができない。 + +- クライアント トークンが認証に失敗した \(例 : 無効なパスワード\)。 + +- 署名の検証に失敗した \(例 : メッセージが改ざんされた\)。 + +- メッセージが以前のメッセージと重複する。この現象はリプレイ攻撃中に発生することがあります。 + +- 復号化に失敗した。 + +- 一部の必須要素 \(タイムスタンプ、暗号化データ ブロックなど\) がメッセージにない。 + +- TLSNEGO\/SPNEGO ハンドシェイク中にエラーが発生した。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-call-duration.md b/docs/framework/wcf/diagnostics/performance-counters/service-call-duration.md new file mode 100644 index 00000000000..d37f1bb12fe --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-call-duration.md @@ -0,0 +1,26 @@ +--- +title: "サービス : 呼び出し時間 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dfe42a97-daf8-42c3-ba34-4bb8230cdebb +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# サービス : 呼び出し時間 +カウンター名 : 呼び出す期間 + +## 説明 + このサービスの呼び出しの平均期間です。 平均期間は、\(N1\-N0\)\/\(D1\-D0\) という数式に基づいて計算されます。 + +## 参照 + [PERF\_AVERAGE\_TIMER](http://go.microsoft.com/fwlink/?LinkID=95015) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-calls-failed-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/service-calls-failed-per-second.md new file mode 100644 index 00000000000..3936538d520 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-calls-failed-per-second.md @@ -0,0 +1,36 @@ +--- +title: "サービス : 1 秒あたりの失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5a2c7939-107d-4f0c-b43c-e02e079e8a9d +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# サービス : 1 秒あたりの失敗した呼び出し +カウンター名 : 1 秒あたりの失敗した呼び出し。 + +## 説明 + このサービスが 1 秒間に受信した未処理の例外を含む呼び出しの回数。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) + + マネージ コードでは、エラー状態が発生すると例外がスローされます。 + + マネージ コードでは、エラー状態が発生すると例外がスローされます。 + + このカウンターは、このサービスで未処理の例外が発生するたびにインクリメントされます。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-calls-failed.md b/docs/framework/wcf/diagnostics/performance-counters/service-calls-failed.md new file mode 100644 index 00000000000..9ec90b3cb27 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-calls-failed.md @@ -0,0 +1,26 @@ +--- +title: "サービス : 失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6f688ff4-05ab-4528-98c9-99a6ace28ec6 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# サービス : 失敗した呼び出し +カウンター名 : 失敗した呼び出し。 + +## 説明 + このサービスで未処理の例外が発生した呼び出しの回数です。このカウンターは、このサービスで未処理の例外が発生するたびにインクリメントされます。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-calls-faulted-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/service-calls-faulted-per-second.md new file mode 100644 index 00000000000..5bfd2ac74a7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-calls-faulted-per-second.md @@ -0,0 +1,32 @@ +--- +title: "サービス : 1 秒あたりの失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 94247356-2b29-4b50-b639-91ca8c1cf3a9 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# サービス : 1 秒あたりの失敗した呼び出し +カウンター名 : 1 秒あたりの失敗した呼び出し。 + +## 説明 + このサービスの呼び出しのうち、エラーを返したものの 1 秒あたりの回数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) + + [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アプリケーションでは、サービス メソッドは SOAP エラー メッセージを使用して操作エラー情報を通知します。SOAP エラーは、サービス操作のメタデータに含まれるメッセージ型であり、堅牢かつインタラクティブに実行できるようにクライアントが使用するエラー コントラクトを作成するために使用されます。SOAP エラーは XML 形式でクライアントに渡されるので、相互運用性の面でも優れています。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-calls-faulted.md b/docs/framework/wcf/diagnostics/performance-counters/service-calls-faulted.md new file mode 100644 index 00000000000..8cfdcb3ffbc --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-calls-faulted.md @@ -0,0 +1,26 @@ +--- +title: "サービス : 失敗した呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6da7f100-3f61-4b3c-9409-fe1360829b8a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# サービス : 失敗した呼び出し +カウンター名 : 失敗した呼び出し。 + +## 説明 + このサービスの呼び出しのうち、エラーとなったものの回数です。[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] アプリケーションでは、サービス メソッドは SOAP エラー メッセージを使用して操作エラー情報を通知します。SOAP エラーは、サービス操作のメタデータに含まれるメッセージ型であり、堅牢かつインタラクティブに実行できるようにクライアントが使用するエラー コントラクトを作成するために使用されます。SOAP エラーは XML 形式でクライアントに渡されるので、相互運用性の面でも優れています。 + +## 参照 + [コントラクトおよびサービスのエラーの指定と処理](../../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-calls-outstanding.md b/docs/framework/wcf/diagnostics/performance-counters/service-calls-outstanding.md new file mode 100644 index 00000000000..67fc64c56af --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-calls-outstanding.md @@ -0,0 +1,23 @@ +--- +title: "サービス : 未完了の呼び出し数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 88eb4019-b99b-491d-bfd6-15129bb32821 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# サービス : 未完了の呼び出し数 +カウンター名 : 保留状態の呼び出し + +## 説明 + このサービスへの呼び出しのうち、処理中のものの数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-calls-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/service-calls-per-second.md new file mode 100644 index 00000000000..824aa0051cf --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-calls-per-second.md @@ -0,0 +1,27 @@ +--- +title: "サービス : 1 秒あたりの呼び出し数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6261d28d-d449-425a-b9fc-a4ee14079134 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# サービス : 1 秒あたりの呼び出し数 +カウンター名 : 1 秒あたりの呼び出し。 + +## 説明 + このサービスが 1 秒あたりに呼び出される回数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\)。ここで、分子 \(N\) は最後のサンプル間隔中に実行された操作の数を表し、分母 \(D\) は最後のサンプル間隔中に経過したタイマー刻み数を表し、F はタイマー刻みの頻度を表します。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-calls.md b/docs/framework/wcf/diagnostics/performance-counters/service-calls.md new file mode 100644 index 00000000000..b7fe4c9c745 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-calls.md @@ -0,0 +1,23 @@ +--- +title: "サービス : 呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1e6b161a-3a12-4106-a092-3eeb219fc9bb +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# サービス : 呼び出し +カウンター名 : 呼び出し。 + +## 説明 + このサービスへの呼び出しの数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-performance-counters.md b/docs/framework/wcf/diagnostics/performance-counters/service-performance-counters.md new file mode 100644 index 00000000000..7085e05447e --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-performance-counters.md @@ -0,0 +1,30 @@ +--- +title: "サービス パフォーマンス カウンター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4210f549-31f2-4ea7-99bd-69eaffb98ddf +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# サービス パフォーマンス カウンター +サービスのパフォーマンス カウンターはサービス動作全体を測定し、サービス全体のパフォーマンスを診断するために使用できます。パフォーマンス モニター \(Perfmon.exe\) を使用して表示する場合、これらのカウンターは、`ServiceModelService 4.0.0.0` パフォーマンス オブジェクトの下にあります。インスタンスには次のパターンの名前が付けられています。 + +``` +ServiceName@ServiceBaseAddress +``` + +> [!CAUTION] +> パフォーマンス カウンターのインスタンス名の長さには制限があります。[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] カウンターのインスタンス名の長さが最大長を超えると、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] によってインスタンス名の一部はハッシュ値に置き換えられます。 + +## 参照 + [WCF パフォーマンス カウンター](../../../../../docs/framework/wcf/diagnostics/performance-counters/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-security-calls-not-authorized-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/service-security-calls-not-authorized-per-second.md new file mode 100644 index 00000000000..f2d4aefa94c --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-security-calls-not-authorized-per-second.md @@ -0,0 +1,29 @@ +--- +title: "サービス : 1 秒あたりの承認されていないセキュリティ呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1eeade5a-ea62-4757-b1f9-1b1b1746abd1 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# サービス : 1 秒あたりの承認されていないセキュリティ呼び出し +カウンター名 : 1 秒あたりの承認されていないセキュリティ呼び出し + +## 説明 + 有効なユーザーから適切な保護を適用して送信されたが、特定のタスクの実行がユーザーに許可されていない受信メッセージの 1 秒あたりの数です。 + + このカウンターは メソッドで `false` が返された場合にインクリメントされます。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkId=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-security-calls-not-authorized.md b/docs/framework/wcf/diagnostics/performance-counters/service-security-calls-not-authorized.md new file mode 100644 index 00000000000..a913443a8f4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-security-calls-not-authorized.md @@ -0,0 +1,23 @@ +--- +title: "サービス : 承認されていないセキュリティ呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3024b20a-5250-4bd1-a38c-c6d79f89610b +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# サービス : 承認されていないセキュリティ呼び出し +カウンター名 : 承認されていないセキュリティ呼び出し。 + +## 説明 + このカウンターは メソッドで `false` が返された場合にインクリメントされます。受信メッセージが有効なユーザーから適切な保護を適用して送信されたものであり、その一方でそのユーザーが特定のタスクの実行を許可されていないことを示します。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-security-validation-and-authentication-failures-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/service-security-validation-and-authentication-failures-per-second.md new file mode 100644 index 00000000000..943ae39f0c6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-security-validation-and-authentication-failures-per-second.md @@ -0,0 +1,41 @@ +--- +title: "サービス : 1 秒あたりのセキュリティ検証と認証エラー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4af18009-e778-490b-9ba6-e76485285830 +caps.latest.revision: 9 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 9 +--- +# サービス : 1 秒あたりのセキュリティ検証と認証エラー +カウンター名 : 1 秒あたりのセキュリティ検証と認証エラー + +## 説明 + このカウンターは、"承認されていないセキュリティ呼び出し" カウンターでカウントの対象とならないセキュリティ上の問題が原因でメッセージが拒否されるたびに増分されます。この問題には、次のようなものがあります。 + +- メッセージからクライアント トークンを読み取ることができない。 + +- クライアント トークンが認証に失敗した \(例 : 無効なパスワード\)。 + +- 署名の検証に失敗した \(例 : メッセージが改ざんされた\)。 + +- メッセージが以前のメッセージと重複する。この現象はリプレイ攻撃中に発生することがあります。 + +- 復号化に失敗した。 + +- 一部の必須要素 \(タイムスタンプ、暗号化データ ブロックなど\) がメッセージにない。 + +- TLSNEGO\/SPNEGO ハンドシェイク中にエラーが発生した。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-security-validation-and-authentication-failures.md b/docs/framework/wcf/diagnostics/performance-counters/service-security-validation-and-authentication-failures.md new file mode 100644 index 00000000000..657d876512e --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-security-validation-and-authentication-failures.md @@ -0,0 +1,37 @@ +--- +title: "サービス : セキュリティ検証と認証エラー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 55c98268-b1ad-459d-851b-25ef52248187 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# サービス : セキュリティ検証と認証エラー +カウンター名 : セキュリティ検証と認証エラー + +## 説明 + このカウンターは、"承認されていないセキュリティ呼び出し" カウンターでカウントの対象とならないセキュリティ上の問題が原因でメッセージが拒否されるたびに増分されます。この問題には、次のようなものがあります。 + +- メッセージからクライアント トークンを読み取ることができない。 + +- クライアント トークンが認証に失敗した \(例 : 無効なパスワード\)。 + +- 署名の検証に失敗した \(例 : メッセージが改ざんされた\)。 + +- メッセージが以前のメッセージと重複する。この現象はリプレイ攻撃中に発生することがあります。 + +- 復号化に失敗した。 + +- 一部の必須要素 \(タイムスタンプ、暗号化データ ブロックなど\) がメッセージにない。 + +- TLSNEGO\/SPNEGO ハンドシェイク中にエラーが発生した。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-transactions-flowed-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/service-transactions-flowed-per-second.md new file mode 100644 index 00000000000..d654b97d94a --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-transactions-flowed-per-second.md @@ -0,0 +1,27 @@ +--- +title: "サービス : 1 秒あたりのトランザクション フロー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ec72eb49-2942-4811-91df-d6e5dad81fd8 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# サービス : 1 秒あたりのトランザクション フロー +カウンター名 : 1 秒あたりのトランザクション フロー。 + +## 説明 + このサービスでの操作に対して実行された 1 秒あたりのトランザクションの数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/service-transactions-flowed.md b/docs/framework/wcf/diagnostics/performance-counters/service-transactions-flowed.md new file mode 100644 index 00000000000..2ecc51371b6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/service-transactions-flowed.md @@ -0,0 +1,23 @@ +--- +title: "サービス : トランザクション フロー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7c564d7d-60d3-45a4-a9a1-c78f62ace57f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# サービス : トランザクション フロー +カウンター名 : トランザクション フロー。 + +## 説明 + このサービスにおける操作に送信されたトランザクションの数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-aborted-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-aborted-per-second.md new file mode 100644 index 00000000000..bdf571a3ac9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-aborted-per-second.md @@ -0,0 +1,27 @@ +--- +title: "1 秒あたりの中止されたトランザクション操作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 19fc993f-2b3d-4898-852e-3b98ec2153a5 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 1 秒あたりの中止されたトランザクション操作 +カウンター名 : 1 秒あたりの中止されたトランザクション処理数。 + +## 説明 + 1 秒あたりに、このサービスで中止されたトランザクション処理の数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-aborted.md b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-aborted.md new file mode 100644 index 00000000000..8ff7a81cb64 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-aborted.md @@ -0,0 +1,23 @@ +--- +title: "中止されたトランザクション操作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d0ff844c-a33c-4ecf-8be5-b5b33635914a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 中止されたトランザクション操作 +カウンター名 : 中止されたトランザクション操作 + +## 説明 + このサービスで中止されたトランザクション操作の数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-committed-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-committed-per-second.md new file mode 100644 index 00000000000..fd340cd3b18 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-committed-per-second.md @@ -0,0 +1,27 @@ +--- +title: "1 秒あたりのコミットされたトランザクション操作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7318921b-47c4-4c8c-9fdd-41a92061c53f +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 1 秒あたりのコミットされたトランザクション操作 +カウンター名 : 1 秒あたりのコミットされたトランザクション操作。 + +## 説明 + 1 秒あたりに、このサービスでコミットされたトランザクション操作の数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-committed.md b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-committed.md new file mode 100644 index 00000000000..3c1871d3182 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-committed.md @@ -0,0 +1,23 @@ +--- +title: "コミットされたトランザクション操作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6a1768cd-d103-4cd3-a26c-b014465f9236 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# コミットされたトランザクション操作 +カウンター名 : コミットされたトランザクション操作。 + +## 説明 + このサービスでコミットされたトランザクション操作の数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-in-doubt-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-in-doubt-per-second.md new file mode 100644 index 00000000000..fc061005a9d --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-in-doubt-per-second.md @@ -0,0 +1,27 @@ +--- +title: "1 秒あたりの不明なトランザクション操作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7e6b0716-c107-42e5-a21d-31d988e7a691 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 1 秒あたりの不明なトランザクション操作 +カウンター名 : 1 秒あたりの不明なトランザクション操作。 + +## 説明 + このサービスでの 1 秒あたりの結果が不明なランザクション操作の数です。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-in-doubt.md b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-in-doubt.md new file mode 100644 index 00000000000..24c98ff1dbf --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/transacted-operations-in-doubt.md @@ -0,0 +1,23 @@ +--- +title: "不明なトランザクション操作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 83c7a86d-37de-4c6a-aa09-5d53fc4476b6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 不明なトランザクション操作 +カウンター名 : 不明なトランザクション操作。 + +## 説明 + このサービスでの結果が不明なトランザクション操作の数です。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/transactions-flowed-per-second.md b/docs/framework/wcf/diagnostics/performance-counters/transactions-flowed-per-second.md new file mode 100644 index 00000000000..f43b1c3e73e --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/transactions-flowed-per-second.md @@ -0,0 +1,27 @@ +--- +title: "1 秒あたりのトランザクション フロー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b9f661e1-576c-48fc-9fdf-91853e0749e8 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 1 秒あたりのトランザクション フロー +カウンター名 : 1 秒あたりのトランザクション フロー + +## 説明 + この操作に対して実行された 1 秒あたりのトランザクションの数です。 このカウンターは、操作に送信されたメッセージにトランザクション ID が存在する場合にインクリメントされます。 + + このカウンターは、パフォーマンス カウンター型 [PERF\_COUNTER\_COUNTER](http://go.microsoft.com/fwlink/?LinkID=94649) であり、その値は次の式を使用して計算されます。 + + \(N 1 \- N 0 \) \/ \( \(D 1 \-D 0 \) \/ F\) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/performance-counters/transactions-flowed.md b/docs/framework/wcf/diagnostics/performance-counters/transactions-flowed.md new file mode 100644 index 00000000000..4e589dcdfe3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/performance-counters/transactions-flowed.md @@ -0,0 +1,23 @@ +--- +title: "トランザクション フロー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: efeb0167-2014-4c08-b07a-44885bf80a66 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# トランザクション フロー +カウンター名 : トランザクション フロー + +## 説明 + この操作に対して実行されたトランザクションの数です。 このカウンターは、操作に送信され、トランザクション ID を含んでいるメッセージに対してインクリメントされます。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/security-concerns-for-message-logging.md b/docs/framework/wcf/diagnostics/security-concerns-for-message-logging.md new file mode 100644 index 00000000000..c72da94f6bc --- /dev/null +++ b/docs/framework/wcf/diagnostics/security-concerns-for-message-logging.md @@ -0,0 +1,121 @@ +--- +title: "メッセージ ログ記録のセキュリティの考慮事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 21f513f2-815b-47f3-85a6-03c008510038 +caps.latest.revision: 17 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 17 +--- +# メッセージ ログ記録のセキュリティの考慮事項 +ここでは、メッセージ ログに表示される機密データだけでなく、メッセージ ログによって生成されるイベントを保護する方法についても説明します。 + +## セキュリティに関する注意事項 + +### 機密情報のログ記録 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、アプリケーション固有のヘッダーおよび本文内のデータを変更することはありません。また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、アプリケーション固有のヘッダーまたは本文データにある個人情報も追跡しません。 + + メッセージのログ記録が有効になっていると、アプリケーション固有ヘッダー内にある個人情報 \(クエリ文字列など\)、および本文情報 \(クレジット カード番号\) がログ内で確認できるようになります。アプリケーションを配置するユーザーは、構成ファイルとログ ファイルに対するアクセス制御を実施する必要があります。この種の情報を表示しないようにするには、ログ記録を無効にするか、ログを共有する場合にこの種のデータにフィルターをかけて除外します。 + + ログ ファイルの内容が意図せず公開されることを防ぐためには、次のヒントに従います。 + +- Web ホストおよび自己ホストの両方のシナリオにおいて、ログ ファイルがアクセス制御リスト \(ACL\) によって保護されていることを確認します。 + +- Web 要求を使用して簡単に処理できないファイル拡張子を選択します。たとえば、.xml ファイルの拡張子を選ぶのは安全ではありません。インターネット インフォメーション サービス \(IIS\) の管理ガイドを参照して、処理できる拡張子のリストを確認します。 + +- ログ ファイルのある場所への絶対パスを指定します。この場所は、部外者が Web ブラウザーを使用してアクセスできないように、Web ホストの vroot パブリック ディレクトリの外にします。 + + 既定では、キーおよびユーザー名やパスワードなどの個人を特定できる情報 \(PII\) は、トレースおよびログに記録するメッセージではありません。しかし、コンピューターの管理者は、Machine.config ファイルの `machineSettings` 要素にある `enableLoggingKnownPII` 属性を使用して、コンピューター上で実行されているアプリケーションに対し、既知の PII \(個人を特定できる情報\) のログ記録を許可できます。次の構成では、この設定方法について示します。 + +``` + + + + + +``` + + アプリケーションを配置するユーザーが App.config ファイルか Web.config ファイルのいずれかで `logKnownPii` 属性を使用することで、PII ログを可能にする方法を次に示します。 + +``` + + + + + + + + + +``` + + 両方の設定が `true` の場合にのみ、PII はログに記録されます。2 種類のスイッチを組み合わせることで、各アプリケーションで既知の PII のログを柔軟に記録できるようになります。 + +> [!IMPORTANT] +> [!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] では、PII ログ記録を有効にするには、Web.config ファイルまたは App.config ファイルで `logEntireMessage` フラグと `logKnownPii` フラグを `true` に設定する必要があります。` + + + + + + + + + + + + + +``` + + `` の要素が Machine.config ファイルに含まれていない場合、システムは をスローします。 + + 変更点はアプリケーションが開始されるか、再起動されるまで、反映されません。両方の属性も `true` に設定されている場合は、イベントは開始時にログに記録されます。また、`logKnownPii` が `true` に設定され、`enableLoggingKnownPii` が `false` に設定されている場合にも、イベントはログに記録されます。 + + コンピューターの管理者およびアプリケーションを配置するユーザーは、これらの 2 種類のスイッチを使用する場合に注意する必要があります。PII のログ記録が有効になっている場合は、セキュリティ キーと PII がログに記録されます。ログ記録を無効にしても、機密情報およびアプリケーション固有のデータは、依然としてメッセージのヘッダーと本体に記録されています。プライバシーと PII の公開を防止するための詳細な説明については、「[ユーザー プライバシー](http://go.microsoft.com/fwlink/?LinkID=94647)」を参照してください。 + +> [!CAUTION] +> PII は無効なメッセージでは非表示になりません。このようなメッセージは、変更されずにそのままログに記録されます。上に示した属性は、このことに影響を与えません。 + +### カスタム トレース リスナー + カスタム トレース リスナーをメッセージ ログのトレース ソースに追加する権限は、管理者だけに付与する必要があります。これは、機密情報の漏洩につながるメッセージをリモートで送信するように、悪意のあるカスタム リスナーを構成することが可能なためです。また、ネットワークを介してリモート データベースなどにメッセージを送信するようにカスタム リスナーを構成している場合は、リモート コンピューター上のメッセージ ログに対する適切なアクセス制御を実施する必要があります。 + +## メッセージ ログ記録でトリガーされるイベント + メッセージ ログ記録で発生するすべてのイベントを以下に示します。 + +- Message logging on : このイベントは、メッセージ ログ記録が構成内で、または WMI を介して有効になっている場合に発生します。イベントの内容は "メッセージのログ記録が有効になりました。機密情報は、通信回線上で暗号化されていた場合でも平文で記録される可能性があります \(メッセージ本文など\)" となります。 + +- Message logging off : このイベントは、メッセージ ログ記録が WMI を介して無効になっている場合に発生します。イベントの内容は "メッセージのログ記録が無効になりました" となります。 + +- Log Known PII On : このイベントは、既知の PII のログ記録が有効になっている場合に発生します。これは、Machine.config ファイルの `machineSettings` 要素の `enableLoggingKnownPii` 属性が `true` に設定され、App.config または Web.config ファイルの `source` 要素の `logKnownPii` 属性が `true` に設定されている場合に発生します。 + +- Log Known PII Not Allowed : このイベントは既知の PII のログ記録が許可されていない場合に発生します。これは、App.config または Web.config ファイルの `source` 要素の `logKnownPii` 属性が `true` に設定されているのに、Machine.config ファイルの `machineSettings` 要素の `enableLoggingKnownPii` 属性が `false` に設定されている場合に発生します。例外はスローされません。 + + これらのイベントは、Windows に付属するイベント ビューアー ツールを使用して表示できます。詳細については、「[イベント ログ](../../../../docs/framework/wcf/diagnostics/event-logging/index.md)」を参照してください。 + +## 参照 + [メッセージ ログ](../../../../docs/framework/wcf/diagnostics/message-logging.md) + [トレースに関するセキュリティの考慮事項と役立つヒント](../../../../docs/framework/wcf/diagnostics/tracing/security-concerns-and-useful-tips-for-tracing.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/servicemodel-registration-tool.md b/docs/framework/wcf/diagnostics/servicemodel-registration-tool.md new file mode 100644 index 00000000000..1c2488d3a9e --- /dev/null +++ b/docs/framework/wcf/diagnostics/servicemodel-registration-tool.md @@ -0,0 +1,20 @@ +--- +title: "ServiceModel 登録ツール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 55204da3-fb36-4ab0-9d23-73e533ba8969 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# ServiceModel 登録ツール +ServiceModel 登録ツールは、単一のコンピューターで ServiceModel の登録を管理できるコマンド ライン ツールです。このツールの詳細については、「[ServiceModel 登録ツール \(ServiceModelReg.exe\)](../../../../docs/framework/wcf/servicemodelreg-exe.md)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/TOC.md b/docs/framework/wcf/diagnostics/tracing/TOC.md new file mode 100644 index 00000000000..b2e65ce4ed3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/TOC.md @@ -0,0 +1,421 @@ +# [System.ServiceModel.Security.SecurityIdentityHostNameNormalizationFailure](system-servicemodel-security-securityidentityhostnamenormalizationfailure.md) +# [System.ServiceModel.EvaluationContextNotFound](system-servicemodel-evaluationcontextnotfound.md) +# [System.ServiceModel.Channels.MsmqDetected](system-servicemodel-channels-msmqdetected.md) +# [System.ServiceModel.Channels.EndpointListenerClose](system-servicemodel-channels-endpointlistenerclose.md) +# [System.ServiceModel.Diagnostics.TraceHandledException](system-servicemodel-diagnostics-tracehandledexception.md) +# [System.ServiceModel.Channels.PeerNodeOpenFailed](system-servicemodel-channels-peernodeopenfailed.md) +# [System.ServiceModel.Security.IssuanceTokenProviderBeginSecurityNegotiation](system-servicemodel-security-issuancetokenproviderbeginsecuritynegotiation.md) +# [System.ServiceModel.Activation.WebHostServiceActivated](system-servicemodel-activation-webhostserviceactivated.md) +# [System.ServiceModel.Activation.ServiceShutdown](system-servicemodel-activation-serviceshutdown.md) +# [System.ServiceModel.Security.SecurityIdentityVerificationFailure](system-servicemodel-security-securityidentityverificationfailure.md) +# [System.ServiceModel.ComIntegration.ComIntegrationInstanceCreationSuccess](system-servicemodel-comintegration-comintegrationinstancecreationsuccess.md) +# [ユーザー コード トレースの出力](emitting-user-code-traces.md) +# [System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxCommitted](system-servicemodel-comintegration-comintegrationtxproxytxcommitted.md) +# [System.ServiceModel.ComIntegration.ComIntegrationTLBImportStarting](system-servicemodel-comintegration-comintegrationtlbimportstarting.md) +# [System.ServiceModel.Security.SecurityAuditWrittenFailure](system-servicemodel-security-securityauditwrittenfailure.md) +# [System.IdentityModel.Selectors.StoreFailedToOpenStore](system-identitymodel-selectors-storefailedtoopenstore.md) +# [エンドツーエンドのトレースのシナリオ](end-to-end-tracing-scenarios.md) +# [伝達](propagation.md) +# [System.ServiceModel.Security.SecurityActiveServerSessionRemoved](system-servicemodel-security-securityactiveserversessionremoved.md) +# [エンドツーエンドのトレース](end-to-end-tracing.md) +# [System.ServiceModel.Security.NegotiationTokenProviderAttached](system-servicemodel-security-negotiationtokenproviderattached.md) +# [System.ServiceModel.ServiceThrottleLimitReached](system-servicemodel-servicethrottlelimitreached.md) +# [System.Runtime.Serialization.XsdImportEnd](system-runtime-serialization-xsdimportend.md) +# [System.Runtime.Serialization.XsdImportAnnotationFailed](system-runtime-serialization-xsdimportannotationfailed.md) +# [System.ServiceModel.CommunicationObjectAbortFailed](system-servicemodel-communicationobjectabortfailed.md) +# [System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartedService](system-servicemodel-comintegration-comintegrationservicehoststartedservice.md) +# [System.ServiceModel.Channels.PeerNodeAuthenticationTimeout](system-servicemodel-channels-peernodeauthenticationtimeout.md) +# [System.ServiceModel.Activation.ServiceStop](system-servicemodel-activation-servicestop.md) +# [System.ServiceModel.Channels.MsmqPoolFull](system-servicemodel-channels-msmqpoolfull.md) +# [System.ServiceModel.Channels.MsmqCannotReadQueues](system-servicemodel-channels-msmqcannotreadqueues.md) +# [System.ServiceModel.PerformanceCountersFailedForService](system-servicemodel-performancecountersfailedforservice.md) +# [System.ServiceModel.ExtensionCollectionIsEmpty](system-servicemodel-extensioncollectionisempty.md) +# [System.ServiceModel.Channels.PeerMaintainerActivity](system-servicemodel-channels-peermaintaineractivity.md) +# [System.ServiceModel.ConfiguredExtensionTypeNotFound](system-servicemodel-configuredextensiontypenotfound.md) +# [System.ServiceModel.GetChannelEndpointElement](system-servicemodel-getchannelendpointelement.md) +# [System.ServiceModel.Security.IssuanceTokenProviderUsingCachedToken](system-servicemodel-security-issuancetokenproviderusingcachedtoken.md) +# [System.ServiceModel.Activation.ServiceShutdownError](system-servicemodel-activation-serviceshutdownerror.md) +# [System.ServiceModel.PerformanceCountersFailedOnRelease](system-servicemodel-performancecountersfailedonrelease.md) +# [System.ServiceModel.Channels.PrematureDatagramEof](system-servicemodel-channels-prematuredatagrameof.md) +# [System.ServiceModel.Activation.MessageQueueDuplicatedPipeError](system-servicemodel-activation-messagequeueduplicatedpipeerror.md) +# [Microsoft.Transactions.TransactionBridge.RegisterCoordinator](microsoft-transactions-transactionbridge-registercoordinator.md) +# [System.ServiceModel.ComIntegration.ComIntegrationTypedChannelBuilderLoaded](system-servicemodel-comintegration-comintegrationtypedchannelbuilderloaded.md) +# [System.ServiceModel.Channels.TcpChannelMessageReceived](system-servicemodel-channels-tcpchannelmessagereceived.md) +# [System.ServiceModel.Channels.HttpChannelUnexpectedResponse](system-servicemodel-channels-httpchannelunexpectedresponse.md) +# [System.ServiceModel.Channels.MsmqDatagramSent](system-servicemodel-channels-msmqdatagramsent.md) +# [System.ServiceModel.Channels.SystemTimeResolution](system-servicemodel-channels-systemtimeresolution.md) +# [System.ServiceModel.ComIntegration.ComIntegrationInstanceCreationRequest](system-servicemodel-comintegration-comintegrationinstancecreationrequest.md) +# [System.IdentityModel.Selectors.StoreCommitTransaction](system-identitymodel-selectors-storecommittransaction.md) +# [System.ServiceModel.Security.SpnegoClientNegotiationCompleted](system-servicemodel-security-spnegoclientnegotiationcompleted.md) +# [System.ServiceModel.PortSharing.TransportListenerSessionsReceived](system-servicemodel-portsharing-transportlistenersessionsreceived.md) +# [System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxAbortedByContext](system-servicemodel-comintegration-comintegrationtxproxytxabortedbycontext.md) +# [System.ServiceModel.Channels.PnrpUnregisteredAddresses](system-servicemodel-channels-pnrpunregisteredaddresses.md) +# [System.ServiceModel.ExtensionElementAlreadyExistsInCollection](system-servicemodel-extensionelementalreadyexistsincollection.md) +# [トレースの種類の概要](trace-type-summary.md) +# [Microsoft.Transactions.TransactionBridge.ReplayMessageRetry](microsoft-transactions-transactionbridge-replaymessageretry.md) +# [System.Runtime.Serialization.WriteObjectContentEnd](system-runtime-serialization-writeobjectcontentend.md) +# [System.ServiceModel.Channels.ConnectToIPEndpoint](system-servicemodel-channels-connecttoipendpoint.md) +# [System.IdentityModel.IdentityModelAsyncCallbackThrewException](system-identitymodel-identitymodelasynccallbackthrewexception.md) +# [System.ServiceModel.GetConfiguredBinding](system-servicemodel-getconfiguredbinding.md) +# [System.ServiceModel.ComIntegration.ComIntegrationTLBImportFromTypelib](system-servicemodel-comintegration-comintegrationtlbimportfromtypelib.md) +# [System.ServiceModel.Security.SecurityImpersonationSuccess](system-servicemodel-security-securityimpersonationsuccess.md) +# [System.ServiceModel.Security.SecuritySessionRenewFaultSendFailure](system-servicemodel-security-securitysessionrenewfaultsendfailure.md) +# [System.ServiceModel.CommunicationObjectOpening](system-servicemodel-communicationobjectopening.md) +# [System.ServiceModel.TxReleaseServiceInstanceOnCompletion](system-servicemodel-txreleaseserviceinstanceoncompletion.md) +# [System.ServiceModel.ComIntegration.ComIntegrationTLBImportFinished](system-servicemodel-comintegration-comintegrationtlbimportfinished.md) +# [System.ServiceModel.Security.SecurityImpersonationFailure](system-servicemodel-security-securityimpersonationfailure.md) +# [System.Runtime.Serialization.FactoryTypeNotFound](system-runtime-serialization-factorytypenotfound.md) +# [転送](transfer.md) +# [System.ServiceModel.AsyncCallbackThrewException](system-servicemodel-asynccallbackthrewexception.md) +# [System.ServiceModel.ComIntegration.ComIntegrationInvokingMethod](system-servicemodel-comintegration-comintegrationinvokingmethod.md) +# [System.ServiceModel.PortSharing.PortSharingDupHandleGranted](system-servicemodel-portsharing-portsharingduphandlegranted.md) +# [System.ServiceModel.SkipBehavior](system-servicemodel-skipbehavior.md) +# [System.ServiceModel.Security.SecurityServerSessionRenewalFaultSent](system-servicemodel-security-securityserversessionrenewalfaultsent.md) +# [System.ServiceModel.Diagnostics.FailedToReadAnActivityIdHeader](system-servicemodel-diagnostics-failedtoreadanactivityidheader.md) +# [System.ServiceModel.Channels.HttpChannelConcurrentReceiveQuotaReached](system-servicemodel-channels-httpchannelconcurrentreceivequotareached.md) +# [System.ServiceModel.GetDefaultConfiguredBinding](system-servicemodel-getdefaultconfiguredbinding.md) +# [System.ServiceModel.Channels.StreamSecurityUpgradeAccepted](system-servicemodel-channels-streamsecurityupgradeaccepted.md) +# [MSMQ](msmq.md) +# [System.ServiceModel.Activation.MessageQueueRegisterFailed](system-servicemodel-activation-messagequeueregisterfailed.md) +# [System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartedServiceDetails](ssc-comintegration.md) +# [System.ServiceModel.Diagnostics.MessageCountLimitExceeded](microsoft-transactions-transactionbridge-registrationcoordinatorresponseinvalidmetadata.md) +# [System.ServiceModel.Channels.MsmqMoveOrDeleteAttemptFailed](system-servicemodel-comintegration-comintegrationservicehostcreatedserviceendpoint.md) +# [System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartingService](system-servicemodel-comintegration-comintegrationservicehoststartingservice.md) +# [System.Runtime.Serialization.XsdExportBegin](system-runtime-serialization-xsdexportbegin.md) +# [System.ServiceModel.Security.IssuanceTokenProviderRedirectApplied](system-servicemodel-security-issuancetokenproviderredirectapplied.md) +# [System.ServiceModel.WsmexNonCriticalWsdlImportError](system-servicemodel-wsmexnoncriticalwsdlimporterror.md) +# [System.ServiceModel.Channels.MsmqPoisonMessageMovedPoison](system-servicemodel-channels-msmqpoisonmessagemovedpoison.md) +# [System.ServiceModel.Channels.FailedAcceptFromPool](system-servicemodel-channels-failedacceptfrompool.md) +# [System.ServiceModel.Channels.ListenerCreated](system-servicemodel-channels-listenercreated.md) +# [System.ServiceModel.Channels.HttpChannelRequestAborted](system-servicemodel-channels-httpchannelrequestaborted.md) +# [System.ServiceModel.Diagnostics.AppDomainUnload](system-servicemodel-diagnostics-appdomainunload.md) +# [System.ServiceModel.CommunicationObjectFaultReason](system-servicemodel-communicationobjectfaultreason.md) +# [System.ServiceModel.Channels.InitiatingTcpConnection](system-servicemodel-channels-initiatingtcpconnection.md) +# [System.ServiceModel.Channels.SslClientCertMissing](system-servicemodel-channels-sslclientcertmissing.md) +# [System.IdentityModel.Selectors.StoreClosing](system-identitymodel-selectors-storeclosing.md) +# [System.ServiceModel.Security.SecurityIdentityDeterminationSuccess](system-servicemodel-security-securityidentitydeterminationsuccess.md) +# [アクティビティ ID の伝達](activity-id-propagation.md) +# [System.ServiceModel.PortSharing.PortSharingDuplicatedPipe](system-servicemodel-portsharing-portsharingduplicatedpipe.md) +# [System.ServiceModel.Channels.MsmqCannotPeekOnQueue](system-servicemodel-channels-msmqcannotpeekonqueue.md) +# [System.ServiceModel.Activation.WebHostProtocolMisconfigured](system-servicemodel-activation-webhostprotocolmisconfigured.md) +# [System.ServiceModel.Channels.NoExistingTransportManager](system-servicemodel-channels-noexistingtransportmanager.md) +# [System.ServiceModel.Security.SecurityClientSessionKeyRenewed](system-servicemodel-security-securityclientsessionkeyrenewed.md) +# [System.ServiceModel.Channels.MsmqDatagramReceived](system-servicemodel-channels-msmqdatagramreceived.md) +# [System.ServiceModel.Channels.EndpointListenerOpen](system-servicemodel-channels-endpointlisteneropen.md) +# [System.IdentityModel.Selectors.StoreDeleting](system-identitymodel-selectors-storedeleting.md) +# [System.ServiceModel.Channels.PeerNeighborMessageReceived](system-servicemodel-channels-peerneighbormessagereceived.md) +# [System.ServiceModel.GetBehaviorElement](system-servicemodel-getbehaviorelement.md) +# [System.ServiceModel.Security.SecurityTokenAuthenticatorOpened](system-servicemodel-security-securitytokenauthenticatoropened.md) +# [トレースとメッセージ ログの推奨設定](recommended-settings-for-tracing-and-message-logging.md) +# [System.Runtime.Serialization.XsdImportBegin](system-runtime-serialization-xsdimportbegin.md) +# [System.ServiceModel.Security.ServiceSecurityNegotiationCompleted](system-servicemodel-security-servicesecuritynegotiationcompleted.md) +# [System.ServiceModel.Security.SecuritySessionRequestorOperationFailure](system-servicemodel-security-securitysessionrequestoroperationfailure.md) +# [System.ServiceModel.ComIntegration.ComIntegrationServiceHostStoppedService](system-servicemodel-comintegration-comintegrationservicehoststoppedservice.md) +# [Microsoft.Transactions.TransactionBridge.CreateTransactionFailure](microsoft-transactions-transactionbridge-createtransactionfailure.md) +# [System.ServiceModel.Activation.MessageQueueUnregisterSucceeded](system-servicemodel-activation-messagequeueunregistersucceeded.md) +# [System.ServiceModel.Security.SecurityClientSessionCloseResponseSent](system-servicemodel-security-securityclientsessioncloseresponsesent.md) +# [System.ServiceModel.Channels.PeerNodeClosed](system-servicemodel-channels-peernodeclosed.md) +# [System.ServiceModel.PortSharing.ReadNetTcpConfig](system-servicemodel-portsharing-readnettcpconfig.md) +# [System.ServiceModel.MessageClosed](system-servicemodel-messageclosed.md) +# [System.ServiceModel.Channels.MsmqUnexpectedAcknowledgment](system-servicemodel-channels-msmqunexpectedacknowledgment.md) +# [Microsoft.Transactions.TransactionBridge.ParticipantRecovered](microsoft-transactions-transactionbridge-participantrecovered.md) +# [トレースの参照](traces-reference.md) +# [System.ServiceModel.TxAsyncAbort](system-servicemodel-txasyncabort.md) +# [System.ServiceModel.PortSharing.RoutingTableUnsupportedProtocol](system-servicemodel-portsharing-routingtableunsupportedprotocol.md) +# [System.ServiceModel.Security.SecurityIdentityDeterminationFailure](system-servicemodel-security-securityidentitydeterminationfailure.md) +# [System.ServiceModel.Channels.ConnectionPoolLeaseTimeoutReached](system-servicemodel-channels-connectionpoolleasetimeoutreached.md) +# [System.ServiceModel.RemoveBehavior](system-servicemodel-removebehavior.md) +# [System.ServiceModel.Security.SecurityBindingSecureOutgoingMessageFailure](system-servicemodel-security-securitybindingsecureoutgoingmessagefailure.md) +# [System.ServiceModel.ComIntegration.ComIntegrationTLBImportFromAssembly](system-servicemodel-comintegration-comintegrationtlbimportfromassembly.md) +# [System.ServiceModel.WsmexNonCriticalWsdlExportError](system-servicemodel-wsmexnoncriticalwsdlexporterror.md) +# [System.ServiceModel.ComIntegration.ComIntegrationEnteringActivity](system-servicemodel-comintegration-comintegrationenteringactivity.md) +# [Microsoft.Transactions.TransactionBridge.EnlistTransaction](microsoft-transactions-transactionbridge-enlisttransaction.md) +# [System.ServiceModel.MetadataExchangeClientSendRequest](system-servicemodel-metadataexchangeclientsendrequest.md) +# [System.ServiceModel.ComIntegration.ComIntegrationTLBImportConverterEvent](system-servicemodel-comintegration-comintegrationtlbimportconverterevent.md) +# [System.Runtime.Serialization.WriteObjectContentBegin](system-runtime-serialization-writeobjectcontentbegin.md) +# [System.ServiceModel.Security.SecuritySessionServerCloseSendFailure](system-servicemodel-security-securitysessionserverclosesendfailure.md) +# [System.ServiceModel.Channels.PeerFlooderReceiveMessageQuotaExceeded](system-servicemodel-channels-peerflooderreceivemessagequotaexceeded.md) +# [System.ServiceModel.Security.SecurityTokenProviderOpened](system-servicemodel-security-securitytokenprovideropened.md) +# [System.ServiceModel.ComIntegration.ComIntegrationWsdlChannelBuilderLoaded](system-servicemodel-comintegration-comintegrationwsdlchannelbuilderloaded.md) +# [System.ServiceModel.Channels.PnrpRegisteredAddresses](system-servicemodel-channels-pnrpregisteredaddresses.md) +# [System.ServiceModel.Channels.PeerNeighborManagerOnline](system-servicemodel-channels-peerneighbormanageronline.md) +# [System.ServiceModel.CommunicationObjectDisposing](system-servicemodel-communicationobjectdisposing.md) +# [System.ServiceModel.Channels.PeerChannelMessageReceived](system-servicemodel-channels-peerchannelmessagereceived.md) +# [System.ServiceModel.ServiceOperationExceptionOnReply](system-servicemodel-serviceoperationexceptiononreply.md) +# [System.ServiceModel.Channels.MsmqSessiongramSent](system-servicemodel-channels-msmqsessiongramsent.md) +# [System.ServiceModel.Channels.RequestContextAbort](system-servicemodel-channels-requestcontextabort.md) +# [System.ServiceModel.Security.SecuritySessionRedirectApplied](system-servicemodel-security-securitysessionredirectapplied.md) +# [System.ServiceModel.Channels.HttpsClientCertificateNotPresent](system-servicemodel-channels-httpsclientcertificatenotpresent.md) +# [System.ServiceModel.Channels.PeerServiceOpened](system-servicemodel-channels-peerserviceopened.md) +# [System.ServiceModel.UnhandledExceptionInUserOperation](system-servicemodel-unhandledexceptioninuseroperation.md) +# [System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarting](system-servicemodel-comintegration-comintegrationdllhostinitializerstarting.md) +# [System.ServiceModel.Security.IssuanceTokenProviderRemovedCachedToken](system-servicemodel-security-issuancetokenproviderremovedcachedtoken.md) +# [System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStopping](system-servicemodel-comintegration-comintegrationdllhostinitializerstopping.md) +# [Microsoft.Transactions.TransactionBridge.PrepareMessageRetry](microsoft-transactions-transactionbridge-preparemessageretry.md) +# [Microsoft.Transactions.TransactionBridge.ProtocolStarted](microsoft-transactions-transactionbridge-protocolstarted.md) +# [System.ServiceModel.Security.SecuritySessionClosedResponseReceived](system-servicemodel-security-securitysessionclosedresponsereceived.md) +# [System.ServiceModel.Channels.PeerFloodedMessageNotPropagated](system-servicemodel-channels-peerfloodedmessagenotpropagated.md) +# [System.IdentityModel.Selectors.StoreLoading](system-identitymodel-selectors-storeloading.md) +# [System.ServiceModel.PerformanceCountersFailedDuringUpdate](system-servicemodel-performancecountersfailedduringupdate.md) +# [System.ServiceModel.PortSharing.ReadNetPipeConfig](system-servicemodel-portsharing-readnetpipeconfig.md) +# [System.ServiceModel.Activation.MessageQueueRegisterSucceeded](system-servicemodel-activation-messagequeueregistersucceeded.md) +# [Microsoft.Transactions.TransactionBridge.CoordinatorRecovered](microsoft-transactions-transactionbridge-coordinatorrecovered.md) +# [System.ServiceModel.UnhandledAction](system-servicemodel-unhandledaction.md) +# [System.ServiceModel.Security.SecuritySessionAbortedFaultReceived](system-servicemodel-security-securitysessionabortedfaultreceived.md) +# [System.ServiceModel.ConfigurationIsReadOnly](system-servicemodel-configurationisreadonly.md) +# [System.ServiceModel.TransportListen](system-servicemodel-transportlisten.md) +# [System.ServiceModel.Channels.MsmqPotentiallyPoisonMessageDetected](system-servicemodel-channels-msmqpotentiallypoisonmessagedetected.md) +# [System.ServiceModel.DidNotUnderstandMessageHeader](system-servicemodel-didnotunderstandmessageheader.md) +# [HTTP、TCP、または名前付きパイプを使用した非同期シナリオ](asynchronous-scenarios-using-http-tcp-or-named-pipe.md) +# [System.ServiceModel.Security.SecurityBindingVerifyIncomingMessageFailure](system-servicemodel-security-securitybindingverifyincomingmessagefailure.md) +# [System.ServiceModel.ServiceHostBaseAddresses](system-servicemodel-servicehostbaseaddresses.md) +# [System.ServiceModel.Channels.HttpAuthFailed](system-servicemodel-channels-httpauthfailed.md) +# [System.ServiceModel.DroppedAMessage](system-servicemodel-droppedamessage.md) +# [System.ServiceModel.Security.SecurityServerSessionAbortedFaultSent](system-servicemodel-security-securityserversessionabortedfaultsent.md) +# [System.ServiceModel.Diagnostics.ActivityBoundary](system-servicemodel-diagnostics-activityboundary.md) +# [System.ServiceModel.Security.ImportSecurityChannelBindingExit](system-servicemodel-security-importsecuritychannelbindingexit.md) +# [Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorResponseInvalidMetadata](mts-registrationcoordinatorresponseinvalidmetadata.md) +# [System.ServiceModel.Security.SecurityTokenAuthenticatorClosed](system-servicemodel-security-securitytokenauthenticatorclosed.md) +# [System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxAbortedByTM](system-servicemodel-comintegration-comintegrationtxproxytxabortedbytm.md) +# [System.ServiceModel.Channels.HttpChannelMessageReceiveFailed](system-servicemodel-channels-httpchannelmessagereceivefailed.md) +# [System.ServiceModel.Channels.MessageReceived](system-servicemodel-channels-messagereceived.md) +# [System.ServiceModel.Channels.MsmqMessageRejected](system-servicemodel-channels-msmqmessagerejected.md) +# [System.ServiceModel.ManualFlowThrottleLimitReached](system-servicemodel-manualflowthrottlelimitreached.md) +# [System.ServiceModel.Security.SecuritySessionResponderOperationFailure](system-servicemodel-security-securitysessionresponderoperationfailure.md) +# [System.ServiceModel.Channels.FailedPipeConnect](system-servicemodel-channels-failedpipeconnect.md) +# [Microsoft.Transactions.TransactionBridge.RecoveredCoordinatorInvalidMetadata](microsoft-transactions-transactionbridge-recoveredcoordinatorinvalidmetadata.md) +# [System.IdentityModel.AuthorizationPolicyEvaluated](system-identitymodel-authorizationpolicyevaluated.md) +# [System.ServiceModel.Activation.MessageQueueDuplicatedPipe](system-servicemodel-activation-messagequeueduplicatedpipe.md) +# [System.ServiceModel.Security.SecurityTokenProviderClosed](system-servicemodel-security-securitytokenproviderclosed.md) +# [Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorFailed](microsoft-transactions-transactionbridge-registrationcoordinatorfailed.md) +# [System.Runtime.Serialization.XsdExportDupItems](system-runtime-serialization-xsdexportdupitems.md) +# [System.ServiceModel.Channels.PeerNeighborStateChangeFailed](system-servicemodel-channels-peerneighborstatechangefailed.md) +# [System.ServiceModel.Channels.PeerNeighborStateChanged](system-servicemodel-channels-peerneighborstatechanged.md) +# [System.ServiceModel.CommunicationObjectClosed](system-servicemodel-communicationobjectclosed.md) +# [System.Runtime.Serialization.XsdExportAnnotationFailed](system-runtime-serialization-xsdexportannotationfailed.md) +# [System.ServiceModel.Activation.MessageQueueClosed](system-servicemodel-activation-messagequeueclosed.md) +# [System.IdentityModel.Selectors.StoreSignatureNotValid](system-identitymodel-selectors-storesignaturenotvalid.md) +# [System.ServiceModel.PortSharing.PortSharingClosed](system-servicemodel-portsharing-portsharingclosed.md) +# [System.ServiceModel.CommunicationObjectOpenFailed](system-servicemodel-communicationobjectopenfailed.md) +# [System.ServiceModel.Diagnostics.DiagnosticsFailedMessageTrace](system-servicemodel-diagnostics-diagnosticsfailedmessagetrace.md) +# [System.ServiceModel.Security.SecurityPendingServerSessionActivated](system-servicemodel-security-securitypendingserversessionactivated.md) +# [System.ServiceModel.Channels.MsmqMessageDropped](system-servicemodel-channels-msmqmessagedropped.md) +# [System.ServiceModel.Diagnostics.MessageNotLoggedQuotaExceeded](system-servicemodel-diagnostics-messagenotloggedquotaexceeded.md) +# [System.ServiceModel.PortSharing.WasConnected](system-servicemodel-portsharing-wasconnected.md) +# [System.ServiceModel.TxCompletionStatusCompletedForError](system-servicemodel-txcompletionstatuscompletedforerror.md) +# [System.ServiceModel.UnderstoodMessageHeader](system-servicemodel-understoodmessageheader.md) +# [System.ServiceModel.CommunicationObjectAborted](system-servicemodel-communicationobjectaborted.md) +# [System.ServiceModel.ServiceHostTimeoutOnClose](system-servicemodel-servicehosttimeoutonclose.md) +# [System.ServiceModel.Activation.MessageQueueRegisterCalled](system-servicemodel-activation-messagequeueregistercalled.md) +# [System.ServiceModel.PortSharing.TransportListenerListening](system-servicemodel-portsharing-transportlistenerlistening.md) +# [System.ServiceModel.Security.SecurityServerSessionCloseResponseReceived](system-servicemodel-security-securityserversessioncloseresponsereceived.md) +# [トレースに関するセキュリティの考慮事項と役立つヒント](security-concerns-and-useful-tips-for-tracing.md) +# [Microsoft.Transactions.TransactionBridge.RegisterParticipant](microsoft-transactions-transactionbridge-registerparticipant.md) +# [System.ServiceModel.Channels.HttpsClientCertificateInvalid](system-servicemodel-channels-httpsclientcertificateinvalid.md) +# [System.ServiceModel.ComIntegration.ComIntegrationInvokedMethod](system-servicemodel-comintegration-comintegrationinvokedmethod.md) +# [System.ServiceModel.Security.SecuritySessionKeyRenewalFaultReceived](system-servicemodel-security-securitysessionkeyrenewalfaultreceived.md) +# [System.ServiceModel.Security.SpnegoServiceNegotiationCompleted](system-servicemodel-security-spnegoservicenegotiationcompleted.md) +# [System.ServiceModel.Channels.ConnectionPoolCloseException](system-servicemodel-channels-connectionpoolcloseexception.md) +# [トレースの構成](configuring-tracing.md) +# [System.ServiceModel.ComIntegration.ComIntegrationServiceMonikerParsed](system-servicemodel-comintegration-comintegrationservicemonikerparsed.md) +# [Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorFaulted](microsoft-transactions-transactionbridge-registrationcoordinatorfaulted.md) +# [System.ServiceModel.GetServiceElement](system-servicemodel-getserviceelement.md) +# [System.ServiceModel.PortSharing.PortSharingDuplicatedSocket](system-servicemodel-portsharing-portsharingduplicatedsocket.md) +# [System.ServiceModel.PortSharing.RoutingTableRegisterSuccess](system-servicemodel-portsharing-routingtableregistersuccess.md) +# [HTTP、TCP、または名前付きパイプを使用した同期シナリオ](synchronous-scenarios-using-http-tcp-or-named-pipe.md) +# [System.ServiceModel.TxCompletionStatusAbortedOnSessionClose](system-servicemodel-txcompletionstatusabortedonsessionclose.md) +# [System.ServiceModel.Security.SecuritySessionAbortedFaultSendFailure](system-servicemodel-security-securitysessionabortedfaultsendfailure.md) +# [System.ServiceModel.OverridingDuplicateConfigurationKey](system-servicemodel-overridingduplicateconfigurationkey.md) +# [System.ServiceModel.FailedToOpenIncomingChannel](system-servicemodel-failedtoopenincomingchannel.md) +# [System.ServiceModel.ComIntegration.ComIntegrationChannelCreated](system-servicemodel-comintegration-comintegrationchannelcreated.md) +# [System.ServiceModel.ComIntegration.ComIntegrationDispatchMethod](system-servicemodel-comintegration-comintegrationdispatchmethod.md) +# [System.ServiceModel.Channels.PeerChannelMessageSent](system-servicemodel-channels-peerchannelmessagesent.md) +# [System.ServiceModel.TxCompletionStatusCompletedForAutocomplete](system-servicemodel-txcompletionstatuscompletedforautocomplete.md) +# [System.ServiceModel.ComIntegration.ComIntegrationServiceHostCreatedServiceEndpoint](ssc--comintegrationservicehostcreatedserviceendpoint.md) +# [System.Runtime.Serialization.ElementIgnored](system-runtime-serialization-elementignored.md) +# [System.ServiceModel.ComIntegration.ComIntegrationServiceHostStoppingService](system-servicemodel-comintegration-comintegrationservicehoststoppingservice.md) +# [System.ServiceModel.CannotBeImportedInCurrentFormat](system-servicemodel-cannotbeimportedincurrentformat.md) +# [System.ServiceModel.Channels.PeerFloodedMessageReceived](system-servicemodel-channels-peerfloodedmessagereceived.md) +# [System.ServiceModel.PerformanceCounterFailedToLoad](system-servicemodel-performancecounterfailedtoload.md) +# [System.ServiceModel.Channels.PeerNeighborNotAccepted](system-servicemodel-channels-peerneighbornotaccepted.md) +# [System.ServiceModel.Channels.MsmqStartingApplication](system-servicemodel-channels-msmqstartingapplication.md) +# [トレースを使用したアプリケーションのトラブルシューティング](using-tracing-to-troubleshoot-your-application.md) +# [System.ServiceModel.Channels.ListenerDisposed](system-servicemodel-channels-listenerdisposed.md) +# [System.ServiceModel.Security.SecuritySessionDemuxFailure](system-servicemodel-security-securitysessiondemuxfailure.md) +# [Microsoft.Transactions.TransactionBridge.EnlistmentIdentityCheckFailed](microsoft-transactions-transactionbridge-enlistmentidentitycheckfailed.md) +# [System.ServiceModel.PortSharing.TransportListenerStop](system-servicemodel-portsharing-transportlistenerstop.md) +# [System.ServiceModel.ServiceOperationMissingReply](system-servicemodel-serviceoperationmissingreply.md) +# [System.ServiceModel.Channels.MsmqStartingService](system-servicemodel-channels-msmqstartingservice.md) +# [System.ServiceModel.Security.ExportSecurityChannelBindingExit](system-servicemodel-security-exportsecuritychannelbindingexit.md) +# [System.ServiceModel.Security.SecuritySessionServerCloseSent](system-servicemodel-security-securitysessionserverclosesent.md) +# [System.ServiceModel.Channels.SocketConnectionCreate](system-servicemodel-channels-socketconnectioncreate.md) +# [アクティビティ](activity.md) +# [System.ServiceModel.PortSharing.RoutingTablePathTooLong](system-servicemodel-portsharing-routingtablepathtoolong.md) +# [System.ServiceModel.TxSourceTxScopeRequiredIsTransactedTransport](system-servicemodel-txsourcetxscoperequiredistransactedtransport.md) +# [System.ServiceModel.PortSharing.TransportListenerListenRequest](system-servicemodel-portsharing-transportlistenerlistenrequest.md) +# [System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStopped](system-servicemodel-comintegration-comintegrationdllhostinitializerstopped.md) +# [System.ServiceModel.Security.SecurityClientSessionCloseSent](system-servicemodel-security-securityclientsessionclosesent.md) +# [メッセージ セキュリティにおけるアクティビティ トレース](activity-tracing-in-message-security.md) +# [System.ServiceModel.Diagnostics.UnhandledException](system-servicemodel-diagnostics-unhandledexception.md) +# [System.ServiceModel.ExtensionCollectionNameNotFound](system-servicemodel-extensioncollectionnamenotfound.md) +# [System.ServiceModel.Security.SecurityIdentityVerificationSuccess](system-servicemodel-security-securityidentityverificationsuccess.md) +# [System.ServiceModel.Channels.MsmqSessiongramReceived](system-servicemodel-channels-msmqsessiongramreceived.md) +# [COM+](com.md) +# [System.ServiceModel.Security.SecurityInactiveSessionFaulted](system-servicemodel-security-securityinactivesessionfaulted.md) +# [System.ServiceModel.Channels.ChannelCreated](system-servicemodel-channels-channelcreated.md) +# [System.ServiceModel.Activation.WebHostDebugRequest](system-servicemodel-activation-webhostdebugrequest.md) +# [System.ServiceModel.Diagnostics.TraceTruncatedQuotaExceeded](system-servicemodel-diagnostics-tracetruncatedquotaexceeded.md) +# [System.ServiceModel.Channels.RequestChannelReplyReceived](system-servicemodel-channels-requestchannelreplyreceived.md) +# [System.ServiceModel.ExtensionCollectionDoesNotExist](system-servicemodel-extensioncollectiondoesnotexist.md) +# [System.ServiceModel.Channels.MaxPendingConnectionsReached](system-servicemodel-channels-maxpendingconnectionsreached.md) +# [System.IdentityModel.Selectors.GeneralInformation](system-identitymodel-selectors-generalinformation.md) +# [System.ServiceModel.TxCompletionStatusRemainsAttached](system-servicemodel-txcompletionstatusremainsattached.md) +# [System.ServiceModel.CommunicationObjectCloseFailed](system-servicemodel-communicationobjectclosefailed.md) +# [System.ServiceModel.Diagnostics.EventLog](system-servicemodel-diagnostics-eventlog.md) +# [System.ServiceModel.Channels.SocketConnectionAbort](system-servicemodel-channels-socketconnectionabort.md) +# [System.ServiceModel.MessageWritten](system-servicemodel-messagewritten.md) +# [System.ServiceModel.Diagnostics.ThrowingException](system-servicemodel-diagnostics-throwingexception.md) +# [Microsoft.Transactions.TransactionBridge.RecoveredParticipantInvalidMetadata](microsoft-transactions-transactionbridge-recoveredparticipantinvalidmetadata.md) +# [System.ServiceModel.Activation.MessageQueueDuplicatedSocketError](system-servicemodel-activation-messagequeueduplicatedsocketerror.md) +# [System.ServiceModel.Channels.MsmqPoisonMessageMovedRetry](system-servicemodel-channels-msmqpoisonmessagemovedretry.md) +# [System.ServiceModel.Channels.MsmqEnteredBatch](system-servicemodel-channels-msmqenteredbatch.md) +# [System.ServiceModel.Security.SecurityBindingOutgoingMessageSecured](system-servicemodel-security-securitybindingoutgoingmessagesecured.md) +# [System.ServiceModel.ComIntegration.ComIntegrationServiceHostCreatedServiceContract](ssc-comintegrationservicehostcreatedservicecontract.md) +# [System.ServiceModel.Channels.MsmqMessageLockedUnderTheTransaction](system-servicemodel-channels-msmqmessagelockedunderthetransaction.md) +# [System.ServiceModel.ServiceHostErrorOnReleasePerformanceCounter](system-servicemodel-servicehosterroronreleaseperformancecounter.md) +# [System.ServiceModel.ServiceHostFaulted](system-servicemodel-servicehostfaulted.md) +# [System.Runtime.Serialization.WriteObjectEnd](system-runtime-serialization-writeobjectend.md) +# [System.ServiceModel.Security.IssuanceTokenProviderServiceTokenCacheFull](system-servicemodel-security-issuancetokenproviderservicetokencachefull.md) +# [System.Runtime.Serialization.ObjectWithLargeDepth](system-runtime-serialization-objectwithlargedepth.md) +# [System.ServiceModel.MessageRead](system-servicemodel-messageread.md) +# [System.ServiceModel.Channels.PnrpResolvedAddresses](system-servicemodel-channels-pnrpresolvedaddresses.md) +# [クライアントでのデバッグ](debugging-on-the-client.md) +# [System.ServiceModel.PortSharing.RoutingTableNamespaceConflict](system-servicemodel-portsharing-routingtablenamespaceconflict.md) +# [System.ServiceModel.Channels.MsmqScanStarted](system-servicemodel-channels-msmqscanstarted.md) +# [アクティビティ リスト](activity-list.md) +# [Microsoft.Transactions.TransactionBridge.ParticipantStateMachineFinished](microsoft-transactions-transactionbridge-participantstatemachinefinished.md) +# [System.ServiceModel.Channels.MsmqFoundBaseAddress](system-servicemodel-channels-msmqfoundbaseaddress.md) +# [System.ServiceModel.Channels.IncompatibleExistingTransportManager](system-servicemodel-channels-incompatibleexistingtransportmanager.md) +# [System.ServiceModel.Channels.SocketConnectionClose](system-servicemodel-channels-socketconnectionclose.md) +# [System.ServiceModel.Channels.MsmqQueueClosed](system-servicemodel-channels-msmqqueueclosed.md) +# [System.ServiceModel.PortSharing.RoutingTableLookup](system-servicemodel-portsharing-routingtablelookup.md) +# [System.ServiceModel.Channels.PeerNodeOpened](system-servicemodel-channels-peernodeopened.md) +# [System.ServiceModel.Security.SecuritySessionCloseResponseSent](system-servicemodel-security-securitysessioncloseresponsesent.md) +# [System.ServiceModel.Activation.MessageQueueDuplicatedSocket](system-servicemodel-activation-messagequeueduplicatedsocket.md) +# [System.ServiceModel.CommunicationObjectCreated](system-servicemodel-communicationobjectcreated.md) +# [System.ServiceModel.Channels.SocketConnectionAbortClose](system-servicemodel-channels-socketconnectionabortclose.md) +# [System.ServiceModel.PortSharing.RoutingTableCannotListen](system-servicemodel-portsharing-routingtablecannotlisten.md) +# [Microsoft.Transactions.TransactionBridge.CommitMessageRetry](microsoft-transactions-transactionbridge-commitmessageretry.md) +# [System.ServiceModel.ErrorInvokingUserCode](system-servicemodel-errorinvokingusercode.md) +# [System.ServiceModel.GetConfigurationSection](system-servicemodel-getconfigurationsection.md) +# [System.ServiceModel.Channels.PeerNodeClosing](system-servicemodel-channels-peernodeclosing.md) +# [System.ServiceModel.Channels.OpenedListener](system-servicemodel-channels-openedlistener.md) +# [System.ServiceModel.Security.SecurityContextTokenCacheFull](system-servicemodel-security-securitycontexttokencachefull.md) +# [System.ServiceModel.Security.SecuritySpnToSidMappingFailure](system-servicemodel-security-securityspntosidmappingfailure.md) +# [System.ServiceModel.Channels.MessageSent](system-servicemodel-channels-messagesent.md) +# [System.ServiceModel.Security.IssuanceTokenProviderEndSecurityNegotiation](system-servicemodel-security-issuancetokenproviderendsecuritynegotiation.md) +# [System.ServiceModel.Channels.PeerFloodedMessageNotMatched](system-servicemodel-channels-peerfloodedmessagenotmatched.md) +# [System.ServiceModel.CommunicationObjectOpened](system-servicemodel-communicationobjectopened.md) +# [System.ServiceModel.Channels.PeerReceiveMessageAuthenticationFailure](system-servicemodel-channels-peerreceivemessageauthenticationfailure.md) +# [System.ServiceModel.TxSourceTxScopeRequiredIsTransactionFlow](system-servicemodel-txsourcetxscoperequiredistransactionflow.md) +# [System.ServiceModel.Channels.MsmqMatchedApplicationFound](system-servicemodel-channels-msmqmatchedapplicationfound.md) +# [System.ServiceModel.Security.SecurityBindingIncomingMessageVerified](system-servicemodel-security-securitybindingincomingmessageverified.md) +# [System.ServiceModel.TxSourceTxScopeRequiredIsAttachedTransaction](system-servicemodel-txsourcetxscoperequiredisattachedtransaction.md) +# [重要なトレース](significant-traces.md) +# [System.Runtime.Serialization.XsdExportEnd](system-runtime-serialization-xsdexportend.md) +# [System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerAddingHost](system-servicemodel-comintegration-comintegrationdllhostinitializeraddinghost.md) +# [System.ServiceModel.MessageCopied](system-servicemodel-messagecopied.md) +# [System.ServiceModel.TxFailedToNegotiateOleTx](system-servicemodel-txfailedtonegotiateoletx.md) +# [Microsoft.Transactions.TransactionBridge.VolatileParticipantInDoubt](microsoft-transactions-transactionbridge-volatileparticipantindoubt.md) +# [System.ServiceModel.Activation.WebHostServiceCloseFailed](system-servicemodel-activation-webhostserviceclosefailed.md) +# [System.ServiceModel.PerformanceCountersFailed](system-servicemodel-performancecountersfailed.md) +# [System.ServiceModel.Activation.ServicePause](system-servicemodel-activation-servicepause.md) +# [Microsoft.Transactions.TransactionBridge.RegisterParticipantFailure](microsoft-transactions-transactionbridge-registerparticipantfailure.md) +# [System.ServiceModel.Channels.PnrpResolveException](system-servicemodel-channels-pnrpresolveexception.md) +# [System.Runtime.Serialization.XsdExportError](system-runtime-serialization-xsdexporterror.md) +# [System.IdentityModel.AuthorizationContextCreated](system-identitymodel-authorizationcontextcreated.md) +# [System.ServiceModel.Activation.ServiceContinue](system-servicemodel-activation-servicecontinue.md) +# [System.ServiceModel.MessageProcessingPaused](system-servicemodel-messageprocessingpaused.md) +# [System.ServiceModel.Channels.ConnectionAbandoned](system-servicemodel-channels-connectionabandoned.md) +# [System.ServiceModel.Activation.WebHostCompilation](system-servicemodel-activation-webhostcompilation.md) +# [System.ServiceModel.Security.SecurityClientSessionPreviousKeyDiscarded](system-servicemodel-security-securityclientsessionpreviouskeydiscarded.md) +# [System.ServiceModel.Security.SecuritySessionRequestorOperationSuccess](system-servicemodel-security-securitysessionrequestoroperationsuccess.md) +# [System.ServiceModel.Administration.WmiPut](system-servicemodel-administration-wmiput.md) +# [System.ServiceModel.PortSharing.WasWebHostAPIFailed](system-servicemodel-portsharing-waswebhostapifailed.md) +# [System.ServiceModel.Channels.HttpChannelResponseAborted](system-servicemodel-channels-httpchannelresponseaborted.md) +# [System.ServiceModel.Security.SecurityNewServerSessionKeyIssued](system-servicemodel-security-securitynewserversessionkeyissued.md) +# [System.ServiceModel.PortSharing.SharedManagerServiceEndpointNotExist](system-servicemodel-portsharing-sharedmanagerserviceendpointnotexist.md) +# [System.ServiceModel.BeginExecuteMethod](system-servicemodel-beginexecutemethod.md) +# [Microsoft.Transactions.TransactionBridge.VolatileOutcomeTimeout](microsoft-transactions-transactionbridge-volatileoutcometimeout.md) +# [System.ServiceModel.Security.SecurityClientSessionCloseMessageReceived](system-servicemodel-security-securityclientsessionclosemessagereceived.md) +# [System.ServiceModel.CommunicationObjectClosing](system-servicemodel-communicationobjectclosing.md) +# [System.ServiceModel.Diagnostics.FailedToAddAnActivityIdHeader](system-servicemodel-diagnostics-failedtoaddanactivityidheader.md) +# [System.ServiceModel.Activation.ServiceStart](system-servicemodel-activation-servicestart.md) +# [System.ServiceModel.Channels.MsmqLeftBatch](system-servicemodel-channels-msmqleftbatch.md) +# [System.ServiceModel.ComIntegration.ComIntegrationExecutingCall](system-servicemodel-comintegration-comintegrationexecutingcall.md) +# [System.ServiceModel.Channels.MsmqQueueOpened](system-servicemodel-channels-msmqqueueopened.md) +# [System.ServiceModel.Security.SecurityServerSessionKeyUpdated](system-servicemodel-security-securityserversessionkeyupdated.md) +# [System.ServiceModel.ComIntegration.ComIntegrationLeftActivity](system-servicemodel-comintegration-comintegrationleftactivity.md) +# [トレース](index.md) +# [System.Runtime.Serialization.XsdImportError](system-runtime-serialization-xsdimporterror.md) +# [System.ServiceModel.PortSharing.WasCloseAllListenerChannelInstances](system-servicemodel-portsharing-wasclosealllistenerchannelinstances.md) +# [System.ServiceModel.MetadataExchangeClientReceiveReply](system-servicemodel-metadataexchangeclientreceivereply.md) +# [System.ServiceModel.MessageClosedAgain](system-servicemodel-messageclosedagain.md) +# [System.ServiceModel.Channels.InitiatingNamedPipeConnection](system-servicemodel-channels-initiatingnamedpipeconnection.md) +# [System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarted](system-servicemodel-comintegration-comintegrationdllhostinitializerstarted.md) +# [System.ServiceModel.Channels.HttpResponseReceived](system-servicemodel-channels-httpresponsereceived.md) +# [System.ServiceModel.Channels.TcpConnectError](system-servicemodel-channels-tcpconnecterror.md) +# [System.ServiceModel.Channels.PipeConnectionAbort](system-servicemodel-channels-pipeconnectionabort.md) +# [System.IdentityModel.Selectors.StoreBeginTransaction](system-identitymodel-selectors-storebegintransaction.md) +# [Microsoft.Transactions.TransactionBridge.PreparedMessageRetry](microsoft-transactions-transactionbridge-preparedmessageretry.md) +# [System.ServiceModel.ComIntegration.ComIntegrationInstanceReleased](system-servicemodel-comintegration-comintegrationinstancereleased.md) +# [System.ServiceModel.Security.SecuritySessionClosedResponseSendFailure](system-servicemodel-security-securitysessionclosedresponsesendfailure.md) +# [System.ServiceModel.GetCommonBehaviors](system-servicemodel-getcommonbehaviors.md) +# [System.ServiceModel.Channels.NamedPipeChannelMessageReceiveFailed](system-servicemodel-channels-namedpipechannelmessagereceivefailed.md) +# [System.ServiceModel.Security.NegotiationAuthenticatorAttached](system-servicemodel-security-negotiationauthenticatorattached.md) +# [System.ServiceModel.TxCompletionStatusCompletedForSetComplete](system-servicemodel-txcompletionstatuscompletedforsetcomplete.md) +# [System.ServiceModel.Security.SecurityPendingServerSessionClosed](system-servicemodel-security-securitypendingserversessionclosed.md) +# [System.Runtime.Serialization.WriteObjectBegin](system-runtime-serialization-writeobjectbegin.md) +# [System.ServiceModel.ServiceChannelLifetime](system-servicemodel-servicechannellifetime.md) +# [System.ServiceModel.ComIntegration.ComIntegrationInvokingMethodContextTransaction](ssc-comintegrationinvokingmethodcontexttransaction.md) +# [System.Runtime.Serialization.ReadObjectEnd](system-servicemodel-comintegration-comintegrationmexmonikermetadataexchangecomplete.md) +# [Microsoft.Transactions.TransactionBridge.EnlistTransactionFailure](system-servicemodel-channels-connectionpoolmaxoutboundconnectionsperendpointquotareached.md) +# [System.Runtime.Serialization.ReadObjectBegin](system-runtime-serialization-readobjectbegin.md) +# [System.ServiceModel.Security.SecurityAuditWrittenSuccess](system-servicemodel-security-securityauditwrittensuccess.md) +# [System.ServiceModel.WarnHelpPageEnabledNoBaseAddress](system-servicemodel-warnhelppageenablednobaseaddress.md) +# [System.ServiceModel.Channels.MsmqQueueTransactionalStatusUnknown](system-servicemodel-channels-msmqqueuetransactionalstatusunknown.md) +# [System.ServiceModel.Channels.ChannelDisposed](system-servicemodel-channels-channeldisposed.md) +# [Microsoft.Transactions.TransactionBridge.CoordinatorStateMachineFinished](microsoft-transactions-transactionbridge-coordinatorstatemachinefinished.md) +# [System.ServiceModel.Security.ImportSecurityChannelBindingEntry](system-servicemodel-security-importsecuritychannelbindingentry.md) +# [Microsoft.Transactions.TransactionBridge.ProtocolInitialized](microsoft-transactions-transactionbridge-protocolinitialized.md) +# [System.ServiceModel.Security.SecurityPendingServerSessionAdded](system-servicemodel-security-securitypendingserversessionadded.md) +# [System.ServiceModel.Channels.PeerNeighborManagerOffline](system-servicemodel-channels-peerneighbormanageroffline.md) +# [System.ServiceModel.TxCompletionStatusCompletedForAsyncAbort](system-servicemodel-txcompletionstatuscompletedforasyncabort.md) +# [System.ServiceModel.Channels.PeerNodeAddressChanged](system-servicemodel-channels-peernodeaddresschanged.md) +# [System.ServiceModel.CommunicationObjectFaulted](system-servicemodel-communicationobjectfaulted.md) +# [System.ServiceModel.Channels.MaxAcceptedChannelsReached](system-servicemodel-channels-maxacceptedchannelsreached.md) +# [System.ServiceModel.ServiceOperationMissingReplyContext](system-servicemodel-serviceoperationmissingreplycontext.md) +# [System.ServiceModel.Channels.PeerNodeOpening](system-servicemodel-channels-peernodeopening.md) +# [System.ServiceModel.Security.SecurityServerSessionCloseReceived](system-servicemodel-security-securityserversessionclosereceived.md) +# [System.ServiceModel.Security.SecurityNegotiationProcessingFailure](system-servicemodel-security-securitynegotiationprocessingfailure.md) +# [Microsoft.Transactions.TransactionBridge.DurableParticipantReplayWhilePreparing](mtt-durableparticipantreplaywhilepreparing.md) +# [System.ServiceModel.ComIntegration.ComIntegrationMexChannelBuilderLoaded](system-servicemodel-comintegration-comintegrationmexchannelbuilderloaded.md) +# [System.ServiceModel.ComIntegration.ComIntegrationMexMonikerMetadataExchangeComplete](ssc--comintegrationmexmonikermetadataexchangecomplete.md) +# [System.ServiceModel.ComIntegration.ComIntegrationInvokingMethodNewTransaction](system-servicemodel-comintegration-comintegrationinvokingmethodnewtransaction.md) +# [System.ServiceModel.EndExecuteMethod](system-servicemodel-endexecutemethod.md) +# [System.ServiceModel.Channels.MsmqPoisonMessageRejected](system-servicemodel-channels-msmqpoisonmessagerejected.md) +# [System.ServiceModel.Activation.ServiceStartPipeError](system-servicemodel-activation-servicestartpipeerror.md) +# [System.ServiceModel.Channels.ConnectionPoolIdleTimeoutReached](system-servicemodel-channels-connectionpoolidletimeoutreached.md) +# [System.ServiceModel.Channels.ServerMaxPooledConnectionsQuotaReached](system-servicemodel-channels-servermaxpooledconnectionsquotareached.md) +# [System.ServiceModel.ElementTypeDoesntMatchConfiguredType](system-servicemodel-elementtypedoesntmatchconfiguredtype.md) +# [System.ServiceModel.ServiceHostCreation](system-servicemodel-servicehostcreation.md) +# [System.ServiceModel.Channels.PeerNodeAuthenticationFailure](system-servicemodel-channels-peernodeauthenticationfailure.md) +# [System.ServiceModel.Channels.PeerNeighborNotFound](system-servicemodel-channels-peerneighbornotfound.md) +# [System.IdentityModel.Selectors.StoreRollbackTransaction](system-identitymodel-selectors-storerollbacktransaction.md) +# [System.ServiceModel.TxCompletionStatusCompletedForTACOSC](system-servicemodel-txcompletionstatuscompletedfortacosc.md) +# [System.ServiceModel.Diagnostics.FilterNotMatchedNodeQuotaExceeded](system-servicemodel-diagnostics-filternotmatchednodequotaexceeded.md) +# [System.ServiceModel.Channels.NamedPipeChannelMessageReceived](system-servicemodel-channels-namedpipechannelmessagereceived.md) +# [サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング](using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md) +# [System.ServiceModel.PortSharing.PortSharingListening](system-servicemodel-portsharing-portsharinglistening.md) +# [System.ServiceModel.Security.ExportSecurityChannelBindingEntry](system-servicemodel-security-exportsecuritychannelbindingentry.md) +# [System.ServiceModel.Channels.ConnectionPoolMaxOutboundConnectionsPerEndpointQuotaReached](connectionpoolmaxoutboundconnectionsperendpointquotareached.md) diff --git a/docs/framework/wcf/diagnostics/tracing/activity-id-propagation.md b/docs/framework/wcf/diagnostics/tracing/activity-id-propagation.md new file mode 100644 index 00000000000..006b83f1d65 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/activity-id-propagation.md @@ -0,0 +1,55 @@ +--- +title: "アクティビティ ID の伝達 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cd1c1ae5-cc8a-4f51-90c9-f7b476bcfe70 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# アクティビティ ID の伝達 +伝達は、ServiceModel アクティビティ トレースが有効な場合 \(ServiceModel 伝達\) または無効な場合 \(ユーザーからユーザーへのアクティビティ伝達\) に実行されます。 + +## ServiceModel アクティビティ トレースが有効な場合 + ServiceModel アクティビティ トレースが有効な場合、伝達は ProcessAction アクティビティ間で実行されます。 + +### サーバー + クライアントとサーバーの両方で `propagateActivity` 属性が `true` に設定されている場合、サーバーの `ProcessAction` アクティビティの ID は、伝達された `ActivityId` メッセージ ヘッダーの ID と同じです。 + + メッセージに `ActivityId` ヘッダーが存在しない場合 \(つまり、クライアントで `propagateActivity` が `false` に設定されている場合\)、またはサーバーで `propagateActivity` が `false` に設定されている場合、サーバーは新しいアクティビティ ID を生成します。 + +### Client + クライアントが同期的にシングル スレッドで動作する場合、クライアントは、クライアントまたはサーバー側で `propagateActivity` の設定を無視します。 代わりに、応答は要求アクティビティで処理されます。 クライアントが非同期的または同期的にマルチスレッドで動作し、クライアントの `propagateActivity` が `true` に設定され、サーバーから送信されたメッセージにアクティビティ ID ヘッダーがある場合、クライアントは、そのメッセージからアクティビティ ID を取得し、伝達されたアクティビティ ID を含んでいる "プロセス アクション" アクティビティに転送します。 それ以外の場合、クライアントは、"プロセス メッセージ" アクティビティから新しい "プロセス アクション" アクティビティに転送します。 この新しい "プロセス アクション" アクティビティへの転送は、整合性を維持するために行われます。 このアクティビティの内部で、クライアントは、スレッドが応答メッセージ処理用に割り当てられている場合、ローカル スレッド コンテキストから BeginCall アクティビティのアクティビティ ID を取得します。 その後、最初の "プロセス アクション" アクティビティに転送します。 + + クライアントが双方向の場合、クライアントは、メッセージを受信するときにサーバーとして機能します。 + +### エラー メッセージの伝達 + 有効なメッセージの処理とエラー メッセージの処理に違いはありません。 `propagateActivity` が `true` に設定されている場合、SOAP エラー メッセージのヘッダーに追加されるアクティビティ ID は、アンビエント アクティビティと同じです。 + +## ServiceModel アクティビティ トレースが無効な場合 + ServiceModel アクティビティ トレースが無効な場合、伝達は、ServiceModel アクティビティを通過せずに直接ユーザー コード アクティビティ間で実行されます。 ユーザー定義のアクティビティ ID もメッセージ アクティビティ ID ヘッダーによって伝達されます。 + + `propagateActivity` が `true` に設定され、ServiceModel トレース リスナーで `ActivityTracing` が `off` に設定されている場合 \(トレースが ServiceModel で有効かどうかに関係なく\)、クライアントとサーバーのいずれかで次の動作が発生します。 + +- 要求の処理時または応答の送信時に、TLS のアクティビティ ID は、メッセージが作成されるまでユーザー コードの外部で伝達されます。 また、アクティビティ ID ヘッダーは、メッセージが送信される前にメッセージに挿入されます。 + +- 要求の受信時または応答の受信時に、アクティビティ ID は、受信したメッセージのオブジェクトが作成されしだい、メッセージ ヘッダーから取得されます。 TLS のアクティビティ ID は、メッセージがスコープから消えるとすぐに、ユーザー コードに到達するまで伝達されます。 + + このアクションによって、伝達が有効な場合にユーザー トレースが同じアクティビティに表示されることが保証されます。 ただし、ServiceModel トレースに対する保証はありません。 ServiceModel トレースは、このトレースの処理がユーザー コード アクティビティが設定されたのと同じスレッドで実行される場合のみ、ユーザー コード アクティビティで実行されます。 + + 通常、ServiceModel トレースは、次の場所で確認できます。 + +- ServiceModel トレースが無効な場合、出力されたすべてのトレースは、ユーザー アクティビティに表示されます。 サーバーとクライアントの両方で伝達が有効な場合、このトレースは同じアクティビティに表示されます。 + +- ServiceModel トレースが有効で、ActivityTracing が無効の場合、ユーザー トレースは、サーバーとクライアントの両方で伝達が有効な場合は同じアクティビティに表示されます。 ServiceModel トレースは、既定の 0000 アクティビティに表示されます。ただし、このトレースが、アクティビティが最初に設定されたユーザー コード処理と同じスレッドで実行される場合を除きます。 + +- ServiceModel トレースと ActivityTracing が両方とも有効な場合、ユーザー トレースは、ユーザー定義のアクティビティに表示され、ServiceModel トレースは、ServiceModel 定義のアクティビティに表示されます。 伝達は、ServiceModel レベルで実行されます。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/activity-list.md b/docs/framework/wcf/diagnostics/tracing/activity-list.md new file mode 100644 index 00000000000..768c9583dcb --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/activity-list.md @@ -0,0 +1,64 @@ +--- +title: "アクティビティ リスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5540e185-ce8e-4db3-83b0-2b9f5bf71829 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# アクティビティ リスト +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] で定義されたすべてのアクティビティを示します。 + +> [!NOTE] +> また、ユーザー トレースをグループ化するために、アクティビティをプログラムによって定義することもできます。詳細については、「[ユーザー コード トレースの出力](../../../../../docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md)」を参照してください。 + +## ServiceModel アクティビティ + 主要な使用シナリオに対応するすべてのアクティビティを次の表に示します。 + +|ラベル|アクティビティ名|アクティビティの種類|説明| +|---------|--------------|----------------|--------| +|A、M|アンビエント アクティビティ|N\/A \(ServiceModel によって制御されません\)|ServiceModel コード \(クライアント側またはサーバー側\) を呼び出す前に、ID が TLS に設定されるアクティビティ。

例 : [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] クライアントで open が呼び出されるか、serviceHost.open が呼び出されるアクティビティ。| +|B|Construct

構築する。ContractType: '\[種類\]'。|ChannelFactory を|| +|C|Open

開く。ContractType: '\[種類\]'。|Open|| +|I|\[ClientBase|ChannelFactory\] を閉じる。ContractType: '\[種類\]'。|Close|| +|M|ServiceHost を構築する。ServiceType: '\[種類\]'。|構成体|| +|N|ServiceHost を開く。ServiceType: '\[種類\]'。|Open|| +|Z|ServiceHost を閉じる。ServiceType: '\[種類\]'。|Close|| +|O|'\[アドレス\]' でリッスンする。|ListenAt|このアクティビティと次のアクティビティはトランスポート固有です。ListenAt アクティビティは、チャネル リスナーがリッスンするアドレスにマップされるコンテンツを表します。MSMQ の場合は、キューが 1 つのアドレスにマップされるため、これはキューそのものです。このアクティビティは、接続指向のトランスポートの場合は受信接続をリッスンし、MSMQ の場合は MSMQ メッセージをリッスンします。このアクティビティは ServiceHost.Open\(\) の間に作成され、リスナーの作成と破棄、およびすべての ReceiveBytes アクティビティへの転送に関連するトレースを格納します。| +|P|接続 '\[アドレス\]' でのバイトを受信する。MSMQ メッセージを受信する。|ReceiveBytes|このアクティビティでは、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージを最終的に取得するデータが処理されます。接続指向のトランスポートまたは http の場合は、受信バイトを待ちます。TCP\/名前付きパイプの場合は、接続が作成されるときにアクティビティが作成されるため、このアクティビティの有効期間は接続の有効期間と等しくなります。http の場合、これはメッセージ要求の有効期間と等しく、メッセージが送信されるときにアクティビティが作成されます。このアクティビティは、接続の作成と破棄 \(該当する場合\)、およびすべてのメッセージ \(オブジェクト\) 処理アクティビティへの転送に関連するトレースを格納します。

MSMQ の場合、これは MSMQ メッセージが取得されるアクティビティです。| +|Q|メッセージ \[番号\] を処理する \(\[番号\] は、1 で始まる、単調に増加する値です\)。|ProcessMessage|受信メッセージを処理します。このアクティビティは、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージ オブジェクトを形成するためのすべてのデータ \(バイト、MSMQ メッセージ\) が受信されると開始されます。このアクティビティに格納されたトレースは、ヘッダー処理を扱います。

ディスパッチ可能なメッセージが形成されると、対応するアクティビティ ID を検索した後で ServiceHost ProcessAction アクティビティとの間で切り替わります。| +|D、S|アクション '\[アクション\]' を処理する。|ProcessAction|受信時にはユーザー コードにメッセージをディスパッチし、送信時には逆の順序でメッセージをディスパッチするために、トランスポート\/セキュリティ\/RM スタックを通じてメッセージを処理します。

サーバーでは、"アクティビティ伝達" を介してメッセージ ヘッダーで送信された場合、このアクティビティは伝達されたアクティビティ ID を使用します。それ以外の場合は、新しい GUID が作成されます。

要求\/応答コントラクトに対する応答メッセージも、そのアクティビティで処理されます。| +|T|'\[IContract.Operation\]' を実行する。|ExecuteUserCode|サービス側でディスパッチ後にユーザー コードを実行します。このアクティビティは、ユーザー指定のコードと ServiceHost コードを区別するための境界を提供します。| + +## セキュリティ アクティビティ + セキュリティに関連するすべてのアクティビティを次の表に示します。 + +|アクティビティ名|アクティビティの種類|説明| +|--------------|----------------|--------| +|セキュリティで保護されたセッションをセットアップする|SetupSecurity|クライアント側だけに存在します。認証およびセキュリティ コンテキストの設定のためのすべての "RST\*\/SCT 交換" を格納します。`propagateActivity` が `true` の場合、このアクティビティは、サービスの対応する プロセス アクション RST\*\/SCT アクティビティとマージされます。| +|セキュリティで保護されたセッションを閉じる|SetupSecurity|クライアント側に存在します。セキュリティで保護されたセッションを閉じるための "メッセージ交換のキャンセル" を格納します。`propagateActivity` が `true` の場合、このアクティビティは、サービスのプロセス アクションである "キャンセル" とマージされます。| + + COM\+ に関連するすべてのアクティビティを次の表に示します。 + +|アクティビティ名|アクティビティの種類|説明| +|--------------|----------------|--------| +|COM\+ インスタンスを作成する|TransferToCOMPlus|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] コードからの COM\+ 呼び出しごとに 1 つのアクティビティ インスタンス| +|COM\+ \<操作\> を実行する|TransferToCOMPlus|[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] コードからの COM\+ 呼び出しごとに 1 つのアクティビティ インスタンス| + +## WMI アクティビティ + WMI に関連するすべてのアクティビティを次の表に示します。 + +|アクティビティ名|アクティビティの種類|説明| +|--------------|----------------|--------| +|WMI Get|WMIGetObject|ユーザーは、WMI からデータを取得しています。| +|WMI Put|WmiPutInstance|ユーザーは、WMI でデータを更新しています。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/activity-tracing-in-message-security.md b/docs/framework/wcf/diagnostics/tracing/activity-tracing-in-message-security.md new file mode 100644 index 00000000000..b39bcd7950e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/activity-tracing-in-message-security.md @@ -0,0 +1,63 @@ +--- +title: "メッセージ セキュリティにおけるアクティビティ トレース | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 68862534-3b2e-4270-b097-8121b12a2c97 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# メッセージ セキュリティにおけるアクティビティ トレース +ここでは、次の 3 つの段階で発生するセキュリティ処理のアクティビティ トレースについて説明します。 + +- ネゴシエーション\/SCT 交換。トランスポート層 \(バイナリデータ交換を使用した場合\) またはメッセージ層 \(SOAP メッセージ交換を使用した場合\) で発生する可能性があります。 + +- メッセージの暗号化と復号化、および署名の検証と認証。トレースは、アンビエント アクティビティ \(通常、"プロセス アクション"\) に表示されます。 + +- 承認と検証。ローカルで、またはエンドポイント間の通信中に発生する可能性があります。 + +## ネゴシエーション\/SCT 交換 + ネゴシエーション\/SCT 交換段階では、"セキュリティで保護されたセッションの設定" および "セキュリティで保護されたセッションを閉じる" という 2 種類のアクティビティがクライアント側で作成されます。"セキュリティで保護されたセッションの設定" は RST\/RSTR\/SCT メッセージ交換のトレースを含み、"セキュリティで保護されたセッションを閉じる" は "キャンセル" メッセージのトレースを含みます。 + + サーバーでは、RST\/RSTR\/SCT の各要求\/応答がそのアクティビティに表示されます。サーバーとクライアントの両方に `propagateActivity`\=`true` が設定されている場合、サーバーの各アクティビティは同じ ID を持ち、サービス トレース ビューアーでは "セキュリティで保護されたセッションの設定" にまとめて表示されます。 + + このアクティビティ トレース モデルは、ユーザー名\/パスワード認証、証明書認証、および NTLM 認証に対して有効です。 + + ネゴシエーションと SCT 交換のアクティビティとトレースを次の表に示します。 + +||ネゴシエーション\/SCT 交換の発生タイミング|アクティビティ|トレース| +|-|------------------------------|-------------|----------| +|セキュリティで保護されたトランスポート

\(HTTPS、SSL\)|最初のメッセージを受信したとき。|トレースは、アンビエント アクティビティで出力されます。|- 交換トレース
- セキュリティ保護されたチャネルの確立。
- 共有シークレットの取得。| +|セキュリティで保護されたメッセージ層

\(WSHTTP\)|最初のメッセージを受信したとき。|クライアント側 :

- RST\/RSTR\/SCT の各要求\/応答に対する最初のメッセージの "プロセス アクション" で発生した "セキュリティで保護されたセッションの設定"。
- "プロキシ アクティビティを閉じる" で発生した "交換のキャンセル" に対する "セキュリティで保護されたセッションを閉じる"。このアクティビティは、セキュリティで保護されたセッションが閉じられるタイミングにより、他のアンビエント アクティビティで発生する可能性があります。

サーバー側 :

- サーバーでの RST\/SCT\/キャンセルの各要求\/応答に対して 1 つの "プロセス アクション" アクティビティ。`propagateActivity`\=`true` の場合、RST\/RSTR\/SCT アクティビティは "セキュリティで保護されたセッションの設定" とマージされ、"キャンセル" はクライアントからの "閉じる" アクティビティとマージされます。

"セキュリティで保護されたセッションの設定" には 2 つの段階があります。

1. 認証ネゴシエーション。クライアントが既に適切な資格情報を持つ場合は、省略可能です。この段階は、セキュリティで保護されたトランスポート、またはメッセージ交換を通じて行われます。後者の場合、1 つまたは 2 つの RST\/RSTR 交換が発生する可能性があります。これらの交換では、トレースは、従来の設計どおり、新しい要求\/応答アクティビティで出力されます。
2. セキュリティで保護されたセッションの確立 \(SCT\)。この段階では、1 つの RST\/RSTR 交換が発生します。前述のように、これには同じアンビエント アクティビティが含まれます。|- 交換トレース
- セキュリティ保護されたチャネルの確立。
- 共有シークレットの取得。| + +> [!NOTE] +> 混在セキュリティ モードでは、ネゴシエーション認証はバイナリ交換で発生しますが、SCT はメッセージ交換で発生します。純粋なトランスポート モードでは、ネゴシエーションは追加のアクティビティを持たないトランスポートでのみ発生します。 + +## メッセージの暗号化と復号化 + メッセージの暗号化と復号化および署名認証のアクティビティとトレースを次の表に示します。 + +||セキュリティで保護されたトランスポート

\(HTTPS、SSL\) およびセキュリティで保護されたメッセージ層

\(WSHTTP\)| +|-|--------------------------------------------------------------------------------| +|メッセージの暗号化\/復号化、および署名認証の発生タイミング|メッセージを受信したとき。| +|アクティビティ|トレースは、クライアントとサーバーの ProcessAction アクティビティで出力されます。| +|トレース|- sendSecurityHeader \(送信側\):
- メッセージの署名
- 要求データの暗号化
- receiveSecurityHeader \(受信側\):
- 署名の検証
- 応答データの復号化
- 認証| + +> [!NOTE] +> 純粋なトランスポート モードでは、メッセージの暗号化\/復号化は追加のアクティビティを持たないトランスポートでのみ発生します。 + +## 承認と検証 + 承認のアクティビティとトレースを次の表に示します。 + +||承認の発生タイミング|アクティビティ|トレース| +|-|----------------|-------------|----------| +|ローカル \(既定\)|サーバーでメッセージが複号化された後|トレースは、サーバーの ProcessAction アクティビティで出力されます。|ユーザーの承認。| +|Remote|サーバーでメッセージが複号化された後|トレースは、ProcessAction アクティビティによって呼び出された新しいアクティビティで出力されます。|ユーザーの承認。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/activity.md b/docs/framework/wcf/diagnostics/tracing/activity.md new file mode 100644 index 00000000000..a86c015cb7a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/activity.md @@ -0,0 +1,112 @@ +--- +title: "アクティビティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 70471705-f55f-4da1-919f-4b580f172665 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# アクティビティ +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] トレース モデルのアクティビティ トレースについて説明します。アクティビティは、ユーザーがエラーの範囲を絞り込む上で役立つ処理単位です。同じアクティビティで発生したエラーは直接関連します。たとえば、メッセージを復号化できなかったために、ある操作が失敗したとします。この操作とメッセージ復号化失敗のトレースは同じアクティビティ内に表示され、復号化エラーと要求エラー間の直接相関関係が示されます。 + +## アクティビティ トレースの構成 + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] には、アプリケーションを処理するための定義済みアクティビティが用意されています \(「[アクティビティ リスト](../../../../../docs/framework/wcf/diagnostics/tracing/activity-list.md)」を参照してください\)。また、ユーザー トレースをグループ化するために、アクティビティをプログラムによって定義することもできます。詳細については、「[ユーザー コード トレースの出力](../../../../../docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md)」を参照してください。 + + 実行時にアクティビティ トレースを出力するには、次の構成コードに示すように、`System.ServiceModel` トレース ソースや、他の [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] トレース ソースまたはカスタム トレース ソースの `ActivityTracing` 設定を使用します。 + +``` + +``` + + 使用する構成要素と属性の詳細については、「[トレースの構成](../../../../../docs/framework/wcf/diagnostics/tracing/configuring-tracing.md)」を参照してください。 + +## アクティビティの表示 + アクティビティとそのユーティリティは、[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md)で表示できます。ActivityTracing が有効な場合、このツールはトレースを取得し、アクティビティに基づいて並べ替えます。トレース転送を表示することもできます。トレース転送は、さまざまなアクティビティが相互にどのように関連しているかを示します。これにより、特定のアクティビティによって別のアクティビティが開始されたことを確認できます。たとえば、Secure Conversation トークンを取得するために、あるメッセージ要求によってセキュリティ ハンドシェイクが開始されたことを確認できます。 + +### サービス トレース ビューアーでのアクティビティの関連付け + 次のように、サービス トレース ビューアー ツールには、アクティビティの 2 つのビューが用意されています。 + +- **リスト** ビュー : アクティビティ ID を使用して、プロセス全体にわたり、トレースを直接関連付けます。異なるプロセス \(クライアントとサービスなど\) のトレースであっても、同じアクティビティ ID を持つトレースは、同じアクティビティにグループ化されます。したがって、サービスで発生したエラーによってクライアントでエラーが発生した場合、ツールの同じアクティビティ ビューに両方のエラーが表示されることになります。 + +- **グラフ** ビュー : アクティビティは、プロセスごとにグループ化されます。このビューでは、クライアントとサービスのトレースは、アクティビティ ID が同じであっても、異なるアクティビティに表示されます。アクティビティ ID は同じであるが、異なるプロセスに含まれるアクティビティを相互に関連付けるために、このツールでは、関連するアクティビティ間のメッセージ フローが示されます。 + + 詳細およびサービス トレース ビューアー ツールのグラフィック表示については、「[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md)」および「[サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md)」を参照してください。 + +## アクティビティ スコープの定義 + アクティビティはデザイン時に定義され、作業の論理単位を表します。同じアクティビティ識別子を使用して出力されたトレースは直接関連し、同じアクティビティに含まれます。アクティビティはエンドポイントの境界 \(要求\) を越えることができるため、アクティビティ 1 つにつき 2 つのスコープが定義されています。 + +- `Global` スコープ \(アプリケーションごと\)。このスコープでは、アクティビティは 128 ビットの、グローバルに一意なアクティビティ識別子 \(gAId\) によって識別されます。gAId は、エンドポイント全体にわたって伝達されます。 + +- `Local` スコープ \(エンドポイントごと\)。このスコープでは、アクティビティは、gAId、アクティビティ トレースを出力するトレース ソース名、およびプロセス ID によって識別されます。この 3 つの組み合わせによって、ローカル アクティビティ ID \(lAId\) が構成されます。lAId は、アクティビティの \(ローカル\) 境界の定義に使用されます。 + +## トレース スキーマ + トレースはスキーマを使用して Microsoft プラットフォーム間で出力できます。"e2e" \("エンド ツー エンド" の略\) は、一般に使用されるスキーマです。このスキーマには、128 ビット識別子 \(gAId\)、トレース ソース名、およびプロセス ID が含まれます。マネージ コードでは、 が e2e スキーマでトレースを出力します。 + + 開発者は、スレッド ローカル ストレージ \(TLS\) の GUID を使用して プロパティを設定することにより、トレースで出力する AID を設定できます。次に例を示します。 + +``` +// set the current Activity ID to a new GUID. +CorrelationManager.ActivityId = Guid.NewGuid(); +``` + + 次の例に示すように、トレース ソースを使用してトレースを出力すると、TLS での gAId の設定が明確に示されます。 + +``` +TraceSource traceSource = new TraceSource("myTraceSource"); +traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information"); +``` + + 出力されるトレースには、TLS の現在の gAId、トレース ソースのコンストラクターにパラメーターとして渡されるトレース ソース名、および現在のプロセスの ID が含まれます。 + +## アクティビティの有効期間 + 最も厳密な意味では、アクティビティの形跡は、出力されたトレースでアクティビティ ID が初めて使用されたときに始まり、出力されたトレースでアクティビティ ID が最後に使用されたときに終わります。 には、定義済みのトレースの種類のセットが用意されています。これは、アクティビティの有効期間の境界を明示的にマークするための Start トレースと Stop トレースを含みます。 + +- Start : アクティビティの開始を示します。"Start" トレースは、新しい処理マイルストーンの開始を記録します。このトレースには、特定のプロセスの特定のトレース ソースに使用される新しいアクティビティ ID が含まれます。ただし、エンドポイント間でアクティビティ ID が伝達される場合を除きます \(この場合は、エンドポイントごとに 1 つの "Start" トレースが表示されます\)。新しいアクティビティの開始の例として、新しい処理スレッドの作成や、新しいパブリック メソッドの入力などがあります。 + +- Stop: アクティビティの終了を示します。"Stop" トレースは、既存の処理マイルストーンの終了を記録します。このトレースには、特定のプロセスの特定のトレース ソースに使用される既存のアクティビティ ID が含まれます。ただし、エンドポイント間でアクティビティ ID が伝達される場合を除きます \(この場合は、エンドポイントごとに 1 つの "Stop" トレースが表示されます\)。アクティビティの停止の例として、処理スレッドの終了や、"Start" トレースによって開始が示されたメソッドの終了などがあります。 + +- Suspend : アクティビティの処理の中断を示します。"Suspend" トレースには、後で処理を再開することが予想される既存のアクティビティ ID が含まれます。中断イベントと再開イベントの間に、現在のトレース ソースからこの ID を使用してトレースが出力されることはありません。中断の例として、外部ライブラリ関数の呼び出し時、または I\/O 完了ポートなどのリソースで待機する際のアクティビティの一時停止などがあります。 + +- Resume : アクティビティの処理の再開を示します。"Resume" トレースには、現在のトレース ソースから最後に出力されたトレースが "Suspend" トレースであった既存のアクティビティ ID が含まれます。再開の例として、外部ライブラリ関数の呼び出しからの復帰や、I\/O 完了ポートなどのリソースによって処理の再開が通知された場合などがあります。 + +- Transfer: アクティビティの中には、他のアクティビティによって発生するものや、他のアクティビティに関連するものがあるため、"Transfer" トレースを使用してアクティビティを他のアクティビティに関連付けることができます。転送により、アクティビティ間の直接の関係が記録されます。 + + Start トレースと Stop トレースは、関連付けにとっては重要ではありません。ただし、これらのトレースは、パフォーマンスの向上、プロファイリング、およびアクティビティ スコープの検証に役立ちます。 + + 同じアクティビティの直接関連するイベントを検出するときや、転送トレースを追跡する場合に関連アクティビティのイベントを検出するときに、ツールはこれらのトレースを使用して、トレース ログのナビゲーションを最適化することができます。たとえば、ツールが Start\/Stop トレースを確認したときに、特定のアクティビティのログの解析を中止できます。 + + Start\/Stop トレースは、プロファイリングに使用することもできます。開始マーカーと終了マーカーの間で使用されるリソースは、論理アクティビティを含むアクティビティの包括的時間を表します。Suspend トレースから Resume トレースまでの時間間隔を減算することで、アクティビティの実際の時間がわかります。 + + また、Stop トレースは、実装済みのアクティビティのスコープを検証する際に特に役立ちます。特定のアクティビティ内ではなく Stop トレースの後に出現する処理トレースがある場合、これはコードの欠陥を示している可能性があります。 + +## アクティビティ トレースを使用するためのガイドライン + ActivityTracing トレース \(Start、Stop、Suspend、Resume、および Transfer\) を使用する際のガイドラインを以下に示します。 + +- トレースは、ツリーではなく循環有向グラフです。あるアクティビティを発生させたアクティビティに制御を戻すことができます。 + +- アクティビティは処理の境界を示します。処理の境界は、システム管理者にとって重要であり、サポートを容易にする上でも役立ちます。 + +- [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の各メソッド \(クライアントとサーバーの両方\) は、新しいアクティビティを開始し、\(処理の終了後に\) その新しいアクティビティを終了した後、アンビエント アクティビティに戻ることによって境界が設定されます。 + +- 接続のリッスンやメッセージの待機など、長時間にわたって実行される \(継続中の\) アクティビティは、対応する開始マーカーと終了マーカーによって表されます。 + +- メッセージの受信または処理によって起動されるアクティビティは、トレースの境界によって表されます。 + +- アクティビティはアクティビティを表します。オブジェクトとは限りません。アクティビティは、"~のときに.. \(有効なトレース出力が発生したときに\) これが発生していた" と解釈する必要があります。 + +## 参照 + [トレースの構成](../../../../../docs/framework/wcf/diagnostics/tracing/configuring-tracing.md) + [サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md) + [エンドツーエンドのトレースのシナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md) + [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) + [ユーザー コード トレースの出力](../../../../../docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/asynchronous-scenarios-using-http-tcp-or-named-pipe.md b/docs/framework/wcf/diagnostics/tracing/asynchronous-scenarios-using-http-tcp-or-named-pipe.md new file mode 100644 index 00000000000..b4c67bdfee3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/asynchronous-scenarios-using-http-tcp-or-named-pipe.md @@ -0,0 +1,95 @@ +--- +title: "HTTP、TCP、または名前付きパイプを使用した非同期シナリオ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a4d62402-43a4-48a4-9ced-220633ebc4ce +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# HTTP、TCP、または名前付きパイプを使用した非同期シナリオ +ここでは、マルチスレッド要求で HTTP、TCP、または名前付きパイプを使用したときの、さまざまな非同期要求\/応答シナリオでのアクティビティおよび転送について説明します。 + +## エラーを伴わない非同期要求\/応答 + ここでは、マルチスレッド クライアントを使用したときの、非同期要求\/応答シナリオでのアクティビティおよび転送について説明します。 + + 呼び出し元アクティビティは、`beginCall` が返され、`endCall` が返されると終了します。コールバックが呼び出されたときは、そのコールバックが返されます。 + + 呼び出されたアクティビティは、`beginCall` が返され、`endCall` が返されると終了します。または、そのアクティビティからコールバックが呼び出された場合は、コールバックが返されると終了します。 + +### コールバックを伴わない非同期クライアント + +#### HTTP を使用して、両方の側で伝達が有効になっている場合 + ![非同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/media/asyn1.gif "Asyn1") + + 図 1. 非同期クライアント、コールバックなし、両方の側で `propagateActivity`\=`true`、HTTP + + `propagateActivity`\=`true` の場合、"メッセージを処理" は転送先の "アクションを処理" アクティビティを示します。 + + HTTP ベースのシナリオでは、最初に送信するメッセージで "バイトを受信" が呼び出され、要求の有効期間だけ存在します。 + +#### HTTP を使用して、両方の側で伝達が無効になっている場合 + どちらかの側で `propagateActivity`\=`false` の場合、"メッセージを処理" は転送先の "アクションを処理" アクティビティを示しません。したがって、新しい ID を使用して、新しい一時的な "アクションを処理" アクティビティが呼び出されます。非同期応答と ServiceModel コード内の要求が一致する場合は、アクティビティ ID をローカル コンテキストから取得できます。その ID を使用して、実際の "アクションを処理" アクティビティに転送できます。 + + ![HTTP、TCP、および名前付きパイプを使用した非同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/media/async2.gif "Async2") + + 図 2. 非同期クライアント、コールバックなし、どちらかの側で `propagateActivity`\=`false`、HTTP + + HTTP ベースのシナリオでは、最初に送信するメッセージで "バイトを受信" が呼び出され、要求の有効期間だけ存在します。 + + "アクションを処理" アクティビティは、呼び出し元または呼び出し先で `propagateActivity`\=`false` の場合、および応答メッセージに Action ヘッダーが含まれない場合に、非同期クライアントで作成されます。 + +#### TCP または名前付きパイプを使用して、両方の側で伝達が有効になっている場合 + ![HTTP、TCP、および名前付きパイプを使用した非同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/media/async3.gif "Async3") + + 図 3. 非同期クライアント、コールバックなし、両方の側で `propagateActivity`\=`true`、名前付きパイプ\/TCP + + 名前付きパイプまたは TCP ベースのシナリオでは、クライアントが開かれるときに "バイトを受信" が呼び出され、接続の有効期間だけ存在します。 + + 図 1. と同様、`propagateActivity`\=`true` の場合、"メッセージを処理" は転送先の "アクションを処理" アクティビティを示します。 + +#### TCP または名前付きパイプを使用して、両方の側で伝達が無効になっている場合 + 名前付きパイプまたは TCP ベースのシナリオでは、クライアントが開かれるときに "バイトを受信" が呼び出され、接続の有効期間だけ存在します。 + + 図2. と同様、どちらかの側で `propagateActivity`\=`false` の場合、"メッセージを処理" は転送先の "アクションを処理" アクティビティを示しません。したがって、新しい ID を使用して、新しい一時的な "アクションを処理" アクティビティが呼び出されます。非同期応答と ServiceModel コード内の要求が一致する場合は、アクティビティ ID をローカル コンテキストから取得できます。その ID を使用して、実際の "アクションを処理" アクティビティに転送できます。 + + ![HTTP、TCP、および名前付きパイプを使用した非同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/media/async4.gif "Async4") + + 図 4. 非同期クライアント、コールバックなし、どちらかの側で `propagateActivity`\=`false`、名前付きパイプ\/TCP + +### コールバックを伴う非同期クライアント + このシナリオでは、コールバックと `endCall` に対するアクティビティ G と A’、およびその転送 \(送受信\) が追加されています。 + + ここでは、`propragateActivity`\=`true` で HTTP を使用する例だけを示します。ただし、追加のアクティビティや転送は、その他の場合 \(つまり、`propagateActivity`\=`false` で TCP または名前付きパイプを使用\) にも適用されます。 + + クライアントがユーザー コードを呼び出して結果の準備が完了したことを通知すると、コールバックは新しいアクティビティ \(G\) を作成します。ユーザー コードは、次に、コールバック内 \(図 5 を参照\) またはコールバック外 \(図 6 を参照\) で `endCall` を呼び出します。`endCall` がどのユーザー アクティビティから呼び出されているかわからないため、このアクティビティには "`A’`" というラベルが付けられています。A’ と A が同じである場合もありますし、異なる場合もあります。 + + ![非同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/media/asynccallback1.gif "AsyncCallback1") + + 図 5. 非同期クライアント、コールバックあり、コールバック内での `endCall` + + ![非同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/media/asynccallback2.gif "AsyncCallback2") + + 図 6. 非同期クライアント、コールバックあり、コールバック外での `endCall` + +### コールバックを伴う非同期サーバー + ![HTTP、TCP、および名前付きパイプを使用した非同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/media/aynchserver.gif "AynchServer") + + 図 7. 非同期サーバー、コールバックあり + + チャネル スタックは、"メッセージを受信" でクライアントをコールバックします。この処理のトレースは、"要求を処理" アクティビティ自体で出力されます。 + +## エラーを伴う非同期要求\/応答 + エラー メッセージは、`endCall` 中に受信されます。この点を除き、アクティビティおよび転送は前のシナリオと同様です。 + +## エラーを伴う\/伴わない非同期一方向要求\/応答 + クライアントに返される応答やエラーはありません。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/com.md b/docs/framework/wcf/diagnostics/tracing/com.md new file mode 100644 index 00000000000..cd33847e9ce --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/com.md @@ -0,0 +1,22 @@ +--- +title: "COM+ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6665a2d3-7e11-4cce-8968-3fcf3426d362 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# COM+ +次の図は、COM\+ アプリケーションでのアクティビティ トレースの使用方法を示しています。サーバーでユーザー コードを実行する代わりに、COM\+ オブジェクト モデルへのメソッド呼び出しごとに COM\+ アクティビティを定義できます。 + + ![COM+ アプリケーションによる同期呼び出し](../../../../../docs/framework/wcf/diagnostics/tracing/media/com-tracing.gif "Com\+Tracing") \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/configuring-tracing.md b/docs/framework/wcf/diagnostics/tracing/configuring-tracing.md new file mode 100644 index 00000000000..1d542699831 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/configuring-tracing.md @@ -0,0 +1,194 @@ +--- +title: "トレースの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "トレース [WCF]" +ms.assetid: 82922010-e8b3-40eb-98c4-10fc05c6d65d +caps.latest.revision: 53 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 53 +--- +# トレースの構成 +ここでは、トレースを有効にする方法、トレースを出力し、トレース レベルを設定するようにトレース ソースを構成する方法、エンドツーエンドのトレース相関をサポートするようにアクティビティ トレースと伝達を設定する方法、およびトレースにアクセスするようにトレース リスナーを設定する方法について説明します。 + + 運用環境またはデバッグ環境でのトレースの推奨設定については、「[トレースとメッセージ ログの推奨設定](../../../../../docs/framework/wcf/diagnostics/tracing/recommended-settings-for-tracing-and-message-logging.md)」を参照してください。 + +> [!IMPORTANT] +> Windows 8 でトレース ログが生成されるように、レベルの高い権限で \(管理者として\) アプリケーションを実行する必要があります。 + +## トレースの有効化 + [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] では次の診断トレース データが出力されます。 + +- 操作呼び出し、コード例外、警告、その他の重要な処理イベントなど、アプリケーションのすべてのコンポーネントにおける処理マイルストーンのトレース。 + +- トレース機能が正しく動作しないときの Windows エラー イベント。「[イベント ログ](../../../../../docs/framework/wcf/diagnostics/event-logging/index.md)」を参照してください。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] トレースは、 に基づいています。トレースを使用するには、構成ファイルまたはコードでトレース ソースを定義する必要があります。[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] アセンブリごとにトレース ソースを定義します。`System.ServiceModel` トレース ソースは最も一般的な [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] トレース ソースで、トランスポートへの出入りからユーザー コードへの出入りまで、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] 通信スタック全体の処理マイルストーンを記録します。`System.ServiceModel.MessageLogging` トレース ソースは、システムを通過するすべてのメッセージを記録します。 + + 既定では、トレースは無効です。トレースを有効にするには、トレース リスナーを作成し、構成で選択したトレース ソースのトレース レベルを "Off" 以外に設定する必要があります。それ以外の場合、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] はトレースを生成しません。リスナーを指定しないと、トレースは自動的に無効になります。リスナーを定義してもトレース レベルを指定しないと、トレース レベルは既定で "Off" に設定され、トレースが出力されなくなります。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] 機能拡張ポイント \(カスタム操作の呼び出し元など\) を使用する場合、独自のトレースを出力する必要があります。これは、機能拡張ポイントを実装すると、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] が既定のパスに標準のトレースを出力できなくなるためです。トレースを出力することで手動トレースのサポートを実装しない場合、予測したトレースが得られない場合があります。 + + トレースは、アプリケーションの構成ファイル \(Web ホスト型アプリケーションの場合は Web.config、自己ホスト型アプリケーションの場合は Appname.exe.config\) を編集することで構成できます。以下は、このような編集の例です。これらの設定の詳細については、「トレースを使用するためのトレース リスナーの構成」のセクションを参照してください。 + +``` + + + + + + + + + + + +``` + +> [!NOTE] +> [!INCLUDE[vs_current_short](../../../../../includes/vs-current-short-md.md)] で [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービス プロジェクトの構成ファイルを編集するには、**ソリューション エクスプローラー**でアプリケーションの構成ファイル \(Web ホスト型アプリケーションの場合は Web.config、自己ホスト型アプリケーションの場合は Appname.exe.config\) を右クリックします。次に、**\[WCF 構成の編集\]** コンテキスト メニュー項目を選択します。これによって[構成エディター ツール \(SvcConfigEditor.exe\)](../../../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md) が開き、グラフィカル ユーザー インターフェイスを使用して [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスの構成設定を変更できます。 + +## トレースを出力するためのトレース ソースの構成 + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、アセンブリごとにトレース ソースを定義します。アセンブリ内で生成されたトレースは、該当するソースで定義されているリスナーによってアクセスされます。次のトレース ソースが定義されます。 + +- System.ServiceModel: 構成の読み取り、トランスポートでのメッセージの処理、セキュリティ処理、ユーザー コードでのメッセージのディスパッチなど、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] 処理のすべての段階を記録します。 + +- System.ServiceModel.MessageLogging: システムを通過するすべてのメッセージを記録します。 + +- System.IdentityModel + +- System.ServiceModel.Activation + +- System.IO.Log: Common Log File System \(CLFS\) への .NET Framework インターフェイスを記録します。 + +- System.Runtime.Serialization: オブジェクトの読み取りまたは書き込みを記録します。 + +- CardSpace + + 各トレース ソースは、次の構成例に示すように同じ \(共有\) リスナーを使用するように構成できます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + さらに、次の例に示すように、ユーザー定義のトレース ソースを追加してユーザー コード トレースを出力することもできます。 + +``` + + + + + + + + + + +``` + + ユーザー定義のトレース ソースの作成[!INCLUDE[crabout](../../../../../includes/crabout-md.md)]、「[トレースの拡張](../../../../../docs/framework/wcf/samples/extending-tracing.md)」を参照してください。 + +## トレースを使用するためのトレース リスナーの構成 + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は実行時にトレース データを処理するリスナーにデータを送信します。[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は に出力の形式が異なる複数の定義済みリスナーを提供します。カスタム リスナーの種類を追加することもできます。 + + `add` を使用して、使用するトレース リスナーの名前と種類を指定できます。この例の構成では、リスナーに `traceListener` という名前を付け、使用する種類として標準の .NET Framework トレース リスナー \(`System.Diagnostics.XmlWriterTraceListener`\) を追加しています。ソースごとに任意の数のトレース リスナーを追加できます。トレース リスナーがトレースをファイルに出力する場合は、構成ファイルで出力ファイルの場所と名前を指定する必要があります。指定するには、`initializeData` をそのリスナーのファイルの名前に設定します。ファイル名を指定しないと、使用するリスナーの種類に基づいて任意のファイル名が生成されます。 を使用した場合は、拡張子のないファイル名が生成されます。カスタム リスナーを実装した場合は、この属性を使用して、ファイル名以外の初期化データを受け取ることもできます。たとえば、この属性にデータベース識別子を指定できます。 + + カスタム トレース リスナーは、ネットワーク上のリモート データベースなどにトレースを送信するように構成できます。アプリケーションを展開するユーザーは、リモート コンピューターのトレース ログに適切なアクセス制御を適用する必要があります。 + + また、トレース リスナーはプログラムによって構成することもできます。[!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)]「[方法 : トレース リスナーを作成し初期化する](http://go.microsoft.com/fwlink/?LinkId=94648)」および「[カスタム TraceListener の作成](http://go.microsoft.com/fwlink/?LinkId=96239)」を参照してください。 + +> [!CAUTION] +> `System.Diagnostics.XmlWriterTraceListener` はスレッド セーフではないため、トレース ソースは、トレースを出力するときにリソースを排他的にロックする可能性があります。このリスナーを使用するように構成されたトレース ソースに多くのスレッドがトレースを出力すると、リソースの競合が発生し、パフォーマンスに重大な問題が生じる場合があります。この問題を解決するには、スレッド セーフなカスタム リスナーを実装する必要があります。 + +## トレース レベル + トレース レベルは、トレース ソースの `switchValue` 設定で制御します。使用できるトレース レベルを次の表に示します。 + +|トレース レベル|追跡イベントの性質|追跡イベントの内容|追跡イベント|対象ユーザー| +|--------------|---------------|---------------|------------|------------| +|Off|N\/A|N\/A|トレースは出力されません。|N\/A| +|Critical|"否定的" イベント : 予期しない処理またはエラー状態を示すイベント。||次の例を含む未処理の例外が記録されます。

- OutOfMemoryException
- ThreadAbortException \(CLR が任意の ThreadAbortExceptionHandler を呼び出します\)
- StackOverflowException \(キャッチできません\)
- ConfigurationErrorsException
- SEHException
- アプリケーションの起動エラー
- フェイルファースト イベント
- システム ハング
- 有害メッセージ : アプリケーションを失敗させるメッセージ トレース。|管理者

アプリケーション開発者| +|Error|"否定的" イベント : 予期しない処理またはエラー状態を示すイベント。|予期しない処理が発生した。アプリケーションが、タスクを正常に実行できなかった。ただし、アプリケーションは依然として動作している。|すべての例外がログに記録されます。|管理者

アプリケーション開発者| +|Warning|"否定的" イベント : 予期しない処理またはエラー状態を示すイベント。|問題が発生したか、発生する可能性があるが、アプリケーションは正常に動作している。ただし、正常な動作を継続できなくなる可能性がある。|- アプリケーションが、調整設定の範囲を超えた数の要求を受信している。
- 受信側キューが構成された最大の容量に近づいている。
- タイムアウトを超えた。
- 資格情報が拒否される。|管理者

アプリケーション開発者| +|Information|"肯定的" イベント : 正常なマイルストーンを示すイベント。|アプリケーションが正常に動作しているかどうかとは無関係の、アプリケーションの実行に関する重要で正常なマイルストーン。|一般に、システム ステータスの監視と診断、パフォーマンスの計測、またはプロファイリングに有用なメッセージが生成されます。この情報は、キャパシティ プランニングやパフォーマンス管理のために利用できます。

- チャネルが作成される。
- エンドポイントのリスナーが作成される。
- メッセージがトランスポートに入る、またはトランスポートから離れる。
- セキュリティ トークンが取得される。
- 構成設定が読み取られる。|管理者

アプリケーション開発者

製品開発者。| +|Verbose|"肯定的" イベント : 正常なマイルストーンを示すイベント。|ユーザー コードとサービスの両方に対する低レベルのイベントが出力されます。|一般に、このレベルはデバッグやアプリケーションの最適化に利用できます。

- 認識されたメッセージ ヘッダー。|管理者

アプリケーション開発者

製品開発者| +|ActivityTracing||処理アクティビティとコンポーネント間のフロー イベント。|このレベルを使用すると、管理者と開発者は同じアプリケーション ドメイン内のアプリケーションの相関関係を示すことができます。

- start\/stop など、アクティビティ境界のトレース。
- 転送のトレース。|すべて| +|All||アプリケーションが正常に動作している可能性があります。すべてのイベントが出力されます。|前のすべてのイベント。|All| + + Verbose から Critical までのレベルは相互にスタックされます。つまり、各トレース レベルには、そのレベルよりも上位のすべてのレベルが含まれます \(Off レベルを除く\)。たとえば、Warning レベルでリッスンしているリスナーは、Critical、Error、Warning の各トレースを受け取ります。All レベルには、Verbose から Critical までのイベントとアクティビティ トレース イベントが含まれます。 + +> [!CAUTION] +> Information、Verbose、および ActivityTracing の各レベルは、多くのトレースを生成するため、コンピューターで利用可能なすべてのリソースを使い果たした場合は、メッセージ スループットに悪影響を及ぼす可能性があります。 + +## アクティビティ トレースと伝達の関連付けの構成 + `switchValue` 属性に指定する `activityTracing` 値を使用してアクティビティ トレースを有効にし、エンドポイント内のアクティビティの境界と転送のトレースを出力できます。 + +> [!NOTE] +> [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の特定の拡張機能を使用する場合に、アクティビティ トレースが有効になっていると、 が発生することがあります。この問題を解決するには、アプリケーションの構成ファイルを調べて、トレース ソースの `switchValue` 属性が `activityTracing` に設定されていないことを確認します。 + + `propagateActivity` 属性は、メッセージ交換に参加している他のエンドポイントにアクティビティを伝達する必要があるかどうかを示します。この値を `true` に設定すると、任意の 2 つのエンドポイントで生成されたトレース ファイルを取得し、一方のエンドポイントのトレース セットがもう一方のエンドポイントのトレース セットにどのように転送されるかを監視できます。 + + アクティビティのトレースと伝達[!INCLUDE[crabout](../../../../../includes/crabout-md.md)]、「[伝達](../../../../../docs/framework/wcf/diagnostics/tracing/propagation.md)」を参照してください。 + + `propagateActivity` ブール値と `ActivityTracing` ブール値は共に System.ServiceModel TraceSource に適用されます。また、`ActivityTracing` 値は、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] またはユーザー定義トレース ソースを含む任意のトレース ソースに適用されます。 + + ユーザー定義のトレース ソースでは、`propagateActivity` 属性を使用できません。ユーザー コード アクティビティ ID の伝達では、ServiceModel `propagateActivity` 属性を `true` に設定しているときは、ServiceModel `ActivityTracing` を設定しないでください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) + [方法 : トレース リスナーを作成し初期化する](http://go.microsoft.com/fwlink/?LinkId=94648) + [カスタム TraceListener の作成](http://go.microsoft.com/fwlink/?LinkId=96239) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/connectionpoolmaxoutboundconnectionsperendpointquotareached.md b/docs/framework/wcf/diagnostics/tracing/connectionpoolmaxoutboundconnectionsperendpointquotareached.md new file mode 100644 index 00000000000..4295beedc0e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/connectionpoolmaxoutboundconnectionsperendpointquotareached.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ConnectionPoolMaxOutboundConnectionsPerEndpointQuotaReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 01c1fd61-84ef-43b8-a2e8-ae64ebbd0d18 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.ConnectionPoolMaxOutboundConnectionsPerEndpointQuotaReached +System.ServiceModel.Channels.ConnectionPoolMaxOutboundConnectionsPerEndpointQuotaReached + +## 説明 + MaxOutboundConnectionsPerEndpoint のクォータに達したため、接続は閉じられ、この接続プールには保存されませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/debugging-on-the-client.md b/docs/framework/wcf/diagnostics/tracing/debugging-on-the-client.md new file mode 100644 index 00000000000..915dd704841 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/debugging-on-the-client.md @@ -0,0 +1,20 @@ +--- +title: "クライアントでのデバッグ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 56f9ad05-ea1b-4ef6-85f2-890f7ed71567 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# クライアントでのデバッグ +[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスのクライアント アプリケーションをユーザーが簡単に記述できるようにするには、サービスの構成ファイルに [\](../../../../../docs/framework/configure-apps/file-schema/wcf/servicedebug.md) サービス動作を追加します。この動作は、ヘルプ ページを公開し、クライアントに返される SOAP エラーの詳細にマネージ例外情報を表示するために使用できます。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md b/docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md new file mode 100644 index 00000000000..8e5ac252696 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md @@ -0,0 +1,151 @@ +--- +title: "ユーザー コード トレースの出力 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fa54186a-8ffa-4332-b0e7-63867126fd49 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# ユーザー コード トレースの出力 +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] により生成されるインストルメンテーション データを収集するには、構成内でトレースを有効にする方法に加えて、ユーザー コードのプログラムによりトレースを出力することもできます。 この方法では、インストルメンテーション データを能動的に作成でき、後でそのデータを診断目的で詳細に調べることができます。 ここでは、この方法について説明します。 + + また、[トレースの拡張](../../../../../docs/framework/wcf/samples/extending-tracing.md)サンプルには、次の各セクションで取り上げるすべてのコードが含まれています。 + +## トレース ソースの作成 + ユーザー トレース ソースを作成するには、次のコードを使用できます。 + +``` +TraceSource ts = new TraceSource("myUserTraceSource"); +``` + +## アクティビティの作成 + アクティビティは論理的な処理単位です。 トレースをグループ化する主要な処理単位ごとに 1 つのアクティビティを作成できます。 たとえば、サービスの要求ごとに 1 つのアクティビティを作成できます。 これを行うには、次の手順を実行します。 + +1. スコープでアクティブ ID を保存します。 + +2. 新しいアクティビティ ID を作成します。 + +3. スコープ内のアクティビティから新しいアクティビティに移り、スコープ内に新しいアクティビティを設定し、そのアクティビティの Start トレースを出力します。 + + 次のコードでは、この設定方法について説明します。 + +``` +Guid oldID = Trace.CorrelationManager.ActivityId; +Guid traceID = Guid.NewGuid(); +ts.TraceTransfer(0, "transfer", traceID); +Trace.CorrelationManager.ActivityId = traceID; // Trace is static +ts.TraceEvent(TraceEventType.Start, 0, "Add request"); +``` + +## ユーザー アクティビティ内でのトレースの出力 + ユーザー アクティビティ内でトレースを出力するコードを次に示します。 + +``` +double value1 = 100.00D; +double value2 = 15.99D; +ts.TraceInformation("Client sends message to Add " + value1 + ", " + value2); +double result = client.Add(value1, value2); +ts.TraceInformation("Client receives Add response '" + result + "'"); +``` + +## アクティビティの停止 + アクティビティを停止するには、旧アクティビティに戻り、現在のアクティビティ ID を停止して、スコープで旧アクティビティをリセットします。 + + 次のコードでは、この設定方法について説明します。 + +``` +ts.TraceTransfer(0, "transfer", oldID); +ts.TraceEvent(TraceEventType.Stop, 0, "Add request"); +Trace.CorrelationManager.ActivityId = oldID; +``` + +## サービスへのアクティビティ ID の伝達 + クライアントとサービスの両方の構成ファイルで、`System.ServiceModel` トレース ソースの `propagateActivity` 属性を `true` に設定した場合、Add 要求に対するサービス処理は、クライアントに定義されたものと同じアクティビティで発生します。 サービスに独自のアクティビティと転送が定義されている場合、そのサービス トレースは、クライアントにより伝達されたアクティビティには表示されません。 その代わり、クライアントから ID が伝達されたアクティビティに、転送トレースにより、関連付けられたアクティビティにサービス トレースが表示されます。 + +> [!NOTE] +> `propagateActivity` 属性がクライアントとサービスの両方で `true` に設定されている場合、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] によりサービスの操作スコープ内のアンビエント アクティビティが設定されます。 + + 次のコードを使用して、アクティビティが [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] によってスコープ内に設定されたかどうかをチェックできます。 + +``` +// Check if an activity was set in scope by WCF, if it was +// propagated from the client. If not, ( ambient activity is +// equal to Guid.Empty), create a new one. +if(Trace.CorrelationManager.ActivityId == Guid.Empty) +{ + Guid newGuid = Guid.NewGuid(); + Trace.CorrelationManager.ActivityId = newGuid; +} +// Emit your Start trace. +ts.TraceEvent(TraceEventType.Start, 0, "Add Activity"); + +// Emit the processing traces for that request. +serviceTs.TraceInformation("Service receives Add " + + n1 + ", " + n2); +// double result = n1 + n2; +serviceTs.TraceInformation("Service sends Add result" + result); + +// Emit the Stop trace and exit the method scope. +ts.TraceEvent(TraceEventType.Stop, 0, "Add Activity"); +// return result; +``` + +## コード内でスローされる例外のトレース + コード内で例外をスローする場合、次のコードを使用して警告以上のレベルでその例外をトレースすることもできます。 + +``` +ts.TraceEvent(TraceEventType.Warning, 0, “Throwing exception “ + “exceptionMessage”); +``` + +## サービス トレース ビューアー ツールでのユーザー トレースの表示 + このセクションには、「[トレースの拡張](../../../../../docs/framework/wcf/samples/extending-tracing.md)」のサンプルを実行することによって生成されたトレースを、[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md)を使用して表示したときのスクリーンショットが含まれています。 + + 次の図の左ペインでは、以前に作成した “Add 要求” アクティビティが選択されています。 アプリケーション クライアント プログラムを構成する他の 3 つの算術演算アクティビティ \(Divide、Subtract、Multiply\) も表示されています。 どの要求でどのようなエラーが発生したかを明確にするため、ユーザー コードでは、操作ごとに新しいアクティビティが 1 つ定義されています。 + + 「[トレースの拡張](../../../../../docs/framework/wcf/samples/extending-tracing.md)」のサンプルでは、転送の使用方法を示すために 4 つの操作要求をカプセル化した Calculator アクティビティも作成されています。 要求があるたびに、Calculator アクティビティから該当する要求のアクティビティへ、または該当する要求のアクティビティから Calculator アクティビティへ移転します \(図の右上のパネルにトレースが表示されています\)。 + + 左のパネルでアクティビティを選択すると、そのアクティビティによって追加されたトレースが右上のパネルに表示されます。 要求パス内の各エンドポイントで `propagateActivity` に `true` が設定されている場合、要求アクティビティのトレースは、その要求に関連するすべてのプロセスから取り込まれます。 このサンプルでは、クライアントおよびサービスからのトレースをパネルの 4 番目の列で参照できます。 + + このアクティビティは次の順序で処理を行います。 + +1. クライアントはメッセージを Add に送信します。 + +2. サービスは Add 要求メッセージを受信します。 + +3. サービスは Add 応答を送信します。 + +4. クライアントは Add 応答を受信します。 + + これらすべてのトレースは、Information レベルで出力されています。 右上のパネルでトレースをクリックすると、トレースの詳細が右下のパネルに表示されます。 + + 次の図には、Calculator アクティビティと要求アクティビティ間の転送トレースに加え、1 つの要求アクティビティについて Start トレースと Stop トレースが 2 組表示されています。1 組はクライアントのトレースで、もう 1 組はサーバーのトレースです \(各トレース ソースにつき 1 組\)。 + + ![トレース ビューアー: ユーザー コード トレースの出力](../../../../../docs/framework/wcf/diagnostics/tracing/media/242c9358-475a-4baf-83f3-4227aa942fcd.gif "242c9358\-475a\-4baf\-83f3\-4227aa942fcd") +作成時刻によるアクティビティのリスト \(左のパネル\)、および入れ子にされたアクティビティ \(右上のパネル\) + + クライアントがスローする原因となる例外を、サービス コードがスローする場合 \(たとえば、クライアントが要求に対する応答を取得できなかった場合など\)、直接的な相関関係を示すために、サービスとクライアントの両方の警告メッセージまたはエラー メッセージは、同じアクティビティ内に発生します。 次の図の場合、サーバーは、"この要求をユーザー コードで処理することをサービスが拒否した" という状態を知らせる例外をスローしています。また、クライアントも、"内部エラーによりサーバーが要求を処理できない" という状態を知らせる例外をスローしています。 + + ![トレース ビューアーを使用したユーザー コード トレースの出力](../../../../../docs/framework/wcf/diagnostics/tracing/media/e2etrace2.gif "e2eTrace2") +要求アクティビティ ID が伝達された場合、どのエンドポイントで発生したかにかかわらず、その要求に関するすべてのエラーが同じアクティビティに表示されます。 + + 左パネルの Multiply アクティビティをダブルクリックすると、次のグラフが表示されます。関連するプロセスごとの Multiply アクティビティに対するトレースが示されます。 まずサービスで発生した警告 \(スローされた例外\) が表示され、それに続いて、要求を処理できなかったために発生したクライアントの警告とエラーが表示されます。 したがって、エンドポイント間のエラーの因果関係が示され、エラーの根本的な原因を導き出すことができます。 + + ![トレース ビューアーを使用したユーザー コード トレースの出力](../../../../../docs/framework/wcf/diagnostics/tracing/media/e2etrace3.gif "e2eTrace3") +エラーの相関関係のグラフ表示 + + 以前のトレースを取得するには、ユーザー トレース ソースに対して `ActivityTracing` を設定し、`System.ServiceModel` トレース ソースに対して `propagateActivity=true` を設定します。 ユーザー コード間のアクティビティの伝達を有効にするため、`System.ServiceModel` トレース ソースの `ActivityTracing` は設定されていません \(ServiceModel アクティビティがオンになっている場合、クライアントに定義されているアクティビティ ID がサービス ユーザー コードにまで伝達されることはありません。ただし、転送は、クライアントおよびサービスのユーザー コード アクティビティと、中間の [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] アクティビティを相互に関連付けます\)。 + + アクティビティを定義してアクティビティ ID を伝達することにより、エンドポイント間でエラーの直接相関関係を実行できます。 このようにして、エラーの根本原因をよりすばやく見つけることができるようになります。 + +## 参照 + [トレースの拡張](../../../../../docs/framework/wcf/samples/extending-tracing.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md b/docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md new file mode 100644 index 00000000000..62e4f476edf --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md @@ -0,0 +1,50 @@ +--- +title: "エンドツーエンドのトレースのシナリオ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f83b7d53-6061-4362-a9a3-ee1daf6542be +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# エンドツーエンドのトレースのシナリオ +このセクションの各トピックで、トレースの使用に関するさまざまなシナリオを説明します。 + + 要求\/応答、一方向、双方向の各シナリオで、アクティビティ トレースを次の方法で実装します。 + +- 同期または非同期 + +- BasicHttpBinding、netNamedPipeBinding、netTcpBinding、wsHttpBinding、または netMsmqBinding + +- COM サービス + +- ユーザー アクティビティ ID の伝達 + +## このセクションの内容 + +- [アクティビティ リスト](../../../../../docs/framework/wcf/diagnostics/tracing/activity-list.md) + +- [アクティビティ ID の伝達](../../../../../docs/framework/wcf/diagnostics/tracing/activity-id-propagation.md) + +- [HTTP、TCP、または名前付きパイプを使用した同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/synchronous-scenarios-using-http-tcp-or-named-pipe.md) + +- [HTTP、TCP、または名前付きパイプを使用した非同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/asynchronous-scenarios-using-http-tcp-or-named-pipe.md) + +- [メッセージ セキュリティにおけるアクティビティ トレース](../../../../../docs/framework/wcf/diagnostics/tracing/activity-tracing-in-message-security.md) + +- [MSMQ](../../../../../docs/framework/wcf/diagnostics/tracing/msmq.md) + +- [COM\+](../../../../../docs/framework/wcf/diagnostics/tracing/com.md) + +## 参照 + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [エンドツーエンドのトレース](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/end-to-end-tracing.md b/docs/framework/wcf/diagnostics/tracing/end-to-end-tracing.md new file mode 100644 index 00000000000..63f56546075 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/end-to-end-tracing.md @@ -0,0 +1,39 @@ +--- +title: "エンドツーエンドのトレース | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f5ac7fc7-f97c-4313-b068-54e0c471b2aa +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# エンドツーエンドのトレース +エンド ツー エンド \(E2E\) のトレースを使用すると、開発者は [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] インフラストラクチャ内のコードの実行状況を追跡し、コード パスが失敗した原因を調査したり、キャパシティ プランニングやパフォーマンス分析に使用できる詳細なトレース情報を出力したりできます。 [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] には、エラーの原因の診断に役立つアクティビティ、伝達、および転送の 3 つの相関機構が用意されています。 + + エンド ツー エンドのトレースのシナリオの一覧、および各シナリオの個々のアクティビティとトレース デザインについては、「[エンドツーエンドのトレースのシナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md)」を参照してください。 + +## このセクションの内容 + [アクティビティ](../../../../../docs/framework/wcf/diagnostics/tracing/activity.md): [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] トレース モデルのアクティビティ トレースについて説明します。 + + [転送](../../../../../docs/framework/wcf/diagnostics/tracing/transfer.md): [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] トレース モデルで使用される転送と、転送を使用したエンドポイント内でのアクティビティの関連付けについて説明します。 + + [伝達](../../../../../docs/framework/wcf/diagnostics/tracing/propagation.md): [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] トレース モデルで使用されるアクティビティ伝達と、伝達を使用したエンドポイント間でのアクティビティの関連付けについて説明します。 + + [トレースの種類の概要](../../../../../docs/framework/wcf/diagnostics/tracing/trace-type-summary.md) + + すべてのアクティビティ トレースの概要を説明します。 + +## 参照 + [トレースの構成](../../../../../docs/framework/wcf/diagnostics/tracing/configuring-tracing.md) + [サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md) + [エンドツーエンドのトレースのシナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md) + [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/index.md b/docs/framework/wcf/diagnostics/tracing/index.md new file mode 100644 index 00000000000..a67bcbcfa55 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/index.md @@ -0,0 +1,50 @@ +--- +title: "トレース | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2649eae2-dbf8-421c-9cfb-cfa9e01de87f +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# トレース +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] には、エラーの監視と分析のための、アプリケーションの実装と診断データが用意されています。アプリケーションの動作やエラー原因を調べるために、デバッガーの代わりにトレースを使用できます。コンポーネント間でエラーと処理を関連付けて、エンドツーエンドの調査を行うこともできます。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では次の診断トレース データが出力されます。 + +- 操作呼び出し、コード例外、警告、その他の重要な処理イベントなど、アプリケーションのすべてのコンポーネントにおける処理マイルストーンのトレース。 + +- トレース機能が正しく動作しないときの Windows エラー イベント。 + +## このセクションの内容 + [トレースの構成](../../../../../docs/framework/wcf/diagnostics/tracing/configuring-tracing.md) + + ここでは、特定のニーズに合うよう、さまざまなレベルでトレースを構成する方法を説明します。 + + [エンドツーエンドのトレース](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing.md) + + ここでは、エンドツーエンドのトレースの相関のためのアクティビティ トレースと伝達を使用して、デバッグを支援する方法について説明します。 + + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + + ここでは、トレースを使用してアプリケーションをデバッグする方法について説明します。 + + [トレースに関するセキュリティの考慮事項と役立つヒント](../../../../../docs/framework/wcf/diagnostics/tracing/security-concerns-and-useful-tips-for-tracing.md) + + ここでは、機密情報を漏洩の危険から守る方法と共に、WebHost を使用する場合の便利なヒントについて説明します。 + + [トレースの参照](../../../../../docs/framework/wcf/diagnostics/tracing/traces-reference.md) + + ここでは [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] が生成するトレースをすべて列挙します。 + +## 参照 + [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/media/242c9358-475a-4baf-83f3-4227aa942fcd.gif b/docs/framework/wcf/diagnostics/tracing/media/242c9358-475a-4baf-83f3-4227aa942fcd.gif new file mode 100644 index 00000000000..e8d4ddd2fdf Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/242c9358-475a-4baf-83f3-4227aa942fcd.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/asyn1.gif b/docs/framework/wcf/diagnostics/tracing/media/asyn1.gif new file mode 100644 index 00000000000..aff081e5246 Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/asyn1.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/async2.gif b/docs/framework/wcf/diagnostics/tracing/media/async2.gif new file mode 100644 index 00000000000..07df66025fc Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/async2.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/async3.gif b/docs/framework/wcf/diagnostics/tracing/media/async3.gif new file mode 100644 index 00000000000..912e06f270c Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/async3.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/async4.gif b/docs/framework/wcf/diagnostics/tracing/media/async4.gif new file mode 100644 index 00000000000..c299ae206fb Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/async4.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/asynccallback1.gif b/docs/framework/wcf/diagnostics/tracing/media/asynccallback1.gif new file mode 100644 index 00000000000..288299ecf07 Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/asynccallback1.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/asynccallback2.gif b/docs/framework/wcf/diagnostics/tracing/media/asynccallback2.gif new file mode 100644 index 00000000000..30300954bc4 Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/asynccallback2.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/aynchserver.gif b/docs/framework/wcf/diagnostics/tracing/media/aynchserver.gif new file mode 100644 index 00000000000..916a5cca9a9 Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/aynchserver.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/com-tracing.gif b/docs/framework/wcf/diagnostics/tracing/media/com-tracing.gif new file mode 100644 index 00000000000..2265544bead Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/com-tracing.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace10.gif b/docs/framework/wcf/diagnostics/tracing/media/e2etrace10.gif new file mode 100644 index 00000000000..5b05f1d69fd Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/e2etrace10.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace11.gif b/docs/framework/wcf/diagnostics/tracing/media/e2etrace11.gif new file mode 100644 index 00000000000..b9508de6001 Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/e2etrace11.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace2.gif b/docs/framework/wcf/diagnostics/tracing/media/e2etrace2.gif new file mode 100644 index 00000000000..fec472425bf Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/e2etrace2.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace3.gif b/docs/framework/wcf/diagnostics/tracing/media/e2etrace3.gif new file mode 100644 index 00000000000..434a7656eee Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/e2etrace3.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace4.gif b/docs/framework/wcf/diagnostics/tracing/media/e2etrace4.gif new file mode 100644 index 00000000000..6c462e843da Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/e2etrace4.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace5.gif b/docs/framework/wcf/diagnostics/tracing/media/e2etrace5.gif new file mode 100644 index 00000000000..4cebe8bd027 Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/e2etrace5.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace6.gif b/docs/framework/wcf/diagnostics/tracing/media/e2etrace6.gif new file mode 100644 index 00000000000..fab4bedb4ae Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/e2etrace6.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace7.gif b/docs/framework/wcf/diagnostics/tracing/media/e2etrace7.gif new file mode 100644 index 00000000000..dd35e73e686 Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/e2etrace7.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/e2etrace8.gif b/docs/framework/wcf/diagnostics/tracing/media/e2etrace8.gif new file mode 100644 index 00000000000..46c55dfa6e3 Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/e2etrace8.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/sync.gif b/docs/framework/wcf/diagnostics/tracing/media/sync.gif new file mode 100644 index 00000000000..7da20d16249 Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/sync.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/media/wcfc-e2etrace9s.gif b/docs/framework/wcf/diagnostics/tracing/media/wcfc-e2etrace9s.gif new file mode 100644 index 00000000000..29a1073036f Binary files /dev/null and b/docs/framework/wcf/diagnostics/tracing/media/wcfc-e2etrace9s.gif differ diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-commitmessageretry.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-commitmessageretry.md new file mode 100644 index 00000000000..0b739dd7674 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-commitmessageretry.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.CommitMessageRetry | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4abe01f0-6398-4fba-b2f3-c054b7f7e971 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.CommitMessageRetry +コミット メッセージの再試行は、応答しない参加要素に送信されました。 + +## 説明 + ローカル トランザクション マネージャーが一定時間内に応答を受信せず、下位の参加要素にコミット メッセージを再送信する必要があった場合にトレースされます。 + +## トラブルシューティング + 応答が時間どおりに配信されない原因となっている可能性のあるネットワークや製品の問題について調査します。このメッセージが多数表示される場合は、インフラストラクチャに問題があるか、または応答時間が異常に長くなっている可能性があります。いずれの問題によっても、システム内のトランザクションのスループットが大幅に低下します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-coordinatorrecovered.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-coordinatorrecovered.md new file mode 100644 index 00000000000..6251d3a513e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-coordinatorrecovered.md @@ -0,0 +1,28 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.CoordinatorRecovered | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a70f7b3c-e3fc-44e7-aace-32fb0086a566 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.CoordinatorRecovered +コーディネーターの登録リストが、トランザクション マネージャー ログから回復されました。 + +## 説明 + 指定した上位のコーディネーターの登録リストがローカル トランザクション マネージャーによって正常に回復されたときにトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-coordinatorstatemachinefinished.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-coordinatorstatemachinefinished.md new file mode 100644 index 00000000000..e89aacfab8b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-coordinatorstatemachinefinished.md @@ -0,0 +1,28 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.CoordinatorStateMachineFinished | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 16cb428d-d886-4789-a961-6fded4b0dbba +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.CoordinatorStateMachineFinished +コーディネーターの登録リストのステート マシンが完了状態になりました。 + +## 説明 + 上位のコーディネーターの登録リストが 2PC 処理を完了したとローカル トランザクション マネージャーが判断したときに、トレースされます。登録リストの結果は、Committed、Aborted、または Forgotten のいずれかです。ローカル トランザクション マネージャーが準備中に読み取り専用にする場合にもトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-createtransactionfailure.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-createtransactionfailure.md new file mode 100644 index 00000000000..4f6c0d8c193 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-createtransactionfailure.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.CreateTransactionFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c3468e23-49a9-4a84-972d-a79a658851b3 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.CreateTransactionFailure +トランザクションを作成できませんでした。 + +## 説明 + このトレースは、MSDTC がトランザクションを作成できないときに生成されます。 原因として、リソース不足、ログ領域の不足、またはその他のエラーが考えられます。 + +## トラブルシューティング + トレース メッセージ内のステータス文字列を調べて、アクション可能な項目が存在するかどうかを確認します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-enlistmentidentitycheckfailed.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-enlistmentidentitycheckfailed.md new file mode 100644 index 00000000000..5ff9f3ffc7b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-enlistmentidentitycheckfailed.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.EnlistmentIdentityCheckFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 74aeb3e7-f9eb-4491-9e78-5f8c9cbcb434 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.EnlistmentIdentityCheckFailed +受信メッセージの送信者の ID が登録リストのエンドポイント参照から派生した ID と一致しませんでした。 + +## 説明 + メッセージ セキュリティの検証に失敗した場合にトレースされます。 + +## トラブルシューティング + トランザクションに参加するすべてのコンピューターに対して、トランザクション セキュリティが正しく構成されていることを確認してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-enlisttransaction.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-enlisttransaction.md new file mode 100644 index 00000000000..f8ee510f551 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-enlisttransaction.md @@ -0,0 +1,28 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.EnlistTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ba793c1d-6b2f-43da-b14d-a825c6c31b01 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.EnlistTransaction +WS\-AtomicTransaction プロトコル サービスが、指定された調整コンテキストを使うトランザクションに正常に登録されました。 + +## 説明 + 受信トランザクションが正常に処理されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-participantrecovered.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-participantrecovered.md new file mode 100644 index 00000000000..9f5ad12de71 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-participantrecovered.md @@ -0,0 +1,28 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.ParticipantRecovered | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: be6f1ede-2b05-437d-8f86-165dc9968a35 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.ParticipantRecovered +参加要素の登録リストが、トランザクション マネージャー ログから回復されました。 + +## 説明 + 指定した下位参加要素の登録リストがローカル トランザクション マネージャーによって正常に回復されたときにトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-participantstatemachinefinished.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-participantstatemachinefinished.md new file mode 100644 index 00000000000..af299240dd2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-participantstatemachinefinished.md @@ -0,0 +1,28 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.ParticipantStateMachineFinished | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 54b677f7-03ad-40f2-9c5d-297a8ad9bf90 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.ParticipantStateMachineFinished +参加要素の登録リストのステート マシンは完了状態になりました。 + +## 説明 + 下位参加要素登録リストの 2PC 処理が完了したときにトレースされます。登録リストの結果は、Committed または Aborted のいずれかです。準備中、すべての参加要素を読み取り専用にする場合にもトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-preparedmessageretry.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-preparedmessageretry.md new file mode 100644 index 00000000000..de78f226964 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-preparedmessageretry.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.PreparedMessageRetry | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2194292d-bf5f-4aef-9336-cd3c4795cb71 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.PreparedMessageRetry +準備メッセージの再試行は、応答しないコーディネーターに送信されました。 + +## 説明 + ローカル トランザクション マネージャーが一定時間内に応答を受信せず、上位のコーディネーターに準備メッセージを再送信する必要があった場合にトレースされます。 + +## トラブルシューティング + 応答が時間どおりに配信されない原因となっている可能性のあるネットワークや製品の問題について調査します。このメッセージが多数表示される場合は、インフラストラクチャに問題があるか、または応答時間が異常に長くなっている可能性があります。いずれの問題によっても、システム内のトランザクションのスループットが大幅に低下します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-preparemessageretry.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-preparemessageretry.md new file mode 100644 index 00000000000..6d14bebfa0a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-preparemessageretry.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.PrepareMessageRetry | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ada4baa5-b60d-46b8-ad46-4d69f8d8a9fa +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.PrepareMessageRetry +応答しない参加要素に、準備メッセージの再試行が送信されました。 + +## 説明 + ローカル トランザクション マネージャーが一定時間内に応答を受信せず、下位の参加要素に準備メッセージを再送信する必要があった場合にトレースされます。 + +## トラブルシューティング + 応答が時間どおりに配信されない原因となっている可能性のあるネットワークや製品の問題について調査します。このメッセージが多数表示される場合、インフラストラクチャに問題があるか、または応答時間が異常にかかっていることを示します。いずれの問題によっても、システム内のトランザクションのスループットが大幅に低下する場合があります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-protocolinitialized.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-protocolinitialized.md new file mode 100644 index 00000000000..ae50df599c2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-protocolinitialized.md @@ -0,0 +1,28 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.ProtocolInitialized | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 166dfa2d-10de-447a-b76f-3b64752a2967 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.ProtocolInitialized +WS\-AtomicTransaction プロトコル サービスが初期化されました。 + +## 説明 + 正常に初期化されたプロトコルを示すために、トランザクション マネージャーの起動時にトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-protocolstarted.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-protocolstarted.md new file mode 100644 index 00000000000..8b7ba22c304 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-protocolstarted.md @@ -0,0 +1,28 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.ProtocolStarted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ac770da2-218e-4708-aeb5-465369c94a8d +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.ProtocolStarted +WS\-AtomicTransaction プロトコル サービスが開始されました。 + +## 説明 + 正常に開始されたプロトコルを示すために、トランザクション マネージャーの起動時にトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-recoveredcoordinatorinvalidmetadata.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-recoveredcoordinatorinvalidmetadata.md new file mode 100644 index 00000000000..2ece96ace17 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-recoveredcoordinatorinvalidmetadata.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.RecoveredCoordinatorInvalidMetadata | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 99ebe70b-8980-447f-b785-ecfcbdbaea72 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.RecoveredCoordinatorInvalidMetadata +コーディネーターの回復ログ エントリで見つかったエンドポイント参照は、無効または互換性のないメタデータを含んでいます。 + +## 説明 + システムは、復元されたコーディネーター登録リスト用のプロキシを作成できません。 + +## トラブルシューティング + 問題が再発する場合は、マイクロソフトに連絡してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-recoveredparticipantinvalidmetadata.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-recoveredparticipantinvalidmetadata.md new file mode 100644 index 00000000000..ab6e15fe184 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-recoveredparticipantinvalidmetadata.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.RecoveredParticipantInvalidMetadata | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5d38eb27-bb00-4d7e-a234-50de8d90a0f9 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.RecoveredParticipantInvalidMetadata +参加要素の回復ログ エントリで見つかったエンドポイント参照は、無効であるか、互換性のないメタデータを含んでいます。 + +## 説明 + システムは回復された参加要素登録リストのプロキシを作成できません。 + +## トラブルシューティング + 問題が再発する場合は、マイクロソフトに連絡してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registercoordinator.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registercoordinator.md new file mode 100644 index 00000000000..74cdc886258 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registercoordinator.md @@ -0,0 +1,28 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.RegisterCoordinator | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ebd69e9a-7a89-4a42-8f68-e756f8807a1a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.RegisterCoordinator +WS\-AtomicTransaction プロトコル サービスは、制御プロトコルのコーディネーターと共に正常に登録されました。 + +## 説明 + ローカル トランザクション マネージャーがその上位のトランザクション マネージャーに正常に登録されたときにトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registerparticipant.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registerparticipant.md new file mode 100644 index 00000000000..1ce888d1f28 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registerparticipant.md @@ -0,0 +1,28 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.RegisterParticipant | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8888fd0a-d454-4123-88de-fa3290102306 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.RegisterParticipant +WS\-AtomicTransaction プロトコル サービスは、制御プロトコルの参加要素の登録に成功しました。 + +## 説明 + ローカル トランザクション マネージャーが、2pc プロトコルの参加要素からの Register 要求を正常に受信確認したときにトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registerparticipantfailure.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registerparticipantfailure.md new file mode 100644 index 00000000000..6666cb42ee0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registerparticipantfailure.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.RegisterParticipantFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3a4ead79-8550-4037-84e3-fd70ff56e001 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.RegisterParticipantFailure +WS\-AT プロトコル サービスは、制御プロトコルの参加要素の登録に失敗しました。 + +## 説明 + MSDTC により無効な登録要求が検出された場合にトレースされます。これは、複数の完了登録要求や内部エラーによって発生することがあります。 + +## トラブルシューティング + 完了を複数回登録しないでください。また、トレース メッセージ内のステータス文字列を調べて、アクション可能な項目が存在するかどうかを確認します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorfailed.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorfailed.md new file mode 100644 index 00000000000..56d0ff112a9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorfailed.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 96474056-0418-41e4-8c75-bbc0a853eaba +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorFailed +WS\-AT プロトコル サービスは、Register メッセージをコーディネーターに送信できませんでした。 + +## 説明 + メッセージを送信できないために、ローカルの TransactionManager がその上位の TransactionManager に登録できない場合にトレースされます。 + +## トラブルシューティング + トレース メッセージを調べて、メッセージの送信エラーの原因となった例外を確認してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorfaulted.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorfaulted.md new file mode 100644 index 00000000000..68039fa85a9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorfaulted.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorFaulted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8193027e-9db2-4af9-a072-27300cd24330 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorFaulted +WS\-AT プロトコル サービスは、Register メッセージへの応答として、コーディネーターからエラーを受信しました。 + +## 説明 + エラーが返されたためにローカルの TransactionManager がその上位の TransactionManager に登録できない場合に、トレースされます。 + +## トラブルシューティング + トレース メッセージを調べて、返されたエラーを確認してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorresponseinvalidmetadata.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorresponseinvalidmetadata.md new file mode 100644 index 00000000000..765d561c896 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorresponseinvalidmetadata.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.MessageCountLimitExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d80e2009-d421-40bb-8e68-eb5ca4a0e91a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Diagnostics.MessageCountLimitExceeded +System.ServiceModel.Diagnostics.MessageCountLimitExceeded + +## 説明 + ログに記録するメッセージの制限に達しました。 メッセージ ログは停止します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-replaymessageretry.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-replaymessageretry.md new file mode 100644 index 00000000000..177722e6287 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-replaymessageretry.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.ReplayMessageRetry | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e5b820ae-504d-405a-926a-9effa41d2369 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.ReplayMessageRetry +リプレイ メッセージの再試行は、応答しないコーディネーターに送信されました。 + +## 説明 + ローカル トランザクション マネージャーが一定時間内に応答を受信せず、上位のコーディネーターにリプレイ メッセージを再送信する必要があった場合にトレースされます。 + +## トラブルシューティング + 応答が時間どおりに配信されない原因となっている可能性のあるネットワークや製品の問題について調査します。 このメッセージが多数表示される場合、インフラストラクチャに問題があるか、または応答時間が異常にかかっていることを示します。 いずれの問題によっても、システム内のトランザクションのスループットが大幅に低下します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-volatileoutcometimeout.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-volatileoutcometimeout.md new file mode 100644 index 00000000000..3884f235525 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-volatileoutcometimeout.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.VolatileOutcomeTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2dbe34c5-57c7-4b64-9257-63021911d03c +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.VolatileOutcomeTimeout +不安定な参加要素からの結果メッセージに対する応答を受信するのを待機しているときに WS\-AT プロトコル サービスがタイムアウトしました。受信者が応答した場合、トランザクションの結果が不明である場合があります。 + +## 説明 + 不安定な参加要素がコミットまたは中止を決定したが、一定時間内にコミット要求またはロールバック要求に応答していない場合にトレースされます。 + +## トラブルシューティング + 不安定な参加要素がすべて一定時間内に応答できることを確認します。既定の時間は 180 秒です。この時間が不十分な場合は、WS\-AT の `VolatileOutcomeDelay` タイマー ポリシーを増やします。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-volatileparticipantindoubt.md b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-volatileparticipantindoubt.md new file mode 100644 index 00000000000..d6375c979b4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-volatileparticipantindoubt.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.VolatileParticipantInDoubt | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3e8fc825-9f22-47e7-9c16-d64ef291c932 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.VolatileParticipantInDoubt +WS\-AT プロトコル サービスは、認識されない不安定な参加要素からの準備メッセージまたはリプレイ メッセージを受信しました。参加要素にエラーが返されました。この結果、トランザクションの結果が不明であると宣言します。 + +## 説明 + ローカル トランザクション マネージャーが、既に認識していない揮発性参加リストからの準備メッセージまたはリプレイ メッセージを受信するとトレースされます。 + +## トラブルシューティング + 不安定な参加要素からメッセージが遅れて届く原因を調査してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/msmq.md b/docs/framework/wcf/diagnostics/tracing/msmq.md new file mode 100644 index 00000000000..036a8f7be0c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/msmq.md @@ -0,0 +1,26 @@ +--- +title: "MSMQ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d9fca29f-fa44-4ec4-bb48-b10800694500 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# MSMQ +MSMQ アプリケーションでは、キューに置かれたチャネルから MSMQに、および MSMQ からキューに置かれたチャネルに追加アクティビティは転送されません。 + + さらに、MSMQ メッセージ ID と SOAP メッセージ ID \(および、存在する場合はアクティビティ ID\) は、キューに置かれたチャネルのトレースの一部として送信操作を追跡されます。 + + MSMQ メッセージ ID と SOAP メッセージ ID \(および、存在する場合はアクティビティ ID\) は、キューに置かれたチャネルのトレースの一部として受信操作を追跡されます。 + + 受信操作で必要な転送については、他のトランスポートと同様に実行されます \(受信バイト\-\>プロセス メッセージ\-\> 操作\)。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/mts-registrationcoordinatorresponseinvalidmetadata.md b/docs/framework/wcf/diagnostics/tracing/mts-registrationcoordinatorresponseinvalidmetadata.md new file mode 100644 index 00000000000..2032b5346bf --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/mts-registrationcoordinatorresponseinvalidmetadata.md @@ -0,0 +1,28 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorResponseInvalidMetadata | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a174bbf5-0ffe-4fda-969d-e7fbd1996123 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorResponseInvalidMetadata +WS\-AtomicTransaction プロトコル サービスは、無効または互換性のないメタデータのあるエンドポイント参照を含むそのコーディネーターから、RegisterResponse メッセージを受信しました。 + +## 説明 + ローカルのトランザクション マネージャーが、その上位のトランザクション マネージャーに登録を試み、上位のトランザクション マネージャーが、RegisterResponse メッセージ内の無効なアドレスを返すときにトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/mtt-durableparticipantreplaywhilepreparing.md b/docs/framework/wcf/diagnostics/tracing/mtt-durableparticipantreplaywhilepreparing.md new file mode 100644 index 00000000000..f8e8c9bb366 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/mtt-durableparticipantreplaywhilepreparing.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.DurableParticipantReplayWhilePreparing | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 10ef3876-6f8e-4d4e-8444-f47847b64795 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.DurableParticipantReplayWhilePreparing +WS\-AT プロトコル サービスは、準備メッセージに応答していない永続的な参加要素から、リプレイ メッセージを受信しました。そのため、トランザクションが中止されました。 + +## 説明 + 永続的な参加要素がまだ準備している間にリプレイ メッセージが受信された場合は、トレースされます。これは、この状態に対して無効なメッセージであり、トランザクションは中止されます。 + +## トラブルシューティング + このエラー メッセージは、永続的な参加要素 \(下位トランザクション マネージャーを含む\) がエラーから回復したが、トランザクション結果が不明であるため、状態を要求していることを示している場合があります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/propagation.md b/docs/framework/wcf/diagnostics/tracing/propagation.md new file mode 100644 index 00000000000..d81880083bf --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/propagation.md @@ -0,0 +1,92 @@ +--- +title: "伝達 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f8181e75-d693-48d1-b333-a776ad3b382a +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 伝達 +このトピックでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] トレース モデルのアクティビティ伝達について説明します。 + +## 伝達を使用したエンドポイント間でのアクティビティの関連付け + 伝達を使用することで、複数のアプリケーション エンドポイントについて、同じ処理単位 \(要求など\) のエラー トレースを直接関連付けることができます。 さまざまなエンドポイントで発生した同じ処理単位のエラーは、アプリケーション ドメインが異なる場合でも同じアクティビティとしてグループ化されます。 これは、メッセージ ヘッダーで特定のアクティビティ ID を伝達することによって実現されます。 したがって、サーバーの内部エラーによってクライアントがタイムアウトした場合、これらのエラーは直接関係しているので、どちらも同じアクティビティに表示されます。 + + これを行うには、前述の例に示すように `ActivityTracing` 設定を使用します。 さらに、すべてのエンドポイントで `System.ServiceModel` トレース ソースの `propagateActivity` 属性を設定します。 + +``` + +``` + + アクティビティの伝達は構成可能な機能です。この機能を構成すると、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は TLS のアクティビティ ID が含まれたヘッダーを送信メッセージに追加します。 サーバー側の以降のトレースでこの ID を含めることにより、クライアントとサーバーのアクティビティを相互に関連付けることができます。 + +## 伝達の定義 + 次のすべての条件に該当する場合に、アクティビティ M の gAId がアクティビティ N に伝達されます。 + +- M に起因して N が作成された。 + +- M の gAId を N が認識している。 + +- N の gAId と M の gAId が同じである。 + + 次の XML スキーマに示すように、gAId は ActivityId メッセージ ヘッダーによって伝達されます。 + +``` + + +``` + + メッセージ ヘッダーの例を次に示します。 + +``` + +     +      http://Microsoft.ServiceModel.Samples/ICalculator/Subtract +      +      urn:uuid:f0091eae-d339-4c7e-9408-ece34602f1ce +      +      +        17f59a29-b435-4a15-bf7b-642ffc40eac8 +      +      +          http://www.w3.org/2005/08/addressing/anonymous +          +      +      net.tcp://localhost/servicemodelsamples/service +    +    +     +       145 +       76.54 +     +    + +``` + +## 伝達とアクティビティ境界 + エンドポイント間でアクティビティ ID が伝達されると、メッセージの受信側は、その \(伝達された\) アクティビティ ID を使用して Start トレースと Stop トレースを出力します。 したがって、各トレース ソースごとに、該当の gAId を持つ Start\/Stop トレースが存在することになります。 複数のエンドポイントが同じプロセス内に存在し、同じトレース ソース名を使用している場合、同じ lAId \(同じ gAId、同じトレース ソース、同じプロセス\) を持つ複数の Start と Stop が作成されます。 + +## 同期 + 異なるコンピューター上で実行されるエンドポイント間でイベントを同期するには、メッセージ内で伝達される ActivityId ヘッダーに CorrelationId を追加します。 ツールはこの ID を使用することにより、クロックにずれのあるコンピューター間でもイベントを同期できます。 具体的に言うと、サービス トレース ビューアー ツールは、エンドポイント間のメッセージ フローを示す際に、この ID を使用します。 + +## 参照 + [トレースの構成](../../../../../docs/framework/wcf/diagnostics/tracing/configuring-tracing.md) + [サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md) + [エンドツーエンドのトレースのシナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md) + [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/recommended-settings-for-tracing-and-message-logging.md b/docs/framework/wcf/diagnostics/tracing/recommended-settings-for-tracing-and-message-logging.md new file mode 100644 index 00000000000..f2432f9cebf --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/recommended-settings-for-tracing-and-message-logging.md @@ -0,0 +1,123 @@ +--- +title: "トレースとメッセージ ログの推奨設定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c6aca6e8-704e-4779-a9ef-50c46850249e +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# トレースとメッセージ ログの推奨設定 +このトピックでは、さまざまな動作環境における、推奨されるトレースとメッセージ ログの設定について説明します。 + +## 本運用環境での推奨される設定 + 本運用環境で WCF トレース ソースを使用する場合は、`switchValue` を Warning に設定します。 WCF `System.ServiceModel` トレース ソースを使用する場合は、`switchValue` 属性を `Warning` に設定し、`propagateActivity` 属性を `true` に設定します。 ユーザー定義のトレース ソースを使用する場合は、`switchValue` 属性を `Warning, ActivityTracing` に設定します。 これは、[構成エディター ツール \(SvcConfigEditor.exe\)](../../../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md) を使用して手動で実行できます。 前述のすべての場合において、パフォーマンスに影響しないと思われる場合は、`switchValue` 属性を `Information` に設定できます。これにより、相当な量のトレース データが生成されます。 次の例に、これらの推奨設定を示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 展開またはデバッグでの推奨される設定 + 展開またはデバッグ環境では、`Information` または `Verbose` を選択すると共に、ユーザー定義のトレース ソースまたは `System.ServiceModel` トレース ソースの場合は `ActivityTracing` を選択します。 また、デバッグ機能を向上させるには、トレース ソース \(`System.ServiceModel.MessageLogging`\) を構成に追加してメッセージ ログを有効にする必要があります。 `switchValue` 属性はこのトレース ソースに影響しません。 + + 次の例に、`XmlWriterTraceListener` を利用した共有リスナーを使用する推奨設定を示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## WMI を使用した設定変更 + WMI を使用して実行時に構成設定を変更できます \(前述の構成例のように構成の `wmiProviderEnabled` 属性を有効にします\)。 たとえば、CIM Studio 内で WMI を使用し、実行時にトレース ソース レベルを Warning から Information に変更できます。 この方法でライブ デバッグを実行した場合のパフォーマンスへの負荷は非常に高くなる可能性があるので注意が必要です。 WMI の使用方法の詳細については、「[診断用の WMI \(Windows Management Instrumentation\) の使用](../../../../../docs/framework/wcf/diagnostics/wmi/index.md)」を参照してください。 + +## ASP.NET トレースでの相関イベントの有効化 + ASP.NET イベントでは、ASP.NET イベントのトレースが有効になっていないと、相関 ID \(ActivityID\) が設定されません。 相関イベントを適切に表示するには、**\[スタート\]** ボタンをクリックし、**\[ファイル名を指定して実行\]** をクリックして「**cmd**」と入力することで、起動するコマンド コンソールで次のコマンドを使用して、ASP.NET イベントのトレースを有効にします。 + +``` +logman start mytrace -pf logman.providers -o test.etl –ets +``` + + ASP.NET イベントのトレースを無効にするには、次のコマンドを使用します。 + +``` +logman stop mytrace -ets +``` + +## 参照 + [診断用の WMI \(Windows Management Instrumentation\) の使用](../../../../../docs/framework/wcf/diagnostics/wmi/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/security-concerns-and-useful-tips-for-tracing.md b/docs/framework/wcf/diagnostics/tracing/security-concerns-and-useful-tips-for-tracing.md new file mode 100644 index 00000000000..77d1647ef0e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/security-concerns-and-useful-tips-for-tracing.md @@ -0,0 +1,101 @@ +--- +title: "トレースに関するセキュリティの考慮事項と役立つヒント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 88bc2880-ecb9-47cd-9816-39016a07076f +caps.latest.revision: 11 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 11 +--- +# トレースに関するセキュリティの考慮事項と役立つヒント +ここでは、機密情報を漏洩の危険から守る方法と共に、WebHost を使用する場合の便利なヒントについて説明します。 + +## WebHost でのカスタム トレース リスナーの使用 + 独自のリスナーを作成している場合、WebHost サービスではトレースが失われる可能性があることを認識する必要があります。WebHost をリサイクルすると、実行中のプロセスがシャットダウンされ、複製されたプロセスに引き継がれます。この 2 つのプロセスは、しばらくの間、引き続き同じリソースにアクセスできる必要がありますが、これはリスナーの種類に依存します。この場合、`XmlWriterTraceListener` は、2 番目のプロセスに対して新しいトレース ファイルを作成します。一方、Windows のイベント トレースは、同じセッションの複数のプロセスを管理して、同じファイルへのアクセス権を付与します。したがって、独自に作成したリスナーが同様の機能を提供しない場合、この 2 つのプロセスによってファイルがロックされたときにトレースが失われる可能性があります。 + + カスタム トレース リスナーがネットワーク上で \(たとえば、リモート データベースに\) トレースとメッセージを送信する場合があることを認識する必要もあります。アプリケーションを展開するユーザーは、適切なアクセス制御を提供するカスタム リスナーを構成する必要があります。また、遠隔地で公開される可能性があるすべての個人情報にセキュリティ制御を適用する必要もあります。 + +## 機密情報のログ記録 + スコープ内のメッセージに含まれるメッセージ ヘッダーをトレースします。トレースが有効になっていると、アプリケーション固有のヘッダー内にある個人情報 \(クエリ文字列など\)、および本文情報 \(クレジット カード番号など\) をログで確認できるようになります。アプリケーションを展開するユーザーは、構成ファイルとトレース ファイルに対するアクセス制御を実施する必要があります。この種の情報を表示しないようにするには、トレースを無効にします。トレース ログを共有する場合は、表示しないデータをフィルターで除外します。 + + トレース ファイルの内容が意図せず公開されることを防ぐために、次のヒントに従ってください。 + +- WebHost および自己ホストの両方のシナリオにおいて、ログ ファイルがアクセス制御リスト \(ACL\) によって保護されていることを確認します。 + +- Web 要求を使用して簡単に処理できないファイル拡張子を選択します。たとえば、.xml ファイルの拡張子を選ぶのは安全ではありません。IIS の管理ガイドを参照して、処理できる拡張子のリストを確認します。 + +- ログ ファイルのある場所への絶対パスを指定します。この場所は、部外者が Web ブラウザーを使用してアクセスできないように、WebHost の vroot パブリック ディレクトリの外にします。 + + 既定では、キーおよびユーザー名やパスワードなどの個人を特定できる情報 \(PII\) は、トレースおよびログに記録するメッセージではありません。しかし、コンピューターの管理者は、Machine.config ファイルの `machineSettings` 要素にある `enableLoggingKnownPII` 属性を使用して、コンピューター上で実行されているアプリケーションに対し、既知の PII \(個人を特定できる情報\) のログ記録を許可できます。次のコード例を参照してください。 + +``` + + + + + +``` + + アプリケーションを配置するユーザーが App.config ファイルか Web.config ファイルのいずれかで `logKnownPii` 属性を使用することで 、PII ログを可能にする方法を次に示します。 + +``` + + + + + + + + + +``` + + 両方の設定が `true` の場合にのみ、PII はログに記録されます。2 種類のスイッチを組み合わせることで、各アプリケーションで既知の PII のログを柔軟に記録できるようになります。 + + 構成ファイルで 2 種類以上のカスタム ソースを指定しても、最初のソースの属性のみが読み込まれることに注意してください。他の属性は無視されます。つまり、2 番目以降の App.config ファイルでは、PII はいずれのソースでもログに記録されなくなります。これは 2 番目のソースで PII のログ記録を明示的に有効にした場合でも同様です。 + +``` + + + + + + + + + + + + + + +``` + + `` の要素が Machine.config ファイルに含まれていない場合、システムは をスローします。 + + 変更点はアプリケーションが開始されるか、再起動されるまで、反映されません。両方の属性も `true` に設定されている場合は、イベントは開始時にログに記録されます。また、`logKnownPii` が `true` に設定され、`enableLoggingKnownPii` が `false` に設定されている場合にも、イベントはログに記録されます。 + + PII ログ記録の詳細については、「[PII セキュリティ ロックダウン](../../../../../docs/framework/wcf/samples/pii-security-lockdown.md)」のサンプルを参照してください。 + + コンピューターの管理者およびアプリケーションを配置するユーザーは、これらの 2 種類のスイッチを使用する場合に注意する必要があります。PII のログ記録が有効になっている場合は、セキュリティ キーと PII がログに記録されます。ログ記録を無効にしても、機密情報およびアプリケーション固有のデータは、依然としてメッセージのヘッダーと本体に記録されています。プライバシーと PII の公開を防止するための詳細な説明については、「[User Privacy](http://go.microsoft.com/fwlink/?LinkID=94647)」を参照してください。 + + また、接続が確立されるたび \(接続指向トランスポートの場合\)、またはメッセージが送信されるたび \(それ以外の場合\) に、メッセージ送信者の IP アドレスが記録されます。これは、送信者の同意を得ずに行われます。ただし、このログ記録は Information レベルまたは Verbose レベルだけで実行されます。これらのトレース レベルは既定ではありません。また、ライブ デバッグを行う場合を除き、運用環境ではお勧めしません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/significant-traces.md b/docs/framework/wcf/diagnostics/tracing/significant-traces.md new file mode 100644 index 00000000000..d40902f7f59 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/significant-traces.md @@ -0,0 +1,31 @@ +--- +title: "重要なトレース | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 40a1770e-3b09-4142-b0dd-f9ef73642074 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 重要なトレース +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] によって出力される主要なトレースの一部を示します。 + +## 重要なトレース + +|トレース|説明| +|----------|--------| +|Message Log トレース|このトレースは、`System.ServiceModel.MessageLogging` トレース ソースが有効な場合に、メッセージ ログ機能によって [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージがログに記録されるときに出力されます。このトレースをクリックすると、メッセージが表示されます。メッセージには、構成可能なログ ポイントが 4 つ \(`ServiceLevelSendRequest`、`TransportSend`、`TransportReceive`、`ServiceLevelReceiveRequest`\) あり、これらは、メッセージ ログ トレースの Message Source 属性にも示されます。| +|Message Received トレース|このトレースは、`System.ServiceModel` トレース ソースが Information レベルか Verbose レベルで有効な場合に、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージが受信されるときに出力されます。このトレースはアクティビティのグラフ ビューでメッセージの相関矢印を表示するために必要です。| +|Message Sent トレース|このトレースは、`System.ServiceModel` トレース ソースが Information レベルか Verbose レベルで有効な場合に、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージが送信されるときに出力されます。このトレースはアクティビティのグラフ ビューでメッセージの相関矢印を表示するために必要です。| +|Get ChannelEndpointElement|このトレースは、情報レベルで Construct チャネル ファクトリに出力されます。このトレースには、クライアントが対話しているエンドポイントの説明 \(リモート アドレス、バインディング、コントラクト名など\) が表示されます。| +|Get ServiceElement|このトレースは、情報レベルで Construct サービス ホストに出力されます。サービス コントラクトとバインディングの説明が提供されます。| +|SocketConnection Create|このトレースは、クライアントによって実行される最初の "プロセス" アクションおよびサービスの "バイトを受信" アクティビティで出力されます。ローカルとリモートの IP アドレスを提供します。情報レベルで出力されます。| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/ssc--comintegrationmexmonikermetadataexchangecomplete.md b/docs/framework/wcf/diagnostics/tracing/ssc--comintegrationmexmonikermetadataexchangecomplete.md new file mode 100644 index 00000000000..36fe9c6b01c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/ssc--comintegrationmexmonikermetadataexchangecomplete.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationMexMonikerMetadataExchangeComplete | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0fd35dff-e1ff-4902-a89b-093f0e34466f +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ComIntegration.ComIntegrationMexMonikerMetadataExchangeComplete +System.ServiceModel.ComIntegration.ComIntegrationMexMonikerMetadataExchangeComplete + +## 説明 + サービス モニカーは、メタデータの取得を完了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/ssc--comintegrationservicehostcreatedserviceendpoint.md b/docs/framework/wcf/diagnostics/tracing/ssc--comintegrationservicehostcreatedserviceendpoint.md new file mode 100644 index 00000000000..4f6a1310844 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/ssc--comintegrationservicehostcreatedserviceendpoint.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationServiceHostCreatedServiceEndpoint | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 79aa2eee-b65d-4ae3-971a-acb5db4547b9 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationServiceHostCreatedServiceEndpoint +System.ServiceModel.ComIntegration.ComIntegrationServiceHostCreatedServiceEndpoint + +## 説明 + ComPlus : 作成されたサービス エンドポイント。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/ssc-comintegration.md b/docs/framework/wcf/diagnostics/tracing/ssc-comintegration.md new file mode 100644 index 00000000000..eb40ca39100 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/ssc-comintegration.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartedServiceDetails | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d88b4823-08a4-4126-8304-d2c4c9d35b3e +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartedServiceDetails +System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartedServiceDetails + +## 説明 + ComPlus : サービスが開始しました : 詳細 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/ssc-comintegrationinvokingmethodcontexttransaction.md b/docs/framework/wcf/diagnostics/tracing/ssc-comintegrationinvokingmethodcontexttransaction.md new file mode 100644 index 00000000000..826c3157b37 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/ssc-comintegrationinvokingmethodcontexttransaction.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationInvokingMethodContextTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1d2690ae-0afb-4cb1-ab62-a1a0ceba8521 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationInvokingMethodContextTransaction +System.ServiceModel.ComIntegration.ComIntegrationInvokingMethodContextTransaction + +## 説明 + Complus : COM\+ コンテキストのトランザクションでメソッドを呼び出します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/ssc-comintegrationservicehostcreatedservicecontract.md b/docs/framework/wcf/diagnostics/tracing/ssc-comintegrationservicehostcreatedservicecontract.md new file mode 100644 index 00000000000..0c23fd67983 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/ssc-comintegrationservicehostcreatedservicecontract.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationServiceHostCreatedServiceContract | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5b670c80-a119-4114-8b1d-2b2034e5cb19 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationServiceHostCreatedServiceContract +System.ServiceModel.ComIntegration.ComIntegrationServiceHostCreatedServiceContract + +## 説明 + ComPlus : 作成されたサービス コントラクト。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/synchronous-scenarios-using-http-tcp-or-named-pipe.md b/docs/framework/wcf/diagnostics/tracing/synchronous-scenarios-using-http-tcp-or-named-pipe.md new file mode 100644 index 00000000000..d90db1f7d54 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/synchronous-scenarios-using-http-tcp-or-named-pipe.md @@ -0,0 +1,71 @@ +--- +title: "HTTP、TCP、または名前付きパイプを使用した同期シナリオ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7e90af1b-f8f6-41b9-a63a-8490ada502b1 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# HTTP、TCP、または名前付きパイプを使用した同期シナリオ +ここでは、シングル スレッド クライアントで HTTP、TCP、または名前付きパイプを使用したときの、さまざまな同期要求\/応答シナリオでのアクティビティと転送について説明します。マルチスレッド要求の詳細については、「[HTTP、TCP、または名前付きパイプを使用した非同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/asynchronous-scenarios-using-http-tcp-or-named-pipe.md)」を参照してしてください。 + +## エラーを伴わない同期要求\/応答 + ここでは、シングル スレッド クライアントを使用したときの、有効な同期要求\/応答シナリオでのアクティビティおよび転送について説明します。 + +### クライアント + +#### サービス エンドポイントとの通信の確立 + クライアントを構築して開きます。各手順では、アンビエント アクティビティ \(A\) が “クライアントの構築” アクティビティ \(B\) と “クライアントを開く” アクティビティ \(C\) にそれぞれ転送されます。転送されるアクティビティごとに、転送が返されるまで \(つまり、ServiceModel コードが実行されるまで\) アンビエント アクティビティは中断されます。 + +#### サービス エンドポイントへの要求 + アンビエント アクティビティが "アクションを処理" アクティビティ \(D\) に転送されます。このアクティビティでは、要求メッセージが送信され、応答メッセージが受信されます。このアクティビティは、ユーザー コードに制御が戻ると終了します。これは同期要求であるため、制御が戻るまでアンビエント アクティビティは中断されます。 + +#### サービス エンドポイントとの通信の終了 + クライアントの "閉じる" アクティビティ \(I\) が、アンビエント アクティビティから作成されます。これは、"新規" や "開く" と同じです。 + +### サーバー + +#### サービス ホストの設定 + ServiceHost の "新規" アクティビティ \(N\) および "開く" アクティビティ \(O\) は、アンビエント アクティビティ \(M\) から作成されます。 + + リスナー アクティビティ \(P\) は、各リスナーの ServiceHost を開くと作成されます。リスナー アクティビティは、待機してデータを受信および処理します。 + +#### ネットワーク上のデータの受信 + データがネットワークに到着すると、受信したデータを処理するために "バイトを受信" アクティビティ \(Q\) が作成されます \(まだ存在しない場合\)。このアクティビティは、接続またはキュー内の複数のメッセージに再使用できます。 + + SOAP アクション メッセージを作成するための十分なデータがある場合、"バイトを受信" アクティビティは "メッセージを処理" アクティビティ \(R\) を起動します。 + + アクティビティ R では、メッセージ ヘッダーが処理され、アクティビティ ID ヘッダーが確認されます。このヘッダーが存在する場合、アクティビティ ID は "アクションを処理" アクティビティに設定されます。それ以外の場合は、新しい ID が作成されます。 + + 呼び出しが処理されると、"アクションを処理" アクティビティ \(S\) が作成されて転送されます。このアクティビティは、受信メッセージに関連するすべての処理 \("ユーザー コードを実行" \(T\) と "応答メッセージを送信" \(該当する場合\) を含む\) が完了すると終了します。 + +#### サービス ホストの終了 + ServiceHost の "閉じる" アクティビティ \(Z\) は、アンビエント アクティビティから作成されます。 + + ![HTTP、TCP、および名前付きパイプを使用した同期シナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/media/sync.gif "Sync") + + \ の `A` は、前の説明および表 3 に含まれるアクティビティを表すショートカット シンボルです。`Name` は、アクティビティの短縮名です。 + + `propagateActivity`\=`true` の場合、クライアントとサービスの "アクションを処理" アクティビティはどちらも同じアクティビティ ID を持ちます。 + +## エラーを伴う同期要求\/応答 + 前述のシナリオとの違いは、応答メッセージとして SOAP エラー メッセージが返されることだけです。`propagateActivity`\=`true` の場合は、要求メッセージのアクティビティ ID が SOAP エラー メッセージに追加されます。 + +## エラーを伴わない同期一方向 + 最初のシナリオとの違いは、メッセージがサーバーに返されないことだけです。HTTP ベースのプロトコルの場合は、ステータス \(有効またはエラー\) がクライアントに返されます。それは、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] プロトコル スタックのなかで HTTP プロトコルだけが、要求\/応答セマンティクスを使用するからです。TCP 処理は [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] からは見えないため、受信確認はクライアントに送信されません。 + +## エラーを伴う同期一方向 + メッセージの処理中 \(Q 以降\) にエラーが発生しても、クライアントには通知が返されません。これは、「エラーを伴わない同期一方向要求\/応答」のシナリオと同じです。エラー メッセージを受信する必要がある場合は、一方向のシナリオを使用しないでください。 + +## 双方向 + 上述のシナリオとの違いは、クライアントがサービスとして動作することです。この場合、非同期のシナリオと同様、クライアントは "バイトを受信" アクティビティと "メッセージを処理" アクティビティを作成します。 \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-authorizationcontextcreated.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-authorizationcontextcreated.md new file mode 100644 index 00000000000..f439445e480 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-authorizationcontextcreated.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.AuthorizationContextCreated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 392b5964-fb51-4e7c-883a-62c929623706 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.IdentityModel.AuthorizationContextCreated +System.IdentityModel.AuthorizationContextCreated + +## 説明 + 指定した ID の承認コンテキストが作成されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-authorizationpolicyevaluated.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-authorizationpolicyevaluated.md new file mode 100644 index 00000000000..171881ee291 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-authorizationpolicyevaluated.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.AuthorizationPolicyEvaluated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 99a3b127-0513-48f0-9af4-83b1b40716b1 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.IdentityModel.AuthorizationPolicyEvaluated +System.IdentityModel.AuthorizationPolicyEvaluated + +## 説明 + 指定された ID を持つポリシーが評価されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-identitymodelasynccallbackthrewexception.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-identitymodelasynccallbackthrewexception.md new file mode 100644 index 00000000000..e10139c9402 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-identitymodelasynccallbackthrewexception.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.IdentityModelAsyncCallbackThrewException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e4fc924f-3b9e-44f5-97e4-b3a4bb855d89 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.IdentityModel.IdentityModelAsyncCallbackThrewException +System.IdentityModel.IdentityModelAsyncCallbackThrewException + +## 説明 + 非同期コールバックで例外がスローされました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-generalinformation.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-generalinformation.md new file mode 100644 index 00000000000..390a5955385 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-generalinformation.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.Selectors.GeneralInformation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 60eff0ce-cf24-49d0-bc62-66bc8f684322 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.IdentityModel.Selectors.GeneralInformation +System.IdentityModel.Selectors.GeneralInformation + +## 説明 + これは一般情報です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storebegintransaction.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storebegintransaction.md new file mode 100644 index 00000000000..fe9571a5804 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storebegintransaction.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.Selectors.StoreBeginTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 221df2e7-0931-4cbc-93b9-dfffd0fdf4c8 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.IdentityModel.Selectors.StoreBeginTransaction +System.IdentityModel.Selectors.StoreBeginTransaction + +## 説明 + 指定したストア トランザクションを開始しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storeclosing.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storeclosing.md new file mode 100644 index 00000000000..53f901d65c7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storeclosing.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.Selectors.StoreClosing | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cf3b99a2-df29-4737-bc1f-a1e9f7983bfa +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.IdentityModel.Selectors.StoreClosing +System.IdentityModel.Selectors.StoreClosing + +## 説明 + 指定したストアを終了しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storecommittransaction.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storecommittransaction.md new file mode 100644 index 00000000000..bf275d73eb3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storecommittransaction.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.Selectors.StoreCommitTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e9f2db66-5b7d-49e1-b198-0846551c6e8e +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.IdentityModel.Selectors.StoreCommitTransaction +System.IdentityModel.Selectors.StoreCommitTransaction + +## 説明 + 指定したストアのトランザクションをコミットしています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storedeleting.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storedeleting.md new file mode 100644 index 00000000000..9b811442cea --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storedeleting.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.Selectors.StoreDeleting | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c894b84d-aac9-46ca-b578-ff8e43a461de +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.IdentityModel.Selectors.StoreDeleting +System.IdentityModel.Selectors.StoreDeleting + +## 説明 + 指定したストアを削除しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storefailedtoopenstore.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storefailedtoopenstore.md new file mode 100644 index 00000000000..ab6662e7338 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storefailedtoopenstore.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.Selectors.StoreFailedToOpenStore | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f850b3e2-022b-4c75-aca3-1a8b14f9dc30 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.IdentityModel.Selectors.StoreFailedToOpenStore +System.IdentityModel.Selectors.StoreFailedToOpenStore + +## 説明 + ストアを開くことができません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storeloading.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storeloading.md new file mode 100644 index 00000000000..297118f44cc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storeloading.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.Selectors.StoreLoading | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a9287a5a-a36b-4659-8c87-13962b1c225c +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.IdentityModel.Selectors.StoreLoading +System.IdentityModel.Selectors.StoreLoading + +## 説明 + 指定したストアを初期化します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storerollbacktransaction.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storerollbacktransaction.md new file mode 100644 index 00000000000..741b48b1a79 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storerollbacktransaction.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.Selectors.StoreRollbackTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 09240dce-9e62-4f00-9f37-9dbe90a09af2 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.IdentityModel.Selectors.StoreRollbackTransaction +System.IdentityModel.Selectors.StoreRollbackTransaction + +## 説明 + トランザクションをロールバックしています。前のエラーを参照してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storesignaturenotvalid.md b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storesignaturenotvalid.md new file mode 100644 index 00000000000..4903e4c8761 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storesignaturenotvalid.md @@ -0,0 +1,28 @@ +--- +title: "System.IdentityModel.Selectors.StoreSignatureNotValid | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9087bf09-cb15-41ec-bd7a-6338789953d0 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.IdentityModel.Selectors.StoreSignatureNotValid +System.IdentityModel.Selectors.StoreSignatureNotValid + +## 説明 + ファイルの署名が無効です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-elementignored.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-elementignored.md new file mode 100644 index 00000000000..1af18432b3a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-elementignored.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.ElementIgnored | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 795fc64f-07af-4b88-9256-1b154d2b209d +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.ElementIgnored +System.Runtime.Serialization.ElementIgnored + +## 説明 + シリアル化解除中に、XML 内で認識できない要素が検出されましたが、この要素は無視されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-factorytypenotfound.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-factorytypenotfound.md new file mode 100644 index 00000000000..ad9e82c6425 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-factorytypenotfound.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.FactoryTypeNotFound | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e0ab341a-4000-4076-87cc-ffe332266658 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.Runtime.Serialization.FactoryTypeNotFound +System.Runtime.Serialization.FactoryTypeNotFound + +## 説明 + デシリアライザーが、逆シリアル化に使う型を判断できません。 XML のファクトリ型として指定された型を、たとえば KnownTypeAttribute 属性を使って既知の型のリストに追加することを検討してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-objectwithlargedepth.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-objectwithlargedepth.md new file mode 100644 index 00000000000..d74ff2ea35a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-objectwithlargedepth.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.ObjectWithLargeDepth | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5837891d-104b-4e9b-bfba-5434a9524b33 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.Runtime.Serialization.ObjectWithLargeDepth +System.Runtime.Serialization.ObjectWithLargeDepth + +## 説明 + 再帰構造でオブジェクトを記述する場合、階層が深いと制限が生じます。オブジェクトの深さを減らすことを検討してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-readobjectbegin.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-readobjectbegin.md new file mode 100644 index 00000000000..52352aa804a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-readobjectbegin.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.ReadObjectBegin | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1b08ba6d-f201-4ace-9dce-aaf539e323b3 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.ReadObjectBegin +System.Runtime.Serialization.ReadObjectBegin + +## 説明 + ReadObject の開始。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectbegin.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectbegin.md new file mode 100644 index 00000000000..3a18deb900e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectbegin.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.WriteObjectBegin | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1f4cb7f1-8bf2-4b6d-b693-43a83c74260a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.WriteObjectBegin +System.Runtime.Serialization.WriteObjectBegin + +## 説明 + WriteObject を開始します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectcontentbegin.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectcontentbegin.md new file mode 100644 index 00000000000..7018805e68a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectcontentbegin.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.WriteObjectContentBegin | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b89d8e09-f41b-44f5-8589-3aef97d6c437 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.WriteObjectContentBegin +System.Runtime.Serialization.WriteObjectContentBegin + +## 説明 + WriteObjectContent を開始します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectcontentend.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectcontentend.md new file mode 100644 index 00000000000..505a058a122 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectcontentend.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.WriteObjectContentEnd | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e57195fb-dd09-467c-93f9-4945f3086b0a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.WriteObjectContentEnd +System.Runtime.Serialization.WriteObjectContentEnd + +## 説明 + WriteObjectContent を終了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectend.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectend.md new file mode 100644 index 00000000000..d660b92b91f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectend.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.WriteObjectEnd | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 586d2b65-d8eb-4186-9400-40ae4e163161 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.WriteObjectEnd +System.Runtime.Serialization.WriteObjectEnd + +## 説明 + WriteObject を終了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportannotationfailed.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportannotationfailed.md new file mode 100644 index 00000000000..bc03d7b12b0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportannotationfailed.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.XsdExportAnnotationFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 93407f44-8c09-4c23-97a4-b3e5f409d3d5 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.XsdExportAnnotationFailed +System.Runtime.Serialization.XsdExportAnnotationFailed + +## 説明 + XSD のエクスポート時に注釈をエクスポートできませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportbegin.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportbegin.md new file mode 100644 index 00000000000..443c90565d7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportbegin.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.XsdExportBegin | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d7457aa5-c147-4643-bdb9-eaafa6674013 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.XsdExportBegin +System.Runtime.Serialization.XsdExportBegin + +## 説明 + スキーマのエクスポートを開始します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportdupitems.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportdupitems.md new file mode 100644 index 00000000000..94a2e18f958 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportdupitems.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.XsdExportDupItems | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 959861be-4f2d-4666-a2b9-200a9125fad7 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.Runtime.Serialization.XsdExportDupItems +System.Runtime.Serialization.XsdExportDupItems + +## 説明 + XSD のエクスポート時にスキーマを生成中、重複する項目が見つかりました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportend.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportend.md new file mode 100644 index 00000000000..0b875d0378c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportend.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.XsdExportEnd | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 406169f7-dc69-4e02-8a22-b38049dab995 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.XsdExportEnd +System.Runtime.Serialization.XsdExportEnd + +## 説明 + スキーマのエクスポートを終了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexporterror.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexporterror.md new file mode 100644 index 00000000000..c23bd0697c8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexporterror.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.XsdExportError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 393fa3d0-a4bb-4c00-947d-84c5e860c681 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.XsdExportError +System.Runtime.Serialization.XsdExportError + +## 説明 + スキーマのエクスポートでエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportannotationfailed.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportannotationfailed.md new file mode 100644 index 00000000000..ad237038f96 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportannotationfailed.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.XsdImportAnnotationFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f52ff1d8-7b0d-421c-bf08-a9fbd0e76968 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.XsdImportAnnotationFailed +System.Runtime.Serialization.XsdImportAnnotationFailed + +## 説明 + XSD のインポート中に、注釈のインポートに失敗しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportbegin.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportbegin.md new file mode 100644 index 00000000000..506ac0c508f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportbegin.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.XsdImportBegin | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c4b0c97d-2aab-42c3-a921-724a11e40fce +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.XsdImportBegin +System.Runtime.Serialization.XsdImportBegin + +## 説明 + スキーマのインポートを開始します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportend.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportend.md new file mode 100644 index 00000000000..6d2143dffe9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportend.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.XsdImportEnd | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f53f75ec-886c-4c87-845e-64339c779be6 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.XsdImportEnd +System.Runtime.Serialization.XsdImportEnd + +## 説明 + スキーマのインポートが終了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimporterror.md b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimporterror.md new file mode 100644 index 00000000000..464a0d8c251 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimporterror.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.XsdImportError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2639d138-74f5-4ef0-90dd-75feeed35363 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.XsdImportError +System.Runtime.Serialization.XsdImportError + +## 説明 + スキーマのインポートでエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueclosed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueclosed.md new file mode 100644 index 00000000000..df8f3c06321 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueclosed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.MessageQueueClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 92c40c72-4f0d-4d8a-bde0-1731aaaeaf89 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.MessageQueueClosed +System.ServiceModel.Activation.MessageQueueClosed + +## 説明 + メッセージ キューを閉じました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedpipe.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedpipe.md new file mode 100644 index 00000000000..1a47d56c88f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedpipe.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.MessageQueueDuplicatedPipe | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 97c4e6a3-6673-4eb7-a8b2-fc8c6d782ddf +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.MessageQueueDuplicatedPipe +System.ServiceModel.Activation.MessageQueueDuplicatedPipe + +## 説明 + 名前付きパイプのハンドルを複製しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedpipeerror.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedpipeerror.md new file mode 100644 index 00000000000..dfdcdff8626 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedpipeerror.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.MessageQueueDuplicatedPipeError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ebfe9af1-76f7-4416-abf9-1d777708e0f1 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.MessageQueueDuplicatedPipeError +System.ServiceModel.Activation.MessageQueueDuplicatedPipeError + +## 説明 + 名前付きパイプの複製中にエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedsocket.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedsocket.md new file mode 100644 index 00000000000..8a6a7f544d2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedsocket.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.MessageQueueDuplicatedSocket | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4d54c015-226e-40c6-8c54-1773b342a9b6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.MessageQueueDuplicatedSocket +System.ServiceModel.Activation.MessageQueueDuplicatedSocket + +## 説明 + ソケットのハンドルを複製しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedsocketerror.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedsocketerror.md new file mode 100644 index 00000000000..b107c23debe --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedsocketerror.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.MessageQueueDuplicatedSocketError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5d039e48-8188-4f43-a9bd-d6c58c075173 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.MessageQueueDuplicatedSocketError +System.ServiceModel.Activation.MessageQueueDuplicatedSocketError + +## 説明 + ソケットを複製しているときにエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregistercalled.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregistercalled.md new file mode 100644 index 00000000000..23522761bbb --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregistercalled.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.MessageQueueRegisterCalled | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 89e57e8e-39ae-4850-880c-f15629945584 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.MessageQueueRegisterCalled +System.ServiceModel.Activation.MessageQueueRegisterCalled + +## 説明 + 名前空間を登録する呼び出しが行われました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregisterfailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregisterfailed.md new file mode 100644 index 00000000000..150ef39ab23 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregisterfailed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.MessageQueueRegisterFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d985edf0-e648-439f-8f03-910eb386dad7 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Activation.MessageQueueRegisterFailed +System.ServiceModel.Activation.MessageQueueRegisterFailed + +## 説明 + 共有サービスへの登録に失敗しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregistersucceeded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregistersucceeded.md new file mode 100644 index 00000000000..9d21434783a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregistersucceeded.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.MessageQueueRegisterSucceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a75ea3ab-b0b8-4458-be9a-5e068a74af0f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.MessageQueueRegisterSucceeded +System.ServiceModel.Activation.MessageQueueRegisterSucceeded + +## 説明 + 名前空間を登録する呼び出しが成功しました。メッセージ キューを開きました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueunregistersucceeded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueunregistersucceeded.md new file mode 100644 index 00000000000..b9e04e094cd --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueunregistersucceeded.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.MessageQueueUnregisterSucceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c2e344a4-3b10-430b-bdf3-b065777861bb +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.MessageQueueUnregisterSucceeded +System.ServiceModel.Activation.MessageQueueUnregisterSucceeded + +## 説明 + メッセージ キューの登録解除が成功しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicecontinue.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicecontinue.md new file mode 100644 index 00000000000..80f224ef168 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicecontinue.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.ServiceContinue | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 37a43c8e-493d-4e35-a24f-ab0d4c6d5ce7 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.ServiceContinue +System.ServiceModel.Activation.ServiceContinue + +## 説明 + サービスを継続する要求を受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicepause.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicepause.md new file mode 100644 index 00000000000..0990b5de6cc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicepause.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.ServicePause | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3aeef78f-835e-4a72-b759-bf3e25dd8412 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.ServicePause +System.ServiceModel.Activation.ServicePause + +## 説明 + サービスを一時停止する要求を受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-serviceshutdown.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-serviceshutdown.md new file mode 100644 index 00000000000..e14ab77cf25 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-serviceshutdown.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.ServiceShutdown | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fc356855-f996-4c0d-9ff9-503103803d91 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.ServiceShutdown +System.ServiceModel.Activation.ServiceShutdown + +## 説明 + サービスをシャットダウンする要求を受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-serviceshutdownerror.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-serviceshutdownerror.md new file mode 100644 index 00000000000..eeeb972c6e6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-serviceshutdownerror.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.ServiceShutdownError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eca40443-7ab2-41f8-8421-0a5a92bc5076 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.ServiceShutdownError +System.ServiceModel.Activation.ServiceShutdownError + +## 説明 + NT サービスのシャットダウン中に予期しないエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestart.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestart.md new file mode 100644 index 00000000000..c3d984315df --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestart.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.ServiceStart | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 29203bbc-db8d-4bb9-a614-351579902ca6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.ServiceStart +System.ServiceModel.Activation.ServiceStart + +## 説明 + サービスを開始する要求を受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestartpipeerror.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestartpipeerror.md new file mode 100644 index 00000000000..c4d9d89db26 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestartpipeerror.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.ServiceStartPipeError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0d9e883d-181d-407f-ad79-c90035dcfc25 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.ServiceStartPipeError +System.ServiceModel.Activation.ServiceStartPipeError + +## 説明 + NT サービスを開始しているときにハンドル エラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestop.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestop.md new file mode 100644 index 00000000000..2f270878f58 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestop.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.ServiceStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f22be67e-0def-4f8e-ab31-6178cbdf98d4 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.ServiceStop +System.ServiceModel.Activation.ServiceStop + +## 説明 + サービスを停止する要求を受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostcompilation.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostcompilation.md new file mode 100644 index 00000000000..e51180fe37a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostcompilation.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.WebHostCompilation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 33ee56f8-30bb-445a-964d-050294c85ac6 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Activation.WebHostCompilation +System.ServiceModel.Activation.WebHostCompilation + +## 説明 + インターネット インフォメーション サービス \(IIS\) または Windows プロセス アクティブ化サービス \(WAS\) によってホストされるサービスが、.svc ファイル内にあるインライン コードからコンパイルされた場合に発生します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostdebugrequest.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostdebugrequest.md new file mode 100644 index 00000000000..87d2db6dc6c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostdebugrequest.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.WebHostDebugRequest | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 632d8084-f492-47bd-a40d-f9281c130149 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Activation.WebHostDebugRequest +System.ServiceModel.Activation.WebHostDebugRequest + +## 説明 + 要求は DEBUG 動詞用です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostprotocolmisconfigured.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostprotocolmisconfigured.md new file mode 100644 index 00000000000..41066f52f21 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostprotocolmisconfigured.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.Activation.WebHostProtocolMisconfigured | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cb5bdc6b-4281-452d-bc42-1181f2966e2a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Activation.WebHostProtocolMisconfigured +プロトコルが Windows プロセス アクティブ化サービス \(WAS\) で正しく構成されていません。 + +## 説明 + このエラーは、トランスポート プロトコルが正しく構成されていない場合に発生します。 + +## トラブルシューティング + web.config ファイルでトランスポート構成パラメーターを確認し、修正します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostserviceactivated.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostserviceactivated.md new file mode 100644 index 00000000000..c907fc041cd --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostserviceactivated.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Activation.WebHostServiceActivated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fc3e76d8-4057-474d-815f-1f73f9574588 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Activation.WebHostServiceActivated +System.ServiceModel.Activation.WebHostServiceActivated + +## 説明 + インターネット インフォメーション サービス \(IIS\) によりホストされるサービスまたは Windows プロセス アクティブ化サービス \(WAS\) が完全にアクティブになり、メッセージのリッスンを開始します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostserviceclosefailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostserviceclosefailed.md new file mode 100644 index 00000000000..fe2464edfaa --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostserviceclosefailed.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.Activation.WebHostServiceCloseFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3cab9856-a5cf-4f0e-a0cb-89425e368f8e +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Activation.WebHostServiceCloseFailed +サービスが正常に閉じられず、中止された場合に発生します。 + +## 説明 + このエラー コードはログ ファイルにのみ記録されます。通常は、Abort を既に呼び出した後でサービスを閉じようとした場合などの、プログラミング エラーを示します。 + +## トラブルシューティング + アプリケーションのソース コードをチェックしてください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-administration-wmiput.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-administration-wmiput.md new file mode 100644 index 00000000000..54661a06e6c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-administration-wmiput.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Administration.WmiPut | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 32c063c0-1bf2-4a40-9ea2-d9610d391bf9 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Administration.WmiPut +System.ServiceModel.Administration.WmiPut + +## 説明 + WMI を使用して値を設定します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-asynccallbackthrewexception.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-asynccallbackthrewexception.md new file mode 100644 index 00000000000..b5283e5a1e0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-asynccallbackthrewexception.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.AsyncCallbackThrewException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dfc27ca7-b904-4f29-a5b6-dc702fa54a20 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.AsyncCallbackThrewException +System.ServiceModel.AsyncCallbackThrewException + +## 説明 + 非同期コールバックで例外がスローされました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-beginexecutemethod.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-beginexecutemethod.md new file mode 100644 index 00000000000..0d1a1fd5e93 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-beginexecutemethod.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.BeginExecuteMethod | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2dd7d9ec-745e-4463-8494-7f534a598b74 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.BeginExecuteMethod +System.ServiceModel.BeginExecuteMethod + +## 説明 + 開始メソッドの実行。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-cannotbeimportedincurrentformat.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-cannotbeimportedincurrentformat.md new file mode 100644 index 00000000000..2148e7b246b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-cannotbeimportedincurrentformat.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CannotBeImportedInCurrentFormat | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 78b0a86a-42ff-4f01-81fe-1132f7bf90ad +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.CannotBeImportedInCurrentFormat +System.ServiceModel.CannotBeImportedInCurrentFormat + +## 説明 + 指定されたスキーマはこの形式ではインポートできません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-channelcreated.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-channelcreated.md new file mode 100644 index 00000000000..feb9326a637 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-channelcreated.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ChannelCreated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6406f162-a53d-487e-b281-3f232fce15f1 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.ChannelCreated +System.ServiceModel.Channels.ChannelCreated + +## 説明 + チャネルが作成されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-channeldisposed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-channeldisposed.md new file mode 100644 index 00000000000..25787e3782a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-channeldisposed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ChannelDisposed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 172198d5-d6c3-48d6-b8ed-8cc9b7ba0204 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.ChannelDisposed +System.ServiceModel.Channels.ChannelDisposed + +## 説明 + チャネルが破棄されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionabandoned.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionabandoned.md new file mode 100644 index 00000000000..86c29566c96 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionabandoned.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ConnectionAbandoned | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 35ef2322-4a83-473b-8bc0-0df78b9f8cc1 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.ConnectionAbandoned +System.ServiceModel.Channels.ConnectionAbandoned + +## 説明 + 接続は放棄されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolcloseexception.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolcloseexception.md new file mode 100644 index 00000000000..09e07a4f484 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolcloseexception.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ConnectionPoolCloseException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8358898e-129e-4fac-a6bf-bf3aa4293ae2 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.ConnectionPoolCloseException +この接続プールの接続を閉じている間に例外が発生しました。 + +## 説明 + このエラー レベルのトレースは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] が使用している接続プールのエラーにより、接続プールを閉じている間にエラーが発生したことを示しています。このエラーの原因としては、プールされた接続を閉じることに失敗した、またはプールされた接続で CloseTimeout が設定されていることが考えられます。この例外がスローされると、このプール内でまだ閉じられていない接続はすべて中断され、他のプールにある閉じられていない接続は破棄されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolidletimeoutreached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolidletimeoutreached.md new file mode 100644 index 00000000000..48c2b49f8c7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolidletimeoutreached.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ConnectionPoolIdleTimeoutReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0d86e212-c904-4bac-a686-256c66b278b7 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.ConnectionPoolIdleTimeoutReached +System.ServiceModel.Channels.ConnectionPoolIdleTimeoutReached + +## 説明 + 接続がこの接続プールのアイドル タイムアウトを超えたため、閉じられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolleasetimeoutreached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolleasetimeoutreached.md new file mode 100644 index 00000000000..b74cba50960 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolleasetimeoutreached.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ConnectionPoolLeaseTimeoutReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bba612da-25ab-4051-916a-c0fba1ae6189 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.ConnectionPoolLeaseTimeoutReached +System.ServiceModel.Channels.ConnectionPoolLeaseTimeoutReached + +## 説明 + 接続がこの接続プールの接続リース タイムアウトを超えたため、閉じられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolmaxoutboundconnectionsperendpointquotareached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolmaxoutboundconnectionsperendpointquotareached.md new file mode 100644 index 00000000000..71ba0e6e4d9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolmaxoutboundconnectionsperendpointquotareached.md @@ -0,0 +1,31 @@ +--- +title: "Microsoft.Transactions.TransactionBridge.EnlistTransactionFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1b9f5139-e122-4716-9ef7-2f38e1813993 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# Microsoft.Transactions.TransactionBridge.EnlistTransactionFailure +WS\-AT プロトコル サービスは、指定されたコーディネーション コンテキストを使用してトランザクションに参加することができませんでした。 + +## 説明 + 指定された 2PC プロトコルのトランザクションに MSDTC が参加できない場合にトレースされます。これは、トランザクションが存在しなくなった場合、参加が許可されなくなった場合、または既に参加が多すぎる場合に発生する可能性があります。 + +## トラブルシューティング + トレース メッセージ内のステータス文字列を調べて、アクション可能な項目が存在するかどうかを確認します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connecttoipendpoint.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connecttoipendpoint.md new file mode 100644 index 00000000000..449960ac58d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connecttoipendpoint.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ConnectToIPEndpoint | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e55f12ac-882e-4b46-9401-91e1263f68e4 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.ConnectToIPEndpoint +System.ServiceModel.Channels.ConnectToIPEndpoint + +## 説明 + 接続情報 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-endpointlistenerclose.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-endpointlistenerclose.md new file mode 100644 index 00000000000..d4650e98fb0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-endpointlistenerclose.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.EndpointListenerClose | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fe554dc7-8260-404a-935a-ab2131979b46 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.EndpointListenerClose +System.ServiceModel.Channels.EndpointListenerClose + +## 説明 + エンドポイントのリスナーが閉じました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-endpointlisteneropen.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-endpointlisteneropen.md new file mode 100644 index 00000000000..c8f3c4db44c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-endpointlisteneropen.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.EndpointListenerOpen | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c911fa53-e0ad-4313-aab5-e596f3567a50 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.EndpointListenerOpen +System.ServiceModel.Channels.EndpointListenerOpen + +## 説明 + エンドポイントのリスナーが開きました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-failedacceptfrompool.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-failedacceptfrompool.md new file mode 100644 index 00000000000..849cc26793e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-failedacceptfrompool.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.FailedAcceptFromPool | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d535b1b5-ee58-45e8-b400-7d9570f4eb9a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.FailedAcceptFromPool +プールされた接続を再使用できませんでした。 指定されたタイムアウト期間内に再試行します。 + +## 説明 + この情報トレースは、プールされた接続の再使用を試みている間にエラーが発生したことを示しています。 これは、プールされた接続に互換性がない、接続の準備ができていない、または接続がアクティブなままであるために発生します。 所定のタイムアウト期間内に、他のプールされた接続を再使用する試みがさらに行われ、使用可能な接続が見つからない場合には、新しい接続が作成されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-failedpipeconnect.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-failedpipeconnect.md new file mode 100644 index 00000000000..01a73ede795 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-failedpipeconnect.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.FailedPipeConnect | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9a827e0f-fb91-46bb-bd54-926d4b74d8a6 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.FailedPipeConnect +名前付きパイプ エンドポイントに接続しようとして失敗しました。指定されたタイムアウト期間内に再試行します。 + +## 説明 + この情報トレースは、名前付きパイプ エンドポイントへの接続に失敗したことを示します。これは、名前付きパイプ エンドポイントが見つからなかったか、ビジーであった場合に発生します。接続に成功するか、OpenTimeout の有効期間が切れるまで、短い間隔を置いて再試行が繰り返されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpauthfailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpauthfailed.md new file mode 100644 index 00000000000..c9ee3bfb012 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpauthfailed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.HttpAuthFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a3254ef2-cd3d-4a8a-ae3d-a51fc389af53 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.HttpAuthFailed +System.ServiceModel.Channels.HttpAuthFailed + +## 説明 + HTTP\(S\) 接続の認証に失敗しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelconcurrentreceivequotareached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelconcurrentreceivequotareached.md new file mode 100644 index 00000000000..073c616db7d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelconcurrentreceivequotareached.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.HttpChannelConcurrentReceiveQuotaReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: db6d8cdb-0d25-4bfb-8963-eff465733d70 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.HttpChannelConcurrentReceiveQuotaReached +System.ServiceModel.Channels.HttpChannelConcurrentReceiveQuotaReached + +## 説明 + HTTP の同時受信クォータに達しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelmessagereceivefailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelmessagereceivefailed.md new file mode 100644 index 00000000000..d7d8a30d2d0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelmessagereceivefailed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.HttpChannelMessageReceiveFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9eb311da-fdcc-4dd3-9d85-05b3280dfdda +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.HttpChannelMessageReceiveFailed +HTTP チャネルを介したメッセージの受信に失敗しました。 + +## 説明 + このトレースは、警告またはエラーとして出力されます。どちらの場合であっても、このトレースは、受信 HTTP 要求に対して互換性のあるリスナーが見つからない場合に出力され、HTTP 要求は破棄されます。これは、要求の HTTP 動詞が HTTP リスナーによって認識されない、または要求が対象としているアドレスでリッスンしているリスナーがないために発生します。このトレースは、自己ホスト型の場合は警告を出力し、サービスが IIS でホストされている場合はエラーを出力します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelrequestaborted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelrequestaborted.md new file mode 100644 index 00000000000..009cc5a4a55 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelrequestaborted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.HttpChannelRequestAborted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d47a2e78-f0ce-4125-893a-5f438016216c +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.HttpChannelRequestAborted +HTTP での要求メッセージの送信に失敗しました。 + +## 説明 + この警告レベルのトレースは、HTTP チャネルの要求が中止されたことを示しています。 このトレースの追加情報により、理由または Abort メソッドに渡されたメッセージがわかります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelresponseaborted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelresponseaborted.md new file mode 100644 index 00000000000..c7cc10d2389 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelresponseaborted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.HttpChannelResponseAborted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2fd1836e-4b62-400d-aa76-b3ab9f479015 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.HttpChannelResponseAborted +HTTP 経由で応答メッセージを送信できませんでした。 + +## 説明 + この警告レベルのトレースは、HTTP チャネルの応答が中止されたことを示しています。このトレースの追加情報により、理由、または Abort メソッドに渡されたメッセージがわかります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelunexpectedresponse.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelunexpectedresponse.md new file mode 100644 index 00000000000..ebd6aca7c46 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelunexpectedresponse.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.HttpChannelUnexpectedResponse | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eafa9450-4077-4c3a-94c4-52862d66eb6f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.HttpChannelUnexpectedResponse +System.ServiceModel.Channels.HttpChannelUnexpectedResponse + +## 説明 + 正しくない HTTP 応答を受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpresponsereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpresponsereceived.md new file mode 100644 index 00000000000..8bedea17424 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpresponsereceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.HttpResponseReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 23101c3b-c1c2-4544-bb2f-aceec3e4e724 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.HttpResponseReceived +System.ServiceModel.Channels.HttpResponseReceived + +## 説明 + HTTP 応答が受信されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpsclientcertificateinvalid.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpsclientcertificateinvalid.md new file mode 100644 index 00000000000..3319e6dcd66 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpsclientcertificateinvalid.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.HttpsClientCertificateInvalid | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8884dda1-fa0e-4d2a-8079-7042c51b64ef +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.HttpsClientCertificateInvalid +クライアント証明書が無効です。 + +## 説明 + このトレースは、HTTPS リスナーが、クライアントによって提供された証明書が無効であることを検出したことを示します。HTTPS リスナーは、この証明書を使用してクライアントの信頼性を検証しようとしていました。サービスをホストしているサーバーによって証明書の証明機関が認識されないと、証明書は無効になります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpsclientcertificatenotpresent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpsclientcertificatenotpresent.md new file mode 100644 index 00000000000..b26f4aeb878 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpsclientcertificatenotpresent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.HttpsClientCertificateNotPresent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b13ef1b6-e340-401d-93ca-2710c3842205 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.HttpsClientCertificateNotPresent +クライアント証明書が必要です。要求内で証明書が見つかりませんでした。 + +## 説明 + このトレースは、HTTPS リスナーがクライアント証明書に関連付けられていない HTTPS 要求を受信したことを示します。リスナーはすべての HTTPS 要求においてクライアント証明書を必要とするように構成されているため、リスナーによるクライアントの信頼性の検証は失敗します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-incompatibleexistingtransportmanager.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-incompatibleexistingtransportmanager.md new file mode 100644 index 00000000000..6db64ef9d17 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-incompatibleexistingtransportmanager.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.IncompatibleExistingTransportManager | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5366ec64-e8ef-4a34-a2f6-7251d89f1be9 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.IncompatibleExistingTransportManager +指定された URI に既存の互換性のないトランスポート マネージャーが見つかりました。 + +## 説明 + この情報トレースは、開いているリスナーと一致する登録があるのに、既存のトランスポート マネージャーに互換性がないことを示しています。リスナーは別のトランスポート マネージャーの使用を試み、これに失敗した場合には例外がスローされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-initiatingnamedpipeconnection.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-initiatingnamedpipeconnection.md new file mode 100644 index 00000000000..ad2afe782c9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-initiatingnamedpipeconnection.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.InitiatingNamedPipeConnection | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 23bd5f35-4a9c-4ccb-a153-f3f6f6594199 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.InitiatingNamedPipeConnection +System.ServiceModel.Channels.InitiatingNamedPipeConnection + +## 説明 + 名前付きパイプの接続を開始しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-initiatingtcpconnection.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-initiatingtcpconnection.md new file mode 100644 index 00000000000..30456624a45 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-initiatingtcpconnection.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.InitiatingTcpConnection | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d0a2749d-3f97-41b8-ac08-37b5069fe41e +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.InitiatingTcpConnection +System.ServiceModel.Channels.InitiatingTcpConnection + +## 説明 + TCP 接続を開始しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-listenercreated.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-listenercreated.md new file mode 100644 index 00000000000..33882fe19d8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-listenercreated.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ListenerCreated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d4a3401c-f7f8-4761-95c2-ca92b70a503d +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.ListenerCreated +System.ServiceModel.Channels.ListenerCreated + +## 説明 + リスナーが作成されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-listenerdisposed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-listenerdisposed.md new file mode 100644 index 00000000000..cd346eb1dbe --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-listenerdisposed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ListenerDisposed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 75ff3e7e-ad6a-4ac2-a094-4247f523c5f5 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.ListenerDisposed +System.ServiceModel.Channels.ListenerDisposed + +## 説明 + リスナーが破棄されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-maxacceptedchannelsreached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-maxacceptedchannelsreached.md new file mode 100644 index 00000000000..ee1a3453615 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-maxacceptedchannelsreached.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MaxAcceptedChannelsReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 13d15194-a04f-4a5a-9d85-23ad350fdc7e +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MaxAcceptedChannelsReached +System.ServiceModel.Channels.MaxAcceptedChannelsReached + +## 説明 + 受信セッション チャネルの最大数に達しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-maxpendingconnectionsreached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-maxpendingconnectionsreached.md new file mode 100644 index 00000000000..76ab5ed7b87 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-maxpendingconnectionsreached.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MaxPendingConnectionsReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6138b01d-199b-45db-b875-c1cca68e6894 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MaxPendingConnectionsReached +System.ServiceModel.Channels.MaxPendingConnectionsReached + +## 説明 + 保留状態の接続の最大数に達しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-messagereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-messagereceived.md new file mode 100644 index 00000000000..82b9ca62ca4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-messagereceived.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.Channels.MessageReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9e6942a4-051f-416c-9674-7e729b9edd33 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.MessageReceived +System.ServiceModel.Channels.MessageReceived + +## 説明 + チャネルを介してメッセージを受信しました。 + + このトレースは、`System.ServiceModel` トレース ソースが情報レベルまたは詳細レベルで有効な場合に、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージが受信されるときに出力されます。このトレースはアクティビティのグラフ ビューでメッセージの相関矢印を表示するために必要です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-messagesent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-messagesent.md new file mode 100644 index 00000000000..29e2b38cc1a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-messagesent.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.Channels.MessageSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 454cd09c-992f-4faf-9751-2de56e6401da +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.MessageSent +System.ServiceModel.Channels.MessageSent + +## 説明 + チャネルを介してメッセージを送信しました。 + + このトレースは `System.ServiceModel` トレース ソースが Information レベルか Verbose レベルで有効な場合に、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージが送信されるときに出力されます。このトレースはアクティビティのグラフ ビューでメッセージの相関矢印を表示するために必要です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqcannotpeekonqueue.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqcannotpeekonqueue.md new file mode 100644 index 00000000000..b71c8b5ab96 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqcannotpeekonqueue.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqCannotPeekOnQueue | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cb95e569-cc5e-4d70-81b5-7374d3a2f8be +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.MsmqCannotPeekOnQueue +System.ServiceModel.Channels.MsmqCannotPeekOnQueue + +## 説明 + MSMQ アクティべーション サービスはキューをピークできません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqcannotreadqueues.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqcannotreadqueues.md new file mode 100644 index 00000000000..1e553d49001 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqcannotreadqueues.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqCannotReadQueues | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f1cfee05-dce7-440b-b03e-96f81c00a222 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.MsmqCannotReadQueues +System.ServiceModel.Channels.MsmqCannotReadQueues + +## 説明 + MSMQ アクティベーション サービスはキューを検出できません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdatagramreceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdatagramreceived.md new file mode 100644 index 00000000000..c7aad53fab8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdatagramreceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqDatagramReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c924ab16-573a-4fd6-8059-071fc12f4b1b +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqDatagramReceived +System.ServiceModel.Channels.MsmqDatagramReceived + +## 説明 + MSMQ データグラム メッセージが受信されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdatagramsent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdatagramsent.md new file mode 100644 index 00000000000..fc9e6e9b4c2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdatagramsent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqDatagramSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eab449e8-e01b-4af8-bd8e-0f3a24689c82 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqDatagramSent +System.ServiceModel.Channels.MsmqDatagramSent + +## 説明 + MSMQ データグラム メッセージが送信されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdetected.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdetected.md new file mode 100644 index 00000000000..3b1226e4c3b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdetected.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqDetected | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ff20cef5-89d2-408e-a431-8c31a9d878d5 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqDetected +System.ServiceModel.Channels.MsmqDetected + +## 説明 + MSMQ が正常に検出されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqenteredbatch.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqenteredbatch.md new file mode 100644 index 00000000000..4329687a256 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqenteredbatch.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqEnteredBatch | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5b787c18-1962-4083-93d1-adb680295189 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqEnteredBatch +System.ServiceModel.Channels.MsmqEnteredBatch + +## 説明 + MSMQ がバッチ モードを開始しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqfoundbaseaddress.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqfoundbaseaddress.md new file mode 100644 index 00000000000..e1992554d8f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqfoundbaseaddress.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqFoundBaseAddress | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5431889d-c296-44f3-a54d-a356e9f1eb5e +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqFoundBaseAddress +System.ServiceModel.Channels.MsmqFoundBaseAddress + +## 説明 + ホスト環境によって、サービスのベース アドレスが検出されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqleftbatch.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqleftbatch.md new file mode 100644 index 00000000000..229330b9c66 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqleftbatch.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqLeftBatch | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 28b5a2f0-fbfc-477e-97d9-bea2c1bfbbbe +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqLeftBatch +System.ServiceModel.Channels.MsmqLeftBatch + +## 説明 + MSMQ はバッチ モードを終了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmatchedapplicationfound.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmatchedapplicationfound.md new file mode 100644 index 00000000000..32b2b003494 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmatchedapplicationfound.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqMatchedApplicationFound | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 41557327-504e-4394-a3e6-1f076a7c35e6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqMatchedApplicationFound +System.ServiceModel.Channels.MsmqMatchedApplicationFound + +## 説明 + MSMQ アクティベーション サービスによって、キューに一致するアプリケーションが検出されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagedropped.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagedropped.md new file mode 100644 index 00000000000..ccb179ea831 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagedropped.md @@ -0,0 +1,33 @@ +--- +title: "System.ServiceModel.Channels.MsmqMessageDropped | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8b6e644d-fa68-4be7-abe9-3659671a37c1 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.MsmqMessageDropped +MSMQ はメッセージを破棄しました。 + +## 説明 + このトレースは、MSMQ メッセージが破棄されたことを示します。[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] を NetMsmqBinding または MsmqIntegrationBinding と共に使用したときに、MSMQ メッセージを処理できない場合は、これらのメッセージが破棄されることがあります。このようなメッセージは、有害メッセージと呼ばれます。 + + 有害メッセージは、NetMsmqBinding または MsmqIntegrationBinding の `ReceiveErrorHandling` プロパティが `Drop` に設定されていると破棄されます。破棄されたメッセージはキューから削除され、元に戻すことはできません。 + + メッセージが有害となる場合の詳細、および有害メッセージをサービスで適切に処理する方法については、「[有害メッセージの処理](http://go.microsoft.com/fwlink/?LinkID=99546)」を参照してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) + [有害メッセージ処理](http://go.microsoft.com/fwlink/?LinkID=99546) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagelockedunderthetransaction.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagelockedunderthetransaction.md new file mode 100644 index 00000000000..a215eb2d811 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagelockedunderthetransaction.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqMessageLockedUnderTheTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5b236bdd-38e8-4c42-9ea5-ac7e5575ebf8 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqMessageLockedUnderTheTransaction +System.ServiceModel.Channels.MsmqMessageLockedUnderTheTransaction + +## 説明 + トランザクションでロックされているため、メッセージを移動することも削除することもできません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagerejected.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagerejected.md new file mode 100644 index 00000000000..95c2e8e031a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagerejected.md @@ -0,0 +1,36 @@ +--- +title: "System.ServiceModel.Channels.MsmqMessageRejected | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9b7c10a7-2af6-44a2-8b1a-90bba0c7cf26 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.MsmqMessageRejected +MSMQ はメッセージを拒否しました。 + +## 説明 + このトレースは、MSMQ メッセージが拒否されたことを示します。 + + MSMQ メッセージは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] が \(NetMsmqBinding または MsmqIntegrationBinding のいずれかを使用して\) メッセージを処理できない場合に拒否されることがあります。このようなメッセージは、有害メッセージと呼ばれます。有害メッセージは、NetMsmqBinding または MsmqIntegrationBinding の `ReceiveErrorHandling` プロパティが `Reject` に設定されると拒否されます。拒否されたメッセージは、送信側の「[配信不能キューを使用したメッセージ転送エラー処理](http://go.microsoft.com/fwlink/?LinkID=99544)」に戻されます。 + + メッセージが有害となる場合の詳細、および有害メッセージをサービスで適切に処理する方法については、「[有害メッセージの処理](http://go.microsoft.com/fwlink/?LinkID=99546)」を参照してください。 + + MSMQ でメッセージが拒否されることの意味の詳細については、「[MQMarkMessageRejected](http://go.microsoft.com/fwlink/?LinkID=99548)」を参照してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) + [有害メッセージ処理](http://go.microsoft.com/fwlink/?LinkID=99546) + [MQMarkMessageRejected](http://go.microsoft.com/fwlink/?LinkID=99548) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagemovedpoison.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagemovedpoison.md new file mode 100644 index 00000000000..323b892becc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagemovedpoison.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqPoisonMessageMovedPoison | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d5587606-f2f3-46f8-9e76-cb8ad83088bd +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqPoisonMessageMovedPoison +System.ServiceModel.Channels.MsmqPoisonMessageMovedPoison + +## 説明 + 有害メッセージが有害サブキューに移動しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagemovedretry.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagemovedretry.md new file mode 100644 index 00000000000..1f76992807a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagemovedretry.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqPoisonMessageMovedRetry | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5c6c0a55-f92d-442c-a61e-7841341a79df +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqPoisonMessageMovedRetry +System.ServiceModel.Channels.MsmqPoisonMessageMovedRetry + +## 説明 + 有害なメッセージは、再試行用のサブキューに移動されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagerejected.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagerejected.md new file mode 100644 index 00000000000..d57653ffad8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagerejected.md @@ -0,0 +1,32 @@ +--- +title: "System.ServiceModel.Channels.MsmqPoisonMessageRejected | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0e64b9bd-1f12-43df-a189-d7be3c2bace1 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.MsmqPoisonMessageRejected +有害メッセージは拒否されました。 + +## 説明 + このトレースは、有害メッセージが検出され、続いて拒否されたことを示します。これは、NetMsmqBinding または MsmqIntegrationBinding の `ReceiveErrorHandling` プロパティが `Reject` に設定されると発生します。拒否されたメッセージは、送信側の [配信不能キューを使用したメッセージ転送エラー処理](http://go.microsoft.com/fwlink/?LinkId=99544) に戻されます。 + + メッセージが有害となる場合の詳細、および有害メッセージをサービスで適切に処理する方法については、「[有害メッセージの処理](http://go.microsoft.com/fwlink/?LinkId=99546)」を参照してください。MSMQ でメッセージが拒否されることの意味の詳細については、「[MQMarkMessageRejected](http://go.microsoft.com/fwlink/?LinkId=99548)」を参照してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) + [有害メッセージ処理](http://go.microsoft.com/fwlink/?LinkId=99546) + [MQMarkMessageRejected](http://go.microsoft.com/fwlink/?LinkId=99548) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoolfull.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoolfull.md new file mode 100644 index 00000000000..3b3f9e0b318 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoolfull.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqPoolFull | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f1fb0cfe-cddd-4bed-aea5-c9fa60ccce76 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqPoolFull +System.ServiceModel.Channels.MsmqPoolFull + +## 説明 + ネイティブ MSMQ メッセージのプールがいっぱいです。 これはパフォーマンスに影響する可能性があります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpotentiallypoisonmessagedetected.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpotentiallypoisonmessagedetected.md new file mode 100644 index 00000000000..78f823d4e91 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpotentiallypoisonmessagedetected.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqPotentiallyPoisonMessageDetected | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a530df15-ebcd-45d6-bcdf-fc4483bcebec +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.MsmqPotentiallyPoisonMessageDetected +System.ServiceModel.Channels.MsmqPotentiallyPoisonMessageDetected + +## 説明 + 有害である可能性のあるメッセージが検出されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueueclosed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueueclosed.md new file mode 100644 index 00000000000..549ff2daf4e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueueclosed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqQueueClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 52fc5e66-a86a-4bc3-8d88-40ec9f408082 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqQueueClosed +System.ServiceModel.Channels.MsmqQueueClosed + +## 説明 + MSMQ キューが閉じられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueueopened.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueueopened.md new file mode 100644 index 00000000000..d8cbd865ee7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueueopened.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqQueueOpened | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 282e108a-73b0-499d-8b9e-e37d1198dda6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqQueueOpened +System.ServiceModel.Channels.MsmqQueueOpened + +## 説明 + MSMQ キューが開かれました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueuetransactionalstatusunknown.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueuetransactionalstatusunknown.md new file mode 100644 index 00000000000..2ca5bc4b99f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueuetransactionalstatusunknown.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqQueueTransactionalStatusUnknown | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 193a1a73-42b8-4a98-9a72-ec06ad6b3073 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqQueueTransactionalStatusUnknown +System.ServiceModel.Channels.MsmqQueueTransactionalStatusUnknown + +## 説明 + キューがトランザクション キューであるかどうかを検出できません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqscanstarted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqscanstarted.md new file mode 100644 index 00000000000..765c45f69ce --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqscanstarted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqScanStarted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 56046431-94fc-4b04-a0fb-4b3f3e31a26f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqScanStarted +System.ServiceModel.Channels.MsmqScanStarted + +## 説明 + MSMQ アクティベーション サービスによって、キューのスキャンが開始されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqsessiongramreceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqsessiongramreceived.md new file mode 100644 index 00000000000..61978ba573a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqsessiongramreceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqSessiongramReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 66cfc20b-3bf0-48f6-a715-d82d88f5e71e +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqSessiongramReceived +System.ServiceModel.Channels.MsmqSessiongramReceived + +## 説明 + MSMQ トランスポート セッションが受信されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqsessiongramsent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqsessiongramsent.md new file mode 100644 index 00000000000..5e1c95122bb --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqsessiongramsent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqSessiongramSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b6638cd0-2e72-4634-863d-2621e46ede50 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqSessiongramSent +System.ServiceModel.Channels.MsmqSessiongramSent + +## 説明 + MSMQ トランスポート セッションが送信されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqstartingapplication.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqstartingapplication.md new file mode 100644 index 00000000000..8da7a0493dc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqstartingapplication.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqStartingApplication | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 76e1af87-f5f2-4974-acfa-868b56cfa450 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqStartingApplication +System.ServiceModel.Channels.MsmqStartingApplication + +## 説明 + MSMQ アクティベーション サービスによってアプリケーションが起動されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqstartingservice.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqstartingservice.md new file mode 100644 index 00000000000..21040d8d38d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqstartingservice.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqStartingService | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7248afaf-5ad9-4d7a-ba07-781a60a0ef9b +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqStartingService +System.ServiceModel.Channels.MsmqStartingService + +## 説明 + ホスト環境はサービスを開始しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqunexpectedacknowledgment.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqunexpectedacknowledgment.md new file mode 100644 index 00000000000..f5ace5b97bc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqunexpectedacknowledgment.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.MsmqUnexpectedAcknowledgment | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bfe18481-c3ae-4305-a666-2ee63eac3dff +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.MsmqUnexpectedAcknowledgment +System.ServiceModel.Channels.MsmqUnexpectedAcknowledgment + +## 説明 + 予期しない受信確認値。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-namedpipechannelmessagereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-namedpipechannelmessagereceived.md new file mode 100644 index 00000000000..b5e653952f6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-namedpipechannelmessagereceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.NamedPipeChannelMessageReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 060b0623-3c0f-4e08-a0d1-2369c35d2c5c +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.NamedPipeChannelMessageReceived +System.ServiceModel.Channels.NamedPipeChannelMessageReceived + +## 説明 + 名前付きパイプ チャネルを介して、メッセージを受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-namedpipechannelmessagereceivefailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-namedpipechannelmessagereceivefailed.md new file mode 100644 index 00000000000..439ed0b23e1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-namedpipechannelmessagereceivefailed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.NamedPipeChannelMessageReceiveFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 20e65df6-4539-428d-bf61-92e05c405bef +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.NamedPipeChannelMessageReceiveFailed +System.ServiceModel.Channels.NamedPipeChannelMessageReceiveFailed + +## 説明 + 受信メッセージを受け取るためのチャネルが見つかりませんでした。エンドポイントまたは SOAP アクションが見つかりませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-noexistingtransportmanager.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-noexistingtransportmanager.md new file mode 100644 index 00000000000..af11aae4020 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-noexistingtransportmanager.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.NoExistingTransportManager | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cb4173c5-476b-40d9-aa5c-19d95e98a51d +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.NoExistingTransportManager +System.ServiceModel.Channels.NoExistingTransportManager + +## 説明 + 指定された URI の既存のトランスポート マネージャーは見つかりませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-openedlistener.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-openedlistener.md new file mode 100644 index 00000000000..d75ea3b2fb5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-openedlistener.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.OpenedListener | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 474830b3-b76c-4f3c-a363-20d9124fece5 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.OpenedListener +System.ServiceModel.Channels.OpenedListener + +## 説明 + トランスポートは、ベース URI でリッスンしています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerchannelmessagereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerchannelmessagereceived.md new file mode 100644 index 00000000000..6d89142543a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerchannelmessagereceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerChannelMessageReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b68cfbbf-27fa-49d4-a2a1-c9f6af4876f2 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerChannelMessageReceived +新しい PeerChannel メッセージが受信されました。 + +## 説明 + このトレースは、新しいメッセージの受信後に行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerchannelmessagesent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerchannelmessagesent.md new file mode 100644 index 00000000000..91ef657824a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerchannelmessagesent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerChannelMessageSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7aa50d9d-37ee-454c-8746-e3c3857edd07 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerChannelMessageSent +新しい PeerChannel メッセージを送信中です。 + +## 説明 + このトレースは、PeerChannel メッセージの送信中に行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagenotmatched.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagenotmatched.md new file mode 100644 index 00000000000..1cfb404480d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagenotmatched.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerFloodedMessageNotMatched | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 43f4eab6-0176-4ac3-9a47-f35419dea539 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.PeerFloodedMessageNotMatched +PeerNode は、どのローカル チャネルとも一致しないメッセージを受信しました。 + +## 説明 + このトレースは、大量の受信メッセージの処理中に行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagenotpropagated.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagenotpropagated.md new file mode 100644 index 00000000000..64782057d57 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagenotpropagated.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.Channels.PeerFloodedMessageNotPropagated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a99275b9-4975-4899-8e21-594ba552f981 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerFloodedMessageNotPropagated +メッセージは PeerNode によって受信されましたが、近隣ノードには伝達されませんでした。 + +## 説明 + このトレースは、受信した大量のメッセージの処理中に行われます。 + +## トラブルシューティング + メッセージ伝達フィルターが存在するかどうかを確認します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagereceived.md new file mode 100644 index 00000000000..96350ae3f77 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagereceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerFloodedMessageReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 778e4e15-2855-4a94-a703-8fa31acc935a +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerFloodedMessageReceived +PeerNode は大量に送られたメッセージを受信しました。 + +## 説明 + このトレースは、大量の受信メッセージの処理中に行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerflooderreceivemessagequotaexceeded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerflooderreceivemessagequotaexceeded.md new file mode 100644 index 00000000000..2d0e15a3ebf --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerflooderreceivemessagequotaexceeded.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.Channels.PeerFlooderReceiveMessageQuotaExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b8371d0a-843e-440b-b86a-6996db131cb0 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerFlooderReceiveMessageQuotaExceeded +メッセージの受信速度が速すぎます。 + +## 説明 + このトレースは、受信メッセージの処理を試みたときに行われます。 特定の近隣ノードでクォータ セットが超過しているため、メッセージをその近隣ノードに転送できません。 応答しない近隣ノードが、メッセージ保留のバックログをクリアできなかった場合にこの状態が発生します。 + +## トラブルシューティング + メッシュ内でメッセージが送信される速度を遅くしてください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peermaintaineractivity.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peermaintaineractivity.md new file mode 100644 index 00000000000..6ecd1479a92 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peermaintaineractivity.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.Channels.PeerMaintainerActivity | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ef28d086-d7fb-4e81-82e9-45a54647783b +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# System.ServiceModel.Channels.PeerMaintainerActivity +PeerMaintainer モジュールは、特定の操作を実行しています \(詳細はトレース メッセージの本文に含まれています\)。 + +## 説明 + このトレースは、各種の PeerMaintainer 操作中に行われます。 + + PeerMaintainer は PeerNode の内部コンポーネントです。 このコンポーネントは、毎分または 32 通のメッセージを受信するたびに近隣ノードに LinkUtility メッセージを送信します。このとき、交換されたメッセージ数と、有効な \(重複および改ざんされていない\) メッセージの数に関する統計が一緒に送信されます。 これは、特定の近隣ノードのリンク ユーティリティの特定に役立ちます。 約 5 分ごとに、保守管理者は近隣ノードの接続が正常かどうかを確認します。 近隣ノードへの接続数が適切な数を超えている場合、保守管理者は使用頻度が最も少ない接続を削除します。 接続数が十分でなければ、保守管理者は新しい接続を取得します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormanageroffline.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormanageroffline.md new file mode 100644 index 00000000000..b31583e8dac --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormanageroffline.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNeighborManagerOffline | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 15b19e0f-cee5-49ff-8498-f404c39b712f +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.PeerNeighborManagerOffline +PeerNode は現在オフラインです。隣接ノードは接続されていません。 + +## 説明 + このトレースは、ローカル ノードの近隣ノード一覧から近隣ノードを削除すると実行されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormanageronline.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormanageronline.md new file mode 100644 index 00000000000..f044966f129 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormanageronline.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNeighborManagerOnline | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b758d4e8-f54f-43a4-ae4f-4b98996d4c40 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNeighborManagerOnline +PeerNode が現在オンラインであり、1 つ以上の近隣ノードが接続されていることを示します。 + +## 説明 + このトレースは近隣ノードとの正常な接続の最後に実行されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormessagereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormessagereceived.md new file mode 100644 index 00000000000..0c1efdcf87a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormessagereceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNeighborMessageReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c787b86c-08c9-4d44-80ce-a6d189deb732 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.PeerNeighborMessageReceived +ピアの近隣ノードからメッセージを受信しました。 + +## 説明 + このトレースは、近隣ノード一覧のノードからの受信メッセージが処理されるときに出力されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbornotaccepted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbornotaccepted.md new file mode 100644 index 00000000000..bee4b11c51c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbornotaccepted.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.Channels.PeerNeighborNotAccepted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 77309bf5-37ba-4b90-b31f-c00ef044db0d +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# System.ServiceModel.Channels.PeerNeighborNotAccepted +ピアの近隣ノードは受け入れられませんでした。 + +## 説明 + このトレースは近隣ノードへの接続の処理で発生します。エラーの原因としては、セキュリティ設定が一致しない、タイムアウト時間が経過している、近隣ノードが接続を受け入れることができない、一時的なネットワーク問題が発生しているなどが考えられます。 + +## トラブルシューティング + セキュリティ設定が一致しない、タイムアウト時間が経過している、近隣ノードが接続を受け入れることができない、一時ネットワークなどの問題が発生していないか確認してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbornotfound.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbornotfound.md new file mode 100644 index 00000000000..ac442950ba8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbornotfound.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNeighborNotFound | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0aeb51a1-b82f-4008-920c-8604c5cbf600 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNeighborNotFound +近隣ノードに対する操作は、その近隣ノードが近隣ノード一覧になかったので実行できませんでした。 + +## 説明 + このエラーは、近隣ノードに接続するか、近隣ノードを閉じるときに発生します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighborstatechanged.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighborstatechanged.md new file mode 100644 index 00000000000..a119cfac166 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighborstatechanged.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNeighborStateChanged | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 94a30661-7177-4a63-ad07-54457137e9f2 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNeighborStateChanged +ピアの近隣ノードの状態が変わりました。 + +## 説明 + このトレースは、近隣ノードの状態を変更しようとすると実行されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighborstatechangefailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighborstatechangefailed.md new file mode 100644 index 00000000000..f2a192c5d3d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighborstatechangefailed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNeighborStateChangeFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 95153aa1-0e04-4857-83d9-9963f5e40b4e +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNeighborStateChangeFailed +近隣ノードの状態が壊れています。 + +## 説明 + このトレースは、近隣ノードの状態の変更に失敗すると実行されます。これは予期しない内部エラー、またはメモリの破損が発生したことを示しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeaddresschanged.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeaddresschanged.md new file mode 100644 index 00000000000..3d6314f7f20 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeaddresschanged.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNodeAddressChanged | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 14bd4be6-1ff1-4df5-b89f-af7950f62ef4 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNodeAddressChanged +1つまたは複数の PeerNode のアドレスが変更されました。 + +## 説明 + このトレースは、アドレス変更の通知コールバックの終了時に行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeauthenticationfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeauthenticationfailure.md new file mode 100644 index 00000000000..f5161ef2269 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeauthenticationfailure.md @@ -0,0 +1,34 @@ +--- +title: "System.ServiceModel.Channels.PeerNodeAuthenticationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0b50f782-ca06-4a82-aa7f-71f78ddc5177 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# System.ServiceModel.Channels.PeerNodeAuthenticationFailure +潜在的な近隣ノードとのセキュリティ ハンドシェイクに失敗しました。 + +## 説明 + このトレースは、セキュリティで保護された近隣ノードとの接続を確立するときに行われます。これは、資格情報が十分でないか間違っている場合に発生します。 + + PeerChannel では、トークンの種類として、強力な識別手段である X.509 証明書だけを認識します。X.509 証明書は、実装可能な認証および承認の種類に基づいて強力な ID モデルを提供します。PeerChannel では、パスワードを使用した簡単なアプリケーションもサポートしています。パスワードは、セッションへのエントリを許可する目的でのみ使用できます。パスワードを使用して、メッセージの認証を行うことはできません。これは、ピア グループで共有する共通鍵トークンをソース認証に使用することは困難かつ不適切であるためです。 + +## トラブルシューティング + すべての近隣ノードに適切なセキュリティ資格情報があることを確認します。 + +## 参照 + [ピア チャネルのセキュリティ](../../../../../docs/framework/wcf/feature-details/peer-channel-security.md) + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeauthenticationtimeout.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeauthenticationtimeout.md new file mode 100644 index 00000000000..6e62c378ca9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeauthenticationtimeout.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.Channels.PeerNodeAuthenticationTimeout | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f294ee94-be83-426c-b40d-6e8a4e5e987c +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNodeAuthenticationTimeout +セキュリティ ハンドシェイクが、指定した時間内に正常に終了しませんでした。 + +## 説明 + このトレースは、セキュリティで保護された近隣との接続を確立するときに行われます。 + +## トラブルシューティング + すべての近隣に適切なセキュリティ資格情報があり、すべてのメッセージに対して 1 分以内に応答していることを確認します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeclosed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeclosed.md new file mode 100644 index 00000000000..7ea189f2ccb --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeclosed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNodeClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c1cf92c3-3d31-4978-b0df-750fcd21909f +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNodeClosed +PeerNode が終了しました。 + +## 説明 + このトレースは、PeerNode の終了処理の終了時に行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeclosing.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeclosing.md new file mode 100644 index 00000000000..98de37bfea7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeclosing.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNodeClosing | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 47a008f0-04d7-4cf3-9099-c056f78c9bfa +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNodeClosing +PeerNode の終了処理が開始されました。 + +## 説明 + このトレースは、PeerNode の終了処理の開始時に行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopened.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopened.md new file mode 100644 index 00000000000..7a3d57c2161 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopened.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNodeOpened | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 516d95c6-ed9d-4673-95ec-3661daba4959 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNodeOpened +新しい近隣ノードとの接続が正しく開かれました。 + +## 説明 + このトレースは、近隣ノードとの接続に成功すると実行されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopenfailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopenfailed.md new file mode 100644 index 00000000000..75a8830c021 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopenfailed.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.Channels.PeerNodeOpenFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fd908a42-30d1-4301-bc33-35b503896634 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNodeOpenFailed +近隣ノードへの接続を開けませんでした。 + +## 説明 + このトレースは、近隣ノードとの接続の確立を試みた後に行われます。 原因として、応答しないリゾルバー、不正なバインディング設定、一時的なネットワーク エラーなどが考えられます。 + +## トラブルシューティング + 両方のノードが有効なアドレスを持ち、適切に構成されていることを確認してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopening.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopening.md new file mode 100644 index 00000000000..6fcd6ee7765 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopening.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerNodeOpening | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 132d4928-ea20-4952-b115-d050499bc728 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerNodeOpening +PeerNode の初期化が開始されました。 + +## 説明 + このトレースは、PeerNode の初期化 \(開始\) コード実行の開始時に行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerreceivemessageauthenticationfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerreceivemessageauthenticationfailure.md new file mode 100644 index 00000000000..ba42ea01451 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerreceivemessageauthenticationfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerReceiveMessageAuthenticationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 420e50fd-017c-4e06-bc13-320d4e0dc534 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.PeerReceiveMessageAuthenticationFailure +メッセージ ソースを認証できませんでした。 + +## 説明 + このトレースは受信メッセージを認証しようとしたときに、そのバインディングでメッセージの認証がオンになっていると発生します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerserviceopened.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerserviceopened.md new file mode 100644 index 00000000000..e143bc2bb87 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerserviceopened.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PeerServiceOpened | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b06345f4-cde9-484d-b7fb-d67dc356aed6 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Channels.PeerServiceOpened +ピア サービス モジュールが開かれ、指定したアドレスでリッスンを開始しました。 + +## 説明 + このトレースは、PeerNode のピア サービス モジュールを開くときに行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pipeconnectionabort.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pipeconnectionabort.md new file mode 100644 index 00000000000..f50aaa60bef --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pipeconnectionabort.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PipeConnectionAbort | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2243ef42-7705-4518-91f4-d8e3c40bab34 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.PipeConnectionAbort +System.ServiceModel.Channels.PipeConnectionAbort + +## 説明 + PipeConnection が中止されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpregisteredaddresses.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpregisteredaddresses.md new file mode 100644 index 00000000000..a4cb425c325 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpregisteredaddresses.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PnrpRegisteredAddresses | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b770e042-0555-4668-9b41-e20da092c16a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.PnrpRegisteredAddresses +PNRP リゾルバーがローカル ノードのアドレスを登録しました。 + +## 説明 + このトレースは、PNRP サービスがローカル ノードのアドレスを正常に登録すると実行されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpresolvedaddresses.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpresolvedaddresses.md new file mode 100644 index 00000000000..0d4addb581a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpresolvedaddresses.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PnrpResolvedAddresses | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 57618b91-d2bd-4915-adb9-972868abba3b +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.PnrpResolvedAddresses +PNRP リゾルバーは解決操作を完了しました。 + +## 説明 + この警告トレースは、PNRP リゾルバーがアドレスを見つけられなかったことを示します。このトレースは、PNRP リゾルバーによる解決操作中に行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpresolveexception.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpresolveexception.md new file mode 100644 index 00000000000..6b5ceb3bc97 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpresolveexception.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PnrpResolveException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 398db8db-7394-439a-b599-3ad3f5cfcdb9 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.PnrpResolveException +PnrpResolverService が解決中に例外が発生しました。 + +## 説明 + このトレースは、PNRP リゾルバーによる解決操作中に行われます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpunregisteredaddresses.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpunregisteredaddresses.md new file mode 100644 index 00000000000..177ebba56a9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpunregisteredaddresses.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PnrpUnregisteredAddresses | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e726ab32-6923-4fdb-b0ce-bdf2a299ed6a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.PnrpUnregisteredAddresses +PNRP リゾルバーがローカル ノードのアドレスを登録解除しました。 + +## 説明 + このトレースは、PNRP サービスがローカル ノードのアドレスを正常に登録解除すると実行されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-prematuredatagrameof.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-prematuredatagrameof.md new file mode 100644 index 00000000000..674d56d0430 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-prematuredatagrameof.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.PrematureDatagramEof | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ec07be8b-b537-4090-be7e-086679dba78d +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.PrematureDatagramEof +System.ServiceModel.Channels.PrematureDatagramEof + +## 説明 + NULL メッセージ \(チャネルの信号終了\) が、データグラム チャネルから受信されましたが、チャネルはまだ Opened 状態のままです。 これは、データグラム チャネルにエラーがあり、デマルチプレクサー受信ループが途中で止まったことを示しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-requestchannelreplyreceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-requestchannelreplyreceived.md new file mode 100644 index 00000000000..d20ca41ed73 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-requestchannelreplyreceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.RequestChannelReplyReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 61d428d1-903e-4c34-9c4f-22704043d9d6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.RequestChannelReplyReceived +System.ServiceModel.Channels.RequestChannelReplyReceived + +## 説明 + 要求チャネルを介して応答を受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-requestcontextabort.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-requestcontextabort.md new file mode 100644 index 00000000000..b59bf909396 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-requestcontextabort.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.RequestContextAbort | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b41c78a2-c885-418d-831f-2db86fa3a52d +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.RequestContextAbort +System.ServiceModel.Channels.RequestContextAbort + +## 説明 + RequestContext が中止されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-servermaxpooledconnectionsquotareached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-servermaxpooledconnectionsquotareached.md new file mode 100644 index 00000000000..89657040f12 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-servermaxpooledconnectionsquotareached.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.ServerMaxPooledConnectionsQuotaReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0c189f09-887d-459e-b7ab-529110437254 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.ServerMaxPooledConnectionsQuotaReached +System.ServiceModel.Channels.ServerMaxPooledConnectionsQuotaReached + +## 説明 + MaxOutboundConnectionsPerEndpoint のクォータに達したため、接続は閉じられ、リスナーによって再使用されませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionabort.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionabort.md new file mode 100644 index 00000000000..348210ac30b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionabort.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.SocketConnectionAbort | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5e1a7716-b23a-46c5-952a-19c53b447a71 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.SocketConnectionAbort +System.ServiceModel.Channels.SocketConnectionAbort + +## 説明 + SocketConnection が中止されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionabortclose.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionabortclose.md new file mode 100644 index 00000000000..619c8d39f8b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionabortclose.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.SocketConnectionAbortClose | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4c33b160-fed5-438b-964d-a0a034dcaee2 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.SocketConnectionAbortClose +System.ServiceModel.Channels.SocketConnectionAbortClose + +## 説明 + SocketConnection が Close 中に中止されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionclose.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionclose.md new file mode 100644 index 00000000000..6b14ca74aef --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionclose.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.SocketConnectionClose | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5302af2a-8c00-4651-837f-3348df44e98c +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.SocketConnectionClose +System.ServiceModel.Channels.SocketConnectionClose + +## 説明 + SocketConnection のクローズ。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectioncreate.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectioncreate.md new file mode 100644 index 00000000000..fdff2f42c5b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectioncreate.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.SocketConnectionCreate | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 707015f1-a41f-4a42-b74e-a19677e2517b +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.SocketConnectionCreate +System.ServiceModel.Channels.SocketConnectionCreate + +## 説明 + このトレースは、クライアントによって実行される最初の "プロセス アクション" アクティビティおよびサービスの "バイトを受信" アクティビティで出力されます。ローカルとリモートの IP アドレスを提供します。情報レベルで出力されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-sslclientcertmissing.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-sslclientcertmissing.md new file mode 100644 index 00000000000..a61e64f5366 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-sslclientcertmissing.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.SslClientCertMissing | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d09f5336-c1e6-4b92-a04d-af556546bc69 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.SslClientCertMissing +System.ServiceModel.Channels.SslClientCertMissing + +## 説明 + リモートの SSL クライアントは必要な資格情報を提供できませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-streamsecurityupgradeaccepted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-streamsecurityupgradeaccepted.md new file mode 100644 index 00000000000..4c74c1a29cb --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-streamsecurityupgradeaccepted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.StreamSecurityUpgradeAccepted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: da6c1a6a-1862-4d82-8b44-4b99463a95b8 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.StreamSecurityUpgradeAccepted +System.ServiceModel.Channels.StreamSecurityUpgradeAccepted + +## 説明 + ストリームのセキュリティ更新を正常に受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-systemtimeresolution.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-systemtimeresolution.md new file mode 100644 index 00000000000..c230437e3eb --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-systemtimeresolution.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.SystemTimeResolution | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eaab4ce9-b16a-4fe8-9271-3a1ab1dfa93a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.SystemTimeResolution +System.ServiceModel.Channels.SystemTimeResolution + +## 説明 + オペレーティング システムのタイマー刻みは *n* チックであることが検出されました。これは約 *m* ミリ秒に相当します。 *n* と *m* には数値が入ります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-tcpchannelmessagereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-tcpchannelmessagereceived.md new file mode 100644 index 00000000000..3bcb6f3903a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-tcpchannelmessagereceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.TcpChannelMessageReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eb896d04-e4a5-404f-9df6-5fcaa93e5b60 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.Channels.TcpChannelMessageReceived +System.ServiceModel.Channels.TcpChannelMessageReceived + +## 説明 + TCP チャネルを介してメッセージを受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-tcpconnecterror.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-tcpconnecterror.md new file mode 100644 index 00000000000..c757e20b2e6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-tcpconnecterror.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Channels.TcpConnectError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 22d93797-072e-405d-a3e0-5c519ddf290b +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Channels.TcpConnectError +TCP 接続の操作に失敗しました。 + +## 説明 + この警告レベルのトレースは、TCP エンドポイントへの接続に失敗したことを示しています。これは、リモート エンドポイントが指定された IP アドレスとポートで応答していない場合に発生することがあります。別の有効な IP アドレス \(IPv4 アドレスや IPv6 アドレス、または指定のホスト名を表す別の IP アドレスなど\) への後続する接続試行が成功した場合、このトレースは無視できます。このトレースに含まれる例外により、エラーに関する追加情報が公開されることがあります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationchannelcreated.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationchannelcreated.md new file mode 100644 index 00000000000..867f9634c68 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationchannelcreated.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationChannelCreated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7c0d4c95-6ab4-49c2-ad1d-f52035ea4827 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationChannelCreated +System.ServiceModel.ComIntegration.ComIntegrationChannelCreated + +## 説明 + ComPlus : チャネルが作成されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdispatchmethod.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdispatchmethod.md new file mode 100644 index 00000000000..0ff4430a1ba --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdispatchmethod.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationDispatchMethod | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7b4930be-57e6-4fe8-b63d-81900bba11c1 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationDispatchMethod +System.ServiceModel.ComIntegration.ComIntegrationDispatchMethod + +## 説明 + ComPlus : メソッドの詳細をディスパッチします。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializeraddinghost.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializeraddinghost.md new file mode 100644 index 00000000000..ccbb202ac1c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializeraddinghost.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerAddingHost | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 404bed8d-44d9-419f-972b-2809fec2a0f1 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerAddingHost +System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerAddingHost + +## 説明 + ComPlus : DllHost 初期化子 : ホストを追加しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstarted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstarted.md new file mode 100644 index 00000000000..19b68845c02 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstarted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 232522dc-d6a1-4ac8-b632-5bbdf2d4f5a1 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarted +System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarted + +## 説明 + ServiceModelInitializer は、構成されたサービスを起動しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstarting.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstarting.md new file mode 100644 index 00000000000..7aa24760819 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstarting.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarting | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: affa55c6-03b5-4664-bb9c-2b9d15620df3 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarting +System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarting + +## 説明 + ServiceModelInitializer を開始しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstopped.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstopped.md new file mode 100644 index 00000000000..71b0bee62e7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstopped.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStopped | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6b2912d4-21a4-4a9c-bb68-8626fca5cc39 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStopped +System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStopped + +## 説明 + ServiceModelInitializer は、構成されたサービスを停止しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstopping.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstopping.md new file mode 100644 index 00000000000..d6d8ec8fc13 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstopping.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStopping | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: adb9c902-f932-4d88-8eb1-06fd93f7afb2 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStopping +System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStopping + +## 説明 + ComPlus: DllHost 初期化子を停止しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationenteringactivity.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationenteringactivity.md new file mode 100644 index 00000000000..f3a4440eca3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationenteringactivity.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationEnteringActivity | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bacbae18-322b-41e9-881a-75017f97ffd7 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationEnteringActivity +System.ServiceModel.ComIntegration.ComIntegrationEnteringActivity + +## 説明 + ComPlus : COM\+ アクティビティの入力 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationexecutingcall.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationexecutingcall.md new file mode 100644 index 00000000000..9df8205efcf --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationexecutingcall.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationExecutingCall | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 288e0e8a-225b-4676-9512-6ab5e8daa37c +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationExecutingCall +System.ServiceModel.ComIntegration.ComIntegrationExecutingCall + +## 説明 + ComPlus : COM 呼び出しの実行。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancecreationrequest.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancecreationrequest.md new file mode 100644 index 00000000000..f0bc005b5b1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancecreationrequest.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationInstanceCreationRequest | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e9f3f224-cb6b-4c72-a808-d4905ca0c2b8 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationInstanceCreationRequest +System.ServiceModel.ComIntegration.ComIntegrationInstanceCreationRequest + +## 説明 + ComPlus : インスタンス作成要求を受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancecreationsuccess.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancecreationsuccess.md new file mode 100644 index 00000000000..aa04c6001c9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancecreationsuccess.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationInstanceCreationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fac5288a-139b-4cb1-8931-d2a153a19971 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationInstanceCreationSuccess +System.ServiceModel.ComIntegration.ComIntegrationInstanceCreationSuccess + +## 説明 + ComPlus : インスタンスを作成しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancereleased.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancereleased.md new file mode 100644 index 00000000000..605da7e018c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancereleased.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationInstanceReleased | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 21922b4d-9a83-45cb-a6fc-5b1c2f9a2c17 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationInstanceReleased +System.ServiceModel.ComIntegration.ComIntegrationInstanceReleased + +## 説明 + ComPlus : インスタンスを解放しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokedmethod.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokedmethod.md new file mode 100644 index 00000000000..d1f3dc50620 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokedmethod.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationInvokedMethod | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 87e91962-93a8-4e06-8ee7-8470c26dfa7f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationInvokedMethod +System.ServiceModel.ComIntegration.ComIntegrationInvokedMethod + +## 説明 + ComPlus : 呼び出されたメソッド。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokingmethod.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokingmethod.md new file mode 100644 index 00000000000..3375e5ced4f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokingmethod.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationInvokingMethod | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dea076f0-1c05-40af-a329-c3e3f7a805c1 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationInvokingMethod +System.ServiceModel.ComIntegration.ComIntegrationInvokingMethod + +## 説明 + ComPlus : メソッドを呼び出します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokingmethodnewtransaction.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokingmethodnewtransaction.md new file mode 100644 index 00000000000..63a0b1cc05e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokingmethodnewtransaction.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationInvokingMethodNewTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0ece8905-f151-4b92-ba45-0437db314297 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationInvokingMethodNewTransaction +System.ServiceModel.ComIntegration.ComIntegrationInvokingMethodNewTransaction + +## 説明 + Complus : 新しい受信トランザクションでのメソッドの呼び出し。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationleftactivity.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationleftactivity.md new file mode 100644 index 00000000000..998b5239b4b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationleftactivity.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationLeftActivity | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 266e21b6-2809-4561-b7d9-eec40f1e1e10 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationLeftActivity +System.ServiceModel.ComIntegration.ComIntegrationLeftActivity + +## 説明 + ComPlus : 残りの COM\+ 動作状況。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationmexchannelbuilderloaded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationmexchannelbuilderloaded.md new file mode 100644 index 00000000000..134dc020f85 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationmexchannelbuilderloaded.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationMexChannelBuilderLoaded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 107160a1-1f19-4c5d-9a74-fe1f398aa8c4 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationMexChannelBuilderLoaded +System.ServiceModel.ComIntegration.ComIntegrationMexChannelBuilderLoaded + +## 説明 + Complus : Mex チャネル ローダーが読み込まれます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationmexmonikermetadataexchangecomplete.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationmexmonikermetadataexchangecomplete.md new file mode 100644 index 00000000000..ca6281991b6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationmexmonikermetadataexchangecomplete.md @@ -0,0 +1,28 @@ +--- +title: "System.Runtime.Serialization.ReadObjectEnd | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1c997554-a08e-4d14-8628-c92e2cf84fcb +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.Runtime.Serialization.ReadObjectEnd +System.Runtime.Serialization.ReadObjectEnd + +## 説明 + 終了した ReadObject。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehostcreatedserviceendpoint.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehostcreatedserviceendpoint.md new file mode 100644 index 00000000000..9a834d2b430 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehostcreatedserviceendpoint.md @@ -0,0 +1,32 @@ +--- +title: "System.ServiceModel.Channels.MsmqMoveOrDeleteAttemptFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d75d39da-7502-4a6a-91b9-eaa05b8e24d5 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Channels.MsmqMoveOrDeleteAttemptFailed +メッセージを移動または削除できません。 + +## 説明 + このトレースは、MSMQ メッセージの移動、削除、または拒否の試行中にエラーが発生したことを示しています。 + + MSMQ メッセージは \(NetMsmqBinding または MsmqIntegrationBinding のどちらかを使用する場合に\) [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] で使用されます。このトレースは NetMsmqBinding または MsmqIntegrationBinding の `ReceiveErrorHandling` プロパティで選択された値と関係しています。 + + このトレースはシステム全体についてのエラーを示すものではありません。 ただし、選択した有害メッセージの処置に失敗したことを示しています。 メッセージが有害となる場合の詳細、および有害メッセージをサービスで適切に処理するための構成方法については、「[有害メッセージの処理](http://go.microsoft.com/fwlink/?LinkID=99546)」を参照してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststartedservice.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststartedservice.md new file mode 100644 index 00000000000..f2023ce5e36 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststartedservice.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartedService | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f395f028-8c9c-4b5d-857b-8d18f94d3375 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartedService +System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartedService + +## 説明 + ComPlus : サービスが開始しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststartingservice.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststartingservice.md new file mode 100644 index 00000000000..43b0cfa0911 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststartingservice.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartingService | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d748b1bc-5f8f-457c-918f-aadbc1c580f6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartingService +System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartingService + +## 説明 + ComPlus : サービスを開始します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststoppedservice.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststoppedservice.md new file mode 100644 index 00000000000..b762d2de30c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststoppedservice.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationServiceHostStoppedService | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c388f68d-2c6d-4d68-bc2b-0d63b99fccf1 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationServiceHostStoppedService +System.ServiceModel.ComIntegration.ComIntegrationServiceHostStoppedService + +## 説明 + ComPlus : サービスが停止しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststoppingservice.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststoppingservice.md new file mode 100644 index 00000000000..9bd1a7567bc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststoppingservice.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationServiceHostStoppingService | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 78e4e780-c784-4511-8cf5-dd5293579cec +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationServiceHostStoppingService +System.ServiceModel.ComIntegration.ComIntegrationServiceHostStoppingService + +## 説明 + ComPlus : サービスを停止しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicemonikerparsed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicemonikerparsed.md new file mode 100644 index 00000000000..8236e5e4ebc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicemonikerparsed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationServiceMonikerParsed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 827bf29b-bb7d-4f45-86ea-92752f656f5a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationServiceMonikerParsed +System.ServiceModel.ComIntegration.ComIntegrationServiceMonikerParsed + +## 説明 + ComPlus : サービス モニカーが解析されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportconverterevent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportconverterevent.md new file mode 100644 index 00000000000..d9139cfe419 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportconverterevent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationTLBImportConverterEvent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b9d06575-521c-4b88-ae45-0aec098b5bd7 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationTLBImportConverterEvent +System.ServiceModel.ComIntegration.ComIntegrationTLBImportConverterEvent + +## 説明 + ComPlus : タイプ ライブラリのコンバーター イベント + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfinished.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfinished.md new file mode 100644 index 00000000000..a2707cc2555 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfinished.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationTLBImportFinished | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e0f1d5dc-92eb-42f9-8786-89cb8d4f22e6 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ComIntegration.ComIntegrationTLBImportFinished +System.ServiceModel.ComIntegration.ComIntegrationTLBImportFinished + +## 説明 + コンポーネント タイプ ライブラリの分析が終了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfromassembly.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfromassembly.md new file mode 100644 index 00000000000..e5833e6a238 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfromassembly.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationTLBImportFromAssembly | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb2b6e33-00cb-403f-b616-1a70294d7aa8 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationTLBImportFromAssembly +System.ServiceModel.ComIntegration.ComIntegrationTLBImportFromAssembly + +## 説明 + ComPlus : アセンブリを使用したタイプ ライブラリのインポート + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfromtypelib.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfromtypelib.md new file mode 100644 index 00000000000..d07eba44d29 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfromtypelib.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationTLBImportFromTypelib | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e404950c-531a-48a1-b2dd-caba25217134 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationTLBImportFromTypelib +System.ServiceModel.ComIntegration.ComIntegrationTLBImportFromTypelib + +## 説明 + ComPlus : タイプ ライブラリを使用したタイプ ライブラリのインポート + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportstarting.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportstarting.md new file mode 100644 index 00000000000..bc91ac4f26b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportstarting.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationTLBImportStarting | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f94b1d9e-25d5-41a9-864b-5e0be7daaf56 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ComIntegration.ComIntegrationTLBImportStarting +System.ServiceModel.ComIntegration.ComIntegrationTLBImportStarting + +## 説明 + コンポーネント タイプ ライブラリの分析を開始しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxabortedbycontext.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxabortedbycontext.md new file mode 100644 index 00000000000..82cb0aafc9f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxabortedbycontext.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxAbortedByContext | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e783e3cb-b011-4a3b-890b-8c710978cbc8 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxAbortedByContext +System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxAbortedByContext + +## 説明 + ComPlus : トランザクションが COM\+ のコンテキストで中止されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxabortedbytm.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxabortedbytm.md new file mode 100644 index 00000000000..010bf42e311 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxabortedbytm.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxAbortedByTM | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9f09ea91-8399-4ea0-af70-640ce72a2018 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxAbortedByTM +System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxAbortedByTM + +## 説明 + ComPlus : トランザクション マネージャーによってトランザクションが中止されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxcommitted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxcommitted.md new file mode 100644 index 00000000000..d62a1ecfc18 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxcommitted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxCommitted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f9f5d2aa-04db-4d4d-b802-3bf5d4626e59 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxCommitted +System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxCommitted + +## 説明 + ComPlus : トランザクションがコミットされました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtypedchannelbuilderloaded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtypedchannelbuilderloaded.md new file mode 100644 index 00000000000..9152407eb20 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtypedchannelbuilderloaded.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationTypedChannelBuilderLoaded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ebb0fd0e-3f3b-4e35-b0a1-05e281ca9207 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationTypedChannelBuilderLoaded +System.ServiceModel.ComIntegration.ComIntegrationTypedChannelBuilderLoaded + +## 説明 + ComPlus : 読み込まれた型指定されたチャネル ビルダー + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationwsdlchannelbuilderloaded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationwsdlchannelbuilderloaded.md new file mode 100644 index 00000000000..3982c59845d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationwsdlchannelbuilderloaded.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ComIntegration.ComIntegrationWsdlChannelBuilderLoaded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b816e27e-e902-4009-bd61-325d68195f28 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ComIntegration.ComIntegrationWsdlChannelBuilderLoaded +System.ServiceModel.ComIntegration.ComIntegrationWsdlChannelBuilderLoaded + +## 説明 + ComPlus : WSDL チャネル ビルダーが読み込まれました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectaborted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectaborted.md new file mode 100644 index 00000000000..07e894b5053 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectaborted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectAborted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8a76eaf3-41a2-4ec2-adeb-c6bbce6ed8bf +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.CommunicationObjectAborted +System.ServiceModel.CommunicationObjectAborted + +## 説明 + 通信オブジェクトが中止されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectabortfailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectabortfailed.md new file mode 100644 index 00000000000..9c1b6d41dcc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectabortfailed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectAbortFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f3cab70b-ec5d-412c-a7c2-e09377bc6d46 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.CommunicationObjectAbortFailed +通信オブジェクトを中止できませんでした。 + +## 説明 + Abort メソッドの実行中に例外がスローされたため、通信オブジェクトを中止できませんでした。 この付近のトレースに例外に関する詳細が含まれている可能性があります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosed.md new file mode 100644 index 00000000000..e0975b2bf05 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 94936c4c-8e83-4c59-a82e-a470e2728e80 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.CommunicationObjectClosed +System.ServiceModel.CommunicationObjectClosed + +## 説明 + 通信オブジェクトが閉じられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosefailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosefailed.md new file mode 100644 index 00000000000..4c537406092 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosefailed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectCloseFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 60270eab-6f57-4136-bec5-62d3edd23880 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.CommunicationObjectCloseFailed +通信オブジェクトを閉じることができませんでした。 + +## 説明 + Close メソッドの実行中に例外がスローされたため、通信オブジェクトを閉じることができませんでした。別の最近のトレースに、例外に関する詳細が含まれている可能性があります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosing.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosing.md new file mode 100644 index 00000000000..b3b5c602a86 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosing.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectClosing | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2b395653-7615-4dbe-8ee6-2dc11b659221 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.CommunicationObjectClosing +System.ServiceModel.CommunicationObjectClosing + +## 説明 + 通信オブジェクトを閉じています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectcreated.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectcreated.md new file mode 100644 index 00000000000..7a2ec32b8bc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectcreated.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectCreated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4d0d4ab3-270c-408d-b48a-b53b02cb9263 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.CommunicationObjectCreated +System.ServiceModel.CommunicationObjectCreated + +## 説明 + 通信オブジェクトが作成されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectdisposing.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectdisposing.md new file mode 100644 index 00000000000..9eae063d6ac --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectdisposing.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectDisposing | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b7199c74-c218-426b-b77d-a20c562d7910 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.CommunicationObjectDisposing +System.ServiceModel.CommunicationObjectDisposing + +## 説明 + 通信オブジェクトが破棄されていました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectfaulted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectfaulted.md new file mode 100644 index 00000000000..8d51fa8935a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectfaulted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectFaulted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 14a9e56d-6f75-49be-95c6-44510533af91 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.CommunicationObjectFaulted +System.ServiceModel.CommunicationObjectFaulted + +## 説明 + 通信オブジェクトでエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectfaultreason.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectfaultreason.md new file mode 100644 index 00000000000..432c2c8735d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectfaultreason.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectFaultReason | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d2530933-bfba-4b20-aba6-b1f99e97699d +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.CommunicationObjectFaultReason +System.ServiceModel.CommunicationObjectFaultReason + +## 説明 + 例外により通信オブジェクトでエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopened.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopened.md new file mode 100644 index 00000000000..5697a46aaaa --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopened.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectOpened | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 431ccb35-b593-4157-8e4d-f20e579630fd +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.CommunicationObjectOpened +System.ServiceModel.CommunicationObjectOpened + +## 説明 + 通信オブジェクトが開かれました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopenfailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopenfailed.md new file mode 100644 index 00000000000..a2898771e77 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopenfailed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectOpenFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8e188528-c4f4-499e-9ac2-a2fac4742f29 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.CommunicationObjectOpenFailed +通信オブジェクトを開けませんでした。 + +## 説明 + Open メソッドの実行中に例外がスローされたため、通信オブジェクトを開けませんでした。この付近のトレースに例外に関する詳細が含まれている可能性があります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopening.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopening.md new file mode 100644 index 00000000000..8be5530b7a3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopening.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.CommunicationObjectOpening | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e19954e9-dd48-4560-b891-96d0ff8ecf98 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.CommunicationObjectOpening +System.ServiceModel.CommunicationObjectOpening + +## 説明 + 通信オブジェクトを開いています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-configurationisreadonly.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-configurationisreadonly.md new file mode 100644 index 00000000000..fab984997a6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-configurationisreadonly.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ConfigurationIsReadOnly | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a6734380-8ecf-454a-ab45-8832d6a27871 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ConfigurationIsReadOnly +System.ServiceModel.ConfigurationIsReadOnly + +## 説明 + 構成は読み取り専用です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-configuredextensiontypenotfound.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-configuredextensiontypenotfound.md new file mode 100644 index 00000000000..d785e6e0c52 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-configuredextensiontypenotfound.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ConfiguredExtensionTypeNotFound | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ef1c72d7-35c4-4886-80bb-b0a368da77e2 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ConfiguredExtensionTypeNotFound +System.ServiceModel.ConfiguredExtensionTypeNotFound + +## 説明 + 拡張の型が構成されていません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-activityboundary.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-activityboundary.md new file mode 100644 index 00000000000..5a104075057 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-activityboundary.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.ActivityBoundary | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a24e3076-0c14-4271-9990-090c0dfed07f +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Diagnostics.ActivityBoundary +System.ServiceModel.Diagnostics.ActivityBoundary + +## 説明 + 動作の境界。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-appdomainunload.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-appdomainunload.md new file mode 100644 index 00000000000..701c2d6c7aa --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-appdomainunload.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.AppDomainUnload | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d3901f94-db06-4309-8e24-afdec5eeb102 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Diagnostics.AppDomainUnload +System.ServiceModel.Diagnostics.AppDomainUnload + +## 説明 + AppDomain をアンロード中です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-diagnosticsfailedmessagetrace.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-diagnosticsfailedmessagetrace.md new file mode 100644 index 00000000000..29c72733a3b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-diagnosticsfailedmessagetrace.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.DiagnosticsFailedMessageTrace | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8c1de25c-7e1e-4986-9c32-fc47a604f373 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Diagnostics.DiagnosticsFailedMessageTrace +System.ServiceModel.Diagnostics.DiagnosticsFailedMessageTrace + +## 説明 + メッセージをトレースできませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-eventlog.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-eventlog.md new file mode 100644 index 00000000000..5b9bc520ef9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-eventlog.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.EventLog | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5e8b517b-4f89-4067-8070-e86915b608c4 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Diagnostics.EventLog +System.ServiceModel.Diagnostics.EventLog + +## 説明 + EventLog に書き込みました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-failedtoaddanactivityidheader.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-failedtoaddanactivityidheader.md new file mode 100644 index 00000000000..a689e59ef3c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-failedtoaddanactivityidheader.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.FailedToAddAnActivityIdHeader | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2a1a5612-82c6-4cf6-aa96-ca6f5df12b69 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Diagnostics.FailedToAddAnActivityIdHeader +System.ServiceModel.Diagnostics.FailedToAddAnActivityIdHeader + +## 説明 + 送信メッセージのアクティビティ ID ヘッダーを設定できませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-failedtoreadanactivityidheader.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-failedtoreadanactivityidheader.md new file mode 100644 index 00000000000..c028ecc5bf6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-failedtoreadanactivityidheader.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.FailedToReadAnActivityIdHeader | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dba7f15e-b8f5-4c96-9c02-a3a49723ebb2 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.Diagnostics.FailedToReadAnActivityIdHeader +System.ServiceModel.Diagnostics.FailedToReadAnActivityIdHeader + +## 説明 + メッセージのアクティビティ ID ヘッダーを読み取ることができませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-filternotmatchednodequotaexceeded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-filternotmatchednodequotaexceeded.md new file mode 100644 index 00000000000..ca2fb6baf7c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-filternotmatchednodequotaexceeded.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.FilterNotMatchedNodeQuotaExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 067f27ba-4d9e-4efb-8fa7-c23d2654d967 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Diagnostics.FilterNotMatchedNodeQuotaExceeded +System.ServiceModel.Diagnostics.FilterNotMatchedNodeQuotaExceeded + +## 説明 + メッセージに対するメッセージ ログ記録フィルターの評価が、フィルターに設定されたノード クォータを超えました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-messagenotloggedquotaexceeded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-messagenotloggedquotaexceeded.md new file mode 100644 index 00000000000..5943895ac2b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-messagenotloggedquotaexceeded.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.MessageNotLoggedQuotaExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8b4fa4c5-83b7-41c3-9d5e-baa1fc2c98ae +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Diagnostics.MessageNotLoggedQuotaExceeded +System.ServiceModel.Diagnostics.MessageNotLoggedQuotaExceeded + +## 説明 + サイズが構成されたクォータを超えているため、ログに記録されなかったメッセージ。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-throwingexception.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-throwingexception.md new file mode 100644 index 00000000000..a92214be675 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-throwingexception.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.ThrowingException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5d543c68-1fd2-4512-a219-baf698136ef0 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.Diagnostics.ThrowingException +System.ServiceModel.Diagnostics.ThrowingException + +## 説明 + 例外をスローします。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-tracehandledexception.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-tracehandledexception.md new file mode 100644 index 00000000000..61f7574e832 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-tracehandledexception.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.TraceHandledException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fd9a62db-258c-4a39-ae8f-cc948912638f +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Diagnostics.TraceHandledException +System.ServiceModel.Diagnostics.TraceHandledException + +## 説明 + 例外を処理しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-tracetruncatedquotaexceeded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-tracetruncatedquotaexceeded.md new file mode 100644 index 00000000000..6f5a87418dc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-tracetruncatedquotaexceeded.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.TraceTruncatedQuotaExceeded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 623d66f1-389f-43c7-a6ea-afe7f80651a5 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Diagnostics.TraceTruncatedQuotaExceeded +System.ServiceModel.Diagnostics.TraceTruncatedQuotaExceeded + +## 説明 + トレース サイズのクォータを超えました。トレースは途中終了されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-unhandledexception.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-unhandledexception.md new file mode 100644 index 00000000000..884112eddc5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-unhandledexception.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Diagnostics.UnhandledException | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6807fdfc-1e7e-42ca-8efe-a05b51de2f8f +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.Diagnostics.UnhandledException +System.ServiceModel.Diagnostics.UnhandledException + +## 説明 + 未処理の例外。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-didnotunderstandmessageheader.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-didnotunderstandmessageheader.md new file mode 100644 index 00000000000..1007eb66353 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-didnotunderstandmessageheader.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.DidNotUnderstandMessageHeader | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a4dfc51c-7148-4181-81c3-7b424b4c43db +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.DidNotUnderstandMessageHeader +System.ServiceModel.DidNotUnderstandMessageHeader + +## 説明 + メッセージ ヘッダーを認識できませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-droppedamessage.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-droppedamessage.md new file mode 100644 index 00000000000..183ba9676ef --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-droppedamessage.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.DroppedAMessage | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a299401f-2983-45ea-b4f3-963bece3602e +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.DroppedAMessage +System.ServiceModel.DroppedAMessage + +## 説明 + 応答メッセージを受信しましたが、このメッセージを待っている未処理の要求がありません。[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] ランタイムは、このメッセージを削除しています。 + + このトレースは、失われたメッセージのデバッグに使用できます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-elementtypedoesntmatchconfiguredtype.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-elementtypedoesntmatchconfiguredtype.md new file mode 100644 index 00000000000..98d6da93a10 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-elementtypedoesntmatchconfiguredtype.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ElementTypeDoesntMatchConfiguredType | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0bc74839-6e28-449b-80c9-b62ad7e58207 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ElementTypeDoesntMatchConfiguredType +System.ServiceModel.ElementTypeDoesntMatchConfiguredType + +## 説明 + 要素の型が構成の型に一致しません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-endexecutemethod.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-endexecutemethod.md new file mode 100644 index 00000000000..680f40e15c9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-endexecutemethod.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.EndExecuteMethod | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0e68207f-1756-49e2-ac3a-04a881241f8a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.EndExecuteMethod +System.ServiceModel.EndExecuteMethod + +## 説明 + 終了メソッドの実行。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-errorinvokingusercode.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-errorinvokingusercode.md new file mode 100644 index 00000000000..9a517701a85 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-errorinvokingusercode.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ErrorInvokingUserCode | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 48849ef4-d0af-45f1-b320-1a1280404e45 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ErrorInvokingUserCode +System.ServiceModel.ErrorInvokingUserCode + +## 説明 + ユーザー コードの呼び出し中にエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-evaluationcontextnotfound.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-evaluationcontextnotfound.md new file mode 100644 index 00000000000..8e4648c265b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-evaluationcontextnotfound.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.EvaluationContextNotFound | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ff801204-1fc9-4bb2-9de1-be751073eb34 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.EvaluationContextNotFound +System.ServiceModel.EvaluationContextNotFound + +## 説明 + 構成の評価コンテキストが見つかりませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectiondoesnotexist.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectiondoesnotexist.md new file mode 100644 index 00000000000..c042f050932 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectiondoesnotexist.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ExtensionCollectionDoesNotExist | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 61a5231b-4385-4a49-b676-a8e60cda96c3 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ExtensionCollectionDoesNotExist +System.ServiceModel.ExtensionCollectionDoesNotExist + +## 説明 + 拡張コレクションが存在しません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectionisempty.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectionisempty.md new file mode 100644 index 00000000000..7c05bb58637 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectionisempty.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ExtensionCollectionIsEmpty | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: efac8d8a-4c91-45f4-8e33-9e370be55eae +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ExtensionCollectionIsEmpty +System.ServiceModel.ExtensionCollectionIsEmpty + +## 説明 + 拡張コレクションは空です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectionnamenotfound.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectionnamenotfound.md new file mode 100644 index 00000000000..404eac81b1f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectionnamenotfound.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ExtensionCollectionNameNotFound | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 67b26f93-2e85-4a56-b103-6e8db149191c +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ExtensionCollectionNameNotFound +System.ServiceModel.ExtensionCollectionNameNotFound + +## 説明 + 拡張要素が拡張のコレクションに関連付けられていません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensionelementalreadyexistsincollection.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensionelementalreadyexistsincollection.md new file mode 100644 index 00000000000..f4cb0d3ad7e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensionelementalreadyexistsincollection.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ExtensionElementAlreadyExistsInCollection | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e6c0c5d4-889c-45fb-b90f-3720bb183aa4 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ExtensionElementAlreadyExistsInCollection +System.ServiceModel.ExtensionElementAlreadyExistsInCollection + +## 説明 + 拡張要素は既にコレクションに存在します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-failedtoopenincomingchannel.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-failedtoopenincomingchannel.md new file mode 100644 index 00000000000..2d01d2215e1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-failedtoopenincomingchannel.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.FailedToOpenIncomingChannel | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7c6c6b1b-51b8-4f45-bf76-62d816a1fc0a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.FailedToOpenIncomingChannel +System.ServiceModel.FailedToOpenIncomingChannel + +## 説明 + 受信チャネルを開こうとしたときにエラーが発生したため、受信チャネルは破棄されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getbehaviorelement.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getbehaviorelement.md new file mode 100644 index 00000000000..896fb24305f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getbehaviorelement.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.GetBehaviorElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c7332d23-e226-470c-b063-0fb9d919437f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.GetBehaviorElement +System.ServiceModel.GetBehaviorElement + +## 説明 + BehaviorElement を取得します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getchannelendpointelement.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getchannelendpointelement.md new file mode 100644 index 00000000000..8050350d006 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getchannelendpointelement.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.GetChannelEndpointElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ee75c333-2e63-4f26-ae73-14324f4d088a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.GetChannelEndpointElement +System.ServiceModel.GetChannelEndpointElement + +## 説明 + このトレースは、チャネル ファクトリを作成するときに情報レベルで出力されます。 このトレースには、クライアントが対話しているエンドポイントの説明 \(リモート アドレス、バインディング、コントラクト名など\) が表示されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getcommonbehaviors.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getcommonbehaviors.md new file mode 100644 index 00000000000..f336a7ab50a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getcommonbehaviors.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.GetCommonBehaviors | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 20f4013b-15fa-4fe7-b129-4ec4d231e479 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.GetCommonBehaviors +System.ServiceModel.GetCommonBehaviors + +## 説明 + Machine.config の共通の動作を取得します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getconfigurationsection.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getconfigurationsection.md new file mode 100644 index 00000000000..184b61f83b0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getconfigurationsection.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.GetConfigurationSection | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4872884d-4de9-4968-b703-380677830f0b +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.GetConfigurationSection +System.ServiceModel.GetConfigurationSection + +## 説明 + 構成セクションを取得します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getconfiguredbinding.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getconfiguredbinding.md new file mode 100644 index 00000000000..bc1d2fb469d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getconfiguredbinding.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.GetConfiguredBinding | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e4268f49-c0c9-410f-b175-173218a785bf +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.GetConfiguredBinding +System.ServiceModel.GetConfiguredBinding + +## 説明 + 構成済みバインディングを取得します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getdefaultconfiguredbinding.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getdefaultconfiguredbinding.md new file mode 100644 index 00000000000..13c2b26c4da --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getdefaultconfiguredbinding.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.GetDefaultConfiguredBinding | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: da8e6c84-38b1-4c3b-b619-baca34f31691 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.GetDefaultConfiguredBinding +System.ServiceModel.GetDefaultConfiguredBinding + +## 説明 + 既定で構成されたバインディングを取得します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getserviceelement.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getserviceelement.md new file mode 100644 index 00000000000..322e4dc11d3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-getserviceelement.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.GetServiceElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 80535b67-f196-467b-93aa-ea9de902a2e5 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.GetServiceElement +System.ServiceModel.GetServiceElement + +## 説明 + このトレースは、情報レベルでサービス ホストを作成するときに出力されます。サービス コントラクトとバインディングの説明が提供されます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-manualflowthrottlelimitreached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-manualflowthrottlelimitreached.md new file mode 100644 index 00000000000..16c08756869 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-manualflowthrottlelimitreached.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.ManualFlowThrottleLimitReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9aba851f-1830-493b-8e3e-60f454eb923e +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ManualFlowThrottleLimitReached +System.ServiceModel.ManualFlowThrottleLimitReached + +## 説明 + システムは ManualFlowControlLimit スロットルに設定された制限値に達しました。スロットル値を変更するには、ServiceHost または InstanceContext の ManualFlowControlLimit プロパティを適宜変更します。 + + このトレースは、マニュアル フロー制御制限が初めて 0 に減少したときに出力されます。それ以降は、0 に変更されてもトレースされません。インスタンス コンテキストに対するフロー制御制限は、コンテキストごとに 1 回トレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageclosed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageclosed.md new file mode 100644 index 00000000000..3b08e2e0ec7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageclosed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.MessageClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c05964fe-d43e-4387-b92e-03a7e5f934d6 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.MessageClosed +System.ServiceModel.MessageClosed + +## 説明 + メッセージが閉じられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageclosedagain.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageclosedagain.md new file mode 100644 index 00000000000..cdaa13e2a25 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageclosedagain.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.MessageClosedAgain | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 24c274d4-65cd-4c91-9869-bc6eb34ef979 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.MessageClosedAgain +System.ServiceModel.MessageClosedAgain + +## 説明 + メッセージがもう一度閉じられました。 + + メッセージを閉じることができるのは一度だけです。このトレースがユーザー拡張コード内で出力されている場合は、ユーザー拡張コードは既に閉じられているメッセージをさらに閉じようとしていることが示されています。このトレースが製品のコード内で出力されている場合は、ユーザー拡張コードがメッセージを閉じるのが早すぎる可能性があることが示されています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messagecopied.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messagecopied.md new file mode 100644 index 00000000000..36bcdf442d1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messagecopied.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.MessageCopied | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3fb1cfc2-de26-42a7-9fe9-c2a852e0e9c2 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.MessageCopied +System.ServiceModel.MessageCopied + +## 説明 + メッセージがコピーされました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageprocessingpaused.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageprocessingpaused.md new file mode 100644 index 00000000000..5ae6cab6651 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageprocessingpaused.md @@ -0,0 +1,36 @@ +--- +title: "System.ServiceModel.MessageProcessingPaused | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 36b5302a-93cc-478a-9bb2-8a1601fba1df +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.MessageProcessingPaused +System.ServiceModel.MessageProcessingPaused + +## 説明 + メッセージの処理中にスレッドが切り替わりました。 + + メッセージ処理は、次の理由によって一時停止することがあります。 + +- ConcurrencyMode が単一または再入可能で、サービスが別のメッセージを処理している。 + +- トランザクションが有効で、サービスが別のトランザクションを処理している。 + +- 同期コンテキストが最新ではない。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageread.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageread.md new file mode 100644 index 00000000000..27135096dc2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageread.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.MessageRead | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 57cd54c3-577e-4e2b-a852-0dae6f7eb52a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.MessageRead +System.ServiceModel.MessageRead + +## 説明 + メッセージが読み取られました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messagewritten.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messagewritten.md new file mode 100644 index 00000000000..4de5f803c7d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-messagewritten.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.MessageWritten | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5d8ce118-acdc-429c-ac89-34e943267c99 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.MessageWritten +System.ServiceModel.MessageWritten + +## 説明 + メッセージが書き込まれました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-metadataexchangeclientreceivereply.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-metadataexchangeclientreceivereply.md new file mode 100644 index 00000000000..7727a0f005c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-metadataexchangeclientreceivereply.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.MetadataExchangeClientReceiveReply | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 24edae24-8ced-43c4-948b-f400ba42b2a5 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.MetadataExchangeClientReceiveReply +System.ServiceModel.MetadataExchangeClientReceiveReply + +## 説明 + MetadataExchangeClient は応答を受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-metadataexchangeclientsendrequest.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-metadataexchangeclientsendrequest.md new file mode 100644 index 00000000000..6df415fb55d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-metadataexchangeclientsendrequest.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.MetadataExchangeClientSendRequest | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ba02fed9-331a-4aea-b5e1-fe16c7dd4ddd +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.MetadataExchangeClientSendRequest +System.ServiceModel.MetadataExchangeClientSendRequest + +## 説明 + MetadataExchangeClient はメタデータの要求を送信しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-overridingduplicateconfigurationkey.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-overridingduplicateconfigurationkey.md new file mode 100644 index 00000000000..2d2d25de26c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-overridingduplicateconfigurationkey.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.OverridingDuplicateConfigurationKey | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7d11700b-c035-467e-af02-686bca3b207a +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.OverridingDuplicateConfigurationKey +System.ServiceModel.OverridingDuplicateConfigurationKey + +## 説明 + 構成システムは別の構成範囲内で重複するキーを検出したため、新しい値でオーバーライドしています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecounterfailedtoload.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecounterfailedtoload.md new file mode 100644 index 00000000000..002001fcca8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecounterfailedtoload.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PerformanceCounterFailedToLoad | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 776ceeae-b0b7-4710-b9ce-592be610025b +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PerformanceCounterFailedToLoad +System.ServiceModel.PerformanceCounterFailedToLoad + +## 説明 + パフォーマンス カウンターを読み込むことができませんでした。一部のパフォーマンス カウンターは利用できません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailed.md new file mode 100644 index 00000000000..0c51533795b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PerformanceCountersFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3bf030f3-e218-4300-943f-03aaa7dfe2d3 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.PerformanceCountersFailed +System.ServiceModel.PerformanceCountersFailed + +## 説明 + 指定されたパフォーマンス カウンターを読み込むことができませんでした。一部のパフォーマンス カウンターは利用できません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedduringupdate.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedduringupdate.md new file mode 100644 index 00000000000..149d001efd5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedduringupdate.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PerformanceCountersFailedDuringUpdate | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a89ab9b8-4429-4df0-ab62-7db4c58684cc +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.PerformanceCountersFailedDuringUpdate +System.ServiceModel.PerformanceCountersFailedDuringUpdate + +## 説明 + 指定したパフォーマンス カウンターの更新中にエラーが発生しました。このパフォーマンス カウンターを無効にします。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedforservice.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedforservice.md new file mode 100644 index 00000000000..9064c8d28b5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedforservice.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PerformanceCountersFailedForService | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f194b0a5-96ff-4ec5-b8f8-1a25d059dc99 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PerformanceCountersFailedForService +System.ServiceModel.PerformanceCountersFailedForService + +## 説明 + サービス用のパフォーマンス カウンターの読み込みが失敗しました。 このサービスではパフォーマンス カウンターを使用できません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedonrelease.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedonrelease.md new file mode 100644 index 00000000000..9566a320a48 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedonrelease.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PerformanceCountersFailedOnRelease | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ec1a7bb1-c787-45ec-8292-73d104f3d7bb +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PerformanceCountersFailedOnRelease +System.ServiceModel.PerformanceCountersFailedOnRelease + +## 説明 + パフォーマンス カウンターのアンロードに失敗しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingclosed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingclosed.md new file mode 100644 index 00000000000..f07d9e848fa --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingclosed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.PortSharingClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8f93c5b3-d56c-412f-9c26-68da85f4bd92 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.PortSharingClosed +System.ServiceModel.PortSharing.PortSharingClosed + +## 説明 + TransportManager は正常に終了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduphandlegranted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduphandlegranted.md new file mode 100644 index 00000000000..60f5da2a26e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduphandlegranted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.PortSharingDupHandleGranted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dde8a393-f31a-4e6d-b483-001b389e2df9 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.PortSharing.PortSharingDupHandleGranted +System.ServiceModel.PortSharing.PortSharingDupHandleGranted + +## 説明 + 指定した SID を持つ特定のサービスのアカウントに、PROCESS\_DUP\_HANDLE アクセス権が与えられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduplicatedpipe.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduplicatedpipe.md new file mode 100644 index 00000000000..420ea6303db --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduplicatedpipe.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.PortSharingDuplicatedPipe | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cc53c0a0-62e0-4295-be0b-a1df6966ecea +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.PortSharingDuplicatedPipe +System.ServiceModel.PortSharing.PortSharingDuplicatedPipe + +## 説明 + 名前付きパイプが正常に複製されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduplicatedsocket.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduplicatedsocket.md new file mode 100644 index 00000000000..341bb5b4729 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduplicatedsocket.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.PortSharingDuplicatedSocket | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7fd7a35d-3ade-44c2-b40e-2236c3ff18c5 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.PortSharingDuplicatedSocket +System.ServiceModel.PortSharing.PortSharingDuplicatedSocket + +## 説明 + ソケットが正常に複製されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharinglistening.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharinglistening.md new file mode 100644 index 00000000000..081e647eb01 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharinglistening.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.PortSharingListening | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 05528126-de72-4801-93ab-397f3c32b809 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.PortSharingListening +System.ServiceModel.PortSharing.PortSharingListening + +## 説明 + TransportManager は現在、正常に待機しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-readnetpipeconfig.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-readnetpipeconfig.md new file mode 100644 index 00000000000..df11a1f2a65 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-readnetpipeconfig.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.ReadNetPipeConfig | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a782f971-0195-4bad-a151-55d35656ae86 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.PortSharing.ReadNetPipeConfig +System.ServiceModel.PortSharing.ReadNetPipeConfig + +## 説明 + 指定したデータ \(maxConnectionsPendingDispatch、maxPendingAccepts、および receiveTimeout\) を使用して、NetPipeSection の構成データを読み取りました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-readnettcpconfig.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-readnettcpconfig.md new file mode 100644 index 00000000000..5408cbbe940 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-readnettcpconfig.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.ReadNetTcpConfig | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c0d3350f-9d70-4529-a958-eb56a277e401 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.PortSharing.ReadNetTcpConfig +System.ServiceModel.PortSharing.ReadNetTcpConfig + +## 説明 + 指定したデータ \(listenBacklog、maxConnectionsPendingDispatch、maxPendingAccepts、receiveTimeout、および teredoEnabled\) を使用して、NetTcpSection の構成データを読み取りました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablecannotlisten.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablecannotlisten.md new file mode 100644 index 00000000000..aaecd824ad2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablecannotlisten.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.RoutingTableCannotListen | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4c2632b1-ea67-4feb-88f9-d00874842eb9 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.RoutingTableCannotListen +System.ServiceModel.PortSharing.RoutingTableCannotListen + +## 説明 + ルーティング テーブルをリッスンできません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablelookup.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablelookup.md new file mode 100644 index 00000000000..bc961e29fcc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablelookup.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.RoutingTableLookup | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 51788083-310c-4c36-a9a1-f1089a1e2687 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.RoutingTableLookup +System.ServiceModel.PortSharing.RoutingTableLookup + +## 説明 + 検索操作が要求されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablenamespaceconflict.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablenamespaceconflict.md new file mode 100644 index 00000000000..0eb51c46e1f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablenamespaceconflict.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.RoutingTableNamespaceConflict | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5698b658-211b-4c92-b052-2dba57315551 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.RoutingTableNamespaceConflict +System.ServiceModel.PortSharing.RoutingTableNamespaceConflict + +## 説明 + 名前空間は既に登録されています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablepathtoolong.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablepathtoolong.md new file mode 100644 index 00000000000..272727a0dbd --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablepathtoolong.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.RoutingTablePathTooLong | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6e4a9c78-c753-469c-93c4-c3a391dc2a11 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.RoutingTablePathTooLong +System.ServiceModel.PortSharing.RoutingTablePathTooLong + +## 説明 + 名前空間が長すぎます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtableregistersuccess.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtableregistersuccess.md new file mode 100644 index 00000000000..c7abacd8132 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtableregistersuccess.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.RoutingTableRegisterSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7f9441ce-5f4a-4080-9be5-c3c08a87bb21 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.RoutingTableRegisterSuccess +System.ServiceModel.PortSharing.RoutingTableRegisterSuccess + +## 説明 + 名前空間は正常に登録されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtableunsupportedprotocol.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtableunsupportedprotocol.md new file mode 100644 index 00000000000..f00a0d8c900 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtableunsupportedprotocol.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.RoutingTableUnsupportedProtocol | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bcdb34f1-e9b1-4f04-8403-325c3385d86d +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.RoutingTableUnsupportedProtocol +System.ServiceModel.PortSharing.RoutingTableUnsupportedProtocol + +## 説明 + プロトコルがサポートされていません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-sharedmanagerserviceendpointnotexist.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-sharedmanagerserviceendpointnotexist.md new file mode 100644 index 00000000000..baf8c98ffe7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-sharedmanagerserviceendpointnotexist.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.SharedManagerServiceEndpointNotExist | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2f9638ec-620c-477b-a6fc-2228aea1f875 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.PortSharing.SharedManagerServiceEndpointNotExist +System.ServiceModel.PortSharing.SharedManagerServiceEndpointNotExist + +## 説明 + 指定されたサービスのエンドポイントの共有メモリが存在しません。このサービスを開始できません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerlistening.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerlistening.md new file mode 100644 index 00000000000..fb47d7026b4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerlistening.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.TransportListenerListening | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 89c9a692-4a42-4704-b0dd-c4c5f78498b1 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.TransportListenerListening +System.ServiceModel.PortSharing.TransportListenerListening + +## 説明 + TransportListener はリッスン中です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerlistenrequest.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerlistenrequest.md new file mode 100644 index 00000000000..26be4e8aa3a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerlistenrequest.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.TransportListenerListenRequest | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6b72086d-a047-4316-854e-2c210d3d52fe +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.TransportListenerListenRequest +System.ServiceModel.PortSharing.TransportListenerListenRequest + +## 説明 + TransportListener はリッスンを開始します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenersessionsreceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenersessionsreceived.md new file mode 100644 index 00000000000..bf8b3d99aa0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenersessionsreceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.TransportListenerSessionsReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e7a1aca3-7585-4e83-be9e-c2010424647e +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.TransportListenerSessionsReceived +System.ServiceModel.PortSharing.TransportListenerSessionsReceived + +## 説明 + TransportListener がセッションを受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerstop.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerstop.md new file mode 100644 index 00000000000..c98c20545bb --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerstop.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.TransportListenerStop | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7404a8e8-55c2-4b48-943d-a5df22ae79f9 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.TransportListenerStop +System.ServiceModel.PortSharing.TransportListenerStop + +## 説明 + TransportListener はリッスンを停止します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-wasclosealllistenerchannelinstances.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-wasclosealllistenerchannelinstances.md new file mode 100644 index 00000000000..ed241db34c1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-wasclosealllistenerchannelinstances.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.WasCloseAllListenerChannelInstances | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 25c502de-e7d9-4838-bc7e-3ac4fa64dfad +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.WasCloseAllListenerChannelInstances +System.ServiceModel.PortSharing.WasCloseAllListenerChannelInstances + +## 説明 + Windows プロセス アクティブ化サービス \(WAS\) を使用するリスナー チャネルのインスタンスをすべて閉じます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-wasconnected.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-wasconnected.md new file mode 100644 index 00000000000..05f06b71c29 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-wasconnected.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.WasConnected | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8af0f73f-3718-4dc8-93f4-638e2465da21 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.PortSharing.WasConnected +System.ServiceModel.PortSharing.WasConnected + +## 説明 + Windows プロセス アクティブ化サービス \(WAS\) の接続が確立されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-waswebhostapifailed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-waswebhostapifailed.md new file mode 100644 index 00000000000..80cac86e712 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-waswebhostapifailed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.PortSharing.WasWebHostAPIFailed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 31a3ed07-16dc-4aa2-8cd7-6974ef75432b +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.PortSharing.WasWebHostAPIFailed +System.ServiceModel.PortSharing.WasWebHostAPIFailed + +## 説明 + 指定された Windows プロセス アクティブ化サービス \(WAS\) API の呼び出しが、指定されたエラー コードで失敗しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-removebehavior.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-removebehavior.md new file mode 100644 index 00000000000..5fb0790f5ae --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-removebehavior.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.RemoveBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb64042c-0b07-47b9-a8b7-bd0c06c057e3 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.RemoveBehavior +System.ServiceModel.RemoveBehavior + +## 説明 + この動作型は既にコレクション内にあります。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-exportsecuritychannelbindingentry.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-exportsecuritychannelbindingentry.md new file mode 100644 index 00000000000..c8b1cfdaad9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-exportsecuritychannelbindingentry.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.ExportSecurityChannelBindingEntry | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 043bad66-0a09-47c2-ae90-d1f225f52a24 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.ExportSecurityChannelBindingEntry +System.ServiceModel.Security.ExportSecurityChannelBindingEntry + +## 説明 + セキュリティの ExportChannelBinding を開始しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-exportsecuritychannelbindingexit.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-exportsecuritychannelbindingexit.md new file mode 100644 index 00000000000..6ece1465643 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-exportsecuritychannelbindingexit.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.ExportSecurityChannelBindingExit | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 714a8f4d-a297-4f1c-b9df-d97115a1d82a +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.ExportSecurityChannelBindingExit +System.ServiceModel.Security.ExportSecurityChannelBindingExit + +## 説明 + セキュリティの ExportChannelBinding を終了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-importsecuritychannelbindingentry.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-importsecuritychannelbindingentry.md new file mode 100644 index 00000000000..8da34acd198 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-importsecuritychannelbindingentry.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.ImportSecurityChannelBindingEntry | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 167e4485-3595-43a9-a342-674cd6a35daa +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.ImportSecurityChannelBindingEntry +System.ServiceModel.Security.ImportSecurityChannelBindingEntry + +## 説明 + セキュリティの ImportChannelBinding を開始しています。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-importsecuritychannelbindingexit.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-importsecuritychannelbindingexit.md new file mode 100644 index 00000000000..977afb4effb --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-importsecuritychannelbindingexit.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.ImportSecurityChannelBindingExit | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a174db12-23e4-49ec-b8b3-40ca7b2c1ba1 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.ImportSecurityChannelBindingExit +System.ServiceModel.Security.ImportSecurityChannelBindingExit + +## 説明 + セキュリティの ImportChannelBinding を終了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderbeginsecuritynegotiation.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderbeginsecuritynegotiation.md new file mode 100644 index 00000000000..657a3c85f85 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderbeginsecuritynegotiation.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.IssuanceTokenProviderBeginSecurityNegotiation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fc7a8357-4993-4488-9e4a-e544fbd45e3d +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.IssuanceTokenProviderBeginSecurityNegotiation +System.ServiceModel.Security.IssuanceTokenProviderBeginSecurityNegotiation + +## 説明 + IssuanceTokenProvider が新しいセキュリティ ネゴシエーションを開始しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderendsecuritynegotiation.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderendsecuritynegotiation.md new file mode 100644 index 00000000000..f0d5546f8d8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderendsecuritynegotiation.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.IssuanceTokenProviderEndSecurityNegotiation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 44a0b49e-fbd7-4649-a29a-1d1a6cd36a90 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.IssuanceTokenProviderEndSecurityNegotiation +System.ServiceModel.Security.IssuanceTokenProviderEndSecurityNegotiation + +## 説明 + IssuanceTokenProvider はセキュリティ ネゴシエーションを完了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderredirectapplied.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderredirectapplied.md new file mode 100644 index 00000000000..c5c7d4d0512 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderredirectapplied.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.IssuanceTokenProviderRedirectApplied | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d69e50dc-f7d5-423d-9a1c-a23d558e78af +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.IssuanceTokenProviderRedirectApplied +System.ServiceModel.Security.IssuanceTokenProviderRedirectApplied + +## 説明 + リダイレクト ヘッダーを適用された IssuanceTokenProvider。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderremovedcachedtoken.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderremovedcachedtoken.md new file mode 100644 index 00000000000..57fe8b4f725 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderremovedcachedtoken.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.IssuanceTokenProviderRemovedCachedToken | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aeb403d4-a473-4ffc-b978-17f89d8d2592 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.IssuanceTokenProviderRemovedCachedToken +System.ServiceModel.Security.IssuanceTokenProviderRemovedCachedToken + +## 説明 + IssuanceTokenProvider は期限切れのサービス トークンを削除しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderservicetokencachefull.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderservicetokencachefull.md new file mode 100644 index 00000000000..afd13d465d4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderservicetokencachefull.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.IssuanceTokenProviderServiceTokenCacheFull | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 58658b3f-c0f1-47e2-bf61-2c786e7b62b1 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.IssuanceTokenProviderServiceTokenCacheFull +System.ServiceModel.Security.IssuanceTokenProviderServiceTokenCacheFull + +## 説明 + IssuanceTokenProviderServiceToken キャッシュがいっぱいです。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderusingcachedtoken.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderusingcachedtoken.md new file mode 100644 index 00000000000..259e2519716 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderusingcachedtoken.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.IssuanceTokenProviderUsingCachedToken | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ee51ed4e-821c-4010-8d64-eabde522169f +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.IssuanceTokenProviderUsingCachedToken +System.ServiceModel.Security.IssuanceTokenProviderUsingCachedToken + +## 説明 + IssuanceTokenProvider はキャッシュされたサービス トークンを使用しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-negotiationauthenticatorattached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-negotiationauthenticatorattached.md new file mode 100644 index 00000000000..8527c9dfee7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-negotiationauthenticatorattached.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.NegotiationAuthenticatorAttached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 20a289a5-6450-46dd-bb83-c394379b857b +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# System.ServiceModel.Security.NegotiationAuthenticatorAttached +System.ServiceModel.Security.NegotiationAuthenticatorAttached + +## 説明 + NegotiationTokenAuthenticator が割り当てられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-negotiationtokenproviderattached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-negotiationtokenproviderattached.md new file mode 100644 index 00000000000..fd9a11ef413 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-negotiationtokenproviderattached.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.NegotiationTokenProviderAttached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f5602e5e-aaaf-42ca-9afc-d2c699447db7 +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# System.ServiceModel.Security.NegotiationTokenProviderAttached +System.ServiceModel.Security.NegotiationTokenProviderAttached + +## 説明 + NegotiationTokenProvider が割り当てられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityactiveserversessionremoved.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityactiveserversessionremoved.md new file mode 100644 index 00000000000..90841aeec01 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityactiveserversessionremoved.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityActiveServerSessionRemoved | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f62789ea-d455-43f5-ab6c-21588184b528 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityActiveServerSessionRemoved +System.ServiceModel.Security.SecurityActiveServerSessionRemoved + +## 説明 + アクティブなセキュリティ セッションはサーバー側で削除されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityauditwrittenfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityauditwrittenfailure.md new file mode 100644 index 00000000000..089ecc07b62 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityauditwrittenfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityAuditWrittenFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f8740d0d-753a-490e-b1b8-dfa352ec25b5 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityAuditWrittenFailure +System.ServiceModel.Security.SecurityAuditWrittenFailure + +## 説明 + セキュリティの監査ログへの書き込み時にエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityauditwrittensuccess.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityauditwrittensuccess.md new file mode 100644 index 00000000000..0c4ac61d2ee --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityauditwrittensuccess.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityAuditWrittenSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1a8bcf46-54ee-460c-ae7f-64bead28ff64 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityAuditWrittenSuccess +System.ServiceModel.Security.SecurityAuditWrittenSuccess + +## 説明 + セキュリティ監査ログが正常に書き込まれました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingincomingmessageverified.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingincomingmessageverified.md new file mode 100644 index 00000000000..d438b6a951b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingincomingmessageverified.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityBindingIncomingMessageVerified | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 40fc744e-8d6f-49e0-a5fd-4f9a31cc0ed7 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityBindingIncomingMessageVerified +System.ServiceModel.Security.SecurityBindingIncomingMessageVerified + +## 説明 + セキュリティ プロトコルは受信メッセージを確認しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingoutgoingmessagesecured.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingoutgoingmessagesecured.md new file mode 100644 index 00000000000..061f6a68650 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingoutgoingmessagesecured.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityBindingOutgoingMessageSecured | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5b6cd812-63ba-4614-89f1-3c31d7540c5d +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityBindingOutgoingMessageSecured +System.ServiceModel.Security.SecurityBindingOutgoingMessageSecured + +## 説明 + セキュリティ プロトコルは送信メッセージをセキュリティで保護しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingsecureoutgoingmessagefailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingsecureoutgoingmessagefailure.md new file mode 100644 index 00000000000..4b1a65d4632 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingsecureoutgoingmessagefailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityBindingSecureOutgoingMessageFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb46c07b-f824-43fd-892c-bca4f68a8866 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityBindingSecureOutgoingMessageFailure +System.ServiceModel.Security.SecurityBindingSecureOutgoingMessageFailure + +## 説明 + セキュリティ プロトコルでは送信メッセージをセキュリティで保護することはできません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingverifyincomingmessagefailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingverifyincomingmessagefailure.md new file mode 100644 index 00000000000..3b9763880a4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingverifyincomingmessagefailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityBindingVerifyIncomingMessageFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a4447ad6-7f41-47ef-bdd1-8b4a908e156f +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityBindingVerifyIncomingMessageFailure +System.ServiceModel.Security.SecurityBindingVerifyIncomingMessageFailure + +## 説明 + セキュリティ プロトコルにより受信メッセージを検証できません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionclosemessagereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionclosemessagereceived.md new file mode 100644 index 00000000000..fd2680afe3d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionclosemessagereceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityClientSessionCloseMessageReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2be97eac-798a-48bc-bba8-a8753a28aeb7 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityClientSessionCloseMessageReceived +System.ServiceModel.Security.SecurityClientSessionCloseMessageReceived + +## 説明 + クライアントのセキュリティ セッションによって終了メッセージが受信されました。TraceCodeSecurityClientSessionKeyRenewed\=Clientセキュリティ セッションはセッション キーを更新しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessioncloseresponsesent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessioncloseresponsesent.md new file mode 100644 index 00000000000..49b968ac184 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessioncloseresponsesent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityClientSessionCloseResponseSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c2912479-0012-4eba-b677-561f0a5e13cd +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityClientSessionCloseResponseSent +System.ServiceModel.Security.SecurityClientSessionCloseResponseSent + +## 説明 + クライアントのセキュリティ セッションが終了応答メッセージを送信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionclosesent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionclosesent.md new file mode 100644 index 00000000000..2e19cbd891d --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionclosesent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityClientSessionCloseSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6933e77d-ac9b-47cc-bc07-95f957d2299f +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityClientSessionCloseSent +System.ServiceModel.Security.SecurityClientSessionCloseSent + +## 説明 + クライアントのセキュリティ セッションが Close メッセージを送信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionkeyrenewed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionkeyrenewed.md new file mode 100644 index 00000000000..d2e44c580c8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionkeyrenewed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityClientSessionKeyRenewed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c99048ee-062b-4b21-bb9b-77c465a318c6 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityClientSessionKeyRenewed +System.ServiceModel.Security.SecurityClientSessionKeyRenewed + +## 説明 + クライアントのセキュリティ セッションはセッション キーを更新しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionpreviouskeydiscarded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionpreviouskeydiscarded.md new file mode 100644 index 00000000000..3829bf137c8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionpreviouskeydiscarded.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityClientSessionPreviousKeyDiscarded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 339f0e2a-452b-43eb-9f6d-f48ceb1414f3 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityClientSessionPreviousKeyDiscarded +System.ServiceModel.Security.SecurityClientSessionPreviousKeyDiscarded + +## 説明 + クライアントのセキュリティ セッションは直前のセッション キーを破棄しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitycontexttokencachefull.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitycontexttokencachefull.md new file mode 100644 index 00000000000..67a80b44e4c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitycontexttokencachefull.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityContextTokenCacheFull | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 45e53edb-29ff-4729-a6c1-57ede0da1d00 +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# System.ServiceModel.Security.SecurityContextTokenCacheFull +System.ServiceModel.Security.SecurityContextTokenCacheFull + +## 説明 + セキュリティ コンテキスト トークン キャッシュがいっぱいです。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentitydeterminationfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentitydeterminationfailure.md new file mode 100644 index 00000000000..11b50dc1b33 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentitydeterminationfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityIdentityDeterminationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bc5446e2-86f4-4d17-8ecc-4304b0fde7ec +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# System.ServiceModel.Security.SecurityIdentityDeterminationFailure +System.ServiceModel.Security.SecurityIdentityDeterminationFailure + +## 説明 + EndpointAddress に対して ID を判別できませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentitydeterminationsuccess.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentitydeterminationsuccess.md new file mode 100644 index 00000000000..caabed686f2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentitydeterminationsuccess.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityIdentityDeterminationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cee8df47-b568-44e3-aeff-e74618326093 +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# System.ServiceModel.Security.SecurityIdentityDeterminationSuccess +System.ServiceModel.Security.SecurityIdentityDeterminationSuccess + +## 説明 + ID は EndpointAddress で決定されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityhostnamenormalizationfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityhostnamenormalizationfailure.md new file mode 100644 index 00000000000..f1964842508 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityhostnamenormalizationfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityIdentityHostNameNormalizationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ffe115e1-39de-4fc7-88f9-6cf55de29597 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityIdentityHostNameNormalizationFailure +System.ServiceModel.Security.SecurityIdentityHostNameNormalizationFailure + +## 説明 + エンドポイント アドレスの HostName 部分は標準化できません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityverificationfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityverificationfailure.md new file mode 100644 index 00000000000..4478faa7d9f --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityverificationfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityIdentityVerificationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fb5d6341-6ae3-45db-a4ab-f87cf3219db4 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityIdentityVerificationFailure +System.ServiceModel.Security.SecurityIdentityVerificationFailure + +## 説明 + ID の検査が失敗しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityverificationsuccess.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityverificationsuccess.md new file mode 100644 index 00000000000..2b458f990d6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityverificationsuccess.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityIdentityVerificationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6744ac2f-4944-421d-9a17-bcc64f0f3d2f +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityIdentityVerificationSuccess +System.ServiceModel.Security.SecurityIdentityVerificationSuccess + +## 説明 + ID の検査が成功しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityimpersonationfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityimpersonationfailure.md new file mode 100644 index 00000000000..99cd79cbd67 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityimpersonationfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityImpersonationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e0e61834-72ac-4a58-af32-94e3206a9369 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityImpersonationFailure +System.ServiceModel.Security.SecurityImpersonationFailure + +## 説明 + サーバー側でセキュリティの偽装が失敗しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityimpersonationsuccess.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityimpersonationsuccess.md new file mode 100644 index 00000000000..a82e8feb997 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityimpersonationsuccess.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityImpersonationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e344c7a9-baae-4ffc-a851-85d2e8571d83 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityImpersonationSuccess +System.ServiceModel.Security.SecurityImpersonationSuccess + +## 説明 + サーバー側でセキュリティの偽装が成功しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityinactivesessionfaulted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityinactivesessionfaulted.md new file mode 100644 index 00000000000..1db1ac09175 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityinactivesessionfaulted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityInactiveSessionFaulted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 66016fd0-bdaf-48c9-9922-629c30b5fc54 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityInactiveSessionFaulted +System.ServiceModel.Security.SecurityInactiveSessionFaulted + +## 説明 + アクティブでないセキュリティ セッションはサーバー側でエラーとなりました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitynegotiationprocessingfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitynegotiationprocessingfailure.md new file mode 100644 index 00000000000..ee9c89e4763 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitynegotiationprocessingfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityNegotiationProcessingFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 12185f75-c86b-4006-afd7-5be308647dcc +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# System.ServiceModel.Security.SecurityNegotiationProcessingFailure +System.ServiceModel.Security.SecurityNegotiationProcessingFailure + +## 説明 + サービス セキュリティ ネゴシエーション処理が失敗しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitynewserversessionkeyissued.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitynewserversessionkeyissued.md new file mode 100644 index 00000000000..ebf90fc9bb9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitynewserversessionkeyissued.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityNewServerSessionKeyIssued | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2fccc492-61ea-45a8-8f1b-be65dedc5e46 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityNewServerSessionKeyIssued +System.ServiceModel.Security.SecurityNewServerSessionKeyIssued + +## 説明 + 新しいセキュリティのセッション キーがサーバーによって発行されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionactivated.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionactivated.md new file mode 100644 index 00000000000..a15dce92852 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionactivated.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityPendingServerSessionActivated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8bdbb502-2c3b-457a-8240-5787b0f83322 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityPendingServerSessionActivated +System.ServiceModel.Security.SecurityPendingServerSessionActivated + +## 説明 + 保留中のセキュリティ セッションがサーバーによりアクティブになりました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionadded.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionadded.md new file mode 100644 index 00000000000..f3fd654a199 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionadded.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityPendingServerSessionAdded | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 15d15f57-1482-419b-b841-fff7318b69d8 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityPendingServerSessionAdded +System.ServiceModel.Security.SecurityPendingServerSessionAdded + +## 説明 + 保留中のセキュリティ セッションがサーバーに追加されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionclosed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionclosed.md new file mode 100644 index 00000000000..0534ad06a2b --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionclosed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityPendingServerSessionClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1fa7098b-1724-4524-ad91-be7592951f69 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityPendingServerSessionClosed +System.ServiceModel.Security.SecurityPendingServerSessionClosed + +## 説明 + 保留中のセキュリティ セッションはサーバーによって閉じられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionabortedfaultsent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionabortedfaultsent.md new file mode 100644 index 00000000000..e94322df076 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionabortedfaultsent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityServerSessionAbortedFaultSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a27f4243-2b80-44da-bb79-674912395d93 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityServerSessionAbortedFaultSent +System.ServiceModel.Security.SecurityServerSessionAbortedFaultSent + +## 説明 + サーバーのセキュリティ セッションは、セッション中止エラーをクライアントに送信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionclosereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionclosereceived.md new file mode 100644 index 00000000000..44fe2ac47f1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionclosereceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityServerSessionCloseReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1260f9e8-78d9-4ccf-9912-3189ff5951e0 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityServerSessionCloseReceived +System.ServiceModel.Security.SecurityServerSessionCloseResponseReceived + +## 説明 + サーバーのセキュリティ セッションはクライアントから終了応答メッセージを受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessioncloseresponsereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessioncloseresponsereceived.md new file mode 100644 index 00000000000..2f96b02e500 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessioncloseresponsereceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityServerSessionCloseResponseReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 899d663e-6a6d-49e9-9480-182b6860ae17 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityServerSessionCloseResponseReceived +System.ServiceModel.Security.SecurityServerSessionCloseReceived + +## 説明 + サーバーのセキュリティ セッションでクライアントからの終了メッセージを受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionkeyupdated.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionkeyupdated.md new file mode 100644 index 00000000000..22c92678d5a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionkeyupdated.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityServerSessionKeyUpdated | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2740a8e1-b775-464f-8ef4-6c44640285a0 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityServerSessionKeyUpdated +System.ServiceModel.Security.SecurityServerSessionKeyUpdated + +## 説明 + セキュリティ セッション キーはサーバーによって更新されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionrenewalfaultsent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionrenewalfaultsent.md new file mode 100644 index 00000000000..4d949f561cc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionrenewalfaultsent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityServerSessionRenewalFaultSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dc6379dd-a15d-4063-9939-a2edd08cfdcb +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityServerSessionRenewalFaultSent +System.ServiceModel.Security.SecurityServerSessionRenewalFaultSent + +## 説明 + サーバーのセキュリティ セッションはクライアントにキーの更新エラーを送信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionabortedfaultreceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionabortedfaultreceived.md new file mode 100644 index 00000000000..fe79df2148c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionabortedfaultreceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionAbortedFaultReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a6c27cbf-30c0-4f8b-ad21-0e4e25e5fc7a +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionAbortedFaultReceived +System.ServiceModel.Security.SecuritySessionAbortedFaultReceived + +## 説明 + クライアント セキュリティ セッションによって、サーバーからのセッション中止エラーが受信されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionabortedfaultsendfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionabortedfaultsendfailure.md new file mode 100644 index 00000000000..a6657c60af2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionabortedfaultsendfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionAbortedFaultSendFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7dc1a319-0978-46ed-b2ef-1de2317e7e2d +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# System.ServiceModel.Security.SecuritySessionAbortedFaultSendFailure +System.ServiceModel.Security.SecuritySessionAbortedFaultSendFailure + +## 説明 + セキュリティ セッション中止エラーをクライアントに送信しているときにエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionclosedresponsereceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionclosedresponsereceived.md new file mode 100644 index 00000000000..993c3d63134 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionclosedresponsereceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionClosedResponseReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aab624cb-30c6-4ac4-9dea-5ea03b5a4917 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionClosedResponseReceived +System.ServiceModel.Security.SecuritySessionClosedResponseReceived + +## 説明 + クライアントのセキュリティ セッションはサーバーから "closed" 応答を受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionclosedresponsesendfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionclosedresponsesendfailure.md new file mode 100644 index 00000000000..c5c13b60c92 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionclosedresponsesendfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionClosedResponseSendFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 214e88fe-0476-4604-bca6-1b2f25fe1194 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionClosedResponseSendFailure +System.ServiceModel.Security.SecuritySessionClosedResponseSendFailure + +## 説明 + セキュリティ セッションの Close 応答をクライアントに送信中、エラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessioncloseresponsesent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessioncloseresponsesent.md new file mode 100644 index 00000000000..4addf481c4e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessioncloseresponsesent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionCloseResponseSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 501defc3-d110-46ea-86d7-3563c35830f0 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionCloseResponseSent +System.ServiceModel.Security.SecuritySessionCloseResponseSent + +## 説明 + サーバーのセキュリティ セッションでクライアントに終了応答が送信されました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessiondemuxfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessiondemuxfailure.md new file mode 100644 index 00000000000..81067eb1276 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessiondemuxfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionDemuxFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 74b89d9a-22be-4799-b9fb-e3dfa5426dec +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionDemuxFailure +System.ServiceModel.Security.SecuritySessionDemuxFailure + +## 説明 + 受信メッセージは既存のセキュリティ セッションの一部ではありません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionkeyrenewalfaultreceived.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionkeyrenewalfaultreceived.md new file mode 100644 index 00000000000..7e1a895881e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionkeyrenewalfaultreceived.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionKeyRenewalFaultReceived | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 857542f7-adcb-4769-bf4e-a85b87e58dc8 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionKeyRenewalFaultReceived +System.ServiceModel.Security.SecuritySessionKeyRenewalFaultReceived + +## 説明 + クライアントのセキュリティ セッションはサーバーからキーの更新エラーを受信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionredirectapplied.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionredirectapplied.md new file mode 100644 index 00000000000..8ebac7da927 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionredirectapplied.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionRedirectApplied | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b22736bc-61a3-47c7-8c13-e02e9f6848ef +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionRedirectApplied +System.ServiceModel.Security.SecuritySessionRedirectApplied + +## 説明 + クライアントのセキュリティ セッションがリダイレクトされました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrenewfaultsendfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrenewfaultsendfailure.md new file mode 100644 index 00000000000..faf1143f82e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrenewfaultsendfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionRenewFaultSendFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e29894f8-d514-45eb-9104-b813a5cab98c +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionRenewFaultSendFailure +System.ServiceModel.Security.SecuritySessionRenewFaultSendFailure + +## 説明 + セキュリティ セッション キーの更新エラーをクライアントに送信中にエラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrequestoroperationfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrequestoroperationfailure.md new file mode 100644 index 00000000000..78466eca6bf --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrequestoroperationfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionRequestorOperationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c3ebb7b2-ed30-4e8c-99dc-b79d37a7e3fb +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionRequestorOperationFailure +System.ServiceModel.Security.SecuritySessionRequestorOperationFailure + +## 説明 + クライアントのセキュリティ セッションの操作が失敗しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrequestoroperationsuccess.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrequestoroperationsuccess.md new file mode 100644 index 00000000000..bf369b27eee --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrequestoroperationsuccess.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionRequestorOperationSuccess | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 33093589-731c-4ca0-8d79-cc4628794e62 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionRequestorOperationSuccess +System.ServiceModel.Security.SecuritySessionRequestorOperationSuccess + +## 説明 + セキュリティ セッションの操作がクライアントで正常に完了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionresponderoperationfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionresponderoperationfailure.md new file mode 100644 index 00000000000..116fdb67cdc --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionresponderoperationfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionResponderOperationFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9ab20767-dac5-49fc-8bff-108bb7b84c87 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionResponderOperationFailure +System.ServiceModel.Security.SecuritySessionResponderOperationFailure + +## 説明 + セキュリティ セッションの操作がサーバーで失敗しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionserverclosesendfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionserverclosesendfailure.md new file mode 100644 index 00000000000..b658a02e1d0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionserverclosesendfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionServerCloseSendFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b848eeeb-07d6-4f2d-a14a-e62ee1968dfa +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionServerCloseSendFailure +System.ServiceModel.Security.SecuritySessionServerCloseSendFailure + +## 説明 + セキュリティ セッションの Close をクライアントに送信中、エラーが発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionserverclosesent.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionserverclosesent.md new file mode 100644 index 00000000000..902ab53888a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionserverclosesent.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySessionServerCloseSent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 712716fd-6c89-4dea-9398-d2c5b30f6563 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySessionServerCloseSent +System.ServiceModel.Security.SecuritySessionServerCloseSent + +## 説明 + サーバーのセキュリティ セッションは、クライアントに Close を送信しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityspntosidmappingfailure.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityspntosidmappingfailure.md new file mode 100644 index 00000000000..0c0dac5d328 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityspntosidmappingfailure.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecuritySpnToSidMappingFailure | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 45c658a9-7dcb-42a9-9bd0-e2a06a2a00b6 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecuritySpnToSidMappingFailure +System.ServiceModel.Security.SecuritySpnToSidMappingFailure + +## 説明 + ServicePrincipalName を SecurityIdentifier にマップできませんでした。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenauthenticatorclosed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenauthenticatorclosed.md new file mode 100644 index 00000000000..9def1b13568 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenauthenticatorclosed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityTokenAuthenticatorClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a05b9c68-b83b-4526-b0ef-226f5991569e +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityTokenAuthenticatorClosed +System.ServiceModel.Security.SecurityTokenAuthenticatorClosed + +## 説明 + セキュリティ トークン認証システムが閉じられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenauthenticatoropened.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenauthenticatoropened.md new file mode 100644 index 00000000000..6480d5f90fe --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenauthenticatoropened.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityTokenAuthenticatorOpened | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c6cb0065-b4f6-40eb-89ac-5e8f0e05e0de +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityTokenAuthenticatorOpened +System.ServiceModel.Security.SecurityTokenAuthenticatorOpened + +## 説明 + セキュリティ トークンの認証システムを開きました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenproviderclosed.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenproviderclosed.md new file mode 100644 index 00000000000..b52e5ebef7a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenproviderclosed.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityTokenProviderClosed | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 978c76b9-a9c8-435f-847d-0503e78dde50 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityTokenProviderClosed +System.ServiceModel.Security.SecurityTokenProviderClosed + +## 説明 + セキュリティ トークン プロバイダーが閉じられました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenprovideropened.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenprovideropened.md new file mode 100644 index 00000000000..b59d4895425 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenprovideropened.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SecurityTokenProviderOpened | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b8222922-35d9-4361-8bc0-d360164a9266 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SecurityTokenProviderOpened +System.ServiceModel.Security.SecurityTokenProviderOpened + +## 説明 + セキュリティ トークン プロバイダーを開きました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-servicesecuritynegotiationcompleted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-servicesecuritynegotiationcompleted.md new file mode 100644 index 00000000000..750b582b311 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-servicesecuritynegotiationcompleted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.ServiceSecurityNegotiationCompleted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c43d2d67-8b9b-4a2b-b0cd-ceab8ad38141 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.ServiceSecurityNegotiationCompleted +System.ServiceModel.Security.ServiceSecurityNegotiationCompleted + +## 説明 + サービス セキュリティ ネゴシエーションが完了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-spnegoclientnegotiationcompleted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-spnegoclientnegotiationcompleted.md new file mode 100644 index 00000000000..17c3e3c4db9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-spnegoclientnegotiationcompleted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SpnegoClientNegotiationCompleted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e80b1390-bb37-46aa-ab91-4ed187b2e09d +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SpnegoClientNegotiationCompleted +System.ServiceModel.Security.SpnegoClientNegotiationCompleted + +## 説明 + SpnegoTokenProvider は SSPI ネゴシエーションを完了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-spnegoservicenegotiationcompleted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-spnegoservicenegotiationcompleted.md new file mode 100644 index 00000000000..c5659466251 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-spnegoservicenegotiationcompleted.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.Security.SpnegoServiceNegotiationCompleted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 840c7537-81df-4bb6-affb-c6c9036453d0 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# System.ServiceModel.Security.SpnegoServiceNegotiationCompleted +System.ServiceModel.Security.SpnegoServiceNegotiationCompleted + +## 説明 + SpnegoTokenAuthenticator が SSPI のネゴシエーションを完了しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicechannellifetime.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicechannellifetime.md new file mode 100644 index 00000000000..daded97867c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicechannellifetime.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ServiceChannelLifetime | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1da8b8d0-7c5b-40bb-b177-29bbd67245e0 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ServiceChannelLifetime +System.ServiceModel.ServiceChannelLifetime + +## 説明 + サービス チャネルについての情報です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostbaseaddresses.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostbaseaddresses.md new file mode 100644 index 00000000000..32ff64af1e1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostbaseaddresses.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ServiceHostBaseAddresses | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a36b8d38-8719-4d51-923a-420ec6c009e7 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ServiceHostBaseAddresses +System.ServiceModel.ServiceHostBaseAddresses + +## 説明 + サービスによって登録されたすべてのベース アドレスを表示できます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostcreation.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostcreation.md new file mode 100644 index 00000000000..be401f6eefe --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostcreation.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ServiceHostCreation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0b9cb4f7-48bb-4e89-b5c2-d2d22e0e8088 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.ServiceHostCreation +System.ServiceModel.ServiceHostCreation + +## 説明 + ServiceHost を作成します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehosterroronreleaseperformancecounter.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehosterroronreleaseperformancecounter.md new file mode 100644 index 00000000000..98c207756ef --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehosterroronreleaseperformancecounter.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ServiceHostErrorOnReleasePerformanceCounter | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5a83a2c6-f86b-4dbe-8882-2984a3c38fc3 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ServiceHostErrorOnReleasePerformanceCounter +System.ServiceModel.ServiceHostErrorOnReleasePerformanceCounter + +## 説明 + ReleasePerformanceCounter の呼び出し時に ServiceHost エラーが発生しました。パフォーマンス カウンターを解放するときに、このトレースを使用してエラーを確認できます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostfaulted.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostfaulted.md new file mode 100644 index 00000000000..c18c2e023a6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostfaulted.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.ServiceHostFaulted | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 58cf2adc-a6ef-46d8-8e73-e127287b42a2 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ServiceHostFaulted +System.ServiceModel.ServiceHostFaulted + +## 説明 + ServiceHost は途中終了しました。 + + このトレースは、リスナーのいずれかでエラーが発生したことを示します。このトレースは、デバッグで役立ちます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehosttimeoutonclose.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehosttimeoutonclose.md new file mode 100644 index 00000000000..ef5f02c10fa --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehosttimeoutonclose.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ServiceHostTimeoutOnClose | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 89f360d2-5bed-4677-ab55-26d9bd12695a +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ServiceHostTimeoutOnClose +System.ServiceModel.ServiceHostTimeoutOnClose + +## 説明 + ServiceHost を閉じる操作はタイムアウトしました。これは、クライアントによっていくつかのセッション チャネルが適切にシャットダウンされず、中止された可能性があることを示します。既定の時間を変更してタイムアウトの終了を調整してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationexceptiononreply.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationexceptiononreply.md new file mode 100644 index 00000000000..e627f969013 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationexceptiononreply.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.ServiceOperationExceptionOnReply | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b68bba58-495a-4b13-bc4f-b663136f3c44 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.ServiceOperationExceptionOnReply +System.ServiceModel.ServiceOperationExceptionOnReply + +## 説明 + 要求\/応答操作への応答が生じると例外をスローします。 このトレースは開発中のデバッグに役立ちます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationmissingreply.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationmissingreply.md new file mode 100644 index 00000000000..678d8414bec --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationmissingreply.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.ServiceOperationMissingReply | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 734d1cac-9f9c-472c-bcf7-bed23454c82c +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.ServiceOperationMissingReply +System.ServiceModel.ServiceOperationMissingReply + +## 説明 + この要求\/応答操作には応答メッセージがありません。 + + これは双方向の操作ですが、クライアントに送信する応答がありません。このトレースは開発時のデバッグに使用できます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationmissingreplycontext.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationmissingreplycontext.md new file mode 100644 index 00000000000..51c2cd97959 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationmissingreplycontext.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.ServiceOperationMissingReplyContext | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1373c661-e63a-4e11-a635-689451450274 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.ServiceOperationMissingReplyContext +System.ServiceModel.ServiceOperationMissingReplyContext + +## 説明 + ReplyContext は、双方向の操作に対して NULL です。トレース データによって「応答操作には、応答に使用する IReplyContext が含まれていません。」というメッセージが表示されます。 + + このトレースは開発中のデバッグに役立ちます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicethrottlelimitreached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicethrottlelimitreached.md new file mode 100644 index 00000000000..41f037cef6c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicethrottlelimitreached.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.ServiceThrottleLimitReached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f554a370-c3f8-4131-8639-7c36f926fbf9 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.ServiceThrottleLimitReached +System.ServiceModel.ServiceThrottleLimitReached + +## 説明 + MaxConcurrentCalls\/MaxConcurrentInstances\/MaxConcurrentSessions スロットルのいずれかに達したため、メッセージはキューに格納されます。 + + このトレースを使用し、運用負荷の予想値と実績値に基づいてスロットル値を調整できます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-skipbehavior.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-skipbehavior.md new file mode 100644 index 00000000000..3f1f7027593 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-skipbehavior.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.SkipBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dd18b390-0624-4a38-aad3-802e8a07f6ce +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.SkipBehavior +System.ServiceModel.SkipBehavior + +## 説明 + 動作の型が予期される型ではありません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-transportlisten.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-transportlisten.md new file mode 100644 index 00000000000..2396539f3c5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-transportlisten.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.TransportListen | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a5e6438c-6562-42f2-8a3b-2bdecf9dc4af +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.TransportListen +System.ServiceModel.TransportListen + +## 説明 + 指定したアドレスでリッスンします。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txasyncabort.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txasyncabort.md new file mode 100644 index 00000000000..ac5762c69d8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txasyncabort.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.TxAsyncAbort | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bce47ff2-abd0-4b58-8667-ebf1ef3580b8 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.TxAsyncAbort +指定したトランザクションが非同期に中止されました。 + +## 説明 + 別の参加要素による中止、タイムアウト、またはトランザクションの参加要素内での別のエラーが発生したため、現在のトランザクションが中止されました。 + +## トラブルシューティング + これが予期された中止であるかどうかをすべてのシステム ログで確認し、中止の原因を特定してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatusabortedonsessionclose.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatusabortedonsessionclose.md new file mode 100644 index 00000000000..154ddde6603 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatusabortedonsessionclose.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.TxCompletionStatusAbortedOnSessionClose | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7e142e9d-e81b-4309-974a-02e9cc064ea0 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.TxCompletionStatusAbortedOnSessionClose +指定されたトランザクションは、セッションが終了したときにまだ完了しておらず、TransactionAutoCompleteOnSessionClose OperationBehaviorAttribute が false に設定されているため、中止されました。 + +## 説明 + 現在のアクティブなセッションが終了した時点でトランザクションが完了しておらず、TransactionAutoCompleteOnSessionClose が `false` に設定されている場合にトレースされます。 + +## トラブルシューティング + このトレースは、アプリケーションに調査が必要なバグが含まれている可能性があることを示します。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforasyncabort.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforasyncabort.md new file mode 100644 index 00000000000..855459002a6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforasyncabort.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.TxCompletionStatusCompletedForAsyncAbort | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 155c3203-2e17-4709-b896-2254e22da45e +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.TxCompletionStatusCompletedForAsyncAbort +非同期中止が実行されたため、指定された操作の指定のトランザクションは完了されました。 + +## 説明 + 別の参加要素による中止、タイムアウト、またはトランザクションの参加要素内部の別のエラーが発生したため、現在のトランザクションが中止されました。 + +## トラブルシューティング + 予期された中止ではない場合は、すべてのシステム ログを調べて中止の原因を確認してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforautocomplete.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforautocomplete.md new file mode 100644 index 00000000000..e66ea6bb9eb --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforautocomplete.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.TxCompletionStatusCompletedForAutocomplete | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 79ec2a3f-8407-4c4c-a1bc-2b0e6e21c543 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.TxCompletionStatusCompletedForAutocomplete +`OperationBehaviorAttribute.TransactionAutoComplete` メンバーが `true` に設定されたため、指定された操作の指定されたトランザクションが完了しました。 + +## 説明 + ユーザーに代わって、インフラストラクチャによってトランザクションが自動的に完了したときにトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforerror.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforerror.md new file mode 100644 index 00000000000..c7da14d61f3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforerror.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.TxCompletionStatusCompletedForError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8ade4722-a6d5-471c-b960-1cfea4ea2aa9 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.TxCompletionStatusCompletedForError +処理されない実行例外が発生したため、指定された操作の指定されたトランザクションが完了しました。 + +## 説明 + 現在のトランザクションを完了しようとしているときにエラーが発生した場合にトレースされます。これは、応答またはエラーが呼び出し元に送信される前に発生します。 + +## トラブルシューティング + トレース メッセージを調べて、例外メッセージとアクション可能な項目を確認してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforsetcomplete.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforsetcomplete.md new file mode 100644 index 00000000000..87b0ad32367 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforsetcomplete.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.TxCompletionStatusCompletedForSetComplete | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 201ffd59-df9e-40d9-9697-7de442ab8b35 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.TxCompletionStatusCompletedForSetComplete +SetTransactionComplete が呼び出されたため、指定された操作の指定のトランザクションは完了されました。 + +## 説明 + OperationContext によって現在のトランザクションを完了することをユーザーが明示的に指定した場合にトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedfortacosc.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedfortacosc.md new file mode 100644 index 00000000000..48ee46596e0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedfortacosc.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.TxCompletionStatusCompletedForTACOSC | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 089b982d-63a1-4ef2-8ef2-ad83758c9ec4 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.TxCompletionStatusCompletedForTACOSC +そのトランザクションは、セッションが終了した際に完了になりました。 + +## 説明 + 現在のアクティブなセッションが終了して、`TransactionAutoCompleteOnSessionClose` が `true` に設定されると、トレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatusremainsattached.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatusremainsattached.md new file mode 100644 index 00000000000..7ddb394b818 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatusremainsattached.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.TxCompletionStatusRemainsAttached | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 60a745f5-85f7-4006-9786-fbbcca678ac9 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.TxCompletionStatusRemainsAttached +指定された操作の指定されたトランザクションは、InstanceContext に添付されたままになっています。 + +## 説明 + ServiceOperation が完了したのにトランザクションが完了しない場合にトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txfailedtonegotiateoletx.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txfailedtonegotiateoletx.md new file mode 100644 index 00000000000..e7812825473 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txfailedtonegotiateoletx.md @@ -0,0 +1,31 @@ +--- +title: "System.ServiceModel.TxFailedToNegotiateOleTx | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3f0f0b4b-a1ad-4704-8329-455daf54892d +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.ServiceModel.TxFailedToNegotiateOleTx +指定されたコーディネーション コンテキストのための OleTransactions プロトコル ネゴシエーションに失敗しました。 + +## 説明 + OleTx 情報が添付された受信トランザクションがその OleTx 情報を使用できず、代わりに WS\-AT 使用した場合にトレースされます。 + +## トラブルシューティング + コンピューター間の MSDTC RPC 通信に潜在的な問題があることを示しています。これらのトレースが多数ログに記録されている場合は、大幅なパフォーマンス低下が発生している可能性があります。OleTx が必要ない場合は、WS\-AT のレジストリ構成で `OleTxUpgradeEnabled` を 0 に設定してください。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txreleaseserviceinstanceoncompletion.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txreleaseserviceinstanceoncompletion.md new file mode 100644 index 00000000000..f17b610ff46 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txreleaseserviceinstanceoncompletion.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.TxReleaseServiceInstanceOnCompletion | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e167bad3-861f-43e4-9e78-9c275cf64a29 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.TxReleaseServiceInstanceOnCompletion +ReleaseServiceInstanceOnTransactionComplete の ServiceBehaviorAttribute が true に設定されていたので、トランザクション '{0}' の完了時にサービス インスタンスが解放されました。 + +## 説明 + 現在のアクティブなトランザクションが完了して現在のサービス インスタンスが解放されるか破棄され、ReleaseServiceInstanceOnTransactionComplete が `true` に設定されると、トレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredisattachedtransaction.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredisattachedtransaction.md new file mode 100644 index 00000000000..6289354b965 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredisattachedtransaction.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.TxSourceTxScopeRequiredIsAttachedTransaction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 40d7b227-ee00-4b2c-a04c-1cd28b103f94 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.TxSourceTxScopeRequiredIsAttachedTransaction +指定したトランザクションは、指定した操作のために InstanceContext トランザクションから受信されました。 + +## 説明 + ユーザー コードから利用できるトランザクションが、この呼び出しの前に呼び出された AutoComplete\=false メソッドによって残っていた場合にトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredistransactedtransport.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredistransactedtransport.md new file mode 100644 index 00000000000..3b37fbd6c4e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredistransactedtransport.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.TxSourceTxScopeRequiredIsTransactedTransport | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6cf60298-dccf-4587-b92c-ae3edb75c331 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.TxSourceTxScopeRequiredIsTransactedTransport +指定されたトランザクションは、MSMQ などのトランザクション処理されたトランスポートから、指定された操作のために受信されました。 + +## 説明 + ユーザー コードから利用できるトランザクションがトランスポート自体よって作成された場合にトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredistransactionflow.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredistransactionflow.md new file mode 100644 index 00000000000..88dd9d66ea4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredistransactionflow.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.TxSourceTxScopeRequiredIsTransactionFlow | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 41a3a5d7-bb16-4d16-bb51-db7ac0cfb748 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# System.ServiceModel.TxSourceTxScopeRequiredIsTransactionFlow +指定したトランザクションが指定した操作にフローされました。 + +## 説明 + ユーザー コードから利用できるトランザクションが外部ソースからフローされた場合にトレースされます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-understoodmessageheader.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-understoodmessageheader.md new file mode 100644 index 00000000000..02daff64304 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-understoodmessageheader.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.UnderstoodMessageHeader | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8a8560bf-d13b-452d-bfb5-a5221cb191bd +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.UnderstoodMessageHeader +System.ServiceModel.UnderstoodMessageHeader + +## 説明 + 認識されたメッセージ ヘッダー。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-unhandledaction.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-unhandledaction.md new file mode 100644 index 00000000000..2daa604d727 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-unhandledaction.md @@ -0,0 +1,30 @@ +--- +title: "System.ServiceModel.UnhandledAction | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a704fb1d-6cf8-4fd1-9aee-e70d7055c812 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.UnhandledAction +System.ServiceModel.UnhandledAction + +## 説明 + この動作の処理に利用できるサービスがありません。 + + パフォーマンス カウンターのすべてのトレースは、パフォーマンス カウンター関連の問題のデバッグに使用できます。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-unhandledexceptioninuseroperation.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-unhandledexceptioninuseroperation.md new file mode 100644 index 00000000000..6359b8afd93 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-unhandledexceptioninuseroperation.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.UnhandledExceptionInUserOperation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b00612e4-84c7-4a53-849a-e693cdce7fca +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# System.ServiceModel.UnhandledExceptionInUserOperation +System.ServiceModel.UnhandledExceptionInUserOperation + +## 説明 + ユーザー操作の未処理の例外です。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-warnhelppageenablednobaseaddress.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-warnhelppageenablednobaseaddress.md new file mode 100644 index 00000000000..5ae5128770c --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-warnhelppageenablednobaseaddress.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.WarnHelpPageEnabledNoBaseAddress | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1a0f22f1-1b08-4b10-ac08-b109209eda8b +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.WarnHelpPageEnabledNoBaseAddress +System.ServiceModel.WarnHelpPageEnabledNoBaseAddress + +## 説明 + ServiceDebugBehavior ヘルプ ページは相対アドレスで有効になっていますが、ベース アドレスがないため作成できません。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-wsmexnoncriticalwsdlexporterror.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-wsmexnoncriticalwsdlexporterror.md new file mode 100644 index 00000000000..957083bb48e --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-wsmexnoncriticalwsdlexporterror.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.WsmexNonCriticalWsdlExportError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb0e7ab9-2918-49d8-8aee-bb186f457658 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.WsmexNonCriticalWsdlExportError +System.ServiceModel.WsmexNonCriticalWsdlExportError + +## 説明 + WSDL のエクスポート中に、致命的でないエラーまたは警告が発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/system-servicemodel-wsmexnoncriticalwsdlimporterror.md b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-wsmexnoncriticalwsdlimporterror.md new file mode 100644 index 00000000000..67a7354d616 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/system-servicemodel-wsmexnoncriticalwsdlimporterror.md @@ -0,0 +1,28 @@ +--- +title: "System.ServiceModel.WsmexNonCriticalWsdlImportError | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d6535153-b160-4584-8d5d-1186423a0bc3 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# System.ServiceModel.WsmexNonCriticalWsdlImportError +System.ServiceModel.WsmexNonCriticalWsdlImportError + +## 説明 + WSDL のインポート中に、致命的でないエラーまたは警告が発生しました。 + +## 参照 + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [トレースを使用したアプリケーションのトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md) + [管理と診断](../../../../../docs/framework/wcf/diagnostics/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/trace-type-summary.md b/docs/framework/wcf/diagnostics/tracing/trace-type-summary.md new file mode 100644 index 00000000000..f9551a78b26 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/trace-type-summary.md @@ -0,0 +1,65 @@ +--- +title: "トレースの種類の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e639410b-d1d1-479c-b78e-a4701d4e4085 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# トレースの種類の概要 +「[SourceLevels](http://go.microsoft.com/fwlink/?LinkID=94943)」には、Critical、Error、Warning、Information、および Verbose の各トレース レベルの定義に加えて、`ActivityTracing` フラグの説明が記載されています。これは、トレースの境界とアクティビティ転送イベントの出力を切り替えるためのフラグです。 + + また、「[TraceEventType](http://go.microsoft.com/fwlink/?LinkId=95169)」には、 から出力できるトレースの種類が記載されています。 + + 最も重要な種類を次の表に示します。 + +|トレースの種類|説明| +|-------------|--------| +|Critical|致命的なエラーまたはアプリケーションのクラッシュ。| +|Error|回復可能なエラー。| +|警告|情報メッセージ。| +|情報|重大ではない問題。| +|詳細|トレースのデバッグ。| +|\[開始\]|処理の論理単位の開始。| +|Suspend|処理の論理単位の中断。| +|Resume|処理の論理単位の再開。| +|Stop|処理の論理単位の停止。| +|転送|相関 ID の変更。| + + アクティビティは、上記のトレースの種類の組み合わせとして定義されます。 + + ローカル \(トレース ソース\) スコープでの典型的なアクティビティを定義する正規表現は次のとおりです。 + + `R = Start (Critical | Error | Warning | Information | Verbose | Transfer | (Transfer Suspend Transfer Resume) )* Stop` + + これは、アクティビティが次の条件を満たす必要があることを意味します。 + +- アクティビティは、Start トレースによって開始し、Stop トレースによって停止する必要があります。 + +- Suspend トレースまたは Resume トレースの直前に Transfer トレースが必要です。 + +- Suspend トレースと Resume トレースが存在する場合、これらのトレースの間にトレースが存在することはできません。 + +- 上記の条件を満たしている限り、Critical\/Error\/Warning\/Information\/Verbose\/Transfer の各トレースはいくつでも含めることができます。 + + グローバル スコープでの典型的なアクティビティを定義する正規表現は次のとおりです。 + +``` +R+ +``` + + R はローカル スコープのアクティビティを表す正規表現です。 これは、次のようになります。 + +``` +[R+ = Start ( Critical | Error | Warning | Information | Verbose | Transfer | (Transfer Suspend Transfer Resume) )* Stop]+ +``` \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/traces-reference.md b/docs/framework/wcf/diagnostics/tracing/traces-reference.md new file mode 100644 index 00000000000..47b629b1523 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/traces-reference.md @@ -0,0 +1,843 @@ +--- +title: "トレースの参照 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bd960851-162d-4dcc-8c0c-0ec8f455d56d +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# トレースの参照 +ここでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] で生成されるトレースをすべて示します。 + +## このセクションの内容 + `Administration` + + [System.ServiceModel.Administration.WmiPut](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-administration-wmiput.md) + + `Diagnostics` + + [System.ServiceModel.Diagnostics.AppDomainUnload](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-appdomainunload.md) + + [System.ServiceModel.Diagnostics.EventLog](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-eventlog.md) + + [System.ServiceModel.Diagnostics.ThrowingException](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-throwingexception.md) + + [System.ServiceModel.Diagnostics.TraceHandledException](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-tracehandledexception.md) + + [System.ServiceModel.Diagnostics.UnhandledException](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-unhandledexception.md) + + [System.ServiceModel.Diagnostics.FailedToAddAnActivityIdHeader](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-failedtoaddanactivityidheader.md) + + [System.ServiceModel.Diagnostics.FailedToReadAnActivityIdHeader](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-failedtoreadanactivityidheader.md) + + [System.ServiceModel.Diagnostics.FilterNotMatchedNodeQuotaExceeded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-filternotmatchednodequotaexceeded.md) + + [System.ServiceModel.Diagnostics.MessageCountLimitExceeded](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorresponseinvalidmetadata.md) + + [System.ServiceModel.Diagnostics.DiagnosticsFailedMessageTrace](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-diagnosticsfailedmessagetrace.md) + + [System.ServiceModel.Diagnostics.MessageNotLoggedQuotaExceeded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-messagenotloggedquotaexceeded.md) + + [System.ServiceModel.Diagnostics.TraceTruncatedQuotaExceeded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-tracetruncatedquotaexceeded.md) + + [System.ServiceModel.Diagnostics.ActivityBoundary](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-diagnostics-activityboundary.md) + + `Serialization` + + [System.Runtime.Serialization.WriteObjectBegin](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectbegin.md) + + [System.Runtime.Serialization.WriteObjectEnd](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectend.md) + + [System.Runtime.Serialization.WriteObjectContentBegin](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectcontentbegin.md) + + [System.Runtime.Serialization.WriteObjectContentEnd](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-writeobjectcontentend.md) + + [System.Runtime.Serialization.ReadObjectBegin](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-readobjectbegin.md) + + [System.Runtime.Serialization.ReadObjectEnd](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationmexmonikermetadataexchangecomplete.md) + + [System.Runtime.Serialization.ElementIgnored](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-elementignored.md) + + [System.Runtime.Serialization.XsdExportBegin](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportbegin.md) + + [System.Runtime.Serialization.XsdExportEnd](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportend.md) + + [System.Runtime.Serialization.XsdImportBegin](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportbegin.md) + + [System.Runtime.Serialization.XsdImportEnd](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportend.md) + + [System.Runtime.Serialization.XsdExportError](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexporterror.md) + + [System.Runtime.Serialization.XsdImportError](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimporterror.md) + + [System.Runtime.Serialization.XsdExportAnnotationFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportannotationfailed.md) + + [System.Runtime.Serialization.XsdImportAnnotationFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdimportannotationfailed.md) + + [System.Runtime.Serialization.XsdExportDupItems](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-xsdexportdupitems.md) + + [System.Runtime.Serialization.FactoryTypeNotFound](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-factorytypenotfound.md) + + [System.Runtime.Serialization.ObjectWithLargeDepth](../../../../../docs/framework/wcf/diagnostics/tracing/system-runtime-serialization-objectwithlargedepth.md) + + `Channels` + + [System.ServiceModel.Channels.ConnectionAbandoned](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionabandoned.md) + + [System.ServiceModel.Channels.ConnectionPoolCloseException](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolcloseexception.md) + + [System.ServiceModel.Channels.ConnectionPoolIdleTimeoutReached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolidletimeoutreached.md) + + [System.ServiceModel.Channels.ConnectionPoolLeaseTimeoutReached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolleasetimeoutreached.md) + + [System.ServiceModel.Channels.ConnectionPoolMaxOutboundConnectionsPerEndpointQuotaReached](../../../../../docs/framework/wcf/diagnostics/tracing/connectionpoolmaxoutboundconnectionsperendpointquotareached.md) + + [System.ServiceModel.Channels.ServerMaxPooledConnectionsQuotaReached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-servermaxpooledconnectionsquotareached.md) + + [System.ServiceModel.Channels.EndpointListenerClose](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-endpointlistenerclose.md) + + [System.ServiceModel.Channels.EndpointListenerOpen](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-endpointlisteneropen.md) + + [System.ServiceModel.Channels.HttpResponseReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpresponsereceived.md) + + [System.ServiceModel.Channels.HttpChannelConcurrentReceiveQuotaReached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelconcurrentreceivequotareached.md) + + [System.ServiceModel.Channels.HttpChannelMessageReceiveFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelmessagereceivefailed.md) + + [System.ServiceModel.Channels.HttpChannelUnexpectedResponse](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelunexpectedresponse.md) + + [System.ServiceModel.Channels.HttpChannelRequestAborted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelrequestaborted.md) + + [System.ServiceModel.Channels.HttpChannelResponseAborted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpchannelresponseaborted.md) + + [System.ServiceModel.Channels.HttpsClientCertificateInvalid](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpsclientcertificateinvalid.md) + + [System.ServiceModel.Channels.HttpsClientCertificateNotPresent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpsclientcertificatenotpresent.md) + + [System.ServiceModel.Channels.NamedPipeChannelMessageReceiveFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-namedpipechannelmessagereceivefailed.md) + + [System.ServiceModel.Channels.NamedPipeChannelMessageReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-namedpipechannelmessagereceived.md) + + [System.ServiceModel.Channels.MessageReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-messagereceived.md) + + [System.ServiceModel.Channels.MessageSent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-messagesent.md) + + [System.ServiceModel.Channels.RequestChannelReplyReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-requestchannelreplyreceived.md) + + [System.ServiceModel.Channels.TcpChannelMessageReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-tcpchannelmessagereceived.md) + + [System.ServiceModel.Channels.ConnectToIPEndpoint](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connecttoipendpoint.md) + + [System.ServiceModel.Channels.SocketConnectionCreate](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectioncreate.md) + + [System.ServiceModel.Channels.SocketConnectionClose](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionclose.md) + + [System.ServiceModel.Channels.SocketConnectionAbort](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionabort.md) + + [System.ServiceModel.Channels.SocketConnectionAbortClose](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-socketconnectionabortclose.md) + + [System.ServiceModel.Channels.PipeConnectionAbort](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pipeconnectionabort.md) + + [System.ServiceModel.Channels.RequestContextAbort](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-requestcontextabort.md) + + [System.ServiceModel.Channels.ChannelCreated](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-channelcreated.md) + + [System.ServiceModel.Channels.ChannelDisposed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-channeldisposed.md) + + [System.ServiceModel.Channels.ListenerCreated](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-listenercreated.md) + + [System.ServiceModel.Channels.ListenerDisposed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-listenerdisposed.md) + + [System.ServiceModel.Channels.PrematureDatagramEof](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-prematuredatagrameof.md) + + [System.ServiceModel.Channels.MaxPendingConnectionsReached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-maxpendingconnectionsreached.md) + + [System.ServiceModel.Channels.MaxAcceptedChannelsReached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-maxacceptedchannelsreached.md) + + [System.ServiceModel.Channels.HttpAuthFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-httpauthfailed.md) + + [System.ServiceModel.Channels.NoExistingTransportManager](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-noexistingtransportmanager.md) + + [System.ServiceModel.Channels.IncompatibleExistingTransportManager](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-incompatibleexistingtransportmanager.md) + + [System.ServiceModel.Channels.InitiatingNamedPipeConnection](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-initiatingnamedpipeconnection.md) + + [System.ServiceModel.Channels.InitiatingTcpConnection](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-initiatingtcpconnection.md) + + [System.ServiceModel.Channels.OpenedListener](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-openedlistener.md) + + [System.ServiceModel.Channels.SslClientCertMissing](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-sslclientcertmissing.md) + + [System.ServiceModel.Channels.StreamSecurityUpgradeAccepted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-streamsecurityupgradeaccepted.md) + + [System.ServiceModel.Channels.TcpConnectError](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-tcpconnecterror.md) + + [System.ServiceModel.Channels.FailedAcceptFromPool](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-failedacceptfrompool.md) + + [System.ServiceModel.Channels.FailedPipeConnect](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-failedpipeconnect.md) + + [System.ServiceModel.Channels.SystemTimeResolution](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-systemtimeresolution.md) + + [System.ServiceModel.Channels.PeerNeighborNotAccepted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbornotaccepted.md) + + [System.ServiceModel.Channels.PeerNeighborNotFound](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbornotfound.md) + + [System.ServiceModel.Channels.PeerNeighborStateChanged](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighborstatechanged.md) + + [System.ServiceModel.Channels.PeerNeighborStateChangeFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighborstatechangefailed.md) + + [System.ServiceModel.Channels.PeerNeighborMessageReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormessagereceived.md) + + [System.ServiceModel.Channels.PeerNeighborManagerOffline](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormanageroffline.md) + + [System.ServiceModel.Channels.PeerNeighborManagerOnline](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerneighbormanageronline.md) + + [System.ServiceModel.Channels.PeerChannelMessageReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerchannelmessagereceived.md) + + [System.ServiceModel.Channels.PeerChannelMessageSent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerchannelmessagesent.md) + + [System.ServiceModel.Channels.PeerNodeAddressChanged](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeaddresschanged.md) + + [System.ServiceModel.Channels.PeerNodeOpening](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopening.md) + + [System.ServiceModel.Channels.PeerNodeOpened](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopened.md) + + [System.ServiceModel.Channels.PeerNodeOpenFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeopenfailed.md) + + [System.ServiceModel.Channels.PeerNodeClosing](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeclosing.md) + + [System.ServiceModel.Channels.PeerNodeClosed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeclosed.md) + + [System.ServiceModel.Channels.PeerFloodedMessageReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagereceived.md) + + [System.ServiceModel.Channels.PeerFloodedMessageNotPropagated](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagenotpropagated.md) + + [System.ServiceModel.Channels.PeerFloodedMessageNotMatched](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerfloodedmessagenotmatched.md) + + [System.ServiceModel.Channels.PnrpRegisteredAddresses](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpregisteredaddresses.md) + + [System.ServiceModel.Channels.PnrpUnregisteredAddresses](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpunregisteredaddresses.md) + + [System.ServiceModel.Channels.PnrpResolvedAddresses](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpresolvedaddresses.md) + + [System.ServiceModel.Channels.PnrpResolveException](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-pnrpresolveexception.md) + + [System.ServiceModel.Channels.PeerReceiveMessageAuthenticationFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerreceivemessageauthenticationfailure.md) + + [System.ServiceModel.Channels.PeerNodeAuthenticationFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeauthenticationfailure.md) + + [System.ServiceModel.Channels.PeerNodeAuthenticationTimeout](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peernodeauthenticationtimeout.md) + + [System.ServiceModel.Channels.PeerFlooderReceiveMessageQuotaExceeded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerflooderreceivemessagequotaexceeded.md) + + [System.ServiceModel.Channels.PeerServiceOpened](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peerserviceopened.md) + + [System.ServiceModel.Channels.PeerMaintainerActivity](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-peermaintaineractivity.md) + + [System.ServiceModel.Channels.MsmqCannotPeekOnQueue](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqcannotpeekonqueue.md) + + [System.ServiceModel.Channels.MsmqCannotReadQueues](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqcannotreadqueues.md) + + [System.ServiceModel.Channels.MsmqDatagramSent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdatagramsent.md) + + [System.ServiceModel.Channels.MsmqDatagramReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdatagramreceived.md) + + [System.ServiceModel.Channels.MsmqDetected](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqdetected.md) + + [System.ServiceModel.Channels.MsmqEnteredBatch](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqenteredbatch.md) + + [System.ServiceModel.Channels.MsmqFoundBaseAddress](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqfoundbaseaddress.md) + + [System.ServiceModel.Channels.MsmqLeftBatch](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqleftbatch.md) + + [System.ServiceModel.Channels.MsmqMatchedApplicationFound](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmatchedapplicationfound.md) + + [System.ServiceModel.Channels.MsmqMessageDropped](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagedropped.md) + + [System.ServiceModel.Channels.MsmqMessageLockedUnderTheTransaction](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagelockedunderthetransaction.md) + + [System.ServiceModel.Channels.MsmqMessageRejected](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqmessagerejected.md) + + [System.ServiceModel.Channels.MsmqMoveOrDeleteAttemptFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehostcreatedserviceendpoint.md) + + [System.ServiceModel.Channels.MsmqPoisonMessageMovedPoison](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagemovedpoison.md) + + [System.ServiceModel.Channels.MsmqPoisonMessageMovedRetry](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagemovedretry.md) + + [System.ServiceModel.Channels.MsmqPoisonMessageRejected](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoisonmessagerejected.md) + + [System.ServiceModel.Channels.MsmqPoolFull](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpoolfull.md) + + [System.ServiceModel.Channels.MsmqPotentiallyPoisonMessageDetected](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqpotentiallypoisonmessagedetected.md) + + [System.ServiceModel.Channels.MsmqQueueClosed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueueclosed.md) + + [System.ServiceModel.Channels.MsmqQueueOpened](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueueopened.md) + + [System.ServiceModel.Channels.MsmqQueueTransactionalStatusUnknown](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqqueuetransactionalstatusunknown.md) + + [System.ServiceModel.Channels.MsmqScanStarted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqscanstarted.md) + + [System.ServiceModel.Channels.MsmqSessiongramSent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqsessiongramsent.md) + + [System.ServiceModel.Channels.MsmqSessiongramReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqsessiongramreceived.md) + + [System.ServiceModel.Channels.MsmqStartingApplication](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqstartingapplication.md) + + [System.ServiceModel.Channels.MsmqStartingService](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqstartingservice.md) + + [System.ServiceModel.Channels.MsmqUnexpectedAcknowledgment](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-msmqunexpectedacknowledgment.md) + + `ComIntegration` + + [System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartingService](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststartingservice.md) + + [System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartedService](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststartedservice.md) + + [System.ServiceModel.ComIntegration.ComIntegrationServiceHostCreatedServiceContract](../../../../../docs/framework/wcf/diagnostics/tracing/ssc-comintegrationservicehostcreatedservicecontract.md) + + [System.ServiceModel.ComIntegration.ComIntegrationServiceHostStartedServiceDetails](../../../../../docs/framework/wcf/diagnostics/tracing/ssc-comintegration.md) + + [System.ServiceModel.ComIntegration.ComIntegrationServiceHostCreatedServiceEndpoint](../../../../../docs/framework/wcf/diagnostics/tracing/ssc--comintegrationservicehostcreatedserviceendpoint.md) + + [System.ServiceModel.ComIntegration.ComIntegrationServiceHostStoppingService](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststoppingservice.md) + + [System.ServiceModel.ComIntegration.ComIntegrationServiceHostStoppedService](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicehoststoppedservice.md) + + [System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarting](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstarting.md) + + [System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarting](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstarting.md) + + [System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStarted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstarted.md) + + [System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStopping](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstopping.md) + + [System.ServiceModel.ComIntegration.ComIntegrationDllHostInitializerStopped](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdllhostinitializerstopped.md) + + [System.ServiceModel.ComIntegration.ComIntegrationTLBImportStarting](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportstarting.md) + + [System.ServiceModel.ComIntegration.ComIntegrationTLBImportFromAssembly](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfromassembly.md) + + [System.ServiceModel.ComIntegration.ComIntegrationTLBImportFromTypelib](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfromtypelib.md) + + [System.ServiceModel.ComIntegration.ComIntegrationTLBImportConverterEvent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportconverterevent.md) + + [System.ServiceModel.ComIntegration.ComIntegrationTLBImportFinished](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtlbimportfinished.md) + + [System.ServiceModel.ComIntegration.ComIntegrationInstanceCreationRequest](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancecreationrequest.md) + + [System.ServiceModel.ComIntegration.ComIntegrationInstanceCreationSuccess](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancecreationsuccess.md) + + [System.ServiceModel.ComIntegration.ComIntegrationInstanceReleased](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinstancereleased.md) + + [System.ServiceModel.ComIntegration.ComIntegrationEnteringActivity](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationenteringactivity.md) + + [System.ServiceModel.ComIntegration.ComIntegrationExecutingCall](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationexecutingcall.md) + + [System.ServiceModel.ComIntegration.ComIntegrationLeftActivity](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationleftactivity.md) + + [System.ServiceModel.ComIntegration.ComIntegrationInvokingMethod](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokingmethod.md) + + [System.ServiceModel.ComIntegration.ComIntegrationInvokedMethod](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokedmethod.md) + + [System.ServiceModel.ComIntegration.ComIntegrationInvokingMethodNewTransaction](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationinvokingmethodnewtransaction.md) + + [System.ServiceModel.ComIntegration.ComIntegrationInvokingMethodContextTransaction](../../../../../docs/framework/wcf/diagnostics/tracing/ssc-comintegrationinvokingmethodcontexttransaction.md) + + [System.ServiceModel.ComIntegration.ComIntegrationServiceMonikerParsed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationservicemonikerparsed.md) + + [System.ServiceModel.ComIntegration.ComIntegrationWsdlChannelBuilderLoaded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationwsdlchannelbuilderloaded.md) + + [System.ServiceModel.ComIntegration.ComIntegrationTypedChannelBuilderLoaded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtypedchannelbuilderloaded.md) + + [System.ServiceModel.ComIntegration.ComIntegrationChannelCreated](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationchannelcreated.md) + + [System.ServiceModel.ComIntegration.ComIntegrationDispatchMethod](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationdispatchmethod.md) + + [System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxCommitted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxcommitted.md) + + [System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxAbortedByContext](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxabortedbycontext.md) + + [System.ServiceModel.ComIntegration.ComIntegrationTxProxyTxAbortedByTM](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationtxproxytxabortedbytm.md) + + [System.ServiceModel.ComIntegration.ComIntegrationMexMonikerMetadataExchangeComplete](../../../../../docs/framework/wcf/diagnostics/tracing/ssc--comintegrationmexmonikermetadataexchangecomplete.md) + + [System.ServiceModel.ComIntegration.ComIntegrationMexChannelBuilderLoaded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-comintegration-comintegrationmexchannelbuilderloaded.md) + + `Security` + + [System.ServiceModel.Security.SecurityIdentityVerificationSuccess](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityverificationsuccess.md) + + [System.ServiceModel.Security.SecurityIdentityVerificationFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityverificationfailure.md) + + [System.ServiceModel.Security.SecurityIdentityDeterminationSuccess](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentitydeterminationsuccess.md) + + [System.ServiceModel.Security.SecurityIdentityDeterminationFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentitydeterminationfailure.md) + + [System.ServiceModel.Security.SecurityIdentityHostNameNormalizationFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityidentityhostnamenormalizationfailure.md) + + [System.ServiceModel.Security.SecurityImpersonationSuccess](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityimpersonationsuccess.md) + + [System.ServiceModel.Security.SecurityImpersonationFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityimpersonationfailure.md) + + [System.ServiceModel.Security.SecurityNegotiationProcessingFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitynegotiationprocessingfailure.md) + + [System.ServiceModel.Security.IssuanceTokenProviderRemovedCachedToken](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderremovedcachedtoken.md) + + [System.ServiceModel.Security.IssuanceTokenProviderUsingCachedToken](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderusingcachedtoken.md) + + [System.ServiceModel.Security.IssuanceTokenProviderBeginSecurityNegotiation](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderbeginsecuritynegotiation.md) + + [System.ServiceModel.Security.IssuanceTokenProviderEndSecurityNegotiation](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderendsecuritynegotiation.md) + + [System.ServiceModel.Security.IssuanceTokenProviderRedirectApplied](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderredirectapplied.md) + + [System.ServiceModel.Security.IssuanceTokenProviderServiceTokenCacheFull](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-issuancetokenproviderservicetokencachefull.md) + + [System.ServiceModel.Security.NegotiationTokenProviderAttached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-negotiationtokenproviderattached.md) + + [System.ServiceModel.Security.SpnegoClientNegotiationCompleted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-spnegoclientnegotiationcompleted.md) + + [System.ServiceModel.Security.SpnegoServiceNegotiationCompleted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-spnegoservicenegotiationcompleted.md) + + [System.ServiceModel.Security.NegotiationAuthenticatorAttached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-negotiationauthenticatorattached.md) + + [System.ServiceModel.Security.ServiceSecurityNegotiationCompleted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-servicesecuritynegotiationcompleted.md) + + [System.ServiceModel.Security.SecurityContextTokenCacheFull](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitycontexttokencachefull.md) + + [System.ServiceModel.Security.ExportSecurityChannelBindingEntry](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-exportsecuritychannelbindingentry.md) + + [System.ServiceModel.Security.ExportSecurityChannelBindingExit](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-exportsecuritychannelbindingexit.md) + + [System.ServiceModel.Security.ExportSecurityChannelBindingExit](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-exportsecuritychannelbindingexit.md) + + [System.ServiceModel.Security.ImportSecurityChannelBindingExit](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-importsecuritychannelbindingexit.md) + + [System.ServiceModel.Security.SecurityTokenProviderOpened](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenprovideropened.md) + + [System.ServiceModel.Security.SecurityTokenProviderClosed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenproviderclosed.md) + + [System.ServiceModel.Security.SecurityTokenAuthenticatorOpened](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenauthenticatoropened.md) + + [System.ServiceModel.Security.SecurityTokenAuthenticatorClosed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitytokenauthenticatorclosed.md) + + [System.ServiceModel.Security.SecurityBindingOutgoingMessageSecured](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingoutgoingmessagesecured.md) + + [System.ServiceModel.Security.SecurityBindingIncomingMessageVerified](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingincomingmessageverified.md) + + [System.ServiceModel.Security.SecurityBindingSecureOutgoingMessageFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingsecureoutgoingmessagefailure.md) + + [System.ServiceModel.Security.SecurityBindingVerifyIncomingMessageFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitybindingverifyincomingmessagefailure.md) + + [System.ServiceModel.Security.SecuritySpnToSidMappingFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityspntosidmappingfailure.md) + + [System.ServiceModel.Security.SecuritySessionRedirectApplied](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionredirectapplied.md) + + [System.ServiceModel.Security.SecurityClientSessionCloseSent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionclosesent.md) + + [System.ServiceModel.Security.SecurityClientSessionCloseResponseSent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessioncloseresponsesent.md) + + [System.ServiceModel.Security.SecurityClientSessionCloseMessageReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionclosemessagereceived.md) + + [System.ServiceModel.Security.SecuritySessionKeyRenewalFaultReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionkeyrenewalfaultreceived.md) + + [System.ServiceModel.Security.SecuritySessionAbortedFaultReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionabortedfaultreceived.md) + + [System.ServiceModel.Security.SecuritySessionClosedResponseReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionclosedresponsereceived.md) + + [System.ServiceModel.Security.SecurityClientSessionPreviousKeyDiscarded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionpreviouskeydiscarded.md) + + [System.ServiceModel.Security.SecurityClientSessionKeyRenewed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityclientsessionkeyrenewed.md) + + [System.ServiceModel.Security.SecurityPendingServerSessionAdded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionadded.md) + + [System.ServiceModel.Security.SecurityPendingServerSessionClosed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionclosed.md) + + [System.ServiceModel.Security.SecurityPendingServerSessionActivated](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitypendingserversessionactivated.md) + + [System.ServiceModel.Security.SecurityActiveServerSessionRemoved](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityactiveserversessionremoved.md) + + [System.ServiceModel.Security.SecurityNewServerSessionKeyIssued](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitynewserversessionkeyissued.md) + + [System.ServiceModel.Security.SecurityInactiveSessionFaulted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityinactivesessionfaulted.md) + + [System.ServiceModel.Security.SecurityServerSessionKeyUpdated](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionkeyupdated.md) + + [System.ServiceModel.Security.SecurityServerSessionCloseReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionclosereceived.md) + + [System.ServiceModel.Security.SecurityServerSessionRenewalFaultSent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionrenewalfaultsent.md) + + [System.ServiceModel.Security.SecurityServerSessionAbortedFaultSent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessionabortedfaultsent.md) + + [System.ServiceModel.Security.SecuritySessionCloseResponseSent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessioncloseresponsesent.md) + + [System.ServiceModel.Security.SecuritySessionServerCloseSent](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionserverclosesent.md) + + [System.ServiceModel.Security.SecurityServerSessionCloseResponseReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityserversessioncloseresponsereceived.md) + + [System.ServiceModel.Security.SecuritySessionRenewFaultSendFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrenewfaultsendfailure.md) + + [System.ServiceModel.Security.SecuritySessionAbortedFaultSendFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionabortedfaultsendfailure.md) + + [System.ServiceModel.Security.SecuritySessionClosedResponseSendFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionclosedresponsesendfailure.md) + + [System.ServiceModel.Security.SecuritySessionServerCloseSendFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionserverclosesendfailure.md) + + [System.ServiceModel.Security.SecuritySessionRequestorOperationSuccess](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrequestoroperationsuccess.md) + + [System.ServiceModel.Security.SecuritySessionRequestorOperationFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionrequestoroperationfailure.md) + + [System.ServiceModel.Security.SecuritySessionResponderOperationFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessionresponderoperationfailure.md) + + [System.ServiceModel.Security.SecuritySessionDemuxFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securitysessiondemuxfailure.md) + + [System.ServiceModel.Security.SecurityAuditWrittenSuccess](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityauditwrittensuccess.md) + + [System.ServiceModel.Security.SecurityAuditWrittenFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-security-securityauditwrittenfailure.md) + + `ServiceModel` + + [System.ServiceModel.AsyncCallbackThrewException](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-asynccallbackthrewexception.md) + + [System.ServiceModel.CommunicationObjectAborted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectaborted.md) + + [System.ServiceModel.CommunicationObjectAbortFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectabortfailed.md) + + [System.ServiceModel.CommunicationObjectCloseFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosefailed.md) + + [System.ServiceModel.CommunicationObjectOpenFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopenfailed.md) + + [System.ServiceModel.CommunicationObjectClosing](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosing.md) + + [System.ServiceModel.CommunicationObjectClosed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectclosed.md) + + [System.ServiceModel.CommunicationObjectCreated](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectcreated.md) + + [System.ServiceModel.CommunicationObjectDisposing](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectdisposing.md) + + [System.ServiceModel.CommunicationObjectFaultReason](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectfaultreason.md) + + [System.ServiceModel.CommunicationObjectFaulted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectfaulted.md) + + [System.ServiceModel.CommunicationObjectOpening](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopening.md) + + [System.ServiceModel.CommunicationObjectOpened](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-communicationobjectopened.md) + + [System.ServiceModel.DidNotUnderstandMessageHeader](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-didnotunderstandmessageheader.md) + + [System.ServiceModel.UnderstoodMessageHeader](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-understoodmessageheader.md) + + [System.ServiceModel.MessageClosed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageclosed.md) + + [System.ServiceModel.MessageClosedAgain](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageclosedagain.md) + + [System.ServiceModel.MessageCopied](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-messagecopied.md) + + [System.ServiceModel.MessageRead](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageread.md) + + [System.ServiceModel.MessageWritten](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-messagewritten.md) + + [System.ServiceModel.BeginExecuteMethod](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-beginexecutemethod.md) + + [System.ServiceModel.ConfigurationIsReadOnly](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-configurationisreadonly.md) + + [System.ServiceModel.ConfiguredExtensionTypeNotFound](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-configuredextensiontypenotfound.md) + + [System.ServiceModel.EvaluationContextNotFound](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-evaluationcontextnotfound.md) + + [System.ServiceModel.EndExecuteMethod](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-endexecutemethod.md) + + [System.ServiceModel.ExtensionCollectionDoesNotExist](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectiondoesnotexist.md) + + [System.ServiceModel.ExtensionCollectionNameNotFound](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectionnamenotfound.md) + + [System.ServiceModel.ExtensionCollectionIsEmpty](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensioncollectionisempty.md) + + [System.ServiceModel.ExtensionElementAlreadyExistsInCollection](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-extensionelementalreadyexistsincollection.md) + + [System.ServiceModel.ElementTypeDoesntMatchConfiguredType](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-elementtypedoesntmatchconfiguredtype.md) + + [System.ServiceModel.ErrorInvokingUserCode](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-errorinvokingusercode.md) + + [System.ServiceModel.GetBehaviorElement](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-getbehaviorelement.md) + + [System.ServiceModel.GetCommonBehaviors](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-getcommonbehaviors.md) + + [System.ServiceModel.GetConfiguredBinding](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-getconfiguredbinding.md) + + [System.ServiceModel.GetChannelEndpointElement](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-getchannelendpointelement.md) + + [System.ServiceModel.GetConfigurationSection](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-getconfigurationsection.md) + + [System.ServiceModel.GetDefaultConfiguredBinding](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-getdefaultconfiguredbinding.md) + + [System.ServiceModel.GetServiceElement](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-getserviceelement.md) + + [System.ServiceModel.MessageProcessingPaused](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-messageprocessingpaused.md) + + [System.ServiceModel.ManualFlowThrottleLimitReached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-manualflowthrottlelimitreached.md) + + [System.ServiceModel.OverridingDuplicateConfigurationKey](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-overridingduplicateconfigurationkey.md) + + [System.ServiceModel.RemoveBehavior](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-removebehavior.md) + + [System.ServiceModel.ServiceChannelLifetime](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicechannellifetime.md) + + [System.ServiceModel.ServiceHostCreation](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostcreation.md) + + [System.ServiceModel.ServiceHostBaseAddresses](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostbaseaddresses.md) + + [System.ServiceModel.ServiceHostTimeoutOnClose](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehosttimeoutonclose.md) + + [System.ServiceModel.ServiceHostFaulted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehostfaulted.md) + + [System.ServiceModel.ServiceHostErrorOnReleasePerformanceCounter](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicehosterroronreleaseperformancecounter.md) + + [System.ServiceModel.ServiceThrottleLimitReached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-servicethrottlelimitreached.md) + + [System.ServiceModel.ServiceOperationMissingReply](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationmissingreply.md) + + [System.ServiceModel.ServiceOperationMissingReplyContext](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationmissingreplycontext.md) + + [System.ServiceModel.ServiceOperationExceptionOnReply](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-serviceoperationexceptiononreply.md) + + [System.ServiceModel.SkipBehavior](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-skipbehavior.md) + + [System.ServiceModel.TransportListen](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-transportlisten.md) + + [System.ServiceModel.UnhandledAction](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-unhandledaction.md) + + [System.ServiceModel.PerformanceCounterFailedToLoad](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecounterfailedtoload.md) + + [System.ServiceModel.PerformanceCountersFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailed.md) + + [System.ServiceModel.PerformanceCountersFailedDuringUpdate](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedduringupdate.md) + + [System.ServiceModel.PerformanceCountersFailedForService](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedforservice.md) + + [System.ServiceModel.PerformanceCountersFailedOnRelease](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-performancecountersfailedonrelease.md) + + [System.ServiceModel.WsmexNonCriticalWsdlExportError](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-wsmexnoncriticalwsdlexporterror.md) + + [System.ServiceModel.WsmexNonCriticalWsdlImportError](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-wsmexnoncriticalwsdlimporterror.md) + + [System.ServiceModel.FailedToOpenIncomingChannel](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-failedtoopenincomingchannel.md) + + [System.ServiceModel.UnhandledExceptionInUserOperation](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-unhandledexceptioninuseroperation.md) + + [System.ServiceModel.DroppedAMessage](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-droppedamessage.md) + + [System.ServiceModel.CannotBeImportedInCurrentFormat](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-cannotbeimportedincurrentformat.md) + + [System.ServiceModel.MetadataExchangeClientSendRequest](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-metadataexchangeclientsendrequest.md) + + [System.ServiceModel.MetadataExchangeClientReceiveReply](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-metadataexchangeclientreceivereply.md) + + [System.ServiceModel.WarnHelpPageEnabledNoBaseAddress](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-warnhelppageenablednobaseaddress.md) + + `Activation` + + [System.ServiceModel.Activation.WebHostServiceActivated](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostserviceactivated.md) + + [System.ServiceModel.Activation.WebHostCompilation](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostcompilation.md) + + [System.ServiceModel.Activation.WebHostDebugRequest](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostdebugrequest.md) + + [System.ServiceModel.Activation.WebHostProtocolMisconfigured](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostprotocolmisconfigured.md) + + [System.ServiceModel.Activation.WebHostServiceCloseFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-webhostserviceclosefailed.md) + + [System.ServiceModel.Activation.MessageQueueClosed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueclosed.md) + + [System.ServiceModel.Activation.MessageQueueDuplicatedPipe](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedpipe.md) + + [System.ServiceModel.Activation.MessageQueueDuplicatedPipeError](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedpipeerror.md) + + [System.ServiceModel.Activation.MessageQueueDuplicatedSocket](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedsocket.md) + + [System.ServiceModel.Activation.MessageQueueDuplicatedSocketError](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueduplicatedsocketerror.md) + + [System.ServiceModel.Activation.MessageQueueUnregisterSucceeded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueunregistersucceeded.md) + + [System.ServiceModel.Activation.MessageQueueRegisterCalled](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregistercalled.md) + + [System.ServiceModel.Activation.MessageQueueRegisterSucceeded](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregistersucceeded.md) + + [System.ServiceModel.Activation.MessageQueueRegisterFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-messagequeueregisterfailed.md) + + [System.ServiceModel.Activation.ServiceContinue](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicecontinue.md) + + [System.ServiceModel.Activation.ServicePause](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicepause.md) + + [System.ServiceModel.Activation.ServiceShutdown](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-serviceshutdown.md) + + [System.ServiceModel.Activation.ServiceShutdownError](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-serviceshutdownerror.md) + + [System.ServiceModel.Activation.ServiceStart](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestart.md) + + [System.ServiceModel.Activation.ServiceStartPipeError](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestartpipeerror.md) + + [System.ServiceModel.Activation.ServiceStop](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-activation-servicestop.md) + + `PortSharing` + + [System.ServiceModel.PortSharing.PortSharingClosed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingclosed.md) + + [System.ServiceModel.PortSharing.PortSharingDuplicatedPipe](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduplicatedpipe.md) + + [System.ServiceModel.PortSharing.PortSharingDupHandleGranted](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduphandlegranted.md) + + [System.ServiceModel.PortSharing.PortSharingDuplicatedSocket](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharingduplicatedsocket.md) + + [System.ServiceModel.PortSharing.PortSharingListening](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-portsharinglistening.md) + + [System.ServiceModel.PortSharing.ReadNetTcpConfig](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-readnettcpconfig.md) + + [System.ServiceModel.PortSharing.ReadNetPipeConfig](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-readnetpipeconfig.md) + + [System.ServiceModel.PortSharing.RoutingTableCannotListen](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablecannotlisten.md) + + [System.ServiceModel.PortSharing.RoutingTableLookup](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablelookup.md) + + [System.ServiceModel.PortSharing.RoutingTableNamespaceConflict](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablenamespaceconflict.md) + + [System.ServiceModel.PortSharing.RoutingTablePathTooLong](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtablepathtoolong.md) + + [System.ServiceModel.PortSharing.RoutingTableRegisterSuccess](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtableregistersuccess.md) + + [System.ServiceModel.PortSharing.RoutingTableUnsupportedProtocol](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-routingtableunsupportedprotocol.md) + + [System.ServiceModel.PortSharing.SharedManagerServiceEndpointNotExist](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-sharedmanagerserviceendpointnotexist.md) + + [System.ServiceModel.PortSharing.TransportListenerListening](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerlistening.md) + + [System.ServiceModel.PortSharing.TransportListenerListenRequest](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerlistenrequest.md) + + [System.ServiceModel.PortSharing.TransportListenerSessionsReceived](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenersessionsreceived.md) + + [System.ServiceModel.PortSharing.TransportListenerStop](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-transportlistenerstop.md) + + [System.ServiceModel.PortSharing.WasCloseAllListenerChannelInstances](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-wasclosealllistenerchannelinstances.md) + + [System.ServiceModel.PortSharing.WasWebHostAPIFailed](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-waswebhostapifailed.md) + + [System.ServiceModel.PortSharing.WasConnected](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-portsharing-wasconnected.md) + + `TransactionBridge` + + [Microsoft.Transactions.TransactionBridge.CreateTransactionFailure](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-createtransactionfailure.md) + + [Microsoft.Transactions.TransactionBridge.EnlistTransactionFailure](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-channels-connectionpoolmaxoutboundconnectionsperendpointquotareached.md) + + [Microsoft.Transactions.TransactionBridge.RegisterParticipantFailure](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registerparticipantfailure.md) + + [Microsoft.Transactions.TransactionBridge.VolatileOutcomeTimeout](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-volatileoutcometimeout.md) + + [Microsoft.Transactions.TransactionBridge.DurableParticipantReplayWhilePreparing](../../../../../docs/framework/wcf/diagnostics/tracing/mtt-durableparticipantreplaywhilepreparing.md) + + [Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorFaulted](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorfaulted.md) + + [Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorFailed](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registrationcoordinatorfailed.md) + + [Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorResponseInvalidMetadata](../../../../../docs/framework/wcf/diagnostics/tracing/mts-registrationcoordinatorresponseinvalidmetadata.md) + + [Microsoft.Transactions.TransactionBridge.RecoveredCoordinatorInvalidMetadata](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-recoveredcoordinatorinvalidmetadata.md) + + [Microsoft.Transactions.TransactionBridge.RecoveredParticipantInvalidMetadata](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-recoveredparticipantinvalidmetadata.md) + + [Microsoft.Transactions.TransactionBridge.EnlistTransaction](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-enlisttransaction.md) + + [Microsoft.Transactions.TransactionBridge.RegisterCoordinator](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registercoordinator.md) + + [Microsoft.Transactions.TransactionBridge.RegisterParticipant](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-registerparticipant.md) + + [Microsoft.Transactions.TransactionBridge.ProtocolInitialized](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-protocolinitialized.md) + + [Microsoft.Transactions.TransactionBridge.ProtocolStarted](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-protocolstarted.md) + + [Microsoft.Transactions.TransactionBridge.PrepareMessageRetry](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-preparemessageretry.md) + + [Microsoft.Transactions.TransactionBridge.CommitMessageRetry](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-commitmessageretry.md) + + [Microsoft.Transactions.TransactionBridge.PreparedMessageRetry](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-preparedmessageretry.md) + + [Microsoft.Transactions.TransactionBridge.ReplayMessageRetry](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-replaymessageretry.md) + + [Microsoft.Transactions.TransactionBridge.ParticipantRecovered](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-participantrecovered.md) + + [Microsoft.Transactions.TransactionBridge.CoordinatorRecovered](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-coordinatorrecovered.md) + + [Microsoft.Transactions.TransactionBridge.EnlistmentIdentityCheckFailed](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-enlistmentidentitycheckfailed.md) + + [Microsoft.Transactions.TransactionBridge.ParticipantStateMachineFinished](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-participantstatemachinefinished.md) + + [Microsoft.Transactions.TransactionBridge.CoordinatorStateMachineFinished](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-coordinatorstatemachinefinished.md) + + [Microsoft.Transactions.TransactionBridge.VolatileParticipantInDoubt](../../../../../docs/framework/wcf/diagnostics/tracing/microsoft-transactions-transactionbridge-volatileparticipantindoubt.md) + + `IdentityModel` + + [System.IdentityModel.IdentityModelAsyncCallbackThrewException](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-identitymodelasynccallbackthrewexception.md) + + [System.IdentityModel.AuthorizationContextCreated](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-authorizationcontextcreated.md) + + [System.IdentityModel.AuthorizationPolicyEvaluated](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-authorizationpolicyevaluated.md) + + [System.IdentityModel.Selectors.GeneralInformation](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-generalinformation.md) + + [System.IdentityModel.Selectors.StoreLoading](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storeloading.md) + + [System.IdentityModel.Selectors.StoreBeginTransaction](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storebegintransaction.md) + + [System.IdentityModel.Selectors.StoreCommitTransaction](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storecommittransaction.md) + + [System.IdentityModel.Selectors.StoreRollbackTransaction](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storerollbacktransaction.md) + + [System.IdentityModel.Selectors.StoreClosing](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storeclosing.md) + + [System.IdentityModel.Selectors.StoreFailedToOpenStore](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storefailedtoopenstore.md) + + [System.IdentityModel.Selectors.StoreSignatureNotValid](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storesignaturenotvalid.md) + + [System.IdentityModel.Selectors.StoreDeleting](../../../../../docs/framework/wcf/diagnostics/tracing/system-identitymodel-selectors-storedeleting.md) + + `Transactions` + + [System.ServiceModel.TxSourceTxScopeRequiredIsTransactedTransport](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredistransactedtransport.md) + + [System.ServiceModel.TxSourceTxScopeRequiredIsTransactionFlow](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredistransactionflow.md) + + [System.ServiceModel.TxSourceTxScopeRequiredIsAttachedTransaction](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequiredisattachedtransaction.md) + + [System.ServiceModel.TxSourceTxScopeRequiredIsCreateNewTransaction](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txsourcetxscoperequirediscreatenewtransaction.md) + + [System.ServiceModel.TxCompletionStatusCompletedForAutocomplete](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforautocomplete.md) + + [System.ServiceModel.TxCompletionStatusCompletedForError](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforerror.md) + + [System.ServiceModel.TxCompletionStatusCompletedForSetComplete](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforsetcomplete.md) + + [System.ServiceModel.TxCompletionStatusCompletedForTACOSC](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedfortacosc.md) + + [System.ServiceModel.TxCompletionStatusCompletedForAsyncAbort](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatuscompletedforasyncabort.md) + + [System.ServiceModel.TxCompletionStatusRemainsAttached](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatusremainsattached.md) + + [System.ServiceModel.TxCompletionStatusAbortedOnSessionClose](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txcompletionstatusabortedonsessionclose.md) + + [System.ServiceModel.TxReleaseServiceInstanceOnCompletion](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txreleaseserviceinstanceoncompletion.md) + + [System.ServiceModel.TxAsyncAbort](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txasyncabort.md) + + [System.ServiceModel.TxFailedToNegotiateOleTx](../../../../../docs/framework/wcf/diagnostics/tracing/system-servicemodel-txfailedtonegotiateoletx.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/transfer.md b/docs/framework/wcf/diagnostics/tracing/transfer.md new file mode 100644 index 00000000000..af85cf1b9aa --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/transfer.md @@ -0,0 +1,105 @@ +--- +title: "転送 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dfcfa36c-d3bb-44b4-aa15-1c922c6f73e6 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 転送 +このトピックでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] のアクティビティ トレース モデルで使用される転送という概念について説明します。 + +## 転送の定義 + アクティビティ間の転送は、エンドポイント内の関連アクティビティで発生したイベント間の因果関係を表します。 制御が 2 つのアクティビティ間を流れる場合 \(アクティビティの境界を越えたメソッド呼び出しなど\)、転送によってこれらのアクティビティが関連付けられます。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では、サービスでバイトを受信すると、"リッスン" アクティビティが "バイトを受信" アクティビティに転送され、このアクティビティでメッセージ オブジェクトが作成されます。 エンドツーエンドのトレースのシナリオの一覧、および各シナリオの個々のアクティビティとトレース デザインについては、「[エンドツーエンドのトレースのシナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md)」を参照してください。 + + 転送トレースを出力するには、次の構成コードのように、トレース ソースに `ActivityTracing` を設定します。 + +``` + +``` + +## 転送を使用したエンドポイント内でのアクティビティの関連付け + アクティビティと転送により、ユーザーはエラーの根本原因をほぼ突き止めることができます。 たとえば、コンポーネント M と N のアクティビティ M と N の間で、M から N および N から M への転送を行い、M への転送の直後に N でクラッシュが発生した場合、N から M にデータを返したことが原因でクラッシュが発生した可能性があるという結論を下すことができます。 + + アクティビティ M とアクティビティ N の間に制御のフローが存在する場合、転送トレースは M から N に出力されます。 たとえば、メソッド呼び出しがアクティビティの境界を越えるため、N が M に代わって何らかの処理を実行するとします。 N は既に存在する場合もあれば、作成されている場合もあります。 N が、M に代わって何らかの処理を実行する新しいアクティビティである場合、N は M によって発生します。 + + M から N への転送の後に、N から M に転送することはできません。 これは、M は N で処理を発生させることはできますが、N がその処理をいつ完了するかまでは追跡しないからです。 実際、N がタスクを完了する前に M が終了する場合があります。 このような状況は、リスナーのアクティビティ \(N\) を発生させた後に終了する "ServiceHost を開く" アクティビティ \(M\) で発生します。 N から M への転送は、N が M に関連する処理を完了したことを意味します。 + + N は、M に関連しない他の処理を引き続き実行できます。たとえば、既存の認証システム アクティビティ \(N\) は、さまざまなログイン アクティビティからのログイン要求 \(M\) を受信し続けることができます。 + + アクティビティ M と N の間に、入れ子のリレーションシップが必ずしも存在するわけではありません。 入れ子のリレーションシップが存在しない状況が発生する原因として、2 つのケースが考えられます。 1 つは、アクティビティ M がアクティビティ N を開始したが、N で実行される実際の処理を M が監視しない場合です。 もう 1 つは、N が既に存在する場合です。 + +## 転送の例 + 転送の 2 つの例を次に示します。 + +- サービス ホストの作成時に、コンストラクターは呼び出し元のコードから制御を取得します。つまり、呼び出し元のコードがコンストラクターに転送されます。 コンストラクターは、必要な処理を終えると、呼び出し元に制御を返します。つまり、コンストラクターから呼び出し元への逆転送が起こります。 これは、入れ子になったリレーションシップの例です。 + +- リスナーはトランスポート データの処理を開始するときに、新しいスレッドを作成し、"バイトを受信" アクティビティに、処理の適切なコンテキストとして制御とデータを渡します。 このスレッドが要求の処理を完了しても、"バイトを受信" アクティビティからリスナーには何も渡されません。 この場合、新しいスレッドのアクティビティへの転送はありますが、このアクティビティからの転送はありません。 2 つのアクティビティは関連していますが、入れ子にはなっていません。 + +## アクティビティ転送シーケンス + 適切なアクティビティ転送シーケンスには、次の手順が含まれます。 + +1. 新しい gAId を選択して、新しいアクティビティを開始します。 + +2. 現在のアクティビティ ID から新しい gAId への転送トレースを出力します。 + +3. TLS に新しい ID を設定します。 + +4. Start トレースを出力して、新しいアクティビティの開始を示します。 + +5. 次の手順を実行して、元のアクティビティに戻ります。 + +6. 元の gAId への転送トレースを出力します。 + +7. Stop トレースを出力して、新しいアクティビティの終了を示します。 + +8. TLS を以前の gAId に設定します。 + + これを実行する方法を次のコード例に示します。 この例は、新しいアクティビティへの転送時にブロック呼び出しが行われることを想定しており、Suspend トレースと Resume トレースが含まれています。 + +``` +// 0. Create a trace source +TraceSource ts = new TraceSource(“myTS”); +// 1. remember existing (“ambient”) activity for clean up +Guid oldGuid = Trace.CorrelationManager.ActivityId; +// this will be our new activity +Guid newGuid = Guid.NewGuid(); +// 2. call transfer, indicating that we are switching to the new AID +ts.TraceTransfer(667, "Transferring.", newGuid); +// 3. Suspend the current activity. +ts.TraceEvent(TraceEventType.Suspend, 667, "Suspend: Activity " + i-1); +// 4. set the new AID in TLS +Trace.CorrelationManager.ActivityId = newGuid; +// 5. Emit the start trace +ts.TraceEvent(TraceEventType.Start, 667, "Boundary: Activity " + i); +// trace something +ts.TraceEvent(TraceEventType.Information, 667, "Hello from activity " + i); +// Perform Work +// some work. +// Return +ts.TraceEvent(TraceEventType.Information, 667, "Work complete on activity " + i); +// 6. Emit the transfer returning to the original activity +ts.TraceTransfer(667, "Transferring Back.", oldGuid); +// 7. Emit the End trace +ts.TraceEvent(TraceEventType.Stop, 667, "Boundary: Activity " + i); +// 8. Change the tls variable to the original AID +Trace.CorrelationManager.ActivityId = oldGuid; +// 9. Resume the old activity +ts.TraceEvent(TraceEventType.Resume, 667, "Resume: Activity " + i-1); +``` + +## 参照 + [トレースの構成](../../../../../docs/framework/wcf/diagnostics/tracing/configuring-tracing.md) + [サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md) + [エンドツーエンドのトレースのシナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md) + [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md b/docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md new file mode 100644 index 00000000000..85edf880743 --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md @@ -0,0 +1,211 @@ +--- +title: "サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 05d2321c-8acb-49d7-a6cd-8ef2220c6775 +caps.latest.revision: 22 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 22 +--- +# サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング +ここでは、トレース データの形式、表示方法、およびサービス トレース ビューアーを使用したアプリケーションのトラブルシューティングの方法について説明します。 + +## サービス トレース ビューアー ツールの使用 + [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] のサービス トレース ビューアー ツールでは、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] リスナーによって生成された診断トレースを相互に関連付けて、エラーの根本原因を突き止めることができます。 このツールを使用すると、トレースを容易に表示、グループ化、およびフィルター処理できるため、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] サービスの問題を診断、修復、および検証できます。 このツールの使用の詳細については、「[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md)」を参照してください。 + + このトピックには、[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md)を使って表示した場合の、[トレースとメッセージ ログ](../../../../../docs/framework/wcf/samples/tracing-and-message-logging.md)のサンプルを実行して生成されたトレースのスクリーンショットが含まれています。 ここでは、トレースの内容、アクティビティ、およびアクティビティの相関関係を理解する方法と、トラブルシューティングを行うときに多数のトレースを分析する方法について説明します。 + +## トレースの内容の表示 + トレース イベントには、次のような最も重要な情報が含まれています。 + +- 設定時のアクティビティ名。 + +- 出力時間。 + +- トレース レベル。 + +- トレース ソース名。 + +- プロセス名。 + +- スレッド ID。 + +- 一意のトレース識別子。これは、MSDN オンライン ライブラリ内の参照先の URL です。このライブラリからそのトレースに関連する詳細情報を入手できます。 + + これらの情報はすべて、サービス トレース ビューアーの右上のパネルに表示されます。トレースを選択した場合は、右下のパネルの \[書式付き\] ビューにある **\[基本情報\]** セクションに表示されます。 + +> [!NOTE] +> クライアントとサービスが同じコンピューター上にある場合、両方のアプリケーションのトレースが存在します。 これらのトレースは、**\[プロセス名\]** 列を使用してフィルター処理できます。 + + また、\[書式付き\] ビューには、トレースの説明と追加詳細情報も表示されます \(利用できる場合\)。 追加詳細情報には、例外の種類とメッセージ、呼び出しスタック、メッセージ アクション、転送元\/転送先フィールド、およびその他の例外情報が含まれる場合があります。 + + \[XML\] ビューには、以下の有用な XML タグが含まれます。 + +- \ \(トレース レベル\) + +- \ + +- \ \(トレース ソース名\) + +- \ \(トレースの出力時に設定するアクティビティ ID\) + +- \ \(プロセスとスレッド ID\) + +- \ + +- \ \(メッセージの送信時にメッセージ ヘッダーに設定する \、\、および \ を含む\) + + "チャネル経由でメッセージを送信しました" トレースを調べると、次のような内容を確認できます。 + +``` + + + 262163 + 3 + 0 + 8 + + + + + + TEST1 + + + + + + http://msdn.microsoft.com/library/System.ServiceModel.Channels.MessageSent.aspx + Sent a message over a channel. + client.exe + System.ServiceModel.Channels.ClientFramingDuplexSessionChannel/35191196 + + + + False + + + http://Microsoft.ServiceModel.Samples/ICalculator/Multiply + urn:uuid:7c6670d8-4c9c-496e-b6a0-2ceb6db35338 + 27c6331d-8998-43aa-a382-03239013a6bd + +
http://www.w3.org/2005/08/addressing/anonymous
+
+ net.tcp://localhost/servicemodelsamples/service +
+ net.tcp://localhost/servicemodelsamples/service +
+
+
+
+
+
+``` + +## ServiceModel のエンドツーエンドのトレース + Off 以外の `System.ServiceModel` と `switchValue` を使用して `ActivityTracing` トレース ソースを設定すると、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、アクティビティを作成し、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] での処理のために転送します。 + + アクティビティとは、その処理単位に関連するすべてのトレースをグループ化する処理の論理単位です。 たとえば、要求ごとに 1 つのアクティビティを定義できます。 転送により、エンドポイント内のアクティビティ間の因果関係が作成されます。 アクティビティ ID を伝達することにより、エンドポイント間でアクティビティを関連付けることができます。 これを行うには、各エンドポイントの構成で `propagateActivity`\=`true` に設定します。 アクティビティ、転送、および伝達により、エラーの関連付けを行うことができます。 このようにして、エラーの根本原因をよりすばやく見つけることができるようになります。 + + クライアントでは、オブジェクト モデル呼び出しごとに 1 つの [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] アクティビティが作成されます \(Open ChannelFactory、Add、Divide など\)。 各操作呼び出しは、"プロセス アクション" アクティビティで処理されます。 + + 次のスクリーンショットは、[トレースとメッセージ ログ](../../../../../docs/framework/wcf/samples/tracing-and-message-logging.md)のサンプルから引用したものです。左のパネルには、クライアント プロセスで作成されたアクティビティの一覧が、作成時刻順に並べ替えられて表示されています。 以下に、各アクティビティを時系列で示します。 + +- チャネル ファクトリ \(ClientBase\) を作成しました。 + +- チャネル ファクトリを開きました。 + +- Add アクションを処理しました。 + +- セキュリティで保護されたセッションを設定し \(これは最初の要求で発生します\)、RST、RSTR、SCT \(プロセス メッセージ 1、2、3\) の 3 つのセキュリティ インフラストラクチャ応答メッセージを処理しました。 + +- Subtract、Multiply、および Divide の各要求を処理しました。 + +- チャネル ファクトリを閉じ、これにより、セキュリティで保護されたセッションを閉じました。また、セキュリティ メッセージ応答の Cancel を処理しました。 + + セキュリティ インフラストラクチャ メッセージがあるのは、wsHttpBinding を使用しているためです。 + +> [!NOTE] +> [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] では、転送によって、応答メッセージを要求メッセージが含まれた対応する "プロセス アクション" アクティビティに関連付ける前に、別のアクティビティで最初に処理する応答メッセージ \(プロセス メッセージ\) を示します。 これは、インフラストラクチャ メッセージと非同期要求に対して行います。非同期要求の場合、インフラストラクチャ メッセージを調べて activityId ヘッダーを確認し、該当の ID を持つ既存の "プロセス アクション" アクティビティを特定してこれに関連付ける必要があるためです。 同期要求の場合は、応答のためにブロックするため、応答を関連付けるプロセス アクションがわかります。 + + ![トレース ビューアーの使用](../../../../../docs/framework/wcf/diagnostics/tracing/media/e2etrace4.gif "e2eTrace4") +作成時刻に従って一覧表示された WCF クライアント アクティビティ \(左のパネル\)、および入れ子にされたアクティビティとトレース \(右上のパネル\) + + 左のパネルでアクティビティを選択すると、右上のパネルに入れ子にされたアクティビティとトレースが表示されます。 したがって、これは、選択した親アクティビティに基づいて、左側のアクティビティのリストの階層表示を減らしたものです。 選択した "プロセス アクション Add" は最初に作成された要求であるため、このアクティビティには、"セキュリティで保護されたセッションの設定" アクティビティ \(転送先と返送元\) と、Add アクションの実際の処理のトレースが含まれます。 + + 左のパネルで "プロセス アクション Add" アクティビティをダブルクリックすると、Add に関連する [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] クライアント アクティビティがグラフィック表示されます。 左の最初のアクティビティがルート アクティビティ \(0000\) であり、既定のアクティビティです。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、アンビエント アクティビティから転送します。 アンビエント アクティビティが定義されていない場合、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は 0000 から転送します。 ここでは、2 番目のアクティビティである "プロセス アクション Add" が 0 から転送します。 次に、"セキュリティで保護されたセッションの設定" が示されています。 + + ![トレース ビューアーの使用](../../../../../docs/framework/wcf/diagnostics/tracing/media/e2etrace5.gif "e2eTrace5") +WCF クライアント アクティビティのグラフ ビュー : アンビエント アクティビティ \(ここでは 0\)、プロセス アクション、およびセキュリティで保護されたセッションの設定 + + 右上のパネルでは、"プロセス アクション Add" アクティビティに関連するすべてのトレースを確認できます。 具体的には、同じアクティビティで、要求メッセージ \("チャネル経由でメッセージを送信しました"\) を送信し、応答 \("チャネル経由でメッセージを受信しました"\) を受け取っています。 これを次のグラフに示します。 わかりやすくするために、このグラフでは、"セキュリティで保護されたセッションの設定" アクティビティを折りたたんでいます。 + + ![トレース ビューアーの使用](../../../../../docs/framework/wcf/diagnostics/tracing/media/e2etrace6.gif "e2eTrace6") +"プロセス アクション" アクティビティのトレースのリスト : 同じアクティビティで要求を送信し、応答を受信します。 + + ここでは、わかりやすくするために、クライアント トレースだけを読み込んでいますが、サービス トレースもツールに読み込み、`propagateActivity` が `true.` に設定されている場合は、サービス トレース \(受信した要求メッセージと送信した応答メッセージ\) が同じアクティビティに表示されます。これについては、後ほど図に示します。 + + サービスでは、アクティビティ モデルは [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] の概念に次のように対応付けられます。 + +1. ServiceHost を作成して開きます \(たとえば、セキュリティの場合、複数のホスト関連アクティビティを作成できます\)。 + +2. ServiceHost のリスナーごとに "リッスン" アクティビティを作成します \(Open ServiceHost との間の転送を使用\)。 + +3. リスナーは、クライアントが開始した通信要求を検出すると、"バイトを受信" アクティビティに転送します。このアクティビティで、クライアントから送信されたすべてのバイトが処理されます。 このアクティビティでは、クライアントとサーバーの対話中に発生したすべての接続エラーを確認できます。 + +4. メッセージに対応する、受信した各バイト セットについては、"メッセージを処理" アクティビティでこれらのバイトを処理します。このアクティビティで [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] メッセージ オブジェクトを作成します。 このアクティビティでは、不正なエンベロープや誤った形式のメッセージに関連するエラーを確認できます。 + +5. メッセージが作成されたら、"プロセス アクション" アクティビティに転送します。 クライアントとサービスの両方で、`propagateActivity` が `true` に設定されている場合、既に説明したように、このアクティビティはクライアントに定義されている ID と同じ ID を持ちます。 エンドポイント間を直接関連付けることによる利点を得ることができるのは、この段階からです。[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] で出力された、要求に関連するすべてのトレースは、応答メッセージ処理も含め、同じアクティビティに存在するからです。 + +6. プロセス外のアクションについて、"ユーザー コードの実行" アクティビティを作成して、ユーザー コードで出力されるトレースを [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] で出力されるトレースから分離します。 前の例では、"サービスが Add 応答を送信します" トレースは、クライアントによって伝達されたアクティビティではなく、"ユーザー コードを実行" アクティビティで出力されます \(該当する場合\)。 + + 次の図では、左の最初のアクティビティがルート アクティビティ \(0000\) であり、既定のアクティビティです。 次の 3 つのアクティビティは、ServiceHost を開くためのアクティビティです。 5 列目のアクティビティはリスナーです。残りのアクティビティ \(6 ~ 8 列目\) は、バイト処理からユーザー コードのアクティブ化までの、WCF でのメッセージ処理を示しています。 + + ![トレース ビューアーの使用](../../../../../docs/framework/wcf/diagnostics/tracing/media/e2etrace7.gif "e2eTrace7") +WCF サービス アクティビティのリスト + + 次のスクリーンショットは、クライアントとサービスの両方のアクティビティを示しています。プロセス全体にわたり、"プロセス アクション Add" アクティビティはオレンジで強調表示されています。 矢印は、クライアントとサービスによって送受信された要求メッセージと応答メッセージを関連付けています。 このグラフでは、"プロセス アクション" のトレースはプロセス間で分かれていますが、右上のパネルには同じアクティビティの一部として示されています。 このパネルには、送信されたメッセージのクライアント トレースの後に、受信および処理されたメッセージのサービス トレースが表示されています。 + + ![トレース ビューアーの使用](../../../../../docs/framework/wcf/diagnostics/tracing/media/e2etrace8.gif "e2eTrace8") +WCF クライアント アクティビティとサービス アクティビティのグラフ ビュー + + 次のエラー シナリオでは、サービスとクライアントのエラー トレースおよび警告トレースが関連付けられます。 サービスのユーザー コードで最初に例外がスローされています \("サービスはユーザー コードでこの要求を処理できません" という例外の警告トレースを含む右端の緑のアクティビティ\)。 クライアントに応答が送信されると、警告トレースが再度出力されて、エラー メッセージが表示されます \(左のピンクのアクティビティ\)。 その後、クライアントは WCF クライアントを閉じます \(左下の黄色のアクティビティ\)。これにより、サービスへの接続が中止されます。 サービスはエラーをスローします \(右側の最も長いピンクのアクティビティ\)。 + + ![トレース ビューアーの使用](../../../../../docs/framework/wcf/diagnostics/tracing/media/wcfc-e2etrace9s.gif "wcfc\_e2etrace9s") +サービスとクライアント間のエラーの相関関係 + + これらのトレースの生成に使用したサンプルは、wsHttpBinding を使用する一連の同期要求です。 セキュリティを使用しないシナリオ、または非同期要求を使用するシナリオの場合は、このグラフとは違う部分があります。非同期要求の場合、"プロセス アクション" アクティビティは、非同期呼び出しを構成する開始操作と終了操作の間に配置され、コールバック アクティビティへの転送が示されます。 その他のシナリオの詳細については、「[エンドツーエンドのトレースのシナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md)」を参照してください。 + +## サービス トレース ビューアーを使用したトラブルシューティング + サービス トレース ビューアー ツールにトレース ファイルを読み込むと、左のパネルの赤または黄色のアクティビティを選択することによって、アプリケーションの問題の原因を突き止めることができます。 通常、000 アクティビティには、ユーザーにバブリングする未処理の例外が含まれます。 + + ![トレース ビューアーの使用](../../../../../docs/framework/wcf/diagnostics/tracing/media/e2etrace10.gif "e2eTrace10") +赤または黄色のアクティビティを選択して問題の原因を特定します。 + + 右上のパネルでは、左側で選択したアクティビティのトレースを調べることができます。 このパネルで赤または黄色のトレースを調べ、それらがどのように関連しているかを確認できます。 前のグラフで、同じ "プロセス アクション" アクティビティのクライアントとサービスの警告トレースを確認します。 + + これらのトレースからエラーの根本原因がわからない場合は、左のパネルで選択したアクティビティ \(ここでは "プロセス アクション"\) をダブルクリックすることでグラフを利用できます。 関連アクティビティが含まれたグラフが表示されます。 \("\+" 記号をクリックして\) 関連アクティビティを展開すると、関連アクティビティで最初に出力された赤または黄色のトレースが見つかります。 調べる対象の赤または黄色のトレースの直前に発生したアクティビティを展開し、エンドポイント間の関連アクティビティまたはメッセージ フローをたどって問題の根本原因を突き止めます。 + + ![トレース ビューアーの使用](../../../../../docs/framework/wcf/diagnostics/tracing/media/wcfc-e2etrace9s.gif "wcfc\_e2etrace9s") +アクティビティを展開して問題の根本原因を追跡します。 + + ServiceModel の `ActivityTracing` が無効になっていても、ServiceModel トレースが有効であれば、0000 アクティビティで出力された ServiceModel のトレースを確認できます。 ただし、この場合、これらのトレースの相関関係を理解するには多くの労力を必要とします。 + + メッセージ ログを有効にすると、\[メッセージ\] タブを使用してエラーの影響を受けるメッセージを確認できます。 赤または黄色のメッセージをダブルクリックすると、関連アクティビティのグラフ ビューを表示できます。 これらのアクティビティは、エラーが発生した要求に最も密接に関連するアクティビティです。 + + ![トレース ビューアーの使用](../../../../../docs/framework/wcf/diagnostics/tracing/media/e2etrace11.gif "e2eTrace11") +トラブルシューティングを開始するには、赤または黄色のメッセージ トレースを選択し、これをダブルクリックして根本原因を追跡します。 + +## 参照 + [エンドツーエンドのトレースのシナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md) + [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md b/docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md new file mode 100644 index 00000000000..2101c33c71a --- /dev/null +++ b/docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md @@ -0,0 +1,44 @@ +--- +title: "トレースを使用したアプリケーションのトラブルシューティング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7676b9bb-cbd1-41fd-9a93-cc615af6e2d0 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# トレースを使用したアプリケーションのトラブルシューティング +このセクションには、トレースを使用してアプリケーションをトラブルシューティングする方法について説明したさまざまなトピックが含まれています。 + +## このセクションの内容 + [トレースとメッセージ ログの推奨設定](../../../../../docs/framework/wcf/diagnostics/tracing/recommended-settings-for-tracing-and-message-logging.md) + 運用環境とデバッグ環境の推奨設定について説明します。 + + [サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング](../../../../../docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md) + ここでは、サービス トレース ビューアー ツールを使用して、トレース データの表示、関連付け、および分析を行う方法について説明します。 + + [重要なトレース](../../../../../docs/framework/wcf/diagnostics/tracing/significant-traces.md) + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] によって出力される主要なトレースの一覧です。 + + [クライアントでのデバッグ](../../../../../docs/framework/wcf/diagnostics/tracing/debugging-on-the-client.md) + クライアントでアプリケーションをデバッグできるようにします。 + + [エンドツーエンドのトレースのシナリオ](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing-scenarios.md) + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] のエンドツーエンドのシナリオ \(たとえば、wsHttp による同期要求\/応答や TCP による非同期の一方向要求\) で使用されるトレースについて説明します。 + + [ユーザー コード トレースの出力](../../../../../docs/framework/wcf/diagnostics/tracing/emitting-user-code-traces.md) + プログラムを使用してユーザー コードでトレースを出力する方法について説明します。これによってインストルメンテーション データを事前に作成し、後の診断 \(および WCF トレースとの関連付け\) で使用できます。 + +## 参照 + [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) + [トレース](../../../../../docs/framework/wcf/diagnostics/tracing/index.md) + [エンドツーエンドのトレース](../../../../../docs/framework/wcf/diagnostics/tracing/end-to-end-tracing.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/viewing-message-logs.md b/docs/framework/wcf/diagnostics/viewing-message-logs.md new file mode 100644 index 00000000000..499f90de3c4 --- /dev/null +++ b/docs/framework/wcf/diagnostics/viewing-message-logs.md @@ -0,0 +1,73 @@ +--- +title: "メッセージ ログを参照する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3012fa13-f650-45fb-aaea-c5cca8c7d372 +caps.latest.revision: 22 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 22 +--- +# メッセージ ログを参照する +ここでは、メッセージ ログの表示方法について説明します。 + +## サービス トレース ビューアーでのメッセージ ログの表示 + メッセージは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で処理されるときに変換されます。そのため、ログ記録されたメッセージは、ログ記録された時点でのメッセージの内容を反映しているにすぎず、ネットワーク上での内容ではありません。 + + メッセージ ログの出力はメッセージの転送形式とは関係がないため、メッセージ ログは常にデコードされたメッセージを出力します。メッセージ ログが適切に設定されていれば、すべてのログ メッセージはプレーンテキストになります。たとえば、ログ メッセージの形式 \(プレーンテキスト\) は、バイナリ メッセージ エンコーダーの使用には影響されません。 + + XmlWriterTraceListener の出力は、一連の XML フラグメントを含んだファイルです。このファイルは有効な XML ファイルではないことに注意してください。[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) を使用してメッセージ ログ ファイルを表示することをお勧めします。このツールの使用方法の詳細については、「[サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング](../../../../docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md)」を参照してください。 + + サービス トレース ビューアーでは、メッセージは **\[Message\]** タブに表示されます。操作エラーの原因となった、または操作エラーに関連するメッセージは、エラーの重大度に応じて、黄色 \(警告レベル\) または赤色 \(エラー レベル\) で強調表示されます。メッセージをダブルクリックすると、要求の処理のコンテキストに従ってメッセージ トレースが表示されます。 + +> [!NOTE] +> メッセージにヘッダーがない場合は、`
` タグがログに記録されません。 + +## クライアント、中継、およびサービスによって記録されたメッセージの表示 + 環境には、クライアント、クライアントからメッセージが送信される中継、中継からさらにメッセージが転送されるサービスが含まれることがあります。これら 3 つの場所すべてでメッセージのログ記録が有効になっており、3 つのメッセージ ログをすべて同時に[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) に表示した場合、メッセージ ログ交換は正しく表示されません。これは、メッセージ ヘッダーの `CorrelationId` と `ActivityId` が、すべての送受信ペアで一意にならなくなるためです。 + + この問題を解決するには、次のいずれかの方法に従います。 + +- [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) では、常に 3 つのメッセージ ログのうち 2 つだけを表示します。 + +- 3 つのログすべてを[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) で同時に表示する必要がある場合は、新規の インスタンスを作成して中継サービスを変更できます。このインスタンスは、受信メッセージの本文のコピーであり、また、`ActivityId` ヘッダーおよび `Action` ヘッダーを除くすべてのヘッダーのコピーであることが必要です。これを実行する方法を次のコード例に示します。 + +``` +Message outgoingMessage = Message.CreateMessage(incomingMessage.Version, incomingMessage.Headers.Action, incomingMessage.GetReaderAtBodyContents()); + +for (int i = 0; i < incomingMessage.Headers.Count; i++) +{ + if (incomingMessage.Headers[i].Name.Equals("ActivityId", StringComparison.InvariantCultureIgnoreCase) || +incomingMessage.Headers[i].Name.Equals("Action", StringComparison.InvariantCultureIgnoreCase)) + { + continue; + } + outgoingMessage.Headers.CopyHeaderFrom(incomingMessage, i); +} +``` + +## メッセージ ログ内容が不正確になる例外的なケース + 次の条件では、ログ記録されたメッセージがネットワーク上にあるオクテット ストリームの正確な表現とはならない場合があります。 + +- BasicHttpBinding の場合、エンベロープ ヘッダーは \/addressing\/none 名前空間の受信メッセージについてログ記録されます。 + +- 空白に不一致が生じる場合があります。 + +- 受信メッセージの場合、空の要素が異なる表現になる場合があります。たとえば、\ ではなく \\<\/tag\> となることがあります。 + +- 既知の PII ログ記録が、既定または enableLoggingKnownPii\="true" という明示的な設定で、無効になっている場合。 + +- UTF\-8 へ変換するためのエンコードが有効な場合。 + +## 参照 + [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) + [サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング](../../../../docs/framework/wcf/diagnostics/tracing/using-service-trace-viewer-for-viewing-correlated-traces-and-troubleshooting.md) + [メッセージ ログ](../../../../docs/framework/wcf/diagnostics/message-logging.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/TOC.md b/docs/framework/wcf/diagnostics/wmi/TOC.md new file mode 100644 index 00000000000..929716da0a2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/TOC.md @@ -0,0 +1,77 @@ +# [エンドポイント](endpoint.md) +# [診断用の WMI (Windows Management Instrumentation) の使用](index.md) +# [BindingElement](bindingelement.md) +# [ActivityTransfer](activitytransfer.md) +# [ServiceAppDomain](serviceappdomain.md) +# [ReliableSessionBindingElement](reliablesessionbindingelement.md) +# [SecurityBindingElement](securitybindingelement.md) +# [MsmqIntegrationBindingElement](msmqintegrationbindingelement.md) +# [HttpsTransportBindingElement](httpstransportbindingelement.md) +# [BinaryMessageEncodingBindingElement](binarymessageencodingbindingelement.md) +# [CustomBindingElement](custombindingelement.md) +# [チャネル クラス](channel-class.md) +# [ChannelPoolSettings](channelpoolsettings.md) +# [TraceListener](tracelistener.md) +# [NamedPipeTransportBindingElement](namedpipetransportbindingelement.md) +# [ConnectionOrientedTransportBindingElement](connectionorientedtransportbindingelement.md) +# [WMI クラスの参照](wmi-class-reference.md) +# [TraceListenerArgument](tracelistenerargument.md) +# [SynchronousReceiveBehavior](synchronousreceivebehavior.md) +# [SymmetricSecurityBindingElement](symmetricsecuritybindingelement.md) +# [操作クラス](operation-class.md) +# [GetOperationCounterInstanceName](getoperationcounterinstancename.md) +# [コントラクト](contract.md) +# [ServiceDebugBehavior](servicedebugbehavior.md) +# [PeerCustomResolverBindingElement](peercustomresolverbindingelement.md) +# [ServiceCredentials](servicecredentials.md) +# [XmlDictionaryReaderQuotas](xmldictionaryreaderquotas.md) +# [WSAT_TraceRecord](wsat-tracerecord.md) +# [サービス](service.md) +# [MustUnderstandBehavior](mustunderstandbehavior.md) +# [WSAT_TraceProvider](wsat-traceprovider.md) +# [OperationBehaviorAttribute](operationbehaviorattribute.md) +# [XmlSerializerOperationBehavior](xmlserializeroperationbehavior.md) +# [TextMessageEncodingBindingElement](textmessageencodingbindingelement.md) +# [MessageEncodingBindingElement](messageencodingbindingelement.md) +# [AsymmetricSecurityBindingElement](asymmetricsecuritybindingelement.md) +# [ServiceAuthorizationBehavior](serviceauthorizationbehavior.md) +# [動作クラス](behavior-class.md) +# [AppDomainInfo](appdomaininfo.md) +# [ServiceBehaviorAttribute](servicebehaviorattribute.md) +# [OneWayBindingElement](onewaybindingelement.md) +# [ClientViaBehavior](clientviabehavior.md) +# [TransportBindingElement](transportbindingelement.md) +# [MatchAllEndpointBehavior](matchallendpointbehavior.md) +# [WindowsStreamSecurityBindingElement](windowsstreamsecuritybindingelement.md) +# [MtomMessageEncodingBindingElement](mtommessageencodingbindingelement.md) +# [LocalServiceSecuritySettings](localservicesecuritysettings.md) +# [ServiceTimeoutsBehavior](servicetimeoutsbehavior.md) +# [CallbackBehavior](callbackbehavior.md) +# [ClientCredentials](clientcredentials.md) +# [DeliveryRequirementsAttribute](deliveryrequirementsattribute.md) +# [PeerTransportBindingElement](peertransportbindingelement.md) +# [ServiceThrottlingBehavior](servicethrottlingbehavior.md) +# [PeerResolverBindingElement](peerresolverbindingelement.md) +# [TcpTransportBindingElement](tcptransportbindingelement.md) +# [TransportSecurityBindingElement](transportsecuritybindingelement.md) +# [TransactedBatchingBehavior](transactedbatchingbehavior.md) +# [ServiceSecurityAuditBehavior](servicesecurityauditbehavior.md) +# [PeerSecuritySettings](peersecuritysettings.md) +# [MsmqBindingElementBase](msmqbindingelementbase.md) +# [PeerTransportSecuritySettings](peertransportsecuritysettings.md) +# [MsmqTransportBindingElement](msmqtransportbindingelement.md) +# [TcpConnectionPoolSettings](tcpconnectionpoolsettings.md) +# [SslStreamSecurityBindingElement](sslstreamsecuritybindingelement.md) +# [WSAT_TraceEvent](wsat-traceevent.md) +# [ServiceMetadataBehavior](servicemetadatabehavior.md) +# [PrivacyNoticeBindingElement](privacynoticebindingelement.md) +# [TransactionFlowAttribute](transactionflowattribute.md) +# [TransactionFlowBindingElement](transactionflowbindingelement.md) +# [バインド](binding.md) +# [HttpTransportBindingElement](httptransportbindingelement.md) +# [NamedPipeConnectionPoolSettings](namedpipeconnectionpoolsettings.md) +# [CompositeDuplexBindingElement](compositeduplexbindingelement.md) +# [PnrpPeerResolverBindingElement](pnrppeerresolverbindingelement.md) +# [ServiceToEndpointAssociation](servicetoendpointassociation.md) +# [UseManagedPresentationBindingElement](usemanagedpresentationbindingelement.md) +# [AspNetCompatibilityRequirementsAttribute](aspnetcompatibilityrequirementsattribute.md) diff --git a/docs/framework/wcf/diagnostics/wmi/activitytransfer.md b/docs/framework/wcf/diagnostics/wmi/activitytransfer.md new file mode 100644 index 00000000000..058d873456f --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/activitytransfer.md @@ -0,0 +1,56 @@ +--- +title: "ActivityTransfer | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fc40ef17-2a92-4ce2-853c-6ba8e5d571f3 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# ActivityTransfer +アクティビティ転送イベント + +## 構文 + +``` +class ActivityTransfer : WSAT_TraceEvent +{ + object ActivityID; + object RelatedActivityID; +}; +``` + +## メソッド + ActivityTransfer クラスは、メソッドを一切定義しません。 + +## プロパティ + ActivityTransfer クラスには次のプロパティがあります。 + +### ActivityID + +- データ型: object + アクセスの種類 : 読み取り専用 + +- アクティビティ ID + +### RelatedActivityID + +- データ型: object + アクセスの種類 : 読み取り専用 + +- 関連アクティビティ ID + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/appdomaininfo.md b/docs/framework/wcf/diagnostics/wmi/appdomaininfo.md new file mode 100644 index 00000000000..f3ecfd6f390 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/appdomaininfo.md @@ -0,0 +1,136 @@ +--- +title: "AppDomainInfo | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6610b7d8-81eb-4bec-a543-9b72ad7b6f73 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# AppDomainInfo +アプリケーション ドメイン情報 + +## 構文 + +``` +class AppDomainInfo +{ + sint32 AppDomainId; + boolean IsDefault; + boolean LogMalformedMessages; + boolean LogMessagesAtServiceLevel; + boolean LogMessagesAtTransportLevel; + TraceListener MessageLoggingTraceListeners[]; + string Name; + string PerformanceCounters; + sint32 ProcessId; + string ServiceConfigPath; + string TraceLevel; + TraceListener wmiTraceListeners[]; +}; +``` + +## メソッド + AppDomainInfo クラスは、メソッドを一切定義しません。 + +## プロパティ + AppDomainInfo クラスには、次のプロパティがあります。 + +### AppDomainId + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + AppDomain の ID です。 + +### IsDefault + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + AppDomain が既定の AppDomain かどうかを示します。 + +### LogMalformedMessages + データ型 : boolean + + アクセスの種類 : 読み取り\/書き込み + + 非整形式メッセージをログに記録するかどうかを指定する値です。 + +### LogMessagesAtServiceLevel + データ型 : boolean + + アクセスの種類 : 読み取り\/書き込み + + メッセージをサービス レベルでトレースするかどうかを指定する値です \(暗号化およびトランスポート関連の変換前\)。 + +### LogMessagesAtTransportLevel + データ型 : boolean + + アクセスの種類 : 読み取り\/書き込み + + メッセージをトランスポート レベルでトレースするかどうかを指定する値です。 + +### MessageLoggingTraceListeners + データ型 : TraceListener 配列 + + アクセスの種類 : 読み取り専用 + + System.Wmi.MessageLogging トレース ソースをリッスンするコレクション トレース リスナーです。 + +### Name + データ型 : string + + アクセスの種類 : 読み取り専用 + + AppDomain の名前です。 + +### PerformanceCounters + データ型 : string + + アクセスの種類 : 読み取り専用 + + AppDomain におけるアクティブなパフォーマンス カウンターのスコープです。 + +### ProcessId + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + プロセス ID です。 + +### ServiceConfigPath + データ型 : string + + アクセスの種類 : 読み取り専用 + + サービスの構成へのパスです。 + +### TraceLevel + データ型 : string + + アクセスの種類 : 読み取り\/書き込み + + System.Wmi トレース ソースのトレース レベル。 + +### ServiceModelTraceListeners + データ型 : TraceListener 配列 + + アクセスの種類 : 読み取り専用 + + System.ServiceModel トレース ソースのリスナーのコレクション。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/aspnetcompatibilityrequirementsattribute.md b/docs/framework/wcf/diagnostics/wmi/aspnetcompatibilityrequirementsattribute.md new file mode 100644 index 00000000000..e15a0afffe2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/aspnetcompatibilityrequirementsattribute.md @@ -0,0 +1,51 @@ +--- +title: "AspNetCompatibilityRequirementsAttribute | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 00908a39-a21b-4029-bbb9-33e5a6ed25a7 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# AspNetCompatibilityRequirementsAttribute +AspNetCompatibilityRequirementsAttribute + +## 構文 + +``` +class AspNetCompatibilityRequirementsAttribute : Behavior +{ + string RequirementsMode; +}; +``` + +## メソッド + AspNetCompatibilityRequirementsAttribute クラスは、メソッドをすべて定義しません。 + +## プロパティ + AspNetCompatibilityRequirementsAttribute クラスには、次のプロパティがあります。 + +### RequirementsMode + データ型 : string + + アクセスの種類 : 読み取り専用 + + Asp.Net 互換モードがアクティブであるかどうかを示します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/asymmetricsecuritybindingelement.md b/docs/framework/wcf/diagnostics/wmi/asymmetricsecuritybindingelement.md new file mode 100644 index 00000000000..2d97ae04fac --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/asymmetricsecuritybindingelement.md @@ -0,0 +1,59 @@ +--- +title: "AsymmetricSecurityBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7bd3b6be-8f77-4927-93ae-6fa371893cca +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# AsymmetricSecurityBindingElement +AsymmetricSecurityBindingElement + +## 構文 + +``` +class AsymmetricSecurityBindingElement : SecurityBindingElement +{ + string MessageProtectionOrder; + boolean RequireSignatureConfirmation; +}; +``` + +## メソッド + AsymmetricSecurityBindingElement クラスで定義されるメソッドはありません。 + +## プロパティ + AsymmetricSecurityBindingElement クラスには、次のプロパティがあります。 + +### MessageProtectionOrder + データ型 : string + + アクセスの種類 : 読み取り専用 + + このバインディングのメッセージの暗号化と署名の命令。 + +### RequireSignatureConfirmation + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + バインディングで署名の確認が必要かどうか。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/behavior-class.md b/docs/framework/wcf/diagnostics/wmi/behavior-class.md new file mode 100644 index 00000000000..63189fbcd2b --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/behavior-class.md @@ -0,0 +1,49 @@ +--- +title: "動作クラス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 75d117f5-87f9-40fb-84c6-9e2fef6da6af +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 動作クラス +## 構文 + +``` +class Behavior +{ + string Type; +}; +``` + +## メソッド + Behavior クラスで定義されているメソッドはありません。 + +## プロパティ + Behavior クラスには、次のプロパティがあります。 + +### Type + データ型 : string + + アクセスの種類 : 読み取り専用 + + 動作の種類です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/binarymessageencodingbindingelement.md b/docs/framework/wcf/diagnostics/wmi/binarymessageencodingbindingelement.md new file mode 100644 index 00000000000..11356d27be6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/binarymessageencodingbindingelement.md @@ -0,0 +1,75 @@ +--- +title: "BinaryMessageEncodingBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e2bb3cdd-3bbd-4bb5-85fe-570457500a66 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# BinaryMessageEncodingBindingElement +BinaryMessageEncodingBindingElement + +## 構文 + +``` +class BinaryMessageEncodingBindingElement : MessageEncodingBindingElement +{ + sint32 MaxReadPoolSize; + sint32 MaxSessionSize; + sint32 MaxWritePoolSize; + XmlDictionaryReaderQuotas ReaderQuotas; +}; +``` + +## メソッド + BinaryMessageEncodingBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + BinaryMessageEncodingBindingElement クラスには、次のプロパティがあります。 + +## MaxReadPoolSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 新しいリーダーを割り当てずに同時に読み取り可能なメッセージの数を定義する整数です。 + +## MaxSessionSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + エンコーディングに使用するバッファーのサイズ \(バイト単位\) を指定する値です。 + +## MaxWritePoolSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 新しいライターを割り当てずに同時に送信可能なメッセージの数を定義する整数です。 + +## ReaderQuotas + データ型 : XmlDictionaryReaderQuotas + + アクセスの種類 : 読み取り専用 + + リーダのクォータ。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/binding.md b/docs/framework/wcf/diagnostics/wmi/binding.md new file mode 100644 index 00000000000..ad8be1b6020 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/binding.md @@ -0,0 +1,107 @@ +--- +title: "バインド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 09511c6c-5749-4bb0-874e-0f0be36bfe04 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# バインド +wmi バインディング + +## 構文 + +``` +class Binding +{ + BindingElement BindingElements[]; + datetime CloseTimeout; + string Name; + string Namespace; + datetime OpenTimeout; + datetime ReceiveTimeout; + string Scheme; + datetime SendTimeout; +}; +``` + +## メソッド + Binding クラスは、メソッドを一切定義しません。 + +## プロパティ + Binding クラスには、次のプロパティがあります。 + +### BindingElements + データ型 : BindingElement 配列 + + アクセスの種類 : 読み取り専用 + + バインディングによって実装されるバインド要素のコレクションです。 + +### CloseTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + クローズ操作が完了するまで待機する時間です。 + +### Name + データ型 : string + + アクセスの種類 : 読み取り専用 + + バインディングの名前。 + +### 名前空間 + データ型 : string + + アクセスの種類 : 読み取り専用 + + バインディングの XML 名前空間。 + +### OpenTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + オープン操作が完了するまで待機する時間です。 + +### ReceiveTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + 受信操作が完了するまで待機する時間です。 + +### Scheme + データ型 : string + + アクセスの種類 : 読み取り専用 + + このバインディングに組み込まれているチャネルおよびリスナー ファクトリによって使用される URI トランスポート スキームです。 + +### SendTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + 送信操作が完了するまで待機する時間です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/bindingelement.md b/docs/framework/wcf/diagnostics/wmi/bindingelement.md new file mode 100644 index 00000000000..d5fffc1b2f8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/bindingelement.md @@ -0,0 +1,40 @@ +--- +title: "BindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fdbfde0c-2e52-4fc5-9eb8-14b42e647263 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# BindingElement +BindingElement + +## 構文 + +``` +class BindingElement +{ +}; +``` + +## メソッド + BindingElement クラスはメソッドを継承しますが、追加のメソッドやプロパティを定義しません。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/callbackbehavior.md b/docs/framework/wcf/diagnostics/wmi/callbackbehavior.md new file mode 100644 index 00000000000..06d635a7747 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/callbackbehavior.md @@ -0,0 +1,98 @@ +--- +title: "CallbackBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 42acd302-2b62-4849-a2d1-a03084343ecd +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# CallbackBehavior +CallbackBehavior + +## 構文 + +``` +class CallbackBehavior : Behavior +{ + boolean AutomaticSessionShutdown; + string ConcurrencyMode; + boolean IgnoreExtensionDataObject; + boolean IncludeExceptionDetailInFaults; + boolean MaxItemsInObjectGraph; + boolean UseSynchronizationContext; + boolean ValidateMustUnderstand; +}; +``` + +## メソッド + CallbackBehavior クラスは、メソッドを一切定義しません。 + +## プロパティ + CallbackBehavior クラスには、次のプロパティがあります。 + +### AutomaticSessionShutdown + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + true の場合、サービスが双方向セッションを閉じると、セッションが自動的に閉じられます。 + +### ConcurrencyMode + データ型: string +アクセスの種類 : 読み取り専用 + + サービスが単一のスレッド、複数のスレッド、再入可能呼び出しのいずれをサポートするかを指定します。 + +### IgnoreExtensionDataObject + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 不明なシリアル化データをネットワークで送信するかどうかを指定する値です。 + +### IncludeExceptionDetailInFaults + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 有効にした場合は、コールバックの例外に関する詳細情報が、サービスに戻されるエラーに添付されます。 + +### MaxItemsInObjectGraph + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 1 つのシリアル化されたオブジェクトで許可される項目の最大数。 + +### UseSynchronizationContext + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 現在の同期コンテキストを使用して実行のスレッドを選択するかどうかを指定します。 + +### ValidateMustUnderstand + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + システムまたはアプリケーションで SOAP MustUnderstand ヘッダー処理を強制的に行うかどうかを指定します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/channel-class.md b/docs/framework/wcf/diagnostics/wmi/channel-class.md new file mode 100644 index 00000000000..fca645a805a --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/channel-class.md @@ -0,0 +1,83 @@ +--- +title: "チャネル クラス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d9fae2ca-209c-4341-a0f5-6b79d1a67776 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# チャネル クラス +チャネル + +## 構文 + +``` +class Channel +{ + string LocalAddress; + Endpoint ref; + string RemoteAddress; + string SessionId; + string Type; +}; +``` + +## メソッド + チャネル クラスは、メソッドを一切定義しません。 + +## プロパティ + チャネル クラスには、次のプロパティがあります。 + +### LocalAddress + データ型: string + + アクセスの種類 : 読み取り専用 + + チャネルのローカル エンドポイント。 + +### ref + データ型 : Endpoint + + アクセスの種類 : 読み取り専用 + + チャネルが接続するエンドポイントへの参照。 + +### RemoteAddress + データ型: string + + アクセスの種類 : 読み取り専用 + + チャネルに関連するリモート アドレス。 + +### SessionId + データ型: string + + アクセスの種類 : 読み取り専用 + + 現在のセッション ID \(存在する場合\)。 + +### 種類 + データ型: string + + アクセスの種類 : 読み取り専用 + + チャネルの型。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/channelpoolsettings.md b/docs/framework/wcf/diagnostics/wmi/channelpoolsettings.md new file mode 100644 index 00000000000..406fb2074a2 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/channelpoolsettings.md @@ -0,0 +1,67 @@ +--- +title: "ChannelPoolSettings | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d3f475bd-f780-4bbe-b291-339387322964 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ChannelPoolSettings +ChannelPoolSettings + +## 構文 + +``` +class ChannelPoolSettings +{ + datetime IdleTimeout; + datetime LeaseTimeout; + sint32 MaxOutboundChannelsPerEndpoint; +}; +``` + +## メソッド + ChannelPoolSettings クラスは、メソッドを一切定義しません。 + +## プロパティ + ChannelPoolSettings クラスには、次のプロパティがあります。 + +### IdleTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + 接続が切断されるまでの最大アイドル時間。 + +### LeaseTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + リース操作の完了がタイムアウトするまでの最大時間。 + +### MaxOutboundChannelsPerEndpoint + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 各エンドポイントでの送信チャネルの最大数。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/clientcredentials.md b/docs/framework/wcf/diagnostics/wmi/clientcredentials.md new file mode 100644 index 00000000000..ab7bcd62a9c --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/clientcredentials.md @@ -0,0 +1,107 @@ +--- +title: "ClientCredentials | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 41dffd6b-8f14-4fed-aefb-2a1bb168efb3 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ClientCredentials +ClientCredentials + +## 構文 + +``` +class ClientCredentials : Behavior +{ + string ClientCertificate; + string HttpDigest; + string IssuedToken; + string Peer; + string ServiceCertificate; + boolean SupportInteractive; + string UserName; + string Windows; +}; +``` + +## メソッド + ClientCredentials クラスは、メソッドを一切定義しません。 + +## プロパティ + ClientCredentials クラスには、次のプロパティがあります。 + +### ClientCertificate + データ型 : string + + アクセスの種類 : 読み取り専用 + + クライアントがサービスに対して自身を認証するために使用する X.509 証明書です。 + +### HttpDigest + データ型 : string + + アクセスの種類 : 読み取り専用 + + 現在の Http ダイジェスト資格情報です。 + +### IssuedToken + データ型 : string + + アクセスの種類 : 読み取り専用 + + ローカル セキュリティ トークン サービスにアクセスするために使用されるエンドポイント アドレスおよびバインディングです。 + +### Peer + データ型 : string + + アクセスの種類 : 読み取り専用 + + ピア ノードがメッシュ内の他のノードに対して自身を認証するために使用する資格情報です。 + +### ServiceCertificate + データ型 : string + + アクセスの種類 : 読み取り専用 + + サービスの X.509 証明書です。 + +### SupportInteractive + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 資格情報が対話的なネゴシエーションをサポートしているかどうかを指定するブール値です。 + +### UserName + データ型 : string + + アクセスの種類 : 読み取り専用 + + クライアントがサービスに対して自身を認証するために使用するユーザー名とパスワードです。 + +### Windows + データ型 : string + + アクセスの種類 : 読み取り専用 + + クライアントがサービスに対して自身を認証するために使用する Windows 資格情報です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/clientviabehavior.md b/docs/framework/wcf/diagnostics/wmi/clientviabehavior.md new file mode 100644 index 00000000000..91b33d64644 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/clientviabehavior.md @@ -0,0 +1,51 @@ +--- +title: "ClientViaBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 594f6046-4752-4a54-9374-b256f8dd1431 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ClientViaBehavior +ClientViaBehavior + +## 構文 + +``` +class ClientViaBehavior : Behavior +{ + string Uri; +}; +``` + +## メソッド + ClientViaBehavior クラスは、メソッドを一切定義しません。 + +## プロパティ + ClientViaBehavior クラスには、次のプロパティがあります。 + +### Uri + データ型 : string + + アクセスの種類 : 読み取り専用 + + ViaUri。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/compositeduplexbindingelement.md b/docs/framework/wcf/diagnostics/wmi/compositeduplexbindingelement.md new file mode 100644 index 00000000000..f3264f33a3c --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/compositeduplexbindingelement.md @@ -0,0 +1,51 @@ +--- +title: "CompositeDuplexBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 05e985aa-6462-431d-a831-0d601f3a3835 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# CompositeDuplexBindingElement +CompositeDuplexBindingElement + +## 構文 + +``` +class CompositeDuplexBindingElement : BindingElement +{ + string ClientBaseAddress; +}; +``` + +## メソッド + CompositeDuplexBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + CompositeDuplexBindingElement クラスには、次のプロパティがあります。 + +### ClientBaseAddress + データ型 : string + + アクセスの種類 : 読み取り専用 + + クライアントのベース アドレスです。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/connectionorientedtransportbindingelement.md b/docs/framework/wcf/diagnostics/wmi/connectionorientedtransportbindingelement.md new file mode 100644 index 00000000000..def71f4613f --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/connectionorientedtransportbindingelement.md @@ -0,0 +1,107 @@ +--- +title: "ConnectionOrientedTransportBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c1308313-f0e2-49e6-977d-6b4ce9ad35d1 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ConnectionOrientedTransportBindingElement +ConnectionOrientedTransportBindingElement + +## 構文 + +``` +class ConnectionOrientedTransportBindingElement : TransportBindingElement +{ + datetime ChannelInitializationTimeout; + sint32 ConnectionBufferSize; + string HostNameComparisonMode; + sint32 MaxBufferSize; + datetime MaxOutputDelay; + sint32 MaxPendingAccepts; + sint32 MaxPendingConnections; + string TransferMode; +}; +``` + +## メソッド + ConnectionOrientedTransportBindingElement クラスで定義されているメソッドはありません。 + +## プロパティ + ConnectionOrientedTransportBindingElement クラスには、次のプロパティがあります。 + +### ChannelInitializationTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + チャネルの初期化が開始されてからタイムアウトになるまでの時間の長さを示す期間。 + +### ConnectionBufferSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + クライアントまたサービスからネットワークでシリアル化されたメッセージのチャンクを転送するために使用されるバッファーのサイズ。 + +### HostNameComparisonMode + データ型: string + + アクセスの種類 : 読み取り専用 + + URI の照合時にサービスに到達するため、ホスト名が使用されたかどうかを示す値。 + +### MaxBufferSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 使用するバッファーの最大サイズ。 + +### MaxOutputDelay + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + メッセージのチャンクまたは完全なメッセージを、送信前にメモリ内のバッファーに残したままにできる最長期間。 + +### MaxPendingAccepts + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + サービスでの着信接続処理に使用できる保留中の非同期受け入れスレッドの最大数。 + +### MaxPendingConnections + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 保留状態の接続の最大数。 + +### TransferMode + データ型: string + + アクセスの種類 : 読み取り専用 + + 接続指向トランスポートを使用して、メッセージをバッファーするかまたはストリームするかを指定する値。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/contract.md b/docs/framework/wcf/diagnostics/wmi/contract.md new file mode 100644 index 00000000000..e1f693d9b78 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/contract.md @@ -0,0 +1,115 @@ +--- +title: "コントラクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aa00f6b3-7e1f-4213-841a-206463fca20b +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# コントラクト +Contract + +## 構文 + +``` +class Contract +{ + sint32 AppDomainId; + Behavior Behaviors[]; + string Name; + string Namespace; + Operation Operations[]; + sint32 ProcessId; + Contract ref; + string SessionMode; + string Type; +}; +``` + +## メソッド + Contract クラスで定義されているメソッドはありません。 + +## プロパティ + Contract クラスには、次のプロパティがあります。 + +### AppDomainId + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + コントラクトをホストする appdomain の appdomain ID。 + +### Behaviors + データ型 : Behavior 配列 + + アクセスの種類 : 読み取り専用 + + このコントラクトに関連付けられている動作。 + +### Name + データ型 : string + + アクセスの種類 : 読み取り専用 + + WSDL でのコントラクトの名前。 + +### Namespace + データ型 : string + + アクセスの種類 : 読み取り専用 + + WSDL での `portType` 要素の名前空間。 + +### Operations + データ型 : Operation 配列 + + アクセスの種類 : 読み取り専用 + + このコントラクトの操作。 + +### ProcessId + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + コントラクトをホストするプロセスのプロセス ID。 + +### ref + データ型 : Contract + + アクセスの種類 : 読み取り専用 + + コントラクトが双方向コントラクトのときのコールバックの型。 + +### SessionMode + データ型 : string + + アクセスの種類 : 読み取り専用 + + コントラクトでチャネル セッションを使用するために、このコントラクトに関連付けられたバインディングが必要かどうかを示します。 + +### Type + データ型 : string + + アクセスの種類 : 読み取り専用 + + コントラクトの型。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/custombindingelement.md b/docs/framework/wcf/diagnostics/wmi/custombindingelement.md new file mode 100644 index 00000000000..b3c18ac8bd5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/custombindingelement.md @@ -0,0 +1,51 @@ +--- +title: "CustomBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: df959dc5-1aef-4338-a123-6ff3e7bc37af +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# CustomBindingElement +CustomBindingElement + +## 構文 + +``` +class CustomBindingElement : BindingElement +{ + string Name; +}; +``` + +## メソッド + CustomBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + CustomBindingElement クラスには、次のプロパティがあります。 + +### 名前 + データ型: string + + アクセスの種類 : 読み取り専用 + + バインディングの構成名を格納する文字列です。 この値は、カスタム バインディングの識別文字列として機能するユーザー定義文字列です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/deliveryrequirementsattribute.md b/docs/framework/wcf/diagnostics/wmi/deliveryrequirementsattribute.md new file mode 100644 index 00000000000..5d9579ce5b5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/deliveryrequirementsattribute.md @@ -0,0 +1,67 @@ +--- +title: "DeliveryRequirementsAttribute | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 40c5435c-a325-4cf8-9dd0-d6e24b4a56a3 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# DeliveryRequirementsAttribute +DeliveryRequirementsAttribute + +## 構文 + +``` +class DeliveryRequirementsAttribute : Behavior +{ + string QueuedDeliveryRequirements; + boolean RequireOrderedDelivery; + string TargetContract; +}; +``` + +## メソッド + DeliveryRequirementsAttribute クラスは、メソッドを一切定義しません。 + +## プロパティ + DeliveryRequirementsAttribute クラスには、次のプロパティがあります。 + +### QueuedDeliveryRequirements + データ型 : string + + アクセスの種類 : 読み取り専用 + + サービスのバインドがコントラクトをサポートするかどうかを指定します。 + +### RequireOrderedDelivery + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + バインディングが順序付きメッセージをサポートするかどうかを指定します。 + +### TargetContract + データ型 : string + + アクセスの種類 : 読み取り専用 + + 適用先となるコントラクトです。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/endpoint.md b/docs/framework/wcf/diagnostics/wmi/endpoint.md new file mode 100644 index 00000000000..882eb90d648 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/endpoint.md @@ -0,0 +1,140 @@ +--- +title: "エンドポイント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fe63370d-81a1-40f3-97c2-59cb357c78d2 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# エンドポイント +エンドポイント + +## 構文 + +``` +class Endpoint +{ + string Address; + string AddressHeaders[]; + string AddressIdentity; + sint32 AppDomainId; + Behavior Behaviors[]; + Binding Binding; + string ContractName; + string CounterInstanceName; + string ListenUri; + string Name; + sint32 ProcessId; + Contract ref; +}; +``` + +## メソッド + Endpoint クラスは次のメソッドを定義します。 + +|メソッド|説明| +|----------|--------| +|[GetOperationCounterInstanceName](../../../../../docs/framework/wcf/diagnostics/wmi/getoperationcounterinstancename.md)|操作パフォーマンス カウンターのインスタンスの名前を取得します。| + +## プロパティ + Endpoint クラスには次のプロパティがあります。 + +### Address + データ型: string + + アクセスの種類 : 読み取り専用 + + エンドポイントのアドレスを格納している URI。 + +### AddressHeaders + データ型 : string array + + アクセスの種類 : 読み取り専用 + + このエンドポイントに接続しているアドレス ヘッダーのコレクション + +### AddressIdentity + データ型: string + + アクセスの種類 : 読み取り専用 + + エンドポイントの ID + +### AppDomainId + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + エンドポイントをホストする appdomain の appdomain ID + +### ビヘイビアー + データ型 : Behavior array + + アクセスの種類 : 読み取り専用 + + このエンドポイントが実装する動作のコレクション + +### バインディング + データ型 : Binding + + アクセスの種類 : 読み取り専用 + + このエンドポイントが使用するバインディング + +### ContractName + データ型: string + + アクセスの種類 : 読み取り専用 + + このエンドポイントが公開するコントラクトを指定する文字列 + +### CounterInstanceName + データ型: string + + アクセスの種類 : 読み取り専用 + + エンドポイントのパフォーマンス カウンターのインスタンス名 + +### ListenUri + データ型: string + + アクセスの種類 : 読み取り専用 + + エンドポイントがリッスンする URI + +### 名前 + データ型: string + + アクセスの種類 : 読み取り専用 + + このエンドポイントの一意の名前 + +### ProcessId + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + エンドポイントをホストするプロセスのプロセス ID + +### ref + データ型 : Contract + + アクセスの種類 : 読み取り専用 + + このエンドポイントが公開しているコントラクト。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/getoperationcounterinstancename.md b/docs/framework/wcf/diagnostics/wmi/getoperationcounterinstancename.md new file mode 100644 index 00000000000..1ee6170991b --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/getoperationcounterinstancename.md @@ -0,0 +1,39 @@ +--- +title: "GetOperationCounterInstanceName | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ac42e20f-63c1-4bdb-8660-736980936811 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# GetOperationCounterInstanceName +操作パフォーマンス カウンターのインスタンスの名前を取得します。 + +## 構文 + +``` +string GetOperationCounterInstanceName( + string Operation +); +``` + +## パラメーター + +### Operation + \[in\] string + +## 必要条件 + +|MOF|Servicemodel.mof で宣言| +|---------|--------------------------| +|名前空間|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/httpstransportbindingelement.md b/docs/framework/wcf/diagnostics/wmi/httpstransportbindingelement.md new file mode 100644 index 00000000000..57ead962006 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/httpstransportbindingelement.md @@ -0,0 +1,51 @@ +--- +title: "HttpsTransportBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e78aa8c6-b53b-4105-a900-d3e7a39670f2 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# HttpsTransportBindingElement +HttpsTransportBindingElement + +## 構文 + +``` +class HttpsTransportBindingElement : HttpTransportBindingElement +{ + boolean RequireClientCertificate; +}; +``` + +## メソッド + HttpsTransportBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + HttpsTransportBindingElement クラスには、次のプロパティがあります。 + +### RequireClientCertificate + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + SSL クライアント認証が必要かどうかを示す値。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/httptransportbindingelement.md b/docs/framework/wcf/diagnostics/wmi/httptransportbindingelement.md new file mode 100644 index 00000000000..26a5aa56f2f --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/httptransportbindingelement.md @@ -0,0 +1,139 @@ +--- +title: "HttpTransportBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 088a7bce-6bb2-4839-ad74-f68d4b1aa0f9 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# HttpTransportBindingElement +HttpTransportBindingElement + +## 構文 + +``` +class HttpTransportBindingElement : TransportBindingElement +{ + boolean AllowCookies; + string AuthenticationScheme; + boolean BypassProxyOnLocal; + string HostNameComparisonMode; + boolean KeepAliveEnabled; + sint32 MaxBufferSize; + string ProxyAddress; + string ProxyAuthenticationScheme; + string Realm; + string TransferMode; + boolean UnsafeConnectionNtlmAuthentication; + boolean UseDefaultWebProxy; +}; +``` + +## メソッド + HttpTransportBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + HttpTransportBindingElement クラスには、次のプロパティがあります。 + +### AllowCookies + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定する値です。 + +### AuthenticationScheme + データ型 : string + + アクセスの種類 : 読み取り専用 + + HTTP リスナーにより処理されているクライアント要求の認証に使用する認証方式です。 + +### BypassProxyOnLocal + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + プロキシをローカル アドレスで無視するかどうかを示す値です。 + +### HostNameComparisonMode + データ型 : string + + アクセスの種類 : 読み取り専用 + + URI の照合時にサービスに到達するため、ホスト名が使用されたかどうかを示す値。 + +### KeepAliveEnabled + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 有効な場合は、HTTP 接続がアクティビティ レベルとは無関係に維持されます。 + +### MaxBufferSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + バッファー プールの最大サイズ。 + +### ProxyAddress + データ型 : string + + アクセスの種類 : 読み取り専用 + + HTTP 要求に使用するプロキシのアドレスを格納する URI です。 + +### ProxyAuthenticationScheme + データ型 : string + + アクセスの種類 : 読み取り専用 + + HTTP プロキシにより処理されているクライアント要求の認証に使用する認証方式です。 + +### Realm + データ型 : string + + アクセスの種類 : 読み取り専用 + + 認証レルム。 + +### TransferMode + データ型 : string + + アクセスの種類 : 読み取り専用 + + メッセージが要求や応答をバッファーするか、ストリーミングするかを指定する値です。 + +### UnsafeConnectionNtlmAuthentication + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + サーバー上で安全ではない接続共有を有効にするかどうかを示す値です。 + +### UseDefaultWebProxy + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + ユーザー固有の設定ではなく、コンピューター全体のプロキシ設定を使用するかどうかを示す値です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/index.md b/docs/framework/wcf/diagnostics/wmi/index.md new file mode 100644 index 00000000000..417e14405b7 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/index.md @@ -0,0 +1,191 @@ +--- +title: "診断用の WMI (Windows Management Instrumentation) の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fe48738d-e31b-454d-b5ec-24c85c6bf79a +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# 診断用の WMI (Windows Management Instrumentation) の使用 +[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] は [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] WMI \(Windows Management Instrumentation\) プロバイダーを介して実行時のサービスの検査データを公開します。 + +## WMI の有効化 + WMI は、Web ベースのエンタープライズ管理 \(WBEM\) 標準をマイクロソフトが実装したものです。 WMI SDK [!INCLUDE[crabout](../../../../../includes/crabout-md.md)]、MSDN ライブラリを参照してください。 \(http:\/\/msdn.microsoft.com\/library\/default.asp?url\=\/library\/wmisdk\/wmi\/wmi\_start\_page.asp\). WBEM は、アプリケーションが Management Instrumentation を外部管理ツールに開示する業界標準の方法です。 + + WMI プロバイダーは、WBEM と互換性のあるインターフェイスを通して実行時にインストルメンテーションを公開するコンポーネントです。 これは、属性と値のペアを持つ WMI オブジェクトのセットで構成されます。 ペアには多くの単純型を指定できます。 管理ツールは、実行時にインターフェイスを介してサービスに接続できます。 [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、アドレス、バインディング、動作、リスナーなどのサービスの属性を公開します。 + + 組み込みの WMI プロバイダーは、アプリケーションの構成ファイルでアクティブにできます。 次のサンプル構成に示すように、これは [\](../../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md)セクションにある [\](../../../../../docs/framework/configure-apps/file-schema/wcf/diagnostics.md)の `wmiProviderEnabled` 属性を介して実行されます。 + +``` + + … + + … + + +``` + + この構成エントリには、WMI インターフェイスが開示されます。 管理アプリケーションはこのインターフェイスを通して接続し、アプリケーションの Management Instrumentation にアクセスできるようになります。 + +## WMI データへのアクセス + WMI データには、複数の異なる方法でアクセスできます。 マイクロソフトは、スクリプト用、[!INCLUDE[vbprvb](../../../../../includes/vbprvb-md.md)] アプリケーション用、C\+\+ アプリケーション用、および [!INCLUDE[dnprdnshort](../../../../../includes/dnprdnshort-md.md)] 用の WMI API を提供しています。 詳細については、「[WMI の使用](http://go.microsoft.com/fwlink/?LinkId=95183)」を参照してください。 + +> [!CAUTION] +> .NET Framework 提供のメソッドを使用し、プログラムで WMI データにアクセスする場合、そのようなメソッドは接続確立時に例外をスローする場合があることを認識しておく必要があります。 接続は、 インスタンスの構築中に確立されませんが、実際のデータ交換が含まれた最初の要求時に確立されます。 したがって、`try..catch` ブロックを使用して例外をキャッチする必要があります。 + + トレース レベルやメッセージ ログ レベルだけでなく、WMI の `System.ServiceModel` トレース ソースのメッセージ ログ オプションも変更できます。 変更するには、`LogMessagesAtServiceLevel`、`LogMessagesAtTransportLevel`、`LogMalformedMessages`、および `TraceLevel` のブール型プロパティを公開する [AppDomainInfo](../../../../../docs/framework/wcf/diagnostics/wmi/appdomaininfo.md) インスタンスにアクセスします。 そのため、メッセージ ログ用のトレース リスナーを構成していても、これらのオプションを構成で `false` に設定している場合は、後でアプリケーションを実行しているときに `true` に変更できます。 これで、メッセージ ログが実行時に有効になります。 同様に、構成ファイルでメッセージ ログを有効にしている場合は、実行時に WMI を使用して無効にできます。 + + 構成ファイルで、メッセージ ログのメッセージ ログ トレース リスナーまたはトレースの `System.ServiceModel` トレース リスナーが指定されていない場合、WMI が変更を受け入れても変更は有効になりません。 各リスナーの正しい設定の詳細については、「[メッセージ ログの構成](../../../../../docs/framework/wcf/diagnostics/configuring-message-logging.md)」および「[トレースの構成](../../../../../docs/framework/wcf/diagnostics/tracing/configuring-tracing.md)」を参照してください。 構成で設定された他のすべてのトレース ソースのトレース レベルは、アプリケーションが開始されると有効になり変更できません。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] は、スクリプト用に `GetOperationCounterInstanceName` メソッドを公開します。 このメソッドに操作名を指定した場合、このメソッドはパフォーマンス カウンターのインスタンス名を返します。 ただし、このメソッドは入力を検証しません。 したがって、正しくない操作名を指定した場合、正しくないカウンター名が返されます。 + + 接続先サービスの `OutgoingChannel` クライアントが `Service` メソッド内に作成されていない場合、[!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] インスタンスの `Service` プロパティは、別のサービスに接続するのに、そのサービスにより開かれたチャネルをカウントしません。 + + **注意 :** WMI は 値を小数点以下 3 桁までしかサポートしません。 たとえば、サービスでプロパティの 1 つを に設定した場合、WMI ではその値を小数点以下 3 桁より下を切り捨て表示します。 + +## セキュリティ + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] WMI プロバイダーは環境内のサービスの検索を許しているため、環境へのアクセスの許可については十分に注意する必要があります。 既定の "管理者のみ" のアクセスを緩めた場合、信頼性の低いパーティに環境内の機密性のあるデータへのアクセスを許可する場合があります。 特にリモート WMI アクセスに対するアクセス許可を緩めた場合、大量の攻撃を受ける可能性があります。 過剰の WMI 要求により大量の処理が発生した場合、パフォーマンスが低下する可能性があります。 + + さらに、MOF ファイルに対するアクセス許可を緩めた場合、信頼性の低いパーティが WMI の動作を操作して WMI スキーマに読み込まれるオブジェクトを変更することができます。 たとえば、フィールドを削除して、重要データを管理者から隠したり、例外を設定しないかまたは例外の原因とならないフィールドを追加したりすることができます。 + + [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] WMI プロバイダーの既定では、"メソッドの実行"、"プロバイダーによる書き込み"、"アカウントの有効化" 権限が管理者に付与され、"アカウントの有効化" 権限が ASP.NET、ローカル サービス、ネットワーク サービスに付与されます。 特に、[!INCLUDE[wv](../../../../../includes/wv-md.md)] 以外のプラットフォームでは、ASP.NET アカウントは WMI ServiceModel 名前空間に対して読み取りアクセスが可能です。 特定のユーザー グループに対してこれらの権限を付与したくない場合は、WMI プロバイダーを非アクティブにするか \(既定では無効に設定されています\)、特定のユーザー グループのアクセスを無効にする必要があります。 + + また、構成を使用して WMI を有効にする場合、ユーザー権限が不十分のため WMI が有効にならない場合があります。 ただし、このエラーを記録するイベントはイベント ログに書き込まれません。 + + ユーザー権限のレベルを変更するには、次の手順に従います。 + +1. \[スタート\] ボタンをクリックし、\[ファイル名を指定して実行\] をクリックして**「compmgmt.msc」**と入力します。 + +2. **\[サービスとアプリケーション\] の \[WMI コントロール\]** を右クリックして、**\[プロパティ\]** をクリックします。 + +3. **\[セキュリティ\]** タブを選択し、**\[Root\/ServiceModel\]** 名前空間に移動します。 **\[セキュリティ\]** ボタンをクリックします。 + +4. アクセスを制御するグループまたはユーザーを選択し、**\[許可\]** または **\[拒否\]** チェックボックスを使用してアクセス許可を構成します。 + +## 追加ユーザーへの WCF WMI 登録権限の付与 + WCF は管理データを WMI に公開します。 これはインプロセス WMI プロバイダーをホストすることによって行い、"分離プロバイダー" と呼ばれることもあります。 管理データを公開するには、このプロバイダーを登録するアカウントに適切な権限が必要です。 Windows では、権限を持つアカウントの少数のセットのみが、既定で分離プロバイダーを登録できます。ユーザーは通常、既定のセットではないアカウントで実行している WCF サービスから WMI データを公開するので、これは問題です。 + + このアクセスを提供するために、管理者は、次の権限を追加のアカウントに次の順序で付与する必要があります。 + +1. WCF WMI 名前空間へのアクセス権限 + +2. WCF 分離 WMI プロバイダーの登録権限 + +#### WMI 名前空間へのアクセス権限を付与するには + +1. 次の PowerShell スクリプトを実行します。 + + ```powershell + write-host “” + write-host “Granting Access to root/servicemodel WMI namespace to built in users group” + write-host “” + + # Create the binary representation of the permissions to grant in SDDL + $newPermissions = "O:BAG:BAD:P(A;CI;CCDCLCSWRPWPRCWD;;;BA)(A;CI;CC;;;NS)(A;CI;CC;;;LS)(A;CI;CC;;;BU)" + $converter = new-object system.management.ManagementClass Win32_SecurityDescriptorHelper + $binarySD = $converter.SDDLToBinarySD($newPermissions) + $convertedPermissions = ,$binarySD.BinarySD + + # Get the object used to set the permissions + $security = gwmi -namespace root/servicemodel -class __SystemSecurity + + # Get and output the current settings + $binarySD = @($null) + $result = $security.PsBase.InvokeMethod("GetSD",$binarySD) + + $outsddl = $converter.BinarySDToSDDL($binarySD[0]) + write-host "Previous ACL: "$outsddl.SDDL + + # Change the Access Control List (ACL) using SDDL + $result = $security.PsBase.InvokeMethod("SetSD",$convertedPermissions) + + # Get and output the current settings + $binarySD = @($null) + $result = $security.PsBase.InvokeMethod("GetSD",$binarySD) + + $outsddl = $converter.BinarySDToSDDL($binarySD[0]) + write-host "New ACL: "$outsddl.SDDL + write-host “” + + ``` + + この PowerShell スクリプトでは、SDDL \(Security Descriptor Definition Language\) を使用して、組み込みのユーザー グループのアクセス権を、“root\/servicemodel” WMI 名前空間に付与します。 次の ACL が指定されます。 + + - 組み込みの管理者 \(BA\) – 既にアクセス権を持っています。 + + - ネットワーク サービス \(NS\) \- 既にアクセス権を持っています。 + + - ローカル システム \(LS\) \- 既にアクセス権を持っています。 + + - 組み込みのユーザー – アクセス権を付与するグループ。 + +#### プロバイダーに登録アクセス権を付与するには + +1. 次の PowerShell スクリプトを実行します。 + + ```powershell + write-host “” + write-host “Granting WCF provider registration access to built in users group” + write-host “” + # Set security on ServiceModel provider + $provider = get-WmiObject -namespace "root\servicemodel" __Win32Provider + + write-host "Previous ACL: "$provider.SecurityDescriptor + $result = $provider.SecurityDescriptor = "O:BUG:BUD:(A;;0x1;;;BA)(A;;0x1;;;NS)(A;;0x1;;;LS)(A;;0x1;;;BU)" + + # Commit the changes and display it to the console + $result = $provider.Put() + write-host "New ACL: "$provider.SecurityDescriptor + write-host “” + + ``` + +### 任意のユーザーまたはグループへのアクセス権の付与 + このセクションの例では、すべてのローカル ユーザーに WMI プロバイダー登録権限を付与します。 組み込まれていないユーザーまたはグループにアクセス権を付与する場合は、そのユーザーまたはグループのセキュリティ識別子 \(SID\) を取得する必要があります。 任意のユーザーの SID を取得する簡単な方法はありません。 1 つの方法としては、目的のユーザーとしてログオンし、次のシェル コマンドを発行します。 + +``` +Whoami /user +``` + + これにより、現在のユーザーの SID が提供されますが、この方法を使用して任意のユーザーで SID を取得することはできません。 SID を取得するもう 1 つの方法は、「[Windows 2000 リソース キット ツールの管理タスク](http://go.microsoft.com/fwlink/?LinkId=178660)」の [getsid.exe](http://go.microsoft.com/fwlink/?LinkId=186467) ツールを使用する方法です。 このツールは、2 人のユーザー \(ローカルまたはドメイン\) の SID を比較し、副作用として、2 つの SID をコマンド ラインに出力します。 [!INCLUDE[crdefault](../../../../../includes/crdefault-md.md)][既知の SID](http://go.microsoft.com/fwlink/?LinkId=186468). + +## リモート WMI オブジェクトのインスタンスへのアクセス + リモート コンピューターの [!INCLUDE[indigo2](../../../../../includes/indigo2-md.md)] WMI インスタンスにアクセスする必要がある場合、アクセスに使用するツールのパケットのプライバシーを有効にする必要があります。 次のセクションでは、WMI CIM Studio、Windows Management Instrumentation テスト、および .NET SDK 2.0 を使用してこれらを実現する方法を説明します。 + +### WMI CIM Studio + [WMI 管理ツール](http://go.microsoft.com/fwlink/?LinkId=95185) をインストールしている場合は、WMI CIM Studio を使用して WMI インスタンスにアクセスできます。 このツールは次のフォルダーにあります。 + + **%windir%\\Program Files\\WMI Tools\\** + +1. **\[Connect to namespace:\]** ウィンドウに「root\\ServiceModel」と入力し、**\[OK\]** をクリックします。 + +2. **\[WMI CIM Studio Login\]** ウィンドウで、**\[オプション\>\>\]** ボタンをクリックしてウィンドウを展開します。 **\[認証レベル\]** で **\[パケットのプライバシー\]** を選択し、**\[OK\]** をクリックします。 + +### Windows Management Instrumentation テスト + このツールは Windows によりインストールされます。 このツールを実行するには、**\[スタート\] ボタン、\[ファイル名を指定して実行\]** の順にクリックし、ダイアログ ボックスに「cmd.exe」と入力して **\[OK\]**をクリックし、コマンド コンソールを起動します。 次に、コマンド ウィンドウに「wbemtest.exe」と入力します。 Windows Management Instrumentation テスト ツールが起動します。 + +1. ウィンドウの右上隅にある **\[接続\]** ボタンをクリックします。 + +2. 新しいウィンドウの **\[名前空間\]** フィールドに「root\\ServiceModel」と入力し、**\[認証レベル\]** として **\[パケットのプライバシー\]** を選択します。 **\[接続\]** をクリックします。 + +### マネージ コードの使用 + 名前空間が提供するクラスを使用して、リモートの WMI インスタンスにプログラムでアクセスすることもできます。 これを実行する方法を次のコード例に示します。 + +``` +String wcfNamespace = String.Format(@"\\{0}\Root\ServiceModel", + this.serviceMachineName); + +ConnectionOptions connection = new ConnectionOptions(); +connection.Authentication = AuthenticationLevel.PacketPrivacy; +ManagementScope scope = new ManagementScope(this.wcfNamespace, connection); +``` \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/localservicesecuritysettings.md b/docs/framework/wcf/diagnostics/wmi/localservicesecuritysettings.md new file mode 100644 index 00000000000..713c84de58e --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/localservicesecuritysettings.md @@ -0,0 +1,155 @@ +--- +title: "LocalServiceSecuritySettings | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 490aa0e5-5242-4f8d-b505-5ec6287633b4 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# LocalServiceSecuritySettings +LocalServiceSecuritySettings + +## 構文 + +``` +class LocalServiceSecuritySettings +{ + boolean DetectReplays; + datetime InactivityTimeout; + datetime IssuedCookieLifetime; + sint32 MaxCachedCookies; + datetime MaxClockSkew; + sint32 MaxPendingSessions; + sint32 MaxStatefulNegotiations; + datetime NegotiationTimeout; + boolean ReconnectTransportOnFailure; + sint32 ReplayCacheSize; + datetime ReplayWindow; + datetime SessionKeyRenewalInterval; + datetime SessionKeyRolloverInterval; + datetime TimestampValidityDuration; +}; +``` + +## メソッド + LocalServiceSecuritySettings クラスで定義されるメソッドはありません。 + +## プロパティ + LocalServiceSecuritySettings クラスには、次のプロパティがあります。 + +### DetectReplays + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + チャネルに対するリプレイ攻撃を検出し、自動的に処理するかどうかを指定するブール値です。 + +### InactivityTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + サービスがサポートする保留状態のセキュリティ セッションの最大数。 + +### IssuedCookieLifetime + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + すべての新しいセキュリティ クッキーに対して発行する有効期間を指定する TimeSpan です。 + +### MaxCachedCookies + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + キャッシュできるクッキーの最大数。 + +### MaxClockSkew + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + 通信している双方の 2 つのシステム クロックのずれの最長時間を指定する TimeSpan です。 + +### MaxPendingSessions + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + サービスにおける保留状態の接続の最大数です。 + +### MaxStatefulNegotiations + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 同時にアクティブにできるセキュリティ ネゴシエーションの数。 + +### NegotiationTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + サーバーとクライアント間のセキュリティ ネゴシエーション フェーズの最大継続時間を指定する TimeSpan です。 + +### ReconnectTransportOnFailure + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + WS\-ReliableMessaging を使用した接続が、トランスポート エラーの後再接続を試みるかどうかを指定するブール値です。 + +### ReplayCacheSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + リプレイ検証で使用されるキャッシュ済みの nonce の数。 + +### ReplayWindow + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + 個別のメッセージの nonce の有効期間を指定する TimeSpan です。 + +### SessionKeyRenewalInterval + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + イニシエーターがセキュリティ セッションのキーを更新するまでの期間を指定する TimeSpan です。 + +### SessionKeyRolloverInterval + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + キーの更新中に、前のセッション キーが受信メッセージで有効な時間間隔を指定する TimeSpan です。 + +### TimestampValidityDuration + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + タイムスタンプの有効期間を指定する TimeSpan です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/matchallendpointbehavior.md b/docs/framework/wcf/diagnostics/wmi/matchallendpointbehavior.md new file mode 100644 index 00000000000..530d0d611f6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/matchallendpointbehavior.md @@ -0,0 +1,37 @@ +--- +title: "MatchAllEndpointBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 510977a7-ec38-40be-8cd8-4774dc4f75ec +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# MatchAllEndpointBehavior +MatchAllEndpointBehavior + +## 構文 + +``` +class MatchAllEndpointBehavior : Behavior +{ +}; +``` + +## メソッド + MatchAllEndpointBehavior クラスは Behavior を継承しますが、追加のメソッドやプロパティを定義しません。 + +## 要件 + +|MOF|Servicemodel.mof で定義| +|---------|--------------------------| +|Namespace|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/messageencodingbindingelement.md b/docs/framework/wcf/diagnostics/wmi/messageencodingbindingelement.md new file mode 100644 index 00000000000..786d846ffc9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/messageencodingbindingelement.md @@ -0,0 +1,51 @@ +--- +title: "MessageEncodingBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7f750742-b96b-498f-bf5e-05933a1a5961 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# MessageEncodingBindingElement +MessageEncodingBindingElement + +## 構文 + `class MessageEncodingBindingElement : BindingElement` + + `{` + + `string MessageVersion;` + + `};` + +## メソッド + MessageEncodingBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + MessageEncodingBindingElement クラスには、次のプロパティがあります。 + +### MessageVersion + データ型 : string + + アクセスの種類 : 読み取り専用 + + バインディングを使用して送信されたメッセージの SOAP バージョン。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/msmqbindingelementbase.md b/docs/framework/wcf/diagnostics/wmi/msmqbindingelementbase.md new file mode 100644 index 00000000000..0084b502a6b --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/msmqbindingelementbase.md @@ -0,0 +1,132 @@ +--- +title: "MsmqBindingElementBase | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 210d41ab-a2a4-4d7a-afd2-0916c08a4015 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# MsmqBindingElementBase +MsmqBindingElementBase + +## 構文 + +``` +class MsmqBindingElementBase : TransportBindingElement +{ + string CustomDeadLetterQueue; + string DeadLetterQueue; + boolean Durable; + boolean ExactlyOnce; + sint32 MaxRetryCycles; + string ReceiveErrorHandling; + sint32 ReceiveRetryCount; + datetime RetryCycleDelay; + datetime TimeToLive; + boolean UseMsmqTracing; + boolean UseSourceJournal; +}; +``` + +## メソッド + MsmqBindingElementBase クラスは、メソッドを一切定義しません。 + +## プロパティ + MsmqBindingElementBase クラスには、次のプロパティがあります。 + +### CustomDeadLetterQueue + データ型 : string + + アクセスの種類 : 読み取り専用 + + アプリケーションごとの配信不能キューの場所が含まれている URI です。ここには、期限切れのメッセージや、転送または配信に失敗したメッセージが配置されます。 + +### DeadLetterQueue + データ型 : string + + アクセスの種類 : 読み取り専用 + + 使用する配信不能キューの型を示す列挙型の値です。 + +### Durable + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + このバインディングによって処理されるメッセージが永続的なものか不安定なものかを示す値です。 + +### ExactlyOnce + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + このバインディングで処理されるメッセージが正確に 1 回だけ受信されるかどうかを示すブール値です。 + +### MaxRetryCycles + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 受信アプリケーションにメッセージを配信する再試行サイクルの最大数です。 + +### ReceiveErrorHandling + データ型 : string + + アクセスの種類 : 読み取り専用 + + 有害メッセージの処理の設定です。 + +### ReceiveRetryCount + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + アプリケーション キューから読み取られるメッセージの即時再試行の最大回数です。 + +### RetryCycleDelay + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + すぐに配信できなかったメッセージを配信しようとするときの、再試行サイクルの時間遅延を示す値です。 + +### TimeToLive + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + このバインディングで処理されるメッセージの期限が切れるまで、メッセージをキュー内で保持する時間です。 + +### UseMsmqTracing + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + このバインディングにより処理されるメッセージをトレースするかどうかを示すブール値です。 + +### UseSourceJournal + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + このバインディングにより処理されるメッセージのコピーをソース ジャーナル キューに保存するかどうかを示すブール値です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/msmqintegrationbindingelement.md b/docs/framework/wcf/diagnostics/wmi/msmqintegrationbindingelement.md new file mode 100644 index 00000000000..0264c49f9a1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/msmqintegrationbindingelement.md @@ -0,0 +1,51 @@ +--- +title: "MsmqIntegrationBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eaaa7651-e6e5-4fae-9dad-c1867d38b586 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# MsmqIntegrationBindingElement +MsmqIntegrationBindingElement + +## 構文 + +``` +class MsmqIntegrationBindingElement : MsmqBindingElementBase +{ + string SerializationFormat; +}; +``` + +## メソッド + MsmqIntegrationBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + MsmqIntegrationBindingElement クラスには、次のプロパティがあります。 + +### SerializationFormat + データ型: string + + アクセスの種類 : 読み取り専用 + + メッセージをシリアル化するためにバインディングが使用する形式 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/msmqtransportbindingelement.md b/docs/framework/wcf/diagnostics/wmi/msmqtransportbindingelement.md new file mode 100644 index 00000000000..57098950be5 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/msmqtransportbindingelement.md @@ -0,0 +1,67 @@ +--- +title: "MsmqTransportBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1c89f073-9ed3-4025-a8c5-13535a0f526b +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# MsmqTransportBindingElement +MsmqTransportBindingElement + +## 構文 + +``` +class MsmqTransportBindingElement : MsmqBindingElementBase +{ + sint32 MaxPoolSize; + string QueueTransferProtocol; + boolean UseActiveDirectory; +}; +``` + +## メソッド + MsmqTransportBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + MsmqTransportBindingElement クラスには、次のプロパティがあります。 + +### MaxPoolSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 内部 MSMQ メッセージ オブジェクトを含むプールの最大サイズです。 + +### QueueTransferProtocol + データ型 : string + + アクセスの種類 : 読み取り専用 + + このバインディングが使用するキューに置かれた通信チャネルのトランスポートを示す列挙値です。 + +### UseActiveDirectory + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + キューのアドレスを Active Directory を使用して変換する必要があるかどうかを示すブール値を返します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/mtommessageencodingbindingelement.md b/docs/framework/wcf/diagnostics/wmi/mtommessageencodingbindingelement.md new file mode 100644 index 00000000000..2f7eb553460 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/mtommessageencodingbindingelement.md @@ -0,0 +1,75 @@ +--- +title: "MtomMessageEncodingBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4a9c6c3d-e561-4b2d-a693-7e84bdd3534a +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# MtomMessageEncodingBindingElement +MtomMessageEncodingBindingElement + +## 構文 + +``` +class MtomMessageEncodingBindingElement : MessageEncodingBindingElement +{ + string Encoding; + sint32 MaxReadPoolSize; + sint32 MaxWritePoolSize; + XmlDictionaryReaderQuotas ReaderQuotas; +}; +``` + +## メソッド + MtomMessageEncodingBindingElement クラスで定義されているメソッドはありません。 + +## プロパティ + MtomMessageEncodingBindingElement クラスには、次のプロパティがあります。 + +### Encoding + データ型 : string + + アクセスの種類 : 読み取り専用 + + バインディングでメッセージの送信に使用される文字セット エンコーディング。 + +### MaxReadPoolSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 新しいリーダーを割り当てずに同時に読み取り可能なメッセージの数を定義する整数です。 + +### MaxWritePoolSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 新しいライターを割り当てずに同時に送信可能なメッセージの数を定義する整数です。 + +### ReaderQuotas + データ型 : XmlDictionaryReaderQuotas + + アクセスの種類 : 読み取り専用 + + リーダのクォータ。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/mustunderstandbehavior.md b/docs/framework/wcf/diagnostics/wmi/mustunderstandbehavior.md new file mode 100644 index 00000000000..8531d1aac1f --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/mustunderstandbehavior.md @@ -0,0 +1,51 @@ +--- +title: "MustUnderstandBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 911ed04a-c4b8-4c72-a5c3-fc7b4e3b4348 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# MustUnderstandBehavior +MustUnderstandBehavior + +## 構文 + +``` +class MustUnderstandBehavior : Behavior +{ + boolean ValidateMustUnderstand; +}; +``` + +## メソッド + MustUnderstandBehavior クラスで定義されるメソッドはありません。 + +## プロパティ + MustUnderstandBehavior クラスには、次のプロパティがあります。 + +### ValidateMustUnderstand + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + `true` の場合、未処理の `MustUnderstand` 属性を持つすべての SOAP ヘッダーは、動作が例外をスローする原因となります。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/namedpipeconnectionpoolsettings.md b/docs/framework/wcf/diagnostics/wmi/namedpipeconnectionpoolsettings.md new file mode 100644 index 00000000000..79baf16b80c --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/namedpipeconnectionpoolsettings.md @@ -0,0 +1,67 @@ +--- +title: "NamedPipeConnectionPoolSettings | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 079bccb8-54b5-4436-a43d-5567763f72ce +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# NamedPipeConnectionPoolSettings +NamedPipeConnectionPoolSettings + +## 構文 + +``` +class NamedPipeConnectionPoolSettings +{ + string GroupName; + datetime IdleTimeout; + sint32 MaxOutboundConnectionsPerEndpoint; +}; +``` + +## メソッド + NamedPipeConnectionPoolSettings クラスは、メソッドを一切定義しません。 + +## プロパティ + NamedPipeConnectionPoolSettings クラスには、次のプロパティがあります。 + +### GroupName + データ型 : string + + アクセスの種類 : 読み取り専用 + + バインド要素により使用される接続プールのグループ名。 + +### IdleTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + 接続が切断されるまでの最大アイドル時間。 + +### MaxOutboundConnectionsPerEndpoint + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + クライアント上の各エンドポイントでの発信接続の最大数。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/namedpipetransportbindingelement.md b/docs/framework/wcf/diagnostics/wmi/namedpipetransportbindingelement.md new file mode 100644 index 00000000000..19315400447 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/namedpipetransportbindingelement.md @@ -0,0 +1,51 @@ +--- +title: "NamedPipeTransportBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c201309c-c528-4b92-a53c-4d48151c5749 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# NamedPipeTransportBindingElement +NamedPipeTransportBindingElement + +## 構文 + +``` +class NamedPipeTransportBindingElement : ConnectionOrientedTransportBindingElement +{ + NamedPipeConnectionPoolSettings ConnectionPoolSettings; +}; +``` + +## メソッド + NamedPipeTransportBindingElement クラスで定義されているメソッドはありません。 + +## プロパティ + NamedPipeTransportBindingElement クラスには、次のプロパティがあります。 + +### ConnectionPoolSettings + データ型 : NamedPipeConnectionPoolSettings + + アクセスの種類 : 読み取り専用 + + 接続プールの設定。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/onewaybindingelement.md b/docs/framework/wcf/diagnostics/wmi/onewaybindingelement.md new file mode 100644 index 00000000000..1dcdee476e0 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/onewaybindingelement.md @@ -0,0 +1,67 @@ +--- +title: "OneWayBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5c7e17c3-39b9-4214-ae08-9e6141734305 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# OneWayBindingElement +OneWayBindingElement + +## 構文 + +``` +class OneWayBindingElement : BindingElement +{ + ChannelPoolSettings ChannelPoolSettings; + sint32 MaxAcceptedChannels; + boolean PacketRoutable; +}; +``` + +## メソッド + OneWayBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + OneWayBindingElement クラスには、次のプロパティがあります。 + +### ChannelPoolSettings + データ型 : ChannelPoolSettings + + アクセスの種類 : 読み取り専用 + + チャネル プールの設定。 + +### MaxAcceptedChannels + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 許可されるチャネルの最大数。 + +### PacketRoutable + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + パケットがルーティング可能かどうかを示す値。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/operation-class.md b/docs/framework/wcf/diagnostics/wmi/operation-class.md new file mode 100644 index 00000000000..45003d7f979 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/operation-class.md @@ -0,0 +1,139 @@ +--- +title: "操作クラス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b19d1496-ef06-4d0c-b2ae-e728ec00cca0 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 操作クラス +Operation + +## 構文 + +``` +class Operation +{ + string Action; + boolean AsyncPattern; + Behavior Behaviors[]; + boolean IsCallback; + boolean IsInitiating; + boolean IsOneWay; + boolean IsTerminating; + string MethodSignature; + string Name; + string ParameterTypes[]; + string ReplyAction; + string ReturnType; +}; +``` + +## メソッド + Operation クラスで定義されているメソッドはありせん。 + +## プロパティ + Operation クラスには、次のプロパティがあります。 + +### Action + データ型 : string + + アクセスの種類 : 読み取り専用 + + 要求メッセージの WS\-Addressing 操作。 + +### AsyncPattern + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + サービス コントラクトで `Begin` メソッドと `End` メソッドの組み合わせを使用して、操作が非同期的に実装されることを示します。 + +### Behaviors + データ型 : Behavior 配列 + + アクセスの種類 : 読み取り専用 + + この操作に関連付けられている動作。 + +### IsCallback + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + この操作がコールバック操作の場合、True。 + +### IsInitiating + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + メソッドが、サーバーでセッションを開始できる操作を実装するかどうかを指定します。 + +### IsOneWay + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 操作が応答メッセージを返すかどうかを指定します。 + +### IsTerminating + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 操作が応答メッセージを返すかどうかを指定します。 + +### MethodSignature + データ型 : string + + アクセスの種類 : 読み取り専用 + + 操作のメソッド署名。 + +### Name + データ型 : string + + アクセスの種類 : 読み取り専用 + + 操作の名前。 + +### ParameterTypes + データ型 : string 配列 + + アクセスの種類 : 読み取り専用 + + 操作のパラメーターの型。 + +### ReplyAction + データ型 : string + + アクセスの種類 : 読み取り専用 + + 操作の応答メッセージの SOAP アクションの値。 + +### ReturnType + データ型 : string + + アクセスの種類 : 読み取り専用 + + 操作の戻り値の型。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/operationbehaviorattribute.md b/docs/framework/wcf/diagnostics/wmi/operationbehaviorattribute.md new file mode 100644 index 00000000000..0862869e694 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/operationbehaviorattribute.md @@ -0,0 +1,83 @@ +--- +title: "OperationBehaviorAttribute | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8c9b0755-9e83-411f-bdcb-61a586022797 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# OperationBehaviorAttribute +OperationBehaviorAttribute + +## 構文 + +``` +class OperationBehaviorAttribute : Behavior +{ + boolean AutoDisposeParameters; + string Impersonation; + string ReleaseInstanceMode; + boolean TransactionAutoComplete; + boolean TransactionScopeRequired; +}; +``` + +## メソッド + OperationBehaviorAttribute クラスで定義されるメソッドはありません。 + +## プロパティ + OperationBehaviorAttribute クラスには、次のプロパティがあります。 + +### AutoDisposeParameters + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + パラメーターの自動破棄機能の状態です。 + +### Impersonation + データ型 : string + + アクセスの種類 : 読み取り専用 + + 操作がサポートする、呼び出し元の偽装レベルを示します。 + +### ReleaseInstanceMode + データ型 : string + + アクセスの種類 : 読み取り専用 + + 操作の呼び出し過程のどの時点でオブジェクトをリサイクルするかを示します。 + +### TransactionAutoComplete + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 未処理の例外が発生しなかった場合に、現在のトランザクションを自動的にコミットするかどうかを示します。 + +### TransactionScopeRequired + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 操作がトランザクションを必要とするかどうかを示します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/peercustomresolverbindingelement.md b/docs/framework/wcf/diagnostics/wmi/peercustomresolverbindingelement.md new file mode 100644 index 00000000000..f019a988196 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/peercustomresolverbindingelement.md @@ -0,0 +1,60 @@ +--- +title: "PeerCustomResolverBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9ccc2770-a20e-4dff-9970-f56ad8aec2b5 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# PeerCustomResolverBindingElement +PeerCustomResolverBindingElement + +## 構文 + `class PeerCustomResolverBindingElement : PeerResolverBindingElement` + + `{` + + `string Address;` + + `string Binding;` + + `};` + +## メソッド + PeerCustomResolverBindingElement クラスで定義されているメソッドはありません。 + +## プロパティ + PeerCustomResolverBindingElement クラスには、次のプロパティがあります。 + +### Address + データ型 : string + + アクセスの種類 : 読み取り専用 + + ピア カスタム リゾルバーのアドレスです。 + +### Binding + データ型 : string + + アクセスの種類 : 読み取り専用 + + バインディングの構成名。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/peerresolverbindingelement.md b/docs/framework/wcf/diagnostics/wmi/peerresolverbindingelement.md new file mode 100644 index 00000000000..fa4883e479a --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/peerresolverbindingelement.md @@ -0,0 +1,51 @@ +--- +title: "PeerResolverBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 36882183-13a3-443f-8aae-62a7825d5633 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# PeerResolverBindingElement +PeerResolverBindingElement + +## 構文 + +``` +class PeerResolverBindingElement : BindingElement +{ + string ReferralPolicy; +}; +``` + +## メソッド + PeerResolverBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + PeerResolverBindingElement クラスには、次のプロパティがあります。 + +### ReferralPolicy + データ型 : string + + アクセスの種類 : 読み取り専用 + + ピア間で参照を共有する方法を指定します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/peersecuritysettings.md b/docs/framework/wcf/diagnostics/wmi/peersecuritysettings.md new file mode 100644 index 00000000000..846d66acb34 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/peersecuritysettings.md @@ -0,0 +1,59 @@ +--- +title: "PeerSecuritySettings | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 24ae0d35-f3a3-419b-afd6-686e22aae27b +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# PeerSecuritySettings +PeerSecuritySettings + +## 構文 + +``` +class PeerSecuritySettings +{ + string Mode; + PeerTransportSecuritySettings Transport; +}; +``` + +## メソッド + PeerSecuritySettings クラスは、メソッドを一切定義しません。 + +## プロパティ + PeerSecuritySettings クラスには、次のプロパティがあります。 + +### Mode + データ型 : string + + アクセスの種類 : 読み取り専用 + + このバインディングで構成されたエンドポイントによって、メッセージ レベルおよびトランスポート レベルのセキュリティが使用されているかどうかを示します。 + +### トランスポート + データ型 : PeerTransportSecuritySettings + + アクセスの種類 : 読み取り専用 + + トランスポートのセキュリティ設定です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/peertransportbindingelement.md b/docs/framework/wcf/diagnostics/wmi/peertransportbindingelement.md new file mode 100644 index 00000000000..f39cd74f4ce --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/peertransportbindingelement.md @@ -0,0 +1,67 @@ +--- +title: "PeerTransportBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 40bf6be2-8087-4cb3-a66c-408d53eb9269 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# PeerTransportBindingElement +PeerTransportBindingElement + +## 構文 + +``` +class PeerTransportBindingElement : TransportBindingElement +{ + string ListenIPAddress; + sint32 Port; + PeerSecuritySettings Security; +}; +``` + +## メソッド + PeerTransportBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + PeerTransportBindingElement クラスには、次のプロパティがあります。 + +### ListenIPAddress + データ型 : string + + アクセスの種類 : 読み取り専用 + + ピア ノードがメッセージをリッスンする IP アドレスです。 + +### Port + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + このバインディングがピア チャネル メッセージを処理するネットワーク インターフェイス ポートです。 + +### Security + データ型 : PeerSecuritySettings + + アクセスの種類 : 読み取り専用 + + ピア トランスポートのセキュリティ設定です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/peertransportsecuritysettings.md b/docs/framework/wcf/diagnostics/wmi/peertransportsecuritysettings.md new file mode 100644 index 00000000000..c998c154fa6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/peertransportsecuritysettings.md @@ -0,0 +1,51 @@ +--- +title: "PeerTransportSecuritySettings | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1df08cbb-68c5-4d36-9f88-a776a8117de8 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# PeerTransportSecuritySettings +PeerTransportSecuritySettings + +## 構文 + +``` +class PeerTransportSecuritySettings +{ + string CredentialType; +}; +``` + +## メソッド + PeerTransportSecuritySettings クラスは、メソッドを一切定義しません。 + +## プロパティ + PeerTransportSecuritySettings クラスには、次のプロパティがあります。 + +### CredentialType + データ型 : string + + アクセスの種類 : 読み取り専用 + + ピア セキュリティ要素のトランスポート資格情報の種類。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/pnrppeerresolverbindingelement.md b/docs/framework/wcf/diagnostics/wmi/pnrppeerresolverbindingelement.md new file mode 100644 index 00000000000..19b7aae1a23 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/pnrppeerresolverbindingelement.md @@ -0,0 +1,39 @@ +--- +title: "PnrpPeerResolverBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 050f24bf-dc23-4181-ad1e-a4cce1dc89fb +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# PnrpPeerResolverBindingElement +PnrpPeerResolverBindingElement + +## 構文 + `class PnrpPeerResolverBindingElement : PeerResolverBindingElement` + + `{` + + `};` + +## メソッド + PnrpPeerResolverBindingElement クラスは、PeerResolverBindingElement を継承しますが、追加のメソッドやプロパティを定義しません。 + +## 要件 + +|MOF|Servicemodel.mof で定義| +|---------|--------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/privacynoticebindingelement.md b/docs/framework/wcf/diagnostics/wmi/privacynoticebindingelement.md new file mode 100644 index 00000000000..06936ea0541 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/privacynoticebindingelement.md @@ -0,0 +1,59 @@ +--- +title: "PrivacyNoticeBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0cf110b1-e25b-4d67-986b-10cb04dc4826 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# PrivacyNoticeBindingElement +PrivacyNoticeBindingElement + +## 構文 + +``` +class PrivacyNoticeBindingElement : BindingElement +{ + sint32 PrivacyNoticeVersion; + string Url; +}; +``` + +## メソッド + PrivacyNoticeBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + PrivacyNoticeBindingElement クラスには、次のプロパティがあります。 + +### PrivacyNoticeVersion + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + プライバシーに関する声明のバージョンです。 + +### Url + データ型 : string + + アクセスの種類 : 読み取り専用 + + プライバシーに関する声明がある URL です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/reliablesessionbindingelement.md b/docs/framework/wcf/diagnostics/wmi/reliablesessionbindingelement.md new file mode 100644 index 00000000000..d347418b9cb --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/reliablesessionbindingelement.md @@ -0,0 +1,107 @@ +--- +title: "ReliableSessionBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: effda125-b8d3-4de6-8c0e-f59f5ea8f6eb +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# ReliableSessionBindingElement +ReliableSessionBindingElement + +## 構文 + +``` +class ReliableSessionBindingElement : BindingElement +{ + datetime AcknowledgementInterval; + boolean FlowControlEnabled; + datetime InactivityTimeout; + sint32 MaxPendingChannels; + sint32 MaxRetryCount; + sint32 MaxTransferWindowSize; + boolean Ordered; + integer ReliableMessagingVersion; +}; +``` + +## メソッド + ReliableSessionBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + ReliableSessionBindingElement クラスには、次のプロパティがあります。 + +### AcknowledgementInterval + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + ファクトリによって作成された信頼できるチャネルで、メッセージの送信元に受信確認を送信するまで送信先が待機する時間 + +### FlowControlEnabled + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + フロー制御を有効にするかどうかを示すブール値 + +### InactivityTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + 他の通信相手がチャネルにメッセージを送信せずにいられる最長期間を指定します。他の通信相手がメッセージを送信しない期間がこの値を超えると、チャネルでエラーが発生します。 + +### MaxPendingChannels + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + リスナーで受け入れを待機できるチャネルの最大数。 + +### MaxRetryCount + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 基になるチャネルで `Send` を呼び出すことで、信頼できるチャネルが受信確認を受信していないメッセージの再転送を試みる最大回数 + +### MaxTransferWindowSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 信頼できるセッションの転送ウィンドウの最大サイズ + +### 順序あり + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + メッセージが送信された順序で到着されることを保証するかどうかを指定するブール値です。 + +### ReliableMessagingVersion + データ型 : integer + + アクセスの種類 : 読み取り専用 + + 信頼できるセッションで使用される WS\-ReliableMessaging プロトコルのバージョンを指定する整数。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/securitybindingelement.md b/docs/framework/wcf/diagnostics/wmi/securitybindingelement.md new file mode 100644 index 00000000000..f11120cfceb --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/securitybindingelement.md @@ -0,0 +1,91 @@ +--- +title: "SecurityBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ef93b6e6-3524-48a8-94d3-c8837f1872f9 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# SecurityBindingElement +SecurityBindingElement + +## 構文 + +``` +class SecurityBindingElement : BindingElement +{ + string DefaultAlgorithmSuite; + boolean IncludeTimestamp; + string KeyEntropyMode; + LocalServiceSecuritySettings LocalServiceSecuritySettings; + string MessageSecurityVersion; + string SecurityHeaderLayout; +}; +``` + +## メソッド + SecurityBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + SecurityBindingElement クラスには、次のプロパティがあります。 + +### DefaultAlgorithmSuite + データ型: string + + アクセスの種類 : 読み取り専用 + + バインディングで使用するアルゴリズムを指定します。 + +### IncludeTimestamp + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 各メッセージにタイムスタンプが含まれるかどうかを指定するブール値です。 + +### KeyEntropyMode + データ型: string + + アクセスの種類 : 読み取り専用 + + キーの作成に使用されるエントロピのソースです。 + +### LocalServiceSecuritySettings + データ型 : LocalServiceSecuritySettings + + アクセスの種類 : 読み取り専用 + + ローカル サービスに対するバインディング固有のセキュリティ プロパティです。 + +### MessageSecurityVersion + データ型: string + + アクセスの種類 : 読み取り専用 + + メッセージ セキュリティで使用されるバージョンです。 + +### SecurityHeaderLayout + データ型: string + + アクセスの種類 : 読み取り専用 + + このバインディングのセキュリティ ヘッダー内の要素の順序です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/service.md b/docs/framework/wcf/diagnostics/wmi/service.md new file mode 100644 index 00000000000..a7b01f997f8 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/service.md @@ -0,0 +1,136 @@ +--- +title: "サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 999806e1-6376-409e-b998-b0af391adfe7 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# サービス +サービス + +## 構文 + +``` +class Service +{ + string BaseAddresses[]; + Behavior Behaviors[]; + string ConfigurationName; + string CounterInstanceName; + string DistinguishedName; + string Extensions[]; + string Metadata[]; + string Name; + string Namespace; + datetime Opened; + Channel OutgoingChannels[]; + sint32 ProcessId; +}; +``` + +## メソッド + Service クラスで定義されているメソッドはありません。 + +## プロパティ + Service クラスには次のプロパティがあります。 + +### BaseAddresses + データ型 : string 配列 + + アクセスの種類 : 読み取り専用 + + サービスによって使用されるベース アドレスです。 + +### 動作 + データ型 : Behavior 配列 + + アクセスの種類 : 読み取り専用 + + このサービスに関連付けられている動作です。 + +### ConfigurationName + データ型 : string + + アクセスの種類 : 読み取り専用 + + ServiceElement\_BehaviorConfiguration + +### CounterInstanceName + データ型 : string + + アクセスの種類 : 読み取り専用 + + サービスのパフォーマンス カウンターのインスタンスのインスタンス名です。 + +### DistinguishedName + データ型 : string + + アクセスの種類 : 読み取り専用 + + アドレスでのサービス名です。 + +### Extensions + データ型 : string 配列 + + アクセスの種類 : 読み取り専用 + + サービス インスタンスの拡張に対するインスタンス コンテキストです。 + +### メタデータ + データ型 : string 配列 + + アクセスの種類 : 読み取り専用 + + サービス メタデータの設定です。 + +### Name + データ型 : string + + アクセスの種類 : 読み取り専用 + + このサービスの一意の名前。 + +### 名前空間 + データ型 : string + + アクセスの種類 : 読み取り専用 + + サービスの名前空間です。 + +### Opened + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + サービスが開かれた時刻です。 + +### OutgoingChannels + データ型 : Channel 配列 + + アクセスの種類 : 読み取り専用 + + サービス インスタンスから送信しているチャネルです。 + +### ProcessId + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + サービスをホストするプロセスのプロセス ID です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/serviceappdomain.md b/docs/framework/wcf/diagnostics/wmi/serviceappdomain.md new file mode 100644 index 00000000000..6378345ce89 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/serviceappdomain.md @@ -0,0 +1,58 @@ +--- +title: "ServiceAppDomain | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f28e5186-a66d-46c1-abe9-b50e07f8cb4f +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ServiceAppDomain +アプリケーション ドメインにサービスを割り当てます。 + +## 構文 + +``` +class ServiceAppDomain +{ + Service ref; + AppDomainInfo ref; +}; +``` + +## メソッド + ServiceAppDomain クラスは、メソッドを一切定義しません。 + +## プロパティ + ServiceAppDomain クラスには、次のプロパティがあります。 + +### ref + データ型 : Service + 修飾子: キー + + アクセスの種類 : 読み取り専用 + + このアプリケーション ドメインのサービスです。 + +### ref + データ型: AppDomainInfo + 修飾子: キー + + アクセスの種類 : 読み取り専用 + + アプリケーション ドメインのプロパティが格納されています。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/serviceauthorizationbehavior.md b/docs/framework/wcf/diagnostics/wmi/serviceauthorizationbehavior.md new file mode 100644 index 00000000000..765f184e0e9 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/serviceauthorizationbehavior.md @@ -0,0 +1,75 @@ +--- +title: "ServiceAuthorizationBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 77dad8e8-fea4-4d1c-b366-2f01a2a87f78 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ServiceAuthorizationBehavior +ServiceAuthorizationBehavior + +## 構文 + +``` +class ServiceAuthorizationBehavior : Behavior +{ + boolean ImpersonateCallerForAllOperations; + string PrincipalPermissionMode; + string RoleProvider; + string ServiceAuthorizationManager; +}; +``` + +## メソッド + ServiceAuthorizationBehavior クラスは、メソッドを一切定義しません。 + +## プロパティ + ServiceAuthorizationBehavior クラスには、次のプロパティがあります。 + +### impersonateCallerForAllOperations + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 受信メッセージによって提供される資格情報を使用してサービスが偽装を試みるかどうかを制御する値。 + +### PrincipalPermissionMode + データ型 : string + + アクセスの種類 : 読み取り専用 + + サーバーでの操作を実行するために使用されるプリンシパル。 + +### RoleProvider + データ型 : string + + アクセスの種類 : 読み取り専用 + + ASP.NET ロール プロバイダーの名前。 + +### ServiceAuthorizationManager + データ型 : string + + アクセスの種類 : 読み取り専用 + + カスタム承認で使用される承認マネージャー。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/servicebehaviorattribute.md b/docs/framework/wcf/diagnostics/wmi/servicebehaviorattribute.md new file mode 100644 index 00000000000..beab4d55028 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/servicebehaviorattribute.md @@ -0,0 +1,162 @@ +--- +title: "ServiceBehaviorAttribute | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5faa266f-587f-4e03-828d-1c7dd5acfe65 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ServiceBehaviorAttribute +ServiceBehaviorAttribute + +## 構文 + +``` +class ServiceBehaviorAttribute : Behavior +{ + boolean AutomaticSessionShutdown; + string ConcurrencyMode; + string ConfigurationName; + boolean IgnoreExtensionDataObject; + boolean IncludeExceptionDetailInFaults; + string InstanceContextMode; + sint32 MaxItemsInObjectGraph; + string Name; + string Namespace; + boolean ReleaseServiceInstanceOnTransactionComplete; + boolean TransactionAutoCompleteOnSessionClose; + string TransactionIsolationLevel; + datetime TransactionTimeout; + boolean UseSynchronizationContext; + boolean ValidateMustUnderstand; +}; +``` + +## メソッド + ServiceBehaviorAttribute クラスは、メソッドを一切定義しません。 + +## プロパティ + ServiceBehaviorAttribute クラスには、次のプロパティがあります。 + +### AutomaticSessionShutdown + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + クライアントが出力セッションを閉じるときにセッションを自動的に閉じるかどうかを示します。 + +### ConcurrencyMode + データ型: string +アクセスの種類 : 読み取り専用 + + サービスで、1 つのスレッド、複数のスレッド、または再入呼び出しをサポートするかどうかを示します。 + +### ConfigurationName + データ型 : string + + アクセスの種類 : 読み取り専用 + + サービス構成の名前。 + +### IgnoreExtensionDataObject + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 不明なシリアル化データをネットワークで送信するかどうかを指定します。 + +### IncludeExceptionDetailInFaults + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + デバッグの目的でクライアントに返される SOAP エラーの詳細に、マネージ例外情報を含めるかどうかを指定します。 + +### InstanceContextMode + データ型 : string + + アクセスの種類 : 読み取り専用 + + 新しいサービス オブジェクトを作成するタイミングを指定します。 + +### MaxItemsInObjectGraph + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 1 つのシリアル化されたオブジェクトで許可される項目の最大数。 + +### Name + データ型 : string + + アクセスの種類 : 読み取り専用 + + WSDL でのサービスの名前属性。 + +### 名前空間 + データ型 : string + + アクセスの種類 : 読み取り専用 + + WSDL でのサービスのターゲット名前空間。 + +### ReleaseServiceInstanceOnTransactionComplete + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 現在のトランザクションの完了時に、サービス オブジェクトをリサイクルするかどうかを指定します。 + +### TransactionAutoCompleteOnSessionClose + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 現在のセッションの終了時に、保留中のトランザクションを完了するかどうかを指定します。 + +### TransactionIsolationLevel + データ型 : string + + アクセスの種類 : 読み取り専用 + + トランザクションの分離レベルを指定します。 + +### TransactionTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + トランザクションを完了しなければならない期間。 + +### UseSynchronizationContext + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 現在の同期コンテキストを使用してスレッドの実行を選択するかどうかを指定します。 + +### ValidateMustUnderstand + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + システムまたはアプリケーションで SOAP MustUnderstand ヘッダー処理を強制的に行うかどうかを指定します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/servicecredentials.md b/docs/framework/wcf/diagnostics/wmi/servicecredentials.md new file mode 100644 index 00000000000..026316d30f6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/servicecredentials.md @@ -0,0 +1,99 @@ +--- +title: "ServiceCredentials | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9c780793-4785-46f7-add9-ac1ebeadb614 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ServiceCredentials +ServiceCredentials + +## 構文 + +``` +class ServiceCredentials : Behavior +{ + string ClientCertificate; + string IssuedTokenAuthentication; + string Peer; + string SecureConversationAuthentication; + string ServiceCertificate; + string UserNameAuthentication; + string WindowsAuthentication; +}; +``` + +## メソッド + ServiceCredentials クラスで定義されるメソッドはありません。 + +## プロパティ + ServiceCredentials クラスには、次のプロパティがあります。 + +### ClientCertificate + データ型 : string + + アクセスの種類 : 読み取り専用 + + このサービスのための、クライアント証明認証および提供設定です。 + +### IssuedTokenAuthentication + データ型 : string + + アクセスの種類 : 読み取り専用 + + このサービスのための、現在発行されているトークンの認証設定です。 + +### Peer + データ型 : string + + アクセスの種類 : 読み取り専用 + + ピアのトランスポート エンドポイントによって使用される、現在の証明書の認証および提供の設定です。 + +### SecureConversationAuthentication + データ型 : string + + アクセスの種類 : 読み取り専用 + + 現在のセキュリティで保護された通信の設定を指定します。 + +### ServiceCertificate + データ型 : string + + アクセスの種類 : 読み取り専用 + + このサービスに関連付けられている証明書です。 + +### UserNameAuthentication + データ型 : string + + アクセスの種類 : 読み取り専用 + + このサービスのユーザー名\/パスワードの設定です。 + +### WindowsAuthentication + データ型 : string + + アクセスの種類 : 読み取り専用 + + このサービスの Windows 認証の設定です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/servicedebugbehavior.md b/docs/framework/wcf/diagnostics/wmi/servicedebugbehavior.md new file mode 100644 index 00000000000..9cd445a2322 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/servicedebugbehavior.md @@ -0,0 +1,83 @@ +--- +title: "ServiceDebugBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a5ec9061-1e95-43fb-b0d9-dbd0a7bc3c44 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ServiceDebugBehavior +ServiceDebugBehavior + +## 構文 + +``` +class ServiceDebugBehavior : Behavior +{ + boolean HttpHelpPageEnabled; + string HttpHelpPageUrl; + boolean HttpsHelpPageEnabled; + string HttpsHelpPageUrl; + boolean IncludeExceptionDetailInFaults; +}; +``` + +## メソッド + ServiceDebugBehavior クラスで定義されるメソッドはありません。 + +## プロパティ + ServiceDebugBehavior クラスには、次のプロパティがあります。 + +### HttpHelpPageEnabled + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + `HttpGetUrl` 属性によって制御されるアドレスで、サービスが WSDL を公開するかどうかを制御します。 + +### HttpHelpPageUrl + データ型 : 文字列 + + アクセスの種類 : 読み取り専用 + + HTTP を使用した取得のために、サービス WSDL が公開される場所を設定します。 + +### HttpsHelpPageEnabled + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + `HttpsGetUrl` 属性によって制御されるアドレスで、サービスが HTTPS を介して WSDL を公開するかどうかを制御します。 + +### HttpsHelpPageUrl + データ型 : string + + アクセスの種類 : 読み取り専用 + + HTTPS を使用した取得のために、サービス WSDL が公開される場所を設定します。 + +### IncludeExceptionDetailInFaults + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + デバッグの目的でクライアントに返される SOAP エラーの詳細に、マネージ例外情報を含めるかどうかを指定します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/servicemetadatabehavior.md b/docs/framework/wcf/diagnostics/wmi/servicemetadatabehavior.md new file mode 100644 index 00000000000..1e483bfeddf --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/servicemetadatabehavior.md @@ -0,0 +1,83 @@ +--- +title: "ServiceMetadataBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0f194476-72f1-467e-bdce-674306316e64 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ServiceMetadataBehavior +ServiceMetadataBehavior + +## 構文 + +``` +class ServiceMetadataBehavior : Behavior +{ + string ExternalMetadataLocation; + boolean HttpGetEnabled; + string HttpGetUrl; + boolean HttpsGetEnabled; + string HttpsGetUrl; +}; +``` + +## メソッド + ServiceMetadataBehavior クラスは、メソッドを一切定義しません。 + +## プロパティ + ServiceMetadataBehavior クラスには、次のプロパティがあります。 + +### ExternalMetadataLocation + データ型 : string + + アクセスの種類 : 読み取り専用 + + サービスがメタデータ要求をリダイレクトする場所を設定します。 + +### HttpGetEnabled + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + `HttpGetUrl` 属性によって制御されるアドレスで、サービスが WSDL を公開するかどうかを制御します。 + +### HttpGetUrl + データ型 : string + + アクセスの種類 : 読み取り専用 + + HTTP を使用した取得のために、サービス WSDL が公開される場所を設定します。 + +### HttpsGetEnabled + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + `HttpsGetUrl` 属性によって制御されるアドレスで、サービスが HTTPS を介して WSDL を公開するかどうかを制御します。 + +### HttpsGetUrl + データ型 : string + + アクセスの種類 : 読み取り専用 + + HTTPS を使用した取得のために、サービス WSDL が公開される場所を設定します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/servicesecurityauditbehavior.md b/docs/framework/wcf/diagnostics/wmi/servicesecurityauditbehavior.md new file mode 100644 index 00000000000..74c0adc6195 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/servicesecurityauditbehavior.md @@ -0,0 +1,75 @@ +--- +title: "ServiceSecurityAuditBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2c5809e7-5364-44ce-bc71-848be4672e2a +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# ServiceSecurityAuditBehavior +ServiceSecurityAuditBehavior + +## 構文 + +``` +class ServiceSecurityAuditBehavior : Behavior +{ + string AuditLogLocation; + string MessageAuthenticationAuditLevel; + string ServiceAuthorizationAuditLevel; + boolean SuppressAuditFailure; +}; +``` + +## メソッド + ServiceSecurityAuditBehavior クラスは、メソッドを一切定義しません。 + +## プロパティ + ServiceSecurityAuditBehavior クラスには、次のプロパティがあります。 + +### AuditLogLocation + データ型 : string + + アクセスの種類 : 読み取り専用 + + 監査ログの場所。 + +### MessageAuthenticationAuditLevel + データ型 : string + + アクセスの種類 : 読み取り専用 + + 監査イベントをログに記録するために使用されるメッセージ認証レベルの種類。 + +### ServiceAuthorizationAuditLevel + データ型 : string + + アクセスの種類 : 読み取り専用 + + 監査ログに記録される承認イベントの種類。 + +### SuppressAuditFailure + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 監査ログへの書き込みエラーを非表示にする動作を指定するブール型の値。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/servicethrottlingbehavior.md b/docs/framework/wcf/diagnostics/wmi/servicethrottlingbehavior.md new file mode 100644 index 00000000000..3524b2840a6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/servicethrottlingbehavior.md @@ -0,0 +1,67 @@ +--- +title: "ServiceThrottlingBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 37b9e517-1f1f-4ec4-9fcb-2b8016794f5b +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ServiceThrottlingBehavior +ServiceThrottlingBehavior + +## 構文 + +``` +class ServiceThrottlingBehavior : Behavior +{ + sint32 MaxConcurrentCalls; + sint32 MaxConcurrentInstances; + sint32 MaxConcurrentSessions; +}; +``` + +## メソッド + ServiceThrottlingBehavior クラスは、メソッドを一切定義しません。 + +## プロパティ + ServiceThrottlingBehavior クラスには、次のプロパティがあります。 + +### MaxConcurrentCalls + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + ServiceHost 内のすべてのディスパッチャー オブジェクトでアクティブに処理中のメッセージの最大数。 + +### MaxConcurrentInstances + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 一度に実行可能なサービス オブジェクトの最大数。 + +### MaxConcurrentSessions + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + ホストが一度に受け入れ可能なセッションの最大数。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/servicetimeoutsbehavior.md b/docs/framework/wcf/diagnostics/wmi/servicetimeoutsbehavior.md new file mode 100644 index 00000000000..485c8542009 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/servicetimeoutsbehavior.md @@ -0,0 +1,51 @@ +--- +title: "ServiceTimeoutsBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4412525d-a3cc-4eae-b3e8-a50ce766d09d +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ServiceTimeoutsBehavior +ServiceTimeoutsBehavior + +## 構文 + +``` +class ServiceTimeoutsBehavior : Behavior +{ + datetime TransactionTimeout; +}; +``` + +## メソッド + ServiceTimeoutsBehavior クラスは、メソッドを一切定義しません。 + +## プロパティ + ServiceTimeoutsBehavior クラスには、次のプロパティがあります。 + +### TransactionTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + トランザクションを完了しなければならない期間。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/servicetoendpointassociation.md b/docs/framework/wcf/diagnostics/wmi/servicetoendpointassociation.md new file mode 100644 index 00000000000..c861687f1d6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/servicetoendpointassociation.md @@ -0,0 +1,58 @@ +--- +title: "ServiceToEndpointAssociation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 03c3cd15-e1b2-4dc2-bdc2-59fdccdae110 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ServiceToEndpointAssociation +エンドポイントにサービスを割り当てます。 + +## 構文 + +``` +class ServiceToEndpointAssociation +{ + Service ref; + Endpoint ref; +}; +``` + +## メソッド + ServiceToEndpointAssociation クラスは、メソッドを一切定義しません。 + +## プロパティ + ServiceToEndpointAssociation クラスには、次のプロパティがあります。 + +### ref + データ型 : Service + + アクセスの種類 : 読み取り専用 +修飾子: キー + + エンドポイントに関連付けられるサービス。 + +### ref + データ型 : Endpoint + + アクセスの種類 : 読み取り専用 +修飾子: キー + + サービスに関連付けられるエンドポイント。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/sslstreamsecuritybindingelement.md b/docs/framework/wcf/diagnostics/wmi/sslstreamsecuritybindingelement.md new file mode 100644 index 00000000000..1ad6932c95d --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/sslstreamsecuritybindingelement.md @@ -0,0 +1,51 @@ +--- +title: "SslStreamSecurityBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 18130d50-8996-4257-9c60-bc457f8654d8 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# SslStreamSecurityBindingElement +SslStreamSecurityBindingElement + +## 構文 + +``` +class SslStreamSecurityBindingElement : BindingElement +{ + boolean RequireClientCertificate; +}; +``` + +## メソッド + SslStreamSecurityBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + SslStreamSecurityBindingElement クラスには、次のプロパティがあります。 + +### RequireClientCertificate + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + このバインディングにクライアント証明書が必要かどうかを指定します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/symmetricsecuritybindingelement.md b/docs/framework/wcf/diagnostics/wmi/symmetricsecuritybindingelement.md new file mode 100644 index 00000000000..adbd4cd444f --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/symmetricsecuritybindingelement.md @@ -0,0 +1,59 @@ +--- +title: "SymmetricSecurityBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b2e182b6-c041-4d80-a926-6058068d9f79 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# SymmetricSecurityBindingElement +SymmetricSecurityBindingElement + +## 構文 + +``` +class SymmetricSecurityBindingElement : SecurityBindingElement +{ + string MessageProtectionOrder; + boolean RequireSignatureConfirmation; +}; +``` + +## メソッド + SymmetricSecurityBindingElement クラスで定義されるメソッドはありません。 + +## プロパティ + SymmetricSecurityBindingElement クラスには、次のプロパティがあります。 + +### MessageProtectionOrder + データ型 : string + + アクセスの種類 : 読み取り専用 + + このバインディングのメッセージの暗号化と署名の命令。 + +### RequireSignatureConfirmation + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + バインディングで署名の確認が必要かどうか。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/synchronousreceivebehavior.md b/docs/framework/wcf/diagnostics/wmi/synchronousreceivebehavior.md new file mode 100644 index 00000000000..df18f6582e1 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/synchronousreceivebehavior.md @@ -0,0 +1,40 @@ +--- +title: "SynchronousReceiveBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b31a26a9-ae96-4df0-8406-e07d6f59087c +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# SynchronousReceiveBehavior +SynchronousReceiveBehavior + +## 構文 + +``` +class SynchronousReceiveBehavior : Behavior +{ +}; +``` + +## メソッド + SynchronousReceiveBehavior クラスは Behavior の継承ですが、追加のメソッドやプロパティは定義されていません。 + +## 要件 + +|MOF|Servicemodel.mof で定義| +|---------|--------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/tcpconnectionpoolsettings.md b/docs/framework/wcf/diagnostics/wmi/tcpconnectionpoolsettings.md new file mode 100644 index 00000000000..aa1e92e546c --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/tcpconnectionpoolsettings.md @@ -0,0 +1,75 @@ +--- +title: "TcpConnectionPoolSettings | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 19acfba3-c057-4dbc-bac7-8674d7844d83 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# TcpConnectionPoolSettings +TcpConnectionPoolSettings + +## 構文 + +``` +class TcpConnectionPoolSettings +{ + string GroupName; + datetime IdleTimeout; + datetime LeaseTimeout; + sint32 MaxOutboundConnectionsPerEndpoint; +}; +``` + +## メソッド + TcpConnectionPoolSettings クラスは、メソッドを一切定義しません。 + +## プロパティ + TcpConnectionPoolSettings クラスには、次のプロパティがあります。 + +### GroupName + データ型 : string + + アクセスの種類 : 読み取り専用 + + バインド要素により使用される接続プールのグループ名。 + +### IdleTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + 接続が切断されるまでの最大アイドル時間。 + +### LeaseTimeout + データ型 : datetime + + アクセスの種類 : 読み取り専用 + + リース操作を完了する必要がある、タイムアウトまでの最大時間。 + +### MaxOutboundConnectionsPerEndpoint + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 各エンドポイントの発信接続の最大数。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/tcptransportbindingelement.md b/docs/framework/wcf/diagnostics/wmi/tcptransportbindingelement.md new file mode 100644 index 00000000000..8cd38faa2d3 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/tcptransportbindingelement.md @@ -0,0 +1,75 @@ +--- +title: "TcpTransportBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 33bbc1e5-44e4-4ee3-b7b5-801dc78956e4 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# TcpTransportBindingElement +TcpTransportBindingElement + +## 構文 + +``` +class TcpTransportBindingElement : ConnectionOrientedTransportBindingElement +{ + TcpConnectionPoolSettings ConnectionPoolSettings; + sint32 ListenBacklog; + boolean PortSharingEnabled; + boolean TeredoEnabled; +}; +``` + +## メソッド + TcpTransportBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + TcpTransportBindingElement クラスには、次のプロパティがあります。 + +### ConnectionPoolSettings + データ型 : TcpConnectionPoolSettings + + アクセスの種類 : 読み取り専用 + + 接続プールの設定。 + +### ListenBacklog + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 保留可能なキュー内の接続要求の最大数です。 + +### PortSharingEnabled + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + TCP ポート共有をこの接続で有効にするかどうかを指定するブール値です。 + +### TeredoEnabled + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + Teredo \(ファイアウォールの内側にあるクライアントをアドレス指定するためのテクノロジ\) を有効にするかどうかを指定するブール値です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/textmessageencodingbindingelement.md b/docs/framework/wcf/diagnostics/wmi/textmessageencodingbindingelement.md new file mode 100644 index 00000000000..a170a2396f6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/textmessageencodingbindingelement.md @@ -0,0 +1,75 @@ +--- +title: "TextMessageEncodingBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 885e2d7a-3436-4093-bc5f-0a404c62acdc +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# TextMessageEncodingBindingElement +TextMessageEncodingBindingElement + +## 構文 + +``` +class TextMessageEncodingBindingElement : MessageEncodingBindingElement +{ + string Encoding; + sint32 MaxReadPoolSize; + sint32 MaxWritePoolSize; + XmlDictionaryReaderQuotas ReaderQuotas; +}; +``` + +## メソッド + TextMessageEncodingBindingElement クラスで定義されているメソッドはありません。 + +## プロパティ + TextMessageEncodingBindingElement クラスには、次のプロパティがあります。 + +### Encoding + データ型 : string + + アクセスの種類 : 読み取り専用 + + バインディングでメッセージの送信に使用される文字セット エンコーディング。 + +### MaxReadPoolSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 新しいリーダーを割り当てずに同時に読み取り可能なメッセージの数を定義する整数です。 + +### MaxWritePoolSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 新しいライターを割り当てずに同時に送信可能なメッセージの数を定義する整数です。 + +### ReaderQuotas + データ型 : XmlDictionaryReaderQuotas + + アクセスの種類 : 読み取り専用 + + リーダのクォータ。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/tracelistener.md b/docs/framework/wcf/diagnostics/wmi/tracelistener.md new file mode 100644 index 00000000000..36c676d49ed --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/tracelistener.md @@ -0,0 +1,56 @@ +--- +title: "TraceListener | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c2c0b595-a384-4eb3-b94d-1b3be7cc7a5c +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# TraceListener +TraceListener + +## 構文 + +``` +class TraceListener +{ + string Name; + TraceListenerArgument TraceListenerArguments[]; +}; +``` + +## メソッド + TraceListener クラスで定義されているメソッドはありません。 + +## プロパティ + TraceListener クラスには、次のプロパティがあります。 + +### 名前 + データ型: string + + アクセスの種類 : 読み取り専用 + + トレース リスナーの名前。 + +### TraceListenerArguments + データ型 : TraceListenerArgument 配列 + + アクセスの種類 : 読み取り専用 + + トレース リスナーの引数。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/tracelistenerargument.md b/docs/framework/wcf/diagnostics/wmi/tracelistenerargument.md new file mode 100644 index 00000000000..3cf9c2d0d52 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/tracelistenerargument.md @@ -0,0 +1,56 @@ +--- +title: "TraceListenerArgument | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b6c84090-bf96-43f4-9fb0-1ce8fd9c8efe +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# TraceListenerArgument +TraceListenerArgument + +## 構文 + +``` +class TraceListenerArgument +{ + string Name; + string Value; +}; +``` + +## メソッド + TraceListenerArgument クラスで定義されるメソッドはありません。 + +## プロパティ + TraceListenerArgument クラスには、次のプロパティがあります。 + +### 名前 + データ型: string + + アクセスの種類 : 読み取り専用 + + 引数の名前。 + +### 値 + データ型: string + + アクセスの種類 : 読み取り専用 + + 引数の値です。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|Namespace|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/transactedbatchingbehavior.md b/docs/framework/wcf/diagnostics/wmi/transactedbatchingbehavior.md new file mode 100644 index 00000000000..ee0a89ccc3c --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/transactedbatchingbehavior.md @@ -0,0 +1,51 @@ +--- +title: "TransactedBatchingBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2d03e6ae-f06c-4ada-b279-e01838b2ecdc +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# TransactedBatchingBehavior +TransactedBatchingBehavior + +## 構文 + +``` +class TransactedBatchingBehavior : Behavior +{ + sint32 MaxBatchSize; +}; +``` + +## メソッド + TransactedBatchingBehavior クラスは、メソッドを一切定義しません。 + +## プロパティ + TransactedBatchingBehavior クラスには、次のプロパティがあります。 + +### MaxBatchSize + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + トランザクション バッチの最大バッチ サイズ。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/transactionflowattribute.md b/docs/framework/wcf/diagnostics/wmi/transactionflowattribute.md new file mode 100644 index 00000000000..3987be25f7f --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/transactionflowattribute.md @@ -0,0 +1,51 @@ +--- +title: "TransactionFlowAttribute | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0a9c8674-29f7-4f14-aa1f-dc2644ca57e4 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# TransactionFlowAttribute +TransactionFlowAttribute + +## 構文 + +``` +class TransactionFlowAttribute : Behavior +{ + string TransactionFlowOption; +}; +``` + +## メソッド + TransactionFlowAttribute クラスは、メソッドを一切定義しません。 + +## プロパティ + TransactionFlowAttribute クラスには、次のプロパティがあります。 + +### TransactionFlowOption + データ型 : string + + アクセスの種類 : 読み取り専用 + + トランザクションがフローするかどうかを示します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/transactionflowbindingelement.md b/docs/framework/wcf/diagnostics/wmi/transactionflowbindingelement.md new file mode 100644 index 00000000000..d9bce9101d6 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/transactionflowbindingelement.md @@ -0,0 +1,67 @@ +--- +title: "TransactionFlowBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0a9656fe-2400-45ca-ad79-92715c8cf190 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# TransactionFlowBindingElement +TransactionFlowBindingElement + +## 構文 + +``` +class TransactionFlowBindingElement : BindingElement +{ + string IssuedTokens; + string TransactionProtocol; + boolean Transactions; +}; +``` + +## メソッド + TransactionFlowBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + TransactionFlowBindingElement クラスには、次のプロパティがあります。 + +### IssuedTokens + データ型 : string + + アクセスの種類 : 読み取り専用 + + 発行されるセキュリティ トークン ヘッダー \(WS\-Trust からの IssuedTokens\) の要件を指定します。 + +### TransactionProtocol + データ型 : string + + アクセスの種類 : 読み取り専用 + + トランザクションをフローさせるためにサービスによって使用されるトランザクション プロトコルです。 + +### Transactions + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + 受信トランザクションをサポートするかどうかを示します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/transportbindingelement.md b/docs/framework/wcf/diagnostics/wmi/transportbindingelement.md new file mode 100644 index 00000000000..b6605f2c808 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/transportbindingelement.md @@ -0,0 +1,75 @@ +--- +title: "TransportBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 54ecfbee-53c0-410c-a7fa-a98f2e40c545 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# TransportBindingElement +TransportBindingElement + +## 構文 + +``` +class TransportBindingElement : BindingElement +{ + boolean ManualAddressing; + sint64 MaxBufferPoolSize; + sint64 MaxReceivedMessageSize; + string Scheme; +}; +``` + +## メソッド + TransportBindingElement クラスは、メソッドを一切定義しません。 + +## プロパティ + TransportBindingElement クラスには、次のプロパティがあります。 + +### ManualAddressing + データ型 : boolean + + アクセスの種類 : 読み取り専用 + + メッセージのアドレス指定をユーザーが制御するかどうかを指定するブール値。 + +### MaxBufferPoolSize + データ型 : sint64 + + アクセスの種類 : 読み取り専用 + + バインディングに使用するバッファー プールの最大サイズ。 + +### MaxReceivedMessageSize + データ型 : sint64 + + アクセスの種類 : 読み取り専用 + + このバインディングで処理されるメッセージの最大サイズ。 + +### Scheme + データ型 : string + + アクセスの種類 : 読み取り専用 + + トランスポートの URI スキーム。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/transportsecuritybindingelement.md b/docs/framework/wcf/diagnostics/wmi/transportsecuritybindingelement.md new file mode 100644 index 00000000000..819ecc00ade --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/transportsecuritybindingelement.md @@ -0,0 +1,40 @@ +--- +title: "TransportSecurityBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 31b8cd3b-3be5-4b6c-93f0-69d7aaf791d0 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# TransportSecurityBindingElement +TransportSecurityBindingElement + +## 構文 + +``` +class TransportSecurityBindingElement : SecurityBindingElement +{ +}; +``` + +## メソッド + TransportSecurityBindingElement クラスは、SecurityBindingElement を継承しますが、追加のメソッドやプロパティを定義しません。 + +## 要件 + +|MOF|Servicemodel.mof で定義| +|---------|--------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/usemanagedpresentationbindingelement.md b/docs/framework/wcf/diagnostics/wmi/usemanagedpresentationbindingelement.md new file mode 100644 index 00000000000..7610a62e123 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/usemanagedpresentationbindingelement.md @@ -0,0 +1,40 @@ +--- +title: "UseManagedPresentationBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 013f3628-a08f-4db9-b07f-77f889e41db7 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# UseManagedPresentationBindingElement +UseManagedPresentationBindingElement + +## 構文 + +``` +class UseManagedPresentationBindingElement : BindingElement +{ +}; +``` + +## メソッド + UseManagedPresentationBindingElement クラスは、BindingElement を継承しますが、追加のメソッドやプロパティを定義しません。 + +## 要件 + +|MOF|Servicemodel.mof で定義| +|---------|--------------------------| +|Namespace|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/windowsstreamsecuritybindingelement.md b/docs/framework/wcf/diagnostics/wmi/windowsstreamsecuritybindingelement.md new file mode 100644 index 00000000000..afb571f04af --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/windowsstreamsecuritybindingelement.md @@ -0,0 +1,51 @@ +--- +title: "WindowsStreamSecurityBindingElement | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4b0508c5-669c-4fe3-9225-8a10f8ee3be4 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# WindowsStreamSecurityBindingElement +WindowsStreamSecurityBindingElement + +## 構文 + +``` +class WindowsStreamSecurityBindingElement : BindingElement +{ + string ProtectionLevel; +}; +``` + +## メソッド + WindowsStreamSecurityBindingElement クラスで定義されているメソッドはありません。 + +## プロパティ + WindowsStreamSecurityBindingElement クラスには、次のプロパティがあります。 + +### ProtectionLevel + データ型 : string + + アクセスの種類 : 読み取り専用 + + TCP ストリームの保護レベル。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み| +|---------|-----------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/wmi-class-reference.md b/docs/framework/wcf/diagnostics/wmi/wmi-class-reference.md new file mode 100644 index 00000000000..52ef752acea --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/wmi-class-reference.md @@ -0,0 +1,172 @@ +--- +title: "WMI クラスの参照 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b95a51f5-8251-4619-ae05-7de88cb90f9a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WMI クラスの参照 +このセクションでは、[!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] WMI プロバイダーが公開しているすべての WMI クラスを示します。 + +## WMI インスタンスへのアクセス + WMI オブジェクト リファレンスに記載されているクラスはすべて、インスタンスを直接生成することはできません。ただし Service、AppDomain、Contract、ServiceAppDomain、ServiceToEndpointAssociation、Endpoint の各クラスを除きます。 他のインスタンスには、これらのトップ レベル クラスのプロパティからアクセスできます。 たとえば TransportBindingElement のインスタンスには、Endpoint のインスタンスから、Binding、BindingElements の順にたどってアクセスできます。 + +## このセクションの内容 + [ActivityTransfer](../../../../../docs/framework/wcf/diagnostics/wmi/activitytransfer.md) + + [AppDomainInfo](../../../../../docs/framework/wcf/diagnostics/wmi/appdomaininfo.md) + + [AspNetCompatibilityRequirementsAttribute](../../../../../docs/framework/wcf/diagnostics/wmi/aspnetcompatibilityrequirementsattribute.md) + + [AsymmetricSecurityBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/asymmetricsecuritybindingelement.md) + + 「動作クラス」 + + [BinaryMessageEncodingBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/binarymessageencodingbindingelement.md) + + [バインド](../../../../../docs/framework/wcf/diagnostics/wmi/binding.md) + + [BindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/bindingelement.md) + + [CallbackBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/callbackbehavior.md) + + [チャネル クラス](../../../../../docs/framework/wcf/diagnostics/wmi/channel-class.md) + + [ChannelPoolSettings](../../../../../docs/framework/wcf/diagnostics/wmi/channelpoolsettings.md) + + [ClientCredentials](../../../../../docs/framework/wcf/diagnostics/wmi/clientcredentials.md) + + [ClientViaBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/clientviabehavior.md) + + [CompositeDuplexBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/compositeduplexbindingelement.md) + + [ConnectionOrientedTransportBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/connectionorientedtransportbindingelement.md) + + [コントラクト](../../../../../docs/framework/wcf/diagnostics/wmi/contract.md) + + [CustomBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/custombindingelement.md) + + [DeliveryRequirementsAttribute](../../../../../docs/framework/wcf/diagnostics/wmi/deliveryrequirementsattribute.md) + + [エンドポイント](../../../../../docs/framework/wcf/diagnostics/wmi/endpoint.md) + + [HttpsTransportBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/httpstransportbindingelement.md) + + [HttpTransportBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/httptransportbindingelement.md) + + [LocalServiceSecuritySettings](../../../../../docs/framework/wcf/diagnostics/wmi/localservicesecuritysettings.md) + + [MatchAllEndpointBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/matchallendpointbehavior.md) + + [MessageEncodingBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/messageencodingbindingelement.md) + + [MsmqBindingElementBase](../../../../../docs/framework/wcf/diagnostics/wmi/msmqbindingelementbase.md) + + [MsmqIntegrationBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/msmqintegrationbindingelement.md) + + [MsmqTransportBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/msmqtransportbindingelement.md) + + [MtomMessageEncodingBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/mtommessageencodingbindingelement.md) + + [MustUnderstandBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/mustunderstandbehavior.md) + + [NamedPipeConnectionPoolSettings](../../../../../docs/framework/wcf/diagnostics/wmi/namedpipeconnectionpoolsettings.md) + + [NamedPipeTransportBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/namedpipetransportbindingelement.md) + + [OneWayBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/onewaybindingelement.md) + + 「操作クラス」 + + [OperationBehaviorAttribute](../../../../../docs/framework/wcf/diagnostics/wmi/operationbehaviorattribute.md) + + [PeerCustomResolverBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/peercustomresolverbindingelement.md) + + [PeerResolverBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/peerresolverbindingelement.md) + + [PeerSecuritySettings](../../../../../docs/framework/wcf/diagnostics/wmi/peersecuritysettings.md) + + [PeerTransportBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/peertransportbindingelement.md) + + [PeerTransportSecuritySettings](../../../../../docs/framework/wcf/diagnostics/wmi/peertransportsecuritysettings.md) + + [PnrpPeerResolverBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/pnrppeerresolverbindingelement.md) + + [PrivacyNoticeBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/privacynoticebindingelement.md) + + [ReliableSessionBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/reliablesessionbindingelement.md) + + [SecurityBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/securitybindingelement.md) + + [サービス](../../../../../docs/framework/wcf/diagnostics/wmi/service.md) + + [ServiceAppDomain](../../../../../docs/framework/wcf/diagnostics/wmi/serviceappdomain.md) + + [ServiceAuthorizationBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/serviceauthorizationbehavior.md) + + [ServiceBehaviorAttribute](../../../../../docs/framework/wcf/diagnostics/wmi/servicebehaviorattribute.md) + + [ServiceCredentials](../../../../../docs/framework/wcf/diagnostics/wmi/servicecredentials.md) + + [ServiceDebugBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/servicedebugbehavior.md) + + [ServiceMetadataBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/servicemetadatabehavior.md) + + [ServiceSecurityAuditBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/servicesecurityauditbehavior.md) + + [ServiceThrottlingBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/servicethrottlingbehavior.md) + + [ServiceTimeoutsBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/servicetimeoutsbehavior.md) + + [ServiceToEndpointAssociation](../../../../../docs/framework/wcf/diagnostics/wmi/servicetoendpointassociation.md) + + [SslStreamSecurityBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/sslstreamsecuritybindingelement.md) + + [SymmetricSecurityBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/symmetricsecuritybindingelement.md) + + [SynchronousReceiveBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/synchronousreceivebehavior.md) + + [TcpConnectionPoolSettings](../../../../../docs/framework/wcf/diagnostics/wmi/tcpconnectionpoolsettings.md) + + [TcpTransportBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/tcptransportbindingelement.md) + + [TextMessageEncodingBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/textmessageencodingbindingelement.md) + + [TraceListener](../../../../../docs/framework/wcf/diagnostics/wmi/tracelistener.md) + + [TraceListenerArgument](../../../../../docs/framework/wcf/diagnostics/wmi/tracelistenerargument.md) + + [TransactedBatchingBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/transactedbatchingbehavior.md) + + [TransactionFlowAttribute](../../../../../docs/framework/wcf/diagnostics/wmi/transactionflowattribute.md) + + [TransactionFlowBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/transactionflowbindingelement.md) + + [TransportBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/transportbindingelement.md) + + [TransportSecurityBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/transportsecuritybindingelement.md) + + [UseManagedPresentationBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/usemanagedpresentationbindingelement.md) + + [WindowsStreamSecurityBindingElement](../../../../../docs/framework/wcf/diagnostics/wmi/windowsstreamsecuritybindingelement.md) + + [WSAT_TraceEvent](../../../../../docs/framework/wcf/diagnostics/wmi/wsat-traceevent.md) + + [WSAT_TraceProvider](../../../../../docs/framework/wcf/diagnostics/wmi/wsat-traceprovider.md) + + [WSAT_TraceRecord](../../../../../docs/framework/wcf/diagnostics/wmi/wsat-tracerecord.md) + + [XmlDictionaryReaderQuotas](../../../../../docs/framework/wcf/diagnostics/wmi/xmldictionaryreaderquotas.md) + + [XmlSerializerOperationBehavior](../../../../../docs/framework/wcf/diagnostics/wmi/xmlserializeroperationbehavior.md) \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/wsat-traceevent.md b/docs/framework/wcf/diagnostics/wmi/wsat-traceevent.md new file mode 100644 index 00000000000..881205a3399 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/wsat-traceevent.md @@ -0,0 +1,37 @@ +--- +title: "WSAT_TraceEvent | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 142aa03f-781c-4ca4-bc21-0e64b1ff9b6a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WSAT_TraceEvent +WSAT\_TraceEvent + +## 構文 + +``` +class WSAT_TraceEvent : WSAT_TraceProvider +{ +}; +``` + +## メソッド + WSAT\_TraceEvent クラスは WSAT\_TraceProvider を継承しますが、追加のメソッドやプロパティを定義しません。 + +## 要件 + +|MOF|Servicemodel.mof で定義| +|---------|--------------------------| +|Namespace|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/wsat-traceprovider.md b/docs/framework/wcf/diagnostics/wmi/wsat-traceprovider.md new file mode 100644 index 00000000000..2efd5eea791 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/wsat-traceprovider.md @@ -0,0 +1,37 @@ +--- +title: "WSAT_TraceProvider | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8eb89b45-78b8-407d-8858-f8a9d43d55cb +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WSAT_TraceProvider +WSAT\_TraceProvider + +## 構文 + +``` +class WSAT_TraceProvider : EventTrace +{ +}; +``` + +## メソッド + WSAT\_TraceProvider クラスは EventTrace を継承しますが、追加のメソッドやプロパティを定義しません。 + +## 要件 + +|MOF|Servicemodel.mof で定義| +|---------|--------------------------| +|Namespace|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/wsat-tracerecord.md b/docs/framework/wcf/diagnostics/wmi/wsat-tracerecord.md new file mode 100644 index 00000000000..f034c374846 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/wsat-tracerecord.md @@ -0,0 +1,61 @@ +--- +title: "WSAT_TraceRecord | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 99bc7f66-1335-40d8-aa68-e754d569dc0d +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# WSAT_TraceRecord +WSAT\_TraceRecord + +## 構文 + +``` +class WSAT_TraceRecord : WSAT_TraceEvent +{ + object ActivityID; + sint32 EventID; + string TraceRecord; +}; +``` + +## メソッド + WSAT\_TraceRecord クラスで定義されるメソッドはありません。 + +## プロパティ + WSAT\_TraceRecord クラスには、次のプロパティがあります。 + +### ActivityID + データ型: object +アクセスの種類 : 読み取り専用 + + トレース レコードのアクティビティ ID です。 + +### EventID + データ型 : sint32 +アクセスの種類 : 読み取り専用 + + トレース レコードのイベント ID です。 + +### TraceRecord + データ型: string +アクセスの種類 : 読み取り専用 + + トレース レコード + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/xmldictionaryreaderquotas.md b/docs/framework/wcf/diagnostics/wmi/xmldictionaryreaderquotas.md new file mode 100644 index 00000000000..2536fce932d --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/xmldictionaryreaderquotas.md @@ -0,0 +1,84 @@ +--- +title: "XmlDictionaryReaderQuotas | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9b4ca8b4-0a89-4758-97ab-528a8ce18f07 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# XmlDictionaryReaderQuotas +XmlDictionaryReaderQuotas + +## 構文 + +``` +class XmlDictionaryReaderQuotas +{ + sint32 MaxArrayLength; + sint32 MaxBytesPerRead; + sint32 MaxDepth; + sint32 MaxNameTableCharCount; + sint32 MaxStringContentLength; +}; +``` + +## メソッド + XmlDictionaryReaderQuotas クラスで定義されるメソッドはありません。 + +## プロパティ + XmlDictionaryReaderQuotas クラスには、次のプロパティがあります。 + +### MaxArrayLength + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 許される最大配列長。 + +### MaxBytesPerRead + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 1 回の読み取りで返すことができる最大バイト数。 + +### MaxDepth + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + 1 回の読み取りでの最大ネスト ノード深度。 + +### MaxNameTableCharCount + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + テーブル名の最大文字数。 + +### MaxStringContentLength + データ型 : sint32 + + アクセスの種類 : 読み取り専用 + + XML 要素のコンテンツで許可される最大文字数。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/diagnostics/wmi/xmlserializeroperationbehavior.md b/docs/framework/wcf/diagnostics/wmi/xmlserializeroperationbehavior.md new file mode 100644 index 00000000000..048e0932529 --- /dev/null +++ b/docs/framework/wcf/diagnostics/wmi/xmlserializeroperationbehavior.md @@ -0,0 +1,59 @@ +--- +title: "XmlSerializerOperationBehavior | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8911aa1b-e34b-4161-a3ae-7468d89a6861 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# XmlSerializerOperationBehavior +XmlSerializerOperationBehavior + +## 構文 + +``` +class XmlSerializerOperationBehavior : Behavior +{ + string Style; + string Use; +}; +``` + +## メソッド + XmlSerializerOperationBehavior クラスで定義されるメソッドはありません。 + +## プロパティ + XmlSerializerOperationBehavior クラスには、次のプロパティがあります。 + +### Style + データ型 : string + + アクセスの種類 : 読み取り専用 + + SOAP メッセージのスタイルを定義します。 + +### Use + データ型 : string + + アクセスの種類 : 読み取り専用 + + SOAP エンコード スタイルを指定します。 + +## 要件 + +|MOF|Servicemodel.mof にて宣言済み。| +|---------|------------------------------| +|名前空間|root\\ServiceModel で定義| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/endpoint-creation-overview.md b/docs/framework/wcf/endpoint-creation-overview.md new file mode 100644 index 00000000000..6702b92b509 --- /dev/null +++ b/docs/framework/wcf/endpoint-creation-overview.md @@ -0,0 +1,209 @@ +--- +title: "エンドポイントの作成の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "エンドポイント [WCF], 概要" +ms.assetid: f4dce0fb-6f54-47e6-8054-86d7f574b91c +caps.latest.revision: 40 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 40 +--- +# エンドポイントの作成の概要 +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスを使用して行われるすべての通信では、サービスの*エンドポイント*が使用されます。 エンドポイントは、クライアントが [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスによって提供される機能にアクセスできるようにします。 ここでは、エンドポイントの構造を説明し、構成やコード内にエンドポイントを定義する方法を概説します。 + +## エンドポイントの構造 + 各エンドポイントは、そのエンドポイントが存在する場所を示すアドレス、クライアントがエンドポイントと通信するための方法を指定するバインディング、および利用可能なメソッドを特定するコントラクトで構成されます。 + +- **アドレス**。 アドレスは、エンドポイントを一意に識別し、潜在的ユーザーにそのサービスの場所を示します。 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] オブジェクト モデルでは、 アドレスで表されます。このアドレスは、URI \(Uniform Resource Identifier\) とアドレス プロパティ \(ID、Web サービス記述言語 \(WSDL\) 要素、およびオプション ヘッダーのコレクションを含む\) を格納します。 オプション ヘッダーは、エンドポイントの識別または対話のために、より詳細なアドレス指定情報を提供します。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [エンドポイント アドレスの指定](../../../docs/framework/wcf/specifying-an-endpoint-address.md). + +- **バインディング**。 バインディングはエンドポイントとの通信方法を指定します。 バインディングでは、使用するトランスポート プロトコル \(TCP や HTTP\)、メッセージのエンコーディング方法 \(テキストやバイナリ\)、必要なセキュリティ要件 \(SSL \(Secure Sockets Layer\) や SOAP メッセージ セキュリティ\) など、そのエンドポイントがどのように通信を行うかを指定します。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [サービスとクライアントを構成するためのバインディングの使用](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md). + +- **サービス コントラクト**。 サービス コントラクトは、エンドポイントがクライアントに公開する機能を示します。 コントラクトは、クライアントが呼び出すことのできる操作、メッセージの形式、操作の呼び出しに必要な入力パラメーターやデータの型、クライアントに提供する処理または応答メッセージの種類を指定します。 基本的なメッセージ交換パターン \(MEP\) に対応する基本的なコントラクトの種類には、データグラム \(一方向\)、要求\/応答、二重 \(双方向\) の 3 つがあります。 サービス コントラクトは、データ コントラクトとメッセージ コントラクトを使用して、クライアントが特定のデータ型とメッセージ形式でアクセスするように要求することもできます。 サービス コントラクトの定義方法[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[サービス コントラクトの設計](../../../docs/framework/wcf/designing-service-contracts.md)」を参照してください。 クライアントでは、二重 MEP でサービスからメッセージを受信するために、コールバック コントラクトというサービス定義のコントラクトを実装することが必要な場合があります。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [双方向サービス](../../../docs/framework/wcf/feature-details/duplex-services.md). + + サービスのエンドポイントはコードを使用して強制的に指定するか、構成を介して宣言として指定できます。 エンドポイントが指定されていない場合、ランタイムは、サービスで実装されたサービス コントラクトごとに、1 つの既定のエンドポイントを各ベース アドレスに追加することで、既定のエンドポイントを提供します。 設置済みサービスのバインドおよびアドレスは一般的に、サービスの開発中に使用されるものとは異なるので、コード内でエンドポイントを定義することは通常、実用的ではありません。 一般に、サービス エンドポイントの定義にはコードではなく、構成を使用する方がより実用的です。 バインディング情報とアドレス情報をコードに含めないことで、変更時にアプリケーションの再コンパイルや再展開を行う必要がなくなります。 + +> [!NOTE] +> 偽装を行うサービス エンドポイントを追加する場合は、 メソッドまたは メソッドのいずれかを使用して、コントラクトを新しい オブジェクトに適切に読み込む必要があります。 + +## コードでのエンドポイントの定義 + 次の例は、コードにエンドポイントを指定する方法を示しています。 + +- 誰かの名前を受け取り、"Hello \<名前\>\!" というエコーで応答する `IEcho` タイプのサービス コントラクトを定義します。 + +- `IEcho` コントラクトで定義された型の `Echo` サービスを実装します。 + +- サービスのエンドポイント アドレスとして http:\/\/localhost:8000\/Echo を指定します。 + +- バインディングを使用して `Echo` サービスを構成します。 + +```csharp +Namespace Echo +{ + // Define the contract for the IEcho service + [ServiceContract] + public interface IEcho + { + [OperationContract] + String Hello(string name) + } + + // Create an Echo service that implements IEcho contract + class Echo : IEcho + { + public string Hello(string name) + { + return "Hello" + name + "!"; + } + public static void Main () + { + //Specify the base address for Echo service. + Uri echoUri = new Uri("http://localhost:8000/"); + + //Create a ServiceHost for the Echo service. + ServiceHost serviceHost = new ServiceHost(typeof(Echo),echoUri); + + // Use a predefined WSHttpBinding to configure the service. + WSHttpBinding binding = new WSHttpBinding(); + + // Add the endpoint for this service to the service host. + serviceHost.AddServiceEndpoint( + typeof(IEcho), + binding, + echoUri + ); + + // Open the service host to run it. + serviceHost.Open(); + } + } +} +``` + +```vb +' Define the contract for the IEcho service + _ + Public Interface IEcho + _ + Function Hello(ByVal name As String) As String + End Interface + +' Create an Echo service that implements IEcho contract + Public Class Echo + Implements IEcho + Public Function Hello(ByVal name As String) As String _ + Implements ICalculator.Hello + Dim result As String = "Hello" + name + "!" + Return result + End Function + +' Specify the base address for Echo service. +Dim echoUri As Uri = New Uri("http://localhost:8000/") + +' Create a ServiceHost for the Echo service. +Dim svcHost As ServiceHost = New ServiceHost(GetType(HelloWorld), echoUri) + +' Use a predefined WSHttpBinding to configure the service. +Dim binding As New WSHttpBinding() + +' Add the endpoint for this service to the service host. +serviceHost.AddServiceEndpoint(GetType(IEcho), binding, echoUri) + +' Open the service host to run it. +serviceHost.Open() +``` + +> [!NOTE] +> サービス ホストはベース アドレスを使用して作成されます。また、残りのアドレス \(ベース アドレスの相対アドレス\) はエンドポイントの一部として指定されます。 このようにアドレスを分割することで、ホストのサービスで複数のエンドポイントを簡単に定義できるようになります。 + +> [!NOTE] +> メソッドの後で、サービス アプリケーションの の各プロパティを変更しないでください。 このメソッドの後で変更すると、 および プロパティや `AddServiceEndpoint` メソッドなどの一部のメンバーは例外をスローします。 変更を許可するメンバーもありますが、結果は未定義の状態になります。 +> +> 同様に、クライアントで、 呼び出しの後で、 値を変更しないでください。 この呼び出しの後で変更すると、 プロパティは例外をスローします。 その他のクライアント記述値は、エラーを発生させずに変更できますが、結果は未定義の状態になります。 +> +> サービスとクライアントのどちらの場合も、 の呼び出しの前に記述を変更することをお勧めします。 + +## 構成でのエンドポイントの定義 + アプリケーションの作成では、各種決定事項をアプリケーションを展開する管理者に任せる場合がよくあります。 たとえば、どのサービス アドレス \(URI\) を使用するかなどの情報は、前もって知るすべがありません。 アドレスをハードコーディングする代わりに、サービスの作成後に管理者が指定する方が便利です。 構成を活用することで、この柔軟性が得られます。 詳細については、「[サービスの構成](../../../docs/framework/wcf/configuring-services.md)」を参照してください。 + +> [!NOTE] +> 構成ファイルをすばやく作成するには、`/config:`*filename*`[,`*filename*`]` スイッチを指定して [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用します。 + +## 既定のエンドポイントの使用 + エンドポイントがコードまたは構成で指定されていない場合、ランタイムは、サービスで実装されたサービス コントラクトごとに、1 つの既定のエンドポイントを各ベース アドレスに追加することで、既定のエンドポイントを提供します。 ベース アドレスはコードまたは構成で指定することができ、既定のエンドポイントは、 で呼び出されるときに追加されます。 次の例は上記のセクションの例と同じです。ただし、エンドポイントを指定せず、既定のエンドポイントを追加する点が異なります。 + +```csharp +Namespace Echo +{ + // Define the contract for the IEcho service + [ServiceContract] + Interface IEcho + { + [OperationContract] + String Hello(string name) + } + + // Create an Echo service that implements IEcho contract + Class Echo : IEcho + { + Public string Hello(string name) + { + return "Hello" + name + "!"; + } + static void Main () + { + //Specify the base address for Echo service. + Uri echoUri = new Uri("http://localhost:8000/"); + + //Create a ServiceHost for the Echo service. + ServiceHost serviceHost = new ServiceHost(typeof(Echo),echoUri); + + // Open the service host to run it. Default endpoints + // are added when the service is opened. + serviceHost.Open(); + } + } +} +``` + +```vb +' Define the contract for the IEcho service + _ + Public Interface IEcho + _ + Function Hello(ByVal name As String) As String + End Interface + +' Create an Echo service that implements IEcho contract + Public Class Echo + Implements IEcho + Public Function Hello(ByVal name As String) As String _ + Implements ICalculator.Hello + Dim result As String = "Hello" + name + "!" + Return result + End Function + +' Specify the base address for Echo service. +Dim echoUri As Uri = New Uri("http://localhost:8000/") + +' Open the service host to run it. Default endpoints +' are added when the service is opened. +serviceHost.Open() +``` + + エンドポイントを明示的に指定しない場合、 を呼び出す前に、 を呼び出すことによって、既定のエンドポイントを引き続き追加できます。 既定のエンドポイント[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[簡略化された構成](../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +## 参照 + [サービス コントラクトの実装](../../../docs/framework/wcf/implementing-service-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/endpoints.md b/docs/framework/wcf/endpoints.md new file mode 100644 index 00000000000..c2f4f9bff46 --- /dev/null +++ b/docs/framework/wcf/endpoints.md @@ -0,0 +1,60 @@ +--- +title: "Windows Communication Foundation エンドポイント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "エンドポイント [WCF]" +ms.assetid: bd0c310f-dd9f-4081-9be2-3db5909850b6 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# Windows Communication Foundation エンドポイント +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスを使用して行われるすべての通信では、サービスの*エンドポイント*が使用されます。 エンドポイントは、クライアントが [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスによって提供される機能にアクセスできるようにします。 + + エンドポイントの作成方法の概要については、「[エンドポイントの作成の概要](../../../docs/framework/wcf/endpoint-creation-overview.md)」を参照してください。 エンドポイントは次の要素から成ります。 + +- そのエンドポイントの場所を示すアドレス。 + +- クライアントがエンドポイントと通信する方法を指定するバインディング。 + +- 利用可能なメソッドを指定するためのコントラクト。 + + エンドポイントを構成する個々の要素を指定する方法については、以下を参照してください。 + +- [エンドポイント アドレスの指定](../../../docs/framework/wcf/specifying-an-endpoint-address.md) + +- [サービスとクライアントを構成するためのバインディングの使用](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) + +- [サービスの設計と実装](../../../docs/framework/wcf/designing-and-implementing-services.md) + +## このセクションの内容 + [エンドポイントの作成の概要](../../../docs/framework/wcf/endpoint-creation-overview.md) + エンドポイントの構造を説明し、構成やコード内にエンドポイントを定義する方法と、ランタイムによって提供される既定のエンドポイント、バインディング、および動作の使用方法を解説します。 + + [エンドポイント アドレスの指定](../../../docs/framework/wcf/specifying-an-endpoint-address.md) + エンドポイントを通して [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスと通信する方法を解説します。 + + [方法 : 構成にサービス エンドポイントを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md) + 構成でサービス エンドポイントを作成する方法を解説します。 + + [方法 : コード内にサービス エンドポイントを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-code.md) + コードでサービス エンドポイントを作成する方法を解説します。 + + [メタデータ エンドポイントを公開する](../../../docs/framework/wcf/publishing-metadata-endpoints.md) + 構成およびコードでメタデータ エンドポイントを公開することによりってメタデータを公開する方法を解説します。 + +## 関連項目 + + +## 関連項目 + [基本的なプログラミング ライフサイクル](../../../docs/framework/wcf/basic-programming-lifecycle.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/TOC.md b/docs/framework/wcf/extending/TOC.md new file mode 100644 index 00000000000..5b28699d21e --- /dev/null +++ b/docs/framework/wcf/extending/TOC.md @@ -0,0 +1,64 @@ +# [カスタム エンコーダー](custom-encoders.md) +# [方法 : システム指定のバインディングをカスタマイズする](how-to-customize-a-system-provided-binding.md) +# [方法 : カスタム クライアント ID 検証機能を作成する](how-to-create-a-custom-client-identity-verifier.md) +# [クライアント : チャネル ファクトリとチャネル](client-channel-factories-and-channels.md) +# [カスタム ストリームのアップグレード](custom-stream-upgrades.md) +# [方法 : カスタム WSDL をインポートする](how-to-import-custom-wsdl.md) +# [方法 : カスタム セキュリティ トークン プロバイダーを作成する](how-to-create-a-custom-security-token-provider.md) +# [カスタム資格情報と資格情報の検証](custom-credential-and-credential-validation.md) +# [カスタム暗号アルゴリズムの指定](specifying-a-custom-crypto-algorithm.md) +# [方法 : カスタム クレームを作成する](how-to-create-a-custom-claim.md) +# [認証のためのサービスの ID のオーバーライド](overriding-the-identity-of-a-service-for-authentication.md) +# [ディスパッチャーの拡張](extending-dispatchers.md) +# [方法 : カスタム WS-Metadata Exchange バインディングを構成する](how-to-configure-a-custom-ws-metadata-exchange-binding.md) +# [ユーザー定義バインディングの作成](creating-user-defined-bindings.md) +# [方法 : カスタム プリンシパル ID を作成する](how-to-create-a-custom-principal-identity.md) +# [WCF の拡張](extending-wcf.md) +# [カスタム メッセージ フォーマッタ](custom-message-formatters.md) +# [ServiceHostFactory を使用したホストの拡張](extending-hosting-using-servicehostfactory.md) +# [拡張可能オブジェクト](extensible-objects.md) +# [方法 : カスタム証明書検証を使用するサービスを作成する](how-to-create-a-service-that-employs-a-custom-certificate-validator.md) +# [方法 : クライアントのメッセージを検査または変更する](how-to-inspect-or-modify-messages-on-the-client.md) +# [方法 : X.509 証明書の秘密キーの暗号化プロバイダーを変更する](change-cryptographic-provider-x509-certificate-private-key.md) +# [方法 : パラメーターを検査または変更する](how-to-inspect-or-modify-parameters.md) +# [状態変更の理解](understanding-state-changes.md) +# [例外とエラーの処理](handling-exceptions-and-faults.md) +# [セキュリティの拡張](extending-security.md) +# [方法 : サービスのメッセージを検査および変更する](how-to-inspect-and-modify-messages-on-the-service.md) +# [方法 : カスタム ポリシー アサーションをエクスポートする](how-to-export-custom-policy-assertions.md) +# [エンコーダーとシリアライザーの拡張](extending-encoders-and-serializers.md) +# [ServiceHost とサービス モデル レイヤーの拡張](extending-servicehost-and-the-service-model-layer.md) +# [カスタム バインディングを介したメタデータの公開と取得](publishing-and-retrieving-metadata-over-a-custom-binding.md) +# [サービス チャネル レベルのプログラミング](service-channel-level-programming.md) +# [サービス : チャネル リスナーとチャネル](service-channel-listeners-and-channels.md) +# [メタデータ システムの拡張](extending-the-metadata-system.md) +# [データ コントラクト サロゲート](data-contract-surrogates.md) +# [カスタム トークン](custom-tokens.md) +# [方法 : ServiceContractGenerator の拡張を記述する](how-to-write-an-extension-for-the-servicecontractgenerator.md) +# [WCF 拡張に対するカスタム メタデータのインポート](importing-custom-metadata-for-a-wcf-extension.md) +# [バインディングとバインディング要素](bindings-and-binding-elements.md) +# [方法 : カスタム トークンを作成する](how-to-create-a-custom-token.md) +# [方法 : サービスで使用するカスタム承認マネージャーを作成する](how-to-create-a-custom-authorization-manager-for-a-service.md) +# [バインディングの拡張](extending-bindings.md) +# [方法 : カスタム WSDL をエクスポートする](how-to-export-custom-wsdl.md) +# [カスタム バインディング](custom-bindings.md) +# [WCF 拡張に対するカスタム メタデータのエクスポート](exporting-custom-metadata-for-a-wcf-extension.md) +# [カスタム承認](custom-authorization.md) +# [チャネル レイヤーの拡張](extending-the-channel-layer.md) +# [クライアントのチャネル レベルのプログラミング](client-channel-level-programming.md) +# [チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](walkthrough-creating-custom-client-and-service-credentials.md) +# [構成とメタデータのサポート](configuration-and-metadata-support.md) +# [方法: MEX 以外のバインディングを介してメタデータを取得する](how-to-retrieve-metadata-over-a-non-mex-binding.md) +# [方法 : カスタム ポリシー アサーションをインポートする](how-to-import-custom-policy-assertions.md) +# [方法 : 企業内のエンドポイントをロックダウンする](how-to-lock-down-endpoints-in-the-enterprise.md) +# [動作を使用したランタイムの構成と拡張](configuring-and-extending-the-runtime-with-behaviors.md) +# [クライアントの拡張](extending-clients.md) +# [WS-MetadataExchange のバインディング](ws-metadataexchange-bindings.md) +# [方法 : カスタム セキュリティ トークン認証システムを作成する](how-to-create-a-custom-security-token-authenticator.md) +# [メッセージ交換パターンの選択](choosing-a-message-exchange-pattern.md) +# [方法 : クレームを比較する](how-to-compare-claims.md) +# [方法 : 署名および暗号化に個別の X.509 証明書を使用する](how-to-use-separate-x-509-certificates-for-signing-and-encryption.md) +# [チャネル モデルの概要](channel-model-overview.md) +# [方法 : カスタム承認ポリシーを作成する](how-to-create-a-custom-authorization-policy.md) +# [チャネルの開発](developing-channels.md) +# [BindingElement の作成](creating-a-bindingelement.md) diff --git a/docs/framework/wcf/extending/bindings-and-binding-elements.md b/docs/framework/wcf/extending/bindings-and-binding-elements.md new file mode 100644 index 00000000000..fb1cb2f2351 --- /dev/null +++ b/docs/framework/wcf/extending/bindings-and-binding-elements.md @@ -0,0 +1,52 @@ +--- +title: "バインディングとバインディング要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "バインディング要素 [WCF]" +ms.assetid: 765ff77b-7682-4ea3-90eb-e4d751e37379 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# バインディングとバインディング要素 +バインディングは、*バインド要素*と呼ばれる特殊な構成要素のコレクションであり、クライアント エンドポイントまたはサービス エンドポイントが構築されるたびにサービス ランタイムによって評価されます。バインディング内のバインド要素の型と順序に基づいて、エンドポイントのチャネル スタック内のプロトコル チャネルとトランスポート チャネルが選択され、スタック順が決定されます。 + + また、バインディング \(特に、システム指定のバインディング\) は、通常、多数の構成プロパティを持ちますが、これらはカプセル化されたバインド要素の最も頻繁に変更されたプロパティを反映します。 + + バインディングには、トランスポート バインド要素が 1 つだけ含まれている必要があります。各トランスポート バインド要素は、1 つのメッセージ エンコード バインド要素をバインディングに追加することによってオーバーライドできる既定のメッセージ エンコード バインド要素です。トランスポート バインド要素とエンコーダー バインド要素に加えて、バインディングには任意の数のプロトコル バインド要素を含めることもできます。この要素により、サービスに必要な機能を実装し、エンドポイント間で SOAP メッセージを送信することができます。詳細については、「[サービスとクライアントを構成するためのバインディングの使用](../../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md)」を参照してください。 + +## バインディングとバインド要素の拡張 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、広範なシナリオをカバーするシステム指定のバインディングが用意されています \(詳細については、「[システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください\)。ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意されていないバインディングを作成し、使用することが必要になる場合もあります。次のシナリオでは、新しいバインディングを作成する必要があります。 + +- 新しいバインド要素 \(新しいトランスポート バインド要素、エンコード バインド要素、またはプロトコル バインド要素\) を使用する場合。そのバインド要素を含む新しいバインディングを作成する必要があります。たとえば、UDP トランスポートのためのカスタム `UdpTransportBindingElement` を追加した場合は、そのカスタム バインド要素を使用する新しいバインディングを作成する必要があります。 型を使用してこの動作を実行する方法については、「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください。 + +- パブリック プロパティでシステム指定のバインディングが公開されないように既存のバインド要素を構成する場合。たとえば、署名操作と暗号化操作の実行順序を変更するには、新しいバインディングを作成する必要があります。この動作を実行する方法については、「[方法 : システム指定のバインディングをカスタマイズする](../../../../docs/framework/wcf/extending/how-to-customize-a-system-provided-binding.md)」を参照してください。 + +- 特定の構成オプションだけを公開する、企業の標準バインディングを確立する場合。たとえば、社内用にセキュリティを無効にできない のバリエーションを作成するには、 のように動作し、セキュリティが常に有効になる新しいバインディングを作成します。詳細については、「[ユーザー定義バインディングの作成](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md)」を参照してください。 + +- 特定のカスタム バインド要素を状況に応じて構成または使用するようにメタデータをカスタマイズする場合。バインディングとバインド要素に対するメタデータのサポートの詳細については、「[構成とメタデータのサポート](../../../../docs/framework/wcf/extending/configuration-and-metadata-support.md)」を参照してください。 + +- + +## チャネル、バインディング、およびバインド要素 + バインディングとバインド要素は、属性と動作を含むアプリケーション プログラミング モデルと、ファクトリとリスナー、メッセージ エンコーダー、およびトランスポートとプロトコルの実装を含むチャネル モデルを結び付けます。通常、バインド要素とバインディングは、アプリケーション層で使用されるチャネルを有効にするために実装されます。 + + チャネル層は、サービス層との間でメッセージを送受信し、そのメッセージをエンドポイント間で転送します。クライアントでは、チャネル層はネットワーク エンドポイントへのチャネルを作成するチャネル ファクトリのスタックです。サービスでは、チャネル層はネットワーク エンドポイントで受信されたチャネルを受け入れるチャネル リスナーのスタックです。 + + 一般的なチャネルの種類としては、プロトコル チャネルとトランスポート チャネルの 2 つがあります。トランスポート チャネルの役割は、ネットワーク エンドポイント間でメッセージを実際に転送することです。トランスポート チャネルは、既定のメッセージ エンコーダーを持ち、メッセージ エンコーダー バインド要素を通じて供給される代替のメッセージ エンコーダーを使用できる必要があります。メッセージ エンコーダーには、 をネットワーク上の表現に \(またはその逆方向に\) 変換する役割があります。プロトコル チャネルの役割は、SOAP レベルのプロトコル \(たとえば、WS\-Security や WS\-ReliableMessaging\) を実装することです。 + + トランスポート チャネルとプロトコル チャネルの主要要件は、必要なチャネル インターフェイスを実装することです。正常に機能するチャネル層を作成するには、ファクトリとリスナーを関連付ける必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でチャネルの実装を使用するには、チャネルごとに から派生したバインド要素が関連付けられている必要があります。また、 から派生する関連バインディング拡張要素を構成ファイルに含める必要もあります。 + + 前述のように、メッセージ エンコーダー チャネル、プロトコル チャネル、およびトランスポート チャネルの実装に使用されるバインド要素をスタックすることによりチャネル スタックを形成できます。バインディングは、これらを順序付きセットに並べ替えるための機構です。バインディングとバインド要素は、アプリケーション プログラミング モデルをチャネル モデルに結び付けます。チャネルの実装をコードから直接使用することもできますが、エンコーダー、トランスポート、およびプロトコルがバインド要素として実装されていない限り、サービス層プログラミング モデルから使用できません。 + + チャネルとそのバインド要素の開発の詳細については、「[チャネル レイヤーの拡張](../../../../docs/framework/wcf/extending/extending-the-channel-layer.md)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/change-cryptographic-provider-x509-certificate-private-key.md b/docs/framework/wcf/extending/change-cryptographic-provider-x509-certificate-private-key.md new file mode 100644 index 00000000000..ad9faf45436 --- /dev/null +++ b/docs/framework/wcf/extending/change-cryptographic-provider-x509-certificate-private-key.md @@ -0,0 +1,94 @@ +--- +title: "方法 : X.509 証明書の秘密キーの暗号化プロバイダーを変更する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "暗号化プロバイダー [WCF]" + - "暗号化プロバイダー [WCF], 変更" +ms.assetid: b4254406-272e-4774-bd61-27e39bbb6c12 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 方法 : X.509 証明書の秘密キーの暗号化プロバイダーを変更する +ここでは、X.509 証明書の秘密キーを提供するために使用する暗号化プロバイダーを変更する方法、およびそのプロバイダーを [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のセキュリティ フレームワークに統合する方法を説明します。 証明書の使用に関する詳細については、「[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ フレームワークには、「[方法 : カスタム トークンを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-token.md)」で説明されているように、新しい種類のセキュリティ トークンを導入する方法が用意されています。 また、カスタム トークンを使用して既存のシステム指定のトークンを置き換えることも可能です。 + + このトピックでは、システム指定の X.509 セキュリティ トークンが、証明書の秘密キーに別の実装を提供するカスタムの X.509 トークンによって置き換えられます。 これは、実際の秘密キーが、既定の Windows 暗号化プロバイダーとは異なる暗号化プロバイダーから提供されるシナリオで役立ちます。 別の暗号化プロバイダーの例として、ハードウェア セキュリティ モジュールがあります。このモジュールでは、すべての秘密キー関連の暗号操作を実行し、メモリに秘密キーを格納しないので、システムのセキュリティが向上します。 + + 次の例は、デモンストレーションのためだけに作成されています。 この例では、既定の Windows 暗号化プロバイダーを置き換えていませんが、Windows 暗号化プロバイダーをどこで統合できるかを示します。 + +## 手順 + セキュリティ キーが関連付けられているセキュリティ トークンごとに、セキュリティ トークンのインスタンスからキーのコレクションを返す プロパティを実装する必要があります。 トークンが X.509 セキュリティ トークンの場合、コレクションには、証明書に関連付けられた公開キーと秘密キーの両方を表す クラスのインスタンスが 1 つ追加されます。 証明書のキーの提供に使用する既定の暗号化プロバイダーを置き換えるには、このクラスの新しい実装を作成します。 + +#### カスタムの X.509 非対称キーを作成するには + +1. クラスから派生する新しいクラスを定義します。 + +2. 読み取り専用プロパティをオーバーライドします。 このプロパティは、証明書の公開キーと秘密キーのペアの実際のキー サイズを返します。 + +3. メソッドをオーバーライドします。 このメソッドは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ フレームワークによって呼び出され、対称キーを証明書の秘密キーで復号化します \(このキーは、以前に証明書の公開キーで暗号化されています\)。 + +4. メソッドをオーバーライドします。 このメソッドは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ フレームワークによって呼び出され、このメソッドに渡されるパラメーターに応じて、証明書の秘密キーまたは公開キーの暗号化プロバイダーを表す クラスのインスタンスを取得します。 + +5. 省略可能です。 メソッドをオーバーライドします。 クラスの別の実装が必要な場合は、このメソッドをオーバーライドします。 + +6. メソッドをオーバーライドします。 このメソッドは、証明書の秘密キーに関連付けられた クラスのインスタンスを返します。 + +7. メソッドをオーバーライドします。 このメソッドを使用して、特定の暗号アルゴリズムがセキュリティ キー実装によってサポートされているかどうかを示します。 + + [!code-csharp[c_CustomX509Token#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customx509token/cs/source.cs#1)] + [!code-vb[c_CustomX509Token#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customx509token/vb/source.vb#1)] + + 次の手順は、システム指定の X.509 セキュリティ トークンを置き換えるために、前の手順で作成したカスタムの X.509 非対称セキュリティ キーの実装を [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ フレームワークに統合する方法を示しています。 + +#### システム指定の X.509 セキュリティ トークンをカスタムの X.509 非対称セキュリティ キー トークンで置き換えるには + +1. 次の例に示すように、システム指定のセキュリティ キーではなく、カスタムの X.509 非対称セキュリティ キーを返すカスタムの X.509 非対称セキュリティ トークンを作成します。 カスタム セキュリティ トークンの詳細については、「[方法 : カスタム トークンを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-token.md)」を参照してください。 + + [!code-csharp[c_CustomX509Token#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customx509token/cs/source.cs#2)] + [!code-vb[c_CustomX509Token#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customx509token/vb/source.vb#2)] + +2. 次の例に示すように、カスタムの X.509 セキュリティ トークンを返すカスタムのセキュリティ トークン プロバイダーを作成します。 カスタム セキュリティ トークン プロバイダーの詳細については、「[方法 : カスタム セキュリティ トークン プロバイダーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md)」を参照してください。 + + [!code-csharp[c_CustomX509Token#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customx509token/cs/source.cs#3)] + [!code-vb[c_CustomX509Token#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customx509token/vb/source.vb#3)] + +3. イニシエーター側でカスタム セキュリティ キーを使用する必要がある場合、次の例に示すように、カスタムのクライアント セキュリティ トークン マネージャーとカスタムのクライアント資格情報クラスを作成します。 カスタムのクライアント資格情報とクライアント セキュリティ トークン マネージャーの詳細については、「[チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md)」を参照してください。 + + [!code-csharp[c_CustomX509Token#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customx509token/cs/source.cs#4)] + [!code-vb[c_CustomX509Token#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customx509token/vb/source.vb#4)] + + [!code-csharp[c_CustomX509Token#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customx509token/cs/source.cs#6)] + [!code-vb[c_CustomX509Token#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customx509token/vb/source.vb#6)] + +4. 受信側でカスタム セキュリティ キーを使用する必要がある場合、次の例に示すように、カスタムのサービス セキュリティ トークン マネージャーとカスタムのサービス資格情報クラスを作成します。 カスタムのサービス資格情報とサービス セキュリティ トークン マネージャーの詳細については、「[チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md)」を参照してください。 + + [!code-csharp[c_CustomX509Token#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customx509token/cs/source.cs#5)] + [!code-vb[c_CustomX509Token#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customx509token/vb/source.vb#5)] + + [!code-csharp[c_CustomX509Token#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customx509token/cs/source.cs#7)] + [!code-vb[c_CustomX509Token#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customx509token/vb/source.vb#7)] + +## 参照 + + + + + + + [チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md) + [方法 : カスタム セキュリティ トークン認証システムを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md) + [方法 : カスタム セキュリティ トークン プロバイダーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md) + [方法 : カスタム トークンを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-token.md) + [Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f) \ No newline at end of file diff --git a/docs/framework/wcf/extending/channel-model-overview.md b/docs/framework/wcf/extending/channel-model-overview.md new file mode 100644 index 00000000000..35e3d0a570f --- /dev/null +++ b/docs/framework/wcf/extending/channel-model-overview.md @@ -0,0 +1,87 @@ +--- +title: "チャネル モデルの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "チャネル モデル [WCF]" +ms.assetid: 07a81e11-3911-4632-90d2-cca99825b5bd +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# チャネル モデルの概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] チャネル スタックは、メッセージを処理する 1 つ以上のチャネルから成る階層構造の通信スタックです。スタックの一番下には、基になるトランスポート \(TCP、HTTP、SMTP、およびその他の種類のトランスポート\) にチャネル スタックを適応させるためのトランスポート チャネルがあります。チャネルによって、メッセージを送受信するための低レベルのプログラミング モデルが提供されます。このプログラミング モデルは、複数のインターフェイスと、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネル モデルとして総称されるその他のモデルを利用します。このトピックでは、チャネル形状、基本的なチャネル リスナーの構築 \(サービス側\)、およびチャネル ファクトリ \(クライアント側\) について説明します。 + +## チャネル スタック + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントでは、チャネル スタックと呼ばれる通信スタックを使用して通信が行われます。次の図では、チャネル スタックと、TCP\/IP などの他の通信スタックを比較します。 + + ![チャネル モデル](../../../../docs/framework/wcf/extending/media/wcfc-channelstackhighlevelc.gif "wcfc\_ChannelStackHighLevelc") + + まず次のような類似点があります。いずれのスタックでも、スタックの各レイヤーにおいて、そのレイヤーより下の部分のアブストラクションと、直上のレイヤーだけに公開されるアブストラクションが提供されます。各レイヤーでは、直下のレイヤーのアブストラクションだけが使用されます。また、いずれのスタックでも、2 つのスタックが通信するときは、各レイヤーがもう一方のスタック内の対応するレイヤーと通信します。たとえば、IP レイヤーは IP レイヤーと、TCP レイヤーは TCP レイヤーと通信します。 + + 次に相違点です。TCP スタックは、物理ネットワークのアブストクラションを提供するように設計されていますが、チャネル スタックは、メッセージの配信方法、すなわちトランスポートのアブストラクションだけでなく、メッセージの内容や通信用のプロトコルなど、トランスポートとそれ以上の機能を含む他の機能のアブストラクションも提供するように設計されています。たとえば、信頼できるセッションのバインド要素は、チャネル スタックの一部ですが、トランスポートの下位でもトランスポート自体でもありません。このアブストラクションは、スタック内の最下位チャネルに、基になるトランスポート プロトコルをチャネル スタック アーキテクチャに適応させるように要求し、スタック内の上位チャネルを利用して、信頼性の保証やセキュリティなどの通信機能を提供することによって、実現されます。 + + メッセージは、通信スタックを通して、 オブジェクトとして転送されます。上の図に示されているように、最下位チャネルはトランスポート チャネルと呼ばれます。このチャネルは、他のパーティとメッセージの送受信を行うチャンネルです。これには、他のパーティとの通信で使用されるフォーマットへの オブジェクトの変換が含まれます。トランスポート チャネルには、それぞれが信頼できる配信保証などの通信機能を提供する任意の数のプロトコル チャネルを設定することができます。プロトコル チャネルは、 オブジェクトの形式で転送されるメッセージに対して機能します。通常プロトコル チャネルでは、メッセージの変換 \(ヘッダーの付加、本文の暗号化など\) や独自のプロトコル制御メッセージの送受信 \(確認応答の受信など\) が行われます。 + +## チャネル形状 + 各チャネルには、チャネル形状インターフェイスまたはチャネル形状と呼ばれる 1 つ以上のインターフェイスが実装されています。このようなチャネル形状によって、チャネルが実装し、チャネルのユーザーが呼び出す送受信や要求、応答などの通信指向のメソッドが提供されます。チャネル形状のベースには、 インターフェイスがあります。このインターフェイスでは、スタック内のチャネルで公開される機能にアクセスするための階層構造のメカニズムとして考案された `GetProperty`\ メソッドが提供されます。 を拡張する 5 つのチャネル形状は、次のとおりです。 + +- + +- + +- + +- + +- + + さらに、これらの形状には、それぞれ を拡張してセッションをサポートする同等の形状があります。これらは次のとおりです。 + +- + +- + +- + +- + +- + + チャネル形状は、既存のトランスポート プロトコルでサポートされている基本的なメッセージ交換パターンにならってパターン化されます。たとえば、一方向メッセージングは \/ の組み合わせに、要求\/応答は \/ の組み合わせに、双方向多重通信は \( の両方を拡張する\) に、それぞれ対応します。 + +## チャネル スタックを使用したプログラミング + 通常、チャネル スタックは、バインドによってチャネル スタックが作成されるファクトリ パターンを使用して作成されます。送信側では、バインドを使用して が作成されます。これにより、次々にチャネル スタックが作成され、スタック内の最上位チャネルへの参照が返されます。アプリケーションは、このチャネルを使用して、メッセージを送信できます。詳細については、「[クライアントのチャネル レベルのプログラミング](../../../../docs/framework/wcf/extending/client-channel-level-programming.md)」を参照してください。 + + 受信側では、バインドを使用して、入力メッセージを待ち受ける が作成されます。 では、チャネル スタックを作成し、最上位チャネルへのアプリケーション参照を渡すことによって、待ち受けているアプリケーションにメッセージが提供されます。アプリケーションは、このチャネルを使用して、入力メッセージを受信します。詳細については、「[サービス チャネル レベルのプログラミング](../../../../docs/framework/wcf/extending/service-channel-level-programming.md)」を参照してください。 + +## チャネル オブジェクト モデル + チャネル オブジェクト モデルは、チャネル、チャネル リスナー、およびチャネル ファクトリの実装に必要なインターフェイスのコア セットです。また、カスタム実装を支援するために基本クラスもいくつか提供されます。 + + チャネル リスナーは、受信メッセージを待ち受け、チャネル リスナーによって作成されたチャネル経由で上位レイヤーに受信メッセージを配信します。 + + チャネル ファクトリは、メッセージの送信用のチャネルを作成し、チャネル ファクトリが閉じられたときに、作成したすべてのチャネルを閉じます。 + + は、すべての通信オブジェクトが実装する基本ステート マシンを定義するコア インターフェイスです。 は、このコア インターフェイスの実装を提供し、他のチャネル クラスはインターフェイスを再実装せずに、これを派生させて利用できます。ただし、これは必須でありません。カスタム チャネルは、 を直接実装できますが、 を継承できません。図 3 のクラスは、いずれもチャネル モデルの一部と見なされません。これらは、チャネルを作成するカスタム チャネル実装側が利用できるヘルパーです。 + + ![チャネル モデル](../../../../docs/framework/wcf/extending/media/wcfc-wcfcchannelsigure3omumtreec.gif "wcfc\_WCFCChannelsigure3OMUMTreec") + + 以下のトピックでは、チャネル オブジェクト モデルと共に、カスタム チャネルの作成に役立つさまざまな開発分野について説明します。 + +|トピック|説明| +|----------|--------| +|[サービス : チャネル リスナーとチャネル](../../../../docs/framework/wcf/extending/service-channel-listeners-and-channels.md)|サービス アプリケーションで受信チャネルを待ち受けるチャネル リスナーについて説明します。| +|[クライアント : チャネル ファクトリとチャネル](../../../../docs/framework/wcf/extending/client-channel-factories-and-channels.md)|サービス アプリケーションに接続するチャネルを作成するチャネル ファクトリについて説明します。| +|[状態変更の理解](../../../../docs/framework/wcf/extending/understanding-state-changes.md)| インターフェイス モデルの状態がチャネルでどのように変化するかについて説明します。| +|[メッセージ交換パターンの選択](../../../../docs/framework/wcf/extending/choosing-a-message-exchange-pattern.md)|チャネルがサポートできる 6 つの基本メッセージ交換パターンについて説明します。| +|[例外とエラーの処理](../../../../docs/framework/wcf/extending/handling-exceptions-and-faults.md)|カスタム チャネルでエラーと例外を処理する方法について説明します。| +|[構成とメタデータのサポート](../../../../docs/framework/wcf/extending/configuration-and-metadata-support.md)|アプリケーション モデルからカスタム チャネルを使用できるようにする方法と、バインディングとバインド要素を使用してメタデータをエクスポートおよびインポートする方法について説明します。| \ No newline at end of file diff --git a/docs/framework/wcf/extending/choosing-a-message-exchange-pattern.md b/docs/framework/wcf/extending/choosing-a-message-exchange-pattern.md new file mode 100644 index 00000000000..a6c2a7ddecf --- /dev/null +++ b/docs/framework/wcf/extending/choosing-a-message-exchange-pattern.md @@ -0,0 +1,103 @@ +--- +title: "メッセージ交換パターンの選択 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0f502ca1-6a8e-4607-ba15-59198c0e6146 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# メッセージ交換パターンの選択 +カスタム トランスポートを記述する最初の手順として、どの*メッセージ交換パターン \(MEP\)* が、開発するチャネルに必要かを判断します。ここでは、使用できるオプションとさまざまな要件について説明します。これは、「[チャネルの開発](../../../../docs/framework/wcf/extending/developing-channels.md)」に記載されたチャネル開発タスクの一覧にある最初のタスクです。 + +## 6 つのメッセージ交換パターン + 次の 3 つの MEP から選択できます。 + +- データグラム \(\) + + データグラム MEP を使用している場合、クライアントは*ファイア アンド フォーゲット \(撃ち放し\)* の交換を使用してメッセージを送信します。このような交換では、配信の成否について帯域外での確認が必要になります。メッセージが移動中に失われて、サービスに到達しない可能性があります。クライアントで送信操作が正常に完了したとしても、リモート エンドポイントでメッセージが受信されたとは限りません。データグラムはメッセージングの基礎となるビルド ブロックであり、その上に信頼できるプロトコルや安全なプロトコルなどの独自のプロトコルを構築できます。クライアント データグラム チャネルには、 インターフェイスが実装され、サービス データグラム チャネルには インターフェイスが実装されます。 + +- 要求 \- 応答 \(\) + + この MEP では、メッセージが送信されて、応答が受信されます。パターンは、要求 \- 応答のペアで構成されます。要求 \- 応答呼び出しの例として、リモート プロシージャ コール \(RPC\) やブラウザー GET 要求などがあります。このパターンは、半二重とも呼ばれます。この MEP では、クライアントには が実装され、サービス チャネルには が実装されます。 + +- 二重 \(\) + + 二重 MEP では、クライアントにより任意の数のメッセージを送信して、任意の順序で受信できます。二重 MEP は、話される語の 1 つずつがメッセージである電話の会話に似ています。この MEP ではどちらの側も送信および受信できるので、クライアントおよびサービス チャネルによって実装されるインターフェイスは になります。 + + ![メッセージ交換パターンの選択](../../../../docs/framework/wcf/extending/media/wcfc-basicthreemepsc.gif "wcfc\_BasicThreeMEPsc") +3 つの基本的なメッセージ交換パターンです。上から順に、データグラム、要求 \- 応答、二重。 + + これらの MEP では、それぞれ*セッション*をサポートすることもできます。セッション \(および 型の の実装\) は、チャネルで送受信されるすべてのメッセージを相互に関連付けます。要求 \- 応答パターンはスタンドアロンの 2 メッセージ セッションで、要求と応答が相互に関連付けられています。一方、セッションをサポートする要求 \- 応答パターンは、そのチャネルのすべての要求 \- 応答ペアが互いに関連付けられることを意味しています。したがって、次のように合計 6 つの MEP から選択できます。 + +- データグラム + +- 要求 – 応答 + +- 双方向 + +- セッション対応データグラム + +- セッション対応要求 – 応答 + +- セッション対応二重 + +> [!NOTE] +> UDP トランスポートでは、サポートされている MEP はデータグラムだけです。これは、UDP がファイア アンド フォーゲット \(撃ち放し\) のプロトコルだからです。 + +## セッションとセッションの多いチャネル + ネットワークの世界には、接続指向プロトコル \(TCP など\) とコネクションレス プロトコル \(UDP など\) があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、接続に似た論理アブストラクションを意味する "セッション" という用語を使用します。セッションの多い WCF プロトコルは、接続指向ネットワーク プロトコルに似ており、セッションの少ない WCF プロトコルは、コネクションレス ネットワーク プロトコルに似ています。 + + チャネル オブジェクト モデルでは、各論理セッションは、セッションの多いチャネルの 1 つのインスタンスとしてマニフェストされます。したがって、クライアントによって作成され、サービスで受け入れられるすべての新しいセッションは、それぞれの側のセッションの多い新しいチャネルに対応します。セッションの少ないチャネルの構造 \(上\) と、セッションの多いチャネルの構造 \(下\) を次の図に示します。 + + ![メッセージ交換パターンの選択](../../../../docs/framework/wcf/extending/media/wcfc-sessionandsessionlesschannelsc.gif "wcfc\_SessionAndSessionlessChannelsc") + + クライアントがセッションの多い新しいチャネルを作成し、メッセージを送信します。サービス側では、チャネル リスナーがこのメッセージを受信し、メッセージが新しいセッションに属することを検出します。チャネル リスナーはセッションの多い新しいチャネルを作成し、\(チャネル リスナーで AcceptChannel を呼び出しているアプリケーションへの応答として\) アプリケーションに渡します。アプリケーションは、同じセッションの多いチャネルを介して、このメッセージと同じセッションで送信される後続のすべてのメッセージを受信します。 + + 別のクライアント \(または同じクライアント\) がセッションの多い新しいチャネルを作成し、メッセージを送信します。チャネル リスナーは、このメッセージが新しいセッションに属することを検出し、セッションの多い新しいチャネルを作成してプロセスが繰り返されます。 + + セッションを使用しない場合、チャネルとセッション間に相関関係はありません。したがって、チャネル リスナーが作成するチャネルは 1 つしかなく、このチャネルを介して、受信したすべてのメッセージをアプリケーションに配信します。メッセージの順序を維持するためのセッションが存在しないため、メッセージの順序もありません。前の図の上部は、セッションの少ないメッセージ交換を示しています。 + +## セッションの開始と終了 + セッションの多い新しいチャネルを作成することにより、クライアントでセッションが開始されます。新しいセッションで送信されたメッセージをサービスが受信すると、サービスでセッションが開始されます。同様に、セッションの多いチャネルを閉じるか中止すると、セッションが終了します。 + + セッションの多い双方向通信パターンで、メッセージの送信と受信の両方に使用する はこの例外です。一方の側がメッセージの送信を停止しても、メッセージの受信は続行する必要がある可能性があります。そのため、 を使用する場合には、これ以上メッセージを送信しないことを示すために出力セッションを閉じ、メッセージの受信は続行できるように、入力セッションは開いたまましておくことができる機構があります。 + + 通常、セッションは受信側ではなく送信側で閉じます。つまり、セッションの多い出力チャネルを閉じることで、セッションを完全に終了できます。セッションの多い出力チャネルを閉じると、対応するセッションの多い入力チャネルは、 を呼び出しているアプリケーションに対して null を返します。 + + ただし、 が null を返して、セッションが既に閉じていることを示していない場合は、セッションの多い入力チャネルを閉じないようにする必要があります。 が null を返していない場合に、セッションの多い入力チャネルを閉じると、例外がスローされることがあります。これは、チャネルを閉じている間に、予期しないメッセージを受信することがあるためです。送信側がセッションを終了する前に、受信側でセッションを終了する必要がある場合は、入力チャネルで を呼び出します。この呼び出しにより、セッションはその場で終了します。 + +## セッションの多いチャネルの作成 + セッションの多いチャネルを作成した場合、セッションを提供するためにチャネルで実行しなければならないことがいくつかあります。送信側では、チャネルで以下を行う必要があります。 + +- 新しいチャネルごとに、新しいセッションを作成し、新しいセッション ID \(一意の文字列\) に関連付けます。または、スタック内で、作成したチャネルの下にあるセッションの多いチャネルから新しいセッションを取得します。 + +- \(下のレイヤーからセッションを取得したのではなく\) チャネルでセッションを作成した場合は、このチャネルを使用して送信される各メッセージについて、メッセージをセッションに関連付ける必要があります。プロトコル チャネルの場合、通常は SOAP ヘッダーを追加することによってこの関連付けを行います。トランスポート チャネルの場合は、新しいトランスポート接続を作成するか、フレーミング プロトコルにセッション情報を追加します。 + +- このチャネルを使用して送信される各メッセージについて、前述の配信保証を提供する必要があります。下のレイヤーのチャネルを使用してセッションを提供している場合、そのチャネルでも配信保証を提供します。セッションを独自に提供する場合は、これらの保証をプロトコルの一部として実装する必要があります。通常、両方の側で WCF を想定したプロトコル チャネルを作成する場合、TCP トランスポート チャネルまたは信頼できるメッセージング チャネルが必要となり、セッションを提供するためにこれらのいずれかに依存します。 + +- チャネルで が呼び出されたときに、指定したタイムアウトまたは既定のタイムアウトを使用して、セッションを閉じるために必要な作業を実行します。これは、下のレイヤーのチャネルで を呼び出すか \(そのチャネルからセッションを取得しただけの場合\)、特殊な SOAP メッセージを送信するか、またはトランスポート接続を閉じるだけです。 + +- チャネルで が呼び出されたときに、I\/O を実行せずにセッションをその場で終了します。これは、何も実行しないことを意味する場合もあれば、ネットワーク接続または他の何らかのリソースの中止を伴う場合もあります。 + + 受信側では、チャネルで以下を行う必要があります。 + +- 各受信メッセージについて、チャネル リスナーは、そのメッセージが属しているセッションを検出する必要があります。メッセージがセッションの最初のメッセージである場合、チャネル リスナーは新しいチャネルを作成し、 の呼び出しからそのチャネルを返す必要があります。それ以外の場合は、チャネル リスナーはセッションに対応する既存のチャネルを検出し、そのチャネルを介してメッセージを配信する必要があります。 + +- 独自のチャネルで \(必要な配信保証と共に\) セッションを提供する場合、受信側はメッセージの順序付けや受信確認の送信など、いくつかのアクションを実行することが必要になる場合があります。 + +- チャネルで が呼び出されたときに、指定したタイムアウトまたは既定のタイムアウトを使用して、セッションを閉じるために必要な作業を実行します。この作業を実行すると、チャネルがタイムアウトになるのを待機している間にメッセージを受信した場合に、例外が発生することがあります。これは、メッセージを受信したときに、チャネルが終了状態になっているためです。この場合、例外がスローされることになります。 + +- チャネルで が呼び出されたときに、I\/O を実行せずにセッションをその場で終了します。このときも、何も実行しないことを意味する場合もあれば、ネットワーク接続または他のリソースの中止を伴う場合もあります。 + +## 参照 + [チャネル モデルの概要](../../../../docs/framework/wcf/extending/channel-model-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/client-channel-factories-and-channels.md b/docs/framework/wcf/extending/client-channel-factories-and-channels.md new file mode 100644 index 00000000000..397915c8c39 --- /dev/null +++ b/docs/framework/wcf/extending/client-channel-factories-and-channels.md @@ -0,0 +1,88 @@ +--- +title: "クライアント : チャネル ファクトリとチャネル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ef245191-fdab-4468-a0da-7c6f25d2110f +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# クライアント : チャネル ファクトリとチャネル +ここでは、チャネル ファクトリとチャネルの作成について説明します。 + +## チャネル ファクトリとチャネル + チャネル ファクトリには、チャネルを作成する役割があります。 チャネル ファクトリによって作成されるチャネルは、メッセージの送信に使用されます。 このチャネルは、上の層からメッセージを取得し、必要な処理を実行し、そのメッセージを下の層に送信する必要があります。 このプロセスを説明する図を次に示します。 + + ![クライアント ファクトリおよびチャネル](../../../../docs/framework/wcf/extending/media/wcfc-wcfchannelsigure2highlevelfactgoriesc.gif "wcfc\_WCFChannelsigure2HIghLevelFactgoriesc") +チャネル ファクトリがチャネルを作成します。 + + 終了時に、チャネル ファクトリは、作成したチャネルのうちまだ閉じていないチャネルを閉じる必要があります。 チャネル リスナーを閉じたとき、新しいチャネルの受け入れだけが停止され、既存のチャネルは開いたままで、メッセージの受信を続行できるので、ここに示すモデルは非対称です。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、このプロセスに対する基本クラス ヘルパーが用意されています \(このトピックで説明するチャネル ヘルパー クラスの図については、「[チャネル モデルの概要](../../../../docs/framework/wcf/extending/channel-model-overview.md)」を参照してください\)。 + +- クラスには が実装され、[チャネルの開発](../../../../docs/framework/wcf/extending/developing-channels.md) の手順 2. で説明されているステート マシンが強制実行されます。 + +- `` クラスには が実装され、 の統合基本クラスが提供されます。 クラスは、 を実装する基本クラスである との組み合わせによって動作します。 + +- `` クラスでは、 および が実装され、`CreateChannel` オーバーロードが `OnCreateChannel` 抽象メソッドに統合されます。 + +- `` クラスは、 を実装しています。 基本状態管理を行います。 + + 次の説明は、「[トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md)」のサンプルに基づいています。 + +### チャネル ファクトリの作成 + `UdpChannelFactory` は から派生します。 サンプルでは、 をオーバーライドして、メッセージ エンコーダーのメッセージ バージョンにアクセスできるようにします。 さらに、 をオーバーライドして、ステート マシンの移行時に のインスタンスを破棄します。 + +#### UDP 出力チャネル + `UdpOutputChannel` では、 が実装されます。 このコンストラクターは、引数を検証し、渡される に基づいて出力先の オブジェクトを構築します。 + + のオーバーライドによって、この にメッセージを送信するために使用されるソケットが作成されます。 + + `this.socket = new Socket(` + + `this.remoteEndPoint.AddressFamily,` + + `SocketType.Dgram,` + + `ProtocolType.Udp` + + `);` + + チャネルが閉じる際には、正常終了することも異常終了することもあります。 チャネルが正常に閉じた場合はソケットも終了し、基本クラスの `OnClose` メソッドが呼び出されます。 このときに例外がスローされると、インフラストラクチャによって `Abort` が呼び出され、チャネルがクリーンアップされます。 + +``` +this.socket.Close(); +base.OnClose(timeout); + +``` + + `Send()` と `BeginSend()`\/`EndSend()` を実装します。 この実装は、2 つの主要セクションに分かれます。 最初に、メッセージを次のようにシリアル化してバイト配列で表します。 + +``` +ArraySegment messageBuffer = EncodeMessage(message); + +``` + + 次に、結果として生成されたデータを次のようにネットワークに送信します。 + +``` +this.socket.SendTo( + messageBuffer.Array, + messageBuffer.Offset, + messageBuffer.Count, + SocketFlags.None, + this.remoteEndPoint +); +``` + +## 参照 + [チャネルの開発](../../../../docs/framework/wcf/extending/developing-channels.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/client-channel-level-programming.md b/docs/framework/wcf/extending/client-channel-level-programming.md new file mode 100644 index 00000000000..2682018647f --- /dev/null +++ b/docs/framework/wcf/extending/client-channel-level-programming.md @@ -0,0 +1,53 @@ +--- +title: "クライアントのチャネル レベルのプログラミング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3b787719-4e77-4e77-96a6-5b15a11b995a +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# クライアントのチャネル レベルのプログラミング +ここでは、 クラスとこれに関連するオブジェクト モデルを使用せずに、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアント アプリケーションを作成する方法を説明します。 + +## メッセージの送信 + メッセージを送信し、応答を受信して処理できるようにするには、次の手順に従う必要があります。 + +1. バインディングを作成します。 + +2. チャネル ファクトリをビルドします。 + +3. チャネルを作成します。 + +4. 要求を送信し、応答を読み取ります。 + +5. すべてのチャネル オブジェクトを閉じます。 + +#### バインディングの作成 + 受信の場合 \(「[サービス チャネル レベルのプログラミング](../../../../docs/framework/wcf/extending/service-channel-level-programming.md)」を参照\) と同様に、メッセージの送信はバインディングを作成することから始まります。この例では、新しい を作成し、その要素コレクションに を追加します。 + +#### ChannelFactory のビルド + を作成する代わりに、今回はバインディングで型パラメーターを にして を呼び出すことで、 を作成します。チャネル リスナーは受信メッセージを待機する側で使用されますが、チャネル ファクトリはチャネルを作成するために通信を開始する側で使用されます。チャネル リスナーと同様に、チャネル ファクトリも使用する前に開く必要があります。 + +#### チャネルの作成 + 次に を呼び出して、 を作成します。この呼び出しには、新しく作成するチャネルを使用して通信を行う対象となるエンドポイントのアドレスを使用します。チャネルを作成したら、このチャネルで Open を呼び出して通信できる状態にします。この Open の呼び出しにより、トランスポートの性質に応じて、目的のエンドポイントとの接続が開始されることもあれば、ネットワーク上では何も起こらないこともあります。 + +#### 要求の送信と応答の読み取り + チャネルが開かれると、メッセージを作成して、チャネルの Request メソッドを使用して要求を送信し、応答が返ってくるのを待機できます。Request メソッドが終了すると、応答メッセージを取得して読み取り、エンドポイントの応答内容を確認できます。 + +#### オブジェクトの終了 + リソースのリークを避けるには、通信に使用したオブジェクトが不要になったら、これを終了します。 + + 次のコード例に、メッセージを送信して応答を読み取るためにチャネル ファクトリを使用する基本的なクライアントを示します。 + + [!code-csharp[ChannelProgrammingBasic#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/channelprogrammingbasic/cs/clientprogram.cs#2)] + [!code-vb[ChannelProgrammingBasic#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/channelprogrammingbasic/vb/clientprogram.vb#2)] \ No newline at end of file diff --git a/docs/framework/wcf/extending/configuration-and-metadata-support.md b/docs/framework/wcf/extending/configuration-and-metadata-support.md new file mode 100644 index 00000000000..041e744ec0f --- /dev/null +++ b/docs/framework/wcf/extending/configuration-and-metadata-support.md @@ -0,0 +1,264 @@ +--- +title: "構成とメタデータのサポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 27c240cb-8cab-472c-87f8-c864f4978758 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 構成とメタデータのサポート +ここでは、バインディングおよびバインド要素用に構成とメタデータのサポートを有効にする方法を説明します。 + +## 構成とメタデータの概要 + ここでは、次の作業について説明します。これは、[チャネルの開発](../../../../docs/framework/wcf/extending/developing-channels.md)タスク リストのオプション項目 1.、2. および 4. に当たります。 + +- バインド要素の構成ファイル サポートを有効にします。 + +- バインディングの構成ファイル サポートを有効にします。 + +- バインド要素の WSDL とポリシー アサーションをエクスポートします。 + +- バインディングまたはバインド要素に挿入して構成する WSDL とポリシー アサーションを特定します。 + + ユーザー定義バインディングおよびバインド要素の作成の詳細については、それぞれ「[ユーザー定義バインディングの作成](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md)」および「[BindingElement の作成](../../../../docs/framework/wcf/extending/creating-a-bindingelement.md)」を参照してください。 + +## 構成サポートの追加 + チャネルに対する構成ファイルのサポートを有効にするには、2 つの構成セクションを実装する必要があります。1 つはバインド要素に対する構成のサポートを有効にする で、もう 1 つはバインディングに対する構成のサポートを有効にする です。 + + これを行う簡単な方法は、[ConfigurationCodeGenerator](../../../../docs/framework/wcf/samples/configurationcodegenerator.md) サンプル ツールを使用して、バインディングおよびバインド要素の構成コードを生成することです。 + +### BindingElementExtensionElement の拡張 + 次のコード例は、[トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md) のサンプルから取られています。`UdpTransportElement` は `UdpTransportBindingElement` を構成システムに公開する です。いくつかの基本的なオーバーライドを行うことで、サンプルでは構成セクション名、バインド要素の種類とバインド要素の作成方法が定義されます。その後、次のようにして拡張セクションを構成ファイルに登録できます。 + +``` + + + + + + + + + + + + +``` + +### バインディングの構成の追加 + セクション `SampleProfileUdpBindingCollectionElement` は で、`SampleProfileUdpBinding` を構成システムに公開します。実装の大部分は `SampleProfileUdpBindingConfigurationElement` で代行されます。これは の派生です。`SampleProfileUdpBindingConfigurationElement` には `SampleProfileUdpBinding` にあるプロパティに対応するプロパティがあり、`ConfigurationElement` バインディングからマップする関数があります。次のサンプル コードで示すように、最後に、`OnApplyConfiguration` メソッドが `SampleProfileUdpBinding` 内でオーバーライドされます。 + +``` +protected override void OnApplyConfiguration(string configurationName) +{ + if (binding == null) + throw new ArgumentNullException("binding"); + + if (binding.GetType() != typeof(SampleProfileUdpBinding)) + { + throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, + "Invalid type for binding. Expected type: {0}. Type passed in: {1}.", + typeof(SampleProfileUdpBinding).AssemblyQualifiedName, + binding.GetType().AssemblyQualifiedName)); + } + SampleProfileUdpBinding udpBinding = (SampleProfileUdpBinding)binding; + + udpBinding.OrderedSession = this.OrderedSession; + udpBinding.ReliableSessionEnabled = this.ReliableSessionEnabled; + udpBinding.SessionInactivityTimeout = this.SessionInactivityTimeout; + if (this.ClientBaseAddress != null) + udpBinding.ClientBaseAddress = ClientBaseAddress; +} + +``` + + このハンドラーを構成システムに登録するには、次のセクションを関連する構成ファイルに追加します。 + +``` + + + + +
+ + + + + +``` + +## バインド要素のメタデータ サポートの追加 + チャネルをメタデータ システムに統合するには、ポリシーのインポートとエクスポートの両方がサポートされている必要があります。これにより、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) などのツールでバインド要素のクライアントを生成できます。 + +### WSDL サポートの追加 + バインディングのトランスポート バインド要素は、メタデータのアドレス指定情報のインポートとエクスポートを行います。SOAP バインディングを使用する場合は、トランスポート バインド要素によっても、メタデータの正しいトランスポート URI がエクスポートされます。次のコード例は、[トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md) のサンプルから取られています。 + +#### WSDL エクスポート + アドレス指定情報をエクスポートするために、`UdpTransportBindingElement` は インターフェイスを実装しています。 メソッドにより、正しいアドレス指定情報が WSDL ポートに追加されます。 + +``` +if (context.WsdlPort != null) +{ + AddAddressToWsdlPort(context.WsdlPort, context.Endpoint.Address, encodingBindingElement.MessageVersion.Addressing); +} +``` + + エンドポイントが SOAP バインディングを使用する場合、 メソッドの `UdpTransportBindingElement` の実装でも、次のようにトランスポート URI がエクスポートされます。 + +``` +WsdlNS.SoapBinding soapBinding = GetSoapBinding(context, exporter); +if (soapBinding != null) +{ + soapBinding.Transport = UdpPolicyStrings.UdpNamespace; +} +``` + +#### WSDL インポート + WSDL インポート システムを拡張してアドレスのインポートを処理するには、次の構成を Svcutil.exe の構成ファイルに追加する必要があります。Svcutil.exe.config ファイルの次の例を参照してください。 + +``` + + + + + + + + + + + +``` + + Svcutil.exe を実行する場合、Svcutil.exe に WSDL インポートの拡張を読み込ませるために次の 2 つのオプションがあります。 + +1. \/SvcutilConfig:\<ファイル名\> を使用して、Svcutil.exe に構成ファイルを指定します。 + +2. Svcutil.exe と同じディレクトリにある Svcutil.exe.config に構成セクションを追加します。 + + `UdpBindingElementImporter` 型は インターフェイスを実装します。`ImportEndpoint` メソッドは、次のようにして WSDL ポートからアドレスをインポートします。 + +``` +BindingElementCollection bindingElements = context.Endpoint.Binding.CreateBindingElements(); +TransportBindingElement transportBindingElement = bindingElements.Find(); +if (transportBindingElement is UdpTransportBindingElement) +{ + ImportAddress(context); +} +``` + +### ポリシー サポートの追加 + カスタム バインド要素では、WSDL バインディング内のポリシー アサーションをエクスポートして、サービス エンドポイントでそのバインド要素の機能を表現します。次のコード例は、[トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md) のサンプルから取られています。 + +#### ポリシーのエクスポート + `UdpTransportBindingElement` 型はポリシーのエクスポートをサポートするために `` を実装します。その結果、 には、これを含む任意のバインディングでのポリシーの生成時に `UdpTransportBindingElement` が含まれます。 + + では、UDP のアサーションを追加します。チャネルがマルチキャスト モードである場合は、別のアサーションを追加します。これは、マルチキャスト モードは通信スタックの構築方法に影響を与えるため、両方の側において調整される必要があるためです。 + +``` +ICollection bindingAssertions = context.GetBindingAssertions(); +XmlDocument xmlDocument = new XmlDocument(); +bindingAssertions.Add(xmlDocument.CreateElement( +UdpPolicyStrings.Prefix, UdpPolicyStrings.TransportAssertion, UdpPolicyStrings.UdpNamespace)); +if (Multicast) +{ + bindingAssertions.Add(xmlDocument.CreateElement( +UdpPolicyStrings.Prefix, UdpPolicyStrings.MulticastAssertion, UdpPolicyStrings.UdpNamespace)); +} +``` + + カスタム トランスポート バインド要素はアドレス指定の処理を実行するため、`UdpTransportBindingElement` への の実装でも、WS\-Addressing ポリシー アサーションのエクスポートが処理されて、使用されている WS\-Addressing のバージョンが示されます。 + +``` +AddWSAddressingAssertion(context, encodingBindingElement.MessageVersion.Addressing); +``` + +#### ポリシーのインポート + ポリシー インポート システムを拡張するには、次の構成を Svcutil.exe の構成ファイルに追加する必要があります。Svcutil.exe.config ファイルの次の例を参照してください。 + +``` + + + + + + + + + + + +``` + + 次に、登録されたクラス \(`UdpBindingElementImporter`\) から を実装します。 で、適切な名前空間にあるアサーションを調べ、トランスポートを生成するためにそのアサーションを処理して、マルチキャストであるかどうかをチェックします。さらに、インポーターが処理するアサーションをバインディング アサーションの一覧から削除します。Svcutil.exe を実行する場合、ここでも、統合用に次の 2 つのオプションがあります。 + +1. \/SvcutilConfig:\<ファイル名\> を使用して、Svcutil.exe に構成ファイルを指定します。 + +2. Svcutil.exe と同じディレクトリにある Svcutil.exe.config に構成セクションを追加します。 + +### カスタムの標準バインディング インポーターの追加 + Svcutil.exe と 型は、既定でシステム指定のバインディングを識別してインポートします。これ以外の場合、バインディングは、 インスタンスとしてインポートされます。Svcutil.exe と を有効にして `SampleProfileUdpBinding` をインポートする場合、`UdpBindingElementImporter` もカスタムの標準バインディング インポーターとして機能します。 + + カスタムの標準バインディング インポーターは、 インターフェイスに `ImportEndpoint` メソッドを実装しており、メタデータからインポートされた インスタンスを調べて、これが特定の標準バインディングによって生成されたものであるかどうかを判別できます。 + +``` +if (context.Endpoint.Binding is CustomBinding) +{ + Binding binding; + if (transportBindingElement is UdpTransportBindingElement) + { + //if TryCreate is true, the CustomBinding will be replace by a SampleProfileUdpBinding in the + //generated config file for better typed generation. + if (SampleProfileUdpBinding.TryCreate(bindingElements, out binding)) + { + binding.Name = context.Endpoint.Binding.Name; + binding.Namespace = context.Endpoint.Binding.Namespace; + context.Endpoint.Binding = binding; + } + } +} +``` + + 一般に、カスタムの標準バインディング インポーターを実装すると、インポートしたバインド要素のプロパティを調べて、標準バインディングによって設定されたプロパティのみが変更され、その他のすべてのプロパティは既定のままであることが検証されます。標準バインディング インポーターを実装する場合の基本的な方法は、標準バインディングのインスタンスを作成し、標準バインディングがサポートするバインド要素のプロパティを標準バインディング インスタンスに反映し、標準バインディングのバインド要素とインポートしたバインド要素とを比較します。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md b/docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md new file mode 100644 index 00000000000..455e0ab1e98 --- /dev/null +++ b/docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md @@ -0,0 +1,252 @@ +--- +title: "動作を使用したランタイムの構成と拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "動作を使用した拡張機能の関連付け [WCF]" +ms.assetid: 149b99b6-6eb6-4f45-be22-c967279677d9 +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# 動作を使用したランタイムの構成と拡張 +動作を使用すると、既定の動作を変更したり、カスタム拡張機能を追加したりできます。カスタム拡張機能では、サービス構成の検査および検証や、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアント アプリケーションとサービス アプリケーションのランタイム動作の変更を行います。ここでは、動作インターフェイスとその実装方法について説明します。また、動作インターフェイスをサービスの説明 \(サービス アプリケーションの場合\) またはエンドポイント \(クライアント アプリケーションの場合\) にプログラムによって追加する方法と、構成ファイル内で追加する方法についても説明します。システムが提供する動作の使用方法の詳細については、「[サービスのランタイム動作の指定](../../../../docs/framework/wcf/specifying-service-run-time-behavior.md)」および「[クライアントのランタイム動作の指定](../../../../docs/framework/wcf/specifying-client-run-time-behavior.md)」を参照してください。 + +## 動作 + 動作の型は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] がサービス説明オブジェクト \(サービスの場合\) またはサービス エンド ポイント説明オブジェクト \(クライアントの場合\) を使用してランタイムを作成する前に、これらのオブジェクトに追加されます。このランタイムは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスまたは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを実行します。ランタイムの構築プロセスでこれらの動作を呼び出すと、コントラクト、バインディング、およびアドレスによって構築されたランタイムを変更するランタイム プロパティやランタイム メソッドにアクセスできます。 + +### 動作メソッド + すべての動作で、`AddBindingParameters` メソッド、`ApplyDispatchBehavior` メソッド、`Validate` メソッド、および `ApplyClientBehavior` メソッドを使用できます。ただし、`ApplyClientBehavior` には、例外が 1 つあります。 はクライアントで実行できないため、このメソッドを実装していません。 + +- カスタム オブジェクトを変更したり、ランタイム構築時に使用するためにカスタム バインディングがアクセスできるコレクションにカスタム オブジェクトを追加したりするには、`AddBindingParameters` メソッドを使用します。たとえば、これによって、チャネルを構築する方法に影響するが、チャネル開発者には知られていない保護要件を指定します。 + +- 説明ツリーと対応するランタイム オブジェクトを検査し、特定の基準セットに従っていることを確認するには、`Validate` メソッドを使用します。 + +- 説明ツリーを検査し、サービスまたはクライアントの特定のスコープのランタイムを変更するには、`ApplyDispatchBehavior` メソッドと `ApplyClientBehavior` メソッドを使用します。また、拡張オブジェクトを挿入することもできます。 + + > [!NOTE] + > これらのメソッドでは説明ツリーが提供されますが、説明ツリーは検査にのみ使用します。説明ツリーを変更すると、動作は未定義の状態になります。 + + 変更できるプロパティと実装できるカスタマイズ インターフェイスには、サービスおよびクライアントのランタイム クラスからアクセスできます。サービス型は、 クラスと クラスです。クライアント型は、 クラスと クラスです。 クラスと クラスは、それぞれクライアント全体またはサービス全体のランタイム プロパティと拡張コレクションにアクセスするための拡張エントリ ポイントです。同様に、 クラスと クラスは、それぞれクライアント操作またはサービス操作のランタイム プロパティと拡張コレクションを公開します。ただし、必要に応じて、操作ランタイム オブジェクトからより広いスコープのランタイム オブジェクトにアクセスできます。また、逆の場合も同様です。 + +> [!NOTE] +> クライアントの実行動作を変更する際に使用できるランタイム プロパティと拡張型の詳細については、「[クライアントの拡張](../../../../docs/framework/wcf/extending/extending-clients.md)」を参照してください。サービス ディスパッチャーの実行動作を変更する際に使用できるランタイム プロパティと拡張型の詳細については、「[ディスパッチャーの拡張](../../../../docs/framework/wcf/extending/extending-dispatchers.md)」を参照してください。 + + ほとんどの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ユーザーは、ランタイムと直接やり取りすることはありません。代わりに、構成ファイル内のクラスや動作で、コア プログラミング モデルの構成要素 \(エンドポイント、コントラクト、バインディング、アドレス、動作属性など\) を使用します。これらの要素によって*説明ツリー*が構成されます。説明ツリーは、このツリーで示されるサービスまたはクライアントをサポートするランタイムを構築するための完全な仕様を表します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、次の 4 種類の動作があります。 + +- サービスの動作 \( 型\) : を含むサービス ランタイム全体のカスタマイズを実現します。 + +- エンドポイントの動作 \( 型\) : サービス エンドポイントと、関連する オブジェクトのカスタマイズを実現します。 + +- コントラクトの動作 \( 型\) : クラス \(クライアント アプリケーションの場合\) と、 クラス \(サービス アプリケーションの場合\) のカスタマイズを実現します。 + +- 操作の動作 \( 型\) : クラス \(クライアントの場合\) と、 クラス \(サービスの場合\) のカスタマイズを実現します。 + + カスタム属性を実装するか、アプリケーション構成ファイルを使用することにより、これらの動作をさまざまな説明オブジェクトに追加できます。また、適切な説明オブジェクトの動作コレクションに直接追加することもできます。ただし、 または を呼び出す前に、サービス説明オブジェクトまたはサービス エンドポイント説明オブジェクトに追加する必要があります。 + +### 動作のスコープ + 4 種類の動作があり、それぞれランタイム アクセスの特定のスコープに対応しています。 + +#### サービスの動作 + を実装するサービスの動作は、サービス ランタイム全体を変更する主要機構です。サービスの動作をサービスに追加する場合、3 つの方法があります。 + +1. サービス クラスの属性を使用する方法。 を構築すると、 実装は、リフレクションを使用してそのサービス型の属性セットを検出します。これらの属性のいずれかが の実装である場合、 の動作コレクションに追加されます。これにより、これらの動作はサービス ランタイムの構築に参加できます。 + +2. プログラムによって、 の動作コレクションに動作を追加する方法。これを行うには、次のコード行を使用します。 + + ``` + ServiceHost host = new ServiceHost(/* Parameters */); + host.Description.Behaviors.Add(/* Service Behavior */); + ``` + +3. 構成を拡張するカスタムの を実装する方法。これにより、アプリケーション構成ファイルからサービスの動作を使用できるようになります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービスの動作の例として、 属性、 動作などがあります。 + +#### コントラクトの動作 + インターフェイスを実装するコントラクトの動作は、コントラクト全体にわたり、クライアント ランタイムとサービス ランタイムを拡張する際に使用します。 + + コントラクトの動作をコントラクトに追加する場合、2 つの方法があります。1 つは、コントラクト インターフェイスで使用するカスタム属性を作成する方法です。コントラクト インターフェイスを または に渡すと、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] はインターフェイスの属性を検査します。属性のいずれかが の実装である場合、そのインターフェイス用に作成された の動作コレクションに追加されます。 + + カスタム コントラクトの動作属性に を実装することもできます。この場合、適用先に応じて動作は次のようになります。 + + •コントラクト インターフェイスに適用した場合。この場合、動作は任意のエンドポイント内の該当の型のすべてのコントラクトに適用されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、 プロパティの値を無視します。 + + •サービス クラスに適用した場合。この場合、動作はコントラクトが プロパティの値であるエンドポイントにのみ適用されます。 + + •コールバック クラスに適用した場合。この場合、動作は双方向クライアントのエンドポイントに適用されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、 プロパティの値を無視します。 + + 2 番目の方法として、 の動作コレクションに動作を追加する方法があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のコントラクトの動作の例として、 属性などがあります。詳細および例については、リファレンス トピックを参照してください。 + +#### エンドポイントの動作 + を実装するエンドポイントの動作は、特定のエンドポイントのサービス ランタイムまたはクライアント ランタイム全体を変更する主要機構です。 + + エンドポイントの動作をサービスに追加する場合、2 つの方法があります。 + +1. プロパティに動作を追加する方法。 + +2. 構成を拡張するカスタムの を実装する方法。 + + 詳細および例については、リファレンス トピックを参照してください。 + +#### 操作の動作 + インターフェイスを実装する操作の動作は、各操作のクライアント ランタイムとサービス ランタイムを拡張する際に使用します。 + + 操作の動作を操作に追加する場合、2 つの方法があります。1 つは、操作をモデル化するメソッドで使用するカスタム属性を作成する方法です。 または に操作を追加すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、その操作用に作成された の動作コレクションに任意の 属性を追加します。 + + 2 番目の機構は、構成された の動作コレクションに動作を直接追加します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の操作の動作の例として、 などがあります。 + + 詳細および例については、リファレンス トピックを参照してください。 + +### 構成を使用した動作の作成 + サービス、エンドポイント、およびコントラクトの動作は、コードまたは属性を使用して指定するように設計できます。アプリケーション構成ファイルまたは Web 構成ファイルを使用して構成できるのは、サービスの動作とエンドポイントの動作だけです。属性を使用して動作を公開した場合、開発者は、実行時に追加、削除、または変更できない動作をコンパイル時に指定できます。多くの場合、これはサービスの適切な操作のために常に必要となる動作に適しています \( 属性に対するトランザクション関連のパラメーターなど\)。構成を使用して動作を公開すると、開発者はサービス展開者に動作の仕様と構成を委ねることができます。これは、動作がオプション コンポーネント、または他の展開固有の構成 \(サービスまたはサービスの特定の承認構成についてメタデータを公開するかどうかなど\) である場合に適しています。 + +> [!NOTE] +> 企業のアプリケーション ポリシーを machine.config 構成ファイルに挿入し、これらの項目をロックダウンすることで、ポリシーを適用する構成をサポートする動作を使用することもできます。説明および例については、「[方法 : 企業内のエンドポイントをロックダウンする](../../../../docs/framework/wcf/extending/how-to-lock-down-endpoints-in-the-enterprise.md)」を参照してください。 + + 構成を使用して動作を公開するには、開発者は の派生クラスを作成し、その拡張を構成に登録する必要があります。 + + を実装する方法を次のコード例に示します。 + +``` +// BehaviorExtensionElement members + public override Type BehaviorType + { + get { return typeof(EndpointBehaviorMessageInspector); } + } + + protected override object CreateBehavior() + { + return new EndpointBehaviorMessageInspector(); + } +``` + + 構成システムでカスタムの を読み込むには、拡張として登録する必要があります。上記のエンドポイントの動作の構成ファイルを次のコード例に示します。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + ここで、`Microsoft.WCF.Documentation.EndpointBehaviorMessageInspector` は動作拡張型です。また、`HostApplication` は、該当のクラスがコンパイルされているアセンブリの名前です。 + +### 評価順序 + は、プログラミング モデルと記述からランタイムを構築します。前述のように、動作は、サービス、エンドポイント、コントラクト、および操作でランタイムの構築プロセスを支援します。 + + は次の順序で動作を適用します。 + +1. サービス + +2. コントラクト + +3. エンドポイント + +4. 操作 + + 動作のどのコレクション内でも、順序が保証されるというわけではありません。 + + は次の順序で動作を適用します。 + +1. コントラクト + +2. エンドポイント + +3. 操作 + + この場合も、動作のどのコレクション内でも、順序が保証されるというわけではありません。 + +### プログラムによる動作の追加 + メソッドの後で、サービス アプリケーションの の各プロパティを変更しないでください。このメソッドの後で変更すると、 および プロパティや `AddServiceEndpoint` メソッドなどの一部のメンバーは例外をスローします。変更を許可するメンバーもありますが、結果は未定義の状態になります。 + + 同様に、クライアントで、 呼び出しの後で、 値を変更しないでください。この呼び出しの後で変更すると、 プロパティは例外をスローします。その他のクライアント記述値は、エラーを発生させずに変更できます。ただし、結果は未定義の状態になります。 + + サービスとクライアントのどちらの場合も、 の呼び出しの前に記述を変更することをお勧めします。 + +### 動作属性の継承ルール + 4 種類の動作はすべて、属性 \(サービスの動作とコントラクトの動作\) を使用して設定できます。属性はマネージ オブジェクトとメンバーで定義され、マネージ オブジェクトとメンバーは継承をサポートしているため、継承のコンテキストでの動作属性の機能を定義する必要があります。 + + 大まかに言えば、特定のスコープ \(サービス、コントラクト、操作など\) については、そのスコープの継承階層内のすべての動作属性が適用されるという継承ルールになります。同じ種類の 2 つの動作属性がある場合、最も多く派生された種類だけが使用されます。 + +#### サービスの動作 + サービス クラスの場合、指定のクラスとその親のすべてのサービス動作属性が適用されます。継承階層の複数の場所に同じ種類の属性が適用されている場合は、最も多く派生された種類が使用されます。 + +``` +[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)] +[AspNetCompatibilityRequirementsAttribute( + AspNetCompatibilityRequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] +public class A { /* … */ } + +[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] +public class B : A { /* … */} +``` + + たとえば、上記の例では、最終的にサービス B は、 になります。 になるのは、サービス B の 属性の方がサービス A よりも多く派生されているためです。 + +#### コントラクトの動作 + コントラクトの場合、指定のインターフェイスとその親のすべてのコントラクト動作属性が適用されます。継承階層の複数の場所に同じ種類の属性が適用されている場合は、最も多く派生された種類が使用されます。 + +#### 操作の動作 + 指定の操作が既存の抽象操作または仮想操作をオーバーライドしない場合、継承ルールは適用されません。 + + 操作が既存の操作をオーバーライドする場合は、その操作とその親のすべての操作動作属性が適用されます。継承階層の複数の場所に同じ種類の属性が適用されている場合は、最も多く派生された種類が使用されます。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/creating-a-bindingelement.md b/docs/framework/wcf/extending/creating-a-bindingelement.md new file mode 100644 index 00000000000..d8bc564be56 --- /dev/null +++ b/docs/framework/wcf/extending/creating-a-bindingelement.md @@ -0,0 +1,84 @@ +--- +title: "BindingElement の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 01a35307-a41f-4ef6-a3db-322af40afc99 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# BindingElement の作成 +バインディングとバインド要素 \(それぞれ、 を拡張するオブジェクト\) は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーション モデルがチャネル ファクトリおよびチャネル リスナーと関連付けられる場所です。バインディングを使用せずにカスタム チャネルを使用する場合は、「[サービス チャネル レベルのプログラミング](../../../../docs/framework/wcf/extending/service-channel-level-programming.md)」および「[クライアントのチャネル レベルのプログラミング](../../../../docs/framework/wcf/extending/client-channel-level-programming.md)」に示すように、チャネル レベルでのプログラミングが必要になります。このトピックでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でチャネルを使用するための最小要件、チャネルの の開発、および「[チャネルの開発](../../../../docs/framework/wcf/extending/developing-channels.md)」の手順 4. に示す "アプリケーションからのチャネル使用" を有効にする方法について説明します。 + +## 概要 + チャネルの を作成しておくと、開発者は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーション内でチャネルを使用できるようになります。 オブジェクトを クラスから使用することにより、チャネルの正確な型情報を指定しなくても [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションをチャネルに接続できます。 + + 一度 を作成しておくと、「[チャネルの開発](../../../../docs/framework/wcf/extending/developing-channels.md)」に示す残りのチャネル開発手順に従って、さらに多くの機能を、要件に応じて有効にできます。 + +## バインド要素の追加 + カスタムの を実装するには、 を継承するクラスを記述します。たとえば、サイズの大きいメッセージをチャンクに分割し、接続先で元のメッセージを再構築できる `ChunkingChannel` を開発している場合、 を実装してこれを使用するようにバインディングを構成することによって、任意のバインディングでこのチャネルを使用できるようになります。このトピックの残りの部分では、`ChunkingChannel` を例にして、バインド要素を実装する際の要件を示します。 + + `ChunkingBindingElement` は、`ChunkingChannelFactory` および `ChunkingChannelListener` を作成します。このバインド要素は、 実装および 実装をオーバーライドし、型パラメーターが \(この例では、これが `ChunkingChannel` でサポートされる唯一のチャネル形状です\) であることと、バインディングの他のバインド要素がこのチャネル形状をサポートすることを確認します。 + + は、要求されたチャネル形状を構築できることをまず確認し、次にチャンク対象のメッセージ アクションのリストを取得します。さらに、新しい `ChunkingChannelFactory` を作成してこれに内部チャネル ファクトリを渡します \(トランスポート バインド要素を作成する場合、これはバインディング スタック内の最後の要素となるため、チャネル リスナーとチャネル ファクトリを作成する必要があります\)。 + + には、`ChunkingChannelListener` を作成してこれに内部チャネル リスナーを渡す同様の実装があります。 + + トランスポート チャネルを使用する別の例として、「[トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md)」のサンプルでは次のオーバーライドが示されています。 + + このサンプルでは、バインド要素は `UdpTransportBindingElement` で、 から派生しています。このバインド要素は、チャネルに関連付けられているファクトリを作成する、次のメソッドをオーバーライドします。 + +``` +public IChannelFactory BuildChannelFactory(BindingContext context) +{ + return (IChannelFactory)(object)new UdpChannelFactory(this, context); +} + +public IChannelListener BuildChannelListener(BindingContext context) +{ + return (IChannelListener)(object)new UdpChannelListener(this, context); +} +``` + + また、この要素には、`BindingElement` を複製したり、スキーム \(soap.udp\) を返したりするためのメンバーも含まれます。 + +#### プロトコル バインド要素 + 含まれているバインド要素を新しいバインド要素で置き換えたり補足したりすることにより、新しいトランスポート、エンコーディング、または高レベルのプロトコルを追加できます。新しいプロトコル バインド要素を作成するには、まず クラスを拡張します。次に、 を使用して、少なくとも と `ChannelProtectionRequirements` を実装する必要があります。これにより、このバインド要素の が返されます。詳細については、 を参照してください。 + + は、このバインド要素の新しいコピーを返します。最善の方法としては、バインド要素の作成者は基本の copy コンストラクターを呼び出す copy コンストラクターを使用して、 を実装し、このクラスに含まれるすべての追加フィールドを複製することをお勧めします。 + +#### トランスポート バインド要素 + 新しいトランスポート バインド要素を作成するには、 インターフェイスを拡張します。次に、少なくとも メソッドと プロパティを実装する必要があります。 + + \- このバインド要素の新しいコピーを返します。最善の方法としては、バインディング要素の作成者は基本の copy コンストラクターを呼び出す copy コンストラクターを使用して、複製を実装し、このクラスに含まれるすべての追加フィールドを複製することをお勧めします。 + + get プロパティは、バインディング要素によって表されるトランスポート プロトコルの URI スキームを返します。たとえば、 および は、それぞれの プロパティから "http" および "net.tcp" を返します。 + +#### エンコーディング バインディング要素 + 新しいエンコーディング バインド要素を作成するには、まず クラスを拡張し、 クラスを実装します。次に、少なくとも、 メソッド、 メソッド、および プロパティを実装する必要があります。 + +- .このバインド要素の新しいコピーを返します。最善の方法としては、バインド要素の作成者は基本の copy コンストラクターを呼び出す copy コンストラクターを使用して、 を実装し、このクラスに含まれるすべての追加フィールドを複製することをお勧めします。 + +- . を返します。これは、新しいエンコーダーを実装する実際のクラスを識別するハンドルを提供し、 を拡張します。詳細については、 の各トピックを参照してください。 + +- .このエンコーディングで使用する を返します。これは、使用する SOAP および WS\-Addressing のバージョンを表します。 + + ユーザー定義エンコーディング バインド要素のオプション メソッドとプロパティの完全な一覧については、 を参照してください。 + + 新しいバインド要素の作成の詳細については、「[ユーザー定義バインディングの作成](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md)」を参照してください。 + + チャネルのバインド要素を作成したら、「[チャネルの開発](../../../../docs/framework/wcf/extending/developing-channels.md)」のトピックに戻り、作成したバインド要素で構成ファイルをサポートする必要性の有無、メタデータの公開をサポートする必要性の有無とその方法、およびバインド要素を使用するユーザー定義のバインディングを作成する必要性の有無とその方法について確認します。 + +## 参照 + + [チャネルの開発](../../../../docs/framework/wcf/extending/developing-channels.md) + [トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/creating-user-defined-bindings.md b/docs/framework/wcf/extending/creating-user-defined-bindings.md new file mode 100644 index 00000000000..1a966140c2c --- /dev/null +++ b/docs/framework/wcf/extending/creating-user-defined-bindings.md @@ -0,0 +1,130 @@ +--- +title: "ユーザー定義バインディングの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ユーザー定義バインディング [WCF]" +ms.assetid: c4960675-d701-4bc9-b400-36a752fdd08b +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# ユーザー定義バインディングの作成 +システムから提供されないバインディングを作成する方法はいくつかあります。 + +- バインド要素を格納するコンテナーである クラスに基づいてカスタム バインディングを作成します。 次に、カスタム バインディングをサービス エンドポイントに追加します。 カスタム バインディングは、プログラムで作成することも、アプリケーションの構成ファイルに作成することもできます。 アプリケーション構成ファイルのバインド要素を使用するには、バインド要素で を拡張する必要があります。 カスタム バインディング[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」および「」を参照してください。 + +- 標準バインディングの派生クラスを作成できます。 たとえば、 の派生クラスを作成して メソッドを上書きし、バインド要素を取得してカスタム バインディングを挿入したり、セキュリティ用の特定の値を確立したりできます。 + +- 新しい 型を作成して、バインディング実装全体を完全に制御することができます。 + +## バインド要素の順序 + 各バインド要素は、メッセージの送信または受信時の処理手順を表します。 実行時に、バインド要素により、送受信チャネル スタックの作成に必要なチャネルとリスナーが作成されます。 + + バインディング要素には主に、プロトコル バインディング要素、エンコーディング バインディング要素、トランスポート バインディング要素という 3 つの種類があります。 + + プロトコル バインド要素 : この要素はメッセージで動作する上位処理ステップを表します。 このバインド要素で作成したチャネルとリスナーを使って、メッセージ内容の追加、削除、変更が可能です。 特定のバインディングには、それぞれが を継承する任意の数のプロトコル バインド要素を含めることができます。 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、 などのプロトコル バインド要素がいくつか含まれます。 + + エンコーディング バインド要素 : この要素は、メッセージとネットワーク転送が可能なエンコーディングとの間の変換を表します。 一般的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインディングには、エンコーディング バインド要素が 1 つだけ含まれます。 エンコーディング バインド要素の例として、 などがあります。 エンコーディング バインド要素がバインディングに指定されていない場合、既定のエンコーディングが使用されます。 既定値は、トランスポートが HTTP の場合はテキスト、それ以外の場合はバイナリです。 + + トランスポート バインド要素 : この要素は、トランスポート プロトコルでのエンコーディング メッセージの送信を表します。 一般的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインディングには、 から派生したトランスポート バインド要素が 1 つだけ含まれます。 トランスポート バインド要素の例として、 などがあります。 + + 新しいバインディングを作成する場合、バインド要素の追加順序が重要になります。 バインド要素は必ず次の順序で追加します。 + +|レイヤー|オプション|必須| +|----------|-----------|--------| +|トランザクション フロー||X| +|信頼性||X| +|セキュリティ||X| +|複合二重||X| +|エンコーディング|テキスト、バイナリ、MTOM、カスタム|○\*| +|Transport|TCP、名前付きパイプ、HTTP、HTTPS、MSMQ、およびカスタム|はい| + + \*エンコーディングは各バインディングに必要であるため、エンコーディングが指定されていない場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は既定のエンコーディングを自動的に追加します。 既定値は、HTTP および HTTPS トランスポートの場合はテキスト\/XML、それ以外の場合はバイナリです。 + +## 新しいバインド要素の作成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が提供する から派生した型のほかに、独自のバインド要素を作成できます。 これにより、他のシステムが提供する型を使ってスタックに組み込むことのできる独自の を作成して、バインディングのスタックを作成する方法や、バインディングのスタックに追加するコンポーネントをカスタマイズできます。 + + たとえば、メッセージをデータベースに記録する機能を持つ `LoggingBindingElement` を実装する場合、それをチャネル スタックのトランスポート チャネルの上に配置する必要があります。 この場合、アプリケーションでは、次の例に示すように、`TcpTransportBindingElement` と共に `LoggingBindingElement` が組み込まれたカスタム バインディングが作成されます。 + +```csharp +Binding customBinding = new CustomBinding( + new LoggingBindingElement(), + new TcpTransportBindingElement() +); +``` + + 新しいバインド要素を記述する方法は、機能性の詳細によって異なります。 サンプルの 1 つ \([トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md)\) を使用して、1 つの種類のバインド要素の実装方法を詳細に説明します。 + +## 新しいバインディングの作成 + ユーザーが作成するバインド要素は、2 つの方法で使用できます。 前のセクションでは、カスタム バインディングを使用する 1 番目の方法が説明されています。 カスタム バインディングを使用すれば、バインド要素の任意のセットに基づいて独自のバインディングを作成できます。ユーザーが作成するバインディング エレメントもこれに含まれます。 + + 2 つ以上のアプリケーションでバインディングを使用する場合、独自のバインディングを作成し、 を拡張します。 これにより、カスタム バインディングを使う必要があるたびに、手動でカスタム バインディングを作成する必要性を回避できます。 ユーザー定義のバインディングを使用して、バインディングの動作を定義したり、ユーザー定義のバインド要素を格納することができます。 また、*事前パッケージング*であるため、使用するたびにバインディングを再作成する必要はありません。 + + ユーザー定義のバインディングは、少なくとも メソッドと プロパティを実装する必要があります。 + + メソッドは、バインディングのバインド要素を格納している新しい を返します。 このコレクションは順序付けられており、始めにプロトコル バインド要素を格納し、次にエンコーディング バインド要素、その次にトランスポート バインド要素を格納する必要があります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] システム指定のバインド要素を使用する場合、[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)に指定されているバインド要素の順序ルールに従う必要があります。 このコレクションから、ユーザー定義のバインディング クラス内で参照されるオブジェクトを参照すべきではありません。このため、バインディングの作成者は、 を呼び出すたびに の `Clone()` を返す必要があります。 + + プロパティは、バインディングで使用するトランスポート プロトコルの URI スキームを表します。 たとえば、*WSHttpBinding* および *NetTcpBinding* は、それぞれの プロパティから "http" および "net.tcp" を返します。 + + ユーザー定義バインディングのオプション メソッドとプロパティの完全な一覧については、 を参照してください。 + +### 例 + このサンプルでは、プロファイル バインディングを、 から派生した `SampleProfileUdpBinding` に実装します。 `SampleProfileUdpBinding` は最大で 4 つのバインド要素を格納します。1 つはユーザー作成の `UdpTransportBindingElement` で、後の 3 つはシステム指定の `TextMessageEncodingBindingElement`、 `CompositeDuplexBindingElement`、`ReliableSessionBindingElement` です。 + +``` +public override BindingElementCollection CreateBindingElements() +{ + BindingElementCollection bindingElements = new BindingElementCollection(); + if (ReliableSessionEnabled) + { + bindingElements.Add(session); + bindingElements.Add(compositeDuplex); + } + bindingElements.Add(encoding); + bindingElements.Add(transport); + return bindingElements.Clone(); +} +``` + +## 双方向コントラクトのセキュリティ制限 + すべてのバインド要素どうしに互換性があるわけではありません。 特に双方向コントラクトで使用する場合、セキュリティ バインド要素にはいくつかの制限があります。 + +### ワンショット セキュリティ + \ 構成要素の `negotiateServiceCredential` 属性を `false` に設定すると、必要なすべてのセキュリティ資格情報を 1 つのメッセージで送信する、"ワンショット" セキュリティを実装できます。 + + ワンショット認証は双方向コントラクトでは動作しません。 + + 要求\/応答コントラクトでは、セキュリティ バインド要素の下にあるバインディング スタックで インスタンスまたは インスタンスの作成がサポートされている場合にのみ、ワンショット認証は動作します。 + + 一方向コントラクトでは、セキュリティ バインド要素の下にあるバインディング スタックで 、または の各インスタンスの作成がサポートされている場合にのみ、ワンショット認証は動作します。 + +### クッキー モードのセキュリティ コンテキスト トークン + クッキー モードのセキュリティ コンテキスト トークンは、双方向コントラクトでは使用できません。 + + 要求\/応答コントラクトでは、セキュリティ バインド要素の下にあるバインディング スタックで インスタンスまたは インスタンスの作成がサポートされている場合にのみ、クッキー モードのセキュリティ コンテキスト トークンは動作します。 + + 一方向コントラクトでは、セキュリティ バインド要素の下にあるバインディング スタックで インスタンスまたは インスタンスの作成がサポートされている場合にのみ、クッキー モードのセキュリティ コンテキスト トークンは動作します。 + +### セッション モードのセキュリティ コンテキスト トークン + 双方向コントラクトでは、セッション モードの SCT \(セキュリティ コンテキスト トークン\) は、セキュリティ バインド要素の下にあるバインディング スタックで インスタンスまたは インスタンスの作成がサポートされている場合に動作します。 + + 要求\/応答コントラクトでは、セッション モードの SCT は、セキュリティ バインド要素の下にあるバインディング スタックで 、または の各インスタンスの作成がサポートされている場合に動作します。 + + 一方向コントラクトでは、セッション モードの SCT は、セキュリティ バインド要素の下にあるバインディング スタックで 、または の各インスタンスの作成がサポートされている場合に動作します。 + +## 標準バインディングからの派生 + まったく新しいバインディング クラスを作成する代わりに、システムから提供される既存のバインディングの 1 つを拡張することができます。 前述の場合と同様、 メソッドと プロパティを上書きする必要があります。 + +## 参照 + + [カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/custom-authorization.md b/docs/framework/wcf/extending/custom-authorization.md new file mode 100644 index 00000000000..6e136edd3a7 --- /dev/null +++ b/docs/framework/wcf/extending/custom-authorization.md @@ -0,0 +1,44 @@ +--- +title: "カスタム承認 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4f90311a-2593-462e-9174-2f7ac78217b9 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# カスタム承認 +承認は、リソースとタスクへのアクセスを制御するプロセスです。このセクションのトピックでは、さまざまなクレームの種類や、ポリシーを作成して実装する方法について説明します。 + +## このセクションの内容 + [方法 : カスタム承認ポリシーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-authorization-policy.md) + カスタム ポリシーの作成方法について説明します。 + + [方法 : サービスで使用するカスタム承認マネージャーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md) + カスタム マネージャーの作成方法について説明します。 + + [方法 : カスタム クレームを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-claim.md) + カスタム クレームの作成方法について説明します。 + + [方法 : クレームを比較する](../../../../docs/framework/wcf/extending/how-to-compare-claims.md) + クレームを比較する方法について説明します。 + + [方法 : カスタム プリンシパル ID を作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-principal-identity.md) + を、カスタム承認ポリシーおよびカスタム プリンシパルと組み合わせて使用する場合のシナリオを説明します。 + +## 関連項目 + + +## 関連項目 + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) + + [セキュリティの拡張](../../../../docs/framework/wcf/extending/extending-security.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/custom-bindings.md b/docs/framework/wcf/extending/custom-bindings.md new file mode 100644 index 00000000000..ca5788d9916 --- /dev/null +++ b/docs/framework/wcf/extending/custom-bindings.md @@ -0,0 +1,91 @@ +--- +title: "カスタム バインディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "Windows Communication Foundation, 構成" + - "Windows Communication Foundation, エンドポイント" +ms.assetid: 58532b6d-4eea-4a4f-854f-a1c8c842564d +caps.latest.revision: 33 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 33 +--- +# カスタム バインディング +システムが提供するバインディングの中にサービスの要件を満たすものがない場合は、 クラスを使用できます。すべてのバインディングは、バインド要素の順序付き集合から作成されます。カスタム バインディングは、一連のシステム指定のバインド要素から作成したり、ユーザー定義のカスタム バインド要素を含めたりできます。カスタム バインド要素を使用すると、たとえば、新しいトランスポートまたはエンコーダーをサービス エンドポイントで使用できるようになります。実施例については、「[Custom Binding Samples](http://msdn.microsoft.com/ja-jp/657e8143-beb0-472d-9cfe-ed1a19c2ab08)」を参照してください。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md). + +## カスタム バインディングの構築 + カスタム バインディングは、特定の順序で "積み重ねられている" バインド要素のコレクションから コンストラクターを使用して作成します。 + +- 最上位にあるのは、トランザクションのフローを可能にするオプションの クラスです。 + +- その次にあるのは、WS\-ReliableMessaging 仕様で定義されているセッションおよび順序指定のメカニズムを提供する、オプションの クラスです。セッションは、SOAP 中継局およびトランスポート中継局を通過できます。 + +- その次には、承認、認証、保護、機密性などのセキュリティ機能を提供する、オプションの クラスがあります。 + +- その次には、二重通信をネイティブでサポートしないトランスポート プロトコル \(HTTP など\) を使用して双方向の二重通信を可能にする、オプションの クラスがあります。 + +- その次には、一方向通信を提供する、オプションの クラスがあります。 + +- その次にあるのは、オプションのストリーム セキュリティ バインド要素で、次のいずれかになります。 + + - + + - + +- その次にあるのは、必須のメッセージ エンコード バインド要素です。独自のメッセージ エンコーダーを使用するか、次の 3 つのメッセージ エンコーディング バインディングのいずれかを使用できます。 + + - + + - + + - + + 最下位には、必須のトランスポート要素があります。独自のトランスポートを使用することも、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] が提供する次のトランスポート バインド要素のいずれかを使用することもできます。 + +- + +- + +- + +- + +- + +- + +- + +- + + 各層のオプションの概要を次の表に示します。 + +|層|オプション|必須| +|-------|-----------|--------| +|トランザクション||×| +|信頼性||×| +|セキュリティ||×| +|エンコーディング|テキスト、バイナリ、MTOM \(Message Transmission Optimization Mechanism\)、カスタム|○| +|トランスポート|TCP、HTTP、HTTPS、名前付きパイプ \(IPC\)、ピアツーピア \(P2P\)、メッセージ キュー \(MSMQ\)、カスタム|○| + + さらに、独自のバインド要素を定義し、それを定義済みの層のいずれかの間に挿入できます。 + +## 参照 + [エンドポイントの作成の概要](../../../../docs/framework/wcf/endpoint-creation-overview.md) + [サービスとクライアントを構成するためのバインディングの使用](../../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) + [システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md) + [方法 : システム指定のバインディングをカスタマイズする](../../../../docs/framework/wcf/extending/how-to-customize-a-system-provided-binding.md) + [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) + [カスタム バインディング](../../../../docs/framework/wcf/samples/custom-binding.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/custom-credential-and-credential-validation.md b/docs/framework/wcf/extending/custom-credential-and-credential-validation.md new file mode 100644 index 00000000000..b433ad692aa --- /dev/null +++ b/docs/framework/wcf/extending/custom-credential-and-credential-validation.md @@ -0,0 +1,66 @@ +--- +title: "カスタム資格情報と資格情報の検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "資格情報の検証 [WCF]" + - "資格情報 [WCF]" + - "資格情報 [WCF], カスタム" + - "資格情報 [WCF], 検証" + - "カスタム資格情報 [WCF]" +ms.assetid: da831bec-e281-4d44-b343-437b5eef688e +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# カスタム資格情報と資格情報の検証 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のセキュリティは、サービスとクライアント間の資格情報の交換に基づきます。 セキュリティ シナリオの多くは、Windows \(Kerberos\)、ユーザー名とパスワード、証明書などの共通の資格情報の種類を使用して満たされます。 ただし、新しい種類の資格情報が必要な場合があります。このセクションのこのトピックでは、その新しい種類の処理方法と検証方法について説明します。 + +## このセクションの内容 + [方法 : カスタム証明書検証を使用するサービスを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md) + クラスを継承することで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の検証をカスタマイズする方法について説明します。 + + [チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md) + クラスと クラスを拡張して新しい資格情報の種類に対応する方法を示します。 これは、カスタム資格情報の種類の作成を実現するトピック シリーズの 1 番目です。 + + [方法 : カスタム セキュリティ トークン プロバイダーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md) + セキュリティ トークン プロバイダーを作成して新しい資格情報の種類を処理し、その資格情報の新しいトークンを返す方法を説明します。 これは、シリーズの 2 番目のトピックです。 + + [方法 : カスタム セキュリティ トークン認証システムを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md) + カスタム認証システムを作成して新しい資格情報の種類を認証する方法を説明します。 これは、シリーズの 3 番目のトピックです。 + +## 関連項目 + + + + + + + + + + + + + + + + +## 関連項目 + [認証](../../../../docs/framework/wcf/feature-details/authentication-in-wcf.md) + + [フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) + +## 参照 + [セキュリティ](../../../../docs/framework/wcf/feature-details/security.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/custom-encoders.md b/docs/framework/wcf/extending/custom-encoders.md new file mode 100644 index 00000000000..84f228bed5f --- /dev/null +++ b/docs/framework/wcf/extending/custom-encoders.md @@ -0,0 +1,107 @@ +--- +title: "カスタム エンコーダー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fa0e1d7f-af36-4bf4-aac9-cd4eab95bc4f +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# カスタム エンコーダー +このトピックでは、カスタム エンコーダーを作成する方法について説明します。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では *"バインディング"* を使用して、エンドポイントどうしがネットワーク経由でデータを転送する方法を指定します。 バインディングは、一連の *"バインド要素"* で構成されます。 バインディングには、セキュリティなどのオプションのプロトコル バインド要素、必須の*メッセージ エンコーダー*のバインド要素、および必須のトランスポートのバインド要素が含まれます。 メッセージ エンコーダーは、メッセージ エンコーディング バインド要素で表されます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に含まれるメッセージ エンコーダーは、バイナリ、MTOM \(Message Transmission Optimization Mechanism\)、およびテキストの 3 つです。 + + メッセージ エンコーディング バインド要素は、送信する をシリアル化してそれをトランスポートに渡すか、シリアル化された形式のメッセージをトランスポートから受信して、それをプロトコル層 \(ある場合\) またはアプリケーション \(プロトコル層がない場合\) に渡します。 + + メッセージ エンコーダーは、 インスタンスと物理メッセージ形式を相互に変換します。 エンコーダーは、チャネル スタックのトランスポート層の上に位置すると説明されていますが、トランスポート層の内部に存在します。 トランスポート \(HTTP など\) は、トランスポート標準の要件に従ってメッセージの書式設定を行います。 エンコーダー \(テキスト XML など\) は、単にメッセージのエンコードを行います。 + + 既存のクライアントまたはサーバーに接続する場合、特定のメッセージ エンコーディングを使用する選択ができない場合があります。 ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、それぞれが異なるメッセージ エンコーダーを使用する複数のエンドポイントからアクセスできるようにすることができます。 1 つのエンコーダーでサービスの対象ユーザー全体を網羅しない場合、複数のエンドポイントにサービスを公開することを検討します。 これによりクライアント アプリケーションはそのアプリケーションに最も適したエンドポイントを選択できます。 複数のエンドポイントを使用することにより、さまざまなメッセージ エンコーダーの利点を他のバインド要素と組み合わせることが可能になります。 + +## システム指定のエンコーダー + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、最も一般的なアプリケーション シナリオに合わせて設計されたシステム既定のバインディングがいくつか用意されています。 これらのバインディングは、それぞれトランスポート、メッセージ エンコーダー、その他のオプション \(セキュリティなど\) を組み合わせます。 このトピックでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に含まれる `Text`、`Binary`、`MTOM` メッセージ エンコーダーの拡張方法、つまり独自のカスタム エンコーダーの作成方法について説明します。 テキスト メッセージ エンコーダーは、通常の XML のエンコーディングに加えて、SOAP のエンコーディングもサポートします。 テキスト メッセージ エンコーダーの通常の XML エンコーディング モードは、テキスト ベースの SOAP エンコーディングと区別するために、POX \("Plain Old XML"\) エンコーダーと呼ばれます。 + + システム定義のバインディングにより提供されるバインド要素の組み合わせ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[トランスポートの選択](../../../../docs/framework/wcf/feature-details/choosing-a-transport.md)」の対応するセクションを参照してください。 + +## システム標準のエンコーダーの操作方法 + エンコーディングは、 からの派生クラスを使用してバインディングに追加します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、テキスト、バイナリ、および MTOM \(Message Transmission Optimization Mechanism\) のエンコーディングに対応した クラスから派生した次の種類のバインド要素が提供されます。 + +- : 相互運用性は最も高く、効率は最も低い、XML メッセージ用のエンコーダー。 Web サービスまたは Web サービス クライアントは、一般に、テキスト形式の XML を認識できます。 ただし、大きいブロックのバイナリ データをテキストとして転送するのは効率的ではありません。 + +- : バイナリベースの XML メッセージで使用される、文字エンコーディングおよびメッセージのバージョン管理を指定するバインド要素を表します。 これは最も効率的なエンコーディング オプションですが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントでしかサポートされないため、相互運用性は最も低くなります。 + +- : Message Transmission Optimization Mechanism \(MTOM\) エンコードを使用するメッセージの文字エンコードおよびメッセージ バージョン管理を指定するバインド要素を表します。 MTOM は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージでのバイナリ データの転送に有効なテクノロジです。 MTOM エンコーダーは、効率と相互運用性のバランスをとろうとします。 MTOM エンコーディングは、ほとんどの XML をテキスト形式で転送しますが、大きいサイズのバイナリ データ ブロックはテキストに変換せずにそのまま転送することによって最適化します。 + + バインド要素は、バイナリ、MTOM、またはテキストの を作成します。 ファクトリは、バイナリ、MTOM、またはテキストの を作成します。 通常、インスタンスは 1 つだけあります。 ただし、セッションを使用すると、異なるエンコーダーを各セッションに提供できます。 バイナリ エンコーダーでは、これを利用して動的ディクショナリ \(XML インフラストラクチャを参照\) を調整します。 + + メソッドと メソッドは、エンコーダーのコアです。 このメソッドは、ストリームまたは 配列からのメッセージの読み取りに対応します。 バイト配列は、トランスポートをバッファー モードで操作している場合に使用されます。 メッセージはストリームに常に書き込まれます。 トランスポートでメッセージをバッファーする必要がある場合は、バッファリングを行うストリームが提供されます。 + + 残りのメンバーは、サポート コンテンツ、メディア タイプ、および を処理します。 トランスポートは、このエンコーダー メソッドを呼び出して、受信メッセージがデコード可能かどうかをテストするか、または送信メッセージがこのエンコーダーに対して有効かどうかを決定します。 + + 3 つのそれぞれのエンコーダー実装は、特定のエンコーディングに関連するプロパティを追加し、完全に構成可能です。 また、エンコーダーは、安全な既定値を持つリーダーのクォータも公開しています。 クォータの詳細については、XML インフラストラクチャを参照してください。 + +## システム標準のエンコーダーの機能 + システム標準のエンコーダーは多くの機能を提供します。 + +### Pooling + 各エンコーダー実装は、可能な限りプールを試みます。 マネージ コードのパフォーマンスを向上するには、割り当てを減らすことが重要です。 このプールを実現するには、実装で `SynchronizedPool` クラスを使用します。 C\# ファイルには、このクラスで使用する追加の最適化に関する記述を含めます。 + + メッセージごとに新しい `XmlDictionaryReader` および `XmlDictionaryWriter` インスタンスを割り当てるのを避けるため、これらのインスタンスをプールして再初期化します。 リーダーについては、`Close()` の呼び出し時に `OnClose` コールバックでリーダーが再利用されます。 また、エンコーダーでは、メッセージを作成するときに使用するいくつかのメッセージ状態オブジェクトが再利用されます。 このプールのサイズは、 から派生した 3 つの各クラスの `MaxReadPoolSize` プロパティと `MaxWritePoolSize` プロパティによって構成可能です。 + +### バイナリ エンコーディング + バイナリ エンコーディングでセッションを使用する場合、動的ディクショナリの文字列をメッセージの受信者と通信する必要があります。 これを行うには、メッセージのプレフィックスに動的ディクショナリの文字列を指定します。 受信側では、その文字列を取り除いて、セッションに追加し、メッセージ処理を行います。 ディクショナリの文字列を正しく渡すには、トランスポートをバッファーする必要があります。 + + 文字列は、内部 `AddSessionInformationToMessage` メソッドによってメッセージに追加されます。 文字列は、メッセージの先頭に UTF\-8 として追加され、その長さがプレフィックスに指定されます。 次にディクショナリ ヘッダー全体のプレフィックスにそのデータ長が指定されます。 内部 `ExtractSessionInformationFromMessage` メソッドにより逆操作が実行されます。 + + 動的ディクショナリ キーの処理に加え、バッファーされセッションの多いメッセージが独自の方法で受信されます。 ドキュメントでリーダーを作成して処理する代わりに、バイナリ エンコーダーは、内部 `MessagePatterns` クラスを使用してバイナリ ストリームを分解します。 つまり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で作成されたほとんどのメッセージには、特定の順序で表された特定セットのヘッダーがあります。 想定を基にしたパターン システムによりメッセージは分割されます。 成功した場合は、XML の解析を行わずに オブジェクトを初期化します。 成功しなかった場合は、標準の方法に戻ります。 + +### MTOM エンコーディング + クラスには、 という追加の構成プロパティがあります。 これには、メッセージ読み取り中にバッファーできるデータ量の上限が設けられています。 すべての MIME パートを 1 つのメッセージに再アセンブルするために、XML 情報セット \(Infoset\) または他の MIME パートをバッファーすることが必要な場合もあります。 + + HTTP を正しく操作するために、内部 MTOM メッセージ エンコーダーのクラスでは、`GetContentType` \(内部\) や `WriteMessage` \(パブリックで、オーバーライド可能\) の内部 API がいくつか用意されています。 HTTP ヘッダーの値を MIME ヘッダーの値と一致させるには、多くの通信を行う必要があります。 + + 内部的に、MTOM メッセージ エンコーダーは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のテキスト リーダーを使用するので、テキスト エンコーダーに似ています。 主な違いは、Base\-64 エンコーディングに変換せずにメッセージ バイトに埋め込むことで、大きいサイズのバイナリ \(バイナリ ラージ オブジェクト \(BLOB\) と呼びます\) を最適化する点です。 代わりに、この BLOB は抽出され、MIME 添付として参照されます。 + +## 独自のエンコーダーの作成 + 独自のカスタム メッセージ エンコーダーを実装するには、次の抽象基本クラスのカスタム実装を提供する必要があります。 + +- + +- + +- + + メッセージのメモリ内表現からストリームに書き込むことのできる表現への変換は、 クラスにカプセル化されており、このクラスは、特定の種類の XML エンコーディングをサポートする XML リーダーおよび XML ライターに対するファクトリとして機能します。 + +- オーバーライドを必要とする、このクラスの主要なメソッドを次に示します。 + +- オブジェクトを受け取り、それを オブジェクトに書き込みます。 + +- オブジェクトと最大ヘッダー サイズを受け取り、 オブジェクトを返します。 + + これらのメソッドに記述するコードは、標準トランスポート プロトコルとカスタマイズしたエンコーディングの間の変換処理です。 + + 次に、カスタム エンコーダーを作成するファクトリ クラスをコーディングする必要があります。 をオーバーライドして、独自のカスタム のインスタンスを返します。 + + 次に、 メソッドをオーバーライドしてこのファクトリのインスタンスを返すようにすることで、サービスまたはクライアントの構成に使用されるバインド要素スタックにカスタム を接続します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、この処理を説明する 2 つの例がサンプル コードと共に用意されています。「[カスタム メッセージ エンコーダー : カスタム テキスト エンコーダー](../../../../docs/framework/wcf/samples/custom-message-encoder-custom-text-encoder.md)」および「[カスタム メッセージ エンコーダー : 圧縮エンコーダー](../../../../docs/framework/wcf/samples/custom-message-encoder-compression-encoder.md)」を参照してください。 + +## 参照 + + + + [データ転送のアーキテクチャの概要](../../../../docs/framework/wcf/feature-details/data-transfer-architectural-overview.md) + [メッセージ エンコーダーを選択する](../../../../docs/framework/wcf/feature-details/choosing-a-message-encoder.md) + [トランスポートの選択](../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/custom-message-formatters.md b/docs/framework/wcf/extending/custom-message-formatters.md new file mode 100644 index 00000000000..49784d692f0 --- /dev/null +++ b/docs/framework/wcf/extending/custom-message-formatters.md @@ -0,0 +1,45 @@ +--- +title: "カスタム メッセージ フォーマッタ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c07435f3-5214-4791-8961-2c2b61306d71 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# カスタム メッセージ フォーマッタ +メッセージの内容は、XML 形式で表されることが多く、この形式は通常、アプリケーションにとって処理しやすい形式ではありません。 アプリケーションでは、オブジェクトのプロパティを取得および設定することによってオブジェクトを操作します。 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、*データ コントラクト*を使用して、 オブジェクトをアプリケーションで処理しやすいオブジェクトに変換します。 このプロセスは、シリアル化および逆シリアル化と呼ばれます。 これと同じ用語が、トランスポート層によって行われるメッセージ ワイヤ形式へのシリアル化とその形式からの逆シリアル化を説明するときに使用されますが、これは関連のないプロセスです。 + + データ コントラクトによって実現できないメッセージとオブジェクト間の特殊な変換を実装する必要がある場合、カスタム メッセージ フォーマッタを使用できます。 これを使用するには、クライアントまたはサービス上で特定のコントラクト操作の実行動作を変更または拡張します。 + +## クライアントのカスタム メッセージ フォーマッタ + インターフェイスは、メッセージからオブジェクトへの変換およびオブジェクトからクライアント アプリケーション用のメッセージへの変換を制御するためのメソッドを定義します。 + + このインターフェイスを実装する必要があります。 まず、メッセージを逆シリアル化するための メソッドをオーバーライドします。 このメソッドは、受信メッセージを受信した後でそのメッセージがクライアント操作にディスパッチされる前に呼び出されます。 + + 次に、オブジェクトをシリアル化するための メソッドをオーバーライドします。 このメソッドは、送信メッセージを送信する前に呼び出されます。 + + カスタム フォーマッタをサービス アプリケーションに挿入するには、操作の動作を使用して、 オブジェクトを プロパティに割り当てます。 動作の詳細については、「[動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md)」を参照してください。 + +## サービスのカスタム メッセージ フォーマッタ + インターフェイスは、 オブジェクトを操作用のパラメーターに変換し、これらのパラメーターをサービス アプリケーション用の オブジェクトに変換するためのメソッドを定義します。 + + このインターフェイスを実装する必要があります。 まず、メッセージを逆シリアル化するための メソッドをオーバーライドします。 このメソッドは、受信メッセージを受信した後でそのメッセージがクライアント操作にディスパッチされる前に呼び出されます。 + + 次に、オブジェクトをシリアル化するための メソッドをオーバーライドします。 このメソッドは、送信メッセージを送信する前に呼び出されます。 + + カスタム フォーマッタをサービス アプリケーションに挿入するには、操作の動作を使用して、 オブジェクトを プロパティに割り当てます。 動作の詳細については、「[動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md)」を参照してください。 + +## 参照 + + + [動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/custom-stream-upgrades.md b/docs/framework/wcf/extending/custom-stream-upgrades.md new file mode 100644 index 00000000000..0eba26fd921 --- /dev/null +++ b/docs/framework/wcf/extending/custom-stream-upgrades.md @@ -0,0 +1,111 @@ +--- +title: "カスタム ストリームのアップグレード | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e3da85c8-57f3-4e32-a4cb-50123f30fea6 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# カスタム ストリームのアップグレード +TCP、名前付きパイプなど、ストリーム指向のデータ伝送機構 \(トランスポート\) が扱うのは、クライアントとサーバーの間を流れる、連続的なバイト ストリームです。 このストリームを実際に作り出すのは オブジェクトです。 ストリーム アップグレードでは、クライアントは、オプションのプロトコル階層をチャネル スタックに追加する場合に、相手側の通信チャネルにも同じことをするよう要求します。 ストリーム アップグレードは、 オブジェクトをアップグレードされたものに置き換える形で実施します。 + + たとえば、トランスポート ストリームのすぐ上に圧縮ストリームを作成することができます。 この場合、元のトランスポート を、それを圧縮 でラップしたものに置き換えます。 + + オブジェクトを順にラップしていくことにより、ストリーム アップグレードを多重に適用できます。 + +## ストリーム アップグレードの動作 + ストリーム アップグレード処理には 4 つのコンポーネントが関与します。 + +1. *イニシエーター*は、必要な処理を起動するコンポーネントです。実行時に、接続先に対して、同じようにチャネル トランスポート層をアップグレードするよう要求する役割があります。 + +2. *アクセプタ*は実際にアップグレードを行うコンポーネントです。接続先からのアップグレード要求を受け取り、可能であれば実際にアップグレードする役割があります。 + +3. *プロバイダー*は、クライアント上に*イニシエーター*、サーバー上に*アクセプタ*を生成するコンポーネントです。 + +4. *バインド要素*は、サービスやクライアントのバインディングに追加され、実行時にプロバイダーを生成するコンポーネントです。 + + なお、多重にアップグレードを適用する場合、イニシエーターとアクセプタはステート マシンをカプセル化して、適切な適用順序になるようにします。 + +## ストリーム アップグレードの実装方法 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、次のコンポーネントを実装するために、4 つの `abstract` クラスがあります。 + +- + +- + +- + +- + + カスタム ストリーム アップグレードを実装する手順を以下に示します。 これは、クライアント側、サーバー側双方に、ごく単純なストリーム アップグレード処理を組み込む場合の手順です。 + +1. を実装するクラスを作成します。 + + 1. メソッドをオーバーライドして、ストリームを入力すると、それをアップグレードしたストリームが返されるようにします。 これは同期型のメソッドですが、これに似た非同期型のメソッドもあります。 + + 2. メソッドをオーバーライドして、追加のアップグレードがないか確認するようにします。 + +2. を実装するクラスを作成します。 + + 1. メソッドをオーバーライドして、ストリームを入力すると、それをアップグレードしたストリームが返されるようにします。 これは同期型のメソッドですが、これに似た非同期型のメソッドもあります。 + + 2. メソッドをオーバーライドして、アップグレード処理中のこの時点で、このアップグレード アクセプタがアップグレード要求に応じることができるかどうかを判断するようにします。 + +3. を実装するクラスを作成します。 メソッドおよび メソッドをオーバーライドして、手順 1. および 2. で定義したアクセプタとイニシエーターのインスタンスをそれぞれ返すようにします。 + +4. を実装するクラスを作成します。 + + 1. クライアント側の メソッドとサービス側の メソッドをオーバーライドします。 + + 2. クライアント側の メソッドとサービス側の メソッドをオーバーライドして、アップグレード バインド要素を に追加するようにします。 + +5. サーバー側とクライアント側のバインディングに、新しいストリーム アップグレード バインド要素を追加します。 + +## セキュリティ アップグレード + ストリーム アップグレードの特別な場合として、セキュリティ アップグレードがあります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には最初から、セキュリティに関連するストリーム アップグレードを実装するためのバインド要素が 2 つ組み込まれています。 トランスポート レベルのセキュリティ構成は、 および にカプセル化されており、これらの要素を構成して、カスタム バインディングに追加することができます。 この 2 つのバインド要素は、クライアント側およびサーバー側のストリーム アップグレード プロバイダーを構築する クラスを拡張したものです。 これらのバインド要素には、セキュリティ ストリーム アップグレード専用のプロバイダー クラスを作成するメソッドが定義されています。これらのメソッドは `public` ではないので、いずれの場合もバインド要素をバインディングに追加するだけでセキュリティ アップグレードが可能です。 + + 上記の 2 つのバインド要素では対応できないセキュリティ上の要求に備え、既述のイニシエーター、アクセプタ、プロバイダーの各基底クラスから派生した `abstract` クラスが 3 つ定義されています。 + +1. + +2. + +3. + + セキュリティ ストリーム アップグレードを実装する手順も、以上 3 つのクラスから派生することを除き、一般のストリーム アップグレードと同様です。 これらのクラスには実行時にセキュリティ情報をやり取りするためのプロパティが追加されているので、これをオーバーライドしてください。 + +## 多重アップグレード + 追加のアップグレード要求を作成するには、前述の手順を繰り返して、追加の およびバインド要素の拡張を作成し、 これをバインディングに追加します。 各バインド要素は、バインディングに追加した順に処理されます。 各アップグレード プロバイダーは、 および で、既存のアップグレード バインディング パラメーターに、どのように自分自身を積み重ねるかを指定できます。 次に、既存のアップグレード バインディング パラメーターを、新しい複合アップグレード バインディング パラメーターに置き換えます。 + + あるいは、単一のアップグレード プロバイダーで、多重のアップグレードに対応することも可能です。 たとえば、セキュリティと圧縮の両方に対応するカスタム ストリーム アップグレード プロバイダーを実装できます。 次の手順を実行します。 + +1. のサブクラスとして、イニシエーターおよびアクセプタを生成するプロバイダー クラスを作成します。 + +2. のサブクラスを作成し、 メソッドをオーバーライドして、圧縮ストリーム、セキュリティ ストリームの順にコンテンツ タイプを返すようにします。 + +3. のサブクラスを作成し、 メソッドをオーバーライドして、独自のコンテンツ タイプに応じた処理をするようにします。 + +4. ストリームは、 および をそれぞれ呼び出した後にアップグレードされます。 + +## 参照 + + + + + + + + + \ No newline at end of file diff --git a/docs/framework/wcf/extending/custom-tokens.md b/docs/framework/wcf/extending/custom-tokens.md new file mode 100644 index 00000000000..2815f2b5584 --- /dev/null +++ b/docs/framework/wcf/extending/custom-tokens.md @@ -0,0 +1,26 @@ +--- +title: "カスタム トークン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF], カスタム トークン" +ms.assetid: 8b2dbe29-dec2-4652-8e34-fb21bc1437b5 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# カスタム トークン +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、資格情報として、X.509 証明書、セキュリティ コンテキスト トークン、Kerberos チケット、およびユーザー名トークンをネイティブでサポートしますが、独自のカスタム資格情報を使用することもできます。 + +## このセクションの内容 + [方法 : カスタム トークンを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-token.md) + クラスを使用してカスタム セキュリティ トークンを作成する方法と、作成したトークンをカスタム セキュリティ トークン プロバイダーおよび認証システムと統合する方法について説明します。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/data-contract-surrogates.md b/docs/framework/wcf/extending/data-contract-surrogates.md new file mode 100644 index 00000000000..73149ecf4a3 --- /dev/null +++ b/docs/framework/wcf/extending/data-contract-surrogates.md @@ -0,0 +1,207 @@ +--- +title: "データ コントラクト サロゲート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ コントラクト [WCF], サロゲート" +ms.assetid: 8c31134c-46c5-4ed7-94af-bab0ac0dfce5 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# データ コントラクト サロゲート +データ コントラクト *サロゲート*は、データ コントラクト モデルを基盤に構築された高度な機能です。この機能は、型をシリアル化または逆シリアル化する方法や、型をメタデータに投影する方法をユーザーが変更する場合に、型のカスタマイズと置換に使用することを目的としています。サロゲートを使用できるのは、型のデータ コントラクトが指定されていない場合、フィールドやプロパティが 属性でマークされていない場合、またはユーザーがスキーマのバリエーションを動的に作成することを希望している場合などです。 + + を使用して .NET Framework から XML などの適切な形式に変換するときに、データ コントラクト サロゲートを使用してシリアル化と逆シリアル化を行います。また、XML スキーマ ドキュメント \(XSD\) などのメタデータ表現を生成するときに、データ コントラクト サロゲートを使用して、型のエクスポートするメタデータを変更できます。インポート時には、メタデータからコードが作成されますが、この場合にサロゲートを使用すると、生成されるコードもカスタマイズできます。 + +## サロゲートのしくみ + サロゲートは、ある型 \("元の" 型\) を別の型 \("サロゲートされた" 型\) に割り当てることによって機能します。元の型 `Inventory` と新しいサロゲート型 `InventorySurrogated` の例を以下に示します。`Inventory` 型はシリアル化できませんが、`InventorySurrogated` 型は以下のようになります。 + + [!code-csharp[C_IDataContractSurrogate#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_idatacontractsurrogate/cs/source.cs#1)] + + このクラスにはデータ コントラクトが定義されていないため、このクラスをデータ コントラクトを持つサロゲート クラスに変換します。サロゲートされたクラスの例を次に示します。 + + [!code-csharp[C_IDataContractSurrogate#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_idatacontractsurrogate/cs/source.cs#2)] + +## IDataContractSurrogate の実装 + データ コントラクト サロゲートを使用するには、 インターフェイスを実装します。 + + 考えられる実装での の各メソッドの概要を以下に示します。 + +### GetDataContractType + メソッドは、ある型を別の型に割り当てます。これは、シリアル化、逆シリアル化、インポート、およびエクスポートに必須のメソッドです。 + + 最初の作業として、他の型に割り当てる型を定義します。次に例を示します。 + + [!code-csharp[C_IDataContractSurrogate#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_idatacontractsurrogate/cs/source.cs#3)] + +- シリアル化では、後で メソッドを呼び出して、元のインスタンスをサロゲートされたインスタンスに変換する際に、このメソッドによって返されたマッピングが使用されます。 + +- 逆シリアル化では、サロゲート型のインスタンスに逆シリアル化する際に、シリアライザーはこのメソッドによって返されたマッピングを使用します。その後、 が呼び出されて、サロゲートされたインスタンスが元の型のインスタンスに変換されます。 + +- エクスポートでは、メタデータの生成に使用するデータ コントラクトを取得する際に、このメソッドによって返されたサロゲート型が反映されます。 + +- インポートでは、最初の型がサロゲート型に変更されます。このサロゲート型は、参照のサポートなどの目的で使用するデータ コントラクトを取得する際に反映されます。 + + パラメーターは、シリアル化、逆シリアル化、インポート、またはエクスポートするオブジェクトの型です。サロゲートが型を処理しない場合、 メソッドは入力の型を返す必要があります。それ以外の場合は、サロゲートされた適切な型を返します。複数のサロゲート型が存在する場合は、このメソッドで多数のマッピングを定義できます。 + + メソッドは、組み込みのデータ コントラクト プリミティブ \( など\) に対しては呼び出されません。その他の型 \(配列、ユーザー定義型、その他のデータ構造体など\) については、このメソッドは各型に対して呼び出されます。 + + 前の例では、このメソッドは `type` パラメーターと `Inventory` が比較可能かどうかをチェックします。比較可能な場合は、`InventorySurrogated` に割り当てます。シリアル化、逆シリアル化、インポート スキーマ、またはエクスポート スキーマを呼び出すときは、常にこの関数が最初に呼び出されて、型間のマッピングが確認されます。 + +### GetObjectToSerialize Method + メソッドは、元の型のインスタンスをサロゲートされた型のインスタンスに変換します。これは、シリアル化に必須のメソッドです。 + + 次の手順では、 メソッドを実装して、物理データを元のインスタンスからサロゲートに割り当てる方法を定義します。次に例を示します。 + + [!code-csharp[C_IDataContractSurrogate#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_idatacontractsurrogate/cs/source.cs#4)] + + メソッドは、オブジェクトをシリアル化するときに呼び出されます。このメソッドでは、元の型からサロゲートされた型のフィールドにデータを転送します。フィールドは、サロゲート フィールドに直接割り当てることができます。また、元のデータの操作をサロゲートに格納することもできます。このメソッドは、フィールドを直接割り当てる場合、サロゲートされたフィールドに格納されたデータに対して操作を実行する場合、サロゲートされたフィールドに元の型の XML を格納する場合などに使用できます。 + + `targetType` パラメーターは、メンバーの宣言された型を指します。このパラメーターは、 メソッドによって返されたサロゲートされた型です。シリアライザーは、返されるオブジェクトがこの型に割り当て可能であることを強制するわけではありません。`obj` パラメーターはシリアル化するオブジェクトであり、必要に応じてサロゲートに変換されます。サロゲートがオブジェクトを処理しない場合、このメソッドは入力オブジェクトを返す必要があります。それ以外の場合は、新しいサロゲート オブジェクトが返されます。オブジェクトが null の場合、サロゲートは呼び出されません。さまざまなインスタンスの多数のサロゲートのマッピングをこのメソッドで定義できます。 + + の作成時に、オブジェクト参照を保持するように指定できます \([!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][シリアル化と逆シリアル化](../../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md).\)これを行うには、コンストラクターの `preserveObjectReferences` パラメーターを `true` に設定します。この場合、サロゲートはオブジェクトに対して 1 回だけ呼び出されます。これは、以降のシリアル化では参照をストリームに書き込むだけだからです。`preserveObjectReferences` を `false` に設定すると、インスタンスが発生するたびにサロゲートが呼び出されます。 + + シリアル化されたインスタンスの型が宣言された型と異なる場合、インスタンスをもう一方の側で逆シリアル化できるように、型情報 \(`xsi:type` など\) がストリームに書き込まれます。このプロセスは、オブジェクトがサロゲートされているかどうかに関係なく発生します。 + + 前述の例では、`Inventory` インスタンスのデータが `InventorySurrogated` のデータに変換されます。オブジェクトの型がチェックされ、サロゲートされた型に変換するために必要な処理が実行されます。この場合、`Inventory` クラスの各フィールドは、`InventorySurrogated` クラスのフィールドに直接コピーされます。 + +### GetDeserializedObject Method + メソッドは、サロゲートされた型のインスタンスを元の型のインスタンスに変換します。これは、逆シリアル化に必須のメソッドです。 + + 次の作業として、サロゲート インスタンスから元のインスタンスに物理データを割り当てる方法を定義します。次に例を示します。 + + [!code-csharp[C_IDataContractSurrogate#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_idatacontractsurrogate/cs/source.cs#5)] + + このメソッドが呼び出されるのは、オブジェクトの逆シリアル化中だけです。このメソッドは、サロゲート型から元の型に戻す逆シリアル化に必要な逆方向のデータ マッピングを行います。`GetObjectToSerialize` メソッドと同様に、フィールド データを直接交換する場合、データに対して操作を実行する場合、XML データを格納する場合などに使用できます。逆シリアル化するときには、データ変換時の操作の結果として、元のデータから正確なデータ値を必ずしも取得できるとは限りません。 + + `targetType` パラメーターは、メンバーの宣言された型を指します。このパラメーターは、`GetDataContractType` メソッドによって返されたサロゲートされた型です。`obj` パラメーターは、逆シリアル化されたオブジェクトを参照します。オブジェクトがサロゲートされている場合、オブジェクトを変換して元の型に戻すことができます。サロゲートがオブジェクトを処理しない場合、このメソッドは入力オブジェクトを返します。それ以外の場合は、変換が完了すると、逆シリアル化されたオブジェクトが返されます。複数のサロゲート型が存在する場合、各型とその変換を示すことにより、サロゲートからそれぞれのプライマリ型へのデータ変換を提供できます。 + + オブジェクトを返す場合、このサロゲートによって返されたオブジェクトで内部オブジェクト テーブルが更新されます。インスタンスへの以降の参照では、このオブジェクト テーブルからサロゲートされたインスタンスが取得されます。 + + 前の例では、`InventorySurrogated` 型のオブジェクトが最初の `Inventory` 型に変換されます。この場合、データは `InventorySurrogated` から `Inventory` の対応するフィールドに直接転送されます。データ操作は発生しないため、各メンバー フィールドにはシリアル化前と同じ値が格納されます。 + +### GetCustomDataToExport Method + スキーマをエクスポートする場合、 メソッドは省略可能です。このメソッドは、エクスポートするスキーマに追加データやヒントを挿入するために使用します。追加データは、メンバー レベルまたは型レベルで挿入できます。次に例を示します。 + + [!code-csharp[C_IDataContractSurrogate#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_idatacontractsurrogate/cs/source.cs#6)] + + このメソッド \(2 つのオーバーロードを持ちます\) を使用すると、メンバー レベルまたは型レベルで、追加情報をメタデータに含めることができます。メンバーが public と private のどちらであるかに関するヒントや、スキーマのエクスポートとインポート全体を通じて保持されるコメントを含めることができます。このメソッドを使用しない場合、このような情報は失われます。このメソッドは、メンバーまたは型の挿入や削除を行うのではなく、メンバー レベルまたは型レベルでスキーマに付加的なデータを追加します。 + + このメソッドのオーバーロードでは、`Type` \(`clrtype` パラメーター\) または \(`memberInfo` パラメーター\) を取得できます。2 番目のパラメーターは、常に `Type` \(`dataContractType` パラメーター\) です。このメソッドは、サロゲートされた `dataContractType` 型のすべてのメンバーと型に対して呼び出されます。 + + どちらのオーバーロードでも、`null` またはシリアル化可能なオブジェクトを返す必要があります。null 以外のオブジェクトは、エクスポートするスキーマに注釈としてシリアル化されます。`Type` オーバーロードでは、スキーマにエクスポートされる各型は、`dataContractType` パラメーターのサロゲートされた型と共に、最初のパラメーターでこのメソッドに送信されます。`MemberInfo` オーバーロードでは、スキーマにエクスポートされる各メンバーが、2 番目のパラメーターのサロゲートされた型と共に `memberInfo` パラメーターとして情報を送信します。 + +#### GetCustomDataToExport Method \(Type, Type\) + メソッドは、すべての型定義のスキーマのエクスポート中に呼び出されます。このメソッドは、エクスポート時にスキーマ内の型に情報を追加します。スキーマに含める必要のある追加データがあるかどうかを確認するために、定義済みの各型がこのメソッドに送信されます。 + +#### GetCustomDataToExport Method \(MemberInfo, Type\) + は、エクスポートする型のすべてのメンバーのエクスポート中に呼び出されます。この関数を使用すると、エクスポート時にスキーマに含めるメンバーに関するコメントをカスタマイズできます。スキーマに付加的なデータを追加する必要があるかどうかをチェックするために、クラスの各メンバーの情報がこのメソッドに送信されます。 + + 前述の例では、サロゲートの各メンバーの `dataContractType` が検索されます。検索後、各フィールドの適切なアクセス修飾子が返されます。このカスタマイズを行わない場合、アクセス修飾子の既定値は public です。したがって、実際のアクセス制限には関係なく、エクスポートされたスキーマを使用して生成されるコードでは、すべてのメンバーが public として定義されます。この実装を使用しない場合、`numpens` メンバーは、サロゲートで private として定義されている場合でも、エクスポートされたスキーマでは public になります。このメソッドを使用することにより、エクスポートされるスキーマで、アクセス修飾子を private として生成できます。 + +### GetReferencedTypeOnImport Method + このメソッドは、サロゲートの を元の型に割り当てます。スキーマのインポートでは、このメソッドは省略可能です。 + + スキーマをインポートし、そのコードを生成するサロゲートを作成したら、次の作業として、元の型に対してサロゲート インスタンスの型を定義します。 + + 生成されるコードで既存のユーザー型を参照する必要がある場合は、 メソッドを実装してこれを行います。 + + スキーマをインポートするときに、サロゲートされたデータ コントラクトを型に割り当てるために、すべての型宣言に対してこのメソッドが呼び出されます。`typeName` および `typeNamespace` の各文字列パラメーターでは、サロゲートされた型の名前と名前空間が定義されます。 の戻り値は、新しい型を生成する必要があるかどうかを判断するために使用されます。このメソッドは、有効な型または null のいずれかを返す必要があります。有効な型を返す場合、返される型は生成されるコード内で参照される型として使用されます。null を返す場合は、型が参照されることはないため、新しい型を作成する必要があります。複数のサロゲートが存在する場合は、各サロゲート型から最初の型へのマッピングを実行できます。 + + `customData` パラメーターは、 から最初に返されたオブジェクトです。この `customData` は、サロゲート作成者が、コードを生成するためにインポート時に使用するメタデータに追加情報やヒントを挿入する場合に使用します。 + +### ProcessImportedType メソッド + メソッドは、スキーマのインポートから作成された型をカスタマイズします。このメソッドは省略可能です。 + + スキーマをインポートするときに、このメソッドを使用すると、インポートする型とコンパイルの情報をカスタマイズできます。次に例を示します。 + + [!code-csharp[C_IDataContractSurrogate#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_idatacontractsurrogate/cs/source.cs#7)] + + インポート中に、このメソッドは生成されるすべての型に対して呼び出されます。指定した を変更するか、 を変更します。これには、`CodeTypeDeclaration` の名前、メンバー、属性、および他のさまざまなプロパティの変更が含まれます。`CodeCompileUnit` を処理することにより、ディレクティブ、名前空間、参照アセンブリ、および他のいくつかの側面を変更できます。 + + `CodeTypeDeclaration` パラメーターには、DOM コードの型宣言が含まれます。`CodeCompileUnit` パラメーターでは、コードの処理に関する変更を行うことができます。`null` を返すと、型宣言が破棄されます。`CodeTypeDeclaration` を返すと、変更が保持されます。 + + メタデータのエクスポート時にカスタム データを挿入した場合は、インポート時にこのデータをユーザーに提供して、データを使用できるようにする必要があります。このカスタム データは、プログラミング モデルのヒントやその他のコメントに使用できます。各 `CodeTypeDeclaration` と インスタンスには、`IDataContractSurrogate` 型にキャストされる プロパティとしてカスタム データが含まれます。 + + 前述の例では、インポートするスキーマに対して変更が行われています。コードでは、サロゲートを使用して元の型の private メンバーを保持しています。スキーマをインポートするときの既定のアクセス修飾子は `public` です。したがって、この例のように変更しない限り、サロゲート スキーマのすべてのメンバーは public になります。エクスポート中に、どのメンバーが private であるかに関するカスタム データがメタデータに挿入されます。この例では、カスタム データを調べ、アクセス修飾子が private かどうかをチェックした後、属性を設定することで適切なメンバーを private に変更しています。このカスタマイズを行わない場合、`numpens` メンバーは、private ではなく public として定義されます。 + +### GetKnownCustomDataTypes メソッド + このメソッドは、スキーマから定義済みのカスタム データ型を取得します。スキーマのインポートでは、このメソッドは省略可能です。 + + このメソッドは、スキーマのエクスポートとインポートの開始時に呼び出されます。このメソッドは、エクスポートまたはインポートするスキーマで使用されるカスタム データ型を返します。メソッドには、型のコレクションである \(`customDataTypes` パラメーター\) が渡されます。このメソッドでは、既知の型をこのコレクションに追加する必要があります。既知のカスタム データ型は、 を使用したカスタム データのシリアル化と逆シリアル化を可能にするために必要となります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md). + +## サロゲートの実装 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でデータ コントラクト サロゲートを使用するには、いくつかの特別な手順に従う必要があります。 + +### シリアル化と逆シリアル化にサロゲートを使用するには + サロゲートを使用してデータのシリアル化と逆シリアル化を実行するには、 を使用します。 は、 によって作成されます。サロゲートも指定する必要があります。 + +##### シリアル化と逆シリアル化を実装するには + +1. サービスの のインスタンスを作成します。この手順の詳細については、「[基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md)」を参照してください。 + +2. 指定したサービス ホストの各 について、 を検索します。 + +3. 操作の動作を検索して、 のインスタンスが見つかるかどうかを確認します。 + +4. が見つかった場合、 プロパティをサロゲートの新しいインスタンスに設定します。 が見つからなかった場合は、新しいインスタンスを作成し、新しい動作の メンバーをサロゲートの新しいインスタンスに設定します。 + +5. 最後に、次の例に示すように、この新しい動作を現在の操作の動作に追加します。 + + [!code-csharp[C_IDataContractSurrogate#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_idatacontractsurrogate/cs/source.cs#8)] + +### メタデータのインポートにサロゲートを使用するには + WSDL や XSD などのメタデータをインポートしてクライアント側のコードを生成する場合、XSD スキーマからコードを生成するコンポーネント \(\) にサロゲートを追加する必要があります。これを行うには、メタデータをインポートする際に使用する を直接変更します。 + +##### メタデータのインポートに使用するサロゲートを実装するには + +1. クラスを使用して、メタデータをインポートします。 + +2. メソッドを使用して、 が定義されているかどうかをチェックします。 + +3. メソッドが `false` を返した場合、新しい を作成し、 プロパティを クラスの新しいインスタンスに設定します。それ以外の場合は、 メソッドの `out` パラメーターによって返されたインポーターを使用します。 + +4. が定義されていない場合は、このプロパティを クラスの新しいインスタンスとして設定します。 + +5. プロパティを、サロゲートの新しいインスタンスに設定します。 + +6. クラスから継承した プロパティによって返されたコレクションに、 を追加します。 + +7. メソッドを使用して、スキーマ内のすべてのデータ コントラクトをインポートします。この最後の手順で、サロゲートを呼び出すことによって読み込まれたスキーマからコードが生成されます。 + + [!code-csharp[C_IDataContractSurrogate#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_idatacontractsurrogate/cs/source.cs#9)] + +### メタデータのエクスポートにサロゲートを使用するには + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] からサービスのメタデータをエクスポートする場合、既定では WSDL と XSD スキーマを生成する必要があります。データ コントラクト型の XSD スキーマを生成するコンポーネント \(\) に、サロゲートを追加する必要があります。これを行うには、 を実装する動作を使用して を変更するか、メタデータをエクスポートする際に使用する を直接変更します。 + +##### メタデータのエクスポートにサロゲートを使用するには + +1. 新しい を作成するか、 メソッドに渡された `wsdlExporter` パラメーターを使用します。 + +2. 関数を使用して、 が定義されているかどうかをチェックします。 + +3. が `false` を返した場合、 から生成された XML スキーマを使用して新しい を作成し、 プロパティによって返されたコレクションに追加します。それ以外の場合は、 メソッドの `out` パラメーターによって返されたエクスポーターを使用します。 + +4. が定義されていない場合は、 プロパティを クラスの新しいインスタンスに設定します。 + +5. プロパティを、サロゲートの新しいインスタンスに設定します。メタデータをエクスポートするための以降の手順を変更する必要はありません。 + + [!code-csharp[C_IDataContractSurrogate#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_idatacontractsurrogate/cs/source.cs#10)] + +## 参照 + + + + + + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/developing-channels.md b/docs/framework/wcf/extending/developing-channels.md new file mode 100644 index 00000000000..af4cb0ec670 --- /dev/null +++ b/docs/framework/wcf/extending/developing-channels.md @@ -0,0 +1,44 @@ +--- +title: "チャネルの開発 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0513af9f-a0c2-457b-9a50-5b6bfee48513 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# チャネルの開発 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーション レイヤーで使用できるプロトコル チャネルやトランスポート チャネルを開発するには、いくつかの手順が必要です。このトピックでは、これらの手順について説明し、詳細情報の参照先となる特定のトピックを示します。チャネル モデルと、このトピックで説明するそのさまざまな種類について理解するには、「[チャネル モデルの概要](../../../../docs/framework/wcf/extending/channel-model-overview.md)」を参照してください。トランスポート チャネルの完全なサンプルについては、「[トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md)」を参照してください。 + +## チャネル開発タスクの一覧 + ユーザー定義チャネルを作成する手順は、次のとおりです。すべてのチャネルで、次の手順が必要です。 + +1. で、チャネルのメッセージ交換パターン \(、または \) のうちのどれをサポートするか、また、選択したパターンでこれらのインターフェイスのセッションの多いバリエーションをサポートするかどうかを決定します。詳細については、「[メッセージ交換パターンの選択](../../../../docs/framework/wcf/extending/choosing-a-message-exchange-pattern.md)」を参照してください。 + +2. 選択したメッセージ交換パターンをサポートするチャネル ファクトリおよびリスナー \( および \) を作成します。ファクトリの開発の詳細については、「[クライアント : チャネル ファクトリとチャネル](../../../../docs/framework/wcf/extending/client-channel-factories-and-channels.md)」を参照してください。リスナーの開発の詳細については、「[サービス : チャネル リスナーとチャネル](../../../../docs/framework/wcf/extending/service-channel-listeners-and-channels.md)」を参照してください。 + +3. ネットワーク固有の例外が、 の適切な派生クラスまたは に標準化されていることを確認します。詳細については、「[例外とエラーの処理](../../../../docs/framework/wcf/extending/handling-exceptions-and-faults.md)」を参照してください。 + +4. アプリケーション レイヤーから使用できるようにするには、カスタム チャネルを追加する をチャネル スタックに追加します。詳細については、「[BindingElement の作成](../../../../docs/framework/wcf/extending/creating-a-bindingelement.md)」を参照してください。 + + アプリケーション レイヤーでより完全なサポートを実現するには、次の追加手順が必要です。 + +1. バインド要素拡張セクションを追加して、新しいバインド要素を構成システムに公開します。詳細については、「[構成とメタデータのサポート](../../../../docs/framework/wcf/extending/configuration-and-metadata-support.md)」を参照してください。 + +2. 他のエンドポイントに機能を伝達するメタデータ拡張を追加します。詳細については、「[構成とメタデータのサポート](../../../../docs/framework/wcf/extending/configuration-and-metadata-support.md)」を参照してください。 + +3. 適切に定義されたプロファイルに従って、バインド要素のスタックを事前構成するバインディングを追加します。詳細については、「[ユーザー定義バインディングの作成](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md)」を参照してください。 + +4. 構成システムにバインディングを開示する、バインディング セクションおよびバインディング構成要素を追加します。詳細については、「[構成とメタデータのサポート](../../../../docs/framework/wcf/extending/configuration-and-metadata-support.md)」を参照してください。 + +## 参照 + [バインディングの拡張](../../../../docs/framework/wcf/extending/extending-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/exporting-custom-metadata-for-a-wcf-extension.md b/docs/framework/wcf/extending/exporting-custom-metadata-for-a-wcf-extension.md new file mode 100644 index 00000000000..7ad92b3e767 --- /dev/null +++ b/docs/framework/wcf/extending/exporting-custom-metadata-for-a-wcf-extension.md @@ -0,0 +1,54 @@ +--- +title: "WCF 拡張に対するカスタム メタデータのエクスポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 53c93882-f8ba-4192-965b-787b5e3f09c0 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# WCF 拡張に対するカスタム メタデータのエクスポート +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、メタデータのエクスポートは、サービス エンドポイントを説明したり、それらを並行して計画したりするプロセスで、クライアントがサービスの使用方法を理解する標準化表現です。カスタム メタデータは、システム指定のメタデータ エクスポーターでエクスポートできない XML 要素で構成されます。通常、これは、ユーザー定義動作のカスタム WSDL 要素とバインド要素、およびバインディングとコントラクトの機能と要件に関するポリシー アサーションを含みます。 + + ここでは、カスタム WSDL またはポリシー アサーションのエクスポートについて説明し、エクスポート プロセス自体には重点を置きません。メタデータがカスタムであるか、システムによって作成されたかに関係なく、メタデータをエクスポートおよびインポートする型の使用方法の詳細については、「[メタデータのエクスポートとインポート](../../../../docs/framework/wcf/feature-details/exporting-and-importing-metadata.md)」を参照してください。 + +## 概要 + を使用してメタデータを公開すると、システム指定の属性とバインディングを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がサポートできるすべてのコントラクトとバインディングについて、 が検査され、XSD と WSDL \(ポリシー アサーションを含む\) が生成されます。ただし、カスタム動作属性やバインド要素を適切にエクスポートするには、あらかじめサポートしておく必要があります。 + + ここでは、次の内容について説明します。 + +1. WSDL を発行する前に WSDL の生成データを公開する インターフェイスを実装して使用する方法。 + +2. WSDL データに含まれるポリシー アサーションをエクスポートする前にポリシー データを公開する インターフェイスを実装して使用する方法。 + + カスタム WSDL とポリシー アサーションのインポートの詳細については、「[WCF 拡張に対するカスタム メタデータのインポート](../../../../docs/framework/wcf/extending/importing-custom-metadata-for-a-wcf-extension.md)」を参照してください。 + +## カスタム WSDL 要素のエクスポート + 操作の動作、コントラクトの動作、エンドポイントの動作、またはバインド要素 \(それぞれ \) を実装し、エクスポートしようとしているサービスの説明に動作またはバインド要素を挿入します \(動作の挿入の詳細については、「[動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md)」を参照してください\)。 はエンドポイントごとに呼び出され、コントラクトがエクスポートされていない場合は、各エンドポイントによって最初にコントラクトがエクスポートされます。必要に応じて、次のいずれかのエクスポート プロセスに参加できます。 + +- を使用して、エクスポートされたメタデータを メソッドで変更する。 + +- を使用して、エンドポイントに対してエクスポートされたメタデータを メソッドで変更する。 + + メソッドは、エクスポートされる インスタンスに含まれるすべての 実装で呼び出されます。 メソッドは、エクスポートされる インスタンスを持つすべての 実装で呼び出されます。 + + 詳細については、「[方法 : カスタム WSDL をエクスポートする](../../../../docs/framework/wcf/extending/how-to-export-custom-wsdl.md)」および「[カスタム WSDL パブリケーション](../../../../docs/framework/wcf/samples/custom-wsdl-publication.md)」のサンプルを参照してください。 + +## カスタム ポリシー アサーションのエクスポート + を実装し、バインド要素をバインディングに追加して、バインディングのサポートとコントラクトの機能に関するカスタム ポリシー アサーションを WSDL に書き込みます。バインディングに実装されたバインド要素をエクスポートすると、 が 1 回呼び出され、 メソッドに渡します。 インスタンスに対してこのメソッドを使用すると、メッセージ、操作、またはエンドポイント サブジェクトで WSDL バインディングに結び付けられているポリシー アサーションを追加できます。 + + 詳細については、「[方法 : カスタム ポリシー アサーションをエクスポートする](../../../../docs/framework/wcf/extending/how-to-export-custom-policy-assertions.md)」を参照してください。 + +## 参照 + [方法 : カスタム WSDL をエクスポートする](../../../../docs/framework/wcf/extending/how-to-export-custom-wsdl.md) + [方法 : カスタム ポリシー アサーションをエクスポートする](../../../../docs/framework/wcf/extending/how-to-export-custom-policy-assertions.md) + [WCF 拡張に対するカスタム メタデータのインポート](../../../../docs/framework/wcf/extending/importing-custom-metadata-for-a-wcf-extension.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/extending-bindings.md b/docs/framework/wcf/extending/extending-bindings.md new file mode 100644 index 00000000000..b74a96b199e --- /dev/null +++ b/docs/framework/wcf/extending/extending-bindings.md @@ -0,0 +1,37 @@ +--- +title: "バインディングの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "バインディングの拡張 [WCF]" +ms.assetid: 5e40d306-b3c1-4429-80c4-fbb1d956856c +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# バインディングの拡張 +バインディングは、エンドポイントに接続するために必要なトランスポート、エンコード、およびプロトコルを指定します。バインディングの拡張およびカスタム バインディングは、アプリケーションの各種機能をサポートするために必要なカスタム通信機能を実装します。 + +## このセクションの内容 + +|トピック|説明| +|----------|--------| +|[バインディングとバインディング要素](../../../../docs/framework/wcf/extending/bindings-and-binding-elements.md)|バインディングとバインド要素について説明し、その使用方法と拡張方法を示します。| +|[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)| クラスを使用して、システム定義およびサードパーティのバインド要素を使用するカスタム バインディングを作成する方法について説明します。| +|[ユーザー定義バインディングの作成](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md)|他のユーザーが使用できるバインディングとバインド要素を作成する方法について説明します。| + +## 関連項目 + +## 関連項目 + [BindingElement の作成](../../../../docs/framework/wcf/extending/creating-a-bindingelement.md) + + [構成とメタデータのサポート](../../../../docs/framework/wcf/extending/configuration-and-metadata-support.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/extending-clients.md b/docs/framework/wcf/extending/extending-clients.md new file mode 100644 index 00000000000..7efba4f7bcb --- /dev/null +++ b/docs/framework/wcf/extending/extending-clients.md @@ -0,0 +1,128 @@ +--- +title: "クライアントの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "プロキシ拡張 [WCF]" +ms.assetid: 1328c61c-06e5-455f-9ebd-ceefb59d3867 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# クライアントの拡張 +呼び出し側のアプリケーションでは、サービス モデル レイヤーが、アプリケーション コードでのメソッド呼び出しを送信メッセージに変換し、それらを基になるチャネルにプッシュし、結果をアプリケーション コードで戻り値と出力パラメーターに変換して、変換結果を呼び出し側に返します。サービス モデル拡張は、クライアントやディスパッチャーの機能、カスタム動作、メッセージとパラメーターの途中受信、およびその他の拡張機能に関連する実行や通信の動作と機能を変更または実装します。 + + ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアント アプリケーションで クラスと クラスを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの既定の実行動作を変更したり、メッセージ、パラメーター、または戻り値を、チャネル レイヤーから送信または取得する前後に途中受信したり、変更したりする方法について説明します。サービス ランタイムの拡張の詳細については、「[ディスパッチャーの拡張](../../../../docs/framework/wcf/extending/extending-dispatchers.md)」を参照してください。カスタム オブジェクトを変更する動作、およびそれらをクライアント ランタイムに挿入する動作の詳細については、「[動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md)」を参照してください。 + +## クライアント + クライアントでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトまたはクライアント チャネルが、メソッド呼び出しを送信メッセージに、受信メッセージを操作結果に変換し、この操作結果を呼び出し側のアプリケーションに返します \(クライアントの種類の詳細については、「[WCF クライアント アーキテクチャ](../../../../docs/framework/wcf/feature-details/client-architecture.md)」を参照してください\)。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの種類には、このようなエンドポイント レベルと操作レベルの機能を処理するランタイム型があります。アプリケーションが操作を呼び出すと、 が送信オブジェクトをメッセージに変換し、インターセプターを処理し、送信呼び出しがターゲット コントラクトに適合することを確認してから、送信メッセージを に渡します。このクラスは、送信チャネル \(双方向サービスの場合には、さらに受信チャネル\) の作成と管理、追加の送信メッセージ処理 \(ヘッダーの変更など\)、メッセージ インターセプターの両方向での処理、および適切なクライアント側 オブジェクトへの受信双方向呼び出しのルーティングを実行します。 は、共にメッセージ \(エラーを含む\) がクライアントに返されるときに同様のサービスを提供します。 + + これら 2 つのランタイム クラスは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のクライアント オブジェクトとチャネルの処理をカスタマイズするための主要な拡張機能です。 クラスは、ユーザーが、コントラクト内のすべてのメッセージについてクライアント実行を途中受信して拡張できるようにします。 クラスは、ユーザーが、特定の操作内のすべてのメッセージについてクライアント実行を途中受信して拡張できるようにします。 + + プロパティの変更やカスタマイズの挿入は、コントラクト、エンドポイント、および操作の各動作を使用して行います。これらの各種動作を使用して、クライアント ランタイムのカスタマイズを実行する方法の詳細については、「[動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md)」を参照してください。 + +## シナリオ + クライアント システムを拡張する理由としては、次のようなさまざまなものがあります。 + +- カスタム メッセージの検証。特定のスキーマに対してメッセージが有効になるようにする必要が生じる場合があります。これは、 インターフェイスを実装し、この実装を プロパティに割り当てることで可能になります。例については、「[方法 : クライアントのメッセージを検査または変更する](../../../../docs/framework/wcf/extending/how-to-inspect-or-modify-messages-on-the-client.md)」および「[方法 : クライアントのメッセージを検査または変更する](../../../../docs/framework/wcf/extending/how-to-inspect-or-modify-messages-on-the-client.md)」を参照してください。 + +- カスタム メッセージのログ記録。エンドポイントを通過するアプリケーション メッセージの一部を検査して記録する必要が生じる場合があります。これはメッセージ インターセプター インターフェイスで実行可能です。 + +- カスタム メッセージの変換。アプリケーション コードを変更するのではなく、ランタイムのメッセージに特定の変換を適用する必要が生じる場合があります \(バージョン管理の場合など\)。これもまた、メッセージ インターセプター インターフェイスで実行可能です。 + +- カスタム データ モデル。既定で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされているオブジェクト \(つまり、 オブジェクト、 オブジェクト、および オブジェクト\) 以外のデータ モデルやシリアル化モデルをユーザーが必要とする場合があります。これは、メッセージ フォーマッタ インターフェイスを実装することで対応できます。詳細については、 および プロパティのトピックを参照してください。 + +- カスタム パラメーターの検証。XML ではなく、型指定されたパラメーターが有効になるようにする必要が生じる場合があります。これは、パラメーター インスペクター インターフェイスを使用して実行できます。例については、「[方法 : パラメーターを検査または変更する](../../../../docs/framework/wcf/extending/how-to-inspect-or-modify-parameters.md)」または「[クライアント検証](../../../../docs/framework/wcf/samples/client-validation.md)」を参照してください。 + +### ClientRuntime クラスの使用 + クラスは、メッセージを途中受信してクライアントの動作を拡張する拡張オブジェクトを追加できる拡張ポイントです。途中受信オブジェクトには、特定のコントラクト内のすべてのメッセージを処理する、特定の操作用のメッセージだけを処理する、カスタムのチャネル初期化を実行する、その他のカスタム クライアント アプリケーションの動作を実行する、などの機能があります。 + +- プロパティは、サービス側開始のコールバック クライアント用のディスパッチ ランタイム オブジェクトを返します。 + +- プロパティは、カスタムの操作セレクター オブジェクトを受け取ります。 + +- プロパティを使用すると、クライアント チャネルを検査または変更できるチャネル初期化子を追加できます。 + +- プロパティは、 オブジェクトのコレクションを取得します。このコレクションにカスタムのメッセージ インターセプターを追加すれば、その操作のメッセージに固有の機能を提供できます。 + +- プロパティをアプリケーションで使用すると、自動アドレス指定ヘッダーをオフにしてアドレス指定を直接制御できます。 + +- プロパティは、トランスポート レベルでメッセージの送信先の値を設定して、メッセージの中継者やその他のシナリオをサポートします。 + +- プロパティは、 オブジェクトのコレクションを取得します。このコレクションには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 経由のすべてのメッセージに対応するカスタム メッセージ インターセプターを追加できます。 + + また、コントラクト情報を取得するその他のプロパティも多数用意されています。 + +- + +- + +- + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントが双方向 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの場合は、次のプロパティもコールバック [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント情報を取得します。 + +- + +- + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のクライアント実行を [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント全体で拡張するには、 クラスに用意されているプロパティを調べ、目的の機能を作成するために、プロパティを変更するか、またはインターフェイスを実装してプロパティに追加するかを確認します。作成する特定の拡張を選択した後は、適切な プロパティにその拡張を挿入します。挿入するには、実行時に クラスにアクセスを提供するクライアント動作を実装します。 + + カスタム拡張オブジェクトは、操作動作 \( を実装するオブジェクト\)、コントラクト動作 \( を実装するオブジェクト\)、またはエンドポイント動作 \( を実装するオブジェクト\) を使用して、コレクションに挿入できます。インストール動作オブジェクトは、プログラムで直接に、または宣言を介して \(カスタム属性を実装して\)、さらにアプリケーション構成ファイルを使用して動作を挿入できるようにするカスタム オブジェクトを実装することにより、適切な動作コレクションに追加されます。詳細については、[動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md) を参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントでの途中受信の例については、「[方法 : クライアントのメッセージを検査または変更する](../../../../docs/framework/wcf/extending/how-to-inspect-or-modify-messages-on-the-client.md)」を参照してください。 + +### ClientOperation クラスの使用 + クラスは、1 つのサービス操作のスコープ内だけに適用されるカスタムの拡張を実現するために、クライアント ランタイムに対して変更または挿入を行う場所です。\(コントラクト中のすべてのメッセージに対するクライアントのランタイム動作を変更するには、 クラスを使用します。\) + + プロパティを使用して、特定のサービス操作を表す オブジェクトを検索します。次の各プロパティを使用すると、カスタム オブジェクトを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント システムに挿入できます。 + +- プロパティは、特定の操作用に のカスタムの実装を挿入したり、現在のフォーマッタを変更するために使用します。 + +- プロパティは、 のカスタムの実装を挿入したり、現在の実装を変更するために使用します。 + + 次の各プロパティを使用すると、フォーマッタおよびカスタムのパラメーター インスペクターとやり取りしてシステムを変更できます。 + +- プロパティは、送信メッセージのシリアル化を制御するために使用します。 + +- プロパティは、受信メッセージの逆シリアル化を制御するために使用します。 + +- 要求メッセージの WS\-Addressing 操作を制御する場合に プロパティを使用します。 + +- プロパティと プロパティは、非同期操作に関連付けられる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント メソッドを指定するために使用します。 + +- プロパティは、SOAP エラーの際に詳細な型として表示できる型を含むコレクションを取得するために使用します。 + +- プロパティおよび プロパティは、操作が呼び出されたとき、それぞれセッションを起動するか終了するかを制御するために使用します。 + +- プロパティは、操作が一方向の操作であるかどうかを制御するために使用します。 + +- プロパティは、 の親オブジェクトを取得するために使用します。 + +- プロパティは、操作の名前を取得するために使用します。 + +- プロパティは、操作にマップされるメソッドを制御するために使用します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のクライアント実行を 1 つのサービス操作でのみ拡張するには、 クラスに用意されているプロパティを調べ、目的の機能を作成するために、プロパティを変更するか、またはインターフェイスを実装してプロパティに追加するかを確認します。作成する特定の拡張を選択した後は、適切な プロパティにその拡張を挿入します。挿入するには、実行時に クラスにアクセスを提供するクライアント動作を実装します。これで、その動作の内部で、 プロパティを要件に合わせて変更できるようになります。 + + 通常は、操作動作 \( を実装するオブジェクト\) の実装で十分ですが、エンドポイント動作とコントラクト動作を使用して、特定の操作の を検索し、これに動作を関連付けても同じことを実現できます。詳細については、[動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md) を参照してください。 + + 構成からカスタム動作を使用するには、カスタム動作構成セクション ハンドラーを使用して動作をインストールします。また、カスタム属性を作成することによって動作をインストールすることもできます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントでの途中受信の例については、「[方法 : パラメーターを検査または変更する](../../../../docs/framework/wcf/extending/how-to-inspect-or-modify-parameters.md)」を参照してください。 + +## 参照 + + + [方法 : クライアントのメッセージを検査または変更する](../../../../docs/framework/wcf/extending/how-to-inspect-or-modify-messages-on-the-client.md) + [方法 : パラメーターを検査または変更する](../../../../docs/framework/wcf/extending/how-to-inspect-or-modify-parameters.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/extending-dispatchers.md b/docs/framework/wcf/extending/extending-dispatchers.md new file mode 100644 index 00000000000..220bf1b9e6e --- /dev/null +++ b/docs/framework/wcf/extending/extending-dispatchers.md @@ -0,0 +1,142 @@ +--- +title: "ディスパッチャーの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ディスパッチャーの拡張 [WCF]" +ms.assetid: d0ad15ac-fa12-4f27-80e8-7ac2271e5985 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# ディスパッチャーの拡張 +ディスパッチャーには、基になるチャネルから受信メッセージをプルし、そのメッセージをアプリケーション コードでのメソッド呼び出しに変換し、結果を呼び出し元に送信する役割があります。 ディスパッチャーの拡張を使用することで、この処理を変更できます。 メッセージやパラメーターの内容を検査または変更するメッセージ インスペクターまたはパラメーター インスペクターを実装できます。 また、メッセージが操作にルーティングされる方法を変更することも、他の機能を提供することもできます。 + + ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービス アプリケーションで クラスと クラスを使用して、ディスパッチャーの既定の実行動作を変更したり、メッセージ、パラメーター、または戻り値を、チャネル レイヤーから送信または取得する前後に途中受信したり、変更したりする方法について説明します。 同等のクライアント ランタイム メッセージ処理の詳細については、「[クライアントの拡張](../../../../docs/framework/wcf/extending/extending-clients.md)」を参照してください。 さまざまなランタイム カスタマイズ オブジェクト間で共有される状態にアクセスするときに 型が果たす役割について理解するには、「[拡張可能オブジェクト](../../../../docs/framework/wcf/extending/extensible-objects.md)」を参照してください。 + +## ディスパッチャー + サービス モデル レイヤーは、開発者のプログラミング モデルと基になるメッセージ交換 \(一般的に、チャネル レイヤーと呼ばれます\) の間の変換を実行します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、チャネル ディスパッチャーとエンドポイント ディスパッチャー \(それぞれ \) は、新しいチャネルを受け入れて、メッセージ、操作ディスパッチ、操作呼び出し、および応答処理を受信するためのサービス コンポーネントです。 ディスパッチャー オブジェクトは、受信者のオブジェクトですが、双方向サービスでのコールバック コントラクトの実装も、検査、変更、または拡張のためにディスパッチャー オブジェクトを公開します。 + + チャネル ディスパッチャー \(およびコンパニオン \) は、基になるチャネルからメッセージをプルし、そのメッセージをそれぞれのエンドポイント ディスパッチャーに渡します。 各エンドポイント ディスパッチャーには、メッセージを適切な にルーティングする があります。これには、操作を実装するメソッドを呼び出す役割があります。 さまざまなオプションの拡張クラスおよび必須の拡張クラスが呼び出されます。 ここでは、この要素を組み合わせる方法、基本機能を拡張するためにプロパティを変更し、ユーザーのコードをプラグインする方法について説明します。 + + ディスパッチャーのプロパティと変更されたカスタマイズ オブジェクトは、サービス、エンドポイント、コントラクト、または操作の動作オブジェクトを使用して挿入します。 ここでは、動作を使用する方法については説明しません。 ディスパッチャーの変更を挿入するために使用する型の詳細については、「[動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md)」を参照してください。 + + 次の図は、サービスを構成する項目の概念図を示しています。 + + ![ディスパッチ ランタイム アーキテクチャ](../../../../docs/framework/wcf/extending/media/wcfc-dispatchruntimearchc.gif "wcfc\_DispatchRuntimeArchc") + +### チャネル ディスパッチャー + 特定の URI \(リッスン URI と呼ばれます\) にある をサービスのインスタンスと関連付けるために、 オブジェクトが作成されます。 各 オブジェクトには、それぞれ 1 つのリスナーとリッスン URI にのみ関連付けられている オブジェクトを多数格納できます。 メッセージが到着すると、 が、関連する各 オブジェクトにエンドポイントがメッセージを受け入れ可能かどうかを問い合わせ、受け入れ可能ならメッセージを渡します。 + + オブジェクトに定義されているチャネル セッションの有効期間および動作を制御するすべてのプロパティは、検査および変更可能です。 これには、カスタムのチャネル初期化子、チャネル リスナー、ホスト、関連する などがあります。 + +### エンドポイント ディスパッチャー + メッセージの送信先アドレスが プロパティに一致しており、メッセージ アクションが プロパティに一致しているときは、 オブジェクトが から送信されたメッセージの処理を担当します。 2 つの オブジェクトが 1 つのメッセージを受信する可能性があるときは、 プロパティの値によって、優先度の高いエンドポイントが決まります。 + + を使用して、2 つの主要サービス モデル拡張ポイントである クラスと クラスを取得します。このクラスは、ディスパッチャーの処理をカスタマイズするときに使用できます。 クラスを使用すると、コントラクトのスコープで \(つまり、コントラクトにあるすべてのメッセージに対して\) ディスパッチャーを途中受信および拡張できます。 クラスを使用すると、操作のスコープで \(つまり、操作にあるすべてのメッセージに対して\) ディスパッチャーを途中受信および拡張できます。 + +## シナリオ + ディスパッチャーを拡張する理由としては、次のようなさまざまなものがあります。 + +- カスタム メッセージの検証。 特定のスキーマに対してメッセージが有効になるようにすることができます。 これは、メッセージ インターセプター インターフェイスを実装することで対応できます。 例については、「[メッセージ インスペクター](../../../../docs/framework/wcf/samples/message-inspectors.md)」を参照してください。 + +- カスタム メッセージのログ記録。 エンドポイントを通過するアプリケーション メッセージの一部を検査して記録することができます。 これはメッセージ インターセプター インターフェイスで実行可能です。 + +- カスタム メッセージの変換。 ランタイムのメッセージに特定の変換を適用できます \(バージョン管理の場合など\)。 これもまた、メッセージ インターセプター インターフェイスで実行可能です。 + +- カスタム データ モデル。 既定で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされているモデル \(つまり、、および未加工メッセージ\) 以外のデータ シリアル化モデルを持つことができます。 これは、メッセージ フォーマッタ インターフェイスを実装することで対応できます。 例については、「[操作フォーマッタと操作セレクター](../../../../docs/framework/wcf/samples/operation-formatter-and-operation-selector.md)」を参照してください。 + +- カスタム パラメーターの検証。 XML ではなく、型指定されたパラメーターが有効になるようにすることができます。 これは、パラメーター インスペクター インターフェイスを使用して実行できます。 + +- カスタム操作ディスパッチ。 アクション以外の場所、たとえば、本文要素やカスタム メッセージ プロパティでディスパッチを実装できます。 これは、 インターフェイスを使用して実行できます。 例については、「[操作フォーマッタと操作セレクター](../../../../docs/framework/wcf/samples/operation-formatter-and-operation-selector.md)」を参照してください。 + +- オブジェクト プール。 呼び出しごとに新しいインスタンスを割り当てるのではなく、インスタンスをプールできます。 これは、インスタンス プロバイダー インターフェイスを使用して実装できます。 例については、「[プール](../../../../docs/framework/wcf/samples/pooling.md)」を参照してください。 + +- インスタンス リース。 インスタンスの有効期間にリース パターンを実装できます。これは、.NET Framework リモートのパターンに似ています。 これは、インスタンス コンテキスト有効期間インターフェイスを使用して実行できます。 + +- カスタム エラー処理。 ローカル エラーの処理方法とエラーをクライアントに戻す方法を制御できます。 これは、 インターフェイスを使用して実装できます。 + +- カスタム承認動作。 コントラクトまたは操作のランタイム要素を拡張し、メッセージに存在するトークンに基づくセキュリティ チェックを追加することによって、カスタムのアクセス制御を実装できます。 これは、メッセージ インターセプター インターフェイスまたはパラメーター インターセプター インターフェイスを使用して実行できます。 例については、「[セキュリティ拡張](../../../../docs/framework/wcf/samples/security-extensibility.md)」を参照してください。 + + > [!CAUTION] + > セキュリティ プロパティを変更すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションのセキュリティを損なう可能性があるので、注意してセキュリティ関連の変更を行い、配置する前に十分テストすることをお勧めします。 + +- カスタム WCF ランタイム バリデーター。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションに対して企業レベルのポリシーを実施するために、サービス、コントラクト、およびバインディングを調査するカスタム バリデーターをインストールできます。 たとえば、「[方法 : 企業内のエンドポイントをロックダウンする](../../../../docs/framework/wcf/extending/how-to-lock-down-endpoints-in-the-enterprise.md)」を参照してください。 + +### DispatchRuntime クラスの使用 + クラスを使用して、サービスまたは個別のエンドポイントの既定動作を変更するか、またはカスタム変更を実装したオブジェクトを次のサービス プロセス \(または双方向クライアントの場合、クライアント プロセス\) の一方または両方に挿入します。 + +- 受信メッセージをオブジェクトに変換し、メソッド呼び出しとしてサービス オブジェクト上でそれらのオブジェクトを解放します。 + +- サービス操作呼び出しに対する応答から受信したオブジェクトを送信メッセージに変換します。 + + を使用すると、メッセージが認識されない場合でも、特定のコントラクト全体のすべてのメッセージについて、特定のチャネルまたはエンドポイント ディスパッチャーを途中受信および拡張できます。 コントラクト内のどの宣言にも一致しないメッセージが到着した場合、 プロパティにより返された操作にディスパッチされます。 特定の操作についてすべてのメッセージを途中受信または拡張する方法については、 クラスを参照してください。 + + クラスによって公開されているディスパッチャー拡張性は次の 4 つの領域に大別できます。 + +1. のプロパティおよび によって返される関連チャネル ディスパッチャーのプロパティを使用して、チャネル コンポーネントが、チャネル ディスパッチャーによるチャネルのアクセプトおよびクローズ方法をカスタマイズします。 この分類に属するプロパティとして、 プロパティおよび があります。 + +2. メッセージ コンポーネントを、処理されるメッセージごとにカスタマイズします。 この分類に属するプロパティとして、 があります。 + +3. インスタンス コンポーネントが、特定のサービス型のインスタンスの作成、有効期間、破棄をカスタマイズします。 サービス オブジェクトの有効期間の詳細については、 プロパティを参照してください。 このカテゴリには、 プロパティおよび プロパティが含まれます。 + +4. セキュリティ関連コンポーネントは、次のプロパティを使用できます。 + + - は、監査イベントが出力される場所を示します。 + + - は、サービスが受信メッセージによって提供される資格情報を使用して偽装を試みるかどうかを制御します。 + + - は、 によって指定されたイベント ログに、メッセージ認証成功イベントを出力するかどうかを制御します。 + + - は、 プロパティの設定方法を制御します。 + + - は、承認イベントの監査の実行方法を指定します。 + + - は、ログ記録処理中に発生した致命的でない例外を抑制するかどうかを指定します。 + + カスタムの拡張オブジェクトは通常、 プロパティに割り当てるか、サービス動作 \( を実装するオブジェクト\)、コントラクト動作 \( を実装するオブジェクト\)、またはエンドポイント動作 \( を実装するオブジェクト\) によってコレクションに挿入します。 次に、インストール動作オブジェクトを、プログラムで直接、またはカスタムの オブジェクトを実装して適切な動作コレクションに追加し、アプリケーション構成ファイルを使用して動作を挿入できるようにします。 + + 双方向クライアント \(双方向サービスによって指定されたコールバック コントラクトを実装したクライアント\) にも、 プロパティを使用してアクセスできる オブジェクトがあります。 + +### DispatchOperation クラスの使用 + クラスは、1 つのサービス操作のスコープ内だけに適用されるカスタムの拡張を実現するために、ランタイムに対して変更または挿入を行う場所です \(コントラクト中のすべてのメッセージに対するサービスのランタイム動作を変更するには、 クラスを使用します\)。 + + カスタムのサービス動作オブジェクトを使用して、 の変更をインストールします。 + + プロパティを使用して、特定のサービス操作を表す オブジェクトを検索します。 + + 次のプロパティは、操作レベルでランタイム実行を制御します。 + +- 、および の各プロパティは、操作の値をそれぞれ取得します。 + +- は、トランザクション動作を指定します。 + +- プロパティと プロパティは、 に応じてユーザー定義サービス オブジェクトの有効期間を制御します。 + +- 、および の各プロパティでは、メッセージからオブジェクトへの変換およびオブジェクトからメッセージへの変換を明示的に制御できます。 + +- プロパティは、操作の偽装レベルを指定します。 + +- プロパティは、操作のカスタム呼び出しコンテキスト拡張を挿入します。 + +- プロパティは、パラメーター オブジェクトが破棄されるタイミングを制御します。 + +- プロパティは、カスタムの呼び出しオブジェクトを挿入します。 + +- プロパティでは、パラメーターと戻り値の検査または変更に使用できるカスタム パラメーター インスペクターを挿入できます。 + +## 参照 + + + [方法 : サービスのメッセージを検査および変更する](../../../../docs/framework/wcf/extending/how-to-inspect-and-modify-messages-on-the-service.md) + [方法 : パラメーターを検査または変更する](../../../../docs/framework/wcf/extending/how-to-inspect-or-modify-parameters.md) + [方法 : 企業内のエンドポイントをロックダウンする](../../../../docs/framework/wcf/extending/how-to-lock-down-endpoints-in-the-enterprise.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/extending-encoders-and-serializers.md b/docs/framework/wcf/extending/extending-encoders-and-serializers.md new file mode 100644 index 00000000000..365f7ee1109 --- /dev/null +++ b/docs/framework/wcf/extending/extending-encoders-and-serializers.md @@ -0,0 +1,27 @@ +--- +title: "エンコーダーとシリアライザーの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 97aec970-d73c-469c-9b93-8b86be701c44 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# エンコーダーとシリアライザーの拡張 +このセクションの各トピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] シリアル化システムの拡張方法について説明します。 + +## このセクションの内容 + [データ コントラクト サロゲート](../../../../docs/framework/wcf/extending/data-contract-surrogates.md) + データ コントラクト サロゲート クラスを使用して、シリアル化、逆シリアル化、スキーマのエクスポート、およびスキーマのインポートをカスタマイズする方法について説明します。 + + [カスタム メッセージ フォーマッタ](../../../../docs/framework/wcf/extending/custom-message-formatters.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージと CLR 型間のシリアル化および逆シリアル化を制御するために使用できるカスタム メッセージ フォーマッタについて説明します。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/extending-hosting-using-servicehostfactory.md b/docs/framework/wcf/extending/extending-hosting-using-servicehostfactory.md new file mode 100644 index 00000000000..798d1486529 --- /dev/null +++ b/docs/framework/wcf/extending/extending-hosting-using-servicehostfactory.md @@ -0,0 +1,92 @@ +--- +title: "ServiceHostFactory を使用したホストの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bcc5ae1b-21ce-4e0e-a184-17fad74a441e +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# ServiceHostFactory を使用したホストの拡張 +[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アーキテクチャを拡張するためのインターフェイスとして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、ホスティング サービスを実装するための標準 API である があります。 ユーザーは、この の派生型として独自のホスト クラスを定義できます。通常は、 を使用するために をオーバーライドして、これにより、サービスを開く前に、強制的に既定のエンドポイントを追加したり、動作を変更することができます。 + + 自己ホスト環境では、カスタムの を作成する必要はありません。ホストをインスタンス化し、インスタンス化の後で を呼び出すコードを記述するので、 この 2 つのステップの間に任意の処理を記述できます。 たとえば、新しい を次のように追加できます。 + +``` +public static void Main() +{ + ServiceHost host = new ServiceHost( typeof( MyService ) ); + host.Description.Add( new MyServiceBehavior() ); + host.Open(); + + ... +} + +``` + + この方法は再利用できません。 説明を操作するコードはホスト プログラム \(この場合は Main\(\) 関数\) に記述されているので、このロジックを別のコンテキストで使用するのは困難です。 このような強制コードを記述することなく、 を追加する方法もあります。 から派生した属性をサービス実装型に組み込む方法や、カスタム動作の詳細を構成できるようにしておき、構成を使用して動的に組み込む方法が考えられます。 + + ただし、サンプル コードを少し修正して問題を解決することもできます。 1 つの方法として、ServiceBehavior を追加するコードを `Main()` 内に記述する代わりに、 から派生した メソッドに記述することができます。 + +``` +public class DerivedHost : ServiceHost +{ + public DerivedHost( Type t, params Uri baseAddresses ) : + base( t, baseAddresses ) {} + + public override void OnOpening() + { + this.Description.Add( new MyServiceBehavior() ); + } +} +``` + + `Main()` 内には、次のように記述できます。 + +``` +public static void Main() +{ + ServiceHost host = new DerivedHost( typeof( MyService ) ); + host.Open(); + + ... +} +``` + + このようにカスタム ロジックをカプセル化、抽象化すると、さまざまなホスト アプリケーションで再利用できます。 + + カスタムの を Internet Information Services \(IIS\) や Windows Process Activation Service \(WAS\) で使用する方法は、それほど単純ではありません。 アプリケーションの代わりにホスティング環境が をインスタンス化するという点で、これらの環境は、自己ホスト環境と異なっています。 IIS および WAS ホスティング インフラストラクチャは、 のカスタム派生物については何も認識しません。 + + は、独自に定義した の派生クラスに、IIS または WAS からアクセスする手段として設計されました。 から派生したカスタム ホストは、動的に構成され、種類もさまざまであるため、ホスト環境でこれを直接インスタンス化することはありません。 代わりに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は "ファクトリ パターン" を使用して、ホスティング環境と、サービスの具体的な型との間に、間接レイヤーを提供します。 特に指定しなければ、 のインスタンスを返す、 の既定の実装が使用されます。 ただし、派生ホストを返す独自のファクトリを用意し、そのファクトリの CLR 型名を @ServiceHost ディレクティブで指定することもできます。 + + 基本的なケースでは、独自のファクトリは容易に実装できます。 派生 を返す、カスタムの の例を次に示します。 + +``` +public class DerivedFactory : ServiceHostFactory +{ + public override ServiceHost CreateServiceHost( Type t, Uri[] baseAddresses ) + { + return new DerivedHost( t, baseAddresses ) + } +} + +``` + + 既定のファクトリの代わりにこのファクトリを使用するには、@ServiceHost ディレクティブに、次のように型名を記述します。 + +``` +<% @ServiceHost Factory=”DerivedFactory” Service=”MyService” %> +``` + + から返す で行う処理について、技術的には制限はありませんが、ファクトリ実装はできるだけ単純にしておくことをお勧めします。 カスタム ロジックが多い場合は、ファクトリ内ではなくホスト側に記述するようにして、ファクトリは再利用できるようにしておきます。 + + ここで、ホスティング API にはもう 1 つのレイヤーがあることを知っておく必要があります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、 および というクラスもあり、 のそれぞれは、これらのクラスから派生しています。 これらは、メタデータ システムの大部分がカスタム コードに置き換わるような、高度なシナリオを想定して用意されています。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/extending-security.md b/docs/framework/wcf/extending/extending-security.md new file mode 100644 index 00000000000..72e9c3a53c8 --- /dev/null +++ b/docs/framework/wcf/extending/extending-security.md @@ -0,0 +1,68 @@ +--- +title: "セキュリティの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF], 拡張" +ms.assetid: a015a040-9fdf-4147-9ea9-f83b570be1d4 +caps.latest.revision: 23 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 23 +--- +# セキュリティの拡張 +新しいクレームの種類やカスタム トークンに対応するために、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のセキュリティ インフラストラクチャを拡張できます。このセクションの各トピックでは、この方法について説明します。 + +## このセクションの内容 + [Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ システムのアーキテクチャについて解説します。 + + [カスタム資格情報と資格情報の検証](../../../../docs/framework/wcf/extending/custom-credential-and-credential-validation.md) + カスタム資格情報の検証中に ID モデルを使用する方法について説明します。 + + [カスタム トークン](../../../../docs/framework/wcf/extending/custom-tokens.md) + 通常、セキュリティ トークン サービス \(STS\) から発行されるトークンは SAML トークンです。ここでは、カスタムのトークンの種類を作成する方法について説明します。 + + [カスタム承認](../../../../docs/framework/wcf/extending/custom-authorization.md) + カスタム承認を実装する方法について説明します。 + + [認証のためのサービスの ID のオーバーライド](../../../../docs/framework/wcf/extending/overriding-the-identity-of-a-service-for-authentication.md) + 認証のためにサービスの ID をオーバーライドする方法について説明します。 + + [方法 : カスタム クライアント ID 検証機能を作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-client-identity-verifier.md) + カスタム エンドポイント ID を検証する方法について説明します。 + + [方法 : 署名および暗号化に個別の X.509 証明書を使用する](../../../../docs/framework/wcf/extending/how-to-use-separate-x-509-certificates-for-signing-and-encryption.md) + 通常、メッセージの署名および暗号化は 1 つの証明書を使用して行われます。ここでは、必要に応じて 2 つの証明書を使用する方法について説明します。 + + [方法 : X.509 証明書の秘密キーの暗号化プロバイダーを変更する](../../../../docs/framework/wcf/extending/change-cryptographic-provider-x509-certificate-private-key.md) + X.509 証明書の秘密キーを提供するために使用する暗号化プロバイダーを変更する方法、およびそのプロバイダーを [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] フレームワークに統合する方法について説明します。 + +## 関連項目 + + + + + + + + + + + + +## 関連項目 + [セキュリティ](../../../../docs/framework/wcf/feature-details/security.md) + + [基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md) + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/extending-servicehost-and-the-service-model-layer.md b/docs/framework/wcf/extending/extending-servicehost-and-the-service-model-layer.md new file mode 100644 index 00000000000..e6b91e1be25 --- /dev/null +++ b/docs/framework/wcf/extending/extending-servicehost-and-the-service-model-layer.md @@ -0,0 +1,42 @@ +--- +title: "ServiceHost とサービス モデル レイヤーの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "サービス モデルの拡張 [WCF]" +ms.assetid: 954c138a-1cd0-45a0-8abe-e4d2b8ff5400 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# ServiceHost とサービス モデル レイヤーの拡張 +サービス モデル レイヤーは、基になるチャネルから受信メッセージをプルし、そのメッセージをアプリケーション コードでのメソッド呼び出しに変換し、結果を呼び出し元に送信する役割があります。サービス モデル拡張は、クライアントやディスパッチャーの機能、カスタム動作、メッセージとパラメーターの途中受信、およびその他の拡張機能に関連する実行や通信の動作と機能を変更または実装します。 + +## このセクションの内容 + [クライアントの拡張](../../../../docs/framework/wcf/extending/extending-clients.md) + クライアント ランタイムを途中受信して変更できるインターフェイス、およびクライアント アプリケーションのカスタム拡張を挿入できるクラスについて説明します。たとえば、カスタム クライアント メッセージ ログやカスタム メッセージ シリアル化などを実行できます。 + + [ディスパッチャーの拡張](../../../../docs/framework/wcf/extending/extending-dispatchers.md) + サービス ランタイムを途中受信して変更できるインターフェイス、およびサービス アプリケーションのカスタム拡張を挿入できるクラスについて説明します。たとえば、カスタム サービス ログ、サービス側でのメッセージ検証、カスタム ディスパッチなどを実行できます。 + + [拡張可能オブジェクト](../../../../docs/framework/wcf/extending/extensible-objects.md) + 5 つの拡張可能オブジェクトと、 パターンについて説明します。拡張可能オブジェクト パターンは、既存のランタイム クラスに新しい機能を付加して拡張したり、オブジェクトに新しい状態を追加するために使用します。このようなオブジェクトを実際に拡張することにより、処理の段階に応じて、共通の拡張可能オブジェクトに定義された共有の状態や機能にアクセスすることができます。 + + [動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムで設定を変更したり、拡張機能を挿入したりするには、動作を使用します。WCF には、調整機能、インスタンス化、およびサービスと操作に関するその他のさまざまな側面を制御するための、システムに実装済みの動作が用意されています。ここでは、独自のカスタム動作を作成し、プログラムおよび構成ファイルにより、作成したカスタム動作を使用できるようにする方法について説明します。 + + [ServiceHostFactory を使用したホストの拡張](../../../../docs/framework/wcf/extending/extending-hosting-using-servicehostfactory.md) + および を拡張し、 クラスを使用してホスト環境をカスタマイズする方法について説明します。 + +## 関連項目 + +## 関連項目 \ No newline at end of file diff --git a/docs/framework/wcf/extending/extending-the-channel-layer.md b/docs/framework/wcf/extending/extending-the-channel-layer.md new file mode 100644 index 00000000000..25cafa806d5 --- /dev/null +++ b/docs/framework/wcf/extending/extending-the-channel-layer.md @@ -0,0 +1,35 @@ +--- +title: "チャネル レイヤーの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "チャネルの拡張 [WCF]" +ms.assetid: 4238db74-2fb6-4dc8-a326-f58527230810 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# チャネル レイヤーの拡張 +チャネル レイヤーはクライアントとサービス間のメッセージの交換を担います。チャネル拡張では、新しいプロトコル機能 \(セキュリティなど\)、またはトランスポート機能 \(SOAP メッセージを送信する新しいネットワーク トランスポートの実装など\) を実装できます。 + +## このセクションの内容 + [チャネル モデルの概要](../../../../docs/framework/wcf/extending/channel-model-overview.md) + チャネルとその機能、サービス アプリケーションおよびクライアント アプリケーションとの連携について概要を示します。 + + [チャネルの開発](../../../../docs/framework/wcf/extending/developing-channels.md) + 各種のチャネル インフラストラクチャが果たす役割、ステート エンジンとステート ライフサイクルのしくみ、例外とエラーの処理方法、メタデータ サポートの実装方法、チャネルとメッセージ エンコーダーの連携について詳しく説明します。 + + [カスタム エンコーダー](../../../../docs/framework/wcf/extending/custom-encoders.md) + メッセージ エンコーダーがチャネルで果たす役割、およびメッセージ エンコーダーの作成方法について説明します。 + + [カスタム ストリームのアップグレード](../../../../docs/framework/wcf/extending/custom-stream-upgrades.md) + ストリーム指向のトランスポートによって提供されるストリームのアップグレード プロセスについて説明します。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/extending-the-metadata-system.md b/docs/framework/wcf/extending/extending-the-metadata-system.md new file mode 100644 index 00000000000..79c45247b64 --- /dev/null +++ b/docs/framework/wcf/extending/extending-the-metadata-system.md @@ -0,0 +1,32 @@ +--- +title: "メタデータ システムの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "メタデータの拡張 [WCF]" +ms.assetid: 8c6b3b00-61b8-4589-8fa5-546cc33719bf +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# メタデータ システムの拡張 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のメタデータ システムは複数のクラスのグループおよびインターフェイスで、サービス ベースのアプリケーションを実装するために必要なメタデータを表します。クラスを変更または拡張するか、WSDL \(Web サービス記述言語\) の拡張子やカスタム WS\-PolicyAttachments アサーションなどのカスタム メタデータをエクスポート\/インポートするインターフェイスを実装して構成します。 + +## このセクションの内容 + [WCF 拡張に対するカスタム メタデータのエクスポート](../../../../docs/framework/wcf/extending/exporting-custom-metadata-for-a-wcf-extension.md) + インターフェイスを実装および使用して、カスタム ポリシー アサーションを WSDL ドキュメントに埋め込む方法を説明します。 + + [WCF 拡張に対するカスタム メタデータのインポート](../../../../docs/framework/wcf/extending/importing-custom-metadata-for-a-wcf-extension.md) + インターフェイスを実装および使用して、WSDL ドキュメント内のカスタム ポリシー アサーションの読み取りや応答を行う方法を説明します。 + + [カスタム バインディングを介したメタデータの公開と取得](../../../../docs/framework/wcf/extending/publishing-and-retrieving-metadata-over-a-custom-binding.md) + カスタム バインディングを介してメタデータを交換する方法について説明します。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/extending-wcf.md b/docs/framework/wcf/extending/extending-wcf.md new file mode 100644 index 00000000000..6b595c66040 --- /dev/null +++ b/docs/framework/wcf/extending/extending-wcf.md @@ -0,0 +1,65 @@ +--- +title: "WCF の拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "機能拡張 [WCF]" + - "WCF, 機能拡張" + - "Windows Communication Foundation, 機能拡張" +ms.assetid: c145e2f6-f402-41f5-8b5a-eee03978737b +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# WCF の拡張 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、実行時コンポーネントを変更し、拡張することによって、サービス ベースのアプリケーションを正確に制御および拡張できます。 このセクションのトピックでは、その拡張アーキテクチャについて詳しく説明します。 基本的なプログラミングの詳細については、「[基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md)」を参照してください。 + +## このセクションの内容 + [ServiceHost とサービス モデル レイヤーの拡張](../../../../docs/framework/wcf/extending/extending-servicehost-and-the-service-model-layer.md) + サービス モデル レイヤーには、基になるチャネルから受信メッセージを取得し、そのメッセージをアプリケーション コードでのメソッド呼び出しに変換し、結果を呼び出し元に送信するという役割があります。 サービス モデル拡張は、ディスパッチャーの機能、カスタム動作、メッセージとパラメーターの途中受信、およびその他の拡張機能に関連する実行や通信の動作と機能を変更または実装します。 + + [バインディングの拡張](../../../../docs/framework/wcf/extending/extending-bindings.md) + バインディングはエンドポイントに接続するために必要な通信の詳細設定を記述するオブジェクトです。 バインディングの拡張やカスタム バインディングは、アプリケーションの各種機能をサポートするために必要なカスタム通信機能を実装します。 + + [チャネル レイヤーの拡張](../../../../docs/framework/wcf/extending/extending-the-channel-layer.md) + チャネル レイヤーは、サービス モデル レイヤーより下に位置し、クライアントとサービス間のメッセージの交換を担います。 チャネル拡張は、セキュリティなどの新しいプロトコル機能を実装できます。 また、SOAP メッセージを伝達する新しいネットワーク トランスポートの実装など、トランスポート機能も実装できます。 + + [セキュリティの拡張](../../../../docs/framework/wcf/extending/extending-security.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティは、転送セキュリティ \(整合性、機密性、および認証\)、アクセス制御 \(承認\)、および監査で構成されます。 `IdentityModel` 名前空間にある各クラスは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でアクセス制御のために使用されます。 セキュリティ アーキテクチャを理解することによって、カスタムのアクセス制御システムに対応したカスタムのクレーム タイプを作成できます。 + + [メタデータ システムの拡張](../../../../docs/framework/wcf/extending/extending-the-metadata-system.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のメタデータ システムは複数のクラスのグループおよびインターフェイスで、サービス ベースのアプリケーションを実装するために必要なメタデータを表します。 クラスを変更または拡張するか、WSDL \(Web サービス記述言語\) の拡張子やカスタム WS\-PolicyAttachments アサーションなどのカスタム メタデータをエクスポート\/インポートするインターフェイスを実装して構成します。 + + [エンコーダーとシリアライザーの拡張](../../../../docs/framework/wcf/extending/extending-encoders-and-serializers.md) + エンコーダーとシリアライザーは、データをある形式から別の形式に変換します。 このセクションのトピックでは、提供されたクラスを特別な要件に合わせて拡張する方法を説明します。 + +## 関連項目 + + + + + + + + + + + + + + +## 関連項目 + [基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md) + + [WCF 機能の詳細](../../../../docs/framework/wcf/feature-details/index.md) + + [ガイドラインとベスト プラクティス](../../../../docs/framework/wcf/guidelines-and-best-practices.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/extensible-objects.md b/docs/framework/wcf/extending/extensible-objects.md new file mode 100644 index 00000000000..32c22c0d938 --- /dev/null +++ b/docs/framework/wcf/extending/extensible-objects.md @@ -0,0 +1,76 @@ +--- +title: "拡張可能オブジェクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "拡張可能オブジェクト [WCF]" +ms.assetid: bc88cefc-31fb-428e-9447-6d20a7d452af +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 拡張可能オブジェクト +拡張可能オブジェクト パターンは、既存のランタイム クラスに新しい機能を付加して拡張したり、オブジェクトに新しい状態を追加するために使用します。 このようなオブジェクトを実際に拡張することにより、処理の段階に応じて、共通の拡張可能オブジェクトに定義された共有の状態や機能にアクセスすることができます。 + +## IExtensibleObject\ パターン + 拡張可能オブジェクト パターンには、、および の 3 つのインターフェイスがあります。 + + インターフェイスを実装することにより、 オブジェクトの機能をカスタマイズできます。 + + 拡張可能オブジェクトを使用すると、 オブジェクトの動的な集約が可能になります。 オブジェクトには、次のインターフェイスが実装されています。 + +``` +public interface IExtension +where T : IExtensibleObject +{ + void Attach(T owner); + void Detach(T owner); +} +``` + + この型制約は、 であるクラスに対してしか拡張を定義できないことを保証します。 は、集約や集約解除に関する通知を提供します。 + + 所有者が追加や削除を行う際の制限を組み込むことも可能です。 たとえば、削除は全面的に禁止する、所有者や拡張がある状態であれば拡張の追加や削除を禁止する、同時に複数の所有者に追加することを禁止する、1 つ削除したら 1 つだけ追加を許可する、などの制約を指定することができます。 + + を実装しても、他の標準のマネージ インターフェイスとやりとりできるとは限りません。 特に、所有者オブジェクトの メソッドは、自分自身の拡張を解除しないのが普通です。 + + 拡張がコレクションに追加される場合には、直前に が呼び出されます。また、コレクションから拡張を削除すると、その直後に が呼び出されます。したがって、同期が適切であれば、拡張が有効なのは から の間ということになります。 + + に渡すオブジェクトは、 である必要はなく、任意のオブジェクトを渡すことができますが、返される拡張は です。 + + コレクション内のどの拡張も でなければ、 は null を返し、 は空のコレクションを返します。 を実装した拡張が複数あれば、 はそのうちのいずれか 1 つを返します。 から返される値はスナップショットです。 + + 主な使い方として、次の 2 つのシナリオが考えられます。 1 つ目のシナリオでは、型ベースのディクショナリとして プロパティを使用し、オブジェクトに状態を追加します。これは、別のコンポーネントが型に基づいて検索できます。 + + 2 つ目のシナリオでは、 プロパティおよび プロパティを使用し、イベントへの登録や、状態の遷移の監視など、カスタムの動作にオブジェクトを参加させます。 + + インターフェイスは、型を基準にした の取得を可能にする オブジェクトのコレクションです。 は、指定された型の オブジェクトのうち、最も新しく追加されたものを返します。 + +### Windows Communication Foundation の拡張可能オブジェクト + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には次の 4 つの拡張可能オブジェクトが組み込まれています。 + +- : サービス ホストの基本クラスです。 自身の動作を拡張するほか、各サービスの状態を保存しておくための拡張が可能です。 + +- : サービスのランタイムを使用して、サービスの型のインスタンスと接続するためのクラスです。 このクラスは、インスタンスに関する情報のほか、 に含まれる への参照を保持します。 自身の動作を拡張するほか、各サービスの状態を保存しておくための拡張が可能です。 + +- : 操作ごとにランタイムが収集した操作情報を表すクラスです。 具体的には、受け取ったメッセージのヘッダーやプロパティ、受け取ったセキュリティ ID などの情報があります。 自身の動作を拡張するほか、各操作の状態を保存しておくための拡張が可能です。 + +- : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムで構築されたチャネルやプロキシの状態を個々に検査できるようにするためのインターフェイスです。 自身の動作を拡張するほか、各チャネルの状態を保存しておくための拡張が可能です。 + + オブジェクトの状態を追跡するという、簡単な拡張の使い方を例示したコードを次に示します。 + + [!code-csharp[IInstanceContextInitializer#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/iinstancecontextinitializer/cs/initializer.cs#1)] + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/wcf/extending/handling-exceptions-and-faults.md b/docs/framework/wcf/extending/handling-exceptions-and-faults.md new file mode 100644 index 00000000000..cb6af4c8e16 --- /dev/null +++ b/docs/framework/wcf/extending/handling-exceptions-and-faults.md @@ -0,0 +1,413 @@ +--- +title: "例外とエラーの処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a64d01c6-f221-4f58-93e5-da4e87a5682e +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 例外とエラーの処理 +例外は、サービスまたはクライアント実装内でエラーをローカルに伝達するために使用されます。一方、エラーは、サーバーからクライアントまたはクライアントからサーバーのように、サービス境界を越えてエラーを伝達するために使用されます。このようなエラーに加え、多くの場合、トランスポート チャネルはトランスポート固有の機構を使用して、トランスポート レベルのエラーを伝達します。たとえば、HTTP トランスポートは、404 などのステータス コードを使用して、存在しないエンドポイントの URL \(エラーを返信するエンドポイントが存在しないこと\) を伝達します。このドキュメントは、カスタム チャネル作成者にガイダンスを示す 3 つのセクションで構成されています。最初のセクションでは、例外を定義しスローする状況と方法に関するガイダンスを示します。2 番目のセクションでは、エラーの生成と使用に関するガイダンスを示します。3 番目のセクションでは、実行中のアプリケーションのトラブルシューティングを行う際に、カスタム チャネルのユーザーにとって役立つトレース情報を提供する方法について説明します。 + +## 例外 + 例外をスローする場合、2 つの点に留意します。まず、例外は、ユーザーがその例外に適切に対処できる正しいコードを作成できるような種類であることが必要です。もう 1 つは、例外では、問題点、エラーの影響、およびエラーの修正方法をユーザーが理解できるだけの情報を提供する必要があります。以下のセクションでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] チャネルの例外の種類とメッセージに関するガイダンスを示します。また、「Design Guidelines for Exceptions」に記載された .NET の例外に関する一般的なガイダンスも示します。 + +### 例外の種類 + チャネルがスローするすべての例外は、、または から派生した種類のいずれかである必要があります \( のような例外をスローすることもできますが、これは呼び出し元のコードがチャネルを誤用したことを示す場合だけです。チャネルが正しく使用されている場合は、指定の例外だけをスローする必要があります\)。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、 から派生し、チャネルで使用するように設計された 7 種類の例外が用意されています。 から派生した例外には、システムのその他の部分で使用するように設計されているものもあります。これらの例外の種類を以下に示します。 + +|例外の種類|説明|内部例外の内容|回復方法| +|-----------|--------|-------------|----------| +||リッスン用に指定されたエンドポイント アドレスは既に使用されています。|エラーの詳細情報が得られるようであれば、この例外の原因となったトランスポート エラーについての情報を提供します。例 : または |別のアドレスで実行してください。| +||このプロセスは、リッスン用に指定されたエンドポイント アドレスへのアクセスを許可されていません。|エラーの詳細情報が得られるようであれば、この例外の原因となったトランスポート エラーについての情報を提供します。例 : または |別の資格情報を使用して試行します。| +||使用している が Faulted 状態になっています \(詳細については、「[状態変更の理解](../../../../docs/framework/wcf/extending/understanding-state-changes.md)」を参照してください\)。複数の呼び出しが保留になっているオブジェクトが Faulted 状態に遷移した場合、エラーに関連する例外をスローする呼び出しは 1 つだけであり、それ以外の呼び出しは をスローします。通常、この例外がスローされるのは、アプリケーションが何らかの例外を認識しておらず、おそらく最初の例外をキャッチしたスレッド以外のスレッドで、既に Faulted 状態のオブジェクトを使用しようとしたためです。|詳細情報を使用できる場合は、内部例外についての詳細を示します。|新規オブジェクトを作成します。 にエラーが発生した第一の原因によっては、回復するために他の作業が必要になることがあります。| +||使用している が Aborted 状態になっています \(詳細については、「[状態変更の理解](../../../../docs/framework/wcf/extending/understanding-state-changes.md)」を参照してください\)。 と同様に、この例外は、アプリケーションがおそらく別のスレッドからオブジェクトに対して を呼び出したときに、オブジェクトが既に Aborted 状態であるため、使用できなくなっていることを示しています。|詳細情報を使用できる場合は、内部例外についての詳細を示します。|新規オブジェクトを作成します。 が中止された第一の原因によっては、回復するために他の作業が必要になることがあります。| +||対象のリモート エンドポイントがリッスンしていません。これは、エンドポイント アドレスの一部に誤りがある、エンドポイント アドレスの一部を解決できない、またはエンドポイントがダウンしていることが原因として考えられます \(DNS エラー、キュー マネージャーを使用できない、サービスが実行されていないなど\)。|この内部例外では、一般に、基になるトランスポートの詳細が示されます。|別のアドレスで実行してください。また、サービスがダウンしている場合は、送信元がしばらく待機し、再試行することもできます。| +||エンドポイントのポリシーで示されている通信プロトコルがエンドポイント間で一致していません \(フレーム コンテンツの種類の不一致や、最大メッセージ サイズの超過など\)。|詳細情報を使用できる場合は、特定のプロトコル エラーの詳細を示します。たとえば、MaxReceivedMessageSize を超えていることがエラーの原因である場合、 が内部例外です。|回復 : 受信したプロトコル設定が送信側と一致していることを確認します。この方法の 1 つとして、サービス エンドポイントのメタデータ \(ポリシー\) を再度インポートし、生成されたバインディングを使用してチャネルを再作成します。| +||リモート エンドポイントはリッスンしていますが、メッセージを処理する準備ができていません。|詳細情報を使用できる場合は、内部例外で SOAP エラーまたはトランスポート レベルのエラーの詳細を示します。|回復 : しばらく待機し、後で操作を再試行します。| +||タイムアウト期間内に操作を完了できませんでした。|タイムアウトの詳細を示します。|しばらく待機し、後で操作を再試行します。| + + 新しい例外の種類を定義するのは、その種類が既存の例外の種類のいずれとも異なる回復方法に対応する場合だけです。新しい例外の種類を定義する場合は、 または派生クラスのいずれかから派生する必要があります。 + +### 例外メッセージ + 例外メッセージは、プログラムではなくユーザーを対象としています。したがって、ユーザーが問題を理解し、解決する上で役立つ十分な情報を提供する必要があります。優れた例外メッセージに不可欠な 3 つの構成要素を以下に示します。 + + 問題の内容。ユーザーの経験に関連する用語を使用して、問題を明確に説明します。たとえば、"無効な構成セクション" という例外メッセージは適切とはいえません。このようなメッセージでは、ユーザーは、どの構成セクションに誤りがあり、それがなぜ誤りなのか疑問を抱いたままになります。より適切なメッセージとしては、"無効な構成セクション \" が考えられます。これをさらに改善し、"myBinding というバインディングには myTransport というトランスポートが既に含まれているため、このバインディングに myTransport というトランスポートを追加することはできません" というメッセージにします。これは、アプリケーションの構成ファイル内でユーザーが容易に特定できる用語と名前を使用した、非常に明確なメッセージです。ただし、まだ重要な要素がいくつか欠けています。 + + エラーの重大度。メッセージがエラーの意味を明確に示していない場合、ユーザーはそれが致命的なエラーかどうか、または無視できるのかどうか疑問を抱くと考えられます。一般に、メッセージではエラーの意味や重大度を示す必要があります。前述の例のメッセージは、"構成エラーが原因で ServiceHost を開くことができませんでした: myBinding というバインディングには myTransport というトランスポートが既に含まれているため、このバインディングに myTransport というトランスポートを追加することはできません" というメッセージに改善できます。 + + ユーザーが問題を修正する方法。メッセージの最も重要な要素は、ユーザーによる問題の修正を支援することにあります。メッセージには、問題を改善するためのチェックや修正の内容に関する何らかのガイダンスやヒントを含める必要があります。たとえば、"構成エラーが原因で ServiceHost を開くことができませんでした: myBinding というバインディングには myTransport というトランスポートが既に含まれているため、このバインディングに myTransport というトランスポートを追加することはできません。バインディングに含まれているトランスポートが 1 つだけであることを確認してください" というメッセージにします。 + +## エラーの伝達 + SOAP 1.1 および SOAP 1.2 では、エラーの具体的な構造が定義されています。この 2 つの仕様にはいくつかの違いがありますが、通常、Message 型と MessageFault 型を使用して、エラーを作成および使用します。 + + ![例外とエラーの処理](../../../../docs/framework/wcf/extending/media/wcfc-soap1-1andsoap1-2faultcomparisonc.gif "wcfc\_SOAP1\-1AndSOAP1\-2FaultComparisonc") +SOAP 1.2 エラー \(左\) と SOAP 1.1 エラー \(右\)。Fault 要素が名前空間で修飾されているのは SOAP 1.1 のみ。 + + SOAP では、エラー メッセージとは、`` の子要素としてエラー要素 \(`` という名前の要素\) だけを含むメッセージと定義されています。図 1 に示すように、エラー要素の内容は SOAP 1.1 と SOAP 1.2 で若干異なります。ただし、次のように、 クラスでは、これらの違いを 1 つのオブジェクト モデルに正規化します。 + +``` +public abstract class MessageFault +{ + protected MessageFault(); + + public virtual string Actor { get; } + public virtual string Node { get; } + public static string DefaultAction { get; } + public abstract FaultCode Code { get; } + public abstract bool HasDetail { get; } + public abstract FaultReason Reason { get; } + + public T GetDetail(); + public T GetDetail( XmlObjectSerializer serializer); + public System.Xml.XmlDictionaryReader GetReaderAtDetailContents(); + + // other methods omitted +} +``` + + `Code` プロパティは、`env:Code` \(または SOAP 1.1 の `faultCode`\) に対応し、エラーの種類を識別します。SOAP 1.2 では、`faultCode` の 5 つの許容値 \(Sender や Receiver など\) が定義されており、サブコード値を格納できる `Subcode` 要素も定義されています \(使用できるエラー コードとその意味の一覧については、[SOAP 1.2 の仕様](http://go.microsoft.com/fwlink/?LinkId=95176)を参照してください\)。SOAP 1.1 の機構は若干異なります。SOAP 1.1 では、`faultCode` の 4 つの値 \(Client や Server など\) が定義されています。これらの値は、まったく新しい値を定義するか、ドット表記を使用して Client.Authentication のようなより具体的な `faultCodes` を作成することによって拡張できます。 + + MessageFault を使用してエラーをプログラミングする場合、FaultCode.Name と FaultCode.Namespace は、SOAP 1.2 の `env:Code` または SOAP 1.1 の `faultCode` の名前と名前空間に割り当てられます。FaultCode.SubCode は、SOAP 1.2 では `env:Subcode` に割り当てられ、SOAP 1.1 では null になります。 + + エラーをプログラムによって区別する場合は、新しいエラー サブコード \(SOAP 1.1 を使用する場合は新しいエラー コード\) を作成します。これは、新しい例外の種類を作成することに似ています。SOAP 1.1 エラー コードではドット表記を使用しないようにすることをお勧めします \([WS\-I Basic Profile](http://go.microsoft.com/fwlink/?LinkId=95177) でも、エラー コードのドット表記の使用は推奨されていません\)。 + +``` +public class FaultCode +{ + public FaultCode(string name); + public FaultCode(string name, FaultCode subCode); + public FaultCode(string name, string ns); + public FaultCode(string name, string ns, FaultCode subCode); + + public bool IsPredefinedFault { get; } + public bool IsReceiverFault { get; } + public bool IsSenderFault { get; } + public string Name { get; } + public string Namespace { get; } + public FaultCode SubCode { get; } + +// methods omitted + +} +``` + + `Reason` プロパティは、`env:Reason` \(または SOAP 1.1 の `faultString`\) に対応しています。これは、例外のメッセージと同様に、ユーザーが判読できるエラー状態の記述です。`FaultReason` クラス \(および SOAP の `env:Reason/faultString`\) には、グローバリゼーションのために、複数の変換を使用するためのサポートが組み込まれています。 + +``` +public class FaultReason +{ + public FaultReason(FaultReasonText translation); + public FaultReason(IEnumerable translations); + public FaultReason(string text); + + public SynchronizedReadOnlyCollection Translations + { + get; + } + + } +``` + + エラーの詳しい内容は、`GetDetail`\ や `GetReaderAtDetailContents`\(\) などのさまざまなメソッドを使用して、MessageFault で公開されます。エラーの詳細は、エラーに関する追加情報を伝達するための不透明な要素です。これは、エラーと共に伝達する任意の構造化された詳細がある場合に役立ちます。 + +### エラーの生成 + このセクションでは、チャネルまたはチャネルによって作成されたメッセージ プロパティで検出されるエラー状態に応じてエラーを生成するプロセスについて説明します。一般的な例として、無効なデータが含まれた要求メッセージに対するエラーの送信が挙げられます。 + + エラーの生成時には、カスタム チャネルからエラーを直接送信するのではなく、例外をスローするようにし、その例外をエラーに変換するかどうかの判断とエラーの送信方法の決定は上位のレイヤーで行います。この変換を支援するために、チャネルは `FaultConverter` を実装し、カスタム チャネルがスローした例外を適切なエラーに変換できるようにします。`FaultConverter` は次のように定義します。 + +``` +public class FaultConverter +{ + public static FaultConverter GetDefaultFaultConverter( + MessageVersion version); + protected abstract bool OnTryCreateFaultMessage( + Exception exception, + out Message message); + public bool TryCreateFaultMessage( + Exception exception, + out Message message); +} +``` + + カスタム エラーを生成する各チャネルは `FaultConverter` を実装し、`GetProperty` の呼び出しからこれを返す必要があります。カスタム `OnTryCreateFaultMessage` 実装では、例外をエラーに変換するか、内部チャネルの `FaultConverter` に委任する必要があります。チャネルがトランスポートの場合は、例外を変換するか、エンコーダーの `FaultConverter` または [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意された既定の `FaultConverter` に委任する必要があります。既定の `FaultConverter` は、WS\-Addressing および SOAP で指定されたエラー メッセージに対応するエラーを変換します。`OnTryCreateFaultMessage` 実装の例を次に示します。 + +``` +public override bool OnTryCreateFaultMessage(Exception exception, + out Message message) +{ + if (exception is ...) + { + message = ...; + return true; + } + +#if IMPLEMENTING_TRANSPORT_CHANNEL + FaultConverter encoderConverter = + this.encoder.GetProperty(); + if ((encoderConverter != null) && + (encoderConverter.TryCreateFaultMessage( + exception, out message))) + { + return true; + } + + FaultConverter defaultConverter = + FaultConverter.GetDefaultFaultConverter( + this.channel.messageVersion); + return defaultConverter.TryCreateFaultMessage( + exception, + out message); +#else + FaultConverter inner = + this.innerChannel.GetProperty(); + if (inner != null) + { + return inner.TryCreateFaultMessage(exception, out message); + } + else + { + message = null; + return false; + } +#endif +} +``` + + このパターンでは、エラーを必要とするエラー状態についてレイヤー間でスローされる例外に、対応するエラー ジェネレーターが適切なエラーを作成できるだけの情報が含まれている必要があります。カスタム チャネル作成者は、さまざまなエラー状態に対応する例外の種類を定義できます \(特定のエラー状態に対応する既存の例外がない場合\)。チャネル レイヤーを越えて伝播する例外では、不明瞭なエラー データではなく、エラー状態を伝える必要があります。 + +### エラーのカテゴリ + 一般に、エラーは次の 3 つのカテゴリに分類されます。 + +1. スタック全体にわたるエラー。このようなエラーは、チャネル スタックのどのレイヤーでも発生する可能性があります \(例 : InvalidCardinalityAddressingException\)。 + +2. スタックの特定のレイヤーより上位の任意の場所で発生する可能性があるエラー \(例 : フローされたトランザクションやセキュリティ ロールに関するエラー\)。 + +3. スタックの単一のレイヤーを対象とするエラー \(例 : WS\-RM シーケンス番号エラー\)。 + + カテゴリ 1: 一般に、WS\-Addressing エラーおよび SOAP エラーです。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意された `FaultConverter` 基本クラスでは、WS\-Addressing および SOAP で指定されたエラー メッセージに対応するエラーを変換するため、カスタム チャネル作成者がこれらの例外の変換を処理する必要はありません。 + + カテゴリ 2: レイヤーに関するメッセージ情報を完全に使用しているわけではないメッセージに対して、そのレイヤーがプロパティを追加したときに発生します。後で上位のレイヤーがメッセージ情報をさらに処理するために、メッセージ プロパティを要求したときに、エラーが検出されることがあります。このようなチャネルでは、前述の `GetProperty` を実装して、上位のレイヤーが適切なエラーを返すことができるようにする必要があります。プロパティの例として、TransactionMessageProperty があります。このプロパティは、ヘッダー内のすべてのデータが完全には検証されずにメッセージに追加されます \(この検証には、分散トランザクション コーディネーター \(DTC\) への接続が必要になることがあります\)。 + + カテゴリ 3: エラーは、プロセッサ内の単一のレイヤーによって生成され、送信されるだけです。したがって、すべての例外はそのレイヤー内に含まれます。チャネル間の整合性を向上させ、保守を容易にするために、カスタム チャネルでは、前述のパターンを使用して、内部エラーについてもエラー メッセージを生成することをお勧めします。 + +### 受信したエラーの解釈 + このセクションでは、エラー メッセージを受信したときに、適切な例外を生成するためのガイダンスを示します。スタックのすべてのレイヤーにおけるメッセージ処理に関するデシジョン ツリーを以下に示します。 + +1. レイヤーがメッセージを無効と見なした場合、レイヤーは "無効なメッセージ" の処理を実行する必要があります。このような処理はレイヤーに固有のものですが、メッセージの破棄、トレース、エラーに変換される例外のスローなどの処理が可能です。たとえば、適切に保護されていないメッセージをセキュリティが受信した場合や、RM が不正なシーケンス番号を持つメッセージを受信した場合などです。 + +2. メッセージが特定のレイヤーに適用されるエラー メッセージであり、そのレイヤーの対話以外では意味がないものである場合、該当のレイヤーがエラー状態を処理する必要があります。この一例として、RM シーケンス拒否エラーが挙げられます。これは、RM チャネルにエラーが発生し、保留中の操作からスローされていることを示しており、RM チャネルより上位のレイヤーにとっては意味のないエラーです。 + +3. それ以外の場合は、Request\(\) または Receive\(\) からメッセージを返すようにします。たとえば、レイヤーはエラーを認識しているが、そのエラーは要求が失敗したことを示しているにすぎず、チャネルにエラーが発生し、保留中の操作からスローされていることを意味しているわけではない場合などです。このような場合にユーザビリティを向上させるには、レイヤーで `GetProperty` を実装し、`FaultConverter` 派生クラスを返すようにします。この派生クラスは、`OnTryCreateException` をオーバーライドすることで、エラーを例外に変換できます。 + + 次のオブジェクト モデルは、メッセージから例外への変換をサポートします。 + +``` +public class FaultConverter +{ + public static FaultConverter GetDefaultFaultConverter( + MessageVersion version); + protected abstract bool OnTryCreateException( + Message message, + MessageFault fault, + out Exception exception); + public bool TryCreateException( + Message message, + MessageFault fault, + out Exception exception); +} +``` + + チャネル レイヤーは、`GetProperty` を実装することで、エラー メッセージから例外への変換をサポートできます。これを行うには、`OnTryCreateException` をオーバーライドし、エラー メッセージを検査します。エラー メッセージを認識した場合は、変換を実行します。それ以外の場合は、エラー メッセージの変換を内部チャネルに要求します。トランスポート チャネルでは、`FaultConverter.GetDefaultFaultConverter` に既定の SOAP\/WS\-Addressing FaultConverter の取得を委任する必要があります。 + + 一般的な実装は、次のようになります。 + +``` +public override bool OnTryCreateException( + Message message, + MessageFault fault, + out Exception exception) +{ + if (message.Action == "...") + { + exception = ...; + return true; + } + // OR + if ((fault.Code.Name == "...") && (fault.Code.Namespace == "...")) + { + exception = ...; + return true; + } + + if (fault.IsMustUnderstand) + { + if (fault.WasHeaderNotUnderstood( + message.Headers, "...", "...")) + { + exception = new ProtocolException(...); + return true; + } + } + +#if IMPLEMENTING_TRANSPORT_CHANNEL + FaultConverter encoderConverter = + this.encoder.GetProperty(); + if ((encoderConverter != null) && + (encoderConverter.TryCreateException( + message, fault, out exception))) + { + return true; + } + + FaultConverter defaultConverter = + FaultConverter.GetDefaultFaultConverter( + this.channel.messageVersion); + return defaultConverter.TryCreateException( + message, fault, out exception); +#else + FaultConverter inner = + this.innerChannel.GetProperty(); + if (inner != null) + { + return inner.TryCreateException(message, fault, out exception); + } + else + { + exception = null; + return false; + } +#endif +} +``` + + 明確な回復シナリオが用意されたエラー状態については、`ProtocolException` の派生クラスを定義することを検討してください。 + +### MustUnderstand の処理 + SOAP には、必須のヘッダーが受信側で認識されなかったことを通知するための一般的なエラーが定義されています。このエラーは、`mustUnderstand` エラーと呼ばれます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、カスタム チャネルで `mustUnderstand` エラーを生成することはありません。代わりに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 通信スタックの最上位にある [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ディスパッチャーが、MustUndestand\=true としてマークされたすべてのヘッダーが基になるスタックで認識されているかどうかをチェックします。認識されていないヘッダーが見つかった場合、その時点で `mustUnderstand` エラーが生成されます \(ユーザーは、この `mustUnderstand` の処理を無効にし、すべてのメッセージ ヘッダーをアプリケーションで受信するようにすることができます。その場合、`mustUnderstand` の処理はアプリケーションが実行します\)。生成されたエラーには、NotUnderstood ヘッダーが含まれます。このヘッダーには、MustUnderstand\=true でマークされたヘッダーの中で、認識されなかったすべてのヘッダーの名前が含まれています。 + + プロトコル チャネルから MustUnderstand\=true でマークされたカスタム ヘッダーを送信し、`mustUnderstand` エラーを受信した場合、そのエラーが送信したヘッダーに起因するものかどうかを確認する必要があります。`MessageFault` クラスには、このために役立つ 2 つのメンバーが存在します。 + +``` +public class MessageFault +{ + ... + public bool IsMustUnderstandFault { get; } + public static bool WasHeaderNotUnderstood(MessageHeaders headers, + string name, string ns) { } + ... + +} +``` + + エラーが `mustUnderstand` エラーの場合、`IsMustUnderstandFault` は `true` を返します。指定した名前と名前空間を持つヘッダーが NotUnderstood ヘッダーとしてエラーに含まれている場合、`WasHeaderNotUnderstood` は `true` を返します。それ以外の場合は、`false` を返します。 + + MustUnderstand \= true でマークされたヘッダーをチャネルで出力する場合は、該当のレイヤーも例外生成 API パターンを実装し、出力したヘッダーが原因で発生した `mustUnderstand` エラーを前述のより有用な例外に変換する必要があります。 + +## トレース + デバッガーをアタッチしてコードを段階的に実行できない場合に、運用アプリケーションや断続的な問題の診断を支援する 1 つの方法として、.NET Framework にはプログラムの実行をトレースする機構が用意されています。この機構のコア コンポーネントは 名前空間にあり、以下で構成されます。 + +- は、書き込むトレース情報のソースです。 は、 からトレースする情報を受け取り、リスナー固有の送信先に出力する具象リスナーの抽象基本クラスです。たとえば、 は、トレース情報を XML ファイルに出力します。最後に、 を使用すると、アプリケーション ユーザーがトレースの詳細出力レベルを制御できます。通常、このクラスは構成で指定します。 + +- コア コンポーネントに加え、[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) を使用すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のトレースを表示および検索できます。このツールは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって生成され、 を使用して書き込まれるトレース ファイル用に特別に設計されています。トレースに関与するさまざまなコンポーネントを次の図に示します。 + + ![例外とエラーの処理](../../../../docs/framework/wcf/extending/media/wcfc-tracinginchannelsc.gif "wcfc\_TracingInChannelsc") + +### カスタム チャネルからのトレース + 実行中のアプリケーションにデバッガーをアタッチできないときに問題の診断を支援するために、カスタム チャネルはトレース メッセージを書き込む必要あります。この場合、 のインスタンス化と、トレースを書き込むためのメソッドの呼び出しの 2 つの高度なタスクが必要となります。 + + をインスタンス化する場合、指定した文字列が対象のソースの名前になります。この名前を使用して、トレース ソースを構成 \(有効化\/無効化\/トレース レベルの設定\) します。また、トレース出力にもこの名前が表示されます。カスタム チャネルは、一意のソース名を使用して、トレース出力の利用者にトレース情報のソースがわかるようにする必要があります。トレース ソースの名前として、情報を書き込むアセンブリの名前を使用するのが一般的です。たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、System.ServiceModel アセンブリから書き込まれる情報のトレース ソースとして、System.ServiceModel を使用します。 + + トレース ソースを用意したら、、または の各メソッドを呼び出して、トレース エントリをトレース リスナーに書き込みます。書き込む各トレース エントリのイベントの種類は、 に定義されたイベントの種類のいずれかとして分類する必要があります。この分類と構成でのトレース レベルの設定によって、トレース エントリをリスナーに出力するかどうかが決まります。たとえば、構成でトレース レベルを `Warning` に設定すると、`Warning`、`Error`、および `Critical` の各トレース エントリを書き込むことができますが、Information エントリと Verbose エントリはブロックされます。トレース ソースをインスタンス化し、Information レベルでエントリを書き込む例を次に示します。 + +``` +using System.Diagnostics; +//... +TraceSource udpSource=new TraceSource("Microsoft.Samples.Udp"); +//... +udpsource.TraceInformation("UdpInputChannel received a message"); +``` + +> [!IMPORTANT] +> カスタム チャネル固有のトレース ソース名を指定して、トレース出力の利用者に出力のソースがわかるようにすることを強くお勧めします。 + +#### トレース ビューアーとの統合 + トレース リスナーとして を使用すると、チャネルによって生成されたトレースを [サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) で読み取り可能な形式で出力できます。これは、チャネル開発者が行う必要はありません。アプリケーション ユーザー \(またはアプリケーションのトラブルシューティング担当者\) が、アプリケーションの構成ファイルでこのトレース リスナーを構成する必要があります。たとえば、次の構成では、 と `Microsoft.Samples.Udp` の両方から `TraceEventsFile.e2e` というファイルにトレース情報が出力されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + +``` + +#### 構造化されたデータのトレース + には、トレース エントリに含まれる 1 つ以上のオブジェクトを取得する メソッドがあります。通常、 メソッドは各オブジェクトに対して呼び出され、生成された文字列はトレース エントリの一部として書き込まれます。 を使用してトレースを出力する場合、データ オブジェクトとして に渡すことができます。生成されるトレース エントリには、 によって提供された XML が含まれます。XML アプリケーション データが含まれたエントリの例を次に示します。 + +``` + + + 12 + 3 + 0 + 8 + + + + + + COMPUTER-LT01 + + + + + + + some trace id + EndReceive called + UdpTestConsole.exe + UdpInputChannel + + + + + +``` + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] トレース ビューアーは、上記の `TraceRecord` 要素のスキーマを認識し、その子要素からデータを抽出して表形式で表示します。チャネルで構造化されたアプリケーション データをトレースするときには、このスキーマを使用して Svctraceviewer.exe のユーザーがデータを判読しやすいようにします。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-compare-claims.md b/docs/framework/wcf/extending/how-to-compare-claims.md new file mode 100644 index 00000000000..a1fba258a6d --- /dev/null +++ b/docs/framework/wcf/extending/how-to-compare-claims.md @@ -0,0 +1,79 @@ +--- +title: "方法 : クレームを比較する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クレーム [WCF]" + - "クレーム [WCF], 比較" +ms.assetid: 0c4ec84d-53df-408f-8953-9bc437f56c28 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 方法 : クレームを比較する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 内の識別モデル インフラストラクチャを使用して、承認確認を実行します。この場合、一般的なタスクとして、承認コンテキスト内のクレームが、要求されたアクションの実行や要求されたリソースへのアクセスに必要なクレームと比較されます。このトピックでは、組み込みとカスタム クレームの型を含め、クレームの比較方法について説明します。ID モデル インフラストラクチャ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md)」を参照してください。 + + クレームの比較では、クレーム間で 3 つの部分 \(型、権限、およびリソース\) の比較が行われ、等しいかどうかが判断されます。次の例を参照してください。 + + [!code-csharp[c_CustomClaimComparison#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaimcomparison/cs/c_customclaimcomparison.cs#9)] + [!code-vb[c_CustomClaimComparison#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaimcomparison/vb/source.vb#9)] + + いずれのクレームにも、クレームの型として 、権限として 、および文字列リソースとして "someone" が設定されています。クレームの 3 つの部分のすべてが等しいため、この 2 つのクレームは等しくなります。 + + 組み込みのクレームの型の比較には、 メソッドを使用します。必要に応じて、クレーム固有の比較コードが使用されます。たとえば、次の 2 つのユーザー プリンシパル名 \(UPN\) クレームがあるとします。 + + [!code-csharp[c_CustomClaimComparison#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaimcomparison/cs/c_customclaimcomparison.cs#4)] + [!code-vb[c_CustomClaimComparison#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaimcomparison/vb/source.vb#4)] + + `example\someone` が "someone@example.com" と同じドメイン ユーザーを示すと見なし、 メソッド内の比較コードは `true` を返します。 + + カスタム クレームの型の比較にも、 メソッドを使用できます。ただし、クレームの プロパティから返された型がプリミティブ型ではない場合、 が `true` を返すのは、`Resource` プロパティから返された値どうしが等しいと メソッドが見なした場合のみです。この動作が適切でない場合は、`Resource` プロパティから返されたカスタム型で メソッドと メソッドを上書きし、必要なカスタム処理を実行する必要があります。 + +### 組み込みのクレームの比較 + +1. クラスの 2 つのインスタンスがある場合、次に示すコードのように、 を使用して比較します。 + + [!code-csharp[c_CustomClaimComparison#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaimcomparison/cs/c_customclaimcomparison.cs#5)] + [!code-vb[c_CustomClaimComparison#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaimcomparison/vb/source.vb#5)] + +### カスタム クレームとプリミティブ リソース型の比較 + +1. プリミティブ リソース型を含むカスタム クレームでは、次のコードのように、組み込みのクレームとして比較を実行できます。 + + [!code-csharp[c_CustomClaimComparison#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaimcomparison/cs/c_customclaimcomparison.cs#6)] + [!code-vb[c_CustomClaimComparison#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaimcomparison/vb/source.vb#6)] + +2. 構造体またはクラスをベースとしたリソース型を含むカスタム クレームでは、そのリソース型で メソッドを上書きする必要があります。 + +3. まず、`obj` パラメーターが `null` であるかどうかを確認し、null である場合は `false` を返します。 + + [!code-csharp[c_CustomClaimComparison#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaimcomparison/cs/c_customclaimcomparison.cs#7)] + [!code-vb[c_CustomClaimComparison#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaimcomparison/vb/source.vb#7)] + +4. 次に、 を呼び出し、パラメーターとして `this` と `obj` を渡します。`true` が返されたら、`true` を返します。 + + [!code-csharp[c_CustomClaimComparison#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaimcomparison/cs/c_customclaimcomparison.cs#8)] + [!code-vb[c_CustomClaimComparison#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaimcomparison/vb/source.vb#8)] + +5. さらに、`obj` をクラスの型のローカル変数に割り当てます。この処理が失敗すると、参照が `null` になります。この場合、`false` が返されます。 + +6. 現在のクレームと提供されたクレームを正しく比較するために必要なカスタム比較を実行します。 + +## 使用例 + 次の例では、クレームの型がプリミティブ型以外のカスタム クレームを比較します。 + + [!code-csharp[c_CustomClaimComparison#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaimcomparison/cs/c_customclaimcomparison.cs#0)] + [!code-vb[c_CustomClaimComparison#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaimcomparison/vb/source.vb#0)] + +## 参照 + [ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) + [方法 : カスタム クレームを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-claim.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-configure-a-custom-ws-metadata-exchange-binding.md b/docs/framework/wcf/extending/how-to-configure-a-custom-ws-metadata-exchange-binding.md new file mode 100644 index 00000000000..c44b17f89ee --- /dev/null +++ b/docs/framework/wcf/extending/how-to-configure-a-custom-ws-metadata-exchange-binding.md @@ -0,0 +1,129 @@ +--- +title: "方法 : カスタム WS-Metadata Exchange バインディングを構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WS-Metadata Exchange [WCF]" + - "WS-Metadata Exchange [WCF], カスタム バインディングの構成" +ms.assetid: cdba4d73-da64-4805-bc56-9822becfd1e4 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 方法 : カスタム WS-Metadata Exchange バインディングを構成する +ここでは、カスタム WS\-Metadata Exchange バインディングを構成する方法について説明します。 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、4 つのシステム定義のメタデータ バインディングがありますが、どのバインディングでもメタデータを公開できます。 ここでは、`wsHttpBinding` を使用してメタデータを公開する方法を示します。 このバインディングでは、メタデータをセキュリティで保護して公開することができます。 ここに示すコードは、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 + +### 構成ファイルの使用 + +1. サービスの構成ファイルで、`serviceMetadata` タグを含んだサービス動作を追加します。 + + ``` + + + + + + + + ``` + +2. この新しい動作を参照する `behaviorConfiguration` 属性をサービス タグに追加します。 + + ``` + + ``` + +3. メタデータ エンドポイントを追加し、アドレスに mex、バインディングに `wsHttpBinding`、コントラクトに をそれぞれ指定します。 + + ``` + + ``` + +4. Metadata Exchange エンドポイントが適切に動作することを確認するには、クライアントの構成ファイルにエンドポイント タグを追加します。 + + ``` + + ``` + +5. クライアントの Main\(\) メソッドで、新しい インスタンスを作成し、その プロパティを `true` に設定し、 を呼び出して返されるメタデータのコレクションを反復処理します。 + + ``` + string mexAddress = "http://localhost:8000/servicemodelsamples/service/mex"; + + MetadataExchangeClient mexClient = new MetadataExchangeClient("MyMexEndpoint"); + mexClient.ResolveMetadataReferences = true; + MetadataSet mdSet = mexClient.GetMetadata(new EndpointAddress(mexAddress)); + foreach (MetadataSection section in mdSet.MetadataSections) + Console.WriteLine("Metadata section: " + section.Dialect.ToString()); + ``` + +### コードによる構成 + +1. バインディングのインスタンスを作成します。 + + ``` + WSHttpBinding binding = new WSHttpBinding(); + ``` + +2. インスタンスを作成します。 + + ``` + ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress); + ``` + +3. サービス エンドポイントと インスタンスを追加します。 + + ``` + serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, baseAddress); + ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); + smb.HttpGetEnabled = true; + serviceHost.Description.Behaviors.Add(smb); + ``` + +4. 前に作成した を指定する Metadata Exchange エンドポイントを追加します。 + + ``` + serviceHost.AddServiceEndpoint(typeof(IMetadataExchange), binding, mexAddress); + ``` + +5. Metadata Exchange エンドポイントが適切に動作することを確認するには、クライアントの構成ファイルにエンドポイント タグを追加します。 + + ``` + + ``` + +6. クライアントの Main\(\) メソッドで、新しい インスタンスを作成し、その プロパティを `true` に設定し、 を呼び出して返されるメタデータのコレクションを反復処理します。 + + ``` + string mexAddress = "http://localhost:8000/servicemodelsamples/service/mex"; + + MetadataExchangeClient mexClient = new MetadataExchangeClient("MyMexEndpoint"); + mexClient.ResolveMetadataReferences = true; + MetadataSet mdSet = mexClient.GetMetadata(new EndpointAddress(mexAddress)); + foreach (MetadataSection section in mdSet.MetadataSections) + Console.WriteLine("Metadata section: " + section.Dialect.ToString()); + + ``` + +## 参照 + [メタデータ公開動作](../../../../docs/framework/wcf/samples/metadata-publishing-behavior.md) + [メタデータの抽出](../../../../docs/framework/wcf/samples/retrieve-metadata.md) + [メタデータ](../../../../docs/framework/wcf/feature-details/metadata.md) + [メタデータの公開](../../../../docs/framework/wcf/feature-details/publishing-metadata.md) + [メタデータ エンドポイントを公開する](../../../../docs/framework/wcf/publishing-metadata-endpoints.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md b/docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md new file mode 100644 index 00000000000..f8bb311f604 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md @@ -0,0 +1,127 @@ +--- +title: "方法 : サービスで使用するカスタム承認マネージャーを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "OperationRequirement クラス" + - "Windows Communication Foundation, 拡張" +ms.assetid: 6214afde-44c1-4bf5-ba07-5ad6493620ea +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# 方法 : サービスで使用するカスタム承認マネージャーを作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 内の識別モデル インフラストラクチャでは、拡張性のあるクレーム ベースの承認モデルがサポートされます。クレームはトークンから抽出され、状況に応じてカスタム承認ポリシーによって処理されてから、 に格納されます。承認マネージャーは、 内のクレームを検査して承認に関する決定を行います。 + + 既定では、承認に関する決定は、 クラスによって行われますが、カスタム承認マネージャーを作成することによってオーバーライドできます。カスタム承認マネージャーを作成するには、 から派生するクラスを作成し、 メソッドを実装します。承認に関する決定は、 メソッド内で行われます。このメソッドは、アクセスが許可されている場合は `true` を返し、拒否されている場合は `false` を返します。 + + 承認決定がメッセージ本文の内容に依存する場合は、 メソッドを使用します。 + + パフォーマンスの問題があるので、可能であればアプリケーションを再デザインして、承認決定でメッセージ本文にアクセスする必要がないようにしてください。 + + サービスのカスタム承認マネージャーは、コードまたは構成に登録できます。 + +### カスタム承認マネージャーを作成するには + +1. クラスからクラスを派生させます。 + + [!code-csharp[c_CustomAuthMgr#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customauthmgr/cs/c_customauthmgr.cs#5)] + [!code-vb[c_CustomAuthMgr#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customauthmgr/vb/c_customauthmgr.vb#5)] + +2. メソッドをオーバーライドします。 + + メソッドに渡される を使用して、承認に関する決定を行います。 + + 承認に関する決定を行うために、 メソッドを使用してカスタム クレーム `http://www.contoso.com/claims/allowedoperation` を検索する方法を次のコード例に示します。 + + [!code-csharp[c_CustomAuthMgr#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customauthmgr/cs/c_customauthmgr.cs#6)] + [!code-vb[c_CustomAuthMgr#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customauthmgr/vb/c_customauthmgr.vb#6)] + +### コードを使用してカスタム承認マネージャーを登録するには + +1. カスタム承認マネージャーのインスタンスを作成し、これを プロパティに割り当てます。 + + には、 プロパティを使用してアクセスできます。 + + `MyServiceAuthorizationManager` カスタム承認マネージャーを登録するコード例を次に示します。 + + [!code-csharp[c_CustomAuthMgr#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customauthmgr/cs/c_customauthmgr.cs#4)] + [!code-vb[c_CustomAuthMgr#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customauthmgr/vb/c_customauthmgr.vb#4)] + +### 構成を使用してカスタム承認マネージャーを登録するには + +1. サービスの構成ファイルを開きます。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md)に [\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md)を追加します。 + + [\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md)に `serviceAuthorizationManagerType` 属性を追加し、この属性の値をカスタム承認マネージャーを表す型に設定します。 + +3. クライアントとサービスの間の通信をセキュリティで保護するバインディングを追加します。 + + この通信用に選択されたバインディングによって、 に追加されるクレームが決まります。これは、カスタム承認マネージャーが承認に関する決定を行うために使用します。システム指定のバインディングの詳細については、「[システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。 + +4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/service.md) 要素を追加し、`behaviorConfiguration` 属性の値を [\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md) 要素の名前属性の値に設定して、サービス エンドポイントに動作を関連付けます。 + + サービス エンドポイントの構成の詳細については、「[方法 : 構成にサービス エンドポイントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md)」を参照してください。 + + カスタム承認マネージャー `Samples.MyServiceAuthorizationManager` を登録するコード例を次に示します。 + + ``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ``` + + > [!WARNING] + > serviceAuthorizationManagerType を指定する場合、文字列には、完全修飾型名、コンマ、型が定義されているアセンブリの名前が含まれている必要があります。アセンブリ名を省略した場合、WCF は、System.ServiceModel.dll から型を読み込もうとします。 + +## 使用例 + メソッドのオーバーライドを含む クラスの基本実装を次のコード例に示します。このコード例は、 のカスタム クレームを調べ、そのカスタム クレームのリソースが のアクション値と一致した場合に `true` を返します。 クラスのより完全な実装については、「[承認ポリシー](../../../../docs/framework/wcf/samples/authorization-policy.md)」を参照してください。 + + [!code-csharp[c_CustomAuthMgr#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customauthmgr/cs/c_customauthmgr.cs#2)] + [!code-vb[c_CustomAuthMgr#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customauthmgr/vb/c_customauthmgr.vb#2)] + +## 参照 + + [承認ポリシー](../../../../docs/framework/wcf/samples/authorization-policy.md) + [承認ポリシー](../../../../docs/framework/wcf/samples/authorization-policy.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-create-a-custom-authorization-policy.md b/docs/framework/wcf/extending/how-to-create-a-custom-authorization-policy.md new file mode 100644 index 00000000000..6fdeea16c53 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-create-a-custom-authorization-policy.md @@ -0,0 +1,86 @@ +--- +title: "方法 : カスタム承認ポリシーを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 05b0549b-882d-4660-b6f0-5678543e5475 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : カスタム承認ポリシーを作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 内の識別モデル インフラストラクチャでは、クレーム ベースの承認モデルがサポートされます。クレームは、トークンから抽出され、状況に応じてカスタム承認ポリシーによって処理されてから、承認決定を行う際に確認できる に格納されます。カスタム ポリシーを使用して、入力トークンからのクレームを、アプリケーションが要求するクレームに変換することができます。この方法では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がサポートするトークンの種類から抽出される個々のクレームの詳細から、アプリケーション レイヤーを分離できます。このトピックでは、カスタム承認ポリシーの実装方法と、サービスで使用するポリシーのコレクションにカスタム承認ポリシーを追加する方法について説明します。 + +### カスタム承認ポリシーを実装するには + +1. から派生する新しいクラスを定義します。 + +2. クラスのコンストラクター内で一意の文字列を生成し、プロパティがアクセスされたときにその文字列を返すことによって、読み取り専用の プロパティを実装します。 + +3. ポリシーの発行者を表す を返すことによって、読み取り専用の プロパティを実装します。これは、アプリケーションを表す `ClaimSet`、または組み込み `ClaimSet` \(静的な プロパティから返される `ClaimSet` など\) にすることができます。 + +4. 次の手順に従って、 メソッドを実装します。 + +### Evaluate メソッドを実装するには + +1. このメソッドには、 クラスのインスタンスとオブジェクト参照の 2 つのパラメーターが渡されます。 + +2. カスタム承認ポリシーで、 の現在の内容とは無関係に インスタンスを追加する場合は、 メソッドを呼び出して各 `ClaimSet` を追加し、 メソッドから `true` を返します。`true` を返すことは、承認インフラストラクチャに対して、承認ポリシーがその処理を完了したため、もう一度呼び出す必要がないことを知らせることになります。 + +3. カスタム承認ポリシーで `EvaluationContext` 内に特定のクレームが既に存在するときにのみクレーム セットを追加する場合は、 プロパティから返された `ClaimSet` インスタンスを調べて、該当するクレームを見つけます。クレームが見つかった場合は、 メソッドを呼び出して新しいクレーム セットを追加します。追加するクレーム セットがない場合は、`true` を返し、承認インフラストラクチャに承認ポリシーがその処理を完了したことを知らせます。クレームが存在しない場合は `false` を返し、他の承認ポリシーで `EvaluationContext` にさらにクレーム セットを追加する場合は、もう一度承認ポリシーを呼び出す必要があることを知らせます。 + +4. より複雑な処理シナリオでは、 メソッドの 2 番目のパラメーターを使用して、特定の評価のために メソッドに対するその後の呼び出し時に承認インフラストラクチャから返される状態変数を格納します。 + +### 構成を使用してカスタム承認ポリシーを指定するには + +1. `serviceAuthorization` 要素の `authorizationPolicies` 要素にある `add` 要素の `policyType` 属性でカスタム承認ポリシーの種類を指定します。 + + ``` + + + + + + + + + + + ``` + +### コードを使用してカスタム承認ポリシーを指定するには + +1. を作成します。 + +2. カスタム承認ポリシーのインスタンスを作成します。 + +3. リストに承認ポリシー インスタンスを追加します。 + +4. カスタム承認ポリシーごとに手順 2. と 3. を繰り返します。 + +5. プロパティにリストの読み取り専用バージョンを割り当てます。 + + [!code-csharp[c_CustomAuthPol#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customauthpol/cs/c_customauthpol.cs#8)] + [!code-vb[c_CustomAuthPol#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customauthpol/vb/source.vb#8)] + +## 使用例 + 完成した の実装例を次に示します。 + + [!code-csharp[c_CustomAuthPol#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customauthpol/cs/c_customauthpol.cs#5)] + [!code-vb[c_CustomAuthPol#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customauthpol/vb/source.vb#5)] + +## 参照 + + [方法 : クレームを比較する](../../../../docs/framework/wcf/extending/how-to-compare-claims.md) + [方法 : サービスで使用するカスタム承認マネージャーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md) + [承認ポリシー](../../../../docs/framework/wcf/samples/authorization-policy.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-create-a-custom-claim.md b/docs/framework/wcf/extending/how-to-create-a-custom-claim.md new file mode 100644 index 00000000000..db936047d41 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-create-a-custom-claim.md @@ -0,0 +1,89 @@ +--- +title: "方法 : カスタム クレームを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d619976b-eda3-475e-ac23-c7988a2dceb0 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : カスタム クレームを作成する +Id モデル インフラストラクチャで[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)]ヘルパー関数を作成するための組み込みクレームの種類と権限のセットを提供その種類と権限を持つインスタンス。 この組み込みクレームは、既定で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] をサポートするクライアント資格情報の型内にある情報をモデル化するように作成されています。 多くの場合はこの組み込みクレームで十分ですが、一部のアプリケーションでカスタム クレームが必要になる場合があります。 クレームは、クレームが適用されるリソースを示すクレームの種類と、リソースにアサートされる権限で構成されます。 このトピックでは、カスタム クレームを作成する方法について説明します。 + +### プリミティブ データ型に基づくカスタム クレームを作成するには + +1. クレームの種類、リソースの値とする権利を渡すことによって、カスタム クレームを作成、 コンス トラクターです。 + + 1. クレームの種類の一意の値を指定します。 + + クレームの種類は一意の文字列識別子です。 カスタム クレームを作成する場合、クレームの種類に使用されている文字列識別子が一意になるようにしてください。 定義されているクレームの種類の一覧については[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]を参照してください、 クラスです。 + + 2. プリミティブ データ型とリソースの値を選択します。 + + リソースはオブジェクトです。 リソースの CLR 型では、プリミティブをなど、または、または任意のシリアル化可能な型です。 クレームは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によりさまざまな点でシリアル化されるため、CLR 型のリソースはシリアル化可能なものにする必要があります。 プリミティブ型はシリアル化できます。 + + 3. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で定義されている権限か、カスタム権限の一意の値を選択します。 + + 権限は一意の文字列識別子です。 定義されている権利[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]で定義された、クラスです。 + + カスタム クレームを作成する場合、権限に使用されている文字列識別子が一意になるようにしてください。 + + 次のコード例では、カスタム クレームを作成の要求の種類で`http://example.org/claims/simplecustomclaim`、という名前のリソースの`Driver's License`を使用して、 適切です。 + + [!code-csharp[c_CustomClaim#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaim/cs/c_customclaim.cs#4)] + [!code-vb[c_CustomClaim#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaim/vb/c_customclaim.vb#4)] + +### プリミティブ以外のデータ型に基づくカスタム クレームを作成するには + +1. クレームの種類、リソースの値とする権利を渡すことによって、カスタム クレームを作成、 コンス トラクターです。 + + 1. クレームの種類の一意の値を指定します。 + + クレームの種類は一意の文字列識別子です。 カスタム クレームを作成する場合、クレームの種類に使用されている文字列識別子が一意になるようにしてください。 定義されているクレームの種類の一覧については[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]を参照してください、 クラスです。 + + 2. リソース用のシリアル化可能な、プリミティブ型以外の型を選択または定義します。 + + リソースはオブジェクトです。 クレームは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によりさまざまな点でシリアル化されるため、CLR 型のリソースはシリアル化可能なものにする必要があります。 プリミティブ型は既にシリアル化できます。 + + 新しい型が定義されている場合は、適用、 クラスにします。 適用も、 属性をクレームの一部としてシリアル化する必要のある新しい型のすべてのメンバーにします。 + + `MyResourceType` というカスタム リソース型を定義するコード例を次に示します。 + + [!code-csharp[c_CustomClaim#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaim/cs/c_customclaim.cs#2)] + [!code-vb[c_CustomClaim#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaim/vb/c_customclaim.vb#2)] + + 3. + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で定義されている権限か、カスタム権限の一意の値を選択します。 + + 権限は一意の文字列識別子です。 定義されている権利[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]で定義された、クラスです。 + + カスタム クレームを作成する場合、権限に使用されている文字列識別子が一意になるようにしてください。 + + 次のコード例では、カスタム クレームを作成の要求の種類で`http://example.org/claims/complexcustomclaim`、カスタム リソース型`MyResourceType`を使用して、 右です。 + + [!code-csharp[c_CustomClaim#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaim/cs/c_customclaim.cs#5)] + [!code-vb[c_CustomClaim#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaim/vb/c_customclaim.vb#5)] + +## 例 + 次のコード例で、プリミティブ リソース型を持つカスタム クレームと、プリミティブ以外のリソース型を持つカスタム クレームの作成方法を示します。 + + [!code-csharp[c_CustomClaim#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customclaim/cs/c_customclaim.cs#0)] + [!code-vb[c_CustomClaim#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customclaim/vb/c_customclaim.vb#0)] + +## 関連項目 + + + + + + [クレームと Id モデルの承認を管理します。](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) + [クレームと Id モデルの承認を管理します。](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-create-a-custom-client-identity-verifier.md b/docs/framework/wcf/extending/how-to-create-a-custom-client-identity-verifier.md new file mode 100644 index 00000000000..4c58dde5169 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-create-a-custom-client-identity-verifier.md @@ -0,0 +1,94 @@ +--- +title: "方法 : カスタム クライアント ID 検証機能を作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f2d34e43-fa8b-46d2-91cf-d2960e13e16b +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# 方法 : カスタム クライアント ID 検証機能を作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の *ID* 機能を使用すると、クライアントで、予想されるサービスの ID を事前に指定できます。 サーバーがクライアントに対して自身を認証するたびに、ID がこの予想 ID と照合されます \(ID とその機能の詳細については、「[サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください\)。 + + 必要に応じて、カスタム ID 検証機能を使用して検証をカスタマイズできます。 たとえば、追加のサービス ID 検証チェックを実行できます。 この例では、カスタム ID 検証機能で、サーバーから戻された X.509 証明書の追加のクレームをチェックします。 サンプル アプリケーションについては、「[サービス ID サンプル](../../../../docs/framework/wcf/samples/service-identity-sample.md)」を参照してください。 + +### EndpointIdentity クラスを拡張するには + +1. クラスから派生する新しいクラスを定義します。 拡張子 `OrgEndpointIdentity` に名前を付ける例を次に示します。 + +2. 拡張 クラスで使用するプライベート メンバーとプロパティを追加し、サービスによって返されたセキュリティ トークンのクレームに対して ID チェックを実行します。 この例では、`OrganizationClaim` プロパティを定義します。 + + [!code-csharp[c_HowToSetCustomClientIdentity#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtosetcustomclientidentity/cs/source.cs#6)] + [!code-vb[c_HowToSetCustomClientIdentity#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtosetcustomclientidentity/vb/source.vb#6)] + +### IdentityVerifier クラスを拡張するには + +1. から派生する新しいクラスを定義します。 拡張子 `CustomIdentityVerifier` に名前を付ける例を次に示します。 + + [!code-csharp[c_HowToSetCustomClientIdentity#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtosetcustomclientidentity/cs/source.cs#7)] + [!code-vb[c_HowToSetCustomClientIdentity#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtosetcustomclientidentity/vb/source.vb#7)] + +2. メソッドをオーバーライドします。 このメソッドは、ID チェックが成功したか失敗したかを判定します。 + +3. `CheckAccess` メソッドには 2 つのパラメーターがあります。 1 つ目は クラスのインスタンスです。 2 つ目は クラスのインスタンスです。 + + メソッド実装では、 クラスの プロパティから返されたクレームのコレクションを検査し、必要に応じて認証チェックを実行します。 この例では、まず種類が "識別名" のクレームをすべて検索し、次にその名前と の拡張 \(`OrgEndpointIdentity`\) とを比較します。 + + [!code-csharp[c_HowToSetCustomClientIdentity#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtosetcustomclientidentity/cs/source.cs#1)] + [!code-vb[c_HowToSetCustomClientIdentity#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtosetcustomclientidentity/vb/source.vb#1)] + +### TryGetIdentity メソッドを実装するには + +1. メソッドを実装します。このメソッドは、クライアントが クラスのインスタンスを返すことができるかどうかを判定します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャは、まず `TryGetIdentity` メソッドの実装を呼び出して、メッセージからサービスの ID を取得します。 次に、インフラストラクチャは、返された `EndpointIdentity` と を使用して `CheckAccess` 実装を呼び出します。 + +2. `TryGetIdentity` メソッドに次のコードを追加します。 + + [!code-csharp[c_HowToSetCustomClientIdentity#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtosetcustomclientidentity/cs/source.cs#2)] + [!code-vb[c_HowToSetCustomClientIdentity#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtosetcustomclientidentity/vb/source.vb#2)] + +### カスタム バインディングを実装してカスタム ID 検証機能を設定するには + +1. オブジェクトを返すメソッドを作成します。 この例は、まず クラスのインスタンスを作成し、そのセキュリティ モードを に設定します。 + +2. メソッドを使用して を作成します。 + +3. コレクションから を返し、それを 変数にキャストします。 + +4. クラスの プロパティを、以前作成した `CustomIdentityVerifier` クラスの新しいインスタンスに設定します。 + + [!code-csharp[c_HowToSetCustomClientIdentity#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtosetcustomclientidentity/cs/source.cs#3)] + [!code-vb[c_HowToSetCustomClientIdentity#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtosetcustomclientidentity/vb/source.vb#3)] + +5. 返されたカスタム バインディングを使用してクライアントのインスタンスとクラスを作成します。 これにより、クライアントは、次のコードに示すようにサービスのカスタム ID 検証チェックを実行できるようになります。 + + [!code-csharp[c_HowToSetCustomClientIdentity#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtosetcustomclientidentity/cs/source.cs#4)] + [!code-vb[c_HowToSetCustomClientIdentity#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtosetcustomclientidentity/vb/source.vb#4)] + +## 使用例 + クラスの完全な実装方法の例を次に示します。 + + [!code-csharp[c_HowToSetCustomClientIdentity#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtosetcustomclientidentity/cs/source.cs#5)] + [!code-vb[c_HowToSetCustomClientIdentity#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtosetcustomclientidentity/vb/source.vb#5)] + +## 使用例 + クラスの完全な実装方法の例を次に示します。 + + [!code-csharp[c_HowToSetCustomClientIdentity#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtosetcustomclientidentity/cs/source.cs#6)] + [!code-vb[c_HowToSetCustomClientIdentity#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtosetcustomclientidentity/vb/source.vb#6)] + +## 参照 + + + + [サービス ID サンプル](../../../../docs/framework/wcf/samples/service-identity-sample.md) + [承認ポリシー](../../../../docs/framework/wcf/samples/authorization-policy.md) + [承認ポリシー](../../../../docs/framework/wcf/samples/authorization-policy.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-create-a-custom-principal-identity.md b/docs/framework/wcf/extending/how-to-create-a-custom-principal-identity.md new file mode 100644 index 00000000000..9ac9b01f2ff --- /dev/null +++ b/docs/framework/wcf/extending/how-to-create-a-custom-principal-identity.md @@ -0,0 +1,61 @@ +--- +title: "方法 : カスタム プリンシパル ID を作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "IAuthorizationPolicy" + - "IPrincipal" + - "PrincipalPermissionAttribute" + - "PrincipalPermissionMode" +ms.assetid: c4845fca-0ed9-4adf-bbdc-10812be69b61 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : カスタム プリンシパル ID を作成する + は、サービス メソッドへのアクセスを宣言によって制御する手段として使用できます。 この属性を使用する場合、承認チェックを実行するためのモードが 列挙体で指定されます。 このモードが に設定されている場合、ユーザーは、 プロパティから返されるカスタムの クラスを指定できます。 ここでは、 を、カスタム承認ポリシーおよびカスタム プリンシパルと組み合わせて使用する場合のシナリオを説明します。 + + の使用方法の詳細については、「[方法 : PrincipalPermissionAttribute クラスでアクセスを制限する](../../../../docs/framework/wcf/how-to-restrict-access-with-the-principalpermissionattribute-class.md)」を参照してください。 + +## 使用例 + [!code-csharp[PrincipalPermissionMode#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/principalpermissionmode/cs/source.cs#8)] + [!code-vb[PrincipalPermissionMode#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/principalpermissionmode/vb/source.vb#8)] + +## コードのコンパイル + このコードをコンパイルするには、次の名前空間へ参照が必要です。 + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +## 参照 + + + + [方法 : ASP.NET のロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md) + [方法 : PrincipalPermissionAttribute クラスでアクセスを制限する](../../../../docs/framework/wcf/how-to-restrict-access-with-the-principalpermissionattribute-class.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md b/docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md new file mode 100644 index 00000000000..06ed09b9a05 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md @@ -0,0 +1,72 @@ +--- +title: "方法 : カスタム セキュリティ トークン認証システムを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF, 認証" +ms.assetid: 10e245f7-d31e-42e7-82a2-d5780325d372 +caps.latest.revision: 12 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 12 +--- +# 方法 : カスタム セキュリティ トークン認証システムを作成する +ここでは、カスタム セキュリティ トークン認証システムの作成方法と、これをカスタム セキュリティ トークン マネージャーに統合する方法を示します。セキュリティ トークン認証システムは受信メッセージと共に提出されるセキュリティ トークンの内容を検証します。検証に成功すると、認証システムは インスタンスのコレクションを返します。これが評価されるとクレーム セットが返されます。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でカスタム セキュリティ トークン認証システムを使用するには、カスタム資格情報とセキュリティ トークンマネージャーの実装をあらかじめ作成しておく必要があります。カスタム資格情報とセキュリティ トークン マネージャーの作成の詳細については、「[チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md)」を参照してください。資格情報、セキュリティ トークン マネージャー、およびプロバイダー クラスと認証システム クラスの詳細については、「[Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f)」を参照してください。 + +## 手順 + +#### カスタム セキュリティ トークン認証システムを作成するには + +1. クラスから派生する新しいクラスを定義します。 + +2. メソッドをオーバーライドします。カスタム認証システムが受信トークンの種類を検証できるかどうかによって、メソッドから `true` または `false` が返されます。 + +3. メソッドをオーバーライドします。このメソッドでは、トークンの内容を適切に検証する必要があります。トークンが検証手順をパスすると、 インスタンスのコレクションが返されます。下記の例では、次の手順で作成するカスタム承認ポリシーの実装を使用します。 + + [!code-csharp[C_CustomTokenAuthenticator#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtokenauthenticator/cs/source.cs#1)] + [!code-vb[C_CustomTokenAuthenticator#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtokenauthenticator/vb/source.vb#1)] + + 上記のコードでは、 メソッドに承認ポリシーのコレクションが返されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、このインターフェイスのパブリックな実装は用意されていません。以下の手順では、これを独自の要件について実行する方法を示します。 + +#### カスタム承認ポリシーを作成するには + +1. インターフェイスを実装する新しいクラスを定義します。 + +2. の読み取り専用プロパティを実装します。このプロパティを実装する方法の 1 つは、クラスのコンストラクターでグローバル一意識別子 \(GUID\) を生成し、この値をプロパティの値が求められるたびに返すことです。 + +3. の読み取り専用プロパティを実装します。このプロパティは、トークンから取得されるクレーム セットの発行者を返す必要があります。この発行者は、トークンの発行者、またはトークンの内容を検証する証明機関に対応している必要があります。次の例では、前の手順で作成したカスタム セキュリティ トークン認証システムから、このクラスに渡された発行者クレームを使用します。カスタム セキュリティ トークン認証システムでは、\( プロパティから返される\) システム提供のクレーム セットを使用して、ユーザー名トークンの発行者を表します。 + +4. メソッドを実装します。このメソッドは \(引数として渡される\) クラスのインスタンスに、受信セキュリティ トークンの内容に基づいたクレームを設定します。評価が完了したら、メソッドは `true` を返します。実装が、評価コンテキストに追加情報を提供する他の承認ポリシーの存在に依存している場合、必要な情報が評価コンテキスト内に存在していないと、このメソッドは `false` を返します。この場合、承認ポリシーによって評価コンテキストが 1 つでも変更されていると、この受信メッセージのために生成された他のすべての承認ポリシー評価の終了後に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、このメソッドを再び呼び出します。 + + [!code-csharp[c_CustomTokenAuthenticator#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtokenauthenticator/cs/source.cs#2)] + [!code-vb[c_CustomTokenAuthenticator#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtokenauthenticator/vb/source.vb#2)] + + カスタム資格情報とカスタム セキュリティ トークン マネージャーの作成方法については、「[チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md)」を参照してください。ここで作成したカスタム セキュリティ トークン認証システムを使用するには、 メソッドからカスタム認証システムを返すようにセキュリティ トークン マネージャーの実装を変更します。適切なセキュリティ トークン要件が渡されると、このメソッドは認証システムを返します。 + +#### カスタム セキュリティ トークン マネージャーにカスタム セキュリティ トークン認証システムを統合するには + +1. カスタム セキュリティ トークン マネージャーの実装の メソッドをオーバーライドします。 + +2. パラメーターに基づいてカスタム セキュリティ トークン認証システムを返すロジックをメソッドに追加します。次の例では、トークン要件のトークンの種類が \( プロパティで表される\) ユーザー名で、セキュリティ トークン認証システムで要求されているメッセージの方向 \( フィールドで表される\) が入力である場合、カスタム セキュリティ トークン認証システムが返されます。 + + [!code-csharp[c_CustomTokenAuthenticator#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtokenauthenticator/cs/source.cs#3)] + [!code-vb[c_CustomTokenAuthenticator#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtokenauthenticator/vb/source.vb#3)] + +## 参照 + + + + + [チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md) + [方法 : カスタム セキュリティ トークン プロバイダーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md) + [Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md b/docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md new file mode 100644 index 00000000000..f30b17fecaa --- /dev/null +++ b/docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md @@ -0,0 +1,68 @@ +--- +title: "方法 : カスタム セキュリティ トークン プロバイダーを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF], 資格情報の提供" +ms.assetid: db8cb478-aa43-478b-bf97-c6489ad7c7fd +caps.latest.revision: 10 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 10 +--- +# 方法 : カスタム セキュリティ トークン プロバイダーを作成する +ここでは、カスタム セキュリティ トークン プロバイダーを持つ新しいトークンの種類を作成する方法と、そのプロバイダーをカスタム セキュリティ トークン マネージャーと統合する方法について説明します。 + +> [!NOTE] +> 名前空間にあるシステム指定のトークンがユーザーの要件に一致しない場合、カスタム トークン プロバイダーを作成します。 + + セキュリティ トークン プロバイダーは、クライアントまたはサービスの資格情報に基づいてセキュリティ トークンの表現を作成します。 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] セキュリティでカスタム セキュリティ トークン プロバイダーを使用するには、カスタム資格情報とセキュリティ トークン マネージャーの実装を作成する必要があります。 + + カスタム資格情報とセキュリティ トークン マネージャーの詳細については、「[チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md)」を参照してください。 + + 資格情報、セキュリティ トークン マネージャー、およびプロバイダー クラスと認証システム クラスの詳細については、「[Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f)」を参照してください。 + +### カスタム セキュリティ トークン プロバイダーを作成するには + +1. クラスから派生する新しいクラスを定義します。 + +2. メソッドを実装します。 このメソッドは、セキュリティ トークンのインスタンスを作成して返す役割を担います。 `MySecurityTokenProvider` という名前のクラスを作成し、 メソッドをオーバーライドして クラスのインスタンスを返す例を次に示します。 クラス コンストラクターには クラスのインスタンスが必要です。 + + [!code-csharp[c_CustomTokenProvider#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtokenprovider/cs/source.cs#1)] + [!code-vb[c_CustomTokenProvider#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtokenprovider/vb/source.vb#1)] + +### カスタム セキュリティ トークン マネージャーにカスタム セキュリティ トークン プロバイダーを統合するには + +1. クラスから派生する新しいクラスを定義します。 以下の例は、 クラスから派生した クラスから派生したクラスです。 + +2. まだオーバーライドされていない場合は、 メソッドをオーバーライドします。 + + メソッドは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティ フレームワークによりメソッドに渡される パラメーターに適した クラスのインスタンスを返す役割を担います。 メソッドが適切なセキュリティ トークン パラメーターで呼び出された場合に、カスタム セキュリティ トークン プロバイダーの実装 \(以前の手順で作成済み\) を返すようにメソッドを変更します。 セキュリティ トークン マネージャーの詳細については、「[チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md)」を参照してください。 + +3. パラメーターに基づいてカスタム セキュリティ トークン プロバイダーを返すカスタム ロジックをメソッドに追加します。 トークンの要件が満たされた場合に、カスタム セキュリティ トークン プロバイダーを返す例を次に示します。 要件には、X.509 セキュリティ トークンとメッセージの方向 \(メッセージ出力にトークンが使用される\) が含まれます。 他のすべての場合で、コードは基本クラスを呼び出し、他のセキュリティ トークンの要件に合わせてシステム指定の動作を維持します。 + + [!code-csharp[c_CustomTokenProvider#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtokenprovider/cs/source.cs#2)] + [!code-vb[c_CustomTokenProvider#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtokenprovider/vb/source.vb#2)] + +## 使用例 + 完全な 実装と対応する 実装を次に示します。 + + [!code-csharp[c_CustomTokenProvider#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtokenprovider/cs/source.cs#0)] + [!code-vb[c_CustomTokenProvider#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtokenprovider/vb/source.vb#0)] + +## 参照 + + + + + [チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md) + [方法 : カスタム セキュリティ トークン認証システムを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md) + [Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-create-a-custom-token.md b/docs/framework/wcf/extending/how-to-create-a-custom-token.md new file mode 100644 index 00000000000..c1df1ce5bb0 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-create-a-custom-token.md @@ -0,0 +1,172 @@ +--- +title: "方法 : カスタム トークンを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF], カスタム トークンの作成" + - "SecurityToken クラス" + - "SecurityTokenParameters クラス" + - "WSSecurityTokenSerializer クラス" +ms.assetid: 6d892973-1558-4115-a9e1-696777776125 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : カスタム トークンを作成する +ここでは、 を使用してカスタムのセキュリティ トークンを作成する方法と、作成したトークンを、カスタム セキュリティ トークン プロバイダーおよび認証システムと統合する方法について説明します。コード例全体については、「[カスタム トークン](../../../../docs/framework/wcf/samples/custom-token.md)」のサンプルを参照してください。 + + *"セキュリティ トークン"* とは、基本的に、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] セキュリティ フレームワークが SOAP メッセージ内の送信者に関するクレームを表すために使用する XML 要素です。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティは、システム指定の認証モードで使用するさまざまなトークンを提供します。たとえば、 クラスによって表される X.509 証明書セキュリティ トークンや、 クラスによって表されるユーザー名セキュリティ トークンなどがあります。 + + 認証モードや資格情報は、指定した種類のトークンではサポートされないことがあります。そのような場合は、SOAP メッセージ内部のカスタム資格情報の XML 表現を提供するカスタム セキュリティ トークンを作成する必要があります。 + + 以下の手順は、カスタム セキュリティ トークンの作成方法と、これを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティ インフラストラクチャに統合する方法を示しています。ここでは、クライアントのクレジット カードに関する情報をサーバーに渡す際に使用するクレジット カード トークンを作成します。 + + カスタム資格情報とセキュリティ トークン マネージャー[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md)」を参照してください。 + + セキュリティ トークンを表すさまざまなクラスについては、「 名前空間」を参照してください。 + + 資格情報、セキュリティ トークン マネージャー、およびプロバイダー クラスと認証システム クラス[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f)」を参照してください。 + +## 手順 + クライアント アプリケーションには、セキュリティ インフラストラクチャにクレジット カード情報を指定する方法を設ける必要があります。この情報は、カスタムのクライアント資格情報クラスによりアプリケーションに提供されます。最初に、カスタム クライアント資格情報のクレジット カード情報を表すクラスを作成します。 + +#### クライアント資格情報内のクレジット カード情報を表すクラスを作成するには + +1. クレジット カード情報を表す新しいクラスをアプリケーションに定義します。次の例は、`CreditCardInfo` クラスを示しています。 + +2. 適切なプロパティをクラスに追加し、カスタム トークンに必要な情報をアプリケーションで設定できるようにします。次の例では、`CardNumber`、`CardIssuer`、および `ExpirationDate` の 3 つのプロパティをクラスに割り当てます。 + + [!code-csharp[c_CustomToken#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#4)] + [!code-vb[c_CustomToken#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#4)] + + 次に、カスタム セキュリティ トークンを表すクラスを作成する必要があります。このクラスは、セキュリティ トークン プロバイダー、認証システム、およびシリアライザーの各クラスが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティ インフラストラクチャとの間で、セキュリティ トークンに関する情報を受け渡しする際に使用します。 + +#### カスタム セキュリティ トークン クラスを作成するには + +1. クラスから派生する新しいクラスを定義します。`CreditCardToken` という名前のクラスを作成する例を次に示します。 + +2. プロパティをオーバーライドします。このプロパティを使用して、SOAP メッセージ内の他の要素からセキュリティ トークンの XML 表現をポイントするためのセキュリティ トークンのローカル識別子を取得します。次の例では、トークン識別子をコンストラクター パラメーターとしてこのプロパティに渡すことも、セキュリティ トークン インスタンスを作成するたびに新しいランダムな識別子を生成することもできます。 + +3. プロパティを実装します。このプロパティは、セキュリティ トークン インスタンスが表すセキュリティ キーのコレクションを返します。これらのキーを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、SOAP メッセージの一部に署名したり、暗号化したりできます。次の例では、クレジット カード セキュリティ トークンにはセキュリティ キーを含めることができません。そのため、実装は、常に空のコレクションを返します。 + +4. プロパティと プロパティをオーバーライドします。これらのプロパティを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、セキュリティ トークン インスタンスの有効性を判別します。次の例では、クレジット カード セキュリティ トークンに有効期限のみが含まれているため、`ValidFrom` プロパティは、インスタンスの作成日時を表す を返します。 + + [!code-csharp[c_CustomToken#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#1)] + [!code-vb[c_CustomToken#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#1)] + + セキュリティ トークンの新しい種類を作成したときは、 クラスの実装が必要です。この実装をセキュリティ バインド要素構成で使用して、新しいトークンの種類を表します。セキュリティ トークンのパラメーター クラスは、メッセージを処理するときに実際のセキュリティ トークン インスタンスを一致させるためのテンプレートとして使用できます。このテンプレートは、セキュリティ トークンを使用したり、認証したりする際に適合する必要がある条件を指定するためにアプリケーションで使用できる追加のプロパティを提供します。次の例では、追加のプロパティを指定しないため、使用または検証するセキュリティ トークン インスタンスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャが検索するときに、該当するセキュリティ トークンの種類だけが一致項目になります。 + +#### カスタム セキュリティ トークン パラメーター クラスを作成するには + +1. クラスから派生する新しいクラスを定義します。 + +2. メソッドを実装します。クラスで内部フィールドが定義されている場合は、それらをすべてコピーします。次の例では、追加のフィールドを定義しません。 + +3. の読み取り専用プロパティを実装します。このクラスで表されているセキュリティ トークンの種類を使用して、サービスに対するクライアントの認証が可能な場合、このプロパティは `true` を返します。次の例では、クレジット カード セキュリティ トークンを使用して、サービスに対するクライアントの認証を行うことができます。 + +4. の読み取り専用プロパティを実装します。このクラスで表されているセキュリティ トークンの種類を使用して、クライアントに対するサービスの認証が可能な場合、このプロパティは `true` を返します。次の例では、クレジット カード セキュリティ トークンを使用して、クライアントに対するサービスの認証を行うことができません。 + +5. の読み取り専用プロパティを実装します。このクラスで表されているセキュリティ トークンの種類を Windows アカウントにマップできる場合、このプロパティは `true` を返します。その場合、認証結果が クラス インスタンスによって表されます。次の例では、Windows アカウントにトークンをマップすることができません。 + +6. メソッドを実装します。このメソッドは、セキュリティ トークン パラメーター クラスによって表されるセキュリティ トークン インスタンスへの参照が必要なときに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティ フレームワークによって呼び出されます。このメソッドには、実際のセキュリティ トークン インスタンスと、要求されている参照の型を指定する の両方が引数として渡されます。次の例では、内部参照だけがクレジット カード セキュリティ トークンでサポートされます。 クラスは、内部参照を作成する機能を備えているため、実装には追加のコードが必要ありません。 + +7. メソッドを実装します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、このメソッドを呼び出して、セキュリティ トークン パラメーター クラス インスタンスを クラスのインスタンスに変換します。変換結果は、適切なセキュリティ トークン インスタンスを作成するためにセキュリティ トークン プロバイダーによって使用されます。 + + [!code-csharp[c_CustomToken#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#2)] + [!code-vb[c_CustomToken#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#2)] + + セキュリティ トークンは、SOAP メッセージ内で送信されますが、そのためには、セキュリティ トークンのインメモリ表現とネットワーク上表現の間での変換機構が必要です。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、セキュリティ トークン シリアライザーを使用してこのタスクを実行します。すべてのカスタム トークンには、カスタム セキュリティ トークンを SOAP メッセージからシリアル化および逆シリアル化できるカスタム セキュリティ トークン シリアライザーを関連付ける必要があります。 + +> [!NOTE] +> 派生キーは、既定で有効になっています。カスタム セキュリティ トークンを作成し、プライマリ トークンとして使用する場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、そのトークンからキーが派生します。キーを派生する一方、カスタム セキュリティ トークン シリアライザーが呼び出され、`DerivedKeyToken` をシリアル化しながら、そのカスタム セキュリティ トークンの をネットワークに送出します。受信側では、ネットワーク外でのトークンの逆シリアル化時に、`DerivedKeyToken` シリアライザーは、トークンのすぐ下のトップレベルの子として `SecurityTokenReference` 要素を必要とします。カスタム セキュリティ トークン シリアライザーによる句型のシリアル化時に `SecurityTokenReference` 要素が追加されていなかった場合、例外がスローされます。 + +#### カスタム セキュリティ トークン シリアライザーを作成するには + +1. クラスから派生する新しいクラスを定義します。 + +2. に基づいて XML ストリームを読み取る メソッドをオーバーライドします。シリアライザー実装が現在の要素に基づいてセキュリティ トークンを逆シリアル化できる場合、このメソッドは `true` を返します。次の例では、このメソッドが、XML リーダーの現在の XML 要素が正しい要素名と名前空間を持っているかどうかをチェックします。持っていない場合は、このメソッドの基本クラスの実装を呼び出して、XML 要素を処理します。 + +3. メソッドをオーバーライドします。このメソッドは、セキュリティ トークンの XML コンテンツを読み取り、その適切なメモリ内表現を構築します。渡された XML リーダーの基盤となる XML 要素を認識できない場合は、基本クラスの実装を呼び出して、システム指定のトークンの種類を処理します。 + +4. メソッドをオーバーライドします。引数として渡されるトークンのメモリ内表現を XML 表現に変換できる場合、このメソッドは `true` を返します。変換できない場合は、基本クラスの実装を呼び出します。 + +5. メソッドをオーバーライドします。このメソッドは、セキュリティ トークンのメモリ内表現を XML 表現に変換します。変換できない場合は、基本クラスの実装を呼び出します。 + + [!code-csharp[c_CustomToken#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#3)] + [!code-vb[c_CustomToken#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#3)] + + 上記の 4 つの手順を完了したら、カスタム セキュリティ トークンをセキュリティ トークン プロバイダー、セキュリティ トークン認証システム、セキュリティ トークン マネージャー、クライアント資格情報、およびサービス資格情報と統合します。 + +#### カスタム セキュリティ トークンをセキュリティ トークン プロバイダーと統合するには + +1. セキュリティ トークン プロバイダーは、必要に応じて、トークンのインスタンスを作成、変更、および返却します。カスタム セキュリティ トークンのカスタム プロバイダーを作成するには、 クラスを継承するクラスを作成します。 メソッドをオーバーライドして、`CreditCardToken` のインスタンスを返す例を次に示します。カスタム セキュリティ トークン プロバイダー[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : カスタム セキュリティ トークン プロバイダーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md)」を参照してください。 + + [!code-csharp[c_CustomToken#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#6)] + [!code-vb[c_CustomToken#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#6)] + +#### カスタム セキュリティ トークンをセキュリティ トークン認証システムと統合するには + +1. セキュリティ トークン認証システムは、セキュリティ トークンがメッセージから抽出されたときにトークンの内容を検証します。カスタム セキュリティ トークンのカスタム認証システムを作成するには、 クラスを継承するクラスを作成します。 メソッドをオーバーライドする例を次に示します。カスタム セキュリティ トークン認証システム[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : カスタム セキュリティ トークン認証システムを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md)」を参照してください。 + + [!code-csharp[c_CustomToken#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#7)] + [!code-vb[c_CustomToken#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#7)] + + [!code-csharp[c_CustomToken#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#12)] + [!code-vb[c_CustomToken#12](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#12)] + +#### カスタム セキュリティ トークンをセキュリティ トークン マネージャーと統合するには + +1. セキュリティ トークン マネージャーは、トークン プロバイダー、セキュリティ認証システム、およびトークン シリアライザーの適切なインスタンスを作成します。カスタム トークン マネージャーを作成するには、 クラスを継承するクラスを作成します。このクラスの主要なメソッドは を使用して、適切なプロバイダーとクライアント資格情報またはサービス資格情報を作成します。カスタム セキュリティ トークン マネージャー[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md)」を参照してください。 + + [!code-csharp[c_CustomToken#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#8)] + [!code-vb[c_CustomToken#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#8)] + + [!code-csharp[c_CustomToken#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#9)] + [!code-vb[c_CustomToken#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#9)] + +#### カスタム セキュリティ トークンをカスタムのクライアント資格情報およびサービス資格情報と統合するには + +1. アプリケーションに API を提供し、事前に作成したカスタム セキュリティ トークン インフラストラクチャで、カスタム セキュリティ トークンの内容を提供および認証する際に使用するカスタム トークン情報を指定できるようにするには、カスタムのクライアント資格情報とサービス資格情報を追加する必要があります。この方法を次の例に示します。カスタムのクライアント資格情報とサービス資格情報[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md)」を参照してください。 + + [!code-csharp[c_CustomToken#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#10)] + [!code-vb[c_CustomToken#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#10)] + + [!code-csharp[c_customToken#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#11)] + [!code-vb[c_customToken#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#11)] + + 事前に作成したカスタム セキュリティ トークン パラメーター クラスを使用して、サービスとの通信時にカスタム セキュリティ トークンを使用する必要があることを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティ フレームワークに伝えます。この方法を次の手順に示します。 + +#### カスタム セキュリティ トークンをバインディングと統合するには + +1. クラスで公開されるトークン パラメーター コレクションの 1 つで、カスタム セキュリティ トークン パラメーター クラスを指定する必要があります。次の例では、`SignedEncrypted` によって返されるコレクションを使用します。このコードでは、クライアントからサービスに送信されるすべてのメッセージにクレジット カードのカスタム トークンを追加し、メッセージの内容に自動的に署名して暗号化します。 + + [!code-csharp[c_CustomToken#13](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customtoken/cs/source.cs#13)] + [!code-vb[c_CustomToken#13](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customtoken/vb/source.vb#13)] + + このトピックでは、カスタム トークンを実装および使用するために必要なさまざまなコードを示します。これらのコードを組み合わせた完全な例については、「[カスタム トークン](../../../../docs/framework/wcf/samples/custom-token.md)」を参照してください。 + +## 参照 + + + + + + + + + + + + [チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md) + [方法 : カスタム セキュリティ トークン認証システムを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md) + [方法 : カスタム セキュリティ トークン プロバイダーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md) + [Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md b/docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md new file mode 100644 index 00000000000..d5a6ae5db30 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md @@ -0,0 +1,137 @@ +--- +title: "方法 : カスタム証明書検証を使用するサービスを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF, 認証" +ms.assetid: bb0190ff-0738-4e54-8d22-c97d343708bf +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : カスタム証明書検証を使用するサービスを作成する +このトピックでは、カスタム証明書検証を実装する方法、クライアントまたはサービスの資格情報の設定により、既定の証明書検証機能を、カスタム証明書検証で置き換える方法について解説します。 + + X.509 証明書を使ってクライアントやサービスを認証する場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の既定では、Windows 証明書ストアと Crypto API を使用して証明書が検証され、信頼できるかどうかが確認されます。 ただし、組み込みの検証機能では不十分で、処理内容を変更する必要がある場合もあります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ユーザーがカスタムの証明書検証機能を追加して、検証ロジックを簡単に変更できます。 カスタムの証明書検証機能が指定されている場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、組み込みの検証機能ではなく、カスタムの検証処理のみが使用されます。 + +## 手順 + +#### カスタムの証明書検証機能を作成するには + +1. から派生する新しいクラスを定義します。 + +2. 抽象メソッドである を実装します。 検証対象の証明書が、引数としてこのメソッドに渡されます。 検証処理の結果、証明書が無効であると判断されると、このメソッドは、 という例外をスローします。 有効であればそのまま呼び出し元に制御を返します。 + + > [!NOTE] + > クライアントに認証エラーを返すには、 メソッドで をスローします。 + + [!code-csharp[c_CustomCertificateValidator#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customcertificatevalidator/cs/source.cs#2)] + [!code-vb[c_CustomCertificateValidator#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customcertificatevalidator/vb/source.vb#2)] + +#### サービス構成でカスタム検証処理を指定するには + +1. [\](../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) 要素に [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素と [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md) を追加します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)を追加し、`name` 属性に適切な値を設定します。 + +3. [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)を `` 要素に追加します。 + +4. `` 要素を `` 要素に追加します。 + +5. `` 要素に [\](../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md) を追加します。 + +6. `customCertificateValidatorType` 属性に検証処理の型を設定します。 この属性に型の名前空間と名前を設定する例を以下に示します。 + +7. `certificateValidationMode` 属性を `Custom` に設定します。 + + ``` + + + + + + + + + + + + + + + + ``` + +#### クライアント側の設定でカスタム証明書検証を指定するには + +1. [\](../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) 要素に [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素と [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md) を追加します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md) 要素を追加します。 + +3. `` 要素を追加し、`name` 属性に適切な値を設定します。 + +4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md) 要素を追加します。 + +5. [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md) を追加します。 + +6. 次の例に示すように、[\](../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-servicecertificate-element.md) を追加します。 + +7. `customCertificateValidatorType` 属性に検証処理の型を設定します。 + +8. `certificateValidationMode` 属性を `Custom` に設定します。 この属性に型の名前空間と名前を設定する例を以下に示します。 + + ``` + + + + + + + + + + + + + + + + ``` + +#### サービス側のコードでカスタム証明書検証を指定するには + +1. プロパティの値としてカスタム証明書検証を指定します。 サービスの資格情報には、 プロパティを使用してアクセスできます。 + +2. プロパティを に設定します。 + + [!code-csharp[c_CustomCertificateValidator#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customcertificatevalidator/cs/source.cs#1)] + [!code-vb[c_CustomCertificateValidator#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customcertificatevalidator/vb/source.vb#1)] + +#### クライアント側のコードでカスタム証明書検証を指定するには + +1. カスタム証明書検証を、 プロパティを使って指定します。 クライアントの資格情報には、 プロパティを使用してアクセスできます。 [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) によって生成されるクライアント クラスは、常に クラスから派生したものです。 + +2. プロパティを に設定します。 + +## 例 + +### 説明 + カスタム証明書検証を実装し、サービス側で使用する例を以下に示します。 + +### コード + [!code-csharp[c_CustomCertificateValidator#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customcertificatevalidator/cs/source.cs#3)] + [!code-vb[c_CustomCertificateValidator#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customcertificatevalidator/vb/source.vb#3)] + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-customize-a-system-provided-binding.md b/docs/framework/wcf/extending/how-to-customize-a-system-provided-binding.md new file mode 100644 index 00000000000..ce9e02eae78 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-customize-a-system-provided-binding.md @@ -0,0 +1,61 @@ +--- +title: "方法 : システム指定のバインディングをカスタマイズする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f8b97862-e8bb-470d-8b96-07733c21fe26 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 方法 : システム指定のバインディングをカスタマイズする +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、システム指定のバインディングがいくつか含まれています。これらのバインディングを使用して、基になるバインド要素の一部のプロパティを構成できますが、すべてのプロパティを構成できるとは限りません。 ここでは、バインド要素のプロパティを設定してカスタム バインディングを作成する方法を示します。 + + システム指定のバインディングを使用せずに、バインド要素を直接作成し構成する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください。 + + カスタム バインディングの作成および拡張[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[バインディングの拡張](../../../../docs/framework/wcf/extending/extending-bindings.md)」を参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、すべてのバインディングが複数の *"バインド要素"* で構成されています。 各バインド要素は クラスから派生します。 などのシステム指定のバインディングでは、独自のバインド要素が作成され構成されます。 ここでは、バインディングに直接公開されないこのバインド要素 \(具体的には クラス\) のプロパティにアクセスして変更する方法を示します。 + + 個別のバインド要素は クラスで表されるコレクションに格納し、トランザクション フロー、信頼できるセッション、セキュリティ、複合二重、一方向、ストリーム セキュリティ、メッセージ エンコーディング、トランスポートの順に追加します。 どのバインディングでも、これらすべてのバインド要素が必要になるとは限りません。 ユーザー定義のバインド要素も、このバインド要素のコレクションに表示されますが、前述の順序で表示される必要があります。 たとえば、ユーザー定義のトランスポートは、バインド要素コレクションの最後の要素となる必要があります。 + + クラスには、次の 3 つのバインド要素が含まれています。 + +1. オプションのセキュリティ バインド要素。HTTP トランスポートで使用される クラス \(メッセージ レベル セキュリティ\)、またはトランスポート層がセキュリティを提供する場合 \(HTTPS トランスポート\) に使用される 。 + +2. 必須のメッセージ エンコーダー バインド要素。 または 。 + +3. 必須のトランスポート バインド要素。 または 。 + + この例では、バインディングのインスタンスを作成し、そのインスタンスから *"カスタム バインディング"* を生成します。次にカスタム バインディング内のバインド要素を調べて HTTP バインド要素が見つかった場合は、その `KeepAliveEnabled` プロパティを `false` に設定します。 `KeepAliveEnabled` プロパティは、`BasicHttpBinding` に直接公開されていないので、カスタム バインディングを作成し、バインド要素まで移動して、このプロパティを設定する必要があります。 + +### システム標準のバインディングを変更するには + +1. クラスのインスタンスを作成し、そのセキュリティ モードをメッセージ レベルに設定します。 + + [!code-csharp[C_HowTo_ChangeStandardBinding#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_changestandardbinding/cs/program.cs#1)] + [!code-vb[C_HowTo_ChangeStandardBinding#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_changestandardbinding/vb/program.vb#1)] + +2. バインディングからカスタム バインディングを作成し、そのカスタム バインディングのプロパティの 1 つから クラスを作成します。 + + [!code-csharp[C_HowTo_ChangeStandardBinding#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_changestandardbinding/cs/program.cs#2)] + [!code-vb[C_HowTo_ChangeStandardBinding#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_changestandardbinding/vb/program.vb#2)] + +3. クラスをループして クラスが見つかったら、その プロパティを `false` に設定します。 + + [!code-csharp[C_HowTo_ChangeStandardBinding#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_changestandardbinding/cs/program.cs#3)] + [!code-vb[C_HowTo_ChangeStandardBinding#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_changestandardbinding/vb/program.vb#3)] + +## 参照 + + + + [カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-export-custom-policy-assertions.md b/docs/framework/wcf/extending/how-to-export-custom-policy-assertions.md new file mode 100644 index 00000000000..e179b232e15 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-export-custom-policy-assertions.md @@ -0,0 +1,59 @@ +--- +title: "方法 : カスタム ポリシー アサーションをエクスポートする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 99030386-43b0-4f7b-866d-17ea307f5cbd +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 方法 : カスタム ポリシー アサーションをエクスポートする +ポリシー アサーションはサービス エンドポイントの機能と要件を説明します。サービス アプリケーションは、サービス メタデータに含まれるカスタム ポリシー アサーションを使用して、エンドポイントのバインディングまたはコントラクトのカスタマイズ情報をクライアント アプリケーションに伝達します。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用すると、伝達している機能または要件に応じて、エンドポイント、操作、またはメッセージ サブジェクトで WSDL バインディングに結び付けられているポリシー表現のアサーションをエクスポートできます。 + + カスタム ポリシー アサーションは、 インターフェイスを に実装して、サービス エンドポイントのバインディングにバインド要素を直接挿入するか、またはアプリケーション構成ファイルにバインド要素を登録することによってエクスポートされます。ポリシーのエクスポートの実装では、 メソッドに渡された の適切な に、 インスタンスとしてカスタム ポリシー アサーションを追加する必要があります。 + + また、 クラスの プロパティをチェックし、入れ子になったポリシー表現およびポリシー フレームワーク属性を、指定されたポリシー バージョンに基づいた正しい名前空間にエクスポートする必要もあります。 + + カスタム ポリシー アサーションをインポートする方法については、「」および「[方法 : カスタム ポリシー アサーションをインポートする](../../../../docs/framework/wcf/extending/how-to-import-custom-policy-assertions.md)」を参照してください。 + +### カスタム ポリシー アサーションをエクスポートするには + +1. インターフェイスを実装します。バインディング レベルでのカスタム ポリシー アサーションの実装を次のコード例に示します。 + + [!code-csharp[CustomPolicySample#14](../../../../samples/snippets/csharp/VS_Snippets_CFX/custompolicysample/cs/policyexporter.cs#14)] + [!code-vb[CustomPolicySample#14](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/custompolicysample/vb/policyexporter.vb#14)] + +2. プログラムまたはアプリケーション構成ファイルを使用して、エンドポイントのバインディングにバインド要素を挿入します。次の手順を参照してください。 + +### アプリケーション構成ファイルを使用してバインディングを挿入するには + +1. カスタム ポリシー アサーション バインド要素の を実装します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/bindingelementextensions.md) 要素を使用して、そのバインド要素拡張を構成ファイルに追加します。 + +3. を使用してカスタム バインディングを作成します。 + +### プログラムでバインド要素を挿入するには + +1. 新しい を作成して に追加します。 + +2. 手順 1. のカスタム バインディングを新しいエンドポイントに追加し、 メソッドを呼び出してその新しいサービス エンドポイントを に追加します。 + +3. を開きます。カスタム バインディングの作成と、プログラムによるバインド要素の挿入を次のコード例に示します。 + + [!code-csharp[s_imperative#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_imperative/cs/service.cs#1)] + [!code-vb[s_imperative#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_imperative/vb/service.vb#1)] + +## 参照 + + + [方法 : カスタム ポリシー アサーションをインポートする](../../../../docs/framework/wcf/extending/how-to-import-custom-policy-assertions.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-export-custom-wsdl.md b/docs/framework/wcf/extending/how-to-export-custom-wsdl.md new file mode 100644 index 00000000000..29db3b618de --- /dev/null +++ b/docs/framework/wcf/extending/how-to-export-custom-wsdl.md @@ -0,0 +1,207 @@ +--- +title: "方法 : カスタム WSDL をエクスポートする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5c1e4b58-b76b-472b-9635-2f80d42a0734 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 方法 : カスタム WSDL をエクスポートする +ここでは、カスタム WSDL 情報をエクスポートする方法について説明します。そのために、サービスによって生成された WSDL にカスタム情報を追加する `WsdlDocumentationAttribute` という名前の新しいコード属性を定義します。 + +### カスタム WSDL 情報をエクスポートするには + +1. インターフェイスを実装します。このインターフェイスは、、または インターフェイスを実装するクラスに実装できます。また、 から派生したクラスに実装することもできます。このサンプルでは、 を実装する属性クラスに を実装します。 + +2. は、 メソッドと メソッドを定義します。これらのメソッドを使用すると、 を変更したり、情報を追加したりできます \(変更と追加の両方を行うこともできます\)。このサンプルは、 メソッドで オブジェクトのコレクションを取得し、そのコレクションを反復処理して `WsdlDocumentationAttribute` が存在するかどうかをチェックします。見つかった場合は、属性に関連付けられたテキストが抽出され、summary 要素が生成され、その summary 要素が操作の `DocumentationElement` に追加されます。 + + ``` + public void ExportContract(WsdlExporter exporter, WsdlContractConversionContext context) + { + Console.WriteLine("Inside ExportContract"); + if (context.Contract != null) + { + // Set the document element; if this is not done first, there is no XmlElement in the + // DocumentElement property. + context.WsdlPortType.Documentation = string.Empty; + // Contract comments. + XmlDocument owner = context.WsdlPortType.DocumentationElement.OwnerDocument; + XmlElement summaryElement = Formatter.CreateSummaryElement(owner, this.Text); + context.WsdlPortType.DocumentationElement.AppendChild(summaryElement); + + foreach (OperationDescription op in context.Contract.Operations) + { + Operation operation = context.GetOperation(op); + object[] opAttrs = op.SyncMethod.GetCustomAttributes(typeof(WsdlDocumentationAttribute), false); + if (opAttrs.Length == 1) + { + string opComment = ((WsdlDocumentationAttribute)opAttrs[0]).Text; + + // This.Text returns the string for the operation-level attributes. + // Set the doc element; if this is not done first, there is no XmlElement in the + // DocumentElement property. + operation.Documentation = String.Empty; + + XmlDocument opOwner = operation.DocumentationElement.OwnerDocument; + XmlElement newSummaryElement = Formatter.CreateSummaryElement(opOwner, opComment); + operation.DocumentationElement.AppendChild(newSummaryElement); + } + } + } + ``` + +## 使用例 + `WsdlDocumentationAttribute` クラスの完全な実装を次のコード例に示します。 + +``` +public class WsdlDocumentationAttribute : Attribute, IContractBehavior, IWsdlExportExtension +{ +string text; + XmlElement customWsdlDocElement = null; +public WsdlDocumentationAttribute(string text) +{ this.text = text;} + + public WsdlDocumentationAttribute(XmlElement wsdlDocElement) + { this.customWsdlDocElement = wsdlDocElement; } + + public XmlElement WsdlDocElement + { + get { return this.customWsdlDocElement; } + set { this.customWsdlDocElement = value; } + } + public string Text +{ +get { return this.text; } +set { this.text = value; } +} + + public void ExportContract(WsdlExporter exporter, WsdlContractConversionContext context) +{ + Console.WriteLine("Inside ExportContract"); +if (context.Contract != null) +{ + // Set the document element; if this is not done first, there is no XmlElement in the + // DocumentElement property. + context.WsdlPortType.Documentation = string.Empty; + // Contract comments. + XmlDocument owner = context.WsdlPortType.DocumentationElement.OwnerDocument; + XmlElement summaryElement = Formatter.CreateSummaryElement(owner, this.Text); + context.WsdlPortType.DocumentationElement.AppendChild(summaryElement); + + foreach (OperationDescription op in context.Contract.Operations) + { + Operation operation = context.GetOperation(op); + object[] opAttrs = op.SyncMethod.GetCustomAttributes(typeof(WsdlDocumentationAttribute), false); + if (opAttrs.Length == 1) + { + string opComment = ((WsdlDocumentationAttribute)opAttrs[0]).Text; + + // This.Text returns the string for the operation-level attributes. + // Set the document element; if this is not done first, there is no XmlElement in the + // DocumentElement property. + operation.Documentation = String.Empty; + + XmlDocument opOwner = operation.DocumentationElement.OwnerDocument; + XmlElement newSummaryElement = Formatter.CreateSummaryElement(opOwner, opComment); + operation.DocumentationElement.AppendChild(newSummaryElement); + } + } + } + } + +public void ExportEndpoint(WsdlExporter exporter, WsdlEndpointConversionContext context) + { + Console.WriteLine("ExportEndpoint called."); + } + + public void AddBindingParameters(ContractDescription description, ServiceEndpoint endpoint, BindingParameterCollection parameters) + { return; } + + public void ApplyClientBehavior(ContractDescription description, ServiceEndpoint endpoint, ClientRuntime client) + { return; } + + public void ApplyDispatchBehavior(ContractDescription description, ServiceEndpoint endpoint, DispatchRuntime dispatch) + { return; } + + public void Validate(ContractDescription description, ServiceEndpoint endpoint) { return; } + } + + public class Formatter + { + +#region Utility Functions + + public static XmlElement CreateSummaryElement(XmlDocument owningDoc, string text) + { + XmlElement summaryElement = owningDoc.CreateElement("summary"); + summaryElement.InnerText = text; + return summaryElement; + } + +public static CodeCommentStatementCollection FormatComments(string text) +{ + /* + * Note that in Visual C# the XML comment format absorbs a + * documentation element with a line break in the middle. This sample + * could take an XmlElement and create code comments in which + * the element never had a line break in it. + */ + + CodeCommentStatementCollection collection = new CodeCommentStatementCollection(); +collection.Add(new CodeCommentStatement("From WsdlDocumentation:", true)); +collection.Add(new CodeCommentStatement(String.Empty, true)); + +foreach (string line in WordWrap(text, 80)) +{ +collection.Add(new CodeCommentStatement(line, true)); +} + +collection.Add(new CodeCommentStatement(String.Empty, true)); +return collection; +} + +public static Collection WordWrap(string text, int columnWidth) +{ +Collection lines = new Collection(); +System.Text.StringBuilder builder = new System.Text.StringBuilder(); + +string[] words = text.Split(' '); +foreach (string word in words) +{ +if ((builder.Length > 0) && ((builder.Length + word.Length + 1) > columnWidth)) +{ +lines.Add(builder.ToString()); +builder = new System.Text.StringBuilder(); +} +builder.Append(word); +builder.Append(' '); +} +lines.Add(builder.ToString()); + +return lines; +} + +#endregion + + public static XmlElement CreateReturnsElement(XmlDocument owner, string p) + { + XmlElement returnsElement = owner.CreateElement("returns"); + returnsElement.InnerText = p; + return returnsElement; + } + } + +``` + +## 参照 + [メタデータ](../../../../docs/framework/wcf/feature-details/metadata.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-import-custom-policy-assertions.md b/docs/framework/wcf/extending/how-to-import-custom-policy-assertions.md new file mode 100644 index 00000000000..06c8a79a479 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-import-custom-policy-assertions.md @@ -0,0 +1,76 @@ +--- +title: "方法 : カスタム ポリシー アサーションをインポートする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1f41d787-accb-4a10-bfc6-a807671d1581 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : カスタム ポリシー アサーションをインポートする +ポリシー アサーションはサービス エンドポイントの機能と要件を説明します。 クライアント アプリケーションはサービス メタデータにあるポリシー アサーションを使用して、クライアント バインディングを構成したり、サービス エンドポイントのサービス コントラクトをカスタマイズしたりできます。 + + 実装することによってカスタム ポリシー アサーションのインポート、 インターフェイスとをメタデータ システム、または実装を登録することによって、そのオブジェクトを渡すことが、アプリケーション構成ファイルに入力します。 実装、 インターフェイスは、既定のコンス トラクターを提供する必要があります。 + +### カスタム ポリシー アサーションをインポートするには + +1. 実装、 クラスのインターフェイスです。 次の手順を参照してください。 + +2. 次のいずれかの方法でカスタム ポリシー インポーターを挿入します。 + +3. 構成ファイルを使用します。 次の手順を参照してください。 + +4. 構成ファイルを使用して[ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)します。 次の手順を参照してください。 + +5. プログラムでポリシー インポーターを挿入します。 次の手順を参照してください。 + +### 任意のクラスに System.ServiceModel.Description.IPolicyImportExtension インターフェイスを実装するには + +1. メソッドで、関心のある対象各ポリシーについてポリシー アサーションを見つけます (するアサーションのスコープに応じて) 適切なメソッドを呼び出して、インポートするにはメソッドに渡されるオブジェクト。 次のコード例を使用する方法を示しています、 メソッドは、カスタム ポリシー アサーションの検索を&1; つの手順でコレクションから削除します。 remove メソッドを使用してアサーションの検索と削除を行う場合は、手順 4. を実行する必要はありません。 + + [!code-csharp[CustomPolicySample#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/custompolicysample/cs/policyimporter.cs#9)] + [!code-vb[CustomPolicySample#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/custompolicysample/vb/policyimporter.vb#9)] + +2. ポリシー アサーションを処理します。 ポリシー システムでは、入れ子になったポリシーと `wsp:optional` を正規化しないので注意してください。 これらの構造体については、ポリシー インポート拡張機能の実装で処理する必要があります。 + +3. ポリシー アサーションで指定されている機能または要件をサポートするバインディングまたはコントラクトのカスタマイズを実行します。 アサーションでは、通常、バインディングに特定の構成、または特定のバインド要素が必要です。 アクセスすることによってこの変更を行う、 プロパティです。 これとは別に、コントラクトの変更が必要なアサーションがあります。 アクセスしを使用してコントラクトを変更することができます、 プロパティです。 ポリシー代替手段のインポートに失敗した場合、バインディングとコントラクトは同じなのに、ポリシー代替手段が異なるために、ポリシー インポーターが複数回呼び出されることがあるので注意してください。 作成するコードでは、この動作に対応する必要があります。 + +4. アサーション コレクションからカスタム ポリシー アサーションを削除します。 アサーションを削除しない場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、ポリシーのインポートが失敗して、関連付けられているバインディングがインポートされていないと見なします。 使用した場合、 メソッドをカスタム ポリシー アサーションを見つけて、この手順を実行しなくても&1; つの手順でコレクションから削除します。 + +### 構成ファイルを使用してメタデータ システムにカスタム ポリシー インポーターを挿入するには + +1. インポーター型を追加、``内の要素、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/policyimporters.md)クライアント構成ファイル内の要素。 + + [!code[CustomPolicySample#7](../../../../samples/snippets/common/VS_Snippets_CFX/custompolicysample/common/client.exe.config#7)] + [!code-csharp[CustomPolicySample#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/custompolicysample/cs/client.exe.config#7)] + [!code-vb[CustomPolicySample#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/custompolicysample/vb/client.exe.config#7)] + +2. クライアント アプリケーションで使用して、 またはを解決するには、メタデータと、インポーターが自動的に呼び出されます。 + + [!code-csharp[CustomPolicySample#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/custompolicysample/cs/client.cs#10)] + [!code-vb[CustomPolicySample#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/custompolicysample/vb/client.vb#10)] + +### Svcutil.exe を使用してメタデータ システムにカスタム ポリシー インポーターを挿入するには + +1. インポーター型を追加、``内の要素、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/policyimporters.md) Svcutil.exe.config 構成ファイル内の要素。 また、`/svcutilConfig` オプションを使用して、異なる構成ファイルに登録されているポリシー インポーター型を読み込むように Svcutil.exe を指定することもできます。 + +2. 使用[ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)メタデータと、インポーターをインポートするのには、自動的に呼び出されます。 + +### プログラム使用してメタデータ システムにカスタム ポリシー インポーターを挿入するには + +1. インポーターを追加、 プロパティ (を使用している場合など、 ) メタデータをインポートする前にします。 + +## 関連項目 + + + + [メタデータ システムの拡張](../../../../docs/framework/wcf/extending/extending-the-metadata-system.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-import-custom-wsdl.md b/docs/framework/wcf/extending/how-to-import-custom-wsdl.md new file mode 100644 index 00000000000..13929ce7a3e --- /dev/null +++ b/docs/framework/wcf/extending/how-to-import-custom-wsdl.md @@ -0,0 +1,92 @@ +--- +title: "方法 : カスタム WSDL をインポートする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ddc3718d-ce60-44f6-92af-a5c67477dd99 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : カスタム WSDL をインポートする +このトピックでは、カスタム WSDL をインポートする方法について説明します。 カスタム WSDL を処理するには、 インターフェイスを実装する必要があります。 + +### カスタム WSDL をインポートするには + +1. を実装します。 メソッドを実装してメタデータをインポートする前に変更します。 メソッドと メソッドを実装してメタデータからインポートされたコントラクトとエンドポイントを変更します。 インポートしたコントラクトまたはエンドポイントにアクセスするには、対応するコンテキスト オブジェクト \( または \) を使用します。 + + ``` + public class WsdlDocumentationImporter : IWsdlImportExtension + { + public void ImportContract(WsdlImporter importer, WsdlContractConversionContext context) + { + // Contract documentation + if (context.WsdlPortType.Documentation != null) + { + context.Contract.Behaviors.Add(new WsdlDocumentationImporter(context.WsdlPortType.Documentation)); + } + // Operation documentation + foreach (Operation operation in context.WsdlPortType.Operations) + { + if (operation.Documentation != null) + { + OperationDescription operationDescription = context.Contract.Operations.Find(operation.Name); + if (operationDescription != null) + { + operationDescription.Behaviors.Add(new WsdlDocumentationImporter(operation.Documentation)); + } + } + } + } + + public void BeforeImport(ServiceDescriptionCollection wsdlDocuments, XmlSchemaSet xmlSchemas, ICollection policy) + { + Console.WriteLine("BeforeImport called."); + } + + public void ImportEndpoint(WsdlImporter importer, WsdlEndpointConversionContext context) + { + Console.WriteLine("ImportEndpoint called."); + } + } + ``` + +2. カスタム WSDL インポーターを使用するようクライアント アプリケーションを構成します。 Svcutil.exe を使用する場合は、Svcutil.exe の構成ファイル \(Svcutil.exe.config\) にこの構成を追加する必要があります。 + + ``` + + + + + + + + + + + + ``` + +3. 新しい インスタンス \(インポートする WSDL ドキュメントが含まれる インスタンスを渡す\) を作成し、 を呼び出します。 + + ``` + WsdlImporter importer = new WsdlImporter(metaDocs); System.Collections.ObjectModel.Collection contracts = importer.ImportAllContracts(); + + ``` + +## 参照 + [メタデータ](../../../../docs/framework/wcf/feature-details/metadata.md) + [メタデータのエクスポートとインポート](../../../../docs/framework/wcf/feature-details/exporting-and-importing-metadata.md) + [カスタム WSDL パブリケーション](../../../../docs/framework/wcf/samples/custom-wsdl-publication.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-inspect-and-modify-messages-on-the-service.md b/docs/framework/wcf/extending/how-to-inspect-and-modify-messages-on-the-service.md new file mode 100644 index 00000000000..a0d5e952ff4 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-inspect-and-modify-messages-on-the-service.md @@ -0,0 +1,52 @@ +--- +title: "方法 : サービスのメッセージを検査および変更する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9c5b1cc7-84f3-45f8-9226-d59c278e8c42 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 方法 : サービスのメッセージを検査および変更する +検査またはを介して受信または送信メッセージを変更できる、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)]クライアントを実装することによって、 をサービス ランタイムに挿入します。 詳細については、次を参照してください。[ディスパッチャーの拡張](../../../../docs/framework/wcf/extending/extending-dispatchers.md)します。 サービスの同等の機能は、 します。 + +### メッセージを検査または変更するには + +1. 実装、 インターフェイスです。 + +2. 実装、 、またはインターフェイス サービス メッセージ インスペクターを容易に挿入するスコープによって異なります。 + +3. 呼び出しの前に、動作を挿入、 メソッドをします。 詳細については、「[の構成と動作を使用したランタイムの拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md)します。 + +## 例 + 下のコード例では、次の項目を順番に示しています。 + +- サービス インスペクターの実装 + +- インスペクターを挿入するサービス動作 + +- サービス アプリケーションに動作を読み込んで実行する構成ファイル + + [!code-csharp[Interceptors#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/interceptors/cs/interceptors.cs#7)] + [!code-vb[Interceptors#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/interceptors/vb/interceptors.vb#7)] + + [!code-csharp[Interceptors#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/interceptors/cs/insertingbehaviors.cs#8)] + [!code-vb[Interceptors#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/interceptors/vb/insertingbehaviors.vb#8)] + + [!code[Interceptors#9](../../../../samples/snippets/common/VS_Snippets_CFX/interceptors/common/hostapplication.exe.config#9)] + [!code-csharp[Interceptors#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/interceptors/cs/hostapplication.exe.config#9)] + [!code-vb[Interceptors#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/interceptors/vb/hostapplication.exe.config#9)] + +## 関連項目 + + + [構成と動作を使用したランタイムの拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-inspect-or-modify-messages-on-the-client.md b/docs/framework/wcf/extending/how-to-inspect-or-modify-messages-on-the-client.md new file mode 100644 index 00000000000..92cdbd10eba --- /dev/null +++ b/docs/framework/wcf/extending/how-to-inspect-or-modify-messages-on-the-client.md @@ -0,0 +1,141 @@ +--- +title: "方法 : クライアントのメッセージを検査または変更する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b8256335-f1c2-419f-b862-9f220ccad84c +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 方法 : クライアントのメッセージを検査または変更する + を実装し、それをクライアントのランタイムに追加することで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの送受信メッセージを検査または変更できます。 詳細については、「[クライアントの拡張](../../../../docs/framework/wcf/extending/extending-clients.md)」を参照してください。 サービスの同等の機能は、 です。 コード例全体については、「[メッセージ インスペクター](../../../../docs/framework/wcf/samples/message-inspectors.md)」のサンプルを参照してください。 + +### メッセージを検査または変更するには + +1. インターフェイスを実装します。 + +2. クライアント メッセージ インスペクターを挿入するスコープに応じて、 または を実装します。 を使用すると、エンドポイント レベルで動作を変更できます。 を使用すると、コントラクト レベルで動作を変更できます。 + +3. メソッドまたは メソッドを呼び出す前に、動作を追加します。 詳細については、「[動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md)」を参照してください。 + +## 使用例 + 下のコード例では、次の項目を順番に示しています。 + +- クライアント インスペクター実装 + +- インスペクターを挿入するエンドポイント動作 + +- 構成ファイルで動作を追加できるようにする 派生クラス。 + +- クライアント メッセージ インスペクターをクライアント ランタイムに挿入するエンドポイント動作を追加する構成ファイル。 + +```csharp +// Client message inspector +public class SimpleMessageInspector : IClientMessageInspector +{ + public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState) + { + // Implement this method to inspect/modify messages after a message + // is received but prior to passing it back to the client + Console.WriteLine("AfterReceiveReply called"); + } + + public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel) + { + // Implement this method to inspect/modify messages before they + // are sent to the service + Console.WriteLine("BeforeSendRequest called"); + return null; + } +} + +``` + +```csharp +// Endpoint behavior +public class SimpleEndpointBehavior : IEndpointBehavior +{ + public void AddBindingParameters(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters) + { + // No implementation necessary + } + + public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime) + { + clientRuntime.MessageInspectors.Add(new SimpleMessageInspector()); + } + + public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) + { + // No implementation necessary + } + + public void Validate(ServiceEndpoint endpoint) + { + // No implementation necessary + } +} +``` + +```csharp +// Configuration element +public class SimpleBehaviorExtensionElement : BehaviorExtensionElement +{ + public override Type BehaviorType + { + get { return typeof(SimpleEndpointBehavior); } + } + + protected override object CreateBehavior() + { + // Create the endpoint behavior that will insert the message + // inspector into the client runtime + return new SimpleEndpointBehavior(); + } +} + +``` + +```vb + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-inspect-or-modify-parameters.md b/docs/framework/wcf/extending/how-to-inspect-or-modify-parameters.md new file mode 100644 index 00000000000..8070f84e854 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-inspect-or-modify-parameters.md @@ -0,0 +1,50 @@ +--- +title: "方法 : パラメーターを検査または変更する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ab6c0ac7-aac4-45ba-93d6-a0e9afd1756f +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : パラメーターを検査または変更する +検査またはに&1; 回の操作の受信または送信メッセージを変更することができます、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)]クライアント オブジェクトまたは[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]実装することによってサービス、 インターフェイスとそれをクライアントまたはサービス ランタイムに挿入します。 通常、操作の動作は、1 回の操作に対してパラメーター インスペクターを追加するために使用します。他の動作は、広い範囲でランタイムへの簡単なアクセスを提供するために使用できます。 詳細については、次を参照してください。[を拡張するクライアント](../../../../docs/framework/wcf/extending/extending-clients.md)と[ディスパッチャーの拡張](../../../../docs/framework/wcf/extending/extending-dispatchers.md)します。 + +### パラメーターの検査と変更 + +1. 実装、 インターフェイスです。 + +2. 実装、 または(要求されるスコープに応じて) するか、パラメーター インスペクターを追加する、 またはプロパティです。 + +3. 呼び出しの前に、動作を挿入またはメソッドをします。 詳細については、「[の構成と動作を使用したランタイムの拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md)します。 + +## 例 + 下のコード例では、次の項目を順番に示しています。 + +- パラメーター インスペクターの実装 + +- 使用してパラメーター インスペクターを挿入する動作実装、 、およびします。 + +- クライアント上にパラメーター インスペクターを挿入するために、クライアント アプリケーションでエンドポイント動作を読み込み、実行する構成ファイル + + [!code-csharp[Interceptors#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/interceptors/cs/interceptors.cs#4)] + [!code-vb[Interceptors#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/interceptors/vb/interceptors.vb#4)] + + [!code-csharp[Interceptors#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/interceptors/cs/insertingbehaviors.cs#5)] + [!code-vb[Interceptors#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/interceptors/vb/insertingbehaviors.vb#5)] + + [!code[Interceptors#3](../../../../samples/snippets/common/VS_Snippets_CFX/interceptors/common/client.exe.config#3)] + [!code-csharp[Interceptors#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/interceptors/cs/client.exe.config#3)] + [!code-vb[Interceptors#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/interceptors/vb/client.exe.config#3)] + +## 関連項目 + [構成と動作を使用したランタイムの拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-lock-down-endpoints-in-the-enterprise.md b/docs/framework/wcf/extending/how-to-lock-down-endpoints-in-the-enterprise.md new file mode 100644 index 00000000000..0dea788a535 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-lock-down-endpoints-in-the-enterprise.md @@ -0,0 +1,75 @@ +--- +title: "方法 : 企業内のエンドポイントをロックダウンする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1b7eaab7-da60-4cf7-9d6a-ec02709cf75d +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# 方法 : 企業内のエンドポイントをロックダウンする +大規模な企業では、多くの場合、企業のセキュリティ ポリシーに準拠してアプリケーションを開発する必要があります。 ここでは、コンピューターにインストールされているすべての [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアント アプリケーションを検証できるクライアント エンドポイント検証を開発してインストールする方法を説明します。 + + この場合、このエンドポイント動作は machine.config ファイルのクライアントの [\](../../../../docs/framework/configure-apps/file-schema/wcf/commonbehaviors.md) セクションに追加されるため、検証コントロールはクライアント検証コントロールです。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、クライアント アプリケーションだけを対象に共通のエンドポイント動作を読み込み、サービス アプリケーションだけを対象に共通のサービス動作を読み込みます。 サービス アプリケーション用のこの同じ検証コントロールをインストールするには、検証コントロールがサービス動作であることが必要です。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [\](../../../../docs/framework/configure-apps/file-schema/wcf/commonbehaviors.md) セクション。 + +> [!IMPORTANT] +> アプリケーションが部分信頼環境で実行されている場合、構成ファイルの [\](../../../../docs/framework/configure-apps/file-schema/wcf/commonbehaviors.md) セクションに追加された 属性 \(APTCA\) でマークされていないサービス動作またはエンドポイント動作は実行されません。また、そのようになっても例外はスローされません。 検証コントロールなどの共通動作を強制的に実行するには、次のいずれかを行う必要があります。 +> +> \-\- 共通動作を 属性でマークし、部分信頼アプリケーションとして展開したときに実行できるようにします。 APTCA でマークされたアセンブリを実行できないように、コンピューターでレジストリ エントリを設定できます。 +> +> \-\- アプリケーションが完全信頼アプリケーションとして配置されている場合に、ユーザーが部分信頼環境でアプリケーションを実行するようにコード アクセス セキュリティ設定を変更できないことを確認します。 ユーザーがこのような変更を行うことができる場合、カスタム検証コントロールは実行されず、例外もスローされません。 これを確認する方法については、「[コード アクセス セキュリティ ポリシー ツール \(Caspol.exe\)](http://go.microsoft.com/fwlink/?LinkId=248222)」の `levelfinal` オプションを参照してください。 +> +> 詳細については、「[部分信頼のベスト プラクティス](../../../../docs/framework/wcf/feature-details/partial-trust-best-practices.md)」および「[サポートされている配置シナリオ](../../../../docs/framework/wcf/feature-details/supported-deployment-scenarios.md)」を参照してください。 + +### エンドポイント検証コントロールを作成するには + +1. メソッドに、必要な検証手順を備えた を作成します。 次にコード例を示します。 \(`InternetClientValidatorBehavior` は[セキュリティ検証](../../../../docs/framework/wcf/samples/security-validation.md)のサンプルから取得したものです。\) + + [!code-csharp[LockdownValidation#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/lockdownvalidation/cs/internetclientvalidatorbehavior.cs#2)] + +2. 手順 1. で作成したエンドポイント検証コントロールを登録する新しい を作成します。 このコード例を次に示します。 \(この例の元のコードは、「[セキュリティ検証](../../../../docs/framework/wcf/samples/security-validation.md)」のサンプルにあります。\) + + [!code-csharp[LockdownValidation#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/lockdownvalidation/cs/internetclientvalidatorelement.cs#3)] + +3. コンパイル済みのアセンブリが厳密な名前で署名されていることを確認します。 詳細については、「[Sn.exe \(厳密名ツール\)](http://go.microsoft.com/fwlink/?LinkId=248217)」およびご使用の言語のコンパイラ コマンドを参照してください。 + +### 検証コントロールをターゲット コンピューターにインストールには + +1. 適切な機構を使用してエンドポイント検証をインストールします。 企業では、グループ ポリシーと Systems Management Server \(SMS\) を使用してインストールします。 + +2. [Gacutil.exe \(グローバル アセンブリ キャッシュ ツール\)](http://msdn.microsoft.com/library/ex0ss12c\(v=vs.110\).aspx)を使用して、厳密な名前のアセンブリをグローバル アセンブリ キャッシュにインストールします。 + +3. 名前空間の型を使用して、次の処理を行います。 + + 1. 完全修飾型名を使用して [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviorextensions.md) セクションに拡張を追加し、要素をロックします。 + + [!code-csharp[LockdownValidation#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/lockdownvalidation/cs/hostapplication.cs#5)] + + 2. 動作要素を [\](../../../../docs/framework/configure-apps/file-schema/wcf/commonbehaviors.md) セクションの `EndpointBehaviors` プロパティに追加して要素をロックします。 \(サービスの検証コントロールをインストールするには、検証コントロールが であることが必要です。また、検証コントロールを `ServiceBehaviors` プロパティに追加する必要があります\)。 次のコード例は、手順 a. と b. の後の適切な構成を示しています。厳密な名前が存在しない点だけが異なります。 + + [!code-csharp[LockdownValidation#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/lockdownvalidation/cs/hostapplication.cs#6)] + + 3. machine.config ファイルを保存します。 次のコード例では、手順 3. にあるすべてのタスクを実行しますが、変更された machine.config ファイルのコピーはローカルに保存されます。 + + [!code-csharp[LockdownValidation#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/lockdownvalidation/cs/hostapplication.cs#7)] + +## 使用例 + 次のコード例では、machine.config ファイルに共通の動作を追加し、そのコピーをディスクに保存する方法を示します。 `InternetClientValidatorBehavior` は[セキュリティ検証](../../../../docs/framework/wcf/samples/security-validation.md)のサンプルから取得したものです。 + + [!code-csharp[LockdownValidation#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/lockdownvalidation/cs/hostapplication.cs#1)] + +## .NET Framework セキュリティ + また、構成ファイルの要素を暗号化する必要がある場合もあります。 詳細については、「参照」を参照してください。 + +## 参照 + [How To: DPAPI を使用して ASP.NET 2.0 内の構成セクションを暗号化する方法](http://go.microsoft.com/fwlink/?LinkId=94954) + [How To: RSA を使用して ASP.NET 2.0 内の構成セクションを暗号化する方法](http://go.microsoft.com/fwlink/?LinkId=94955) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-retrieve-metadata-over-a-non-mex-binding.md b/docs/framework/wcf/extending/how-to-retrieve-metadata-over-a-non-mex-binding.md new file mode 100644 index 00000000000..4e0087a4fa0 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-retrieve-metadata-over-a-non-mex-binding.md @@ -0,0 +1,134 @@ +--- +title: "方法: MEX 以外のバインディングを介してメタデータを取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2292e124-81b2-4317-b881-ce9c1ec66ecb +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 方法: MEX 以外のバインディングを介してメタデータを取得する +ここでは、MEX 以外のバインディングを介して MEX エンドポイントからメタデータを取得する方法を説明します。このサンプル コードは、[カスタム セキュア メタデータ エンドポイント](../../../../docs/framework/wcf/samples/custom-secure-metadata-endpoint.md) のサンプルに基づいています。 + +### MEX 以外のバインディングを介してメタデータを取得するには + +1. MEX エンドポイントで使用されているバインディングを特定します。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスの場合、サービスの構成ファイルにアクセスすることで MEX バインディングを特定できます。この場合、MEX バインディングは、次のサービス構成で定義されています。 + + ``` + + + + + + + + + + + + + + + + + + + + + + + ``` + +2. クライアント構成ファイルで、同じカスタム バインディングを構成します。ここでクライアントは `clientCredentials` 動作も定義して、MEX エンドポイントからメタデータを要求するときに、サービスに対する認証で使用する証明書を指定します。カスタム バインディングを介してメタデータを要求するときに Svcutil.exe を使用する場合は、Svcutil.exe の構成ファイル \(Svcutil.exe.config\) に MEX エンドポイント構成を追加する必要があります。また、エンドポイント構成の名前が、次のコードに示すように、MEX エンドポイントのアドレスの URI スキームと一致する必要があります。 + + ``` + + + + + + + + + + + + + + + + + + + + + + + + + + + ``` + +3. `MetadataExchangeClient` を作成して `GetMetadata` を呼び出します。これを行うには、次の例に示すように、構成でカスタム バインディングを指定する方法と、コードでカスタム バインディングを指定する方法の 2 つの方法があります。 + + ``` + // The custom binding is specified in configuration. + EndpointAddress mexAddress = new EndpointAddress("http://localhost:8000/ServiceModelSamples/Service/mex"); + + MetadataExchangeClient mexClient = new MetadataExchangeClient("http"); + mexClient.ResolveMetadataReferences = true; + MetadataSet mexSet = mexClient.GetMetadata(mexAddress); + + // The custom binding is specified in code. + // Specify the Metadata Exchange binding and its security mode. + WSHttpBinding mexBinding = new WSHttpBinding(SecurityMode.Message); + mexBinding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate; + + // Create a MetadataExchangeClient and set the certificate details. + MetadataExchangeClient mexClient = new MetadataExchangeClient(mexBinding); + mexClient.SoapCredentials.ClientCertificate.SetCertificate( + StoreLocation.CurrentUser, StoreName.My, + X509FindType.FindBySubjectName, "client.com"); + mexClient.SoapCredentials.ServiceCertificate.Authentication. + CertificateValidationMode = + X509CertificateValidationMode.PeerOrChainTrust; + mexClient.SoapCredentials.ServiceCertificate.SetDefaultCertificate( + StoreLocation.CurrentUser, StoreName.TrustedPeople, + X509FindType.FindBySubjectName, "localhost"); + MetadataExchangeClient mexClient2 = new MetadataExchangeClient(customBinding); + mexClient2.ResolveMetadataReferences = true; + MetadataSet mexSet2 = mexClient2.GetMetadata(mexAddress); + ``` + +4. 次のコードに示すように、`WsdlImporter` を作成して `ImportAllEndpoints` を呼び出します。 + + ``` + WsdlImporter importer = new WsdlImporter(mexSet); + ServiceEndpointCollection endpoints = importer.ImportAllEndpoints(); + ``` + +5. この時点で、サービス エンドポイントのコレクションが取得されます。メタデータのインポート[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : メタデータをサービス エンドポイントにインポートする](../../../../docs/framework/wcf/feature-details/how-to-import-metadata-into-service-endpoints.md)」を参照してください。 + +## 参照 + [メタデータ](../../../../docs/framework/wcf/feature-details/metadata.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-use-separate-x-509-certificates-for-signing-and-encryption.md b/docs/framework/wcf/extending/how-to-use-separate-x-509-certificates-for-signing-and-encryption.md new file mode 100644 index 00000000000..ed51929c146 --- /dev/null +++ b/docs/framework/wcf/extending/how-to-use-separate-x-509-certificates-for-signing-and-encryption.md @@ -0,0 +1,102 @@ +--- +title: "方法 : 署名および暗号化に個別の X.509 証明書を使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ClientCredentials クラス" + - "ClientCredentialsSecurityTokenManager クラス" + - "WCF, 拡張機能" +ms.assetid: 0b06ce4e-7835-4d82-8baf-d525c71a0e49 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 方法 : 署名および暗号化に個別の X.509 証明書を使用する +ここでは、クライアントとサービスの両方においてメッセージの署名と暗号化とで別の証明書を使用するように [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を構成する方法を示します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では複数のクライアント証明書またはサービス証明書を設定する API が提供されていないため、署名と暗号化で別の証明書を使用できるようにするには、カスタム クライアント資格情報またはカスタム サービス資格情報 \(あるいはその両方\) を作成する必要があります。さらに、複数の証明書の情報を利用し、指定されたキーの使用方法やメッセージの方向について適切なセキュリティ トークン プロバイダーを作成するために、セキュリティ トークン マネージャーを用意する必要があります。 + + 使用される主要なクラス、そのクラスの継承元のクラス \(上向きの矢印で表示\)、および特定のメソッドおよびプロパティの戻り値の型を次の図に示します。 + +- `MyClientCredentials` は、 のカスタム実装です。 + + - 図に示されたすべてのプロパティは、すべて のインスタンスを返します。 + + - メソッド は、`MyClientCredentialsSecurityTokenManager` のインスタンスを返します。 + +- `MyClientCredentialsSecurityTokenManager` は、 のカスタム実装です。 + + - メソッド は、 のインスタンスを返します。 + + ![クライアント資格情報がどのように使用されるのかを示す図](../../../../docs/framework/wcf/extending/media/e4971edd-a59f-4571-b36f-7e6b2f0d610f.gif "e4971edd\-a59f\-4571\-b36f\-7e6b2f0d610f") + + カスタム資格情報[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md)」を参照してください。 + + また、カスタム ID 検証機能を作成し、カスタム バインディングのセキュリティ バインド要素にリンクする必要があります。さらに、既定の資格情報の代わりにカスタム資格情報を使用する必要があります。 + + カスタム バインディングに関連したクラス、およびカスタム ID 検証機能のリンク方法を次の図に示します。関連するバインド要素はいくつかありますが、そのすべてが から継承されています。 には、 プロパティがあります。このプロパティは、`MyIdentityVerifier` のカスタマイズの元となる のインスタンスを返します。 + + ![カスタム バインディング要素を示す図](../../../../docs/framework/wcf/extending/media/dddea4a2-0bb4-4921-9bf4-20d4d82c3da5.gif "dddea4a2\-0bb4\-4921\-9bf4\-20d4d82c3da5") + + カスタム ID 検証機能[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : カスタム クライアント ID 検証機能を作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-client-identity-verifier.md)」を参照してください。 + +### 署名と暗号化に別個の証明書を使用するには + +1. クラスを継承する新しいクライアント資格情報クラスを定義します。複数の証明書を指定できるようにする、`ClientSigningCertificate`、`ClientEncryptingCertificate`、`ServiceSigningCertificate`、および `ServiceEncryptingCertificate` の 4 つの新しいプロパティを実装します。また、 メソッドをオーバーライドして、次のステップで定義するカスタマイズ済みの クラスのインスタンスを返すように設定します。 + + [!code-csharp[c_FourCerts#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_fourcerts/cs/source.cs#1)] + [!code-vb[c_FourCerts#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_fourcerts/vb/source.vb#1)] + +2. クラスを継承する新しいクライアント セキュリティ トークン マネージャーを定義します。適切なセキュリティ トークン プロバイダーを作成するために、 メソッドをオーバーライドします。メッセージの方向とキーの使用方法は、`requirement` パラメーター \(\) で提供されます。 + + [!code-csharp[c_FourCerts#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_fourcerts/cs/source.cs#2)] + [!code-vb[c_FourCerts#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_fourcerts/vb/source.vb#2)] + +3. クラスを継承する新しいサービス資格情報クラスを定義します。複数の証明書を指定できるようにする、`ClientSigningCertificate`、`ClientEncryptingCertificate`、`ServiceSigningCertificate`、および `ServiceEncryptingCertificate` の 4 つの新しいプロパティを実装します。また、 メソッドをオーバーライドして、次のステップで定義するカスタマイズ済みの クラスのインスタンスを返すように設定します。 + + [!code-csharp[c_FourCerts#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_fourcerts/cs/source.cs#3)] + [!code-vb[c_FourCerts#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_fourcerts/vb/source.vb#3)] + +4. クラスを継承する新しいサービス セキュリティ トークン マネージャーを定義します。渡されたメッセージの方向とキーの使用方法について適切なセキュリティ トークン プロバイダーを作成するために、 メソッドをオーバーライドします。 + + [!code-csharp[c_FourCerts#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_fourcerts/cs/source.cs#4)] + [!code-vb[c_FourCerts#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_fourcerts/vb/source.vb#4)] + +### クライアントで複数の証明書を使用するには + +1. カスタム バインディングの作成セキュリティ バインド要素は、要求と応答について異なるセキュリティ トークン プロバイダーが存在することを可能にする二重モードで動作する必要があります。これを行うには、二重モード対応のトランスポートを使用するか、次のコードで示すように を使用します。次のステップで定義するカスタマイズ済みの をセキュリティ バインド要素にリンクします。既定のクライアント資格情報を、事前に作成したカスタマイズ済みのクライアント資格情報に置き換えます。 + + [!code-csharp[c_FourCerts#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_fourcerts/cs/source.cs#5)] + [!code-vb[c_FourCerts#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_fourcerts/vb/source.vb#5)] + +2. カスタム を定義します。要求の暗号化と応答への署名で異なる証明書が使用されるため、サービスには複数の ID があります。 + + > [!NOTE] + > 次のサンプルで用意されたカスタム ID 検証方法では、デモンストレーション用であるため、エンドポイント ID 検査がまったく行われません。これは製品版のコードでは、お勧めしません。 + + [!code-csharp[c_FourCerts#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_fourcerts/cs/source.cs#6)] + [!code-vb[c_FourCerts#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_fourcerts/vb/source.vb#6)] + +### サービスで複数の証明書を使用するには + +1. カスタム バインディングの作成セキュリティ バインド要素は、要求と応答について異なるセキュリティ トークン プロバイダーが存在することを可能にする二重モードで動作する必要があります。クライアントの場合と同様に、二重モード対応のトランスポートを使用するか、次のコードで示すように を使用します。既定のサービス資格情報を、事前に作成したカスタマイズ済みのサービス資格情報に置き換えます。 + + [!code-csharp[c_FourCerts#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_fourcerts/cs/source.cs#7)] + [!code-vb[c_FourCerts#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_fourcerts/vb/source.vb#7)] + +## 参照 + + + + + + [チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する](../../../../docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/how-to-write-an-extension-for-the-servicecontractgenerator.md b/docs/framework/wcf/extending/how-to-write-an-extension-for-the-servicecontractgenerator.md new file mode 100644 index 00000000000..bce3c19820a --- /dev/null +++ b/docs/framework/wcf/extending/how-to-write-an-extension-for-the-servicecontractgenerator.md @@ -0,0 +1,110 @@ +--- +title: "方法 : ServiceContractGenerator の拡張を記述する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 876ca823-bd16-4bdf-9e0f-02092df90e51 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 方法 : ServiceContractGenerator の拡張を記述する +このトピックでは、 の拡張を記述する方法について説明します。これは、操作の動作に インターフェイスを実装するか、コントラクトの動作に インターフェイスを実装することで可能になります。このトピックでは、 インターフェイスをコントラクト動作に実装する方法を説明します。 + + は、サービス コントラクト、クライアント型、およびクライアント構成を の各インターフェイスから生成します。通常は、サービス メタデータから 、および インスタンスをインポートし、これらのインスタンスを使用してサービスを呼び出すコードを生成します。この例では、 の実装を使用して WSDL 注釈を処理し、生成されたコードに関するコメントを生成するために、インポートしたコントラクトにコード生成拡張を追加します。 + +### ServiceContractGenerator の拡張を記述するには + +1. を実装します。生成されたサービス コントラクトを変更するには、 メソッドに渡された インスタンスを使用します。 + + ``` + public void GenerateContract(ServiceContractGenerationContext context) + { + Console.WriteLine("In generate contract."); + context.ContractType.Comments.AddRange(Formatter.FormatComments(commentText)); + } + ``` + +2. 同じクラスに を実装します。 メソッドは、インポートされた インスタンスにコード生成拡張を追加することによって、特定の WSDL 拡張 \(この場合は WSDL 注釈\) を処理できます。 + + ``` + public void ImportContract(WsdlImporter importer, WsdlContractConversionContext context) + { + // Contract documentation + if (context.WsdlPortType.Documentation != null) + { + context.Contract.Behaviors.Add(new WsdlDocumentationImporter(context.WsdlPortType.Documentation)); + } + // Operation documentation + foreach (Operation operation in context.WsdlPortType.Operations) + { + if (operation.Documentation != null) + { + OperationDescription operationDescription = context.Contract.Operations.Find(operation.Name); + if (operationDescription != null) + { + operationDescription.Behaviors.Add(new WsdlDocumentationImporter(operation.Documentation)); + } + } + } + } + public void BeforeImport(ServiceDescriptionCollection wsdlDocuments, XmlSchemaSet xmlSchemas, ICollection policy) + { + Console.WriteLine("BeforeImport called."); + } + + public void ImportEndpoint(WsdlImporter importer, WsdlEndpointConversionContext context) + { + Console.WriteLine("ImportEndpoint called."); + } + ``` + +3. クライアント構成に WSDL インポーターを追加します。 + + ``` + + + + + + ``` + +4. クライアント コードで、`MetadataExchangeClient` を作成して `GetMetadata` を呼び出します。 + + ``` + MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress); + mexClient.ResolveMetadataReferences = true; + MetadataSet metaDocs = mexClient.GetMetadata(); + ``` + +5. `WsdlImporter` を作成して `ImportAllContracts` を呼び出します。 + + ``` + WsdlImporter importer = new WsdlImporter(metaDocs); System.Collections.ObjectModel.Collection contracts = importer.ImportAllContracts(); + ``` + +6. `ServiceContractGenerator` を作成して、コントラクトごとに `GenerateServiceContractType` を呼び出します。 + + ``` + ServiceContractGenerator generator = new ServiceContractGenerator(); + foreach (ContractDescription contract in contracts) + { + generator.GenerateServiceContractType(contract); + } + if (generator.Errors.Count != 0) + throw new Exception("There were errors during code compilation."); + ``` + +7. を実装する特定のコントラクトのコントラクト動作ごとに、 が自動的に呼び出されます。その後、渡された をこのメソッドで変更できます。この例では、コメントが追加されています。 + +## 参照 + [メタデータ](../../../../docs/framework/wcf/feature-details/metadata.md) + [方法 : カスタム WSDL をインポートする](../../../../docs/framework/wcf/extending/how-to-import-custom-wsdl.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/importing-custom-metadata-for-a-wcf-extension.md b/docs/framework/wcf/extending/importing-custom-metadata-for-a-wcf-extension.md new file mode 100644 index 00000000000..284616ca482 --- /dev/null +++ b/docs/framework/wcf/extending/importing-custom-metadata-for-a-wcf-extension.md @@ -0,0 +1,61 @@ +--- +title: "WCF 拡張に対するカスタム メタデータのインポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 78beb28f-408a-4c75-9c3c-caefe9595b1a +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# WCF 拡張に対するカスタム メタデータのインポート +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、メタデータのインポートとは、サービス、またはサービスのコンポーネントの抽象表現をサービスのメタデータから生成するプロセスです。たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、 インスタンス、 インスタンス、または インスタンスをサービスの WSDL ドキュメントからインポートできます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービス メタデータをインポートするには、 抽象クラスの実装を使用します。 クラスから派生した型では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の WS\-Policy インポート ロジックを利用したメタデータ形式のインポートをサポートします。 + + カスタム メタデータは、システム指定のメタデータ インポーターでインポートできない XML 要素で構成されます。通常、これにはカスタム WSDL 拡張とカスタム ポリシー アサーションが含まれます。 + + ここでは、カスタム WSDL 拡張とカスタム ポリシー アサーションをインポートする方法について説明します。インポート プロセス自体には重点を置きません。カスタム メタデータであるか、システムがサポートするメタデータであるかに関係なく、メタデータをエクスポートおよびインポートする型の使用方法の詳細については、「[メタデータのエクスポートとインポート](../../../../docs/framework/wcf/feature-details/exporting-and-importing-metadata.md)」を参照してください。 + +## 概要 + 型は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に含まれる 抽象クラスの実装です。 型は、 オブジェクトにまとめられた、結び付けられているポリシーを使用して WSDL メタデータをインポートします。既定のインポーターが認識しないポリシー アサーションおよび WSDL 拡張は、インポートに使用される登録済みのカスタム ポリシーおよびカスタム WDSL インポーターに渡されます。通常、インポーターは、ユーザー定義のバインド要素をサポートしたりインポートされたコントラクトを変更したりする目的で実装されます。 + + ここでは、次の内容について説明します。 + +1. 説明の生成とコードの生成を行う前に、カスタム インポーターに WSDL データを公開する インターフェイスを実装して使用する方法。このインターフェイスは、特定のメタデータ セットを使用して実行される説明の種類とコードのコンパイルを確認または変更するために使用できます。 + +2. 説明オブジェクトを生成する前に、インポーターにポリシー アサーションを公開する インターフェイスを実装して使用する方法。このインターフェイスは、ダウンロードしたポリシーに基づいてバインディングまたはコントラクトを確認または変更するために使用できます。 + + カスタム WSDL とカスタム ポリシー アサーションのエクスポートの詳細については、「[WCF 拡張に対するカスタム メタデータのエクスポート](../../../../docs/framework/wcf/extending/exporting-custom-metadata-for-a-wcf-extension.md)」を参照してください。 + +## カスタム WSDL 拡張のインポート + WSDL 拡張のインポートをサポートするには、 インターフェイスを実装し、その実装を プロパティに追加します。 は、アプリケーション構成ファイルに登録された インターフェイスの実装を読み込むこともできます。いくつかの WSDL インポーターが既定で登録されること、および登録された WSDL インポーターの順序に意味があることに注意してください。 + + は、カスタム WSDL インポーターを読み込んで使用する場合、インポート プロセスの前にメタデータを変更できるように、まず メソッドを呼び出します。次に、コントラクトがインポートされたら、メタデータからインポートされたコントラクトを変更できるように メソッドを呼び出します。最後に、インポートされたエンドポイントを変更できるように メソッドを呼び出します。 + + 詳細については、「[方法 : カスタム WSDL をインポートする](../../../../docs/framework/wcf/extending/how-to-import-custom-wsdl.md)」を参照してください。 + +### カスタム ポリシー アサーションのインポート + 型と [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) は、WSDL ドキュメントに結び付けられたポリシー表現に含まれるさまざまなポリシー アサーション型を自動的に処理します。これらのツールは、WSDL バインディングや WSDL ポートに結び付けられたポリシー表現の収集、正規化、およびマージを行います。 + + カスタム ポリシー アサーションのインポートをサポートするには、 インターフェイスを実装し、その実装を プロパティに追加します。 は、アプリケーション構成ファイルに登録された インターフェイスの実装を読み込むこともできます。いくつかのポリシー インポーターが既定で登録されること、および登録されたポリシー インポーターの順序に意味があることに注意してください。 + + メタデータ システムは、登録されたすべてのポリシー インポート拡張で メソッドを呼び出します。これは、メッセージ、操作、およびエンドポイント ポリシーのサブジェクトに結び付けられたポリシー代替手段の各組み合わせに対して行われます。WSDL ポートをインポートする場合、ポリシー インポート拡張を呼び出す前に、ポートおよび対応する WSDL バインディングに結び付けられているポリシーがマージされます。このポリシー代替手段は、 を通じて、 オブジェクトとして使用可能になります。各 は、 オブジェクトによって表されるポリシー アサーションのコレクションです。 + + オブジェクトの プロパティと プロパティは、WSDL からインポートされた オブジェクトと オブジェクトを公開します。ポリシー アサーションを処理する場合、ポリシー インポート拡張は、特定のポリシー アサーション型のインスタンスを見つけ、対応する変更を オブジェクトまたは オブジェクトに加えてから、対応する からそのポリシー アサーションを削除します。 + + `wsp:Optional` 属性および入れ子になったポリシー表現は正規化されないため、ポリシー インポート拡張はこれらのポリシー構文を処理する必要があります。また、ポリシー インポート拡張は、同じ オブジェクトと オブジェクトで何度でも呼び出される可能性があるため、この動作に対して強固である必要があります。 + +> [!IMPORTANT] +> 無効なメタデータまたは不適切なメタデータがインポーターに渡される可能性があります。カスタム インポーターがすべての形式の XML に対して強固であることを確認してください。 + +## 参照 + [方法 : カスタム WSDL をインポートする](../../../../docs/framework/wcf/extending/how-to-import-custom-wsdl.md) + [方法 : カスタム ポリシー アサーションをインポートする](../../../../docs/framework/wcf/extending/how-to-import-custom-policy-assertions.md) + [方法 : ServiceContractGenerator の拡張を記述する](../../../../docs/framework/wcf/extending/how-to-write-an-extension-for-the-servicecontractgenerator.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/media/channelstatetranitionshighleveldiagram.gif b/docs/framework/wcf/extending/media/channelstatetranitionshighleveldiagram.gif new file mode 100644 index 00000000000..38721fbfea8 Binary files /dev/null and b/docs/framework/wcf/extending/media/channelstatetranitionshighleveldiagram.gif differ diff --git a/docs/framework/wcf/extending/media/dddea4a2-0bb4-4921-9bf4-20d4d82c3da5.gif b/docs/framework/wcf/extending/media/dddea4a2-0bb4-4921-9bf4-20d4d82c3da5.gif new file mode 100644 index 00000000000..1f0503f26c9 Binary files /dev/null and b/docs/framework/wcf/extending/media/dddea4a2-0bb4-4921-9bf4-20d4d82c3da5.gif differ diff --git a/docs/framework/wcf/extending/media/e4971edd-a59f-4571-b36f-7e6b2f0d610f.gif b/docs/framework/wcf/extending/media/e4971edd-a59f-4571-b36f-7e6b2f0d610f.gif new file mode 100644 index 00000000000..6f4d5ae0039 Binary files /dev/null and b/docs/framework/wcf/extending/media/e4971edd-a59f-4571-b36f-7e6b2f0d610f.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-basicthreemepsc.gif b/docs/framework/wcf/extending/media/wcfc-basicthreemepsc.gif new file mode 100644 index 00000000000..e3587888ca1 Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-basicthreemepsc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-channelstackhighlevelc.gif b/docs/framework/wcf/extending/media/wcfc-channelstackhighlevelc.gif new file mode 100644 index 00000000000..996ec6a3bde Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-channelstackhighlevelc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-dispatchruntimearchc.gif b/docs/framework/wcf/extending/media/wcfc-dispatchruntimearchc.gif new file mode 100644 index 00000000000..2e38a9daab8 Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-dispatchruntimearchc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-sessionandsessionlesschannelsc.gif b/docs/framework/wcf/extending/media/wcfc-sessionandsessionlesschannelsc.gif new file mode 100644 index 00000000000..b5ee627b674 Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-sessionandsessionlesschannelsc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-soap1-1andsoap1-2faultcomparisonc.gif b/docs/framework/wcf/extending/media/wcfc-soap1-1andsoap1-2faultcomparisonc.gif new file mode 100644 index 00000000000..5271e97627e Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-soap1-1andsoap1-2faultcomparisonc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-tracinginchannelsc.gif b/docs/framework/wcf/extending/media/wcfc-tracinginchannelsc.gif new file mode 100644 index 00000000000..b717c4a6dca Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-tracinginchannelsc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-wcfcchannelsigure3omumtreec.gif b/docs/framework/wcf/extending/media/wcfc-wcfcchannelsigure3omumtreec.gif new file mode 100644 index 00000000000..0854f28c61c Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-wcfcchannelsigure3omumtreec.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-wcfchannelsguire7ico-closeflowchartc.gif b/docs/framework/wcf/extending/media/wcfc-wcfchannelsguire7ico-closeflowchartc.gif new file mode 100644 index 00000000000..36107b9d293 Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-wcfchannelsguire7ico-closeflowchartc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure1highlevelc.gif b/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure1highlevelc.gif new file mode 100644 index 00000000000..b3f06502b89 Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure1highlevelc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure2highlevelfactgoriesc.gif b/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure2highlevelfactgoriesc.gif new file mode 100644 index 00000000000..753723aa38f Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure2highlevelfactgoriesc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure5statetransitionsdetailsc.gif b/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure5statetransitionsdetailsc.gif new file mode 100644 index 00000000000..7ea6c3e07b9 Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure5statetransitionsdetailsc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure8ico-abortflowchartc.gif b/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure8ico-abortflowchartc.gif new file mode 100644 index 00000000000..e6755a0835d Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-wcfchannelsigure8ico-abortflowchartc.gif differ diff --git a/docs/framework/wcf/extending/media/wcfc-wcfchannelsigurecoopenflowchartf.gif b/docs/framework/wcf/extending/media/wcfc-wcfchannelsigurecoopenflowchartf.gif new file mode 100644 index 00000000000..fae115bb175 Binary files /dev/null and b/docs/framework/wcf/extending/media/wcfc-wcfchannelsigurecoopenflowchartf.gif differ diff --git a/docs/framework/wcf/extending/overriding-the-identity-of-a-service-for-authentication.md b/docs/framework/wcf/extending/overriding-the-identity-of-a-service-for-authentication.md new file mode 100644 index 00000000000..ac06e6224df --- /dev/null +++ b/docs/framework/wcf/extending/overriding-the-identity-of-a-service-for-authentication.md @@ -0,0 +1,74 @@ +--- +title: "認証のためのサービスの ID のオーバーライド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d613a22b-07d7-41a4-bada-1adc653b9b5d +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 認証のためのサービスの ID のオーバーライド +クライアント資格情報の種類を選択すると、サービス メタデータで公開される ID の種類が指定されるため、通常、サービスで ID を設定する必要はありません。 たとえば、次の構成コードを使用して、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)要素とセット、`clientCredentialType`属性を Windows です。 + + + + 次の Web サービス記述言語 (WSDL) コードは、定義済みのエンドポイントの ID を示しています。 この例では、サービスが特定のユーザー アカウントで自己ホスト型サービスとして実行されて(username@contoso.com)でユーザー プリンシパル名 (UPN) id を含んでいる、アカウント名。 UPN は、Windows ドメインではユーザー ログオン名とも呼ばれます。 + + + + Id の設定を示すサンプル アプリケーションを参照してください。[サービス Id サンプル](../../../../docs/framework/wcf/samples/service-identity-sample.md)します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]サービス id を参照してください[サービス Id と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)します。 + +## Kerberos 認証と ID + 既定では、Windows の資格情報を使用するサービスが構成されている場合、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/identity.md)を含む要素、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/userprincipalname.md)または[ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/serviceprincipalname.md)要素は、WSDL で生成します。 サービスが実行されている場合、 `LocalSystem`、 `LocalService`、または`NetworkService`アカウント、サービス プリンシパル名 (SPN) が既定の形式で生成`host/` \<*ホスト名*> それらのアカウントのコンピューターの SPN のデータにアクセスできるためです。 サービスが別のアカウントで実行されている場合[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)]形式の UPN を生成*username*>@<*domainName*`>`します。 これらが生成されるのは、Kerberos 認証では、サービスを認証するために UPN または SPN をクライアントに提供する必要があるからです。 + + Setspn.exe ツールを使用して、他の SPN をドメイン内のサービスのアカウントに登録することもできます。 登録した SPN は、そのサービスの ID として使用できます。 このツールをダウンロードするを参照してください。 [Windows 2000 リソース キット ツール: Setspn.exe](http://go.microsoft.com/fwlink/?LinkId=91752)します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]このツールを参照してください[Setspn の概要](http://go.microsoft.com/fwlink/?LinkId=61374)します。 + +> [!NOTE] +> ネゴシエーションを行わずに Windows 資格情報を使用するには、サービスのユーザー アカウントが Active Directory ドメインに登録された SPN にアクセスできる必要があります。 これは、次の方法で行うことができます。 + +- サービスを実行するには、NetworkService アカウントまたは LocalSystem アカウントを使用します。 これらのアカウントは、コンピューターが Active Directory ドメインに参加したときに確立されたコンピューターの SPN にアクセスできるため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、適切な SPN 要素を、サービスのメタデータ (WSDL) にあるサービスのエンドポイント内部に自動的に生成します。 + +- 任意の Active Directory ドメイン アカウントを使用してサービスを実行します。 この場合、そのドメイン アカウント用の SPN を確立します。これには、Setspn.exe ユーティリティ ツールを使用できます。 サービスのアカウント用の SPN を作成したら、SPN をそのメタデータ (WSDL) を通じてサービスのクライアントに公開するように [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を構成します。 これを行うには、アプリケーション構成ファイルまたはコードを使用して、公開されるエンドポイントのエンドポイント ID を設定します。 + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)]Spn、Kerberos プロトコル、および Active Directory を参照してください。 [Kerberos Technical Supplement for Windows](http://go.microsoft.com/fwlink/?LinkId=88330)します。 + +### SPN または UPN が空の文字列の場合 + 空の文字列の SPN または UPN を設定した場合は、使用しているセキュリティ レベルと認証モードに応じて、次のようになります。 + +- トランスポート レベルのセキュリティを使用している場合は、NTLM (NT LanMan) 認証が選択されます。 + +- メッセージ レベルのセキュリティを使用している場合は、認証モードによっては認証に失敗する可能性があります。 + +- `spnego` モードを使用し、`AllowNtlm` 属性を `false` に設定している場合は、認証に失敗します。 + +- `spnego` モードを使用し、`AllowNtlm` 属性を `true` に設定している場合、UPN が空の場合は認証に失敗しますが、SPN が空の場合は認証に成功します。 + +- Kerberos ダイレクト ("ワンショット" とも呼ばれます) を使用している場合は、認証に失敗します。 + +### 使用して、 <> \>構成内の要素 + 前の例で示したバインディングのクライアント資格情報の種類を Certificate に変更すると、生成される WSDL には、Base64 でシリアル化された ID 値用の X.509 証明書が含まれます。コードを次に示します`,`。 これは、Windows 以外のすべてのクライアント資格情報の種類の既定値です。 + + + + 構成で <`identity`> 要素を使用したり、コードで ID を設定したりすることにより、既定のサービス ID の値を変更したり、ID の種類を変更したりすることが可能です。 値 `contoso.com` を使用してドメイン ネーム システム (DNS) ID を設定する構成コードを次に示します。 + + + +### プログラムによる ID の設定 + ID は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって自動的に決定されるため、サービスで ID を明示的に指定する必要はありません。 ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、必要に応じてエンドポイントの ID を指定できます。 特定の DNS ID を持つ新しいサービス エンドポイントを追加するコードを次に示します。 + + [!code-csharp[C_Identity#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_identity/cs/source.cs#5)] + [!code-vb[C_Identity#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_identity/vb/source.vb#5)] + +## 関連項目 + [方法: カスタム クライアント Id 検証機能を作成します。](../../../../docs/framework/wcf/extending/how-to-create-a-custom-client-identity-verifier.md) + [サービス Id と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/publishing-and-retrieving-metadata-over-a-custom-binding.md b/docs/framework/wcf/extending/publishing-and-retrieving-metadata-over-a-custom-binding.md new file mode 100644 index 00000000000..a5d80ec2484 --- /dev/null +++ b/docs/framework/wcf/extending/publishing-and-retrieving-metadata-over-a-custom-binding.md @@ -0,0 +1,41 @@ +--- +title: "カスタム バインディングを介したメタデータの公開と取得 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 904e11b4-d90e-45c6-9ee5-c3472c90008c +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# カスタム バインディングを介したメタデータの公開と取得 + は、サービスにメタデータ エンドポイントを追加するためのサポートを提供します。これらのメタデータ エンドポイントは、`?wsdl` クエリ文字列を持つ URL での HTTP GET 要求、および WS\-MetadataExchange \(MEX\) 仕様で定義された WS\-Transfer GET 要求に応答できます。MEX エンドポイントは、 コントラクトを実装します。 + +## カスタム バインディングを介したメタデータの公開 + HTTP GET メタデータ エンドポイントと HTTPS GET メタデータ エンドポイントを有効にするには、 プロパティまたは プロパティを `true` に設定します。これらのエンドポイントのバインディングは構成できません。 + + ただし、 コントラクトは、カスタム バインディングを使用するエンドポイントを含むすべてのエンドポイントで使用できます。これは、 エンドポイントは他のすべての [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービス エンドポイントと同じであるためです。システム指定のバインディングの構成を変更する方法または の構成方法を理解している場合は、 エンドポイントで使用されるバインディングを構成できます。 + +## カスタム バインディングを介したメタデータの取得 + メタデータは、標準の HTTP 要求または HTTPS GET 要求を使用して HTTP Get および HTTPS Get メタデータ エンドポイントから取得できます。 + + MEX メタデータ エンドポイントからメタデータを取得するには、通常、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされている標準の MEX バインディングのいずれかを使用できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]. 型および Svcutil.exe ツールでは、指定したメタデータ エンドポイントのアドレスに基づいて、標準の MEX バインディングの 1 つが自動的に選択されます。 + + MEX メタデータ エンドポイントで標準の MEX バインディングとは異なるバインディングを使用する場合は、コードを使用するか、 クライアント エンドポイント構成を提供することにより、 で使用されるバインディングを構成できます。Svcutil.exe ツールは、構成ファイルから、メタデータ エンドポイント アドレスの URI スキームと同じ名前を持つ クライアント エンドポイント構成を自動的に読み込みます。 + +## セキュリティ + カスタム バインディングを介してメタデータを公開する場合、メタデータに必要なセキュリティ サポートをそのカスタム バインディングが提供することを確認してください。たとえば、情報の漏えいを防止し、メタデータを取得するための権限がクライアントにあることを確認するには、認証および暗号化を要求するように エンドポイントを構成することによってメタデータとアプリケーションのセキュリティを強化します。サンプルの[カスタム セキュア メタデータ エンドポイント](../../../../docs/framework/wcf/samples/custom-secure-metadata-endpoint.md)は、このシナリオを示しています。 + +## 参照 + [サービスのセキュリティ保護](../../../../docs/framework/wcf/securing-services.md) + [WS\-MetadataExchange のバインディング](../../../../docs/framework/wcf/extending/ws-metadataexchange-bindings.md) + [方法 : カスタム WS\-Metadata Exchange バインディングを構成する](../../../../docs/framework/wcf/extending/how-to-configure-a-custom-ws-metadata-exchange-binding.md) + [方法: MEX 以外のバインディングを介してメタデータを取得する](../../../../docs/framework/wcf/extending/how-to-retrieve-metadata-over-a-non-mex-binding.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/service-channel-level-programming.md b/docs/framework/wcf/extending/service-channel-level-programming.md new file mode 100644 index 00000000000..8ff3c1e2cb3 --- /dev/null +++ b/docs/framework/wcf/extending/service-channel-level-programming.md @@ -0,0 +1,65 @@ +--- +title: "サービス チャネル レベルのプログラミング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8d8dcd85-0a05-4c44-8861-4a0b3b90cca9 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# サービス チャネル レベルのプログラミング +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービス アプリケーションを とこれに関係するオブジェクト モデルを使用しないで作成する方法を説明します。 + +## メッセージの受信 + メッセージの受信と処理の準備を整えるには、次の手順に従う必要があります。 + +1. バインディングを作成します。 + +2. チャネル リスナーをビルドします。 + +3. チャネル リスナーを開きます。 + +4. 要求を読み取り、応答を送信します。 + +5. すべてのチャネル オブジェクトを閉じます。 + +#### バインディングの作成 + メッセージのリッスンと受信の最初の手順として、バインディングを作成します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、組み込みバインディングまたはシステム標準のバインディングが複数付属しており、そのうちの 1 個をインスタンス化することによって直接使用できます。また、CustomBinding クラスをインスタンス化することにより、独自のバインディングを作成することもできます。手順 1. のコードは、この処理を実行します。 + + 後のコード例は、 のインスタンスを作成し、その Elements コレクションに を追加します。Elements コレクションは、チャネル スタックを作成するために使用されるバインド要素のコレクションです。この例では、Elements コレクションには しか含まれないため、チャネル スタックは HTTP トランスポート チャネルだけを持ちます。 + +#### ChannelListener のビルド + バインディングを作成したら、 を呼び出してチャネル リスナーをビルドします。型パラメーターは、作成するチャネル形状です。この例では、要求\/応答メッセージ交換パターンで受信メッセージをリッスンする必要があるため、 を使用します。 + + は、要求メッセージを受信し、応答メッセージを返信するために使用されます。 を呼び出すと、要求メッセージの受信と応答メッセージの返信に使用できる が返されます。 + + リスナーを作成する際には、リッスンするネットワーク アドレス \(この場合は `http://localhost:8080/channelapp`\) を渡します。一般に、各トランスポート チャネルは 1 つまたは複数のアドレス スキームをサポートします。たとえば、HTTP トランスポートは、http スキームと https スキームの両方をサポートします。 + + また、リスナーを作成する際には、空の を渡します。バインディング パラメーターは、リスナーのビルド方法を制御するパラメーターを渡すしくみです。この例では、このようなパラメーターは使用しないため、空のコレクションを渡します。 + +#### 受信メッセージのリッスン + 次に、ビルドしたリスナーで を呼び出し、チャネルの受け入れを開始します。 の動作は、トランスポートが接続指向であるか、コネクションレスであるかによって異なります。接続指向トランスポートの場合、 は新しい接続要求が届くまでブロックし、接続要求が届いた時点で、その新しい接続を表す新しいチャネルを返します。HTTP などのコネクションレス トランスポートの場合、 は、トランスポート リスナーが作成する唯一のチャネルを直ちに返します。 + + この例では、リスナーは、 を実装するチャネルを返します。このチャネルでメッセージを受信するには、まず、チャネルで を呼び出して通信できる状態にします。次に、メッセージが到着するまでブロックする を呼び出します。 + +#### 要求の読み取りと応答の送信 + を返すときに、その プロパティを使用して受信メッセージを取得します。メッセージのアクションと本文のコンテンツ \(文字列であることを前提とします\) を書き込みます。 + + 応答を送信するには、新しい応答メッセージを作成します。この場合は、要求で受信した文字列データを渡します。次に、 を呼び出して、その応答メッセージを送信します。 + +#### オブジェクトを閉じる + リソースのリークを避けるには、通信に使用したオブジェクトが不要になったら閉じることが重要です。この例では、要求メッセージ、要求コンテキスト、チャネル、およびリスナーを閉じます。 + + 次のコード例は、チャネル リスナーがメッセージを 1 つだけ受け取る基本的なサービスです。実際のサービスでは、サービスが終了するまでチャネルの受け入れとメッセージの受信を続けます。 + + [!code-csharp[ChannelProgrammingBasic#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/channelprogrammingbasic/cs/serviceprogram.cs#1)] + [!code-vb[ChannelProgrammingBasic#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/channelprogrammingbasic/vb/serviceprogram.vb#1)] \ No newline at end of file diff --git a/docs/framework/wcf/extending/service-channel-listeners-and-channels.md b/docs/framework/wcf/extending/service-channel-listeners-and-channels.md new file mode 100644 index 00000000000..63765600642 --- /dev/null +++ b/docs/framework/wcf/extending/service-channel-listeners-and-channels.md @@ -0,0 +1,57 @@ +--- +title: "サービス : チャネル リスナーとチャネル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8ccbe0e8-7e55-441d-80de-5765f67542fa +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# サービス : チャネル リスナーとチャネル +チャネル オブジェクトには、チャネル、チャネル リスナー、およびチャネル ファクトリという 3 つのカテゴリがあります。チャネルはアプリケーションおよびチャネル スタックとのインターフェイスです。チャネル リスナーは受信 \(またはリッスン\) する側のチャネルを作成する役割を果たします。通常は、新しい受信メッセージまたは接続への応答を行います。チャネル ファクトリは送信側のチャネルを作成し、エンドポイントとの通信を開始する役割を果たします。 + +## チャネル リスナーとチャネル + チャネル リスナーには、チャネルを作成し、下の層またはネットワークからメッセージを受信する役割があります。受信されたメッセージは、チャネル リスナーによって作成されるチャネルを使用して、上の層に配信されます。 + + メッセージを受信して上の層に配信するプロセスを次の図に示します。 + + ![チャネル リスナーとチャネル](../../../../docs/framework/wcf/extending/media/wcfc-wcfchannelsigure1highlevelc.gif "wcfc\_WCFChannelsigure1HighLevelc") +メッセージを受信してチャネル経由で上の層に配信するチャネル リスナー。 + + このプロセスは、概念上、各チャネル内のキューとしてモデル化できますが、実際には実装がキューを使用しない場合もあります。チャネル リスナーには、下の層またはネットワークからメッセージを受信し、キューに配置する役割があります。また、チャネルには、キューからメッセージを取得し、上の層から \(たとえば、チャネル上で `Receive` を呼び出すことによって\) メッセージが要求されたときにそのメッセージを渡す役割があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、このプロセスに対する基本クラス ヘルパーが用意されています \(ここで説明するチャネル ヘルパー クラスのダイアグラムについては、「[チャネル モデルの概要](../../../../docs/framework/wcf/extending/channel-model-overview.md)」を参照してください\)。 + +- クラスには が実装され、[チャネルの開発](../../../../docs/framework/wcf/extending/developing-channels.md) の手順 2. で説明されているステート マシンが強制実行されます。 + +- クラスには が実装され、 の統合基本クラスが提供されます。 クラスは、 を実装する基本クラスである との組み合わせによって動作します。 + +- `` クラスでは、 および が実装され、`CreateChannel` オーバーロードが `OnCreateChannel` 抽象メソッドに統合されます。 + +- クラスは、 を実装しています。基本状態管理を行います。 + + 次の説明は、「[トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md)」のサンプルに基づいています。 + +## チャネル リスナーの作成 + サンプルに実装されている ``UdpChannelListener は、 クラスから派生します。単一の UDP ソケットを使用して、データグラムを受信します。`OnOpen` メソッドは、非同期ループ内で UDP ソケットを使用してデータを受信します。その後、メッセージ エンコーディング システムを使用して、データを次のようにメッセージに変換します。 + +``` +message = UdpConstants.MessageEncoder.ReadMessage( + new ArraySegment(buffer, 0, count), + bufferManager +); +``` + + 複数のソースから到着するメッセージが同じデータグラム チャネルで表されるので、`UdpChannelListener` はシングルトン リスナーです。このリスナーに同時に関連付けられるアクティブな `` は、最大 1 つです。このサンプルでは、 メソッドによって返されるチャネルがその後破棄される場合のみ、もう 1 つ生成されます。メッセージが受信されると、このシングルトン チャネルのキューに置かれます。 + +### UdpInputChannel + `UdpInputChannel` クラスは、 を実装しています。このクラスは `UdpChannelListener` のソケットによって設定される受信メッセージのキューで構成されています。これらのメッセージは、 メソッドによってキューから削除されます。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/specifying-a-custom-crypto-algorithm.md b/docs/framework/wcf/extending/specifying-a-custom-crypto-algorithm.md new file mode 100644 index 00000000000..a2ca3534bca --- /dev/null +++ b/docs/framework/wcf/extending/specifying-a-custom-crypto-algorithm.md @@ -0,0 +1,143 @@ +--- +title: "カスタム暗号アルゴリズムの指定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d662a305-8e09-451d-9a59-b0f12b012f1d +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# カスタム暗号アルゴリズムの指定 +WCF では、データの暗号化やデジタル署名の計算を行う際に使用するカスタム暗号アルゴリズムを指定できます。 そのためには、次の手順に従います。 + +1. の派生クラスを作成します。 + +2. アルゴリズムを登録します。 + +3. の派生クラスを使用してバインディングを構成します。 + +## SecurityAlgorithmSuite の派生クラスの作成 + は、セキュリティ関連のさまざまな操作を実行する際に使用するアルゴリズムを指定できるようにする抽象基本クラスです。 たとえば、デジタル署名のハッシュ計算やメッセージの暗号化などの操作です。 次のコードは、 から派生クラスを作成する方法を示しています。 + +```csharp +public class MyCustomAlgorithmSuite : SecurityAlgorithmSuite + { + public override string DefaultAsymmetricKeyWrapAlgorithm + { + get { return SecurityAlgorithms.RsaOaepKeyWrap; } + } + + public override string DefaultAsymmetricSignatureAlgorithm + { + get { return SecurityAlgorithms.RsaSha1Signature; } + } + + public override string DefaultCanonicalizationAlgorithm + { + get { return SecurityAlgorithms.ExclusiveC14n; ; } + } + + public override string DefaultDigestAlgorithm + { + get { return SecurityAlgorithms.MyCustomHashAlgorithm; } + } + + public override string DefaultEncryptionAlgorithm + { + get { return SecurityAlgorithms.Aes128Encryption; } + } + + public override int DefaultEncryptionKeyDerivationLength + { + get { return 128; } + } + + public override int DefaultSignatureKeyDerivationLength + { + get { return 128; } + } + + public override int DefaultSymmetricKeyLength + { + get { return 128; } + } + + public override string DefaultSymmetricKeyWrapAlgorithm + { + get { return SecurityAlgorithms.Aes128Encryption; } + } + + public override string DefaultSymmetricSignatureAlgorithm + { + get { return SecurityAlgorithms.HmacSha1Signature; } + } + + public override bool IsAsymmetricKeyLengthSupported(int length) + { + return length >= 1024 && length <= 4096; + } + + public override bool IsSymmetricKeyLengthSupported(int length) + { + return length >= 128 && length <= 256; + } + } + +``` + +## カスタム アルゴリズムの登録 + 登録は、構成ファイルまたは命令型コードで行うことができます。 カスタム アルゴリズムを登録するには、暗号サービス プロバイダーを実装するクラスとエイリアスの間のマッピングを作成します。 その後、WCF サービスのバインディングでアルゴリズムを指定する際に使用する URI にエイリアスをマップします。 次の構成スニペットは、config でカスタム アルゴリズムを登録する方法を示しています。 + +```xml + + + + + + + + + + + + + +``` + + \<`cryptoClasses`\> 要素の下のセクションで、SHA256CryptoServiceProvider とエイリアス "SHA256CSP" の間のマッピングを作成します。 \<[nameEntry](assetId:///nameEntry?qualifyHint=False&autoUpgrade=True)\> 要素によって、"SHA256CSP" エイリアスと指定した URL \(http:\/\/constoso.com\/CustomAlgorithms\/CustomHashAlgorithm\) の間のマッピングを作成します。 + + コードでカスタム アルゴリズムを登録するには、[M:System.Security.Cryptography.CryptoConfig.AddAlgorithm\(System.Type, System.String\ System.String[])?qualifyHint=False&autoUpgrade=True メソッドを使用します。 このメソッドによって、両方のマッピングを作成します。 次の例は、このメソッドを呼び出す方法を示しています。 + +``` +// Register the custom URI string defined for the hashAlgorithm in MyCustomAlgorithmSuite class to create the +// SHA256CryptoServiceProvider hash algorithm object. +CryptoConfig.AddAlgorithm(typeof(SHA256CryptoServiceProvider), "http://constoso.com/CustomAlgorithms/CustomHashAlgorithm"); + +``` + +## バインディングの構成 + バインディングを構成するには、次のコード スニペットに示すように、 のカスタム派生クラスをバインディング設定で指定します。 + +```csharp +WSHttpBinding binding = new WSHttpBinding(); + binding.Security.Message.AlgorithmSuite = new MyCustomAlgorithmSuite(); + +``` + + コード例全体については、「[WCF セキュリティの暗号化方式の指定](../../../../docs/framework/wcf/samples/cryptographic-agility-in-wcf-security.md)」のサンプルを参照してください。 + +## 参照 + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [サービスのセキュリティ保護](../../../../docs/framework/wcf/securing-services.md) + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [セキュリティの概念](../../../../docs/framework/wcf/feature-details/security-concepts.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/understanding-state-changes.md b/docs/framework/wcf/extending/understanding-state-changes.md new file mode 100644 index 00000000000..3dbe5e95e7b --- /dev/null +++ b/docs/framework/wcf/extending/understanding-state-changes.md @@ -0,0 +1,176 @@ +--- +title: "状態変更の理解 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a79ed2aa-e49a-47a8-845a-c9f436ec9987 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 状態変更の理解 +ここでは、チャネルの状態と遷移、チャネル状態の構成に使用する型、およびそれらの型の実装方法について説明します。 + +## ステート マシンとチャネル + 通信を処理する、ソケットなどのオブジェクトは、通常、ネットワーク リソースの割り当て、接続の確立や受け入れ、接続の閉鎖、および通信の終了に関連して状態が遷移するステート マシンを提供します。チャネル ステート マシンは、通信オブジェクトの状態の統一モデルを提供します。モデルでは、そのオブジェクトの基になる実装が抽出されます。 インターフェイスは、状態、状態遷移メソッド、および状態遷移イベントのセットを提供します。すべてのチャネル、チャネル ファクトリ、およびチャネル リスナーは、チャネル ステート マシンを実装します。 + + Closed、Closing、Faulted、Opened、および Opening の各イベントは、状態遷移の発生後に外部のオブザーバーに通知を行います。 + + Abort、Close、Open の各メソッド \(およびそれぞれと同等の非同期メソッド\) は、状態遷移を発生させます。 + + 状態プロパティは、 によって定義された現在の状態を返します。 + +## ICommunicationObject、CommunicationObject、および各状態と状態遷移 + は、そのさまざまなプロパティを構成できる Created 状態で開始します。Opened 状態になると、このオブジェクトは、メッセージを送受信するために利用できるようになりますが、プロパティは不変と見なされます。Closing 状態になると、このオブジェクトは新しい送受信要求を処理できなくなりますが、既存の要求は、Close タイムアウトに到達するまでに完了する可能性があります。回復不可能なエラーが発生した場合は、オブジェクトは Faulted 状態に遷移し、そこでエラーに関する情報を点検し、最終的に閉じることができます。Closed 状態になると、このオブジェクトは、実質的にステート マシンの最後に到達します。オブジェクトが、ある状態から次の状態に遷移すると、前の状態には戻りません。 + + の各状態と状態遷移を次の図に示します。状態遷移は、Abort、Open、Close の 3 つのメソッドのいずれかを呼び出すことによって発生させることができます。また、実装固有の他のメソッドを呼び出すことによって発生させることもできます。Faulted 状態への遷移は、通信オブジェクトを開いている途中または開いた後に発生することがあります。 + + すべての は Created 状態から開始します。この状態では、アプリケーションがプロパティを設定してオブジェクトを構成できます。オブジェクトが Created 以外の状態になると、オブジェクトは不変と見なされます。 + + ![チャネル状態遷移](../../../../docs/framework/wcf/extending/media/channelstatetranitionshighleveldiagram.gif "ChannelStateTranitionsHighLevelDiagram") +図 1. ICommunicationObject ステート マシン + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、 とチャネル ステート マシンを実装する という名前の抽象基本クラスを提供します。次の図は、 に固有の、変更済みの状態図です。 ステート マシンのほかに、追加の メソッドが呼び出されるタイミングも示しています。 + + ![状態変更](../../../../docs/framework/wcf/extending/media/wcfc-wcfchannelsigure5statetransitionsdetailsc.gif "wcfc\_WCFChannelsigure5StateTransitionsDetailsc") +図 2. イベントと保護メソッドの呼び出しを含む、ICommunicationObject ステート マシンの CommunicationObject 実装 + +### ICommunicationObject イベント + は、 によって定義された 5 つのイベントを公開します。これらのイベントは、通信オブジェクトを使用するコードに状態遷移を通知するために設計されています。上の図 2 に示されているように、オブジェクトの状態が、各イベントの名前が付けられた状態に遷移すると、該当するイベントが 1 回発生します。イベントはすべて `EventHandler` 型であり、この型は次のように定義されています。 + + `public delegate void EventHandler(object sender, EventArgs e);` + + 実装では、送信側は 自体、または送信側として コンストラクターに渡されたオブジェクト \(そのコンストラクター オーバーロードを使用した場合\) になります。EventArgs パラメーター `e` は、常に `EventArgs.Empty` です。 + +### 派生オブジェクト コールバック + は、5 つのイベントのほかに、状態遷移が発生する前後に派生オブジェクトのコールバックを可能にする 8 つの保護された仮想メソッドを宣言します。 + + メソッドと メソッドには、このような 3 つのコールバックがそれぞれに関連付けられています。たとえば、 に対応するのは、、および です。 には、、および の各メソッドが関連付けられています。 + + 同様に、 メソッドには、対応する があります。 + + 、および には既定の実装がありませんが、他のコールバックには、ステート マシンの正確さを保つために必要な既定の実装があります。これらのメソッドをオーバーライドする場合は、必ず基本実装を呼び出すか、正確に置き換えてください。 + + 、および は、それぞれ対応する 、および の各イベントを発生させます。 は、オブジェクトの状態をそれぞれ Opened と Closed に設定してから、対応する イベントと イベントを発生させます。 + +### 状態遷移メソッド + は、Abort、Close、および Open の実装を提供します。また、Faulted 状態への状態遷移を引き起こす Fault メソッドも提供します。図 2 では、遷移の原因となったメソッドを各遷移に付記して ステート マシンを示しています \(メソッドが付記されていない遷移は、メソッドが付記されている直前の遷移を発生させたメソッドの実装内部で発生します\)。 + +> [!NOTE] +> 通信状態の取得\/設定の 実装はすべて、スレッド同期されます。 + + コンストラクター + + は 3 つのコンストラクターを提供します。これらはすべて、オブジェクトを Created 状態にとどめます。これらのコンストラクターは、次のように定義されています。 + + 最初のコンストラクターは既定のコンストラクターで、オブジェクトを取得するコンストラクター オーバーロードで代行されます。 + + `protected CommunicationObject() : this(new object()) { … }` + + オブジェクトを取得するコンストラクターは、通信オブジェクトの状態へのアクセスを同期するときにロックされるオブジェクトとしてパラメーターを使用します。 + + `protected CommunicationObject(object mutex) { … }` + + 最後に、3 番目のコンストラクターが、 イベントが発生したときに送信側の引数として使用する追加のパラメーターを取得します。 + + `protected CommunicationObject(object mutex, object eventSender) { … }` + + 前の 2 つのコンストラクターは、送信側をこれに設定します。 + + Open メソッド + + 事前条件 : 状態は Created です。 + + 事後条件 : 状態は Opened または Faulted です。例外がスローされる場合があります。 + + Open\(\) メソッドは通信オブジェクトを開き、状態を Opened に設定しようとします。エラーが発生した場合は、状態を Faulted に設定します。 + + このメソッドは、まず現在の状態が Created であるかを確認します。現在の状態が Opening または Opened の場合、 をスローします。現在の状態が Closing または Closed の場合、オブジェクトが終了しているときは 、それ以外では をスローします。現在の状態が Faulted の場合、 をスローします。 + + 次に、状態を Opening に設定し、OnOpening\(\) \(Opening イベントを発生させます\)、OnOpen\(\)、および OnOpened\(\) をこの順に呼び出します。OnOpened\(\) は、状態を Opened に設定し、Opened イベントを発生させます。これらのいずれかが例外をスローした場合、Open\(\) は Fault\(\) を呼び出して例外をバブリングさせます。Open プロセスの詳細を次の図に示します。 + + ![状態変更](../../../../docs/framework/wcf/extending/media/wcfc-wcfchannelsigurecoopenflowchartf.gif "wcfc\_WCFChannelsigureCOOpenFlowChartf") +カスタム オープン ロジック \(内部通信オブジェクトを開くなど\) を実装するように OnOpen メソッドをオーバーライドします。 + + Close メソッド + + 事前条件 : なし。 + + 事後条件 : 状態は Closed です。例外がスローされる場合があります。 + + Close\(\) メソッドはどの状態でも呼び出すことができます。このメソッドは、オブジェクトを正常に閉じようとします。エラーが発生した場合は、オブジェクトを終了します。現在の状態が Closing または Closed の場合、このメソッドは何もしません。それ以外の場合は、状態を Closing に設定します。元の状態が Created、Opening、または Faulted の場合は、Abort\(\) を呼び出します \(次の図を参照してください\)。元の状態が Opened の場合は、OnClosing\(\) \(Closing イベントを発生させます\)、OnClose\(\)、および OnClosed\(\) をこの順に呼び出します。これらのいずれかが例外をスローした場合、Close\(\) は Abort\(\) を呼び出して例外をバブリングさせます。OnClosed\(\) は状態をクローズに設定し、クローズ イベントを発生させます。Close プロセスの詳細を次の図に示します。 + + ![状態変更](../../../../docs/framework/wcf/extending/media/wcfc-wcfchannelsguire7ico-closeflowchartc.gif "wcfc\_WCFChannelsguire7ICO\-CloseFlowChartc") +OnClose メソッドをオーバーライドして、カスタム クローズ ロジック \(内部通信オブジェクトを閉じるなど\) を実装します。OnClose\(\) はタイムアウト パラメーターを取り、Abort\(\) の一部として呼び出されないため、長時間にわたってブロックできる正常なクロージング ロジック \(たとえば、もう一方の側が応答するまで待機するなど\) はすべて OnClose\(\) で実装してください。 + + Abort + + 事前条件 : なし。 +事後条件 : 状態は Closed です。例外がスローされる場合があります。 + + 現在の状態が Closed の場合、またはオブジェクトが既に終了している場合 \(Abort\(\) を別のスレッドで実行するなどにより\)、Abort\(\) メソッドは何もしません。それ以外の場合は、状態を Closing に設定し、OnClosing\(\) \(Closing イベントを発生させます\)、OnAbort\(\)、および OnClosed をこの順に呼び出します \(オブジェクトを閉じるのではなく、終了させるので OnClose を呼び出しません\)。OnClosed\(\) は状態をクローズに設定し、クローズ イベントを発生させます。これらのいずれかが例外をスローした場合は、Abort の呼び出し元に例外が再スローされます。OnClosing\(\)、OnClosed\(\)、および OnAbort\(\) の実装は、入出力などでブロックしないでください。Abort プロセスの詳細を次の図に示します。 + + ![状態変更](../../../../docs/framework/wcf/extending/media/wcfc-wcfchannelsigure8ico-abortflowchartc.gif "wcfc\_WCFChannelsigure8ICO\-AbortFlowChartc") +カスタム終了ロジック \(内部通信オブジェクトを終了するなど\) を実装するように OnAbort メソッドをオーバーライドします。 + + Fault + + Fault は、 に固有のメソッドであり、 インターフェイスの一部ではありません。ここで説明するのは、完全性を期してのことです。 + + 事前条件 : なし。 + + 事後条件 : 状態は Faulted です。例外がスローされる場合があります。 + + 現在の状態が Faulted または Closed の場合、Fault\(\) は何もしません。それ以外の場合は、状態を Faulted に設定し、Faulted イベントを発生させる OnFaulted\(\) を呼び出します。OnFaulted がスローした例外は再スローされます。 + +### ThrowIfXxx メソッド + CommunicationObject には、オブジェクトが特定の状態にある場合に例外をスローするために使用できる 3 つの保護メソッドがあります。 + + は、状態が Closing、Closed、または Faulted の場合に例外をスローします。 + + は、状態が Created でない場合に例外をスローします。 + + は、状態が Opened でない場合に例外をスローします。 + + スローされる例外は状態によって決まります。それぞれ異なる状態で ThrowIfXxx を呼び出すことによってスローされる例外の種類を次の表に示します。 + +|State|Abort を呼び出したか|例外| +|-----------|-------------------|--------| +|Created|N\/A|| +|Opening|N\/A|| +|Opened|N\/A|| +|Closing|○|| +|Closing|×|| +|Closed|○|事前に Abort を明示的に呼び出してオブジェクトを閉じた場合、。オブジェクトで Close を呼び出した場合は、 がスローされます。| +|Closed|×|| +|Faulted|N\/A|| + +### タイムアウト + 既に説明したメソッドには、タイムアウト パラメーターを取るものがあります。それらは、Close、Open \(特定のオーバーロードと非同期バージョン\)、OnClose、および OnOpen です。これらのメソッドは、時間のかかる操作 \(たとえば、入出力でブロックしながら、接続を正常に閉じる操作など\) を可能にするように設計されているため、そのような操作が中断されるまでに利用できる時間をタイムアウト パラメーターが示します。これらのどのメソッドの実装も、指定されたタイムアウト値を使用して、そのタイムアウトの範囲内に呼び出し元に確実に復帰する必要があります。タイムアウトを取らない他のメソッドの実装は、時間のかかる操作を目的として設計されていないため、入出力でブロックしないでください。 + + ただし、タイムアウトを取らない Open\(\) オーバーロードと Close\(\) オーバーロードは例外です。これらは、派生クラスによって提供される既定のタイムアウト値を使用します。 は、 および という名前の 2 つの保護された抽象プロパティを公開します。これらは、次のように定義されています。 + + `protected abstract TimeSpan DefaultCloseTimeout { get; }` + + `protected abstract TimeSpan DefaultOpenTimeout { get; }` + + 派生クラスは、タイムアウト値をとらない Open\(\) オーバーロードと Close\(\) オーバーロードに既定のタイムアウトを提供するために、これらのプロパティを実装します。その後、Open\(\) 実装と Close\(\) 実装は、タイムアウトを取らないオーバーロードに代行させ、既定のタイムアウト値を渡します。この例を次に示します。 + + `public void Open()` + + `{` + + `this.Open(this.DefaultOpenTimeout);` + + `}` + +#### IDefaultCommunicationTimeouts + このインターフェイスには、オープン、送信、受信、およびクローズに適用する既定のタイムアウト値を提供する 4 つの読み取り専用プロパティがあります。各実装は、適切な方法で既定値を取得します。便宜上、 の既定値はそれぞれ 1 分です。 \ No newline at end of file diff --git a/docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md b/docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md new file mode 100644 index 00000000000..8ce09bd24b3 --- /dev/null +++ b/docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md @@ -0,0 +1,196 @@ +--- +title: "チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2b5ba5c3-0c6c-48e9-9e46-54acaec443ba +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# チュートリアル: カスタム クライアントおよびサービスの資格情報を作成する +このトピックでは、クライアントおよびサービスにカスタム資格情報を実装する方法と、これをアプリケーション コードから使用する方法について説明します。 + +## 資格情報拡張クラス + クラスおよび クラスは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] セキュリティ拡張のメイン エントリ ポイントです。これらの資格情報クラスでは、アプリケーション コードから資格情報を設定し、資格情報の種類をセキュリティ トークンに変換する API を提供します \(*"セキュリティ トークン"* とは、SOAP メッセージ内の資格情報を送信するために使用される形式です\)。これらの資格情報クラスの役割は、次の 2 つの領域に分けることができます。 + +- アプリケーションで資格情報を設定するための API を提供します。 + +- 実装のファクトリとして動作します。 + + クラスと クラスは、どちらも を返すためのコントラクトを定義する 抽象クラスから継承されます。 + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)] 資格情報クラス、およびこれらのクラスが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ アーキテクチャに組み込まれるしくみの詳細については、「[Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f)」を参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で提供される既定の実装では、システム指定の資格情報の種類をサポートし、これらの資格情報の種類を処理できるセキュリティ トークン マネージャーを作成します。 + +## カスタマイズする理由 + クライアントまたはサービスの資格情報クラスをカスタマイズする場合、いくつかの理由があります。最大の理由として、システム指定の資格情報の種類の処理について、特に以下の必要性が生じたために [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の既定のセキュリティ動作を変更する必要があることが挙げられます。 + +- 他の拡張ポイントを使用した場合には不可能な変更 + +- 新しい資格情報の種類の追加 + +- 新しいカスタム セキュリティ トークンの種類の追加 + + このトピックでは、カスタムのクライアント資格情報およびサービス資格情報を実装する方法と、これをアプリケーション コードから使用する方法について説明します。 + +## 最初の手順 + 資格情報をカスタマイズする理由は、資格情報の準備、セキュリティ トークンのシリアル化、または認証に関する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の動作を変更することにあるため、カスタム資格情報クラスの作成は最初の手順にすぎません。このセクションの他のトピックでは、カスタムのシリアライザーと認証システムを作成する方法について説明します。カスタム資格情報クラスの作成は、このような観点からすると、一連のトピックの最初の手順になります。これに続く処理 \(カスタムのシリアライザーおよび認証システムの作成\) は、カスタム資格情報の作成後にのみ可能になります。このトピックに基づく他のトピックには、次のものがあります。 + +- [方法 : カスタム セキュリティ トークン プロバイダーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md) + +- [方法 : カスタム セキュリティ トークン認証システムを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md) + +- [方法 : カスタム トークンを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-token.md). + +## 手順 + +#### カスタム クライアント資格情報を実装するには + +1. クラスから派生する新しいクラスを定義します。 + +2. 省略可能。新しい資格情報の種類に新しいメソッドまたはプロパティを追加します。新しい資格情報の種類を追加しない場合は、この手順を省略します。次の例では、`CreditCardNumber` プロパティを追加します。 + +3. メソッドをオーバーライドします。カスタム クライアント資格情報が使用されると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティ インフラストラクチャによってこのメソッドが自動的に呼び出されます。このメソッドは、 クラスの実装のインスタンスを作成して返す役割を担います。 + + > [!IMPORTANT] + > カスタム セキュリティ トークン マネージャーを作成するために、 メソッドがオーバーライドされることに注意する必要があります。 から派生したセキュリティ トークン マネージャーは、実際のセキュリティ トークンを作成するために、 から派生したカスタム セキュリティ トークン プロバイダーを返す必要があります。このパターンに従ってセキュリティ トークンを作成しないと、 オブジェクトがキャッシュされたとき \(これは、WCF クライアント プロキシの既定の動作です\)、権限の昇格攻撃を受ける可能性があり、アプリケーションが正常に機能しない場合があります。カスタム資格情報オブジェクトは、 の一部としてキャッシュされます。ただし、カスタム がすべての呼び出し時に作成され、これにより、トークン作成ロジックが にある限り、セキュリティの脅威が軽減されます。 + +4. メソッドをオーバーライドします。 + + [!code-csharp[c_CustomCredentials#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customcredentials/cs/source.cs#1)] + [!code-vb[c_CustomCredentials#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customcredentials/vb/client/client.vb#1)] + +#### カスタム クライアント セキュリティ トークン マネージャーを実装するには + +1. から派生する新しいクラスを定義します。 + +2. 省略可能。カスタム 実装を作成する必要がある場合は、 メソッドをオーバーライドします。カスタム セキュリティ トークン プロバイダー[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : カスタム セキュリティ トークン プロバイダーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md)」を参照してください。 + +3. 省略可能。カスタム 実装を作成する必要がある場合は、 メソッドをオーバーライドします。カスタム セキュリティ トークン認証システム[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : カスタム セキュリティ トークン認証システムを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md)」を参照してください。 + +4. 省略可能。カスタム を作成する必要がある場合は、 メソッドをオーバーライドします。カスタム セキュリティ トークンおよびカスタム セキュリティ トークン シリアライザー[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : カスタム トークンを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-token.md)」を参照してください。 + + [!code-csharp[c_CustomCredentials#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customcredentials/cs/source.cs#2)] + [!code-vb[c_CustomCredentials#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customcredentials/vb/client/client.vb#2)] + +#### アプリケーション コードによるカスタム クライアント資格情報を使用するには + +1. サービス インターフェイスを表す、生成されたクライアントのインスタンスを作成するか、または通信の対象となるサービスを指す のインスタンスを作成します。 + +2. コレクションから、システム指定のクライアント資格情報の動作を削除します。このコレクションには、 プロパティからアクセスできます。 + +3. カスタム資格情報クラスの新しいインスタンスを作成し、 コレクションに追加します。このコレクションには、 プロパティからアクセスできます。 + + [!code-csharp[c_CustomCredentials#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customcredentials/cs/source.cs#3)] + [!code-vb[c_CustomCredentials#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customcredentials/vb/client/client.vb#3)] + + 上記の手順は、アプリケーション コードからクライアント資格情報を使用する方法を示しています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の資格情報は、アプリケーション構成ファイルを使用して構成することもできます。ソースの変更、再コンパイル、再展開を行うことなくアプリケーションのパラメーターを変更できるため、ハードコーディングを行うよりもアプリケーション構成ファイルの使用を一般にお勧めします。 + + 次の手順では、カスタム資格情報の構成をサポートする方法について説明します。 + +#### カスタム クライアント資格情報の構成ハンドラーの作成 + +1. から派生する新しいクラスを定義します。 + +2. 省略可能。アプリケーション構成を通じて公開する必要があるすべての追加構成パラメーターのプロパティを追加します。次の例では、`CreditCardNumber` という名前のプロパティを追加します。 + +3. プロパティをオーバーライドして、構成要素によって作成されたカスタム クライアント資格情報クラスの型を返します。 + +4. メソッドをオーバーライドします。このメソッドは、構成ファイルから読み込まれた設定に基づいてカスタム資格情報クラスのインスタンスを作成して返す役割を担います。このメソッドから 基本メソッドを呼び出し、カスタム クライアント資格情報インスタンスに読み込まれたシステム指定の資格情報の設定を取得します。 + +5. 省略可能。手順 2. で追加のプロパティを追加している場合は、 プロパティをオーバーライドして、追加した構成設定が構成フレームワークから認識されるよう登録します。追加したプロパティを基本クラスのプロパティと結合して、このカスタム クライアント資格情報の構成要素を通じてシステム指定の設定が構成されるようにします。 + + [!code-csharp[c_CustomCredentials#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customcredentials/cs/source.cs#7)] + [!code-vb[c_CustomCredentials#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customcredentials/vb/service/service.vb#7)] + + 構成ハンドラー クラスを作成したら、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の構成フレームワークに統合できます。これにより、次の手順で示すように、カスタム クライアント資格情報をクライアント エンドポイント動作要素で使用できるようになります。 + +#### カスタム クライアント資格情報構成ハンドラーをアプリケーション構成に登録して使用するには + +1. \<`extensions`\> 要素、および \<`behaviorExtensions`\> 要素を構成ファイルに追加します。 + +2. \<`add`\> 要素を \<`behaviorExtensions`\> 要素に追加し、`name` 属性を適切な値に設定します。 + +3. `type` 属性を完全修飾型名に設定します。また、アセンブリ名と他のアセンブリ属性を含めます。 + + ``` + + + + + + + + ``` + +4. 構成ハンドラーの登録後は、システム指定の \<`clientCredentials`\> 要素の代わりに、同じ構成ファイル内でカスタム資格情報要素を使用できます。システム指定のプロパティと、構成ハンドラーの実装に追加した任意の新規プロパティのどちらも使用できます。次の例では、`creditCardNumber` 属性を使用して、カスタム プロパティの値を設定します。 + + ``` + + + + + + + + ``` + +#### カスタム サービス資格情報を実装するには + +1. から派生する新しいクラスを定義します。 + +2. 省略可能。追加している新しい資格情報の値に API を提供するために新しいプロパティを追加します。新しい資格情報の値を追加しない場合は、この手順を省略します。次の例では、`AdditionalCertificate` プロパティを追加します。 + +3. メソッドをオーバーライドします。カスタム クライアント資格情報が使用されると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャによって、このメソッドが自動的に呼び出されます。このメソッドは、 クラスの実装のインスタンスを作成して返す役割を担います \(次の手順で説明\)。 + +4. 省略可能。 メソッドをオーバーライドします。この手順は、カスタム クライアント資格情報の実装に新しいプロパティまたは内部フィールドを追加する場合にのみ必要になります。 + + [!code-csharp[c_CustomCredentials#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customcredentials/cs/source.cs#4)] + [!code-vb[c_CustomCredentials#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customcredentials/vb/service/service.vb#4)] + +#### カスタム サービス セキュリティ トークン マネージャーを実装するには + +1. クラスから派生する新しいクラスを定義します。 + +2. 省略可能。カスタム 実装を作成する必要がある場合は、 メソッドをオーバーライドします。カスタム セキュリティ トークン プロバイダー[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : カスタム セキュリティ トークン プロバイダーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md)」を参照してください。 + +3. 省略可能。カスタム 実装を作成する必要がある場合は、 メソッドをオーバーライドします。カスタム セキュリティ トークン認証システム[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : カスタム セキュリティ トークン認証システムを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md)」を参照してください。 + +4. 省略可能。カスタム を作成する必要がある場合は、 メソッドをオーバーライドします。カスタム セキュリティ トークンおよびカスタム セキュリティ トークン シリアライザー[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : カスタム トークンを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-token.md)」を参照してください。 + + [!code-csharp[c_CustomCredentials#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customcredentials/cs/source.cs#5)] + [!code-vb[c_CustomCredentials#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customcredentials/vb/service/service.vb#5)] + +#### アプリケーション コードによるカスタム サービス資格情報を使用するには + +1. のインスタンスを作成します。 + +2. コレクションから、システム指定のサービス資格情報の動作を削除します。 + +3. カスタム サービス資格情報クラスの新しいインスタンスを作成し、これを コレクションに追加します。 + + [!code-csharp[c_CustomCredentials#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customcredentials/cs/source.cs#6)] + [!code-vb[c_CustomCredentials#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customcredentials/vb/service/service.vb#6)] + + 前の「`To create a configuration handler for custom client credentials`」および「`To register and use a custom client credentials configuration handler in the application configuration`」で説明した手順を使用して構成にサポートを追加します。構成ハンドラーの基本クラスとして、 クラスではなく クラスを使用する点のみが異なります。カスタム サービス資格情報要素は、システム指定の `` 要素を使用する場合にいつでも使用できます。 + +## 参照 + + + + + + + [方法 : カスタム セキュリティ トークン プロバイダーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-provider.md) + [方法 : カスタム セキュリティ トークン認証システムを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-security-token-authenticator.md) + [方法 : カスタム トークンを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-token.md) \ No newline at end of file diff --git a/docs/framework/wcf/extending/ws-metadataexchange-bindings.md b/docs/framework/wcf/extending/ws-metadataexchange-bindings.md new file mode 100644 index 00000000000..85cac6ec2e3 --- /dev/null +++ b/docs/framework/wcf/extending/ws-metadataexchange-bindings.md @@ -0,0 +1,29 @@ +--- +title: "WS-MetadataExchange のバインディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 10f8de5d-b81d-4ea7-b37e-7f2c00c39714 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# WS-MetadataExchange のバインディング +ここでは、既定のメタデータ交換バインディングを各種のトランスポート用に構築する方法を説明します。 + +## 既定のバインディング + +|既定のバインディング名|バインディングを構築する方法| +|-----------------|--------------------| +|MexHttpBinding|トランスポート レベルのセキュリティが無効な 。| +|MexHttpsBinding|トランスポート レベルのセキュリティをサポートする 。| +|MexNamedPipeBinding| で既定値を使用する 。| +|MexTcpBinding| で既定値を使用する 。| \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/TOC.md b/docs/framework/wcf/feature-details/TOC.md new file mode 100644 index 00000000000..cc18fd77f0b --- /dev/null +++ b/docs/framework/wcf/feature-details/TOC.md @@ -0,0 +1,434 @@ +# [方法 : Atom および RSS の両方としてフィードを公開する](how-to-expose-a-feed-as-both-atom-and-rss.md) +# [NetHttpBinding の使用](using-the-nethttpbinding.md) +# [方法 : デジタル署名の暗号化を無効にする](how-to-disable-encryption-of-digital-signatures.md) +# [資格情報ネゴシエーションを使用しない Windows クライアントを使用するメッセージ セキュリティ](message-security-with-a-windows-client-without-credential-negotiation.md) +# [方法 : カスタムの信頼できるセッションによる HTTPS を使用したバインディングを作成する](how-to-create-a-custom-reliable-session-binding-with-https.md) +# [WCF サービス パフォーマンスを制御するための ServiceThrottlingBehavior の使用](using-servicethrottlingbehavior-to-control-wcf-service-performance.md) +# [中間層クライアント アプリケーション](middle-tier-client-applications.md) +# [探索機能のバージョン指定](discovery-versioning.md) +# [方法 : チャネルのセキュリティ資格情報を指定する](how-to-specify-channel-security-credentials.md) +# [方法 : メタデータの取得および準拠サービスの実装をする](how-to-retrieve-metadata-and-implement-a-compliant-service.md) +# [Windows Communication Foundation の採用 : 将来の移行の簡略化](anticipating-adopting-wcf-migration.md) +# [セキュリティの概要](security-overview.md) +# [方法 : 構成にサービス エンドポイントを作成する](how-to-create-a-service-endpoint-in-configuration.md) +# [コンテンツ ベース](content-based-correlation.md) +# [セキュリティで保護されていないイントラネットのクライアントとサービス](intranet-unsecured-client-and-service.md) +# [方法 : COM+ サービス設定を構成する](how-to-configure-com-service-settings.md) +# [Windows サービス アプリケーションのホスト](hosting-in-a-windows-service-application.md) +# [JSONP の使用](using-jsonp.md) +# [開発者の視点から見た ASP.NET Web サービスと WCF との比較](comparing-aspnet-web-services-to-wcf-based-on-development.md) +# [方法 : IIS でサービス以外のワークフローをホストする](how-to-host-a-non-service-workflow-in-iis.md) +# [WCF での複数の認証方式の使用](using-multiple-authentication-schemes-with-wcf.md) +# [フィルターを使用する方法](how-to-use-filters.md) +# [Web サービス プロトコルの相互運用性ガイド](web-services-protocols-interoperability-guide.md) +# [方法 : ASP.NET の承認マネージャー ロール プロバイダーとサービスを使用する](how-to-use-the-aspnet-authorization-manager-role-provider-with-a-service.md) +# [シリアル化可能な型](serializable-types.md) +# [Net.TCP ポート共有](net-tcp-port-sharing.md) +# [データ コントラクトの等価性](data-contract-equivalence.md) +# [方法: 構成ファイルを使用してサービスのメタデータを公開する](how-to-publish-metadata-for-a-service-using-a-configuration-file.md) +# [クレームとトークン](claims-and-tokens.md) +# [ServiceDescription と WSDL 参照](servicedescription-and-wsdl-reference.md) +# [方法 : 未登録で Windows Communication Foundation のサービス モニカーを使用する](use-the-wcf-service-moniker-without-registration.md) +# [セキュリティ プロトコル バージョン 1.0](security-protocols-version-1-0.md) +# [相関関係の概要](correlation-overview.md) +# [WCF Web HTTP プログラミング オブジェクト モデル](wcf-web-http-programming-object-model.md) +# [配信のアーキテクチャ](architecture-of-syndication.md) +# [方法: WorkflowServiceHost を使用して追跡を構成する](how-to-configure-tracking-with-workflowservicehost.md) +# [ルーティング シナリオ](routing-scenarios.md) +# [WCF 配信](wcf-syndication.md) +# [探索プロキシで登録される探索可能なサービスの実装方法](discoverable-service-that-registers-with-the-discovery-proxy.md) +# [WCF でのキュー](queuing-in-wcf.md) +# [Web サービス拡張 3.0 との相互運用](interoperability-with-web-services-enhancements-3-0.md) +# [署名または暗号化、あるいはその両方が行われたカスタム ヘッダーの作成](creating-a-custom-header-that-is-signed-and-or-encrypted.md) +# [System.ServiceModel でのトランザクション サポート](transactional-support-in-system-servicemodel.md) +# [メタデータを使用する場合のセキュリティ上の考慮事項](security-considerations-with-metadata.md) +# [方法 : セキュリティ イベントを監査する](how-to-audit-wcf-security-events.md) +# [サービスおよびクライアントのセキュリティ保護](securing-services-and-clients.md) +# [方法 : サービス モニカーを登録および構成する](how-to-register-and-configure-a-service-moniker.md) +# [方法 : WCF REST プログラミング モデルを使用して任意のデータを受け入れるサービスを作成する](create-a-service-arbitrary-data-using-wcf.md) +# [方法 : WSFederationHttpBinding を作成する](how-to-create-a-wsfederationhttpbinding.md) +# [ワークフロー サービスの概要](workflow-services-overview.md) +# [方法 : ASP.NET Web サービス コードを Windows Communication Foundation に移行する](migrate-asp-net-web-service-to-wcf.md) +# [COM+ と ServiceModel でのトランザクションの比較](comparing-transactions-in-com-and-servicemodel.md) +# [COM+ アプリケーションとの統合の概要](integrating-with-com-plus-applications-overview.md) +# [WorkflowServiceHost を使用して永続性を構成する方法](how-to-configure-persistence-with-workflowservicehost.md) +# [WCF Web HTTP 形式](wcf-web-http-formatting.md) +# [Windows ストア クライアント アプリを使用した WCF サービスへのアクセス](accessing-wcf-services-with-a-windows-store-client-app.md) +# [方法 : サービスのインスタンス化を制御する](how-to-control-service-instancing.md) +# [サービス拒否](denial-of-service.md) +# [IIS でホストされる WCF サービスに SSL を構成する方法](how-to-configure-an-iis-hosted-wcf-service-with-ssl.md) +# [エラーを処理する方法](how-to-error-handling.md) +# [インターネット インフォメーション サービスでのホスティング](hosting-in-internet-information-services.md) +# [探索プロキシの実装](implementing-a-discovery-proxy.md) +# [ピア チャネルのシナリオ](peer-channel-scenarios.md) +# [方法 : 証明書のサムプリントを取得する](how-to-retrieve-the-thumbprint-of-a-certificate.md) +# [探索プロキシをテストする方法](how-to-test-the-discovery-proxy.md) +# [ピア メッシュ](peer-meshes.md) +# [WorkflowServiceHost の構成](configuring-workflowservicehost.md) +# [ピア リゾルバー](peer-resolvers.md) +# [Trust プロトコルが混在するフェデレーション シナリオ](mixing-trust-protocols-in-federated-scenarios.md) +# [方法 : 証明書を取得する](how-to-obtain-a-certificate-wcf.md) +# [セキュリティによるピア チャネル アプリケーションの保護](securing-peer-channel-applications.md) +# [方法 : ChannelFactory を使用する](how-to-use-the-channelfactory.md) +# [NetTcpBinding アプリケーションからピア チャネル アプリケーションへの変換](converting-a-nettcpbinding-application-to-a-peer-channel-application.md) +# [使用目的と使用標準に基づく ASP.NET Web サービスと WCF との比較](comparing-aspnet-web-services-to-wcf-based-on-purpose-and-standards-used.md) +# [HTTP トランスポート セキュリティ](http-transport-security.md) +# [Windows プロセス アクティブ化サービスでのホスティング](hosting-in-windows-process-activation-service.md) +# [メッセージ クラスの使用](using-the-message-class.md) +# [方法 : Svcutil.exe を使用してコンパイル済みサービス コードを検証する](how-to-use-svcutil-exe-to-validate-compiled-service-code.md) +# [方法 : サポート資格情報を作成する](how-to-create-a-supporting-credential.md) +# [要求/応答](request-reply-correlation.md) +# [方法 : 同じ型の複数のセキュリティ トークンを使用する](how-to-use-multiple-security-tokens-of-the-same-type.md) +# [WSDL とポリシー](wsdl-and-policy.md) +# [クライアント](clients.md) +# [方法 : チャネル ファクトリを使用して、非同期的に操作を呼び出す](how-to-call-operations-asynchronously-using-a-channel-factory.md) +# [WS-AtomicTransaction サポートの構成](configuring-ws-atomic-transaction-support.md) +# [相互運用可能なオブジェクト参照](interoperable-object-references.md) +# [メッセージ フィルター](message-filters.md) +# [メッセージ セキュリティと匿名クライアント](message-security-with-an-anonymous-client.md) +# [ルーティング サービス](routing-service.md) +# [COM アプリケーションとの統合](integrating-with-com-applications.md) +# [Error handling](error-handling.md) +# [方法 : Net.TCP ポート共有サービスを有効にする](how-to-enable-the-net-tcp-port-sharing-service.md) +# [WCF と国際化ドメイン名](wcf-and-internationalized-domain-names.md) +# [コントラクト](contracts.md) +# [WCF クライアントを使用したサービスへのアクセス](accessing-services-using-a-client.md) +# [キューに置かれたアプリケーションの Web ホスト](web-hosting-a-queued-application.md) +# [Windows Communication Foundation のトランザクションの概要](transactions-overview.md) +# [XmlSerializer クラスの使用](using-the-xmlserializer-class.md) +# [方法 : Metadata Exchange コントラクトと共にサービス モニカーを使用する](how-to-use-a-service-moniker-with-metadata-exchange-contracts.md) +# [生成されたクライアント コードの理解](understanding-generated-client-code.md) +# [データ コントラクトの XML および ADO.NET の種類](xml-and-ado-net-types-in-data-contracts.md) +# [ワークフロー サービス ホストの拡張機能](workflow-service-host-extensibility.md) +# [資格情報の種類の選択](selecting-a-credential-type.md) +# [ルーティングの概要](routing-introduction.md) +# [ルーティング](routing.md) +# [方法 : 開発中に使用する一時的な証明書を作成する](how-to-create-temporary-certificates-for-use-during-development.md) +# [方法 : クラスまたは構造体に基本的なデータ コントラクトを作成する](how-to-create-a-basic-data-contract-for-a-class-or-structure.md) +# [方法 : コントラクトを SOAP クライアントおよび Web クライアントに公開する](how-to-expose-a-contract-to-soap-and-web-clients.md) +# [クラスからのスキーマのエクスポート](exporting-schemas-from-classes.md) +# [WebSockets 上で通信する WCF サービスを作成する用法](how-to-create-a-wcf-service-that-communicates-over-websockets.md) +# [メタデータ形式](metadata-formats.md) +# [SerializationBinder を使用したシリアル化および逆シリアル化の制御](controlling-serialization-and-deserialization-with-serializationbinder.md) +# [ASP.NET を使用せずに WCF AJAX サービスを作成する方法](creating-wcf-ajax-services-without-aspnet.md) +# [構成ファイルにおける探索の構成](configuring-discovery-in-a-configuration-file.md) +# [WCF サービスと ASP.NET](wcf-services-and-aspnet.md) +# [信頼できるセッションのベスト プラクティス](best-practices-for-reliable-sessions.md) +# [クラスを作成するためのスキーマのインポート](importing-schema-to-generate-classes.md) +# [方法 : SSL 証明書を使用してポートを構成する](how-to-configure-a-port-with-an-ssl-certificate.md) +# [キューの概要](queues-overview.md) +# [方法 : セキュリティで保護されたセッションを作成する](how-to-create-a-secure-session.md) +# [Net.TCP ポート共有サービスを構成する](configuring-the-net-tcp-port-sharing-service.md) +# [方法 : メタデータをサービス エンドポイントからエクスポートする](how-to-export-metadata-from-service-endpoints.md) +# [方法 : メタデータをサービス エンドポイントにインポートする](how-to-import-metadata-into-service-endpoints.md) +# [データ コントラクトの列挙型](enumeration-types-in-data-contracts.md) +# [バインディングでのタイムアウト値の構成](configuring-timeout-values-on-a-binding.md) +# [基本認証でのトランスポート セキュリティ](transport-security-with-basic-authentication.md) +# [方法 : ASP.NET AJAX エンドポイントのために HTTP POST または HTTP GET を選択する](http-post-and-http-get-requests-for-aspnet-ajax-endpoints.md) +# [方法: Probe 要求の探索バージョンを特定する](how-to-determine-the-discovery-version-of-a-probe-request.md) +# [ワークフロー サービスから OperationContext へのアクセス](accessing-operationcontext-from-a-workflow-service.md) +# [トランスポートの選択](choosing-a-transport.md) +# [HTTP および HTTPS の構成](configuring-http-and-https.md) +# [方法 : 構成を使用せずに ASP.NET AJAX エンドポイントを追加する](how-to-add-an-aspnet-ajax-endpoint-without-using-configuration.md) +# [方法 : IIS で WCF サービスをホストする](how-to-host-a-wcf-service-in-iis.md) +# [マネージ アプリケーションのホスト](hosting-in-a-managed-application.md) +# [WCF 配信の概要](wcf-syndication-overview.md) +# [ワークフロー サービス ホストの内部](workflow-service-host-internals.md) +# [方法 : 信頼できるセッション内でメッセージをセキュリティで保護する](how-to-secure-messages-within-reliable-sessions.md) +# [ピアツーピア ネットワーク](peer-to-peer-networking.md) +# [大規模データとストリーミング](large-data-and-streaming.md) +# [Windows Vista、Windows Server 2003、および Windows XP におけるキュー機能の相違点](diff-in-queue-in-vista-server-2003-windows-xp.md) +# [ワークフロー サービス内でのシリアル化の構成](configuring-serialization-in-a-workflow-service.md) +# [バージョン トレラントなシリアル化コールバック](version-tolerant-serialization-callbacks.md) +# [Single 同時実行モードでメッセージを順番に処理する](ordered-processing-of-messages-in-single-concurrency-mode.md) +# [方法 : WSDL コントラクトと共にサービス モニカーを使用する](how-to-use-a-service-moniker-with-wsdl-contracts.md) +# [メッセージのセキュリティ](message-security-in-wcf.md) +# [信頼できるセッションの概要](reliable-sessions-overview.md) +# [セキュリティに関するデータの考慮事項](security-considerations-for-data.md) +# [方法 : 指定した認証モード用の SecurityBindingElement を作成する](how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md) +# [ClaimSet でのクレームの検索](finding-claims-in-a-claimset.md) +# [方法 : 一貫性を保って X.509 証明書を参照する](how-to-consistently-reference-x-509-certificates.md) +# [ピア チャネル アプリケーションの構築](building-a-peer-channel-application.md) +# [キューに置かれたメッセージングのトラブルシューティング](troubleshooting-queued-messaging.md) +# [信頼できるメッセージング プロトコル バージョン 1.0](reliable-messaging-protocol-version-1-0.md) +# [方法 : X.509 証明書を WCF からアクセス可能にする](how-to-make-x-509-certificates-accessible-to-wcf.md) +# [方法 : ユーザー名とパスワードで認証する](how-to-authenticate-with-a-user-name-and-password.md) +# [JSON などのデータ転送形式のサポート](support-for-json-and-other-data-transfer-formats.md) +# [サービス ID と認証](service-identity-and-authentication.md) +# [データ コントラクトの使用](using-data-contracts.md) +# [部分信頼機能の互換性](partial-trust-feature-compatibility.md) +# [カスタム バインディングを使用したセキュリティ機能](security-capabilities-with-custom-bindings.md) +# [メッセージ セキュリティを使用したメッセージのセキュリティ保護](securing-messages-using-message-security.md) +# [トランザクション フローの有効化](enabling-transaction-flow.md) +# [方法 : セキュリティで保護されたメタデータ エンドポイント](how-to-secure-metadata-endpoints.md) +# [データ コントラクト スキーマの参照](data-contract-schema-reference.md) +# [配信不能キューを使用したメッセージ転送エラー処理](using-dead-letter-queues-to-handle-message-transfer-failures.md) +# [方法 : WAS で WCF サービスをホストする](how-to-host-a-wcf-service-in-was.md) +# [Internet Explorer と WCF で実行されるサービス証明書の検証の相違点](diff-service-certificate-validation-ie-and-wcf.md) +# [エンドポイント : アドレス、バインディング、およびコントラクト](endpoints-addresses-bindings-and-contracts.md) +# [アクセス制御機構](access-control-mechanisms.md) +# [ルーティング コントラクト](routing-contracts.md) +# [動的な更新を行う方法](how-to-dynamic-update.md) +# [データ コントラクトのコレクション型](collection-types-in-data-contracts.md) +# [WCF 機能の詳細](index.md) +# [メッセージ セキュリティと相互の証明書](message-security-with-mutual-certificates.md) +# [方法: 別のワークフロー サービスを呼び出すワークフロー サービスを作成する](how-to-create-a-workflow-service-that-calls-another-workflow-service.md) +# [メッセージ セキュリティと証明書クライアント](message-security-with-a-certificate-client.md) +# [探索検索と FindCriteria](discovery-find-and-findcriteria.md) +# [方法 : セキュリティ トークン サービスを作成する](how-to-create-a-security-token-service.md) +# [COM+ アプリケーションとの統合](integrating-with-com-plus-applications.md) +# [相関関係のトラブルシューティング](troubleshooting-correlation.md) +# [カスタム フィルター](custom-filters.md) +# [セキュリティで保護されていないインターネット環境のクライアントとサービス](internet-unsecured-client-and-service.md) +# [トランスポート セキュリティと Windows 認証](transport-security-with-windows-authentication.md) +# [方法 : Svcutil.exe を使用してコンパイル済みのサービス コードからメタデータをエクスポートする](how-to-use-svcutil-exe-to-export-metadata-from-compiled-service-code.md) +# [チャネル ファクトリとキャッシュ](channel-factory-and-caching.md) +# [HTTPS、SSL Over TCP、SOAP セキュリティ間における証明書検証方法の相違点](cert-val-diff-https-ssl-over-tcp-and-soap.md) +# [方法 : AJAX 対応 WCF サービスを作成し、アクセスする](create-an-ajax-wcf-asp-net-client.md) +# [セキュリティの概念](security-concepts.md) +# [ワークフロー内でのコントラクトの使用](using-contracts-in-workflow.md) +# [方法 : WCF エンドポイントを使用してキューに置かれたメッセージを交換する](how-to-exchange-queued-messages-with-wcf-endpoints.md) +# [HTTP 認証の理解](understanding-http-authentication.md) +# [SAML (Security Assertions Markup Language) トークンとクレーム](saml-tokens-and-claims.md) +# [方法: ワークフロー アプリケーションからサービスにアクセスする](how-to-access-a-service-from-a-workflow-application.md) +# [認証](authentication-in-wcf.md) +# [方法 : 承認中にメタデータ要求を許可する](how-to-allow-metadata-requests-while-authorizing.md) +# [トランスポート セキュリティを使用したメッセージのセキュリティ保護](securing-messages-using-transport-security.md) +# [永続的な二重](durable-duplex-correlation.md) +# [承認](authorization-in-wcf.md) +# [方法 : マネージ Windows サービスで WCF サービスをホストする](how-to-host-a-wcf-service-in-a-managed-windows-service.md) +# [方法 : カスタム ユーザー名およびパスワード検証を使用する](how-to-use-a-custom-user-name-and-password-validator.md) +# [有害メッセージ処理](poison-message-handling.md) +# [方法 : メッセージ リプレイ検出を有効にする](how-to-enable-message-replay-detection.md) +# [メッセージ配布の制限](limiting-message-distribution.md) +# [方法 : セッションを必要とするサービスを作成する](how-to-create-a-service-that-requires-sessions.md) +# [方法 : ASP.NET のロール プロバイダーとサービスを使用する](how-to-use-the-aspnet-role-provider-with-a-service.md) +# [方法 : JSON データをシリアル化および逆シリアル化する](how-to-serialize-and-deserialize-json-data.md) +# [方法 : 信頼されたセッション内のメッセージを変換する](how-to-exchange-messages-within-a-reliable-session.md) +# [方法 : 基本的な WCF Web HTTP サービスを作成する](how-to-create-a-basic-wcf-web-http-service.md) +# [トランスポート セキュリティ](transport-security.md) +# [方法 : 一方向コントラクトを作成する](how-to-create-a-one-way-contract.md) +# [WCF Discovery の概要](wcf-discovery-overview.md) +# [メッセージング アクティビティ](messaging-activities.md) +# [方法 : Windows Server AppFabric を使用してワークフロー サービスをホストする](how-to-host-a-workflow-service-with-windows-server-app-fabric.md) +# [WCF Discovery オブジェクト モデル](wcf-discovery-object-model.md) +# [バインディング](bindings.md) +# [ワークフロー ソリューションでのサービス参照の追加](adding-a-service-reference-in-a-workflow-solution.md) +# [パフォーマンスに関する考慮事項](performance-considerations.md) +# [拡張保護認証のサンプルの ReadMe](readme-for-extended-protection-authentication-sample.md) +# [方法 : 要求/応答コントラクトを作成する](how-to-create-a-request-reply-contract.md) +# [WCF WEB HTTP サービスのキャッシュ サポート](caching-support-for-wcf-web-http-services.md) +# [セキュリティ](security.md) +# [キューと信頼できるセッション](queues-and-reliable-sessions.md) +# [方法 : COM+ サービス モデル構成ツールを使用する](how-to-use-the-com-service-model-configuration-tool.md) +# [方法 : 一方向コントラクトと要求/応答コントラクトを使用してサービスにアクセスする](how-to-access-wcf-services-with-one-way-and-request-reply-contracts.md) +# [サービス エンドポイントとキューのアドレス指定](service-endpoints-and-queue-addressing.md) +# [DiscoveryClient と DynamicEndpoint](discoveryclient-and-dynamicendpoint.md) +# [方法 : 構成を使用して ASP.NET AJAX エンドポイントを追加する](how-to-use-configuration-to-add-an-aspnet-ajax-endpoint.md) +# [方法 : 署名の検証に使用する証明機関の証明書チェーンを指定する](specify-the-certificate-authority-chain-verify-signatures-wcf.md) +# [サービス コントラクトでのデータ転送の指定](specifying-data-transfer-in-service-contracts.md) +# [WSE 3.0 Web サービスの WCF への移行](migrating-wse-3-0-web-services-to-wcf.md) +# [方法 : コントラクト インターフェイスを使用してサービスを作成する](how-to-create-a-service-with-a-contract-interface.md) +# [セキュリティで保護されたセッション](secure-sessions.md) +# [ワークフロー サービス](workflow-services.md) +# [リプレイ攻撃](replay-attacks.md) +# [セキュリティ ガイドラインとベスト プラクティス](security-guidance-and-best-practices.md) +# [探索プロキシを実装する方法](how-to-implement-a-discovery-proxy.md) +# [WCF サービスからの REST スタイル サービスの呼び出し](calling-a-rest-style-service-from-a-wcf-service.md) +# [NAT とファイアウォールの使用](working-with-nats-and-firewalls.md) +# [UDP トランスポートを使用するマルチキャスト アプリケーションの作成](creating-multicasting-applications-using-the-udp-transport.md) +# [方法 : 双方向コントラクトを使用してサービスにアクセスする](how-to-access-services-with-a-duplex-contract.md) +# [WCF セキュリティのプログラミング](programming-wcf-security.md) +# [データ コントラクト シリアライザーでサポートされる型](types-supported-by-the-data-contract-serializer.md) +# [発行済みトークンを使用したメッセージ セキュリティ](message-security-with-issued-tokens.md) +# [メッセージ転送ストリーミング](streaming-message-transfer.md) +# [サポートされていないシナリオ](unsupported-scenarios.md) +# [証明書の使用](working-with-certificates.md) +# [方法 : 基本的な ATOM フィードを作成する](how-to-create-a-basic-atom-feed.md) +# [方法 : トランスポート セキュリティとメッセージ資格情報を使用する](how-to-use-transport-security-and-message-credentials.md) +# [方法 : ストリーミングを有効にする](how-to-enable-streaming.md) +# [IIS と WAS における構成ベースのアクティブ化](configuration-based-activation-in-iis-and-was.md) +# [セキュリティ用語](wcf-security-terminology.md) +# [フィルターの選択](choosing-a-filter.md) +# [方法 : WSFederationHttpBinding のセキュリティで保護されたセッションを無効にする](how-to-disable-secure-sessions-on-a-wsfederationhttpbinding.md) +# [メタデータ](metadata.md) +# [方法 : セキュリティで保護されたセッションに対しセキュリティ コンテキスト トークンを作成する](how-to-create-a-security-context-token-for-a-secure-session.md) +# [方法 : ポート共有を使用するように WCF サービスを構成する](how-to-configure-a-wcf-service-to-use-port-sharing.md) +# [WCF Web HTTP サービスのヘルプ ページ](wcf-web-http-service-help-page.md) +# [セッションでキューに置かれたメッセージのグループ化](grouping-queued-messages-in-a-session.md) +# [探索プロキシを使用してサービスを検索するクライアント アプリケーションの実装方法](client-app-discovery-proxy-to-find-a-service.md) +# [ASP.NET Web サービスとの相互運用](interop-with-aspnet-web-services.md) +# [方法 : WCF エンドポイントとメッセージ キュー アプリケーションを使用してメッセージを交換する](how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md) +# [メタデータのエクスポートとインポート](exporting-and-importing-metadata.md) +# [WorkflowServiceHost による side-by-side でのバージョン管理](side-by-side-versioning-in-workflowservicehost.md) +# [関連付け](correlation.md) +# [メッセージ レベルのプログラミングによる JSON 形式でのシリアル化](serializing-in-json-with-message-level-programming.md) +# [WCF クライアントの構成](client-configuration.md) +# [UriTemplate と UriTemplateTable](uritemplate-and-uritemplatetable.md) +# [メッセージング プロトコル](messaging-protocols.md) +# [WAS アクティベーション アーキテクチャ](was-activation-architecture.md) +# [セキュリティ プロトコル](security-protocols.md) +# [方法 : MetadataResolver を使用してバインディング メタデータを動的に取得する](how-to-use-metadataresolver-to-obtain-binding-metadata-dynamically.md) +# [方法 : フェデレーション クライアントを作成する](how-to-create-a-federated-client.md) +# [ServiceModel トランザクションの構成](servicemodel-transaction-configuration.md) +# [監査](auditing-security-events.md) +# [方法: メッセージング アクティビティを使用してワークフロー サービスを作成する](how-to-create-a-workflow-service-with-messaging-activities.md) +# [データ メンバーの既定値](data-member-default-values.md) +# [分散アプリケーションのセキュリティ](distributed-application-security.md) +# [トランザクションに含まれるメッセージのバッチ処理](batching-messages-in-a-transaction.md) +# [ワークフロー サービスの未処理の例外動作を構成する方法](config-workflow-unhandled-exception-workflowservicehost.md) +# [方法 : コードを使用してサービスのメタデータを公開する](how-to-publish-metadata-for-a-service-using-code.md) +# [セキュリティ動作](security-behaviors-in-wcf.md) +# [セッション、インスタンス化、および同時実行](sessions-instancing-and-concurrency.md) +# [方法 : 双方向コントラクトを作成する](how-to-create-a-duplex-contract.md) +# [プログラムを使用して探索可能性に WCF サービスとクライアントを追加する方法](how-to-programmatically-add-discoverability-to-a-wcf-service-and-client.md) +# [バインディングとセキュリティ](bindings-and-security.md) +# [配信の拡張](syndication-extensibility.md) +# [長時間のワークフロー サービスの作成](creating-a-long-running-workflow-service.md) +# [フェデレーションと発行済みトークン](federation-and-issued-tokens.md) +# [フェデレーションと信頼](federation-and-trust.md) +# [ServiceModel 属性および ServiceDescription 参照](servicemodel-attributes-and-servicedescription-reference.md) +# [トランザクション アプリケーションの診断](diagnosing-transactional-applications.md) +# [データ コントラクトのバージョン管理](data-contract-versioning.md) +# [Windows Communication Foundation の採用](adopting-wcf.md) +# [方法 : 時刻のずれの最大値を設定する](how-to-set-a-max-clock-skew.md) +# [方法 : WCF サービスおよび ASP.NET Web サービス クライアントを相互運用するために構成する](config-wcf-service-with-aspnet-web-service.md) +# [セキュリティ保護されたメッセージ交換とセッション](secure-conversations-and-secure-sessions.md) +# [トランザクション モデル](transaction-models.md) +# [部分信頼](partial-trust.md) +# [WCF Discovery](wcf-discovery.md) +# [POX アプリケーションとの相互運用性](interoperability-with-pox-applications.md) +# [キューに置かれた通信のベスト プラクティス](best-practices-for-queued-communication.md) +# [システムが提供するバインディングの構成](configuring-system-provided-bindings.md) +# [方法 : 双方向フェデレーション バインディングを作成する](how-to-create-a-duplex-federated-binding.md) +# [方法 : 基本的な RSS フィードを作成する](how-to-create-a-basic-rss-feed.md) +# [WCF のキュー](queues-in-wcf.md) +# [サービスのバージョンを管理する方法](how-to-service-versioning.md) +# [トランスポート セキュリティでの偽装の使用](using-impersonation-with-transport-security.md) +# [探索アナウンスとアナウンス クライアント](discovery-announcements-and-announcement-client.md) +# [セキュリティの考慮事項](security-considerations-in-wcf.md) +# [上位互換性のあるデータ コントラクト](forward-compatible-data-contracts.md) +# [情報の漏えい](information-disclosure.md) +# [複数の IIS サイト バインディングのサポート](supporting-multiple-iis-site-bindings.md) +# [CustomPeerResolverService 内部 : クライアント登録](inside-the-custompeerresolverservice-client-registrations.md) +# [フィルター処理](filtering.md) +# [標準エンドポイント](standard-endpoints.md) +# [方法 : コード内にサービス エンドポイントを作成する](how-to-create-a-service-endpoint-in-code.md) +# [トランスポート クォータ](transport-quotas.md) +# [コンテキスト交換プロトコル](context-exchange-protocol.md) +# [方法 : WCF クライアントと WSE3.0 サービスを相互運用するために構成する](how-to-configure-a-wcf-client-to-interoperate-with-wse3-0-services.md) +# [トランスポート セキュリティと証明書認証](transport-security-with-certificate-authentication.md) +# [シリアル化と逆シリアル化](serialization-and-deserialization.md) +# [データ コントラクト シリアライザー](data-contract-serializer.md) +# [認証の拡張保護の概要](extended-protection-for-authentication-overview.md) +# [改変](tampering.md) +# [WCF で使用されるセキュリティの概要](security-concepts-used-in-wcf.md) +# [メタデータの公開](publishing-metadata.md) +# [双方向サービス](duplex-services.md) +# [AJAX の統合と JSON のサポート](ajax-integration-and-json-support.md) +# [WCF Web HTTP プログラミング モデルの概要](wcf-web-http-programming-model-overview.md) +# [ピア チャネルの概要](peer-channel-concepts.md) +# [カスタム バインディングを探索クライアント チャネルと共に使用する](using-a-custom-binding-with-the-discovery-client-channel.md) +# [セキュリティのベスト プラクティス](best-practices-for-security-in-wcf.md) +# [ユーザー名クライアントを使用したメッセージ セキュリティ](message-security-with-a-user-name-client.md) +# [データ転送のアーキテクチャの概要](data-transfer-architectural-overview.md) +# [順番を無視したメッセージの処理](out-of-order-message-processing.md) +# [方法 : WCF アクティブ化コンポーネントをインストールして設定する](how-to-install-and-configure-wcf-activation-components.md) +# [サポートされている配置シナリオ](supported-deployment-scenarios.md) +# [方法 : ASP.NET メンバーシップ プロバイダーを使用する](how-to-use-the-aspnet-membership-provider.md) +# [System.Web.Routing 統合](system-web-routing-integration.md) +# [データ コントラクト名](data-contract-names.md) +# [スタンドアロン JSON のシリアル化](stand-alone-json-serialization.md) +# [クレームの作成とリソース値](claim-creation-and-resource-values.md) +# [Windows Communication Foundation 導入の準備 : 将来的な統合の容易化](anticipating-adopting-the-wcf-easing-future-integration.md) +# [要求/応答サービス](request-reply-services.md) +# [フェデレーション](federation.md) +# [データ コントラクト リゾルバーの使用](using-a-data-contract-resolver.md) +# [方法 : COM+ 統合アプリケーションを展開する](how-to-deploy-a-com-integration-application.md) +# [方法 : ASP.NET Web サービス クライアント コードを Windows Communication Foundation に移行する](migrate-asp-net-web-service-client-to-wcf.md) +# [ワークフロー サービスのホスティング](hosting-workflow-services.md) +# [方法 : X.509 証明書を使用してサービスをセキュリティで保護する](how-to-secure-a-service-with-an-x-509-certificate.md) +# [ピア チャネルのセキュリティ](peer-channel-security.md) +# [方法 : MMC スナップインを使用して証明書を参照する](how-to-view-certificates-with-the-mmc-snap-in.md) +# [トランザクション プロトコル](transaction-protocols.md) +# [サービス メタデータからの WCF クライアントの生成](generating-a-wcf-client-from-service-metadata.md) +# [方法: WCF URL 予約を制限付きの予約に置き換える](how-to-replace-the-wcf-url-reservation-with-a-restricted-reservation.md) +# [.NET リモート処理アプリケーションの WCF への移行](migrating-net-remoting-applications-to-wcf.md) +# [方法 : 署名確認を設定する](how-to-set-up-a-signature-confirmation.md) +# [WCF Web HTTP プログラミング モデル](wcf-web-http-programming-model.md) +# [JSON と XML 間のマッピング](mapping-between-json-and-xml.md) +# [メッセージ エンコーダーを選択する](choosing-a-message-encoder.md) +# [方法 : XmlSerializer を使用する WCF クライアント アプリケーションの起動時間を短縮する](startup-time-of-wcf-client-applications-using-the-xmlserializer.md) +# [方法 : SecurityBindingElement を使用してカスタム バインドを作成する](how-to-create-a-custom-binding-using-the-securitybindingelement.md) +# [一般的なセキュリティ シナリオ](common-security-scenarios.md) +# [方法 : WSE 3.0 サービスにアクセスする](how-to-access-a-wse-3-0-service-with-a-wcf-client.md) +# [システム標準の相互運用性バインディングがサポートしている Web サービス プロトコル](web-services-protocols-supported-by-system-provided-interoperability-bindings.md) +# [信頼できるサブシステム](trusted-subsystem.md) +# [トランザクション](transactions-in-wcf.md) +# [WCF と WebSocket](wcf-and-websockets.md) +# [コンテキスト交換](context-exchange-correlation.md) +# [メッセージ コントラクトの使用](using-message-contracts.md) +# [ServiceModel トランザクションの属性](servicemodel-transaction-attributes.md) +# [WCF で使用するための WAS を設定する](configuring-the-wpa--service-for-use-with-wcf.md) +# [メタデータ アーキテクチャの概要](metadata-architecture-overview.md) +# [サービス データのパーティションを分割する方法](how-to-service-data-partitioning.md) +# [WCF サービスが Web ファームでホストされている場合のリプレイ攻撃の回避](preventing-replay-attacks-when-a-wcf-service-is-hosted-in-a-web-farm.md) +# [方法 : トランザクション サービスを作成する](how-to-create-a-transactional-service.md) +# [WorkflowServiceHost を使用してアイドル動作を構成する方法](how-to-configure-idle-behavior-with-workflowservicehost.md) +# [ワークフロー コントロール エンドポイント](workflow-control-endpoint.md) +# [ASP.NET Web サービスを WCF に移行する](migrating-aspnet-web-services-to-wcf.md) +# [方法 : コントラクト クラスを使用してサービスを作成する](how-to-create-a-wcf-contract-with-a-class.md) +# [既知のデータ コントラクト型](data-contract-known-types.md) +# [ワークフロー サービスのホストの概要](hosting-workflow-services-overview.md) +# [一方向サービス](one-way-services.md) +# [メタデータを取得する](retrieving-metadata.md) +# [Windows 認証エラーのデバッグ](debugging-windows-authentication-errors.md) +# [方法 : Svcutil.exe を使用してメタデータ ドキュメントをダウンロードする](how-to-use-svcutil-exe-to-download-metadata-documents.md) +# [方法 : ローカル発行者を設定する](how-to-configure-a-local-issuer.md) +# [方法 : フェデレーション サービスで資格情報を設定する](how-to-configure-credentials-on-a-federation-service.md) +# [探索クライアント チャネルの使用](using-the-discovery-client-channel.md) +# [権限の昇格](elevation-of-privilege.md) +# [リソースへのアクセスのクレームと拒否](claims-and-denying-access-to-resources.md) +# [信頼できるセッション](reliable-sessions.md) +# [方法 : AJAX 対応 ASP.NET Web サービスを WCF に移行する](how-to-migrate-ajax-enabled-aspnet-web-services-to-wcf.md) +# [アドレス](endpoint-addresses.md) +# [SecurityBindingElement 認証モード](securitybindingelement-authentication-modes.md) +# [委任と偽装](delegation-and-impersonation-with-wcf.md) +# [Windows Communication Foundation での Internet Information Services 7.0 の構成](configuring-iis-for-wcf.md) +# [方法 : サービス操作を非同期に呼び出す](how-to-call-wcf-service-operations-asynchronously.md) +# [方法 : WCF サービスと WSE 3.0 クライアントを相互運用するために構成する](how-to-configure-wcf-services-to-interoperate-with-wse-3-0-clients.md) +# [データ転送とシリアル化](data-transfer-and-serialization.md) +# [リライアブル メッセージング プロトコル バージョン 1.1](reliable-messaging-protocol-version-1-1.md) +# [スキーマのインポートとエクスポート](schema-import-and-export.md) +# [相互運用性と統合](interoperability-and-integration.md) +# [セキュリティで保護されたセッションに関するセキュリティの検討](security-considerations-for-secure-sessions.md) +# [部分信頼のベスト プラクティス](partial-trust-best-practices.md) +# [ワークフロー サービス内部の ID 情報へのアクセス](accessing-identity-information-inside-a-workflow-service.md) +# [ID モデルを使用したクレームと承認の管理](managing-claims-and-authorization-with-the-identity-model.md) +# [電子署名の暗号化](encryption-of-digital-signatures.md) +# [インターネット インフォメーション サービス ホスティングのベスト プラクティス](internet-information-services-hosting-best-practices.md) +# [ホスト](hosting.md) +# [方法 : MetadataExchangeClient を使用してメタデータを取得する](how-to-use-metadataexchangeclient-to-retrieve-metadata.md) +# [ピア ノード](peer-nodes.md) +# [データ メンバーの順序](data-member-order.md) +# [オンライン ステータスとオフライン ステータスの追加](adding-online-and-offline-status.md) +# [エンタープライズ サービスのトランザクション コンポーネントの統合](integrating-enterprise-services-transactional-components.md) +# [メタデータを使用する](using-metadata.md) +# [トランスポート セキュリティと匿名クライアント](transport-security-with-an-anonymous-client.md) +# [インターネット インフォメーション サービスでホストされる WCF サービスの配置](deploying-an-internet-information-services-hosted-wcf-service.md) +# [ASP.NET AJAX 用の WCF サービスの作成](creating-wcf-services-for-aspnet-ajax.md) +# [WS-AtomicTransaction の使用](using-ws-atomictransaction.md) +# [ワークフロー サービスへのトランザクションのフロー](flowing-transactions-into-and-out-of-workflow-services.md) +# [Send アクティビティのキャッシュ共有レベルの変更](changing-the-cache-sharing-levels-for-send-activities.md) +# [WCF 配信オブジェクト モデルを Atom や RSS に割り当てる方法](how-the-wcf-syndication-object-model-maps-to-atom-and-rss.md) +# [トランザクション プロトコル バージョン 1.0](transaction-protocols-version-1-0.md) +# [COM アプリケーションとの統合の概要](integrating-with-com-applications-overview.md) +# [セキュリティ ネゴシエーションとタイムアウト](security-negotiation-and-timeouts.md) +# [WCF Web HTTP エラー処理](wcf-web-http-error-handling.md) +# [方法 : WCF Web HTTP プログラミング モデルを使用して任意のデータを返すサービスを作成する](service-returns-arbitrary-data-using-the-wcf-web.md) +# [WCF クライアント アーキテクチャ](client-architecture.md) +# [バイトストリーム エンコーダーを使用したバイナリ オブジェクトのエンコーディング](encoding-binary-objects-with-bytestream-encoder.md) +# [Windows クライアントとのメッセージ セキュリティ](message-security-with-a-windows-client.md) +# [方法 : チャネル ファクトリを作成および使用して、チャネルを作成および管理する](how-to-create-a-channel-factory-and-use-it-to-create-and-manage-channels.md) +# [トランスポート セキュリティの概要](transport-security-overview.md) +# [トランスポート](transports.md) diff --git a/docs/framework/wcf/feature-details/access-control-mechanisms.md b/docs/framework/wcf/feature-details/access-control-mechanisms.md new file mode 100644 index 00000000000..e946818fa7e --- /dev/null +++ b/docs/framework/wcf/feature-details/access-control-mechanisms.md @@ -0,0 +1,73 @@ +--- +title: "アクセス制御機構 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アクセス制御 [WCF]" + - "WCF セキュリティ" +ms.assetid: 9d576122-3f55-4425-9acf-b23d0781e966 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# アクセス制御機構 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、複数の方法でアクセスを制御できます。ここでは、正しい機構を選択して使用できるように、さまざまな機構について簡単に説明し、各機構を使用するタイミングに関するヒントを提供します。ここでは、アクセス テクノロジを単純なものから順に示します。最も単純なのは で、最も複雑なのは ID モデルです。 + + これらの機構とは別に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での委任と偽装については、「[委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md)」を参照してください。 + +## PrincipalPermissionAttribute + は、サービス メソッドへのアクセスを制限するために使用します。この属性をメソッドに適用して使用すると、特定の呼び出し元の ID や Windows グループまたは [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロールでのメンバーシップを要求できます。クライアントが、X.509 証明書を使用して認証された場合は、サブジェクト名と証明書の拇印で構成されるプライマリ ID がクライアントに割り当てられています。 + + サービスのユーザーが常に、サービスが実行されているものと同じ Windows ドメインのメンバーである場合、サービスが実行されているコンピューター上のリソースへのアクセスを制御するには、 を使用します。指定したアクセス レベル \(なし、読み取り専用、または読み取りと書き込みなど\) を持つ Windows グループを簡単に作成できます。 + + 属性の使用[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : PrincipalPermissionAttribute クラスでアクセスを制限する](../../../../docs/framework/wcf/how-to-restrict-access-with-the-principalpermissionattribute-class.md)」を参照してください。ID [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください。 + +## ASP.NET メンバーシップ プロバイダー + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] の機能の 1 つに、メンバーシップ プロバイダーがあります。メンバーシップ プロバイダーは、厳密にはアクセス制御機構ではありませんが、これを使用すると、サービスのエンドポイントにアクセスできる ID のセットを制限することで、サービスへのアクセスを制御できます。メンバーシップ機能には、ユーザー名\/パスワードの組み合わせを設定できるデータベースが含まれています。この組み合わせによって、Web サイトのユーザーはサイトのアカウントを確立できます。ユーザーがメンバーシップ プロバイダーを使用するサービスにアクセスするには、自分の名前とパスワードを使用してログオンする必要があります。 + +> [!NOTE] +> [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが認証のために使用できるように、最初にこの [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 機能を使用してデータベースを設定しておく必要があります。 + + また、このメンバーシップ機能を使用すると、既存の [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サイトにメンバーシップ データベースが既にある場合に、同じユーザー名とパスワードで承認された同じユーザーがサービスを使用できるようになります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでのメンバーシップ プロバイダーの使用[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : ASP.NET メンバーシップ プロバイダーを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider.md)」を参照してください。 + +## ASP.NET ロール プロバイダー + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] には、ロールを使用して承認を管理する機能もあります。[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダーを使用すると、開発者は、ユーザーのロールを作成し、各ユーザーを 1 つまたは複数のロールに割り当てることができます。メンバーシップ プロバイダーと同様に、ロールと割り当てはデータベースに格納され、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダーの特定の実装によって提供されるツールを使用して設定できます。また、メンバーシップ機能と同様に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 開発者は、データベースの情報を使用してサービス ユーザーをロール別に承認できます。たとえば、上記の `PrincipalPermissionAttribute` アクセス制御機構と組み合わせてロール プロバイダーを使用できます。 + + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダーは、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダー データベースが既に存在し、同じルールとユーザー割り当てのセットを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスで利用する場合にも使用できます。 + + ロール プロバイダー機能の使用[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : ASP.NET のロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md)」を参照してください。 + +## 承認マネージャー + さらに、承認マネージャー \(AzMan\) と [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダーを組み合わせてクライアントを承認する機能もあります。Web サービスを [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] によってホストする場合は、サービスの承認が AzMan 経由で行われるように AzMan をアプリケーションに統合できます。[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール マネージャーは、アプリケーション ロールの管理、ロールへのユーザーの追加と削除、およびロール メンバーシップのチェックを実行できるようにする API を提供しますが、指定されたタスクまたは操作の実行がユーザーに許可されているかどうかを照会する機能は提供しません。AzMan を使用すると、個々の操作を定義してタスクに結合できます。AZMan では、ロールのチェックだけでなく、ユーザーがタスクを実行できるかどうかをチェックすることもできます。ロールの割り当てとタスクの承認は、アプリケーションの外部で構成することも、アプリケーション内でプログラムによって実行することもできます。AzMan 管理 Microsoft 管理コンソール \(MMC: Microsoft Management Console\) スナップインにより、管理者は、ロールが実行時に実行できるタスクを変更したり、ユーザーのロール メンバーシップを管理したりできます。 + + また、AzMan と [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダーは、既存の AzMan インストールに既にアクセスでき、AzMan とロール プロバイダーの組み合わせの機能を使用してサービス ユーザーを承認する場合にも使用できます。 + + AzMan と [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダー[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[How To: ASP.NET 2.0 で Authorization Manager \(AzMan\) を使用する方法](http://go.microsoft.com/fwlink/?LinkId=88951)」を参照してください。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでの AzMan とロール プロバイダーの使用方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : ASP.NET の承認マネージャー ロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-authorization-manager-role-provider-with-a-service.md)」を参照してください。 + +## ID モデル + ID モデルは、クライアントを承認するためのクレームとポリシーを管理できるようにする API のセットです。ID モデルを使用すると、呼び出し元がサービスに対するそれ自体の認証に使用した資格情報に含まれるすべてのクレームを調べ、それらをサービスのポリシー セットと比較し、この比較に基づいてアクセスを許可または拒否できます。 + + アクセスを許可する前に、微調整と、特定の条件を設定する機能が必要な場合は、ID モデルを使用します。たとえば、 を使用した場合、条件は、ユーザー ID が認証され、それが特定のロールに属するということだけになります。これに対し、ID モデルを使用すると、ドキュメントの参照を許可されるにはユーザーが 18 才以上であり、有効な運転免許証を所有している必要があることを明確に示すポリシーを作成できます。 + + ID モデルのクレームに基づくアクセス制御の恩恵を受けることができる例として、発行済みトークンのシナリオでフェデレーション資格情報を使用する場合が挙げられます。フェデレーションと発行済みトークン[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md)」を参照してください。 + + ID モデル[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md)」を参照してください。 + +## 参照 + + [方法 : PrincipalPermissionAttribute クラスでアクセスを制限する](../../../../docs/framework/wcf/how-to-restrict-access-with-the-principalpermissionattribute-class.md) + [方法 : ASP.NET のロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md) + [方法 : ASP.NET の承認マネージャー ロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-authorization-manager-role-provider-with-a-service.md) + [ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) + [委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/accessing-identity-information-inside-a-workflow-service.md b/docs/framework/wcf/feature-details/accessing-identity-information-inside-a-workflow-service.md new file mode 100644 index 00000000000..7edae9144db --- /dev/null +++ b/docs/framework/wcf/feature-details/accessing-identity-information-inside-a-workflow-service.md @@ -0,0 +1,605 @@ +--- +title: "ワークフロー サービス内部の ID 情報へのアクセス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0b832127-b35b-468e-a45f-321381170cbc +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# ワークフロー サービス内部の ID 情報へのアクセス +ワークフロー サービス内の ID 情報にアクセスするには、カスタム実行プロパティに インターフェイスを実装する必要があります。 System.Activities.ExecutionProperties)?qualifyHint=False&autoUpgrade=True メソッドで、 にアクセスして ID 情報にアクセスできます。このトピックでは、この実行プロパティを実装する方法に加え、実行時にこのプロパティを アクティビティに提示するカスタム アクティビティの実装方法を順に説明します。このカスタム アクティビティが行う動作は、 アクティビティと同じですが、 がその内部に配置される場合は、 が呼び出されて ID 情報を取得します。 + +### IReceiveMessageCallback の実装 + +1. 空の [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] ソリューションを作成します。 + +2. `Service` という新しいコンソール アプリケーションをソリューションに追加します。 + +3. 次のアセンブリへの参照を追加します。 + + 1. System.Runtime.Serialization + + 2. System.ServiceModel + + 3. System.ServiceModel.Activities + +4. 次の例に示すように、`AccessIdentityCallback` という新しいクラスを追加し、 を実装します。 + + ```csharp + class AccessIdentityCallback : IReceiveMessageCallback + { + public void OnReceiveMessage(System.ServiceModel.OperationContext operationContext, System.Activities.ExecutionProperties activityExecutionProperties) + { + try + { + Console.WriteLine("Received a message from a workflow with the following identity"); + Console.WriteLine("Windows Identity Name: {0}", operationContext.ServiceSecurityContext.WindowsIdentity.Name); + Console.WriteLine("Windows Identity User: {0}", operationContext.ServiceSecurityContext.WindowsIdentity.User); + Console.WriteLine("Windows Identity IsAuthenticated: {0}", operationContext.ServiceSecurityContext.WindowsIdentity.IsAuthenticated); + } + catch (Exception ex) + { + Console.WriteLine("An exception occurred: " + ex.Message); + } + } + } + + ``` + + このコードでは、メソッドに渡される を使用して ID 情報にアクセスします。 + +### IReceiveMessageCallback 実装を NativeActivityContext に追加するためのネイティブ アクティビティの実装 + +1. から派生した `AccessIdentityScope` という新しいクラスを追加します。 + +2. 子アクティビティ、変数、現在のアクティビティ インデックス、および コールバックを追跡するためのローカル変数を追加します。 + + ``` + public sealed class AccessIdentityScope : NativeActivity + { + Collection children; + Collection variables; + Variable currentIndex; + CompletionCallback onChildComplete; + } + + ``` + +3. コンストラクターを実装します。 + + ``` + public AccessIdentityScope() : base() + { + this.children = new Collection(); + this.variables = new Collection(); + this.currentIndex = new Variable(); + } + + ``` + +4. `Activities` プロパティと `Variables` プロパティを実装します。 + + ``` + public Collection Activities + { + get { return this.children; } + } + + public Collection Variables + { + get { return this.variables; } + } + + ``` + +5. をオーバーライドします。 + + ``` + protected override void CacheMetadata(NativeActivityMetadata metadata) + { + //call base.CacheMetadata to add the Activities and Variables to this activity's metadata + base.CacheMetadata(metadata); + //add the private implementation variable: currentIndex + metadata.AddImplementationVariable(this.currentIndex); + } + + ``` + +6. をオーバーライドします。 + + ``` + protected override void Execute(NativeActivityContext context) + { + // Add the IReceiveMessageCallback implementation as an Execution property + context.Properties.Add("AccessIdentityCallback", new AccessIdentityCallback()); + InternalExecute(context, null); + } + + void InternalExecute(NativeActivityContext context, ActivityInstance instance) + { + //grab the index of the current Activity + int currentActivityIndex = this.currentIndex.Get(context); + if (currentActivityIndex == Activities.Count) + { + //if the currentActivityIndex is equal to the count of MySequence's Activities + //MySequence is complete + return; + } + + if (this.onChildComplete == null) + { + //on completion of the current child, have the runtime call back on this method + this.onChildComplete = new CompletionCallback(InternalExecute); + } + + //grab the next Activity in MySequence.Activities and schedule it + Activity nextChild = Activities[currentActivityIndex]; + context.ScheduleActivity(nextChild, this.onChildComplete); + + //increment the currentIndex + this.currentIndex.Set(context, ++currentActivityIndex); + } + + ``` + +### ワークフロー サービスの実装 + +1. 既存の `Program` クラスを開きます。 + +2. 次の定数を定義します。 + + ``` + class Program + { + const string addr = "http://localhost:8080/Service"; + static XName contract = XName.Get("IService", "http://tempuri.org"); + } + + ``` + +3. ワークフロー サービスを作成する `GetWorkflowService` という静的メソッドを追加します。 + + ``` + static Activity GetServiceWorkflow() + { + Variable echoString = new Variable(); + + // Create the Receive activity + Receive echoRequest = new Receive + { + CanCreateInstance = true, + ServiceContractName = contract, + OperationName = "Echo", + Content = new ReceiveParametersContent() + { + Parameters = { { "echoString", new OutArgument(echoString) } } + } + }; + + return new AccessIdentityScope + { + Variables = { echoString }, + Activities = + { + echoRequest, + new WriteLine { Text = new InArgument( (e) => "Received: " + echoString.Get(e) ) }, + new SendReply + { + Request = echoRequest, + Content = new SendParametersContent() + { + Parameters = { { "result", new InArgument(echoString) } } + } + } + } + }; + } + + ``` + +4. 既存の `Main` メソッドで、ワークフロー サービスをホストします。 + + ``` + static void Main(string[] args) + { + string addr = "http://localhost:8080/Service"; + + using (WorkflowServiceHost host = new WorkflowServiceHost(GetServiceWorkflow())) + { + WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message); + host.AddServiceEndpoint(contract, binding, addr); + + host.Open(); + Console.WriteLine("Service waiting at: " + addr); + Console.WriteLine("Press [ENTER] to exit"); + Console.ReadLine(); + host.Close(); + } + } + + ``` + +### ワークフロー クライアントの実装 + +1. `Client` という新しいコンソール アプリケーション プロジェクトを作成します。 + +2. 次のアセンブリへの参照を追加します。 + + 1. System.Activities + + 2. System.ServiceModel + + 3. System.ServiceModel.Activities + +3. 生成された Program.cs ファイルを開き、`GetClientWorkflow` という静的メソッドを追加してクライアント ワークフローを作成します。 + + ``` + static Activity GetClientWorkflow() + { + Variable echoString = new Variable(); + + Endpoint clientEndpoint = new Endpoint + { + Binding = new WSHttpBinding(SecurityMode.Message), + AddressUri = new Uri("http://localhost:8080/Service") + }; + + Send echoRequest = new Send + { + Endpoint = clientEndpoint, + ServiceContractName = XName.Get("IService", "http://tempuri.org"), + OperationName = "Echo", + Content = new SendParametersContent() + { + Parameters = { { "echoString", new InArgument("Hello, World") } } + } + }; + + return new Sequence + { + Variables = { echoString }, + Activities = + { + new CorrelationScope + { + Body = new Sequence + { + Activities = + { + echoRequest, + new ReceiveReply + { + Request = echoRequest, + Content = new ReceiveParametersContent + { + Parameters = { { "result", new OutArgument(echoString) } } + } + } + } + } + }, + new WriteLine { Text = new InArgument( (e) => "Received Text: " + echoString.Get(e) ) }, + } + }; + } + } + + ``` + +4. 次のホスティング コードを `Main()` メソッドに追加します。 + + ``` + static void Main(string[] args) + { + Activity workflow = GetClientWorkflow(); + WorkflowInvoker.Invoke(workflow); + WorkflowInvoker.Invoke(workflow); + Console.WriteLine("Press [ENTER] to exit"); + Console.ReadLine(); + } + + ``` + +## 使用例 + このトピックで使用されているソース コードの完全な一覧を次に示します。 + +``` + +// AccessIdentityCallback.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.ServiceModel; +using System.ServiceModel.Activities; + +namespace Microsoft.Samples.AccessingOperationContext.Service +{ + class AccessIdentityCallback : IReceiveMessageCallback + { + public const string HeaderName = "InstanceIdHeader"; + public const string HeaderNS = "http://Microsoft.Samples.AccessingOperationContext"; + + public void OnReceiveMessage(System.ServiceModel.OperationContext operationContext, System.Activities.ExecutionProperties activityExecutionProperties) + { + try + { + // Guid instanceId = operationContext.IncomingMessageHeaders.GetHeader(HeaderName, HeaderNS); + Console.WriteLine("Received a message from a workflow with the following identity" ); // with instanceId = {0}", instanceId); + Console.WriteLine("Windows Identity Name: {0}", operationContext.ServiceSecurityContext.WindowsIdentity.Name); + Console.WriteLine("Windows Identity User: {0}", operationContext.ServiceSecurityContext.WindowsIdentity.User); + Console.WriteLine("Windows Identity IsAuthenticated: {0}", operationContext.ServiceSecurityContext.WindowsIdentity.IsAuthenticated); + } + catch (MessageHeaderException) + { + Console.WriteLine("This message must not be from a workflow."); + } + catch (Exception ex) + { + Console.WriteLine("An exception occurred: " + ex.Message); + } + } + } +} + +``` + +``` + +// AccessIdentityScope.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System.Activities; +using System.Collections.ObjectModel; + +namespace Microsoft.Samples.AccessingOperationContext.Service +{ + public sealed class AccessIdentityScope : NativeActivity + { + Collection children; + Collection variables; + Variable currentIndex; + CompletionCallback onChildComplete; + + public AccessIdentityScope() + : base() + { + this.children = new Collection(); + this.variables = new Collection(); + this.currentIndex = new Variable(); + } + + public Collection Activities + { + get + { + return this.children; + } + } + + public Collection Variables + { + get + { + return this.variables; + } + } + + protected override void CacheMetadata(NativeActivityMetadata metadata) + { + //call base.CacheMetadata to add the Activities and Variables to this activity's metadata + base.CacheMetadata(metadata); + //add the private implementation variable: currentIndex + metadata.AddImplementationVariable(this.currentIndex); + } + + protected override void Execute( + NativeActivityContext context) + { + context.Properties.Add("AccessIdentityCallback", new AccessIdentityCallback()); + InternalExecute(context, null); + } + + void InternalExecute(NativeActivityContext context, ActivityInstance instance) + { + //grab the index of the current Activity + int currentActivityIndex = this.currentIndex.Get(context); + if (currentActivityIndex == Activities.Count) + { + //if the currentActivityIndex is equal to the count of MySequence's Activities + //MySequence is complete + return; + } + + if (this.onChildComplete == null) + { + //on completion of the current child, have the runtime call back on this method + this.onChildComplete = new CompletionCallback(InternalExecute); + } + + //grab the next Activity in MySequence.Activities and schedule it + Activity nextChild = Activities[currentActivityIndex]; + context.ScheduleActivity(nextChild, this.onChildComplete); + + //increment the currentIndex + this.currentIndex.Set(context, ++currentActivityIndex); + } + } +} + +``` + +``` + +// Service.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.Activities; +using System.Activities.Statements; +using System.ServiceModel; +using System.ServiceModel.Activities; +using System.Xml.Linq; + +namespace Microsoft.Samples.AccessingOperationContext.Service +{ + class Program + { + const string addr = "http://localhost:8080/Service"; + static XName contract = XName.Get("IService", "http://tempuri.org"); + + static void Main(string[] args) + { + string addr = "http://localhost:8080/Service"; + + using (WorkflowServiceHost host = new WorkflowServiceHost(GetServiceWorkflow())) + { + WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message); + host.AddServiceEndpoint(contract, binding, addr); + + host.Open(); + Console.WriteLine("Service waiting at: " + addr); + Console.WriteLine("Press [ENTER] to exit"); + Console.ReadLine(); + host.Close(); + } + + } + + static Activity GetServiceWorkflow() + { + Variable echoString = new Variable(); + + Receive echoRequest = new Receive + { + CanCreateInstance = true, + ServiceContractName = contract, + OperationName = "Echo", + Content = new ReceiveParametersContent() + { + Parameters = { { "echoString", new OutArgument(echoString) } } + } + }; + + return new AccessIdentityScope + { + Variables = { echoString }, + Activities = + { + echoRequest, + new WriteLine { Text = new InArgument( (e) => "Received: " + echoString.Get(e) ) }, + new SendReply + { + Request = echoRequest, + Content = new SendParametersContent() + { + Parameters = { { "result", new InArgument(echoString) } } + } + } + } + }; + } + } +} + +``` + +``` + +// client.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.Activities; +using System.Activities.Statements; +using System.ServiceModel; +using System.ServiceModel.Activities; +using System.Xml.Linq; + +namespace Microsoft.Samples.AccessingOperationContext.Client +{ + class Program + { + static void Main(string[] args) + { + Activity workflow = GetClientWorkflow(); + WorkflowInvoker.Invoke(workflow); + WorkflowInvoker.Invoke(workflow); + Console.WriteLine("Press [ENTER] to exit"); + Console.ReadLine(); + } + + static Activity GetClientWorkflow() + { + Variable echoString = new Variable(); + + Endpoint clientEndpoint = new Endpoint + { + Binding = new WSHttpBinding(SecurityMode.Message), + AddressUri = new Uri("http://localhost:8080/Service") + }; + + Send echoRequest = new Send + { + Endpoint = clientEndpoint, + ServiceContractName = XName.Get("IService", "http://tempuri.org"), + OperationName = "Echo", + Content = new SendParametersContent() + { + Parameters = { { "echoString", new InArgument("Hello, World") } } + } + }; + + return new Sequence + { + Variables = { echoString }, + Activities = + { + new CorrelationScope + { + Body = new Sequence + { + Activities = + { + echoRequest, + new ReceiveReply + { + Request = echoRequest, + Content = new ReceiveParametersContent + { + Parameters = { { "result", new OutArgument(echoString) } } + } + } + } + } + }, + new WriteLine { Text = new InArgument( (e) => "Received Text: " + echoString.Get(e) ) }, + } + }; + } + } +} + +``` + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [OperationContext へのアクセス](../../../../docs/framework/windows-workflow-foundation/samples/accessing-operationcontext.md) + [命令型コードを使用してワークフロー、アクティビティ、および式を作成する方法](../../../../docs/framework/windows-workflow-foundation//authoring-workflows-activities-and-expressions-using-imperative-code.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/accessing-operationcontext-from-a-workflow-service.md b/docs/framework/wcf/feature-details/accessing-operationcontext-from-a-workflow-service.md new file mode 100644 index 00000000000..f37f926a5dd --- /dev/null +++ b/docs/framework/wcf/feature-details/accessing-operationcontext-from-a-workflow-service.md @@ -0,0 +1,875 @@ +--- +title: "ワークフロー サービスから OperationContext へのアクセス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b1dafe55-a20e-4db0-9ac8-90c315883cdd +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# ワークフロー サービスから OperationContext へのアクセス +ワークフロー サービス内の にアクセスするには、カスタム実行プロパティに インターフェイスを実装する必要があります。これには、 への参照が渡される System.Activities.ExecutionProperties)?qualifyHint=False&autoUpgrade=True メソッドをオーバーライドします。このトピックでは、カスタム ヘッダーを取得するためにこの実行プロパティを実装する方法に加え、実行時にこのプロパティを に提示するカスタム アクティビティの実装方法を順に説明します。このカスタム アクティビティが行う動作は、 アクティビティと同じですが、 がその内部に配置されるのに対し、 は呼び出されて 情報を取得します。このトピックでは、クライアント側 にアクセスして、 インターフェイス経由で送信ヘッダーを追加する方法も説明します。 + +### サービス側の IReceiveMessageCallback の実装 + +1. 空の [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] ソリューションを作成します。 + +2. `Service` という新しいコンソール アプリケーションをソリューションに追加します。 + +3. 次のアセンブリへの参照を追加します。 + + 1. System.Runtime.Serialization + + 2. System.ServiceModel + + 3. System.ServiceModel.Activities + +4. 次の例に示すように、`ReceiveInstanceIdCallback` という新しいクラスを追加し、 を実装します。 + + ```csharp + class ReceiveInstanceIdCallback : IReceiveMessageCallback + { + public const string HeaderName = "InstanceIdHeader"; + public const string HeaderNS = "http://Microsoft.Samples.AccessingOperationContext"; + + public void OnReceiveMessage(System.ServiceModel.OperationContext operationContext, System.Activities.ExecutionProperties activityExecutionProperties) + { + try + { + Guid instanceId = operationContext.IncomingMessageHeaders.GetHeader(HeaderName, HeaderNS); + Console.WriteLine("Received a message from a workflow with instanceId = {0}", instanceId); + } + catch (MessageHeaderException) + { + Console.WriteLine("This message must not be from a workflow."); + } + } + } + + ``` + + このコードでは、メソッドに渡される を使用して、着信メッセージのヘッダーにアクセスします。 + +### IReceiveMessageCallback 実装を NativeActivityContext に追加するためのサービス側のネイティブ アクティビティの実装 + +1. から派生した `ReceiveInstanceIdScope` という新しいクラスを追加します。 + +2. 子アクティビティ、変数、現在のアクティビティ インデックス、および コールバックを追跡するためのローカル変数を追加します。 + + ``` + public sealed class ReceiveInstanceIdScope : NativeActivity + { + Collection children; + Collection variables; + Variable currentIndex; + CompletionCallback onChildComplete; + } + + ``` + +3. コンストラクターを実装します。 + + ``` + public ReceiveInstanceIdScope() + : base() + { + this.children = new Collection(); + this.variables = new Collection(); + this.currentIndex = new Variable(); + } + } + + ``` + +4. `Activities` プロパティと `Variables` プロパティを実装します。 + + ``` + public Collection Activities + { + get { return this.children; } + } + + public Collection Variables + { + get { return this.variables; } + } + + ``` + +5. をオーバーライドします。 + + ``` + protected override void CacheMetadata(NativeActivityMetadata metadata) + { + //call base.CacheMetadata to add the Activities and Variables to this activity's metadata + base.CacheMetadata(metadata); + //add the private implementation variable: currentIndex + metadata.AddImplementationVariable(this.currentIndex); + } + + ``` + +6. をオーバーライドします。 + + ``` + protected override void Execute( + NativeActivityContext context) + { + context.Properties.Add("ReceiveInstanceIdCallback", new ReceiveInstanceIdCallback()); + InternalExecute(context, null); + } + + void InternalExecute(NativeActivityContext context, ActivityInstance instance) + { + //grab the index of the current Activity + int currentActivityIndex = this.currentIndex.Get(context); + if (currentActivityIndex == Activities.Count) + { + //if the currentActivityIndex is equal to the count of MySequence's Activities + //MySequence is complete + return; + } + + if (this.onChildComplete == null) + { + //on completion of the current child, have the runtime call back on this method + this.onChildComplete = new CompletionCallback(InternalExecute); + } + + //grab the next Activity in MySequence.Activities and schedule it + Activity nextChild = Activities[currentActivityIndex]; + context.ScheduleActivity(nextChild, this.onChildComplete); + + //increment the currentIndex + this.currentIndex.Set(context, ++currentActivityIndex); + } + + ``` + +### ワークフロー サービスの実装 + +1. 既存の `Program` クラスを開きます。 + +2. 次の定数を定義します。 + + ``` + class Program + { + const string addr = "http://localhost:8080/Service"; + static XName contract = XName.Get("IService", "http://tempuri.org"); + } + + ``` + +3. ワークフロー サービスを作成する `GetWorkflowService` という静的メソッドを追加します。 + + ``` + static Activity GetServiceWorkflow() + { + Variable echoString = new Variable(); + + Receive echoRequest = new Receive + { + CanCreateInstance = true, + ServiceContractName = contract, + OperationName = "Echo", + Content = new ReceiveParametersContent() + { + Parameters = { { "echoString", new OutArgument(echoString) } } + } + }; + + return new ReceiveInstanceIdScope + { + Variables = { echoString }, + Activities = + { + echoRequest, + new WriteLine { Text = new InArgument( (e) => "Received: " + echoString.Get(e) ) }, + new SendReply + { + Request = echoRequest, + Content = new SendParametersContent() + { + Parameters = { { "result", new InArgument(echoString) } } + } + } + } + }; + } + + ``` + +4. 既存の `Main` メソッドで、ワークフロー サービスをホストします。 + + ``` + static void Main(string[] args) + { + string addr = "http://localhost:8080/Service"; + + using (WorkflowServiceHost host = new WorkflowServiceHost(GetServiceWorkflow())) + { + host.AddServiceEndpoint(contract, new BasicHttpBinding(), addr); + + host.Open(); + Console.WriteLine("Service waiting at: " + addr); + Console.WriteLine("Press [ENTER] to exit"); + Console.ReadLine(); + host.Close(); + } + } + + ``` + +### クライアント側の ISendMessageCallback の実装 + +1. `Service` という新しいコンソール アプリケーションをソリューションに追加します。 + +2. 次のアセンブリへの参照を追加します。 + + 1. System.Runtime.Serialization + + 2. System.ServiceModel + + 3. System.ServiceModel.Activities + +3. 次の例に示すように、`SendInstanceIdCallback` という新しいクラスを追加し、 を実装します。 + + ```csharp + class SendInstanceIdCallback : ISendMessageCallback + { + public const string HeaderName = "InstanceIdHeader"; + public const string HeaderNS = "http://Microsoft.Samples.AccessingOperationContext"; + + public Guid InstanceId { get; set; } + + public void OnSendMessage(System.ServiceModel.OperationContext operationContext) + { + operationContext.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader(HeaderName, HeaderNS, this.InstanceId)); + } + } + + ``` + + このコードでは、メソッドに渡される を使用して、着信メッセージにカスタム ヘッダーを追加します。 + +### クライアント側の ISendMessageCallback 実装を NativeActivityContext に追加するためのクライアント側のネイティブ アクティビティの実装 + +1. から派生した `SendInstanceIdScope` という新しいクラスを追加します。 + +2. 子アクティビティ、変数、現在のアクティビティ インデックス、および コールバックを追跡するためのローカル変数を追加します。 + + ``` + public sealed class SendInstanceIdScope : NativeActivity + { + Collection children; + Collection variables; + Variable currentIndex; + CompletionCallback onChildComplete; + } + + ``` + +3. コンストラクターを実装します。 + + ``` + public SendInstanceIdScope() + : base() + { + this.children = new Collection(); + this.variables = new Collection(); + this.currentIndex = new Variable(); + } + + ``` + +4. `Activities` プロパティと `Variables` プロパティを実装します。 + + ``` + public Collection Activities + { + get { return this.children; } + } + + public Collection Variables + { + get { return this.variables; } + } + + ``` + +5. をオーバーライドします。 + + ``` + protected override void CacheMetadata(NativeActivityMetadata metadata) + { + //call base.CacheMetadata to add the Activities and Variables to this activity's metadata + base.CacheMetadata(metadata); + //add the private implementation variable: currentIndex + metadata.AddImplementationVariable(this.currentIndex); + } + + ``` + +6. をオーバーライドします。 + + ``` + protected override void Execute( + NativeActivityContext context) + { + context.Properties.Add("SendInstanceIdCallback", new SendInstanceIdCallback() { InstanceId = context.WorkflowInstanceId }); + InternalExecute(context, null); + } + + void InternalExecute(NativeActivityContext context, ActivityInstance instance) + { + //grab the index of the current Activity + int currentActivityIndex = this.currentIndex.Get(context); + if (currentActivityIndex == Activities.Count) + { + //if the currentActivityIndex is equal to the count of MySequence's Activities + //MySequence is complete + return; + } + + if (this.onChildComplete == null) + { + //on completion of the current child, have the runtime call back on this method + this.onChildComplete = new CompletionCallback(InternalExecute); + } + + //grab the next Activity in MySequence.Activities and schedule it + Activity nextChild = Activities[currentActivityIndex]; + context.ScheduleActivity(nextChild, this.onChildComplete); + + //increment the currentIndex + this.currentIndex.Set(context, ++currentActivityIndex); + } + protected override void Execute( + NativeActivityContext context) + { + context.Properties.Add("ReceiveInstanceIdCallback", new ReceiveInstanceIdCallback()); + InternalExecute(context, null); + } + + void InternalExecute(NativeActivityContext context, ActivityInstance instance) + { + //grab the index of the current Activity + int currentActivityIndex = this.currentIndex.Get(context); + if (currentActivityIndex == Activities.Count) + { + //if the currentActivityIndex is equal to the count of MySequence's Activities + //MySequence is complete + return; + } + + if (this.onChildComplete == null) + { + //on completion of the current child, have the runtime call back on this method + this.onChildComplete = new CompletionCallback(InternalExecute); + } + + //grab the next Activity in MySequence.Activities and schedule it + Activity nextChild = Activities[currentActivityIndex]; + context.ScheduleActivity(nextChild, this.onChildComplete); + + //increment the currentIndex + this.currentIndex.Set(context, ++currentActivityIndex); + } + + ``` + +### ワークフロー クライアントの実装 + +1. `Client` という新しいコンソール アプリケーション プロジェクトを作成します。 + +2. 次のアセンブリへの参照を追加します。 + + 1. System.Activities + + 2. System.ServiceModel + + 3. System.ServiceModel.Activities + +3. 生成された Program.cs ファイルを開き、`GetClientWorkflow` という静的メソッドを追加してクライアント ワークフローを作成します。 + + ``` + static Activity GetClientWorkflow() + { + Variable echoString = new Variable(); + + // Define the endpoint + Endpoint clientEndpoint = new Endpoint + { + Binding = new BasicHttpBinding(), + AddressUri = new Uri("http://localhost:8080/Service") + }; + + // Configure the Send activity used to send a message + Send echoRequest = new Send + { + Endpoint = clientEndpoint, + ServiceContractName = XName.Get("IService", "http://tempuri.org"), + OperationName = "Echo", + Content = new SendParametersContent() + { + Parameters = { { "echoString", new InArgument("Hello, World") } } + } + }; + + // Place the Send activity in a SendInstanceIdScope. This hooks up the ISendMessageCallback + // implementation to the client workflow. + return new SendInstanceIdScope + { + Variables = { echoString }, + Activities = + { + new CorrelationScope + { + Body = new Sequence + { + Activities = + { + // Send the request message + echoRequest, + + // Receive the reply from the service + new ReceiveReply + { + Request = echoRequest, + Content = new ReceiveParametersContent + { + Parameters = { { "result", new OutArgument(echoString) } } + } + } + } + } + }, + new WriteLine { Text = new InArgument( (e) => "Received Text: " + echoString.Get(e) ) }, + } + }; + } + + ``` + +4. 次のホスティング コードを `Main()` メソッドに追加します。 + + ``` + static void Main(string[] args) + { + Activity workflow = GetClientWorkflow(); + WorkflowInvoker.Invoke(workflow); + WorkflowInvoker.Invoke(workflow); + Console.WriteLine("Press [ENTER] to exit"); + Console.ReadLine(); + } + + ``` + +## 使用例 + このトピックで使用されているソース コードの完全な一覧を次に示します。 + +``` +// ReceiveInstanceIdScope.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System.Activities; +using System.Collections.ObjectModel; + +namespace Microsoft.Samples.AccessingOperationContext.Service +{ + public sealed class ReceiveInstanceIdScope : NativeActivity + { + Collection children; + Collection variables; + Variable currentIndex; + CompletionCallback onChildComplete; + + public ReceiveInstanceIdScope() + : base() + { + this.children = new Collection(); + this.variables = new Collection(); + this.currentIndex = new Variable(); + } + + public Collection Activities + { + get + { + return this.children; + } + } + + public Collection Variables + { + get + { + return this.variables; + } + } + + protected override void CacheMetadata(NativeActivityMetadata metadata) + { + //call base.CacheMetadata to add the Activities and Variables to this activity's metadata + base.CacheMetadata(metadata); + //add the private implementation variable: currentIndex + metadata.AddImplementationVariable(this.currentIndex); + } + + protected override void Execute( + NativeActivityContext context) + { + context.Properties.Add("ReceiveInstanceIdCallback", new ReceiveInstanceIdCallback()); + InternalExecute(context, null); + } + + void InternalExecute(NativeActivityContext context, ActivityInstance instance) + { + //grab the index of the current Activity + int currentActivityIndex = this.currentIndex.Get(context); + if (currentActivityIndex == Activities.Count) + { + //if the currentActivityIndex is equal to the count of MySequence's Activities + //MySequence is complete + return; + } + + if (this.onChildComplete == null) + { + //on completion of the current child, have the runtime call back on this method + this.onChildComplete = new CompletionCallback(InternalExecute); + } + + //grab the next Activity in MySequence.Activities and schedule it + Activity nextChild = Activities[currentActivityIndex]; + context.ScheduleActivity(nextChild, this.onChildComplete); + + //increment the currentIndex + this.currentIndex.Set(context, ++currentActivityIndex); + } + } +} + +``` + +``` +// ReceiveInstanceIdScope.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.ServiceModel; +using System.ServiceModel.Activities; + +namespace Microsoft.Samples.AccessingOperationContext.Service +{ + class ReceiveInstanceIdCallback : IReceiveMessageCallback + { + public const string HeaderName = "InstanceIdHeader"; + public const string HeaderNS = "http://Microsoft.Samples.AccessingOperationContext"; + + public void OnReceiveMessage(System.ServiceModel.OperationContext operationContext, System.Activities.ExecutionProperties activityExecutionProperties) + { + try + { + Guid instanceId = operationContext.IncomingMessageHeaders.GetHeader(HeaderName, HeaderNS); + Console.WriteLine("Received a message from a workflow with instanceId = {0}", instanceId); + } + catch (MessageHeaderException) + { + Console.WriteLine("This message must not be from a workflow."); + } + } + } +} + +``` + +``` +// Service.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.Activities; +using System.Activities.Statements; +using System.ServiceModel; +using System.ServiceModel.Activities; +using System.Xml.Linq; + +namespace Microsoft.Samples.AccessingOperationContext.Service +{ + class Program + { + const string addr = "http://localhost:8080/Service"; + static XName contract = XName.Get("IService", "http://tempuri.org"); + + static void Main(string[] args) + { + string addr = "http://localhost:8080/Service"; + + using (WorkflowServiceHost host = new WorkflowServiceHost(GetServiceWorkflow())) + { + host.AddServiceEndpoint(contract, new BasicHttpBinding(), addr); + + host.Open(); + Console.WriteLine("Service waiting at: " + addr); + Console.WriteLine("Press [ENTER] to exit"); + Console.ReadLine(); + host.Close(); + } + + } + + static Activity GetServiceWorkflow() + { + Variable echoString = new Variable(); + + Receive echoRequest = new Receive + { + CanCreateInstance = true, + ServiceContractName = contract, + OperationName = "Echo", + Content = new ReceiveParametersContent() + { + Parameters = { { "echoString", new OutArgument(echoString) } } + } + }; + + return new ReceiveInstanceIdScope + { + Variables = { echoString }, + Activities = + { + echoRequest, + new WriteLine { Text = new InArgument( (e) => "Received: " + echoString.Get(e) ) }, + new SendReply + { + Request = echoRequest, + Content = new SendParametersContent() + { + Parameters = { { "result", new InArgument(echoString) } } + } + } + } + }; + } + } + +} + +``` + +``` +// SendInstanceIdCallback.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.ServiceModel.Activities; +using System.ServiceModel.Channels; + +namespace Microsoft.Samples.AccessingOperationContext.Client +{ + class SendInstanceIdCallback : ISendMessageCallback + { + public const string HeaderName = "InstanceIdHeader"; + public const string HeaderNS = "http://Microsoft.Samples.AccessingOperationContext"; + + public Guid InstanceId { get; set; } + + public void OnSendMessage(System.ServiceModel.OperationContext operationContext) + { + operationContext.OutgoingMessageHeaders.Add(MessageHeader.CreateHeader(HeaderName, HeaderNS, this.InstanceId)); + } + } +} + +``` + +``` +// SendInstanceIdScope.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System.Activities; +using System.Collections.ObjectModel; + +namespace Microsoft.Samples.AccessingOperationContext.Client +{ + public sealed class SendInstanceIdScope : NativeActivity + { + Collection children; + Collection variables; + Variable currentIndex; + CompletionCallback onChildComplete; + + public SendInstanceIdScope() + : base() + { + this.children = new Collection(); + this.variables = new Collection(); + this.currentIndex = new Variable(); + } + + public Collection Activities + { + get + { + return this.children; + } + } + + public Collection Variables + { + get + { + return this.variables; + } + } + + protected override void CacheMetadata(NativeActivityMetadata metadata) + { + //call base.CacheMetadata to add the Activities and Variables to this activity's metadata + base.CacheMetadata(metadata); + //add the private implementation variable: currentIndex + metadata.AddImplementationVariable(this.currentIndex); + } + + protected override void Execute( + NativeActivityContext context) + { + context.Properties.Add("SendInstanceIdCallback", new SendInstanceIdCallback() { InstanceId = context.WorkflowInstanceId }); + InternalExecute(context, null); + } + + void InternalExecute(NativeActivityContext context, ActivityInstance instance) + { + //grab the index of the current Activity + int currentActivityIndex = this.currentIndex.Get(context); + if (currentActivityIndex == Activities.Count) + { + //if the currentActivityIndex is equal to the count of MySequence's Activities + //MySequence is complete + return; + } + + if (this.onChildComplete == null) + { + //on completion of the current child, have the runtime call back on this method + this.onChildComplete = new CompletionCallback(InternalExecute); + } + + //grab the next Activity in MySequence.Activities and schedule it + Activity nextChild = Activities[currentActivityIndex]; + context.ScheduleActivity(nextChild, this.onChildComplete); + + //increment the currentIndex + this.currentIndex.Set(context, ++currentActivityIndex); + } + } +} + +``` + +``` +// Client.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.Activities; +using System.Activities.Statements; +using System.ServiceModel; +using System.ServiceModel.Activities; +using System.Xml.Linq; + +namespace Microsoft.Samples.AccessingOperationContext.Client +{ + class Program + { + static void Main(string[] args) + { + Activity workflow = GetClientWorkflow(); + WorkflowInvoker.Invoke(workflow); + WorkflowInvoker.Invoke(workflow); + Console.WriteLine("Press [ENTER] to exit"); + Console.ReadLine(); + } + + static Activity GetClientWorkflow() + { + Variable echoString = new Variable(); + + Endpoint clientEndpoint = new Endpoint + { + Binding = new BasicHttpBinding(), + AddressUri = new Uri("http://localhost:8080/Service") + }; + + Send echoRequest = new Send + { + Endpoint = clientEndpoint, + ServiceContractName = XName.Get("IService", "http://tempuri.org"), + OperationName = "Echo", + Content = new SendParametersContent() + { + Parameters = { { "echoString", new InArgument("Hello, World") } } + } + }; + + return new SendInstanceIdScope + { + Variables = { echoString }, + Activities = + { + new CorrelationScope + { + Body = new Sequence + { + Activities = + { + echoRequest, + new ReceiveReply + { + Request = echoRequest, + Content = new ReceiveParametersContent + { + Parameters = { { "result", new OutArgument(echoString) } } + } + } + } + } + }, + new WriteLine { Text = new InArgument( (e) => "Received Text: " + echoString.Get(e) ) }, + } + }; + } + } +} + +``` + + コメント。省略できます。 + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [OperationContext へのアクセス](../../../../docs/framework/windows-workflow-foundation/samples/accessing-operationcontext.md) + [命令型コードを使用してワークフロー、アクティビティ、および式を作成する方法](../../../../docs/framework/windows-workflow-foundation//authoring-workflows-activities-and-expressions-using-imperative-code.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/accessing-services-using-a-client.md b/docs/framework/wcf/feature-details/accessing-services-using-a-client.md new file mode 100644 index 00000000000..986b626c3e5 --- /dev/null +++ b/docs/framework/wcf/feature-details/accessing-services-using-a-client.md @@ -0,0 +1,107 @@ +--- +title: "クライアントを使用したサービスへのアクセス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c8329832-bf66-4064-9034-bf39f153fc2d +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# クライアントを使用したサービスへのアクセス +クライアント アプリケーションがサービスと通信するには、クライアント アプリケーションで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントまたはチャネルを作成および構成し、使用する必要があります。 「[WCF クライアントの概要](../../../../docs/framework/wcf/wcf-client-overview.md)」では、オブジェクトの概要および基本的なクライアントやチャネル オブジェクトの作成と使用に関する手順を説明しています。 + + このトピックでは、ユーザーのシナリオに応じて役立つ、クライアント アプリケーション、クライアント オブジェクト、およびチャネル オブジェクトに関するいくつかの問題について詳しく説明します。 + +## 概要 + ここでは、以下の項目に関連する動作と問題について説明します。 + +- チャネルとセッションの有効期間 + +- 例外処理 + +- ブロックの問題について + +- 対話方式によるチャネルの初期化 + +### チャネルとセッションの有効期間 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションのチャネルは、データグラム チャネルとセッションフル チャネルの 2 つに分類されます。 + + *データグラム* チャネルは、含まれているすべてのメッセージとの相関関係のないチャネルです。 データグラム チャネルでは、入出力操作が失敗しても、通常、次の操作は影響を受けないので、同じチャネルの再利用が可能です。 したがって、通常、データグラム チャネルは失敗になりません。 + + 一方、*セッションフル* チャネルは、他のエンドポイントと関連付けられたチャネルです。 一方のセッション内のメッセージは、他方の同じセッションと常に関連付けられています。 さらに、セッションが成功したとみなされるためには、セッションの両参加要素が、メッセージ交換要件が満たされたということに同意する必要があります。 両参加要素が同意できない場合、セッション チャネルは失敗になる場合があります。 + + クライアントを明示的に開く場合も暗黙的に開く場合も、最初の操作を呼び出します。 + +> [!NOTE] +> 一般的に、障害が生じたセッションフル チャネルを明示的に検出することは有用ではありません。通知されるタイミングがセッションの実装により異なるためです。 たとえば、 \(信頼できるセッションは無効\) では TCP 接続のセッションが表面に出るため、サービスまたはクライアントで イベントをリッスンしていれば、ネットワーク エラーが発生すると直ちに通知される可能性があります。 一方、信頼できるセッション \( を有効化したバインディングにより確立される\) は、サービスが小さなネットワーク エラーから分離されるように設計されています。 妥当な期間内にセッションの再確立が可能な場合、信頼できるセッション用に構成された、この同じバインディングは、中断が長期間発生し続けるまでエラーにならない場合があります。 + + アプリケーション層にチャネルを公開するほとんどのシステム提供のバインディングでは、既定でセッションが使用されますが、 では使用されません。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [セッションの使用](../../../../docs/framework/wcf/using-sessions.md). + +### セッションの適切な使用 + セッションを使用すると、メッセージ交換全体が完了したかどうか、そしてメッセージ交換が成功したと両側が見なしたかどうかを認識できます。 呼び出し側のアプリケーションでは、チャネルを開き、使用して、閉じるまでを 1 つの try ブロック内で処理することをお勧めします。 セッション チャネルが開いているときに、 メソッドを 1 回呼び出して、その呼び出しが正常に返された場合、セッションは成功しています。 この場合の成功とは、バインディングにより指定されているすべての配信保証が満たされ、もう一方の側では を呼び出す前にチャネルに対して を呼び出さなかったことを意味します。 + + 次のセクションで、このクライアントによる方法の例を示します。 + +### 例外処理 + クライアント アプリケーションで例外を処理することは簡単です。 try ブロック内部でチャネルを開き、使用して、閉じた場合、例外がスローされない限り、メッセージ交換は正常に行われています。 通常、例外がスローされた場合は、メッセージ交換が中止されます。 + +> [!NOTE] +> `using` ステートメント \([!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] では `Using`\) を使用することはお勧めできません。 その理由は、`using` ステートメントの最後で例外が発生し、認識する必要のある他の例外がマスクされる可能性があるためです。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [Using ステートメントに関する問題の回避](../../../../docs/framework/wcf/samples/avoiding-problems-with-the-using-statement.md). + + 次のコード例は、`using` 文ではなく try\/catch ブロックを使用する、推奨されるクライアント パターンを示しています。 + + [!code-csharp[FaultContractAttribute#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/faultcontractattribute/cs/client.cs#3)] + [!code-vb[FaultContractAttribute#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/faultcontractattribute/vb/client.vb#3)] + +> [!NOTE] +> プロパティの値を確認すると競合状態になるので、チャネルを再利用するかどうか、またはチャネルを閉じるかどうかを決定するのにこの値を確認することは推奨されません。 + + データグラム チャネルを閉じるときに例外が発生しても、データグラム チャネルはエラーになりません。 さらに、非双方向クライアントがセキュリティで保護されたメッセージ交換を使用して認証に失敗した場合、通常、 がスローされます。 しかし、双方向クライアントがセキュリティで保護されたメッセージ交換を使用して認証に失敗した場合、クライアントは代わりに を受信します。 + + アプリケーション レベルでのエラー情報の処理の詳細については、「[コントラクトおよびサービスのエラーの指定と処理](../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md)」を参照してください。 予期される例外とその処理方法については、「[予期される例外](../../../../docs/framework/wcf/samples/expected-exceptions.md)」を参照してください。 チャネル開発時のエラーの処理方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[例外とエラーの処理](../../../../docs/framework/wcf/extending/handling-exceptions-and-faults.md)」を参照してください。 + +### クライアントのブロックとパフォーマンス + アプリケーションが要求\/応答操作を同期的に呼び出す場合、戻り値が受信されるか例外 \( など\) がスローされるまで、クライアントはブロックされます。 この動作はローカルの動作と似ています。 アプリケーションが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトまたはチャネルに対する操作を同期的に呼び出す場合、チャネル レイヤーがデータをネットワークに書き込むことができるまで、または例外がスローされるまで、クライアントに制御は戻りません。 また、一方向メッセージ交換パターン \( が `true` に設定された操作をマークすることで指定される\) では、クライアントの応答性が向上する可能性がありますが、バインディングや送信済みのメッセージによっては、一方向操作でもブロックが生じる場合があります。 一方向操作とはメッセージ交換のみを指しています。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [一方向サービス](../../../../docs/framework/wcf/feature-details/one-way-services.md). + + メッセージ交換パターンに関係なく、大規模データのチャンクによりクライアント処理が遅延する場合があります。 この問題の処理方法を理解するには、「[大規模データとストリーミング](../../../../docs/framework/wcf/feature-details/large-data-and-streaming.md)」を参照してください。 + + 操作が完了してもアプリケーションでさらに処理を行う必要がある場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントが実装するサービス コントラクト インターフェイスに非同期のメソッドのペアを作成する必要があります。 これを行うには、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) で `/async` スイッチを使用するのが最も簡単な方法です。 例については、「[方法 : サービス操作を非同期に呼び出す](../../../../docs/framework/wcf/feature-details/how-to-call-wcf-service-operations-asynchronously.md)」を参照してください。 + + クライアントのパフォーマンス向上[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[中間層クライアント アプリケーション](../../../../docs/framework/wcf/feature-details/middle-tier-client-applications.md)」を参照してください。 + +### ユーザーによる資格情報の動的選択の有効化 + インターフェイスを使用すると、アプリケーションによりユーザー インターフェイスが表示され、ユーザーが資格情報を選択できるようになります。この資格情報は、タイムアウト タイマーが開始される前に、チャネルの作成に使用されます。 + + アプリケーション開発者は、挿入された を 2 つの方法で利用できます。 チャネルを開く前 \(*明示的*方法\)、または最初の操作を呼び出す前 \(*暗黙的*方法\) に、クライアント アプリケーションで または \(または非同期バージョン\) を呼び出すことができます。 + + 暗黙的方法を使用する場合、アプリケーションは最初の操作を または 拡張に対して呼び出す必要があります。 アプリケーションが最初の操作以外の何かを呼び出した場合、例外がスローされます。 + + 明示的方法を使用する場合、アプリケーションで次の手順を順番に実行する必要があります。 + +1. または \(または非同期バージョン\) を呼び出します。 + +2. 初期化子が返された場合は、 オブジェクトまたは プロパティで返された オブジェクトの メソッドを呼び出します。 + +3. 操作を呼び出します。 + + 製品品質のアプリケーションでは、明示的な方法を採用することによってユーザー インターフェイスのプロセスを制御することをお勧めします。 + + 暗黙的な方法を使用するアプリケーションでは、ユーザー インターフェイス初期化子が呼び出されますが、このアプリケーションのユーザーがバインディングの送信タイムアウト期間内に応答できない場合、ユーザー インターフェイスが復帰すると例外がスローされます。 + +## 参照 + [双方向サービス](../../../../docs/framework/wcf/feature-details/duplex-services.md) + [方法 : 一方向コントラクトと要求\/応答コントラクトを使用してサービスにアクセスする](../../../../docs/framework/wcf/feature-details/how-to-access-wcf-services-with-one-way-and-request-reply-contracts.md) + [方法 : 双方向コントラクトを使用してサービスにアクセスする](../../../../docs/framework/wcf/feature-details/how-to-access-services-with-a-duplex-contract.md) + [方法 : WSE 3.0 サービスにアクセスする](../../../../docs/framework/wcf/feature-details/how-to-access-a-wse-3-0-service-with-a-wcf-client.md) + [方法 : ChannelFactory を使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-channelfactory.md) + [方法 : サービス操作を非同期に呼び出す](../../../../docs/framework/wcf/feature-details/how-to-call-wcf-service-operations-asynchronously.md) + [中間層クライアント アプリケーション](../../../../docs/framework/wcf/feature-details/middle-tier-client-applications.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/accessing-wcf-services-with-a-windows-store-client-app.md b/docs/framework/wcf/feature-details/accessing-wcf-services-with-a-windows-store-client-app.md new file mode 100644 index 00000000000..b7b70b7d643 --- /dev/null +++ b/docs/framework/wcf/feature-details/accessing-wcf-services-with-a-windows-store-client-app.md @@ -0,0 +1,158 @@ +--- +title: "Windows ストア クライアント アプリを使用した WCF サービスへのアクセス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e2002ef4-5dee-4a54-9d87-03b33d35fc52 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# Windows ストア クライアント アプリを使用した WCF サービスへのアクセス +Windows 8 では、Windows ストア アプリケーションと呼ばれる新しい種類のアプリケーションが導入されています。 これらのアプリケーションはタッチ スクリーンのインターフェイスを念頭にデザインされています。 .NET Framework 4.5 により、Windows ストア アプリケーションから WCF サービスを呼び出すことができます。 + +## Windows ストア アプリケーションでの WCF のサポート + WCF 機能の一部は、Windows ストア アプリケーション内から利用できます。詳細については、以降のセクションを参照してください。 + +> [!IMPORTANT] +> WCF で公開される API ではなく、WinRT 配信 API を使用してください。 詳細については、「[Windows.Web.Syndication 名前空間](http://go.microsoft.com/fwlink/?LinkId=236265)」を参照してください。 + +> [!WARNING] +> サービス参照の追加を使用して Windows ランタイム コンポーネントへの Web サービス参照を追加することはサポートされていません。 + +### サポートされているバインド + Windows ストア アプリケーションでは、以下の WCF バインドがサポートされています。 + +1. + +2. + +3. + +4. + + Windows ストア アプリケーションでは、以下のバインド要素がサポートされています。 + +1. + +2. + +3. + +4. + +5. + +6. + +7. + +8. + +9. + + テキスト エンコードとバイナリ エンコードの両方がサポートされています。 すべての WCF 転送モードがサポートされています。 詳細については、「[メッセージ転送ストリーミング](../../../../docs/framework/wcf/feature-details/streaming-message-transfer.md)」を参照してください。 + +### サービス参照の追加 + WCF サービスを Windows ストア アプリケーションから呼び出すには、Visual Studio 2012 の "サービス参照の追加" 機能を使用します。 Windows ストア アプリケーションでは、"サービス参照の追加" 機能にいくつかの変更が行われていることがわかります。 まず、構成ファイルが生成されません。 Windows ストア アプリケーションでは構成ファイルが使用されないため、コードで構成する必要があります。 この構成コードは、"サービス参照の追加" によって生成される References.cs ファイルにあります。 このファイルを表示するには、ソリューション エクスプローラーで \[すべてのファイルを表示\] を選択します。 このファイルは、\[サービス参照\] の下のプロジェクト内の Reference.svcmap ノードにあります。 Windows ストア アプリケーション内で WCF サービスに対して生成されるすべての操作は非同期で、タスク ベースの非同期パターンが使用されます。 詳細については、「[タスク ベースの非同期パターン](http://msdn.microsoft.com/magazine/ff959203.aspx)」を参照してください。 + + 構成がコードで生成されるようになったため、サービス参照を更新するたびに、Reference.cs ファイルで行ったすべての変更が上書きされます。 この状況に対処するために、構成コードは部分メソッド内に生成され、これをクライアント プロキシ クラスで実装できます。 部分メソッドは次のように宣言されています。 + +```csharp +static partial void Configure(System.ServiceModel.Description.ServiceEndpoint serviceEndpoint, System.ServiceModel.Description.ClientCredentials clientCredentials); + +``` + + その後、この部分メソッドを実装し、次のように、クライアント プロキシ クラスのバインドまたはエンドポイントを変更できます。 + +```csharp +public partial class Service1Client : System.ServiceModel.ClientBase, MetroWcfClient.ServiceRefMultiEndpt.IService1 { static partial void Configure(System.ServiceModel.Description.ServiceEndpoint serviceEndpoint, System.ServiceModel.Description.ClientCredentials clientCredentials) { if (serviceEndpoint.Name == ServiceRefMultiEndpt.Service1Client.EndpointConfiguration.BasicHttpBinding_IService1.ToString()) { serviceEndpoint.Binding.SendTimeout = new System.TimeSpan(0, 1, 0); } else if (serviceEndpoint.Name == ServiceRefMultiEndpt.Service1Client.EndpointConfiguration.BasicHttpBinding_IService11.ToString()) { serviceEndpoint.Binding.SendTimeout = new System.TimeSpan(0, 1, 0); clientCredentials.UserName.UserName = "username1"; clientCredentials.UserName.Password = "password"; } else if (serviceEndpoint.Name == ServiceRefMultiEndpt.Service1Client.EndpointConfiguration.NetTcpBinding_IService1.ToString()) { serviceEndpoint.Binding.Name = "MyTcpBinding"; serviceEndpoint.Address = new System.ServiceModel.EndpointAddress("net.tcp://localhost/tcp"); } } } + +``` + +### シリアル化 + Windows ストア アプリケーションでは、次のシリアライザーがサポートされています。 + +1. DataContractSerializer + +2. DataContractJsonSerializer + +3. XmlSerializer + +> [!WARNING] +> XmlDictionaryWriter.Write\(DateTime\) は、DateTime オブジェクトを文字列として出力するようになりました。 + +### セキュリティ + Windows ストア アプリケーションでは、次のセキュリティ モードがサポートされています。 + +1. + +2. + +3. + +4. + + Windows ストア アプリケーションでは、次の種類のクライアント資格情報がサポートされています。 + +1. なし + +2. Basic + +3. Digest + +4. Negotiate + +5. NTLM + +6. Windows + +7. ユーザー名 \(メッセージ セキュリティ\) + +8. Windows \(トランスポート セキュリティ\) + + Windows ストア アプリケーションから既定の Windows 資格情報にアクセスして送信するためには、Package.appmanifest ファイル内でこの機能を有効にする必要があります。 このファイルを開いて \[機能\] タブをクリックし、\[既定の Windows 資格情報\] を選択します。 これにより、ドメイン資格情報を必要とするイントラネット リソースにアプリケーションが接続できるようになります。 + +> [!IMPORTANT] +> Windows ストア アプリケーションでコンピューター間での呼び出しを実行するには、"ホーム\/社内ネットワーク" という別の機能を有効にする必要があります。 この設定は、Package.appmanifest ファイル内の \[機能\] タブにもあります。 \[ホーム\/社内ネットワーク\] チェック ボックスをオンにします。 これで、アプリケーションは、自宅や職場など、ユーザーが信頼できる場所のネットワークに着信および発信アクセスできるようになります。 着信方向の重要なポートは常にブロックされます。 また、インターネット上のサービスにアクセスするには、インターネット \(クライアント\) の機能も有効にする必要があります。 + +### \[その他\] + Windows ストア アプリケーションでは、次のクラスの使用がサポートされています。 + +1. + +2. + +3. + +### サービス コントラクトの定義 + 非同期サービス操作の定義には、タスク ベースの非同期パターンのみを使用することをお勧めします。 これにより、サービス操作の呼び出し中も、Windows ストア アプリケーションの応答が維持されます。 + +> [!WARNING] +> 同期操作を定義した場合でも例外はスローされませんが、非同期操作のみを定義することを強くお勧めします。 + +### Windows ストア アプリケーションからの WCF サービスの呼び出し + 既に説明したように、すべての構成は、生成されたプロキシ クラスの GetBindingForEndpoint メソッドのコード内で行う必要があります。 次のコードに示すように、サービス操作の呼び出しは、タスク ベースの非同期メソッドの呼び出しと同じように実行されます。 + +```csharp +void async SomeMethod() { ServiceClient proxy = new ServiceClient(); Task results = await proxy.CallAsync(param1, param2); T result = results.Result; if (result.Success) { // Do something with result } } + +``` + + 非同期呼び出しを行うメソッドでは async キーワード、非同期メソッドの呼び出し時には await キーワードが使用されていることに注意してください。 + +## 参照 + [Windows ストア アプリ ブログの WCF](http://blogs.msdn.com/b/piyushjo/archive/2011/09/22/wcf-in-win8-metro-styled-apps-absolutely-supported.aspx) + [WCF Windows ストア クライアントおよびセキュリティ](http://blogs.msdn.com/b/piyushjo/archive/2011/10/11/calling-a-wcf-service-from-a-metro-application-adding-security.aspx) + [Windows ストア アプリとコンピューター間の呼び出し](http://blogs.msdn.com/b/piyushjo/archive/2011/10/22/calling-a-wcf-service-from-a-metro-application-cross-machine-scenario.aspx) + [Azure にデプロイされた WCF サービスの Windows ストア アプリからの呼び出し](http://blogs.msdn.com/b/piyushjo/archive/2011/10/22/calling-a-wcf-service-from-a-metro-application-cross-machine-scenario.aspx) + [WCF セキュリティのプログラミング](../../../../docs/framework/wcf/feature-details/programming-wcf-security.md) + [バインディング](../../../../docs/framework/wcf/bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/adding-a-service-reference-in-a-workflow-solution.md b/docs/framework/wcf/feature-details/adding-a-service-reference-in-a-workflow-solution.md new file mode 100644 index 00000000000..6f6ebbd8836 --- /dev/null +++ b/docs/framework/wcf/feature-details/adding-a-service-reference-in-a-workflow-solution.md @@ -0,0 +1,27 @@ +--- +title: "ワークフロー ソリューションでのサービス参照の追加 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 83574cf3-9803-49bc-837f-432936dc9c76 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# ワークフロー ソリューションでのサービス参照の追加 +ワークフロー アプリケーションでのサービス参照の追加は、通常の WCF アプリケーションとは動作が少し異なります。\[サービス参照の追加\] を選択し、サービスの URL を指定すると、メタデータがダウンロードされ、カスタム アクティビティが生成されて、参照を追加した WCF サービスまたは WCF ワークフロー サービスを呼び出すことができるようになります。サービス参照を追加した後、生成されたアクティビティがビルドされるように、ソリューションを再ビルドします。これにより、アクティビティがワークフロー デザイナー ツールボックスに表示されます。ただし、この方法が機能するのはワークフロー ソリューション内でサービス参照を追加する場合だけであることに注意してください。他の種類のプロジェクトでサービス参照を追加する方法については、Web キャストの「[Web プロジェクトでのワークフローからの WCF サービスの呼び出し](http://go.microsoft.com/fwlink/?LinkId=207725)」を参照してください。 + + 同じ操作名が含まれるサービスへのサービス参照を複数追加すると、問題が発生します。生成されたアクティビティは最初のサービス操作しか呼び出しません。この問題を回避するには、サービス操作を別々の名前に変更するか、生成された各アクティビティ内でエンドポイント構成名を変更します。 + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [方法: 別のワークフロー サービスを呼び出すワークフロー サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-workflow-service-that-calls-another-workflow-service.md) + [Web プロジェクトでのワークフローからの WCF サービスの呼び出し](http://go.microsoft.com/fwlink/?LinkId=207725) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/adding-online-and-offline-status.md b/docs/framework/wcf/feature-details/adding-online-and-offline-status.md new file mode 100644 index 00000000000..60a1de73ffc --- /dev/null +++ b/docs/framework/wcf/feature-details/adding-online-and-offline-status.md @@ -0,0 +1,28 @@ +--- +title: "オンライン ステータスとオフライン ステータスの追加 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 05e5f51d-81b6-4c17-b364-9dda447a5fce +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# オンライン ステータスとオフライン ステータスの追加 +多くの場合、アプリケーションではピア チャネル接続のステータスについて明確な詳細情報を監視することが重要です。この情報は、 インターフェイスの実装で `GetProperty` メソッドを呼び出すことで取得できます。このインターフェイスを実装するオブジェクトは、接続ステータスを監視したり、`OnOnline` や `OnOffline` などのイベント ハンドラーを登録したりできるため、オンライン ステータスに変化があると即座に反応できます。 + + ピア チャネル インフラストラクチャでは、クライアントが少なくとも 1 つのピアに接続されているとオンラインと見なされ、そうでない場合はオフラインと見なされます。このことは、開発中のアプリケーションをデバッグする際や、エンド ユーザーに詳細情報を表示する際に特に役立ちます。 + +> [!NOTE] +> オンライン イベント ハンドラーでは、メッセージを送信する前に、まず、ノードが開いていることを確認する必要があります。 + +## 参照 + [ピア チャネル アプリケーションの構築](../../../../docs/framework/wcf/feature-details/building-a-peer-channel-application.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/adopting-wcf.md b/docs/framework/wcf/feature-details/adopting-wcf.md new file mode 100644 index 00000000000..fe649b38d5b --- /dev/null +++ b/docs/framework/wcf/feature-details/adopting-wcf.md @@ -0,0 +1,37 @@ +--- +title: "Windows Communication Foundation の採用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 49ba71e2-9468-4082-84c5-cf8daf95e34a +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# Windows Communication Foundation の採用 +ASP.NET を使用して開発した既存のアプリケーションのメンテナンスを続行しながら、新規開発については [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を選択できます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、どのようなシナリオにおいても .NET Framework を使用してビルドされたアプリケーションとの通信を容易に行うための最適な選択となるように設計されているため、これまで ASP.NET では実現できなかったような方法でソフトウェア通信における多様な問題を解決するための標準ツールとして使用できます。 + + 新しい [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは、既存の ASP.NET Web サービスがある同じコンピューター上に展開できます。既存の ASP.NET Web サービスが、バージョン 2.0 より前の .NET Framework を使用している場合は、ASP.NET IIS 登録ツールを使用して、新しい [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションをホストできる IIS アプリケーションに .NET Framework 2.0 を選択的に展開できます。このツールについてのドキュメントは [ASP.NET IIS Registration Tool \(Aspnet\_regiis.exe\)](http://go.microsoft.com/fwlink/?LinkId=94687) にあり、ユーザー インターフェイスは IIS 6.0 管理コンソールに組み込まれています。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、ASP.NET 互換モードで実行するように構成された [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを IIS の既存の ASP.NET Web サービス アプリケーションに追加することで、既存の ASP.NET Web サービスに新しい機能を追加できます。ASP.NET 互換モードにより、新しい [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのコードは、 クラスを使用することで、既存の ASP.NET コードと同じアプリケーション状態情報にアクセスして更新を行うことができます。また、アプリケーションは同じクラス ライブラリを共有することもできます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントは、ASP.NET Web サービスを使用できます。ASP.NET Web サービス クライアントは、 で構成された [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを使用できます。ASP.NET Web サービスは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションとの共存が可能であり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して既存の ASP.NET Web サービスに機能を追加することもできます。このように [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と ASP.NET Web サービスは同時に使用できるため、ASP.NET Web サービスから [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] への移行が必要になるのは、ASP.NET Web サービスでは提供されず、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でのみ提供される機能が必要な場合に限られるかもしれません。 + + このような移行が必要となるまれな場合においても、あるテクノロジから別のテクノロジへコードを移行するのは、ほとんどの場合、正しいアプローチではないということを考慮する必要があります。以前のテクノロジでは満たされない新しい要件を満たすために新しいテクノロジを採用する場合、新たに拡張された要件を満たす新しいソリューションを設計することが正しい方法です。新しい設計では、既存のシステムでの経験とそのシステムを設計して以来、獲得した知識を活用できます。また、新しい設計は、新しいプラットフォーム上で古い設計を再制作するのではなく、新しいテクノロジの機能を十分に活用することができます。新しい設計の主要な要素のプロトタイプが完成すると、既存のシステムのコードを新しいシステム内で再使用することが容易になります。 + + ASP.NET Web サービスから [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] への移行が正しいソリューションであると考えられるまれな場合のために、以下にこれを実行に移すためのガイダンスを示します。これには、サービスを移行する方法、およびクライアントを移行する方法についてのアドバイスが含まれています。 + + 既存の ASP.NET Web サービスを WCF へ移行する方法の詳細な分析については、「[ASP.NET Web サービスと Windows Communication Foundation](http://go.microsoft.com/fwlink/?LinkID=71761)」を参照してください。ここでは、ASP.NET Web サービスのメタデータから WCF 準拠サービスを実装する方法、および ASP.NET Web サービスおよびクライアントのコードを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に移行する方法について説明しています。 + +## 参照 + [方法 : メタデータの取得および準拠サービスの実装をする](../../../../docs/framework/wcf/feature-details/how-to-retrieve-metadata-and-implement-a-compliant-service.md) + [方法 : ASP.NET Web サービス コードを Windows Communication Foundation に移行する](../../../../docs/framework/wcf/feature-details/migrate-asp-net-web-service-to-wcf.md) + [方法 : ASP.NET Web サービス クライアント コードを Windows Communication Foundation に移行する](../../../../docs/framework/wcf/feature-details/migrate-asp-net-web-service-client-to-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/ajax-integration-and-json-support.md b/docs/framework/wcf/feature-details/ajax-integration-and-json-support.md new file mode 100644 index 00000000000..021650976fa --- /dev/null +++ b/docs/framework/wcf/feature-details/ajax-integration-and-json-support.md @@ -0,0 +1,41 @@ +--- +title: "AJAX の統合と JSON のサポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "AJAX の統合と JSON のサポート [WCF]" +ms.assetid: 3851a8fc-d861-4ac1-873c-96af0343d3a7 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# AJAX の統合と JSON のサポート +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] が ASP.NET AJAX \(Asynchronous JavaScript and XML\) と JSON \(JavaScript Object Notation\) データ形式をサポートするため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは AJAX クライアントに操作を公開できます。AJAX クライアントは、JavaScript コードを実行し、HTTP 要求を使用してこのような [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスにアクセスする Web ページです。このセクションのトピックでは、このサポートと実装方法について説明します。 + + ASP.NET AJAX とその ASP.NET 2.0 との統合[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ASP.NET AJAX の概要](http://go.microsoft.com/fwlink/?LinkId=96725)」を参照してください。 + +## このセクションの内容 + [ASP.NET AJAX 用の WCF サービスの作成](../../../../docs/framework/wcf/feature-details/creating-wcf-services-for-aspnet-ajax.md) + 構成によって、または、自動的に AJAX エンドポイントを構成するサービス ホストを生成するようにカスタマイズされたサービス ホスト ファクトリを使用することによって適切な AJAX エンドポイントを追加することで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを AJAX クライアントに公開する方法について説明します。 + + [ASP.NET を使用せずに WCF AJAX サービスを作成する方法](../../../../docs/framework/wcf/feature-details/creating-wcf-ajax-services-without-aspnet.md) + ASP.NET を使用しないで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを作成する方法について説明します。 + + [JSON などのデータ転送形式のサポート](../../../../docs/framework/wcf/feature-details/support-for-json-and-other-data-transfer-formats.md) + ASP.NET AJAX サービスとのメッセージングで、XML の代わりに一般に使用される JSON 形式のサポートについて説明します。 + + [方法 : AJAX 対応 ASP.NET Web サービスを WCF に移行する](../../../../docs/framework/wcf/feature-details/how-to-migrate-ajax-enabled-aspnet-web-services-to-wcf.md) + AJAX 対応の ASP.NET Web サービスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Web サービスに移行する方法について説明します。 + +## 参照 + + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/anticipating-adopting-the-wcf-easing-future-integration.md b/docs/framework/wcf/feature-details/anticipating-adopting-the-wcf-easing-future-integration.md new file mode 100644 index 00000000000..1effd46e328 --- /dev/null +++ b/docs/framework/wcf/feature-details/anticipating-adopting-the-wcf-easing-future-integration.md @@ -0,0 +1,55 @@ +--- +title: "Windows Communication Foundation 導入の準備 : 将来的な統合の容易化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3028bba8-6355-4ee0-9ecd-c56e614cb474 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# Windows Communication Foundation 導入の準備 : 将来的な統合の容易化 +現在 ASP.NET を使用しており、将来 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を採用する予定である場合、このトピックは、新規の ASP.NET Web サービスが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションと共に問題なく動作するためのガイダンスになります。 + +## 一般的な推奨事項 + ASP.NET 2.0 を使用して、すべての新規サービスを作成します。こうすることで、拡張および強化された新バージョンの機能にアクセスできます。またこれにより、ASP.NET 2.0 コンポーネントと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] コンポーネントとを同じアプリケーション内で使用する可能性にも対応できます。 + +## プロトコル + WS\-I Basic Profile 1.1 への準拠を検証するには、次のように ASP.NET 2.0 の新機能を使用します。 + +``` +[WebService(Namespace = "http://tempuri.org/")] +[WebServiceBinding( + ConformsTo = WsiProfiles.BasicProfile1_1, + EmitConformanceClaims=true)] +public interface IEcho + +``` + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の定義済みバインディングである を使用することによって、WS\-I Basic Profile 1.1 準拠の ASP.NET Web サービスは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントと相互運用できます。 + +## サービスの配置 + 属性を使用する場合、SOAPAction HTTP ヘッダーではなく、SOAP メッセージの本文要素の完全修飾名に基づいてメッセージをメソッドへルーティングすることは避けます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、SOAPAction HTTP ヘッダーを使用してメッセージをルーティングします。 + +## データ表現 + によって既定で型のシリアル化が行われる XML は、XML の名前空間が明示的に定義されている場合、 によって型のシリアル化が行われる XML と意味的に同一です。将来 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を採用する予定の場合、ASP.NET Web サービスで使用するデータ型を定義するには、次の操作を実行します。 + +1. XML スキーマではなく、.NET Framework クラスを使用して型を定義します。 + +2. だけをそのクラスに追加します。後者を使用して型の名前空間を明示的に定義してください。.NET Framework クラスを XML に変換する方法を制御する目的で、 名前空間の属性を追加しないでください。 + + この手法を採用すると、後から および を追加することで、転送のためにクラスをシリアル化する XML に大きな変更を加えることなく .NET クラスをデータ コントラクトにすることができます。ASP.NET Web サービスがメッセージ内で使用する型は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションによってデータ コントラクトとして処理することが可能です。これにはさまざまな利点がありますが、特に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションではより高いパフォーマンスを引き出すことができます。 + +## セキュリティ + インターネット インフォメーション サービス \(IIS\) に用意されている認証オプションは使用しないでください。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントではこれらの認証オプションはサポートされません。サービスをセキュリティで保護する必要がある場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で提供されるオプションを使用します。こちらのオプションの方が選択の幅が広く、標準プロトコルに基づいているためです。 + +## 参照 + [Windows Communication Foundation の採用 : 将来の移行の簡略化](../../../../docs/framework/wcf/feature-details/anticipating-adopting-wcf-migration.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/anticipating-adopting-wcf-migration.md b/docs/framework/wcf/feature-details/anticipating-adopting-wcf-migration.md new file mode 100644 index 00000000000..0509eff0322 --- /dev/null +++ b/docs/framework/wcf/feature-details/anticipating-adopting-wcf-migration.md @@ -0,0 +1,137 @@ +--- +title: "Windows Communication Foundation の採用 : 将来の移行の簡略化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f49664d9-e9e0-425c-a259-93f0a569d01b +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# Windows Communication Foundation の採用 : 将来の移行の簡略化 +将来、新しい ASP.NET アプリケーションを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] へ簡単に移行できるようにするには、前述の推奨事項および次の推奨事項に従います。 + +## プロトコル + ASP.NET 2.0 の SOAP 1.2 サポートを無効にします。 + +``` + + + + + + + + + + +``` + + このような処理を行うのは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではさまざまなエンドポイントを介してメッセージを交換するため、SOAP 1.1 や SOAP 1.2 など各種プロトコルに対応する必要があるためです。 ASP.NET 2.0 Web サービスが SOAP 1.1 と SOAP 1.2 を両方ともサポートするように構成されている場合 \(既定の構成\)、その ASP.NET Web サービスの既存の全クライアントと確実に互換性のある、元のアドレスの単一の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントに移行することはできません。 また、SOAP 1.1 ではなく 1.2 を選択すると、サービスの利用者がさらに厳しく制限されます。 + +## サービスの開発 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、 をインターフェイスまたはクラスのいずれかに適用することでサービス コントラクトを定義できます。 この属性は、クラスではなくインターフェイスに適用することをお勧めします。これにより、任意の数のクラスでさまざまに実装できるコントラクト定義が作成されます。 ASP.NET 2.0 では、 属性をクラスだけでなくインターフェイスに適用することもできます。 ただし、既に説明したように ASP.NET 2.0 には不具合があり、 属性をクラスではなくインターフェイスに適用した場合、この属性の名前空間パラメーターが有効化されません。 一般に、 属性の名前空間パラメーターを使用して、サービスの名前空間を既定値の http:\/\/tempuri.org から変更することが望ましので、引き続き 属性をインターフェイスまたはクラスに適用して ASP.NET Web サービスを定義する必要があります。 + +- これらのインターフェイスを定義するメソッドに含めるコードは、できるだけ少なくします。 これらのメソッドの作業を他のクラスに委任します。 その際、新しい [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの型も、実質的な作業をそのクラスに委任できます。 + +- の `MessageName` パラメーターを使用して、サービスの動作の明示的な名前を指定します。 + + ``` + [WebMethod(MessageName="ExplicitName")] + string Echo(string input); + ``` + + ASP.NET と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では既定の動作名が異なるので、この処理は重要です。 明示的な名前を指定することで、既定の名前への依存を避けることができます。 + +- ASP.NET Web サービスの動作を多様メソッドで実装しないでください。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、多様メソッドを使用した動作の実装がサポートされていません。 + +- を使用して、HTTP 要求をメソッドにルーティングする SOAPAction HTTP ヘッダーの明示的な値を指定します。 + + ``` + [WebMethod] + [SoapDocumentMethod(RequestElementName="ExplicitAction")] + string Echo(string input); + ``` + + この方法により、ASP.NET と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で SOAPAction の同じ既定値を使用する必要がなくなります。 + +- SOAP 拡張機能は使用しないでください。 SOAP 拡張機能が必要な場合は、それを検討する目的の機能が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で既に提供されていないかどうかを確認します。 目的の機能が備わっている場合は、"すぐには [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を導入しない" という方針を考え直してください。 + +## 状態管理 + サービスで状態を維持する必要がないようにします。 状態を維持すると、アプリケーションのスケーラビリティが損なわれるだけではありません。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の ASP.NET 互換モードを使用すれば ASP.NET のメカニズムに対応できるとはいえ、ASP.NET と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] とでは状態管理メカニズムが大きく異なります。 + +## 例外処理 + サービスで送受信するデータ型の構造を設計するときは、クライアントに伝達する必要があり、サービス内で発生する可能性のあるさまざまな種類の例外を表現する構造も設計します。 + +``` +[Serializable] +[XmlRoot( + Namespace="ExplicitNamespace", IsNullable=true)] + public partial class AnticipatedException { + + private string anticipatedExceptionInformationField; + + public string AnticipatedExceptionInformation { + get { + return this.anticipatedExceptionInformationField; + } + set { + this.anticipatedExceptionInformationField = value; + } + } +} +``` + + これらのクラスには、自分自身を XML にシリアル化する機能を与えます。 + +``` +public XmlNode ToXML() +{ + XmlSerializer serializer = new XmlSerializer( + typeof(AnticipatedException)); + MemoryStream memoryStream = new MemoryStream(); + XmlTextWriter writer = new XmlTextWriter( + memoryStream, UnicodeEncoding.UTF8); + serializer.Serialize(writer, this); + XmlDocument document = new XmlDocument(); + document.LoadXml(new string( + UnicodeEncoding.UTF8.GetChars( + memoryStream.GetBuffer())).Trim()); + return document.DocumentElement; +} +``` + + これでこのクラスを使用して、明示的にスローされた インスタンスの詳細を指定できます。 + +``` +AnctipatedException exception = new AnticipatedException(); +exception.AnticipatedExceptionInformation = "…"; +throw new SoapException( + "Fault occurred", + SoapException.ClientFaultCode, + Context.Request.Url.AbsoluteUri, + exception.ToXML()); + +``` + + この例外クラスは、新しい `FaultException(anticipatedException);` をスローするのに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クラスと共に簡単に再利用できます。 + +## セキュリティ + セキュリティに関する推奨事項を次にいくつか示します。 + +- ASP.NET 2.0 のプロファイルは使用しないでください。サービスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] へ移行した場合、ASP.NET 統合モードの使用が制限されます。 + +- サービスへのアクセスを制御する目的で ACL を使用しないでください。ASP.NET Web サービスはインターネット インフォメーション サービス \(IIS\) を使用して ACL を サポートしますが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] はサポートしません。これは、ASP.NET Web サービスはホスティングを IIS に依存しますが、WCF は IIS でホストされる必要がないためです。 + +- サービスのリソースへのアクセスを承認するには、ASP.NET 2.0 ロール プロバイダーの使用を検討してください。 + +## 参照 + [Windows Communication Foundation 導入の準備 : 将来的な統合の容易化](../../../../docs/framework/wcf/feature-details/anticipating-adopting-the-wcf-easing-future-integration.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/architecture-of-syndication.md b/docs/framework/wcf/feature-details/architecture-of-syndication.md new file mode 100644 index 00000000000..797601f17e7 --- /dev/null +++ b/docs/framework/wcf/feature-details/architecture-of-syndication.md @@ -0,0 +1,90 @@ +--- +title: "配信のアーキテクチャ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ed4ca86e-e3d8-4acb-87aa-1921fbc353be +caps.latest.revision: 25 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 25 +--- +# 配信のアーキテクチャ +配信 API は、形式に依存せず、さまざま形式で概要コンテンツをネットワークに書き込むことができるプログラミング モデルを提供することを目的としています。 抽象データ モデルは、次のクラスで構成されています。 + +- + +- + +- + +- + +- + + これらのクラスは、一部の名前が異なっていますが、Atom 1.0 仕様に規定されるコンストラクトに厳密にマップされています。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、配信フィードはその戻り値の型が の派生クラスの 1 つである別の種類のサービス操作としてモデル化されています。 フィードの取得は要求\/応答のメッセージ交換としてモデル化されています。 クライアントはサービスに要求を送信し、サービスがこれに応答します。 要求メッセージはインフラストラクチャ プロトコル \(生の HTTP など\) 上に設定され、応答メッセージは広く認識されている配信形式 \(RSS 2.0 または Atom 1.0\) から構成されるペイロードを含んでいます。 このようなメッセージ交換を実装するサービスは、配信サービスと呼ばれます。 + + 配信サービスのコントラクトは、 クラスのインスタンスを返す一連の操作から構成されます。 配信サービスのインターフェイス宣言の例を次に示します。 + + [!code-csharp[S_UE_SyndicationBoth#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_ue_syndicationboth/cs/service.cs#0)] + + 配信のサポートは、 バインディングを定義する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] REST プログラミング モデル上に組み込まれています。このバインディングを と共に使用すると、フィードをサービスとして利用できるようになります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] REST プログラミング モデルの[!INCLUDE[crabout](../../../../includes/crabout-md.md)] 「[WCF Web HTTP プログラミング モデルの概要](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md)」を参照してください。 + +> [!NOTE] +> Atom 1.0 仕様では、date コンストラクトで小数秒を指定できます。 シリアル化および逆シリアル化する場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の実装では小数秒は無視されます。 + +## オブジェクト モデル + 配信のオブジェクト モデルは、次の各表に示すクラスのグループから構成されています。 + + 形式設定クラス + +|クラス|説明| +|---------|--------| +|| インスタンスを Atom 1.0 形式にシリアル化するクラス。| +|| 派生クラスを Atom 1.0 形式にシリアル化するクラス。| +|| インスタンスを Atom 1.0 形式にシリアル化するクラス。| +|| 派生クラスを Atom 1.0 形式にシリアル化するクラス。| +|| インスタンスを RSS 2.0 形式にシリアル化するクラス。| +|| 派生クラスを RSS 2.0 形式にシリアル化するクラス。| +|| インスタンスを RSS 2.0 形式にシリアル化するクラス。| +|| 派生クラスを RSS 2.0 形式にシリアル化するクラス。| + + オブジェクト モデル クラス + +|クラス|説明| +|---------|--------| +||配信フィードのカテゴリを表すクラス。| +||配信コンテンツを表す基本クラス。| +||配信要素拡張を表すクラス。| +|| オブジェクトのコレクション。| +||トップレベルのフィード オブジェクトを表すクラス。| +||フィード項目を表すクラス。| +||配信フィードまたは項目内のリンクを表すクラス。| +||Atom Person コンストラクトを表すクラス。| +||サポートされる配信プロトコルのバージョンを表すクラス。| +||エンド ユーザーに表示される任意の コンテンツを表すクラス。| +||テキスト配信コンテンツでサポートされる各種の型を表す列挙型。| +||別のリソースへの URL から構成される配信コンテンツを表すクラス。| +||ブラウザーに表示されない配信コンテンツを表すクラス。| + + オブジェクト モデル内における抽象化コア データは Feed と Item であり、 クラスと クラスに対応します。 Feed は、フィード レベルのメタデータの一部 \(Title、Description、Author など\)、未知の拡張を格納する場所、およびフィードの情報コンテンツの残りの部分を作成する一連の項目を公開します。 Item では、項目レベルのメタデータの一部 \(Title、Summary、PublicationDate など\)、未知の拡張を格納する場所、および項目の情報コンテンツの残りの部分を含むコンテンツ要素を利用できます。 Feed と Item のコア抽象化は、Atom 1.0 および RSS の仕様で参照されている共通データ コンストラクトを表す追加のクラスによってサポートされています。 + + Feed インスタンスに含まれる情報は、各種の XML 形式に変換できます。 XML との間の双方向の変換処理は、 クラスによって管理されます。 このクラスは抽象クラスであり、具体的な実装は Atom 1.0 および RSS 2.0 \( および \) で提供されます。 Feed の派生クラスを使用するには、派生した Feed クラスを特定できるように または のいずれかを使用します。 Item の派生クラスを使用するには、派生した Item クラスを特定できるように または のいずれかを使用します。各種の配信形式をサポートするために、サード パーティでは の独自の実装を派生することができます。 + +## 機能拡張 + +- 配信プロトコルの主な機能は拡張性です。 Atom 1.0 と RSS 2.0 では、仕様で定義されていない属性および要素を配信フィードに追加できます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の配信プログラミング モデルには、カスタム属性と拡張機能を扱う方法として、新しいクラスの派生と弱い型指定のアクセスの 2 つの方法が用意されています。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [配信の拡張](../../../../docs/framework/wcf/feature-details/syndication-extensibility.md). + +## 参照 + [WCF 配信の概要](../../../../docs/framework/wcf/feature-details/wcf-syndication-overview.md) + [WCF 配信オブジェクト モデルを Atom や RSS に割り当てる方法](../../../../docs/framework/wcf/feature-details/how-the-wcf-syndication-object-model-maps-to-atom-and-rss.md) + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/auditing-security-events.md b/docs/framework/wcf/feature-details/auditing-security-events.md new file mode 100644 index 00000000000..c66863154f8 --- /dev/null +++ b/docs/framework/wcf/feature-details/auditing-security-events.md @@ -0,0 +1,116 @@ +--- +title: "セキュリティ イベントの監査 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ イベントの監査 [WCF]" +ms.assetid: 5633f61c-a3c9-40dd-8070-1c373b66a716 +caps.latest.revision: 27 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 27 +--- +# セキュリティ イベントの監査 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] で作成されたアプリケーションでは、監査機能を使用してセキュリティ イベント \(成功、失敗、またはその両方\) をログに記録できます。これらのイベントは Windows システム イベント ログに書き込まれ、イベント ビューアーを使用して確認できます。 + + 監査を使用すると、管理者は既に発生した攻撃や現在進行中の攻撃を検出できます。また、開発者がセキュリティ関連の問題をデバッグする際にも役立ちます。たとえば、認証またはポリシー チェックの構成エラーによって承認済みユーザーへのアクセスが拒否された場合、開発者は、イベント ログを検査することによって、このエラーの原因をすばやく発見し、取り出すことができます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md)」を参照してください。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のプログラミング[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md)」を参照してください。 + +## 監査レベルと動作 + セキュリティ監査には次の 2 つのレベルがあります。 + +- 呼び出し元を承認するサービス承認レベル。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がメッセージの有効性をチェックして呼び出し元を認証するメッセージ レベル。 + + どちらの監査レベルにおいても、監査の成功または失敗をチェックできます。これは *"監査動作"* と呼ばれます。 + +## 監査ログの場所 + 監査のレベルと動作を決定したら、ユーザー \(または管理者\) は監査ログの場所を指定できます。監査ログの場所は、Default、Application、および Security の 3 つから選択できます。Default を指定した場合、ログの実際の場所は、ユーザーが使用しているシステムと、セキュリティ ログへの書き込みがサポートされているかどうかによって決まります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]このトピックの「オペレーティング システム」を参照してください。 + + セキュリティ ログへの書き込みを行うには、`SeAuditPrivilege` が必要です。既定では、この権限は Local System アカウントと Network Service アカウントだけに与えられています。セキュリティ ログの `read` および `delete` 機能を管理するには、`SeSecurityPrivilege` が必要です。既定では、この権限は管理者だけに与えられています。 + + これに対し、アプリケーション ログは認証済みユーザーが読み書きできます。既定では、[!INCLUDE[wxp](../../../../includes/wxp-md.md)] は、監査イベントをアプリケーション ログに書き込みます。すべての認証済みユーザーに表示される個人情報をログに格納することもできます。 + +## 監査エラーの抑制 + 監査中に監査エラーを表示しないように指定するオプションも用意されています。既定では、監査エラーはアプリケーションに影響を与えません。ただし、必要に応じて、このオプションを `false` に設定し、例外をスローすることもできます。 + +## プログラミング監査 + 監査動作は、プログラムまたは構成を使用して指定できます。 + +### 監査クラス + 監査動作をプログラムで指定するときに使用するクラスとプロパティを次の表で説明します。 + +|クラス|説明| +|---------|--------| +||サービス動作として監査を行うための設定オプションを有効にします。| +||書き込み先のログを指定するための列挙体。指定できる値は、Default、Application、および Security です。Default を選択した場合、実際のログの場所はオペレーティング システムによって決定されます。このトピックの「アプリケーションまたはセキュリティ イベント ログの選択」のセクションを参照してください。| +||メッセージ レベルで監査されるメッセージ認証イベントの種類を指定します。`None`、`Failure`、`Success` および `SuccessOrFailure` から選択できます。| +||サービス レベルで監査されるサービス承認イベントの種類を指定します。`None`、`Failure`、`Success` および `SuccessOrFailure` から選択できます。| +||監査が失敗した場合に、クライアント要求をどのように処理するかを指定します。たとえば、`SeAuditPrivilege` を持たないサービスがセキュリティ ログへの書き込みを試行したとします。この場合、既定値の `true` が設定されていると、エラーは無視され、クライアント要求は正常に処理されます。| + + 監査イベントをログに記録するようにアプリケーションを設定する例については、「[方法 : セキュリティ イベントを監査する](../../../../docs/framework/wcf/feature-details/how-to-audit-wcf-security-events.md)」を参照してください。 + +### 構成 + [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md)の下に [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicesecurityaudit.md)を追加すると、構成を使用して監査動作を指定できます。この要素は、次のコードに示すように、[\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)の下に指定する必要があります。 + +``` + + + + + + + + + + +``` + + 監査が有効になっているが、`auditLogLocation` が指定されていない場合、セキュリティ ログへの書き込みをサポートしているプラットフォームでの既定のログ名は "セキュリティ" ログになります。それ以外の場合は、"アプリケーション" ログになります。 セキュリティ ログへの書き込みをサポートしているオペレーティング システムは [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wv](../../../../includes/wv-md.md)] だけです。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]このトピックの「オペレーティング システム」を参照してください。 + +## セキュリティについての考慮事項 + 監査が有効になっていることが悪意のあるユーザーに知られた場合、そのユーザーは監査エントリの書き込みにつながる無効なメッセージを送信する可能性があります。このような方法で監査ログに書き込みが行われると、監査システムに障害が発生します。これを防ぐには、 プロパティを `true` に設定し、イベント ビューアーのプロパティを使用して監査動作を制御します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]Windows XP のイベント ビューアーでイベント ログの表示と管理を行う方法については、マイクロソフト サポート オンラインの「[Windows XP のイベント ビューアーでイベント ログの表示と管理を行う方法](http://go.microsoft.com/fwlink/?LinkId=89150)」を参照してください。 + + [!INCLUDE[wxp](../../../../includes/wxp-md.md)] のアプリケーション ログに書き込まれた監査イベントは、すべての認証済みユーザーに表示されます。 + +## アプリケーションまたはセキュリティ イベント ログの選択 + アプリケーション イベント ログとセキュリティ イベント ログのどちらにログを記録するかを選択するには、次の表の情報を参考にしてください。 + +#### オペレーティング システム + +|システム|アプリケーション ログ|セキュリティ ログ| +|----------|-----------------|---------------| +|[!INCLUDE[wxpsp2](../../../../includes/wxpsp2-md.md)] 以降|サポート状況|サポートなし| +|[!INCLUDE[ws2003sp1](../../../../includes/ws2003sp1-md.md)] および[!INCLUDE[wv](../../../../includes/wv-md.md)]|サポート状況|スレッド コンテキストが `SeAuditPrivilege` を持つ必要があります。| + +#### その他の要素 + オペレーティング システム以外に、ログ記録の使用可能性を制御する設定を次の表に示します。 + +|要因|アプリケーション ログ|セキュリティ ログ| +|--------|-----------------|---------------| +|監査ポリシーの監査|該当しません。|セキュリティ ログは、構成だけでなく、ローカル セキュリティ機関 \(LSA: Local Security Authority\) ポリシーによっても制御されます。\[オブジェクト アクセスの監査\] カテゴリも有効にする必要があります。| +|既定のユーザー エクスペリエンス|すべての認証済みユーザーがアプリケーション ログに書き込むことができるため、アプリケーション プロセスでは追加のアクセス許可手順は必要ありません。|アプリケーション プロセス \(コンテキスト\) が `SeAuditPrivilege` を持つ必要があります。| + +## 参照 + + + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md) + [方法 : セキュリティ イベントを監査する](../../../../docs/framework/wcf/feature-details/how-to-audit-wcf-security-events.md) + [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicesecurityaudit.md) + [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/authentication-in-wcf.md b/docs/framework/wcf/feature-details/authentication-in-wcf.md new file mode 100644 index 00000000000..0d41a1ee902 --- /dev/null +++ b/docs/framework/wcf/feature-details/authentication-in-wcf.md @@ -0,0 +1,49 @@ +--- +title: "WCF での認証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "認証 [WCF]" + - "セキュリティ [WCF], 認証" +ms.assetid: 9254d873-843d-4c6e-bea4-8184ac3e44f4 +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# WCF での認証 +以下のトピックでは、Windows 認証、X.509 証明書、ユーザー名とパスワードなど、認証を提供する [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のさまざまな機構を示します。 + +## このセクションの内容 + [方法 : ASP.NET メンバーシップ プロバイダーを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider.md) + ASP.NET の機能には、メンバーシップとロール プロバイダー、認証のためのユーザー名とパスワードの組み合わせを格納するデータベース、および承認のためのユーザー ロールがあります。ここでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが同じデータベースを使用してユーザーの認証と承認を行うしくみについて説明します。 + + [方法 : カスタム ユーザー名およびパスワード検証を使用する](../../../../docs/framework/wcf/feature-details/how-to-use-a-custom-user-name-and-password-validator.md) + カスタム ユーザー名およびパスワード検証を統合する方法を示します。 + + [サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + 追加の保護手段として、クライアントは、サービスの予想される *ID* を指定することによってサービスを認証できます。予想される ID とサービスから返される ID が一致しない場合、認証は失敗します。 + + [セキュリティ ネゴシエーションとタイムアウト](../../../../docs/framework/wcf/feature-details/security-negotiation-and-timeouts.md) + クラスの プロパティの使用方法について説明します。 + + [Windows 認証エラーのデバッグ](../../../../docs/framework/wcf/feature-details/debugging-windows-authentication-errors.md) + Windows 認証の使用時に発生する一般的な問題について重点的に説明します。 + +## 関連項目 + + +## 関連項目 + [一般的なセキュリティ シナリオ](../../../../docs/framework/wcf/feature-details/common-security-scenarios.md) + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/authorization-in-wcf.md b/docs/framework/wcf/feature-details/authorization-in-wcf.md new file mode 100644 index 00000000000..422d933cb9f --- /dev/null +++ b/docs/framework/wcf/feature-details/authorization-in-wcf.md @@ -0,0 +1,58 @@ +--- +title: "WCF での承認 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "承認 [WCF]" + - "セキュリティ [WCF], 承認" +ms.assetid: 8ea0b552-af65-45b0-a157-c6c111b8ce5e +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# WCF での承認 +承認は、サービスやファイルなどのリソースへのアクセスと権限を制御するプロセスです。このセクションの各トピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でこの基本タスクを実行するさまざまな方法について説明します。 + +## このセクションの内容 + [アクセス制御機構](../../../../docs/framework/wcf/feature-details/access-control-mechanisms.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の承認機構の概要と推奨される使用方法について説明します。 + + [方法 : PrincipalPermissionAttribute クラスでアクセスを制限する](../../../../docs/framework/wcf/how-to-restrict-access-with-the-principalpermissionattribute-class.md) + を使用してサービスへのアクセスを制限するプロセスを示します。 + + [方法 : ASP.NET のロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md) + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] のロール プロバイダー機能を使用できるようにサービスを構成する手順について説明します。 + + [方法 : ASP.NET の承認マネージャー ロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-authorization-manager-role-provider-with-a-service.md) + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] は、承認マネージャーを使って Web サイトの承認を管理できます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、これとほぼ同じ方法でクライアントの承認に [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] と承認マネージャーの組み合わせを利用できます。 + + [ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) + ID モデル インフラストラクチャをクレーム ベースの承認に使用する際の基本について説明します。 + + [委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md) + 委任と偽装の違いについて説明します。 + +## 関連項目 + + + + + + + + +## 関連項目 + [認証](../../../../docs/framework/wcf/feature-details/authentication-in-wcf.md) + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/batching-messages-in-a-transaction.md b/docs/framework/wcf/feature-details/batching-messages-in-a-transaction.md new file mode 100644 index 00000000000..f312d448cdf --- /dev/null +++ b/docs/framework/wcf/feature-details/batching-messages-in-a-transaction.md @@ -0,0 +1,94 @@ +--- +title: "トランザクションに含まれるメッセージのバッチ処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "メッセージのバッチ処理 [WCF]" +ms.assetid: 53305392-e82e-4e89-aedc-3efb6ebcd28c +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# トランザクションに含まれるメッセージのバッチ処理 +キューに置かれたアプリケーションは、トランザクションを使用してメッセージの正確性および信頼性のある配信を確保します。ただし、トランザクション操作には負荷がかかるため、メッセージのスループットが大幅に低下する可能性があります。メッセージ スループットを向上する方法の 1 つは、アプリケーションにより、単一のトランザクション内で複数のメッセージを読み取って処理することです。ただし、その場合、バッチ内のメッセージ数が増えるにつれて、トランザクションをロールバックしたときに必要な回復の作業量も増えるため、パフォーマンスと回復の間のトレードオフを考慮する必要があります。したがって、トランザクションでのメッセージのバッチ処理とセッションの違いに注目することが重要です。*セッション*は、単一のアプリケーションによって処理され、1 つの単位としてコミットされる関連メッセージのグループです。セッションは、一般に、関連メッセージのグループをまとめて処理する必要がある場合に使用されます。この例として、オンライン ショッピング Web サイトがあります。*"バッチ"* は、関連性のない複数のメッセージを、メッセージ スループットを向上できる方法で処理するために使用されます。セッション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[セッションでキューに置かれたメッセージのグループ化](../../../../docs/framework/wcf/feature-details/grouping-queued-messages-in-a-session.md)」を参照してください。バッチ内のメッセージもまた、単一のアプリケーションによって処理され、1 つの単位としてコミットされますが、バッチ内のメッセージが関連している必要はありません。トランザクションでのメッセージのバッチ処理は、アプリケーションの実行方法を変更しない最適化です。 + +## バッチ処理モードの開始 + バッチ処理は、 エンドポイント動作によって制御されます。このエンドポイント動作をサービス エンドポイントに追加すると、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] はメッセージをトランザクション内でバッチ処理するように指示されます。すべてのメッセージがトランザクションを必要とするわけではないので、バッチにはトランザクションを必要とするメッセージのみ、特に `TransactionScopeRequired` \= `true` および `TransactionAutoComplete` \= `true` とマークされている操作から送信されてきたメッセージのみを配置します。サービス コントラクトのすべての操作が `TransactionScopeRequired` \= `false` および `TransactionAutoComplete` \= `false` とマークされている場合、バッチ処理モードには入りません。 + +## トランザクションのコミット + バッチ トランザクションは、次の基準に基づいてコミットされます。 + +- `MaxBatchSize`. 動作のプロパティ。このプロパティは、バッチに含められるメッセージの最大数を決定します。この数に達すると、バッチがコミットされます。この値は厳密に定められたものではないため、この数のメッセージを受信する前にバッチをコミットすることもできます。 + +- `Transaction Timeout`.トランザクションのタイムアウトの 80% が経過すると、バッチがコミットされ、新しいバッチが作成されます。つまり、トランザクションが完了するために指定された時間の残りが 20% 以下になると、バッチがコミットされます。 + +- `TransactionScopeRequired`.メッセージのバッチを処理しているときに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では `TransactionScopeRequired` \=`false` を持つメッセージが見つかると、バッチがコミットされ、`TransactionScopeRequired`\=`true` および `TransactionAutoComplete`\=`true` とマークされた最初のメッセージを受信したときに新しいバッチが再度開かれます。 + +- キューのメッセージがなくなると、`MaxBatchSize` に達していない場合やトランザクションのタイムアウトの 80% が経過していない場合でも、現在のバッチがコミットされます。 + +## バッチ処理モードの終了 + バッチ内のメッセージによってトランザクションが中止されたときの動作は、次のとおりです。 + +1. メッセージのバッチ全体がロールバックされます。 + +2. 読み取られたメッセージの数がバッチの最大サイズの 2 倍を超えるまで、一度に 1 つのメッセージが読み取られます。 + +3. 再度、バッチ モードに入ります。 + +## バッチ サイズの選択 + バッチのサイズは、アプリケーションに依存します。アプリケーションに最適なバッチ サイズは、経験に基づいて決定するのが最良の方法です。バッチ サイズを選択する際には、アプリケーションの実際の展開モデルに応じたサイズを選択することが重要です。たとえば、アプリケーションの展開で、リモート コンピューターに SQL サーバーを配置し、キューとその SQL サーバーにまたがるトランザクションを実行する必要がある場合は、そのとおりの構成を実行してバッチ サイズを決定するのが最良の方法です。 + +## 同時実行とバッチ処理 + スループットを向上させるために、多数のバッチを同時に実行することもできます。同時バッチ処理を有効にするには、`ServiceBehaviorAttribute` の `ConcurrencyMode.Multiple` を設定します。 + + *サービス調整*は、サービスで実行できる同時呼び出しの最大数を示すために使用されるサービス動作です。この動作をバッチ処理で使用すると、実行できる同時バッチの数と解釈されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、サービス調整が設定されていない場合、同時呼び出しの最大数は既定で 16 になります。したがって、バッチ動作が既定で追加されると、最大で 16 個のバッチが同時にアクティブになります。容量に基づいてサービス調整とバッチ処理を調整することをお勧めします。たとえば、キューに 100 個のメッセージがあり、20 個のメッセージを含むバッチを実行する必要がある場合、同時呼び出しの最大数を 16 に設定しても実用的ではありません。それは、スループットによっては、バッチ処理をオンにしていない場合と同様に、16 個のトランザクションがアクティブになる可能性があるからです。したがって、パフォーマンスを微調整するためには、同時バッチ処理を設定しないか、正しいサービス調整のサイズで同時バッチ処理を設定します。 + +## バッチ処理と複数のエンドポイント + エンドポイントは、アドレスとコントラクトで構成されます。同じバインディングを共有するエンドポイントが複数ある場合があります。2 つのエンドポイントが同じバインディングと、リッスン URI \(Uniform Resource Identifier\) つまりキュー アドレスを共有することもできます。2 つのエンドポイントが同じキューから読み取りを行っている場合、トランザクション バッチ動作を両方のエンドポイントに追加すると、指定したバッチ サイズ間で競合が発生する可能性があります。この問題を解決するには、2 つのトランザクション バッチ動作の間に指定される最小バッチ サイズを使用してバッチを実装します。このシナリオでは、どちらかのエンドポイントがトランザクション バッチを指定していない場合、両方のエンドポイントがバッチ処理を使用しません。 + +## 例 + 構成ファイルで `TransactedBatchingBehavior` を指定する方法を次の例に示します。 + +``` + + + + + +``` + + コードで を指定する方法を次の例に示します。 + +``` +using (ServiceHost serviceHost = new ServiceHost(typeof(OrderProcessorService))) +{ + ServiceEndpoint sep = ServiceHost.AddServiceEndpoint(typeof(IOrderProcessor), new NetMsmqBinding(), "net.msmq://localhost/private/ServiceModelSamplesTransacted"); + sep.Behaviors.Add(new TransactedBatchingBehavior(100)); + + // Open the ServiceHost to create listeners and start listening for messages. + serviceHost.Open(); + + // The service can now be accessed. + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + + // Close the ServiceHostB to shut down the service. + serviceHost.Close(); +} +``` + +## 参照 + [キューの概要](../../../../docs/framework/wcf/feature-details/queues-overview.md) + [WCF でのキュー](../../../../docs/framework/wcf/feature-details/queuing-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/best-practices-for-queued-communication.md b/docs/framework/wcf/feature-details/best-practices-for-queued-communication.md new file mode 100644 index 00000000000..c9f58b4703b --- /dev/null +++ b/docs/framework/wcf/feature-details/best-practices-for-queued-communication.md @@ -0,0 +1,102 @@ +--- +title: "キューに置かれた通信のベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ベスト プラクティス [WCF], キューに置かれた通信" + - "キュー [WCF], ベスト プラクティス" +ms.assetid: 446a6383-cae3-4338-b193-a33c14a49948 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# キューに置かれた通信のベスト プラクティス +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のキューに置かれた通信で推奨されるベスト プラクティスについて説明します。以下の各セクションでは、シナリオの観点から推奨されるベスト プラクティスについて説明します。 + +## キューに置かれたベストエフォート方式の高速メッセージング + キューに置かれたメッセージングによってもたらされる分離と、ベストエフォート保証による高パフォーマンスの高速メッセージングを必要とするシナリオでは、非トランザクション キューを使用し、 プロパティを `false` に設定します。 + + また、 プロパティを `false` に設定して、ディスク書き込みの負荷がかからないようにすることもできます。 + + セキュリティは、パフォーマンスに影響を及ぼします。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][パフォーマンスに関する考慮事項](../../../../docs/framework/wcf/feature-details/performance-considerations.md). + +## キューに置かれた信頼性のあるエンド ツー エンドのメッセージング + 以下のセクションでは、エンド ツー エンドで信頼できるメッセージングが必要なシナリオで推奨されるベスト プラクティスについて説明します。 + +### 基本的で信頼できる転送 + エンド ツー エンドの信頼性を実現するには、 プロパティを `true` に設定して、確実に転送できるようにします。 プロパティは、要件に応じて `true` に設定することも、`false` に設定することもできます \(既定値は `true` です\)。通常、エンド ツー エンドの信頼性の一環として、 プロパティは `true` に設定されています。これはパフォーマンス コストに影響しますが、これによりメッセージが永続的になるため、キュー マネージャーがクラッシュした場合でもメッセージが失われなくなります。 + +### トランザクションの使用 + エンド ツー エンドの信頼性を確保するには、トランザクションを使用する必要があります。`ExactlyOnce` の保証によって保証されるのは、メッセージがターゲット キューに配信されることだけです。メッセージを確実に受信するには、トランザクションを使用します。トランザクションを使用しないと、サービスがクラッシュした場合に、配信中であるが、実際にはアプリケーションに配信されるメッセージは失われます。 + +### 配信不能キューの使用 + 配信不能キューを使用すると、メッセージがターゲット キューに配信されなかった場合に、必ず通知されます。システム指定の配信不能キューまたはカスタムの配信不能キューを使用できます。アプリケーションごとに専用の配信不能キューに配信不能メッセージを送信できるため、一般にカスタムの配信不能キューを使用することをお勧めします。カスタムの配信不能キューを使用しない場合は、システムで実行されているすべてのアプリケーションで発生するすべての配信不能メッセージが 1 つのキューに配信されます。この場合、各アプリケーションは配信不能キュー全体を検索して、それぞれのアプリケーションに関連する配信不能メッセージを見つける必要があります。MSMQ 3.0 を使用する場合など、カスタムの配信不能キューを使用できないこともあります。 + + エンド ツー エンドの信頼性が必要な通信では、配信不能キューを無効にすることはお勧めしません。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [配信不能キューを使用したメッセージ転送エラー処理](../../../../docs/framework/wcf/feature-details/using-dead-letter-queues-to-handle-message-transfer-failures.md). + +### 有害メッセージ処理の使用 + 有害メッセージ処理は、メッセージ処理のエラーから回復する機能を提供します。 + + 有害メッセージ処理機能を使用する場合は、 プロパティが適切な値に設定されていることを確認します。このプロパティを に設定すると、データが失われることになります。一方、 に設定すると、有害メッセージが検出されたときにサービス ホストでエラーが発生します。MSMQ 3.0 を使用する場合、データの損失を防ぎ、有害メッセージを取り除くための最適なオプションは です。MSMQ 4.0 を使用する場合は、 が推奨されます。 に設定すると有害メッセージがキューから取り除かれるため、サービスは新しいメッセージの処理を続行できます。有害メッセージ サービスは、取り除かれた有害メッセージを別個に処理できます。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [有害メッセージ処理](../../../../docs/framework/wcf/feature-details/poison-message-handling.md). + +## 高スループットの実現 + 単一のエンドポイントで高スループットを実現するには、以下を使用します。 + +- トランザクション バッチ。トランザクション バッチでは、1 回のトランザクションで多くのメッセージを読み取ることができます。これにより、トランザクションのコミットが最適化され、全体的なパフォーマンスが向上します。バッチ処理の難点は、バッチ内の 1 つのメッセージでエラーが発生した場合に、バッチ全体をロールバックし、再び安全にバッチ処理できるようになるまで、メッセージを 1 つずつ処理する必要があることです。ほとんどの場合、有害メッセージはまれであるため、特にトランザクションに他のリソース マネージャーが参加している場合は、バッチ処理がシステム パフォーマンスを向上させる方法として推奨されます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][トランザクションに含まれるメッセージのバッチ処理](../../../../docs/framework/wcf/feature-details/batching-messages-in-a-transaction.md). + +- 同時実行。同時実行によりスループットが向上します。ただし、同時実行は共有リソースの競合に影響します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][同時実行](../../../../docs/framework/wcf/samples/concurrency.md). + +- 調整。最適なパフォーマンスを実現するために、ディスパッチャー パイプラインのメッセージの数を調整します。この調整を行う方法の例については、「[調整](../../../../docs/framework/wcf/samples/throttling.md)」を参照してください。 + + バッチ処理を使用する場合は、同時実行と調整は同時バッチに変換されることに気をつけてください。 + + スループットと可用性を高めるには、キューから読み取る [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのファームを使用します。この場合、ファームのすべてのサービスが同じエンドポイントで同じコントラクトを公開している必要があります。ファームを使用すると、多数のサービスがすべて同じキューから読み取ることができるため、この方法はメッセージの生成率が高いアプリケーションで最も効果を発揮します。 + + ファームを使用する場合、MSMQ 3.0 ではリモート トランザクション読み取りがサポートされていないので注意してください。MSMQ 4.0 は、リモート トランザクション読み取りをサポートしています。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、「[トランザクションに含まれるメッセージのバッチ処理](../../../../docs/framework/wcf/feature-details/batching-messages-in-a-transaction.md)」および「[Windows Vista、Windows Server 2003、および Windows XP におけるキュー機能の相違点](../../../../docs/framework/wcf/feature-details/diff-in-queue-in-vista-server-2003-windows-xp.md)」を参照してください。 + +## 作業単位のセマンティクスによるキュー処理 + キューにある一連のメッセージが関連している可能性があるため、これらのメッセージの順序付けが重要となるシナリオがあります。このようなシナリオでは、関連するメッセージのグループを 1 つの単位としてまとめて処理します。つまり、すべてのメッセージが正常に処理されるか、どのメッセージも処理されないかのいずれかになります。このような動作を実装するには、キューでセッションを使用します。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [セッションでキューに置かれたメッセージのグループ化](../../../../docs/framework/wcf/feature-details/grouping-queued-messages-in-a-session.md). + +## 要求\/応答メッセージの関連付け + 通常、キューは一方向ですが、シナリオによっては、受信した応答を以前に送信した要求に関連付けることが必要になる場合があります。このような関連付けが必要な場合、関連付け情報を含む独自の SOAP メッセージ ヘッダーをメッセージに追加することをお勧めします。通常、送信側がこのヘッダーをメッセージに添付すると、受信側は、このメッセージを処理して応答キューにある新しいメッセージで応答するときに、関連付け情報を含む送信側のメッセージ ヘッダーを添付します。これにより、送信側は要求メッセージを使用して応答メッセージを識別できます。 + +## 非 WCF アプリケーションとの統合 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスまたはクライアントを非 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスまたはクライアントと統合するときには、`MsmqIntegrationBinding` を使用します。非 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションには、System.Messaging、COM\+、[!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)]、または C\+\+ を使用して作成された MSMQ アプリケーションなどがあります。 + + `MsmqIntegrationBinding` を使用するときは、以下の点に注意してください。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージの本文は、MSMQ メッセージの本文と同じではありません。キューに置かれたバインディングを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージを送信する場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージの本文が MSMQ メッセージの内部に配置されます。MSMQ インフラストラクチャは、この追加情報を認識しません。認識するのは、MSMQ メッセージだけです。 + +- `MsmqIntegrationBinding` では、よく使用されるシリアル化型をサポートしています。ジェネリック メッセージである の本文の型は、シリアル化型に基づいてさまざまな型パラメーターを受け取ります。たとえば、 には `MsmqMessage\` が必要であり、 には `MsmqMessage` が必要です。 + +- XML シリアル化では、[\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md) 要素の `KnownTypes` 属性を使用して既知の型を指定できます。この型は、後で XML メッセージを逆シリアル化する方法を確認する際に使用されます。 + +## 参照 + [WCF でのキュー](../../../../docs/framework/wcf/feature-details/queuing-in-wcf.md) + [方法 : WCF エンドポイントを使用してキューに置かれたメッセージを交換する](../../../../docs/framework/wcf/feature-details/how-to-exchange-queued-messages-with-wcf-endpoints.md) + [方法 : WCF エンドポイントとメッセージ キュー アプリケーションを使用してメッセージを交換する](../../../../docs/framework/wcf/feature-details/how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md) + [セッションでキューに置かれたメッセージのグループ化](../../../../docs/framework/wcf/feature-details/grouping-queued-messages-in-a-session.md) + [トランザクションに含まれるメッセージのバッチ処理](../../../../docs/framework/wcf/feature-details/batching-messages-in-a-transaction.md) + [配信不能キューを使用したメッセージ転送エラー処理](../../../../docs/framework/wcf/feature-details/using-dead-letter-queues-to-handle-message-transfer-failures.md) + [有害メッセージ処理](../../../../docs/framework/wcf/feature-details/poison-message-handling.md) + [Windows Vista、Windows Server 2003、および Windows XP におけるキュー機能の相違点](../../../../docs/framework/wcf/feature-details/diff-in-queue-in-vista-server-2003-windows-xp.md) + [トランスポート セキュリティを使用したメッセージのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-messages-using-transport-security.md) + [メッセージ セキュリティを使用したメッセージのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-messages-using-message-security.md) + [キューに置かれたメッセージングのトラブルシューティング](../../../../docs/framework/wcf/feature-details/troubleshooting-queued-messaging.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/best-practices-for-reliable-sessions.md b/docs/framework/wcf/feature-details/best-practices-for-reliable-sessions.md new file mode 100644 index 00000000000..81bdc774c6a --- /dev/null +++ b/docs/framework/wcf/feature-details/best-practices-for-reliable-sessions.md @@ -0,0 +1,82 @@ +--- +title: "信頼できるセッションのベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b94f6e01-8070-40b6-aac7-a2cb7b4cb4f2 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 信頼できるセッションのベスト プラクティス +ここでは、信頼できるセッションに関するベスト プラクティスをいくつか紹介します。 + +## MaxTransferWindowSize の設定 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の信頼できるセッションでは、転送ウィンドウを使用して、クライアント側およびサービス側のメッセージを保持しています。 プロパティは、この転送ウィンドウに保持できるメッセージの最大数を表します。 + + 送信側については、送信後に受信確認の到着を待機しているメッセージ、受信側についてはサービスの処理待ちメッセージを、それぞれいくつまで保持しておけるかを表します。 + + この値がネットワークやサービスの処理効率にも影響します。 以下では、このプロパティの値を決める上で検討する事項と、その値が与える影響について解説します。 + + 転送ウィンドウ サイズの既定メッセージ数は 8 です。 + +### ネットワークの利用効率 + ここでいう*ネットワーク*は、クライアント \(送信側\) とサービス \(受信側\) が通信基盤として使用するものすべてを指します。 したがって、伝送路だけでなく、その間に介在する SOAP ルーターや HTTP プロキシ\/ファイアウォールなども含まれます。 + + ネットワーク効率が高いとは、その伝送容量を最大限に活用できるということです。 1 秒間に伝送できるデータ量 *\(データ レート\)*、送信側から受信側にデータが届くまでにかかる時間 *\(遅延\)* のどちらもが、ネットワーク効率に関係します。 + + 送信側については、転送ウィンドウに保持できる受信確認の到着を待機しているメッセージの数が プロパティによって表されます。 つまり、遅延が大きいネットワークほど、応答性を高めてネットワーク利用効率を上げるために、転送ウィンドウ サイズを増やす必要があります。 + + 送信側で高いデータ レートを維持していても、受信側に到達するまでにいくつもの中継装置 \(ルーターなど\) が介在していたり、データ消失が発生したりすると、遅延は大きくなります。 したがって、送出したメッセージは、受信確認が届くまで長い時間転送ウィンドウに保持しておかなければならず、これが上限に達すると次のメッセージを送出できません。 このように、遅延が大きいのに転送ウィンドウ サイズが小さいと、ネットワーク効率が損なわれてしまいます。 一方、これが大き過ぎると、受信側には次々にメッセージが届くため、サービスの処理効率に悪影響を与える可能性があります。 + +### サービスの可用性向上 + ネットワーク効率が最適であれば、サービスも処理能力を最大限に活用して稼働させるのが理想的です。 受信側の転送ウィンドウ サイズは、処理待ちのメッセージをいくつまで保持しておけるかを表します。 メッセージをこのようにバッファーに保持することは、ネットワークのフロー制御だけでなく、処理能力を最大限に活用したサービス稼働にも役立ちます。 たとえば、バッファーに保持できるメッセージ数が 1 だとすると、サービスが処理できる以上の頻度でメッセージが届く場合、メッセージがネットワークによって廃棄されるほか、ネットワークの処理能力が無駄に消費され、十分に活用されないおそれがあります。 + + バッファーを使用すると、同時に複数のメッセージを受信し、前のメッセージが処理中であればそのまま保持しておくことができるので、サービスの可用性が向上します。 + + `MaxTransferWindowSize` の値は、送信側と受信側で同じにしておくことをお勧めします。 + +### フロー制御の有効化 + フロー制御とは、送信側と受信側とが歩調を揃えるための機構です。このしくみにより、メッセージが生成される速度で、メッセージの受け入れと処理が行われます。 クライアントとサービスの転送ウィンドウ サイズは、送信側と受信側が妥当な許容範囲内で同期できるように設定しなければなりません。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの間で信頼できるセッションを使用する場合、 プロパティを true に設定することを強くお勧めします。 + +## MaxPendingChannels の設定 + 通信セッションを開く相手 \(クライアント\) が可変であるように設計されたサービスは、同時にいくつものクライアントと信頼できるセッションを確立することができます。 このとき、サービスの応答性は、`MaxPendingChannels` プロパティによって決まります。 + + 信頼できるセッション チャネルが送信側によって作成されると、両者のハンドシェイクによって信頼できるセッションが確立します。 これが終わるとチャネルは保留チャネル キューに入り、サービス側からの応答を待機する状態になります。 `MaxPendingChannels` プロパティは、この状態にできるチャネルの数を表します。 + + 次々にセッションを確立していくと、サービス側は、これ以上新しいチャネルを使用してセッションを確立することができない状態になります。 キューがいっぱいになると、信頼できるセッションを確立しようとしても拒否されるので、クライアント側はしばらく待って再試行するしかありません。 + + また、いったんキューに入った保留チャネルは、そのまま長期間留まる可能性があります。 そうしているうちに、信頼できるセッションが稼働していないとしてタイムアウトとなり、チャネルは "失敗" という状態に遷移します。 + + したがって、複数のクライアントに対して同時にサービスを提供するサービスの設計においては、この値を適切に決めることが重要です。 `MaxPendingChannels` プロパティの値が大き過ぎるとワーキング セットにも悪影響が現れます。 + + の既定値は 4 です。 + +## 信頼できるセッションとホスティング + 信頼できるセッションを使用するサービスを Web ホスティングする場合は、次のことを念頭に置く必要があります。 + +- 信頼できるセッションはステートフルであり、状態は AppDomain で管理されます。 したがって、信頼できるセッションでやりとりするメッセージはすべて、同じ AppDomain で処理する必要があります。 Web ファームや Web ガーデンで、ファームやガーデンのサイズが 1 より大きいと、この制約への準拠が保証されません。 + +- 信頼できるセッションで双方向 HTTP チャネル \(`WsDualHttpBinding` など\) が使用される場合、クライアントあたりの HTTP 接続数が、既定値である 2 では足りなくなる可能性があります。 双方向の信頼できるセッションでは、アプリケーション メッセージとプロトコル メッセージが同時に双方向で伝送されることがあり、その場合、一方向につき最大 2 つの接続が必要になるからです。 したがって、特定の条件下で、サービスのメッセージ交換パターンによっては、双方向 HTTP と信頼できるセッションを使用した Web ホスト サービスが、デッドロックを起こす可能性があります。 クライアントあたりの利用可能な HTTP 接続数を増やすには、適切な設定ファイル \(当該サービスの web.config など\) に、次のような記述を追加してください。 + +``` + + + + + + + +``` + + "XX" は必要な接続数を表します。 この場合、最小値は 4 になります。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/best-practices-for-security-in-wcf.md b/docs/framework/wcf/feature-details/best-practices-for-security-in-wcf.md new file mode 100644 index 00000000000..be9d58268ac --- /dev/null +++ b/docs/framework/wcf/feature-details/best-practices-for-security-in-wcf.md @@ -0,0 +1,68 @@ +--- +title: "WCF のセキュリティのベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ベスト プラクティス [WCF], セキュリティ" +ms.assetid: 3639de41-1fa7-4875-a1d7-f393e4c8bd69 +caps.latest.revision: 19 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 19 +--- +# WCF のセキュリティのベスト プラクティス +以下のセクションでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用してセキュリティで保護されたアプリケーションを作成する場合に考慮する必要のあるベスト プラクティスを示します。セキュリティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md)」、「[セキュリティに関するデータの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-for-data.md)」、および「[メタデータを使用する場合のセキュリティ上の考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-with-metadata.md)」を参照してください。 + +## Windows 認証での SPN を使用したサービスの識別 + サービスはユーザー プリンシパル名 \(UPN\) またはサービス プリンシパル名 \(SPN\) によって識別できます。ネットワーク サービスのようにコンピューター アカウントを使用して実行するサービスには、サービスが実行されるコンピューターに対応する SPN ID があります。ユーザー アカウントを使用して実行するサービスには、そのユーザーに対応する UPN ID があります。ただし、`setspn` ツールを使用するとユーザー アカウントに SPN 割り当てることができます。サービスが SPN によって識別されるように構成し、サービスに接続するクライアントが SPN を使用してサービスに接続するように構成すると、攻撃の種類によっては攻撃が困難になります。このガイダンスは Kerberos または SSPI ネゴシエーションを使用するバインディングに適用されます。その場合でも、SSPI が使用できなくて NTLM が使用される場合に備えて、クライアントは SPN を指定する必要があります。 + +## WSDL でのサービス ID の検証 + WS\-SecurityPolicy ではサービスが自己の ID に関する情報をメタデータの中で公開できるようになっています。この ID 情報は `svcutil` で取得した場合や などその他の方法で取得した場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス エンドポイント アドレスの ID プロパティに変換されます。サービス ID が正しく有効であることを検証しないクライアントは、実質上サービス認証をバイパスすることになります。悪意を持ったサービスは、資格情報の転送やその他の "man in the middle" 攻撃を実行するために、その WSDL での ID 宣言を変更することによって、このようなクライアントを利用できます。 + +## NTLM の代わりに X509 証明書を使用する + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ピアツーピア認証用に X509 証明書 \(ピア チャネルで使用\) と SSPI ネゴシエーションが Kerberos から NTLM にダウングレードされたときに使用される Windows 認証の 2 つのメカニズムが提供されています。1024 ビット以上のキー サイズを使用する証明書ベースの認証が NTLM より好ましい理由はいくつかあります。 + +- 相互認証が可能 + +- 暗号化アルゴリズムの強化 + +- 転送された X509 資格情報の利用が難しくなる + + NTLM 転送攻撃の概要については、[http:\/\/msdn.microsoft.com\/msdnmag\/issues\/06\/09\/SecureByDesign\/default.aspx](http://go.microsoft.com/fwlink/?LinkId=109571) を参照してください。 + +## 偽装後は必ず元に戻す + クライアントの偽装を有効にする API を使用した後は、必ず元の ID に戻してください。たとえば、 および を使用する場合は、次のコードに示すように、C\# の `using` ステートメントまたは [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] の `Using` ステートメントを使用します。 クラスは インターフェイスを実装しているため、コードが `using` ブロックを抜けると共通言語ランタイム \(CLR: Common Language Runtime\) は自動的に元の ID に戻ります。 + + [!code-csharp[c_SecurityBestPractices#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securitybestpractices/cs/source.cs#1)] + [!code-vb[c_SecurityBestPractices#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securitybestpractices/vb/source.vb#1)] + +## 必要な場合のみ偽装を行う + クラスの メソッドを使用すると、非常に限られたスコープでしか偽装を使用できなくなります。これは、操作全体のスコープで偽装が許可される プロパティとは対照的です。可能な限り、 メソッドを使用して偽装のスコープをより厳密に制御します。 + +## 信頼されたソースからメタデータを取得する + メタデータのソースが信頼できることと、メタデータが改ざんされていないことを確認します。HTTP プロトコルを使用して取得したメタデータはクリア テキストで送信されるため、改ざんされる可能性があります。サービスが および プロパティを使用している場合は、サービス作成者によって提供された URL を使用して HTTPS プロトコルを介してデータをダウンロードします。 + +## セキュリティを使用してメタデータを公開する + サービスが公開したメタデータの改ざんを防ぐには、トランスポート レベルまたはメッセージ レベルのセキュリティを使用して、メタデータ交換エンドポイントをセキュリティで保護します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[メタデータ エンドポイントを公開する](../../../../docs/framework/wcf/publishing-metadata-endpoints.md)」および「[方法 : コードを使用してサービスのメタデータを公開する](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-code.md)」を参照してください。 + +## ローカル発行者の使用を確認する + 特定のバインディングに対して発行者アドレスとバインディングが指定されている場合、ローカル発行者はこのバインディングを使用するエンドポイントには使用されません。ローカル発行者を常に使用する必要があるクライアントには、このようなバインディングが使用されることがないか、または発行者アドレスが null となるようにクライアントによってバインディングが変更されることが保証されている必要があります。 + +## SAML トークン サイズのクォータ + セキュリティ トークン サービス \(STS: Security Token Service\) によって SAML \(Security Assertions Markup Language\) トークンが発行されたとき、またはクライアントが認証の一部としてこれをサービスに提示したときに、SAML トークンがメッセージ内にシリアル化される場合は、メッセージの最大クォータ サイズが、SAML トークンおよびメッセージの他の部分を格納できるだけの大きさである必要があります。通常は、既定のメッセージ クォータ サイズで十分です。ただし、数百のクレームを含んでいるために SAML トークンのサイズが大きい場合には、シリアル化されたトークンを格納できるように、クォータを増やす必要があります。クォータ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[セキュリティに関するデータの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-for-data.md)」を参照してください。 + +## カスタム バインディングで SecurityBindingElement.IncludeTimestamp を true に設定する + カスタム バインディングを作成するときは、 を `true` に設定する必要があります。 が `false` に設定されている場合に、クライアントが、X509 証明書などの非対称キーに基づくトークンを使用すると、メッセージは署名されません。 + +## 参照 + [セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md) + [セキュリティに関するデータの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-for-data.md) + [メタデータを使用する場合のセキュリティ上の考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-with-metadata.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/bindings-and-security.md b/docs/framework/wcf/feature-details/bindings-and-security.md new file mode 100644 index 00000000000..69c5c0d55d9 --- /dev/null +++ b/docs/framework/wcf/feature-details/bindings-and-security.md @@ -0,0 +1,239 @@ +--- +title: "バインディングとセキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "バインディング [WCF]" + - "バインディング [WCF], セキュリティ" + - "WCF セキュリティ" + - "Windows Communication Foundation, セキュリティ" +ms.assetid: 4de03dd3-968a-4e65-af43-516e903d7f95 +caps.latest.revision: 42 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 42 +--- +# バインディングとセキュリティ +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に用意されたシステム指定のバインディングを使用すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションをすばやくプログラミングできます。1 つの例外を除き、すべてのバインディングにはセキュリティ スキームが含まれており、既定で有効になっています。ここでは、セキュリティ ニーズに適した正しいバインディングの選択方法について説明します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティの概要については、「[セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md)」を参照してください。バインディングを使用した [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のプログラミング[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WCF セキュリティのプログラミング](../../../../docs/framework/wcf/feature-details/programming-wcf-security.md)」を参照してください。 + + バインディングを既に選択している場合、セキュリティに関連する実行時の動作の詳細については、「[セキュリティ動作](../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md)」を参照してください。 + + セキュリティ機能のなかには、システム指定のバインディングを使用してプログラミングできないものがあります。カスタム バインディングを使用したより細かな制御については、「[カスタム バインディングを使用したセキュリティ機能](../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md)」を参照してください。 + +## バインディングのセキュリティ機能 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、ほとんどのニーズを満たすシステム指定のバインディングが多数用意されています。特定のバインディングでは不十分な場合は、カスタム バインディングを作成することもできます。システム指定のバインディングの一覧については、「[システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。カスタム バインディング[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のすべてのバインディングには、API としての形式と、構成ファイルで使用する XML 要素としての形式という 2 つの形式があります。たとえば、`WSHttpBinding` \(API\) に対応する要素は [\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)です。 + + 以下のセクションでは、各バインディングについて両方の形式を示し、セキュリティ機能の概要を説明します。 + +### BasicHttp + コードでは クラスを使用し、構成では [\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)を使用します。 + + このバインディングは、次のような既存のさまざまなテクノロジと共に使用できるようにデザインされています。 + +- ASP.NET Web サービス \(ASMX\) Version 1 + +- Web サービス拡張 \(WSE\) アプリケーション + +- WS\-I \(Web Services Interoperability\) 仕様 \([http:\/\/go.microsoft.com\/fwlink\/?LinkId\=38955](http://go.microsoft.com/fwlink/?LinkId=38955)\) で定義されている基本プロファイル + +- WS\-I で定義されている基本セキュリティ プロファイル + + 既定では、このバインディングはセキュリティで保護されません。ASMX サービスと相互運用するように設計されています。セキュリティを有効にした場合、このバインディングは、インターネット インフォメーション サービス \(IIS: Internet Information Services\) のセキュリティ機構 \(基本認証、ダイジェスト、Windows 統合セキュリティなど\) とシームレスに相互運用できるように設計されています。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][トランスポート セキュリティの概要](../../../../docs/framework/wcf/feature-details/transport-security-overview.md).このバインディングでは、以下をサポートしています。 + +- HTTPS トランスポート セキュリティ + +- HTTP 基本認証 + +- WS\-Security。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] 、および 。 + +### WSHttpBinding + コードでは クラスを使用し、構成では [\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)を使用します。 + + 既定では、このバインディングは WS\-Security 仕様を実装しており、WS\-\* 仕様を実装するサービスとの相互運用性があります。次のセキュリティをサポートします。 + +- HTTPS トランスポート セキュリティ。 + +- WS\-Security。 + +- SOAP メッセージ資格情報セキュリティを使用した、HTTPS トランスポート保護による呼び出し元の認証。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] 、および 。 + +### WSDualHttpBinding + コードでは クラスを使用し、構成では [\](../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md)を使用します。 + + このバインディングは、双方向サービス アプリケーションを有効にするために設計されています。このバインディングは、メッセージ ベースの転送セキュリティ用に WS\-Security 仕様を実装しています。トランスポート セキュリティは使用できません。既定では、次の機能を提供します。 + +- WS\-ReliableMessaging を実装して信頼性を確保します。 + +- WS\-Security を実装して転送セキュリティおよび認証を実現します。 + +- HTTP を使用してメッセージを配信します。 + +- テキスト\/XML メッセージ エンコーディングを使用します。 + + バインディングで WS\-Security \(メッセージ層セキュリティ\) を使用すると、次のパラメーターを構成できるようになります。 + +- 暗号アルゴリズムを決定するためのセキュリティ アルゴリズム スイート + +- 以下を行うためのバインディング オプション + + - クライアントで帯域外で使用可能なサービス資格情報の提供 + + - チャネル セットアップの一部としてサービスからネゴシエートされるサービス資格情報の提供 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「」および「」を参照してください。 + +### NetTcpBinding + コードでは クラスを使用し、構成では [\](../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md)を使用します。 + + このバインディングは複数のコンピューター間での通信に最適化されています。既定では、次の特性があります。 + +- トランスポート層セキュリティを実装します。 + +- Windows セキュリティを利用して、転送セキュリティと認証を確保します。 + +- トランスポートに TCP を使用します。 + +- バイナリ メッセージのエンコードを実装します。 + +- WS\-ReliableMessaging を実装します。 + + 選択できる方法は次のとおりです。 + +- メッセージ層セキュリティ \(WS\-Security を使用\) + +- メッセージ資格情報を使用するトランスポート セキュリティ \(TLS \(Transport Layer Security\) over TCP によって実現される機密性と整合性、および WS\-Security によって提供される承認に使用する資格情報\) + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] 、および 。 + +### NetNamedPipeBinding + コードでは クラスを使用し、構成では [\](../../../../docs/framework/configure-apps/file-schema/wcf/netnamedpipebinding.md)を使用します。 + + このバインディングは、\(通常では同じコンピューター上の\) 複数プロセス間の通信に最適化されています。既定では、このバインディングには次の特性があります。 + +- トランスポート セキュリティを使用して、メッセージ転送と認証を実現します。 + +- 名前付きパイプを使用してメッセージを配信します。 + +- バイナリ メッセージのエンコードを実装します。 + +- 暗号化とメッセージの署名を使用します。 + + 選択できる方法は次のとおりです。 + +- Windows セキュリティを使用した認証 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「」、「」、および「」を参照してください。 + +### MsmqIntegrationBinding + コードでは クラスを使用し、構成では [\](../../../../docs/framework/configure-apps/file-schema/wcf/msmqintegrationbinding.md)を使用します。 + + このバインディングは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] MSMQ \(Microsoft Message Queuing\) 以外のエンドポイントと相互運用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントおよびサービスの作成用に最適化されています。 + + 既定では、このバインディングはトランスポート セキュリティを使用し、次のセキュリティ特性を提供します。 + +- セキュリティは無効 \(なし\) にできます。 + +- MSMQ トランスポート セキュリティ \(トランスポート\)。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「」および「」を参照してください。 + +### NetMsmqBinding + コードでは クラスを使用し、構成では [\](../../../../docs/framework/configure-apps/file-schema/wcf/netmsmqbinding.md)を使用します。 + + このバインディングは、MSMQ のキューに置かれたメッセージのサポートを必要とする [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの作成時に使用します。 + + 既定では、このバインディングはトランスポート セキュリティを使用し、次のセキュリティ特性があります。 + +- セキュリティは無効 \(なし\) にできます。 + +- MSMQ トランスポート セキュリティ \(トランスポート\)。 + +- SOAP に基づくメッセージ セキュリティ \(メッセージ\)。 + +- トランスポート セキュリティとメッセージ セキュリティ \(両方\)。 + +- サポートされるクライアント資格情報の種類 : なし、Windows、UserName、証明書、IssuedToken。 + + 資格情報は、セキュリティ モードが または に設定されている場合にのみサポートされます。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「」および「」を参照してください。 + +### WSFederationHttpBinding + コードでは クラスを使用し、構成では [\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)を使用します。 + + 既定では、このバインディングは WS\-Security \(メッセージ層セキュリティ\) を使用します。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、「[フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md)」、「」、および「」を参照してください。 + +## カスタム バインディング + システム指定のバインディングがいずれも要件を満たさない場合は、カスタム セキュリティ バインド要素を使用してカスタム バインディングを作成できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][カスタム バインディングを使用したセキュリティ機能](../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md). + +## バインディングの選択肢 + 次の表は、セキュリティ モード設定で提供される機能をまとめたものです。つまり、セキュリティ モードを `Transport`、`Message`、または `TransportWithMessageCredential` に設定したときに使用できる機能の一覧です。アプリケーションで必要なセキュリティ機能を決定するときに、この表を参考にしてください。 + +|設定|機能| +|--------|--------| +|トランスポート|サーバー認証

クライアント認証

Point\-to\-Point のセキュリティ

相互運用性

ハードウェア アクセラレータ

高いスループット

セキュリティで保護されたファイアウォール

待機時間の長いアプリケーション

複数のホップでの再暗号化| +|メッセージ|サーバー認証

クライアント認証

エンド ツー エンドのセキュリティ

相互運用性

多様なクレーム

フェデレーション

複数要因の認証

カスタム トークン

Notary\/Timestamp サービス

待ち時間の長いアプリケーション

メッセージ署名の永続化| +|TransportWithMessageCredential|サーバー認証

クライアント認証

Point\-to\-Point のセキュリティ

相互運用性

ハードウェアの高速化

高いスループット

多様なクライアント クレーム

フェデレーション

複数要因の認証

カスタム トークン

セキュリティで保護されたファイアウォール

待ち時間の長いアプリケーション

複数のホップでの再暗号化| + + さまざまなモード設定をサポートするバインディングを次の表に示します。サービス エンドポイントを作成するときは、使用するバインディングをこの表から選択してください。 + +|バインディング|トランスポート モードのサポート|メッセージ モードのサポート|TransportWithMessageCredential のサポート| +|-------------|----------------------|--------------------|------------------------------------------| +|`BasicHttpBinding`|○|○|○| +|`WSHttpBinding`|○|○|○| +|`WSDualHttpBinding`|×|○|×| +|`NetTcpBinding`|○|○|○| +|`NetNamedPipeBinding`|○|×|×| +|`NetMsmqBinding`|○|○|×| +|`MsmqIntegrationBinding`|○|×|×| +|`wsFederationHttpBinding`|×|○|○| + +## バインディングにおけるトランスポート資格情報 + トランスポート セキュリティ モードで `BasicHttpBinding` または `WSHttpBinding` を使用するときに使用できるクライアント資格情報の種類を、次の表に示します。 + +|種類|説明| +|--------|--------| +|なし|クライアントは資格情報を提示する必要がないことを指定します。匿名クライアントであると解釈されます。| +|基本|基本認証です。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「RFC 2617 – HTTP Authentication: Basic and Digest Authentication」を参照してください。このドキュメントは、[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=84023](http://go.microsoft.com/fwlink/?LinkId=84023) で参照できます。| +|ダイジェスト|ダイジェスト認証です。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「RFC 2617 – HTTP Authentication: Basic and Digest Authentication」を参照してください。このドキュメントは、[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=84023](http://go.microsoft.com/fwlink/?LinkId=84023) で参照できます。| +|NTLM|NTLM \(NT LAN Manager\) 認証です。| +|Windows|Windows 認証です。| +|証明書|証明書を使用して実行される認証です。| +|IssuedToken|セキュリティ トークン サービスまたは [!INCLUDE[infocard](../../../../includes/infocard-md.md)] によって発行されたトークンを使用したクライアントの認証を、サービスが要求できるようにします。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md).| + +### バインディングにおけるメッセージ クライアント資格情報 + メッセージ セキュリティ モードでバインディングを使用するときに使用できる、クライアント資格情報の種類を次の表に示します。 + +|型|説明| +|-------|--------| +|なし|サービスが匿名クライアントとやり取りを行うことが可能になります。| +|Windows|Windows 資格情報の認証済みコンテキストの制御下で SOAP メッセージ交換を行うことができます。| +|UserName|サービスが、ユーザー名資格情報を使用したクライアントの認証を要求できるようにします。セキュリティ モードが `TransportWithMessageCredential` に設定されている場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、パスワード ダイジェストの送信、またはパスワードを使用したキーの派生、およびメッセージ モード セキュリティでのこのようなキーの使用がサポートされません。そのため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ユーザー名資格情報を使用する場合に、トランスポートが強制的にセキュリティで保護されます。| +|Certificate|証明書を使用したクライアントの認証を、サービスで要求することが可能になります。| +|IssuedToken|サービスは、セキュリティ トークン サービスを使用してカスタム トークンを提供できます。| + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [資格情報の種類の選択](../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [セキュリティ動作](../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/bindings.md b/docs/framework/wcf/feature-details/bindings.md new file mode 100644 index 00000000000..16e40156091 --- /dev/null +++ b/docs/framework/wcf/feature-details/bindings.md @@ -0,0 +1,50 @@ +--- +title: "Windows Communication Foundation バインディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "バインディング [WCF]" + - "WCF [WCF], バインディング" + - "Windows Communication Foundation [WCF], バインディング" +ms.assetid: 83639133-89f7-43f0-b4ef-8d9e57c08d25 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# Windows Communication Foundation バインディング +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、アプリケーション ソフトウェアを作成する方法と、アプリケーション ソフトウェアが他のソフトウェアと通信する方法は分離されています。バインディングを使用して、クライアントとサービスが相互に通信するために必要なトランスポート、エンコーディング、およびプロトコルの詳細を指定します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、バインディングを使用してエンドポイントの基になるネットワーク上の表現を生成します。このため、バインディングの詳細の大半について通信している双方が合意する必要があります。これを実現する最も簡単な方法は、サービスのクライアントがサービスのエンドポイントと同じバインディングを使用することです。その方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb)」を参照してください。 + + バインディングは、バインド要素のコレクションで構成されます。各要素は、エンドポイントがクライアントと通信する方法の一部分を記述します。バインディングには、1 つ以上のトランスポート バインド要素、1 つ以上のメッセージ エンコーディング バインド要素 \(既定では、トランスポート バインド要素によって提供されます\)、および任意の数の他のプロトコル バインド要素が含まれている必要があります。このように、ランタイムをビルドするプロセスでは、各バインド要素からランタイムにコードを提供できます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、一般的なバインド要素を含むさまざまなバインディングが用意されています。これらのバインディングは、既定の設定で使用することも、ユーザーの要件に応じて既定値を変更することもできます。これらのシステム指定のバインディングには、バインド要素およびその設定を直接制御できるプロパティが含まれます。また、バインディングの各バージョンに独自の名前を付けることで、複数のバージョンを同時に使用することもできます。詳細については、「[システムが提供するバインディングの構成](../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md)」を参照してください。 + + システム指定のバインディングに用意されていないバインド要素のコレクションが必要になった場合には、その必要なバインド要素のコレクションで構成されるカスタム バインディングを作成できます。このようなカスタム バインディングは簡単に作成でき、新しいクラスも必要ありませんが、バインド要素およびその設定を制御するためのプロパティは提供されません。バインド要素へのアクセスと設定の変更は、バインド要素を含むコレクションを通じて行います。詳細については、「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください。 + +## このセクションの内容 + [システムが提供するバインディングの構成](../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + 一般的なシナリオをサポートするために [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意されたバインディングを使用および変更する方法について説明します。 + + [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/ja-jp/bd8b277b-932f-472f-a42a-b02bb5257dfb) + サービスおよびクライアントで使用する [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] バインディングをコードで強制的に定義する方法と、構成を使用して宣言によって定義する方法について説明します。 + + [カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md) + の概要と使用する状況について説明します。 + +## 関連項目 + + + + + + +## 関連項目 + [バインディングの拡張](../../../../docs/framework/wcf/extending/extending-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/building-a-peer-channel-application.md b/docs/framework/wcf/feature-details/building-a-peer-channel-application.md new file mode 100644 index 00000000000..b1b523adf75 --- /dev/null +++ b/docs/framework/wcf/feature-details/building-a-peer-channel-application.md @@ -0,0 +1,36 @@ +--- +title: "ピア チャネル アプリケーションの構築 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a69a1b8f-8e15-45c5-87b8-bdb71e1c7ab8 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ピア チャネル アプリケーションの構築 +次のセクションでは、ピア チャネル アプリケーションの開発に関するガイダンスを示します。 + +## このセクションの内容 + [NetTcpBinding アプリケーションからピア チャネル アプリケーションへの変換](../../../../docs/framework/wcf/feature-details/converting-a-nettcpbinding-application-to-a-peer-channel-application.md) + NetTcpBinding アプリケーションをピア チャネル アプリケーションに変換する方法について説明します。 + + [メッセージ配布の制限](../../../../docs/framework/wcf/feature-details/limiting-message-distribution.md) + ホップ数、メッセージ伝達フィルター、ローカル フィルター、または直接接続を使用し、メッシュを経由してメッセージを転送する方法について説明し、1 つの方法を選択するための一般的なガイドラインを示します。 + + [オンライン ステータスとオフライン ステータスの追加](../../../../docs/framework/wcf/feature-details/adding-online-and-offline-status.md) + インターフェイスを使用して、ピア チャネル接続のオンラインおよびオフライン ステータスに関する明確な詳細情報を監視する方法について説明します。 + + [セキュリティによるピア チャネル アプリケーションの保護](../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md) + トランスポート ベースとメッセージ ベースのセキュリティ、およびピア チャネル アプリケーションのベスト プラクティスについて説明します。 + +## 参照 + [ピア チャネルの概要](../../../../docs/framework/wcf/feature-details/peer-channel-concepts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/caching-support-for-wcf-web-http-services.md b/docs/framework/wcf/feature-details/caching-support-for-wcf-web-http-services.md new file mode 100644 index 00000000000..0553309ab95 --- /dev/null +++ b/docs/framework/wcf/feature-details/caching-support-for-wcf-web-http-services.md @@ -0,0 +1,172 @@ +--- +title: "WCF WEB HTTP サービスのキャッシュ サポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7f8078e0-00d9-415c-b8ba-c1b6d5c31799 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# WCF WEB HTTP サービスのキャッシュ サポート +[!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] を使用すると、WCF Web HTTP サービスの ASP.NET で既に提供されている、宣言によるキャッシュ機構を使用できます。これにより、WCF Web HTTP サービス操作からの応答をキャッシュできます。キャッシュ用に構成されているサービスに対してユーザーが HTTP GET を送信すると、ASP.NET は、キャッシュされた応答を送り返し、サービス メソッドは呼び出されません。キャッシュの有効期限が切れると、ユーザーが次回に HTTP GET を送信したときに、サービス メソッドが呼び出され、応答が再度キャッシュされます。ASP.NET キャッシュ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ASP.NET のキャッシュの概要](http://go.microsoft.com/fwlink/?LinkId=152534)」を参照してください。 + +## 基本的な Web HTTP サービスのキャッシュ + WEB HTTP サービスのキャッシュを有効にするには、まず、 または に設定してサービスに適用し、ASP.NET との互換性を有効にする必要があります。 + + [!INCLUDE[netfx40_short](../../../../includes/netfx40-short-md.md)] では、キャッシュ プロファイル名を指定できる という新しい属性が導入されています。この属性は、サービス操作に適用されます。次の例では、 をサービスに適用して ASP.NET との互換性を有効にし、`GetCustomer` 操作をキャッシュできるように構成しています。 属性には、使用されるキャッシュ設定が含まれるキャッシュ プロファイルを指定します。 + +``` +[ServiceContract] AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)] + public class Service + { + [WebGet(UriTemplate = "{id}")] + [AspNetCacheProfile("CacheFor60Seconds")] + public Customer GetCustomer(string id) + { + // ... + } +} +``` + + また、ASP.NET 互換性モードを Web.config ファイルで有効にすることも必要です。次にその例を示します。 + +``` + + + + +``` + +> [!WARNING] +> ASP.NET 互換性モードが有効にされていない場合は、 が使用されて、例外がスローされます。 + + によって指定されたキャッシュ プロファイル名によって、Web.config 構成ファイルに追加されるキャッシュ プロファイルが特定されます。キャッシュ プロファイルは、\<`outputCacheSetting`\> 要素内に定義します。次にその構成例を示します。 + +``` + + + + + + + + + + + +``` + + これは、ASP.NET アプリケーションで使用できる構成要素と同じです。ASP.NET キャッシュ プロファイル[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、 を参照してください。Web HTTP サービスの場合、キャッシュ プロファイルで最も重要な属性は `cacheDuration` と `varyByParam` です。この 2 つの属性はどちらも必要です。`cacheDuration` は、応答がキャッシュに保持される時間 \(秒数\) を設定します。`varyByParam` では、応答のキャッシュに使用されるクエリ文字列パラメーターを指定できます。異なるクエリ文字列パラメーターの値を使用する要求は、すべて個別にキャッシュされます。たとえば、http:\/\/MyServer\/MyHttpService\/MyOperation?param\=10 に最初の要求を送ると、同じ URI を使用して送られるすべての後続の要求には、キャッシュされている応答が返されます \(キャッシュ期間が経過していない場合\)。クエリ文字列パラメーターの値が異なることを除いて同じである同様の要求に対する応答は、個別にキャッシュされます。このような個別のキャッシングを行わない場合は、`varyByParam` を "none" に設定します。 + +## SQL キャッシュ依存関係 + Web HTTP サービスの応答も、SQL キャッシュ依存関係と併せてキャッシュできます。SQL データベースに格納されているデータに応じて WCF Web HTTP サービスが異なる場合は、サービスの応答をキャッシュして、キャッシュした応答を、SQL データベース テーブル内のデータの変更時に無効にすることもできます。この動作は、すべて Web.config ファイル内で構成します。まず、\<`connectionStrings`\> 要素に接続文字列を定義します。 + +``` + + + +``` + + 次に、\<`system.web`\> 要素内の \<`caching`\> 要素内で SQL キャッシュ依存関係を有効にします。次にその構成例を示します。 + +``` + + + + + + + + + + + +``` + + ここでは、SQL キャッシュ依存関係を有効にし、ポーリング タイムを 1000 ミリ秒に設定しています。ポーリング タイムが経過するたびに、データベース テーブルで更新の有無が確認されます。変更が検出されると、キャッシュの内容が削除され、次にサービス操作が呼び出されたときに、新しい応答がキャッシュされます。\<`sqlCacheDependency`\> 要素内にデータベースを追加し、\<`databases`\> 要素内の接続文字列を参照します。次にその例を示します。 + +``` + + + + + + + + + + + +``` + + 次に、\<`caching`\> 要素内に出力キャッシュの設定を構成します。次にその構成例を示します。 + +``` + + + + + + + + + + + +``` + + ここでは、キャッシュ期間が 60 秒に、`varyByParam` が none に設定されており、`sqlDependency` が、コロン区切りのデータベース名とテーブルのペアをセミコロンで区切ったリストに設定されています。`MyTable` のデータが変更されると、キャッシュされているサービス操作への応答が削除されます。この操作が呼び出されると、新しい応答が \(サービス操作の呼び出しによって\) 生成され、キャッシュされて、クライアントに返されます。 + +> [!IMPORTANT] +> ASP.NET から SQL データベースにアクセスするには、[ASP.NET SQL Server 登録ツール](http://go.microsoft.com/fwlink/?LinkId=152536)を使用する必要があります。また、適切なユーザー アカウントに、データベースおよびテーブルへのアクセスを許可する必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、「[Web アプリケーションから SQL Server へのアクセス](http://go.microsoft.com/fwlink/?LinkId=178988)」を参照してください。 + +## 条件付きの HTTP GET ベースのキャッシュ + Web HTTP シナリオでは、条件付き HTTP GET がサービスで使用されて、「[HTTP の仕様](http://go.microsoft.com/fwlink/?LinkId=165800)」で説明されているように、インテリジェントな HTTP キャッシュが実装されることがよくあります。そのためには、サービスが ETag ヘッダーの値を HTTP 応答に設定する必要があります。また、HTTP 要求の If\-None\-Match ヘッダーの値を確認して、指定されている ETag が現在の ETag と一致するかどうかを調べる必要もあります。 + + GET および HEAD 要求の場合、 は ETag 値を取得し、この値と要求内の If\-None\-Match ヘッダーとを比較します。ヘッダーが存在し、一致が見つかった場合は、HTTP ステータス コード 304 \(変更なし\) が設定された がスローされ、一致する ETag が設定されている応答に ETag ヘッダーが追加されます。 + + メソッドのオーバーロードの 1 つは、最終更新日を取得し、これを、要求の If\-Modified\-Since ヘッダーと比較します。ヘッダーが存在し、リソースが変更されていない場合は、HTTP ステータス コード 304 \(変更なし\) が設定された がスローされます。 + + PUT、POST、および DELETE の各要求の場合、 は、リソースの現在の ETag 値を取得します。現在の ETag 値が null の場合、メソッドは、If\-None\- Match ヘッダーの値が "\*" であるかどうかを確認します。現在の ETag 値が既定値ではない場合、メソッドは、現在の ETag 値と要求の If\-None\- Match ヘッダーを比較します。どちらの場合も、求められるヘッダーが要求内に存在しない、またはヘッダーの値がチェック条件を満たしていないと、メソッドは、HTTP ステータス コード 412 \(必須条件に失敗しました\) が設定された をスローし、応答の ETag ヘッダーを現在の ETag 値に設定します。 + + `CheckConditional` メソッドも メソッドも、応答ヘッダーに設定される ETag 値が、確実に HTTP 仕様に沿った有効な ETag になるようにします。これには、ETag 値を囲む二重引用符がない場合に二重引用符を付ける処理や、二重引用符内の文字を適切にエスケープする処理が含まれます。ETag の弱い比較はサポートされていません。 + + これらのメソッドを使用する方法の例を次に示します。 + +``` +[WebGet(UriTemplate = "{id}"), Description("Returns the specified customer from customers collection. Returns NotFound if there is no such customer. Supports conditional GET.")] +public Customer GetCustomer(string id) +{ + lock (writeLock) + { + // return NotFound if there is no item with the specified id. + object itemEtag = customerEtags[id]; + if (itemEtag == null) + { + throw new WebFaultException(HttpStatusCode.NotFound); + } + + // return NotModified if the client did a conditional GET and the customer item has not changed + // since when the client last retrieved it + WebOperationContext.Current.IncomingRequest.CheckConditionalRetrieve((long)itemEtag); + Customer result = this.customers[id] as Customer; + // set the customer etag before returning the result + WebOperationContext.Current.OutgoingResponse.SetETag((long)itemEtag); + return result; + } +} +``` + +## セキュリティに関する注意事項 + 承認が必要な要求の応答はキャッシュしないでください。応答がキャッシュから提供された場合は、承認が実行されません。このような応答をキャッシュすると、重大なセキュリティの脆弱性が生じます。通常、承認が必要な要求ではユーザー固有のデータが提供されるため、サーバー側でキャッシュしても利点はありません。このような場合は、クライアント側でキャッシュするか、単にキャッシュをまったく行わない方が適切です。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/calling-a-rest-style-service-from-a-wcf-service.md b/docs/framework/wcf/feature-details/calling-a-rest-style-service-from-a-wcf-service.md new file mode 100644 index 00000000000..8e63b1c7b46 --- /dev/null +++ b/docs/framework/wcf/feature-details/calling-a-rest-style-service-from-a-wcf-service.md @@ -0,0 +1,243 @@ +--- +title: "WCF サービスからの REST スタイル サービスの呼び出し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 77df81d8-7f53-4daf-8d2d-bf7996e94d5a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# WCF サービスからの REST スタイル サービスの呼び出し +標準の \(SOAP ベース\) WCF サービスから REST スタイルのサービスを呼び出すとき、受信要求に関する情報を含んでいるサービス メソッドの操作コンテキストは、送信要求が使用するコンテキストをオーバーライドします。 これにより、HTTP GET 要求は HTTP POST 要求に変更されます。 WCF サービスが正しいコンテキストを使用して REST スタイルのサービスを呼び出すには、新しい を作成し、操作コンテキスト スコープ内から REST スタイルのサービスを呼び出します。 このトピックでは、この手法を説明する簡単なサンプルを作成する方法について説明します。 + +## REST スタイルのサービス コントラクトを定義する + 簡単な REST スタイルのサービス コントラクトを定義する: + +``` +[ServiceContract] + public interface IRestInterface + { + [OperationContract, WebGet] + int Add(int x, int y); + [OperationContract, WebGet] + string Echo(string input); + } +``` + +## REST スタイルのサービス コントラクトを実装する + REST スタイルのサービス コントラクトを実装する: + +``` +public class RestService : IRestInterface + { + public int Add(int x, int y) + { + return x + y; + } + + public string Echo(string input) + { + return input; + } + } + +``` + +## WCF サービス コントラクトを定義する + REST スタイルのサービスの呼び出しに使用する WCF サービス コントラクトを定義する: + +``` +[ServiceContract] + public interface INormalInterface + { + [OperationContract] + int CallAdd(int x, int y); + [OperationContract] + string CallEcho(string input); + } +``` + +## WCF サービス コントラクトを実装する + WCF サービス コントラクトを実装する: + +``` +public class NormalService : INormalInterface + { + static MyRestClient client = new MyRestClient(RestServiceBaseAddress); + public int CallAdd(int x, int y) + { + return client.Add(x, y); + } + + public string CallEcho(string input) + { + return client.Echo(input); + } + } +``` + +## REST スタイルのサービスのクライアント プロキシを作成する + を使用してクライアント プロキシを実装します。 呼び出される各メソッドで、新しい が作成され、操作の呼び出しに使用されます。 + +``` +public class MyRestClient : ClientBase, IRestInterface + { + public MyRestClient(string address) + : base(new WebHttpBinding(), new EndpointAddress(address)) + { + this.Endpoint.Behaviors.Add(new WebHttpBehavior()); + } + + public int Add(int x, int y) + { + using (new OperationContextScope(this.InnerChannel)) + { + return base.Channel.Add(x, y); + } + } + + public string Echo(string input) + { + using (new OperationContextScope(this.InnerChannel)) + { + return base.Channel.Echo(input); + } + } + } +``` + +## サービスをホストし、呼び出す + コンソール アプリケーションの両方のサービスをホストし、必要なエンドポイントと動作を追加します。 次に、通常の WCF サービスを呼び出します。 + +``` +public static void Main() + { + ServiceHost restHost = new ServiceHost(typeof(RestService), new Uri(RestServiceBaseAddress)); + restHost.AddServiceEndpoint(typeof(IRestInterface), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior()); + restHost.Open(); + + ServiceHost normalHost = new ServiceHost(typeof(NormalService), new Uri(NormalServiceBaseAddress)); + normalHost.AddServiceEndpoint(typeof(INormalInterface), new BasicHttpBinding(), ""); + normalHost.Open(); + + Console.WriteLine("Hosts opened"); + + ChannelFactory factory = new ChannelFactory(new BasicHttpBinding(), new EndpointAddress(NormalServiceBaseAddress)); + INormalInterface proxy = factory.CreateChannel(); + + Console.WriteLine(proxy.CallAdd(123, 456)); + Console.WriteLine(proxy.CallEcho("Hello world")); + } +``` + +## 完全なコード リスト + このトピックで実装されるサンプルの完全なコード リストを次に示します。 + +``` +public class CallingRESTSample + { + static readonly string RestServiceBaseAddress = "http://" + Environment.MachineName + ":8008/Service"; + static readonly string NormalServiceBaseAddress = "http://" + Environment.MachineName + ":8000/Service"; + + [ServiceContract] + public interface IRestInterface + { + [OperationContract, WebGet] + int Add(int x, int y); + [OperationContract, WebGet] + string Echo(string input); + } + + [ServiceContract] + public interface INormalInterface + { + [OperationContract] + int CallAdd(int x, int y); + [OperationContract] + string CallEcho(string input); + } + + public class RestService : IRestInterface + { + public int Add(int x, int y) + { + return x + y; + } + + public string Echo(string input) + { + return input; + } + } + + public class MyRestClient : ClientBase, IRestInterface + { + public MyRestClient(string address) + : base(new WebHttpBinding(), new EndpointAddress(address)) + { + this.Endpoint.Behaviors.Add(new WebHttpBehavior()); + } + + public int Add(int x, int y) + { + using (new OperationContextScope(this.InnerChannel)) + { + return base.Channel.Add(x, y); + } + } + + public string Echo(string input) + { + using (new OperationContextScope(this.InnerChannel)) + { + return base.Channel.Echo(input); + } + } + } + + public class NormalService : INormalInterface + { + static MyRestClient client = new MyRestClient(RestServiceBaseAddress); + public int CallAdd(int x, int y) + { + return client.Add(x, y); + } + + public string CallEcho(string input) + { + return client.Echo(input); + } + } + public static void Main() + { + ServiceHost restHost = new ServiceHost(typeof(RestService), new Uri(RestServiceBaseAddress)); + restHost.AddServiceEndpoint(typeof(IRestInterface), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior()); + restHost.Open(); + + ServiceHost normalHost = new ServiceHost(typeof(NormalService), new Uri(NormalServiceBaseAddress)); + normalHost.AddServiceEndpoint(typeof(INormalInterface), new BasicHttpBinding(), ""); + normalHost.Open(); + + Console.WriteLine("Hosts opened"); + + ChannelFactory factory = new ChannelFactory(new BasicHttpBinding(), new EndpointAddress(NormalServiceBaseAddress)); + INormalInterface proxy = factory.CreateChannel(); + + Console.WriteLine(proxy.CallAdd(123, 456)); + Console.WriteLine(proxy.CallEcho("Hello world")); + } + } +``` + +## 参照 + [方法 : 基本的な WCF Web HTTP サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-wcf-web-http-service.md) + [WCF Web HTTP プログラミング オブジェクト モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-object-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/cert-val-diff-https-ssl-over-tcp-and-soap.md b/docs/framework/wcf/feature-details/cert-val-diff-https-ssl-over-tcp-and-soap.md new file mode 100644 index 00000000000..4f239b0801b --- /dev/null +++ b/docs/framework/wcf/feature-details/cert-val-diff-https-ssl-over-tcp-and-soap.md @@ -0,0 +1,56 @@ +--- +title: "HTTPS、SSL Over TCP、SOAP セキュリティ間における証明書検証方法の相違点 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "証明書 [WCF], 検証方法の相違点" +ms.assetid: 953a219f-4745-4019-9894-c70704f352e6 +caps.latest.revision: 14 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 14 +--- +# HTTPS、SSL Over TCP、SOAP セキュリティ間における証明書検証方法の相違点 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、HTTP \(HTTPS\) または TCP を介したトランスポート層セキュリティ \(TLS\) だけでなく、メッセージ層 \(SOAP\) セキュリティでも証明書を使用できます。ここでは、このような証明書の検証方法の違いについて説明します。 + +## HTTPS クライアント証明書の検証 + HTTPS を使用してクライアントとサービス間で通信を行う場合、サービスに対して認証を行うためにクライアントが使用する証明書はチェーン信頼をサポートしている必要があります。つまり、信頼されたルート証明機関にチェーンされている必要があります。チェーンされていない場合は、HTTP レイヤーで が発生し、メッセージ "リモート サーバーがエラーを返しました: \(403\) 使用不可能" が表示されます。この例外は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって として示されます。 + +## HTTP サービス証明書の検証 + HTTPS を使用してクライアントとサービス間で通信を行う場合、サーバーが認証に使用する証明書は既定でチェーン信頼をサポートしている必要があります。つまり、信頼されたルート証明機関にチェーンされている必要があります。証明書が失効しているかどうかを確認するためのオンライン チェックは行われません。この動作は、 コールバックを登録することによってオーバーライドできます。コードは次のようになります。 + + [!code-csharp[c_CertificateValidationDifferences#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_certificatevalidationdifferences/cs/source.cs#1)] + [!code-vb[c_CertificateValidationDifferences#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_certificatevalidationdifferences/vb/source.vb#1)] + + `ValidateServerCertificate` の署名は次のようになります。 + + [!code-csharp[c_CertificateValidationDifferences#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_certificatevalidationdifferences/cs/source.cs#2)] + [!code-vb[c_CertificateValidationDifferences#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_certificatevalidationdifferences/vb/source.vb#2)] + + `ValidateServerCertificate` を実装すると、サービス証明書を検証するために必要であるとクライアント アプリケーションの開発者が考える、すべてのチェックを実行できます。 + +## SSL over TCP または SOAP セキュリティにおけるクライアント証明書の検証 + SSL \(Secure Sockets Layer\) over TCP またはメッセージ \(SOAP\) セキュリティを使用する場合、クライアント証明書は クラスの プロパティ値に従って検証されます。プロパティは の値のいずれかに設定されます。失効チェックは クラスの プロパティの値に応じて実行されます。プロパティは の値のいずれかに設定されます。 + + [!code-csharp[c_CertificateValidationDifferences#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_certificatevalidationdifferences/cs/source.cs#3)] + [!code-vb[c_CertificateValidationDifferences#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_certificatevalidationdifferences/vb/source.vb#3)] + +## SSL over TCP および SOAP セキュリティにおけるサービス証明書の検証 + SSL over TCP またはメッセージ \(SOAP\) セキュリティを使用する場合、サービス証明書は クラスの プロパティ値に従って検証されます。プロパティは の値のいずれかに設定されます。 + + 失効チェックは クラスの プロパティの値に応じて実行されます。プロパティは の値のいずれかに設定されます。 + + [!code-csharp[c_CertificateValidationDifferences#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_certificatevalidationdifferences/cs/source.cs#4)] + [!code-vb[c_CertificateValidationDifferences#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_certificatevalidationdifferences/vb/source.vb#4)] + +## 参照 + + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/changing-the-cache-sharing-levels-for-send-activities.md b/docs/framework/wcf/feature-details/changing-the-cache-sharing-levels-for-send-activities.md new file mode 100644 index 00000000000..5b155306d43 --- /dev/null +++ b/docs/framework/wcf/feature-details/changing-the-cache-sharing-levels-for-send-activities.md @@ -0,0 +1,202 @@ +--- +title: "Send アクティビティのキャッシュ共有レベルの変更 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 03926a64-753d-460e-ac06-2a4ff8e1bbf5 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# Send アクティビティのキャッシュ共有レベルの変更 + 拡張機能により、キャッシュ共有レベルのカスタマイズやチャネル ファクトリ キャッシュの設定のカスタマイズを行えるほか、 メッセージング アクティビティを使用してサービス エンドポイントにメッセージを送信するワークフローのチャネル キャッシュの設定のカスタマイズも可能になります。これらのワークフローは、通常はクライアント ワークフローですが、 でホストされるワークフロー サービスである場合もあります。チャネル ファクトリ キャッシュには、 オブジェクトがキャッシュされます。チャネル キャッシュには、チャネルがキャッシュされます。 + +> [!NOTE] +> ワークフローは メッセージング アクティビティを使用してメッセージまたはパラメーターを送信できます。このワークフローのランタイムはチャネル ファクトリをキャッシュに追加しますが、チャネル ファクトリで作成されるチャネルは、 アクティビティを アクティビティと共に使用したときは 型で、 アクティビティだけを \( なしで\) 使用したときは 型です。 + +## キャッシュ共有レベル + 既定では、 によってホストされるワークフローにおいて、 メッセージング アクティビティが使用するキャッシュは のすべてのワークフロー インスタンス間で共有されます \(ホストレベルのキャッシュ\)。 によってホストされないクライアント ワークフローの場合、キャッシュを使用できるのはワークフロー インスタンスだけです \(インスタンスレベルのキャッシュ\)。このキャッシュは、アンセーフ キャッシュが有効になっている場合を除き、構成で定義されているエンドポイントを使用しない アクティビティに対してのみ使用可能です。 + + ワークフローの アクティビティに使用可能なさまざまなキャッシュ共有レベルと、推奨される使用方法を次に示します。 + +- **ホスト レベル**: ホスト共有レベルでは、キャッシュを使用できるのはワークフロー サービス ホストでホストされるワークフロー インスタンスだけです。キャッシュはプロセス全体のキャッシュのワークフロー サービス ホスト間で共有できます。 + +- **インスタンス レベル**: インスタンス共有レベルでは、キャッシュを使用できるのは有効期間中の特定のワークフロー インスタンスで、他のワークフロー インスタンスはキャッシュを使用できません。 + +- **キャッシュなし**: 構成で定義されているエンドポイントを使用するワークフローがある場合、キャッシュは既定でオフになります。この場合、キャッシュをオンにすると安全性が損なわれることがあるため、オフにしておくことをお勧めします。たとえば、送信ごとに異なる ID \(異なる資格情報、または偽装の使用\) が必要な場合があります。 + +## クライアント ワークフローのキャッシュ共有レベルの変更 + クライアント ワークフローでのキャッシュの共有を設定するには、 クラスのインスタンスを目的のワークフロー インスタンスのセットに拡張として追加します。この結果、すべてのワークフロー インスタンス間でキャッシュが共有されます。次のコード例は、この手順を実行する方法を示しています。 + + まず、 型のインスタンスを宣言します。 + +``` + +// Create an instance of SendMessageChannelCache with default cache settings. +static SendMessageChannelCache sharedChannelCacheExtension = + new SendMessageChannelCache(); + +``` + + 次に、各クライアント ワークフローのインスタンスにキャッシュ拡張を追加します。 + +``` + +WorkflowApplication clientInstance1 = new WorkflowApplication(new clientWorkflow1()); +WorkflowApplication clientInstance2 = new WorkflowApplication(new clientWorkflow2()); + +// Share the cache extension object + +clientInstance1.Extensions.Add(sharedChannelCacheExtension); +clientInstance2.Extensions.Add(sharedChannelCacheExtension); + +``` + +## ホストされるワークフロー サービスのキャッシュ共有レベルの変更 + ホストされるワークフロー サービスでのキャッシュの共有を設定するには、 クラスのインスタンスをすべてのワークフロー サービス ホストに拡張として追加します。この結果、すべてのワークフロー サービス ホスト間でキャッシュが共有されます。次のコード例は、この手順を実行する方法を示しています。 + + まず、 型のインスタンスをクラス レベルで宣言します。 + +``` + +// Create static instance of SendMessageChannelCache with default cache settings. +static SendMessageChannelCache sharedChannelCacheExtension = new + SendMessageChannelCache(); +``` + + 次に、各ワークフロー サービス ホストに静的キャッシュ拡張を追加します。 + +``` + +WorkflowServiceHost host1 = new WorkflowServiceHost(new serviceWorkflow1(), new Uri(baseAddress1)); +WorkflowServiceHost host2 = new WorkflowServiceHost(new serviceWorkflow2(), new Uri(baseAddress2)); + +// Share the static cache to get an AppDomain level cache. +host1.WorkflowExtensions.Add(sharedChannelCacheExtension); +host2.WorkflowExtensions.Add(sharedChannelCacheExtension); + +``` + + ホストされるワークフロー サービスでのキャッシュ共有をインスタンス レベルに設定するには、`Func` デリゲートをワークフロー サービス ホストに拡張として追加し、 クラスの新しいインスタンスをインスタンス化するコードにこのデリゲートを割り当てます。この結果、ワークフロー サービス ホストのすべてのワークフロー インスタンスで 1 つのキャッシュが共有されるのではなく、ワークフロー インスタンスごとに異なるキャッシュが使用されます。次のコード例は、このデリゲートがポイントする 拡張を直接定義するラムダ式を使用して上記の処理を実行する方法を示しています。 + +``` + +serviceHost.WorkflowExtensions.Add(() => new SendMessageChannelCache +{ + // Use FactorySettings property to add custom factory cache settings. + FactorySettings = new ChannelCacheSettings + { MaxItemsInCache = 5, }, + // Use ChannelSettings property to add custom channel cache settings. + ChannelSettings = new ChannelCacheSettings + { MaxItemsInCache = 10 }, +}); + +``` + +## キャッシュ設定のカスタマイズ + チャネル ファクトリ キャッシュおよびチャネル キャッシュのキャッシュ設定をカスタマイズできます。キャッシュ設定は クラスで定義されています。 クラスは、チャネル ファクトリ キャッシュおよびチャネル キャッシュの既定のキャッシュ設定を、その既定のコンストラクターで定義します。次の表は、これらのキャッシュ設定の既定値をキャッシュのタイプごとに示しています。 + +||||| +|-|-|-|-| +|設定|LeaseTimeout \(分\)|IdleTimeout \(分\)|MaxItemsInCache| +|ファクトリ キャッシュの既定値|TimeSpan.MaxValue|2|16| +|チャネル キャッシュの既定値|5|2|16| + + ファクトリ キャッシュおよびチャネル キャッシュの設定をカスタマイズするには、パラメーター化されたコンストラクター を使用して クラスをインスタンス化し、 の新しいインスタンスをカスタム値と共に `factorySettings` パラメーターおよび `channelSettings` パラメーターにそれぞれ渡します。次に、このクラスの新しいインスタンスをワークフロー サービス ホストまたはワークフロー インスタンスに拡張として追加します。次のコード例は、ワークフロー インスタンスに対してこの手順を実行する方法を示しています。 + +``` + +ChannelCacheSettings factorySettings = new ChannelCacheSettings{ + MaxItemsInCache = 5, + IdleTimeout = TimeSpan.FromMinutes(5), + LeaseTimeout = TimeSpan.FromMinutes(20)}; + +ChannelCacheSettings channelSettings = new ChannelCacheSettings{ + MaxItemsInCache = 5, + IdleTimeout = TimeSpan.FromMinutes(2), + LeaseTimeout = TimeSpan.FromMinutes(10) }; + +SendMessageChannelCache customChannelCacheExtension = + new SendMessageChannelCache(factorySettings, channelSettings); + +clientInstance.Extensions.Add(customChannelCacheExtension); + +``` + + 構成で定義されているエンドポイントがワークフロー サービスにある場合にキャッシュを有効にするには、`allowUnsafeCaching` パラメーターが `true` に設定された、パラメーター化されたコンストラクター を使用して クラスをインスタンス化します。次に、このクラスの新しいインスタンスをワークフロー サービス ホストまたはワークフロー インスタンスに拡張として追加します。次のコード例は、ワークフロー インスタンスのキャッシュを有効にする方法を示しています。 + +``` + +SendMessageChannelCache customChannelCacheExtension = + new SendMessageChannelCache{ AllowUnsafeCaching = true }; + +clientInstance.Extensions.Add(customChannelCacheExtension); + +``` + + チャネル ファクトリおよびチャネルのキャッシュを完全に無効にするには、チャネル ファクトリ キャッシュを無効にします。こうすると、対応するチャネル ファクトリにチャネルが所有されるので、チャネル キャッシュもオフになります。チャネル ファクトリ キャッシュを無効にするには、 値が 0 の インスタンスに初期化された コンストラクターに `factorySettings` パラメーターを渡します。このコード例を次に示します。 + +``` + +// Disable the factory cache. This results in the channel cache to be turned off as well. +ChannelCacheSettings factorySettings = new ChannelCacheSettings + { MaxItemsInCache = 0 }; + +ChannelCacheSettings channelSettings = new ChannelCacheSettings(); + +SendMessageChannelCache customChannelCacheExtension = + new SendMessageChannelCache(factorySettings, channelSettings); + +clientInstance.Extensions.Add(customChannelCacheExtension); + +``` + + チャネル ファクトリ キャッシュのみを使用し、チャネル キャッシュを無効にするには、 値が 0 の インスタンスに初期化された コンストラクターに `channelSettings` パラメーターを渡します。このコード例を次に示します。 + +``` + +ChannelCacheSettings factorySettings = new ChannelCacheSettings(); +// Disable only the channel cache. +ChannelCacheSettings channelSettings = new ChannelCacheSettings + { MaxItemsInCache = 0}; + +SendMessageChannelCache customChannelCacheExtension = + new SendMessageChannelCache(factorySettings, channelSettings); + +clientInstance.Extensions.Add(customChannelCacheExtension); + +``` + + ホストされたワークフロー サービスでは、ファクトリ キャッシュとチャネル キャッシュの設定をアプリケーション構成ファイルで指定できます。これを行うには、ファクトリ キャッシュおよびチャネル キャッシュのキャッシュ設定を含むサービス動作を追加し、そのサービス動作をサービスに追加します。次の例は、カスタムのファクトリ キャッシュ設定およびチャネル キャッシュ設定が指定された `MyChannelCacheBehavior` サービス動作を含む構成ファイルの内容を示しています。このサービス動作は、`behaviorConfiguarion` 属性を通じてサービスに追加されます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/channel-factory-and-caching.md b/docs/framework/wcf/feature-details/channel-factory-and-caching.md new file mode 100644 index 00000000000..bfc3699df00 --- /dev/null +++ b/docs/framework/wcf/feature-details/channel-factory-and-caching.md @@ -0,0 +1,127 @@ +--- +title: "チャネル ファクトリとキャッシュ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 954f030e-091c-4c0e-a7a2-10f9a6b1f529 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# チャネル ファクトリとキャッシュ +WCF クライアント アプリケーションでは、 クラスを使用して WCF サービスとの通信チャネルを作成します。 インスタンスを作成するには、次の操作が必要なため、オーバーヘッドが生じます。 + +- ツリーの構築 + +- 必要なすべての CLR 型の反映 + +- チャネル スタックの構築 + +- リソースの破棄 + + このオーバーヘッドを最小限に抑えるために、WCF では、WCF クライアント プロキシの使用中にチャネル ファクトリをキャッシュできます。 + +> [!TIP] +> クラスを直接使用する場合は、チャネル ファクトリの作成を直接制御できます。 + + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) で生成される WCF クライアント プロキシは から派生します。 では、チャネル ファクトリのキャッシュ動作を定義する静的な プロパティを定義します。キャッシュ設定は特定の型に対して行われます。たとえば、`ClientBase.CacheSettings` を以下に定義されているいずれかの値に設定すると、`ITest` 型のプロキシ\/ClientBase にのみ影響します。最初のプロキシ\/ClientBase インスタンスが作成された時点で、特定の のキャッシュ設定は不変になります。 + +## キャッシュ動作の指定 + キャッシュ動作は、 プロパティを次のいずれかの値に設定することで指定します。 + +|キャッシュの設定値|説明| +|---------------|--------| +||アプリケーション ドメイン内の のすべてのインスタンスはキャッシュに参加できます。開発者は、セキュリティがキャッシュに悪影響を与えないことを確認しています。 の "セキュリティに影響する" プロパティにアクセスされた場合でも、キャッシュは無効になりません。 の "セキュリティに影響する" プロパティは、、および です。| +||構成ファイルで定義されているエンドポイントから作成された のインスタンスのみがアプリケーション ドメイン内のキャッシュに参加します。そのアプリケーション ドメイン内にプログラムで作成された のインスタンスはキャッシュに参加しません。また、 の "セキュリティに影響する" プロパティにアクセスされると、そのインスタンスのキャッシュが無効になります。| +||対象となるアプリケーション ドメイン内にある特定の型の のすべてのインスタンスのキャッシュが無効になります。| + + プロパティを使用する方法を次のコード スニペットに示します。 + +``` +class Program +{ + static void Main(string[] args) + { + ClientBase.CacheSettings = CacheSettings.AlwaysOn; + foreach (string msg in messages) + { + using (TestClient proxy = new TestClient (new BasicHttpBinding(), new EndpointAddress(address))) + { + // ... + proxy.Test(msg); + // ... + } + } + } +} +// Generated by SvcUtil.exe +public partial class TestClient : System.ServiceModel.ClientBase, ITest { } + +``` + + 上のコードでは、`TestClient` のすべてのインスタンスで同じチャネル ファクトリを使用します。 + +``` +class Program +{ + static void Main(string[] args) + { + ClientBase.CacheSettings = CacheSettings.Default; + int i = 1; + foreach (string msg in messages) + { + using (TestClient proxy = new TestClient (“MyEndpoint”, new EndpointAddress(address))) + { + if (i == 4) + { + ServiceEndpoint endpoint = proxy.Endpoint; + ... // use endpoint in some way + } + proxy.Test(msg); + } + i++; + } +} + +// Generated by SvcUtil.exe +public partial class TestClient : System.ServiceModel.ClientBase, ITest {} +``` + + 上の例では、`TestClient` のすべてのインスタンスで同じチャネル ファクトリを使用します \(インスタンス \#4 を除く\)。インスタンス \#4 では、そのインスタンス専用に作成されたチャネル ファクトリを使用します。この設定は、特定のエンドポイントで同じチャネル ファクトリ型 \(この場合は `ITest`\) の他のエンドポイントと異なるセキュリティ設定が必要なシナリオに有効です。 + +``` +class Program +{ + static void Main(string[] args) + { + ClientBase.CacheSettings = CacheSettings.AlwaysOff; + foreach (string msg in messages) + { + using (TestClient proxy = new TestClient (“MyEndpoint”, new EndpointAddress(address))) + { + proxy.Test(msg); + } + } + } +} + +// Generated by SvcUtil.exe +public partial class TestClient : System.ServiceModel.ClientBase, ITest {} +``` + + 上の例では、`TestClient` のすべてのインスタンスで異なるチャネル ファクトリを使用します。これは、エンドポイントごとにセキュリティ要件が異なり、キャッシュする意味がない場合に便利です。 + +## 参照 + + [クライアントを構築する](../../../../docs/framework/wcf/building-clients.md) + [クライアント](../../../../docs/framework/wcf/feature-details/clients.md) + [WCF クライアントを使用したサービスへのアクセス](../../../../docs/framework/wcf/accessing-services-using-a-wcf-client.md) + [方法 : ChannelFactory を使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-channelfactory.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/choosing-a-filter.md b/docs/framework/wcf/feature-details/choosing-a-filter.md new file mode 100644 index 00000000000..7ac7eab2549 --- /dev/null +++ b/docs/framework/wcf/feature-details/choosing-a-filter.md @@ -0,0 +1,161 @@ +--- +title: "フィルターの選択 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 67ab5af9-b9d9-4300-b3b1-41abb5a1fd10 +caps.latest.revision: 8 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 8 +--- +# フィルターの選択 +ルーティング サービスを構成する際には、適切なメッセージ フィルターを選択し、受信するメッセージと正確に一致できるように、それらのフィルターを構成することが重要です。選択したフィルターの適合基準が幅広すぎる場合や、適切に構成されていない場合は、メッセージが正しくルーティングされません。フィルターの適合基準が厳格すぎると、一部のメッセージの有効なルーティング先が見つからないことがあります。 + +## フィルターの種類 + ルーティング サービスで使用するフィルターを選択する際には、各フィルターのしくみと、受信メッセージの一部として使用できる情報について理解しておくことが重要です。たとえば、すべてのメッセージが同じエンドポイントを介して受信される場合は、すべてのメッセージが Address フィルターと EndpointName フィルターに一致するため、これらのフィルターは役に立ちません。 + +### 動作 + Action フィルターは プロパティを確認します。メッセージの Action ヘッダーの内容が、フィルター構成で指定されているフィルター データ値と一致する場合、このフィルターは `true` を返します。次の例で定義されている `FilterElement` では、Action フィルターを使用して、値 http:\/\/namespace\/contract\/operation\/ が含まれているアクション ヘッダーを持つメッセージを一致させます。 + +```xml + +``` + +```csharp +ActionMessageFilter action1 = new ActionMessageFilter(new string[] { "http://namespace/contract/operation" }); + +``` + + 一意のアクション ヘッダーを含むメッセージをルーティングするときは、このフィルターを使用する必要があります。 + +### EndpointAddress + EndpointAddress フィルターは、メッセージを受信した EndpointAddress を確認します。メッセージが着信したアドレスが、フィルター構成で指定されたフィルター アドレスと正確に一致した場合、このフィルターは `true` を返します。次の例で定義されている `FilterElement` では、Address フィルターを使用して、http:\/\/\\/vdir\/s.svc\/b に宛てられたすべてのメッセージを一致させます。 + +```xml + + +``` + +```csharp +EndpointAddressMessageFilter address1 = new EndpointAddressMessageFilter(new EndpointAddress("http://host/vdir/s.svc/b"), false); + +``` + +> [!NOTE] +> アドレスのホスト名部分は、クライアントで完全修飾ドメイン名、NetBIOS 名、IP アドレス、それ以外の名前のどれが使用されるかによって異なることがあります。異なる値が同じホストを参照している場合があるため、この比較の既定の動作では、照合の際にアドレスのホスト名部分は使用されません。 +> +> ルーティング サービスをプログラムで構成する際に、比較の際にホスト名を評価できるように、この動作を変更できます。 + + 受信メッセージが一意のアドレス宛てである場合は、このフィルターを使用する必要があります。 + +### EndpointAddressPrefix + EndpointAddressPrefix フィルターは、EndpointAddress フィルターに似ています。EndpointAddressPrefix フィルターは、メッセージを受信した EndpointAddress を確認します。ただし、EndpointAddressPrefix フィルターは、フィルター構成で指定された値で始まるアドレスを一致させることによって、ワイルドカードとして機能します。次の例で定義されている `FilterElement` では、EndpointAddressPrefix フィルターを使用して、http:\/\/\\/vdir\* 宛てのすべてのメッセージを一致させます。 + +```xml + + +``` + +```csharp +PrefixEndpointAddressMessageFilter prefix1 = new PrefixEndpointAddressMessageFilter(new EndpointAddress("http://host/vdir/s.svc/b"), false); + +``` + +> [!NOTE] +> アドレスのホスト名部分は、クライアントで完全修飾ドメイン名、NetBIOS 名、IP アドレス、それ以外の名前のどれが使用されるかによって異なることがあります。異なる値が同じホストを参照している場合があるため、この比較の既定の動作では、照合の際にアドレスのホスト名部分は使用されません。 + + 共通のアドレス プレフィックスを共有する受信メッセージをルーティングするときは、このフィルターを使用する必要があります。 + +### AND + AND フィルターが、メッセージ内の値を直接フィルターすることはありません。しかし、AND フィルターを使用すると、他の 2 つのフィルターを組み合わせて `AND` 条件を作成し、それらのフィルターの両方がメッセージと一致した場合に、AND フィルターが `true` に評価されるようにすることができます。これにより、すべてのサブフィルターが一致した場合にだけ一致する、複雑なフィルターを作成できます。次の例では、Address フィルターと Action フィルターを定義した後で、それらのフィルターの両方に照合してメッセージを評価する AND フィルターを定義します。Address フィルターと Action フィルターの両方と一致した場合、AND フィルターは `true` を返します。 + +```xml + + + + +``` + +```csharp +EndpointAddressMessageFilter address1 = new EndpointAddressMessageFilter(new EndpointAddress("http://host/vdir/s.svc/b"), false); +ActionMessageFilter action1 = new ActionMessageFilter(new string[] { "http://namespace/contract/operation" }); +StrictAndMessageFilter and1=new StrictAndMessageFilter(address1, action1); + +``` + + 複数のフィルターのロジックを組み合わせて一致を判断する必要がある場合は、このフィルターを使用します。たとえば、アクションとメッセージの特定の組み合わせだけを特定のアドレスに受け取る必要がある複数の送信先がある場合は、AND フィルターを使用して、必要な Action フィルターと Address フィルターを組み合わせることができます。 + +### Custom + Custom フィルターを選択する際には、このフィルターに使用する **MessageFilter** 実装を含むアセンブリの型を格納している、customType 値を指定する必要があります。また、filterData には、Custom フィルターがメッセージの評価に必要とするすべての値が格納されている必要があります。次の例では、`CustomAssembly.MyCustomMsgFilter` MessageFilter 実装を使用する `FilterElement` を定義します。 + +```xml + + +``` + +```csharp +MyCustomMsgFilter custom1=new MyCustomMsgFilter(“Custom Data”); +``` + + [!INCLUDE[netfx_current_short](../../../../includes/netfx-current-short-md.md)] で提供されるフィルターでは対象とならない、メッセージに対するカスタムの一致ロジックを実行する必要がある場合は、**MessageFilter** クラスの実装であるカスタム フィルターを作成する必要があります。たとえば、受信メッセージ内の 1 つのフィールドを、構成としてフィルターに指定された既知の値のリストと比較するカスタム フィルターや、特定のメッセージ要素をハッシュしてから、その値を調査してフィルターが `true` と `false` のどちらを返すかを判断するカスタム フィルターを作成することができます。 + +### EndpointName + EndpointName フィルターは、メッセージを受信したエンドポイントの名前を確認します。次の例で定義する `FilterElement` は、EndpointName フィルターを使用して、SvcEndpoint で受信したメッセージをルーティングします。 + +```xml + + +``` + +```csharp +EndpointNameMessageFilter name1 = new EndpointNameMessageFilter("SvcEndpoint"); + +``` + + このフィルターは、ルーティング サービスが複数の名前付きサービス エンドポイントを公開する場合に役立ちます。たとえば、ルーティング サービスがメッセージの受信に使用する 2 つのエンドポイントを公開し、その 1 つを、メッセージのリアルタイム処理を必要とする優先顧客が使用し、残りの 1 つを使用して、受信のタイミングが重要でないメッセージを受信する場合があります。 + + メッセージを受信したエンドポイントを特定する際に完全なアドレスの一致を使用することはよくありますが、定義されたエンドポイント名を使用すると、エラーの可能性が少なく、すばやく処理できるので便利です。特に、エンドポイント名が必須の属性となる、構成ファイルを使用したルーティング サービスの構成では、この方法が便利です。 + +### MatchAll + MatchAll フィルターは、受信したすべてのメッセージと一致します。受信したすべてのメッセージのコピーを格納するログ サービスの場合など、受信したすべてのメッセージを常に特定のエンドポイントにルーティングする必要がある場合は、このフィルターが便利です。次の例で定義する `FilterElement` では、MatchAll フィルターを使用します。 + +```xml + + +``` + +```csharp +MatchAllMessageFilter matchAll1 = new MatchAllMessageFilter(); + +``` + +### XPath + XPath フィルターを使用すると、XPath クエリを指定して、メッセージ内の特定の要素を確認できます。XPath フィルターは、メッセージ内の XML アドレス指定可能なエントリを直接確認できる、強力なフィルター オプションです。ただし、このフィルターを使用するには、受信するメッセージの構造に関する特定の知識が必要です。次の例で定義する `FilterElement` は、XPath フィルターを使用して、名前空間プレフィックス ns で参照される名前空間内の element という名前の要素のメッセージを確認します。 + +```xml + + +``` + +```csharp +XPathMessageFilter xpath1=new XPathMessageFilter(“//ns:element”); + +``` + + 受信するメッセージに特定の値が含まれていることがわかっている場合は、このフィルターが便利です。たとえば、同じサービスの 2 つのバージョンをホストしており、そのサービスの新しい方のバージョン宛てのメッセージのカスタム ヘッダーに一意の値が含まれていることがわかっている場合は、XPath を使用するフィルターを作成してそのヘッダーに移動し、そのヘッダー内にある値を、フィルター構成で指定されている別の値と比較して、そのフィルターが一致するかどうかを判断できます。 + + XPath クエリには、長い文字列値または複雑な文字列値である一意の名前空間が含まれていることが多いため、XPath フィルターでは、名前空間用の一意のプレフィックスを定義する名前空間テーブルを使用できます。名前空間テーブル[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メッセージ フィルター](../../../../docs/framework/wcf/feature-details/message-filters.md)」を参照してください。 + + XPath クエリの設計[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[XPath 構文](http://go.microsoft.com/fwlink/?LinkId=164592)」\(http:\/\/go.microsoft.com\/fwlink\/?LinkId\=164592\) を参照してください。 + +## 参照 + [メッセージ フィルター](../../../../docs/framework/wcf/feature-details/message-filters.md) + [フィルターを使用する方法](../../../../docs/framework/wcf/feature-details/how-to-use-filters.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/choosing-a-message-encoder.md b/docs/framework/wcf/feature-details/choosing-a-message-encoder.md new file mode 100644 index 00000000000..dc1b51e729a --- /dev/null +++ b/docs/framework/wcf/feature-details/choosing-a-message-encoder.md @@ -0,0 +1,84 @@ +--- +title: "メッセージ エンコーダーを選択する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2204d82d-d962-4922-a79e-c9a231604f19 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# メッセージ エンコーダーを選択する +このトピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に用意されているメッセージ エンコーダー \(バイナリ、テキスト、および MTOM \(Message Transmission Optimization Mechanism\)\) を選択する際の基準について説明します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、エンドポイント間でネットワークを介して行うデータの転送方法を、*バインディング* \(*バインド要素*のシーケンスで構成\) により指定します。メッセージ エンコーダーは、バインディング スタックにあるメッセージ エンコーディング バインド要素によって表されます。バインディングには、オプションのプロトコル バインド要素 \(セキュリティ バインド要素や信頼できるメッセージング バインド要素など\)、必須のメッセージ エンコーディング バインド要素、および必須のトランスポート バインド要素が含まれます。 + + メッセージ エンコーディング バインド要素は、オプションのプロトコル バインド要素の下、必須のトランスポート バインド要素の上に位置します。送信側では、メッセージ エンコーダーにより出力 がシリアル化されてトランスポートに渡されます。受信側では、メッセージ エンコーダーがトランスポートからシリアル化形式の を受信し、上位のプロトコル層が存在する場合はその層に、存在しない場合はアプリケーションに渡します。 + + 既存のクライアントまたはサーバーに接続するときには、相手側が予測している方法でメッセージをエンコードする必要があるため、特定のメッセージ エンコーディングを選択できない場合があります。ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを作成している場合は、サービスを複数のエンドポイントで公開し、それぞれで異なるメッセージ エンコーディングを使用できます。これにより、クライアントは最適なエンドポイントでのサービスとの対話に最も適したエンコーディングを選択でき、最適なエンコーディングを選択する際の柔軟性が得られます。複数のエンドポイントを使用することにより、異なるメッセージ エンコーディングの利点を他のバインド要素と組み合わせることも可能になります。 + +## システム指定のエンコーダー + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意された 3 種類のメッセージ エンコーダーは、次の 3 つのクラスによって表されます。 + +- は、書式なし XML エンコーディングと SOAP エンコーディングの両方をサポートするテキスト メッセージ エンコーダーです。テキスト メッセージ エンコーダーの書式なし XML エンコーディング モードは、テキスト ベースの SOAP エンコーディングと区別するために、"POX" \(Plain Old XML\) と呼ばれます。POX を有効にするには、 プロパティを に設定します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイント以外のエンドポイントと相互運用する場合は、テキスト メッセージ エンコーダーを使用します。 + +- は、バイナリ メッセージ エンコーダーです。コンパクトなバイナリ形式を使用し、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] との間の通信用に最適化されているため、相互運用できません。このエンコーダーは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意された 3 種類のエンコーダーの中で、パフォーマンスが最も優れたエンコーダーでもあります。 + +- は、MTOM エンコーディングを使用して、メッセージの文字エンコーディングとバージョン管理を指定するバインド要素です。MTOM は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージでのバイナリ データの転送に有効なテクノロジです。MTOM エンコーダーは、効率と相互運用性のバランスをとろうとします。MTOM エンコーディングは、ほとんどの XML をテキスト形式で転送しますが、大きいサイズのバイナリ データ ブロックはテキストに変換せずにそのまま転送することによって最適化します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意されたエンコーダーの中で、MTOM は効率面でテキスト エンコーダー \(最も遅い\) とバイナリ エンコーダー \(最も速い\) の中間に位置します。 + +## メッセージ エンコーダーを選択する方法 + メッセージ エンコーダーを選択するために使用される一般的な要因を、次の表に示します。アプリケーションにとって重要な要因に優先順位を与えて、それらの要因に対して最適なメッセージ エンコーダーを選択します。この表には示されていないその他の要因と、アプリケーションで必要になることがあるカスタム メッセージ エンコーダーも考慮するようにしてください。 + +|要因|説明|この要因をサポートするエンコーダー| +|--------|--------|-----------------------| +|サポートされている文字セット| は Unicode の UTF8 と UTF16 \(*ビッグ エンディアン*と*リトル エンディアン*\) エンコーディングのみをサポートしています。UTF7 や ASCII など、別のエンコーディングが要求される場合はカスタム エンコーディングを使用する必要があります。カスタム エンコーディングの例については、「[カスタム メッセージ エンコーダー](http://go.microsoft.com/fwlink/?LinkId=119857)」を参照してください。|テキスト| +|検査|検査は、転送中にメッセージを調べる機能です。SOAP の使用に関係なく、テキスト エンコーディングでは、多くのアプリケーションで特別なツールを使用することなくメッセージの検査と分析が可能です。メッセージまたはトランスポートのいずれかのレベルで転送セキュリティを使用すると、メッセージの検査機能に影響がある点に注意してください。機密性はメッセージが検査されないように保護し、整合性はメッセージが変更されないように保護します。|テキスト| +|信頼性|信頼性は、転送エラーに対するエンコーダーの復元能力です。信頼性はメッセージ層、トランスポート層、またはアプリケーション層でも提供できます。すべての [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 標準エンコーダーは、信頼性が別の層で提供されることを前提としています。エンコーダーは、転送エラーから回復する機能をほとんど備えていません。|なし| +|単純さ|単純さは、エンコード仕様に対応するエンコーダーとデコーダーの作成の容易さを表します。テキスト エンコーディングは、単純さの面で特に優れており、POX テキスト エンコーディングは SOAP 処理のサポートが不要なため、さらに優れています。|テキスト \(POX\)| +|サイズ|エンコーディングによって、コンテンツに課せられるオーバーヘッドの量が決まります。エンコードされたメッセージのサイズは、サービス操作の最大スループットに直接影響します。バイナリ エンコーディングは、一般にテキスト エンコーディングよりサイズが小さくなります。メッセージのサイズが優先事項である場合は、エンコーディング中にメッセージ コンテンツを圧縮することも検討してください。ただし、圧縮を行うとメッセージの送信者と受信者の両方で処理コストが大きくなります。|バイナリ| +|ストリーム|ストリーミングでは、アプリケーションはメッセージ全体が到着する前にメッセージの処理を開始できます。ストリーミングを効果的に使用するには、受信するアプリケーションが重要なデータの到着を待つ必要をなくすために、メッセージの冒頭で重要なデータが利用可能になっている必要があります。さらに、ストリーミングされた転送を使用するアプリケーションでは、メッセージ コンテンツに前方依存性がないように、メッセージ内のデータを順次編成していく必要があります。多くの場合、コンテンツのストリーミングと必要最小限のサイズで転送を行うこととの間で妥協を図る必要があります。|なし| +|サードパーティ製ツールのサポート|エンコーディングのサポート領域には、開発と診断があります。サードパーティの開発者は、POX 形式でエンコードされたメッセージを処理するためのライブラリとツールキットに多大な投資をしています。|テキスト \(POX\)| +|相互運用性|この要因は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のエンコーダーの、非 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスとの相互運用性を表しています。|テキスト

MTOM \(部分的\)| + + メモ: バイナリ エンコーダーを使用している場合、XMLReader を作成するときに IgnoreWhitespace の設定を使用しても効果はありません。たとえば、サービス操作内で次の操作を実行するとします。 + +```csharp +public void OperationContract(XElement input) + { + Console.WriteLine("{0}", input.Value); + int counter = 0; + var xreader = input.CreateReader(); + var reader = XmlReader.Create(xreader, new XmlReaderSettings() { IgnoreWhitespace = true }); + while (reader.Read()) + { + counter++; + } + + Console.WriteLine("Read {0} lines with reader", counter); + } + +``` + + IgnoreWhitespace の設定は無視されます。 + +## 圧縮およびバイナリ エンコーダー + WCF 4.5 以降の WCF バイナリ エンコーダーでは、圧縮がサポートされます。これにより、WCF クライアントから圧縮メッセージを送信するための gzip\/deflate アルゴリズムを使用でき、さらに自己ホスト型 WCF サービスからの圧縮メッセージに応答することができます。この機能は、HTTP トランスポートおよび TCP トランスポートの両方で圧縮を有効にします。IIS のホスト サーバーを構成することによって、いつでも IIS でホストされる WCF サービスを有効にして圧縮された応答を送信できます。圧縮の種類は プロパティで構成されます。このプロパティは、 列挙値のいずれかに設定されます。 + +|CompressionFormat の値|説明| +|--------------------------|--------| +|F:System.ServiceModel.Channels.CompressionFormat.Deflate|Deflate 圧縮を使用します。| +|F:System.ServiceModel.Channels.CompressionFormat.GZip|GZip 圧縮を使用します。| +|F:System.ServiceModel.Channels.CompressionFormat.None|圧縮を使用しません。| + + このプロパティは binaryMessageEncodingBindingElement でのみ公開されるため、この機能を使用するには、\ \ \ \ \<\/binding\> \<\/customBinding\> のようなカスタム バインディングを作成する必要があります。クライアントとサービスの両方で圧縮メッセージの送受信に同意する必要があるため、compressionFormat プロパティは、クライアントとサービスの両方の binaryMessageEncoding 要素で構成する必要があります。サービスまたはクライアントの一方で圧縮が構成され、他方で圧縮が構成されていない場合は ProtocolException がスローされます。圧縮の有効化は慎重に考慮する必要があります。圧縮は、ネットワーク帯域幅がボトルネックになっている場合に最も効果的できます。CPU がボトルネックである場合、圧縮によりスループットが低下します。これがアプリケーションにとってメリットがあるかどうかを確認するために、適切なテストをシミュレートされた環境で行う必要があります。 + +## 参照 + [バインディング](../../../../docs/framework/wcf/feature-details/bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/choosing-a-transport.md b/docs/framework/wcf/feature-details/choosing-a-transport.md new file mode 100644 index 00000000000..51b7e2cff87 --- /dev/null +++ b/docs/framework/wcf/feature-details/choosing-a-transport.md @@ -0,0 +1,83 @@ +--- +title: "トランスポートの選択 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "トランスポートの選択 [WCF]" +ms.assetid: b169462b-f7b6-4cf4-9fca-d306909ee8bf +caps.latest.revision: 25 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 25 +--- +# トランスポートの選択 +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に用意されている HTTP、TCP、名前付きパイプという 3 つの主なトランスポートの中から、1 つのトランスポートを選択する基準について説明します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、メッセージ キュー \(MSMQ とも呼ばれます\) トランスポートも用意されていますが、メッセージ キューは、ここでは取り扱いません。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] プログラミング モデルでは、エンドポイントの操作 \(サービス コントラクトで表現されたとおりの\) を 2 つのエンドポイントを接続するトランスポート機構から分離します。これによって、ネットワークへのサービスの公開方法を柔軟に決定できます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、エンドポイント間でネットワークを介して行うデータの転送方法を、*バインディング* \(*バインド要素*のシーケンスで構成\) を使用して指定します。トランスポートは、バインディングの一部であるトランスポート バインド要素で表されます。バインディングにはセキュリティなどのオプションのプロトコル バインド要素、必須のメッセージ エンコーダーのバインド要素、および必須のトランスポートのバインド要素が含まれます。トランスポートは、シリアル化されたメッセージを別のアプリケーションとの間で送受信します。 + + 既存のクライアントまたはサーバーに接続する必要がある場合、特定のトランスポートを使用するという選択ができない可能性があります。ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、それぞれが異なるトランスポートを使用する複数のエンドポイントからアクセスできるようにすることができます。単一のトランスポートでサービスの提供対象に対応できない場合、複数のエンドポイントにサービスを公開することを検討してください。複数のエンドポイントに公開すると、クライアント アプリケーションはそのアプリケーションに最も適したエンドポイントを使用できます。 + + トランスポートを選択した後、そのトランスポートを使用するバインディングを選択する必要があります。システム指定のバインディング \(「[システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md)」を参照\) を選択するか、カスタム バインディング \(「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照\) を作成できます。独自のバインディングを作成することもできます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][ユーザー定義バインディングの作成](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md). + +## 各トランスポートの利点 + ここでは、3 つの主なトランスポートの中から 1 つを選択する主な理由について説明します。また、トランスポートの選択に使用できる詳細な表も記載しています。 + +### HTTP トランスポートを使用する状況 + HTTP は、クライアントとサーバー間の要求\/応答プロトコルです。最も一般的なアプリケーションは、Web サーバーと通信する Web ブラウザー クライアントで構成されます。クライアントは、クライアントの要求メッセージをリッスンしているサーバーに要求を送信します。サーバーは要求を受信すると、要求のステータスを含んだ応答を返します。成功した場合は、Web ページ、エラー メッセージ、その他の情報など、任意のデータが返されます。HTTP プロトコル[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[HTTP \- Hypertext Transfer Protocol](http://go.microsoft.com/fwlink/?LinkId=94858)」を参照してください。 + + HTTP プロトコルは、接続ベースではありません。応答の送信後、状態は維持されません。複数ページ トランザクションを処理するには、アプリケーションが、必要な状態を維持する必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、HTTP トランスポート バインディングは、従来の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 以外のシステムとの相互運用性を実現するために最適化されています。すべての通信相手が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用している場合は、TCP ベースまたは名前付きパイプベースのバインディングの方が高速です。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「」および「」を参照してください。 + +### TCP トランスポートを使用する状況 + TCP は、エンドツーエンドのエラー検出とエラー訂正を備えた接続ベースのストリーム指向配信サービスです。*接続ベース*とは、ホスト間の通信セッションがデータを交換する前に確立されるという意味です。ホストは、TCP\/IP ネットワーク上で論理 IP アドレスによって識別される任意のデバイスです。 + + TCP は使いやすく、TCP によって信頼できるデータ配信を実現できます。特に、TCP は、送信者にパケット配信を通知し、送信者が送信した順序と同じ順序でパケットが配信されることを保証し、紛失したパケットを再転送し、データ パケットが重複していないことを確認します。この信頼できる配信は、*WS\-ReliableMessaging* の場合と異なり、2 つの TCP\/IP ノード間に適用されます。WS\-ReliableMessaging は、エンドポイントに伴う中継局ノードの数に関係なく、エンドポイント間に適用されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] TCP トランスポートは、通信の両側が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用するシナリオのために最適化されています。このバインディングは、異なるコンピューター間での通信が発生するシナリオに対して最も速い [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインディングです。メッセージ交換では、 を使用して、メッセージ転送の最適化を実現します。TCP では双方向通信が提供されるので、クライアントがネットワーク アドレス交換 \(NAT\) の内側にある場合でも、TCP を使用して双方向コントラクトを実装できます。 + +### 名前付きパイプ トランスポートを使用する状況 + 名前付きパイプとは、プロセスが通信に使用できる共有メモリのセクションなど、Windows オペレーティング システム カーネルのオブジェクトです。名前付きパイプには名前があり、1 台のコンピューター上でのプロセス間の一方向通信または双方向通信に使用できます。 + + 1 台のコンピューター上で異なる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーション間に通信が必要で、他のコンピューターからの通信を防止する場合に、名前付きパイプ トランスポートを使用します。追加の制限として、Windows リモート デスクトップから実行しているプロセスを同じ Windows リモート デスクトップのセッションに制限することができます。ただし、そのプロセスにシステム特権がある場合を除きます。 + +> [!WARNING] +> 名前付きパイプ トランスポートを使用する際、IIS でホストされている複数サイト上で弱いワイルドカードの URL 予約を指定すると、"サイト '2' をリッスンしようとしているときに、プロトコル 'net.pipe' のアクティブ化サービス 'NetPipeActivator' でエラーが発生したため、このサイトのプロトコルが一時的に無効になっています。詳細については、例外メッセージを参照してください。URL: WeakWildcard:net.pipe:\/\\/ 状態: ConflictingRegistration 例外: プロセス名: SMSvcHost プロセス ID: 1076\\" というエラーが発生することがあります。 + +## トランスポート選択の判断材料 + トランスポートの選択に使用する一般的な判断材料を次の表に示します。アプリケーションに適用される追加の属性とトランスポートについて考慮する必要があります。アプリケーションに重要な属性を特定し、各属性と相性の良いトランスポートを特定し、最後にその属性セットで最も適切に機能するトランスポートを選択します。 + +|属性|説明|望ましいトランスポート| +|--------|--------|-----------------| +|診断|診断によって、トランスポートの接続問題を自動的に検出できます。すべてのトランスポートは、接続に関するエラー情報を返信する機能をサポートしています。ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、ネットワークに関する問題を調査するための診断ツールは用意されていません。|なし| +|ホスト|すべての [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントは、アプリケーション内部でホストされる必要があります。[!INCLUDE[iis601](../../../../includes/iis601-md.md)] 以前では、HTTP トランスポートを使用するアプリケーションのホストだけがサポートされます。[!INCLUDE[wv](../../../../includes/wv-md.md)] では、TCP と名前付きパイプを含むすべての [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] トランスポートのホストがサポートされます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[インターネット インフォメーション サービスでのホスティング](../../../../docs/framework/wcf/feature-details/hosting-in-internet-information-services.md)」および「[Windows プロセス アクティブ化サービスでのホスティング](../../../../docs/framework/wcf/feature-details/hosting-in-windows-process-activation-service.md)」を参照してください。|HTTP| +|検査|検査は、転送中に、メッセージからの情報を抽出し、処理する機能です。HTTP プロトコルでは、ルーティングと制御情報がデータから分離されるので、メッセージを調査して分析するツールの作成が容易になります。検査しやすいトランスポートでは、ネットワーク機器に求められる処理能力も低い場合があります。使用するセキュリティのレベルは、メッセージを調査できるかどうかに影響を与えます。|HTTP| +|待ち時間|待ち時間は、メッセージの交換を完了するために必要な最小限の時間です。すべてのネットワーク操作には、選択したトランスポートに応じて、多少の待ち時間が発生します。HTTP など、ネイティブ メッセージ交換パターンが要求\/応答であるトランスポートで双方向または一方向通信を使用すると、メッセージの強制的な関連付けが原因で追加の待ち時間が発生する可能性があります。このような場合、TCP など、ネイティブ メッセージ交換パターンが双方向であるトランスポートを使用することを検討してください。|TCP、名前付き

パイプ| +|範囲|トランスポートの範囲は、トランスポートが他のシステムと接続できる能力を反映しています。名前付きパイプ トランスポートの範囲は非常に狭く、同じコンピューター上で実行しているサービスにしか接続できません。TCP トランスポートと HTTP トランスポートの範囲は広く、一部の NAT とファイアウォール構成を通ることができます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][NAT とファイアウォールの使用](../../../../docs/framework/wcf/feature-details/working-with-nats-and-firewalls.md).|HTTP、TCP| +|セキュリティ|セキュリティは、機密性、整合性、または認証を提供することによって、転送中にメッセージを保護する機能です。機密性では、メッセージが調査されないように保護し、整合性では、メッセージが変更されないように保護します。認証では、メッセージの送信者または受信者が本物であることを保証します。

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、メッセージ レベルとトランスポート レベルの両方で転送セキュリティをサポートします。トランスポートがバッファー転送モードをサポートする場合、メッセージ セキュリティはそのトランスポートで構成されます。トランスポート セキュリティのサポートは、選択したトランスポートによって異なります。HTTP、TCP、および名前付きパイプの各トランスポートは、トランスポート セキュリティに対して同等の適切なサポートを提供します。|すべて| +|スループット|スループットは、指定の期間内に送信し、処理できるデータの量を示します。待ち時間のように、選択したトランスポートが、サービス操作のスループットに影響する場合があります。トランスポートのスループットを最大にするには、コンテンツを送信するときのオーバーヘッドおよびメッセージ交換が完了するまでの待ち時間を最小限に抑えることが必要です。TCP トランスポートと名前付きパイプ トランスポートは、メッセージ本文に対するオーバーヘッドが小さく、メッセージ応答の待ち時間を短縮するネイティブ双方向パターンをサポートします。|TCP、名前付きパイプ| +|ツール|ツールは、開発、診断、ホスティング、およびその他のアクティビティに関する、サードパーティ アプリケーションによるプロトコルへのサポートを表します。HTTP プロトコルで動作するツールとソフトウェアの開発には、大規模な投資が行われています。|HTTP| + +## 参照 + + + + + + + + + + [バインディング](../../../../docs/framework/wcf/feature-details/bindings.md) + [システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md) + [ユーザー定義バインディングの作成](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/claim-creation-and-resource-values.md b/docs/framework/wcf/feature-details/claim-creation-and-resource-values.md new file mode 100644 index 00000000000..90a3f316b67 --- /dev/null +++ b/docs/framework/wcf/feature-details/claim-creation-and-resource-values.md @@ -0,0 +1,55 @@ +--- +title: "クレームの作成とリソース値 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クレーム [WCF], 作成とリソース値" +ms.assetid: 30431f76-cbe7-4bad-bad7-8e43e23a82d4 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# クレームの作成とリソース値 + クラスには、組み込みのクレームの種類のインスタンスを作成するためのメソッドが複数用意されています。これらのメソッドの中でも、次のものは指定されたリソースに対してセマンティックまたは形式のチェックを行いません。 + +- + +- \(長さまたはバイト配列のコンテンツは検査されません\) + +- + +- + +- \(長さまたはバイト配列のコンテンツは検査されません\) + +- + + 上記のメソッドを使用する場合は、渡されるリソース値が正しい形式である、または正しい情報を含んでいること \(あるいは両方\) を確認するように注意してください。 + + 次のメソッドは、特定の型を受け取ります。 + +- + +- + +- + +- + +- + +- + +## 参照 + + + [ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/claims-and-denying-access-to-resources.md b/docs/framework/wcf/feature-details/claims-and-denying-access-to-resources.md new file mode 100644 index 00000000000..277e1635f8c --- /dev/null +++ b/docs/framework/wcf/feature-details/claims-and-denying-access-to-resources.md @@ -0,0 +1,28 @@ +--- +title: "リソースへのアクセスのクレームと拒否 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クレーム [WCF], リソースへのアクセスの拒否" +ms.assetid: 145ebb41-680e-4256-b14c-1efb4af1e982 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# リソースへのアクセスのクレームと拒否 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] はクレーム ベースの承認機構をサポートします。クレームの有無に応じてリソースへのアクセスが許可されるばかりでなく、クレームの有無に応じてリソースへのアクセスがシステムによって拒否される場合もよくあります。このようなシステムでは、アクセスが許可された要求を探す前に、アクセスが拒否されたクレームの を調べる必要があります。 + + たとえば、`Age` 型、 権限、`Under 21` リソース値というクレームを持つ任意のユーザーに対してリソースへのアクセスを拒否し、ID が `Name` 型、 権限、`Mallory` リソース値というクレームを持っている場合にのみ、リソースへのアクセスを許可するとします。言い換えると、年齢が 21 歳以下の任意のユーザーはシステムによってアクセスが拒否され、名前が Mallory である任意のユーザーにはアクセスが許可されるようにします。この意味を正しく実装するには、`Age` クレームを最初に探して、ユーザーが 21 歳以下であるかどうかを判断することが重要です。そうしないと、Mallory が 21 歳以下である場合、このリソースには、`Name` クレームのみに基づいてアクセスが許可されてしまいます。 + +## 参照 + [ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) + [クレームとトークン](../../../../docs/framework/wcf/feature-details/claims-and-tokens.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/claims-and-tokens.md b/docs/framework/wcf/feature-details/claims-and-tokens.md new file mode 100644 index 00000000000..e524a99c304 --- /dev/null +++ b/docs/framework/wcf/feature-details/claims-and-tokens.md @@ -0,0 +1,79 @@ +--- +title: "クレームとトークン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クレーム [WCF], トークン" +ms.assetid: eff167f3-33f8-483d-a950-aa3e9f97a189 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# クレームとトークン +ここでは、サポートされている既定のトークンから [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] によって作成されるさまざまなクレームの種類について説明します。 + + クライアント資格情報のクレームは、 クラスと クラスを使用して確認できます。 `ClaimSet` には、`Claim` オブジェクトのコレクションが格納されます。 各 `Claim` には、次の重要なメンバーがあります。 + +- プロパティは、作成されるクレームの種類を指定する URI \(Uniform Resource Identifier\) を返します。 たとえば、クレームの種類が証明書の拇印の場合、その URI は http:schemas.microsoft.com\/ws\/20005\/05\/identity\/claims\/thumprint です。 + +- プロパティは、クレームの権限を指定する URI を返します。 定義済みの権限は、 クラスにあります \(\)。 + +- プロパティは、クレームに関連付けられているリソースを返します。 + + 各 には、 プロパティがあり、それぞれ `Issuer` の を表します。 + +## Windows アカウント + クライアント資格情報が Windows ユーザー アカウントにマップされる場合、 は次の値を格納します。 + +- `Issuer` は、 クラスの静的 Windows プロパティによって返される値です。 + +- コレクションには次のクレームがあります。 + + - 値がセキュリティ識別子 \(SID\)、 プロパティ値が `Identity` で、 が実際の SID 値を返す 。 SID は、ドメイン コントローラーによって各ユーザーに発行される一意の値です。 SID は、Windows セキュリティとの対話でユーザーを識別するために使用されます。 + + - 値 が SID、 が `PossessProperty` で、 が SID 値の 。 + + - が `PossessProperty` で、 がユーザー名 \(たとえば、"MYMACHINE\\Bob"\) を含んだ文字列である 。 + + - ユーザーが属するさまざまなグループの が指定された追加の SID クレーム。 + +## 証明書 + クライアント資格情報が証明書の場合、 は次の値を格納します。 + +- 自己発行証明書の場合、`Issuer` は です。 は、 に設定された 、`Identity` に設定された 、および証明書の拇印を含んだ 配列である 値を返します。 + +- 証明機関によって発行された証明書の場合、発行者は、証明機関の証明書を表す `ClaimSet` です。 + +- コレクションの `Claims` には次のものが含まれます。 + + - `ClaimType` が Thumbprint、`Right` が PossessProperty で、`Resource` が証明書の拇印を含んだバイト配列である `Claim`。 + + - 証明書のさまざまなプロパティを表す X500DistinguishedName、Dns、Name、Upn、Rsa などの複数の種類の追加の PossessProperty クレーム。 Rsa クレームのリソースは、証明書に関連付けられた公開キーです。**メモ** クライアント資格情報の種類が、サービスによって Windows アカウントにマップされる証明書の場合、2 つの `ClaimSet` オブジェクトが生成されます。 最初のオブジェクトには、Windows アカウントに関するすべてのクレームが入り、2 番目のオブジェクトには、証明書に関するすべてのクレームが入ります。 + +## ユーザー名\/パスワード + クライアント資格情報が、Windows アカウントにマップされないユーザー名とパスワード \(または同等のもの\) の場合、`ClaimSet` は、`ClaimSet` クラスの静的 プロパティによって発行されます。 `ClaimSet` は、リソースがクライアントによって提供されるユーザー名である 型の `Identity` クレームを格納します。 対応するクレームには、`PossessProperty` の`Right` があります。 + +## RSA キー + 証明書に関連付けられていない RSA キーが使用される場合、`ClaimSet` は、自己発行され、リソースが RSA キーである 型の `Identity` クレームを格納します。 対応するクレームには、`PossessProperty` の `Right` があります。 + +## SAML + クライアントが SAML \(Security Assertions Markup Language\) トークンを使用して認証する場合、`ClaimSet` は、SAML トークンを署名したエンティティ \(通常は、SAML トークンを発行したセキュリティ トークン サービス \(STS\) の証明書\) によって発行されます。 `ClaimSet` は、SAML トークンに含まれているとおりのさまざまなクレームを格納します。 SAML トークンが、名前が `null` 以外の `SamlSubject` を含んでいる場合、型が で、リソース型が の `Identity` クレームが作成されます。 + +## Identity クレームと ServiceSecurityContext.IsAnonymous + クライアント資格情報から生成された `ClaimSet` オブジェクトが、`Right` が `Identity` のクレームを格納していない場合、 プロパティは `true` を返します。 このようなクレームが 1 つ以上ある場合、`IsAnonymous` プロパティは `false` を返します。 + +## 参照 + + + + + [ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/client-app-discovery-proxy-to-find-a-service.md b/docs/framework/wcf/feature-details/client-app-discovery-proxy-to-find-a-service.md new file mode 100644 index 00000000000..ecfb4d13e58 --- /dev/null +++ b/docs/framework/wcf/feature-details/client-app-discovery-proxy-to-find-a-service.md @@ -0,0 +1,297 @@ +--- +title: "探索プロキシを使用してサービスを検索するクライアント アプリケーションの実装方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 62b41a75-cf40-4c52-a842-a5f1c70e247f +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 探索プロキシを使用してサービスを検索するクライアント アプリケーションの実装方法 +これは、探索プロキシの実装方法に関する 3 つのトピックのうちの、3 番目のトピックです。前のトピック「[探索プロキシで登録される探索可能なサービスの実装方法](../../../../docs/framework/wcf/feature-details/discoverable-service-that-registers-with-the-discovery-proxy.md)」では、探索プロキシに自らを登録する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを実装しました。このトピックでは、探索プロキシを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを検索する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを作成します。 + +### クライアントの実装 + +1. 新しいコンソール アプリケーション プロジェクトを、`Client` という `DiscoveryProxyExample` ソリューションに追加します。 + +2. 次のアセンブリへの参照を追加します。 + + 1. System.ServiceModel + + 2. System.ServiceModel.Discovery + +3. このトピックの最後にある GeneratedClient.cs をプロジェクトに追加します。 + + > [!NOTE] + > このファイルは、通常、Svcutil.exe などのツールを使用して生成されます。このトピックでは、作業を単純化するためにこのファイルを提供しています。 + +4. Program.cs ファイルを開き、次のメソッドを追加します。このメソッドは、引数で指定されたエンドポイント アドレスを使用して、サービス クライアント \(プロキシ\) を初期化します。 + + ``` + static void InvokeCalculatorService(EndpointAddress endpointAddress) + { + // Create a client + CalculatorServiceClient client = new CalculatorServiceClient(new NetTcpBinding(), endpointAddress); + Console.WriteLine("Invoking CalculatorService at {0}", endpointAddress.Uri); + Console.WriteLine(); + + double value1 = 100.00D; + double value2 = 15.99D; + + // Call the Add service operation. + double result = client.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + + // Call the Subtract service operation. + result = client.Subtract(value1, value2); + Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); + + // Call the Multiply service operation. + result = client.Multiply(value1, value2); + Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); + + // Call the Divide service operation. + result = client.Divide(value1, value2); + Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); + Console.WriteLine(); + + // Closing the client gracefully closes the connection and cleans up resources + client.Close(); + } + + ``` + +5. `Main` メソッドに次のコードを追加します。 + + ``` + public static void Main() + { + // Create a DiscoveryEndpoint that points to the DiscoveryProxy + Uri probeEndpointAddress = new Uri("net.tcp://localhost:8001/Probe"); + DiscoveryEndpoint discoveryEndpoint = new DiscoveryEndpoint(new NetTcpBinding(), new EndpointAddress(probeEndpointAddress)); + + // Create a DiscoveryClient passing in the discovery endpoint + DiscoveryClient discoveryClient = new DiscoveryClient(discoveryEndpoint); + + Console.WriteLine("Finding ICalculatorService endpoints using the proxy at {0}", probeEndpointAddress); + Console.WriteLine(); + + try + { + // Search for services that implement ICalculatorService + FindResponse findResponse = discoveryClient.Find(new FindCriteria(typeof(ICalculatorService))); + + Console.WriteLine("Found {0} ICalculatorService endpoint(s).", findResponse.Endpoints.Count); + Console.WriteLine(); + + // Check to see if endpoints were found, if so then invoke the service. + if (findResponse.Endpoints.Count > 0) + { + InvokeCalculatorService(findResponse.Endpoints[0].Address); + } + } + catch (TargetInvocationException) + { + Console.WriteLine("This client was unable to connect to and query the proxy. Ensure that the proxy is up and running."); + } + + Console.WriteLine("Press to exit."); + Console.ReadLine(); + } + + ``` + + これで、クライアント アプリケーションの実装が完了しました。次に、「[探索プロキシをテストする方法](../../../../docs/framework/wcf/feature-details/how-to-test-the-discovery-proxy.md)」に進みます。 + +## 使用例 + このトピックのコード全体の一覧を以下に示します。 + +``` +// GeneratedClient.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.1434 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Microsoft.Samples.Discovery +{ + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] + [System.ServiceModel.ServiceContractAttribute(Namespace = "http://Microsoft.Samples.Discovery", ConfigurationName = "ICalculatorService")] + public interface ICalculatorService + { + + [System.ServiceModel.OperationContractAttribute(ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign, Action = "http://Microsoft.Samples.Discovery/ICalculatorService/Add", ReplyAction = "http://Microsoft.Samples.Discovery/ICalculatorService/AddResponse")] + double Add(double n1, double n2); + + [System.ServiceModel.OperationContractAttribute(ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign, Action = "http://Microsoft.Samples.Discovery/ICalculatorService/Subtract", ReplyAction = "http://Microsoft.Samples.Discovery/ICalculatorService/SubtractResponse")] + double Subtract(double n1, double n2); + + [System.ServiceModel.OperationContractAttribute(ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign, Action = "http://Microsoft.Samples.Discovery/ICalculatorService/Multiply", ReplyAction = "http://Microsoft.Samples.Discovery/ICalculatorService/MultiplyResponse")] + double Multiply(double n1, double n2); + + [System.ServiceModel.OperationContractAttribute(ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign, Action = "http://Microsoft.Samples.Discovery/ICalculatorService/Divide", ReplyAction = "http://Microsoft.Samples.Discovery/ICalculatorService/DivideResponse")] + double Divide(double n1, double n2); + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] + public interface ICalculatorServiceChannel : ICalculatorService, System.ServiceModel.IClientChannel + { + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] + public partial class CalculatorServiceClient : System.ServiceModel.ClientBase, ICalculatorService + { + + public CalculatorServiceClient() + { + } + + public CalculatorServiceClient(string endpointConfigurationName) : + base(endpointConfigurationName) + { + } + + public CalculatorServiceClient(string endpointConfigurationName, string remoteAddress) : + base(endpointConfigurationName, remoteAddress) + { + } + + public CalculatorServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : + base(endpointConfigurationName, remoteAddress) + { + } + + public CalculatorServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : + base(binding, remoteAddress) + { + } + + public double Add(double n1, double n2) + { + return base.Channel.Add(n1, n2); + } + + public double Subtract(double n1, double n2) + { + return base.Channel.Subtract(n1, n2); + } + + public double Multiply(double n1, double n2) + { + return base.Channel.Multiply(n1, n2); + } + + public double Divide(double n1, double n2) + { + return base.Channel.Divide(n1, n2); + } + } +} + +``` + +``` +// Program.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.Reflection; +using System.ServiceModel; +using System.ServiceModel.Discovery; + +namespace Microsoft.Samples.Discovery +{ + class Client + { + public static void Main() + { + // Create a DiscoveryEndpoint that points to the DiscoveryProxy + Uri probeEndpointAddress = new Uri("net.tcp://localhost:8001/Probe"); + DiscoveryEndpoint discoveryEndpoint = new DiscoveryEndpoint(new NetTcpBinding(), new EndpointAddress(probeEndpointAddress)); + + DiscoveryClient discoveryClient = new DiscoveryClient(discoveryEndpoint); + + Console.WriteLine("Finding ICalculatorService endpoints using the proxy at {0}", probeEndpointAddress); + Console.WriteLine(); + + try + { + // Find ICalculatorService endpoints + FindResponse findResponse = discoveryClient.Find(new FindCriteria(typeof(ICalculatorService))); + + Console.WriteLine("Found {0} ICalculatorService endpoint(s).", findResponse.Endpoints.Count); + Console.WriteLine(); + + // Check to see if endpoints were found, if so then invoke the service. + if (findResponse.Endpoints.Count > 0) + { + InvokeCalculatorService(findResponse.Endpoints[0].Address); + } + } + catch (TargetInvocationException) + { + Console.WriteLine("This client was unable to connect to and query the proxy. Ensure that the proxy is up and running."); + } + + Console.WriteLine("Press to exit."); + Console.ReadLine(); + } + + static void InvokeCalculatorService(EndpointAddress endpointAddress) + { + // Create a client + CalculatorServiceClient client = new CalculatorServiceClient(new NetTcpBinding(), endpointAddress); + Console.WriteLine("Invoking CalculatorService at {0}", endpointAddress.Uri); + Console.WriteLine(); + + double value1 = 100.00D; + double value2 = 15.99D; + + // Call the Add service operation. + double result = client.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + + // Call the Subtract service operation. + result = client.Subtract(value1, value2); + Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); + + // Call the Multiply service operation. + result = client.Multiply(value1, value2); + Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); + + // Call the Divide service operation. + result = client.Divide(value1, value2); + Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); + Console.WriteLine(); + + // Closing the client gracefully closes the connection and cleans up resources + client.Close(); + } + } +} +``` + +## 参照 + [WCF Discovery の概要](../../../../docs/framework/wcf/feature-details/wcf-discovery-overview.md) + [探索プロキシを実装する方法](../../../../docs/framework/wcf/feature-details/how-to-implement-a-discovery-proxy.md) + [探索プロキシで登録される探索可能なサービスの実装方法](../../../../docs/framework/wcf/feature-details/discoverable-service-that-registers-with-the-discovery-proxy.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/client-architecture.md b/docs/framework/wcf/feature-details/client-architecture.md new file mode 100644 index 00000000000..82c46de538f --- /dev/null +++ b/docs/framework/wcf/feature-details/client-architecture.md @@ -0,0 +1,69 @@ +--- +title: "クライアント アーキテクチャ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 02624403-0d77-41cb-9a86-ab55e98c7966 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# クライアント アーキテクチャ +アプリケーションは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアント オブジェクトを使用してサービス操作を呼び出します。このトピックでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクト、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント チャネル、およびこれらとその基になるチャネル アーキテクチャのリレーションシップについて説明します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトの概要については、「[WCF クライアントの概要](../../../../docs/framework/wcf/wcf-client-overview.md)」を参照してください。チャネル レイヤー[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[チャネル レイヤーの拡張](../../../../docs/framework/wcf/extending/extending-the-channel-layer.md)」を参照してください。 + +## 概要 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントはサービス モデル ランタイムによって作成されます。クライアントは次の要素から構成されます。 + +- 自動的に生成される、サービス コントラクトのクライアント実装。これは、アプリケーション コードからの呼び出しを送信メッセージに変換すると共に、応答メッセージを出力パラメーターに変換して、アプリケーションが取得できる値を返します。 + +- コントロール インターフェイス \(\) の実装。これは、さまざまなインターフェイスをグループ化し、コントロールの機能 \(特に、クライアント セッションの終了機能とチャネルの破棄機能\) へのアクセスを提供します。 + +- クライアント チャネル。これは、使用するバインディングによって指定される構成設定に基づいて構築されます。 + + アプリケーションでは、 を使用するか、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) で生成された 派生クラスのインスタンスを作成することによって、必要に応じて、このようなクライアントを作成できます。これらの作成済みのクライアント クラスは、 によって動的に構築されるクライアント チャネル実装にカプセル化され、処理が代行されます。したがって、クライアント チャネルと、クライアント チャネルを生成するチャネル ファクトリが、このトピックの説明の中心となります。 + +## クライアント オブジェクトとクライアント チャネル + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの基本インターフェイスは、 インターフェイスです。これは、中核となるクライアント機能だけでなく、 の基本的な通信オブジェクト機能、 のコンテキスト機能、および の拡張可能な動作を公開します。 + + ただし、 インターフェイスではサービス コントラクトそのものは定義しません。サービス コントラクトは \(通常、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) などのツールを使用してサービス メタデータから生成される\) サービス コントラクト インターフェイスによって宣言されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント型は、 とターゲットのサービス コントラクト インターフェイスの両方を拡張したもので、アプリケーションから直接操作を呼び出したり、クライアント側のランタイム機能にアクセスしたりできるようにします。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを作成することにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] オブジェクトには、構成済みサービス エンドポイントに接続して対話できるランタイムの作成に必要な情報が提供されます。 + + 上述のとおり、この 2 つの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント型は、使用する前に構成する必要があります。最も単純な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント型は、 \(または、サービス コントラクトが双方向コントラクトである場合は、\) から派生するオブジェクトです。これらのクライアント型はコンストラクターを使用して作成し、プログラムで構成するか、または構成ファイルを使用して構成します。また、サービス操作を呼び出すために直接呼び出されます。 オブジェクトの概要については、「[WCF クライアントの概要](../../../../docs/framework/wcf/wcf-client-overview.md)」を参照してください。 + + 2 番目のクライアント型は、実行時に メソッドへの呼び出しから生成されます。通常、通信の詳細を厳密に制御する必要があるアプリケーションでは、*クライアント チャネル オブジェクト*と呼ばれる、このクライアント型を使用します。このクライアント型を使用することにより、基になるクライアント ランタイムやチャネル システムに比べ、より直接的な対話が可能になるためです。 + +## チャネル ファクトリ + クライアント呼び出しをサポートする、基になるランタイムを作成するクラスは、 クラスです。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトも [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント チャネル オブジェクトも、 オブジェクトを使用してインスタンスを作成します。 派生クライアント オブジェクトはチャネル ファクトリの処理をカプセル化しますが、さまざまなシナリオを想定した場合、チャネル ファクトリを直接使用することをお勧めします。よくあるシナリオとしては、既存のファクトリから新しいクライアント チャネルを繰り返し作成する必要がある場合です。クライアント オブジェクトを使用している場合は、 プロパティを呼び出して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトから、基になるチャネル ファクトリを取得できます。 + + チャネル ファクトリに関して覚えておく必要のある重要なことは、これらのファクトリが、 を呼び出す前に、指定されている構成のクライアント チャネルの新しいインスタンスを作成するという点です。いったん \(または 、または [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトに対する任意の操作\) を呼び出した場合、ターゲットのエンドポイント アドレスを変更するだけでは、チャネル ファクトリを変更したり、別のサービス インスタンスへのチャネルを取得したりすることはできません。異なる構成でクライアント オブジェクトやクライアント チャネルを作成するには、まず新しいチャネル ファクトリを作成する必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント チャネルを使用する際のさまざまな問題[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WCF クライアントを使用したサービスへのアクセス](../../../../docs/framework/wcf/feature-details/accessing-services-using-a-client.md)」を参照してください。 + + 次の 2 つのセクションでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント チャネル オブジェクトの作成と使用について説明します。 + +#### 新しい WCF クライアント チャネル オブジェクトの作成 + 次のサービス コントラクトが生成されていることを前提に、クライアント チャネルの使用方法を説明します。 + + [!code-csharp[C_GeneratedCodeFiles#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_generatedcodefiles/cs/proxycode.cs#12)] + + `ISampleService` サービスに接続するには、チャネル ファクトリ \(\) を直接使用して生成したコントラクト インターフェイスを使用します。特定のコントラクトのチャネル ファクトリを作成して構成した後は、 メソッドを呼び出して、`ISampleService` サービスとの通信に使用できるクライアント チャネル オブジェクトを返すことができます。 + + サービス コントラクト インターフェイスで クラスを使用する場合は、 インターフェイスにキャストして、明示的にチャネルを開いたり、閉じたり、中止したりする必要があります。処理を容易にするために、Svcutil.exe ツールでは、サービス コントラクト インターフェイスと の両方を実装するヘルパー インターフェイスも生成されます。これにより、キャストを行わずにクライアント チャネル インフラストラクチャとのやりとりを実現できます。上記のサービス コントラクトを実装するヘルパー クライアント チャネルの定義を、次のコード例に示します。 + + [!code-csharp[C_GeneratedCodeFiles#13](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_generatedcodefiles/cs/proxycode.cs#13)] + +#### 新しい WCF クライアント チャネル オブジェクトの作成 + クライアント チャネルを使用して `ISampleService` サービスに接続するには、チャネル ファクトリを直接使用して生成したコントラクト インターフェイス \(またはヘルパー バージョン\) を使用して、コントラクト インターフェイスの型を型パラメーターとして渡します。特定のコントラクトのチャネル ファクトリを作成して構成したら、 メソッドを呼び出して、`ISampleService` サービスとの通信に使用できるクライアント チャネル オブジェクトを返すことができます。 + + 作成したクライアント チャネル オブジェクトで とコントラクト インターフェイスを実装します。その結果、これらを使用して、このコントラクトをサポートするサービスと対話する操作を直接呼び出すことができます。 + + クライアント オブジェクトを使用するかクライアント チャネル オブジェクトを使用するかは、開発者がきめ細かな制御を優先するか容易さを優先するかの違いだけです。クラスやオブジェクトの処理に慣れている多くの開発者の場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント チャネルではなく [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトを選択することも考えられます。 + + 例については、「[方法 : ChannelFactory を使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-channelfactory.md)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/client-configuration.md b/docs/framework/wcf/feature-details/client-configuration.md new file mode 100644 index 00000000000..d94477c6231 --- /dev/null +++ b/docs/framework/wcf/feature-details/client-configuration.md @@ -0,0 +1,105 @@ +--- +title: "クライアント構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5da5bd3b-65d9-43b7-91b9-cc9e989b1350 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# クライアント構成 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアント構成は、クライアント エンドポイントのアドレス \(Address\)、バインディング \(Binding\)、動作 \(Behavior\)、およびコントラクト \(Contract\) の各プロパティ \(頭文字を取って "ABC" プロパティと呼ばれます\) を指定するために使用されます。また、これらのプロパティは、クライアントがサービス エンドポイントに接続するために使用されます。 [\](../../../../docs/framework/configure-apps/file-schema/wcf/client.md) 要素には [\](http://msdn.microsoft.com/ja-jp/13aa23b7-2f08-4add-8dbf-a99f8127c017) 要素があり、その属性はエンドポイントの ABC プロパティを構成するために使用されます。 これらの属性については、このトピックの「エンドポイントの構成」で説明します。 + + また、[\](http://msdn.microsoft.com/ja-jp/13aa23b7-2f08-4add-8dbf-a99f8127c017) には、メタデータのインポートおよびエクスポート設定を指定するために使用される [\](../../../../docs/framework/configure-apps/file-schema/wcf/metadata.md) 要素、カスタムのアドレス ヘッダーのコレクションを格納する [\](../../../../docs/framework/configure-apps/file-schema/wcf/headers.md) 要素、およびメッセージを交換する他のエンドポイントによるエンドポイントの認証を可能にする [\](../../../../docs/framework/configure-apps/file-schema/wcf/identity.md) 要素も含まれます。 [\](../../../../docs/framework/configure-apps/file-schema/wcf/headers.md) および [\](../../../../docs/framework/configure-apps/file-schema/wcf/identity.md) 要素は の一部であり、「[アドレス](../../../../docs/framework/wcf/feature-details/endpoint-addresses.md)」で説明します。 メタデータ拡張の使用法に関するトピックへのリンクは、このトピックの「メタデータの構成」にあります。 + +## エンドポイントの構成 + クライアント構成では、クライアントがエンドポイントを 1 つ以上指定できるように設計します。各エンドポイントは、独自の名前、アドレス、およびコントラクトを持ち、そのエンドポイントを構成するために使用されるクライアント構成の [\](../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) 要素と [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素を参照します。 クライアント構成ファイルには、"App.config" という名前を付ける必要があります。これは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムが想定している名前です。 クライアント構成ファイルの例を次に示します。 + +``` + + + + + + + + + + + + + + + + +// Add another endpoint by adding another element. + + //Configure another endpoint here. + + + +//The bindings section references by the bindingConfiguration endpoint attribute. + + + + + + + //Security settings go here. + + + + + + +//The behavior section references by the behaviorConfiguration endpoint attribute. + + + + + + + + + + +``` + + 省略可能な `name` 属性は、特定のコントラクトのエンドポイントを一意に識別します。 この属性は、サービスへのチャネルの作成時に、クライアント構成のどのエンドポイントをターゲットとし、読み込む必要があるかを指定するために、 または が使用します。 エンドポイント構成名としてワイルドカード "\*" を使用できます。これは、使用できるエンドポイント構成が 1 つだけ存在する場合はファイル内のエンドポイント構成を読み込み、それ以外の場合は例外をスローするように メソッドに指示します。 この属性が省略されている場合、指定されたコントラクトの種類に関連する既定のエンドポイントとして、対応するエンドポイントが使用されます。 `name` 属性の既定値は、他の名前と同様に一致する空の文字列です。 + + すべてのエンドポイントには、エンドポイントを検索および識別するために、アドレスが関連付けられている必要があります。 `address` 属性は、エンドポイントの場所を示す URL を指定するために使用できます。 ただし、サービス エンドポイントのアドレスは、コードで指定することもできます。その場合は、URI \(Uniform Resource Identifier\) を作成し、 メソッドのいずれかを使用して、この URI を に追加します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[アドレス](../../../../docs/framework/wcf/feature-details/endpoint-addresses.md)」を参照してください。 最初に説明したように、[\](../../../../docs/framework/configure-apps/file-schema/wcf/headers.md) 要素と [\](../../../../docs/framework/configure-apps/file-schema/wcf/identity.md) 要素は の一部であるため、これらについては「[アドレス](../../../../docs/framework/wcf/feature-details/endpoint-addresses.md)」でも説明します。 + + `binding` 属性は、エンドポイントがサービスに接続する際に使用するバインディングの種類を示します。 参照できるようにするには、種類は登録された構成セクションを持っている必要があります。 上の例では、[\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) セクションがこれであり、エンドポイントが を使用することを示しています。 ただし、エンドポイントが使用できる、指定された種類のバインディングが複数存在することもあります。 これらは、それぞれ \(バインディングの\) 種類を表す要素内に独自の [\](../../../../docs/framework/misc/binding.md) 要素を持ちます。 `bindingconfiguration` 属性は、同じ種類のバインディングを識別するために使用されます。 この値は、[\](../../../../docs/framework/misc/binding.md) 要素の `name` 属性と一致します。 構成を使用してクライアント バインディングを構成する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 構成でクライアント バインディングを指定する](../../../../docs/framework/wcf/how-to-specify-a-client-binding-in-configuration.md)」を参照してください。 + + `behaviorConfiguration` 属性は、エンドポイントが使用する [\](../../../../docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md) の [\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md) を指定するために使用されます。 この値は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md) 要素の `name` 属性と一致します。 構成を使用してクライアントの動作を指定する例については、「[クライアントの動作の構成](../../../../docs/framework/wcf/configuring-client-behaviors.md)」を参照してください。 + + `contract` 属性は、エンドポイントが公開するコントラクトを指定します。 この値は、 にマップされます。 既定値は、サービスを実装するクラスの完全な型名です。 + +### メタデータの構成 + [\](../../../../docs/framework/configure-apps/file-schema/wcf/metadata.md) 要素は、メタデータのインポート拡張を登録するための設定を指定するために使用されます。 メタデータ システムの拡張[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メタデータ システムの拡張](../../../../docs/framework/wcf/extending/extending-the-metadata-system.md)」を参照してください。 + +## 参照 + [エンドポイント : アドレス、バインディング、およびコントラクト](../../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md) + [クライアントの動作の構成](../../../../docs/framework/wcf/configuring-client-behaviors.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/clients.md b/docs/framework/wcf/feature-details/clients.md new file mode 100644 index 00000000000..e7d0fd28d5c --- /dev/null +++ b/docs/framework/wcf/feature-details/clients.md @@ -0,0 +1,36 @@ +--- +title: "クライアント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cce50025-0318-4a5e-9ce8-c67feab83b06 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# クライアント +このセクションのトピックでは、クライアント アーキテクチャ、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスへのアクセス方法、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの構成方法、および [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントのセキュリティに関する考慮事項について説明します。 + +## このセクションの内容 + [WCF クライアント アーキテクチャ](../../../../docs/framework/wcf/feature-details/client-architecture.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントのアーキテクチャについて説明します。 + + [WCF クライアントを使用したサービスへのアクセス](../../../../docs/framework/wcf/feature-details/accessing-services-using-a-client.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスにアクセスする方法について説明します。 + + [WCF クライアントの構成](../../../../docs/framework/wcf/feature-details/client-configuration.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの設定方法について説明します。 + + [クライアントのセキュリティ保護](../../../../docs/framework/wcf/securing-clients.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントのセキュリティに関する考慮事項について説明します。 + +## 参照 + [Client Samples](http://msdn.microsoft.com/ja-jp/849fc452-8718-4d4e-ba57-905eed943f63) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/collection-types-in-data-contracts.md b/docs/framework/wcf/feature-details/collection-types-in-data-contracts.md new file mode 100644 index 00000000000..5d1798aec31 --- /dev/null +++ b/docs/framework/wcf/feature-details/collection-types-in-data-contracts.md @@ -0,0 +1,404 @@ +--- +title: "データ コントラクトのコレクション型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コレクション型 [WCF], データ コントラクト" + - "データ コントラクト [WCF], コレクション型" + - "コレクション型 [WCF]" +ms.assetid: 9b45b28e-0a82-4ea3-8c33-ec0094aff9d5 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# データ コントラクトのコレクション型 +*"コレクション"* は、特定の型の項目のリストです。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] では、このようなリストは、配列や他のさまざまな型を使用して表すことができます \(ジェネリック List、ジェネリック 、または \)。 たとえば、コレクションでは指定された顧客のアドレスのリストを保持できます。 これらのコレクションは、実際の型に関係なく、*リスト コレクション*と呼びます。 + + コレクションには、ある項目 \("キー"\) と別の項目 \("値"\) の関連付けを表す特殊な形式のものがあります。 これらのコレクションは、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] では やジェネリック ディクショナリなどの型によって表されます。 たとえば、関連付けコレクションでは、都市 \("キー"\) をその人口 \("値"\) に関連付けることができます。 これらのコレクションは、実際の型に関係なく、*ディクショナリ コレクション*と呼びます。 + + データ コントラクト モデルでは、コレクションは特別な扱いを受けます。 + + 配列やジェネリック コレクションを含め、 インターフェイスを実装する型はコレクションとして認識されます。 これらの中で、 インターフェイスまたはジェネリック インターフェイスを実装する型がディクショナリ コレクションであり、他はすべてリスト コレクションです。 + + `Add` というメソッドと既定のコンストラクターを持つなど、コレクション型のその他の要件については、以降のセクションで詳しく説明します。 これにより、コレクション型を確実にシリアル化および逆シリアル化できます。 これは、直接サポートされないコレクションもあることを意味します。たとえば、ジェネリック \(既定のコンストラクターを持たないため\) などは直接サポートされません。 これらの制限を回避する方法については、このトピックで後述する「コレクション インターフェイス型と読み取り専用コレクションの使用」を参照してください。 + + コレクションに含まれる型は、データ コントラクト型である必要があります。それ以外の場合は、シリアル化可能な型であることが必要です。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [データ コントラクト シリアライザーでサポートされる型](../../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md)。 + + 有効なコレクションと見なされるものと見なされないもの、およびコレクションをシリアル化する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、このトピックの「コレクションの高度な規則」でコレクションのシリアル化に関する情報を参照してください。 + +## 交換可能なコレクション + 同じ型のすべてのリスト コレクションは、同じデータ コントラクトを持つと見なされます \(このトピックで後述するように、 属性を使用してカスタマイズされている場合を除きます\)。 たとえば、次のデータ コントラクトは等価です。 + + [!code-csharp[c_collection_types_in_data_contracts#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#0)] + [!code-vb[c_collection_types_in_data_contracts#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#0)] + + この 2 つのデータ コントラクトでは、いずれも次のコードに似た XML が生成されます。 + +``` + + ... + + ... + ... + ... + ... + + + ... + ... + ... + ... + + +``` + + コレクションの可換性により、たとえば、サーバーではパフォーマンスを確保するように最適化されたコレクション型を使用し、クライアントではユーザー インターフェイス コンポーネントにバインドするよう設計されたコレクション型を使用することが可能です。 + + リスト コレクションと同様に、\( 属性によってカスタマイズされている場合を除き\) キーおよび値の型が同じであるすべてのディクショナリ コレクションは、同じデータ コントラクトを持つと見なされます。 + + コレクションの等価性に関する限り、重要となるのはデータ コントラクト型のみであり、.NET 型は影響しません。 つまり、Type1 と Type2 のデータ コントラクトが等価であれば、Type1 のコレクションは Type2 のコレクションと等価と見なされます。 + + 非ジェネリック コレクションは、`Object` 型のジェネリック コレクションと同じデータ コントラクトを持つと見なされます \(たとえば、 のジェネリック `Object` のデータ コントラクトは同じです\)。 + +## コレクション インターフェイス型と読み取り専用コレクションの使用 + コレクション インターフェイス型 \(、ジェネリック 、またはこれらのインターフェイスから派生したインターフェイス\) も、実際のコレクション型のコレクション データ コントラクトと等価のコレクション データ コントラクトを持つと見なされます。 したがって、シリアル化する型をコレクション インターフェイス型として宣言できます。この結果は、実際のコレクション型を使用した場合と同じになります。 たとえば、次のデータ コントラクトは等価です。 + + [!code-csharp[c_collection_types_in_data_contracts#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#1)] + [!code-vb[c_collection_types_in_data_contracts#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#1)] + + シリアル化の実行時には、宣言された型がインターフェイスの場合、使用される実際のインスタンスの型はそのインターフェイスを実装する任意の型になります。 前述の制限 \(既定のコンストラクターと `Add` メソッドを持つ\) は適用されません。 たとえば、ジェネリック 型のデータ メンバーを直接宣言できない場合でも、Customer2 のアドレスを Address のジェネリック のインスタンスに設定できます。 + + 逆シリアル化の実行時には、宣言された型がインターフェイスの場合、宣言されたインターフェイスを実装する型がシリアル化エンジンによって選択され、インスタンス化されます。 この場合、既知の型機構 \(「[既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照\) は無効になります。型の選択は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に組み込まれています。 + +## コレクション型のカスタマイズ + コレクション型は、複数の用途を持つ 属性を使用することによってカスタマイズできます。 + + コレクション型をカスタマイズすると、コレクションの可換性が損なわれるため、一般に、できるだけこの属性を適用しないようにすることをお勧めします。 この問題[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、このトピックで後述する「コレクションの高度な規則」を参照してください。 + +### コレクション データ コントラクトの名前付け + コレクション型の名前付け規則は、「[データ コントラクト名](../../../../docs/framework/wcf/feature-details/data-contract-names.md)」で説明する通常のデータ コントラクト型の名前付けの規則に似ていますが、重要な違いがいくつかあります。 + +- 名前をカスタマイズする際に、 属性ではなく、 属性を使用します。 属性にも、`Name` プロパティと `Namespace` プロパティがあります。 + +- 属性を適用しない場合、コレクション型の既定の名前と名前空間は、コレクションに含まれる型の名前と名前空間によって決まります。 これらは、コレクション型自体の名前と名前空間の影響を受けません。 型の一例を次に示します。 + + ``` + public CustomerList1 : Collection {} + public StringList1 : Collection {} + ``` + + これらの型のデータ コントラクト名は、"CustomerList1" や "StringList1" ではなく、どちらも "ArrayOfstring" になります。 つまり、ルート レベルでこれらの型のどちらをシリアル化しても、次のコードのような XML が生成されます。 + +``` + + ... + ... + ... + ... + +``` + + この名前付け規則が選択されたのは、文字列のリストを表すカスタマイズされていないすべての型が同じデータ コントラクトと XML 表現を持つことができるようにするためです。 これにより、コレクションの可換性が実現されています。 この例では、CustomerList1 と StringList1 は完全に交換可能です。 + + ただし、 属性を適用すると、この属性でプロパティが設定されていない場合でも、コレクションはカスタマイズされたコレクション データ コントラクトになります。 この場合、コレクション データ コントラクトの名前と名前空間は、コレクション型自体によって決まります。 型の一例を次に示します。 + + [!code-csharp[c_collection_types_in_data_contracts#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#2)] + [!code-vb[c_collection_types_in_data_contracts#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#2)] + + シリアル化すると、生成される XML は次のようになります。 + +``` + + ... + ... + ... + ... + +``` + + これは、カスタマイズされていない型の XML 表現と等価ではなくなっていることに注意してください。 + +- `Name` プロパティと `Namespace` プロパティを使用して、名前付けをさらにカスタマイズできます。 次のクラスを参照してください。 + + [!code-csharp[c_collection_types_in_data_contracts#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#3)] + [!code-vb[c_collection_types_in_data_contracts#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#3)] + + 生成される XML は次のようになります。 + +``` + + ... + ... + ... + ... + +``` + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]このトピックで後述される「コレクションの高度な規則」を参照してください。 + +### リスト コレクション内の反復される要素名のカスタマイズ + リスト コレクションには、反復されるエントリが含まれています。 通常、反復される各エントリは、コレクションに含まれる型のデータ コントラクト名に従って名前が付けられた要素として表されます。 + + `CustomerList` の各例では、コレクションに文字列が含まれていました。 文字列プリミティブ型のデータ コントラクト名は "string" であるため、反復される要素は "\" でした。 + + ただし、 属性の プロパティを使用すると、この反復される要素名をカスタマイズできます。 型の一例を次に示します。 + + [!code-csharp[c_collection_types_in_data_contracts#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#4)] + [!code-vb[c_collection_types_in_data_contracts#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#4)] + + 生成される XML は次のようになります。 + +``` + + ... + ... + ... + ... + +``` + + 反復される要素の名前空間は、コレクション データ コントラクトの名前空間と常に同じです。前述のように、コレクション データ コントラクトの名前空間は、`Namespace` プロパティを使用してカスタマイズできます。 + +### ディクショナリ コレクションのカスタマイズ + ディクショナリ コレクションは、基本的にエントリのリストです。各エントリにはキーが含まれ、その後に値が続きます。 通常のリストと同様に、反復される要素に対応する要素名は、 プロパティを使用して変更できます。 + + また、キーと値を表す要素名は、 プロパティと プロパティを使用して変更できます。 これらの要素の名前空間は、コレクション データ コントラクトの名前空間と同じです。 + + 型の一例を次に示します。 + + [!code-csharp[c_collection_types_in_data_contracts#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#5)] + [!code-vb[c_collection_types_in_data_contracts#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#5)] + + シリアル化すると、生成される XML は次のようになります。 + +``` + + + USA + Washington + + + France + Paris + + ... + +``` + + ディクショナリ コレクション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、このトピックで後述される「コレクションの高度な規則」を参照してください。 + +## コレクションと既知の型 + コレクション型を、他のコレクションまたはコレクション インターフェイスの代わりにポリモーフィックに使用する場合は、既知の型に追加する必要はありません。 たとえば、 型のデータ メンバーを宣言し、このデータ メンバーを使用して のインスタンスを送信する場合、 を既知の型に追加する必要はありません。 + + コレクションを、コレクション型以外の型の代わりにポリモーフィックに使用する場合は、コレクションを既知の型に追加する必要があります。 たとえば、`Object` 型のデータ メンバーを宣言し、このデータ メンバーを使用して のインスタンスを送信する場合は、 を既知の型に追加する必要があります。 + + この場合、等価のコレクションをポリモーフィックにシリアル化することはできません。 たとえば、前述の例で、 を既知の型のリストに追加すると、`Array of Object` クラスが等価のデータ コントラクトを持っていても、これを割り当てることはできなくなります。 これは、コレクション型以外の型のシリアル化における、通常の既知の型の動作と変わりません。しかし、コレクションが等価であることはごく一般的なことであるため、コレクションに関しては、この動作を理解しておくことが特に重要となります。 + + シリアル化では、指定されたデータ コントラクトの特定のスコープで許可される既知の型は 1 つだけであり、等価のコレクションはすべて同じデータ コントラクトを持ちます。 つまり、前述の例では、同じスコープで と `Array of Object` の両方を既知の型に追加することはできません。 先ほども説明したように、これはコレクション型以外の型での既知の型の動作と同じですが、コレクションではこの動作を理解しておくことが特に重要です。 + + コレクションの内容に既知の型が必要になることもあります。 たとえば、 に `Type1` と `Type2` のインスタンスを実際に含める場合、この両方の型を既知の型に追加する必要があります。 + + コレクションと既知の型を使用して、適切に構築されたオブジェクト グラフの例を次に示します \(この例には、多少不自然な部分があります。実際のアプリケーションでは、通常、次のデータ メンバーを `Object` として定義することはないため、既知の型やポリモーフィズムの問題が発生することはありません\)。 + + [!code-csharp[c_collection_types_in_data_contracts#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#6)] + [!code-vb[c_collection_types_in_data_contracts#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#6)] + + 逆シリアル化では、宣言された型がコレクション型の場合、実際に送信された型に関係なく、宣言された型がインスタンス化されます。 宣言された型がコレクション インターフェイスの場合は、既知の型に関係なく、インスタンス化される型がデシリアライザーによって選択されます。 + + また、逆シリアル化では、宣言された型がコレクション型ではないときにコレクション型を送信する場合、既知の型リストから一致するコレクション型が選択されます。 逆シリアル化では、コレクション インターフェイス型を既知の型のリストに追加できます。 この場合、逆シリアル化エンジンによって、インスタンス化する型が再度選択されます。 + +## コレクションと NetDataContractSerializer クラス + クラスの使用時には、配列ではないカスタマイズされていないコレクション型 \( 属性を使用していないコレクション型\) は、その特殊な意味を失います。 + + 属性でマークされたカスタマイズされていないコレクション型でも、 属性または インターフェイスの規則に従って、 クラスによってシリアル化できます。 + + クラスを使用している場合でも、カスタマイズされたコレクション型、コレクション インターフェイス、および配列は、コレクションとして扱われます。 + +## コレクションとスキーマ + すべての等価のコレクションは、XML スキーマ定義言語 \(XSD: XML Schema Definition Language\) スキーマで同様に表現されます。 このため、生成されたクライアント コードでもサーバーと同じコレクション型になることは通常ありません。 たとえば、サーバーで Integer データ メンバーのジェネリック を含むデータ コントラクトを使用していても、生成されたクライアント コードでは、この同じデータ メンバーが整数の配列になることがあります。 + + ディクショナリ コレクションは、それがディクショナリであることを示す [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 固有のスキーマ注釈でマークされます。そうしないと、キーと値を持つエントリが含まれた単純なリストと区別できなくなります。 データ コントラクト スキーマでのコレクションの表現方法の正確な記述については、「[データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)」を参照してください。 + + 既定では、コードをインポートする際に、カスタマイズされていないコレクションの型は生成されません。 リスト コレクション型のデータ メンバーは配列としてインポートされ、ディクショナリ コレクション型のデータ メンバーはジェネリック ディクショナリとしてインポートされます。 + + ただし、カスタマイズされたコレクションの場合、 属性でマークされた個別の型が生成されます \(スキーマにおけるカスタマイズされたコレクション型とは、既定の名前空間、名前、反復される要素名、またはキー\/値要素名を使用しない型のことです\)。 これらの型は、リスト型のジェネリック およびディクショナリ型のジェネリック ディクショナリから派生した空の型です。 + + たとえば、サーバーで次のような型を使用するとします。 + + [!code-csharp[c_collection_types_in_data_contracts#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#7)] + [!code-vb[c_collection_types_in_data_contracts#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#7)] + + スキーマをエクスポートし、再度インポートすると、生成されるクライアント コードは次のようになります \(わかりやすくするために、プロパティの代わりにフィールドを示しています\)。 + + [!code-csharp[c_collection_types_in_data_contracts#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#8)] + [!code-vb[c_collection_types_in_data_contracts#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#8)] + + 生成されるコードで、既定の型と異なる型を使用することが必要になる場合があります。 たとえば、データ メンバーをユーザー インターフェイス コンポーネントにバインドしやすくするために、データ メンバーの通常の配列ではなく、ジェネリック を使用することがあります。 + + 生成するコレクション型を選択するには、スキーマをインポートするときに、使用するコレクション型のリストを オブジェクトの プロパティに渡します。 これらの型は、*"参照されるコレクション型"* と呼ばれます。 + + ジェネリック型を参照する場合は、完全なオープン ジェネリックまたは完全なクローズ ジェネリックであることが必要です。 + +> [!NOTE] +> Svcutil.exe ツールを使用すると、**\/collectionType** コマンド ライン スイッチ \(短縮形: **\/ct**\) を使用して、この参照を実現できます。**\/reference** スイッチ \(短縮形: **\/r**\) を使用して、参照されるコレクション型のアセンブリも指定する必要があることに注意してください。 型がジェネリックの場合は、型の後に逆引用符とジェネリック パラメーターの数を指定する必要があります。 逆引用符 \(\`\) は、単一引用符 \(‘\) と混同しないでください。 参照されるコレクション型を複数指定するには、**\/collectionType** スイッチを複数回使用します。 + + たとえば、すべてのリストをジェネリック としてインポートするには、次のように指定します。 + +``` +svcutil.exe MyService.wsdl MyServiceSchema.xsd /r:C:\full_path_to_system_dll\System.dll /ct:System.Collections.Generic.List`1 + +``` + + コレクションをインポートするときに、参照されるコレクション型のこのリストがスキャンされ、最も一致するコレクションが見つかると、そのコレクションがデータ メンバー型 \(カスタマイズされていないコレクションの場合\)、または派生元となる基本型 \(カスタマイズされたコレクションの場合\) として使用されます。 ディクショナリはディクショナリと照合され、リストはリストと照合されます。 + + たとえば、参照される型のリストにジェネリック を追加した場合、前述の例で生成されるクライアント コードは次のようになります。 + + [!code-csharp[c_collection_types_in_data_contracts#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#9)] + [!code-vb[c_collection_types_in_data_contracts#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#9)] + + 参照されるコレクション型の一部として、コレクション インターフェイス型を指定できますが、無効なコレクション型 \(`Add` メソッドまたはパブリック コンストラクターを持たないコレクション型など\) を指定することはできません。 + + クローズ ジェネリック型は、合致度が最も高いと見なされます \(非ジェネリック型は、`Object` のクローズ ジェネリックと同等に扱われます\)。 たとえば、 のジェネリック 、ジェネリック \(オープン ジェネリック\)、および が参照されるコレクション型である場合、次のようなコードが生成されます。 + + [!code-csharp[c_collection_types_in_data_contracts#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#10)] + [!code-vb[c_collection_types_in_data_contracts#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#10)] + + リスト コレクションの場合、以下の表内のケースだけがサポートされます。 + +|参照される型|参照される型で実装されるインターフェイス|例|型の処理| +|------------|--------------------------|-------|----------| +|非ジェネリックまたはクローズ ジェネリック \(任意の数のパラメーター\)|非ジェネリック|`MyType : IList`

または

`MyType : IList`

ここでは、T\= `int`|`Object` のクローズ ジェネリック \(例 : `IList`\)| +|非ジェネリックまたはクローズ ジェネリック \(コレクション型と必ずしも一致するわけではない任意の数のパラメーター\)|クローズ ジェネリック|`MyType : IList`

または

`MyType : IList` ここでは、T\=`int`|クローズ ジェネリック \(例 : `IList`\)| +|任意の数のパラメーターを持つクローズ ジェネリック|型のパラメーターのいずれかを使用するオープン ジェネリック|`MyType : IList`

ここでは、T\=`int`、U\=`string`、V\=`bool`|クローズ ジェネリック \(例 : `IList`\)| +|パラメーターを 1 つ持つオープン ジェネリック|型のパラメーターを使用するオープン ジェネリック|`MyType : IList`、T はオープン|オープン ジェネリック \(例 : `IList`\)| + + 型が複数のリスト コレクション インターフェイスを実装している場合、以下の制限が適用されます。 + +- 型が、異なる型のジェネリック \(またはその派生インターフェイス\) を複数回実装している場合、その型は有効な参照されるコレクション型とは見なされず、無視されます。 これは、一部の実装が無効であったり、オープン ジェネリックを使用していたりする場合も該当します。 たとえば、型が のジェネリック `int` と、T のジェネリック を実装している場合、`int` の参照されるコレクションとしても、その他の型の参照されるコレクションとしても使用されることはありません。この場合、型が `Add` を受け入れる `int` メソッドと T 型のパラメーターを受け入れる `Add` メソッドのいずれか、または両方を持っているかどうかは関係ありません。 + +- 型がジェネリック コレクション インターフェイスと を実装している場合、ジェネリック コレクション インターフェイスが 型のクローズ ジェネリックでない限り、参照されるコレクション型として使用されることはありません。 + + ディクショナリ コレクションの場合、以下の表内のケースだけがサポートされます。 + +|参照される型|参照される型で実装されるインターフェイス|例|型の処理| +|------------|--------------------------|-------|----------| +|非ジェネリックまたはクローズ ジェネリック \(任意の数のパラメーター\)||`MyType : IDictionary`

または

`MyType : IDictionary` ここでは、T\=`int`|クローズ ジェネリック `IDictionary`| +|クローズ ジェネリック \(任意の数のパラメーター\)|、クローズ|`MyType : IDictionary\` ここでは、T\=`int`|クローズ ジェネリック \(例 : `IDIctionary\`\)| +|クローズ ジェネリック \(任意の数のパラメーター\)|ジェネリック 、キーまたは値の一方がクローズ。もう一方はオープンで、型のパラメーターのいずれかを使用|`MyType\ : IDictionary\` ここでは、T\=`int`、U\=`float`、V\=`bool`

または

`MyType : IDictionary\` ここでは、Z\=`string`|クローズ ジェネリック \(例 : `IDictionary\`\)| +|クローズ ジェネリック \(任意の数のパラメーター\)|ジェネリック 、キーと値の両方がオープンであり、それぞれ型のパラメーターのいずれかを使用|`MyType\ : IDictionary\` ここでは、T\=`int`、U\=`bool`、V\=`string`|クローズ ジェネリック \(例 : `IDictionary\`\)| +|オープン ジェネリック \(2 つのパラメーター\)|ジェネリック 、オープン、型のジェネリック パラメーターの両方をその出現順に使用|`MyType\ : IDictionary\`、K と V は共にオープン|オープン ジェネリック \(例 : `IDictionary\`\)| + + 型が とジェネリック の両方を実装している場合、ジェネリック だけが考慮されます。 + + 部分的なジェネリック型の参照はサポートされていません。 + + 重複は許可されていません。たとえば、 のジェネリック `Integer` と、`Integer` のジェネリック コレクションの両方を に追加することはできません。これは、スキーマで整数のリストが見つかったときに、どちらを使用するかを判断できなくなるためです。 もっとも、このような重複が検出されるのは、それが問題になるような型がスキーマ中にある場合だけです。 たとえば、インポートしているスキーマ中に整数のリストがない場合に、 のジェネリック `Integer` と `Integer` のジェネリック コレクションの両方が にあっても問題はありませんが、いずれも使用されません。 + +## コレクションの高度な規則 + +### コレクションのシリアル化 + コレクションのシリアル化規則を以下に示します。 + +- コレクション型は、組み合わせる \(コレクションのコレクションを持つ\) ことができます。 ジャグ配列は、コレクションのコレクションとして扱われます。 多次元配列はサポートされていません。 + +- バイト配列と の配列は、コレクションではなく、プリミティブとして扱われる特殊な配列の型です。 バイト配列をシリアル化すると、バイトごとの個別の要素ではなく、Base64 でエンコードされたデータのチャンクを含む単一の XML 要素が生成されます。 の配列の処理方法の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[データ コントラクトの XML および ADO.NET の種類](../../../../docs/framework/wcf/feature-details/xml-and-ado-net-types-in-data-contracts.md)」を参照してください。 これらの特殊な型もコレクションに参加できます。バイト配列の配列の場合、複数の XML 要素が生成され、各要素に Base64 でエンコードされたデータのチャンクが含まれます。 + +- 属性をコレクション型に適用した場合、型はコレクションとしてではなく、通常のデータ コントラクト型として扱われるようになります。 + +- コレクション型が インターフェイスを実装している場合、次の規則が適用されます。`myType:IList, IXmlSerializable` 型と仮定します。 + + - 宣言型が `IList` の場合、この型はリストとしてシリアル化されます。 + + - 宣言型が `myType` の場合、この型は `IXmlSerializable` としてシリアル化されます。 + + - 宣言型が `IXmlSerializable` の場合は、既知の型のリストに `IXmlSerializable` を追加しているときにのみ、この型が `myType` としてシリアル化されます。 + +- コレクションは、以下の表に示すメソッドを使用してシリアル化および逆シリアル化されます。 + +|コレクション型の実装|シリアル化で呼び出されるメソッド|逆シリアル化で呼び出されるメソッド| +|----------------|----------------------|-----------------------| +|ジェネリック |`get_Keys`, `get_Values`|ジェネリック Add| +||`get_Keys`, `get_Values`|`Add`| +|ジェネリック |ジェネリック インデクサー|ジェネリック Add| +|ジェネリック |列挙子|ジェネリック Add| +|| インデクサー|`Add`| +|ジェネリック |`GetEnumerator`|適切な型 \(ジェネリック パラメーターの型、またはその基本型のいずれか\) のパラメーターを 1 つ受け取る `Add` という非静的メソッド。 このようなメソッドは、シリアル化と逆シリアル化の両方で、シリアライザーがコレクション型をコレクションとして処理するために必要になります。| +| \(およびこのインターフェイスから派生した \)|`GetEnumerator`|`Add` 型のパラメーターを 1 つ受け取る `Object` という非静的メソッド。 このようなメソッドは、シリアル化と逆シリアル化の両方で、シリアライザーがコレクション型をコレクションとして処理するために必要になります。| + + 前の表に示すコレクション インターフェイスは、優先度の高いものから順に並べられています。 たとえば、型が とジェネリック の両方を実装している場合、 の規則に従って、コレクションがシリアル化および逆シリアル化されます。 + +- 逆シリアル化では、すべてのコレクションが、まず、既定のコンストラクターを呼び出して型のインスタンスを作成することによって逆シリアル化されます。既定のコンストラクターは、シリアル化と逆シリアル化の両方で、シリアライザーがコレクション型をコレクションとして処理するために必要となります。 + +- 同じジェネリック コレクション インターフェイスが複数回実装されており \(型が のジェネリック `Integer` と、 のジェネリック の両方を実装している場合など\)、優先度がより高いインターフェイスが見つからない場合は、コレクションが有効なコレクションとして扱われません。 + +- コレクション型には 属性を適用でき、 インターフェイスを実装できます。 これらはいずれも無視されます。 ただし、型がコレクション型の要件を完全に満たしていない場合 \(`Add` メソッドがないなど\)、その型はコレクション型と見なされないため、 属性と インターフェイスを使用して、型をシリアル化できるかどうかが判断されます。 + +- コレクションをカスタマイズするために、コレクションに 属性を適用した場合、上記の 代替機構は除去されます。 カスタマイズされたコレクションがコレクション型の要件を満たしていない場合には、代わりに 例外がスローされます。 多くの場合、この例外文字列には、指定された型が有効なコレクションと見なされない理由を説明する情報 \(`Add` メソッドがない、既定のコンストラクターがないなど\) が含まれるため、 属性を適用することは、しばしばデバッグに役立ちます。 + +### コレクションの名前付け + コレクションの名前付け規則を以下に示します。 + +- Namespace を使用してオーバーライドしていない場合、すべてのディクショナリ コレクション データ コントラクト、およびプリミティブ型を含むリスト コレクション データ コントラクトの既定の名前空間は、http:\/\/schemas.microsoft.com\/2003\/10\/Serialization\/Arrays です。 このために、組み込みの XSD 型に割り当てられた型と、`char`、`Timespan`、および `Guid` の各型がプリミティブと見なされます。 + +- Namespace を使用してオーバーライドしていない場合、プリミティブ型以外の型を含むコレクション型の既定の名前空間は、コレクションに含まれる型のデータ コントラクト名前空間と同じです。 + +- Name を使用してオーバーライドしていない場合、リスト コレクション データ コントラクトの既定の名前は、文字列 "ArrayOf" とコレクションに含まれる型のデータ コントラクト名を組み合わせたものです。 たとえば、Integers のジェネリック List のデータ コントラクト名は "ArrayOfint" です。`Object` のデータ コントラクト名は "anyType" であることに留意してください。したがって、 のような非ジェネリック リストのデータ コントラクト名は、"ArrayOfanyType" になります。 + + `Name` を使用してオーバーライドしていない場合、ディクショナリ コレクション データ コントラクトの既定の名前は、文字列 "ArrayOfKeyValueOf"、キーの型のデータ コントラクト名、および値の型のデータ コントラクト名をこの順番で組み合わせたものです。 たとえば、String と Integer のジェネリック ディクショナリのデータ コントラクト名は、"ArrayOfKeyValueOfstringint" になります。 また、キーの型と値の型がいずれもプリミティブ型ではない場合は、キーおよび値の型のデータ コントラクト名前空間の名前空間ハッシュが名前に付加されます。 名前空間ハッシュの[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[データ コントラクト名](../../../../docs/framework/wcf/feature-details/data-contract-names.md)」を参照してください。 + + 各ディクショナリ コレクション データ コントラクトには、ディクショナリの 1 エントリを表すコンパニオン データ コントラクトが存在します。 コンパニオン データ コントラクトの名前は、"ArrayOf" プレフィックスを除いたディクショナリ データ コントラクトの名前と同じです。また、名前空間は、ディクショナリ データ コントラクトの名前空間と同じです。 たとえば、"ArrayOfKeyValueOfstringint" ディクショナリ データ コントラクトの場合、"KeyValueofstringint" データ コントラクトがディクショナリの 1 エントリを表します。 次のセクションで説明するように、このデータ コントラクトの名前は、`ItemName` プロパティを使用してカスタマイズできます。 + + 「[データ コントラクト名](../../../../docs/framework/wcf/feature-details/data-contract-names.md)」に記載されたジェネリック型の名前付け規則は、コレクション型にすべて適用されます。つまり、Name 内の中かっこを使用してジェネリック型パラメーターを示すことができます。 ただし、かっこ内の数値は、コレクションに含まれる型ではなく、ジェネリック パラメーターを指すことに注意してください。 + +## コレクションのカスタマイズ + 属性を次のように使用することは禁止されています。次のように使用すると、 例外が発生します。 + +- 属性が既に適用されている型、またはその派生型のいずれかに 属性を適用する。 + +- インターフェイスを実装する型に 属性を適用する。 + +- コレクション型以外の型に 属性を適用する。 + +- ディクショナリ型以外の型に適用された 属性で、 または の設定を試みる。 + +### ポリモーフィズム規則 + 既に説明したように、 属性を使用してコレクションをカスタマイズすると、コレクションの可換性を妨げることがあります。 カスタマイズされた 2 つのコレクション型を等価と見なすことができるのは、それらの名前、名前空間、項目名、およびキーと値の名前 \(ディクショナリ コレクションの場合\) が一致する場合だけです。 + + カスタマイズが原因で、あるコレクション データ コントラクトを使用する必要があるところに、誤って別のコレクション データ コントラクトが使用される可能性があります。 このような状況は回避する必要があります。 次の型を参照してください。 + + [!code-csharp[c_collection_types_in_data_contracts#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_collection_types_in_data_contracts/cs/program.cs#11)] + [!code-vb[c_collection_types_in_data_contracts#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_collection_types_in_data_contracts/vb/program.vb#11)] + + この場合、`Marks1` のインスタンスは `testMarks` に割り当てることができます。 ただし、`Marks2` は使用しないようにする必要があります。そのデータ コントラクトは、`IList` データ コントラクトと等価とは見なされないからです。 このデータ コントラクト名は、"ArrayOfint" ではなく "Marks2" であり、反復される要素名は、"\" ではなく "\" になります。 + + 以下の表に、コレクションのポリモーフィックな割り当てに適用される規則を示します。 + +|宣言された型|カスタマイズされていないコレクションの割り当て|カスタマイズされたコレクションの割り当て| +|------------|-----------------------------|--------------------------| +|オブジェクト|コントラクト名はシリアル化されます。|コントラクト名はシリアル化されます。

カスタマイズが使用されます。| +|コレクション インターフェイス|コントラクト名はシリアル化されません。|コントラクト名はシリアル化されません。

カスタマイズは使用されません\*。| +|カスタマイズされていないコレクション|コントラクト名はシリアル化されません。|コントラクト名はシリアル化されます。

カスタマイズが使用されます\*\*。| +|カスタマイズされたコレクション|コントラクト名はシリアル化されます。 カスタマイズは使用されません\*\*。|コントラクト名はシリアル化されます。

割り当てられた型のカスタマイズが使用されます\*\*。| + + \* クラスでは、このケースでカスタマイズが使用されます。 また、 クラスは、このケースで実際の型名もシリアル化するため、逆シリアル化も予期されたとおりに機能します。 + + \*\* これらのケースでは、スキーマが無効なインスタンスが生成されます。したがって、これらのケースは避けるようにしてください。 + + コントラクト名をシリアル化する場合、割り当てるコレクション型が既知の型リストに含まれている必要があります。 逆に言うと、名前をシリアル化しない場合は、既知の型リストに型を追加する必要はありません。 + + 派生型の配列は、基本型の配列に代入できます。 この場合、反復される各要素について、派生型のコントラクト名がシリアル化されます。 たとえば、`Book` 型が `LibraryItem` 型から派生している場合、`Book` の配列を `LibraryItem` の配列に代入できます。 これは、他のコレクション型には適用されません。 たとえば、`Generic List of Book` を `Generic List of LibraryItem` に代入することはできません。 ただし、`Generic List of LibraryItem` インスタンスを含む `Book` を代入することはできます。 配列の場合も、配列ではない場合も、`Book` は既知の型リストに含まれている必要があります。 + +## コレクションとオブジェクト参照の保存 + シリアライザーがオブジェクト参照を保存するモードで機能している場合、オブジェクト参照の保存はコレクションにも適用されます。 具体的には、コレクション全体と、コレクションに含まれる個々の項目の両方のオブジェクト ID が保存されます。 ディクショナリの場合、キーと値のペア オブジェクトと、個々のキー オブジェクトおよび値オブジェクトのオブジェクト ID が保存されます。 + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/common-security-scenarios.md b/docs/framework/wcf/feature-details/common-security-scenarios.md new file mode 100644 index 00000000000..4eab1771919 --- /dev/null +++ b/docs/framework/wcf/feature-details/common-security-scenarios.md @@ -0,0 +1,91 @@ +--- +title: "一般的なセキュリティ シナリオ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF], シナリオ" +ms.assetid: 201923b5-5162-4a8a-8d4c-e7bd242748d5 +caps.latest.revision: 18 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 18 +--- +# 一般的なセキュリティ シナリオ +ここでは、考えられるさまざまなクライアントおよびサービスのセキュリティ構成の一覧を示します。構成はさまざまな要因により異なります。たとえば、サービスやクライアントがイントラネット上にあるかどうか、また、セキュリティが Windows とトランスポート \(HTTPS など\) のどちらで提供されるかなどが考えられます。 + +## このセクションの内容 + [セキュリティで保護されていないインターネット環境のクライアントとサービス](../../../../docs/framework/wcf/feature-details/internet-unsecured-client-and-service.md) + セキュリティで保護されていないパブリックなクライアントとサービスの例です。 + + [セキュリティで保護されていないイントラネットのクライアントとサービス](../../../../docs/framework/wcf/feature-details/intranet-unsecured-client-and-service.md) + セキュリティで保護されたプライベートなネットワーク上で [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションに情報を提供するために開発された基本的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスです。 + + [基本認証でのトランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/transport-security-with-basic-authentication.md) + アプリケーションは、カスタム認証を使用して、クライアントにログオンを許可します。 + + [トランスポート セキュリティと Windows 認証](../../../../docs/framework/wcf/feature-details/transport-security-with-windows-authentication.md) + Windows セキュリティによってセキュリティ保護されたクライアントとサービスを示します。 + + [トランスポート セキュリティと匿名クライアント](../../../../docs/framework/wcf/feature-details/transport-security-with-an-anonymous-client.md) + このシナリオでは HTTPS などのようなトランスポート セキュリティを使用して、機密性と整合性を強化します。 + + [トランスポート セキュリティと証明書認証](../../../../docs/framework/wcf/feature-details/transport-security-with-certificate-authentication.md) + 証明書によってセキュリティ保護されたクライアントとサービスを示します。 + + [メッセージ セキュリティと匿名クライアント](../../../../docs/framework/wcf/feature-details/message-security-with-an-anonymous-client.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージ セキュリティによってセキュリティ保護されたクライアントとサービスを示します。 + + [ユーザー名クライアントを使用したメッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/message-security-with-a-user-name-client.md) + クライアントは、ドメイン ユーザー名とパスワードを使用してクライアントのログオンを許可する Windows フォーム アプリケーションです。 + + [メッセージ セキュリティと証明書クライアント](../../../../docs/framework/wcf/feature-details/message-security-with-a-certificate-client.md) + サーバー側の証明書は複数あり、クライアント側の証明書はそれぞれ 1 つです。セキュリティのコンテキストは、トランスポート層セキュリティ \(TLS: Transport Layer Security\) ネゴシエーションを介して確立されます。 + + [Windows クライアントとのメッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/message-security-with-a-windows-client.md) + 証明書クライアントのバリエーションの 1 つです。サーバー側の証明書は複数あり、クライアント側の証明書はそれぞれ 1 つです。セキュリティのコンテキストは TLS ネゴシエーションを介して確立されます。 + + [資格情報ネゴシエーションを使用しない Windows クライアントを使用するメッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/message-security-with-a-windows-client-without-credential-negotiation.md) + Kerberos ドメインによってセキュリティ保護されたクライアントとサービスを示します。 + + [メッセージ セキュリティと相互の証明書](../../../../docs/framework/wcf/feature-details/message-security-with-mutual-certificates.md) + サーバー側の証明書は複数あり、クライアント側の証明書はそれぞれ 1 つです。サーバーの証明書はアプリケーションと共に配布され、帯域外でも使用可能です。 + + [発行済みトークンを使用したメッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/message-security-with-issued-tokens.md) + フェデレーション セキュリティにより独立したドメイン間で信頼を確立できます。 + + [信頼できるサブシステム](../../../../docs/framework/wcf/feature-details/trusted-subsystem.md) + クライアントは、ネットワーク全体に分散している 1 つ以上の Web サービスにアクセスします。Web サービスは、セキュリティで保護する必要がある追加のリソース \(データベースや他の Web サービスなど\) にアクセスします。 + +## 関連項目 + + +## 関連項目 + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) + + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + + [セキュリティ](../../../../docs/framework/wcf/feature-details/security.md) + + [バインディングとセキュリティ](../../../../docs/framework/wcf/feature-details/bindings-and-security.md) + + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + + [認証](../../../../docs/framework/wcf/feature-details/authentication-in-wcf.md) + + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) + + [フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + + [監査](../../../../docs/framework/wcf/feature-details/auditing-security-events.md) + +## 参照 + [セキュリティ ガイドラインとベスト プラクティス](../../../../docs/framework/wcf/feature-details/security-guidance-and-best-practices.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/comparing-aspnet-web-services-to-wcf-based-on-development.md b/docs/framework/wcf/feature-details/comparing-aspnet-web-services-to-wcf-based-on-development.md new file mode 100644 index 00000000000..ed11ae8c802 --- /dev/null +++ b/docs/framework/wcf/feature-details/comparing-aspnet-web-services-to-wcf-based-on-development.md @@ -0,0 +1,767 @@ +--- +title: "開発者の視点から見た ASP.NET Web サービスと WCF との比較 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f362d00e-ce82-484f-9d4f-27e579d5c320 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 開発者の視点から見た ASP.NET Web サービスと WCF との比較 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には ASP.NET 互換モードがあります。このモードにすると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションを ASP.NET Web サービスと同じようにプログラミングおよび構成し、動作を真似ることができます。 以下のセクションでは、ASP.NET Web サービスと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を、それぞれの技術を使ってアプリケーションを開発する視点から比較してみます。 + +## データ表現 + ASP.NET で Web サービスを開発する場合、通常はまず、このサービスが使う複合データ型の定義から始めます。 ASP.NET は を利用して、.NET Framework 型で表されたデータを XML 形式に変換してサービスとの間でやり取りしたり、XML 形式で受け取ったデータを .NET Framework オブジェクトに変換したりします。 ASP.NET サービスで使用する複合データ型を定義するには、 で XML 形式にシリアル化したり、XML 形式から逆シリアル化したりできる .NET Framework クラスの定義が必要です。 クラス定義は手で記述するほか、XML スキーマの型定義から生成することも可能です。それにはコマンド ライン上で実行する XML スキーマ\/データ型サポート ユーティリティである xsd.exe を使います。 + + で XML 形式にシリアル化したり、XML 形式から逆シリアル化したりできる .NET Framework クラスを定義する場合に知っておくべき主な事項を次に示します。 + +- XML に変換されるのは、.NET Framework オブジェクトのパブリック フィールドおよびパブリック プロパティに限ります。 + +- コレクション クラスのインスタンスを XML 形式にシリアル化できるのは、そのクラスが または インターフェイスを実装している場合に限ります。 + +- インターフェイスを実装した、 などのクラスを、XML 形式にシリアル化することはできません。 + +- 名前空間の属性型は、大部分が .NET Framework クラスやそのメンバーに追加可能であり、これにより、XML での当該クラスのインスタンスの表現方法を制御できます。 + + 通常、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションの開発も、複合型の定義から始めます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でも ASP.NET Web サービスと同じ .NET Framework 型を使用できます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を .NET Framework 型に追加して、ある型のインスタンスを XML にシリアル化できる旨や、当該型のどのフィールドやプロパティを実際にシリアル化できるのかを指定することができます。その例を以下に示します。 + +``` +//Example One: +[DataContract] +public class LineItem +{ + [DataMember] + public string ItemNumber; + [DataMember] + public decimal Quantity; + [DataMember] + public decimal UnitPrice; +} + +//Example Two: +public class LineItem +{ + [DataMember] + private string itemNumber; + [DataMember] + private decimal quantity; + [DataMember] + private decimal unitPrice; + + public string ItemNumber + { + get + { + return this.itemNumber; + } + + set + { + this.itemNumber = value; + } + } + + public decimal Quantity + { + get + { + return this.quantity; + } + + set + { + this.quantity = value; + } + } + + public decimal UnitPrice + { + get + { + return this.unitPrice; + } + + set + { + this.unitPrice = value; + } + } +} + +//Example Three: +public class LineItem +{ + private string itemNumber; + private decimal quantity; + private decimal unitPrice; + + [DataMember] + public string ItemNumber + { + get + { + return this.itemNumber; + } + + set + { + this.itemNumber = value; + } + } + + [DataMember] + public decimal Quantity + { + get + { + return this.quantity; + } + + set + { + this.quantity = value; + } + } + + [DataMember] + public decimal UnitPrice + { + get + { + return this.unitPrice; + } + + set + { + this.unitPrice = value; + } + } +} + +``` + + は、当該型の中にシリアル化可能なフィールドやプロパティがあることを示し、具体的にどのフィールドやプロパティをシリアル化できるかを で示します。 はクラスにも構造体にも適用できます。 はフィールドやプロパティに適用します。これはパブリックでもプライベートでもかまいません。 が適用された型のインスタンスのことを、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではデータ コントラクトと呼びます。 これを XML 形式にシリアル化するには を使います。 + + を使う場合と、 および 名前空間に定義された属性を使う場合の、主な違いを以下に示します。 + +- 名前空間の属性は、XML スキーマで定義された有効な型であればどれにでも .NET Framework 型をマップできるようにするためのものです。これらを使うと、XML での型の表現方法を細かく制御できます。 これに対し、、および の場合、XML での型の表現方法にはほとんど自由度がありません。 指定できるのは、名前空間と、型やフィールド、プロパティを XML で表す名前、フィールドやプロパティの XML における並び順だけです。 + + ``` + [DataContract( + Namespace="urn:Contoso:2006:January:29", + Name="LineItem")] + public class LineItem + { + [DataMember(Name="ItemNumber",IsRequired=true,Order=0)] + public string itemNumber; + [DataMember(Name="Quantity",IsRequired=false,Order = 1)] + public decimal quantity; + [DataMember(Name="Price",IsRequired=false,Order = 2)] + public decimal unitPrice; + } + ``` + + 上記以外の事項は、 に固定で組み込まれています。 + +- の場合、型の XML での表現方法に自由度が小さく、したがってシリアル化のプロセスがあらかじめ大部分予測できるので、最適化が容易です。 を使えば、性能が約 10% 向上するという現実的な利点があります。 + +- を使用する方法では、どのフィールドやプロパティを XML にシリアル化するかを属性で指定することはできませんが、 の場合は 属性で明示的に指定できます。 このように、データ コントラクトとは、アプリケーションとの間でやり取りするデータ構造を明示した契約であると言うことができます。 + +- で XML 形式に変換できるのは、.NET オブジェクトのパブリック メンバーに限ります。一方 は、アクセス修飾子にかかわらず、どのメンバーでも変換可能です。 + +- の場合、パブリックでないメンバーも XML に変換できるため、シリアル化できる .NET 型についての制約が少なくなります。 特に、 など、 インターフェイスを実装した型が変換可能です。 はさらに、既存の .NET 型のインスタンスを XML にシリアル化する場合でも、型定義を変更したり、ラッパーを定義したりする必要がありません。 + +- はパブリックでないメンバーも変換できるため、完全に信頼できるコードからしか実行できないようになっています。 にはそのような制約がありません。 コードの完全信頼アクセス権限とは、当該マシン上のすべてのリソースにアクセスできる権限で、その確認には資格情報を使います。 他のリソースにも制限なくアクセスできるので、このようなコードの取り扱いには十分に注意しなければなりません。 + +- にはバージョン管理の機能がいくつか組み込まれています。 + + - には プロパティがあります。旧バージョンにはなかったメンバーを追加した場合に、そのプロパティを false とすれば、当該データ コントラクトの新バージョンを扱うアプリケーションが、旧バージョンのデータも扱えるようになります。 + + - データ コントラクトに インターフェイスを実装すると、 は、新バージョンのデータ コントラクトで定義されたメンバーを、旧バージョンのコントラクトを扱うアプリケーション経由で受け渡しできるようになります。 + + 以上のようにさまざまな違いがありますが、 で既定の設定を使用して型をシリアル化したものは、XML の名前空間を明示的に定義してあれば、 で型をシリアル化したものと意味的に同等です。 次のクラスは、属性が のどちらのシリアライザーでも変換の対象となり、最終的に得られる XML も意味的に同等です。 + +``` +[Serializable] +[XmlRoot(Namespace="urn:Contoso:2006:January:29")] +[DataContract(Namespace="urn:Contoso:2006:January:29")] +public class LineItem +{ + [DataMember] + public string ItemNumber; + [DataMember] + public decimal Quantity; + [DataMember] + public decimal UnitPrice; +} + +``` + + Windows ソフトウェア開発キット \(SDK\) には [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) というコマンド ライン ツールが収録されています。ASP.NET Web サービスで使用する xsd.exe と同様、Svcutil.exe も XML スキーマから .NET データ型の定義を生成できます。 が XML スキーマで定義された形式の XML を出力できる場合、型はデータ コントラクトの形に変換されます。そうでなければ、 を使用してシリアル化します。 Svcutil.exe に `/dataContractOnly` スイッチを指定して起動すると、データ コントラクトから XML スキーマを生成できます。 + +> [!NOTE] +> ASP.NET Web サービスは を使うようになっています。ASP.NET 互換モードの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが ASP.NET Web サービスの動作を真似るようになっていますが、 を使わなければならないわけではありません。 必要であれば ASP.NET 互換モードでも も使えるようになっています。 + +## サービスの開発 + ASP.NET を使用してサービスを開発する場合、通常は 属性をクラスに追加し、 を当該クラスのサービスに対する操作メソッドに追加します。 + +``` +[WebService] +public class Service : T:System.Web.Services.WebService +{ + [WebMethod] + public string Echo(string input) + { + return input; + } +} +``` + + ASP.NET 2.0 では、 属性や 属性をクラスではなくインターフェイスに追加し、そのインターフェイスを実装するクラスを記述する、という方法も使えるようになりました。 + +``` +[WebService] +public interface IEcho +{ + [WebMethod] + string Echo(string input); +} + +public class Service : IEcho +{ + + public string Echo(string input) + { + return input; + } +} +``` + + 属性を持つインターフェイスは、サービスによって実行される操作のコントラクトを構成し、またそれをさまざまなクラスで再利用することによって、同じコントラクトをさまざまな方法で実装できるので、このオプションの使用をお勧めします。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントをいくつか定義することにより提供されます。 エンドポイントは、アドレス、バインディング、サービス コントラクトで定義します。 アドレスとは、サービスが配備された場所のことです。 バインディングはサービスとの通信方法を表します。 サービス コントラクトとは、サービスが実行できる操作の定義のことです。 + + サービス コントラクトは通常、インターフェイスに および を追加して定義します。 + +``` +[ServiceContract] +public interface IEcho +{ + [OperationContract] + string Echo(string input); +} +``` + + は、当該インターフェイスが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス コントラクトを定義することを表します。また、 は、インターフェイスのどのメソッドが \(存在する場合\) サービス コントラクトの操作を定義しているかを表します。 + + このようにして定義されたサービス コントラクトをクラスとして実装します。サービス コントラクトを定義するインターフェイスを実装するクラスという形で記述します。 + +``` +public class Service : IEcho +{ + public string Echo(string input) + { + return input; + } +} +``` + + サービス コントラクトを実装したクラスは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではサービスとして参照できます。 + + 次に、アドレスとバインディングを、サービス型と関連付けます。 これは通常、構成ファイルを直接編集するか、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に収録されている構成エディターを使って行います。 構成ファイルの例を以下に示します。 + +``` + + + + + + + + + + + +``` + + バインディングは、アプリケーションとの通信に使う一連のプロトコルを表します。 一般的なシステム指定のバインディングを以下に示します。 + +|名前|目的| +|--------|--------| +|BasicHttpBinding|WS\-BasicProfile 1.1 および Basic Security Profile 1.0 に対応した Web サービスやクライアントとの相互運用性。| +|WSHttpBinding|HTTP 上の WS\-\* プロトコルに対応した Web サービスやクライアントとの相互運用性。| +|WSDualHttpBinding|双方向 HTTP 通信。最初のメッセージの受信者は送信元に直接は応答せず、代わりに、WS\-\* プロトコルに準拠した HTTP で、ある期間にわたって任意の数の応答を送信することができます。| +|WSFederationBinding|HTTP 通信。サービスのリソースに対するアクセスを、明示的に指定された資格情報プロバイダーによって発行された証明書に基づいて制御することができます。| +|NetTcpBinding|ネットワーク全体に分散する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ソフトウェア エンティティ間の、安全性や信頼性を確保した高速通信。| +|NetNamedPipeBinding|同一コンピューター上の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ソフトウェア エンティティ間の、安全性や信頼性を確保した高速通信。| +|NetMsmqBinding|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ソフトウェア エンティティ間の、MSMQ を使用した通信。| +|MsmqIntegrationBinding|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ソフトウェアと他のソフトウェア エンティティ間の、MSMQ を使用した通信。| +|NetPeerTcpBinding|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ソフトウェア エンティティ間の、Windows ピアツーピア ネットワークを使用した通信。| + + システム指定のバインディングである には、ASP.NET Web サービスが対応している一連のプロトコルが組み込まれています。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーション用の独自バインディングは、バインド要素クラスのコレクションとして定義し、各クラスに個々のプロトコルを実装して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で使えるようにすることができます。 追加のプロトコルを表す、新しいバインド要素を記述することも可能です。 + + サービス型の内部的な動作は、動作を表すクラス群のプロパティで調整できます。 次の例で、 クラスは、サービス型がマルチスレッド処理されることを指定しています。 + +``` +[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Multiple] +public class DerivativesCalculatorServiceType: IDerivativesCalculator + +``` + + など、属性として定義された動作もあります。 これに対し、管理者がプロパティを設定できる動作は、アプリケーションの構成ファイルで変更することができます。 + + サービス型のプログラムの記述には、多くの場合 クラスを使います。 静的プロパティである を介して、実行コンテキストに関する情報にアクセスできます。 の使い方は、 クラスや クラスと同様です。 + +## ホスト + ASP.NET Web サービスは、コンパイルしてクラス ライブラリ アセンブリの形になっています。 サービス ファイルという、拡張子が .asmx のファイルの `@ WebService` ディレクティブに、サービスの実行コードが組み込まれたクラスと、これを収容するアセンブリが定義されています。 + +``` +<%@ WebService Language="C#" Class="Service,ServiceAssembly" %> +``` + + サービス ファイルをインターネット インフォメーション サービス \(IIS\) の ASP.NET アプリケーション ルート、アセンブリをアプリケーション ルートのサブディレクトリ \\bin 以下にコピーすると、 このサービス ファイルの URL \(Uniform Resource Locator\) でアプリケーションにアクセスできるようになります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、IIS 5.1 や 6.0 の他、IIS 7.0 の一部として提供される Windows プロセス アクティブ化サービス \(WAS\) や、.NET アプリケーション上でホストすることができます。 ただし IIS 5.1\/6.0 の場合、通信トランスポート プロトコルは HTTP に限ります。 + + IIS 5.1\/6.0 または WAS 上でサービスをホストする手順を以下に示します。 + +1. サービス型をコンパイルしてクラス ライブラリ アセンブリを生成します。 + +2. 拡張子を .svc としたサービス ファイルを作り、サービス型を `@ ServiceHost` ディレクティブで次のように指定します。 + + ``` + <%@ServiceHost language=”c#” Service="MyService" %> + ``` + +3. サービス ファイルを仮想ディレクトリにコピーし、アセンブリをその仮想ディレクトリの \\bin サブディレクトリにコピーします。 + +4. 構成ファイルを仮想ディレクトリに、Web.config という名前でコピーします。 + + するとアプリケーションには、アプリケーション ルートに置いたサービス ファイルの URL でアクセスできるようになります。 + + .NET アプリケーション上で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストする場合は、サービス型をコンパイルしてクラス ライブラリ アセンブリを生成し、これをアプリケーションが参照できるようにします。アプリケーション側では、 クラスを使って、サービスを管理できるようプログラムを記述します。 サービスを管理する基本的なプログラムの例を以下に示します。 + +``` +string httpBaseAddress = "http://www.contoso.com:8000/"; +string tcpBaseAddress = "net.tcp://www.contoso.com:8080/"; + +Uri httpBaseAddressUri = new Uri(httpBaseAddress); +Uri tcpBaseAddressUri = new Uri(tcpBaseAddress); + +Uri[] baseAdresses = new Uri[] { + httpBaseAddressUri, + tcpBaseAddressUri}; + +using(ServiceHost host = new ServiceHost( +typeof(Service), //”Service” is the name of the service type baseAdresses)) +{ + host.Open(); + + […] //Wait to receive messages + host.Close(); +} +``` + + この例では の構築時にトランスポート プロトコルに対してアドレスを指定しています。 このアドレスをベース アドレスと呼びます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのエンドポイントは、エンドポイントのホストに設定されたベース アドレスから見た相対アドレスで表します。 ホストではトランスポート プロトコルごとに 1 つベース アドレスを設定できます。 上記の構成ファイルの構成例では、エンドポイントに対して選択された はトランスポート プロトコルとして HTTP を使用しているので、エンドポイント `EchoService` のアドレスは、HTTP に対して設定されたベース アドレスを基準としたものになります。 上記の例に挙げたホストの場合、HTTP ベース アドレスは http:\/\/www.contoso.com:8000\/ です。 なお、IIS や WAS 上でホストされているサービスの場合、ベース アドレスはサービス ファイルの URL になります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を ASP.NET 互換モードで動かせるのは、IIS や WAS 上でホストされていて、トランスポート プロトコルとしてもっぱら HTTP を使うサービスに限ります。 ASP.NET 互換モードは、次の 2 つの手順で切り替えます。 + +1. プログラムの開発者は、サービス型に 属性を追加し、ASP.NET 互換モードに切り替えることができる、または切り替えることが必須である旨の指定をしておく必要があります。 + + ``` + [System.ServiceModel.Activation.AspNetCompatibilityRequirements( + RequirementsMode=AspNetCompatbilityRequirementsMode.Require)] + public class DerivativesCalculatorServiceType: IDerivativesCalculator + ``` + +2. 管理者は、アプリケーションが ASP.NET 互換モードで動作するよう、次のように構成する必要があります。 + + ``` + + + + […] + + + + + ``` + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは、サービス ファイルの拡張子として .svc ではなく .asmx を使用するように構成することも可能です。 + + ``` + + + + + + + + + + + ``` + + このように構成すると、.asmx サービス ファイルの URL を使用するようクライアント側を変更しなくても、サービスは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用するようになります。 + +## クライアント開発 + ASP.NET Web サービスのクライアントの開発にはコマンド ライン ツール WSDL.exe を使用します。.asmx ファイルの URL を入力として指定します。 これに対応する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のツールは、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) です。 これは、サービス コントラクトおよび [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント クラスの定義から、コード モジュールを生成します。 また、サービスのアドレスとバインディングを指定して、構成ファイルを生成することもできます。 + + リモート サービスのクライアントを開発する場合、通常は、非同期パターンに従ってプログラムを記述するようお勧めします。 WSDL.exe ツールは、特段の指定をしなくても、同期パターンと非同期パターンを使ったコードをそれぞれ生成します。 [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) は、どちらのパターンのコードでも生成できます。 特に指定しなければ同期パターン用です。 `/async` スイッチを指定して実行すれば、生成されるコードは非同期パターン用になります。 + + ASP.NET の WSDL.exe で生成した [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント クラスの名前が、Svcutil.exe で生成した [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント クラスの名前と一致するとは限りません。 特に、 でシリアル化したクラスのプロパティ名は、Svcutil.exe で生成した場合 "Property" という接頭辞が付きますが、WSDL.exe の場合はそうなりません。 + +## メッセージ表現 + ASP.NET Web サービスとやり取りする SOAP メッセージのヘッダーはカスタマイズ可能です。 の派生クラスでヘッダーの構造を定義し、 でヘッダーが存在することを指定します。 + +``` +public class SomeProtocol : SoapHeader +{ + public long CurrentValue; + public long Total; +} + +[WebService] +public interface IEcho +{ + SomeProtocol ProtocolHeader + { + get; + set; + } + + [WebMethod] + [SoapHeader("ProtocolHeader")] + string PlaceOrders(PurchaseOrderType order); +} + +public class Service: WebService, IEcho +{ + private SomeProtocol protocolHeader; + + public SomeProtocol ProtocolHeader + { + get + { + return this.protocolHeader; + } + + set + { + this.protocolHeader = value; + } + } + + string PlaceOrders(PurchaseOrderType order) + { + long currentValue = this.protocolHeader.CurrentValue; + } +} +``` + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、サービスとやり取りする SOAP メッセージの構造を記述する、、および という属性があります。 + +``` +[DataContract] +public class SomeProtocol +{ + [DataMember] + public long CurrentValue; + [DataMember] + public long Total; +} + +[DataContract] +public class Item +{ + [DataMember] + public string ItemNumber; + [DataMember] + public decimal Quantity; + [DataMember] + public decimal UnitPrice; +} + +[MessageContract] +public class ItemMesage +{ + [MessageHeader] + public SomeProtocol ProtocolHeader; + [MessageBody] + public Item Content; +} + +[ServiceContract] +public interface IItemService +{ + [OperationContract] + public void DeliverItem(ItemMessage itemMessage); +} +``` + + この構文でメッセージ構造を明示的に記述できますが、ASP.NET Web サービスのコードからメッセージ構造を導くことも可能です。 ASP.NET の構文では、メッセージ ヘッダーは上記の例の `ProtocolHeader` のようにサービスのプロパティとして表現されますが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではメッセージのプロパティとしてより厳密に表現できます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではさらに、エンドポイントの構成にメッセージ ヘッダーを追加することも可能です。 + +``` + + + + + ... + + + + + +``` + + この方法では、クライアントやサービスのコード内で、基盤となるプロトコル ヘッダーを参照しなくても済みます。エンドポイントが適切に構成されているので、ヘッダーがメッセージ中に取り込まれるからです。 + +## サービスの説明 + WSDL で記述したクエリを HTTP GET 要求として発行して、ASP.NET Web サービスの .asmx ファイルを取得しようとすると、ASP.NET は WSDL によるサービス記述を生成し、 要求に対する応答として返します。 + + ASP.NET 2.0 では、サービスが Web Services\-Interoperability Organization \(WS\-I\) の Basic Profile 1.1 に準拠していることを検証し、その旨を WSDL による記述に追加できるようになりました。 この処理には、 属性の `ConformsTo` および `EmitConformanceClaims` パラメーターを使用します。 + +``` + +[WebService(Namespace = "http://tempuri.org/")] +[WebServiceBinding( + ConformsTo = WsiProfiles.BasicProfile1_1, + EmitConformanceClaims=true)] +public interface IEcho +``` + + ASP.NET が WSDL で生成したサービス記述はカスタマイズ可能です。 の派生クラスを作成し、WSDL による記述に項目を追加する、という形でカスタマイズします。 + + WSDL で記述したクエリを HTTP GET 要求として発行して、IIS 5.1\/6.0 または WAS でホストされていて HTTP エンドポイントを持つ [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの .svc ファイルを取得しようとすると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は WSDL によるサービス記述を生成して返します。 httpGetEnabled が true に設定されている場合は、WSDL で記述したクエリを HTTP GET 要求として、.NET アプリケーション上でホストされているサービスの HTTP ベース アドレスに発行しても同じ効力があります。 + + 一方、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-MetadataExchange 要求に対しても、WSDL によるサービス記述を生成して返します。 ASP.NET Web サービスには、WS\-MetadataExchange 要求に応答する機能がありません。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が WSDL で生成したサービス記述は広範なカスタマイズが可能です。 クラスには、WSDL による記述をカスタマイズするための機能がいくつか組み込まれています。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] も、WSDL による記述を生成する代わりに、所定の URL に置いた静的な WSDL ファイルを使用するように構成できます。 + +``` + + + + + +``` + +## 例外処理 + ASP.NET Web サービスでは、処理できない例外が発生すると、SOAP エラーとしてクライアントに返されます。 また、 クラスのインスタンスを明示的にスローして、クライアント側に SOAP エラーの詳しい状況を通知し、より適切に管理させることも可能です。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでは、処理できない例外が発生しても SOAP エラーとしてクライアントに返すことはありません。重要な情報が不用意に表示され、第三者に漏洩するのを防ぐためです。 ただしデバッグ目的で、このような例外をクライアントに返すように設定することは可能です。 + + SOAP エラーをクライアントに返す場合、データ コントラクト型を汎用型 のインスタンスとしてキャストし、これをスローする方法が使えます。 また、操作に 属性を追加して、操作で生じうるエラーを指定する方法もあります。 + +``` +[DataContract] +public class MathFault +{ + [DataMember] + public string operation; + [DataMember] + public string problemType; +} + +[ServiceContract] +public interface ICalculator +{ + [OperationContract] + [FaultContract(typeof(MathFault))] + int Divide(int n1, int n2); +} +``` + + これにより、サービスで発生する可能性のあるエラーが WSDL の形で公開されます。クライアント側の開発者は、当該操作によりどのようなエラーが生じうるかをあらかじめ予測し、catch ブロック内に適切な処理を組み込んでおくことができます。 + +``` +try +{ + result = client.Divide(value1, value2); +} +catch (FaultException e) +{ + Console.WriteLine("FaultException: Math fault while doing " + + e.Detail.operation + + ". Problem: " + + e.Detail.problemType); +} +``` + +## 状態管理 + ASP.NET Web サービスの実装には の派生クラスを使うこともできます。 + +``` +public class Service : WebService, IEcho +{ + + public string Echo(string input) + { + return input; + } +} +``` + + この場合、基本クラス に定義された Context プロパティを使って、 オブジェクトにアクセスすることになります。 オブジェクトには、アプリケーションやセッションの状態情報をそれぞれ更新、取得する、Application プロパティ、Session プロパティがあります。 + + ASP.NET では、 の Session プロパティでアクセスするセッション状態情報の、実際の格納場所を細かく制御できます。 格納場所としては、クッキー内、データベース内、稼動中のサーバーのメモリ上、状態管理用の特別なサーバーのメモリ上があり、 サービスの構成ファイルで指定します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、状態管理用に拡張可能なオブジェクトがいくつか用意されています。 いずれも を実装しています。 中でも重要な拡張可能オブジェクトは、 および です。 `ServiceHostBase` を使用すると、同一ホスト上の全サービス型のあらゆるインスタンスからアクセスできる状態を管理できます。一方、`InstanceContext` を使用すると、同じサービス型のインスタンス内で実行されるコードからアクセスできる状態を管理できます。 + + 次の例で、サービス型 `TradingSystem` には という属性があります。同じ [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント インスタンスからの呼び出しはすべて、同じサービス型のインスタンスに転送されることを表します。 + +``` +[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] +public class TradingSystem: ITradingService +``` + + 次のクラス `DealData` に定義されている状態には、同じサービス型のインスタンス内で実行されるどのコードからでもアクセスできます。 + +``` +internal class DealData: IExtension +{ + public string DealIdentifier = null; + public Trade[] Trades = null; +} +``` + + サービス コントラクトの操作のいずれかを実装するサービス型のコードでは、状態オブジェクト `DealData` を、当該サービス型の現在のインスタンスに関する状態として追加することができます。 + +``` +string ITradingService.BeginDeal() +{ + string dealIdentifier = Guid.NewGuid().ToString(); + DealData state = new DealData(dealIdentifier); + OperationContext.Current.InstanceContext.Extensions.Add(state); + return dealIdentifier; +} +``` + + この状態オブジェクトは、サービス コントラクトの他の操作を実装するコードから取得、更新できます。 + +``` +void ITradingService.AddTrade(Trade trade) +{ + DealData dealData = OperationContext.Current.InstanceContext.Extensions.Find(); + dealData.AddTrade(trade); +} +``` + + ASP.NET では クラスで管理する状態情報の実際の格納場所を制御できますが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の場合、少なくとも初期バージョンのままでは、まったく制御ができません。 これも [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの ASP.NET 互換モードを推奨する理由の 1 つです。 このような制御が不可欠な応用の場合、ASP.NET 互換モードにすれば、ASP.NET と同様に クラスの機能を活用できるばかりでなく、 クラスで管理する状態情報の実際の格納場所も制御できます。 + +## セキュリティ + ASP.NET Web サービスのセキュリティ保全の手順は、IIS アプリケーションのセキュリティ保全の手順と同じです。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは IIS に限らずどんな .NET 実行可能ファイル上でも動作するので、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションのセキュリティ保全の手順も IIS の機能に依存しないものにする必要があります。 しかし ASP.NET Web サービスが提供する機能は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスからも、ASP.NET 互換モードで動作していれば利用できます。 + +### セキュリティ : 認証 + IIS にはアプリケーションへのアクセス制御機能が組み込まれており、匿名アクセスの他、Windows 認証、ダイジェスト認証、基本認証、.NET パスポート認証など、さまざまな認証モードを切り替えることができます。 Windows 認証は、ASP.NET Web サービスへのアクセス制御に使えます。 しかし [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションを IIS 上でホストする場合、アプリケーションへの匿名アクセスを許可するように IIS を構成し、認証処理は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 自身で、Windows 認証その他により行えるようにしなければなりません。 他の認証方法としては、ユーザー名トークン、X.509 証明書、SAML トークン、CardSpace カードなどが組み込まれていますが、独自の認証機構を定義することも可能です。 + +### セキュリティ : 偽装 + ASP.NET Web サービスは ASP.NET の ID 要素を使用して、あるユーザーに偽装することができます。あらかじめ設定した特定のユーザーでなくても、要求に資格情報が添えられていれば、その要求元ユーザーに偽装できます。 ASP.NET 互換モードで動作する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションでは、この要素を使って偽装を構成できます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、特定のユーザーに偽装する、独自の ID 要素を設定できるようになっています。 また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のクライアント側とサービス側で、別々に偽装を構成できます。 クライアント側では、要求を送信する現在のユーザーに偽装する構成が可能です。 + +``` + + + + + + + +``` + + サービス側では、現在の要求と共に提供された資格情報のユーザーに偽装するように構成できます。 + +``` +[OperationBehavior(Impersonation = ImpersonationOption.Required)] +public void Receive(Message input) +``` + +### セキュリティ : アクセス制御リストによる承認 + アクセス制御リスト \(ACL\) を使って .asmx ファイルへのアクセスを制限できます。 しかし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の .svc ファイルに対しては、ASP.NET 互換モードでない限り、ACL でアクセス制限することはできません。 + +### セキュリティ : ロール ベースの承認 + IIS の Windows 認証オプションを、ASP.NET 構成言語の承認要素と組み合わせて使用すると、ASP.NET Web サービスに対し、各ユーザーが属する Windows グループに基づくロール ベースの承認機構を提供できます。 ASP.NET 2.0 には、より汎用的なロール ベースの承認機構である、ロール プロバイダーが導入されました。 + + ロール プロバイダーとは、ユーザーが割り当てられたロールに関する問い合わせを行う、基本インターフェイスを実装したクラス群です。各ロール プロバイダーには、さまざまな情報源から必要な情報を取得する手段が組み込まれています。 ASP.NET 2.0 には、Microsoft SQL Server データベースからロールの割り当てを検索できるロール プロバイダーと、Windows Server 2003 承認マネージャーから検索できるロール プロバイダーがあります。 + + .NET アプリケーションでは、ロール プロバイダーの機構は ASP.NET と独立に使われています。これは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションも同様です。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーション用の構成例を以下に示します。このように、ASP.NET のロール プロバイダーの使い方は、 で選択できます。 + +``` + + + + + + + + + + + + +``` + +### セキュリティ : クレーム ベースの承認 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に導入された革新的な機能の 1 つで、保護されたリソースへのアクセスを、クレーム ベースで承認するというものです。 クレームは、型、権限、および値で構成されます。たとえば、運転免許証を考えてみましょう。 ここには所持者に関する誕生日などの情報 \(ここでいう「クレーム」\) が記載されています。 つまり、クレームの型は「誕生日」、値は運転者の実際の誕生日です。 また、クレームの権限は、所持者がこの値に対してできることを表します。 誕生日について言えば、所持者はこの情報を「見る」ことはできますが、「書き換える」ことはできません。 クレーム ベースの承認は、ロール ベースの承認を包含する概念です。というのも、ロールはクレームの 1 つの型であると考えることができるからです。 + + クレーム ベースの承認では、一連のクレームを操作のアクセス要求と比較し、その結果に応じてアクセスを許可または拒否します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、クレーム ベースの承認を実行するクラスも、 の `ServiceAuthorizationManager` プロパティで指定します。 + +``` + + + + + +``` + + クレーム ベースの承認を行うクラスは、 を継承し、`AccessCheck()` メソッドだけをオーバーライドして定義します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、このメソッドを、サービスの操作が起動されたときに呼び出します。該当するユーザーのクレームを `ServiceSecurityContext.AuthorizationContext` プロパティに設定した、 オブジェクトを引数として渡します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、提示されたセキュリティ トークンからユーザーに関するクレームを抽出、アセンブルし、要求された操作を許可してもよいかどうかを評価します。 + + どのようなセキュリティ トークンからでも自動的にクレームをアセンブルできることが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の革新的な技術です。これにより、認証機構と完全に独立して、クレーム ベースの承認を行うコードを実装できるようになりました。 これに対し、ACL やロール ベースの承認は、Windows 認証と密に関連し合っています。 + +### セキュリティ : 機密性 + ASP.NET Web サービスとの間でやり取りするメッセージの機密性は、トランスポート層で、IIS 上のアプリケーションが Secure Hypertext Transfer Protocol \(HTTPS\) を使うように構成することによって確保します。 IIS 上でホストされている [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションについても同様です。 しかし、IIS 以外でホストされている [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションも、安全なトランスポート プロトコルを使うように構成できます。 さらに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは、メッセージを転送前に WS\-Security プロトコルにより保護するように構成することも可能です。 メッセージの本体を WS\-Security で保護することにより、最終送信先に到達するまでの中継ノードで機密が洩れないようにすることができます。 + +## グローバリゼーション + ASP.NET 構成言語では、個々のサービスごとにカルチャを指定することができます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でこの設定ができるのは、ASP.NET 互換モードの場合に限ります。 ASP.NET 互換モードでない [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをローカライズするためには、サービス型をコンパイルしてカルチャごとのアセンブリを生成し、エンドポイントもカルチャごとのアセンブリそれぞれについて用意する必要があります。 + +## 参照 + [使用目的と使用標準に基づく ASP.NET Web サービスと WCF との比較](../../../../docs/framework/wcf/feature-details/comparing-aspnet-web-services-to-wcf-based-on-purpose-and-standards-used.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/comparing-aspnet-web-services-to-wcf-based-on-purpose-and-standards-used.md b/docs/framework/wcf/feature-details/comparing-aspnet-web-services-to-wcf-based-on-purpose-and-standards-used.md new file mode 100644 index 00000000000..5b399928168 --- /dev/null +++ b/docs/framework/wcf/feature-details/comparing-aspnet-web-services-to-wcf-based-on-purpose-and-standards-used.md @@ -0,0 +1,27 @@ +--- +title: "使用目的と使用標準に基づく ASP.NET Web サービスと WCF との比較 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d3890278-fa9b-4902-91ea-8da73b7143cc +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 使用目的と使用標準に基づく ASP.NET Web サービスと WCF との比較 +ASP.NET Web サービスは、HTTP 上で SOAP \(Simple Object Access Protocol\) を使用してメッセージを送受信するアプリケーションを構築するために開発されました。 メッセージ構造は XML スキーマを使用して定義できます。また、.NET Framework オブジェクトに対するメッセージのシリアル化を容易にするツールも提供されています。 このテクノロジを使用すると、Web サービス記述言語 \(WSDL\) で Web サービスを記述するメタデータが自動で生成されます。また、WSDL から Web サービス用のクライアントを生成する別のツールも用意されています。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用すると、.NET Framework アプリケーションで他のソフトウェア エンティティとメッセージを交換できます。 既定では SOAP が使用されますが、任意の形式のメッセージを使用でき、任意のトランスポート プロトコルを使用してメッセージを伝達できます。 メッセージ構造は XML スキーマを使用して定義できます。また、.NET Framework オブジェクトに対するメッセージをシリアル化するさまざまなオプションがあります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用すると、このテクノロジで構築されたアプリケーションを WSDL で記述するメタデータが自動で生成されます。また、WSDL からこのようなアプリケーション用のクライアントを生成するツールも用意されています。 + + ASP.NET Web サービスでサポートされる標準については、「[ASP.NET を使用して作成された XML Web サービス](http://go.microsoft.com/fwlink/?LinkId=94872)」を参照してください。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされる標準の詳細な一覧については、「[システム標準の相互運用性バインディングがサポートしている Web サービス プロトコル](../../../../docs/framework/wcf/feature-details/web-services-protocols-supported-by-system-provided-interoperability-bindings.md)」を参照してください。 + +## 参照 + [開発者の視点から見た ASP.NET Web サービスと WCF との比較](../../../../docs/framework/wcf/feature-details/comparing-aspnet-web-services-to-wcf-based-on-development.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/comparing-transactions-in-com-and-servicemodel.md b/docs/framework/wcf/feature-details/comparing-transactions-in-com-and-servicemodel.md new file mode 100644 index 00000000000..d9d3b60374f --- /dev/null +++ b/docs/framework/wcf/feature-details/comparing-transactions-in-com-and-servicemodel.md @@ -0,0 +1,31 @@ +--- +title: "COM+ と ServiceModel でのトランザクションの比較 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e493bcdd-b91a-4486-853f-83dbcd1931b7 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# COM+ と ServiceModel でのトランザクションの比較 +このトピックでは、トランザクション COM\+ サービスの動作を、 名前空間で定義された [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 属性を使用してシミュレートする方法について説明します。 + +## ServiceModel 属性を使った COM\+ のエミュレート + 次の表では、`EnterpriseServices` トランザクションの生成に使用される 列挙体の各値を比較し、 名前空間で定義された [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 属性との関連を示します。 + +|COM\+ 属性|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 属性| +|--------------|----------------------------------------------------------------| +|RequiresNew| に設定されます。

は `true` です。

バインド要素の `TransactionFlow` 属性は `false` です。| +|必須| に設定されます。

は `true` です。

バインド要素の `TransactionFlow` 属性は `true` です。| +|サポート状況|同等の属性はありません。 一般に、`Required` を指定した場合の動作を採用することをお勧めします。| +|NotSupported| は `false` です。

バインド要素の `TransactionFlow` 属性は `false` です。| +|Disabled|同等の属性はありません。 一般に、`NotSupported` を指定した場合の動作を採用することをお勧めします。| \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/config-wcf-service-with-aspnet-web-service.md b/docs/framework/wcf/feature-details/config-wcf-service-with-aspnet-web-service.md new file mode 100644 index 00000000000..db157f1d756 --- /dev/null +++ b/docs/framework/wcf/feature-details/config-wcf-service-with-aspnet-web-service.md @@ -0,0 +1,61 @@ +--- +title: "方法 : WCF サービスおよび ASP.NET Web サービス クライアントを相互運用するために構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 48e1cd90-de80-4d6c-846e-631878955762 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 方法 : WCF サービスおよび ASP.NET Web サービス クライアントを相互運用するために構成する +構成する、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)]と相互運用できるようにするサービス エンドポイント[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)]Web サービス クライアントを使用して、 サービス エンドポイントのバインディングの種類として。 + + 必要に応じて、HTTPS およびトランスポート レベルのクライアント認証のサポートをバインディングで有効にできます。 [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)]Web サービス クライアントは MTOM メッセージ エンコーディングをサポートしていないため、 プロパティは、既定値は、これは残しておく必要がします。 ASP.Net Web サービス クライアントは、Ws-security をサポートしていないため、 に設定する必要がありますします。 + + メタデータを有効にする、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]に利用できるサービス[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)]Web サービス プロキシ生成ツール (つまり、 [Web サービス記述言語ツール (Wsdl.exe)](http://go.microsoft.com/fwlink/?LinkId=73833)、 [Web サービス検出ツール (Disco.exe)](http://go.microsoft.com/fwlink/?LinkId=73834)、および Visual Studio で Web 参照の追加機能)、HTTP GET メタデータ エンドポイントを公開する必要があります。 + +### コードを使用して ASP.NET Web サービス クライアントと互換性のある WCF エンドポイントを追加するには + +1. 新しいインスタンス + +2. 必要に応じてこのサービス エンドポイント バインディングのトランスポート セキュリティを有効にするバインディングのセキュリティ モードを設定してします。 詳細については、「[トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/transport-security.md)します。 + +3. 上で作成したバインディング インスタンスを使用して、サービス ホストに新しいアプリケーション エンドポイントを追加します。 コードでサービス エンドポイントを追加する方法の詳細については、「、[方法: コードでサービス エンドポイントを作成](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-code.md)します。 + +4. サービス用に HTTP/GET メタデータのエンドポイントを有効にします。 詳細をご覧ください[方法: サービスを使用してコードのメタデータを公開](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-code.md)します。 + +### 構成ファイルを使用して ASP.NET Web サービス クライアントと互換性のある WCF エンドポイントを追加するには + +1. 新しいバインド構成します。 詳細については、「、[方法: 構成では、サービス バインドを指定](../../../../docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md)します。 + +2. 必要に応じてこのサービス エンドポイントのバインディング構成のトランスポート セキュリティを有効にするバインディングのセキュリティ モードを設定してします。 詳細については、「[トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/transport-security.md)します。 + +3. 上で作成したバインド構成を使用して、サービスに新しいアプリケーション エンドポイントを構成します。 構成ファイルでサービス エンドポイントを追加する方法の詳細については、「、[方法: 構成でサービス エンドポイントを作成](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md)します。 + +4. サービス用に HTTP/GET メタデータのエンドポイントを有効にします。 詳細情報を参照してください、[方法: 構成ファイルを使用して、サービスのメタデータを公開](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md)します。 + +## 例 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Web サービス クライアントと互換性のある [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] エンドポイントをコードおよび構成ファイルで追加する方法を次のコード例に示します。 + + [!code-csharp[C_HowTo-WCFServiceAndASMXClient#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto-wcfserviceandasmxclient/cs/program.cs#0)] + [!code-vb[C_HowTo-WCFServiceAndASMXClient#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto-wcfserviceandasmxclient/vb/program.vb#0)] + + [!code[C_HowTo-WCFServiceAndASMXClient#1](../../../../samples/snippets/common/VS_Snippets_CFX/c_howto-wcfserviceandasmxclient/common/app.config#1)] + +## 関連項目 + [方法: コードでサービス エンドポイントの作成](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-code.md) + [方法: コードを使用して、サービスのメタデータを公開](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-code.md) + [方法: 構成でサービス バインディングを指定](../../../../docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md) + [方法: 構成でサービス エンドポイントの作成](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md) + [方法: 構成ファイルを使用して、サービスのメタデータを公開](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md) + [トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/transport-security.md) + [メタデータを使用します。](../../../../docs/framework/wcf/feature-details/using-metadata.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/config-workflow-unhandled-exception-workflowservicehost.md b/docs/framework/wcf/feature-details/config-workflow-unhandled-exception-workflowservicehost.md new file mode 100644 index 00000000000..9c0790a067d --- /dev/null +++ b/docs/framework/wcf/feature-details/config-workflow-unhandled-exception-workflowservicehost.md @@ -0,0 +1,65 @@ +--- +title: "ワークフロー サービスの未処理の例外動作を構成する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 51b25c86-292c-43e4-8d13-273d2badc8ad +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# ワークフロー サービスの未処理の例外動作を構成する方法 + は、 でホストされるワークフロー内で未処理の例外が発生した場合のアクションを指定できるようにする動作です。このトピックでは、この動作を構成ファイルで構成する方法を示します。 + +### WorkflowUnhandledExceptionBehavior を構成するには + +1. 次の例に示すように、\<`workflowUnhandledException`\> 要素を \<`behavior`\> 要素の \<`serviceBehaviors`\> 要素内に追加し、`action` 属性を使用して、未処理の例外が発生した場合のアクションを指定します。 + + ``` + + + + + + + + + ``` + + > [!NOTE] + > 前の構成サンプルでは、簡略化された構成を使用しています。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md). + + この動作は、次の例に示すように、コードで構成できます。 + + ```csharp + host.Description.Behaviors.Add(new WorkflowUnhandledExceptionBehavior { Action = WorkflowUnhandledExceptionAction.AbandonAndSuspend }); + + ``` + + \<`workflowUnhandledException`\> 要素の `action` 属性は、次のいずれかの値に設定できます。 + + **abandon** + 永続化されているインスタンス状態を変更することなく、メモリ内のインスタンスを中止します \(つまり、最後の永続性ポイントにロールバックします\)。 + + **abandonAndSuspend** + メモリ内のインスタンスを中止し、永続化されているインスタンスを中断状態に更新します。 + + **cancel** + インスタンスのキャンセル ハンドラーを呼び出してから、メモリ内のインスタンスを完了状態にします。これにより、そのインスタンスがインスタンス ストアから削除される場合もあります。 + + **terminate** + メモリ内のインスタンスを完了状態にし、そのインスタンスをインスタンス ストアから削除します。 + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフロー サービス ホストの拡張機能](../../../../docs/framework/wcf/feature-details/workflow-service-host-extensibility.md)」を参照してください。 + +## 参照 + [ワークフロー サービス ホストの拡張機能](../../../../docs/framework/wcf/feature-details/workflow-service-host-extensibility.md) + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuration-based-activation-in-iis-and-was.md b/docs/framework/wcf/feature-details/configuration-based-activation-in-iis-and-was.md new file mode 100644 index 00000000000..d78afabcf16 --- /dev/null +++ b/docs/framework/wcf/feature-details/configuration-based-activation-in-iis-and-was.md @@ -0,0 +1,52 @@ +--- +title: "IIS と WAS における構成ベースのアクティブ化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6a927e1f-b905-4ee5-ad0f-78265da38238 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# IIS と WAS における構成ベースのアクティブ化 +インターネット インフォメーション サービス \(IIS: Internet Information Services\) または Windows プロセス アクティブ化サービス \(WAS\) で [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをホストする場合は、.svc ファイルを用意する必要があります。.svc ファイルには、サービスの名前と、オプションのカスタム サービス ホスト ファクトリが含まれています。この追加ファイルによって、管理のオーバーヘッドが増加します。構成ベースのアクティブ化機能により、.svc ファイルを用意する必要がなくなり、関連するオーバーヘッドも発生しません。 + +## 構成ベースのアクティブ化 + 構成ベースのアクティブ化では、以前は .svc ファイルに配置されていたメタデータを受け取り、それを Web.config ファイルに配置します。\<`serviceHostingEnvironment`\> 要素内には \<`serviceActivations`\> 要素があります。\<`serviceActivations`\> 要素内には、ホストされる各サービスに 1 つずつの \<`add`\> 要素が 1 つ以上あります。\<`add`\> 要素に含まれている属性を使用すると、サービスおよびサービス型 \(サービス ホスト ファクトリ\) の相対アドレスを設定できます。次の構成コード例は、このセクションの使用方法を示しています。 + +> [!NOTE] +> 各 \<`add`\> 要素では、サービスまたはファクトリ属性を指定する必要があります。サービスとファクトリ属性の両方を指定することもできます。 + +``` + + + + + +``` + + このコードを Web.config ファイルに含めると、サービス ソース コードをアプリケーションの App\_Code ディレクトリに配置するか、コンパイル済みアセンブリをアプリケーションの Bin ディレクトリに配置することができます。 + +> [!NOTE] +> - 構成ベースのアクティブ化機能を使用する場合、.svc ファイルのインライン コードはサポートされません。 +> - `relativeAddress` 属性は、"\\/service.svc" や "~\/\ - WCF と関連付けられている既知の拡張子を持たない相対アドレスを登録すると、構成例外がスローされます。 +> - 指定された相対アドレスは、仮想アプリケーションのルートが基準になります。 +> - 構成の階層的モデルにより、コンピューター レベルおよびサイト レベルの登録された相対アドレスは、仮想アプリケーションによって継承されます。 +> - 構成ファイル内での登録は、.svc、.xamlx、.xoml、またはその他のファイルでの設定よりも優先されます。 +> - IIS\/WAS に送信された URI 内の \\ \(円記号\) は、自動的に \/ \(スラッシュ\) に変換されます。\\ を含む相対アドレスが追加され、その相対アドレスを使用する URI を IIS に送信した場合は、円記号がスラッシュに変換されるため、IIS では、それを相対アドレスと一致させることができません。IIS は、一致するものが見つからなかったことを示すトレース情報を送信します。 + +## 参照 + + [ホスティング サービス](../../../../docs/framework/wcf/hosting-services.md) + [ワークフロー サービスのホストの概要](../../../../docs/framework/wcf/feature-details/hosting-workflow-services-overview.md) + [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuring-discovery-in-a-configuration-file.md b/docs/framework/wcf/feature-details/configuring-discovery-in-a-configuration-file.md new file mode 100644 index 00000000000..68e2877520f --- /dev/null +++ b/docs/framework/wcf/feature-details/configuring-discovery-in-a-configuration-file.md @@ -0,0 +1,280 @@ +--- +title: "構成ファイルにおける探索の構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b9884c11-8011-4763-bc2c-c526b80175d0 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 構成ファイルにおける探索の構成 +探索で使用される構成設定は、4 つの主なグループに分類されます。 このトピックでは、各グループについて簡単に説明し、各グループの構成方法の例を紹介します。 以下の各セクションは、各領域についてのより詳細なドキュメントにリンクされます。 + +## 動作の構成 + 探索では、サービスの動作とエンドポイントの動作が使用されます。 動作により、サービスのすべてのエンドポイントの探索が有効になるだけでなく、アナウンス エンドポイントの指定が可能になります。 次の例は、 を追加し、アナウンス エンドポイントを指定する方法を示しています。 + +``` + + + + + + + + + + +``` + + 動作を指定したら、これを \<`service`\> 要素から参照します。次にその例を示します。 + +``` + + + + + + + + + +``` + + サービスを探索可能にするには、探索エンドポイントを追加する必要もあります。上の例では、 標準エンドポイントを追加しています。 + + アナウンス エンドポイントを追加する場合は、アナウンス リスナー サービスを \<`services`\> 要素に追加する必要もあります。次にその例を示します。 + +``` + + + + + + + + + + + +``` + + 動作は、特定のエンドポイントの探索を有効または無効にするために使用されます。 次の例では、サービスに 2 つのアプリケーション エンドポイントを構成します。1 つのエンドポイントでは探索を有効し、もう 1 つでは探索を無効にします。 それぞれのエンドポイントには 動作が追加されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + 動作を使用すると、サービスから返されるエンドポイント メタデータにカスタム メタデータを追加することもできます。 その方法を次の例に示します。 + +``` + + + + This is custom metadata. + i:PrintBasic + + This is a nested custom metadata. + + + + +``` + + 動作を使用すると、クライアントがサービスの検索に使用するスコープと型を追加することもできます。 クライアント側の構成ファイルでこの構成を行う方法を次の例に示します。 + +``` + + + + + + + + + + + + +``` + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)] および については、「[WCF Discovery の概要](../../../../docs/framework/wcf/feature-details/wcf-discovery-overview.md)」を参照してください。 + +## バインディング要素の構成 + バインディング要素の構成は、クライアント側で最も興味深い構成です。 構成を使用して、WCF クライアント アプリケーションからのサービスの探索に使用する検索条件を指定できます。 次の例では、 チャネルとのカスタム バインディングを作成し、型とスコープを含む検索条件を指定しています。 また、 プロパティと プロパティの値も指定しています。 + +``` + + + + + + + + + + + + + + + + + + +``` + + このカスタム バインディング構成は、クライアント エンドポイントから参照される必要があります。 + +``` + + + +``` + + 検索条件[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[探索検索と FindCriteria](../../../../docs/framework/wcf/feature-details/discovery-find-and-findcriteria.md)」を参照してください。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)] 探索およびバインディング要素については、「[WCF Discovery の概要](../../../../docs/framework/wcf/feature-details/wcf-discovery-overview.md)」を参照してください。 + +## 標準エンドポイントの構成 + 標準エンドポイントは定義済みのエンドポイントで、これには、1 つ以上のプロパティ \(アドレス、バインディング、またはコントラクト\) の既定値、または、変更できない 1 つ以上のプロパティ値が設定されています。 .NET 4 には、、および という 3 種類の探索関連の標準エンドポイントが用意されています。 は、UDP マルチキャスト バインディングを使用した探索操作用に事前に構成されている標準エンドポイントです。 は、UDP バインディングを使用したアナウンスの送信用に事前に構成されている標準エンドポイントです。 は、実行時に探索対象のサービスのエンドポイント アドレスを動的に検索するために探索が使用する標準エンドポイントです。 標準のバインディングは、追加する標準エンドポイントの種類を指定した種類属性を含む \<`endpoint`\> 要素を使用して、指定されます。 および を追加する方法を次の例に示します。 + +``` + + + + + + + + + +``` + + 標準エンドポイントは、\<`standardEndpoints`\> 要素で構成します。 および を構成する方法を次の例に示します。 + +``` + + + + + + + + + + + +``` + + 標準エンドポイント構成を追加したら、各エンドポイントの \<`endpoint`\> 要素でこの構成を参照します。次にその例を示します。 + +``` + + + + + + + + + +``` + + 探索で使用されるその他の標準エンドポイントとは異なり、 にはバインディングとコントラクトを指定します。 を追加し、構成する方法を次の例に示します。 + +``` + + + + + + + + + + + + + + + + + This is custom metadata. + + + + + + + +``` + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)] 標準エンドポイント、「」を参照してください。 [標準エンドポイント](../../../../docs/framework/wcf/feature-details/standard-endpoints.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuring-http-and-https.md b/docs/framework/wcf/feature-details/configuring-http-and-https.md new file mode 100644 index 00000000000..ff0c0732ebb --- /dev/null +++ b/docs/framework/wcf/feature-details/configuring-http-and-https.md @@ -0,0 +1,105 @@ +--- +title: "HTTP および HTTPS の構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "HTTP の構成 [WCF]" +ms.assetid: b0c29a86-bc0c-41b3-bc1e-4eb5bb5714d4 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# HTTP および HTTPS の構成 +WCF サービスと WCF クライアントは、HTTP および HTTPS を介して通信できます。 HTTP または HTTPS の設定は、インターネット インフォメーション サービス \(IIS\) またはコマンド ライン ツールを使用して構成します。 WCF サービスが IIS でホストされている場合は、IIS 内で HTTP または HTTPS の設定を構成できます \(inetmgr.exe ツールを使用\)。 WCF サービスが自己ホスト型の場合は、コマンド ライン ツールを使用して HTTP または HTTPS の設定を構成します。 + + 少なくとも、URL 登録を構成し、サービスで使用される URL のファイアウォール例外を追加する必要があります。 + + HTTP 設定の構成に使用するツールは、コンピューターで実行されているオペレーティング システムによって異なります。 + + [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] または [!INCLUDE[wxp](../../../../includes/wxp-md.md)] を実行している場合は、HttpCfg.exe ツールを使用します。 [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] ではこのツールが自動的にインストールされます。 [!INCLUDE[wxp](../../../../includes/wxp-md.md)] を実行している場合は、「[Windows XP Service Pack 2 サポート ツール](http://go.microsoft.com/fwlink/?LinkId=88606)」からツールをダウンロードできます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][Httpcfg の概要に関するページ](http://go.microsoft.com/fwlink/?LinkId=88605)を参照してください。 + + [!INCLUDE[wv](../../../../includes/wv-md.md)] または Windows 7 を実行している場合は、Netsh.exe ツールを使用してこれらの設定を構成します。 + +## 名前空間予約の構成 + 名前空間予約では、HTTP URL 名前空間の一部に対する権限を特定のユーザー グループに割り当てます。 予約によって、名前空間のその部分でリッスンするサービスを作成する権限をユーザーに与えます。 予約は URL プレフィックスを使用します。つまり、予約は予約パスのすべてのサブパスを範囲とします。 名前空間予約では、2 つの方法でワイルドカードを使用できます。 HTTP Server API のドキュメントでは、[ワイルドカードを含む名前空間クレーム間の解決順序](http://go.microsoft.com/fwlink/?LinkId=94841)について説明しています。 + + 実行中のアプリケーションは、同様の要求を作成して、名前空間登録を追加できます。 名前空間の同じ部分について、登録と予約の間で競合が発生します。 [ワイルドカードを含む名前空間クレーム間の解決順序](http://go.microsoft.com/fwlink/?LinkId=94841)で指定された解決順序に従って、予約が登録より優先される可能性があります。 この場合、実行中のアプリケーションがクレームを受信する動作が、予約によってブロックされます。 + +### Windows XP または Windows Server 2003 を実行している場合 + 名前空間予約を変更するには、`httpcfg.exe set urlacl` コマンドを使用します。 「[Httpcfg 構文](http://go.microsoft.com/fwlink/?LinkId=94840)」では、Httpcfg.exe ツールの構文について説明しています。 名前空間の一部に対する予約権限を変更するには、管理特権または名前空間のその部分の所有権が必要です。 最初は、ローカル管理者が HTTP 名前空間全体を所有しています。 + + `set urlacl` オプションを使用する Httpcfg コマンドの構文を次に示します。 + +``` +httpcfg set urlacl /u {http://URL:Port/ | https://URL:Port/} /aACL + +``` + + `/u` を使用する場合には、`set urlacl` パラメーターが必要です。 このパラメーターには、実行された予約のレコード キーとして動作する完全修飾 URL を含む文字列を指定します。 + + `/a` を使用する場合には、`set urlacl` パラメーターも必要です。 このパラメーターには、SDDL \(Security Descriptor Definition Language\) の形式によるアクセス制御リスト \(ACL\) を含む文字列を指定します。 + + このコマンドの使用例を次に示します。 + +``` +httpcfg.exe set urlacl /u http://myhost:8000/ /a "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)" + +``` + +### Windows Vista、Windows Server 2008 R2、または Windows 7 を実行している場合 + [!INCLUDE[wv](../../../../includes/wv-md.md)]、Windows Server 2008 R2、または Windows 7 を実行している場合は、Netsh.exe ツールを使用します。 このコマンドの使用例を次に示します。 + +``` +netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user + +``` + + このコマンドにより、DOMAIN\\ユーザー アカウントについて指定した URL 名前空間の URL 予約が追加されます。 netsh コマンドの使用方法の詳細については、コマンド プロンプトで「netsh http add urlacl」と入力し、Enter キーを押してください。 + +## ファイアウォールの例外の構成 + HTTP 経由の通信を行う WCF サービスを自己ホストする際は、例外をファイアウォール構成に追加して、特定の URL を使用した着信接続を可能にする必要があります。 詳細については、「[Windows ファイアウォールでポートを開く \(Windows 7\)](http://go.microsoft.com/fwlink/?LinkId=239961)」を参照してください。 + +## SSL 証明書の構成 + SSL \(Secure Sockets Layer\) プロトコルは、クライアントとサーバー上で証明書を使用して暗号化キーを格納します。 サーバーは、クライアントがサーバーの ID を検証できるように接続時に SSL 証明書を提供します。 また、サーバーはクライアントに証明書を要求して、接続の両側で相互認証を実行することもできます。 + + 証明書は、接続の IP アドレスとポート番号に基づいて集中ストアに格納されます。 特別な IP アドレス 0.0.0.0 は、ローカル コンピューターの任意の IP アドレスに一致します。 証明書ストアでは、パスを基準にした URL を区別しません。 同じ IP アドレスとポートの組み合わせを持つサービスは、そのサービスの URL でのパスが異なる場合でも証明書を共有する必要があります。 + + 手順の詳細については、「[方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md)」を参照してください。 + +## IP リッスン一覧の構成 + HTTP Server API は、ユーザーが URL を登録すると、IP アドレスとポートだけにバインドします。 既定では、HTTP Server API は、コンピューターのすべての IP アドレスに対して、URL でポートにバインドします。 その IP アドレスとポートの組み合わせにバインドしている HTTP Server API をアプリケーションが使用していない場合、競合が発生します。 IP リッスン一覧によって、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、コンピューターの一部の IP アドレスに対してポートを使用するアプリケーションと共存できます。 IP リッスン一覧にエントリがある場合、HTTP Server API は、その一覧に指定されている IP アドレスだけにバインドします。 IP リッスン一覧を変更するには、管理特権が必要です。 + +### Windows XP または Windows Server 2003 を実行している場合 + httpcfg ツールを使用して IP リッスン一覧を変更します。次に例を示します。 「[Httpcfg 構文](http://go.microsoft.com/fwlink/?LinkId=94840)」では、httpcfg.exe ツールの構文について説明しています。 + +``` +httpcfg.exe set iplisten -i 0.0.0.0:8000 +``` + +### Windows Vista または Windows 7 を実行している場合 + netsh ツールを使用して IP リッスン一覧を変更します。次に例を示します。 + +``` +netsh http add iplisten ipaddress=0.0.0.0:8000 +``` + +## その他の構成設定 + を使用すると、クライアント接続では、名前空間予約と Windows ファイアウォールに対応できる既定値が使用されます。 双方向接続のクライアント ベース アドレスをカスタマイズする場合、クライアント上で HTTP 設定を行い、新しいアドレスに一致させる必要があります。 + + HTTP Server API には、HttpCfg からは使用できない高度な構成設定があります。 この設定は、レジストリで管理され、HTTP Server API を使用するシステムで実行中のすべてのアプリケーションに適用されます。 これらの設定については、「[IIS 用の Http.sys レジストリ設定](http://go.microsoft.com/fwlink/?LinkId=94843)」を参照してください。 ほとんどのユーザーは、この設定を変更する必要がありません。 + +## Windows XP に固有の問題 + IIS では、[!INCLUDE[wxp](../../../../includes/wxp-md.md)] 上でのポート共有がサポートされていません。 IIS を実行していて、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが同じポートを持つ名前空間を使用しようとすると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは開始に失敗します。 IIS と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではどちらも、既定でポート 80 が使用されます。 いずれかのサービスのポート割り当てを変更するか、IP リッスン一覧を使用して、IIS で使用されていないネットワーク アダプターに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを割り当てます。 IIS 6.0 以上では、HTTP Server API を使用できるように設計が変更されています。 + +## 参照 + + [方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuring-iis-for-wcf.md b/docs/framework/wcf/feature-details/configuring-iis-for-wcf.md new file mode 100644 index 00000000000..ca71216c618 --- /dev/null +++ b/docs/framework/wcf/feature-details/configuring-iis-for-wcf.md @@ -0,0 +1,83 @@ +--- +title: "Windows Communication Foundation での Internet Information Services 7.0 の構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1050d395-092e-44d3-b4ba-66be3b039ffb +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# Windows Communication Foundation での Internet Information Services 7.0 の構成 +Internet Information Services \(IIS\) 7.0 はモジュール設計になっており、必要なコンポーネントを選択してインストールできます。この設計は、[!INCLUDE[wv](../../../../includes/wv-md.md)] で新しく導入されたマニフェスト ドリブンのコンポーネント テクノロジに基づいています。[!INCLUDE[iisver](../../../../includes/iisver-md.md)] には、40 以上のスタンドアロン機能コンポーネントがあり、個別にインストールできます。これにより、IT プロフェッショナルは必要に応じてインストールをカスタマイズできます。このトピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] で使用する [!INCLUDE[iisver](../../../../includes/iisver-md.md)] を構成し、必要なコンポーネントを決定する方法について説明します。 + +## 最小インストール : WAS のインストール + 完全な [!INCLUDE[iisver](../../../../includes/iisver-md.md)] パッケージの最小インストールでは、Windows プロセス アクティブ化サービス \(WAS: Windows Process Activation Service\) をインストールします。WAS はスタンドアロン機能であり、すべての [!INCLUDE[wv](../../../../includes/wv-md.md)] オペレーティング システム \(Home Basic、Home Premium、Business、Ultimate、および Enterprise\) で利用できる唯一の [!INCLUDE[iisver](../../../../includes/iisver-md.md)] の機能です。 + + コントロール パネルの **\[プログラム\]** をクリックし、**\[プログラムと機能\]** に表示される **\[Windows の機能を有効化または無効化\]** をクリックします。次の図に示すように、一覧に WAS コンポーネントが表示されます。 + + ![機能の有効化または無効化ダイアログ](../../../../docs/framework/wcf/feature-details/media/wcfc-turnfeaturesonoroffs.gif "wcfc\_TurnFeaturesOnOrOffs") + + この機能には、次のサブコンポーネントがあります。 + +- .NET 環境 + +- 構成 API + +- プロセス モデル + + WAS のルート ノードを選択した場合は、既定で **\[プロセス モデル\]** サブノードだけがオンになっています。このインストールでは Web サーバーをサポートしないため、WAS のみをインストールすることに注意してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] または任意の [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アプリケーションを機能させるには、**\[.NET 環境\]** チェック ボックスをオンにします。つまり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] および [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] を適切に機能させるには、すべての WAS コンポーネントが必要です。これらのコンポーネントのいずれかを一度インストールすると、チェック ボックスは自動的にオンになります。 + +## IIS 7.0 : 既定のインストール + **\[インターネット インフォメーション サービス\]** 機能をオンにすることで、次の図に示すように、一部のサブノードが自動的にオンになります。 + + ![IIS 7.0 の各機能の既定の設定](../../../../docs/framework/wcf/feature-details/media/wcfc-turningfeaturesonoroff2.gif "wcfc\_TurningFeaturesOnOrOff2") + + これは [!INCLUDE[iisver](../../../../includes/iisver-md.md)] の既定のインストールです。このインストールにより、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] を使用して静的コンテンツ \(HTML ページなど\) を提供できます。ただし、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] や CGI アプリケーションを実行したり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストしたりすることはできません。 + +## IIS 7.0 : ASP.NET サポートを行うインストール + IIS 7.0 で [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] を機能させるには [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] をインストールする必要があります。**\[ASP.NET\]** をオンにすると、画面は次のようになります。 + + ![ASP.NET の必須の設定](../../../../docs/framework/wcf/feature-details/media/wcfc-trunfeaturesonoroff3s.gif "wcfc\_TrunFeaturesOnOrOFf3s") + + これは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションと [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アプリケーションの両方が [!INCLUDE[iisver](../../../../includes/iisver-md.md)] で機能するための最小限の環境です。 + +## IIS 7.0 : IIS 6.0 互換コンポーネントを備えたインストール + Visual Studio 2005 や、[!INCLUDE[iis601](../../../../includes/iis601-md.md)] メタベース API を使用する仮想アプリケーションを構成するオートメーション スクリプトおよびツール \(Adsutil.vbs など\) と共にシステムに [!INCLUDE[iisver](../../../../includes/iisver-md.md)] をインストールする場合は、**\[[!INCLUDE[iis601](../../../../includes/iis601-md.md)] スクリプト ツール\]** を必ずオンにしてください。これにより、**\[[!INCLUDE[iis601](../../../../includes/iis601-md.md)] Management 互換性\]** の他のサブノードが自動的にオンになります。実行後の画面を次の図に示します。 + + ![IIS 6.0 管理互換の設定](../../../../docs/framework/wcf/feature-details/media/scfc-turnfeaturesonoroff5s.gif "scfc\_TurnFeaturesOnOrOff5s") + + このインストールにより、[!INCLUDE[iisver](../../../../includes/iisver-md.md)]、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)]、および [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 機能を使用するために必要な準備ができ、Web でサンプルを利用できるようになります。 + +## 要求の制限 + IIS 7.0 がインストールされた [!INCLUDE[wv](../../../../includes/wv-md.md)] では、`maxUri` および `maxQueryStringSize` の設定の既定値が変更されています。既定では、IIS 7.0 における要求のフィルター処理で使用できる文字数は、URL が 4096 文字、クエリ文字列が 2048 文字です。これらの既定値を変更するには、App.config ファイルに次の XML を追加します。 + + `` + + `` + + `` + + `` + + `` + + `` + + `` + +## 参照 + [WAS アクティベーション アーキテクチャ](../../../../docs/framework/wcf/feature-details/was-activation-architecture.md) + [WCF で使用するための WAS を設定する](../../../../docs/framework/wcf/feature-details/configuring-the-wpa--service-for-use-with-wcf.md) + [方法 : WCF アクティブ化コンポーネントをインストールして設定する](../../../../docs/framework/wcf/feature-details/how-to-install-and-configure-wcf-activation-components.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuring-serialization-in-a-workflow-service.md b/docs/framework/wcf/feature-details/configuring-serialization-in-a-workflow-service.md new file mode 100644 index 00000000000..1558da241b3 --- /dev/null +++ b/docs/framework/wcf/feature-details/configuring-serialization-in-a-workflow-service.md @@ -0,0 +1,62 @@ +--- +title: "ワークフロー サービス内でのシリアル化の構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aa70b290-a2ee-4c3c-90ea-d0a7665096ae +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# ワークフロー サービス内でのシリアル化の構成 +ワークフロー サービスは [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスであるため、 \(既定\) または を使用するオプションがあります。ワークフロー以外のサービスを記述する場合、使用するシリアライザーの型はサービスまたは操作コントラクトで指定されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ワークフロー サービスを作成する場合、これらのコントラクトはコードで指定せずに、コントラクト推論で実行時に生成されます。コントラクト推論[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフロー内でのコントラクトの使用](../../../../docs/framework/wcf/feature-details/using-contracts-in-workflow.md)」を参照してください。シリアライザーは、 プロパティを使用して指定されます。これは、次の図に示すようにデザイナーで設定できます。 + + ![シリアライザーの設定](../../../../docs/framework/wcf/feature-details/media/settingserialzier.png "SettingSerialzier") + + シリアライザーは、次の例に示すようにコードで設定することもできます。 + +``` +Receive approveExpense = new Receive + { + OperationName = "ApproveExpense", + CanCreateInstance = true, + ServiceContractName = "FinanceService", + SerializerOption = SerializerOption.DataContractSerializer, + Content = ReceiveContent.Create(new OutArgument(expense)) + }; + +``` + + ワークフロー サービスにも既知の型を指定できます。既知の型[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください。既知の型は、デザイナーまたはコードで指定できます。デザイナーで既知の型を指定するには、次の図に示すように アクティビティのプロパティ ウィンドウで KnownTypes プロパティの横の省略記号ボタンをクリックします。 + + ![KnownTypes プロパティ](../../../../docs/framework/wcf/feature-details/media/knowntypes.png "KnownTypes") + + これにより、既知の型を検索および指定できる型コレクション エディターが表示されます。 + + ![既知の型の追加](../../../../docs/framework/wcf/feature-details/media/typecollectionseditor.gif "TypeCollectionsEditor") + + **\[新しい型の追加\]** リンクをクリックし、ドロップダウンを使用して既知の型コレクションに追加する型を選択または検索します。既知の型をコードで指定するには、次の例に示すように プロパティを使用します。 + +``` +Receive approveExpense = new Receive + { + OperationName = "ApproveExpense", + CanCreateInstance = true, + ServiceContractName = "FinanceService", + SerializerOption = SerializerOption.DataContractSerializer, + Content = ReceiveContent.Create(new OutArgument(expense)) + }; + approveExpense.KnownTypes.Add(typeof(Travel)); + approveExpense.KnownTypes.Add(typeof(Meal)); + +``` + + ワークフロー サービスのシリアル化の構成方法を示す完全なコード例を確認するには、「[ワークフロー サービスでのメッセージの書式設定](../../../../docs/framework/windows-workflow-foundation/samples/formatting-messages-in-workflow-services.md)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuring-system-provided-bindings.md b/docs/framework/wcf/feature-details/configuring-system-provided-bindings.md new file mode 100644 index 00000000000..31115e0066d --- /dev/null +++ b/docs/framework/wcf/feature-details/configuring-system-provided-bindings.md @@ -0,0 +1,89 @@ +--- +title: "システムが提供するバインディングの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "バインディング [WCF], システム指定" + - "WCF [WCF], システム指定のバインディング" + - "Windows Communication Foundation [WCF], システム指定のバインディング" +ms.assetid: 443f8d65-f1f2-4311-83b3-4d8fdf7ccf16 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# システムが提供するバインディングの構成 +バインディングにより、エンドポイントとの通信で使用する通信メカニズムが指定され、エンドポイントへの接続方法が示されます。 バインディングは、必要な通信機能を提供するために [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] チャネルを階層化する方法を定義する要素から構成されます。 バインディングには次の 3 種類の要素が含まれます。 + +- プロトコル チャネル バインド要素 : エンドポイントに送信されるメッセージで使用するセキュリティ、信頼性、コンテキスト フローの設定、またはユーザー定義のプロトコルを指定します。 + +- トランスポート チャネル バインド要素 : エンドポイントにメッセージを送信するときに使用する基礎トランスポート プロトコル \(TCP や HTTP など\) を指定します。 + +- メッセージ エンコーディング バインド要素 : エンドポイントに送信されるメッセージに使用するネットワーク エンコード \(text\/XML、バイナリ、MTOM \(Message Transmission Optimization Mechanism\) など\) を指定します。 + + ここでは、システム指定の [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] バインディングをすべて示します。 このバインディングがいずれもアプリケーションの要件を満たさない場合は、 クラスを使用してバインディングを作成できます。 カスタム バインディングの作成の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください。 + +> [!IMPORTANT] +> セキュリティが有効になっているバインディングを選択します。 既定では、 バインディング以外のバインディングではセキュリティが有効になっています。 セキュリティで保護されたバインディングを選択しない場合、またはセキュリティを無効にする場合は、セキュリティで保護されたデータ センターや隔離されたネットワークを使用するなど、他の方法でネットワーク交換が保護されていることを確認してください。 + +> [!IMPORTANT] +> 他の方法によってネットワーク交換がセキュリティ保護されない限り、セキュリティをサポートしないバインディングやセキュリティが無効になっているバインディングでは、双方向コントラクトを使用しないでください。 + +## システム標準のバインディング + 次のバインディングは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に付属します。 + +|バインド|構成要素|説明| +|----------|----------|--------| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)|ASP.NET Web サービス \(ASMX\) ベースのサービスなど、WS\-Basic Profile に適合する Web サービスとの通信に適したバインディング。 このバインディングはトランスポートとして HTTP を、既定のメッセージ エンコーディングとして text\/XML を使用します。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)|二重のサービス コントラクト以外に適した、セキュリティで保護された相互操作可能なバインディング。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/ws2007httpbinding.md)|、および の各バインド要素の適切なバージョンをサポートする、セキュリティで保護された相互運用可能なバインディング。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md)|二重のサービス コントラクト、または SOAP 中継局を介しての通信に適した、セキュリティで保護された相互操作可能なバインディング。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)|WS\-Federation プロトコルをサポートする、セキュリティで保護された相互操作可能なバインディングで、フェデレーションに属す組織のユーザーを効率的に認証、および承認することができます。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/ws2007federationhttpbinding.md)|から派生し、フェデレーション セキュリティをサポートする、セキュリティで保護された相互運用可能なバインディングです。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md)|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーション間での複数コンピューターの通信に適した、セキュリティで保護された最適バインディング。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/netnamedpipebinding.md)|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーション間でのコンピューター通信に適した、セキュリティで保護された信頼できる最適バインディング。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/netmsmqbinding.md)|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーション間での複数コンピューターの通信に適した、キューに置かれたバインディング。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/netpeertcpbinding.md)|セキュリティで保護された、複数のコンピューター通信を可能にするバインディング。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/webhttpbinding.md)|SOAP メッセージではなく、HTTP 要求を介して公開される [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Web サービスのエンドポイントを構成するために使用されるバインディング。| +||[\](../../../../docs/framework/configure-apps/file-schema/wcf/msmqintegrationbinding.md)|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションと既存のメッセージ キュー \(MSMQ: Message Queuing\) アプリケーション間のコンピューター間通信に適したバインディング。| + +## バインディング機能 + システム指定の各バインディングで提供される主要機能の一部を次の表に示します。 各バインディングを 1 列目に示します。機能に関する情報については表で説明します。 次の表に、使用されるバインディングの省略形のキーを示します。 バインディングを選択するには、必要な行の機能がすべて含まれる列を調べます。 + +|バインディング|相互運用性|セキュリティ モード \(既定\)|セッション

\(既定\)|トランザクション|二重| +|-------------|-----------|-----------------------|----------------------|--------------|--------| +||Basic Profile 1.1|\(なし\)、トランスポート、メッセージ、混在|なし、\(なし\)|\(なし\)|N\/A| +||WS|なし、トランスポート、\(メッセージ\)、混在|\(なし\)、トランスポート、信頼できるセッション|\(なし\)、あり|N\/A| +||WS\-Security、WS\-Trust、WS\-SecureConversation、WS\-SecurityPolicy|なし、トランスポート、\(メッセージ\)、混在|\(なし\)、トランスポート、信頼できるセッション|\(なし\)、あり|N\/A| +||WS|なし、\(メッセージ\)|\(信頼できるセッション\)|\(なし\)、あり|はい| +||WS\-Federation|なし、\(メッセージ\)、混在|\(なし\)、信頼できるセッション|\(なし\)、あり|いいえ| +||WS\-Federation|なし、\(メッセージ\)、混在|\(なし\)、信頼できるセッション|\(なし\)、あり|いいえ| +||.NET|なし、\(トランスポート\)、メッセージ、

Mixed|信頼できるセッション、\(トランスポート\)|\(なし\)、あり|はい| +||.NET|なし、

\(トランスポート\)|なし、\(トランスポート\)|\(なし\)、あり|はい| +||.NET|なし、メッセージ、\(トランスポート\)、両方|\(なし\)|\(なし\)、あり|いいえ| +||Peer|なし、メッセージ、\(トランスポート\)、混在|\(なし\)|\(なし\)|はい| +||MSMQ|なし、\(トランスポート\)|\(なし\)|\(なし\)、あり|適用なし| + + 次の表では、前の表内の機能について説明します。 + +|特性|説明| +|--------|--------| +|相互運用性の種類|バインディングによる相互操作を可能にするプロトコルまたはテクノロジに名前を付けます。| +|セキュリティ|チャネルをセキュリティで保護する方法を指定します。

- なし : SOAP のメッセージはセキュリティで保護されず、クライアントは認証されません。
- トランスポート : セキュリティ要件はトランスポート層で満たされます。
- メッセージ : セキュリティ要件はメッセージ層で満たされます。
- 混在 : このセキュリティ モードは `TransportWithMessageCredentials` として知られています。 メッセージ レベルで資格情報を処理し、整合性と機密性の要件がトランスポート層で満たされます。
- 両方 : メッセージ レベルとトランスポート レベルのセキュリティが共に使用されます。 この機能は、 に特有の機能です。| +|セッション|このバインディングでセッション コントラクトをサポートするかどうかを指定します。| +|トランザクション|トランザクションが有効かどうかを指定します。| +|二重|二重のコントラクトがサポートされているかどうかを指定します。 この機能はバインディングでセッションをサポートする必要があることに注意してください。| +|ストリーム|メッセージ ストリーミングをサポートするかどうかを指定します。| + +## 参照 + [エンドポイントの作成の概要](../../../../docs/framework/wcf/endpoint-creation-overview.md) + [サービスとクライアントを構成するためのバインディングの使用](../../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) + [基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuring-the-net-tcp-port-sharing-service.md b/docs/framework/wcf/feature-details/configuring-the-net-tcp-port-sharing-service.md new file mode 100644 index 00000000000..648d2abdba5 --- /dev/null +++ b/docs/framework/wcf/feature-details/configuring-the-net-tcp-port-sharing-service.md @@ -0,0 +1,74 @@ +--- +title: "Net.TCP ポート共有サービスを構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b6dd81fa-68b7-4e1b-868e-88e5901b7ea0 +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# Net.TCP ポート共有サービスを構成する +Net.TCP トランスポートを使用する自己ホスト型サービスは、`ListenBacklog` や `MaxPendingAccepts` など、いくつかの高度な設定を制御できます。これらは、ネットワーク通信で使用される、ベースである TCP ソケットの動作をコンロトールします。 ただし、各ソケットに対するこれらの設定は、トランスポート バインディングでポート共有が無効化されている場合 \(既定では有効\) に、バインディング レベルでのみ適用されます。 + + net.tcp バインディングは、\(トランスポート バインド要素で `portSharingEnabled =true` を設定することで\) ポート共有が有効化されている場合、外部プロセス \(Net.TCP ポート共有サービスをホストする SMSvcHost.exe\) に対し、自身の代わりに TCP ソケットを管理することを暗黙的に許可しています。 たとえば、TCP を使用している場合は次のように指定します。 + +``` + +``` + + この方法で設定すると、サービスのトランスポート バインド要素に指定したソケット設定は無視され、SMSvcHost.exe で指定されたソケット設定が採用されます。 + + SMSvcHost.exe を構成するには、SmSvcHost.exe.config という XML 構成ファイルを作成し、SMSvcHost.exe 実行可能ファイルと同じ物理ディレクトリ \(たとえば、C:\\Windows\\Microsoft.NET\\Framework\\v4.5\) に配置します。 + + 次の例では、すべての構成可能値の既定値を明示的に指定した SMSvcHost.exe.config のサンプルを示します。 + +``` + + + + maxPendingAccepts="4" + maxPendingConnections="100" + receiveTimeout="00:00:30" + teredoEnabled="false"> + + + + + + + + + + + + + + +``` + +## SMSvcHost.exe.config を変更する場合 + 一般的に、SMSvcHost.exe.config ファイルの内容を変更する際には、このファイルに指定するすべての構成設定は、Net.TCP ポート共有サービスを使用するコンピューターのすべてのサービスに影響するため、注意が必要です。 これには、Windows プロセス アクティブ化サービス \(WAS\) の TCP アクティベーション機能を使用する [!INCLUDE[wv](../../../../includes/wv-md.md)] 上のアプリケーションも含まれます。 + + ただし、Net.TCP ポート共有サービスの既定の構成を変更する必要のある状況もあります。 たとえば、`maxPendingAccepts` の既定値は 4 \* プロセッサ数です。 ポート共有を使用する多数のサービスをホストするサーバーでは、この値を大きくして、最大のスループットを実現することができます。 `maxPendingConnections` の既定値は 100 です。 サービスを呼び出すクライアントが同時に複数存在し、サービスがクライアント接続を切断する場合も、この値を大きくすることを検討してください。 + + SMSvcHost.exe.config には、ポート共有サービスを使用する可能性のあるプロセス ID に関する情報も含まれています。 プロセスが、共有 TCP ポートを使用するためにポート共有サービスに接続すると、そのプロセスのプロセス ID が、ポート共有サービスの使用が許可されている ID のリストに照合されます。 これらの ID は、SMSvcHost.exe.config ファイルの \ セクションにセキュリティ識別子 \(SID\) として指定されています。 既定では、ポート共有サービスへのアクセス許可は、システム アカウント \(LocalService、LocalSystem、NetworkService\) や管理者グループのメンバーに与えられます。 ポート共有サービスに接続するために別の ID \(ユーザー ID など\) でプロセスが実行されることを許可しているアプリケーションでは、適切な SID を SMSvcHost.exe.config に明示的に追加する必要があります \(これらの変更は SMSvc.exe プロセスが再起動されるまで適用されません\)。 + +> [!NOTE] +> ユーザー アカウント コントロール \(UAC\) が有効化されている [!INCLUDE[wv](../../../../includes/wv-md.md)] システムでは、アカウントが管理者グループのメンバーであっても、ローカル ユーザーには昇格されたアクセス許可が必要です。 このようなユーザーが昇格なしでもポート共有サービスを使用できるようにするには、ユーザーの SID \(またはそのユーザーがメンバーとなっているグループの SID\) を SMSvcHost.exe.config の \ セクションに明示的に追加する必要があります。 + +> [!WARNING] +> 既定の SMSvcHost.exe.config ファイルは、カスタムの `etwProviderId` を指定することによって、SMSvcHost.exe のトレースの影響がサービス トレースに及ぶのを防ぎます。 + +## 参照 + [\](../../../../docs/framework/configure-apps/file-schema/wcf/net-tcp.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuring-the-wpa--service-for-use-with-wcf.md b/docs/framework/wcf/feature-details/configuring-the-wpa--service-for-use-with-wcf.md new file mode 100644 index 00000000000..9632f5d92f8 --- /dev/null +++ b/docs/framework/wcf/feature-details/configuring-the-wpa--service-for-use-with-wcf.md @@ -0,0 +1,108 @@ +--- +title: "Windows Communication Foundation で使用するための Windows プロセス アクティブ化サービスを設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1d50712e-53cd-4773-b8bc-a1e1aad66b78 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# Windows Communication Foundation で使用するための Windows プロセス アクティブ化サービスを設定する +ここでは、Windows プロセス アクティブ化サービス \(WAS: Windows Process Activation Service\) を [!INCLUDE[wv](../../../../includes/wv-md.md)] で構成して、HTTP ネットワーク プロトコルでは通信しない [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをホストするために必要な手順について説明します。以降の各セクションで、この構成に関する手順について概説します。 + +- 必要な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アクティベーション コンポーネントをインストール \(またはそのインストールを確認\) します。 + +- 使用するネットワーク プロトコル バインドを含む WAS サイトを作成するか、新しいプロトコル バインドを既存のサイトに追加します。 + +- サービスをホストするアプリケーションを作成し、必要なネットワーク プロトコルを使用するようにそのアプリケーションを設定します。 + +- 非 HTTP エンドポイントを公開する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを構築します。 + +## 非 HTTP バインドを使用したサイトの構成 + WAS で非 HTTP バインドを使用するには、サイト バインドを WAS 構成に追加する必要があります。WAS の構成ストアは、%windir%\\system32\\inetsrv\\config ディレクトリにある applicationHost.config ファイルです。この構成ストアは、WAS と IIS 7.0 の両方で共有されます。 + + applicationHost.config は、任意の標準テキスト エディター \(メモ帳など\) で開くことが可能な XML テキスト ファイルです。ただし、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] コマンド ライン構成ツール \(appcmd.exe\) の方が、非 HTTP サイトのバインディングの追加には適しています。 + + 次のコマンドは、appcmd.exe を使用して、既定の Web サイトに net.tcp サイト バインドを追加します \(このコマンドは 1 行で入力します\)。 + +``` +appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*'] +``` + + このコマンドは、次に示す行を applicationHost.config ファイルに追加することによって、既定の Web サイトに新しい net.tcp バインドを追加します。 + +``` + + + + + //The following line is added by the command. + + + + +``` + +## 非 HTTP プロトコルを使用するためのアプリケーションの設定 + 個々のネットワーク プロトコルは、アプリケーション レベルで有効\/無効を切り替えることができます。次のコマンドは、`Default Web Site` で動作するアプリケーションに対して、HTTP プロトコルと net.tcp プロトコルの両方を有効にする方法を示しています。 + +``` +appcmd.exe set app "Default Web Site/appOne" /enabledProtocols:net.tcp +``` + + 有効にするプロトコルのリストは、ApplicationHost.config に保存されたサイトの XML 構成の \ 要素に設定することもできます。 + + 次の applicationHost.config からの XML コードは、HTTP プロトコルと非 HTTP プロトコルの両方にバインドされたサイトを示しています。非 HTTP プロトコルのサポートに必要な追加の構成は、コメントで付記されています。 + +``` + + + + + + + //The following two lines are added by the command. + + + + + + + + + + + +``` + + 非 HTTP アクティブ化の WAS を使用するサービスをアクティブ化しようとしたときに、WAS をインストールおよび構成していない場合、次のエラーが表示されることがあります。 + +```Output +[InvalidOperationException: The protocol 'net.tcp' does not have an implementation of HostedTransportConfiguration type registered.]System.ServiceModel.AsyncResult.End(IAsyncResult result) +15778592 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +15698937 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +265 System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +227 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171 +``` + + このエラーが表示された場合は、非 HTTP アクティブ化の WAS が適切にインストールおよび構成されていることを確認してください。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : WCF アクティブ化コンポーネントをインストールして設定する](../../../../docs/framework/wcf/feature-details/how-to-install-and-configure-wcf-activation-components.md). + +## 非 HTTP のアクティブ化で WAS を使用する WCF サービスの構築 + WAS をインストールして構成する手順 \(「[方法 : WCF アクティブ化コンポーネントをインストールして設定する](../../../../docs/framework/wcf/feature-details/how-to-install-and-configure-wcf-activation-components.md)」を参照\) を実行した後の、アクティブ化で WAS を使用するためのサービスの構成は、IIS でホストされるサービスの構成に似ています。 + + WAS によりアクティブ化される [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの構築の詳細な手順については、「[方法 : WAS で WCF サービスをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-was.md)」を参照してください。 + +## 参照 + [Windows プロセス アクティブ化サービスでのホスティング](../../../../docs/framework/wcf/feature-details/hosting-in-windows-process-activation-service.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuring-timeout-values-on-a-binding.md b/docs/framework/wcf/feature-details/configuring-timeout-values-on-a-binding.md new file mode 100644 index 00000000000..ef1f748b717 --- /dev/null +++ b/docs/framework/wcf/feature-details/configuring-timeout-values-on-a-binding.md @@ -0,0 +1,102 @@ +--- +title: "バインディングでのタイムアウト値の構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b5c825a2-b48f-444a-8659-61751ff11d34 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# バインディングでのタイムアウト値の構成 +WCF バインディングには、さまざまなタイムアウト設定が用意されています。 これらのタイムアウト設定を正しく行うことによって、サービスのパフォーマンスが向上するだけでなく、サービスの操作性とセキュリティにも役立ちます。 WCF バインディングで使用できるタイムアウトは次のとおりです。 + +1. OpenTimeout + +2. CloseTimeout + +3. SendTimeout + +4. ReceiveTimeout + +## WCF バインディングのタイムアウト + このトピックで説明する各設定は、バインディング自体に対して、コードまたは構成を使用して適用されます。 次のコードは、自己ホスト型サービスのコンテキストで、WCF バインディングのタイムアウトをプログラムで設定する方法を示します。 + +```csharp +public static void Main() + { + Uri baseAddress = new Uri("http://localhost/MyServer/MyService"); + + try + { + ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService)); + + WSHttpBinding binding = new WSHttpBinding(); + binding.OpenTimeout = new TimeSpan(0, 10, 0); + binding.CloseTimeout = new TimeSpan(0, 10, 0); + binding.SendTimeout = new TimeSpan(0, 10, 0); + binding.ReceiveTimeout = new TimeSpan(0, 10, 0); + + serviceHost.AddServiceEndpoint("ICalculator", binding, baseAddress); + serviceHost.Open(); + + // The service can now be accessed. + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + + } + catch (CommunicationException ex) + { + // Handle exception ... + } + } + +``` + + 次の例は、構成ファイル内でバインディングのタイムアウトを構成する方法を示します。 + +```xml + + + + + + + + + + +``` + + これらの設定の詳細については、 クラスに関するドキュメントを参照してください。 + +### サービス側のタイムアウト + クライアント側のタイムアウトは次のとおりです。 + +1. SendTimeout: OperationTimeout の初期化に使用します。要求\/応答サービス操作の応答メッセージの受信を含め、メッセージの送信プロセス全体を制御します。 このタイムアウトは、コールバック コントラクト メソッドから応答メッセージを送信するときにも適用されます。 + +2. OpenTimeout: 明示的なタイムアウト値が指定されていない場合、チャネルを開くときに使用します。 + +3. CloseTimeout: 明示的なタイムアウト値が指定されていない場合、チャネルを閉じるときに使用します。 + +4. ReceiveTimeout: 使用されません。 + +### サービス側のタイムアウト + サービス側のタイムアウトは次のとおりです。 + +1. SendTimeout、OpentTimeout、CloseTimeout は、クライアント側と同じです。 + +2. ReceiveTimeout: セッションがタイムアウトするまでのアイドル状態の時間を制御するセッション アイドル タイムアウトを初期化するために Service Framework Layer で使用します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuring-workflowservicehost.md b/docs/framework/wcf/feature-details/configuring-workflowservicehost.md new file mode 100644 index 00000000000..75b9ddc83eb --- /dev/null +++ b/docs/framework/wcf/feature-details/configuring-workflowservicehost.md @@ -0,0 +1,37 @@ +--- +title: "WorkflowServiceHost の構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d8e961cb-0ef5-4f8c-8a25-e76ae6334fed +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# WorkflowServiceHost の構成 +このセクションには、構成に含まれる クラスの各種機能を構成する方法について簡単に説明する、操作方法についての短いトピックが含まれます。 これらのトピックでは、ワークフロー サービス固有の構成について説明しています。その他のすべての構成は、通常の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと同じ方法で構成されます。 + +## このセクションの内容 + [WorkflowServiceHost を使用して永続性を構成する方法](../../../../docs/framework/wcf/feature-details/how-to-configure-persistence-with-workflowservicehost.md) + を使用して、ワークフロー サービスに永続性を構成する方法を説明します。 + + [方法: WorkflowServiceHost を使用して追跡を構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-tracking-with-workflowservicehost.md) + を使用して、ワークフロー サービスにワークフロー追跡を構成する方法を説明します。 + + [WorkflowServiceHost を使用してアイドル動作を構成する方法](../../../../docs/framework/wcf/feature-details/how-to-configure-idle-behavior-with-workflowservicehost.md) + を使用して、ワークフロー サービスのアイドル動作を構成する方法を説明します。 + + [ワークフロー サービスの未処理の例外動作を構成する方法](../../../../docs/framework/wcf/feature-details/config-workflow-unhandled-exception-workflowservicehost.md) + を使用して、ワークフロー サービスの未処理の例外動作を構成する方法を説明します。 + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [ワークフロー サービスのホストの概要](../../../../docs/framework/wcf/feature-details/hosting-workflow-services-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/configuring-ws-atomic-transaction-support.md b/docs/framework/wcf/feature-details/configuring-ws-atomic-transaction-support.md new file mode 100644 index 00000000000..b67befcc79d --- /dev/null +++ b/docs/framework/wcf/feature-details/configuring-ws-atomic-transaction-support.md @@ -0,0 +1,130 @@ +--- +title: "WS-AtomicTransaction サポートの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WS-AT プロトコル [WCF], WS-AtomicTransaction の構成" +ms.assetid: cb9f1c9c-1439-4172-b9bc-b01c3e09ac48 +caps.latest.revision: 31 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 31 +--- +# WS-AtomicTransaction サポートの構成 +ここでは、WS\-AtomicTransaction \(WS\-AT\) 構成ユーティリティを使用して WS\-AT サポートを構成する方法について説明します。 + +## WS\-AT 構成ユーティリティの使用 + WS\-AT 構成ユーティリティ \(wsatConfig.exe\) は、WS\-AT 設定の構成に使用されます。 WS\-AT プロトコル サービスを有効にするには、この構成ユーティリティを使用して、WS\-AT の HTTPS ポートを構成し、X.509 証明書をその HTTPS ポートにバインドし、証明書のサブジェクト名または拇印を指定して、承認されたパートナーの証明書を構成する必要があります。 この構成ユーティリティでは、トレース モードを選択して、送信トランザクションの既定のタイムアウト値と受信トランザクションの最大タイムアウト値を設定することもできます。 + + このツールの機能は、コンポーネント サービス管理コンソールで Microsoft 管理コンソール \(MMC\) のプロパティ ページ スナップインを使用するか、またはコマンド ライン ウィンドウから操作できます。 WS\-AT サポートをローカル コンピューターで構成するには、コマンド ライン ウィンドウを使用し、ローカル コンピューターとリモート コンピューターの両方で設定を構成するには、MMC スナップインを使用します。 + + コマンド ライン ウィンドウは、Windows SDK のインストール場所の "%WINDIR%\\Microsoft.NET\\Framework\\v3.0\\Windows Communication Foundation" で使用できます。 + + コマンド ライン ツール[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WS\-AtomicTransaction 構成ユーティリティ \(wsatConfig.exe\)](../../../../docs/framework/wcf/ws-atomictransaction-configuration-utility-wsatconfig-exe.md)」を参照してください。 + + [!INCLUDE[wxp](../../../../includes/wxp-md.md)] または [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] を実行している場合に、MMC スナップインにアクセスするには、**\[コントロール パネル\]、\[管理ツール\]、\[コンポーネント サービス\]** の順にクリックし、**\[マイ コンピューター\]** を右クリックして、**\[プロパティ\]** を選択します。 この場所では、Microsoft 分散トランザクション コーディネーター \(MSDTC\) を構成することもできます。 構成で使用できるオプションは、**\[WS\-AT\]** タブにグループ化されています。 Windows Vista または [!INCLUDE[lserver](../../../../includes/lserver-md.md)] を実行している場合に、MMC スナップインにアクセスするには、**\[スタート\]** ボタンをクリックし、**\[検索\]** ボックスに「`dcomcnfg.exe`」と入力します。 MMC が開いている場合は、**\[マイ コンピューター\]、\[分散トランザクション コーディネーター\]** ノードの順にクリックし、\[ローカル DTC\] ノードを右クリックして、**\[プロパティ\]** をクリックします。 構成で使用できるオプションは、**\[WS\-AT\]** タブにグループ化されています。 + + MMC スナップイン[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WS\-AtomicTransaction 構成 MMC スナップイン](../../../../docs/framework/wcf/ws-atomictransaction-configuration-mmc-snap-in.md)」を参照してください。 + + ツールのユーザー インターフェイスを有効にするには、WsatUI.dll ファイルを登録しておく必要があります。このファイルは、次のパスにあります。 + + %PROGRAMFILES%\\Microsoft SDKs\\Windows\\v6.0\\Bin + + 製品を登録するには、\[コマンド プロンプト\] ウィンドウから次のコマンドを実行します。 + + `regasm.exe /codebase WsatUI.dll` + +## WS\-AT の有効化 + ポート 443 と、ローカル コンピューター ストアにインストールされている秘密キーを持つ X.509 証明書を使用して、MSDTC 内部で WS\-AT プロトコル サービスを有効にするには、wsatConfig.exe ツールを使用して次のコマンドを実行します。 + + `WsatConfig.exe –network:enable –port:8443 –endpointCert: -accountsCerts: -restart` + + 個々のパラメーターを、ユーザーの環境に適した値に置き換えます。 + + MSDTC 内部で WS\-AT プロトコル サービスを無効にするには、wsatConfig.exe ツールを使用して次のコマンドを実行します。 + + `WsatConfig.exe –network:disable -restart` + +## 2 台のコンピューター間での信頼の確立 + WS\-AT プロトコル サービスでは、管理者が、分散トランザクションに参加する個々のアカウントを明示的に承認する必要があります。 2 台のコンピューターの管理者である場合は、両方のコンピューターを構成して、相互の信頼関係を確立することができます。それには、コンピューター間で適切な証明書を交換し、その証明書を適切な証明書ストアにインストールし、wsatConfig.exe ツールを使用して各コンピューターの証明書をお互いの承認済み参加者の証明書リストに追加します。 この手順は、WS\-AT を使用する 2 台のコンピューター間で分散トランザクションを実行するために必要です。 + + 次の例では、A と B という 2 台のコンピューター間で信頼を確立する手順を示します。 + +### 証明書の作成とエクスポート + この手順では、MMC 証明書スナップインを使用する必要があります。 このスナップインにアクセスするには、\[スタート\] ボタンをクリックして \[ファイル名を指定して実行\] をクリックし、入力ボックスに「mmc」と入力して \[OK\] をクリックします。 次に、**\[コンソール1\]** ウィンドウで **\[ファイル\]** メニューの **\[スナップインの追加と削除\]** をクリックし、\[追加\] をクリックして、**\[利用できるスタンドアロン スナップイン\]** ボックスの一覧の **\[証明書\]** をクリックします。 最後に、管理先として **\[コンピューター アカウント\]** をクリックし、**\[OK\]** をクリックします。 **\[証明書\]** ノードがスナップイン コンソールに表示されます。 + + 信頼を確立するために必要な証明書は、あらかじめ用意されている必要があります。 以下の手順に進む前に新しい証明書を作成してインストールする方法については、「[方法: 開発時に WCF の一時的なクライアント証明書を作成およびインストールする](http://go.microsoft.com/fwlink/?LinkId=158925)」を参照してください。 + +1. コンピューター A で、MMC 証明書スナップインを使用して、既存の証明書 \(certA\) を LocalMachine\\MY \(Personal Node\) ストアと LocalMachine\\ROOT \(信頼されたルート証明機関のノード\) ストアにインポートします。 証明書を特定のノードにインポートするには、ノードを右クリックして、**\[すべてのタスク\]、\[インポート\]** の順にクリックします。 + +2. コンピューター B で、MMC 証明書スナップインを使用して、秘密キーを持つ証明書 certB を作成するか取得し、LocalMachine\\MY \(Personal Node\) ストアと LocalMachine\\ROOT \(信頼されたルート証明機関のノード\) ストアにインポートします。 + +3. certA の秘密キーをファイルにエクスポートします \(エクスポートしていない場合\)。 + +4. certB の秘密キーをファイルにエクスポートします \(エクスポートしていない場合\)。 + +### コンピューター間での相互の信頼関係の確立 + +1. コンピューター A で、certB のファイルを LocalMachine\\MY ストアと LocalMachine\\ROOT ストアにインポートします。 これによって、コンピューター A が certB を信頼して通信することを宣言します。 + +2. コンピューター B で、certA のファイルを LocalMachine\\MY ストアと LocalMachine\\ROOT ストアにインポートします。 これによって、コンピューター B が certA を信頼して通信することを示します。 + + この手順が完了すると、2 台のコンピューター間に信頼が確立されるので、WS\-AT を使用して相互に通信するように構成できます。 + +### MSDTC での証明書の使用の構成 + WS\-AT プロトコル サービスは、クライアントとサーバーの両方として機能するので、このサービスは、受信接続のリッスンと送信接続の開始を実行する必要があります。 このため、外部の通信相手と通信するときに使用する証明書と、受信接続を受け入れるときに承認する証明書を MSDTC に設定する必要があります。 + + これを構成するには、MMC WS\-AT スナップインを使用します。 このツール[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WS\-AtomicTransaction 構成 MMC スナップイン](../../../../docs/framework/wcf/ws-atomictransaction-configuration-mmc-snap-in.md)」を参照してください。 次の手順では、MSDTC を実行している 2 台のコンピューター間に信頼を確立する方法を説明します。 + +1. コンピューター A の設定を構成します。 \[エンドポイント証明書\] に certA を選択します。 \[承認された証明書\] に certB を選択します。 + +2. コンピューター B の設定を構成します。 \[エンドポイント証明書\] に certB を選択します。 \[承認された証明書\] に certA を選択します。 + +> [!NOTE] +> 一方のコンピューターからもう一方のコンピューターにメッセージを送信する場合、送信側は、受信側の証明書のサブジェクト名と受信側のコンピューターの名前が一致することを確認します。 これらが一致しないと、証明書の確認が失敗し、2 台のコンピューターは通信できなくなります。 +> +> ドメインに参加しているコンピューターの名前は完全修飾ドメイン名です。 既定では、ワークグループ上のコンピューターの名前は、コンピューターの NetBIOS 名です。 ただし、2 台のコンピューター間で使用されている接続用のドメイン ネーム システム \(DNS\) サフィックスが存在する場合は、名前に DNS サフィックス含めることもできます。 +> +> ワークグループ コンピューターがドメインに参加するときなどにコンピューターの名前を変更した場合は、証明書を再発行するか、DNS サフィックスを手動で構成する必要があります。 + +## セキュリティ + 一部の MSDTC と WS\-AT 関連の設定はそれぞれ、レジストリ HKLM\\Software\\Microsoft\\MSDTC と HKLM\\Software\\Microsoft\\WSAT に格納されるので、必ずこのレジストリ キーをセキュリティで保護し、管理者だけがそのキーに書き込めるようにします。 レジストリ エディターで、セキュリティで保護するキーを右クリックし、**\[アクセス許可\]** をクリックして該当するアクセス制御を設定します。 重要なキーを特権の低いユーザーに対して読み取り専用にしておくことが、システムのセキュリティと整合性を確保するために重要です。 + + MSDTC を展開する場合、管理者は、すべての MSDTC データの交換がセキュリティで保護されるようにする必要があります。 ワークグループの展開では、トランザクションのインフラストラクチャを悪質なユーザーから隔離してください。クラスターの展開では、クラスター レジストリをセキュリティで保護してください。 + +## トレース + WS\-AT プロトコル サービスは、[WS\-AtomicTransaction 構成 MMC スナップイン](../../../../docs/framework/wcf/ws-atomictransaction-configuration-mmc-snap-in.md) ツールを使用して有効化および管理できる、トランザクション固有の統合トレースをサポートします。 トレースには、特定のトランザクションに参加した時刻、トランザクションが終了状態に到達した時刻、各トランザクション参加で受け取った結果などを示すデータを含めることができます。 すべてのトレースは、[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) ツールを使用して表示できます。 + + WS\-AT プロトコル サービスは、ETW トレース セッションを通じて統合 ServiceModel トレースもサポートします。 これにより、既存のトランザクション トレースに加えて、より詳細な通信固有のトレースが得られます。 これらの追加トレースを有効にするには、次の手順を実行します。 + +1. **\[スタート\] ボタン、\[ファイル名を指定して実行\]** の順にクリックし、入力ボックスに「regedit」と入力して、**\[OK\]** をクリックします。 + +2. **レジストリ エディター**の左ペインで、Hkey\_Local\_Machine\\SOFTWARE\\Microsoft\\WSAT\\3.0\\ に移動します。 + +3. 右ペインで `ServiceModelDiagnosticTracing` 値を右クリックし、**\[変更\]** をクリックします。 + +4. **\[値のデータ\]** 入力ボックスに、次の有効な値のいずれかを入力し、有効にするトレース レベルを指定します。 + +- 0 : オフ + +- 1 : クリティカル + +- 3 : エラー \( 既定値\) + +- 7 : 警告 + +- 15 : 情報 + +- 31 : 詳細 + +## 参照 + [WS\-AtomicTransaction 構成ユーティリティ \(wsatConfig.exe\)](../../../../docs/framework/wcf/ws-atomictransaction-configuration-utility-wsatconfig-exe.md) + [WS\-AtomicTransaction 構成 MMC スナップイン](../../../../docs/framework/wcf/ws-atomictransaction-configuration-mmc-snap-in.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/content-based-correlation.md b/docs/framework/wcf/feature-details/content-based-correlation.md new file mode 100644 index 00000000000..2549321d747 --- /dev/null +++ b/docs/framework/wcf/feature-details/content-based-correlation.md @@ -0,0 +1,73 @@ +--- +title: "コンテンツ ベースの相関関係。 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f46a2b68-8d24-4122-bbee-9573fc3f9fb4 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# コンテンツ ベースの相関関係。 +ワークフロー サービスがクライアントや他のサービスと通信するときに、交換されるメッセージに、特定のインスタンスに一意に関連付けられたデータが含まれることがよくあります。 コンテンツ ベースの相関関係では、顧客番号や注文 ID などのメッセージ内のデータを使用して、適切なワークフロー インスタンスにメッセージをルーティングします。 このトピックでは、コンテンツ ベースの相関関係をワークフロー内で使用する方法について説明します。 + +## コンテンツ ベースの相関関係の使用 + コンテンツ ベースの相関関係は、単一のクライアントによってアクセスされる複数のメソッドがワークフロー サービスにあり、交換されるメッセージ内の一部のデータによって目的のインスタンスが識別される場合に使用されます。 + +> [!NOTE] +> コンテンツ ベースの相関関係は、コンテキスト交換のバインドがサポート対象のものではないためにコンテキスト相関関係を使用できない場合に便利です。 コンテキスト相関関係[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[コンテキスト交換](../../../../docs/framework/wcf/feature-details/context-exchange-correlation.md)」を参照してください。 + + これらの通信で使用される各メッセージ アクティビティでは、インスタンスを一意に識別するメッセージ内のデータの場所を指定する必要があります。 これを行うには、 または を使用して を指定し、インスタンスを一意に識別するデータを求めるクエリをメッセージに対して実行します。 + +> [!WARNING] +> インスタンスの識別に使用されるデータは、相関関係キーにハッシュされます。 相関関係による関連付けで使用するデータは必ず、一意にする必要があります。一意でない場合は、ハッシュされたキーで競合が発生し、誤った場所にメッセージがルーティングされる可能性があります。 たとえば、顧客名だけに基づいた関連付けでは、同じ名前の顧客が複数存在する場合があるため、競合が発生する可能性があります。 メッセージの関連付けに使用するデータの一部として、コロン \(`:`\) を使用することはできません。コロンは、メッセージ クエリのキーと値の区切り文字として既に使用されており、後でハッシュされる文字列に含まれるためです。 + + 次の例では、ワークフロー サービスの最初の または が `OrderId` を返します。これは、ワークフロー サービス内の後続の アクティビティへの呼び出しで、クライアントから再び渡されます。 + + [!code-csharp[CFX_ContentCorrelation#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_contentcorrelation/cs/program.cs#1)] + + 前の例は、 によって初期化される、コンテンツ ベースの相関関係を示しています。 は、このサービスに送信される後続のメッセージを特定するために使用されるデータが `OrderId` であることを指定します。 + + [!code-csharp[CFX_ContentCorrelation#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_contentcorrelation/cs/program.cs#2)] + + ワークフロー内で に続く アクティビティは、 によって初期化された関連付けに従います。 どちらのアクティビティも同じ を共有しますが、それぞれには、その特定のメッセージ内のどこに対象データがあるかを指定する独自の および があります。 関連付けを初期化するアクティビティでは、この プロパティで指定され、後続のすべての アクティビティについては、 プロパティを使用して指定されます。 + + [!code-csharp[CFX_ContentCorrelation#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_contentcorrelation/cs/program.cs#3)] + + コンテンツ ベースの相関関係は、すべてのメッセージ アクティビティ \(\) によって、メッセージの一部としてデータが送信されるときに初期化できます。 特定のデータがメッセージの一部として送信されない場合は、明示的に アクティビティを使用することで初期化できます。 データの複数の部分で一意にメッセージを識別する必要がある場合は、複数のクエリを に追加できます。 これらの例では、`CorrelatesWith` または `CorrelationHandle` プロパティを使用して、 が各アクティビティに明示的に提供されていますが、すべてが `OrderId` で相関するこの例のように、ワークフロー全体で必要な関連付けが 1 つのみである場合は、 で提供される、暗黙の関連付けハンドル管理で十分です。 + +## InitializeCorrelation アクティビティの使用 + 前の例では、 アクティビティを通じて、`OrderId` が呼び出し元に送信され、このアクティビティで関連付けが初期化されました。 同じ動作を、 アクティビティを使用して実現することもできます。 アクティビティは、 と、メッセージを適切なインスタンスに割り当てるために使用する項目を表す辞書を受け取ります。 アクティビティを前のサンプルで使用するには、 アクティビティから を削除し、 アクティビティを使用して、関連付けを初期化します。 + + [!code-csharp[CFX_ContentCorrelation#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_contentcorrelation/cs/program.cs#4)] + + その後、 アクティビティは、データを保持する変数が挿入された後、かつ、初期化された との関連付けを行う アクティビティの前にワークフローで使用されます。 + + [!code-csharp[CFX_ContentCorrelation#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_contentcorrelation/cs/program.cs#5)] + +## ワークフロー デザイナーを使用した XPath クエリの構成 + 前の例では、メッセージ クエリで使用されているアクティビティおよび XPath クエリがコードで指定されています。 [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] のワークフロー デザイナーでは、XPath の生成を、コンテンツ ベースの相関関係の `DataContract` 型から行うための機能も提供されています。 前の例に示した 1 つ目の XPath 構成は、 用に構成されていました。 + + [!code-csharp[CFX_ContentCorrelation#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_contentcorrelation/cs/program.cs#2)] + + XPath をワークフロー デザイナーでメッセージ アクティビティ用に構成するには、ワークフロー デザイナーでアクティビティを選択します。 前の例で示したように、アクティビティが関連付けの初期化を行っている場合は、**\[プロパティ\]** ウィンドウの **CorrelationInitializers** プロパティの省略記号ボタンをクリックします。 **\[関連付け初期化子の追加\]** ダイアログ ウィンドウが表示されます。 このダイアログ ボックスで、関連付けの種類を指定し、関連付けに使用する内容を選択できます。 変数を **\[初期化子の追加\]** ボックスで指定し、関連付けの種類と関連付けに使用するデータをダイアログ ボックスの **\[XPath クエリ\]** セクションで選択します。 + + ![CorrelationInitializer ダイアログ](../../../../docs/framework/wcf/feature-details/media/correlationinitializerdlg.jpg "CorrelationInitializerDlg") + + 前の例に示した 2 つ目の XPath クエリは、 アクティビティで構成されました。 + + [!code-csharp[CFX_ContentCorrelation#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_contentcorrelation/cs/program.cs#3)] + + 関連付けの初期化を行わないメッセージ アクティビティ用の XPath クエリを構成するには、ワークフロー デザイナーでアクティビティを選択し、**\[プロパティ\]** ウィンドウの **CorrelatesOn** プロパティの省略記号ボタンをクリックします。 **\[CorrelatesOn の定義\]** ダイアログ ウィンドウが表示されます。 + + ![[CorrelatesOn の定義]](../../../../docs/framework/wcf/feature-details/media/correlatesondialog.jpg "CorrelatesOnDialog") + + このダイアログで を指定し、**\[XPath クエリ\]** 一覧から項目を選択して XPath クエリをビルドします。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/context-exchange-correlation.md b/docs/framework/wcf/feature-details/context-exchange-correlation.md new file mode 100644 index 00000000000..badc8317056 --- /dev/null +++ b/docs/framework/wcf/feature-details/context-exchange-correlation.md @@ -0,0 +1,110 @@ +--- +title: "コンテキスト交換の相関関係 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1e2852be-3601-45ae-b507-ccc465d45c60 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# コンテキスト交換の相関関係 +コンテキスト相関関係は、[.NET コンテキスト交換プロトコルの仕様](http://go.microsoft.com/fwlink/?LinkId=166059)で説明されているコンテキスト交換メカニズムに基づきます。コンテキスト相関関係では、既知のコンテキスト ヘッダーまたはクッキーを使用して、メッセージを正しいインスタンスに関連付けます。コンテキスト相関関係を使用するには、 などのコンテキスト ベースのバインディングが、 に提供されるエンドポイントで使用される必要があります。このトピックでは、メッセージング アクティビティを指定したコンテキスト相関関係をワークフロー サービス内で使用する方法について説明します。 + +## コンテキスト相関関係の使用 + クライアントがワークフロー サービスに繰り返し呼び出しを行う必要があり、そのサービスがコンテキスト バインディングの 1 つを使用してホストされている場合に、コンテキスト相関関係が使用されます。この種類の相関関係は、ワークフロー サービス内で \/ のペアによって初期化されます。コンテキストは、応答と共にクライアントに送り返されます。その後、クライアントによって、サービスへの以降の呼び出しにアタッチされます。 + +### ワークフロー サービス内でのコンテキスト相関関係の構成 + コンテキスト相関関係は、最初の受信メッセージに応答する アクティビティと関連付けられている を使用して初期化されます。次の例では、コンテキスト相関関係を初期化するように が構成されています。 + +```csharp +Variable Item = new Variable(); +Variable OrderHandle = new Variable(); + +Receive StartOrder = new Receive +{ + CanCreateInstance = true, + ServiceContractName = "IOrderService", + OperationName = "StartOrder" +}; + +SendReply ReplyToStartOrder = new SendReply +{ + Request = StartOrder, + CorrelationInitializers = + { + new ContextCorrelationInitializer + { + CorrelationHandle = OrderHandle + } + } +}; +``` + +> [!NOTE] +> この例では、実際にはコンテキストの関連付けおよび要求\/応答の相関関係の 2 種類の相関関係が使用されています。コンテキストの相関関係は、クライアントからの呼び出しが適切なインスタンスにルーティングされるように使用されます。要求\/応答の相関関係は、これらのアクティビティによってモデル化される双方向の操作を実装するために、 アクティビティおよび アクティビティで使用されます。この例では、コンテキストの相関関係のみが明示的に構成され、\/ ペアは、 の暗黙の 管理で提供される、既定の要求\/応答の相関関係を使用しています。ワークフロー デザイナーで **ReceiveAndSendReply** アクティビティ テンプレートを使用する場合、要求\/応答の相関関係は明示的に構成されます。要求\/応答の相関関係および暗黙の関連付けハンドル管理[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[要求\/応答](../../../../docs/framework/wcf/feature-details/request-reply-correlation.md)」および「[相関関係の概要](../../../../docs/framework/wcf/feature-details/correlation-overview.md)」を参照してください。**ReceiveAndSendReply** アクティビティ テンプレート[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ReceiveAndSendReply](../Topic/ReceiveAndSendReply%20Template%20Designer.md)」を参照してください。 + + ワークフロー サービス内の以降の アクティビティは、前の例の で初期化された を参照できます。 + +```csharp +Receive AddItem = new Receive +{ + ServiceContractName = "IOrderService", + OperationName = "AddItem", + CorrelatesWith = OrderHandle +}; +``` + + エンドポイントは、 で、 などのコンテキスト ベースのバインディングを使用するように構成されます。 + +```xml + +``` + +### ワークフロー クライアント内でのコンテキスト相関関係の構成 + クライアントが別のワークフローである場合は、コンテキスト相関関係をクライアントでも構成する必要があります。クライアント ワークフローでは、ワークフロー サービスへの最初の呼び出しを行う \/ ペアの が、 で構成される必要があります。 + +```csharp +Variable cchandle = new Variable(); +Send request = new Send +{ + // Activity configuration omitted. +}; + +ReceiveReply reply = new ReceiveReply +{ + Request = request, + CorrelationInitializers = + { + new ContextCorrelationInitializer + { + CorrelationHandle = cchandle + } + } +}; +``` + + 相関関係が初期化されると、以降の アクティビティでは、 を使用して、同じサービス インスタンスでメソッドを呼び出すことができます。 + +```csharp +Send request2 = new Send +{ + CorrelatesWith = cchandle, + // Remaining activity configuration omitted. +}; +``` + + これらの例では、コンテキスト相関関係が明示的に構成されています。クライアント ワークフローが でもホストされていない場合は、アクティビティが アクティビティ内に含まれていない限り、相関関係を明示的に構成する必要があります。コンテキスト相関関係[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[NetContextExchangeCorrelation](http://msdn.microsoft.com/ja-jp/93c74a1a-b9e2-46c6-95c0-c9b0e9472caf)」を参照してください。 + + ワークフロー サービスへの呼び出しを行うクライアントがワークフローではない場合でも、ワークフロー サービスへの最初の呼び出しで返されたコンテキストを明示的に渡す限り、呼び出しを繰り返して行うことができます。サービス参照を [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] ストアに追加することでプロキシが生成され、このコンテキストが既定で渡されます。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/context-exchange-protocol.md b/docs/framework/wcf/feature-details/context-exchange-protocol.md new file mode 100644 index 00000000000..378e82c4a9a --- /dev/null +++ b/docs/framework/wcf/feature-details/context-exchange-protocol.md @@ -0,0 +1,78 @@ +--- +title: "コンテキスト交換プロトコル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3dfd38e0-ae52-491c-94f4-7a862b9843d4 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# コンテキスト交換プロトコル +このセクションでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)][!INCLUDE[netfx35_long](../../../../includes/netfx35-long-md.md)] リリースで導入されたコンテキスト交換プロトコルについて説明します。このプロトコルを使用すると、クライアント チャネルはサービスから送られたコンテキストを受け入れ、以降はそのコンテキストを、同じクライアント チャネル インスタンス経由でそのサービスに送信されるすべての要求に適用できます。コンテキスト交換プロトコルを実装されると、2 つの機構 \(HTTP クッキーまたは SOAP ヘッダー\) のいずれか 1 つを使用し、サーバーとクライアント間でコンテキストを伝達できます。 + + コンテキスト交換プロトコルは、カスタム チャネル層に実装されます。チャネルでは プロパティを使用して、アプリケーション層とコンテキストを送受信します。エンドポイント間の転送については、コンテキストの値は、チャネル層で SOAP ヘッダーとしてシリアル化されるか、HTTP 要求および応答を表すメッセージ プロパティとの間で双方向に変換されます。後者の場合、下位のチャネル層のいずれか 1 つで、HTTP 要求および応答のメッセージ プロパティをそれぞれ HTTP クッキーとの間で双方向に変換する必要があります。コンテキスト交換に使用する機構の選択は、 プロパティを使用します。有効な値は、`HttpCookie` または `SoapHeader` です。 + + クライアントでは、チャネルのインスタンスは チャネル プロパティの設定値に基づいて 2 つのモードで動作します。 + +## モード 1: チャネル コンテキスト管理 + これは、 を `true` に設定した場合の既定のモードです。このモードでは、コンテキスト チャネルはコンテキストを管理し、その有効期間中、コンテキストをキャッシュします。コンテキストは、`GetContext` メソッドを呼び出して、`IContextManager` チャネル プロパティ経由でチャネルから取得できます。チャネルを開く前に、チャネル プロパティで `SetContext` メソッドを呼び出して、事前に特定のコンテキストで初期化できます。チャネルは一度コンテキストで初期化すると、リセットできません。 + + このモードのインバリアントの一覧を次に示します。 + +- チャネルを開いた後に `SetContext` を使用してコンテキストをリセットしようとすると、 がスローされます。 + +- 送信メッセージで を使用してコンテキストを送信しようとすると、 がスローされます。 + +- 特定のコンテキストを持つサーバーからメッセージを受信する場合に、チャネルが既に特定のコンテキストで初期化されていると、 が発生します。 + + > [!NOTE] + > 明示的にコンテキストが設定されていないチャネルを開いている場合に限り、サーバーから初期コンテキストを受信するのが適切です。 + +- 受信メッセージの は常に null です。 + +## モード 2: アプリケーション コンテキスト管理 + これは、 を `false` に設定した場合のモードです。このモードでは、コンテキスト チャネルでコンテキストを管理しません。コンテキストの取得、管理、および適用は、 を使用してアプリケーションで行う必要があります。`GetContext` または `SetContext` を呼び出そうとすると、 が発生します。 + + どちらのモードを選択しても、クライアント チャネル ファクトリは、、および の各メッセージ交換パターンをサポートします。 + + サービスでは、チャネルのインスタンスが、受信メッセージでクライアントから送られたコンテキストを に変換します。これで、アプリケーション層、または呼び出しスタックの上位に位置する他のチャネルから、メッセージ プロパティにアクセスできるようになります。サービス チャネルを使用し、応答メッセージに をアタッチすることによって、クライアントに返される新しいコンテキスト値をアプリケーション層で指定することもできます。このプロパティは、コンテキストを含む SOAP ヘッダーまたは HTTP クッキーに変換されます。どちらに変換されるかは、バイディングの構成によって決まります。サービス チャネル リスナーは、、および の各メッセージ交換パターンをサポートします。 + + コンテキスト交換プロトコルは、コンテキストの伝達に HTTP クッキーを使用しない場合にコンテキスト情報を表す新しい `wsc:Context` SOAP ヘッダーを使用します。コンテキスト ヘッダー スキーマでは、文字列キーと文字列コンテンツを持つ任意の数の子要素を使用できます。コンテキスト ヘッダーの例を次に示します。 + + `` + + `context-2` + + `` + + `HttpCookie` モードの場合、`SetCookie` ヘッダーを使用してクッキーが設定されます。クッキーの名前は `WscContext` です。クッキーの値は、`wsc:Context` ヘッダーの Base64 エンコーディングです。この値は引用符で囲まれます。 + + WS\-Addressing ヘッダーを保護するのと同じ理由により、コンテキスト値は、転送中に変更されないように保護する必要があります。WS\-Addressing ヘッダーは、サービスで要求のディスパッチ先を確認するのに使用されます。したがって、バインディングにメッセージ保護機能がある場合、SOAP レベルかトランスポート レベルのいずれかで `wsc:Context` ヘッダーにデジタル署名するか、署名と暗号化を行う必要があります。HTTP クッキーを使用してコンテキストを伝達する場合は、トランスポート セキュリティを使用して保護する必要があります。 + + サービス エンドポイントでコンテキスト交換プロトコルのサポートを必要とする場合は、公開するポリシーにそのことを明示できます。新たに 2 つのポリシー アサーションが導入され、SOAP レベルでコンテキスト交換プロトコルをサポートしたり、HTTP クッキーのサポートを有効化したりするクライアント要件を示すことができます。このアサーションはサービスのポリシー内に生成されます。生成は次のように、 プロパティの値によって制御します。 + +- の場合は、次のアサーションが生成されます。 + + ``` + + ``` + +- の場合は、次のアサーションが生成されます。 + + ``` + + ``` + +## 参照 + [Web サービス プロトコルの相互運用性ガイド](../../../../docs/framework/wcf/feature-details/web-services-protocols-interoperability-guide.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/contracts.md b/docs/framework/wcf/feature-details/contracts.md new file mode 100644 index 00000000000..f10d6245c96 --- /dev/null +++ b/docs/framework/wcf/feature-details/contracts.md @@ -0,0 +1,78 @@ +--- +title: "コントラクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コントラクト [WCF]" + - "WCF [WCF], コントラクト" + - "Windows Communication Foundation [WCF], コントラクト" +ms.assetid: c8364183-4ac1-480b-804a-c5e6c59a5d7d +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# コントラクト +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] コントラクトを定義および実装する方法について説明します。 サービス コントラクトでは、エンドポイントが外部と何をやりとりするかが指定されます。 具体的には、要求\/応答、一方向、双方向など、基本的なメッセージ交換パターン \(MEP\) に編成された一連のメッセージに関する記述です。 サービス コントラクトがメッセージ交換の論理的に関連したセットであるとすると、サービス操作は単一のメッセージ交換です。 たとえば、`Hello` という操作では、1 つのメッセージを受け取り、呼び出し元があいさつを通知できるようにする必要があり、メッセージを返すことができます \(マナーが悪ければ返さない場合もあり得ます\)。 + + コントラクトおよび [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のその他の中心的概念[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows Communication Foundation の基本概念](../../../../docs/framework/wcf/fundamental-concepts.md)」を参照してください。 ここでは、サービス コントラクトを理解することに重点を置きます。 サービス コントラクトを使用してサービスに接続するクライアントを構築する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WCF クライアントの概要](../../../../docs/framework/wcf/wcf-client-overview.md)」を参照してください。 クライアント チャネル、クライアント アーキテクチャ、およびその他クライアントに関する問題[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[クライアント](../../../../docs/framework/wcf/feature-details/clients.md)」を参照してください。 + +## 概要 + ここでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの設計および実装に関する大まかな概念的位置付けについて説明します。 サブトピックでは、設計と実装の仕様についてより詳しく説明します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションを設計および実装する前に、次の準備をしておくことをお勧めします。 + +- サービス コントラクトの概要、しくみ、および作成方法について理解する。 + +- コントラクトとは、実行時の構成またはホスト環境でサポートされていない可能性のある最小限の要件を記述するものであることを理解する。 + +## サービス コントラクト + サービス コントラクトとは、以下の項目に関する記述です。 + +- サービスでの操作のグループ化 + +- 交換するメッセージに関する操作のシグネチャ + +- 交換するメッセージのデータ型 + +- 操作の場所 + +- サービスとの正常な通信をサポートするために使用するプロトコルとシリアル化形式 + + たとえば、注文情報の種類に関する入力を受け入れ、発注 ID を含めた成功または失敗の情報を返す `CreateOrder` 操作が含まれた発注書コントラクトがあるとします。 このコントラクトには、発注 ID を受け入れ、注文ステータス情報を返す `GetOrderStatus` 操作も含まれている場合があります。 この種のサービス コントラクトの場合、以下を明示します。 + +- 発注書コントラクトが `CreateOrder` 操作と `GetOrderStatus` 操作で構成されていること。 + +- これらの操作によって、入力メッセージと出力メッセージが指定されていること。 + +- これらのメッセージが伝達できるデータ。 + +- メッセージを正常に処理するために必要な通信インフラストラクチャに関する明確な記述。 たとえば、正常な通信を確立するためにセキュリティが必要かどうか、また、どのような形式のセキュリティが必要かなどの詳細を記述します。 + + このような種類の情報を他のさまざまなプラットフォーム上 \(マイクロソフト以外のプラットフォームも含む\) のアプリケーションに伝達するために、XML サービス コントラクトは、[Web Services Description Language \(WSDL\)](http://go.microsoft.com/fwlink/?LinkId=87004) や [XML Schema \(XSD\)](http://go.microsoft.com/fwlink/?LinkId=87005) などの標準 XML 形式で公開されます。 多くのプラットフォームの開発者は、このパブリック コントラクト情報を使用して、サービスと通信できるアプリケーションを作成できます。これは、開発者が仕様の言語を理解しているだけでなく、これらの言語はサービスがサポートするパブリックな形式、書式、およびプロトコルを記述することで相互運用できるように設計されているためです。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がこの種の情報を処理する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メタデータ](../../../../docs/framework/wcf/feature-details/metadata.md)」を参照してください。 + + コントラクトはさまざまな方法で表現できます。ただし、WSDL と XSD は、利用しやすい方法でサービスを記述する優れた言語ではあるものの直接使用するのが難しいため、どのような場合でも、サービス コントラクトの実装ではなく、サービスを記述するだけです。 そのため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションでは、マネージ属性、マネージ インターフェイス、およびマネージ クラスを使用して、サービスの構造の定義と実装の両方を行います。 + + マネージ型で定義されたコントラクトは、特に他のプラットフォーム上のクライアントやその他のサービス実装側が必要とする場合に、メタデータ \(WSDL および XSD\) として変換 \(*エクスポート*とも呼ばれます\) できます。 これにより、どのクライアント アプリケーションに対してもパブリック メタデータを使用して記述できる、簡単なプログラミング モデルが実現します。 基になる SOAP メッセージの詳細 \(トランスポートとセキュリティ関連の情報など\) は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に残しておくことができます。WCF は、サービス コントラクト型システムと XML 型システム間で必要な変換を自動的に実行します。 + + コントラクトの設計[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービス コントラクトの設計](../../../../docs/framework/wcf/designing-service-contracts.md)」を参照してください。 コントラクトの実装[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービス コントラクトの実装](../../../../docs/framework/wcf/implementing-service-contracts.md)」を参照してください。 + + さらに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、メッセージ レベルでサービス コントラクト全体を開発できる機能も備わっています。 メッセージ レベルでサービス コントラクトを開発する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メッセージ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-message-contracts.md)」を参照してください。 SOAP XML 以外でサービスを開発する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[POX アプリケーションとの相互運用性](../../../../docs/framework/wcf/feature-details/interoperability-with-pox-applications.md)」を参照してください。 + +### 要件の階層の理解 + サービス コントラクトは、操作をグループ化し、MEP、メッセージの種類、およびメッセージに格納されているデータ型を指定します。さらに、実装でコントラクトをサポートするために必要な実行時の動作のカテゴリ \(メッセージの暗号化と署名を要求するなど\) を示します。 ただし、サービス コントラクト自体は、これらの要件を満たす方法を正確に指定するわけではなく、これらの要件が必要であることを示すだけです。 暗号化の種類やメッセージに署名する方法は、準拠サービスの実装と構成によって決まります。 + + コントラクトに必要なのは、サービス コントラクトの実装と、動作を追加するための実行時の構成に関するものであるという点に注意してください。 使用するサービスを公開するために満たす必要のある要件のセットは、上記の要件のセットを基に作成されます。 コントラクトが実装の要件を作成しても、実装ではサービスの実行を可能にするために、さらに多くの構成とバインディングを必要とする場合があります。 また、ホスト アプリケーションも、サービス構成とバインディングによって追加されるすべての要件をサポートする必要があります。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービス アプリケーションを設計、実装、構成、およびホストする際には、この追加要件のプロセスに注意することが重要です。 たとえば、コントラクトでセッションをサポートする必要があることが指定されている場合があります。 その場合、コントラクトの要件をサポートするようにバインディングを構成する必要があります。そうしないと、サービス実装は機能しなくなります。 また、サービスが統合 Windows 認証を必要としており、インターネット インフォメーション サービス \(IIS\) でホストされる場合、サービスが存在する Web アプリケーションでは、統合 Windows 認証を有効にし、匿名サポートを無効にしておく必要があります。 各種サービス ホスト アプリケーションの機能と影響[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ホスト](../../../../docs/framework/wcf/feature-details/hosting.md)」を参照してください。 + +## 参照 + [エンドポイント : アドレス、バインディング、およびコントラクト](../../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md) + [サービス コントラクトの設計](../../../../docs/framework/wcf/designing-service-contracts.md) + [サービス コントラクトの実装](../../../../docs/framework/wcf/implementing-service-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/controlling-serialization-and-deserialization-with-serializationbinder.md b/docs/framework/wcf/feature-details/controlling-serialization-and-deserialization-with-serializationbinder.md new file mode 100644 index 00000000000..7c3794c14a9 --- /dev/null +++ b/docs/framework/wcf/feature-details/controlling-serialization-and-deserialization-with-serializationbinder.md @@ -0,0 +1,30 @@ +--- +title: "SerializationBinder を使用したシリアル化および逆シリアル化の制御 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ba8dcecf-acc7-467c-939d-021bbac797d4 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# SerializationBinder を使用したシリアル化および逆シリアル化の制御 +シリアル化中に、フォーマッタは、正しい型およびバージョンのオブジェクトのインスタンスを作成するために必要な情報を送信します。 通常、この情報には、オブジェクトの完全な型名および完全なアセンブリ名が含まれます。 既定では、逆シリアル化でこの情報を使用して、同一のオブジェクトのインスタンスを作成します。 場合によっては、シリアル化するクラスと逆シリアル化するクラスの制御が必要となります。これは、元のクラスが逆シリアル化を実行するコンピューター上に存在していない可能性がある場合、元のクラスがアセンブリ間で移動されている場合、または、サーバー上とクライアント上では異なるバージョンのクラスが必要である場合です。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [シリアル化バインダーの使用](../../../../docs/framework/wcf/samples/usage-of-serialization-binder.md). + +> [!WARNING] +> この機能は、 または を使用してのみ、使用可能です。 + +## SerializationBinder の使用 + は、シリアル化中および逆シリアル化中に使用される実際の型を制御するために使用される抽象クラスです。 シリアル化中および逆シリアル化中に使用される型を制御するには、 の派生クラスを作成し、 System.String, System.String)?qualifyHint=False&autoUpgrade=True メソッドと System.String)?qualifyHint=False&autoUpgrade=True メソッドをオーバーライドします。 System.String, System.String)?qualifyHint=False&autoUpgrade=True メソッドは を受け取り、アセンブリと型名を返します。 System.String)?qualifyHint=False&autoUpgrade=True メソッドはアセンブリと型名を受け取り、 を返します。 + +## 参照 + [シリアル化と逆シリアル化](../../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md) + [シリアル化バインダーの使用](../../../../docs/framework/wcf/samples/usage-of-serialization-binder.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/converting-a-nettcpbinding-application-to-a-peer-channel-application.md b/docs/framework/wcf/feature-details/converting-a-nettcpbinding-application-to-a-peer-channel-application.md new file mode 100644 index 00000000000..89bccf1931c --- /dev/null +++ b/docs/framework/wcf/feature-details/converting-a-nettcpbinding-application-to-a-peer-channel-application.md @@ -0,0 +1,26 @@ +--- +title: "NetTcpBinding アプリケーションからピア チャネル アプリケーションへの変換 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d4137292-a923-4b8f-8594-42276f2d3ce2 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# NetTcpBinding アプリケーションからピア チャネル アプリケーションへの変換 +[!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] を使用するクライアント間の接続は、その接続パラメーターを記述するバインディングを使用して作成できます。 ピアツーピア接続を使用するように [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] アプリケーションを変換するには、クライアントを接続するときにこのテクノロジをサポートするバインディングが必要です。 ピア チャネルには、 と呼ばれるバインディングが用意されています。このバインディングは、 と同じような方法で使用できます。 主な違いは、リゾルバー サービスの仕様とセキュリティ設定の定義です。 + + アプリケーションでリゾルバーとセキュリティの既定の設定を使用する場合、通常のクライアント\/サーバー ベースのアプリケーションは、アプリケーションの構成ファイルでバインディング名を "NetTcpBinding" から "NetPeerTcpBinding" に変更するだけで、ピア チャネルを使用するように変換できます。アプリケーションのコード ベースを変更する必要はありません。 + +## 参照 + [ピア チャネル アプリケーションの構築](../../../../docs/framework/wcf/feature-details/building-a-peer-channel-application.md) + [システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/correlation-overview.md b/docs/framework/wcf/feature-details/correlation-overview.md new file mode 100644 index 00000000000..e5b5f3a7035 --- /dev/null +++ b/docs/framework/wcf/feature-details/correlation-overview.md @@ -0,0 +1,39 @@ +--- +title: "相関関係の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: edcc0315-5d26-44d6-a36d-ea554c418e9f +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 相関関係の概要 +相関関係とは、ワークフロー サービス メッセージを互いに関連付ける、最初の要求への応答などのアプリケーションのインスタンス状態と関連付ける、または特定の注文 ID を注文処理ワークフローの永続化された状態に関連付けるためのしくみです。 ここでは、相関関係の概要について説明します。 このセクションの他のトピックでは、相関関係の各種類についての追加情報を提供します。 + +## 相関関係の種類 + 相関関係には、プロトコル ベースとコンテンツ ベースがあります。 プロトコル ベースの相関関係では、メッセージ間のマッピングを提供するためのメッセージ配信インフラストラクチャで提供されるデータが使用されます。 プロトコル ベースの相関関係を使用して関連付けられたメッセージは、メモリ内の などのオブジェクトを使用して、またはトランスポート プロトコルで提供されるトークンによって、互いに関連付けられます。 コンテンツ ベースの相関関係では、メッセージが、アプリケーションで指定されたデータを使用して関連付けられます。 コンテンツ ベースの相関関係を使用して関連付けられたメッセージは、アプリケーションが定義する顧客番号などのメッセージ内のデータによって互いに関連付けられます。 + + 相関関係に参加するアクティビティは、 を使用してメッセージング アクティビティを互いに結び付けます。 たとえば、サービスの呼び出しに使用される と、それに続く、サービスからのコールバックの受信に使用される は、同じ を共有します。 この基本的なパターンは、相関関係がコンテンツ ベースであっても、プロトコル ベースであっても使用されます。 関連付けハンドルは、各アクティビティに明示的に設定する、またはアクティビティを アクティビティに格納することができます。 に格納されたアクティビティには、 が管理する関連付けハンドルがあり、 を明示的に設定する必要がありません。 スコープでは、要求\/応答の相関関係と、もう 1 つの種類の相関関係のための 管理が提供されます。 を使用してホストされるワークフロー サービスには、 アクティビティと同じ既定の関連付け管理があります。 多くのシナリオで、この既定の関連付け管理は、 内のメッセージング アクティビティ、またはワークフロー サービスが セットを要求しないことを意味します。ただし、2 つの アクティビティが並行している、または 2 つの アクティビティに 2 つの アクティビティが続くなど、複数のメッセージング アクティビティが並行または重複している場合を除きます。 既定の相関関係の詳細情報は、このセクションの中のそれぞれの種類の相関関係を説明するトピックに記述されています。 メッセージング アクティビティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メッセージング アクティビティ](../../../../docs/framework/wcf/feature-details/messaging-activities.md)」および「[方法: メッセージング アクティビティを使用してワークフロー サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-workflow-service-with-messaging-activities.md)」を参照してください。 + +## プロトコル ベースの相関関係 + プロトコル ベースの相関関係では、メッセージを相互に関連付け、該当するインスタンスと関連付けるために、トランスポート機構が使用されます。 システムで提供される一部のプロトコル相関関係には、要求\/応答の相関関係とコンテキスト ベースの相関関係が含まれます。 要求\/応答の相関関係を使用して、メッセージング アクティビティの 1 つのペアが関連付けられ、 のペアや、 のペアなどの双方向の操作が形成されます。 また、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] ワークフロー デザイナーには、このパターンに迅速に実装できるアクティビティ テンプレートのセットが用意されています。 コンテキスト ベースの相関関係は、「[.NET コンテキスト交換プロトコルの仕様](http://go.microsoft.com/fwlink/?LinkID=166059)」で説明されているコンテキスト交換メカニズムに基づきます。 コンテキスト ベースの相関関係を使用するには、、または などのコンテキスト ベースのバインディングがエンドポイントで使用される必要があります。 + + プロトコルの相関関係[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[コンテキスト交換](../../../../docs/framework/wcf/feature-details/context-exchange-correlation.md)」、「[永続的な二重](../../../../docs/framework/wcf/feature-details/durable-duplex-correlation.md)」、および「[要求\/応答](../../../../docs/framework/wcf/feature-details/request-reply-correlation.md)」を参照してください。 [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] ワークフロー デザイナーのアクティビティ テンプレートの使用方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メッセージング アクティビティ](../../../../docs/framework/wcf/feature-details/messaging-activities.md)」を参照してください。 サンプル コードについては、「[永続的な二重 [WF サンプル]](../../../../docs/framework/windows-workflow-foundation/samples/durable-duplex.md)」および「[NetContextExchangeCorrelation](http://msdn.microsoft.com/ja-jp/93c74a1a-b9e2-46c6-95c0-c9b0e9472caf)」のサンプルを参照してください。 + +## コンテンツ ベースの相関関係 + コンテンツ ベースの相関関係では、メッセージ内の一部の情報を特定のインスタンスとの関連付けに使用します。 プロトコル ベースの相関関係と異なり、コンテンツ ベースの相関関係では、各関連メッセージ内のこの情報がある場所に、アプリケーションの作成者が明示的に記述されている必要があります。 コンテンツ ベースの相関関係を使用するアクティビティでは、 を使用して、このメッセージ データを指定します。 コンテンツ ベースの相関関係は、 などのコンテキスト バインディングの 1 つを使用しないサービスと通信する場合に便利です。 コンテンツ ベースの相関関係[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[コンテンツ ベース](../../../../docs/framework/wcf/feature-details/content-based-correlation.md)」を参照してください。 サンプル コードについては、「[コンテンツ ベースの相関関係](../../../../docs/framework/windows-workflow-foundation/samples/content-based-correlation.md)」および「[相関電卓](../../../../docs/framework/windows-workflow-foundation/samples/correlated-calculator.md)」のサンプルを参照してください。 + +## 参照 + [コンテンツ ベースの相関関係](../../../../docs/framework/windows-workflow-foundation/samples/content-based-correlation.md) + [相関電卓](../../../../docs/framework/windows-workflow-foundation/samples/correlated-calculator.md) + [永続的な二重 [WF サンプル]](../../../../docs/framework/windows-workflow-foundation/samples/durable-duplex.md) + [NetContextExchangeCorrelation](http://msdn.microsoft.com/ja-jp/93c74a1a-b9e2-46c6-95c0-c9b0e9472caf) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/correlation.md b/docs/framework/wcf/feature-details/correlation.md new file mode 100644 index 00000000000..0189fd6351b --- /dev/null +++ b/docs/framework/wcf/feature-details/correlation.md @@ -0,0 +1,47 @@ +--- +title: "関連付け | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 60151f6c-19b7-47af-9cdc-76c2ac95f301 +caps.latest.revision: 26 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 26 +--- +# 関連付け +ワークフロー サービス アプリケーションが他のサービスと通信するときには、やり取りされるメッセージが、適切なワークフロー インスタンスにディスパッチされることが重要です。相関関係によって、これを実現する機構が提供されます。このセクションの各トピックでは、相関関係の概要を示し、さまざまなワークフロー サービス シナリオで相関関係を使用する方法について説明します。 + +## このセクションの内容 + [相関関係の概要](../../../../docs/framework/wcf/feature-details/correlation-overview.md) + [!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] で使用可能な相関関係の種類の概要を示します。 + + [コンテキスト交換](../../../../docs/framework/wcf/feature-details/context-exchange-correlation.md) + コンテキスト交換の相関関係について説明します。 + + [永続的な二重](../../../../docs/framework/wcf/feature-details/durable-duplex-correlation.md) + 永続的な二重の相関関係について説明します。 + + [コンテンツ ベース](../../../../docs/framework/wcf/feature-details/content-based-correlation.md) + コンテンツ ベースの相関関係について説明します。 + + [要求\/応答](../../../../docs/framework/wcf/feature-details/request-reply-correlation.md) + 要求\/応答の相関関係について説明します。 + + [相関関係のトラブルシューティング](../../../../docs/framework/wcf/feature-details/troubleshooting-correlation.md) + 相関関係のトラブルシューティング方法を説明します。 + +## 参照 + + + + + [コンテンツ ベースの相関関係](../../../../docs/framework/windows-workflow-foundation/samples/content-based-correlation.md) + [相関電卓](../../../../docs/framework/windows-workflow-foundation/samples/correlated-calculator.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/create-a-service-arbitrary-data-using-wcf.md b/docs/framework/wcf/feature-details/create-a-service-arbitrary-data-using-wcf.md new file mode 100644 index 00000000000..d780feb63ee --- /dev/null +++ b/docs/framework/wcf/feature-details/create-a-service-arbitrary-data-using-wcf.md @@ -0,0 +1,212 @@ +--- +title: "方法 : WCF REST プログラミング モデルを使用して任意のデータを受け入れるサービスを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e566c15a-b600-4e4a-be3a-4af43e767dae +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : WCF REST プログラミング モデルを使用して任意のデータを受け入れるサービスを作成する +開発者は、データがサービス操作から返される流れを完全に制御する必要が生じることがあります。 たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではサポートされない形式のデータを、サービス操作から返す必要がある場合です。 このトピックでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] REST プログラミング モデルを使用して任意のデータを受信するサービスの作成方法について説明します。 + +### サービス コントラクトを実装するには + +1. サービス コントラクトを定義します。 任意のデータを受信する操作は、型のパラメーターを持つ必要がありますします。 さらに、このパラメーターは要求の本文に渡される唯一のパラメーターでなければなりません。 この例で説明されている操作では、filename パラメーターも使用できます。 このパラメーターは要求の URL に格納されて渡されます。 指定して、URL 内でパラメーターを渡すことを指定する、 で、 します。 この場合、このメソッドを呼び出すのに使用する URI は “UploadFile/Some-Filename” で終わります。 URI テンプレートの "{filename}" 部分は、操作に使用する filename パラメーターが操作の呼び出しに使用する URI に格納されて渡されるように指定します。 + + ``` + [ServiceContract] + public interface IReceiveData + { + [WebInvoke(UriTemplate = "UploadFile/{fileName}")] + void UploadFile(string fileName, Stream fileContents); + } + ``` + +2. サービス コントラクトを実装します。 コントラクトには、ストリーム内の任意のデータのファイルを受け取る `UploadFile` というメソッドが&1; つだけあります。 操作では、ストリームを読み取り、読み取ったバイト数をカウントしてから、ファイル名と読み取ったバイト数を表示します。 + + ``` + public class RawDataService : IReceiveData + { + public void UploadFile(string fileName, Stream fileContents) + { + byte[] buffer = new byte[10000]; + int bytesRead, totalBytesRead = 0; + do + { + bytesRead = fileContents.Read(buffer, 0, buffer.Length); + totalBytesRead += bytesRead; + } while (bytesRead > 0); + Console.WriteLine("Service: Received file {0} with {1} bytes", fileName, totalBytesRead); + } + } + ``` + +### サービスをホストするには + +1. コンソール アプリケーションを作成し、サービスをホストします。 + + ``` + class Program + { + static void Main(string[] args) + { + } + } + + ``` + +2. 変数を作成し、`Main` メソッド内のサービスに使用するベース アドレスを保持します。 + + ``` + string baseAddress = "http://" + Environment.MachineName + ":8000/Service"; + ``` + +3. 作成、 サービス クラスとベース アドレスを指定するサービスのインスタンス。 + + ``` + ServiceHost host = new ServiceHost(typeof(RawDataService), new Uri(baseAddress)); + ``` + +4. コントラクトを指定するエンドポイントを追加、およびします。 + + ``` + host.AddServiceEndpoint(typeof(IReceiveData), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior()); + ``` + +5. サービス ホストを開きます。 サービスは要求を受け取る準備ができました。 + + ``` + host.Open(); + Console.WriteLine("Host opened"); + ``` + +### プログラムによってサービスを呼び出すには + +1. 作成、 サービスを呼び出すために使用する URI を使用します。 このコードでは、ベース アドレスは `“/UploadFile/Text”` と組み合わされています。 URI の `“UploadFile”` 部分で呼び出す操作を指定します。 URI の `“Test.txt”` 部分で `UploadFile` 操作に渡す filename パラメーターを指定します。 これらの項目の両方にマップ、 操作コントラクトに適用します。 + + ``` + HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(baseAddress + "/UploadFile/Test.txt"); + + ``` + +2. 設定、のプロパティ、 に`POST`とプロパティを`“text/plain”`します。 この設定により、サービスはコードがデータを送信し、そのデータがプレーン テキストであることを認識します。 + + ``` + req.Method = "POST"; + req.ContentType = "text/plain"; + ``` + +3. 呼び出す要求ストリームを取得するには、送信、要求ストリームにそのデータを書き込みおよびストリームを閉じるにデータを作成します。 + + ``` + Stream reqStream = req.GetRequestStream(); + byte[] fileToSend = new byte[12345]; + for (int i = 0; i < fileToSend.Length; i++) + { + fileToSend[i] = (byte)('a' + (i % 26)); + } + reqStream.Write(fileToSend, 0, fileToSend.Length); + reqStream.Close(); + ``` + +4. 呼び出して、サービスから応答を取得し、応答データをコンソールに表示します。 + + ``` + HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); + Console.WriteLine("Client: Receive Response HTTP/{0} {1} {2}", resp.ProtocolVersion, (int)resp.StatusCode, resp.StatusDescription); + + ``` + +5. サービス ホストを閉じます。 + + ``` + host.Close(); + ``` + +## 例 + この例で使用されているコードの完全な一覧を次に示します。 + +``` +using System; +using System.Collections.Generic; +using System.Text; +using System.ServiceModel; +using System.ServiceModel.Web; +using System.ServiceModel.Description; +using System.IO; +using System.Net; + +namespace ReceiveRawData +{ + [ServiceContract] + public interface IReceiveData + { + [WebInvoke(UriTemplate = "UploadFile/{fileName}")] + void UploadFile(string fileName, Stream fileContents); + } + public class RawDataService : IReceiveData + { + public void UploadFile(string fileName, Stream fileContents) + { + byte[] buffer = new byte[10000]; + int bytesRead, totalBytesRead = 0; + do + { + bytesRead = fileContents.Read(buffer, 0, buffer.Length); + totalBytesRead += bytesRead; + } while (bytesRead > 0); + Console.WriteLine("Service: Received file {0} with {1} bytes", fileName, totalBytesRead); + } + } + + class Program + { + static void Main(string[] args) + { + string baseAddress = "http://" + Environment.MachineName + ":8000/Service"; + ServiceHost host = new ServiceHost(typeof(RawDataService), new Uri(baseAddress)); + host.AddServiceEndpoint(typeof(IReceiveData), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior()); + host.Open(); + Console.WriteLine("Host opened"); + + HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(baseAddress + "/UploadFile/Test.txt"); + req.Method = "POST"; + req.ContentType = "text/plain"; + Stream reqStream = req.GetRequestStream(); + byte[] fileToSend = new byte[12345]; + for (int i = 0; i < fileToSend.Length; i++) + { + fileToSend[i] = (byte)('a' + (i % 26)); + } + reqStream.Write(fileToSend, 0, fileToSend.Length); + reqStream.Close(); + HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); + Console.WriteLine("Client: Receive Response HTTP/{0} {1} {2}", resp.ProtocolVersion, (int)resp.StatusCode, resp.StatusDescription); + host.Close(); + + } + } +} + +``` + + + +## コードのコンパイル + +- コードのコンパイル時には、System.ServiceModel.dll と System.ServiceModel.Web.dll を参照します。 + +## 関連項目 + [UriTemplate と UriTemplateTable](../../../../docs/framework/wcf/feature-details/uritemplate-and-uritemplatetable.md) + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) + [WCF Web HTTP プログラミング モデルの概要](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/create-an-ajax-wcf-asp-net-client.md b/docs/framework/wcf/feature-details/create-an-ajax-wcf-asp-net-client.md new file mode 100644 index 00000000000..1ab1b28184f --- /dev/null +++ b/docs/framework/wcf/feature-details/create-an-ajax-wcf-asp-net-client.md @@ -0,0 +1,181 @@ +--- +title: "方法 : AJAX 対応 WCF サービスとこのサービスにアクセスする ASP.NET クライアントを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 95012df8-2a66-420d-944a-8afab261013e +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : AJAX 対応 WCF サービスとこのサービスにアクセスする ASP.NET クライアントを作成する +ここでは、Visual Studio 2008 を使用して AJAX 対応の [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスと、このサービスにアクセスする ASP.NET クライアントを作成する方法について説明します。 これらを作成するための手順を示した後、「使用例」のセクションにサービスおよびクライアント用のコードを示します。 + +### ASP.NET クライアント アプリケーションを作成するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を開きます。 + +2. **ファイル**メニューの **新規**、し**プロジェクト**、し**Web**、し、 **ASP.NET Web アプリケーション**します。 + +3. プロジェクトに名前を`SandwichServices` をクリック**OK**します。 + +### WCF AJAX 対応サービスを作成するには + +1. 右クリックし、`SandwichServices`プロジェクトで、**ソリューション エクスプ ローラー**ウィンドウを選択**追加**、し**新しい項目の**、し**AJAX 対応 WCF サービス**します。 + +2. サービスの名前を`CostService`で、**名**ボックスし、をクリックして**追加**します。 + +3. CostService.svc.cs ファイルを開きます。 + +4. 指定の`Namespace`のとして`SandwichService`: + + ``` + namespace SandwichServices + { + [ServiceContract(Namespace = "SandwichServices")] + [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] + public class CostService + { + … + } + } + ``` + +5. サービスに操作を実装します。 追加、 に各コントラクトの一部であることを示すために操作します。 次の例では、指定したサンドイッチの数に対して価格を返すメソッドを実装します。 + + ``` + public class CostService + { + [OperationContract] + public double CostOfSandwiches(int quantity) + { + return 1.25 * quantity; + } + + // Add more operations here and mark them with [OperationContract] + } + ``` + +### サービスにアクセスするようにクライアントを構成するには + +1. Default.aspx ページを開き、選択、**デザイン**表示します。 + +2. **ビュー**メニューの **ツールボックス**します。 + +3. 展開、 **AJAX Extensions**ノードやドラッグ アンド ドロップ、 **ScriptManager** Default.aspx ページにします。 + +4. 右クリックし、 **ScriptManager**選択**プロパティ**します。 + +5. 展開、**サービス**内のコレクション、**プロパティ**ウィンドウを開きます、 **ServiceReference コレクション エディター**ウィンドウです。 + +6. をクリックして**追加**、指定`CostService.svc`として、**パス** をクリックし、参照**OK**します。 + +7. 展開、 **HTML**内のノード、**ツールボックス**しドラッグ アンド ドロップ、**入力 (ボタン)** Default.aspx ページにします。 + +8. 右クリックし、**ボタン**選択**プロパティ**します。 + +9. 変更、**値**フィールドを`Price for 3 Sandwiches`します。 + +10. ダブルクリックして、**ボタン**JavaScript コードにアクセスします。 + +11. 次の JavaScript コードを渡す、 `script`> 要素。 + + ``` + function Button1_onclick() { + var service = new SandwichServices.CostService(); + service.CostOfSandwiches(3, onSuccess, null, null); + } + + function onSuccess(result){ + alert(result); + } + ``` + +### クライアントからサービスにアクセスするには + +1. Ctrl キーを押しながら F5 キーを押して、サービスと Web クライアントを起動します。 クリックして、 **Price for 3 Sandwiches** 「3.75」の予想される出力を生成する ボタンをクリックします。 + +## 例 + この例には、WCFService.svc.cs ファイルに含まれるサービスのコードと Default.aspx ファイルに含まれるクライアントのコードが含まれています。 + +``` +//The service code contained in the CostService.svc.cs file. + +using System; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.ServiceModel.Activation; +using System.ServiceModel.Web; + +namespace SandwichServices +{ + [ServiceContract(Namespace="SandwichServices")] + [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] + public class CostService + { + // Add [WebGet] attribute to use HTTP GET + [OperationContract] + public double CostOfSandwiches(int quantity) + { + return 1.25 * quantity; + } + + // Add more operations here and mark them with [OperationContract] + } +} +//The code for hosting the service is contained in the CostService.svc file. + +<%@ ServiceHost Language="C#" Debug="true" Service="SandwichServices.CostService" CodeBehind="CostService.svc.cs" %> + +//The client code contained in the Default.aspx file. + +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SandwichServices._Default" %> + + + + + + Untitled Page + + + +
+
+ +
+ + + + + +
+

+

+ + + +``` + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/creating-a-custom-header-that-is-signed-and-or-encrypted.md b/docs/framework/wcf/feature-details/creating-a-custom-header-that-is-signed-and-or-encrypted.md new file mode 100644 index 00000000000..86f4f7ed5e2 --- /dev/null +++ b/docs/framework/wcf/feature-details/creating-a-custom-header-that-is-signed-and-or-encrypted.md @@ -0,0 +1,70 @@ +--- +title: "署名または暗号化、あるいはその両方が行われたカスタム ヘッダーの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e8668b37-c79f-4714-9de5-afcb88b9ff02 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 署名または暗号化、あるいはその両方が行われたカスタム ヘッダーの作成 +WCF クライアントを使用して WCF 以外のサービスを呼び出す場合、状況によっては、カスタム SOAP ヘッダーが必要です。 WCF には正規化のバグがあり、署名および暗号化されたカスタム ヘッダーは、WCF 以外のサービスで使用できません。 この問題は、既定の XML 名前空間に対する正規化の誤りが原因で発生します。 この問題が生じるのは、署名または暗号化、あるいはその両方が行われたカスタム ヘッダーを持つ、WCF 以外のサービスを呼び出す場合のみです。 サービスは、受信したメッセージに署名または暗号化、あるいはその両方が行われたカスタム ヘッダーが含まれている場合、署名を検証できません。 この回避策では正規化のバグを回避し、WCF 以外のサービスとの相互運用が可能になりますが、WCF サービスとの相互運用性は妨げられません。 + +## カスタム ヘッダーの定義 + カスタム ヘッダーは、メッセージ コントラクトを定義し、ヘッダーとして送信するメンバーを 属性を使用してマークすることで定義されます。 正規化のバグを回避するには、XML シリアライザーが既定の名前空間の宣言ではなくプレフィックスによってカスタム ヘッダーの名前空間を宣言する必要があります。 次のコードは、メッセージ ヘッダーとして使用されるデータ型を正しい名前空間宣言で定義する方法を示します。 + +``` +[System.CodeDom.Compiler.GeneratedCodeAttribute("svcutil", "3.0.4506.648")] +[System.SerializableAttribute()] +[System.Diagnostics.DebuggerStepThroughAttribute()] +[System.ComponentModel.DesignerCategoryAttribute("code")] +[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.example.org/getMessage/")] +public partial class msgHeaderElement +{ + // Define the XML namespace and force it to use an ‘h’ prefix + [System.Xml.Serialization.XmlNamespaceDeclarations] + public System.Xml.Serialization.XmlSerializerNamespaces _xsns = new System.Xml.Serialization.XmlSerializerNamespaces(new System.Xml.XmlQualifiedName[] { new System.Xml.XmlQualifiedName("h", "http://www.example.org/getMessage/") }); + + private string msgHeaderInputField; + [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)] + public string msgHeaderInput + { + get + { + return this.msgHeaderInputField; + } + set + { + this.msgHeaderInputField = value; + } + } +} +``` + + このコードでは、XML シリアライザーによってシリアル化される `msgHeaderElement` という新しい型を宣言しています。 この型のインスタンスがシリアル化されると、名前空間が "h" プレフィックスで定義されるため、正規化のバグが回避されます。 この後、次の例に示すように、メッセージ コントラクトによって `msgHeaderElement` のインスタンスを定義し、 属性でそのインスタンスをマークします。 + +``` +[MessageContract] +public class MyMessageContract +{ + // other message contents... + [MessageHeader(ProductionLevel=ProtectionLevel.EncryptAndSign)] + public msgHeaderElement; + // other message contents... +} + +``` + +## 参照 + [既定のメッセージ コントラクト](../../../../docs/framework/wcf/samples/default-message-contract.md) + [メッセージ コントラクト](../../../../docs/framework/wcf/samples/message-contracts.md) + [メッセージ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-message-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md b/docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md new file mode 100644 index 00000000000..c7b6fce23db --- /dev/null +++ b/docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md @@ -0,0 +1,217 @@ +--- +title: "長時間のワークフロー サービスの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4c39bd04-5b8a-4562-a343-2c63c2821345 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 長時間のワークフロー サービスの作成 +ここでは、実行時間の長いワークフロー サービスを作成する方法について説明します。 実行時間の長いワークフロー サービスは、長期間にわたって実行できます。 ワークフローでは、いくつかの追加情報を待つ間アイドル状態になることがあります。 アイドル状態になると、ワークフローは SQL データベースに永続化され、メモリから削除されます。 追加情報が使用可能になると、ワークフロー インスタンスがメモリに読み込み直されて、実行を継続します。 このシナリオでは、非常に簡略化された注文システムを実装します。 クライアントは、最初のメッセージをワークフロー サービスに送信して注文を開始します。 ワークフロー サービスは、注文 ID をクライアントに返します。 この時点で、ワークフロー サービスは、クライアントからの別のメッセージを待機しており、アイドル状態に入って、SQL Server データベースに永続化されます。 クライアントが次のメッセージを送信して項目を注文すると、ワークフロー サービスはメモリに読み込み直されて、注文の処理を終了します。 次のコード例では、項目が注文に追加されたことを示す文字列を返します。 このコード例は、テクノロジの実際の適用を意図するものではなく、実行時間の長いワークフロー サービスを示す簡単な例です。このトピックでは、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] のプロジェクトおよびソリューションの作成方法を理解していることを前提としています。 + +## 必須コンポーネント + このチュートリアルを使用するには、次のソフトウェアがインストールされている必要があります。 + +1. Microsoft SQL Server 2008 + +2. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] + +3. Microsoft [!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] + +4. ユーザーは WCF および [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] に精通しており、プロジェクトおよびソリューションの作成方法を理解している必要があります。 + +### SQL データベースを設定するには + +1. ワークフロー サービス インスタンスが永続化されるようにするには、Microsoft SQL Server をインストールして、永続化ワークフロー インスタンスを保存するようにデータベースを設定する必要があります。 **\[スタート\]** ボタンをクリックし、**\[すべてのプログラム\]**、**\[Microsoft SQL Server 2008\]**、**\[Microsoft SQL Management Studio\]** の順にクリックして、Microsoft SQL Management Studio を実行します。 + +2. **\[接続\]** ボタンをクリックして、SQL Server インスタンスにログオンします。 + +3. ツリー ビューで **\[データベース\]** を右クリックして **\[新しいデータベース\]** をクリックし、`SQLPersistenceStore` という名前の新しいデータベースを作成します。 + +4. SQLPersistenceStore データベースの C:\\Windows\\Microsoft.NET\\Framework\\v4.0\\SQL\\en ディレクトリにある SqlWorkflowInstanceStoreSchema.sql スクリプト ファイルを実行して、必要なデータベース スキーマを設定します。 + +5. SQLPersistenceStore データベースの C:\\Windows\\Microsoft.NET\\Framework\\v4.0\\SQL\\en ディレクトリにある SqlWorkflowInstanceStoreLogic.sql スクリプト ファイルを実行して、必要なデータベース ロジックを設定します。 + +### Web ホスト ワークフロー サービスを作成するには + +1. 空の [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] ソリューションを作成し、`OrderProcessing` という名前を付けます。 + +2. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] という新しい `OrderService` ワークフロー サービス アプリケーション プロジェクトをソリューションに追加します。 + +3. プロジェクトのプロパティのダイアログで、**\[Web\]** タブをクリックします。 + + 1. **\[開始動作\]** の **\[ページを指定する\]** をクリックし、`Service1.xamlx` を指定します。 + + ![ワークフロー サービス プロジェクトの Web プロパティ](../../../../docs/framework/wcf/feature-details/media/startaction.png "StartAction") + + 2. **\[サーバー\]** の **\[ローカル IIS Web サーバーを使用する\]** を選択します。 + + ![ローカル Web サーバーの設定](../../../../docs/framework/wcf/feature-details/media/uselocalwebserver.png "UseLocalWebServer") + + > [!WARNING] + > この設定を行うには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を管理者モードで実行する必要があります。 + + 次の 2 つの手順で、ワークフロー サービス プロジェクトが IIS でホストされるように設定します。 + +4. `Service1.xamlx` が開いていない場合は開き、既存の **ReceiveRequest** アクティビティと **SendResponse** アクティビティを削除します。 + +5. **\[シーケンシャル サービス\]** アクティビティを選択して **\[変数\]** リンクをクリックし、次の図に示されている変数を追加します。 こうするといくつかの変数が追加され、後でワークフロー サービスで使用されます。 + + > [!NOTE] + > CorrelationHandle が \[変数の型\] ボックスにない場合、ボックスから **\[型の参照\]** を選択します。 **\[型名\]** ボックスに「CorrelationHandle」と入力し、リスト ボックスから CorrelationHandle を選択して **\[OK\]** をクリックします。 + + ![変数の追加](../../../../docs/framework/wcf/feature-details/media/addvariables.gif "AddVariables") + +6. **ReceiveAndSendReply** アクティビティ テンプレートをドラッグして、**\[シーケンシャル サービス\]** アクティビティにドロップします。 このアクティビティのセットは、クライアントからメッセージを受信して、返信を送信します。 + + 1. **Receive** アクティビティを選択し、次の図で強調表示されているプロパティを設定します。 + + ![Receive アクティビティのプロパティの設定](../../../../docs/framework/wcf/feature-details/media/setreceiveproperties.png "SetReceiveProperties") + + DisplayName プロパティは、デザイナーに表示される Receive アクティビティの名前を設定します。 ServiceContractName プロパティと OperationName プロパティは、Receive アクティビティで実装されるサービス コントラクトおよび操作の名前を指定します。 ワークフロー サービスでのコントラクトの使用方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフロー内でのコントラクトの使用](../../../../docs/framework/wcf/feature-details/using-contracts-in-workflow.md)」を参照してください。 + + 2. **ReceiveStartOrder** アクティビティの **\[定義\]** リンクをクリックし、次の図に示されているプロパティを設定します。 **\[パラメーター\]** オプション ボタンが選択され、`p_customerName` という名前のパラメーターが `customerName` 変数にバインドされていることに注目してください。 これにより、**Receive** アクティビティがいくつかのデータを受け取り、そのデータをローカル変数にバインドするように設定されます。 + + ![Receive アクティビティが受信するデータの設定](../../../../docs/framework/wcf/feature-details/media/setreceivecontent.png "SetReceiveContent") + + 3. **SendReplyToReceive** アクティビティを選択し、次の図で強調表示されているプロパティを設定します。 + + ![SendReply アクティビティのプロパティの設定](../../../../docs/framework/wcf/feature-details/media/setreplyproperties.png "SetReplyProperties") + + 4. **SendReplyToStartOrder** アクティビティの **\[定義\]** リンクをクリックし、次の図に示されているプロパティを設定します。 **\[パラメーター\]** オプション ボタンが選択され、`p_orderId` という名前のパラメーターが `orderId` 変数にバインドされていることに注目してください。 この設定により、SendReplyToStartOrder アクティビティが型文字列の値を呼び出し元に返すように指定されます。 + + ![SendReply アクティビティのコンテンツ データの構成](../../../../docs/framework/wcf/feature-details/media/setreplycontent.png "SetReplyContent") + + > [!NOTE] + 5. Assign アクティビティをドラッグして **Receive** アクティビティと **SendReply** アクティビティの間にドロップし、次の図に示されているようにプロパティを設定します。 + + ![Assign アクティビティの追加](../../../../docs/framework/wcf/feature-details/media/addassign.png "AddAssign") + + これにより、新しい注文 ID が作成され、orderId 変数に値が配置されます。 + + 6. **ReplyToStartOrder** アクティビティを選択します。 プロパティ ウィンドウで、**CorrelationInitializers** の省略記号ボタンをクリックします。 **\[初期化子の追加\]** リンクを選択し、\[初期化子\] ボックスに「`orderIdHandle`」と入力して、\[関連付けの種類\] に \[クエリ関連付け初期化子\] を選択し、\[XPATH クエリ\] ボックスの p\_orderId を選択します。 これらの設定を次の図に示します。 **\[OK\]** をクリックします。 これにより、クライアントとワークフロー サービスのこのインスタンス間の相関関係が初期化されます。 この注文 ID を含むメッセージが受信されると、ワークフロー サービスのこのインスタンスにルーティングされます。 + + ![関連付け初期化子の追加](../../../../docs/framework/wcf/feature-details/media/addcorrelationinitializers.png "AddCorrelationInitializers") + +7. 別の **ReceiveAndSendReply** アクティビティをドラッグしてワークフローの最後 \(最初の **Receive** アクティビティと **SendReply** アクティビティを含む **\[シーケンス\]** の外側\) にドロップします。 これで、クライアントで送信された 2 つ目のメッセージを受信し、それに応答します。 + + 1. 新しく追加した **Receive** アクティビティと **SendReply** アクティビティを含む **\[シーケンス\]** を選択し、**\[変数\]** ボタンをクリックします。 次の図で強調表示されている変数を追加します。 + + ![新しい変数の追加](../../../../docs/framework/wcf/feature-details/media/addorderitemidvariable.png "AddOrderItemIdVariable") + + 2. **Receive** アクティビティを選択し、次の図に示されているプロパティを設定します。 + + ![Receive アクティビティのプロパティの設定](../../../../docs/framework/wcf/feature-details/media/setreceiveproperties2.png "SetReceiveProperties2") + + 3. **ReceiveAddItem** アクティビティの **\[定義\]** リンクをクリックし、次の図に示されているパラメーターを追加します。これにより、Receive アクティビティが 2 つのパラメーター、注文 ID、および注文されている項目の ID を受け取るように設定されます。 + + ![2 つ目の Receive のパラメーター指定](../../../../docs/framework/wcf/feature-details/media/addreceive2parameters.png "AddReceive2Parameters") + + 4. **CorrelateOn** の省略記号ボタンをクリックし、「`orderIdHandle`」を入力します。 **\[XPath クエリ\]** のドロップダウン矢印をクリックし、`p_orderId` を選択します。 これにより、2 つ目の Receive アクティビティに相関関係が設定されます。 相関関係[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[関連付け](../../../../docs/framework/wcf/feature-details/correlation.md)」を参照してください。 + + ![CorrelatesOn プロパティの設定](../../../../docs/framework/wcf/feature-details/media/correlateson.png "CorrelatesOn") + + 5. **If** アクティビティをドラッグして **ReceiveAddItem** アクティビティの直後にドロップします。 このアクティビティは、if ステートメントと同様に動作します。 + + 1. **Condition** プロパティを `itemId==”Zune HD” (itemId=”Zune HD” for Visual Basic)` に設定します。 + + 2. **Assign** アクティビティを **Then** セクションと **Else** セクションにそれぞれドラッグ アンド ドロップして、次の図に示されているように **Assign** アクティビティのプロパティを設定します。 + + ![サービス呼び出しの結果の割り当て](../../../../docs/framework/wcf/feature-details/media/resultassign.png "ResultAssign") + + 条件が `true` である場合、**Then** セクションが実行されます。 条件が `false` である場合、**Else** セクションが実行されます。 + + 3. **SendReplyToReceive** アクティビティを選択し、次の図で強調表示されている **DisplayName** プロパティを設定します。 + + ![SendReply アクティビティのプロパティの設定](../../../../docs/framework/wcf/feature-details/media/setreply2properties.png "SetReply2Properties") + + 4. **SetReplyToAddItem** アクティビティの **\[定義\]** リンクをクリックし、次の図に示されているように設定します。 これにより、**SendReplyToAddItem** アクティビティが `orderResult` 変数に値を返すように設定されます。 + + ![SendReply アクティビティのデータ バインディングの設定](../../../../docs/framework/wcf/feature-details/media/replytoadditemcontent.gif "ReplyToAddItemContent") + +8. web.config ファイルを開いて、次の要素を \ セクションに追加し、ワークフロー永続化を有効にします。 + + ```xml + + + + ``` + + > [!WARNING] + > 前のコード スニペットでホストと SQL Server インスタンス名を置換するようにします。 + +9. ソリューションをビルドします。 + +### クライアント アプリケーションを作成してワークフロー サービスを呼び出すには + +1. `OrderClient` という新しいコンソール アプリケーション プロジェクトをソリューションに追加します。 + +2. 次のアセンブリへの参照を `OrderClient` プロジェクトに追加します。 + + 1. System.ServiceModel.dll + + 2. System.ServiceModel.Activities.dll + +3. サービス参照をワークフロー サービスに追加し、`OrderService` を名前空間として指定します。 + +4. クライアント プロジェクトの `Main()` メソッド内に次のコードを追加します。 + + ``` + static void Main(string[] args) + { + // Send initial message to start the workflow service + Console.WriteLine("Sending start message"); + StartOrderClient startProxy = new StartOrderClient(); + string orderId = startProxy.StartOrder("Kim Abercrombie"); + + // The workflow service is now waiting for the second message to be sent + Console.WriteLine("Workflow service is idle..."); + Console.WriteLine("Press [ENTER] to send an add item message to reactivate the workflow service..."); + Console.ReadLine(); + + // Send the second message + Console.WriteLine("Sending add item message"); + AddItemClient addProxy = new AddItemClient(); + AddItem item = new AddItem(); + item.p_itemId = "Zune HD"; + item.p_orderId = orderId; + + string orderResult = addProxy.AddItem(item); + Console.WriteLine("Service returned: " + orderResult); + } + + ``` + +5. ソリューションをビルドし、`OrderClient` アプリケーションを実行します。 クライアントに次のテキストが表示されます。 + + ```Output + + 開始メッセージを送信します + ワークフロー サービスがアイドル状態です... Enter キーを押して項目の追加メッセージを送信し、ワークフロー サービスを再びアクティブにします。 + ``` + +6. ワークフロー サービスが永続化されていることを確認するには、**\[スタート\]** メニューで **\[すべてのプログラム\]**、**\[Microsoft SQL Server 2008\]**、**\[SQL Server Management Studio\]** の順にクリックして、SQL Server Management Studio を起動します。 + + 1. 左ペインで、**\[データベース\]**、**\[SQLPersistenceStore\]**、**\[ビュー\]** の順に展開し、**System.Activities.DurableInstancing.Instances** を右クリックして **\[上位 1000 行を選択\]** をクリックします。 **\[結果\]** ペインで、少なくとも 1 つのインスタンスがリストされていることを確認します。 実行中に例外が発生した場合は、前の実行のその他のインスタンスがある可能性があります。 既存の行を削除するには、**System.Activities.DurableInstancing.Instances** を右クリックして **\[上位 200 行を編集\]** をクリックし、**\[実行\]** ボタンを押し、\[結果\] ペインのすべての行を選択して **\[削除\]** をクリックします。 データベースに表示されているインスタンスが、アプリケーションで作成されたインスタンスであることを確認するには、クライアントを実行する前に、Instances ビューが空であることを確認します。 クライアントが実行されると、クエリ \(\[上位 1000 行を選択\]\) を再実行し、新しいインスタンスが追加されていることを確認します。 + +7. Enter キーを押して、項目の追加メッセージをワークフロー サービスに送信します。 クライアントに次のテキストが表示されます。 + + ```Output + + 項目の追加メッセージを送信します。 + サービスは注文に追加された項目を返しました。 + 続行するには、いずれかのキーを押します. . . + ``` + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/creating-multicasting-applications-using-the-udp-transport.md b/docs/framework/wcf/feature-details/creating-multicasting-applications-using-the-udp-transport.md new file mode 100644 index 00000000000..aa8b4e42d0c --- /dev/null +++ b/docs/framework/wcf/feature-details/creating-multicasting-applications-using-the-udp-transport.md @@ -0,0 +1,130 @@ +--- +title: "UDP トランスポートを使用するマルチキャスト アプリケーションの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7485154a-6e85-4a67-a9d4-9008e741d4df +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# UDP トランスポートを使用するマルチキャスト アプリケーションの作成 +マルチキャスト アプリケーションは、ポイント ツー ポイント接続を確立することなく多数の受信者に小さいメッセージを同時に送信します。このようなアプリケーションの重点は、信頼性よりも速度です。つまり、特定のメッセージが実際に受信されるということよりも、迅速にデータを送信することの方が重要です。WCF は、 を使用して、書き込みマルチキャスト アプリケーションをサポートします。このトランスポートは、サービスが複数のクライアントに小さいメッセージを同時に送信する必要がある場合に便利です。株価表示器のアプリケーションは、このようなサービスの例です。 + +## マルチキャスト アプリケーションの実装 + マルチキャストのアプリケーションを実装するには、サービス コントラクトを定義し、マルチキャストのメッセージに応答する必要がある各ソフトウェア コンポーネントについては、サービス コントラクトを実装します。たとえば、株価表示器のアプリケーションは、サービス コントラクトを定義する場合があります: + +``` +// Shared contracts between the client and the service + [ServiceContract] + interface IStockTicker + { + [OperationContract(IsOneWay = true)] + void SendStockInfo(StockInfo[] stockInfo); + } + + [DataContract] + class StockInfo + { + [DataMember] + public string Symbol; + + [DataMember] + public float Price; + + public StockInfo(string symbol, float price) + { + this.Symbol = symbol; + this.Price = price; + } + } + +``` + + マルチキャストのメッセージを受信する各アプリケーションはこのインターフェイスを公開するサービスをホストする必要があります。たとえば、マルチキャストのメッセージを受信する方法を示すコード サンプルを次に示します: + +``` +// Service Address + string serviceAddress = "soap.udp://224.0.0.1:40000"; + // Binding + UdpBinding myBinding = new UdpBinding(); + // Host + ServiceHost host = new ServiceHost(typeof + (StockTickerService), new Uri(serviceAddress)); + // Add service endpoint + host.AddServiceEndpoint(typeof(IStockTicker), myBinding, string.Empty); + // Openup the service host + host.Open(); + + Console.WriteLine("Start receiving stock information"); + Console.ReadLine(); + +``` + + アプリケーションはすべてのサービスがリッスンする UDP アドレスを指定します。新しい が作成され、サービス エンドポイントは を使用して公開されます。 が開き、受信メッセージのリッスンを開始します。 + + このような場合、実際にマルチキャストのメッセージを送信するのは、クライアントです。正しい UDP アドレスでリッスンする各サービスはマルチキャストのメッセージを受信します。マルチキャストのメッセージを送信するクライアントの例を次に示します: + +``` +// Multicast Address + string serviceAddress = "soap.udp://224.0.0.1:40000"; + + // Binding + UdpBinding myBinding = new UdpBinding(); + + // Channel factory + ChannelFactory factory + = new ChannelFactory(myBinding, + new EndpointAddress(serviceAddress)); + + // Call service + IStockTicker proxy = factory.CreateChannel(); + + while (true) + { + // This will continue to mulicast stock information + proxy.SendStockInfo(GetStockInfo()); + Console.WriteLine(String.Format("sent stock info at {0}", DateTime.Now)); + // Wait for one second before sending another update + System.Threading.Thread.Sleep(new TimeSpan(0, 0, 1)); + } + +``` + + このコードは、株式の情報を生成し、サービス コントラクト IStockTicker を使用してマルチキャストのメッセージを送信することによって、正しい UDP アドレスでリッスンするサービスを呼び出します。 + +### UDP および信頼できるメッセージング + UDP バインディングでは、UDP プロトコルに軽量という性質があるために信頼できるメッセージングをサポートしていません。メッセージがリモート エンドポイントによって受信されることを確認する必要がある場合は、HTTP や TCP などの信頼できるメッセージングをサポートするトランスポートを使用します。信頼できるメッセージングの詳細については、http:\/\/go.microsoft.com\/fwlink\/?LinkId\=231830 を参照してください。 + +### 双方向マルチキャストのメッセージング + マルチキャストのメッセージは通常、一方向ですが、UdpBinding は要求\/応答メッセージ交換をサポートします。UDP トランスポートを使用して送信されたメッセージには送信者と宛先のアドレスがいずれも含まれます。送信者のアドレスを使う場合は、送信中に悪意により変更されることがあるため、注意が必要です。アドレスは、次のコードを使用してチェックすることができます: + +``` +if (address.AddressFamily == AddressFamily.InterNetwork) + { + // IPv4 + byte[] addressBytes = address.GetAddressBytes(); + return ((addressBytes[0] & 0xE0) == 0xE0); + } + else + { + // IPv6 + return address.IsIPv6Multicast; + } + +``` + + このコードは、送信者のアドレスの先頭バイトをチェックして、アドレスがマルチキャスト アドレスであることを示す 0xE0 が含まれているかどうかを調べます。 + +### セキュリティの考慮事項 + マルチキャストのメッセージをリッスンする場合、マルチキャストのアドレスでリッスンしていることを通知するルーターに ICMP パケットが送信されます。アクセス許可を持つローカル サブネット上に存在するすべてのユーザーが、これらの型のパケットをリッスンし、リッスンしているマルチキャストのアドレスとポートを特定できます。 + + セキュリティ上の目的に送信者の IP アドレスを使用しないでください。この情報は偽装され、アプリケーションが間違ったコンピューターに応答を送信する場合があります。この脅威を軽減する方法には、メッセージ レベルのセキュリティを有効にすることがあります。ネットワーク レベルでは、IPsec \(インターネット プロトコル セキュリティ\) やNAP \(ネットワーク アクセス保護\) も使用できます。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/creating-wcf-ajax-services-without-aspnet.md b/docs/framework/wcf/feature-details/creating-wcf-ajax-services-without-aspnet.md new file mode 100644 index 00000000000..b59c42bec2c --- /dev/null +++ b/docs/framework/wcf/feature-details/creating-wcf-ajax-services-without-aspnet.md @@ -0,0 +1,118 @@ +--- +title: "ASP.NET を使用せずに WCF AJAX サービスを作成する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ba4a7d1b-e277-4978-9f62-37684e6dc934 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ASP.NET を使用せずに WCF AJAX サービスを作成する方法 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] AJAX サービスには、JavaScript 対応の Web ページからアクセスできます。ASP.NET AJAX は必要ありません。 ここでは、このような [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを作成する方法について説明します。 + + ASP.NET AJAX と共に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用する手順については、「[ASP.NET AJAX 用の WCF サービスの作成](../../../../docs/framework/wcf/feature-details/creating-wcf-services-for-aspnet-ajax.md)」を参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] AJAX サービスを作成する手順は、次の 3 つに分けられます。 + +- ブラウザーからアクセスできる AJAX エンドポイントの作成 + +- AJAX 互換サービス コントラクトの作成 + +- WCF AJAX サービスへのアクセス + +## AJAX エンドポイントの作成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスで AJAX のサポートを有効にする最も基本的な方法は、次の例に示すように、サービスに関連付けられた .svc ファイルの を使用することです。 + +``` +<%ServiceHost + language=c# + Debug="true" + Service="Microsoft.Ajax.Samples.CityService" + Factory=System.ServiceModel.Activation.WebServiceHostFactory +%> +``` + + 構成を使用して AJAX エンドポイントを追加することもできます。 次のコード スニペットに示すように、サービス エンドポイントで を使用し、 を使用してこのエンドポイントを構成します。 + +``` + + + + + + + + + + + + + + + + +``` + + 実施例については、「[JSON および XML 形式の AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-with-json-and-xml-sample.md)」を参照してください。 + +## AJAX 互換サービス コントラクトの作成 + 既定では、AJAX エンドポイントを介して公開されるサービス コントラクトは、XML 形式でデータを返します。 また、次の例に示すように、既定では、エンドポイント アドレスの後に操作名を追加した URL に対する HTTP POST 要求によって、サービス操作にアクセスできます。 + +``` +[OperationContract] +string[] GetCities(string firstLetters); +``` + + この操作には、`http://serviceaddress/endpointaddress/GetCities` に対して HTTP POST を使用することによってアクセスでき、操作から XML メッセージが返されます。 + + Web プログラミング モデルを活用することで、これらの基本的な部分をカスタマイズできます。 たとえば、 属性または 属性を使用して、操作が応答する HTTP 動詞を制御したり、これらの属性の `UriTemplate` プロパティを使用して、カスタム URI を指定したりできます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md)」のトピックを参照してください。 + + AJAX サービスでは、JSON データ形式がよく使用されます。 XML ではなく JSON を返す操作を作成するには、 \(または \) プロパティを に設定します。 「[スタンドアロン JSON のシリアル化](../../../../docs/framework/wcf/feature-details/stand-alone-json-serialization.md)」には、組み込みの .NET 型やデータ コントラクト型を JSON にマッピングする方法が示されています。 + + JSON の要求と応答は、通常 1 つの項目のみで構成されます。 前述の `GetCities` 操作の場合、要求は次のようなステートメントになります。 + +``` +“na” +``` + + この要求に対する応答は、次のようなステートメントになります。 + +``` +[“Nairobi”, “Naples”, “Nashville”] +``` + + 操作で追加のパラメーターを受け取る場合は、両方のパラメーターを 1 つの JSON オブジェクトにラップするために、要求スタイルをラップする必要があります。 このスタイルの JSON メッセージの一例を次に示します。 + +``` +{“firstLetters”: “na”, “maxNumber”: 2} +``` + + 次のコントラクトがこのメッセージを受け入れます。 + +``` +[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)] +[OperationContract] +string[] GetCities(string firstLetters, int maxNumber); +``` + +## AJAX サービスへのアクセス + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] AJAX エンドポイントでは、常に JSON と XML の両方の要求を受け入れます。 + + コンテンツ タイプが "application\/json" である HTTP POST 要求は JSON として処理され、コンテンツ タイプが XML を示している \("text\/xml" など\) HTTP POST 要求は XML として処理されます。 + + HTTP GET 要求では、URL 自体にすべての要求パラメーターが含まれています。 + + エンドポイントに対して HTTP 要求を作成する方法は、ユーザーが自由に決定できます。 また、要求の本文を構成する JSON の作成についても、ユーザーが完全に制御できます。 JavaScript から要求を作成する方法の例については、「[JSON および XML 形式の AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-with-json-and-xml-sample.md)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/creating-wcf-services-for-aspnet-ajax.md b/docs/framework/wcf/feature-details/creating-wcf-services-for-aspnet-ajax.md new file mode 100644 index 00000000000..443164f2bfd --- /dev/null +++ b/docs/framework/wcf/feature-details/creating-wcf-services-for-aspnet-ajax.md @@ -0,0 +1,72 @@ +--- +title: "ASP.NET AJAX 用の WCF サービスの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 04c0402c-e617-4ba5-aedf-d17692234776 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# ASP.NET AJAX 用の WCF サービスの作成 +Microsoft ASP.NET AJAX により、応答性に優れ、使い慣れたユーザー インターフェイス要素を使用して、充実したユーザー エクスペリエンスを提供する Web ページを簡単に作成できます。ASP.NET AJAX には、ブラウザーに依存しない ECMAScript \(JavaScript\) テクノロジとダイナミック HTML \(DHTML\) テクノロジを組み込んだクライアント スクリプト ライブラリが用意されており、これらのライブラリが ASP.NET 2.0 サーバー ベース開発プラットフォームと統合されます。ASP.NET AJAX を使用することで、Web アプリケーションのユーザー エクスペリエンスと効率を向上させることができます。 + + ASP.NET AJAX は、クライアント スクリプト ライブラリとサーバー コンポーネントを統合した強固な開発フレームワークです。ASP.NET ページからサービスにアクセスする場合、サービス URL をページ上の ASP.NET スクリプト マネージャーに追加すると、標準の JavaScript 関数の呼び出しとまったく同じに見える JavaScript コードを使い、サービス操作を呼び出すことができます。AJAX フレームワーク内での Web サービスの使用については、「[ASP.NET AJAX について](http://go.microsoft.com/fwlink/?LinkId=186475)」を参照してください。 + + 適切な ASP.NET AJAX エンドポイントを追加すると、ほとんどの [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを、ASP.NET AJAX 互換のサービスとして公開できます。 + + Visual Studio を使用する場合は、AJAX 対応 WCF サービス用のビルド済みテンプレートを使用できます。このテンプレートは、ASP.NET Web サイトまたは Web アプリケーションでの作業中に **\[新しい項目の追加\]** ダイアログ ボックスで選択できます。 + + Visual Studio テンプレートを使用しない場合、ASP.NET AJAX エンドポイントを作成するには次の 2 つの方法があります。 + +- 構成を使用せずに、動的ホスト アクティブ化を使用してエンドポイントを作成する。これは、WCF 構成システムの操作に慣れていない場合の最も簡単な方法です。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : 構成を使用せずに ASP.NET AJAX エンドポイントを追加する](../../../../docs/framework/wcf/feature-details/how-to-add-an-aspnet-ajax-endpoint-without-using-configuration.md). + +- 構成を使用して、AJAX 対応のエンドポイントを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに追加する。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : 構成を使用して ASP.NET AJAX エンドポイントを追加する](../../../../docs/framework/wcf/feature-details/how-to-use-configuration-to-add-an-aspnet-ajax-endpoint.md). + + 「[WCF Web HTTP プログラミング モデルの概要](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md)」で説明されている Web プログラミング モデルは、ASP.NET AJAX サービスと共に使うことができます。具体的には、次のように使用します。 + +- および 属性を使用して、HTTP GET 動詞と HTTP POST 動詞のいずれかを選択できます。正しく使用すれば、アプリケーションのパフォーマンスを大幅に向上させることができます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : ASP.NET AJAX エンドポイントのために HTTP POST または HTTP GET を選択する](../../../../docs/framework/wcf/feature-details/http-post-and-http-get-requests-for-aspnet-ajax-endpoints.md). + +- および プロパティを使用して、サービスが返すデータを、既定の JSON \(JavaScript Object Notation\) ではなく XML データにすることができます。これを ASP.NET AJAX フレームワークで行うと、JavaScript クライアントは XML DOM オブジェクトを受け取ります。 + + > [!WARNING] + > この動作を機能させるには、コンテンツ タイプを text\/xml に設定する必要があります。設定しない場合、JavaScript クライアントは XML DOM オブジェクトではなく XML を含む文字列を受け取ります。 + + コンテンツ タイプが適切に設定された XML データを返す操作の例を次に示します。 + + ``` + [OperationContract, WebGet(ResponseFormat=WebMessageFormat.Xml)] + public XElement GetData() + { + XElement x; + //Get some data here... + + WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; + return x; + } + + ``` + +- ASP.NET AJAX との互換性が必要な場合、 および 属性の他の属性は変更できません。ASP.NET AJAX 呼び出し規約に違反しない限り、Web プログラミング モデルのその他の機能を使用できます。 + + より高度なシナリオでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での AJAX サポートについて、他にいくつかの詳細な事項を理解する必要があります。 + +- JavaScript を使用して AJAX ページ クライアントと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス間でデータを転送する方法と、.NET Framework の型を JavaScript の型に割り当てる方法の詳細については、「[JSON などのデータ転送形式のサポート](../../../../docs/framework/wcf/feature-details/support-for-json-and-other-data-transfer-formats.md)」を参照してください。 + +- たとえば、URL ベースの認証や ASP.NET セッション情報へのアクセスなどの ASP.NET 機能を活用するには、構成で ASP.NET 互換モードを有効にします。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の AJAX エンドポイントは、ASP.NET AJAX フレームワークなしで使用できます。これを行うには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での AJAX サポートのサポート アーキテクチャに関する知識が必要です。このアーキテクチャについては、「[WCF Web HTTP プログラミング オブジェクト モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-object-model.md)」を参照してください。この方法を実行するコード例については、「[JSON および XML 形式の AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-with-json-and-xml-sample.md)」を参照してください。 + +## 参照 + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) + [方法 : 構成を使用せずに ASP.NET AJAX エンドポイントを追加する](../../../../docs/framework/wcf/feature-details/how-to-add-an-aspnet-ajax-endpoint-without-using-configuration.md) + [方法 : 構成を使用して ASP.NET AJAX エンドポイントを追加する](../../../../docs/framework/wcf/feature-details/how-to-use-configuration-to-add-an-aspnet-ajax-endpoint.md) + [方法 : ASP.NET AJAX エンドポイントのために HTTP POST または HTTP GET を選択する](../../../../docs/framework/wcf/feature-details/http-post-and-http-get-requests-for-aspnet-ajax-endpoints.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/custom-filters.md b/docs/framework/wcf/feature-details/custom-filters.md new file mode 100644 index 00000000000..7745491bb46 --- /dev/null +++ b/docs/framework/wcf/feature-details/custom-filters.md @@ -0,0 +1,93 @@ +--- +title: "カスタム フィルター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 97cf247d-be0a-4057-bba9-3be5c45029d5 +caps.latest.revision: 5 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 5 +--- +# カスタム フィルター +カスタム フィルターを使用すると、システムが提供するメッセージ フィルターを使用して実現できない一致ロジックを定義できます。たとえば、特定のメッセージ要素をハッシュし、その値を検証してフィルターが true または false のどちらを返すかを決定するカスタム フィルターを作成できます。 + +## 実装 + カスタム フィルターは、 抽象基本クラスの実装です。カスタム フィルターを実装する場合は、コンストラクターが必要に応じて、文字列パラメーターを 1 つだけ受け取ることができます。このパラメーターには、MessageFilter コンストラクターに渡される構成情報が含まれ、フィルターが照合を実行するために実行時に必要とする値や構成を指示します。これは、評価対象のメッセージ内でフィルターが検索する必要がある値を提供する場合などに使用できます。文字列パラメーターを受け取るカスタムのメッセージ フィルターの基本の実装例を次に示します。 + +```csharp +public class MyMessageFilter: MessageFilter +{ + string filterData; + public MyMessageFilter(string filterData) + { + if(string.IsNullOrEmpty(filterData) + throw new ArgumentNullException("filterData"); + this.filterData=filterData; + } + public override bool Match(System.ServiceModel.Channels.Message message) + { + ... + return retValue; + } + public override bool Match(System.ServiceModel.Channels.MessageBuffer buffer) + { + ... + return retValue; + } +} +``` + +> [!NOTE] +> 実際の実装では、Match メソッドには、メッセージ フィルターが **true** と **false** のどちらを返すかを決めるためにメッセージを検証するロジックが設定されます。 + +### パフォーマンス + カスタム フィルターを実装する場合は、フィルターがメッセージの評価を完了するのに要する最大時間を考慮する必要があります。メッセージは、一致が見つかるまでに複数のフィルターに対して評価される場合があるので、すべてのフィルターを評価する前にクライアント要求がタイムアウトしないようにすることが重要です。したがって、カスタム フィルターのコードは、メッセージがフィルター条件に一致するかどうかを調べるために、メッセージのコンテンツまたは属性を評価するのに必要なコードだけにする必要があります。 + + 一般に、カスタム フィルターを実装する場合は、次のことを避ける必要があります。 + +- IO。たとえば、ディスクやデータベースへのデータの保存です。 + +- 不要な処理。たとえば、ドキュメントの複数のレコードのループ処理です。 + +- ブロック操作。たとえば、共有リソースに対するロックの取得を必要とする呼び出しや、データベースに対する検索の実行です。 + + 実稼働環境でカスタム フィルターを使用する前に、パフォーマンス テストを実行して、フィルターがメッセージを評価するのに要する平均時間を調べる必要があります。フィルター テーブルで使用される他のフィルターの平均処理時間と合わせることで、クライアント アプリケーションで指定する必要がある最大タイムアウト値を正確に計算できます。 + +## 使用法 + カスタム フィルターをルーティング サービスと使用するには、種類が "Custom" の新しいフィルター エントリ、メッセージ フィルターの完全修飾型名、およびアセンブリの名前を指定して、フィルター テーブルにカスタム フィルターを追加する必要があります。その他の MessageFilter と同様に、カスタム フィルターのコンストラクターに渡される文字列 filterData を指定できます。 + + カスタム フィルターをルーティング サービスと使用する例を次に示します。 + +```xml + + + + + + + + + + +
+
+
+``` + +```csharp +RoutingConfiguration rc = new RoutingConfiguration(); +List endpointList = new List(); +endpointList.Add(client); +rc.FilterTable.Add(new MyMessageFilter("CustomData"), endpointList); + +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/data-contract-equivalence.md b/docs/framework/wcf/feature-details/data-contract-equivalence.md new file mode 100644 index 00000000000..f8f476d624f --- /dev/null +++ b/docs/framework/wcf/feature-details/data-contract-equivalence.md @@ -0,0 +1,75 @@ +--- +title: "データ コントラクトの等価性 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "データ コントラクト [WCF], 等価性" +ms.assetid: f06f3c7e-c235-4ec1-b200-68142edf1ed1 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# データ コントラクトの等価性 +クライアントがサービスに特定の型のデータを正常に送信するために、またはサービスがクライアントにデータを正常に送信するために、送信する型が受信側に存在する必要があるとは限りません。 両方の型のデータ コントラクトが同等であるということが唯一の要件です \([データ コントラクトのバージョン管理](../../../../docs/framework/wcf/feature-details/data-contract-versioning.md) で説明されているように、厳密な同等が必要ない場合もあります\)。 + + データ コントラクトを同等にするには、そのデータ コントラクトに同じ名前空間と名前を使用する必要があります。 また、一方のデータ コントラクトの各データ メンバーには、他方のデータ コントラクトに同等のデータ メンバーがある必要があります。 + + データ メンバーを同等にするには、そのデータ メンバーに同じ名前を使用する必要があります。 さらに、データ メンバーは同じ型のデータを表す必要があります。つまり、データ コントラクトが同等である必要があります。 + +> [!NOTE] +> データ コントラクト名と名前空間、およびデータ メンバー名は、大文字と小文字を区別します。 + + データ コントラクト名と名前空間、およびデータ メンバー名の[!INCLUDE[crabout](../../../../includes/crabout-md.md)] 「[データ コントラクト名](../../../../docs/framework/wcf/feature-details/data-contract-names.md)」を参照してください。 + + 2 つの型が両側 \(送信者と受信者\) に存在し、そのデータ コントラクトが同等でない場合 \(たとえば、異なるデータ メンバーを含んでいる場合\)、そのデータ コントラクトに同じ名前と名前空間を使用しないでください。 同じ名前と名前空間を使用すると、例外がスローされる可能性があります。 + + 次の型のデータ コントラクトは同等です。 + + [!code-csharp[C_DataContractNames#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractnames/cs/source.cs#5)] + [!code-vb[C_DataContractNames#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractnames/vb/source.vb#5)] + +## データ メンバーの順序とデータ コントラクトの等価性 + クラスの プロパティの使用は、データ コントラクトの等価性に影響を与えることがあります。 データ コントラクトを同等にするには、データ メンバーが同じ順序で現れる必要があります。 既定の順序はアルファベット順です。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [データ メンバーの順序](../../../../docs/framework/wcf/feature-details/data-member-order.md). + + たとえば、次のコードでは、同等なデータ コントラクトが生成されます。 + + [!code-csharp[C_DataContractNames#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractnames/cs/source.cs#6)] + [!code-vb[C_DataContractNames#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractnames/vb/source.vb#6)] + + 次のコードでは、同等なデータ コントラクトは生成されません。 + + [!code-csharp[C_DataContractNames#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractnames/cs/source.cs#7)] + [!code-vb[C_DataContractNames#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractnames/vb/source.vb#7)] + +## 継承、インターフェイス、およびデータ コントラクトの等価性 + 等価性を判断するとき、別のデータ コントラクトから継承したデータ コントラクトは、基本型のすべてのデータ メンバーを含んでいる 1 つのデータ コントラクトとして扱われます。 データ メンバーの順序が一致する必要があり、基本型のメンバーは派生型のメンバーより前に現れる必要があります。 さらに、次のコード例のように、2 つのデータ メンバーの順序の値が同じ場合、そのデータ メンバーの順序はアルファベット順になります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [データ メンバーの順序](../../../../docs/framework/wcf/feature-details/data-member-order.md). + + 次の例では、型 `Employee` のデータ コントラクトは型 `Worker` のデータ コントラクトと同等です。 + + [!code-csharp[C_DataContractNames#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractnames/cs/source.cs#8)] + [!code-vb[C_DataContractNames#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractnames/vb/source.vb#8)] + + クライアントとサービスの間でパラメーターを渡し、値を返すとき、受信エンドポイントが派生クラスからのデータ コントラクトを予期している場合、基本クラスからのデータ コントラクトを送信できません。 これは、オブジェクト指向プログラミングの原則に基づいています。 前の例では、`Employee` が予期される場合、型 `Person` のオブジェクトを送信できません。 + + 基本クラスからのデータ コントラクトが予期されるときに派生クラスからのデータ コントラクトを送信することは可能ですが、受信エンドポイントが を使用して派生型を認識している場合に限ります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md). 上記の例では、`Person` が予期されるときに、受信者のコードが既知の型のリストに `Employee` を追加するために を使用している場合のみ、型 Employee のオブジェクトを送信できます。 + + アプリケーション間でパラメーターを渡し、値を返すとき、予期される型がインターフェイスの場合、その型は、型が の予期される型と同等です。 すべての型は最終的に から派生するので、すべてのデータ コントラクトは最終的に、 のデータ コントラクトから派生します。 したがって、インターフェイスが予期されるとき、すべてのデータ コントラクト型を渡すことができます。 インターフェイスを正常に操作するには追加の手順が必要です。詳細については、「[既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください。 + +## 参照 + + + [データ メンバーの順序](../../../../docs/framework/wcf/feature-details/data-member-order.md) + [既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) + [データ コントラクト名](../../../../docs/framework/wcf/feature-details/data-contract-names.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/data-contract-known-types.md b/docs/framework/wcf/feature-details/data-contract-known-types.md new file mode 100644 index 00000000000..8667bd96c0e --- /dev/null +++ b/docs/framework/wcf/feature-details/data-contract-known-types.md @@ -0,0 +1,185 @@ +--- +title: "既知のデータ コントラクト型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "データ コントラクト [WCF], 既知の型" + - "KnownTypeAttribute [WCF]" + - "KnownTypes [WCF]" +ms.assetid: 1a0baea1-27b7-470d-9136-5bbad86c4337 +caps.latest.revision: 42 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 42 +--- +# 既知のデータ コントラクト型 + クラスを使用すると、逆シリアル化において考慮する必要のある型を事前に指定できます。 実施例については、「[既知の型](../../../../docs/framework/wcf/samples/known-types.md)」の例を参照してください。 + + 通常は、クライアントとサービス間でパラメーターを渡したり、値を返したりするときに、転送するデータのデータ コントラクトのすべてが両方のエンドポイントで共有されます。 ただし、次の場合はこれが該当しません。 + +- 送信データ コントラクトが、予想データ コントラクトから派生する場合。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][データ コントラクトの等価性](../../../../docs/framework/wcf/feature-details/data-contract-equivalence.md)」の継承に関するセクションを参照してください。 この場合、送信されるデータには、受信エンドポイントで予想しているデータ コントラクトが含まれません。 + +- クラス、構造体、または列挙とは対照的に、送信される情報の宣言型がインターフェイスである場合。 したがって、インターフェイスを実装するどの型が実際に送信されるかを事前に知ることができないため、受信エンドポイントでは送信されるデータのデータ コントラクトを事前に確認することができません。 + +- 送信される情報の宣言型が である場合。 すべての型が から継承され、どの型が実際に送信されるかを事前に知ることができないため、受信エンドポイントでは送信されるデータのデータ コントラクトを事前に確認することができません。 これは最初の項目についての特殊なケースです。すべてのデータ コントラクトは既定で、 に対して生成された空のデータ コントラクトから派生します。 + +- [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型を含む一部の型に、前述した 3 つのカテゴリの 1 つに分類されるメンバーが含まれる場合。 たとえば、 を使用して、ハッシュ テーブルに実際のオブジェクトを保存します。 これらの型をシリアル化する場合、受信側ではこれらのメンバーのデータ コントラクトを事前に確認することができません。 + +## KnownTypeAttribute クラス + データが受信エンドポイントに到着すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムはデータを共通言語ランタイム \(CLR: Common Language Runtime\) 型のインスタンスに逆シリアル化しようとします。 逆シリアル化するためにインスタンス化される型は、まず受信メッセージを調べてメッセージの内容が従うデータ コントラクトを特定することで選択されます。 次に逆シリアル化エンジンは、メッセージの内容と互換性のあるデータ コントラクトを実装する CLR 型を探します。 逆シリアル化エンジンによってこの処理中に逆シリアル化の候補の型として許可される一連の型は、逆シリアル化の "既知の型" のセットと呼ばれます。 + + 逆シリアル化エンジンに型の情報を知らせる方法として、 を使用する方法があります。 この属性は、データ コントラクト型全体に適用できるだけで、個々のデータ メンバーには適用できません。 この属性は、クラスまたは構造体にすることが可能な*外部型*に適用されます。 最も簡単な使用方法は、属性を適用するときに "既知の型" として型を指定することです。 これによって、外部型のオブジェクトまたはメンバーを通して参照される任意のオブジェクトが逆シリアル化されるときに、必ず、その既知の型が既知の型のセットに追加されます。 複数の 属性を同じ型に適用することができます。 + +## 既知の型とプリミティブ + プリミティブとして扱われる特定の型 \( など\) と同様に、プリミティブ型は、常に "既知" であり、このメカニズムを通して追加する必要がありません。 ただし、プリミティブ型の配列は明示的に追加する必要があります。 ほとんどのコレクションは、配列と同等に扱われます。 \(非ジェネリック コレクションは、 の配列と同等に扱われます\)。 プリミティブ、プリミティブ配列、およびプリミティブ コレクションの使用例については、例 4 を参照してください。 + +> [!NOTE] +> 他のプリミティブ型とは異なり、 構造は、既定では既知の型ではないため、既知の型のリストに手動で追加する必要があります。 + +## 例 + クラスの使用例を次に示します。 + +#### 例 1 + 継承関係にある 3 つのクラスがあります。 + + [!code-csharp[C_KnownTypeAttribute#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_knowntypeattribute/cs/source.cs#1)] + [!code-vb[C_KnownTypeAttribute#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_knowntypeattribute/vb/source.vb#1)] + + 次の `CompanyLogo` クラスはシリアル化できますが、`ShapeOfLogo` メンバーが `CircleType` オブジェクトと `TriangleType` オブジェクトのどちらかに設定されている場合は、逆シリアル化エンジンが "Circle" や "Triangle" という名前のデータ コントラクト型を認識しないため、逆シリアル化することはできません。 + + [!code-csharp[C_KnownTypeAttribute#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_knowntypeattribute/cs/source.cs#2)] + [!code-vb[C_KnownTypeAttribute#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_knowntypeattribute/vb/source.vb#2)] + + `CompanyLogo` 型の正しいコードの記述方法は次のとおりです。 + + [!code-csharp[C_KnownTypeAttribute#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_knowntypeattribute/cs/source.cs#3)] + [!code-vb[C_KnownTypeAttribute#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_knowntypeattribute/vb/source.vb#3)] + + 外部型の `CompanyLogo2` が逆シリアル化されるときは、必ず、逆シリアル化エンジンが `CircleType` と `TriangleType` を認識するため、"Circle" データ コントラクトおよび "Triangle" データ コントラクトと一致する型を検出できます。 + +#### 例 2 + 次の例では、`CustomerTypeA` と `CustomerTypeB` の両方が `Customer` データ コントラクトを持っている場合でも、逆シリアル化エンジンは `CustomerTypeB` だけを認識するため、`PurchaseOrder` が逆シリアル化されるときは必ず `CustomerTypeB` のインスタンスが作成されます。 + + [!code-csharp[C_KnownTypeAttribute#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_knowntypeattribute/cs/source.cs#4)] + [!code-vb[C_KnownTypeAttribute#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_knowntypeattribute/vb/source.vb#4)] + +#### 例 3 + 次の例では、 として内部的にその内容を保存します。 ハッシュ テーブルを正常に逆シリアル化するには、逆シリアル化エンジンがそのテーブルに現れる可能性のある型のセットを認識している必要があります。 この場合は、`Book` オブジェクトと `Magazine` オブジェクトだけが `Catalog` に保存されているため、この 2 つが 属性を使用して追加されることが事前にわかっています。 + + [!code-csharp[C_KnownTypeAttribute#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_knowntypeattribute/cs/source.cs#5)] + [!code-vb[C_KnownTypeAttribute#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_knowntypeattribute/vb/source.vb#5)] + +#### 例 4 + 次の例では、データ コントラクトには数値と、その数値に基づいて実行する演算が含まれています。`Numbers` データ メンバーは、整数、整数の配列、または整数を含む にすることができます。 + +> [!CAUTION] +> この例は、WCF プロキシを生成するために SVCUTIL.EXE が使用されている場合にのみ、クライアント側で機能します。 SVCUTIL.EXE は、サービスからメタデータ \(任意の既知の型を含む\) を取得します。 この情報がない場合、クライアントは型を逆シリアル化できません。 + + [!code-csharp[C_KnownTypeAttribute#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_knowntypeattribute/cs/source.cs#6)] + [!code-vb[C_KnownTypeAttribute#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_knowntypeattribute/vb/source.vb#6)] + + アプリケーション コードは次のとおりです。 + + [!code-csharp[C_KnownTypeAttribute#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_knowntypeattribute/cs/source.cs#7)] + [!code-vb[C_KnownTypeAttribute#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_knowntypeattribute/vb/source.vb#7)] + +## 既知の型、継承、およびインターフェイス + `KnownTypeAttribute` 属性を使用して既知の型を特定の型に関連付けると、その既知の型がその特定の型から派生したすべての型に関連付けられます。 たとえば、次のコードを参照してください。 + + [!code-csharp[C_KnownTypeAttribute#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_knowntypeattribute/cs/source.cs#8)] + [!code-vb[C_KnownTypeAttribute#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_knowntypeattribute/vb/source.vb#8)] + + `DoubleDrawing` クラスは、`KnownTypeAttribute` フィールドで `Square` と `Circle` を使用するために `AdditionalShape` 属性を必要としません。これは、既に基本クラス \(`Drawing`\) にこれらの属性が適用されているためです。 + + 既知の型は、クラスと構造体にのみ関連付けることができます。インターフェイスに関連付けることはできません。 + +## オープン ジェネリック メソッドを使用する既知の型 + 既知の型としてジェネリック型の追加が必要な場合があります。 ただし、オープン ジェネリック型をパラメーターとして `KnownTypeAttribute` 属性に渡すことはできません。 + + この問題は、型の一覧を返すメソッドを作成して既知の型のコレクションに追加するという代替機構を使用することで解決できます。 次に、いくつかの制限事項があるため、このメソッドの名前を `KnownTypeAttribute` 属性への文字列引数として指定します。 + + このメソッドは、`KnownTypeAttribute` 属性を適用する型上に存在し、静的で、パラメーターを必要とせず、 に代入可能なオブジェクトを返す必要があります。 + + 同じ型上で、メソッド名を持つ `KnownTypeAttribute` 属性と実際の型を持つ `KnownTypeAttribute` 属性を組み合わせることはできません。 また、メソッド名が同じ複数の `KnownTypeAttribute` を同じ型に適用することはできません。 + + 次のクラスを参照してください。 + + [!code-csharp[C_KnownTypeAttribute#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_knowntypeattribute/cs/source.cs#9)] + [!code-vb[C_KnownTypeAttribute#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_knowntypeattribute/vb/source.vb#9)] + + `theDrawing` フィールドには、`ColorDrawing` ジェネリック クラスおよび `BlackAndWhiteDrawing` ジェネリック クラスのインスタンスを格納でき、これらのクラスは両方とも `Drawing` ジェネリック クラスから継承されています。 通常、両クラスとも既知の型に追加する必要がありますが、次の属性の構文は無効です。 + +```csharp +// Invalid syntax for attributes: +// [KnownType(typeof(ColorDrawing))] +// [KnownType(typeof(BlackAndWhiteDrawing))] +``` + +```vb +' Invalid syntax for attributes: +' +``` + + したがって、これらの型を返すメソッドを作成する必要があります。 この型の正しいコードの記述方法は次のとおりです。 + + [!code-csharp[C_KnownTypeAttribute#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_knowntypeattribute/cs/source.cs#10)] + [!code-vb[C_KnownTypeAttribute#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_knowntypeattribute/vb/source.vb#10)] + +## 既知の型を追加するその他の方法 + また、既知の型は、構成ファイルを使用して追加することもできます。 この方法は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でサードパーティ製の型ライブラリを使用する場合のように、既知の型の逆シリアル化が制御できない場合に便利です。 + + 構成ファイルで既知の型を指定する方法を次に示します。 + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + 前の構成ファイルでは、`MyCompany.Library.Shape` というコントラクト型が `MyCompany.Library.Circle` を既知の型として持つと宣言されています。 + +## 参照 + + + + + + [既知の型](../../../../docs/framework/wcf/samples/known-types.md) + [データ コントラクトの等価性](../../../../docs/framework/wcf/feature-details/data-contract-equivalence.md) + [サービス コントラクトの設計](../../../../docs/framework/wcf/designing-service-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/data-contract-names.md b/docs/framework/wcf/feature-details/data-contract-names.md new file mode 100644 index 00000000000..e42df436011 --- /dev/null +++ b/docs/framework/wcf/feature-details/data-contract-names.md @@ -0,0 +1,88 @@ +--- +title: "データ コントラクト名 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "データ コントラクト [WCF], 名前付け" +ms.assetid: 31f87e6c-247b-48f5-8e94-b9e1e33d8d09 +caps.latest.revision: 27 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 27 +--- +# データ コントラクト名 +クライアントとサービスが同じ型を共有しないことがあります。このような場合でも、双方のデータ コントラクトが等価であれば、相互にデータを受け渡すことができます。[データ コントラクトの等価性](../../../../docs/framework/wcf/feature-details/data-contract-equivalence.md)は、データ コントラクトとデータ メンバーの名前に基づいているため、型とメンバーを名前にマップするための機構が用意されています。ここでは、データ コントラクトの命名規則に加えて、名前を作成する際の [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] インフラストラクチャの既定の動作についても説明します。 + +## 基本的な規則 + データ コントラクトの名前付けに関する基本的な規則は次のとおりです。 + +- データ コントラクトの完全修飾名は、名前空間と名前から構成されます。 + +- データ メンバーは名前のみを持ち、名前空間はありません。 + +- データ コントラクトを処理するときに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャは、データ コントラクトの名前空間と名前およびデータ メンバーの名前について大文字と小文字を区別します。 + +## データ コントラクト名前空間 + データ コントラクトの名前空間は、URI \(Uniform Resource Identifier\) の形式を使用します。URI は、絶対 URI でも相対 URI のどちらでもかまいません。既定では、特定の型のデータ コントラクトには、その型の共通言語ランタイム \(CLR: Common Language Runtime\) 名前空間に基づく名前空間が割り当てられます。 + + 既定では、任意の CLR 名前空間 \(*Clr.Namespace* の形式\) が、名前空間 "http:\/\/schemas.datacontract.org\/2004\/07\/Clr.Namespace" にマップされます。この既定をオーバーライドするには、 属性をモジュールまたはアセンブリ全体に適用します。また、型ごとにデータ コントラクト名前空間を制御するには、 プロパティを設定します。 + +> [!NOTE] +> "http:\/\/schemas.microsoft.com\/2003\/10\/Serialization" 名前空間は予約されているため、データ コントラクトの名前空間として使用することはできません。 + +> [!NOTE] +> `delegate` 宣言を含むデータ コントラクト型では、既定の名前空間をオーバーライドすることはできません。 + +## データ コントラクト名 + ある型のデータ コントラクトの既定の名前は、その型の名前になります。この既定をオーバーライドするには、 プロパティを別の名前に設定します。ジェネリック型に関する特別な規則については、このトピックで後述される「ジェネリック型のデータ コントラクト名」で説明します。 + +## データ メンバー名 + フィールドまたはプロパティのデータ メンバーの既定の名前は、そのフィールドまたはプロパティの名前になります。この既定をオーバーライドするには、 プロパティを別の値に設定します。 + +### 例 + 次の例では、データ コントラクトおよびデータ メンバーの既定の名前付け動作をオーバーライドする方法を示します。 + + [!code-csharp[C_DataContractNames#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractnames/cs/source.cs#1)] + [!code-vb[C_DataContractNames#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractnames/vb/source.vb#1)] + +## ジェネリック型のデータ コントラクト名 + ジェネリック型のデータ コントラクト名を決定する場合は、特別な規則があります。これらの規則は、同じジェネリック型の 2 つのクローズ ジェネリックの間でデータ コントラクト名の競合を回避するのに役立ちます。 + + 既定では、ジェネリック型のデータ コントラクト名は、型の名前の後に文字列 "Of"、ジェネリック パラメーターのデータ コントラクト名、ジェネリック パラメーターのデータ コントラクト名前空間を使用して計算された*ハッシュ*が続きます。ハッシュとは、1 つのデータを一意に識別するための "指紋" として機能する、数学関数の結果です。ジェネリック パラメーターがすべてプリミティブ型の場合は、ハッシュは省略されます。 + + たとえば、次の例の型を見てください。 + + [!code-csharp[C_DataContractNames#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractnames/cs/source.cs#2)] + [!code-vb[C_DataContractNames#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractnames/vb/source.vb#2)] + + この例では、`Drawing` 型は "DrawingOfSquareRedBrush5HWGAU6h" というデータ コントラクト名を持ちます。ここで "5HWGAU6h" は "urn:shapes" および "urn:default" 名前空間のハッシュになります。`Drawing` 型は "DrawingOfSquareRedBrushjpB5LgQ\_S" というデータ コントラクト名を持ちます。ここで "jpB5LgQ\_S" は "urn:shapes" および "urn:special" 名前空間のハッシュになります。ハッシュを使用しないと 2 つの名前は同一になり、名前の競合が発生することに注意してください。 + +## ジェネリック型のデータ コントラクト名のカスタマイズ + 前述のようにジェネリック型用に生成されたデータ コントラクト名を容認できない場合があります。たとえば、名前の競合が起こらないことが前もってわかっているため、ハッシュを削除するとします。この場合、`DataContractAttribute` 属性の プロパティを使用して、名前を生成する別の方法を指定できます。`Name` プロパティの中かっこ内に数字を指定して、ジェネリック パラメーターのデータ コントラクト名を参照できます \(0 は最初のパラメーターを参照し、1 は 2 番目のパラメーターを参照します。以下同様です\)。中かっこ内にシャープ記号 \(\#\) を指定すると、ハッシュを参照できます。これらの各参照は、複数回使用しても、まったく使用しなくてもかまいません。 + + たとえば、前の `Drawing` ジェネリック型は次の例に示すように宣言できます。 + + [!code-csharp[c_DataContractNames#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractnames/cs/source.cs#3)] + [!code-vb[c_DataContractNames#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractnames/vb/source.vb#3)] + + この場合、`Drawing` 型は、"Drawing\_using\_RedBrush\_brush\_and\_Square\_shape" というデータ コントラクト名になります。 プロパティに "{\#}" があるため、名前にはハッシュは含まれません。したがって、この型では名前の競合が発生しやすくなります。たとえば、`Drawing` 型は、まったく同じデータ コントラクト名を持ちます。 + +## 参照 + + + + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + [データ コントラクトの等価性](../../../../docs/framework/wcf/feature-details/data-contract-equivalence.md) + [Data Contract Names](../../../../docs/framework/wcf/feature-details/data-contract-names.md) + [データ コントラクトのバージョン管理](../../../../docs/framework/wcf/feature-details/data-contract-versioning.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/data-contract-schema-reference.md b/docs/framework/wcf/feature-details/data-contract-schema-reference.md new file mode 100644 index 00000000000..ea2767a3d0c --- /dev/null +++ b/docs/framework/wcf/feature-details/data-contract-schema-reference.md @@ -0,0 +1,697 @@ +--- +title: "データ コントラクト スキーマの参照 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ コントラクト [WCF], スキーマの参照" +ms.assetid: 9ebb0ebe-8166-4c93-980a-7c8f1f38f7c0 +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# データ コントラクト スキーマの参照 +ここでは、XML シリアル化用の共通言語ランタイム \(CLR\) 型を表すために が使用する XML スキーマ \(XSD\) のサブセットについて説明します。 + +## DataContractSerializer のマッピング + `DataContractSerializer` は、メタデータ エンドポイントや [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用してメタデータを [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスからエクスポートするときに、CLR 型を XSD にマッピングします。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [データ コントラクト シリアライザー](../../../../docs/framework/wcf/feature-details/data-contract-serializer.md)。 + + また、`DataContractSerializer` は、Svcutil.exe を使用して Web サービス記述言語 \(WSDL\) や XSD ドキュメントにアクセスし、サービスまたはクライアントのデータ コントラクトを生成するときに、XSD を CLR 型にマッピングします。 + + `DataContractSerializer` を使用して CLR 型にマッピングできるのは、この文書に記載されている要件に適合する XML スキーマ インスタンスに限られます。 + +### サポート レベル + `DataContractSerializer` は、特定の XML スキーマ機能に次のサポート レベルを提供します。 + +- **サポートあり**。 この機能から CLR 型または属性の一方または両方への、`DataContractSerializer` を使用する明示的なマッピングが存在します。 + +- **無視**。 この機能は、`DataContractSerializer` によってインポートされたスキーマで使用できますが、コードの生成に影響しません。 + +- **禁止**。`DataContractSerializer` は、この機能を使用するスキーマのインポートをサポートしません。 たとえば、Svcutil.exe は、この機能を使用するスキーマに基づいて WSDL にアクセスする場合、代わりに を使用します。 これが既定値です。 + +## 一般情報 + +- スキーマ名前空間については、「[XML Schema \(XML スキーマ\)](http://go.microsoft.com/fwlink/?LinkId=95475)」を参照してください。 このドキュメントでは、プレフィックス "xs" を使用しています。 + +- スキーマ以外の名前空間を含む属性は無視されます。 + +- 注釈 \(このドキュメントで説明しているものを除きます\) はすべて無視されます。 + +### \: 属性 + +|属性|DataContract| +|--------|------------------| +|`attributeFormDefault`|無視されます。| +|`blockDefault`|無視されます。| +|`elementFormDefault`|修飾する必要があります。`DataContractSerializer` でスキーマをサポートするには、すべての要素を修飾する必要があります。 要素を修飾するには、xs:schema\/@elementFormDefault を "qualified" に設定するか、個々の要素の宣言で xs:element\/@form を "qualified" に設定します。| +|`finalDefault`|無視されます。| +|`Id`|無視されます。| +|`targetNamespace`|サポートされます。データ コントラクト名前空間にマッピングされます。 この属性を指定しなかった場合は、空の名前空間が使用されます。 予約されている名前空間 http:\/\/schemas.microsoft.com\/2003\/10\/Serialization\/ は指定できません。| +|`version`|無視されます。| + +### \ : コンテンツ + +|目次|Schema| +|--------|------------| +|`include`|サポートされています。`DataContractSerializer` では xs:include と xs:import がサポートされています。 ただし、メタデータをローカル ファイルから読み込む場合、Svcutil.exe では、後続の `xs:include/@schemaLocation` 参照と `xs:import/@location` 参照が制限されます。 この場合、`include` ではなく帯域外機構を通じてスキーマ ファイルの一覧を渡す必要があります。`include` されたスキーマ ドキュメントは無視されます。| +|`redefine`|禁止。 セキュリティ上の理由により、`xs:redefine` では、`DataContractSerializer` の使用が禁止されています。`x:redefine` では、`schemaLocation` を後続させる必要があります。 状況によっては、DataContract を使用する Svcutil.exe では、`schemaLocation` の使用が制限されます。| +|`import`|サポートされています。`DataContractSerializer` では、`xs:include` と `xs:import` がサポートされています。 ただし、メタデータをローカル ファイルから読み込む場合、Svcutil.exe では、後続の `xs:include/@schemaLocation` 参照と `xs:import/@location` 参照が制限されます。 この場合、`include` ではなく帯域外機構を通じてスキーマ ファイルの一覧を渡す必要があります。`include` されたスキーマ ドキュメントは無視されます。| +|`simpleType`|サポートされています。`xs:simpleType` のセクションを参照してください。| +|`complexType`|サポートされます。データ コントラクトにマッピングされます。`xs:complexType` のセクションを参照してください。| +|`group`|無視されます。`DataContractSerializer` では、`xs:group`、`xs:attributeGroup`、および `xs:attribute` の使用はサポートされていません。 これらの宣言は `xs:schema` の子として無視され、`complexType` やその他のサポートされている構文内から参照できません。| +|`attributeGroup`|無視されます。`DataContractSerializer` では、`xs:group`、`xs:attributeGroup`、および `xs:attribute` の使用はサポートされていません。 これらの宣言は `xs:schema` の子として無視され、`complexType` やその他のサポートされている構文内から参照できません。| +|`element`|サポートされています。 グローバル要素宣言 \(GED\) を参照してください。| +|`attribute`|無視されます。`DataContractSerializer` では、`xs:group`、`xs:attributeGroup`、および `xs:attribute` の使用はサポートされていません。 これらの宣言は `xs:schema` の子として無視され、`complexType` やその他のサポートされている構文内から参照できません。| +|`notation`|無視されます。| + +## 複合型 – \ + +### 一般情報 + 各複合型 \ は、データ コントラクトにマッピングされます。 + +### \: 属性 + +|属性|Schema| +|--------|------------| +|`abstract`|false \(既定\) のみ有効です。| +|`block`|禁止。| +|`final`|無視されます。| +|`id`|無視されます。| +|`mixed`|false \(既定\) のみ有効です。| +|`name`|サポートされています。データ コントラクト名にマッピングされます。 名前にピリオドが含まれている場合は、内部型への型のマッピングが実行されます。 たとえば、`A.B` という名前の複合型は、データ コントラクト名 `A` を持つ型の内部型であるデータ コントラクト型にマッピングされますが、このようなデータ コントラクト型が存在する場合に限られます。 複数レベルの入れ子が可能です。たとえば、`A.B.C` という内部型も可能ですが、これは、`A` と `A.B` の両方が存在する場合に限られます。| + +### \ : コンテンツ + +|目次|Schema| +|--------|------------| +|`simpleContent`|拡張は禁止です。

制限は、`anySimpleType` からのみ許可されます。| +|`complexContent`|サポートされています。 「継承」を参照してください。| +|`group`|禁止。| +|`all`|禁止。| +|`choice`|禁止。| +|`sequence`|サポートされます。データ コントラクトのデータ メンバーにマッピングされます。| +|`attribute`|use\="prohibited" の場合でも禁止です \(ただし、例外が 1 つあります\)。 標準シリアル化スキーマ名前空間のオプションの属性のみがサポートされます。 これらは、データ コントラクト プログラミング モデルのデータ メンバーにマッピングされません。 現在、これらの属性で意味のあるものは 1 つだけです。詳細については、ISerializable のセクションを参照してください。 他の属性はすべて無視されます。| +|`attributeGroup`|禁止。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] v1 リリースの `DataContractSerializer` では、`attributeGroup` 内部の `xs:complexType` の存在が無視されます。| +|`anyAttribute`|禁止。| +|\(空\)|データ メンバーを持たないデータ コントラクトにマッピングされます。| + +### 複合型での \ : 属性 + +|属性|Schema| +|--------|------------| +|`id`|無視されます。| +|`maxOccurs`|1 \(既定\) のみ有効です。| +|`minOccurs`|1 \(既定\) のみ有効です。| + +### 複合型での \ : コンテンツ + +|目次|Schema| +|--------|------------| +|`element`|各インスタンスがデータ メンバーにマッピングされます。| +|`group`|禁止。| +|`choice`|禁止。| +|`sequence`|禁止。| +|`any`|禁止。| +|\(空\)|データ メンバーを持たないデータ コントラクトにマッピングされます。| + +## 要素 – \ + +### 一般情報 + `` は、次の構文で発生します。 + +- `` 内で発生し、通常 \(コレクション以外\) のデータ コントラクトのデータ メンバーを表すことができます。 この場合、`maxOccurs` 属性は 1 にする必要があります \(値 0 は使用できません\)。 + +- `` 内で発生し、コレクション データ コントラクトのデータ メンバーを表すことができます。 この場合、`maxOccurs` 属性は 2 以上の値か、"unbounded" にする必要があります。 + +- `` 内で GED \(グローバル要素宣言\) として発生します。 + +### \ 内の maxOccurs\=1 を持つ \ \(データ メンバー\) + +|属性|Schema| +|--------|------------| +|`ref`|禁止。| +|`name`|サポートされます。データ メンバー名にマッピングされます。| +|`type`|サポートされます。データ メンバー型にマッピングされます。 詳細については、「型\/プリミティブのマッピング」を参照してください。 指定しない場合 \(および要素に匿名型が含まれていない場合\) は、`xs:anyType` が使用されます。| +|`block`|無視されます。| +|`default`|禁止。| +|`fixed`|禁止。| +|`form`|修飾する必要があります。 この属性は、`elementFormDefault` の `xs:schema` を通じて設定できます。| +|`id`|無視されます。| +|`maxOccurs`|1| +|`minOccurs`|データ メンバーの プロパティにマッピングされます \(`IsRequired` が 1 の場合、`minOccurs` は true です\)。| +|`nillable`|型のマッピングに影響します。 「型\/プリミティブのマッピング」を参照してください。| + +### \ 内の maxOccurs\>1 を持つ \ \(コレクション\) + +- にマッピングされます。 + +- コレクションの型では、xs:sequence 内で xs:element を 1 つしか使用できません。 + + コレクションは次のいずれかになります。 + +- 標準コレクション \(配列など\)。 + +- ディクショナリ コレクション \(1 つの値を別の値にマッピングする、 など\)。 + +- ディクショナリとキー\/値ペアの配列の種類との唯一の相違は、生成されるプログラミング モデルにあります。 特定の種類がディクショナリ コレクションであることを示すには、スキーマ注釈機構を使用できます。 + + `ref`、`block`、`default`、`fixed`、`form`、および `id` の各属性に対するルールは、コレクション以外の場合と同じです。 その他に、次の表に示す属性があります。 + +|属性|Schema| +|--------|------------| +|`name`|サポートされます。 属性の `CollectionDataContractAttribute` プロパティにマッピングされます。| +|`type`|サポートされます。コレクションに格納されている型にマッピングされます。| +|`maxOccurs`|2 以上または "unbounded"。 DC スキーマでは、"unbounded" を使用する必要があります。| +|`minOccurs`|無視されます。| +|`nillable`|型のマッピングに影響します。 この属性は、ディクショナリ コレクションでは無視されます。| + +### \ グローバル要素宣言内の \ + +- スキーマ内の型と同じ名前および名前空間を持つか、それ自体の内部で匿名型を定義するグローバル要素宣言 \(GED\) は、型に関連付けられていると言います。 + +- スキーマのエクスポート : 単純型と複合型の両方で、生成された型ごとに関連 GED が生成されます。 + +- 逆シリアル化\/シリアル化 : 関連 GED が、該当する型のルート要素として使用されます。 + +- スキーマのインポート : 次のルールに従う場合、関連 GED は不要となり無視されます \(ただし、それが型を定義する場合を除きます\)。 + +|属性|Schema| +|--------|------------| +|`abstract`|関連 GED では false のみ有効です。| +|`block`|関連 GED では禁止です。| +|`default`|関連 GED では禁止です。| +|`final`|関連 GED では false のみ有効です。| +|`fixed`|関連 GED では禁止です。| +|`id`|無視されます。| +|`name`|サポートされています。 関連 GED の定義を参照してください。| +|`nillable`|関連 GED では true のみ有効です。| +|`substitutionGroup`|関連 GED では禁止です。| +|`type`|サポートされます。関連 GED に関連付けられた型に一致させる必要があります \(ただし、要素に匿名型が含まれている場合を除きます\)。| + +### \ : コンテンツ + +|目次|Schema| +|--------|------------| +|`simpleType`|サポートされています。\*| +|`complexType`|サポートされています。\*| +|`unique`|無視されます。| +|`key`|無視されます。| +|`keyref`|無視されます。| +|\(空白\)|サポートされています。| + + \* `simpleType` および `complexType,` を使用する場合、匿名型のマッピングは、匿名データ コントラクトが存在しないことを除き、非匿名型の場合と同じです。そのため、要素名から派生した名前の付いたデータ コントラクトが作成されます。 匿名型のルールは、次のとおりです。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 実装詳細 : `xs:element` 名にピリオドが含まれていない場合、匿名型は、外部データ コントラクト型の内部型にマッピングされます。 名前にピリオドが含まれている場合、結果のデータ コントラクト型は、内部型ではなく、独立した型になります。 + +- 内部型の生成されたデータ コントラクト名は、外部型のデータ コントラクト名の後にピリオド、要素の名前、および文字列 "Type" が付いたものになります。 + +- そのような名前を持つデータ コントラクトが既に存在する場合は、"1"、"2"、"3" などの番号が付加されて一意の名前になります。 + +## 単純型 \- \ + +### \ : 属性 + +|属性|Schema| +|--------|------------| +|`final`|無視されます。| +|`id`|無視されます。| +|`name`|サポートされます。データ コントラクト名にマッピングされます。| + +### \ : コンテンツ + +|目次|Schema| +|--------|------------| +|`restriction`|サポートされています。 列挙データ コントラクトにマッピングされます。 列挙パターンに一致しない場合、この属性は無視されます。`xs:simpleType` の制限のセクションを参照してください。| +|`list`|サポートされています。 フラグ列挙データ コントラクトにマッピングされます。`xs:simpleType` の一覧のセクションを参照してください。| +|`union`|禁止。| + +### \ + +- 複合型制限は、base\="`xs:anyType`" の場合のみサポートされます。 + +- `xs:string` 以外の制限ファセットを持たない `xs:enumeration` の単純型制限は、列挙データ コントラクトにマッピングされます。 + +- その他すべての単純型制限は、それぞれが制限する型にマッピングされます。 たとえば、`xs:int` の制限は、`xs:int` 自体と同様に整数にマッピングされます。 プリミティブ型のマッピング[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「型\/プリミティブのマッピング」を参照してください。 + +### \ : 属性 + +|属性|Schema| +|--------|------------| +|`base`|サポートされている単純型または `xs:anyType` のみ有効です。| +|`id`|無視されます。| + +### 他のすべての場合の \ : コンテンツ + +|目次|Schema| +|--------|------------| +|`simpleType`|存在する場合、サポートされているプリミティブ型から派生する必要があります。| +|`minExclusive`|無視されます。| +|`minInclusive`|無視されます。| +|`maxExclusive`|無視されます。| +|`maxInclusive`|無視されます。| +|`totalDigits`|無視されます。| +|`fractionDigits`|無視されます。| +|`length`|無視されます。| +|`minLength`|無視されます。| +|`maxLength`|無視されます。| +|`enumeration`|無視されます。| +|`whiteSpace`|無視されます。| +|`pattern`|無視されます。| +|\(空白\)|サポートされています。| + +## 列挙 + +### 列挙体の \ : 属性 + +|属性|Schema| +|--------|------------| +|`base`|存在する場合、`xs:string` のみ有効です。| +|`id`|無視されます。| + +### 列挙体の \ : コンテンツ + +|目次|Schema| +|--------|------------| +|`simpleType`|存在する場合、データ コントラクトによってサポートされている列挙体制限 \(このセクション\) のみ有効です。| +|`minExclusive`|無視されます。| +|`minInclusive`|無視されます。| +|`maxExclusive`|無視されます。| +|`maxInclusive`|無視されます。| +|`totalDigits`|無視されます。| +|`fractionDigits`|無視されます。| +|`length`|禁止。| +|`minLength`|禁止。| +|`maxLength`|禁止。| +|`enumeration`|サポートされています。 列挙体 "id" は無視され、"値" が列挙データ コントラクトの値の名前にマッピングされます。| +|`whiteSpace`|禁止。| +|`pattern`|禁止。| +|\(空\)|サポートされます。空の列挙型にマッピングされます。| + + 次のコードは、C\# の列挙クラスを示しています。 + +``` +public enum MyEnum +{ + first = 3, + second = 4, + third =5 +``` + + } + + このクラスは `DataContractSerializer` により、次のスキーマにマッピングされます。 列挙値が 1 から始まる場合、`xs:annotation` ブロックは生成されません。 + +``` + + + + + + + 3 + + + + + + + + + 4 + + + + + + +``` + +### \ + `DataContractSerializer` は、`System.FlagsAttribute` によってマークされた列挙型を、`xs:list` から派生した `xs:string` にマッピングします。 これ以外の `xs:list` のバリエーションはサポートされません。 + +### \ : 属性 + +|属性|Schema| +|--------|------------| +|`itemType`|禁止。| +|`id`|無視されます。| + +### \ : コンテンツ + +|目次|Schema| +|--------|------------| +|`simpleType`|`xs:string` ファセットを使用する `xs:enumeration` からの制限のみ有効です。| + + 列挙値が 2 の累乗の数列 \(フラグの既定\) に従わない場合、値は `xs:annotation/xs:appInfo/ser:EnumerationValue` 要素に格納されます。 + + たとえば、次のコードは列挙型をフラグとして処理します。 + +``` +[Flags] +public enum AuthFlags +{ + AuthAnonymous = 1, + AuthBasic = 2, + AuthNTLM = 4, + AuthMD5 = 16, + AuthWindowsLiveID = 64, +} +``` + + この列挙型は次のスキーマにマッピングされます。 + +``` + + + + + + + + + + + 16 + + + + + + + 64 + + + + + + + +``` + +## 継承 + +### 一般ルール + データ コントラクトは、別のデータ コントラクトを継承できます。 このようなデータ コントラクトは base にマッピングされ、`` XML スキーマ コントラクトを使用する拡張型によって派生されます。 + + データ コントラクトは、コレクション データ コントラクトを継承できません。 + + データ コントラクトの例を次のコードに示します。 + +``` +[DataContract] +public class Person +{ + [DataMember] + public string Name; +} +[DataContract] +public class Employee : Person +{ + [DataMember] + public int ID; +} +``` + + このデータ コントラクトは次の XML スキーマ型の宣言にマッピングされます。 + +``` + + + + + + + + + + + + + + +``` + +### \ : 属性 + +|属性|Schema| +|--------|------------| +|`id`|無視されます。| +|`mixed`|false のみ有効です。| + +### \ : コンテンツ + +|目次|Schema| +|--------|------------| +|`restriction`|禁止ですが、base\="`xs:anyType`" の場合を除きます。 後者は、`xs:restriction` のコンテナーの下に `xs:complexContent` のコンテンツを直接配置するのと同じです。| +|`extension`|サポートされています。 データ コントラクトの継承にマッピングされます。| + +### \ での \ : 属性 + +|属性|Schema| +|--------|------------| +|`id`|無視されます。| +|`base`|サポートされています。 この型が継承する基本データ コントラクト型にマッピングされます。| + +### \ での \ : コンテンツ + `` コンテンツと同じルールです。 + + `` を指定した場合は、そのメンバー要素が、派生データ コントラクトに存在する追加のデータ メンバーにマッピングされます。 + + 基本型の要素と同じ名前を持つ要素が派生型に含まれている場合は、重複する要素宣言が、一意のものとして生成される名前を持つデータ メンバーにマッピングされます。 データ メンバーの名前には、一意の名前が見つかるまで正の整数が付加されます \("member1"、"member2" など\)。 これに対して、次のようになります。 + +- 基本データ コントラクトのデータ メンバーと同じ名前および型を持つデータ メンバーが派生データ コントラクトに存在する場合、`DataContractSerializer` は、これに対応する要素を派生型で生成します。 + +- 基本データ コントラクトのデータ メンバーと名前は同じでも型が異なるデータ メンバーが派生データ コントラクトに存在する場合、`DataContractSerializer` は、`xs:anyType` 型の要素を含むスキーマを、基本型と派生型の両方の宣言にインポートします。 元の型名は、`xs:annotations/xs:appInfo/ser:ActualType/@Name` に保持されます。 + + それぞれのデータ メンバーの順序によっては、これら両方のバリエーションにより、あいまいなコンテンツ モデルを含むスキーマが生じる場合があります。 + +## 型\/プリミティブのマッピング + `DataContractSerializer` は、XML スキーマのプリミティブ型で次のマッピングを使用します。 + +|XSD 型|.NET 型| +|-----------|------------| +|`anyType`|。| +|`anySimpleType`|。| +|`duration`|。| +|`dateTime`|。| +|`dateTimeOffset`|オフセットの および 。 後の「DateTimeOffset のシリアル化」を参照してください。| +|`time`|。| +|`date`|。| +|`gYearMonth`|。| +|`gYear`|。| +|`gMonthDay`|。| +|`gDay`|。| +|`gMonth`|。| +|`boolean`|| +|`base64Binary`| 配列| +|`hexBinary`|。| +|`float`|。| +|`double`|。| +|`anyURI`|。| +|`QName`|。| +|`string`|。| +|`normalizedString`|。| +|`token`|。| +|`language`|。| +|`Name`|。| +|`NCName`|。| +|`ID`|。| +|`IDREF`|。| +|`IDREFS`|。| +|`ENTITY`|。| +|`ENTITIES`|。| +|`NMTOKEN`|。| +|`NMTOKENS`|。| +|`decimal`|。| +|`integer`|。| +|`nonPositiveInteger`|。| +|`negativeInteger`|。| +|`long`|。| +|`int`|。| +|`short`|。| +|`Byte`|。| +|`nonNegativeInteger`|。| +|`unsignedLong`|。| +|`unsignedInt`|。| +|`unsignedShort`|。| +|`unsignedByte`|。| +|`positiveInteger`|。| + +## ISerializable 型のマッピング + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] Version 1.0 では、永続性の確保やデータ転送のためにオブジェクトをシリアル化する一般的な機構として `ISerializable` が導入されました。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] を実装したり、アプリケーション間で受け渡したりできる、さまざまな `ISerializable` 型があります。`DataContractSerializer` は、当然ながら `ISerializable` クラスをサポートします。`DataContractSerializer` は、型の QName \(修飾名\) のみが異なり、事実上プロパティ コレクションである `ISerializable` 実装スキーマ型をマッピングします。 たとえば、`DataContractSerializer` は、http:\/\/schemas.datacontract.org\/2004\/07\/System 名前空間にある次の XSD 型に をマッピングします。 + +``` + + + + + + +``` + + データ コントラクトのシリアル化スキーマで宣言されたオプションの属性 `ser:FactoryType` は、型を逆シリアル化できるファクトリ クラスを参照します。 ファクトリ クラスは、使用する `DataContractSerializer` インスタンスの既知の型コレクションの一部である必要があります。 既知の型[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください。 + +## DataContract のシリアル化スキーマ + `DataContractSerializer` によってエクスポートされたいくつかのスキーマでは、次の特別なデータ コントラクト シリアル化名前空間の型、要素、および属性を使用します。 + + http:\/\/schemas.microsoft.com\/2003\/10\/Serialization + + データ コントラクト シリアル化スキーマの完全な宣言を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + ここで次の点に注意します。 + +- `ser:char` を導入して、型 の Unicode 文字を表現します。 + +- `valuespace` の `xs:duration` を順序付きセットに縮小し、 にマッピングできるようにします。 + +- `FactoryType` から派生した型からエクスポートされたスキーマで を使用します。 + +## 非 DataContract スキーマのインポート + `DataContractSerializer` には、`ImportXmlTypes` XSD プロファイルに準拠しないスキーマのインポートを可能にする `DataContractSerializer` オプションがあります \(「 プロパティ」を参照してください\)。 このオプションを `true` に設定すると、非準拠スキーマ型を受け入れ、それを次の実装 \( の配列をラップする \) にマッピングできるようになります \(クラス名のみ異なります\)。 + +``` +[GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")] +[System.Xml.Serialization.XmlSchemaProviderAttribute("ExportSchema")] +[System.Xml.Serialization.XmlRootAttribute(IsNullable=false)] +public partial class Person : object, IXmlSerializable +{ + private XmlNode[] nodesField; + private static XmlQualifiedName typeName = +new XmlQualifiedName("Person","http://Microsoft.ServiceModel.Samples"); + public XmlNode[] Nodes + { + get {return this.nodesField;} + set {this.nodesField = value;} + } + public void ReadXml(XmlReader reader) + { + this.nodesField = XmlSerializableServices.ReadNodes(reader); + } + public void WriteXml(XmlWriter writer) + { + XmlSerializableServices.WriteNodes(writer, this.Nodes); + } + public System.Xml.Schema.XmlSchema GetSchema() + { + return null; + } + public static XmlQualifiedName ExportSchema(XmlSchemaSet schemas) + { + XmlSerializableServices.AddDefaultSchema(schemas, typeName); + return typeName; + } +} +``` + +## DateTimeOffset のシリアル化 + はプリミティブ型としては扱われません。 その代わりに、2 つの部分から成る複合型要素としてシリアル化されます。 最初の部分は日時を表し、2 番目の部分は日時からのオフセットを表します。 次のコード例に、シリアル化された DateTimeOffset 値を示します。 + +``` + + 2008-08-28T08:00:00 + + -480 + + +``` + + スキーマは次のとおりです。 + +``` + + + + + + + + +``` + +## 参照 + + + + + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/data-contract-serializer.md b/docs/framework/wcf/feature-details/data-contract-serializer.md new file mode 100644 index 00000000000..09d08ea718b --- /dev/null +++ b/docs/framework/wcf/feature-details/data-contract-serializer.md @@ -0,0 +1,49 @@ +--- +title: "データ コントラクト シリアライザー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ コントラクト [WCF], シリアライザー" + - "DataContractSerializer" + - "WCF, データ" +ms.assetid: 3d64837e-0a0c-4cc8-90ff-a5c6f313c63a +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# データ コントラクト シリアライザー +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] インフラストラクチャでは、 クラスを既定のシリアライザーとして使用します。このセクションの各トピックでは、これをスタンドアロンのシリアライザーとして使用するときの詳細について説明します。 + +## このセクションの内容 + [シリアル化と逆シリアル化](../../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md) + クラスを使用してオブジェクト グラフをシリアル化したり、XML ドキュメントをオブジェクトに逆シリアル化したりする方法を詳細に説明します。 + + [スキーマのインポートとエクスポート](../../../../docs/framework/wcf/feature-details/schema-import-and-export.md) + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] クラスから XML スキーマ定義言語 \(XSD: XML Schema Definition Language\) スキーマを生成する方法、また XSD スキーマ ドキュメントからコードを生成する方法について説明します。 + +## 関連項目 + + + + + + + + +## 関連項目 + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + + [データ転送とシリアル化](../../../../docs/framework/wcf/feature-details/data-transfer-and-serialization.md) + +## 参照 + [データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md) + [サービス コントラクトでのデータ転送の指定](../../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/data-contract-versioning.md b/docs/framework/wcf/feature-details/data-contract-versioning.md new file mode 100644 index 00000000000..36982980ec2 --- /dev/null +++ b/docs/framework/wcf/feature-details/data-contract-versioning.md @@ -0,0 +1,138 @@ +--- +title: "データ コントラクトのバージョン管理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "データ コントラクト [WCF], バージョン管理" + - "バージョン管理 [WCF]" + - "バージョン管理 [WCF], データ コントラクト" +ms.assetid: 4a0700cb-5f5f-4137-8705-3a3ecf06461f +caps.latest.revision: 35 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 35 +--- +# データ コントラクトのバージョン管理 +アプリケーションの進化に伴って、サービスが使用するデータ コントラクトを変更することが必要になる場合があります。 ここでは、データ コントラクトをバージョン管理する方法について説明します。 データ コントラクトのバージョン管理のメカニズムについても説明します。 バージョン管理全般の概要および規範となるガイダンスについては、「[ベスト プラクティス : データ コントラクトのバージョン管理](../../../../docs/framework/wcf/best-practices-data-contract-versioning.md)」を参照してください。 + +## 互換性に影響する変更と影響しない変更 + データ コントラクトへの変更には、互換性に影響するものと影響しないものとがあります。 互換性に影響しない方法でデータ コントラクトを変更すると、古いバージョンのコントラクトを使用するアプリケーションは新しいバージョンを使用するアプリケーションと通信できます。また、新しいバージョンを使用するアプリケーションも古いバージョンを使用するアプリケーションと通信できます。 一方、互換性に影響する変更では、一方向または双方向で通信できなくなります。 + + 型を変更してもその送受信方法に影響しない場合は、互換性に影響しない変更と呼びます。 このような変更では、データ コントラクトは変更されず、基になる型のみが変更されます。 たとえば、フィールドの名前を変更した後で プロパティを以前のバージョン名に設定すれば、互換性に影響しません。 次のコードに、バージョン 1 のデータ コントラクトを示します。 + + [!code-csharp[C_DataContractVersioning#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractversioning/cs/source.cs#1)] + [!code-vb[C_DataContractVersioning#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractversioning/vb/source.vb#1)] + + 互換性に影響しない変更を次のコードに示します。 + + [!code-csharp[C_DataContractVersioning#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractversioning/cs/source.cs#2)] + [!code-vb[C_DataContractVersioning#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractversioning/vb/source.vb#2)] + + 変更によっては、送信されるデータを変更しても、必ずしも互換性に影響しない場合もあります。 次の変更は常に互換性に影響します。 + +- データ コントラクトの 値または 値の変更。 + +- プロパティを使用したデータ メンバーの順序の変更。 + +- データ メンバーの名前の変更。 + +- データ メンバーのデータ コントラクトの変更 \(たとえば、データ メンバーの型を整数型から文字列型に変更したり、"Customer" という名前のデータ コントラクトを持つ型を "Person" という名前のデータ コントラクトを持つ型に変更したりするなど\)。 + + 以下のような変更も考えられます。 + +## データ メンバーの追加と削除 + 厳密なスキーマ検証 \(古いスキーマに基づく新しいインスタンスの検証\) が必要ではない限り、多くの場合、データ メンバーの追加または削除は互換性に影響する変更ではありません。 + + 追加のフィールドを持つ型が、そのフィールドを持たない型に逆シリアル化された場合、追加のフィールドにある情報は無視されます \(ラウンド トリップのために、この情報が保存される場合もあります。詳細については、「[上位互換性のあるデータ コントラクト](../../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md)」を参照してください\)。 + + 一部のフィールドが足りない型が、追加のフィールドを持つ型に逆シリアル化された場合、追加のフィールドは既定値 \(通常はゼロまたは `null`\) のままになります \(既定値は変更される場合があります。詳細については、「[バージョン トレラントなシリアル化コールバック](../../../../docs/framework/wcf/feature-details/version-tolerant-serialization-callbacks.md)」を参照してください\)。 + + たとえば、クライアントで `CarV1` クラスを使用し、サービスで `CarV2` クラスを使用することも、サービスで `CarV1` クラスを使用し、クライアントで `CarV2` クラスを使用することもできます。 + + [!code-csharp[C_DataContractVersioning#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractversioning/cs/source.cs#3)] + [!code-vb[C_DataContractVersioning#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractversioning/vb/source.vb#3)] + + バージョン 2 のエンドポイントからバージョン 1 のエンドポイントに正常にデータを送信できます。 `Car` データ コントラクトのバージョン 2 をシリアル化すると、次のような XML が生成されます。 + +``` + + Porsche + 300 + +``` + + バージョン 1 の逆シリアル化エンジンでは、`HorsePower` フィールドに一致するデータ メンバーを見つけられないため、データは破棄されます。 + + また、バージョン 1 のエンドポイントからバージョン 2 のエンドポイントにデータを送信することもできます。 `Car` データ コントラクトのバージョン 1 をシリアル化すると、次のような XML が生成されます。 + +``` + + Porsche + +``` + + 受信 XML に一致するデータがないため、バージョン 2 のデシリアライザーでは `HorsePower` フィールドを何に設定するのか判別できません。 そのため、このフィールドには既定値である 0 が設定されます。 + +## 必須データ メンバー + プロパティを `true` に設定すると、データ メンバーを必須のデータ メンバーとしてマークできます。 逆シリアル化中に必須データがない場合、データ メンバーは既定値に設定されず、代わりに例外がスローされます。 + + 必須のデータ メンバーの追加は、互換性に影響する変更です。 つまり、新しい型を古い型のエンドポイントに送信することはできますが、その逆はできなくなります。 以前のバージョンで必須としてマークされていたデータ メンバーを削除することも、互換性に影響する変更です。 + + プロパティの値を `true` から `false` に変更することは互換性に影響しませんが、`false` から `true` に変更すると、これよりも以前のいずれかのバージョンの型にこのデータ メンバーが存在していない場合、互換性に影響することがあります。 + +> [!NOTE] +> プロパティが `true` に設定されていても、受信データは NULL またはゼロの場合があるので、型ではこの可能性を処理できるようにしておく必要があります。 不適切な受信データに対するセキュリティ保護メカニズムとして を使用しないでください。 + +## 既定値の省略 + 「[データ メンバーの既定値](../../../../docs/framework/wcf/feature-details/data-member-default-values.md)」で説明したように、DataMemberAttribute 属性の `EmitDefaultValue` プロパティを `false` に設定できます \(ただし、この設定はお勧めしません\)。 このプロパティが `false` に設定されている場合、データ メンバーが既定値 \(通常 NULL またはゼロ\) に設定されていても、そのデータ メンバーは出力されません。 これにより、次の 2 つの点で、異なるバージョンの必須データ メンバーの互換性が失われます。 + +- あるバージョンで必須になっているデータ メンバーを持つデータ コントラクトは、データ メンバーの `EmitDefaultValue` が `false` に設定されている別のバージョンから既定 \(NULL またはゼロ\) のデータを受信できません。 + +- `EmitDefaultValue` が `false` に設定されている必須データ メンバーは、既定値 \(NULL またはゼロ\) をシリアル化で使用できませんが、逆シリアル化ではこのような値を受信できます。 これによりラウンド トリップの問題が発生します \(データを読み取ることはできますが、書き込むことができません\)。 そのため、あるバージョンにおいて `IsRequired` が `true` であり、`EmitDefaultValue` が `false` である場合、どのバージョンのデータ コントラクトにおいてもラウンド トリップを発生させる値を生成できるように、これ以外のすべてのバージョンに同じ組み合わせを適用する必要があります。 + +## スキーマの考慮事項 + データ コントラクト型用に生成されるスキーマについては、「[データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)」を参照してください。 + + データ コントラクト型用に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が生成するスキーマは、バージョン管理に対応していません。 つまり、あるバージョンの型からエクスポートされたスキーマには、そのバージョンに存在するデータ メンバーのみが含まれます。 インターフェイスを実装しても、型のスキーマは変更されません。 + + データ メンバーは、既定でオプション要素としてスキーマにエクスポートされます。 つまり、`minOccurs` \(XML 属性\) の値は 0 に設定されています。 `minOccurs` を 1 に設定した場合、必須データ メンバーがエクスポートされます。 + + スキーマを厳密に遵守する必要がある場合、互換性に影響しないと思われる変更の多くが、実際には互換性に影響します。 前述の例では、`CarV1` 要素だけを持つ `Model` インスタンスは、`CarV2` スキーマ \(`Model` と `Horsepower` の 2 つの要素を持ちますが、いずれも省略可能です\) に対して有効です。 しかし、この逆は真ではありません。つまり、`CarV2` インスタンスは `CarV1` スキーマに対して検証が失敗します。 + + ラウンド トリップにもいくつかの考慮事項があります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[上位互換性のあるデータ コントラクト](../../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md)」の「スキーマの考慮事項」のセクションを参照してください。 + +### 許可されるその他の変更 + インターフェイスの実装は、互換性に影響しない変更です。 ただし、 が実装されていた型のバージョンより前のバージョンでは、ラウンド トリップはサポートされていません。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[上位互換性のあるデータ コントラクト](../../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md)」を参照してください。 + +## 列挙 + 列挙体メンバーの追加や削除は、互換性に影響する変更です。 `EnumMemberAtttribute` 属性を使用して古いバージョンのコントラクト名を保持しない限り、列挙体メンバーの名前の変更は互換性に影響します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[データ コントラクトの列挙型](../../../../docs/framework/wcf/feature-details/enumeration-types-in-data-contracts.md)」を参照してください。 + +## コレクション + コレクション型の大半はデータ コントラクト モデル内で交換可能であるため、多くの場合、コレクションの変更は互換性に影響しません。 ただし、カスタマイズされていないコレクションからカスタマイズされたコレクションへの変更またはその逆の変更は、互換性に影響する変更です。 また、コレクションのカスタマイズ設定の変更 \(データ コントラクトの名前と名前空間の変更、要素名、キー要素名、および値要素名の反復\) も互換性に影響します。 コレクションのカスタマイズ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[データ コントラクトのコレクション型](../../../../docs/framework/wcf/feature-details/collection-types-in-data-contracts.md)」を参照してください。 +また、コレクションの内容のデータ コントラクトの変更 \(整数のリストから文字列のリストへの変更など\) は互換性に影響する変更です。 + +## 参照 + + + + + + + + + [バージョン トレラントなシリアル化コールバック](../../../../docs/framework/wcf/feature-details/version-tolerant-serialization-callbacks.md) + [ベスト プラクティス : データ コントラクトのバージョン管理](../../../../docs/framework/wcf/best-practices-data-contract-versioning.md) + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + [データ コントラクトの等価性](../../../../docs/framework/wcf/feature-details/data-contract-equivalence.md) + [上位互換性のあるデータ コントラクト](../../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/data-member-default-values.md b/docs/framework/wcf/feature-details/data-member-default-values.md new file mode 100644 index 00000000000..b06fdec2520 --- /dev/null +++ b/docs/framework/wcf/feature-details/data-member-default-values.md @@ -0,0 +1,65 @@ +--- +title: "データ メンバーの既定値 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ メンバー [WCF]" + - "データ メンバー [WCF], 既定値" +ms.assetid: 53a3b505-4b27-444b-b079-0eb84a97cfd8 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# データ メンバーの既定値 +[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] では、型に*既定値*の概念があります。たとえば、参照型の既定値は `null` で、整数型の既定値は 0 です。しかし、データ メンバーが既定値に設定されている場合は、シリアル化されたデータからそのデータ メンバーを省略することが望ましいことがあります。それは、メンバーが既定値に設定されているために実際の値をシリアル化する必要がなく、パフォーマンスの点で有利だからです。 + + シリアル化されたデータからデータ メンバーを省略するには、 属性の プロパティを `false` に設定します \(既定値は `true`\)。 + +> [!NOTE] +> 相互運用性の維持やデータ サイズの縮小のような特別なニーズがある場合は、 を `false` に設定する必要があります。 + +## 例 + 次のコードには、 が `false` に設定された複数のメンバーが含まれています。 + + [!code-csharp[DataMemberAttribute#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/datamemberattribute/cs/overview.cs#4)] + [!code-vb[DataMemberAttribute#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/datamemberattribute/vb/overview.vb#4)] + + このクラスのインスタンスをシリアル化すると、次に示すように `employeeName` と `employeeID` がシリアル化されます。`employeeName` の null 値と `employeeID` の値 0 は、シリアル化されるデータに明示的に含められます。ただし、`position`、`salary`、および `bonus` のメンバーはシリアル化されません。また、 プロパティは `false` に設定されていますが、57800 が .NET の整数の既定値 \(0\) と一致しないため、`targetSalary` が通常どおりにシリアル化されます。 + +### XML 表現 + 前の例を XML にシリアル化すると、生成される XML 表現は次のようになります。 + +``` + + + 0 +57800 + +``` + + `xsi:nil` 属性は W3C \(World Wide Web Consortium\) XML スキーマ インスタンス名前空間の特別な属性であり、null 値を明示的に表すための相互運用可能な方法を提供します。この XML には、地位、給与、ボーナスの各データ メンバーに関する情報がまったく含まれていないことに注目してください。これらのデータ メンバーは、受信エンドポイントで、それぞれ `null`、0、および `null` として解釈します。これらをサードパーティ製のデシリアライザーで正しく解釈できる保証はないため、このパターンはお勧めしません。 クラスを使用すると、値が指定されていない場合でも、常に正しい解釈が選択されます。 + +### IsRequired との対話 + 「[データ コントラクトのバージョン管理](../../../../docs/framework/wcf/feature-details/data-contract-versioning.md)」で説明されているように、 属性には プロパティ \(既定値は `false`\) があります。このプロパティは、シリアル化されたデータを逆シリアル化する際に、指定されたデータ メンバーが存在する必要があるかどうかを示します。`IsRequired` が `true` \(値が存在する必要がある\) に設定され、 が `false` \(既定値に設定されている場合は、値が存在する必要がない\) に設定されている場合は、結果が矛盾するため、このデータ メンバーの既定値をシリアル化できません。このようなデータ メンバーを既定値 \(通常は `null` または 0\) に設定してシリアル化を実行すると、 がスローされます。 + +### スキーマ表現 + `EmitDefaultValue` プロパティを `false` に設定したときのデータ メンバーの XML スキーマ定義言語 \(XSD: XML Schema Definition Language\) スキーマ表現の詳細については、「[データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)」を参照してください。以下に、その概要を簡単に説明します。 + +- を `false` に設定すると、スキーマでは [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に固有の注釈として表現されます。この情報を表すための相互運用可能な方法はありません。特に、スキーマにおける "default" 属性はこの目的では使用されません。また、`minOccurs` 属性は 設定だけに影響され、`nillable` 属性はデータ メンバーの型だけに影響されます。 + +- 使用される実際の既定値は、スキーマには存在しません。指定されていない要素が適切に解釈されるかどうかは、受信エンドポイントに依存します。 + + スキーマのインポートでは、前述の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に固有の注釈が検出されるたびに プロパティが自動的に `false` に設定されます。また、このプロパティは、一般に [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスを使用したときに発生する特定の相互運用シナリオをサポートするために、`nillable` プロパティが `false` に設定されている参照型に対しても、`false` に設定されます。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/data-member-order.md b/docs/framework/wcf/feature-details/data-member-order.md new file mode 100644 index 00000000000..f660237ec87 --- /dev/null +++ b/docs/framework/wcf/feature-details/data-member-order.md @@ -0,0 +1,72 @@ +--- +title: "データ メンバーの順序 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ コントラクト [WCF], メンバーの順序" +ms.assetid: 0658a47d-b6e5-4ae0-ba72-ababc3c6ff33 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# データ メンバーの順序 +一部のアプリケーションでは、各種のデータ メンバーから送信される、または受信されると予想できるデータの順序 \(たとえばシリアル化された XML でデータが表れる順序\) がわかると便利です。この順序を変更する必要が生じることもあります。ここでは、このような順序を決定する規則について説明します。 + +## 基本的な規則 + データの順序を決定する基本的な規則には、次のようなものがあります。 + +- データ コントラクト型が継承階層の一部である場合、その基本型のデータ メンバーが常に最初の順番になります。 + +- 次に来るのは 属性の プロパティが設定されていない、現在の型のデータ メンバー \(アルファベット順\) になります。 + +- その次に来るのは、 属性の プロパティが設定されているすべてのデータ メンバーです。これらのデータ メンバーはまず `Order` プロパティの値によって並べられ、次に特定の `Order` 値を持つメンバーが複数ある場合は、そのアルファベット順に並びます。Order 値はスキップされることがあります。 + + アルファベット順は、 メソッドを呼び出すことによって確立されます。 + +## 例 + 次のコードについて考えてみましょう。 + + [!code-csharp[C_DataContractNames#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractnames/cs/source.cs#4)] + [!code-vb[C_DataContractNames#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractnames/vb/source.vb#4)] + + 作成される XML は、次のようになります。 + +``` + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + [データ コントラクトの等価性](../../../../docs/framework/wcf/feature-details/data-contract-equivalence.md) + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/data-transfer-and-serialization.md b/docs/framework/wcf/feature-details/data-transfer-and-serialization.md new file mode 100644 index 00000000000..f3c772be070 --- /dev/null +++ b/docs/framework/wcf/feature-details/data-transfer-and-serialization.md @@ -0,0 +1,72 @@ +--- +title: "データ転送とシリアル化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ シリアル化 [WCF]" + - "データ転送 [WCF]" +ms.assetid: 0f03c635-f3e7-4c5c-9463-3cb0135e221e +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# データ転送とシリアル化 +接続されたシステムでは、サービスとクライアントのタスクの実行は、データの交換に依存します。サービスやクライアントの開発者は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のデータ処理方法とデータのシリアル化を理解して、効果的で保守しやすいアプリケーションを作成する必要があります。 + +## このセクションの内容 + [サービス コントラクトでのデータ転送の指定](../../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md) + サービスでのデータ転送の基本的な概念について説明します。 + + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + データ コントラクトの定義と、その作成方法と使用方法について説明します。 + + [データ コントラクト シリアライザー](../../../../docs/framework/wcf/feature-details/data-contract-serializer.md) + クラス、または クラスの拡張機能で、データのシリアル化を実行する方法について説明します。 + + [XmlSerializer クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-xmlserializer-class.md) + クラスの代わりに、 クラスを使う方法とその理由について説明します。 + + [メッセージ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-message-contracts.md) + メッセージ コントラクトで SOAP メッセージを詳細に制御する方法について説明します。 + + [メッセージ クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-message-class.md) + メッセージ クラス機能の使用方法について説明します。 + + [フィルター処理](../../../../docs/framework/wcf/feature-details/filtering.md) + 各種の条件に基づいて、メッセージを事前処理できるフィルター処理について説明します。 + + [大規模データとストリーミング](../../../../docs/framework/wcf/feature-details/large-data-and-streaming.md) + バイナリ ファイルなど、大きなデータ ブロックを送信する方法について説明します。 + + [セキュリティに関するデータの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-for-data.md) + データの転送とシリアル化をプログラムするときに注意する必要のある項目について説明します。 + + [データ転送のアーキテクチャの概要](../../../../docs/framework/wcf/feature-details/data-transfer-architectural-overview.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] におけるデータ転送の全般的な設計について説明します。 + +## 関連項目 + + + + + + + + + + +## 関連項目 + [エンコーダーとシリアライザーの拡張](../../../../docs/framework/wcf/extending/extending-encoders-and-serializers.md) + +## 参照 + [ベスト プラクティス : データ コントラクトのバージョン管理](../../../../docs/framework/wcf/best-practices-data-contract-versioning.md) + [サービスのバージョン管理](../../../../docs/framework/wcf/service-versioning.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/data-transfer-architectural-overview.md b/docs/framework/wcf/feature-details/data-transfer-architectural-overview.md new file mode 100644 index 00000000000..fa1a82b3460 --- /dev/null +++ b/docs/framework/wcf/feature-details/data-transfer-architectural-overview.md @@ -0,0 +1,280 @@ +--- +title: "データ転送のアーキテクチャの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ転送 [WCF], アーキテクチャの概要" +ms.assetid: 343c2ca2-af53-4936-a28c-c186b3524ee9 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# データ転送のアーキテクチャの概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、一種のメッセージング インフラストラクチャと考えることができます。 WCF は、メッセージを受信し、それらのメッセージを処理し、さらにアクションを実行するためにユーザー コードにディスパッチすることができます。また、ユーザー コードで指定されたデータからメッセージを作成し、送信先に配布することもできます。 ここでは、メッセージを処理するためのアーキテクチャと格納されるデータについて説明します。このトピックは、上級開発者を対象としています。 データを送受信する方法のより簡単なタスク指向の概要については、「[サービス コントラクトでのデータ転送の指定](../../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md)」を参照してください。 + +> [!NOTE] +> ここでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] オブジェクト モデルを調べても明らかにはならない [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 実装の詳細について説明します。 文書化された実装の詳細について、2 つの注意事項があります。 1 つは、説明が簡略化されているという点です。実際の実装は、最適化やその他の理由から、より複雑であることが考えられます。 もう 1 つの注意事項として、特定の実装の詳細が文書化されていても、その詳細に依存しないようにしてください。これらの詳細は、バージョン間で予告なしに変更されることがあるからです。これは、サービス リリースにおいても同様です。 + +## 基本アーキテクチャ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のメッセージ処理機能の中核となるのは、 クラスです。このクラスの詳細については、「[メッセージ クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-message-class.md)」を参照してください。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のランタイム コンポーネントは、チャネル スタックとサービス フレームワークという 2 つの主要部分に分けることができ、 クラスがコネクション ポイントになります。 + + チャネル スタックは、有効な インスタンスと、メッセージ データの送信または受信に対応するアクションとの間の変換を行います。 送信側のチャネル スタックは、有効な インスタンスを取得し、何らかの処理を行った後、メッセージの送信に論理的に対応するアクションを実行します。 このアクションには、TCP パケットまたは HTTP パケットの送信、メッセージ キューへのメッセージの配置、データベースへのメッセージの書き込み、ファイル共有へのメッセージの保存、実装によって異なるその他のアクションなどがあります。 最も一般的なアクションは、ネットワーク プロトコル上でのメッセージの送信です。 受信側では、この逆のことが行われます。つまり、アクション \(TCP パケットまたは HTTP パケットの到着の場合もあれば、その他のアクションの場合もあります\) が検出され、チャネル スタックが処理を行った後に、このアクションを有効な インスタンスに変換します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クラスとチャネル スタックを直接使用して、 を使用できます。 ただし、この作業は困難であり、時間もかかります。 また、 オブジェクトはメタデータをサポートしていないため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] をこのように使用した場合、厳密に型指定された [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを生成することはできません。 + + そのため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、`Message` オブジェクトの構築と受信に使用できる使いやすいプログラミング モデルを提供するサービス フレームワークが用意されています。 サービス フレームワークは、サービス コントラクトの概念によってサービスを [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型にマップし、 属性でマークされた [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] メソッドであるユーザー操作にメッセージをディスパッチします \(詳細については、「[サービス コントラクトの設計](../../../../docs/framework/wcf/designing-service-contracts.md)」を参照してください\)。 これらのメソッドは、パラメーターと戻り値を持つことができます。 サービス側では、サービス フレームワークが受信 インスタンスをパラメーターに変換し、戻り値を送信 インスタンスに変換します。 クライアント側では、この逆のことが行われます。 たとえば、次のような `FindAirfare` の操作について考えてみます。 + + [!code-csharp[c_DataArchitecture#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_dataarchitecture/cs/source.cs#1)] + [!code-vb[c_DataArchitecture#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_dataarchitecture/vb/source.vb#1)] + + クライアントで `FindAirfare` が呼び出されたとします。 クライアントのサービス フレームワークは、`FromCity` パラメーターと `ToCity` パラメーターを送信 インスタンスに変換し、これをチャネル スタックに渡して送信します。 + + サービス側では、チャネル スタックから インスタンスが到着すると、サービス フレームワークがメッセージから関連データを抽出して `FromCity` パラメーターと `ToCity` パラメーターを設定し、サービス側の `FindAirfare` メソッドを呼び出します。 メソッドから制御が戻ると、サービス フレームワークは、返された整数値と `IsDirectFlight` 出力パラメーターを取得し、この情報を格納する オブジェクトのインスタンスを作成します。 次に、この `Message` インスタンスをチャネル スタックに渡して、クライアントに返送します。 + + クライアント側では、応答メッセージが格納された インスタンスが、チャネル スタックから取り出されます。 サービス フレームワークは、戻り値と `IsDirectFlight` 値を抽出し、これらをクライアントの呼び出し元に返します。 + +## Message クラス + クラスはメッセージの抽象表現を意図したものですが、そのデザインは SOAP メッセージと密接に関連しています。 には、情報の 3 つの主要部分であるメッセージ本文、メッセージ ヘッダー、およびメッセージ プロパティが含まれます。 + +## メッセージ本文 + メッセージ本文は、メッセージの実際のデータ ペイロードを表すためのものです。 メッセージ本文は、常に XML Infoset として表されます。 これは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で作成または受信されるすべてのメッセージが XML 形式でなければならないということではありません。 メッセージ本文を解釈する方法を決定するのはチャネル スタックです。 チャネル スタックは、メッセージ本文を XML として出力する場合もあれば、他の形式に変換する場合もあります。また、メッセージ本文を完全に除外する場合もあります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で提供されるほとんどのバインディングでは、メッセージ本文は SOAP エンベロープの body セクションに XML コンテンツとして表されます。 + + `Message` クラスは、本文を表す XML データを保持するバッファーを必ずしも含むわけではないことを認識しておくことが重要です。`Message` には XML Infoset が論理的に含まれますが、この Infoset は動的に構築可能であると同時に、メモリ内に物理的に存在することはありません。 + +### メッセージ本文へのデータの配置 + メッセージ本文にデータを配置するための統一された機構はありません。 クラスには、抽象メソッド があります。このメソッドは、 を取得します。 クラスの各サブクラスは、このメソッドをオーバーライドし、独自のコンテンツを書き込む必要があります。 メッセージ本文には、`OnWriteBodyContent` によって生成された XML Infoset が論理的に含まれます。 たとえば、次のような `Message` サブクラスについて考えてみます。 + + [!code-csharp[c_DataArchitecture#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_dataarchitecture/cs/source.cs#2)] + [!code-vb[c_DataArchitecture#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_dataarchitecture/vb/source.vb#2)] + + 物理的には、`AirfareRequestMessage` インスタンスには 2 つの文字列 \("fromCity" と "toCity"\) しか含まれていません。 ただし、このメッセージには、次のような XML Infoset が論理的に含まれています。 + +``` + + Tokyo + London + +``` + + もちろん、このようにメッセージを作成することは、通常はありません。上記のようなメッセージは、サービス フレームワークを使用して、操作コントラクト パラメーターから作成できるためです。 さらに、 クラスには、静的 `CreateMessage` メソッドもあります。このメソッドを使用すると、一般的な種類の内容を含むメッセージ \(空のメッセージ、 によって XML にシリアル化されたオブジェクトを含むメッセージ、SOAP エラーを含むメッセージ、 によって表された XML を含むメッセージなど\) を作成できます。 + +### メッセージ本文からのデータの取得 + メッセージ本文に格納されたデータは、主に次の 2 とおりの方法で抽出できます。 + +- メソッドを呼び出し、XML ライターに渡すことにより、メッセージ本文全体を一度に取得できます。 メッセージ本文全体がこのライターに書き込まれます。 メッセージ本文全体を一度に取得することを、*メッセージの書き込み*とも呼びます。 書き込みは、メッセージの送信時に主にチャネル スタックによって実行されます。チャネル スタックには、通常、メッセージ本文全体にアクセスし、本文全体をエンコードして送信する部分があります。 + +- メッセージ本文から情報を取得するもう 1 つの方法は、 を呼び出し、XML リーダーを取得する方法です。 リーダーでメソッドを呼び出すことにより、必要に応じてメッセージ本文に順次アクセスできます。 メッセージ本文を少しずつ取得することを、*メッセージの読み取り*とも呼びます。 メッセージの読み取りは、メッセージの受信時にサービス フレームワークによって主に使用されます。 たとえば、 の使用時に、サービス フレームワークは本文で XML リーダーを取得し、逆シリアル化エンジンに渡します。逆シリアル化エンジンは、要素単位でメッセージを読み取り、対応するオブジェクト グラフの構築を開始します。 + + メッセージ本文を取得できるのは一度だけです。 これにより、転送専用ストリームを使用することが可能になります。 たとえば、 から読み取り、XML Infoset として結果を返す のオーバーライドを作成できます。 ファイルの先頭まで "巻き戻す" 必要はありません。 + + `WriteBodyContents` メソッドと `GetReaderAtBodyContents` メソッドは、メッセージ本文がこれまで一度も取得されていないことを簡単にチェックした後、それぞれ `OnWriteBodyContents` と `OnGetReaderAtBodyContents` を呼び出します。 + +## WCF でのメッセージの使用 + ほとんどのメッセージは、*送信* \(チャネル スタックによって送信するために、サービス フレームワークが作成するメッセージ\) または*受信* \(チャネル スタックから到着し、サービス フレームワークが解釈するメッセージ\) のいずれかに分類できます。 さらに、チャネル スタックは、バッファー モードまたはストリーミング モードで動作できます。 また、サービス フレームワークが、ストリーム プログラミング モデルを公開する場合もあれば、非ストリーム プログラミング モデルを公開する場合もあります。 この結果として生じるケースと、その実装の簡略化した詳細を次の表に示します。 + +|メッセージの種類|メッセージの本文データ|書き込み \(OnWriteBodyContents\) 実装|読み取り \(OnGetReaderAtBodyContents\) 実装| +|--------------|-----------------|-------------------------------------|-------------------------------------------| +|送信 \(非ストリーム プログラミング モデルから作成\)|メッセージの書き込みに必要なデータ \(例 : オブジェクトとそのシリアル化に必要な インスタンス\)\*|格納されたデータに基づいてメッセージを書き込むためのカスタム ロジック \(例 : `WriteObject` を使用している場合に、このシリアライザーで `DataContractSerializer` を呼び出す\)\*|`OnWriteBodyContents` を呼び出し、結果をバッファーに保持し、バッファーで XML リーダーを返します。| +|送信 \(ストリーム プログラミング モデルから作成\)|書き込むデータを含む `Stream`\*| 機構を使用して、格納されたストリームからデータを書き込みます\*。|`OnWriteBodyContents` を呼び出し、結果をバッファーに保持し、バッファーで XML リーダーを返します。| +|ストリーミング チャネル スタックからの受信|ネットワーク上で到着したデータを表す `Stream` オブジェクトと、このオブジェクトに配置された |`XmlReader` を使用して、格納された `WriteNode` からコンテンツを書き込みます。|格納された `XmlReader` を返します。| +|非ストリーミング チャネル スタックからの受信|本文データを格納するバッファーと、このバッファーに配置された `XmlReader`|`XmlReader` を使用して、格納された `WriteNode` からコンテンツを書き込みます。|格納された lang を返します。| + + \* これらの項目は、`Message` サブクラスに直接実装されるのではなく、 クラスのサブクラスに実装されます。 の詳細については、「[メッセージ クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-message-class.md)」を参照してください。 + +## メッセージ ヘッダー + メッセージには、ヘッダーを含めることができます。 ヘッダーは、名前、名前空間、および他の複数のプロパティに関連付けられた XML Infoset で論理的に構成されます。 メッセージ ヘッダーには、`Headers` の プロパティを使用してアクセスします。 各ヘッダーは、 クラスによって表されます。 通常、SOAP メッセージを使用するように構成されたチャネル スタックを使用している場合、メッセージ ヘッダーは SOAP メッセージ ヘッダーにマップされます。 + + メッセージ ヘッダーへの情報の配置と、メッセージ ヘッダーからの情報の抽出は、メッセージ本文を使用する場合と似ています。 ストリーミングがサポートされていないため、プロセスは若干簡略化されます。 ヘッダーは常に強制的にバッファーに保持されるため、同じヘッダーの内容に何度もアクセスすることが可能であり、各ヘッダーに任意の順序でアクセスできます。 ヘッダーで XML リーダーを取得するために使用できる汎用の機構はありませんが、このような機能を備えた読み取り可能なヘッダーを表す `MessageHeader` サブクラスが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の内部に存在します。 この種の `MessageHeader` は、カスタム アプリケーション ヘッダーを持つメッセージが到着したときにチャネル スタックによって作成されます。 これにより、サービス フレームワークは、逆シリアル化エンジン \( など\) を使用してこれらのヘッダーを解釈できます。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [メッセージ クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-message-class.md)。 + +## メッセージ プロパティ + メッセージには、プロパティを含めることができます。*"プロパティ"* とは、文字列名に関連付けられた任意の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] オブジェクトです。 プロパティには、`Properties` の `Message` プロパティからアクセスします。 + + 通常、メッセージ本文とメッセージ ヘッダーは、それぞれ SOAP 本文および SOAP ヘッダーにマップされますが、メッセージ プロパティがメッセージと共に送信または受信されることは通常ありません。 メッセージ プロパティは、チャネル スタック内のさまざまなチャネル間、およびチャネル スタックとサービス モデルの間で、メッセージに関するデータを渡す通信機構として主に存在します。 + + たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の一部として含まれる HTTP トランスポート チャネルは、クライアントに応答を送信するときに、"404 \(ページが見つかりません\)" や "500 \(内部サーバー エラー\)" などのさまざまな HTTP ステータス コードを生成できます。 HTTP トランスポート チャネルは、応答メッセージを送信する前に、`Properties` の `Message` に 型のオブジェクトを格納する "httpResponse" というプロパティが含まれているかどうかをチェックします。 このようなプロパティが見つかった場合、 プロパティを調べ、そのステータス コードを使用します。 該当のプロパティが見つからなかった場合は、既定の "200 \(OK\)" コードが使用されます。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [メッセージ クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-message-class.md)。 + +### メッセージ全体 + これまで、メッセージのさまざまな部分に個別にアクセスするためのメソッドについて説明してきましたが、 クラスには、メッセージ全体を使用するためのメソッドも用意されています。 たとえば、`WriteMessage` メソッドは、メッセージ全体を XML ライターに書き込みます。 + + これを可能にするには、`Message` インスタンス全体と XML Infoset 間のマッピングが定義されている必要があります。 実際に、このようなマッピングは存在します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、SOAP 標準を使用して、このマッピングを定義します。`Message` インスタンスが XML Infoset として書き込まれると、書き込まれた Infoset はメッセージを含む有効な SOAP エンベロープになります。 したがって、通常、`WriteMessage` は次の手順を実行します。 + +1. SOAP エンベロープ要素の開始タグを書き込みます。 + +2. SOAP ヘッダー要素の開始タグを書き込み、すべてのヘッダーを書き込んで、ヘッダー要素を閉じます。 + +3. SOAP 本文要素の開始タグを書き込みます。 + +4. `WriteBodyContents` または同等のメソッドを呼び出して、本文を書き込みます。 + +5. 本文要素とエンベロープ要素を閉じます。 + + 上記の手順は、SOAP 標準に密接に関連しています。 これは、SOAP の複数のバージョンが存在することで複雑になります。たとえば、使用している SOAP のバージョンがわからなければ、SOAP エンベロープ要素を正しく書き込むことはできません。 また、SOAP 固有のこの複雑なマッピングを完全に無効にすることが望ましい場合もあります。 + + このため、`Version` には `Message` プロパティが用意されています。 このプロパティをメッセージの書き込み時に使用する SOAP バージョンに設定できます。また、`None` に設定することで、SOAP 固有のマッピングを使用しないようにすることもできます。`Version` プロパティを `None` に設定すると、メッセージ全体を使用するメソッドは、メッセージが本文だけで構成されている場合と同様に機能します。たとえば、`WriteMessage` は前述の複数の手順を実行するのではなく、`WriteBodyContents` を呼び出すだけです。 受信メッセージでは、`Version` が自動検出され、適切に設定されることが求められます。 + +## チャネル スタック + +### チャネル + 既に説明したように、チャネル スタックは、送信 インスタンスをアクション \(ネットワーク上でのパケットの送信など\) に変換したり、アクション \(ネットワーク パケットの受信など\) を受信 `Message` インスタンスに変換したりする役割を担います。 + + チャネル スタックは、一連の順序付けられた 1 つ以上のチャネルで構成されます。 送信 `Message` インスタンスは、スタック内の最初のチャネル \(*"最上位チャネル"* とも呼ばれます\) に渡され、このチャネルからスタック内の 1 つ下のチャネルに渡されます。以降、同様にスタック内の 1 つ下のチャネルに順次渡されていきます。 メッセージは、*"トランスポート チャネル"* と呼ばれる最後のチャネルで終了します。 受信メッセージはトランスポート チャネルから始まり、スタック内の下位のチャネルから上位のチャネルに順次渡されていきます。 通常、メッセージは最上位チャネルからサービス フレームワークに渡されます。 これは、アプリケーション メッセージの通常のパターンですが、若干動作が異なるチャネルもあります。たとえば、上のチャネルからメッセージが渡されることなく、独自のインフラストラクチャ メッセージを送信する場合があります。 + + メッセージがスタックを通過するときに、チャネルではさまざまな方法でメッセージを処理できます。 最も一般的な処理は、送信メッセージにヘッダーを追加し、受信メッセージのヘッダーを読み取ることです。 たとえば、チャネルでメッセージのデジタル署名を計算し、ヘッダーとして追加できます。 また、受信メッセージのこのデジタル署名ヘッダーを検査し、有効な署名のないメッセージがチャネル スタック内の上位のチャネルに渡されないようにブロックすることもできます。 多くの場合、チャネルはメッセージ プロパティの設定や検査も行います。 通常、メッセージ本文は変更されませんが、変更は可能です。たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティ チャネルはメッセージ本文を暗号化できます。 + +### トランスポート チャネルとメッセージ エンコーダー + 他のチャネルによって変更された送信 を実際に何らかのアクションに変換するのは、スタック内の最下位チャネルです。 受信側では、このチャネルがアクションを `Message` に変換して、他のチャネルが処理できるようにします。 + + 既に説明したように、アクションはさまざまです。たとえば、各種プロトコル上でのネットワーク パケットの送信\/受信、データベースでのメッセージの読み取り\/書き込み、メッセージ キューへのメッセージの配置\/キューからのメッセージの削除などがあります。 これらのアクションには、共通点が 1 つあります。それは、すべてのアクションには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の `Message` インスタンスと、送信、受信、読み取り、書き込み、キューへの配置、またはキューからの削除が可能な実際のバイト グループとの間の変換が必要であるということです。`Message` をバイト グループに変換するプロセスは*エンコード*と呼ばれ、バイト グループから `Message` を作成する逆のプロセスは*デコード*と呼ばれます。 + + ほとんどのトランスポート チャネルでは、*メッセージ エンコーダー*と呼ばれるコンポーネントを使用して、エンコードとデコードの処理を行います。 メッセージ エンコーダーは、 クラスのサブクラスです。`MessageEncoder` には、`ReadMessage` とバイト グループとの間の変換を行う `WriteMessage` メソッドと `Message` メソッドのさまざまなオーバーロードが含まれます。 + + 送信側では、バッファー トランスポート チャネルが上のチャネルから受け取った `Message` オブジェクトを `WriteMessage` に渡します。 バッファー トランスポート チャネルはバイト配列を取得し、アクション \(これらのバイトを有効な TCP パケットとしてパッケージングし、適切な送信先に送信するなど\) を実行するために使用します。 ストリーミング トランスポート チャネルは、\(たとえば、送信 TCP 接続で\) まず `Stream` を作成します。次に、この `Stream` と送信に必要な `Message` の両方を適切な `WriteMessage` オーバーロードに渡し、このオーバーロードによってメッセージが書き込まれます。 + + 受信側では、バッファー トランスポート チャネルは、\(たとえば、受信 TCP パケットから\) 受信バイトを配列に抽出し、`ReadMessage` を呼び出して、チャネル スタックの上位に渡すことができる `Message` オブジェクトを取得します。 ストリーミング トランスポート チャネルは、`Stream` オブジェクト \(受信 TCP 接続のネットワーク ストリームなど\) を作成し、`ReadMessage` に渡して `Message` オブジェクトを取得します。 + + トランスポート チャネルとメッセージ エンコーダーの分離は必須ではありません。つまり、メッセージ エンコーダーを使用しないトランスポート チャネルの作成が可能です。 ただし、この分離には、構成しやすいという利点があります。 トランスポート チャネルが基本 だけを使用する限り、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のメッセージ エンコーダーを使用することも、サードパーティのメッセージ エンコーダーを使用することもできます。 同様に、通常はどのトランスポート チャネルでも同じエンコーダーを使用できます。 + +### メッセージ エンコーダーの動作 + エンコーダーの一般的な動作を記述する場合、次の 4 つのケースについて検討すると有益です。 + +|操作|コメント| +|--------|----------| +|エンコード \(バッファー\)|バッファー モードでは、通常、エンコーダーは可変サイズのバッファーを作成し、このバッファーに XML ライターを作成します。 エンコーダーは、エンコードするメッセージに対して を呼び出してヘッダーを書き込みます。次に、このトピックの に関するセクションで説明したように、`Message` を使用して本文を書き込みます。 その後、トランスポート チャネルで使用できるように、\(バイト配列として表される\) バッファーの内容が返されます。| +|エンコード \(ストリーミング\)|ストリーミング モードでは、動作が上記に似ていますが、より単純です。 バッファーは必要ありません。 通常、XML ライターがストリームに作成され、このライターに書き込むために に対して `Message` が呼び出されます。| +|デコード \(バッファー\)|バッファー モードでデコードする場合、通常、バッファーされたデータを格納する特殊な `Message` サブクラスが作成されます。 メッセージのヘッダーが読み取られ、メッセージ本文に配置する XML リーダーが作成されます。 これは、 で返されるリーダーです。| +|デコード \(ストリーミング\)|ストリーミング モードでデコードする場合、通常、特殊な Message サブクラスが作成されます。 ストリームは、すべてのヘッダーを読み取り、メッセージ本文に配置できる位置まで進められます。 次に、ストリームに XML リーダーが作成されます。 これは、 で返されるリーダーです。| + + エンコーダーでは、他の機能も実行できます。 たとえば、エンコーダーは XML リーダーとライターをプールできます。 新しい XML リーダーまたはライターが必要になるたびに作成すると負荷がかかります。 したがって、通常、エンコーダーは構成可能なサイズのリーダーのプールとライターのプールを保持しています。 前述のエンコーダーの動作の説明の中の、"XML リーダー\/ライターを作成する" という表現は、"プールから取得し、プールされているものを使用できない場合に作成する" という意味です。 エンコーダー \(およびデコード時にエンコーダーが作成する `Message` サブクラス\) には、リーダーとライターが必要でなくなったら \(`Message` を閉じたときなどに\) プールに戻すためのロジックが含まれています。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、3 つのメッセージ エンコーダーが用意されていますが、さらにカスタム エンコーダーを作成することもできます。 用意されているエンコーダーは、Text、Binary、および MTOM \(Message Transmission Optimization Mechanism\) の 3 種類です。 これらの詳細については、「[メッセージ エンコーダーを選択する](../../../../docs/framework/wcf/feature-details/choosing-a-message-encoder.md)」を参照してください。 + +### IStreamProvider インターフェイス + ストリーミングされた本文を含む送信メッセージを XML ライターに書き込むときに、 実装で次のような一連の呼び出しを使用します。 + +- ストリームの前に必要な情報を書き込みます \(XML 開始タグなど\)。 + +- ストリームを書き込みます。 + +- ストリームの後に情報を書き込みます \(XML 終了タグなど\)。 + + これは、テキスト XML エンコーディングに類似するエンコードで有効に機能します。 ただし、XML Infoset 情報 \(XML 要素を開始および終了するためのタグなど\) を、要素内に含まれるデータと共には配置しないエンコードもあります。 たとえば、MTOM エンコーディングでは、メッセージは複数の部分に分割されます。 ある部分に XML Infoset が含まれ、要素の実際のコンテンツについては他の部分への参照が含まれている場合があります。 通常、XML Infoset は、ストリーミングされたコンテンツと比べてサイズが小さいため、Infoset をバッファーに格納し、これを書き込んだ後に、ストリーミング方式でコンテンツを書き込むことには意味があります。 これは、終了要素タグが書き込まれるまでは、ストリームを書き込むことができないことを意味します。 + + このために、 インターフェイスが使用されます。 このインターフェイスには、書き込むストリームを返す メソッドがあります。 でストリーミングされたメッセージ本文を書き込む適切な方法は次のとおりです。 + +1. ストリームの前に必要な情報を書き込みます \(XML 開始タグなど\)。 + +2. 書き込むストリームを返す `WriteValue` 実装で、 を受け取る に対して `IStreamProvider` オーバーロードを呼び出します。 + +3. ストリームの後に情報を書き込みます \(XML 終了タグなど\)。 + + この方法を使用すると、XML ライターは を呼び出し、ストリーミングされたデータを書き込む時期を選択できます。 たとえば、テキスト XML ライターやバイナリ XML ライターは、このメソッドをすぐに呼び出し、開始タグと終了タグの間にストリーミングされたコンテンツを書き込むことができます。 MTOM ライターは、メッセージの適切な部分を書き込む準備ができたときに、後で を呼び出すことができます。 + +## サービス フレームワークでのデータの表現 + このトピックの「基本アーキテクチャ」で説明したように、サービス フレームワークは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の一部であり、特に、メッセージ データのユーザー フレンドリなプログラミング モデルと実際の `Message` インスタンス間で変換を行う機能を果たします。 通常、サービス フレームワークでは、メッセージ交換は [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 属性でマークされた メソッドとして表されます。 このメソッドは複数のパラメーターを取得でき、戻り値または出力パラメーター \(または両方\) を返すことができます。 サービス側では、入力パラメーターは受信メッセージを表し、戻り値と出力パラメーターは送信メッセージを表します。 クライアント側では、この逆になります。 パラメーターと戻り値を使用してメッセージを記述するためのプログラミング モデルの詳細については、「[サービス コントラクトでのデータ転送の指定](../../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md)」を参照してください。 ここでは、概要を簡単に説明します。 + +## プログラミング モデル + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス フレームワークでは、メッセージを記述するための次の 5 種類のプログラミング モデルをサポートしています。 + +### 1.空のメッセージ + これは、最も簡単なケースです。 空の受信メッセージを記述する場合は、次のように入力パラメーターは使用しないでください。 + + [!code-csharp[C_DataArchitecture#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_dataarchitecture/cs/source.cs#3)] + [!code-vb[C_DataArchitecture#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_dataarchitecture/vb/source.vb#3)] + + 空の送信メッセージを記述する場合は、次のように void 戻り値を使用し、出力パラメーターは使用しないでください。 + + [!code-csharp[C_DataArchitecture#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_dataarchitecture/cs/source.cs#4)] + [!code-vb[C_DataArchitecture#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_dataarchitecture/vb/source.vb#4)] + + 次のように、一方向の操作コントラクトとは異なることに注意してください。 + + [!code-csharp[C_DataArchitecture#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_dataarchitecture/cs/source.cs#5)] + [!code-vb[C_DataArchitecture#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_dataarchitecture/vb/source.vb#5)] + + `SetDesiredTemperature` の例では、双方向メッセージ交換パターンが記述されています。 メッセージは操作から返されますが、このメッセージは空です。 操作からエラーを返すことができます。 "SetLightbulb" の例では、メッセージ交換パターンは一方向であるため、記述する送信メッセージはありません。 この場合、サービスはクライアントにステータスを通知できません。 + +### 2.Message クラスの直接使用 + 操作コントラクトで クラス \(またはサブクラスのいずれか\) を直接使用できます。 この場合、サービス フレームワークは、操作からチャネル スタックおよびチャネル スタックから操作に `Message` を渡すだけであり、それ以上の処理は行いません。 + + `Message` を直接使用するケースとして、主に 2 つのケースがあります。 1 つは、他のプログラミング モデルでは、メッセージを記述できるだけの柔軟性を得ることができない高度なシナリオで使用します。 たとえば、ディスク上のファイルを使用して、ファイルのプロパティがメッセージ ヘッダーになり、ファイルの内容がメッセージ本文になるようにメッセージを記述することが必要になる場合があります。 これは、次のように作成できます。 + + [!code-csharp[C_DataArchitecture#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_dataarchitecture/cs/source.cs#6)] + [!code-vb[C_DataArchitecture#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_dataarchitecture/vb/source.vb#6)] + + 操作コントラクトで `Message` を一般的に使用するもう 1 つのケースは、サービスがメッセージの特定の内容に留意しているわけではなく、ブラック ボックスと同様にメッセージを処理する場合です。 たとえば、メッセージを他の複数の受信者に転送するサービスを使用することがあります。 コントラクトは、次のように作成できます。 + + [!code-csharp[C_DataArchitecture#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_dataarchitecture/cs/source.cs#7)] + [!code-vb[C_DataArchitecture#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_dataarchitecture/vb/source.vb#7)] + + Action\="\*" 行により、メッセージのディスパッチが実質的に無効になり、`IForwardingService` コントラクトに送信されるすべてのメッセージが確実に `ForwardMessage` 操作に送られます \(通常、ディスパッチャーは、メッセージの "Action" ヘッダーを調べて、対象とする操作を特定します。 Action\="\*" は、"Action ヘッダーに設定可能なすべての値" を意味します。\) Action\="\*" とパラメーターとしての Message の使用を組み合わせると、存在し得るすべてのメッセージを取得できるため、この組み合わせは "ユニバーサル コントラクト" と呼ばれます。 存在し得るすべてのメッセージを送信できるようにするには、Message を戻り値として使用し、`ReplyAction` を "\*" に設定します。 これにより、サービス フレームワークは独自の Action ヘッダーを追加できなくなるため、開発者が返す `Message` オブジェクトを使用して、このヘッダーを制御できます。 + +### 3.メッセージ コントラクト + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、*"メッセージ コントラクト"* と呼ばれるメッセージを記述するための宣言型プログラミング モデルが用意されています。 このモデルの詳細については、「[メッセージ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-message-contracts.md)」を参照してください。 基本的に、単一の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型によってメッセージ全体が表されます。この型は、 などの属性を使用して、メッセージ コントラクト クラスのどの部分をメッセージのどの部分にマップする必要があるかを示します。 + + メッセージ コントラクトは、結果として生成される `Message` インスタンスに対してさまざまな制御を行うことができます \(ただし、`Message` クラスを直接使用した場合と同様に制御できるわけではありません\)。 たとえば、多くの場合、メッセージ本文は情報の複数の部分で構成され、各部分は独自の XML 要素によって表されます。 これらの要素は、本文に直接出現することも \(*ベア* モード\)、XML 要素で囲んで*ラップ*することもできます。 メッセージ コントラクト プログラミング モデルを使用すると、ベアとラップのどちらを使用するかを決定し、ラッパー名と名前空間の名前を制御できます。 + + 前述の機能を示すメッセージ コントラクトのコード例を次に示します。 + + [!code-csharp[C_DataArchitecture#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_dataarchitecture/cs/source.cs#9)] + [!code-vb[C_DataArchitecture#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_dataarchitecture/vb/source.vb#9)] + + 、または他の関連する属性を使用して、シリアル化対象としてマークされた項目は、メッセージ コントラクトに関与するためにシリアル化可能であることが必要です。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]このトピックで後述する「シリアル化」を参照してください。 + +### 4.パラメーター + 多くの場合、データの複数の部分に作用する操作を記述する開発者は、メッセージ コントラクトによって実現される制御のレベルを必要としていません。 たとえば、新しいサービスの作成時に、ベアとラップのどちらを使用するかを決定し、ラッパー要素名を決めることは通常望まれていません。 多くの場合、これらを決定するには Web サービスと SOAP の深い知識が必要となります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス フレームワークは、こうした選択をユーザーに強制することなく、情報の複数の関連部分を送信または受信するのに最適で、相互運用性が最も高い SOAP 表現を自動的に選択できます。 これは、情報のこのような部分を操作コントラクトのパラメーターまたは戻り値として記述するだけで実現されます。 たとえば、次のような操作コントラクトについて考えてみます。 + + [!code-csharp[C_DataArchitecture#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_dataarchitecture/cs/source.cs#11)] + [!code-vb[C_DataArchitecture#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_dataarchitecture/vb/source.vb#11)] + + サービス フレームワークは、情報の 3 つの部分 \(`customerID`、`item`、および `quantity`\) をすべてメッセージ本文に配置し、`SubmitOrderRequest` というラッパー要素にラップすることを自動的に決定します。 + + より複雑なメッセージ コントラクトや `Message` ベースのプログラミング モデルに移行する特別な理由がない限り、操作コントラクト パラメーターの簡単なリストとして送信または受信するように情報を記述することをお勧めします。 + +### 5.ストリーム + `Stream` またはそのサブクラスのいずれかを、操作コントラクトで使用したり、メッセージ コントラクトでメッセージ本文の単独の部分として使用したりすることは、これまでに説明したものとは別のプログラミング モデルと考えることができます。 ストリーミングに対応する独自の `Stream` サブクラスを作成する場合を除き、`Message` をこのように使用することは、コントラクトをストリーミング方式で使用できることを保証する唯一の方法です。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [大規模データとストリーミング](../../../../docs/framework/wcf/feature-details/large-data-and-streaming.md)。 + + `Stream` またはそのサブクラスのいずれかをこのように使用した場合、シリアライザーは呼び出されません。 送信メッセージの場合、`Message` インターフェイスのセクションで説明したように、特殊なストリーミング サブクラスが作成され、ストリームが書き込まれます。 受信メッセージの場合は、サービス フレームワークが受信メッセージに `Stream` サブクラスを作成し、操作に提供します。 + +## プログラミング モデルの制限 + 前述のプログラミング モデルを任意に組み合わせることはできません。 たとえば、ある操作でメッセージ コントラクトを受け入れる場合、そのメッセージ コントラクトは入力パラメーターのみであることが必要です。 さらに、操作では、空のメッセージ \(戻り値の型が void\) または別のメッセージ コントラクトを返す必要があります。 プログラミング モデルのこれらの制限については、各プログラミング モデルに関するトピック \(「[メッセージ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-message-contracts.md)」、「[メッセージ クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-message-class.md)」、および「[大規模データとストリーミング](../../../../docs/framework/wcf/feature-details/large-data-and-streaming.md)」\) に記載されています。 + +## メッセージ フォーマッタ + 前述の各プログラミング モデルは、*"メッセージ フォーマッタ"* と呼ばれるコンポーネントをサービス フレームワークにプラグインすることによってサポートされます。 メッセージ フォーマッタは、 インターフェイス \(クライアントで使用\)、または インターフェイス \([!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス クライアントで使用\)、あるいはこの両方を実装する型です。 + + 通常、メッセージ フォーマッタは動作によってプラグインされます。 たとえば、 は、データ コントラクト メッセージ フォーマッタをプラグインします。 これを行うには、サービス側では メソッドで を適切なフォーマッタに設定します。クライアント側では、 メソッドで を適切なフォーマッタに設定します。 + + メッセージ フォーマッタが実装できるメソッドを次の表に示します。 + +|インターフェイス|メソッド|アクション| +|--------------|----------|-----------| +||[DeserializeRequest\(Message, Object\|受信 `Message` を操作パラメーターに変換します。| +||[SerializeReply\(MessageVersion, Object\|操作の戻り値または出力パラメーターから送信 `Message` を作成します。| +||[SerializeRequest\(MessageVersion, Object\|操作パラメーターから送信 `Message` を作成します。| +||[DeserializeReply\(Message, Object\|受信 `Message` を戻り値または出力パラメーターに変換します。| + +## シリアル化 + メッセージ コントラクトまたはパラメーターを使用してメッセージの内容を記述する場合は、常にシリアル化を使用して [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型と XML Infoset 表現の間の変換を行う必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、他の場所でもシリアル化を使用します。たとえば、 ジェネリック メソッドを使用すると、オブジェクトに逆シリアル化されたメッセージの本文全体を読み取ることができます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、パラメーターおよびメッセージ各部のシリアル化と逆シリアル化を行うためにすぐに使用できるシリアル化技術として、 と `XmlSerializer` をサポートしています。 また、カスタム シリアライザーを作成することもできます。 ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のその他の部分 \(`GetBody` ジェネリック メソッドや SOAP エラーのシリアル化など\) では、 のサブクラス \( および は対象外\) だけを使用するように制限されている場合があります。また、 だけを使用するようにハードコーディングされている場合もあります。 + + `XmlSerializer` は、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスで使用されるシリアル化エンジンです。`DataContractSerializer` は、新しいデータ コントラクト プログラミング モデルを認識する新しいシリアル化エンジンです。`DataContractSerializer` が既定で選択されています。`XmlSerializer` を使用する場合は、 属性を使用して操作ごとに選択できます。 + + は、それぞれ `DataContractSerializer` および `XmlSerializer` のメッセージ フォーマッタをプラグインする役割を担う操作の動作です。 の動作は、 など、 から派生した任意のシリアライザーで実際に操作できます \(詳細については、「スタンドアロンのシリアル化の使用」を参照してください\)。 この動作では、`CreateSerializer` 仮想メソッド オーバーロードのいずれかを呼び出して、シリアライザーを取得します。 別のシリアライザーをプラグインするには、新しい サブクラスを作成し、`CreateSerializer` の両方のオーバーロードをオーバーライドします。 + +## 参照 + [サービス コントラクトでのデータ転送の指定](../../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/debugging-windows-authentication-errors.md b/docs/framework/wcf/feature-details/debugging-windows-authentication-errors.md new file mode 100644 index 00000000000..61fcdeac54a --- /dev/null +++ b/docs/framework/wcf/feature-details/debugging-windows-authentication-errors.md @@ -0,0 +1,157 @@ +--- +title: "Windows 認証エラーのデバッグ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF, 認証" + - "WCF, Windows 認証" +ms.assetid: 181be4bd-79b1-4a66-aee2-931887a6d7cc +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# Windows 認証エラーのデバッグ +セキュリティ機構として Windows 認証を使用する場合、セキュリティ サポート プロバイダー インターフェイス \(SSPI: Security Support Provider Interface\) がセキュリティ プロセスを処理します。SSPI 層でセキュリティ エラーが発生すると、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] によってこれらのエラーが示されます。このトピックでは、エラーの診断に役立つフレームワークと一連の質問を示します。 + + Kerberos プロトコルの概要については、「[Kerberos の説明](http://go.microsoft.com/fwlink/?LinkID=86946)」を参照してください。SSPI の概要については、「[SSPI](http://go.microsoft.com/fwlink/?LinkId=88941)」を参照してください。 + + Windows 認証の場合、通常、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は*ネゴシエート* セキュリティ サポート プロバイダー \(SSP: Security Support Provider\) を使用します。ネゴシエート SSP は、クライアントとサービス間で Kerberos 相互認証を実行します。Kerberos プロトコルを使用できない場合、既定では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は NTLM \(NT LAN Manager\) にフォールバックします。ただし、Kerberos プロトコルのみを使用するように \(Kerberos を使用できない場合は例外をスローするように\) [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を構成できます。また、Kerberos プロトコルの制限付きの形式を使用するように [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を構成することもできます。 + +## デバッグ方法 + 基本的な方法は次のとおりです。 + +1. Windows 認証を使用しているかどうかを確認します。他の方式を使用している場合には、このトピックは該当しません。 + +2. Windows 認証を使用していることが確実である場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の構成で Kerberos ダイレクトと Negotiate のどちらを使用しているかを確認します。 + +3. 構成で Kerberos プロトコルと NTLM のどちらを使用しているかを確認した後は、現在のコンテキストでのエラー メッセージを理解できます。 + +### Kerberos プロトコルと NTLM の可用性 + Kerberos SSP は、Kerberos キー配布センター \(KDC: Key Distribution Center\) として機能するドメイン コントローラーを必要とします。Kerberos プロトコルを使用できるのは、クライアントとサービスの両方がドメイン ID を使用している場合だけです。次の表に示すように、アカウントの他の組み合わせでは NTLM が使用されます。 + + この表の列見出しは、サーバーが使用すると考えられるアカウントの種類を示します。左の列は、クライアントが使用すると考えられるアカウントの種類を示します。 + +||Local User|Local System|Domain User|Domain Machine| +|-|----------------|------------------|-----------------|--------------------| +|Local User|NTLM|NTLM|NTLM|NTLM| +|Local System|匿名 NTLM|匿名 NTLM|匿名 NTLM|匿名 NTLM| +|Domain User|NTLM|NTLM|Kerberos|Kerberos| +|Domain Machine|NTLM|NTLM|Kerberos|Kerberos| + + 具体的には、次の 4 種類のアカウントがあります。 + +- Local User : コンピューター専用のユーザー プロファイル。例 : `MachineName\Administrator` または `MachineName\ProfileName`。 + +- Local System : ドメインに参加していないコンピューターの SYSTEM ビルトイン アカウント。 + +- Domain User : Windows ドメインのユーザー アカウント。例 : `DomainName\ProfileName`。 + +- Domain Machine : Windows ドメインに参加しているコンピューターで実行されている、コンピューター ID を使用するプロセス。例 : `MachineName\Network Service`。 + +> [!NOTE] +> サービス資格情報は、 クラスの メソッドが呼び出されたときにキャプチャされます。クライアント資格情報は、クライアントがメッセージを送信するたびに読み取られます。 + +## Windows 認証の一般的な問題 + ここでは、Windows 認証に関するいくつかの一般的な問題と、考えられる解決策について説明します。 + +### Kerberos プロトコル + +#### Kerberos プロトコルでの SPN と UPN の問題 + Windows 認証を使用し、SSPI が Kerberos プロトコルを使用またはネゴシエートする場合、クライアント エンドポイントが使用する URL には、サービス URL 内のサービスのホストの完全修飾ドメイン名が含まれている必要があります。これは、サービスを実行しているアカウントがコンピューターの \(既定の\) サービス プリンシパル名 \(SPN: Service Principal Name\) キーにアクセスできることを前提としています。このキーは、コンピューターを Active Directory ドメインに追加したときに作成されます。コンピューターの SPN キーにアクセスできるようにするには、Network Service アカウントでサービスを実行するのが最も一般的な方法です。サービスがコンピューターの SPN キーにアクセスできない場合は、クライアントのエンドポイント ID でサービスを実行しているアカウントの正しい SPN またはユーザー プリンシパル名 \(UPN: User Principal Name\) を指定する必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が SPN と UPN を使用するしくみ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください。 + + Web ファームや Web ガーデンなどの負荷分散シナリオでは、各アプリケーションに一意のアカウントを定義し、そのアカウントに SPN を割り当て、アプリケーションのサービスすべてがそのアカウントで実行されるようにするのが一般的です。 + + サービスのアカウント用の SPN を取得するには、Active Directory ドメイン管理者である必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[Kerberos Technical Supplement for Windows](http://go.microsoft.com/fwlink/?LinkID=88330)」を参照してください。 + +#### Kerberos プロトコル ダイレクトでは Domain Machine アカウントでサービスを実行する必要がある + この状況は、次のコードに示すように、`ClientCredentialType` プロパティが `Windows` に設定され、 プロパティが `false` に設定されている場合に発生します。 + + [!code-csharp[C_DebuggingWindowsAuth#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_debuggingwindowsauth/cs/source.cs#1)] + [!code-vb[C_DebuggingWindowsAuth#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_debuggingwindowsauth/vb/source.vb#1)] + + これを解決するには、ドメインに参加しているコンピューターで、Domain Machine アカウント \(Network Service など\) を使用してサービスを実行します。 + +### 委任には資格情報ネゴシエーションが必要 + 委任で Kerberos 認証プロトコルを使用するには、資格情報ネゴシエーションを使用する Kerberos プロトコル \("マルチレッグ" Kerberos または "マルチステップ" Kerberos とも呼ばれます\) を実装する必要があります。資格情報ネゴシエーションを使用しない Kerberos 認証 \("ワンショット" Kerberos または "シングルレッグ" Kerberos とも呼ばれます\) を実装した場合は、例外がスローされます。 + + 資格情報ネゴシエーションを使用する Kerberos を実装するには、次の手順を実行します。 + +1. に設定して委任を実装します。 + +2. 次のような SSPI ネゴシエーションが必要です。 + + 1. 標準バインディングを使用する場合は、`NegotiateServiceCredential` プロパティを `true` に設定します。 + + 2. カスタム バインディングを使用する場合は、`Security` 要素の `AuthenticationMode` 属性を `SspiNegotiated` に設定します。 + +3. 次のように、NTLM を使用できないようにすることで、SSPI ネゴシエーションで Kerberos を使用する必要があります。 + + 1. NTLM を使用できないようにするには、コードで `ChannelFactory.Credentials.Windows.AllowNtlm = false` ステートメントを使用します。 + + 2. 構成ファイルで `allowNtlm` 属性を `false` に設定することもできます。この属性は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/windows-of-clientcredentials-element.md) に含まれています。 + +### NTLM プロトコル + +#### ネゴシエート SSP は NTLM にフォールバックするが、NTLM が無効になっている + プロパティを `false` に設定すると、NTLM が使用されている場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] はベスト エフォートで例外をスローします。このプロパティを `false` に設定すると、ネットワークで経由で NTLM 資格情報が送信できない可能性があります。 + + NTLM へのフォールバックを無効にする方法を次に示します。 + + [!code-csharp[C_DebuggingWindowsAuth#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_debuggingwindowsauth/cs/source.cs#4)] + [!code-vb[C_DebuggingWindowsAuth#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_debuggingwindowsauth/vb/source.vb#4)] + +#### NTLM ログオンが失敗する + サービスで、クライアント資格情報が有効ではありません。ユーザー名とパスワードが正しく設定されており、サービスを実行しているコンピューターに認識されているアカウントに対応していることを確認します。NTLM では、指定された資格情報を使用してサービスのコンピューターにログオンします。資格情報がクライアントを実行しているコンピューターで有効であっても、サービスのコンピューターでは有効でない場合、このログオンは失敗します。 + +#### 匿名 NTLM ログオンが発生するが、既定では匿名ログオンが無効になっている + 次の例に示すように、クライアントの作成時に、 プロパティを に設定します。ただし、既定では、サーバーは匿名ログオンを許可しません。これは、 クラスの プロパティの既定値が `false` であるためです。 + + 匿名ログオンを有効にすることを試みるクライアント コードを次に示します \(既定のプロパティは `Identification` です\)。 + + [!code-csharp[C_DebuggingWindowsAuth#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_debuggingwindowsauth/cs/source.cs#5)] + [!code-vb[C_DebuggingWindowsAuth#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_debuggingwindowsauth/vb/source.vb#5)] + + サーバーによって匿名ログオンを有効にするように既定値を変更するサービス コードを次に示します。 + + [!code-csharp[C_DebuggingWindowsAuth#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_debuggingwindowsauth/cs/source.cs#6)] + [!code-vb[C_DebuggingWindowsAuth#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_debuggingwindowsauth/vb/source.vb#6)] + + 偽装[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md)」を参照してください。 + + もう 1 つの方法として、SYSTEM ビルトイン アカウントを使用する Windows サービスとしてクライアントを実行します。 + +### その他の問題 + +#### クライアント資格情報が正しく設定されていない + Windows 認証では、 ではなく、 クラスの プロパティによって返された インスタンスを使用します。誤りのあるコード例を次に示します。 + + [!code-csharp[C_DebuggingWindowsAuth#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_debuggingwindowsauth/cs/source.cs#2)] + [!code-vb[C_DebuggingWindowsAuth#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_debuggingwindowsauth/vb/source.vb#2)] + + 正しいコード例を次に示します。 + + [!code-csharp[C_DebuggingWindowsAuth#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_debuggingwindowsauth/cs/source.cs#3)] + [!code-vb[C_DebuggingWindowsAuth#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_debuggingwindowsauth/vb/source.vb#3)] + +#### SSPI を使用できない + [!INCLUDE[wxp](../../../../includes/wxp-md.md)] Home Edition、[!INCLUDE[wxp](../../../../includes/wxp-md.md)] Media Center Edition、および [!INCLUDE[wv](../../../../includes/wv-md.md)] Home Edition の各オペレーティング システムは、サーバーとして使用した場合には Windows 認証をサポートしません。 + +#### 異なる ID を使用した開発と展開 + アプリケーションを 1 台のコンピューターで開発し、別のコンピューターに展開し、異なるアカウントの種類を使用して各コンピューターで認証を行う場合、動作の違いが発生する場合があります。たとえば、`SSPI Negotiated` 認証モードを使用して Windows XP Professional コンピューターでアプリケーションを開発するとします。ローカル ユーザー アカウントを使用して認証する場合は、NTLM プロトコルが使用されます。アプリケーションを開発した後は、ドメイン アカウントで実行されるサービスを Windows Server 2003 コンピューターに展開します。この時点で、クライアントは Kerberos とドメイン コントローラーを使用するため、このサービスを認証できなくなります。 + +## 参照 + + + + + [委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md) + [サポートされていないシナリオ](../../../../docs/framework/wcf/feature-details/unsupported-scenarios.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md b/docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md new file mode 100644 index 00000000000..630aef7bf29 --- /dev/null +++ b/docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md @@ -0,0 +1,233 @@ +--- +title: "WCF の委任と偽装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "偽装 [WCF]" + - "委任 [WCF]" +ms.assetid: 110e60f7-5b03-4b69-b667-31721b8e3152 +caps.latest.revision: 40 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 40 +--- +# WCF の委任と偽装 +*偽装*は、サービス ドメインのリソースへのクライアント アクセスを制限するためにサービスが使用する一般的な手法です。 サービス ドメインのリソースは、ローカル ファイルなどのコンピューター リソースの場合もあれば \(偽装\)、ファイル共有などの別のコンピューター上のリソースの場合もあります \(委任\)。 サンプル アプリケーションについては、「[クライアントの偽装](../../../../docs/framework/wcf/samples/impersonating-the-client.md)」を参照してください。 偽装の使用方法の例については、「[方法 : サービスでクライアントに偽装する](../../../../docs/framework/wcf/how-to-impersonate-a-client-on-a-service.md)」を参照してください。 + +> [!IMPORTANT] +> サービスでクライアントを偽装すると、サービスはそのクライアントの資格情報を使用して実行されます。この資格情報の特権がサーバー プロセスより高い場合があることに注意してください。 + +## 概要 + 通常、クライアントは、クライアントに代わって何らかのアクションを実行してもらうためにサービスを呼び出します。 偽装により、サービスはアクションの実行時にクライアントとして機能できます。 委任を使用すると、フロントエンド サービスは、バックエンド サービスもクライアントを偽装できるような方法で、バックエンド サービスにクライアントの要求を転送できます。 偽装は、クライアントが特定のアクションを実行するために承認されているかどうかを確認する方法として、最も一般的に使用されます。委任は、偽装機能をクライアントの ID と共にバックエンド サービスにフローする方法です。 委任は、Kerberos ベースの認証を実行するときに使用できる Windows ドメインの機能です。 委任は ID フローとは異なります。委任では、クライアントのパスワードを保持せずにクライアントを偽装する機能を転送するため、ID フローよりもかなり高い特権が与えられた操作です。 + + 偽装と委任はいずれも、クライアントが Windows ID を保持していることが必要となります。 クライアントが Windows ID を保持していない場合、クライアントの ID を 2 番目のサービスにフローする以外に選択肢はありません。 + +## 偽装の基本 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、さまざまなクライアント資格情報の偽装をサポートしています。 このトピックでは、サービス メソッドの実装時に呼び出し元を偽装するためのサービス モデルのサポートについて説明します。 また、偽装と SOAP セキュリティを必要とする一般的な展開シナリオ、およびこれらのシナリオでの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のオプションについても説明します。 + + ここでは、SOAP セキュリティを使用する場合の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での偽装と委任について集中的に説明します。 「[トランスポート セキュリティでの偽装の使用](../../../../docs/framework/wcf/feature-details/using-impersonation-with-transport-security.md)」に記載されているように、トランスポート セキュリティを使用する場合にも、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で偽装と委任を使用できます。 + +## 2 つの方法 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の SOAP セキュリティには、偽装を実行するための 2 とおりの方法があります。 使用する方法は、バインディングによって異なります。 1 つは、セキュリティ サポート プロバイダー インターフェイス \(SSPI\) または Kerberos 認証から取得し、サーバーにキャッシュされた Windows トークンの偽装です。 もう 1 つは、*Service\-for\-User \(S4U\)* と総称される Kerberos 拡張から取得した Windows トークンの偽装です。 + +### キャッシュされたトークンの偽装 + キャッシュされたトークンの偽装は、以下で実行できます。 + +- Windows クライアント資格情報を使用する 、および 。 + +- 資格情報に設定された 。または、サービスが有効な Windows アカウントにマップできるユーザー名資格情報をクライアントが提示する、その他の標準バインディング。 + +- が `requireCancellation` に設定された Windows クライアント資格情報を使用する `true` \(このプロパティは、、および の各クラスで使用できます\)。 セキュリティで保護されたメッセージ交換をバインディングで使用する場合は、`requireCancellation` プロパティを `true` に設定することも必要です。 + +- クライアントがユーザー名資格情報を提示する 。 セキュリティで保護されたメッセージ交換をバインディングで使用する場合は、`requireCancellation` プロパティを `true` に設定することも必要です。 + +### S4U ベースの偽装 + S4U ベースの偽装は、以下で実行できます。 + +- サービスが有効な Windows アカウントにマップできる証明書クライアント資格情報を使用する 、および 。 + +- プロパティが `requireCancellation` に設定された Windows クライアント資格情報を使用する `false`。 + +- プロパティが `requireCancellation` に設定されたユーザー名資格情報または Windows クライアント資格情報とセキュリティで保護されたメッセージ交換を使用する `false`。 + + サービスがクライアントを偽装できるエクステントは、偽装を試みるときにサービス アカウントが保持している特権、使用する偽装の種類、およびクライアントが許可すると考えられる偽装のエクステントによって異なります。 + +> [!NOTE] +> クライアントとサービスが同じコンピューター上で実行されており、クライアントがシステム アカウント \(`Local System` や `Network Service` など\) で実行されているときに、ステートレスなセキュリティ コンテキスト トークンを使用してセキュリティで保護されたセッションを確立した場合は、クライアントを偽装できません。 通常、Windows フォームまたはコンソール アプリケーションは、現在ログインしているアカウントで実行されるため、既定でそのアカウントを偽装できます。 ただし、クライアントが [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ページであり、そのページが [!INCLUDE[iis601](../../../../includes/iis601-md.md)] または [!INCLUDE[iisver](../../../../includes/iisver-md.md)] でホストされている場合、既定では、クライアントは `Network Service` アカウントで実行されます。 セキュリティで保護されたセッションをサポートするシステム提供のすべてのバインディングは、ステートフルなセキュリティ コンテキスト トークン \(SCT: Security Context Token\) を既定で使用します。 ただし、クライアントが [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ページであり、ステートフルな SCT を使用する、セキュリティで保護されたセッションを使用している場合は、クライアントを偽装できません。 セキュリティで保護されたセッションでステートフルな SCT を使用する方法の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[方法 : セキュリティで保護されたセッションに対しセキュリティ コンテキスト トークンを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-security-context-token-for-a-secure-session.md)」を参照してください。 + +## サービス メソッドでの偽装 : 宣言モデル + ほとんどの偽装シナリオでは、呼び出し元のコンテキストでサービス メソッドを実行する必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、ユーザーが 属性で偽装要件を指定できるようにすることで、これを容易に実行できるようにした偽装機能が用意されています。 たとえば、次のコードでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャは `Hello` メソッドを実行する前に呼び出し元を偽装します。`Hello` メソッド内でネイティブ リソースへのアクセス試行が成功するのは、そのリソースのアクセス制御リスト \(ACL\) で呼び出し元のアクセス特権が許可されている場合だけです。 偽装を有効にするには、次の例に示すように、 プロパティを 列挙値のいずれか \( または \) に設定します。 + +> [!NOTE] +> サービスの資格情報がリモート クライアントよりも高い場合は、 プロパティが に設定されていても、サービスの資格情報が使用されます。 つまり、低い特権を持つユーザーがその資格情報を提示した場合、そのユーザーよりも高い特権を持つサービスは、サービスの資格情報を使用してメソッドを実行し、特権の低いユーザーが本来は使用できないリソースを使用できることになります。 + + [!code-csharp[c_ImpersonationAndDelegation#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_impersonationanddelegation/cs/source.cs#1)] + [!code-vb[c_ImpersonationAndDelegation#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_impersonationanddelegation/vb/source.vb#1)] + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャが呼び出し元を偽装できるのは、呼び出し元が Windows ユーザー アカウントにマップできる資格情報を使用して認証された場合だけです。 サービスが Windows アカウントにマップできない資格情報を使用して認証を行うように構成されている場合には、サービス メソッドは実行されません。 + +> [!NOTE] +> [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では、ステートフルな SCT が作成されると偽装が失敗し、 になります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [サポートされていないシナリオ](../../../../docs/framework/wcf/feature-details/unsupported-scenarios.md)。 + +## サービス メソッドでの偽装 : 強制モデル + 呼び出し元がサービス メソッドの全体ではなく、一部を偽装するだけで、その機能が実行される場合があります。 この場合、サービス メソッド内で呼び出し元の Windows ID を取得し、偽装を強制的に実行します。 これを行うには、 プロパティを使用して クラスのインスタンスを返し、このインスタンスを使用する前に メソッドを呼び出します。 + +> [!NOTE] +> [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] の `Using` ステートメント、または C\# の `using` ステートメントを使用して、偽装操作を自動的に元に戻すようにしてください。 これらのステートメントを使用しない場合、または [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] や C\# 以外のプログラミング言語を使用する場合は、偽装レベルを必ず元に戻してください。 この作業を怠ると、サービス拒否攻撃や権限の昇格攻撃のもとになるおそれがあります。 + + [!code-csharp[c_ImpersonationAndDelegation#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_impersonationanddelegation/cs/source.cs#2)] + [!code-vb[c_ImpersonationAndDelegation#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_impersonationanddelegation/vb/source.vb#2)] + +## すべてのサービス メソッドの偽装 + サービスのすべてのメソッドを呼び出し元のコンテキストで実行することが必要になる場合があります。 メソッドごとにこの機能を明示的に有効にするのではなく、 を使用します。 次のコードに示すように、 プロパティを `true` に設定します。 は、 クラスの動作コレクションから取得されます。 また、各メソッドに適用する `Impersonation` の プロパティを または に設定することも必要です。 + + [!code-csharp[c_ImpersonationAndDelegation#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_impersonationanddelegation/cs/source.cs#3)] + [!code-vb[c_ImpersonationAndDelegation#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_impersonationanddelegation/vb/source.vb#3)] + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と `ImpersonationOption` の可能なすべての組み合わせに対する `ImpersonateCallerForAllServiceOperations` の動作を次の表に示します。 + +|`ImpersonationOption`|`ImpersonateCallerForAllServiceOperations`|動作| +|---------------------------|------------------------------------------------|--------| +|必須|適用なし|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、呼び出し元を偽装します。| +|Allowed|false|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、呼び出し元を偽装しません。| +|Allowed|TRUE|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、呼び出し元を偽装します。| +|NotAllowed|false|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、呼び出し元を偽装しません。| +|NotAllowed|TRUE|使用できません \( がスローされます\)。| + +## Windows 資格情報とキャッシュされたトークンの偽装から取得する偽装レベル + Windows クライアント資格情報の使用時にサービスが実行する偽装のレベルを、クライアントが部分的に制御するシナリオがあります。 クライアントが匿名偽装レベルを指定した場合に発生するシナリオもあれば、 キャッシュされたトークンを使用して偽装を実行した場合に発生するシナリオもあります。 これを行うには、 クラスの プロパティを設定します。このクラスには、ジェネリック クラス のプロパティとしてアクセスします。 + +> [!NOTE] +> 匿名偽装レベルを指定すると、クライアントはサービスに匿名でログオンします。 したがって、偽装を実行するかどうかに関係なく、サービスは匿名ログオンを許可する必要があります。 + + クライアントは、偽装レベルとして 、または を指定できます。 次のコードに示すように、指定したレベルのトークンだけが作成されます。 + + [!code-csharp[c_ImpersonationAndDelegation#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_impersonationanddelegation/cs/source.cs#4)] + [!code-vb[c_ImpersonationAndDelegation#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_impersonationanddelegation/vb/source.vb#4)] + + キャッシュされたトークンを使用して偽装するときに、サービスが取得する偽装レベルを次の表に示します。 + +|`AllowedImpersonationLevel` の値|サービスに `SeImpersonatePrivilege` がある|サービスとクライアントに処理を代行する機能がある|キャッシュされたトークンの `ImpersonationLevel`| +|------------------------------------|----------------------------------------|------------------------------|----------------------------------------| +|Anonymous|はい|適用なし|偽装| +|Anonymous|いいえ|適用なし|識別| +|識別|適用なし|適用なし|識別| +|偽装|はい|適用なし|偽装| +|偽装|いいえ|適用なし|識別| +|処理の代行|はい|はい|処理の代行| +|処理の代行|はい|いいえ|偽装| +|処理の代行|いいえ|適用なし|識別| + +## ユーザー名資格情報とキャッシュされたトークンの偽装から取得する偽装レベル + クライアントがユーザー名とパスワードをサービスに渡すことで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] はそのユーザーとしてログオンできるようになります。これは、`AllowedImpersonationLevel` プロパティを に設定することに相当します \(`AllowedImpersonationLevel` は、 クラスと クラスで使用できます\)。 サービスがユーザー名資格情報を受け取るときに取得する偽装レベルを次の表に示します。 + +|`AllowedImpersonationLevel`|サービスに `SeImpersonatePrivilege` がある|サービスとクライアントに処理を代行する機能がある|キャッシュされたトークンの `ImpersonationLevel`| +|---------------------------------|----------------------------------------|------------------------------|----------------------------------------| +|適用なし|はい|はい|処理の代行| +|適用なし|はい|いいえ|偽装| +|適用なし|いいえ|適用なし|識別| + +## S4U ベースの偽装から取得する偽装レベル + +|サービスに `SeTcbPrivilege` がある|サービスに `SeImpersonatePrivilege` がある|サービスとクライアントに処理を代行する機能がある|キャッシュされたトークンの `ImpersonationLevel`| +|--------------------------------|----------------------------------------|------------------------------|----------------------------------------| +|はい|はい|適用なし|偽装| +|はい|いいえ|適用なし|識別| +|いいえ|適用なし|適用なし|識別| + +## クライアント証明書から Windows アカウントへのマッピング + クライアントは、証明書を使用してサービスに対してクライアント自身を認証し、サービスが Active Directory を使用してクライアントを既存のアカウントにマップするように操作できます。 次の XML は、証明書をマップするためにサービスを構成する方法を示しています。 + +```xml + + + + + + + + + + + + + +``` + + 次のコードはサービスを構成する方法を示しています。 + +``` + +// Create a binding that sets a certificate as the client credential type. +WSHttpBinding b = new WSHttpBinding(); +b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate; + +// Create a service host that maps the certificate to a Windows account. +Uri httpUri = new Uri("http://localhost/Calculator"); +ServiceHost sh = new ServiceHost(typeof(HelloService), httpUri); +sh.Credentials.ClientCertificate.Authentication.MapClientCertificateToWindowsAccount = true; + +``` + +## 処理の代行 + バックエンド サービスに処理を代行させるには、サービスが Kerberos マルチレッグ \(NTLM にフォールバックしない SSPI\) を実行するか、クライアントの Windows ID を使用して、バックエンド サービスに対する Kerberos 直接認証を実行する必要があります。 バックエンド サービスに処理を代行させる場合、 とチャネルを作成し、クライアントを偽装している間、このチャネル経由で通信を行います。 この形式の委任では、バックエンド サービスとフロントエンド サービス間の距離は、フロントエンド サービスで実現される偽装レベルによって決まります。 偽装レベルが の場合、フロントエンド サービスとバックエンド サービスは、同じコンピューター上で実行されている必要があります。 偽装レベルが の場合、フロントエンド サービスとバックエンド サービスは、別々のコンピューター上にあっても、同じコンピューター上にあってもかまいません。 Delegation レベルの偽装を有効にする場合、委任を許可するように Windows ドメイン ポリシーを構成する必要があります。 委任をサポートできるように Active Directory を構成する方法の詳細については、「[Enabling Delegated Authentication \(委任認証の有効化\)](http://go.microsoft.com/fwlink/?LinkId=99690)」を参照してください。 + +> [!NOTE] +> バックエンド サービスで Windows アカウントに対応するユーザー名とパスワードを使用して、フロントエンド サービスに対するクライアント認証を行うと、フロントエンド サービスはこのユーザー名とパスワードを再利用して、バックエンド サービスに対する認証を行うことができます。 ユーザー名とパスワードをバックエンド サービスに渡すことで、バックエンド サービスが偽装を実行できるため、これは ID フローの特に強力な形式と言えますが、Kerberos を使用しないため、委任は構成されません。 Active Directory による委任の制御は、ユーザー名\/パスワード認証には適用されません。 + +### 偽装レベルの 1 つの機能としての委任機能 + +|偽装レベル|サービスがプロセス間の委任を実行できる|サービスがコンピューター間の委任を実行できる| +|-----------|-------------------------|----------------------------| +||いいえ|いいえ| +||○|いいえ| +||はい|はい| + + 委任の使用方法を次のコード例に示します。 + + [!code-csharp[c_delegation#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_delegation/cs/source.cs#1)] + [!code-vb[c_delegation#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_delegation/vb/source.vb#1)] + +### 制約された委任を使用するようにアプリケーションを構成する方法 + 制約された委任を使用するには、送信側、受信側、およびドメイン コントローラーを制約された委任を使用するように構成する必要があります。 制約された委任を有効にする手順を以下に示します。 委任と制約された委任の違いの詳細については、「[Windows Server 2003 Kerberos Extensions \(Windows Server 2003 Kerberos 拡張機能\)](http://go.microsoft.com/fwlink/?LinkId=100194)」の制約された委任に関する部分を参照してください。 + +1. ドメイン コントローラーで、クライアント アプリケーションを実行しているアカウントの **\[アカウントは重要なので委任できない\]** チェック ボックスをオフにします。 + +2. ドメイン コントローラーで、クライアント アプリケーションを実行しているアカウントの **\[アカウントは委任に対して信頼されている\]** チェック ボックスをオンにします。 + +3. ドメイン コントローラーで、**\[コンピューターを委任に対して信頼する\]** をクリックして、委任に対して信頼されるように中間層コンピューターを構成します。 + +4. ドメイン コントローラーで、**\[指定されたサービスへの委任でのみこのコンピューターを信頼する\]** をクリックして、制約された委任を使用するように中間層コンピューターを構成します。 + + 制約された委任を構成する手順の詳細については、MSDN の次のトピックを参照してください。 + +- [Kerberos 委任のトラブルシューティング](http://go.microsoft.com/fwlink/?LinkId=36724) + +- [Kerberos プロトコルの遷移および制約委任](http://go.microsoft.com/fwlink/?LinkId=36725) + +## 参照 + + + + + + + + + + + + + + [トランスポート セキュリティでの偽装の使用](../../../../docs/framework/wcf/feature-details/using-impersonation-with-transport-security.md) + [クライアントの偽装](../../../../docs/framework/wcf/samples/impersonating-the-client.md) + [方法 : サービスでクライアントに偽装する](../../../../docs/framework/wcf/how-to-impersonate-a-client-on-a-service.md) + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/denial-of-service.md b/docs/framework/wcf/feature-details/denial-of-service.md new file mode 100644 index 00000000000..1d2f95b687b --- /dev/null +++ b/docs/framework/wcf/feature-details/denial-of-service.md @@ -0,0 +1,96 @@ +--- +title: "サービス拒否 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "サービス拒否 [WCF]" +ms.assetid: dfb150f3-d598-4697-a5e6-6779e4f9b600 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# サービス拒否 +サービス拒否は、メッセージを処理できなくしたり、メッセージ処理を大幅に遅延させたりするなど、システムに過大な負荷が生じた場合に発生します。 + +## 過度のメモリ消費 + 一意のローカル名、名前空間、またはプレフィックスを大量に含んだ XML ドキュメントを読み込むと、問題が発生する場合があります。 から派生したクラスを使用している場合、、または のいずれかのプロパティが項目ごとに呼び出され、それによって返された文字列が に追加されます。 が保持するコレクションのサイズは決して減ることがありません。その結果、文字列ハンドルの実質的な "メモリ リーク" が発生する場合があります。 + + 回避事項を次に示します。 + +- からの派生クラスを作成し、最大サイズのクォータを指定します \( の使用を回避したり、サイズが上限に達したときに を切り替えたりすることはできません\)。 + +- 可能であれば、前述のプロパティを使用せずに、 メソッドと メソッドを使用します。これらのメソッドでは、文字列が返されないため、 コレクションがあふれてしまう問題を回避できます。 + +## 悪質なクライアントにより過度のライセンス要求がサービスに送信される + 悪質なクライアントが過度のライセンス要求を実行してサービスを攻撃する場合、サーバーは過度のメモリを使用することになります。 + + 回避方法 : クラスの次のプロパティを使用します。 + +- : `SPNego` または `SSL` ネゴシエーションの後にサーバーがキャッシュする、期限付きの `SecurityContextToken` の最大数を制御します。 + +- : `SPNego` または `SSL` ネゴシエーションに続いてサーバーが発行する `SecurityContextTokens` の有効期限を制御します。 サーバーは、この期間の `SecurityContextToken` をキャッシュします。 + +- : サーバーで確立されているが、そのアプリケーション メッセージが処理されていない、セキュリティで保護されたメッセージ交換の最大数を制御します。 このクォータは、クライアントが、セキュリティで保護されたメッセージ交換をサービスで確立しないようにします。それによって、サービスはクライアントごとの状態を保持できますが、それらの状態を使用することはありません。 + +- : サービスが、セキュリティで保護されたメッセージ交換を、その当事者のクライアントからのアプリケーション メッセージを受信しなくても確立したままにする最長時間を制御します。 このクォータは、クライアントが、セキュリティで保護されたメッセージ交換をサービスで確立しないようにします。それによって、サービスはクライアントごとの状態を保持できますが、それらの状態を使用することはありません。 + +## WSDualHttpBinding または二重カスタム バインディングにクライアント認証が必要になる + 既定では、 のセキュリティは有効になっています。 ただし、 プロパティを に設定してクライアント認証を無効にすると、第 3 のサービスで悪質なユーザーからサービス拒否攻撃を受ける可能性があります。 これは、悪質なクライアントが、メッセージ ストリームを第 3 のサービスに送信するようサービスに指示できるためです。 + + これを防ぐには、このプロパティを `None` に設定しないようにします。 二重メッセージ パターンを持つカスタム バインディングを作成する場合もこの可能性があることに注意してください。 + +## 監査イベント ログがいっぱいになる可能性がある + 悪意のあるユーザーに監査が有効になっていることを知られると、その攻撃者に監査エントリの書き込みにつながる無効なメッセージを送信される可能性があります。 このような方法で監査ログに書き込みが行われると、監査システムに障害が発生します。 + + これを防ぐには、 プロパティを `true` に設定し、イベント ビューアーのプロパティを使用して監査動作を制御します。 イベント ビューアーを使用してイベント ログを表示および管理する方法の[!INCLUDE[crabout](../../../../includes/crabout-md.md)] 「[イベント ビューアー](http://go.microsoft.com/fwlink/?LinkId=186123)」を参照してください。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [監査](../../../../docs/framework/wcf/feature-details/auditing-security-events.md). + +## IAuthorizationPolicy の無効な実装によりサービスが停止する可能性がある + 欠陥のある インターフェイスの実装で メソッドを呼び出すと、サービスが停止する可能性があります。 + + 回避方法 : 信頼されたコードのみを使用します。 つまり、ユーザーが記述しテストしたコード、または信頼されたプロバイダーが提供するコードのみを使用します。 十分な検討を行わずに、 の信頼されない拡張をユーザーのコードに接続することを許可しないでください。 これは、サービスの実装で使用されるすべての拡張に当てはまります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、アプリケーション コードと、拡張ポイントを使用して接続される外部コードを区別しません。 + +## Kerberos の最大トークン サイズの変更が必要になる場合がある + クライアントが多数のグループ \(実際の数はグループにより異なるが、約 900\) に属している場合、メッセージ ヘッダーのブロックが 64 KB を超えると問題が発生する場合があります。 このような場合は、最大 Kerberos トークンサイズを Microsoft サポート オンラインの「[Internet Explorer Kerberos 認証は、IIS に接続している十分なバッファーのため、機能しません。](http://go.microsoft.com/fwlink/?LinkId=89176)」で説明されているとおりに増加できます。最大 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージ サイズを Kerberos トークンの増加に合わせて増加させることが必要な場合もあります。 + +## 自動登録によってコンピューターに同一サブジェクト名の証明書が複数発生する + *自動登録*は、証明書用のユーザーとコンピューターを自動で登録する [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] の機能です。 この機能が有効になっているドメイン上にコンピューターがある場合、新しいコンピューターがネットワークに参加するたびに、クライアント認証を目的とする X.509 証明書が自動的に作成されローカル コンピューターの個人用証明書のストアに自動で挿入されます。 ただし、自動登録では、キャッシュに作成されたすべての証明書に同じサブジェクト名が使用されます。 + + この影響で、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを自動登録のドメインで開始できない場合があります。 コンピューターの完全修飾ドメイン ネーム システム \(DNS\) 名を持つ証明書が複数あるため、既定サービスの X.509 資格情報検索の条件が不明確になり、このような問題が発生します。 この場合、1 つは自動登録で作成された証明書、もう 1 つは自己発行された証明書です。 + + これを防ぐには、より厳密な [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)の検索条件を使用して、使用する正確な証明書を参照します。 たとえば、 オプションを使用し、一意の拇印 \(ハッシュ\) により証明書を指定します。 + + 自動登録機能の[!INCLUDE[crabout](../../../../includes/crabout-md.md)] 「[Windows Server 2003 の証明書自動登録](http://go.microsoft.com/fwlink/?LinkId=95166)」を参照してください。 + +## 複数の代替サブジェクト名の最後が承認に使用される + まれなケースとして X.509 証明書に複数の代替サブジェクト名が含まれる場合、その代替サブジェクト名を使用して承認を行うと、承認は失敗する場合があります。 + +## ACL を使用して構成ファイルを保護する + [!INCLUDE[infocard](../../../../includes/infocard-md.md)] で発行されたトークンについては、必須およびオプションのクレームをコードおよび構成ファイルに指定できます。 これにより、対応する要素が、セキュリティ トークン サービスに送信される `RequestSecurityToken` メッセージに送出されます。 攻撃者は、コードまたは構成を変更して必須またはオプションのクレームを削除でき、対象サービスへのアクセスが許可されていないトークンをセキュリティ トークン サービスに発行させることができます。 + + これを防ぐには、コンピューターにアクセスして構成ファイルを変更する必要があります。 アクセス制御リスト \(ACL: Access Control List\) を使用して構成ファイルをセキュリティで保護します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、コードが構成から読み込まれる前に、そのコードをアプリケーション ディレクトリまたはグローバル アセンブリ キャッシュに格納する必要があります。 ディレクトリの ACL を使用してディレクトリをセキュリティで保護します。 + +## 1 つのサービスに対して、セキュリティで保護されたセッションが最大数に達する + クライアントがサービスにより正常に認証され、セキュリティで保護されたセッションがサービスと共に確立されると、クライアントがセッションをキャンセルするか、セッションの期限が切れるまで、サービスはそのセッションを追跡します。 セッションが確立されるたびに、1 つのサービスで同時にアクティブにできるセッションは上限に近づいていきます。 この上限に達した場合、1 つ以上のアクティブなセッションが期限切れになるかまたはクライアントによりキャンセルされるまで、そのサービスで新しいセッションの作成を試みるクライアントは拒否されます。 クライアントは 1 つのサービスで複数のセッションを保持できますが、その各セッションは上限に反映されます。 + +> [!NOTE] +> ステートフルなセッションを使用する場合、前の段落は適用されません。 ステートフルなセッション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : セキュリティで保護されたセッションに対しセキュリティ コンテキスト トークンを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-security-context-token-for-a-secure-session.md)」を参照してください。 + + これを防ぐには、 クラスの プロパティを設定して、アクティブなセッションの最大数とセッションの最長有効期間の制限を設定します。 + +## 参照 + [セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md) + [情報の漏えい](../../../../docs/framework/wcf/feature-details/information-disclosure.md) + [権限の昇格](../../../../docs/framework/wcf/feature-details/elevation-of-privilege.md) + [Denial of Service](../../../../docs/framework/wcf/feature-details/denial-of-service.md) + [リプレイ攻撃](../../../../docs/framework/wcf/feature-details/replay-attacks.md) + [改変](../../../../docs/framework/wcf/feature-details/tampering.md) + [サポートされていないシナリオ](../../../../docs/framework/wcf/feature-details/unsupported-scenarios.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/deploying-an-internet-information-services-hosted-wcf-service.md b/docs/framework/wcf/feature-details/deploying-an-internet-information-services-hosted-wcf-service.md new file mode 100644 index 00000000000..f1fa567d1b3 --- /dev/null +++ b/docs/framework/wcf/feature-details/deploying-an-internet-information-services-hosted-wcf-service.md @@ -0,0 +1,115 @@ +--- +title: "インターネット インフォメーション サービスでホストされる WCF サービスの配置 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 04ebd329-3fbd-44c3-b3ab-1de3517e27d7 +caps.latest.revision: 30 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 30 +--- +# インターネット インフォメーション サービスでホストされる WCF サービスの配置 +IIS \(インターネット インフォメーション サービス\) でホストされている [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスの開発と展開には、次のタスクが含まれます。 + +- IIS、ASP.NET、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]、および [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アクティブ化コンポーネントが正しくインストールおよび登録されていることを確認します。 + +- 新しい IIS アプリケーションを作成するか、既存の [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アプリケーションを再利用します。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス用の .svc ファイルを作成します。 + +- IIS アプリケーションにサービス実装を展開します。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを構成します。 + + IIS によってホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの作成に関する詳細なチュートリアルについては、「[方法 : IIS で WCF サービスをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md)」を参照してください。 + +## IIS、ASP.NET、および WCF が正しくインストールおよび登録されていることの確認 + IIS でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを正常に機能させるには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]、IIS、および ASP.NET をインストールする必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] \([!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] の一部として\)、ASP.NET、および IIS のインストール手順は、使用しているオペレーティング システムのバージョンによって異なります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] および [!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] のインストール[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Microsoft .NET Framework 4.0 \(Web インストーラー\)](http://go.microsoft.com/fwlink/?LinkId=201185)」を参照してください。 IIS のインストール手順については、「[IIS のインストール](http://go.microsoft.com/fwlink/?LinkId=201188)」を参照してください。 + + IIS が既にコンピューターにインストールされている場合は、[!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] のインストール プロセスにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が IIS に自動登録されます。[!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] の後に IIS をインストールした場合は、追加の手順に従って、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を IIS と [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] に登録する必要があります。 使用しているオペレーティング システムに応じて、次のように実行します。 + +- [!INCLUDE[wxpsp2](../../../../includes/wxpsp2-md.md)]、Windows 7、および [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)]: [ServiceModel 登録ツール \(ServiceModelReg.exe\)](../../../../docs/framework/wcf/servicemodelreg-exe.md) ツールを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を IIS に登録します。このツールを使用するには、Visual Studio コマンド プロンプトに「**ServiceModelReg.exe \/i \/x**」と入力します。 このコマンド プロンプトを開くには、\[スタート\] ボタンをクリックし、**\[すべてのプログラム\]**、**\[Microsoft Visual Studio 2012\]**、**\[Visual Studio ツール\]** の順にポイントし、**\[Visual Studio コマンド プロンプト\]** をクリックします。 + +- [!INCLUDE[wv](../../../../includes/wv-md.md)] : [!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] のサブコンポーネントの Windows Communication Foundation アクティベーション コンポーネントをインストールします。 これを行うには、\[コントロール パネル\] の **\[プログラムの追加と削除\]** をクリックして、**\[Windows コンポーネントの追加と削除\]** をクリックします。**Windows コンポーネント ウィザード**がアクティブになります。 + +- Windows 7: + + 最後に、ASP.NET が .NET Framework Version 4 を使用するように設定されていることを確認する必要があります。 これには、–i オプションを指定して ASPNET\_Regiis ツールを実行します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][ASP.NET IIS 登録ツール](http://go.microsoft.com/fwlink/?LinkId=201186) + +## 新しい IIS アプリケーションの作成、または既存の ASP.NET アプリケーションの再利用 + IIS でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、IIS アプリケーションの内部に存在する必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのみをホストする新しい IIS アプリケーションを作成できます。 または、既に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] コンテンツ \(.aspx ページや ASP.NET Web サービス \(ASMX\) など\) をホストしている既存のアプリケーションに [!INCLUDE[vstecasplong](../../../../includes/vstecasplong-md.md)] サービスを展開することもできます。 これらのオプション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WCF サービスと ASP.NET](../../../../docs/framework/wcf/feature-details/wcf-services-and-aspnet.md)」の「WCF と ASP.NET の並行ホスト」および「ASP.NET 互換モードでの WCF サービスのホスト」のセクションを参照してください。 + + [!INCLUDE[iis601](../../../../includes/iis601-md.md)] とそれ以降のバージョンでは、隔離されているオブジェクト指向プログラミング アプリケーションは定期的に再起動されることに注意してください。 既定値は 1740 分です。 サポートされている最大値は 71,582 分です。 この再起動は、無効にできます。 このプロパティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[PeriodicRestartTime](http://go.microsoft.com/fwlink/?LinkId=109968)」を参照してください。 + +## WCF サービス用の .svc ファイルの作成 + IIS でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、IIS アプリケーションの内部で特別なコンテンツ ファイル \(.svc ファイル\) として表現されます。 これは、ASMX ページが、IIS アプリケーションの内部で .asmx ファイルとして表現されるのと同様です。 .svc ファイルには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ホスト インフラストラクチャで、着信メッセージに応えてホスト対象サービスをアクティブ化できるようにする、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 固有の処理ディレクティブ \([@ServiceHost](../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md)\) が含まれます。 .svc ファイルの最も一般的な構文を次のステートメントに示します。 + +``` +<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %> +``` + + この構文には、[@ServiceHost](../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md) ディレクティブと単一の属性 `Service` が含まれます。`Service` 属性の値は、サービス実装の共通言語ランタイム \(CLR: Common Language Runtime\) 型名です。 このディレクティブを使用することは、次のコードを使用してサービス ホストを作成することと基本的に同じです。 + +``` +new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) ); +``` + + サービスのベース アドレスの一覧を作成するなど、追加のホスト構成を実行することもできます。 カスタム を使用して、このディレクティブをカスタム ホスト ソリューション用に拡張することもできます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストする IIS アプリケーションは、 インスタンスの作成とライフタイムの管理を実行しません。 管理対象の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ホスト インフラストラクチャは、.svc ファイルに対する最初の要求を受け取ったときに、必要な インスタンスを動的に作成します。 このインスタンスは、コードによって明示的に閉じられるか、アプリケーションがリサイクルされるときまで解放されません。 + + .svc ファイルの構文[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[@ServiceHost](../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md)」を参照してください。 + +## IIS アプリケーションへのサービス実装の展開 + IIS でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、[!INCLUDE[vstecasplong](../../../../includes/vstecasplong-md.md)] と同一の動的なコンパイル モデルを使用します。[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] の場合と同様に、IIS でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの実装コードは、次のようないくつかの方法でさまざまな場所に展開できます。 + +- グローバル アセンブリ キャッシュ \(GAC: Global Assembly Cache\) またはアプリケーションの \\bin ディレクトリに配置される、プリコンパイルされた .dll ファイルとして展開します。 プリコンパイルされたバイナリは、新しいバージョンのクラス ライブラリが展開されるまで更新されません。 + +- アプリケーションの \\App\_Code ディレクトリに配置される、コンパイル解除されたソース ファイルとして展開します。 このディレクトリに配置されたソース ファイルは、アプリケーションの最初の要求を処理するときに動的に要求されます。 \\App\_Code ディレクトリ内のファイルを変更すると、次の要求を受け取ったときにアプリケーション全体がリサイクルされ、再コンパイルされます。 + +- .svc ファイルに直接格納される、コンパイル解除されたコードとして展開します。 また、実装コードも、サービスの .svc ファイル内の @ServiceHost ディレクティブの後にインラインで配置できます。 インライン コードを変更すると、次の要求を受け取ったときにアプリケーションがリサイクルされ、再コンパイルされます。 + + [!INCLUDE[vstecasplong](../../../../includes/vstecasplong-md.md)] コンパイル モデル[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ASP.NET コンパイルの概要](http://go.microsoft.com/fwlink/?LinkId=94773)」を参照してください。 + +## WCF サービスの構成 + IIS でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの構成は、アプリケーションの Web.config ファイルに格納されます。 IIS でホストされるサービスは、IIS の外部でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと同じ構成要素と構文を使用します。 ただし、次の制約は、IIS ホスト環境に固有です。 + +- IIS でホストされるサービスのベース アドレス。 + +- IIS の外部の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストするアプリケーションは、ベース アドレス URI のセットを コンストラクターに渡すか、サービスの構成に [\](../../../../docs/framework/configure-apps/file-schema/wcf/host.md) 要素を指定することによって、ホストするサービスのベース アドレスを制御できます。 IIS でホストされるサービスは、それぞれのベース アドレスを制御できません。IIS でホストされるサービスのベース アドレスは、その .svc ファイルのアドレスです。 + +### IIS でホストされるサービスのエンドポイント アドレス + IIS でホストされるときのエンドポイント アドレスは、常にサービスを表す .svc ファイルのアドレスを基準にした相対アドレスと見なされます。 たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのベース アドレスが http:\/\/localhost\/Application1\/MyService.svc で、次のエンドポイント構成を伴う場合 + +``` + +``` + + "http:\/\/localhost\/Application1\/MyService.svc\/anotherEndpoint" に到達できるエンドポイントが得られます。 + + 同様に、相対アドレスとして空の文字列を使用するエンドポイント構成要素では、ベース アドレスである http:\/\/localhost\/Application1\/MyService.svc に到達できるエンドポイントが得られます。 + +``` + +``` + + IIS でホストされるサービスのエンドポイントには、常に相対エンドポイント アドレスを使用する必要があります。 完全修飾されたエンドポイント アドレス \(http:\/\/localhost\/MyService.svc など\) を指定すると、エンドポイント アドレスが、エンドポイントを公開するサービスをホストする IIS アプリケーションを指さない場合、サービスの展開エラーになる可能性があります。 ホストされるサービスに相対エンドポイント アドレスを使用すると、このような競合が回避されます。 + +### 利用可能なトランスポート + IIS 5.1 および [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でホストされる [!INCLUDE[iis601](../../../../includes/iis601-md.md)] サービスが使用できるのは、HTTP ベースの通信のみに制限されています。 これらの IIS プラットフォームでホストされるサービスで、非 HTTP バインドを使用するように構成すると、サービスをアクティブ化するときにエラーが発生します。[!INCLUDE[iisver](../../../../includes/iisver-md.md)] でサポートされるトランスポートには、既存の MSMQ アプリケーションとの後方互換性を実現する HTTP、Net.TCP、Net.Pipe、Net.MSMQ、msmq.formatname があります。 + +### HTTP トランスポート セキュリティ + IIS でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでは、サービスを格納する IIS 仮想ディレクトリで設定がサポートされている場合、HTTP トランスポート セキュリティ \(基本認証、ダイジェスト認証、Windows 統合認証などの HTTPS および HTTP 認証\) を利用できます。 ホストされるエンドポイントのバインディングでの HTTP トランスポート セキュリティ設定は、そのエンドポイントを格納する IIS 仮想ディレクトリでのトランスポート セキュリティ設定と一致する必要があります。 + + たとえば、HTTP ダイジェスト認証を使用するように構成された [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントは、HTTP ダイジェスト認証を許可するように構成された IIS 仮想ディレクトリに存在する必要があります。 IIS の設定と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントの設定の組み合わせが一致しない場合、サービスをアクティブ化するときにエラーが発生します。 + +## 参照 + [インターネット インフォメーション サービスでのホスティング](../../../../docs/framework/wcf/feature-details/hosting-in-internet-information-services.md) + [インターネット インフォメーション サービス ホスティングのベスト プラクティス](../../../../docs/framework/wcf/feature-details/internet-information-services-hosting-best-practices.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/diagnosing-transactional-applications.md b/docs/framework/wcf/feature-details/diagnosing-transactional-applications.md new file mode 100644 index 00000000000..3f2c7d10323 --- /dev/null +++ b/docs/framework/wcf/feature-details/diagnosing-transactional-applications.md @@ -0,0 +1,133 @@ +--- +title: "トランザクション アプリケーションの診断 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4a993492-1088-4d10-871b-0c09916af05f +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# トランザクション アプリケーションの診断 +このトピックでは、トランザクションのアプリケーションをトラブルシューティングするために、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に用意されている管理機能および診断機能の使用方法について説明します。 + +## パフォーマンス カウンター + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、トランザクション アプリケーションのパフォーマンスを測定するための、標準のパフォーマンス カウンターが用意されています。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[WCF パフォーマンス カウンター](../../../../docs/framework/wcf/diagnostics/performance-counters/index.md)」を参照してください。 + + パフォーマンス カウンターには次の表に示すように、サービス、エンドポイント、操作の 3 つのレベルがあります。 + +### サービス パフォーマンス カウンター + +|パフォーマンス カウンター|説明| +|-------------------|--------| +|トランザクション フロー|このサービスで操作に対して実行されたトランザクションの数です。 このカウンターは、サービスに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。| +|1 秒あたりのトランザクション フロー|このサービスの操作に対して実行された 1 秒あたりのトランザクションの数です。 このカウンターは、サービスに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。| +|コミットされたトランザクション操作|このサービスで、結果がコミットされた状態で完了したトランザクション操作の数です。 そのような操作中に実行された作業は完全にコミットされました。 リソースは、操作で実行された作業に応じて更新されます。| +|1 秒あたりのコミットされたトランザクション操作|このサービスで、結果がコミットされた状態で完了したトランザクション操作の 1 秒あたりの数です。 そのような操作中に実行された作業は完全にコミットされました。 リソースは、操作で実行された作業に応じて更新されます。| +|中止されたトランザクション操作|このサービスで、結果が中止された状態で完了したトランザクション操作の数です。 そのような操作中に実行された作業はロールバックされました。 リソースは、それぞれの直前の状態に復元されました。| +|1 秒あたりの中止されたトランザクション操作|このサービスで、結果が中止された状態で完了したトランザクション操作の 1 秒あたりの数です。 そのような操作中に実行された作業はロールバックされました。 リソースは、それぞれの直前の状態に復元されました。| +|不明なトランザクション操作|このサービスで、結果が不明な状態で完了したトランザクション操作の数です。 結果が不明な作業は中間状態になります。 リソースは、保留中となります。| +|1 秒あたりの不明なトランザクション操作|このサービスで、結果が不明な状態で完了したトランザクション操作の 1 秒あたりの数です。 結果が不明な作業は中間状態になります。 リソースは、保留中となります。| + +### エンドポイントのパフォーマンス カウンター + +|パフォーマンス カウンター|説明| +|-------------------|--------| +|トランザクション フロー|このエンドポイントでの操作に対して実行されたトランザクションの数。 このカウンターは、エンドポイントに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。| +|1 秒あたりのトランザクション フロー|毎秒ごとにこのエンドポイントでの操作に対して実行されたトランザクションの数。 このカウンターは、エンドポイントに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。| + +### 操作パフォーマンス カウンター + +|パフォーマンス カウンター|説明| +|-------------------|--------| +|トランザクション フロー|このエンドポイントでの操作に対して実行されたトランザクションの数。 このカウンターは、エンドポイントに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。| +|1 秒あたりのトランザクション フロー|毎秒ごとにこのエンドポイントでの操作に対して実行されたトランザクションの数。 このカウンターは、エンドポイントに送信されたメッセージにトランザクションがある場合は常にインクリメントされます。| + +## WMI \(Windows Management Instrumentation\) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WMI \(Windows Management Instrumentation\) プロバイダーを介して実行時のサービスの検査データを公開します。 WMI データへのアクセス[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[診断用の WMI \(Windows Management Instrumentation\) の使用](../../../../docs/framework/wcf/diagnostics/wmi/index.md)」を参照してください。 + + WMI プロパティには、サービスに適用されるトランザクション設定を示す読み取り専用のプロパティが多数あります。 次の表にこれらの設定をすべて示します。 + + サービスの `ServiceBehaviorAttribute` には、次のプロパティがあります。 + +|名前|種類|説明| +|--------|--------|--------| +|ReleaseServiceInstanceOnTransactionComplete|ブール型|現在のトランザクションの完了時に、サービス オブジェクトをリサイクルするかどうかを指定します。| +|TransactionAutoCompleteOnSessionClose|ブール型|現在のセッションの終了時に、保留中のトランザクションを完了するかどうかを指定します。| +|TransactionIsolationLevel| 列挙体の有効な値を含む文字列。|このサービスがサポートするトランザクションの分離レベルを指定します。| +|TransactionTimeout||トランザクションを完了しなければならない期間を指定します。| + + `ServiceTimeoutsBehavior` には、次のプロパティがあります。 + +|名前|種類|説明| +|--------|--------|--------| +|TransactionTimeout||トランザクションを完了しなければならない期間を指定します。| + + バインディングの `TransactionFlowBindingElement` には、次のプロパティがあります。 + +|名前|種類|説明| +|--------|--------|--------| +|TransactionProtocol| 型の有効な値を含む文字列。|トランザクションをフローさせるために使用するトランザクション プロトコルを指定します。| +|TransactionFlow|ブール型|受信トランザクション フローを有効にするかどうかを指定します。| + + 操作の `OperationBehaviorAttribute` には、次のプロパティがあります。 + +|名前|種類|説明| +|--------|--------|--------| +|TransactionAutoComplete|ブール型|未処理の例外が発生しなかった場合に、現在のトランザクションを自動的にコミットするかどうかを指定します。| +|TransactionScopeRequired|ブール型|操作がトランザクションを必要とするかどうかを指定します。| + + 操作の `TransactionFlowAttribute` には、次のプロパティがあります。 + +|名前|種類|説明| +|--------|--------|--------| +|TransactionFlowOption| 列挙体の有効な値を含む文字列。|トランザクション フローが要求される範囲を指定します。| + +## トレース + トレースを使用すると、トランザクション アプリケーションにおけるエラーを監視および分析できます。 トレースは次の方法を使用して有効にできます。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の標準トレース + + このトレースは、通常の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションのトレースと同じものです。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[トレースの構成](../../../../docs/framework/wcf/diagnostics/tracing/configuring-tracing.md)」を参照してください。 + +- WS\-AtomicTransaction トレース + + WS\-AtomicTransaction トレースは、[WS\-AtomicTransaction 構成ユーティリティ \(wsatConfig.exe\)](../../../../docs/framework/wcf/ws-atomictransaction-configuration-utility-wsatconfig-exe.md)を使用して有効にすることができます。 このトレースでは、トランザクションの状態とシステム内の参加要素を把握できます。 内部のサービス モデル トレースも有効にするには、`HKLM\SOFTWARE\Microsoft\WSAT\3.0\ServiceModelDiagnosticTracing` レジストリ キーを 列挙体の有効な値に設定します。 メッセージ ログは、他の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションと同じ方法で有効にできます。 + +- `System.Transactions` トレース + + OleTransactions プロトコルを使用する場合、プロトコル メッセージはトレースできません。 インフラストラクチャではトレースがサポートされるため \(OleTransactions を使用\)、ユーザーはトランザクションで発生したイベントを確認できます。 アプリケーションのトレースを有効にするには、`App.config` 構成ファイルに次のコードを含めます。 + + ``` + + + + + + + + + + + + + + ``` + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でも使用されるので、このコードにより、 のトレースも有効になります。 + +## 参照 + [管理と診断](../../../../docs/framework/wcf/diagnostics/index.md) + [トレースの構成](../../../../docs/framework/wcf/diagnostics/tracing/configuring-tracing.md) + [WS\-AtomicTransaction 構成ユーティリティ \(wsatConfig.exe\)](../../../../docs/framework/wcf/ws-atomictransaction-configuration-utility-wsatconfig-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/diff-in-queue-in-vista-server-2003-windows-xp.md b/docs/framework/wcf/feature-details/diff-in-queue-in-vista-server-2003-windows-xp.md new file mode 100644 index 00000000000..7ca1d0fce4f --- /dev/null +++ b/docs/framework/wcf/feature-details/diff-in-queue-in-vista-server-2003-windows-xp.md @@ -0,0 +1,47 @@ +--- +title: "Windows Vista、Windows Server 2003、および Windows XP におけるキュー機能の相違点 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "キュー [WCF], オペレーティング システム間の相違点" +ms.assetid: aa809d93-d0a3-4ae6-a726-d015cca37c04 +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# Windows Vista、Windows Server 2003、および Windows XP におけるキュー機能の相違点 +ここでは、[!INCLUDE[wv](../../../../includes/wv-md.md)]、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)]、および [!INCLUDE[wxp](../../../../includes/wxp-md.md)] における [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] キュー機能の相違について説明します。 + +## アプリケーションごとの配信不能キュー + キューに置かれたメッセージは、受信側のアプリケーションでタイムリーに読み取らなれないと、無期限にキューに残ることがあります。時間依存のメッセージでは、このような動作は適切ではありません。時間依存のメッセージとは、キューに置かれたバインディングで `TimeToLive` プロパティが設定されているメッセージです。このプロパティでは、メッセージの期限が切れるまでのキュー内での保持期間を指定します。期限切れのメッセージは、配信不能キューと呼ばれる特別なキューに送信されます。また、キューのクォータの超過、認証エラーの発生など、その他の理由でメッセージが配信不能キューに送信される場合もあります。 + + 通常は、同じキュー マネージャーを共有する、キューに置かれたすべてのアプリケーションに対して、システム全体の配信不能キューが 1 つ存在します。アプリケーションごとの配信不能キューを使用した場合は、個々のアプリケーションがそのアプリケーションごとの配信不能キューを指定できます。このため、キューに置かれた、同じキュー マネージャーを共有しているアプリケーション間の分離を改善できます。配信不能キューを他のアプリケーションと共有しているアプリケーションは、キューをブラウズしてそのアプリケーション用のメッセージを見つける必要があります。アプリケーションごとの配信不能キューが使用されている場合、アプリケーション専用の配信不能キューにあるメッセージはすべて、そのアプリケーション用ということになります。 + + [!INCLUDE[wv](../../../../includes/wv-md.md)] では、アプリケーションごとの配信不能キューが提供されます。[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では、アプリケーションごとの配信不能キューを使用できないので、アプリケーションは、システム全体の配信不能キューを使用する必要があります。 + +## 有害メッセージの処理 + 有害メッセージとは、受信側アプリケーションへの配信試行の回数が最大値を超えたメッセージのことです。この状況が生じるのは、トランザクション キューからメッセージを読み取るアプリケーションが、エラーなどの原因でメッセージをすぐに処理できないような場合です。アプリケーションは、キューに置かれたメッセージを受信したトランザクションを中止した場合、メッセージをキューに戻します。その後、アプリケーションは、新しいトランザクションで再度メッセージを取得しようとします。エラーを引き起こす問題が解決しないと、受信側のアプリケーションは、同じメッセージの受信と中止を繰り返すループから出られなくなる可能性があります。その結果、配信試行回数が最大値を超過し、有害メッセージの状況が生じます。 + + [!INCLUDE[wv](../../../../includes/wv-md.md)]、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)]、および [!INCLUDE[wxp](../../../../includes/wxp-md.md)] のメッセージ キュー \(MSMQ\) には、有害メッセージの処理に関して次のような重要な相違点があります。 + +- [!INCLUDE[wv](../../../../includes/wv-md.md)] の MSMQ はサブキューをサポートしますが、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] はサポートしません。サブキューは、有害メッセージ処理で使用されます。再試行キューと有害キューは、有害メッセージ処理の設定に基づいて作成されるアプリケーション キューのサブキューです。作成する再試行サブキューの数は、`MaxRetryCycles` で指定します。したがって、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] または [!INCLUDE[wxp](../../../../includes/wxp-md.md)] で実行している場合、`MaxRetryCycles` は無視されるため、`ReceiveErrorHandling.Move` は使用できません。 + +- [!INCLUDE[wv](../../../../includes/wv-md.md)] の MSMQ では、否定受信確認がサポートされます。[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] の MSMQ ではサポートされません。受信側キュー マネージャーから否定受信確認を受け取ると、送信側キュー マネージャーは拒否されたメッセージを配信不能キューに入れます。そのため、`ReceiveErrorHandling.Reject` は、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では使用できません。 + +- [!INCLUDE[wv](../../../../includes/wv-md.md)] の MSMQ は、メッセージの配信試行回数を保持するメッセージ プロパティをサポートします。この中止回数のプロパティは、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では使用できません。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、中止回数をメモリで保持するため、同じメッセージが Web ファーム内の複数の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスによって読み取られた場合、このプロパティは、正確な値を格納できない可能性があります。 + +## リモート トランザクション読み取り + [!INCLUDE[wv](../../../../includes/wv-md.md)] 上の MSMQ は、リモート トランザクション読み取りをサポートします。これによって、キューから読み取りを行うアプリケーションを、そのキューをホストしているコンピューターとは別のコンピューター上でホストすることが可能になります。これにより、サービスのファーム全体で中央のキューから読み取りを行うことができるようになり、システムの全体のスループットが向上します。また、メッセージの読み取り中および処理中にエラーが発生した場合、トランザクションはロールバックし、メッセージは後で処理できるようにキューに残るようにもなります。 + +## 参照 + [配信不能キューを使用したメッセージ転送エラー処理](../../../../docs/framework/wcf/feature-details/using-dead-letter-queues-to-handle-message-transfer-failures.md) + [有害メッセージ処理](../../../../docs/framework/wcf/feature-details/poison-message-handling.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/diff-service-certificate-validation-ie-and-wcf.md b/docs/framework/wcf/feature-details/diff-service-certificate-validation-ie-and-wcf.md new file mode 100644 index 00000000000..7d66c3d2971 --- /dev/null +++ b/docs/framework/wcf/feature-details/diff-service-certificate-validation-ie-and-wcf.md @@ -0,0 +1,27 @@ +--- +title: "Internet Explorer と WCF で実行されるサービス証明書の検証の相違点 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "証明書 [WCF], サービス証明書の検証" + - "サービス証明書の検証 [WCF]" +ms.assetid: 9dffcab2-70a9-40f0-99fd-d3a0b296028f +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# Internet Explorer と WCF で実行されるサービス証明書の検証の相違点 +HTTPS を使用した場合、Internet Explorer と [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] ではサービス証明書の検証方法に違いがあるため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントからサービス エンドポイントに正常にメッセージを送信できても、サービスのヘルプ ページや Web サービス記述言語 \(WSDL: Web Services Description Language\) に Internet Explorer からアクセスできないことがあります。これは、サービス証明書の拡張使用法フラグに `ServerAuthentication` オブジェクト識別子 \(OID: Object Identifier\) があるかどうかを Internet Explorer がチェックするのに対し、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] はそのような制限を適用しないためです。サービスのヘルプ ページまたはサービスの WSDL に Internet Explorer からアクセスできないときは、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用してそのサービスのメタデータにアクセスします。 + +## 参照 + [HTTPS、SSL Over TCP、SOAP セキュリティ間における証明書検証方法の相違点](../../../../docs/framework/wcf/feature-details/cert-val-diff-https-ssl-over-tcp-and-soap.md) + [方法 : メタデータの取得および準拠サービスの実装をする](../../../../docs/framework/wcf/feature-details/how-to-retrieve-metadata-and-implement-a-compliant-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/discoverable-service-that-registers-with-the-discovery-proxy.md b/docs/framework/wcf/feature-details/discoverable-service-that-registers-with-the-discovery-proxy.md new file mode 100644 index 00000000000..a10f8bb283c --- /dev/null +++ b/docs/framework/wcf/feature-details/discoverable-service-that-registers-with-the-discovery-proxy.md @@ -0,0 +1,304 @@ +--- +title: "探索プロキシで登録される探索可能なサービスの実装方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eb275bc1-535b-44c8-b9f3-0b75e9aa473b +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 探索プロキシで登録される探索可能なサービスの実装方法 +これは、探索プロキシの実装方法に関する&4; つのトピックのうちの&2; 番目のトピックです。 前のトピックで[方法: 探索プロキシの実装](../../../../docs/framework/wcf/feature-details/how-to-implement-a-discovery-proxy.md)、探索プロキシを実装します。 このトピックでは、アナウンス メッセージ ([!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] および `Hello`) を探索プロキシに送信する `Bye` サービスを作成します。この送信により、サービスが探索プロキシに登録または登録解除されます。 + +### サービス コントラクトを定義するには + +1. 新しいコンソール アプリケーション プロジェクトを、`DiscoveryProxyExample` という `Service` ソリューションに追加します。 + +2. 次のアセンブリへの参照を追加します。 + + 1. System.ServiceModel + + 2. System.ServiceModel.Discovery + +3. 新しいクラスを `CalculatorService` プロジェクトに追加します。 + +4. 次の using ステートメントを追加します。 + + ``` + using System; + using System.ServiceModel; + ``` + +5. CalculatorService.cs でサービス コントラクトを定義します。 + + ``` + // Define a service contract. + [ServiceContract(Namespace = "http://Microsoft.Samples.Discovery")] + public interface ICalculatorService + { + [OperationContract] + double Add(double n1, double n2); + [OperationContract] + double Subtract(double n1, double n2); + [OperationContract] + double Multiply(double n1, double n2); + [OperationContract] + double Divide(double n1, double n2); + } + + ``` + +6. また、CalculatorService.cs でサービス コントラクトを実装します。 + + ``` + // Service class which implements the service contract. + public class CalculatorService : ICalculatorService + { + public double Add(double n1, double n2) + { + double result = n1 + n2; + Console.WriteLine("Received Add({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Subtract(double n1, double n2) + { + double result = n1 - n2; + Console.WriteLine("Received Subtract({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Multiply(double n1, double n2) + { + double result = n1 * n2; + Console.WriteLine("Received Multiply({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Divide(double n1, double n2) + { + double result = n1 / n2; + Console.WriteLine("Received Divide({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + } + + ``` + +### サービスをホストするには + +1. プロジェクトの作成時に生成された Program.cs ファイルを開きます。 + +2. 次の using ステートメントを追加します。 + + ``` + using System; + using System.ServiceModel; + using System.ServiceModel.Description; + using System.ServiceModel.Discovery; + + ``` + +3. `Main()` メソッド内に次のコードを追加します。 + + ``` + + // Define the base address of the service + Uri baseAddress = new Uri("net.tcp://localhost:9002/CalculatorService/" + Guid.NewGuid().ToString()); + // Define the endpoint address where announcement messages will be sent + Uri announcementEndpointAddress = new Uri("net.tcp://localhost:9021/Announcement"); + + // Create the service host + ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress); + try + { + // Add a service endpoint + ServiceEndpoint netTcpEndpoint = serviceHost.AddServiceEndpoint(typeof(ICalculatorService), new NetTcpBinding(), string.Empty); + + // Create an announcement endpoint, which points to the Announcement Endpoint hosted by the proxy service. + AnnouncementEndpoint announcementEndpoint = new AnnouncementEndpoint(new NetTcpBinding(), new EndpointAddress(announcementEndpointAddress)); + + // Create a ServiceDiscoveryBehavior and add the announcement endpoint + ServiceDiscoveryBehavior serviceDiscoveryBehavior = new ServiceDiscoveryBehavior(); + serviceDiscoveryBehavior.AnnouncementEndpoints.Add(announcementEndpoint); + + // Add the ServiceDiscoveryBehavior to the service host to make the service discoverable + serviceHost.Description.Behaviors.Add(serviceDiscoveryBehavior); + + // Start listening for messages + serviceHost.Open(); + + Console.WriteLine("Calculator Service started at {0}", baseAddress); + Console.WriteLine(); + Console.WriteLine("Press to terminate the service."); + Console.WriteLine(); + Console.ReadLine(); + + serviceHost.Close(); + } + catch (CommunicationException e) + { + Console.WriteLine(e.Message); + } + catch (TimeoutException e) + { + Console.WriteLine(e.Message); + } + + if (serviceHost.State != CommunicationState.Closed) + { + Console.WriteLine("Aborting the service..."); + serviceHost.Abort(); + } + ``` + + これで、探索サービスの実装が完了しました。 進んで[方法: 探索プロキシを使用して、サービスを検索するクライアント アプリケーションの実装](../../../../docs/framework/wcf/feature-details/client-app-discovery-proxy-to-find-a-service.md)します。 + +## 例 + このトピックで使用するコード全体の一覧を次に示します。 + +``` +// CalculatorService.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.ServiceModel; + +namespace Microsoft.Samples.Discovery +{ + // Define a service contract. + [ServiceContract(Namespace = "http://Microsoft.Samples.Discovery")] + public interface ICalculatorService + { + [OperationContract] + double Add(double n1, double n2); + [OperationContract] + double Subtract(double n1, double n2); + [OperationContract] + double Multiply(double n1, double n2); + [OperationContract] + double Divide(double n1, double n2); + } + + // Service class which implements the service contract. + public class CalculatorService : ICalculatorService + { + public double Add(double n1, double n2) + { + double result = n1 + n2; + Console.WriteLine("Received Add({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Subtract(double n1, double n2) + { + double result = n1 - n2; + Console.WriteLine("Received Subtract({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Multiply(double n1, double n2) + { + double result = n1 * n2; + Console.WriteLine("Received Multiply({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Divide(double n1, double n2) + { + double result = n1 / n2; + Console.WriteLine("Received Divide({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + } +} + +``` + +``` +// Program.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.ServiceModel; +using System.ServiceModel.Description; +using System.ServiceModel.Discovery; + +namespace Microsoft.Samples.Discovery +{ + class Program + { + public static void Main() + { + Uri baseAddress = new Uri("net.tcp://localhost:9002/CalculatorService/" + Guid.NewGuid().ToString()); + Uri announcementEndpointAddress = new Uri("net.tcp://localhost:9021/Announcement"); + + ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress); + try + { + ServiceEndpoint netTcpEndpoint = serviceHost.AddServiceEndpoint(typeof(ICalculatorService), new NetTcpBinding(), string.Empty); + + // Create an announcement endpoint, which points to the Announcement Endpoint hosted by the proxy service. + AnnouncementEndpoint announcementEndpoint = new AnnouncementEndpoint(new NetTcpBinding(), new EndpointAddress(announcementEndpointAddress)); + ServiceDiscoveryBehavior serviceDiscoveryBehavior = new ServiceDiscoveryBehavior(); + serviceDiscoveryBehavior.AnnouncementEndpoints.Add(announcementEndpoint); + + // Make the service discoverable + serviceHost.Description.Behaviors.Add(serviceDiscoveryBehavior); + + serviceHost.Open(); + + Console.WriteLine("Calculator Service started at {0}", baseAddress); + Console.WriteLine(); + Console.WriteLine("Press to terminate the service."); + Console.WriteLine(); + Console.ReadLine(); + + serviceHost.Close(); + } + catch (CommunicationException e) + { + Console.WriteLine(e.Message); + } + catch (TimeoutException e) + { + Console.WriteLine(e.Message); + } + + if (serviceHost.State != CommunicationState.Closed) + { + Console.WriteLine("Aborting the service..."); + serviceHost.Abort(); + } + } + } +} +``` + + + +## 関連項目 + [WCF Discovery](../../../../docs/framework/wcf/feature-details/wcf-discovery.md) + [方法: 探索プロキシの実装](../../../../docs/framework/wcf/feature-details/how-to-implement-a-discovery-proxy.md) + [方法: 探索プロキシを使用して、サービスを検索するクライアント アプリケーションの実装](../../../../docs/framework/wcf/feature-details/client-app-discovery-proxy-to-find-a-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/discovery-announcements-and-announcement-client.md b/docs/framework/wcf/feature-details/discovery-announcements-and-announcement-client.md new file mode 100644 index 00000000000..987d35b4356 --- /dev/null +++ b/docs/framework/wcf/feature-details/discovery-announcements-and-announcement-client.md @@ -0,0 +1,105 @@ +--- +title: "探索アナウンスとアナウンス クライアント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 426c6437-f8d2-4968-b23a-18afd671aa4b +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 探索アナウンスとアナウンス クライアント +[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の探索機能では、コンポーネントがその可用性をアナウンスできます。そのように構成されている場合、サービスは Hello アナウンスと Bye アナウンスを送信します。クライアントまたはその他のコンポーネントは、それらのアナウンス メッセージをリッスンして、対応します。これにより、クライアントは別の手段でサービスを認識します。アナウンス機能にはいくつかの用途があります。たとえば、サービスがネットワークに頻繁に出入りする場合は、サービスを検索するよりも、アナウンスを利用する方が効果的です。この方法を使用すると、ネットワーク トラフィックが減少し、クライアントは、アナウンスを受信するとすぐに、そのサービスが存在するかどうかを知ることができます。 + +## 探索アナウンス + アナウンスが構成されたサービスがネットワークに参加し、探索可能になると、そのサービスは、リッスンしているクライアントにそのサービスの可用性をアナウンスする Hello メッセージを送信します。このメッセージには、サービスのコントラクト、エンドポイント アドレス、および関連付けられたスコープなど、探索関連の情報が含まれています。アナウンス メッセージを送信する先を クラスで指定できます。アナウンス エンドポイントが の場合、Hello および Bye はマルチキャストです。また、アナウンス エンドポイントがユニキャストの場合、メッセージは指定されたエンドポイントに直接送信されます。 + +> [!NOTE] +> アナウンスは、サービス ホストが開いたときと閉じたときに送信されます。これらの呼び出しが適切に終了しない場合は、アナウンス メッセージが送信されないことがあります。たとえば、サービスがエラーになった場合は、Bye アナウンス メッセージが送信されません。 + +> [!TIP] +> アナウンス機能をカスタマイズして、選択したタイミングでアナウンスを送信することができます。 + + [!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] では、 および が標準エンドポイントとして定義されているため、サービスとクライアントが簡単に Hello アナウンスと Bye アナウンスを送信できます。 + +### サービスのアナウンス + アナウンスを送信するようにサービスを構成するには、 をアナウンス エンドポイントと共に追加します。次の例は、この動作をプログラムでサービス ホストに追加する方法を示しています。この例では、アナウンスが、その標準エンドポイントで指定される場所へのマルチキャストであることを暗黙で示す `UdpAnnouncementEndpoint` を使用しています。 + +``` +ServiceDiscoveryBehavior serviceDiscoveryBehavior = new ServiceDiscoveryBehavior(); +serviceDiscoveryBehavior.AnnouncementEndpoints.Add(new UdpAnnouncementEndpoint()); +serviceHost.Description.Behaviors.Add(serviceDiscoveryBehavior); +``` + + この動作は、次の例に示すように、構成ファイルで構成することもできます。 + +``` + + + + + + + + + + + + + + + + + + +``` + + 前の例では、サービスが自動的にアナウンス メッセージを送信するように構成します。 クラスを使用して、アナウンス メッセージを明示的に送信することもできます。 + +### クライアントのアナウンス + クライアント アプリケーションは、アナウンス サービスをホストして Hello メッセージと Bye メッセージに応答し、 イベントと イベントを定期受信する必要があります。その方法を次の例に示します。 + +``` +// Create an AnnouncementService instance +AnnouncementService announcementService = new AnnouncementService(); + +// Subscribe the announcement events +announcementService.OnlineAnnouncementReceived += OnOnlineEvent; +announcementService.OfflineAnnouncementReceived += OnOfflineEvent; + +// Create ServiceHost for the AnnouncementService +using (ServiceHost announcementServiceHost = new ServiceHost(announcementService)) +{ + // Listen for the announcements sent over UDP multicast + announcementServiceHost.AddServiceEndpoint(new UdpAnnouncementEndpoint()); + announcementServiceHost.Open(); + + Console.WriteLine("Press to terminate."); + Console.ReadLine(); +} + +``` + + Hello メッセージまたは Bye メッセージを受信したら、次の例に示すように、 を介してエンドポイント探索メタデータにアクセスできます。 + +``` +static void OnOnlineEvent(object sender, AnnouncementEventArgs e) +{ + Console.WriteLine("Received an online announcement from {0}", +e.EndpointDiscoveryMetadata.Address); +} + +static void OnOfflineEvent(object sender, AnnouncementEventArgs e) +{ + Console.WriteLine("Received an offline announcement from {0}", +e.EndpointDiscoveryMetadata.Address); +} +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/discovery-find-and-findcriteria.md b/docs/framework/wcf/feature-details/discovery-find-and-findcriteria.md new file mode 100644 index 00000000000..7226a60c544 --- /dev/null +++ b/docs/framework/wcf/feature-details/discovery-find-and-findcriteria.md @@ -0,0 +1,80 @@ +--- +title: "探索検索と FindCriteria | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 99016fa4-1778-495b-b4cc-0e22fbec42c6 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 探索検索と FindCriteria +探索検索操作は、1 つ以上のサービスを探索するためにクライアントによって開始される操作であり、探索における主要なアクションの 1 つです。検索を実行すると、WS\-Discovery Probe メッセージがネットワークを介して送信されます。指定された条件に一致するサービスは、WS\-Discovery ProbeMatch メッセージを使用して応答します。探索メッセージ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、[WS\-Discovery の仕様](http://go.microsoft.com/fwlink/?LinkID=122347)を参照してください。 + +## DiscoveryClient + クラスは、検索操作を実行するメカニズムを提供し、探索クライアントの操作を簡単に実行できるようにします。このクラスには、\(ブロックする\) 同期検索を実行する メソッドと、ブロックしない非同期検索を実行する メソッドが含まれます。どちらのメソッドも パラメーターを使用し、 オブジェクトを介してユーザーに結果を提供します。 + +## FindCriteria + にはいくつかのプロパティがあり、検索対象のサービスを指定する検索条件と、検索を続行する期間を指定する検索終了条件に分類できます。 には、複数の検索条件を指定できます。既定では、サービスがすべての条件に一致する必要があり、そうでない場合は、サービスがそれ自体を一致サービスと見なしません。条件の一部にのみ一致するサービスを検索する場合は、サービスにカスタムの検索ロジックを実装するか、複数のクエリを使用します。 + + 検索条件は、次のとおりです。 + +- \- 省略できます。検索対象のサービスのコントラクト名、およびサービスの検索に通常使用される条件を指定します。複数のコントラクト名が指定されると、すべてのコントラクトに一致するサービス エンドポイントのみが応答します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、各エンドポイントでサポートされるコントラクトは 1 つだけです。 + +- \- 省略できます。Scopes は、個々のサービス エンドポイントの分類に使用される絶対 URI です。複数のエンドポイントが同じコントラクトを公開し、これらのエンドポイントのサブセットを検索する手段が必要な場合は、これを使用できます。複数のスコープが指定されると、すべてのスコープに一致するサービス エンドポイントのみが応答します。 + +- \- Probe メッセージのスコープとエンドポイントのスコープとの一致の判定に使用する、一致アルゴリズムを指定します。サポートされているスコープ一致規則は、次の 5 つです。 + + - : 大文字と小文字が区別される基本の文字列比較を実行します。 + + - : "\/" によって区切られたセグメント単位で一致を判定します。http:\/\/contoso\/building1 を検索する場合、サービスは http:\/\/contoso\/building\/floor1 というスコープと一致します。http:\/\/contoso\/building100 とは、最後の 2 セグメントが一致しないため、一致しません。 + + - : LDAP URL を使用してセグメント単位でスコープの一致を判定します。 + + - : UUID 文字列を使用して、スコープが完全に一致するかどうかを判定します。 + + - : スコープを指定していないサービスのみを対象に一致を判定します。 + + スコープ一致規則が指定されていない場合は、 が使用されます。 + + 終了条件は次のとおりです。 + +1. \- ネットワーク上でサービスからの応答を待機する最長時間。既定の時間は 20 秒です。 + +2. \- 待機する応答の最大件数。 が経過する前に 応答が受信された場合は、検出操作が終了します。 + +## FindResponse + には、ネットワーク上で一致するサービスから送信された応答を保持する コレクション プロパティがあります。応答したサービスがない場合、このコレクションは空です。1 つ以上のサービスが応答した場合、各応答は オブジェクトに格納されます。これには、アドレスやコントラクトなど、サービスについての追加情報が含まれます。 + + 次の例は、コードで検索操作を実行する方法を示しています。 + +``` +// Create DiscoveryClient +DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()); + +// Create FindCriteria +FindCriteria findCriteria = new FindCriteria(typeof(IPrinterService)); +findCriteria.Scopes.Add(new Uri("http://www.contoso.com/building1/floor1")); +findCriteria.Duration = TimeSpan.FromSeconds(10); + +// Find ICalculatorService endpoints +FindResponse findResponse = discoveryClient.Find(findCriteria); + +Console.WriteLine("Found {0} ICalculatorService endpoint(s).", findResponse.Endpoints.Count) + +``` + +## 参照 + [WCF Discovery の概要](../../../../docs/framework/wcf/feature-details/wcf-discovery-overview.md) + [探索クライアント チャネルの使用](../../../../docs/framework/wcf/feature-details/using-the-discovery-client-channel.md) + [スコープを使用した探索](../../../../docs/framework/wcf/samples/discovery-with-scopes-sample.md) + [非同期検索](../../../../docs/framework/wcf/samples/asynchronous-find-sample.md) + [Basic](../../../../docs/framework/wcf/samples/basic-sample.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/discovery-versioning.md b/docs/framework/wcf/feature-details/discovery-versioning.md new file mode 100644 index 00000000000..d1b34fc42ac --- /dev/null +++ b/docs/framework/wcf/feature-details/discovery-versioning.md @@ -0,0 +1,57 @@ +--- +title: "探索機能のバージョン指定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f91c6d0a-3af2-45c5-9a5c-e75390619836 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 探索機能のバージョン指定 +ここでは、新しい探索機能の実装の概要について簡単に説明します。 使用する探索バージョンを選択する方法の概要も示します。 + +## 探索機能のバージョン指定 + 探索機能は、WS\_Discovery プロトコルの 3 つのバージョンをサポートします。 探索 API を使用すると、使用するプロトコルのバージョンを選択できます。 このドキュメントでは、バージョン指定に関連する設定について簡単に説明します。 + + 次の Discovery クラスには プロパティがあり、コンストラクターで 引数を受け取ります。 + +- + +- + +- + +- + +### DiscoveryVersion.WSDiscoveryApril2005 + コンストラクターのパラメーターとして を使用することで、WS\-Discovery プロトコルの April2005 バージョンが実装で使用されます。 このバージョンは、WS\-Discovery プロトコル仕様の発行済みバージョンに対応します。 このバージョンは、WS\-Discovery の April2005 バージョンを利用しているレガシ アプリケーションとの相互運用時に使用する必要があります。 + +### DiscoveryVersion.WSDiscovery11 + API で使用される既定の探索機能のバージョンは です。 これは、現在標準化されている WS\-Discovery プロトコルのバージョンです。 + +## DiscoveryVersion.WSDiscoveryCD1 + コンストラクターのパラメーターとして を使用することで、WS\-Discovery プロトコルの Committee Draft 1 バージョンが実装で使用されます。 このバージョンのプロトコルは、WS\-Discovery プロトコルの CD1 バージョンを利用している実装との相互運用時に使用する必要があります。 + +## 単一のサービス ホスト上にある異なる探索バージョン用の複数の UDP 探索エンドポイントのサポート + 単一のサービス ホスト上にある、異なる探索バージョン用の複数の UDP 探索エンドポイントを公開する場合があります。 このような場合、UDP 探索エンドポイントごとに一意のアドレスを指定する必要があります。 その方法を次の例に示します。 + +``` +UdpDiscoveryEndpoint newVersionUdpEndpoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscovery11); +UdpDiscoveryEndpoint oldVersionUdpEndpoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005); + +newVersionUdpEndpoint.Address = new EndpointAddress(newVersionUdpEndpoint.Address.Uri.ToString() + "/version11"); +oldVersionUdpEndpoint.Address = new EndpointAddress(oldVersionUdpEndpoint.Address.Uri.ToString() + "/versionAril2005"); + +serviceHost.AddServiceEndpoint(newVersionUdpEndpoint); +serviceHost.AddServiceEndpoint(oldVersionUdpEndpoint); + +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/discoveryclient-and-dynamicendpoint.md b/docs/framework/wcf/feature-details/discoveryclient-and-dynamicendpoint.md new file mode 100644 index 00000000000..696a7d69700 --- /dev/null +++ b/docs/framework/wcf/feature-details/discoveryclient-and-dynamicendpoint.md @@ -0,0 +1,125 @@ +--- +title: "DiscoveryClient と DynamicEndpoint | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7cd418f0-0eab-48d1-a493-7eb907867ec3 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# DiscoveryClient と DynamicEndpoint + および の 2 つは、サービスの検索にクライアント側で使用されるクラスです。 は、特定の条件に一致するサービスの一覧を表示し、サービスに接続できるようにします。 は同じ操作を実行するだけでなく、見つかったサービスの 1 つに自動的に接続します。 には任意のエンドポイントを指定でき、構成に検索条件も追加できます。このため、ソリューションに探索機能が必要だが、クライアント ロジックを変更したくないという場合は、 を使用すると、エンドポイントを変更するだけで済み、便利です。これに対して、 は、検索操作を詳細に制御する場合に使用できます。次に、それぞれのクラスの用途と利点について詳しく説明します。 + +## DiscoveryClient + は、同期および非同期の Find メソッド、 イベント、および イベントを定義します。さらに、同期および非同期の Resolve メソッド、および イベントも定義します。 メソッドまたは メソッドを使用して、サービスを検索します。これらのメソッドは両方とも インスタンスを受け取ります。このインスタンスにより、コントラクト型名、スコープ、要求した結果の最大数、およびスコープ一致規則の指定が可能になります。 メソッドを呼び出す際には、 イベントおよび イベントが使用できます。 がサービスからの応答を受け取るたびに、 が発生します。これを使用して、検索操作の進捗状況を示すプログレス バーを表示できます。また、受け取った検索応答を処理するのにも使用できます。検索操作が完了すると、 イベントが発生します。最大数の応答を受信した場合、または が経過した場合に、これが発生することがあります。検索操作が完了すると、結果が インスタンスで返されます。 には のコレクションが含まれており、これには、一致するサービスのアドレス、コントラクト型名、拡張子、リッスン URI、およびスコープが格納されています。この情報を使用して、一致するいずれかのサービスに接続し、呼び出すことができます。次の例は、[the M:System.ServiceModel.Discovery.DiscoveryClient.Find\(System.ServiceModel.Discovery.FindCriteria\)](assetId:///the M:System.ServiceModel.Discovery.DiscoveryClient.Find(System.ServiceModel.Discovery.FindCriteria)?qualifyHint=False&autoUpgrade=True) メソッドを呼び出し、返されたメタデータを使用して、見つかったサービスを呼び出す方法を示しています。 を使用する利点は、見つかったエンドポイントのリストをキャッシュして、後で使用できることです。このキャッシュを使用して、さまざまなエラー状況を処理するカスタム ロジックを構築できます。 + +``` +DiscoveryClient dc = new DiscoveryClient(new UdpDiscoveryEndpoint()); + +FindCriteria criteria = new FindCriteria(typeof(ICalculatorService)); +FindResponse fr = dc.Find(criteria); + +if (fr.Endpoints.Count > 0) +{ + EndpointAddress ep = fr.Endpoints[0].Address; + CalculatorServiceClient client = new CalculatorServiceClient(); + + // Connect to the discovered service endpoint + client.Endpoint.Address = endpointAddress; + Console.WriteLine("Invoking CalculatorService at {0}", endpointAddress); + + double value1 = 100.00D; + double value2 = 15.99D; + + // Call the Add service operation. + double result = client.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); +} +else + Console.WriteLine(“No matching endpoints found”); + +``` + + 次の例は、検索操作を非同期で実行する方法を示しています。 + +``` +static void FindServiceAsync() +{ + DiscoveryClient dc = new DiscoveryClient(new UdpDiscoveryEndpoint()); + dc.FindCompleted += new EventHandler( discoveryClient_FindCompleted); + dc.FindProgressChanged += new EventHandler(discoveryClient_FindProgressChanged); + dc.FindAsync(new FindCriteria(typeof(ICalculatorService))); +} +static void discoveryClient_FindProgressChanged(object sender, FindProgressChangedEventArgs e) +{ + Console.WriteLine("Found service at: " + e.EndpointDiscoveryMetadata.Address +} + +static void discoveryClient_FindCompleted(object sender, FindCompletedEventArgs e) +{ + if (e.Result.Endpoints.Count > 0) + { + EndpointAddress ep = e.Result.Endpoints[0].Address; + CalculatorServiceClient client = new CalculatorServiceClient(); + + // Connect to the discovered service endpoint + client.Endpoint.Address = ep; + Console.WriteLine("Invoking CalculatorService at {0}", ep); + + double value1 = 100.00D; + double value2 = 15.99D; + + double result = client.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + } + else + Console.WriteLine("No matching endpoints found"); + + } + +``` + + 非同期の検索呼び出し[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[非同期検索](../../../../docs/framework/wcf/samples/asynchronous-find-sample.md)」を参照してください。 + + エンドポイント アドレスに基づいてサービスを検索するには、 メソッドおよび メソッドを使用します。エンドポイント アドレスをネットワーク アドレスで指定できないアドレスの場合は、これが便利です。Resolve メソッドは、 のインスタンスを受け取ります。このインスタンスは、解決するサービスのエンドポイント アドレス、解決操作の最大期間、および拡張のセットを指定できるようにします。次の例は、 メソッドを使用してサービスを解決する方法を示しています。 + +``` +DiscoveryClient dc = new DiscoveryClient(new UdpDiscoveryEndpoint()); +ResolveCriteria criteria = new ResolveCriteria(endpointAddress); +ResolveResponse response = dc.Resolve(criteria); +EndpointAddress newEp = response.EndpointDiscoveryMetadata.Address; + +``` + +## DynamicEndpoint + は、探索を実行し、一致するサービスを自動的に選択する、標準エンドポイント \([!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、「[標準エンドポイント](../../../../docs/framework/wcf/feature-details/standard-endpoints.md)」を参照\) です。 を作成して、検索するコントラクトおよび使用するバインディングを渡し、 インスタンスを WCF クライアントに渡します。次の例は、 を作成および使用して電卓サービスを呼び出す方法を示しています。クライアントが開かれるたびに、探索が実行されます。エンドポイント構成要素に `kind =”dynamicEndpoint”` 属性を追加して、構成で定義されているエンドポイントを にすることもできます。 + +``` + +DynamicEndpoint dynamicEndpoint = new DynamicEndpoint(ContractDescription.GetContract(typeof(ICalculatorService)), new WSHttpBinding()); +CalculatorServiceClient client = new CalculatorServiceClient(dynamicEndpoint); + +Console.WriteLine("Invoking CalculatorService"); +Console.WriteLine(); + +double value1 = 100.00D; +double value2 = 15.99D; + +double result = client.Add(value1, value2); +Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + +``` + +## 参照 + [スコープを使用した探索](../../../../docs/framework/wcf/samples/discovery-with-scopes-sample.md) + [非同期検索](../../../../docs/framework/wcf/samples/asynchronous-find-sample.md) + [Basic](../../../../docs/framework/wcf/samples/basic-sample.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/distributed-application-security.md b/docs/framework/wcf/feature-details/distributed-application-security.md new file mode 100644 index 00000000000..f9ea05f7563 --- /dev/null +++ b/docs/framework/wcf/feature-details/distributed-application-security.md @@ -0,0 +1,111 @@ +--- +title: "分散アプリケーションのセキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "分散アプリケーションのセキュリティ [WCF]" + - "セキュリティ [WCF], 転送" +ms.assetid: 53928a10-e474-46d0-ab90-5f98f8d7b668 +caps.latest.revision: 32 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 32 +--- +# 分散アプリケーションのセキュリティ +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] セキュリティは、転送セキュリティ、アクセス制御、および監査の 3 つの主要な機能領域に分けられます。転送セキュリティは、整合性、機密性、および認証を実現します。転送セキュリティは、トランスポート セキュリティ、メッセージ セキュリティ、または `TransportWithMessageCredential` のいずれかによって提供されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のメッセージ セキュリティの概要については、「[セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md)」を参照してください。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の他の 2 種類のセキュリティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md)」および「[監査](../../../../docs/framework/wcf/feature-details/auditing-security-events.md)」を参照してください。 + +## 転送セキュリティのシナリオ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 転送セキュリティを使用する一般的なシナリオには、次のようなものがあります。 + +- Windows を使用した、セキュリティで保護された転送。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントおよびサービスが Windows ドメイン \(または Windows フォレスト\) で展開されます。メッセージには個人データが含まれるため、要件には、クライアントとサービスの相互認証、メッセージの整合性、および機密性が含まれます。また、特定のトランザクションが発生したという証明も必要であり、たとえば、メッセージの受信側では署名情報を記録する必要があります。 + +- `UserName` と HTTPS を使用した、セキュリティで保護された転送。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントおよびサービスを、インターネット経由で動作するように開発する必要があります。クライアント資格情報を使用して、ユーザー名とパスワードの組み合わせをデータベースに照らして認証します。サービスは、信頼された SSL \(Secure Sockets Layer\) 証明書を使用して HTTPS アドレスに展開されます。メッセージはインターネット経由で転送されるため、クライアントとサービスは相互認証する必要があり、メッセージの機密性と整合性を転送時に維持する必要があります。 + +- 証明書を使用した、セキュリティで保護された転送。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントおよびサービスを、パブリック インターネット経由で動作するように開発する必要があります。クライアントとサービスには共に証明書があり、それを使用してメッセージをセキュリティ保護できます。クライアントとサービスは、インターネットを使用して相互に通信し、メッセージの整合性、機密性、および相互認証を必要とする高価値のトランザクションを実行します。 + +## 整合性、機密性、および認証 + 整合性、機密性、および認証の 3 つの機能は、合わせて転送セキュリティと呼ばれます。転送セキュリティは、分散アプリケーションに対する脅威の軽減に役立つ機能を提供します。転送セキュリティを構成するこれら 3 つの機能について、次の表で簡単に説明します。 + +|機能|説明| +|--------|--------| +|整合性|*"整合性"* とは、特に、データが 1 つの地点から別の地点に移動し、多くのアクターによって読み取られた後などにデータが完全かつ正確であることを保証することです。整合性は、データの改ざんを防止するために保持する必要があり、一般にメッセージのデジタル署名によって実現されます。| +|機密性|*機密性*とは、メッセージが対象の閲覧者以外によって読み取られていないことを保証することです。たとえば、クレジット カード番号などは、インターネット経由で送信されるときに機密性を保持する必要があります。機密性は、多くの場合、公開キー\/秘密キー スキームを使用するデータ暗号化によって実現されます。| +|認証|*認証*とは、クレーム ID を検証することです。たとえば、銀行口座の使用時には、口座の実際の所有者だけが預金の引き出しを許可されるようにすることが必須です。認証は、さまざまな手段によって実現できます。一般的な方法の 1 つとして、ユーザー\/パスワード システムがあります。また、サードパーティから提供される X.509 証明書を使用する方法もあります。| + +## セキュリティ モード + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意されている転送セキュリティの各モードを次の表に示します。 + +|モード|説明| +|---------|--------| +|なし|トランスポート層とメッセージ層でセキュリティが一切提供されません。[\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md) 要素、つまりコードで クラスを使用する場合を除き、このモードを既定で使用する定義済みのバインディングはありません。| +|トランスポート|HTTPS など、セキュリティで保護されたトランスポートを使用して、整合性、機密性、および相互認証を実現します。| +|メッセージ|SOAP メッセージ セキュリティを使用して、整合性、機密性、および相互認証を実現します。SOAP メッセージは、WS\-Security 標準に従ってセキュリティ保護されます。| +|混在モード|トランスポート セキュリティを使用して、整合性、機密性、およびサーバー認証を実現します。クライアント認証のためにメッセージ セキュリティ \(WS\-Security およびその他の標準\) を使用します。

\(このモードの列挙体は `TransportWithMessageCredential` になります\)。| +|両方|両方のレベルで保護と認証を実行します。このモードは、[\](../../../../docs/framework/configure-apps/file-schema/wcf/netmsmqbinding.md) 要素でのみ使用できます。| + +## 資格情報と転送セキュリティ + *資格情報*は、クレーム ID または資格を確立するために提示されるデータです。資格情報の提示には、データ自体の提示とデータの所有証明の提示が関与します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、トランスポートとメッセージの両方のセキュリティ レベルで、さまざまな種類の資格情報がサポートされています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインディング用の資格情報の種類を指定できます。 + + 多くの国や地域での資格情報の例として、運転免許証があります。免許証には、個人の ID と資格を表すデータが記載されます。この免許証には所有者の写真のような形式の所有権の証明が含まれます。免許証は、政府機関など、信頼された証明機関によって発行されます。免許証はシールされ、ホログラムを含めることができ、改ざんあるいは偽造されたものではないことを示します。 + + 一例として、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされている、ユーザー名と \(X.509\) 証明書の 2 種類の資格情報を考えてみます。 + + ユーザー名資格情報では、ユーザー名がクレーム ID を表し、パスワードが所有権の証明を行います。この場合の信頼された証明機関は、ユーザー名とパスワードを検証するシステムです。 + + 証明書資格情報では、サブジェクト名、サブジェクト代替名、または証明書内の特定のフィールドを使用して、クレーム ID と資格を表すことができます。資格情報に含まれるデータの所有権の証明は、署名の生成のために関連付けられた秘密キーを使用して行われます。 + + 転送セキュリティのプログラミングと資格情報の指定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[バインディングとセキュリティ](../../../../docs/framework/wcf/feature-details/bindings-and-security.md)」および「[セキュリティ動作](../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md)」を参照してください。 + +### トランスポート クライアント資格情報の種類 + 転送セキュリティを使用するアプリケーションを作成するときに使用できる値を次の表に示します。これらの値は、コードまたはバインディング設定で使用できます。 + +|設定|説明| +|--------|--------| +|なし|クライアントは資格情報を提示する必要がないことを指定します。これにより匿名クライアントになります。| +|基本|基本認証を指定します。詳細については、RFC2617『[HTTP Authentication: Basic and Digest Authentication](http://go.microsoft.com/fwlink/?LinkId=88313)』を参照してください。| +|ダイジェスト|ダイジェスト認証を指定します。詳細については、RFC2617,『[HTTP Authentication: Basic and Digest Authentication](http://go.microsoft.com/fwlink/?LinkId=88313)』を参照してください。| +|Ntlm|Windows ドメインで SSPI ネゴシエーションを使用する Windows 認証を指定します。

SSPI ネゴシエーションの結果、Kerberos プロトコルまたは NTLM \(NT LanMan\) を使用することになります。| +|Windows|Windows ドメインで SSPI を使用する Windows 認証を指定します。SSPI では、認証サービスとして Kerberos プロトコルまたは NTLM が選択されます。

SSPI は、最初に Kerberos プロトコルの使用を試み、使用できない場合は NTLM を使用します。| +|証明書|証明書 \(通常は X.509\) を使用して、クライアント認証を実行します。| + +### メッセージ クライアント資格情報の種類 + メッセージ セキュリティを使用するアプリケーションを作成するときに使用できる値を次の表に示します。これらの値は、コードまたはバインディング設定で使用できます。 + +|設定|説明| +|--------|--------| +|なし|サービスが匿名クライアントとやり取りを行うことが可能になります。| +|Windows|Windows 資格情報の認証済みコンテキストで SOAP メッセージ交換を実行できるようにします。SSPI ネゴシエーション機構を使用して、認証サービスとして Kerberos プロトコルまたは NTLM を選択します。| +|ユーザー名|ユーザー名資格情報を使用したクライアントの認証をサービスで要求できるようにします。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、署名の生成やデータの暗号化など、ユーザー名を使用した暗号化操作が許可されないことに注意してください。そのため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ユーザー名資格情報を使用する場合は、トランスポートが強制的にセキュリティで保護されます。| +|Certificate|証明書を使用したクライアントの認証を、サービスで要求することが可能になります。| +|[!INCLUDE[infocard](../../../../includes/infocard-md.md)]|[!INCLUDE[infocard](../../../../includes/infocard-md.md)] を使用したクライアントの認証をサービスで要求できるようにします。| + +### 資格情報のプログラミング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] プログラミング モデルにより、クライアント資格情報の種類ごとに、サービス動作とチャネル動作を使用して、資格情報の値と検証コントロールを指定できます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティには、サービス資格情報動作とチャネル資格情報動作の 2 種類の資格情報があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の資格情報動作は、実際のデータ、つまりバインディングによって示されるセキュリティ要件を満たすために使用される資格情報を指定します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、クライアント クラスは、操作呼び出しとメッセージ間で変換されるランタイム コンポーネントです。すべてのクライアントが クラスを継承します。基本クラスの プロパティにより、クライアント資格情報のさまざまな値を指定できます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービス動作は、プログラムによってサービスを制御するために、サービス コントラクト \(インターフェイス\) を実装するクラスに適用される属性です。 クラスにより、サービス資格情報の証明書を指定でき、さらにクライアント資格情報のさまざまな種類に対応するクライアント検証設定を指定できます。 + +### メッセージ セキュリティのネゴシエーション モデル + メッセージ セキュリティ モードでは、クライアント側でサービス資格情報が帯域外で構成されるように転送のセキュリティを設定できます。たとえば、Windows 証明書ストアに格納されている証明書を使用する場合は、Microsoft 管理コンソール \(MMC: Microsoft Management Console\) スナップインなどのツールを使用する必要があります。 + + また、メッセージ セキュリティ モードでは、初期ネゴシエーションの一環としてサービス資格情報がクライアントと交換されるように転送のセキュリティを実行できます。ネゴシエーションを有効にするには、 プロパティを `true` に設定します。 + +## 参照 + [エンドポイントの作成の概要](../../../../docs/framework/wcf/endpoint-creation-overview.md) + [システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md) + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/duplex-services.md b/docs/framework/wcf/feature-details/duplex-services.md new file mode 100644 index 00000000000..f3a636193e2 --- /dev/null +++ b/docs/framework/wcf/feature-details/duplex-services.md @@ -0,0 +1,95 @@ +--- +title: "双方向サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 396b875a-d203-4ebe-a3a1-6a330d962e95 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# 双方向サービス +双方向サービス コントラクトは、両方のエンドポイントが互いに独立してメッセージを送信できるメッセージ交換パターンです。 双方向サービスでは、クライアントのエンドポイントにメッセージを返信できるため、イベントのような動作を実現できます。 双方向通信は、クライアントがサービスに接続し、サービスからクライアントにメッセージを返信できるチャネルがサービスに提供されると発生します。 双方向サービスにおけるイベントのような動作は、セッション内でのみ機能することに注意してください。 + + 双方向コントラクトを作成するには、インターフェイスのペアを作成します。 最初のインターフェイスは、クライアントから呼び出すことのできる操作を記述したサービス コントラクト インターフェイスです。 サービス コントラクトを指定する必要があります、*コールバック コントラクト*で、 プロパティです。 このコールバック コントラクトが、サービスがクライアント エンドポイントで呼び出すことのできる操作を定義するインターフェイスになります。 双方向コントラクトではセッションは必要ありませんが、システム指定の二重バインディングではセッションを利用します。 + + 双方向コントラクトの例を次に示します。 + + [!code-csharp[c_DuplexServices#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_duplexservices/cs/service.cs#0)] + [!code-vb[c_DuplexServices#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_duplexservices/vb/service.vb#0)] + + `CalculatorService` クラスは、プライマリ `ICalculatorDuplex` インターフェイスを実装します。 サービスは使用して、 インスタンス モードがセッションごとの結果を保持します。 `Callback` というプライベート プロパティを使用して、クライアントへのコールバック チャネルにアクセスします。 次のサンプル コードに示すように、サービスはこのコールバックを使用し、コールバック インターフェイスを介してメッセージをクライアントに返信します。 + + [!code-csharp[c_DuplexServices#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_duplexservices/cs/service.cs#1)] + [!code-vb[c_DuplexServices#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_duplexservices/vb/service.vb#1)] + + クライアントは、サービスからのメッセージを受信するために、双方向コントラクトのコールバック インターフェイスを実装するクラスを提供する必要があります。 次のサンプル コードに、`CallbackHandler` インターフェイスを実装する `ICalculatorDuplexCallback` クラスを示します。 + + [!code-csharp[c_DuplexServices#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_duplexservices/cs/client.cs#2)] + [!code-vb[c_DuplexServices#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_duplexservices/vb/client.vb#2)] + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]双方向コントラクトに必要なために生成されるクライアント、 クラスを構築時に提供します。 これは、 クラスは、コールバック インターフェイスを実装して、サービスから返信されるメッセージを処理するオブジェクトのサイトとして使用します。 のインスタンスとクラスが生成される、`CallbackHandler`クラスです。 このオブジェクトは、コールバック インターフェイスでサービスからクライアントに送信されるメッセージを処理します。 + + [!code-csharp[c_DuplexServices#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_duplexservices/cs/client.cs#3)] + [!code-vb[c_DuplexServices#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_duplexservices/vb/client.vb#3)] + + サービスの構成は、セッション通信と双方向通信の両方をサポートするバインディングを提供するように設定する必要があります。 `wsDualHttpBinding` 要素はセッション通信をサポートし、どちらの方向にも HTTP 接続が&1; つ用意される双方向 HTTP 接続を提供して双方向通信を実現します。 + + クライアントで、サーバーがクライアントへの接続に使用するアドレスを構成する必要があります。次のサンプル構成を参照してください。 + + + +> [!NOTE] +> 通常、セキュリティで保護されたメッセージ交換を使用して認証に失敗した非双方向クライアントのスロー、 します。 ただし、セキュリティで保護されたメッセージ交換を使用する双方向クライアントが認証に失敗した場合、クライアントを受け取る、 代わりにします。 + + `WSHttpBinding` 要素を使用するクライアントとサービスを作成しても、クライアントのコールバック エンドポイントが含まれていない場合は、次のエラーが発生します。 + +``` +HTTP could not register URL +htp://+:80/Temporary_Listen_Addresses/ because TCP port 80 is being used by another application. +``` + + 次のサンプル コードは、コードでクライアントのエンドポイント アドレスを指定する方法を示しています。 + +``` +WSDualHttpBinding binding = new WSDualHttpBinding(); +EndpointAddress endptadr = new EndpointAddress("http://localhost:12000/DuplexTestUsingCode/Server"); +binding.ClientBaseAddress = new Uri("http://localhost:8000/DuplexTestUsingCode/Client/"); +``` + + 次のサンプル コードは、構成でクライアントのエンドポイント アドレスを指定する方法を示しています。 + +``` + + + + + + + + + + + +``` + +> [!WARNING] +> 双方向モデルでは、サービスまたはクライアントによってチャネルがいつ閉じられたかが自動的に検出されません。 このため、サービスが突然終了した場合、既定ではクライアントには通知されず、クライアントが突然終了した場合も、サービスには通知されません。 クライアントとサービスは、独自のプロトコルを実装して、互いに通知するように選択できます。 + +## 関連項目 + [両面印刷](../../../../docs/framework/wcf/samples/duplex.md) + [クライアントのランタイム動作を指定します。](../../../../docs/framework/wcf/specifying-client-run-time-behavior.md) + [方法: チャネル ファクトリを作成し、使用して作成およびチャネルの管理](../../../../docs/framework/wcf/feature-details/how-to-create-a-channel-factory-and-use-it-to-create-and-manage-channels.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/durable-duplex-correlation.md b/docs/framework/wcf/feature-details/durable-duplex-correlation.md new file mode 100644 index 00000000000..8675c81da63 --- /dev/null +++ b/docs/framework/wcf/feature-details/durable-duplex-correlation.md @@ -0,0 +1,212 @@ +--- +title: "永続的な二重の相関関係 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8eb0e49a-6d3b-4f7e-a054-0d4febee2ffb +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 永続的な二重の相関関係 +永続的な二重の相関関係 \(コールバック相関関係\) は、ワークフロー サービスがコールバックを最初の呼び出し元に送信する必要がある場合に便利です。WCF の二重とは異なり、コールバックは、将来のどの時点でも発生する可能性があり、同じチャネルにも同じチャネルの有効期間にも関連付けられていません。唯一の要件は、呼び出し元にコールバック メッセージをリッスンするアクティブなエンドポイントを用意することです。このため、2 つのワークフロー サービスが長時間のメッセージ交換を使用して通信できます。このトピックでは、永続的な二重の相関関係について概説します。 + +## 永続的な二重の相関関係の使用 + 永続的な二重の相関関係を使用するには、2 つのサービスが、 など、双方向の操作をサポートするコンテキスト対応バインドを使用する必要があります。呼び出し側サービスは、クライアントの で使用するバインドを指定して を登録します。受信側サービスは、このデータを最初の呼び出しで受信し、呼び出し側サービスへのコールバックを行う アクティビティにおいて、受信側サービス自体の でこのデータを使用します。次の例では、2 つのサービスが互いに通信しています。1 つ目のサービスは、2 つ目のサービスに対してメソッドを呼び出し、応答を待機します。2 つ目のサービスでは、コールバック メソッドの名前が認識されていますが、このメソッドを実装するサービスのエンドポイントは、設計時には認識されていません。 + +> [!NOTE] +> エンドポイントの で構成される場合は、永続的な二重のみが使用できます。そうでない場合は、 例外が次のメッセージと共にスローされます。"メッセージに、AddressingVersion 'Addressing200408 \(http:\/\/schemas.xmlsoap.org\/ws\/2004\/08\/addressing\)' のエンドポイント参照を含むコールバック コンテキスト ヘッダーが含まれています。コールバック コンテキストを送信できるのは、AddressingVersion で 'WSAddressing10' が構成されている場合のみです。" + + 次の例では、 を使用してコールバック を作成するワークフロー サービスがホストされます。 + +```csharp +// Host WF Service 1. +string baseAddress1 = "http://localhost:8080/Service1"; +WorkflowServiceHost host1 = new WorkflowServiceHost(GetWF1(), new Uri(baseAddress1)); + +// Add the callback endpoint. +WSHttpContextBinding Binding1 = new WSHttpContextBinding(); +host1.AddServiceEndpoint("ICallbackItemsReady", Binding1, "ItemsReady"); + +// Add the service endpoint. +host1.AddServiceEndpoint("IService1", Binding1, baseAddress1); + +// Open the first workflow service. +host1.Open(); +Console.WriteLine("Service1 waiting at: {0}", baseAddress1); +``` + + このワークフロー サービスを実装するワークフローは、ワークフロー自体の アクティビティを使用してコールバック相関関係を初期化し、 と相関関係にある アクティビティからこのコールバック エンドポイントを参照します。次の例は、`GetWF1` メソッドから返されるワークフローです。 + +```csharp +Variable CallbackHandle = new Variable(); + +Receive StartOrder = new Receive +{ + CanCreateInstance = true, + ServiceContractName = "IService1", + OperationName = "StartOrder" +}; + +Send GetItems = new Send +{ + CorrelationInitializers = + { + new CallbackCorrelationInitializer + { + CorrelationHandle = CallbackHandle + } + }, + ServiceContractName = "IService2", + OperationName = "StartItems", + Endpoint = new Endpoint + { + AddressUri = new Uri("http://localhost:8081/Service2"), + Binding = new WSHttpContextBinding + { + ClientCallbackAddress = new Uri("http://localhost:8080/Service1/ItemsReady") + } + } +}; + +Receive ItemsReady = new Receive +{ + ServiceContractName = "ICallbackItemsReady", + OperationName = "ItemsReady", + CorrelatesWith = CallbackHandle, +}; + +Activity wf = new Sequence +{ + Variables = + { + CallbackHandle + }, + Activities = + { + StartOrder, + new WriteLine + { + Text = "WF1 - Started" + }, + GetItems, + new WriteLine + { + Text = "WF1 - Request Submitted" + }, + ItemsReady, + new WriteLine + { + Text = "WF1 - Items Received" + } + } +}; +``` + + 2 つ目のワークフロー サービスは、システムが提供するコンテキスト ベースのバインドを使用してホストされます。 + +```csharp +// Host WF Service 2. +string baseAddress2 = "http://localhost:8081/Service2"; +WorkflowServiceHost host2 = new WorkflowServiceHost(GetWF2(), new Uri(baseAddress2)); + +// Add the service endpoint. +WSHttpContextBinding Binding2 = new WSHttpContextBinding(); +host2.AddServiceEndpoint("IService2", Binding2, baseAddress2); + +// Open the second workflow service. +host2.Open(); +Console.WriteLine("Service2 waiting at: {0}", baseAddress2); +``` + + このワークフロー サービスを実装するワークフローは、 アクティビティから開始されます。この受信アクティビティは、このサービスのコールバック相関関係を初期化し、一定の遅延時間を設けて長時間の作業をシミュレーションして、サービスへの最初の呼び出しで渡されたコールバック コンテキストを使用して、最初のサービスにコールバックします。次の例は、`GetWF2` への呼び出しから返されるワークフローです。 アクティビティには、`http://www.contoso.com` のプレースホルダー アドレスが設定されていることに注意してください。実行時に使用される実際のアドレスは、指定されたコールバック アドレスです。 + +```csharp +Variable ItemsCallbackHandle = new Variable(); + +Receive StartItems = new Receive +{ + CorrelationInitializers = + { + new CallbackCorrelationInitializer + { + CorrelationHandle = ItemsCallbackHandle + } + }, + CanCreateInstance = true, + ServiceContractName = "IService2", + OperationName = "StartItems" +}; + +Send ItemsReady = new Send +{ + CorrelatesWith = ItemsCallbackHandle, + Endpoint = new Endpoint + { + // The callback address on the binding is used + // instead of this placeholder address. + AddressUri = new Uri("http://www.contoso.com"), + + Binding = new WSHttpContextBinding() + }, + OperationName = "ItemsReady", + ServiceContractName = "ICallbackItemsReady" +}; + +Activity wf = new Sequence +{ + Variables = + { + ItemsCallbackHandle + }, + Activities = + { + StartItems, + new WriteLine + { + Text = "WF2 - Request Received" + }, + new Delay + { + Duration = TimeSpan.FromMinutes(90) + }, + new WriteLine + { + Text = "WF2 - Sending items" + }, + ItemsReady, + new WriteLine + { + Text = "WF2 - Items sent" + } + } +}; +``` + + `StartOrder` メソッドが最初のワークフローで呼び出されると、次の出力が表示されます。これは、2 つのワークフローの実行フローを示しています。 + +```Output +Service1 waiting at: http://localhost:8080/Service1 +Service2 waiting at: http://localhost:8081/Service2 +Enter キーを押して閉じます。 +WF1 - Started +WF2 - Request Received +WF1 - Request Submitted +WF2 - Sending items +WF2 - Items sent +WF1 - Items Received + +``` + + この例では、どちらのワークフローも を使用して相関関係を明示的に管理しています。サンプル ワークフローには相関関係が 1 つしかないため、既定の で十分に管理できます。 + +## 参照 + [永続的な二重 [WF サンプル]](../../../../docs/framework/windows-workflow-foundation/samples/durable-duplex.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/elevation-of-privilege.md b/docs/framework/wcf/feature-details/elevation-of-privilege.md new file mode 100644 index 00000000000..ad2f5c1731a --- /dev/null +++ b/docs/framework/wcf/feature-details/elevation-of-privilege.md @@ -0,0 +1,98 @@ +--- +title: "権限の昇格 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "権限の昇格 [WCF]" + - "セキュリティ [WCF], 権限の昇格" +ms.assetid: 146e1c66-2a76-4ed3-98a5-fd77851a06d9 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# 権限の昇格 +*権限の昇格*は、本来付与されたものよりも高い承認アクセス許可を攻撃者に与えた結果として発生します。たとえば、"読み取り専用" アクセス許可の権限セットを持つ攻撃者が、何らかの方法で権限セットを "読み取り\/書き込み" アクセス許可を含むものに昇格させます。 + +## SAML トークンのクレームには信頼された STS による署名が必要 + SAML \(Security Assertions Markup Language\) トークンは、発行済みトークンの既定の型である汎用 XML トークンです。SAML トークンは、通常の交換においてエンド Web サービスから信頼されたセキュリティ トークン サービス \(STS\) によって作成できます。SAML トークンには、ステートメント内にクレームが格納されます。攻撃者は、有効なトークンからクレームをコピーして新しい SAML トークンを作成し、別の発行者による署名を行うことがあります。この目的は、サーバーが発行者を検証するかどうかを確認し、検証しない場合に、この脆弱性を利用して信頼された STS が意図したものよりも高い権限を与える SAML トークンを作成することです。 + + クラスは、SAML トークンに含まれるデジタル署名を検証します。 クラスの に設定されている場合、既定の は、SAML トークンが有効な X.509 証明書によって署名されていることを要求します。SAML トークンの発行者を信頼できるかどうか判断するには、`ChainTrust` モードだけでは不十分です。より詳細な信頼モデルを必要とするサービスは、承認ポリシーと強制ポリシーを使用して、発行済みトークン認証によって生成されたクレーム セットの発行者をチェックするか、 の X.509 検証設定を使用して、許可する署名証明書のセットを制限できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md)」および「[フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md)」を参照してください。 + +## セキュリティ コンテキストを使用しない ID の切り替え + 次の内容は、[!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] にのみ適用されます。 + + クライアントとサーバー間の接続が確立すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを開いた後に次のすべての条件に該当する場合を除き、クライアントの ID は変更されません。 + +- セキュリティ コンテキストを確立するプロシージャ \(トランスポート セキュリティ セッションまたはメッセージ セキュリティ セッションを使用\) が無効になっている \(メッセージ セキュリティの場合は、 プロパティが `false` に設定されている。トランスポート セキュリティの場合は、セキュリティ セッションを確立できないトランスポート \(HTTPS など\) が使用されている\)。 + +- Windows 認証を使用している。 + +- 資格情報を明示的に設定していない。 + +- 偽装されたセキュリティ コンテキストでサービスを呼び出している。 + + これらの条件に該当する場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを開いた後で、サービスに対するクライアントの認証に使用する ID が変更されることがあります \(偽装された ID ではなく、プロセス ID になります\)。この状況が発生するのは、サービスに対するクライアントの認証に使用する Windows 資格情報がすべてのメッセージと共に送信され、認証に使用する資格情報が現在のスレッドの Windows ID から取得されるためです。\(たとえば、別の呼び出し元を偽装することによって\) 現在のスレッドの Windows ID が変更された場合、メッセージに添付され、サービスに対するクライアントの認証に使用する資格情報も変更される可能性があります。 + + 偽装と共に Windows 認証を使用する場合に動作を確定する必要があるときは、Windows 資格情報を明示的に設定するか、サービスでセキュリティ コンテキストを確立する必要があります。これを行うには、メッセージ セキュリティ セッションまたはトランスポート セキュリティ セッションを使用します。たとえば、net.tcp トランスポートは、トランスポート セキュリティ セッションを提供します。また、サービスの呼び出し時に、クライアント操作の同期バージョンだけを使用する必要があります。メッセージ セキュリティ コンテキストを確立する場合は、構成済みセッションの更新時間よりも長い時間、サービスへの接続を開いたままにしないようにしてください。セッション更新プロセスの間にも ID が変更される可能性があるためです。 + +### 資格情報のキャプチャ + 次の内容は、[!INCLUDE[netfx35_long](../../../../includes/netfx35-long-md.md)] 以降のバージョンに適用されます。 + + クライアントまたはサービスが使用する資格情報は、現在のコンテキストのスレッドに基づきます。資格情報は、クライアントまたはサービスの `Open` メソッド \(または、非同期呼び出しの場合は `BeginOpen`\) が呼び出された場合に取得されます。 クラスおよび クラスのいずれの場合も、`Open` メソッドおよび `BeginOpen` メソッドは、 クラスの メソッドおよび メソッドから継承されます。 + +> [!NOTE] +> `BeginOpen` メソッドを使用する場合、キャプチャされた資格情報は、このメソッドを呼び出したプロセスの資格情報であることが保証されません。 + +## トークン キャッシュによる以前のデータを使用した再生の許可 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、ローカル セキュリティ機関 \(LSA\) の `LogonUser` 関数を使用して、ユーザー名とパスワードによってユーザーを認証します。ログオン関数はコストの高い操作であるため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、パフォーマンスを向上させるために、認証済みユーザーを表すトークンをキャッシュできます。キャッシュ機構は、それ以降に使用できるように `LogonUser` の結果を保存します。この機構は、既定で無効になっています。有効にするには、 プロパティを `true` に設定するか、[\](../../../../docs/framework/configure-apps/file-schema/wcf/usernameauthentication.md) の `cacheLogonTokens` 属性を使用します。 + + プロパティを に設定するか、`userNameAuthentication` 要素の `cachedLogonTokenLifetime` 属性を使用することで、キャッシュされたトークンの有効期間 \(TTL\) を設定できます。既定値は 15 分です。Windows からユーザー アカウントが削除された場合や、パスワードが変更されている場合でも、トークンがキャッシュされている間は、同じユーザー名とパスワードを指定すると、どのクライアントもこのトークンを使用できます。TTL が終了し、トークンがキャッシュから削除されるまで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は悪意のあるユーザーである可能性があっても、ユーザー認証を許可します。 + + これをできるだけ防ぐには、`cachedLogonTokenLifetime` の設定値をユーザーが必要とする最低の期間に限定して攻撃領域を減らします。 + +## 発行済みトークンの承認 : 大きな値にリセットされた有効期限 + 一定の条件下で、 プロパティが予期しない大きな値 \( フィールド値から 1 日引いた値 \(December 20, 9999\)\) に設定される場合があります。 + + これは、、およびクライアント資格情報の種類が発行済みトークンであるシステム提供のバインディングを使用している場合に発生します。 + + また、以下のメソッドのいずれかを使用して、カスタム バインディングを作成した場合にも発生します。 + +- + +- + +- + +- + + これをできるだけ防ぐには、承認ポリシーによって各承認ポリシーのアクションと有効期限をチェックする必要があります。 + +## クライアントで予定していたものと異なる証明書をサービスで使用する場合 + 一定の条件下で、クライアントが X.509 証明書を使用してメッセージにデジタル署名したときに、予定していたものと異なる証明書をサービスが取得する場合があります。 + + これは、次のような状況で発生する可能性があります。 + +- クライアントが X.509 証明書を使用してメッセージにデジタル署名したときに、その X.509 証明書をメッセージに添付するのではなく、サブジェクト キー識別子を使用して証明書を参照しているだけの場合。 + +- サービスのコンピューターに同じ公開キーを持つ複数の証明書が格納されており、それらの証明書に含まれる情報が異なる場合。 + +- サービスがサブジェクト キー識別子と一致する証明書を取得したが、クライアントが使用する予定だったものではない場合。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でメッセージを取得し署名を検証すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は予定されていたものと異なる X.509 証明書の情報をクレーム セットに対応付けます。このクレーム セットは、クライアントが必要とした内容とは異なり、昇格されている可能性があります。 + + これをできるだけ防ぐには、X.509 証明書を別の方法 \( の使用など\) で参照します。 + +## 参照 + [セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md) + [情報の漏えい](../../../../docs/framework/wcf/feature-details/information-disclosure.md) + [サービス拒否](../../../../docs/framework/wcf/feature-details/denial-of-service.md) + [リプレイ攻撃](../../../../docs/framework/wcf/feature-details/replay-attacks.md) + [改変](../../../../docs/framework/wcf/feature-details/tampering.md) + [サポートされていないシナリオ](../../../../docs/framework/wcf/feature-details/unsupported-scenarios.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/enabling-transaction-flow.md b/docs/framework/wcf/feature-details/enabling-transaction-flow.md new file mode 100644 index 00000000000..de2a475fcc1 --- /dev/null +++ b/docs/framework/wcf/feature-details/enabling-transaction-flow.md @@ -0,0 +1,102 @@ +--- +title: "トランザクション フローの有効化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "トランザクション [WCF], フローの有効化" +ms.assetid: a03f5041-5049-43f4-897c-e0292d4718f7 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# トランザクション フローの有効化 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、高い柔軟性を備えた、トランザクション フローの制御用オプションが用意されています。サービスのトランザクション フローの設定は、属性と構成の組み合わせを使用して表すことができます。 + +## トランザクション フローの設定 + トランザクション フローの設定は、次の 3 つの値の積集合の結果として、サービス エンドポイントに対して生成されます。 + +- サービス コントラクトの各メソッドに指定された 属性。 + +- 特定のバインディングの `TransactionFlow` バインディング プロパティ。 + +- 特定のバインディングの `TransactionFlowProtocol` バインディング プロパティ。`TransactionFlowProtocol` バインディング プロパティでは、トランザクションをフローさせるために使用できる 2 つのトランザクション プロトコルのいずれかを選択できます。次のセクションでは、これらのプロパティについてそれぞれ簡単に説明します。 + +### WS\-AtomicTransaction プロトコル + サード パーティのプロトコル スタックとの相互運用性が必要なシナリオでは、WS\-AT \(WS\-AtomicTransaction\) プロトコルが有用です。 + +### OleTransactions プロトコル + OleTransactions プロトコルは、サードパーティのプロトコル スタックとの相互運用性が必要ではなく、WS\-AT プロトコル サービスがローカルで無効になっていること、または既存のネットワーク トポロジが WS\-AT の使用に向いていないことがサービスを配置する前に既にわかっている場合に有効です。 + + これらのさまざまな組み合わせを使用して生成できるトランザクション フローの種類を次の表に示します。 + +|TransactionFlow

バインディング|TransactionFlow バインディング プロパティ|TransactionFlowProtocol バインディング プロパティ|トランザクション フローの種類| +|---------------------------------|-----------------------------------|-------------------------------------------|---------------------| +|必須|true|WS\-AT|トランザクションは、相互運用可能な WS\-AT 形式でフローさせる必要があります。| +|Mandatory|true|OleTransactions|トランザクションは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の OleTransactions 形式でフローさせる必要があります。| +|Mandatory|false|適用なし|この構成は無効なため、適用できません。| +|Allowed|true|WS\-AT|トランザクションは、相互運用可能な WS\-AT 形式でフローさせることができます。| +|Allowed|true|OleTransactions|トランザクションは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の OleTransactions 形式でフローさせることができます。| +|Allowed|false|任意の値|トランザクションは送信されません。| +|NotAllowed|任意の値|任意の値|トランザクションは送信されません。| + + メッセージ処理の結果を次の表にまとめます。 + +|受信メッセージ|トランザクション フローの設定|トランザクション ヘッダー|メッセージ処理の結果| +|-------------|---------------------|-------------------|----------------| +|トランザクションは予期されたプロトコル形式に一致します|Allowed または Mandatory|`MustUnderstand` と `true` は等しい。|処理| +|トランザクションは予期されたプロトコル形式に一致しません|Mandatory|`MustUnderstand` と `false` は等しい。|トランザクションが必須のため拒否| +|トランザクションは予期されたプロトコル形式に一致しません|Allowed|`MustUnderstand` と `false` は等しい。|ヘッダーが認識されないため拒否| +|任意のプロトコル形式を使用しているトランザクション|NotAllowed|`MustUnderstand` と `false` は等しい。|ヘッダーが認識されないため拒否| +|トランザクションなし|Mandatory|N\/A|トランザクションが必須のため拒否| +|トランザクションなし|Allowed|N\/A|処理| +|トランザクションなし|NotAllowed|N\/A|プロセス| + + コントラクトの各メソッドには、トランザクション フローに関するさまざまな要件を割り当てることができますが、トランザクション フローのプロトコル設定のスコープは、バインディングのレベルになります。このため、同じエンドポイント \(ひいては同じバインディング\) を共有するすべてのメソッドは、トランザクション フローを許可または必要とする同じポリシー、および同じトランザクション プロトコル \(該当する場合\) を共有します。 + +## メソッド レベルでのトランザクション フローの有効化 + トランザクション フローの要件は、サービス コントラクトのすべてのメソッドで常に同じであるとは限りません。そのため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、各メソッドのトランザクション フロー設定を指定することができる属性ベースの機構も用意されています。これは、サービス操作がトランザクション ヘッダーを受け入れるレベルを指定する によって実現されます。トランザクション フローを有効にする場合は、この属性を使用してサービス コントラクト メソッドをマークする必要があります。この属性は、 列挙値のいずれかを取り、既定値は です。 以外の値を指定する場合、メソッドは一方向ではない必要があります。開発者は、この属性を使用して、メソッド レベルのトランザクション フローに関する要件や制約をデザイン時に指定できます。 + +## エンドポイント レベルでのトランザクション フローの有効化 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、 によって提供されるメソッド レベルのトランザクション フロー設定に加えて、トランザクション フローに対するエンドポイント全体の設定が提供されています。これにより、管理者はトランザクション フローをより高いレベルで制御できるようになります。 + + これは、 によって実現され、エンドポイントのバインディング設定で受信トランザクション フローを有効化または無効化する他に、受信トランザクションに必要なトランザクション プロトコル形式を指定できるようになります。 + + バインディングによりトランザクション フローが無効にされているとき、サービス コントラクトのいずれかの操作が受信トランザクションを必要とした場合は、サービスの起動時に検証例外がスローされます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意されているほとんどの標準バインディングには、`transactionFlow` 属性と `transactionProtocol` 属性が含まれています。これらの属性を使用すると、受信トランザクションを受け入れるように特定のバインディングを構成できます。構成要素の設定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[\](../../../../docs/framework/misc/binding.md)」を参照してください。 + + 管理者や展開担当者は、エンドポイント レベルのトランザクション フローを使用することで、展開時に構成ファイルを使用してトランザクション フローの要件や制約を構成できます。 + +## セキュリティ + システムのセキュリティと整合性を確保するために、アプリケーション間でトランザクションをフローさせるときは、メッセージ交換をセキュリティで保護する必要があります。同じトランザクションに参加する資格のないアプリケーションには、トランザクションの詳細をフローさせたり、公開したりしないでください。 + + メタデータ交換を使用して、未知または信頼できない Web サービスに対して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを生成するときは、可能であれば、これらの Web サービスでの操作の呼び出しでは現在のトランザクションを使用しないようにする必要があります。この方法を次の例に示します。 + +``` +//client code which has an ambient transaction +using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress)) +{ + // No transaction will flow to this operation + untrustedProxy.Operation1(...); + scope.Complete(); +} +//remainder of client code +``` + + さらに、サービスは、認証および承認済みのクライアントからの受信トランザクションのみを受け入れるように構成する必要があります。受信トランザクションは、高信頼クライアントから送られてきた場合にのみ受け入れるようにする必要があります。 + +## ポリシー アサーション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、ポリシー アサーションを使用してトランザクション フローを制御します。ポリシー アサーションは、コントラクト、構成、および属性を集約して生成される、サービスのポリシー ドキュメントに含まれています。クライアントは、HTTP GET または WS\-MetadataExchange 要求\/応答を使用して、サービスのポリシー ドキュメントを取得できます。クライアントは、取得したポリシー ドキュメントを処理して、トランザクション フローをサポートまたは必要とする可能性があるサービス コントラクトの操作を判別できます。 + + トランザクション フローのポリシー アサーションは、クライアントがサービスに送信する必要がある、トランザクションを表す SOAP ヘッダーを指定することで、トランザクション フローに影響します。すべてのトランザクション ヘッダーの `MustUnderstand` は、`true` に設定する必要があります。これ以外の値に設定されたメッセージは、SOAP エラーによりすべて拒否されます。 + + トランザクション関連のポリシー アサーションは、1 つの操作に 1 つしか存在できません。1 つの操作に複数のトランザクション アサーションが存在するポリシー ドキュメントは無効と見なされ、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] により拒否されます。さらに、トランザクション プロトコルも各ポートの種類の内部に 1 つしか存在できません。単一のポートの種類の内部の複数のトランザクション プロトコルを参照する操作がポリシー ドキュメントに含まれている場合、そのポリシー ドキュメントは無効と見なされ、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)により拒否されます。また、出力メッセージや一方向の入力メッセージに関するトランザクション アサーションが存在するポリシー ドキュメントも無効と見なされます。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/encoding-binary-objects-with-bytestream-encoder.md b/docs/framework/wcf/feature-details/encoding-binary-objects-with-bytestream-encoder.md new file mode 100644 index 00000000000..7a83f1e02ec --- /dev/null +++ b/docs/framework/wcf/feature-details/encoding-binary-objects-with-bytestream-encoder.md @@ -0,0 +1,53 @@ +--- +title: "バイトストリーム エンコーダーを使用したバイナリ オブジェクトのエンコーディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 020ee981-c889-4b12-a3ea-91823ef46444 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# バイトストリーム エンコーダーを使用したバイナリ オブジェクトのエンコーディング +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] による生のバイナリ データの送受信は、 を使用して構成されます。 + +## バイト ストリーム メッセージ エンコーダーのアーキテクチャ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で使用されるバイナリ メッセージ エンコーダーには、メッセージ内の基になるバイナリ メッセージを処理、検証、または識別する機能がありません。データ パッケージは、XML にエンコード、送受信、およびデコードされます。エンコーダーは、トランスポートに渡された後に、メッセージがメッセージ キューに送られる前にデータを処理します。機能的には、バイナリ エンコーダーが、送信用にメッセージ データを `` 要素にラップし、そのメッセージが受信された後にこの要素を削除します。 + +## バイト ストリーム メッセージ エンコーダーの使用 + 次の例は、バイト ストリーム メッセージ エンコーダーを実装するサービス コントラクトを示しています。 + +```csharp +[OperationContract] +Void Myfunction(Stream stream); +``` + + 次の例は、呼び出されたサービスを示しています。 + +```csharp +proxy.MyFunction(stream); +``` + + ルーターなどのメッセージ インフラストラクチャを実装するサービスを使用する場合、そのメッセージは、次の例に示すように、メッセージの検査、検証、およびメッセージとの対話操作のいずれも行うことなく処理されます。 + +```csharp +[OperationContract] +void ProcessMessage(Message message) ; +``` + +## シナリオ + バイト ストリーム エンコーダーは、次のシナリオに役立ちます。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用してコンピューター間で JPEG イメージを転送する。このシナリオでは、イメージは外部ソースから転送によって到着し、送信されたデータはイメージを構成する生バイトになります。サービスはバイナリ データを受信してイメージを表示します。 + +- メッセージ キューからの情報の読み取りと処理。メッセージはメッセージ キュー マネージャーから読み取られ、処理対象のメッセージ キュー チャネルに渡されます。メッセージ キュー チャネルは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネル スタックでキュー マネージャーとして機能します。 + + メッセージをメッセージ キュー チャネルを介して送信する場合、送信者はキュー マネージャーから受信したバイトを制御できません。受信プロセスで生バイトを読み取ることができない場合、メッセージは不適切な書式として受信され処理されません。受信プロセスは受信したバイトを利用可能な形式に変換する機能があると見なされます。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/encryption-of-digital-signatures.md b/docs/framework/wcf/feature-details/encryption-of-digital-signatures.md new file mode 100644 index 00000000000..87191fbb58d --- /dev/null +++ b/docs/framework/wcf/feature-details/encryption-of-digital-signatures.md @@ -0,0 +1,44 @@ +--- +title: "電子署名の暗号化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "電子署名 [WCF]" + - "電子署名 [WCF], 暗号化" + - "電子署名の暗号化 [WCF]" +ms.assetid: 0868866d-40b4-4341-8e42-eee3b7f15b69 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 電子署名の暗号化 +既定では、メッセージは署名および暗号化され、署名はデジタル暗号化されます。これは、 または のインスタンスを使用してカスタム バインディングを作成し、いずれかのクラスの `MessageProtectionOrder` プロパティを 列挙値に設定することによって制御できます。既定値は です。このプロセスは、単に署名して暗号化する場合よりも時間が 10 ~ 40 % 長くかかります。ただし、署名の暗号化を無効にすると、攻撃者がメッセージの内容を予想できるようになる恐れがあります。その理由は、メッセージ内のすべての署名部分のプレーン テキストのハッシュ コードが署名要素に含まれるからです。たとえば、メッセージ本体は既定で暗号化されますが、暗号化されていない署名には、メッセージ本体のハッシュ コードが含まれます。メッセージが短い場合は、攻撃者に内容を推測されてしまうおそれがあります。署名を暗号化すると、このような危険性が低減または解消されます。 + + そのため、署名の暗号化を無効にするのは、セキュリティに影響しない大型のバイナリ ファイルを送信する場合などの、内容の重要性が低く、パフォーマンスの向上が重要な場合に限定してください。 + +### デジタル署名を無効にするには + +1. を作成します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md). + +2. または をバインディング コレクションに追加します。 + +3. プロパティを に設定するか、または プロパティを に設定します。 + + カスタム バインディングの作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ユーザー定義バインディングの作成](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md)」を参照してください。特定の認証モード用のカスタム バインディングの作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 指定した認証モード用の SecurityBindingElement を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md)」を参照してください。 + +## 参照 + + + + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [ユーザー定義バインディングの作成](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md) + [方法 : 指定した認証モード用の SecurityBindingElement を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/endpoint-addresses.md b/docs/framework/wcf/feature-details/endpoint-addresses.md new file mode 100644 index 00000000000..998047120e2 --- /dev/null +++ b/docs/framework/wcf/feature-details/endpoint-addresses.md @@ -0,0 +1,150 @@ +--- +title: "エンドポイントのアドレス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アドレス [WCF]" + - "WCF [WCF], アドレス" + - "Windows Communication Foundation [WCF], アドレス" +ms.assetid: 13f269e3-ebb1-433c-86cf-54fbd866a627 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# エンドポイントのアドレス +すべてのエンドポイントにはこれと関連するアドレスがあり、エンドポイントの検索と識別に使用されます。このアドレスは主にエンドポイントの位置を指定する URI \(Uniform Resource Identifier\) で構成されます。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のプログラミング モデルでは、エンドポイント アドレスは クラスによって表されます。このクラスには、このエンドポイントとメッセージを交換する他のエンドポイントがエンドポイントを認証できるようにする、オプションの プロパティ、およびサービスに到達するために必要な他の任意の SOAP ヘッダーを定義するオプションの プロパティが含まれます。オプションのヘッダーは、サービス エンドポイントの識別または対話のために、より詳細なアドレス指定情報を提供します。エンドポイントのアドレスは、ネットワーク上では WS\-Addressing エンドポイント参照 \(EPR\) として表されます。 + +## アドレスの URI 構造 + ほとんどのトランスポートの URI アドレスは、4 つの部分から構成されます。たとえば、http:\/\/www.fabrikam.com:322\/mathservice.svc\/secureEndpoint という URI は、次の 4 つの部分から構成されます。 + +- スキーム : http: + +- コンピューター : www.fabrikam.com + +- \(省略可能\) ポート : 322 + +- パス : \/mathservice.svc\/secureEndpoint + +## サービスのアドレスの定義 + サービスのエンドポイント アドレスは、コードを使用して命令的に、または構成を通じて宣言的に指定できます。展開済みサービスのバインディングおよびアドレスは一般的に、サービスの開発中に使用されるものとは異なるので、コード内でエンドポイントを定義することは通常、実用的ではありません。一般に、サービス エンドポイントの定義にはコードではなく、構成を使用する方がより実用的です。バインディング情報とアドレス情報をコードに含めないことで、変更時にアプリケーションの再コンパイルや再展開を行う必要がなくなります。 + +### 構成によるアドレス定義 + 構成ファイルでエンドポイントを定義するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/endpoint-element.md) 要素を使用します。使用例と詳細については、「[エンドポイント アドレスの指定](../../../../docs/framework/wcf/specifying-an-endpoint-address.md)」を参照してください。 + +### コードによるアドレス定義 + エンドポイント アドレスは、コードで クラスを使用して作成できます。使用例と詳細については、「[エンドポイント アドレスの指定](../../../../docs/framework/wcf/specifying-an-endpoint-address.md)」を参照してください。 + +### WSDL のエンドポイント + エンドポイント アドレスは、対応するエンドポイントの `wsdl:port` 要素内の WS\-Addressing EPR 要素として WSDL で表すこともできます。EPR には、エンドポイントのアドレスのほかに、アドレスのすべてのプロパティが含まれます。使用例と詳細については、「[エンドポイント アドレスの指定](../../../../docs/framework/wcf/specifying-an-endpoint-address.md)」を参照してください。 + +## .NET Framework 3.5 での複数の IIS バインディングのサポート + インターネット サービス プロバイダーは、多くの場合、サイトの密度を高めて総所有コストを抑えるため、同じサーバーまたはサイト上で複数のアプリケーションをホストしています。通常、これらのアプリケーションは、異なるベース アドレスにバインドされています。インターネット インフォメーション サービス \(IIS\) Web サイトは、複数のアプリケーションを格納できます。サイト内のアプリケーションに、1 つ以上の IIS バインディングからアクセスできます。 + + IIS バインディングは、バインディング プロトコルとバインディング情報という 2 つの情報を提供します。バインディング プロトコルは通信を行うスキームを定義するもので、バインディング情報はサイトにアクセスするために使用する情報です。 + + IIS バインディングに使用されるコンポーネントの例を次に示します。 + +- バインディング プロトコル : HTTP + +- バインディング情報 : IP アドレス、ポート、ホスト ヘッダー + + IIS ではサイトごとに複数の IIS バインディングを指定でき、これによりスキームごとに複数のベース アドレスをサポートできます。[!INCLUDE[netfx35_short](../../../../includes/netfx35-short-md.md)] 以前は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではスキームごとに複数のアドレスがサポートされておらず、複数のアドレスが指定された場合は、アクティブ化の間に がスローされました。 + + [!INCLUDE[netfx35_short](../../../../includes/netfx35-short-md.md)] により、インターネット サービス プロバイダーは同じサイト上の同じスキームに対して別のベース アドレスを使用して複数のアプリケーションをホストできます。 + + たとえば、サイトで次のベース アドレスを使用できます。 + +- http:\/\/payroll.myorg.com\/Service.svc + +- http:\/\/shipping.myorg.com\/Service.svc + + [!INCLUDE[netfx35_short](../../../../includes/netfx35-short-md.md)] では、構成ファイルの AppDomain レベルでプレフィックス フィルターを指定できます。これには、プレフィックスの一覧を格納する [\](../../../../docs/framework/configure-apps/file-schema/wcf/baseaddressprefixfilters.md) 要素を使用します。IIS によって指定される受信ベース アドレスは、オプションのプレフィックス一覧に基づいてフィルター処理されます。既定では、プレフィックスを指定しない場合、すべてのアドレスが渡されます。プレフィックスを指定すると、そのスキームに一致するベース アドレスだけが渡されます。 + + プレフィックス フィルターを使用する構成コード例を次に示します。 + +``` + + + +        +        + + +``` + + 上記の例では、net.tcp:\/\/payroll.myorg.com:8000 と http:\/\/shipping.myorg.com:8000 が、対応するスキームに対して渡されるベース アドレスです。 + + `baseAddressPrefixFilter` では、ワイルカードはサポートされません。 + + IIS が提供するベース アドレスには、`baseAddressPrefixFilters` 一覧に存在しない他のスキームにバインドされたアドレスが指定される場合があります。これらのアドレスはフィルターで除外されません。 + +## .NET Framework 4 以降での複数の IIS バインディングのサポート + .NET 4 以降、 設定を true に設定するだけで、1 つのベース アドレスを選択しなくても、IIS で複数のバインディングのサポートが有効になります。このサポートは、HTTP プロトコル スキームに限定されます。 + + [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md) 上で multipleSiteBindingsEnabled を使用する構成コード例を次に示します。 + +``` + + + + + +``` + + 複数のサイト バインディングがこの設定を使用して有効になっている場合、HTTP プロトコルと非 HTTP プロトコルの両方について、baseAddressPrefixFilters 設定は無視されます。 + + 詳細および例については、「[複数の IIS サイト バインディングのサポート](../../../../docs/framework/wcf/feature-details/supporting-multiple-iis-site-bindings.md)」および「」を参照してください。 + +## WCF サービスによるアドレスの拡張 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの既定のアドレス指定モデルでは、エンドポイント アドレス URI を次の目的で使用します。 + +- サービスがリッスンするアドレス、つまりエンドポイントがメッセージをリッスンする位置の指定 + +- SOAP アドレス フィルター、つまりエンドポイントが SOAP ヘッダーとして待機するアドレスの指定 + + これらの目的で使用する値は個別に指定することができるため、アドレス指定の拡張が可能になり、次に示すような役に立つシナリオに対応します。 + +- SOAP 中継局 : クライアントが送信したメッセージは、最終目的地に到達する前にメッセージを処理する 1 つ以上の追加サービスを経由します。SOAP 中継局は、メッセージのキャッシュ、ルーティング、負荷分散、スキーム検証など多様なタスクを実行できます。このシナリオは、最終的な送信先である論理アドレス \(`wsa:To`\) ではなく、中継局を目的とする独立した物理アドレス \(`via`\) にメッセージを送信することによって実現されます。 + +- エンドポイントがリッスンするアドレスはプライベート URI であり、`listenURI` プロパティとは異なる値が設定されます。 + + `via` が指定するトランスポート アドレスはメッセージが最初に送信される場所で、この後にメッセージは、`to` パラメーターによって指定された、サービスが存在する別のリモート アドレスに送信されます。インターネットの場合、`via` URI は、サービスの最終的な `to` アドレスの プロパティと同じになります。この 2 つのアドレスを区別するのは、手動ルーティングを行う必要がある場合のみです。 + +### ヘッダーのアドレス指定 + エンドポイントは、基本となる URI だけでなく、1 つ以上の SOAP ヘッダーによってアドレス指定することもできます。これが役に立つのは、エンドポイントのクライアントに中継局を指す SOAP ヘッダーを含める必要がある、SOAP 中継局のシナリオの場合です。 + + カスタムのアドレス ヘッダーは、コードまたは構成のいずれかを使用して次のように定義できます。 + +- コードを使用する場合、カスタムのアドレス ヘッダーは クラスを使用して作成し、 の構築時に使用されます。 + +- 構成を使用する場合、カスタムの [\](../../../../docs/framework/configure-apps/file-schema/wcf/headers.md)[\ は、](http://msdn.microsoft.com/ja-jp/13aa23b7-2f08-4add-8dbf-a99f8127c017) 要素の子要素として指定します。 + + 配置後もヘッダーを変更できるため、コードよりも構成を使用する方法を一般的にお勧めします。 + +### カスタム リッスン アドレス + リッスンするアドレスには、エンドポイントの URI とは異なる値を設定できます。これは、SOAP アドレスがパブリックな SOAP 中継局として公開される一方、エンドポイントが実際にリッスンするアドレスはプライベートなネットワーク アドレスであるような中継局シナリオの場合に便利です。 + + カスタム リッスン アドレスは、コードまたは構成のいずれかを使用して指定できます。 + +- コードを使用する場合、カスタム リッスン アドレスはエンドポイントの動作コレクションに クラスを追加して指定します。 + +- 構成を使用する場合、カスタム リッスン アドレスはサービスの [\](http://msdn.microsoft.com/ja-jp/13aa23b7-2f08-4add-8dbf-a99f8127c017) 要素の `ListenUri` 属性で指定します。 + +### カスタム SOAP アドレス フィルター + エンドポイントの SOAP アドレス フィルター \(\) を定義するには、 に任意の プロパティを組み合わせて使用します。既定では、このフィルターは受信メッセージの `To` メッセージ ヘッダーが、エンドポイントの URI に一致し、必要なすべてのエンドポイント ヘッダーがメッセージ内に存在していることを検証します。 + + シナリオによっては、適切な `To` ヘッダーを持つメッセージだけではなく、基になるトランスポートに到着したすべてのメッセージをエンドポイントで受信します。これを行うには、ユーザーは クラスを使用します。 + +## 参照 + [エンドポイント アドレスの指定](../../../../docs/framework/wcf/specifying-an-endpoint-address.md) + [サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md b/docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md new file mode 100644 index 00000000000..4c6545a5dc7 --- /dev/null +++ b/docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md @@ -0,0 +1,99 @@ +--- +title: "エンドポイント : アドレス、バインディング、およびコントラクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "エンドポイント [WCF]" + - "WCF [WCF], エンドポイント" + - "Windows Communication Foundation [WCF], エンドポイント" +ms.assetid: 9ddc46ee-1883-4291-9926-28848c57e858 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# エンドポイント : アドレス、バインディング、およびコントラクト +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを使用して行われるすべての通信では、サービスの*エンドポイント*が使用されます。エンドポイントは、クライアントが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスによって提供される機能にアクセスできるようにします。 + + 各エンドポイントは、次の 4 つのプロパティで構成されます。 + +- そのエンドポイントの場所を示すアドレス。 + +- クライアントがエンドポイントと通信する方法を指定するバインディング。 + +- 利用可能な操作を識別するためのコントラクト。 + +- エンドポイントのローカル実装の詳細を指定する一連の動作。 + + ここでは、エンドポイントの構造と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] オブジェクト モデルでの表現方法について説明します。 + +## エンドポイントの構造 + 各エンドポイントの構造は次のとおりです。 + +- アドレス : アドレスは、エンドポイントを一意に識別し、サービスの潜在的ユーザーにそのエンドポイントの場所を示します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] オブジェクト モデルでは、 クラスで表されます。 クラスには次のものが含まれます。 + + - プロパティは、サービスのアドレスを表します。 + + - プロパティは、サービスのセキュリティ ID とオプションのメッセージ ヘッダーのコレクションを表します。オプションのメッセージ ヘッダーは、エンドポイントの識別またはエンドポイントとの対話のための、より詳細なアドレス指定情報を追加するために使用されます。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [エンドポイント アドレスの指定](../../../../docs/framework/wcf/specifying-an-endpoint-address.md). + +- バインディング : バインディングは、エンドポイントとの通信方法を指定します。バインディングには、以下の項目が含まれます。 + + - 使用するトランスポート プロトコル \(例 : TCP や HTTP\)。 + + - メッセージに使用するエンコーディング \(例 : テキストやバイナリ\)。 + + - 必要なセキュリティ要件 \(例 : SSL メッセージ セキュリティや SOAP メッセージ セキュリティ\)。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [WCF のバインディングの概要](../../../../docs/framework/wcf/bindings-overview.md).[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] オブジェクト モデルでは、バインディングは抽象基本クラス で表されます。ほとんどのシナリオでは、システム指定のバインディングを使用できます。詳細については、「[システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。 + +- コントラクト : コントラクトは、エンドポイントがクライアントに公開する機能を示します。コントラクトは、以下の項目を指定します。 + + - クライアントから呼び出すことができる操作。 + + - メッセージの形式。 + + - 操作を呼び出すために必要な入力パラメーターまたはデータの型。 + + - クライアントが予期できる処理メッセージまたは応答メッセージの種類。 + + コントラクトの定義の詳細については、「[サービス コントラクトの設計](../../../../docs/framework/wcf/designing-service-contracts.md)」を参照してください。 + +- 動作 : エンドポイントの動作を使用すると、サービス エンドポイントのローカル動作をカスタマイズできます。これを実現するため、エンドポイントの動作は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムのビルド プロセスに参加します。エンドポイントの動作の一例は、 プロパティです。これにより、SOAP アドレスまたは Web サービス記述言語 \(WSDL\) アドレスとは異なるリッスン アドレスを指定できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][ClientViaBehavior](../../../../docs/framework/wcf/diagnostics/wmi/clientviabehavior.md). + +## エンドポイントの定義 + サービスのエンドポイントはコードを使用して強制的に指定するか、構成を介して宣言として指定できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[方法 : 構成にサービス エンドポイントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md)」および「[方法 : コード内にサービス エンドポイントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-code.md)」を参照してください。 + +## このセクションの内容 + このセクションでは、バインディング、エンドポイント、およびアドレスの目的を説明し、バインディングとエンドポイントの構成方法および `ClientVia` 動作と `ListenUri` プロパティの使用方法を示します。 + + [アドレス](../../../../docs/framework/wcf/feature-details/endpoint-addresses.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でのエンドポイントのアドレス指定の方法について説明します。 + + [バインディング](../../../../docs/framework/wcf/feature-details/bindings.md) + バインディングを使用して、クライアントとサービスが相互に通信するために必要なトランスポート、エンコーディング、およびプロトコルの詳細を指定する方法について説明します。 + + [コントラクト](../../../../docs/framework/wcf/feature-details/contracts.md) + コントラクトでサービスのメソッドが定義されるしくみについて説明します。 + + [方法 : 構成にサービス エンドポイントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md) + 構成にサービス エンドポイントを作成する方法について説明します。 + + [方法 : コード内にサービス エンドポイントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-code.md) + コード内にサービス エンドポイントを作成する方法について説明します。 + + [方法 : Svcutil.exe を使用してコンパイル済みサービス コードを検証する](../../../../docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-validate-compiled-service-code.md) + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用して、サービスをホストせずにサービスの実装と構成でエラーを検出する方法について説明します。 + +## 参照 + [サービスの構成](../../../../docs/framework/wcf/configuring-services.md) + [バインディングの拡張](../../../../docs/framework/wcf/extending/extending-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/enumeration-types-in-data-contracts.md b/docs/framework/wcf/feature-details/enumeration-types-in-data-contracts.md new file mode 100644 index 00000000000..ca465f97600 --- /dev/null +++ b/docs/framework/wcf/feature-details/enumeration-types-in-data-contracts.md @@ -0,0 +1,106 @@ +--- +title: "データ コントラクトの列挙型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ コントラクト [WCF], 列挙型" +ms.assetid: b5d694da-68cb-4b74-a5fb-75108a68ec3b +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# データ コントラクトの列挙型 +列挙はデータ コントラクト モデルで表現できます。 このトピックでは、いくつかの例を通してプログラミング モデルを説明します。 + +## 列挙の基本 + データ コントラクト モデルで列挙型を使用する 1 つの方法として、 属性を型に割り当てる方法があります。 この場合、データ コントラクトに含める必要のある各メンバーに 属性を適用する必要があります。 + + 2 つのクラスを次の例に示します。 1 つ目は列挙を使用し、2 つ目は列挙を定義します。 + + [!code-csharp[c_DataContractEnumerations#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractenumerations/cs/source.cs#1)] + [!code-vb[c_DataContractEnumerations#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractenumerations/vb/source.vb#1)] + + `Car` クラスのインスタンスは、`condition` フィールドの値が `New`、`Used`、`Rental` のいずれかに設定されている場合にのみ送受信できます。 `condition` が、`Broken` または `Stolen` の場合、 がスローされます。 + + プロパティ \(\) を、列挙データ コントラクトとして通常通り使用できます。 + +### 列挙メンバー値 + 通常、データ コントラクトには、数値ではなく列挙メンバー名が含まれます。 ただし、データ コントラクト モデルを使用しているときに、受信側が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントである場合、エクスポートされたスキーマは数値を保持します。 これは、[XmlSerializer クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-xmlserializer-class.md)を使用している場合は、当てはまりません。 + + 前の例では、`condition` が `Used` に設定され、データが XML にシリアル化されると、結果の XML は `Used` になりますが `1` にはなりません。 したがって、次のデータ コントラクトは、`CarConditionEnum` のデータ コントラクトと同じです。 + + [!code-csharp[c_DataContractEnumerations#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractenumerations/cs/source.cs#2)] + [!code-vb[c_DataContractEnumerations#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractenumerations/vb/source.vb#2)] + + たとえば、`CarConditionEnum` を送信側で使用し、`CarConditionWithNumbers` を受信側で使用できます。 送信側で `Used` に値 "1" を使用し、受信側で値 "20" を使用しても、XML 表現は送信側と受信側共に `Used` です。 + + データ コントラクトに含めるには、 属性を適用する必要があります。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] では、列挙に特殊な値 0 \(ゼロ\) を常に割り当てることができます。これはまた、すべての列挙の既定値になります。 ただし、この特殊値ゼロも 属性を使用してマークされない限りシリアル化できません。 + + これには、次のような 2 つの例外があります。 + +- フラグ列挙体 \(このトピックの後で説明\) + +- プロパティが `false` に設定された列挙データ メンバー \(この場合、値がゼロの列挙はシリアル化されたデータから除外される\) + +### 列挙メンバー値のカスタマイズ + データ コントラクトの一部を形成する列挙メンバー値は、 属性の プロパティを使ってカスタマイズできます。 + + たとえば、次のデータ コントラクトは `CarConditionEnum` のデータ コントラクトとも等価です。 + + [!code-csharp[c_DataContractEnumerations#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractenumerations/cs/source.cs#3)] + [!code-vb[c_DataContractEnumerations#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractenumerations/vb/source.vb#3)] + + シリアル化されると、`PreviouslyOwned` の値には XML 表現 `Used` が含まれます。 + +## 単純な列挙 + 属性が割り当てられていない列挙型をシリアル化することもできます。 このような列挙型は、前の説明とまったく同じように扱われます。ただし、すべてのメンバー \( 属性は適用されていない\) に 属性が適用されているかのように扱われる点が異なります。 たとえば、次の列挙は、前の `CarConditionEnum` の例と同じデータ コントラクトが暗黙的に含まれます。 + + [!code-csharp[c_DataContractEnumerations#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractenumerations/cs/source.cs#6)] + [!code-vb[c_DataContractEnumerations#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractenumerations/vb/source.vb#6)] + + 列挙のデータ コントラクト名と名前空間、および列挙メンバー値をカスタマイズする必要がない場合に、単純な列挙を使用できます。 + +#### 単純な列挙に関するメモ + 属性を単純な列挙に適用しても効力はありません。 + + 属性を列挙に適用してもしなくても変わりはありません。 + + クラスが、列挙メンバーに適用された 属性を受け入れるという事実は、 の動作とは異なります。 この 2 つのシリアライザーは 属性を無視します。 + +## フラグ列挙体 + 列挙体に 属性を適用できます。 この場合、ゼロ個以上の列挙値のリストを同時に送受信できます。 + + これを行うには、 属性をフラグ列挙体に適用し、2 の累乗であるすべてのメンバーを、 属性を使用してマークします。 フラグ列挙体を使用するには、数列は \(1、2、4、8、16、32、64 のように\) 2 の累乗の連続である必要があります。 + + フラグの列挙値を送信する手順を次に示します。 + +1. 数値にマップする列挙メンバー \( 属性が適用されている\) の検索を試みます。 見つかった場合、そのメンバーのみを含むリストを送信します。 + +2. 合計の各部にマップされる列挙メンバー \(それぞれに 属性が適用されている\) が存在するような形で、数値をこの合計に分割します。 このメンバーすべてのリストを送信します。 このような合計を見つけるために、*最長一致アルゴリズム*が使用されます。したがって、このような合計が存在したとしても見つかるとは限りません。 この問題を回避するには、列挙メンバーの数値を必ず 2 の累乗数にします。 + +3. 前の 2 つの手順が失敗し、数値がゼロ以外の場合、 をスローします。 数値がゼロの場合、空のリストを送信します。 + +### 例 + フラグ操作で使用できる列挙の例を次に示します。 + + [!code-csharp[c_DataContractEnumerations#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractenumerations/cs/source.cs#4)] + [!code-vb[c_DataContractEnumerations#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractenumerations/vb/source.vb#4)] + + 次の各値は、示されているようにシリアル化されます。 + + [!code-csharp[c_DataContractEnumerations#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontractenumerations/cs/source.cs#5)] + [!code-vb[c_DataContractEnumerations#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontractenumerations/vb/source.vb#5)] + +## 参照 + + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + [サービス コントラクトでのデータ転送の指定](../../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/error-handling.md b/docs/framework/wcf/feature-details/error-handling.md new file mode 100644 index 00000000000..dcad4a0918e --- /dev/null +++ b/docs/framework/wcf/feature-details/error-handling.md @@ -0,0 +1,78 @@ +--- +title: "Error handling | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c948841a-7db9-40ae-9b78-587d216cbcaf +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# Error handling +## Windows Communication Foundation でのエラー処理 + サービスで予期しない例外やエラーが発生した場合、例外処理ソリューションを設計する方法は複数あります。 "正しい" または "最善" のエラー処理ソリューションが 1 つもない場合でも、検討する必要のある有効な手段が複数あります。 通常は、WCF 実装の複雑さ、例外の種類と頻度、例外の性質上処理対象かどうか、および関連付けられたトレース、ログ、またはポリシー要件に応じて、 以下に記載されている手法を複数組み合わせたハイブリッド ソリューションを実装することをお勧めします。 + + これらのソリューションについては、このセクションの残りの部分で詳しく説明します。 + +### Microsoft Enterprise Library + Microsoft Enterprise Library Exception Handling Application Block は、共通の設計パターンを実装し、エンタープライズ アプリケーションのすべてのアーキテクチャ レイヤーで発生する例外を処理するための一貫した戦略を策定するのに役立ちます。 これは、アプリケーション コンポーネントの catch ステートメントに含まれる一般的なコードをサポートするように設計されています。 開発者は、アプリケーション全体で同一の catch ブロックにこのコード \(例外情報をログに記録するコードなど\) を繰り返し使用する代わりに、Exception Handling Application Block を使用すると、このロジックを再利用可能な例外ハンドラーとしてカプセル化できます。 + + このライブラリには、すぐに使用できる Fault Contract Exception Handler が含まれています。 この例外ハンドラーは、Windows® Communication Foundation \(WCF\) のサービス境界で使用することを目的に設計されており、例外から新しいエラー コントラクトを生成します。 + + アプリケーション ブロックは、よく使用されるベスト プラクティスを組み込み、アプリケーション全体の例外処理に共通の方法を提供することを目的としています。 その一方で、独自に開発されたカスタム エラー ハンドラーやエラー コントラクトが非常に便利な場合もあります。 たとえば、カスタム エラー ハンドラーを使用すると、すべての例外を自動的に FaultExceptions に昇格し、さらにアプリケーションにログ機能を追加できるようになります。 + + 詳細については、「[Microsoft Enterprise Library](http://msdn.microsoft.com/library/ff632023.aspx)」を参照してください。 + +### 予期される例外の処理 + 適切な行動方針として、各操作または関連する機能拡張ポイントにおいて予期される例外をキャッチし、キャッチした例外を回復できるかどうかを判断して、FaultException\ で適切なカスタム エラーを返します。 + +### IErrorHandler を使用した予期しない例外の処理 + 予期しない例外を処理するには、行動方針として IErrorHandler を "フックする" ことをお勧めします。 エラー ハンドラーは、チャネル層ではなく WCF ランタイム レベル \("サービス モデル" 層\) でのみ例外をキャッチします。 チャネル レベルで IErrorHandler をフックする唯一の方法は、カスタム チャネルを作成することです。ただし、これはほとんどのシナリオで推奨されていません。 + + 一般的に、"予期しない例外" とは、回復不可能な例外でも処理例外でもなく、予期しないユーザー例外のことです。 回復不可能な例外 \(メモリ不足の例外など\) は、一般的に[ExceptionHandler クラス](http://msdn.microsoft.com/library/system.servicemodel.dispatcher.exceptionhandler.aspx)によって自動的に処理される例外で、通常は正常に処理できません。このような例外の処理は、単に追加のログ記録を行うため、または標準の例外をクライアントに返すためにのみ行われます。 処理例外は、シリアル化、エンコーダー、フォーマッタ レベルなどのメッセージの処理中に発生します。通常、この例外は IErrorHandler では処理できません。これは、一般的に、このような例外が発生するまでにエラー ハンドラーの介入が早すぎるか、遅すぎることが原因です。 同様に、トランスポート例外も IErrorHandler では処理できません。 + + IErrorHandler を使用すると、例外がスローされたときのアプリケーションの動作を明示的に制御できます。 次のような操作が可能です。 + +1. クライアントにエラーを送信するかどうかを決定する + +2. 例外をエラーに置き換える + +3. エラーを別のエラーに置き換える + +4. ログまたはトレースを実行する + +5. 他のカスタム アクティビティを実行する + + カスタム エラー ハンドラーは、サービスのチャネル ディスパッチャーの ErrorHandlers プロパティに追加することでインストールできます。 複数のエラー ハンドラーを設定することができ、これらはこのコレクションに追加された順序で呼び出されます。 + + IErrorHandler.ProvideFault は、クライアントに送信されるエラー メッセージを制御します。 このメソッドは、サービスの操作によってスローされた例外の種類に関係なく呼び出されます。 ここで操作が実行されない場合、WCF は、その既定の動作を想定し、カスタム エラー ハンドラーが存在しないかのように続行します。 + + この方法を使用する可能性がある場合として、クライアントに送信される前の例外をエラーに変換するための一元的な場所を作成する場合があります \(インスタンスが破棄されておらず、チャネルが Faulted 状態に移行していないことを確認します\)。 + + 通常、IErrorHandler.HandleError メソッドは、エラー ログ記録、システム通知、アプリケーションのシャットダウンなど、エラー関連の動作を実装するために使用されます。 IErrorHandler.HandleError は、サービス内の複数の場所で呼び出すことができます。エラーがスローされた場所に応じて、HandleError メソッドは操作と同じスレッドから呼び出される場合と呼び出されない場合があります \(この点について保証はありません\)。 + +### WCF 外部での例外の処理 + 多くの場合、構成の例外、データベース接続文字列の例外、およびその他の同様の例外は、WCF アプリケーションのコンテキスト内で発生する可能性がありますが、これらの例外自体は、サービス モデルまたは Web サービス自体が原因で発生する例外ではありません。 これらの例外は、Web サービス外部の "標準" の例外で、環境の中で他の外部例外が処理されるのと同様に処理される必要があります。 + +### 例外のトレース + トレースとは、すべての例外を確認できる可能性のある唯一の "汎用的な" 場所です。 例外のトレースとログの詳細については、「トレースとログ」を参照してください。 + +### WebGetAttribute と WebInvokeAttribute を使用した場合の URI テンプレート エラー + WebGet 属性と WebInvoke 属性を使用すると、要求アドレスのコンポーネントを操作パラメーターにマップする URI テンプレートを指定できます。 たとえば、URI テンプレートが "weather\/{state}\/{city}" の場合は、要求アドレスがリテラル トークン、state という名前のパラメーター、および city という名前にマップされます。 その後、これらのパラメーターは、名前によって、操作の仮パラメーターの一部にバインドされる場合があります。 + + テンプレート パラメーターが URI 内の文字列の形式で表されるのに対し、型指定されたコントラクトの仮パラメーターは文字列以外の型である可能性があります。 そのため、操作が呼び出される前に変換を行う必要があります。 [変換形式の表](http://msdn.microsoft.com/library/bb412172.aspx)をご利用いただけます。 + + ただし、変換に失敗した場合は、失敗したことを操作に認識させる方法はありません。 代わりに、型変換は、ディスパッチ エラーの形式で表示されます。 + + 型変換のディスパッチ エラーは、エラー ハンドラーをインストールすることで、その他多くの種類のディスパッチ エラーと同様に調査できます。 IErrorHandler 機能拡張ポイントは、サービス レベルの例外を処理するために呼び出されます。 そこから、呼び出し元に返される応答を選択できます \(カスタム タスクとレポートを実行することもできます\)。 + +## 参照 + [WCF エラー処理](http://msdn.microsoft.com/library/gg281715.aspx) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/exporting-and-importing-metadata.md b/docs/framework/wcf/feature-details/exporting-and-importing-metadata.md new file mode 100644 index 00000000000..8b0366a4a46 --- /dev/null +++ b/docs/framework/wcf/feature-details/exporting-and-importing-metadata.md @@ -0,0 +1,80 @@ +--- +title: "メタデータのエクスポートとインポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "メタデータ [WCF], エクスポートとインポート" +ms.assetid: 614a75bb-e0b0-4c95-b6d8-02cb5e5ddb38 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# メタデータのエクスポートとインポート +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、メタデータのエクスポートは、サービス エンドポイントを説明したり、クライアントがサービスの使用方法を理解するために使用できる、対応した標準的な表現にメタデータを移し替えたりするプロセスです。サービス メタデータのインポートは インスタンス、またはサービス メタデータの一部を生成するプロセスです。 + +## メタデータのエクスポート + メタデータを インスタンスからエクスポートするには、 抽象クラスの実装を使用します。 型は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に含まれる 抽象クラスの実装です。 + + 型は Web サービス記述言語 \(WSDL: Web Services Description Language\) メタデータを生成します。このメタデータには、 インスタンス内にカプセル化されたポリシー表現が関連付けられています。 インスタンスを使用すると、 オブジェクトと オブジェクトのメタデータを反復してエクスポートできます。 オブジェクトのコレクションをエクスポートして、特定のサービス名に関連付けることもできます。 + +> [!NOTE] +> `WsdlExporter` は、`ContractDescription.GetContract` メソッドを使用するか、`ServiceHost` インスタンスの `ServiceDescription` の一部として作成された `ContractDescription` インスタンスなど、共通言語ランタイム \(CLR\) の型情報を含む `ContractDescription` インスタンスからメタデータをエクスポートする場合にのみ使用できます。サービス メタデータからインポートした `ContractDescription` インスタンスや、型情報を使用せずに作成したインスタンスからは、`WsdlExporter` を使用してメタデータをエクスポートできません。 + +## メタデータのインポート + +### WSDL ドキュメントのインポート + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービス メタデータをインポートするには、 抽象クラスの実装を使用します。 型は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に含まれる 抽象クラスの実装です。 型は、 オブジェクトにまとめられた、結び付けられているポリシーを使用して WSDL メタデータをインポートします。 + + 型を使用すると、メタデータをインポートする方法を制御できます。すべてのエンドポイント、すべてのバインディング、またはすべてのコントラクトをインポートできます。特定の WSDL サービス、バインディング、またはポートの種類に関連付けられたすべてのエンドポイントをインポートすることもできます。また、特定の WSDL ポートのエンドポイント、特定の WSDL バインディングのバインディング、または特定の WSDL ポートの種類のコントラクトをインポートすることもできます。 + + また、 では、インポートする必要がないコントラクトのセットを指定できるようにする プロパティが公開されています。この場合、 は、同じ修飾名を持つコントラクトをメタデータからインポートする代わりに、 プロパティのコントラクトを使用します。 + +### ポリシーのインポート + 型は、メッセージ、操作、およびエンドポイントのポリシー サブジェクトに関連付けられたポリシー表現を収集した後で、 コレクションの 実装を使用してポリシー表現をインポートします。 + + ポリシーのインポート ロジックは、同じ WSDL ドキュメント内のポリシー表現へのポリシーの参照を自動的に処理します。インポート ロジックは `wsu:Id` 属性または `xml:id` 属性で識別されます。ポリシーのインポート ロジックは、アプリケーションでポリシーの循環参照が発生しないようにポリシー表現のサイズを 4096 ノードに制限します。ノードとは、`wsp:Policy`、`wsp:All`、`wsp:ExactlyOne`、または `wsp:policyReference` 要素です。 + + また、ポリシーのインポート ロジックは、ポリシー表現を自動的に正規化します。入れ子になったポリシー表現や `wsp:Optional` 属性は正規化されません。実行される正規化処理の量は 4096 ステップに制限されます。各ステップでは、ポリシー アサーション、または `wsp:ExactlyOne` 要素の子要素が生成されます。 + + 型は、異なる WSDL ポリシー サブジェクトに結び付けられているポリシー代替手段の組み合わせを最大で 32 組まで試行します。どの組み合わせを使用しても完全にインポートできない場合は、最初の組み合わせを使用して部分カスタム バインディングが作成されます。 + +## エラー処理 + 型や 型は、どちらも `Errors` プロパティを公開します。このプロパティには、エクスポート プロセスおよびインポート プロセスで発生したエラー メッセージおよび警告メッセージのコレクションを格納でき、ツールの実装時に使用できます。 + + 型は、通常、インポート プロセスでキャッチされた例外に対して例外をスローし、対応するエラーをその `Errors` プロパティに追加します。ただし、、および の各メソッドはこうした例外をスローしないため、`Errors` プロパティを調べて、これらのメソッドの呼び出し時に問題が発生したかどうかを確認する必要があります。 + + 型は、エクスポート プロセスでキャッチされたすべての例外を再スローします。`Errors` プロパティでは、この例外はエラーとしてキャプチャされません。 は、例外をスローするとエラー状態になるため、再使用できません。ワイルドカード アクションを使用しているために操作をエクスポートできない場合や、重複したバインディング名を検出した場合、 はその `Errors` プロパティに警告を追加します。 + +## このセクションの内容 + [方法 : メタデータをサービス エンドポイントにインポートする](../../../../docs/framework/wcf/feature-details/how-to-import-metadata-into-service-endpoints.md) + ダウンロードされたメタデータを説明オブジェクトにインポートする方法について説明します。 + + [方法 : メタデータをサービス エンドポイントからエクスポートする](../../../../docs/framework/wcf/feature-details/how-to-export-metadata-from-service-endpoints.md) + 説明オブジェクトをメタデータにエクスポートする方法について説明します。 + + [ServiceDescription と WSDL 参照](../../../../docs/framework/wcf/feature-details/servicedescription-and-wsdl-reference.md) + 説明オブジェクトと WSDL の間のマッピングについて説明します。 + + [方法 : Svcutil.exe を使用してコンパイル済みのサービス コードからメタデータをエクスポートする](../../../../docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-export-metadata-from-compiled-service-code.md) + Svcutil.exe を使用して、コンパイル済みアセンブリのサービス型、コントラクト型、およびデータ型のメタデータをエクスポートする方法について説明します。 + + [データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md) + XML シリアル化用の共通言語ランタイム \(CLR\) 型を表すために が使用する XML スキーマ \(XSD\) のサブセットについて説明します。 + +## リファレンス + + + + +## 参照 + [WCF 拡張に対するカスタム メタデータのエクスポート](../../../../docs/framework/wcf/extending/exporting-custom-metadata-for-a-wcf-extension.md) + [WCF 拡張に対するカスタム メタデータのインポート](../../../../docs/framework/wcf/extending/importing-custom-metadata-for-a-wcf-extension.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/exporting-schemas-from-classes.md b/docs/framework/wcf/feature-details/exporting-schemas-from-classes.md new file mode 100644 index 00000000000..f00a42cd688 --- /dev/null +++ b/docs/framework/wcf/feature-details/exporting-schemas-from-classes.md @@ -0,0 +1,73 @@ +--- +title: "クラスからのスキーマのエクスポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF, スキーマのインポートとエクスポート" + - "スキーマ [WCF], クラスからのエクスポート" + - "スキーマ [WCF]" + - "XsdDataContractExporter クラス" + - "XsdDataContractImporter クラス" +ms.assetid: bb57b962-70c1-45a9-93d5-e721e340a13f +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# クラスからのスキーマのエクスポート +データ コントラクト モデルで使用されているクラスから XML スキーマ定義言語 \(XSD\) スキーマを生成するには、 クラスを使います。 このトピックでは、スキーマの作成手順を説明します。 + +## エクスポート処理 + スキーマのエクスポート処理では、まず型の定義をエクスポートするので、型定義を XML 形式で記述した を生成します。 + + `XmlSchemaSet` は、一連の XSD スキーマ ドキュメントを表す [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] のスキーマ オブジェクト モデル \(SOM\) の一部です。 XSD ドキュメントを `XmlSchemaSet` から生成するために、 クラスの `XmlSchemaSet` プロパティから取得した、スキーマのコレクションを使います。 次に各 オブジェクトを、 を使ってシリアル化します。 + +#### スキーマをエクスポートするには + +1. のインスタンスを作成します。 + +2. 省略可能です。 をコンストラクターに渡します。 この場合、空の から開始するのではなく、スキーマのエクスポート時に生成されたスキーマが、この インスタンスに追加されます。 + +3. 省略可能です。 メソッドのいずれかを呼び出します。 指定された型がエクスポート可能かどうかを判定するメソッドです。 このメソッドには、次に説明する `Export` メソッドと同じオーバーロードがあります。 + +4. メソッドのいずれかを呼び出します。 オブジェクトの `Type`、または オブジェクトの を受け取る 3 種類のオーバーロードがあります。 3 つ目のメソッドの場合、指定されたアセンブリのすべての型がエクスポートされます。 + + `Export` メソッドを何度も呼び出すと、同じ `XmlSchemaSet` に複数の項目が追加されます。`XmlSchemaSet` に既に存在する型は生成されません。 したがって、`Export` クラスのインスタンスを複数作成するのではなく、同じ `XsdDataContractExporter` に対して `XsdDataContractExporter` を複数回呼び出すようにします。 これにより、同じスキーマ型が重複して生成される状況を回避できます。 + + > [!NOTE] + > エクスポート処理中に障害が発生した場合、`XmlSchemaSet` は予測できない状態になります。 + +5. プロパティを介して、 にアクセスします。 + +## エクスポート オプション + プロパティとして クラスのインスタンスを設定することにより、エクスポート処理の方法を制御できます。 具体的には、次のオプションを設定できます。 + +- 。`Type` のコレクションであり、エクスポートされる型に対応する既知の型を表します \([!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください\)。 これらの既知の型は、`Export` メソッドに渡された型と共に、`Export` 呼び出しが行われるたびにエクスポートされます。 + +- 。 このプロパティを介して を渡すことにより、エクスポート処理をカスタマイズできます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [データ コントラクト サロゲート](../../../../docs/framework/wcf/extending/data-contract-surrogates.md)。 既定では、サロゲートは使用されません。 + +## ヘルパー メソッド + `XsdDataContractExporter` には、主要な機能であるスキーマのエクスポート処理に加え、型に関する情報を調べるためのヘルパー メソッドが定義されています。 以下に例を示します。 + +- メソッド`Type` を受け取り、この型をルート オブジェクトとしてシリアル化した場合に使用されるルート要素名と名前空間を表す を返します。 + +- メソッド`Type` を引数とし、この型をスキーマにエクスポートした場合に使用される XSD スキーマ型の名前を表す を返します。 スキーマ内で匿名型として表される 型を引数として渡すと、`null` を返します。 + +- メソッド スキーマ内で匿名型として表される 型を渡した場合にのみ有効なメソッドで、それ以外の型の場合は `null` を返します。 匿名型に対しては、特定の を表す `Type` を返します。 + + 以上のメソッドの動作は、エクスポート オプションの影響を受けます。 + +## 参照 + + + + [スキーマのインポートとエクスポート](../../../../docs/framework/wcf/feature-details/schema-import-and-export.md) + [クラスを作成するためのスキーマのインポート](../../../../docs/framework/wcf/feature-details/importing-schema-to-generate-classes.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/extended-protection-for-authentication-overview.md b/docs/framework/wcf/feature-details/extended-protection-for-authentication-overview.md new file mode 100644 index 00000000000..926d0f0a47b --- /dev/null +++ b/docs/framework/wcf/feature-details/extended-protection-for-authentication-overview.md @@ -0,0 +1,43 @@ +--- +title: "認証の拡張保護の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3d2ceffe-a7bf-4bd9-a5a2-9406423bd7f8 +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# 認証の拡張保護の概要 +認証時の拡張保護によって、攻撃者がクライアントの資格情報をインターセプトして特定のサーバーに転送する man\-in\-the\-middle \(MITM\) 攻撃を防ぐことができます。 + + クライアント、サーバー、および攻撃者の 3 つの参加要素が存在するシナリオについて考えてみます。サーバーには `https://server` という URL があり、一方で攻撃者には `https://attacker` という URL があります。攻撃者は、自身がサーバーであるかのようにしてクライアントが攻撃者にアクセスするように騙します。次に、攻撃者はサーバーに要求を送信します。攻撃者がセキュリティで保護されたリソースへのアクセスを試みると、サーバーは攻撃者に対して WWW 認証ヘッダーで応答します。攻撃者は認証情報を持っていないため、WWW 認証ヘッダーをクライアントに送信します。クライアントは攻撃者に WWW 認証ヘッダーを送信し、攻撃者はそのヘッダーをサーバーに送信してクライアントの資格情報を利用してセキュリティで保護されたリソースにアクセスします。 + + 現在のところ、クライアント アプリケーションが HTTPS で Kerberos、Digest または NTLM を使用してサーバーに対する認証を実行する場合、最初にトランスポート レベルのセキュリティ \(TLS\) チャネルが構築され、このチャネルを使用して認証が行われます。しかし、Secure Sockets Layer \(SSL\) によって生成されるセッション キーと認証時に生成されるセッション キーはバインドされていません。そのため前述のシナリオでは、TLS \(HTTPS チャネルなど\) で通信が行われると、2 つの SSL チャネルが作成されます。1 つはクライアントと攻撃者間のチャネルで、もう 1 つは攻撃者とサーバー間のチャネルです。まず、クライアントの資格情報がクライアントと攻撃者間の SSL チャネルでクライアントからサーバーに送信され、次に、攻撃者とサーバー間のチャネルでクライアントの資格情報が送信されます。クライアントの資格情報がサーバーに届くと、サーバーは情報が送信されたチャネルを検出せずに、クライアントではなく攻撃者から発信された資格情報を確認します。 + + これを解決するには、TLS で保護された外部チャネルとクライアントが認証されている内部チャネルを使用して、チャネル バインディング トークン \(CBT\) をサーバーに渡します。CBT は TLS で保護された外部チャネルのプロパティで、外部チャネルをクライアントが認証されている内部チャネルでの対話とバインドするために使用します。 + + 前述のシナリオでは、クライアントと攻撃者間の TLS チャネルの CBT は、サーバーに送信される認証情報によって結び付けられます。CBT 管理サーバーは、クライアントと攻撃者間のチャネルに対応するクライアント認証情報内の CBT を、攻撃者とサーバー間のチャネルに追加されている CBT と比較します。CBT はチャネルの送信先によって特定されるため、クライアントと攻撃者間の CBT は、攻撃者とサーバー間の CBT とは一致しません。これにより、サーバーは MITM 攻撃を検出して認証要求を拒否することができます。 + + クライアント側が構成設定する必要は一切ありません。クライアントが CBT をサーバーに渡すように更新しておくと、常にこの動作が実行されます。サーバーを更新しておくと、サーバーが CBT を使用するように設定したり、CBT を無視するように設定することもできます。サーバーを更新しない場合、CBT は無視されます。 + + サーバーには、次の保護レベルを設定できます。 + +- なし。チャネル バインディングの検証は実行されません。更新されていないすべてのサーバーの動作です。 + +- 一部。更新されたすべてのクライアントは、サーバーにチャネル バインディング情報を提供する必要があります。クライアントが更新されていなければ、その必要はありません。アプリケーションの互換性を許容する中間のオプションです。 + +- 完全。すべてのクライアントがチャネル バインディング情報を提供する必要があります。サーバーは、クライアントが要求しないクライアントからの認証要求を拒否します。 + + 詳細については、Win7 CBT\/拡張保護サンプルを参照してください。 + +## 参照 + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/federation-and-issued-tokens.md b/docs/framework/wcf/feature-details/federation-and-issued-tokens.md new file mode 100644 index 00000000000..39eb33d7f87 --- /dev/null +++ b/docs/framework/wcf/feature-details/federation-and-issued-tokens.md @@ -0,0 +1,74 @@ +--- +title: "フェデレーションと発行済みトークン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フェデレーション [WCF], 発行済みトークン" + - "発行済みトークン [WCF]" + - "WCF, フェデレーション" +ms.assetid: 4c31ee7d-a820-4067-8b84-a83049021bb6 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# フェデレーションと発行済みトークン +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用すれば、WS\-Federation および WS\-Trust 仕様を実装したサービスとセキュリティで保護された通信を行うクライアントを作成できます。これらの仕様では、異なる信頼領域間での認証と承認を可能にする機構を提供するために、XML、SOAP、および Web サービス記述言語 \(WSDL: Web Services Description Language\) が使用されます。 + +## このセクションの内容 + [フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md) + フェデレーションの概要を説明します。 + + [フェデレーションと信頼](../../../../docs/framework/wcf/feature-details/federation-and-trust.md) + フェデレーション サービスまたはクライアントを作成するときに注意する必要がある設計上の問題を示します。 + + [方法 : フェデレーション クライアントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でフェデレーション クライアントを作成するための基本を説明します。 + + [方法 : フェデレーション サービスで資格情報を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) + フェデレーション サービスを作成する手順を説明します。 + + [方法 : WSFederationHttpBinding を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md) + `WSFederationHttpBinding` を使用するクライアントおよびサービスを構成する方法を説明します。 + + [方法 : セキュリティ トークン サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-security-token-service.md) + セキュリティ トークン サービスを作成する手順を説明します。 + + [SAML \(Security Assertions Markup Language\) トークンとクレーム](../../../../docs/framework/wcf/feature-details/saml-tokens-and-claims.md) + 多様なクレームの種類を作成できる拡張可能な SAML \(Security Assertions Markup Language\) トークンについて説明します。 + + [方法 : ローカル発行者を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md) + セキュリティ トークンのローカル発行者の作成方法を説明します。 + + [方法 : WSFederationHttpBinding のセキュリティで保護されたセッションを無効にする](../../../../docs/framework/wcf/feature-details/how-to-disable-secure-sessions-on-a-wsfederationhttpbinding.md) + `WSFederationHttpBinding` のセキュリティで保護されたセッションを無効にする方法を説明します。クライアントごとにセッションが必要になる Web ファームを作成する場合には、セキュリティで保護されたセッションを無効化する必要があります。 + +## 関連項目 + + + + + + + + + + + + + + + + +## 参照 + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) + [カスタム トークン](../../../../docs/framework/wcf/extending/custom-tokens.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/federation-and-trust.md b/docs/framework/wcf/feature-details/federation-and-trust.md new file mode 100644 index 00000000000..88e36743b4c --- /dev/null +++ b/docs/framework/wcf/feature-details/federation-and-trust.md @@ -0,0 +1,51 @@ +--- +title: "フェデレーションと信頼 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フェデレーション [WCF], 信頼" +ms.assetid: 4bdec4f2-f8a2-4512-bdcf-14ef54b5877a +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# フェデレーションと信頼 +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] におけるフェデレーション アプリケーション、信頼の境界と構成、および発行済みトークンの使用に関連したさまざまな側面について説明します。 + +## サービス、セキュリティ トークン サービス、および信頼 + フェデレーション エンドポイントを公開するサービスを使用する場合、通常、特定の発行者によって提供されたトークンを使用してクライアント認証を行う必要があります。そのため、発行者の正しい資格情報を使用してサービスが構成されていることが重要です。そうでないと、サービスは発行済みトークンの署名を検証することができず、クライアントはサービスと通信できません。サービスで発行者の資格情報を構成する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : フェデレーション サービスで資格情報を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md)」を参照してください。 + + 同様に、対称キーを使用する場合も、キーがターゲット サービス用に暗号化されるため、セキュリティ トークン サービスがターゲット サービスの正しい資格情報で構成される必要があります。そうでないと、セキュリティ トークン サービスはターゲット サービス用にキーを暗号化できないため、この場合も、クライアントはサービスと通信できなくなります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでは、[SecurityBindingElement](../../../../docs/framework/wcf/diagnostics/wmi/securitybindingelement.md) にある プロパティの値を使用してクライアントとサービスとの間の時刻のずれを許可します。フェデレーションでは、`MaxClockSkew` 設定が、クライアントと、クライアントが発行済みトークンを取得したセキュリティ トークン サービスの両方の時刻のずれに対して適用されます。そのため、発行済みトークンの有効期間の開始時刻と終了時刻が設定する際、セキュリティ トークン サービスで時刻のずれを許可する必要はありません。 + +> [!NOTE] +> 時刻のずれの重要性は、発行済みトークンの有効期間が短くなるほど大きくなります。トークンの有効期間が 30 分以上あれば、多くの場合、時刻のずれは大きな問題にはなりません。短い有効期間が使用されるシナリオやトークンの正確な有効時間が重要となるシナリオでは、時刻のずれを考慮に入れて設計する必要があります。 + +## フェデレーション エンドポイントとタイムアウト + クライアントがフェデレーション エンドポイントと通信するときは、最初にセキュリティ トークン サービスから適切なトークンを取得する必要があります。このセキュリティ トークン サービスがフェデレーション エンドポイントを公開している場合、クライアントは最初にそのエンドポイントの発行者からトークンを取得する必要があります。それぞれのトークンの取得には時間がかかり、この時間が実際のメッセージを最終的なエンドポイントに送信するときの全体的なタイムアウトの影響を受けます。 + + たとえば、クライアント側チャネルのタイムアウトが 30 秒に設定されているとします。またメッセージを最終的なエンドポイントに送信する前に、トークンを取得するために 2 つのトークン発行者を呼び出す必要があり、それぞれのトークンの発行に 15 秒を要するとします。この場合、この試行は失敗し、 がスローされます。したがって、クライアント チャネルの 値は、すべての発行済みトークンを取得するのにかかる時間を含めた、十分大きな値に設定する必要があります。 プロパティの値が指定されていない場合、 プロパティ、または プロパティ \(あるいはその両方\) を、すべての発行済みトークンを取得するのにかかる時間を含めた、十分大きな値に設定する必要があります。 + +## トークンの有効期間と更新 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントは、サービスへの最初の要求を行う際に発行済みトークンのチェックを行いません。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、セキュリティ トークン サービスによって適切な有効期間を持つトークンが発行されることが信頼されています。トークンがクライアントによってキャッシュされて再使用される場合は、トークンの有効期間が、後続する要求によってチェックされ、クライアントは必要に応じてトークンを自動的に更新します。トークンのキャッシュ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : フェデレーション クライアントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md)」を参照してください。 + + 発行済みトークンまたはセキュリティ コンテキスト トークンに対して、30 秒以下などの短い有効期間を指定すると、発行済みトークンを要求したり、セキュリティ コンテキスト トークンのネゴシエーションや更新を行ったりした場合に、ネゴシエーションのタイムアウトやその他の例外が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントによってスローされることがあります。 + +## 発行済みトークンと InclusionMode + クライアントからフェデレーション エンドポイントに送信されたメッセージで発行済みトークンがシリアル化されるかどうかは、 クラスの プロパティを設定することによって制御します。このプロパティは 列挙値のいずれかに設定できますが、これはほとんどのフェデレーション シナリオでは役に立ちません。`SecurityTokenInclusionMode.Never` 値および `SecurityTokenInclusionMode.AlwaysToInitiator` 値を設定すると、クライアントによって、セキュリティ トークンサービスによって発行されたトークンへの参照が証明書利用者に送信されます。証明書利用者がこの発行済みトークンのコピーを持っていない限り、トークン参照が解決されないため、認証は失敗します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では `SecurityTokenInclusionMode.Once` を `SecurityTokenInclusionMode.AlwaysToRecipient` と等価のものとして扱います。 + +## 参照 + + [方法 : フェデレーション クライアントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [方法 : フェデレーション サービスで資格情報を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) + [方法 : WSFederationHttpBinding を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/federation.md b/docs/framework/wcf/feature-details/federation.md new file mode 100644 index 00000000000..543409d6730 --- /dev/null +++ b/docs/framework/wcf/feature-details/federation.md @@ -0,0 +1,297 @@ +--- +title: "フェデレーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フェデレーション [WCF]" + - "WCF, フェデレーション" +ms.assetid: 2f1e646f-8361-48d4-9d5d-1b961f31ede4 +caps.latest.revision: 26 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 26 +--- +# フェデレーション +ここでは、フェデレーション セキュリティの概念について簡単に説明します。また、フェデレーション セキュリティ アーキテクチャを展開する際の [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のサポートについても説明します。フェデレーションのサンプル アプリケーションについては、「[フェデレーション サンプル](../../../../docs/framework/wcf/samples/federation-sample.md)」を参照してください。 + +## フェデレーション セキュリティの定義 + フェデレーション セキュリティにより、クライアントがアクセスするサービスと、関連する認証および承認の手順を明確に分離できます。また、フェデレーション セキュリティを使用すると、異なる信頼レルムに属する複数のシステム、ネットワーク、および組織間のコラボレーションが可能になります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、フェデレーション セキュリティを使用する分散システムの構築と展開をサポートします。 + +### フェデレーション セキュリティ アーキテクチャの要素 + 次の表に示すように、フェデレーション セキュリティ アーキテクチャには 3 つの主要な要素があります。 + +|要素|説明| +|--------|--------| +|ドメイン\/レルム|セキュリティ管理または信頼の単位。ドメインには通常、1 つの組織が含まれます。| +|フェデレーション|信頼が確立されたドメインのコレクション。信頼のレベルはさまざまですが、通常は認証レベルが含まれ、ほとんどの場合に承認レベルが含まれます。典型的なフェデレーションには、一連のリソースへの共有アクセスを可能にする信頼を確立した多くの組織が含まれます。| +|STS \(セキュリティ トークン サービス\)|セキュリティ トークンを発行する Web サービス。つまり、信頼できる証拠に基づいて、サービスを信頼する任意の相手に対してアサーションを行います。これによりドメイン間における信頼の橋渡しの基礎が形成されます。| + +### サンプル シナリオ + フェデレーション セキュリティの例を次の図に示します。 + + ![フェデレーション](../../../../docs/framework/wcf/feature-details/media/typicalfederatedsecurityscenario.gif "TypicalFederatedSecurityScenario") + + このシナリオでは、A と B の 2 つの組織があります。組織 B には、組織 A の一部のユーザーにとって有用な Web リソース \(Web サービス\) があります。 + +> [!NOTE] +> このセクションでは、*"リソース"*、*"サービス"*、および *"Web サービス"* を相互に置き換え可能な用語として使用します。 + + 通常、組織 B は、組織 A のユーザーに対して、サービスにアクセスする前になんらかの有効な形式の認証を行うことを要求します。さらに、組織 B では、当該の特定リソースにアクセスするためにユーザーが承認されることを要求する場合もあります。この問題に対処し、組織 A のユーザーが組織 B のリソースにアクセスできるようにする 1 つの方法として、次のような方法があります。 + +- 組織 A のユーザーは、各自の資格情報 \(ユーザー名とパスワード\) を組織 B に登録します。 + +- 組織 A のユーザーがリソースにアクセスするには、リソースにアクセスする前に自分の資格情報を組織 B に提示して認証を受けます。 + + この方法には、次の 3 つの重大な欠点があります。 + +- 組織 B では、ローカル ユーザーの資格情報の管理に加えて、組織 A のユーザーの資格情報の管理も必要になります。 + +- 組織 A のユーザーは、組織 A 内のリソースにアクセスするために通常使用する資格情報以外に、別の資格情報セットを保持する \(つまり、別のユーザー名とパスワードを覚えておく\) 必要があります。通常、これは、複数のサービス サイトで同じユーザー名とパスワードが使用される可能性を高めるため、脆弱なセキュリティ対策と言えます。 + +- 組織 B にあるリソースの価値を認識する組織の数が増えても、アーキテクチャを拡張できません。 + + 上記の欠点に対処する別の方法として、フェデレーション セキュリティの使用があります。この方法では、組織 A と組織 B が信頼関係を確立し、セキュリティ トークン サービス \(STS: Security Token Service\) を使用して、確立された信頼を仲介できるようにします。 + + フェデレーション セキュリティ アーキテクチャでは、組織 A のユーザーが、組織 B の Web サービスにアクセスする場合に、組織 B の STS から発行された有効なセキュリティ トークンを提示する必要があることを認識しています。この STS が、特定のサービスへのアクセスを認証および承認します。 + + STS B に接続したユーザーは、STS に関連付けられたポリシーから別のレベルの間接指定を受け取ります。このユーザーは、STS B がセキュリティ トークンを発行する前に、STS A \(クライアントの信頼レルム\) の有効なセキュリティ トークンを提示しておく必要があります。これは、2 つの組織間で確立された信頼関係から生じた結果であり、組織 B には組織 A のユーザーの ID を管理する必要がないことを意味します。実際には、STS B の `issuerAddress` と `issuerMetadataAddress` は、通常 null になります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : ローカル発行者を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md).この場合、クライアントは STS A を見つけるためにローカル ポリシーを調べます。この構成は、*"ホーム レルム フェデレーション"* と呼ばれ、STS B は STS A に関する情報を管理する必要がないため、拡張性が高まります。 + + ユーザーは、組織 A の STS に接続し、組織 A 内の他のリソースにアクセスする際に通常使用する認証資格情報を提示して、セキュリティ トークンを取得します。これにより、ユーザーが複数の資格情報セットを保持する必要があるという問題や、複数のサービス サイトで同じ資格情報セットを使用するという問題が、ある程度解決されます。 + + STS A からセキュリティ トークンを取得したユーザーは、このトークンを STS B に提示します。組織 B はユーザーの要求の承認手順を進め、独自のセキュリティ トークン セットからユーザーにセキュリティ トークンを発行します。ユーザーは、このトークンを組織 B のリソースに提示し、サービスにアクセスします。 + +## WCF におけるフェデレーション セキュリティのサポート + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)を使用して、フェデレーション セキュリティ アーキテクチャの展開を設定不要でサポートします。 + + [\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)は、安全で信頼性が高く相互運用可能なバインディングを提供します。このバインディングでは、要求\/応答形式の通信を実現するための基盤となるトランスポート機構として HTTP を使用する必要があり、エンコーディングのワイヤ形式としてテキストと XML を使用します。 + + フェデレーション セキュリティ シナリオで [\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)を使用する場合、次のセクションで説明するように、論理的に独立した 2 つのフェーズに分けることができます。 + +### 第 1 フェーズ : 設計 + 設計フェーズでは、クライアントは [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用してサービス エンドポイントが公開するポリシーを読み取り、サービスの認証と承認の要件を収集します。次のフェデレーション セキュリティの通信パターンをクライアントで作成するために、適切なプロキシが構築されます。 + +- クライアント信頼レルムにある STS からセキュリティ トークンを取得する。 + +- サービス信頼レルムにある STS にトークンを提示する。 + +- サービス信頼レルムにある STS からセキュリティ トークンを取得する。 + +- サービスにトークンを提示してサービスにアクセスする。 + +### 第 2 フェーズ : 実行時 + 実行時フェーズでは、クライアントは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント クラスのオブジェクトをインスタンス化し、この [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを使用して呼び出しを行います。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の基盤となるフレームワークにより、フェデレーション セキュリティの通信パターンにおける前述の手順が処理され、クライアントがシームレスにサービスを利用できるようにします。 + +## WCF を使用した実装のサンプル + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のネイティブ サポートを使用したフェデレーション セキュリティ アーキテクチャの実装サンプルを次の図に示します。 + + ![WCF のフェデレーション セキュリティ](../../../../docs/framework/wcf/feature-details/media/federatedsecurityinwcf.gif "FederatedSecurityInWCF") + +### MyService の例 + `MyService` サービスは、`MyServiceEndpoint` を介して単一のエンドポイントを公開します。このエンドポイントに関連付けられたアドレス、バインディング、およびコントラクトを次の図に示します。 + + ![フェデレーション](../../../../docs/framework/wcf/feature-details/media/myservice.gif "MyService") + + サービス エンドポイント `MyServiceEndpoint` は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md) を使用し、STS B によって発行された `accessAuthorized` クレームを含む有効な SAML \(Security Assertions Markup Language\) トークンを要求します。これは、サービス構成で宣言によって指定されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +> [!NOTE] +> `MyService` が要求するクレームについては、細かい点に注意が必要です。2 番目の図は、`MyService` が `accessAuthorized` クレームを含む SAML トークンを要求していることを示しています。より正確には、これで、`MyService` が必要とするクレームの種類が指定されます。このクレームの種類の完全修飾名は http:\/\/tempuri.org:accessAuthorized \(関連する名前空間を含みます\) で、この名前がサービス構成ファイルで使用されます。このクレームの値は、このクレームが存在することが示しており、STS B によって `true` に設定されると想定されます。 + + このポリシーは、`MyService` の一部として実装されている `MyServiceOperationRequirement` クラスによって実行時に適用されます。 + + [!code-csharp[C_Federation#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_federation/cs/source.cs#0)] + [!code-vb[C_Federation#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_federation/vb/source.vb#0)] +[!code-csharp[C_Federation#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_federation/cs/source.cs#1)] +[!code-vb[C_Federation#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_federation/vb/source.vb#1)] + +#### STS B + STS B を次の図に示します。前述のように、セキュリティ トークン サービス \(STS\) も Web サービスであり、エンドポイントやポリシーなどを関連付けることができます。 + + ![フェデレーション](../../../../docs/framework/wcf/feature-details/media/msservicestsb.gif "MsServiceSTSB") + + STS B は、セキュリティ トークンを要求する際に使用できる `STSEndpoint` という単一のエンドポイントを公開します。具体的には、STS B は、`accessAuthorized` クレームを含む SAML トークンを発行します。このトークンは、サービスにアクセスするために `MyService` サービス サイトで提示できます。ただし、STS B は、STS A によって発行された `userAuthenticated` クレームを含む有効な SAML トークンを提示することをユーザーに要求します。これは、STS 構成で宣言によって指定されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +> [!NOTE] +> この場合も、`userAuthenticated` クレームは、STS B が必要とするクレームの種類です。このクレームの種類の完全修飾名は http:\/\/tempuri.org:userAuthenticated \(関連する名前空間を含みます\) で、この名前が STS 構成ファイルで使用されます。このクレームの値は、このクレームが存在することを示しており、STS A によって `true` に設定されると想定されます。 + + STS B の一部として実装されているこのポリシーは、`STS_B_OperationRequirement` クラスによって実行時に適用されます。 + + [!code-csharp[C_Federation#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_federation/cs/source.cs#2)] + [!code-vb[C_Federation#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_federation/vb/source.vb#2)] + + アクセス チェックで問題がなければ、STS B は、`accessAuthorized` クレームを含む SAML トークンを発行します。 + + [!code-csharp[C_Federation#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_federation/cs/source.cs#3)] + [!code-vb[C_Federation#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_federation/vb/source.vb#3)] + +#### STS A + STS A を次の図に示します。 + + ![フェデレーション](../../../../docs/framework/wcf/feature-details/media/sts-b.gif "STS\_B") + + STS B と同様に、STS A もセキュリティ トークンを発行する Web サービスであり、そのための単一のエンドポイントを公開します。ただし、STS A は別のバインディング \(`wsHttpBinding`\) を使用し、`emailAddress` クレームを含む有効な [!INCLUDE[infocard](../../../../includes/infocard-md.md)] を提示することをユーザーに要求します。応答で、STS A は `userAuthenticated` クレームを含む SAML トークンを発行します。これは、サービス構成で宣言によって指定されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + STS A の一部として実装されているこのポリシーは、`STS_A_OperationRequirement` クラスによって実行時に適用されます。 + + [!code-csharp[C_Federation#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_federation/cs/source.cs#4)] + [!code-vb[C_Federation#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_federation/vb/source.vb#4)] + + アクセスが `true` であれば、STS A は、`userAuthenticated` クレームを含む SAML トークンを発行します。 + + [!code-csharp[C_Federation#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_federation/cs/source.cs#5)] + [!code-vb[C_Federation#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_federation/vb/source.vb#5)] + +### 組織 A のクライアント + `MyService` サービスの呼び出しに必要な手順と共に、組織 A のクライアントを次の図に示します。全体の処理を示すために、他の機能コンポーネントも示します。 + + ![フェデレーション](../../../../docs/framework/wcf/feature-details/media/federationclienta.gif "FederationClientA") + +## 概要 + フェデレーション セキュリティを使用すると、役割を明確に分離できるため、安全で拡張性のあるサービス アーキテクチャを構築できます。分散アプリケーションの構築と展開を行うためのプラットフォームとして、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではフェデレーション セキュリティの実装をネイティブにサポートをしています。 + +## 参照 + [セキュリティ](../../../../docs/framework/wcf/feature-details/security.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/filtering.md b/docs/framework/wcf/feature-details/filtering.md new file mode 100644 index 00000000000..7198617a322 --- /dev/null +++ b/docs/framework/wcf/feature-details/filtering.md @@ -0,0 +1,94 @@ +--- +title: "フィルター処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4002946c-e34a-4356-8cfb-e25912a4be63 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# フィルター処理 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] フィルター処理システムは、宣言的なフィルターを使用してメッセージの照合処理と操作上の判断を行います。フィルターを使用してメッセージの一部を調べることで、そのメッセージで必要な操作を決定できます。たとえば、キュー プロセスでは、XPath 1.0 クエリを使用して既知のヘッダー優先度要素をチェックし、メッセージをキューの先頭に移動するべきかどうかを決定します。 + + フィルター処理システムは、特定の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージに対して、どのフィルターのセットが `true` であるかを効率よく判断できる一連のクラスから構成されます。 + + フィルター処理システムは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージングの中核となるコンポーネントであり、非常に高速に動作するように設計されています。フィルターの各実装は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージの特定の種類の照合に対して最適化されています。 + + フィルター処理システムは、スレッド セーフではありません。アプリケーションは、すべてのロック セマンティクスを処理する必要があります。ただし、\(スレッドに対する\) マルチ リーダー\/シングル ライターはサポートされています。 + +## フィルター処理が適する場合 + フィルター処理は、メッセージを適切なアプリケーション コンポーネントにディスパッチする処理の一部であり、メッセージの受信後に行われます。フィルター処理システムの設計では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のいくつかのサブシステム \(メッセージング、ルーティング、セキュリティ、イベント処理、およびシステム管理など\) の要件に対処します。 + +## フィルター + フィルター エンジンには、フィルターとフィルター テーブルという 2 つの主要コンポーネントが含まれます。フィルターは、ユーザーが指定した論理条件に基づいてメッセージに関する論理判定を行います。フィルターは クラスを実装します。 + + メッセージがフィルターの一致条件を満たしているかどうかを判定するには、 メソッドを使用します。これらのメソッドの中の 1 つは、メッセージのヘッダーをテストしますが、メッセージ本文は検査できません。他のメソッドは入力パラメーターとして*メッセージ バッファー*を取得し、メッセージ本文の検査が可能です。 + + 通常、フィルターは個別にテストされるのではなく、フィルター テーブルの一部としてテストされます。フィルター テーブルは、 メソッドによって作成されるジェネリック クラスです。 + + 数種類のフィルターがあり、それぞれが特定の種類のブール型の条件での照合処理に特化されています。フィルターを作成した後に、フィルターが使用する条件を変更することはできません。フィルターの条件を変更するには、新しいフィルターを作成し、既存のフィルターを削除します。 + +### アクション フィルター + には、アクション文字列の一覧が含まれます。フィルターの一覧にあるアクションのいずれかが、メッセージまたはメッセージ バッファーにある Action ヘッダーに一致した場合、`Match` メソッドは `true` を返します。この一覧が空である場合、フィルターはすべてに一致するフィルターと見なされるため、メッセージまたはメッセージ バッファーはすべて一致することになり、`Match` メソッドは `true` を返します。フィルターの一覧にあるすべてのアクションが、メッセージまたはメッセージ バッファーにある Action ヘッダーに一致しない場合、`Match` メソッドは `false` を返します。メッセージにアクションがなく、フィルターの一覧が空でない場合、`Match` メソッドは `false` を返します。 + +### エンドポイント アドレス フィルター + は、メッセージのヘッダー コレクションに示されるエンドポイント アドレスに基づいて、メッセージおよびメッセージ バッファーのフィルター処理を行います。メッセージがこのようなフィルターを通過するには、次の条件を満たす必要があります。 + +- フィルターのアドレス URI \(Uniform Resource Identifier\) がメッセージの To ヘッダーのアドレスと同じであること。 + +- フィルターのアドレス \(`address.Headers` コレクション\) にある各エンドポイント パラメーターが、マッピング対象のヘッダーをメッセージ内で見つけることができること。メッセージまたはメッセージ バッファーの追加のヘッダーは、一致を `true` の状態にしておくためであれば、許容されます。 + +### プレフィックス エンドポイント アドレス フィルター + +1. は、メッセージ URI のプレフィックスとも一致できるという点を除けば、 フィルターと同じように動作します。たとえば、アドレス http:\/\/www.adatum.com を指定したフィルターは、http:\/\/www.adatum.com\/userA 宛のメッセージと一致します。 + +### XPath メッセージ フィルター + は、XPath 式を使用して、XML ドキュメントに特定の要素、属性、テキスト、その他の XML 構文が含まれているかどうかを判定します。このフィルターは、XPath の厳密なサブセットに対して非常に効率的に処理できるように最適化されています。XML Path 言語の詳細については、[W3C XML Path Language 1.0 の仕様](http://go.microsoft.com/fwlink/?LinkId=94779)を参照してください。 + + アプリケーションは通常、エンドポイントで を使用して SOAP メッセージの内容を問い合わせ、その結果に基づいて適切なアクションを実行します。たとえば、キューの処理では、XPath クエリを使用して既知のヘッダーの優先度要素を検査し、メッセージをキューの先頭に移動するべきかどうかを決定します。 + +## フィルター テーブル + フィルター テーブルは、キーと値のペアを保存するために使用されます。ここで、フィルターがキーであり、これに関連するデータが値になります。このフィルター データは、メッセージがフィルターに一致した場合に起きるアクションを示すために使用することができ、その型はフィルター テーブル クラスのジェネリック パラメーターになります。フィルター データは、ルーティングのルール、セッション セキュリティの状態、チャネル上のリスナーなどで構成できます。データは、データ フロー制御が必要な場所で使用できます。 + + フィルター テーブルは、 ジェネリック インターフェイスを実装します。 + + フィルター テーブルには、テーブル内のすべてのフィルターに対してメッセージとの一致を調べて、一致したフィルターまたはデータの順序付けられていないコレクションを返すメソッドがいくつかあります。メソッドの中には複数回の一致を調べて、一致したすべての項目を返すものもあります。それ以外のメソッドは 1 回だけの一致となり、1 つの項目のみを返し、フィルターが複数回一致する場合には、 をスローします。 + +### メッセージ フィルター テーブル + は、 の最も一般的な実装です。このテーブルには、すべての種類のフィルターを格納できます。 + + フィルターには数字による優先順位を割り当てることができます。一番大きな数が最も高い優先順位となります。複数の種類のフィルターが、同じ優先度を持つことができます。また特定の種類のフィルターが、複数の優先順位レベルに現れることもできます。 + + 照合処理は優先順位が最も高いフィルターから開始され、ある優先順位で一致するフィルターが見つかると、それよりも優先順位の低いフィルターは検査されません。そのため、フィルターが 1 回だけ一致するメソッドを使用しているときに、あるメッセージに対してフィルターの一致が複数回発生した場合、一致フィルターの優先順位がそれぞれ異なっていれば、例外はスローされず、最も優先順位の高いフィルターが返されます。同様に、複数回フィルターが一致するメソッドでも、優先順位が最も高い一致フィルターのみが返されます。 + +### XPath メッセージ フィルター テーブル + は宣言的な XPath フィルターに最適化されているため、テーブル キーは になります。 + + クラスは、ほとんどのメッセージ シナリオをカバーし、XPath 1.0 の文法を完全にサポートする XPath のサブセットに合わせてマッチングを最適化します。また、効率的な並列マッチング用のアルゴリズムも最適化します。 + + このテーブルには、 および 上で動作する特殊な `Match` メソッドがいくつかあります。 は、 プロパティを追加することで、 クラスを拡張します。このプロパティを使用すると、ナビゲーターを複製せずに XML ドキュメント内の位置を迅速に保存し、読み込むことができます。 を使用してそうした操作を行うには、大量のメモリ領域を割り当てる必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] XPath エンジンでは、XML ドキュメントでクエリの実行中にカーソルの位置を頻繁に記録する必要があるため、 により、メッセージ処理にとって重要な最適化が提供されます。 + +## 顧客シナリオ + フィルター処理は、メッセージに含まれるデータに応じて、異なる処理モジュールにメッセージを送信する必要がある場合に、いつでも使用できます。一般的なのは、アクション コードに基づいてメッセージをルーティングするシナリオと、メッセージのエンドポイント アドレスに基づいてメッセージのストリームを分離化するシナリオの 2 つです。 + +### ルーティング + エンドポイントのリスナーは、メッセージの SOAP ヘッダーに 1 つ以上のアクション コードが含まれるメッセージをリッスンします。これは、アクション コードを含む配列をコンストラクターに渡して を作成することで実装します。このフィルターは、`ListenerFactory` に登録するために使用されるため、アクションがフィルター内のアクション コードのいずれかと一致するメッセージだけが特定のエンドポイントに到達します。 + +### 分離化 + 複数のエンドポイントがネットワーク上の同じ `ServiceListener` から分散している場合、メッセージを分離化し、メッセージが特定のエンドポイント アドレスに属しているかどうかを確認する唯一の方法は、 を使用することです。このフィルターは、ヘッダーに格納されている情報に対して検索を実行して、登録されているエンドポイントに向けられたメッセージを選択します。このようなフィルターを通過するのは、次の両方に対応する必要なヘッダーをすべて持っているメッセージだけです。 + +- `EndpointAddress` にある URI + +- で指定された `EndpointAddress` にある残りのエンドポイント パラメーター + +## 参照 + [データ転送とシリアル化](../../../../docs/framework/wcf/feature-details/data-transfer-and-serialization.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/finding-claims-in-a-claimset.md b/docs/framework/wcf/feature-details/finding-claims-in-a-claimset.md new file mode 100644 index 00000000000..e68d409fab2 --- /dev/null +++ b/docs/framework/wcf/feature-details/finding-claims-in-a-claimset.md @@ -0,0 +1,30 @@ +--- +title: "ClaimSet でのクレームの検索 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クレーム [WCF]" + - "クレーム [WCF], ClaimSet での検索" +ms.assetid: a76ce107-aeb3-47d0-bfa9-134c53664e20 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ClaimSet でのクレームの検索 +クレームに基づく承認を使用する場合に、特定の種類のクレームの の内容を調べることは、一般的なタスクです。特定のクレームが存在するかどうか、 を検査するには、 メソッドを使用します。このメソッドでは、 を直接繰り返すよりも優れたパフォーマンスが得られます。次の例は、この使用方法を示しています。`claimType` パラメーターと `claimRight` パラメーターには `null` を指定できます。その場合、パラメーターはすべてのクレームの種類および権限と一致します。 + +## 例 + [!code-csharp[c_FindClaimsPerf#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_findclaimsperf/cs/c_findclaimsperf.cs#2)] + [!code-vb[c_FindClaimsPerf#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_findclaimsperf/vb/c_findclaimsperf.vb#2)] + +## 参照 + [ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/flowing-transactions-into-and-out-of-workflow-services.md b/docs/framework/wcf/feature-details/flowing-transactions-into-and-out-of-workflow-services.md new file mode 100644 index 00000000000..473541eff2a --- /dev/null +++ b/docs/framework/wcf/feature-details/flowing-transactions-into-and-out-of-workflow-services.md @@ -0,0 +1,329 @@ +--- +title: "ワークフロー サービスへのトランザクションのフロー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 03ced70e-b540-4dd9-86c8-87f7bd61f609 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# ワークフロー サービスへのトランザクションのフロー +ワークフロー サービスとワークフロー クライアントはトランザクションに参加できます。サービス操作をアンビエント トランザクションの一部にするには、 アクティビティを アクティビティの中に配置します。 内の または アクティビティによる呼び出しが行われると、アンビエント トランザクション内でも呼び出しが行われます。ワークフロー クライアント アプリケーションでは、 アクティビティを使用してアンビエント トランザクションを作成し、そのアンビエント トランザクションを使用してサービス操作を呼び出すことができます。ここでは、トランザクションに参加するワークフロー サービスとワークフロー クライアントを作成する手順について説明します。 + +> [!WARNING] +> ワークフロー サービス インスタンスがトランザクション内に読み込まれて、ワークフローに アクティビティが含まれている場合、ワークフロー インスタンスはトランザクションがタイムアウトするまでハングします。 + +> [!IMPORTANT] +> を使用する場合は、 アクティビティ内のワークフローにすべての受信を配置することをお勧めします。 + +> [!IMPORTANT] +> を使用して、メッセージが不適切な順序で到着する場合、最初の順序を無視したメッセージを配信しようとするとワークフローは中止されます。ワークフローがアイドル状態である場合、ワークフローは常に一致する停止ポイントにあるようにする必要があります。これによって、ワークフローが中止された場合、前の永続性ポイントからワークフローを再開することができます。 + +### 共有ライブラリの作成 + +1. 新しい空の Visual Studio ソリューションを作成します。 + +2. `Common` という新しいクラス ライブラリ プロジェクトを追加します。次のアセンブリへの参照を追加します。 + + - System.Activities.dll + + - System.ServiceModel.dll + + - System.ServiceModel.Activities.dll + + - System.Transactions.dll + +3. `PrintTransactionInfo` という新しいクラスを `Common` プロジェクトに追加します。このクラスは の派生クラスで、 メソッドをオーバーロードします。 + + ``` + using System; + using System; + using System.Activities; + using System.Transactions; + + namespace Common + { + public class PrintTransactionInfo : NativeActivity + { + protected override void Execute(NativeActivityContext context) + { + RuntimeTransactionHandle rth = context.Properties.Find(typeof(RuntimeTransactionHandle).FullName) as RuntimeTransactionHandle; + + if (rth == null) + { + Console.WriteLine("There is no ambient RuntimeTransactionHandle"); + } + + Transaction t = rth.GetCurrentTransaction(context); + + if (t == null) + { + Console.WriteLine("There is no ambient transaction"); + } + else + { + Console.WriteLine("Transaction: {0} is {1}", t.TransactionInformation.DistributedIdentifier, t.TransactionInformation.Status); + } + } + } + + } + + ``` + + これは、アンビエント トランザクションに関する情報を表示するネイティブ アクティビティで、ここで使用するサービス ワークフローとクライアント ワークフローの両方で使用されます。ソリューションをビルドして、このアクティビティを **\[ツールボックス\]** の **\[Common\]** セクションで使用できるようにします。 + +### ワークフロー サービスの実装 + +1. `WorkflowService` という新しい [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ワークフロー サービスを `Common` プロジェクトに追加します。そのためには、`Common` プロジェクトを右クリックし、**\[追加\]**、**\[新しい項目\]** の順にクリックします。次に、**\[インストールされているテンプレート\]** で **\[ワークフロー\]** をクリックし、**\[WCF ワークフロー サービス\]** をクリックします。 + + ![ワークフロー サービスの追加](../../../../docs/framework/wcf/feature-details/media/addwfservice.JPG "AddWFService") + +2. 既定の `ReceiveRequest` アクティビティと `SendResponse` アクティビティを削除します。 + +3. アクティビティを `Sequential Service` アクティビティにドラッグ アンド ドロップします。次の例に示すように、Text プロパティを `"Workflow Service starting ..."` に設定します。 + + ![WriteLine アクティビティの追加](../../../../docs/framework/wcf/feature-details/media/addwriteline.JPG "AddWriteLine") + +4. アクティビティの後にドラッグ アンド ドロップします。 アクティビティは、**\[ツールボックス\]** の **\[メッセージング\]** セクションにあり、**Request** と **Body** の 2 つのセクションで構成されています。**Request** セクションには、 アクティビティが含まれます。**Body** セクションには、メッセージの受信後にトランザクション内で実行されるアクティビティが含まれます。 + + ![TransactedReceiveScope アクティビティの追加](../../../../docs/framework/wcf/feature-details/media/trs.JPG "TRS") + +5. アクティビティを選択し、**\[変数\]** をクリックします。次の変数を追加します。 + + ![TransactedReceiveScope への変数の追加](../../../../docs/framework/wcf/feature-details/media/trsvariables.JPG "TRSVariables") + + > [!NOTE] + > 既定で含まれているデータ変数は削除してかまいません。既存のハンドル変数を使用することもできます。 + +6. アクティビティを アクティビティの **Request** セクションにドラッグ アンド ドロップします。次のプロパティを設定します。 + + |プロパティ|値| + |-----------|-------| + |CanCreateInstance|True \(チェック ボックスをオンにする\)| + |OperationName|StartSample| + |ServiceContractName|ITransactionSample| + + ワークフローは次のようになります。 + + ![Receive アクティビティの追加](../../../../docs/framework/wcf/feature-details/media/serviceaddreceive.JPG "ServiceAddReceive") + +7. アクティビティの **\[定義...\]** リンクをクリックし、次の設定を行います。 + + ![Recieve アクティビティのメッセージ設定](../../../../docs/framework/wcf/feature-details/media/receivemessagesettings.JPG "ReceiveMessageSettings") + +8. アクティビティを の Body セクションにドラッグ アンド ドロップします。 アクティビティに 2 つの アクティビティをドラッグ アンド ドロップし、 プロパティを次の表のとおりに設定します。 + + |アクティビティ|値| + |-------------|-------| + |1 つ目の WriteLine|“Service: Receive Completed”| + |2 つ目の WriteLine|"Service: Received \= " \+ requestMessage| + + ワークフローは次のようになります。 + + ![WriteLine アクティビティの追加](../../../../docs/framework/wcf/feature-details/media/afteraddingwritelines.JPG "AfterAddingWriteLines") + +9. `PrintTransactionInfo` アクティビティを、 アクティビティの **Body** の 2 つ目の アクティビティの後にドラッグ アンド ドロップします。 + + ![PrintTransactionInfo の追加後](../../../../docs/framework/wcf/feature-details/media/afteraddingprinttransactioninfo.JPG "AfterAddingPrintTransactionInfo") + +10. アクティビティを `PrintTransactionInfo` アクティビティの後にドラッグ アンド ドロップし、次の表のとおりにプロパティを設定します。 + + |プロパティ|値| + |-----------|-------| + |To|replyMessage| + |Value|"Service: Sending reply."| + +11. アクティビティを アクティビティの後にドラッグ アンド ドロップし、 プロパティを "Service: Begin reply" に設定します。 + + ワークフローは次のようになります。 + + ![Assign および WriteLine の追加後](../../../../docs/framework/wcf/feature-details/media/afteraddingsbrwriteline.JPG "AfterAddingSBRWriteLine") + +12. アクティビティを右クリックして **\[SendReply の作成\]** をクリックし、最後の アクティビティの後に貼り付けます。`SendReplyToReceive` アクティビティの **\[定義...\]** リンクをクリックし、次の設定を行います。 + + ![応答メッセージの設定](../../../../docs/framework/wcf/feature-details/media/replymessagesettings.JPG "ReplyMessageSettings") + +13. アクティビティを `SendReplyToReceive` アクティビティの後にドラッグ アンド ドロップし、 プロパティを "Service: Reply sent" に設定します。 + +14. アクティビティをワークフローの末尾にドラッグ アンド ドロップし、 プロパティを "Service: Workflow ends, press ENTER to exit" に設定します。 + + 完成したサービス ワークフローは次のようになります。 + + ![完全なサービス ワークフロー](../../../../docs/framework/wcf/feature-details/media/servicecomplete.jpg "ServiceComplete") + +### ワークフロー クライアントの実装 + +1. `WorkflowClient` という新しい WCF ワークフロー アプリケーションを `Common` プロジェクトに追加します。そのためには、`Common` プロジェクトを右クリックし、**\[追加\]**、**\[新しい項目\]** の順にクリックします。次に、**\[インストールされているテンプレート\]** で **\[ワークフロー\]** をクリックし、**\[アクティビティ\]** をクリックします。 + + ![アクティビティ プロジェクトの追加](../../../../docs/framework/wcf/feature-details/media/addactivity.JPG "AddActivity") + +2. アクティビティをデザイン画面にドラッグ アンド ドロップします。 + +3. アクティビティを アクティビティにドラッグ アンド ドロップし、 プロパティを `"Client: Workflow starting"` に設定します。ワークフローは次のようになります。 + + ![WriteLine アクティビティを追加する](../../../../docs/framework/wcf/feature-details/media/clientaddwriteline.JPG "ClientAddWriteLine") + +4. アクティビティを アクティビティの後にドラッグ アンド ドロップします。 アクティビティを選択し、\[変数\] をクリックして次の変数を追加します。 + + ![TransactionScope への変数の追加](../../../../docs/framework/wcf/feature-details/media/tsvariables.JPG "TSVariables") + +5. アクティビティを アクティビティの Body セクションにドラッグ アンド ドロップします。 + +6. `PrintTransactionInfo` アクティビティを アクティビティにドラッグ アンド ドロップします。 + +7. アクティビティを `PrintTransactionInfo` アクティビティの後にドラッグ アンド ドロップし、 プロパティを "Client: Beginning Send" に設定します。ワークフローは次のようになります。 + + ![アクティビティの追加](../../../../docs/framework/wcf/feature-details/media/clientaddcbswriteline.JPG "ClientAddCBSWriteLine") + +8. アクティビティを アクティビティの後にドラッグ アンド ドロップし、次のプロパティを設定します。 + + |プロパティ|値| + |-----------|-------| + |EndpointConfigurationName|workflowServiceEndpoint| + |OperationName|StartSample| + |ServiceContractName|ITransactionSample| + + ワークフローは次のようになります。 + + ![Send アクティビティのプロパティの設定](../../../../docs/framework/wcf/feature-details/media/clientsendsettings.JPG "ClientSendSettings") + +9. **\[定義...\]** リンクをクリックし、次の設定を行います。 + + ![Send アクティビティのメッセージの設定](../../../../docs/framework/wcf/feature-details/media/sendmessagesettings.JPG "SendMessageSettings") + +10. アクティビティを右クリックし、**\[ReceiveReply の作成\]** をクリックします。 アクティビティが アクティビティの後に自動的に配置されます。 + +11. ReceiveReplyForSend アクティビティの \[定義\] リンクをクリックし、次の設定を行います。 + + ![ReceiveForSend メッセージの設定](../../../../docs/framework/wcf/feature-details/media/clientreplymessagesettings.JPG "ClientReplyMessageSettings") + +12. アクティビティを アクティビティと アクティビティの間にドラッグ アンド ドロップし、 プロパティを "Client: Send complete" に設定します。 + +13. アクティビティを アクティビティの後にドラッグ アンド ドロップし、 プロパティを "Client side: Reply received \= " \+ replyMessage に設定します。 + +14. `PrintTransactionInfo` アクティビティを アクティビティの後にドラッグ アンド ドロップします。 + +15. アクティビティをワークフローの末尾にドラッグ アンド ドロップし、 プロパティを "Client workflow ends" に設定します。完成したクライアント ワークフローは次の図のようになります。 + + ![完成したクライアント ワークフロー](../../../../docs/framework/wcf/feature-details/media/clientcompleteworkflow.jpg "ClientCompleteWorkflow") + +16. ソリューションをビルドします。 + +### サービス アプリケーションの作成 + +1. `Service` という新しいコンソール アプリケーション プロジェクトをソリューションに追加します。次のアセンブリへの参照を追加します。 + + 1. System.Activities.dll + + 2. System.ServiceModel.dll + + 3. System.ServiceModel.Activities.dll + +2. 生成された Program.cs ファイルを開き、次のコードを追加します。 + + ``` + static void Main() + { + Console.WriteLine("Building the server."); + using (WorkflowServiceHost host = new WorkflowServiceHost(new DeclarativeServiceWorkflow(), new Uri("net.tcp://localhost:8000/TransactedReceiveService/Declarative"))) + { + //Start the server + host.Open(); + Console.WriteLine("Service started."); + + Console.WriteLine(); + Console.ReadLine(); + //Shutdown + host.Close(); + }; + } + + ``` + +3. 次の app.config ファイルをプロジェクトに追加します。 + + ```xml + + + + + + + + + + + + + ``` + +### クライアント アプリケーションの作成 + +1. `Client` という新しいコンソール アプリケーション プロジェクトをソリューションに追加します。System.Activities.dll への参照を追加します。 + +2. program.cs ファイルを開き、次のコードを追加します。 + + ``` + class Program + { + + private static AutoResetEvent syncEvent = new AutoResetEvent(false); + + static void Main(string[] args) + { + //Build client + Console.WriteLine("Building the client."); + WorkflowApplication client = new WorkflowApplication(new DeclarativeClientWorkflow()); + client.Completed = Program.Completed; + client.Aborted = Program.Aborted; + client.OnUnhandledException = Program.OnUnhandledException; + + //Wait for service to start + Console.WriteLine("Press ENTER once service is started."); + Console.ReadLine(); + + //Start the client + Console.WriteLine("Starting the client."); + client.Run(); + syncEvent.WaitOne(); + + //Sample complete + Console.WriteLine(); + Console.WriteLine("Client complete. Press ENTER to exit."); + Console.ReadLine(); + } + + private static void Completed(WorkflowApplicationCompletedEventArgs e) + { + Program.syncEvent.Set(); + } + + private static void Aborted(WorkflowApplicationAbortedEventArgs e) + { + Console.WriteLine("Client Aborted: {0}", e.Reason); + Program.syncEvent.Set(); + } + + private static UnhandledExceptionAction OnUnhandledException(WorkflowApplicationUnhandledExceptionEventArgs e) + { + Console.WriteLine("Client had an unhandled exception: {0}", e.UnhandledException); + return UnhandledExceptionAction.Cancel; + } + } + + ``` + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [Windows Communication Foundation のトランザクションの概要](../../../../docs/framework/wcf/feature-details/transactions-overview.md) + [TransactedReceiveScope の使用](../../../../docs/framework/windows-workflow-foundation/samples/use-of-transactedreceivescope.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/forward-compatible-data-contracts.md b/docs/framework/wcf/feature-details/forward-compatible-data-contracts.md new file mode 100644 index 00000000000..b195ac5907f --- /dev/null +++ b/docs/framework/wcf/feature-details/forward-compatible-data-contracts.md @@ -0,0 +1,55 @@ +--- +title: "上位互換性のあるデータ コントラクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "データ コントラクト [WCF], 上位互換性" +ms.assetid: 413c9044-26f8-4ecb-968c-18495ea52cd9 +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# 上位互換性のあるデータ コントラクト +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のデータ コントラクト システムの特徴の 1 つは、コントラクトが互換性に影響のない形で時間の経過に応じて変化できる点にあります。つまり、古いバージョンのデータ コントラクトを使用するクライアントが同じデータ コントラクトの新しいバージョンのサービスと通信すること、または新しいバージョンのデータ コントラクトを使用するクライアントが同じデータ コントラクトの古いバージョンと通信することが可能です。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][ベスト プラクティス : データ コントラクトのバージョン管理](../../../../docs/framework/wcf/best-practices-data-contract-versioning.md). + + バージョン管理機能の大半は、既存のデータ コントラクトの新しいバージョンが作成されたときに、必要に応じて適用できます。ただし、*"ラウンド トリップ"* というバージョン管理機能は、正しく動作するように最初のバージョンから型に組み込んでおく必要があります。 + +## ラウンド トリップ + ラウンド トリップは、データ コントラクトの新しいバージョンから古いバージョンにデータが渡され、新しいバージョンに戻されるときに発生します。ラウンド トリップでは、データの損失がないことが保証されます。ラウンド トリップを有効にすると、データ コントラクト バージョン管理モデルによってサポートされる将来の変更に関して、型の上位互換性が保たれます。 + + 特定の型のラウンド トリップを有効にするには、この型に インターフェイスを実装する必要があります。このインターフェイスには、\( 型を返す\) プロパティが含まれます。このプロパティにより、現在のバージョンでは未知の、今後使用されるデータ コントラクトの任意のデータが格納されます。 + +### 例 + 次のデータ コントラクトは、将来の変更に対して上位互換性がありません。 + + [!code-csharp[C_DataContract#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontract/cs/source.cs#7)] + [!code-vb[C_DataContract#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontract/vb/source.vb#7)] + + 将来の変更 \(たとえば、"phoneNumber" という名前の新しいデータ メンバーを追加する\) に対して互換性を確保するには、 インターフェイスを次のように実装します。 + + [!code-csharp[C_DataContract#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontract/cs/source.cs#8)] + [!code-vb[C_DataContract#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontract/vb/source.vb#8)] + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャが、元のデータ コントラクトに含まれないデータを検出すると、このデータはプロパティに格納されて維持されます。データは一時的に格納されるだけで、処理されることはありません。オブジェクトを発生元に返すと、元の \(未知の\) データも返されます。したがって、データが失われることなく、元のエンドポイントとの間でラウンド トリップ \(往復\) が行われます。ただし、発生元のエンドポイントでデータを処理する必要がある場合、この要求は満たされないため、このエンドポイントでは何らかの方法で変更を検出して対応する必要があることに注意してください。 + + 型にはパブリックなメソッドやプロパティはありません。そのため、 プロパティ内に格納されているデータに直接アクセスすることはできません。 + + ラウンド トリップ機能は、 コンストラクターで `ignoreExtensionDataObject` を `true` に設定する、または プロパティを `true` に設定することで無効にできます。この機能を無効にすると、デシリアライザーが プロパティを設定しないため、シリアライザーはプロパティの内容を出力しません。 + +## 参照 + + + [データ コントラクトのバージョン管理](../../../../docs/framework/wcf/feature-details/data-contract-versioning.md) + [ベスト プラクティス : データ コントラクトのバージョン管理](../../../../docs/framework/wcf/best-practices-data-contract-versioning.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/generating-a-wcf-client-from-service-metadata.md b/docs/framework/wcf/feature-details/generating-a-wcf-client-from-service-metadata.md new file mode 100644 index 00000000000..34b6c9e6b4b --- /dev/null +++ b/docs/framework/wcf/feature-details/generating-a-wcf-client-from-service-metadata.md @@ -0,0 +1,81 @@ +--- +title: "サービス メタデータからの WCF クライアントの生成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 27f8f545-cc44-412a-b104-617e0781b803 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# サービス メタデータからの WCF クライアントの生成 +ここでは、Svcutil.exe の各種のスイッチを使用して、メタデータ ドキュメントからクライアントを生成する方法を説明します。 + + メタデータ ドキュメントは、永続ストレージに保存したり、オンラインで取得したりできます。オンライン取得では、WS\-MetadataExchange プロトコルまたは DISCO \(Microsoft Discovery\) プロトコルに従います。Svcutil.exe は、メタデータを取得するために次のメタデータ要求を同時に発行します。 + +- 指定されたアドレスへの WS\-MetadataExchange \(MEX\) 要求 + +- 指定された `/mex` 付きアドレスへの MEX 要求 + +- 指定されたアドレスへの DISCO 要求 \(ASP.NET Web サービス の [DiscoveryClientProtocol クラス](http://go.microsoft.com/fwlink/?LinkId=94777) を使用\) + + Svcutil.exe は、Web サービス記述言語 \(WSDL: Web Services Description Language\) ファイル、またはサービスから受け取ったポリシー ファイルに基づいてクライアントを生成します。ユーザー プリンシパル名 \(UPN\) は、ユーザー名、"@"、完全修飾ドメイン名 \(FQDN\) を順に連結して生成されます。ただし、Active Directory に登録されているユーザーの場合、この形式は無効であり、ツールが生成する UPN を使用すると、Kerberos 認証でエラーが発生し、エラー メッセージ **\[ログインに失敗しました\]** が表示されます。この問題を解決するには、このツールが生成するクライアント ファイルを手動で修正する必要があります。 + +``` +svcutil.exe [/t:code] * | * | +``` + +## 型の参照と共有 + +|オプション|説明| +|-----------|--------| +|**\/reference:\**|指定されたアセンブリの型を参照します。クライアントの生成時に、このオプションを使用して、インポートするメタデータを表す型を含むアセンブリを指定します。

短縮形: `/r`| +|**\/excludeType:\**|参照されるコントラクト型から除外する完全修飾またはアセンブリ修飾の型名を指定します。

短縮形: `/et`| + +## シリアライザーの選択 + +|オプション|説明| +|-----------|--------| +|**\/serializer:Auto**|シリアライザーを自動的に選択します。これは、`DataContract` シリアライザーを使用します。この処理が失敗すると、`XmlSerializer` が使用されます。

短縮形: `/ser:Auto`| +|**\/serializer:DataContractSerializer**|シリアル化と逆シリアル化に `DataContract` シリアライザーを使用するデータ型を生成します。

短縮形: `/ser:DataContractSerializer`| +|**\/serializer:XmlSerializer**|シリアル化と逆シリアル化に `XmlSerializer` を使用するデータ型を生成します。

短縮形: `/ser:XmlSerializer`| +|**\/importXmlTypes**|`IXmlSerializable` 型として非 `DataContract` 型をインポートする `DataContract` シリアライザーを構成します。

短縮形: `/ixt`| +|**\/dataContractOnly**|`DataContract` 型に対してのみコードを生成します。`ServiceContract` 型が生成されます。

このオプションにはローカル メタデータ ファイルだけを指定する必要があります。

短縮形: `/dconly`| + +## クライアントの言語の選択 + +|オプション|説明| +|-----------|--------| +|**\/language:\**|コード生成に使用するプログラミング言語を指定します。Machine.config ファイルに登録された言語名か、 から継承するクラスの完全修飾名のいずれかを指定します。

値は、c\#、cs、csharp、vb、vbs、visualbasic、vbscript、javascript、c\+\+、mc、cpp になります。

既定値 : csharp

短縮形 : `/l`

[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[CodeDomProvider クラス](http://go.microsoft.com/fwlink/?LinkId=94778)」を参照してください。| + +## クライアントの名前空間の選択 + +|オプション|説明| +|-----------|--------| +|**\/namespace:\**|WSDL または XML スキーマの `targetNamespace` から共通言語ランタイム \(CLR: Common Language Runtime\) 名前空間へのマッピングを指定します。`targetNamespace` にワイルドカード \(\*\) を使用すると、マッピングを明示的に指定せずにすべての `targetNamespaces` がその CLR 名前空間にマップされます。

メッセージ コントラクト名が操作名と競合しないようにするには、型参照を 2 つのコロン `::` で修飾するか、名前を一意にします。

既定 : `DataContracts` のスキーマ ドキュメントのターゲット名前空間から派生します。既定の名前空間は、生成される他のすべての型に使用されます。

短縮形: `/n`| + +## データ バインディングの選択 + +|オプション|説明| +|-----------|--------| +|**\/enableDataBinding**|データ バインディングを有効にするために、すべての `DataContract` 型に インターフェイスを実装します。

短縮形: `/edb`| + +## 構成ファイルの生成 + +|オプション|説明| +|-----------|--------| +|**\/config:\**|生成される構成ファイルの名前を指定します。

既定値: output.config| +|**\/mergeConfig**|既存のファイルを上書きする代わりに、生成される構成ファイルを既存のファイルにマージします。| +|**\/noConfig**|構成ファイルを生成しません。| + +## 参照 + [メタデータを使用する](../../../../docs/framework/wcf/feature-details/using-metadata.md) + [メタデータ アーキテクチャの概要](../../../../docs/framework/wcf/feature-details/metadata-architecture-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/grouping-queued-messages-in-a-session.md b/docs/framework/wcf/feature-details/grouping-queued-messages-in-a-session.md new file mode 100644 index 00000000000..349542f155f --- /dev/null +++ b/docs/framework/wcf/feature-details/grouping-queued-messages-in-a-session.md @@ -0,0 +1,97 @@ +--- +title: "セッションでキューに置かれたメッセージのグループ化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "キュー [WCF]。 メッセージをグループ化" +ms.assetid: 63b23b36-261f-4c37-99a2-cc323cd72a1a +caps.latest.revision: 30 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 30 +--- +# セッションでキューに置かれたメッセージのグループ化 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、単一の受信側アプリケーションで処理できるよう、一連の関連メッセージをグループ化するセッションが用意されています。 セッションに含まれるメッセージは、同じトランザクションに含まれる必要があります。 すべてのメッセージが同じトランザクションに含まれるため、1 つのメッセージの処理が失敗すると、セッション全体がロールバックされます。 各セッションは、配信不能キューや有害キューに関してよく似た動作をします。 キューに置かれたバインディングに設定される有効期間 (TTL: Time To Live) プロパティがセッションに構成されている場合は、セッション全体に適用されます。 したがって、TTL が切れる前にセッション内の一部のメッセージが送信された場合は、セッション全体が配信不能キューに配置されます。 同様に、アプリケーション キューからアプリケーションにセッション内のメッセージを送信できなかった場合は、セッション全体が有害キューに配置されます (有害キューを使用できる場合)。 + +## メッセージのグループ化の例 + メッセージのグループ化が役立つ&1; つの例は、注文処理アプリケーションを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスとして実装する場合です。 たとえば、クライアントがこのアプリケーションに多数の項目を含む注文を送信するとします。 このクライアントは、項目ごとにサービスを呼び出すため、個別のメッセージが送信されることになります。 このため、最初の項目はサーバー A で受信され、2 番目の項目はサーバー B で受信される可能性があります。 項目が追加されるたびに、この項目を処理するサーバーは適切な注文を見つけて項目を追加する必要があるため、効率が非常に悪くなります。 すべての要求を&1; 台のサーバーのみで処理する場合でも、現在処理中のすべての注文をこのサーバーによって常に把握し、新しい項目がどの注文に属するものなのかを判別する必要があるため、同様の非効率が生じます。 単一の注文に属するすべての要求をグループ化すると、このようなアプリケーションの実装は大幅に簡素化されます。 1 つの注文に属するすべての項目が&1; セッションとしてクライアント アプリケーションから送信されるため、サービスは注文を処理するときにセッション全体を&1; 回で処理できます。 \ + +## 手順 + +#### セッションを使用するようにサービス コントラクトを設定するには + +1. セッションを必要とするサービス コントラクトを定義します。 そのためには、 属性し、値を指定します。 + + ``` + SessionMode=SessionMode.Required + ``` + +2. これらのメソッドは何も返さないため、コントラクト内の操作を一方向としてマークします。 これは、 属性し、値を指定します。 + + ``` + [OperationContract(IsOneWay = true)] + ``` + +3. サービス コントラクトを実装し、`InstanceContextMode` に `PerSession` を指定します。 これにより、セッションごとに&1; 回だけサービスがインスタンス化されます。 + + ``` + [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)] + ``` + +4. 各サービス操作には、トランザクションが必要になります。 これを指定する、 属性です。 トランザクションを完了する操作では、`TransactionAutoComplete` を `true` に設定する必要があります。 + + ``` + [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)] + ``` + +5. システム指定の `NetProfileMsmqBinding` バインディングを使用するエンドポイントを構成します。 + +6. トランザクション キューを使用して作成します。 代わりに、MSMQ (メッセージ キュー) または MMC を使用してキューを作成することもできます。 この場合、トランザクション キューを作成します。 + +7. 使用して、サービスのサービス ホストを作成します。 + +8. サービス ホストを開いてサービスを使用できるようにします。 + +9. サービス ホストを閉じます。 + +#### クライアントを設定するには + +1. トランザクションのスコープを作成してトランザクション キューに書き込みます。 + +2. 作成、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]クライアントを使用して、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)ツールです。 + +3. 注文を行います。 + +4. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを閉じます。 + +## 例 + +### 説明 + 次の例では、`IProcessOrder` サービス、およびこのサービスを使用するクライアントのコードを示します。 このコードは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が、キューに置かれたセッションを使用して動作をグループ化するしくみを示しています。 + +### サービスのコード + [!code-csharp[S_Msmq_Session#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_session/cs/service.cs#1)] + [!code-vb[S_Msmq_Session#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_session/vb/service.vb#1)] + + + +### クライアントのコード + [!code-csharp[S_Msmq_Session#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_session/cs/client.cs#3)] + [!code-vb[S_Msmq_Session#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_session/vb/client.vb#3)] + + + +## 関連項目 + [セッションとキュー](../../../../docs/framework/wcf/samples/sessions-and-queues.md) + [キューの概要](../../../../docs/framework/wcf/feature-details/queues-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/hosting-in-a-managed-application.md b/docs/framework/wcf/feature-details/hosting-in-a-managed-application.md new file mode 100644 index 00000000000..fb5f245a6ac --- /dev/null +++ b/docs/framework/wcf/feature-details/hosting-in-a-managed-application.md @@ -0,0 +1,36 @@ +--- +title: "マネージ アプリケーションのホスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: af70132d-e9e1-4f32-b20f-f0014629758a +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# マネージ アプリケーションのホスト +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスは、任意の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] アプリケーションでホストできます。 自己ホスト型サービスは、展開を要するインフラストラクチャが最も少ないので、最も柔軟なホスト オプションです。 ただし、マネージ アプリケーションは、インターネット インフォメーション サービス \(IIS\) や Windows サービスなど、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の他のホスト オプションが備えている高度なホスト機能と管理機能を提供しないので、堅牢さに最も乏しいホスト オプションでもあります。 + + 自己ホスト型サービスを作成するには、メッセージをリッスンするサービスを開始する のインスタンスを作成して開きます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : マネージ アプリケーションで WCF サービスをホストする](../../../../docs/framework/wcf/how-to-host-a-wcf-service-in-a-managed-application.md)。 + + コントラクトの定義方法、コントラクトの実装方法、およびマネージ アプリケーション内部にサービスをホストする方法の完全な例については、「[チュートリアル入門](../../../../docs/framework/wcf/getting-started-tutorial.md)」および「[自己ホスト](../../../../docs/framework/wcf/samples/self-host.md)」を参照してください。 + + 以下に、このホスト オプションを使用する一般的なシナリオについて説明します。 + +## コンソール アプリケーション + 自己ホストによって可能になる一般的なシナリオは、コンソール アプリケーション内部で実行する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスです。 コンソール アプリケーション内部の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストすることは、一般的にサービスの開発フェーズで有用です。 コンソール アプリケーションにより、アプリケーション内部で起こっている状況を見極めるための情報のデバッグやトレースが容易になり、新しい場所にアプリケーションをコピーして移動することも簡単に行うことができます。 + +## リッチ クライアント アプリケーション + 自己ホストによって可能になるもう 1 つの一般的なシナリオは、リッチ クライアント アプリケーションです。これには、[!INCLUDE[avalon1](../../../../includes/avalon1-md.md)] または Windows フォーム \(WinForms\) に基づいて作成されたリッチ クライアント アプリケーションなどがあります。 このホスト オプションを使用すると、[!INCLUDE[avalon2](../../../../includes/avalon2-md.md)] や WinForms アプリケーションなど、外部と通信を行うリッチ クライアント アプリケーションの作成も容易になります。 たとえば、ユーザー インターフェイスに [!INCLUDE[avalon2](../../../../includes/avalon2-md.md)] を使用しながら、他のクライアントからの接続を許容して情報を共有するために [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストするピア ツー ピア コラボレーションのクライアントなどです。 + +## 参照 + [ホスティング サービス](../../../../docs/framework/wcf/hosting-services.md) + [チュートリアル入門](../../../../docs/framework/wcf/getting-started-tutorial.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/hosting-in-a-windows-service-application.md b/docs/framework/wcf/feature-details/hosting-in-a-windows-service-application.md new file mode 100644 index 00000000000..880e6d82edd --- /dev/null +++ b/docs/framework/wcf/feature-details/hosting-in-a-windows-service-application.md @@ -0,0 +1,52 @@ +--- +title: "Windows サービス アプリケーションのホスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f4199998-27f3-4dd9-aee4-0a4addfa9f24 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# Windows サービス アプリケーションのホスト +Windows サービス \(従来 Windows NT サービスと呼ばれていたもの\) が提供するプロセス モデルが特に適しているのは、長い期間にわたって動作し続ける必要があり、どのような形式でもユーザー インターフェイスを表示することのないアプリケーションです。 Windows サービス アプリケーションのプロセスの有効期間を管理するのは、サービス コントロール マネージャー \(SCM\) です。SCM を使用して、Windows サービス アプリケーションを起動、停止、および一時停止できます。 Windows サービスのプロセスは、コンピューターの起動時に自動的に起動されるように構成できるので、常時稼働するアプリケーションのホスティング環境として適しています。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)] Windows サービス アプリケーション、「[Windows サービス アプリケーション](http://go.microsoft.com/fwlink/?LinkId=89450)」を参照してください。 + + 長い期間にわたって動作し続ける [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをホストするアプリケーションは、さまざまな点で Windows サービスに似ています。 中でも顕著な類似点は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは長期間動作し続けるサーバー側実行可能ファイルであり、画面上でユーザーと直接対話することがないので、ユーザー インターフェイスを実装する必要がない、ということです。 したがって、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを Windows サービス アプリケーション上でホストするやり方も、頑健で長期間動作し続ける [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションの構築方法として選択肢となります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を開発する際には、多くの場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションを Windows サービス上でホストするか、それとも Internet Information Services \(IIS\) や Windows Process Activation Service \(WAS\) のホスティング環境を使うか、決定しなければなりません。 次のような場合、Windows サービス上でホストする方法を使用できないか検討してください。 + +- アプリケーションを明示的にアクティブ化する必要がある場合。 たとえば、サーバー起動時に自動的にアプリケーションも起動しなければならず、最初に届いたメッセージに応答して動的に起動するのでは困るような場合です。 + +- アプリケーションをホストするプロセスが、起動されたらそのまま動作し続けなければならない場合。 一度起動した Windows サービスのプロセスは、サーバー管理者がサービス コントロール マネージャーで明示的にシャットダウンしない限り、そのまま動作し続けます。 IIS や WAS 上でホストするアプリケーションは、動的に起動および停止して、システム リソースを効率よく使うことができます。 しかし、ホストするプロセスの有効期間にわたって明示的に制御しなければならない場合、IIS や WAS ではなく Windows サービスを使う必要があります。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを Windows Server 2003 上で実行する必要があり、HTTP 以外のトランスポート層プロトコルを使う場合。 Windows Server 2003 では、[!INCLUDE[iis601](../../../../includes/iis601-md.md)] ホスティング環境は HTTP 通信しかできないようになっています。 Windows サービス アプリケーションにはこのような制限がなく、net.tcp、net.pipe、net.msmq など、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が対応しているトランスポート層プロトコルはどれでも使用できます。 + +### Windows サービス アプリケーションの内部で WCF をホストするには + +1. Windows サービス アプリケーションを作成します。 Windows サービス アプリケーションは、 名前空間のクラスを使用して、マネージ コードとして記述することができます。 このアプリケーションには、 から派生したクラスを 1 つ含める必要があります。 + +2. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの有効期間を、Windows サービス アプリケーションの有効期間とリンクさせます。 通常、Windows サービス アプリケーションでホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、ホストする側のサービスの起動時にアクティブになり、停止時にメッセージの監視をやめ、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスにエラーが生じた場合はホストする側のプロセスをシャットダウンするようにします。 これは次のようにして実装します。 + + - [OnStart\(String\ をオーバーライドして、 のインスタンスを必要な個数開くようにします。 単一の Windows サービス アプリケーションで、一体となって開始および終了する複数の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストできます。 + + - をオーバーライドして、[OnStart\(String\ 時に起動された [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが稼働する の、 を呼び出します。 + + - イベントを定期受信し、エラー時には、 クラスを使用して Windows サービス アプリケーションをシャットダウンします。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストする Windows サービス アプリケーションも、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使わない Windows サービス アプリケーションと同様に展開および管理されます。 + +## 参照 + + [チュートリアル: コンポーネント デザイナによる Windows サービス アプリケーションの作成](http://go.microsoft.com/fwlink/?LinkId=94875) + [方法 : マネージ Windows サービスで WCF サービスをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-a-managed-windows-service.md) + [Windows サービス ホスト](../../../../docs/framework/wcf/samples/windows-service-host.md) + [サービス アプリケーションのプログラミング アーキテクチャ](http://go.microsoft.com/fwlink/?LinkId=94876) + [Windows Server AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/hosting-in-internet-information-services.md b/docs/framework/wcf/feature-details/hosting-in-internet-information-services.md new file mode 100644 index 00000000000..432d3aada47 --- /dev/null +++ b/docs/framework/wcf/feature-details/hosting-in-internet-information-services.md @@ -0,0 +1,72 @@ +--- +title: "インターネット インフォメーション サービスでのホスティング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ホスティング サービス [WCF], IIS" +ms.assetid: ddae14e8-143c-442d-b660-2046809b2d43 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# インターネット インフォメーション サービスでのホスティング +インターネット インフォメーション サービス \(IIS\) アプリケーションの中に [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをホストする 1 つのオプションがあります。 このホスティング モデルは、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] や ASP.NET Web サービス \(ASMX\) が使用するモデルと似ています。 + +## IIS バージョン + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] をホストできるオペレーティング システムと IIS バージョンの組み合わせは次のとおりです。 + +- [!INCLUDE[wxpsp2](../../../../includes/wxpsp2-md.md)] 上で IIS 5.1 を使用。 この環境は、後で [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] などのサーバー オペレーティング システムに展開される、IIS ホスト型アプリケーションの設計と開発に役立ちます。 + +- [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] に対する [!INCLUDE[iis601](../../../../includes/iis601-md.md)]。 [!INCLUDE[iis601](../../../../includes/iis601-md.md)] は、スケーラビリティと信頼性を向上し、アプリケーションの分離を実現する高度なプロセス モデルを提供します。 この環境は、HTTP 通信のみを使用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの本運用展開に適しています。 + +- [!INCLUDE[wv](../../../../includes/wv-md.md)] および [!INCLUDE[lserver](../../../../includes/lserver-md.md)] 上で IIS 7.0 を使用。 IIS 7.0 は、[!INCLUDE[iis601](../../../../includes/iis601-md.md)] と同じ高度なプロセス モデルを提供しますが、Windows プロセス アクティブ化サービス \(WAS\) を使用して、HTTP 以外のプロトコル経由でのアクティブ化とネットワーク通信を可能にします。 この環境は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされる任意のネットワーク プロトコル \(HTTP、net.tcp、net.pipe、net.msmq など\) で通信を行う [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの開発に適しています。 WAS [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows プロセス アクティブ化サービスでのホスティング](../../../../docs/framework/wcf/feature-details/hosting-in-windows-process-activation-service.md)」を参照してください。 + +- [Windows Server AppFabric](http://go.microsoft.com/fwlink/?LinkId=196496) は、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] および Windows Process Activation Service \(WAS\) と連携して、NET4 WCF および WF のサービスのための充実したアプリケーションのホスト環境を提供します。 この利点には、プロセス ライフサイクル管理、プロセス リサイクル、共有ホスティング、迅速な障害保護、プロセスの孤立化、オンデマンド アクティブ化、状態監視などがあります。 詳細については、「[AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=196494)」および「[AppFabric ホスティングの概念](http://go.microsoft.com/fwlink/?LinkId=196495)」を参照してください。 + +## IIS ホスティングの利点 + IIS で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホスティングすることには、いくつかの利点があります。 + +- IIS でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アプリケーションや ASMX などの他の種類の IIS アプリケーションと同じように展開、管理されます。 + +- IIS はプロセスのアクティブ化、状態管理、リサイクル機能を提供し、ホストされるアプリケーションの信頼性を向上します。 + +- [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] と同様に、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] でホストされた [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 共有ホスティング モデルを利用できます。このモデルでは、共通のワーカー プロセス内に複数のアプリケーションが存在し、サーバー密度とスケーラビリティが向上します。 + +- IIS でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、[!INCLUDE[vstecasplong](../../../../includes/vstecasplong-md.md)] と同じ動的なコンパイル モデルを使用します。これにより、ホストされるサービスの開発と展開が簡素化されます。 + + IIS で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストすることを決定する場合、IIS 5.1 と [!INCLUDE[iis601](../../../../includes/iis601-md.md)] は HTTP 通信のみに限定されることに注意することが重要です。 ホスト環境の選択[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ホスティング サービス](../../../../docs/framework/wcf/hosting-services.md)」を参照してください。 + +## IIS にホストされた WCF サービスの展開 + IIS でホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの開発と展開を行うには、次のタスクを実行します。 + +- IIS、ASP.NET、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]、および [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] HTTP アクティブ化コンポーネントが正しくインストールおよび登録されていることを確認します。 + +- 新しい IIS アプリケーションを作成するか、既存の [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アプリケーションを再利用します。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス用の .svc ファイルを作成します。 + +- IIS アプリケーションにサービス実装を展開します。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを構成します。 + + 各タスクの説明については、「[インターネット インフォメーション サービスでホストされる WCF サービスの配置](../../../../docs/framework/wcf/feature-details/deploying-an-internet-information-services-hosted-wcf-service.md)」を参照してください。 + +## WCF サービスと ASP.NET + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] とサイド バイ サイドでホストするか、または [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 互換モードでホストできます。この互換モードでは、サービスは [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web アプリケーション プラットフォームが提供する機能を最大限に活用できます。 これらの機能の詳細については、「[WCF サービスと ASP.NET](../../../../docs/framework/wcf/feature-details/wcf-services-and-aspnet.md)」を参照してください。 + +## 参照 + [ServiceHostFactory を使用したホストの拡張](../../../../docs/framework/wcf/extending/extending-hosting-using-servicehostfactory.md) + [インターネット インフォメーション サービスでホストされる WCF サービスの配置](../../../../docs/framework/wcf/feature-details/deploying-an-internet-information-services-hosted-wcf-service.md) + [WCF サービスと ASP.NET](../../../../docs/framework/wcf/feature-details/wcf-services-and-aspnet.md) + [インターネット インフォメーション サービス ホスティングのベスト プラクティス](../../../../docs/framework/wcf/feature-details/internet-information-services-hosting-best-practices.md) + [Windows Communication Foundation での Internet Information Services 7.0 の構成](../../../../docs/framework/wcf/feature-details/configuring-iis-for-wcf.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/hosting-in-windows-process-activation-service.md b/docs/framework/wcf/feature-details/hosting-in-windows-process-activation-service.md new file mode 100644 index 00000000000..ede7ec162db --- /dev/null +++ b/docs/framework/wcf/feature-details/hosting-in-windows-process-activation-service.md @@ -0,0 +1,66 @@ +--- +title: "Windows プロセス アクティブ化サービスでのホスティング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ホスティング サービス [WCF], WAS" +ms.assetid: d2b9d226-15b7-41fc-8c9a-cb651ac20ecd +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# Windows プロセス アクティブ化サービスでのホスティング +Windows プロセス アクティブ化サービス \(WAS\) は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをホストするアプリケーションが含まれるワーカー プロセスのアクティベーションと有効期間を管理します。 WAS プロセス モデルは HTTP の依存関係を取り除くことにより、HTTP サーバーの [!INCLUDE[iis601](../../../../includes/iis601-md.md)] プロセス モデルを一般化します。 これにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、メッセージ ベースのアクティベーションがサポートされ、特定のコンピューター上で多数のアプリケーションをホストできるホスト環境で、Net.TCP などの HTTP プロトコルと非 HTTP プロトコルの両方を使用できるようになります。 + + WAS ホスト環境で実行される [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを構築する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : WAS で WCF サービスをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-was.md)」を参照してください。 + + WAS プロセスモデルは、信頼性が高く管理も容易でリソースを効果的に使用する方法でアプリケーションのホストを実現するいくつかの機能を提供します。 + +- HTTP と非 HTTP ネットワーク プロトコルを使用して到着する作業アイテムに応答して、アプリケーションやワーカー プロセス アプリケーションを動的に起動、停止する、メッセージに基づくアクティベーション。 + +- 実行中のアプリケーションの状態を維持するための、信頼性の高いアプリケーションとワーカー プロセスのリサイクル。 + +- 集中化されたアプリケーション設定と管理。 + +- 完全な IIS インストールの配置スペースを必要とせずに、アプリケーションで IIS プロセス モデルを利用可能。 + + WAS 機能[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[IIS 7.0 Beta: IIS 7.0 Web Administration](../../../../docs/framework/wcf/feature-details/hosting-in-windows-process-activation-service.md)」を参照してください。 + + [Windows Server AppFabric](http://go.microsoft.com/fwlink/?LinkId=196496) は、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] および Windows Process Activation Service \(WAS\) と連携して、NET4 WCF および WF のサービスのための充実したアプリケーションのホスト環境を提供します。 この利点には、プロセス ライフサイクル管理、プロセス リサイクル、共有ホスティング、迅速な障害保護、プロセスの孤立化、オンデマンド アクティブ化、状態監視などがあります。 詳細については、「[AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=196494)」および「[AppFabric ホスティングの概念](http://go.microsoft.com/fwlink/?LinkId=196495)」を参照してください。 + +## WAS アドレス指定モデルの要素 + アプリケーションには、サーバーによって有効期間と実行環境が管理されているコード単位である URI \(Uniform Resource Identifier\) アドレスがあります。 1 つの WAS サーバー インスタンスを多数の異なるアプリケーションでホームとすることができます。 サーバーでアプリケーションは*サイト*と呼ばれるグループに編成されます。 サイト内でアプリケーションは階層で整理されます。この階層は URI の構造に反映されてアプリケーションの外部アドレスとして提供されます。 + + アプリケーション アドレスは、ベース URI プレフィックスとアプリケーション固有の相対アドレス \(パス\) の 2 つの部分に分かれます。この 2 つの部分が結合されアプリケーションの外部アドレスが提供されます。 ベース URI プレフィックスは、サイト バインドで構築され、サイト内のすべてのアプリケーションで使用されます。 次に、アプリケーション固有のパス フラグメント \(“\/applicationOne” など\) が取得され、ベース URI プレフィックス \(“net.tcp:\/\/localhost” など\) に追加されてアプリケーション アドレスが構築されます。これでアプリケーションの完全 URI になります。 + + HTTP と 非 HTTP サイト バインディングの両方の WAS サイト用に考えられるアドレス シナリオを次の表に示します。 + +|シナリオ|サイト バインディング|アプリケーション パス|ベース アプリケーション URI| +|----------|-----------------|-----------------|----------------------| +|HTTP のみ|http: \*:80:\*|\/appTwo|http:\/\/localhost\/appTwo\/| +|HTTP と 非 HTTP の混在|http: \*:80:\*

net.tcp: 808:\*|\/appTwo|http:\/\/localhost\/appTwo\/
net.tcp:\/\/localhost\/appTwo\/| +|非 HTTP のみ|net.pipe: \*|\/appThree|net.pipe:\/\/appThree\/| + + アプリケーション内のサービスとリソースにもアドレスを指定できます。 アプリケーション内では、アプリケーション リソースにベース アプリケーション パスに対する相対アドレスが指定されます。 たとえば、コンピューター名 contoso.com のサイトに HTTP と Net.TCP プロトコルの両方のサイト バインドがあるとします。 さらに、そのサイトには 1 つのアプリケーションが \/Billing に格納されており、GetOrders.svc でサービスを公開しているとします。 このとき、GetOrders.svc サービスで SecureEndpoint の相対アドレスを持つエンドポイントが公開されている場合、サービスのエンドポイントは次の 2 つの URI で公開されることになります。 + + http:\/\/contoso.com\/Billing\/GetOrders.svc\/SecureEndpoint + net.tcp:\/\/contoso.com\/Billing\/GetOrders.svc\/SecureEndpoint + +## WAS ランタイム + アプリケーションは、アドレス指定と管理の目的でサイトに編成されます。 実行時にもアプリケーションはアプリケーション プールにグループ化されます。 アプリケーション プールには、多数の異なるサイトからの多数の異なるアプリケーションを格納できます。 アプリケーション プール内のすべてのアプリケーションで、一連の共通の実行時特性を共有します。 たとえば、すべてのアプリケーションは同じバージョンの共通言語ランタイム \(CLR\) 下で実行され、またすべてのアプリケーションで共通のプロセス ID を共有します。 各アプリケーション プールはワーカー プロセス \(w3wp.exe\) のインスタンスに対応します。 共有アプリケーション プール内で実行される各マネージ アプリケーションは、CLR AppDomain により他のアプリケーションから分離されます。 + +## 参照 + [WAS アクティベーション アーキテクチャ](../../../../docs/framework/wcf/feature-details/was-activation-architecture.md) + [WCF で使用するための WAS を設定する](../../../../docs/framework/wcf/feature-details/configuring-the-wpa--service-for-use-with-wcf.md) + [方法 : WCF アクティブ化コンポーネントをインストールして設定する](../../../../docs/framework/wcf/feature-details/how-to-install-and-configure-wcf-activation-components.md) + [方法 : WAS で WCF サービスをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-was.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/hosting-workflow-services-overview.md b/docs/framework/wcf/feature-details/hosting-workflow-services-overview.md new file mode 100644 index 00000000000..88e28b7f0bb --- /dev/null +++ b/docs/framework/wcf/feature-details/hosting-workflow-services-overview.md @@ -0,0 +1,56 @@ +--- +title: "ワークフロー サービスのホストの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 19f3704f-06bf-4eeb-8724-5224e02d7ead +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# ワークフロー サービスのホストの概要 +ワークフロー サービスを実行するには、ホストされている必要があります。 は、複数のインスタンス、構成、および WCF メッセージングをサポートする標準ワークフロー ホストです \(ワークフローはホストされるためにメッセージングを使用する必要はありません\)。また、一連のサービス動作を介して永続性、追跡、およびインスタンス コントロールを統合します。WCF の と同様に、 は任意のマネージ .NET アプリケーションでの自己ホスト、または IIS\/WAS での Web ホスト \(.xamlx ファイルとして\) が可能です。このセクションのトピックでは、ワークフロー サービスをホストする方法について説明します。 + +## このセクションの内容 + [ワークフロー サービスのホスティング](../../../../docs/framework/wcf/feature-details/hosting-workflow-services.md) + ワークフロー サービスのホスティングについて説明します。 + + [ワークフロー サービス ホストの内部](../../../../docs/framework/wcf/feature-details/workflow-service-host-internals.md) + がどのように受信メッセージを処理するかについて説明します。 + + [ワークフロー サービス ホストの拡張機能](../../../../docs/framework/wcf/feature-details/workflow-service-host-extensibility.md) + ワークフロー サービス ホストの機能を拡張する方法について説明します。 + + [ワークフロー コントロール エンドポイント](../../../../docs/framework/wcf/feature-details/workflow-control-endpoint.md) + ワークフロー インスタンスを作成できるエンドポイントを定義する方法について説明します。 + + [方法 : IIS でサービス以外のワークフローをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-non-service-workflow-in-iis.md) + IIS のワークフロー サービスではないワークフローのホスティングについて説明します。 + + [方法 : Windows Server AppFabric を使用してワークフロー サービスをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-workflow-service-with-windows-server-app-fabric.md) + Windows Server AppFabric の既存のワークフロー サービスをホストする方法について説明します。 + + [WorkflowServiceHost の構成](../../../../docs/framework/wcf/feature-details/configuring-workflowservicehost.md) + 永続性、追跡、アイドル状態、および未処理の例外動作を制御する方法を説明します。 + +## 関連項目 + + + + + + + + + + +## 関連項目 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/hosting-workflow-services.md b/docs/framework/wcf/feature-details/hosting-workflow-services.md new file mode 100644 index 00000000000..cf19a7581c8 --- /dev/null +++ b/docs/framework/wcf/feature-details/hosting-workflow-services.md @@ -0,0 +1,66 @@ +--- +title: "ワークフロー サービスのホスティング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2d55217e-8697-4113-94ce-10b60863342e +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# ワークフロー サービスのホスティング +ワークフロー サービスが受信メッセージに応答するには、ワークフロー サービスがホストされている必要があります。ワークフロー サービスは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージング インフラストラクチャを使用するため、これと似た方法でホストされます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと同様に、ワークフロー サービスは、インターネット インフォメーション サービス \(IIS\) または Windows プロセス アクティブ化サービス \(WAS\) の下で、任意のマネージ アプリケーションでホストできます。また、ワークフロー サービスは Windows Server AppFabric でホストできます。Windows Server App Fabric [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows Server App Fabric のドキュメント](http://go.microsoft.com/fwlink/?LinkId=193037)」、「[AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=196494)」、および「[AppFabric ホスティングの概念](http://go.microsoft.com/fwlink/?LinkId=196495)」を参照してください。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストするためのさまざまな方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ホスティング サービス](../../../../docs/framework/wcf/hosting-services.md)」を参照してください。 + +## マネージ アプリケーションでのホスト + マネージ アプリケーションでワークフロー サービスをホストするには、 クラスを使用します。 コンストラクターにより、シングルトン ワークフロー サービス インスタンス、ワークフロー サービス定義、またはワークフロー メッセージング アクティビティを使用するアクティビティを指定できます。 の呼び出しによって、サービスが受信メッセージのリッスンを開始します。 + +## IIS または WAS の下でのホスト + IIS または WAS の下でワークフロー サービスをホストする場合は、仮想ディレクトリを作成し、サービスとその動作を定義するファイルをその仮想ディレクトリ内に配置します。IIS または WAS の下でワークフローをホストする場合は、いくつかの方法が考えられます。 + +- ワークフロー サービスを定義する .xamlx ファイルを、サービス動作、エンドポイント、およびその他の構成要素を指定する Web.config ファイルと共に、IIS\/WAS 仮想ディレクトリに配置します。 + +- ワークフロー サービスを定義する .xamlx ファイルを IIS\/WAS 仮想ディレクトリに配置します。この .xamlx ファイルで、公開するエンドポイントが指定されます。エンドポイントは、次の例に示すように、`WorkflowService.Endpoints` 要素で指定されます。 + + ``` + + + + + + + + + + + + ``` + + > [!NOTE] + > 動作は .xamlx ファイルで指定できないため、動作設定を指定するには Web.config を使用する必要があります。 + +- ワークフロー サービスを定義する .xamlx ファイルを IIS\/WAS 仮想ディレクトリに配置します。さらに、.svc ファイルを仮想ディレクトリに配置します。.svc ファイルでは、カスタム Web サービス ホスト ファクトリの指定、カスタム動作の適用、またはカスタムの場所からの構成の読み込みが可能です。 + +- WCF メッセージング アクティビティを使用するアクティビティを含むアセンブリを IIS\/WAS 仮想ディレクトリに配置します。 + + ワークフロー サービスを定義する .xamlx ファイルには、\<`Service`\> ルート要素、または から派生する型を含むルート要素が含まれている必要があります。[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] アクティビティ テンプレートを使用する場合は、.xamlx ファイルが作成されます。WCF ワークフロー サービス テンプレートを使用する場合は、.xamlx ファイルが作成されます。 + +## Windows Server AppFabric でのワークフロー サービスのホスティング + Windows Server AppFabric でのワークフロー サービスのホスティングは IIS\/WAS でのホスティングと同じ方法で行われます。唯一の違いは、Windows Server AppFabric がインストールされるということです。Windows Server AppFabric には、PowerShell コマンドと同様に、インターネット インフォメーション サービス マネージャーに追加されるツールが用意されています。これらのツールによって、ワークフロー サービスおよび WCF サービスの配置、管理、および追跡を簡略化することができます。.Windows Server AppFabric [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows Server AppFabric](http://go.microsoft.com/fwlink/?LinkId=193037)」を参照してください。 + +## カスタム アクティビティの参照 + カスタム アクティビティの参照は、\<`System.Web.Compilation`\> の下の \<`Assemblies`\> セクションに追加する必要があります。これにより、この参照がアプリケーション ドメインに読み込まれ、XAML デシリアライザーが型を見つけることができます。これらの設定をコンピューター上のすべてのアプリケーションに適用する必要がある場合は、アプリケーション レベルまたはルートの Web.config で設定できます。 + +## 配置 + 配置作業を容易にするために、Web 配置ツールが作成されています。このツールを使用すると、アプリケーションの IIS 6.0 および IIS 7.0 間での移行や、サーバー ファームの同期のほか、Web アプリケーションのパッケージ化、アーカイブ、および配置を実行できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][、MS 配置ツールを参照してください。](http://go.microsoft.com/fwlink/?LinkId=178690) + +## 参照 + [ワークフロー サービス ホストの内部](../../../../docs/framework/wcf/feature-details/workflow-service-host-internals.md) + [WorkflowServiceHost の構成](../../../../docs/framework/wcf/feature-details/configuring-workflowservicehost.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/hosting.md b/docs/framework/wcf/feature-details/hosting.md new file mode 100644 index 00000000000..e1f65e98560 --- /dev/null +++ b/docs/framework/wcf/feature-details/hosting.md @@ -0,0 +1,45 @@ +--- +title: "ホスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0820c7e5-0b50-4cde-80e7-74e346513002 +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# ホスト +このセクションのトピックでは、サービス ホスティングについて説明します。サービスは、インターネット インフォメーション サービス \(IIS\)、Windows プロセス アクティブ化サービス \(WAS\)、Windows Server AppFabric、Windows サービス、またはマネージ アプリケーションによってホストできます。マネージ アプリケーションによるホストは、一般に、*自己ホスト*と呼ばれます。 + + 信頼されていないホストからサービスや拡張機能を実行すると、セキュリティが損なわれるので注意してください。 + +## このセクションの内容 + [インターネット インフォメーション サービスでのホスティング](../../../../docs/framework/wcf/feature-details/hosting-in-internet-information-services.md) + インターネット インフォメーション サービスまたは [Windows Server AppFabric](http://go.microsoft.com/fwlink/?LinkId=196496) で [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをホストする方法について説明します。 + + [Windows プロセス アクティブ化サービスでのホスティング](../../../../docs/framework/wcf/feature-details/hosting-in-windows-process-activation-service.md) + Windows プロセス アクティブ化サービス \(WAS\) で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストする方法について説明します。 + + [Windows サービス アプリケーションのホスト](../../../../docs/framework/wcf/feature-details/hosting-in-a-windows-service-application.md) + Windows サービスで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] をホストする方法について説明します。 + + [マネージ アプリケーションのホスト](../../../../docs/framework/wcf/feature-details/hosting-in-a-managed-application.md) + マネージ アプリケーションで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] をホストする方法について説明します。 + + [IIS と WAS における構成ベースのアクティブ化](../../../../docs/framework/wcf/feature-details/configuration-based-activation-in-iis-and-was.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが、.svc ファイルを使用せずに、IIS または WAS でホストされるしくみについて説明します。 + + [複数の IIS サイト バインディングのサポート](../../../../docs/framework/wcf/feature-details/supporting-multiple-iis-site-bindings.md) + 1 つの Web サイト上で同じ URI スキームを使用してサービスの複数のベース アドレスを指定する方法について説明します。 + +## 参照 + [ホスティング サービス](../../../../docs/framework/wcf/hosting-services.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-the-wcf-syndication-object-model-maps-to-atom-and-rss.md b/docs/framework/wcf/feature-details/how-the-wcf-syndication-object-model-maps-to-atom-and-rss.md new file mode 100644 index 00000000000..6fe7d7ca325 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-the-wcf-syndication-object-model-maps-to-atom-and-rss.md @@ -0,0 +1,409 @@ +--- +title: "WCF 配信オブジェクト モデルを Atom や RSS に割り当てる方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0365eb37-98cc-4b13-80fb-f1e78847a748 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# WCF 配信オブジェクト モデルを Atom や RSS に割り当てる方法 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 配信サービスを開発する場合、次のクラスを使用するフィードや項目を作成します。 + +- + +- + +- + +- + +- + +- + +- + +- + + はフォーマッタが定義されている任意の配信フォーマットにシリアル化できます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、 および の 2 つのフォーマッタが付属しています。 + + RSS 2.0 仕様より Atom 1.0 仕様の方が、 および 周辺のオブジェクト モデルをより細かく調整しています。これは、Atom 1.0 が、あいまいな要素または RSS 2.0 仕様から省略された要素を定義する、より基本的な仕様であるためです。このため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 配信オブジェクト モデルにある多くの項目には、RSS 2.0 仕様の直接表現がありません。 および オブジェクトを RSS 2.0 にシリアル化する場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] により、Atom 固有のデータ要素を、Atom 仕様に準拠する名前空間で修飾された拡張要素にシリアル化できます。これは、 コンストラクターに渡すパラメーターで制御できます。 + + このトピックのコード例では、ここで定義される 2 つのメソッドのいずれかを使い、実際のシリアル化を行っています。 + + `SerializeFeed` は、配信フィードをシリアル化します。 + + [!code-csharp[SyndicationMapping#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#10)] + [!code-vb[SyndicationMapping#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#10)] + + `SerializeItem` は、配信項目をシリアル化します。 + + [!code-csharp[SyndicationMapping#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#11)] + [!code-vb[SyndicationMapping#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#11)] + +## SyndicationFeed + クラスを Atom 1.0 および RSS 2.0 にシリアル化するコード例を次に示します。 + + [!code-csharp[SyndicationMapping#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#0)] + [!code-vb[SyndicationMapping#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#0)] + + 次の XML は、 を Atom 1.0 にシリアル化する方法を示しています。 + +``` + + + My Feed Title + My Feed Description + FeedID + Copyright 2007 + 2007-08-29T13:57:17-07:00 + + http://server/image.jpg + Sample Code + + + ItemID + Item Title + Item Summary + 2007-08-29T00:00:00-07:00 + 2007-08-29T13:57:17-07:00 + + Jesper Aaberg + http://Jesper/Aaberg + Jesper@Aaberg.com + + + Lene Aaling + http://Lene/Aaling + Lene@Aaling.com + + + + Item Content + Copyright 2007 + + My Feed Title + My Feed Description + FeedID + Copyright 2007 + 2007-08-29T13:57:17-07:00 + + http://server/image.jpg + Sample Code + + + + +``` + + を RSS 2.0 にシリアル化する方法を次の XML に示します。 + +``` + + + + My Feed Title + http://myfeeduri/ + My Feed Description + EN-US + Copyright 2007 + Wed, 29 Aug 2007 13:57:17 -0700 + categoryName + Sample Code + + http://server/image.jpg + My Feed Title + http://myfeeduri/ + + FeedID + + ItemID + http://myitemuri/ + Jesper@Aaberg.com + categoryName + Item Title + Item Summary + My Feed Title + Wed, 29 Aug 2007 00:00:00 -0700 + 2007-08-29T13:57:17-07:00 + Copyright 2007 + Item Content + + Lene Aaling + http://Lene/Aaling + Lene@Aaling.com + + + + +``` + +## SyndicationItem + クラスを Atom 1.0 および RSS 2.0 にシリアル化するコード例を次に示します。 + + [!code-csharp[SyndicationMapping#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#1)] + [!code-vb[SyndicationMapping#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#1)] + + を Atom 1.0 にシリアル化する方法を次の XML に示します。 + +``` + + ItemID + Item Title + Item Summary + 2007-08-29T00:00:00-07:00 + 2007-08-29T14:07:09-07:00 + + Jesper Aaberg + http://Contoso/Aaberg + Jesper.Aaberg@contoso.com + + + Syed Abbas + http://Contoso/Abbas + Syed.Abbas@contoso.com + + + Lene Aaling + http://Contoso/Aaling + Lene.Aaling@contoso.com + + + Kim Abercrombie + http://Contoso/Abercrombie + Kim.Abercrombie@contoso.com + + + + + Item Content + Copyright 2007 + + My Feed Title + My Feed Description + + + +``` + + を RSS 2.0.0 にシリアル化する方法を次の XML に示します。 + +``` + + ItemID + http://myitemuri/ + + Jesper Aaberg + http://Jesper/Aaberg + Jesper@Aaberg.com + + + Syed Abbas + http://Contoso/Abbas + Syed.Abbas@contoso.com + + categoryName + categoryName + Item Title + Item Summary + My Feed Title + Wed, 29 Aug 2007 00:00:00 -0700 + 2007-08-29T14:07:09-07:00 + Copyright 2007 + Item Content + + Lene Aaling + http://Contoso/Aaling + Lene.Aaling@contoso.com + + + Kim Abercrombie + http://Contoso/Abercrombie + Kim.Abercrombie@contoso.com + + +``` + +## SyndicationPerson + クラスを Atom 1.0 および RSS 2.0 にシリアル化するコード例を次に示します。 + + [!code-csharp[SyndicationMapping#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#2)] + [!code-vb[SyndicationMapping#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#2)] + + を Atom 1.0 にシリアル化する方法を次の XML に示します。 + +``` + + Jesper Aaberg + http://Contoso/Aaberg + Jesper.Aaberg@contoso.com + + + Lene Aaling + http://Contoso/Aaling + Lene.Aaling@contoso.com + +``` + + `Authors` コレクションまたは `Contributors` コレクションに、それぞれ が 1 つのみ存在する場合に、 クラスを RSS 2.0 にシリアル化する方法を次の XML に示します。 + +``` +Jesper.Aaberg@contoso.com + + Lene Aaling + http://Contoso/Aaling + Lene.Aaling@contoso.com + +``` + + `Authors` コレクションまたは `Contributors` コレクションに、それぞれ が複数存在する場合に、 クラスを RSS 2.0 にシリアル化する方法を次の XML に示します。 + +``` + + Jesper Aaberg + http://Contoso/Aaberg + Jesper.Aaberg@contoso.com + + + Syed Abbas + http://Contoso/Abbas + Syed.Abbas@contoso.com + + + Lene Aaling + http://Contoso/Aaling + Lene.Aaling@contoso.com + + + Kim Abercrombie + http://Contoso/Abercrombie + Kim.Abercrombie@contoso.com + +``` + +## SyndicationLink + クラスを Atom 1.0 および RSS 2.0 にシリアル化するコード例を次に示します。 + + [!code-csharp[SyndicationMapping#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#3)] + [!code-vb[SyndicationMapping#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#3)] + + を Atom 1.0 にシリアル化する方法を次の XML に示します。 + + `` + + を RSS 2.0.0 にシリアル化する方法を次の XML に示します。 + + `` + +## SyndicationCategory + クラスを Atom 1.0 および RSS 2.0 にシリアル化するコード例を次に示します。 + + [!code-csharp[SyndicationMapping#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#4)] + [!code-vb[SyndicationMapping#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#4)] + + を Atom 1.0 にシリアル化する方法を次の XML に示します。 + + `` + + を RSS 2.0.0 にシリアル化する方法を次の XML に示します。 + + `categoryName` + +## TextSyndicationContent + が HTML コンテンツと共に作成される場合に クラスを Atom 1.0 および RSS 2.0 にシリアル化するコード例を次に示します。 + + [!code-csharp[SyndicationMapping#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#5)] + [!code-vb[SyndicationMapping#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#5)] + + HTML コンテンツ付きの クラスを Atom 1.0 にシリアル化する方法を次の XML に示します。 + + ` some html ` + + HTML コンテンツ付きの クラスを RSS 2.0 にシリアル化する方法を次の XML に示します。 + + ` some html ` + + がプレーンテキスト コンテンツと共に作成される場合に、 クラスを Atom 1.0 および RSS 2.0 にシリアル化するコード例を次に示します。 + + [!code-csharp[SyndicationMapping#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#6)] + [!code-vb[SyndicationMapping#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#6)] + + プレーンテキスト コンテンツ付きの クラスを Atom 1.0 にシリアル化する方法を次の XML に示します。 + + `Some Plain Text` + + プレーンテキスト コンテンツ付きの クラスを RSS 2.0 にシリアル化する方法を次の XML に示します。 + + `Some Plain Text` + + が XHTML コンテンツと共に作成される場合に、 クラスを Atom 1.0 および RSS 2.0 にシリアル化するコード例を次に示します。 + + [!code-csharp[SyndicationMapping#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#7)] + [!code-vb[SyndicationMapping#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#7)] + + XHTML コンテンツ付きの クラスを Atom 1.0 にシリアル化する方法を次の XML に示します。 + + `` + + ` some xhtml ` + + `` + + XHTML コンテンツ付きの クラスを RSS 2.0 にシリアル化する方法を次の XML に示します。 + + ` some xhtml ` + +## UrlSyndicationContent + クラスを Atom 1.0 および RSS 2.0 にシリアル化するコード例を次に示します。 + + [!code-csharp[SyndicationMapping#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#8)] + [!code-vb[SyndicationMapping#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#8)] + + クラスを Atom 1.0 にシリアル化する方法を次の XML に示します。 + + `` + + XHTML コンテンツ付きの クラスを RSS 2.0 にシリアル化する方法を次の XML に示します。 + + `` + + `` + +## XmlSyndicationContent + クラスを Atom 1.0 および RSS 2.0 にシリアル化するコード例を次に示します。 + + [!code-csharp[SyndicationMapping#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/syndicationmapping/cs/snippets.cs#9)] + [!code-vb[SyndicationMapping#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/syndicationmapping/vb/snippets.vb#9)] + + クラスを Atom 1.0 にシリアル化する方法を次の XML に示します。 + + `` + + `` + + `` + + XHTML コンテンツ付きの クラスを RSS 2.0 にシリアル化する方法を次の XML に示します。 + + `` + + `` + + `` + +## 参照 + [WCF 配信の概要](../../../../docs/framework/wcf/feature-details/wcf-syndication-overview.md) + [配信のアーキテクチャ](../../../../docs/framework/wcf/feature-details/architecture-of-syndication.md) + [方法 : 基本的な RSS フィードを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-rss-feed.md) + [方法 : 基本的な ATOM フィードを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-atom-feed.md) + [方法 : Atom および RSS の両方としてフィードを公開する](../../../../docs/framework/wcf/feature-details/how-to-expose-a-feed-as-both-atom-and-rss.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-access-a-service-from-a-workflow-application.md b/docs/framework/wcf/feature-details/how-to-access-a-service-from-a-workflow-application.md new file mode 100644 index 00000000000..851e562a5de --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-access-a-service-from-a-workflow-application.md @@ -0,0 +1,75 @@ +--- +title: "方法: ワークフロー アプリケーションからサービスにアクセスする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 925ef8ea-5550-4c9d-bb7b-209e20c280ad +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法: ワークフロー アプリケーションからサービスにアクセスする +このトピックでは、ワークフロー コンソール アプリケーションからワークフロー サービスを呼び出す方法について説明します。これを実行するには、「[方法: メッセージング アクティビティを使用してワークフロー サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-workflow-service-with-messaging-activities.md)」を完了している必要があります。このトピックでは、ワークフロー アプリケーションからワークフロー サービスを呼び出す方法について説明していますが、同じ方法を使用して、どのような [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスでもワークフロー アプリケーションから呼び出すことができます。 + +### ワークフロー コンソール アプリケーション プロジェクトの作成 + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を起動します。 + +2. 「[方法: メッセージング アクティビティを使用してワークフロー サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-workflow-service-with-messaging-activities.md)」で作成した MyWFService プロジェクトを読み込みます。 + +3. **ソリューション エクスプローラー**で **MyWFService** ソリューションを右クリックし、**\[追加\]** をクリックして、**\[新しいプロジェクト\]** をクリックします。**\[インストールされたテンプレート\]** から **\[ワークフロー\]** を選択し、プロジェクトの種類の一覧から **\[ワークフロー コンソール アプリケーション\]** を選択します。次の図に示すように、プロジェクトに MyWFClient という名前を付け、既定の場所を使用します。 + + ![[新しいプロジェクトの追加] ダイアログ](../../../../docs/framework/wcf/feature-details/media/addnewprojectdlg.JPG "AddNewProjectDlg") + + **\[OK\]** をクリックして **\[新しいプロジェクトの追加\]** ダイアログ ボックスを閉じます。 + +4. プロジェクトが作成されると、Workflow1.xaml ファイルがデザイナーで開かれます。**\[ツールボックス\]** タブが開かれていない場合は、これをクリックして開き、プッシュピンをクリックしてツールボックス ウィンドウを開いたままにします。 + +5. Ctrl キーを押しながら F5 キーを押して、サービスを起動します。以前と同様に、ASP.NET 開発サーバーが起動され、Internet Explorer に WCF ヘルプ ページが表示されます。このページの URI は、次の手順で使用する必要があるため、確認しておいてください。 + + ![WCF ヘルプ ページと URI を表示している IE](../../../../docs/framework/wcf/feature-details/media/iewcfhelppagewuri.JPG "IEWCFHelpPageWURI") + +6. **ソリューション エクスプローラー**で **MyWFClient** プロジェクトを右クリックし、**\[サービス参照の追加\]** をクリックします。**\[探索\]** ボタンをクリックして、サービスに使用できる現在のソリューションを検索します。\[サービス\] ボックスで、Service1.xamlx の横にある三角形をクリックします。Service1 の横にある三角形をクリックして、Service1 サービスによって実装されるコントラクトの一覧を表示します。**\[サービス\]** ボックスで、**\[Service1\]** ノードを展開します。次の図のように、**\[操作\]** ボックスに Echo 操作が表示されます。 + + ![[サービス参照の追加] ダイアログ](../../../../docs/framework/wcf/feature-details/media/addservicereference.JPG "AddServiceReference") + + 既定の名前空間のままにし、**\[OK\]** をクリックして **\[サービス参照の追加\]** ダイアログ ボックスを閉じます。次のダイアログ ボックスが表示されます。 + + ![サービス参照の追加の通知ダイアログ](../../../../docs/framework/wcf/feature-details/media/asrdlg.JPG "ASRDlg") + + **\[OK\]** をクリックして、このダイアログ ボックスを閉じます。次に、Ctrl キーと Shift キーを押しながら B キーを押して、ソリューションをビルドします。ツールボックスに **MyWFClient.ServiceReference1.Activities** という名前の新しい選択肢が追加されていることを確認します。この選択肢を展開して、次の図のように、追加されている Echo アクティビティを確認します。 + + ![ツールボックスのエコー アクティビティ](../../../../docs/framework/wcf/feature-details/media/echoactivity.JPG "EchoActivity") + +7. アクティビティをデザイナー画面にドラッグ アンド ドロップします。これは、ツールボックスの **\[制御フロー\]** セクションにあります。 + +8. アクティビティにフォーカスがある状態で、**\[変数\]** リンクをクリックして、`inString` という名前の文字列変数を追加します。この変数と `outString` という名前の文字列変数に、既定値である `“Hello, world”` を設定します。 + + ![変数の追加](../../../../docs/framework/wcf/feature-details/media/instringvar.JPG "inStringVar") + +9. **Echo** アクティビティを にドラッグ アンド ドロップします。次の図のように、プロパティ ウィンドウで、\_string 引数を `inString` 変数にバインドし、`out_string` 引数を outString 変数にバインドします。これにより、`inString` 変数の値を操作に渡し、戻り値を取得し、その戻り値を `outString` 変数に格納します。 + + ![変数への引数のバインド](../../../../docs/framework/wcf/feature-details/media/argumentbind.JPG "ArgumentBind") + +10. サービス呼び出しによって返された文字列を表示するために、**Echo** アクティビティの下に **WriteLine** アクティビティをドラッグ アンド ドロップします。**WriteLine** アクティビティは、ツールボックスの **\[プリミティブ\]** ノードにあります。**WriteLine** アクティビティのテキスト ボックスに「`outString`」と入力し、**WriteLine** アクティビティの **Text** 引数を `outString` 変数にバインドします。この時点で、ワークフローは次の図のようになります。 + + ![完全なクライアント ワークフロー](../../../../docs/framework/wcf/feature-details/media/completeclientwf.JPG "CompleteClientWF") + +11. MyWFService ソリューションを右クリックし、**\[スタートアップ プロジェクトの設定\]** をクリックします。次の図のように、**\[マルチ スタートアップ プロジェクト\]** ボタンを選択し、各プロジェクトの **\[アクション\]** 列で **\[開始\]** を選択します。 + + ![スタートアップ プロジェクトのオプション](../../../../docs/framework/wcf/feature-details/media/startupprojects.JPG "StartupProjects") + +12. Ctrl キーを押しながら F5 キーを押し、サービスとクライアントの両方を起動します。ASP.NET 開発サーバーがサービスをホストし、Internet Explorer に WCF ヘルプ ページが表示され、コンソール ウィンドウでクライアント ワークフロー アプリケーションが起動して、サービスから返された文字列 \("Hello, world"\) が表示されます。 + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [方法: メッセージング アクティビティを使用してワークフロー サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-workflow-service-with-messaging-activities.md) + [Web プロジェクトでのワークフローからの WCF サービスの使用](http://go.microsoft.com/fwlink/?LinkId=207725) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-access-a-wse-3-0-service-with-a-wcf-client.md b/docs/framework/wcf/feature-details/how-to-access-a-wse-3-0-service-with-a-wcf-client.md new file mode 100644 index 00000000000..9950803893e --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-access-a-wse-3-0-service-with-a-wcf-client.md @@ -0,0 +1,71 @@ +--- +title: "方法 : WCF クライアントで WSE 3.0 サービスにアクセスする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1f9bcd9b-8f8f-47fa-8f1e-0d47236eb800 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 方法 : WCF クライアントで WSE 3.0 サービスにアクセスする +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントが WS-Addressing 仕様の 2004 年 8 月版を使用するように構成されている場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントは Microsoft .NET サービスの Web サービス拡張 (WSE: Web Services Enhancements) 3.0 とネットワーク レベルの互換性があります。 ただし、WSE 3.0 サービスは、メタデータ交換 (MEX) プロトコルをサポートしないので使用すると、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)を作成する、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]クライアント クラスでは、セキュリティ設定が適用され、生成された[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]クライアントです。 そのため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの生成後に、WSE 3.0 サービスで必要なセキュリティ設定を指定する必要があります。 + + カスタム バインディングを使用してこれらのセキュリティ設定を適用することにより、WSE 3.0 サービスの要件、および WSE 3.0 サービスと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントとの相互運用性の要件を考慮に入れることができます。 これらの相互運用性要件には、2004 年 8 月の前述の使用が含まれます。 メッセージの保護の Ws-addressing 仕様と WSE 3.0default します。 既定のメッセージ保護[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]はします。 このトピックでは、WSE 3.0 サービスと相互運用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインディングの作成方法について詳しく説明します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、このバインディングが組み込まれたサンプルも用意されています。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]このサンプルを参照してください[ASMX Web サービスとの相互運用](../../../../docs/framework/wcf/samples/interoperating-with-asmx-web-services.md)します。 + +### WCF クライアントで WSE 3.0 サービスにアクセスするには + +1. 実行、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)を作成する、 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WSE 3.0 Web サービスのクライアントです。 + + WSE 3.0 Web サービスに対して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントが作成されます。 WSE 3.0 は MEX プロトコルをサポートしていないため、このツールを使用して Web サービスのセキュリティ要件を取得することはできません。 アプリケーション開発者は、クライアントのセキュリティ設定を追加する必要があります。 + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)]作成する、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]クライアントを参照してください、[方法: クライアントを作成する](../../../../docs/framework/wcf/how-to-create-a-wcf-client.md)です。 + +2. WSE 3.0 Web サービスと通信できるバインディングを表すクラスを作成します。 + + 次のクラスの一部である、 [WSE との相互運用](http://msdn.microsoft.com/ja-jp/f6816861-96a0-45f9-8736-8e4e82cd3a41)サンプル。 + + 1. 派生したクラスを作成、クラスです。 + + 次のコード例は、という名前のクラスを作成`WseHttpBinding`から派生した、クラスです。 + + [!code-csharp[c_WCFClientToWSEService#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wcfclienttowseservice/cs/wsehttpbinding.cs#1)] + [!code-vb[c_WCFClientToWSEService#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wcfclienttowseservice/vb/wsehttpbinding.vb#1)] + + 2. WSE サービスで使用する WSE 設定不要アサーション、派生キーが必要かどうか、セキュリティで保護されたセッションを使用するかどうか、署名の確認が必要かどうか、およびメッセージ保護設定を指定するプロパティを、このクラスに追加します。 WSE 3.0 では、設定不要アサーションはクライアントまたは Web サービスのセキュリティ要件を指定します。これらのセキュリティ要件は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のバインディングの認証モードに似ています。 + + WSE 設定不要アサーション、派生キーが必要かどうか、セキュリティで保護されたセッションを使用するかどうか、署名の確認が必要かどうか、およびメッセージ保護設定をそれぞれ指定する、`SecurityAssertion`、`RequireDerivedKeys`、`EstablishSecurityContext`、および `MessageProtectionOrder` の各プロパティを定義するコード例を次に示します。 + + [!code-csharp[c_WCFClientToWSEService#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wcfclienttowseservice/cs/wsehttpbinding.cs#3)] + [!code-vb[c_WCFClientToWSEService#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wcfclienttowseservice/vb/wsehttpbinding.vb#3)] + + 3. オーバーライド、 バインドのプロパティを設定します。 + + `SecurityAssertion` プロパティと `MessageProtectionOrder` プロパティの値を取得することで、トランスポート、メッセージ エンコーディング、メッセージ保護設定を指定するコード例を次に示します。 + + [!code-csharp[c_WCFClientToWSEService#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wcfclienttowseservice/cs/wsehttpbinding.cs#2)] + [!code-vb[c_WCFClientToWSEService#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wcfclienttowseservice/vb/wsehttpbinding.vb#2)] + +3. クライアントのアプリケーション コードでは、コードを追加してバインディングのプロパティを設定します。 + + WSE 3.0 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の設定不要なセキュリティ アサーションで定義されているように、メッセージの保護と認証を使用しなければならない `AnonymousForCertificate` クライアントを指定するコード例を次に示します。 また、セキュリティで保護されたセッションと派生キーが必要です。 + + [!code-csharp[c_WCFClientToWSEService#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wcfclienttowseservice/cs/client.cs#4)] + [!code-vb[c_WCFClientToWSEService#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wcfclienttowseservice/vb/client.vb#4)] + +## 例 + WSE 3.0 の設定不要のセキュリティ アサーションのプロパティに対応するプロパティを公開するカスタムのバインディングを定義するコード例を次に示します。 この `WseHttpBinding` という名前のカスタムのバインディングは、WSSecurityAnonymous WSE 3.0 QuickStart のサンプルと通信する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントのバインディング プロパティの指定に使用されます。 + + + +## 関連項目 + + [WSE との相互運用](http://msdn.microsoft.com/ja-jp/f6816861-96a0-45f9-8736-8e4e82cd3a41) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-access-services-with-a-duplex-contract.md b/docs/framework/wcf/feature-details/how-to-access-services-with-a-duplex-contract.md new file mode 100644 index 00000000000..6ecd6a1df91 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-access-services-with-a-duplex-contract.md @@ -0,0 +1,104 @@ +--- +title: "方法 : 双方向コントラクトを使用してサービスにアクセスする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "双方向コントラクト [WCF]" +ms.assetid: 746a9d64-f21c-426c-b85d-972e916ec6c5 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# 方法 : 双方向コントラクトを使用してサービスにアクセスする +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の機能の 1 つに、双方向のメッセージング パターンを使用するサービスを作成する機能があります。双方向のメッセージング パターンを使用するサービスは、コールバックを通じてクライアントと通信できます。ここでは、コールバック インターフェイスを実装するクライアント クラス内に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを作成する手順を示します。 + + 二重バインディングでは、クライアントの IP アドレスをサービスに公開します。クライアントは、セキュリティを使用して信頼するサービスだけに接続できるようにする必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の基本的なサービスとクライアントの作成方法に関するチュートリアルについては、「[チュートリアル入門](../../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 + +### 双方向サービスにアクセスするには + +1. 2 つのインターフェイスを含むサービスを作成します。1 つ目のインターフェイスはサービスに使用し、2 つ目のインターフェイスはコールバックに使用します。双方向サービスを作成する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 双方向コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md)」を参照してください。 + +2. サービスを実行します。 + +3. [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用して、クライアントのコントラクト \(インターフェイス\) を生成します。これを実行する方法については、「[方法 : クライアントを作成する](../../../../docs/framework/wcf/how-to-create-a-wcf-client.md)」を参照してください。 + +4. 次の例に示すように、クライアント クラスにコールバック インターフェイスを実装します。 + + ```csharp + public class CallbackHandler : ICalculatorDuplexCallback + { + public void Result(double result) + { + Console.WriteLine("Result ({0})", result); + } + public void Equation(string equation) + { + Console.WriteLine("Equation({0})", equation); + } + } + ``` + + ```vb + Public Class CallbackHandler + Implements ICalculatorDuplexCallback + Public Sub Result (ByVal result As Double) + Console.WriteLine("Result ({0})", result) + End Sub + Public Sub Equation(ByVal equation As String) + Console.Writeline("Equation({0})", equation) + End Sub + End Class + + ``` + +5. クラスのインスタンスを作成します。コンストラクターには、クライアント クラスのインスタンスが必要です。 + + ```csharp + InstanceContext site = new InstanceContext(new CallbackHandler()); + ``` + + ```vb + Dim site As InstanceContext = New InstanceContext(new CallbackHandler()) + ``` + +6. オブジェクトを必要とするコンストラクターを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントのインスタンスを作成します。コンストラクターの 2 番目のパラメーターは、構成ファイルに含まれるエンドポイントの名前です。 + + ```csharp + CalculatorDuplexClient wcfClient = + new CalculatorDuplexClient(site, "default") + ``` + + ```vb + Dim wcfClient As New CalculatorDuplexClient(site, "default") + ``` + +7. 必要に応じて、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントのメソッドを呼び出します。 + +## 使用例 + 双方向コントラクトにアクセスするクライアント クラスを作成する方法を次のコード例に示します。 + + [!code-csharp[S_DuplexClients#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_duplexclients/cs/client.cs#1)] + [!code-vb[S_DuplexClients#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_duplexclients/vb/client.vb#1)] + +## .NET Framework セキュリティ + +## 参照 + [チュートリアル入門](../../../../docs/framework/wcf/getting-started-tutorial.md) + [方法 : 双方向コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md) + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) + [方法 : クライアントを作成する](../../../../docs/framework/wcf/how-to-create-a-wcf-client.md) + [方法 : ChannelFactory を使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-channelfactory.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-access-wcf-services-with-one-way-and-request-reply-contracts.md b/docs/framework/wcf/feature-details/how-to-access-wcf-services-with-one-way-and-request-reply-contracts.md new file mode 100644 index 00000000000..4e9e72fab12 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-access-wcf-services-with-one-way-and-request-reply-contracts.md @@ -0,0 +1,416 @@ +--- +title: "方法 : 一方向コントラクトと要求/応答コントラクトを使用して WCF サービスにアクセスする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7e10d3a5-fcf4-4a4b-a8d6-92ee2c988b3b +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : 一方向コントラクトと要求/応答コントラクトを使用して WCF サービスにアクセスする +次の手順では、一方向コントラクトと要求/応答コントラクトを定義し、双方向通信パターンを使用しない [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスにアクセスする方法を説明します。 + +### サービスを定義するには + +1. サービス コントラクトを宣言します。 一方向では、操作が必要`IsOneWay`設定`true`内で、 します。 次のコードは、`IOneWayCalculator`、`Add`、`Subtract`、および `Multiply` に対して一方向の操作を行う `Divide` コントラクトを宣言します。 また、`SayHello` という要求応答操作も定義します。 + + ``` + [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] + public interface IOneWayCalculator + { + [OperationContract(IsOneWay = true)] + void Add(double n1, double n2); + [OperationContract(IsOneWay = true)] + void Subtract(double n1, double n2); + [OperationContract(IsOneWay = true)] + void Multiply(double n1, double n2); + [OperationContract(IsOneWay = true)] + void Divide(double n1, double n2); + [OperationContract] + string SayHello(string name); + } + ``` + +2. サービス コントラクトを実装します。 次のコードは `IOnewayCalculator` インターフェイスを実装します。 + + ``` + [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall)] + public class CalculatorService : IOneWayCalculator + { + public void Add(double n1, double n2) + { + double result = n1 + n2; + Console.WriteLine("Add({0},{1}) = {2} ", n1, n2, result); + } + + public void Subtract(double n1, double n2) + { + double result = n1 - n2; + Console.WriteLine("Subtract({0},{1}) = {2}", n1, n2, result); + } + + public void Multiply(double n1, double n2) + { + double result = n1 * n2; + Console.WriteLine("Multiply({0},{1}) = {2}", n1, n2, result); + } + + public void Divide(double n1, double n2) + { + double result = n1 / n2; + Console.WriteLine("Divide({0},{1}) = {2}", n1, n2, result); + } + + public string SayHello(string name) + { + Console.WriteLine("SayHello({0})", name); + return "Hello " + name; + } + } + ``` + +3. コンソール アプリケーションでサービスをホストします。 次のコードはサービスをホストする方法を示しています。 + + ``` + // Host the service within this EXE console application. + public static void Main() + { + // Define the base address for the service. + Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service"); + + // Create a ServiceHost for the CalculatorService type and provide the base address. + using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress)) + { + // Add an endpoint using the IOneWayCalculator contract and the WSHttpBinding + serviceHost.AddServiceEndpoint(typeof(IOneWayCalculator), new WSHttpBinding(), ""); + + // Turn on the metadata behavior, this allows svcutil to get metadata for the service. + ServiceMetadataBehavior smb = (ServiceMetadataBehavior) serviceHost.Description.Behaviors.Find(); + if (smb == null) + { + smb = new ServiceMetadataBehavior(); + smb.HttpGetEnabled = true; + serviceHost.Description.Behaviors.Add(smb); + } + + // Open the ServiceHostBase to create listeners and start listening for messages. + serviceHost.Open(); + + // The service can now be accessed. + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + } + } + ``` + +### サービスにアクセスするには + +1. 実行、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)メタデータ交換エンドポイント アドレスを使用して、次のコマンドラインを使用して、サービスのクライアント クラスを作成する: `Svcutil http://localhost:8000/Service` 、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)の次のサンプル コードに示すように、インターフェイスとクラスのセットを生成します。 + + ``` + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] + [System.ServiceModel.ServiceContractAttribute(Namespace="http://Microsoft.ServiceModel.Samples", ConfigurationName="IOneWayCalculator")] + public interface IOneWayCalculator + { + + [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://Microsoft.ServiceModel.Samples/IOneWayCalculator/Add")] + void Add(double n1, double n2); + + [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://Microsoft.ServiceModel.Samples/IOneWayCalculator/Subtract")] + void Subtract(double n1, double n2); + + [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://Microsoft.ServiceModel.Samples/IOneWayCalculator/Multiply")] + void Multiply(double n1, double n2); + + [System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://Microsoft.ServiceModel.Samples/IOneWayCalculator/Divide")] + void Divide(double n1, double n2); + + [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/IOneWayCalculator/SayHello", ReplyAction="http://Microsoft.ServiceModel.Samples/IOneWayCalculator/SayHelloResponse")] + string SayHello(string name); + } + + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] + public interface IOneWayCalculatorChannel : IOneWayCalculator, System.ServiceModel.IClientChannel + { + } + + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] + public partial class OneWayCalculatorClient : System.ServiceModel.ClientBase, IOneWayCalculator + { + + public OneWayCalculatorClient() + { + } + + public OneWayCalculatorClient(string endpointConfigurationName) : + base(endpointConfigurationName) + { + } + + public OneWayCalculatorClient(string endpointConfigurationName, string remoteAddress) : + base(endpointConfigurationName, remoteAddress) + { + } + + public OneWayCalculatorClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : + base(endpointConfigurationName, remoteAddress) + { + } + + public OneWayCalculatorClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : + base(binding, remoteAddress) + { + } + + public void Add(double n1, double n2) + { + base.Channel.Add(n1, n2); + } + + public void Subtract(double n1, double n2) + { + base.Channel.Subtract(n1, n2); + } + + public void Multiply(double n1, double n2) + { + base.Channel.Multiply(n1, n2); + } + + public void Divide(double n1, double n2) + { + base.Channel.Divide(n1, n2); + } + + public string SayHello(string name) + { + return base.Channel.SayHello(name); + } + } + + ``` + + `IOneWayCalculator`一方向サービス操作があるインターフェイス、 属性に設定`true`要求/応答サービス操作には、既定値に設定された属性が必要があると`false`です。 また、`OneWayCalculatorClient` クラスにも注目してください。 これはサービスを呼び出すために使用するクラスです。 + +2. クライアント オブジェクトを作成します。 + + ``` + // Create a client + WSHttpBinding binding = new WSHttpBinding(); + EndpointAddress epAddress = new EndpointAddress("http://localhost:8000/servicemodelsamples/service"); + OneWayCalculatorClient client = new OneWayCalculatorClient(binding, epAddress); + + ``` + +3. サービス操作を呼び出します。 + + ``` + // Call the Add service operation. + double value1 = 100.00D; + double value2 = 15.99D; + client.Add(value1, value2); + Console.WriteLine("Add({0},{1})", value1, value2); + + // Call the Subtract service operation. + value1 = 145.00D; + value2 = 76.54D; + client.Subtract(value1, value2); + Console.WriteLine("Subtract({0},{1})", value1, value2); + + // Call the Multiply service operation. + value1 = 9.00D; + value2 = 81.25D; + client.Multiply(value1, value2); + Console.WriteLine("Multiply({0},{1})", value1, value2); + + // Call the Divide service operation. + value1 = 22.00D; + value2 = 7.00D; + client.Divide(value1, value2); + Console.WriteLine("Divide({0},{1})", value1, value2); + + // Call the SayHello service operation + string name = "World"; + string response = client.SayHello(name); + Console.WriteLine("SayHello([0])", name); + Console.WriteLine("SayHello() returned: " + response); + + ``` + +4. クライアントを閉じて接続を終了し、リソースをクリーンアップします。 + + ``` + //Closing the client gracefully closes the connection and cleans up resources + client.Close(); + + ``` + +## 例 + このトピックで使用されているコードの完全な一覧を次に示します。 + +``` +// Service.cs +using System; +using System.Configuration; +using System.ServiceModel; +using System.ServiceModel.Description; + +namespace Microsoft.ServiceModel.Samples +{ + // Define a service contract. + [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] + public interface IOneWayCalculator + { + [OperationContract(IsOneWay = true)] + void Add(double n1, double n2); + [OperationContract(IsOneWay = true)] + void Subtract(double n1, double n2); + [OperationContract(IsOneWay = true)] + void Multiply(double n1, double n2); + [OperationContract(IsOneWay = true)] + void Divide(double n1, double n2); + [OperationContract] + string SayHello(string name); + } + + // Service class which implements the service contract. + // Added code to write output to the console window + [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall)] + public class CalculatorService : IOneWayCalculator + { + public void Add(double n1, double n2) + { + double result = n1 + n2; + Console.WriteLine("Add({0},{1}) = {2} ", n1, n2, result); + } + + public void Subtract(double n1, double n2) + { + double result = n1 - n2; + Console.WriteLine("Subtract({0},{1}) = {2}", n1, n2, result); + } + + public void Multiply(double n1, double n2) + { + double result = n1 * n2; + Console.WriteLine("Multiply({0},{1}) = {2}", n1, n2, result); + } + + public void Divide(double n1, double n2) + { + double result = n1 / n2; + Console.WriteLine("Divide({0},{1}) = {2}", n1, n2, result); + } + + public string SayHello(string name) + { + Console.WriteLine("SayHello({0})", name); + return "Hello " + name; + } + + // Host the service within this EXE console application. + public static void Main() + { + // Define the base address for the service. + Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service"); + + // Create a ServiceHost for the CalculatorService type and provide the base address. + using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress)) + { + // Add an endpoint using the IOneWayCalculator contract and the WSHttpBinding + serviceHost.AddServiceEndpoint(typeof(IOneWayCalculator), new WSHttpBinding(), ""); + + // Turn on the metadata behavior, this allows svcutil to get metadata for the service. + ServiceMetadataBehavior smb = (ServiceMetadataBehavior) serviceHost.Description.Behaviors.Find(); + if (smb == null) + { + smb = new ServiceMetadataBehavior(); + smb.HttpGetEnabled = true; + serviceHost.Description.Behaviors.Add(smb); + } + + // Open the ServiceHostBase to create listeners and start listening for messages. + serviceHost.Open(); + + // The service can now be accessed. + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + } + } + } +} + +// client.cs +using System; +using System.ServiceModel; + +namespace Microsoft.ServiceModel.Samples +{ + //The service contract is defined in generatedClient.cs, generated from the service by the svcutil tool. + + //Client implementation code. + class Client + { + static void Main() + { + // Create a client + WSHttpBinding binding = new WSHttpBinding(); + EndpointAddress epAddress = new EndpointAddress("http://localhost:8000/servicemodelsamples/service"); + OneWayCalculatorClient client = new OneWayCalculatorClient(binding, epAddress); + + // Call the Add service operation. + double value1 = 100.00D; + double value2 = 15.99D; + client.Add(value1, value2); + Console.WriteLine("Add({0},{1})", value1, value2); + + // Call the Subtract service operation. + value1 = 145.00D; + value2 = 76.54D; + client.Subtract(value1, value2); + Console.WriteLine("Subtract({0},{1})", value1, value2); + + // Call the Multiply service operation. + value1 = 9.00D; + value2 = 81.25D; + client.Multiply(value1, value2); + Console.WriteLine("Multiply({0},{1})", value1, value2); + + // Call the Divide service operation. + value1 = 22.00D; + value2 = 7.00D; + client.Divide(value1, value2); + Console.WriteLine("Divide({0},{1})", value1, value2); + + // Call the SayHello service operation + string name = "World"; + string response = client.SayHello(name); + Console.WriteLine("SayHello([0])", name); + Console.WriteLine("SayHello() returned: " + response); + //Closing the client gracefully closes the connection and cleans up resources + client.Close(); + + } + } +} + +``` + + + +## 関連項目 + [一方向サービス](../../../../docs/framework/wcf/feature-details/one-way-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-add-an-aspnet-ajax-endpoint-without-using-configuration.md b/docs/framework/wcf/feature-details/how-to-add-an-aspnet-ajax-endpoint-without-using-configuration.md new file mode 100644 index 00000000000..ca2bbee9bc4 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-add-an-aspnet-ajax-endpoint-without-using-configuration.md @@ -0,0 +1,109 @@ +--- +title: "方法 : 構成を使用せずに ASP.NET AJAX エンドポイントを追加する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b05c1742-8d0a-4673-9d71-725b18a3008e +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : 構成を使用せずに ASP.NET AJAX エンドポイントを追加する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、クライアント Web サイトの JavaScript から呼び出される ASP.NET AJAX 対応のエンドポイントを公開するサービスを作成できます。 このようなエンドポイントを作成するには、他のすべての WCF エンドポイントと同様に、構成ファイルを使用するか、または構成要素を必要としないメソッドを使用することができます。 ここでは、2 番目の方法について説明します。 + + 構成を使用せずに ASP.NET AJAX エンドポイントを持つサービスを作成するには、サービスがインターネット インフォメーション サービス (IIS) でホストされている必要があります。 このアプローチを使用して ASP.NET AJAX エンドポイントを有効にするには指定、 にある Factory パラメーターとして、 [ @ServiceHost ](../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md) .svc ファイル ディレクティブです。 このカスタム ファクトリは自動的に ASP.NET AJAX エンドポイントを構成するコンポーネントであるため、クライアント Web サイトの JavaScript から呼び出すことができます。 + + 実施例については、次を参照してください。、[サービスを構成せず AJAX](../../../../docs/framework/wcf/samples/ajax-service-without-configuration.md)します。 + + 構成要素を使用して ASP.NET AJAX エンドポイントを構成する方法の概要を参照してください。[方法: ASP.NET AJAX エンドポイントを追加する構成を使用して](../../../../docs/framework/wcf/feature-details/how-to-use-configuration-to-add-an-aspnet-ajax-endpoint.md)します。 + +### 基本的な WCF サービスを作成するには + +1. 基本的な定義[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]でマークされたサービス コントラクト インターフェイスを属性です。 各操作にマークを付ける、 します。 設定して、 プロパティです。 + + ``` + [ServiceContract(Namespace = "MyService")]] + public interface ICalculator + { + [OperationContract] + // This operation returns the sum of d1 and d2. + double Add(double n1, double n2); + + //Other operations omitted… + + } + ``` + +2. `ICalculator` を使用して、`CalculatorService` サービス コントラクトを実装します。 + + ``` + public class CalculatorService : ICalculator + { + public double Add(double n1, double n2) + { + return n1 + n2; + } + + //Other operations omitted… + ``` + +3. 名前空間ブロック内にラップすることにより、`ICalculator` と `CalculatorService` の実装の名前空間を定義します。 + + ``` + Namespace Microsoft.Ajax.Samples + { + //Include the code for ICalculator and Caculator here. + } + ``` + +### 構成を使用せずにインターネット インフォメーション サービスでサービスをホストするには + +1. アプリケーションで、.svc という拡張子を付けて新しい service ファイルを作成します。 このファイルを編集するには、追加、適切な[ @ServiceHost ](../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md)ディレクティブ情報をサービスします。 指定する、 で使用するのには、 [ @ServiceHost ](../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md)ディレクティブで使用すると、自動的に ASP.NET AJAX エンドポイントを構成します。 + + ``` + <%@ServiceHost + language=c# + Debug="true" + Service="Microsoft.Ajax.Samples.CalculatorService" + Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory + %> + ``` + +2. サービスをビルドしてクライアントから呼び出します。 呼び出されたサービスがインターネット インフォメーション サービス (IIS) によってアクティブ化されます。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]IIS では、ホストを参照してください[方法: IIS で WCF サービスをホスト](../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md)します。 + +### サービスを呼び出すには + +1. .Svc ファイルに相対する空のアドレスでエンドポイントが構成されて、サービスを使用できるよう、に対してに要求を送信することによって呼び出すことがため<>\> - たとえば、service.svc/Add の`Add`操作します。 これは、ASP.NET AJAX Script Manager コントロールのスクリプト コレクションにサービス URL を入力することで使用できます。 例については、次を参照してください。、[サービスを構成せず AJAX](../../../../docs/framework/wcf/samples/ajax-service-without-configuration.md)します。 + +## 例 + + + 自動的に構成されたエンドポイントは、ベース URL に対して相対的に空のアドレスの位置に作成されます。 この方法では、構成ファイルを追加して使用することもできます。 構成ファイルにエンドポイントの定義がある場合、これらのエンドポイントは自動的に構成されたエンドポイントに追加されます。 + + たとえば、service.svc が使用して、 サービス ディレクトリを使用して同じサービスのエンドポイントを定義する Web.config ファイルが含まれている、 "soap"の相対アドレスにします。 この場合、サービスには、service.svc に含まれるエンドポイント (ASP.NET AJAX 要求に応答) と、service.svc/soap にあるもう&1; つのエンドポイント (SOAP 要求に応答) の&2; つのエンドポイントが含まれることになります。 + + 構成ファイルが空の相対アドレスにエンドポイントを定義するかどうか、 は、使用、例外がスローされ、サービスの開始に失敗します。 + + 自動的に構成されるエンドポイントの設定を変更するために構成を使用することはできません。 リーダーのクォータなど、設定の有効期限があります変更されると、使用しないでください構成を必要としないアプローチを削除して、 .svc ファイルと、エンドポイントの構成エントリを作成するからです。 + + サービスが必要な場合 ASP.NET 互換モード - たとえば、使用されている場合、 クラスや ASP.NET 承認機構構成ファイルは、このモードを有効にするために必要です。 必要な構成要素は、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md)要素は、次のように追加する必要があります。 + + `` + + ` ` + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][WCF サービスと ASP.NET](../../../../docs/framework/wcf/feature-details/wcf-services-and-aspnet.md)トピックです。 + + クラスの派生クラスは、 します。 サービス ホスト ファクトリ機構の詳細については、次を参照してください。、[を使用して ServiceHostFactory のホストを拡張する](../../../../docs/framework/wcf/extending/extending-hosting-using-servicehostfactory.md)トピックです。 + +## 関連項目 + [ASP.NET AJAX の WCF サービスを作成します。](../../../../docs/framework/wcf/feature-details/creating-wcf-services-for-aspnet-ajax.md) + [方法: AJAX 対応 ASP.NET Web サービスを WCF に移行します。](../../../../docs/framework/wcf/feature-details/how-to-migrate-ajax-enabled-aspnet-web-services-to-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-allow-metadata-requests-while-authorizing.md b/docs/framework/wcf/feature-details/how-to-allow-metadata-requests-while-authorizing.md new file mode 100644 index 00000000000..9d0863d7658 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-allow-metadata-requests-while-authorizing.md @@ -0,0 +1,45 @@ +--- +title: "方法 : 承認中にメタデータ要求を許可する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "承認中のメタデータ要求の許可 [WCF]" +ms.assetid: 90cec34f-b619-452b-a056-8b1c0de49d05 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : 承認中にメタデータ要求を許可する +カスタム承認中に、メタデータの処理要求を許可することがあります。ここでは、このような要求を検証する手順を示します。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の承認[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md)」を参照してください。 + +### 承認中にメタデータ要求を許可するには + +1. クラスの拡張を作成します。 + +2. メソッドをオーバーライドします。このメソッドは、承認が許可されるかどうかによって、`true` または `false` を返します。現在のプロシージャに関する情報は、メソッドへのパラメーターとして渡される にあります。 + +3. オーバーライドで、コントラクト名、名前空間、およびアクションを確認します。次の例を参照してください。条件が有効な場合は、`true` を返します。 + +4. クラスを使用するための拡張ポイントを使用します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : サービスで使用するカスタム承認マネージャーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md). + +## 使用例 + メソッドを上書きする方法を次の例に示します。 + + [!code-csharp[C_HowtoCheckForMexRequestsInAuthorization#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtocheckformexrequestsinauthorization/cs/source.cs#1)] + [!code-vb[C_HowtoCheckForMexRequestsInAuthorization#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtocheckformexrequestsinauthorization/vb/source.vb#1)] + +## 参照 + + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) + [ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-audit-wcf-security-events.md b/docs/framework/wcf/feature-details/how-to-audit-wcf-security-events.md new file mode 100644 index 00000000000..afcc3361c37 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-audit-wcf-security-events.md @@ -0,0 +1,99 @@ +--- +title: "方法 : Windows Communication Foundation セキュリティ イベントを監査する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF], イベントの監査" +ms.assetid: e71e9587-3336-46a2-9a9e-d72a1743ecec +caps.latest.revision: 19 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 19 +--- +# 方法 : Windows Communication Foundation セキュリティ イベントを監査する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] にはセキュリティ イベントを Windows イベント ログに記録する機能があります。これは Windows イベント ビューアーに表示できます。 このトピックでは、セキュリティ イベントをログ出力するようにアプリケーションを設定する方法について説明します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)] [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 監査については、「[監査](../../../../docs/framework/wcf/feature-details/auditing-security-events.md)」を参照してください。 + +### セキュリティ イベントを監査するコードを記述するには + +1. 監査ログの場所を指定します。 それには、次のコードに示すように、 クラスの プロパティに 列挙体のいずれかの値を設定します。 + + [!code-csharp[AuditingSecurityEvents#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/auditingsecurityevents/cs/auditingsecurityevents.cs#2)] + [!code-vb[AuditingSecurityEvents#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/auditingsecurityevents/vb/auditingsecurityevents.vb#2)] + + 列挙体には `Application`、`Security`、および `Default` の 3 つの値が定義されています。 これは、イベント ビューアーを開いたとき、セキュリティ ログとアプリケーション ログのどちらが表示されるかを表します。 `Default` を指定した場合の動作は、アプリケーションが稼働するオペレーティング システムに依存します。 ログの場所を指定せずに監査機能を有効にした場合、セキュリティ ログに書き込み可能なプラットフォームであれば `Security` ログに、そうでなければ `Application` ログに出力するようになります。 セキュリティ ログへの書き込みが可能なのは、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wv](../../../../includes/wv-md.md)] に限ります。 + +2. イベントの種類を監査対象として設定します。 サービス レベルのイベントとメッセージ レベルの承認イベントを同時に監査できます。 それには、次のコードに示すように、 プロパティまたは プロパティに 列挙体のいずれかの値を設定します。 + + [!code-csharp[AuditingSecurityEvents#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/auditingsecurityevents/cs/auditingsecurityevents.cs#3)] + [!code-vb[AuditingSecurityEvents#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/auditingsecurityevents/vb/auditingsecurityevents.vb#3)] + +3. ログ監査イベントに関して、単に無視してアプリケーションの処理を続行するか、それとも失敗を通知するかを設定します。 次のコードに示すように、 プロパティに `true` または `false` を設定します。 + + [!code-csharp[AuditingSecurityEvents#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/auditingsecurityevents/cs/auditingsecurityevents.cs#4)] + [!code-vb[AuditingSecurityEvents#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/auditingsecurityevents/vb/auditingsecurityevents.vb#4)] + + `SuppressAuditFailure` プロパティの既定値は `true` なので、監査に失敗してもアプリケーションには影響しません。 それ以外の場合は、例外がスローされます。 正常な監査に関するログは、Verbose レベルで出力されます。 異常発生時には、Error レベルでトレースが出力されます。 + +4. 既存の を、 の説明にある動作のコレクションから削除します。 動作のコレクションは、 プロパティからアクセスできます。また、 プロパティからもアクセスできます。 その後、次のコードに示すように、新しい を同じコレクションに追加します。 + + [!code-csharp[AuditingSecurityEvents#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/auditingsecurityevents/cs/auditingsecurityevents.cs#5)] + [!code-vb[AuditingSecurityEvents#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/auditingsecurityevents/vb/auditingsecurityevents.vb#5)] + +### 構成ファイルで監査を設定するには + +1. 構成ファイルで監査を設定するには、web.config ファイルの [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) セクションに [\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md) 要素を追加します。 その後、次の例に示すように、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicesecurityaudit.md) 要素を追加し、必要な属性を設定します。 + + ``` + + + + + + ``` + +2. 次の例に示すように、サービスに対して動作を指定する必要があります。 + + ``` + + + + + + + ``` + +## 使用例 + クラスのインスタンスを作成し、新しい をその動作のコレクションに追加するコード例を次に示します。 + + [!code-csharp[AuditingSecurityEvents#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/auditingsecurityevents/cs/auditingsecurityevents.cs#1)] + [!code-vb[AuditingSecurityEvents#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/auditingsecurityevents/vb/auditingsecurityevents.vb#1)] + +## .NET Framework セキュリティ + プロパティを `true` に設定すると、セキュリティ監査を生成する失敗が抑制されます \(`false` に設定した場合は、例外がスローされます\)。 ただし、次の Windows の **"ローカル セキュリティ設定"** プロパティを有効にした場合、監査イベントを生成する失敗により Windows が直ちにシャットダウンします。 + + **監査 : セキュリティ監査を記録できない場合システムを直ちにシャット ダウンします。** + + プロパティを設定するには、**\[ローカル セキュリティ 設定\]** ダイアログ ボックスを開きます。 **\[セキュリティの設定\]** の **\[ローカル ポリシー\]** フォルダーをクリックします。 次に、**\[セキュリティ オプション\]** をクリックします。 + + プロパティが に設定されている場合で、**\[オブジェクト アクセスの監査\]** が **\[ローカル セキュリティ ポリシー\]** で設定されていないときは、監査イベントはセキュリティ ログに書き込まれません。 エラーが返らない場合でも、監査エントリはセキュリティ ログに書き込まれません。 + +## 参照 + + + + [監査](../../../../docs/framework/wcf/feature-details/auditing-security-events.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-authenticate-with-a-user-name-and-password.md b/docs/framework/wcf/feature-details/how-to-authenticate-with-a-user-name-and-password.md new file mode 100644 index 00000000000..8696223f7cf --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-authenticate-with-a-user-name-and-password.md @@ -0,0 +1,103 @@ +--- +title: "方法 : ユーザー名とパスワードで認証する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "認証 [WCF], ユーザー名とパスワード" +ms.assetid: a5415be2-0ef3-464c-9f76-c255cb8165a4 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# 方法 : ユーザー名とパスワードで認証する +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスが Windows ドメイン ユーザー名とパスワードを使用してクライアントを認証できるようにする方法を示します。自己ホスト型 WCF サービスが稼働していることを前提としています。基本的な自己ホスト型 WCF サービスを作成する例については、「[チュートリアル入門](../../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。このトピックでは、サービスがコードで構成されているものとします。構成ファイルを使用して同様のサービスを構成する例については、「[メッセージ セキュリティ ユーザー名](../../../../docs/framework/wcf/samples/message-security-user-name.md)」を参照してください。 + + Windows ドメイン ユーザー名とパスワードを使用してクライアントを認証するようにサービスを構成するには、 を使用し、その `Security.Mode` プロパティを `Message` に設定します。また、ユーザー名とパスワードをクライアントからサービスに送信するときにそれらを暗号化するために使用する X.509 証明書を指定する必要があります。 + + クライアント側では、ユーザー名とパスワードをユーザーにたずね、WCF クライアント プロキシでユーザーの資格情報を指定する必要があります。 + +### Windows ドメイン ユーザー名とパスワードを使用して認証するように WCF サービスを構成するには + +1. 次のコードに示すように、 のインスタンスを作成し、バインディングのセキュリティ モードを `SecurityMode.Message` に設定した後、バインディングの `ClientCredentialType` を `MessageCredentialType.UserName` に設定し、構成されたバインディングを使用するサービス エンドポイントをサービス ホストに追加します。 + + ``` + // ... + WSHttpBinding userNameBinding = new WSHttpBinding(); + userNameBinding.Security.Mode = SecurityMode.Message; + userNameBinding.Security.Message.ClientCredentialType = MessageCredentialType.UserName; + svcHost.AddServiceEndpoint(typeof(IService1), userNameBinding, ""); + // ... + ``` + +2. ネットワーク経由で送信されるユーザー名とパスワードの情報を暗号化するために使用するサーバー証明書を指定します。このコードは、上記のコードの直後に追加します。次の例では、「[メッセージ セキュリティ ユーザー名](../../../../docs/framework/wcf/samples/message-security-user-name.md)」のサンプルの setup.bat ファイルによって作成された証明書を使用します。 + + ``` + // ... + svcHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, "localhost"); + // ... + ``` + + 独自の証明書を使用する場合は、その証明書を参照するようにコードを変更します。証明書の作成と使用の詳細については、「[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。証明書がローカル マシンの信頼されたユーザーの証明書ストア内に存在することを確認します。これを行うには、mmc.exe を実行し、**\[ファイル\]**、**\[スナップインの追加と削除\]** メニュー項目を順にクリックします。**\[スナップインの追加と削除\]** ダイアログ ボックスで、**\[証明書スナップイン\]** を選択し、**\[追加\]** をクリックします。\[証明書スナップイン\] ダイアログ ボックスで、**\[コンピューター アカウント\]** を選択します。既定では、メッセージ セキュリティ ユーザー名のサンプルから生成された証明書は個人\/証明書フォルダーに配置されます。これは、MMC ウィンドウの \[発行先\] 列に "localhost" として表示されます。**\[信頼されたユーザー\]** フォルダーに証明書をドラッグ アンド ドロップします。これにより、認証を実行するときに、WCF は証明書を信頼された証明書として処理することができます。 + +### ユーザー名とパスワードを渡すサービスを呼び出すには + +1. クライアント アプリケーションは、ユーザー名とパスワードをユーザーにたずねる必要があります。次のコードでは、ユーザー名とパスワードをユーザーにたずねます。 + + > [!WARNING] + > このコードは、パスワードが入力中に表示されるため、運用環境では使用しないでください。 + + ``` + public static void GetPassword(out string username, out string password) + { + Console.WriteLine("Provide a valid machine or domain account. [domain\\user]"); + Console.WriteLine(" Enter username:"); + username = Console.ReadLine(); + Console.WriteLine(" Enter password:"); + password = Console.ReadLine(); + return; + } + + ``` + +2. 次のコードのように、クライアントの資格情報を指定して、クライアント プロキシのインスタンスを作成します。 + + ``` + string username; + string password; + + // Instantiate the proxy + Service1Client proxy = new Service1Client(); + + // Prompt the user for username & password + GetPassword(out username, out password); + + // Set the user’s credentials on the proxy + proxy.ClientCredentials.UserName.UserName = username; + proxy.ClientCredentials.UserName.Password = password; + + // Treat the test certificate as trusted + proxy.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.PeerOrChainTrust; + // Call the service operation using the proxy + ``` + +## 参照 + + + + + + + + + [基本認証でのトランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/transport-security-with-basic-authentication.md) + [分散アプリケーションのセキュリティ](../../../../docs/framework/wcf/feature-details/distributed-application-security.md) + [\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-call-operations-asynchronously-using-a-channel-factory.md b/docs/framework/wcf/feature-details/how-to-call-operations-asynchronously-using-a-channel-factory.md new file mode 100644 index 00000000000..a1c772eba80 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-call-operations-asynchronously-using-a-channel-factory.md @@ -0,0 +1,56 @@ +--- +title: "方法 : チャネル ファクトリを使用して、非同期的に操作を呼び出す | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cc17dd47-b9ad-451c-a362-e36e0aac7ba0 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 方法 : チャネル ファクトリを使用して、非同期的に操作を呼び出す +ここでは、 ベースのクライアント アプリケーションを使用する場合に、クライアントからサービス操作に非同期にアクセスする方法について説明します。 サービスを呼び出すために オブジェクトを使用する場合は、イベント ドリブンの非同期呼び出しモデルを使用できます。 詳細については、「[方法 : サービス操作を非同期に呼び出す](../../../../docs/framework/wcf/feature-details/how-to-call-wcf-service-operations-asynchronously.md)」を参照してください。 イベント ベースの非同期呼び出しモデルの詳細については、「[Multithreaded Programming with the Event\-based Asynchronous Pattern](../../../../docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md)」を参照してください。 + + このトピックのサービスは、`ICalculator` インターフェイスを実装しています。 クライアントはこのインターフェイスにある操作を非同期に呼び出すことができます。これはたとえば `Add` という操作を `BeginAdd` と `EndAdd` の 2 つのメソッドに分割できることを意味します。前者によって呼び出しを開始し、後者によって操作の完了時に結果を取得します。 サービス操作を非同期的に実装する方法を示す例については、「[方法 : 非同期サービス操作を実装する](../../../../docs/framework/wcf/how-to-implement-an-asynchronous-service-operation.md)」を参照してください。 同期操作と非同期操作の詳細については、「[同期操作と非同期操作](../../../../docs/framework/wcf/synchronous-and-asynchronous-operations.md)」を参照してください。 + +## 手順 + +#### WCF サービス操作を非同期に呼び出すには + +1. 次のコマンドに示すように、`/async` オプションを指定して [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) ツールを実行します。 + + ``` + svcutil /n:http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples http://localhost:8000/servicemodelsamples/service/mex /a + + ``` + + これにより、操作の非同期クライアント版のサービス コントラクトが生成されます。 + +2. 次のサンプル コードに示すように、非同期操作の完了時に呼び出されるコールバック関数を作成します。 + + [!code-csharp[C_How_To_CF_Async#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_how_to_cf_async/cs/client.cs#2)] + [!code-vb[C_How_To_CF_Async#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_how_to_cf_async/vb/client.vb#2)] + +3. サービス操作に非同期にアクセスするには、次のサンプル コードに示すように、クライアントを作成して `Begin[Operation]` \(たとえば `BeginAdd`\) を呼び出し、コールバック関数を指定します。 + + [!code-csharp[C_How_To_CF_Async#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_how_to_cf_async/cs/client.cs#3)] + [!code-vb[C_How_To_CF_Async#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_how_to_cf_async/vb/client.vb#3)] + + コールバック関数が実行されると、クライアントは `End` \(`EndAdd` など\) を呼び出して結果を取得します。 + +## 使用例 + 上記の手順で使用したクライアント コードで使用するサービスは、次のコードに示すように `ICalculator` インターフェイスを実装しています。 コントラクトの `Add` 操作と `Subtract` 操作は、上記のクライアントの手順がクライアントで非同期に呼び出される場合でも、サービス側では [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のランタイムにより同期して呼び出されます。 `Multiply` 操作と `Divide` 操作は、クライアントで同期して呼び出される場合でも、サービス側ではサービスを非同期に呼び出すように使用されます。 この例では、 プロパティを `true` に設定します。 このプロパティ設定は [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 非同期パターンの実装と共に、ランタイムに対して、操作を非同期で呼び出すよう指示します。 + + [!code-csharp[C_How_To_CF_Async#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_how_to_cf_async/cs/service.cs#4)] + [!code-vb[C_How_To_CF_Async#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_how_to_cf_async/vb/service.vb#4)] + +## 参照 + [Service Contract: Asynchronous Sample](http://msdn.microsoft.com/ja-jp/833db946-f511-4f64-a26f-2759a11217c7) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-call-wcf-service-operations-asynchronously.md b/docs/framework/wcf/feature-details/how-to-call-wcf-service-operations-asynchronously.md new file mode 100644 index 00000000000..c57d221f888 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-call-wcf-service-operations-asynchronously.md @@ -0,0 +1,71 @@ +--- +title: "方法 : WCF サービス操作を非同期に呼び出す | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0face17f-43ca-417b-9b33-737c0fc360df +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# 方法 : WCF サービス操作を非同期に呼び出す +ここでは、クライアントからサービス操作に非同期にアクセスする方法について説明します。このトピックのサービスは、`ICalculator` インターフェイスを実装しています。クライアントは、イベント ドリブンの非同期呼び出しモデルを使用して、このインターフェイスで操作を非同期に呼び出すことができます \(イベント ベースの非同期呼び出しモデルの詳細については、「[イベント ベースの非同期パターンを使用したマルチスレッド プログラミング](http://go.microsoft.com/fwlink/?LinkId=248184)」を参照してください\)。サービス操作を非同期に実装する方法を示す例については、「[方法 : 非同期サービス操作を実装する](../../../../docs/framework/wcf/how-to-implement-an-asynchronous-service-operation.md)」を参照してください。同期操作と非同期操作の詳細については、「[同期操作と非同期操作](../../../../docs/framework/wcf/synchronous-and-asynchronous-operations.md)」を参照してください。 + +> [!NOTE] +> を使用している場合、イベント ドリブンの非同期呼び出しモデルはサポートされません。 を使用して非同期呼び出しを作成する方法については、「[方法 : チャネル ファクトリを使用して、非同期的に操作を呼び出す](../../../../docs/framework/wcf/feature-details/how-to-call-operations-asynchronously-using-a-channel-factory.md)」を参照してください。 + +## 手順 + +#### WCF サービス操作を非同期に呼び出すには + +1. 次のコマンドに示すように、`/async` と `/tcv:Version35` の両方のコマンド オプションを指定して [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を実行します。 + + ``` + svcutil /n:http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples http://localhost:8000/servicemodelsamples/service/mex /a /tcv:Version35 + ``` + + これにより、同期操作と標準のデリゲート ベースの非同期操作だけでなく、以下を含む [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント クラスも生成されます。 + + - イベント ベースの非同期呼び出し方法で使用するための 2 つの \<`operationName`\>`Async` 操作。次に例を示します。 + + [!code-csharp[EventAsync#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/eventasync/cs/generatedclient.cs#1)] + [!code-vb[EventAsync#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/eventasync/vb/generatedclient.vb#1)] + + - イベント ベースの非同期呼び出し方法で使用するための \<`operationName`\>`Completed` 形式の操作完了イベント。次に例を示します。 + + [!code-csharp[EventAsync#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/eventasync/cs/generatedclient.cs#2)] + [!code-vb[EventAsync#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/eventasync/vb/generatedclient.vb#2)] + + - イベント ベースの非同期呼び出し方法で使用するための \(\<`operationName`\>`CompletedEventArgs` 形式の\) 各操作の 型。次に例を示します。 + + [!code-csharp[EventAsync#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/eventasync/cs/generatedclient.cs#3)] + [!code-vb[EventAsync#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/eventasync/vb/generatedclient.vb#3)] + +2. 次のサンプル コードに示すように、呼び出し元アプリケーションで、非同期操作の完了時に呼び出されるコールバック メソッドを作成します。 + + [!code-csharp[EventAsync#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/eventasync/cs/client.cs#4)] + [!code-vb[EventAsync#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/eventasync/vb/client.vb#4)] + +3. 操作を呼び出す前に、\<`operationName`\>`EventArgs` 型の新しいジェネリック を使用して、\(前の手順で作成した\) ハンドラー メソッドを \<`operationName`\>`Completed` イベントに追加します。次に、\<`operationName`\>`Async` メソッドを呼び出します。次に例を示します。 + + [!code-csharp[EventAsync#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/eventasync/cs/client.cs#5)] + [!code-vb[EventAsync#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/eventasync/vb/client.vb#5)] + +## 使用例 + +> [!NOTE] +> イベント ベースの非同期モデルのデザイン ガイドラインには、複数の値を返す場合に、1 つの値を `Result` プロパティとして返し、残りの値を オブジェクトのプロパティとして返すことが記載されています。この 1 つの結果として、クライアントがイベント ベースの非同期コマンド オプションを使用してメタデータをインポートし、操作から複数の値が返される場合、既定の オブジェクトが 1 つの値を `Result` プロパティとして返し、残りの値は オブジェクトのプロパティになります。メッセージ オブジェクトを `Result` プロパティとして受け取り、返された値をそのオブジェクトのプロパティとして取得する場合は、`/messageContract` コマンド オプションを使用します。これにより、 オブジェクトの `Result` プロパティとして応答メッセージを返すシグネチャが生成されます。すべての内部戻り値は、応答メッセージ オブジェクトのプロパティになります。 + + [!code-csharp[EventAsync#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/eventasync/cs/client.cs#6)] + [!code-vb[EventAsync#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/eventasync/vb/client.vb#6)] + +## 参照 + [方法 : 非同期サービス操作を実装する](../../../../docs/framework/wcf/how-to-implement-an-asynchronous-service-operation.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md b/docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md new file mode 100644 index 00000000000..6a37208426c --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md @@ -0,0 +1,84 @@ +--- +title: "方法 : ローカル発行者を設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フェデレーション" + - "WCF, フェデレーション" +ms.assetid: 15263371-514e-4ea6-90fb-14b4939154cd +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 方法 : ローカル発行者を設定する +ここでは、発行済みトークンに対してローカル発行者を使用するようにクライアントを構成する方法を説明します。 + + クライアントがフェデレーション サービスと通信する場合、クライアントが自分をフェデレーション サービスに対して認証するときに使用するトークンの発行元となるセキュリティ トークン サービスのアドレスが、サービスによって指定されることがよくあります。特定の状況では、クライアントが*ローカル発行者*を使用するように構成されることがあります。 + + フェデレーション バインディングの発行者アドレスが http:\/\/schemas.microsoft.com\/2005\/12\/ServiceModel\/Addressing\/Anonymous または `null` である場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] はローカル発行者を使用します。そのような場合は、ローカルの発行者およびバインディングのアドレスと共に を構成し、その発行者との通信に使用する必要があります。 + +> [!NOTE] +> `ClientCredentials` クラスの プロパティが `true` に設定されており、ローカル発行者アドレスが指定されておらず、[\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)または他のフェデレーション バインディングで指定される発行者アドレスが http:\/\/schemas.xmlsoap.org\/ws\/2005\/05\/identity\/issuer\/self、http:\/\/schemas.microsoft.com\/2005\/12\/ServiceModel\/Addressing\/Anonymous、または `null` である場合、Windows の [!INCLUDE[infocard](../../../../includes/infocard-md.md)] 発行者が使用されます。 + +### コードでローカル発行者を構成するには + +1. 型の変数を作成します。 + +2. `ClientCredentials` クラスの プロパティから返されるインスタンスに変数を設定します。このインスタンスは、\( から継承された\) クライアントの プロパティ、または プロパティから次のように返されます。 + + [!code-csharp[c_CreateSTS#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#9)] + [!code-vb[c_CreateSTS#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#9)] + +3. プロパティを の新規インスタンスに設定します。このとき、次のようにコンストラクターに対する引数としてローカル発行者のアドレスを使用します。 + + [!code-csharp[c_CreateSTS#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#10)] + [!code-vb[c_CreateSTS#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#10)] + + あるいは、次のように新規の インスタンスをコンストラクターへの引数として作成します。 + + [!code-csharp[c_CreateSTS#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#11)] + [!code-vb[c_CreateSTS#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#11)] + + 次に示すように、`addressHeaders` パラメーターは インスタンスの配列です。 + + [!code-csharp[c_CreateSTS#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#12)] + [!code-vb[c_CreateSTS#12](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#12)] + +4. プロパティを使用して、ローカル発行者のバインディングを次のように設定します。 + + [!code-csharp[c_CreateSTS#13](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#13)] + [!code-vb[c_CreateSTS#13](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#13)] + +5. 省略可能。ローカル発行者に対して構成したエンドポイントの動作を プロパティから返されるコレクションに追加することにより、この動作を次のように追加します。 + + [!code-csharp[c_CreateSTS#14](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#14)] + [!code-vb[c_CreateSTS#14](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#14)] + +### 構成でローカル発行者を構成するには + +1. その要素自体がエンドポイント動作の [\](../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md) 要素の子要素である [\](../../../../docs/framework/configure-apps/file-schema/wcf/issuedtoken.md) 要素の子として、[\](../../../../docs/framework/configure-apps/file-schema/wcf/localissuer.md) 要素を作成します。 + +2. `address` 属性を、トークン要求を受け入れるローカル発行者のアドレスに設定します。 + +3. `binding` および `bindingConfiguration` 属性を、ローカル発行者のエンドポイントと通信するときに使用する適切なバインディングを参照する値に設定します。 + +4. 省略可能。\<`localIssuer`\> 要素の子要素として [\](../../../../docs/framework/configure-apps/file-schema/wcf/identity.md) 要素を設定し、ローカル発行者の ID 情報を指定します。 + +5. 省略可能。\<`localIssuer`\> 要素の子要素として [\](../../../../docs/framework/configure-apps/file-schema/wcf/headers.md) 要素を設定し、ローカル発行者を正しくアドレス指定するために必要な追加ヘッダーを指定します。 + +## .NET Framework セキュリティ + 特定のバインディングに対して発行者アドレスとバインディングが指定されている場合、ローカル発行者はこのバインディングを使用するエンドポイントには使用されません。ローカル発行者を常に使用する必要があるクライアントには、このようなバインディングが使用されることがないこと、または発行者アドレスが `null` となるようにクライアントによってバインディングが変更されることが保証されている必要があります。 + +## 参照 + [方法 : フェデレーション サービスで資格情報を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) + [方法 : フェデレーション クライアントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [方法 : WSFederationHttpBinding を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md b/docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md new file mode 100644 index 00000000000..e203613c19e --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md @@ -0,0 +1,137 @@ +--- +title: "方法 : SSL 証明書を使用してポートを構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "SSL" + - "WCF, セキュリティ" + - "WCF, セキュリティ モード" +ms.assetid: b8abcc8e-a5f5-4317-aca5-01e3c40ab24d +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# 方法 : SSL 証明書を使用してポートを構成する +トランスポート セキュリティを使用する自己ホスト型 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを クラスを使って作成する場合は、X.509 証明書でポートを構成する作業も必要になります。 自己ホスト型サービスを作成するのでなければ、インターネット インフォメーション サービス \(IIS\) でサービスをホストできます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [HTTP トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/http-transport-security.md). + + ポートを構成する場合に使用するツールは、コンピューターで実行されているオペレーティング システムによって異なります。 + + [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] または [!INCLUDE[wxp](../../../../includes/wxp-md.md)] を実行している場合は、HttpCfg.exe ツールを使用します。 [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] では、このツールは自動的にインストールされています。 [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では、「[Windows XP Service Pack 2 サポート ツール](http://go.microsoft.com/fwlink/?LinkId=88606)」からツールをダウンロードできます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] 「[Httpcfg Overview](http://go.microsoft.com/fwlink/?LinkId=88605)」。 「[Httpcfg 構文](http://go.microsoft.com/fwlink/?LinkId=94840)」では、Httpcfg.exe ツールの構文について説明しています。 + + [!INCLUDE[wv](../../../../includes/wv-md.md)] を実行している場合は、Netsh.exe ツールを使用します。これは既にインストールされています。 + + このトピックでは、次のようなさまざまな手順を実行する方法について説明します。 + +- コンピューターの現在のポート構成を確認する。 + +- 証明書の拇印を取得する \(次の 2 つの手順に必要\)。 + +- SSL 証明書をポート構成にバインドする。 + +- SSL 証明書をポート構成にバインドし、クライアント証明書をサポートする。 + +- ポート番号から SSL 証明書を削除する。 + + コンピューターに格納されている証明書を変更するには、管理特権が必要です。 + +### ポートの構成を確認するには + +1. [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] または [!INCLUDE[wxp](../../../../includes/wxp-md.md)] で現在のポート構成を表示するには、HttpCfg.exe ツールを使用します。次の例に示すように、**query** スイッチと **ssl** スイッチを使用します。 + + ``` + httpcfg query ssl + ``` + +2. [!INCLUDE[wv](../../../../includes/wv-md.md)] で現在のポート構成を表示するには、Netsh.exe ツールを使用します。次に例を示します。 + + ``` + netsh http show sslcert + ``` + +### 証明書の拇印を取得するには + +1. 証明書 MMC スナップインを使用して、クライアント認証を目的として含む X.509 証明書を検索します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : MMC スナップインを使用して証明書を参照する](../../../../docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md). + +2. 証明書の拇印にアクセスします。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : 証明書のサムプリントを取得する](../../../../docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md). + +3. 証明書のサムプリントを、メモ帳などのテキスト エディターにコピーします。 + +4. 16 進文字の間にある空白をすべて削除します。 たとえばエディターの "すべて置換" 機能を使用して、空白を空文字列に置き換えるとよいでしょう。 + +### SSL 証明書をポート番号にバインドするには + +1. [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] または [!INCLUDE[wxp](../../../../includes/wxp-md.md)] で証明書をポート番号にバインドするには、HttpCfg.exe ツールを SSL \(Secure Sockets Layer\) ストアに対して "set" モードで使用します。 このツールは、次のように、拇印を使用して証明書を識別します。 + + ``` + httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6 + ``` + + - **\-i** スイッチには、`IP`:`port` という構文を使用します。上の例では、コンピューターのポート 8012 に証明書を設定するようにツールに対して指示しています。 "0.0.0.0" の部分は、必要に応じて、コンピューターの実際の IP アドレスに置き換えてください。 + + - **\-h** スイッチは、証明書の拇印を指定します。 + +2. [!INCLUDE[wv](../../../../includes/wv-md.md)] では、Netsh.exe ツールを使用します。次に例を示します。 + + ``` + netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} + ``` + + - **certhash** パラメーターは、証明書の拇印を指定します。 + + - **ipport** パラメーターは、IP アドレスとポートを指定します。このパラメーターは、既に説明した Httpcfg.exe ツールの **\-i** スイッチと同じように機能します。 + + - **appid** パラメーターは、所有するアプリケーションの識別に使用できる GUID です。 + +### SSL 証明書をポート番号にバインドし、クライアント証明書をサポートするには + +1. [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] または [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では、トランスポート層で X.509 証明書を使用して認証するクライアントをサポートするには、前と同じ手順を実行しますが、次のように HttpCfg.exe に追加のコマンド ライン パラメーターを指定します。 + + ``` + httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6 -f 2 + ``` + + **\-f** スイッチには、`n` という構文を使用します。n は 1 ~ 7 の数字を表します。 前の例のように 2 を指定すると、クライアントはトランスポート層で認証することになります。 値として 3 を指定すると、クライアント証明書が有効になり、それらの証明書が Windows アカウントに対応付けられます。 他の値については、HttpCfg.exe のヘルプ機能を参照してください。 + +2. [!INCLUDE[wv](../../../../includes/wv-md.md)] では、トランスポート層で X.509 証明書を使用して認証するクライアントをサポートするには、前と同じ手順を実行しますが、次のように追加のパラメーターを指定します。 + + ``` + netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF} clientcertnegotiation=enable + ``` + +### ポート番号から SSL 証明書を削除するには + +1. HttpCfg.exe または Netsh.exe ツールを使用して、コンピューター上のすべてのバインディングのポートと拇印を確認します。 情報をディスクに出力するには、次の例のようにリダイレクト文字 "\>" を使用します。 + + ``` + httpcfg query ssl>myMachinePorts.txt + ``` + +2. [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] または [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では、HttpCfg.exe ツールを **delete** および **ssl** の各キーワードと共に使用します。 **\-i** スイッチで `IP`:`port` 番号を、**\-h** スイッチで拇印を指定します。 + + ``` + httpcfg delete ssl -i 0.0.0.0:8005 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6 + ``` + +3. [!INCLUDE[wv](../../../../includes/wv-md.md)] では、Netsh.exe ツールを使用します。次に例を示します。 + + ``` + Netsh http delete sslcert ipport=0.0.0.0:8005 + ``` + +## 使用例 + 次のコードは、トランスポート セキュリティを設定した クラスを使用して、自己ホスト型サービスを作成する方法を示します。 アプリケーションを作成する際、アドレス中にポート番号を指定してください。 + + [!code-csharp[c_WsHttpService#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wshttpservice/cs/source.cs#3)] + [!code-vb[c_WsHttpService#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wshttpservice/vb/source.vb#3)] + +## 参照 + [HTTP トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/http-transport-security.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-a-wcf-client-to-interoperate-with-wse3-0-services.md b/docs/framework/wcf/feature-details/how-to-configure-a-wcf-client-to-interoperate-with-wse3-0-services.md new file mode 100644 index 00000000000..0ef82ff1549 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-a-wcf-client-to-interoperate-with-wse3-0-services.md @@ -0,0 +1,71 @@ +--- +title: "方法 : WCF クライアントと WSE3.0 サービスを相互運用するために構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3dadd7f1-d207-4ea5-a73b-3e8aa44407f8 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 方法 : WCF クライアントと WSE3.0 サービスを相互運用するために構成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントが WS-Addressing 仕様の 2004 年 8 月版を使用して構成されている場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントは Microsoft .NET サービスの WSE (Web サービス拡張) 3.0 とネットワーク レベルで互換性があります。 + +### WSE 3.0 Web サービスと相互運用するように WCF クライアントを構成するには + +1. 実行、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)を作成する、 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WSE 3.0 Web サービスのクライアントです。 + + WSE Web サービスに対して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント クラスが作成されます。 + + 作成する方法について、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]クライアントを参照してください、[方法: クライアントを作成する](../../../../docs/framework/wcf/how-to-create-a-wcf-client.md)です。 + +2. WSE 3.0 Web サービスと通信できるバインディングを表すクラスを作成します。 + + 次のクラスの一部である、 [WSE との相互運用](http://msdn.microsoft.com/ja-jp/f6816861-96a0-45f9-8736-8e4e82cd3a41)サンプルです。 + + 1. 派生したクラスを作成、クラスです。 + + 次のコード例は、という名前のクラスを作成`WseHttpBinding`から派生した、クラスです。 + + [!code-csharp[c_WCFClientToWSEService#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wcfclienttowseservice/cs/wsehttpbinding.cs#1)] + [!code-vb[c_WCFClientToWSEService#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wcfclienttowseservice/vb/wsehttpbinding.vb#1)] + + 2. WSE の設定不要アサーションを指定するクラスに、派生キーが必要か、セキュリティで保護されたセッションが使用されるか、署名の確認が必要かどうかの指定、およびメッセージ保護設定などのプロパティを追加します。 + + 次のコード例では定義`SecurityAssertion,``RequireDerivedKeys, EstablishSecurityContext, MessageProtectionOrder`WSE 設定不要アサーション、派生キーが必要かどうか、セキュリティで保護されたセッションを使用するかどうか、署名の確認が必要かどうかおよびメッセージの保護設定をそれぞれ指定するプロパティです。 + + [!code-csharp[c_WCFClientToWSEService#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wcfclienttowseservice/cs/wsehttpbinding.cs#3)] + [!code-vb[c_WCFClientToWSEService#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wcfclienttowseservice/vb/wsehttpbinding.vb#3)] + + 3. オーバーライド、 バインドのプロパティを設定します。 + + `SecurityAssertion` プロパティと `MessageProtectionOrder` プロパティの値を取得することで、トランスポート、メッセージ エンコーディング、メッセージ保護設定を指定するコード例を次に示します。 + + [!code-csharp[c_WCFClientToWSEService#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wcfclienttowseservice/cs/wsehttpbinding.cs#2)] + [!code-vb[c_WCFClientToWSEService#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wcfclienttowseservice/vb/wsehttpbinding.vb#2)] + +3. クライアントのアプリケーション コードでは、コードを追加してバインディングのプロパティを設定します。 + + WSE 3.0 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の設定不要なセキュリティ アサーションで定義されているように、メッセージの保護と認証を使用しなければならない `AnonymousForCertificate` クライアントを指定するコード例を次に示します。 また、セキュリティで保護されたセッションと派生キーが必要です。 + + [!code-csharp[c_WCFClientToWSEService#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wcfclienttowseservice/cs/client.cs#4)] + [!code-vb[c_WCFClientToWSEService#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wcfclienttowseservice/vb/client.vb#4)] + +## 例 + WSE 3.0 の設定不要のセキュリティ アサーションのプロパティに対応するプロパティを公開するカスタムのバインディングを定義するコード例を次に示します。 この `WseHttpBinding` という名前のカスタム バインディングを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントのバインディング プロパティを指定します。 + + +[!code-csharp[c_WCFClientToWSEService#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wcfclienttowseservice/cs/client.cs#0)] +[!code-vb[c_WCFClientToWSEService#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wcfclienttowseservice/vb/client.vb#0)] + +## 関連項目 + + [WSE との相互運用](http://msdn.microsoft.com/ja-jp/f6816861-96a0-45f9-8736-8e4e82cd3a41) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-a-wcf-service-to-use-port-sharing.md b/docs/framework/wcf/feature-details/how-to-configure-a-wcf-service-to-use-port-sharing.md new file mode 100644 index 00000000000..58cb320741f --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-a-wcf-service-to-use-port-sharing.md @@ -0,0 +1,69 @@ +--- +title: "方法 : ポート共有を使用するように Windows Communication Foundation サービスを構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6400bc71-a858-4ac2-8d5a-caa72d3b5482 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 方法 : ポート共有を使用するように Windows Communication Foundation サービスを構成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションで net.tcp:\/\/ ポート共有を使用する最も簡単な方法は、 を使用してサービスを公開することです。 + + このバインディングは、 プロパティを提供します。このプロパティは、このバインディングを使用して構成されるサービスに対して net.tcp:\/\/ ポート共有を有効にするかどうかを制御します。 + + 以下の手順では、 クラスを使用して URI \(Uniform Resource Identifier\)、net.tcp:\/\/localhost\/MyService にあるエンドポイントを開く方法を示します。最初にコードを使用する場合の手順を示し、次に構成要素を使用する場合の手順を示します。 + +### コードで NetTcpBinding の net.tcp:\/\/ ポート共有を有効にするには + +1. `IMyService` という名前のコントラクトを実装するサービスを作成し、`MyService` という名前を付けます。 + + [!code-csharp[c_ConfigurePortSharing#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_configureportsharing/cs/source.cs#1)] + [!code-vb[c_ConfigurePortSharing#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_configureportsharing/vb/source.vb#1)] + +2. クラスのインスタンスを作成し、 プロパティを `true` に設定します。 + + [!code-csharp[c_ConfigurePortSharing#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_configureportsharing/cs/source.cs#2)] + [!code-vb[c_ConfigurePortSharing#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_configureportsharing/vb/source.vb#2)] + +3. を作成し、ポート共有を有効にした を使用し、エンドポイント アドレス URI "net.tcp:\/\/localhost\/MyService" をリッスンする `MyService` のサービス エンドポイントを追加します。 + + [!code-csharp[c_ConfigurePortSharing#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_configureportsharing/cs/source.cs#3)] + [!code-vb[c_ConfigurePortSharing#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_configureportsharing/vb/source.vb#3)] + + > [!NOTE] + > このエンドポイント アドレス URI は異なるポート番号を指定しないため、この例では既定の TCP ポートである 808 を使用します。トランスポート バインディングでポート共有が明示的に有効になっているため、このサービスはポート 808 を他のプロセスの他のサービスと共有できます。ポート共有が許可されておらず、既に別のアプリケーションがポート 808 を使用している場合は、このサービスを開こうとすると がスローされます。 + +### 構成で NetTcpBinding の net.tcp:\/\/ ポート共有を有効にするには + +1. 次の例では、構成要素を使用してポート共有を有効にし、サービス エンドポイントを追加します。 + +``` + + + + + + + + + + +``` + +## 参照 + [Net.TCP Port Sharing](http://msdn.microsoft.com/ja-jp/f13692ee-a179-4439-ae72-50db9534eded) + [方法 : Net.TCP ポート共有サービスを有効にする](../../../../docs/framework/wcf/feature-details/how-to-enable-the-net-tcp-port-sharing-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-an-iis-hosted-wcf-service-with-ssl.md b/docs/framework/wcf/feature-details/how-to-configure-an-iis-hosted-wcf-service-with-ssl.md new file mode 100644 index 00000000000..1d39a8020a8 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-an-iis-hosted-wcf-service-with-ssl.md @@ -0,0 +1,163 @@ +--- +title: "IIS でホストされる WCF サービスに SSL を構成する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: df2fe31f-a4bb-4024-92ca-b74ba055e038 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# IIS でホストされる WCF サービスに SSL を構成する方法 +ここでは、HTTP トランスポート セキュリティを使用するように IIS でホストされる WCF サービスをセットアップする方法について説明します。 HTTP トランスポート セキュリティを使用するには、SSL 証明書が IIS に登録されている必要があります。 SSL 証明書がない場合は、IIS を使用してテスト証明書を生成できます。 次に、Web サイトに SSL バインディングを追加し、Web サイトの認証プロパティを構成する必要があります。 最後に、HTTPS を使用するように WCF サービスを構成する必要があります。 + +### 自己署名証明書の作成 + +1. インターネット インフォメーション サービス マネージャー \(inetmgr.exe\) を開き、左側のツリー ビューでコンピューター名を選択します。 画面の右側で \[サーバー証明書\] を選択します。 + + ![IIS マネージャー ホーム画面](../../../../docs/framework/wcf/feature-details/media/mg-inetmgrhome.jpg "mg\_INetMgrHome") + +2. \[サーバー証明書\] ウィンドウで、**\[自己署名入り証明書の作成\]** リンクをクリックします。 + + ![IIS での自己署名証明書の作成](../../../../docs/framework/wcf/feature-details/media/mg-createselfsignedcert.jpg "mg\_CreateSelfSignedCert") + +3. 自己署名証明書の表示名を入力し、**\[OK\]** をクリックします。 + + ![[自己署名入り証明書の作成] ダイアログ](../../../../docs/framework/wcf/feature-details/media/mg-mycert.jpg "mg\_MyCert") + + これで、新しく作成された自己署名証明書の詳細が **\[サーバー証明書\]** ウィンドウに表示されます。 + + ![[サーバー証明書] ウィンドウ](../../../../docs/framework/wcf/feature-details/media/mg-servercertificatewindow.jpg "mg\_ServerCertificateWindow") + + 生成された証明書が、信頼されたルート証明機関ストアにインストールされます。 + +### SSL バインドの追加 + +1. インターネット インフォメーション サービス マネージャーで、画面の左側にあるツリー ビューの **\[サイト\]** フォルダーを展開し、**\[既定の Web サイト\]** フォルダーを展開します。 + +2. ウィンドウの右上にある **\[操作\]** セクションの **\[バインド\]** リンクをクリックします。 + + ![SSL バインディングの追加](../../../../docs/framework/wcf/feature-details/media/mg-addsslbinding.jpg "mg\_AddSSLBinding") + +3. \[サイト バインド\] ウィンドウで **\[追加\]** をクリックします。 + + ![[サイト バインド] ダイアログ](../../../../docs/framework/wcf/feature-details/media/mg-sitebindingsdialog.jpg "mg\_SiteBindingsDialog") + +4. **\[サイト バインドの追加\]** ダイアログ ボックスで、作成した自己署名証明書の種類 \(https\) と表示名を選択します。 + + ![サイト バインディングの例](../../../../docs/framework/wcf/feature-details/media/mg-mycertbinding.jpg "mg\_MyCertBinding") + +### SSL の仮想ディレクトリの構成 + +1. インターネット インフォメーション サービス マネージャーで、WCF のセキュリティで保護されたサービスが含まれている仮想ディレクトリを選択します。 + +2. ウィンドウの中央ペインにある IIS セクションで **\[SSL 設定\]** を選択します。 + + ![仮想ディレクトリの SSL 設定](../../../../docs/framework/wcf/feature-details/media/mg-sslsettingsforvdir.jpg "mg\_SSLSettingsForVDir") + +3. \[SSL 設定\] ペインで、**\[SSL が必要\]** チェック ボックスをオンにし、画面右側の **\[操作\]** セクションで **\[適用\]** リンクをクリックします。 + + ![仮想ディレクトリの SSL 設定](../../../../docs/framework/wcf/feature-details/media/mg-vdirsslsettings.JPG "mg\_VDirSSLSettings") + +### HTTP トランスポート セキュリティのための WCF サービスの構成 + +1. WCF サービスの Web.config で、次の XML に示すように、トランスポート セキュリティを使用するよう HTTP バインドを構成します。 + + ``` + + + + + + + + + + + ``` + +2. 次の XML に示すように、サービスとサービス エンドポイントを指定します。 + + ``` + + + + + + + + + ``` + +## 使用例 + 次は、HTTP トランスポート セキュリティを使用した WCF サービスの web.config ファイルの詳細な例です。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + + +## 参照 + [インターネット インフォメーション サービスでのホスティング](../../../../docs/framework/wcf/feature-details/hosting-in-internet-information-services.md) + [インターネット インフォメーション サービスのホスティング手順](../../../../docs/framework/wcf/samples/internet-information-service-hosting-instructions.md) + [インターネット インフォメーション サービス ホスティングのベスト プラクティス](../../../../docs/framework/wcf/feature-details/internet-information-services-hosting-best-practices.md) + [インライン コードを使用した IIS ホスティング](../../../../docs/framework/wcf/samples/iis-hosting-using-inline-code.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md b/docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md new file mode 100644 index 00000000000..80962b37539 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md @@ -0,0 +1,110 @@ +--- +title: "方法 : COM+ サービス設定を構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "COM+ [WCF], サービス設定の構成" +ms.assetid: f42a55a8-3af8-4394-9fdd-bf12a93780eb +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# 方法 : COM+ サービス設定を構成する +COM\+ サービス構成ツールを使用してアプリケーション インターフェイスを追加または削除すると、アプリケーション構成ファイル内の Web サービス構成が更新されます。 COM\+ ホスト モードでは、Application.config ファイルはアプリケーションのルート ディレクトリ \(既定は %PROGRAMFILES%\\ComPlus Applications\\{appid}\) に配置されます。 いずれの Web ホスト モードでも、Web.config ファイルは指定した vroot ディレクトリに配置されます。 + +> [!NOTE] +> クライアントとサーバー間のメッセージの改ざんを防止するには、メッセージの署名を使用する必要があります。 また、クライアントとサーバー間のメッセージから情報が漏えいするのを防止するには、メッセージまたはトランスポート層の暗号化を使用する必要があります。 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスの場合と同様に、調整機能を使用して同時呼び出し、同時接続、同時インスタンス、同時保留操作の数を制限する必要があります。 これによりリソースの過剰消費を防ぐことができます。 調整の動作は、サービス構成ファイルの設定で指定します。 + +## 使用例 + 次のインターフェイスを実装するコンポーネントについて考えます。 + +``` +[Guid("C551FBA9-E3AA-4272-8C2A-84BD8D290AC7")] +public interface IFinances +{ + string Debit(string accountNo, double amount); + string Credit(string accountNo, double amount); +} + +``` + + コンポーネントを Web サービスとして公開する場合、クライアントが準拠する必要のある対応の公開サービス コントラクトは次のとおりです。 + +``` +[ServiceContract(Session = true, +Namespace = "http://tempuri.org/C551FBA9-E3AA-4272-8C2A-84BD8D290AC7", +Name = "IFinances")] +public interface IFinancesContract : IDisposable +{ + [OperationContract] + string Debit(string accountNo, double amount); + [OperationContract] + string Credit(string accountNo, double amount); +} + +``` + +> [!NOTE] +> IID はコントラクトの初期名前空間の一部です。 + + このサービスを使用するクライアント アプリケーションはこのコントラクトに準拠し、さらにアプリケーションの構成に指定したバインディングと互換性のあるバインディングを使用する必要があります。 + + 次のコード例は、既定の構成ファイルの例を示しています。 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] Web サービスであるため、これは標準サービス モデルの構成スキーマに準拠し、他の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの構成ファイルと同様の方法で編集できます。 + + 通常、次のような変更を行います。 + +- エンドポイント アドレスを既定の ApplicationName\/ComponentName\/InterfaceName という形式から、より利用しやすい形式に変更する。 + +- サービスの名前空間を既定の "http:\/\/tempuri.org\/InterfaceID" という形式から、より関連性の高い形式に変更する。 + +- 異なるトランスポート バインディングを使用するようにエンドポイントを変更する。 + + COM\+ ホスト モードの場合、既定では名前付きパイプ トランスポートが使用されますが、その代わりに TCP などのコンピューターに関係のないトランスポートも使用できます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [COM\+ アプリケーションとの統合](../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md b/docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md new file mode 100644 index 00000000000..3cf18d7d7c9 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md @@ -0,0 +1,86 @@ +--- +title: "方法 : フェデレーション サービスで資格情報を設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フェデレーション" + - "WCF, フェデレーション" +ms.assetid: 149ab165-0ef3-490a-83a9-4322a07bd98a +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# 方法 : フェデレーション サービスで資格情報を設定する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でフェデレーション サービスを作成するには、大きく分けると次のような手順があります。 + +1. または同様のカスタム バインディングの構成。適切なバインディングの作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : WSFederationHttpBinding を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md)」を参照してください。 + +2. サービスに提示される発行済みトークンの認証方法を制御する の構成。 + + このトピックでは、2 番目の手順について詳しく説明します。フェデレーション サービスのしくみ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md)」を参照してください。 + +### コードで IssuedTokenServiceCredential のプロパティを設定するには + +1. クラスの プロパティを使用して、 インスタンスへの参照を返します。このプロパティは、 クラスの プロパティからアクセスされます。 + +2. [!INCLUDE[infocard](../../../../includes/infocard-md.md)] カードのように自己発行されるトークンを認証する場合は、 プロパティを `true` に設定します。既定値は `false` です。 + +3. プロパティによって返されるコレクションに クラスのインスタンスを設定します。各インスタンスは、サービスが認証を行うトークンの発行者を表します。 + + > [!NOTE] + > プロパティによって返されるクライアント側のコレクションとは異なり、既知の証明書コレクションはキー付きのコレクションではありません。指定した証明書が発行するトークンは、発行済みトークンを含むメッセージを送信したクライアントのアドレスとは無関係に、サービスによって受け入れられます \(その他の制約については以下で説明します\)。 + +4. プロパティを 列挙値のいずれかに設定します。これは、コードでのみ設定することができます。既定値は です。 + +5. プロパティが に設定されている場合、カスタム クラスのインスタンスを プロパティに割り当てます。 + +6. が `ChainTrust` または `PeerOrChainTrust` に設定されている場合、 プロパティを 列挙値にある適切な値に設定します。失効モードは `PeerTrust` または `Custom` 検証モードでは使用されないことに注意してください。 + +7. 必要に応じて、カスタム クラスのインスタンスを プロパティに割り当てます。カスタム SAML \(Security Assertions Markup Language\) アサーションの解析などには、カスタム SAML シリアライザーが必要です。 + +### 構成で IssuedTokenServiceCredential のプロパティを設定するには + +1. \<`serviceCredentials`\> 要素の子として `` 要素を作成します。 + +2. [!INCLUDE[infocard](../../../../includes/infocard-md.md)] カードのように自己発行されるトークンを認証する場合は、`` 要素の `allowUntrustedRsaIssuers` 属性を `true` に設定します。 + +3. `` 要素の子要素として `` 要素を作成します。 + +4. `` 要素の子要素として 0 個以上の `` 要素を作成し、`storeLocation`、`storeName`、`x509FindType`、および `findValue` 属性を使用して証明書の検索方法を指定します。 + +5. 必要に応じて、\<`issuedTokenAuthentication`\> 要素の `samlSerializer` 属性をカスタム クラスの型名に設定します。 + +## 使用例 + 次の例では、 のプロパティをコードで設定しています。 + + [!code-csharp[C_FederatedService#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_federatedservice/cs/source.cs#2)] + [!code-vb[C_FederatedService#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_federatedservice/vb/source.vb#2)] + + クライアントがフェデレーション サービスによって認証されるためには、発行済みトークンが次のことを満たす必要があります。 + +- 発行済みトークンのデジタル署名が RSA セキュリティ キー識別子を使用している場合、 プロパティを `true` にする必要があります。 + +- 発行済みトークンの署名に X.509 発行者シリアル番号、X.509 サブジェクト キー識別子、または X.509 拇印セキュリティ識別子が使用されている場合、発行済みトークンは クラスの プロパティによって返されたコレクションにある証明書で署名されている必要があります。 + +- 発行済みトークンが X.509 証明書を使用して署名されている場合、証明書が として証明書利用者に送信されたか、 プロパティから取得されたかに関係なく、 プロパティの値で指定されるセマンティックスごとに証明書を検証する必要があります。X.509 証明書の検証[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。 + + たとえば、 に設定すると、その署名の証明書が `TrustedPeople` 証明書ストアに格納されている任意の発行済みトークンが認証されます。この場合、 プロパティを または に設定します。 を含めて、他のモードを選択できます。`Custom` を選択した場合、 クラスのインスタンスを プロパティに割り当てる必要があります。カスタム検証では、任意の基準を使用して証明書を検証できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : カスタム証明書検証を使用するサービスを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md). + +## 参照 + [フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md) + [フェデレーションと信頼](../../../../docs/framework/wcf/feature-details/federation-and-trust.md) + [フェデレーション サンプル](../../../../docs/framework/wcf/samples/federation-sample.md) + [方法 : WSFederationHttpBinding のセキュリティで保護されたセッションを無効にする](../../../../docs/framework/wcf/feature-details/how-to-disable-secure-sessions-on-a-wsfederationhttpbinding.md) + [方法 : WSFederationHttpBinding を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md) + [方法 : フェデレーション クライアントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [SecurityBindingElement 認証モード](../../../../docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-idle-behavior-with-workflowservicehost.md b/docs/framework/wcf/feature-details/how-to-configure-idle-behavior-with-workflowservicehost.md new file mode 100644 index 00000000000..d29115e062b --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-idle-behavior-with-workflowservicehost.md @@ -0,0 +1,46 @@ +--- +title: "WorkflowServiceHost を使用してアイドル動作を構成する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1bb93652-d687-46ff-bff6-69ecdcf97437 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# WorkflowServiceHost を使用してアイドル動作を構成する方法 +ワークフローは、外部からの働きかけによって再開される必要があるブックマークに遭遇すると、アイドル状態になります。たとえば、 アクティビティを使用して配信されるメッセージをワークフローが待機している場合などです。 は、サービス インスタンスがアイドル状態になってから、インスタンスが永続化またはアンロードされるまでの時間を指定できる動作です。 これには、これらの時間の範囲を設定する 2 つのプロパティがあります。 は、ワークフロー サービス インスタンスがアイドル状態になってから、そのワークフロー サービス インスタンスが永続化されるまでの時間の範囲を指定します。 は、ワークフロー サービス インスタンスがアイドル状態になってから、そのワークフロー サービス インスタンスがアンロードされるまでの時間の範囲を指定します。アンロードとは、インスタンスをインスタンス ストアに永続化し、メモリから削除することを意味します。 このトピックでは、 を構成ファイルで構成する方法について説明します。 + +### WorkflowIdleBehavior を構成するには + +1. 次の例に示すように、\<`workflowIdle`\> 要素を \<`serviceBehaviors`\> 要素内の \<`behavior`\> 要素に追加します。 + + ```xml + + + ``` + + `timeToUnload` 属性は、ワークフロー サービス インスタンスがアイドル状態になってから、そのワークフロー サービス インスタンスがアンロードされるまでの時間の範囲を指定します。`timeToPersist` 属性は、ワークフロー サービス インスタンスがアイドル状態になってから、そのワークフロー サービス インスタンスが永続化されるまでの時間の範囲を指定します。`timeToUnload` の既定値は 1 分です。`timeToPersist` の既定値は です。 インスタンスをメモリ内でアイドル状態を保ちながら信頼性を保持する場合、`timeToPersist` \< `timeToUnload` となるように値を設定します。 アイドル状態のインスタンスがアンロードされないようにするには、`timeToUnload` を に設定します。[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフロー サービス ホストの拡張機能](../../../../docs/framework/wcf/feature-details/workflow-service-host-extensibility.md)」を参照してください + + > [!NOTE] + > 前の構成サンプルでは、簡略化された構成を使用しています。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md)。 + +### コードのアイドル動作を変更するには + +- 次の例では、プログラムによって永続化とアンロードを行う前に待機する時間を変更します。 + + [!code-csharp[Wf_SvcHost_Idle_persist#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/wf_svchost_idle_persist/cs/source.cs#1)] + [!code-vb[Wf_SvcHost_Idle_persist#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/wf_svchost_idle_persist/vb/source.vb#1)] + +## 参照 + [ワークフロー サービス ホストの拡張機能](../../../../docs/framework/wcf/feature-details/workflow-service-host-extensibility.md) + [簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md) + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-persistence-with-workflowservicehost.md b/docs/framework/wcf/feature-details/how-to-configure-persistence-with-workflowservicehost.md new file mode 100644 index 00000000000..c92f661fb7d --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-persistence-with-workflowservicehost.md @@ -0,0 +1,73 @@ +--- +title: "WorkflowServiceHost を使用して永続性を構成する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e31cd4df-13a3-4a9a-9be8-5243e0055356 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# WorkflowServiceHost を使用して永続性を構成する方法 +このトピックでは、構成ファイルを使用して、 でホストされるワークフローに対して永続化を有効にするように、SQL Workflow Instance Store の機能を構成する方法について説明します。 SQL Workflow Instance Store 機能を使用する前に、ワークフロー インスタンスの永続化に使用する SQL データベースを作成する必要があります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][ワークフローとワークフロー サービスの SQL 永続性を有効にする方法](../../../../docs/framework/windows-workflow-foundation//how-to-enable-sql-persistence-for-workflows-and-workflow-services.md). + +### 構成において SQL Workflow Instance Store を構成するには + +1. SQL Workflow Instance Store のプロパティは、 を使用して構成できます。これは、XML 構成で設定を変更するために使用できるサービス動作です。 次の構成例では、構成ファイルで \<`sqlWorkflowInstanceStore`\> という動作要素を使用して SQL Workflow Instance Store を構成する方法について説明します。 + + ```xml + + + + + + + + ``` + + SQL Workflow Instance Store を構成する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフローとワークフロー サービスの SQL 永続性を有効にする方法](../../../../docs/framework/windows-workflow-foundation//how-to-enable-sql-persistence-for-workflows-and-workflow-services.md)」を参照してください。 \<`sqlWorkflowInstanceStore`\> 動作要素の個別の設定の[!INCLUDE[crabout](../../../../includes/crabout-md.md)] 「[SQL Workflow Instance Store](../../../../docs/framework/windows-workflow-foundation//sql-workflow-instance-store.md)」を参照してください。 Windows Server AppFabric は自己の永続ストアを提供します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] 「[Windows Server AppFabric の永続化](http://go.microsoft.com/fwlink/?LinkId=193121)」。 + + > [!NOTE] + > 前の構成例では、簡略化された構成を使用しています。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md) + +### コードで SQL Workflow Instance Store を構成するには + +1. SQL Workflow Instance Store のプロパティは、 を使用して構成できます。これは、コードで設定を変更できるサービス動作です。 次の例では、コードで という動作要素を使用して SQL Workflow Instance Store を構成する方法を示します。 + + ```csharp + host.Description.Behaviors.Add(new SqlWorkflowInstanceStoreBehavior + { + ConnectionString = "provider=System.Data.SqlClient;Data Source=(local);Initial Catalog=DefaultPersistenceProviderDb;Integrated Security=True;Async=true", + InstanceEncodingOption = "GZip | None", + InstanceCompletionAction = "DeleteAll | DeleteNothing", + InstanceLockedExceptionAction = "NoRetry | SimpleRetry | AggressiveRetry", + HostLockRenewalPeriod = new TimeSpan(00, 00, 30), + RunnableInstancesDetectionPeriod = new TimeSpan(00, 00, 05) + }); + ``` + + SQL Workflow Instance Store を構成する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフローとワークフロー サービスの SQL 永続性を有効にする方法](../../../../docs/framework/windows-workflow-foundation//how-to-enable-sql-persistence-for-workflows-and-workflow-services.md)」を参照してください。 動作要素の個別の設定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[SQL Workflow Instance Store](../../../../docs/framework/windows-workflow-foundation//sql-workflow-instance-store.md)」を参照してください。 Windows Server AppFabric は自己の永続ストアを提供します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] 「[Windows Server AppFabric の永続化](http://go.microsoft.com/fwlink/?LinkId=193121)」。 + + > [!NOTE] + > 前の構成例では、簡略化された構成を使用しています。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md) + + プログラムによって永続化を構成する方法の例については、「[ワークフローとワークフロー サービスの永続化を有効にする方法](../../../../docs/framework/windows-workflow-foundation//how-to-enable-persistence-for-workflows-and-workflow-services.md)」を参照してください。 + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [ワークフローの永続性](../../../../docs/framework/windows-workflow-foundation//workflow-persistence.md) + [Windows Server AppFabric の永続化](http://go.microsoft.com/fwlink/?LinkId=193121) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-tracking-with-workflowservicehost.md b/docs/framework/wcf/feature-details/how-to-configure-tracking-with-workflowservicehost.md new file mode 100644 index 00000000000..566dfeb2431 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-tracking-with-workflowservicehost.md @@ -0,0 +1,83 @@ +--- +title: "方法: WorkflowServiceHost を使用して追跡を構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ed1485fe-7529-4351-bca3-8bb915260b17 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法: WorkflowServiceHost を使用して追跡を構成する +このトピックでは、 でホストされている [!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] ワークフロー サービスの追跡を構成する方法について説明します。 これは、Web.config ファイルにサービスの動作を指定することによって指定します。 + +### 構成での追跡の構成 + +1. 次の例に示すように、\<`behavior`\> 要素を構成ファイルで使用し、 を追加します。 + + ``` + + + + +             + + + + ``` + + > [!NOTE] + > 前の構成サンプルでは、簡略化された構成を使用しています。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md). + + 前の構成サンプルでは、 を追加し、追跡プロファイル名を指定します。 追跡プロファイルは、\<`tracking`\> 要素内の \<`trackingProfile`\> 要素で作成されます。 追跡プロファイルには、実行時にワークフロー インスタンスの状態が変化したときに生成されるワークフロー イベントを追跡参加要素が定期受信できるようにする、追跡クエリが含まれています。 追跡プロファイルを作成する方法を次の例に示します。 + + ```xml + + + + + + + + + + + + + + + + + + ``` + + 追跡プロファイル[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[追跡プロファイル](../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + + 追跡全般[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフロー追跡とトレース](../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」を参照してください。 + +### コードでの追跡の構成 + +1. 次の例に示すように、コードで を動作を使用して を追加します。 + + ```csharp + host.Description.Behaviors.Add(new EtwTrackingBehavior { ProfileName = "Sample Tracking Profile" }); + ``` + + 前のコード サンプルでは、 を追加し、追跡プロファイル名を指定します。 追跡プロファイルは、前のセクションで説明したように \<`tracking`\> 要素内の \<`trackingProfile`\> 要素で作成されます。 + + 追跡プロファイル[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[追跡プロファイル](../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md)」を参照してください。 + + 追跡全般[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフロー追跡とトレース](../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」を参照してください。 プログラムによる追跡の構成例については、「[ワークフローの追跡の構成](../../../../docs/framework/windows-workflow-foundation//configuring-tracking-for-a-workflow.md)」を参照してください。 + +## 参照 + [WCF サービスの簡略化された構成](../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md) + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [追跡プロファイル](../../../../docs/framework/windows-workflow-foundation//tracking-profiles.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-configure-wcf-services-to-interoperate-with-wse-3-0-clients.md b/docs/framework/wcf/feature-details/how-to-configure-wcf-services-to-interoperate-with-wse-3-0-clients.md new file mode 100644 index 00000000000..7e0e6c978d4 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-configure-wcf-services-to-interoperate-with-wse-3-0-clients.md @@ -0,0 +1,101 @@ +--- +title: "方法 : WCF サービスと WSE 3.0 クライアントを相互運用するために構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0f38c4a0-49a6-437c-bdde-ad1d138d3c4a +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : WCF サービスと WSE 3.0 クライアントを相互運用するために構成する +[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが WS\-Addressing 仕様の 2004 年 8 月版を使用して構成されている場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスは Microsoft .NET クライアントの WSE \(Web サービス拡張\) 3.0 とネットワーク レベルで互換性があります。 + +### WCF サービスを WSE 3.0 クライアントと相互運用できるようにするには + +1. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのカスタム バインディングを定義します。 + + メッセージ エンコーディングに 2004 年 8 月版の WS\-Addressing 仕様が使用されるように指定するには、カスタム バインディングを作成する必要があります。 + + 1. サービスの構成ファイルの [\](../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) に子要素として [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)を追加します。 + + 2. [\](../../../../docs/framework/misc/binding.md)を [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)に追加して、`name` 属性を設定することにより、バインディングの名前を指定します。 + + 3. [\](../../../../docs/framework/misc/binding.md)の子要素として[\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)を追加することで、WSE 3.0 と互換性があるメッセージをセキュリティ保護するために使用される認証モードと WS\-Security 仕様のバージョンを指定します。 + + 認証モードを設定するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)の `authenicationMode` 属性を設定します。認証モードは、WSE 3.0 の設定不要のセキュリティ アサーションとほぼ同等です。次の表に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の認証モードと WSE 3.0 の設定不要のセキュリティ アサーションとの対応を示します。 + + |WCF 認証モード|WSE 3.0 の設定不要のセキュリティ アサーション| + |---------------|---------------------------------| + ||`anonymousForCertificateSecurity`| + ||`kerberosSecurity`| + ||`mutualCertificate10Security`\*| + ||`mutualCertificate11Security`\*| + ||`usernameOverTransportSecurity`| + ||`usernameForCertificateSecurity`| + + \* `mutualCertificate10Security` と `mutualCertificate11Security` の設定不要のセキュリティ アサーションとの主な相違点の 1 つに、WSE が SOAP メッセージのセキュリティ保護で使用する WS\-Security 仕様のバージョンがあります。`mutualCertificate10Security` では WS\-Security 1.0 が使用され、`mutualCertificate11Security` では WS\-Security 1.1 が使用されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、WS\-Security 仕様のバージョンは [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)の `messageSecurityVersion` 属性で指定されます。 + + セキュリティ保護された SOAP メッセージで使用される WS\-Security 仕様のバージョンを設定するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)の `messageSecurityVersion` 属性を設定します。WSE 3.0 と相互運用するには、`messageSecurityVersion` 属性の値を に設定します。 + + 4. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が 2004 年 8 月版の WS\-Addressing 仕様を使用することを指定するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/textmessageencoding.md)を追加し、その `messageVersion` の値を に設定します。 + + > [!NOTE] + > SOAP 1.2 の使用時には、`messageVersion` 属性を に設定します。 + +2. サービスがカスタム バインディングを使用するように指定します。 + + 1. [\](../../../../docs/framework/configure-apps/file-schema/wcf/endpoint-element.md)要素の `binding` 属性を `customBinding` に設定します。 + + 2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/endpoint-element.md)要素の `bindingConfiguration` 属性をカスタム バインディングの[\](../../../../docs/framework/misc/binding.md)の `name` 属性で指定されている値に設定します。 + +## 使用例 + 次のコード例では、`Service.HelloWorldService` が WSE 3.0 クライアントと相互運用するためにカスタム バインディングを使用するように指定します。カスタム バインディングには 2004 年 8 月版の WS\-Addressing が指定され、WS\-Security 1.1 の一連の仕様が、交換されるメッセージのエンコードに使用されます。メッセージは、 認証モードを使用してセキュリティ保護されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [方法 : システム指定のバインディングをカスタマイズする](../../../../docs/framework/wcf/extending/how-to-customize-a-system-provided-binding.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-consistently-reference-x-509-certificates.md b/docs/framework/wcf/feature-details/how-to-consistently-reference-x-509-certificates.md new file mode 100644 index 00000000000..0712a649f6c --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-consistently-reference-x-509-certificates.md @@ -0,0 +1,44 @@ +--- +title: "方法 : 一貫性を保って X.509 証明書を参照する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "証明書 [WCF], X.509 証明書の参照" +ms.assetid: a6de1c63-e450-4640-ad08-ad7302dbfbfc +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 方法 : 一貫性を保って X.509 証明書を参照する +証明書を識別する方法には、証明書のハッシュを使用する方法、発行者とシリアル番号を使用する方法、またはサブジェクト キー識別子 \(SKI\) を使用する方法があります。SKI を使用すると、証明書のサブジェクト公開キーを一意に識別できます。SKI は、XML デジタル署名を処理する場合によく使用されます。SKI の値は、通常、*X.509 証明書の拡張*として X.509 証明書の一部を構成します。SKI 拡張が証明書に見つからない場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、発行者とシリアル番号を使用する既定の*参照スタイル*を使用します。証明書に SKI 拡張が含まれる場合、既定の参照スタイルは SKI を使用してその証明書を識別します。アプリケーションの開発中に、SKI 拡張を使用しない証明書から SKI 拡張を使用する証明書に切り替えた場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が生成するメッセージに使用される参照スタイルも変更されます。 + + SKI 拡張が存在するかどうかに関係なく、一貫性のある参照スタイルが必要な場合は、次のコードに示されているような参照スタイルを構成できます。 + +## 使用例 + 次の例では、1 つの一貫した参照スタイル \(ユーザー名とシリアル番号\) を使用するカスタム セキュリティ バインド要素を作成します。 + + [!code-csharp[c_ReferencingCertificatesConsistently#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_referencingcertificatesconsistently/cs/source.cs#1)] + [!code-vb[c_ReferencingCertificatesConsistently#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_referencingcertificatesconsistently/vb/source.vb#1)] + +## コードのコンパイル + 次の名前空間は以下のコードのコンパイルに必要です。 + +- + +- + +- + +- + +## 参照 + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-control-service-instancing.md b/docs/framework/wcf/feature-details/how-to-control-service-instancing.md new file mode 100644 index 00000000000..442ff62d8c1 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-control-service-instancing.md @@ -0,0 +1,44 @@ +--- +title: "方法 : サービスのインスタンス化を制御する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: e0b12b34-8004-443a-a46d-83a5c00f2601 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# 方法 : サービスのインスタンス化を制御する +サービスのインスタンス モードを設定することにより、 \(およびそのユーザー定義のサービス オブジェクト\) をいつ生成するかを指定できます。 設定できるモードについては、 列挙体を参照してください。 動作[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[動作を使用したランタイムの構成と拡張](../../../../docs/framework/wcf/extending/configuring-and-extending-the-runtime-with-behaviors.md)」を参照してください。 実施例については、「[動作](../../../../docs/framework/wcf/samples/behaviors.md)」を参照してください。 + +### サービス インスタンスの有効期間をコードで制御するには + +1. サービス クラスに 属性を適用します。 + +2. プロパティを のいずれかの値に設定します。 + + [!code-csharp[C_ControlServiceInstancing#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_controlserviceinstancing/cs/source.cs#1)] + [!code-vb[C_ControlServiceInstancing#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_controlserviceinstancing/vb/source.vb#1)] + +## 使用例 + 属性の プロパティを に設定するコード例を示します。 + + [!code-csharp[c_ControlServiceInstancing#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_controlserviceinstancing/cs/source.cs#2)] + [!code-vb[c_ControlServiceInstancing#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_controlserviceinstancing/vb/source.vb#2)] + +## 参照 + + + + [Service: Behaviors Samples](http://msdn.microsoft.com/ja-jp/4e3c6513-a7ff-4b35-8dcf-b5506c6f39a7) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-basic-atom-feed.md b/docs/framework/wcf/feature-details/how-to-create-a-basic-atom-feed.md new file mode 100644 index 00000000000..f7a7ea4b117 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-basic-atom-feed.md @@ -0,0 +1,105 @@ +--- +title: "方法 : 基本的な ATOM フィードを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6e0cacc1-9b11-4665-adb7-577a62626fd6 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : 基本的な ATOM フィードを作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、配信フィードを公開するサービスを作成できます。ここでは、ATOM 配信フィードを公開する配信サービスを作成する方法について説明します。 + +### 基本的な配信サービスを作成するには + +1. 属性でマークされたインターフェイスを使用して、サービス コントラクトを定義します。配信フィードとして公開される各操作は、 オブジェクトを返す必要があります。 + + [!code-csharp[htAtomBasic#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/program.cs#0)] + [!code-vb[htAtomBasic#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/program.vb#0)] + + > [!NOTE] + > を適用するすべてのサービス操作は、HTTP GET 要求にマッピングされます。他の HTTP メソッドに操作をマッピングするには、代わりに を使用します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : 基本的な WCF Web HTTP サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-wcf-web-http-service.md). + +2. サービス コントラクトを実装します。 + + [!code-csharp[htAtomBasic#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/program.cs#1)] + [!code-vb[htAtomBasic#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/program.vb#1)] + +3. オブジェクトを作成し、作成者、カテゴリ、および説明を追加します。 + + [!code-csharp[htAtomBasic#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/program.cs#2)] + [!code-vb[htAtomBasic#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/program.vb#2)] + +4. 複数の オブジェクトを作成します。 + + [!code-csharp[htAtomBasic#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/program.cs#3)] + [!code-vb[htAtomBasic#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/program.vb#3)] + +5. オブジェクトをフィードに追加します。 + + [!code-csharp[htAtomBasic#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/program.cs#4)] + [!code-vb[htAtomBasic#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/program.vb#4)] + +6. フィードを返します。 + + [!code-csharp[htAtomBasic#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/program.cs#5)] + [!code-vb[htAtomBasic#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/program.vb#5)] + +### サービスをホストするには + +1. オブジェクトを作成します。 + + [!code-csharp[htAtomBasic#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/program.cs#6)] + [!code-vb[htAtomBasic#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/program.vb#6)] + +2. サービス ホストを開き、サービスからフィードを読み込み、フィードを表示してから、ユーザーが Enter キーを押すのを待ちます。 + + [!code-csharp[htAtomBasic#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/program.cs#8)] + [!code-vb[htAtomBasic#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/program.vb#8)] + +### HTTP GET で GetBlog\(\) を呼び出すには + +1. Internet Explorer を開いて「http:\/\/localhost:8000\/BlogService\/GetBlog」という URL を入力し、Enter キーを押します。 + + この URL には、サービスのベース アドレス \(http:\/\/localhost:8000\/BlogService\)、エンドポイントの相対アドレス、および呼び出すサービス操作が含まれます。 + +### コードから GetBlog\(\) を呼び出すには + +1. ベース アドレスと呼び出すメソッドを使用して を作成します。 + + [!code-csharp[htAtomBasic#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/snippets.cs#9)] + [!code-vb[htAtomBasic#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/snippets.vb#9)] + +2. 静的な メソッドを呼び出し、作成した を渡します。 + + [!code-csharp[htAtomBasic#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/snippets.cs#10)] + [!code-vb[htAtomBasic#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/snippets.vb#10)] + + これにより、サービス操作が呼び出され、サービス操作から返されたフォーマッタが新しい に設定されます。 + +3. フィード オブジェクトにアクセスします。 + + [!code-csharp[htAtomBasic#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/snippets.cs#11)] + [!code-vb[htAtomBasic#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/snippets.vb#11)] + +## 使用例 + この例の完全なコードの一覧を以下に示します。 + + [!code-csharp[htAtomBasic#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatombasic/cs/program.cs#12)] + [!code-vb[htAtomBasic#12](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatombasic/vb/program.vb#12)] + +## コードのコンパイル + 上記のコードのコンパイル時には、System.ServiceModel.dll と System.ServiceModel.Web.dll が参照されます。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-basic-data-contract-for-a-class-or-structure.md b/docs/framework/wcf/feature-details/how-to-create-a-basic-data-contract-for-a-class-or-structure.md new file mode 100644 index 00000000000..b52f906b69a --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-basic-data-contract-for-a-class-or-structure.md @@ -0,0 +1,51 @@ +--- +title: "方法 : クラスまたは構造体に基本的なデータ コントラクトを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "データ コントラクト [WCF], クラスまたは構造体に作成" + - "DataContractAttribute クラス" + - "DataMemberAttribute" +ms.assetid: bc464889-3070-4a2f-91d2-e788a0f686a7 +caps.latest.revision: 25 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 25 +--- +# 方法 : クラスまたは構造体に基本的なデータ コントラクトを作成する +このトピックでは、クラスまたは構造体を使用してデータ コントラクトを作成する基本的な手順を示します。 データ コントラクトおよびその使用方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md)」を参照してください。 + + 基本的な [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスおよびクライアントの作成方法を順を追って解説したチュートリアルが必要な場合は、「[チュートリアル入門](../../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 基本的なサービスとクライアントで構成される実際のサンプル アプリケーションについては、「[基本的なデータ コントラクト](../../../../docs/framework/wcf/samples/basic-data-contract.md)」を参照してください。 + +### クラスまたは構造体に基本的なデータ コントラクトを作成するには + +1. クラスに 属性を適用することにより、データ コントラクトを持つ型であることを宣言します。 パブリック型は、属性のないものも含めてすべてシリアル化されます。 属性がない場合は、 によってデータ コントラクトが推論されます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[シリアル化可能な型](../../../../docs/framework/wcf/feature-details/serializable-types.md)」を参照してください。 + +2. シリアル化するメンバー \(プロパティ、フィールド、またはイベント\) を定義します。これは、該当する各メンバーに 属性を適用することで行います。 このようなメンバーのことを、データ メンバーと呼びます。 既定では、すべてのパブリック型がシリアル化されます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[シリアル化可能な型](../../../../docs/framework/wcf/feature-details/serializable-types.md)」を参照してください。 + + > [!NOTE] + > プライベート フィールドであっても、 属性を適用すると、データが外部に公開されることになります。 機密性のあるデータが含まれていないかどうか確認してください。 + +## 使用例 + 次の例では、 属性と 属性をクラスとそのメンバーに適用して、`Person` 型のデータ コントラクトを作成する方法を示します。 + + [!code-csharp[DataContractAttribute#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/datacontractattribute/cs/overview.cs#2)] + [!code-vb[DataContractAttribute#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/datacontractattribute/vb/overview.vb#2)] + +## 参照 + + + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + [チュートリアル入門](../../../../docs/framework/wcf/getting-started-tutorial.md) + [概要](../../../../docs/framework/wcf/samples/getting-started-sample.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-basic-rss-feed.md b/docs/framework/wcf/feature-details/how-to-create-a-basic-rss-feed.md new file mode 100644 index 00000000000..2f1ef8fcb79 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-basic-rss-feed.md @@ -0,0 +1,103 @@ +--- +title: "方法 : 基本的な RSS フィードを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 431879b8-a5f8-4947-ad1e-4768c726aca8 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# 方法 : 基本的な RSS フィードを作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、配信フィードを公開するサービスを作成できます。ここでは、RSS 配信フィードを公開する配信サービスを作成する方法について説明します。 + +### 基本的な配信サービスを作成するには + +1. 属性でマークされたインターフェイスを使用して、サービス コントラクトを定義します。配信フィードとして公開される各操作は、 オブジェクトを返す必要があります。 + + [!code-csharp[htRssBasic#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/program.cs#0)] + [!code-vb[htRssBasic#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/program.vb#0)] + + > [!NOTE] + > 属性を適用するすべてのサービス操作は、HTTP GET 要求にマッピングされます。他の HTTP メソッドに操作をマッピングするには、代わりに を使用します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : 基本的な WCF Web HTTP サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-wcf-web-http-service.md). + +2. サービス コントラクトを実装します。 + + [!code-csharp[htRssBasic#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/program.cs#1)] + [!code-vb[htRssBasic#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/program.vb#1)] + +3. オブジェクトを作成し、作成者、カテゴリ、および説明を追加します。 + + [!code-csharp[htRssBasic#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/program.cs#2)] + [!code-vb[htRssBasic#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/program.vb#2)] + +4. 複数の オブジェクトを作成します。 + + [!code-csharp[htRssBasic#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/program.cs#3)] + [!code-vb[htRssBasic#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/program.vb#3)] + +5. をフィードに追加します。 + + [!code-csharp[htRssBasic#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/program.cs#4)] + [!code-vb[htRssBasic#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/program.vb#4)] + +6. フィードを返します。 + + [!code-csharp[htRssBasic#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/program.cs#5)] + [!code-vb[htRssBasic#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/program.vb#5)] + +### サービスをホストするには + +1. オブジェクトを作成します。 + + [!code-csharp[htRssBasic#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/program.cs#6)] + [!code-vb[htRssBasic#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/program.vb#6)] + +2. サービス ホストを開き、ユーザーが Enter キーを押すのを待ちます。 + + [!code-csharp[htRssBasic#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/program.cs#8)] + [!code-vb[htRssBasic#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/program.vb#8)] + +### HTTP GET で GetBlog\(\) を呼び出すには + +1. Internet Explorer を開いて「http:\/\/localhost:8000\/BlogService\/GetBlog」という URL を入力し、Enter キーを押します。この URL には、サービスのベース アドレス \(http:\/\/localhost:8000\/BlogService\)、エンドポイントの相対アドレス、および呼び出すサービス操作が含まれます。 + +### コードから GetBlog\(\) を呼び出すには + +1. ベース アドレスと呼び出すメソッドを使用して を作成します。 + + [!code-csharp[htRssBasic#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/snippets.cs#9)] + [!code-vb[htRssBasic#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/snippets.vb#9)] + +2. 静的な メソッドを呼び出し、作成した を渡します。 + + [!code-csharp[htRssBasic#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/snippets.cs#10)] + [!code-vb[htRssBasic#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/snippets.vb#10)] + + これにより、サービス操作が呼び出され、サービス操作から返されたフォーマッタが新しい に設定されます。 + +3. フィード オブジェクトにアクセスします。 + + [!code-csharp[htRssBasic#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/snippets.cs#11)] + [!code-vb[htRssBasic#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/snippets.vb#11)] + +## 使用例 + この例の完全なコードの一覧を以下に示します。 + + [!code-csharp[htRssBasic#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/htrssbasic/cs/program.cs#12)] + [!code-vb[htRssBasic#12](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htrssbasic/vb/program.vb#12)] + +## コードのコンパイル + 上記のコードのコンパイル時には、System.ServiceModel.dll と System.ServiceModel.Web.dll が参照されます。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-basic-wcf-web-http-service.md b/docs/framework/wcf/feature-details/how-to-create-a-basic-wcf-web-http-service.md new file mode 100644 index 00000000000..91300238cfe --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-basic-wcf-web-http-service.md @@ -0,0 +1,123 @@ +--- +title: "方法 : 基本的な WCF Web HTTP サービスを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 877662d3-d372-4e08-b417-51f66a0095cd +caps.latest.revision: 26 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 26 +--- +# 方法 : 基本的な WCF Web HTTP サービスを作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、Web エンドポイントを公開するサービスを作成できます。Web エンドポイントは、XML または JSON でデータを送信します。SOAP エンベロープはありません。ここでは、このようなエンドポイントを公開する方法を示します。 + +> [!NOTE] +> Web エンドポイントをセキュリティで保護する唯一の方法は、トランスポート セキュリティを使用する HTTPS を介してエンドポイントを公開することです。メッセージ ベースのセキュリティを使用する場合、セキュリティ情報は通常 SOAP ヘッダーに配置されます。SOAP 以外のエンドポイントに送信するメッセージには SOAP エンベロープが含まれないため、セキュリティ情報を配置する場所がなく、トランスポート セキュリティに依存する必要があります。 + +### Web エンドポイントを作成するには + +1. 、および の各属性でマークされたインターフェイスを使用して、サービス コントラクトを定義します。 + + [!code-csharp[htBasicService#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/service.cs#0)] + [!code-vb[htBasicService#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/service.vb#0)] + + > [!NOTE] + > 既定では、 は POST 呼び出しを操作にマッピングします。ただし、"method\=" パラメーターを指定することで、操作にマッピングする HTTP メソッド \(HEAD、PUT、DELETE など\) を指定できます。 には "method\=" パラメーターがないため、サービス操作には GET 呼び出しのみがマッピングされます。 + +2. サービス コントラクトを実装します。 + + [!code-csharp[htBasicService#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/service.cs#1)] + [!code-vb[htBasicService#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/service.vb#1)] + +### サービスをホストするには + +1. オブジェクトを作成します。 + + [!code-csharp[htBasicService#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/service.cs#2)] + [!code-vb[htBasicService#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/service.vb#2)] + +2. を持つ を追加します。 + + [!code-csharp[htBasicService#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/service.cs#3)] + [!code-vb[htBasicService#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/service.vb#3)] + + > [!NOTE] + > エンド ポイントを追加しない場合は、 が自動的に既定のエンド ポイントを作成します。 は、ほかにも を追加し、HTTP ヘルプ ページと Web サービス記述言語 \(WSDL\) GET 機能を無効にすることによって、メタデータ エンドポイントが既定の HTTP エンドポイントに干渉しないようにします。 + > + > URL が "" である SOAP 以外のエンドポイントを追加すると、エンドポイント上の操作の呼び出しを行うときに予期しない動作が発生します。これはエンドポイントのリッスン URI が、ヘルプ ページ \([!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのベース アドレスに移動すると表示されるページ\) の URI と同じになるためです。 + + これを回避するには、次のいずれかの操作を行います。 + + - SOAP 以外のエンドポイントについては、空ではない URI を指定するようにします。 + + - ヘルプ ページを無効にします。これは、次のコードで実現できます。 + + [!code-csharp[htBasicService#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/snippets.cs#4)] + [!code-vb[htBasicService#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/snippets.vb#4)] + +3. サービス ホストを開き、ユーザーが Enter キーを押すのを待ちます。 + + [!code-csharp[htBasicService#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/snippets.cs#5)] + [!code-vb[htBasicService#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/snippets.vb#5)] + + このサンプルでは、コンソール アプリケーションで Web スタイル サービスをホストする方法を示します。IIS からこのようなサービスをホストすることもできます。これを行うには、次のコードに示すように、.svc ファイルで クラスを指定します。 + + ``` + <%ServiceHost + language=c# + Debug="true" + Service="Microsoft.Samples.Service" + Factory=System.ServiceModel.Activation.WebServiceHostFactory%> + ``` + +### Internet Explorer で GET にマッピングされたサービス操作を呼び出すには + +1. Internet Explorer を開いて「`http://localhost:8000/EchoWithGet?s=Hello, world!`」と入力し、Enter キーを押します。この URL には、サービスのベース アドレス \("http:\/\/localhost:8000\/"\) が含まれており、エンドポイントの相対アドレス \(""\)、呼び出しを行うサービス操作 \("EchoWithGet"\)、疑問符の後にアンパサンド \(&\) で区切られた名前付きパラメーターのリストが続きます。 + +### コードからサービス操作を呼び出すには + +1. `using` ブロック内で のインスタンスを作成します。 + + [!code-csharp[htBasicService#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/service.cs#6)] + [!code-vb[htBasicService#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/service.vb#6)] + +2. が呼び出すエンドポイントに を追加します。 + + [!code-csharp[htBasicService#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/service.cs#7)] + [!code-vb[htBasicService#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/service.vb#7)] + +3. チャネルを作成し、サービスを呼び出します。 + + [!code-csharp[htBasicService#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/service.cs#8)] + [!code-vb[htBasicService#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/service.vb#8)] + +4. を閉じます。 + + [!code-csharp[htBasicService#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/service.cs#9)] + [!code-vb[htBasicService#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/service.vb#9)] + +## 使用例 + この例の完全なコードの一覧を以下に示します。 + + [!code-csharp[htBasicService#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/htbasicservice/cs/service.cs#10)] + [!code-vb[htBasicService#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htbasicservice/vb/service.vb#10)] + +## コードのコンパイル + Service.cs のコンパイル時には、System.ServiceModel.dll と System.ServiceModel.Web.dll が参照されます。 + +## 参照 + + + + + + + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-channel-factory-and-use-it-to-create-and-manage-channels.md b/docs/framework/wcf/feature-details/how-to-create-a-channel-factory-and-use-it-to-create-and-manage-channels.md new file mode 100644 index 00000000000..156a2cb972c --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-channel-factory-and-use-it-to-create-and-manage-channels.md @@ -0,0 +1,28 @@ +--- +title: "方法 : チャネル ファクトリを作成および使用して、チャネルを作成および管理する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 018dcc30-9f61-419e-af8e-412a85e8d282 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 方法 : チャネル ファクトリを作成および使用して、チャネルを作成および管理する + クラスは、クライアントがサービス エンドポイントとの間でメッセージを送受信するために使用する、さまざまな種類の双方向チャネルを作成したり、管理したりする手段を提供します。 + +## 使用例 + 次のコードは、チャネル ファクトリを作成および使用して、チャネルを作成および管理する方法を示しています。 + + [!code-csharp[S_CustomAuthentication#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_customauthentication/cs/instance.cs#1)] + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md b/docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md new file mode 100644 index 00000000000..148fd3fe036 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md @@ -0,0 +1,119 @@ +--- +title: "方法 : SecurityBindingElement を使用してカスタム バインドを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF] カスタム バインディングの作成" +ms.assetid: 203a9f9e-3a73-427c-87aa-721c56265b29 +caps.latest.revision: 19 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 19 +--- +# 方法 : SecurityBindingElement を使用してカスタム バインドを作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] にはシステム指定のバインディングがいくつか含まれています。これらのバインディングは構成できますが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がサポートするすべてのセキュリティ オプションを構成しようとする場合には十分な柔軟性が得られません。 ここでは、個別のバインド要素からカスタム バインドを直接作成する方法を説明し、このようなバインディングを作成する場合に指定できるセキュリティ設定のいくつかに焦点を当てます。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]カスタム バインディングを作成するを参照してください[バインディングの拡張](../../../../docs/framework/wcf/extending/extending-bindings.md)します。 + +> [!WARNING] +> はサポートしていません、 チャネル形状をチャネル形状によって使用される既定の TCP は、トランスポートの場合にに設定されているします。 設定する必要がありますを使用するためにこのシナリオでします。 + +## カスタム バインドの作成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]のすべてのバインドが構成されている*バインド要素*します。 派生した各バインド要素、 クラスです。 標準のシステム指定のバインディングの場合、バインド要素は自動的に作成および構成されます。ただし、プロパティ設定の一部はカスタマイズが可能です。 + + これに対し、カスタム バインディングを作成するバインド要素作成および構成されると、 のバインド要素から作成します。 + + これを行うには、インスタンスによって表されるコレクションに個別のバインド要素を追加した、 クラス、および設定し、`Elements`のプロパティ、`CustomBinding`そのオブジェクトと等しい。 バインド要素は、トランザクション フロー、信頼できるセッション、セキュリティ、複合二重、一方向、ストリーム セキュリティ、メッセージ エンコーディング、トランスポートの順に追加する必要があります。 どのバインディングでも、これらすべてのバインド要素が必要になるとは限りません。 + +## SecurityBindingElement + 次の&3; つのバインド要素から派生できるすべてのメッセージ レベルのセキュリティに関連、 クラスです。 3 つ、およびします。 混合モード セキュリティを提供するために使用します。 他の&2; つの要素は、メッセージ層でセキュリティを提供する場合に使用します。 + + トランスポート レベルのセキュリティが提供される場合は、次の追加のクラスが使用されます。 + +- + +- + +- + +## 必要なバインド要素 + 1 つのバインディングに結合できる可能性のあるバインド要素は多数存在します。 これらの組み合わせすべてが有効なわけではありません。 ここでは、セキュリティ バインディングに存在する必要のある要素について説明します。 + + 有効なセキュリティ バインディングは、次のような多くの要因に依存します。 + +- セキュリティ モード + +- トランスポート プロトコル + +- コントラクトに指定されているメッセージ交換パターン (MEP) + + 前述の要因の各組み合わせに有効なバインド要素のスタックの構成を次の表に示します。 これらは最小限の要件であることに注意してください。 メッセージ エンコーディング バインド要素、トランザクション バインド要素などの追加のバインド要素をバインディングに追加することもできます。 + +|セキュリティ モード|Transport|コントラクトのメッセージ交換パターン|コントラクトのメッセージ交換パターン|コントラクトのメッセージ交換パターン| +|-------------------|---------------|---------------------------------------|---------------------------------------|---------------------------------------| +|||`Datagram`|`Request Reply`|`Duplex`| +|Transport|Https|||| +|||OneWayBindingElement||| +|||HttpsTransportBindingElement|HttpsTransportBindingElement|| +||TCP|||| +|||OneWayBindingElement||| +|||SSL または Windows StreamSecurityBindingElement|SSL または Windows StreamSecurityBindingElement|SSL または Windows StreamSecurityBindingElement| +|||TcpTransportBindingElement|TcpTransportBindingElement|TcpTransportBindingElement| +|メッセージ|Http|SymmetricSecurityBindingElement|SymmetricSecurityBindingElement|SymmetricSecurityBindingElement (認証モード = SecureConversation)| +|||||CompositeDuplexBindingElement| +|||OneWayBindingElement||OneWayBindingElement| +|||HttpTransportBindingElement|HttpTransportBindingElement|HttpTransportBindingElement| +||Tcp|SecurityBindingElement|SecurityBindingElement|SymmetricSecurityBindingElement (認証モード = SecureConversation)| +|||TcpTransportBindingElement|TcpTransportBindingElement|TcpTransportBindingElement| +|混合 (メッセージ資格情報付きトランスポート)|Https|TransportSecurityBindingElement|TransportSecurityBindingElement|| +|||OneWayBindingElement||| +|||HttpsTransportBindingElement|HttpsTransportBindingElement|| +||TCP|TransportSecurityBindingElement|SymmetricSecurityBindingElement (認証モード = SecureConversation)|SymmetricSecurityBindingElement (認証モード = SecureConversation)| +|||OneWayBindingElement||| +|||SSL または Windows StreamSecurityBindingElement|SSL または Windows StreamSecurityBindingElement|SSL または Windows StreamSecurityBindingElement| +|||TcpTransportBindingElement|TcpTransportBindingElement|TcpTransportBindingElement| + + SecurityBindingElements には構成可能な設定が多数あることに注意してください。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][SecurityBindingElement 認証モード](../../../../docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md)します。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][メッセージ交換とセッションをセキュリティで保護](../../../../docs/framework/wcf/feature-details/secure-conversations-and-secure-sessions.md)します。 + +## 手順 + +#### SymmetricSecurityBindingElement を使用するカスタム バインドを作成するには + +1. インスタンスを作成、 名前を持つクラス`outputBec`します。 + +2. 静的メソッドを呼び出して`M:System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(true)`のインスタンスを返す、 クラスです。 + +3. 追加、 コレクション (`outputBec`) を呼び出して、`Add`のメソッド、クラスです。 + +4. インスタンスを作成、 クラスにし、コレクションに追加 (`outputBec`)。 これにより、バインディングによって使用されるエンコーディングが指定されます。 + +5. 作成、 コレクションに追加し、(`outputBec`)。 これにより、バインディングが HTTP トランスポートを使用することが指定されます。 + +6. インスタンスを作成することで、新しいカスタム バインドを作成、 クラスとコレクションを渡す`outputBec`コンス トラクターにします。 + +7. 作成されたカスタム バインディングは、標準と同じ特性を数多く共有します。 カスタム バインディングではメッセージ レベルのセキュリティと Windows 資格情報が指定されていますが、セキュリティで保護されたセッションは無効になっているため、サービス資格情報が帯域外で指定される必要があり、また署名も暗号化されません。 最後は設定によってのみ制御できます、 プロパティ手順 4. で示したようにします。 他の&2; つについては、標準バインディングの設定を使用することで制御できます。 + +## 例 + +### 説明 + 次の例を使用するカスタム バインディングを作成する関数全体を提供する、 します。 + +### コード + [!code-csharp[c_CustomBinding#20](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombinding/cs/c_custombinding.cs#20)] + [!code-vb[c_CustomBinding#20](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_custombinding/vb/source.vb#20)] + +## 関連項目 + + + + + [バインディングの拡張](../../../../docs/framework/wcf/extending/extending-bindings.md) + [システム指定のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-custom-reliable-session-binding-with-https.md b/docs/framework/wcf/feature-details/how-to-create-a-custom-reliable-session-binding-with-https.md new file mode 100644 index 00000000000..da530b35a9f --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-custom-reliable-session-binding-with-https.md @@ -0,0 +1,81 @@ +--- +title: "方法 : カスタムの信頼できるセッションによる HTTPS を使用したバインディングを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fa772232-da1f-4c66-8c94-e36c0584b549 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : カスタムの信頼できるセッションによる HTTPS を使用したバインディングを作成する +ここでは、信頼できるセッションを使用した SSL \(Secure Sockets Layer\) トランスポート セキュリティの使用方法について説明します。 HTTPS 上で信頼できるセッションを使用するには、信頼できるセッションと HTTPS トランスポートを使用するカスタム バインディングを作成する必要があります。 信頼できるセッションを有効にするには、コードを使用して強制的に行うか、構成ファイルで宣言します。 この手順では、クライアントとサービスの構成ファイルを使用して、信頼できるセッションと [\](../../../../docs/framework/configure-apps/file-schema/wcf/httpstransport.md) 要素を有効にします。 + + この手順で重要なのは、`endpoint` 構成要素に "reliableSessionOverHttps" という名前のカスタム バインディング構成を参照する `bindingConfiguration` 属性が含まれていることです。 その後、[\](../../../../docs/framework/misc/binding.md) 構成要素は、この名前を参照して、`reliableSession` 要素と `httpsTransport` 要素を含めることにより、信頼できるセッションと HTTPS トランスポートの使用を指定できます。 + + この例のソースのコピーについては、「[HTTPS を介したカスタム バインディングの信頼できるセッション](../../../../docs/framework/wcf/samples/custom-binding-reliable-session-over-https.md)」を参照してください。 + +### HTTPS で信頼できるセッションを使用するためにサービスを CustomBinding で構成するには + +1. サービスの種類にサービス コントラクトを定義します。 + + [!code-csharp[c_HowTo_CreateReliableSessionHTTPS#1121](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_createreliablesessionhttps/cs/service.cs#1121)] + +2. サービス クラスにサービス コントラクトを実装します。 アドレス情報とバインディング情報はサービスの実装内では指定されないことに注意してください。 同様に、コードは構成ファイルから情報を取得する必要はありません。 + + [!code-csharp[c_HowTo_CreateReliableSessionHTTPS#1122](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_createreliablesessionhttps/cs/service.cs#1122)] + +3. Web.config ファイルを作成し、信頼できるセッションと HTTPS トランスポートを使用する "reliableSessionOverHttps" というカスタムバインディングを使用して、`CalculatorService` のエンドポイントを構成します。 + + [!code[c_HowTo_CreateReliableSessionHTTPS#2111](../../../../samples/snippets/common/VS_Snippets_CFX/c_howto_createreliablesessionhttps/common/web.config#2111)] + +4. 次の行を含む Service.svc ファイルを作成します。 + + ``` + <%@ServiceHost language=c# Service="CalculatorService" %> + ``` + +5. インターネット インフォメーション サービス \(IIS\) 仮想ディレクトリに Service.svc ファイルを配置します。 + +### HTTPS で信頼できるセッションを使用するためにクライアントを CustomBinding で構成するには + +1. コマンド ラインから [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を実行して、サービス メタデータからコードを生成します。 + + ``` + Svcutil.exe + ``` + +2. 生成されたクライアントには、クライアントの実装時に満たされなければならないサービス コントラクトを定義する `ICalculator` インターフェイスが含まれます。 + + [!code-csharp[C_HowTo_CreateReliableSessionHTTPS#1221](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_createreliablesessionhttps/cs/client.cs#1221)] + +3. 生成されたクライアント アプリケーションは `ClientCalculator` も実装します。 このサービスの実装では、アドレス情報とバインディング情報が指定されないことに注意してください。 同様に、コードは構成ファイルから情報を取得する必要はありません。 + + [!code-csharp[C_HowTo_CreateReliableSessionHTTPS#1222](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_createreliablesessionhttps/cs/client.cs#1222)] + +4. HTTPS トランスポートと信頼できるセッションを使用する "reliableSessionOverHttps" という名前のカスタム バインディングを構成します。 + + [!code[C_HowTo_CreateReliableSessionHTTPS#2211](../../../../samples/snippets/common/VS_Snippets_CFX/c_howto_createreliablesessionhttps/common/app.config#2211)] + +5. アプリケーションで `ClientCalculator` のインスタンスを作成し、サービス操作を呼び出します。 + + [!code-csharp[C_HowTo_CreateReliableSessionHTTPS#1223](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_createreliablesessionhttps/cs/client.cs#1223)] + +6. クライアントをコンパイルして実行します。 + +## 使用例 + + +## .NET Framework セキュリティ + このサンプルで使用する証明書は Makecert.exe で作成されたテスト証明書なので、ブラウザーで https:\/\/localhost\/servicemodelsamples\/service.svc のような HTTPS アドレスにアクセスしようとするとセキュリティ警告が表示されます。 + +## 参照 + [信頼できるセッション](../../../../docs/framework/wcf/feature-details/reliable-sessions.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md b/docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md new file mode 100644 index 00000000000..07e34b0fa19 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md @@ -0,0 +1,84 @@ +--- +title: "方法 : 双方向コントラクトを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "双方向コントラクト [WCF]" +ms.assetid: 500a75b6-998a-47d5-8e3b-24e3aba2a434 +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# 方法 : 双方向コントラクトを作成する +ここでは、双方向コントラクトを使用するメソッドを作成するための基本手順を示します。双方向コントラクトでは、クライアントとサーバーが互いに独立して通信できるため、どちらからでも相手の呼び出しを開始できます。双方向コントラクトは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスに使用できる 3 つのメッセージ パターンのうちの 1 つです。他の 2 つのメッセージ パターンは、一方向および要求\/応答です。双方向コントラクトは、クライアントとサーバー間の 2 つの一方向コントラクトで構成され、メソッドの呼び出しが相互に関連付けられている必要はありません。サービスでクライアントに詳細を照会したり、クライアントで明示的にイベントを発生させたりする必要がある場合は、この種のコントラクトを使用します。双方向コントラクトのクライアント アプリケーションの作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 双方向コントラクトを使用してサービスにアクセスする](../../../../docs/framework/wcf/feature-details/how-to-access-services-with-a-duplex-contract.md)」を参照してください。実際に動作するサンプルについては、「[二重](../../../../docs/framework/wcf/samples/duplex.md)」を参照してください。 + +### 双方向コントラクトを作成するには + +1. 双方向コントラクトのサーバー側を構成するインターフェイスを作成します。 + +2. インターフェイスに クラスを適用します。 + + [!code-csharp[S_WS_DualHttp#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_ws_dualhttp/cs/service.cs#3)] + [!code-vb[S_WS_DualHttp#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_ws_dualhttp/vb/service.vb#3)] + +3. インターフェイスでメソッド署名を宣言します。 + +4. パブリック コントラクトの一部であることが必要な各メソッド シグネチャに、 クラスを適用します。 + +5. クライアントでサービスが呼び出すことができる一連の操作を定義するコールバック インターフェイスを作成します。 + + [!code-csharp[S_WS_DualHttp#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_ws_dualhttp/cs/service.cs#4)] + [!code-vb[S_WS_DualHttp#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_ws_dualhttp/vb/service.vb#4)] + +6. コールバック インターフェイスでメソッド署名を宣言します。 + +7. パブリック コントラクトの一部であることが必要な各メソッド シグネチャに、 クラスを適用します。 + +8. プライマリ インターフェイスの プロパティをコールバック インターフェイスの型に設定することにより、2 つのインターフェイスを双方向コントラクトにリンクします。 + +### クライアントでメソッドを呼び出すには + +1. サービスのプライマリ コントラクトの実装で、コールバック インターフェイスの変数を宣言します。 + +2. クラスの メソッドから返されるオブジェクト参照に変数を設定します。 + + [!code-csharp[S_WS_DualHttp#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_ws_dualhttp/cs/service.cs#1)] + [!code-vb[S_WS_DualHttp#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_ws_dualhttp/vb/service.vb#1)] + + [!code-csharp[S_WS_DualHttp#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_ws_dualhttp/cs/service.cs#2)] + [!code-vb[S_WS_DualHttp#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_ws_dualhttp/vb/service.vb#2)] + +3. コールバック インターフェイスで定義されたメソッドを呼び出します。 + +## 使用例 + 次のコード例は、双方向通信を示しています。サービスのコントラクトには、順方向および逆方向に移動するためのサービス操作が含まれます。クライアントのコントラクトには、位置を報告するためのサービス操作が含まれます。 + + [!code-csharp[S_WS_DualHttp#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_ws_dualhttp/cs/service.cs#5)] + [!code-vb[S_WS_DualHttp#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_ws_dualhttp/vb/service.vb#5)] + +- 属性と 属性を適用すると、サービス コントラクトの定義を Web サービス記述言語 \(WSDL\) で自動的に生成できます。 + +- [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用して、クライアントの WSDL ドキュメントと \(オプションの\) コードおよび構成を取得します。 + +- 双方向サービスを公開しているエンドポイントは、セキュリティで保護されている必要があります。サービスが双方向メッセージを受信すると、その受信メッセージの ReplyTo を参照して応答の送信先を決定します。チャネルがセキュリティで保護されていない場合、信頼関係のないクライアントが対象コンピューターの ReplyTo を使用して悪意のあるメッセージを送信し、その対象コンピューターのサービス拒否 \(DOS: Denial Of Service\) を引き起こす可能性があります。通常の要求\/応答メッセージでは、ReplyTo は無視され、元のメッセージを受信したチャネルで応答が送信されます。したがって、この問題は発生しません。 + +## 参照 + + + [方法 : 双方向コントラクトを使用してサービスにアクセスする](../../../../docs/framework/wcf/feature-details/how-to-access-services-with-a-duplex-contract.md) + [二重](../../../../docs/framework/wcf/samples/duplex.md) + [サービスの設計と実装](../../../../docs/framework/wcf/designing-and-implementing-services.md) + [方法 : サービス コントラクトを定義する](../../../../docs/framework/wcf/how-to-define-a-wcf-service-contract.md) + [セッション](../../../../docs/framework/wcf/samples/session.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-duplex-federated-binding.md b/docs/framework/wcf/feature-details/how-to-create-a-duplex-federated-binding.md new file mode 100644 index 00000000000..7867ad84938 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-duplex-federated-binding.md @@ -0,0 +1,107 @@ +--- +title: "方法 : 双方向フェデレーション バインディングを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4331d2bc-5455-492a-9189-634a82597726 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 方法 : 双方向フェデレーション バインディングを作成する + はデータグラムと要求\/応答メッセージの交換コントラクトのみをサポートします。双方向メッセージ交換コントラクトを使用するには、カスタム バインディングを作成する必要があります。次の手順は、構成の中でそれを行う方法を説明します。HTTP と TCP トランスポートにはメッセージ モード セキュリティを、TCP トランスポートには混合モード セキュリティを使用します。このトピックの最後に 3 つのバインディングすべてのサンプル コードがあります。 + + バインディングはコード内でも作成できます。作成するバインド要素スタックの詳細については、「[方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md)」を参照してください。 + +### HTTP で双方向カスタム フェデレーション バインディングを作成するには + +1. 構成ファイルの [\](../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)[\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) 要素を作成します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) 要素内で、`name` 属性が `FederationDuplexHttpMessageSecurityBinding` に設定された [\](../../../../docs/framework/misc/binding.md) 要素を作成します。 + +3. [\](../../../../docs/framework/misc/binding.md) 要素内で、`authenticationMode` 属性が `SecureConversation` に設定された [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) 要素を作成します。 + +4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) 要素内で、`authenticationMode` 属性が `IssuedTokenForCertificate` または `IssuedTokenForSslNegotiated` に設定された [\](../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md) 要素を作成します。 + +5. [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) 要素に続いて、空の [\](../../../../docs/framework/configure-apps/file-schema/wcf/compositeduplex.md) 要素を作成します。 + +6. [\](../../../../docs/framework/configure-apps/file-schema/wcf/compositeduplex.md) 要素に続いて、空の [\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) 要素を作成します。 + +7. [\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) 要素に続いて、空の [\](../../../../docs/framework/configure-apps/file-schema/wcf/httptransport.md) 要素を作成します。 + +### TCP メッセージ セキュリティ モードで双方向カスタム フェデレーション バインディングを作成するには + +1. 構成ファイルの [\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md)[\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) 要素を作成します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) 要素内で、`name` 属性が `FederationDuplexTcpMessageSecurityBinding` に設定された [\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) 要素を作成します。 + +3. [\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) 要素内で、`authenticationMode` 属性が `SecureConversation` に設定された [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) 要素を作成します。 + +4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) 要素内で、`authenticationMode` 属性が `IssuedTokenForCertificate` または `IssuedTokenForSslNegotiated` に設定された [\](../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md) 要素を作成します。 + +5. [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) 要素に続いて、空の [\](../../../../docs/framework/configure-apps/file-schema/wcf/tcptransport.md) 要素を作成します。 + +### TCP 混合セキュリティ モードで双方向カスタム フェデレーション バインディングを作成するには + +1. 構成ファイルの [\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md)[\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) 要素を作成します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) 要素内で、`name` 属性が `FederationDuplexTcpTransportSecurityWithMessageCredentialBinding` に設定された [\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) 要素を作成します。 + +3. [\](../../../../docs/framework/configure-apps/file-schema/wcf/oneway.md) 要素内で、`authenticationMode` 属性が `SecureConversation` に設定された [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) 要素を作成します。 + +4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) 要素内で、`authenticationMode` 属性が `IssuedTokenForCertificate` または `IssuedTokenForSslNegotiated` に設定された [\](../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md) 要素を作成します。 + +5. [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) 要素に続いて、空の [\](../../../../docs/framework/configure-apps/file-schema/wcf/sslstreamsecurity.md) 要素を作成します。 + +6. [\](../../../../docs/framework/configure-apps/file-schema/wcf/sslstreamsecurity.md) 要素に続いて、空の [\](../../../../docs/framework/configure-apps/file-schema/wcf/tcptransport.md) 要素を作成します。 + +## サンプル コード + +#### 3 つのバインディングの例 + +1. 次のコードを構成ファイルに挿入します。 + +## 使用例 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-federated-client.md b/docs/framework/wcf/feature-details/how-to-create-a-federated-client.md new file mode 100644 index 00000000000..ec07ec621cd --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-federated-client.md @@ -0,0 +1,174 @@ +--- +title: "方法 : フェデレーション クライアントを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フェデレーション" + - "WCF, フェデレーション" +ms.assetid: 56ece47e-98bf-4346-b92b-fda1fc3b4d9c +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# 方法 : フェデレーション クライアントを作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] での*フェデレーション サービス*用クライアントの作成は、主に次の 3 つの手順で構成されます。 + +1. [\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)または同様のカスタム バインディングを構成します。適切なバインディングの作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : WSFederationHttpBinding を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md)」を参照してください。または、フェデレーション サービスのメタデータ エンドポイントに対して [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を実行し、フェデレーション サービスおよび 1 つ以上のセキュリティ トークン サービスとの通信用の構成ファイルを作成します。 + +2. クライアントがセキュリティ トークン サービスと対話する際のさまざまな側面を制御する のプロパティを設定します。 + +3. セキュリティ トークン サービスなど、特定のエンドポイントとのセキュリティ保護された通信に必要な証明書を許可する のプロパティを設定します。 + +> [!NOTE] +> クライアントが、偽装された資格情報、 バインディングやカスタムの発行済みトークン、および非対称キーを使用すると、 がスローされる可能性があります。 プロパティと プロパティをそれぞれ に設定すると、 バインディングとカスタムの発行済みトークンで非対称キーが使用されます。クライアントがメッセージを送信しようとするときに、クライアントが偽装している ID のユーザー プロファイルが存在しないと、 がスローされます。この問題を回避するには、クライアント コンピューターにログオンした後、または `LoadUserProfile` を呼び出した後に、メッセージを送信します。 + + ここでは、これらの手順について詳しく説明します。適切なバインディングの作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : WSFederationHttpBinding を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md)」を参照してください。フェデレーション サービスのしくみ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md)」を参照してください。 + +### フェデレーション サービスの構成を生成し、確認するには + +1. コマンド ライン パラメーターとしてサービスのメタデータ URL のアドレスを使用し、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を実行します。 + +2. 生成された構成ファイルを適切なエディターで開きます。 + +3. 生成されたすべての [\](../../../../docs/framework/configure-apps/file-schema/wcf/issuer.md) 要素と [\](../../../../docs/framework/configure-apps/file-schema/wcf/issuermetadata.md) 要素の属性と内容を調べます。これらは、[\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md) 要素またはカスタム バインド要素の [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wsfederationhttpbinding.md) 要素内にあります。予期されたドメイン名やその他のアドレス情報がアドレスに含まれていることを確認します。この情報をチェックすることは重要です。それは、クライアントがこれらのアドレスに対して認証を行い、ユーザー名とパスワードの組み合わせなどの情報を公開する可能性があるためです。アドレスが予期されたアドレスではない場合、意図しない受信者に情報が公開されるおそれがあります。 + +4. コメント アウトされた \<`alternativeIssuedTokenParameters`\> 要素内の追加の [\](../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenparameters.md) 要素をすべて調べます。Svcutil.exe ツールを使用してフェデレーション サービスの構成を生成するときに、フェデレーション サービスまたは任意の中間セキュリティ トークン サービスが、発行者アドレスを指定せずに、複数のエンドポイントを公開するセキュリティ トークン サービスのメタデータ アドレスを指定している場合、生成された構成ファイルは最初のエンドポイントを参照します。追加のエンドポイントは、コメント アウトされた \<`alternativeIssuedTokenParameters`\> 要素として構成ファイルに含まれます。 + + これらの \<`issuedTokenParameters`\> のいずれかが、既に構成に存在するものよりも適切かどうかを判断します。たとえば、セキュリティ トークン サービスに対する認証を行う際は、ユーザー名とパスワードの組み合わせよりも Windows [!INCLUDE[infocard](../../../../includes/infocard-md.md)] トークンを使用する方が、クライアントにとって望ましい場合があります。 + + > [!NOTE] + > サービスと通信するまでに複数のセキュリティ トークン サービスをたどる必要がある場合は、中間セキュリティ トークン サービスがクライアントを不適切なセキュリティ トークン サービスにダイレクトする可能性があります。そのため、[\](../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenparameters.md) 内のセキュリティ トークン サービスのエンドポイントが、予期されたセキュリティ トークン サービスであり、未確認のセキュリティ トークン サービスでないことを確認します。 + +### コードで IssuedTokenClientCredential を構成するには + +1. 次のコード例に示すように、 クラスの プロパティまたは クラスから返された、 クラスの プロパティから にアクセスします。 + + [!code-csharp[c_CreateSTS#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#9)] + [!code-vb[c_CreateSTS#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#9)] + +2. トークン キャッシュが不要な場合は、 プロパティを `false` に設定します。 プロパティにより、セキュリティ トークン サービスからのこれらのトークンをキャッシュするかどうかが制御されます。このプロパティを `false` に設定すると、クライアントは、以前のトークンがいまだに有効な場合でも、フェデレーション サービスに対してクライアント自体を再認証する必要があるときに、新しいトークンをセキュリティ トークン サービスに要求します。このプロパティを `true` に設定すると、クライアントは、トークンの有効期限が切れていない限り、フェデレーション サービスに対してクライアント自体を再認証する必要があるときに既存のトークンを再利用します。既定値は `true` です。 + +3. キャッシュされたトークンの制限時間を設ける必要がある場合は、 プロパティを 値に設定します。このプロパティは、トークンがキャッシュされる時間を指定します。指定の時間が経過すると、トークンはクライアントのキャッシュから削除されます。既定では、トークンは無期限でキャッシュされます。制限時間を 10 分に設定する例を次に示します。 + + [!code-csharp[c_CreateSTS#15](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#15)] + [!code-vb[c_CreateSTS#15](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#15)] + +4. 省略可能。 をパーセンテージに設定します。既定値は 60 \(パーセント\) です。このプロパティは、トークンの有効期間をパーセンテージで指定します。たとえば、発行されたトークンが 10 時間有効で、 が 80 に設定されている場合、このトークンは 8 時間後に更新されます。この値を 80% に設定する例を次に示します。 + + [!code-csharp[c_CreateSTS#16](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#16)] + [!code-vb[c_CreateSTS#16](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#16)] + + トークンの有効期間と `IssuedTokenRenewalThresholdPercentage` 値によって決まる更新間隔は、キャッシュ時間が更新しきい時間よりも短い場合には、`MaxIssuedTokenCachingTime` 値によってオーバーライドされます。たとえば、`IssuedTokenRenewalThresholdPercentage` とトークンの有効期間を掛けた積が 8 時間であり、`MaxIssuedTokenCachingTime` 値が 10 分の場合、クライアントは、トークンの更新のために 10 分ごとにセキュリティ トークン サービスに連絡します。 + +5. 以外のキー エントロピ モードが、メッセージ セキュリティやメッセージ資格情報付きトランスポート セキュリティを使用しないバインディング \(たとえば、バインディングに が存在しない場合\) で必要な場合は、 プロパティに適切な値を設定します。*エントロピ*モードにより、 プロパティを使用して対称キーを制御できるかどうかが決まります。この既定値は であり、この場合、クライアントとトークン発行者の両方から、実際のキーを生成する際に組み合わせるデータが提供されます。これ以外の値は であり、それぞれクライアントまたはサーバーによってキー全体が指定されます。サーバーのデータのみを使用してキーを指定するよう、このプロパティを設定する例を次に示します。 + + [!code-csharp[c_CreateSTS#17](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#17)] + [!code-vb[c_CreateSTS#17](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#17)] + + > [!NOTE] + > セキュリティ トークン サービスまたはサービス バインディングに が存在する場合、 で設定された は、`SecurityBindingElement` の プロパティによってオーバーライドされます。 + +6. プロパティによって返されるコレクションに発行者固有のエンドポイント動作を追加して、これらの動作を構成します。 + + [!code-csharp[c_CreateSTS#14](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#14)] + [!code-vb[c_CreateSTS#14](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#14)] + +### 構成で IssuedTokenClientCredential を構成するには + +1. エンドポイントの動作で、[\](../../../../docs/framework/configure-apps/file-schema/wcf/issuedtoken.md) 要素の子として [\](../../../../docs/framework/configure-apps/file-schema/wcf/issuedtoken.md) 要素を作成します。 + +2. トークン キャッシュが不要な場合は、\<`issuedToken`\> 要素の `cacheIssuedTokens` 属性を `false` に設定します。 + +3. キャッシュされたトークンの制限時間を設ける必要がある場合は、\<`issuedToken`\> 要素の `maxIssuedTokenCachingTime` 属性を適切な値に設定します。次に例を示します。 + `` + +4. 既定値以外の値にする場合は、\<`issuedToken`\> 要素の `issuedTokenRenewalThresholdPercentage` 属性を適切な値に設定します。次に例を示します。 + + ``` + + ``` + +5. メッセージ セキュリティやメッセージ資格情報付きトランスポート セキュリティを使用しないバインディングで `CombinedEntropy` 以外のキー エントロピ モードが必要な場合 \(たとえば、バインディングに `SecurityBindingElement` が存在しない場合\) は、必要に応じて次のように `` 要素の `defaultKeyEntropyMode` 属性を `ServerEntropy` または `ClientEntropy` に設定します。 + + ``` + + ``` + +6. 省略可能。\<`issuedToken`\> 要素の子として \<`issuerChannelBehaviors`\> 要素を作成して、発行者固有のカスタム エンドポイント動作を構成します。動作ごとに、\<`issuerChannelBehaviors`\> 要素の子として \<`add`\> 要素を作成します。\<`add`\> 要素の `issuerAddress` 属性を設定して、動作の発行者アドレスを指定します。\<`add`\> 要素の `behaviorConfiguration` 属性を設定して、動作自体を指定します。 + + ``` + + + + ``` + +### コードで X509CertificateRecipientClientCredential を構成するには + +1. クラスまたは プロパティの プロパティが持つ プロパティを介して、次のように にアクセスします。 + + [!code-csharp[c_CreateSTS#18](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#18)] + [!code-vb[c_CreateSTS#18](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#18)] + +2. 特定のエンドポイントの証明書として インスタンスを使用できる場合は、 プロパティによって返されるコレクションの メソッドを使用します。 + + [!code-csharp[c_CreateSTS#19](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#19)] + [!code-vb[c_CreateSTS#19](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#19)] + +3. インスタンスが使用できない場合は、次の例に示すように、 クラスの メソッドを使用します。 + + [!code-csharp[c_CreateSTS#20](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#20)] + [!code-vb[c_CreateSTS#20](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#20)] + +### 構成で X509CertificateRecipientClientCredential を構成するには + +1. その要素自体がエンドポイント動作の [\](../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md) 要素の子要素である [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md) 要素の子として、[\](../../../../docs/framework/configure-apps/file-schema/wcf/scopedcertificates-element.md) 要素を作成します。 + +2. `` 要素の子要素として `` 要素を作成します。適切な証明書を参照するように `storeLocation`、`storeName`、`x509FindType`、`findValue` の各属性の値を指定します。次の例に示すように、`targetUri` 属性を、証明書が使用されるエンドポイントのアドレスを指定する値に設定します。 + + ``` + + + + ``` + +## 使用例 + クラスのインスタンスをコードで構成する例を、次のコード サンプルに示します。 + + [!code-csharp[c_FederatedClient#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_federatedclient/cs/source.cs#2)] + [!code-vb[c_FederatedClient#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_federatedclient/vb/source.vb#2)] + +## .NET Framework セキュリティ + 情報の漏えいを防ぐために、Svcutil.exe ツールを使用してフェデレーション エンドポイントからのメタデータを処理するクライアントでは、生成されたセキュリティ トークン サービス アドレスが予期されたものであることを確認する必要があります。これが特に重要なのは、セキュリティ トークン サービスが複数のエンドポイントを公開する場合です。この場合、Svcutil.exe ツールは、複数のエンドポイントうちの最初のエンドポイントを使用する構成ファイルを生成しますが、このエンドポイントは、クライアントが使用する必要のあるエンドポイントと異なる場合があるためです。 + +## LocalIssuer が必要な場合 + チェーン内の 2 番目から最後までのセキュリティ トークン サービスによって発行者アドレスまたは発行者メタデータ アドレスが指定されている場合、Svcutil.exe の既定の出力では、ローカル発行者が使用されません。クライアントで常にローカル発行者を使用する場合は、この点に注意が必要です。 + + クラスの 、および プロパティの設定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : ローカル発行者を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md)」を参照してください。 + +## 範囲指定された証明書 + 証明書ネゴシエーションを使用しないという一般的な理由により、任意のセキュリティ トークン サービスとの通信用のサービス証明書を指定する必要がある場合は、 クラスの プロパティを使用して指定できます。 メソッドは、パラメーターとして を受け取ります。指定した証明書は、指定した URI のエンドポイントと通信するときに使用されます。または、 メソッドを使用して、 プロパティによって返されるコレクションに証明書を追加することもできます。 + +> [!NOTE] +> 特定の URI に範囲指定された証明書というクライアントの概念は、該当する URI でエンドポイントを公開するサービスへの送信呼び出しを行うアプリケーションにだけ適用されます。これは、 クラスの によって返されたコレクション内のサーバーで構成された証明書など、発行済みトークンの署名に使用される証明書には適用されません。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : フェデレーション サービスで資格情報を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md). + +## 参照 + [フェデレーション サンプル](../../../../docs/framework/wcf/samples/federation-sample.md) + [方法 : WSFederationHttpBinding のセキュリティで保護されたセッションを無効にする](../../../../docs/framework/wcf/feature-details/how-to-disable-secure-sessions-on-a-wsfederationhttpbinding.md) + [方法 : WSFederationHttpBinding を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md) + [方法 : フェデレーション サービスで資格情報を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) + [方法 : ローカル発行者を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md) + [メタデータを使用する場合のセキュリティ上の考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-with-metadata.md) + [方法 : セキュリティで保護されたメタデータ エンドポイント](../../../../docs/framework/wcf/feature-details/how-to-secure-metadata-endpoints.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-one-way-contract.md b/docs/framework/wcf/feature-details/how-to-create-a-one-way-contract.md new file mode 100644 index 00000000000..0b64b8c7039 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-one-way-contract.md @@ -0,0 +1,47 @@ +--- +title: "方法 : 一方向コントラクトを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 85084cd9-31cc-4e95-b667-42ef01336622 +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# 方法 : 一方向コントラクトを作成する +ここでは、一方向コントラクトを使用するメソッドを作成するための基本手順を示します。このようなメソッドは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスの操作をクライアントから呼び出しますが、応答を待ちません。この種のコントラクトは、たとえば、多数のサブスクライバーに対して通知を発行するために使用できます。一方向コントラクトは、二重のコントラクトを作成する場合にも使用できます。その場合は、クライアントとサーバーが互いに独立して通信できるため、どちらからでも相手の呼び出しを開始できます。これにより、特にサーバーは、クライアントがイベントとして処理できる一方向の呼び出しをクライアントに対して実行できます。一方向メソッドの指定の詳細については、 プロパティおよび クラスのトピックを参照してください。 + + 双方向コントラクト用のクライアント アプリケーションを作成する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 一方向コントラクトと要求\/応答コントラクトを使用してサービスにアクセスする](../../../../docs/framework/wcf/feature-details/how-to-access-wcf-services-with-one-way-and-request-reply-contracts.md)」を参照してください。実際に動作するサンプルについては、「[一方向](../../../../docs/framework/wcf/samples/one-way.md)」を参照してください。 + +### 一方向コントラクトを作成するには + +1. サービスにより実装されるメソッドを定義するインターフェイスに クラスを適用することにより、サービス コントラクトを作成します。 + +2. クラスをメソッドに適用する際に、クライアントが呼び出すことのできるインターフェイスのメソッドを指定します。 + +3. プロパティを `true` に設定することにより、出力を行わない \(戻り値および出力または参照パラメーターを持たない\) 一方向の操作を指定します。 プロパティの既定値は `false` であるため、 クラスを持つ操作では、既定で要求\/応答コントラクトが満たされることに注意してください。したがって、このメソッドに一方向コントラクトが必要な場合は、この属性プロパティの値を明示的に `true` に指定する必要があります。 + +## 使用例 + 複数の一方向メソッドを含むサービスのコントラクトを定義する方法を次のコード例に示します。`Equals` \(既定で応答\/要求コントラクトに設定され、結果を返します\) を除き、すべてのメソッドは一方向コントラクトを持ちます。 + + [!code-csharp[S_Service_Session#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_service_session/cs/service.cs#1)] + [!code-vb[S_Service_Session#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_service_session/vb/service.vb#1)] + +## 参照 + + + [サービスの設計と実装](../../../../docs/framework/wcf/designing-and-implementing-services.md) + [方法 : サービス コントラクトを定義する](../../../../docs/framework/wcf/how-to-define-a-wcf-service-contract.md) + [セッション](../../../../docs/framework/wcf/samples/session.md) + [方法 : 双方向コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-request-reply-contract.md b/docs/framework/wcf/feature-details/how-to-create-a-request-reply-contract.md new file mode 100644 index 00000000000..e63833e0bfd --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-request-reply-contract.md @@ -0,0 +1,60 @@ +--- +title: "方法 : 要求/応答コントラクトを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 801d90da-3d45-4284-9c9f-56c8aadb4060 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# 方法 : 要求/応答コントラクトを作成する +要求\/応答コントラクトは、応答を返すメソッドを指定します。応答が送信され、このコントラクトの条件の下で要求に関連付けられる必要があります。メソッドが応答を返さない場合 \(C\# の場合は `void` または Visual Basic の場合は `Sub`\) でも、インフラストラクチャは、空のメッセージを作成して送信することで、メソッドが返ったことを呼び出し元に示します。空の応答メッセージが送信されるのを防ぐには、操作で 1 方向コントラクトを使用します。 + +### 要求\/応答コントラクトを作成するには + +1. 選択したプログラミング言語でインターフェイスを作成します。 + +2. インターフェイスに 属性を適用します。 + +3. クライアントが呼び出すことのできる各メソッドに 属性を適用します。 + +4. 省略可能。 プロパティの値を `true` に設定して、空の応答メッセージが送信されることを防止します。既定では、すべての操作は要求\/応答コントラクトです。 + +## 使用例 + 次のサンプルは、`Add` メソッドと `Subtract` メソッドを提供する電卓サービスのコントラクトを定義します。`Multiply` メソッドは クラスでマークされていないため、このコントラクトの一部ではありません。したがって、クライアントからはアクセスできません。 + +``` +using System.ServiceModel; + +[ServiceContract] +public interface ICalculator +{ +[OperationContract] +// It would be equivalent to write explicitly: +// [OperationContract(IsOneWay=false)] +int Add(int a, int b); + +[OperationContract] +int Subtract(int a, int b); + +int Multiply(int a, int b) +} +``` + +- 操作コントラクトを指定する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、 クラスおよび プロパティのトピックを参照してください。 + +- 属性と 属性を適用すると、サービスを展開した後に Web サービス記述言語 \(WSDL\) ドキュメントでサービス コントラクト定義が自動的に生成されます。ドキュメントは、サービスの HTTP ベース アドレスに `?wsdl` を付け加えてしてダウンロードできます。たとえば、「`http://microsoft/CalculatorService?wsdl`」と入力します。 + +## 参照 + + [サービス コントラクトの設計](../../../../docs/framework/wcf/designing-service-contracts.md) + [方法 : 双方向コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-secure-session.md b/docs/framework/wcf/feature-details/how-to-create-a-secure-session.md new file mode 100644 index 00000000000..8244d61cf79 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-secure-session.md @@ -0,0 +1,91 @@ +--- +title: "方法 : セキュリティで保護されたセッションを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF], セッションの作成" +ms.assetid: b6f42b5a-bbf7-45cf-b917-7ec9fa7ae110 +caps.latest.revision: 10 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 10 +--- +# 方法 : セキュリティで保護されたセッションを作成する +メッセージ セキュリティを有効にすると、[\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md) バインディングを除き、システム提供のバインディング [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、セキュリティで保護されたセッションが自動的に使用されます。 + + 既定では、セキュリティで保護されたセッションは、再利用される Web サーバーで存続します。 セキュリティで保護されたセッションが確立されると、クライアントとサービスが、セキュリティで保護されたセッションに関連付けられているキーをキャッシュします。 メッセージを交換するときは、キャッシュされたキーの識別子のみが交換されます。 Web サーバーが再利用される場合は、Web サーバーが識別子のキャッシュされたキーを取得できないようにキャッシュも再利用されます。 これが発生した場合、例外がクライアントにスローされます。 ステートフルなセキュリティ コンテキスト トークン \(SCT: Security Context Token\) を使用するセキュリティで保護されたセッションは、再利用される Web サーバーで存続することができます。 セキュリティで保護されたセッションでステートフルな SCT を使用する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : セキュリティで保護されたセッションに対しセキュリティ コンテキスト トークンを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-security-context-token-for-a-secure-session.md)」を参照してください。 + +### サービスが、システム提供のバインディングの 1 つを使用して、セキュリティで保護されたセッションを使用するように指定するには + +- メッセージ セキュリティをサポートするシステム提供のバインディングを使用するようにサービスを構成します。 + + [\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md) バインディングを除き、システム提供のバインディングでメッセージ セキュリティが使用されるように設定しておくと、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではセキュリティで保護されたセッションが自動的に使用されます。 次の表は、メッセージ セキュリティをサポートするシステム提供のバインディングを示し、そのバインディングでメッセージ セキュリティが既定のセキュリティ機構であるかどうかを示しています。 + + |システム提供のバインディング|構成要素|既定でメッセージ セキュリティが有効| + |--------------------|----------|------------------------| + ||[\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)|X| + ||[\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)|はい| + ||[\](../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md)|はい| + ||[\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)|はい| + ||[\](../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md)|X| + ||[\](../../../../docs/framework/configure-apps/file-schema/wcf/netmsmqbinding.md)|X| + + 次のコード例に使用されている構成では、[\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)、メッセージ セキュリティ、およびセキュリティで保護されたセッションを使用する `wsHttpBinding_Calculator` という名前のバインディングを指定しています。 + + ``` + + + + + + + + + + ``` + + [\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)、メッセージ セキュリティ、およびセキュリティで保護されたセッションを使用して、`secureCalculator` サービスをセキュリティで保護するように指定するコード例を次に示します。 + + [!code-csharp[c_CreateSecureSession#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_createsecuresession/cs/secureservice.cs#1)] + [!code-vb[c_CreateSecureSession#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_createsecuresession/vb/secureservice.vb#1)] + + > [!NOTE] + > [\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) については、`establishSecurityContext` 属性を `false` に設定してセキュリティで保護されたセッションを無効にできます。 他のシステム提供のバインディングについては、カスタム バインディングを作成することでのみ、セキュリティで保護されたセッションを無効にできます。 + +### カスタム バインディングを使用して、サービスでセキュリティで保護されたセッションが使用されるように指定するには + +- セキュリティで保護されたセッションで SOAP メッセージが保護されるように指定したカスタム バインディングを作成します。 + + カスタム バインディングの作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : システム指定のバインディングをカスタマイズする](../../../../docs/framework/wcf/extending/how-to-customize-a-system-provided-binding.md)」を参照してください。 + + 次のコード例で使用されている構成では、セキュリティで保護されたセッションを使用して SOAP メッセージを保護するカスタム バインディングを指定しています。 + + ``` + + + + + + + + + + + + ``` + + セキュリティで保護されたセッションをブートストラップするための 認証モードを使用する、カスタム バインディングを作成するコード例を次に示します。 + + [!code-csharp[c_CreateSecureSession#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_createsecuresession/cs/secureservice.cs#2)] + [!code-vb[c_CreateSecureSession#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_createsecuresession/vb/secureservice.vb#2)] + +## 参照 + [WCF のバインディングの概要](../../../../docs/framework/wcf/bindings-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-security-context-token-for-a-secure-session.md b/docs/framework/wcf/feature-details/how-to-create-a-security-context-token-for-a-secure-session.md new file mode 100644 index 00000000000..00f19cf3591 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-security-context-token-for-a-secure-session.md @@ -0,0 +1,118 @@ +--- +title: "方法 : セキュリティで保護されたセッションに対しセキュリティ コンテキスト トークンを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 640676b6-c75a-4ff7-aea4-b1a1524d71b2 +caps.latest.revision: 14 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 14 +--- +# 方法 : セキュリティで保護されたセッションに対しセキュリティ コンテキスト トークンを作成する +セキュリティで保護されたセッションでステートフルなセキュリティ コンテキスト トークン \(SCT: Security Context Token\) を使用すると、そのセッションでサービスを再利用できます。たとえば、セキュリティで保護されたセッションでステートレスな SCT を使用しているときにインターネット インフォメーション サービス \(IIS\) をリセットすると、サービスに関連付けられているセッション データが失われます。このセッション データには、SCT キャッシュが含まれています。このため、クライアントが次回ステートレスな SCT をサービスに送信すると、エラーが返されます。これは、SCT に関連付けられているキーを取得できないためです。しかし、ステートフルな SCT を使用した場合、SCT に関連付けられているキーは、その SCT 内に格納されます。キーが SCT 内、つまりメッセージ内に格納されているため、セキュリティで保護されたセッションは、サービスの再使用の影響を受けません。既定では、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、セキュリティで保護されたセッションでステートレスな SCT を使用します。ここでは、セキュリティで保護されたセッションでステートフルな SCT を使用する方法について詳しく説明します。 + +> [!NOTE] +> から派生したコントラクトに関係する、セキュリティで保護されたセッションでは、ステートフルな SCT を使用できません。 + +> [!NOTE] +> セキュリティで保護されたセッションでステートフルな SCT を使用するアプリケーションでは、サービスのスレッド ID は、関連付けられたユーザー プロファイルを持つユーザー アカウントである必要があります。ユーザー プロファイルを持たないアカウント \(`Local Service` など\) でサービスを実行すると、例外がスローされる場合があります。 + +> [!NOTE] +> Windows XP で偽装が必要な場合は、ステートフルな SCT を使用しない、セキュリティで保護されたセッションを使用します。ステートフル SCT が偽装と共に使用されると、 がスローされます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][サポートされていないシナリオ](../../../../docs/framework/wcf/feature-details/unsupported-scenarios.md). + +### セキュリティで保護されたセッションでステートフルな SCT を使用するには + +- ステートフルな SCT を使用する、セキュリティで保護されたセッションによって SOAP メッセージを保護するように指定するカスタム バインディングを作成します。 + + 1. サービスの構成ファイルに [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)を追加して、カスタム バインディングを定義します。 + + ``` + + ``` + + 2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)に [\](../../../../docs/framework/misc/binding.md) 子要素を追加します。 + + `name` 属性を、構成ファイル内で一意の名前に設定してバンディング名を指定します。 + + ``` + + ``` + + 3. [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)に [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)子要素を追加して、このサービスとの間で送受信されるメッセージの認証モードを指定します。 + + `authenticationMode` 属性を `SecureConversation` に設定して、セキュリティで保護されたセッションを指定します。`requireSecurityContextCancellation` 属性を `false` に設定して、ステートフルな SCT を使用するように指定します。 + + ``` + + ``` + + 4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)に [\](../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md)子要素を追加して、セキュリティで保護されたセッションが確立されているときにクライアントが認証される方法を指定します。 + + クライアントの認証方法は、`authenticationMode` 属性を設定して指定します。 + + ``` + + ``` + + 5. [\](../../../../docs/framework/configure-apps/file-schema/wcf/textmessageencoding.md)のようなエンコーディング要素を追加して、メッセージ エンコーディングを指定します。 + + ``` + + ``` + + 6. [\](../../../../docs/framework/configure-apps/file-schema/wcf/httptransport.md)などのトランスポート要素を追加して、トランスポートを指定します。 + + ``` + + ``` + + 次のコード例では、構成を使用して、セキュリティで保護されたセッションでメッセージがステートフルな SCT と共に使用できるカスタム バインディングを指定します。 + + ``` + + + + + + + + + + ``` + +## 使用例 + セキュリティで保護されたセッションをブートストラップするための 認証モードを使用する、カスタム バインディングを作成するコード例を次に示します。 + + [!code-csharp[c_CreateStatefulSCT#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_createstatefulsct/cs/secureservice.cs#2)] + [!code-vb[c_CreateStatefulSCT#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_createstatefulsct/vb/secureservice.vb#2)] + + Windows 認証をステートフルな SCT と組み合わせて使用すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では プロパティに実際の呼び出し元の ID が設定されず、代わりに "anonymous" が設定されます。その場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティは、受信 SCT からの要求ごとにサービスのセキュリティ コンテキストの内容を再作成する必要があるため、サーバーはメモリ内でセキュリティ セッションを追跡できません。また、 インスタンスは SCT にシリアル化できないため、 プロパティは匿名 ID を返します。 + + 次の構成は、この動作を示します。 + +``` + + + + + + + + + + +``` + +## 参照 + [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-security-token-service.md b/docs/framework/wcf/feature-details/how-to-create-a-security-token-service.md new file mode 100644 index 00000000000..e166b27b80e --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-security-token-service.md @@ -0,0 +1,138 @@ +--- +title: "方法 : セキュリティ トークン サービスを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フェデレーション" + - "WCF, フェデレーション" +ms.assetid: 98e82101-4cff-4bb8-a220-f7abed3556e5 +caps.latest.revision: 12 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 12 +--- +# 方法 : セキュリティ トークン サービスを作成する +セキュリティ トークン サービスは、WS\-Trust 仕様に定義されているプロトコルを実装します。このプロトコルでは、セキュリティ トークンの発行、更新、キャンセル、および検証を行うためのメッセージ形式とメッセージ交換パターンが定義されています。セキュリティ トークン サービスでは、これらの機能が 1 つ以上提供されます。ここでは、最も一般的なシナリオであるトークンの発行の実装について説明します。 + +## トークンの発行 + WS\-Trust は、トークンを発行するための `RequestSecurityToken` XML スキーマ定義言語 \(XSD: XML Schema Definition Language\) スキーマ要素および `RequestSecurityTokenResponse` XSD スキーマ要素に基づいたメッセージ形式を定義しています。また、関連するアクション URI \(Uniform Resource Identifier\) も定義しています。`RequestSecurityToken` メッセージに関連付けられているアクション URI は http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RST\/Issue です。`RequestSecurityTokenResponse` メッセージに関連付けられているアクション URI は http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RSTR\/Issue です。 + +### 要求メッセージの構造 + 発行要求メッセージの構造は、通常、次の項目で構成されます。 + +- "要求の種類" URI。値は http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/Issue です。 + +- "トークンの種類" URI。SAML \(Security Assertions Markup Language\) 1.1 トークンの場合、この URI の値は http:\/\/docs.oasis\-open.org\/wss\/oasis\-wss\-saml\-token\-profile\-1.1\#SAMLV1.1 です。 + +- 発行済みトークンに関連付けられるキーのビット数を示すキー サイズの値。 + +- "キーの種類" URI。対称キーの場合、この URI の値は http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/SymmetricKey です。 + + また、以下のような項目が含まれている必要があります。 + +- クライアントによって提供されたキー マテリアル。 + +- 発行済みトークンが使用されるターゲット サービスを示すスコープ情報。 + + セキュリティ トークン サービスは、発行応答メッセージを作成する際に、発行要求メッセージの情報を使用します。 + +## 応答メッセージの構造 + 発行応答メッセージの構造は、通常、次の項目で構成されます。 + +- 発行済みセキュリティ トークン \(例 : SAML 1.1 アサーション\)。 + +- セキュリティ トークンに関連付けられた証明トークン。対称キーでは、多くの場合、これは暗号化されたキー マテリアルです。 + +- 発行済みセキュリティ トークンへの参照。通常、セキュリティ トークン サービスが返す参照は、2 とおりに使用できます。1 つは、クライアントによって送信された後続のメッセージ内に、発行済みトークンが存在する場合で、もう 1 つは、後続のメッセージ内にトークンが存在しない場合です。 + + さらに、2 つの項目が含まれている必要があります。 + +- セキュリティ トークン サービスによって提供されたキー マテリアル。 + +- 共有キーを計算するために必要なアルゴリズム。 + +- 発行済みトークンの有効期間情報。 + +## 要求メッセージの処理 + セキュリティ トークン サービスは、要求メッセージのさまざまな部分を検査し、要求を満たすトークンを発行できることを確認することによって発行要求を処理します。セキュリティ トークン サービスは、発行するトークンを作成する前に次のことを確認する必要があります。 + +- 要求が、実際に発行されるトークンに対する要求であること。 + +- 要求されたトークンの種類をセキュリティ トークン サービスがサポートしていること。 + +- 要求を行う権限が要求者にあること。 + +- キー マテリアルに関する要求者の期待にセキュリティ トークン サービスが応えられること。 + + トークンを作成する際には、トークンの署名に使用されるキーと共有キーの暗号化に使用されるキーの 2 つを決定することが重要です。トークンに署名が必要なのは、クライアントがターゲット サービスにトークンを提示する際に、そのサービスが、そのトークンを発行したのが信頼されるセキュリティ トークン サービスであると判定できるようにするためです。キー マテリアルは、ターゲット サービスが復号化できる方法で暗号化される必要があります。 + + SAML アサーションに署名する処理では、 インスタンスを作成します。このクラスのコンストラクターは、次のものを受け取ります + +- SAML アサーションに署名するために使用する 。 + +- 使用する署名アルゴリズムを識別する文字列。 + +- 使用するダイジェスト アルゴリズムを識別する文字列。 + +- アサーションの署名に使用されるキーを識別する \(必要な場合\)。 + + [!code-csharp[c_CreateSTS#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#1)] + [!code-vb[c_CreateSTS#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#1)] + + 共有キーを暗号化する処理では、キー マテリアルを受け取り、それをターゲット サービスが共有キーの復号化に使用できるキーで暗号化します。通常は、ターゲット サービスの公開キーが使用されます。 + + [!code-csharp[c_CreateSTS#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#2)] + [!code-vb[c_CreateSTS#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#2)] + + さらに、暗号化されたキーの も必要です。 + + [!code-csharp[c_CreateSTS#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#3)] + [!code-vb[c_CreateSTS#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#3)] + + 最後に、この を使用して、`SamlSubject` を `SamlToken` の一部として作成します。 + + [!code-csharp[c_CreateSTS#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#4)] + [!code-vb[c_CreateSTS#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#4)] + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [フェデレーション サンプル](../../../../docs/framework/wcf/samples/federation-sample.md). + +## 応答メッセージの作成 + セキュリティ トークン サービスによって発行要求が処理され、発行されるトークンと証明キーが作成されたら、少なくとも、要求されたトークン、証明トークン、および発行されたトークンの参照を含む応答メッセージを作成する必要があります。発行済みトークンは、通常、 から作成された です。次の例を参照してください。 + + [!code-csharp[c_CreateSTS#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#5)] + [!code-vb[c_CreateSTS#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#5)] + + セキュリティ トークン サービスによって共有キー マテリアルが提供される場合は、 を作成することにより、証明トークンが作成されます。 + + [!code-csharp[c_CreateSTS#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#6)] + [!code-vb[c_CreateSTS#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#6)] + + クライアントとセキュリティ トークン サービスの両方によって共有キーのキー マテリアルが提供される場合の証明トークンの作成方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[フェデレーション サンプル](../../../../docs/framework/wcf/samples/federation-sample.md)」を参照してください。 + + 発行済みトークンの参照を作成するには、 クラスのインスタンスを作成します。 + + [!code-csharp[c_CreateSTS#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#7)] + [!code-vb[c_CreateSTS#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#7)] + + 最後に、これらの値を、クライアントに返される応答メッセージにシリアル化します。 + +## 例 + セキュリティ トークン サービスの完全なコードについては、「[フェデレーション サンプル](../../../../docs/framework/wcf/samples/federation-sample.md)」を参照してください。 + +## 参照 + + + + + + + + [フェデレーション サンプル](../../../../docs/framework/wcf/samples/federation-sample.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md b/docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md new file mode 100644 index 00000000000..938f9577086 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md @@ -0,0 +1,35 @@ +--- +title: "方法 : 指定した認証モード用の SecurityBindingElement を作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a7c7747a-5b8c-463f-8493-7266dac75066 +caps.latest.revision: 9 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 9 +--- +# 方法 : 指定した認証モード用の SecurityBindingElement を作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、クライアントとサービスが互いに認証するためのモードが複数あります。これらの認証モード用のセキュリティ バインド要素は、次の例のように、 クラスの静的メソッドまたは構成を使用して作成できます。 + + 18 個の認証モード[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[SecurityBindingElement 認証モード](../../../../docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md)」を参照してください。 + +## 使用例 + 次のコード例では、複数の認証モードのバインディングを作成するメソッドを示します。 + +> [!NOTE] +> オブジェクトのインスタンスが一度作成されると、 などの多数のプロパティは変更できなくなります。これらのプロパティで `set` を呼び出しても変更されません。 + + [!code-csharp[c_CustomBindingsAuthMode#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombindingsauthmode/cs/source.cs#2)] + [!code-vb[c_CustomBindingsAuthMode#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_custombindingsauthmode/vb/source.vb#2)] + +## 参照 + [SecurityBindingElement 認証モード](../../../../docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-code.md b/docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-code.md new file mode 100644 index 00000000000..9516a3e225c --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-code.md @@ -0,0 +1,54 @@ +--- +title: "方法 : コード内にサービス エンドポイントを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3fbb22fa-2930-48b8-b437-def1de87c6a0 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : コード内にサービス エンドポイントを作成する +この例では、電卓サービスに `ICalculator` コントラクトを定義し、そのサービスを `CalculatorService` クラスに実装し、コード内でサービス エンドポイントを定義します。このエンドポイントでは、サービスが クラスを使用するように指定します。 + + 通常、ベスト プラクティスは、コードで命令として記述するよりも、構成でバインディングを指定して情報を明示的にアドレス指定することです。展開済みサービスのバインディングおよびアドレスは一般的に、サービスの開発中に使用されるものとは異なるので、コード内でエンドポイントを定義することは通常、実用的ではありません。一般的に、バインディング情報とアドレス情報をコードに含めないことで、変更時にアプリケーションの再コンパイルや再展開を行う必要がなくなります。 + +#### コード内にサービス エンドポイントを作成するには + +1. サービス コントラクトを定義するインターフェイスを作成します。 + + [!code-csharp[c_HowTo_CodeServiceBinding#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeservicebinding/cs/source.cs#1)] + [!code-vb[c_HowTo_CodeServiceBinding#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeservicebinding/vb/source.vb#1)] + +2. 手順 1. で定義したサービス コントラクトを実装します。 + + [!code-csharp[c_HowTo_CodeServiceBinding#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeservicebinding/cs/source.cs#2)] + [!code-vb[c_HowTo_CodeServiceBinding#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeservicebinding/vb/source.vb#2)] + +3. アプリケーションをホストする場合は、サービスで使用するサービスとバインディングのベース アドレスを作成します。 + + [!code-csharp[c_HowTo_CodeServiceBinding#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeservicebinding/cs/source.cs#3)] + [!code-vb[c_HowTo_CodeServiceBinding#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeservicebinding/vb/source.vb#3)] + +4. ホストを作成し、 または他のオーバーロードの 1 つを呼び出して、ホストのサービス エンドポイントを追加します。 + + [!code-csharp[c_HowTo_CodeServiceBinding#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeservicebinding/cs/source.cs#6)] + [!code-vb[c_HowTo_CodeServiceBinding#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeservicebinding/vb/source.vb#6)] + + コードのバインディングを指定し、同時にランタイムによって提供された既定のエンドポイントを使用する場合は、 の作成時にベース アドレスをコンストラクターに渡します。 は呼び出さないでください。 + + [!code-csharp[c_HowTo_CodeServiceBinding#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeservicebinding/cs/source.cs#7)] + [!code-vb[c_HowTo_CodeServiceBinding#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeservicebinding/vb/source.vb#7)] + + 既定のエンドポイント[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +## 参照 + [方法 : コード内でサービス バインディングを指定する](../../../../docs/framework/wcf/how-to-specify-a-service-binding-in-code.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md b/docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md new file mode 100644 index 00000000000..170eb480748 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-service-endpoint-in-configuration.md @@ -0,0 +1,154 @@ +--- +title: "方法 : 構成にサービス エンドポイントを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "2016-06-16" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f474e25d-2a27-4f31-84c5-395c442b8e70 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : 構成にサービス エンドポイントを作成する +エンドポイントは、クライアントが [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスによって提供される機能にアクセスできるようにします。 エンドポイントの相対アドレスと絶対アドレスを組み合わせてサービスのエンドポイントを 1 つ以上定義できます。または、サービス エンドポイントを定義しない場合、ランタイムは既定で一部を提供します。 このトピックでは、相対アドレスと絶対アドレスの両方を含んでいる構成ファイルを使用したエンドポイントの使用方法について説明します。 + +## 使用例 + 次のサービス構成では、1 つのベース アドレスと 5 つのエンドポイントを指定します。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 使用例 + ベース アドレスは、次のサンプルのように `add` 要素を使用して service\/host\/baseAddresses の下に指定します。 + +```xml + + + + + + +``` + +## 使用例 + 次のサンプルの最初のエンドポイント定義では、相対アドレスを指定します。つまり、エンドポイント アドレスは、ベース アドレスと URI \(Uniform Resource Identifier\) 構造の規則に従った相対アドレスの組み合わせということを意味します。 相対アドレスが空 \(""\) のため、エンドポイント アドレスはベース アドレスと同じになります。 具体的には http:\/\/localhost:8000\/servicemodelsamples\/service です。 + +```xml + +``` + +## 使用例 + 2 番目のエンドポイント定義でも、相対アドレスを指定します。次のサンプル構成を参照してください。 相対アドレス "test" がベース アドレスの末尾に追加されています。 具体的には http:\/\/localhost:8000\/servicemodelsamples\/service\/test です。 + +```xml + +``` + +## 使用例 + 3 番目のエンドポイント定義では、絶対アドレスを指定します。次のサンプル構成を参照してください。 このアドレスでは、ベース アドレスは使用されていません。 具体的には http:\/\/localhost:8001\/hello\/servicemodelsamples です。 + +```xml + +``` + +## 使用例 + 4 番目のエンドポイント アドレスは、絶対アドレスと別のトランスポート \(ここでは TCP\) を指定しています。 このアドレスでは、ベース アドレスは使用されていません。 具体的には net.tcp:\/\/localhost:9000\/servicemodelsamples\/service です。 + +```xml + +``` + +## 使用例 + ランタイムによって提供された既定のエンドポイントを使用するには、コードまたは構成ファイルでサービス エンドポイントを指定しないでください。 次の例では、サービスを開くときに、ランタイムは既定のエンドポイントを作成します。 既定のエンドポイント、バインディング、および動作の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +```xml + + + + + + + + + + + + + + + + + + + + + +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-service-that-requires-sessions.md b/docs/framework/wcf/feature-details/how-to-create-a-service-that-requires-sessions.md new file mode 100644 index 00000000000..42b743f7eb5 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-service-that-requires-sessions.md @@ -0,0 +1,53 @@ +--- +title: "方法 : セッションを必要とするサービスを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8a7613ef-0df9-47c3-b8dc-47f42cb1fd8b +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : セッションを必要とするサービスを作成する +セッションでは、複数のエンドポイント間で共有される状態が作成されます。これにより、クライアントとサービス インスタンス間でのコールバック、マルチホップ セキュリティ、関連付けなどの便利な機能を使用できるようになります。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]セッションで[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)]、アプリケーションを参照してください[セッションを使用した](../../../../docs/framework/wcf/using-sessions.md)します。 + +### バインディングによるセッションのサポートを要求するコントラクトを指定するには + +1. 操作を&1; つ以上含むサービス コントラクトを作成します。 サービス コントラクトを作成する方法の例は、次を参照してください。[方法: サービス コントラクトを定義する](../../../../docs/framework/wcf/how-to-define-a-wcf-service-contract.md)です。 + +2. 変更、 を設定して、コントラクトを宣言する、 プロパティをいずれか。 + + - 場合はこのコントラクトは、セッション内で実行する必要があります。 + + - でこのコントラクトは、セッション内で実行できる場合です。 + + - 場合は、セッション内で、このコントラクトを実行しない必要があります。 + +3. セッションをサポートするバインディングを使用するようにサービス エンドポイントを構成します。 次の構成例の使用を示しています、 をサポートする、WS`-`ReliableMessaging セッションです。 + + [!code[SCA.Session#2](../../../../samples/snippets/common/VS_Snippets_CFX/sca.session/common/hostapplication.exe.config#2)] + [!code-csharp[SCA.Session#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/sca.session/cs/hostapplication.exe.config#2)] + [!code-vb[SCA.Session#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/sca.session/vb/hostapplication.exe.config#2)] + +## 例 + 次のコード例は、コントラクト レベルでのセッション要件を指定して、によってこの要件をサポートするために、構成ファイルを使用する方法を示しています、 バインドします。 + + [!code-csharp[SCA.Session#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/sca.session/cs/services.cs#1)] + [!code-vb[SCA.Session#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/sca.session/vb/services.vb#1)] + + [!code[SCA.Session#2](../../../../samples/snippets/common/VS_Snippets_CFX/sca.session/common/hostapplication.exe.config#2)] + [!code-csharp[SCA.Session#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/sca.session/cs/hostapplication.exe.config#2)] + [!code-vb[SCA.Session#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/sca.session/vb/hostapplication.exe.config#2)] + +## 関連項目 + + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-service-with-a-contract-interface.md b/docs/framework/wcf/feature-details/how-to-create-a-service-with-a-contract-interface.md new file mode 100644 index 00000000000..9b3efeb1f7e --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-service-with-a-contract-interface.md @@ -0,0 +1,44 @@ +--- +title: "方法 : コントラクト インターフェイスを使用してサービスを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7b6803f6-d6f9-4cc2-9f1b-6f4c920475d5 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : コントラクト インターフェイスを使用してサービスを作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] コントラクトの作成には、インターフェイスの使用が適しています。このコントラクトでは、サービスが提供する操作にアクセスするために必要なメッセージのコレクションと構造を指定します。このインターフェイスでは、インターフェイスに クラスを適用し、公開するメソッドに クラスを適用して、入力と出力の種類を定義します。 + + サービス コントラクト[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービス コントラクトの設計](../../../../docs/framework/wcf/designing-service-contracts.md)」を参照してください。 + +### インターフェイスを使用した WCF コントラクトの作成 + +1. [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)]、C\#、またはその他の共通言語ランタイム言語を使用して、新しいインターフェイスを作成します。 + +2. インターフェイスに クラスを適用します。 + +3. インターフェイスのメソッドを定義します。 + +4. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のパブリック コントラクトの一部として公開する必要のある各メソッドに、 クラスを適用します。 + +## 使用例 + 次のコード例は、サービス コントラクトを定義するインターフェイスを示しています。 + + [!code-csharp[c_HowTo_CreateContractWithInterface#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_createcontractwithinterface/cs/source.cs#1)] + [!code-vb[c_HowTo_CreateContractWithInterface#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_createcontractwithinterface/vb/source.vb#1)] + + クラスが適用されたメソッドは、既定で要求\/応答メッセージ パターンを使用します。このメッセージ パターン[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 要求\/応答コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-request-reply-contract.md)」を参照してください。属性のプロパティを設定することにより、他のメッセージ パターンを作成および使用できるようになります。その他の例については、「[方法 : 一方向コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-one-way-contract.md)」および「[方法 : 双方向コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md)」を参照してください。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-supporting-credential.md b/docs/framework/wcf/feature-details/how-to-create-a-supporting-credential.md new file mode 100644 index 00000000000..2da03aa3eae --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-supporting-credential.md @@ -0,0 +1,91 @@ +--- +title: "方法 : サポート資格情報を作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d0952919-8bb4-4978-926c-9cc108f89806 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : サポート資格情報を作成する +カスタムのセキュリティ スキームでは、複数の資格情報が必要になることがあります。 たとえば、サービスが、ユーザー名とパスワードだけでなく、クライアントが 18 歳以上であることを証明する資格情報もクライアントに要求することがあります。 この 2 番目の資格情報を*サポート資格情報*と呼びます。 ここでは、このような資格情報を [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントで実装する方法について説明します。 + +> [!NOTE] +> サポート資格情報の仕様は、WS\-SecurityPolicy 仕様の一部です。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] 「[Web サービスのセキュリティ仕様](http://go.microsoft.com/fwlink/?LinkId=88537)」を参照してください。 + +## トークンのサポート + 簡単に説明すると、メッセージ セキュリティを使用した場合は、常に*プライマリ資格情報* \(たとえば、X.509 証明書、Kerberos チケット\) によってメッセージがセキュリティで保護されます。 + + 仕様で定義されているとおり、セキュリティ バインディングは、*トークン*を使用してメッセージ交換をセキュリティで保護します。 *トークン*は、セキュリティ資格情報を表したものです。 + + セキュリティ バインディングは、セキュリティ バインディング ポリシーで特定されたプライマリ トークンを使用して、署名を作成します。 この署名を*メッセージ署名*と呼びます。 + + メッセージ署名に関連付けられたトークンによって提供されるクレームを増やすために、追加のトークンを指定できます。 + +## 保証、署名、および暗号化 + サポート資格情報は、メッセージ内部で送信された*サポート トークン*になります。 WS\-SecurityPolicy 仕様では、次の表に示すように、サポート トークンをメッセージに追加する方法が 4 つ定義されています。 + +|目的|説明| +|--------|--------| +|符号付き|サポート トークンはセキュリティ ヘッダーに追加され、メッセージ署名によって署名されます。| +|保証|*保証トークン*は、メッセージ署名を行います。| +|署名および保証|署名付き保証トークンは、メッセージ署名から生成された `ds:Signature` 要素全体を署名し、それ自体がこのメッセージ署名によって署名されます。つまり、両方のトークン \(メッセージ署名に使用されるトークンと署名付き保証トークン\) がお互いに署名します。| +|署名および暗号化|暗号化された署名付きサポート トークンは、`wsse:SecurityHeader` に表示されたときに暗号化されている署名付きサポート トークンです。| + +## サポート資格情報のプログラミング + サポート トークンを使用するサービスを作成するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)を作成する必要があります \([!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md).\) + + カスタム バインディングを作成する最初の手順は、次の 3 種類のいずれかのセキュリティ バインディング要素を作成することです。 + +- + +- + +- + + すべてのクラスは、次の 4 つの関連プロパティを備えた から継承します。 + +- + +- + +- + +- + +#### スコープ + サポート資格情報には、次の 2 つのスコープがあります。 + +- *エンドポイント サポート トークン*は、エンドポイントのすべての操作をサポートします。 つまり、サポート トークンによって表される資格情報は、エンドポイントの任意の操作が呼び出されたときにいつでも使用できます。 + +- *操作サポート トークン*は、エンドポイントの特定の操作だけをサポートします。 + + プロパティ名に示されているように、サポート資格情報は必須またはオプションのどちらかになることができます。 つまり、サポート資格情報は必須ではありませんが、存在する場合は使用され、存在しない場合も認証は失敗しません。 + +## 手順 + +#### サポート資格情報を備えたカスタム バインディングを作成するには + +1. セキュリティ バインド要素を作成します。 次の例では、`UserNameForCertificate` 認証モードで を作成します。 メソッドを使用します。 + +2. サポート パラメーターを対応するプロパティ \(`Endorsing`、`Signed`、`SignedEncrypted`、または `SignedEndorsed`\) によって返される型のコレクションに追加します。 名前空間に存在する型には、 など、一般的に使用される型があります。 + +## 例 + +### 説明 + のインスタンスを作成し、 クラスのインスタンスを、Endorsing プロパティによって返されるコレクションに追加する例を次に示します。 + +### コード + [!code-csharp[c_SupportingCredential#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_supportingcredential/cs/source.cs#1)] + +## 参照 + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-transactional-service.md b/docs/framework/wcf/feature-details/how-to-create-a-transactional-service.md new file mode 100644 index 00000000000..48dba731368 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-transactional-service.md @@ -0,0 +1,227 @@ +--- +title: "方法 : トランザクション サービスを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1bd2e4ed-a557-43f9-ba98-4c70cb75c154 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 方法 : トランザクション サービスを作成する +このサンプルでは、トランザクション サービスを作成する際のさまざまな側面と、サービス操作を調整するためにクライアントが起動するトランザクションの使用について説明します。 + +### トランザクション サービスの作成 + +1. サービス コントラクトを作成し、 列挙型の適切な設定を使用して操作に注釈を付け、受信トランザクションの要件を指定します。 は、実装するサービス クラスにも置くことができることに注意してください。こうすると、これらのトランザクション設定を使用するインターフェイスを 1 回実装するだけで済むため、すべての実装で設定を行う必要がありません。 + + ``` + [ServiceContract] + public interface ICalculator + { + [OperationContract] + // Use this to require an incoming transaction + [TransactionFlow(TransactionFlowOption.Mandatory)] + double Add(double n1, double n2); + [OperationContract] + // Use this to permit an incoming transaction + [TransactionFlow(TransactionFlowOption.Allowed)] + double Subtract(double n1, double n2); + } + ``` + +2. 実装クラスを作成し、オプションとして を使用して および を指定します。多くの場合、 の既定値である 60 秒、および の既定値である `Unspecified` が適切な設定値となります。操作ごとに、 属性を使用して、メソッド内で実行される処理が、 属性の値に応じたトランザクション スコープの範囲内で行われる必要があるかどうかを指定できます。この場合、`Add` メソッドで使用されるトランザクションは、クライアントからフローしてくる必須の受信トランザクションと同じになり、`Subtract` メソッドで使用されるトランザクションは、受信トランザクションと同じになるか \(クライアントからフローしてくる場合\)、暗黙的にローカルで新たに作成されたトランザクションになります。 + + ``` + [ServiceBehavior( + TransactionIsolationLevel = System.Transactions.IsolationLevel.Serializable, + TransactionTimeout = "00:00:45")] + public class CalculatorService : ICalculator + { + [OperationBehavior(TransactionScopeRequired = true)] + public double Add(double n1, double n2) + { + // Perform transactional operation + RecordToLog(String.Format("Adding {0} to {1}", n1, n2)); + return n1 + n2; + } + + [OperationBehavior(TransactionScopeRequired = true)] + public double Subtract(double n1, double n2) + { + // Perform transactional operation + RecordToLog(String.Format("Subtracting {0} from {1}", n2, n1)); + return n1 - n2; + } + + private static void RecordToLog(string recordText) + { + // Database operations omitted for brevity + // This is where the transaction provides specific benefit + // - changes to the database will be committed only when + // the transaction completes. + } + } + ``` + +3. 構成ファイルでバインディングを構成して、トランザクション コンテキストのフローを指定し、そのとき使用されるプロトコルを指定します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][ServiceModel トランザクションの構成](../../../../docs/framework/wcf/feature-details/servicemodel-transaction-configuration.md).具体的には、エンドポイント要素の `binding` 属性でバインド型を指定します。次のサンプル構成のように、[\](http://msdn.microsoft.com/ja-jp/13aa23b7-2f08-4add-8dbf-a99f8127c017) 要素には `transactionalOleTransactionsTcpBinding` という名前のバインディング構成を参照する `bindingConfiguration` 属性が含まれます。 + + ``` + + + + ``` + + 次の構成で示すように、トランザクション フローは、`transactionFlow` 属性を使用して構成レベルで有効にすることができ、トランザクション プロトコルは、`transactionProtocol` 属性を使用して指定できます。 + + ``` + + + + + + ``` + +### 複数のトランザクション プロトコルのサポート + +1. [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用して作成されたクライアントとサービスが関係するシナリオの場合、最適なパフォーマンスを得るためには OleTransactions プロトコルを使用する必要があります。ただし、サード パーティのプロトコル スタックとの相互運用性が必要なシナリオでは、WS\-AT \(WS\-AtomicTransaction\) プロトコルが有用です。次の構成ファイルの例で示すように、プロトコル固有の適切なバインディングを持つ複数のエンドポイントを用意することで、両方のプロトコルを受け入れるように [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを構成できます。 + + ``` + + + + + ``` + + トランザクション プロトコルは、`transactionProtocol` 属性を使用して指定します。ただし、このバインディングは WS\-AT プロトコルのみを使用するため、この属性は、システム指定の `wsHttpBinding` には存在しません。 + + ``` + + + + + + + + + ``` + +### トランザクションの完了の制御 + +1. 既定では [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の操作は、未処理の例外がスローされなかった場合、トランザクションを自動的に完了します。この動作を変更するには、 プロパティと メソッドを使用します。ある操作を他の操作と同じトランザクション内で行う必要がある場合 \(借方と貸方の操作など\)、次の `Debit` 操作の例に示すように、 プロパティを `false` に設定することで自動完了の動作を無効にできます。`Debit` 操作で使用されるトランザクションは、`Credit1` 操作に示すように プロパティが `true` に設定されているメソッドが呼び出されるまで、または `Credit2` 操作に示すように、 メソッドを呼び出してトランザクションの完了が明示的に示されるまで、完了しません。2 つの貸方操作は説明のために示されています。一般には単一の貸方処理が使用されます。 + + ``` + [ServiceBehavior] + public class CalculatorService : IAccount + { + [OperationBehavior( + TransactionScopeRequired = true, TransactionAutoComplete = false)] + public void Debit(double n) + { + // Perform debit operation + + return; + } + + [OperationBehavior( + TransactionScopeRequired = true, TransactionAutoComplete = true)] + public void Credit1(double n) + { + // Perform credit operation + + return; + } + + [OperationBehavior( + TransactionScopeRequired = true, TransactionAutoComplete = false)] + public void Credit2(double n) + { + // Perform alternate credit operation + + OperationContext.Current.SetTransactionComplete(); + return; + } + } + ``` + +2. トランザクションの関連付けを行うため、 プロパティを `false` に設定するには、セッションの多いバインディングを使用する必要があります。この要件は、 の `SessionMode` プロパティで指定します。 + + ``` + [ServiceContract(SessionMode = SessionMode.Required)] + public interface IAccount + { + [OperationContract] + [TransactionFlow(TransactionFlowOption.Allowed)] + void Debit(double n); + [OperationContract] + [TransactionFlow(TransactionFlowOption.Allowed)] + void Credit1(double n); + [OperationContract] + [TransactionFlow(TransactionFlowOption.Allowed)] + void Credit2(double n); + } + ``` + +### トランザクション サービス インスタンスの有効期間の制御 + +1. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、 プロパティを使用して、トランザクションが完了したときに基になるサービス インスタンスを解放するかどうかを指定します。構成が変更されていない限り、これは既定で `true` に設定されているため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は効率的で予測可能な "ジャスト イン タイム" アクティベーション動作を示します。後続するトランザクションでサービスを呼び出すと、前回のトランザクションの状態が残らない新規のサービス インスタンスが必ず呼び出されます。これは通常は便利ですが、トランザクションの完了後もサービス インスタンス内に状態を保持する必要がある場合もあります。この例としては、必要な状態やリソースへのハンドルの取得または再構成に負荷がかかる場合があります。これを実行するには、 プロパティを `false` に設定します。このように設定することで、インスタンスとこれに関連する任意の状態が、後続する呼び出しからも利用できるようになります。この設定を使用する場合は、状態とトランザクションを消去して完了するタイミングと方法を入念に考慮する必要があります。`runningTotal` 変数を使用してインスタンスを保持することで、これを行う方法を次のサンプルに示します。 + + ``` + [ServiceBehavior(TransactionIsolationLevel = [ServiceBehavior( + ReleaseServiceInstanceOnTransactionComplete = false)] + public class CalculatorService : ICalculator + { + double runningTotal = 0; + + [OperationBehavior(TransactionScopeRequired = true)] + public double Add(double n) + { + // Perform transactional operation + RecordToLog(String.Format("Adding {0} to {1}", n, runningTotal)); + runningTotal = runningTotal + n; + return runningTotal; + } + + [OperationBehavior(TransactionScopeRequired = true)] + public double Subtract(double n) + { + // Perform transactional operation + RecordToLog(String.Format("Subtracting {0} from {1}", n, runningTotal)); + runningTotal = runningTotal - n; + return runningTotal; + } + + private static void RecordToLog(string recordText) + { + // Database operations omitted for brevity + } + } + ``` + + > [!NOTE] + > インスタンスの有効期間はサービスの内部に属する動作であり、 プロパティを介して制御できるため、インスタンスの動作を設定するためにサービス構成やサービス コントラクトを変更する必要はありません。また、ネットワーク上にもこれに相当する表現はありません。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-wcf-contract-with-a-class.md b/docs/framework/wcf/feature-details/how-to-create-a-wcf-contract-with-a-class.md new file mode 100644 index 00000000000..25ba4938ee6 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-wcf-contract-with-a-class.md @@ -0,0 +1,50 @@ +--- +title: "方法 : クラスを使用して Windows Communication Foundation コントラクトを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 1ad69393-3915-4e7f-9b91-b6fc59c6f5ba +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# 方法 : クラスを使用して Windows Communication Foundation コントラクトを作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] コントラクトの作成には、インターフェイスの使用が適しています。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : サービス コントラクトを定義する](../../../../docs/framework/wcf/how-to-define-a-wcf-service-contract.md).ここで説明する代替方法では、クラスを作成してから、 属性を直接そのクラスに適用し、 属性をコントラクトに含まれるクラス内の各メソッドに適用します。 + +> [!WARNING] +> `[ServiceContract]` と `[ServiceContractAttribute]` は、同じことを行います。`[OperationContract]` と `[OperationContractAttribute]` でも、同様です。各ケースで、前者は後者の短縮形です。 + + サービス コントラクト[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービス コントラクトの設計](../../../../docs/framework/wcf/designing-service-contracts.md)」を参照してください。 + +### クラスを使用した Windows Communication Foundation コントラクトの作成 + +1. [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)]、C\#、またはその他の任意の共通言語ランタイム言語を使用して、新しいクラスを作成します。 + +2. クラスに クラスを適用します。 + +3. クラスでメソッドを作成します。 + +4. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のパブリック コントラクトの一部として公開する必要のある各メソッドに クラスを適用します。 + +## 使用例 + 次のコード例は、サービス コントラクトを定義するクラスを示しています。 + + [!code-csharp[c_HowTo_CreateContractWithClass#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_createcontractwithclass/cs/source.cs#1)] + [!code-vb[c_HowTo_CreateContractWithClass#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_createcontractwithclass/vb/source.vb#1)] + + クラスが適用されたメソッドは、既定で要求\/応答メッセージ パターンを使用します。このメッセージ パターン[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 要求\/応答コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-request-reply-contract.md)」を参照してください。属性のプロパティを設定することにより、他のメッセージ パターンを作成および使用できるようになります。その他の例については、「[方法 : 一方向コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-one-way-contract.md)」および「[方法 : 双方向コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md)」を参照してください。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-wcf-service-that-communicates-over-websockets.md b/docs/framework/wcf/feature-details/how-to-create-a-wcf-service-that-communicates-over-websockets.md new file mode 100644 index 00000000000..f7d94c4f117 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-wcf-service-that-communicates-over-websockets.md @@ -0,0 +1,331 @@ +--- +title: "WebSockets 上で通信する WCF サービスを作成する用法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bafbbd89-eab8-4e9a-b4c3-b7b0178e12d8 +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# WebSockets 上で通信する WCF サービスを作成する用法 +WCF サービスと WCF クライアントは、 バインディングを使用することにより、WebSocket 経由で通信できます。 WebSocket が使用されるのは、サービス コントラクトによってコールバック コントラクトが定義されていると によって判断された場合です。 ここでは、 を使用して WebSocket 経由で通信する WCF サービスと WCF クライアントの実装方法について説明します。 + +### サービスの定義 + +1. コールバック コントラクトを定義します。 + + ```csharp + [ServiceContract] + public interface IStockQuoteCallback + { + [OperationContract(IsOneWay = true)] + Task SendQuote(string code, double value); + } + ``` + + このコントラクトは、サービス側からクライアントにメッセージを返すことができるようにクライアント アプリケーションで実装されます。 + +2. サービス コントラクトを定義し、コールバック コントラクトとして `IStockQuoteCallback` インターフェイスを指定します。 + + ```csharp + [ServiceContract(CallbackContract = typeof(IStockQuoteCallback))] + public interface IStockQuoteService + { + [OperationContract(IsOneWay = true)] + Task StartSendingQuotes(); + } + ``` + +3. サービス コントラクトを実装します。 + + ``` + public class StockQuoteService : IStockQuoteService + { + public async Task StartSendingQuotes() + { + var callback = OperationContext.Current.GetCallbackChannel(); + var random = new Random(); + double price = 29.00; + + while (((IChannel)callback).State == CommunicationState.Opened) + { + await callback.SendQuote("MSFT", price); + price += random.NextDouble(); + await Task.Delay(1000); + } + } + } + ``` + + サービス操作 `StartSendingQuotes` は、非同期呼び出しとして実装されます。 `OperationContext` を使ってコールバック チャネルを取得します。チャネルが開いている場合は、コールバック チャネルで非同期呼び出しを行います。 + +4. サービスの構成 + + ```xml + + + + + + + + + + + + + + + + + + + + + + + + ``` + + サービスの構成ファイルは WCF の既定のエンドポイントに依存しています。 作成された既定のエンドポイントに `NetHttpBinding` を使用するように、`` セクションを使用して指定しています。 + +### クライアントの定義 + +1. コールバック コントラクトを実装します。 + + ```csharp + private class CallbackHandler : StockQuoteServiceReference.IStockQuoteServiceCallback + { + public async Task SendQuoteAsync(string code, double value) + { + Console.WriteLine("{0}: {1:f2}", code, value); + } + } + ``` + + コールバック コントラクト操作は、非同期メソッドとして実装されます。 + + 1. クライアント コードを実装します。 + + ```csharp + class Program + { + static void Main(string[] args) + { + var context = new InstanceContext(new CallbackHandler()); + var client = new StockQuoteServiceReference.StockQuoteServiceClient(context); + client.StartSendingQuotes(); + Console.ReadLine(); + } + + private class CallbackHandler : StockQuoteServiceReference.IStockQuoteServiceCallback + { + public async Task SendQuoteAsync(string code, double value) + { + Console.WriteLine("{0}: {1:f2}", code, value); + } + } + } + ``` + + ここでは、わかりやすいように CallbackHandler を繰り返しています。 クライアント アプリケーションは、新しい InstanceContext を作成し、コールバック インターフェイスの実装を指定します。 次に、新しく作成された InstanceContext への参照を送信するプロキシ クラスのインスタンスを作成します。 クライアントがサービスを呼び出すと、サービスは、指定されたコールバック コントラクトを使用してクライアントを呼び出します。 + + 2. クライアントの構成 + + ```xml + + + + + + + + + + + + + + + + + + + ``` + + クライアント構成では特別な操作を実行する必要はありません。`NetHttpBinding` を使用して、クライアント側のエンドポイントを指定するだけです。 + +## 使用例 + このトピックで使用されているコード全体を次に示します。 + +```csharp +// IStockQuoteService.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.Text; +using System.Threading.Tasks; + +namespace Server +{ + [ServiceContract(CallbackContract = typeof(IStockQuoteCallback))] + public interface IStockQuoteService + { + [OperationContract(IsOneWay = true)] + Task StartSendingQuotes(); + } + + [ServiceContract] + public interface IStockQuoteCallback + { + [OperationContract(IsOneWay = true)] + Task SendQuote(string code, double value); + } +} + +``` + +``` +// StockQuoteService.svc.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.ServiceModel.Channels; +using System.Text; +using System.Threading.Tasks; + +namespace Server +{ + public class StockQuoteService : IStockQuoteService + { + public async Task StartSendingQuotes() + { + var callback = OperationContext.Current.GetCallbackChannel(); + var random = new Random(); + double price = 29.00; + + while (((IChannel)callback).State == CommunicationState.Opened) + { + await callback.SendQuote("MSFT", price); + price += random.NextDouble(); + await Task.Delay(1000); + } + } + } +} +``` + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +``` + +<%@ ServiceHost Language="C#" Debug="true" Service="Server.StockQuoteService" CodeBehind="StockQuoteService.svc.cs" %> +``` + +```csharp +// Client.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.ServiceModel; +using System.Text; +using System.Threading.Tasks; + +namespace Client +{ + class Program + { + static void Main(string[] args) + { + var context = new InstanceContext(new CallbackHandler()); + var client = new StockQuoteServiceReference.StockQuoteServiceClient(context); + client.StartSendingQuotes(); + Console.ReadLine(); + } + + private class CallbackHandler : StockQuoteServiceReference.IStockQuoteServiceCallback + { + public async Task SendQuoteAsync(string code, double value) + { + Console.WriteLine("{0}: {1:f2}", code, value); + } + } + } +} +``` + +```xml + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [同期操作と非同期操作](../../../../docs/framework/wcf/synchronous-and-asynchronous-operations.md) + [NetHttpBinding の使用](../../../../docs/framework/wcf/feature-details/using-the-nethttpbinding.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-workflow-service-that-calls-another-workflow-service.md b/docs/framework/wcf/feature-details/how-to-create-a-workflow-service-that-calls-another-workflow-service.md new file mode 100644 index 00000000000..de3289799b6 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-workflow-service-that-calls-another-workflow-service.md @@ -0,0 +1,140 @@ +--- +title: "方法: 別のワークフロー サービスを呼び出すワークフロー サービスを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 99b3ee3e-aeb7-4e6f-8321-60fe6140eb67 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 方法: 別のワークフロー サービスを呼び出すワークフロー サービスを作成する +ワークフロー サービスでは、別のワークフロー サービスから情報を取得することが必要になる場合があります。このトピックでは、別のワークフロー サービスからワークフロー サービスを呼び出す方法について説明します。このトピックでは、2 つのワークフロー サービスを作成します。入力文字列を反転させるメソッドを持つワークフロー サービスと、その最初のサービスを使用して文字列を反転させた後、入力文字列を大文字に変換するワークフロー サービスです。 + +### Reverser ワークフロー サービスを作成するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を管理者として実行します。 + +2. **\[ファイル\]**、**\[新規作成\]**、**\[プロジェクト\]** の順にクリックします。**\[インストールされたテンプレート\]** ペインの **\[ワークフロー\]** ノードで、**\[WCF ワークフロー サービス アプリケーション\]** を選択します。ソリューションに `NestedServices` という名前を付けて、**\[OK\]** をクリックします。 + +3. **\[サーバー\]** の **\[ローカル IIS Web サーバーを使用する\]** が選択されていることを確認します。**\[仮想ディレクトリの作成\]** をクリックします。仮想ディレクトリが正しく作成されたことを示すダイアログ ボックスで **\[OK\]** をクリックします。 + +4. ソリューション エクスプローラーで、Service1.xamlx を `StringReverserService.xamlx` という名前に変更します。 + +5. 新しいプロジェクトの **\[プロジェクトのプロパティ\]** ページで、**\[Web\]** タブをクリックします。**\[開始動作\]** を **\[ページを指定する\]** に設定し、StringReverserService.xamlx を開始するページとして選択します。 + +6. デザイナーで StringReverserService.xamlx を開いて、既存の `ReceiveRequest` アクティビティおよび `SendReply` アクティビティを削除し、`ReceiveAndSendReply` アクティビティを既存のシーケンス アクティビティにドラッグします。 + + 1. **\[OperationName\]** を \[ReverseString\] に設定します。 + + 2. **\[ServiceContractName\]** を \[IReverseString\] に設定します。 + + 3. **\[CanCreateInstance\]** チェック ボックスをオンにします。 + +7. **\[SequentialService\]** アクティビティを選択し、デザイナーの下部にある **\[変数\]** タブをクリックします。StringToReverse と ReversedStringToReturn という文字列型の 2 つの新しい変数を作成します。 + +8. **Receive** アクティビティの **\[定義\]** リンクをクリックします。**\[パラメーター\]** をクリックし、StringToReverse に代入する InputString という文字列型のパラメーターを作成します。 + +9. **SendReplyToReceive** アクティビティの **\[定義\]** リンクをクリックします。**\[パラメーター\]** をクリックし、ReversedStringToReturn に代入される ReversedString という文字列型のパラメーターを作成します。 + +10. サービスのロジックを実装するには、StringLibrary というプロジェクトで新しいクラスを作成します。クラスの定義を次のコードに置き換えます。 + + ``` + public class StringLibrary + { + public static String ReverseString(string StringToReverse) + { + char[] charArray = StringToReverse.ToCharArray(); + Array.Reverse(charArray); + return new String(charArray); + } + } + + ``` + +11. 入力で ReverseString メソッドを呼び出すには、ツールボックスから **InvokeMethod** アクティビティを **Receive** アクティビティと **SendReply** アクティビティの間の空白にドラッグします。アクティビティのプロパティを次のように設定します。 + + 1. **\[MethodName\]**: ReverseString + + 2. **\[結果\]**: ReversedStringToReturn + + 3. **\[パラメーター\]**: 新しいパラメーターを作成し、**\[方向\]** を \[イン\]、**\[型\]** を \[文字列\]、**\[値\]** を \[StringToReverse\] に設定します。 + + 4. **\[TargetType\]**: NestedServices.StringLibrary + +12. F5 キーを押して、サービスをテストします。表示される \[WCF テスト クライアント\] で、ReverseString\(\) メソッドをダブルクリックします。\[要求\] ペインで、InputString パラメーターの \[値\] に 「`Sample`」と入力します。**\[起動\]** をクリックします。サービスにより "elpmaS" が返されます。 + +### UpperCaser ワークフロー サービスを作成するには + +1. NestedServices プロジェクトを右クリックして、**\[追加\]**、**\[新しい項目\]** の順に選択します。**\[ワークフロー\]** ノードで、**\[WCF ワークフロー サービス\]** を選択し、新しいサービスに `UpperCaserService` という名前を付けます。**\[追加\]** をクリックします。これにより、UpperCaserService.xamlx という新しいワークフロー サービスがプロジェクトに追加されます。 + +2. デザイナーで UpperCaserService.xamlx を開いて、既存の **ReceiveRequest** アクティビティおよび `SendReply` アクティビティを削除し、`ReceiveAndSendReply` アクティビティを既存のシーケンス アクティビティにドラッグします。 + + 1. **\[OperationName\]** を \[UpperCaseString\] に設定します。 + + 2. **\[ServiceContractName\]** を \[IUpperCaseString\] に設定します。 + + 3. **\[CanCreateInstance\]** チェック ボックスをオンにします。 + +3. SequentialService アクティビティを選択し、デザイナーの下部にある **\[変数\]** タブをクリックします。StringToUpper、StringToReverse、StringToReturn という文字列型の 3 つの新しい変数を作成します。 + +4. **Receive** アクティビティの **\[定義\]** リンクをクリックします。**\[パラメーター\]** をクリックし、StringToUpper に代入する InputString という文字列型のパラメーターを作成します。 + +5. **SendReplyToReceive** アクティビティの **\[定義\]** リンクをクリックします。**\[パラメーター\]** をクリックし、StringToReturn に代入される ModifiedString という文字列型のパラメーターを作成します。 + +6. サービスのロジックを実装するには、次のコードを使用して、StringLibrary クラスで新しいメソッドを作成します。 + + ``` + public static String UpperCaseString(string StringToUpperCase) + { + return StringToUpperCase.ToUpper(); + + } + + ``` + +7. 入力で UpperCaseString メソッドを呼び出すには、ツールボックスから **InvokeMethod** アクティビティを **Receive** アクティビティと **SendReply** アクティビティの間の空白にドラッグします。アクティビティのプロパティを次のように設定します。 + + 1. **\[MethodName\]**: UpperCaseString + + 2. **\[結果\]**: StringToReverse + + 3. **\[パラメーター\]**: 新しいパラメーターを作成し、**\[方向\]** を \[イン\]、**\[型\]** を \[文字列\]、**\[値\]** を \[StringToUpper\] に設定します。 + + 4. **\[TargetType\]**: NestedServices.StringLibrary + +8. ここで、修正済みの文字列で最初のサービスを呼び出します。プロジェクトを右クリックし、**\[サービス参照の追加\]** をクリックします。http:\/\/localhost\/NestedServices\/StringReverserService.xamlx でサービス参照をサービスに追加し、プロジェクトをビルドして最初の Web サービスにアクセスするカスタム アクティビティを作成します。 + +9. 新しいアクティビティのインスタンスを、**InvokeMethod** アクティビティと **SendReplyToReceive** アクティビティの間のワークフローにドラッグします。変数 StringToReverse を新しいアクティビティの InputString プロパティに、変数 StringToReturn を StringToReturn プロパティに割り当てます。 + +10. NestedServices プロジェクトの \[プロパティ\] ページを開き、**\[Web\]** タブの **\[ページを指定する\]** を UpperCaserService.xamlx に変更します。 + +11. F5 キーを押して、サービスをテストします。表示される \[WCF テスト クライアント\] で、ReverseString\(\) メソッドをダブルクリックします。\[要求\] ペインで、InputString パラメーターの \[値\] に 「`Sample`」と入力します。**\[起動\]** をクリックします。サービスにより "ELPMAS" が返されます。 + +### サービスを呼び出すクライアントを作成するには + +1. クライアントという新しいコンソール アプリケーション プロジェクトをソリューションに追加します。 + +2. クライアント プロジェクトを右クリックして、**\[サービス参照の追加\]** をクリックします。表示されるウィンドウで、**\[探索\]** をクリックします。StringReverserService.xamlx を選択し、名前空間として「ReverseService」と入力します。**\[OK\]** をクリックします。 + +3. Program.cs の Main メソッドを次のコードで置き換えます。 + + ``` + static void Main(string[] args) + { + Console.Write("Input string to process:"); + String input = Console.ReadLine(); + var service = new ReverseService.ReverseStringClient(); + Console.WriteLine("Output from service: {0}", service.ReverseString(input)); + Console.ReadKey(); + } + + ``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-workflow-service-with-messaging-activities.md b/docs/framework/wcf/feature-details/how-to-create-a-workflow-service-with-messaging-activities.md new file mode 100644 index 00000000000..2978ccbaaad --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-workflow-service-with-messaging-activities.md @@ -0,0 +1,102 @@ +--- +title: "方法: メッセージング アクティビティを使用してワークフロー サービスを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 53d094e2-6901-4aa1-88b8-024b27ccf78b +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 方法: メッセージング アクティビティを使用してワークフロー サービスを作成する +このトピックでは、メッセージング アクティビティを使用して単純なワークフロー サービスを作成する方法について説明します。 ここでは、メッセージング アクティビティだけで構成されるサービスのワークフロー サービスを作成する機構に重点を置きます。 実際のサービスでは、ワークフローに他の多くのアクティビティが含まれます。 このサービスは、文字列を取得して、それを呼び出し元に返す、Echo という 1 つの操作を実装します。 このトピックは、一連の 2 つのトピックの最初のものです。 次のトピック「[方法: ワークフロー アプリケーションからサービスにアクセスする](../../../../docs/framework/wcf/feature-details/how-to-access-a-service-from-a-workflow-application.md)」では、このトピックで作成したサービスを呼び出すワークフロー アプリケーションの作成方法について説明します。 + +### ワークフロー サービス プロジェクトを作成するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を起動します。 + +2. **\[ファイル\]** メニューで **\[新規作成\]**、**\[プロジェクト\]** の順に選択して、**\[新しいプロジェクト\]** ダイアログ ボックスを表示します。 インストールされているテンプレートの一覧で **\[ワークフロー\]** を選択し、プロジェクトの種類の一覧で **\[WCF ワークフロー サービス アプリケーション\]** を選択します。 次の図に示すように、プロジェクトに `MyWFService` という名前を付け、既定の場所を使用します。 + + **\[OK\]** をクリックして **\[新しいプロジェクト\]** ダイアログ ボックスを閉じます。 + +3. プロジェクトが作成されると、次の図に示すように、Service1.xamlx ファイルがデザイナーで開かれます。 + + ![デザイナーに表示されている既定のワークフロー](../../../../docs/framework/wcf/feature-details/media/defaultworkflowservice.JPG "DefaultWorkflowService") + + "**シーケンシャル サービス**" というラベルの付いたアクティビティを右クリックし、**\[削除\]** をクリックします。 + +### ワークフロー サービスを実装するには + +1. 画面左側の **\[ツールボックス\]** タブをクリックしてツールボックスを表示し、プッシュピンをクリックしてウィンドウを開いたままにします。 次の図に示すように、ツールボックスの **\[メッセージング\]** セクションを展開して、メッセージング アクティビティおよびメッセージング アクティビティ テンプレートを表示します。 + + ![メッセージング タブが展開されているツールボックス](../../../../docs/framework/wcf/feature-details/media/wfdesignertoolbox.JPG "WFDesignerToolbox") + +2. **\[ReceiveAndSendReply\]** テンプレートをワークフロー デザイナーにドラッグ アンド ドロップします。 これにより、 アクティビティが作成されます。次の図に示すように、**Receive** アクティビティの後に アクティビティがあります。 + + ![デザイナーに表示された ReceiveAndSendReply テンプレート](../../../../docs/framework/wcf/feature-details/media/receiveandsendreply.JPG "ReceiveAndSendReply") + + アクティビティの プロパティは `Receive` に設定されています。これは、 アクティビティが応答する アクティビティの名前です。 + +3. アクティビティの `[OperationName]` というラベルの付いたボックスに「**Echo**」と入力します。 これにより、サービスが実装する操作の名前が定義されます。 + + ![操作名を指定する](../../../../docs/framework/wcf/feature-details/media/defineoperation.JPG "DefineOperation") + +4. アクティビティを選択した状態で、プロパティ ウィンドウがまだ開いていない場合は、**\[表示\]** メニューの **\[プロパティ ウィンドウ\]** をクリックして開きます。 **\[プロパティ ウィンドウ\]** で、**\[CanCreateInstance\]** が表示されるまで下へスクロールし、次の図に示すように、チェックボックスをオンにします。 この設定によって、ワークフロー サービス ホストはメッセージが受信されると \(必要に応じて\) サービスの新しいインスタンスを作成できるようになります。 + + ![CanCreateInstance プロパティ](../../../../docs/framework/wcf/feature-details/media/cancreateinstance.JPG "CanCreateInstance") + +5. アクティビティを選択し、デザイナーの左下隅にある **\[変数\]** をクリックします。 これにより、変数エディターが開かれます。 **\[変数の作成\]** リンクをクリックして、操作に送られる文字列を格納する変数を追加します。 変数に `msg` という名前を付け、次の図に示すように、その **\[変数\]** の種類を文字列に設定します。 + + ![変数の追加](../../../../docs/framework/wcf/feature-details/media/addvariable.JPG "AddVariable") + + **\[変数\]** をもう一度クリックして、変数エディターを閉じます。 + +6. アクティビティの **\[コンテンツ\]** ボックスの **\[定義..\]** リンクをクリックして、**\[コンテンツ定義\]** ダイアログ ボックスを表示します。 **\[パラメーター\]** オプション ボタンを選択し、**\[新しいパラメーターの追加\]** リンクをクリックし、`[名前]` ボックスに**「inMsg」**と入力し、**\[型\]** ボックスの **\[文字列\]** を選択し、`[割り当て先]` ボックスに「**msg**」と入力します。 + + ![パラメーター コンテンツの追加](../../../../docs/framework/wcf/feature-details/media/parameterscontent.jpg "ParametersContent") + + これにより、Receive アクティビティが文字列パラメーターを受け取り、そのデータが `msg` 変数にバインドされるように指定されます。 **\[OK\]** をクリックして **\[コンテンツ定義\]** ダイアログ ボックスを閉じます。 + +7. **\[定義...\]** アクティビティの **\[コンテンツ\]** ボックスの リンクをクリックして、**\[コンテンツ定義\]** ダイアログ ボックスを表示します。 **\[パラメーター\]** オプション ボタンを選択し、**\[新しいパラメーターの追加\]** リンクをクリックして `[名前]` ボックスに**「msg」**と入力し、**\[型\]** ボックスの **\[文字列\]** を選択し、`[値]` ボックスに「**msg**」と入力します。 + + ![パラメーター コンテンツの追加](../../../../docs/framework/wcf/feature-details/media/parameterscontent2.jpg "ParametersContent2") + + これにより、 アクティビティがメッセージまたはメッセージ コントラクト型を送信し、そのデータが `msg` 変数にバインドされるように指定されます。 これは アクティビティであるため、`msg` のデータは、アクティビティがクライアントに送り返すメッセージの設定に使用されます。 **\[OK\]** をクリックして **\[コンテンツ定義\]** ダイアログ ボックスを閉じます。 + +8. **\[ビルド\]** メニューの **\[ソリューションのビルド\]** をクリックして、ソリューションを保存およびビルドします。 + +## ワークフロー サービス プロジェクトの構成 + ワークフロー サービスは完成しました。 ここでは、ホストと実行を容易にするように、ワークフロー サービス ソリューションを構成する方法について説明します。 このソリューションでは、ASP.NET 開発サーバーを使用してサービスをホストします。 + +#### プロジェクトのスタートアップ オプションを設定するには + +1. **ソリューション エクスプローラー**で **\[MyWFService\]** を右クリックし、**\[プロパティ\]** をクリックして **\[プロジェクトのプロパティ\]** ダイアログ ボックスを表示します。 + +2. **\[Web\]** タブを選択し、次の図に示すように、**\[開始動作\]** の **\[ページを指定する\]** を選択して、ボックスに「`Service1.xamlx`」と入力します。 + + ![プロジェクト プロパティ ダイアログ](../../../../docs/framework/wcf/feature-details/media/projectpropertiesdlg.JPG "ProjectPropertiesDlg") + + これにより、ASP.NET 開発サーバーの Service1.xamlx で定義されたサービスがホストされます。 + +3. Ctrl キーを押しながら F5 キーを押して、サービスを起動します。 次の図に示すように、ASP.NET 開発サーバーのアイコンが、デスクトップの右下側に表示されます。 + + ![ASP.NET Developer Server のアイコン](../../../../docs/framework/wcf/feature-details/media/aspnetdevservericon.JPG "ASPNETDEVServerIcon") + + また、Internet Explorer に、サービスの WCF サービス ヘルプ ページが表示されます。 + + ![WCF ヘルプ ページ](../../../../docs/framework/wcf/feature-details/media/wcfhelppate.JPG "WCFHelpPate") + +4. 「[方法: ワークフロー アプリケーションからサービスにアクセスする](../../../../docs/framework/wcf/feature-details/how-to-access-a-service-from-a-workflow-application.md)」トピックに進み、このサービスを呼び出すワークフロー クライアントを作成します。 + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [ワークフロー サービスのホストの概要](../../../../docs/framework/wcf/feature-details/hosting-workflow-services-overview.md) + [メッセージング アクティビティ](../../../../docs/framework/wcf/feature-details/messaging-activities.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md b/docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md new file mode 100644 index 00000000000..07833ccc985 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md @@ -0,0 +1,114 @@ +--- +title: "方法 : WSFederationHttpBinding を作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フェデレーション" + - "WCF, フェデレーション" +ms.assetid: e54897d7-aa6c-46ec-a278-b2430c8c2e10 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# 方法 : WSFederationHttpBinding を作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、 クラス \(構成の [\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)\) が、フェデレーション サービスを公開するための機構を提供します。 これはクライアントに対して認証を要求するサービスであって、認証にはセキュリティ トークン サービスが発行するセキュリティ トークンが必要となります。 このトピックでは、必要な処理をコード中に埋め込む形、あるいは構成ファイルに必要な記述を加える形で、 の設定をする手順を説明します。 バインディングを作成すると、エンドポイントを設定してこのバインディングを使用できるようになります。 + + 基本的な手順の概略を以下に示します。 + +1. セキュリティ モードを選択します。 には、メッセージ レベルでエンドツーエンドのセキュリティを提供する `Message` を指定できます。複数のホップや `TransportWithMessageCredential` にまたがる通信であってもこれは有効です。クライアントとサービスが HTTPS 上で直接接続できる場合に、特に性能を発揮します。 + + > [!NOTE] + > には、セキュリティ モードとして `None` を指定することもできます。 このモードは安全性が低く、デバッグ目的での使用のみを目的としています。 セキュリティ モードが `None` の を使用してサービス エンドポイントを配置した場合、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) によって生成される のセキュリティ モードも `None` になります。 + + `WSFederationHttpBinding` の場合、システムに組み込まれている他のバインディングとは違って、クライアント資格情報の種類を選択する必要はありません。 これは、常に、発行されたトークンを資格情報として使うからです。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は指定された発行者からトークンを取得し、これをサービスに提示することによりクライアント認証を行います。 + +2. フェデレーション クライアントの場合、 プロパティの値として、セキュリティ トークン サービスの URL を指定します。 としてバインディングを指定し、セキュリティ トークン サービスとの通信に使用します。 + +3. 省略可能です。 プロパティの値として、トークンの種類の URI \(Uniform Resource Identifier\) を指定します。 フェデレーション サービスについては、提示されれば受理できるトークンの種類を指定します。 フェデレーション クライアントについては、セキュリティ トークン サービスに要求するトークンの種類を指定します。 + + トークンの種類を指定しなければ、クライアント側ではその URI なしで WS\-Trust のセキュリティ トークン要求 \(RTS\) を生成します。また、サービス側では、クライアントが既定で SAML \(Security Assertions Markup Language\) 1.1 のトークンを提示して認証するものと想定します。 + + SAML 1.1 トークンの URI は "http:\/\/docs.oasis\-open.org\/wss\/oasis\-wss\-saml\-token\-profile\-1.1\#SAMLV1.1" です。 + +4. 省略可能です。 フェデレーション サービスの場合、 プロパティの値として、セキュリティ トークン サービスのメタデータ URL を指定します。 メタデータ エンドポイントは、サービスがメタデータを公開するよう設定されている場合に、クライアントが適切なバインディング\/エンドポイントのペアを選択するために必要です。 メタデータの公開[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メタデータの公開](../../../../docs/framework/wcf/feature-details/publishing-metadata.md)」を参照してください。 + + 他に設定できるプロパティとしては、発行されたトークンの証明キーとして使用するキーの種類、クライアント\/サーバー間で使用するアルゴリズム スイート、サービス資格情報をネゴシエートするか明示的に指定するか、トークンに入っていればそれに応じてサービス側で処理できるクレームの種類、クライアントがセキュリティ トークン サービスに送信する要求に追加しなければならない他の XML 要素などがあります。 + +> [!NOTE] +> `NegotiateServiceCredential` プロパティが意味をなすのは、`SecurityMode` の設定値が `Message` である場合に限ります。 `SecurityMode` の設定値が `TransportWithMessageCredential` であれば、`NegotiateServiceCredential` プロパティは無視されます。 + +### 必要な処理をコード中に埋め込む形で WSFederationHttpBinding を設定するには + +1. のインスタンスを作成します。 + +2. 必要に応じて、 プロパティを または に設定します。 以外のアルゴリズム スイートが必要であれば、 プロパティに、列挙体 のいずれかの値を設定します。 + +3. プロパティに適切な値を設定します。 + +4. 必要に応じて、 プロパティに の `SymmetricKey` または `AsymmetricKey` を設定します。 + +5. プロパティに適切な値を設定します。 値を設定しない場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって既定値 "http:\/\/docs.oasis\-open.org\/wss\/oasis\-wss\-saml\-token\-profile\-1.1\#SAMLV1.1" に設定されます。これは SAML 1.1 トークンを表します。 + +6. クライアント側ではローカル発行者が指定されていなければ必須。サービス側では省略可能。 セキュリティ トークン サービスのアドレスと ID 情報が設定された を作成し、この インスタンスを プロパティに代入します。 + +7. クライアント側ではローカル発行者が指定されていなければ必須。サービス側では不要。 `SecurityTokenService` の を作成し、この インスタンスを プロパティに代入します。 + +8. クライアント側では不要。サービス側では省略可能。 セキュリティ トークン サービスのメタデータ用の インスタンスを作成し、`IssuerMetadataAddress` プロパティに代入します。 + +9. クライアント側、サービス側とも省略可能。 必要な数の インスタンスを生成し、 プロパティで返されたコレクションに追加します。 + +10. クライアント側、サービス側とも省略可能。 必要な数の インスタンスを生成し、 プロパティで返されたコレクションに追加します。 + +### 構成ファイルに必要な記述を加える形でフェデレーション エンドポイントを作成するには + +1. [\](../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) 要素の子要素として [\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md) 要素をアプリケーション構成ファイルに作成します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md) 要素の子要素として [\](../../../../docs/framework/misc/binding.md) 要素を 作成し、`name` 属性に適切な値を設定します。 + +3. [\](../../../../docs/framework/misc/binding.md) 要素の子要素として `` 要素を作成します。 + +4. 必要に応じて、`` 要素の `mode` 属性値に `Message` または `TransportWithMessageCredential` を設定します。 + +5. `` 要素の子要素として `` 要素を作成します。 + +6. 省略可能です。 `` 要素の `algorithmSuite` 属性に適切な値を設定します。 既定値は、`Basic256` です。 + +7. 省略可能です。 非対称証明キーが必要ならば、`` 要素の `issuedKeyType` 属性を `AsymmetricKey` に設定します。 既定値は、`SymmetricKey` です。 + +8. 省略可能です。 `` 要素の `issuedTokenType` 属性を設定します。 + +9. クライアント側ではローカル発行者が指定されていなければ必須。サービス側では省略可能。 `` 要素の子要素として `` 要素を作成します。 + +10. `` 要素に `address` 属性を設定し、セキュリティ トークン サービスがトークン要求を受け付けるアドレスを指定します。 + +11. 省略可能です。 `` 子要素を追加し、セキュリティ トークン サービスの識別子を指定します。 + +12. [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md). + +13. クライアント側ではローカル発行者が指定されていなければ必須。サービス側では不要。 バインディング セクション内に、セキュリティ トークン サービスとの通信に使用可能な [\](../../../../docs/framework/misc/binding.md) 要素を作成します。 バインディングの作成方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 構成でサービス バインディングを指定する](../../../../docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md)」を参照してください。 + +14. `` 要素の `binding` 属性および `bindingConfiguration` 属性に設定して、前の手順で作成したバインディングを指定します。 + +15. クライアント側では不要。サービス側では省略可能。 \<`message`\> 要素の子要素として `` 要素を作成します。 次に、`` 要素の `address` 属性に、セキュリティ トークン サービスがメタデータを公開するアドレスを指定します。 オプションで、`` 子要素を追加し、セキュリティ トークン サービスの識別子を指定します。 + +16. クライアント側、サービス側とも省略可能。 `` 要素の子要素として `` 要素を追加します。 サービスが依存する必須または省略可能なクレームを指定します。それには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/add-of-claimtyperequirements.md) 要素を `` 要素に追加し、`claimType` 属性でクレームの種類を指定します。 さらに、`isOptional` 属性に、クレームが必須か省略可能かを設定します。 + +## 使用例 + 強制的に `WSFederationHttpBinding` を設定するコード例を以下に示します。 + + [!code-csharp[c_FederationBinding#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_federationbinding/cs/source.cs#2)] + [!code-vb[c_FederationBinding#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_federationbinding/vb/source.vb#2)] + +## 参照 + [フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md) + [フェデレーション サンプル](../../../../docs/framework/wcf/samples/federation-sample.md) + [方法 : WSFederationHttpBinding のセキュリティで保護されたセッションを無効にする](../../../../docs/framework/wcf/feature-details/how-to-disable-secure-sessions-on-a-wsfederationhttpbinding.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development.md b/docs/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development.md new file mode 100644 index 00000000000..fb525e4de3b --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development.md @@ -0,0 +1,126 @@ +--- +title: "方法 : 開発中に使用する一時的な証明書を作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "証明書 [WCF], 一時的な証明書の作成" + - "一時的な証明書 [WCF]" +ms.assetid: bc5f6637-5513-4d27-99bb-51aad7741e4a +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : 開発中に使用する一時的な証明書を作成する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使ってセキュリティ保護されたサービスやクライアントを開発する場合、資格情報として使えるように X.509 証明書を提供する必要が生じることも少なくありません。 証明書は通常、単独ではなく、いくつもの証明書が信頼チェーンとしてつながった形で存在しており、その最上位に位置するルート証明機関の証明書は、各コンピューターの \[信頼されたルート証明機関\] の証明書ストアに格納されています。 証明書を調べて順に信頼チェーンをたどっていくと、たとえば所属する会社や事業部門が運営する、ルート証明機関に到達します。 開発時にこの過程をエミュレートするためには、セキュリティ要件を満たす 2 種類の証明書を作る必要があります。 1 つは自己署名証明書で、\[信頼されたルート証明機関\] の証明書ストアに配置します。もう 1 つは、先の自己署名証明書を使って署名を施した証明書で、\[ローカル コンピューター\] の \[個人\] ストア、または \[現在のユーザー\] の \[個人\] ストアに配置します。 ここでは、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] SDK に付属する[証明書作成ツール \(MakeCert.exe\)](http://go.microsoft.com/fwlink/?LinkId=248185) を使用して、これら 2 つの証明書を作成する手順を示します。 + +> [!IMPORTANT] +> 証明書作成ツールによって作成された証明書は、テスト目的にのみ使用できます。 実際にサービスやクライアントを業務に使用する際には、証明機関から取得した、適切な証明書が必要です。 所属する会社が運営している [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] 証明書サーバー、または専門の第三者機関から取得してください。 +> +> 既定では、[Makecert.exe \(証明書作成ツール\)](../Topic/Makecert.exe%20\(Certificate%20Creation%20Tool\).md) は **"Root Agency"** というルート証明機関の証明書を作成します。"Root Agency" は、\[信頼されたルート証明機関\] の証明書ストアに含まれていないため、作成された証明書はセキュリティで保護されません。 そこで自己署名証明書を作り、\[信頼されたルート証明機関\] の証明書ストアに置くことにより、実際の運用環境をより忠実にシミュレートする開発環境を構築できます。 + + 証明書の作成方法および使用方法の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。 証明書を資格情報として使用する方法の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md)」を参照してください。 Microsoft Authenticode テクノロジの使用方法については、「[Authenticode Overviews and Tutorials \(Authenticode の概要とチュートリアル\)](http://go.microsoft.com/fwlink/?LinkId=88919)」を参照してください。 + +### 自己署名ルート証明書を作成して秘密キーをエクスポートするには + +1. 次のスイッチを指定して MakeCert.exe ツールを使用します。 + + 1. `-n` `subjectName`。 サブジェクト名を指定します。 命名規則では、サブジェクト名の前に、"Common Name" を示す "CN \= " を付加します。 + + 2. `-r`。 証明書が自己署名されるように指定します。 + + 3. `-sv` `privateKeyFile`。 秘密キーを書き出すファイルを指定します。 + + たとえば次のコマンドを実行すると、サブジェクト名を "CN\=TempCA" とした自己署名証明書が作成されます。 + + ``` + makecert -n "CN=TempCA" -r -sv TempCA.pvk TempCA.cer + ``` + + 秘密キーを保護するためのパスワードを入力するように求められます。 このパスワードは、このルート証明書によって署名された証明書を作成する際に必要になります。 + +### ルート証明書によって署名された新しい証明書を作成するには + +1. 次のスイッチを指定して MakeCert.exe ツールを使用します。 + + 1. `-sk` `subjectKey`。 秘密キーを格納する、サブジェクトのキー コンテナーの位置を指定します。 キー コンテナーが存在しない場合は、作成されます。 \-sk も \-sv も指定しなかった場合、既定で JoeSoft という名前のキー コンテナーが作成されます。 + + 2. `-n` `subjectName`。 サブジェクト名を指定します。 命名規則では、サブジェクト名の前に、"Common Name" を示す "CN \= " を付加します。 + + 3. `-iv` `issuerKeyFile`。 発行元の秘密キー ファイルを指定します。 + + 4. `-ic` `issuerCertFile`。 発行元の証明書の位置を指定します。 + + たとえば、次のコマンドを実行すると、サブジェクト名が `TempCA` で、発行元の秘密キーを使用する証明書が作成されます。ルート証明機関 `"CN=SignedByCA"` の証明書を使って署名されます。 + + ``` + makecert -sk SignedByCA -iv TempCA.pvk -n "CN=SignedByCA" -ic TempCA.cer SignedByCA.cer -sr currentuser -ss My + ``` + +## 信頼されたルート証明機関の証明書ストアに証明書をインストールする + 作成された自己署名証明書は、\[信頼されたルート証明機関\] の証明書ストアにインストールできます。 この証明書で署名された証明書は、この時点で信頼できるものと見なされるようになります。 したがって、この証明書が不要になった場合は、直ちに証明書ストアから削除してください。 この証明書を削除すると、それを使って署名した証明書は認証されなくなります。 ルート証明機関の証明書は、必要に応じて一連の証明書を有効化する手段の 1 つにすぎません。 たとえばピアツーピア アプリケーションの場合、証明書が提示されれば相手の識別情報を信頼できるので、ルート証明機関は必要ないのが普通です。 + +#### 自己署名証明書を信頼されたルート証明機関としてインストールするには + +1. 証明書スナップインを開きます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : MMC スナップインを使用して証明書を参照する](../../../../docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md)。 + +2. 証明書の格納先となる、**\[ローカル コンピューター\]** または **\[現在のユーザー\]** のフォルダーを開きます。 + +3. **\[信頼されたルート証明機関\]** フォルダーを開きます。 + +4. **\[証明書\]** フォルダーを右クリックして、**\[すべてのタスク\]** メニューの **\[インポート\]** を実行します。 + +5. ウィザード画面が開くので、その指示に従って TempCa.cer を証明書ストアにインポートしてください。 + +## WCF で証明書を使用する + 一時的な証明書を設定したら、それを使用して、クライアント資格情報の種類として証明書を指定する WCF ソリューションを開発できます。 たとえば、次の XML 構成では、メッセージ セキュリティを設定して、クライアント資格情報の種類として証明書を指定しています。 + +#### クライアント資格情報の種類として証明書を指定するには + +- サービスの構成ファイルで、次の XML を使用して、セキュリティ モードをメッセージに、クライアント資格情報の種類を証明書に設定します。 + + ```xml + + + + + + + + + + + ``` + + クライアントの構成ファイルで、次の XML を使用して、その証明書がユーザーのストアにあり、SubjectName フィールドで "CohoWinery" という値を検索すると見つかることを指定します。 + +```xml + + + + + + + + + + +``` + + WCF での証明書の使用に関する詳細については、「[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。 + +## .NET Framework セキュリティ + 一時的なルート証明書は、不要になったら **\[信頼されたルート証明機関\]** フォルダーや **\[個人\]** フォルダーから確実に削除してください。削除するには、証明書を右クリックし、**\[削除\]** をクリックします。 + +## 参照 + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [方法 : MMC スナップインを使用して証明書を参照する](../../../../docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md) + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-deploy-a-com-integration-application.md b/docs/framework/wcf/feature-details/how-to-deploy-a-com-integration-application.md new file mode 100644 index 00000000000..fc0114fa91d --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-deploy-a-com-integration-application.md @@ -0,0 +1,51 @@ +--- +title: "方法 : COM+ 統合アプリケーションを展開する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2e5a0510-db3c-4988-a09c-696285836650 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 方法 : COM+ 統合アプリケーションを展開する +COM\+ 統合アプリケーションを作成した後、これを別のコンピューターに展開する必要が生じる場合があります。ここでは、COM\+ 統合アプリケーションをコンピューター間で移動する方法を説明します。 + +### COM\+ ホスト統合アプリケーションの移動 + +1. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が両方のコンピューターにインストールされていることを確認します。 + +2. コンピューター A からアプリケーションをエクスポートします。 + +3. コンピューター B にアプリケーションをインポートします。 + +4. アプリケーション ルート ディレクトリを設定します。通常これは %PROGRAMFILES%\/ComPlus Applications\/{AppGUID} になります。 + +5. コンピューター A のアプリケーション ルート ディレクトリにある Application.config ファイルおよび Application.manifest ファイルを、コンピューター B のアプリケーション ルート ディレクトリにコピーします。 + +6. コンピューター B の Application.config ファイルのサービス エンドポイント アドレスを編集して、コンピューター B が識別されるようにします。たとえば、http:\/\/machineA\/MyService から http:\/\/machineB\/MyService に変更します。 + +### Web ホスト統合アプリケーションの移動 + +1. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が両方のコンピューターにインストールされていることを確認します。 + +2. コンピューター A からアプリケーションをエクスポートします。 + +3. コンピューター B にアプリケーションをインポートします。 + +4. コンピューター B で IIS vroot を作成します。 + +5. コンピューター A の vroot にある .svc ファイル \(componentName.svc\) と Web.config ファイルを、コンピューター B で新しく作成した vroot にコピーします。 + +## 参照 + [COM\+ アプリケーションとの統合の概要](../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications-overview.md) + [方法 : COM\+ サービス設定を構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md) + [方法 : COM\+ サービス モデル構成ツールを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-com-service-model-configuration-tool.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-determine-the-discovery-version-of-a-probe-request.md b/docs/framework/wcf/feature-details/how-to-determine-the-discovery-version-of-a-probe-request.md new file mode 100644 index 00000000000..3267a20f479 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-determine-the-discovery-version-of-a-probe-request.md @@ -0,0 +1,36 @@ +--- +title: "方法: Probe 要求の探索バージョンを特定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b3c4e2e2-2957-4074-ae6a-776a5ca84278 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 方法: Probe 要求の探索バージョンを特定する +探索プロキシでは、異なる探索バージョンを使用する複数の探索エンドポイントを公開する場合があります。 プロキシでは、UDP マルチキャスト Probe 要求を受け取った場合、マルチキャスト抑制メッセージで応答する必要があります。 これを行うには、要求の探索バージョンを特定する必要があります。 + +### Probe 要求の探索バージョンを特定するには + +1. 次のコードに示すように、Probe 要求に応答するメソッド \( など\) で静的 プロパティを使用して を検索します。 + + ``` + DiscoveryOperationContextExtension doce = OperationContext.Current.Extensions.Find(); + // Access the discovery version from the DiscoveryOperationContextExtension + doce.DiscoveryVersion; + + ``` + +## 参照 + + [探索プロキシの実装](../../../../docs/framework/wcf/feature-details/implementing-a-discovery-proxy.md) + [探索プロキシのサンプル](../../../../docs/framework/wcf/samples/discovery-proxy-sample.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-disable-encryption-of-digital-signatures.md b/docs/framework/wcf/feature-details/how-to-disable-encryption-of-digital-signatures.md new file mode 100644 index 00000000000..54bb2b88ffb --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-disable-encryption-of-digital-signatures.md @@ -0,0 +1,36 @@ +--- +title: "方法 : デジタル署名の暗号化を無効にする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fd174313-ad81-4dca-898a-016ccaff8187 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 方法 : デジタル署名の暗号化を無効にする +既定では、メッセージは署名され、署名はデジタル暗号化されます。 これは、 または のインスタンスを使用してカスタム バインディングを作成し、いずれかのクラスの `MessageProtectionOrder` プロパティを 列挙値に設定することによって制御されます。 既定値は、 です。 このプロセスは、単に署名して暗号化する場合よりも、メッセージ全体のサイズによって最大で 30 パーセントほど長い時間がかかります \(メッセージが小さいほどパフォーマンスへの影響は大きくなります\)。 ただし、署名の暗号化を無効にすると、攻撃者がメッセージの内容を予想できるようになる危険性があります。 その理由は、メッセージ内のすべての署名部分のプレーン テキストのハッシュ コードが署名要素に含まれるからです。 たとえば、メッセージ本体は既定で暗号化されますが、暗号化されていない署名には、暗号化される前のメッセージ本体のハッシュ コードが含まれます。 署名および暗号化された部分に指定できる一連の値が小さい場合、攻撃者にハッシュ値を参照され、内容を推測されてしまうおそれがあります。 署名を暗号化すると、このような攻撃は軽減します。 + + そのため、署名の暗号化を無効にするのは、コンテンツの重要性が低いか、または指定できる一連のコンテンツの値が大きくて非決定性があり、前述の攻撃を軽減するよりもパフォーマンスの向上が重要な場合に限定してください。 + +> [!NOTE] +> メッセージ内に暗号化する対象が存在しない場合は、 プロパティまたは プロパティが に設定されていても、署名要素は暗号化されません。 この動作は、システム指定のバインディングでも発生します。すべてのシステム指定のバインディングには、メッセージを保護する順序が `SignBeforeEncryptAndEncryptSignature` に設定されています。 ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が生成する Web サービス記述言語 \(WSDL\) には、依然として `` アサーションが含まれます。 + +### デジタル署名を無効にするには + +1. を作成します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md). + +2. または をバインディング コレクションに追加します。 + +3. プロパティを に設定するか、または プロパティを に設定します。 + +## 参照 + [カスタム バインディングを使用したセキュリティ機能](../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-disable-secure-sessions-on-a-wsfederationhttpbinding.md b/docs/framework/wcf/feature-details/how-to-disable-secure-sessions-on-a-wsfederationhttpbinding.md new file mode 100644 index 00000000000..cf836be9dd9 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-disable-secure-sessions-on-a-wsfederationhttpbinding.md @@ -0,0 +1,50 @@ +--- +title: "方法 : WSFederationHttpBinding のセキュリティで保護されたセッションを無効にする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フェデレーション" + - "WCF, フェデレーション" +ms.assetid: 675fa143-6a4e-4be3-8afc-673334ab55ec +caps.latest.revision: 16 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 16 +--- +# 方法 : WSFederationHttpBinding のセキュリティで保護されたセッションを無効にする +フェデレーション資格情報を必要とするサービスの中には、セキュリティで保護されたセッションをサポートしないものがあります。その場合は、セキュリティで保護されたセッション機能を無効にする必要があります。 とは異なり、 クラスでは、サービスとの通信中に、セキュリティで保護されたセッションを無効にできません。代わりに、セキュリティで保護されたセッションの設定をブートストラップで置き換えるカスタム バインディングを作成する必要があります。 + + ここでは、 に含まれるバインド要素を変更してカスタム バインディングを作成する方法を示します。結果は、セキュリティで保護されたセッションを使用しないことを除き、 と同じです。 + +### セキュリティで保護されたセッションを使用しないカスタム フェデレーション バインディングを作成するには + +1. コードで強制的に、または構成ファイルから読み込む方法によって、 クラスのインスタンスを作成します。 + +2. の複製を 内に作成します。 + +3. 内で を見つけます。 + +4. 内で を見つけます。 + +5. 元の のブートストラップ セキュリティ バインド要素で置き換えます。 + +## 使用例 + 次の例では、セキュリティで保護されたセッションを使用しないカスタム フェデレーション バインディングを作成します。 + + [!code-csharp[c_CustomFederationBinding#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customfederationbinding/cs/c_customfederationbinding.cs#0)] + [!code-vb[c_CustomFederationBinding#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customfederationbinding/vb/c_customfederationbinding.vb#0)] + +## コードのコンパイル + +- このコード例をコンパイルするには、System.ServiceModel.dll アセンブリを参照するプロジェクトを作成します。 + +## 参照 + [バインディングとセキュリティ](../../../../docs/framework/wcf/feature-details/bindings-and-security.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-dynamic-update.md b/docs/framework/wcf/feature-details/how-to-dynamic-update.md new file mode 100644 index 00000000000..90f7f15c183 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-dynamic-update.md @@ -0,0 +1,312 @@ +--- +title: "動的な更新を行う方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9b8f6e0d-edab-4a7e-86e3-8c66bebc64bb +caps.latest.revision: 4 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 4 +--- +# 動的な更新を行う方法 +ここでは、ルーティング構成の作成および動的な更新に必要な基本的手順について説明します。この例では、ルーティングの初期構成を構成ファイルから取得し、すべてのメッセージを regularCalc 電卓サービスにルーティングします。ただし、これは、roundingCalc のサービスの提供先となるエンドポイントを変更するために、後でプログラムによって更新されます。 + +> [!NOTE] +> 多くの実装では、構成が完全に動的で、既定の構成に依存しません。ただし、このトピックのシナリオのように、サービスの開始時は既定の構成の状態を使用することが望ましい場合もあります。 + +> [!NOTE] +> 動的な更新はメモリ内のみで実行され、構成ファイルが変更されることはありません。 + + regularCalc でも roundingCalc でも、同じ加算、減算、乗算、および除算の操作がサポートされますが、roundingCalc では、すべての計算結果が、四捨五入によって最も近い整数値に変換されてから返されます。regularCalc サービスにすべてのメッセージをルーティングするようにサービスを構成するには、構成ファイルが使用されます。ルーティング サービスが開始されると、 を使用して、メッセージを roundingCalc サービスにルーティングするようにルーティング サービスが構成されます。 + +### 初期構成の実装 + +1. サービスによって公開されるサービス エンドポイントを指定することによって、ルーティング サービスの基本的な構成を作成します。次の例では、メッセージの受信に使用される、単一のサービス エンドポイントを定義します。また、regularCalc へのメッセージ送信に使用するクライアント エンドポイントも定義します。 + + ```xml + + + + + + + + + + + + + + + + ``` + +2. 送信先エンドポイントへのメッセージのルーティングに使用するフィルターを定義します。この例では、MatchAll フィルターを使用して、前に定義した regularCalcEndpoint にすべてのメッセージをルーティングしています。次の例では、フィルターおよびフィルター テーブルを定義します。 + + ```xml + + + + + + + + + + + + ``` + +3. 受信メッセージをフィルター テーブルに含まれているフィルターと照合して評価するには、ルーティング動作を使用して、フィルター テーブルをサービス エンドポイントと関連付ける必要があります。次の例は、filterTable1 をサービス エンドポイントと関連付ける方法を示しています。 + + ```xml + + + + + + + + + ``` + +## 動的構成の実装 + ルーティング サービスの動的構成は、コードでのみ実行できます。これを実行するには、新しい を作成し、 を使用して現在の構成を置き換えます。この例では、ルーティング サービスがコンソール アプリケーション内に自己ホストされます。アプリケーションが起動したら、ルーティングの構成を変更できます。メッセージのルーティング先のエンドポイントを構成するには、コンソール ウィンドウで「regular」または「rounding」と入力します。「regular」と入力した場合は regularCalc が、「rounding」と入力した場合は roundingCalc になります。 + +1. ルーティング サービスをサポートするには、次の using ステートメントを追加する必要があります。 + + ```csharp + using System; + using System.Collections.Generic; + using System.ServiceModel; + using System.ServiceModel.Channels; + using System.ServiceModel.Description; + using System.ServiceModel.Dispatcher; + using System.ServiceModel.Routing; + + ``` + +2. ルーティング サービスをコンソール アプリケーションとして自己ホストするには、次のコードを使用します。これは、前の手順で説明した構成を使用してルーティング サービスを初期化します。この構成は、アプリケーション構成ファイルに保持されています。while ループには、ルーティング構成の変更に使用されるコードが設定されています。 + + ```csharp + // Host the service within this EXE console application. + public static void Main() + { + // Create a ServiceHost for the CalculatorService type. + using (ServiceHost serviceHost = + new ServiceHost(typeof(RoutingService))) + { + // Open the ServiceHost to create listeners + // and start listening for messages. + Console.WriteLine("The Routing Service configured, opening...."); + serviceHost.Open(); + Console.WriteLine("The Routing Service is now running."); + Console.WriteLine("Type 'quit' to terminate router."); + Console.WriteLine(" to change routing configuration."); + while (Console.ReadLine() != "quit") + { + .... + } + } + } + + ``` + +3. ルーティング構成を動的に更新するには、新しいルーティング構成を作成する必要があります。作成する構成には、新しいルーティング構成に必要なすべてのエンドポイント、フィルター、およびフィルター テーブルの情報が含まれている必要があります。これは、既存のルーティング構成全体が、この構成に置き換えられるためです。新しいルーティング構成を使用するには、 を呼び出して新しい構成を渡す必要があります。 + + 前の手順で定義した while ループに次のコードを追加して、ユーザー入力を基にサービスを再構成できるようにします。 + + ```csharp + Console.WriteLine("Enter 'regular' or 'rounding' to set the destination endpoint:"); + string destEndpoint = Console.ReadLine(); + // Create a new RoutingConfiguration + RoutingConfiguration rc = new RoutingConfiguration(); + // Determine the endpoint to configure for + switch (destEndpoint) + { + case "regular": + // Define the destination endpoint + ServiceEndpoint regularCalc = new ServiceEndpoint( + ContractDescription.GetContract(typeof(IRequestReplyRouter)), + new NetTcpBinding(), + new EndpointAddress("net.tcp://localhost:9090/servicemodelsamples/service/")); + // Create a MatchAll filter and add to the filter table + rc.FilterTable.Add(new MatchAllMessageFilter(), new List { regularCalc }); + // Use ApplyConfiguration to update the Routing Service + serviceHost.Extensions.Find().ApplyConfiguration(rc); + Console.WriteLine("Applied new routing configuration."); + break; + case "rounding": + // Define the destination endpoint + ServiceEndpoint roundingCalc = new ServiceEndpoint( + ContractDescription.GetContract(typeof(IRequestReplyRouter)), + new NetTcpBinding(), + new EndpointAddress("net.tcp://localhost:8080/servicemodelsamples/service/")); + // Create a MatchAll filter and add to the filter table + rc.FilterTable.Add(new MatchAllMessageFilter(), new List { roundingCalc }); + // Use ApplyConfiguration to update the Routing Service + serviceHost.Extensions.Find().ApplyConfiguration(rc); + Console.WriteLine("Applied new routing configuration."); + break; + default: + Console.WriteLine("Incorrect value entered, no change."); + break; + } + ``` + + > [!NOTE] + > 新しい RoutingConfiguration を提供するメソッドは RoutingExtension service サービス拡張に含まれているため、新しい RoutingConfiguration オブジェクトは、ServiceHost または ServiceExtension \(別の ServiceExtension など\) への参照を含む WCF 拡張モデル、またはこの参照を取得できる WCF 拡張モデル内の任意の場所で提供できます。この方法で RoutingConfiguration を動的に更新する例については、「[動的再構成](../../../../docs/framework/wcf/samples/dynamic-reconfiguration.md)」を参照してください。 + +## 使用例 + この例で使用されているコンソール アプリケーション全体の一覧を次に示します。 + +``` +//----------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All Rights Reserved. +//----------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.ServiceModel; +using System.ServiceModel.Channels; +using System.ServiceModel.Description; +using System.ServiceModel.Dispatcher; +using System.ServiceModel.Routing; + +namespace Microsoft.Samples.AdvancedFilters +{ + public class Router + { + // Host the service within this EXE console application. + public static void Main() + { + // Create a ServiceHost for the CalculatorService type. + using (ServiceHost serviceHost = + new ServiceHost(typeof(RoutingService))) + { + // Open the ServiceHost to create listeners + // and start listening for messages. + Console.WriteLine("The Routing Service configured, opening...."); + serviceHost.Open(); + Console.WriteLine("The Routing Service is now running."); + Console.WriteLine("Type 'quit' to terminate router."); + Console.WriteLine(" to change routing configuration."); + while (Console.ReadLine() != "quit") + { + Console.WriteLine("Enter 'regular' or 'rounding' to set the destination endpoint:"); + string destEndpoint = Console.ReadLine(); + // Create a new RoutingConfiguration + RoutingConfiguration rc = new RoutingConfiguration(); + // Determine the endpoint to configure for + switch (destEndpoint) + { + case "regular": + // Define the destination endpoint + ServiceEndpoint regularCalc = new ServiceEndpoint( + ContractDescription.GetContract(typeof(IRequestReplyRouter)), + new NetTcpBinding(), + new EndpointAddress("net.tcp://localhost:9090/servicemodelsamples/service/")); + // Create a MatchAll filter and add to the filter table + rc.FilterTable.Add(new MatchAllMessageFilter(), new List { regularCalc }); + // Use ApplyConfiguration to update the Routing Service + serviceHost.Extensions.Find().ApplyConfiguration(rc); + Console.WriteLine("Applied new routing configuration."); + break; + case "rounding": + // Define the destination endpoint + ServiceEndpoint roundingCalc = new ServiceEndpoint( + ContractDescription.GetContract(typeof(IRequestReplyRouter)), + new NetTcpBinding(), + new EndpointAddress("net.tcp://localhost:8080/servicemodelsamples/service/")); + // Create a MatchAll filter and add to the filter table + rc.FilterTable.Add(new MatchAllMessageFilter(), new List { roundingCalc }); + // Use ApplyConfiguration to update the Routing Service + serviceHost.Extensions.Find().ApplyConfiguration(rc); + Console.WriteLine("Applied new routing configuration."); + break; + default: + Console.WriteLine("Incorrect value entered, no change."); + break; + } + } + } + } + } +} + +``` + +## 使用例 + この例で使用されている構成ファイルの全体の一覧を次に示します。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [ルーティング サービス](../../../../docs/framework/wcf/samples/routing-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-enable-message-replay-detection.md b/docs/framework/wcf/feature-details/how-to-enable-message-replay-detection.md new file mode 100644 index 00000000000..824b49338fe --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-enable-message-replay-detection.md @@ -0,0 +1,114 @@ +--- +title: "方法 : メッセージ リプレイ検出を有効にする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "リプレイ検出 [WCF]" + - "WCF セキュリティ" + - "WCF, カスタム バインディング" + - "WCF, セキュリティ" +ms.assetid: 8b847e91-69a3-49e1-9e5f-0c455e50d804 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 方法 : メッセージ リプレイ検出を有効にする +リプレイ攻撃は、攻撃者がメッセージのストリームを 2 つのパーティ間でコピーし、そのストリームを他の 1 つ以上のパーティにリプレイすることで発生します。攻撃が止むまで、攻撃対象になったコンピューターはストリームを正当なメッセージとして処理しようとし、その結果、命令が重複するなど、望ましくない状況に陥ります。 + + メッセージ リプレイ検出[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メッセージ リプレイ検出](http://go.microsoft.com/fwlink/?LinkId=88536)」を参照してください。 + + 以下の手順では、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でリプレイ検出を制御するために使用できるさまざまなプロパティを示します。 + +### コードを使用してクライアントでのリプレイ検出を制御するには + +1. で使用する を作成します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md).次の例では、 クラスの を使用して作成された を使用します。 + +2. プロパティを使用して クラスへの参照を返し、次のプロパティを適切な値に設定します。 + + 1. `DetectReplay`.ブール値。サーバーからのリプレイをクライアントが検出するかどうかを制御します。既定値は `true` です。 + + 2. `MaxClockSkew`. 値。リプレイ機構に許容されるクライアントとサーバー間の時刻のずれを制御します。セキュリティ機構は送信されたメッセージのタイム スタンプを調べ、メッセージが古すぎるかどうかを決定します。既定値は 5 分です。 + + 3. `ReplayWindow`.`TimeSpan` 値。メッセージがサーバーによって送信されてから \(中継局を通過して\) クライアントに到達するまで、ネットワーク内に存在できる期間を制御します。クライアントは、リプレイ検出のため、最新の `ReplayWindow` 内で送信されたメッセージの署名を追跡します。 + + 4. `ReplayCacheSize`.整数値。クライアントは、メッセージの署名をキャッシュに格納します。この設定は、キャッシュに格納できる署名の数を指定します。最新のリプレイ ウィンドウ内の送信されたメッセージの数がキャッシュ制限に達すると、キャッシュされた最も古い署名が制限時間に達するまで、新しいメッセージは拒否されます。既定値は 500000 です。 + +### コードを使用してサービスでのリプレイ検出を制御するには + +1. で使用する を作成します。 + +2. プロパティを使用して クラスへの参照を返し、前述のように各プロパティを設定します。 + +### クライアントまたはサービスの構成でリプレイ検出を制御するには + +1. [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)を作成します。 + +2. `` 要素を作成します。 + +3. [\](../../../../docs/framework/configure-apps/file-schema/wcf/localclientsettings-element.md)または [\](../../../../docs/framework/configure-apps/file-schema/wcf/localservicesettings-element.md)を作成します。 + +4. `detectReplays`、`maxClockSkew`、`replayWindow`、および `replayCacheSize` の各属性値を適切に設定します。``` 要素と` 要素の両方の属性を設定する例を次に示します。 + + ``` + + + + + + + + + + + + ``` + +## 使用例 + 次の例は、 メソッドを使用して を作成し、作成されたバインディングのリプレイ プロパティを設定します。 + + [!code-csharp[c_ReplayDetection#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_replaydetection/cs/source.cs#1)] + [!code-vb[c_ReplayDetection#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_replaydetection/vb/source.vb#1)] + +## リプレイのスコープ : メッセージ セキュリティのみ + 次の手順は、メッセージ セキュリティ モードにのみ適用されます。トランスポート モードとメッセージ資格情報付きトランスポート モードでは、トランスポート機構がリプレイを検出します。 + +## セキュリティで保護されたメッセージ交換に関するメモ + セキュリティで保護されたメッセージ交換を有効にするバインディングでは、アプリケーション チャネルとセキュリティで保護されたメッセージ交換のブートストラップ バインディングの両方で、上記の設定を調整できます。たとえば、アプリケーション チャネルに対するリプレイを無効にして、セキュリティで保護されたメッセージ交換を確立するブートストラップ チャネルに対するリプレイを有効にできます。 + + セキュリティで保護されたメッセージ交換セッションを使用しない場合、サーバー ファームのシナリオでのリプレイや、プロセスをリサイクルしたときのリプレイについては、リプレイ検出による検出が保証されません。これは、次のシステム指定のバインディングに当てはまります。 + +- . + +- プロパティが `false` に設定された 。 + +## コードのコンパイル + +- コードのコンパイルには次の名前空間が必要です。 + +- + +- + +- + +## 参照 + + + [セキュリティ保護されたメッセージ交換とセッション](../../../../docs/framework/wcf/feature-details/secure-conversations-and-secure-sessions.md) + [\](../../../../docs/framework/configure-apps/file-schema/wcf/localclientsettings-element.md) + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-enable-streaming.md b/docs/framework/wcf/feature-details/how-to-enable-streaming.md new file mode 100644 index 00000000000..b8ede97058f --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-enable-streaming.md @@ -0,0 +1,83 @@ +--- +title: "方法 : ストリーミングを有効にする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6ca2cf4b-c7a1-49d8-a79b-843a90556ba4 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 方法 : ストリーミングを有効にする +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、バッファー転送またはストリーミング転送を使用してメッセージを送信できます。 既定のバッファー転送モードでは、受信側がメッセージを読み取る前に、メッセージの送信が完了している必要があります。 ストリーミング転送モードでは、送信が完了していなくても、受信側でメッセージの処理を開始できます。 ストリーミング モードは、渡される情報が長い場合、または連続的に処理する場合に役立ちます。 ストリーミング モードは、メッセージが大きすぎてすべてをバッファーできない場合にも役立ちます。 + + ストリーミングを有効にするには、`OperationContract` を適切に定義し、トランスポート レベルでストリーミングを有効にします。 + +### データをストリーミングするには + +1. データをストリーミングするには、サービスの `OperationContract` が次の&2; つの要件を満たしている必要があります。 + + 1. ストリーミングするデータを保持するパラメーターが、メソッド内の唯一のパラメーターになるようにします。 たとえば、入力メッセージをストリーミングする場合、厳密に&1; つの入力パラメーターが操作に含まれている必要があります。 同様に、出力メッセージをストリーミングする場合、厳密に&1; つの出力パラメーターまたは戻り値が操作に含まれている必要があります。 + + 2. パラメーターと戻り値の型の少なくとも&1; つある必要があります、またはします。 + + ストリーミングされたデータのコントラクトの例を次に示します。 + + [!code-csharp[c_HowTo_EnableStreaming#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_enablestreaming/cs/service.cs#1)] + [!code-vb[c_HowTo_EnableStreaming#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_enablestreaming/vb/service.vb#1)] + + `GetStream` 操作は、バッファーされた入力データを `string` として受信し、ストリーミングされた `Stream` を返します。 逆に言えば、`UploadStream` は `Stream` (ストリーミング) を取り込んで、`bool` (バッファー) を返します。 `EchoStream` は `Stream` を出し入れします。これは、入力および出力メッセージがどちらもストリーミングされる操作の例です。 最後に、`GetReversedStream` は入力を行わずに `Stream` (ストリーミング) を返します。 + +2. バインディングではストリーミングを有効にする必要があります。 `TransferMode` プロパティを次の値のいずれかに設定します。 + + 1. `Buffered`、 + + 2. `Streamed` (両方向のストリーミング通信を有効にする)。 + + 3. `StreamedRequest` (要求に対してのみストリーミングを有効にする)。 + + 4. `StreamedResponse` (応答に対してのみストリーミングを有効にする)。 + + `BasicHttpBinding` は、バインディングの `TransferMode` プロパティを公開し、`NetTcpBinding` と `NetNamedPipeBinding` も公開します。 `TransferMode` プロパティをトランスポート バインド要素に設定し、カスタム バインディングで使用することもできます。 + + 次のサンプルは、コードで `TransferMode` を設定する方法と、構成ファイルを変更して設定する方法を示しています。 どちらのサンプルも、受信可能なメッセージの最大サイズを決定する `maxReceivedMessageSize` プロパティを 64 MB に設定します。 既定の `maxReceivedMessageSize` は 64 KB です。これは、多くの場合ストリーミングを行うには小さすぎます。 アプリケーションでの受信が予想されるメッセージ最大サイズに応じて、このクォータ設定を適切に変更してください。 また、`maxBufferSize` によりバッファーの最大サイズが決定されるので、適切に設定してください。 + + 1. 次のサンプルの構成スニペットでは、`TransferMode` とカスタム HTTP バインディングで、`basicHttpBinding` プロパティをストリーミングに設定しています。 + + [!code[c_HowTo_EnableStreaming#103](../../../../samples/snippets/common/VS_Snippets_CFX/c_howto_enablestreaming/common/app.config#103)] + + 2. 次のコード スニペットでは、`TransferMode` とカスタム HTTP バインディングで、`basicHttpBinding` プロパティをストリーミングに設定しています。 + + [!code-csharp[c_HowTo_EnableStreaming_code#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_enablestreaming_code/cs/c_howto_enablestreaming_code.cs#2)] + [!code-vb[c_HowTo_EnableStreaming_code#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_enablestreaming_code/vb/c_howto_enablestreaming_code.vb#2)] + + 3. 次のコード スニペットでは、カスタム TCP バインディングで、`TransferMode` プロパティをストリーミングに設定しています。 + + [!code-csharp[c_HowTo_EnableStreaming_code#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_enablestreaming_code/cs/c_howto_enablestreaming_code.cs#3)] + [!code-vb[c_HowTo_EnableStreaming_code#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_enablestreaming_code/vb/c_howto_enablestreaming_code.vb#3)] + +3. `GetStream`、`UploadStream`、および `EchoStream` の各操作では、ファイルからデータを直接送信したり、受信したデータを直接ファイルに保存します。 次のコードは、`GetStream` の例です。 + + [!code-csharp[c_HowTo_EnableStreaming#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_enablestreaming/cs/service.cs#4)] + [!code-vb[c_HowTo_EnableStreaming#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_enablestreaming/vb/service.vb#4)] + +### カスタム ストリームの書き込み + +1. カスタム ストリーム クラスを派生が送信されるデータ ストリームの各チャンクに対して特殊な処理を行うにします。 カスタム ストリームの例として、`GetReversedStream` メソッドと `ReverseStream` クラスのコードを次に示します。 + + `GetReversedStream` では、`ReverseStream` の新しいインスタンスを作成して返します。 実際の処理は、システムが `ReverseStream` オブジェクトの読み取りを行うときに発生します。 `ReverseStream.Read` メソッドは、基になるファイルからバイトのチャンクを読み取り、バイトを反転し、その反転したバイトを返します。 このメソッドは、ファイル全体の内容を反転しません。一度に&1; つのバイト チャンクを反転します。 この例では、ストリームの内容の読み取りやストリームへの書き込み時に、ストリーミング処理を実行する方法を示します。 + + [!code-csharp[c_HowTo_EnableStreaming#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_enablestreaming/cs/service.cs#2)] + [!code-vb[c_HowTo_EnableStreaming#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_enablestreaming/vb/service.vb#2)] + +## 関連項目 + [大規模データとストリーミング](../../../../docs/framework/wcf/feature-details/large-data-and-streaming.md) + [ストリーム](../../../../docs/framework/wcf/samples/stream.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-enable-the-net-tcp-port-sharing-service.md b/docs/framework/wcf/feature-details/how-to-enable-the-net-tcp-port-sharing-service.md new file mode 100644 index 00000000000..47eea89faa5 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-enable-the-net-tcp-port-sharing-service.md @@ -0,0 +1,46 @@ +--- +title: "方法 : Net.TCP ポート共有サービスを有効にする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ポート共有 [WCF]" + - "アクティブ化サービス [WCF]" +ms.assetid: c9175af4-c27c-4765-bf45-b8f7528a7282 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 方法 : Net.TCP ポート共有サービスを有効にする +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は NET.TCP ポート共有サービスと呼ばれる Windows サービスを使用し、複数のプロセス間での TCP ポート共有を実現します。 このサービスは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の一部としてインストールされますが、セキュリティ予防措置としてデフォルトでは有効になっていません。したがって、初めて使用する前に手動で有効にする必要があります。 このトピックでは、Microsoft 管理コンソール (MMC) スナップインを使用して、Net TCP ポート共有サービスを設定する方法について説明します。 + + Net.TCP ポート共有サービスを有効にするし、手動で開始するを参照してください。[する方法: ポート共有を使用する WCF サービスを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-wcf-service-to-use-port-sharing.md)このサービスを使用するサービスを構成する方法についてです。 + + Net.tcp:// ポート共有を使用してサンプルの場合は、次を参照してください。、 [Net.TCP ポート共有のサンプル](../../../../docs/framework/wcf/samples/net-tcp-port-sharing-sample.md)します。 + +### MMC を使用して Net.TCP ポート共有サービスを有効にするには + +1. [スタート] メニューから、コマンド プロンプト ウィンドウを開き、入力のいずれかのサービス管理コンソールを開きます`services.msc`または実行を開き、」と入力して`services.msc`ボックスにします。 + +2. **名**サービスの一覧の列を右クリックし、 **Net.Tcp ポート共有サービス**を選択して**プロパティ** メニューからです。 + +3. サービスの手動起動を有効にする、**プロパティ**ウィンドウ] を選択、**全般**] タブの [し、[、**スタートアップの種類**ボックスの [手動] をクリックして**適用**します。 + +4. サービスの状態 領域で、サービスを開始する場合、**開始** ボタンをクリックします。 これで、サービスの状態には "開始" が表示されます。 + +5. サービスの一覧に戻り、をクリックして、 **OK**、MMC コンソールを終了するとします。 + +## 例 + + +## 関連項目 + [Net.TCP ポート共有](../../../../docs/framework/wcf/feature-details/net-tcp-port-sharing.md) + [Net.TCP ポート共有サービスを構成します。](../../../../docs/framework/wcf/feature-details/configuring-the-net-tcp-port-sharing-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-error-handling.md b/docs/framework/wcf/feature-details/how-to-error-handling.md new file mode 100644 index 00000000000..eb350a7b51e --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-error-handling.md @@ -0,0 +1,186 @@ +--- +title: "エラーを処理する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: de566e39-9358-44ff-8244-780f6b799966 +caps.latest.revision: 5 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 5 +--- +# エラーを処理する方法 +ここでは、エラー処理を使用するルーティング構成の作成に必要な基本的な手順について説明します。 この例では、メッセージは送信先エンドポイントにルーティングされます。 ネットワークまたは通信関係の障害 \(\) のために、メッセージを配信できない場合、そのメッセージは代替エンドポイントに再送信されます。 + +> [!NOTE] +> ネットワーク障害をシミュレートするために、この例で使用される送信先エンドポイントには、誤ったアドレスが格納されています。 指定したアドレスをリッスンするサービスがないため、このエンドポイントにルーティングされるメッセージはエラーになります。 + +> [!NOTE] +> このトピックの例では、タイムアウト設定について明示的に説明していませんが、エラー処理を使用する際には、この点を考慮する必要があります。 エラーが発生すると、クライアントが応答を受け取る前に、追加の遅延が発生します。 これは、ルーティング サービスがエラーを受信し、そのメッセージをバックアップ エンドポイントに送信しようとするためです。 プライマリおよびバックアップの送信先エンドポイントに関連付けられたタイムアウト値が大きい場合は、クライアントでの遅延が大きくなることがあります。これは、メッセージが、バックアップ リスト内の複数のエンドポイントをフェールオーバーした後に、正常に送信されるためです。 +> +> ルーティング サービスが受ける遅延は、最大の場合、フィルターと関連付けられたすべてのエンドポイントのタイムアウト値の合計となる可能性があるため、これに応じて、クライアントで予測されるタイムアウト値を増やすことをお勧めします。 + +### エラー処理の実装 + +1. サービスによって公開されるサービス エンドポイントを指定することによって、ルーティング サービスの基本的な構成を作成します。 次の例では、メッセージの受信に使用される、単一のサービス エンドポイントを定義します。 また、メッセージ送信に使用する deadDestination および realDestination クライアント エンドポイントも定義します。 deadDestination エンドポイントには、実行中のサービスを参照していないアドレスが格納されており、このエンドポイントへのメッセージ送信時のネットワーク障害をシミュレートするために使用されます。 + + ```xml + + + + + + + + + + + + + + + + + + + + + ``` + +2. 送信先エンドポイントにメッセージをルーティングするのに使用するフィルターを定義します。 この例では、ルーティング サービスが受信するすべてのメッセージと照合するために MatchAll フィルターを使用します。 + + ```xml + + + + + + ``` + +3. バックアップ エンドポイント リストを定義します。このリストには、プライマリ送信先エンドポイントへの送信時にネットワークまたは通信の障害が発生した場合に、メッセージの送信先となるエンドポイントを格納します。 次の例では、1 つのエンドポイントを格納しているバックアップ リストを定義します。ただし、複数のエンドポイントを 1 つのバックアップ リストに指定できます。 + + バックアップ リストに複数のエンドポイントが格納されている場合、ネットワークまたは通信の障害が発生すると、ルーティング サービスでは、そのリスト内の最初のエンドポイントにメッセージを送信しようとします。 このエンドポイントへの送信時にネットワークまたは通信の障害が発生した場合、そのルーティング サービスでは、そのリスト内の次のエンドポイントにメッセージを送信しようとします。 このサービスは、メッセージが正常に送信されるか、すべてのバックアップ エンドポイントがネットワークまたは通信関連のエラーを返すか、メッセージが送信されてエンドポイントがネットワーク以外で通信関連以外のエラーを返すまで、このバックアップ エンドポイント リスト内の各エンドポイントにメッセージの送信を続けます。 + + ``` + + + + + + ``` + +4. フィルターを deadDestination エンドポイントおよびバックアップ エンドポイント リストと関連付けるフィルター テーブルを定義します。 まず、ルーティング サービスは、このフィルターに関連付けられた送信先エンドポイントにメッセージを送信しようとします。 deadDestination エンドポイントには、実行中のサービスを参照していないアドレスが格納されているため、これはネットワーク エラーになります。 次に、このルーティング サービスは、backupEndpointlist に指定されたエンドポイントにメッセージを送信しようとします。 + + ```xml + + + + + + + + + + + ``` + +5. 受信メッセージをフィルター テーブルに含まれているフィルターと照合して評価するには、ルーティング動作を使用して、フィルター テーブルをサービス エンドポイントと関連付ける必要があります。 次の例は、filterTable1 をサービス エンドポイントと関連付ける方法を示しています。 + + ```xml + + + + + + + + + ``` + +## 使用例 + 構成ファイル全体の一覧を次に示します。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md b/docs/framework/wcf/feature-details/how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md new file mode 100644 index 00000000000..a23403d7c62 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md @@ -0,0 +1,75 @@ +--- +title: "方法 : WCF エンドポイントとメッセージ キュー アプリケーションを使用してメッセージを交換する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 62210fd8-a372-4d55-ab9b-c99827d1885e +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# 方法 : WCF エンドポイントとメッセージ キュー アプリケーションを使用してメッセージを交換する +既存の MSMQ アプリケーションを [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションと統合できます。それには、メッセージ キュー (MSMQ) 統合バインディングを使用して MSMQ メッセージを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージとの間で相互に変換できます。 これにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントから MSMQ の受信側アプリケーションを呼び出したり、MSMQ の送信元アプリケーションから [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを呼び出したりできます。 + + このセクションで使用する方法について説明間キューに置かれた通信の (1) [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] System.Messaging および (2) MSMQ アプリケーション クライアントを使用して作成された MSMQ アプリケーション サービスとクライアントと[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]サービスです。 + + MSMQ 受信側のアプリケーションを呼び出す方法を説明する完全なサンプルについては、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]クライアントを参照してください、 [Windows Communication Foundation メッセージ キューが](../../../../docs/framework/wcf/samples/wcf-to-message-queuing.md)サンプルです。 + + 呼び出す方法を説明する完全なサンプルについては、 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] MSMQ クライアントからサービスを参照してください、[メッセージ キューが Windows Communication Foundation](../../../../docs/framework/wcf/samples/message-queuing-to-wcf.md)サンプルです。 + +### MSMQ クライアントからのメッセージを受信する WCF サービスを作成するには + +1. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのサービス コントラクトを定義するインターフェイスを、次のコード例に示すように定義します。このサービスは、MSMQ の送信元アプリケーションからキューに置かれたメッセージを受信します。 + + [!code-csharp[S_MsmqToWcf#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmqtowcf/cs/service.cs#1)] + [!code-vb[S_MsmqToWcf#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmqtowcf/vb/service.vb#1)] + +2. インターフェイスを実装し、適用、 クラスに属性の次のコード例に示すようにします。 + + [!code-csharp[S_MsmqToWcf#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmqtowcf/cs/service.cs#2)] + [!code-vb[S_MsmqToWcf#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmqtowcf/vb/service.vb#2)] + +3. 指定する構成ファイルを作成、 します。 + + + +4. インスタンスを作成、 構成のバインディングを使用するオブジェクト。 + + + +### MSMQ の受信側アプリケーションにメッセージを送信する WCF クライアントを作成するには + +1. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントのサービス コントラクトを定義するインターフェイスを、次のコード例に示すように定義します。このクライアントは、キューに置かれたメッセージを MSMQ の受信側に送信します。 + + [!code-csharp[S_WcfToMsmq#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_wcftomsmq/cs/proxy.cs#6)] + [!code-vb[S_WcfToMsmq#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_wcftomsmq/vb/proxy.vb#6)] + +2. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントが MSMQ の受信側を呼び出すために使用するクライアント クラスを定義します。 + + [!code-csharp[S_WcfToMsmq#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_wcftomsmq/cs/snippets.cs#2)] + [!code-vb[S_WcfToMsmq#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_wcftomsmq/vb/snippets.vb#2)] + +3. MsmqIntegrationBinding バインディングの使用を指定する構成を作成します。 + + [!code-csharp[S_WcfToMsmq#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_wcftomsmq/cs/snippets.cs#3)] + [!code-vb[S_WcfToMsmq#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_wcftomsmq/vb/snippets.vb#3)] + +4. クライアント クラスのインスタンスを作成し、メッセージ受信サービスによって定義されたメソッドを呼び出します。 + + [!code-csharp[S_WcfToMsmq#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_wcftomsmq/cs/client.cs#4)] + +## 関連項目 + [キューの概要](../../../../docs/framework/wcf/feature-details/queues-overview.md) + [方法: キューの WCF エンドポイントとメッセージを交換](../../../../docs/framework/wcf/feature-details/how-to-exchange-queued-messages-with-wcf-endpoints.md) + [Windows Communication Foundation メッセージ キュー](../../../../docs/framework/wcf/samples/wcf-to-message-queuing.md) + [メッセージ キュー (MSMQ) をインストールします。](../../../../docs/framework/wcf/samples/installing-message-queuing-msmq.md) + [Windows Communication Foundation へのメッセージ キュー](../../../../docs/framework/wcf/samples/message-queuing-to-wcf.md) + [メッセージ キューを介したメッセージ セキュリティ](../../../../docs/framework/wcf/samples/message-security-over-message-queuing.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-exchange-messages-within-a-reliable-session.md b/docs/framework/wcf/feature-details/how-to-exchange-messages-within-a-reliable-session.md new file mode 100644 index 00000000000..eeee74c52c0 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-exchange-messages-within-a-reliable-session.md @@ -0,0 +1,88 @@ +--- +title: "方法 : 信頼されたセッション内のメッセージを変換する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 87cd0e75-dd2c-44c1-8da0-7b494bbdeaea +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : 信頼されたセッション内のメッセージを変換する +このトピックでは、信頼できるセッションを有効にするために必要な手順について説明します。ここでは、信頼できるセッションを \(既定ではなく\) オプションでサポートするシステム指定のバインディングを使用します。信頼できるセッションはコードを使用して強制的に有効にするか、構成ファイルで宣言して有効にします。この手順では、クライアントとサービスの構成ファイルを使用して、信頼できるセッションを有効にし、送信された順序でメッセージが受信されるように指定します。 + + この手順で重要なのは、エンドポイント構成要素に "Binding1" という名前のバインディング構成を参照する `bindingConfiguration` 属性が含まれていることです。[\](../../../../docs/framework/misc/binding.md) 構成要素は、この名前を参照して、[reliableSession](http://msdn.microsoft.com/ja-jp/9c93818a-7dfa-43d5-b3a1-1aafccf3a00b) 要素の `enabled` 属性を `true` に設定することで信頼できるセッションを有効にします。信頼できるセッションで順序付き配信の保証を指定するには、`ordered` 属性を `true` に設定します。 + + この例のソースのコピーについては、「[WS 信頼できるセッション](../../../../docs/framework/wcf/samples/ws-reliable-session.md)」を参照してください。 + +### 信頼できるセッションを使用するためにサービスを WSHttpBinding で構成するには + +1. サービスの種類にサービス コントラクトを定義します。 + + [!code-csharp[c_HowTo_UseReliableSession#1121](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_usereliablesession/cs/service.cs#1121)] + +2. サービス クラスにサービス コントラクトを実装します。アドレス情報とバインディング情報はサービスの実装内では指定されないことに注意してください。同様に、コードは構成ファイルから情報を取得する必要はありません。 + + [!code-csharp[c_HowTo_UseReliableSession#1122](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_usereliablesession/cs/service.cs#1122)] + +3. Web.config ファイルを作成し、信頼できるセッションが有効で、メッセージの順序付き配信を要求する を使用する `CalculatorService` のエンドポイントを構成します。 + + [!code[c_HowTo_UseReliableSession#2111](../../../../samples/snippets/common/VS_Snippets_CFX/c_howto_usereliablesession/common/web.config#2111)] + +4. 次の行を含む Service.svc ファイルを作成します。 + + ``` + <%@ServiceHost language=c# Service="CalculatorService" %> + ``` + +5. インターネット インフォメーション サービス \(IIS\) 仮想ディレクトリに Service.svc ファイルを配置します。 + +### 信頼できるセッションを使用するためにクライアントを WSHttpBinding で構成するには + +1. コマンド ラインから [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を実行して、サービス メタデータからコードを生成します。 + + ``` + Svcutil.exe + ``` + +2. 生成されたクライアントには、クライアントの実装時に満たされなければならないサービス コントラクトを定義する `ICalculator` インターフェイスが含まれます。 + + [!code-csharp[C_HowTo_UseReliableSession#1221](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_usereliablesession/cs/client.cs#1221)] + +3. 生成されたクライアント アプリケーションは `ClientCalculator` も実装します。このサービスの実装では、アドレス情報とバインディング情報が指定されないことに注意してください。同様に、コードは構成ファイルから情報を取得する必要はありません。 + + [!code-csharp[C_HowTo_UseReliableSession#1222](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_usereliablesession/cs/client.cs#1222)] + +4. クラスを使用するクライアントの構成も、Svcutil.exe により生成されます。[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] を使用する場合、このファイルには App.config という名前を付ける必要があります。 + + [!code[C_HowTo_UseReliableSession#2211](../../../../samples/snippets/common/VS_Snippets_CFX/c_howto_usereliablesession/common/app.config#2211)] + +5. アプリケーションで `ClientCalculator` のインスタンスを作成し、サービス操作を呼び出します。 + + [!code-csharp[C_HowTo_UseReliableSession#1223](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_usereliablesession/cs/client.cs#1223)] + +6. クライアントをコンパイルして実行します。 + +## 使用例 + + + システム指定のバインディングの中には、信頼できるセッションを既定でサポートするものがあります。具体的には、次のようなバインディングです。 + +- + +- + +- + + 信頼できるセッションをサポートするカスタム バインディングを作成する方法の例については、「[方法 : カスタムの信頼できるセッションによる HTTPS を使用したバインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-reliable-session-binding-with-https.md)」を参照してください。 + +## 参照 + [信頼できるセッション](../../../../docs/framework/wcf/feature-details/reliable-sessions.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-exchange-queued-messages-with-wcf-endpoints.md b/docs/framework/wcf/feature-details/how-to-exchange-queued-messages-with-wcf-endpoints.md new file mode 100644 index 00000000000..8da05f128a6 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-exchange-queued-messages-with-wcf-endpoints.md @@ -0,0 +1,99 @@ +--- +title: "方法 : WCF エンドポイントを使用してキューに置かれたメッセージを交換する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 938e7825-f63a-4c3d-b603-63772fabfdb3 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# 方法 : WCF エンドポイントを使用してキューに置かれたメッセージを交換する +キューを使用すると、通信中にサービスを使用できない場合でも、クライアントと [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービス間で信頼できるメッセージングを使用できます。 以下の手順は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの実装時に、標準のキューに置かれたバインディングを使用してクライアントとサービス間で永続的な通信を確保する方法を示しています。 + + このセクションを使用する方法について説明間キューに置かれた通信の[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]クライアントと[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]サービスです。 + +### WCF サービスでキューを使用するには + +1. マークされたインターフェイスを使用してサービス コントラクトを定義する、 します。 マークされたサービス コントラクトの一部であるインターフェイスの動作、 方向と指定してメソッドへの応答が返されないためです。 サービス コントラクトおよびその操作の定義の例を次のコードに示します。 + + [!code-csharp[S_Msmq_Transacted#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_transacted/cs/service.cs#1)] + [!code-vb[S_Msmq_Transacted#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_transacted/vb/service.vb#1)] + +2. サービス コントラクトがユーザー定義型を渡す場合は、その型のデータ コントラクトを定義する必要があります。 次のコードは、2 つのデータ コントラクト (`PurchaseOrder` および `PurchaseOrderLineItem`) を示します。 これらの&2; つの型は、サービスに送信されるデータを定義します (このデータ コントラクトを定義するクラスによって多数のメソッドが定義されることに注意してください)。 これらのメソッドは、データ コントラクトの一部とは見なされません。 `DataMember` 属性で宣言されているメンバーだけがデータ コントラクトに含まれます。 + + [!code-csharp[S_Msmq_Transacted#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_transacted/cs/service.cs#2)] + [!code-vb[S_Msmq_Transacted#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_transacted/vb/service.vb#2)] + +3. インターフェイスで定義したサービス コントラクトのメソッドをクラスに実装します。 + + [!code-csharp[S_Msmq_Transacted#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_transacted/cs/service.cs#3)] + [!code-vb[S_Msmq_Transacted#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_transacted/vb/service.vb#3)] + + 通知、 上に配置、`SubmitPurchaseOrder`メソッドです。 これは、トランザクション内でこの操作を呼び出す必要があること、およびメソッドが完了したときにトランザクションが自動的に完了することを指定します。 + +4. トランザクション キューを使用して作成します。 代わりに、MSMQ (Microsoft Message Queuing) Microsoft 管理コンソール (MMC: Microsoft Management Console) を使用してキューを作成することもできます。 その場合は、トランザクション キューを作成してください。 + + [!code-csharp[S_Msmq_Transacted#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_transacted/cs/hostapp.cs#4)] + [!code-vb[S_Msmq_Transacted#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_transacted/vb/hostapp.vb#4)] + +5. 定義、 構成サービスのアドレスを指定し、標準を使用するバインドします。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]使用して[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]構成を参照してください[Windows Communication Foundation アプリケーションの構成](http://msdn.microsoft.com/ja-jp/13cb368e-88d4-4c61-8eed-2af0361c6d7a)します。 + + + +6. ホストを作成、`OrderProcessing`サービスを使用してメッセージをキューから読み取ってそれを処理します。 サービス ホストを開いてサービスを使用できるようにします。 任意のキーを押してサービスを終了するようユーザーに伝えるメッセージを表示します。 `ReadLine` を呼び出して、キーが押されるまで待機してサービスを終了します。 + + [!code-csharp[S_Msmq_Transacted#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_transacted/cs/hostapp.cs#6)] + [!code-vb[S_Msmq_Transacted#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_transacted/vb/hostapp.vb#6)] + +### キューに置かれたサービスのクライアントを作成するには + +1. 次の例は、ホスト アプリケーションを実行し、Svcutil.exe ツールを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを作成する方法を示します。 + + ``` + svcutil http://localhost:8000/ServiceModelSamples/service + ``` + +2. 定義、 構成のアドレスを指定し、標準を使用するの次の例に示すようにバインドします。 + + + +3. 次の例に示すように、トランザクション キューに書き込むトランザクション スコープを作成し、`SubmitPurchaseOrder` 操作を呼び出して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを閉じます。 + + [!code-csharp[S_Msmq_Transacted#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_transacted/cs/client.cs#8)] + [!code-vb[S_Msmq_Transacted#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_transacted/vb/client.vb#8)] + +## 例 + 次の例は、この例に含まれるサービス コード、ホスト アプリケーション、App.config ファイル、およびクライアント コードを示します。 + + [!code-csharp[S_Msmq_Transacted#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_transacted/cs/service.cs#9)] + [!code-vb[S_Msmq_Transacted#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_transacted/vb/service.vb#9)] + + [!code-csharp[S_Msmq_Transacted#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_transacted/cs/hostapp.cs#10)] + [!code-vb[S_Msmq_Transacted#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_transacted/vb/hostapp.vb#10)] + + + + [!code-csharp[S_Msmq_Transacted#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_msmq_transacted/cs/client.cs#12)] + [!code-vb[S_Msmq_Transacted#12](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_msmq_transacted/vb/client.vb#12)] + + + +## 関連項目 + + [トランザクション MSMQ バインディング](../../../../docs/framework/wcf/samples/transacted-msmq-binding.md) + [WCF でのキュー](../../../../docs/framework/wcf/feature-details/queuing-in-wcf.md) + [方法: WCF エンドポイントでメッセージを交換して、メッセージ キュー アプリケーション](../../../../docs/framework/wcf/feature-details/how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md) + [Windows Communication Foundation メッセージ キュー](../../../../docs/framework/wcf/samples/wcf-to-message-queuing.md) + [メッセージ キュー (MSMQ) をインストールします。](../../../../docs/framework/wcf/samples/installing-message-queuing-msmq.md) + [メッセージ キュー統合バインディング サンプル](http://msdn.microsoft.com/ja-jp/997d11cb-f2c5-4ba0-9209-92843d4d0e1a) + [Windows Communication Foundation へのメッセージ キュー](../../../../docs/framework/wcf/samples/message-queuing-to-wcf.md) + [メッセージ キューを介したメッセージ セキュリティ](../../../../docs/framework/wcf/samples/message-security-over-message-queuing.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-export-metadata-from-service-endpoints.md b/docs/framework/wcf/feature-details/how-to-export-metadata-from-service-endpoints.md new file mode 100644 index 00000000000..205764cbb71 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-export-metadata-from-service-endpoints.md @@ -0,0 +1,65 @@ +--- +title: "方法 : メタデータをサービス エンドポイントからエクスポートする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b6c4dfd0-f270-43ec-961a-e16eb6af2f2c +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : メタデータをサービス エンドポイントからエクスポートする +このトピックでは、メタデータをサービス エンドポイントからエクスポートする方法について説明します。 + +### メタデータをサービス エンドポイントからエクスポートするには + +1. 新しい Visual Studio コンソール アプリケーション プロジェクトを作成します。 以下の手順で示されているコードを、生成された Program.cs ファイルの main\(\) メソッド内に追加します。 + +2. を作成します。 + + [!code-csharp[S_UEWsdlExporter#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_uewsdlexporter/cs/program.cs#1)] + [!code-vb[S_UEWsdlExporter#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_uewsdlexporter/vb/program.vb#1)] + +3. プロパティを 列挙体のいずれかの値に設定します。 この例では、値を、WS\-Policy 1.5 に対応する に設定します。 + + [!code-csharp[S_UEWsdlExporter#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_uewsdlexporter/cs/program.cs#2)] + [!code-vb[S_UEWsdlExporter#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_uewsdlexporter/vb/program.vb#2)] + +4. オブジェクトの配列を作成します。 + + [!code-csharp[S_UEWsdlExporter#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_uewsdlexporter/cs/program.cs#3)] + [!code-vb[S_UEWsdlExporter#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_uewsdlexporter/vb/program.vb#3)] + +5. サービス エンドポイントのメタデータをエクスポートします。 + + [!code-csharp[S_UEWsdlExporter#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_uewsdlexporter/cs/program.cs#4)] + [!code-vb[S_UEWsdlExporter#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_uewsdlexporter/vb/program.vb#4)] + +6. エクスポート プロセス中にエラーが発生していないことを確認し、メタデータを取得します。 + + [!code-csharp[S_UEWsdlExporter#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_uewsdlexporter/cs/program.cs#5)] + [!code-vb[S_UEWsdlExporter#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_uewsdlexporter/vb/program.vb#5)] + +7. これで、メタデータを使用できます。たとえば、 メソッドを呼び出してメタデータをファイルに書き込むことができます。 + +## 使用例 + この例の完全なコードの一覧を以下に示します。 + + [!code-csharp[S_UEWsdlExporter#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_uewsdlexporter/cs/program.cs#0)] + [!code-vb[S_UEWsdlExporter#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_uewsdlexporter/vb/program.vb#0)] + +## コードのコンパイル + Program.cs をコンパイルするときは、System.ServiceModel.dll への参照を追加してください。 + +## 参照 + [メタデータ アーキテクチャの概要](../../../../docs/framework/wcf/feature-details/metadata-architecture-overview.md) + [メタデータを使用する](../../../../docs/framework/wcf/feature-details/using-metadata.md) + [エンドポイント : アドレス、バインディング、およびコントラクト](../../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-expose-a-contract-to-soap-and-web-clients.md b/docs/framework/wcf/feature-details/how-to-expose-a-contract-to-soap-and-web-clients.md new file mode 100644 index 00000000000..181da6a25f3 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-expose-a-contract-to-soap-and-web-clients.md @@ -0,0 +1,113 @@ +--- +title: "方法 : コントラクトを SOAP クライアントおよび Web クライアントに公開する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb765a48-12f2-430d-a54d-6f0c20f2a23a +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# 方法 : コントラクトを SOAP クライアントおよび Web クライアントに公開する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、既定でエンドポイントは SOAP クライアントでのみ利用できます。 SOAP 以外のクライアントでもエンドポイントを利用できるようにする方法については、「[方法 : 基本的な WCF Web HTTP サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-wcf-web-http-service.md)」を参照してください。 状況によっては、同じコントラクトを Web エンドポイントと SOAP エンドポイントのどちらとしても利用できることが望ましい場合があります。 ここでは、これを実現する方法の例について示します。 + +### サービス コントラクトを定義するには + +1. 次のコードのように、 および の各属性でマークされたインターフェイスを使用して、サービス コントラクトを定義します。 + + [!code-csharp[htSoapWeb#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#0)] + [!code-vb[htSoapWeb#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#0)] + + > [!NOTE] + > 既定では、 は POST 呼び出しを操作にマッピングします。 ただし、"method\=" パラメーターを指定することで、操作にマッピングするメソッドを指定できます。 には "method\=" パラメーターがないため、サービス操作には GET 呼び出しのみがマッピングされます。 + +2. 次のコードに示すように、サービス コントラクトを実装します。 + + [!code-csharp[htSoapWeb#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#1)] + [!code-vb[htSoapWeb#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#1)] + +### サービスをホストするには + +1. 次のコードに示すように、 オブジェクトを作成します。 + + [!code-csharp[htSoapWeb#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#2)] + [!code-vb[htSoapWeb#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#2)] + +2. 次のコードに示すように、SOAP 以外のエンドポイント用に、 を追加します。 + + [!code-csharp[htSoapWeb#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#3)] + [!code-vb[htSoapWeb#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#3)] + +3. 次のコードに示すように、SOAP 以外のエンドポイント用に、 を追加し、エンドポイントに を追加します。 + + [!code-csharp[htSoapWeb#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#4)] + [!code-vb[htSoapWeb#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#4)] + +4. 次のコードに示すように、`Open()` を インスタンスで呼び出して、サービス ホストを開きます。 + + [!code-csharp[htSoapWeb#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#5)] + [!code-vb[htSoapWeb#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#5)] + +### Internet Explorer で GET にマッピングされたサービス操作を呼び出すには + +1. Internet Explorer を開いて「`http://localhost:8000/Web/EchoWithGet?s=Hello, world!`」と入力し、Enter キーを押します。 この URL には、サービスのベース アドレス \("http:\/\/localhost:8000\/"\) が含まれており、エンドポイントの相対アドレス \(""\)、呼び出すサービス操作 \("EchoWithGet"\)、疑問符の後にアンパサンド \(&\) で区切られた名前付きパラメーターのリストが続きます。 + +### コードから Web エンドポイントにあるサービス操作を呼び出すには + +1. 次のコードに示すように、 のインスタンスを `using` ブロック内に作成します。 + + [!code-csharp[htSoapWeb#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#6)] + [!code-vb[htSoapWeb#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#6)] + +> [!NOTE] +> `Close()` は `using` ブロックの末尾のチャネルで自動的に呼び出されます。 + +1. 次のコードに示すように、チャネルを作成してサービスを呼び出します。 + + [!code-csharp[htSoapWeb#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#8)] + [!code-vb[htSoapWeb#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#8)] + +### SOAP エンドポイントにあるサービス操作を呼び出すには + +1. 次のコードに示すように、 のインスタンスを `using` ブロック内に作成します。 + + [!code-csharp[htSoapWeb#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#10)] + [!code-vb[htSoapWeb#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#10)] + +2. 次のコードに示すように、チャネルを作成してサービスを呼び出します。 + + [!code-csharp[htSoapWeb#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#11)] + [!code-vb[htSoapWeb#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#11)] + +### サービス ホストを閉じるは + +1. 次のコードに示すように、サービス ホストを閉じます。 + + [!code-csharp[htSoapWeb#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#9)] + [!code-vb[htSoapWeb#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#9)] + +## 使用例 + このトピックの完全なコードの一覧を以下に示します。 + + [!code-csharp[htSoapWeb#13](../../../../samples/snippets/csharp/VS_Snippets_CFX/htsoapweb/cs/program.cs#13)] + [!code-vb[htSoapWeb#13](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htsoapweb/vb/program.vb#13)] + +## コードのコンパイル + Service.cs のコンパイル時には、System.ServiceModel.dll と System.ServiceModel.Web.dll を参照します。 + +## 参照 + + + + + + + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-expose-a-feed-as-both-atom-and-rss.md b/docs/framework/wcf/feature-details/how-to-expose-a-feed-as-both-atom-and-rss.md new file mode 100644 index 00000000000..a1d7521ba25 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-expose-a-feed-as-both-atom-and-rss.md @@ -0,0 +1,104 @@ +--- +title: "方法 : Atom および RSS の両方としてフィードを公開する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fe374932-67f5-487d-9325-f868812b92e4 +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# 方法 : Atom および RSS の両方としてフィードを公開する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、配信フィードを公開するサービスを作成できます。 このトピックでは、Atom 1.0 と RSS 2.0 の両方を使用して配信フィードを公開する配信サービスを作成する方法について説明します。 このサービスは、どちらかの配信フォーマットを返すエンドポイントを公開します。 簡略化のため、この例で使用するサービスは自己ホスト型です。 運用環境では、このタイプのサービスは IIS または WAS でホストされます。 各種の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ホスティング オプション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ホスト](../../../../docs/framework/wcf/feature-details/hosting.md)」を参照してください。 + +### 基本的な配信サービスを作成するには + +1. 属性でマークされたインターフェイスを使用して、サービス コントラクトを定義します。 配信フィードとして公開される各操作は、 オブジェクトを返します。 のパラメーターに注意してください。 `UriTemplate` は、このサービス操作を呼び出すために使用される URL を指定します。 このパラメーターに対する文字列には、\({*format*}\) のように、リテラルと変数を中かっこで囲んで指定します。 この変数は、サービス操作の `format` パラメーターに対応します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] . `BodyStyle` は、このサービス操作が送受信するメッセージの書き方に影響を与えます。 は、このサービス操作に送受信されるデータが、インフラストラクチャにより定義された XML 要素でラップされないことを指定します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] . + + [!code-csharp[htAtomRss#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/program.cs#0)] + [!code-vb[htAtomRss#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/program.vb#0)] + + > [!NOTE] + > このインターフェイスのサービス操作により返される型を指定するには、 を使用します。 + +2. サービス コントラクトを実装します。 + + [!code-csharp[htAtomRss#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/program.cs#1)] + [!code-vb[htAtomRss#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/program.vb#1)] + +3. オブジェクトを作成し、作成者、カテゴリ、および説明を追加します。 + + [!code-csharp[htAtomRss#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/program.cs#2)] + [!code-vb[htAtomRss#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/program.vb#2)] + +4. 複数の オブジェクトを作成します。 + + [!code-csharp[htAtomRss#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/program.cs#3)] + [!code-vb[htAtomRss#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/program.vb#3)] + +5. オブジェクトをフィードに追加します。 + + [!code-csharp[htAtomRss#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/program.cs#4)] + [!code-vb[htAtomRss#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/program.vb#4)] + +6. format パラメーターを使用して、要求された形式を返します。 + + [!code-csharp[htAtomRss#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/program.cs#5)] + [!code-vb[htAtomRss#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/program.vb#5)] + +### サービスをホストするには + +1. オブジェクトを作成します。 クラスは、エンドポイントがコードまたは構成で指定されない限り、自動的にエンドポイントをサービスのベース アドレスで追加します。 次の例は、既定のエンドポイントが公開されるので、エンドポイントは指定されません。 + + [!code-csharp[htAtomRss#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/program.cs#6)] + [!code-vb[htAtomRss#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/program.vb#6)] + +2. サービス ホストを開き、サービスからフィードを読み込み、フィードを表示してから、ユーザーが Enter キーを押すのを待ちます。 + + [!code-csharp[htAtomRss#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/program.cs#8)] + [!code-vb[htAtomRss#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/program.vb#8)] + +### HTTP GET を使用して GetBlog を呼び出すには + +1. Internet Explorer を開いて、次の URL を入力し、Enter キーを押します。 http:\/\/localhost:8000\/BlogService\/GetBlog + + この URL には、サービスのベース アドレス \(http:\/\/localhost:8000\/BlogService\)、エンドポイントの相対アドレス、および呼び出すサービス操作が含まれます。 + +### コードから GetBlog\(\) を呼び出すには + +1. ベース アドレスと呼び出すメソッドを使用して を作成します。 + + [!code-csharp[htAtomRss#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/snippets.cs#9)] + [!code-vb[htAtomRss#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/snippets.vb#9)] + +2. 静的な メソッドを呼び出し、作成した を渡します。 + + [!code-csharp[htAtomRss#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/snippets.cs#10)] + [!code-vb[htAtomRss#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/snippets.vb#10)] + + これにより、サービス操作が呼び出され、サービス操作から返されたフォーマッタが新しい に設定されます。 + +3. フィード オブジェクトにアクセスします。 + + [!code-csharp[htAtomRss#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/snippets.cs#11)] + [!code-vb[htAtomRss#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htatomrss/vb/snippets.vb#11)] + +## 使用例 + この例の完全なコードの一覧を以下に示します。 + + [!code-csharp[htAtomRss#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/htatomrss/cs/program.cs#12)] + +## コードのコンパイル + 上記のコードのコンパイル時には、System.ServiceModel.dll と System.ServiceModel.Web.dll が参照されます。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-host-a-non-service-workflow-in-iis.md b/docs/framework/wcf/feature-details/how-to-host-a-non-service-workflow-in-iis.md new file mode 100644 index 00000000000..8b530e17cc5 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-host-a-non-service-workflow-in-iis.md @@ -0,0 +1,702 @@ +--- +title: "方法 : IIS でサービス以外のワークフローをホストする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f362562c-767d-401b-8257-916616568fd4 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 方法 : IIS でサービス以外のワークフローをホストする +ワークフロー サービスではないワークフローは IIS\/WAS でホストできます。 これは他の人が作成したワークフローをホストする必要がある場合に役に立ちます。 たとえば、ワークフロー デザイナーを再ホストして、ユーザーが独自のワークフローを作成できるようにする場合がその例です。 IIS でサービス以外のワークフローをホストすると、プロセス リサイクル、アイドル シャットダウン、処理状況の監視、メッセージ ベースのアクティブ化などの機能をサポートできます。 IIS でホストされるワークフロー サービスには アクティビティが含まれ、IIS がメッセージを受け取るとアクティブ化されます。 サービス以外のワークフローにはメッセージング アクティビティは含まれないので、既定ではメッセージを送信することによってアクティブ化できません。 からクラスを派生させ、そのワークフローのインスタンスを作成する操作を含むサービス コントラクトを定義する必要があります。 このトピックでは、単純なワークフローを作成して、クライアントがワークフローのアクティブ化に使用できるサービス コントラクトを定義し、そのサービス コントラクトを使ってワークフロー作成のリクエストをリッスンする からクラスを派生させる方法を説明します。 + +### 単純なワークフローの作成 + +1. `CreationEndpointTest` という名前で、新しい空の [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] ソリューションを作成します。 + +2. `SimpleWorkflow` という新しい WCF ワークフロー サービス アプリケーション プロジェクトをソリューションに追加します。 ワークフロー デザイナーが開きます。 + +3. ReceiveRequest アクティビティと SendResponse アクティビティを削除します。 ワークフローはこれらのアクティビティによってワークフロー サービスになります。 ここではワークフロー サービスを使用しないので、これらのアクティビティは必要ありません。 + +4. シーケンス アクティビティの DisplayName を "Sequential Workflow" に設定します。 + +5. Service1.xamlx を Workflow1.xamlx という名前に変更します。 + +6. シーケンス アクティビティの外でデザイナーをクリックして、Name プロパティと ConfigurationName プロパティを "Workflow1" に設定します。 + +7. アクティビティを にドラッグします。 アクティビティはツールボックスの **\[プリミティブ\]** セクションにあります。 アクティビティの プロパティを "Hello, world" に設定します。 + + この時点で、ワークフローは次の図のようになります。 + + ![単純なワークフロー](../../../../docs/framework/wcf/feature-details/media/simpleworkflow.png "SimpleWorkflow") + +### ワークフロー作成サービス コントラクトの作成 + +1. `CreationEndpointTest` に `Shared` という新しいクラス ライブラリ プロジェクトを追加します。 + +2. System.ServiceModel.dll、System.Configuration、および System.ServiceModel.Activities への参照を `Shared` プロジェクトに追加します。 + +3. Class1.cs ファイルの名前を IWorkflowCreation.cs に変更し、次のコードをそのファイルに追加します。 + + ``` + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + using System.ServiceModel; + + namespace Shared + { + //service contract exposed from the endpoint + [ServiceContract(Name = "IWorkflowCreation")] + public interface IWorkflowCreation + { + [OperationContract(Name = "Create")] + Guid Create(IDictionary inputs); + + [OperationContract(Name = "CreateWithInstanceId", IsOneWay = true)] + void CreateWithInstanceId(IDictionary inputs, Guid instanceId); + } + } + ``` + + このコントラクトは 2 つの操作を定義します。どちらも作成したサービス以外のワークフローの新しいインスタンスを作成します。 1 つは生成されたインスタンス ID を持つ新しいインスタンスを作成し、もう 1 つは新しいワークフロー インスタンスのインスタンス ID を指定できるようにします。 どちらの方法でも、新しいワークフロー インスタンスにパラメーターを渡すことができます。 このコントラクトは によって公開され、クライアントがサービス以外のワークフローの新しいインスタンスを作成できるようにします。 + +### WorkflowHostingEndpoint からのクラスの派生 + +1. `CreationEndpoint` という から派生された新しいクラスを `Shared` プロジェクトに追加します。 + + ``` + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Globalization; + using System.ServiceModel; + using System.ServiceModel.Activities; + using System.ServiceModel.Channels; + + namespace Shared + { + public class CreationEndpoint : WorkflowHostingEndpoint + { + } + } + ``` + +2. `defaultBaseUri` というローカルの静的 変数を `CreationEndpoint` クラスに追加します。 + + ``` + public class CreationEndpoint : WorkflowHostingEndpoint + { + static Uri defaultBaseUri; + } + ``` + +3. `CreationEndpoint` クラスに次のコンストラクターを追加します。 基本コンストラクターへの呼び出しに `IWorkflowCreation` サービス コントラクトを指定することに注意してください。 + + ``` + public CreationEndpoint(Binding binding, EndpointAddress address) + : base(typeof(IWorkflowCreation), binding, address) + { + } + ``` + +4. `CreationEndpoint` クラスに次の既定のコンストラクターを追加します。 + + ``` + public CreationEndpoint() + : this(GetDefaultBinding(), + new EndpointAddress(new Uri(DefaultBaseUri, new Uri(Guid.NewGuid().ToString(), UriKind.Relative)))) + { + } + ``` + +5. `DefaultBaseUri` という静的プロパティを `CreationEndpoint` クラスに追加します。 このプロパティは既定のベース URI の保持に使用されます \(指定されない場合\)。 + + ``` + static Uri DefaultBaseUri + { + get + { + if (defaultBaseUri == null) + { + defaultBaseUri = new Uri(string.Format(CultureInfo.InvariantCulture, "net.pipe://localhost/workflowCreationEndpoint/{0}/{1}", + Process.GetCurrentProcess().Id, + AppDomain.CurrentDomain.Id)); + } + return defaultBaseUri; + } + } + ``` + +6. 作成エンドポイントに使用する既定のバインディングを取得するための次のメソッドを作成します。 + + ``` + //defaults to NetNamedPipeBinding + public static Binding GetDefaultBinding() + { + return new NetNamedPipeBinding(NetNamedPipeSecurityMode.None) { TransactionFlow = true }; + } + ``` + +7. メソッドをオーバーライドしてワークフロー インスタンス ID を返します。 `Action` ヘッダーが "Create" で終わる場合は空の GUID を返し、`Action` ヘッダーが "CreateWithInstanceId" で終わる場合はメソッドに渡す GUID を返します。 それ以外の場合は、 がスローされます。 これらの `Action` ヘッダーは `IWorkflowCreation` サービス コントラクトで定義した 2 つの操作に対応しています。 + + ``` + protected override Guid OnGetInstanceId(object[] inputs, OperationContext operationContext) + { + //Create was called by client + if (operationContext.IncomingMessageHeaders.Action.EndsWith("Create")) + { + return Guid.Empty; + } + //CreateWithInstanceId was called by client + else if (operationContext.IncomingMessageHeaders.Action.EndsWith("CreateWithInstanceId")) + { + return (Guid)inputs[1]; + } + else + { + throw new InvalidOperationException("Invalid Action: " + operationContext.IncomingMessageHeaders.Action); + } + } + ``` + +8. メソッドをオーバーライドして を作成し、ワークフローに引数があれば追加し、クライアントにインスタンス ID を送信して、 を返します。 + + ``` + protected override WorkflowCreationContext OnGetCreationContext(object[] inputs, OperationContext operationContext, Guid instanceId, WorkflowHostingResponseContext responseContext) + { + WorkflowCreationContext creationContext = new WorkflowCreationContext(); + if (operationContext.IncomingMessageHeaders.Action.EndsWith("Create") || (operationContext.IncomingMessageHeaders.Action.EndsWith("CreateWithInstanceId"))) + { + Dictionary arguments = (Dictionary)inputs[0]; + if (arguments != null && arguments.Count > 0) + { + foreach (KeyValuePair pair in arguments) + { + //arguments to pass to the workflow + creationContext.WorkflowArguments.Add(pair.Key, pair.Value); + } + } + //reply to client with instanceId + responseContext.SendResponse(instanceId, null); + } + else + { + throw new InvalidOperationException("Invalid Action: " + operationContext.IncomingMessageHeaders.Action); + } + return creationContext; + } + ``` + +### WorkflowCreationEndpoint の構成を可能にする標準エンドポイント要素の作成 + +1. `CreationEndpoint` プロジェクトの Shared への参照を追加します。 + +2. `CreationEndpointElement` という から派生された新しいクラスを `CreationEndpoint` プロジェクトに追加します。 このクラスは web.config ファイル内の `CreationEndpoint` を表します。 + + ``` + using System; + using System.Configuration; + using System.ServiceModel.Activities; + using System.ServiceModel.Configuration; + using System.ServiceModel.Description; + using Shared; + + namespace CreationEndpointTest + { + //config element for CreationEndpoint + public class CreationEndpointElement : StandardEndpointElement + { + } + ``` + +3. エンドポイントの型を返すために `EndpointType` というプロパティを追加します。 + + ``` + protected override Type EndpointType + { + get { return typeof(CreationEndpoint); } + } + ``` + +4. メソッドをオーバーライドし、`CreationEndpoint` を返します。 + + ``` + protected override ServiceEndpoint CreateServiceEndpoint(ContractDescription contractDescription) + { + return new CreationEndpoint(); + } + + ``` + +5. 、および の各メソッドをオーバーロードします。 これらのメソッドは定義する必要があるだけで、コードを追加する必要はありません。 + + ``` + protected override void OnApplyConfiguration(ServiceEndpoint endpoint, ChannelEndpointElement channelEndpointElement) + { + } + + protected override void OnApplyConfiguration(ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement) + { + } + + protected override void OnInitializeAndValidate(ChannelEndpointElement channelEndpointElement) + { + } + + protected override void OnInitializeAndValidate(ServiceEndpointElement serviceEndpointElement) + { + } + ``` + +6. `CreationEndpoint` のコレクション クラスを `CreationEndpoint` プロジェクト内の CreationEndpointElement.cs ファイルに追加します。 このクラスは構成によって使用され、web.config ファイル内に `CreationEndpoint` のインスタンス数を格納します。 + + ``` + public class CreationEndpointCollection : StandardEndpointCollectionElement + { + } + ``` + +7. ソリューションをビルドします。 + +### IIS でのワークフローのホスト + +1. IIS 内に `MyCreationEndpoint` という新しいアプリケーションを作成します。 + +2. ワークフロー デザイナーによって生成された workflow1.xaml というファイルをアプリケーション ディレクトリにコピーして、その名前を workflow1.xamlx に変更します。 + +3. shared.dll と CreationEndpoint.dll というファイルをアプリケーションの bin ディレクトリにコピーします \(bin ディレクトリは存在しなければ作成します\)。 + +4. `CreationEndpoint` プロジェクト内の Web.config ファイルの内容を次のコードで置き換えます。 + + ```xaml + + + + + + + ``` + +5. `` 要素の後に、次の構成コードを追加して、`CreationEndpoint` を登録します。 + + ``` + + + + + + + + + + + ``` + + これによって、`CreationEndpointCollection` クラスが登録され、web.config ファイル内で `CreationEndpoint` を構成できるようになります。 + +6. 受信メッセージをリッスンする `CreationEndpoint` と共に `` 要素を \<\/extensions\> タグの後に追加します。 + + ``` + + + + + + + + ``` + +7. サービス メタデータを有効にするために、\ 要素を \<\/services\> タグの後に追加します。 + + ```xml + + + + + + + + + ``` + +8. web.config ファイルを IIS アプリケーション ディレクトリにコピーします。 + +9. 作成エンドポイントが機能しているかどうかをテストするために、Internet Explorer を起動して http:\/\/localhost\/MyCreationEndpoint\/Workflow1.xamlx を表示します。 Internet Explorer には次のような画面が表示されます。 + + ![サービスのテスト](../../../../docs/framework/wcf/feature-details/media/testservice.gif "TestService") + +### CreationEndpoint を呼び出すクライアントの作成 + +1. 新しいコンソール アプリケーションを `CreationEndpointTest` ソリューションに追加します。 + +2. System.ServiceModel.dll、System.ServiceModel.Activities、および `Shared` プロジェクトへの参照を追加します。 + +3. `Main` メソッド内に `IWorkflowCreation` 型の を作成して、 を呼び出します。 これはプロキシを返します。 次に、そのプロキシの `Create` を呼び出して、IIS でホストされるワークフロー インスタンスを作成します。 + + ``` + using System.Text; + using Shared; + using System.ServiceModel; + + namespace CreationEndpointClient + { + class Program + { + static void Main(string[] args) + { + try + { + //client using BasicHttpBinding + IWorkflowCreation client = new ChannelFactory(new BasicHttpBinding(), new EndpointAddress("http://localhost/CreationEndpoint/Workflow1.xamlx")).CreateChannel(); + + Console.WriteLine("Workflow Instance created using CreationEndpoint added in config. Instance Id: {0}", client.Create(null)); + Console.WriteLine("Press return to exit ..."); + Console.ReadLine(); + } + catch (Exception ex) + { + Console.WriteLine(ex); + Console.ReadLine(); + } + } + } + } + ``` + +4. CreationEndpointClient を実行します。 出力の内容は次のようになります。 + + ```Output + + "Workflow Instance created using CreationEndpoint added in config. Instance Id: 0875dac0-2b8b-473e-b3cc-abcb235e9693 + Press return to exit ... + ``` + + > [!NOTE] + > ワークフローの出力は表示されません。これはコンソール出力を持たない IIS を使って実行しているためです。 + +## 使用例 + 以下はこのサンプルの完全なコードです。 + +```xaml + + + + + + + + + + True + + + + + + +``` + +```csharp +// CreationEndpointElement.cs +using System; +using System.Configuration; +using System.ServiceModel.Activities; +using System.ServiceModel.Configuration; +using System.ServiceModel.Description; +using Shared; + +namespace CreationEndpointTest +{ + //config element for CreationEndpoint + public class CreationEndpointElement : StandardEndpointElement + { + protected override Type EndpointType + { + get { return typeof(CreationEndpoint); } + } + + protected override ConfigurationPropertyCollection Properties + { + get + { + ConfigurationPropertyCollection properties = base.Properties; + properties.Add(new ConfigurationProperty("name", typeof(String), null, ConfigurationPropertyOptions.IsRequired)); + return properties; + } + } + + protected override ServiceEndpoint CreateServiceEndpoint(ContractDescription contractDescription) + { + return new CreationEndpoint(); + } + + protected override void OnApplyConfiguration(ServiceEndpoint endpoint, ChannelEndpointElement channelEndpointElement) + { + } + + protected override void OnApplyConfiguration(ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement) + { + } + + protected override void OnInitializeAndValidate(ChannelEndpointElement channelEndpointElement) + { + } + + protected override void OnInitializeAndValidate(ServiceEndpointElement serviceEndpointElement) + { + } + } + + public class CreationEndpointCollection : StandardEndpointCollectionElement + { + } +} + +``` + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +```csharp +// IWorkflowCreation.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ServiceModel; + +namespace Shared +{ + //service contract exposed from the endpoint + [ServiceContract(Name = "IWorkflowCreation")] + public interface IWorkflowCreation + { + [OperationContract(Name = "Create")] + Guid Create(IDictionary inputs); + + [OperationContract(Name = "CreateWithInstanceId", IsOneWay = true)] + void CreateWithInstanceId(IDictionary inputs, Guid instanceId); + } +} + +``` + +```csharp +// CreationEndpoint.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ServiceModel.Activities; +using System.ServiceModel.Channels; +using System.ServiceModel; +using System.Globalization; +using System.Diagnostics; + +namespace Shared +{ + public class CreationEndpoint : WorkflowHostingEndpoint + { + static Uri defaultBaseUri; + + public CreationEndpoint(Binding binding, EndpointAddress address) + : base(typeof(IWorkflowCreation), binding, address) { } + + public CreationEndpoint() + : this(GetDefaultBinding(), + new EndpointAddress(new Uri(DefaultBaseUri, new Uri(Guid.NewGuid().ToString(), UriKind.Relative)))) { } + + static Uri DefaultBaseUri + { + get + { + if (defaultBaseUri == null) + { + defaultBaseUri = new Uri(string.Format(CultureInfo.InvariantCulture, "net.pipe://localhost/workflowCreationEndpoint/{0}/{1}", + Process.GetCurrentProcess().Id, + AppDomain.CurrentDomain.Id)); + } + return defaultBaseUri; + } + } + + //defaults to NetNamedPipeBinding + public static Binding GetDefaultBinding() + { + return new NetNamedPipeBinding(NetNamedPipeSecurityMode.None) { TransactionFlow = true }; + } + + protected override Guid OnGetInstanceId(object[] inputs, OperationContext operationContext) + { + //Create was called by client + if (operationContext.IncomingMessageHeaders.Action.EndsWith("Create")) + { + return Guid.Empty; + } + + //CreateWithInstanceId was called by client + else if (operationContext.IncomingMessageHeaders.Action.EndsWith("CreateWithInstanceId")) + { + return (Guid)inputs[1]; + } + else + { + throw new InvalidOperationException("Invalid Action: " + operationContext.IncomingMessageHeaders.Action); + } + } + + protected override WorkflowCreationContext OnGetCreationContext(object[] inputs, OperationContext operationContext, Guid instanceId, WorkflowHostingResponseContext responseContext) + { + WorkflowCreationContext creationContext = new WorkflowCreationContext(); + if (operationContext.IncomingMessageHeaders.Action.EndsWith("Create")) + { + Dictionary arguments = (Dictionary)inputs[0]; + if (arguments != null && arguments.Count > 0) + { + foreach (KeyValuePair pair in arguments) + { + //arguments to pass to the workflow + creationContext.WorkflowArguments.Add(pair.Key, pair.Value); + } + } + //reply to client with instanceId + responseContext.SendResponse(instanceId, null); + } + else if (operationContext.IncomingMessageHeaders.Action.EndsWith("CreateWithInstanceId")) + { + Dictionary arguments = (Dictionary)inputs[0]; + if (arguments != null && arguments.Count > 0) + { + foreach (KeyValuePair pair in arguments) + { + //arguments to pass to workflow + creationContext.WorkflowArguments.Add(pair.Key, pair.Value); + } + } + } + else + { + throw new InvalidOperationException("Invalid Action: " + operationContext.IncomingMessageHeaders.Action); + } + return creationContext; + } + } +} + +``` + +```csharp +// CreationEndpointClient.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Shared; +using System.ServiceModel; + +namespace CreationClient +{ + class Program + { + static void Main(string[] args) + { + try + { + //client using BasicHttpBinding + IWorkflowCreation client = new ChannelFactory(new BasicHttpBinding(), new EndpointAddress("http://localhost/MyCreationEndpoint/Workflow1.xamlx")).CreateChannel(); + + Console.WriteLine("Workflow Instance created using CreationEndpoint added in config. Instance Id: {0}", client.Create(null)); + Console.WriteLine("Press return to exit ..."); + Console.ReadLine(); + } + catch (Exception ex) + { + Console.WriteLine(ex); + Console.ReadLine(); + } + + } + } + +} + +``` + + この例では `IWorkflowCreation` を実装するサービスを実装しないので、わかりにくい可能性があります。 これは、`CreationEndpoint` がユーザーに代わって実装するためです。 + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [インターネット インフォメーション サービスでのホスティング](../../../../docs/framework/wcf/feature-details/hosting-in-internet-information-services.md) + [インターネット インフォメーション サービス ホスティングのベスト プラクティス](../../../../docs/framework/wcf/feature-details/internet-information-services-hosting-best-practices.md) + [インターネット インフォメーション サービスのホスティング手順](../../../../docs/framework/wcf/samples/internet-information-service-hosting-instructions.md) + [Windows Workflow のアーキテクチャ](../../../../docs/framework/windows-workflow-foundation//architecture.md) + [WorkflowHostingEndpoint 再開ブックマーク](../../../../docs/framework/windows-workflow-foundation/samples/workflowhostingendpoint-resume-bookmark.md) + [ワークフロー デザイナーのホスト変更](../../../../docs/framework/windows-workflow-foundation//rehosting-the-workflow-designer.md) + [Windows Workflow の概要](../../../../docs/framework/windows-workflow-foundation//overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-a-managed-windows-service.md b/docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-a-managed-windows-service.md new file mode 100644 index 00000000000..bf699311ef6 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-a-managed-windows-service.md @@ -0,0 +1,145 @@ +--- +title: "方法 : マネージ Windows サービスで WCF サービスをホストする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8e37363b-4dad-4fb6-907f-73c30fac1d9a +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# 方法 : マネージ Windows サービスで WCF サービスをホストする +ここでは、Windows サービスでホストされる [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを作成するために必要な基本手順について説明します。このシナリオは、マネージ Windows サービスのホスト オプションによって有効になります。このサービスは、メッセージがアクティブ化されていない、セキュリティ保護された環境において、インターネット インフォメーション サービス \(IIS\) の外部でホストされ、長時間実行される [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスです。サービスの有効期限は代わりにオペレーティング システムによって制御されます。このホスト オプションは Windows のすべてのバージョンで使用できます。 + + Windows サービスは、Microsoft 管理コンソール \(MMC\) の Microsoft.ManagementConsole.SnapIn を使用して管理し、システムのブート時に自動的に起動するように構成できます。このホスト オプションは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをマネージ Windows サービスとしてホストするアプリケーション ドメイン \(AppDomain\) の登録から構成されているため、サービスのプロセス有効期間は Windows サービスのサービス コントロール マネージャー \(SCM\) によって制御されます。 + + サービス コードには、サービス コントラクトのサービス実装、Windows サービス クラス、およびインストーラー クラスが含まれています。サービス実装クラスである `CalculatorService` は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスです。一方、`CalculatorWindowsService` は Windows サービスです。Windows サービスとして限定するため、このクラスは `ServiceBase` を継承し、`OnStart` メソッドと `OnStop` メソッドを実装しています。`OnStart` では、`CalculatorService` 型の が作成され、開かれます。`OnStop` では、このサービスが停止され、破棄されます。ホストはベース アドレスをサービス ホストに提供する必要もあります。サービス ホストは、アプリケーション設定で構成されます。インストーラー クラスは を継承します。このクラスを使用すると、Installutil.exe ツールにより、プログラムを Windows サービスとしてインストールできます。 + +### サービスを構築してホスティング コードを提供する + +1. "Service" という新しい Visual Studio Console Application プロジェクトを作成します。 + +2. Program.cs を Service.cs に変更します。 + +3. 名前空間を Microsoft.ServiceModel.Samples に変更します。 + +4. 次のアセンブリへの参照を追加します。 + + - System.ServiceModel.dll + + - System.ServiceProcess.dll + + - System.Configuration.Install.dll + +5. 次の using ステートメントを Service.cs に追加します。 + + [!code-csharp[c_HowTo_HostInNTService#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinntservice/cs/service.cs#0)] + [!code-vb[c_HowTo_HostInNTService#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostinntservice/vb/service.vb#0)] + +6. 次のコードに示すように、`ICalculator` サービス コントラクトを定義します。 + + [!code-csharp[c_HowTo_HostInNTService#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinntservice/cs/service.cs#1)] + [!code-vb[c_HowTo_HostInNTService#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostinntservice/vb/service.vb#1)] + +7. 次のコードに示すように、`CalculatorService` というクラスにサービス コントラクトを実装します。 + + [!code-csharp[c_HowTo_HostInNTService#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinntservice/cs/service.cs#2)] + [!code-vb[c_HowTo_HostInNTService#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostinntservice/vb/service.vb#2)] + +8. クラスから継承する `CalculatorWindowsService` という新しいクラスを作成します。`serviceHost` というローカル変数を追加して、 インスタンスを参照します。`ServiceBase.Run(new CalculatorWindowsService)` を呼び出す `Main` というメソッドを定義します。 + + [!code-csharp[c_HowTo_HostInNTService#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinntservice/cs/service.cs#3)] + [!code-vb[c_HowTo_HostInNTService#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostinntservice/vb/service.vb#3)] + +9. 次のコードに示すように、新しい インスタンスを作成して開くことによって [OnStart\(String\ メソッドをオーバーライドします。 + + [!code-csharp[c_HowTo_HostInNTService#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinntservice/cs/service.cs#4)] + [!code-vb[c_HowTo_HostInNTService#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostinntservice/vb/service.vb#4)] + +10. 次のコードに示すように、 を閉じて メソッドをオーバーライドします。 + + [!code-csharp[c_HowTo_HostInNTService#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinntservice/cs/service.cs#5)] + [!code-vb[c_HowTo_HostInNTService#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostinntservice/vb/service.vb#5)] + +11. から継承し、`true` に設定された でマークされた `ProjectInstaller` という新しいクラスを作成します。これで、Installutil.exe ツールで Windows サービスをインストールできるようになります。 + + [!code-csharp[c_HowTo_HostInNTService#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinntservice/cs/service.cs#6)] + [!code-vb[c_HowTo_HostInNTService#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostinntservice/vb/service.vb#6)] + +12. プロジェクトを作成したときに生成された `Service` クラスを削除します。 + +13. アプリケーション構成ファイルをプロジェクトに追加します。ファイルの内容を次の構成 XML に置き換えます。 + + ```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + ``` + + **ソリューション エクスプローラー**で App.config ファイルを右クリックし、**\[プロパティ\]** をクリックします。**\[出力ディレクトリにコピー\]** の下で **\[新しい場合はコピーする\]** を選択します。 + + この例では、構成ファイルにエンドポイントを明示的に指定します。エンドポイントをサービスに追加しない場合、ランタイムによって既定のエンドポイントが追加されます。この例では、サービスには `true` に設定された があるので、サービスで公開メタデータも有効化されています。既定のエンドポイント、バインディング、および動作[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +### サービスをインストールして実行する + +1. ソリューションをビルドして `Service.exe` 実行可能ファイルを作成します。 + +2. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプトを開き、プロジェクト ディレクトリに移動します。コマンド プロンプトで「`installutil bin\service.exe`」と入力して、Windows サービスをインストールします。 + + > [!NOTE] + > [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプトを使用しない場合、`%WinDir%\Microsoft.NET\Framework\v4.0.` ディレクトリがシステム パスにあることを確認してください。 + + コマンド プロンプトで「`services.msc`」と入力してサービス コントロール マネージャー \(SCM\) にアクセスします。Windows サービスは、\[Services\] に "WCFWindowsServiceSample" として表示されます。Windows サービスが実行されている場合、クライアントに応答できるサービスは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのみです。サービスを開始するには、SCM でそのサービスを右クリックして \[Start\] をクリックするか、コマンド プロンプトで「**net start WCFWindowsServiceSample**」と入力します。 + +3. サービスを変更する場合は、まずそのサービスを停止してからアンインストールする必要があります。サービスを停止するには、SCM でそのサービスを右クリックして \[Stop\] をクリックするか、コマンド プロンプトで「**type net stop WCFWindowsServiceSample**」と入力します。Windows サービスを停止してクライアントを実行すると、クライアントがこのサービスにアクセスしようとしたときに 例外が発生することに注意してください。Windows サービスをアンインストールするには、コマンド プロンプトで「**installutil \/u bin\\service.exe**」と入力します。 + +## 使用例 + このトピックで使用されているコードの完全な一覧を次に示します。 + + [!code-csharp[c_HowTo_HostInNTService#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinntservice/cs/service.cs#8)] + [!code-vb[c_HowTo_HostInNTService#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostinntservice/vb/service.vb#8)] + + "自己ホスト" オプションと同様、Windows サービス ホスト環境では、ホスト コードをアプリケーションの一部として記述する必要があります。サービスはコンソール アプリケーションとして実装され、独自のホスティング コードが指定されます。インターネット インフォメーション サービス \(IIS\) でホストされる Windows プロセス アクティブ化サービス \(WAS\) など、他のホスト環境ではホスティング コードを記述する必要はありません。 + +## 参照 + [簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md) + [マネージ アプリケーションのホスト](../../../../docs/framework/wcf/feature-details/hosting-in-a-managed-application.md) + [ホスティング サービス](../../../../docs/framework/wcf/hosting-services.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md b/docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md new file mode 100644 index 00000000000..dc478cf1d2a --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md @@ -0,0 +1,115 @@ +--- +title: "方法 : IIS で WCF サービスをホストする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: b044b1c9-c1e5-4c9f-84d8-0f02f4537f8b +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# 方法 : IIS で WCF サービスをホストする +ここでは、インターネット インフォメーション サービス (IIS) でホストされる [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを作成するために必要な基本手順について説明します。 このトピックは、IIS に関する知識があり、IIS 管理ツールを使用して IIS アプリケーションを作成および管理する方法を理解していることを前提としています。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]IIS を参照してください[インターネット インフォメーション サービス](http://go.microsoft.com/fwlink/?LinkId=132449)A [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] IIS 環境で実行されているサービスがプロセスのリサイクル、アイドル シャット ダウン、処理状況の監視、およびメッセージに基づくアクティベーションなどの IIS 機能を最大限に活用します。 このホスト オプションでは、IIS が正しく構成されている必要がありますが、アプリケーションの一部としてホスト コードを書く必要はありません。 IIS ホストは、HTTP トランスポートでのみ使用できます。 + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)]どのように[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]と[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)]操作は、「 [WCF サービスと ASP.NET](../../../../docs/framework/wcf/feature-details/wcf-services-and-aspnet.md)します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]セキュリティの構成を参照してください[セキュリティ](../../../../docs/framework/wcf/feature-details/security.md)します。 + + この例のソースのコピーを次を参照してください。 [IIS は、インラインのコードを使用してホスト](../../../../docs/framework/wcf/samples/iis-hosting-using-inline-code.md)します。 + +### IIS でホストされるサービスを作成するには + +1. コンピューターに IIS がインストールされ、実行されていることを確認します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]インストールと IIS の構成を参照してください[のインストールと IIS 7.0 の構成。](http://go.microsoft.com/fwlink/?LinkID=132128) + +2. アプリケーション ファイル用に "IISHostedCalcService" という新しいフォルダーを作成し、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] がそのフォルダーの内容にアクセスできることを確認します。次に、IIS 管理ツールを使用して、このアプリケーション ディレクトリに物理的に配置する新しい IIS アプリケーションを作成します。 アプリケーション ディレクトリのエイリアスを作成する場合は、"IISHostedCalc" を使用します。 + +3. "service.svc" という新しいファイルをアプリケーション ディレクトリに作成します。 次を追加することでこのファイルを編集@ServiceHost要素。 + + ``` + <%@ServiceHost language=c# Debug="true" Service="Microsoft.ServiceModel.Samples.CalculatorService"%> + ``` + +4. アプリケーション ディレクトリ内に App_Code サブディレクトリを作成します。 + +5. App_Code サブディレクトリに Service.cs というコード ファイルを作成します。 + +6. Service.cs ファイルの先頭に次の using ステートメントを追加します。 + + ``` + using System; + using System.ServiceModel; + ``` + +7. using ステートメントの後に、次の名前空間宣言を追加します。 + + ``` + namespace Microsoft.ServiceModel.Samples + { + } + ``` + +8. 次のコードに示すように、名前空間宣言内にサービス コントラクトを定義します。 + + [!code-csharp[c_HowTo_HostInIIS#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostiniis/cs/source.cs#11)] + [!code-vb[c_HowTo_HostInIIS#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostiniis/vb/source.vb#11)] + +9. 次のコードに示すように、サービス コントラクト定義の後に、サービス コントラクトを実装します。 + + [!code-csharp[c_HowTo_HostInIIS#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostiniis/cs/source.cs#12)] + [!code-vb[c_HowTo_HostInIIS#12](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostiniis/vb/source.vb#12)] + +10. アプリケーション ディレクトリ内に "Web.config" というファイルを作成し、次の構成コードをファイルに追加します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャは、実行時にこの情報を使用して、クライアント アプリケーションが通信できるエンドポイントを作成します。 + + ```xml + + + + + + + + + + + + + + + + + + + ``` + + この例では、構成ファイルにエンドポイントを明示的に指定します。 エンドポイントをサービスに追加しない場合、ランタイムによって既定のエンドポイントが追加されます。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]既定のエンドポイント、バインディング、および動作を参照してください[簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md)と[WCF サービスの構成を簡略化](../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)します。 + +11. サービスが正確にホストされるようにするには、Internet Explorer のインスタンスを開き、サービスの URL: `http://localhost/IISHostedCalc/Service.svc` を参照します。 + +## 例 + IIS がホストする電卓サービスのコードの完全な一覧を次に示します。 + + [!code-csharp[C_HowTo_HostInIIS#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostiniis/cs/source.cs#1)] + [!code-vb[C_HowTo_HostInIIS#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_hostiniis/vb/source.vb#1)] + + [!code[c_HowTo_HostInIIS#100](../../../../samples/snippets/common/VS_Snippets_CFX/c_howto_hostiniis/common/web.config#100)] + +## 関連項目 + [インターネット インフォメーション サービスをホストしています。](../../../../docs/framework/wcf/feature-details/hosting-in-internet-information-services.md) + [ホスティング サービス](../../../../docs/framework/wcf/hosting-services.md) + [WCF サービスと ASP.NET](../../../../docs/framework/wcf/feature-details/wcf-services-and-aspnet.md) + [セキュリティ](../../../../docs/framework/wcf/feature-details/security.md) + [Windows Server App Fabric の機能をホストしています。](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-was.md b/docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-was.md new file mode 100644 index 00000000000..bdda3acf34a --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-was.md @@ -0,0 +1,110 @@ +--- +title: "方法 : WAS で WCF サービスをホストする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9e3e213e-2dce-4f98-81a3-f62f44caeb54 +caps.latest.revision: 25 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 25 +--- +# 方法 : WAS で WCF サービスをホストする +ここでは、Windows プロセス アクティブ化サービス (WAS) でホストされる [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを作成するために必要な基本手順について説明します。 WAS は、HTTP 以外のトランスポート プロトコルで動作するインターネット インフォメーション サービス (IIS) 機能を一般化した新しいプロセス アクティブ化サービスです。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、リスナー アダプター インターフェイスを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされる HTTP 以外のプロトコル (TCP、名前付きパイプ、メッセージ キューなど) を介して受信されるアクティブ化要求を伝達します。 + + このホスト オプションでは、WAS アクティブ化コンポーネントのインストールと構成が正しく行われている必要がありますが、アプリケーションの一部としてホスト コードを記述する必要はありません。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]インストールと、WAS の構成を参照してください。[方法: WCF アクティブ化コンポーネントの構成のインストールおよび](../../../../docs/framework/wcf/feature-details/how-to-install-and-configure-wcf-activation-components.md)です。 + +> [!WARNING] +> Web サーバーの要求処理パイプラインをクラシック モードに設定すると、WAS のアクティブ化がサポートされません。 WAS のアクティブ化を使用する場合は、Web サーバーの要求処理パイプラインを統合モードに設定する必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが WAS でホストされている場合、標準バインディングは通常の方法で使用されます。 ただしを使用する場合、 WAS でホストされるサービスを構成する、制限を遵守する必要があります。 つまり、異なるエンドポイントが同じトランスポートを使用する場合、次の&7; つのプロパティでバインディング設定が一致する必要があります。 + +- ConnectionBufferSize + +- ChannelInitializationTimeout + +- MaxPendingConnections + +- MaxOutputDelay + +- MaxPendingAccepts + +- ConnectionPoolSettings.IdleTimeout + +- ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint + + それ以外の場合、まず初期化されているエンドポイント常に、これらのプロパティの値を決定し、後で追加したエンドポイントをスローするこれらの設定と一致しない場合。 + + この例のソースのコピーを次を参照してください。 [TCP のアクティブ化](../../../../docs/framework/wcf/samples/tcp-activation.md)します。 + +### WAS でホストされる基本サービスを作成するには + +1. サービスの種類にサービス コントラクトを定義します。 + + [!code-csharp[C_HowTo_HostInWAS#1121](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinwas/cs/service.cs#1121)] + +2. サービス クラスにサービス コントラクトを実装します。 アドレス情報とバインディング情報はサービスの実装内では指定されないことに注意してください。 同様に、コードは構成ファイルから情報を取得する必要はありません。 + + [!code-csharp[C_HowTo_HostInWAS#1122](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinwas/cs/service.cs#1122)] + +3. 定義する Web.config ファイルを作成、 で使用するバインディングを`CalculatorService`エンドポイント。 + + ```xml + + + + + + + + + + + + + ``` + +4. 次のコードを含む Service.svc ファイルを作成します。 + + ``` + <%@ServiceHost language=c# Service="CalculatorService" %> + ``` + +5. IIS 仮想ディレクトリに Service.svc ファイルを配置します。 + +### サービスを使用するクライアントを作成するには + +1. 使用[ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)を使用してサービス メタデータからコードを生成します。 + + ``` + Svcutil.exe + ``` + +2. 生成されたクライアントには、クライアントの実装時に満たされなければならないサービス コントラクトを定義する `ICalculator` インターフェイスが含まれます。 + + [!code-csharp[C_HowTo_HostInWAS#1221](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinwas/cs/client.cs#1221)] + +3. 生成されたクライアント アプリケーションは `ClientCalculator` も実装します。 このサービスの実装では、アドレス情報とバインディング情報が指定されないことに注意してください。 同様に、コードは構成ファイルから情報を取得する必要はありません。 + + [!code-csharp[C_HowTo_HostInWAS#1222](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinwas/cs/client.cs#1222)] + +4. 使用するクライアントの構成、 も Svcutil.exe によって生成されます。 Visual Studio を使用する場合は、このファイルの名前は App.config ファイル内で指定する必要があります。 + + [!code[C_HowTo_HostInWAS#2211](../../../../samples/snippets/common/VS_Snippets_CFX/c_howto_hostinwas/common/app.config#2211)] + +5. アプリケーションで `ClientCalculator` のインスタンスを作成し、サービス操作を呼び出します。 + + [!code-csharp[C_HowTo_HostInWAS#1223](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_hostinwas/cs/client.cs#1223)] + +6. クライアントをコンパイルして実行します。 + +## 関連項目 + [TCP のアクティブ化](../../../../docs/framework/wcf/samples/tcp-activation.md) + [Windows Server App Fabric の機能をホストしています。](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-host-a-workflow-service-with-windows-server-app-fabric.md b/docs/framework/wcf/feature-details/how-to-host-a-workflow-service-with-windows-server-app-fabric.md new file mode 100644 index 00000000000..9b1f166d57b --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-host-a-workflow-service-with-windows-server-app-fabric.md @@ -0,0 +1,104 @@ +--- +title: "方法 : Windows Server AppFabric を使用してワークフロー サービスをホストする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 83b62cce-5fc2-4c6d-b27c-5742ba3bac73 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 方法 : Windows Server AppFabric を使用してワークフロー サービスをホストする +AppFabric でのワークフロー サービスのホスティングは IIS\/WAS でのホスティングに似ています。唯一の違いは、ワークフロー サービスの投入、監視、および管理のために AppFabric に用意されているツールです。このトピックでは「[長時間のワークフロー サービスの作成](../../../../docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md)」で作成されたワークフロー サービスを使用します。ワークフロー サービスの作成方法はそちらのトピックで説明されています。このトピックでは、AppFabric を使用したワークフロー サービスのホスティング方法を説明します。Windows Server AppFabric [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、[Windows Server AppFabric のドキュメント](http://go.microsoft.com/fwlink/?LinkID=193037&clcid=0x409)を参照してください。下の手順を完了する前に、Windows Server AppFabric がインストールされていることを確認してください。それには、Internet Information Services \(inetmgr.exe\) を開いて、**\[接続\]** ビューでサーバー名をクリックし、\[サイト\] をクリックして、**\[既定の Web サイト\]** をクリックします。画面の右側に **\[AppFabric\]** というセクションが表示されます。\(右側のペインの一番上に表示される\) このセクションが表示されないのであれば、AppFabric がインストールされていません。Windows Server AppFabric のインストール[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows Server AppFabric のインストール](http://go.microsoft.com/fwlink/?LinkId=193136)」を参照してください。 + +### 単純なワークフロー サービスの作成 + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を開き、「[長時間のワークフロー サービスの作成](../../../../docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md)」のトピックで作成した OrderProcessing ソリューションを読み込みます。 + +2. **\[OrderService\]** プロジェクトを右クリックし、**\[プロパティ\]** をクリックして、**\[Web\]** タブをクリックします。 + +3. プロパティ ページの **\[開始動作\]** セクションで **\[ページを指定する\]** をクリックして、編集ボックスに「Service1.xamlx」と入力します。 + +4. プロパティ ページの **\[サーバー\]** セクションで **\[ローカル IIS Web サーバーを使用する\]** をクリックして、「`http://localhost/OrderService`」と入力します。 + +5. **\[仮想ディレクトリの作成\]** ボタンをクリックします。これで新しい仮想ディレクトリが作成され、プロジェクトが作成されるときに必要なファイルが仮想ディレクトリにコピーされるようにプロジェクトが設定されます。または、仮想ディレクトリに .xamlx、web.config、および必要な DLL を手動でコピーすることもできます。 + +### Windows Server AppFabric でホストされるワークフロー サービスの構成 + +1. インターネット インフォメーション サービス マネージャー \(inetmgr.exe\) を開きます。 + +2. **\[接続\]** ペインで OrderService 仮想ディレクトリに移動します。 + +3. OrderService を右クリックし、**\[WCF サービスと WF サービスの管理\]**、**\[構成\]** の順にクリックします。**\[アプリケーションの WCF と WF の構成\]** ダイアログ ボックスが表示されます。 + +4. **\[全般\]** タブをクリックして、次のスクリーン ショットに示すようなアプリケーションに関する全般的な情報を表示します。 + + ![App Fabric の構成ダイアログの [全般] タブ](../../../../docs/framework/wcf/feature-details/media/appfabricconfiguration-general.gif "AppFabricConfiguration\-General") + +5. **\[監視\]** タブをクリックします。次のスクリーン ショットに示すような各種の監視設定が表示されます。 + + ![App Fabric の構成の [監視] タブ](../../../../docs/framework/wcf/feature-details/media/appfabricconfiguration-monitoring.gif "AppFabricConfiguration\-Monitoring") + + AppFabric におけるワークフロー サービスの監視を構成する手順[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、AppFabric ドキュメントの「[監視を構成する](http://go.microsoft.com/fwlink/?LinkId=193153)」を参照してください。 + +6. **\[ワークフローの永続化\]** タブをクリックします。ここでは、次のスクリーン ショットに示すように、AppFabric の既定の永続化プロバイダーをアプリケーションで使用するように構成できます。 + + ![App Fabric の構成 - 永続化](../../../../docs/framework/wcf/feature-details/media/appfabricconfiguration-persistence.gif "AppFabricConfiguration\-Persistence") + + Windows Server AppFabric におけるワークフロー永続化を構成する手順[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、AppFabric ドキュメントの「[ワークフロー永続化を構成する](http://go.microsoft.com/fwlink/?LinkId=193148)」を参照してください。 + +7. **\[ワークフロー ホスト管理\]** タブをクリックします。ここでは、次のスクリーン ショットに見られるように、アイドル状態のワークフロー サービス インスタンスをいつアンロードして永続化するかを指定できます。 + + ![App Fabric の構成の [ワークフロー ホスト管理] タブ](../../../../docs/framework/wcf/feature-details/media/appfabricconfiguration-management.gif "AppFabricConfiguration\-Management") + + ワークフロー ホスト管理の構成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、AppFabric ドキュメントの「[ワークフロー ホスト管理を構成する](http://go.microsoft.com/fwlink/?LinkId=193151)」を参照してください。 + +8. **\[自動開始\]** タブをクリックします。ここでは、次のスクリーン ショットに示すように、アプリケーションでのワークフロー サービスに対する自動開始の設定を指定できます。 + + ![App Fabric の自動開始構成](../../../../docs/framework/wcf/feature-details/media/appfabricconfigurationautostart.gif "AppFabricConfigurationAutostart") + + 自動開始の構成手順[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、AppFabric ドキュメントの「[自動開始の構成](http://go.microsoft.com/fwlink/?LinkId=193150)」を参照してください。 + +9. **\[スロットル\]** タブをクリックします。ここでは、次のスクリーン ショットに示すように、ワークフロー サービスのスロットル設定を構成できます。 + + ![App Fabric の構成の調整](../../../../docs/framework/wcf/feature-details/media/appfabricconfigurationthrottling.gif "AppFabricConfigurationThrottling") + + スロットルの構成手順[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、AppFabric ドキュメントの「[スロットルを構成する](http://go.microsoft.com/fwlink/?LinkId=193149)」を参照してください。 + +10. **\[セキュリティ\]** タブをクリックします。ここでは、次のスクリーン ショットに示すように、アプリケーションに対するセキュリティの設定を構成できます。 + + ![App Fabric のセキュリティ構成](../../../../docs/framework/wcf/feature-details/media/appfabricconfiguration-security.gif "AppFabricConfiguration\-Security") + + Windows Server AppFabric でのセキュリティの構成手順[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、AppFabric ドキュメントの「[セキュリティの構成](http://go.microsoft.com/fwlink/?LinkId=193152)」を参照してください。 + +### Windows Server AppFabric の使用 + +1. ソリューションを作成して、仮想ディレクトリに必要なファイルをコピーします。 + +2. OrderClient プロジェクトを右クリックし、**\[デバッグ\]**、**\[新しいインスタンスを開始\]** の順にクリックして、クライアント アプリケーションを実行します。 + +3. クライアントが実行され、Visual Studio により **\[アタッチのセキュリティ警告\]** ダイアログ ボックスが表示されたら、**\[アタッチしない\]** ボタンをクリックします。これにより、IIS プロセスにアタッチしてデバッグしないように Visual Studio に指示します。 + +4. クライアント アプリケーションは直ちにワークフロー サービスを呼び出して待機します。ワークフロー サービスはアイドル状態になり永続化されます。これは、インターネット インフォメーション サービス \(inetmgr.exe\) を開始して、\[接続\] ペインで \[OrderService\] に移動し、それを選択することによって確認できます。次に、右側のペインで \[AppFabric ダッシュボード\] のアイコンをクリックします。次のスクリーン ショットに示すように、\[永続的な WF インスタンス\] の下に、永続化されたワークフロー サービスのインスタンスが 1 つ表示されます。 + + ![App Fabric ダッシュボード](../../../../docs/framework/wcf/feature-details/media/appfabricdashboard.gif "AppFabricDashboard") + + **\[WF インスタンスの履歴\]** には、ワークフロー サービスのアクティベーション数、ワークフロー サービス インスタンスの完了数、ワークフロー インスタンスの失敗数など、そのワークフロー サービスに関する情報が表示されます。\[アクティブなインスタンスまたはアイドル状態のインスタンス\] の下に表示されるリンクをクリックすると、次のスクリーン ショットに示すように、アイドル状態のワークフロー インスタンスの詳細情報が表示されます。 + + ![永続化ワークフロー インスタンスの詳細](../../../../docs/framework/wcf/feature-details/media/persisteddetail.gif "PersistedDetail") + + Windows Server AppFabric の機能に関する詳細については、「[AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkID=193143&clcid=0x409)」を参照してください。 + +## 参照 + [長時間のワークフロー サービスの作成](../../../../docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=193143) + [Windows Server AppFabric のインストール](http://go.microsoft.com/fwlink/?LinkId=193136) + [Windows Server AppFabric のドキュメント](http://go.microsoft.com/fwlink/?LinkID=193037&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-implement-a-discovery-proxy.md b/docs/framework/wcf/feature-details/how-to-implement-a-discovery-proxy.md new file mode 100644 index 00000000000..6f2400e18e4 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-implement-a-discovery-proxy.md @@ -0,0 +1,1013 @@ +--- +title: "探索プロキシを実装する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 78d70e0a-f6c3-4cfb-a7ca-f66ebddadde0 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# 探索プロキシを実装する方法 +このトピックでは、探索プロキシの実装方法について説明します。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の探索機能[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WCF Discovery の概要](../../../../docs/framework/wcf/feature-details/wcf-discovery-overview.md)」を参照してください。探索プロキシを実装するには、抽象クラス を拡張するクラスを作成します。このサンプルでは、他の多くのサポート クラスも定義され、使用されています。`OnResolveAsyncResult`、`OnFindAsyncResult`、および `AsyncResult`このクラスは、 インターフェイスを実装します。[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[System.IAsyncResult インターフェイス](http://go.microsoft.com/fwlink/?LinkId=128519)」を参照してください。 + + このトピックでは、探索プロキシの実装を 3 つの主要な部分に分けて説明します。 + +- データ ストアを含み、抽象クラス を拡張するクラスを定義する。 + +- ヘルパー クラス `AsyncResult` を実装する。 + +- 探索プロキシをホストする。 + +### 新しいコンソール アプリケーション プロジェクトを作成するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を起動します。 + +2. 新しいコンソール アプリケーション プロジェクトを作成します。プロジェクトに「`DiscoveryProxy`」という名前を付け、ソリューションに「`DiscoveryProxyExample`」という名前を付けます。 + +3. プロジェクトに次の参照を追加します。 + + 1. System.ServiceModel.dll + + 2. System.Servicemodel.Discovery.dll + + > [!CAUTION] + > 必ず、これらのアセンブリのバージョン 4.0 以降を参照してください。 + +### ProxyDiscoveryService クラスを実装するには + +1. 新しいコード ファイルをプロジェクトに追加し、DiscoveryProxy.cs という名前を付けます。 + +2. 次の `using` ステートメントを DiscoveryProxy.cs に追加します。 + + ``` + using System; + using System.Collections.Generic; + using System.ServiceModel; + using System.ServiceModel.Discovery; + using System.Xml; + ``` + +3. から `DiscoveryProxyService` を派生させます。下の例に示すように、`ServiceBehavior` 属性をクラスに適用します。 + + ``` + // Implement DiscoveryProxy by extending the DiscoveryProxy class and overriding the abstract methods + [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] + public class DiscoveryProxyService : DiscoveryProxy + { + } + + ``` + +4. `DiscoveryProxy` クラス内で、登録済みサービスを保持するディクショナリを定義します。 + + ``` + // Repository to store EndpointDiscoveryMetadata. + Dictionary onlineServices; + + ``` + +5. ディクショナリを初期化するコンストラクターを定義します。 + + ``` + public DiscoveryProxyService() + { + this.onlineServices = new Dictionary(); + } + + ``` + +### 探索プロキシ キャッシュの更新に使用するメソッドを定義するには + +1. `AddOnlineservice` メソッドを実装して、サービスをキャッシュに追加します。これは、プロキシがアナウンス メッセージを受け取るたびに呼び出されます。 + + ``` + void AddOnlineService(EndpointDiscoveryMetadata endpointDiscoveryMetadata) + { + lock (this.onlineServices) + { + this.onlineServices[endpointDiscoveryMetadata.Address] = endpointDiscoveryMetadata; + } + + PrintDiscoveryMetadata(endpointDiscoveryMetadata, "Adding"); + } + + ``` + +2. キャッシュからサービスを削除するのに使用する `RemoveOnlineService` メソッドを実装します。 + + ``` + void RemoveOnlineService(EndpointDiscoveryMetadata endpointDiscoveryMetadata) + { + if (endpointDiscoveryMetadata != null) + { + lock (this.onlineServices) + { + this.onlineServices.Remove(endpointDiscoveryMetadata.Address); + } + + PrintDiscoveryMetadata(endpointDiscoveryMetadata, "Removing"); + } + } + + ``` + +3. サービスをディクショナリ内のサービスと照合する、`MatchFromOnlineService` メソッドを実装します。 + + ``` + void MatchFromOnlineService(FindRequestContext findRequestContext) + { + lock (this.onlineServices) + { + foreach (EndpointDiscoveryMetadata endpointDiscoveryMetadata in this.onlineServices.Values) + { + if (findRequestContext.Criteria.IsMatch(endpointDiscoveryMetadata)) + { + findRequestContext.AddMatchingEndpoint(endpointDiscoveryMetadata); + } + } + } + } + + ``` + + ``` + EndpointDiscoveryMetadata MatchFromOnlineService(ResolveCriteria criteria) + { + EndpointDiscoveryMetadata matchingEndpoint = null; + lock (this.onlineServices) + { + foreach (EndpointDiscoveryMetadata endpointDiscoveryMetadata in this.onlineServices.Values) + { + if (criteria.Address == endpointDiscoveryMetadata.Address) + { + matchingEndpoint = endpointDiscoveryMetadata; + } + } + } + return matchingEndpoint; + } + + ``` + +4. 探索プロキシの処理に関するコンソール テキスト出力をユーザーに提供する、`PrintDiscoveryMetadata` メソッドを実装します。 + + ``` + void PrintDiscoveryMetadata(EndpointDiscoveryMetadata endpointDiscoveryMetadata, string verb) + { + Console.WriteLine("\n**** " + verb + " service of the following type from cache. "); + foreach (XmlQualifiedName contractName in endpointDiscoveryMetadata.ContractTypeNames) + { + Console.WriteLine("** " + contractName.ToString()); + break; + } + Console.WriteLine("**** Operation Completed"); + } + + ``` + +5. 次の AsyncResult クラスを DiscoveryProxyService に追加します。これらのクラスは、非同期操作の各結果を区別するために使用されます。 + + ``` + sealed class OnOnlineAnnouncementAsyncResult : AsyncResult + { + public OnOnlineAnnouncementAsyncResult(AsyncCallback callback, object state) + : base(callback, state) + { + this.Complete(true); + } + + public static void End(IAsyncResult result) + { + AsyncResult.End(result); + } + } + + sealed class OnOfflineAnnouncementAsyncResult : AsyncResult + { + public OnOfflineAnnouncementAsyncResult(AsyncCallback callback, object state) + : base(callback, state) + { + this.Complete(true); + } + + public static void End(IAsyncResult result) + { + AsyncResult.End(result); + } + } + + sealed class OnFindAsyncResult : AsyncResult + { + public OnFindAsyncResult(AsyncCallback callback, object state) + : base(callback, state) + { + this.Complete(true); + } + + public static void End(IAsyncResult result) + { + AsyncResult.End(result); + } + } + + sealed class OnResolveAsyncResult : AsyncResult + { + EndpointDiscoveryMetadata matchingEndpoint; + + public OnResolveAsyncResult(EndpointDiscoveryMetadata matchingEndpoint, AsyncCallback callback, object state) + : base(callback, state) + { + this.matchingEndpoint = matchingEndpoint; + this.Complete(true); + } + + public static EndpointDiscoveryMetadata End(IAsyncResult result) + { + OnResolveAsyncResult thisPtr = AsyncResult.End(result); + return thisPtr.matchingEndpoint; + } + } + + ``` + +### 探索プロキシ機能を実装するメソッドを定義するには + +1. メソッドをオーバーライドします。このメソッドは、探索プロキシがオンライン アナウンス メッセージを受け取ると呼び出されます。 + + ``` + // OnBeginOnlineAnnouncement method is called when a Hello message is received by the Proxy + protected override IAsyncResult OnBeginOnlineAnnouncement(DiscoveryMessageSequence messageSequence, EndpointDiscoveryMetadata endpointDiscoveryMetadata, AsyncCallback callback, object state) + { + this.AddOnlineService(endpointDiscoveryMetadata); + return new OnOnlineAnnouncementAsyncResult(callback, state); + } + + ``` + +2. メソッドをオーバーライドします。このメソッドは、探索プロキシがアナウンス メッセージの処理を終了すると呼び出されます。 + + ``` + protected override void OnEndOnlineAnnouncement(IAsyncResult result) + { + OnOnlineAnnouncementAsyncResult.End(result); + } + + ``` + +3. メソッドをオーバーライドします。このメソッドは、探索プロキシがオフライン アナウンス メッセージを受け取ると呼び出されます。 + + ``` + // OnBeginOfflineAnnouncement method is called when a Bye message is received by the Proxy + protected override IAsyncResult OnBeginOfflineAnnouncement(DiscoveryMessageSequence messageSequence, EndpointDiscoveryMetadata endpointDiscoveryMetadata, AsyncCallback callback, object state) + { + this.RemoveOnlineService(endpointDiscoveryMetadata); + return new OnOfflineAnnouncementAsyncResult(callback, state); + } + + ``` + +4. メソッドをオーバーライドします。このメソッドは、探索プロキシがオフライン アナウンス メッセージの処理を終了すると呼び出されます。 + + ``` + protected override void OnEndOfflineAnnouncement(IAsyncResult result) + { + OnOfflineAnnouncementAsyncResult.End(result); + } + + ``` + +5. メソッドをオーバーライドします。このメソッドは、探索プロキシが検索要求を受け取ると呼び出されます。 + + ``` + // OnBeginFind method is called when a Probe request message is received by the Proxy + protected override IAsyncResult OnBeginFind(FindRequestContext findRequestContext, AsyncCallback callback, object state) + { + this.MatchFromOnlineService(findRequestContext); + return new OnFindAsyncResult(callback, state); + } + protected override IAsyncResult OnBeginFind(FindRequest findRequest, AsyncCallback callback, object state) + { + Collection matchingEndpoints = MatchFromCache(findRequest.Criteria); + return new OnFindAsyncResult( + matchingEndpoints, + callback, + state); + } + ``` + +6. メソッドをオーバーライドします。このメソッドは、探索プロキシが検索要求の処理を終了すると呼び出されます。 + + ``` + protected override void OnEndFind(IAsyncResult result) + { + OnFindAsyncResult.End(result); + } + + ``` + +7. メソッドをオーバーライドします。このメソッドは、探索プロキシが解決メッセージを受け取ると呼び出されます。 + + ``` + // OnBeginFind method is called when a Resolve request message is received by the Proxy + protected override IAsyncResult OnBeginResolve(ResolveCriteria resolveCriteria, AsyncCallback callback, object state) + { + return new OnResolveAsyncResult(this.MatchFromOnlineService(resolveCriteria), callback, state); + } + protected override IAsyncResult OnBeginResolve(ResolveRequest resolveRequest, AsyncCallback callback, object state) + { + return new OnResolveAsyncResult( + this.proxy.MatchFromOnlineService(resolveRequest.Criteria), + callback, + state); + } + ``` + +8. メソッドをオーバーライドします。このメソッドは、探索プロキシが解決メッセージの処理を終了すると呼び出されます。 + + ``` + protected override EndpointDiscoveryMetadata OnEndResolve(IAsyncResult result) + { + return OnResolveAsyncResult.End(result); + } + + ``` + + OnBegin..\/ OnEnd..メソッドは、以降の探索操作のロジックを提供します。たとえば、 メソッドおよび メソッドは、探索プロキシの検索ロジックを実装します。探索プロキシがプローブ メッセージを受け取ると、これらのメソッドが実行されて、クライアントに応答が返されます。必要に応じて、検索ロジックを変更できます。たとえば、アルゴリズムによるカスタム スコープ一致や、検索操作の一環として解析するアプリケーション固有の XML メタデータを組み込むことができます。 + +### AsyncResult クラスを実装するには + +1. 各種の非同期結果クラスを派生させるために使用する抽象基本クラス AsyncResult を定義します。 + +2. AsyncResult.cs という名前の新しいコード ファイルを作成します。 + +3. 次の `using` ステートメントを AsyncResult.cs に追加します。 + + ``` + using System; + using System.Threading; + + ``` + +4. 次の AsyncResult クラスを追加します。 + + ``` + abstract class AsyncResult : IAsyncResult + { + AsyncCallback callback; + bool completedSynchronously; + bool endCalled; + Exception exception; + bool isCompleted; + ManualResetEvent manualResetEvent; + object state; + object thisLock; + + protected AsyncResult(AsyncCallback callback, object state) + { + this.callback = callback; + this.state = state; + this.thisLock = new object(); + } + + public object AsyncState + { + get + { + return state; + } + } + + public WaitHandle AsyncWaitHandle + { + get + { + if (manualResetEvent != null) + { + return manualResetEvent; + } + lock (ThisLock) + { + if (manualResetEvent == null) + { + manualResetEvent = new ManualResetEvent(isCompleted); + } + } + return manualResetEvent; + } + } + + public bool CompletedSynchronously + { + get + { + return completedSynchronously; + } + } + + public bool IsCompleted + { + get + { + return isCompleted; + } + } + + object ThisLock + { + get + { + return this.thisLock; + } + } + + protected static TAsyncResult End(IAsyncResult result) + where TAsyncResult : AsyncResult + { + if (result == null) + { + throw new ArgumentNullException("result"); + } + + TAsyncResult asyncResult = result as TAsyncResult; + + if (asyncResult == null) + { + throw new ArgumentException("Invalid async result.", "result"); + } + + if (asyncResult.endCalled) + { + throw new InvalidOperationException("Async object already ended."); + } + + asyncResult.endCalled = true; + + if (!asyncResult.isCompleted) + { + asyncResult.AsyncWaitHandle.WaitOne(); + } + + if (asyncResult.manualResetEvent != null) + { + asyncResult.manualResetEvent.Close(); + } + + if (asyncResult.exception != null) + { + throw asyncResult.exception; + } + + return asyncResult; + } + + protected void Complete(bool completedSynchronously) + { + if (isCompleted) + { + throw new InvalidOperationException("This async result is already completed."); + } + + this.completedSynchronously = completedSynchronously; + + if (completedSynchronously) + { + this.isCompleted = true; + } + else + { + lock (ThisLock) + { + this.isCompleted = true; + if (this.manualResetEvent != null) + { + this.manualResetEvent.Set(); + } + } + } + + if (callback != null) + { + callback(this); + } + } + + protected void Complete(bool completedSynchronously, Exception exception) + { + this.exception = exception; + Complete(completedSynchronously); + } + } + + ``` + +### DiscoveryProxy をホストするには + +1. DiscoveryProxyExample プロジェクトで Program.cs ファイルを開きます。 + +2. 次の `using` ステートメントを追加します。 + + ``` + using System; + using System.ServiceModel; + using System.ServiceModel.Discovery; + ``` + +3. `Main()` メソッド内に次のコードを追加します。これにより、`DiscoveryProxy` クラスのインスタンスが作成されます。 + + ``` + Uri probeEndpointAddress = new Uri("net.tcp://localhost:8001/Probe"); + Uri announcementEndpointAddress = new Uri("net.tcp://localhost:9021/Announcement"); + + // Host the DiscoveryProxy service + ServiceHost proxyServiceHost = new ServiceHost(new DiscoveryProxyService()); + + ``` + +4. 次に、探索エンドポイントとアナウンス エンドポイントを追加する、次のコードを追加します。 + + ``` + try + { + // Add DiscoveryEndpoint to receive Probe and Resolve messages + DiscoveryEndpoint discoveryEndpoint = new DiscoveryEndpoint(new NetTcpBinding(), new EndpointAddress(probeEndpointAddress)); + discoveryEndpoint.IsSystemEndpoint = false; + + // Add AnnouncementEndpoint to receive Hello and Bye announcement messages + AnnouncementEndpoint announcementEndpoint = new AnnouncementEndpoint(new NetTcpBinding(), new EndpointAddress(announcementEndpointAddress)); + + proxyServiceHost.AddServiceEndpoint(discoveryEndpoint); + proxyServiceHost.AddServiceEndpoint(announcementEndpoint); + + proxyServiceHost.Open(); + + Console.WriteLine("Proxy Service started."); + Console.WriteLine(); + Console.WriteLine("Press to terminate the service."); + Console.WriteLine(); + Console.ReadLine(); + + proxyServiceHost.Close(); + } + catch (CommunicationException e) + { + Console.WriteLine(e.Message); + } + catch (TimeoutException e) + { + Console.WriteLine(e.Message); + } + + if (proxyServiceHost.State != CommunicationState.Closed) + { + Console.WriteLine("Aborting the service..."); + proxyServiceHost.Abort(); + } + + ``` + + これで、探索プロキシの実装が完了しました。次に、「[探索プロキシで登録される探索可能なサービスの実装方法](../../../../docs/framework/wcf/feature-details/discoverable-service-that-registers-with-the-discovery-proxy.md)」に進みます。 + +## 使用例 + このトピックで使用するコード全体の一覧を次に示します。 + +``` +// DiscoveryProxy.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.ServiceModel; +using System.ServiceModel.Discovery; +using System.Xml; + +namespace Microsoft.Samples.Discovery +{ + // Implement DiscoveryProxy by extending the DiscoveryProxy class and overriding the abstract methods + [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] + public class DiscoveryProxyService : DiscoveryProxy + { + // Repository to store EndpointDiscoveryMetadata. A database or a flat file could also be used instead. + Dictionary onlineServices; + + public DiscoveryProxyService() + { + this.onlineServices = new Dictionary(); + } + + // OnBeginOnlineAnnouncement method is called when a Hello message is received by the Proxy + protected override IAsyncResult OnBeginOnlineAnnouncement(DiscoveryMessageSequence messageSequence, EndpointDiscoveryMetadata endpointDiscoveryMetadata, AsyncCallback callback, object state) + { + this.AddOnlineService(endpointDiscoveryMetadata); + return new OnOnlineAnnouncementAsyncResult(callback, state); + } + + protected override void OnEndOnlineAnnouncement(IAsyncResult result) + { + OnOnlineAnnouncementAsyncResult.End(result); + } + + // OnBeginOfflineAnnouncement method is called when a Bye message is received by the Proxy + protected override IAsyncResult OnBeginOfflineAnnouncement(DiscoveryMessageSequence messageSequence, EndpointDiscoveryMetadata endpointDiscoveryMetadata, AsyncCallback callback, object state) + { + this.RemoveOnlineService(endpointDiscoveryMetadata); + return new OnOfflineAnnouncementAsyncResult(callback, state); + } + + protected override void OnEndOfflineAnnouncement(IAsyncResult result) + { + OnOfflineAnnouncementAsyncResult.End(result); + } + + // OnBeginFind method is called when a Probe request message is received by the Proxy + protected override IAsyncResult OnBeginFind(FindRequestContext findRequestContext, AsyncCallback callback, object state) + { + this.MatchFromOnlineService(findRequestContext); + return new OnFindAsyncResult(callback, state); + } + + protected override void OnEndFind(IAsyncResult result) + { + OnFindAsyncResult.End(result); + } + + // OnBeginFind method is called when a Resolve request message is received by the Proxy + protected override IAsyncResult OnBeginResolve(ResolveCriteria resolveCriteria, AsyncCallback callback, object state) + { + return new OnResolveAsyncResult(this.MatchFromOnlineService(resolveCriteria), callback, state); + } + + protected override EndpointDiscoveryMetadata OnEndResolve(IAsyncResult result) + { + return OnResolveAsyncResult.End(result); + } + + // The following are helper methods required by the Proxy implementation + void AddOnlineService(EndpointDiscoveryMetadata endpointDiscoveryMetadata) + { + lock (this.onlineServices) + { + this.onlineServices[endpointDiscoveryMetadata.Address] = endpointDiscoveryMetadata; + } + + PrintDiscoveryMetadata(endpointDiscoveryMetadata, "Adding"); + } + + void RemoveOnlineService(EndpointDiscoveryMetadata endpointDiscoveryMetadata) + { + if (endpointDiscoveryMetadata != null) + { + lock (this.onlineServices) + { + this.onlineServices.Remove(endpointDiscoveryMetadata.Address); + } + + PrintDiscoveryMetadata(endpointDiscoveryMetadata, "Removing"); + } + } + + void MatchFromOnlineService(FindRequestContext findRequestContext) + { + lock (this.onlineServices) + { + foreach (EndpointDiscoveryMetadata endpointDiscoveryMetadata in this.onlineServices.Values) + { + if (findRequestContext.Criteria.IsMatch(endpointDiscoveryMetadata)) + { + findRequestContext.AddMatchingEndpoint(endpointDiscoveryMetadata); + } + } + } + } + + EndpointDiscoveryMetadata MatchFromOnlineService(ResolveCriteria criteria) + { + EndpointDiscoveryMetadata matchingEndpoint = null; + lock (this.onlineServices) + { + foreach (EndpointDiscoveryMetadata endpointDiscoveryMetadata in this.onlineServices.Values) + { + if (criteria.Address == endpointDiscoveryMetadata.Address) + { + matchingEndpoint = endpointDiscoveryMetadata; + } + } + } + return matchingEndpoint; + } + + void PrintDiscoveryMetadata(EndpointDiscoveryMetadata endpointDiscoveryMetadata, string verb) + { + Console.WriteLine("\n**** " + verb + " service of the following type from cache. "); + foreach (XmlQualifiedName contractName in endpointDiscoveryMetadata.ContractTypeNames) + { + Console.WriteLine("** " + contractName.ToString()); + break; + } + Console.WriteLine("**** Operation Completed"); + } + + sealed class OnOnlineAnnouncementAsyncResult : AsyncResult + { + public OnOnlineAnnouncementAsyncResult(AsyncCallback callback, object state) + : base(callback, state) + { + this.Complete(true); + } + + public static void End(IAsyncResult result) + { + AsyncResult.End(result); + } + } + + sealed class OnOfflineAnnouncementAsyncResult : AsyncResult + { + public OnOfflineAnnouncementAsyncResult(AsyncCallback callback, object state) + : base(callback, state) + { + this.Complete(true); + } + + public static void End(IAsyncResult result) + { + AsyncResult.End(result); + } + } + + sealed class OnFindAsyncResult : AsyncResult + { + public OnFindAsyncResult(AsyncCallback callback, object state) + : base(callback, state) + { + this.Complete(true); + } + + public static void End(IAsyncResult result) + { + AsyncResult.End(result); + } + } + + sealed class OnResolveAsyncResult : AsyncResult + { + EndpointDiscoveryMetadata matchingEndpoint; + + public OnResolveAsyncResult(EndpointDiscoveryMetadata matchingEndpoint, AsyncCallback callback, object state) + : base(callback, state) + { + this.matchingEndpoint = matchingEndpoint; + this.Complete(true); + } + + public static EndpointDiscoveryMetadata End(IAsyncResult result) + { + OnResolveAsyncResult thisPtr = AsyncResult.End(result); + return thisPtr.matchingEndpoint; + } + } + } +} + +``` + +``` +// AsyncResult.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.Threading; + +namespace Microsoft.Samples.Discovery +{ + abstract class AsyncResult : IAsyncResult + { + AsyncCallback callback; + bool completedSynchronously; + bool endCalled; + Exception exception; + bool isCompleted; + ManualResetEvent manualResetEvent; + object state; + object thisLock; + + protected AsyncResult(AsyncCallback callback, object state) + { + this.callback = callback; + this.state = state; + this.thisLock = new object(); + } + + public object AsyncState + { + get + { + return state; + } + } + + public WaitHandle AsyncWaitHandle + { + get + { + if (manualResetEvent != null) + { + return manualResetEvent; + } + lock (ThisLock) + { + if (manualResetEvent == null) + { + manualResetEvent = new ManualResetEvent(isCompleted); + } + } + return manualResetEvent; + } + } + + public bool CompletedSynchronously + { + get + { + return completedSynchronously; + } + } + + public bool IsCompleted + { + get + { + return isCompleted; + } + } + + object ThisLock + { + get + { + return this.thisLock; + } + } + + protected static TAsyncResult End(IAsyncResult result) + where TAsyncResult : AsyncResult + { + if (result == null) + { + throw new ArgumentNullException("result"); + } + + TAsyncResult asyncResult = result as TAsyncResult; + + if (asyncResult == null) + { + throw new ArgumentException("Invalid async result.", "result"); + } + + if (asyncResult.endCalled) + { + throw new InvalidOperationException("Async object already ended."); + } + + asyncResult.endCalled = true; + + if (!asyncResult.isCompleted) + { + asyncResult.AsyncWaitHandle.WaitOne(); + } + + if (asyncResult.manualResetEvent != null) + { + asyncResult.manualResetEvent.Close(); + } + + if (asyncResult.exception != null) + { + throw asyncResult.exception; + } + + return asyncResult; + } + + protected void Complete(bool completedSynchronously) + { + if (isCompleted) + { + throw new InvalidOperationException("This async result is already completed."); + } + + this.completedSynchronously = completedSynchronously; + + if (completedSynchronously) + { + this.isCompleted = true; + } + else + { + lock (ThisLock) + { + this.isCompleted = true; + if (this.manualResetEvent != null) + { + this.manualResetEvent.Set(); + } + } + } + + if (callback != null) + { + callback(this); + } + } + + protected void Complete(bool completedSynchronously, Exception exception) + { + this.exception = exception; + Complete(completedSynchronously); + } + } +} + +``` + +``` +// program.cs +//---------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------------- + +using System; +using System.ServiceModel; +using System.ServiceModel.Discovery; + +namespace Microsoft.Samples.Discovery +{ + class Program + { + public static void Main() + { + Uri probeEndpointAddress = new Uri("net.tcp://localhost:8001/Probe"); + Uri announcementEndpointAddress = new Uri("net.tcp://localhost:9021/Announcement"); + + // Host the DiscoveryProxy service + ServiceHost proxyServiceHost = new ServiceHost(new DiscoveryProxyService()); + + try + { + // Add DiscoveryEndpoint to receive Probe and Resolve messages + DiscoveryEndpoint discoveryEndpoint = new DiscoveryEndpoint(new NetTcpBinding(), new EndpointAddress(probeEndpointAddress)); + discoveryEndpoint.IsSystemEndpoint = false; + + // Add AnnouncementEndpoint to receive Hello and Bye announcement messages + AnnouncementEndpoint announcementEndpoint = new AnnouncementEndpoint(new NetTcpBinding(), new EndpointAddress(announcementEndpointAddress)); + + proxyServiceHost.AddServiceEndpoint(discoveryEndpoint); + proxyServiceHost.AddServiceEndpoint(announcementEndpoint); + + proxyServiceHost.Open(); + + Console.WriteLine("Proxy Service started."); + Console.WriteLine(); + Console.WriteLine("Press to terminate the service."); + Console.WriteLine(); + Console.ReadLine(); + + proxyServiceHost.Close(); + } + catch (CommunicationException e) + { + Console.WriteLine(e.Message); + } + catch (TimeoutException e) + { + Console.WriteLine(e.Message); + } + + if (proxyServiceHost.State != CommunicationState.Closed) + { + Console.WriteLine("Aborting the service..."); + proxyServiceHost.Abort(); + } + } + } +} + +``` + +## 参照 + [WCF Discovery の概要](../../../../docs/framework/wcf/feature-details/wcf-discovery-overview.md) + [探索プロキシで登録される探索可能なサービスの実装方法](../../../../docs/framework/wcf/feature-details/discoverable-service-that-registers-with-the-discovery-proxy.md) + [探索プロキシを使用してサービスを検索するクライアント アプリケーションの実装方法](../../../../docs/framework/wcf/feature-details/client-app-discovery-proxy-to-find-a-service.md) + [探索プロキシをテストする方法](../../../../docs/framework/wcf/feature-details/how-to-test-the-discovery-proxy.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-import-metadata-into-service-endpoints.md b/docs/framework/wcf/feature-details/how-to-import-metadata-into-service-endpoints.md new file mode 100644 index 00000000000..fcf2d4fc308 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-import-metadata-into-service-endpoints.md @@ -0,0 +1,49 @@ +--- +title: "方法 : メタデータをサービス エンドポイントにインポートする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b69dbe20-92a1-4911-89d8-ffbc3dad4663 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 方法 : メタデータをサービス エンドポイントにインポートする +このトピックでは、メタデータをサービス エンドポイントのコレクションにインポートし、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に定義されているサービスを使用する方法について説明します。 また、サービスからメタデータをインポートし、次にそのサービスに対して `Add` メソッドを呼び出すクライアント アプリケーションを作成する方法についても説明します。 + +### メタデータをサービス エンドポイントにインポートするには + +1. オブジェクトを定義し、サービスの metadata exchange \(MEX\) アドレスの URI \(Uniform Resource Identifier\) を使ってそのオブジェクトを初期化します。 + + [!code-csharp[UE_ImportMetadata#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/ue_importmetadata/cs/client.cs#0)] + +2. を作成し、MEX アドレスを渡して を呼び出します。 これにより、メタデータをサービスから取得します。 + + [!code-csharp[UE_ImportMetadata#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/ue_importmetadata/cs/client.cs#1)] + +3. を作成し、前に取得したメタデータを渡して を呼び出します。 これにより、 オブジェクトのコレクションを生成します。 必要に応じて、 または を呼び出すこともできます。 + + [!code-csharp[UE_ImportMetadata#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/ue_importmetadata/cs/client.cs#2)] + + > [!NOTE] + > メタデータのインポートが完了すると、クライアント チャネルの作成もメタデータのエクスポートもできなくなります。 これは、この時点で型情報を使用できないためです。 型情報は、サービスと実際に対話する場合またはメタデータをエクスポートする場合に必要です。 型情報を生成するには、コードを生成する必要があります。これについては、手順 4. ~ 5. で説明します。 別の方法として、 ヘルパー クラスを使用することもできます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : MetadataResolver を使用してバインディング メタデータを動的に取得する](../../../../docs/framework/wcf/feature-details/how-to-use-metadataresolver-to-obtain-binding-metadata-dynamically.md). + +4. 各コントラクトに型情報を生成します。 + + [!code-csharp[UE_ImportMetadata#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/ue_importmetadata/cs/client.cs#3)] + +5. これで、この情報を使用できます。 次の例では、C\# ソース コードが生成されます。 + + [!code-csharp[UE_ImportMetadata#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/ue_importmetadata/cs/client.cs#4)] + +## 参照 + [メタデータ](../../../../docs/framework/wcf/feature-details/metadata.md) + [概要](../../../../docs/framework/wcf/samples/getting-started-sample.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-install-and-configure-wcf-activation-components.md b/docs/framework/wcf/feature-details/how-to-install-and-configure-wcf-activation-components.md new file mode 100644 index 00000000000..42e88d1e821 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-install-and-configure-wcf-activation-components.md @@ -0,0 +1,114 @@ +--- +title: "方法 : WCF アクティブ化コンポーネントをインストールして設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "HTTP アクティベーション [WCF]" +ms.assetid: 33a7054a-73ec-464d-83e5-b203aeded658 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# 方法 : WCF アクティブ化コンポーネントをインストールして設定する +ここでは、HTTP ネットワーク プロトコルでは通信しない [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをホストするように Windows プロセス アクティブ化サービス \(WAS: Windows Process Activation Service\) を [!INCLUDE[wv](../../../../includes/wv-md.md)] に構成するために必要な手順について説明します。以降の各セクションで、この構成に関する手順について概説します。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アクティブ化コンポーネントをインストール \(またはそのインストールを確認\) します。 + +- 非 HTTP プロトコルをサポートようにする WAS を構成します。次の手順では、TCP アクティベーション用に [!INCLUDE[wv](../../../../includes/wv-md.md)] を構成します。 + + WAS をインストールして構成したら、「[方法 : WAS で WCF サービスをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-was.md)」の手順を参照して、WAS を使用する非 HTTP エンドポイントを公開する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを作成します。 + +### WCF 非 HTTP アクティブ化コンポーネントをインストールするには + +1. **\[スタート\]** ボタンをクリックし、**\[コントロール パネル\]** をクリックします。 + +2. **\[プログラム\]** をクリックし、**\[プログラムと機能\]** をクリックします。 + +3. **\[タスク\]** メニューの **\[Windows の機能を有効化または無効化\]** をクリックします。 + +4. [!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] ノードを検索し、それを選択して展開します。 + +5. **\[WCF Non\-Http Activation Components\]** ボックスをオンにして、設定を保存します。 + +### TCP アクティベーションをサポートするように WAS を構成するには + +1. net.tcp アクティベーションをサポートするには、既定の Web サイトをあらかじめ net.tcp ポートにバインドしておく必要があります。これは、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] 管理ツール セットと共にインストールされる Appcmd.exe を使用して行います。管理者レベルのコマンド プロンプト ウィンドウで、次のコマンドを実行します。 + + ``` + %windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*'] + ``` + + > [!NOTE] + > このコマンドはテキスト 1 行です。このコマンドは、net.tcp サイト バインディングを、TCP ポート 808 で任意のホスト名をリッスンする既定の Web サイトに追加します。 + +2. サイト内のすべてのアプリケーションが同じ net.tcp バインディングを共有しますが、net.tcp サポートの有効化はアプリケーションごとに指定できます。アプリケーションで net.tcp を有効にするには、管理者レベルのコマンド プロンプトから、次のコマンドを実行します。 + + ``` + %windir%\system32\inetsrv\appcmd.exe set app + "Default Web Site/" /enabledProtocols:http,net.tcp + ``` + + > [!NOTE] + > このコマンドはテキスト 1 行です。このコマンドにより、\/\<*WCF Application*\> アプリケーションには、http:\/\/localhost*\/\* および net.tcp:\/\/localhost\/*\* のどちらからでもアクセスできるようになります。 + + このサンプル用に追加した net.tcp サイト バインディングを削除します。 + + 便宜上次の 2 つの手順が、サンプル ディレクトリにある RemoveNetTcpSiteBinding.cmd というバッチ ファイルに実装されています。 + + 1. 管理者レベルのコマンド プロンプト ウィンドウで次のコマンドを実行して、有効なプロトコルの一覧から net.tcp を削除します。 + + ``` + %windir%\system32\inetsrv\appcmd.exe set app + "Default Web Site/servicemodelsamples" " /enabledProtocols:http + ``` + + > [!NOTE] + > このコマンドはテキスト 1 行です。 + + 2. 権限のレベルが高いコマンド プロンプト ウィンドウで次のコマンドを実行して、net.tcp サイト バインディングを削除します。 + + ``` + %windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" + --bindings.[protocol='net.tcp',bindingInformation='808:*'] + ``` + + > [!NOTE] + > このコマンドはテキスト 1 行です。 + +### 有効なプロトコルの一覧から net.tcp を削除するには + +1. 有効なプロトコルの一覧から net.tcp を削除するには、管理者レベルのコマンド プロンプト ウィンドウで次のコマンドを実行します。 + + ``` + %windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/servicemodelsamples" " /enabledProtocols:http + ``` + + > [!NOTE] + > このコマンドはテキスト 1 行です。 + +### net.tcp サイト バインディングを削除するには + +1. net.tcp サイト バインディングを削除するには、管理者レベルのコマンド プロンプト ウィンドウで次のコマンドを実行します。 + + ``` + %windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" + -bindings.[protocol='net.tcp',bindingInformation='808:*'] + ``` + + > [!NOTE] + > このコマンドはテキスト 1 行です。 + +## 参照 + [TCP アクティベーション](../../../../docs/framework/wcf/samples/tcp-activation.md) + [MSMQ アクティベーション](../../../../docs/framework/wcf/samples/msmq-activation.md) + [NamedPipe アクティベーション](../../../../docs/framework/wcf/samples/namedpipe-activation.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-make-x-509-certificates-accessible-to-wcf.md b/docs/framework/wcf/feature-details/how-to-make-x-509-certificates-accessible-to-wcf.md new file mode 100644 index 00000000000..f4584731ec0 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-make-x-509-certificates-accessible-to-wcf.md @@ -0,0 +1,80 @@ +--- +title: "方法 : X.509 証明書を WCF からアクセス可能にする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "証明書 [WCF], X.509 証明書を WCF からアクセス可能にする" + - "X.509 証明書 [WCF]" + - "X.509 証明書 [WCF], WCF からアクセス可能にする" +ms.assetid: a54e407c-c2b5-4319-a648-60e43413664b +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 方法 : X.509 証明書を WCF からアクセス可能にする +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] から X.509 証明書にアクセスできるようにするには、アプリケーション コードで証明書ストアの名前と場所を指定する必要があります。特定の状況では、X.509 証明書に関連付けられた秘密キーを格納しているファイルにプロセス ID がアクセスできる必要があります。証明書ストア内の X.509 証明書に関連付けられている秘密キーを取得するには、それを行うためのアクセス許可が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に必要になります。既定では、所有者と System アカウントだけが証明書の秘密キーにアクセスできます。 + +### X.509 証明書を WCF からアクセス可能にするには + +1. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が実行されているアカウントに対して、X.509 証明書に関連付けられている秘密キーを格納しているファイルへの読み取りアクセス権を与えます。 + + 1. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に X.509 証明書の秘密キーへの読み取りアクセス権が必要かどうかを判断します。 + + 次の表は、X.509 証明書を使用する際に秘密キーを使用できる必要があるかどうかを示しています。 + + |X.509 証明書の使用法|秘密キー| + |-------------------|----------| + |送信 SOAP メッセージにデジタル署名する。|必要| + |受信 SOAP メッセージの署名を検証する。|不要| + |送信 SOAP メッセージを暗号化する。|不要| + |受信 SOAP メッセージを復号化する。|必要| + + 2. 証明書が格納されている証明書ストアの場所と名前を決定します。 + + 証明書が格納されている証明書ストアは、アプリケーション コードまたは構成で指定します。たとえば、次の例では、証明書が `My` という名前の `CurrentUser` 証明書ストア内に存在することを指定します。 + + [!code-csharp[x509Accessible#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/x509accessible/cs/source.cs#1)] + [!code-vb[x509Accessible#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/x509accessible/vb/source.vb#1)] + + 3. [FindPrivateKey](../../../../docs/framework/wcf/samples/findprivatekey.md) ツールを使用して、証明書の秘密キーがコンピューター上のどこに存在するかを確認します。 + + [FindPrivateKey](../../../../docs/framework/wcf/samples/findprivatekey.md) ツールには、証明書ストアの名前、証明書ストアの場所、および証明書を一意に識別する情報を指定する必要があります。このツールは、証明書のサブジェクト名または拇印を一意の識別子として受け入れます。証明書の拇印の確認方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 証明書のサムプリントを取得する](../../../../docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md)」を参照してください。 + + 次のコード例では、[FindPrivateKey](../../../../docs/framework/wcf/samples/findprivatekey.md) ツールを使用して、`CurrentUser` の `My` ストア内に存在する、拇印 `46 dd 0e 7a ed 0b 7a 31 9b 02 a3 a0 43 7a d8 3f 60 40 92 9d` を持つ証明書の秘密キーの場所を特定します。 + + ``` + findprivatekey.exe My CurrentUser -t "46 dd 0e 7a ed 0b 7a 31 9b 02 a3 a0 43 7a d8 3f 60 40 92 9d" -a + ``` + + 4. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が実行されているアカウントを確認します。 + + 次の表は、特定のシナリオで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が実行されているアカウントの詳細を示しています。 + + |シナリオ|プロセス ID| + |----------|-------------| + |クライアント \(コンソールまたは WinForms アプリケーション\)|現在ログインしているユーザー| + |自己ホスト型のサービス|現在ログインしているユーザー| + |IIS 6.0 \([!INCLUDE[ws2003](../../../../includes/ws2003-md.md)]\) または IIS 7.0 \([!INCLUDE[wv](../../../../includes/wv-md.md)]\) でホストされているサービス|NETWORK SERVICE| + |IIS 5.X \([!INCLUDE[wxp](../../../../includes/wxp-md.md)]\) でホストされているサービス|Machine.config ファイル内の `` 要素によって制御されます。既定のアカウントは ASPNET です。| + + 5. cacls.exe などのツールを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が実行されているアカウントに、秘密キーを格納しているファイルへの読み取りアクセス権を与えます。 + + 次のコード例では、指定したファイルのアクセス制御リスト \(ACL\) を編集 \(\/E\) して、NETWORK SERVICE アカウントにそのファイルへの読み取り \(R\) アクセス権を与えます。 + + ``` + cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\8aeda5eb81555f14f8f9960745b5a40d_38f7de48-5ee9-452d-8a5a-92789d7110b1" /E /G "NETWORK SERVICE":R + ``` + +## 参照 + [FindPrivateKey](../../../../docs/framework/wcf/samples/findprivatekey.md) + [方法 : 証明書のサムプリントを取得する](../../../../docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md) + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-migrate-ajax-enabled-aspnet-web-services-to-wcf.md b/docs/framework/wcf/feature-details/how-to-migrate-ajax-enabled-aspnet-web-services-to-wcf.md new file mode 100644 index 00000000000..ce79671d736 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-migrate-ajax-enabled-aspnet-web-services-to-wcf.md @@ -0,0 +1,223 @@ +--- +title: "方法 : AJAX 対応 ASP.NET Web サービスを WCF に移行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1428df4d-b18f-4e6d-bd4d-79ab3dd5147c +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# 方法 : AJAX 対応 ASP.NET Web サービスを WCF に移行する +ここでは、基本的な ASP.NET AJAX サービスを同等の AJAX 対応 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスに移行する手順の概要を説明します。 ここでは、ASP.NET AJAX サービスの、機能的に同等の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バージョンを作成する方法を示します。 この 2 つのサービスを並行して使用することも、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを ASP.NET AJAX サービスと置き換えて使用することもできます。 + + 既存の ASP.NET AJAX サービスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] AJAX サービスに移行すると、次のような利点が得られます。 + +- 最小限の追加構成で、AJAX サービスを SOAP サービスとして公開できます。 + +- トレースなどの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の機能の利点が得られます。 + + 次の手順では、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] が使用されていることを前提としています。 + + 手順に続く例で、ここで説明する手順によって作成されるコードを示します。 + + AJAX 対応エンドポイントを介した [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの公開[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 構成を使用して ASP.NET AJAX エンドポイントを追加する](../../../../docs/framework/wcf/feature-details/how-to-use-configuration-to-add-an-aspnet-ajax-endpoint.md)」トピックを参照してください。 + +### ASP.NET Web サービス アプリケーションを作成してテストする + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を開きます。 + +2. **\[ファイル\]** メニューの **\[新規作成\]** をクリックし、**\[プロジェクト\]**、**\[Web\]** の順にクリックして、**\[ASP.NET Web サービス アプリケーション\]** をクリックします。 + +3. プロジェクトに「`ASPHello`」という名前を付け、**\[OK\]** をクリックます。 + +4. Service1.asmx.cs ファイルで、`System.Web.Script.Services.ScriptService]` が含まれた行のコメントを解除し、このサービスに対して AJAX を有効にします。 + +5. **\[ビルド\]** メニューの **\[ソリューションのビルド\]** をクリックします。 + +6. **\[デバッグ\]** メニューの **\[デバッグなしで開始\]** をクリックします。 + +7. 生成された Web ページで、`HelloWorld` 操作を選択します。 + +8. テスト ページで、`HelloWorld`**\[起動\]** をクリックします。 次の XML 応答を受信します。 + + ``` + + Hello World + ``` + +9. この応答は、ASP.NET AJAX サービスが現在機能していること、およびこのサービスが現在 Service1.asmx\/HelloWorld でエンドポイントを公開していることを確認するものです。このエンドポイントが HTTP POST 要求に応答し、XML を返します。 + + これで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] AJAX サービスを使用するために、このサービスを変換する準備ができました。 + +### 同等の WCF AJAX サービス アプリケーションを作成するには + +1. **ASPHello** プロジェクトを右クリックして、**\[追加\]**、**\[新しい項目\]** の順にクリックして、**\[AJAX 対応 WCF サービス\]** をクリックします。 + +2. サービスに「`WCFHello`」という名前を付けて、**\[追加\]** をクリックします。 + +3. WCFHello.svc.cs ファイルを開きます。 + +4. Service1.asmx.cs から、`HelloWorld` 操作の次の実装をコピーします。 + + ``` + public string HelloWorld() + { + return "Hello World"; + } + ``` + +5. コピーした `HelloWorld` 操作の実装を、WCFHello.svc.cs ファイルの次のコードの代わりに貼り付けます。 + + ``` + public void DoWork() + { + // Add your operation implementation here + return; + } + ``` + +6. `Namespace` の 属性を `WCFHello` に指定します。 + + ``` + [ServiceContract(Namespace="WCFHello")] + [AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Required)] + public class WCFHello + { … } + ``` + +7. を `HelloWorld` 操作に追加し、 を返すように プロパティを設定します。 この設定を行わない場合、既定の戻り値の型は です。 + + ``` + [OperationContract] + [WebInvoke(ResponseFormat=WebMessageFormat.Xml)] + public string HelloWorld() + { + return "Hello World"; + } + ``` + +8. **\[ビルド\]** メニューの **\[ソリューションのビルド\]** をクリックします。 + +9. WCFHello.svc ファイルを開き、**\[デバッグ\]** メニューの **\[デバッグなしで開始\]** をクリックします。 + +10. 現在、サービスは、`WCFHello.svc/HelloWorld` でエンドポイントを公開しています。このエンドポイントが HTTP POST 要求に応答します。 HTTP POST 要求をブラウザーからテストすることはできませんが、エンドポイントは次の XML を返します。 + + ``` + Hello World + ``` + +11. これで、`WCFHello.svc/HelloWorld` エンドポイントと `Service1.aspx/HelloWorld` エンドポイントは機能的に同等になりました。 + +## 使用例 + このトピックで説明した手順によって作成されるコードを次の例に示します。 + +``` +//This is the ASP.NET code in the Service1.asmx.cs file. + +using System; +using System.Collections; +using System.ComponentModel; +using System.Data; +using System.Linq; +using System.Web; +using System.Web.Services; +using System.Web.Services.Protocols; +using System.Xml.Linq; +using System.Web.Script.Services; + +namespace ASPHello +{ + /// + /// Summary description for Service1. + /// + [WebService(Namespace = "http://tempuri.org/")] + [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] + [ToolboxItem(false)] + // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. + [System.Web.Script.Services.ScriptService] + public class Service1 : System.Web.Services.WebService + { + + [WebMethod] + public string HelloWorld() + { + return "Hello World"; + } + } +} + +//This is the WCF code in the WCFHello.svc.cs file. +using System; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.ServiceModel.Activation; +using System.ServiceModel.Web; + +namespace ASPHello +{ + [ServiceContract(Namespace = "WCFHello")] + [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] + public class WCFHello + { + // Add [WebInvoke] attribute to use HTTP GET. + [OperationContract] + [WebInvoke(ResponseFormat=WebMessageFormat.Xml)] + public string HelloWorld() + { + return "Hello World"; + } + + // Add more operations here and mark them with [OperationContract]. + } +} +``` + + 型は、 によってシリアル化できないため、 ではサポートされていません。 型を使用するか、 をシリアル化します。 + + ASMX Web サービスが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと並行してアップグレードおよび移行される場合は、クライアントで 2 つの型を同じ名前に割り当てないようにします。 同じ名前が割り当てられていると、 で同じ型が使用されている場合に、シリアライザーで次のような例外が発生します。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが先に追加された場合は、ASMX Web サービスでメソッドを呼び出すと、 で例外が発生します。これは、プロキシでの順序の定義で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] スタイル定義が優先されるためです。 + +- ASMX Web サービスが先に追加された場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでメソッドを呼び出すと、 で例外が発生します。これは、プロキシでの順序の定義で Web サービス スタイル定義が優先されるためです。 + + と ASP.NET AJAX の動作には大きな違いがあります。 たとえば、 はディクショナリをキーと値のペアの配列として表しますが、ASP.NET AJAX はディクショナリを実際の JSON オブジェクトとして表します。 したがって、ASP.NET AJAX では、ディクショナリが次のように表されます。 + +``` +Dictionary d = new Dictionary(); +d.Add(“one”, 1); +d.Add(“two”, 2); +``` + + このディクショナリは、JSON オブジェクトでは次のように表されます。 + +- では \[{"Key":"one","Value":1},{"Key":"two","Value":2}\] と表され、 + +- ASP.NET AJAX では、{“one”:1,”two”:2} と表されます。 + + は、キーの種類が文字列ではないディクショナリを処理でき、 はできません。この点で前者はより強力と言えます。 しかし、後者の方が JSON で使いやすいと言えます。 + + これらのシリアライザーの主な違いを次の表に示します。 + +|相違点のカテゴリ|DataContractJsonSerializer|ASP.NET AJAX JavaScriptSerializer| +|--------------|--------------------------------|---------------------------------------| +|空きバッファー \(新しい byte\[0\]\) の \(または 、あるいは他の一部のクラス\) への逆シリアル化|SerializationException|null| +| のシリアル化|{} \(or {"\_\_type":"\#System"}\)|Null| +|\[Serializable\] 型のプライベート メンバーのシリアル化|シリアル化できます|シリアル化できません| +| 型のパブリック プロパティのシリアル化|シリアル化できません|シリアル化できます| +|JSON の「拡張機能」|オブジェクト メンバー名で引用符を必要とする \({"a":"hello"}\) JSON 仕様に準拠しています。|引用符のないオブジェクト メンバー名 \({a:"hello"}\) をサポートします。| +| 協定世界時刻 \(UTC\)|"\\\/Date\(123456789U\)\\\/" 形式または "\\\/Date\\\(\\d\+\(U|\(\\\+\\\-\[\\d{4}\]\)\)? \\\)\\\\\/\)" 形式をサポートしません。|DateTime 値として、"\\\/Date\(123456789U\)\\\/" 形式と "\\\/Date\\\(\\d\+\(U|\(\\\+\\\-\[\\d{4}\]\)\)? \\\)\\\\\/\)" 形式をサポートします。| +|ディクショナリの表現|KeyValuePair\ の配列。文字列以外の種類のキーを処理します。|実際の JSON オブジェクトですが、文字列の種類のキーのみ処理します。| +|エスケープ文字|必ず、エスケープ文字であるスラッシュ \(\/\) を付けます。"\\n" などのエスケープされない無効な JSON 文字は使用できません。|DateTime 値には、エスケープ文字スラッシュ \(\/\) を付けます。| + +## 参照 + [方法 : 構成を使用して ASP.NET AJAX エンドポイントを追加する](../../../../docs/framework/wcf/feature-details/how-to-use-configuration-to-add-an-aspnet-ajax-endpoint.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-obtain-a-certificate-wcf.md b/docs/framework/wcf/feature-details/how-to-obtain-a-certificate-wcf.md new file mode 100644 index 00000000000..6d23f72d519 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-obtain-a-certificate-wcf.md @@ -0,0 +1,39 @@ +--- +title: "方法 : 証明書 (WCF) を取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "証明書 [WCF], 取得" +ms.assetid: d53762fd-15ea-42dc-b0ea-6a6597aa23f7 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : 証明書 (WCF) を取得する +X.509 証明書を使用する [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の機能を使用するには、最初に証明書を取得します。 + +### X.509 証明書を取得するには + +1. 次のいずれかを選択します。 + + - VeriSign, Inc. などの証明機関から証明書を購入します。 + + - 独自の証明書サービスを設定し、証明機関に証明書への署名を依頼します。 [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)]、Windows 2000 Server、Windows 2000 Server Datacenter、および Windows 2000 Datacenter Server にはすべて、公開キー基盤 \(PKI\) をサポートする証明書サービスが用意されています。 Windows Server 2008 で、「[Active Directory 証明書サービスの概要](http://go.microsoft.com/fwlink/?LinkID=153483)」 ロールを使用して証明機関を管理します。 + + - 独自の証明書サービスを設定し、証明書には署名しません。 + + > [!NOTE] + > どの方法を使用する場合でも、X.509 証明書を含む SOAP 要求の受信者は、その X.509 証明書を信頼する必要があります。 つまり、証明書チェーン内の X.509 証明書または発行者は、信頼されたユーザーの証明書ストア内に存在し、また X.509 証明書は信頼されない証明書ストア内には存在しないということを意味します。 + +## 参照 + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [方法 : 開発中に使用する一時的な証明書を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-programmatically-add-discoverability-to-a-wcf-service-and-client.md b/docs/framework/wcf/feature-details/how-to-programmatically-add-discoverability-to-a-wcf-service-and-client.md new file mode 100644 index 00000000000..ed75887962a --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-programmatically-add-discoverability-to-a-wcf-service-and-client.md @@ -0,0 +1,356 @@ +--- +title: "プログラムを使用して探索可能性に WCF サービスとクライアントを追加する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4f7ae7ab-6fc8-4769-9730-c14d43f7b9b1 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# プログラムを使用して探索可能性に WCF サービスとクライアントを追加する方法 +このトピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを探索可能にする方法について説明します。 基にして、[自己ホスト](http://go.microsoft.com/fwlink/?LinkId=145523)サンプルです。 + +### 既存の自己ホスト サービス サンプルを探索用に構成するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] で自己ホスト ソリューションを開きます。 このサンプルは、TechnologySamples\Basic\Service\Hosting\SelfHost ディレクトリにあります。 + +2. `System.ServiceModel.Discovery.dll` への参照をサービス プロジェクトに追加します。 "System. ServiceModel.Discovery.dll またはその依存関係の&1; つの以降のバージョンが必要です、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)]プロジェクト... に指定されているよりも" ソリューション エクスプ ローラーでプロジェクトを右クリックして、このメッセージを表示する場合は**プロパティ**します。 **プロジェクトのプロパティ**ウィンドウことを確認して、**ターゲット フレームワーク**は[!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)]です。 + +3. Service.cs ファイルを開き、次の `using` ステートメントを追加します。 + + ``` + using System.ServiceModel.Discovery; + ``` + +4. `Main()`メソッド内で、`using`ステートメントを追加、 をサービス ホストのインスタンス。 + + ``` + public static void Main() + { + // Create a ServiceHost for the CalculatorService type. + using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))) + { + // Add a ServiceDiscoveryBehavior + serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); + + // ... + } + } + ``` + + に適用されたサービスが探索可能なことを指定します。 + +5. 追加、 、サービス ホストを追加するコードの直後後に、 します。 + + ``` + // Add ServiceDiscoveryBehavior + serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); + + // Add a UdpDiscoveryEndpoint + serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint()); + ``` + + このコードは、探索メッセージを標準の UDP 探索エンドポイントに送信する必要があることを指定します。 + +### 探索を使用してサービスを呼び出すクライアント アプリケーションを作成するには + +1. 新しいコンソール アプリケーションを `DiscoveryClientApp` というソリューションに追加します。 + +2. `System.ServiceModel.dll` および `System.ServiceModel.Discovery.dll` への参照を追加します。 + +3. GeneratedClient.cs ファイルおよび App.config ファイルを、既存のクライアント プロジェクトから新しい DiscoveryClientApp プロジェクトに追加します。 これを行うには、内のファイルを右クリックし、**ソリューション エクスプ ローラー**を選択**コピー**、クリックして、 **DiscoveryClientApp**プロジェクトを右クリックして選択**貼り付け**します。 + +4. Program.cs を開きます。 + +5. 次の `using` ステートメントを追加します。 + + ``` + using System.ServiceModel; + using System.ServiceModel.Discovery; + using Microsoft.ServiceModel.Samples; + + ``` + +6. `FindCalculatorServiceAddress()` という静的メソッドを `Program` クラスに追加します。 + + ``` + static EndpointAddress FindCalculatorServiceAddress() + { + } + ``` + + このメソッドは、探索を使用して `CalculatorService` サービスを検索します。 + +7. 内部、`FindCalculatorServiceAddress`メソッドを新規作成を渡して、インスタンス、 コンス トラクターにします。 + + ``` + static EndpointAddress FindCalculatorServiceAddress() + { + // Create DiscoveryClient + DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()); + } + ``` + + これにより[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]をクラスは、標準の UDP 探索エンドポイントを使用して探索メッセージを送受信する必要があります。 + +8. 次の行で、メソッドを指定し、 を検索する対象のサービス コントラクトを格納しているインスタンス。 ここでは、`ICalculator` を指定します。 + + ``` + // Find ICalculatorService endpoints + FindResponse findResponse = discoveryClient.Find(new FindCriteria(typeof(ICalculator))); + ``` + +9. 呼び出しの後に、少なくとも&1; つの一致するサービスがないかどうかを確認し、返す、 最初に一致するサービスのです。 一致するサービスがない場合は `null` を返します。 + + ``` + if (findResponse.Endpoints.Count > 0) + { + return findResponse.Endpoints[0].Address; + } + else + { + return null; + } + ``` + +10. `InvokeCalculatorService` という名前の静的メソッドを `Program` クラスに追加します。 + + ``` + static void InvokeCalculatorService(EndpointAddress endpointAddress) + { + } + ``` + + このメソッドは、`FindCalculatorServiceAddress` から返されたエンドポイント アドレスを使用して、電卓サービスを呼び出します。 + +11. `InvokeCalculatorService` メソッド内で、`CalculatorServiceClient` クラスのインスタンスを作成します。 このクラスは、[自己ホスト](http://go.microsoft.com/fwlink/?LinkId=145523)サンプルです。 これは、Svcutil.exe を使用して生成されました。 + + ``` + // Create a client + CalculatorClient client = new CalculatorClient(); + ``` + +12. 次の行では、クライアントのエンドポイント アドレスを、`FindCalculatorServiceAddress()` から返されたエンドポイント アドレスに設定します。 + + ``` + // Connect to the discovered service endpoint + client.Endpoint.Address = endpointAddress; + ``` + +13. 前の手順のコードの直後に、電卓サービスで公開されたメソッドを呼び出します。 + + ``` + Console.WriteLine("Invoking CalculatorService at {0}", endpointAddress); + + double value1 = 100.00D; + double value2 = 15.99D; + + // Call the Add service operation. + double result = client.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + + // Call the Subtract service operation. + result = client.Subtract(value1, value2); + Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); + + // Call the Multiply service operation. + result = client.Multiply(value1, value2); + Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); + + // Call the Divide service operation. + result = client.Divide(value1, value2); + Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); + Console.WriteLine(); + + //Closing the client gracefully closes the connection and cleans up resources + client.Close(); + ``` + +14. `Main()` クラスの `Program` メソッドにコードを追加して、`FindCalculatorServiceAddress` を呼び出します。 + + ``` + public static void Main() + { + EndpointAddress endpointAddress = FindCalculatorServiceAddress(); + } + ``` + +15. 次の行では、`InvokeCalculatorService()` を呼び出し、`FindCalculatorServiceAddress()` から返されたエンドポイント アドレスを渡します。 + + ``` + if (endpointAddress != null) + { + InvokeCalculatorService(endpointAddress); + } + + Console.WriteLine("Press to exit."); + Console.ReadLine(); + ``` + +### アプリケーションをテストするには + +1. 権限のレベルが高いコマンド プロンプトを開き、Service.exe を実行します。 + +2. コマンド プロンプトを開き、Discoveryclientapp.exe を実行します。 + +3. Service.exe からの出力は次のようになります。 + + ```Output + Received Add(100,15.99) + Return: 115.99 + Received Subtract(100,15.99) + Return: 84.01 + Received Multiply(100,15.99) + Return: 1599 + Received Divide(100,15.99) + Return: 6.25390869293308 + ``` + +4. Discoveryclientapp.exe からの出力は次のようになります。 + + ```Output + Invoking CalculatorService at http://localhost:8000/ServiceModelSamples/service + Add(100,15.99) = 115.99 + Subtract(100,15.99) = 84.01 + Multiply(100,15.99) = 1599 + Divide(100,15.99) = 6.25390869293308 + + Press to exit. + ``` + +## 例 + このサンプルで使用されているコード全体の一覧を次に示します。 このコードに基づいているため、[自己ホスト](http://go.microsoft.com/fwlink/?LinkId=145523)サンプルを変更されているファイルのみが一覧表示します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]自己ホスト サンプルを参照してください[のセットアップ手順](http://go.microsoft.com/fwlink/?LinkId=145522)します。 + +``` + +// Service.cs +using System; +using System.Configuration; +using System.ServiceModel; +using System.ServiceModel.Discovery; + +namespace Microsoft.ServiceModel.Samples +{ + // See SelfHost sample for service contract and implementation + // ... + + // Host the service within this EXE console application. + public static void Main() + { + // Create a ServiceHost for the CalculatorService type. + using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))) + { + // Add the ServiceDiscoveryBehavior to make the service discoverable + serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); + serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint()); + + // Open the ServiceHost to create listeners and start listening for messages. + serviceHost.Open(); + + // The service can now be accessed. + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + } + } + } +} +``` + +``` +// Program.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.ServiceModel; +using System.ServiceModel.Discovery; +using Microsoft.ServiceModel.Samples; +using System.Text; + +namespace DiscoveryClientApp +{ + class Program + { + static EndpointAddress FindCalculatorServiceAddress() + { + // Create DiscoveryClient + DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()); + + // Find ICalculatorService endpoints + FindResponse findResponse = discoveryClient.Find(new FindCriteria(typeof(ICalculator))); + + if (findResponse.Endpoints.Count > 0) + { + return findResponse.Endpoints[0].Address; + } + else + { + return null; + } + } + + static void InvokeCalculatorService(EndpointAddress endpointAddress) + { + // Create a client + CalculatorClient client = new CalculatorClient(); + + // Connect to the discovered service endpoint + client.Endpoint.Address = endpointAddress; + + Console.WriteLine("Invoking CalculatorService at {0}", endpointAddress); + + double value1 = 100.00D; + double value2 = 15.99D; + + // Call the Add service operation. + double result = client.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + + // Call the Subtract service operation. + result = client.Subtract(value1, value2); + Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); + + // Call the Multiply service operation. + result = client.Multiply(value1, value2); + Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); + + // Call the Divide service operation. + result = client.Divide(value1, value2); + Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); + Console.WriteLine(); + + //Closing the client gracefully closes the connection and cleans up resources + client.Close(); + } + static void Main(string[] args) + { + EndpointAddress endpointAddress = FindCalculatorServiceAddress(); + + if (endpointAddress != null) + { + InvokeCalculatorService(endpointAddress); + } + + Console.WriteLine("Press to exit."); + Console.ReadLine(); + + } + } +} +``` + + + +## 関連項目 + [WCF Discovery の概要](../../../../docs/framework/wcf/feature-details/wcf-discovery-overview.md) + [WCF Discovery オブジェクト モデル](../../../../docs/framework/wcf/feature-details/wcf-discovery-object-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md b/docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md new file mode 100644 index 00000000000..da58ecff190 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md @@ -0,0 +1,282 @@ +--- +title: "方法: 構成ファイルを使用してサービスのメタデータを公開する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f061443f-92df-4824-b36a-609c4cd14a17 +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# 方法: 構成ファイルを使用してサービスのメタデータを公開する +このトピックは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスのメタデータを公開する手段を示す&2; つの「方法」トピックのうちの&1; つです。 構成ファイルとコードを使用して、サービスがメタデータを公開する手段を指定する方法は&2; つあります。 このトピックでは、構成ファイルを使用してサービスのメタデータを公開する方法について説明します。 + +> [!CAUTION] +> このトピックでは、セキュリティで保護されていない方法でメタデータを公開する方法について説明します。 クライアントは、サービスからメタデータを取得できます。 安全な方法でメタデータを公開するサービスを必要とする場合は、次を参照してください。[カスタム セキュリティで保護されたメタデータ エンドポイント](../../../../docs/framework/wcf/samples/custom-secure-metadata-endpoint.md)します。 + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)]コードでは、メタデータの公開を参照してください[方法: サービスを使用してコードのメタデータを公開](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-code.md)します。 メタデータを公開すると、クライアントが `?wsdl` クエリ文字列を使用した WS-Transfer GET 要求または HTTP/GET 要求によりメタデータを取得できるようになります。 コードが機能するかどうかを確認するために、基本的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを作成します。 簡略化のため、次のコードに基本的な自己ホスト型サービスが用意されています。 + +```csharp +using System; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.ServiceModel.Description; + +namespace Metadata.Samples +{ + [ServiceContract] + public interface ISimpleService + { + [OperationContract] + string SimpleMethod(string msg); + } + + class SimpleService : ISimpleService + { + public string SimpleMethod(string msg) + { + Console.WriteLine("The caller passed in " + msg); + return "Hello " + msg; + } + } + + class Program + { + static void Main(string[] args) + { + ServiceHost host = new ServiceHost(typeof(SimpleService), + new Uri("http://localhost:8001/MetadataSample")); + try + { + // Open the service host to accept incoming calls + host.Open(); + + // The service can now be accessed. + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + + // Close the ServiceHostBase to shutdown the service. + host.Close(); + } + catch (CommunicationException commProblem) + { + Console.WriteLine("There was a communication problem. " + commProblem.Message); + Console.Read(); + } + } + } +} +``` + + これは、構成ファイルを使用して構成された自己ホスト型サービスです。 以下の構成ファイルをベースとして使用します。 + +```xml + + + + + + + + + + + + + +``` + +### アプリケーション構成ファイルを使用して WCF サービスのメタデータを公開するには + +1. + `
` 要素を閉じた後、App.config ファイル内に `` 要素を作成します。 + + + +2. + `` 要素内に `` 要素を追加します。 + + + +3. + ``要素に `` 要素を追加し、`name` 要素の `` 属性に値を指定します。 + + + +4. + `` 要素を `` 要素に追加します。 `httpGetEnabled` 属性を `true` に設定し、`policyVersion` 属性を Policy15 に設定します。 `httpGetEnabled` により、サービスは HTTP GET 要求からのメタデータ要求に応答できるようになります。 `policyVersion` は、サービスに対して、WS-Policy 1.5 準拠でメタデータを生成するように指示します。 + + + +5. 次のコード例に示すように、`behaviorConfiguration` 要素に `` 属性を追加し、手順 1. で追加した `name` 要素の `` 属性を指定します。 + + ```xml + + + ... + + + + + + + + + + ``` + +6. 1 つ以上の `` 要素を追加して、コントラクトを `IMetadataExchange` に設定します。コード例を次に示します。 + + ```xml + + + + + + + + + ``` + +7. 前の手順で追加したメタデータ エンドポイントについて、`binding` 属性に次のいずれかの値を設定します。 + + - HTTP 公開の場合、`mexHttpBinding` + + - HTTPS 公開の場合、`mexHttpsBinding` + + - 名前付きパイプ公開の場合、`mexNamedPipeBinding` + + - TCP 公開の場合、`mexTcpBinding` + +8. 前の手順で追加したメタデータ エンドポイントについて、次のいずれかに等しいアドレスを設定します。 + + - ベース アドレスがメタデータ バインディングと同じ場合に、公開ポイントとしてホスト アプリケーションのベース アドレスを使用するための空の文字列 + + - ホスト アプリケーションにベース アドレスがある場合、相対アドレス + + - 絶対アドレス + +9. コンソール アプリケーションのビルドと実行 + +10. Internet Explorer を使用してサービスのベース アドレス (この例では、http://localhost:8001/MetadataSample) を参照し、メタデータの公開が有効になっていることを確認します。 有効になっていない場合は、"このサービスのメタデータ公開は現在は無効になっています。" というメッセージが結果ページの上部に表示されます。 + +### 既定のエンドポイントを使用するには + +1. 既定のエンドポイントを使用するサービスのメタデータを構成するには、指定、 の構成ファイルの前の例のように、任意のエンドポイントを指定しません。 構成ファイルは、次のようになります。 + + ```xml + + + + + + + + + + + + + ``` + + サービスがあるため、 で、`httpGetEnabled`に設定`true`サービスが有効な場合、メタデータの公開、およびエンドポイントが明示的に追加されていないため、ランタイムは既定のエンドポイントを追加します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]既定のエンドポイント、バインディング、および動作を参照してください[簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md)と[WCF サービスの構成を簡略化](../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)します。 + +## 例 + 次のコード例は、基本的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの実装と、このサービスのメタデータを公開する構成ファイルを示しています。 + +```csharp +using System; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.ServiceModel.Description; + +namespace Metadata.Samples +{ + [ServiceContract] + public interface ISimpleService + { + [OperationContract] + string SimpleMethod(string msg); + } + + class SimpleService : ISimpleService + { + public string SimpleMethod(string msg) + { + Console.WriteLine("The caller passed in " + msg); + return "Hello " + msg; + } + } + + class Program + { + static void Main(string[] args) + { + ServiceHost host = new ServiceHost(typeof(SimpleService), + new Uri("http://localhost:8001/MetadataSample")); + try + { + // Open the service host to accept incoming calls + host.Open(); + + // The service can now be accessed. + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + + // Close the ServiceHostBase to shutdown the service. + host.Close(); + } + catch (CommunicationException commProblem) + { + Console.WriteLine("There was a communication problem. " + commProblem.Message); + Console.Read(); + } + } + } +} +``` + +```xml + + + + + + + + + + + + +``` + +## 関連項目 + + [方法: マネージ アプリケーションで WCF サービスをホスト](../../../../docs/framework/wcf/how-to-host-a-wcf-service-in-a-managed-application.md) + [自己ホストします。](../../../../docs/framework/wcf/samples/self-host.md) + [メタデータ アーキテクチャの概要](../../../../docs/framework/wcf/feature-details/metadata-architecture-overview.md) + [メタデータを使用します。](../../../../docs/framework/wcf/feature-details/using-metadata.md) + [方法: コードを使用して、サービスのメタデータを公開](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-code.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-code.md b/docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-code.md new file mode 100644 index 00000000000..73597c6f277 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-code.md @@ -0,0 +1,98 @@ +--- +title: "方法 : コードを使用してサービスのメタデータを公開する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 51407e6d-4d87-42d5-be7c-9887b8652006 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# 方法 : コードを使用してサービスのメタデータを公開する +これは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスのメタデータの公開方法を説明する 2 つの「方法」トピックの 1 つです。構成ファイルとコードを使用して、サービスがメタデータを公開する手段を指定する方法は 2 つあります。このトピックでは、コードを使用してサービスのメタデータを公開する方法について説明します。 + +> [!CAUTION] +> このトピックでは、セキュリティで保護されていない方法でメタデータを公開する方法について説明します。クライアントは、サービスからメタデータを取得できます。セキュリティで保護された方法でメタデータを公開するサービスが必要な場合は、[カスタム セキュア メタデータ エンドポイント](../../../../docs/framework/wcf/samples/custom-secure-metadata-endpoint.md) を参照してください。 + + 構成ファイル内の公開メタデータ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md)」を参照してください。メタデータを公開すると、クライアントが `?wsdl` クエリ文字列を使用した WS\-Transfer GET 要求または HTTP\/GET 要求によりメタデータを取得できるようになります。コードを機能させるには、基本的な WCF サービスを作成する必要があります。次のコードは基本的な自己ホスト型サービスの例です。 + + [!code-csharp[htPublishMetadataCode#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#0)] + [!code-vb[htPublishMetadataCode#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#0)] + +### コードでメタデータを公開するには + +1. コンソール アプリケーションのメイン メソッド内で、サービス型とベース アドレスを渡して オブジェクトをインスタンス化します。 + + [!code-csharp[htPublishMetadataCode#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#1)] + [!code-vb[htPublishMetadataCode#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#1)] + +2. 手順 1. のコードのすぐ下に try ブロックを作成します。これにより、サービスの実行中にスローされる例外がすべてキャッチされます。 + + [!code-csharp[htPublishMetadataCode#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#2)] + [!code-vb[htPublishMetadataCode#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#2)] + + [!code-csharp[htPublishMetadataCode#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#3)] + [!code-vb[htPublishMetadataCode#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#3)] + +3. サービス ホストに が含まれているかどうかを確認し、含まれていない場合は、新しい インスタンスを作成します。 + + [!code-csharp[htPublishMetadataCode#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#4)] + [!code-vb[htPublishMetadataCode#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#4)] + +4. プロパティを `true.` に設定します。 + + [!code-csharp[htPublishMetadataCode#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#5)] + [!code-vb[htPublishMetadataCode#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#5)] + +5. には プロパティが含まれています。 には プロパティが含まれています。 プロパティの値を に設定します。 プロパティを に設定することもできます。 に設定すると、WS\-Policy 1.5 に準拠したメタデータでポリシー情報がメタデータ エクスポーターによって生成されます。 に設定すると、WS\-Policy 1.2 に準拠したポリシー情報がメタデータ エクスポーターによって生成されます。 + + [!code-csharp[htPublishMetadataCode#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#6)] + [!code-vb[htPublishMetadataCode#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#6)] + +6. インスタンスをサービス ホストの動作コレクションに追加します。 + + [!code-csharp[htPublishMetadataCode#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#7)] + [!code-vb[htPublishMetadataCode#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#7)] + +7. メタデータ交換エンドポイントをサービス ホストに追加します。 + + [!code-csharp[htPublishMetadataCode#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#8)] + [!code-vb[htPublishMetadataCode#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#8)] + +8. アプリケーション エンドポイントをサービス ホストに追加します。 + + [!code-csharp[htPublishMetadataCode#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#9)] + [!code-vb[htPublishMetadataCode#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#9)] + + > [!NOTE] + > エンドポイントをサービスに追加しない場合、ランタイムによって既定のエンドポイントが追加されます。この例では、サービスには `true` に設定された があるので、サービスで公開メタデータも有効化されています。既定のエンドポイント[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +9. サービス ホストを開き、受信呼び出しを待ちます。ユーザーが Enter キーを押すと、サービス ホストが終了します。 + + [!code-csharp[htPublishMetadataCode#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#10)] + [!code-vb[htPublishMetadataCode#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#10)] + +10. コンソール アプリケーションのビルドと実行 + +11. Internet Explorer を使用してサービスのベース アドレス \(この例では、http:\/\/localhost:8001\/MetadataSample\) を参照し、メタデータの公開が有効になっていることを確認します。上部の "サービスを作成しました" のすぐ下に "Simple Service" と表示された Web ページが表示されます。有効になっていない場合は、"このサービスのメタデータ公開は現在は無効になっています。" というメッセージが結果ページの上部に表示されます。 + +## 使用例 + 次のコード例は、コードを使用してサービスのメタデータを公開する基本的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの実装を示しています。 + + [!code-csharp[htPublishMetadataCode#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/htpublishmetadatacode/cs/program.cs#11)] + [!code-vb[htPublishMetadataCode#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/htpublishmetadatacode/vb/program.vb#11)] + +## 参照 + [方法 : マネージ アプリケーションで WCF サービスをホストする](../../../../docs/framework/wcf/how-to-host-a-wcf-service-in-a-managed-application.md) + [自己ホスト](../../../../docs/framework/wcf/samples/self-host.md) + [メタデータ アーキテクチャの概要](../../../../docs/framework/wcf/feature-details/metadata-architecture-overview.md) + [メタデータを使用する](../../../../docs/framework/wcf/feature-details/using-metadata.md) + [方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-register-and-configure-a-service-moniker.md b/docs/framework/wcf/feature-details/how-to-register-and-configure-a-service-moniker.md new file mode 100644 index 00000000000..f47e3f63d0e --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-register-and-configure-a-service-moniker.md @@ -0,0 +1,114 @@ +--- +title: "方法 : サービス モニカーを登録および構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "COM [WCF], サービス モニカーの構成" + - "COM [WCF], サービス モニカーの登録" +ms.assetid: e5e16c80-8a8e-4eef-af53-564933b651ef +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# 方法 : サービス モニカーを登録および構成する +COM アプリケーションの [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービス モニカーを型付きコントラクトで使うには、必要な属性を備えた型を COM に登録し、COM アプリケーションとモニカーに、必要なバインディング設定を組み込まなければなりません。 + +### 必要な属性を備えた型を COM に登録するには + +1. [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) ツールを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスからメタデータ コントラクトを取得します。 これにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アセンブリに組み込むソース コードと、クライアント アプリケーションの構成ファイルが生成されます。 + +2. アセンブリ内で定義されている型に `ComVisible` という設定をします。 Visual Studio プロジェクトで、AssemblyInfo.cs ファイルに次の属性を追加してください。 + + ``` + [assembly: ComVisible(true)] + ``` + +3. マネージ [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを、厳密な名前のアセンブリとしてコンパイルします。 そのためには暗号キー ペアで署名する必要があります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] 『.NET 開発者ガイド』の「[厳密な名前でのアセンブリへの署名](http://go.microsoft.com/fwlink/?LinkId=94874)」を参照してください。 + +4. アセンブリ登録 \(Regasm.exe\) ツールに `/tlb` オプションを指定して、アセンブリで定義されている型を COM に登録します。 + +5. グローバル アセンブリ キャッシュ ツール \(Gacutil.exe\) で、グローバル アセンブリ キャッシュにアセンブリを追加します。 + + > [!NOTE] + > アセンブリへの署名とグローバル アセンブリ キャッシュへの追加は、必須ではありません。しかしこれを済ませておくと、実行時には、適切な場所からアセンブリを読み込むための手順が簡単になります。 + +### COM アプリケーションとモニカーに必要なバインディングを設定するには + +- [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) で生成したバインディング定義を、クライアント アプリケーションの構成ファイルにコピーします。 たとえば、Visual Basic 6.0 で開発した実行可能ファイルの名前が CallCenterClient.exe の場合、これと同じディレクトリに、CallCenterConfig.exe.config という名前で構成ファイルを作成します。 するとクライアント アプリケーションはモニカーを使えるようになります。 なお、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に組み込まれている標準のバインディング型を使うのであれば、バインディングの設定は必要ありません。 + + 次の型が登録されています。 + + ``` + using System.ServiceModel; + + ... + + [ServiceContract] + public interface IMathService + { + [OperationContract] + public int Add(int x, int y); + [OperationContract] + public int Subtract(int x, int y); + } + ``` + + このアプリケーションは、`wsHttpBinding` バインディングを使用して公開されています。 このような型とアプリケーション設定であれば、次のようなモニカー文字列が使用されます。 + + ``` + service4:address=http://localhost/MathService, binding=wsHttpBinding, bindingConfiguration=Binding1 + + ``` + + `or` + + ``` + service4:address=http://localhost/MathService, binding=wsHttpBinding, bindingConfiguration=Binding1, contract={36ADAD5A-A944-4d5c-9B7C-967E4F00A090} + + ``` + + `IMathService` 型を定義するアセンブリへの参照を追加すれば、次のコード例のように、Visual Basic 6.0 アプリケーションに上記のモニカー文字列 \(どちらの形式でも可\) を記述できるようになります。 + + ``` + Dim MathProxy As IMathService + Dim result As Integer + + Set MathProxy = GetObject( _ + "service4:address=http://localhost/MathService, _ + binding=wsHttpBinding, _ + bindingConfiguration=Binding1") + + result = MathProxy.Add(3, 5) + + ``` + + この例で、バインディング構成 `Binding1` の定義は、クライアント アプリケーションごとに、vb6appname.exe.config など該当する名前の構成ファイルに記述します。 + + > [!NOTE] + > 同様のコードを C\#、C\+\+、およびその他の .NET 言語アプリケーションで使用できます。 + + > [!NOTE] + > モニカーの形式が正しくないか、サービスを使用できない場合は、`GetObject` を呼び出すと、"構文が無効です" というエラーが返されます。 このエラーが発生した場合は、使用しているモニカーが正しく、サービスが使用可能であることを確認してください。 + + このトピックでは、主に VB 6.0 コードからサービス モニカーを使用する方法について説明していますが、他の言語からサービス モニカーを使用することもできます。 C\+\+ コードからモニカーを使用している場合、次のコードに示すように、Svcutil.exe によって生成されたアセンブリを、"no\_namespace named\_guids raw\_interfaces\_only" と共にインポートする必要があります。 + + ``` + #import "ComTestProxy.tlb" no_namespace named_guids + ``` + + これにより、インポートされたインターフェイス定義は、すべてのメソッドが `HResult` を返すように変更されます。 他の戻り値は、出力パラメーターに変換されます。 メソッドの実行全体は、同じままです。 このために、プロキシでメソッドを呼び出したときの例外の原因を特定できます。 この機能は C\+\+ コードからのみ使用できます。 + +## 参照 + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-replace-the-wcf-url-reservation-with-a-restricted-reservation.md b/docs/framework/wcf/feature-details/how-to-replace-the-wcf-url-reservation-with-a-restricted-reservation.md new file mode 100644 index 00000000000..232d6ae18a6 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-replace-the-wcf-url-reservation-with-a-restricted-reservation.md @@ -0,0 +1,67 @@ +--- +title: "方法: WCF URL 予約を制限付きの予約に置き換える | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2754d223-79fc-4e2b-a6ce-989889f2abfa +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 方法: WCF URL 予約を制限付きの予約に置き換える +URL 予約を使用すると、特定の URL または URL セットからメッセージを受信するユーザーを制限できます。予約は、URL テンプレート、アクセス制御リスト \(ACL\)、およびフラグのセットで構成されます。URL テンプレートは、予約の対象となる URL を定義します。URL テンプレートが処理される方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[受信要求のルーティング](http://go.microsoft.com/fwlink/?LinkId=136764)」を参照してください。ACL は、指定された URL からメッセージを受信できるユーザーまたはユーザー グループを制御します。フラグは、その予約で、ユーザーまたはグループに URL を直接リッスンする権限を与えるか、リッスンを他のプロセスに委任する権限を与えるかを指定します。 + + 既定のオペレーティング システム構成の一部として、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] はポート 80 に対してグローバルにアクセス可能な予約を作成します。これにより、すべてのユーザーは、双方向通信にデュアル HTTP バインディングを使用するアプリケーションを実行できます。この予約の ACL はすべてのユーザー向けなので、管理者は URL または URL セットをリッスンする権限を明示的に許可または拒否することはできません。このトピックでは、この予約を削除し、制限された ACL を使用する予約を再作成する方法について説明します。 + + [!INCLUDE[wv](../../../../includes/wv-md.md)] または [!INCLUDE[lserver](../../../../includes/lserver-md.md)] では、管理特権でのコマンド プロンプトから「`netsh http show urlacl`」と入力することで、すべての HTTP URL 予約を表示できます。次に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] URL 予約の例を示します。 + +``` +Reserved URL : http://+:80/Temporary_Listen_Addresses/ + User: \Everyone + Listen: Yes + Delegate: No + SDDL: D:(A;;GX;;;WD) +``` + + この予約には、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションが双方向通信にデュアル HTTP バインディングを使用する際の URL テンプレートが含まれています。この形式の URL は、デュアル HTTP バインディングを介して通信する際に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントにメッセージを返信するために使用されます。すべてのユーザーに対して、URL をリッスンする権限が与えられていますが、リッスンを他のプロセスに委任する権限は与えられていません。また、ACL は SSDL \(Security Descriptor Definition Language\) で記述されています。SSDL [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[SSDL](http://go.microsoft.com/fwlink/?LinkId=136789)」を参照してください。 + +### WCF URL 予約を削除するには + +1. **\[スタート\]** ボタンをクリックし、**\[すべてのプログラム\]**、**\[アクセサリ\]** の順にポイントします。次に、**\[コマンド プロンプト\]** を右クリックし、表示されるコンテキスト メニューで **\[管理者として実行\]** をクリックします。ユーザー アカウント制御 \(UAC\) のウィンドウで、続行するためのアクセス許可を要求された場合は、**\[続行\]** をクリックします。 + +2. \[コマンド プロンプト\] ウィンドウに「**netsh http delete urlacl url\=http:\/\/\+:80\/Temporary\_Listen\_Addresses\/**」と入力します。 + +3. 予約が正常に削除されると、次のメッセージが表示されます。**URL reservation successfully deleted** + +## 新しいセキュリティ グループおよび新しい制限付き URL 予約の作成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] URL 予約を制限付きの予約に置き換えるには、まず新しいセキュリティ グループを作成する必要があります。この操作は、コマンド プロンプトを使用する方法か、コンピューターの管理コンソールを使用する方法で行うことができます。行う必要があるのはいずれか一方のみです。 + +#### コマンド プロンプトで新しいセキュリティ グループを作成するには + +1. **\[スタート\]** ボタンをクリックし、**\[すべてのプログラム\]**、**\[アクセサリ\]** の順にポイントします。次に、**\[コマンド プロンプト\]** を右クリックし、表示されるコンテキスト メニューで **\[管理者として実行\]** をクリックします。ユーザー アカウント制御 \(UAC\) のウィンドウで、続行するためのアクセス許可を要求された場合は、**\[続行\]** をクリックします。 + +2. コマンド プロンプトで、「**net localgroup "\" \/comment:"\" \/add**」と入力します。**\** は作成するセキュリティ グループの名前に、**\** はそのセキュリティ グループに適した説明に置き換えて入力してください。 + +3. セキュリティ グループが正常に作成されると、次のメッセージが表示されます。**The command completed successfully.** + +#### コンピューターの管理コンソールで新しいセキュリティ グループを作成するには + +1. **\[スタート\]** ボタンをクリックして **\[コントロール パネル\]**、**\[管理ツール\]** の順にポイントし、**\[コンピューターの管理\]** をクリックしてコンピューターの管理コンソールを開きます。ユーザー アカウント制御 \(UAC\) のウィンドウで、続行するためのアクセス許可を要求された場合は、**\[続行\]** をクリックします。 + +2. **\[システム ツール\]** をクリックして、**\[ローカル ユーザーとグループ\]** をクリックします。次に、**\[グループ\]** フォルダーを右クリックし、表示されるコンテキスト メニューで **\[新しいグループ\]** をクリックします。作成する新しいセキュリティ グループについて、**\[グループ名\]** や **\[説明\]** などの情報を入力し、**\[作成\]** をクリックしてセキュリティ グループを作成します。 + +#### 制限付き URL 予約を作成するには + +1. **\[スタート\]** ボタンをクリックし、**\[すべてのプログラム\]**、**\[アクセサリ\]** の順にポイントします。次に、**\[コマンド プロンプト\]** を右クリックし、表示されるコンテキスト メニューで **\[管理者として実行\]** をクリックします。ユーザー アカウント制御 \(UAC\) のウィンドウで、続行するためのアクセス許可を要求された場合は、**\[続行\]** をクリックします。 + +2. コマンド プロンプトで、「**netsh http add urlacl url\=http:\/\/\+:80\/Temporary\_Listen\_Addresses\/ user\="\\\\**」と入力します。**\** はグループを作成するコンピューター名に、**\** は上の手順で作成したセキュリティ グループ名に置き換えて入力してください。 + +3. 予約が正常に作成されると、**URL reservation successfully added**. \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-retrieve-metadata-and-implement-a-compliant-service.md b/docs/framework/wcf/feature-details/how-to-retrieve-metadata-and-implement-a-compliant-service.md new file mode 100644 index 00000000000..73b0bef9782 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-retrieve-metadata-and-implement-a-compliant-service.md @@ -0,0 +1,72 @@ +--- +title: "方法 : メタデータの取得および準拠サービスの実装をする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f6f3a2b9-c8aa-4b0b-832c-ec2927bf1163 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 方法 : メタデータの取得および準拠サービスの実装をする +サービスのデザイン担当者と実装担当者が同じであるとは限りません。 アプリケーションの相互運用が重要な環境では、コントラクトを Web サービス記述言語 (WSDL) でデザインまたは記述した場合、開発者はそのコントラクトに準拠するサービスを実装する必要があります。 既存のサービスを [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に移行することもできますが、その物理メッセージ フォーマットを維持しなければなりません。 さらに、双方向コントラクトでは、呼び出し元でコールバック コントラクトを実装する必要もあります。 + + このような場合は、使用する必要があります、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) (または同等のツール) をコントラクトの要件を満たすために実装可能なマネージ言語でサービス コントラクト インターフェイスを生成します。 通常、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)が、チャネル ファクトリを使用するサービス コントラクトを取得するために使用または[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]クライアントの種類と同様に、正しいバインディングとアドレスを設定するクライアント構成ファイルもあります。 生成された構成ファイルを使用するには、それをサービスの構成ファイルに変更する必要があります。 また、サービス コントラクトを変更する必要もあります。 + +### データを取得して準拠サービスを実装するには + +1. 使用して、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)メタデータ ファイルまたはコード ファイルを生成するメタデータ エンドポイントに対してです。 + +2. マークされている (ある場合は&1; つ以上の) で関係のあるインターフェイスが含まれる出力コード ファイルの部分の検索、 属性です。 次のコード例によって生成された&2; つのインターフェイスを示しています。 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)します。 最初の例 (`ISampleService`) は、準拠サービスを作成するために実装するサービス コントラクト インターフェイスです。 2 番目 (`ISampleServiceChannel`)、サービス コントラクト インターフェイスを拡張するクライアント用のヘルパー インターフェイスですし、 クライアント アプリケーションで使用されます。 + + [!code-csharp[ClientProxyCodeSample#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/clientproxycodesample/cs/proxycode.cs#2)] + +3. WSDL がすべての操作に対する応答アクションを指定していない場合、生成後の操作コントラクトがあります、 プロパティがワイルドカード文字 (*) に設定します。 このプロパティの設定を削除します。 削除しない場合は、サービス コントラクト メタデータを実装するときに、それらの操作のメタデータをエクスポートできません。 + +4. クラスにインターフェイスを実装してサービスをホストします。 例については、次を参照してください。[方法: サービス コントラクトを実装する](../../../../docs/framework/wcf/how-to-implement-a-wcf-contract.md)、または例」のセクションの下の単純な実装を参照してください。 + +5. クライアント構成ファイルを[ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)生成されると、変更、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/client.md)構成セクションに、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/services.md)構成セクション。 (生成されたクライアント アプリケーション構成ファイルの例については、次の例を参照してください)。 + +6. 内で、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/services.md)構成セクションで、作成、`name`属性、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/services.md)サービス実装の構成セクション。 + +7. サービスの `name` 属性をユーザーのサービス実装の構成名に設定します。 + +8. 実装するサービス コントラクトを使用するエンドポイント構成要素をサービス構成セクションに追加します。 + +## 例 + 次のコード例を実行して、生成されたコード ファイルの大部分を示しています、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)メタデータ ファイルに対してです。 + + このコードには、次の項目が示されています。 + +- コントラクトの要件に準拠するサービス コントラクト インターフェイス (実装する場合) (`ISampleService`)。 + +- サービス コントラクト インターフェイスを拡張するクライアント用のヘルパー インターフェイスとクライアント アプリケーションで使用されます (`ISampleServiceChannel`)。 + +- 拡張するヘルパー クラスクライアント アプリケーションで使用されます (`SampleServiceClient`)。 + +- サービスから生成された構成ファイル。 + +- `ISampleService` サービスの簡単な実装。 + +- クライアント側の構成ファイルからサービス側バージョンへの変換。 + + [!code-csharp[ClientProxyCodeSample#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/clientproxycodesample/cs/proxycode.cs#1)] + + [!code[ClientProxyCodeSample#10](../../../../samples/snippets/common/VS_Snippets_CFX/clientproxycodesample/common/client.exe.config#10)] + [!code-csharp[ClientProxyCodeSample#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/clientproxycodesample/cs/client.exe.config#10)] + + [!code-csharp[ClientProxyCodeSample#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/clientproxycodesample/cs/hostapplication.cs#5)] + + [!code[ClientProxyCodeSample#20](../../../../samples/snippets/common/VS_Snippets_CFX/clientproxycodesample/common/hostapplication.exe.config#20)] + [!code-csharp[ClientProxyCodeSample#20](../../../../samples/snippets/csharp/VS_Snippets_CFX/clientproxycodesample/cs/hostapplication.exe.config#20)] + +## 関連項目 + [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md b/docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md new file mode 100644 index 00000000000..cd33b31aeb8 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md @@ -0,0 +1,53 @@ +--- +title: "方法 : 証明書のサムプリントを取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "証明書 [WCF], サムプリントの取得" +ms.assetid: da3101aa-78cd-4c34-9652-d1f24777eeab +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# 方法 : 証明書のサムプリントを取得する +認証に X.509 証明書を使用する [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションを記述するときは、多くの場合、証明書に含まれているクレームを指定する必要があります。 たとえば、 メソッドで 列挙体を使用する場合は、拇印クレームを指定する必要があります。 クレーム値を検索するには 2 つの手順を実行する必要があります。 まず、証明書用の Microsoft 管理コンソール \(MMC\) スナップインを開きます \(「[方法 : MMC スナップインを使用して証明書を参照する](../../../../docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md)」を参照\)。 次に、ここで説明されているとおりに適切な証明書を検索してその拇印 \(または他のクレーム値\) をコピーします。 + + サービス認証で証明書を使用する場合は、**\[Issued To\]** 列 \(コンソールの 1 番目の列\) の値に注意することが重要です。 トランスポート セキュリティとして SSL \(Secure Sockets Layer\) を使用する場合、実行される最初のチェックの 1 つで、サービスのベース アドレス URI \(Uniform Resource Identifier\) が **\[Issued To\]** の値と比較されます。 値は一致する必要があります。一致しない場合は、認証が停止します。 + + また、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] SDK の Makecert.exe ツールを使用して、開発時専用の一時的な証明書を作成することもできます。 ただし、既定では、このような証明書は証明機関から発行されないため、実稼働環境では使用できません。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : 開発中に使用する一時的な証明書を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development.md)。 + +### 証明書の拇印を取得するには + +1. 証明書用の Microsoft 管理コンソール \(MMC\) スナップインを開きます \(「[方法 : MMC スナップインを使用して証明書を参照する](../../../../docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md)」を参照\)。 + +2. **\[Console Root\]** ウィンドウの左ペインで、**\[Certificates \(Local Computer\)\]** をクリックします。 + +3. **\[Personal\]** フォルダーをクリックして展開します。 + +4. **\[Certificates\]** フォルダーをクリックして展開します。 + +5. 証明書リストの **\[Intended Purposes\]** 見出しを確認します。 目的として **\[Client Authentication\]** が表示されている証明書を検索します。 + +6. 証明書をダブルクリックします。 + +7. **\[Certificate\]** ダイアログ ボックスの **\[Details\]** タブをクリックします。 + +8. フィールド リストをスクロールし、**\[Thumbprint\]** をクリックします。 + +9. ボックスから 16 進文字をコピーします。 この拇印を `X509FindType` のコードで使用する場合は、16 進文字の間のスペースを削除します。 たとえば、拇印 "a9 09 50 2d d8 2a e4 14 33 e6 f8 38 86 b0 0d 42 77 a3 2a 7b" は、コード内で "a909502dd82ae41433e6f83886b00d4277a32a7b" として指定する必要があります。 + +## 参照 + + + [方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md) + [方法 : MMC スナップインを使用して証明書を参照する](../../../../docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md) + [方法 : 開発中に使用する一時的な証明書を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-secure-a-service-with-an-x-509-certificate.md b/docs/framework/wcf/feature-details/how-to-secure-a-service-with-an-x-509-certificate.md new file mode 100644 index 00000000000..8c827b5c273 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-secure-a-service-with-an-x-509-certificate.md @@ -0,0 +1,90 @@ +--- +title: "方法 : X.509 証明書を使用してサービスをセキュリティで保護する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2d06c2aa-d0d7-4e5e-ad7e-77416aa1c10b +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# 方法 : X.509 証明書を使用してサービスをセキュリティで保護する +X.509 証明書を使用してサービスをセキュリティ保護することは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の大半のバインディングで使用される基本的な手法です。ここでは、X.509 証明書を使用して自己ホスト サービスを構成する手順を示します。 + + サーバーの認証に使用できる有効な証明書があることが前提条件になります。この証明書は、信頼された証明機関によってサーバーに対して発行される必要があります。証明書が有効でない場合、サービスの使用を試みるすべてのクライアントがサービスを信頼しなくなるため、接続が作成されません。証明書の使用[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。 + +### コードにより証明書を使用してサービスを構成するには + +1. サービス コントラクトを作成し、サービスを実装します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][サービスの設計と実装](../../../../docs/framework/wcf/designing-and-implementing-services.md). + +2. 次のコードに示すように、 クラスのインスタンスを作成し、そのセキュリティ モードを に設定します。 + + [!code-csharp[C_SecureWithCertificate#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewithcertificate/cs/source.cs#1)] + [!code-vb[C_SecureWithCertificate#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewithcertificate/vb/source.vb#1)] + +3. 次のコードに示すように、2 つの 変数を作成し、それぞれコントラクト型と実装されたコントラクトに割り当てます。 + + [!code-csharp[C_SecureWithCertificate#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewithcertificate/cs/source.cs#2)] + [!code-vb[C_SecureWithCertificate#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewithcertificate/vb/source.vb#2)] + +4. サービスのベース アドレス用に クラスのインスタンスを作成します。`WSHttpBinding` では HTTP トランスポートを使用するため、URI \(Uniform Resource Identifier\) がこのスキーマで開始されている必要があります。そうでない場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、サービスが開かれたときに例外をスローします。 + + [!code-csharp[C_SecureWithCertificate#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewithcertificate/cs/source.cs#3)] + [!code-vb[C_SecureWithCertificate#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewithcertificate/vb/source.vb#3)] + +5. 実装したコントラクト型変数と URI を使用して クラスの新しいインスタンスを作成します。 + + [!code-csharp[C_SecureWithCertificate#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewithcertificate/cs/source.cs#4)] + [!code-vb[C_SecureWithCertificate#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewithcertificate/vb/source.vb#4)] + +6. メソッドを使用して、サービスに を追加します。次のコードに示すように、コントラクト、バインディング、およびエンドポイント アドレスをコンストラクターに渡します。 + + [!code-csharp[C_SecureWithCertificate#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewithcertificate/cs/source.cs#5)] + [!code-vb[C_SecureWithCertificate#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewithcertificate/vb/source.vb#5)] + +7. 省略可能。サービスからメタデータを取得するには、新しい オブジェクトを作成し、 プロパティを `true` に設定します。 + + [!code-csharp[C_SecureWithCertificate#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewithcertificate/cs/source.cs#6)] + [!code-vb[C_SecureWithCertificate#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewithcertificate/vb/source.vb#6)] + +8. クラスの メソッドを使用して、有効な証明書をサービスに追加します。このメソッドでは、いくつかある方法の 1 つを使用して証明書を見つけます。この例では、 列挙体を使用します。この列挙体では、提供された値が証明書の発行先のエンティティの名前であることを指定します。 + + [!code-csharp[C_SecureWithCertificate#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewithcertificate/cs/source.cs#7)] + [!code-vb[C_SecureWithCertificate#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewithcertificate/vb/source.vb#7)] + +9. メソッドを呼び出して、サービスのリッスンを開始します。コンソール アプリケーションを作成する場合は、 メソッドを呼び出して、サービスをリッスン状態に保持します。 + + [!code-csharp[C_SecureWithCertificate#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewithcertificate/cs/source.cs#8)] + [!code-vb[C_SecureWithCertificate#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewithcertificate/vb/source.vb#8)] + +## 使用例 + 次の例では、 メソッドを使用して、X.509 証明書でサービスを構成します。 + + [!code-csharp[C_SecureWithCertificate#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewithcertificate/cs/source.cs#9)] + [!code-vb[C_SecureWithCertificate#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewithcertificate/vb/source.vb#9)] + +## コードのコンパイル + コードのコンパイルには次の名前空間が必要です。 + +- + +- + +- + +- + +- + +- + +## 参照 + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-secure-messages-within-reliable-sessions.md b/docs/framework/wcf/feature-details/how-to-secure-messages-within-reliable-sessions.md new file mode 100644 index 00000000000..f6151e3aebd --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-secure-messages-within-reliable-sessions.md @@ -0,0 +1,67 @@ +--- +title: "方法 : 信頼できるセッション内でメッセージをセキュリティで保護する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aee33e50-936f-4486-9ca8-c1520c19a62d +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# 方法 : 信頼できるセッション内でメッセージをセキュリティで保護する +ここでは、信頼できるセッション内で交換されるメッセージに対して、メッセージ レベルのセキュリティを有効にするために必要な手順について説明します。このとき、信頼できるセッションがオプションでサポートされているシステム指定のバインディングを使用します。セキュリティで保護された信頼できるセッションを有効にするには、コードを使用して強制的に行うか、構成ファイルで宣言します。この手順では、クライアントとサービスの構成ファイルを使用して、セキュリティで保護された信頼できるセッションを有効にします。 + + この手順の主な部分は、次の 3 つの作業で構成されます。 + +1. クライアントとサービスのメッセージ交換は信頼できるセッション内で行うことを指定します。 + +2. 信頼できるセッション内でメッセージ レベルのセキュリティを要求します。 + +3. サービスに対する認証時にクライアントが使用する必要があるクライアント資格情報を指定します。 + + 最初の作業で重要なのは、エンドポイント構成要素に \(この例の場合\) "MessageSecurity" という名前のバインディング構成を参照する `bindingConfiguration` 属性が含まれていることです。[\](../../../../docs/framework/misc/binding.md) 構成要素は、この名前を参照して、[reliableSession](http://msdn.microsoft.com/ja-jp/9c93818a-7dfa-43d5-b3a1-1aafccf3a00b) 要素の `enabled` 属性を `true` に設定することで信頼できるセッションを有効にします。信頼できるセッション内で使用できる順序付き配信の保証は、`ordered` 属性を `true` に設定することによって要求できます。 + + この構成手順のベースであるソース例については、「[WS 信頼できるセッション](../../../../docs/framework/wcf/samples/ws-reliable-session.md)」を参照してください。 + + 2 番目の作業で必要な項目は、クライアントとサービスの\<`binding`\> 要素に含まれている \<`security`\> 要素の `mode` 属性を `Message` に設定することによって達成できます。 + + 3 番目の作業で必要な項目は、クライアントとサービスの\<`security`\> 要素に含まれている \<`message`\> 要素の `clientCredentialType` 属性を `Certificate` に設定することによって達成できます。 + +> [!NOTE] +> 信頼できるセッションでメッセージ セキュリティを使用するときに、クライアントが認証されていないと、信頼できるメッセージ機能は最初の失敗で例外をスローするのではなく、タイムアウトが発生するまでクライアントの認証を試みます。 + +### 信頼できるセッションを使用するためにサービスを WSHttpBinding で構成するには + +1. この手順については、「[方法 : 信頼されたセッション内のメッセージを変換する](../../../../docs/framework/wcf/feature-details/how-to-exchange-messages-within-a-reliable-session.md)」を参照してください。 + +### 信頼できるセッションを使用するためにクライアントを WSHttpBinding で構成するには + +1. この手順については、「[方法 : 信頼されたセッション内のメッセージを変換する](../../../../docs/framework/wcf/feature-details/how-to-exchange-messages-within-a-reliable-session.md)」を参照してください。 + +### 構成でモードと ClientCredentialType を設定するには + +1. 構成ファイルの [\](../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) 要素に、適切なバインド要素を追加します。次の例では [\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) 要素を追加しています。 + +2. \<`binding`\> 要素を追加し、`name` 属性に適切な値を設定します。 + +3. `` 要素を追加し、`mode` 属性に `Message` を設定します。 + + 次の例では、mode を `Message` に設定し、\<`message`\> 要素の `clientCredentialType` 属性を `Certificate` に設定します。 + + ``` + + + + + + + + ``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-secure-metadata-endpoints.md b/docs/framework/wcf/feature-details/how-to-secure-metadata-endpoints.md new file mode 100644 index 00000000000..1cade39d6c2 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-secure-metadata-endpoints.md @@ -0,0 +1,106 @@ +--- +title: "方法 : セキュリティで保護されたメタデータ エンドポイント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9f71b6ae-737c-4382-8d89-0a7b1c7e182b +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 13 +--- +# 方法 : セキュリティで保護されたメタデータ エンドポイント +サービスのメタデータには、悪意のあるユーザーに利用される可能性がある、アプリケーションに関する機密情報が含まれています。また、サービスのコンシューマーにも、サービスのメタデータを取得するためのセキュリティで保護された機構が必要です。したがって、状況に応じて、セキュリティで保護されたエンドポイントを使用してメタデータを公開する必要があります。 + + メタデータ エンドポイントは、一般に、アプリケーション エンドポイントをセキュリティで保護するために [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に定義されている標準のセキュリティ機構を使用して保護されます \([!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md).\) + + ここでは、SSL \(Secure Sockets Layer\) 証明書によって保護されたエンドポイント \(つまり、HTTPS エンドポイント\) を作成する手順を示します。 + +### セキュリティで保護された HTTPS GET メタデータ エンドポイントをコードで作成するには + +1. 適切な X.509 証明書を使用してポートを構成します。この証明書は信頼された証明機関から発行され、かつ "サービス承認" の用途に使用される必要があります。証明書をポートに関連付けるには、HttpCfg.exe ツールを使用する必要があります。「[方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md)」を参照してください。 + + > [!IMPORTANT] + > 証明書またはそのドメイン ネーム システム \(DNS: Domain Name System\) のサブジェクトが、コンピューターの名前と一致している必要があります。これは、HTTPS 機構が最初に実行する手順に、呼び出されたアドレスと同じ URI \(Uniform Resource Identifier\) に対して証明書が発行されているかどうかのチェックが含まれるために必要です。 + +2. クラスの新しいインスタンスを作成します。 + +3. クラスの プロパティを `true` に設定します。 + +4. プロパティを適切な URL に設定します。絶対アドレスを指定する場合、URL は "https:\/\/" で開始する必要があります。相対アドレスを指定する場合は、サービス ホストに HTTPS ベースのアドレスを指定する必要があります。このプロパティが設定されていない場合、既定のアドレスは ""、またはサービスに HTTPS ベースのアドレスを直接指定したものになります。 + +5. 作成したインスタンスを、 クラスの プロパティから返される動作コレクションに追加します。コードは次のようになります。 + + [!code-csharp[c_HowToSecureEndpoint#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtosecureendpoint/cs/source.cs#1)] + [!code-vb[c_HowToSecureEndpoint#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtosecureendpoint/vb/source.vb#1)] + +### セキュリティで保護された HTTPS GET メタデータ エンドポイントを構成で作成するには + +1. サービスの構成ファイルで、[\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素を [\](../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) 要素に追加します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md) 要素を [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素に追加します。 + +3. [\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md) 要素を `` 要素に追加します。 + +4. `` 要素の `name` 属性を適切な値に設定します。`name` 属性は必須です。下の例では、`mySvcBehavior` を値として使用しています。 + +5. [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicemetadata.md)を `` 要素に追加します。 + +6. `` 要素の `httpsGetEnabled` 属性を `true` に設定します。 + +7. `` 要素の `httpsGetUrl` 属性を適切な値に設定します。絶対アドレスを指定する場合、URL は "https:\/\/" で開始する必要があります。相対アドレスを指定する場合は、サービス ホストに HTTPS ベースのアドレスを指定する必要があります。このプロパティが設定されていない場合、既定のアドレスは ""、またはサービスに HTTPS ベースのアドレスを直接指定したものになります。 + +8. サービスで動作を使用するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/service.md) 要素の `behaviorConfiguration` 属性を動作要素の名前属性の値に設定します。完全な構成コードを次の例に示します。 + + ``` + + + + + + + + + + + + + + + + + + ``` + +## 使用例 + 次の例では、 クラスのインスタンスを作成して、エンドポイントを追加します。次に、 クラスのインスタンスを作成し、プロパティを設定してセキュリティで保護された Metadata Exchange ポイントを作成しています。 + + [!code-csharp[c_HowToSecureEndpoint#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtosecureendpoint/cs/source.cs#0)] + [!code-vb[c_HowToSecureEndpoint#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtosecureendpoint/vb/source.vb#0)] + +## コードのコンパイル + このコード例では、次の名前空間を使用します。 + +- + +- + +## 参照 + + + + [方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md) + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [メタデータを使用する場合のセキュリティ上の考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-with-metadata.md) + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-serialize-and-deserialize-json-data.md b/docs/framework/wcf/feature-details/how-to-serialize-and-deserialize-json-data.md new file mode 100644 index 00000000000..afdc1d5a740 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-serialize-and-deserialize-json-data.md @@ -0,0 +1,151 @@ +--- +title: "方法 : JSON データをシリアル化および逆シリアル化する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 88abc1fb-8196-4ee3-a23b-c6934144d1dd +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 方法 : JSON データをシリアル化および逆シリアル化する +JSON (JavaScript Object Notation) は、クライアント ブラウザーと AJAX 対応の Web サービスとの間で、少量のデータを高速に交換できる効率的なデータ エンコード形式です。 + + ここでは JSON でエンコードされたデータに .NET 型のオブジェクトをシリアル化し、逆シリアル化、JSON 形式でデータを使用して .NET 型のインスタンスをします。 この例では、ユーザー定義された `Person` 型のシリアル化と逆シリアル化を示すためにデータ コントラクトを使用します。 + + AJAX 対応エンドポイントで公開されたサービス操作でデータ コントラクト型を使用する場合、JSON でのシリアル化および逆シリアル化は通常 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] によって自動的に処理されます。 ただし、特定の場合においては JSON データを直接処理する必要があります。このトピックでは、このようなシナリオについて説明します。 + +> [!NOTE] +> サーバー上で送信応答のシリアル化中にエラーが発生した場合、または応答操作がなんらかの理由で例外をスローした場合、エラーにより応答がクライアントに戻らないことがあります。 + + このトピックのに基づいて、 [JSON のシリアル化](../../../../docs/framework/wcf/samples/json-serialization.md)サンプルです。 + +### Person のデータ コントラクトを定義するには + +1. データ コントラクトを定義`Person`アタッチすることにより、 クラスにし、 属性メンバーをシリアル化します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]データ コントラクトを参照してください[サービス コントラクトの設計](../../../../docs/framework/wcf/designing-service-contracts.md)します。 + + ``` + [DataContract] + internal class Person + { + [DataMember] + internal string name; + + [DataMember] + internal int age; + } + ``` + +### Person 型のインスタンスを JSON にシリアル化するには + +1. `Person` 型のインスタンスを作成します。 + + ``` + Person p = new Person(); + p.name = "John"; + p.age = 42; + ``` + +2. シリアル化、`Person`オブジェクトを使用してメモリ ストリームをします。 + + ``` + MemoryStream stream1 = new MemoryStream(); + DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person)); + ``` + +3. 使用して、 に JSON データをストリームに書き込みます。 + + ``` + ser.WriteObject(stream1, p); + ``` + +4. JSON の出力を表示します。 + + ``` + stream1.Position = 0; + StreamReader sr = new StreamReader(stream1); + Console.Write("JSON form of Person object: "); + Console.WriteLine(sr.ReadToEnd()); + ``` + +### JSON から Person 型のインスタンスに逆シリアル化するには + +1. 新しいインスタンスに、JSON エンコードされたデータを逆シリアル化`Person`を使用して、 のメソッド、 します。 + + ``` + stream1.Position = 0; + Person p2 = (Person)ser.ReadObject(stream1); + ``` + +2. 結果を表示します。 + + ``` + Console.Write("Deserialized back, got name="); + Console.Write(p2.name); + Console.Write(", age="); + Console.WriteLine(p2.age); + ``` + +## 例 + +``` +// Create a User object and serialize it to a JSON stream. +public static string WriteFromObject() +{ + //Create User object. + User user = new User("Bob", 42); + + //Create a stream to serialize the object to. + MemoryStream ms = new MemoryStream(); + + // Serializer the User object to the stream. + DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User)); + ser.WriteObject(ms, user); + byte[] json = ms.ToArray(); + ms.Close(); + return Encoding.UTF8.GetString(json, 0, json.Length); + +} + +// Deserialize a JSON stream to a User object. +public static User ReadToObject(string json) +{ + User deserializedUser = new User(); + MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)); + DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedUser.GetType()); + deserializedUser = ser.ReadObject(ms) as User; + ms.Close(); + return deserializedUser; +} + +``` + +> [!NOTE] +> JSON シリアライザーは、次のサンプル コードに示すように、データ コントラクターの複数のメンバーが同じ名前である場合、シリアル化例外をスローします。 + +``` +[DataContract] +public class TestDuplicateDataBase +{ + [DataMember] + public int field1 = 123; +} +[DataContract] +public class TestDuplicateDataDerived : TestDuplicateDataBase +{ + [DataMember] + public new int field1 = 999; +} +``` + +## 関連項目 + [スタンドアロン JSON のシリアル化](../../../../docs/framework/wcf/feature-details/stand-alone-json-serialization.md) + [JSON およびその他のデータ転送形式をサポートします。](../../../../docs/framework/wcf/feature-details/support-for-json-and-other-data-transfer-formats.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-service-data-partitioning.md b/docs/framework/wcf/feature-details/how-to-service-data-partitioning.md new file mode 100644 index 00000000000..1a8ea00c0fc --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-service-data-partitioning.md @@ -0,0 +1,187 @@ +--- +title: "サービス データのパーティションを分割する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1ccff72e-d76b-4e36-93a2-e51f7b32dc83 +caps.latest.revision: 3 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 3 +--- +# サービス データのパーティションを分割する方法 +このトピックでは、メッセージを同じ送信先サービスの複数のインスタンスにパーティション分割するのに必要な、基本的な手順について説明します。サービス データのパーティション分割は、一般的に、優れた品質のサービスを提供するためにサービスを拡張する必要がある場合や、さまざまな顧客からの要求を特定の方法で処理する必要がある場合に使用されます。たとえば、重要な顧客 \("ゴールド" 顧客\) からのメッセージは、標準顧客からのメッセージよりも高い優先度で処理される必要がある場合があります。 + + この例では、メッセージが regularCalc サービスの 2 つのインスタンスの 1 つにルーティングされます。サービスの両方のインスタンスは同じですが、calculator1 エンドポイントで表されるサービスは、重要な顧客から受け取ったメッセージを処理し、calculator 2 エンドポイントは、その他の顧客からのメッセージを処理します。 + + クライアントから送信されたメッセージには、どちらのサービス インスタンスにメッセージをルーティングする必要があるかを識別するのに使用できる一意のデータはありません。各クライアントが特定の送信先サービスにデータをルーティングできるようにするため、メッセージの受信に使用される 2 つのサービス エンドポイントを実装します。 + +> [!NOTE] +> この例では、特定のエンドポイントを使用してデータをパーティション分割しますが、ヘッダーや本文データなど、メッセージ自体に含まれている情報を使用することもできます。 + +### サービス データのパーティション分割の実装 + +1. サービスによって公開されるサービス エンドポイントを指定することによって、ルーティング サービスの基本的な構成を作成します。次の例では、メッセージの受信に使用する、2 つのサービス エンドポイントを定義します。また、regularCalc サービス インスタンスへのメッセージ送信に使用する、クライアント エンドポイントも定義します。 + + ```xml + + + + + + + + + + + + + + + + + + + + + ``` + +2. 送信先エンドポイントにメッセージをルーティングするのに使用するフィルターを定義します。この例では、EndpointName フィルターを使用して、どのサービス エンドポイントがメッセージを受信したかを判断します。次の例では、必要なルーティング セクションおよびフィルターを定義します。 + + ```xml + + + + + + + ``` + +3. 各フィルターをクライアント エンドポイントと関連付けるフィルター テーブルを定義します。この例では、メッセージの受信に使用された特定のエンドポイントに基づいて、メッセージがルーティングされます。メッセージは 2 つのフィルターのどちらかにのみ一致するため、フィルターが評価される順序をフィルターの優先順位で制御する必要はありません。 + + 次のコードでは、フィルター テーブルを定義し、前に定義されたフィルターを追加します。 + + ```xml + + + + + + + + + ``` + +4. 受信メッセージをテーブルに含まれているフィルターと照合して評価するには、ルーティング動作を使用して、フィルター テーブルをサービス エンドポイントと関連付ける必要があります。次の例は、filterTable1 をサービス エンドポイントと関連付ける方法を示しています。 + + ```xml + + + + + + + + + + ``` + +## 使用例 + 構成ファイル全体の一覧を次に示します。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [ルーティング サービス](../../../../docs/framework/wcf/samples/routing-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-service-versioning.md b/docs/framework/wcf/feature-details/how-to-service-versioning.md new file mode 100644 index 00000000000..d5a31abdd7d --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-service-versioning.md @@ -0,0 +1,340 @@ +--- +title: "サービスのバージョンを管理する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4287b6b3-b207-41cf-aebe-3b1d4363b098 +caps.latest.revision: 6 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 6 +--- +# サービスのバージョンを管理する方法 +このトピックでは、メッセージを同じサービスの異なるバージョンにルーティングするルーティング構成を作成するために必要な、基本的な手順について説明します。この例では、電卓サービスの 2 つのバージョン `roundingCalc` \(v1\) および `regularCalc` \(v2\) にメッセージがルーティングされます。これらの実装は両方とも同じ操作をサポートしますが、古い方のサービス `roundingCalc` では、戻る前にすべての計算を最も近い整数値に丸めます。クライアント アプリケーションは、新しい方の `regularCalc` サービスを使用するかどうかを示すことが可能である必要があります。 + +> [!WARNING] +> メッセージをサービスの特定のバージョンにルーティングするには、ルーティング サービスで、メッセージの内容に基づいて、そのメッセージの転送先を特定できることが必要です。次に示す手法では、クライアントがメッセージ ヘッダーに情報を挿入することでバージョンを指定します。サービスのバージョンを指定するいくつかの手法では、クライアントが追加データを渡す必要はありません。たとえば、サービスの最新のバージョン、または最も互換性のあるバージョンにメッセージをルーティングしたり、ルーターが標準の SOAP エンベロープの一部を使用したりすることもできます。 + + 次の操作が両方のサービスによって公開されます。 + +- \[追加\] + +- 減算 + +- 乗算 + +- 除算 + + 両方のサービス実装が同じ操作を処理し、返すデータを除いて基本的には同一であるため、クライアント アプリケーションから送信されるメッセージに含まれる基本データでは、要求をルーティングする方法を決定できません。たとえば、両方のサービスの既定のアクションが同じであるために、アクション フィルターを使用できない場合があります。 + + この問題は、いくつかの方法で解決できます。たとえば、ルーター上でサービスの各バージョン用に特定のエンドポイントを公開したり、メッセージにカスタム ヘッダー要素を追加してサービスのバージョンを示したりできます。どちらの方法でも、受信メッセージをサービスの特定のバージョンに一意にルーティングできますが、異なるサービス バージョンの要求を区別するには、一意のメッセージ コンテンツを使用することをお勧めします。 + + この例では、クライアント アプリケーションがカスタム ヘッダー CalcVer を要求メッセージに追加します。このヘッダーには、メッセージのルーティング先となるサービスのバージョンを示す値が含まれています。値が 1 の場合は roundingCalc サービス、値が 2 の場合は regularCalc サービスが、メッセージを処理する必要があります。これにより、クライアント アプリケーションは、サービスのどちらのバージョンでメッセージが処理されるかを直接制御できます。カスタム ヘッダーはメッセージ内に含まれる値であるため、1 つのエンドポイントを使用して、サービスの両方のバージョン宛てのメッセージを受信できます。クライアント アプリケーションで次のコードを使用して、このカスタム ヘッダーをメッセージに追加できます。 + +```csharp +messageHeadersElement.Add(MessageHeader.CreateHeader("CalcVer", "http://my.custom.namespace/", "2")); +``` + +### サービスのバージョン管理の実装 + +1. サービスによって公開されるサービス エンドポイントを指定することによって、ルーティング サービスの基本的な構成を作成します。次の例では、メッセージの受信に使用される、単一のサービス エンドポイントを定義します。また、`roundingCalc` \(v1\) サービスおよび `regularCalc` \(v2\) サービスへのメッセージ送信に使用する、クライアント エンドポイントも定義します。 + + ```xml + + + + + + + + + + + + + + + + + + + ``` + +2. 送信先エンドポイントにメッセージをルーティングするのに使用するフィルターを定義します。この例では、XPath フィルターを使用してカスタム ヘッダー CalcVer の値を検出し、メッセージのルーティング先となるバージョンを特定します。XPath フィルターは、CalcVer ヘッダーを含まないメッセージの検出にも使用します。次の例では、必要なフィルターおよび名前空間のテーブルを定義します。 + + ```xml + + + + + + + + + + + + + [!NOTE] + > s12 の名前空間プレフィックスは、既定では名前空間のテーブルで定義され、名前空間 "http:\/\/www.w3.org\/2003\/05\/soap\-envelope" を表します。 + +3. 各フィルターをクライアント エンドポイントと関連付けるフィルター テーブルを定義します。値が 1 の CalcVer ヘッダーがメッセージに含まれる場合は、regularCalc サービスに送信されます。ヘッダーに値 2 が含まれる場合は、roundingCalc サービスに送信されます。ヘッダーがない場合、メッセージは regularCalc にルーティングされます。 + + 次のコードでは、フィルター テーブルを定義し、前に定義されたフィルターを追加します。 + + ```xml + + + + + + + + + + + + ``` + +4. 受信メッセージをフィルター テーブルに含まれているフィルターと照合して評価するには、ルーティング動作を使用して、フィルター テーブルをサービス エンドポイントと関連付ける必要があります。次の例は、filterTable1 をサービス エンドポイントと関連付ける方法を示しています。 + + ```xml + + + + + + + + + + ``` + +## 使用例 + 構成ファイル全体の一覧を次に示します。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 使用例 + クライアント アプリケーションの全体の一覧を次に示します。 + +```csharp + +using System; +using System.ServiceModel; +using System.ServiceModel.Channels; + +namespace Microsoft.Samples.AdvancedFilters +{ + //The service contract is defined in generatedClient.cs, generated from the service by the svcutil tool. + + //Client implementation code. + class Client + { + static void Main() + { + //Print out the welcome text + Console.WriteLine("This sample routes the Calculator Sample through the new WCF RoutingService"); + Console.WriteLine("Wait for all the services to indicate that they've started, then press"); + Console.WriteLine(" to start the client."); + + while (Console.ReadLine() != "quit") + { + //Offer the Address configuration for the client + Console.WriteLine(""); + Console.WriteLine("Welcome to the Calculator Client!"); + + EndpointAddress epa; + //set the default address as the general router endpoint + epa = new EndpointAddress("http://localhost/routingservice/router/calculator"); + + //set up the CalculatorClient with the EndpointAddress, the WSHttpBinding, and the ICalculator contract + //We use the WSHttpBinding so that the outgoing has a message envelope, which we'll manipulate in a minute + CalculatorClient client = new CalculatorClient(new WSHttpBinding(), epa); + //client.Endpoint.Contract = ContractDescription.GetContract(typeof(ICalculator)); + + //Ask the customer if they want to add a custom header to the outgoing message. + //The Router will look for this header, and if so ignore the endpoint the message was + //received on, and instead direct the message to the RoundingCalcService. + Console.WriteLine(""); + Console.WriteLine("Which calculator service should be used?"); + Console.WriteLine("Enter 1 for the rounding calculator, 2 for the regular calculator."); + Console.WriteLine("[1] or [2]?"); + + string header = Console.ReadLine(); + + //get the current operationContextScope from the client's inner channel + using (OperationContextScope ocs = new OperationContextScope((client.InnerChannel))) + { + //get the outgoing message headers element (collection) from the context + MessageHeaders messageHeadersElement = OperationContext.Current.OutgoingMessageHeaders; + + //if they wanted to create the header, go ahead and add it to the outgoing message + if (header != null && (header=="1" || header=="2")) + { + //create a new header "RoundingCalculator", no specific namespace, and set the value to + //the value of header. + //the Routing Service will look for this header in order to determine if the message + //should be routed to the RoundingCalculator + messageHeadersElement.Add(MessageHeader.CreateHeader("CalcVer", "http://my.custom.namespace/", header)); + } + else //incorrect choice, no header added + { + Console.WriteLine("Incorrect value entered, not adding a header"); + } + + //call the client operations + CallClient(client); + } + + //close the client to clean it up + client.Close(); + Console.WriteLine(); + Console.WriteLine("Press to run the client again or type 'quit' to quit."); + } + } + + private static void CallClient(CalculatorClient client) + { + Console.WriteLine(""); + Console.WriteLine("Sending!"); + // Call the Add service operation. + double value1 = 100.00D; + double value2 = 15.99D; + double result = client.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + + // Call the Subtract service operation. + value1 = 145.00D; + value2 = 76.54D; + result = client.Subtract(value1, value2); + Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); + + // Call the Multiply service operation. + value1 = 9.00D; + value2 = 81.25D; + result = client.Multiply(value1, value2); + Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); + + // Call the Divide service operation. + value1 = 22.00D; + value2 = 7.00D; + result = client.Divide(value1, value2); + Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); + + } + } +} + +``` + +## 参照 + [ルーティング サービス](../../../../docs/framework/wcf/samples/routing-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-set-a-max-clock-skew.md b/docs/framework/wcf/feature-details/how-to-set-a-max-clock-skew.md new file mode 100644 index 00000000000..cc725992d73 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-set-a-max-clock-skew.md @@ -0,0 +1,97 @@ +--- +title: "方法 : 時刻のずれの最大値を設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "MaxClockSkew プロパティ" + - "WCF, カスタム バインディング" +ms.assetid: 491d1705-eb29-43c2-a44c-c0cf996f74eb +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 方法 : 時刻のずれの最大値を設定する +時刻が重要な要素となる機能は、2 台のコンピューターで時刻の設定が異なっていると失敗する可能性があります。 この可能性を減らすには、`MaxClockSkew` プロパティを に設定します。 このプロパティは、次の 2 つのクラスで使用できます。 + + + + + +> [!IMPORTANT] +> 重要   セキュリティで保護されたメッセージ交換を行うために、`MaxClockSkew` プロパティへの変更は、サービスまたはクライアントがブートストラップされているときに行う必要があります。 これを行うには、 によって返された に対してプロパティを設定する必要があります。 + + システム提供のバインディングの 1 つでこのプロパティを変更するには、バインディングのコレクションでセキュリティ バインド要素を見つけて、`MaxClockSkew` プロパティを新しい値に設定する必要があります。 から派生される 2 つのクラスは、 クラスおよび クラスです。 コレクションからセキュリティ バインディングを取得する場合は、`MaxClockSkew` プロパティを正しく設定するために、これらの型のどちらかにキャストする必要があります。 次の例では、 を使用していますが、これは を使用します。 システム提供の各バインディングで使用するセキュリティ バインディングの型を示す一覧については、「[システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。 + +### コードを使用して時刻のずれの新しい値を持つカスタム バインディングを作成するには + +1. > [!WARNING] + > メモ   コード内の次の名前空間に参照先を追加してください。、および + + クラスのインスタンスを作成し、セキュリティ モードを に設定します。 + +2. メソッドを呼び出して、 クラスの新しいインスタンスを作成します。 + +3. クラスの メソッドを使用して、セキュリティ バインド要素を検索します。 + +4. メソッドを使用する場合には、実際の型にキャストします。 次の例では 型にキャストしています。 + +5. セキュリティ バインド要素の プロパティを設定します。 + +6. 適切なサービス型とベース アドレスを使用して、 を作成します。 + +7. メソッドを使用してエンドポイントを追加し、 を含めます。 + + [!code-csharp[c_MaxClockSkew#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_maxclockskew/cs/source.cs#1)] + [!code-vb[c_MaxClockSkew#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_maxclockskew/vb/source.vb#1)] + +### 構成で MaxClockSkew を設定するには + +1. [\](../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) 要素セクションに [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)を作成します。 + +2. [\](../../../../docs/framework/misc/binding.md) 要素を作成し、`name` 属性を適切な値に設定します。 `MaxClockSkewBinding` に設定する方法の例を次に示します。 + +3. エンコーディング要素を追加します。 下の例では、[\](../../../../docs/framework/configure-apps/file-schema/wcf/textmessageencoding.md)を追加しています。 + +4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)を追加し、`authenticationMode` 属性を適切に設定します。 次の例では、この属性を `Kerberos` に設定して、サービスが Windows 認証を使用するように指定しています。 + +5. [\](../../../../docs/framework/configure-apps/file-schema/wcf/localservicesettings-element.md)を追加し、`maxClockSkew` 属性を `"##:##:##"` の書式の値に設定します。 次の例では 7 分に設定しています。 必要に応じて、[\](../../../../docs/framework/configure-apps/file-schema/wcf/localservicesettings-element.md)を追加し、`maxClockSkew` 属性を適切に設定します。 + +6. transport 要素を追加します。 下の例では、[\](../../../../docs/framework/configure-apps/file-schema/wcf/httptransport.md)を使用しています。 + +7. セキュリティで保護されたメッセージ交換を行うために、セキュリティ設定は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md) 要素のブートストラップ時に行う必要があります。 + + ``` + + + + + + + + + + + + + + + + + + + ``` + +## 参照 + + + + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-set-up-a-signature-confirmation.md b/docs/framework/wcf/feature-details/how-to-set-up-a-signature-confirmation.md new file mode 100644 index 00000000000..e28780297b3 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-set-up-a-signature-confirmation.md @@ -0,0 +1,78 @@ +--- +title: "方法 : 署名確認を設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "署名確認" + - "WCF, セキュリティ" +ms.assetid: 2424c137-c7c2-4aa9-8d5d-a066e12fefda +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 方法 : 署名確認を設定する +*署名確認*は、メッセージのイニシエーターが受信した応答が、送信者の元のメッセージへの応答として生成されたものであることを確認するメカニズムです。署名確認は、WS\-Security 1.1 仕様で定義されています。エンドポイントが WS\-Security 1.0 をサポートしている場合は、署名確認を使用できません。 + + 以下の手順では、 を使用して署名確認を有効にする方法を示します。 でも同じ手順を使用できます。この手順は、「[方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md)」に記載されている基本的な手順に基づいています。 + +### コードを使用して署名確認を有効にするには + +1. クラスのインスタンスを作成します。 + +2. クラスのインスタンスを作成します。 + +3. を `true` に設定します。 + +4. バインディング コレクションにセキュリティ要素を追加します。 + +5. 「[方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md)」の記載に従って、カスタム バインディングを作成します。 + +### 構成を使用して署名確認を有効にするには + +1. `` 要素を構成ファイルの `` セクションに追加します。 + +2. `` 要素を追加し、名前属性を適切な値に設定します。 + +3. 適切なエンコード要素を追加します。次の例では `` 要素を追加しています。 + +4. `` 子要素を追加し、`requireSignatureConfirmation` 属性を `true` に設定します。 + +5. 省略可能。ブートストラップ中に署名確認を有効にするには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md) 子要素を追加し、`equireSignatureConfirmation` 属性を `true` に設定します。 + +6. 適切なトランスポート要素を追加します。次の例では、[\](../../../../docs/framework/configure-apps/file-schema/wcf/httptransport.md)を追加します。 + + ``` + + + + + + + + + + + + ``` + +## 使用例 + 次のコードでは、 のインスタンスを作成し、 プロパティを `true` に設定しています。この例では、前の例で示した `` 要素は使用していません。この例は、Windows \(Kerberos プロトコル\) トークンを使用した場合の署名確認を示しています。この場合、クライアントの署名はサービスからのすべての応答で返され、クライアントによって確認されます。 + + [!code-csharp[c_SignatureConfirmation#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_signatureconfirmation/cs/source.cs#1)] + [!code-vb[c_SignatureConfirmation#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_signatureconfirmation/vb/source.vb#1)] + +## 参照 + + + + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [方法 : 指定した認証モード用の SecurityBindingElement を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-specify-channel-security-credentials.md b/docs/framework/wcf/feature-details/how-to-specify-channel-security-credentials.md new file mode 100644 index 00000000000..778f6a444d5 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-specify-channel-security-credentials.md @@ -0,0 +1,153 @@ +--- +title: "方法 : チャネルのセキュリティ資格情報を指定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f8e03f47-9c4f-4dd5-8f85-429e6d876119 +caps.latest.revision: 18 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 18 +--- +# 方法 : チャネルのセキュリティ資格情報を指定する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービス モニカーを使用すると、COM アプリケーションで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを呼び出すことができます。 ほとんどの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスで、クライアントは認証と承認のための資格情報の指定が要求されます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントから呼び出す場合、この資格情報をマネージ コードまたはアプリケーション構成ファイルに指定できます。 呼び出すときに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]サービス、COM アプリケーションから使用して、 インターフェイス資格情報を指定します。 このトピックを使用して資格情報を指定するさまざまな方法を示しますが、 インターフェイスです。 + +> [!NOTE] +> IDispatch ベースのインターフェイスは、Visual Studio 環境で IntelliSense 機能は得られません。 + + この記事を使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]で定義されたサービス、[メッセージ セキュリティ サンプル](../../../../docs/framework/wcf/samples/message-security-sample.md)します。 + +### クライアント証明書を指定するには + +1. メッセージ セキュリティのディレクトリの Setup.bat ファイルを実行し、必要なテスト証明書を作成してインストールします。 + +2. メッセージ セキュリティのプロジェクトを開きます。 + +3. 追加`[ServiceBehavior(Namespace=``http://Microsoft.ServiceModel.Samples``)]`に、`ICalculator`インターフェイス定義です。 + +4. 追加`bindingNamespace=``http://Microsoft.ServiceModel.Samples`サービスの App.config 内のエンドポイント タグにします。 + +5. メッセージ セキュリティ サンプルをビルドし、Service.exe を実行します。 Internet Explorer を使用してサービスの URI (http://localhost:8000/ServiceModelSamples/Service) を参照し、サービスが動作していることを確認します。 + +6. Visual Basic 6.0 を開き、新しい標準 .exe ファイルを作成します。 フォームにボタンを追加し、追加したボタンをダブルクリックして次のコードをクリック ハンドラーに追加します。 + + ``` + monString = "service:mexAddress=http://localhost:8000/ServiceModelSamples/Service?wsdl" + monString = monString + ", address=http://localhost:8000/ServiceModelSamples/Service" + monString = monString + ", contract=ICalculator, contractNamespace=http://Microsoft.ServiceModel.Samples" + monString = monString + ", binding=BasicHttpBinding_ICalculator, bindingNamespace=http://Microsoft.ServiceModel.Samples" + + Set monikerProxy = GetObject(monString) + + 'Set the Service Certificate. + monikerProxy.ChannelCredentials.SetServiceCertificateAuthentication "CurrentUser", "NoCheck", "PeerOrChainTrust" + monikerProxy.ChannelCredentials.SetDefaultServiceCertificateFromStore "CurrentUser", "TrustedPeople", "FindBySubjectName", "localhost" + + 'Set the Client Certificate. + monikerProxy.ChannelCredentials.SetClientCertificateFromStoreByName "CN=client.com", "CurrentUser", "My" + MsgBox monikerProxy.Add(3, 4) + ``` + +7. Visual Basic アプリケーションを実行し、結果を確認します。 + + Visual Basic アプリケーションに Add(3,4) の結果を示すメッセージ ボックスが表示されます。 またはの代わりに使用することもできますクライアント資格情報を設定します。 + + ``` + monikerProxy.ChannelCredentials.SetClientCertificateFromFile "C:\MyClientCert.pfx", "password", "DefaultKeySet" + ``` + +> [!NOTE] +> この呼び出しを機能させるには、クライアントが実行されているコンピューターでクライアント証明書を信頼する必要があります。 + +> [!NOTE] +> モニカーの形式が正しくないか、`GetObject` を呼び出せない場合は、"構文が無効です" というメッセージが返されます。 このエラーが発生した場合は、使用しているモニカーが正しく、サービスが使用可能であることを確認してください。 + +### ユーザー名とパスワードを指定するには + +1. `wsHttpBinding` を使用するよう App.config ファイルを変更します。 これは、ユーザー名とパスワードの検証に必要です。 + + + +2. + `clientCredentialType` を UserName に設定します。 + + + +3. Visual Basic 6.0 を開き、新しい標準 .exe ファイルを作成します。 フォームにボタンを追加し、追加したボタンをダブルクリックして次のコードをクリック ハンドラーに追加します。 + + ``` + monString = "service:mexAddress=http://localhost:8000/ServiceModelSamples/Service?wsdl" + monString = monString + ", address=http://localhost:8000/ServiceModelSamples/Service" + monString = monString + ", contract=ICalculator, contractNamespace=http://Microsoft.ServiceModel.Samples" + monString = monString + ", binding=WSHttpBinding_ICalculator, bindingNamespace=http://Microsoft.ServiceModel.Samples" + + Set monikerProxy = GetObject(monString) + + monikerProxy.ChannelCredentials.SetServiceCertificateAuthentication "CurrentUser", "NoCheck", "PeerOrChainTrust" + monikerProxy.ChannelCredentials.SetUserNameCredential "username", "password" + + MsgBox monikerProxy.Add(3, 4) + ``` + +4. Visual Basic アプリケーションを実行し、結果を確認します。 Visual Basic アプリケーションに Add(3,4) の結果を示すメッセージ ボックスが表示されます。 + + > [!NOTE] + > この例のサービス モニカーに指定されたバインディングは、WSHttpBinding_ICalculator に変更されました。 なお、有効なユーザー名とパスワードへの呼び出しで指定する必要がありますします。 + +### Windows 資格情報を指定するには + +1. サービスの App.config ファイルで、`clientCredentialType` を Windows に設定します。 + + + +2. Visual Basic 6.0 を開き、新しい標準 .exe ファイルを作成します。 フォームにボタンを追加し、追加したボタンをダブルクリックして次のコードをクリック ハンドラーに追加します。 + + ``` + monString = "service:mexAddress=http://localhost:8000/ServiceModelSamples/Service?wsdl" + monString = monString + ", address=http://localhost:8000/ServiceModelSamples/Service" + monString = monString + ", contract=ICalculator, contractNamespace=http://Microsoft.ServiceModel.Samples" + monString = monString + ", binding=WSHttpBinding_ICalculator, bindingNamespace=http://Microsoft.ServiceModel.Samples" + monString = monString + ", upnidentity=domain\userID" + + Set monikerProxy = GetObject(monString) + monikerProxy.ChannelCredentials.SetWindowsCredential "domain", "userID", "password", 1, True + + MsgBox monikerProxy.Add(3, 4) + ``` + +3. Visual Basic アプリケーションを実行し、結果を確認します。 Visual Basic アプリケーションに Add(3,4) の結果を示すメッセージ ボックスが表示されます。 + + > [!NOTE] + > "ドメイン"、"ユーザー ID"、"パスワード" を有効な値に置き換える必要があります。 + +### 発行トークンを指定するには + +1. 発行トークンは、フェデレーション セキュリティを使用するアプリケーションのみが使用します。 フェデレーション セキュリティの詳細については、次を参照してください。[フェデレーションと発行されたトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md)と[フェデレーション サンプル](../../../../docs/framework/wcf/samples/federation-sample.md)します。 + + 次の Visual Basic のコード例を呼び出す方法を示しています、 メソッド。 + + ``` + monString = "service:mexAddress=http://localhost:8000/ServiceModelSamples/Service?wsdl" + monString = monString + ", address=http://localhost:8000/SomeService/Service" + monString = monString + ", contract=ICalculator, contractNamespace=http://SomeService.Samples" + monString = monString + ", binding=WSHttpBinding_ISomeContract, bindingNamespace=http://SomeService.Samples" + + Set monikerProxy = GetObject(monString) + monikerProxy.SetIssuedToken("http://somemachine/sts", "bindingType", "binding") + ``` + + このメソッドのパラメーターの詳細については、次を参照してください。 します。 + +## 関連項目 + [フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md) + [方法: フェデレーション サービスで資格情報を構成します。](../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) + [方法: フェデレーション クライアントを作成します。](../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [メッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/message-security-in-wcf.md) + [バインディングとセキュリティ](../../../../docs/framework/wcf/feature-details/bindings-and-security.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-test-the-discovery-proxy.md b/docs/framework/wcf/feature-details/how-to-test-the-discovery-proxy.md new file mode 100644 index 00000000000..bf4c0c48221 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-test-the-discovery-proxy.md @@ -0,0 +1,64 @@ +--- +title: "探索プロキシをテストする方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d96e3fa2-3c42-4e5d-8244-2694081bdc32 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 探索プロキシをテストする方法 +これは、探索プロキシの実装方法に関する 4 つのトピックのうちの 4 番目のトピックです。 前のトピック「[探索プロキシを使用してサービスを検索するクライアント アプリケーションの実装方法](../../../../docs/framework/wcf/feature-details/client-app-discovery-proxy-to-find-a-service.md)」では、探索プロキシを使用してサービスを検索し、そのサービスを呼び出す [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーションを実装しました。 このトピックでは、探索プロキシ、サービス、およびクライアント アプリケーションが予期したとおりに動作することを確認する方法について説明します。 + +### 探索プロキシの実行 + +1. 管理者としてコマンド プロンプトを開きます。 + +2. "このプログラムの機能のいくつかが Windows ファイアウォールでブロックされています" という内容のダイアログが表示される場合があります。 このメッセージが表示された場合は、**\[ブロックを解除する\]** をクリックします。 + +3. コマンド プロンプトから、探索プロキシ DiscoveryProxy.exe を実行します。 + +4. 「`Proxy started. Hit Enter to exit`」というテキストが表示されます。 + +### 探索サービスの実行 + +1. 管理者としてコマンド プロンプトを開きます。 + +2. コマンド プロンプトから、探索サービス Service.exe を実行します。 + +3. DiscoveryProxy.exe により、次のテキストが表示されます。`******* Adding the following service: ** [Service Contract Name] ** [Service Endpoint Addr] 3.******* Done *******` . + +### クライアント アプリケーションの実行 + +1. コマンド プロンプトを開きます。 + +2. コマンド プロンプトから、client.exe アプリケーションを実行します。 + +3. 数秒後に、クライアント アプリケーションにより「\<サービス エンドポイント\> に接続しています」というテキストが表示されます。 + +4. 次に、service.exe により「Greeting request received, I will respond」というテキストが表示されます。 + +5. その後、client.exe により「Hello Client\!」というテキストが表示されます。 + +### アプリケーションのシャットダウン + +1. クライアント アプリケーションをシャットダウンします。 + +2. サービスをシャットダウンします。 探索プロキシにより、次のテキストが表示されます。`******* Removing the following service: ** [Service Contract Name] ** [Service Endpoint Addr] 2.3.******* Done *******` + +3. 探索プロキシをシャットダウンします。 + +## 参照 + [WCF Discovery の概要](../../../../docs/framework/wcf/feature-details/wcf-discovery-overview.md) + [探索プロキシを実装する方法](../../../../docs/framework/wcf/feature-details/how-to-implement-a-discovery-proxy.md) + [探索プロキシで登録される探索可能なサービスの実装方法](../../../../docs/framework/wcf/feature-details/discoverable-service-that-registers-with-the-discovery-proxy.md) + [探索プロキシを使用してサービスを検索するクライアント アプリケーションの実装方法](../../../../docs/framework/wcf/feature-details/client-app-discovery-proxy-to-find-a-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-a-custom-user-name-and-password-validator.md b/docs/framework/wcf/feature-details/how-to-use-a-custom-user-name-and-password-validator.md new file mode 100644 index 00000000000..994c2a5c9f3 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-a-custom-user-name-and-password-validator.md @@ -0,0 +1,127 @@ +--- +title: "方法 : カスタム ユーザー名およびパスワード検証を使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF, ユーザー名とパスワード" +ms.assetid: 8e08b74b-fa44-4018-b63d-0d0805f85e3f +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : カスタム ユーザー名およびパスワード検証を使用する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、認証にユーザー名とパスワードを使用すると、既定の Windows 認証を使用してユーザー名とパスワードが検証されます。ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、*"検証コントロール"* と呼ばれるカスタムのユーザー名\/パスワード認証方式を使用できます。ユーザー名およびパスワードのカスタム検証を組み込むには、 から派生するクラスを作成して構成します。 + + サンプル アプリケーションについては、「[ユーザー名パスワード検証](../../../../docs/framework/wcf/samples/user-name-password-validator.md)」を参照してください。 + +### カスタムのユーザー名\/パスワード検証コントロールを作成するには + +1. から派生するクラスを作成します。 + + [!code-csharp[C_CustomUsernameAndPasswordValidator#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customusernameandpasswordvalidator/cs/service.cs#3)] + [!code-vb[C_CustomUsernameAndPasswordValidator#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customusernameandpasswordvalidator/vb/service.vb#3)] + +2. メソッドをオーバーライドして、カスタム認証方式を実装します。 + + 次の例のコードは、 メソッドをオーバーライドします。稼働環境では、このようなコードを使用しないでください。このコードをカスタムのユーザー名\/パスワード検証方式に置き換えます。この場合、ユーザー名とパスワードの組み合わせをデータベースから取得する必要があります。 + + クライアントに認証エラーを返すには、 メソッドで をスローします。 + + [!code-csharp[C_CustomUsernameAndPasswordValidator#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customusernameandpasswordvalidator/cs/service.cs#4)] + [!code-vb[C_CustomUsernameAndPasswordValidator#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customusernameandpasswordvalidator/vb/service.vb#4)] + +### カスタムのユーザー名\/パスワード検証コントロールを使用するようにサービスを構成するには + +1. 任意のトランスポート上のメッセージ セキュリティ、または HTTP\(S\) 上のトランスポート レベル セキュリティを使用するバインディングを構成します。 + + メッセージ セキュリティを使用する場合は、メッセージ セキュリティと `UserName` 資格情報の種類をサポートするシステム指定のバインディングのいずれか \([\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) や [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) など\) を追加します。 + + HTTP\(S\) 上のトランスポート レベル セキュリティを使用する場合は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) と [\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md) のいずれか、[\](../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md)、または HTTP\(S\) と `Basic` 認証方式を使用する [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md) を追加します。 + + > [!NOTE] + > [!INCLUDE[netfx35_long](../../../../includes/netfx35-long-md.md)] 以降を使用する場合は、メッセージおよびトランスポート セキュリティでカスタムのユーザー名\/パスワード検証コントロールを使用できます。[!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] では、カスタムのユーザー名\/パスワード検証コントロールを使用できるのは、メッセージ セキュリティだけです。 + + > [!TIP] + > このコンテキストでの \ の使用方法の詳細については、「[\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-nettcpbinding.md)」を参照してください。 + + 1. 構成ファイルの [\](../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) 要素の下に、[\](../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) 要素を追加します。 + + 2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) 要素または [\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md) 要素をバインド セクションに追加します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインド要素の作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 構成でサービス バインディングを指定する](../../../../docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md)」を参照してください。 + + 3. [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md)または [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md) の `mode` 属性を `Message`、`Transport`、または `TransportWithMessageCredential` に設定します。 + + 4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/message-of-wshttpbinding.md)または [\](../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-wshttpbinding.md) の `clientCredentialType` 属性を設定します。 + + メッセージ セキュリティを使用する場合は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/message-of-wshttpbinding.md) の `clientCredentialType` 属性を `UserName` に設定します。 + + HTTP\(S\) 上でトランスポート レベルのセキュリティを使用する場合は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-wshttpbinding.md) または [\](../../../../docs/framework/configure-apps/file-schema/wcf/transport-of-basichttpbinding.md) の `clientCredentialType` 属性を `Basic` に設定します。 + + > [!NOTE] + > [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスがインターネット インフォメーション サービス \(IIS\) でトランスポート レベルのセキュリティを使用してホストされており、 プロパティが に設定されている場合、カスタム認証方式では Windows 認証のサブセットが使用されます。これは、このシナリオの場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がカスタム認証を呼び出す前に IIS によって Windows 認証が実行されるためです。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインド要素の作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 構成でサービス バインディングを指定する](../../../../docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md)」を参照してください。 + + 次のコード例は、バインディングの構成コードを示しています。 + + ``` + + + + + + + + + + + + ``` + +2. 受信 セキュリティ トークンのユーザー名とパスワードの組み合わせを検証する際に、カスタムのユーザー名\/パスワード検証コントロールを使用することを指定する動作を構成します。 + + 1. [\](../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) 要素の子として [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素を追加します。 + + 2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md) を [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素に追加します。 + + 3. [\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md) 要素を追加し、`name` 属性に適切な値を設定します。 + + 4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)を [\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-servicebehaviors.md) 要素に追加します。 + + 5. [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)に [\](../../../../docs/framework/configure-apps/file-schema/wcf/usernameauthentication.md)を追加します。 + + 6. `userNamePasswordValidationMode` を `Custom` に設定します。 + + > [!IMPORTANT] + > `userNamePasswordValidationMode` 値が設定されていない場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、カスタムのユーザー名\/パスワード検証コントロールの代わりに Windows 認証が使用されます。 + + 7. `customUserNamePasswordValidatorType` を、カスタムのユーザー名\/パスワード検証コントロールを表す型に設定します。 + + 次の例に、この時点での `` のフラグメントを示します。 + + ``` + + + + ``` + +## 使用例 + カスタムのユーザー名\/パスワード検証コントロールを作成する方法を次のコード例に示します。稼働環境では、 メソッドをオーバーライドするコードを使用しないでください。このコードをカスタムのユーザー名\/パスワード検証方式に置き換えます。この場合、ユーザー名とパスワードの組み合わせをデータベースから取得する必要があります。 + + [!code-csharp[C_CustomUsernameAndPasswordValidator#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customusernameandpasswordvalidator/cs/service.cs#1)] + [!code-vb[C_CustomUsernameAndPasswordValidator#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customusernameandpasswordvalidator/vb/service.vb#1)] +[!code-csharp[C_CustomUsernameAndPasswordValidator#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_customusernameandpasswordvalidator/cs/service.cs#2)] +[!code-vb[C_CustomUsernameAndPasswordValidator#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_customusernameandpasswordvalidator/vb/service.vb#2)] + +## 参照 + + [方法 : ASP.NET メンバーシップ プロバイダーを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider.md) + [認証](../../../../docs/framework/wcf/feature-details/authentication-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-a-service-moniker-with-metadata-exchange-contracts.md b/docs/framework/wcf/feature-details/how-to-use-a-service-moniker-with-metadata-exchange-contracts.md new file mode 100644 index 00000000000..5a6b83b53bb --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-a-service-moniker-with-metadata-exchange-contracts.md @@ -0,0 +1,51 @@ +--- +title: "方法 : Metadata Exchange コントラクトと共にサービス モニカーを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c41a07e5-cb9d-45d6-9ea4-34511e227faf +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 方法 : Metadata Exchange コントラクトと共にサービス モニカーを使用する +新しい [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをいくつか開発した後に、そのサービスをスクリプトまたは Visual Basic 6.0 アプリケーションから呼び出せるようにする必要が生じる場合があります。 この方法の 1 つに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アセンブリを作成し、そのアセンブリを COM を使用して登録して GAC にインストールし、Visual Basic コードで COM 型を参照する方法があります。 アプリケーションを配布するときに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アセンブリも配信する必要があります。 次にユーザーは COM を使用して WCF クライアント アセンブリを登録し、それを GAC に配置する必要があります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] COM Interop でも、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アセンブリに依存しない同じサービス呼び出しを作成できます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] モニカーを使用すれば、サービスに関する型情報を抽出するためにサービス モニカーで使用されるメタデータ交換 \(Mex\) エンドポイント URI を指定することにより、必要な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを任意の COM 互換言語 \(Visual Basic、VBScript、Visual Basic for Applications \(VBA\) など\) から呼び出すことができます。 ここでは、Mex エンドポイントを指定する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] モニカーを使用して、 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の入門サンプルを呼び出す方法を説明します。 + +> [!NOTE] +> [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アセンブリで定義された型は、実際にインスタンス化されることはありません。 アセンブリはメタデータにのみ使用されます。 + +### Mex アドレスを使うサービス モニカーの使用 + +1. 入門サンプルを構築し、Internet Explorer を使用してその URL \(http:\/\/localhost\/ServiceModelSamples\/Service.svc\) を参照し、サービスが動作していることを確認します。 + +2. Visual Basic スクリプトまたは Visual Basic アプリケーションを作成し、次のコードを記述します。 + + ``` + monString = "service:mexaddress=http://localhost/ServiceModelSamples/Service.svc/MEX" + monString = monString + ", address=http://localhost/ServiceModelSamples/Service.svc" + monString = monString + ", contract=ICalculator, contractNamespace=http://Microsoft.ServiceModel.Samples" + monString = monString + ", binding=WSHttpBinding_ICalculator, bindingNamespace=http://Microsoft.ServiceModel.Samples" + + Set calc = GetObject(monString) + MsgBox calc.Add(3, 4) + ``` + +3. 作成した Visual Basic アプリケーションまたはスクリプトを実行します。 + + > [!NOTE] + > モニカーがサービスのメタデータを読み取るには、呼び出すサービスで、Mex エンドポイントが公開されている必要があります。 詳細については、「[方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md)」を参照してください。 + + > [!NOTE] + > モニカーの形式が正しくないか、`GetObject` を呼び出せない場合は、"構文が無効です" というメッセージが返されます。このエラーが発生した場合は、使用しているモニカーが正しく、サービスが使用可能であることを確認してください。 + +## 参照 + [方法 : 未登録で Windows Communication Foundation のサービス モニカーを使用する](../../../../docs/framework/wcf/feature-details/use-the-wcf-service-moniker-without-registration.md) + [方法 : WSDL コントラクトと共にサービス モニカーを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-a-service-moniker-with-wsdl-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-a-service-moniker-with-wsdl-contracts.md b/docs/framework/wcf/feature-details/how-to-use-a-service-moniker-with-wsdl-contracts.md new file mode 100644 index 00000000000..f91d6563f9e --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-a-service-moniker-with-wsdl-contracts.md @@ -0,0 +1,68 @@ +--- +title: "方法 : WSDL コントラクトと共にサービス モニカーを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a88d9650-bb50-4f48-8c85-12f5ce98a83a +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : WSDL コントラクトと共にサービス モニカーを使用する +完全に自己完結型である COM Interop クライアントの構築が必要になる場合があります。呼び出そうとするサービスで MEX エンドポイントが公開されておらず、WCF クライアントの DLL が COM interop に登録されていないこともあります。このような場合、サービスを記述した WSDL ファイルを作成し、そのファイルを WCF サービス モニカーに渡すことができます。ここでは、WCF WSDL モニカーを使用して、WCF の入門サンプルを呼び出す方法を説明します。 + +### WSDL サービス モニカーの使用 + +1. 入門サンプル ソリューションを開き、ビルドします。 + +2. Internet Explorer を開いて http:\/\/localhost\/ServiceModelSamples\/Service.svc に移動し、サービスが動作していることを確認します。 + +3. Service.cs ファイルで、次の属性を CalculatorService クラスに追加します。 + + [!code-csharp[S_WSDL_Client#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_wsdl_client/cs/service.cs#0)] + +4. バインディング名前空間をサービスの App.config に追加します。 + + + +5. アプリケーションが読み取る WSDL ファイルを作成します。名前空間を手順 3. と 4. で追加したので、IE で http:\/\/localhost\/ServiceModelSamples\/Service.svc?wsdl を表示することによって、サービスの WSDL 記述全体を照会できます。次に、そのファイルをサービスの WSDL.xml として Internet Explorer で保存できます。手順 3. と 4. で名前空間を指定しなかった場合、上記の URL を照会したときに返される WSDL ドキュメントは、完全な WSDL ではありません。返される WSDL ドキュメントには、他の WSDL ドキュメントをインポートするためのインポート ステートメントが追加されています。各インポート ステートメントを実行し、サービスから返された WSDL とインポートした WSDL を組み合わせることによって、完全な WSDL ドキュメントを作成する必要があります。 + +6. Visual Basic 6.0 を開き、新しい標準 .exe ファイルを作成します。フォームにボタンを追加し、追加したボタンをダブルクリックして次のコードをクリック ハンドラーに追加します。 + + ``` + ' Open the WSDL contract file and read it all into the wsdlContract string. + Const ForReading = 1 + Set objFSO = CreateObject("Scripting.FileSystemObject") + Set objFile = objFSO.OpenTextFile("c:\serviceWsdl.xml", ForReading) + wsdlContract = objFile.ReadAll + objFile.Close + + ' Create a string for the service moniker including the content of the WSDL contract file. + wsdlMonikerString = "service4:address='http://localhost/ServiceModelSamples/service.svc'" + wsdlMonikerString = wsdlMonikerString + ", wsdl='" & wsdlContract & "'" + wsdlMonikerString = wsdlMonikerString + ", binding=WSHttpBinding_ICalculator, bindingNamespace='http://Microsoft.ServiceModel.Samples'" + wsdlMonikerString = wsdlMonikerString + ", contract=ICalculator, contractNamespace='http://Microsoft.ServiceModel.Samples'" + + ' Create the service moniker object. + Set wsdlServiceMoniker = GetObject(wsdlMonikerString) + + ' Call the service operations using the moniker object. + MsgBox "WSDL service moniker: 145 - 76.54 = " & wsdlServiceMoniker.Subtract(145, 76.54) + ``` + + > [!NOTE] + > モニカーの形式が正しくないか、`GetObject` を呼び出せない場合は、"構文が無効です" というメッセージが返されます。このエラーを受信した場合は、使用しているモニカーが正しく、サービスが使用可能であることを確認してください。 + +7. Visual Basic アプリケーションを実行します。メッセージ ボックスに、Subtract\(145, 76.54\) を呼び出した結果が表示されます。 + +## 参照 + [概要](../../../../docs/framework/wcf/samples/getting-started-sample.md) + [COM アプリケーションとの統合の概要](../../../../docs/framework/wcf/feature-details/integrating-with-com-applications-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-configuration-to-add-an-aspnet-ajax-endpoint.md b/docs/framework/wcf/feature-details/how-to-use-configuration-to-add-an-aspnet-ajax-endpoint.md new file mode 100644 index 00000000000..dbd5d6f205a --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-configuration-to-add-an-aspnet-ajax-endpoint.md @@ -0,0 +1,116 @@ +--- +title: "方法 : 構成を使用して ASP.NET AJAX エンドポイントを追加する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7cd0099e-dc3a-47e4-a38c-6e10f997f6ea +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : 構成を使用して ASP.NET AJAX エンドポイントを追加する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、クライアント Web サイトの JavaScript から呼び出される ASP.NET AJAX 対応のエンドポイントを使用できるようにするサービスを作成できます。このようなエンドポイントを作成するには、他のすべての [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] エンドポイントと同様に、構成ファイルを使用するか、または構成要素を必要としないメソッドを使用できます。ここでは、構成を使用する方法について説明します。 + + サービス エンドポイントを ASP.NET AJAX 対応にする手順には、 を使用するようにエンドポイントを構成し、[\](../../../../docs/framework/configure-apps/file-schema/wcf/enablewebscript.md) エンドポイント動作を追加することが含まれます。エンドポイントの構成後、サービスを実装してホストする手順は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスで使用される手順に似ています。実施例については、「[HTTP POST を使用する AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-using-http-post.md)」を参照してください。 + + 構成を使用せずに ASP.NET AJAX エンドポイントを構成する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 構成を使用せずに ASP.NET AJAX エンドポイントを追加する](../../../../docs/framework/wcf/feature-details/how-to-add-an-aspnet-ajax-endpoint-without-using-configuration.md)」を参照してください。 + +### 基本的な WCF サービスを作成するには + +1. 属性でマークされたインターフェイスを使用して、基本的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス コントラクトを定義します。各操作を でマークします。 プロパティが設定されていることを確認します。 + + ``` + [ServiceContract(Namespace = "MyService")] + public interface ICalculator + { + [OperationContract] + // This operation returns the sum of d1 and d2. + double Add(double n1, double n2); + + //Other operations omitted… + + } + ``` + +2. `CalculatorService` を使用して、`ICalculator` サービス コントラクトを実装します。 + + ``` + public class CalculatorService : ICalculator + { + public double Add(double n1, double n2) + { + return n1 + n2; + } + + //Other operations omitted… + ``` + +3. 名前空間ブロック内にラップすることにより、`ICalculator` と `CalculatorService` の実装の名前空間を定義します。 + + ``` + Namespace Microsoft.Ajax.Samples + { + //Include the code for ICalculator and Caculator here. + } + ``` + +### サービスに ASP.NET AJAX エンドポイントを作成するには + +1. 動作の構成を作成し、サービスの ASP.NET AJAX 対応のエンドポイント用に [\](../../../../docs/framework/configure-apps/file-schema/wcf/enablewebscript.md) 動作を指定します。 + + ``` + + + + + + + + + + ``` + +2. と、前の手順で定義した ASP.NET AJAX 動作を使用するサービスのエンドポイントを作成します。 + + ``` + + + + + + + + ``` + +### IIS でサービスをホストするには + +1. IIS でサービスをホストするには、アプリケーションで .svc 拡張子の新しいサービス ファイルを作成します。サービスに該当する [@ServiceHost](../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md) ディレクティブ情報を追加して、このファイルを編集します。たとえば、`CalculatorService` サンプルに対応するサービス ファイルのコンテンツには、次の情報が記述されています。 + + ``` + <%@ServiceHost + language=c# + Debug="true" + Service="Microsoft.Ajax.Samples.CalculatorService" + %> + ``` + +2. IIS でのホスト[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : IIS で WCF サービスをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md)」を参照してください。 + +### サービスを呼び出すには + +1. エンドポイントは .svc ファイルを基準にした空のアドレスの位置に構成されているので、サービスは使用可能であり、service.svc\/\<操作\> に対して要求を送信することで、サービスを呼び出すことができます。たとえば、service.svc\/Add では `Add` 操作を呼び出します。これは、ASP.NET AJAX Script Manager コントロールのスクリプト コレクションにエンドポイント URL を入力することで使用できます。例については、「[HTTP POST を使用する AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-using-http-post.md)」を参照してください。 + +## 参照 + [ASP.NET AJAX 用の WCF サービスの作成](../../../../docs/framework/wcf/feature-details/creating-wcf-services-for-aspnet-ajax.md) + [方法 : AJAX 対応 ASP.NET Web サービスを WCF に移行する](../../../../docs/framework/wcf/feature-details/how-to-migrate-ajax-enabled-aspnet-web-services-to-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-filters.md b/docs/framework/wcf/feature-details/how-to-use-filters.md new file mode 100644 index 00000000000..a1a4c162554 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-filters.md @@ -0,0 +1,347 @@ +--- +title: "フィルターを使用する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f2c7255f-c376-460e-aa20-14071f1666e5 +caps.latest.revision: 12 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 12 +--- +# フィルターを使用する方法 +ここでは、複数のフィルターを使用したルーティング構成を作成するために必要な基本手順について説明します。 この例では、メッセージが、電卓サービスの 2 つの実装である regularCalc および roundingCalc にルーティングされます。 これらの実装は両方とも同じ操作をサポートしますが、片方のサービスでは、値を返す前にすべての計算を最も近い整数値に丸めます。 クライアント アプリケーションが、丸め処理を行うバージョンのサービスを使用するかどうかを表示可能である必要がありますが、優先するサービスが示されていない場合は、メッセージが 2 つのサービス間で負荷分散されます。 次の操作が両方のサービスによって公開されます。 + +- 追加 + +- 減算 + +- 乗算 + +- 除算 + + どちらのサービスも同じ操作を実装するため、アクション フィルターを使用することはできません。メッセージで指定されるアクションが一意にならないためです。 代わりに、メッセージが適切なエンドポイントに必ずルーティングされるための追加作業が必要になります。 + +### 一意なデータを特定する + +1. 両方のサービス実装が同じ操作を処理し、返すデータを除いて基本的に同一であるため、クライアント アプリケーションから送信されるメッセージに含まれる基本データでは、要求をルーティングする方法を特定できません。 ただし、クライアント アプリケーションでメッセージに一意のヘッダー値を追加すると、この値を使用して、メッセージのルーティング方法を決定できます。 + + この例では、クライアント アプリケーションで丸め処理を行う電卓を使ってメッセージを処理する必要がある場合に、次のコードを使用してカスタム ヘッダーを追加します。 + + ```csharp + messageHeadersElement.Add(MessageHeader.CreateHeader("RoundingCalculator", + "http://my.custom.namespace/", "rounding")); + + ``` + + これで、XPath フィルターを使用して、メッセージにこのヘッダーが含まれるかどうかを確認し、このヘッダーを持つメッセージを roundCalc サービスにルーティングできるようになります。 + +2. さらに、ルーティング サービスが、EndpointName、EndpointAddress、または PrefixEndpointAddress の各フィルターと共に使用できる仮想サービス エンドポイントを 2 つ公開し、クライアント アプリケーションの要求の送信先エンドポイントに基づいて、受信メッセージを特定の電卓の実装に一意にルーティングします。 + +### エンドポイントを定義する + +1. ルーティング サービスで使用するエンドポイントを定義する場合は、最初にクライアントおよびサービスが使用するチャンネルの形状を決める必要があります。 このシナリオでは、両方の送信先サービスで要求\/応答パターンが使用されるため、 を使用します。 次の例では、ルーティング サービスが公開するサービス エンドポイントを定義します。 + + ```xml + + + + + + + + + + + + + + + + + + + ``` + + この構成では、ルーティング サービスは 3 つの別個のエンドポイントを公開します。 実行時の選択に応じて、クライアント アプリケーションは、これらのアドレスの 1 つにメッセージを送ります。 "仮想" サービス エンドポイントの 1 つ \("rounding\/calculator" または "regular\/calculator"\) に到着したメッセージは、対応する電卓の実装に転送されます。 クライアント アプリケーションが特定のエンドポイントに要求を送信しない場合、メッセージの送信先は標準のエンドポイントになります。 選択されたエンドポイントにかかわらず、クライアント アプリケーションでは、メッセージにカスタム ヘッダーを含めるように選択することで、丸め処理を行う電卓の実装にメッセージを転送するように指定することもできます。 + +2. 次の例では、ルーティング サービスによるメッセージのルーティング先であるクライアント \(送信先\) エンドポイントを定義します。 + + ```xml + + + + + + + ``` + + これらのエンドポイントは、特定のフィルターと一致したメッセージの送信先エンドポイントを示すために、フィルター テーブルで使用されます。 + +### フィルターを定義する + +1. クライアント アプリケーションがメッセージに追加した "RoundingCalculator" カスタム ヘッダーに基づいてメッセージをルーティングするには、このヘッダーの有無を確認するための XPath クエリを使用したフィルターを定義します。 このヘッダーは、カスタムの名前空間を使用して定義されるため、XPath クエリで使用されているカスタムの名前空間プレフィックス "custom" を定義する、名前空間のエントリも追加します。 次の例では、必要なルーティング セクション、名前空間のテーブル、および XPath フィルターを定義します。 + + ```xml + + + + + + + + + + + + + ``` + + この **MessageFilter** は、"rounding" という値を含むメッセージに RoundingCalculator ヘッダーがあるかどうかを検索します。 このヘッダーは、メッセージを roundingCalc サービスにルーティングする必要があることを示すために、クライアント側で設定されたものです。 + + > [!NOTE] + > s12 の名前空間プレフィックスは、既定で名前空間のテーブルで定義され、名前空間 "http:\/\/www.w3.org\/2003\/05\/soap\-envelope" を表します。 + +2. また、2 つの仮想エンドポイントで受信したメッセージがあるかどうかを検索するフィルターも定義する必要があります。 1 つ目の仮想エンドポイントは、"regular\/calculator" エンドポイントです。 クライアントは、メッセージを regularCalc サービスにルーティングする必要があることを示すために、このエンドポイントに要求を送信できます。 次の構成では、 を使用するフィルターを定義して、filterData で指定された名前のエンドポイントでメッセージが受信されたかどうかを確認します。 + + ```xml + + + + ``` + + "calculatorEndpoint" という名前のサービス エンドポイントでメッセージが受信された場合は、このフィルターが `true` に評価されます。 + +3. 次に、roundingEndpoint のアドレスに送信されたメッセージがあるかどうかを検索するフィルターを定義します。 クライアントは、メッセージを roundingCalc サービスにルーティングする必要があることを示すために、このエンドポイントに要求を送信できます。 次の構成では、 を使用するフィルターを定義して、"rounding\/calculator" エンドポイントでメッセージが受信されたかどうかを確認します。 + + ```xml + + + + ``` + + "http:\/\/localhost\/routingservice\/router\/rounding\/" で始まるアドレスでメッセージが受信された場合は、このフィルターが **true** に評価されます。 この構成で使用されているベース アドレスは "http:\/\/localhost\/routingservice\/router" で、roundingEndpoint に指定されているアドレスは "rounding\/calculator" であるため、このエンドポイントと通信するために使用される完全なアドレスは "http:\/\/localhost\/routingservice\/router\/rounding\/calculator" となります。これは、フィルターで指定されている内容と一致します。 + + > [!NOTE] + > PrefixEndpointAddress フィルターは、一致するメッセージの確認を行う際にホスト名を評価しません。これは、1 つのホストへの参照を表す際に使用できるホスト名にはさまざまな種類があり、そのすべてが、クライアント アプリケーションからホストを参照するための正しい方法であるためです。 たとえば、次の例はすべて、同じホストを参照します。 + > + > - localhost + > - 127.0.0.1 + > - www.contoso.com + > - ContosoWeb01 + +4. 最後のフィルターでは、標準のエンドポイントで受信する、カスタム ヘッダーのないメッセージのルーティングがサポートされている必要があります。 このシナリオでは、regularCalc サービスと roundingCalc サービスで交互にメッセージが処理されます。 このような "ラウンド ロビン" 方式のメッセージのルーティングをサポートするには、フィルター インスタンスおよび処理されるメッセージを 1 対 1 で一致させるカスタム フィルターを使用します。 次のコードでは、RoundRobinMessageFilter のインスタンスを 2 つ定義します。これらは、交互に使用されることを示すために、グループ化されています。 + + ```xml + + + + + ``` + + 実行中に、このフィルターの種類は、同じグループで 1 つのコレクションとして構成されている、この種類の定義済みフィルター インスタンスすべてを相次いで使用します。 これにより、このカスタム フィルターで処理されるメッセージは、RoundRobinFilter1 および RoundRobinFilter2 に交互に `true` を返します。 + +### フィルター テーブルを定義する + +1. フィルターを特定のクライアント エンドポイントと関連付けるには、それぞれをフィルター テーブル内で指定する必要があります。 このサンプルのシナリオでは、フィルターの優先順位設定も使用しています。この設定は省略可能で、フィルターを処理する順序を指定できます。 優先順位を指定しない場合は、すべてのフィルターが同時に評価されます。 + + > [!NOTE] + > フィルターの優先順位を指定すると、フィルターが処理される順序を制御できますが、ルーティング サービスのパフォーマンスに影響を与える場合があります。 可能な場合は、フィルターの優先順位設定が不要になるようにフィルター ロジックを構築します。 + + 次のコードでは、フィルター テーブルを定義し、以前優先順位 2 でテーブルに定義された "XPathFilter" を追加します。 ここでは、"XPathFilter" と一致したメッセージが "roundingCalcEndpoint" にルーティングされることも指定します。 + + ```xml + + ... + ... + + + + + + + +
+ +
+ + ``` + + フィルターの優先順位を指定すると、優先順位の高いフィルターから評価されます。 指定された優先順位と一致するフィルターが 1 つまたは複数ある場合は、指定した優先順位より低いレベルのフィルターは評価されません。 ここでは、2 が、指定されている優先順位で最高であり、このレベルの唯一のフィルター エントリです。 + +2. フィルター エントリは、メッセージが特定のエンドポイントで受信されているかどうかを、エンドポイント名またはアドレスのプレフィックスを調べることによって確認するために定義されています。 次のように入力することで、これらのフィルター エントリの両方をフィルター テーブルに追加し、メッセージがルーティングされる送信先エンドポイントに関連付けます。 前の XPath フィルターがメッセージと一致しない場合にのみ、これらのフィルターが実行されるようにするため、これらのフィルターの優先順位は 1 に設定されています。 + + ```xml + + + + + + ``` + + 優先順位が 1 に設定されているため、これらのフィルターは、優先順位が 2 に設定されているフィルターがメッセージと一致しない場合にのみ評価されます。 また、両方のフィルターに同じ優先順位が指定されているため、これらは同時に評価されます。 これらのフィルターは同時に指定できないため、いずれか一方だけがメッセージと一致する可能性があります。 + +3. それまでのどのフィルターとも一致しないメッセージは、一般的なサービス エンドポイントを介して受信されており、ルーティング先を示すヘッダー情報が含まれていないメッセージです。 このようなメッセージはカスタム フィルターによって処理され、2 つの電卓サービス間で負荷分散されます。 次の例では、フィルター テーブルにフィルター エントリを追加する方法を示しています。各フィルターは、2 つの送信先エンドポイントのうちの 1 つに関連付けられます。 + + ```xml + + + + + + ``` + + これらのエントリの優先順位は 0 に設定されているため、これらのフィルターは、優先順位が高いフィルターがメッセージと一致しない場合にのみ評価されます。 また、両方のフィルターに同じ優先順位が指定されているため、これらは同時に評価されます。 + + 既に説明したように、これらのフィルター定義で使用されるカスタム フィルターは、受信するメッセージごとにどちらかのフィルターだけを `true` と評価します。 このフィルターを使用して定義されたフィルターは、同じグループ設定を持つ 2 つのフィルターのみであるため、ルーティング サービスが、regularCalcEndpoint と roundingCalcEndpoint に交互に送信するという効果をもたらします。 + +4. メッセージをフィルターと照合して評価するには、最初に、フィルター テーブルをメッセージの受信に使用するサービス エンドポイントに関連付ける必要があります。 次の例は、ルーティング動作を使用して、ルーティング テーブルをサービス エンドポイントに関連付ける方法を示しています。 + + ```xml + + + + + + + + + ``` + +## 使用例 + 構成ファイル全体の一覧を次に示します。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +``` + +## 参照 + [ルーティング サービス](../../../../docs/framework/wcf/samples/routing-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-metadataexchangeclient-to-retrieve-metadata.md b/docs/framework/wcf/feature-details/how-to-use-metadataexchangeclient-to-retrieve-metadata.md new file mode 100644 index 00000000000..3b4b478db92 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-metadataexchangeclient-to-retrieve-metadata.md @@ -0,0 +1,48 @@ +--- +title: "方法 : MetadataExchangeClient を使用してメタデータを取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0754e9dc-13c5-45c2-81b5-f3da466e5a87 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 方法 : MetadataExchangeClient を使用してメタデータを取得する +WS\-MetadataExchange \(MEX\) プロトコルを使用してメタデータをダウンロードするには、 クラスを使用します。取得されたメタデータ ファイルは、 オブジェクトとして返されます。返された オブジェクトには、 オブジェクトのコレクションが含まれ、コレクションの各オブジェクトには、特定のメタデータの言語と識別子が含まれます。返されたメタデータはファイルに書き込むことができます。また、返されたメタデータに Web サービス記述言語 \(WSDL: Web Services Description Language\) ドキュメントが含まれている場合は、 を使用してメタデータをインポートできます。 + + アドレスを取得する コンストラクターは、アドレスの URI \(Uniform Resource Identifier\) スキームに一致する 静的クラスでバインディングを使用します。または、使用するバインディングを明示的に指定できるようにする コンストラクターを使用することもできます。指定したバインディングは、すべてのメタデータ参照を解決するために使用されます。 + + 他の [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントと同様に、 型は、エンドポイント構成名を使用してクライアント エンドポイント構成を読み込むためのコンストラクターを提供します。指定したエンドポイント構成では、 コントラクトを指定する必要があります。エンドポイント構成のアドレスは読み込まれないため、アドレスを受け取る オーバーロードのいずれかを使用する必要があります。 インスタンスを使用してメタデータ アドレスを指定した場合、 は、指定したアドレスが MEX エンドポイントを指すものと想定します。メタデータ アドレスを URL として指定した場合は、使用する として、MEX または HTTP GET のいずれかを指定する必要もあります。 + +> [!IMPORTANT] +> 既定では、 は、WSDL と XML スキーマのインポートおよびインクルードを含むすべての参照を解決します。 プロパティを `false` に設定すると、この機能を無効にできます。解決する参照の最大数を制御するには、 プロパティを使用します。バインディングでこのプロパティと `MaxReceivedMessageSize` プロパティを組み合わせて使用すると、取得するメタデータのサイズを制御できます。 + +### MetadataExchangeClient を使用してメタデータを取得するには + +1. 新しい オブジェクトを作成するには、バインディング、エンドポイント構成名、またはメタデータのアドレスを明示的に指定します。 + +2. 必要に応じて を構成します。たとえば、メタデータを要求するときに使用する証明書を指定したり、メタデータ参照の解決方法を制御したり、 プロパティを設定してメタデータ要求がタイムアウトするまでの待機時間を制御したりできます。 + +3. メソッドのいずれかを呼び出して、取得されたメタデータを含む オブジェクトを取得します。 の構築時にアドレスを明示的に指定した場合は、引数を受け取らない オーバーロードしか使用できません。 + +## 使用例 + を使用してメタデータ ファイルをダウンロードし、列挙する方法を次のコード例に示します。 + + [!code-csharp[MetadataResolver#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/metadataresolver/cs/client.cs#3)] + +## コードのコンパイル + このコード例をコンパイルするには、System.ServiceModel.dll アセンブリを参照し、 名前空間をインポートする必要があります。 + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-metadataresolver-to-obtain-binding-metadata-dynamically.md b/docs/framework/wcf/feature-details/how-to-use-metadataresolver-to-obtain-binding-metadata-dynamically.md new file mode 100644 index 00000000000..2266517e09c --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-metadataresolver-to-obtain-binding-metadata-dynamically.md @@ -0,0 +1,56 @@ +--- +title: "方法 : MetadataResolver を使用してバインディング メタデータを動的に取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 56ffcb99-fff0-4479-aca0-e3909009f605 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 方法 : MetadataResolver を使用してバインディング メタデータを動的に取得する +ここでは、 クラスを使用してバインディング メタデータを動的に取得する方法を示します。 + +### バインディング メタデータを動的に取得するには + +1. メタデータ エンドポイントのアドレスを持つ オブジェクトを作成します。 + + ``` + EndpointAddress metaAddress + = new EndpointAddress(new Uri("http://localhost:8080/SampleService/mex")); + ``` + +2. サービス型とメタデータ エンドポイント アドレスを渡して、 を呼び出します。これにより、指定したコントラクトを実装したエンドポイントのコレクションが返されます。メタデータからはバインディング情報のみがインポートされます。コントラクト情報はインポートされません。提供されたコントラクトが代わりに使用されます。 + + ``` + ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress); + ``` + +3. これで、サービス エンドポイントのコレクションを反復処理して必要なバインディング情報を抽出できます。次のコードは、エンドポイントを反復処理し、現在のエンドポイントに関連付けられたバインディングとアドレスを渡すサービス クライアント オブジェクトを作成し、そのサービスでメソッドを呼び出します。 + + ``` + foreach (ServiceEndpoint point in endpoints) + { + if (point != null) + { + // Create a new wcfClient using retrieved endpoints. + using (wcfClient = new SampleServiceClient(point.Binding, point.Address)) + { + Console.WriteLine( + wcfClient.SampleMethod("Client used the " + + point.Address.ToString() + " address.")); + } + } + } + ``` + +## 参照 + [メタデータ](../../../../docs/framework/wcf/feature-details/metadata.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-multiple-security-tokens-of-the-same-type.md b/docs/framework/wcf/feature-details/how-to-use-multiple-security-tokens-of-the-same-type.md new file mode 100644 index 00000000000..e2ca5c2feac --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-multiple-security-tokens-of-the-same-type.md @@ -0,0 +1,60 @@ +--- +title: "方法 : 同じ型の複数のセキュリティ トークンを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cf179f48-4ed4-4caa-86a5-ef8eecc231cd +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# 方法 : 同じ型の複数のセキュリティ トークンを使用する +- [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 3.0 では、クライアント メッセージには任意の型のトークンを 1 つしか含めることができませんでしたが、 現在は、同じ型の複数のトークンをクライアント メッセージに含めることができるようになりました。 このトピックでは、同じ型の複数のトークンをクライアント メッセージに含める方法について説明します。 + +- この方法でサービスを構成することはできません。サービスに含めることができるサポート トークンは 1 つだけです。 + +### 同じ型の複数のセキュリティ トークンを使用するには + +1. 設定する空のバインド要素コレクションを作成します。 + + [!code-csharp[C_CustomBinding#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombinding/cs/c_custombinding.cs#9)] + +2. を呼び出して を作成します。 + + [!code-csharp[C_CustomBinding#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombinding/cs/c_custombinding.cs#10)] + +3. のコレクションを作成します。 + + [!code-csharp[C_CustomBinding#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombinding/cs/c_custombinding.cs#11)] + +4. SAML トークンをコレクションに追加します。 + + [!code-csharp[C_CustomBinding#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombinding/cs/c_custombinding.cs#12)] + +5. コレクションを に追加します。 + + [!code-csharp[C_CustomBinding#13](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombinding/cs/c_custombinding.cs#13)] + +6. バインド要素をバインド要素コレクションに追加します。 + + [!code-csharp[C_CustomBinding#14](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombinding/cs/c_custombinding.cs#14)] + +7. 作成した新しいカスタム バインディングをバインド要素コレクションから返します。 + + [!code-csharp[C_CustomBinding#15](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombinding/cs/c_custombinding.cs#15)] + +## 使用例 + 上記の手順で説明したメソッド全体を次に示します。 + + [!code-csharp[C_CustomBinding#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombinding/cs/c_custombinding.cs#7)] + +## 参照 + [Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-download-metadata-documents.md b/docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-download-metadata-documents.md new file mode 100644 index 00000000000..571d7995812 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-download-metadata-documents.md @@ -0,0 +1,57 @@ +--- +title: "方法 : Svcutil.exe を使用してメタデータ ドキュメントをダウンロードする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 15524274-3167-4627-b722-d6cedb9fa8c6 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 方法 : Svcutil.exe を使用してメタデータ ドキュメントをダウンロードする +Svcutil.exe を使用すると、実行中のサービスからメタデータをダウンロードして、ローカル ファイルに保存できます。URL スキームが HTTP および HTTPS の場合、Svcutil.exe はメタデータの抽出に WS\-MetadataExchange および [XML Web サービス検索](http://go.microsoft.com/fwlink/?LinkId=94950)を使用します。その他の URL スキームの場合、Svcutil.exe は WS\-MetadataExchange のみを使用します。 + + 既定で、Svcutil.exe は クラスに定義されているバインディングを使用します。WS\-MetadataExchange で使用するバインディングを構成するには、Svcutil.exe の構成ファイル \(svcutil.exe.config\) でクライアント エンドポイントを定義する必要があります。このとき、クライアント エンドポイントが `IMetadataExchange` コントラクトを使用し、メタデータ エンドポイントのアドレスの URI \(Uniform Resource Identifier\) スキームと同じ名前を持つように定義します。 + +> [!CAUTION] +> Svcutil.exe を実行して、それぞれに同じ名前の操作が含まれる 2 つの異なるサービス コントラクトを公開するサービスのメタデータを取得する場合、Svcutil.exe は、「.... からメタデータを取得できません」というエラーを表示します。たとえば、Get\(Car c\) 操作を含む ICarService という名前のサービス コントラクトを公開するサービスがあり、その同じサービスが Get\(Book b\) 操作を含む IBookService という名前のサービス コントラクトを公開する場合です。この問題を回避するには、次のいずれかの操作を実行します。 +> +> - 操作の名前を変更する。 +> - を別の名前に設定する。 +> - プロパティを使用して、操作の名前空間のいずれかを別の名前空間に設定する。 + +### Svcutil.exe を使用してメタデータをダウンロードするには + +1. 次の場所で Svcutil.exe ツールを検索します。 + + C:\\Program Files\\Microsoft SDKs\\Windows\\v1.0.\\bin + +2. コマンド プロンプトで、次の形式を使用してツールを起動します。 + + ``` + svcutil.exe /t:metadata * | + ``` + + メタデータをダウンロードするには `/t:metadata` オプションを指定する必要があります。このオプションを指定しないと、クライアントのコードと構成が生成されます。 + +3. \<`url`\> 引数は、メタデータを提供するサービス エンドポイントの URL またはオンラインになっているメタデータ ドキュメントの URL を指定します。\<`epr`\> 引数では、WS\-MetadataExchange をサポートするサービス エンドポイント用の WS\-Addressing `EndpointAddress` が含まれる XML ファイルへのパスを指定します。 + + このツールを使用してメタデータをダウンロードするときのその他のオプションについては、「[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)」を参照してください。 + +## 使用例 + 次のコマンドにより、実行中のサービスからメタデータ ドキュメントがダウンロードされます。 + +``` +svcutil /t:metadata http://service/metadataEndpoint +``` + +## 参照 + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-export-metadata-from-compiled-service-code.md b/docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-export-metadata-from-compiled-service-code.md new file mode 100644 index 00000000000..5a7def26ef0 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-export-metadata-from-compiled-service-code.md @@ -0,0 +1,175 @@ +--- +title: "方法 : Svcutil.exe を使用してコンパイル済みのサービス コードからメタデータをエクスポートする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 95d0aed3-16a2-4398-89bb-39418eeb7355 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : Svcutil.exe を使用してコンパイル済みのサービス コードからメタデータをエクスポートする +Svcutil.exe は、次のように、コンパイル済みアセンブリのサービス、コントラクト、およびデータ型のメタデータをエクスポートできます。 + +- Svcutil.exe を使用して、アセンブリのセットに対するすべてのコンパイル済みサービス コントラクトのメタデータをエクスポートするには、入力パラメーターとして各アセンブリを指定します。これが既定の動作です。 + +- Svcutil.exe を使用して、コンパイル済みサービスのメタデータをエクスポートするには、入力パラメーターとしてサービス アセンブリを指定します。`/serviceName` オプションを使用して、エクスポートするサービスの構成名を指定する必要があります。Svcutil.exe を実行すると、指定した実行可能アセンブリの構成ファイルが自動的に読み込まれます。 + +- アセンブリ セットのすべてのデータ コントラクト型をエクスポートするには、`/dataContractOnly` オプションを使用します。 + +> [!NOTE] +> `/reference` オプションを使用して、任意の依存アセンブリへのファイル パスを指定してください。 + +### コンパイル済みサービス コントラクトのメタデータをエクスポートするには + +1. サービス コントラクトの実装を 1 つ以上のクラス ライブラリにコンパイルします。 + +2. コンパイルされたアセンブリに対して Svcutil.exe を実行します。 + + > [!NOTE] + > 依存アセンブリへのファイル パスを指定するには、`/reference` スイッチを使用する必要があります。 + + ``` + svcutil.exe Contracts.dll + ``` + +### コンパイル済みサービスのメタデータをエクスポートするには + +1. サービスの実装を実行可能アセンブリにコンパイルします。 + +2. サービス実行可能ファイルの構成ファイルを作成し、サービス構成を追加します。 + + ``` + + + + + + + + + + + ``` + +3. コンパイルされたサービス実行可能ファイルに対して Svcutil.exe を実行します。その際、`/serviceName` スイッチを使用してサービスの構成名を指定してください。 + + > [!NOTE] + > 依存アセンブリへのファイル パスを指定するには、`/reference` スイッチを使用する必要があります。 + + ``` + svcutil.exe /serviceName:MyService Service.exe /reference:path/Contracts.dll + ``` + +### コンパイル済みデータ コントラクトのメタデータをエクスポートするには + +1. データ コントラクトの実装を 1 つ以上のクラス ライブラリにコンパイルします。 + +2. コンパイルされたアセンブリに対して Svcutil.exe を実行します。その際、`/dataContract` スイッチを使用して、データ コントラクトのメタデータだけが生成されるように指定してください。 + + > [!NOTE] + > 依存アセンブリへのファイル パスを指定するには、`/reference` スイッチを使用する必要があります。 + + ``` + svcutil.exe /dataContractOnly Contracts.dll + ``` + +## 使用例 + 単純なサービス実装および構成のメタデータを生成する方法を次の例に示します。 + + サービス コントラクトのメタデータをエクスポートするには、次のように指定します。 + +``` +svcutil.exe Contracts.dll +``` + + データ コントラクトのメタデータをエクスポートするには、次のように指定します。 + +``` +svcutil.exe /dataContractOnly Contracts.dll +``` + + サービス実装のメタデータをエクスポートするには、次のように指定します。 + +``` +svcutil.exe /serviceName:MyService Service.exe /reference:/Contracts.dll +``` + + `` は Contracts.dll へのパスです。 + +``` +// The following service contract and data contracts are compiled into +// Contracts.dll. +[ServiceContract(ConfigurationName="IPeopleFinder")] +public interface IPersonFinder +{ + [OperationContract] + Address GetAddress(Person s); +} + +[DataContract] +public class Person +{ + [DataMember] + public string firstName; + [DataMember] + public string lastName; + [DataMember] + public int age; +} + +[DataContract] +public class Address +{ + [DataMember] + public string city; + [DataMember] + public string state; + [DataMember] + public string street; + [DataMember] + public int zipCode; + [DataMember] + public Person person; +} + +// The following service implementation is compiled into Service.exe. +// This service uses the contracts specified in Contracts.dll. +[ServiceBehavior(ConfigurationName = "MyService")] +public class MyService : IPersonFinder +{ + public Address GetAddress(Person person) + { + Address address = new Address(); + address.person = person; + return address; + } +} + + + + + + + + + + + + + +``` + +## 参照 + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) + [メタデータのエクスポートとインポート](../../../../docs/framework/wcf/feature-details/exporting-and-importing-metadata.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-validate-compiled-service-code.md b/docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-validate-compiled-service-code.md new file mode 100644 index 00000000000..4fac8e25c53 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-validate-compiled-service-code.md @@ -0,0 +1,46 @@ +--- +title: "方法 : Svcutil.exe を使用してコンパイル済みサービス コードを検証する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d0d820fb-41c2-45b8-8f22-0fa5aeebbbaa +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : Svcutil.exe を使用してコンパイル済みサービス コードを検証する +[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用すると、サービスをホストせずにサービスの実装と構成でエラーを検出できます。 + +### サービスを検証するには + +1. サービスを実行可能ファイルおよび 1 つ以上の依存アセンブリにコンパイルします。 + +2. SDK コマンド プロンプトを開きます。 + +3. コマンド プロンプトで、次の形式を使用して Svcutil.exe ツールを起動します。 各パラメーターの詳細については、「[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)」トピックの「サービスの検証」を参照してください。 + + ``` + svcutil.exe /validate /serviceName: * + ``` + + `/serviceName` オプションを使用して、検証するサービスの構成名を指定する必要があります。 + + `assemblyPath` 引数には、検証対象のサービスの実行可能ファイルへのパス、およびサービス型を格納している 1 つ以上のアセンブリへのパスを指定します。 実行可能アセンブリに、サービス構成を提供する関連構成ファイルが存在している必要があります。 標準のコマンドライン ワイルドカードを使用して、複数のアセンブリを指定できます。 + +## 使用例 + 次のコマンドでは、myServiceHost.exe 実行可能ファイルに実装されたサービス myServiceName を検証します。 サービスの構成ファイル \(myServiceHost.exe.config\) は自動的に読み込まれます。 + +``` +svcutil /validate /serviceName:myServiceName myServiceHost.exe +``` + +## 参照 + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-the-aspnet-authorization-manager-role-provider-with-a-service.md b/docs/framework/wcf/feature-details/how-to-use-the-aspnet-authorization-manager-role-provider-with-a-service.md new file mode 100644 index 00000000000..b2ef7bd9a89 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-the-aspnet-authorization-manager-role-provider-with-a-service.md @@ -0,0 +1,42 @@ +--- +title: "方法 : ASP.NET の承認マネージャー ロール プロバイダーとサービスを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f21deb81-91ef-49ef-94d6-494785143271 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 方法 : ASP.NET の承認マネージャー ロール プロバイダーとサービスを使用する +[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] が Web サービスをホストする場合は、承認マネージャーをアプリケーションに統合してサービスを承認することができます。 承認マネージャーを使用して、アプリケーション開発者は個々の操作を定義できます。また、個々の操作をグループ化してタスクを形成できます。 次に管理者は、ロールを承認して特定のタスクまたは個々の操作を実行できます。 承認マネージャーでは、ロール、タスク、操作、ユーザーを管理する管理ツールとして Microsoft 管理コンソール \(MMC\) スナップインが提供されます。 管理者は、承認マネージャーのポリシー ストアを XML ファイル、Active Directory、または Active Directory アプリケーション モード \(ADAM\) ストアに構成します。 + + 承認マネージャーをアプリケーションに統合するには、Web サービスをホストする [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アプリケーションの承認マネージャーの [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダーを構成します。 他の [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダーと同様、承認マネージャーの [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダーは \<`providers`\> 要素を使用して構成します。 + + 承認マネージャーをアプリケーションに統合する Web サービスの構成ファイルの一部を示すコード例を次に示します。 + +``` + + + + + + + +``` + + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダーと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションを統合する [!INCLUDE[crabout](../../../../includes/crabout-md.md)] については、「[方法 : ASP.NET のロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md)」を参照してください。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)] で承認マネージャーを使用する [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] については、「[方法: ASP.NET 2.0 で認証マネージャー \(AzMan\) を使用する](http://go.microsoft.com/fwlink/?LinkId=71303)」を参照してください。 + +## 参照 + [方法 : ASP.NET のロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider.md b/docs/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider.md new file mode 100644 index 00000000000..f55b9b6a304 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider.md @@ -0,0 +1,168 @@ +--- +title: "方法 : ASP.NET メンバーシップ プロバイダーを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF と ASP.NET" + - "WCF, 承認" + - "WCF, セキュリティ" +ms.assetid: 322c56e0-938f-4f19-a981-7b6530045b90 +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# 方法 : ASP.NET メンバーシップ プロバイダーを使用する +[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] メンバーシップ プロバイダーを使用すると、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 開発者は、ユーザーが一意のユーザー名とパスワードの組み合わせを作成できる Web サイトを作成できます。この機能を使用すれば、ユーザーはだれでもサイトでアカウントを作成し、そのサイトにサインインして、サービスに排他的にアクセスできます。これは、ユーザーが Windows ドメイン内にアカウントを持っていることが必要な Windows セキュリティとは対照的です。自分の資格情報 \(ユーザー名とパスワードの組み合わせ\) を提示したユーザーは、だれでもサイトとそのサービスを使用できるからです。 + + サンプル アプリケーションについては、「[メンバーシップとロール プロバイダー](../../../../docs/framework/wcf/samples/membership-and-role-provider.md)」を参照してください。[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダー機能の使用については、「[方法 : ASP.NET のロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md)」を参照してください。 + + メンバーシップ機能では、SQL Server データベースを使用してユーザー情報を格納する必要があります。メンバーシップ機能には、パスワードを忘れたユーザーへの質問を行うためのメソッドも含まれています。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 開発者は、セキュリティを向上させるためにこれらの機能を利用できます。この機能を [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションに統合した場合、ユーザーはユーザー名とパスワードの組み合わせを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーションに提示する必要があります。データを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに転送するには、 \(構成では [\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)\) のような、ユーザー名\/パスワード資格情報をサポートするバインディングを使用し、クライアントの資格情報の種類を `UserName` に設定します。サービス側では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティが、ユーザー名とパスワードに基づいてユーザーを認証し、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロールによって指定されるロールを割り当てます。 + +> [!NOTE] +> [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ユーザー名\/パスワードの組み合わせ、またはその他のユーザー情報をデータベースに格納するメソッドは提供されません。 + +### メンバーシップ プロバイダーを構成するには + +1. Web.config ファイルの \<`system.web`\> 要素の下に \<`membership`\> 要素を作成します。 + +2. `` ` 要素の下に、` 要素を作成します。 + +3. \<`providers`\> 要素の子要素として、`` 要素を追加し、プロバイダーのコレクションをフラッシュします。 + +4. ``\< `要素の下に add`\>`name 要素を作成し、``type、``connectionStringName、``applicationName、``enablePasswordRetrieval、``enablePasswordReset、``requiresQuestionAndAnswer、``requiresUniqueEmail、``passwordFormat、および` の各属性を適切な値に設定します。`name` 属性は、構成ファイルの値として後で使用します。`SqlMembershipProvider` に設定する方法の例を次に示します。 + + 次の例は構成セクションを示します。 + + ```xml + + + + + + + + ``` + +### ユーザー名\/パスワードの組み合わせを受け入れるようにサービス セキュリティを構成するには + +1. 構成ファイルの [\](../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md)[\](../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) 要素を追加します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)をバインディング セクションに追加します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインド要素の作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 構成でサービス バインディングを指定する](../../../../docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md)」を参照してください。 + +3. `` 要素の `modeMessage 属性を` に設定します。 + +4. \<`message`\> 要素の `clientCredentialType` 属性を `UserName` に設定します。これにより、ユーザー名\/パスワードの組み合わせがクライアントの資格情報として使用されるようになります。 + + 次のコード例は、バインディングの構成コードを示しています。 + + ```xml + + + + + + + + + + + + + ``` + +### メンバーシップ プロバイダーを使用するようにサービスを構成するには + +1. `` [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素を追加します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md) を \<`behaviors`\> 要素に追加します。 + +3. [\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md) を追加し、`name` 属性を適切な値に設定します。 + +4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)\<`behaviorを` \> 要素に追加します。 + +5. [\](../../../../docs/framework/configure-apps/file-schema/wcf/usernameauthentication.md)を `` 要素に追加します。 + +6. `userNamePasswordValidationMode` 属性を `MembershipProvider` に設定します。 + + > [!IMPORTANT] + > `userNamePasswordValidationMode` 値が設定されていない場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] メンバーシップ プロバイダーの代わりに Windows 認証を使用します。 + +7. `membershipProviderName` 属性をプロバイダーの名前 \(このトピックの最初の手順でプロバイダーを追加したときに指定したもの\) に設定します。次の例に、この時点での `` のフラグメントを示します。 + + ```xml + + + + + + + + + + + ``` + +## 使用例 + 次のコードは、ASP メンバーシップ機能を使用するサービスの構成を示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [方法 : ASP.NET のロール プロバイダーとサービスを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md) + [メンバーシップとロール プロバイダー](../../../../docs/framework/wcf/samples/membership-and-role-provider.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md b/docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md new file mode 100644 index 00000000000..a8a2d8e3fc9 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md @@ -0,0 +1,78 @@ +--- +title: "方法 : ASP.NET のロール プロバイダーとサービスを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 88d33a81-8ac7-48de-978c-5c5b1257951e +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : ASP.NET のロール プロバイダーとサービスを使用する +[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ロール プロバイダーを [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] メンバーシップ プロバイダーと共に使用すると、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 開発者は、サイトで使用するアカウントをユーザーが作成し、承認のためにユーザーにロールを割り当てることができる Web サイトを作成できます。この機能を使用すれば、ユーザーはだれでもサイトでアカウントを作成し、そのサイトにログインしてサービスに排他的にアクセスできます。これは、ユーザーが Windows ドメイン内にアカウントを持っていることが必要な Windows セキュリティとは対照的です。自分の資格情報 \(ユーザー名とパスワードの組み合わせ\) を提示したユーザーは、だれでもサイトとそのサービスを使用できます。 + + サンプル アプリケーションについては、「[メンバーシップとロール プロバイダー](../../../../docs/framework/wcf/samples/membership-and-role-provider.md)」を参照してください。[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] のメンバーシップ プロバイダー機能[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : ASP.NET メンバーシップ プロバイダーを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider.md)」を参照してください。 + + ロール プロバイダー機能では、SQL Server データベースを使用してユーザー情報を格納します。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 開発者は、セキュリティを向上させるためにこれらの機能を利用できます。この機能を [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションに統合した場合、ユーザーはユーザー名とパスワードの組み合わせを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーションに提示する必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でデータベースを使用できるようにするには、 クラスのインスタンスを作成し、その プロパティを に設定してから、サービスをホストしている に対する動作のコレクションにそのインスタンスを追加します。 + +### ロール プロバイダーを構成するには + +1. Web.config ファイルで、\<`system.web`\> 要素の下に \<`roleManager`\> 要素を追加し、その `enabled` 属性を `true` に設定します。 + +2. `defaultProvider` 属性を `SqlRoleProvider` に追加します。 + +3. \<`roleManager`\> 要素の子として \<`providers`\> 要素を追加します。 + +4. 次の例に示すように、\<`providers`\> 要素の子として \<`add`\> 要素を追加し、`name`、`type`、`connectionStringName`、および `applicationName` の各属性を適切な値に設定します。 + + ``` + + + + + + + ``` + +### ロール プロバイダーを使用するようにサービスを構成するには + +1. Web.config ファイルで [\](../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) 要素を追加します。 + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素を \<`system.ServiceModel`\> 要素に追加します。 + +3. \<`behaviors`\> 要素に [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md)を追加します。 + +4. [\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)を追加し、`name` 属性を適切な値に設定します。 + +5. [\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md)を \<`behavior`\> 要素に追加します。 + +6. `principalPermissionMode` 属性を `UseAspNetRoles` に追加します。 + +7. `roleProviderName` 属性を `SqlRoleProvider` に追加します。この構成の一部を次の例に示します。 + + ``` + + + + + + + + ``` + +## 参照 + [メンバーシップとロール プロバイダー](../../../../docs/framework/wcf/samples/membership-and-role-provider.md) + [方法 : ASP.NET メンバーシップ プロバイダーを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-the-channelfactory.md b/docs/framework/wcf/feature-details/how-to-use-the-channelfactory.md new file mode 100644 index 00000000000..34eff34bf5b --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-the-channelfactory.md @@ -0,0 +1,35 @@ +--- +title: "方法 : ChannelFactory を使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: d48f01b5-582b-4c8b-b547-8adddae7e371 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : ChannelFactory を使用する + ジェネリック クラスは、複数チャネルの作成に使用できるチャネル ファクトリの作成を必要とする高度なシナリオで使用します。 + +### ChannelFactory クラスの作成方法と使用方法 + +1. [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをビルドして実行します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [サービスの設計と実装](../../../../docs/framework/wcf/designing-and-implementing-services.md)、[サービスの構成](../../../../docs/framework/wcf/configuring-services.md)、および [ホスティング サービス](../../../../docs/framework/wcf/hosting-services.md)。 + +2. クライアントのコントラクト \(インターフェイス\) を生成するには、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用します。 + +3. クライアント コード内で、 クラスを使用して複数のエンドポイント リスナーを作成します。 + +## 使用例 + [!code-csharp[c_HowToUseChannelFactory#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_howtousechannelfactory/cs/source.cs#1)] + [!code-vb[c_HowToUseChannelFactory#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howtousechannelfactory/vb/source.vb#1)] \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-the-com-service-model-configuration-tool.md b/docs/framework/wcf/feature-details/how-to-use-the-com-service-model-configuration-tool.md new file mode 100644 index 00000000000..a1907b86360 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-the-com-service-model-configuration-tool.md @@ -0,0 +1,121 @@ +--- +title: "方法 : COM+ サービス モデル構成ツールを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "COM+ [WCF], サービス モデル構成ツールの使用" +ms.assetid: 7e68cd8d-5fda-4641-b92f-290db874376e +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 方法 : COM+ サービス モデル構成ツールを使用する +適切なホスト モードを選択したら、COM\+ サービス モデル構成コマンド ライン ツール \(ComSvcConfig.exe\) を使用して、Web サービスとして公開されるアプリケーション インターフェイスを構成します。 + +> [!NOTE] +> 以下の各作業を実行するには、コンピューターの管理者である必要があります。 + + Windows 7 コンピューターで ComSvcConfig.exe を使用して、最新のサービス モデル バージョン \(現在 v4.5\) を使用するように Web サービスを構成する場合は、次の手順を実行します。 + +1. レジストリ キー `[HKEY_LOCAL_COMPUTER\SOFTWARE\Microsoft\.NETFramework]\OnlyUseLatestCLR` に DWORD 値 0x00000001 を設定します。 + +2. comsvcconfig.exe を実行します。 + +3. 手順 1. で追加したレジストリ キーを元の値に戻すか、存在しない場合は削除します。 + +> [!IMPORTANT] +> このレジストリ キーを元に戻すことは重要です。これは互換性のキーです。この変更を元に戻さないと、コンピューターで実行している他の .NET アプリケーションで問題が発生する可能性があります。 + +> [!WARNING] +> Windows 8 コンピューターで ComSvcConfig.exe \/install を使用すると、.NET Framework 3.5 がインストールされていない場合は、"お使いの PC にあるアプリには、Windows の次の機能が必要です: .NET Framework 3.5 \(.NET 2.0 と .NET 3.0 を含む\)" というメッセージを示すダイアログが表示されます。このダイアログは無視してもかまいません。また、OnlyUseLatestCLR レジストリ キーを DWORD 値 0x00000001 に設定することもできます。 + +### COM\+ ホスト モードを使用して、Web サービスとして公開されるインターフェイスのセットにインターフェイスを追加するには + +- 次の例に示すように、`/install` オプションと `/hosting:complus` オプションを使用して ComSvcConfig を実行します。 + + ``` + ComSvcConfig.exe /install /application:OnlineStore /contract:ItemOrders.Financial,IFinances /hosting:complus /verbose + ``` + + このコマンドは、Web サービスとして公開されるインターフェイスのセットに \(OnlineStore COM\+ アプリケーションの\) `ItemOrders.IFinancial` コンポーネントの `IFinances` インターフェイスを追加します。サービスは COM\+ ホスト モードを使用するため、アプリケーションを明示的にアクティブ化する必要があります。 + + コンポーネントとインターフェイスにはアスタリスク \(\*\) をワイルドカード文字として使用できますが、選択した機能だけを Web サービスとして公開する場合は使用しないでください。ワイルドカードを使用すると、このコンポーネントの将来のバージョンを使用して実行したときに、構成構文の決定時には存在しなかったインターフェイスが誤って公開される可能性があります。 + + \/verbose オプションを指定すると、ツールは、エラーだけでなく警告も表示します。 + + 公開されたサービスのコントラクトには、`IFinances` インターフェイスのすべてのメソッドが含まれます。 + +### COM\+ ホスト モードを使用して、Web サービスとして公開されるインターフェイスのセットにインターフェイスの特定のメソッドだけを追加するには + +- 次の例に示すように、`/install` オプションと `/hosting:complus` オプション、および必要なメソッドの名前を明示的に指定して、ComSvcConfig を実行します。 + + ``` + ComSvcConfig.exe /install /application:OnlineStore /contract:ItemOrders.Financial,IFinances.{Credit,Debit} /hosting:complus /verbose + ``` + + このコマンドは、公開されたサービス コントラクトに `IFinances` インターフェイスの `Credit` メソッドと `Debit` メソッドだけを操作として追加します。インターフェイスのその他のメソッドはすべてコントラクトから除外されるため、Web サービス クライアントから呼び出すことができません。 + +### Web ホスト モードを使用して、Web サービスとして公開されるインターフェイスのセットにインターフェイスを追加するには + +- 次の例に示すように、`/install` オプションと `/hosting:was` オプションを使用して ComSvcConfig を実行します。 + + ``` + ComSvcConfig.exe /install /application:OnlineWarehouse /contract:ItemInventory.Warehouse,IStockLevels /hosting:was /webDirectory:root/OnlineWarehouse /mex /verbose + ``` + + このコマンドは、Web サービスとして公開されるインターフェイスのセットに \(OnlineWarehouse COM\+ アプリケーションの\) `ItemInventory.Warehouse` コンポーネントの `IStockLevels` インターフェイスを追加します。サービスは、COM\+ 内ではなく、IIS の OnlineWarehouse 仮想ディレクトリ内で Web ホストされるため、アプリケーションは、必要に応じて自動的にアクティブ化されます。 + + Web ホスト \(インプロセス\) 構成を使用するには、コンポーネント サービス管理コンソールを使用して、サーバー アプリケーションではなくライブラリ アプリケーションとして実行されるように COM\+ アプリケーションを構成する必要があります。サーバー アプリケーションとして構成されたアプリケーションは、標準の Web ホスト モードを使用するため、各要求の処理でプロセス ホップが発生します。 + + `/mex` オプションは、サービスからコントラクト定義を取得するクライアントをサポートするために、アプリケーションのサービス エンドポイントと同じトランスポートを使用する追加の Metadata Exchange \(MEX\) サービス エンドポイントを追加します。 + +### 指定したインターフェイスの Web サービスを削除するには + +- 次の例に示すように、`/uninstall` のオプションを使用して ComSvcConfig を実行します。 + + ``` + ComSvcConfig.exe /uninstall /application:OnlineStore /contract:ItemOrders.Financial,IFinances /hosting:complus + ``` + + このコマンドは、\(OnlineStore COM\+ アプリケーションから\) `ItemOrders.Financial` コンポーネントの `IFinances` インターフェイスを削除します。 + +### 現在公開されているインターフェイスを一覧表示するには + +- 次の例に示すように、`/list` のオプションを使用して ComSvcConfig を実行します。 + + ``` + ComSvcConfig.exe /list + ``` + + このコマンドは、ローカル コンピューターに関して、現在公開されているインターフェイス、および対応するアドレスとバインディングの詳細を一覧表示します。 + +### 現在公開されている特定のインターフェイスを一覧表示するには + +- 次の例に示すように、`/list` のオプションを使用して ComSvcConfig を実行します。 + + ``` + ComSvcConfig.exe /list /application:OnlineStore /hosting:complus + ``` + + このコマンドは、ローカル コンピューター上の OnlineStore COM\+ アプリケーションの現在公開されている COM\+ ホスト インターフェイスを、対応するアドレスやバインディングの詳細と共に一覧表示します。 + +### ユーティリティで使用できるオプションに関するヘルプを表示するには + +- 次の例に示すように、\/? オプションを使用して ComSvcConfig を実行します。 + + ``` + ComSvcConfig.exe /? + + ``` + +## 参照 + [COM\+ アプリケーションとの統合の概要](../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-use-transport-security-and-message-credentials.md b/docs/framework/wcf/feature-details/how-to-use-transport-security-and-message-credentials.md new file mode 100644 index 00000000000..30789f959f7 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-use-transport-security-and-message-credentials.md @@ -0,0 +1,171 @@ +--- +title: "方法 : トランスポート セキュリティとメッセージ資格情報を使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "TransportWithMessageCredentials" +ms.assetid: 6cc35346-c37a-4859-b82b-946c0ba6e68f +caps.latest.revision: 11 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 11 +--- +# 方法 : トランスポート セキュリティとメッセージ資格情報を使用する +トランスポート資格情報とメッセージ資格情報の両方を使用してサービスをセキュリティで保護する場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、トランスポート セキュリティ モードとメッセージ セキュリティ モードの両方が最適に使用されます。つまり、トランスポート層セキュリティでは整合性と機密性が提供され、メッセージ層セキュリティでは、厳密なトランスポート セキュリティ機構では実現できないさまざまな資格情報が提供されます。ここでは、 バインディングと バインディングを使用して、メッセージ資格情報付きトランスポートを実装するための基本手順を示します。セキュリティ モードの設定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : セキュリティ モードを設定する](../../../../docs/framework/wcf/how-to-set-the-security-mode.md)」を参照してください。 + + セキュリティ モードを `TransportWithMessageCredential` に設定した場合、トランスポート レベルのセキュリティを提供する実際の機構は、トランスポートによって決まります。この機構は、HTTP の場合は SSL \(Secure Sockets Layer\) over HTTP \(HTTPS\)、TCP の場合は SSL over TCP または Windows です。 + + トランスポートが HTTP \( を使用\) の場合は、トランスポート レベルのセキュリティが SSL over HTTP によって提供されます。この場合、このトピックで後述するように、ポートにバインドされた SSL 証明書を使用してサービスをホストするコンピューターを構成する必要があります。 + + トランスポートが TCP \( を使用\) の場合、既定では、Windows セキュリティ または SSL over TCP によってトランスポート レベルのセキュリティが提供されます。SSL over TCP を使用する場合は、このトピックで後述するように、 メソッドを使用して証明書を指定する必要があります。 + +### WSHttpBinding と証明書を使用してトランスポート セキュリティを提供するには \(コードを使用する場合\) + +1. HttpCfg.exe ツールを使用して、コンピューターの任意のポートに SSL 証明書をバインドします。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md). + +2. クラスのインスタンスを作成し、 プロパティを に設定します。 + +3. プロパティに適切な値を設定します \([!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][資格情報の種類の選択](../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md).\)次のコードでは、 値を使用しています。 + +4. 適切なベース アドレスを持つ クラスのインスタンスを作成します。このアドレスでは、"HTTPS" スキームを使用し、コンピューターの実際の名前と SSL 証明書のバインド先のポート番号を含める必要があります \(または、構成で基本アドレスを設定できます。\) + +5. メソッドを使用してサービス エンドポイントを追加します。 + +6. のインスタンスを作成し、 メソッドを呼び出します。コードは次のようになります。 + + [!code-csharp[c_SettingSecurityMode#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_settingsecuritymode/cs/source.cs#7)] + [!code-vb[c_SettingSecurityMode#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_settingsecuritymode/vb/source.vb#7)] + +### NetTcpBinding と証明書を使用してトランスポート セキュリティを提供するには \(コードを使用する場合\) + +1. クラスのインスタンスを作成し、 プロパティを に設定します。 + +2. を適切な値に設定します。次のコードでは、 値を使用しています。 + +3. 適切なベース アドレスを持つ クラスのインスタンスを作成します。アドレスには "net.tcp" スキーマを使用する必要があることに注意してください。\(または、構成で基本アドレスを設定できます。\) + +4. クラスのインスタンスを作成します。 + +5. クラスの メソッドを使用して、サービスに X.509 資格情報を明示的に設定します。 + +6. メソッドを使用してサービス エンドポイントを追加します。 + +7. 次のコードに示すように、 メソッドを呼び出します。 + + [!code-csharp[c_SettingSecurityMode#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_settingsecuritymode/cs/source.cs#8)] + [!code-vb[c_SettingSecurityMode#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_settingsecuritymode/vb/source.vb#8)] + +### NetTcpBinding と Windows を使用してトランスポート セキュリティを提供するには \(コードを使用する場合\) + +1. クラスのインスタンスを作成し、 プロパティを に設定します。 + +2. トランスポート セキュリティが Windows を使用するように、 に設定します \(これは、既定の設定です\)。 + +3. を適切な値に設定します。次のコードでは、 値を使用しています。 + +4. 適切なベース アドレスを持つ クラスのインスタンスを作成します。アドレスには "net.tcp" スキーマを使用する必要があることに注意してください。\(または、構成で基本アドレスを設定できます。\) + +5. クラスのインスタンスを作成します。 + +6. クラスの メソッドを使用して、サービスに X.509 資格情報を明示的に設定します。 + +7. メソッドを使用してサービス エンドポイントを追加します。 + +8. 次のコードに示すように、 メソッドを呼び出します。 + + [!code-csharp[c_SettingSecurityMode#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_settingsecuritymode/cs/source.cs#9)] + [!code-vb[c_SettingSecurityMode#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_settingsecuritymode/vb/source.vb#9)] + +## 構成の使用 + +#### WSHttpBinding を使用するには + +1. ポートにバインドされた SSL 証明書を使用してコンピューターを構成します \([!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md)\).この構成では、\<`transport`\> 要素値を設定する必要はありません。 + +2. メッセージ レベルのセキュリティのクライアント資格情報の種類を指定します。次の例では、\<`message`\> 要素の `clientCredentialType` 属性を `UserName` に設定しています。 + + ``` + + + + + + + + ``` + +#### NetTcpBinding と証明書を使用してトランスポート セキュリティを提供するには + +1. SSL over TCP の場合、`` 要素内で証明書を明示的に指定する必要があります。既定のストアの場所 \(ローカル コンピューターの個人ストア\) にある証明書を、発行者で指定する例を次に示します。 + + ``` + + + + + + + + + + ``` + +2. [\](../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md)をバインディング セクションに追加します。 + +3. バインド要素を追加して、`name` 属性を適切な値に設定します。 + +4. \<`security`\> 要素を追加し、`mode` 属性に `TransportWithMessageCredential` を設定します。 + +5. \<`message>` 要素を追加し、`clientCredentialType` 属性を適切な値に設定します。 + + ``` + + + + + + + + + + ``` + +#### NetTcpBinding と Windows を使用してトランスポート セキュリティを提供するには + +1. [\](../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md)をバインディング セクションに追加します。 + +2. \<`binding`\> 要素を追加し、`name` 属性を適切な値に設定します。 + +3. \<`security`\> 要素を追加し、`mode` 属性に `TransportWithMessageCredential` を設定します。 + +4. \<`transport`\> 要素を追加し、`clientCredentialType` 属性に `Windows` を設定します。 + +5. \<`message`\> 要素を追加し、`clientCredentialType` 属性を適切な値に設定します。次のコードは、値を証明書に設定します。 + + ``` + + + + + + + + + + + + ``` + +## 参照 + [方法 : セキュリティ モードを設定する](../../../../docs/framework/wcf/how-to-set-the-security-mode.md) + [サービスのセキュリティ保護](../../../../docs/framework/wcf/securing-services.md) + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md b/docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md new file mode 100644 index 00000000000..9d76e1e8b65 --- /dev/null +++ b/docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md @@ -0,0 +1,68 @@ +--- +title: "方法 : MMC スナップインを使用して証明書を参照する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "証明書 [WCF], MMC スナップインを使用した参照" +ms.assetid: 2b8782aa-ebb4-4ee7-974b-90299e356dc5 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 方法 : MMC スナップインを使用して証明書を参照する +X.509 証明書は、広く使用されている資格情報です。セキュリティで保護されたサービスやクライアントを作成する場合、 メソッドなどのメソッドを使用して、クライアントやサービスの資格情報として使用する証明書を指定できます。このメソッドでは、証明書を格納するストアや証明書を検索するときに使用する値など、さまざまなパラメーターが必要になります。次の手順では、コンピューター上のストアを調べて適切な証明書を検索する方法を示します。証明書の拇印の検索の例については、「[方法 : 証明書のサムプリントを取得する](../../../../docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md)」を参照してください。 + +### MMC スナップインで証明書を参照するには + +1. コマンド プロンプト ウィンドウを開きます。 + +2. 「`mmc`」と入力し、Enter キーを押します。ローカル コンピューターのストアにある証明書を表示するには、管理者のロールが必要です。 + +3. **\[ファイル\]** メニューの **\[スナップインの追加と削除\]** をクリックします。 + +4. **\[追加\]** をクリックします。 + +5. **\[スタンドアロン スナップインの追加\]** ダイアログ ボックスで、**\[証明書\]** を選択します。 + +6. **\[追加\]** をクリックします。 + +7. **\[証明書スナップイン\]** ダイアログ ボックスで、**\[コンピューター アカウント\]** を選択し、**\[次へ\]** をクリックします。必要に応じて、**\[ユーザー アカウント\]** や **\[サービス アカウント\]** も選択できます。そのコンピューターの管理者でない場合は、自分のユーザー アカウントの証明書のみを管理できます。 + +8. **\[コンピューターの選択\]** ダイアログ ボックスで、**\[完了\]** をクリックします。 + +9. **\[スタンドアロン スナップインの追加\]** ダイアログ ボックスで、**\[閉じる\]** をクリックします。 + +10. **\[スナップインの追加と削除\]** ダイアログ ボックスで、**\[OK\]** をクリックします。 + +11. **\[コンソール ルート\]** ウィンドウで、**\[証明書 \(ローカル コンピューター\)\]** をクリックしてコンピューターの証明書ストアを表示します。 + +12. 省略可能。自分のアカウントの証明書を表示するには、手順 3. ~ 6. を繰り返し、手順 7. で **\[コンピューター アカウント\]** を選択する代わりに **\[ユーザー アカウント\]** をクリックして、手順 8. ~ 10. を繰り返します。 + +13. 省略可能。**\[ファイル\]** メニューの **\[保存\]** または **\[名前を付けて保存\]** をクリックします。再利用できるようにコンソール ファイルを保存します。 + +## Internet Explorer を使用した証明書の表示 + Internet Explorer を使用して、証明書を表示、エクスポート、インポート、または削除することもできます。 + +#### Internet Explorer で証明書を表示するには + +1. Internet Explorer で **\[ツール\]** をクリックし、**\[インターネット オプション\]** をクリックして **\[インターネット オプション\]** ダイアログ ボックスを表示します。 + +2. **\[コンテンツ\]** タブをクリックします。 + +3. **\[証明書\]** で、**\[証明書\]** をクリックします。 + +4. 証明書の詳細を表示するには、その証明書を選択し、**\[表示\]** をクリックします。 + +## 参照 + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [方法 : 開発中に使用する一時的な証明書を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development.md) + [方法 : 証明書のサムプリントを取得する](../../../../docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/http-post-and-http-get-requests-for-aspnet-ajax-endpoints.md b/docs/framework/wcf/feature-details/http-post-and-http-get-requests-for-aspnet-ajax-endpoints.md new file mode 100644 index 00000000000..10df59b93bb --- /dev/null +++ b/docs/framework/wcf/feature-details/http-post-and-http-get-requests-for-aspnet-ajax-endpoints.md @@ -0,0 +1,101 @@ +--- +title: "方法 : ASP.NET AJAX エンドポイントのために HTTP POST または HTTP GET を選択する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b47de82a-4c92-4af6-bceb-a5cb8bb8ede9 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# 方法 : ASP.NET AJAX エンドポイントのために HTTP POST または HTTP GET を選択する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、クライアント Web サイトの JavaScript から呼び出される ASP.NET AJAX 対応のエンドポイントを公開するサービスを作成できます。 このようなサービスを構築するための基本的な手順については、「[方法 : 構成を使用して ASP.NET AJAX エンドポイントを追加する](../../../../docs/framework/wcf/feature-details/how-to-use-configuration-to-add-an-aspnet-ajax-endpoint.md)」および「[方法 : 構成を使用せずに ASP.NET AJAX エンドポイントを追加する](../../../../docs/framework/wcf/feature-details/how-to-add-an-aspnet-ajax-endpoint-without-using-configuration.md)」を参照してください。 + + ASP.NET AJAX では、HTTP POST 動詞および HTTP GET 動詞を使用する操作をサポートしており、HTTP POST が既定となっています。 副作用がなく、返されるデータがほとんど、またはまったく変更されない操作を作成する場合は、代わりに HTTP GET を使用します。 GET 操作の結果はキャッシュされます。つまり、同じ操作についての複数の呼び出し結果がサービスに対する 1 回だけの要求で済むことになります。 このキャッシュ動作は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によってではなく、任意のレベル \(ユーザーのブラウザーやプロキシ サーバー、その他のレベル\) で実行できます。キャッシュはサービス パフォーマンスの向上が望まれる場合には有効ですが、データの変更が頻繁であったり、操作によって何かのアクションが実行される場合は適していません。 + + たとえば、ユーザーの音楽ライブラリを管理するサービスをデザインする場合、アルバムのタイトルに基づいてアーティストを検索する操作では GET の使用は役に立ちますが、ユーザーの個人コレクションにアルバムを追加する操作では POST を使用する必要があります。 + + キャッシュの有効期間を制御するには、 型を使用します。 たとえば、1 時間ごとに更新される天気予報を返すサービスをデザインする場合、GET を使用することが考えられますが、サービスを使用するユーザーが古いデータにアクセスすることを防止するために、キャッシュの有効期間を 1 時間以内に制限します。 + + Script Manager コントロールを使用する ASP.NET AJAX ページからサービスを使用する場合は、Script Manager のメカニズムにより適切な要求の種類が発行されることが保証されているため、操作で GET と POST のどちらを使用しても違いはありません。 + + HTTP GET 操作では、複合型データ コントラクト型も含めて、POST 操作でサポートされるすべての入力パラメーターを使用できます。 ただし、多くの場合、キャッシュの効率が低下するため、多数のパラメーター、または複雑すぎるパラメーターを GET 操作で使用しないことをお勧めします。 + + このトピックでは、 または 属性を追加することで、サービス コントラクトに適切な操作を GET と POST から選択する方法について説明します。 サービスの実行に必要な他の手順 \(サービスの実装、構成、およびホスト\) は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の ASP.NET AJAX サービスで使用される手順と同様になります。 + + でマークされた操作では、常に GET 要求が使用されます。 でマークされた操作と、これらの 2 つの属性のどちらでもマークされていない操作では、POST 要求が使用されます。 は、 プロパティを介して、GET と POST 以外の HTTP 動詞 \(PUT や DELETE など\) の使用を許可します。 ただし、これらの動詞は ASP.NET AJAX ではサポートされていません。 Script Manager コントロールを使用して ASP.NET ページからサービスを使用する場合は、 プロパティは使用しないでください。 + + GET に切り替える実施例については、「[基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md)」のサンプルを参照してください。 + + POST の使用例については、「[HTTP POST を使用する AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-using-http-post.md)」のサンプルを参照してください。 + +### HTTP GET または HTTP POST 要求に応答する WCF サービスを作成するには + +1. 属性でマークされたインターフェイスを使用して、基本的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス コントラクトを定義します。 各操作を でマークします。 属性を追加して、操作が HTTP GET 要求に応答するように指定します。 HTTP POST を明示的に指定するために 属性を追加することもできます。また、属性を指定しなければ、既定で HTTP POST となります。 + + ``` + [ServiceContract] + public interface IMusicService + { + //This operation uses a GET method. + [OperationContract] + [WebGet] + string LookUpArtist(string album); + + //This operation will use a POST method. + [OperationContract] + [WebInvoke] + void AddAlbum(string user, string album); + + //This operation will use POST method by default + //since nothing else is explicitly specified. + [OperationContract] + string[] GetAlbums(string user); + + //Other operations omitted… + + } + ``` + +2. `MusicService` を使用して、`IMusicService` サービス コントラクトを実装します。 + + ``` + public class MusicService : IMusicService + { + public void AddAlbum(string user, string album) + { + //Add implementation here. + } + + //Other operations omitted… + } + ``` + +3. アプリケーションで、.svc という拡張子を付けて新しい service ファイルを作成します。 サービスに該当する [@ServiceHost](../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md) ディレクティブ情報を追加して、このファイルを編集します。 ASP.NET AJAX エンドポイントが自動的に構成されるように、[@ServiceHost](../../../../docs/framework/configure-apps/file-schema/wcf-directive/servicehost.md) ディレクティブで を使用することを指定します。 + + ``` + <%@ServiceHost + language=c# + Debug="true" + Service="Microsoft.Ajax.Samples.MusicService" + Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory + %> + ``` + +### サービスを呼び出すには + +1. ブラウザーを使用すると、クライアントのコードなしでサービスの GET 操作をテストできます。 たとえば、サービスがアドレス "http:\/\/example.com\/service.svc" で構成されている場合、ブラウザーのアドレス バーに「http:\/\/example.com\/service.svc\/LookUpArtist?album\=SomeAlbum」と入力するとサービスが呼び出され、応答がダウンロードまたは表示されます。 + +2. GET 操作によるサービスは、他の ASP.NET AJAX サービスと同様に、サービス URL を ASP.NET AJAX Script Manager コントロールのスクリプト コレクションに入力することで使用できます。 例については、「[基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md)」を参照してください。 + +## 参照 + [ASP.NET AJAX 用の WCF サービスの作成](../../../../docs/framework/wcf/feature-details/creating-wcf-services-for-aspnet-ajax.md) + [方法 : AJAX 対応 ASP.NET Web サービスを WCF に移行する](../../../../docs/framework/wcf/feature-details/how-to-migrate-ajax-enabled-aspnet-web-services-to-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/http-transport-security.md b/docs/framework/wcf/feature-details/http-transport-security.md new file mode 100644 index 00000000000..2b2ad7a1ce4 --- /dev/null +++ b/docs/framework/wcf/feature-details/http-transport-security.md @@ -0,0 +1,64 @@ +--- +title: "HTTP トランスポート セキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d3439262-c58e-4d30-9f2b-a160170582bb +caps.latest.revision: 14 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 14 +--- +# HTTP トランスポート セキュリティ +トランスポートとして HTTP を使用すると、SSL \(Secure Sockets Layer\) によりセキュリティが提供されます。 SSL はクライアントに対してサービスの認証を行い、機密性 \(暗号化\) をチャネルに提供する技術としてインターネットで広く使用されています。 このトピックでは、SSL の機能と SSL を [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に実装する方法について説明します。 + +## 基本 SSL + SSL の機能について一般的なシナリオを用いて説明します。ここでは、銀行の Web サイトを考えます。 ユーザーはユーザー名とパスワードを使用してサイトにログオンできます。 認証された後、ユーザーは、残高照会、支払い、口座間振り替えなどの各種取引を実行できます。 + + ユーザーがサイトに最初にアクセスする時に、SSL メカニズムは、ユーザーのクライアント \(この場合は Internet Explorer\) との*ハンドシェイク*と呼ばれる一連のネゴシエーションを開始します。 SSL は最初にユーザーに対して銀行サイトの認証を行います。 ユーザーを誘導してユーザー名とパスワードを入力させる "なりすまし" サイトではなく、通信先が実際のサイトであることをユーザーが最初に認識する必要があるため、この手順は不可欠です。 SSL は、VeriSign などの信頼された機関から提供される SSL 証明書を使用してこの認証を行います。 論理上は、VeriSign が銀行サイトの識別情報を保証することになります。 Internet Explorer では VeriSign が信頼済みであるため、このサイトも信頼されます。 VeriSign に確認する場合は、VeriSign のロゴをクリックします。 有効期限や発行先 \(銀行サイト\) などの信頼性に関する報告が表示されます。 + + セキュリティで保護されたセッションを開始するには、クライアントは「もしもし」と同等の情報を暗号アルゴリズムのリストと共にサーバーに送信します。サーバーはこの暗号アルゴリズムのリストを使用して署名、ハッシュの生成、暗号化と複号化を行えます。 これに対して、サイトからは受信確認、およびサイトが選択したアルゴリズム スイートの 1 つが返送されます。 この初期ハンドシェイク中に、両方のパーティは nonce を送受信します。 *nonce* は、ランダムに生成される使用データの一部で、サイトの公開キーと組み合わせてハッシュの作成に使用します。 *ハッシュ*とは、SHA1 などの標準アルゴリズムに基づいて 2 つの数値から派生した新しい数値です \(クライアントとサイトは、使用するハッシュ アルゴリズムに同意するためのメッセージも交換します\)。ハッシュは一意の数値で、クライアントとサイト間のセッションでメッセージの暗号化および復号化を行うためにのみ使用されます。 クライアントとサービスの両方に、元の nonce と証明書の公開キーがあるので、両者で同じハッシュを生成できます。 したがって、クライアントがサービスから送信されたハッシュを検証するには、\(a\) 同意したアルゴリズムを使用してデータからハッシュを計算し、\(b\) サービスから送信されたハッシュと比較します。両方が一致する場合は、クライアントはハッシュが改ざんされていないことを確認できます。 次にクライアントはこのハッシュを、さらに別の新しいハッシュが含まれるメッセージを暗号化するキーとして使用します。 サービスはハッシュを使用してこのメッセージを複号化でき、最後から 2 番目のハッシュを復帰できます。 ここで、累積された情報 \(nonce、公開キーなどのデータ\) が両者で認識されるので、最後のハッシュ \(マスター キー\) を作成できます。 最後のキーは、最後から 2 番目のハッシュで暗号化され送信されます。 次に、マスター キーを使ってメッセージの暗号化と複号化が行われセッションがリセットされます。 クライアントとサービスの両方で同じキーを使用するため、このキーは*セッション キー*とも呼ばれます。 + + セッション キーは、対称キーまたは "共有シークレット" としての特性も持っています。対称キーを使用すると、トランザクションの両側で必要となる計算が削減されるため、このキーを持つことは重要です。 すべてのメッセージが新しい nonce とハッシュの交換を要求した場合、パフォーマンスは低下します。 したがって、対称キーを使用して高い安全性と効率を確保しながらメッセージを両側に自由にフローさせることが、SSL の最終的な目標になります。 + + プロトコルはサイトによってさまざまなので、以上の説明では動作を簡略化しています。 また、データ交換処理をさらに複雑にするため \(保護を強化するため\) に、ハンドシェイク中にクライアントとサイトの両方でアルゴリズムを組み合わせた nonce を別々に生成することもできます。 + +### 証明書および公開キー基盤 + ハンドシェイク中に、サービスは SSL 証明書もクライアントに送信します。 証明書には、有効期限、発行元証明機関、サイトの URI \(Uniform Resource Identifier\) などの情報が含まれます。 クライアントは、この URI と最初にアクセスした URI を比較して一致するかどうかを確認し、また、日付と発行元証明機関をチェックします。 + + すべての証明書には、秘密キーと公開キーの 2 つのキーが含まれます。この 2 つのキーは、*交換キー ペア*と呼ばれます。 簡単に説明すると、秘密キーは証明書の所有者のみが認識し、公開キーは証明書から読み取ることができます。 どちらのキーもダイジェスト、ハッシュ、その他のキーの暗号化と複号化に使用できますが、逆の操作としての使用に限られます。 たとえば、クライアントで公開キーを使用して暗号化した場合、サイトのみが秘密キーを使用してメッセージを複号化できます。 同様に、サイトで秘密キーを使用して暗号化した場合、クライアントは公開キーを使用して複号化できます。 秘密キーを使用して暗号化されたメッセージのみが公開キーを使用して復号化できるため、クライアントには、秘密キーの所有者のみとメッセージ交換することが保証されます。 サイトには、公開キーを使用して暗号化を行っているクライアントとメッセージを交換していることが保証されます。 この交換は初期ハンドシェイクの場合のみセキュリティで保護されます。このため、実際の対称キーを作成する多くの試みが行われています。 いずれにしても、すべての通信は有効な SSL 証明書を保有するサービスに依存します。 + +## WCF を使用する SSL の実装 + HTTP トランスポート セキュリティ \(つまり SSL\) は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の外部に提供されます。 SSL は、次のいずれかの方法で実装できますが、その方法は、アプリケーションがどのようにホストされるかによって決まります。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のホストとしてインターネット インフォメーション サービス \(IIS\) を使用する場合、IIS インフラストラクチャを使用して SSL サービスを設定します。 + +- 自己ホスト型の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションを作成する場合は、HttpCfg.exe ツールを使用して SSL 証明書をアドレスにバインドできます。 + +### トランスポート セキュリティのための IIS の使用 + +#### IIS 7.0 + セキュリティで保護されたホスト \(SSL を使用\) として [!INCLUDE[iisver](../../../../includes/iisver-md.md)] を設定する場合は、「[IIS 7.0 Beta: IIS 7.0 で SSL \(Secure Sockets Layer\) を構成する](http://go.microsoft.com/fwlink/?LinkId=88600)」を参照してください。 + + [!INCLUDE[iisver](../../../../includes/iisver-md.md)] 用の証明書を構成する場合は、「[IIS 7.0 Beta: IIS 7.0 でサーバー証明書を構成する](http://go.microsoft.com/fwlink/?LinkID=88595)」を参照してください。 + +#### IIS 6.0 + セキュリティで保護されたホスト \(SSL を使用\) として [!INCLUDE[iis601](../../../../includes/iis601-md.md)] を設定する場合は、「[SSL \(Secure Sockets Layer\) を構成する](http://go.microsoft.com/fwlink/?LinkId=88601)」を参照してください。 + + [!INCLUDE[iis601](../../../../includes/iis601-md.md)] 用の証明書を構成する場合は、「[Certificates\_IIS\_SP1\_Ops](http://go.microsoft.com/fwlink/?LinkId=88602)」を参照してください。 + +### SSL での HttpCfg の使用 + 自己ホスト型の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションを作成する場合は、「[Windows XP Service Pack 2 サポート ツール](http://go.microsoft.com/fwlink/?LinkId=29002)」のサイトから HttpCfg.exe ツールをダウンロードしてください。 + + HttpCfg.exe ツールで X.509 証明書を使用してポートを設定する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md)」を参照してください。 + +## 参照 + [トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/transport-security.md) + [メッセージのセキュリティ](../../../../docs/framework/wcf/feature-details/message-security-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/implementing-a-discovery-proxy.md b/docs/framework/wcf/feature-details/implementing-a-discovery-proxy.md new file mode 100644 index 00000000000..c9e7d6f70e6 --- /dev/null +++ b/docs/framework/wcf/feature-details/implementing-a-discovery-proxy.md @@ -0,0 +1,41 @@ +--- +title: "探索プロキシの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dda20e79-8df3-438e-a281-69d779d978ec +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 探索プロキシの実装 +ここでは、探索プロキシの実装に必要な手順について説明します。 探索プロキシは、サービスのリポジトリを格納するスタンドアロンのサービスです。 クライアントは探索プロキシに対し、そのプロキシで認識される探索可能なサービスを問い合わせることができます。 プロキシにサービスを登録する方法は、実装手段によって異なります。 たとえば、探索プロキシが既存のサービス リポジトリに接続でき、その情報を探索可能にできる場合、管理者は管理 API を使用して探索可能なサービスをプロキシに追加することができます。または、探索プロキシにアナウンス機能を使用し、内部キャッシュを更新できます。 + + WCF 実装は、プロキシを簡単にビルドできる基本クラスを提供します。 これらの API を利用して、既存のリポジトリの上に探索プロキシをビルドできます。 + + ここで実装される探索プロキシは、探索可能にしてクライアントからエンドポイントを検索できるという点で、他の WCF サービスと似ています。 + +## このセクションの内容 + [探索プロキシを実装する方法](../../../../docs/framework/wcf/feature-details/how-to-implement-a-discovery-proxy.md) + 探索プロキシを実装する方法について説明します。 + + [探索プロキシで登録される探索可能なサービスの実装方法](../../../../docs/framework/wcf/feature-details/discoverable-service-that-registers-with-the-discovery-proxy.md) + 探索プロキシに登録する、探索可能な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの実装方法について説明します。 + + [探索プロキシを使用してサービスを検索するクライアント アプリケーションの実装方法](../../../../docs/framework/wcf/feature-details/client-app-discovery-proxy-to-find-a-service.md) + 探索プロキシを使用してサービスを検索する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーションの実装方法について説明します。 + + [探索プロキシをテストする方法](../../../../docs/framework/wcf/feature-details/how-to-test-the-discovery-proxy.md) + 前の 3 つのトピックに記述されたコードのテスト方法について説明します。 + +## 参照 + [WCF Discovery](../../../../docs/framework/wcf/feature-details/wcf-discovery.md) + [プログラムを使用して探索可能性に WCF サービスとクライアントを追加する方法](../../../../docs/framework/wcf/feature-details/how-to-programmatically-add-discoverability-to-a-wcf-service-and-client.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/importing-schema-to-generate-classes.md b/docs/framework/wcf/feature-details/importing-schema-to-generate-classes.md new file mode 100644 index 00000000000..1791c2f9fba --- /dev/null +++ b/docs/framework/wcf/feature-details/importing-schema-to-generate-classes.md @@ -0,0 +1,197 @@ +--- +title: "クラスを作成するためのスキーマのインポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF, スキーマのインポートとエクスポート" + - "XsdDataContractImporter クラス" +ms.assetid: b9170583-8c34-43bd-97bb-6c0c8dddeee0 +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# クラスを作成するためのスキーマのインポート +クラスで使用可能なスキーマを生成する[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)]を使用して、 クラスです。 ここでは、生成時に指定できる各種のオプションについて解説します。 + +## インポート処理 + スキーマのインポート処理が始まり、 を生成し、 します。 + + `XmlSchemaSet` は、一連の XML スキーマ定義言語 (XSD) スキーマ ドキュメントを表す [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] のスキーマ オブジェクト モデル (SOM) の一部です。 作成する、`XmlSchemaSet`オブジェクトの一連の XSD ドキュメントから、各ドキュメントに逆シリアル化、 オブジェクト (を使用して、 )、新規作成 を追加して`XmlSchemaSet`します。 + + `CodeCompileUnit` は、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] コードを抽象化して表す、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] のコード ドキュメント オブジェクト モデル (CodeDOM) の一部です。 実際のコードを生成する、`CodeCompileUnit`のサブクラスを使用して、 クラスなど、 またはクラスです。 + +#### スキーマをインポートするには + +1. インスタンスを作成、 します。 + +2. 省略可能です。 `CodeCompileUnit` をコンストラクターに渡します。 スキーマのインポート時に生成された型がこの `CodeCompileUnit` インスタンスに追加されるので、以降の処理は、`CodeCompileUnit` が空でない状態から始まります。 + +3. 省略可能です。 1 つを呼び出して、 メソッドです。 指定されたスキーマが有効なデータ コントラクト スキーマであって、インポートしても問題ないかどうかを判断するメソッドです。 `CanImport` メソッドには、次の手順に出てくる `Import` と同様に、オーバーロードがあります。 + +4. オーバー ロードされたいずれかを呼び出して`Import`メソッドなど、 メソッドです。 + + これは、指定しなければならない引数が `XmlSchemaSet` だけという最も簡潔なオーバーロードであり、匿名型を含め、一連のスキーマに記述されている型をすべてインポートできます。 他のオーバー ロードでは、インポートするには、XSD 型または型の一覧を指定できます (の形式で、 または一連の`XmlQualifiedName`オブジェクト)。 この場合は、指定した型だけがインポートされます。 オーバー ロードは、 のうち特定の要素をインポートする、 `XmlSchemaSet`、(かどうかが匿名か)、関連する種類とします。 このメソッドの戻り値は `XmlQualifiedName` であり、この要素に対応して生成された型のデータ コントラクト名を表します。 + + `Import` メソッドを何度も呼び出すと、同じ `CodeCompileUnit` に複数の項目が追加されます。 `CodeCompileUnit` に既に存在する型は生成されません。 したがって、`Import` オブジェクトをいくつも使うのではなく、同じ `XsdDataContractImporter` の `XsdDataContractImporter` を必要な回数呼び出すようにしてください。 同じ型が重複して生成されることがないので、この方法をお勧めします。 + + > [!NOTE] + > インポート中に障害が発生した場合の `CodeCompileUnit` の状態は不定です。 このような `CodeCompileUnit` を使うと、セキュリティ上の脆弱性につながるおそれがあります。 + +5. アクセス、`CodeCompileUnit`を通じて、 プロパティです。 + +### インポート オプション : 生成された型のカスタマイズ + 設定することができます、のプロパティ、 のインスタンスに、 クラスをインポート処理のさまざまな側面を制御します。 生成される型に直接影響するオプションが多数あります。 + +#### アクセス レベルの制御 (GenerateInternal または /internal スイッチ) + これに対応して、 **/内部**スイッチ、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)します。 + + 通常、スキーマから生成されるのはパブリック型です。ここにプライベート フィールドや対応するパブリック データ メンバー プロパティが定義されます。 代わりに、内部型を生成するには、設定、 プロパティを`true`します。 + + 次の例では、内部に変換するスキーマ クラスの場合、 にプロパティが設定されています。`true.` + + [!code-csharp[c_SchemaImportExport#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_schemaimportexport/cs/source.cs#2)] + [!code-vb[c_SchemaImportExport#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_schemaimportexport/vb/source.vb#2)] + +#### 名前空間の制御 (Namespaces または /namespace スイッチ) + これに対応して、 **/namespace**スイッチ、`Svcutil.exe`ツールです。 + + 通常、スキーマから生成された型が生成される[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)]名前空間の特定に対応する各 XSD 名前空間を持つ、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)]で説明するマッピングに従って名前空間[データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)します。 このマッピングをカスタマイズすることができます、プロパティを\。 指定した XSD 名前空間がディクショナリに存在する場合、その XSD 名前空間に対応する [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 名前空間も、ディクショナリから取得されます。 + + たとえば、次のスキーマを考えます。 + + [!code[c_SchemaImportExport#10](../../../../samples/snippets/common/VS_Snippets_CFX/c_schemaimportexport/common/source.config#10)] + + + `Namespaces` プロパティを使って、"http://schemas.contoso.com/carSchema" という名前空間を "Contoso.Cars" に対応付ける例を示します。 + + [!code-csharp[c_SchemaImportExport#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_schemaimportexport/cs/source.cs#8)] + [!code-vb[c_SchemaImportExport#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_schemaimportexport/vb/source.vb#8)] + +#### SerializableAttribute の追加 (GenerateSerializable または /serializable スイッチ) + これに対応して、 **/serializable**スイッチ、`Svcutil.exe`ツールです。 + + 使用できるようにするために、スキーマから生成された型に対して重要な場合があります[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)]ランタイム シリアル化エンジン (たとえば、 クラス)。 たとえば、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] リモート処理に使うような場合がこれに当たります。 これを有効にする必要がありますを適用する、 属性だけでなく、通常、生成された型を属性です。 `GenerateSerializable` オプションを `true` に設定すると、この属性が自動的に生成されます。 + + + `Vehicle` オプションを `GenerateSerializable` に設定して `true` クラスを生成する例を示します。 + + [!code-csharp[c_SchemaImportExport#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_schemaimportexport/cs/source.cs#4)] + [!code-vb[c_SchemaImportExport#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_schemaimportexport/vb/source.vb#4)] + +#### データ バインディング機能の追加 (EnableDataBinding または /enableDataBinding スイッチ) + これに対応して、 **/enableDataBinding** Svcutil.exe ツールをオンにします。 + + スキーマから生成された型を GUI コンポーネントにバインドして、この型のインスタンスを更新したとき、自動的に UI にも反映されるようにする場合があります。 `XsdDataContractImporter`を実装する型を生成することができます、 インターフェイス、プロパティが変更にイベントがトリガーされるようにします。 このインターフェイスをサポートするクライアント UI プログラミング環境で使用するための型を生成している場合 (など[!INCLUDE[avalon1](../../../../includes/avalon1-md.md)])、設定、 プロパティを`true`この機能を有効にします。 + + 例を次に、`Vehicle`で生成されたクラス、 設定`true`します。 + + [!code-csharp[C_SchemaImportExport#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_schemaimportexport/cs/source.cs#5)] + [!code-vb[C_SchemaImportExport#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_schemaimportexport/vb/source.vb#5)] + +### インポート オプション: コレクション型の選択 + XML でアイテムのコレクションを表すパターンには、アイテムのリストと、アイテム間の関連付けの&2; 種類があります。 文字列のリストの例を次に示します。 + + [!code[C_SchemaImportExport#11](../../../../samples/snippets/common/VS_Snippets_CFX/c_schemaimportexport/common/source.config#11)] + + 文字列と整数 (`city name` と `population`) を関連付ける例を次に示します。 + + [!code[C_SchemaImportExport#12](../../../../samples/snippets/common/VS_Snippets_CFX/c_schemaimportexport/common/source.config#12)] + +> [!NOTE] +> 関連付けもリストと見なすことができます。 たとえば、上記の関連付けは、文字列と整数の&2; つのフィールドから成る複雑な `city` オブジェクトのリストと考えることも可能です。 どちらの方法であっても、XSD スキーマで表現できます。 この&2; つを区別する手段はないので、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に特有の特別な注釈がスキーマ内になければ、このようなパターンは常にリストとして扱われます。 注釈がある場合は、関連付けを表すものとして扱われます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][データ コントラクト スキーマ リファレンス](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)します。 + + リストは通常、ジェネリック リストから派生したコレクション データ コントラクト、または [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の配列としてインポートされます。スキーマがコレクションの標準的な名前付けパターンに従っているかどうかによって切り分けます。 これについては説明について詳しく[データ コントラクトのコレクション型](../../../../docs/framework/wcf/feature-details/collection-types-in-data-contracts.md)します。 関連付けは通常、いずれかとしてインポート、または辞書オブジェクトから派生したコレクション データ コントラクト\。 たとえば、次のスキーマを考えます。 + + [!code[c_SchemaImportExport#13](../../../../samples/snippets/common/VS_Snippets_CFX/c_schemaimportexport/common/source.config#13)] + + これをインポートすると次のようになります (読みやすいようプロパティの代わりにフィールドを記載)。 + + [!code-csharp[c_SchemaImportExport#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_schemaimportexport/cs/source.cs#6)] + [!code-vb[c_SchemaImportExport#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_schemaimportexport/vb/source.vb#6)] + + このようなスキーマ パターンに対し、生成されるコレクション型をカスタマイズすることも可能です。 などからコレクションを生成する場合、 の代わりに、コレクションの内容が変わるクラス型をリスト ボックスにバインドして、それをするために自動的に更新します。 これを行うには、設定、 のプロパティ、 (以下参照先の型として知られている) で使用されるコレクション型の一覧にクラスをします。 コレクションのインポート時には、参照されるコレクション型のリストが順に調べられ、最も適したコレクションがあれば、それが使用されます。 アソシエーションはジェネリックか否かにかかわらずを実装する型とのみ一致インターフェイスのリストは、すべてのサポートされるコレクション型を照合されます。 + + たとえば場合、 プロパティに設定されて、 、`people`前の例での種類は、次のように生成します。 + + [!code-csharp[C_SchemaImportExport#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_schemaimportexport/cs/source.cs#7)] + [!code-vb[C_SchemaImportExport#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_schemaimportexport/vb/source.vb#7)] + + クローズ ジェネリック型 (型パラメーターすべてに具体的な型が指定されているジェネリック型) は、合致度が最も高いと見なされます。 たとえば場合、種類`BindingList(Of Integer)`と渡されるとして参照される型のコレクションにスキーマ内に整数のリストをインポート、`BindingList(Of Integer)`です。 一方、それ以外のリスト (`List(Of String)` など) は、`ArrayList` としてインポートされます。 + + ジェネリック `IDictionary` インターフェイスを実装する型を "参照される" 型のコレクションに追加した場合、型パラメーターは、完全にオープンであるか完全にクローズであるかのどちらかです。 + + 複製は使用できません。 たとえば `List(Of Integer)` と `Collection(Of Integer)` の両方を "参照される" 型に追加することはできません。 仮に追加したとしても、整数のリストがスキーマ中に表れたとき、どちらを使うか決められないからです。 もっとも、このような重複が検出されるのは、それが問題になるような型がスキーマ中にある場合だけです。 インポートするスキーマ中に、たとえば整数のリストがないのであれば、`List(Of Integer)` と `Collection(Of Integer)` の両方が "参照される" 型のコレクションにあっても問題はなく、単に何にも使われなかったというだけのことです。 + + 参照されるコレクション型のしくみは、プリミティブ型のコレクションばかりでなく、複合型のコレクション (他のコレクションから成るコレクションを含む) にも同様に働きます。 + + `ReferencedCollectionTypes`プロパティに対応して、 **/collectionType** SvcUtil.exe ツールをオンにします。 複数のコレクション型を参照することに注意してください、 **/collectionType**スイッチを複数回指定する必要があります。 型が MsCorLib.dll にない場合は、そのアセンブリも参照する必要を使用して、 **/reference**切り替えます。 + +#### インポート オプション : 既存の型の参照 + スキーマ内の型が既存の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型に対応する場合は、その型を一から作成する必要はありません (以下の説明は、非コレクション型にのみ当てはまります。 コレクション型については、前のセクションを参照してください)。 + + たとえば、企業全体で共通に、"Person" というデータ コントラクト型を使っており、人を表す場合には常にこれを使いたいとします。 いくつかのサービスでこの型を利用し、そのスキーマがサービス メタデータに表示される場合は、このスキーマをインポートするときに既存の `Person` 型を再利用でき、サービスごとに新たに生成する必要がありません。 + + これを行うには、一覧を渡す[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)]コレクションに再利用する型、 プロパティ上を返します、 クラスです。 これらの型のいずれかが、スキーマ型の名前および名前空間と一致すれば、その構造が比較されます。 名前も構造も合致した場合は、型は新たに生成されず、既存の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型が再利用されます。 名前だけが一致して構造が一致しない場合は、例外が発生します。 型の参照時に、バージョンによる (オプションのデータ メンバーの追加などの) 差異は許容されません。 構造は厳密に合致しなければなりません。 + + "参照される" 型のコレクションに、データ コントラクト名と名前空間が同一である型を重複して追加しても、その名前と名前空間でスキーマ型をインポートしない限り問題ありません。 したがって、実際にはスキーマに現れることのない型については重複を気にすることなく、アセンブリ内の型をすべてコレクションに追加してしまうことができます。 + + `ReferencedTypes`プロパティに対応して、 **/reference** Svcutil.exe ツールの特定のモードに切り替えます。 + +> [!NOTE] +> Svcutil.exe を使用する場合または (で[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)])、**サービス参照の追加**MsCorLib.dll に型のすべてのツールが自動的に参照します。 + +#### インポート オプション : 非データ コントラクト スキーマを IXmlSerializable 型としてインポート + スキーマの限られたサブセットをサポートします。 未対応のスキーマ構造 (たとえば XML 属性) をインポートしようとすると例外が発生します。 ただし、設定、 プロパティを`true`がサポートするスキーマの範囲が広がります。 設定すると`true`、 を実装する型を生成、 インターフェイスです。 そのため、これらの型の XML 表現に直接アクセスできるようになります。 + +##### 設計上の考慮事項 + +- 弱く型指定された XML 表現を直接扱うのは困難です。 など、別のシリアル化エンジンとしての使用を検討、 厳密に型指定のデータと互換性のないスキーマ コントラクトと操作する。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][XmlSerializer クラスを使用して](../../../../docs/framework/wcf/feature-details/using-the-xmlserializer-class.md)します。 + +- スキーマ構造をインポートできない、 場合でも、 にプロパティが設定されている`true`します。 ここでも、使用を検討して、 このような場合です。 + +- 詳細なスキーマ構造には、両方がサポートされているときには`true`または`false`は「[データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)します。 + +- スキーマの生成型では、インポートし、エクスポートの忠実性は保持されないためです。 つまり、生成された型を基にスキーマをエクスポートし、再びこれをクラスとしてインポートした場合、元どおりのスキーマにはなりません。 + + 結合するには、 オプションを指定する、 前に説明したオプション。 型として生成する必要がある実装では、構造的なチェックをスキップして、使用して、 機能します。 + + オプションに対応して、 **/importXmlTypes** Svcutil.exe ツールをオンにします。 + +##### 生成された IXmlSerializable 型の使い方 + 生成された`IXmlSerializable`種類には、"nodesField"というプライベート フィールドが含まれているの配列を返すオブジェクトです。 このような型のインスタンスを逆シリアル化すると、XML ドキュメント オブジェクト モデルに基づき、このフィールドを介して XML データに直接アクセスできるようになります。 この型のインスタンスをシリアル化する際、"nodesField" フィールドに XML データを設定しておくと、これもシリアル化の対象になります。 + + 以上の処理は `IXmlSerializable` インターフェイスで実装されます。 生成された`IXmlSerializable`の種類、 実装の呼び出し、 のメソッド、 クラスです。 メソッドがを通じて提供される XML に変換するヘルパー メソッド、 型の配列をオブジェクトです。 実装では、その逆の配列に変換する`XmlNode`オブジェクトのシーケンスを呼び出しです。 これは、 メソッドです。 + + スキーマのエクスポート処理は、生成された `IXmlSerializable` クラスに対して実行できます。 ただし、先に述べたように、元どおりのスキーマは再現されません。 任意の XSD 型を表す、"anyType" という標準型になります。 + + これを行うに適用することで、 属性を生成された`IXmlSerializable`クラスとメソッドを指定することを呼び出す、 "anyType"型を生成するメソッドです。 + +> [!NOTE] +> 型がこの特定の機能をサポートするためにのみ存在します。 他の目的で使用することはお勧めできません。 + +#### インポート オプション : 高度なオプション + 他にも、次のようなオプションがあります。 + +- プロパティです。 指定のを使用して生成されたクラスのコードを生成します。 機能が回避インポート メカニズムされます、 はサポートしていません。 たとえば J# にはジェネリック型の機能がありません。 このプロパティに j# コード プロバイダーを指定する場合のジェネリック型は生成されません、インポート側のします。 場合、 の完全なセットを設定しない[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)]機能が制限なしで使用されます。 + +- プロパティです。 実装は、このプロパティを指定します。 インポート処理をカスタマイズします。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][データ コントラクト サロゲート](../../../../docs/framework/wcf/extending/data-contract-surrogates.md)します。 既定では、サロゲートは使用されません。 + +## 関連項目 + + + + + [データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md) + [データ コントラクト サロゲート](../../../../docs/framework/wcf/extending/data-contract-surrogates.md) + [スキーマのインポートとエクスポート](../../../../docs/framework/wcf/feature-details/schema-import-and-export.md) + [クラスからのスキーマのエクスポート](../../../../docs/framework/wcf/feature-details/exporting-schemas-from-classes.md) + [データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/index.md b/docs/framework/wcf/feature-details/index.md new file mode 100644 index 00000000000..ac52a593ce4 --- /dev/null +++ b/docs/framework/wcf/feature-details/index.md @@ -0,0 +1,91 @@ +--- +title: "WCF 機能の詳細 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "機能 [WCF]" + - "WCF, 機能" + - "Windows Communication Foundation, 機能" +ms.assetid: 9b4368ca-0bd3-40dc-a539-bcd5779cee5f +caps.latest.revision: 22 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 22 +--- +# WCF 機能の詳細 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、アプリケーションのメッセージング機能を広範囲に制御できます。このセクションの各トピックでは、使用できる機能について詳しく説明します。基本的なプログラミング[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md)」を参照してください。 + +## このセクションの内容 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + ワークフロー サービスを作成および構成する方法について説明します。 + + [エンドポイント : アドレス、バインディング、およびコントラクト](../../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md) + サービスのさまざまな側面を制御する方法について説明します。 + + [データ転送とシリアル化](../../../../docs/framework/wcf/feature-details/data-transfer-and-serialization.md) + 相互運用性または将来の互換性を実現するために、データのシリアル化を調整する方法について説明します。 + + [セッション、インスタンス化、および同時実行](../../../../docs/framework/wcf/feature-details/sessions-instancing-and-concurrency.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のインスタンス化モードとセッション モードについて説明し、アプリケーションに適したモードを選択する方法を示します。 + + [トランスポート](../../../../docs/framework/wcf/feature-details/transports.md) + チャネル スタックの最も低いレベルにあるトランスポート層を構成する方法について説明します。 + + [キューと信頼できるセッション](../../../../docs/framework/wcf/feature-details/queues-and-reliable-sessions.md) + キューについて説明します。キューは、送信元アプリケーションが送ったメッセージを受信側アプリケーションに代わって保存しておき、後で受信側アプリケーションに転送します。 + + [トランザクション](../../../../docs/framework/wcf/feature-details/transactions-in-wcf.md) + 必要に応じてロールバックできるトランザクション操作を作成する方法について説明します。 + + [セキュリティ](../../../../docs/framework/wcf/feature-details/security.md) + 機密性と整合性を備えたアプリケーションを作成するうえで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティがどのように役立つかについて説明します。監査機能として、認証と承認を使用することもできます。 + + [ピアツーピア ネットワーク](../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md) + ビア サービスとクライアントを作成する方法について詳しく説明します。 + + [メタデータ](../../../../docs/framework/wcf/feature-details/metadata.md) + メタデータのアーキテクチャと形式について説明します。 + + [クライアント](../../../../docs/framework/wcf/feature-details/clients.md) + サービスにアクセスするさまざまなクライアントを作成する方法について説明します。 + + [ホスト](../../../../docs/framework/wcf/feature-details/hosting.md) + ホストについて説明します。サービスは、別のアプリケーションまたは自己ホストを使用してホストできます。 + + [相互運用性と統合](../../../../docs/framework/wcf/feature-details/interoperability-and-integration.md) + COM\+ でホストされるコンポーネント ベースのアプリケーション ロジックに多くの投資を行っている場合に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して既存のロジックを修正することなく拡張する方法について説明します。 + + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Web プログラミング モデルについて説明します。このモデルを使用すると、開発者は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス操作を SOAP 以外のエンドポイントに公開できるようになります。 + + [WCF 配信](../../../../docs/framework/wcf/feature-details/wcf-syndication.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスから配信フィードを容易に公開できるようにするためのサポートについて説明します。 + + [AJAX の統合と JSON のサポート](../../../../docs/framework/wcf/feature-details/ajax-integration-and-json-support.md) + ASP.NET AJAX \(Asynchronous JavaScript and XML\) と、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが AJAX クライアントに操作を公開できるようにする JSON \(JavaScript Object Notation\) データ形式のサポートについて説明します。 + + [WCF Discovery](../../../../docs/framework/wcf/feature-details/wcf-discovery.md) + WS\-Discovery プロトコルを使用して、相互運用可能な方法で実行時にサービスを探索可能にするためのサポートについて説明します。 + + [ルーティング](../../../../docs/framework/wcf/feature-details/routing.md) + ルーティング サービスについて説明します。 + +## 関連項目 + + + + + + + + +## 関連項目 + [基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/information-disclosure.md b/docs/framework/wcf/feature-details/information-disclosure.md new file mode 100644 index 00000000000..7473a8e9f21 --- /dev/null +++ b/docs/framework/wcf/feature-details/information-disclosure.md @@ -0,0 +1,72 @@ +--- +title: "情報の漏えい | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4064c89f-afa6-444a-aa7e-807ef072131c +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 情報の漏えい +情報が漏えいすると、攻撃者はシステムに関する重要情報を入手できます。そのため、どのような情報を公開しているか、また、その情報が悪意のあるユーザーによって使用される可能性があるかどうかに常に気を配る必要があります。考えられる情報漏えい攻撃とその軽減策を以下に示します。 + +## メッセージ セキュリティと HTTP + HTTP トランスポート層でメッセージ レベルのセキュリティを使用している場合は、メッセージ レベルのセキュリティで HTTP ヘッダーが保護されないことに注意してください。HTTP ヘッダーを保護する唯一の方法は、HTTP ではなく、HTTPS トランスポートを使用することです。HTTPS トランスポートを使用すると、HTTP ヘッダーを含むメッセージ全体が SSL \(Secure Sockets Layer\) プロトコルを使用して暗号化されます。 + +## ポリシー情報 + ポリシーをセキュリティで保護することが重要です。特に、機密事項が含まれる発行済みトークンの要件や、トークン発行者の情報がポリシーで公開されるフェデレーション シナリオでは重要です。このような場合は、フェデレーション サービスのポリシー エンドポイントをセキュリティで保護し、発行済みトークンに含まれるクレームの種類などサービスに関する情報が攻撃者の手に渡らないようにしたり、クライアントが悪意のあるトークン発行者にリダイレクトされたりしないようにすることをお勧めします。たとえば、攻撃者は、フェデレーション信頼チェーンが man\-in\-the\-middle 攻撃を実行する発行者で終了するように再構成することで、ユーザー名\/パスワードのペアを発見することがあります。また、ポリシーの取得によってバインディングを取得するフェデレーション クライアントの場合は、取得したフェデレーション信頼チェーンに含まれる発行者の信頼性を検証することもお勧めします。フェデレーション シナリオ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md)」を参照してください。 + +## メモリ ダンプによるクレーム情報の漏えい + アプリケーションにエラーが発生した場合、ワトソン博士などによって作成されたログ ファイルには、クレーム情報が含まれることがあります。この情報はサポート チームなどの他のエンティティに対してエクスポートしないでください。プライベートなデータを含むクレーム情報もエクスポートされます。ログ ファイルを未知のエンティティに送信しないようにすることで、クレーム情報が漏えいするリスクを軽減できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、「[Windows Server 2003](http://go.microsoft.com/fwlink/?LinkId=89160)」を参照してください。 + +## エンドポイント アドレス + エンドポイント アドレスには、エンドポイントとの通信に必要な情報が含まれます。SOAP セキュリティでは、クライアントとサーバーとの間で対称キーをネゴシエートするために交換されるセキュリティ ネゴシエーション メッセージに、完全なアドレスが含まれている必要があります。セキュリティ ネゴシエーションはブートストラップ プロセスであるため、このプロセスの間、アドレス ヘッダーを暗号化することはできません。したがって、アドレスには機密データを含めないようにします。そうしないと、情報漏えい攻撃につながります。 + +## 暗号化されていない証明書の転送 + クライアントの認証に X.509 証明書を使用する場合、証明書は SOAP ヘッダー内で暗号化されずに転送されます。これは潜在的に個人を特定できる情報 \(PII\) の漏えいにつながるので注意が必要です。トランスポート レベルのセキュリティでメッセージが暗号化される `TransportWithMessageCredential` モードでは、これは問題とはなりません。 + +## サービス参照 + サービス参照は、別のサービスへの参照です。たとえば、サービスは、操作の過程でクライアントにサービス参照を渡すことがあります。サービス参照は、アプリケーション データや資格情報などをターゲットに対して情報開示する前に、ターゲットのプリンシパル ID を確認する内部コンポーネントである*信頼できる ID 検証機能*と共に使用されることもあります。リモートの信頼できる ID が検証できない、または正しくない場合、送信側は、送信者自身、アプリケーション、またはユーザーが侵害されるおそれのあるデータを開示しないようにする必要があります。 + + 回避策は次のとおりです。 + +- サービス参照は信頼できるものと仮定されています。サービス参照インスタンスを転送する場合は、改ざんされていないことを必ず確認するよう注意してください。 + +- 一部のアプリケーションで得られるユーザー エクスペリエンスでは、サービス参照内のデータと、リモート ホストによって信頼性が証明されているデータに基づいて、対話により信頼を確立することができます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、このような機能のための拡張ポイントが用意されていますが、実装はユーザーが行う必要があります。 + +## NTLM + Windows ドメイン環境の既定では、Windows 認証は Kerberos プロトコルを使用して、ユーザーの認証と承認を行います。何かの理由で Kerberos プロトコルを使用できない場合は、その代替システムとして NTLM \(NT LAN Manager\) が使用されます。 プロパティを `false` に設定することで、この動作を無効にできます。NTLM を許可する場合は、次の点に注意してください。 + +- NTLM はクライアントのユーザー名を公開します。ユーザー名を非公開にしておく必要がある場合は、バインディングの `AllowNTLM` プロパティを `false` に設定します。 + +- NTLM は、サーバー認証を提供しません。したがって、認証プロトコルとして NTLM が使用されていると、クライアントは自分が適切なサービスと通信しているかどうかを確認できません。 + +### クライアント資格情報または無効な ID の指定による強制的な NTLM の使用 + クライアントの作成時に、ドメイン名なしでクライアント資格情報を指定するか、無効なサーバー ID を指定すると、Kerberos プロトコルではなく NTLM が使用されます \(`AlllowNtlm` プロパティが `true` に設定されている場合\)。NTLM ではサーバー認証を行わないため、情報が漏えいするおそれがあります。 + + たとえば、次の [!INCLUDE[csprcs](../../../../includes/csprcs-md.md)] のコードに示すように、ドメイン名なしで Windows クライアント資格情報を指定できます。 + +``` +MyChannelFactory.Credentials.Windows.ClientCredential = new System.Net.NetworkCredential("username", "password"); +``` + + このコードではドメイン名が指定されておらず、そのため NTLM が使用されます。 + + ドメインを指定していても、エンドポイント ID 機能を使用して無効なサービス プリンシパル名を指定した場合は、NTLM が使用されます。エンドポイント ID を指定する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください。 + +## 参照 + [セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md) + [権限の昇格](../../../../docs/framework/wcf/feature-details/elevation-of-privilege.md) + [サービス拒否](../../../../docs/framework/wcf/feature-details/denial-of-service.md) + [改変](../../../../docs/framework/wcf/feature-details/tampering.md) + [サポートされていないシナリオ](../../../../docs/framework/wcf/feature-details/unsupported-scenarios.md) + [リプレイ攻撃](../../../../docs/framework/wcf/feature-details/replay-attacks.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/inside-the-custompeerresolverservice-client-registrations.md b/docs/framework/wcf/feature-details/inside-the-custompeerresolverservice-client-registrations.md new file mode 100644 index 00000000000..ef2ac2ac76f --- /dev/null +++ b/docs/framework/wcf/feature-details/inside-the-custompeerresolverservice-client-registrations.md @@ -0,0 +1,44 @@ +--- +title: "CustomPeerResolverService 内部 : クライアント登録 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 40236953-a916-4236-84a6-928859e1331a +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# CustomPeerResolverService 内部 : クライアント登録 +メッシュ内の各ノードは、`Register` 関数を介してエンドポイント情報をリゾルバー サービスに公開します。 リゾルバー サービスは、登録レコードとしてこの情報を保存します。 このレコードには、ノードの一意の識別子 \(RegistrationID\) およびエンドポイント情報 \`\(PeerNodeAddress\) が格納されます。 + +## 古くなったレコードと有効期限 + ノードがメッシュからの離脱時に `Unregister` 関数を呼び出し、それによってリゾルバー サービスで登録エントリが削除されるのが理想的ですが、 `Unregister` を呼び出す前に、ノードがシャットダウンしたりアクセスできなくなったりするために、古い登録レコードが残ることがあります。 + + リゾルバー サービス内の古くなったレコードは、接続障害の原因となる場合があります。 メッシュへの接続時に、ノードがリゾルバー サービスから古い接続情報を受け取った場合、メッシュへの参加に時間がかかることがあります。 古いレコードはメモリも消費します。 効率的なクリーンアップ処理がなければ、登録の保存に使用したキャッシュがオーバーフローしてリゾルバー サービスがクラッシュする可能性があります。 + + は、各レコードを有効期限 \(DateTime\) でマークし、レコードの一部としてその情報を保存します。 サービスは、有効期限を使用してレコードを識別します。 カスタム実装でも同様な処理が必要です。 + +## RefreshInterval および CleanupInterval + `RefreshInterval` の プロパティは、サービスの登録ルックアップ テーブルで登録レコードが有効である期間を定義します。 特定のレコードについて、このプロパティで指定された時間が経過すると、そのレコードは古くなり、削除対象としてマークされます。 + + `CleanupInterval` の プロパティは、古くなったレコードの検索と削除の頻度をサービスに指示します。 `CleanupInterval` は、サービスに設定されている `RefreshInterval` 以上の時間に設定する必要があります。 + + 独自のリゾルバー サービスを実装するためには、古い登録レコードを削除するメンテナンス関数を作成する必要があります。 これにはいくつかの方法があります。 + +- 定期的な管理 : 定期的に鳴るようにタイマーを設定し、データ ストアを調べて古いレコードを削除します。 では、この方法を使用します。 + +- パッシブ削除 : 古くなったレコードを一定間隔で検索する代りに、サービスが既に別の関数を実行中の場合に古くなったレコードを識別し、削除できます。 この方法では、リゾルバー クライアントからの要求に対する応答時間が遅くなる可能性がありますが、タイマーの必要がなくなるほか、一部のノードが `Unregister` を呼び出さずに離脱することが予想される場合には効果的です。 + +## RegistrationLifetime および Refresh + リゾルバー サービスに登録されると、ノードはサービスから オブジェクトを受け取ります。 このオブジェクトには、`RegistrationLifetime` プロパティが含まれます。このプロパティは、登録の期限が切れてリゾルバー サービスによって削除されるまでに、どれだけの時間があるかを示します。 たとえば、`RegistrationLifetime` が 2 分である場合、レコードが古くならず、削除されないようにするためには、ノードは 2 分以内に `Refresh` を呼び出す必要があります。 リゾルバー サービスは `Refresh` 要求を受け取ると、レコードを検索し、有効期限をリセットします。 Refresh は、 プロパティのある `RegistrationLifetime` オブジェクトを返します。 + +## 参照 + [ピア リゾルバー](../../../../docs/framework/wcf/feature-details/peer-resolvers.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/integrating-enterprise-services-transactional-components.md b/docs/framework/wcf/feature-details/integrating-enterprise-services-transactional-components.md new file mode 100644 index 00000000000..65d95d2cde7 --- /dev/null +++ b/docs/framework/wcf/feature-details/integrating-enterprise-services-transactional-components.md @@ -0,0 +1,104 @@ +--- +title: "エンタープライズ サービスのトランザクション コンポーネントの統合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 05dab277-b8b2-48cf-b40c-826be128b175 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# エンタープライズ サービスのトランザクション コンポーネントの統合 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、エンタープライズ サービスと統合するための自動的な機構を提供します \(「[COM\+ アプリケーションとの統合](../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md)」を参照\)。ただし、柔軟性を高めるために、エンタープライズ サービス内でホストされるトランザクション コンポーネントを内部的に使用するサービスを開発する場合があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のトランザクション機能は インフラストラクチャ上に構築されているため、エンタープライズ サービスと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] との統合プロセスは、「[Enterprise Service および COM\+ トランザクションとの相互運用性](http://go.microsoft.com/fwlink/?LinkId=94949)」で概説されている とエンタープライズ サービス間の相互運用性を指定するプロセスと同じになります。 + + フローされる受信トランザクションと COM\+ コンテキスト トランザクションの間に必要なレベルの相互運用性を提供するには、サービス実装で インスタンスを作成し、 列挙型の適切な値を使用する必要があります。 + +## エンタープライズ サービスとサービス操作の統合 + Allowed トランザクション フローで、 オプションを指定して を作成する操作を次のコードに示します。このシナリオでは次の条件が適用されます。 + +- クライアントがトランザクションをフローする場合、エンタープライズ サービス コンポーネント呼び出しを含む操作は、トランザクションのスコープ内で実行されます。 を使用すると、トランザクションが コンテキストと同期することが保証されます。つまり、 のアンビエント トランザクションと とが同じになります。 + +- クライアントがトランザクションをフローしない場合、 を `true` に設定すると操作の新しいトランザクション スコープが作成されます。同様に、 を使用すると、操作のトランザクションが コンポーネントのコンテキスト内で使用されるトランザクションと同じになることが保証されます。 + + 任意の追加のメソッド呼び出しも、同じ操作のトランザクションのスコープ内で行われます。 + +``` +[ServiceContract()] +public interface ICustomerServiceContract +{ + [OperationContract] + [TransactionFlow(TransactionFlowOption.Allowed)] + void UpdateCustomerNameOperation(int customerID, string newCustomerName); +} + +[ServiceBehavior(TransactionIsolationLevel = System.Transactions.IsolationLevel.Serializable)] +public class CustomerService : ICustomerServiceContract +{ + [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)] + public void UpdateCustomerNameOperation(int customerID, string newCustomerName) + { + // Create a transaction scope with full ES interop + using (TransactionScope ts = new TransactionScope( + TransactionScopeOption.Required, + new TransactionOptions(), + EnterpriseServicesInteropOption.Full)) + { + // Create an Enterprise Services component + // Call UpdateCustomer method on an Enterprise Services + // component + + // Call UpdateOtherCustomerData method on an Enterprise + // Services component + ts.Complete(); + } + + // Do UpdateAdditionalData on an non-Enterprise Services + // component + } +} +``` + + 操作の現在のトランザクションと、エンタープライズ サービスのトランザクション コンポーネント呼び出しとの間の同期が不要な場合は、 インスタンスのインスタンス化時に オプションを使用する必要があります。 + +## エンタープライズ サービスとクライアントの統合 + を設定した インスタンスを使用するクライアント コードを次のコードに示します。このシナリオでは、トランザクション フローをサポートするサービス操作の呼び出しが、エンタープライズ サービス コンポーネントへの呼び出しと同じトランザクションのスコープ内で発生します。 + +``` +static void Main() +{ + // Create a client + CalculatorClient client = new CalculatorClient(); + + // Create a transaction scope with full ES interop + using (TransactionScope ts = new TransactionScope( + TransactionScopeOption.Required, + new TransactionOptions(), + EnterpriseServicesInteropOption.Full)) + { + // Call Add calculator service operation + + // Create an Enterprise Services component + + // Call UpdateCustomer method on an Enterprise Services + // component + + ts.Complete(); + } + + // Closing the client gracefully closes the connection and + // cleans up resources + client.Close(); +} +``` + +## 参照 + [COM\+ アプリケーションとの統合](../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) + [COM アプリケーションとの統合](../../../../docs/framework/wcf/feature-details/integrating-with-com-applications.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/integrating-with-com-applications-overview.md b/docs/framework/wcf/feature-details/integrating-with-com-applications-overview.md new file mode 100644 index 00000000000..d8d40734d49 --- /dev/null +++ b/docs/framework/wcf/feature-details/integrating-with-com-applications-overview.md @@ -0,0 +1,79 @@ +--- +title: "COM アプリケーションとの統合の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "COM [WCF], 統合の概要" +ms.assetid: 02c5697f-6e2e-47d6-b715-f3a28aebfbd5 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# COM アプリケーションとの統合の概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、マネージ コード開発者は、接続されたアプリケーションを作成するための多彩な環境を使用できます。ただし、COM ベースのアンマネージ コードにかなりの投資を行っており移行を望まない場合でも、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス モニカーを使用することで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Web サービスを既存のコードに直接統合できます。サービス モニカーは Office VBA、Visual Basic 6.0、または Visual C\+\+ 6.0 などの幅広い COM ベースの開発環境で使用可能です。 + +> [!NOTE] +> サービス モニカーは、すべての通信に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の通信チャネルを使用します。このチャネルのセキュリティ メカニズムと識別メカニズムは、標準の COM および DCOM プロキシで使用されるものとは異なります。また、サービス モニカーでは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の通信チャネルを使用するため、すべての呼び出しの既定のタイムアウト時間が 1 分になります。 + + サービス モニカーを `GetObject` 関数と共に使用することで、アンマネージ開発者は、厳密に型指定された COM 固有の方法を使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Web サービスを呼び出すことができます。そのためには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Web サービス コントラクトの定義と、使用されるバインディングが、ローカル COM から参照できる必要があります。他の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの場合と同様に、サービス モニカーではサービスへの型指定されたチャネルを構築する必要がありますが、このチャネルは、最初のメソッド呼び出し時に COM プログラマには透過的に構築されます。 + + 他の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントと同じように、アプリケーションはモニカーを使用する際に、サービスとの通信に使用するアドレス、バインディング、およびコントラクトを指定します。コントラクトは、次のいずれかの方法で指定できます。 + +- 型指定のあるコントラクト \- クライアント コンピューターで COM から参照できる型として登録されます。 + +- WSDL コントラクト \- WSDL ドキュメントという形で供給されます。 + +- MEX コントラクト \- 実行時に Metadata Exchange \(MEX\) エンドポイントから取得されます。 + +## サービス モニカーでサポートされるパラメーター + サービス モニカーでサポートされるパラメーターを次の表に示します。 + +|パラメーター|説明| +|------------|--------| +|`address`|サービスの URL 位置。| +|`binding`|アプリケーション構成のバインディング セクションの名前。| +|`bindingConfiguration`|名前付きバインディング セクション内の名前付きバインディング インスタンス。| +|`contract`|サービス コントラクトまたは \(MEX の\) コントラクト名を表すインターフェイス識別子 \(IID\)。| +|`wsdl`|代替形式のコントラクト定義を提供する WSDL ドキュメント。| +|`spnIdentity`|サービスとの通信に使用するサーバー プリンシパル名 \(SPN\) ID。| +|`upnIdentity`|サービスとの通信に使用するユーザー プリンシパル名 \(UPN\) ID。| +|`dnsIdentity`|サービスとの通信に使用する DNS ID。| +|`mexAddress`|サービスの Metadata Exchange \(MEX\) エンドポイントの URL 位置。| +|`mexBinding`|MEX エンドポイントと接続するための、アプリケーション構成のバインディング セクションの名前。| +|`mexBindingConfiguration`|MEX エンドポイントと接続する名前付きバインディング セクション内の名前付きバインディング インスタンス。| +|`bindingNamespace`|取得する MEX のバインディング セクション名の名前空間。| +|`contractNamespace`|取得する MEX のコントラクトの名前空間。| +|`mexSpnIdentity`|MEX エンドポイントとの通信に使用するサーバー プリンシパル名 \(SPN\) ID。| +|`mexUpnIdentity`|MEX エンドポイントとの通信に使用するユーザー プリンシパル名 \(UPN\) ID。| +|`mexDnsIdentity`|MEX エンドポイントとの通信に使用する DNS ID。| +|`serializer`|"XML" シリアライザーと "datacontract" シリアライザーのいずれを使用するかを指定します。| + +> [!NOTE] +> 完全に COM ベースのクライアントと共にサービス モニカーを使用する場合でも、クライアント コンピューターには [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] とこれをサポートする .NET Framework 2.0 がインストールされている必要があります。また、サービス モニカーを使用するクライアント アプリケーションには、適切なバージョンの .NET Framework ランタイムが読み込まれていることが重要です。Office アプリケーション内でモニカーを使用する場合、構成ファイルに、正しいフレームワーク バージョンが読み込まれていることを確認する必要があります。たとえば Excel の場合、Excel.exe ファイルと同じディレクトリにある Excel.exe.config というファイルに、次のテキストが記述されている必要があります。 +> +> `` +> +> `` +> +> `` +> +> `` +> +> `` +> +> `` + +## 参照 + [方法 : サービス モニカーを登録および構成する](../../../../docs/framework/wcf/feature-details/how-to-register-and-configure-a-service-moniker.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/integrating-with-com-applications.md b/docs/framework/wcf/feature-details/integrating-with-com-applications.md new file mode 100644 index 00000000000..414426a9ce7 --- /dev/null +++ b/docs/framework/wcf/feature-details/integrating-with-com-applications.md @@ -0,0 +1,52 @@ +--- +title: "COM アプリケーションとの統合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "COM [WCF]" + - "COM [WCF], Windows Communication Foundation の統合" + - "WCF, COM 統合" + - "WCF, コードの再利用" + - "Windows Communication Foundation, COM 統合" + - "Windows Communication Foundation, コードの再利用" +ms.assetid: c98bda3e-6779-419e-8e6d-9aa94053026d +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# COM アプリケーションとの統合 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス モニカーを使用することによって既存のコードに直接統合できます。 サービス モニカーは Office VBA、Visual Basic 6.0、または Visual C\+\+ 6.0 などの幅広い COM ベースの開発環境で使用可能です。 + +## このセクションの内容 + [COM アプリケーションとの統合の概要](../../../../docs/framework/wcf/feature-details/integrating-with-com-applications-overview.md) + 統合プロセスの主要部分の概要を説明します。 + + [方法 : サービス モニカーを登録および構成する](../../../../docs/framework/wcf/feature-details/how-to-register-and-configure-a-service-moniker.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス モニカーを COM アプリケーションで使用するには、必要な属性型を COM に登録し、必要なバインディング構成を使用して COM アプリケーションとモニカーを構成します。 + + [方法 : 未登録で Windows Communication Foundation のサービス モニカーを使用する](../../../../docs/framework/wcf/feature-details/use-the-wcf-service-moniker-without-registration.md) + WSDL \(Web Services Definition Language\) ドキュメントの形式で、または WS\-MetadataExchange エンドポイントからコントラクトの定義を取得する方法を説明します。 + + [方法 : WSDL コントラクトと共にサービス モニカーを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-a-service-moniker-with-wsdl-contracts.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WSDL モニカーを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサンプルを呼び出す方法を説明します。 + + [方法 : Metadata Exchange コントラクトと共にサービス モニカーを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-a-service-moniker-with-metadata-exchange-contracts.md) + Mex エンドポイントを指定する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] モニカーを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサンプルを呼び出す方法を説明します。 + + [方法 : チャネルのセキュリティ資格情報を指定する](../../../../docs/framework/wcf/feature-details/how-to-specify-channel-security-credentials.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス モニカーは、チャネル資格情報を指定するためのさまざまな代替メソッドの使用を許可する `IChannelCredentials` インターフェイスをサポートします。 + +## 関連項目 + + +## 参照 + [COM\+ アプリケーションとの統合](../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/integrating-with-com-plus-applications-overview.md b/docs/framework/wcf/feature-details/integrating-with-com-plus-applications-overview.md new file mode 100644 index 00000000000..90c5d83d7c5 --- /dev/null +++ b/docs/framework/wcf/feature-details/integrating-with-com-plus-applications-overview.md @@ -0,0 +1,115 @@ +--- +title: "COM+ アプリケーションとの統合の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "WCF, COM+ 統合" + - "Windows Communication Foundation, COM+ 統合" +ms.assetid: e481e48f-7096-40eb-9f20-7f0098412941 +caps.latest.revision: 29 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 29 +--- +# COM+ アプリケーションとの統合の概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は分散アプリケーションを作成するための有用な環境を提供します。 COM\+ でホストされるコンポーネント ベースのアプリケーション ロジックを既に使用している場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用すると、既存のロジックを修正することなく拡張することができます。 既存の COM\+ サービスまたはエンタープライズ サービスの業務ロジックを、Web サービスを介して公開する場合に役立ちます。 + + COM\+ コンポーネントのインターフェイスを Web サービスとして公開する場合、その仕様やコントラクトは、アプリケーションの初期化の際に実行される自動マッピングによって決まります。 このマッピングの概念モデルを次に示します。 + +- 公開する COM クラスごとに 1 つのサービスが定義されます。 + +- サービスのコントラクトは、選択されたコンポーネントのインターフェイス定義から直接派生しますが、一部のメソッドを除外することも可能です。 + +- このコントラクトに定義する操作は、コンポーネントのインターフェイス定義のメソッドから直接派生します。 + +- 操作のためのパラメーターは、コンポーネントのメソッド パラメーターに対応する COM の \(相互運用性を実現するための\) 型から直接派生します。 + + サービスのアドレス既定値やトランスポート バインディングは、サービス構成ファイルに記述しますが、必要に応じて再設定も可能です。 + +> [!NOTE] +> 公開した Web サービスのコントラクトは、COM\+ インターフェイスや構成を変更しない限り変わりません。 また、複数のインターフェイスを変更しても、利用できるサービスが自動的に更新されることはありません。COM\+ サービス モデル構成ツール \(ComSvcConfig.exe\) を再実行する必要があります。 + + COM\+ アプリケーションおよびそのコンポーネントの認証\/承認要求は、Web サービスを使う場合でもやはり必要です。 + + 呼び出し元が Web サービス トランザクションを起動すると、トランザクション処理中としてマークされたコンポーネントが、該当するトランザクション スコープに入ります。 + + COM\+ コンポーネントを修正することなく、そのインターフェイスを Web サービスとして公開するための手順を次に示します。 + +1. COM\+ コンポーネントのインターフェイスを、実際に Web サービスとして公開してかまわないかどうか、あらかじめ確認してください。 + +2. 適切なホスティング モードを選択します。 + +3. COM\+ サービス モデル構成ツール \(ComSvcConfig.exe\) を使用して、当該インターフェイスを公開するための Web サービスを追加します。 ComSvcConfig.exe の使用方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : COM\+ サービス モデル構成ツールを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-com-service-model-configuration-tool.md)」を参照してください。 + +4. アプリケーション構成ファイルで、追加のサービス設定を構成します。 コンポーネントの構成方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : COM\+ サービス設定を構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md)」を参照してください。 + +## 公開可能なインターフェイス + Web サービスとして公開できるインターフェイスの種類に関して、いくつか制約があります。 次のようなインターフェイスは公開できません。 + +- オブジェクト参照をパラメーターとして渡すインターフェイス。ただし、「オブジェクト参照を渡せる場合」で説明されているようにいくつか例外があります。 + +- [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] COM 相互運用変換ができない型を渡すインターフェイス。 + +- COM\+ でサービスを提供する場合にアプリケーション プールが有効になるアプリケーションに対するインターフェイス。 + +- アプリケーション内部でのみ有効な \(プライベートと指定された\) コンポーネントのインターフェイス。 + +- COM\+ インフラストラクチャ インターフェイス。 + +- システム アプリケーションからのインターフェース。 + +- エンタープライズ サービス コンポーネントからのインターフェイスで、グローバル アセンブリ キャッシュに追加されていないもの。 + +### オブジェクト参照を渡せる場合 + 展開済みの COM\+ コンポーネントの多くが、ADO Recordset オブジェクトを返す場合などに、パラメーターとしてオブジェクト参照を渡すようになっているため、COM\+ 統合においても、一定の条件を満たす場合には、オブジェクト参照をパラメーターとして渡せるようになっています。 オブジェクト参照を渡せるのは、`IPersistStream` COM インターフェイスを実装しているオブジェクトに限ります。 たとえば ADO Recordset オブジェクトがそうで、アプリケーション固有の COM オブジェクトについてはオブジェクト参照を実装できます。 + + これに対応して、ComSvcConfig.exe ツールには、メソッドの引数型並び \(シグネチャ\) の検査を省略する **allowreferences** スイッチが用意されています。このスイッチを使用すると、オブジェクト参照がパラメーターに現れていてもエラーになりません。 ただし、パラメーターとして渡すオブジェクト型に名前を付け、\<`persistableTypes`\> 構成要素 \(\<`comContract`\> 要素の子要素\) で識別できるようにする必要があります。 + + この機能を使用する場合、COM\+ 統合サービスは、`IPersistStream` インターフェイスを使用してオブジェクト インスタンスのシリアル化および逆シリアル化を行います。 オブジェクト インスタンスが `IPersistStream` インターフェイスを実装していない場合、例外がスローされます。 + + クライアント アプリケーションがサービスとの間でオブジェクトをやり取りするためには、 オブジェクトの該当するメソッドを使用できます。 + +> [!NOTE] +> このメソッドはプラットフォーム固有の独自の方式でシリアル化を行うようになっているので、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの間でやり取りする場合に最も適しています。 + +## ホスティング モードの選択 + COM\+ が Web サービスを公開する際のホスティング モードには、次のようなものがあります。 + +- COM\+ ホスト + + Web サービスを各アプリケーション専用の COM\+ サーバー プロセス \(Dllhost.exe\) から提供します。 この場合、実際に Web サービス要求が届く前に、あらかじめアプリケーションを起動しておかなければなりません。 COM\+ オプション "Run as an NT Service" または "Leave running when idle" を指定することにより、アプリケーションやサービスがアイドル状態になっても停止しないようになります。 このモードでは、サーバー アプリケーションから Web サービスと DCOM アクセスの両方を利用できます。 + +- Web ホスト + + Web サービスを Web サーバーのワーカー プロセス内で提供します。 最初の要求が届いた時点で、あらかじめ COM\+ がアクティブになっている必要はありません。 必要に応じ、自動的にアクティブ化してから要求を処理するようになっています。 このモードでも、サーバー アプリケーションから Web サービスと DCOM アクセスの両方を利用できますが、Web サービス要求の転送が発生するため、プロセス ホップが発生します。 通常、クライアント側で偽装が必要になります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、 クラスの プロパティ \(ジェネリック クラスのプロパティとしてアクセス\) および 列挙値を使用してこれを行います。 + +- Web ホスト \(インプロセス\) + + Web サービスと COM\+ アプリケーション ロジックの両方を Web サーバーのワーカー プロセス内で提供します。 Web サービス要求を転送することなく、自動的に Web ホスト モードにすることができます。 ただし、サーバー アプリケーションに DCOM でアクセスできない、という短所があります。 + +### セキュリティの考慮事項 + 他の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと同様、公開するサービスのセキュリティ設定は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネルに対して行います。 従来の DCOM セキュリティ設定には、コンピューター全体のアクセス権限設定などがありましたが、これは必須ではありません。 COM\+ アプリケーション ロールを強制する場合、コンポーネントの "コンポーネント レベルのアクセス確認" 承認を有効にする必要があります。 + + セキュリティ保護されていないバインディングは改ざんや情報漏洩を招くので、 セキュリティ保護されたバインディングを使用することをお勧めします。 + + "COM\+ ホスト" モードおよび "Web ホスト" モードの場合、クライアント アプリケーション側で、サーバー プロセスによるクライアント ユーザーの偽装を許可する必要があります。 これは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント側で、偽装レベルを と設定することにより行います。 + + インターネット インフォメーション サービス \(IIS\) または Windows プロセス アクティブ化サービス \(WAS\) で HTTP トランスポートを使用する場合、Httpcfg.exe ツールでトランスポート エンドポイントのアドレスを確保し、他の用途には使用しないように予約することができます。 他の構成では、正当なサービスのように機能する不正なサービスからの防御が重要です。 接続先のエンドポイントで不正なサービスが起動されるのを防ぐため、正当なサービスは NT サービスとして動作するよう設定するとよいでしょう。 これにより、正当なサービスは、他の不正なサービスに優先してエンドポイント アドレスを確保できるようになります。 + + COM\+ ロールを設定した COM\+ アプリケーションを "Web ホスト" モードで公開する場合、アプリケーションのロールとして "Launch IIS Process Account" を追加する必要があります。 このアカウントは通常、IWAM\_machinename という形の名前で、オブジェクトの使用後、安全にシャットダウンできるようにするために必要です。 ただし、このアカウントにその他の権限は与えないでください。 + + COM\+ のプロセス リサイクル機能は、統合アプリケーションでは使えません。 アプリケーションがこの機能を使用するよう設定されている場合、コンポーネントが COM\+ ホスト プロセスとして動作していると、サービスを起動できません。 "Web ホスト \(インプロセス\)" モードであれば、プロセス リサイクル設定は適用されないので問題ありません。 + +## 参照 + [COM アプリケーションとの統合の概要](../../../../docs/framework/wcf/feature-details/integrating-with-com-applications-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md b/docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md new file mode 100644 index 00000000000..2263410dd6c --- /dev/null +++ b/docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md @@ -0,0 +1,46 @@ +--- +title: "COM+ アプリケーションとの統合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "COM+ [WCF]" + - "COM+ [WCF], Windows Communication Foundation の統合" + - "WCF, COM+ 統合" + - "WCF, コードの再利用" + - "Windows Communication Foundation, COM+ 統合" + - "Windows Communication Foundation, コードの再利用" +ms.assetid: 98bf7dc4-d49a-4129-a59b-db7a7ec8c241 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# COM+ アプリケーションとの統合 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は分散アプリケーションを作成するための有用な環境を提供します。COM\+ でホストされるコンポーネント ベースのアプリケーション ロジックに多くの時間と労力を費やしている場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用すると、既存のロジックを修正することなく拡張することができます。このセクションのトピックでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で COM\+ を使用する方法について説明します。 + +## このセクションの内容 + [COM\+ アプリケーションとの統合の概要](../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications-overview.md) + COM\+ コンポーネントを統合するタイミングと方法の概要を説明します。 + + [方法 : COM\+ サービス モデル構成ツールを使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-com-service-model-configuration-tool.md) + COM\+ サービス モデル構成コマンド ライン ツール \(ComSvcConfig.exe\) を使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスとして公開するアプリケーション インターフェイスを構成する方法について説明します。 + + [方法 : COM\+ サービス設定を構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-com-service-settings.md) + COM\+ オブジェクトを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスとして構成する方法について説明します。 + + [方法 : COM\+ 統合アプリケーションを展開する](../../../../docs/framework/wcf/feature-details/how-to-deploy-a-com-integration-application.md) + COM\+ 統合アプリケーションを移動する方法について説明します。 + +## 関連項目 + + +## 参照 + [COM アプリケーションとの統合](../../../../docs/framework/wcf/feature-details/integrating-with-com-applications.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/internet-information-services-hosting-best-practices.md b/docs/framework/wcf/feature-details/internet-information-services-hosting-best-practices.md new file mode 100644 index 00000000000..e6586a7dbb2 --- /dev/null +++ b/docs/framework/wcf/feature-details/internet-information-services-hosting-best-practices.md @@ -0,0 +1,95 @@ +--- +title: "インターネット インフォメーション サービス ホスティングのベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0834768e-9665-46bf-86eb-d4b09ab91af5 +caps.latest.revision: 22 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 22 +--- +# インターネット インフォメーション サービス ホスティングのベスト プラクティス +このトピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスのホスティングに関するベスト プラクティスについて概説します。 + +## WCF サービスの DLL としての実装 + Web アプリケーションの \\bin ディレクトリに展開される DLL として [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを実装すると、Web アプリケーション モデルの外部 \(IIS を展開できないテスト環境など\) でサービスを再利用できるようになります。 + +## IIS でホストされるアプリケーションでのサービス ホスト + IIS ホスト環境によってネイティブにサポートされていないネットワーク トランスポートで待機する新しいサービス ホストを作成する場合は、強制自己ホスト API を使用しないでください \(たとえば、TCP サービスをホストする [!INCLUDE[iis601](../../../../includes/iis601-md.md)]。TCP 通信は、[!INCLUDE[iis601](../../../../includes/iis601-md.md)] でネイティブにサポートされていません\)。この方法はお勧めしません。強制的に作成されたサービス ホストは、IIS ホスト環境内で認識されないからです。重要な点は、IIS がホスト アプリケーション プールがアイドル状態であるかどうかを判断するときに、強制的に作成されたサービスによって実行される処理が IIS によって考慮されないことです。この結果、強制的に作成されたサービス ホストを持つアプリケーションは、IIS ホスト プロセスを積極的に廃棄する IIS ホスト環境を持つことになります。 + +## URI と IIS でホストされるエンドポイント + IIS でホストされるサービスのエンドポイントは、絶対アドレスではなく、相対 URI \(Uniform Resource Identifier\) を使用して構成する必要があります。これにより、エンドポイント アドレスが、ホスト アプリケーションに属する URI アドレスのセット内に確実に含まれ、メッセージに基づくアクティベーションが正常に行われるようになります。 + +## 状態管理とプロセスのリサイクル + IIS ホスト環境は、メモリにローカル状態を保持しないサービスに最適化されています。IIS は、さまざまな外部および内部イベントに応答してホスト プロセスをリサイクルするため、メモリのみに格納される揮発性の状態はすべて失われます。IIS でホストされるサービスは、それぞれの状態をプロセスの外部 \(データベースなど\)、またはアプリケーションのリサイクル イベントが発生した場合に簡単に再作成できるメモリ内キャッシュに格納する必要があります。 + +> [!NOTE] +> メッセージ レイヤーの信頼性とセキュリティを確保するために [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって使用されるプロトコルは、揮発性のメモリ内状態を利用します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるセッションとセキュリティ セッションは、アプリケーションのリサイクルにより、予期しないときに終了する場合があります。これらのプロトコルを利用する、IIS でホストされるアプリケーションでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって提供されるセッション キー以外の要素 \(アプリケーション レイヤー構造やカスタム相関ヘッダーなど\) に依存してアプリケーション レイヤーの状態を関連付けるか、ホストされるアプリケーションでの IIS プロセスのリサイクルを無効にする必要があります。 + +## 中間層シナリオでのパフォーマンスの最適化 + *中間層シナリオ* \(受信メッセージに応答して他のサービスを呼び出すサービス\) で最適なパフォーマンスを実現するには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス クライアントをリモート サービスに 1 回インスタンス化し、インスタンス化したクライアントを複数の受信要求で繰り返し使用します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス クライアントのインスタンス化は、既存のクライアント インスタンスでのサービスの呼び出しに比べて負荷のかかる処理ですが、中間層シナリオでは、要求全体でリモート クライアントをキャッシュすることで、パフォーマンスが大幅に向上します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス クライアントはスレッド セーフであるため、複数のスレッドにわたってクライアントへのアクセスを同期する必要がありません。 + + また、中間層シナリオでは、`svcutil /a` オプションによって生成された非同期 API を使用してパフォーマンスを向上させます。`/a` オプションにより、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) が各サービス操作に対して `BeginXXX/EndXXX` メソッドを生成し、時間のかかる可能性があるリモート サービスへの呼び出しをバックグラウンド スレッドで行うことができるようにします。 + +## マルチホーム シナリオまたはマルチネーム シナリオでの WCF + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、複数のコンピューターが共通の外部名 \(http:\/\/www.contoso.com など\) を共有していても、異なるホスト名によって個別にアドレス指定される \(たとえば、http:\/\/www.contoso.com により、http:\/\/machine1.internal.contoso.com および http:\/\/machine2.internal.contoso.com という 2 台のコンピューターにトラフィックが送られる場合など\) IIS Web ファームの内部に展開できます。この展開シナリオは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって完全にサポートされますが、正確な \(外部\) ホスト名がサービスのメタデータ \(Web サービス記述言語\) に表示されるように、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストする IIS Web サイトを特別に構成する必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって生成されたサービス メタデータに正確なホスト名が確実に表示されるように、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストする IIS Web サイトの既定 ID を構成して、明示的なホスト名を使用します。たとえば、www.contoso.com ファームの内部に存在するコンピューターでは、HTTP には \*:80:www.contoso.com、HTTPS には \*:443:www.contoso.com という IIS サイト バインディングを使用する必要があります。 + + Microsoft 管理コンソール \(MMC\) スナップインを使用して、IIS Web サイト バインディングを構成できます。 + +## 異なるユーザー コンテキストで実行されるアプリケーション プールが、一時フォルダー内の他のアカウントのアセンブリを上書きする + 異なるユーザー コンテキストで実行されているアプリケーション プールが、一時的な [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] ファイル フォルダー内の他のアカウントのアセンブリを上書きできないようにするには、アプリケーションごとに個別の ID と一時フォルダーを使用します。たとえば、\/Application1 と \/Application2 という 2 つの仮想アプリケーションがある場合は、2 つの異なる ID を使用して、A と B の 2 つのアプリケーション プールを作成できます。アプリケーション プール A は、一方のユーザー ID \(user1\) の下で、アプリケーション プール B は、もう一方のユーザー ID \(user2\) の下で実行でき、\/Application1 が A を、\/Application2 が B を使用するように構成します。 + + Web.config で、\ を使用して一時フォルダーを構成できます。\/Application1 には "c:\\tempForUser1" を、\/Application2 には "c:\\tempForUser2" を構成できます。これらのフォルダーに対応する書き込みアクセス許可を 2 つの ID に与えます。 + + これで、user2 は、\(c:\\tempForUser1 の下にある\) \/Application2 のコード生成フォルダーを変更できなくなります。 + +## 非同期処理の有効化 + 既定では、IIS 6.0 以前でホストされている [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス宛てのメッセージは同期的に処理されます。ASP.NET は、独自のスレッド \(ASP.NET のワーカー スレッド\) で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を呼び出し、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は別のスレッドを使用してその要求を処理します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、その処理が完了するまで ASP.NET のワーカー スレッドを保持します。このため、要求は同期的に処理されます。要求を非同期で処理すると、要求の処理に必要なスレッド数が減るため、優れたスケーラビリティが得られます。つまり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、要求の処理中に ASP.NET のスレッドで保持されません。非同期動作は、IIS 6.0 を実行しているコンピューターでは、サーバーが*サービス拒否* \(DOS\) 攻撃を受ける受信要求を抑制する方法がないため、使用することはお勧めしません。IIS 7.0 以降では、同時要求スロットルが導入されています。`[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0]“MaxConcurrentRequestsPerCpu`。この新しいスロットルにより、非同期処理を安全に使用することができます。IIS 7.0 の既定では、非同期のハンドラーとモジュールが登録されます。この機能が無効になっている場合は、アプリケーションの Web.config ファイルで要求の非同期処理を手動で有効にすることができます。使用する設定は、`aspNetCompatibilityEnabled` 設定によって異なります。`aspNetCompatibilityEnabled` を `false` に設定している場合は、次の構成スニペットに示すように、 を構成します。 + +``` + +        +  +    +      +      +    +    + +``` + + `aspNetCompatibilityEnabled` を `true` に設定している場合は、次の構成スニペットに示すように、 を構成します。 + +``` + +        +  +    +          +          +        +  + +``` + +## 参照 + [Service Hosting Samples](http://msdn.microsoft.com/ja-jp/f703a3f6-0fba-418a-a92f-7ce75ccfa47e) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/internet-unsecured-client-and-service.md b/docs/framework/wcf/feature-details/internet-unsecured-client-and-service.md new file mode 100644 index 00000000000..ae1da42636e --- /dev/null +++ b/docs/framework/wcf/feature-details/internet-unsecured-client-and-service.md @@ -0,0 +1,119 @@ +--- +title: "セキュリティで保護されていないインターネット環境のクライアントとサービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 97a10d79-3e7d-4bd1-9a99-fd9807fd70bc +caps.latest.revision: 17 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 17 +--- +# セキュリティで保護されていないインターネット環境のクライアントとサービス +セキュリティで保護されていないパブリックな [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントとサービスの例を次の図に示します。 + + ![セキュリティで保護されていないインターネット クライアントとサービスのシナリオ](../../../../docs/framework/wcf/feature-details/media/publicunsecured.gif "publicUnsecured") + +|特性|説明| +|--------|--------| +|セキュリティ モード|なし| +|トランスポート|HTTP| +|バインディング| \(コードを使用する場合\) または [\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md) 要素 \(構成を使用する場合\)。| +|相互運用性|既存の Web サービス クライアントとサービスを使用する| +|認証|なし| +|整合性|なし| +|機密性|なし| + +## サービス + 次のコードと構成は、別々に実行します。以下のいずれかを実行します。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成しますが、エンドポイントを定義しません。 + +### コード + 次のコードは、セキュリティで保護されないエンドポイントを作成する方法を示しています。既定では、 のセキュリティ モードは に設定されます。 + + [!code-csharp[C_UnsecuredService#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_unsecuredservice/cs/source.cs#1)] + [!code-vb[C_UnsecuredService#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_unsecuredservice/vb/source.vb#1)] + +### サービス構成 + 次のコードは、構成を使用して同一のエンドポイントをセットアップします。 + +``` + + + + + + + + + + + + + + + + + +``` + +## クライアント + 次のコードと構成は、別々に実行します。以下のいずれかの操作を行います。 + +- コード \(およびクライアント コード\) を使用してスタンドアロン クライアントを作成します。 + +- エンドポイント アドレスを定義しないクライアントを作成します。代わりに、引数として構成名を受け取るクライアント コンストラクターを使用します。次に例を示します。 + + [!code-csharp[C_SecurityScenarios#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#0)] + [!code-vb[C_SecurityScenarios#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#0)] + +### コード + 次のコードは、セキュリティで保護されていないエンドポイントにアクセスする基本的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを示します。 + + [!code-csharp[C_UnsecuredClient#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_unsecuredclient/cs/source.cs#1)] + [!code-vb[C_UnsecuredClient#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_unsecuredclient/vb/source.vb#1)] + +### クライアントの設定 + クライアントを構成する場合のコード例を次に示します。 + +``` + + + + + + + + + + + + + + + + +``` + +## 参照 + [一般的なセキュリティ シナリオ](../../../../docs/framework/wcf/feature-details/common-security-scenarios.md) + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/interop-with-aspnet-web-services.md b/docs/framework/wcf/feature-details/interop-with-aspnet-web-services.md new file mode 100644 index 00000000000..74b6df3613c --- /dev/null +++ b/docs/framework/wcf/feature-details/interop-with-aspnet-web-services.md @@ -0,0 +1,67 @@ +--- +title: "ASP.NET Web サービスとの相互運用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 622422f8-6651-442f-b8be-e654a4aabcac +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# ASP.NET Web サービスとの相互運用 +[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスと [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] Web サービスの相互運用性は、この 2 つのテクノロジを使用して実装されたサービスを確実に WS\-I Basic Profile 1.1 仕様に準拠させることによって実現されます。WS\-I Basic Profile 1.1 準拠の [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] システムによって提供されるバインディングである を使用することで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントと相互運用できます。 + + 次のサンプル コードに示すように、 属性と 属性をインターフェイス \(クラスではありません\) に追加し、そのインターフェイスを実装するクラスを作成するという、[!INCLUDE[vstecasplong](../../../../includes/vstecasplong-md.md)] のオプションを使用します。 + +``` +[WebService] +public interface IEcho +{ + [WebMethod] + string Echo(string input); +} + +public class Service : IEcho +{ + + public string Echo(string input) + { + return input; + } +} +``` + + 属性を持つインターフェイスは、同じコントラクトを異なる方法で実装する可能性のあるさまざまなクラスで再利用可能なサービスによって実行される操作のコントラクトを構成するため、このオプションを使用することをお勧めします。 + + 属性を使用する場合、`SOAPAction` HTTP ヘッダーではなく、SOAP メッセージの本文要素の完全修飾名に基づいてメッセージをメソッドへルーティングすることは避けます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`SOAPAction` HTTP ヘッダーを使用してメッセージをルーティングします。 + + によって既定で型のシリアル化が行われる XML は、XML の名前空間が明示的に定義されている場合、 によって型のシリアル化が行われる XML と意味的に同一です。将来 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を採用する予定がある場合、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスで使用するデータ型を定義するには、次の操作を実行します。 + +- XML スキーマではなく、.NET Framework クラスを使用して型を定義します。 + +- だけをそのクラスに追加します。後者を使用して型の名前空間を明示的に定義してください。.NET Framework クラスを XML に変換する方法を制御する目的で、 名前空間の属性を追加しないでください。 + +- この手法を採用すると、後から および を追加することで、転送のためにクラスをシリアル化する XML に大きな変更を加えることなく .NET クラスをデータ コントラクトにすることができます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスがメッセージ内で使用する型をデータ コントラクトとして処理できます。これは、特に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションのパフォーマンスを向上できるという利点があります。 + + インターネット インフォメーション サービス \(IIS\) に用意されている認証オプションは使用しないでください。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントではこれらの認証オプションはサポートされません。サービスをセキュリティで保護する必要がある場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で提供されるオプションを使用します。これらのオプションの方が信頼性が高く、標準プロトコルに基づいているためです。 + +## ServiceModel HttpModule の読み込みがパフォーマンスに及ぼす影響 + .NET Framework Version 3.0 では、WCF `HttpModule` が、すべての ASP.NET アプリケーションが WCF 対応になるように、ルートの Web.config ファイルにインストールされます。これによりパフォーマンスに影響が出る場合があるため、次の例に示すように、Web.config ファイルの `ServiceModel` を削除することもできます。 + +``` + + + + +``` + +## 参照 + [方法 : WCF サービスおよび ASP.NET Web サービス クライアントを相互運用するために構成する](../../../../docs/framework/wcf/feature-details/config-wcf-service-with-aspnet-web-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/interoperability-and-integration.md b/docs/framework/wcf/feature-details/interoperability-and-integration.md new file mode 100644 index 00000000000..085388c6fe2 --- /dev/null +++ b/docs/framework/wcf/feature-details/interoperability-and-integration.md @@ -0,0 +1,60 @@ +--- +title: "相互運用性と統合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0d925119-01a1-45c2-9ea0-23061323ad33 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# 相互運用性と統合 +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の相互運用性と統合について説明します。 + +## このセクションの内容 + [Web サービス プロトコルの相互運用性ガイド](../../../../docs/framework/wcf/feature-details/web-services-protocols-interoperability-guide.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Web サービス仕様として知られる一連の仕様をサポートする Web サービスと相互運用するために構築されます。このトピックでは、サポートされている仕様と、それらをサポートするバインドについて説明します。 + + [COM\+ アプリケーションとの統合](../../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications.md) + COM\+ アプリケーションを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスとして公開する方法について説明します。 + + [COM アプリケーションとの統合](../../../../docs/framework/wcf/feature-details/integrating-with-com-applications.md) + COM アプリケーションから [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを呼び出す各種のメソッドについて説明します。 + + [.NET リモート処理アプリケーションの WCF への移行](../../../../docs/framework/wcf/feature-details/migrating-net-remoting-applications-to-wcf.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] リモート処理と共に使用する方法を説明します。 + + [Web サービス拡張 3.0 との相互運用](../../../../docs/framework/wcf/feature-details/interoperability-with-web-services-enhancements-3-0.md) + WSE \(Web Services Enhancement\) 3.0 で実装された Web サービスと共に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用する方法を説明します。 + + [WSE 3.0 Web サービスの WCF への移行](../../../../docs/framework/wcf/feature-details/migrating-wse-3-0-web-services-to-wcf.md) + WSE 3.0 Web サービスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに移行する方法を説明します。 + + [ASP.NET Web サービスとの相互運用](../../../../docs/framework/wcf/feature-details/interop-with-aspnet-web-services.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスを相互運用する方法について説明します。 + + [ASP.NET Web サービスを WCF に移行する](../../../../docs/framework/wcf/feature-details/migrating-aspnet-web-services-to-wcf.md) + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに移行する方法を説明します。 + + [ASP.NET Web サービスを WCF に移行する](../../../../docs/framework/wcf/feature-details/migrating-aspnet-web-services-to-wcf.md) + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに移行する方法を説明します。 + + [ASP.NET Web サービスを WCF に移行する](../../../../docs/framework/wcf/feature-details/migrating-aspnet-web-services-to-wcf.md) + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに移行する方法を説明します。 + + [POX アプリケーションとの相互運用性](../../../../docs/framework/wcf/feature-details/interoperability-with-pox-applications.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって POX \(Plain Old XML\) メッセージを使用するサービスとクライアントの両方を提供する方法を説明します。 + +## 関連項目 + + +## 関連項目 + [WCF の拡張](../../../../docs/framework/wcf/extending/extending-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/interoperability-with-pox-applications.md b/docs/framework/wcf/feature-details/interoperability-with-pox-applications.md new file mode 100644 index 00000000000..7e2b2cc71bf --- /dev/null +++ b/docs/framework/wcf/feature-details/interoperability-with-pox-applications.md @@ -0,0 +1,81 @@ +--- +title: "POX アプリケーションとの相互運用性 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 449276b8-4633-46f0-85c9-81f01d127636 +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# POX アプリケーションとの相互運用性 +"Plain Old XML" \(POX\) アプリケーションは、SOAP エンベロープで囲まれていない XML アプリケーション データのみを含んだ生の HTTP メッセージの交換によって通信するアプリケーションです。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、POX メッセージを使用するサービスとクライアントの両方を提供できます。サービスでは、POX メッセージを送受信する Web ブラウザーやスクリプト言語などのクライアントに対してエンドポイントを公開するサービスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して実装できます。クライアントでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] プログラミング モデルを使用して、POX ベースのサービスと通信するクライアントを実装できます。 + +> [!NOTE] +> このドキュメントはもともと [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 3.0 用に書かれたものです。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 3.5 には POX アプリケーション用のサポートが組み込まれています。[!INCLUDE[crabout](../../../../includes/crabout-md.md)] 参照[WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) + +## WCF による POX プログラミング + POX メッセージを使用して HTTP を介して通信する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、次の [\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)を使用します。 + +``` + + + + + + + +``` + + このカスタム バインディングには、次の 2 つの要素があります。 + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/httptransport.md)、および + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/textmessageencoding.md)。 + + 標準の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] テキスト メッセージ エンコーダーで 値を使用するように特別に構成することにより、SOAP エンベロープにラップされずに到着する XML メッセージ ペイロードを処理できるようになります。 + + POX メッセージを使用して HTTP を介して通信する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントでも、次の強制コードに示すように、同様のバインディングを使用します。 + +``` +private static Binding CreatePoxBinding() +{ + TextMessageEncodingBindingElement encoder = + new TextMessageEncodingBindingElement( MessageVersion.None, Encoding.UTF8 ); + HttpTransportBindingElement transport = new HttpTransportBindingElement(); + transport.ManualAddressing = true; + return new CustomBinding( new BindingElement[] { encoder, transport } ); +} +``` + + POX クライアントでは、メッセージの送信先となる URI を明示的に指定する必要があるため、クライアントの プロパティを `true` に設定することで、通常、 を手動アドレス指定モードに構成する必要があります。これにより、アプリケーション コードによってメッセージのアドレスが明示的に指定されることになり、アプリケーションで異なる HTTP URI にメッセージを送信するたびに、新しい を作成する必要がなくなります。 + + POX メッセージでは重要なプロトコル情報の搬送に SOAP ヘッダーを使用しないため、POX クライアントおよびサービスでは、メッセージの送受信に使用される、基になる HTTP 要求の情報を操作する必要が生じる場合がよく起こります。HTTP ヘッダーやステータス コードなど、HTTP 固有のプロトコル情報は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] プログラミング モデルでは次の 2 つのクラスを通じて表現されます。 + +- には、HTTP メソッドと要求ヘッダーなど、HTTP 要求についての情報が含まれます。 + +- には、HTTP ステータス コード、ステータスの説明、および任意の HTTP 応答ヘッダーなど、HTTP 応答についての情報が含まれます。 + + http:\/\/localhost:8100\/customers にアドレス指定される HTTP GET 要求メッセージの作成方法を、次のコード例に示します。 + +``` +Message request = Message.CreateMessage( MessageVersion.None, String.Empty ); +request.Headers.To = “http://localhost:8100/customers”; + +HttpRequestMessageProperty property = new HttpRequestMessageProperty(); +property.Method = “GET”; +property.SuppressEntityBody = true; +request.Properties.Add( HttpRequestMessageProperty.Name, property ); +``` + + 初めに、 を呼び出すことで、空の 要求を作成します。 パラメーターを使用して SOAP エンベロープが不要であることを示し、 パラメーターをアクションとして渡します。次に、 を目的の URI に設定することで、要求メッセージをアドレス指定します。さらに、 を作成し、 を HTTP 動詞の GET メソッドに設定し、また を `true` に設定して、送信 HTTP 要求メッセージの本文でデータが送信されないことを示します。最後に、要求プロパティを要求メッセージの コレクションに追加して、HTTP トランスポートによる要求の送信方法に影響を与えることができるようにします。これで の適切なインスタンスを使用してメッセージを送信する用意が整いました。 + + サービスにおいても、受信メッセージから を抽出して応答を構築する際に同様のテクニックを使用できます。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/interoperability-with-web-services-enhancements-3-0.md b/docs/framework/wcf/feature-details/interoperability-with-web-services-enhancements-3-0.md new file mode 100644 index 00000000000..ee5efea9f5a --- /dev/null +++ b/docs/framework/wcf/feature-details/interoperability-with-web-services-enhancements-3-0.md @@ -0,0 +1,33 @@ +--- +title: "Web サービス拡張 3.0 との相互運用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e8e589d2-12c6-4794-8a11-1ee90b47dfaa +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# Web サービス拡張 3.0 との相互運用 +[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントおよびサービスが WS\-Addressing 仕様の 2004 年 8 月版を使用して構成されている場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントおよびサービスは Microsoft .NET クライアントおよびサービスの WSE \(Web サービス拡張\) 3.0 とネットワーク レベルで互換性があります。 + +## このセクションの内容 + [方法 : WCF サービスと WSE 3.0 クライアントを相互運用するために構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-wcf-services-to-interoperate-with-wse-3-0-clients.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービスが Microsoft .NET 用 Web サービス拡張 \(WSE\) 3.0 のクライアントと通信できるよう設定する手順を説明します。 + + [方法 : WCF クライアントと WSE3.0 サービスを相互運用するために構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-wcf-client-to-interoperate-with-wse3-0-services.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のクライアントが Microsoft .NET 用 WSE \(Web サービス拡張\) 3.0 のサービスと通信できるよう設定する手順を説明します。 + +## 関連項目 + [WSE 3.0 Web サービスの WCF への移行](../../../../docs/framework/wcf/feature-details/migrating-wse-3-0-web-services-to-wcf.md) + +## 参照 + [ASP.NET Web サービスとの相互運用](../../../../docs/framework/wcf/feature-details/interop-with-aspnet-web-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/interoperable-object-references.md b/docs/framework/wcf/feature-details/interoperable-object-references.md new file mode 100644 index 00000000000..6f50fab7939 --- /dev/null +++ b/docs/framework/wcf/feature-details/interoperable-object-references.md @@ -0,0 +1,109 @@ +--- +title: "相互運用可能なオブジェクト参照 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cb8da4c8-08ca-4220-a16b-e04c8f527f1b +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 相互運用可能なオブジェクト参照 +既定では、 はオブジェクトを値でシリアル化します。 プロパティを使用すると、型のオブジェクトをシリアル化する場合に、オブジェクト参照を保持するようにデータ コントラクト シリアライザーに指示できます。 + +## 生成される XML + 例として、次のオブジェクトを考えます。 + +``` +[DataContract] +public class X +{ + SomeClass someInstance = new SomeClass(); + [DataMember] + public SomeClass A = someInstance; + [DataMember] + public SomeClass B = someInstance; +} + +public class SomeClass +{ +} + +``` + + を `false` \(既定値\) に設定すると、次の XML が生成されます。 + +``` + + contents of someInstance + contents of someInstance + +``` + + を `true` に設定すると、次の XML が生成されます。 + +``` + + contents of someInstance + + +``` + + ただし、`preserveObjectReferences` プロパティが `true` に設定されている場合でも、 がそのスキーマに `id` 属性や `ref` 属性を記述することはありません。 + +## IsReference の使用 + スキーマの記述に従った有効なオブジェクト参照情報を生成するには、 属性を型に適用し、 フラグを `true` に設定します。 前のサンプル クラス `X` で `IsReference` を使用するには、次のようにします。 + + `[DataContract(IsReference=true)] public class X` + + `{` + + `SomeClass someInstance = new SomeClass();` + + `[DataMember]` + + `public SomeClass A = someInstance;` + + `[DataMember]` + + `public SomeClass B = someInstance;` + + `}` + + `public class SomeClass` + + `{` + + `}` + + 次のような XML が生成されます。 + + `` + + `` + + `contents of A` + + `` + + `` + + `` + + `` + + `IsReference` を使用すると、メッセージのラウンド トリップに対応できます。 これを使用しない場合、型をスキーマから生成しても、その型に対して返された XML に、もともと想定していたスキーマとの互換性があるとは限りません。 つまり、`id` 属性と `ref` 属性がシリアル化されたとしても、元のスキーマによってこれらの属性 \(またはすべての属性\) が拒否される可能性があります。 `IsReference` をデータ メンバーに適用すれば、そのメンバーは、ラウンド トリップ時にも "参照可能" として認識され続けます。 + +## 参照 + + + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/intranet-unsecured-client-and-service.md b/docs/framework/wcf/feature-details/intranet-unsecured-client-and-service.md new file mode 100644 index 00000000000..47610221c21 --- /dev/null +++ b/docs/framework/wcf/feature-details/intranet-unsecured-client-and-service.md @@ -0,0 +1,122 @@ +--- +title: "セキュリティで保護されていないイントラネットのクライアントとサービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f450f5d4-3547-47ec-9320-2809e6a12634 +caps.latest.revision: 20 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 20 +--- +# セキュリティで保護されていないイントラネットのクライアントとサービス +次の図は、セキュリティで保護されたプライベート ネットワーク上で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションに情報を提供するために開発された単純な [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを示しています。 データの重要性が低いか、ネットワークが本質的に安全であることが期待されるか、または [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャよりも下位層でセキュリティが提供されているため、セキュリティは必要ではありません。 + + ![セキュリティで保護されていないイントラネットのクライアントとサービスのシナリオ](../../../../docs/framework/wcf/feature-details/media/unsecuredwebservice.gif "UnsecuredWebService") + +|特徴|説明| +|--------|--------| +|セキュリティ モード|なし| +|Transport|TCP| +|バインディング|| +|相互運用性|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のみ| +|認証|なし| +|整合性|なし| +|機密性|なし| + +## サービス + 次のコードと構成は、別々に実行します。 次のいずれかの操作を行います。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成しますが、エンドポイントを定義しません。 + +### コード + 次のコードは、セキュリティで保護されないエンドポイントを作成する方法を示しています。 + + [!code-csharp[C_UnsecuredService#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_unsecuredservice/cs/source.cs#2)] + [!code-vb[C_UnsecuredService#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_unsecuredservice/vb/source.vb#2)] + +### 構成 + 次のコードは、次に示す構成を使用して同一のエンドポイントをセットアップします。 + +``` + + + + + + + + + + + + + + + + + + + +``` + +## Client + 次のコードと構成は、別々に実行します。 次のいずれかの操作を行います。 + +- コード \(およびクライアント コード\) を使用してスタンドアロン クライアントを作成します。 + +- エンドポイント アドレスを定義しないクライアントを作成します。 代わりに、引数として構成名を受け取るクライアント コンストラクターを使用します。 次に例を示します。 + + [!code-csharp[C_SecurityScenarios#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#0)] + [!code-vb[C_SecurityScenarios#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#0)] + +### コード + 次のコードは、TCP プロトコルを使用してセキュリティで保護されていないエンドポイントにアクセスする基本的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの作成方法を示します。 + + [!code-csharp[C_UnsecuredClient#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_unsecuredclient/cs/source.cs#2)] + [!code-vb[C_UnsecuredClient#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_unsecuredclient/vb/source.vb#2)] + +### 構成 + 次の構成コードは、クライアントに適用されます。 + +``` + + + + + + + + + + + + + + + + +``` + +## 参照 + + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/large-data-and-streaming.md b/docs/framework/wcf/feature-details/large-data-and-streaming.md new file mode 100644 index 00000000000..058e43216db --- /dev/null +++ b/docs/framework/wcf/feature-details/large-data-and-streaming.md @@ -0,0 +1,249 @@ +--- +title: "大規模データとストリーミング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ab2851f5-966b-4549-80ab-c94c5c0502d2 +caps.latest.revision: 27 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 27 +--- +# 大規模データとストリーミング +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、XML ベースの通信インフラストラクチャです。 XML データは通常、[XML 1.0 仕様](http://go.microsoft.com/fwlink/?LinkId=94838)で定義された標準テキスト形式でエンコードされるので、接続されたシステムの開発者および設計者にとって共通の関心事は、ネットワーク経由で送信されるメッセージのネットワーク フットプリント \(サイズ\) です。XML のエンコーディングをテキスト ベースで行う一方で、バイナリ データを効率的に転送することは容易ではありません。 + +## 基本的な考慮事項 + 後で示される [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の情報に関する背景情報として、接続されたシステムのインフラストラクチャ全般に当てはまる、エンコーディング、バイナリ データ、およびストリーミングに関する一般的な注意点や考慮事項から説明します。 + +### データのエンコーディング: テキストとバイナリ + 開発者が揃って口にする懸念には、開始タグと終了タグが繰り返し使用される XML では、バイナリ形式と比較してオーバーヘッドが大きくなるのではないか、数値のエンコーディングは、数値をテキスト値で表現するのでサイズが膨れ上がるのではないか、バイナリ データをテキスト形式に埋め込むためには特別なエンコーディングが必要なので、バイナリ データを効率的に表現することはできないのではないか、などがあります。 + + このような懸念の多くは当然ではありますが、XML Web サービス環境で XML のテキスト エンコードされたメッセージと、従来のリモート プロシージャ コール \(RPC\) 環境でバイナリ エンコードされたメッセージとの間の実際の相違は、それほど大きくありません。 + + XML のテキスト エンコードされたメッセージは、透過的であり、ユーザーが "読める" のに比べ、バイナリ メッセージのほとんどはわかりにくく、ツールなしでデコードすることは困難です。 このような読みやすさの違いから見過ごされる点は、バイナリ メッセージにはペイロードにインライン メタデータも含まれている場合が多く、これによって、XML テキスト メッセージと同様のオーバーヘッドが追加されるという事実です。 これは特に、疎結合および動的呼び出しの実現を目的としたバイナリ形式に当てはまります。 + + ただし、バイナリ形式では、これらのメタデータ記述情報が "ヘッダー" に格納されるのが普通です。ヘッダーでは、後続のデータ レコードに関するデータ レイアウトも宣言します。 この共通メタデータ ブロック宣言の後に続くペイロードに伴うオーバーヘッドは最小限です。 一方、XML では、各データ項目は要素または属性に囲まれ、外側のメタデータはシリアル化されたペイロード オブジェクトごとに、繰り返し含められます。 これらのことと、一部のメタデータ記述はテキストとバイナリの両方に対して必要になることを考えると、シリアル化するペイロード オブジェクトが 1 つであれば、テキスト表現とバイナリ表現のサイズは同様になることがわかります。ただしバイナリ形式の方が全体のオーバーヘッドが低いため、転送するペイロード オブジェクトの数が増えるごとに、共通のメタデータ記述によるメリットが生じます。 + + 数値など特定のデータ型では、プレーンテキストの代わりに 128 ビットの decimal 型など固定サイズのバイナリ数値表現を使用するデメリットもあります。プレーンテキスト表現を使用すると何バイトか小さくなる可能性があります。 また、テキスト データには、より柔軟性に優れた XML テキスト エンコーディングのオプションから選択できることによるメリットがあります。一方、一部のバイナリ形式では、16 ビットまたは 32 ビットの Unicode が既定値として設定されている場合があります \(これは、.NET Binary XML 形式には当てはまりません\)。 + + したがって、テキストかバイナリかを決定する場合、バイナリ メッセージは常に XML テキスト メッセージよりも小さいという推測に基づいて簡単に決めることはできません。 + + XML テキスト メッセージは、標準ベースのメッセージであるため、きわめて広範囲な相互運用性オプションとプラットフォーム サポートが提供されるという明確な利点があります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、このトピックで後述する「エンコーディング」を参照してください。 + +### バイナリ コンテンツ + 写真、ビデオ、サウンド クリップのほか、サービスとコンシューマーとの間で交換される他の不透明な形式のバイナリ データなど、サイズの大きいバイナリ データ項目の場合、生成されるメッセージ サイズに関しては、テキスト ベースのエンコーディングよりバイナリ エンコーディングの方が優れています。 このようなデータを XML テキストに格納するには、Base64 エンコーディングを使用してそのデータをエンコードするのが一般的です。 + + Base64 でエンコードされた文字列では、各文字で元の 8 ビット データのうち 6 ビット分を表すので、その結果、Base64 ではエンコーディングとオーバーヘッドの比率が 4:3 になります。このとき、通常追加される書式設定文字 \(復帰とライン フィード\) は計算に入れていません。 XML エンコーディングとバイナリ エンコーディングとの間の相違の大きさは、通常、シナリオによって異なりますが、500 MB のペイロードを送信するときにサイズの増加率が 33% を超えることは、受け入れられません。 + + このようなエンコーディングのオーバーヘッドを回避するには、MTOM \(Message Transmission Optimization Mechanism\) 規格を使用すると、特別なエンコーディングを行うことなく、メッセージに含まれている大きいデータ要素を外部化し、それをバイナリ データとしてメッセージと共に送信できます。 MTOM でメッセージを交換する方法は、添付ファイルや埋め込みコンテンツ \(写真やその他の埋め込みコンテンツ\) が付属している簡易メール転送プロトコル \(SMTP\) 電子メール メッセージを交換する方法と似ています。MTOM メッセージは multipart\/related MIME シーケンスとしてパッケージ化され、ルート パートが実際の SOAP メッセージになります。 + + MTOM SOAP メッセージが、エンコードされていないバージョンと異なるのは、メッセージ内でバイナリ データを含んでいた元の要素の代わりに、それぞれの MIME パートを参照している特別な要素タグが配置される点です。 つまり SOAP メッセージでは、メッセージと共に送信される MIME パートを指すことによってバイナリ コンテンツが参照されますが、含まれているのは XML テキスト データのみです。 このモデルは、広く確立している SMTP モデルに厳密に適合するように作成されています。このため、さまざまなプラットフォームで、MTOM メッセージをエンコードまたはデコードするための幅広いツール サポートが提供され、きわめて高い相互運用性が確保されています。 + + ただし MTOM でも Base64 の場合と同様、MIME 形式をサポートするためのオーバーヘッドが伴います。このため、MTOM を使用するメリットが現れるのは、バイナリ データ要素のサイズが約 1 KB を超える場合だけです。 バイナリ ペイロードが 1 KB を下回る場合は、このオーバーヘッドが原因で、バイナリ データに Base64 エンコーディングを使用したメッセージよりも、エンコード済みの MTOM メッセージの方が大きくなる可能性があります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、このトピックで後述する「エンコーディング」を参照してください。 + +### 大規模データ コンテンツ + ネットワーク フットプリントとは別に、前述の例のようにペイロードが 500 MB であれば、サービスとクライアントにもローカルの問題が生じます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の既定では、*"バッファー モード"* でメッセージが処理されます。 つまり、メッセージ コンテンツ全体が、送信前にも受信後にもメモリに存在します。 この方式は、ほとんどのシナリオに対して有効であり、デジタル署名や信頼できる配信などのメッセージング機能には必要ですが、メッセージが大きいと、システムのリソースが使い果たされてしまう可能性があります。 + + ペイロードが大きい場合、有効な処理方法は、ストリーミングです。 メッセージ、特に XML で表現されているメッセージは一般的に、比較的小型のデータ パッケージであると思われがちですが、メッセージのサイズは数ギガバイトになることもあり、データ パッケージというよりも連続したデータ ストリームに似ています。 バッファー モードではなく、ストリーミング モードでデータを転送する場合、送信側が、メッセージ本体のコンテンツをストリームの形で受信側に対して準備します。続いてメッセージ インフラストラクチャは、このデータの準備が整い次第、送信側から受信側にデータを転送します。 + + このような大きいデータ コンテンツの転送が発生する最も一般的なシナリオは、次のようなバイナリ データ オブジェクトの転送です。 + +- 簡単にメッセージ シーケンスに分割できないバイナリ データ オブジェクト + +- タイムリーに配信する必要があるバイナリ データ オブジェクト + +- 転送の開始時に完全な形で準備されていないバイナリ データ オブジェクト + + 通常、データにこのような制約がない場合は、1 つの大きいメッセージではなく、セッションの有効範囲内でメッセージ シーケンスを送信することをお勧めします。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、このトピックで後述する「データのストリーミング」を参照してください。 + + 大量のデータを送信する場合は、maxAllowedContentLength の IIS 設定 \(詳細については、「[要求の制限 requestLimits](http://go.microsoft.com/fwlink/?LinkId=253165)」を参照してください\) および maxReceivedMessageSize のバインディング設定 \( など\) を行う必要があります。 maxAllowedContentLength プロパティの既定値は 28.6 MB で、maxReceivedMessageSize プロパティの既定値は 64 KB です。 + +## エンコーディング + *エンコーディング*とは、ネットワーク上でのメッセージの表示方法に関する規則を定義したものです。 *エンコーダー*はこのようなエンコーディングを実装し、送信側では、メモリ内メッセージの を変換して、ネットワークで送信できるバイト ストリームまたはバイト バッファーにする役割を担います。 受信側では、バイト シーケンスがエンコーダーによってメモリ内メッセージに変換されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、3 つのエンコーダーが用意されています。開発者は、必要に応じて独自のエンコーダーを作成してプラグインすることもできます。 + + 個々の標準バインディングには、構成済みのエンコーダーが含まれています。Net\* プレフィックスで始まるバインディングでは、\( クラスを含めることで\) バイナリ エンコーダーが使用されるのに対し、 クラスと クラスでは、既定で \( クラスを含めることで\) テキスト メッセージ エンコーダーが使用されます。 + +|エンコーダー バインド要素|説明| +|-------------------|--------| +||テキスト メッセージ エンコーダーは、すべての HTTP ベースのバインディングに対する既定のエンコーダーで、相互運用性が特に重要になるカスタムのバインディングにも適しています。 このエンコーダーで入出力が行われるのは、標準の SOAP 1.1\/SOAP 1.2 テキスト メッセージであり、バイナリ データに対して特別な処理は行われません。 メッセージの が `None` に設定されている場合、出力から SOAP エンベロープ ラッパーが除去され、メッセージ本体のコンテンツだけがシリアル化されます。| +||MTOM メッセージ エンコーダーは、バイナリ データに対する特別な処理を実装したテキスト エンコーダーです。このエンコーダーは、状況に応じた最適化を要するユーティリティなので、どの標準バインディングでも既定では使用されません。 MTOM エンコーディングのメリットを生じるしきい値より大きいバイナリ データがメッセージにある場合、そのデータは、メッセージ エンベロープの後に続く MIME パートとして外部化されます。 このセクションの「MTOM の有効化」を参照してください。| +||バイナリ メッセージ エンコーダーは、Net\* バインディングの既定のエンコーダーであり、送信側と受信側の両方が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] をベースとしている場合にも適しています。 バイナリ メッセージ エンコーダーでは、XML 情報セット \(Infoset\) を対象とした Microsoft 固有のバイナリ表現である .NET Binary XML 形式が使用されます。この形式ではバイナリ データがバイト ストリームとしてエンコードされ、通常は、同等の XML 1.0 表現よりもフットプリントが小さくなりきます。| + + 相互運用性が要求される通信パスでは一般的にテキスト メッセージ エンコーディングが最適であり、それ以外の通信パスではバイナリ メッセージ エンコーディングが最適です。 バイナリ メッセージ エンコーディングで生成されるメッセージのサイズは、単一のメッセージであればテキストより小さくなることが普通ですが、通信セッションの間に、さらに小さくなっていきます。 テキスト エンコーディングと異なり、バイナリ エンコーディングでは、Base64 を使用するなど、バイナリ データに対する特別な処理を行う必要がありません。このエンコーディングでは、バイトがバイトとして表現されます。 + + ソリューションで、相互運用性は必要ではないが、HTTP トランスポートを使用する場合は、トランスポートとして クラスを使用するカスタム バインディングに を組み込むことができます。 サービスを利用する多数のクライアントが相互運用性を必要とする場合は、両者にとって適切な種類のトランスポートとエンコーディングがそれぞれに有効化された並行エンドポイントを公開することをお勧めします。 + +### MTOM の有効化 + 相互運用性が必須である一方で、大きなバイナリ データを送信する必要がある場合、エンコーディング方法のもう 1 つの選択肢に、MTOM メッセージ エンコーディングがあります。このエンコーディングを有効化するには、標準の バインディングまたは バインディングでそれぞれの `MessageEncoding` プロパティを に設定するか、 を組み込みます。 次のコード例は、「[MTOM エンコーディング](../../../../docs/framework/wcf/samples/mtom-encoding.md)」のサンプルからの抜粋であり、構成で MTOM を有効化する方法を示しています。 + +``` + + … + + + + + + … + +``` + + 前述のように、MTOM エンコーディングの使用が適しているかどうかは、送信するデータ量によって異なります。 また、MTOM はバインディング レベルで有効になるので、MTOM を有効にすると、個々のエンドポイント上のすべての操作に作用します。 + + MTOM エンコーダーでは、バイナリ データが最終的に外部化されるかどうかに関係なく、MTOM エンコードされた MIME\/multipart メッセージが常に出力されるので、通常は、1 KB を超えるバイナリ データを含んだメッセージの交換が行われるエンドポイントに対してのみ、MTOM を有効にしてください。 また、MTOM が有効化されたエンドポイント用に設計されたサービス コントラクトは、可能であれば、このようなデータ転送操作を指定するように制限してください。 関連する制御機能は別のコントラクトに記述するようにしてください。 この "MTOM のみ" の規則が当てはまるのは、MTOM が有効化されたエンドポイントを経由して送信されるメッセージだけです。MTOM 以外の受信メッセージについては、MTOM エンコーダーによって同様にデコードおよび解析されます。 + + MTOM エンコーダーの使用は、他の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 機能すべてに適合しています。 セッション サポートが必要な場合などのように、すべての場合でこの規則が守られるわけではありません。 + +### プログラミング モデル + 3 つの組み込みエンコーダーのうち、どのエンコーダーをアプリケーションで使用する場合も、バイナリ データの転送に関するプログラミング方法は同じです。 違いは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] による、データ型に基づいたデータ処理の方法です。 + +``` +[DataContract] +class MyData +{ + [DataMember] + byte[] binaryBuffer; + [DataMember] + string someStringData; +} +``` + + MTOM を使用する場合、上記のデータ コントラクトは次の規則に従ってシリアル化されます。 + +- `binaryBuffer` が `null` ではなく、それぞれに格納されているデータのサイズが大きい場合、つまり Base64 エンコーディングと比較しても MTOM 外部化によるオーバーヘッド \(MIME ヘッダーなど\) を正当化できるサイズである場合は、データが外部化され、バイナリ MIME パートとしてメッセージと共に転送されます。 しきい値を超えていない場合、データは Base64 としてエンコードされます。 + +- メッセージの本体で、文字列 \(およびバイナリ以外のその他の型\) はサイズに関係なく文字列として表現されます。 + + 上記の例に示したような明示的なデータ コントラクトを使用する場合も、操作にパラメーター リストを使用する場合も、入れ子構造のデータ コントラクトを使用する場合も、コレクション内でデータ コントラクト オブジェクトを転送する場合も、MTOM エンコーディングへの作用は同じです。 バイト配列は、常に最適化の対象と見なされるため、最適化のしきい値条件を満たしていれば最適化されます。 + +> [!NOTE] +> データ コントラクト内では の派生型を使用しないでください。 ストリーム データは、次の「データのストリーミング」で説明するストリーミング モデルを使用して送受信する必要があります。 + +## データのストリーミング + 大量のデータを転送する場合、メッセージ全体をメモリ内でバッファー化および処理するという既定動作の代わりに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のストリーミング転送モードを使用することができます。 + + 前述のように、ストリーミングの有効化は、データをセグメントに分割できない場合、メッセージをタイムリーに配信する必要がある場合、または転送の開始時にデータがすべて揃っていない場合に、テキストまたはバイナリのコンテンツを伴う大きなメッセージに関してのみ実行するようにしてください。 + +### 制限 + ストリーミングを有効化した状態では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の多くの機能を使用できません。 + +- メッセージ本体に対するデジタル署名は実行できません。デジタル署名では、メッセージ コンテンツ全体に対してハッシュを計算する必要があります。 ところがストリーミングでは、メッセージ ヘッダーが作成され、送信される時点では、メッセージ コンテンツがすべて揃っているわけではありません。デジタル署名を処理できないのは、このためです。 + +- 暗号化では、データが正しく再構築されていることを検証するために、デジタル署名が必要になります。 + +- 信頼できるセッションでは、メッセージが転送中に失われた場合に再配信できるように、クライアントで送信メッセージをバッファー化する必要があります。また、サービス実装にメッセージを渡す前に、いったんメッセージをサービスで格納し、メッセージが正しい順序で受信されなかった場合に備えてメッセージの順序を保持する必要があります。 + + このような機能上の制約により、ストリーミングではトランスポート レベルのセキュリティ オプションしか使用できず、信頼できるセッションを有効にできません。 ストリーミングは、以下のシステム定義バインディングでしか使用できません。 + +- + +- + +- + +- + + HTTP とは異なり、 の基になるトランスポートには、信頼できる配信と接続ベースのセッション サポートが備わっているので、これら 2 つのバインディングが上記の制約から受ける影響はわずかです。 + + ストリーミングは、メッセージ キュー \(MSMQ\) トランスポートでは利用できないため、 クラスまたは クラスと共に使用することはできません。 メッセージ キュー トランスポートでは、メッセージ サイズを制限したバッファー化によるデータ転送だけがサポートされています。これに対し他のトランスポートでは、ほとんどのシナリオにおいてメッセージ サイズの実質的な制限はありません。 + + ストリーミングは、ピア チャネル トランスポートを使用している場合も利用できないため、 と共に使用することはできません。 + +#### ストリーミングとセッション + セッション ベースのバインディングでストリーミングを呼び出すと、予期しない動作を引き起こすことがあります。 すべてのストリーミング呼び出しは単一のチャネル \(データグラム チャネル\) を通じて行われますが、このチャネルは使用されるバインディングがセッションを使用するように構成されている場合であっても、セッションをサポートしません。 セッション ベースのバインディングによって複数のクライアントが同一のサービス オブジェクトに対してストリーミング呼び出しを行う場合、このサービス オブジェクトの同時実行モードが単一に設定され、インスタンス コンテキスト モードが PerSession に設定されていると、すべての呼び出しがこのデータグラム チャネルを通過する必要があるため、同時に処理される呼び出しは 1 つに限られることになります。 そのため、1 つ以上のクライアントがタイムアウトとなる可能性があります。 サービス オブジェクトのインスタンス コンテキスト モードを呼び出しごと \(PerCall\) に設定するか、または同時実行モードを複数に設定することで、この問題を回避できます。 + +> [!NOTE] +> この場合、利用可能になる "セッション" は 1 つしかないため、MaxConcurrentSessions は効力を失います。 + +### ストリーミングの有効化 + ストリーミングは次の方法で有効にできます。 + +- ストリーミング モードで要求の送信および受け入れを行い、バッファー モードで応答の受け入れおよび返信を行う \(\)。 + +- バッファー モードで要求の送信および受け入れを行い、ストリーミング モードで応答の受け入れおよび返信を行う \(\)。 + +- 両方向の要求および応答をストリーミング モードで送受信する \(\). + + ストリーミングを無効化するには、転送モードを \(すべてのバインディングでの既定の設定\) に設定します。 構成で転送モードを設定する方法を次のコードに示します。 + +``` + + … + + + + + + … + +``` + + コード内でバインディングをインスタンス化するときは、そのバインディングの `TransferMode` プロパティ \(またはカスタム バインディングを作成している場合は、トランスポート バインド要素\) をそれぞれ上記の値のいずれかに設定する必要があります。 + + 送信側と受信側で別々に、要求または応答あるいは両方向に対してストリーミングを有効化しても、機能には影響しません。 ただし、転送されるデータのサイズが大きくて、ストリーミングを有効化することが双方にとってのメリットになるかどうかを常に前提として判断する必要があります。 一方のエンドポイントに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が実装されていないようなクロス プラットフォームの通信の場合、ストリーミングが使用できるかどうかは、そのプラットフォームのストリーミング機能に依存します。 もう 1 つのまれな例外は、クライアントまたはサービスが作業セットを最小限に抑える必要があり、使用できるバッファー サイズが制限されるような、メモリ消費重視のシナリオです。 + +### 非同期ストリーミングの有効化 + 非同期ストリーミングを有効にするには、エンドポイントの 動作をサービス ホストに追加し、その プロパティを `true` に設定します。 送信側に実際の非同期ストリーミング機能も追加されています。 これによって、複数のクライアントにメッセージをストリーム出力するシナリオで、一部のクライアントがネットワークの混雑により読み取りが遅いか、読み取りをまったく行っていない場合に、サービスのスケーラビリティが向上します。 このようなシナリオでは、クライアントごとのサービスの個別のスレッドがブロックされないようになりました。 サービスはこれによってこれまで以上のクライアントを処理できるようになり、スケーラビリティが向上します。 + +### ストリーミング転送のプログラミング モデル + ストリーミングのプログラミング モデルは単純です。 ストリーム化されたデータを受信するには、 型の入力パラメーターを 1 つ使用する操作コントラクトを指定します。 ストリーム化されたデータを返信するには、 参照を返します。 + +``` +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public interface IStreamedService +{ + [OperationContract] + Stream Echo(Stream data); + [OperationContract] + Stream RequestInfo(string query); + [OperationContract(OneWay=true)] + void ProvideInfo(Stream data); +} +``` + + 上記の例で操作 `Echo` は、ストリームの受信および返信を行うので、 が設定されたバインディングで使用する必要があります。 `RequestInfo` 操作の場合、 だけを返すので、 が最も適しています。 一方向操作は、 に最適です。 + + 次の `Echo` 操作または `ProvideInfo` 操作に 2 つ目のパラメーターを追加すると、サービス モデルはバッファー モードに戻り、ストリームの実行時シリアル化表現が使用されます。 エンドツーエンドの要求ストリーミングとの互換性があるのは、単一の入力ストリーム パラメーターを使用する操作だけです。 + + この規則は、メッセージ コントラクトにも同様に適用されます。 次の例に示すように、メッセージ コントラクトには、ストリームであるメッセージ本体メンバーを 1 つだけ指定できます。 ストリームと共に他の追加情報も転送する場合、追加情報はメッセージ ヘッダーに入れる必要があります。 メッセージ本体は、ストリーム コンテンツ専用として予約されています。 + +``` +[MessageContract] +public class UploadStreamMessage +{ + [MessageHeader] + public string appRef; + [MessageBodyMember] + public Stream data; +} +``` + + ストリームがファイルの末尾 \(EOF\) に達すると、ストリーミング転送は終了し、メッセージが閉じられます。 値を返したり操作を呼び出したりするためにメッセージを送信する際には、 を渡すことができます。すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャは、ストリームの読み出しが完了して EOF に達するまで、ストリームのデータをすべて獲得します。 ストリーム化されたデータを転送する際に、このような のビルド済み派生クラスがそのデータのソースに存在しない場合は、対応するクラスを作成し、そのクラスでストリーム ソースを覆ったうえで、これを引数または戻り値として使用する必要があります。 + + メッセージを受信したとき、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は Base64 でエンコードされたメッセージ本体のコンテンツ \(MTOM が使用されていれば各 MIME パート\) についてストリームを作成します。コンテンツの読み取りが完了した時点でストリームは EOF に達します。 + + トランスポート レベルのストリーミングは、その他のメッセージ コントラクト型 \(パラメーター リスト、データ コントラクトの引数、明示的なメッセージ コントラクト\) でも使用できますが、このような型指定メッセージのシリアル化および逆シリアル化には、シリアライザーによるバッファー化が必要なので、これらの使用は適切ではありません。 + +### 大規模データに関するセキュリティの考慮事項 + すべてのバインディングで、受信メッセージのサイズを制限して、サービス拒否攻撃を防止できます。 たとえば、 は、受信メッセージのサイズを制限し、メッセージの処理時にアクセスされるメモリの最大容量も制限する プロパティを公開します。 この単位はバイトで設定されます。既定値は 65,536 バイトです。 + + 大きなデータのストリーミングを行うシナリオに特有のセキュリティの脅威は、受信側が、データがストリーミングされることを想定しているときに、データをバッファーさせることで、サービス拒否が誘発されることです。 たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、常にメッセージの SOAP ヘッダーをバッファーするため、攻撃者は、すべてがヘッダーで構成されている悪意のある大きなメッセージを作成して、データをバッファーさせることができます。 ストリーミングが有効になっている場合は、`MaxReceivedMessageSize` を極端に大きい値に設定できます。これは、受信側が、一度にメッセージ全体をメモリにバッファーすることを想定していないためです。 メッセージをバッファーするように [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に強制している場合は、メモリのオーバーフローが発生します。 + + そのため、この場合は、受信メッセージの最大サイズを制限するだけでは不十分です。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がバッファーするメモリを制限するには、`MaxBufferSize` プロパティが必要です。 ストリーミングを使用する場合は、これを安全な値に設定する \(または既定値のままにしておく\) ことが重要です。 たとえば、サービスでは、サイズが 4 GB までのファイルを受信し、それをローカル ディスクに格納する必要があるとします。 また、一度に 64 KB のデータしかバッファーできないようにメモリが制限されているとします。 その場合、`MaxReceivedMessageSize` を 4 GB、`MaxBufferSize` を 64 KB に設定します。 また、サービス実装において、64 KB ずつ受信ストリームから読み取り、前のデータがディスクに書き込まれ、メモリから破棄されるまで次のデータを読み取らないようにする必要があります。 + + このクォータは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって行われるバッファーのみを制限するものであり、独自のサービスまたはクライアント実装で行われるバッファーからは保護できないことを理解しておくことも重要です。 その他のセキュリティ上の考慮事項の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[セキュリティに関するデータの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-for-data.md)」を参照してください。 + +> [!NOTE] +> バッファー転送とストリーミング転送のどちらを使用するかは、エンドポイントごとにローカルに決定します。 HTTP トランスポートの場合、転送モードは、接続、つまりプロキシ サーバーなどの中継局に伝達されません。 転送モードを設定しても、サービス インターフェイスの記述には反映されません。 サービスに対して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを生成した後、ストリーミング転送で使用する予定のサービスの構成ファイルを編集し、転送モードを設定する必要があります。 TCP トランスポートおよび名前付きパイプ トランスポートの場合、転送モードはポリシー アサーションとして伝達されます。 + +## 参照 + [方法 : ストリーミングを有効にする](../../../../docs/framework/wcf/feature-details/how-to-enable-streaming.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/limiting-message-distribution.md b/docs/framework/wcf/feature-details/limiting-message-distribution.md new file mode 100644 index 00000000000..376faedd01e --- /dev/null +++ b/docs/framework/wcf/feature-details/limiting-message-distribution.md @@ -0,0 +1,75 @@ +--- +title: "メッセージ配布の制限 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8b5ec4b8-1ce9-45ef-bb90-2c840456bcc1 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# メッセージ配布の制限 +ピア チャネルは仕様上はブロードキャスト メッシュです。その基本的な大量転送モデルでは、メッシュの任意のメンバーが送信した各メッセージをそのメッシュの他のメンバー全員に配布します。これは、1 人のメンバーが生成した各メッセージが他のメンバー全員に関係していて、役立つものであるような状況 \(チャット ルームなど\) に最適です。ただし、多くのアプリケーションではメッセージの配布を制限する必要が生じることがあります。たとえば、新しいメンバーがメッシュに参加し、メッシュを経由して送信された最新のメッセージを取得しようとする場合、この要求をメッシュのメンバー全員に転送する必要はありません。要求は近くの近隣ノードに制限できます。また、ローカルで生成されたメッセージをフィルターで除外することもできます。メッセージはメッシュの個別のノードに送信することもできます。このトピックでは、ホップ数、メッセージ伝達フィルター、ローカル フィルター、または直接接続を使用し、メッシュを経由してメッセージを転送する方法について説明し、1 つの方法を選択するための一般的なガイドラインを示します。 + +## ホップ数 + `PeerHopCount` の概念は、IP プロトコルで使用される TTL \(Time\-To\-Live\) に似ています。`PeerHopCount` の値はメッセージのインスタンスに関連付けられ、メッセージを破棄するまでの転送回数を指定します。ピア チャネル クライアントがメッセージを受信するたびに、クライアントはメッセージに `PeerHopCount` が指定されているかどうかを確認します。指定されている場合、クライアントはメッセージを近隣ノードに転送する前に、ホップ数の値を 1 つデクリメントします。クライアントがゼロのホップ数値を持つメッセージを受信した場合、そのメッセージは処理されますが、近隣ノードには転送されません。 + + ホップ数をメッセージに追加するには、メッセージ クラスの実装で、適切なプロパティまたはフィールドに `PeerHopCount` を属性として追加します。この値は、メッセージをメッシュに送信する前に特定の値に設定できます。このように、ホップ数を使用するとメッシュを経由したメッセージの配布を必要に応じて制限し、不要なメッセージの重複を避けることができます。これは、メッシュに大量の重複データが含まれている場合や、メッセージをすぐ隣の近隣ノードまたはいくつかのホップ内の近隣ノードに送信する場合に役立ちます。 + +- コード スニペットと関連情報については、[ピア チャネルのブログ](http://go.microsoft.com/fwlink/?LinkID=114531) \(http:\/\/go.microsoft.com\/fwlink\/?LinkID\=114531\) を参照してください。 + +## メッセージ伝達フィルター + `MessagePropagationFilter` は、特にメッセージの内容や他の特定のシナリオによってメッセージを伝達するかどうかを決定する場合など、メッセージの大量転送の制御をカスタマイズするために使用できます。このフィルターにより、ノードを通過する各メッセージを伝達するかどうかが決定されます。これは、メッシュ内の他の場所から送信され、使用しているノードで受信したメッセージと、使用しているアプリケーションで作成したメッセージの両方に適用されます。フィルターはメッセージとその発信元の両方にアクセスできるため、利用できるすべての情報に基づいてメッセージを転送するか、破棄するかを決定します。 + + は、単一の関数 を持つ抽象基本クラスです。メソッド呼び出しの最初の引数には、メッセージの完全なコピーを渡します。このメッセージに対して行われた変更が実際のメッセージに影響することはありません。このメソッド呼び出しの最後の引数は、メッセージの送信元 \(`PeerMessageOrigination.Local` または `PeerMessageOrigination.Remote`\) を識別します。このメソッドの具体的な実装は、メッセージの転送先 \(ローカル アプリケーション \(`Local`\)、リモート クライアント \(`Remote`\)、ローカル アプリケーションとリモート クライアントの両方 \(`LocalAndRemote`\)、どちらにも転送しない \(`None`\)\) を示す 列挙体から定数を返す必要があります。このフィルターは、対応する `PeerNode` オブジェクトにアクセスし、`PeerNode.MessagePropagationFilter` プロパティで伝達フィルター派生クラスのインスタンスを指定することによって適用できます。ピア チャネルを開く前に、伝達フィルターがアタッチされていることを確認してください。 + +- コード スニペットと関連情報については、[ピア チャネルのブログ](http://go.microsoft.com/fwlink/?LinkID=114532) \(http:\/\/go.microsoft.com\/fwlink\/?LinkID\=114532\) を参照してください。 + +## メッシュ内の個別ノードへのアクセス + メッシュ内の個別のノードには、ローカル フィルターを設定するか、直接接続を設定することでアクセスできます。 + + メッシュ内の各ノードに個別の ID が割り当てられている場合は、メッセージの実装に宛先 ID を指定できます。ローカル フィルターを設定するには、指定した宛先 ID にノードの ID が一致する場合にのみメッセージを現在のノードに表示する関数をメッセージ コントラクト内に作成します。メッセージはメッシュが転送するため、新しい接続を設定するオーバーヘッドが発生しません。ただし、メッセージはメッシュを経由して何度も送信されるため、効率が低下します。この方法は、メッセージのサイズが大きくなく、メッセージを頻繁に送信しない限り、メッシュの個別のメンバーにメッセージを送信する場合に適しています。 + + 帯域幅の広い長時間の接続には、直接接続が適しています。接続情報はメッシュを経由して送信でき、その後、メッセージを送受信するために選択した直接接続を設定できます。 + +## メッセージ配布の制限方法の選択 + メッセージの配布を制限する必要があるシナリオに遭遇した場合は、次の点を検討してください。 + +- **誰**がメッセージを受信する必要があるか。1 つの近隣ノードのみか。メッシュ内の別の場所にあるノードか。メッシュ内の半分のノードか。 + +- **どのような頻度**でこのメッセージを送信する必要があるか。 + +- どのような**帯域幅**をこのメッセージは使用するか。 + + これらの質問の回答は、ホップ数、メッセージ伝達フィルター、ローカル フィルター、直接接続のいずれを使用するかを決定するのに役立ちます。次の一般的なガイドラインを考慮してください。 + +- **誰** + + - 個別のノード : ローカル フィルターまたは直接接続 + + - 特定の領域内の近隣ノード : PeerHopCount + + - メッシュの複雑なサブセット : MessagePropagationFilter + +- **頻度** + + - 頻繁 : 直接接続、PeerHopCount、MessagePropagationFilter + + - 時折 : ローカル フィルター + +- **帯域幅の使用** + + - 広い : 直接接続。MessagePropagationFilter またはローカル フィルターの使用は奨励できない + + - 狭い : 任意。直接接続は通常は不要 + +## 参照 + [ピア チャネル アプリケーションの構築](../../../../docs/framework/wcf/feature-details/building-a-peer-channel-application.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md b/docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md new file mode 100644 index 00000000000..82c7a866682 --- /dev/null +++ b/docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md @@ -0,0 +1,188 @@ +--- +title: "ID モデルを使用したクレームと承認の管理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "承認 [WCF]" + - "承認 [WCF], ID モデルを使用した管理" + - "クレーム [WCF]" + - "クレーム [WCF], ID モデルを使用した管理" + - "WCF セキュリティ" +ms.assetid: 099defbb-5d35-434e-9336-1a49b9ec7663 +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# ID モデルを使用したクレームと承認の管理 +承認は、コンピューター リソースを変更または表示したり、コンピューター リソースにアクセスしたりする権限を持つエンティティを特定するプロセスです。たとえば、ある業務で、管理者だけが従業員のファイルへのアクセスを許可される場合があります。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、承認処理を実行するための 2 つの機構をサポートしています。1 つ目の機構では、既存の共通言語ランタイム \(CLR: Common Language Runtime\) 構造を使用して承認を制御できます。もう 1 つはクレームに基づくモデルで、*"ID モデル"* と呼ばれます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ID モデルを使用して受信メッセージからクレームを作成します。ID モデル クラスを拡張することで、カスタム承認方式に対応する新しいクレームの種類をサポートできます。このトピックでは、ID モデル機能のプログラミングの主要概念について概説し、この機能で使用する最も重要なクラスの一覧を示します。 + +## ID モデルのシナリオ + ID モデルの使用例を以下のシナリオに示します。 + +### シナリオ 1 : ID、ロール、およびグループの各クレームをサポートする場合 + 複数のユーザーが Web サービスにメッセージを送信します。この Web サービスのアクセス制御要件では、ID、ロール、またはグループを使用します。メッセージ送信者は、一連のロールまたはグループに割り当てられます。ロールまたはグループの情報は、アクセス チェックを実行する際に使用されます。 + +### シナリオ 2 : 多様なクレームをサポートする場合 + 複数のユーザーが Web サービスにメッセージを送信します。この Web サービスのアクセス制御要件では、ID、ロール、またはグループよりも多様なモデルを必要とします。Web サービスは、クレームに基づく多様なモデルを使用して、指定のユーザーが保護された特定のリソースにアクセスできるかどうかを判断します。たとえば、あるユーザーは、他のユーザーがアクセスできない給与情報などの特定の情報を読み取ることができます。 + +### シナリオ 3 : さまざまなクレームを割り当てる場合 + ユーザーが Web サービスにメッセージを送信します。ユーザーは、X.509 証明書、ユーザー名トークン、または Kerberos トークンを使用して資格情報を指定できます。Web サービスは、ユーザーの資格情報の種類を問わず、アクセス制御チェックを同様に実行する必要があります。時間の経過に伴って、サポート対象となる資格情報の種類が追加された場合、それに応じてシステムを拡張する必要があります。 + +### シナリオ 4 : 複数のリソースへのアクセスを特定する場合 + ある Web サービスでは、複数のリソースへのアクセスを試みます。このサービスは、指定のユーザーに関連付けられたクレームと、保護されたリソースにアクセスするために必要なクレームを比較することによって、そのユーザーがアクセスできるリソースを特定します。 + +## ID モデルの用語 + ID モデルの概念の説明に使用される重要な用語の定義を以下に示します。 + + 承認ポリシー + 入力クレーム セットを出力クレーム セットに割り当てる一連のルール。承認ポリシーを評価すると、クレーム セットが評価コンテキストに追加され、次に承認コンテキストに追加されます。 + + 承認コンテキスト + 一連のクレーム セットと 0 個以上のプロパティ。1 つ以上の承認ポリシーの評価結果です。 + + クレーム + クレームの種類、権限、および値の組み合わせ。 + + クレーム セット + 特定の発行者によって発行された一連のクレーム。 + + クレームの種類 + クレームの種類。ID モデル API によって定義されたクレームは、 クラスのプロパティです。システムが提供するクレームの種類には、 などがあります。 + + 評価コンテキスト + 承認ポリシーが評価されるコンテキスト。プロパティとクレーム セットが含まれます。評価が完了すると、評価コンテキストは承認コンテキストの基礎となります。 + + ID クレーム + 権限が ID であるクレーム。 + + 発行者 + 1 つ以上の ID クレームを含み、別のクレーム セットを発行したと見なされているクレーム セット。 + + プロパティ + 評価コンテキストまたは承認コンテキストに関連付けられた一連の情報。 + + 保護されたリソース + システム内に存在するものの中で、まず特定の要件が満たされた場合にのみ、使用、アクセス、または操作が可能になるもの。 + + 権限 + リソースに対する使用能力。ID モデル API によって定義された権限は、 クラスのプロパティです。システムが提供する権限には、 などがあります。 + + 値 + 権限がクレームされる対象。 + +## クレーム + ID モデルはクレームに基づくシステムです。クレームは、システム内の何らかのエンティティ \(多くの場合システムのユーザー\) に関連する機能について記述します。指定のエンティティに関連するクレームのセットをキーと考えることができます。個別のクレームによりキーの形状が定義されます。このしくみは、ドアを開けるための物理的なキーと似ています。クレームは、リソースへのアクセスを取得するために使用されます。保護された指定のリソースへのアクセスの可否は、そのリソースにアクセスするために必要なクレームと、アクセスを試みるエンティティに関連付けられたクレームを比較することにより特定されます。 + + クレームは、特定の値に関連付けられる権限の表現です。権限には、"読み取り"、"書き込み"、"実行" などがあります。値には、データベース、ファイル、メールボックス、またはプロパティが使用できます。クレームはまた、特定のクレームの種類に属します。クレームの種類と権限の組み合わせにより、値に関する機能を指定するための機構が得られます。たとえば、値 "Biography.doc" に対して権限 "読み取り" を持つ種類 "File" のクレームは、そのようなクレームに関連するエンティティが Biography.doc ファイルに対して読み取りアクセスを持つことを示します。また、値 "Martin" に対して権限 "PossessProperty" を持つ種類 "Name" のクレームは、そのようなクレームに関連するエンティティが値 "Martin" を持つ "Name" プロパティを所有することを示します。 + + さまざまなクレームの種類と権限が ID モデルの一部として定義されています。ただし、システムは拡張できるため、ID モデル インフラストラクチャ上に構築するさまざまなシステムで、必要に応じて他のクレームの種類や権限を定義できます。 + +### ID クレーム + 特殊な権限の 1 つとして、ID の権限があります。この権限を持つクレームは、エンティティの ID を示します。たとえば、種類がユーザー プリンシパル名 \(UPN: User Principal Name\)、値が "someone@example.com"、権限が ID であるクレームは、特定のドメインの特定の ID を示します。 + +#### System ID クレーム + ID モデルでは、System という ID クレームが定義されています。System ID クレームは、エンティティが現在のアプリケーションまたはシステムであることを示します。 + +### クレーム セット + クレームは、システム内の何らかのエンティティによって常に発行されるため、ID を表すクレームのモデルは重要です。エンティティが最終的には何らかの "自己" の概念である場合でも、クレームは発行されます。クレームは 1 つのセットとしてグループ化され、各セットは発行者を持ちます。発行者は、1 つのクレーム セットにすぎません。このような再帰的な関係は最終的に終了する必要があるため、どのクレーム セットもそれ自体の発行者になることができます。 + + 次の図は、3 つのクレーム セットの一例を示しています。この例では、1 つ目のクレーム セットの発行者は 2 つ目のクレーム セットであり、さらにこの 2 つ目のクレーム セットの発行者は System クレーム セットです。このように、クレーム セットは任意の深さの階層を形成します。 + + ![クレームと承認の管理](../../../../docs/framework/wcf/feature-details/media/claimshierarchy.gif "claimshierarchy") + + 次の図に示すように、複数のクレーム セットが同じクレーム セットから発行されている場合もあります。 + + ![クレームと承認の管理](../../../../docs/framework/wcf/feature-details/media/multiplesetsofclaims.gif "multiplesetsofclaims") + + クレーム セットがそれ自体の発行者である場合を除き、ID モデルではクレーム セットによるループの形成を一切サポートしていません。したがって、クレーム セット A がクレーム セット B によって発行された場合に、クレーム セット B 自体がクレーム セット A によって発行されたという状況はありえません。また、ID モデルでは、クレーム セットが複数の発行者を持つことはできません。ある特定のクレーム セットを複数の発行者が発行する必要がある場合は、同じクレームを含み、発行者がそれぞれ異なる複数のクレーム セットを使用する必要があります。 + +### クレームの発生元 + クレームは、さまざまな発生元から発生する可能性があります。たとえば、Web サービスに送信されるメッセージの一部としてユーザーから提示される資格情報は、クレームの一般的な発生元の 1 つです。このようなクレームはシステムによって検証され、そのユーザーに関連付けられたクレーム セットの一部になります。システムの他のコンポーネント \(オペレーティング システム、ネットワーク スタック、ランタイム環境、アプリケーションなど\) もクレームの発生元になることがあります。また、リモート サービスが発生元になる場合もあります。 + +### 承認ポリシー + ID モデルでは、承認ポリシーの評価プロセスの一環としてクレームが生成されます。承認ポリシーは、既存のクレーム セット \(空の場合もあります\) を調べます。そして、既に存在するクレームやクレームが破棄された時点の追加情報に基づいて、別のクレームを追加する場合があります。これは、クレーム間のマッピングの基盤となります。システム内でのクレームの有無は、別のクレームを追加するかどうかという承認ポリシーの動作に影響します。 + + たとえば、システムを使用するさまざまなエンティティの誕生日が含まれたデータベースにアクセスできる承認ポリシーがあるとします。承認ポリシーは、この情報を使用して "Over18" というクレームをコンテキストに追加します。この Over18 クレームは、エンティティが 18 歳以上であるということ以外に、エンティティに関する情報を公開しません。"Over18" クレームの解釈は、このクレームのセマンティクスの認識によって異なります。クレームを追加した承認ポリシーは、何らかのレベルでこれらのセマンティクスを認識しています。ポリシー評価の結果として生成されたクレームを調べるコードにも、これらのセマンティクスが通知されます。 + + 特定の承認ポリシーを複数回評価することが必要になる場合があります。これは、他の承認ポリシーがクレームを追加したときに、該当の承認ポリシーがさらにクレームを追加する可能性があるためです。ID モデルは、適用されているすべての承認ポリシーがクレームをコンテキストに追加しなくなるまで、評価を続行するように設計されています。このように、承認ポリシーの評価を続行することにより、承認ポリシーに関して一定の評価順序を適用する必要性がなくなります。つまり、承認ポリシーを任意の順序で評価できます。たとえば、ポリシー A がクレーム B を追加した場合にのみ、ポリシー X がクレーム Z を追加するとします。この場合、X が先に評価されると、その時点ではクレーム Z は追加されません。その後、A が評価され、クレーム B が追加されます。次に、X の 2 回目の評価が行われ、この時点でクレーム Z が追加されます。 + + システムによっては多数の承認ポリシーが適用されている場合があります。 + +### キーを作成するマシン + 関連する承認ポリシーのグループを評価することは、キーを作成する機械を使用することに似ています。承認ポリシーがそれぞれ評価され、クレーム セットが生成されて、キーの形状が確立されていきます。キーの形状が完成すると、このキーを使用していくつかのロックを開いてみることができます。キーの形状は、承認マネージャーによって作成される "承認コンテキスト" に格納されます。 + +### 承認コンテキスト + 既に説明したように、承認マネージャーはさまざまな承認ポリシーを評価します。この評価の結果が承認コンテキスト \(一連のクレーム セットと関連する複数のプロパティ\) です。承認コンテキストを調べて、そのコンテキスト内に存在するクレームや、それらのさまざまなクレーム間の関係 \(発行側クレーム セットなど\) を確認し、最終的にリソースにアクセスするために満たす必要のある要件と比較できます。 + +### ロック + 承認コンテキスト \(クレーム セット\) がキーであるとすれば、保護された特定のリソースへのアクセスを許可するために満たす必要のある要件は、このキーが適合する必要のあるロックに相当します。ID モデルでは、このような要件を表現する方法は形式化されていませんが、クレームに基づくというシステムの特性により、これらの要件には、承認コンテキスト内のクレームと一部の必須のクレーム セットの比較が必ず含まれることになります。 + +### まとめ + ID モデルは、クレームの概念に基づいています。クレームはセットにグループ化され、承認コンテキストに集約されます。承認コンテキストは、承認マネージャーに関連付けられた 1 つ以上の承認ポリシーの評価結果であり、クレーム セットを含んでいます。これらのクレーム セットを調べて、アクセス要件が満たされているかどうか確認できます。ID モデルのさまざまな概念の関係を次の図に示します。 + + ![クレームと承認の管理](../../../../docs/framework/wcf/feature-details/media/xsi-recap.gif "xsi\_recap") + +## WCF と ID モデル + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、承認を実行するための基盤として ID モデル インフラストラクチャを使用します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、 クラスを使用することにより、*承認*ポリシーをサービスの一部として指定できます。このような承認ポリシーは、*"外部承認ポリシー"* と呼ばれ、ローカル ポリシーに基づいてクレーム処理を実行できます。また、リモート サービスとのやり取りによってクレーム処理を実行することもできます。 クラスによって表される承認マネージャーは、さまざまな種類の資格情報 \(トークン\) を認識する承認ポリシーと共に外部承認ポリシーを評価し、受信メッセージに適したクレームを使用して *"承認コンテキスト"* を作成します。承認コンテキストは、 クラスによって表されます。 + +## ID モデルのプログラミング + ID モデル拡張のプログラミングに使用するオブジェクト モデルを次の表に示します。これらのクラスはすべて、 名前空間または 名前空間にあります。 + +|クラス|説明| +|---------|--------| +|Authorization Component| インターフェイスを実装する ID モデル クラス。| +||単一の読み取り専用文字列プロパティ \(Id\) を提供するインターフェイス。このプロパティの値は、システム内でこのインターフェイスを実装するインスタンスごとに一意です。| +||0 個以上のプロパティを持つ一連の `ClaimSet` インスタンスを格納する*承認コンポーネント*。1 つ以上の承認ポリシーの評価結果です。| +||クレームの種類、権限、および値の組み合わせ。権限と値の部分は、クレームの種類によって制約されます。| +||抽象ベース クラス。`Claim` のインスタンスのコレクション。| +||シール クラス。`ClaimSet` クラスの実装。| +||抽象基本クラス。ポリシーの評価時に承認ポリシーに渡されます。| +||`IAuthorizationComponent` から派生し、承認ポリシーのクラスによって実装されるインターフェイス。| +||定義済みの権限値が格納された静的クラス。| + + 以下のクラスも ID モデルのプログラミングに使用しますが、 名前空間または 名前空間には含まれません。 + +|クラス|説明| +|---------|--------| +||サービスでの操作ごとにクレームに基づく承認チェックを実行するメソッド \(\) を提供するクラス。このクラスから派生し、メソッドをオーバーライドする必要があります。| +||承認に関係するサービスの動作に関連するさまざまなプロパティを提供するシール クラス。| +||現在実行中 \(または実行直前\) の操作のセキュリティ コンテキスト \(承認コンテキストなど\) を提供するクラス。このクラスのインスタンスは、 に含まれます。| + +### 重要なメンバー + 次のメンバーは、新しいクレームの種類を作成する際に一般的に使用されます。 + +|メンバー|説明| +|----------|--------| +||派生クラスは、このメソッドを実装して、サービスで操作を実行する前にクレームに基づくアクセス チェックを実行します。アクセス チェックの決定を行うときに、指定された 、または他の場所にあるすべての情報を確認できます。 が `true` を返した場合は、アクセスが許可され、操作を実行できるようになります。`CheckAccessCore` が `false` を返した場合は、アクセスが拒否され、操作は実行されません。例については、「[方法 : サービスで使用するカスタム承認マネージャーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md)」を参照してください。| +||サービスの を返します。承認決定は、 が行います。| +||サービスに指定されたカスタム承認ポリシーのコレクション。受信メッセージの資格情報に関連するポリシーに加え、これらのポリシーも評価されます。| + +## 参照 + + + + + + + + + + + [クレームとトークン](../../../../docs/framework/wcf/feature-details/claims-and-tokens.md) + [リソースへのアクセスのクレームと拒否](../../../../docs/framework/wcf/feature-details/claims-and-denying-access-to-resources.md) + [クレームの作成とリソース値](../../../../docs/framework/wcf/feature-details/claim-creation-and-resource-values.md) + [方法 : カスタム クレームを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-claim.md) + [方法 : クレームを比較する](../../../../docs/framework/wcf/extending/how-to-compare-claims.md) + [方法 : カスタム承認ポリシーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-authorization-policy.md) + [方法 : サービスで使用するカスタム承認マネージャーを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-authorization-manager-for-a-service.md) + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/mapping-between-json-and-xml.md b/docs/framework/wcf/feature-details/mapping-between-json-and-xml.md new file mode 100644 index 00000000000..9a6960e08b5 --- /dev/null +++ b/docs/framework/wcf/feature-details/mapping-between-json-and-xml.md @@ -0,0 +1,243 @@ +--- +title: "JSON と XML 間のマッピング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 22ee1f52-c708-4024-bbf0-572e0dae64af +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# JSON と XML 間のマッピング +リーダーとライターによって生成される、 JavaScript Object Notation (JSON) コンテンツを XML API を提供します。 JSON は、JavaScript のオブジェクト リテラルのサブセットを使用してデータをエンコードします。 リーダーとライターはこのファクトリによって生成される、ときにも使用 JSON コンテンツの送信または受信[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)]を使用してアプリケーション、 またはします。 + + JSON リーダーは JSON コンテンツで初期化されると、XML インスタンスで動作するテキストの XML リーダーと同じ方法で動作します。 テキストの XML リーダーでの一連の呼び出しによって特定の XML インスタンスが生成されると、JSON ライターは JSON コンテンツを書き出します。 このトピックでは、高度なシナリオで使用するために、この XML のインスタンスと JSON コンテンツ間のマッピングについて説明します。 + + 内部的には、JSON は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって処理される際に XML 情報セットとして表されます。 マッピングは論理上の処理であるため、通常はこのような内部表現を考慮する必要はありません。JSON は通常、メモリで物理的に XML に変換されたり、XML から JSON に変換されたりすることはありません。 マッピングとは、XML API を使用して JSON コンテンツにアクセスすることを意味します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]は、通常のシナリオである JSON を使用、 によって自動的にプラグインは、 動作、または、 該当する場合。 JSON と XML 情報セット間のマッピングを認識し、直接 JSON を処理してかのように動作します。 (使用可能であれば、 任意の XML リーダーまたはライターが XML を次のマッピングに従うという了解の下にします)。 + + 高度なシナリオでは、次のマッピングへの直接アクセスが必要になることがあります。 およびに頼ることがなく、独自の方法で JSON を逆シリアル化する場合に、これらのシナリオが発生する、 を処理する場合や、JSON を含むメッセージの直接の型。 JSON と XML 間のマッピングは、メッセージ ログにも使用されます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のメッセージ ログ機能を使用する場合、次のセクションで説明するマッピングに従って、JSON メッセージが XML としてログに記録されます。 + + マッピングの概念を明確にするために、次に JSON ドキュメントの例を示します。 + +``` +{"product":"pencil","price":12} +``` + + 前述のリーダーのいずれかを使用してこの JSON ドキュメントを読み取るには、使用の同じシーケンスを次の XML ドキュメントを読み取るを呼び出します。 + +``` + + pencil + 12 + +``` + + また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によってこの例の JSON メッセージが取得されてログに記録される場合は、先行ログの XML フラグメントを参照します。 + +## JSON と XML 情報セット間のマッピング + 正式には、マッピングは JSON の間で説明した[RFC 4627](http://go.microsoft.com/fwlink/?LinkId=98808) (を除く厳密でない、および一部の特定の制限を追加するその他の制限) XML 情報セット (といないテキスト形式の XML) として「 [XML Information Set](http://go.microsoft.com/fwlink/?LinkId=98809)します。 定義については、このトピックを参照してください*情報項目*と角かっこ [] でのフィールドです。 + + 空白の JSON ドキュメントは空白の XML ドキュメントにマップされ、空白の XML ドキュメントは空白の JSON ドキュメントにマップされます。 XML から JSON へのマッピングで、先行する空白およびドキュメント後続の空白は許可されません。 + + マッピングは、ドキュメント情報項目 (DII: Document Information Item) または要素情報項目 (EII: Element Information Item) のいずれか一方と JSON の間に定義されます。 EII、または DII の [document element] プロパティは、Root JSON Element と呼ばれます。 また、ドキュメント フラグメント (ルート要素を複数持つ XML) は、このマッピングではサポートされません。 + + 例 : 次のドキュメントがあるとします。 + + `` + + `42` + + また、次の要素があるとします。 + + `42` + + どちらにも JSON へのマッピングが存在します。 `root`> 要素は、どちらの場合も、Root JSON Element です。 + + また、DII の場合は次の点を考慮する必要があります。 + +- [children] 一覧には、除外する必要のある項目が含まれています。 JSON からマッピングされた XML を読み取るときは、この事実に依存しないでください。 + +- [children] 一覧には、注釈情報項目が保持されません。 + +- [children] 一覧には、DTD 情報項目が保持されません。 + +- [children] 一覧には、個人情報 (PI: Personal Information) 情報項目が保持されません (\ 宣言は PI 情報項目と見なされません)。 + +- [notations] セットは空です。 + +- [unparsed entities] セットは空です。 + + 例 : 次のドキュメントでは [children] が PI とコメントを保持するため、JSON へのマッピングが存在しません。 + + `` + + `` + + `42` + + Root JSON Element としての EII には次の特性があります。 + +- [local name] は値 "root" を持ちます。 + +- [namespace name] は値を持ちません。 + +- [prefix] は値を持ちません。 + +- [children] には、後述するように内部要素である EII、または文字情報項目 (CII: Character Information Item) のいずれか一方が含まれる場合と、どちらも含まれない場合がありますが、両方とも含まれることはありません。 + +- [attributes] には、次のオプションの属性情報項目 (AII: Attribute Information Item) が含まれる場合があります。 + +- 後述の JSON Type Attribute ("type")。 この属性は、マップされた XML で JSON 型 (文字列、数値、ブール値、オブジェクト、配列、または null) を保持するのに使用します。 + +- 後述の Data Contract Name Attribute ("__type")。 この属性は、JSON Type Attribute が存在し、その [normalized value] が "object" であるときにのみ存在します。 この属性は、派生型がシリアル化されたり、基本型が要求されたりするポリモーフィックな場合などに、`DataContractJsonSerializer` によりデータ コントラクトの型情報を保持するために使用されます。 `DataContractJsonSerializer` を使用していなければ、この属性はほとんどの場合に無視されます。 + +- XML 情報セットの仕様に規定されるように、[in-scope namespaces] には、"xml" から "http://www.w3.org/XML/1998/namespace" へのバインディングが含まれます。 + +- [children]、[attributes]、および[in-scope namespaces] は、あらかじめ指定した項目以外の項目を持つことができず、[namespace attributes] はメンバーを持つことができませんが、JSON からマップされた XML を読み取るときには、この事実に依存しないでください。 + + 例 : 次のドキュメントでは [namespace attributes] が空ではないため、JSON へのマッピングが存在しません。 + + `` + + `42` + + JSON Type Attribute としての AII には次の特性があります。 + +- [namespace name] は値を持ちません。 + +- [prefix] は値を持ちません。 + +- [local name] は "type" です。 + +- [normalized value] は、次のセクションで説明する型の値のいずれかになります。 + +- [specified] は `true` です。 + +- [attribute type] は値を持ちません。 + +- [references] は値を持ちません。 + + Data Contract Name Attribute としての AII には次の特性があります。 + +- [namespace name] は値を持ちません。 + +- [prefix] は値を持ちません。 + +- [local name] は "__type" (2 連続のアンダースコアの直後に "type") です。 + +- [normalized value] は、任意の有効な Unicode 文字列です。この文字列から JSON へのマッピングは、次のセクションで説明します。 + +- [specified] は `true` です。 + +- [attribute type] は値を持ちません。 + +- [references] は値を持ちません。 + + Root JSON Element に含まれる内部要素、またはその他の内部要素には、次の特性があります。 + +- 後述するように、[local name] は任意の値を持つことができます。 + +- [namespace name]、[prefix]、[children]、[attributes]、[namespace attributes]、および [in-scope namespaces] は、Root JSON Element と同じ規則に従います。 + + Root JSON Element および内部要素では、JSON Type Attribute により JSON へのマッピングと、[children] およびその解釈が定義されます。 この属性の [normalized value] では大文字と小文字が区別され、小文字を使用する必要があります。また、ここに空白を含めることはできません。 + +|`JSON Type Attribute` としての AII の [normalized value]|対応する EII の許可された [children]|JSON へのマッピング| +|---------------------------------------------------------|---------------------------------------------------|---------------------| +|`string` (または JSON 型 AII なし)

`string` および JSON 型 AII なしは同じです。`string` を既定値にします。

その結果、` string1` が JSON `string` "string1" にマップされます。|0 または複数個の Cii|JSON `string` (JSON RFC section 2.5)。 `char` はそれぞれ、CII の [character code] に対応する文字です。 CII が存在しない場合は、空の JSON `string` にマップされます。

例 : 次の要素は JSON フラグメントにマップされます。

`42`

JSON フラグメントは "42" です。

XML から JSON へのマッピングでは、エスケープする必要がある文字はエスケープ文字にマップされ、その他はすべて、エスケープされない文字にマップされます。 スラッシュ (/) 文字は特殊 – はエスケープする必要はありませんが (として書き出さ"\\/") です。

例 : 次の要素は JSON フラグメントにマップされます。

`the "da/ta"`

JSON フラグメントは"、 \\"da\\/ta\\""です。

JSON から XML へのマッピングでは、エスケープ文字およびエスケープされない文字が、対応する [character code] に正しくマップされます。

例 : JSON フラグメント "\u0041BC" が次の XML 要素にマップされます。

`ABC`

文字列は、XML にマップされない空白 (JSON RFC section 2 の 'ws') で囲むことができます。

例 : JSON フラグメント "ABC" (最初の二重引用符の前に空白があります) が次の XML 要素にマップされます。

`ABC`

XML の空白が、JSON の空白にマップされます。

例 : 次の XML 要素は JSON フラグメントにマップされます。

` A BC `

JSON フラグメントは " A BC " です。| +|`number`|1 個以上の CII|JSON `number` (JSON RFC section 2.4)。空白で囲まれている場合があります。 数値と空白の組み合わせに含まれる文字はそれぞれ、CII の [character code] に対応する文字です。

例 : 次の要素は JSON フラグメントにマップされます。

` 42`

JSON フラグメントは 42 です

(空白が保持されます)。| +|`boolean`|4 個または 5 個の CII (`true` または `false` に対応)。追加の空白の CII で囲まれている場合があります。|文字列 "true" に対応する CII シーケンスは、リテラルの `true` にマップされ、文字列 "false" に対応する CII シーケンスは、リテラルの `false` にマップされます。 囲んでいる空白は保持されます。

例 : 次の要素は JSON フラグメントにマップされます。

` false`

JSON フラグメントは `false` です。| +|`null`|いずれも許可されません。|リテラルの `null`。 JSON から XML へのマッピングでは、`null` は、XML にマップされない空白 (section 2 の 'ws') で囲まれる場合があります。

例 : 次の要素は JSON フラグメントにマップされます。

``

または

``

:

いずれの場合も、JSON フラグメントは `Null` です。| +|`object`|0 個以上の EII|JSON RFC section 2.2 にあるように、`begin-object` (左中かっこ) の直後に、後述するように各 EII のメンバー レコードが続きます。 EII が複数個存在する場合、メンバー レコードの間に値区切り記号 (コンマ) が配置されます。 最後尾には、end-object (右中かっこ) が置かれます。

例 : 次の要素は JSON フラグメントにマップされます。

\>

\>aaa\>

\>bbb\>

\>

JSON フラグメントは {"type1":"aaa","type2":"bbb"} です。

XML から JSON へのマッピングに Data Contract Type Attribute が存在する場合は、最初に追加のメンバー レコードが挿入されます。 その名前は Data Contract Type Attribute ("__type") の [local name] であり、その値はこの属性の [normalized value] です。 JSON から XML へのマッピングで、最初のメンバー レコードの名前は Data Contract Type Attribute の [local name] に逆に、(つまり、"\_ください (_t)")、対応する Data Contract Type Attribute がマップされた XML であるが、対応する EII は存在しません。 また、このような特定のマッピングが適用されるには、このメンバー レコードが最初に JSON オブジェクトに存在している必要があります。 これは、メンバー レコードの順序が重要ではない通常の JSON 処理とは異なっています。

例:

次の JSON フラグメントは XML にマップされます。

`{"__type":"Person","name":"John"}`

XML は次のコードです。

` John `

注意して、 \_AII ください (_t) が存在する場合があるない\_EII ください (_t)。

ただし、次の例に示すように、JSON での順序が逆になる場合があります。

{"name":"John「,」\_ください (_t)":"Person"}

このとき、対応する XML は次のとおりです。

` John <__type type="string">Person `

つまり、 \_AII ではない、EII に対応して特別な意味を通常どおりがください (_t) 停止します。

JSON 値にマップされるときの、AII の [normalized value] に対するエスケープ/エスケープ解除ルールは、このテーブルの "string" 行で指定された JSON 文字列に対するルールと同じです。

例:

``

これを前の例に適用すると、次の JSON にマップされます。

`{"__type":"\\abc"}`

Xml JSON へのマッピングからを最初の EII の [local name] することはできません"\_ください (_t)"です。

オブジェクト用の XML から JSON へのマッピングでは空白 (`ws`) が生成されることはなく、JSON から XML のマッピングでは空白が無視されます。

例 : 次の JSON フラグメントは XML 要素にマップされます。

{ "ccc" : "aaa", "ddd" :"bbb"}

XML 要素を、次のコードで示します。

` aaa bbb `| +ray'|0 個以上の EII|JSON RFC section 2.3 にあるように、begin-array (左角かっこ) の直後に、後述する各 EII の配列レコードが続きます。 EII が複数個存在する場合、配列レコードの間に値区切り記号 (コンマ) が配置されます。 最後尾には、end-array が置かれます。

例 : 次の XML 要素は JSON フラグメントにマップされます。

` aaa bbb `

JSON フラグメントは ["aaa","bbb"] です。

配列用の XML から JSON へのマッピングでは空白 (`ws`) が生成されることはなく、JSON から XML のマッピングでは空白が無視されます。

例 : JSON フラグメント

[ "aaa", "bbb"]

マップされる XML 要素は、次のとおりです。

` aaa bbb `| + + メンバー レコードの動作は次のとおりです。 + +- JSON RFC section 2.2 で規定されるように、内部要素の [local name] は `string` の `member` 部分にマップされます。 + + 例 : 次の要素は JSON フラグメントにマップされます。 + + `` + + `aaa` + + `` + + 次の JSON フラグメントが示されます。 + + `{"myLocalName":"aaa"}` + +- XML から JSON へのマッピングでは、JSON でエスケープする必要がある文字はエスケープされ、それ以外はエスケープされません。 "/" 文字は、エスケープする必要のない文字ですが、エスケープされます (JSON から XML へのマッピングではエスケープする必要はありません)。 これは、JSON の `DateTime` データに対する ASP.NET AJAX 形式をサポートするために必要な処理です。 + +- JSON から XML へのマッピングでは、すべての文字が (必要に応じて非エスケープ文字も含む) [local name] を生成する `string` を形成するために使用されます。 + +- 内部要素 [children] は `JSON Type Attribute` の場合と同じように、`Root JSON Element` に従って section 2.2 の値にマップされます。 EII の複数レベルの入れ子 (配列内の入れ子も含む) が許可されます。 + + 例 : 次の要素は JSON フラグメントにマップされます。 + + `` + + `myValue1` + + `2` + + `` + + `true` + + `` + + `` + + `` + + マップされる JSON フラグメントは次のとおりです。 + + `{"myLocalName1":"myValue1","myLocalName2":2,"myLocalName3":{"myNestedName1":true,"myNestedName2":null}}` + +> [!NOTE] +> 上記のマッピングには、XML エンコーディングの手順がありません。 したがって、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、キー名のすべての文字が XML 要素名の有効な文字である JSON ドキュメントのみをサポートします。 たとえば、JSON ドキュメント {"<":"a"} は、< が XML 要素の有効な名前ではないため、サポートされません。 + + 逆に、XML では有効であり、JSON では有効でない文字は、上記のマッピングに JSON のエスケープ/エスケープ解除の手順が含まれるため、問題が生じません。 + + Array Record の動作は次のとおりです。 + +- 内部要素の [local name] は "item" です。 + +- 内部要素の [children] は、Root JSON Element の場合と同じように、JSON Type Attribute に従って section 2.3 の値にマップされます。 EII の複数の入れ子 (オブジェクト内の入れ子も含む) が許可されます。 + + 例 : 次の要素は JSON フラグメントにマップされます。 + + `` + + `myValue1` + + `2` + + `` + + `true` + + `` + + `` + + `` + + JSON フラグメントは次のとおりです。 + + `["myValue1",2,[true,null]]` + +## 関連項目 + + + [スタンドアロン JSON のシリアル化](../../../../docs/framework/wcf/feature-details/stand-alone-json-serialization.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/media/0c9f9baa-2439-4ef9-92f4-43c242d85d0d.gif b/docs/framework/wcf/feature-details/media/0c9f9baa-2439-4ef9-92f4-43c242d85d0d.gif new file mode 100644 index 00000000000..f750073afd2 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/0c9f9baa-2439-4ef9-92f4-43c242d85d0d.gif differ diff --git a/docs/framework/wcf/feature-details/media/1c8618d4-0005-4022-beb6-32fd087a8c3c.gif b/docs/framework/wcf/feature-details/media/1c8618d4-0005-4022-beb6-32fd087a8c3c.gif new file mode 100644 index 00000000000..24f0403d21a Binary files /dev/null and b/docs/framework/wcf/feature-details/media/1c8618d4-0005-4022-beb6-32fd087a8c3c.gif differ diff --git a/docs/framework/wcf/feature-details/media/1fb10a61-7e1d-42f5-b1af-195bfee5b3c6.gif b/docs/framework/wcf/feature-details/media/1fb10a61-7e1d-42f5-b1af-195bfee5b3c6.gif new file mode 100644 index 00000000000..9b1c5d6fdbd Binary files /dev/null and b/docs/framework/wcf/feature-details/media/1fb10a61-7e1d-42f5-b1af-195bfee5b3c6.gif differ diff --git a/docs/framework/wcf/feature-details/media/4f3695e0-fb0b-4c5b-afac-75f8860d2bb0.jpg b/docs/framework/wcf/feature-details/media/4f3695e0-fb0b-4c5b-afac-75f8860d2bb0.jpg new file mode 100644 index 00000000000..e5feb9bc534 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/4f3695e0-fb0b-4c5b-afac-75f8860d2bb0.jpg differ diff --git a/docs/framework/wcf/feature-details/media/8f7b8968-899f-4538-a9e8-0eaa872a291c.gif b/docs/framework/wcf/feature-details/media/8f7b8968-899f-4538-a9e8-0eaa872a291c.gif new file mode 100644 index 00000000000..060789312c3 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/8f7b8968-899f-4538-a9e8-0eaa872a291c.gif differ diff --git a/docs/framework/wcf/feature-details/media/8fa2e931-0cfb-4aaa-9272-91d652b85d8d.gif b/docs/framework/wcf/feature-details/media/8fa2e931-0cfb-4aaa-9272-91d652b85d8d.gif new file mode 100644 index 00000000000..635026fa7a4 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/8fa2e931-0cfb-4aaa-9272-91d652b85d8d.gif differ diff --git a/docs/framework/wcf/feature-details/media/addactivity.JPG b/docs/framework/wcf/feature-details/media/addactivity.JPG new file mode 100644 index 00000000000..b7c9e178f84 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addactivity.JPG differ diff --git a/docs/framework/wcf/feature-details/media/addassign.png b/docs/framework/wcf/feature-details/media/addassign.png new file mode 100644 index 00000000000..8f151302fd8 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addassign.png differ diff --git a/docs/framework/wcf/feature-details/media/addcorrelationinitializers.png b/docs/framework/wcf/feature-details/media/addcorrelationinitializers.png new file mode 100644 index 00000000000..4fd2fc74ca0 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addcorrelationinitializers.png differ diff --git a/docs/framework/wcf/feature-details/media/addnewprojectdlg.JPG b/docs/framework/wcf/feature-details/media/addnewprojectdlg.JPG new file mode 100644 index 00000000000..df2a8734fcc Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addnewprojectdlg.JPG differ diff --git a/docs/framework/wcf/feature-details/media/addorderitemidvariable.png b/docs/framework/wcf/feature-details/media/addorderitemidvariable.png new file mode 100644 index 00000000000..22606fe0088 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addorderitemidvariable.png differ diff --git a/docs/framework/wcf/feature-details/media/addreceive2parameters.png b/docs/framework/wcf/feature-details/media/addreceive2parameters.png new file mode 100644 index 00000000000..cfbe0401f43 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addreceive2parameters.png differ diff --git a/docs/framework/wcf/feature-details/media/addservicereference.JPG b/docs/framework/wcf/feature-details/media/addservicereference.JPG new file mode 100644 index 00000000000..28bf95c811b Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addservicereference.JPG differ diff --git a/docs/framework/wcf/feature-details/media/addvariable.JPG b/docs/framework/wcf/feature-details/media/addvariable.JPG new file mode 100644 index 00000000000..effd02586f6 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addvariable.JPG differ diff --git a/docs/framework/wcf/feature-details/media/addvariables.gif b/docs/framework/wcf/feature-details/media/addvariables.gif new file mode 100644 index 00000000000..01e1e9b42c7 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addvariables.gif differ diff --git a/docs/framework/wcf/feature-details/media/addwfservice.JPG b/docs/framework/wcf/feature-details/media/addwfservice.JPG new file mode 100644 index 00000000000..a35193e789e Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addwfservice.JPG differ diff --git a/docs/framework/wcf/feature-details/media/addwriteline.JPG b/docs/framework/wcf/feature-details/media/addwriteline.JPG new file mode 100644 index 00000000000..29915dd7efb Binary files /dev/null and b/docs/framework/wcf/feature-details/media/addwriteline.JPG differ diff --git a/docs/framework/wcf/feature-details/media/afteraddingprinttransactioninfo.JPG b/docs/framework/wcf/feature-details/media/afteraddingprinttransactioninfo.JPG new file mode 100644 index 00000000000..2c47c489890 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/afteraddingprinttransactioninfo.JPG differ diff --git a/docs/framework/wcf/feature-details/media/afteraddingsbrwriteline.JPG b/docs/framework/wcf/feature-details/media/afteraddingsbrwriteline.JPG new file mode 100644 index 00000000000..cf51e73b4d5 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/afteraddingsbrwriteline.JPG differ diff --git a/docs/framework/wcf/feature-details/media/afteraddingwritelines.JPG b/docs/framework/wcf/feature-details/media/afteraddingwritelines.JPG new file mode 100644 index 00000000000..d06596fa2a6 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/afteraddingwritelines.JPG differ diff --git a/docs/framework/wcf/feature-details/media/appfabricconfiguration-general.gif b/docs/framework/wcf/feature-details/media/appfabricconfiguration-general.gif new file mode 100644 index 00000000000..2b0540598b8 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/appfabricconfiguration-general.gif differ diff --git a/docs/framework/wcf/feature-details/media/appfabricconfiguration-management.gif b/docs/framework/wcf/feature-details/media/appfabricconfiguration-management.gif new file mode 100644 index 00000000000..f9fc279fd4e Binary files /dev/null and b/docs/framework/wcf/feature-details/media/appfabricconfiguration-management.gif differ diff --git a/docs/framework/wcf/feature-details/media/appfabricconfiguration-monitoring.gif b/docs/framework/wcf/feature-details/media/appfabricconfiguration-monitoring.gif new file mode 100644 index 00000000000..8599325bf93 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/appfabricconfiguration-monitoring.gif differ diff --git a/docs/framework/wcf/feature-details/media/appfabricconfiguration-persistence.gif b/docs/framework/wcf/feature-details/media/appfabricconfiguration-persistence.gif new file mode 100644 index 00000000000..2504174585c Binary files /dev/null and b/docs/framework/wcf/feature-details/media/appfabricconfiguration-persistence.gif differ diff --git a/docs/framework/wcf/feature-details/media/appfabricconfiguration-security.gif b/docs/framework/wcf/feature-details/media/appfabricconfiguration-security.gif new file mode 100644 index 00000000000..2f74b2f32ca Binary files /dev/null and b/docs/framework/wcf/feature-details/media/appfabricconfiguration-security.gif differ diff --git a/docs/framework/wcf/feature-details/media/appfabricconfigurationautostart.gif b/docs/framework/wcf/feature-details/media/appfabricconfigurationautostart.gif new file mode 100644 index 00000000000..ebfcb239780 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/appfabricconfigurationautostart.gif differ diff --git a/docs/framework/wcf/feature-details/media/appfabricconfigurationthrottling.gif b/docs/framework/wcf/feature-details/media/appfabricconfigurationthrottling.gif new file mode 100644 index 00000000000..8616c992f55 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/appfabricconfigurationthrottling.gif differ diff --git a/docs/framework/wcf/feature-details/media/appfabricdashboard.gif b/docs/framework/wcf/feature-details/media/appfabricdashboard.gif new file mode 100644 index 00000000000..a0cb89bf74d Binary files /dev/null and b/docs/framework/wcf/feature-details/media/appfabricdashboard.gif differ diff --git a/docs/framework/wcf/feature-details/media/applicationserveraddcomps.jpg b/docs/framework/wcf/feature-details/media/applicationserveraddcomps.jpg new file mode 100644 index 00000000000..a4c27c81e1b Binary files /dev/null and b/docs/framework/wcf/feature-details/media/applicationserveraddcomps.jpg differ diff --git a/docs/framework/wcf/feature-details/media/argumentbind.JPG b/docs/framework/wcf/feature-details/media/argumentbind.JPG new file mode 100644 index 00000000000..668da648db7 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/argumentbind.JPG differ diff --git a/docs/framework/wcf/feature-details/media/aspnetdevservericon.JPG b/docs/framework/wcf/feature-details/media/aspnetdevservericon.JPG new file mode 100644 index 00000000000..81fb6564c7a Binary files /dev/null and b/docs/framework/wcf/feature-details/media/aspnetdevservericon.JPG differ diff --git a/docs/framework/wcf/feature-details/media/asrdlg.JPG b/docs/framework/wcf/feature-details/media/asrdlg.JPG new file mode 100644 index 00000000000..47975017450 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/asrdlg.JPG differ diff --git a/docs/framework/wcf/feature-details/media/b361a565-831c-4c10-90d7-66d8eeece0a1.gif b/docs/framework/wcf/feature-details/media/b361a565-831c-4c10-90d7-66d8eeece0a1.gif new file mode 100644 index 00000000000..77b209ffdd8 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/b361a565-831c-4c10-90d7-66d8eeece0a1.gif differ diff --git a/docs/framework/wcf/feature-details/media/cancreateinstance.JPG b/docs/framework/wcf/feature-details/media/cancreateinstance.JPG new file mode 100644 index 00000000000..751342073f8 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/cancreateinstance.JPG differ diff --git a/docs/framework/wcf/feature-details/media/checkmark.gif b/docs/framework/wcf/feature-details/media/checkmark.gif new file mode 100644 index 00000000000..dac5608968f Binary files /dev/null and b/docs/framework/wcf/feature-details/media/checkmark.gif differ diff --git a/docs/framework/wcf/feature-details/media/claimshierarchy.gif b/docs/framework/wcf/feature-details/media/claimshierarchy.gif new file mode 100644 index 00000000000..f72fc95b298 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/claimshierarchy.gif differ diff --git a/docs/framework/wcf/feature-details/media/clientaddcbswriteline.JPG b/docs/framework/wcf/feature-details/media/clientaddcbswriteline.JPG new file mode 100644 index 00000000000..5b9722e7bda Binary files /dev/null and b/docs/framework/wcf/feature-details/media/clientaddcbswriteline.JPG differ diff --git a/docs/framework/wcf/feature-details/media/clientaddwriteline.JPG b/docs/framework/wcf/feature-details/media/clientaddwriteline.JPG new file mode 100644 index 00000000000..52d57026377 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/clientaddwriteline.JPG differ diff --git a/docs/framework/wcf/feature-details/media/clientcompleteworkflow.jpg b/docs/framework/wcf/feature-details/media/clientcompleteworkflow.jpg new file mode 100644 index 00000000000..aa5c9470053 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/clientcompleteworkflow.jpg differ diff --git a/docs/framework/wcf/feature-details/media/clientreplymessagesettings.JPG b/docs/framework/wcf/feature-details/media/clientreplymessagesettings.JPG new file mode 100644 index 00000000000..cc8e9a53bc6 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/clientreplymessagesettings.JPG differ diff --git a/docs/framework/wcf/feature-details/media/clientsendsettings.JPG b/docs/framework/wcf/feature-details/media/clientsendsettings.JPG new file mode 100644 index 00000000000..60862a4f2e1 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/clientsendsettings.JPG differ diff --git a/docs/framework/wcf/feature-details/media/clientwithcertificate.gif b/docs/framework/wcf/feature-details/media/clientwithcertificate.gif new file mode 100644 index 00000000000..80d9a95ef12 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/clientwithcertificate.gif differ diff --git a/docs/framework/wcf/feature-details/media/completeclientwf.JPG b/docs/framework/wcf/feature-details/media/completeclientwf.JPG new file mode 100644 index 00000000000..ccede0f56f5 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/completeclientwf.JPG differ diff --git a/docs/framework/wcf/feature-details/media/correlateson.png b/docs/framework/wcf/feature-details/media/correlateson.png new file mode 100644 index 00000000000..7d40a08c17a Binary files /dev/null and b/docs/framework/wcf/feature-details/media/correlateson.png differ diff --git a/docs/framework/wcf/feature-details/media/correlatesondialog.jpg b/docs/framework/wcf/feature-details/media/correlatesondialog.jpg new file mode 100644 index 00000000000..44cddc6bf12 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/correlatesondialog.jpg differ diff --git a/docs/framework/wcf/feature-details/media/correlationinitializerdlg.jpg b/docs/framework/wcf/feature-details/media/correlationinitializerdlg.jpg new file mode 100644 index 00000000000..8a8547e5f53 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/correlationinitializerdlg.jpg differ diff --git a/docs/framework/wcf/feature-details/media/defaultworkflowservice.JPG b/docs/framework/wcf/feature-details/media/defaultworkflowservice.JPG new file mode 100644 index 00000000000..b5f34515111 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/defaultworkflowservice.JPG differ diff --git a/docs/framework/wcf/feature-details/media/defineoperation.JPG b/docs/framework/wcf/feature-details/media/defineoperation.JPG new file mode 100644 index 00000000000..eb72bfcfe7f Binary files /dev/null and b/docs/framework/wcf/feature-details/media/defineoperation.JPG differ diff --git a/docs/framework/wcf/feature-details/media/distributed-queue-figure.jpg b/docs/framework/wcf/feature-details/media/distributed-queue-figure.jpg new file mode 100644 index 00000000000..ad57331567b Binary files /dev/null and b/docs/framework/wcf/feature-details/media/distributed-queue-figure.jpg differ diff --git a/docs/framework/wcf/feature-details/media/echoactivity.JPG b/docs/framework/wcf/feature-details/media/echoactivity.JPG new file mode 100644 index 00000000000..52030cfcb46 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/echoactivity.JPG differ diff --git a/docs/framework/wcf/feature-details/media/f4157312-b17c-416c-a5ee-fa7b54db211b.gif b/docs/framework/wcf/feature-details/media/f4157312-b17c-416c-a5ee-fa7b54db211b.gif new file mode 100644 index 00000000000..d391b2e5622 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/f4157312-b17c-416c-a5ee-fa7b54db211b.gif differ diff --git a/docs/framework/wcf/feature-details/media/federatedsecurityinwcf.gif b/docs/framework/wcf/feature-details/media/federatedsecurityinwcf.gif new file mode 100644 index 00000000000..e25e8390612 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/federatedsecurityinwcf.gif differ diff --git a/docs/framework/wcf/feature-details/media/federationclienta.gif b/docs/framework/wcf/feature-details/media/federationclienta.gif new file mode 100644 index 00000000000..5a1896d038b Binary files /dev/null and b/docs/framework/wcf/feature-details/media/federationclienta.gif differ diff --git a/docs/framework/wcf/feature-details/media/hostingwcfwithaspnet.gif b/docs/framework/wcf/feature-details/media/hostingwcfwithaspnet.gif new file mode 100644 index 00000000000..364018172ec Binary files /dev/null and b/docs/framework/wcf/feature-details/media/hostingwcfwithaspnet.gif differ diff --git a/docs/framework/wcf/feature-details/media/iewcfhelppagewuri.JPG b/docs/framework/wcf/feature-details/media/iewcfhelppagewuri.JPG new file mode 100644 index 00000000000..9cb3ed66a87 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/iewcfhelppagewuri.JPG differ diff --git a/docs/framework/wcf/feature-details/media/instringvar.JPG b/docs/framework/wcf/feature-details/media/instringvar.JPG new file mode 100644 index 00000000000..115a59e5127 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/instringvar.JPG differ diff --git a/docs/framework/wcf/feature-details/media/knowntypes.png b/docs/framework/wcf/feature-details/media/knowntypes.png new file mode 100644 index 00000000000..ae1b9025a00 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/knowntypes.png differ diff --git a/docs/framework/wcf/feature-details/media/mg-addsslbinding.jpg b/docs/framework/wcf/feature-details/media/mg-addsslbinding.jpg new file mode 100644 index 00000000000..b1208d46297 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/mg-addsslbinding.jpg differ diff --git a/docs/framework/wcf/feature-details/media/mg-createselfsignedcert.jpg b/docs/framework/wcf/feature-details/media/mg-createselfsignedcert.jpg new file mode 100644 index 00000000000..942b215955d Binary files /dev/null and b/docs/framework/wcf/feature-details/media/mg-createselfsignedcert.jpg differ diff --git a/docs/framework/wcf/feature-details/media/mg-inetmgrhome.jpg b/docs/framework/wcf/feature-details/media/mg-inetmgrhome.jpg new file mode 100644 index 00000000000..1868c7f7651 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/mg-inetmgrhome.jpg differ diff --git a/docs/framework/wcf/feature-details/media/mg-mycert.jpg b/docs/framework/wcf/feature-details/media/mg-mycert.jpg new file mode 100644 index 00000000000..66f77aabe46 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/mg-mycert.jpg differ diff --git a/docs/framework/wcf/feature-details/media/mg-mycertbinding.jpg b/docs/framework/wcf/feature-details/media/mg-mycertbinding.jpg new file mode 100644 index 00000000000..af9a08dc149 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/mg-mycertbinding.jpg differ diff --git a/docs/framework/wcf/feature-details/media/mg-servercertificatewindow.jpg b/docs/framework/wcf/feature-details/media/mg-servercertificatewindow.jpg new file mode 100644 index 00000000000..4fb04536289 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/mg-servercertificatewindow.jpg differ diff --git a/docs/framework/wcf/feature-details/media/mg-sitebindingsdialog.jpg b/docs/framework/wcf/feature-details/media/mg-sitebindingsdialog.jpg new file mode 100644 index 00000000000..53951e551b3 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/mg-sitebindingsdialog.jpg differ diff --git a/docs/framework/wcf/feature-details/media/mg-sslsettingsforvdir.jpg b/docs/framework/wcf/feature-details/media/mg-sslsettingsforvdir.jpg new file mode 100644 index 00000000000..5ce537eedbc Binary files /dev/null and b/docs/framework/wcf/feature-details/media/mg-sslsettingsforvdir.jpg differ diff --git a/docs/framework/wcf/feature-details/media/mg-vdirsslsettings.JPG b/docs/framework/wcf/feature-details/media/mg-vdirsslsettings.JPG new file mode 100644 index 00000000000..ce40420b652 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/mg-vdirsslsettings.JPG differ diff --git a/docs/framework/wcf/feature-details/media/msservicestsb.gif b/docs/framework/wcf/feature-details/media/msservicestsb.gif new file mode 100644 index 00000000000..646b2c6ea65 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/msservicestsb.gif differ diff --git a/docs/framework/wcf/feature-details/media/multiplesetsofclaims.gif b/docs/framework/wcf/feature-details/media/multiplesetsofclaims.gif new file mode 100644 index 00000000000..66f973e89c4 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/multiplesetsofclaims.gif differ diff --git a/docs/framework/wcf/feature-details/media/myservice.gif b/docs/framework/wcf/feature-details/media/myservice.gif new file mode 100644 index 00000000000..e0ccc844795 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/myservice.gif differ diff --git a/docs/framework/wcf/feature-details/media/parameterscontent.jpg b/docs/framework/wcf/feature-details/media/parameterscontent.jpg new file mode 100644 index 00000000000..10066752623 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/parameterscontent.jpg differ diff --git a/docs/framework/wcf/feature-details/media/parameterscontent2.jpg b/docs/framework/wcf/feature-details/media/parameterscontent2.jpg new file mode 100644 index 00000000000..66bbeebf232 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/parameterscontent2.jpg differ diff --git a/docs/framework/wcf/feature-details/media/persisteddetail.gif b/docs/framework/wcf/feature-details/media/persisteddetail.gif new file mode 100644 index 00000000000..a595aee0268 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/persisteddetail.gif differ diff --git a/docs/framework/wcf/feature-details/media/projectpropertiesdlg.JPG b/docs/framework/wcf/feature-details/media/projectpropertiesdlg.JPG new file mode 100644 index 00000000000..5c0c2a9e6e9 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/projectpropertiesdlg.JPG differ diff --git a/docs/framework/wcf/feature-details/media/publicunsecured.gif b/docs/framework/wcf/feature-details/media/publicunsecured.gif new file mode 100644 index 00000000000..e9f2709d842 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/publicunsecured.gif differ diff --git a/docs/framework/wcf/feature-details/media/qconceptual-figure1c.gif b/docs/framework/wcf/feature-details/media/qconceptual-figure1c.gif new file mode 100644 index 00000000000..7c27420e58c Binary files /dev/null and b/docs/framework/wcf/feature-details/media/qconceptual-figure1c.gif differ diff --git a/docs/framework/wcf/feature-details/media/qwithtransactions-figure3.gif b/docs/framework/wcf/feature-details/media/qwithtransactions-figure3.gif new file mode 100644 index 00000000000..807e8932261 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/qwithtransactions-figure3.gif differ diff --git a/docs/framework/wcf/feature-details/media/receiveandsendreply.JPG b/docs/framework/wcf/feature-details/media/receiveandsendreply.JPG new file mode 100644 index 00000000000..d8fff4d28ef Binary files /dev/null and b/docs/framework/wcf/feature-details/media/receiveandsendreply.JPG differ diff --git a/docs/framework/wcf/feature-details/media/receivemessagesettings.JPG b/docs/framework/wcf/feature-details/media/receivemessagesettings.JPG new file mode 100644 index 00000000000..96273707dc8 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/receivemessagesettings.JPG differ diff --git a/docs/framework/wcf/feature-details/media/replymessagesettings.JPG b/docs/framework/wcf/feature-details/media/replymessagesettings.JPG new file mode 100644 index 00000000000..964c6b487d8 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/replymessagesettings.JPG differ diff --git a/docs/framework/wcf/feature-details/media/replytoadditemcontent.gif b/docs/framework/wcf/feature-details/media/replytoadditemcontent.gif new file mode 100644 index 00000000000..583613ba9fa Binary files /dev/null and b/docs/framework/wcf/feature-details/media/replytoadditemcontent.gif differ diff --git a/docs/framework/wcf/feature-details/media/resultassign.png b/docs/framework/wcf/feature-details/media/resultassign.png new file mode 100644 index 00000000000..da5cf4e9b5f Binary files /dev/null and b/docs/framework/wcf/feature-details/media/resultassign.png differ diff --git a/docs/framework/wcf/feature-details/media/scfc-turnfeaturesonoroff5s.gif b/docs/framework/wcf/feature-details/media/scfc-turnfeaturesonoroff5s.gif new file mode 100644 index 00000000000..b533327f4c7 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/scfc-turnfeaturesonoroff5s.gif differ diff --git a/docs/framework/wcf/feature-details/media/securedbyusername.gif b/docs/framework/wcf/feature-details/media/securedbyusername.gif new file mode 100644 index 00000000000..f2d125d6500 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/securedbyusername.gif differ diff --git a/docs/framework/wcf/feature-details/media/securedbywindows.gif b/docs/framework/wcf/feature-details/media/securedbywindows.gif new file mode 100644 index 00000000000..8deb431057d Binary files /dev/null and b/docs/framework/wcf/feature-details/media/securedbywindows.gif differ diff --git a/docs/framework/wcf/feature-details/media/sendmessagesettings.JPG b/docs/framework/wcf/feature-details/media/sendmessagesettings.JPG new file mode 100644 index 00000000000..ba76335fe5b Binary files /dev/null and b/docs/framework/wcf/feature-details/media/sendmessagesettings.JPG differ diff --git a/docs/framework/wcf/feature-details/media/serviceaddreceive.JPG b/docs/framework/wcf/feature-details/media/serviceaddreceive.JPG new file mode 100644 index 00000000000..43df81cd7f9 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/serviceaddreceive.JPG differ diff --git a/docs/framework/wcf/feature-details/media/servicecomplete.jpg b/docs/framework/wcf/feature-details/media/servicecomplete.jpg new file mode 100644 index 00000000000..6c5ece6f539 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/servicecomplete.jpg differ diff --git a/docs/framework/wcf/feature-details/media/setreceivecontent.png b/docs/framework/wcf/feature-details/media/setreceivecontent.png new file mode 100644 index 00000000000..fd870d5340a Binary files /dev/null and b/docs/framework/wcf/feature-details/media/setreceivecontent.png differ diff --git a/docs/framework/wcf/feature-details/media/setreceiveproperties.png b/docs/framework/wcf/feature-details/media/setreceiveproperties.png new file mode 100644 index 00000000000..e457748d337 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/setreceiveproperties.png differ diff --git a/docs/framework/wcf/feature-details/media/setreceiveproperties2.png b/docs/framework/wcf/feature-details/media/setreceiveproperties2.png new file mode 100644 index 00000000000..ed111e83612 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/setreceiveproperties2.png differ diff --git a/docs/framework/wcf/feature-details/media/setreply2properties.png b/docs/framework/wcf/feature-details/media/setreply2properties.png new file mode 100644 index 00000000000..f2af370bb54 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/setreply2properties.png differ diff --git a/docs/framework/wcf/feature-details/media/setreplycontent.png b/docs/framework/wcf/feature-details/media/setreplycontent.png new file mode 100644 index 00000000000..2fea9d67d27 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/setreplycontent.png differ diff --git a/docs/framework/wcf/feature-details/media/setreplyproperties.png b/docs/framework/wcf/feature-details/media/setreplyproperties.png new file mode 100644 index 00000000000..28e68052fa3 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/setreplyproperties.png differ diff --git a/docs/framework/wcf/feature-details/media/settingserialzier.png b/docs/framework/wcf/feature-details/media/settingserialzier.png new file mode 100644 index 00000000000..eedd02fd74a Binary files /dev/null and b/docs/framework/wcf/feature-details/media/settingserialzier.png differ diff --git a/docs/framework/wcf/feature-details/media/simpleworkflow.png b/docs/framework/wcf/feature-details/media/simpleworkflow.png new file mode 100644 index 00000000000..7b1dd9e6386 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/simpleworkflow.png differ diff --git a/docs/framework/wcf/feature-details/media/startaction.png b/docs/framework/wcf/feature-details/media/startaction.png new file mode 100644 index 00000000000..936b61dc8d0 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/startaction.png differ diff --git a/docs/framework/wcf/feature-details/media/startupprojects.JPG b/docs/framework/wcf/feature-details/media/startupprojects.JPG new file mode 100644 index 00000000000..3a0b7e6f3ce Binary files /dev/null and b/docs/framework/wcf/feature-details/media/startupprojects.JPG differ diff --git a/docs/framework/wcf/feature-details/media/sts-b.gif b/docs/framework/wcf/feature-details/media/sts-b.gif new file mode 100644 index 00000000000..da27f34bacf Binary files /dev/null and b/docs/framework/wcf/feature-details/media/sts-b.gif differ diff --git a/docs/framework/wcf/feature-details/media/testservice.gif b/docs/framework/wcf/feature-details/media/testservice.gif new file mode 100644 index 00000000000..7c53ab1c76e Binary files /dev/null and b/docs/framework/wcf/feature-details/media/testservice.gif differ diff --git a/docs/framework/wcf/feature-details/media/transactionmanagers.gif b/docs/framework/wcf/feature-details/media/transactionmanagers.gif new file mode 100644 index 00000000000..147bd510954 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/transactionmanagers.gif differ diff --git a/docs/framework/wcf/feature-details/media/trs.JPG b/docs/framework/wcf/feature-details/media/trs.JPG new file mode 100644 index 00000000000..bdb20d4a871 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/trs.JPG differ diff --git a/docs/framework/wcf/feature-details/media/trsvariables.JPG b/docs/framework/wcf/feature-details/media/trsvariables.JPG new file mode 100644 index 00000000000..b3c6c6edc8e Binary files /dev/null and b/docs/framework/wcf/feature-details/media/trsvariables.JPG differ diff --git a/docs/framework/wcf/feature-details/media/tsvariables.JPG b/docs/framework/wcf/feature-details/media/tsvariables.JPG new file mode 100644 index 00000000000..785237959be Binary files /dev/null and b/docs/framework/wcf/feature-details/media/tsvariables.JPG differ diff --git a/docs/framework/wcf/feature-details/media/typecollectionseditor.gif b/docs/framework/wcf/feature-details/media/typecollectionseditor.gif new file mode 100644 index 00000000000..146d6a02017 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/typecollectionseditor.gif differ diff --git a/docs/framework/wcf/feature-details/media/typicalfederatedsecurityscenario.gif b/docs/framework/wcf/feature-details/media/typicalfederatedsecurityscenario.gif new file mode 100644 index 00000000000..3e2d186fba6 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/typicalfederatedsecurityscenario.gif differ diff --git a/docs/framework/wcf/feature-details/media/unsecuredwebservice.gif b/docs/framework/wcf/feature-details/media/unsecuredwebservice.gif new file mode 100644 index 00000000000..fd4dfd3a720 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/unsecuredwebservice.gif differ diff --git a/docs/framework/wcf/feature-details/media/uselocalwebserver.png b/docs/framework/wcf/feature-details/media/uselocalwebserver.png new file mode 100644 index 00000000000..20f5e51afea Binary files /dev/null and b/docs/framework/wcf/feature-details/media/uselocalwebserver.png differ diff --git a/docs/framework/wcf/feature-details/media/wasarchitecture.gif b/docs/framework/wcf/feature-details/media/wasarchitecture.gif new file mode 100644 index 00000000000..1dce7853d48 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wasarchitecture.gif differ diff --git a/docs/framework/wcf/feature-details/media/wcfc-trunfeaturesonoroff3s.gif b/docs/framework/wcf/feature-details/media/wcfc-trunfeaturesonoroff3s.gif new file mode 100644 index 00000000000..e85f2bea8ae Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wcfc-trunfeaturesonoroff3s.gif differ diff --git a/docs/framework/wcf/feature-details/media/wcfc-trustedsubsystemc.gif b/docs/framework/wcf/feature-details/media/wcfc-trustedsubsystemc.gif new file mode 100644 index 00000000000..1382630a98e Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wcfc-trustedsubsystemc.gif differ diff --git a/docs/framework/wcf/feature-details/media/wcfc-turnfeaturesonoroffs.gif b/docs/framework/wcf/feature-details/media/wcfc-turnfeaturesonoroffs.gif new file mode 100644 index 00000000000..1e36fc9558f Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wcfc-turnfeaturesonoroffs.gif differ diff --git a/docs/framework/wcf/feature-details/media/wcfc-turningfeaturesonoroff2.gif b/docs/framework/wcf/feature-details/media/wcfc-turningfeaturesonoroff2.gif new file mode 100644 index 00000000000..b539dd42fca Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wcfc-turningfeaturesonoroff2.gif differ diff --git a/docs/framework/wcf/feature-details/media/wcfhelppate.JPG b/docs/framework/wcf/feature-details/media/wcfhelppate.JPG new file mode 100644 index 00000000000..96712493a3c Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wcfhelppate.JPG differ diff --git a/docs/framework/wcf/feature-details/media/wfdesignertoolbox.JPG b/docs/framework/wcf/feature-details/media/wfdesignertoolbox.JPG new file mode 100644 index 00000000000..0166fb16c73 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wfdesignertoolbox.JPG differ diff --git a/docs/framework/wcf/feature-details/media/wfhostopen.gif b/docs/framework/wcf/feature-details/media/wfhostopen.gif new file mode 100644 index 00000000000..be647f8422c Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wfhostopen.gif differ diff --git a/docs/framework/wcf/feature-details/media/wfhreceivemessagecci.gif b/docs/framework/wcf/feature-details/media/wfhreceivemessagecci.gif new file mode 100644 index 00000000000..df5447f6bc3 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wfhreceivemessagecci.gif differ diff --git a/docs/framework/wcf/feature-details/media/wfshhighlevel.gif b/docs/framework/wcf/feature-details/media/wfshhighlevel.gif new file mode 100644 index 00000000000..ad07e5c311b Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wfshhighlevel.gif differ diff --git a/docs/framework/wcf/feature-details/media/wfshmessageflow.gif b/docs/framework/wcf/feature-details/media/wfshmessageflow.gif new file mode 100644 index 00000000000..0f17f4a6315 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wfshmessageflow.gif differ diff --git a/docs/framework/wcf/feature-details/media/wfshreceivemessage.gif b/docs/framework/wcf/feature-details/media/wfshreceivemessage.gif new file mode 100644 index 00000000000..45d119cdf18 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/wfshreceivemessage.gif differ diff --git a/docs/framework/wcf/feature-details/media/workflowservicedefinitionidentityv1.bmp b/docs/framework/wcf/feature-details/media/workflowservicedefinitionidentityv1.bmp new file mode 100644 index 00000000000..95682e90874 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/workflowservicedefinitionidentityv1.bmp differ diff --git a/docs/framework/wcf/feature-details/media/workflowservicedefinitionidentityv2.bmp b/docs/framework/wcf/feature-details/media/workflowservicedefinitionidentityv2.bmp new file mode 100644 index 00000000000..97ee2004272 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/workflowservicedefinitionidentityv2.bmp differ diff --git a/docs/framework/wcf/feature-details/media/xsi-recap.gif b/docs/framework/wcf/feature-details/media/xsi-recap.gif new file mode 100644 index 00000000000..c7d8a034494 Binary files /dev/null and b/docs/framework/wcf/feature-details/media/xsi-recap.gif differ diff --git a/docs/framework/wcf/feature-details/message-filters.md b/docs/framework/wcf/feature-details/message-filters.md new file mode 100644 index 00000000000..4bbaf46946a --- /dev/null +++ b/docs/framework/wcf/feature-details/message-filters.md @@ -0,0 +1,163 @@ +--- +title: "メッセージ フィルター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ルーティング [WCF], メッセージ フィルター" +ms.assetid: cb33ba49-8b1f-4099-8acb-240404a46d9a +caps.latest.revision: 8 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 8 +--- +# メッセージ フィルター +コンテンツ ベースのルーティングを実装する場合、ルーティング サービスは、アドレス、エンドポイント名、特定の XPath ステートメントなど、メッセージの特定のセクションを確認する 実装を使用します。 [!INCLUDE[netfx_current_short](../../../../includes/netfx-current-short-md.md)] に付属のメッセージ フィルターの中にニーズを満たすものがない場合は、 基本クラスの新しい実装を作成することで、カスタム フィルターを作成できます。 + + ルーティング サービスを構成する場合、**MessageFilter** の型と、メッセージ内の検索に使用する特定の文字列値など、フィルターの作成に必要なサポート データを記述するフィルター要素 \( オブジェクト\) を定義する必要があります。 フィルター要素を作成しても、個々のメッセージ フィルターが定義されるだけです。フィルターを使用してメッセージを評価およびルーティングするには、フィルター テーブル \(\) を定義する必要もあります。 + + フィルター テーブル内の各エントリは、特定のフィルター要素を参照し、メッセージがフィルターに一致した場合にメッセージのルーティング先となるクライアント エンドポイントを指定します。 フィルター テーブルのエントリでは、バックアップ エンドポイントのコレクション \(\) を指定することもできます。このコレクションは、プライマリ エンドポイントへの送信時に転送エラーが発生した場合に、メッセージの転送先となるエンドポイントのリストを定義します。 それらのエンドポイントのいずれかで転送が成功するまで、指定された順番でバックアップ エンドポイントへの転送が試行されます。 + +## メッセージ フィルター + ルーティング サービスが使用するメッセージ フィルターは、メッセージの送信先の名前、SOAP アクション、メッセージの送信先のアドレスまたはアドレス プレフィックスの評価など、一般的なメッセージ選択機能を提供します。 フィルターに `AND` 条件を付けて、メッセージが両方のフィルターに一致した場合は、特定のエンドポイントにのみルーティングされるように指定することもできます。 また、 の独自の実装を作成することで、カスタム フィルターを作成することもできます。 + + 次の表に、ルーティング サービスが使用する 、そのメッセージ フィルターを実装するクラス、および必須の パラメーターを示します。 + +|フィルターの型|説明|フィルター データの意味|フィルターの例| +|-------------|--------|------------------|-------------| +|動作| クラスを使用して、特定のアクションを含むメッセージを照合します。|フィルター処理するアクション。|\| +|EndpointAddress| クラスを \=\= `true` と組み合わせて使用して、特定のアドレスを含むメッセージを照合します。|フィルター処理するアドレス \(To ヘッダー\)。|\| +|EndpointAddressPrefix| クラスを \=\= `true` と組み合わせて、特定のアドレス プレフィックスを含むメッセージを照合します。|最長プレフィックス一致を使用してフィルター処理するアドレス。|\| +|And|常に両方の条件を評価してから結果を返す クラスを使用します。|filterData は使用されません。代わりに、filter1 および filter2 には、対応するメッセージ フィルターの名前が \(同じくテーブル内に\) あるので、これらを **AND** で連結します。|\| +|Custom| クラスを拡張し、文字列を受け取るコンストラクターを持つユーザー定義の型。|customType 属性は、作成するクラスの完全修飾型名で、filterData は、フィルターの作成時にコンストラクターに渡す文字列です。|\| +|EndpointName| クラスを使用して、メッセージを受信したサービス エンドポイントの名前を基にメッセージを照合します。|サービス エンドポイントの名前 \(例: "serviceEndpoint1"\)。これは、ルーティング サービスで公開されているエンドポイントのいずれかである必要があります。|\| +|MatchAll| クラスを使用します。 このフィルターは、すべての着信メッセージを照合します。|filterData は使用されません。 このフィルターは、常にすべてのメッセージを照合します。|\| +|XPath| クラスを使用して、メッセージ内の特定の XPath クエリを照合します。|メッセージの照合時に使用する XPath クエリ。|\| + + 次の例では、XPath、EndpointName、および PrefixEndpointAddress メッセージ フィルターを使用するフィルター エントリを定義しています。 また、この例では、RoundRobinFilter1 エントリと RoundRobinFilter2 エントリに対するカスタム フィルターの使用方法も示しています。 + +```xml + + + + + + + + +``` + +> [!NOTE] +> 単にフィルターを定義しただけでは、そのフィルターに対してメッセージが評価されるとは限りません。 フィルターをフィルター テーブルに追加する必要があります。テーブルに追加することで、ルーティング サービスが公開するサービス エンドポイントに関連付けられます。 + +### 名前空間テーブル + XPath フィルターを使用すると、XPath クエリを含むフィルター データは、名前空間を使用するため、非常に大きくなることがあります。 この問題を軽減するために、ルーティング サービスでは、名前空間テーブルを使用して、独自の名前空間プレフィックスを定義できるようにしています。 + + 名前空間テーブルは、XPath で使用できる一般的な名前空間の名前空間プレフィックスを定義する オブジェクトのコレクションです。 以下は、名前空間テーブルに格納されている既定の名前空間およびプレフィックスです。 + +|プレフィックス|Namespace| +|-------------|---------------| +|s11|http:\/\/schemas.xmlsoap.org\/soap\/envelope| +|s12|http:\/\/www.w3.org\/2003\/05\/soap\-envelope| +|wsaAugust2004|http:\/\/schemas.xmlsoap.org\/ws\/2004\/08\/addressing| +|wsa10|http:\/\/www.w3.org\/2005\/08\/addressing| +|sm|http:\/\/schemas.microsoft.com\/serviceModel\/2004\/05\/xpathfunctions| +|tempuri|http:\/\/tempuri.org| +|ser|http:\/\/schemas.microsoft.com\/2003\/10\/Serialization| + + XPath クエリに特定の名前空間を使用することがわかっている場合は、その名前空間を一意の名前空間プレフィックスと併せて名前空間テーブルに追加し、完全名前空間ではなく、プレフィックスを XPath クエリで使用できます。 次の例では、名前空間 "http:\/\/my.custom.namespace" に対して "custom" というプレフィックスを定義し、 これを filterData 内の XPath クエリで使用しています。 + +```xml + + + + + + + +``` + +## フィルター テーブル + 各フィルター要素では、メッセージに適用できる論理比較が定義されますが、フィルター テーブルでは、フィルター要素と送信先クライアント エンドポイントが関連付けられます。 フィルター テーブルは、フィルター、プライマリの送信先エンドポイント、および代替のバックアップ エンドポイントのリスト間の関連付けを定義する オブジェクトの名前付きコレクションです。 フィルター テーブル エントリでは、必要に応じて、各フィルター条件に優先度を指定することもできます。 次の例では、まず、2 つのフィルターを定義し、各フィルターを送信先エンドポイントに関連付けるフィルター テーブルを定義しています。 + +```xml + + + + + + + + + + + +
+
+
+ +``` + +### フィルター評価の優先度 + 既定では、フィルター テーブルのすべてのエントリが同時に評価され、評価対象のメッセージは、一致するフィルター エントリに関連付けられているエンドポイントにルーティングされます。 複数のフィルターが `true` に評価され、メッセージが一方向または双方向である場合は、メッセージが、一致するすべてのフィルターのエンドポイントにマルチキャストされます。 要求\/応答メッセージは、クライアントに返すことができる応答が 1 つのみであるため、マルチキャストできません。 + + 各フィルターに優先度レベルを指定することで、より複雑なルーティング ロジックを実装できます。ルーティング サービスは、優先度レベルが最も高いフィルターをすべて最初に評価します。 メッセージがこのレベルのフィルターに一致した場合、優先度がこれよりも低いフィルターは処理されません。 たとえば、一方向の受信メッセージは、最初に、優先度が 2 であるすべてのフィルターに対して評価されるとします。 この優先度レベルのどのフィルターにもメッセージが一致しなかった場合は、次に、優先度が 1 のフィルターと比較されます。 優先度 1 のフィルターのうち、2 つがメッセージに一致した場合、メッセージは、一方向のメッセージであるため、両方の送信先エンドポイントにルーティングされます。 優先度 1 のフィルターの中に一致するものが見つかったため、優先度が 0 のフィルターは評価されません。 + +> [!NOTE] +> 優先度が指定されていない場合は、既定の優先度の 0 が使用されます。 + + 次の例では、フィルター テーブルを定義しています。このテーブルでは、テーブルで参照しているフィルターに優先度 2、1、および 0 を指定しています。 + +```xml + + + + + + + + + +``` + + 上記の例では、メッセージが XPathFilter に一致すると、roundingCalcEndpoint にルーティングされます。また、その他のフィルターはすべて、これよりも優先度が低いため、テーブル内の他のフィルターは評価されません。 ただし、メッセージが XPathFilter に一致しなかった場合は、次に優先度が低いすべてのフィルター、つまり、EndpointNameFilter と PrefixAddressFilter に対してメッセージが評価されます。 + +> [!NOTE] +> 可能な場合は、優先度の評価によってパフォーマンスが低下する可能性があるため、優先度を指定する代わりに、排他的なフィルターを使用してください。 + +### バックアップ リスト + フィルター テーブルの各フィルターには、必要に応じて、バックアップ リストを指定できます。バックアップ リストは、エンドポイントの名前付きコレクション \(\) です。 このコレクションには、 に指定されているプライマリ エンドポイントへの送信時に が発生した場合に、メッセージの転送先となるエンドポイントの順序指定されたリストが保持されます。 次の例では、2 つのエンドポイントを保持している "backupServiceEndpoints" という名前のバックアップ リストを定義しています。 + +```xml + + + + + + + + + + + +``` + + 上記の例では、プライマリ エンドポイント "Destination" への送信が失敗した場合、ルーティング サービスは、シーケンス内の各エンドポイントへの送信を試みます。まず、backupServiceQueue への送信を試み、backupServiceQueue への送信が失敗した場合は、alternateServiceQueue への送信を試みます。 すべてのバックアップ エンドポイントへの送信が失敗した場合は、エラーが返されます。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/message-security-in-wcf.md b/docs/framework/wcf/feature-details/message-security-in-wcf.md new file mode 100644 index 00000000000..a35fd624438 --- /dev/null +++ b/docs/framework/wcf/feature-details/message-security-in-wcf.md @@ -0,0 +1,72 @@ +--- +title: "WCF のメッセージのセキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a80efb59-591a-4a37-bb3c-8fffa6ca0b7d +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# WCF のメッセージのセキュリティ +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、セキュリティを提供する 2 つの主なモード \(`Transport` および `Message`\) と、この 2 つを組み合わせた 3 番目のモード \(`TransportWithMessageCredential`\) があります。ここでは、メッセージ セキュリティとその必要性について説明します。 + +## メッセージ セキュリティとは + メッセージ セキュリティでは、メッセージをセキュリティで保護するために WS\-Security 仕様を使用します。WS\-Security 仕様では、トランスポート レベルではなく、SOAP メッセージ レベルで機密性、整合性、および認証を確保するための、SOAP メッセージングの機能拡張が規定されています。 + + 簡単に言えば、メッセージ セキュリティでは、メッセージごとにセキュリティ資格情報とクレームが署名や暗号化などのメッセージ保護措置と共にカプセル化さるという点で、トランスポート セキュリティと異なります。メッセージの内容を変更してメッセージに直接セキュリティを適用することによって、セキュリティで保護されたメッセージは、セキュリティ面で自己完結する形になります。これによって、トランスポート セキュリティでは実現できないシナリオが可能になります。 + +## メッセージ セキュリティを使用する理由 + メッセージ レベルのセキュリティでは、すべてのセキュリティ情報がメッセージ内にカプセル化されます。トランスポート レベルのセキュリティではなく、メッセージ レベルのセキュリティを使用してメッセージをセキュリティで保護することによって、次の利点を得ることができます。 + +- エンドツーエンドのセキュリティ。SSL \(Secure Sockets Layer\) などのトランスポート セキュリティは、通信が Point\-to\-Point の場合にのみメッセージを保護します。メッセージが最終の受信者に到達する前に 1 つ以上の SOAP 中継局 \(ルーターなど\) にルーティングされる場合、中継局でネットワークからメッセージが読み取られると、そのメッセージ自体は保護されない状態になります。また、クライアントの認証情報は最初の中継局しか使用できず、必要に応じて帯域外の方法で、最終の受信者にその情報を再度転送する必要があります。これは、経路全体で各ホップ間に SSL セキュリティを使用している場合にも当てはまります。メッセージ セキュリティはメッセージに直接作用し、メッセージ内の XML をセキュリティで保護するので、メッセージが最終の受信者に到達するまでに経由する中継局の数に関係なく、メッセージをセキュリティで保護できます。これによって、真の意味でエンド ツー エンドのセキュリティ シナリオが実現します。 + +- 柔軟性の向上。メッセージ全体ではなく、メッセージの一部を署名または暗号化できます。つまり、中継局は、その中継局に対して用意されたメッセージの一部を確認できます。メッセージ内の情報の一部を中継局に渡す必要があり、メッセージの改ざんを確実に防止する必要もある場合は、メッセージを暗号化せずに署名だけを行うことができます。署名はメッセージの一部なので、最終の受信者は受信メッセージ内の情報が元のままの状態であることを確認できます。シナリオの 1 つとして、Action ヘッダーの値に従ってメッセージをルーティングする SOAP 中継局サービスが考えられます。既定では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でメッセージ セキュリティを使用した場合、Action 値は暗号化されず、署名されます。この情報はすべての中継局で使用できますが、変更はできなくなります。 + +- 複数のトランスポートに対するサポート。複数のトランスポートに対するサポート : セキュリティ用のプロトコルに依存することなく、名前付きパイプ、TCP などの複数の異なるトランスポートを経由して、セキュリティで保護されたメッセージを送信できます。トランスポート レベルのセキュリティでは、すべてのセキュリティ情報の有効範囲が 1 つの特定のトランスポート接続に限定されるので、メッセージの内容からその情報を使用することはできません。メッセージ セキュリティでは、メッセージの送信に使用するトランスポートの種類に関係なく、メッセージがセキュリティで保護されます。セキュリティ コンテキストはメッセージの内部に直接埋め込まれます。 + +- 資格情報とクレームのセットを広範囲にサポート。メッセージ セキュリティは、SOAP メッセージの内部で任意の種類のクレームを送信できる拡張可能なフレームワークを提供する WS\-Security 仕様に基づいています。トランスポート セキュリティとは異なり、使用できる認証機構またはクレームはトランスポートの機能によって制限されません。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のメッセージ セキュリティには、複数の種類の認証とクレームの送信があります。必要に応じて、追加の種類がサポートされるように拡張できます。このため、たとえば、フェデレーション資格情報シナリオは、メッセージ セキュリティなしでは実現できません。WCF がサポートするフェデレーション シナリオ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md)」を参照してください。 + +## メッセージ セキュリティとトランスポート セキュリティの比較 + +### トランスポート レベルのセキュリティの利点と欠点 + トランスポート セキュリティの利点は次のとおりです。 + +- 通信元と通信先では XML レベルのセキュリティ概念を理解する必要がありません。このため、たとえば、通信のセキュリティ保護に HTTPS が使用されている場合に相互運用性が向上します。 + +- パフォーマンスが全般的に向上します。 + +- ハードウェア アクセラレータを使用できます。 + +- ストリーミングが可能です。 + + トランスポート セキュリティの欠点は次のとおりです。 + +- セキュリティが提供されるのはホップからホップのみです。 + +- 資格情報のセットが制限され、拡張はできません。 + +- トランスポートに依存します。 + +### メッセージ レベルのセキュリティの欠点 + メッセージ セキュリティの欠点は次のとおりです。 + +- パフォーマンスがトランスポート セキュリティより劣ります。 + +- メッセージ ストリーミングを使用できません。 + +- XML レベルのセキュリティ機構の実装と WS\-Security 仕様のサポートが必要です。これは、相互運用性に影響する可能性があります。 + +## 参照 + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/transport-security.md) + [方法 : トランスポート セキュリティとメッセージ資格情報を使用する](../../../../docs/framework/wcf/feature-details/how-to-use-transport-security-and-message-credentials.md) + [Microsoft Patterns and Practices, Chapter 3: Implementing Transport and Message Layer Security](http://go.microsoft.com/fwlink/?LinkId=88897) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/message-security-with-a-certificate-client.md b/docs/framework/wcf/feature-details/message-security-with-a-certificate-client.md new file mode 100644 index 00000000000..45823601656 --- /dev/null +++ b/docs/framework/wcf/feature-details/message-security-with-a-certificate-client.md @@ -0,0 +1,154 @@ +--- +title: "メッセージ セキュリティと証明書クライアント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 99770573-c815-4428-a38c-e4335c8bd7ce +caps.latest.revision: 16 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 16 +--- +# メッセージ セキュリティと証明書クライアント +次のシナリオでは、メッセージ セキュリティ モードを使用して保護されている [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントおよびサービスを示します。クライアントとサービスは、どちらも証明書を使用して認証されます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][分散アプリケーションのセキュリティ](../../../../docs/framework/wcf/feature-details/distributed-application-security.md). + + サンプル アプリケーションについては、「[メッセージ セキュリティ証明書](../../../../docs/framework/wcf/samples/message-security-certificate.md)」を参照してください。 + + ![証明書を持つクライアント](../../../../docs/framework/wcf/feature-details/media/clientwithcertificate.gif "ClientWithCertificate") + +|特性|説明| +|--------|--------| +|セキュリティ モード|メッセージ| +|相互運用性|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のみ| +|認証 \(サーバー\)|サービス証明書を使用| +|認証 \(クライアント\)|クライアント証明書を使用| +|整合性|○| +|機密性|○| +|トランスポート|HTTP| +|バインディング|| + +## サービス + 次のコードと構成は、別々に実行します。以下のいずれかを実行します。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成しますが、エンドポイントを定義しません。 + +### コード + 次のコードは、メッセージ セキュリティを使用するサービス エンドポイントを作成し、セキュリティで保護されたコンテキストを確立する方法を示しています。 + + [!code-csharp[C_SecurityScenarios#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#10)] + [!code-vb[C_SecurityScenarios#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#10)] + +### 構成 + コードの代わりに次の構成を使用できます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## クライアント + 次のコードと構成は、別々に実行します。以下のいずれかの操作を行います。 + +- コード \(およびクライアント コード\) を使用してスタンドアロン クライアントを作成します。 + +- エンドポイント アドレスを定義しないクライアントを作成します。代わりに、引数として構成名を受け取るクライアント コンストラクターを使用する。次に例を示します。 + + [!code-csharp[C_SecurityScenarios#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#0)] + [!code-vb[C_SecurityScenarios#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#0)] + +### コード + クライアントを作成する場合のコード例を次に示します。バインディングではメッセージ モード セキュリティを使用し、クライアント資格情報の種類は `Certificate` に設定します。 + + [!code-csharp[C_SecurityScenarios#17](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#17)] + [!code-vb[C_SecurityScenarios#17](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#17)] + +### 構成 + 次の構成は、エンドポイントの動作を使用してクライアント証明書を指定します。証明書の詳細については、「[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。また、コード内で \<`identity`\> 要素を使用して、予想されるサーバー ID のドメイン ネーム システム \(DNS: Domain Name System\) を指定します。ID [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」を参照してください。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/message-security-with-a-user-name-client.md b/docs/framework/wcf/feature-details/message-security-with-a-user-name-client.md new file mode 100644 index 00000000000..150780f11bb --- /dev/null +++ b/docs/framework/wcf/feature-details/message-security-with-a-user-name-client.md @@ -0,0 +1,137 @@ +--- +title: "ユーザー名クライアントを使用したメッセージ セキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 36335cb9-76b8-4443-92c7-44f081eabb21 +caps.latest.revision: 15 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 15 +--- +# ユーザー名クライアントを使用したメッセージ セキュリティ +メッセージ レベルのセキュリティで保護された [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスとクライアントを次の図に示します。サービスは X.509 証明書を使用して認証されます。クライアントはユーザー名とパスワードを使用して認証されます。 + + サンプル アプリケーションについては、「[メッセージ セキュリティ ユーザー名](../../../../docs/framework/wcf/samples/message-security-user-name.md)」を参照してください。 + + ![ユーザー名認証を使用する場合のメッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/media/1fb10a61-7e1d-42f5-b1af-195bfee5b3c6.gif "1fb10a61\-7e1d\-42f5\-b1af\-195bfee5b3c6") + +|特性|説明| +|--------|--------| +|セキュリティ モード|メッセージ| +|相互運用性|[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のみ| +|認証 \(サーバー\)|初期ネゴシエーションにはサーバー認証が必要| +|認証 \(クライアント\)|ユーザー名\/パスワード| +|整合性|はい、共有のセキュリティ コンテキストを使用します| +|機密性|はい、共有のセキュリティ コンテキストを使用します| +|トランスポート|HTTP| +|バインディング|| + +## サービス + 次のコードと構成は、別々に実行します。以下のいずれかを実行します。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成しますが、エンドポイントを定義しません。 + +### コード + 次のコードは、メッセージ セキュリティを使用するサービス エンドポイントの作成方法を示します。 + + [!code-csharp[C_SecurityScenarios#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#9)] + [!code-vb[C_SecurityScenarios#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#9)] + +### 構成 + コードの代わりに次の構成を使用できます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## クライアント + +### コード + クライアントを作成する場合のコード例を次に示します。バインディングはメッセージ モード セキュリティに対して行い、クライアント資格情報の種類は `UserName` に設定します。ユーザー名とパスワードの指定はコードを使用する場合に限られます \(構成可能ではありません\)。ユーザー名とパスワードを返すコードは、アプリケーション レベルで実行される必要があるため、ここには示しません。たとえば、Windows フォーム ダイアログ ボックスを使用してユーザーにデータを照会します。 + + [!code-csharp[C_SecurityScenarios#16](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#16)] + [!code-vb[C_SecurityScenarios#16](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#16)] + +### 構成 + クライアントを構成する場合のコード例を次に示します。バインディングはメッセージ モード セキュリティに対して行い、クライアント資格情報の種類は `UserName` に設定します。ユーザー名とパスワードの指定はコードを使用する場合に限られます \(構成可能ではありません\)。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [メッセージ セキュリティ ユーザー名](../../../../docs/framework/wcf/samples/message-security-user-name.md) + [サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [\](../../../../docs/framework/configure-apps/file-schema/wcf/identity.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/message-security-with-a-windows-client-without-credential-negotiation.md b/docs/framework/wcf/feature-details/message-security-with-a-windows-client-without-credential-negotiation.md new file mode 100644 index 00000000000..d92b6159e27 --- /dev/null +++ b/docs/framework/wcf/feature-details/message-security-with-a-windows-client-without-credential-negotiation.md @@ -0,0 +1,156 @@ +--- +title: "資格情報ネゴシエーションを使用しない Windows クライアントを使用するメッセージ セキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fc07a26c-cbee-41c5-8fb0-329085fef749 +caps.latest.revision: 18 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 18 +--- +# 資格情報ネゴシエーションを使用しない Windows クライアントを使用するメッセージ セキュリティ +次のシナリオは、Kerberos プロトコルによって保護される [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のクライアントとサービスを示します。 + + サービスとクライアントは、いずれも同じドメインまたは信頼できるドメインに配置されています。 + +> [!NOTE] +> 「[Windows クライアントとのメッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/message-security-with-a-windows-client.md)」と異なり、このシナリオでは、アプリケーション メッセージを送信する前にサービスの資格情報をサービスとネゴシエートしません。 また、このシナリオでは Kerberos プロトコルを使用するので、Windows ドメイン環境が必要になります。 + + ![資格情報ネゴシエーションを使用しない場合のメッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/media/0c9f9baa-2439-4ef9-92f4-43c242d85d0d.gif "0c9f9baa\-2439\-4ef9\-92f4\-43c242d85d0d") + +|特徴|説明| +|--------|--------| +|セキュリティ モード|メッセージ| +|相互運用性|○ Kerberos トークン プロファイル互換クライアントを使用する WS\-Security| +|認証 \(サーバー\)|サーバーとクライアントの相互認証| +|認証 \(クライアント\)|サーバーとクライアントの相互認証| +|整合性|はい| +|機密性|はい| +|Transport|HTTP| +|バインディング|| + +## サービス + 次のコードと構成は、別々に実行します。 次のいずれかの操作を行います。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成しますが、エンドポイントを定義しません。 + +### コード + 次のコードは、メッセージ セキュリティを使用するサービス エンドポイントを作成します。 このコードは、サービス資格情報のネゴシエーションとセキュリティ コンテキスト トークン \(SCT\) の確立を無効にします。 + +> [!NOTE] +> ネゴシエートせずに Windows の資格情報を使用するには、サービスのユーザー アカウントが、Active Directory ドメインを使用して登録されたサービス プリンシパル名 \(SPN\) にアクセスする必要があります。 これは次の 2 つの方法で実行できます。 + +1. `NetworkService` アカウントまたは `LocalSystem` アカウントを使用してサービスを実行します。 これらのアカウントは、コンピューターが Active Directory ドメインに参加したときに確立されたコンピューターの SPN にアクセスできるため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は適切な SPN 要素をサービスのメタデータ \(Web サービス記述言語 \(WSDL\)\) にあるサービスのエンドポイント内部に自動的に生成します。 + +2. 任意の Active Directory ドメイン アカウントを使用してサービスを実行します。 この場合、そのドメイン アカウント用の SPN を確立する必要があります。 これを行うには、Setspn.exe ユーティリティ ツールを使用する方法があります。 サービスのアカウント用の SPN を作成したら、SPN をそのメタデータ \(WSDL\) を通じてサービスのクライアントに公開するように [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を構成します。 これを行うには、アプリケーション構成ファイルまたはコードのどちらかを使用して、公開されるエンドポイントのエンドポイント ID を設定します。 プログラムで ID を公開する方法を次の例に示します。 + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)] SPN、Kerberos プロトコル、および Active Directory、「[Kerberos に関する技術的な補足 \(Windows 用\)](http://go.microsoft.com/fwlink/?LinkId=88330)」を参照してください。 エンドポイント ID[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[SecurityBindingElement 認証モード](../../../../docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md)」を参照してください。 + + [!code-csharp[C_SecurityScenarios#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#12)] + [!code-vb[C_SecurityScenarios#12](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#12)] + +### 構成 + コードの代わりに次の構成を使用できます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## Client + 次のコードと構成は、別々に実行します。 次のいずれかの操作を行います。 + +- コード \(およびクライアント コード\) を使用してスタンドアロン クライアントを作成します。 + +- エンドポイント アドレスを定義しないクライアントを作成します。 代わりに、引数として構成名を受け取るクライアント コンストラクターを使用します。 次に例を示します。 + + [!code-csharp[C_SecurityScenarios#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#0)] + [!code-vb[C_SecurityScenarios#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#0)] + +### コード + クライアントを構成する場合のコード例を次に示します。 セキュリティ モードは Message に設定され、クライアント資格情報の種類は Windows に設定されています。 プロパティと プロパティには、`false` が設定されていることに注意してください。 + +> [!NOTE] +> ネゴシエートせずに Windows の資格情報を使用するには、サービスとの通信を開始する前に、サービスのアカウントの SPN を使用してクライアントを構成する必要があります。 クライアントは SPN を使用して Kerberos トークンを取得し、サービスとの通信を認証し保護します。 サービスの SPN を使用してクライアントを構成する方法を次の例に示します。 [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用してクライアントを生成する場合に、サービスのメタデータ \(WSDL\) にサービスの SPN 情報が含まれていれば、サービスのメタデータからサービスの SPN が自動的にクライアントに伝達されます。 サービスのメタデータにその SPN を含めるようにサービスを構成する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、このトピックの「サービス」を参照してください。 +> +> SPN、Kerberos、および Active Directory の詳細については、「[Kerberos に関する技術的な補足 \(Windows 用\)](http://go.microsoft.com/fwlink/?LinkId=88330)」を参照してください。 エンドポイント ID[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[SecurityBindingElement 認証モード](../../../../docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md)」を参照してください。 + + [!code-csharp[C_SecurityScenarios#19](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#19)] + [!code-vb[C_SecurityScenarios#19](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#19)] + +### 構成 + クライアントを構成する場合のコード例を次に示します。 [\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceprincipalname.md) 要素は、Active Directory ドメイン内でサービスのアカウント用に登録されたサービスの SPN と一致するように設定する必要があります。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/message-security-with-a-windows-client.md b/docs/framework/wcf/feature-details/message-security-with-a-windows-client.md new file mode 100644 index 00000000000..9426c495500 --- /dev/null +++ b/docs/framework/wcf/feature-details/message-security-with-a-windows-client.md @@ -0,0 +1,125 @@ +--- +title: "Windows クライアントとのメッセージ セキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 01e7d0b8-10f9-45c3-a4c5-53d44dc61eb8 +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 13 +--- +# Windows クライアントとのメッセージ セキュリティ +このシナリオでは、メッセージ セキュリティ モードによって保護されている [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントおよびサーバーを示します。クライアントとサービスは、Windows 資格情報を使用して認証します。 + + ![Windows クライアントを使用する場合のメッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/media/1c8618d4-0005-4022-beb6-32fd087a8c3c.gif "1c8618d4\-0005\-4022\-beb6\-32fd087a8c3c") + +|特性|説明| +|--------|--------| +|セキュリティ モード|メッセージ| +|相互運用性|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のみ| +|認証 \(サーバー\)|サーバーとクライアントの相互認証| +|認証 \(クライアント\)|サーバーとクライアントの相互認証| +|整合性|はい、共有のセキュリティ コンテキストを使用します| +|機密性|はい、共有のセキュリティ コンテキストを使用します| +|トランスポート|NET.TCP| +|バインディング|| + +## サービス + 次のコードと構成は、別々に実行します。以下のいずれかを実行します。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成しますが、エンドポイントを定義しません。 + +### コード + 次のコードでは、メッセージ セキュリティを使用するサービス エンドポイントを作成し、Windows コンピューターとの間にセキュリティで保護されたコンテキストを確立する方法を示します。 + + [!code-csharp[C_SecurityScenarios#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#11)] + [!code-vb[C_SecurityScenarios#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#11)] + +### 構成 + コードの代わりに次の構成を使用して、サービスをセットアップできます。 + +``` + + + + + + + + + + + + + + + + + + + + +``` + +## クライアント + 次のコードと構成は、別々に実行します。以下のいずれかの操作を行います。 + +- コード \(およびクライアント コード\) を使用してスタンドアロン クライアントを作成します。 + +- エンドポイント アドレスを定義しないクライアントを作成します。代わりに、引数として構成名を受け取るクライアント コンストラクターを使用します。例 : + + [!code-csharp[C_SecurityScenarios#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#0)] + [!code-vb[C_SecurityScenarios#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#0)] + +### コード + クライアントを作成する場合のコード例を次に示します。バインディングはメッセージ モード セキュリティに対して行い、クライアント資格情報の種類は `Windows` に設定します。 + + [!code-csharp[C_SecurityScenarios#18](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#18)] + [!code-vb[C_SecurityScenarios#18](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#18)] + +### 構成 + 次の構成を使用してクライアントのプロパティを設定します。 + +``` + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/message-security-with-an-anonymous-client.md b/docs/framework/wcf/feature-details/message-security-with-an-anonymous-client.md new file mode 100644 index 00000000000..36f1fbdbfb2 --- /dev/null +++ b/docs/framework/wcf/feature-details/message-security-with-an-anonymous-client.md @@ -0,0 +1,143 @@ +--- +title: "メッセージ セキュリティと匿名クライアント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cad53e1a-b7c9-4064-bc87-508c3d1dce49 +caps.latest.revision: 15 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 15 +--- +# メッセージ セキュリティと匿名クライアント +次のシナリオでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] メッセージ セキュリティによって保護されているクライアントおよびサービスを示します。 設計目標は、トランスポート セキュリティではなくメッセージ セキュリティを使用することです。これによって将来、多様なクレームに基づくモデルをサポートできます。 承認に多様なクレームを使用する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md)」を参照してください。 + + サンプル アプリケーションについては、「[メッセージ セキュリティ匿名](../../../../docs/framework/wcf/samples/message-security-anonymous.md)」を参照してください。 + + ![匿名クライアントを使用する場合のメッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/media/b361a565-831c-4c10-90d7-66d8eeece0a1.gif "b361a565\-831c\-4c10\-90d7\-66d8eeece0a1") + +|特徴|説明| +|--------|--------| +|セキュリティ モード|メッセージ| +|相互運用性|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のみ| +|認証 \(サーバー\)|初期ネゴシエーションには、サーバー認証が必要ですが、クライアント認証は不要です| +|認証 \(クライアント\)|なし| +|整合性|はい、共有のセキュリティ コンテキストを使用します| +|機密性|はい、共有のセキュリティ コンテキストを使用します| +|Transport|HTTP| + +## サービス + 次のコードと構成は、別々に実行します。 次のいずれかの操作を行います。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成しますが、エンドポイントを定義しません。 + +### コード + 次のコードは、メッセージ セキュリティを使用するサービス エンドポイントの作成方法を示します。 + + [!code-csharp[C_SecurityScenarios#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#8)] + [!code-vb[C_SecurityScenarios#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#8)] + +### 構成 + コードの代わりに次の構成を使用できます。 サービス動作要素を使用して、クライアントに対するサービスの認証に使用する証明書を指定します。 サービス要素は、`behaviorConfiguration` 属性を使用して動作を指定する必要があります。 バインド要素で、クライアント資格情報の種類が `None` であることを指定します。この資格情報の種類では、匿名クライアントがサービスを使用できます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## Client + 次のコードと構成は、別々に実行します。 次のいずれかの操作を行います。 + +- コード \(およびクライアント コード\) を使用してスタンドアロン クライアントを作成します。 + +- エンドポイント アドレスを定義しないクライアントを作成します。 代わりに、引数として構成名を受け取るクライアント コンストラクターを使用します。 次に例を示します。 + + [!code-csharp[C_SecurityScenarios#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#0)] + [!code-vb[C_SecurityScenarios#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#0)] + +### コード + クライアントのインスタンスを作成するコード例を次に示します。 バインディングはメッセージ モード セキュリティを使用し、クライアント資格情報の種類は None に設定されます。 + + [!code-csharp[C_SecurityScenarios#15](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#15)] + [!code-vb[C_SecurityScenarios#15](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#15)] + +### 構成 + クライアントを構成する場合のコード例を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [分散アプリケーションのセキュリティ](../../../../docs/framework/wcf/feature-details/distributed-application-security.md) + [メッセージ セキュリティ匿名](../../../../docs/framework/wcf/samples/message-security-anonymous.md) + [サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/message-security-with-issued-tokens.md b/docs/framework/wcf/feature-details/message-security-with-issued-tokens.md new file mode 100644 index 00000000000..d4a6c0f391b --- /dev/null +++ b/docs/framework/wcf/feature-details/message-security-with-issued-tokens.md @@ -0,0 +1,28 @@ +--- +title: "発行済みトークンを使用したメッセージ セキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 731fc871-54d0-4689-90fd-1c9415c45621 +caps.latest.revision: 10 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 10 +--- +# 発行済みトークンを使用したメッセージ セキュリティ +発行済みトークン クライアントにより、フェデレーション セキュリティのシナリオが [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] で有効になります。 + + フェデレーション セキュリティにより独立したドメイン間で信頼を確立できます。各ドメインは、セキュリティ トークン サービスで認証と承認を集中管理します。このようなサービス間に信頼が確立されると、各ドメインのメンバーは相手のドメインのサービスを使用できます。 + + フェデレーション シナリオの詳細については、「[フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md)」を参照してください。 + +## 参照 + [フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/message-security-with-mutual-certificates.md b/docs/framework/wcf/feature-details/message-security-with-mutual-certificates.md new file mode 100644 index 00000000000..f4b7823cc67 --- /dev/null +++ b/docs/framework/wcf/feature-details/message-security-with-mutual-certificates.md @@ -0,0 +1,168 @@ +--- +title: "メッセージ セキュリティと相互の証明書 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 99d7a528-7ae4-4d39-a0f9-3066ea237de0 +caps.latest.revision: 18 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 18 +--- +# メッセージ セキュリティと相互の証明書 +次のシナリオでは、メッセージ セキュリティ モードを使用して保護されている [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスおよびクライアントを示します。クライアントとサービスは、証明書を使用して認証されます。 + + このシナリオは、X.509 証明書トークン プロファイルと共に WS\-Security を使用するため、相互運用性があります。 + +> [!NOTE] +> このシナリオでは、サービス証明書のネゴシエーションは実行されません。通信を開始する前に、サービス証明書をクライアントに提供しておく必要があります。サーバー証明書は、アプリケーションと共に配布したり、帯域外通信で提供できます。 + + ![相互の証明書を使用する場合のメッセージ セキュリティ](../../../../docs/framework/wcf/feature-details/media/f4157312-b17c-416c-a5ee-fa7b54db211b.gif "f4157312\-b17c\-416c\-a5ee\-fa7b54db211b") + +|特性|説明| +|--------|--------| +|セキュリティ モード|メッセージ| +|相互運用性|○ WS\-Security および X.509 証明書トークン プロファイルと互換性があるクライアントとサービスで相互運用性があります。| +|認証|サーバーとクライアントの相互認証| +|整合性|○| +|機密性|○| +|トランスポート|HTTP| +|バインディング|| + +## サービス + 次のコードと構成は、別々に実行します。以下のいずれかを実行します。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成するが、エンドポイントを定義しない。 + +### コード + 次のコードでは、メッセージ セキュリティを使用するサービス エンドポイントを作成します。サービスには、自身を認証するための証明書が必要です。 + + [!code-csharp[C_SecurityScenarios#13](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#13)] + [!code-vb[C_SecurityScenarios#13](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#13)] + +### 構成 + コードの代わりに次の構成を使用して、同じサービスを作成できます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## クライアント + 次のコードと構成は、別々に実行します。以下のいずれかの操作を行います。 + +- コード \(およびクライアント コード\) を使用してスタンドアロン クライアントを作成します。 + +- エンドポイント アドレスを定義しないクライアントを作成します。代わりに、引数として構成名を受け取るクライアント コンストラクターを使用する。次に例を示します。 + + [!code-csharp[C_SecurityScenarios#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#0)] + [!code-vb[C_SecurityScenarios#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#0)] + +### コード + クライアントを作成する場合のコード例を次に示します。セキュリティ モードは Message に設定され、クライアント資格情報の種類は Certificate に設定されています。 + + [!code-csharp[C_SecurityScenarios#20](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#20)] + [!code-vb[C_SecurityScenarios#20](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#20)] + +### 構成 + 次のコードは、クライアントを構成します。クライアント証明書は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-clientcredentials-element.md)を使用して指定する必要があります。また、サービス証明書は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/defaultcertificate-element.md)を使用して指定します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) + [方法: 開発時にトランスポート セキュリティのために WCF の一時的な証明書を作成およびインストールする](http://go.microsoft.com/fwlink/?LinkId=244264) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/messaging-activities.md b/docs/framework/wcf/feature-details/messaging-activities.md new file mode 100644 index 00000000000..e8f06483aa8 --- /dev/null +++ b/docs/framework/wcf/feature-details/messaging-activities.md @@ -0,0 +1,116 @@ +--- +title: "メッセージング アクティビティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8498f215-1823-4aba-a6e1-391407f8c273 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# メッセージング アクティビティ +アクティビティを管理することで、ワークフローが WCF メッセージを送受信できるようになります。メッセージング アクティビティをワークフローに追加することで、任意に複雑なメッセージ交換パターン \(MEP\) をモデル化できます。 + +## メッセージ交換パターン + 基本的なメッセージ交換パターンは、次の 3 種類です。 + +- **データグラム** \- データグラム MEP を使用する場合は、クライアントがメッセージをサービスに送信しても、サービスは応答しません。これは、"ファイア アンド フォーゲット \(撃ち放し\)" と呼ばれる場合があります。このような交換では、配信の成否について帯域外での確認が必要になります。メッセージが移動中に失われて、サービスに到達しない可能性があります。クライアントが正常にメッセージを送信した場合でも、サービスがメッセージを受信したとは限りません。サービスは、メッセージングの不可欠な構成要素であり、これを基盤として独自の MEP を構築できます。 + +- **要求 \- 応答** \- 要求 \- 応答 MEP を使用する場合は、クライアントがメッセージをサービスに送信し、サービスは必要な処理を実行して、応答をクライアントに返します。パターンは、要求 \- 応答のペアで構成されます。要求 \- 応答呼び出しの例として、リモート プロシージャ コール \(RPC\) やブラウザー GET 要求などがあります。このパターンは、半二重とも呼ばれます。 + +- **二重** \- 二重 MEP を使用する場合は、クライアントとサービスが、任意の順番でメッセージを相互に送信できます。二重 MEP は、話される語の 1 つずつがメッセージである電話の会話に似ています。 + + メッセージング アクティビティを使用すると、これらの基本の MEP のほかに、任意の複雑な MEP を実装できます。 + +## メッセージング アクティビティ + [!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] では、次のメッセージング アクティビティが定義されています。 + +- \- メッセージの送信には アクティビティを使用します。 + +- \- 受信したメッセージに対する応答の送信には、 アクティビティを使用します。このアクティビティは、要求\/応答 MEP を実装した場合に、ワークフロー サービスによって使用されます。 + +- \- メッセージの受信には アクティビティを使用します。 + +- \- 応答メッセージの受信には アクティビティを使用します。このアクティビティは、要求\/応答 MEP を実装した場合に、ワークフロー サービス クライアントによって使用されます。 + +## メッセージング アクティビティとメッセージ交換パターン + データグラム MEP には、メッセージを送信するクライアントとメッセージを受信するサービスが必要です。クライアントがワークフローの場合は、 アクティビティを使用してメッセージを送信します。そのメッセージをワークフローで受信するには、 アクティビティを使用します。 アクティビティと アクティビティのどちらにも、`Content` という名前のプロパティがあります。このプロパティには、送信または受信されるデータが保持されます。要求 \- 応答 MEP を実装する場合は、クライアントとサービスの両方で、アクティビティの組を使用します。クライアントは、 アクティビティを使用してメッセージを送信し、 アクティビティを使用してサービスからの応答を受信します。これらの 2 つのアクティビティは、 プロパティによって互いに関連付けられています。このプロパティは、元のメッセージを送信した アクティビティに設定されます。サービスも、相互に関連付けられた、 および というアクティビティのペアを使用します。これらの 2 つのアクティビティは、 プロパティによって関連付けられています。このプロパティは、元のメッセージを受信した アクティビティに設定されます。 アクティビティおよび アクティビティを使用すると、 アクティビティおよび アクティビティと同様に、 インスタンスまたはメッセージ コントラクト型を送信できます。 + + ワークフローは長時間にわたって実行されることが多いため、通信の二重パターンでは、長時間のメッセージ交換をサポートすることも重要です。長時間のメッセージ交換をサポートするには、メッセージ交換を開始するクライアントが、後でデータが利用可能になった時点でクライアントにコールバックする機会をサービスに提供する必要があります。たとえば、マネージャーの承認を受けるために発注書の要求が送信された場合に、この要求が、1 日、1 週間、または 1 年間処理されない可能性があるとします。この場合、マネージャーが発注書を承認するワークフローは、承認を受けた後に再開することを認識している必要があります。この二重通信のパターンは、相関関係を使用するワークフローでサポートされています。二重パターンを実装するには、 アクティビティと アクティビティを使用します。 アクティビティで、特殊なキー値の を使用して、相関関係を初期化します。 アクティビティで、その関連付けハンドルを プロパティの値として設定します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][永続的な二重](../../../../docs/framework/wcf/feature-details/durable-duplex-correlation.md). + +> [!NOTE] +> ワークフローにコールバック相関関係を使用する二重 \("永続的な二重"\) を実装するのは、長時間のメッセージ交換のためです。これは、コールバック コントラクトを使用する WCF の二重と同じではありません。WCF の二重では、メッセージ交換が短時間 \(チャネルの有効期間\) で処理されます。 + +## メッセージの書式設定とメッセージング アクティビティ + アクティビティと アクティビティには、`Content` という名前のプロパティがあります。このプロパティは 型で、 アクティビティまたは アクティビティが受信するデータを表します。.NET Framework では、 および という 2 つの関連クラスが定義されています。どちらも、 から派生しています。ワークフロー サービスでデータを受信するには、 アクティビティまたは アクティビティの `Content` プロパティを、これらの型のいずれかのインスタンスに設定します。どの型を使用するかは、アクティビティが受信するデータの型によって異なります。アクティビティが `Message` オブジェクト型またはメッセージ コントラクト型を受信する場合は、 を使用します。シリアル化できるデータ コントラクトまたは XML 型をアクティビティが受信した場合には、 を使用します。 では複数のパラメーターを送信できますが、 で送信できるのは、1 つのオブジェクト、つまり、メッセージ \(またはメッセージ コントラクト型\) のみです。 + +> [!NOTE] +> は、シリアル化できるデータ コントラクトまたは XML 型が 1 つだけの場合も使用できます。パラメーターが 1 つだけの を使用する場合と、 に直接渡されるオブジェクトとの違いは、ワイヤ形式です。パラメーターのコンテンツは、操作名に対応する XML 要素でラップされ、シリアル化されたオブジェクトは、パラメーター名を使用した XML 要素でラップされます \(例: `Hello, World`\)。メッセージの内容は、操作名によってラップされません。代わりに、シリアル化されたオブジェクトが、XML 修飾型の名前を使用して XML 要素内に格納されます \(例: `Hello, World`\)。 + + アクティビティと アクティビティにも、`Content` という名前のプロパティがあります。このプロパティは 型で、 アクティビティまたは アクティビティが送信するデータを表します。.NET Framework では、 および という 2 つの関連型が定義されています。どちらも、 から派生しています。ワークフロー サービスからデータを送信するには、 アクティビティまたは アクティビティの `Content` プロパティを、これらの型のいずれかのインスタンスに設定します。どの型を使用するかは、アクティビティが送信するデータの型によって異なります。アクティビティが `Message` オブジェクト型またはメッセージ コントラクト型を送信する場合は、 を使用します。アクティビティがデータ コントラクト型を送信する場合は、 を使用します。 では複数のパラメーターを送信できますが、 で送信できるのは、1 つのオブジェクト、つまり、メッセージ \(またはメッセージ コントラクト型\) のみです。 + + 強制的にメッセージング アクティビティを使用してプログラミングを行う場合は、汎用の および を使用して、メッセージまたは 、および アクティビティのパラメーター プロパティに割り当てるオブジェクトをラップします。 アクティビティと アクティビティには を、 アクティビティと アクティビティには を使用します。`In` 引数は、データがアクティビティに渡されるため、送信アクティビティで使用されます。`Out` 引数は、データがアクティビティから渡されるため、受信アクティビティで使用されます。この例を次に示します。 + +``` +Receive reserveSeat = new Receive +{ + ... + Content = new ReceiveParametersContent + { + Parameters = + { + { "ReservationInfo", new OutArgument(reservationInfo) } + } + } +}; +SendReply reserveSeat = new SendReply +{ + ... + Request = reserveSeat, + Content = new SendParametersContent + { + Parameters = + { + { "ReservationId", new InArgument(reservationId) } + } + }, +}; +``` + + void を返す要求\/応答操作を定義するワークフロー サービスを実装する場合は、 アクティビティをインスタンス化して、 プロパティをコンテンツの種類 \( または \) のいずれかのインスタンスに設定します。この例を次に示します。 + +``` +Receive rcv = new Receive() +{ +ServiceContractName = "IService", +OperationName = "NullReturningContract", +Content = new ReceiveParametersContent( new Dictionary() { { "message", new OutArgument() } } ) +}; +SendReply sr = new SendReply() +{ +Request = rcv + Content = new SendParametersContent(); +}; + +``` + +## サービス参照の追加 + ワークフロー アプリケーションからワークフロー サービスを呼び出すと、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] では、要求\/応答 MEP で使用される通常の アクティビティと アクティビティをカプセル化したカスタムのメッセージング アクティビティが生成されます。この機能を使用するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] でクライアント プロジェクトを右クリックして、**\[サービス参照の追加\]** をクリックします。アドレス ボックスにサービスのベース アドレスを入力し、\[移動\] をクリックします。使用可能なサービスが、**\[サービス\]** ボックスに表示されます。サービス ノードを展開して、サポートされるコントラクトを表示します。呼び出すコントラクトを選択すると、使用可能な操作の一覧が **\[操作\]** ボックスに表示されます。生成されたアクティビティの名前空間を指定し、**\[OK\]** をクリックします。操作が正常に完了したことを示すダイアログが表示され、プロジェクトを再度ビルドすると、生成されたカスタム アクティビティがツールボックスに表示されます。サービス コントラクトに定義されている操作ごとに 1 つのアクティビティがあります。プロジェクトを再度ビルドしたら、カスタム アクティビティをワークフローにドラッグ アンド ドロップして、必要なプロパティをプロパティ ウィンドウで設定できます。 + +## メッセージング アクティビティ テンプレート + クライアントとサービスでの要求\/応答 MEP の設定を簡単にするため、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] では、2 種類のメッセージング アクティビティ テンプレートが提供されています。 はサービスで、 はクライアントで使用されます。どちらの場合も、テンプレートによって、適切なメッセージング アクティビティがワークフローに追加されます。サービスの場合、 アクティビティを追加し、次に アクティビティを追加します。 プロパティは自動的に アクティビティに設定されます。クライアントの場合、 アクティビティを追加し、次に アクティビティを追加します。 プロパティは自動的に アクティビティに設定されます。これらのテンプレートは、適切なテンプレートをワークフローにドラッグ アンド ドロップするだけで使用できます。 + +## メッセージング アクティビティとトランザクション + ワークフロー サービスが呼び出されるときに、サービス操作にトランザクションをフローする必要がある場合があります。それには、 アクティビティを アクティビティ内に配置します。 アクティビティには、`Receive` アクティビティと本体が含まれます。サービスにフローされるトランザクションは、 の本体の実行の開始から終了まで、アンビエント トランザクションのままです。トランザクションは、本体の実行が終了した時点で完了します。ワークフローとトランザクション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフロー トランザクション](../../../../docs/framework/windows-workflow-foundation//workflow-transactions.md)」を参照してください。 + +## 参照 + [ワークフロー サービスでエラーを送受信する方法](http://go.microsoft.com/fwlink/?LinkId=189151) + [長時間のワークフロー サービスの作成](../../../../docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/messaging-protocols.md b/docs/framework/wcf/feature-details/messaging-protocols.md new file mode 100644 index 00000000000..2bbc7e4357d --- /dev/null +++ b/docs/framework/wcf/feature-details/messaging-protocols.md @@ -0,0 +1,717 @@ +--- +title: "メッセージング プロトコル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5b20bca7-87b3-4c8f-811b-f215b5987104 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# メッセージング プロトコル +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] チャネル スタックは、エンコーディングとトランスポート チャネルを使用して、内部メッセージ表現をワイヤ形式に変換し、特定のトランスポートを使用して送信します。Web サービスの相互運用性を確保するために、最も一般的に使用されるトランスポートは HTTP です。また、Web サービスが使用する最も一般的なエンコーディングは、XML ベースの SOAP 1.1、SOAP 1.2、および MTOM \(Message Transmission Optimization Mechanism\) です。 + + このトピックでは、 で使用する以下のプロトコルに関する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 実装の詳細について説明します。 + +|仕様\/ドキュメント|リンク| +|----------------|---------| +|HTTP 1.1|http:\/\/www.ietf.org\/rfc\/rfc2616.txt| +|SOAP 1.1 HTTP バインディング|http:\/\/www.w3.org\/TR\/2000\/NOTE\-SOAP\-20000508\/、セクション 7| +|SOAP 1.2 HTTP バインディング|http:\/\/www.w3.org\/TR\/soap12\-part2\/、セクション 7| + + ここでは、 および で使用する以下のプロトコルに関する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 実装の詳細について説明します。 + +|仕様\/ドキュメント|リンク| +|----------------|---------| +|XML|http:\/\/www.w3.org\/TR\/REC\-xml| +|SOAP 1.1|http:\/\/www.w3.org\/TR\/2000\/NOTE\-SOAP\-20000508\/| +|SOAP 1.2 コア|http:\/\/www.w3.org\/TR\/soap12\-part1\/| +|WS\-Addressing 2004\/08|http:\/\/www.w3.org\/Submission\/2004\/SUBM\-ws\-addressing\-20040810\/| +|W3C Web Services Addressing 1.0 \- コア|http:\/\/www.w3.org\/TR\/2006\/REC\-ws\-addr\-core\-20060509| +|W3C Web Services Addressing 1.0 \- SOAP バインディング|http:\/\/www.w3.org\/TR\/2006\/REC\-ws\-addr\-soap\-20060509| +|W3C Web Services Addressing 1.0 \- WSDL バインディング|http:\/\/www.w3.org\/TR\/2006\/CR\-ws\-addr\-wsdl\-20060529\/| +|W3C Web Services Addressing 1.0 \- メタデータ|http:\/\/www.w3.org\/TR\/ws\-addr\-metadata\/| +|WSDL SOAP1.1 バインディング|http:\/\/www.w3.org\/TR\/wsdl\/| +|WSDL SOAP1.2 バインディング|http:\/\/www.w3.org\/Submission\/wsdl11soap12\/| + + ここでは、 で使用する以下のプロトコルに関する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 実装の詳細について説明します。 + +|仕様\/ドキュメント|リンク| +|----------------|---------| +|XOP|http:\/\/www.w3.org\/TR\/xop10\/| +|MTOM および SOAP 1.2 バインディング|http:\/\/www.w3.org\/TR\/soap12\-mtom\/| +|MTOM SOAP 1.1 バインディング|http:\/\/www.w3.org\/Submission\/soap11mtom10\/| +|MTOM WS\-Policy アサーション|http:\/\/www.w3.org\/Submission\/2006\/SUBM\-WS\-MTOMPolicy\-20061101\/| + + ここでは、次の XML 名前空間と関連付けられたプレフィックスが使用されます。 + +|プレフィックス|名前空間 URI \(Uniform Resource Identifier\)| +|-------------|----------------------------------------------| +|s11|http:\/\/schemas.xmlsoap.org\/soap\/envelope| +|s12|http:\/\/www.w3.org\/2003\/05\/soap\-envelope| +|wsa|http:\/\/www.w3.org\/2004\/08\/addressing| +|wsam|http:\/\/www.w3.org\/2007\/05\/addressing\/metadata| +|wsap|http:\/\/schemas.xmlsoap.org\/ws\/2004\/09\/policy\/addressing| +|wsa10|http:\/\/www.w3.org\/2005\/08\/addressing| +|wsaw10|http:\/\/www.w3.org\/2006\/05\/addressing\/wsdl| +|xop|http:\/\/www.w3.org\/2004\/08\/xop\/include| +|xmime|http:\/\/www.w3.org\/2004\/06\/xmlmime

http:\/\/www.w3.org\/2005\/05\/xmlmime| +|cdp|http:\/\/schemas.microsoft.com\/net\/2006\/06\/duplex| + +## SOAP 1.1 と SOAP 1.2 + +### エンベロープと処理モデル + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Basic Profile 1.1 \(BP11\) および Basic Profile 1.0 \(SSBP10\) に従って、SOAP 1.1 エンベロープの処理を実装しています。SOAP 1.2 エンベロープの処理は、SOAP12\-Part1 に従って実装されます。 + + このセクションでは、BP11 および SOAP12\-Part1 に関して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で選択されている一部の実装について説明します。 + +#### 必須のヘッダー処理 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、SOAP 1.1 仕様と SOAP 1.2 仕様に記載されたルールに従って、`mustUnderstand` としてマークされたヘッダーを次のように処理します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネル スタックに入ったメッセージは、関連付けられたバインド要素 \(テキスト メッセージ エンコーディング、セキュリティ、信頼できるメッセージング、トランザクションなど\) によって構成された個々のチャネルで処理されます。各チャネルは、関連付けられた名前空間からヘッダーを認識し、認識済みとしてマークします。メッセージがディスパッチャーに入ると、操作フォーマッタは対応するメッセージ コントラクトと操作コントラクトで想定されたヘッダーを読み取り、認識済みとしてマークします。次に、ディスパッチャーは、`mustUnderstand` としてマークされているにもかかわらず、認識されていないヘッダーが残っていないかどうかを検証し、例外をスローします。受信者を対象とする `mustUnderstand` ヘッダーが含まれたメッセージが、受信者のアプリケーション コードで処理されることはありません。 + + このようなレイヤー化された処理により、SOAP ノードのインフラストラクチャ レイヤーとアプリケーション レイヤーを次のように分離することが可能になります。 + +- B1111 : 認識されていないヘッダーは、メッセージが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャ チャネル スタックによって処理された後、アプリケーションによって処理される前に検出されます。 + + `mustUnderstand` ヘッダーの値は、SOAP 1.1 と SOAP 1.2 で異なります。Basic Profile 1.1 では、SOAP 1.1 メッセージの `mustUnderstand` の値が 0 または 1 である必要があります。SOAP 1.2 では、値として 0、1、`false`、および `true` を使用できますが、`xs:boolean` 値の正規表現 \(`false`、`true`\) を出力することをお勧めします。 + +- B1112: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、SOAP 1.1 および SOAP 1.2 の両方のバージョンの SOAP エンベロープで、`mustUnderstand` の値として 0 と 1 を出力します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`mustUnderstand` ヘッダーの `xs:boolean` の値空間全体 \(0、1、`false`、`true`\) を受け入れます。 + +#### SOAP エラー + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 固有の SOAP エラー実装を以下に示します。 + +- B2121 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`s11:mustUnderstand`、`s11:Client`、および `s11:Server` の各 SOAP 1.1 エラー コードを返します。 + +- B2122 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`s12:MustUnderstand`、`s12:Sender`、および `s12:Receiver` の各 SOAP 1.2 エラー コードを返します。 + +### HTTP バインディング + +#### SOAP 1.1 HTTP バインディング + 次に説明するように、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Basic Profile 1.1 仕様のセクション 3.4 に従って、SOAP1.1 HTTP バインディングを実装しています。 + +- B2211 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、HTTP POST 要求のリダイレクトを実装していません。 + +- B2212 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントは、セクション 3.4.8 に従って HTTP クッキーをサポートします。 + +#### SOAP 1.2 HTTP バインディング + 次に説明するように、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、SOAP 1.2\-part 2 \(SOAP12Part2\) 仕様に従って、SOAP 1.2 HTTP バインディングを実装しています。 + + SOAP 1.2 では、`application/soap+xml` メディア タイプの省略可能なアクション パラメーターが導入されました。このパラメーターは、WS\-Addressing を使用していない場合に、SOAP メッセージの本文を解析する必要なく、メッセージ ディスパッチを最適化する際に役立ちます。 + +- R2221 : `application/soap+xml` のアクション パラメーターが SOAP 1.2 要求に含まれている場合、対応する WSDL バインディング内の `wsoap12:operation` 要素の `soapAction` 属性と一致する必要があります。 + +- R2222 : WS\-Addressing 2004\/08 または WS\-Addressing 1.0 を使用しているときに、`application/soap+xml` のアクション パラメーターが SOAP 1.2 メッセージに含まれている場合、`wsa:Action` と一致する必要があります。 + + WS\-Addressing が無効になっているときに、受信要求にアクション パラメーターが含まれていない場合、メッセージの `Action` は指定されていないものと見なされます。 + +## WS\-Addressing + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-Addressing の次の 3 つのバージョンを実装しています。 + +- WS\-Addressing 2004\/08 + +- W3C Web Services Addressing 1.0 コア \(ADDR10\-CORE\) \- SOAP バインディング \(ADDR10\-SOAP\) + +- WS\-Addressing 1.0 \- メタデータ + +### エンドポイント参照 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で実装されている WS\-Addressing のすべてのバージョンでは、エンドポイント参照を使用してエンドポイントを記述します。 + +#### エンドポイント参照と WS\-Addressing のバージョン + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、特に `EndpointReference` 要素と `W3C.WsAddressing.EndpointReferenceType` クラスで WS\-Addressing を使用する多数のインフラストラクチャ プロトコルを実装しています \(WS\-ReliableMessaging、WS\-SecureConversation、WS\-Trust など\)。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、いずれかのバージョンの WS\-Addressing を他のインフラストラクチャ プロトコルと共に使用できます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントは、エンドポイントごとに WS\-Addressing の 1 つのバージョンをサポートします。 + + R3111 では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントと交換されるメッセージで使用する `EndpointReference` 要素または型の名前空間は、そのエンドポイントで実装されている WS\-Addressing のバージョンに適合する必要があります。 + + たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントが WS\-ReliableMessaging を実装している場合、`CreateSequenceResponse` 内でこのようなエンドポイントによって返される `AcksTo` ヘッダーでは、そのエンドポイントの `EncodingBinding` 要素で指定された WS\-Addressing のバージョンを使用します。 + +#### エンドポイント参照とメタデータ + 多くのシナリオでは、指定されたエンドポイントのメタデータまたはメタデータへの参照を伝達する必要があります。 + + B3121 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、WS\-MetadataExchange \(MEX\) 仕様のセクション 6 に記載された機構を使用して、エンドポイント参照のメタデータを値または参照で含めます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが http:\/\/sts.fabrikam123.com のトークン発行者によって発行された SAML \(Security Assertions Markup Language\) トークンを使用して、認証を行う必要があるシナリオについて考えてみます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントでは、トークン発行者を指し示す `sp:Issuer` アサーションが入れ子になった `sp:IssuedToken` アサーションを使用して、この認証要件が記述されます。`sp:Issuer` アサーションにアクセスするクライアント アプリケーションは、トークン発行者のエンドポイントとの通信方法を知る必要があります。クライアントは、トークン発行者に関するメタデータを知る必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、MEX で定義されたエンドポイント参照のメタデータ拡張を使用して、トークン発行者のメタデータへの参照を提供します。 + +``` + + + + http://sts.fabrikam123.com + + + + + + + http://sts.fabrikam123.com/mex + + + + + + + + +``` + +### メッセージのアドレス指定ヘッダー + +#### メッセージ ヘッダー + WS\-Addressing の両方のバージョンで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は仕様で規定された `wsa:To`、 `wsa:ReplyTo`、 `wsa:Action`、 `wsa:MessageID`、、および `wsa:RelatesTo` の各メッセージ ヘッダーを使用します。 + + B3211 : WS\-Addressing のすべてのバージョンで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`wsa:FaultTo` および `wsa:From` の各 WS\-Addressing メッセージ ヘッダーを受け入れますが、これらのヘッダーを独自に生成することはありません。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションとやり取りするアプリケーションは、これらのメッセージ ヘッダーを追加できます。追加されたヘッダーは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって適切に処理されます。 + +#### 参照パラメーターと参照プロパティ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、それぞれの仕様に従って、エンドポイントの参照パラメーターと + + 参照プロパティの処理を実装しています。 + + B3221 : WS\-Addressing 2004\/08 を使用するように構成されている場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントは、参照プロパティと参照パラメーターの処理を区別しません。 + +### メッセージ交換パターン + Web サービス操作呼び出しに関連するメッセージ シーケンスは、*"メッセージ交換パターン"* と呼ばれます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、一方向、要求\/応答、および双方向の各メッセージ交換パターンをサポートしています。このセクションでは、使用するメッセージ交換パターンによって異なるメッセージ処理に関する WS\-Addressing の要件について説明します。 + + このセクション全体を通して、リクエスターが最初のメッセージを送信し、レスポンダーが最初のメッセージを受信します。 + +#### 一方向のメッセージ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントが一方向パターンに従うために、指定の `Action` を含むメッセージをサポートするように構成されている場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントは、次の動作と要件に従います。他に特に指定がなければ、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされている WS\-Addressing の両方のバージョンに対して動作とルールが適用されます。 + +- R3311 : リクエスターは、`wsa:To`、`wsa:Action`、およびエンドポイント参照によって指定されたすべての参照パラメーターのヘッダーを含める必要があります。WS\-Addressing 2004\/08 を使用し、エンドポイント参照によって参照プロパティが指定されている場合、対応するヘッダーもメッセージに追加する必要があります。 + +- B3312 : リクエスターは、`MessageID`、`ReplyTo`、および `FaultTo` の各ヘッダーを含めることができます。受信側のインフラストラクチャはこれらのヘッダーを無視し、ヘッダーはアプリケーションに渡されます。 + +- R3313 : HTTP を使用し、HTTP 応答レッグで送信するメッセージがない場合、レスポンダーは空の本文と HTTP 202 ステータス コードを含む HTTP 応答を送信する必要があります。 + + HTTP トランスポートを使用しており、操作コントラクトで一方向のメッセージが宣言されている場合でも、HTTP 応答を使用してインフラストラクチャ メッセージを送信できます。たとえば、信頼できるメッセージングでは、HTTP 応答で `SequenceAcknowledgement` メッセージを送信できます。 + +- B3314 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、一方向メッセージへの応答でエラー メッセージを送信しません。 + +#### 要求\/応答 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントが要求\/応答パターンに従うために、指定の `Action` を含むメッセージに対応するように構成されている場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントは、以下の動作と要件に従います。他に特に指定がなければ、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされている WS\-Addressing の両方のバージョンに対して動作とルールが適用されます。 + +- R3321 : リクエスターは、`wsa:To`、`wsa:Action`、`wsa:MessageID`、およびエンドポイント参照によって指定されたすべての参照パラメーターまたは参照プロパティ \(または両方\) のヘッダーを要求に含める必要があります。 + +- R3322 : WS\-Addressing 2004\/08 を使用する場合、`ReplyTo` も要求に含める必要があります。 + +- R3323 : WS\-Addressing 1.0 を使用し、`ReplyTo` が要求に含まれていない場合、\[address\] プロパティが "http:\/\/www.w3.org\/2005\/08\/addressing\/anonymous" である既定のエンドポイント参照が使用されます。 + +- R3324 : リクエスターは、`wsa:To`、`wsa:Action`、および `wsa:RelatesTo` の各ヘッダーを応答メッセージに含め、`ReplyTo` エンドポイント参照によって指定されたすべての参照パラメーターまたは参照プロパティ \(または両方\) のヘッダーを要求に含める必要があります。 + +### Web Services Addressing エラー + R3411 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-Addressing 2004\/08 で定義された以下のエラーを生成します。 + +|コード|原因| +|---------|--------| +|wsa:DestinationUnreachable|このチャネル用に確立された応答アドレスとは異なる `ReplyTo` を使用してメッセージが到着しました。To ヘッダーに指定されたアドレスをリッスンしているエンドポイントはありません。| +|wsa:ActionNotSupported|`Action` ヘッダーに指定されたアクションは、エンドポイントに関連付けられたインフラストラクチャ チャネルまたはディスパッチャーによって認識されません。| + + R3412 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-Addressing 1.0 で定義された以下のエラーを生成します。 + +|コード|原因| +|---------|--------| +|wsa10:InvalidAddressingHeader|`wsa:To`、`wsa:ReplyTo`、`wsa:From` 、または `wsa:MessageID` が重複しています。同じ `RelationshipType` を使用する `wsa:RelatesTo` が重複しています。| +|wsa10:MessageAddressingHeaderRequired|必須の Addressing ヘッダーがありません。| +|wsa10:DestinationUnreachable|このチャネル用に確立された応答アドレスとは異なる `ReplyTo` を使用してメッセージが到着しました。To ヘッダーに指定されたアドレスをリッスンしているエンドポイントはありません。| +|wsa10:ActionNotSupported|`Action` ヘッダーに指定されたアクションは、エンドポイントに関連付けられたインフラストラクチャ チャネルまたはディスパッチャーによって認識されません。| +|wsa10:EndpointUnavailable|RM チャネルは、`CreateSequence` メッセージのアドレス指定ヘッダーの検査に基づいて、エンドポイントでシーケンスが処理されないことを示すために、このエラーを返しました。| + + 上記の 2 つの表に示すコードは、SOAP 1.1 の `FaultCode`、および SOAP 1.2 の `SubCode` \(Code\=Sender\) に対応付けられています。 + +### WSDL 1.1 バインディングと WS\-Policy アサーション + +#### WS\-Addressing の使用の提示 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、ポリシー アサーションを使用して、エンドポイントが WS\-Addressing の特定のバージョンをサポートすることを示します。 + + 次のポリシー アサーションには、エンドポイント ポリシー サブジェクト \[WS\-PA\] が含まれており、そのエンドポイントで送受信されるメッセージでは WS\-Addressing 2004\/08 を使用する必要があることを示しています。 + +``` + +``` + + このポリシー アサーションは、WS\-Addressing 2004\/08 仕様を補うものです。 + + 次のポリシー アサーションは、送受信されるメッセージでは WS\-Addressing 1.0 を使用する必要があることを示しています。 + +```vb +  +``` + + 次のポリシー アサーションには、エンドポイント ポリシー サブジェクト \[WS\-PA\] が含まれており、そのエンドポイントで送受信されるメッセージでは WS\-Addressing 2004\/08 を使用する必要があることを示しています。 + +``` + +``` + + `wsaw10:UsingAddressing` 要素は、WS\-Addressing\-WSDL から借用したものです。この要素は、この仕様のセクション 3.1.2 に従って、WS\-Policy のコンテキストで使用されます。 + + Addressing を使用しても、WSDL 1.1、SOAP 1.1、および SOAP 1.2 HTTP バインディングのセマンティクスが変更されるわけではありません。たとえば、Addressing と WSDL SOAP 1.x HTTP バインディングを使用するエンドポイントに送信する要求に対して応答が求められている場合、この応答は HTTP 応答を使用して送信する必要があります。 + + HTTP 応答を使用して送信された応答の場合、WS\-AM アサーションは次のようになります。 + +```xml + +``` + + 完全なポリシー アサーションは次のようになる場合があります。 + +```xml + + +    +     + +``` + + ただし、リクエスターとレスポンダー間で 2 つの独立した逆方向の HTTP 接続を確立することによってメリットのあるメッセージ交換パターンがあります。たとえば、レスポンダーによって送信される要求されていない一方向のメッセージなどです。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、基になる 2 つのトランスポート チャネルで、一方のチャネルを入力メッセージに使用し、もう一方を出力メッセージに使用する複合二重チャネルを形成できる機能が用意されています。HTTP トランスポートの場合、複合二重によって 2 つの逆方向の HTTP 接続が実現します。一方の接続はリクエスターがレスポンダーにメッセージを送信するために使用し、もう一方はレスポンダーがリクエスターにメッセージを返すために使用します。 + + 個別の HTTP 要求を使用して送信された応答の場合、WS\-AM アサーションは次のようになります。 + +```xml + +``` + + 完全なポリシー アサーションは次のようになる場合があります。 + +```xml + + +    +``` + + WSDL 1.1 SOAP 1.x HTTP バインディングを使用するエンドポイントで、エンドポイント ポリシー サブジェクト \[WS\-PA\] を含む次のアサーションを使用する場合、リクエスターからレスポンダーおよびレスポンダーからリクエスターへのメッセージ フローにそれぞれ別の逆方向の HTTP 接続を使用する必要があります。 + +``` + +``` + + 上記のステートメントにより、要求メッセージの `wsa:ReplyTo` ヘッダーに関する以下の要件が発生します。 + +- R3514 : エンドポイントが WSDL 1.1 SOAP 1.x HTTP バインディングを使用しており、`wsap10:UsingAddressing` アサーションまたは `wsap:UsingAddressing` アサーションを含み、`cdp:CompositeDuplex` が関連付けられたポリシー代替手段を持つ場合、エンドポイントに送信する要求メッセージには、`[address]` プロパティが "http:\/\/www.w3.org\/2005\/08\/addressing\/anonymous" ではない `ReplyTo` ヘッダーが必要です。 + +- R3515 : エンドポイントに送信する要求メッセージには、`[address]` プロパティが "http:\/\/www.w3.org\/2005\/08\/addressing\/anonymous" である `ReplyTo` ヘッダーが必要です。エンドポイントが WSDL 1.1 SOAP 1.x HTTP バインディングを使用しており、`wsap10:UsingAddressing` アサーションを含み、`cdp:CompositeDuplex` アサーションが関連付けられていないポリシー代替手段を持つ場合、`ReplyTo` ヘッダーはまったく必要ありません。 + +- R3516 : エンドポイントが WSDL 1.1 SOAP 1.x HTTP バインディングを使用しており、`wsap:UsingAddressing` アサーションを含み、`cdp:CompositeDuplex` アサーションが関連付けられていないポリシー代替手段を持つ場合、エンドポイントに送信する要求メッセージには、`[address]` プロパティが "http:\/\/www.w3.org\/2005\/08\/addressing\/anonymous" である `ReplyTo` ヘッダーが必要です。 + + WS\-Addressing の WSDL 仕様では、`wsa:ReplyTo` ヘッダーの要件を示す 3 つのテキスト値 \(required、optional、および prohibited\) を持つ `` 要素を導入することにより、同様のプロトコル バインディングを記述することを試みています \(セクション 3.2\)。残念ながら、このような要素の定義では、要素をアサーションとして使用する代替手段の共通部分をサポートするために、ドメイン固有の拡張を必要とするため、特に WS\-Policy のコンテキストではアサーションとして使用することはできません。また、このような要素の定義は、ネットワーク上のエンドポイントの動作に相反する `ReplyTo` ヘッダーの値を示すため、HTTP トランスポートに固有のものになります。 + +#### アクション定義 + WS\-Addressing 2004\/08 では、`wsdl:portType/wsdl:operation/[wsdl:input | wsdl:output | wsdl:fault]` 要素の `wsa:Action` 属性が定義されています。WS\-Addressing 1.0 WSDL バインディング \(WS\-ADDR10\-WSDL\) では、同様の属性として `wsaw10:Action` が定義されています。 + + この 2 つの属性の唯一の違いは、既定の Action パターンのセマンティクスです。これは、WS\-ADDR のセクション 3.3.2 および WS\-ADDR10\-WSDL のセクション 4.4.4 にそれぞれ記載されています。 + + 同じ `portType` \([!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の用語ではコントラクト\) を共有し、異なるバージョンの WS\-Addressing を使用する 2 つのエンドポイントを持つことは一見合理的に思われます。しかし、Action は `portType` によって定義され、`portType` を実装するエンドポイント間で変更できないことを考えると、両方の既定のアクション パターンをサポートすることは不可能になります。 + + この問題を解決するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では `Action` 属性の単一のバージョンをサポートしています。 + + B3521 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-ADDR10\-WSDL に定義された `wsdl:portType/wsdl:operation/[wsdl:input | wsdl:output | wsdl:fault]` 要素の `wsaw10:Action` 属性を使用して、エンドポイントが使用する WS\-Addressing のバージョンに関係なく、対応するメッセージの `Action` URI を決定します。 + +#### WSDL ポート内でのエンドポイント参照の使用 + WS\-ADDR10\-WSDL のセクション 4.1 では、`wsdl:port` 要素を拡張して、WS\-Addressing の観点でエンドポイントを記述する `` 子要素を含めています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、WS\-Addressing 2004\/08 のこのユーティリティを拡張し、`` が `wsdl:port` の子要素として使用できるようにしています。 + +- R3531 : エンドポイントが `` ポリシー アサーションに関連付けられたポリシー代替手段を持つ場合、対応する `wsdl:port` 要素に `` 子要素を含めることができます。 + +- R3532 : `wsdl:port` に `` 子要素が含まれている場合、`wsa10:EndpointReference/wsa10:Address` 子要素の値は、`wsdl:port`\/`wsdl:location` 兄弟要素の `@address` 属性の値に一致する必要があります。 + +- R3533 : エンドポイントが `` ポリシー アサーションに関連付けられたポリシー代替手段を持つ場合、対応する `wsdl:port` 要素に `` 子要素を含めることができます。 + +- R3534 : `wsdl:port` に `` 子要素が含まれている場合、`wsa:EndpointReference/wsa:Address` 子要素の値は、`wsdl:port`\/`wsdl:location` 兄弟要素の `@address` 属性の値に一致する必要があります。 + +### WS\-Security によるコンポジション + WS\-ADDR および WS\-ADDR10 のセキュリティに関する考慮事項のセクションに従って、メッセージ本文と共にすべてのアドレス指定メッセージ ヘッダーに署名し、これらをバインドすることをお勧めします。 + + メッセージの整合性を保護するために WS\-Security を使用する場合は、メッセージの本文と共に、WS\-Addressing メッセージ ヘッダーと、参照パラメーターまたは参照プロパティ \(または両方\) によって生成されたヘッダーに署名する必要があります。 + +### 例 + +#### 一方向のメッセージ + このシナリオでは、送信者は一方向のメッセージを受信者に送信します。SOAP 1.2、HTTP 1.1、および W3C WS\-Addressing 1.0 を使用します。 + + 要求メッセージの構造 : メッセージ ヘッダーには、`wsa10:To` 要素と `wsa10:Action` 要素が含まれます。メッセージ本文には、アプリケーション名前空間の特定の `` 要素が含まれます。 + + HTTP ヘッダー : POST の送信先は、`wsa10:To` 要素の URI に一致します。 + + Content\-Type ヘッダーには、SOAP 1.2 で必要とされる値 `application/soap+xml` が含まれます。また、`charset` パラメーターと `action` パラメーターも含まれます。Content\-Type ヘッダーの `action` パラメーターは、`wsa10:Action` メッセージ ヘッダーの値に一致します。 + +``` +POST http://fabrikam123.com/Service HTTP/1.1 +Content-Type: application/soap+xml; charset=utf-8; + action="http://fabrikam123.com/Service/OneWay" +Host: 131.107.72.15 +Content-Length: 1501 +Expect: 100-continue +Proxy-Connection: Keep-Alive + + + + http://fabrikam123.com/Service + + + http://fabrikam123.com/Service/OneWay + + + + + Hello World + + + +``` + + 受信側は、空の HTTP 応答と 202 ステータスで応答します。HTTP 応答の一例を次に示します。 + +``` +HTTP/1.1 202 Accepted +Date: Fri, 15 Jul 2005 08:56:07 GMT +Server: Microsoft-IIS/6.0 +MicrosoftOfficeWebServer: 5.0_Pub +X-Powered-By: ASP.NET +X-AspNet-Version: 2.0.50215 +Cache-Control: private +Content-Length: 0 +``` + +## SOAP Message Transmission Optimization Mechanism + ここでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] における HTTP SOAP MTOM 実装の詳細について説明します。MTOM テクノロジは、従来の Text\/XML エンコーディングや [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バイナリ エンコーディングと同じクラスの SOAP メッセージ エンコーディング機構です。MTOM には、次のような機能があります。 + +- XOP によって記述された XML エンコーディングおよびパッケージング機構。XOP は、Base64 で個別のバイナリ部分にエンコードされたバイナリ データを含む XML 情報項目を最適化します。 + +- XML Infoset と XOP パッケージの各バイナリ部分を個別の MIME パートにシリアル化する、XOP パッケージの MIME カプセル化。 + +- SOAP 1.x エンベロープに適用される MIME XOP エンコーディング。 + +- HTTP トランスポート バインディング。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、HTTP 以外のトランスポートで MTOM を使用できます。しかし、ここでは HTTP に焦点を合わせます。 + + MTOM 形式では、MTOM 自体、XOP、および MIME に適用されるさまざまな仕様を利用します。この仕様セットのモジュール性により、形式と処理のセマンティクスの要件を正確に再構築することが若干難しくなります。このセクションでは、MTOM HTTP バインディングの形式と処理の要件について説明します。 + +### MTOM メッセージ エンコーディング + +#### MTOM メッセージの生成 + XOP のセクション 3.1 には、Base64 値を抽象的に定義された XOP パッケージに格納する要素情報項目を使用して、XML をエンコーディングするプロセスが記載されています。 + + 次の一連の手順は、MTOM 固有のエンコーディング プロセスを示しています。 + +1. エンコードする SOAP エンベロープに、`[namespace name]` が "http:\/\/www.w3.org\/2004\/08\/xop\/include" で、`[local name]` が `Include` である要素情報項目が含まれていないことを確認します。 + +2. 空の MIME パッケージを作成します。 + +3. 元の XML Infoset 内で、最適化する要素情報項目を特定します。項目を最適化する場合、要素情報項目の `[children]` を構成する文字は、`xs:base64Binary` の正規形式であることが必要です \(XSD\-2 セクション 3.2.16 の base64Binary を参照\)。また、空白以外のコンテンツの前、インライン、または後に、空白文字を含めることはできません。 + +4. 元の SOAP エンベロープのコピーである XOP SOAP エンベロープを作成します。ただし、このコピーには、前の手順で特定した各要素情報項目の子が含まれます。これらの子は、以下の手順に従って構築された `xop:Include` 要素情報項目に置き換えられています。 + + 1. 置換対象の文字を Base64 でエンコードされたデータとして処理することにより、バイナリ データに変換します。 + + 2. R3133 および R3134 の各要件を満たす Content\-ID ヘッダーの一意の値を生成します。 + + 3. バイナリ値を使用して、Content\-Transfer\-Encoding MIME ヘッダーを生成します。 + + 4. 最適化する要素情報項目 \(新しく挿入する `xop:Include` 要素情報項目の \[parent\]\) に、`xmime:contentType` 属性情報項目が含まれている場合、`xmime:contentType` 属性の値を使用して Content\-Type MIME ヘッダーを生成します。 + + 5. Base64 として処理された置換対象文字からデコードされたバイナリ データ、Content\-ID ヘッダー \(手順 4b. で生成\)、Content\- Transfer\-Encoding ヘッダー \(手順 4c. で生成\)、および Content\-Type ヘッダー \(手順 4d. で生成した場合\) で構成されたコンテンツを含む、新しいバイナリ MIME パートを生成します。 + + 6. 値 cid: uri を持つ `xop:Include` 要素に `href` 属性を追加します。uri は、手順 4b. で生成した Content\-ID ヘッダーの値から派生したものです。囲んでいる "\<" と "\>" を削除し、残りの文字列を URL エスケープし、プレフィックス `cid:` を追加します。RFC1738 と RFC2396 に従って、次の最小限の文字セットをエスケープする必要があります。その他の文字もエスケープすることができます。 + + ``` + Hexadecimal 00-1F , 7F, 20, "<" | ">" | "#" | "%" | <"> + "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`" | "~" | "^" + ``` + +5. 手順 4. の XOP SOAP エンベロープを含むルート MIME パートを作成します。 + +6. HTTP Content\-Type ヘッダーなどの HTTP ヘッダーを書き込みます。 + +7. MIME パッケージを書き込みます。 + +#### MTOM メッセージの処理 + MTOM メッセージの処理は、前述の「MTOM メッセージの生成」で説明したプロセスと正反対のプロセスになります。 + +1. ルート MIME パートに Content\-Type `application/xop+xml` が含まれていることを確認します。 + +2. パッケージのルート MIME パートを XML ドキュメントとして解析して、SOAP エンベロープを作成します。文字エンコーディングは、ルート MIME パートの Content\-Type の `charset` パラメーターによって決まります。 + +3. 作成した SOAP エンベロープ内の各要素情報項目について、以下の処理を行います。これらの要素情報項目には、\[children\] プロパティの唯一のメンバーとして、`xop:Include` 要素情報項目が含まれています。 + + 1. プレフィックス `cid:` を削除し、`xop:Include` 要素の `@href` 属性の値に含まれるすべての URI エスケープ シーケンスのエスケープを解除します \(RFC 2396\)。エスケープ解除した文字列を "\<" と "\>" で囲みます。 + + 2. Content\-ID ヘッダーの値が手順 3a. で取得した文字列に一致する MIME パートを検索します。 + + 3. 各項目の `children` プロパティに出現する `xop:Include` 要素情報項目を、手順 3b. で特定した MIME パートのエンティティ本体の正規 Base64 エンコーディング \(XSD\-2 セクション 3.2.16 の base64Binary を参照\) を表す文字情報項目に置き換えます \(`xop:Include` 要素情報項目をパッケージ パーツから再構築したデータに効率的に置き換えます\)。 + +#### HTTP Content\-Type ヘッダー + ここでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で使用する、SOAP 1.x MTOM でエンコードされたメッセージの HTTP Content\-Type ヘッダーの形式について説明します。これらの形式は、MTOM 仕様に記載された要件と、MTOM および RFC 2387 に基づいています。 + +- R4131 : HTTP Content\-Type ヘッダーには、multipart\/related \(大文字と小文字は区別されません\) とそのパラメーターの値が必要です。パラメーター名では、大文字と小文字は区別されません。パラメーターの順序は重要ではありません。 + +- MIME メッセージの Content\-Type ヘッダーのすべての Backus\-Naur Form \(BNF\) については、RFC 2045 のセクション 5.1 に記載されています。 + +- R4132 : HTTP Content\-Type ヘッダーには、二重引用符で囲まれた値 `application/xop+xml` が指定された型パラメーターが必要です。 + + 二重引用符を使用する際の要件は、RFC 2387 に明示されているわけではありませんが、ほとんどの場合、multipart\/related メディア タイプのすべてのパラメーターに、"@" や "\/" などの予約された文字が含まれているため、二重引用符が必要であることが確認されています。 + +- R4133 : HTTP Content\-Type ヘッダーには、start パラメーターを含める必要があります。このパラメーターには、SOAP 1.x エンベロープを含む MIME パートの Content\-ID ヘッダーの値を二重引用符で囲んで指定します。start パラメーターを省略する場合は、最初の MIME パートに SOAP 1.x エンベロープを含める必要があります。 + +- R4134 : SOAP 1.1 MTOM でエンコードされたメッセージの HTTP Content\-Type ヘッダーには、start\-info パラメーターを含める必要があります。このパラメーターには、値 text\/xml を二重引用符で囲んで指定します。 + +- R4135 : SOAP 1.2 MTOM でエンコードされたメッセージの HTTP Content\-Type ヘッダーには、start\-info パラメーターを含める必要があります。このパラメーターには、値 `application/soap+xml` を二重引用符で囲んで指定します。 + +- R4136 : SOAP 1.x MTOM でエンコードされたメッセージの HTTP Content\-Type ヘッダーには、boundary パラメーターを含める必要があります。このパラメーターには、RFC 2046 のセクション 5.1.1 で定義された MIME 境界の BNF に一致する \(二重引用符で囲まれた\) 値を指定します。 + + ``` + boundary := 0*69 bcharsnospace + bchars := bcharsnospace / " " + bcharsnospace := DIGIT / ALPHA / "'" / "(" / ")" / "+" + / "_" / "," / "-" / "." / "/" / ":" / "=" / "?" + ``` + + 次に例を示します。 + + 正 + + ``` + Content-Type: multipart/related; type="application/xop+xml";start=" ";boundary="uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=1";start-info="text/xml" + + ``` + + 正 + + ``` + Content-Type: Multipart/Related; type="application/xop+xml";start-info="text/xml";boundary="uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=1" + + ``` + + 誤 + + ``` + Content-Type: Multipart/Related; type=application/xop+xml;start=" ";start-info="text/xml";boundary="uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=1" + ``` + +#### Infoset MIME パート + SOAP 1.x エンベロープは、XOP MIME パッケージのルート部分としてカプセル化され、多くの場合、`infoset` パートと呼ばれます。 + +- R4141 : SOAP 1.x エンベロープは、XOP MIME パッケージのルート部分としてカプセル化する必要があります。これは `infoset` パートと呼ばれ、HTTP Content\-Type から参照されます。 + +- R4142 : SOAP `Infoset` パートには、`Content-ID`、`Content-Transfer-Encoding`、および `Content-Type` の各 MIME ヘッダーを含める必要があります。 + + Content\-ID ヘッダーの形式は、RFC 2045 で次のように定義されています。 + +``` +"Content-ID" ":" msg-id +``` + + ここで、`msg-id` は、RFC 2822 で次のように定義されています \(RFC 2045 で参照されている RFC 822 は、RFC 2822 に置き換えられています\)。 + +``` +msg-id    =       [CFWS] "<" id-left "@" id-right ">" [CFWS] +``` + + msg\-id は、"\<" と "\>" で囲まれた有効な電子メール アドレスです。`[CFWS]` プレフィックスとサフィックスは、コメントを伝達するために RFC 2822 で追加されたものですが、相互運用性を維持する場合は、使用しないことをお勧めします。 + + R4143 : Infoset MIME パートの Content\-ID ヘッダーの値は、RFC 2822 の `msg-id` の定義内容から `[CFWS]` プレフィックスとサフィックスの部分を省略した形式に従う必要があります。 + + 多くの MIME 実装では、"\<" と "\>" で囲まれた値が電子メール アドレスであるという要件を緩和し、電子メール アドレス以外に、"\<" と "\>" で囲まれた `absoluteURI` を使用しています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のこのバージョンでは、次の形式の Content\-ID MIME ヘッダーの値を使用します。 + +``` +Content-ID: +``` + + R4144 : MTOM プロセッサは、次の厳密でない `msg-id` に一致する Content\-ID ヘッダーの値を受け入れる必要があります。 + +``` +msg-id-relaxed =     [CFWS] "<" (absoluteURI | mail-address) ">" [CFWS] +mail-address = id-left "@" id-right +``` + + MIME \(RFC 2045\) では、MIME パートのコンテンツのエンコーディングを伝達する Content\-Transfer\-Encoding ヘッダーを使用できます。Content\-Transfer\-Encoding に定義されている既定値は 7 ビットですが、これはほとんどの SOAP メッセージに適していません。そのため、Content\-Transfer\-Encoding ヘッダーの相互運用性を高めるために、以下を行う必要があります。 + +- R4145 : SOAP Infoset パートに、Content\-Transfer\-Encoding ヘッダーを含める必要があります。 + +- R4146 : SOAP エンベロープの文字エンコーディングが UTF\-8 の場合、Content\-Transfer\-Encoding ヘッダーの値は 8 ビットであることが必要です。 + +- R4147 : SOAP エンベロープの文字エンコーディングが UTF\-16 の場合、Content\-Transfer\-Encoding ヘッダーの値はバイナリであることが必要です。 + +- 以下の要件は、XOP のセクション 5 に基づいています。 + +- R4148 : SOAP1.1 Infoset パートに、application\/xop\+xml メディア タイプ、および type\="text\/xml" パラメーターと charset パラメーターを指定した Content\-Type ヘッダーを含める必要があります。 + + ``` + Content-Type: application/xop+xml; + charset=utf-8;type="text/xml" + ``` + +- R4149 : SOAP1.2 Infoset パートに、`application/xop+xml` メディア タイプ、および type\="`application/soap+xml`" パラメーターと `charset` パラメーターを指定した Content\-Type ヘッダーを含める必要があります。 + + ``` + Content-Type: application/xop+xml; + charset=utf-8;type="application/soap+xml" + ``` + + XOP では、`application/xop+xml` の `charset` パラメーターは省略可能と定義されていますが、`text/xml` メディア タイプの `charset` パラメーターについては、BP 1.1 の要件と同様の相互運用性が必要とされます。 + +- R41410 : `type` パラメーターと `charset` パラメーターは、SOAP 1.x Infoset パートの Content\-Type ヘッダーに含まれている必要があります。 + +#### WCF エンドポイントによる MTOM のサポート + MTOM の目的は、SOAP メッセージをエンコードして、Base64 でエンコードされたデータを最適化することです。制約は次のとおりです。 + +- R4151 : Base64 でエンコードされたデータを含むすべての要素情報項目を最適化できます。 + +- B4152 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、Base64 でエンコードされたデータを含み、長さが 1024 バイトを上回る要素情報項目を最適化します。 + + MTOM を使用するように構成された [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントは、常に MTOM でエンコードされたメッセージを送信します。必要な条件を満たすパートがない場合でも、メッセージは MTOM でエンコードされます \(SOAP エンベロープを含む単一の MIME パートを持つ MIME パッケージとしてシリアル化されます\)。 + +### MTOM の WS\-Policy アサーション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、次のポリシー アサーションを使用して、エンドポイントによる MTOM の使用方法を示します。 + +``` + +``` + +- R4211 : 上記のポリシー アサーションには、エンドポイント ポリシー サブジェクトが含まれており、MTOM を使用して、エンドポイントで送受信されるすべてのメッセージを最適化する必要があることを示しています。 + +- B4212 : MTOM による最適化を使用するように構成されている場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントは、対応する `wsdl:binding` に関連付けられたポリシーに MTOM ポリシー アサーションを追加します。 + +### WS\-Security によるコンポジション + MTOM は、`text/xml` および [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バイナリ XML と同様のエンコーディング機構です。MTOM は、WS\-Security とその他の WS\-\* プロトコルによる自然なコンポジションを提供します。WS\-Security を使用してセキュリティ保護されたメッセージは、MTOM を使用して最適化できます。 + +### 例 + +#### MTOM を使用してエンコードされた WCF SOAP 1.1 メッセージ + +``` +POST http://131.107.72.15/Mtom/svc/service.svc/Soap11MtomUTF8 HTTP/1.1 +SOAPAction: "http://xmlsoap.org/echoBinaryAsString" +Content-Type: multipart/related;type="application/xop+xml"; + start="";start-info="text/xml"; + boundary="uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=1" +Host: 131.107.72.15 +Content-Length: 1501 +--uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=1 +Content-ID: +Content-Transfer-Encoding: 8bit +Content-Type: application/xop+xml;charset=utf-8;type="text/xml" + + + + + + + + + +--uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=1 +Content-ID: +Content-Transfer-Encoding: binary +Content-Type: application/octet-stream +…Binary Content.. +--uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=1 +``` + +#### MTOM を使用してエンコードされた WCF Secure SOAP 1.2 メッセージ + この例では、WS\-Security を使用して保護されたメッセージを MTOM と SOAP 1.2 を使用してエンコードします。エンコーディングの対象として特定されたバイナリ部分は、`BinarySecurityToken`、暗号化された署名に対応する `EncryptedData` の `CipherValue`、および暗号化された本文の内容です。`EncryptedKey` の `CipherValue` は、長さが 1024 バイト未満であるため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] による最適化の対象として特定されませんでした。 + +``` +POST http://131.107.72.15/Mtom/service.svc/Soap12MtomSecureSignEncrypt HTTP/1.1 +Content-Type: multipart/related; type="application/xop+xml"; + start=""; + boundary="uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=3"; + start-info="application/soap+xml"; + action="http://xmlsoap.org/echoBinaryAsString" +Host: 131.107.72.15 +Content-Length: 1941 +--uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=3 +Content-ID: +Content-Transfer-Encoding: 8bit +Content-Type: application/xop+xml;charset=utf-8;type="application/soap+xml" + + + + + 2005-09-09T06:57:32.488Z + 2005-09-09T07:02:32.488Z + + + + + + + + + Xeg55vRyK3ZhAEhEf+YT0z986L0= + + + oQfpxwT8/SAGyZQzKE2b4yO6dXuQj7pwJ+5CGL3Rf7C06bQ5ttMoQ9GLJcQYkXTzin+WwHEgs5bj5ml9HKTW9QAU5JJ6lksdymmQvWP5ZtGPBVchO4sofEGoCKmBiZL/DYS/cnbzgnc/3a6NYnc10y2fWGaGLiqa00zijAw7o0Y= + + + + + + + OrEPRX7fISIS4sXYWPMv3g== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +--uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=3 +Content-ID: +Content-Transfer-Encoding: binary +Content-Type: application/octet-stream +...Binary content of BinarySecurityToken - X509 Certificate... +--uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=3 +Content-ID: +Content-Transfer-Encoding: binary +Content-Type: application/octet-stream +...Binary serialization of the encrypted primary signature... +--uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=3 +Content-ID: +Content-Transfer-Encoding: binary +Content-Type: application/octet-stream +...Binary serialization of the encrypted Body... +--uuid:0ca0e16e-feb1-426c-97d8-c4508ada5e82+id=3-- +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/metadata-architecture-overview.md b/docs/framework/wcf/feature-details/metadata-architecture-overview.md new file mode 100644 index 00000000000..29ac841c3e2 --- /dev/null +++ b/docs/framework/wcf/feature-details/metadata-architecture-overview.md @@ -0,0 +1,105 @@ +--- +title: "メタデータ アーキテクチャの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "メタデータ [WCF], 概要" +ms.assetid: 1d37645e-086d-4d68-a358-f3c5b6e8205e +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# メタデータ アーキテクチャの概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、サービス メタデータをエクスポート、公開、取得、およびインポートするための豊富なインフラストラクチャが用意されています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでは、メタデータを使用してサービスのエンドポイントとの対話方法を記述し、Svcutil.exe などのツールでサービスにアクセスするためのクライアント コードを自動的に生成できるようにします。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メタデータ インフラストラクチャを構成するほとんどの型が、 名前空間に存在します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、 クラスを使用して、サービス内のエンドポイントを記述します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用すると、サービス エンドポイント用のメタデータを生成したり、サービス メタデータをインポートして インスタンスを生成したりできます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、 型のインスタンスとしてサービスのメタデータを表現します。その構造は、WS\-MetadataExchange で定義されているメタデータのシリアル化形式に強く関連付けられています。 型は、Web サービス記述言語 \(WSDL: Web Services Description Language\) ドキュメント、XML スキーマ ドキュメント、WS\-Policy 表現などの実際のサービス メタデータを インスタンスのコレクションとしてバンドルします。各 インスタンスには、特定のメタデータ言語と識別子が含まれます。 はその プロパティに、次のアイテムを含むことができます。 + +- 生のメタデータ。 + +- のインスタンス。 + +- のインスタンス。 + + インスタンスは別のメタデータ交換 \(MEX\) エンドポイントをポイントし、 インスタンスは HTTP URL を使用してメタデータ ドキュメントをポイントします。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、サービスで実装するサービス エンドポイント、サービス コントラクト、バインディング、メッセージ交換パターン、メッセージ、およびエラー メッセージを記述するために WSDL ドキュメントの使用をサポートします。サービスで使用されるデータ型は、XML スキーマを使用して WSDL ドキュメントに記述されます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][スキーマのインポートとエクスポート](../../../../docs/framework/wcf/feature-details/schema-import-and-export.md).[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用すると、サービス動作、コントラクト動作、およびバインディング要素の WSDL 拡張をエクスポートおよびインポートでき、この拡張により、サービスの機能が拡張されます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][WCF 拡張に対するカスタム メタデータのエクスポート](../../../../docs/framework/wcf/extending/exporting-custom-metadata-for-a-wcf-extension.md). + +## サービス メタデータのエクスポート + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、*メタデータのエクスポート*は、サービス エンドポイントを説明したり、それらを対応する標準化表現に投影したりするプロセスです。クライアントはこのプロセスを利用してサービスの使用方法を理解します。メタデータを インスタンスからエクスポートするには、 抽象クラスの実装を使用します。 の実装によって、 インスタンスにカプセル化されたメタデータが生成されます。 + + クラスには、エンドポイント バインディングの機能と要件、エンドポイントに関連付けられた処理、メッセージ、エラーを記述するポリシー式を生成するためのフレームワークが用意されています。これらのポリシー式は、 インスタンスにキャプチャされます。 を実装すると、生成したメタデータにこれらのポリシー式を結び付けることができます。 + + は、 オブジェクトを の実装で使用するために生成するときに、 のバインディングで インターフェイスを実装する各 を呼び出します。 型のカスタム実装の インターフェイスを実装することで、新規のポリシー アサーションをエクスポートできます。 + + 型は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に含まれる 抽象クラスの実装です。 型は、結び付けられたポリシー式を使用して WSDL メタデータを生成します。 + + サービス エンドポイントでのエンドポイント動作、コントラクト動作、またはバインディング要素のカスタム WSDL メタデータまたは WSDL 拡張をエクスポートするには、 インターフェイスを実装する必要があります。 は WSDL ドキュメントの生成時に、 インターフェイスを実装するバインディング要素、処理動作、コントラクト動作、およびエンドポイント動作の インスタンスを参照します。 + +## サービス メタデータの公開 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは 1 つ以上のメタデータ エンドポイントを公開することにより、メタデータを公開します。サービス メタデータを公開すると、サービス メタデータで MEX や HTTP\/GET 要求などの標準化プロトコルを使用できるようになります。メタデータ エンドポイントは、アドレス、バインディング、およびコントラクトを持つという点で、他のサービス エンドポイントと似ています。メタデータ エンドポイントは、構成またはコードを使用してサービス ホストに追加できます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのメタデータ エンドポイントを公開するには、最初に サービス動作のインスタンスをサービスに追加しておく必要があります。サービスに インスタンスを追加することによって、1 つ以上のメタデータ エンドポイントを公開することでメタデータを公開する機能がサービスに追加されます。 サービス動作を追加すると、MEX プロトコルをサポートするメタデータ エンドポイント、または HTTP\/GET 要求に応答するメタデータ エンドポイントを公開できます。 + + MEX プロトコルを使用するメタデータ エンドポイントを追加するには、IMetadataExchange という名前のサービス コントラクトを使用するサービス エンドポイントをサービス ホストに追加します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] により、このサービス コントラクト名を持つ インターフェイスが定義されます。WS\-MetadataExchange のエンドポイント、つまり MEX エンドポイントは、 クラスで静的ファクトリ メソッドが公開する 4 つの既定のバインディングの 1 つを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ツール \(Svcutil.exe など\) によって使用される既定のバインディングを照合できます。また、カスタム バインディングを使用して MEX メタデータ エンドポイントを構成することもできます。 + + を使用して、サービス内のすべてのサービス エンドポイント用のメタデータをエクスポートします。サービスからメタデータをエクスポートする方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メタデータのエクスポートとインポート](../../../../docs/framework/wcf/feature-details/exporting-and-importing-metadata.md)」を参照してください。 + + は、 インスタンスを拡張としてサービス ホストに追加することで、サービス ホストを拡張します。 により、メタデータ公開プロトコルを実装することができます。また、 を使用して、 プロパティにアクセスすることにより、実行時にサービスのメタデータを取得できます。 + +> [!CAUTION] +> MEX エンドポイントをアプリケーション構成ファイルに追加した後で、 をコード内のサービス ホストに追加しようとすると、次の例外が発生します。 +> +> System.InvalidOperationException: コントラクト名 'IMetadataExchange' は、サービス Service1 によって実装されたコントラクトの一覧に見つかりませんでした。ServiceMetadataBehavior を構成ファイルまたは ServiceHost ディレクトリに直接追加してこのコントラクトのサポートを有効にしてください。 +> +> を構成ファイルに追加するか、またはエンドポイントと の両方をコードに追加することにより、この問題を回避できます。 +> +> アプリケーション構成ファイルへの の追加の例については、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」を参照してください。コードへの の追加の例については、「[自己ホスト](../../../../docs/framework/wcf/samples/self-host.md)」のサンプルを参照してください。 + +> [!CAUTION] +> それぞれに同じ名前の操作が含まれている 2 つ異なるサービス コントラクトを公開するサービスのメタデータを公開すると、例外がスローされます。たとえば、Get\(Car c\) 操作を含む ICarService という名前のサービス コントラクトを公開するサービスがあり、その同じサービスが Get\(Book b\) 操作を含む IBookService という名前のサービス コントラクトを公開する場合、サービスのメタデータを生成するときに、例外がスローされるか、エラー メッセージが表示されます。この問題を回避するには、次のいずれかの操作を実行します。 +> +> - 操作の名前を変更する。 +> - を別の名前に設定する。 +> - プロパティを使用して、操作の名前空間のいずれかを別の名前空間に設定する。 + +## サービス メタデータの取得 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は WS\-MetadataExchange、HTTP などの標準化プロトコルを使用してサービス メタデータを取得できます。これらのプロトコルはいずれも、 型でサポートされます。アドレスとオプションのバインディングを提供することによって、 型を使用して、サービス メタデータを取得します。 インスタンスで使用するバインディングは、 静的クラスの既定のバインディング、ユーザー指定のバインディング、`IMetadataExchange` コントラクト用のエンドポイント構成から読み込まれたバインディングのいずれかです。 は同様に、 型を使用して、メタデータへの HTTP URL 参照を解決できます。 + + 既定では、 インスタンスは、1 つの インスタンスに結び付けられています。 によって使用される インスタンスは、 仮想メソッドを上書きすることによって変更または置換することができます。同様に、 仮想メソッドをオーバーライドすることによって、HTTP\/GET 要求を行うために が使用する インスタンスを変更または置換できます。 + + Svcutil.exe ツールを使用して、**\/target:metadata** スイッチとアドレスを渡すことにより、WS\-MetadataExchange 要求または HTTP\/GET 要求を使用してサービス メタデータを取得できます。Svcutil.exe は指定したアドレスでメタデータをダウンロードし、ディスクにファイルを保存します。Svcutil.exe は、 インスタンスを内部的に使用し、Svcutil.exe に渡されたアドレスのスキームに一致する名前を持つ MEX エンドポイント構成が存在する場合は、これをアプリケーション構成ファイルから読み込みます。存在しない場合、Svcutil.exe は、 静的ファクトリ型によって定義されたバインディングの 1 つを既定で使用します。 + +## サービス メタデータのインポート + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、メタデータのインポートとは、サービス、またはサービスのコンポーネントの抽象表現をサービスのメタデータから生成するプロセスです。たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、 インスタンス、 インスタンス、または インスタンスをサービスの WSDL ドキュメントからインポートできます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービス メタデータをインポートするには、 抽象クラスの実装を使用します。 クラスから派生した型では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の WS\-Policy インポート ロジックを利用したメタデータ形式のインポートをサポートします。 + + の実装は、 オブジェクトでサービス メタデータに結び付けられたポリシー表現を収集します。その後、 は、 プロパティ内の インターフェイスの実装を呼び出すことによって、メタデータのインポートの一部として、ポリシーを処理します。 + + インスタンスの コレクションに インターフェイスの独自の実装を追加することによって、新しいポリシー アサーションをインポートするためのサポートを に追加できます。または、クライアント アプリケーション構成ファイルにポリシー インポート拡張を登録できます。 + + 型は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に含まれる 抽象クラスの実装です。 型は、 オブジェクトにまとめられた、結び付けられているポリシーを使用して WSDL メタデータをインポートします。 + + インターフェイスを実装し、この実装を インスタンスの プロパティに追加することで、WSDL 拡張のインポートのサポートを追加できます。 は、クライアント アプリケーション構成ファイルに登録された インターフェイスの実装を読み込むこともできます。 + +## 動的なバインド + エンドポイントのバインドが変化するイベントでサービス エンドポイントへのチャネルを作成する、または、同じコントラクトを使用しているがバインドが異なるエンドポイントへのチャネルを作成するために使用するバインドを動的に更新することができます。 静的クラスを使用して、特定のコントラクトを実装しているサービス エンドポイントのメタデータを、実行時に取得またはインポートできます。その後、インポートした オブジェクトを使用して、必要なエンドポイントに対するクライアントまたはチャネル ファクトリを作成できます。 + +## 参照 + + [メタデータ形式](../../../../docs/framework/wcf/feature-details/metadata-formats.md) + [メタデータのエクスポートとインポート](../../../../docs/framework/wcf/feature-details/exporting-and-importing-metadata.md) + [メタデータの公開](../../../../docs/framework/wcf/feature-details/publishing-metadata.md) + [メタデータを取得する](../../../../docs/framework/wcf/feature-details/retrieving-metadata.md) + [メタデータを使用する](../../../../docs/framework/wcf/feature-details/using-metadata.md) + [メタデータを使用する場合のセキュリティ上の考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-with-metadata.md) + [メタデータ システムの拡張](../../../../docs/framework/wcf/extending/extending-the-metadata-system.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/metadata-formats.md b/docs/framework/wcf/feature-details/metadata-formats.md new file mode 100644 index 00000000000..7509efc241c --- /dev/null +++ b/docs/framework/wcf/feature-details/metadata-formats.md @@ -0,0 +1,35 @@ +--- +title: "メタデータ形式 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: baad1e68-28fc-4a6a-8a43-75e47e7fa871 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# メタデータ形式 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、次の表に示すメタデータ形式をサポートしています。 + +## メタデータの仕様と用途 + +|プロトコル|仕様と用途| +|-----------|-----------| +|WSDL 1.1|[Web Services Description Language \(WSDL\) 1.1](http://go.microsoft.com/fwlink/?LinkId=94859)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、サービスの記述に Web サービス記述言語 \(WSDL\) を使用します。| +|XML スキーマ|[XML Schema Part 2: Datatypes Second Edition](http://go.microsoft.com/fwlink/?LinkId=94861) および [XML Schema Part 1: Structures Second Edition](http://go.microsoft.com/fwlink/?LinkId=94862)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、メッセージ内で使用されるデータ型の記述に XML スキーマを使用します。| +|WS\-Policy|[Web Services Policy 1.2 \- Framework \(WS\-Policy\)](http://go.microsoft.com/fwlink/?LinkId=94864)

[Web Services Policy 1.5 \- Framework](http://go.microsoft.com/fwlink/?LinkId=94865)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ドメイン固有のアサーションと共に WS\-Policy 1.2 または 1.5 の仕様を使用して、サービス要件と機能を記述します。| +|WS\-PolicyAttachments|[Web Services Policy 1.2 \- Attachment \(WS\-PolicyAttachment\)](http://go.microsoft.com/fwlink/?LinkId=94866)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、WSDL のさまざまなスコープにポリシー表現を関連付けるために、WS\-PolicyAttachments が実装されています。| +|WS\-Metadata Exchange|[Web Services Metadata Exchange \(WS\-MetadataExchange\) version 1.1](http://go.microsoft.com/fwlink/?LinkId=94868)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、XML スキーマ、WSDL、WS\-Policy を取得するために WS\-MetadataExchange が実装されています。| +|WS Addressing Binding for WSDL|[Web Services Addressing 1.0 \- WSDL Binding](http://go.microsoft.com/fwlink/?LinkId=94869)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、WSDL でアドレス指定情報を関連付けるために、WS\-Addressing Binding for WSDL が実装されています。| + +## 参照 + [システム標準の相互運用性バインディングがサポートしている Web サービス プロトコル](../../../../docs/framework/wcf/feature-details/web-services-protocols-supported-by-system-provided-interoperability-bindings.md) + [WSDL とポリシー](../../../../docs/framework/wcf/feature-details/wsdl-and-policy.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/metadata.md b/docs/framework/wcf/feature-details/metadata.md new file mode 100644 index 00000000000..202d43a9c16 --- /dev/null +++ b/docs/framework/wcf/feature-details/metadata.md @@ -0,0 +1,47 @@ +--- +title: "メタデータ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "メタデータ [WCF]" +ms.assetid: 66a61bd0-18d3-4e7e-bf8b-177a10ac2f60 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# メタデータ +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、サービス メタデータをエクスポート、公開、取得、およびインポートするためのインフラストラクチャが用意されています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでは、メタデータを使用してサービスのエンドポイントとの対話方法を記述し、Svcutil.exe などのツールでサービスにアクセスするためのクライアント コードを自動的に生成できるようにします。 + +## このセクションの内容 + [メタデータ アーキテクチャの概要](../../../../docs/framework/wcf/feature-details/metadata-architecture-overview.md) + メタデータ アーキテクチャの全般的な概要です。 + + [メタデータ形式](../../../../docs/framework/wcf/feature-details/metadata-formats.md) + さまざまなメタデータ形式について説明します。 + + [メタデータのエクスポートとインポート](../../../../docs/framework/wcf/feature-details/exporting-and-importing-metadata.md) + メタデータをエクスポートおよびインポートする方法について説明します。 + + [メタデータの公開](../../../../docs/framework/wcf/feature-details/publishing-metadata.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によってメタデータが公開される方法を説明します。 + + [メタデータを取得する](../../../../docs/framework/wcf/feature-details/retrieving-metadata.md) + メタデータを取得するためのさまざまな方法について説明します。 + + [メタデータを使用する](../../../../docs/framework/wcf/feature-details/using-metadata.md) + サービス メタデータを使用するためのさまざまな方法について説明します。 + + [メタデータを使用する場合のセキュリティ上の考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-with-metadata.md) + サービス メタデータを処理する際のセキュリティ上の重要な考慮事項について説明します。 + +## 参照 + [メタデータ システムの拡張](../../../../docs/framework/wcf/extending/extending-the-metadata-system.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/middle-tier-client-applications.md b/docs/framework/wcf/feature-details/middle-tier-client-applications.md new file mode 100644 index 00000000000..3d545358564 --- /dev/null +++ b/docs/framework/wcf/feature-details/middle-tier-client-applications.md @@ -0,0 +1,46 @@ +--- +title: "中間層クライアント アプリケーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f9714a64-d0ae-4a98-bca0-5d370fdbd631 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 中間層クライアント アプリケーション +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用する中間層クライアント アプリケーション固有のさまざまな問題について説明します。 + +## 中間層クライアントのパフォーマンス向上 + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] を使用する Web サービスなど従来の通信技術と比べ、豊富な機能セットを備えた [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント インスタンスの作成が複雑になる場合があります。 たとえば、 オブジェクトを開いている場合、サービスとの間にセキュリティで保護されたセッションを確立できますが、そのぶんクライアント インスタンスの起動時間が長くなります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントはいくつかの呼び出しを実行してから閉じるため、通常、このような追加機能がクライアント アプリケーションに大きな影響を与えることはありません。 + + ただし、中間層クライアント アプリケーションは、多くの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトをすばやく作成できるので、その結果、初期化要件が増加します。 サービスを呼び出すときに中間層アプリケーションのパフォーマンスを向上させる方法は主に 2 つあります。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトをキャッシュし、以降の呼び出しで可能であればそれを再利用します。 + +- オブジェクトを作成し、そのオブジェクトを使用して呼び出しごとに新しい [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント チャネルを作成します。 + + これらの方法を使用するときに検討すべきいくつかの問題があります。 + +- サービスがセッションを使用してクライアント固有の状態を維持する場合、サービスの状態が中間層クライアントの状態に関連付けられているため、クライアント層の複数の要求を持つ中間層の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを再利用することはできません。 + +- サービスがクライアントごとに認証を実行する必要がある場合、中間層のクライアント資格情報を [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント \(または \) の作成後に変更できないため、中間層の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント \(または [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント チャネル オブジェクト\) を再利用するのではなく、受信要求ごとに新しいクライアントを中間層に作成する必要があります。 + +- チャネルにより作成されたチャネルとクライアントは、スレッド セーフですが複数のメッセージをネットワークに同時に書き込むことをサポートしていない場合があります。 大容量メッセージ \(特にストリーミング\) を送信すると、送信操作はブロックされ別の送信が完了するまで待機する場合があります。 チャネルを再利用するサービスに制御フローが戻った場合、これにより、同時性の欠如とデッドロックの可能性という 2 種類の問題が発生します \(つまり、共有クライアントがサービスを呼び出すと、そのコード パスは結果的に共有クライアントにコールバックします\)。 これは、再利用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの型には左右されません。 + +- チャネルを共有しているかどうかに関係なく、エラーの発生したチャネルを処理する必要があります。 ただし、チャネルを再利用するときに、エラーの発生しているチャネルは複数の保留中の要求を削除するか送信することができます。 + + 複数の要求に対してクライアントを再利用するためのベスト プラクティスが示された例については、「[ASP.NET クライアントでのデータ バインディング](../../../../docs/framework/wcf/samples/data-binding-in-an-aspnet-client.md)」を参照してください。 + + さらに、 を使用してシリアル化できるデータ型を使用するクライアントの起動時のパフォーマンスを向上したり、実行時にこのようなデータ型のシリアル化コードを生成およびコンパイルしたりできます \(この場合、起動時のパフォーマンスが低下することがあります\)。 [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用すると、必要なシリアル化コードをアプリケーションのコンパイル済みアセンブリから生成することで、このようなアプリケーションの起動時のパフォーマンスを改善できます。 詳細については、「[方法 : XmlSerializer を使用する WCF クライアント アプリケーションの起動時間を短縮する](../../../../docs/framework/wcf/feature-details/startup-time-of-wcf-client-applications-using-the-xmlserializer.md)」を参照してください。 + +## 参照 + [WCF クライアントを使用したサービスへのアクセス](../../../../docs/framework/wcf/feature-details/accessing-services-using-a-client.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/migrate-asp-net-web-service-client-to-wcf.md b/docs/framework/wcf/feature-details/migrate-asp-net-web-service-client-to-wcf.md new file mode 100644 index 00000000000..1eee9573760 --- /dev/null +++ b/docs/framework/wcf/feature-details/migrate-asp-net-web-service-client-to-wcf.md @@ -0,0 +1,39 @@ +--- +title: "方法 : ASP.NET Web サービス クライアント コードを Windows Communication Foundation に移行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2e0a22a7-e1d5-4718-8997-4319a7cd9027 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 方法 : ASP.NET Web サービス クライアント コードを Windows Communication Foundation に移行する +次の手順では、ASP.NET Web サービス クライアント コードを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に移行するために従う必要のある大まかな手順を説明します。 + +## 手順 + +#### ASP.NET Web サービス クライアント コードを WCF に移行するには + +1. クライアントの包括的なテスト セットが存在することを確認します。 + +2. Visual Studio 2005 を使用して、クライアント アプリケーションを .NET 2.0 にアップグレードします。テスト セットを実行します。 + +3. クライアント プロジェクトから ASP.NET クライアント コードを削除します。このコードは、WSDL.exe ツールを使用して生成したモジュールにあります。 + +4. [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント コードを生成します。このコードをクライアント プロジェクトに追加し、構成の出力をクライアントの既存の構成ファイルにマージします。 + +5. アプリケーションをコンパイルします。以前の ASP.NET クライアント型への参照を新しい [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント型への参照に置き換えることで、コンパイル エラーを修正します。 + +6. テスト セットを実行します。 + +## 参照 + [方法 : ASP.NET Web サービス コードを Windows Communication Foundation に移行する](../../../../docs/framework/wcf/feature-details/migrate-asp-net-web-service-to-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/migrate-asp-net-web-service-to-wcf.md b/docs/framework/wcf/feature-details/migrate-asp-net-web-service-to-wcf.md new file mode 100644 index 00000000000..48732fae82f --- /dev/null +++ b/docs/framework/wcf/feature-details/migrate-asp-net-web-service-to-wcf.md @@ -0,0 +1,225 @@ +--- +title: "方法 : ASP.NET Web サービス コードを Windows Communication Foundation に移行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e528c64f-c027-4f2e-ada6-d8f3994cf8d6 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : ASP.NET Web サービス コードを Windows Communication Foundation に移行する +ASP.NET Web サービスを [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に移行する手順を次に示します。 + +## 手順 + +#### ASP.NET Web サービス コードを WCF に移行するには + +1. サービスの包括的なテスト セットが存在することを確認します。 + +2. サービスの WSDL を生成し、サービスの .asmx ファイルと同じフォルダーに保存します。 + +3. ASP.NET Web サービスをアップグレードして、.NET 2.0 を基盤として動作するようにします。 まず、.NET Framework 2.0 を IIS のアプリケーションに配置してから、Visual Studio 2005 を使用してコードを自動変換します。この自動変換の手順については、「[Visual Studio .NET 2002\/2003 から Visual Studio 2005 への Web プロジェクト変換ステップバイステップ ガイド](http://go.microsoft.com/fwlink/?LinkId=96492)」を参照してください。 テスト セットを実行します。 + +4. 属性の `Namespace` および `Name` パラメーターにまだ値を指定していない場合は、ここで明示的に指定します。 の `MessageName` パラメーターについても同様に値を指定してください。 メソッドに要求が送られるように SOAPAction HTTP ヘッダーに値を明示的に指定していない場合は、 で `Action` パラメーターの既定値を明示的に指定します。 + + ``` + [WebService(Namespace = "http://tempuri.org/", Name = "Adder")] + public class Adder + { + [WebMethod(MessageName = "Add")] + [SoapDocumentMethod(Action = "http://tempuri.org/Add")] + public double Add(SumInput input) + { + double sum = 0.00; + foreach (double inputValue in input.Input) + { + sum += inputValue; + } + return sum; + } + } + ``` + +5. 変更点をテストします。 + +6. クラスのメソッド本体にある実質的なコードを、独立した別のクラスに移動し、これを元のクラスで使用します。 + + ``` + [WebService(Namespace = "http://tempuri.org/", Name = "Adder")] + public class Adder + { + [WebMethod(MessageName = "Add")] + [SoapDocumentMethod(Action = "http://tempuri.org/Add")] + public double Add(SumInput input) + { + return new ActualAdder().Add(input); + } + } + + internal class ActualAdder + { + internal double Add(SumInput input) + { + double sum = 0.00; + foreach (double inputValue in input.Input) + { + sum += inputValue; + } + return sum; + } + } + ``` + +7. 変更点をテストします。 + +8. [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のアセンブリである System.ServiceModel および System.Runtime.Serialization の参照を ASP.NET Web サービス プロジェクトに追加します。 + +9. [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を実行し、WSDL を基に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント クラスを生成します。 生成されたクラス モジュールをソリューションに追加します。 + +10. 前の手順で生成したクラス モジュールには、インターフェイスの定義が含まれます。 + + ``` + [System.ServiceModel.ServiceContractAttribute()] + public interface AdderSoap + { + [System.ServiceModel.OperationContractAttribute( + Action="http://tempuri.org/Add", + ReplyAction="http://tempuri.org/Add")] + AddResponse Add(AddRequest request); + } + ``` + + ASP.NET Web サービス クラスの定義を変更して、次のコード例のように、このインターフェイスを実装するようにします。 + + ``` + [WebService(Namespace = "http://tempuri.org/", Name = "Adder")] + public class Adder: AdderSoap + { + [WebMethod(MessageName = "Add")] + [SoapDocumentMethod(Action = "http://tempuri.org/Add")] + public double Add(SumInput input) + { + return new ActualAdder().Add(input); + } + + public AddResponse Add(AddRequest request) + { + return new AddResponse( + new AddResponseBody( + this.Add(request.Body.input))); + } + } + ``` + +11. プロジェクトをコンパイルします。 手順 9. で生成したコードには型定義の重複があるため、エラーが何件か発生する可能性があります。 発生したエラーは、通常は、元からあった方の型定義を削除することで修正できます。 変更点をテストします。 + +12. など、ASP.NET 固有の属性を削除します。 + + ``` + public class Adder: AdderSoap + { + public double Add(SumInput input) + { + return new ActualAdder().Add(input); + } + + public AddResponse Add(AddRequest request) + { + return new AddResponse( + new AddResponseBody( + this.Add(request.Body.input))); + } + } + ``` + +13. 以上の手順により、クラスは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス型になりました。ASP.NET Web サービスが次のいずれかに依存する場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ASP.NET 互換モードであることを要求するよう、クラスのモードを設定します。 + + - クラス + + - ASP.NET プロファイル + + - .asmx ファイルの ACL + + - IIS 認証オプション + + - ASP.NET の偽装オプション + + - ASP.NET のグローバリゼーション + + ``` + [System.ServiceModel.AspNetCompatibilityRequirements( + RequirementsMode=AspNetCompatbilityRequirementsMode.Required)] + public class Adder: AdderSoap + ``` + +14. 元の .asmx ファイルを .asmx.old と改名します。 + +15. サービスの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス ファイルを作成し、その拡張子を .asmx として、IIS のアプリケーション ルートに保存します。 + + ``` + <%@Service Class="MyOrganization.Adder" %> + <%@Assembly Name="MyServiceAssembly" %> + ``` + +16. サービスの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 構成を Web.config ファイルに追加します。 [\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)を使用する設定、前の手順で作成した .asmx サービス ファイルを使用する設定、WSDL を生成する代わりに手順 2. で作成した WSDL を使用する設定を行います。 さらに、必要に応じて、ASP.NET 互換モードを使用するように設定します。 + + ``` + + + + + + + + + + + + + + + + + + + + + + + + + + ``` + +17. 構成を保存します。 + +18. プロジェクトをコンパイルします。 + +19. テスト セットを実行して、想定どおりに変更されていることを確認してください。 + +## 参照 + [方法 : ASP.NET Web サービス クライアント コードを Windows Communication Foundation に移行する](../../../../docs/framework/wcf/feature-details/migrate-asp-net-web-service-client-to-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/migrating-aspnet-web-services-to-wcf.md b/docs/framework/wcf/feature-details/migrating-aspnet-web-services-to-wcf.md new file mode 100644 index 00000000000..fefac442e83 --- /dev/null +++ b/docs/framework/wcf/feature-details/migrating-aspnet-web-services-to-wcf.md @@ -0,0 +1,50 @@ +--- +title: "ASP.NET Web サービスを WCF に移行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1adbb931-f0b1-47f3-9caf-169e4edc9907 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# ASP.NET Web サービスを WCF に移行する +ASP.NET には Web サービスを構築するための .NET Framework クラス ライブラリとツールが用意されています。また、インターネット インフォメーション サービス \(IIS\) 内でサービスをホストする機能も用意されています。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、.NET Framework クラス ライブラリ、ツール、およびホスティング機能が用意されており、ソフトウェア エンティティが、Web サービスによって使用されるプロトコルを含む、任意のプロトコルを使用して通信できるようになっています。ASP.NET Web サービスから [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に移行すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 独自の新しい機能や強化された機能をアプリケーションで利用できます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、ASP.NET Web サービスと比較した場合に重要な利点がいくつかあります。ASP.NET Web サービスのツールは Web サービスの構築専用であるのに対して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が提供するツールは、ソフトウェア エンティティを互いに通信させる必要がある場合にも使用できます。これにより、さまざまなソフトウェア通信シナリオを実現するために開発者が知っておく必要があるテクノロジの数が少なくて済むため、ソフトウェア開発プロジェクトが完了するまでの時間だけでなく、ソフトウェア開発リソースのコストが削減されます。 + + Web サービスの開発プロジェクトの場合でも、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は ASP.NET Web サービスよりも多くの Web サービス プロトコルをサポートします。これらの追加プロトコルにより、特に信頼できるセッションとトランザクションという点で、より洗練されたソリューションが実現されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では ASP.NET Web サービスに比べ、多くのメッセージ トランスポート用プロトコルをサポートします。ASP.NET Web サービスでは、HTTP \(ハイパーテキスト転送プロトコル\) を使用したメッセージの送信しかサポートしていません。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、HTTP を使用したメッセージの送信の他に、TCP \(伝送制御プロトコル\)、名前付きパイプ、MSMQ \(Microsoft メッセージ キュー\) をサポートしています。さらに重要なことは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を拡張することにより、追加のトランスポート プロトコルをサポートできることです。これにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して開発されたソフトウェアは、他の多様なソフトウェアと連携するよう適合させることができるため、投資収益率を高めることができます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ASP.NET Web サービスに比べ、アプリケーションを展開および管理するための機能が格段に豊富に提供されています。ASP.NET でも用意されている構成システムに加えて、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では構成エディター、任意の数の中継局を介した送信者から受信者へのアクティビティ トレース、トレース ビューアー、メッセージ ログ、多数のパフォーマンス カウンター、Windows Management Instrumentation のサポートなどが用意されています。 + + ASP.NET Web サービスと比較したときの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の潜在的な利点を考えると、ASP.NET Web サービスを使用している、または使用を検討している場合、次のようなオプションがあります。 + +- ASP.NET Web サービスの使用を継続し、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で提供される利点については見送ります。 + +- 将来的には [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を採用することを見据えながら、ASP.NET Web サービスの使用を継続します。このセクションのトピックでは、新規作成する ASP.NET Web サービス アプリケーションと将来の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションとを同時に使用できる可能性を最大限にする方法について説明します。また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] への移行を容易にするための、新規の ASP.NET Web サービスの構築方法についても説明します。ただし、サービスのセキュリティ保護が重要な場合、信頼性やトランザクションの確実性が求められる場合、またはカスタムの管理機能を構築する必要がある場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の採用をお勧めします。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、まさにこのようなシナリオのために設計されています。 + +- 新規開発については [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を採用し、既存の ASP.NET Web サービス アプリケーションは保持します。おそらくこれが最適な選択です。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の利点を引き出しつつ、既存のアプリケーションを変更して WCF を使用できるようにするためのコストを削減できます。このシナリオでは、新規の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは、既存の ASP.NET アプリケーションと共存できます。新規の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは既存の ASP.NET Web サービスを使用でき、また [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には ASP.NET 互換モードがあるため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して既存の ASP.NET アプリケーションに新しい処理機能をプログラムできます。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を採用し、既存の ASP.NET Web サービス アプリケーションを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に移行します。このオプションは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が提供する機能を使用して既存のアプリケーションを拡張する場合、または既存の ASP.NET Web サービスの機能を新しく、より強力な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションによって作り直す場合に選択します。 + +> [!NOTE] +> [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが IIS 5.x によってホストされており、ASP.NET がアンインストールされている場合は注意が必要です。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが IIS 5.x によってホストされていて、ASP.NET がアンインストールされている場合、サービスのコードが要求されることがあります。IIS 5.x が実行されているオペレーティング システムで ASP.NET がアンインストールされており、さらに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がアンインストールされると、拡張子 .svc を持つファイルがテキスト ファイルと見なされ、これに含まれる、ソース コードを含む内容は要求元に返されます。 + + このセクションでは、上記のオプションの詳細、ASP.NET Web サービスと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] との比較、ASP.NET Web サービスのコードを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に移行する方法の手順について説明します。 + +## 参照 + [Windows Communication Foundation の採用 : 将来の移行の簡略化](../../../../docs/framework/wcf/feature-details/anticipating-adopting-wcf-migration.md) + [Windows Communication Foundation 導入の準備 : 将来的な統合の容易化](../../../../docs/framework/wcf/feature-details/anticipating-adopting-the-wcf-easing-future-integration.md) + [Windows Communication Foundation の採用](../../../../docs/framework/wcf/feature-details/adopting-wcf.md) + [使用目的と使用標準に基づく ASP.NET Web サービスと WCF との比較](../../../../docs/framework/wcf/feature-details/comparing-aspnet-web-services-to-wcf-based-on-purpose-and-standards-used.md) + [開発者の視点から見た ASP.NET Web サービスと WCF との比較](../../../../docs/framework/wcf/feature-details/comparing-aspnet-web-services-to-wcf-based-on-development.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/migrating-net-remoting-applications-to-wcf.md b/docs/framework/wcf/feature-details/migrating-net-remoting-applications-to-wcf.md new file mode 100644 index 00000000000..04fc98d142b --- /dev/null +++ b/docs/framework/wcf/feature-details/migrating-net-remoting-applications-to-wcf.md @@ -0,0 +1,27 @@ +--- +title: ".NET リモート処理アプリケーションの WCF への移行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ", .NET リモート処理 [WCF]" +ms.assetid: 24793465-65ae-4308-8c12-dce4fd12a583 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# .NET リモート処理アプリケーションの WCF への移行 +**このトピックの対象は、既存のアプリケーションとの下位互換性のために残されているレガシ テクノロジに特定されています。新規の開発には、このトピックを適用しないでください。現在、分散アプリケーションは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して開発する必要があります。** + + 既存の .NET リモート処理アプリケーションから [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を利用するには、統合と移行という 2 つの方法があります。統合によって、.NET Remoting 2.0 と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を並行で実行できるようになり、既存の.NET Remoting 2.0 のコードに手を加えることなく、両方のテクノロジで同時に同じビジネス オブジェクトを公開できます。統合では、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 2.0 以降が実行されている必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の機能を利用し、Remoting 2.0 システムとのネットワーク上での互換性が必要ではない場合は、サービス全体を [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に移行できます。.NET Remoting 2.0 から [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] への移行には、リモート オブジェクトのインターフェイスとその構成設定の変更が必要になります。この両トピックについては、「[From .NET Remoting to the Windows Communication Foundation \(WCF\)](http://go.microsoft.com/fwlink/?LinkId=74403)」を参照してください。 + +## 参照 + [概念](../../../../docs/framework/wcf/conceptual-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/migrating-wse-3-0-web-services-to-wcf.md b/docs/framework/wcf/feature-details/migrating-wse-3-0-web-services-to-wcf.md new file mode 100644 index 00000000000..00969abd118 --- /dev/null +++ b/docs/framework/wcf/feature-details/migrating-wse-3-0-web-services-to-wcf.md @@ -0,0 +1,136 @@ +--- +title: "WSE 3.0 Web サービスの WCF への移行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7bc5fff7-a2b2-4dbc-86cc-ecf73653dcdc +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# WSE 3.0 Web サービスの WCF への移行 +WSE 3.0 Web サービスを [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に移行する利点には、パフォーマンスの向上と、追加のトランスポート、追加のセキュリティ シナリオ、および WS-* 仕様のサポートなどがあります。 WSE 3.0 から [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に移行した Web サービスでは、パフォーマンスが最大 200% から 400% 向上する可能性があります。 サポートされているトランスポートの詳細については[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]を参照してください[トランスポートの選択](../../../../docs/framework/wcf/feature-details/choosing-a-transport.md)します。 サポートされるシナリオの一覧については[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]を参照してください[一般的なセキュリティ シナリオ](../../../../docs/framework/wcf/feature-details/common-security-scenarios.md)します。 サポートされている仕様の一覧については[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]を参照してください[Web サービス プロトコルの相互運用性ガイド](../../../../docs/framework/wcf/feature-details/web-services-protocols-interoperability-guide.md)します。 + + 以下の各セクションでは、WSE 3.0 Web サービスの特定の機能を [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に移行する方法についてのガイドラインを示します。 + +## 全般 + WSE 3.0 アプリケーションと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションには、ネットワーク レベルの相互運用性と、共通の用語セットが含まれます。 WSE 3.0 アプリケーションと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは、両方がサポートする WS-* 仕様セットに基づき、ネットワーク レベルで相互運用できます。 WSE 3.0 アプリケーションや [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションの展開時には、WSE の設定不要なセキュリティ アサーションの名前や認証モードなど、共通の用語セットが使用されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と ASP.NET または WSE 3.0 のプログラミング モデルの間には、類似した側面が数多くありますが、同一ではありません。 詳細については、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]プログラミング モデルを参照してください[基本的なプログラミング ライフ サイクル](../../../../docs/framework/wcf/basic-programming-lifecycle.md)します。 + +> [!NOTE] +> WSE Web サービスを WCF に移行する、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)ツールは、クライアントを生成するために使用できます。 ただし、このクライアントには、WCF サービスの開始点として使用できるインターフェイスとクラスも含まれます。 生成されるインターフェイスが、 されたコントラクトのメンバーに適用される属性、 プロパティに設定`*`します。 WSE クライアントは、この設定では、Web サービスを呼び出して、次の例外がスローされます。 **Web.services3.responseprocessingexception:: WSE910: 応答メッセージの処理中に、エラーが発生したと内部例外で、エラーが見つかります**します。 これを防ぐには、設定、 のプロパティ、 属性以外に`null`などの値`http://Microsoft.WCF.Documentation/ResponseToOCAMethod`です。 + +## セキュリティ + +### ポリシー ファイルを使用してセキュリティ保護される WSE 3.0 Web サービス + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、構成ファイルを使用してサービスをセキュリティで保護できます。この機構は、WSE 3.0 ポリシー ファイルと似ています。 WSE 3.0 でポリシー ファイルを使用して Web サービスをセキュリティ保護するときは、設定不要のセキュリティ アサーションまたはカスタム ポリシー アサーションを使用します。 設定不要のセキュリティ アサーションは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティ バインド要素の認証モードに厳密にマップされます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 認証モードと WSE 3.0 の設定不要のセキュリティ アサーションには、同一または類似の名前が付けられているだけでなく、これらは同じ資格情報の種類を使用してメッセージをセキュリティ保護します。 たとえば、WSE 3.0 の設定不要の `usernameForCertificate` セキュリティ アサーションは、`UsernameForCertificate` の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 認証モードにマップされます。 WSE 3.0 の設定不要の `usernameForCertificate` セキュリティ アサーションを使用する最小ポリシーが、カスタム バインディングの `UsernameForCertificate` の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 認証モードにどのようにマップされるかを次のコード例に示します。 + + **WSE 3.0** + +``` + + + + + +``` + + **WCF** + +``` + + + + + +``` + + ポリシー ファイルで指定されている WSE 3.0 Web サービスのセキュリティ設定を [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に移行するには、構成ファイルでカスタム バインディングを作成し、設定不要のセキュリティ アサーションを同等の認証モードに設定する必要があります。 さらに、WSE 3.0 クライアントがサービスと通信するときに 2004 年 8 月版の WS-Addressing 仕様を使用するように、カスタム バインディングを構成する必要もあります。 移行後の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが WSE 3.0 クライアントと通信する必要がなく、等価のセキュリティの保持のみが必要な場合は、カスタム バインディングを作成する代わりに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] システム定義のバインディングと適切なセキュリティ設定を使用することを考慮してください。 + + WSE 3.0 ポリシー ファイルと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の同等のカスタム バインディングとの対応関係を次の表に示します。 + +|WSE 3.0 の設定不要のセキュリティ アサーション|WCF のカスタム バインド構成| +|----------------------------------------|--------------------------------------| +|\>|` `| +|\>|` `| +|\>|` `| +|\>|` `| +|\>|` `| +|\>|` `| + + WCF でカスタム バインディングの作成の詳細については、次を参照してください。[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)します。 + +### アプリケーション コードを使用してセキュリティ保護される WSE 3.0 Web サービス + WSE 3.0 と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のいずれを使用する場合でも、構成ではなくアプリケーション コードでセキュリティ要件を指定できます。 WSE 3.0 でこれを行うには、`Policy` クラスの派生クラスを作成してから、`Add` メソッドを呼び出して要件を追加します。 セキュリティ要件を指定するコードの詳細については、次を参照してください。[方法: セキュリティで保護された Web サービスなしを使用して、ポリシー ファイル](http://go.microsoft.com/fwlink/?LinkId=73747)します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]をコードでセキュリティ要件を指定してのインスタンスを作成する、 クラスし、インスタンスの追加、 に、 します。 セキュリティ アサーション要件は、の静的認証モード ヘルパー メソッドを使用して設定された、 クラスです。 使用してコードでのセキュリティ要件の指定の詳細については[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]を参照してください[方法: SecurityBindingElement を作成するカスタム バインディングを使用して、](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md)と[方法: 指定の認証モード用の SecurityBindingElement を作成](../../../../docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md)します。 + +### WSE 3.0 カスタム ポリシー アサーション + WSE 3.0 には、2 種類のカスタム ポリシー アサーションがあります。一方は SOAP メッセージをセキュリティで保護し、もう一方は SOAP メッセージをセキュリティで保護しません。 SOAP メッセージをセキュリティで保護されたポリシー アサーションは WSE 3.0 から派生`SecurityPolicyAssertion`クラスと同等の概念[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]は、 クラスです。 + + 注意すべき重要な点は、WSE 3.0 の設定不要のセキュリティ アサーションは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 認証モードのサブセットであるということです。 WSE 3.0 でカスタム ポリシー アサーションを既に作成している場合は、同等の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 認証モードが存在する可能性があります。 たとえば、WSE 3.0 は、設定不要の `UsernameOverTransport` セキュリティ アサーションと等価な CertificateOverTransport セキュリティ アサーションを提供しませんが、クライアントを認証するために X.509 証明書を使用します。 このシナリオ用の独自のカスタム ポリシー アサーションを定義していれば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって移行が容易になります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]静的認証モードの利点を構成するヘルパー メソッドを実行できるように、このシナリオでは、認証モードを定義、 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] します。 + + ない場合、 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 、SOAP メッセージをセキュリティで保護するカスタム ポリシー アサーションと等価な認証モードからクラスを派生するまたは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]クラスし、等価なバインド要素を指定します。 詳細については、次を参照してください。[方法: SecurityBindingElement を作成するカスタム バインディングを使用して、](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md)です。 + + SOAP メッセージを保護していないカスタム ポリシー アサーションを変換するには、次を参照してください。[フィルタ リング](../../../../docs/framework/wcf/feature-details/filtering.md)サンプルとサンプル[カスタム メッセージ インターセプター](../../../../docs/framework/wcf/samples/custom-message-interceptor.md)します。 + +### WSE 3.0 カスタム セキュリティ トークン + カスタム トークンを作成するための [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] プログラミング モデルは、WSE 3.0 と異なります。 WSE でカスタム トークンを作成する方法については、「[カスタム セキュリティ トークンの作成](http://go.microsoft.com/fwlink/?LinkID=73750)します。 カスタム トークンを作成する方法について[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]を参照してください[方法: カスタム トークンを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-token.md)です。 + +### WSE 3.0 カスタム トークン マネージャー + カスタム トークン マネージャーを作成するためのプログラミング モデルは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と WSE 3.0 で異なります。 カスタム トークン マネージャーとカスタム セキュリティ トークンに必要な他のコンポーネントを作成する方法の詳細については、「[方法: カスタム トークンを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-token.md)です。 + +> [!NOTE] +> カスタムの `UsernameToken` セキュリティ トークン マネージャーを既に作成している場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、カスタム セキュリティ マネージャーを作成するよりも簡単に認証ロジックを指定する機構が提供されています。 詳細については、次を参照してください。[方法: カスタム ユーザー名およびパスワード検証を使用して](../../../../docs/framework/wcf/feature-details/how-to-use-a-custom-user-name-and-password-validator.md)します。 + +### MTOM エンコードされた SOAP メッセージを使用する WSE 3.0 Web サービス + WSE 3.0 アプリケーションと同様に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションでは、MTOM メッセージ エンコードを構成で指定できます。 この設定を移行するには、追加、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/mtommessageencoding.md) 、サービスのバインドにします。 WSE 3.0 での MTOM エンコードの指定方法と、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での等価な MTOM エンコードの指定方法を、次のコード例に示します。 + + **WSE 3.0** + +``` + + + +``` + + **WCF** + +``` + + + + + +``` + +## メッセージング + +### WSE メッセージング API を使用する WSE 3.0 アプリケーション + クライアントと Web サービス間でやり取りされる XML に直接アクセスするために WSE メッセージング API が使用されている場合は、"Plain Old XML" (POX) を使用するようにアプリケーションを変換できます。 POX の詳細については、次を参照してください。 [POX アプリケーションとの相互運用](../../../../docs/framework/wcf/feature-details/interoperability-with-pox-applications.md)します。 WSE メッセージング API の詳細については、次を参照してください。[送信および受信 SOAP メッセージを使用して WSE メッセージング API](http://go.microsoft.com/fwlink/?LinkID=73755)します。 + +## トランスポート + +### TCP + 既定では、TCP トランスポートを使用して SOAP メッセージを送信する WSE 3.0 クライアントおよび Web サービスは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のクライアントおよび Web サービスと相互運用できません。 このような非互換性は、TCP プロトコルで使用されるフレームの違いとパフォーマンス上の理由に起因します。 ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサンプルでは、WSE 3.0 と相互運用するカスタム TCP セッションの実装方法を詳しく示しています。 詳細については、このサンプルは、次を参照してください。[トランスポート: WSE 3.0 TCP 相互運用性](../../../../docs/framework/wcf/samples/transport-wse-3-0-tcp-interoperability.md)します。 + + 指定する、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]アプリケーションは、TCP トランスポートを使用して、使用して、 [ <> \ \>](../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md)します。 + +### カスタム トランスポート + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] において WSE 3.0 カスタム トランスポートに相当するのは、チャネル拡張です。 チャネル拡張機能の作成に関する詳細については、「[チャネル レイヤーの拡張](../../../../docs/framework/wcf/extending/extending-the-channel-layer.md)します。 + +## 関連項目 + [基本的なプログラミング ライフ サイクル](../../../../docs/framework/wcf/basic-programming-lifecycle.md) + [カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md) + [方法: SecurityBindingElement を使用してカスタム バインディングを作成します。](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [方法: 指定した認証モード用の SecurityBindingElement を作成](../../../../docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/mixing-trust-protocols-in-federated-scenarios.md b/docs/framework/wcf/feature-details/mixing-trust-protocols-in-federated-scenarios.md new file mode 100644 index 00000000000..761f16f1838 --- /dev/null +++ b/docs/framework/wcf/feature-details/mixing-trust-protocols-in-federated-scenarios.md @@ -0,0 +1,108 @@ +--- +title: "Trust プロトコルが混在するフェデレーション シナリオ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d7b5fee9-2246-4b09-b8d7-9e63cb817279 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# Trust プロトコルが混在するフェデレーション シナリオ +シナリオによっては、フェデレーション クライアントが、Trust バージョンの一致しないサービスやセキュリティ トークン サービス \(STS: Security Token Service\) と通信する場合があります。 たとえば、サービス WSDL に、STS とは異なるバージョンの WS\-Trust 要素を持つ `RequestSecurityTokenTemplate` アサーションが含まれることがあります。 このような場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントは、`RequestSecurityTokenTemplate` から受け取った WS\-Trust 要素を、STS Trust のバージョンに一致するように変換します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、標準バインディングでのみ不一致の Trust バージョンを処理します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって認識されるすべての標準アルゴリズム パラメーターは、標準バインディングの一部です。 このトピックでは、サービスと STS との間のさまざまな Trust 設定での [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の動作について説明します。 + +## RP 2005\/02 および STS 2005\/02 + 証明書利用者 \(RP: Relying Party\) の WSDL には、`RequestSecurityTokenTemplate` セクション内に次の要素が含まれます。 + +- `CanonicalizationAlgorithm` + +- `EncryptionAlgorithm` + +- `EncryptWith` + +- `SignWith` + +- `KeySize` + +- `KeyType` + + クライアント構成ファイルには、パラメーターのリストが含まれます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、クライアント パラメーターとサービス パラメーターを区別することはできません。すべてのパラメーターが追加され、`RequestSecurityTokenTemplate` \(RST\) で送信されます。 + +## RP Trust 1.3 および STS Trust 1.3 + RP の WSDL には、`RequestSecurityTokenTemplate` セクション内に次の要素が含まれます。 + +- `CanonicalizationAlgorithm` + +- `EncryptionAlgorithm` + +- `EncryptWith` + +- `SignWith` + +- `KeySize` + +- `KeyType` + +- `KeyWrapAlgorithm` + + クライアント構成ファイルには、RP によって指定されたパラメーターをラップする `secondaryParameters` 要素が含まれます。 + + `EncryptionAlgorithm`、`CanonicalizationAlgorithm`、および `KeyWrapAlgorithm` の各要素が `SecondaryParameters` 要素の中に存在する場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] はこれらを RST の最上位の要素から削除します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`SecondaryParameters` 要素を変更せずに送信 RST に追加します。 + +## RP Trust 2005\/02 および STS Trust 1.3 + RP の WSDL には、`RequestSecurityTokenTemplate` セクション内に次の要素が含まれます。 + +- `CanonicalizationAlgorithm` + +- `EncryptionAlgorithm` + +- `EncryptWith` + +- `SignWith` + +- `KeySize` + +- `KeyType` + + クライアント構成ファイルには、パラメーターのリストが含まれます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、クライアント構成ファイルからサービス パラメーターとクライアント パラメーターを区別することはできません。 このため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、すべてのパラメーターを Trust バージョン 1.3 の名前空間に変換します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`KeyType`、`KeySize`、および `TokenType` の各要素を次のように処理します。 + +- WSDL をダウンロードし、バインディングを作成して、`KeyType`、`KeySize`、および `TokenType` を RP パラメーターから割り当てます。 その後、クライアント構成ファイルが生成されます。 + +- この時点で、クライアントは構成ファイル内のパラメーターを変更できます。 + +- 実行時には、指定されたすべてのパラメーターが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によってクライアント構成ファイルの `AdditionalTokenParameters` セクションにコピーされます。ただし、`KeyType`、`KeySize`、および `TokenType` は構成ファイルの生成時に処理されるため、これらのパラメーターのコピーは行われません。 + +## RP Trust 1.3 および STS Trust 2005\/02 + RP の WSDL には、`RequestSecurityTokenTemplate` セクション内に次の要素が含まれます。 + +- `CanonicalizationAlgorithm` + +- `EncryptionAlgorithm` + +- `EncryptWith` + +- `SignWith` + +- `KeySize` + +- `KeyType` + +- `KeyWrapAlgorithm` + + クライアント構成ファイルには、RP によって指定されたパラメーターをラップする `secondaryParamters` 要素が含まれます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`SecondaryParameters` セクション内に指定されたすべてのパラメーターを最上位の RST 要素にコピーしますが、2005 WS\-Trust の名前空間には変換しません。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/net-tcp-port-sharing.md b/docs/framework/wcf/feature-details/net-tcp-port-sharing.md new file mode 100644 index 00000000000..39d12a51209 --- /dev/null +++ b/docs/framework/wcf/feature-details/net-tcp-port-sharing.md @@ -0,0 +1,62 @@ +--- +title: "Net.TCP ポート共有 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ポート アクティベーション [WCF]" + - "ポート共有 [WCF]" +ms.assetid: f13692ee-a179-4439-ae72-50db9534eded +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# Net.TCP ポート共有 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、高パフォーマンス通信用の新しい TCP ベースのネットワーク プロトコル \(net.tcp:\/\/\) が提供されます。 また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、net.tcp ポートを複数のユーザー プロセスで共有できる新しいシステム コンポーネントとして Net.TCP ポート共有サービスが導入されています。 + +## 背景と動機 + TCP\/IP プロトコルの導入当初は、それを使用するアプリケーション プロトコルは少ししかありませんでした。 TCP\/IP では、ポート番号を使用して一意の 16 ビットのポート番号を各アプリケーション プロトコルに割り当てることでアプリケーションが区別されました。 たとえば、現在 HTTP トラフィックは TCP ポート 80、SMTP は TCP ポート 25、FTP は TCP ポート 20 と 21 を使用するように標準化されています。 他のアプリケーションで TCP をトランスポートとして使用する場合は、規則により、または正式な標準化を通じて別の利用可能なポート番号を選択できます。 + + ポート番号を使用してアプリケーションを区別することについては、セキュリティの問題がありました。 通常、ファイアウォールは、よく知られたわずかなエントリ ポイントを除いてすべてのポートの TCP トラフィックをブロックするよう構成されています。そのため、非標準のポートを使用するアプリケーションを展開する際に、企業のファイアウォールまたはパーソナル ファイアウォールがあるために展開が複雑になることや、展開が不可能になる場合がよくあります。 アプリケーションが、許可済みの標準の Well\-known ポートで通信できる場合は、外部攻撃の侵入経路を減らすことができます。 多くのファイアウォールは、TCP ポート 80 のトラフィックを既定で許可するよう構成されているため、多くのネットワーク アプリケーションが HTTP プロトコルを利用します。 + + 多くの異なる HTTP アプリケーションのトラフィックを 1 つの TCP ポートに多重化する HTTP.SYS モデルが、Windows プラットフォームで標準になってきました。 このモデルを使用すると、ファイアウォール管理者は共通の制御点を使用できるようになり、また、アプリケーション開発者はネットワークを利用できる新しいアプリケーションを構築する際に、展開コストを最小限にできます。 + + インターネット インフォメーション サービス \(IIS\) には、HTTP アプリケーション間でポートを共有する機能が以前からあります。 しかし、このインフラストラクチャが完全に一般化されたのは、[!INCLUDE[iis601](../../../../includes/iis601-md.md)] での HTTP.SYS \(カーネル モードの HTTP プロトコル リスナー\) の導入以降のことでした。 実際には、HTTP.SYS が、任意のユーザー プロセスで HTTP トラフィック専用の TCP ポートを共有することを許可します。 この機能により、多数の HTTP アプリケーションが同一の物理コンピューター上にそれぞれ別の独立したプロセスとして共存しながら、TCP ポート 80 でのトラフィックの送受信に必要なネットワーク インフラストラクチャを共有することができます。 Net.TCP ポート共有サービスは、net.tcp アプリケーションで同じ種類のポート共有を可能にします。 + +## ポート共有アーキテクチャ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のポート共有アーキテクチャには主に 3 つのコンポーネントがあります。 + +- ワーカー プロセス : 共有ポートを使用して net.tcp:\/\/ で通信するすべてのプロセスです。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] TCP トランスポート : net.tcp:\/\/ protocol を実装します。 + +- Net.TCP ポート共有サービス : 多数のワーカー プロセスで 1 つの TCP ポートを共有できます。 + + Net.TCP ポート共有サービスは、net.tcp:\/\/ を通じて通信されるワーカー プロセスの代わりに net.tcp:\/\/ 接続を受け入れるユーザー モードの Windows サービスです。 ソケット接続が到着すると、ポート共有サービスは受信メッセージ ストリームを検査して送信先アドレスを取得します。 このアドレスを基にポート共有サービスは、最終的に処理されるアプリケーションにデータ ストリームをルーティングできます。 + + net.tcp:\/\/ ポート共有を使用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを開くときに、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] TCP トランスポート インフラストラクチャは、アプリケーション プロセスの TCP ソケットを直接開きません。 その代わりにトランスポート インフラストラクチャは、サービスのベース アドレス URI \(Uniform Resource Identifier\) を Net.TCP ポート共有サービスに登録し、ポート共有サービスがトランスポート インフラストラクチャの代わりにメッセージをリッスンするまで待機します。 アプリケーション サービス宛てのメッセージが到着すると、そのメッセージはポート共有サービスによりディスパッチされます。 + +## ポート共有のインストール + Net.TCP ポート共有サービスは、[!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] をサポートするすべてのオペレーティング システムで利用できますが、サービスは既定では有効にされていません。 セキュリティ予防措置として、管理者は Net.TCP ポート共有サービスを初めて使用する前に手動で有効にする必要があります。 Net.TCP ポート共有サービスでは、ポート共有サービスが所有するネットワーク ソケットのいくつかの特性を操作するための構成オプションが公開されます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : Net.TCP ポート共有サービスを有効にする](../../../../docs/framework/wcf/feature-details/how-to-enable-the-net-tcp-port-sharing-service.md). + +## アプリケーションでの Net.tcp ポート共有の使用 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションで net.tcp:\/\/ ポート共有を使用する最も簡単な方法は、 を使用してサービスを公開し、 プロパティを使用して Net.TCP ポート共有サービスを有効にすることです。 + + その方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]「[方法 : ポート共有を使用するように WCF サービスを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-wcf-service-to-use-port-sharing.md)」を参照してください。 + +## ポート共有のセキュリティへの影響 + Net.TCP ポート共有サービスは、アプリケーションとネットワークの間に、処理を行うための 1 つの層を提供しますが、アプリケーションでポート共有を使用する場合、アプリケーションがネットワークを直接リッスンしている場合と同様に、アプリケーションをセキュリティで保護する必要があります。 具体的には、ポート共有を使用するアプリケーションでは、そのアプリケーションが実行される際のプロセス特権を評価する必要があります。 組み込みの Network Service アカウントを使用してアプリケーションを実行することを検討します。このアカウントはネットワーク通信に必要な最小限のプロセス特権のセットを使用して実行されます。 + +## 参照 + [Net.TCP ポート共有サービスを構成する](../../../../docs/framework/wcf/feature-details/configuring-the-net-tcp-port-sharing-service.md) + [ホスト](../../../../docs/framework/wcf/feature-details/hosting.md) + [方法 : ポート共有を使用するように WCF サービスを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-wcf-service-to-use-port-sharing.md) + [方法 : Net.TCP ポート共有サービスを有効にする](../../../../docs/framework/wcf/feature-details/how-to-enable-the-net-tcp-port-sharing-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/one-way-services.md b/docs/framework/wcf/feature-details/one-way-services.md new file mode 100644 index 00000000000..ef0ae4a32e4 --- /dev/null +++ b/docs/framework/wcf/feature-details/one-way-services.md @@ -0,0 +1,65 @@ +--- +title: "一方向サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "サービス コントラクト [WCF], 一方向の定義" + - "WCF [WCF], 一方向のサービス コントラクト" + - "Windows Communication Foundation [WCF], 一方向のサービス コントラクト" +ms.assetid: 19053a36-4492-45a3-bfe6-0365ee0205a3 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# 一方向サービス +サービス操作の既定の動作は、要求\/応答パターンです。要求\/応答パターンでは、サービス操作がコードで `void` 型のメソッドとして表される場合であっても、クライアントは応答メッセージを待機します。一方向操作では、メッセージが 1 つ送信されるだけです。受信者は応答メッセージを送信せず、送信者もこれを待機しません。 + + 一方向デザイン パターンは次の場合に使用します。 + +- クライアントが操作を呼び出す必要があり、操作レベルで操作の結果に影響を受けない場合。 + +- クラスまたは クラスを使用している場合 \(このシナリオ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WCF のキュー](../../../../docs/framework/wcf/feature-details/queues-in-wcf.md)」を参照してください\)。 + + 操作が一方向の場合、エラー情報をクライアントに伝達する応答メッセージはありません。エラー状態を検出するには、信頼できるセッションのような基になるバインディングの機能を使用できます。また、2 つの一方向操作 \(1 つは、サービス操作を呼び出すための、クライアントからサービスへの一方向コントラクト、もう 1 つは、クライアントが実装するコールバックを使用してサービスがエラーを返せるようにする、サービスとクライアントの間の一方向コントラクト\) を使用する双方向サービス コントラクトをデザインすることもできます。 + + 一方向サービス コントラクトを作成するには、サービス コントラクトを定義し、 クラスを各操作に適用し、 プロパティを `true` に設定します。次のコードを参照してください。 + +``` +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public interface IOneWayCalculator +{ + [OperationContract(IsOneWay=true)] + void Add(double n1, double n2); + [OperationContract(IsOneWay = true)] + void Subtract(double n1, double n2); + [OperationContract(IsOneWay = true)] + void Multiply(double n1, double n2); + [OperationContract(IsOneWay = true)] + void Divide(double n1, double n2); +} +``` + + 完全な例については、「[一方向](../../../../docs/framework/wcf/samples/one-way.md)」のサンプルを参照してください。 + +## 一方向操作でのクライアントのブロック + 一方向アプリケーションの中には、送信データをネットワーク接続に書き込むとすぐに処理を終了するものがある一方で、バインディングまたはサービスの実装により [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントが一方向操作を使用できなくなるというシナリオもあることを理解することが重要です。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーションでは、送信データがネットワーク接続に書き込まれるまで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトは処理を終了しません。これは一方向操作を含め、すべてのメッセージ交換パターンについて当てはまることで、トランスポートへのデータの書き込みに何らかの問題があると、クライアントが処理を終了できなくなることを意味します。問題の種類によっては、例外が発生したりサービスへのメッセージの送信に遅延が発生したりする結果となることがあります。 + + たとえば、トランスポートがエンドポイントを見つけられない場合、大きな遅延なしに 例外がスローされます。ただし、サービスが何らかの理由によりデータをネットワークから読み込めないために、クライアントのトランスポート送信操作が終了しない可能性もあります。このような場合、クライアントのトランスポート バインディングで 期間が経過すると、 がスローされますが、タイムアウト時間が経過するまで例外はスローされません。またサービスに多数のメッセージが集中しているために、一定の期間が経過するまでサービスがメッセージを処理できないことがあります。この場合も、サービスがメッセージを処理できるまで、または例外がスローされるまで、一方向クライアントはブロックします。 + + さらに別の状況として、サービスの プロパティが に設定されているのに、バインディングが複数のセッションを使用する場合があります。この場合、ディスパッチャーにより受信メッセージの並び替え \(セッションの要件\) が強制され、サービスがそのセッションの以前のメッセージの処理を終えるまで、後続のメッセージはネットワークから読み込まれません。この場合も、クライアントはブロックしますが、例外が発生するかどうかは、サービスがこのクライアントで設定されているタイムアウト期間が経過する前に、待機中のデータを処理できるかどうかによって異なります。 + + この問題を軽減するには、クライアント オブジェクトとクライアントのトランスポート送信操作との間にバッファーを挿入します。たとえば、非同期呼び出しまたはメモリ内メッセージ キューを使用すると、クライアント オブジェクトの処理を短時間で終了できます。どちらのアプローチでも機能性は向上しますが、スレッド プールとメッセージ キューのサイズによる制限は残ります。 + + 代わりに、クライアントおよびサービスの各種コントロールを調べてアプリケーション シナリオをテストし、最適な構成がどちら側にあるのかを判断することをお勧めします。たとえば、セッションの使用によりサービスでのメッセージの処理がブロックされている場合、 プロパティを に設定することによって、異なるサービス インスタンスによって各メッセージが処理されるようにし、また に設定することによって、複数のスレッドで同時にメッセージをディスパッチできるようにします。また、別のアプローチとして、サービスとクライアント バインディングの読み取りクォータを増やすという方法もあります。 + +## 参照 + [一方向](../../../../docs/framework/wcf/samples/one-way.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/ordered-processing-of-messages-in-single-concurrency-mode.md b/docs/framework/wcf/feature-details/ordered-processing-of-messages-in-single-concurrency-mode.md new file mode 100644 index 00000000000..d7bf2b3bf97 --- /dev/null +++ b/docs/framework/wcf/feature-details/ordered-processing-of-messages-in-single-concurrency-mode.md @@ -0,0 +1,38 @@ +--- +title: "Single 同時実行モードでメッセージを順番に処理する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a90f5662-a796-46cd-ae33-30a4072838af +caps.latest.revision: 2 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 2 +--- +# Single 同時実行モードでメッセージを順番に処理する +WCF では、基になるチャネルがセッションフルでない場合、メッセージを処理する順序については保証されません。たとえば、セッションフル チャネルではない MsmqInputChannel を使用する WCF サービスでは、メッセージを順番に処理できません。開発者には、セッションを使用しないで、順番どおりの処理動作が必要な場合があります。このトピックでは、サービスが Single 同時実行モードで実行されている場合に、この動作を構成する方法について説明します。 + +## 順番に従ったメッセージの処理 + という名前の新しい属性が に追加されました。 を true に設定し、 に設定すると、サービスに送信されたメッセージは順番に処理されます。次のコード スニペットは、これらの属性の設定方法を示しています。 + +``` +[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, EnsureOrderedDispatch = true )] + class Service : IService + { + // ... + } + +``` + + を他の値に設定すると、 がスローされます。 + +## 参照 + [セッション、インスタンス化、および同時実行](../../../../docs/framework/wcf/feature-details/sessions-instancing-and-concurrency.md) + [同時実行](../../../../docs/framework/wcf/samples/concurrency.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/out-of-order-message-processing.md b/docs/framework/wcf/feature-details/out-of-order-message-processing.md new file mode 100644 index 00000000000..365304b5e65 --- /dev/null +++ b/docs/framework/wcf/feature-details/out-of-order-message-processing.md @@ -0,0 +1,48 @@ +--- +title: "順番を無視したメッセージの処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 33fc62a5-5d59-461c-a37a-0e1b51ac763d +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 順番を無視したメッセージの処理 +ワークフロー サービスは、特定の順序で送信されるメッセージに依存する場合があります。ワークフロー サービスには 1 つ以上の アクティビティが含まれ、それぞれの アクティビティは特定のメッセージに対応しています。特定のトランスポート配信保証がないと、クライアントから送信されるメッセージに遅延が生じ、それによって、ワークフロー サービスが予期しない順序でメッセージが配信されることがあります。特定の順序でメッセージが送信されることを必要としないワークフローは、通常、Parallel アクティビティを使用して実装されます。アプリケーション プロトコルがより複雑な場合は、ワークフローがすぐに複雑になります。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のメッセージ処理機能では、順番が無視されるため、入れ子になった複雑な Parallel アクティビティを含まないワークフローを作成できます。順番を無視したメッセージ処理は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] MSMQ バインディングなど、 に対応するチャネルでのみサポートされます。 + +## 順番を無視したメッセージ処理の有効化 + 順番を無視したメッセージ処理は、ワークフロー サービスで プロパティを `true` に設定することで有効化できます。次の例は、コードで プロパティを設定する方法を示しています。 + +```csharp +// Code: Opt-in to Buffered Receive processing... +WorkflowService service = new WorkflowService +{ + Name="MyService", + Body = workflow, + AllowBufferedReceive = true +}; + +``` + + また、次の例に示すように、XAML で `AllowBufferedReceive` 属性をワークフロー サービスに適用することもできます。 + +```xaml +// Xaml: Opt-in to Buffered Receive processing... + + + +``` + +## 参照 + + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [キューと信頼できるセッション](../../../../docs/framework/wcf/feature-details/queues-and-reliable-sessions.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/partial-trust-best-practices.md b/docs/framework/wcf/feature-details/partial-trust-best-practices.md new file mode 100644 index 00000000000..b1868913ebd --- /dev/null +++ b/docs/framework/wcf/feature-details/partial-trust-best-practices.md @@ -0,0 +1,77 @@ +--- +title: "部分信頼のベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0d052bc0-5b98-4c50-8bb5-270cc8a8b145 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# 部分信頼のベスト プラクティス +このトピックでは、部分信頼環境で [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を実行する場合のベスト プラクティスについて説明します。 + +## シリアル化 + 部分信頼アプリケーションで を使用する場合は、次の方法を適用します。 + +- すべてのシリアル化可能な型は、`[DataContract]` 属性で明示的にマークする必要があります。次の手法は、部分信頼環境ではサポートされていません。 + +- シリアル化するクラスを でマークする。 + +- クラスでシリアル化プロセスを制御できるように インターフェイスを実装する。 + +### DataContractSerializer の使用 + +- `[DataContract]` 属性でマークされたすべての型は、パブリックである必要があります。部分信頼環境では、非パブリック型はシリアル化できません。 + +- シリアル化できる `[DataContract]` 型のすべての `[DataContract]` メンバーは、パブリックである必要があります。部分信頼環境では、非パブリック `[DataMember]` 型はシリアル化できません。 + +- `OnSerializing`、`OnSerialized`、`OnDeserializing`、`OnDeserialized` などのシリアル化イベントを処理するメソッドは、パブリックとして宣言する必要があります。ただし、明示的および暗黙的な の実装は、いずれもサポートされています。 + +- は、逆シリアル化の間に新しくインスタンス化されたオブジェクトのコンストラクターを呼び出さないため、 でマークされて、アセンブリで実装された `[DataContract]` 型は、型コンストラクターでセキュリティ関連の操作を実行することはできません。特に、`[DataContract]` 型では、次の一般的なセキュリティ手法の使用を避ける必要があります。 + +- 型のコンストラクターを内部またはプライベートにすることにより、部分信頼アクセスを制限する。 + +- 型のコンストラクターに `[LinkDemand]` を追加することにより、型へのアクセスを制限する。 + +- オブジェクトが正常にインスタンス化されたため、コンストラクターが強制するチェックがすべて正常に終了したと仮定する。 + +### IXmlSerializable の使用 + を実装し、 を使用してシリアル化される型に適用されるベスト プラクティスを次に示します。 + +- 静的 メソッドの実装は、`public` とする必要があります。 + +- インターフェイスを実装するインスタンス メソッドは、`public` とする必要があります。 + +## 部分信頼の呼び出し元から呼び出せる完全信頼のプラットフォーム コードで WCF を使用する + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の部分信頼セキュリティ モデルでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] パブリック メソッドまたはプロパティのすべての呼び出し元は、ホスト アプリケーションのコード アクセス セキュリティ \(CAS: Code Access Security\) コンテキストで実行されていることを前提としています。また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、各 に対して存在するアプリケーション セキュリティ コンテキストが 1 つのみであり、このコンテキストが への呼び出しまたは、ASP.NET アプリケーション マネージャーなどの信頼されているホストにより、 作成時に確立されることを前提としています。 + + このセキュリティ モデルは、信頼性が "中" の ASP.NET アプリケーションで実行されているユーザー コードなど、追加の CAS アクセス許可をアサートできないユーザー記述のアプリケーションに適用されます。ただし、完全信頼のプラットフォーム コード \(たとえば、グローバル アセンブリ キャッシュにインストールされているサード パーティ アセンブリや、部分信頼コードからの呼び出しを受け入れるサード パーティ アセンブリなど\) は、アプリケーション レベルのセキュリティの脆弱性が発生しないよう、部分信頼アプリケーションに代わって [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を呼び出す場合に、明示的な注意を行う必要があります。 + + 完全信頼コードでは、部分信頼コードに代わって [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] API を呼び出す前に、、または を呼び出して、現在のスレッドの CAS アクセス許可セットを変更しないようにする必要があります。アプリケーション レベルのセキュリティ コンテキストに依存しないスレッド固有のアクセス許可コンテキストのアサート、拒否、または作成により、予期しない動作が発生することがあります。アプリケーションによっては、この動作がアプリケーション レベルのセキュリティの脆弱性となることがあります。 + + 次のような状況の発生に対処するには、スレッド固有のアクセス許可コンテキストを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を呼び出すコードを準備する必要があります。 + +- スレッド固有のセキュリティ コンテキストを処理の期間全体にわたっては保持できない場合があり、このときセキュリティの例外が発生する可能性があります。 + +- 内部 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] コードとユーザーが指定したコールバックが、呼び出しが開始された元のセキュリティ コンテキストとは異なるセキュリティ コンテキストで実行される場合があります。次のようなコンテキストが含まれます。 + + - アプリケーションのアクセス許可コンテキスト。 + + - 現在実行している の有効期間中に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の呼び出しに使用される他のユーザー スレッドが以前に作成したスレッド固有のアクセス許可コンテキスト。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] パブリック API の呼び出しの前に、完全信頼コンポーネントによってこのようなアクセス許可がアサートされない限り、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、部分信頼コードで完全信頼アクセス許可を取得できないことが保証されます。ただし、完全信頼をアサートした効果が特定のスレッド、操作、またはユーザー操作として隔離されることは保証されません。 + + 、または を呼び出すことにより、スレッド固有のアクセス許可コンテキストを作成しないことをお勧めします。代わりに、、または が不要となるように、アプリケーション自体に特権を付与するか、特権を拒否します。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/partial-trust-feature-compatibility.md b/docs/framework/wcf/feature-details/partial-trust-feature-compatibility.md new file mode 100644 index 00000000000..241449d97f6 --- /dev/null +++ b/docs/framework/wcf/feature-details/partial-trust-feature-compatibility.md @@ -0,0 +1,175 @@ +--- +title: "部分信頼機能の互換性 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a36a540b-1606-4e63-88e0-b7c59e0e6ab7 +caps.latest.revision: 75 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 74 +--- +# 部分信頼機能の互換性 +部分信頼環境で実行される場合、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でサポートされる機能は、限られたサブセットになります。 部分信頼でサポートされる機能は、「[サポートされている配置シナリオ](../../../../docs/framework/wcf/feature-details/supported-deployment-scenarios.md)」のトピックで説明される特定のシナリオを念頭にデザインされています。 + +## 最小のアクセス許可の要件 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、次の標準の名前付きアクセス許可セットのいずれかで実行されるアプリケーションの機能のサブセットをサポートします。 + +- 中程度の信頼アクセス許可 + +- インターネット ゾーン アクセス許可 + + これよりも制限の厳しいアクセス許可が設定された部分信頼アプリケーションで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用すると、実行時にセキュリティ例外が発生することがあります。 + +## コントラクト + 部分信頼で実行される場合、コントラクトには次の制限があります。 + +- `[ServiceContract]` インターフェイスを実装するサービス クラスは、`public` であること、および `public` コンストラクターを持っていることが必要です。 このクラスで `[OperationContract]` メソッドを定義する場合、それらも `public` である必要があります。 代わりに `[ServiceContract]` インターフェイスを実装する場合は、`private` インターフェイスが `[ServiceContract]` であれば、それらのメソッド実装は明示的でも `public` でもかまいません。 + +- `[ServiceKnownType]` 属性を使用するときは、指定するメソッドは `public` である必要があります。 + +- `[MessageContract]` クラスとそのメンバーは、`public` である場合があります。`[MessageContract]` クラスがアプリケーション アセンブリで定義されている場合は、`internal` であり、`internal` メンバーを持つ場合があります。 + +## システム標準のバインディング + 部分信頼環境では、 が完全にサポートされています。 は、トランスポート セキュリティ モードでのみサポートされます。 + + 、または など、HTTP 以外のトランスポートを使用するバインディングは、部分信頼環境で実行される場合はサポートされません。 + +## カスタム バインディング + 部分信頼環境ではカスタム バインディングの作成と使用が可能ですが、このセクションに示した制限に従う必要があります。 + +### トランスポート + 使用できるトランスポート バインド要素は、 に限られます。 + +### エンコーダー + 次のエンコーダーを指定できます。 + +- テキスト エンコーダー \(\) + +- バイナリ エンコーダー \(\) + +- Web メッセージ エンコーダー \(\) + + MTOM \(Message Transmission Optimization Mechanism\) エンコーダーはサポートされていません。 + +### セキュリティ + 部分信頼アプリケーションは、通信をセキュリティで保護するために [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のトランスポート レベルのセキュリティ機能を使用することがあります。 メッセージ レベルのセキュリティはサポートされていません。 メッセージ レベルのセキュリティを使用するようにバインディングを構成すると、実行時に例外が発生します。 + +### サポートされないバインディング + 信頼できるメッセージング、トランザクション、またはメッセージ レベルのセキュリティを使用するバインディングはサポートされません。 + +## シリアル化 + 部分信頼環境では、 の両方がサポートされています。 ただし、 の使用は、次の条件に従う必要があります。 + +- シリアル化可能なすべての `[DataContract]` 型は `public` である必要があります。 + +- `[DataMember]` 型にあるシリアル化可能なすべての `[DataContract]` フィールドまたはプロパティは、パブリックで読み書き可能である必要があります。[読み取り専用](http://go.microsoft.com/fwlink/?LinkID=98854)フィールドのシリアル化と逆シリアル化は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を部分信頼アプリケーションで実行する場合にはサポートされません。 + +- 部分信頼環境では、`[Serializable]`\/ISerializable プログラミング モデルはサポートされていません。 + +- 既知の型はコード内、またはマシン レベルの構成 \(machine.config\) で指定する必要があります。 既知の型はセキュリティ上の理由からアプリケーション レベルの構成では指定できません。 + +- を実装する型は、部分信頼環境では例外をスローします。 + + 部分信頼アプリケーションで を安全に使用する場合のセキュリティ情報の詳細については、「[部分信頼のベスト プラクティス](../../../../docs/framework/wcf/feature-details/partial-trust-best-practices.md)」のシリアル化のセクションを参照してください。 + +### コレクション型 + コレクション型の中には、 の両方を実装するものがあります。 たとえば、 を実装する型がこれに当たります。 このような型では、`public` の `GetEnumerator()` な実装と、`GetEnumerator()` の明示的な実装を実装できます。 この場合、 は `public` の `GetEnumerator()` な実装を呼び出し、`GetEnumerator()` の明示的な実装は呼び出しません。`GetEnumerator()` 実装のいずれも `public` ではなく、すべてが明示的な実装である場合、 は `IEnumerable.GetEnumerator()` を呼び出します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が部分信頼環境で実行されているときに、コレクション型の `GetEnumerator()` の実装がどれも `public` ではなく、またそのどれもが明示的なインターフェイスの実装でない場合は、セキュリティ例外がスローされます。 + +### NetDataContractSerializer + 部分信頼の場合、、および などの、.NET Framework コレクション型の多くは、 によってサポートされていません。 これらの型には `[Serializable]` 属性セットがあり、シリアル化のセクションで説明したように、この属性は部分信頼ではサポートされません。 はコレクションを特殊な方法で扱うため、この制限を回避できますが、 には、この制限の適用を避けるメカニズムはありません。 + + 型は、部分信頼では によってサポートされません。 + + 部分信頼で実行するときは、\( メカニズムを使用して\) でサロゲートを使用できません。 この制限は、シリアル化ではなく、サロゲートの使用に適用されることに注意してください。 + +## 実行する共通動作の有効化 + アプリケーションが部分信頼環境で実行されている場合、構成ファイルの [\](../../../../docs/framework/configure-apps/file-schema/wcf/commonbehaviors.md) セクションに追加された 属性 \(APTCA\) でマークされていないサービス動作またはエンドポイント動作は実行されません。この場合、動作が実行されなくても、例外はスローされません。 共通動作を強制的に実行するには、次のいずれかを行う必要があります。 + +- 共通動作を 属性でマークし、部分信頼アプリケーションとして展開したときに実行できるようにします。 APTCA でマークされたアセンブリを実行できないように、コンピューターでレジストリ エントリを設定できます。 」を参照してください。 + +- アプリケーションが完全信頼アプリケーションとして配置されている場合に、ユーザーが部分信頼環境でアプリケーションを実行するようにコード アクセス セキュリティ設定を変更できないことを確認します。 ユーザーがこのような変更を行うことができる場合、動作は実行されず、例外もスローされません。 これを確認するためには、[Caspol.exe \(コード アクセス セキュリティ ポリシー ツール\)](../../../../docs/framework/tools/caspol-exe-code-access-security-policy-tool.md) を使用した**levelfinal** オプションを参照してください。 + + 共通動作[!INCLUDE[crexample](../../../../includes/crexample-md.md)]、「[方法 : 企業内のエンドポイントをロックダウンする](../../../../docs/framework/wcf/extending/how-to-lock-down-endpoints-in-the-enterprise.md)」を参照してください。 + +## 構成 + 1 つの例外を除き、部分信頼コードは、ローカルの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ファイルにある `app.config` 構成セクションのみを読み込むことができます。 machine.config ファイルまたはルート web.config ファイルの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セクションを参照する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 構成セクションを読み込むには、ConfigurationPermission\(Unrestricted\) が必要です。 このアクセス許可がない場合、ローカルの構成ファイル外の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 構成セクション \(behaviors、bindings\) を参照すると、構成の読み込み時に例外が発生します。 + + 例外は、このトピックのシリアル化のセクションで説明したように、シリアル化の既知の型の構成です。 + +> [!IMPORTANT] +> 構成の拡張は、完全信頼で実行される場合にのみサポートされます。 + +## 診断 + +### イベント ログ + 部分信頼では、限定されたイベント ログがサポートされます。 イベント ログには、サービス アクティベーション エラーおよびトレース\/メッセージ ログ エラーのみが記録されます。 イベント ログに過剰な数のメッセージが書き込まれないように、ログに記録できるイベントの最大数は 5 つです。 + +### メッセージ ログ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が部分信頼環境で実行されていると、メッセージ ログは動作しません。 部分信頼環境下で有効になっても、サービスのアクティブ化には失敗しませんが、メッセージはログに記録されません。 + +### トレース + 部分信頼環境で実行される場合、利用できるトレース機能には制限があります。 構成ファイルの \<`listeners`\> 要素に追加できる型は と新しい に限られます。 標準の を使用すると、ログが不完全または不正確になります。 + + 次のトレース ソースがサポートされています。 + +- + +- + +- 、および 。 + + 次のトレース ソースはサポートされていません。 + +- CardSpace + +- + +- + + 列挙体の次のメンバーは指定できません。 + +- + +- + + 部分信頼環境でトレースを使用する場合は、アプリケーションにトレース リスナーの出力を保存するための十分なアクセス許可があることを確認します。 たとえば、 を使用してトレース出力をテキスト ファイルに書き込む場合は、アプリケーションにトレース ファイルを書き込むために必要な FileIOPermission があることを確認します。 + +> [!NOTE] +> トレース ファイルが重複したエラーでいっぱいになるのを防ぐために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では最初のセキュリティ エラーの後でリソースまたはアクションのトレースを無効にします。 リソースへのアクセスまたはアクションの実行が初めて行われようとしたとき、例外トレースはリソース アクセスの各失敗に対して、1 回だけ行われます。 + +## WCF サービス ホスト + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス ホストは、部分信頼をサポートしません。 部分信頼において [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを使用する場合は、サービスをビルドするために [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] にある [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] サービス ライブラリ プロジェクト テンプレートを使用しないでください。 代わりに、[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] 部分信頼がサポートされている Web サーバーでサービスをホストできる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス Web サイト テンプレートを選択して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に新しい Web サイトを作成します。 + +## 他の制約 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は通常、ホスト アプリケーションによってもたらされるセキュリティ上の考慮事項によって制限されます。 たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が XAML ブラウザー アプリケーション \(XBAP\) でホストされている場合は、「[Windows Presentation Foundation 部分信頼セキュリティ](http://go.microsoft.com/fwlink/?LinkId=89138)」で説明されているように、XBAP の制限に従うことになります。 + + 次の追加機能は indigo2 が部分信頼環境で実行されていると有効になりません。 + +- WMI \(Windows Management Instrumentation\) + +- イベント ログは部分的にしか有効になりません \(診断のセクションの説明を参照\)。 + +- パフォーマンス カウンター + + 部分信頼環境でサポートされていない [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 機能を使用すると、実行時に例外が発生することがあります。 + +## 記載されていない機能 + 部分信頼環境で利用できない情報やアクションを見つけ出す最善の方法は、リソースへのアクセスまたはアクションの実行を `try` ブロックの内側で試みて、エラーを `catch` することです。 トレース ファイルが重複したエラーでいっぱいになるのを防ぐために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では最初のセキュリティ エラーの後でリソースまたはアクションのトレースを無効にします。 リソースへのアクセスまたはアクションの実行が初めて行われようとしたとき、例外トレースはリソース アクセスの各失敗に対して、1 回だけ行われます。 + +## 参照 + + + + + [サポートされている配置シナリオ](../../../../docs/framework/wcf/feature-details/supported-deployment-scenarios.md) + [部分信頼のベスト プラクティス](../../../../docs/framework/wcf/feature-details/partial-trust-best-practices.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/partial-trust.md b/docs/framework/wcf/feature-details/partial-trust.md new file mode 100644 index 00000000000..cd01a3f047f --- /dev/null +++ b/docs/framework/wcf/feature-details/partial-trust.md @@ -0,0 +1,30 @@ +--- +title: "部分信頼 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 489b1587-9909-4d0e-8c1a-5e83c8f8292b +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# 部分信頼 +[!INCLUDE[netfx35_long](../../../../includes/netfx35-long-md.md)] 以降では、部分的に信頼された呼び出し元は、、および に実装されたパブリック型とパブリック メソッドにアクセスできます。このセクションでは、部分的に信頼されたアプリケーション内における [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の使用でサポートされるシナリオと、コード アクセス セキュリティ \(CAS: Code Access Security\) のアクセス許可レベルを下げて実行されるアプリケーションで利用できる、限られた [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 機能について説明します。 + +## このセクションの内容 + [サポートされている配置シナリオ](../../../../docs/framework/wcf/feature-details/supported-deployment-scenarios.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を実行するための主な部分信頼シナリオについて説明します。 + + [部分信頼機能の互換性](../../../../docs/framework/wcf/feature-details/partial-trust-feature-compatibility.md) + 部分信頼では使用できない [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 機能について説明します。 + + [部分信頼のベスト プラクティス](../../../../docs/framework/wcf/feature-details/partial-trust-best-practices.md) + 部分信頼アプリケーションで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用するためのベスト プラクティスを紹介します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/peer-channel-concepts.md b/docs/framework/wcf/feature-details/peer-channel-concepts.md new file mode 100644 index 00000000000..f56360c1232 --- /dev/null +++ b/docs/framework/wcf/feature-details/peer-channel-concepts.md @@ -0,0 +1,32 @@ +--- +title: "ピア チャネルの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 379c2c0b-a44f-4423-9480-4739e7f18614 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# ピア チャネルの概要 +このセクションでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のピア チャネルを構成する概念について簡単に説明します。 + +## このセクションの内容 + [ピア メッシュ](../../../../docs/framework/wcf/feature-details/peer-meshes.md) : ピア チャネルを使用して作成するメッシュの特性について説明します。 + + [ピア ノード](../../../../docs/framework/wcf/feature-details/peer-nodes.md) : ピア ノードについて説明します。 + + [ピア チャネルのセキュリティ](../../../../docs/framework/wcf/feature-details/peer-channel-security.md) : ピア チャネルによって提供されるセキュリティ シナリオとソリューションについて説明します。 + + [ピア リゾルバー](../../../../docs/framework/wcf/feature-details/peer-resolvers.md) : PRNP \(Peer Name Resolution Protocol\) および他のカスタム リゾルバーの使用について説明します。 + +## 参照 + [ピア チャネル アプリケーションの構築](../../../../docs/framework/wcf/feature-details/building-a-peer-channel-application.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/peer-channel-scenarios.md b/docs/framework/wcf/feature-details/peer-channel-scenarios.md new file mode 100644 index 00000000000..e24292481e5 --- /dev/null +++ b/docs/framework/wcf/feature-details/peer-channel-scenarios.md @@ -0,0 +1,35 @@ +--- +title: "ピア チャネルのシナリオ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dae6e0f7-900c-45ee-8be9-3647698382fb +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# ピア チャネルのシナリオ +ピア チャネル API は、次の開発シナリオをサポートします。 + +## パブリケーション\/サブスクリプション メッセージング + パブリケーション\/サブスクリプション アプリケーション \(株価情報、ニュース見出しのパブリッシャー、スポーツの得点結果、天気予報など\) を構築する企業では、ピア チャネルを使用することで、サーバーを使用しないアプリケーションを実現できます。 たとえば、ユーザーは、共通メッシュ \(クライアント グループ\) に参加することで、スポーツの最新の得点経過を取得でき、サーバーの負荷を増大させずに、最新の試合データを大量に伝達できます。 これにより、データ プロバイダーは、サーバー ベース技術への投資を大幅に増大することなしに、これまでよりも高品質のサービスを提供できるようになります。 + +## コラボレーション + 独立ソフトウェア ベンダー \(ISV\) は、ピアツーピアのアクティビティに参加するための緊密なグループをユーザーが作成できるようなアプリケーションを構築できます。 たとえば、共同プロジェクトでのチームによる作業、友人による画像の共有、パーティ計画の各種作業などがあります。 従来、このようなアクティビティにはサーバーが必要でしたが、ピア チャネルでは、従来のサーバーとクライアントのモデルでは容易に実装できなかったオフライン アクセス シナリオを実現することにより、費用効果の高い方法でこのアクティビティを実現できるようになります。 + +## 分散処理と計算クラスター + 一般に、計算クラスターと分散処理は、財務モデルや天気モデル、人間の DNA のデコードなどの大規模計算で使用します。 通常、このような計算は、サーバーを使用して計算クラスターに参加するすべてのクライアントにタスクを個別に割り当てることで実行されます。 このサーバーには追加の要求が生じる場合もあります。たとえば、特定の期間内にすべてのタスクを終了させるため、各タスクに複数のコンピューターが必要となる場合があります。 また、タスクを実行しているあるクライアントが停止した場合は、別のクライアントでそのタスクを引き継いで実行する必要があります。 さらに、一貫性のある結果を確保するために複数のクライアントで同じタスクを実行しなければならない場合もあります。 サーバーは、このようなクライアントの調整を実行できますが、個別にタスクを受け取るクライアントが、タスクに関係するサーバーの要件を決定し、計算メッシュを使用してタスクを完了する方法を特定するピアツーピア ソリューションを作成できます。 + +## ゲーム + ピア チャネルを使用することで、アプリケーション開発者はサーバーを使用しないバージョンのゲームを作成できます。このゲームでは、中央サーバーを使用するのではなくピアツーピア メカニズムによって、ゲームの動作を他のプレーヤーに転送したり他のプレーヤーと同期したりします。 小規模の ISV では、これにより、中央サーバーの配置、保守、サービス提供などに関連する運用コストを削減できます。 ピアツーピア アーキテクチャを使用して記述されたゲームは、インターネットや有線または無線のローカル ネットワークでプレイできます。 さらに、ロビーやゲーム内チャットなどのゲームのアクティビティをピアツーピア ネットワークを使用して開発できます。 + +## 参照 + [ピア チャネルの概要](../../../../docs/framework/wcf/feature-details/peer-channel-concepts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/peer-channel-security.md b/docs/framework/wcf/feature-details/peer-channel-security.md new file mode 100644 index 00000000000..979bd31392a --- /dev/null +++ b/docs/framework/wcf/feature-details/peer-channel-security.md @@ -0,0 +1,46 @@ +--- +title: "ピア チャネルのセキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2c59b164-3729-44f0-a967-f247c42de662 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# ピア チャネルのセキュリティ +ピア チャネルは、マルチパーティ メッセージングに基づく各種分散アプリケーションを実現します。例として、インターネット規模のコンテンツ配布 \(信頼されたソースによるコンテンツ \(メディアやソフトウェア更新プログラムなど\) 配布\)、友人グループによる音楽や写真の交換、同僚チームによるドキュメントの共同編集などが挙げられます。これらのシナリオでは、それぞれに一意のセキュリティ モデルが必要です。ピア チャネル セキュリティ モデルは、このようなシナリオに対処するようにデザインされており、さまざまな ID モデル、認証モデル、および承認モデルの各ニーズに対応する堅牢なセキュリティ モデルを提供します。 + +## セキュリティ シナリオ + コンテンツ配布シナリオでは、コンテンツの各受信者がコンテンツ ソースを識別する必要があります。配布を行うというシナリオの性質上、メッセージの処理または途中受信を行う中継局を確認および信頼することは必ずしも可能ではありません。信頼できない中継局によるメッセージ改ざんの脅威を効果的に軽減するには、アプリケーションで送信時にメッセージをセキュリティで保護することにより、改ざんの試みを容易に検出できるようにします。この場合、コンテンツの機密度に応じて、暗号化が必要な場合があります。 + + グループによるドキュメント編集のようなコラボレーション シナリオでは、多くの場合、セッションに参加する各メンバーを個別に識別し、認証する必要があります。これは、セッションをセキュリティで保護するには、ユーザー グループを定義し、これらのグループを認証するメカニズムが必要であるということを意味しています。さらに、アプリケーションでは、メッセージ レベルの認証によって各メッセージのトレースを行う必要が生じる場合があります。この種のアプリケーションでは、より強固なセキュリティ スキームを実現するためにパフォーマンスが犠牲となることがあります。 + + 非公式のグループにおける通信セッションでは、グループ内での秘密の共有など、形式張らないセキュリティ モデルが必要になることがあります。この種のアプリケーションでは、強力な認証方法を使用したり、否認防止手段を提供したりするよりも、セキュリティ モデルの確立と構成が容易であることの方が重要となります。このようなシナリオでは、通信レイヤーをセキュリティで保護すると同時にメッセージの認証も可能にする、パスワード ベースの認証機構が役立ちます。パスワード ベースのセキュリティは、ピア チャネルの既定の設定です。 + +## トークンの種類 + ピア チャネルでは、トークンの種類として、強力な識別手段である X.509 証明書だけを認識します。X.509 証明書は、実装可能な認証および承認の種類に基づいて強力な ID モデルを提供します。証明書を使用することで、機密性と整合性を容易に実現することができます。ただし、X.509 証明書は使用と展開が困難な場合があります。 + + ピア チャネルでは、パスワードを使用した簡単なアプリケーションもサポートしています。これらのアプリケーションでは、指定したパスワードに基づいて単純なピア グループをセットアップできます。この場合、グループの所有者がパスワードを決定してメンバーに通知します。各メンバーは、セッションに参加するためにこのパスワードを使用して事前にサインインする必要があります。パスワードは、セッションへのエントリを許可する目的でのみ使用できます。パスワードを使用して、メッセージの認証を行うことはできません。これは、ピア グループで共有する共通鍵トークンをソース認証に使用することは困難かつ不適切であるためです。 + +## セキュリティ モデル + ピア チャネルは、ピア間の個々のリンクをセキュリティで保護する機能を提供します。これは、\(アプリケーションの観点から\) セキュリティ保護されていないリンク上でメッセージがフローすることはないことを意味します。内部的には、各リンク \(2 つのピア間のトランスポート チャネル\) は トランスポート層セキュリティ \(TLS\) を使用してセキュリティ保護されます。つまり、送信者がメッセージを作成し、送信すると、このメッセージは、セキュリティで保護されたトランスポートを介して、メッセージにアクセスする直近のピアに送信されます。次に、このピアが、セキュリティで保護された接続を介して直近のピアにメッセージを送信することになります。このセキュリティはトランスポート レベルでのみ動作し、メッセージのセキュリティ モデルには依存しません。 + + ピア チャネルでは、使用するトランスポート セキュリティとは別に、メッセージをセキュリティ保護する方法も用意されています。このモデルでは、メッセージはソースのセキュリティ トークンを使用してソースで保護されます。ただし、現在サポートされているのは X.509 証明書だけです。セキュリティ保護されたメッセージは、ピア ネットワーク経由で送信されます。各受信ピアは、ソースの信頼性を確認できます。メッセージはセキュリティで保護されているため、中継局がメッセージを改ざんすることはできません。 + + 機密性を実現するために、アプリケーションでは強力なグループ メンバーシップ スキームを持つトランスポート セキュリティを採用して、メッセージへの権限のないアクセスを禁止できます。 + + ピア チャネルでは、サポートされているトークンの種類のいずれかをアプリケーションで選択する限り、特定の ID モデルを必要としません。これらの ID と認証決定のライフサイクルは、アプリケーションにより完全に支配されます。 + +## 参照 + [セキュリティによるピア チャネル アプリケーションの保護](../../../../docs/framework/wcf/feature-details/securing-peer-channel-applications.md) + [ピア チャネルの概要](../../../../docs/framework/wcf/feature-details/peer-channel-concepts.md) + [ピア チャネル アプリケーションの構築](../../../../docs/framework/wcf/feature-details/building-a-peer-channel-application.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/peer-meshes.md b/docs/framework/wcf/feature-details/peer-meshes.md new file mode 100644 index 00000000000..f5ab534a590 --- /dev/null +++ b/docs/framework/wcf/feature-details/peer-meshes.md @@ -0,0 +1,41 @@ +--- +title: "ピア メッシュ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d93e312e-ac04-40f8-baea-5da1cacb546e +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# ピア メッシュ +*メッシュ*は、互いに通信可能で、一意のメッシュ ID により識別されるピア ノードの名前付きコレクション \(相関グラフ\) です。 各ノードは複数の別のノードに接続されています。 接続状況が良好なメッシュでは、2 つのノード間にパスが存在します。メッシュの一番端のノード間には比較的少数のホップがあります。メッシュは、一部のノードまたは接続が落ちた場合でも、接続されたままになります。 メッシュ内のアクティブ ノードは、エンドポイント情報と対応するメッシュ ID を公開して他のピアが検索できるようにします。 + +## ピア メッシュを使用して作成されたメッシュの特徴 + +#### 一意の識別 + +- 一意の ID によって各メッシュが識別されます。 メッシュ名 \(メッシュ ID\) はドメイン ネーム システム \(DNS\) ホスト名と同じ形式です。 したがって、このメッシュ ID は、アプリケーションの対象クライアントに対して、リゾルバーの使用範囲内で一意にする必要があります。 "MyFamilysPeers" や "KevinsPokerTable" のような一般的な名前にすると、他のユーザー名と容易に衝突する可能性があり、意図しないピア エンドポイントの情報が返る場合があります。その結果、プライバシーの問題が発生したり、接続の待ち時間が増加したりする可能性があります。 このような問題を回避する 1 つの方法は、一意の ID をメッシュのニックネームの接尾辞として追加することです \(たとえば、"KevinsPokerTable90210" のようにします\)。 + +#### 大量のメッセージ + +- メッシュでは、1 人以上の送信者から同じメッシュ内の他のすべてのピア ノードにメッセージを伝達できます。 ピア ノードから大量に送られたメッセージは、`http://schemas.microsoft.com/net/2006/05/peer` の名前空間で指定されたヘッダーを使用します。 + +#### 最適化された接続 + +- ノードが参加したり離脱したりすると、ピア チャネル メッシュが自動的に調整されます。これにより、良好な接続が維持され、パーティション \(互いに分離するノード グループ\) が作成される可能性はほとんどなくなります。 メッシュ内の接続は現在のトラフィック パターンに基づいて動的に最適化され、送信者から受信者へのメッセージの待ち時間は可能な限り短縮されます。 + +#### ピア チャネルで提供されない一般的なネットワーク機能 + ピア チャネルで提供されない一般的なネットワーク機能を認識しておくことは重要です。 その機能 \(ピア チャネルの上にすべて構築される場合もあります\) を次に示します。 + +- メッセージの順序付け : 単独のソースから送信されたメッセージは、他のすべてのパーティに同じ順序またはソースが送信した順序で到着しない場合があります。 メッセージを特定の順序で配信する必要のあるアプリケーションでは、その順序をアプリケーションに組み込む必要があります \(決まった値で増加する ID をすべてのメッセージに含めるなど\)。 + +- 信頼できるメッセージング : ピア チャネルには、すべてのピアによりメッセージの受信を確認するメカニズムはありません。 メッセージの配信を保証するには、信頼性の層をピア チャネルの上に記述する必要があります。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/peer-nodes.md b/docs/framework/wcf/feature-details/peer-nodes.md new file mode 100644 index 00000000000..26ad06feed5 --- /dev/null +++ b/docs/framework/wcf/feature-details/peer-nodes.md @@ -0,0 +1,27 @@ +--- +title: "ピア ノード | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0732b314-6006-4ec6-999d-ec9476c9e5bb +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# ピア ノード +PeerNode はピア チャネル メッシュ内の単一エンドポイントです。アプリケーションは、複数のピア ノードを使用して、異なるメッシュに参加できます。たとえば、1 つのピアツーピア チャット アプリケーションを、高校生時代の友人とのチャット用のメッシュと、会社の同僚とのチャット用のメッシュという 2 つの独立したメッシュの一部とすることができます。 + +## 参照 + + +## 参照 + [ピア メッシュ](../../../../docs/framework/wcf/feature-details/peer-meshes.md) + [ピア チャネルの概要](../../../../docs/framework/wcf/feature-details/peer-channel-concepts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/peer-resolvers.md b/docs/framework/wcf/feature-details/peer-resolvers.md new file mode 100644 index 00000000000..1dfb3ed730d --- /dev/null +++ b/docs/framework/wcf/feature-details/peer-resolvers.md @@ -0,0 +1,50 @@ +--- +title: "ピア リゾルバー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d86d12a1-7358-450f-9727-b6afb95adb9c +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# ピア リゾルバー +メッシュに接続するには、ピア ノードに他のノードの IP アドレスが必要です。 IP アドレスを取得するには、リゾルバー サービスにアクセスします。このサービスは、メッシュ ID を受け取り、そのメッシュ ID で登録されているノードに対応するアドレスの一覧を返します。 リゾルバーは登録されたアドレスのリストを保持します。そのリストには、メッシュ レジスタの各ノードとサービスが含まれます。 + + 使用する PeerResolver サービスは、 の `Resolver` プロパティから指定できます。 + +## サポートされるピア リゾルバー + ピア チャネルは、PNRP \(Peer Name Resolution Protocol\) サービスとカスタム リゾルバー サービスの 2 種類のリゾルバーをサポートします。 + + 既定で、ピア チャネルは PNRP ピア リゾルバー サービスを使用して、メッシュ内のピアと近隣ノードを検出します。 PNRP が利用できない、または適切でない状況やプラットフォームでは、別の方法として、サーバー ベースの検索サービスである が [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に用意されています。 また、 インターフェイスを実装するクラスを書き込むと、カスタム リゾルバー サービスを明示的に定義することもできます。 + +### PNRP \(Peer Name Resolution Protocol\) + PNRP \([!INCLUDE[wv](../../../../includes/wv-md.md)] の既定のリゾルバー\) は、分散型でサーバーを使用しない、名前のリゾルバー サービスです。 PNRP は、Advanced Networking Pack をインストールすれば [!INCLUDE[wxpsp2](../../../../includes/wxpsp2-md.md)] でも使用できます。 2 つのクライアントが同じバージョンの PNRP を実行している場合、特定の条件 \(途中に企業のファイアウォールが存在しないなどの条件\) を満たせば、このプロトコルを使用してお互いを検索できます。 [!INCLUDE[wv](../../../../includes/wv-md.md)] に付属する PNRP は、Advanced Networking Pack に含まれているバージョンよりも新しいバージョンです。 [!INCLUDE[wxpsp2](../../../../includes/wxpsp2-md.md)] 用の PNRP への更新については、Microsoft ダウンロード センターで確認してください。 + +### カスタム リゾルバー サービス + PNRP サービスを利用できない場合、またはメッシュ形状を完全に制御する必要がある場合は、サーバー ベースのカスタム リゾルバー サービスを使用できます。 このサービスは、 インターフェイスを実装するリゾルバー クラスを記述するか、既定の受信トレイ実装 \(\) を使用することで、明示的に定義できます。 + + サービスの既定の実装では、クライアント登録は、クライアントが明示的に更新しない限り、特定の期間が経過した後に期限切れになります。 そこで、リゾルバー サービスを使用するクライアントは、登録を時間内に正常に更新するために、クライアントとサーバー間の待ち時間に上限の概念を設ける必要があります。 そのために、リゾルバー サービスに適切な更新タイムアウト \(`RefreshInterval`\) を選択します。 \(詳細については、「[CustomPeerResolverService 内部 : クライアント登録](../../../../docs/framework/wcf/feature-details/inside-the-custompeerresolverservice-client-registrations.md)」を参照してください\)。 + + アプリケーションを記述する際には、クライアントとカスタム リゾルバー サービス間の接続をセキュリティで保護することも考慮する必要があります。 これは、クライアントがリゾルバー サービスへのアクセスに使用する のセキュリティ設定を使用することで実現できます。 資格情報を使用する場合は、ピア チャネルの作成に使用する `ChannelFactory` で、それを指定する必要があります。 この資格情報は、カスタム リゾルバーへのチャネルの作成に使用される `ChannelFactory` に渡されます。 + +> [!NOTE] +> ローカル ネットワークや即席のネットワークでカスタム リゾルバーを使用するときは、リンク ローカル ネットワークまたは即席のネットワークを使用またはサポートするアプリケーションに、接続時に使用するリンク ローカル アドレスを 1 つだけ選択するロジックを含めることを強くお勧めします。 これにより、複数のリンク ローカル アドレスを持つコンピューターによって発生する可能性のある混乱をすべて回避できます。 このロジックに従って、ピア チャネルは、1 度に 1 つのリンク ローカル アドレスを使用することだけをサポートします。 このアドレスは、 の `ListenIpAddress` プロパティを使用して指定できます。 + + カスタム リゾルバーを実装する方法の例については、「[Peer Channel Custom Peer Resolver](http://msdn.microsoft.com/ja-jp/5b75a2bb-7ff1-4a14-abe7-3debf0537d23)」を参照してください。 + +## このセクションの内容 + [CustomPeerResolverService 内部 : クライアント登録](../../../../docs/framework/wcf/feature-details/inside-the-custompeerresolverservice-client-registrations.md) + +## 参照 + [ピア チャネルの概要](../../../../docs/framework/wcf/feature-details/peer-channel-concepts.md) + [ピア チャネルのセキュリティ](../../../../docs/framework/wcf/feature-details/peer-channel-security.md) + [ピア チャネル アプリケーションの構築](../../../../docs/framework/wcf/feature-details/building-a-peer-channel-application.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/peer-to-peer-networking.md b/docs/framework/wcf/feature-details/peer-to-peer-networking.md new file mode 100644 index 00000000000..c50461db67c --- /dev/null +++ b/docs/framework/wcf/feature-details/peer-to-peer-networking.md @@ -0,0 +1,37 @@ +--- +title: "ピアツーピア ネットワーク | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ad6cb67b-fd1c-4ca1-a767-b410da2e16ca +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# ピアツーピア ネットワーク +ピア チャネルとは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のマルチパーティ対応ピアツーピア \(P2P\) 通信技術です。 この技術によって、アプリケーション開発者は安全で拡張可能なメッセージ ベースの P2P 通信チャネルを利用できます。 ピア チャネルのメリットを活用するマルチパーティ アプリケーションの一般的な例は、チャットなどの共同作業アプリケーションです。チャットでは、ユーザーのグループがサーバーなしのピアツーピア方式で互いに会話します。 ピア チャネルを使用することで、顧客シナリオや企業シナリオでの P2P コラボレーション、コンテンツ配布、負荷分散、および分散処理が実現します。 + + [!INCLUDE[wv](../../../../includes/wv-md.md)] では、すべての [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と同様に、既定でピア チャネルが有効になっています。 ピア チャネルのクラスにアクセスするには、プロジェクトに System.ServiceModel.dll への参照を追加します。 + + 次の各セクションには、ピアツーピア ネットワークに関する情報と、ピア チャネルのクラスを使用してピア対応のネットワーク アプリケーションを作成する方法が記載されています。 + +## このセクションの内容 + [ピア チャネルのシナリオ](../../../../docs/framework/wcf/feature-details/peer-channel-scenarios.md): パブリケーション\/サブスクリプション メッセージング、コラボレーション、分散処理、ゲームなど、ピア チャネル API でサポートされる開発シナリオを紹介します。 + + [ピア チャネルの概要](../../../../docs/framework/wcf/feature-details/peer-channel-concepts.md): ピア メッシュ、ピア ノード、ピア チャネルのセキュリティ、およびピア リゾルバーについて説明します。 + + [ピア チャネル アプリケーションの構築](../../../../docs/framework/wcf/feature-details/building-a-peer-channel-application.md): ピア チャネル アプリケーションの開発に関するガイダンスを示します。 + +## ピア チャネルのコード例 + [ピア チャネル カスタム ピア リゾルバー](http://msdn.microsoft.com/ja-jp/5b75a2bb-7ff1-4a14-abe7-3debf0537d23) + +## ピア チャネル チームのブログ + [ピア チャネル チームのブログ](http://go.microsoft.com/fwlink/?LinkID=114530) \(http:\/\/go.microsoft.com\/fwlink\/?LinkID\=114530\) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/performance-considerations.md b/docs/framework/wcf/feature-details/performance-considerations.md new file mode 100644 index 00000000000..82141a56042 --- /dev/null +++ b/docs/framework/wcf/feature-details/performance-considerations.md @@ -0,0 +1,31 @@ +--- +title: "パフォーマンスに関する考慮事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 83082d4a-7350-4b04-ab2d-1fa5ffd643f5 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# パフォーマンスに関する考慮事項 +アプリケーションを構築する際には、パフォーマンスについて常に考慮することが重要です。このセクションには、パフォーマンスとセキュリティに関連するトピックが含まれています。 + +## このセクションの内容 + [ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) + クレームのコレクション内ですばやくクレームを検索するための機構について説明します。 + + [電子署名の暗号化](../../../../docs/framework/wcf/feature-details/encryption-of-digital-signatures.md) + デジタル署名の暗号化がパフォーマンスに及ぼす影響と、この機能を無効にする方法について説明します。 + +## 参照 + [セキュリティのベスト プラクティス](../../../../docs/framework/wcf/feature-details/best-practices-for-security-in-wcf.md) + [セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/poison-message-handling.md b/docs/framework/wcf/feature-details/poison-message-handling.md new file mode 100644 index 00000000000..5503c60c348 --- /dev/null +++ b/docs/framework/wcf/feature-details/poison-message-handling.md @@ -0,0 +1,118 @@ +--- +title: "有害メッセージ処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8d1c5e5a-7928-4a80-95ed-d8da211b8595 +caps.latest.revision: 29 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 29 +--- +# 有害メッセージ処理 +A*有害なメッセージ*をアプリケーションに配信が試行の最大数を超えたメッセージです。 この状況は、キュー ベースのアプリケーションがエラーによってメッセージを処理できないときに発生する可能性があります。 信頼性に対する要求を満たすために、キューに置かれたアプリケーションはトランザクションの下でメッセージを受信します。 キューに置かれたメッセージを受信したトランザクションを中止すると、メッセージはそのままキューに残り、新しいトランザクションの下で再試行されます。 トランザクションを中止させた問題が解決されなければ、受信側のアプリケーションは、配信試行回数の最大値を超えるまで同じメッセージの受信と中止を繰り返す悪循環に陥る可能性があり、その結果、有害メッセージが生じることになります。 + + メッセージは、さまざまな理由で有害メッセージになる可能性があります。 最も一般的な理由は、アプリケーション固有の理由です。 たとえば、アプリケーションがキューからメッセージを読み取り、なんらかのデータベース処理を実行する場合は、アプリケーションがデータベースをロックできないことによって、トランザクションが中止されることが考えられます。 データベース トランザクションが中止されたために、メッセージはキューに残ります。これにより、アプリケーションではメッセージを再度読み取り、データベースのロックの取得を再試行します。 メッセージに無効な情報が含まれている場合にも、有害メッセージになる可能性があります。 たとえば、発注書に無効な顧客番号が含まれている場合があります。 このような場合、アプリケーションは自発的にトランザクションを中止し、メッセージを強制的に有害メッセージにすることがあります。 + + まれに、メッセージをアプリケーションにディスパッチできないことがあります。 メッセージに不適切なフレームがあったり、無効なメッセージ資格情報が割り当てられていたり、無効なアクション ヘッダーが含まれていたりする場合などは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] レイヤーがメッセージの問題を検出することがあります。 このような場合、アプリケーションはメッセージを受信しません。ただし、メッセージは有害メッセージとなるため、手動で処理できます。 + +## 有害メッセージの処理 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の有害メッセージ処理は、アプリケーションにディスパッチできないメッセージや、アプリケーションにディスパッチされても、アプリケーション固有の理由によって処理できないメッセージを、受信側アプリケーションで処理する機構を提供します。 有害メッセージ処理は、キューに置かれた使用可能な各バインディングの次のプロパティで構成されます。 + +- `ReceiveRetryCount`. アプリケーション キューからアプリケーションへのメッセージの配信を再試行する最大回数を示す整数値。 既定値は 5 です。 データベースの一時的なデッドロックなどの問題を即時再試行で解決する場合は、この値で十分です。 + +- `MaxRetryCycles`. 再試行サイクルの最大数を示す整数値。 再試行サイクルは、アプリケーション キューから再試行サブキューにメッセージを転送し、構成可能な遅延の後に再試行サブキューからアプリケーション キューにメッセージを転送して配信を再試行するプロセスで構成されます。 既定値は 2 です。 [!INCLUDE[wv](../../../../includes/wv-md.md)] では、メッセージが最大で (`ReceiveRetryCount` + 1) × (`MaxRetryCycles` + 1) 回試行されます。 `MaxRetryCycles` は、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] および [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では無視されます。 + +- `RetryCycleDelay`. 再試行サイクル間の遅延時間。 既定値は 30 分です。 `MaxRetryCycles` と `RetryCycleDelay` の組み合わせにより、問題に対処する機構が提供されます。この場合、定期的な遅延後に再試行が行われ、問題が解決されます。 たとえば、SQL Server の保留中のトランザクションのコミットでロックされた行セットが処理されます。 + +- `ReceiveErrorHandling`. 再試行を最大回数実行しても配信できなかったメッセージに対して実行するアクションを示す列挙値。 値には、Fault、Drop、Reject、および Move の&4; つがあります。 既定のオプションは Fault です。 + +- Fault : このオプションでは、`ServiceHost` のエラーの原因となったリスナーにエラーが送信されます。 アプリケーションでキューのメッセージの処理を継続するには、なんらかの外部機構によってアプリケーション キューからメッセージを削除する必要があります。 + +- Drop : このオプションでは、有害メッセージが破棄されます。メッセージがアプリケーションに配信されることはありません。 この時点でメッセージの `TimeToLive` プロパティの有効期限が既に切れている場合は、メッセージが送信側の配信不能キューに表示されることがあります。 有効期限が切れていない場合は、どこにも表示されません。 このオプションは、メッセージが失われたときにユーザーが実行する操作が指定されていないことを示します。 + +- Reject : このオプションは、[!INCLUDE[wv](../../../../includes/wv-md.md)] 専用です。 アプリケーションがメッセージを受信できないという否定受信確認を送信側キュー マネージャーに返信するように、メッセージ キュー (MSMQ) に指示します。 メッセージは、送信側キュー マネージャーの配信不能キューに置かれます。 + +- Move : このオプションは、[!INCLUDE[wv](../../../../includes/wv-md.md)] 専用です。 有害メッセージを有害メッセージ キューに移動して、後で有害メッセージ処理アプリケーションで処理できるようにします。 有害メッセージ キューは、アプリケーション キューのサブキューです。 有害メッセージ処理アプリケーションを、有害キューからメッセージを読み取る [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスにすることができます。 有害キューはアプリケーション キューのサブキューであり、net.msmq:// としてアドレス指定できます*マシン名*>/*applicationQueue*有害、;、*マシン名*キューが存在するコンピューターの名前を指定します、 *applicationQueue*アプリケーションに固有のキューの名前を指定します。 + + メッセージに対して実行される配信の最大試行回数は、次のようになります。 + +- [!INCLUDE[wv](../../../../includes/wv-md.md)] の場合、((ReceiveRetryCount + 1) × (MaxRetryCycles + 1))。 + +- [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] および [!INCLUDE[wxp](../../../../includes/wxp-md.md)] の場合、(ReceiveRetryCount + 1)。 + +> [!NOTE] +> 正常に配信されたメッセージについては、再試行は行われません。 + + メッセージの読み取りが試行された回数を追跡するために、[!INCLUDE[wv](../../../../includes/wv-md.md)] では、中止回数をカウントする永続的なメッセージ プロパティと、アプリケーション キューとサブキューの間でメッセージが移動された回数をカウントする移動回数プロパティを保持します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネルはこれらを使用して、受信再試行回数と再試行サイクル数を計算します。 [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では、中止回数が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネルによってメモリに保持され、アプリケーションでエラーが発生した場合にリセットされます。 また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネルはいつでも、最大 256 のメッセージの中止回数をメモリに保持できます。 257 番目のメッセージを読み取ると、最も古いメッセージの中止回数がリセットされます。 + + 中止回数と移動回数のプロパティは、操作コンテキストを通じてサービス操作で使用できます。 これらのプロパティにアクセスする方法を次のコード例に示します。 + + [!code-csharp[S_UE_MSMQ_Poison#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_ue_msmq_poison/cs/service.cs#1)] + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、標準の、キューに置かれたバインディングを&2; つ提供します。 + +- します。 他の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] エンドポイントとのキュー ベースの通信を実行するのに適した [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインディング。 + +- します。 既存のメッセージ キュー アプリケーションとの通信に適したバインディング。 + +> [!NOTE] +> これらのバインディングでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの要件に基づいてプロパティを変更できます。 有害メッセージ処理機構全体は、受信側アプリケーションに対してローカルです。 このプロセスは、受信側アプリケーションが最終的に処理を停止し、送信側に否定受信確認を返信する場合を除き、送信元アプリケーションには認識されません。 この場合、メッセージは、送信元の配信不能キューに送られます。 + +## ベスト プラクティス : MsmqPoisonMessageException の処理 + キューに置かれたトランスポートによってスロー、サービス、メッセージが有害であると判断した場合、 を含む、`LookupId`有害メッセージのです。 + + 受信側アプリケーションを実装する、 インターフェイスをアプリケーションに必要なエラーがあれば処理します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][エラー処理およびレポートに対する制御の拡張](../../../../docs/framework/wcf/samples/extending-control-over-error-handling-and-reporting.md)します。 + + アプリケーションでは、有害メッセージを有害メッセージ キューに移動し、サービスがキュー内の残りのメッセージにアクセスできるようにする、なんらかの有害メッセージ自動処理を必要とする場合があります。 エラー処理機構を使用して、有害メッセージの例外をリッスンする唯一のシナリオは、 に設定したします。 メッセージ キュー 3.0 の有害メッセージ サンプルは、この動作を示しています。 ベスト プラクティスを含め、有害メッセージを処理するために必要な手順の概要を以下に示します。 + +1. 有害メッセージの設定がアプリケーションの要件を反映していることを確認します。 設定を処理するときは、[!INCLUDE[wv](../../../../includes/wv-md.md)]、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)]、および [!INCLUDE[wxp](../../../../includes/wxp-md.md)] でのメッセージ キューの機能の相違点を理解してください。 + +2. 必要に応じて `IErrorHandler` を実装し、有害メッセージのエラーを処理します。 `ReceiveErrorHandling` を `Fault` に設定する場合、有害メッセージをキューから取り除いたり、外部の従属的な問題を解決したりする手動の機構が必要となります。そのため、`IErrorHandler` を `ReceiveErrorHandling` に設定するときは、次のコードに示すように `Fault` を実装するのが一般的です。 + + [!code-csharp[S_UE_MSMQ_Poison#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_ue_msmq_poison/cs/poisonerrorhandler.cs#2)] + +3. サービス動作が使用できる `PoisonBehaviorAttribute` を作成します。 この動作により、`IErrorHandler` がディスパッチャーにインストールされます。 このコード例を次に示します。 + + [!code-csharp[S_UE_MSMQ_Poison#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_ue_msmq_poison/cs/poisonbehaviorattribute.cs#3)] + +4. サービスに有害動作属性による注釈が付けられていることを確認します。 + + + + また、`ReceiveErrorHandling` を `Fault` に設定した場合は、`ServiceHost` が有害メッセージを検出するとエラーになります。 この場合、faulted イベントにフックしてサービスを終了し、是正措置を講じた後に再起動できます。 など、`LookupId`で、 に反映、`IErrorHandler`ことに注意して、サービス ホストはエラーに使用するとでしたし、 `System.Messaging` API を使用してキューからメッセージを受信する、`LookupId`キューからメッセージを削除して、外部ストアまたは別のキューにメッセージを格納します。 これで `ServiceHost` を再起動して、通常の処理を再開できるようになります。 [の有害メッセージ処理で MSMQ 4.0](../../../../docs/framework/wcf/samples/poison-message-handling-in-msmq-4-0.md)この動作を示します。 + +## トランザクション タイムアウトと有害メッセージ + キューに置かれたトランスポート チャネルとユーザー コードの間では、特定の部類のエラーが発生する可能性があります。 これらのエラーは、メッセージ セキュリティ レイヤーやサービス ディスパッチ ロジックなど、中間のレイヤーで検出される場合があります。 たとえば、SOAP セキュリティ レイヤーで X.509 証明書がないことが検出された場合やアクションがない場合は、メッセージがアプリケーションにディスパッチされます。 この場合、サービス モデルはそのメッセージを破棄します。 メッセージはトランザクションで読み取られますが、そのトランザクションの結果は提供されないため、トランザクションが最終的にタイムアウトになって中止され、メッセージはキューに戻されます。 つまり、エラーの部類によっては、トランザクションがすぐに中止されるわけではなく、タイムアウトになるまで待機します。 使用してサービスのトランザクション タイムアウトを変更するします。 + + トランザクション タイムアウトをコンピューター全体で変更するには、machine.config ファイルを変更し、適切なトランザクション タイムアウトを設定します。 トランザクションに設定されたタイムアウトに従って、トランザクションは最終的に中止され、キューに戻されることになり、中止回数がインクリメントされることに注意してください。 最終的に、メッセージは有害メッセージになり、ユーザー設定に従って適切な処理が行われます。 + +## セッションと有害メッセージ + セッションでは、単一のメッセージと同じ再試行および有害メッセージ処理手順が行われます。 有害メッセージに対する上記のプロパティは、セッション全体に適用されます。 つまり、セッション全体が再試行され、メッセージは最終有害メッセージ キューに送られます。または、メッセージが拒否された場合は、送信側の配信不能キューに送られます。 + +## バッチ処理と有害メッセージ + バッチの一部であるメッセージが有害メッセージになった場合は、バッチ全体がロールバックされ、チャネルはメッセージを&1; つずつ読み取る処理に戻ります。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]バッチ処理を参照してください[トランザクションでメッセージのバッチ処理](../../../../docs/framework/wcf/feature-details/batching-messages-in-a-transaction.md) + +## 有害キュー内のメッセージに対する有害メッセージ処理 + 有害メッセージ処理は、メッセージが有害メッセージ キューに配置された時点では終了しません。 有害メッセージ キューに置かれたメッセージは、依然として読み取り、処理する必要があります。 最終有害サブキューからメッセージを読み取るときは、有害メッセージ処理設定のサブセットを使用できます。 適用できる設定は、`ReceiveRetryCount` と `ReceiveErrorHandling` です。 `ReceiveErrorHandling` は Drop、Rreject、Fault のいずれかに設定できます。 `MaxRetryCycles` が Move に設定されている場合は、`ReceiveErrorHandling` が無視され、例外がスローされます。 + +## Windows Vista、Windows Server 2003、および Windows XP の相違点 + 前述のように、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] には、すべての有害メッセージ処理設定が適用されるわけではありません。 [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)]、[!INCLUDE[wxp](../../../../includes/wxp-md.md)]、および [!INCLUDE[wv](../../../../includes/wv-md.md)] のメッセージ キューには、有害メッセージの処理に関連する次のような重要な違いがあります。 + +- [!INCLUDE[wv](../../../../includes/wv-md.md)] のメッセージ キューはサブキューをサポートしていますが、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] はサポートしていません。 サブキューは、有害メッセージ処理で使用されます。 再試行キューと有害キューは、有害メッセージ処理の設定に基づいて作成されるアプリケーション キューのサブキューです。 作成する再試行サブキューの数は、`MaxRetryCycles` で指定します。 したがって、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] または [!INCLUDE[wxp](../../../../includes/wxp-md.md)] で実行している場合、`MaxRetryCycles` は無視されるため、`ReceiveErrorHandling.Move` は使用できません。 + +- [!INCLUDE[wv](../../../../includes/wv-md.md)] のメッセージ キューは否定受信確認をサポートしていますが、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] はサポートしていません。 受信側キュー マネージャーから否定受信確認を受け取ると、送信側キュー マネージャーは拒否されたメッセージを配信不能キューに入れます。 そのため、`ReceiveErrorHandling.Reject` は、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では使用できません。 + +- [!INCLUDE[wv](../../../../includes/wv-md.md)] のメッセージ キューは、メッセージの配信試行回数を保持するメッセージ プロパティをサポートしています。 この中止回数のプロパティは、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では使用できません。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、中止回数をメモリで保持するため、同じメッセージがファーム内の複数の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスによって読み取られた場合、このプロパティは、正確な値を格納できない可能性があります。 + +## 関連項目 + [キューの概要](../../../../docs/framework/wcf/feature-details/queues-overview.md) + [Windows Vista、Windows Server 2003、および Windows XP におけるキュー機能の相違点](../../../../docs/framework/wcf/feature-details/diff-in-queue-in-vista-server-2003-windows-xp.md) + [指定して、コントラクトおよびサービスでエラーを処理](../../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/preventing-replay-attacks-when-a-wcf-service-is-hosted-in-a-web-farm.md b/docs/framework/wcf/feature-details/preventing-replay-attacks-when-a-wcf-service-is-hosted-in-a-web-farm.md new file mode 100644 index 00000000000..862c215e107 --- /dev/null +++ b/docs/framework/wcf/feature-details/preventing-replay-attacks-when-a-wcf-service-is-hosted-in-a-web-farm.md @@ -0,0 +1,27 @@ +--- +title: "WCF サービスが Web ファームでホストされている場合のリプレイ攻撃の回避 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1c2ed695-7a31-4257-92bd-9e9731b886a5 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# WCF サービスが Web ファームでホストされている場合のリプレイ攻撃の回避 +メッセージ セキュリティ WCF の使用により、受信メッセージから NONCE を作成し、生成された NONCE が内部 `InMemoryNonceCache` にあるかどうかを確認することで、リプレイ攻撃が防止される場合。そうである場合、メッセージはリプレイとして破棄されます。WCF サービスが Web ファームでホストされている場合、`InMemoryNonceCache` は Web ファームのノード間で共有されていないため、サービスはリプレイ攻撃に対して脆弱です。このシナリオの危険性を軽減するために、WCF 4.5 では抽象クラス からクラスを派生させることによって独自の共有 NONCE キャッシュを実装できるようにする機能拡張ポイントを提供しています。 + +## NoneCache の実装 + 独自の共有 NONCE キャッシュを実装するには、 からクラスを派生させ、[M:System.ServiceModel.Security.NoneCache.CheckNonce\(System.Byte\ メソッドと [M:System.ServiceModel.Security.NoneCache.TryAddNonce\(System.Byte\ メソッドをオーバーライドします。[M:System.ServiceModel.Security.NoneCache.CheckNonce\(System.Byte\ は、指定された NONCE がキャッシュに存在するかどうかを確認します。[M:System.ServiceModel.Security.NoneCache.TryAddNonce\(System.Byte\ は NONCE をキャッシュに追加しようとします。クラスを実装したら、インスタンスを作成して、それをクライアント側でのリプレイ検出用には 、サーバー側でのリプレイ検出用には に割り当てて準備します。この機能のためにすぐに使用できる構成サポートはありません。 + +## 参照 + [メッセージのセキュリティ](../../../../docs/framework/wcf/feature-details/message-security-in-wcf.md) + [SymmetricSecurityBindingElement](../../../../docs/framework/wcf/diagnostics/wmi/symmetricsecuritybindingelement.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/programming-wcf-security.md b/docs/framework/wcf/feature-details/programming-wcf-security.md new file mode 100644 index 00000000000..29b3721e51f --- /dev/null +++ b/docs/framework/wcf/feature-details/programming-wcf-security.md @@ -0,0 +1,110 @@ +--- +title: "WCF セキュリティのプログラミング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "メッセージ セキュリティ [WCF], プログラミングの概要" +ms.assetid: 739ec222-4eda-4cc9-a470-67e64a7a3f10 +caps.latest.revision: 25 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 25 +--- +# WCF セキュリティのプログラミング +このトピックでは、セキュリティで保護された [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションを作成するために使用する基本的なセキュリティ プログラミング タスクについて説明します。ここでは、*転送セキュリティ*と総称される認証、機密性、および整合性についてのみ説明します。承認 \(リソースまたはサービスへのアクセスの制御\) についての説明は含まれません。承認の詳細については、「[承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md)」を参照してください。 + +> [!NOTE] +> セキュリティの概念、特に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に関するセキュリティの概念については、MSDN の「[Web サービス拡張 \(WSE\) 3.0 のシナリオ、パターン、および実装のガイダンス](http://go.microsoft.com/fwlink/?LinkID=88250)」にある patterns & practices の一連のチュートリアルを参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティのプログラミングは、セキュリティ モードの設定、クライアント資格情報の種類の設定、および資格情報の値の設定の 3 つの手順に基づいています。これらの手順は、コードまたは構成を使用して実行できます。 + +## セキュリティ モードの設定 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ モードに関する一般的なプログラミング手順は、次のとおりです。 + +1. アプリケーション要件を満たす適切な定義済みバインディングを選択します。バインディングの選択肢の一覧については、「[システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。既定では、ほとんどのバインディングでセキュリティが有効になっています。唯一の例外は、 クラス \(構成を使用する場合は [\](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md)\) です。 + + 選択するバインディングによってトランスポートが決まります。たとえば、 はトランスポートとして HTTP を使用し、 は TCP を使用します。 + +2. バインディングのセキュリティ モードを選択します。選択したバインディングによって、選択できるモードが決まります。たとえば、 を選択すると、トランスポート セキュリティを使用できません \(このオプションはありません\)。同様に、 を選択すると、メッセージ セキュリティを使用できません。 + + 次の 3 つの選択肢があります。 + + 1. `Transport` + + トランスポート セキュリティは、選択したバインディングが使用する機構に依存します。たとえば、`WSHttpBinding` を使用している場合、セキュリティ機構は SSL \(Secure Sockets Layer\) です \(これは、HTTPS プロトコルの機構でもあります\)。一般に、トランスポート セキュリティの主な利点は、使用するトランスポートに関係なく、優れたスループットが得られることです。ただし、制限が 2 つあります。1 つは、ユーザーの認証に使用する資格情報の種類がトランスポート機構によって決まることです。これは、異なる種類の資格情報を要求する他のサービスと相互運用する必要がある場合には不都合です。もう 1 つの制限は、メッセージ レベルでセキュリティが適用されないため、エンド ツー エンドではなく、ホップ単位でセキュリティが実装されることです。この 2 つ目の制限は、クライアントとサービス間のメッセージ パスに中継局が含まれている場合にのみ問題になります。使用するトランスポート[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[トランスポートの選択](../../../../docs/framework/wcf/feature-details/choosing-a-transport.md)」を参照してください。トランスポート セキュリティの使用[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[トランスポート セキュリティの概要](../../../../docs/framework/wcf/feature-details/transport-security-overview.md)」を参照してください。 + + 2. `Message` + + メッセージ セキュリティでは、メッセージの安全性を維持するために必要なヘッダーとデータがすべてのメッセージに含まれます。ヘッダーの構成は変更可能であるため、任意の数の資格情報を含めることができます。トランスポート機構で提供できない特殊な資格情報の種類を要求する他のサービスと相互運用している場合や、メッセージを複数のサービスで使用する必要があり、各サービスが異なる資格情報の種類を要求する場合には、これは重要な要素になります。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [メッセージのセキュリティ](../../../../docs/framework/wcf/feature-details/message-security-in-wcf.md). + + 3. `TransportWithMessageCredential` + + このモードを選択すると、トランスポート層を使用してメッセージの転送がセキュリティで保護されると同時に、他のサービスが必要とするさまざまな資格情報がすべてのメッセージに含まれます。これにより、トランスポート セキュリティのパフォーマンス上の利点とメッセージ セキュリティの豊富な資格情報の利点の両方が提供されます。このモードは、、および の各バインディングで使用できます。 + +3. HTTP でトランスポート セキュリティを使用する \(つまり、HTTPS を使用する\) 場合は、SSL 資格情報を使用してホストを構成し、ポートで SSL を有効にします。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][HTTP トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/http-transport-security.md). + +4. を使用している場合、セキュリティで保護されたセッションを確立する必要がないときは、 プロパティを `false` に設定します。 + + セキュリティで保護されたセッションは、クライアントとサーバーが対称キーを使用してチャネルを作成するときに発生します \(メッセージ交換中、やりとりが終了するまで、クライアントとサーバーの両方が同じキーを使用します\)。 + +## クライアント資格情報の種類の設定 + 適切なクライアント資格情報の種類を選択します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][資格情報の種類の選択](../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md).使用できるクライアント資格情報の種類は、次のとおりです。 + +- `Windows` + +- `Certificate` + +- `Digest` + +- `Basic` + +- `UserName` + +- `NTLM` + +- `IssuedToken` + + モードの設定に応じて、資格情報の種類を設定する必要があります。たとえば、次の構成例に示すように、`wsHttpBinding` を選択しており、モードを "Message" に設定した場合は、Message 要素の `clientCredentialType` 属性の値を `None`、`Windows`、`UserName`、`Certificate`、および `IssuedToken` のいずれかに設定できます。 + +``` + + + + + + + + + +``` + + または + + [!code-csharp[c_WsHttpService#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_wshttpservice/cs/source.cs#1)] + [!code-vb[c_WsHttpService#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_wshttpservice/vb/source.vb#1)] + +## サービス資格情報の値の設定 + クライアント資格情報の種類を選択したら、サービスとクライアントが使用する実際の資格情報を設定する必要があります。サービスでは、資格情報は クラスを使用して設定します。また、資格情報は クラスの プロパティによって返されます。使用しているバインディングによって、サービス資格情報の種類、選択されるセキュリティ モード、およびクライアント資格情報の種類が暗黙的に決まります。サービス資格情報の証明書を設定するコードを次に示します。 + + [!code-csharp[c_tcpService#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_tcpservice/cs/source.cs#3)] + [!code-vb[c_tcpService#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_tcpservice/vb/source.vb#3)] + +## クライアント資格情報の値の設定 + クライアントでは、クライアント資格情報の値は クラスを使用して設定します。また、クライアント資格情報の値は クラスの プロパティから返されます。TCP プロトコルを使用するクライアントで、資格情報として証明書を設定するコードを次に示します。 + + [!code-csharp[c_TcpClient#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_tcpclient/cs/source.cs#1)] + [!code-vb[c_TcpClient#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_tcpclient/vb/source.vb#1)] + +## 参照 + [基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md) + [一般的なセキュリティ シナリオ](../../../../docs/framework/wcf/feature-details/common-security-scenarios.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/publishing-metadata.md b/docs/framework/wcf/feature-details/publishing-metadata.md new file mode 100644 index 00000000000..7e215a0a3b6 --- /dev/null +++ b/docs/framework/wcf/feature-details/publishing-metadata.md @@ -0,0 +1,54 @@ +--- +title: "メタデータの公開 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "メタデータ [WCF], 公開" +ms.assetid: 3a56831a-cabc-45c0-bd02-12e2e9bd7313 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# メタデータの公開 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスは 1 つ以上のメタデータ エンドポイントを公開することにより、メタデータを公開します。サービス メタデータを公開すると、そのメタデータで WS\-MetadataExchange \(MEX\) や HTTP\/GET 要求などの標準化プロトコルを使用できるようになります。メタデータのエンドポイントはアドレス、バインディング、コントラクトを持つ他のサービス エンドポイントに類似し、それらは構成か命令コードを使用してサービス ホストに追加することができます。 + +## メタデータ エンドポイントを公開する + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのメタデータ エンドポイントを公開するには、最初に のサービスの動作をサービスに追加しておく必要があります。 インスタンスを追加すると、サービスからメタデータ エンドポイントを公開できます。 サービス動作を追加すると、MEX プロトコルをサポートするメタデータ エンドポイント、または HTTP\/GET 要求に応答するメタデータ エンドポイントを公開できます。 + + を使用して、サービス内のすべてのサービス エンドポイント用のメタデータをエクスポートします。サービスからメタデータをエクスポートする方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メタデータのエクスポートとインポート](../../../../docs/framework/wcf/feature-details/exporting-and-importing-metadata.md)」を参照してください。 + + は、 インスタンスをサービス ホストへの拡張として追加します。 により、メタデータ公開プロトコルを実装することができます。また、 を使用して、 プロパティにアクセスすることにより、実行時にサービスのメタデータを取得できます。 + +### MEX メタデータ エンドポイント + MEX プロトコルを使用するメタデータ エンドポイントを追加するには、`IMetadataExchange` サービス コントラクトを使用するサービス エンドポイントをサービス ホストに追加します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] プログラミング モデルの一部として使用できるこのサービス コントラクト名を持つ インターフェイスが用意されます。WS\-MetadataExchange のエンドポイント、つまり MEX エンドポイントは、 クラスで静的ファクトリ メソッドが公開する 4 つの既定のバインディングの 1 つを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ツール \(Svcutil.exe など\) によって使用される既定のバインディングを照合できます。また、独自のカスタム バインディングを使用して MEX メタデータ エンドポイントを構成することもできます。 + +### HTTP GET メタデータ エンドポイント + HTTP\/GET 要求に応答するメタデータ エンドポイントをサービスに追加するには、 プロパティを `true` に設定します。また、 プロパティを `true` に設定することで、HTTPS を使用するメタデータ エンドポイントを構成することもできます。 + +## このセクションの内容 + [方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを構成してメタデータを公開し、クライアントが `?wsdl` クエリ文字列を使用した WS\-MetadataExchange または HTTP\/GET 要求によりメタデータを取得できるようにする方法を示します。 + + [方法 : コードを使用してサービスのメタデータを公開する](../../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-code.md) + コードを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのメタデータの公開を有効にして、クライアントが `?wsdl` クエリ文字列を使用した WS\-MetadataExchange または HTTP\/GET 要求によりメタデータを取得できるようにする方法を示します。 + +## リファレンス + + + + + + + + +## 参照 + [メタデータのエクスポートとインポート](../../../../docs/framework/wcf/feature-details/exporting-and-importing-metadata.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/queues-and-reliable-sessions.md b/docs/framework/wcf/feature-details/queues-and-reliable-sessions.md new file mode 100644 index 00000000000..4ba6bfc327f --- /dev/null +++ b/docs/framework/wcf/feature-details/queues-and-reliable-sessions.md @@ -0,0 +1,52 @@ +--- +title: "キューと信頼できるセッション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7e794d03-141c-45ed-b6b1-6c0e104c1464 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# キューと信頼できるセッション +キューおよび信頼できるセッションは、信頼できるメッセージングを実装する [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の機能です。このセクションの各トピックでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるメッセージング機能について説明します。 + + 信頼できるメッセージングとは、信頼できるメッセージング送信元 \(送信元と呼ぶ\) から信頼できるメッセージング送信先 \(送信先と呼ぶ\) にメッセージを確実に転送することを指します。 + + 信頼できるメッセージングの主要な側面は、次のとおりです。 + +- メッセージ転送エラーまたはトランスポート エラーに関係なく、送信元から送信先に送られるメッセージの転送が保証されること。 + +- 送信元と送信先を互いに分離することにより、送信元または送信先が利用できない場合でも、送信元と送信先でのそれぞれ独立したエラーと回復が可能になると共に、信頼できるメッセージの転送と配信が実現されること。 + + 信頼できるメッセージングを実現すると、待ち時間が長くなることがよくあります。待ち時間とは、メッセージが送信元から送信先に到達するまでにかかる時間です。そこで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、信頼できるメッセージングとして、次の 2 種類を提供します。 + +- [信頼できるセッション](../../../../docs/framework/wcf/feature-details/reliable-sessions.md) : 長い待ち時間という代償を伴わずに、信頼できる転送を実現します。 + +- [WCF のキュー](../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) : 信頼できる転送、および送信元と送信先の分離を共に実現します。 + +## 信頼できるセッション + 信頼できるセッションでは、メッセージング \(送信元および送信先\) エンドポイントを分離する中継局の数や種類に関係なく、WS\-ReliableMessaging プロトコルを使用して、送信元から送信先へのエンドツーエンドの信頼できるメッセージ転送を実現します。これには SOAP を使用しないトランスポート手段 \(HTTP プロキシなど\)、またはエンドポイント間でメッセージをやりとりする場合に必要となる SOAP を使用する手段 \(SOAP ベースのルーターやブリッジなど\) が含まれます。信頼できるセッションでは、メモリ内転送ウィンドウを使用して、トランスポート エラーが発生した場合に SOAP メッセージ レベル エラーをマスクし、接続を再確立します。 + + 信頼できるセッションは、待ち時間の短い、信頼できるメッセージ転送を実現します。これらは、TCP が IP ブリッジ経由のパケットで実現するものと同等の転送を、プロキシや中継局経由の SOAP メッセージで実現します。信頼できるセッション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[信頼できるセッション](../../../../docs/framework/wcf/feature-details/reliable-sessions.md)」を参照してください。 + +### キュー + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のキューでは、待ち時間は長くなりますが、信頼できるメッセージの転送と共に送信元および送信先の分離が実現されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のキュー通信は、Microsoft Message Queuing \(MSMQ\) に基づいています。 + + MSMQ は Windows にオプションとして付属し、NT サービスの 1 つとして実行されます。MSMQ サービスは、送信元の代わりに転送キューで転送用のメッセージを取得し、ターゲット キューに配信します。ターゲット キューは、送信先の代わりにメッセージを受け取り、後で送信先がメッセージを要求したときに配信します。MSMQ キュー マネージャーは信頼できるメッセージ転送プロトコルを実装して、送信中にメッセージが失われないようにします。このプロトコルは、ネイティブまたは SOAP リライアブル メッセージ プロトコル \(SRMP\) などの SOAP ベースのプロトコルです。 + + キュー間でのメッセージの信頼できる転送に加え、送信元と送信先の分離により、疎結合されたアプリケーションで信頼できる通信を実現できます。信頼できるセッションとは異なり、送信元と送信先が同時に実行されている必要はありません。このため、送信元によるメッセージの生成レートと送信先によるメッセージの消費レートが一致しないときに、キューを実質的に負荷平準化機構として使用できるようになります。キュー[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WCF のキュー](../../../../docs/framework/wcf/feature-details/queues-in-wcf.md)」を参照してください。 + +## 参照 + [WCF のキュー](../../../../docs/framework/wcf/feature-details/queues-in-wcf.md) + [WCF でのキュー](../../../../docs/framework/wcf/feature-details/queuing-in-wcf.md) + [信頼できるセッション](../../../../docs/framework/wcf/feature-details/reliable-sessions.md) + [信頼できるセッションの概要](../../../../docs/framework/wcf/feature-details/reliable-sessions-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/queues-in-wcf.md b/docs/framework/wcf/feature-details/queues-in-wcf.md new file mode 100644 index 00000000000..07e0ce3049f --- /dev/null +++ b/docs/framework/wcf/feature-details/queues-in-wcf.md @@ -0,0 +1,75 @@ +--- +title: "Windows Communication Foundation のキュー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "キュー [WCF]" +ms.assetid: 43008409-1bb4-4bd4-85d7-862c8f10ae20 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# Windows Communication Foundation のキュー +このセクションの各トピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でのキューのサポートについて説明します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、Microsoft Message Queuing \(以前の MSMQ\) をトランスポートとして利用することによってキューをサポートしており、次のシナリオを実現できます。 + +- 疎結合アプリケーション。送信元アプリケーションは、受信側アプリケーションでメッセージ処理の用意ができているかどうかを確認せずにキューにメッセージを送信できます。キューにより処理の独立性が提供されるため、送信元アプリケーションは、受信側アプリケーションのメッセージ処理速度とは関係なく、キューにメッセージを送信できます。キューに対するメッセージの送信がメッセージ処理と密接に結び付けられていない場合は、システムの全体的な可用性が向上します。 + +- エラーの分離。キューにメッセージを送受信するアプリケーションは、互いに影響を与えずにエラーを発生させることができます。たとえば、受信側のアプリケーションでエラーが発生しても、送信側のアプリケーションではメッセージをキューに送信し続けることができます。受信側は、エラーからの復帰後、キューにあるメッセージを処理できます。エラーの分離により、システムの全体的な信頼性と可用性が向上します。 + +- 負荷の平準化。送信元アプリケーションから送信するメッセージが多すぎるために、受信側アプリケーションの処理が間に合わなくなることがあります。キューによってこの送信側と受信側のメッセージの不均衡が調整されるため、受信側の処理が間に合わなくなることはありません。 + +- 操作の切断。モバイル デバイスのように遅延の大きなネットワーク、または可用性に制限のあるネットワークを介して通信を行う場合に、送信、受信、および処理の各操作を切断できます。エンドポイントが切断された場合も、キューによってこれらの操作を続行できます。接続が再度確立されると、メッセージはキューから受信側アプリケーションに転送されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションでキューの機能を使用する場合は、標準バインディングのいずれかを使用できます。また、標準バインディングでは要件が満たされない場合には、カスタム バインディングを作成することもできます。関連する標準バインディング、および標準バインディングの選択方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : WCF エンドポイントとメッセージ キュー アプリケーションを使用してメッセージを交換する](../../../../docs/framework/wcf/feature-details/how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md)」を参照してください。カスタム バインディングの作成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください。 + +## このセクションの内容 + [キューの概要](../../../../docs/framework/wcf/feature-details/queues-overview.md) + メッセージ キュー概念について概要を示します。 + + [WCF でのキュー](../../../../docs/framework/wcf/feature-details/queuing-in-wcf.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によるキューのサポートの概要です。 + + [方法 : WCF エンドポイントを使用してキューに置かれたメッセージを交換する](../../../../docs/framework/wcf/feature-details/how-to-exchange-queued-messages-with-wcf-endpoints.md) + クラスを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス間で通信を行う方法を説明します。 + + [方法 : WCF エンドポイントとメッセージ キュー アプリケーションを使用してメッセージを交換する](../../../../docs/framework/wcf/feature-details/how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md) + を使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションとメッセージ キュー アプリケーション間で通信を行う方法を説明します。 + + [セッションでキューに置かれたメッセージのグループ化](../../../../docs/framework/wcf/feature-details/grouping-queued-messages-in-a-session.md) + 単一の受信側アプリケーションが関連メッセージを迅速に処理できるように、キューでメッセージをグループ化する方法を説明します。 + + [トランザクションに含まれるメッセージのバッチ処理](../../../../docs/framework/wcf/feature-details/batching-messages-in-a-transaction.md) + トランザクションでメッセージをバッチ処理する方法について説明します。 + + [配信不能キューを使用したメッセージ転送エラー処理](../../../../docs/framework/wcf/feature-details/using-dead-letter-queues-to-handle-message-transfer-failures.md) + 配信不能キューを使用してメッセージの転送エラーと配信エラーを処理する方法、および配信不能キューのメッセージを処理する方法を説明します。 + + [有害メッセージ処理](../../../../docs/framework/wcf/feature-details/poison-message-handling.md) + 有害メッセージ \(受信側アプリケーションへの配信試行の回数が最大値を超えたメッセージ\) の処理方法を説明します。 + + [Windows Vista、Windows Server 2003、および Windows XP におけるキュー機能の相違点](../../../../docs/framework/wcf/feature-details/diff-in-queue-in-vista-server-2003-windows-xp.md) + [!INCLUDE[wv](../../../../includes/wv-md.md)]、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)]、および [!INCLUDE[wxp](../../../../includes/wxp-md.md)] における [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] キュー機能の相違についてまとめています。 + + [トランスポート セキュリティを使用したメッセージのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-messages-using-transport-security.md) + トランスポート セキュリティを使用して、キューに置かれたメッセージを保護する方法を説明します。 + + [メッセージ セキュリティを使用したメッセージのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-messages-using-message-security.md) + メッセージ セキュリティを使用して、キューに置かれたメッセージを保護する方法を説明します。 + + [キューに置かれたメッセージングのトラブルシューティング](../../../../docs/framework/wcf/feature-details/troubleshooting-queued-messaging.md) + 一般的なキューの問題をトラブルシューティングする方法について説明します。 + + [キューに置かれた通信のベスト プラクティス](../../../../docs/framework/wcf/feature-details/best-practices-for-queued-communication.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のキューを使用した通信のベスト プラクティスについて説明します。 + +## 参照 + [Message Queuing](http://msdn.microsoft.com/ja-jp/ff917e87-05d5-478f-9430-0f560675ece1) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/queues-overview.md b/docs/framework/wcf/feature-details/queues-overview.md new file mode 100644 index 00000000000..eefd806e41a --- /dev/null +++ b/docs/framework/wcf/feature-details/queues-overview.md @@ -0,0 +1,96 @@ +--- +title: "キューの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "キュー [WCF], MSMQ 統合" +ms.assetid: b8757992-ffce-40ad-9e9b-3243f6d0fce1 +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# キューの概要 +ここでは、キューを使った通信の概要とその基本概念を解説します。 後の各セクションでは、キューの概念がどのように [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] に活かされているかを詳しく説明します。 + +## キューの基本概念 + 分散アプリケーションの設計では、サービスとクライアントとの間の通信に適したトランスポートを選択することが重要になります。 使用するトランスポートの種類の決定には、いくつかの要素が影響します。 そのうちの 1 つである、サービス、クライアント、トランスポートの分離という重要な要素により、キューを使用するトランスポートと、TCP や HTTP などの直接的なトランスポートのどちらを使用するかが決定します。 TCP や HTTP などの直接的なトランスポートの性質により、サービスやクライアントの機能が停止したり、ネットワークに障害が発生したりすると、通信全体が停止します。 アプリケーションが全体として正常に機能するためには、サービス、クライアント、ネットワークがすべて揃って稼働している必要があります。 キューを使用するトランスポートでは、分離が実現されます。つまり、サービスやクライアントが停止したり、これらの間の通信リンクに障害が発生したりしても、障害が発生していないサービスやクライアントは引き続き機能します。 + + キューとは、通信ノードやネットワークの障害時にも通信の信頼性を確保するための手段です。 通信ノード間で交換されたメッセージは、いったんキューに取り込まれ、それから配信されます。 通常、キューはその過程で、記憶装置に保存されます。これは、一時的に記憶されるだけの場合も、ある程度の期間保存される場合もあります。 キューは、クライアントからのメッセージをサービスに代わって保存しておき、後でサービスに転送します。 このように、仲介の役割を果たすキューにより、いずれかの通信ノードで生じた障害が分離されるので、システムの可用性およびサービスの分離を実現するには、キューを使用するトランスポートが適しています。 しかしその一方で、通信の遅延が大きい、という欠点があります。 *遅延*とは、クライアントがメッセージを送信してから、サービスが受け取るまでの時間のことです。 遅延が大きいと、メッセージを送ってから実際に処理されるまでに、時間がかかります。 キューを使用する多くのアプリケーションでは、この遅延への対策が講じられています。 次の図は、キューに置かれた通信の概念モデルを表したものです。 + + ![キューに置かれた通信のモデル](../../../../docs/framework/wcf/feature-details/media/qconceptual-figure1c.gif "QConceptual\-Figure1c") + + キューを使う通信の概念モデル + + 現実には、キューの概念は分散処理モデルに基づいています。 キューはサービスまたはクライアントと同じホスト上に配置される場合も、この両方から独立している場合もあります。 一般的には、キューはサービスと同じホスト上に配置します。 このような構成の場合、クライアント側では、リモート キューに接続していつでも使用できると想定することはできません。 同様に、キューを使用するサービスの可用性に関係なく、キューの可用性が確保されなければなりません。 そこで、キューの管理がキュー マネージャーによって行われます。 キュー マネージャーは、他のキュー マネージャーからキューに送信されたメッセージを受け取ります。 さらに、リモート キューとの接続を管理し、これらのリモート キューにメッセージを転送するのもキュー マネージャーの役割です。 クライアントやサービスに障害が発生してもキューの可用性を確保できるように、キュー マネージャーは通常、外部サービスとして実行されます。 + + クライアントがメッセージをキューに送信すると、そのメッセージがターゲット キュー \(サービス側のキュー マネージャーが管理するキュー\) に送信されます。 クライアント側のキュー マネージャーは、メッセージを転送キュー \(送信キュー\) に送ります。 転送キューとは、クライアントのキュー マネージャーが管理するキューであり、ここではターゲット キューに転送されるメッセージがいったん蓄積されます。 次にキュー マネージャーは、ターゲット キューを管理するキュー マネージャーとの通信経路を検索し、転送します。 通信の信頼性を確保するために、キュー マネージャーには、データの損失を防止する転送プロトコルが実装されています。 送信先のキュー マネージャーは、ターゲット キュー宛てのメッセージを受信してターゲット キューに格納します。 ターゲット キューからの読み出しをサービスが要求すると、キュー マネージャーから目的のアプリケーションにメッセージが配信されます。 以上のやり取りに関与する 4 者の関係を図に示します。 + + ![キューに置かれたアプリケーションの図](../../../../docs/framework/wcf/feature-details/media/distributed-queue-figure.jpg "Distributed\-Queue\-Figure") + + キューを使った通信 \- 標準的な構成 + + このように、キュー マネージャーによりサービスとクライアントが分離されているため、送信側または受信側のいずれかが停止していても、実際の通信には影響しません。 キューの導入によるもう 1 つの利点として、複数のアプリケーションが同じキューからメッセージを読み込めるため、各ノードが個別に通信する場合に比べ、スループットを改善できるという点があります。 実際、拡張性やスループットを改善するためにキューを使用するケースも少なくありません。 + +## キューとトランザクション + トランザクションでは、複数の操作をグループ化できるため、トランザクションに含まれる操作が 1 つでも失敗すると、すべての処理が失敗となります。 例として、ATM を使用して 10 万円を普通預金から当座預金に移すことを考えてみましょう。 これは、次の操作を伴います。 + +- 普通預金から 10 万円を引き出す。 + +- 当座預金に 10 万円を預ける。 + + 最初の処理が成功して 10 万円が引き出された後、2 番目の操作が失敗すれば、既に引き出された 10 万円が失われてしまいます。 このような状況を避けて口座の状態を有効に維持するには、いずれか一方の操作に失敗したら、両方の操作を失敗と見なす必要があります。 + + トランザクション メッセージでは、メッセージをキューに送る操作やキューから読み出す操作を、トランザクション内で行えます。 つまり、トランザクション内でメッセージをキューに送った後でそのトランザクションがロールバックされると、その結果は、始めからメッセージを送らなかった場合と同じになります。 同様に、トランザクション内でメッセージを受け取った後でそのトランザクションがロールバックされると、その結果は、メッセージを受信しなかった場合と同じになります。 メッセージはキューに残り、読み出せる状態になります。 + + 遅延が大きいため、メッセージを送る時点では、ターゲット キューに到達するまでどれぐらいかかるか、サービスがそのメッセージを処理するのにどれぐらいかかるかを知る手段はありません。 したがって、単一のトランザクションを使用してメッセージの送信、受信、処理を行うことは、望ましくありません。 トランザクション全体がコミットされるまでの時間が予測できないからです。 トランザクションを使用してクライアントとサービスがキューを介して通信する場合は、クライアントとサービスでそれぞれトランザクションが必要になります。 下の図は、キューを使った典型的な通信でのトランザクション境界を示しています。 + + ![トランザクションを含むキュー](../../../../docs/framework/wcf/feature-details/media/qwithtransactions-figure3.gif "QWithTransactions\-Figure3") + + キューを使った通信 \- 送受信の別個のトランザクション + + クライアントのトランザクションでは、メッセージを処理し、送信します。 トランザクションがコミットされると、メッセージは転送キューに入ります。 一方、サービスでは、ターゲット キューからメッセージを読み取り、メッセージを処理して、トランザクションをコミットします。 メッセージの処理中にエラーが発生すると、そのメッセージはロールバックされ、ターゲット キューに置かれます。 + +## キューを使った非同期通信 + キューを利用すると非同期通信も可能です。 キューを使用してメッセージを送信するアプリケーションは、キュー マネージャーで生じる遅延が大きいため、メッセージが受信側で受信および処理されるまで待機することができません。 想定以上に長い期間、メッセージがキューに残ったままになる可能性があるからです。 この状況を回避するために、メッセージに有効期間 \(TTL: Time\-To\-Live\) を設定できるようになっています。 これはメッセージが転送キューに留まっていられる時間を表す値です。 この時間が経過してもターゲット キューに送信されなかったメッセージは、配信不能キューに転送することができます。 + + 送信側がメッセージを送信した時点で、送信操作から制御が戻っても、送信側の転送キューにメッセージが到達したことを示しているにすぎません。 ターゲット キューへの転送に失敗していても、送信元アプリケーションで、すぐにそれを知ることはできないのです。 このような失敗を記録するために、失敗したメッセージは配信不能キューに転送されます。 + + ターゲット キューに到達できなかったり有効期間を経過したエラーは、個別に処理する必要があります。 このため、キューを使用するアプリケーションでは、次の 2 つに分けてロジックを記述することも少なくありません。 + +- 正常時にクライアントおよびサービスがメッセージを送受信するためのロジック + +- 失敗した転送や配信からのメッセージを処理するための補正ロジック + + 以下のセクションで、これらの概念について説明します。 + +## 配信不能キューのプログラミング + 配信不能キューには、さまざまな原因によりターゲット キューに到達できなかったメッセージが収容されます。 原因としては、有効期限の経過や、ターゲット キューとの接続経路の異常などが考えられます。 + + 通常、アプリケーションは、システム全体の配信不能キューを読み取り、エラー原因を調べたうえで、エラー状態を修復して再送したり、エラーを記録したりするなどの適切な処理を行うことができます。 + +## 有害メッセージ キューのプログラミング + メッセージがターゲット キューに到達しても、サービス側で繰り返し処理に失敗する場合があります。 原因としては、アプリケーションがトランザクション内でキューからメッセージを読み込み、データベースを更新しようとしたところ、データベースの接続が一時的に切断されていた、というような状況が考えられます。 この場合は、トランザクションのロールバック、新たなトランザクションの作成、メッセージの再読み込みが行われます。 ただし、2 回目の試行で成功するかどうかはわかりません。 エラーの原因によっては、メッセージをアプリケーションに配信する処理が繰り返し失敗することがあります。 このようなメッセージは "有害" であると見なされ、有害メッセージ キューに移されます。このキューの内容は、有害メッセージを処理するアプリケーションに渡すことができます。 + +## 参照 + [WCF でのキュー](../../../../docs/framework/wcf/feature-details/queuing-in-wcf.md) + [WCF でのキュー](../../../../docs/framework/wcf/feature-details/queuing-in-wcf.md) + [セッションとキュー](../../../../docs/framework/wcf/samples/sessions-and-queues.md) + [配信不能キュー](../../../../docs/framework/wcf/samples/dead-letter-queues.md) + [揮発性キューによる通信](../../../../docs/framework/wcf/samples/volatile-queued-communication.md) + [Windows Communication Foundation でのメッセージ キュー](../../../../docs/framework/wcf/samples/wcf-to-message-queuing.md) + [メッセージ キュー \(MSMQ\) のインストール](../../../../docs/framework/wcf/samples/installing-message-queuing-msmq.md) + [Message Queuing Integration Binding Samples](http://msdn.microsoft.com/ja-jp/997d11cb-f2c5-4ba0-9209-92843d4d0e1a) + [Windows Communication Foundation へのメッセージ キュー](../../../../docs/framework/wcf/samples/message-queuing-to-wcf.md) + [メッセージ キューを介したメッセージ セキュリティ](../../../../docs/framework/wcf/samples/message-security-over-message-queuing.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/queuing-in-wcf.md b/docs/framework/wcf/feature-details/queuing-in-wcf.md new file mode 100644 index 00000000000..82508b62cbc --- /dev/null +++ b/docs/framework/wcf/feature-details/queuing-in-wcf.md @@ -0,0 +1,139 @@ +--- +title: "WCF でのキュー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e98d76ba-1acf-42cd-b137-0f8214661112 +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# WCF でのキュー +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でキュー通信を使用する方法について説明します。 + +## WCF トランスポート バインディングとしてのキュー + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、交換する内容をコントラクトによって指定します。 コントラクトは、ビジネスによって異なるまたはアプリケーション固有のメッセージ交換です。 メッセージ交換に使用する機構 \(または "方法"\) は、バインディングで指定します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のバインディングは、メッセージ交換の詳細をカプセル化します。 バインディングは、そのバインディングが表すトランスポートまたはプロトコルのさまざまな部分をユーザーが制御するための構成調整情報を公開します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のキューは、他のトランスポート バインディングと同様に扱われます。これは、多くのキュー アプリケーションにとって大きな利点となります。 現在、多くのキュー アプリケーションは、他のリモート プロシージャ コール \(RPC\) スタイルの分散アプリケーションとは異なる方法で記述されており、これが原因でフォローと管理が難しくなっています。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、分散アプリケーションを記述するスタイルはほとんど同じなので、フォローと管理が簡単です。 さらに、交換の機構をビジネス ロジックから切り離すことによって、アプリケーション固有のコードに影響を与えることなく、簡単にトランスポートを構成したり、そのトランスポートに変更を加えたりできます。 次の図は、MSMQ をトランスポートとして使用する WCF サービスとクライアントの構造を示しています。 + + ![キューに置かれたアプリケーションの図](../../../../docs/framework/wcf/feature-details/media/distributed-queue-figure.jpg "Distributed\-Queue\-Figure") + + 上の図からわかるように、クライアントとサービスは、アプリケーションのセマンティクス、つまりコントラクトと実装だけを定義する必要があります。 サービスは、優先設定を使用してキューに置かれたバインディングを構成します。 クライアントは、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用して、サービスに対する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを生成し、サービスへのメッセージ送信に使用するバインディングを記述した構成ファイルを生成します。 したがって、キューに置かれたメッセージを送信するとき、クライアントは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントをインスタンス化し、そのクライアントに対する操作を呼び出します。 これによって、メッセージは転送キューに送信され、次にターゲット キューに転送されます。 キュー通信の複雑さはすべて、メッセージを送受信するアプリケーションからは見えません。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のキューに置かれたバインディングには、次の注意事項があります。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で既定のキューに置かれたバインディングは、キューを使用した双方向通信をサポートしないので、すべてのサービス操作は一方向である必要があります。 双方向通信のサンプル \(「[双方向通信](../../../../docs/framework/wcf/samples/two-way-communication.md)」\) では、2 つの一方向コントラクトを使用して、キューを使用した双方向通信を実装する方法について説明しています。 + +- メタデータ交換を使用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを生成するには、サービスに追加の HTTP エンドポイントが必要です。これによって、エンドポイントを直接照会して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを生成したり、キュー通信を適切に構成するためにバインディング情報を取得したりできるようになります。 + +- キューに置かれたバインディングに応じて、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の外側で別の構成が必要になります。 たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に付属の クラスでは、バインディングを構成する以外に、メッセージ キュー \(MSMQ\) を最小限構成することが必要です。 + + 後のセクションでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に付属する、MSMQ に基づいた特定のキューに置かれたバインディングについて説明します。 + +### MSMQ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のキューに置かれたトランスポートでは、そのキュー通信に MSMQ を使用します。 + + MSMQ は Windows のオプション コンポーネントとして付属し、NT サービスの 1 つとして実行されます。 MSMQ サービスは、転送するメッセージを転送キューから取り込み、配信するメッセージをターゲット キューから取り込みます。 MSMQ キュー マネージャーは信頼できるメッセージ転送プロトコルを実装して、送信中にメッセージが失われないようにします。 このプロトコルは、ネイティブまたは SOAP リライアブル メッセージ プロトコル \(SRMP\) などの SOAP ベースのプロトコルです。 + + MSMQ では、キューをトランザクションまたは非トランザクションとして設定できます。 トランザクション キューの場合、トランザクションによるメッセージの取り込みと配信が可能です。メッセージは、キューに永続的に格納されます。 トランザクション キューに送信されたメッセージは、正確に 1 回だけ、順序どおりに転送されます。 非トランザクション キューを使用すると、揮発性メッセージと非揮発性メッセージの両方を送信できます。 非トランザクション キューに送信されたメッセージには、信頼できる転送保証がありません。したがって、メッセージが失われる可能性があります。 + + MSMQ キューも、Active Directory ディレクトリ サービスに登録された Windows ID を使用してセキュリティで保護できます。 MSMQ をインストールするとき、Active Directory 統合をインストールできます。Active Directory 統合では、コンピューターを Windows ドメイン ネットワークに含める必要があります。 + + MSMQ [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Message Queuing \(MSMQ\)](http://msdn.microsoft.com/ja-jp/ff917e87-05d5-478f-9430-0f560675ece1)」を参照してください。 + +### NetMsmqBinding + [\](../../../../docs/framework/configure-apps/file-schema/wcf/netmsmqbinding.md) [!INCLUDE[indigo2 は、]()] [!INCLUDE[indigo2 に用意されているキューに置かれたバインディングで、2 つの]()] エンドポイントが MSMQ を使用して通信するために使用します。 したがって、このバインディングは、MSMQ 固有のプロパティを公開します。 ただし、すべての MSMQ 機能とプロパティが `NetMsmqBinding` で公開されるわけではありません。 コンパクトな `NetMsmqBinding` は、大部分のユーザーが満足できる最適な機能セットを考慮して設計されています。 + + `NetMsmqBinding` は、これまでに説明した基本的なキューの概念をバインディングのプロパティという形で明確に示しています。 このプロパティは、メッセージの転送方法と配信方法を MSMQ に伝達します。 プロパティのカテゴリの詳細については、後のセクションを参照してください。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、特定のプロパティについて詳しく説明している概念に関するトピックを参照してください。 + +#### ExactlyOnce プロパティと Durable プロパティ + `ExactlyOnce` プロパティと `Durable` プロパティは、キュー間のメッセージの転送方法を制御します。 + +- `ExactlyOnce`: `true` \(既定\) に設定した場合、キューに置かれたチャネルによって、メッセージが重複しないようにすることができます \(メッセージが配信される場合\)。 また、メッセージが失われないようにすることもできます。 メッセージを配信できない場合、またはメッセージを配信する前にメッセージの有効期間 \(TTL: Time To Live\) が切れた場合、失敗したメッセージが配信エラー理由と共に配信不能キューに記録されます。 `false` に設定した場合、キューに置かれたチャネルにより、メッセージの転送が試行されます。 この場合、必要に応じて配信不能キューを選択できます。 + +- `Durable:` `true` \(既定\) に設定した場合、キューに置かれたチャネルによって、MSMQ がメッセージをディスクに永続的に格納することが保証されます。 したがって、MSMQ サービスを停止して再起動した場合、ディスク上のメッセージがターゲット キューに転送されるか、サービスに配信されます。 `false` に設定した場合、メッセージは揮発性ストアに格納され、MSMQ サービスを停止して再起動すると、メッセージは失われます。 + + `ExactlyOnce` の信頼できる転送を実現するために、MSMQ ではトランザクション キューを使用する必要があります。 また、MSMQ では、トランザクションがトランザクション キューから読み取られる必要があります。 このため、`NetMsmqBinding` を使用する場合、`ExactlyOnce` を `true` に設定したときは、メッセージの送受信にトランザクションが必要なことに注意してください。 同様に、ベスト エフォート保証を使用する場合 \(`ExactlyOnce` が `false` の場合など\) および揮発性メッセージングを行う場合、MSMQ で非トランザクション キューを使用する必要があります。 このため、`ExactlyOnce` を `false` に設定するか、または Durable を `false` に設定した場合、トランザクションを使用して送受信できません。 + +> [!NOTE] +> 正しいキュー \(トランザクションまたは非トランザクション\) がバインディングの設定に基づいて作成されるようにしてください。 `ExactlyOnce` が `true` の場合はトランザクション キューを使用し、false の場合は非トランザクション キューを使用します。 + +#### 配信不能キューのプロパティ + 配信不能キューは、配信に失敗したメッセージを格納するために使用されます。 ユーザーは、配信不能キューからメッセージを読み取る補正ロジックを記述できます。 + + 多くのキュー システムは、システム全体の配信不能キューを提供します。 MSMQ は、非トランザクション キューへの配信が失敗したメッセージに対してシステム全体の非トランザクション配信不能キューを提供し、トランザクション キューへの配信が失敗したメッセージに対してシステム全体のトランザクション配信不能キューを提供します。 + + 異なるターゲット キューにメッセージを送信する複数のクライアントによって MSMQ サービスが共有される場合、クライアントが送信したすべてのメッセージが同じ配信不能キューに集まります。 これが適さない状況もあります。 分離を向上するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と [!INCLUDE[wv](../../../../includes/wv-md.md)] の MSMQ には、ユーザーが配信に失敗したメッセージを格納するために指定できるカスタム配信不能キュー \(またはアプリケーション固有の配信不能キュー\) が用意されています。 したがって、異なるクライアントが同じ配信不能キューを共有することがありません。 + + バインディングには、2 つの該当するプロパティがあります。 + +- `DeadLetterQueue`: このプロパティは、配信不能キューが要求されるかどうかを示す列挙体です。 この列挙体では、配信不能キューが要求される場合、そのキューの種類も指定します。 値は、`None`、`System`、および `Custom` です。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)] これらのプロパティの解釈については、「[配信不能キューを使用したメッセージ転送エラー処理](../../../../docs/framework/wcf/feature-details/using-dead-letter-queues-to-handle-message-transfer-failures.md)」を参照してください。 + +- `CustomDeadLetterQueue`: このプロパティは、アプリケーション固有の配信不能キューの URI \(Uniform Resource Identifier\) アドレスです。 `DeadLetterQueue`.`Custom` を選択した場合、このプロパティは必須です。 + +#### 有害メッセージ処理プロパティ + サービスがトランザクションでターゲット キューからメッセージを読み取るとき、サービスはさまざまな原因でメッセージの処理に失敗する可能性があります。 失敗したメッセージは、再度読み取るためにキューに戻されます。 繰り返し失敗するメッセージを処理するために、有害メッセージ処理プロパティをバインディングで構成できます。 `ReceiveRetryCount`、`MaxRetryCycles`、`RetryCycleDelay`、および `ReceiveErrorHandling` という 4 つのプロパティがあります。 これらのプロパティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[有害メッセージ処理](../../../../docs/framework/wcf/feature-details/poison-message-handling.md)」を参照してください。 + +#### セキュリティ プロパティ + MSMQ では、キューのアクセス制御リスト \(ACL\)、認証されたメッセージの送信など、独自のセキュリティ モデルを公開します。 `NetMsmqBinding` は、このセキュリティ プロパティをそのトランスポート セキュリティ設定の一部として公開します。 トランスポート セキュリティのバインディングには、`MsmqAuthenticationMode` プロパティおよび `MsmqProtectionLevel` プロパティという 2 つのプロパティがあります。 このプロパティの設定は、MSMQ の構成方法によって異なります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [トランスポート セキュリティを使用したメッセージのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-messages-using-transport-security.md). + + トランスポート セキュリティに加えて、実際の SOAP メッセージはメッセージ セキュリティでも保護できます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [メッセージ セキュリティを使用したメッセージのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-messages-using-message-security.md). + + また、`MsmqTransportSecurity` は、2 つのプロパティ `MsmqEncryptionAlgorithm` と `MsmqHashAlgorithm` を公開します。 このプロパティは、キュー間の転送でメッセージを暗号化するために、または署名をハッシュするために選択できる異なるアルゴリズムの列挙体です。 + +#### その他のプロパティ + 上記のプロパティに加えて、次の MSMQ 固有のプロパティがバインディングで公開されます。 + +- `UseSourceJournal`: ソース ジャーナリングが有効かどうかを示すプロパティです。 ソース ジャーナリングとは、転送キューから正常に送信されたメッセージを追跡する MSMQ の機能です。 + +- `UseMsmqTracing`: MSMQ トレースが有効かどうかを示すプロパティです。 MSMQ トレースでは、MSMQ キュー マネージャーをホストしているコンピューターでメッセージが送受信されるたびに、レポート メッセージをレポート キューに送信します。 + +- `QueueTransferProtocol`: キュー間のメッセージ転送に使用するプロトコルの列挙体です。 MSMQ では、ネイティブのキュー間転送プロトコルおよび SOAP リライアブル メッセージ プロトコル \(SRMP\) と呼ばれる SOAP ベースのプロトコルを実装しています。 SRMP は、キュー間の転送に HTTP トランスポートを使用している場合に使用します。 SRMP Secure は、キュー間の転送に HTTPS を使用している場合に使用します。 + +- `UseActiveDirectory`: キューのアドレス解決に Active Directory を使用する必要があるかどうかを示すブール値です。 既定ではオフになっています。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [サービス エンドポイントとキューのアドレス指定](../../../../docs/framework/wcf/feature-details/service-endpoints-and-queue-addressing.md). + +### MsmqIntegrationBinding + `MsmqIntegrationBinding` は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントが、C、C\+\+、COM、または System.Messaging API を使用して作成された既存の MSMQ アプリケーションと通信する場合に使用されます。 + + このバインディングのプロパティは、`NetMsmqBinding` のプロパティと同じです。 ただし、次のような違いがあります。 + +- `MsmqIntegrationBinding` の操作コントラクトは、型パラメーターが本文型である型 の 1 つのパラメーターしか指定することができません。 + +- ほとんどの MSMQ ネイティブ メッセージ プロパティは、使用するために で公開されます。 + +- メッセージ本文のシリアル化と逆シリアル化のために、XML、ActiveX などのシリアライザーが用意されています。 + +### サンプル コード + MSMQ を使用する WCF サービスを書き込む方法の手順については、次のトピックを参照してください。 + +- [方法 : WCF エンドポイントとメッセージ キュー アプリケーションを使用してメッセージを交換する](../../../../docs/framework/wcf/feature-details/how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md) + +- [方法 : WCF エンドポイントを使用してキューに置かれたメッセージを交換する](../../../../docs/framework/wcf/feature-details/how-to-exchange-queued-messages-with-wcf-endpoints.md) + + WCF での MSMQ の使用を示す完全なコード サンプルについては、次のトピックを参照してください。 + +- [トランザクション MSMQ バインディング](../../../../docs/framework/wcf/samples/transacted-msmq-binding.md) + +- [揮発性キューによる通信](../../../../docs/framework/wcf/samples/volatile-queued-communication.md) + +- [配信不能キュー](../../../../docs/framework/wcf/samples/dead-letter-queues.md) + +- [セッションとキュー](../../../../docs/framework/wcf/samples/sessions-and-queues.md) + +- [双方向通信](../../../../docs/framework/wcf/samples/two-way-communication.md) + +- [トランザクション バッチ](../../../../docs/framework/wcf/samples/transacted-batching.md) + +- [SRMP](../../../../docs/framework/wcf/samples/srmp.md) + +- [メッセージ キューを介したメッセージ セキュリティ](../../../../docs/framework/wcf/samples/message-security-over-message-queuing.md) + +## 参照 + [サービス エンドポイントとキューのアドレス指定](../../../../docs/framework/wcf/feature-details/service-endpoints-and-queue-addressing.md) + [キューに置かれたアプリケーションの Web ホスト](../../../../docs/framework/wcf/feature-details/web-hosting-a-queued-application.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/readme-for-extended-protection-authentication-sample.md b/docs/framework/wcf/feature-details/readme-for-extended-protection-authentication-sample.md new file mode 100644 index 00000000000..e7dd1b868d6 --- /dev/null +++ b/docs/framework/wcf/feature-details/readme-for-extended-protection-authentication-sample.md @@ -0,0 +1,55 @@ +--- +title: "拡張保護認証のサンプルの ReadMe | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 80bf2e97-398d-4db5-9040-d96478a2ccab +caps.latest.revision: 3 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 3 +--- +# 拡張保護認証のサンプルの ReadMe +拡張保護は、攻撃者 \(man\-in\-the\-middle\) がクライアントの資格情報をインターセプトしてクライアントの目的のサーバー上のセキュリティ保護されたリソースにアクセスする MITM \(man\-in\-the\-middle\) 攻撃に対するセキュリティ イニシアチブです。 + + 詳細については、「[認証の拡張保護の概要](../../../../docs/framework/wcf/feature-details/extended-protection-for-authentication-overview.md)」を参照してください。 + +> [!NOTE] +> このサンプルは、IIS でホストされた場合にのみ機能します。このサンプルは HTTPS をサポートしないので、Visual Studio Development Server 上では機能しません。 + +## サンプルをセットアップしてビルドし、実行するには + +1. \[プログラムの追加と削除\] の \[Windows の機能\] から IIS をインストールします。 + +2. Windows 機能の Windows 認証を有効にします \(\[インターネット インフォメーション サービス\] \-\> \[World Wide Web サービス\] \-\> \[セキュリティ\] \-\> \[Windows 認証\]\)。 + +3. Windows 機能の HTTP アクティブ化を有効にします \(\[Microsoft .NET Framework 3.5.1\] \-\> \[Windows Communication Foundation HTTP Activation\]\)。 + +4. このサンプルを実行するには、サーバーとの安全なチャネルを確立する必要のあるクライアントが必要なので、インターネット インフォメーション サービス \(IIS\) マネージャーからインストールすることのできるサーバー証明書が存在する必要があります。 + + 1. IIS マネージャーを開いて、\[機能表示\] タブから \[サーバー証明書\] を選択します。 + + 2. このサンプルをテストする目的で、自己署名証明書を作成できます \(インターネット エクスプローラーで証明書の安全性に関するプロンプトが表示されないようにする場合は、信頼されたルート証明機関ストアに証明書をインストールできます\)。 + +5. 既定の Web サイトの操作ウィンドウに移動します。\[サイトの編集\] の \[バインド\] をクリックします。存在しない場合は、種類として HTTPS を追加します。ポート番号に 443 を指定し、前の手順で作成した SSL 証明書を割り当てます。 + +6. サービスをビルドします。\(プロジェクト プロパティで指定されたビルド後のアクションから\) IIS に仮想ディレクトリが作成され、サービスを Web ホスト サービスにするために必要な dll、.svc、および構成ファイルがコピーされます。 + +7. IIS マネージャーを開きます。前の手順で作成した仮想ディレクトリ \(ExtendedProtection\) を右クリックして、\[アプリケーションへの変換\] を選択します。 + +8. この仮想ディレクトリの認証モジュールを IIS マネージャーで開き、Windows 認証を有効にします。 + +9. このサンプルでは対応する ExtendedProtection 設定が \[常に\] に設定されているので、この仮想ディレクトリの Windows 認証の \[詳細設定\] を開き、\[必須\] に設定します。 + +10. ブラウザー ウィンドウから URL にアクセスして、サービスをテストできます。コンピューター間でこの URL にアクセスする場合は、すべての受信 HTTP および HTTPS 通信に対してファイアウォールが開かれていることを確認してください。 + +11. クライアント構成ファイルを開いて、\<\\> を置き換えて \<\\>endpoint \- address attribute の完全なマシン名を指定します。 + +12. クライアントを実行します。クライアントがセキュリティで保護されたチャネルを確立し、エンドポイント保護を使用してサービスと通信します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/reliable-messaging-protocol-version-1-0.md b/docs/framework/wcf/feature-details/reliable-messaging-protocol-version-1-0.md new file mode 100644 index 00000000000..c2e75ac9d46 --- /dev/null +++ b/docs/framework/wcf/feature-details/reliable-messaging-protocol-version-1-0.md @@ -0,0 +1,415 @@ +--- +title: "信頼できるメッセージング プロトコル バージョン 1.0 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a5509a5c-de24-4bc2-9a48-19138055dcce +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 信頼できるメッセージング プロトコル バージョン 1.0 +ここでは、HTTP トランスポートを使用した相互運用に必要な WS\-ReliableMessaging 2005\/02 \(バージョン 1.0\) プロトコルに関する [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 実装の詳細について説明します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、ここに記載した制約と説明に基づく WS\-ReliableMessaging 仕様に従っています。WS\-ReliableMessaging バージョン 1.0 プロトコルは、[!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] 以降に実装されています。 + + WS\-ReliableMessaging 2005\/02 プロトコルは、 によって [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に実装されます。 + + 便宜上、ここでは次のロールを使用します。 + +- イニシエーター : WS\-Reliable メッセージ シーケンスの作成を開始するクライアント + +- レスポンダー : イニシエーターの要求を受け取るサービス + + このドキュメントでは、次の表に示すプレフィックスと名前空間を使用します。 + +|プレフィックス|名前空間| +|-------------|----------| +|wsrm|http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/rm| +|netrm|http:\/\/schemas.microsoft.com\/ws\/2006\/05\/rm| +|s|http:\/\/www.w3.org\/2003\/05\/soap\-envelope| +|wsa|http:\/\/schemas.xmlsoap.org\/ws\/2005\/08\/addressing| +|wsse|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wssecurity\-secext\-1.0.xsd| + +## メッセージング + +### シーケンス確立メッセージ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、信頼性の高いメッセージ シーケンスを確立するために、`CreateSequence` メッセージと `CreateSequenceResponse` メッセージを実装しています。以下の制約が適用されます。 + +- B1101 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、`CreateSequence` メッセージのオプションの Expires 要素を生成しません。また、`CreateSequence` メッセージに `Offer` 要素が含まれているときに、この `Offer` 要素内のオプションの `Expires` 要素も生成しません。 + +- B1102 : `CreateSequence` メッセージのアクセス時に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]`Responder` は、両方の `Expires` 要素を送受信しますが \(存在する場合\)、値は使用しません。 + + WS\-ReliableMessaging では、セッションを形成する、相関する 2 つの逆方向シーケンスを確立するために、`Offer` 機構が導入されています。 + +- R1103 : `CreateSequence` に `Offer` 要素が含まれている場合、Reliable メッセージング レスポンダーは、シーケンスを受け入れ、`wsrm:Accept` 要素を含む `CreateSequenceResponse` で応答して、相関する 2 つの逆方向シーケンスを形成するか、`CreateSequence` 要求を拒否する必要があります。 + +- R1104 : 逆方向シーケンスでフローする `SequenceAcknowledgement` およびアプリケーション メッセージは、`CreateSequence` の `ReplyTo` エンドポイント参照に送信される必要があります。 + +- R1105 : `CreateSequence` の `AcksTo` エンドポイント参照と `ReplyTo` エンドポイント参照には、オクテット単位で一致するアドレス値が必要です。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンスを作成する前に、`AcksTo` EPR と `ReplyTo` EPR の URI 部分が同一であるかどうかを検証します。 + +- R1106 : `CreateSequence` の `AcksTo` および `ReplyTo` の各エンドポイント参照は、参照パラメーターの同じセットを持つ必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`CreateSequence` の `AcksTo` と `ReplyTo` の \[参照パラメーター\] が同一であることを強制するわけではありません。ただし、これらが同一であると想定した上で、受信確認と逆方向シーケンス メッセージに `ReplyTo` エンドポイント参照の \[参照パラメーター\] を使用します。 + +- R1107 : `Offer` 機構を使用して 2 つの逆方向シーケンスを確立した場合、逆方向シーケンスでフローする `SequenceAcknowledgement` およびアプリケーション メッセージは、`CreateSequence` の `ReplyTo` エンドポイント参照に送信される必要があります。 + +- R1108 : Offer 機構を使用して 2 つの逆方向シーケンスを確立した場合、`CreateSequenceResponse` の `wsrm:Accept` 要素の `wsrm:AcksTo` エンドポイント参照子要素の `[address]` プロパティは、`CreateSequence` の送信先 URI とバイト単位で一致する必要があります。 + +- R1109 : `Offer` 機構を使用して 2 つの逆方向シーケンスを確立した場合、イニシエーターによって送信されたメッセージとレスポンダーによるメッセージの受信確認は、同じエンドポイント参照に送信される必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-ReliableMessaging を使用して、イニシエーターとレスポンダー間で信頼性できるセッションを確立します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の WS\-ReliableMessaging 実装により、一方向、要求\/応答、双方向の各メッセージ パターンの信頼できるセッションが実現します。`CreateSequence`\/`CreateSequenceResponse` で WS\-ReliableMessaging の `Offer` 機構を使用すると、相関する 2 つの逆方向シーケンスを確立でき、すべてのメッセージ エンドポイントに適したセッション プロトコルが提供されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、セッション整合性を保つためのエンドツーエンドの保護を含むこのようなセッションに対してセキュリティが保証されているため、同じパーティを対象とするメッセージが同じ送信先に到着することが事実上保証されます。また、これにより、アプリケーション メッセージにシーケンス受信確認を抱き合わせることができます。したがって、制約 R1104、R1105、および R1108 が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に適用されています。 + + `CreateSequence` メッセージの例を次に示します。 + +``` + + + + http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence + + + + http://Business456.com/clientA + + + + urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36 + + + http://Business456.com/clientA + + + + + + + http://Business456.com/clientA + + + + + urn:uuid:0afb8d36-bf26-4776-b8cf-8c91fddb5496 + + + + + +``` + + `CreateSequenceResponse` メッセージの例を次に示します。 + +``` + + + + http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse + + + urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36 + + + http://Business456.com/clientA + + + + + + urn:uuid:eea0a36c-b38a-43e8-8c76-2fabe2d76386 + + + + + http://BusinessABC.com/serviceA + + + + + + +``` + +### シーケンス + シーケンスに適用される制約を以下に示します。 + +- B1201 :[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`xs:long` の最大値 \(9223372036854775807\) 以下のシーケンス番号を生成し、これらの番号にアクセスします。 + +- B1202 :[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、アクション URI が http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/rm\/LastMessage である、空の本文を持つ最後のメッセージを必ず生成します。 + +- B1203 : アクション URI が http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/rm\/LastMessage でない場合には、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は `LastMessage` 要素を含むシーケンス ヘッダーを持つメッセージを受信および配信します。 + + シーケンス ヘッダーのサンプル + +``` + + + urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36 + + + 10 + + + +``` + +### AckRequested ヘッダー + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Keep\-alive 機構として `AckRequested` ヘッダーを使用します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、オプションの `MessageNumber` 要素を生成しません。`MessageNumber` 要素を含む `AckRequested` ヘッダーを持つメッセージを受信すると、次の例に示すように、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は `MessageNumber` 要素の値を無視します。 + +``` + + + urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36 + + +``` + +### SequenceAcknowledgement ヘッダー + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-ReliableMessaging で用意されているシーケンス受信確認の抱き合わせ機構を使用します。 + +- R1401 : `Offer` 機構を使用して 2 つの逆方向シーケンスを確立した場合、目的の受信者に送信されるアプリケーション メッセージに、`SequenceAcknowledgement` ヘッダーを含めることができます。 + +- B1402 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がシーケンス メッセージを受信する前に受信確認を生成する必要がある場合 \(`AckRequested` メッセージに応える場合など\)、次の例に示すように、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は範囲 0 ~ 0 を含む `SequenceAcknowledgement` ヘッダーを生成します。 + + ``` + + + urn:uuid:addabbbf-60cb-44d3-8c5b-9e0841629a36 + + + + ``` + +- B1403 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`Nack` 要素をサポートしていますが、`Nack` 要素を含む `SequenceAcknowledgement` ヘッダーは生成しません。 + +### WS\-ReliableMessaging エラー + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の WS\-ReliableMessaging エラー実装に適用される制約を以下に示します。 + +- B1501 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`MessageNumberRollover` エラーを生成しません。 + +- B1502 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]エンドポイントは、仕様に記載されているように `CreateSequenceRefused` エラーを生成する場合があります。 + +- B1503 :サービス エンドポイントが接続制限に達したため、新しい接続を処理できない場合、次の例に示すように、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は `CreateSequenceRefused` エラー サブコード `netrm:ConnectionLimitReached` を追加生成します。 + + ``` + + + + http://schemas.xmlsoap.org/ws/2005/08/addressing/fault + + + + + + + s:Receiver + + + + wsrm:CreateSequenceRefused + + + + netrm:ConnectionLimitReached + + + + + + + [Reason] + + + + + + ``` + +### WS\-Addressing エラー + WS\-ReliableMessaging は WS\-Addressing を使用するため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の WS\-ReliableMessaging 実装は、WS\-Addressing エラーを生成する場合があります。ここでは、WS\-ReliableMessaging レイヤーで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が明示的に生成する WS\-Addressing エラーについて説明します。 + +- B1601 :次のいずれかに該当する場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は Message Addressing Header Required エラーを生成します。 + + - メッセージに `Sequence` ヘッダーと `Action` ヘッダーがない。 + + - `CreateSequence` メッセージに `MessageId` ヘッダーがない。 + + - `CreateSequence` メッセージに `ReplyTo` ヘッダーがない。 + +- B1602 :[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`Sequence` ヘッダーがなく、WS\-Reliable Messaging 仕様では認識されない `Action` ヘッダーを持つメッセージへの応答として Action Not Supported エラーを生成します。 + +- B1603 :[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`CreateSequence` メッセージのアドレス指定ヘッダーの検査に基づいて、エンドポイントがそのシーケンスを処理しないことを示す Endpoint Unavailable エラーを生成します。 + +## プロトコル コンポジション + +### WS\-Addressing によるコンポジション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-Addressing の 2 つのバージョンをサポートしています。WS\-Addressing 2004\/08 \[WS\-ADDR\] と、W3C WS\-Addressing 1.0 Recommendation \(\[WS\-ADDR\-CORE\] および \[WS\-ADDR\-SOAP\]\) です。 + + WS\-ReliableMessaging 仕様に記載されているのは、WS\-Addressing 2004\/08 だけですが、使用する WS\-Addressing のバージョンが制限されているわけではありません。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に適用される制約を以下に示します。 + +- R2101 :WS\-Addressing 2004\/08 と WS\-Addressing 1.0 の両方を WS\-ReliableMessaging で使用できます。 + +- R2102 :特定の WS\-ReliableMessaging シーケンス、または `wsrm:Offer` 機構を使用して関連付けられた逆方向シーケンスのペアでは、同じバージョンの WS\-Addressing を使用する必要があります。 + +### SOAP によるコンポジション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、WS\-ReliableMessaging で SOAP 1.1 と SOAP 1.2 の両方を使用できます。 + +### WS\-Security と WS\-SecureConversation によるコンポジション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、セキュリティで保護されたトランスポート \(HTTPS\)、WS\-Security によるコンポジション、および WS\-SecureConversation によるコンポジションを使用して、WS\-ReliableMessaging シーケンスを保護します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に適用される制約を以下に示します。 + +- R2301 :個々のメッセージの整合性と機密性だけでなく、WS\-ReliableMessaging シーケンスの整合性を保護するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では WS\-SecureConversation を使用する必要があります。 + +- R2302 :WS\-ReliableMessaging シーケンスを確立する前に、WS\-SecureConversation セッションを確立する必要があります。 + +- R2303 : WS\-ReliableMessaging シーケンスの有効期間が WS\-SecureConversation セッションの有効期間よりも長い場合は、対応する WS\-SecureConversation Renewal バインディングを使用して、WS\-SecureConversation によって確立された `SecurityContextToken` を更新する必要があります。 + +- B2304 :WS\-ReliableMessaging シーケンスまたは相関する逆方向シーケンスのペアは、必ず同じ WS\-SecureConversation セッションにバインドされます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ソースは、`CreateSequence` メッセージの要素拡張セクションに、`wsse:SecurityTokenReference` 要素を生成します。 + +- R2305 :WS\-SecureConversation を使用して構成した場合、`CreateSequence` メッセージに `wsse:SecurityTokenReference` 要素が含まれている必要があります。 + +## WS\-ReliableMessaging の WS\-Policy アサーション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-ReliableMessaging の `wsrm:RMAssertion` WS\-Policy アサーションを使用して、エンドポイントの機能を記述します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に適用される制約を以下に示します。 + +- B3001: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`wsrm:RMAssertion` WS\-Policy アサーションを `wsdl:binding` 要素に添付します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`wsdl:binding` 要素および `wsdl:port` 要素への添付をサポートしています。 + +- B3002 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-ReliableMessaging アサーションの以下のオプション プロパティをサポートしており、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の `ReliableMessagingBindingElement` でこれらのプロパティを制御できます。 + + - `wsrm:InactivityTimeout` + + - `wsrm:AcknowledgementInterval` + + 例を次に示します。 + + ``` + + + + + ``` + +## WS\-ReliableMessaging のフロー制御拡張 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-Reliable Messaging の機能拡張を使用して、シーケンス メッセージ フローのさらに厳密な制御を実現します。 + + フロー制御を有効にするには、`ReliableSessionBindingElement` の `FlowControlEnabled``bool` プロパティを `true` に設定します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に適用される制約を以下に示します。 + +- B4001 : 信頼できるメッセージング フロー制御を有効にした場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は `SequenceAcknowledgement` ヘッダーの要素拡張に `netrm:BufferRemaining` 要素を生成します。 + +- B4002 : 信頼できるメッセージング フロー制御を有効にした場合、次の例に示すように、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では `netrm:BufferRemaining` 要素が `SequenceAcknowledgement` ヘッダーに存在する必要はありません。 + + ``` + + + http://fabrikam123.com/abc + + + + 8 + + + + ``` + +- B4003 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`netrm:BufferRemaining` を使用して、信頼できるメッセージングの送信先がバッファーに保持できる新しいメッセージの数を示します。 + +- B4004 :信頼できるメッセージングの送信先アプリケーションがメッセージを迅速に受信できない場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるメッセージング サービスは、送信するメッセージの数を抑制します。信頼できるメッセージングの送信先がメッセージをバッファーに保持する場合、要素の値が 0 になります。 + +- B4005 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、0 ~ 4096 の整数値の `netrm:BufferRemaining` を生成し、0 ~ 214748364 \(`xs:int` の `maxInclusive` 値\) の整数値を読み取ります。 + +## メッセージ交換パターン + ここでは、WS\-ReliableMessaging をさまざまなメッセージ交換パターンに使用する際の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の動作について説明します。各メッセージ交換パターンについて、次の 2 つの展開シナリオを考えます。 + +- アドレス不可能なイニシエーター : イニシエーターはファイアウォールの内側にあります。レスポンダーは HTTP 応答でのみイニシエーターにメッセージを配信できます。 + +- アドレス可能なイニシエーター : イニシエーターとレスポンダーの両方に HTTP 要求を送信できます。つまり、逆方向の 2 つの HTTP 接続を確立できます。 + +### 一方向 : アドレス不可能なイニシエーター + +#### バインディング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、1 つの HTTP チャネルで 1 つのシーケンスを使用して、一方向メッセージ交換パターンを提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTP 要求を使用して RMS から RMD にすべてのメッセージを送信し、HTTP 応答を使用して RMD から RMS にすべてのメッセージを送信します。 + +#### CreateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、オファーを含まない `CreateSequence` メッセージを生成します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンスを作成する前に、`CreateSequence` にオファーが含まれていないことを確認します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、`CreateSequenceResponse` メッセージで `CreateSequence` 要求に応答します。 + +#### SequenceAcknowledgement + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、`CreateSequence` メッセージとエラー メッセージを除くすべてのメッセージの応答で受信確認を処理します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンス メッセージと `AckRequested` メッセージの両方への応答として、常にスタンドアロンの受信確認を生成します。 + +#### TerminateSequence メッセージ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`TerminateSequence` を一方向操作として処理します。つまり、HTTP 応答には、空の本文と HTTP 202 ステータス コードが含まれます。 + +### 一方向 : アドレス可能なイニシエーター + +#### バインディング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、受信用 HTTP チャネルと送信用 HTTP チャネルで 1 つのシーケンスを使用して、一方向メッセージ交換パターンを提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTP 要求を使用してすべてのメッセージを送信します。すべての HTTP 応答に、空の本文と HTTP 202 ステータス コードが含まれます。 + +#### CreateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、オファーを含まない `CreateSequence` メッセージを生成します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンスを作成する前に、`CreateSequence` にオファーが含まれていないことを確認します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、`ReplyTo` エンドポイント参照によってアドレス指定された HTTP 要求で `CreateSequenceResponse` メッセージを送信します。 + +### 双方向 : アドレス可能なイニシエーター + +#### バインディング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、受信用 HTTP チャネルと送信用 HTTP チャネルで 2 つのシーケンスを使用して、完全に非同期の双方向メッセージ交換パターンを提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTP 要求を使用してすべてのメッセージを送信します。すべての HTTP 応答に、空の本文と HTTP 202 ステータス コードが含まれます。 + +#### CreateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、オファーを含む `CreateSequence` メッセージを生成します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンスを作成する前に、`CreateSequence` にオファーが含まれていることを確認します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`CreateSequence` の `ReplyTo` エンドポイント参照にアドレス指定された HTTP 要求で `CreateSequenceResponse` を送信します。 + +#### シーケンスの有効期間 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、2 つのシーケンスを 1 つの完全な双方向セッションとして処理します。 + + 一方のシーケンスをフォールトするエラーが生成されると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、リモート エンドポイントに両方のシーケンスをフォールトするよう要求します。一方のシーケンスをフォールトするエラーを読み取ると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は両方のシーケンスをフォールトします。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、送信シーケンスを終了し、受信シーケンスで引き続きメッセージを処理できます。逆に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、受信シーケンスの終了を処理し、送信シーケンスで引き続きメッセージを送信することもできます。 + +### 要求\/応答 : アドレス不可能なイニシエーター + +#### バインディング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、1 つの HTTP チャネルで 2 つのシーケンスを使用して、一方向の要求\/応答メッセージ交換パターンを提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTP 要求を使用して要求シーケンスのメッセージを送信し、HTTP 応答を使用して応答シーケンスのメッセージを送信します。 + +#### CreateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、オファーを含む `CreateSequence` メッセージを生成します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンスを作成する前に、`CreateSequence` にオファーが含まれていることを確認します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、`CreateSequenceResponse` メッセージで `CreateSequence` 要求に応答します。 + +#### 一方向のメッセージ + 一方向メッセージ交換プロトコルを正常に完了するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で要求シーケンス メッセージを送信し、HTTP 応答でスタンドアロンの `SequenceAcknowledgement` メッセージを受信します。`SequenceAcknowledgement` は、送信されたメッセージの受信確認を行う必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、受信確認、エラー、または空の本文と HTTP 202 ステータス コードで要求に応答できます。 + +#### 双方向のメッセージ + 双方向メッセージ交換プロトコルを正常に完了するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で要求シーケンス メッセージを送信し、HTTP 応答で応答シーケンス メッセージを受信します。応答では、送信された要求シーケンス メッセージの受信確認を行う `SequenceAcknowledgement` を送信する必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、アプリケーション応答、エラー、または空の本文と HTTP 202 ステータス コードで要求に応答できます。 + + 一方向のメッセージが存在することと、アプリケーション応答のタイミングもあるため、要求シーケンス メッセージのシーケンス番号と応答メッセージのシーケンス番号には相関関係はありません。 + +#### 応答の再試行 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、双方向メッセージ交換プロトコルの相関関係について、HTTP 要求\/応答の相関関係に依存しています。このため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、要求シーケンス メッセージが受信確認されたときではなく、HTTP 応答によって受信確認、ユーザー メッセージ、またはエラーが送信されたときに、要求シーケンス メッセージの再試行を停止します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、応答が関連付けられている要求の HTTP 要求レッグで応答を再試行します。 + +#### LastMessage の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求レッグで空の本文の最後のメッセージを生成し、送信します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は応答を要求しますが、実際の応答メッセージは無視します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、応答シーケンスの空の本文の最後のメッセージで、要求シーケンスの空の本文の最後のメッセージに応答します。 + + アクション URI が http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/rm\/LastMessage ではない最後のメッセージを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーが受信した場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は最後のメッセージで応答します。双方向メッセージ交換プロトコルの場合、最後のメッセージでアプリケーション メッセージが送信されます。一方向メッセージ交換プロトコルの場合、最後のメッセージは空です。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、応答シーケンスの空の本文の最後のメッセージに対する受信確認を要求しません。 + +#### TerminateSequence の交換 + すべての要求が有効な応答を受信すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求レッグで要求シーケンスの `TerminateSequence` メッセージを生成し、送信します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は応答を要求しますが、実際の応答メッセージは無視します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、応答シーケンスの `TerminateSequence` メッセージで、要求シーケンスの `TerminateSequence` メッセージに応答します。 + + 通常のシャットダウン シーケンスでは、両方の `TerminateSequence` メッセージで完全な `SequenceAcknowledgement` を送信します。 + +### 要求\/応答 : アドレス可能なイニシエーター + +#### バインディング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、受信用 HTTP チャネルと送信用 HTTP チャネルで 2 つのシーケンスを使用して、要求\/応答メッセージ交換パターンを提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTP 要求を使用してすべてのメッセージを送信します。すべての HTTP 応答に、空の本文と HTTP 202 ステータス コードが含まれます。 + +#### CreateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、オファーを含む `CreateSequence` メッセージを生成します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンスを作成する前に、`CreateSequence` にオファーが含まれていることを確認します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`CreateSequence` の `ReplyTo` エンドポイント参照にアドレス指定された HTTP 要求で `CreateSequenceResponse` を送信します。 + +#### 要求\/応答の相関関係 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、すべてのアプリケーション要求メッセージに `MessageId` と `ReplyTo` エンドポイント参照が保持されていることを確認します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、各アプリケーション要求メッセージで、`CreateSequence` メッセージの `ReplyTo` エンドポイント参照を適用します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、受信要求メッセージに `MessageId` と `ReplyTo` が保持されていることを要求します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、`CreateSequence` とすべてのアプリケーション要求メッセージのエンドポイント参照の URI が同一であることを確認します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/reliable-messaging-protocol-version-1-1.md b/docs/framework/wcf/feature-details/reliable-messaging-protocol-version-1-1.md new file mode 100644 index 00000000000..8aabb244294 --- /dev/null +++ b/docs/framework/wcf/feature-details/reliable-messaging-protocol-version-1-1.md @@ -0,0 +1,532 @@ +--- +title: "リライアブル メッセージング プロトコル バージョン 1.1 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0da47b82-f8eb-42da-8bfe-e56ce7ba6f59 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# リライアブル メッセージング プロトコル バージョン 1.1 +ここでは、HTTP トランスポートを使用した相互運用に必要な WS\-ReliableMessaging 2007\/02 \(バージョン 1.1\) プロトコルに関する [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 実装の詳細について説明します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、ここに記載した制約と説明に基づく WS\-ReliableMessaging 仕様に従っています。WS\-ReliableMessaging バージョン 1.1 プロトコルは、[!INCLUDE[netfx35_long](../../../../includes/netfx35-long-md.md)] 以降に実装されます。 + + WS\-ReliableMessaging 2007\/02 プロトコルは、 により [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に実装されます。 + + 便宜上、ここでは次のロールを使用します。 + +- イニシエーター : WS\-Reliable メッセージ シーケンスの作成を開始するクライアント。 + +- レスポンダー : イニシエーターの要求を受け取るサービス。 + + このドキュメントでは、次の表に示すプレフィックスと名前空間を使用します。 + +||| +|-|-| +|プレフィックス|名前空間| +|wsrm|http:\/\/docs.oasis\-open.org\/ws\-rx\/wsrm\/200702| +|netrm|http:\/\/schemas.microsoft.com\/ws\/2006\/05\/rm| +|s|http:\/\/www.w3.org\/2003\/05\/soap\-envelope| +|wsa|http:\/\/schemas.xmlsoap.org\/ws\/2005\/08\/addressing| +|wsse|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wssecurity\-secext\-1.0.xsd| +|wsrmp|http:\/\/docs.oasis\-open.org\/ws\-rx\/wsrmp\/200702| +|netrmp|http:\/\/schemas.microsoft.com\/ws\-rx\/wsrmp\/200702| +|wsp|\(WS\-Policy 1.2 または WS\-Policy 1.5 のいずれか\)| + +## メッセージング + +### シーケンスの作成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、信頼できるメッセージ シーケンスを確立するために、`CreateSequence` メッセージと `CreateSequenceResponse` メッセージを実装します。以下の制約が適用されます。 + +- B1101: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、`CreateSequence` メッセージの `ReplyTo`、`AcksTo`、および `Offer/Endpoint` と同じエンドポイント参照を使用します。 + +- R1102: `CreateSequence` メッセージの `AcksTo`、`ReplyTo`、および `Offer/Endpoint` の各エンドポイント参照には、オクテット単位で一致する同じ文字列表現のアドレス値が必要です。 + + - [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンスを作成する前に、`AcksTo`、`ReplyTo`、および `Endpoint` の各エンドポイント参照の URI 部分が同一であるかどうかを検証します。 + +- R1103: `CreateSequence` メッセージの `AcksTo`、`ReplyTo`、および `Offer/Endpoint` の各エンドポイント参照には、同一の参照パラメーターのセットが必要です。 + + - [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`CreateSequence` の `AcksTo`、`ReplyTo`、および `Offer/Endpoint` エンドポイント参照の参照パラメーターが同一であることを強制しません。ただし、これらが同一であることを前提とした上で、`ReplyTo` エンドポイント参照からの参照パラメーターを受信確認と逆方向シーケンス メッセージに使用します。 + +- B1104: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、`CreateSequence` メッセージでオプションの `Expires` 要素または `Offer/Expires` 要素を生成しません。 + +- B1105: `CreateSequence` メッセージにアクセスする場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、`CreateSequence` 要素の `Expires` 値を `CreateSequenceResponse` 要素の `Expires` 値として使用します。それ以外の場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは `Expires` 値および `Offer/Expires` 値を読み込んで無視します。 + +- B1106: `CreateSequenceResponse` メッセージにアクセスする場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、オプションの `Expires` 値を読み込みますが、使用しません。 + +- B1107: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターおよびレスポンダーは、`CreateSequence/Offer` 要素および `CreateSequenceResponse` 要素にオプションの `IncompleteSequenceBehavior` 要素を必ず生成します。 + +- B1108: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`IncompleteSequenceBehavior` 要素にある `DiscardFollowingFirstGap` 値および `NoDiscard` 値のみ使用します。 + + - WS\-ReliableMessaging では、セッションを形成する、相関する 2 つの逆方向シーケンスを確立するために、`Offer` 機構を利用しています。 + +- B1109: `CreateSequence` に `Offer` 要素が格納されている場合、一方向 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、`Accept` 要素なしに `CreateSequenceResponse` で応答することにより、用意されたシーケンスを拒否します。 + +- B1110: 信頼できるメッセージング レスポンダーが用意されたシーケンスを拒否する場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは新しく確立されたシーケンスをエラーとします。 + +- B1111: `CreateSequence` に `Offer` 要素が格納されていない場合、双方向 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、`CreateSequenceRefused` フォールトで応答することにより用意されたシーケンスを拒否します。 + +- R1112: 2 つの逆方向シーケンスが `Offer` 機構を使用して確立された場合、`CreateSequenceResponse/Accept/AcksTo` エンドポイント参照の `[address]` プロパティは、バイト単位で `CreateSequence` メッセージの送信先 URI と一致する必要があります。 + +- R1113: 2 つの逆方向シーケンスが `Offer` 機構を使用して確立された場合、イニシエーターからレスポンダーに流れる両方のシーケンスにあるすべてのメッセージは、同じエンドポイント参照に送信される必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-ReliableMessaging を使用して、イニシエーターとレスポンダー間で信頼できるセッションを確立します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WS\-ReliableMessaging 実装により、一方向、要求\/応答、双方向の各メッセージ パターンの信頼できるセッションが実現します。`CreateSequence` および `CreateSequenceResponse` で WS\-ReliableMessaging の `Offer` 機構を使用すると、相関する 2 つの逆方向シーケンスを確立できます。また、Offer 機構は、すべてのメッセージ エンドポイントに適したセッション プロトコルを提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、セッション整合性を保つためのエンドツーエンドの保護を含むこのようなセッションに対してセキュリティが保証されているため、同じパーティを対象とするメッセージが同じ送信先に到着することが事実上保証されます。また、これにより、アプリケーション メッセージにシーケンス受信確認を抱き合わせることができます。したがって、制約 R1102、R1112、および R1113 が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に適用されています。 + + `CreateSequence` メッセージの例を次に示します。 + +``` + + + http://docs.oasis-open.org/ws-rx/wsrm/200702/CreateSequence + urn:uuid:949cca61-8813-42ff-ab33-18d9e3fa82fa + + http://Business456.com/clientA + + http://BusinessABC.com/serviceA + + + + + http://Business456.com/clientA + + + urn:uuid:066b4730-fc82-458a-a5c1-210be4fb4e4e + + http://Business456.com/clientA + + DiscardFollowingFirstGap + + + + +``` + + `CreateSequenceResponse` メッセージの例を次に示します。 + +``` + + + http://docs.oasis-open.org/ws-rx/wsrm/200702/CreateSequenceResponse + urn:uuid:949cca61-8813-42ff-ab33-18d9e3fa82fa + http://Business456.com/clientA + + + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + DiscardFollowingFirstGap + + + http://BusinessABC.com/serviceA + + + + + +``` + +### シーケンスを閉じる + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、信頼できるメッセージの送信元が開始するシャットダウンに `CloseSequence` メッセージおよび `CloseSequenceResponse` メッセージを使用します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるメッセージの送信先はシャットダウンを開始せず、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるメッセージング送信元は、信頼できるメッセージの送信先が開始するシャットダウンをサポートしません。以下の制約が適用されます。 + +- B1201: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるメッセージの送信元は、シーケンスをシャットダウンする場合に、常に `CloseSequence` メッセージを送信します。 + +- B1202: 信頼できるメッセージの送信元は、`CloseSequence` メッセージを送信する前に、すべてのシーケンス メッセージの受信確認を待機します。 + +- B1203: 信頼できるメッセージの送信元は、シーケンスにメッセージが含まれない場合を除き、常にオプションの `LastMsgNumber` 要素を含めます。 + +- R1204: 信頼できるメッセージの送信先は、`CloseSequence` メッセージを送信してシャットダウンを開始することはできません。 + +- B1205: `CloseSequence` メッセージを受け取ると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるメッセージの送信元はシーケンスが不完全と見なし、エラーを送信します。 + + `CloseSequence` メッセージの例を次に示します。 + +``` + + + http://docs.oasis-open.org/ws-rx/wsrm/200702/CloseSequence + urn:uuid:6ce1d4c3-e1c1-474f-a8c9-4210e37f7877 + + http://Business456.com/clientA + + http://BusinessABC.com/serviceA + + + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + 30 + + + +Example CloseSequenceResponse message: + + + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + + + 8 + + http://docs.oasis-open.org/ws-rx/wsrm/200702/CloseSequenceResponse + urn:uuid:6ce1d4c3-e1c1-474f-a8c9-4210e37f7877 + http://Business456.com/clientA + + + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + + + +``` + +### シーケンスの終了 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`CloseSequence/CloseSequenceResponse` ハンドシェイクを完了した後、`TerminateSequence/TerminateSequenceResponse` ハンドシェイクを主に使用します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるメッセージの送信先は終了を開始せず、信頼できるメッセージの送信元は、信頼できるメッセージの送信先が開始する終了をサポートしません。以下の制約が適用されます。 + +- B1301: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、`CloseSequence/CloseSequenceResponse` ハンドシェイクが正常に完了した後にのみ、`TerminateSequence` メッセージを送信します。 + +- R1302: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`LastMsgNumber` 要素が、各シーケンスのすべての `CloseSequence` メッセージおよび `TerminateSequence` メッセージに対し一貫性があることを検証します。つまり、`LastMsgNumber` は、すべての `CloseSequence` メッセージおよび `TerminateSequence` メッセージに存在しないか、すべての `CloseSequence` メッセージおよび `TerminateSequence` メッセージに存在し、同一であるかのいずれかです。 + +- B1303: `CloseSequence/CloseSequenceResponse` ハンドシェイクの後、`TerminateSequence` メッセージを受け取ると、信頼できるメッセージの送信先が `TerminateSequenceResponse` メッセージで応答します。信頼できるメッセージの配信元は、`TerminateSequence` メッセージを送信する前に最終受信確認を受けるため、信頼できるメッセージの送信先ではシーケンスが終了したことが確実にわかり、すぐにリソースを再要求します。 + +- B1304: `CloseSequence/CloseSequenceResponse` ハンドシェイクの前に、`TerminateSequence` メッセージを受け取ると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるメッセージの送信先が `TerminateSequenceResponse` メッセージで応答します。信頼できるメッセージの送信先でシーケンスが一貫していると判断した場合、信頼できるメッセージの送信先は、リソースを再要求する前にアプリケーションの送信先で指定された時間待機し、クライアントが最終受信確認を受け取ることができるようにします。それ以外の場合は、信頼できるメッセージの送信先はすぐにリソースを再要求し、`Faulted` イベントを発生させて、不明なシーケンスの終了をアプリケーションの送信先に示します。 + + `TerminateSequence` メッセージの例を次に示します。 + +``` + + + http://docs.oasis-open.org/ws-rx/wsrm/200702/TerminateSequence + urn:uuid:3597a398-4f3c-40f4-9335-8f1515572fdf + + http://Business456.com/clientA + + http://BusinessABC.com/serviceA + + + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + 30 + + + +Example TerminateSequenceResponse message: + + + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + + + 8 + + http://docs.oasis-open.org/ws-rx/wsrm/200702/TerminateSequenceResponse + urn:uuid:3597a398-4f3c-40f4-9335-8f1515572fdf + ://Business456.com/clientA + + + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + + + +``` + +### シーケンス + シーケンスに適用される制約を以下に示します。 + +- B1401:[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`xs:long` の最大値 \(9223372036854775807\) 以下のシーケンス番号を生成し、これらの番号にアクセスします。 + + `Sequence` ヘッダーの例を次に示します。 + +``` + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + 1 + +``` + +### 受信確認の要求 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Keep\-alive 機構として `AckRequested` ヘッダーを使用します。 + + `AckRequested` ヘッダーの例を次に示します。 + +``` + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + +``` + +### SequenceAcknowledgement + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-ReliableMessaging で用意されているシーケンス受信確認の抱き合わせ機構を使用します。以下の制約が適用されます。 + +- R1601: `Offer` 機構を使用して 2 つの逆方向シーケンスを確立した場合、目的の受信者に送信されるアプリケーション メッセージに、`SequenceAcknowledgement` ヘッダーを含めることができます。リモートのエンドポイントは、追加された `SequenceAcknowledgement` ヘッダーにアクセスできる必要があります。 + +- B1602 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`Nack` 要素を含む `SequenceAcknowledgement` ヘッダーは生成しません。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、各 `Nack` 要素にシーケンス番号が格納されていることを検証しますが、シーケンス番号が格納されていない場合は、`Nack` 要素および値を無視します。 + + `SequenceAcknowledgement` ヘッダーの例を次に示します。 + +``` + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + + +``` + +### WS\-ReliableMessaging エラー + WS\-ReliableMessaging エラーの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 実装に適用される制約を以下に示します。以下の制約が適用されます。 + +- B1701: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`MessageNumberRollover` エラーを生成しません。 + +- B1702: SOAP 1.2 では、サービス エンドポイントが接続制限に達し、新しい接続を処理できない場合、次の例に示すように、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は入れ子にした `CreateSequenceRefused` エラー サブコード `netrm:ConnectionLimitReached` を生成します。 + +``` + + + http://docs.oasis-open.org/ws-rx/wsrm/200702/fault + + + + + s:Receiver + + wsrm:CreateSequenceRefused + + netrm:ConnectionLimitReached + + + + + Server 'http://BusinessABC.com/serviceA' is too busy to process this request. Try again later. + + + + +``` + +### WS\-Addressing エラー + WS\-ReliableMessaging は WS\-Addressing を使用するため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の WS\-ReliableMessaging 実装は、WS\-Addressing エラーを生成して送信できます。ここでは、WS\-ReliableMessaging レイヤーで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が明示的に生成および送信する WS\-Addressing エラーについて説明します。 + +- B1801:次のいずれかに該当する場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は `Message Addressing Header Required` エラーを生成して送信します。 + + - `CreateSequence`、`CloseSequence`、または `TerminateSequence` メッセージに `MessageId` ヘッダーがない。 + + - `CreateSequence`、`CloseSequence`、または `TerminateSequence` メッセージに `ReplyTo` ヘッダーがない。 + + - `CreateSequenceResponse`、`CloseSequenceResponse`、または `TerminateSequenceResponse` メッセージに `RelatesTo` ヘッダーがない。 + +- B1802:[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`Endpoint Unavailable` エラーを生成して送信し、`CreateSequence` メッセージにあるアドレス指定ヘッダーのチェックに基づき、シーケンスを処理できるリッスン中のエンドポイントがないことを示します。 + +## プロトコル コンポジション + +### WS\-Addressing によるコンポジション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-Addressing の 2 つのバージョンをサポートしています。WS\-Addressing 2004\/08 \(\[WS\-ADDR\]\) と、W3C WS\-Addressing 1.0 Recommendation \(\[WS\-ADDR\-CORE\] および \[WS\-ADDR\-SOAP\]\) です。 + + WS\-ReliableMessaging 仕様に記載されているのは、WS\-Addressing 2004\/08 だけですが、使用する WS\-Addressing のバージョンが制限されているわけではありません。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に適用される制約を以下に示します。 + +- R2101: WS\-Addressing 2004\/08 と WS\-Addressing 1.0 の両方を WS\-ReliableMessaging で使用できます。 + +- R2102: 特定の WS\-ReliableMessaging シーケンス、または `Offer` 機構を使用して関連付けられた逆方向シーケンスのペアでは、同じバージョンの WS\-Addressing を使用する必要があります。 + +### SOAP によるコンポジション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、WS\-ReliableMessaging で SOAP 1.1 と SOAP 1.2 の両方を使用できます。 + +### WS\-Security と WS\-SecureConversation によるコンポジション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、セキュリティで保護されたトランスポート \(HTTPS\)、WS\-Security によるコンポジション、および WS\-SecureConversation によるコンポジションを使用して、WS\-ReliableMessaging シーケンスを保護します。WS\-ReliableMessaging 1.1 プロトコル、WS\-Security 1.1、および WS\-Secure Conversation 1.3 プロトコルは一緒に使う必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に適用される制約を以下に示します。 + +- R2301: 個々のメッセージの整合性と機密性だけでなく、WS\-ReliableMessaging シーケンスの整合性を保護するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では WS\-SecureConversation を使用する必要があります。 + +- R2302:WS\-ReliableMessaging シーケンスを確立する前に、WS\-SecureConversation セッションを確立する必要があります。 + +- R2303: WS\-ReliableMessaging シーケンスの有効期間が WS\-SecureConversation セッションの有効期間よりも長い場合は、対応する WS\-SecureConversation Renewal バインディングを使用して、WS\-SecureConversation によって確立された `SecurityContextToken` を更新する必要があります。 + +- B2304:WS\-ReliableMessaging シーケンスまたは相関する逆方向シーケンスのペアは、必ず同じ WS\-SecureConversation セッションにバインドされます。 + +- R2305: WS\-SecureConversation を使用して構成した場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーでは、`CreateSequence` メッセージに `wsse:SecurityTokenReference` 要素および `wsrm:UsesSequenceSTR` ヘッダーが含まれていることが必要です。 + + `UsesSequenceSTR` ヘッダーの例を次に示します。 + +``` + +``` + +### SSL\/TLS セッションによるコンポジション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、次のようにSSL\/TLS セッションによるコンポジションをサポートしていません。 + +- B2401: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`wsrm:UsesSequenceSSL` ヘッダーを生成しません。 + +- R2402: 信頼できるメッセージのイニシエーターは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーに `wsrm:UsesSequenceSSL` ヘッダーが付いた `CreateSequence` メッセージを送信できません。 + +### WS\-Policy によるコンポジション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-Policy 1.2 および WS\-Policy 1.5 の 2 つのバージョンの WS\-Policy をサポートしています。 + +## WS\-ReliableMessaging の WS\-Policy アサーション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-ReliableMessaging の `wsrm:RMAssertion` WS\-Policy アサーションを使用して、エンドポイントの機能を記述します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に適用される制約を以下に示します。 + +- B3001: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`wsrmn:RMAssertion` WS\-Policy アサーションを `wsdl:binding` 要素に添付します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`wsdl:binding` 要素および `wsdl:port` 要素への添付をサポートしています。 + +- B3002: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`wsp:Optional` タグを生成しません。 + +- B3003: `wsrmp:RMAssertion` WS\-Policy アサーションにアクセスする場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は `wsp:Optional` タグを無視し、WS\-RM ポリシーを必須のポリシーとして使用します。 + +- R3004: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は SSL\/TLS セッションで構成できないため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は `wsrmp:SequenceTransportSecurity` を指定するポリシーを受け付けません。 + +- B3005: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、常に `wsrmp:DeliveryAssurance` 要素を生成します。 + +- B3006: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は常に `wsrmp:ExactlyOnce` 配信保証を指定します。 + +- B3007: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-ReliableMessaging アサーションの以下のプロパティを生成して読み込み、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の `ReliableSessionBindingElement` でこれらのプロパティを制御します。 + + - `netrmp:InactivityTimeout` + + - `netrmp:AcknowledgementInterval` + + `RMAssertion` の例を次に示します。 + + ``` + + + + + + + + + + + + + + ``` + +## WS\-ReliableMessaging のフロー制御拡張 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-ReliableMessaging の機能拡張を使用して、シーケンス メッセージ フローのさらに厳密な制御を実現します。 + + フロー制御を有効にするには、`ReliableSessionBindingElement` の `FlowControlEnabled``boolean` プロパティを `true` に設定します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に適用される制約を以下に示します。 + +- B4001: 信頼できるメッセージング フロー制御を有効にした場合、次の例に示すように、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は `SequenceAcknowledgement` ヘッダーの要素拡張で `netrm:BufferRemaining` 要素を生成します。 + + ``` + + urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27 + + 8 + + ``` + +- B4002: 信頼できるメッセージング フロー制御を有効にした場合でも、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では `SequenceAcknowledgement` ヘッダーに `netrm:BufferRemaining` 要素は必要ありません。 + +- B4003: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるメッセージの送信先は、`netrm:BufferRemaining` を使用して、バッファーに保持できる新しいメッセージの数を示します。 + +- B4004:信頼できるメッセージング フロー制御を有効にした場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるメッセージング送信元は `netrm:BufferRemaining` の値を使用してメッセージの転送を調整します。 + +- B4005 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、0 ~ 4096 の整数値の `netrm:BufferRemaining` を生成し、0 ~ 214748364 \(`xs:int` の `maxInclusive` 値\) の整数値を読み取ります。 + +## メッセージ交換パターン + ここでは、WS\-ReliableMessaging をさまざまなメッセージ交換パターンに使用する際の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の動作について説明します。各メッセージ交換パターンについて、次の 2 つの展開シナリオを考えます。 + +- アドレス不可能なイニシエーター : イニシエーターはファイアウォールの内側にあります。レスポンダーは HTTP 応答でのみイニシエーターにメッセージを配信できます。 + +- アドレス可能なイニシエーター : イニシエーターとレスポンダーの両方に HTTP 要求を送信できます。つまり、逆方向の 2 つの HTTP 接続を確立できます。 + +### 一方向 : アドレス不可能なイニシエーター + +#### バインディング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、1 つの HTTP チャネルで 1 つのシーケンスを使用して、一方向メッセージ交換パターンを提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTP 要求を使用してイニシエーターからレスポンダーにすべてのメッセージを送信し、HTTP 応答を使用してレスポンダーからイニシエーターにすべてのメッセージを送信します。 + +#### CreateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で `Offer` 要素のない `CreateSequence` メッセージを転送し、HTTP 応答で `CreateSequenceResponse` メッセージを待機します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンスを作成し、HTTP 応答で `Accept` 要素のない `CreateSequenceResponse` メッセージを転送します。 + +#### SequenceAcknowledgement + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、`CreateSequence` メッセージとエラー メッセージを除くすべてのメッセージの応答で受信確認を処理します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、すべてのシーケンス メッセージと `AckRequested` メッセージへの HTTP 応答として、必ずスタンドアロンの受信確認を転送します。 + +#### CloseSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で `CloseSequence` メッセージを転送し、HTTP 応答で `CreateSequenceResponse` メッセージを待機します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、HTTP 応答で `CloseSequenceResponse` メッセージを転送します。 + +#### TerminateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で `TerminateSequence` メッセージを転送し、HTTP 応答で `TerminateSequenceResponse` メッセージを待機します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、HTTP 応答で `TerminateSequenceResponse` メッセージを転送します。 + +### 一方向 : アドレス可能なイニシエーター + +#### バインディング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、受信用 HTTP チャネルと送信用 HTTP チャネルで 1 つのシーケンスを使用する、一方向メッセージ交換パターンが用意されています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTP 要求を使用してすべてのメッセージを送信します。すべての HTTP 応答に、空の本文と HTTP 202 ステータス コードが含まれます。 + +#### CreateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で `Offer` 要素のない `CreateSequence` メッセージを転送します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンスを作成し、HTTP 要求で `Accept` 要素のない `CreateSequenceResponse` メッセージを転送します。 + +### 双方向 : アドレス可能なイニシエーター + +#### バインディング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、受信用 HTTP チャネルと送信用 HTTP チャネルで 2 つのシーケンスを使用する、完全に非同期の双方向メッセージ交換パターンが用意されています。このメッセージ交換パターンは、限定された方法で `Request/Reply`、`Addressable` イニシエーター メッセージ交換パターンに組み込むことができます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTP 要求を使用してすべてのメッセージを送信します。すべての HTTP 応答に、空の本文と HTTP 202 ステータス コードが含まれます。 + +#### CreateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で `Offer` 要素のある `CreateSequence` メッセージを転送します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、`CreateSequence` に `Offer` 要素があることを確認し、シーケンスを作成して `Accept` 要素のない `CreateSequenceResponse` メッセージを転送します。 + +#### シーケンスの有効期間 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、2 つのシーケンスを 1 つの完全な双方向セッションとして処理します。 + + 一方のシーケンスをフォールトするエラーが生成されると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、リモート エンドポイントに両方のシーケンスをフォールトするよう要求します。一方のシーケンスをフォールトするエラーを読み取ると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は両方のシーケンスをフォールトします。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、送信シーケンスを終了し、受信シーケンスで引き続きメッセージを処理できます。逆に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、受信シーケンスの終了を処理し、送信シーケンスで引き続きメッセージを送信することもできます。 + +### 要求\/応答および一方向のアドレス不可能なイニシエーター + +#### バインディング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、1 つの HTTP チャネルで 2 つのシーケンスを使用して、一方向の要求\/応答メッセージ交換パターンを提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTP 要求を使用してイニシエーターからレスポンダーにすべてのメッセージを送信し、HTTP 応答を使用してレスポンダーからイニシエーターにすべてのメッセージを送信します。 + +#### CreateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で `Offer` 要素がある `CreateSequence` メッセージを転送し、HTTP 応答で `CreateSequenceResponse` メッセージを待機します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、シーケンスを作成し、HTTP 応答で `Accept` 要素がある `CreateSequenceResponse` メッセージを転送します。 + +#### 一方向のメッセージ + 一方向メッセージ交換を正常に完了するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で要求シーケンス メッセージを送信し、HTTP 応答でスタンドアロンの `SequenceAcknowledgement` メッセージを受信します。`SequenceAcknowledgement` は、送信されたメッセージの受信確認を行う必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、受信確認、エラー、または空の本文と HTTP 202 ステータス コードによる応答で要求に応答します。 + +#### 双方向のメッセージ + 双方向メッセージ交換プロトコルを正常に完了するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で要求シーケンス メッセージを送信し、HTTP 応答で応答シーケンス メッセージを受信します。応答では、送信された要求シーケンス メッセージの受信確認を行う `SequenceAcknowledgement` を送信する必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、アプリケーション応答、エラー、または空の本文と HTTP 202 ステータス コードで要求に応答できます。 + + 一方向のメッセージが存在することと、アプリケーション応答のタイミングもあるため、要求シーケンス メッセージのシーケンス番号と応答メッセージのシーケンス番号には相関関係はありません。 + +#### 応答の再試行 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、双方向メッセージ交換プロトコルの相関関係について、HTTP 要求\/応答の相関関係に依存しています。このため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、要求シーケンス メッセージが受信確認されたときではなく、HTTP 応答によって `SequenceAcknowledgement`、アプリケーション応答、またはエラーが送信されたときに、要求シーケンス メッセージの再試行を停止します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、応答が関連付けられている要求の HTTP 要求で応答を再試行します。 + +#### CloseSequence の交換 + すべての一方向の要求シーケンス メッセージが、すべての応答シーケンス メッセージおよび受信確認を受信した後、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で要求シーケンスに `CloseSequence` メッセージを転送し、HTTP 応答で `CloseSequenceResponse` を待機します。 + + 要求シーケンスを終了すると、暗黙的に応答シーケンスが終了します。つまり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、`CloseSequence` メッセージに応答シーケンスの最終的な `SequenceAcknowledgement` を含め、応答シーケンスには `CloseSequence` 交換がありません。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、すべての応答が受信確認されたことを確認し、HTTP 応答で `CloseSequenceResponse` メッセージを転送します。 + +#### TerminateSequence の交換 + `CloseSequenceResponse` メッセージを受け取った後、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは HTTP 要求で要求シーケンスに `TerminateSequence` メッセージを転送し、HTTP 応答で `TerminateSequenceResponse` を待機します。 + + `CloseSequence` 交換と同じように、要求シーケンスを終了すると、暗黙的に応答シーケンスが終了します。つまり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、`TerminateSequence` メッセージに応答シーケンスの最終的な `SequenceAcknowledgement` を含め、応答シーケンスには `TerminateSequence` 交換がありません。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、HTTP 応答で `TerminateSequenceResponse` メッセージを転送します。 + +### 要求\/応答 : アドレス可能なイニシエーター + +#### バインディング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、受信用 HTTP チャネルと送信用 HTTP チャネルで 2 つのシーケンスを使用する、要求\/応答メッセージ交換パターンが用意されています。このメッセージ交換パターンは、限定された方法で `Duplex, Addressable` イニシエーター メッセージ交換パターンに組み込むことができます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTP 要求を使用してすべてのメッセージを送信します。すべての HTTP 応答に、空の本文と HTTP 202 ステータス コードが含まれます。 + +#### CreateSequence の交換 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] イニシエーターは、HTTP 要求で `Offer` 要素のある `CreateSequence` メッセージを転送します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] レスポンダーは、`CreateSequence` に `Offer` 要素があることを確認し、シーケンスを作成して `Accept` 要素がある `CreateSequenceResponse` メッセージを転送します。 + +#### 要求\/応答の相関関係 + 次の状況は、すべての相関関係にある要求\/応答で発生します。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、すべてのアプリケーション要求メッセージに `ReplyTo` エンドポイント参照と `MessageId` が保持されていることを確認します。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、各アプリケーション要求メッセージの `ReplyTo` としてローカル エンドポイント参照を適用します。ローカル エンドポイント参照は、イニシエーターの `CreateSequence` メッセージの `ReplyTo` であり、レスポンダーの `CreateSequence` メッセージの `To` です。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、受信要求メッセージに `MessageId` と `ReplyTo` が保持されていることを確認します。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、すべてのアプリケーション要求メッセージの `ReplyTo` エンドポイント参照の URI が、先に定義したローカル エンドポイント参照と一致していることを確認します。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、`wsa` 要求\/応答の相関ルールに従い、すべての応答に正しい `RelatesTo` ヘッダーおよび `To` ヘッダーが保持されていることを確認します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/reliable-sessions-overview.md b/docs/framework/wcf/feature-details/reliable-sessions-overview.md new file mode 100644 index 00000000000..63d38d9f042 --- /dev/null +++ b/docs/framework/wcf/feature-details/reliable-sessions-overview.md @@ -0,0 +1,132 @@ +--- +title: "信頼できるセッションの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: a7fc4146-ee2c-444c-82d4-ef6faffccc2d +caps.latest.revision: 30 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 30 +--- +# 信頼できるセッションの概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の SOAP リライアブル メッセージ機能では、SOAP エンドポイント間でエンドツーエンドのメッセージ転送に信頼性が提供されます。これにより、信頼性の低いネットワーク上でも、トランスポート エラーや SOAP メッセージ レベルのエラーに対処できます。具体的には、SOAP またはトランスポート中継局を経由して送信されるメッセージに関して、1 回だけの配信や \(オプションで\) 順序保証の配信がセッション ベースで提供されます。セッション ベースの配信では、セッション中のメッセージがグループ化され、オプションでメッセージの順序保証が適用されます。 + + ここでは、信頼できるセッションについての概要、使用方法と使用する状況、およびこれをセキュリティで保護する方法について説明します。 + +## WCF の信頼できるセッション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるセッションは、WS\-ReliableMessaging プロトコルの定義に準拠した SOAP リライアブル メッセージ機能の実装です。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の SOAP リライアブル メッセージ機能は、メッセージング エンドポイントを分離する中継局の数や種類に関係なく、2 つのエンドポイント間でエンドツーエンドの信頼できるセッションを実現します。これには SOAP を使用しないトランスポート手段 \(HTTP プロキシなど\)、またはエンドポイント間でメッセージをやりとりする場合に必要となる SOAP を使用する手段 \(SOAP ベースのルーターやブリッジなど\) が含まれます。信頼できるセッション チャネルでは "インタラクティブな" 通信がサポートされるので、これらのチャネルによって接続されている複数のサービスを同時に実行したり、短い待ち時間 \(比較的短い間隔\) でメッセージを処理することができます。つまりこれらのコンポーネントは同時に進行または失敗するので、コンポーネント間の分離は提供されません。 + + 信頼できるセッションでは次の 2 種類のエラーがマスクされます。 + +- SOAP メッセージ レベルのエラー \(メッセージの喪失または重複、および送信順序と異なる順序で到着するメッセージを含む\) + +- トランスポート エラー + + 信頼できるセッションは、WS\-ReliableMessaging プロトコルとメモリ内転送ウィンドウを実装することにより、トランスポート エラーが発生した場合に SOAP メッセージ レベルのエラーをマスクし、接続を再確立します。 + + 信頼できるセッションは、TCP が IP パケットに提供する信頼性を SOAP メッセージに提供します。TCP ソケット接続では、ノード間で IP パケットが 1 回のみ、正しい順序で転送されます。信頼できるチャネルでも、これと同じタイプの信頼できる転送が提供されますが、次の点で TCP ソケットの信頼性とは異なります。 + +- 信頼性は、任意のサイズのバイト パケットに対してではなく、SOAP メッセージ レベルで提供されます。 + +- 信頼性は、TCP を経由する転送に対してだけでなく、トランスポート中立の形で提供されます。 + +- 信頼性は、特定のトランスポート セッション \(たとえば、TCP 接続によって提供されるセッション\) に関連付けられておらず、信頼できるセッションの有効期間中、複数のトランスポート セッションを同時にまたは連続して使用できます。 + +- 信頼できるセッションは、送信側と受信側の SOAP エンドポイント間の接続に必要なトランスポート接続の数に関係なく、両者の間で提供されます。つまり、TCP の信頼性はトランスポート接続が終了した時点で終わるのに対し、信頼できるセッションではエンドツーエンドの信頼性が提供されます。 + +## 信頼できるセッションとバインディング + 前述のように、信頼できるセッションはトランスポート中立なので、多数のトランスポート上で実装できます。また、信頼できるセッションは、要求\/応答や双方向など複数のメッセージ交換パターンで確立できます。このため [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるセッションは、一連のバインディングに対するプロパティの 1 つとして公開されています。 + + 信頼できるセッションは、次のバインディングを使用するエンドポイントで使用できます。 + +- HTTP ベース トランスポートの標準バインディング + + - `WsHttpBinding` : 要求\/応答または一方向のコントラクトを公開します。 + + - 要求\/応答または一方向のサービス コントラクトで信頼できるセッションを使用しているときに使用できます。 + + - `WsDualHttpBinding` : 双方向、要求\/応答、または一方向のコントラクトを公開します。 + + - `WsFederationHttpBinding` : 要求\/応答または一方向のコントラクトを公開します。 + +- TCP ベース トランスポートの標準バインディング + + - `NetTcpBinding` : 双方向、要求\/応答、または一方向のコントラクトを公開します。 + + 信頼できるセッションは、HTTPS \(問題点の詳細については、後述の「信頼できるセッションとセキュリティ」を参照\) や名前付きパイプ バインディングなどのカスタム バインディングを作成することによって、他のバインディングでも使用できます。 + + 信頼できるセッションは、多様な種類のチャネルに重ねることができ、その結果形成された信頼できるセッションのチャネル形状はそれぞれ異なります。クライアントとサーバーの両方でサポートされる、信頼できるセッション チャネルの種類は、使用される土台のチャネルの種類によって異なります。次の表では、基になるチャネルの種類ごとに、クライアントでサポートされるセッション チャネルの種類を示します。 + +|サポートされる信頼できるセッション チャネルの種類 \(基になるチャネルの種類でサポートされる `TChannel` の値\)|`IRequestChannel`|`IRequestSessionChannel`|`IDuplexChannel`|`IDuplexSessionChannel`| +|---------------------------------------------------------------------|-----------------------|------------------------------|----------------------|-----------------------------| +|`IOutputSessionChannel`|○|○|○|○| +|`IRequestSessionChannel`|○|○|×|×| +|`IDuplexSessionChannel`|×|×|○|○| + + サポートされるチャネルの種類は、 メソッドに渡されるジェネリック パラメーター `TChannel` に使用できる値です。 + + 次の表では、基になるチャネルの種類ごとに、サーバーでサポートされるセッション チャネルの種類を示します。 + +|サポートされる信頼できるセッション チャネルの種類 \(基になるチャネルの種類でサポートされる `TChannel` の値\)|`IReplyChannel`|`IReplySessionChannel`|`IDuplexChannel`|`IDuplexSessionChannel`| +|---------------------------------------------------------------------|---------------------|----------------------------|----------------------|-----------------------------| +|`IInputSessionChannel`|○|○|○|○| +|`IReplySessionChannel`|○|○|×|×| +|`IDuplexSessionChannel`|×|×|○|○| + + サポートされるチャネルの種類は、 メソッドに渡されるジェネリック パラメーター `TChannel` に使用できる値です。 + +## 信頼できるセッションとセキュリティ + 双方 \(サービスとクライアント\) が認証され、交換されるメッセージが改ざんされない環境で通信を行うには、信頼できるセッションをセキュリティで保護することが重要です。さらに、個別の信頼できるセッションの整合性を確保することも重要です。信頼できるセッションのセキュリティ保護は、セキュリティ セッション チャネルで管理および提示されるセキュリティ コンテキストにバインドすることによって行います。セキュリティ チャネルによって、セキュリティ セッションが可能になります。セッション確立中に交換されるセキュリティ トークンは、信頼できるセッションでメッセージをセキュリティで保護するために使用されます。 + + 信頼できるセッションが TCP\-S を経由する場合、信頼できるセッションに TCP セッションが関連付けられます。このため、トランスポート セキュリティによって、信頼できるセッションにセキュリティが確実に関連付けられます。この場合、接続の再確立は無効になります。 + + 唯一の例外は、HTTPS の使用時です。SSL \(Secure Sockets Layer\) セッションは信頼できるセッションにバインドされません。この場合、セキュリティ コンテキスト \(SSL セッション\) を共有しているセッションどうしは相互に保護されないので、脅威につながります。アプリケーションによっては現実的な脅威となる可能性もあります。 + +## 信頼できるセッションの使用 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の信頼できるセッションを使用するには、信頼できるセッションをサポートするバインディングを使用してエンドポイントを作成します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって提供される、信頼できるセッションが有効化されたシステム指定のバインディングの 1 つを使用するか、信頼できるセッションを有効にしたカスタム バインディングを作成します。信頼できるセッションが既定でサポートおよび有効化されているシステム定義のバインディングは、次のとおりです。 + +- + + 信頼できるセッションがオプションとしてサポートされ、既定では有効化されていないシステム指定のバインディングは、次のとおりです。 + +- + +- + +- + + カスタム バインディングを作成する方法の例については、「[方法 : カスタムの信頼できるセッションによる HTTPS を使用したバインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-reliable-session-binding-with-https.md)」を参照してください。 + + 信頼できるセッションをサポートする [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインディングの詳細については、「[システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。 + +## 信頼できるセッションを使用する状況 + アプリケーションで信頼できるセッションの使用が求められる状況を理解することが重要です。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、双方のエンドポイントがどちらもアクティブである場合に、信頼できるセッションがサポートされます。アプリケーションで、エンドポイントの一方が一定期間使用できないことが必要である場合は、信頼性を実現するためにキューを使用できます。 + + 2 つのエンドポイントを TCP 経由で接続する必要がある場合、TCP ではパケットが正しい順序で 1 回だけ届くことが保証されているため、信頼できるメッセージ交換を行うために信頼できるセッションを使用する必要はなく、TCP だけで十分な場合があります。 + + ただし、次のいずれかの特性があるシナリオでは、信頼できるセッションの使用を真剣に検討する必要があります。 + +- SOAP ルーターなどの SOAP 中継局 + +- プロキシ中継局またはトランスポート ブリッジ + +- 断続的な接続 + +- HTTP を経由するセッション + +## 参照 + [サービスとクライアントを構成するためのバインディングの使用](../../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) + [WS 信頼できるセッション](../../../../docs/framework/wcf/samples/ws-reliable-session.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/reliable-sessions.md b/docs/framework/wcf/feature-details/reliable-sessions.md new file mode 100644 index 00000000000..b084494fc07 --- /dev/null +++ b/docs/framework/wcf/feature-details/reliable-sessions.md @@ -0,0 +1,54 @@ +--- +title: "信頼できるセッション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Windows Communication Foundation, sessions and instances" + - "WCF, sessions and instances" + - "sessions and instances [WCF]" +helpviewer_keywords: + - "インスタンス [WCF]" + - "セッション [WCF]" +ms.assetid: 143951b3-3aa0-4540-b4b7-d33e77e874a1 +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# 信頼できるセッション +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の信頼できるセッションについて、その使用目的、使用方法と使用する状況、サポートするバインディング構成、およびベスト プラクティスの参照先について説明します。このセクションの重要なポイントと関連するトピックの詳細について、次の表にまとめます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって提供される信頼できるセッションでは、SOAP またはトランスポート中継局を経由してエンドポイント間で送信されるメッセージが 1 回だけ配信され、オプションとして送信時と同じ順序で配信されることが保証されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションで信頼できるセッションを使用するには、既定またはオプションとして、信頼できるセッションをサポートする、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のシステム提供のバインディングの 1 つを使用するか、または信頼できるセッションをサポートする独自のカスタム バインディングを作成します。 + +## このセクションの内容 + [信頼できるセッションの概要](../../../../docs/framework/wcf/feature-details/reliable-sessions-overview.md) + 信頼できるセッションの概要、信頼できるセッションを使用する状況、信頼できるセッションをサポートする各種のバインディング、および動作のしくみについて説明します。 + + [方法 : 信頼されたセッション内のメッセージを変換する](../../../../docs/framework/wcf/feature-details/how-to-exchange-messages-within-a-reliable-session.md) + 構成で指定したカスタム バインディングを使用して、HTTP 上で信頼できるセッションを作成する方法を説明します。 + + [方法 : 信頼できるセッション内でメッセージをセキュリティで保護する](../../../../docs/framework/wcf/feature-details/how-to-secure-messages-within-reliable-sessions.md) + 信頼できるセッションを保護する方法について説明します。 + + [方法 : カスタムの信頼できるセッションによる HTTPS を使用したバインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-reliable-session-binding-with-https.md) + HTTPS 上で信頼できるセッションを作成する方法について説明します。 + + [信頼できるセッションのベスト プラクティス](../../../../docs/framework/wcf/feature-details/best-practices-for-reliable-sessions.md) + 信頼できるセッションの使用に関するベスト プラクティスについて説明します。 + +## 関連項目 + + +## 参照 + [キューと信頼できるセッション](../../../../docs/framework/wcf/feature-details/queues-and-reliable-sessions.md) + [セッション、インスタンス化、および同時実行](../../../../docs/framework/wcf/feature-details/sessions-instancing-and-concurrency.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/replay-attacks.md b/docs/framework/wcf/feature-details/replay-attacks.md new file mode 100644 index 00000000000..d64bbd3d044 --- /dev/null +++ b/docs/framework/wcf/feature-details/replay-attacks.md @@ -0,0 +1,52 @@ +--- +title: "リプレイ攻撃 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7a17e040-93cd-4432-81b9-9f62fec78c8f +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# リプレイ攻撃 +*リプレイ攻撃*は、攻撃者がメッセージのストリームを 2 つのパーティ間でコピーし、そのストリームを他の 1 つ以上のパーティにリプレイすることで発生します。攻撃が和らげられていない場合、攻撃対象になったコンピューターはストリームを正当なメッセージとして処理するため、項目の順序が重複するなど、望ましくない状況に陥ります。 + +## バインディングはリフレクション攻撃にさらされる可能性がある + *"リフレクション攻撃"* は、受信者からの応答であるかのように送信者に返信されるメッセージのリプレイです。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 機構の標準の*リプレイ検出*では、この攻撃を自動的に処理できません。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービス モデルは、署名されたメッセージ ID を要求メッセージに追加し、署名された `relates-to` ヘッダーを応答メッセージに要求するため、既定でリフレクション攻撃が軽減されます。その結果、要求メッセージを応答としてリプレイできません。セキュリティで保護された信頼できるメッセージ \(RM\) シナリオでは、リフレクション攻撃は次の理由で軽減されます。 + +- シーケンス メッセージの作成スキーマとシーケンス応答メッセージの作成スキーマが異なります。 + +- 一方向シーケンスの場合、クライアントから送信されたシーケンス メッセージをクライアントに対してリプレイすることはできません。これは、クライアントがこのようなメッセージを認識できないためです。 + +- 双方向シーケンスの場合、2 つのシーケンス ID が一意である必要があります。このため、送信シーケンス メッセージを受信シーケンス メッセージとしてリプレイできません \(すべてのシーケンス ヘッダーと本文も署名されています\)。 + + リフレクション攻撃の影響を受けやすい唯一のバインディングは WS\-Addressing を使用しないバインディング \(WS\-Addressing を無効にして、対称キー ベースのセキュリティを使用するカスタム バインディング\) です。 は、既定では WS\-Addressing を使用しませんが、この攻撃を受けやすい方法で対称キー ベースのセキュリティを使用することはありません。 + + カスタム バインディングに対する攻撃を軽減するには、セキュリティ コンテキストを確立しないか、WS\-Addressing ヘッダーを要求します。 + +## Web ファーム : 攻撃者が複数のノードに対して要求をリプレイする + クライアントは、Web ファームに実装されているサービスを使用します。攻撃者は、ファーム内の特定のノードに送信された要求を同じファーム内の別のノードに対してリプレイします。また、サービスが再開されると、リプレイ キャッシュがフラッシュされ、攻撃者が要求をリプレイできるようになります \(このキャッシュには、以前使用されたメッセージ署名の値が格納されています。これにより、メッセージ署名は一度しか使用できないため、リプレイを防止できます。リプレイ キャッシュは Web ファーム内で共有されません\)。 + + 回避事項を次に示します。 + +- ステートフルなセキュリティ コンテキスト トークンと共にメッセージ モード セキュリティを使用します \(セキュリティで保護されたメッセージ交換を有効にするかどうかは任意\)。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : セキュリティで保護されたセッションに対しセキュリティ コンテキスト トークンを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-security-context-token-for-a-secure-session.md). + +- トランスポート レベルのセキュリティを使用するようにサービスを構成します。 + +## 参照 + [セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md) + [情報の漏えい](../../../../docs/framework/wcf/feature-details/information-disclosure.md) + [権限の昇格](../../../../docs/framework/wcf/feature-details/elevation-of-privilege.md) + [サービス拒否](../../../../docs/framework/wcf/feature-details/denial-of-service.md) + [改変](../../../../docs/framework/wcf/feature-details/tampering.md) + [サポートされていないシナリオ](../../../../docs/framework/wcf/feature-details/unsupported-scenarios.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/request-reply-correlation.md b/docs/framework/wcf/feature-details/request-reply-correlation.md new file mode 100644 index 00000000000..75266ae4260 --- /dev/null +++ b/docs/framework/wcf/feature-details/request-reply-correlation.md @@ -0,0 +1,109 @@ +--- +title: "要求/応答の相関関係 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cf4379bf-2d08-43f3-9584-dfa30ffcb1f6 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 要求/応答の相関関係 +要求\/応答の相関関係は、 のペアと使用すると、ワークフロー サービスに双方向の操作を実装でき、 のペアと使用すると、別の Web サービスの双方向の操作を呼び出すことができます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの双方向の操作を呼び出す場合、このサービスには、従来の命令型のコード ベースの [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを使用することも、ワークフロー サービスを使用することもできます。 要求\/応答の相関関係を使用するには、 などの双方向のバインドを使用する必要があります。 双方向の操作を呼び出す場合と実装する場合では、相関関係の初期化に同様の手順が使用されます。これらの手順については、このセクションで説明します。 + +## Receive\/SendReply による双方向の操作での相関関係の使用 + \/ のペアは、ワークフロー サービスに双方向の操作を実装するために使用されます。 ランタイムは、要求\/応答の相関関係を使用して、応答が正しい呼び出し元にディスパッチされるようにします。 ワークフローが を使用してホストされている場合、つまり、ワークフロー サービスの場合は、既定の相関関係の初期化で十分です。 このシナリオでは、\/ のペアがワークフローによって使用されます。特定の相関関係の構成は不要です。 + +```csharp +Receive StartOrder = new Receive +{ + CanCreateInstance = true, + ServiceContractName = OrderContractName, + OperationName = "StartOrder" +}; + +SendReply ReplyToStartOrder = new SendReply +{ + Request = StartOrder, + Content = … // Contains the return value, if any. +}; + +// Construct a workflow using StartOrder and ReplyToStartOrder. + +``` + +### 要求\/応答の相関関係の明示的な初期化 + 他の双方向の操作が並列実行される場合、相関関係を明示的に構成する必要があります。 それには、 を指定するか、 内に \/ を設定します。 この例では、要求\/応答の相関関係が \/ のペアを使用して構成されています。 + +```csharp +Variable RRHandle = new Variable(); + +Receive StartOrder = new Receive +{ + CanCreateInstance = true, + ServiceContractName = OrderContractName, + OperationName = "StartOrder", + CorrelationInitializers = + { + new RequestReplyCorrelationInitializer + { + CorrelationHandle = RRHandle + } + } +}; + +SendReply ReplyToStartOrder = new SendReply +{ + Request = StartOrder, + Content = … // Contains the return value, if any. +}; + +// Construct a workflow using StartOrder and ReplyToStartOrder. +``` + + 相関関係を明示的に構成する代わりに、 アクティビティを使用することもできます。 は、内包しているメッセージング アクティビティに暗黙の を提供します。 この例では、\/ ペアが に内包されています。 明示的な相関関係の構成は不要です。 + +```csharp +Receive StartOrder = new Receive +{ + CanCreateInstance = true, + ServiceContractName = OrderContractName, + OperationName = "StartOrder" +}; + +SendReply ReplyToStartOrder = new SendReply +{ + Request = StartOrder, + Content = … // Contains the return value, if any. +}; + +CorrelationScope s = new CorrelationScope +{ + Body = new Sequence + { + Activities = + { + StartOrder, + // Activities that create the reply. + ReplyToStartOrder + } + } +}; + +// Construct a workflow using the CorrelationScope. +``` + + 追加の相関関係が必要な場合は、目的の種類の `CorrelationInitializer` を使用する各メッセージング アクティビティの プロパティを使用して、追加の相関関係を構成します。 + +## Send\/ReceiveReply による双方向の操作での相関関係の使用 + アクティビティは、 によってホストされるワークフロー サービスでのみ使用できますが、 および \/ のペアは、Web サービスに対してメソッドを呼び出す必要のあるすべてのワークフローで使用できます。 ワークフローが を使用してホストされる場合は、前のセクションで説明した既定の相関関係が適用されますが、そうでない場合は、目的の を明示的に使用するか、 による暗黙の処理管理を使用して、相関関係を構成する必要があります。 + + 双方向の操作があるサービスで **\[サービス参照の追加\]** を使用する場合は、明示的に指定された Request\/Reply 相関関係を使用して、内部に \/ ペア アクティビティをラップするアクティビティが生成されます。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/request-reply-services.md b/docs/framework/wcf/feature-details/request-reply-services.md new file mode 100644 index 00000000000..8957d2e3ff1 --- /dev/null +++ b/docs/framework/wcf/feature-details/request-reply-services.md @@ -0,0 +1,43 @@ +--- +title: "要求/応答サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コントラクト [WCF], 要求/応答サービス" + - "要求/応答コントラクト [WCF]" + - "WCF [WCF], 要求/応答サービス" + - "Windows Communication Foundation [WCF], 要求/応答サービス" +ms.assetid: 2fa710f1-47f4-4598-b063-3ab3bd22ebba +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 要求/応答サービス +要求\/応答サービスは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の操作コントラクトの既定の種類です。クライアントはサービス操作を呼び出し、サービスからの応答を待機します。サービス操作の呼び出しは、同期的または非同期的に実行できます。同期呼び出しでは、応答を受信するか、呼び出しがタイムアウトするまで、クライアントがブロックされます。非同期呼び出しでは、クライアントはサービス操作の呼び出し後、動作を続行し、別のスレッドのサービスからの応答を受信できます。 + + 要求\/応答サービス コントラクトを作成するには、サービス コントラクトを定義し、次のサンプル コードに示すように クラスを各操作に適用します。 + +``` +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public interface IRequestReplyCalculator +{ + [OperationContract] + double Add(double n1, double n2); +} + +``` + + これは既定の動作であるため、 プロパティを `false` に設定する必要はありません。 + +## 参照 + [一方向サービス](../../../../docs/framework/wcf/feature-details/one-way-services.md) + [双方向サービス](../../../../docs/framework/wcf/feature-details/duplex-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/retrieving-metadata.md b/docs/framework/wcf/feature-details/retrieving-metadata.md new file mode 100644 index 00000000000..0ba0771bb5a --- /dev/null +++ b/docs/framework/wcf/feature-details/retrieving-metadata.md @@ -0,0 +1,43 @@ +--- +title: "メタデータを取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "メタデータ [WCF], 取得" +ms.assetid: 18d8ba4c-af0f-4827-a50b-4202d767bacc +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# メタデータを取得する +メタデータの取得は、WS\-MetadataExchange \(MEX\) メタデータ エンドポイントや HTTP\/GET メタデータ エンドポイントなどのメタデータ エンドポイントに対してメタデータを要求して取得する処理です。 + +## Svcutil.exe を使用した、コマンドラインからのメタデータの取得 + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) ツールを使用して、`/target:metadata` スイッチとアドレスを渡すことにより、WS\-MetadataExchange 要求または HTTP\/GET 要求を使用してサービス メタデータを取得できます。Svcutil.exe は指定したアドレスでメタデータをダウンロードし、ディスクにファイルを保存します。Svcutil.exe は内部的に インスタンスを使用し、構成 \(Svcutil.exe に入力として渡されたアドレスのスキーマに一致する名前の エンドポイント構成\) から読み込まれます。 + +## MetadataExchangeClient を使用した、プログラムによるメタデータの取得 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、WS\-MetadataExchange 要求や HTTP\/GET 要求などの標準化プロトコルを使用してサービス メタデータを取得できます。これらのプロトコルはいずれも、 型でサポートされます。メタデータ エンドポイントのアドレスとオプションのバインディングを指定することにより、 型を使用してサービス メタデータを取得します。 インスタンスで使用するバインディングは、 静的クラスの既定のバインディング、ユーザー指定のバインディング、`IMetadataExchange` コントラクト用のエンドポイント構成から読み込まれたバインディングのいずれかです。 は同様に、 型を使用して、メタデータへの HTTP URL 参照を解決できます。 + + 既定では、 インスタンスは、1 つの インスタンスに結び付けられています。 によって使用される インスタンスは、 仮想メソッドを上書きすることによって変更または置換することができます。同様に、 仮想メソッドをオーバーライドすることによって、HTTP\/GET 要求を行うために が使用する インスタンスを変更または置換できます。 + +## このセクションの内容 + [方法 : Svcutil.exe を使用してメタデータ ドキュメントをダウンロードする](../../../../docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-download-metadata-documents.md) + Svcutil.exe を使用して、メタデータ ドキュメントをダウンロードする方法を示します。 + + [方法 : MetadataResolver を使用してバインディング メタデータを動的に取得する](../../../../docs/framework/wcf/feature-details/how-to-use-metadataresolver-to-obtain-binding-metadata-dynamically.md) + を使用して、実行時に動的にバインディング メタデータを取得する方法を示します。 + + [方法 : MetadataExchangeClient を使用してメタデータを取得する](../../../../docs/framework/wcf/feature-details/how-to-use-metadataexchangeclient-to-retrieve-metadata.md) + クラスを使用して、 オブジェクトを含む オブジェクトにメタデータ ファイルをダウンロードし、ファイルに書き込んだり、他の目的に使用したりする方法を示します。 + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/routing-contracts.md b/docs/framework/wcf/feature-details/routing-contracts.md new file mode 100644 index 00000000000..86b41673d89 --- /dev/null +++ b/docs/framework/wcf/feature-details/routing-contracts.md @@ -0,0 +1,38 @@ +--- +title: "ルーティング コントラクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9ceea7ae-ea19-4cf9-ba4f-d071e236546d +caps.latest.revision: 7 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 7 +--- +# ルーティング コントラクト +ルーティング コントラクトは、ルーティング サービスが処理できるメッセージ パターンを定義します。各コントラクトは型指定されておらず、サービスは、メッセージ スキーマやアクションを認識していない場合でもメッセージを受信できます。このため、ルーティング サービスは、ルーティングされる基盤のメッセージの詳細構成を追加することなく、メッセージをジェネリックにルーティングできます。 + +## ルーティング コントラクト + ルーティング サービスには汎用 WCF メッセージ オブジェクトを使用できるため、コントラクトを選ぶ場合の最大の検討事項は、クライアントとサービスとの通信時に使用されるチャネルの形状です。ルーティング サービスは、メッセージを処理するときに対象型メッセージ ポンプを使用するため、通常、受信コントラクトの形状は、送信コントラクトの形状と一致します。ただし、サービス モデルのディスパッチャーがこの形状を変更する場合があります。たとえば、ディスパッチャーは、二重チャネルを要求\/応答チャネルに変換したり、セッションのサポートが不要で使用されていない場合に、このサポートを削除 \(つまり、**SessionMode.Allowed** が設定されている場合に、**IInputSessionChannel** を **IInputChannel** に変更\) したりします。 + + これらのメッセージ ポンプをサポートするために、ルーティング サービスでは、 名前空間にコントラクトを用意しています。これらのコントラクトは、ルーティング サービスが使用するサービス エンドポイントを定義するときに、使用される必要があります。これらのコントラクトは型指定されていないため、どのようなメッセージの種類やアクションでも受信でき、ルーティング サービスは、特定のメッセージ スキーマを認識しない場合でもメッセージを処理できます。ルーティング サービスが使用するコントラクトの詳細については、「[Routing Contracts](../../../../docs/framework/wcf/feature-details/routing-contracts.md)」を参照してください。 + + ルーティング サービスによって提供されるコントラクトは、 名前空間に含まれています。これらのコントラクトは、次の表のとおりです。 + +|コントラクト|\[図形\]|チャネル形状| +|------------|------------|------------| +||SessionMode \= SessionMode.Allowed

AsyncPattern \= true

IsOneWay \= true|IInputChannel \-\> IOutputChannel| +||SessionMode \= SessionMode.Required

AsyncPattern \= true

IsOneWay \= true|IInputSessionChannel \-\> IOutputSessionChannel| +||SessionMode \= SessionMode.Allowed

AsyncPattern \= true|IReplyChannel \-\> IRequestChannel| +||SessionMode\=SessionMode.Required

CallbackContract\=typeof\(ISimplexSession\)

AsyncPattern \= true

IsOneWay \= true

TransactionFlow\(TransactionFlowOption.Allowed\)|IDuplexSessionChannel \-\> IDuplexSessionChannel| + +## 参照 + [Routing Service](http://msdn.microsoft.com/ja-jp/5ac8718c-bcef-456f-bfd5-1e60a30d6eaa) + [ルーティングの概要](../../../../docs/framework/wcf/feature-details/routing-introduction.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/routing-introduction.md b/docs/framework/wcf/feature-details/routing-introduction.md new file mode 100644 index 00000000000..d499c4ec210 --- /dev/null +++ b/docs/framework/wcf/feature-details/routing-introduction.md @@ -0,0 +1,415 @@ +--- +title: "ルーティングの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bf6ceb38-6622-433b-9ee7-f79bc93497a1 +caps.latest.revision: 11 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 11 +--- +# ルーティングの概要 +ルーティング サービスは、メッセージの内容を基にメッセージをルーティングできる、プラグ可能な汎用の SOAP 中継局を提供します。 ルーティング サービスを使用すると、サービスの集計、サービスのバージョン管理、優先度ルーティング、マルチキャスト ルーティングなどのシナリオを実装できる複雑なルーティング ロジックを作成できます。 また、ルーティング サービスは、バックアップ エンドポイントのリストを設定できるエラー処理機能も提供します。バックアップ エンドポイントは、プライマリ送信先エンドポイントへの送信時に障害が発生した場合に、メッセージの送信先になります。 + + このトピックでは、ルーティング サービスをご存じない方を対象としています。ここでは、ルーティング サービスの基本的な構成とホストについて説明します。 + +## 構成 + ルーティング サービスは、1 つ以上のサービス エンドポイントを公開する WCF サービスとして実装されます。サービス エンドポイントは、クライアント アプリケーションからメッセージを受信し、受信したメッセージを 1 つ以上の送信先エンドポイントにルーティングします。 ルーティング サービスには があります。これは、このサービスによって公開されるサービス エンドポイントに適用されます。 この動作を使用して、サービスの稼働方法について詳細を構成します。 構成ファイルを使用する場合に構成しやすいように、パラメーターを **RoutingBehavior** に指定します。 コード ベースのシナリオでは、これらのパラメーターを オブジェクトの一部として指定し、このオブジェクトを **RoutingBehavior** に渡すことができます。 + + 開始時に、この動作はメッセージの SOAP 処理の実行に使用される をクライアントのエンドポイントに追加します。 追加されると、ルーティング サービスが、メッセージを受信したエンドポイントとは異なる **MessageVersion** が必要なエンドポイントにメッセージを転送できるようになります。 **RoutingBehavior** は、サービス拡張である も登録します。この機能拡張は、実行時にルーティング サービスを変更するためのアクセス ポイントを提供します。 + + **RoutingConfiguration** クラスは、ルーティング サービスの構成および構成の更新を一貫性を持って実行できる手段を提供します。 このクラスには、ルーティング サービスの設定となるパラメーターが含まれます。これらのパラメーターは、サービスの開始時に **RoutingBehavior** を構成するために使用されるか、実行時にルーティング構成を変更するために **RoutingExtension** に渡されます。 + + メッセージのコンテンツ ベースのルーティングを実行するために使用するルーティング ロジックは、複数の オブジェクトをフィルター テーブル \( オブジェクト\) にまとめて定義します。 受信メッセージは、フィルター テーブルに保持されているメッセージ フィルターに対して評価され、メッセージに一致する各 **MessageFilter** に従って、送信先エンドポイントに転送されます。 メッセージのルーティングに使用するフィルター テーブルは、構成で **RoutingBehavior** を使用するか、**RoutingConfiguration** オブジェクトを使用してコードにより指定します。 + +### エンドポイントの定義 + 構成を行うには、使用するルーティング ロジックの定義から始めるように思えますが、実際には、まず、メッセージのルーティング先になるエンドポイントの形状を決定する必要があります。 ルーティング サービスは、メッセージの送受信に使用するチャネルの形状を定義するコントラクトを使用するため、入力チャネルの形状と出力チャネルの形状が一致する必要があります。 たとえば、要求\/応答チャネル形状を使用するエンドポイントにルーティングする場合は、 など、着信エンドポイントでも、互換性のあるコントラクトを使用する必要があります。 + + つまり、複数の送信先エンドポイントが、複数の通信パターン \(一方向の操作と双方向の操作の混合など\) のコントラクトを使用している場合は、すべての送信先エンドポイントへのメッセージの受信とルーティングを行う単一のサービス エンドポイントを作成することはできません。 互換性のある形状を使用するエンドポイントを特定し、送信先エンドポイントにルーティングされるメッセージの受信に使用するサービス エンドポイントを 1 つ以上定義する必要があります。 + +> [!NOTE] +> 複数の通信パターン \(一方向の操作と双方向の操作の混合など\) を指定するコントラクトを使用している場合は、 など、二重のコントラクトをルーティング サービスで使用して対処します。 ただし、この場合は、バインドが二重通信に対応可能である必要があり、シナリオによっては、それが可能でない場合もあります。 対応が不可能なシナリオでは、複数のエンドポイントに通信をファクタリングするか、アプリケーションの変更が必要になる可能性があります。 + + ルーティング コントラクトの詳細については、「[ルーティング コントラクト](../../../../docs/framework/wcf/feature-details/routing-contracts.md)」を参照してください。 + + サービス エンドポイントが定義されたら、**RoutingBehavior** を使用して特定の **RoutingConfiguration** をエンドポイントに関連付けることができます。 構成ファイルを使用してルーティング サービスを構成する場合は、**RoutingBehavior** を使用して、このエンドポイントで受信されるメッセージの処理に使用するルーティング ロジックを保持しているフィルター テーブルを指定します。 ルーティング サービスをプログラムにより構成する場合は、**RoutingConfiguration** を使用して、フィルター テーブルを指定できます。 + + 以下に、プログラムによる方法と構成ファイルを使用する方法の両方で、ルーティング サービスが使用するサービスおよびクライアント エンドポイントを定義する例を示します。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + +``` + +```csharp +//set up some communication defaults +string clientAddress = "http://localhost:8000/servicemodelsamples/service"; +string routerAddress = "http://localhost:8000/routingservice/router"; +Binding routerBinding = new WSHttpBinding(); +Binding clientBinding = new WSHttpBinding(); +//add the endpoint the router uses to receive messages +serviceHost.AddServiceEndpoint( + typeof(IRequestReplyRouter), + routerBinding, + routerAddress); +//create the client endpoint the router routes messages to +ContractDescription contract = ContractDescription.GetContract( + typeof(IRequestReplyRouter)); +ServiceEndpoint client = new ServiceEndpoint( + contract, + clientBinding, + new EndpointAddress(clientAddress)); +//create a new routing configuration object +RoutingConfiguration rc = new RoutingConfiguration(); +…. +rc.FilterTable.Add(new MatchAllMessageFilter(), endpointList); +//attach the behavior to the service host +serviceHost.Description.Behaviors.Add( + new RoutingBehavior(rc)); +``` + + この例では、アドレスが "http:\/\/localhost:8000\/routingservice\/router" である単一のエンドポイントを公開するようにルーティング サービスを構成しています。このエンドポイントは、ルーティングされるメッセージの受信に使用されます。 メッセージは要求\/応答エンドポイントにルーティングされるため、サービス エンドポイントは コントラクトを使用します。 この構成では、メッセージのルーティング先となる単一のクライアント エンドポイント "http:\/\/localhost:8000\/servicemodelsample\/service" も定義しています。 "routingTable1" という名前のフィルター テーブル \(例には含まれていません\) は、メッセージのルーティングに使用されるルーティング ロジックを保持しており、**RoutingBehavior** \(構成ファイルの場合\) または **RoutingConfiguration** \(プログラムによる構成の場合\) を使用してサービス エンドポイントに関連付けられています。 + +### ルーティング ロジック + メッセージのルーティングに使用されるルーティング ロジックを定義するには、受信メッセージに含まれるデータのうち、一意に識別して処理できるものを特定する必要があります。 たとえば、ルーティング先のすべてのエンドポイントが同じ SOAP アクションを共有する場合、メッセージに含まれる Action の値は、メッセージのルーティング先となる特定のエンドポイントを示す値としては不適切です。 ある特定のエンドポイントにメッセージを一意にルーティングする必要がある場合は、メッセージのルーティング先エンドポイントを一意に識別できるデータを基に、フィルター処理を行います。 + + ルーティング サービスには、アドレス、アクション、エンドポイント名、さらには XPath クエリなど、メッセージ内の特定の値を確認する **MessageFilter** 実装がいくつかあります。 これらの実装の中にニーズに合うものがない場合は、カスタムの **MessageFilter** 実装を作成できます。 メッセージ フィルターの詳細およびルーティング サービスが使用する実装の比較については、「[メッセージ フィルター](../../../../docs/framework/wcf/feature-details/message-filters.md)」および「[フィルターの選択](../../../../docs/framework/wcf/feature-details/choosing-a-filter.md)」を参照してください。 + + 複数のメッセージ フィルターをまとめて、フィルター テーブルで管理します。このテーブルで、各 **MessageFilter** と送信先エンドポイントが関連付けられます。 または、フィルター テーブルを使用して、通信エラーが発生した場合に、ルーティング サービスがメッセージを送信するバックアップ エンドポイントのリストを指定することもできます。 + + 既定では、フィルター テーブル内のすべてのメッセージ フィルターが同時に評価されます。ただし、 を指定すると、特定の順序でメッセージ フィルターが評価されるようにすることができます。 優先度が最も高いすべてのエントリが最初に評価されます。優先度レベルが高いフィルターの中に一致するものが見つかった場合、それよりも優先度の低いメッセージ フィルターは評価されません。 フィルター テーブルの詳細については、「[メッセージ フィルター](../../../../docs/framework/wcf/feature-details/message-filters.md)」を参照してください。 + + 次の例では を使用しています。これは、すべてのメッセージに対して `true` に評価されます。 この **MessageFilter** は "routingTable1" フィルター テーブルに追加され、このテーブルで **MessageFilter** が、"CalculatorService" という名前のクライアント エンドポイントに関連付けられます。 次に、**RoutingBehavior** で、サービス エンドポイントが処理するメッセージのルーティングに、このテーブルが使用されるように指定しています。 + +```xml + + + + + + + + + + + + + + + + + + + +
+
+
+``` + +```csharp +//create a new routing configuration object +RoutingConfiguration rc = new RoutingConfiguration(); +//create the endpoint list that contains the endpoints to route to +//in this case we have only one +List endpointList = new List(); +endpointList.Add(client); +//add a MatchAll filter to the Router's filter table +//map it to the endpoint list defined earlier +//when a message matches this filter, it is sent to the endpoint contained in the list +rc.FilterTable.Add(new MatchAllMessageFilter(), endpointList); +``` + +> [!NOTE] +> 既定でルーティング サービスによって評価されるのは、メッセージのヘッダーのみです。 フィルターがメッセージ本文にアクセスできるようにするには、 を `false` に設定します。 + + **マルチキャスト** + + 多くのルーティング サービス構成では、特定の 1 つのエンドポイントにのみメッセージをルーティングする排他的なフィルター ロジックが使用されますが、特定のメッセージを、複数の送信先エンドポイントにルーティングすることが必要な場合もあります。 メッセージを複数の送信先にマルチキャストするには、次の条件を満たす必要があります。 + +- 要求への応答時にクライアント アプリケーションが受信できるのは 1 つの応答のみであるため、チャネル形状が要求\/応答でない \(一方向または二重のどちらでもよい\) ことが必要である。 + +- 複数のフィルターが、メッセージの評価時に `true` を返す必要がある。 + + これらの条件が満たされる場合は、メッセージが、`true` に評価されたすべてのフィルターのすべてのエンドポイントにルーティングされます。 次の例では、メッセージ内のエンドポイント アドレスが http:\/\/localhost:8000\/routingservice\/router\/rounding である場合、両方のエンドポイントにメッセージがルーティングされるルーティング構成を定義しています。 + +```xml + + + + + + + + + + + + +
+
+
+``` + +```csharp +rc.FilterTable.Add(new MatchAllMessageFilter(), calculatorEndpointList); +rc.FilterTable.Add(new EndpointAddressMessageFilter(new EndpointAddress( + "http://localhost:8000/routingservice/router/rounding")), + roundingCalcEndpointList); +``` + +### SOAP 処理 + 異種プロトコル間でのメッセージのルーティングをサポートするために、既定では、**RoutingBehavior** が、メッセージのルーティング先であるすべてのクライアント エンドポイントに を追加します。 この動作は、メッセージがエンドポイントにルーティングされる前に、自動的に新しい **MessageVersion** を作成するだけでなく、要求側クライアント アプリケーションに応答ドキュメントを返す前に、応答ドキュメント用に互換性のある **MessageVersion** を作成します。 + + 送信メッセージ用に新しい **MessageVersion** を作成する手順は、次のとおりです。 + + **要求の処理** + +- 送信バインドおよびチャネルの **MessageVersion** を取得します。 + +- 元のメッセージの本文のリーダーを取得します。 + +- 同じ操作、同じ本文のリーダーと、新しい **MessageVersion** を使用して新しいメッセージを作成します。 + +- \!\= **Addressing.None** の場合は、To、From、FaultTo、および RelatesTo の各ヘッダーを新しいメッセージにコピーします。 + +- 新しいメッセージにすべてのメッセージ プロパティをコピーします。 + +- 応答の処理時に使用するために、元の要求メッセージを保存します。 + +- 新しい要求メッセージを返します。 + + **応答の処理** + +- 元の要求メッセージの **MessageVersion** を取得します。 + +- 受信した応答メッセージの本文のリーダーを取得します。 + +- 同じ操作、同じ本文のリーダー、および、元の要求メッセージの **MessageVersion** を使用して、新しい応答メッセージを作します。 + +- \!\= **Addressing.None** の場合は、To、From、FaultTo、および RelatesTo の各ヘッダーを新しいメッセージにコピーします。 + +- 新しいメッセージにメッセージ プロパティをコピーします。 + +- 新しい応答メッセージを返します。 + + 既定では、サービスの開始時に **SoapProcessingBehavior** が によって自動的にクライアント エンドポイントに追加されますが、 プロパティを使用することで、すべてのクライアント エンドポイントに SOAP 処理を追加するかどうかを制御できます。 また、この動作を直接特定のエンドポイントに追加したり、SOAP 処理をより細かく制御する必要がある場合に、エンドポイント レベルでこの動作を無効にしたりすることもできます。 + +> [!NOTE] +> 元の要求メッセージとは異なる MessageVersion を必要とするエンドポイントで SOAP 処理を無効にする場合は、送信先エンドポイントにメッセージを送信する前に必要な SOAP の変更を実行するカスタムのメカニズムを提供する必要があります。 + + 次の例では、**soapProcessingEnabled** プロパティを使用して、**SoapProcessingBehavior** が自動的にすべてのクライアント エンドポイントに追加されないようにしています。 + +```xml + + + + + + + + +``` + +```csharp +//create the default RoutingConfiguration +RoutingConfiguration rc = new RoutingConfiguration(); +rc.SoapProcessingEnabled = false; +``` + +### 動的構成 + 追加のクライアント エンドポイントを追加する場合、またはメッセージのルーティングに使用されるフィルターを変更する必要がある場合は、ルーティング サービスを介してメッセージを現在受信しているエンドポイントへのサービスを中断しないように、実行時に動的に構成を更新できる手段を用意する必要があります。 ホスト アプリケーションの構成ファイルまたはコードを変更するだけでは、不十分な場合があります。どちらの方法にもアプリケーションのリサイクルが必要で、現在転送中のメッセージが失われたり、サービスの再起動の処理中にダウンタイムが発生したりする可能性があるためです。 + + **RoutingConfiguration** は、プログラムによってのみ変更できます。 サービスの初期構成は構成ファイルで実行できますが、実行時に構成を変更する方法は、新しい **RoutingConfigution** を作成して、 サービス拡張が公開する メソッドにパラメーターとして渡すことのみです。 現在転送中のメッセージでは、以前の構成を使用してルーティングの処理が続けられますが、**ApplyConfiguration** への呼び出し後に受信されたメッセージでは、新しい構成が使用されます。 次の例では、ルーティング サービスのインスタンスを作成し、次に、構成を変更しています。 + +```csharp +RoutingConfiguration routingConfig = new RoutingConfiguration(); +routingConfig.RouteOnHeadersOnly = true; +routingConfig.FilterTable.Add(new MatchAllMessageFilter(), endpointList); +RoutingBehavior routing = new RoutingBehavior(routingConfig); +routerHost.Description.Behaviors.Add(routing); +routerHost.Open(); +// Construct a new RoutingConfiguration +RoutingConfiguration rc2 = new RoutingConfiguration(); +ServiceEndpoint clientEndpoint = new ServiceEndpoint(); +ServiceEndpoint clientEndpoint2 = new ServiceEndpoint(); +// Add filters to the FilterTable in the new configuration +rc2.FilterTable.add(new MatchAllMessageFilter(), + new List() { clientEndpoint }); +rc2.FilterTable.add(new MatchAllMessageFilter(), + new List() { clientEndpoint2 }); +rc2.RouteOnHeadersOnly = false; +// Apply the new configuration to the Routing Service hosted in +routerHost.routerHost.Extensions.Find().ApplyConfiguration(rc2); +``` + +> [!NOTE] +> この場合は、新しい構成を渡すことが、ルーティング サービスを更新する唯一の方法です。 現在の構成から選択した要素のみを変更することも、新しいエントリを現在の構成に追加することもできません。既存の構成に代わる新しい構成を作成して、これを渡す必要があります。 + +> [!NOTE] +> 以前の構成を使用して開かれているセッションでは、引き続き、以前の構成が使用されます。 新しい構成は、新しいセッションでのみ使用されます。 + +## エラー処理 + メッセージの送信時に が発生した場合は、エラー処理が実行されます。 これらの例外は、一般的に、 など、定義されているクライアント エンドポイントとの通信を試みている間に問題が発生したことを示します。 また、エラー処理コードは、 が発生すると、それをキャッチして再送信を試みます。この例外も、**CommunicationException** から派生したのではない、一般的な例外です。 + + 上記の例外のいずれかが発生した場合、ルーティング サービスは、バックアップ エンドポイントのリストにフェールオーバーします。 すべてのバックアップ エンドポイントで通信エラーが発生した場合、または、送信先サービス内でのエラーを示す例外がエンドポイントから返された場合は、ルーティング サービスがクライアント アプリケーションにエラーを返します。 + +> [!NOTE] +> エラー処理機能は、メッセージの送信時とチャネルの終了時に発生した例外をキャプチャーし、処理します。 エラー処理コードは、通信対象のアプリケーション エンドポイントによって作成された例外については、検出も処理も行いません。サービスからスローされた は、ルーティング サービスでは **FaultMessage** として扱われ、クライアントに戻されます。 +> +> ルーティング サービスによってメッセージを転送しようとしてエラーが発生した場合、通常、ルーティング サービスが行われない場合に受け取る ではなく、 をクライアント サイドで受け取る可能性があります。 入れ子になった例外を調べないと、このようにルーティング サービスによって例外がマスクされて完全な透過性が提供されない可能性があります。 + +### 例外のトレース + メッセージをリスト内のエンドポイントに送信できなかった場合、ルーティング サービスは、生成された例外データをトレースして、**Exceptions** という名前のメッセージ プロパティに例外の詳細をアタッチします。 これで、例外データを保存し、ユーザーがメッセージ インスペクターを利用して、プログラムでアクセスできるようにします。 例外データは、メッセージごとにディクショナリに格納されます。ディクショナリでは、エンドポイント名と、そのエンドポイントにメッセージを送信する際に発生した例外の詳細がマップされます。 + +### バックアップ エンドポイント + フィルター テーブル内の各フィルター エントリには、必要に応じて、バックアップ エンドポイントのリストを指定できます。バックアップ エンドポイントは、プライマリ エンドポイントへの送信時に通信エラーが発生した場合に使用されます。 このようなエラーが発生した場合、ルーティング サービスでは、このバックアップ エンドポイントのリスト内の最初のエントリに対して、メッセージの転送を試みます。 この送信でも通信エラーが発生した場合は、バックアップ リスト内の次のエンドポイントが試されます。 ルーティング サービスは、メッセージの受信が成功するか、すべてのエンドポイントが通信エラーを返すか、またはエンドポイントによって通信エラー以外のエラーが返されるまで、リスト内の各エンドポイントに対してメッセージの送信を続行します。 + + 次の例では、バックアップ リストを使用するようにルーティング サービスを構成しています。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + +``` + +```csharp +//create the endpoint list that contains the service endpoints we want to route to +List backupList = new List(); +//add the endpoints in the order that the Routing Service should contact them +//first add the endpoint that we know is down +//clearly, normally you wouldn't know that this endpoint was down by default +backupList.Add(fakeDestination); +//then add the real Destination endpoint +//the Routing Service attempts to send to this endpoint only if it +//encounters a TimeOutException or CommunicationException when sending +//to the previous endpoint in the list. +backupList.Add(realDestination); +//add the backupDestination endpoint +//the Routing Service attempts to send to this endpoint only if it +//encounters a TimeOutException or CommunicationsException when sending +//to the previous endpoints in the list +backupList.Add(backupDestination); +//create the default RoutingConfiguration option +RoutingConfiguration rc = new RoutingConfiguration(); +//add a MatchAll filter to the Routing Configuration's filter table +//map it to the list of endpoints defined above +//when a message matches this filter, it is sent to the endpoints in the list in order +//if an endpoint is down or does not respond (which the first endpoint won't +//since the client does not exist), the Routing Service automatically moves the message +//to the next endpoint in the list and try again. +rc.FilterTable.Add(new MatchAllMessageFilter(), backupList); +``` + +### サポートされるエラー パターン + 次の表に、バックアップ エンドポイント リストを使用できるパターンと、各パターンのエラー処理の詳細な説明を示します。 + +|パターン|セッション|トランザクション|受信コンテキスト|サポートされるバックアップ リスト|メモ| +|----------|-----------|--------------|--------------|-----------------------|--------| +|一方向||||はい|バックアップ エンドポイントでメッセージの再送を試みます。 このメッセージがマルチキャストされる場合は、エラーが発生したチャネルのメッセージのみが、バックアップ先に移動されます。| +|一方向||![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")||X|例外がスローされ、トランザクションがロールバックされます。| +|一方向|||![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|はい|バックアップ エンドポイントでメッセージの再送を試みます。 メッセージの受信が成功したら、すべての受信コンテキストを完了します。 どのエンドポイントでもメッセージを受信できなかった場合は、受信コンテキストを完了しません。

このメッセージがマルチキャストされる場合は、少なくとも 1 つのエンドポイント \(プライマリでもバックアップでも\) でメッセージが受信された場合にのみ、受信コンテキストが完了されます。 どのマルチキャスト パスのエンドポイントでもメッセージを受信できなかった場合は、受信コンテキストを完了しません。| +|一方向||![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|はい|前のトランザクションを中止し、新しいトランザクションを作成して、すべてのメッセージを再送します。 エラーが発生したメッセージは、バックアップ先に転送されます。

すべての転送が成功するトランザクションが作成されたら、受信コンテキストを完了して、転送をコミットします。| +|一方向|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|||はい|バックアップ エンドポイントでメッセージの再送を試みます。 マルチキャスト セッションの場合は、エラーが発生したセッションまたはセッションを終了できなかったセッションのメッセージのみが、バックアップ先に送信されます。| +|一方向|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")||X|例外がスローされ、トランザクションがロールバックされます。| +|一方向|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")||![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|はい|バックアップ エンドポイントでメッセージの再送を試みます。 エラーが発生せずに、すべてのメッセージ送信が完了したら、セッションが他にメッセージがないことを通知して、ルーティング サービスがすべての送信セッション チャネルを終了します。また、受信コンテキストが完了し、受信セッション チャネルが終了します。| +|一方向|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|はい|現在のトランザクションを中止し、新しいトランザクションを作成します。 セッションに含まれる、以前のメッセージをすべて再送します。 すべてのメッセージ送信が成功したトランザクションが作成され、セッションが他にメッセージがないことを通知すると、すべての送信セッション チャネルが終了します。また、そのトランザクションのすべての受信コンテキストが完了し、受信セッション チャネルが終了して、トランザクションがコミットされます。

セッションがマルチキャストされる場合は、エラーが発生していないメッセージが、前回と同じ送信先に再送され、エラーが発生したメッセージはバックアップ先に送信されます。| +|双方向||||はい|バックアップ先に送信します。 チャネルが応答メッセージを返した後に、元のクライアントに応答を返します。| +|双方向|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|||はい|チャネルのすべてのメッセージをバックアップ先に送信します。 チャネルが応答メッセージを返した後に、元のクライアントに応答を返します。| +|双方向||![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")||X|例外がスローされ、トランザクションがロールバックされます。| +|双方向|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")||X|例外がスローされ、トランザクションがロールバックされます。| +|二重||||X|セッションのない二重通信は、現在サポートされていません。| +|二重|![チェック マーク](../../../../docs/framework/wcf/feature-details/media/checkmark.gif "Checkmark")|||はい|バックアップ先に送信します。| + +## ホスト + ルーティング サービスは WCF サービスとして実装されるため、アプリケーション内に自己ホストされるか、IIS または WAS によってホストされる必要があります。 ルーティング サービスは、IIS、WAS、または Windows サービス アプリケーションにホストし、これらのホスト環境で提供される自動開始機能やライフ サイクル管理機能を利用できるようにすることをお勧めします。 + + 次の例では、アプリケーションでルーティング サービスをホストしています。 + +```csharp +using (ServiceHost serviceHost = + new ServiceHost(typeof(RoutingService))) + +``` + + ルーティング サービスを IIS または WAS 内でホストするには、サービス ファイル \(.svc\) を作成するか、サービスの構成ベースのアクティブ化を使用する必要があります。 サービス ファイルを使用する場合は、Service パラメーターを使用して を指定する必要があります。 次の例は、IIS または WAS によるルーティング サービスのホストに使用できるサンプルのサービス ファイルです。 + +``` +<%@ ServiceHost Language="C#" Debug="true" Service="System.ServiceModel.Routing.RoutingService, + System.ServiceModel.Routing, version=4.0.0.0, Culture=neutral, + PublicKeyToken=31bf3856ad364e35" %> + +``` + +## ルーティング サービスと偽装 + WCF ルーティング サービスは、メッセージの送受信両方の偽装で使用できます。 偽装に関する通常の Windows のすべての制約が適用されます。 独自のサービスを作成する際、偽装を使用するためにサービスまたはアカウントのアクセス許可を設定する必要があった場合は、ルーティング サービスで偽装を使用する場合と同じ手順を実行する必要があります。 詳細については、「[委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md)」を参照してください。 + + ルーティング サービスでの偽装には、ASP.NET 互換モードで ASP.NET の偽装を使用するか、偽装を許可するように構成された Windows 資格情報を使用する必要があります。 ASP.NET 互換モードの詳細については、「[WCF サービスと ASP.NET](../../../../docs/framework/wcf/feature-details/wcf-services-and-aspnet.md)」を参照してください。 + +> [!WARNING] +> WCF ルーティング サービスは、基本認証での偽装をサポートしません。 + + ルーティング サービスで ASP.NET の偽装を使用するには、サービス ホスティング環境で ASP.NET 互換モードを有効にします。 ルーティング サービスは既に ASP.NET 互換モードを許可するようにマークされているため、偽装が自動的に有効になります。 偽装は、ルーティング サービスとの ASP.NET 統合で唯一サポートされている用法です。 + + ルーティング サービスで Windows 資格情報の偽装を使用するには、資格情報とサービスの両方を構成する必要があります。 クライアント資格情報オブジェクト \( からアクセス可能な \) は、 プロパティを定義します。偽装を許可するには、このプロパティを設定する必要があります。 最後に、サービスで、 動作を構成して、`ImpersonateCallerForAllOperations` を `true` に設定する必要があります。 ルーティング サービスでは、偽装が有効になっているメッセージを転送するためのクライアントを作成するかどうかを、このフラグを使用して決定します。 + +## 参照 + [メッセージ フィルター](../../../../docs/framework/wcf/feature-details/message-filters.md) + [ルーティング コントラクト](../../../../docs/framework/wcf/feature-details/routing-contracts.md) + [フィルターの選択](../../../../docs/framework/wcf/feature-details/choosing-a-filter.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/routing-scenarios.md b/docs/framework/wcf/feature-details/routing-scenarios.md new file mode 100644 index 00000000000..57775fb2d19 --- /dev/null +++ b/docs/framework/wcf/feature-details/routing-scenarios.md @@ -0,0 +1,87 @@ +--- +title: "ルーティング シナリオ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ルーティング [WCF], シナリオ" +ms.assetid: ec22f308-665a-413e-9f94-7267cb665dab +caps.latest.revision: 7 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 7 +--- +# ルーティング シナリオ +ルーティング サービスは自由にカスタマイズできますが、まったく新しい構成を作成するときは、効率的なルーティング ロジックを設計するのが困難である場合があります。 しかし、ほとんどのルーティング サービスの構成で想定されている一般的なシナリオがいくつかあります。 これらのシナリオは、特定の構成に直接、適用できない場合もありますが、これらのシナリオに対応するルーティング サービスの構成方法を理解しておくことは、ルーティング サービスを理解する助けとなります。 + +## 一般的なシナリオ + ルーティング サービスの最も基本的な用法は、複数の送信先エンドポイントを集約してクライアント アプリケーションに公開するエンドポイントの数を減らし、その後にメッセージ フィルターを使用して、各メッセージを適切な送信先にルーティングすることです。 メッセージは、論理的または物理的な処理要件 \(特定のサービスで処理する必要がある種類のメッセージなど\)、または任意のビジネス ニーズ \(特定の送信元からのメッセージを優先的に処理するなど\) に基づいてルーティングされます。 次の表に、いくつかの一般的なシナリオと、それらが発生する場面の一覧を示します。 + +|シナリオ|使用する状況| +|----------|------------| +|サービスのバージョン管理|サービスの複数のバージョンをサポートする必要がある、または更新されたサービスを将来配置する可能性がある場合| +|サービス データのパーティション分割|複数のホストにわたってサービスをパーティション分割する必要がある場合| +|動的な更新|変化するサービス展開に対処するために、実行時のルーティング ロジックを動的に再構成する必要がある場合| +|マルチキャスト|1 つのメッセージを複数のエンドポイントに送信する必要がある場合| +|プロトコル ブリッジ|1 つのトランスポート プロトコルでメッセージを受信し、その送信先エンドポイントで別のプロトコルが使用されている場合| +|エラー処理|ネットワーク障害と通信障害に対する回復力を提供する必要がある場合| + +> [!NOTE] +> ここに示したシナリオの多くは、特定のビジネス ニーズや処理要件に特化したものですが、実行時のルーティング ロジックの変更や、一時的なネットワーク障害および通信障害からの回復を可能にする、動的な更新のサポートの計画およびエラー処理の利用は、多くの場合、ベスト プラクティスと見なされます。 + +### サービスのバージョン管理 + 新しいバージョンのサービスを導入するときは、多くの場合、すべてのクライアントが新しいサービスに移行するまで、以前のバージョンを保持することが必要になります。 これは、サービスが完了までに数日、数週間、または数か月にさえ及ぶ長期の処理になる場合に特に重要です。 この場合、通常は、以前のバージョンのサービスに対して元のエンドポイントを維持したままで、新しいサービスに対して新しいエンドポイント アドレスを実装する必要があります。 + + ルーティング サービスを使用することで、クライアント アプリケーションからメッセージを受信するための 1 つのエンドポイントを公開し、メッセージの内容に基づいて、各メッセージを適切なバージョンのサービスにルーティングできます。 最も基本的な実装には、メッセージを処理するサービスのバージョンを示すカスタム ヘッダーをメッセージに追加することが含まれます。 ルーティング サービスでは、各メッセージにカスタム ヘッダーがあるかどうかを確認し、メッセージを適切な送信先エンドポイントにルーティングするために XPathMessageFilter を使用できます。 + + サービスのバージョン管理構成を作成するために使用する手順については、「[サービスのバージョンを管理する方法](../../../../docs/framework/wcf/feature-details/how-to-service-versioning.md)」を参照してください。 XPathMessageFilter を使用し、カスタム ヘッダーに基づいてメッセージをルーティングする方法の例については、「[高度なフィルター](../../../../docs/framework/wcf/samples/advanced-filters.md)」のサンプルを参照してください。 + +### サービス データのパーティション分割 + 分散環境を設計するときは、多くの場合、複数のコンピューターに処理負荷を分散することが望ましいとされています。これは、可用性を高め、個々のコンピューターの処理負荷を軽減し、メッセージの特定のサブセットに対して専用のリソースを提供するためです。 ルーティング サービスは負荷分散専用のソリューションに代わるものではありませんが、このサービスが内容に基づくルーティングを実施する機能は、特定の送信先に類似のメッセージをルーティングする方法として使用できます。 この例として、その他のクライアントから受信するメッセージとは別に、特定のクライアントからのメッセージを処理する必要がある場合が挙げられます。 + + サービス データのパーティション分割構成を作成するために使用する手順については、「[サービス データのパーティションを分割する方法](../../../../docs/framework/wcf/feature-details/how-to-service-data-partitioning.md)」を参照してください。 フィルターを使用し、URL およびカスタム ヘッダーに基づいてデータをパーティション分割する方法の例については、「[高度なフィルター](../../../../docs/framework/wcf/samples/advanced-filters.md)」のサンプルを参照してください。 + +### 動的ルーティング + 変化するビジネス ニーズを満たすために、ルーティング構成を変更した方がよい場合がよくあります。たとえば、新しいバージョンのサービスに対してルートを追加する、ルーティング条件を変更する、または、特定のメッセージに対してフィルターがルーティング先とする送信先エンドポイントを変更することが考えられます。 ルーティング サービスでは、 を使用して、新しい RoutingConfiguration を実行時に提供できるため、これが実現されます。 新しい構成は直ちに有効になりますが、ルーティング サービスで処理される任意の新しいセッションのみに適用されます。 + + 動的ルーティングの実装に使用する手順については、「[動的な更新を行う方法](../../../../docs/framework/wcf/feature-details/how-to-dynamic-update.md)」を参照してください。 動的ルーティングの使用方法の例については、「[動的再構成](../../../../docs/framework/wcf/samples/dynamic-reconfiguration.md)」のサンプルを参照してください。 + +### マルチキャスト + メッセージをルーティングするときに、通常は、各メッセージを 1 つの特定の送信先エンドポイントにルーティングします。 しかし、メッセージのコピーを複数の送信先エンドポイントにルーティングする必要がある場合もあります。 マルチキャスト ルーティングを実行するには、次の条件を満たしている必要があります。 + +- 要求\/応答では、要求への応答時にクライアント アプリケーションが受信できるのが 1 つの応答のみであることが要求されるため、チャネル形状が要求\/応答でない \(一方向または二重のどちらでもよい\) ことが必要である。 + +- 複数のフィルターは、メッセージの評価時に **true** を返す必要がある。 + + これらの条件を満たす場合、true を返すフィルターと関連付けられた各送信先エンドポイントは、メッセージのコピーを受信します。 + +### プロトコル ブリッジ + メッセージを異種の SOAP プロトコル間でルーティングするときに、ルーティング サービスは、WCF API を使用して、1 つのプロトコルから他のプロトコルにメッセージを変換します。 この処理は、ルーティング サービスが公開するサービス エンドポイントで、メッセージのルーティング先のクライアント エンドポイントとは異なるプロトコルが使用されると自動的に実行されます。 使用されているプロトコルが標準ではない場合は、この動作を無効にすることができますが、ブリッジのための独自のコードを提供する必要があります。 + + . ルーティング サービスを使用してプロトコル間でメッセージを変換する方法の例については、「[ブリッジとエラー処理](../../../../docs/framework/wcf/samples/bridging-and-error-handling.md)」のサンプルを参照してください。 + +### エラー処理 + 分散環境では、一時的なネットワークまたは通信の障害が発生することは少なくありません。 ルーティング サービスなどの中継局サービスがない場合は、このような障害処理の負担がクライアント アプリケーションにかかることになります。 ネットワークまたは通信の障害発生時に再試行するための特定のロジックと、代替の場所に関する情報がクライアント アプリケーションに含まれていない場合は、メッセージが送信先サービスで正常に処理されるまでに、ユーザーがメッセージを複数回送信することが必要になる可能性があります。 これは、信頼性が低いと見なされる可能性があるため、アプリケーションの顧客満足度の低下につながります。 + + ルーティング サービスは、ネットワークまたは通信関連の障害発生時のメッセージに対して堅牢なエラー処理機能を提供することで、このシナリオを対処しようとします。 可能な送信先エンドポイントのリストを作成し、このリストを各メッセージ フィルターと関連付けることで、設定可能な送信先が 1 つのみであるために発生する単一障害点を排除します。 障害が発生した場合、ルーティング サービスは、メッセージが配信されるか、通信以外の障害が発生するか、またはすべてのエンドポイントに対する試行が終わるまで、次のエンドポイントにメッセージを配信しようとします。 + + エラー処理の構成に使用する手順については、「[エラーを処理する方法](../../../../docs/framework/wcf/feature-details/how-to-error-handling.md)」を参照してください。 エラー処理の実装例については、「[ブリッジとエラー処理](../../../../docs/framework/wcf/samples/bridging-and-error-handling.md) および [高度なエラー処理](../../../../docs/framework/wcf/samples/advanced-error-handling.md)」のサンプルを参照してください。 + +### このセクションの内容 + [サービスのバージョンを管理する方法](../../../../docs/framework/wcf/feature-details/how-to-service-versioning.md) + + [サービス データのパーティションを分割する方法](../../../../docs/framework/wcf/feature-details/how-to-service-data-partitioning.md) + + [動的な更新を行う方法](../../../../docs/framework/wcf/feature-details/how-to-dynamic-update.md) + + [エラーを処理する方法](../../../../docs/framework/wcf/feature-details/how-to-error-handling.md) + +## 参照 + [ルーティングの概要](../../../../docs/framework/wcf/feature-details/routing-introduction.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/routing-service.md b/docs/framework/wcf/feature-details/routing-service.md new file mode 100644 index 00000000000..0b89ee8c429 --- /dev/null +++ b/docs/framework/wcf/feature-details/routing-service.md @@ -0,0 +1,118 @@ +--- +title: "ルーティング サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ca7c216a-5141-4132-8193-102c181d2eba +caps.latest.revision: 13 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 13 +--- +# ルーティング サービス +ルーティング サービスは、メッセージ ルーターとして機能する、汎用の SOAP 中継局です。 ルーティング サービスの主要な機能は、メッセージのコンテンツに基づいてメッセージをルーティングする機能です。これにより、メッセージのヘッダーまたはメッセージ本文内に含まれる値に基づいて、メッセージをクライアント エンドポイントに転送できます。 + + は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスとして 名前空間で実装されます。 ルーティング サービスは、メッセージを受信し、その内容に基づいて各メッセージを 1 つ以上のクライアント エンドポイントにルーティングする、1 つ以上のサービス エンドポイントを公開します。 このサービスには、次の機能が用意されています。 + +- コンテンツ ベースのルーティング + + - サービスの集計 + + - サービスのバージョン管理 + + - 優先度ルーティング + + - 動的構成 + +- プロトコル ブリッジ + +- SOAP 処理 + +- 高度なエラー処理 + +- バックアップ エンドポイント + + 上記の機能の 1 つ以上を実現する中間サービスを作成することもできますが、このような実装では、特定のシナリオまたはソリューションに制限され、新しいアプリケーションにすぐに適用できません。 + + ルーティング サービスは、動的に構成できるプラグ可能な汎用の SOAP 中継局を提供します。この中継局は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービスおよびチャネル モデルと互換性があり、SOAP ベースのメッセージのコンテンツ ベースのルーティングを実行できます。 + +> [!NOTE] +> ルーティング サービスは、現在 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] REST サービスのルーティングをサポートしていません。 REST 呼び出しをルーティングする場合は、 または[アプリケーション要求ルーティング処理](http://go.microsoft.com/fwlink/?LinkId=164589) \(http:\/\/go.microsoft.com\/fwlink\/?LinkId\=164589\) を使用することを検討してください。 + +## コンテンツ ベースのルーティング + コンテンツ ベースのルーティングは、メッセージに含まれている 1 つ以上の値に基づいて、メッセージをルーティングする機能です。 ルーティング サービスでは、各メッセージを確認し、メッセージの内容と開発者が作成したルーティング ロジックに基づいて、送信先エンドポイントにメッセージをルーティングします。 コンテンツ ベースのルーティングは、サービス集計、サービスのバージョン管理、および優先度ルーティングの基礎になります。 + + コンテンツ ベースのルーティングを実装するために、ルーティング サービスは 実装に依存しています。これらの実装は、ルーティングするメッセージ内の特定の値を照合するために使用されます。 **MessageFilter** が 1 つのメッセージと一致すると、そのメッセージは、**MessageFilter** と関連付けられている送信先エンドポイントにルーティングされます。 メッセージ フィルターはフィルター テーブル \(\) にグループ化されて、複雑なルーティング ロジックを構築します。 たとえば、フィルター テーブルに 5 つの相互に排他的なメッセージ フィルターが含まれ、それによって、5 つの送信先エンドポイントのうちの 1 つだけにメッセージがルーティングされる場合があります。 + + ルーティング サービスを使用すると、コンテンツ ベースのルーティングの実行に使用するロジックを構成できるほか、ルーティング ロジックを実行時に動的に更新できます。 + + メッセージ フィルターをフィルター テーブルにグループ化することで、ルーティング ロジックを構築し、次のような複数のルーティング シナリオを処理できます。 + +- サービスの集計 + +- サービスのバージョン管理 + +- 優先度ルーティング + +- 動的構成 + + メッセージ フィルターとフィルター テーブルの詳細については、「[ルーティングの概要](../../../../docs/framework/wcf/feature-details/routing-introduction.md)」および「[メッセージ フィルター](../../../../docs/framework/wcf/feature-details/message-filters.md)」を参照してください。 + +### サービスの集計 + コンテンツ ベースのルーティングを使用することで、外部のクライアント アプリケーションからメッセージを受信する 1 つのエンドポイントを公開し、メッセージ内の値に基づいて、各メッセージを適切な内部エンドポイントにルーティングできます。 これは、さまざまなバックエンド アプリケーションに対して単一のエンドポイントを提供する場合だけでなく、アプリケーションをさまざまなサービスにファクタリングしているときに単一のアプリケーション エンドポイントを顧客に提供する場合にも便利です。 + +### サービスのバージョン管理 + ソリューションを新しいバージョンに移行するときに、既存の顧客に対応するために、古いバージョンを同時に維持する必要がある場合があります。 このような場合の多くでは、新しいバージョンに接続するクライアントが、ソリューションとの通信時に別のアドレスを使用することが必要になります。 ルーティング サービスを使用すると、メッセージに含まれるバージョン固有の情報に基づいて、適切なソリューションにメッセージをルーティングすることで、ソリューションの両方のバージョンに対応する単一のサービス エンドポイントを公開できます。 実装の例については、「[サービスのバージョンを管理する方法](../../../../docs/framework/wcf/feature-details/how-to-service-versioning.md)」を参照してください。 + +### 優先度ルーティング + サービスを複数のクライアントに提供するときに、パートナーとサービス レベル アグリーメント \(SLA\) を結び、それらのパートナーのデータをすべて、その他のクライアントのデータとは別に処理するように規定している場合があります。 メッセージに含まれる顧客固有の情報を検索するフィルターを使用すると、特定のパートナーから送られたメッセージを、各パートナーの SLA 要件に合わせて作成されたエンドポイントに容易にルーティングできます。 + +## 動的構成 + サービスを中断させずにメッセージを処理する必要があるミッション クリティカルなシステムをサポートするには、システム内のコンポーネントの構成を実行時に変更できることが非常に重要です。 このニーズを満たすために、ルーティング サービスでは 実装が提供されています。これは、実行時にルーティング サービス構成を動的に更新できるようにする です。 + + ルーティング サービスの動的構成の詳細については、「[ルーティングの概要](../../../../docs/framework/wcf/feature-details/routing-introduction.md)」を参照してください。 + +## プロトコル ブリッジ + 中継局シナリオの課題の 1 つは、内部エンドポイントとメッセージの送信先エンドポイントのトランスポートまたは SOAP バージョンの要件が異なる場合があることです。 このシナリオをサポートするために、ルーティング サービスでは、SOAP メッセージを送信先エンドポイントが必要とする に合わせて処理するなど、プロトコル間をブリッジできます。 これを利用して、内部の通信と外部の通信に別々のプロトコルを使用することができます。 + + 異なるトランスポートを持つエンドポイント間でのメッセージのルーティングをサポートするために、ルーティング サービスでは、サービスが複数の異なるプロトコルをブリッジできるようにする、システム指定のバインディングを使用します。 この処理は、ルーティング サービスが公開するサービス エンドポイントで、メッセージのルーティング先のクライアント エンドポイントとは異なるプロトコルが使用されると、自動的に実行されます。 + +## SOAP 処理 + 一般的なルーティング要件は、異なる SOAP 要件を持つエンドポイント間でメッセージをルーティングできることです。 この要件を満たすために、ルーティング サービスでは が提供されます。これにより、送信先エンドポイントにメッセージがルーティングされる前に、送信先エンドポイントの要件を満たす新しい **MessageVersion** が自動的に作成されます。 この動作では、要求元のクライアント アプリケーションに応答メッセージを返す前に、その応答メッセージ用の新しい **MessageVersion** も作成されます。これによって、応答の **MessageVersion** が、元の要求のものと一致するようになります。 + + SOAP 処理の詳細については、「[ルーティングの概要](../../../../docs/framework/wcf/feature-details/routing-introduction.md)」を参照してください。 + +## エラー処理 + システムを構成する分散サービスがネットワーク通信に依存する場合は、システム内の通信が、一時的なネットワーク障害に対応可能である必要があります。 ルーティング サービスはエラー処理を実装しており、これによって、サービスの停止を招く可能性がある多くの通信障害を処理できます。 + + ルーティング サービスがメッセージを送信している間に が発生した場合は、エラー処理が実行されます。 これらの例外は、一般的に、 など、定義されているクライアント エンドポイントとの通信を試みている間に問題が発生したことを示します。 また、エラー処理コードは、**TimeoutException** が発生すると、それをキャッチして再送信を試みます。この例外も、**CommunicationException** からは派生していない、一般的な例外です。 + + エラー処理[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ルーティングの概要](../../../../docs/framework/wcf/feature-details/routing-introduction.md)」を参照してください。 + +## バックアップ エンドポイント + フィルター テーブル内の各フィルター定義と関連付けられる送信先クライアント エンドポイントに加えて、転送エラーが発生した場合にメッセージをルーティングする、バックアップ エンドポイントのリストも作成できます。 エラーが発生した場合に、フィルター エントリのバックアップ リストが定義されていると、ルーティング サービスにより、そのリストに定義されている最初のエンドポイントにメッセージが送信されます。 この送信に失敗した場合は、送信に成功する、送信失敗に関連しないエラーが返される、またはバックアップ リスト内のすべてのエンドポイントで送信エラーが返されるまで、次のエンドポイントへの送信が試みられます。 + + バックアップ エンドポイント[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ルーティングの概要](../../../../docs/framework/wcf/feature-details/routing-introduction.md)」および「[メッセージ フィルター](../../../../docs/framework/wcf/feature-details/message-filters.md)」を参照してください。 + +## ストリーム + バインディングがストリーミングをサポートするように設定すると、ルーティング サービスはメッセージを正常にストリーミングできます。 ただし、メッセージのバッファーが必要となる可能性のある条件がいくつかあります。 + +- マルチキャスト \(追加のメッセージ コピーを作成するためのバッファー\) + +- フェールオーバー \(メッセージがバックアップに送信される必要がある場合のバッファー\) + +- System.ServiceModel.Routing.RoutingConfiguration.RouteOnHeadersOnly は false です \(フィルターが本文を検査できるように MessageBuffer と共に MessageFilterTable を示すバッファー\) + +- 動的構成 + +## 参照 + [ルーティングの概要](../../../../docs/framework/wcf/feature-details/routing-introduction.md) + [ルーティング コントラクト](../../../../docs/framework/wcf/feature-details/routing-contracts.md) + [メッセージ フィルター](../../../../docs/framework/wcf/feature-details/message-filters.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/routing.md b/docs/framework/wcf/feature-details/routing.md new file mode 100644 index 00000000000..cd156c8de9e --- /dev/null +++ b/docs/framework/wcf/feature-details/routing.md @@ -0,0 +1,43 @@ +--- +title: "ルーティング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ルーティング [WCF]" + - "WCF [WCF], ルーティング" + - "Windows Communication Foundation [WCF], ルーティング" +ms.assetid: bd56516c-420d-4c4e-97f9-f72d28d149a9 +caps.latest.revision: 7 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 7 +--- +# ルーティング +このセクションのトピックでは、ルーティング サービスについて説明します。 ルーティング サービスは、構成可能な汎用の SOAP 中継局です。ルーティング サービスを使用すると、コンテンツ ベースのルーティングの構成、プロトコル ブリッジの設定、通信エラーの処理、および実行時のルーティング ロジックの動的な更新が可能となります。 + +## このセクションの内容 + [ルーティング サービス](../../../../docs/framework/wcf/feature-details/routing-service.md) + ルーティング サービスの機能について概説します。 + + [Routing Service](http://msdn.microsoft.com/ja-jp/5ac8718c-bcef-456f-bfd5-1e60a30d6eaa) + ルーティング サービスの機能について説明します。 + + [ルーティングの概要](../../../../docs/framework/wcf/feature-details/routing-introduction.md) + ルーティング サービスの機能について説明します。 + + [ルーティング コントラクト](../../../../docs/framework/wcf/feature-details/routing-contracts.md) + ルーティング サービスが処理できるメッセージ パターンについて説明します。 + + [メッセージ フィルター](../../../../docs/framework/wcf/feature-details/message-filters.md) + メッセージ フィルターのコンテンツ ベースのルーティングへの使用方法を説明します。 + + [ルーティング シナリオ](../../../../docs/framework/wcf/feature-details/routing-scenarios.md) + 共通のルーティング シナリオについて説明します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/saml-tokens-and-claims.md b/docs/framework/wcf/feature-details/saml-tokens-and-claims.md new file mode 100644 index 00000000000..c2f08d247c5 --- /dev/null +++ b/docs/framework/wcf/feature-details/saml-tokens-and-claims.md @@ -0,0 +1,59 @@ +--- +title: "SAML トークンとクレーム | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フェデレーション" + - "発行済みトークン" + - "SAML トークン" + - "WCF, フェデレーション" +ms.assetid: 930b6e34-9eab-4e95-826c-4e06659bb977 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# SAML トークンとクレーム +SAML \(Security Assertion Markup Language\) *トークン*は、クレームの XML 表現です。既定では、フェデレーション セキュリティ シナリオで [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] が使用する SAML トークンは、*"発行済みトークン"* です。 + + SAML トークンは、ステートメント \(特定のエンティティによって他のエンティティに関して作成されるクレームのセット\) を伝達します。たとえば、フェデレーション セキュリティ シナリオでは、ステートメントがセキュリティ トークン サービスによって、システム内の特定のユーザーに関して作成されます。セキュリティ トークン サービスは、トークンに含まれるステートメントの信憑性を示すために SAML トークンに署名します。また、SAML トークンは、SAML トークンのユーザーが証明として提示する暗号化キー マテリアルに関連付けられています。これが証拠となり、証明書利用者は、SAML トークンが実際にそのユーザーに対して発行されたことを確認できます。一般的なシナリオでの例を次に示します。 + +1. クライアントは、セキュリティ トークン サービスから SAML トークンを要求し、Windows 資格情報を使用して、そのセキュリティ トークン サービスに対して認証を行います。 + +2. セキュリティ トークン サービスは、SAML トークンをクライアントに発行します。SAML トークンは、セキュリティ トークン サービスに関連付けられた証明書を使用して署名され、ターゲット サービス用に暗号化された証明キーを含んでいます。 + +3. クライアントは、*証明キー*のコピーも受け取ります。クライアントは、発行された SAML トークンをアプリケーション サービス \(*証明書利用者*\) に提示し、証明キーを使用してメッセージに署名します。 + +4. SAML トークンの署名は、そのトークンがセキュリティ トークン サービスによって発行されたことを証明書利用者に示します。また、証明キーを使用して作成されたメッセージ署名は、トークンがそのクライアントに対して発行されたことを示します。 + +## クレームから SamlAttributes + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、SAML トークン内のステートメントは オブジェクトとしてモデル化されています。 オブジェクトが プロパティを持ち、 プロパティが 型である場合、このオブジェクトは オブジェクトから直接設定できます。次に例を示します。 + + [!code-csharp[c_CreateSTS#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_creatests/cs/source.cs#8)] + [!code-vb[c_CreateSTS#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_creatests/vb/source.vb#8)] + +> [!NOTE] +> セキュリティ トークン サービスによって発行されたか、または認証の一部としてクライアントからサービスに提示されたときに、SAML トークンがメッセージ内にシリアル化される場合、メッセージの最大クォータ サイズが、SAML トークンおよびメッセージの他の部分を格納できるだけの大きさである必要があります。通常は、既定のメッセージ クォータ サイズで十分です。ただし、何百ものクレームを含んでいるために SAML トークンのサイズが大きい場合には、シリアル化されたトークンを格納できるように、クォータを増やす必要が生じることがあります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][セキュリティに関するデータの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-for-data.md). + +## SamlAttributes からクレーム + SAML トークンがメッセージで受信されると、SAML トークン内のさまざまなステートメントは、 オブジェクトに変換され、 に配置されます。各 SAML ステートメントのクレームは プロパティによって返され、これを調べることによってユーザーの認証と承認を行うかどうかを決定できます。 + +## 参照 + + + + [フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md) + [方法 : フェデレーション クライアントを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-federated-client.md) + [方法 : フェデレーション サービスで資格情報を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md) + [ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md) + [クレームとトークン](../../../../docs/framework/wcf/feature-details/claims-and-tokens.md) + [クレームの作成とリソース値](../../../../docs/framework/wcf/feature-details/claim-creation-and-resource-values.md) + [方法 : カスタム クレームを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-custom-claim.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/schema-import-and-export.md b/docs/framework/wcf/feature-details/schema-import-and-export.md new file mode 100644 index 00000000000..133bc4bbf9f --- /dev/null +++ b/docs/framework/wcf/feature-details/schema-import-and-export.md @@ -0,0 +1,71 @@ +--- +title: "スキーマのインポートとエクスポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF, スキーマのインポートとエクスポート" + - "XsdDataContractExporter クラス" + - "XsdDataContractImporter クラス" +ms.assetid: 0da32b50-ccd9-463a-844c-7fe803d3bf44 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# スキーマのインポートとエクスポート +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)]新しいシリアル化エンジンが含まれています、 します。 `DataContractSerializer` は、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] オブジェクトと XML を双方向で変換します。 このシリアライザー自体の他に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、関連するスキーマ インポート機構とスキーマ エクスポート機構が用意されています。 *スキーマ*シリアライザーが生成するか、デシリアライザーがアクセスできる、または XML の形状の正式かつ正確であり、コンピューターが認識できる説明を示します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、多数のサードパーティ プラットフォームとの広範な相互運用性を持つ W3C (World Wide Web Consortium) XML スキーマ定義言語 (XSD: XML Schema Definition Language) をスキーマ表現として使用します。 + + スキーマ インポート コンポーネント、XSD スキーマ ドキュメントを取得、および生成[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)]クラス (通常、データ コントラクト クラス) をシリアル化された形式が特定のスキーマに対応するようにします。 + + たとえば、次のスキーマ フラグメントがあるとします。 + + [!code-csharp[c_SchemaImportExport#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_schemaimportexport/cs/source.cs#8)] + [!code-vb[c_SchemaImportExport#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_schemaimportexport/vb/source.vb#8)] + + これは、読みやすいように、やや簡素化された次の型を生成します。 + + [!code-csharp[c_SchemaImportExport#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_schemaimportexport/cs/source.cs#1)] + [!code-vb[c_SchemaImportExport#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_schemaimportexport/vb/source.vb#1)] + + 生成された型がいくつかのデータ コントラクトのベスト プラクティスを準拠していることに注意してください (で見つかった[ベスト プラクティス: データ コントラクトのバージョン管理](../../../../docs/framework/wcf/best-practices-data-contract-versioning.md))。 + +- 型が実装、 インターフェイスです。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][上位互換性のあるデータ コントラクト](../../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md)します。 + +- データ メンバーは、プライベート フィールドをラップするパブリック プロパティとして実装されます。 + +- クラスは部分クラスであり、生成されたコードを変更せずに追加を行うことができます。 + + 逆を行うことができます-によってシリアル化できる型を受け取る、 `DataContractSerializer` XSD スキーマ ドキュメントを生成します。 + +## 忠実性は保証されない + スキーマや型のラウンド トリップでの完全な忠実性は保証されません (A*ラウンド トリップ*クラスのセットを作成し、もう一度スキーマを作成する結果をエクスポートするスキーマをインポートすることを意味します)。同じスキーマが返されない場合があります。 また、これとは逆のプロセスでも忠実性は保証されません (スキーマを生成する型をエクスポートしてから、型をインポートし直す場合です。 この場合も、同じ型が返されない可能性があります)。 + +## サポートされている型 + データ コントラクト モデルは、WC3 スキーマの限られたサブセットしかサポートしません。 このサブセットに準拠しないスキーマを使用すると、インポート プロセスで例外が発生します。 たとえば、データ コントラクトのデータ メンバーを XML 属性としてシリアル化するように指定することはできません。 したがって、XML 属性を使用する必要があるスキーマはサポートされず、適切な XML 投影を持つデータ コントラクトを生成できないため、インポート時に例外が発生します。 + + たとえば、次のスキーマ フラグメントは、既定のインポート設定を使用してインポートすることはできません。 + + [!code[c_SchemaImportExport#9](../../../../samples/snippets/common/VS_Snippets_CFX/c_schemaimportexport/common/source.config#9)] + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][データ コントラクト スキーマ リファレンス](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)します。 スキーマがデータ コントラクト ルールに準拠していない場合は、別のシリアル化エンジンを使用します。 たとえば、 独自のスキーマ インポート機構を使用します。 また、サポートされるスキーマの範囲を拡張する特別なインポート モードもあります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]生成に関するセクション型[クラスを生成するには、スキーマのインポート](../../../../docs/framework/wcf/feature-details/importing-schema-to-generate-classes.md)します。 + + `XsdDataContractExporter` は、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] によってシリアル化できるすべての `DataContractSerializer` 型をサポートします。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][データ コントラクト シリアライザーでサポートされる型](../../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md)します。 使用して作成されたそのスキーマ、`XsdDataContractExporter`通常有効なデータを`XsdDataContractImporter`使用できます (しない限り、 スキーマをカスタマイズするために使用)。 + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)]使用して、 を参照してください[クラスを生成するには、スキーマのインポート](../../../../docs/framework/wcf/feature-details/importing-schema-to-generate-classes.md)します。 + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)]使用して、 を参照してください[クラスからのスキーマのエクスポート](../../../../docs/framework/wcf/feature-details/exporting-schemas-from-classes.md)します。 + +## 関連項目 + + + + [クラスを生成するスキーマをインポートします。](../../../../docs/framework/wcf/feature-details/importing-schema-to-generate-classes.md) + [クラスからのスキーマのエクスポート](../../../../docs/framework/wcf/feature-details/exporting-schemas-from-classes.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/secure-conversations-and-secure-sessions.md b/docs/framework/wcf/feature-details/secure-conversations-and-secure-sessions.md new file mode 100644 index 00000000000..a55bc08aab7 --- /dev/null +++ b/docs/framework/wcf/feature-details/secure-conversations-and-secure-sessions.md @@ -0,0 +1,28 @@ +--- +title: "セキュリティ保護されたメッセージ交換とセッション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 48cb104a-532d-40ae-aa57-769dae103fda +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 13 +--- +# セキュリティ保護されたメッセージ交換とセッション +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の特徴の 1 つは、相互に認証を行い暗号化とデジタル署名のプロセスについて同意する、2 つのエンドポイント間でのセキュリティ保護されたセッションを確立する機能にあります。たとえば、サービス エンドポイントは、クライアント エンドポイントに対して認証のために X.509 証明書に基づいたセキュリティ トークンを送信するよう要求する場合があります。クライアントの認証が終わると、サービス エンドポイントはセキュリティ コンテキスト トークン \(SCT: Security Context Token\) をクライアントに返します。このセッションにおける後続のすべてのメッセージは、このセキュリティ トークンを使用してセキュリティ保護されます。セキュリティで保護されたセッションが確立されると、SCT には対称キーが含まれるため、2 つのエンドポイント間で交換される一連のメッセージの効率が向上します。X.509 証明書の基盤となる非対称キーでは、デジタル署名の生成やデータの暗号化を行う場合に、対称キーに比べて非常に大きな計算能力が必要になります。 + + [WS\-SecurityPolicy](http://go.microsoft.com/fwlink/?LinkId=99817) 標準の 6.2.7 節で定義されているブートストラップ ポリシーには、チャネルをセキュリティで保護し、クライアントを RST\/SCT および RSTR\/SCT 交換よりも前に認証するために使用されるメッセージ セキュリティ アサーションが含まれます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の標準バインディングの中には、セキュリティで保護されたメッセージ交換を使用するかどうかを制御する `Security.Message.EstablishSecurityContext` プロパティを持つものがあります。カスタム バインディングを使用する場合、ブートストラップは、構成ファイル内の [\](../../../../docs/framework/configure-apps/file-schema/wcf/secureconversationbootstrap.md)、またはコードからの の呼び出しを介して、セキュリティ バインド要素を入れ子構造にすることによって示されます。 + + セッション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[セッションの使用](../../../../docs/framework/wcf/using-sessions.md)」を参照してください。 + +## 参照 + [セッション、インスタンス化、および同時実行](../../../../docs/framework/wcf/feature-details/sessions-instancing-and-concurrency.md) + [方法 : セッションを必要とするサービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-that-requires-sessions.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/secure-sessions.md b/docs/framework/wcf/feature-details/secure-sessions.md new file mode 100644 index 00000000000..02633174a37 --- /dev/null +++ b/docs/framework/wcf/feature-details/secure-sessions.md @@ -0,0 +1,47 @@ +--- +title: "セキュリティで保護されたセッション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7b50602f-d7b5-42e9-8e92-1f0413df0d8b +caps.latest.revision: 14 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 14 +--- +# セキュリティで保護されたセッション +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の機能の 1 つに、送信された順序でメッセージが受信されることを保証する "信頼できるセッション" があります。このセクションの各トピックでは、信頼できるセッションを作成する際に考慮する必要のあるセキュリティへの影響について説明します。信頼できるセッション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[セッションの使用](../../../../docs/framework/wcf/using-sessions.md)」を参照してください。 + +> [!NOTE] +> Windows XP で偽装が必要な場合は、ステートフルなセキュリティ コンテキスト トークン \(SCT: Security Context Token\) を使用しない、セキュリティで保護されたセッションを使用します。ステートフル SCT が偽装と共に使用されると、 がスローされます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][サポートされていないシナリオ](../../../../docs/framework/wcf/feature-details/unsupported-scenarios.md). + +## このセクションの内容 + +||| +|-|-| +|[セキュリティ保護されたメッセージ交換とセッション](../../../../docs/framework/wcf/feature-details/secure-conversations-and-secure-sessions.md)|セキュリティで保護されたメッセージ交換とセキュリティで保護されたセッションは、同じ意味で使用されます。ここでは、セキュリティで保護されたメッセージ交換のしくみ、およびこのパターンを使用する状況と理由について説明します。| +|[方法 : セキュリティで保護されたセッションを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-secure-session.md)|セキュリティで保護されたセッションの基本的な作成手順を説明するチュートリアルです。| +|[方法 : セキュリティで保護されたセッションに対しセキュリティ コンテキスト トークンを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-security-context-token-for-a-secure-session.md)|クライアントの状態とセッションを保持する Web ファームを作成する手順について説明します。| +|[セキュリティで保護されたセッションに関するセキュリティの検討](../../../../docs/framework/wcf/feature-details/security-considerations-for-secure-sessions.md)|セキュリティで保護されたセッションに関する特別な考慮事項について説明します。| + +## 関連項目 + + + + +## 関連項目 + [セッション、インスタンス化、および同時実行](../../../../docs/framework/wcf/feature-details/sessions-instancing-and-concurrency.md) + + [サービスの設計と実装](../../../../docs/framework/wcf/designing-and-implementing-services.md) + +## 参照 + [方法 : メッセージ リプレイ検出を有効にする](../../../../docs/framework/wcf/feature-details/how-to-enable-message-replay-detection.md) + [リプレイ攻撃](../../../../docs/framework/wcf/feature-details/replay-attacks.md) + [方法 : セッションを必要とするサービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-that-requires-sessions.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/securing-messages-using-message-security.md b/docs/framework/wcf/feature-details/securing-messages-using-message-security.md new file mode 100644 index 00000000000..7aeeef328f9 --- /dev/null +++ b/docs/framework/wcf/feature-details/securing-messages-using-message-security.md @@ -0,0 +1,77 @@ +--- +title: "メッセージ セキュリティを使用したメッセージのセキュリティ保護 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a17ebe67-836b-4c52-9a81-2c3d58e225ee +caps.latest.revision: 16 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 16 +--- +# メッセージ セキュリティを使用したメッセージのセキュリティ保護 +ここでは、 を使用した場合の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージ セキュリティについて説明します。 + +> [!NOTE] +> このトピックに進む前に、「[セキュリティの概念](../../../../docs/framework/wcf/feature-details/security-concepts.md)」に目を通すことをお勧めします。 + + 次の図は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用する、キューに置かれた通信の概念モデルを表したものです。この図および用語を使用して、トランスポート セキュリティの + + 概念について解説します。 + + ![キューに置かれたアプリケーションの図](../../../../docs/framework/wcf/feature-details/media/distributed-queue-figure.jpg "Distributed\-Queue\-Figure") + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用してキューに置かれたメッセージを送信すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージはメッセージ キュー \(MSMQ\) メッセージの本文として添付されます。トランスポート セキュリティが MSMQ メッセージ全体を保護するのに対し、メッセージ \(SOAP\) セキュリティは MSMQ メッセージの本文だけを保護します。 + + メッセージ セキュリティの重要な概念は、クライアントが受信側アプリケーション \(サービス\) のメッセージを保護する点にあります。これは、クライアントがターゲット キューのメッセージを保護するトランスポート セキュリティとは異なります。したがって、メッセージ セキュリティを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージを保護する場合、MSMQ は何の役割も果たしません。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージ セキュリティでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージにセキュリティ ヘッダーが追加されます。これは、既存のセキュリティ インフラストラクチャ \(証明書や Kerberos プロトコルなど\) と統合されます。 + +## メッセージ資格情報の種類 + メッセージ セキュリティを使用すると、サービスとクライアントは、資格情報を提示して相互を認証します。メッセージ セキュリティを選択するには、 モードを `Message` または `Both` \(トランスポート セキュリティとメッセージ セキュリティの両方を使用\) に設定します。 + + サービスは、 プロパティを使用して、クライアントを認証するために使用される資格情報を検査できます。このプロパティを使用して承認チェックも追加できますが、これを実装するかどうかはサービスで選択します。 + + ここでは、さまざまな資格情報の種類およびそれらをキューで使用する方法について説明します。 + +### 証明書 + 資格情報の種類に証明書を設定すると、X509 証明書を使用してサービスとクライアントが識別されます。 + + 一般的なシナリオでは、信頼された証明機関によってクライアントとサービスに有効な証明書が発行されます。その後、接続が確立され、クライアントは、サービスの証明書を使用してサービスの有効性を確認することにより、サービスを信頼できるかどうかを判断します。同様に、サービスは、クライアントの証明書を使用してクライアントの信頼性を検証します。 + + キューは切断されているため、クライアントとサービスが同時にオンライン状態にならない可能性があります。したがって、クライアントとサービスは、帯域外で証明書を交換する必要があります。特にクライアントは、信頼されたストア内にサービスの証明書 \(証明機関にチェーンできる\) を保持しているという理由で、正しいサービスと通信していることを信じる必要があります。クライアントを認証する場合、サービスはメッセージに添付された X509 証明書を使用し、ストア内の証明書と照合してクライアントの信頼性を確認します。この場合も、証明書は証明機関にチェーンされている必要があります。 + + Windows を実行しているコンピューターでは、証明書は数種類のストアで保持されています。各種ストア[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[証明書ストア](http://go.microsoft.com/fwlink/?LinkId=87787)」を参照してください。 + +### Windows + メッセージ資格情報の種類に Windows を設定すると、Kerberos プロトコルが使用されます。 + + Kerberos プロトコルは、ドメインのユーザーを認証するためのセキュリティ機構で、認証済みユーザーは、ドメインの他のエンティティとの間にセキュリティで保護されたコンテキストを確立できます。 + + キューを使用した通信で Kerberos プロトコルを使用する場合の問題は、キー配布センター \(KDC\) が配布するクライアント ID を含むチケットの有効期間が比較的短いことです。Kerberos チケットには、そのチケットの有効性を示す*有効期間*が関連付けられています。そのため、遅延が大きい場合、クライアントを認証するサービスに対してトークンがまだ有効であるかどうかを確信できなくなります。 + + この種類の資格情報を使用する場合、SERVICE アカウントでサービスが実行されている必要があります。 + + メッセージ資格情報を選択すると、既定で Kerberos プロトコルが使用されます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[Exploring Kerberos, the Protocol for Distributed Security in Windows 2000](http://go.microsoft.com/fwlink/?LinkId=87790)」を参照してください。 + +### ユーザー名とパスワード + このプロパティを使用すると、クライアントは、メッセージのセキュリティ ヘッダーに含まれるユーザー名とパスワードを使用してサーバーに認証できます。 + +### IssuedToken + クライアントは、セキュリティ トークン サービスを使用してトークンを発行できます。発行されたトークンをサービスへのメッセージに添付することで、クライアントが認証されます。 + +## トランスポート セキュリティとメッセージ セキュリティの使用 + トランスポート セキュリティとメッセージ セキュリティの両方を使用する場合は、トランスポート レベルと SOAP メッセージ レベルの両方で同じ証明書を使用してメッセージを保護する必要があります。 + +## 参照 + [トランスポート セキュリティを使用したメッセージのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-messages-using-transport-security.md) + [メッセージ キューを介したメッセージ セキュリティ](../../../../docs/framework/wcf/samples/message-security-over-message-queuing.md) + [セキュリティの概念](../../../../docs/framework/wcf/feature-details/security-concepts.md) + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/securing-messages-using-transport-security.md b/docs/framework/wcf/feature-details/securing-messages-using-transport-security.md new file mode 100644 index 00000000000..05f0ef5f0cc --- /dev/null +++ b/docs/framework/wcf/feature-details/securing-messages-using-transport-security.md @@ -0,0 +1,109 @@ +--- +title: "トランスポート セキュリティを使用したメッセージのセキュリティ保護 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9029771a-097e-448a-a13a-55d2878330b8 +caps.latest.revision: 21 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 21 +--- +# トランスポート セキュリティを使用したメッセージのセキュリティ保護 +ここでは、キューに送信されるメッセージをセキュリティで保護するために使用できるメッセージ キュー \(MSMQ\) トランスポート セキュリティについて説明します。 + +> [!NOTE] +> このトピックに進む前に、「[セキュリティの概念](../../../../docs/framework/wcf/feature-details/security-concepts.md)」に目を通すことをお勧めします。 + + 次の図は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用する、キューに置かれた通信の概念モデルを表したものです。この図および用語を使用して、トランスポート セキュリティの概念について解説します。 + + ![キューに置かれたアプリケーションの図](../../../../docs/framework/wcf/feature-details/media/distributed-queue-figure.jpg "Distributed\-Queue\-Figure") + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と を使用してキューに置かれたメッセージを送信すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージは MSMQ メッセージの本文として添付されます。トランスポート セキュリティは、MSMQ メッセージ全体 \(MSMQ メッセージ ヘッダーまたはプロパティ、およびメッセージ本文\) をセキュリティで保護します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージは MSMQ メッセージの本文であるために、このメッセージもトランスポート セキュリティで保護されます。 + + トランスポート セキュリティの背後にある重要な概念は、メッセージがターゲット キューに到達するためには、クライアントがセキュリティ要件を満たす必要があるという点です。これは、メッセージ セキュリティとは異なります。メッセージ セキュリティでは、メッセージを受信するアプリケーションに対してメッセージが保護されます。 + + を使用するトランスポート セキュリティは、転送キューとターゲット キュー間を移動している MSMQ メッセージがセキュリティで保護される方法に影響します。この場合、"セキュリティで保護される" とは次のことを意味します。 + +- メッセージが改ざんされないように、メッセージに署名する。 + +- メッセージが読み取られたり、改ざんされたりしないしないように、メッセージを暗号化する。これは推奨事項ですが、必須ではありません。 + +- 否認防止のため、ターゲット キュー マネージャーがメッセージの送信者を識別する。 + + MSMQ では、認証とは別に、ターゲット キューがアクセス制御リスト \(ACL: Access Control List\) を持っており、これで、ターゲット キューにメッセージを送信するためのアクセス許可がクライアントに与えられているどうかをチェックします。ターゲット キューからメッセージを受信するためのアクセス許可があるかどうかのチェックは、受信側のアプリケーションに対しても行われます。 + +## WCF MSMQ トランスポート セキュリティのプロパティ + MSMQ では、Windows セキュリティを使用して認証を行います。Windows セキュリティは、Windows セキュリティ識別子 \(SID: Security Identifier\) を使用してクライアントを識別し、クライアントの認証時に、証明機関として Active Directory ディレクトリ サービスを使用します。このため、MSMQ を Active Directory 統合と共にインストールする必要があります。クライアントの識別には Windows ドメインの SID が使用されるため、このセキュリティ オプションは、クライアントとサービスの両方が同じ Windows ドメインに属している場合にのみ有効です。 + + また、MSMQ は、Active Directory に登録されていないメッセージに証明書を添付する機能も提供します。この場合は、添付された証明書を使用してメッセージが署名されたことが保証されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、両方のオプションが MSMQ トランスポート セキュリティの一部として提供されます。これらのオプションは、トランスポート セキュリティの中核です。 + + 既定では、トランスポート セキュリティが有効になります。 + + これらの基本事項に基づいて、以降のセクションでは および に結び付けられたトランスポート セキュリティのプロパティについて詳しく説明します。 + +#### MSMQ 認証モード + は、Windows ドメインのセキュリティと外部の証明書ベースのセキュリティのどちらを使用してメッセージを保護するかを決定します。どちらの認証モードでも、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のキューに置かれたトランスポート チャネルは、サービス構成で指定された `CertificateValidationMode` を使用します。証明書検証モードは、証明書の有効性を確認するために使用される機構を指定します。 + + トランスポート セキュリティが有効になっている場合、既定の設定は です。 + +#### Windows ドメイン認証モード + Windows セキュリティを選択した場合は、Active Directory 統合をインストールする必要があります。既定のトランスポート セキュリティ モードは です。このモードを設定すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネルは MSMQ メッセージに Windows SID を添付し、Active Directory から取得した内部証明書を使用します。MSMQ は、この内部証明書を使用してメッセージをセキュリティで保護します。受信側キュー マネージャーは、Active Directory を使用して一致する証明書を検索し、クライアントを認証します。また、SID がクライアントの SID と一致するかどうかをチェックします。この認証手順は、認証を要求するようにターゲット キューがマークされていない場合でも、内部的 \(`WindowsDomain` 認証モードの場合\) または外部的 \(`Certificate` 認証モードの場合\) に生成された証明書がメッセージに添付されているときに実行されます。 + +> [!NOTE] +> キューを作成する際に認証キューとしてマークすることにより、そのキューにメッセージを送信するクライアントに対して認証を求めることができます。これにより、認証されたメッセージだけをキューに受け入れることができます。 + + また、メッセージに添付された SID は、キューにメッセージを送信する権限をクライアントが持つことを確認するためにターゲット キューの ACL をチェックする目的でも使用されます。 + +#### 証明書認証モード + 証明書認証モードを選択した場合は、Active Directory 統合をインストールする必要がありません。実際、\(Active Directory 統合をインストールせずに\) MSMQ をワークグループ モードでインストールしている場合や、SOAP リライアブル メッセージ プロトコル \(SRMP: SOAP Reliable Messaging Protocol\) 転送プロトコルを使用してメッセージをキューに送信する場合など、 だけが機能するというケースもあります。 + + を使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージを送信した場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネルは Windows SID を MSMQ メッセージに添付しません。そのため、ターゲット キューの ACL は、キューへの送信に対して `Anonymous` ユーザー アクセスを許可する必要があります。受信側キュー マネージャーは、証明書を使用して MSMQ メッセージが署名されたかどうかをチェックしますが、認証は行いません。 + + クレームと ID 情報を持つ証明書は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のキューに置かれたトランスポート チャネルによって 内に設定されます。サービスは、この情報を使用して独自の方式で送信者の認証を行います。 + +### MSMQ の保護レベル + 保護レベルは、MSMQ メッセージが改ざんされないように MSMQ メッセージを保護する方法を決定します。これは、 プロパティで指定します。既定値は、 です。 + +#### 署名による保護レベル + MSMQ メッセージでは、`WindowsDomain` 認証モードを使用する場合は内部生成された証明書を使用して署名され、`Certificate` 認証モードを使用する場合は、外部生成された証明書を使用して署名されます。 + +#### 署名と暗号化による保護レベル + MSMQ メッセージでは、`WindowsDomain` 認証モードを使用する場合は内部生成された証明書を使用して署名され、`Certificate` 認証モードを使用する場合は、外部生成された証明書を使用して署名されます。 + + メッセージの署名に加えて、MSMQ メッセージは、ターゲット キューをホストする受信側キュー マネージャーに属する Active Directory から取得した証明書の公開キーを使用して暗号化されます。送信側キュー マネージャーは、MSMQ メッセージが送信時に暗号化されているかどうかを確認します。受信側キュー マネージャーは、内部証明書の秘密キーを使用して MSMQ メッセージを復号化し、クリア テキストでメッセージをキューに格納します \(認証と承認が完了している場合\)。 + +> [!NOTE] +> メッセージを暗号化するには、Active Directory にアクセスでき \( の `UseActiveDirectory` プロパティが `true` に設定されている\)、かつ の両方で Active Directory を使用できる必要があります。 + +#### 保護のないレベル + に設定することにより指定されます。この値は、他の認証モードに対しては無効です。 + +> [!NOTE] +> MSMQ メッセージが署名されている場合は、キューの状態 \(つまり、認証キューであるかどうか\) に関係なく、添付されている \(内部または外部\) 証明書を使用してメッセージが署名されているかどうかがチェックされます。 + +### MSMQ の暗号化アルゴリズム + 暗号化アルゴリズムは、ネットワーク上の MSMQ メッセージを暗号化するために使用されるアルゴリズムを指定します。このプロパティは、 に設定されている場合にのみ使用されます。 + + サポートされているアルゴリズムは `RC4Stream` と `AES` で、既定値は `RC4Stream` です。 + + `AES` アルゴリズムは、送信元が MSMQ 4.0 以降をインストールしている場合にのみ使用できます。また、ターゲット キューも MSMQ 4.0 でホストされている必要があります。 + +### MSMQ ハッシュ アルゴリズム + ハッシュ アルゴリズムは、MSMQ メッセージのデジタル署名を作成するために使用されるアルゴリズムを指定します。受信側キュー マネージャーも、これと同じアルゴリズムを使用して MSMQ メッセージを認証します。このプロパティは、 または に設定されている場合にのみ使用されます。 + + サポートされるアルゴリズムは、`MD5`、`SHA1`、`SHA256`、および `SHA512` です。既定値は `SHA1` です。 + +## 参照 + [Message Queuing](http://msdn.microsoft.com/ja-jp/ff917e87-05d5-478f-9430-0f560675ece1) + [セキュリティの概念](../../../../docs/framework/wcf/feature-details/security-concepts.md) + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/securing-peer-channel-applications.md b/docs/framework/wcf/feature-details/securing-peer-channel-applications.md new file mode 100644 index 00000000000..c1bb68bfbe4 --- /dev/null +++ b/docs/framework/wcf/feature-details/securing-peer-channel-applications.md @@ -0,0 +1,53 @@ +--- +title: "セキュリティによるピア チャネル アプリケーションの保護 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d4a0311d-3f78-4525-9c4b-5c93c4492f28 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# セキュリティによるピア チャネル アプリケーションの保護 +[!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] での他のバインディングと同様に、`NetPeerTcpBinding` には、既定で有効にされているセキュリティがあり、トランスポート ベースのセキュリティとメッセージ ベースのセキュリティが提供されます。 このトピックでは、これら 2 種類のセキュリティについて説明します。 セキュリティの種類は、バインディング仕様のセキュリティ モード タグ \( `Mode`\) で指定します。 + +## トランスポート ベースのセキュリティ + ピア チャネルでは、トランスポートをセキュリティで保護するための 2 種類の認証資格情報がサポートされます。両方とも、関連する `ChannelFactory` で `ClientCredentialSettings.Peer` プロパティを設定する必要があります。 + +- パスワード。 クライアントは、接続の認証に秘密パスワードの知識を利用します。 この種類の資格情報を使用する場合、`ClientCredentialSettings.Peer.MeshPassword` は、有効なパスワードと、必要に応じて `X509Certificate2` インスタンスを転送する必要があります。 + +- 証明書。 特定のアプリケーション認証を使用します。 この種類の資格情報を使用する場合は、`ClientCredentialSettings.Peer.PeerAuthentication` で の具体的な実装を使用する必要があります。 + +## メッセージ ベース セキュリティ + メッセージ セキュリティを使用すると、アプリケーションで送信メッセージに署名できるので、メッセージが信頼されたパーティから送信されたこと、および転送中にメッセージが改ざんされていないことをすべての受信パーティが確認できます。 現在、ピア チャネルでは、X.509 資格情報メッセージの署名のみがサポートされます。 + +## ベスト プラクティス + +- ここでは、ピア チャネル アプリケーションをセキュリティで保護するためのベスト プラクティスについて説明します。 + +### ピア チャネル アプリケーションでセキュリティを有効にする + ピア チャネル プロトコルは分散的な性質のため、セキュリティで保護されていないメッシュ内でメッシュ メンバーシップ、機密性、およびプライバシーを強化することは困難です。 クライアントとリゾルバー サービス間の通信をセキュリティで保護することも重要です。 PNRP \(Peer Name Resolution Protocol\) では、セキュリティで保護された名前を使用してスプーフィングや他の一般的な攻撃を回避してください。 カスタム リゾルバー サービスをセキュリティで保護するには、メッセージ ベース セキュリティおよびトランスポート ベース セキュリティの両方を含むリゾルバー サービスにアクセスするためにクライアントが使用する接続でセキュリティを有効にします。 + +### 可能な限り強力なセキュリティ モデルを使用する + たとえば、メッシュの各メンバーを個々に識別する必要がある場合は、証明書ベースの認証モデルを使用します。 これが不可能な場合は、セキュリティ保護のための最新の推奨事項に従ってパスワード ベースの認証を使用します。 推奨事項には、信頼されたパーティとのパスワードの共有、セキュリティで保護された媒介を使用するパスワードの転送、パスワードの頻繁な変更、強力なパスワード \(8 文字以上で、1 文字以上の大文字\/小文字、数字、特殊文字を含める\) の確認などがあります。 + +### 自己署名された証明書を受け入れない + サブジェクト名に基づいて証明書の資格情報を受け入れないでください。 証明書はだれもが作成でき、検証する名前をだれもが選択できることに注意してください。 スプーフィングの可能性を回避するには、発行元証明機関 \(信頼された発行者またはルート証明機関\) の資格情報に基づいて証明書を検証します。 + +### メッセージ認証を使用する + メッセージ認証を使用して、メッセージが信用されるソースから送信されていること、および送信中にメッセージが改ざんされていないことを確認します。 メッセージ認証を使用しないと、悪質なクライアントがメッセージを使用して容易に他人になりすましたり、メッセージを容易に改ざんしたりできます。 + +## ピア チャネルのコード例 + [ピア チャネルのシナリオ](../../../../docs/framework/wcf/feature-details/peer-channel-scenarios.md) + +## 参照 + [ピア チャネルのセキュリティ](../../../../docs/framework/wcf/feature-details/peer-channel-security.md) + [ピア チャネル アプリケーションの構築](../../../../docs/framework/wcf/feature-details/building-a-peer-channel-application.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/securing-services-and-clients.md b/docs/framework/wcf/feature-details/securing-services-and-clients.md new file mode 100644 index 00000000000..8f6c4d80237 --- /dev/null +++ b/docs/framework/wcf/feature-details/securing-services-and-clients.md @@ -0,0 +1,64 @@ +--- +title: "サービスおよびクライアントのセキュリティ保護 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "メッセージ セキュリティ [WCF]" +ms.assetid: e681f3bd-0c09-4a58-b0e4-0ecbdf1aa6c7 +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 13 +--- +# サービスおよびクライアントのセキュリティ保護 +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でのセキュリティのプログラミングについて説明します。 一般に、これには、システムが提供する適切なバインディングを選択すること、セキュリティ要素のプロパティを適切に設定すること、サービス側\/クライアント側で使う資格情報の検索方法にまつわる、サービスの動作に関するプロパティを適切に設定することなどが含まれます。 これらの技術を知っていると、「[一般的なセキュリティ シナリオ](../../../../docs/framework/wcf/feature-details/common-security-scenarios.md)」に記載されているようなさまざまな状況で、セキュリティ要件に対処できます。 ただし、さらに高度な対策が必要な場合は、最初に「[カスタム バインディングを使用したセキュリティ機能](../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md)」、次に「[セキュリティの拡張](../../../../docs/framework/wcf/extending/extending-security.md)」を参照してください。 多様なクレームに対応するシステムを構築する場合 \(または、そのようなシステムと相互運用する場合\) は、「[承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md)」の各トピックを参照してください。 + +## このセクションの内容 + [WCF セキュリティのプログラミング](../../../../docs/framework/wcf/feature-details/programming-wcf-security.md) + メッセージを保護するために使うプログラミング モデルの概要 + + [トランスポート セキュリティの概要](../../../../docs/framework/wcf/feature-details/transport-security-overview.md) + トランスポート層を介してやり取りするメッセージを保護する方法の概要 + + [メッセージのセキュリティ](../../../../docs/framework/wcf/feature-details/message-security-in-wcf.md) + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のメッセージ レベル セキュリティを使用する理由の要約 + + [セキュリティで保護されたセッション](../../../../docs/framework/wcf/feature-details/secure-sessions.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セッションのセキュリティを保護する際の考慮事項 + + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + X.509 証明書を使用する際に必要となる主な作業の解説 + +## 関連項目 + + + + + + +## 関連項目 + [セキュリティの概念](../../../../docs/framework/wcf/feature-details/security-concepts.md) + + [セキュリティの拡張](../../../../docs/framework/wcf/extending/extending-security.md) + + [一般的なセキュリティ シナリオ](../../../../docs/framework/wcf/feature-details/common-security-scenarios.md) + + [バインディングとセキュリティ](../../../../docs/framework/wcf/feature-details/bindings-and-security.md) + + [カスタム バインディングを使用したセキュリティ機能](../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + + [セキュリティの拡張](../../../../docs/framework/wcf/extending/extending-security.md) + + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) + +## 参照 + [基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-behaviors-in-wcf.md b/docs/framework/wcf/feature-details/security-behaviors-in-wcf.md new file mode 100644 index 00000000000..c6207b6bc67 --- /dev/null +++ b/docs/framework/wcf/feature-details/security-behaviors-in-wcf.md @@ -0,0 +1,229 @@ +--- +title: "Windows Communication Foundation のセキュリティ動作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 513232c0-39fd-4409-bda6-5ebd5e0ea7b0 +caps.latest.revision: 23 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 23 +--- +# Windows Communication Foundation のセキュリティ動作 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、さまざまな動作によって、サービス レベルまたはエンドポイント レベルで実行時の動作が変更されます \(一般的な動作[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービスのランタイム動作の指定](../../../../docs/framework/wcf/specifying-service-run-time-behavior.md)」を参照してください\)。*"セキュリティ動作"* により、資格情報、認証、承認、および監査ログの制御が可能になります。動作は、プログラムまたは構成を通じて使用できます。ここでは、セキュリティ機能に関連する以下の動作の構成について説明します。 + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md). + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md). + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md). + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicesecurityaudit.md). + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicemetadata.md)。この要素を使用すると、クライアントがメタデータを取得するためにアクセスできる、セキュリティで保護されたエンドポイントを指定することもできます。 + +## 動作を使用した資格情報の設定 + サービスまたはクライアントの資格情報の値を設定するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md)と [\](../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)を使用します。基になるバインディング構成によって、資格情報を設定する必要があるかどうかが決まります。たとえば、セキュリティ モードが `None` に設定されている場合、クライアントとサービスは相互に認証を行わないため、どの種類の資格情報も必要ありません。 + + 一方、サービス バインディングでは、クライアント資格情報の種類が必要になることがあります。その場合は、動作を使用して資格情報の値を設定することが必要になる場合があります \(使用できる資格情報の種類[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[資格情報の種類の選択](../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md)」を参照してください\)。Windows 資格情報を使用して認証を行う場合などは、実際の資格情報の値が環境によって自動的に設定されるため、資格情報の別のセットを指定する場合を除き、資格情報の値を明示的に設定する必要がないこともあります。 + + すべてのサービス資格情報は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md)の子要素として存在します。サービス資格情報として使用される証明書を次の例に示します。 + +``` + + + + + + + + + + + + + +``` + +## サービス資格情報 + [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecredentials.md) には 4 つの子要素があります。以下のセクションでは、これらの要素とそれぞれの使い方について説明します。 + +### \ 要素 + メッセージ セキュリティ モードを使用しているクライアントへのサービスの認証に使用する X.509 証明書を指定するには、この要素を使用します。定期的に更新される証明書を使用している場合は、証明書のサムプリントが変更されます。その場合、証明書を同じサブジェクト名で再発行できるため、`X509FindType` としてサブジェクト名を使用します。 + + この要素の使い方[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : クライアントの資格情報の値を指定する](../../../../docs/framework/wcf/how-to-specify-client-credential-values.md)」を参照してください。 + +### \ 要素の \ + [\](../../../../docs/framework/configure-apps/file-schema/wcf/certificate-of-clientcertificate-element.md) 要素は、サービスがクライアントと安全に通信するために、クライアントの証明書をあらかじめ持っている必要がある場合に使用します。このような状況は、双方向通信パターンを使用する場合に生じます。より一般的な要求\/応答パターンでは、クライアントが自身の証明書を要求に含め、サービスはこの証明書を使用して、クライアントへの応答をセキュリティで保護します。ただし、双方向通信パターンには要求も応答もありません。サービスは、クライアントの証明書を通信から推測できないため、クライアントへのメッセージをセキュリティで保護するためにクライアントの証明書が前もって必要になります。このため、クライアントの証明書を帯域外方式で取得し、この要素を使用して証明書を指定する必要があります。双方向サービス[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 双方向コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md)」を参照してください。 + +### \ 要素の \ + [\](../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md) 要素を使用すると、クライアントを認証する方法をカスタマイズできます。`CertificateValidationMode` 属性は、`None`、`ChainTrust`、`PeerOrChainTrust`、`PeerTrust`、または `Custom` に設定できます。既定のレベルは `ChainTrust` に設定され、チェーンの最上位の*ルート証明機関*で終了する証明書の階層構造で各証明書を検索するよう指定します。これは最もセキュリティで保護されているモードです。また、値を `PeerOrChainTrust` に設定することもできます。これは、信頼されたチェーン内の証明書と共に、自己発行された証明書 \(ピア信頼\) も受け入れるよう指定します。自己発行の資格情報は信頼された証明機関から購入したものである必要はないため、この値はクライアントとサービスの開発およびデバッグに使用されます。クライアントを展開するときは、代わりに `ChainTrust` 値を使用します。また、値を `Custom` に設定することもできます。`Custom` 値に設定する場合は、`CustomCertificateValidatorType` 属性を、証明書の検証に使用するアセンブリと型に設定する必要もあります。独自のカスタム検証を作成するには、抽象 クラスを継承する必要があります。 + +### \ 要素 + 発行されるトークンのシナリオには、3 つの段階があります。まず、サービスにアクセスしようとしているクライアントは、*セキュリティ トークン サービス* \(STS\) に回されます。次に、STS がクライアントを認証し、その後、クライアントにトークン \(通常は、SAML \(Security Assertions Markup Language\) トークン\) を発行します。最後に、クライアントがトークンを持ってサービスに戻ります。サービスはトークンを調べ、トークンを認証することでクライアントの認証を可能にするデータを確認します。トークンを認証するには、セキュリティ トークン サービスで使用される証明書がサービスによって認識されている必要があります。[\](../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md) 要素は、このようなセキュリティ トークン サービス証明書のリポジトリです。証明書を追加するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/knowncertificates.md) を使用します。次の例に示すように、証明書ごとに [\](../../../../docs/framework/configure-apps/file-schema/wcf/add-of-knowncertificates.md) を挿入します。 + +``` + + + + + +``` + + 既定では、証明書はセキュリティ トークン サービスから取得する必要があります。このような "既知" の証明書により、正当なクライアントのみがサービスにアクセスできるようになります。 + + `SamlSecurityToken` セキュリティ トークンを発効する*セキュリティ トークン サービス* \(STS\) を利用するフェデレーション アプリケーション内の [\](../../../../docs/framework/configure-apps/file-schema/wcf/allowedaudienceuris.md) コレクションを使用する必要があります。STS がセキュリティ トークンを発行する場合、このセキュリティ トークンに `SamlAudienceRestrictionCondition` を追加して、セキュリティ トークンの提供先となる Web サービスの URI を指定できます。これにより、受け取り側 `SamlSecurityTokenAuthenticator` Web サービスは、次のようにしてこのチェックが行われるように指定することで、発行されたセキュリティ トークンがこの Web サービスを対象としていることを確認できます。 + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/issuedtokenauthentication-of-servicecredentials.md) の `audienceUriMode` 属性を `Always`または `BearerKeyOnly` に設定します。 + +- このコレクションに URI を追加して、有効な URI のセットを指定します。それには、各 URI に [\](../../../../docs/framework/configure-apps/file-schema/wcf/add-of-allowedaudienceuris.md) を挿入します。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] . + + この構成要素の使い方[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : フェデレーション サービスで資格情報を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md)」を参照してください。 + +#### 匿名の CardSpace ユーザーの許可 + `` 要素の `AllowUntrustedRsaIssuers` 属性を `true` に設定すると、任意の RSA キー ペアで署名された自己発行トークンを提示することがすべてのクライアントに明示的に許可されます。このキーには、発行者のデータが関連付けられていないため、発行者は*信頼できません*。[!INCLUDE[infocard](../../../../includes/infocard-md.md)] ユーザーは、ID の自己提供クレームを含む自己発行カードを作成できます。この機能を使用するときは十分に注意してください。この機能を使用する場合は、RSA 公開キーを、ユーザー名と一緒にデータベースに格納する必要のある比較的安全なパスワードとして考えます。サービスへのクライアント アクセスを許可する前に、クライアントから提示された RSA 公開キーを、提示されたユーザー名に対応する格納済みの公開キーと比較して検証します。これは、ユーザーが各自のユーザー名を登録し、自己発行の RSA 公開キーに関連付けることができる登録プロセスが確立されていることが前提となります。 + +## クライアント資格情報 + クライアント資格情報は、相互認証が必要な場合にサービスに対するクライアントの認証に使用されます。また、このセクションを使用して、クライアントがサービスの証明書によってサービスへのメッセージをセキュリティで保護する必要がある場合に使用するサービス証明書を指定することもできます。 + + セキュリティ トークン サービスまたはローカル発行者から発行されたトークンを使用するフェデレーション シナリオの一部として、クライアントを構成することもできます。フェデレーション シナリオ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md)」を参照してください。次のコードに示すように、すべてのクライアント資格情報は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md)にあります。 + +``` + + + + + + + + + + + + +``` + +#### \ 要素 + この要素で、クライアントの認証に使用する証明書を設定します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : クライアントの資格情報の値を指定する](../../../../docs/framework/wcf/how-to-specify-client-credential-values.md). + +#### \ + この機能は、Windows の Active Directory およびインターネット インフォメーション サービス \(IIS\) と共に有効にする必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[IIS 6.0 のダイジェスト認証](http://go.microsoft.com/fwlink/?LinkId=88443)」を参照してください。 + +#### \ 要素 + [\](../../../../docs/framework/configure-apps/file-schema/wcf/issuedtoken.md) には、トークンのローカル発行者やセキュリティ トークン サービスで使用する動作の構成に使用する要素が含まれます。ローカル発行者を使用するようにクライアントを構成する手順については、「[方法 : ローカル発行者を設定する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-local-issuer.md)」を参照してください。 + +#### \ + 既定のセキュリティ トークン サービス アドレスを指定します。この要素を使用するのは、 がセキュリティ トークン サービスに URL を提供しない場合、またはフェデレーション バインディングの発行者アドレスが http:\/\/schemas.microsoft.com\/2005\/12\/ServiceModel\/Addressing\/Anonymous または `null` の場合です。そのような場合、 は、ローカルの発行者およびバインディングのアドレスと共に構成し、その発行者と通信するために使用する必要があります。 + +#### \ + セキュリティ トークン サービスとの通信時に使用する クライアントの動作を追加するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/issuerchannelbehaviors-element.md)[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]を使用します。[\](../../../../docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md) セクションでクライアントの動作を定義します。定義された動作を使用するには、\<`add`\> 要素を `` 要素に追加し、2 つの属性を設定します。次の例に示すように、`issuerAddress` をセキュリティ トークン サービスの URL に設定し、`behaviorConfiguration` 属性を定義済みのエンドポイントの動作の名前に設定します。 + +``` + + + + +``` + +#### \ 要素 + サービス証明書の認証を制御するには、この要素を使用します。 + + [\](../../../../docs/framework/configure-apps/file-schema/wcf/defaultcertificate-element.md) 要素には、サービスで証明書が指定されていないときに使用する証明書を 1 つ格納できます。 + + 特定のサービスに関連付けられているサービス証明書を設定するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/scopedcertificates-element.md)[\](../../../../docs/framework/configure-apps/file-schema/wcf/add-of-scopedcertificates-element.md) と を使用します。`` 要素には、証明書をサービスに関連付けるために使用する `targetUri` 属性があります。 + + [\](../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-servicecertificate-element.md) 要素は、証明書の認証に使用する信頼のレベルを指定します。既定のレベルは "ChainTrust" に設定され、チェーンの最上位の信頼された証明機関で終了する証明書の階層構造で各証明書を検索するよう指定します。これは最もセキュリティで保護されているモードです。また、値を "PeerOrChainTrust" に設定することもできます。これは、信頼されたチェーン内の証明書と共に、自己発行された証明書 \(ピア信頼\) も受け入れることを指定します。自己発行の資格情報は信頼された証明機関から購入したものである必要はないため、この値はクライアントとサービスの開発およびデバッグに使用されます。クライアントを展開するときは、代わりに "ChainTrust" 値を使用します。値を "Custom" または "None" に設定できます。"Custom" 値を使用するには、`CustomCertificateValidatorType` 属性も証明書の検証に使用するアセンブリと型に設定する必要があります。独自のカスタム検証を作成するには、抽象 クラスを継承する必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : カスタム証明書検証を使用するサービスを作成する](../../../../docs/framework/wcf/extending/how-to-create-a-service-that-employs-a-custom-certificate-validator.md). + + [\](../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-servicecertificate-element.md) `RevocationMode 要素には、証明書が失効していないかどうかをチェックする方法を指定する` 属性が含まれます。既定値は "online" です。この場合、証明書が失効していないかどうかが自動的にチェックされます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md). + +## ServiceAuthorization + [\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md) 要素には、承認、カスタム ロール プロバイダー、および偽装に影響する要素が含まれます。 + + クラスは、サービス メソッドに適用されます。この属性は、保護メソッドの使用を承認するときに使用するユーザー グループを指定します。既定値は "UseWindowsGroups" で、リソースにアクセスしようとしている ID を Windows グループ \("管理者" や "ユーザー" など\) で検索するよう指定します。次のコードに示すように、"UseAspNetRoles" を指定して、\<`system.web` \> 要素の下で構成されるカスタム ロール プロバイダーを使用することもできます。 + +``` + + + + + + + + + +``` + + `principalPermissionMode` 属性で `roleProviderName` を使用する方法を次のコードに示します。 + +``` + + + + + + +``` + +## セキュリティ監査の構成 + 書き込み先のログとログに記録するイベントの種類を指定するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicesecurityaudit.md) を使用します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][監査](../../../../docs/framework/wcf/feature-details/auditing-security-events.md). + +``` + + + + + + + +``` + +## セキュリティで保護されたメタデータ交換 + メタデータをクライアントにエクスポートすると、構成やクライアント コードのダウンロードが可能になるため、サービスとクライアントの開発者にとって便利です。サービスが悪意のあるユーザーに公開されないようにするために、SSL over HTTP \(HTTPS\) 機構を使用して転送をセキュリティで保護できます。転送を保護するには、まず、サービスをホストしているコンピューターの特定のポートに適切な X.509 証明書をバインドする必要があります \([!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md).\)次に、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicemetadata.md)`HttpsGetEnabled`をサービス構成に追加し、`true` 属性を に設定します。最後に、次の例に示すように、`HttpsGetUrl` 属性をサービス メタデータ エンドポイントの URL に設定します。 + +``` + + + + + + + +``` + +## 参照 + [監査](../../../../docs/framework/wcf/feature-details/auditing-security-events.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md b/docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md new file mode 100644 index 00000000000..6a8a8af6aec --- /dev/null +++ b/docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md @@ -0,0 +1,63 @@ +--- +title: "カスタム バインディングを使用したセキュリティ機能 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a2425679-484a-4e6c-9c98-7da7304f1516 +caps.latest.revision: 11 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 11 +--- +# カスタム バインディングを使用したセキュリティ機能 +一般的なセキュリティ タスクのほとんどは、システム指定のバインディングのいずれかを使用して実行できます。ただし、より高度な制御が必要な場合は、以下のトピックで説明するように、 を使用してカスタム バインディングを作成できます。カスタム バインディング[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください。 + +## このセクションの内容 + [SecurityBindingElement 認証モード](../../../../docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md) + カスタム バインディングで使用できる認証モードについて説明します。 + + [方法 : SecurityBindingElement を使用してカスタム バインディングを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + セキュリティ要素を使用してカスタム バインディングを作成するための基本手順について説明します。 + + [方法 : 指定した認証モード用の SecurityBindingElement を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md) + 指定した認証モード用のセキュリティ要素を作成する方法について説明します。 + + [方法 : WSFederationHttpBinding のセキュリティで保護されたセッションを無効にする](../../../../docs/framework/wcf/feature-details/how-to-disable-secure-sessions-on-a-wsfederationhttpbinding.md) + フェデレーション サービスを作成する際に、セキュリティで保護されたセッションを無効にする方法について説明します。 + + [方法 : メッセージ リプレイ検出を有効にする](../../../../docs/framework/wcf/feature-details/how-to-enable-message-replay-detection.md) + リプレイ攻撃の発生を確認する方法について説明します。 + + [方法 : サポート資格情報を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-supporting-credential.md) + 必要な場合に、サービスにサポート資格情報を提供する方法について説明します。 + + [方法 : 署名確認を設定する](../../../../docs/framework/wcf/feature-details/how-to-set-up-a-signature-confirmation.md) + メッセージにデジタル署名する際に署名を確認する手順について説明します。 + + [方法 : 時刻のずれの最大値を設定する](../../../../docs/framework/wcf/feature-details/how-to-set-a-max-clock-skew.md) + サービスとクライアント間で許容される最大の時刻のずれを設定する方法について説明します。 + + [方法 : デジタル署名の暗号化を無効にする](../../../../docs/framework/wcf/feature-details/how-to-disable-encryption-of-digital-signatures.md) + デジタル署名の暗号化を無効にするとどのようなパフォーマンス上の利点があるかを説明します。 + +## 関連項目 + + + [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md) + +## 関連項目 + [保護レベルの理解](../../../../docs/framework/wcf/understanding-protection-level.md) + + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + +## 参照 + [バインディングとセキュリティ](../../../../docs/framework/wcf/feature-details/bindings-and-security.md) + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-concepts-used-in-wcf.md b/docs/framework/wcf/feature-details/security-concepts-used-in-wcf.md new file mode 100644 index 00000000000..15b2e89aed0 --- /dev/null +++ b/docs/framework/wcf/feature-details/security-concepts-used-in-wcf.md @@ -0,0 +1,58 @@ +--- +title: "WCF で使用されるセキュリティの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3b9dfcf5-4bf1-4f35-9070-723171c823a1 +caps.latest.revision: 15 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 15 +--- +# WCF で使用されるセキュリティの概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のセキュリティは、各種のセキュリティ インフラストラクチャで既に使用され展開されている概念の上に構築されています。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、これらのインフラストラクチャの一部 \(SSL \(Secure Sockets Layer\) over HTTP \(HTTPS\) など\) をサポートしています。ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、新しい相互運用可能なセキュリティ標準 \(WS\-Security など\) を SOAP エンコード メッセージに実装することで、既存のセキュリティ インフラストラクチャをサポートする以上の機能を実現しています。既存の機構と新規の相互運用可能な標準のどちらを使用する場合でも、背後にあるセキュリティ概念に変わりはありません。既存のインフラストラクチャおよび新しい標準を支える概念を理解することが、アプリケーションにとって最善のセキュリティ モデルを実装するための要になります。 + +## WCF Web サービスのセキュリティの概要 + Microsoft Patterns and Practices グループでは、WCF セキュリティ ガイダンスに関する詳細なホワイト ペーパーを作成しました \(「[WCF セキュリティ ガイド](http://go.microsoft.com/fwlink/?LinkId=210210)」からダウンロードできます\)。このホワイト ペーパーでは、Web サービス、WCF セキュリティの主な概念、イントラネット アプリケーション シナリオ、およびインターネット アプリケーション シナリオに関連するセキュリティの基本概念について説明しています。 + +## 業界標準のセキュリティ仕様 + +### 公開キー基盤 + 公開キー基盤 \(PKI: Public Key Infrastructure\) は、デジタル証明書、証明機関、およびその他の登録機関で構成されるシステムです。PKI では、公開キー暗号化を使用して、電子取引に関与する各当事者の検証と認証を行います。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、「[Windows Server 2008 R2 証明書サービス](http://go.microsoft.com/fwlink/?LinkId=210211)」を参照してください。 + +### Kerberos プロトコル + *"Kerberos プロトコル"* は、Windows ドメインでユーザーを認証するセキュリティ機構を作成するための仕様です。ユーザーはドメイン内の他のエンティティと、セキュリティで保護されたコンテキストを確立できます。Windows 2000 以降のプラットフォームでは、Kerberos プロトコルが既定で使用されます。システムの機構を理解することは、イントラネット クライアントと対話するサービスを作成する場合に役立ちます。また、*Web Services Security Kerberos Binding* が広く公開されているため、Kerberos プロトコルを使用してインターネット クライアントと通信できます \(つまり、Kerberos プロトコルには相互運用性があります\)。Kerberos プロトコルを Windows で実装する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Microsoft Kerberos](http://go.microsoft.com/fwlink/?LinkId=210212)」を参照してください。 + +### X.509 証明書 + X.509 証明書は、セキュリティ アプリケーションで使用される主要な資格情報の形式です。X.509 証明書の詳細については、「[X.509 公開キー証明書](http://go.microsoft.com/fwlink/?LinkId=210213)」を参照してください。X.509 証明書は証明書ストア内に格納されます。Windows を実行しているコンピューターには、それぞれ目的が異なる数種類の証明書ストアがあります。各種ストア[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[証明書ストア](http://go.microsoft.com/fwlink/?LinkID=87787)」を参照してください。 + +## Web サービスのセキュリティ仕様 + システム定義のバインディングでは、一般に使用されるさまざまな Web サービスのセキュリティ仕様をサポートしています。システム定義のバインディングとサポートされる Web サービスの仕様の全一覧については、「[システム標準の相互運用性バインディングがサポートしている Web サービス プロトコル](../../../../docs/framework/wcf/feature-details/web-services-protocols-supported-by-system-provided-interoperability-bindings.md)」を参照してください。 + +## アクセス制御機構 + WCF には、サービスや操作へのアクセスを制御するさまざまな方法が用意されています。次に例を示します。 + +1. + +2. ASP.NET メンバーシップ プロバイダー + +3. ASP.NET ロール プロバイダー + +4. 承認マネージャー + +5. ID モデル + + 各項目の詳細については、「[アクセス制御機構](../../../../docs/framework/wcf/feature-details/access-control-mechanisms.md)」を参照してください。 + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-concepts.md b/docs/framework/wcf/feature-details/security-concepts.md new file mode 100644 index 00000000000..f0a71e6a125 --- /dev/null +++ b/docs/framework/wcf/feature-details/security-concepts.md @@ -0,0 +1,49 @@ +--- +title: "セキュリティの概念 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 944fa5ca-2c34-4268-8897-e005a61b470d +caps.latest.revision: 11 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 11 +--- +# セキュリティの概念 +このセクションでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] セキュリティに関連する概念について簡単に説明します。 + +## このセクションの内容 + [WCF で使用されるセキュリティの概要](../../../../docs/framework/wcf/feature-details/security-concepts-used-in-wcf.md) + セキュリティの実装で使用される概念の概要を示します。 + + [分散アプリケーションのセキュリティ](../../../../docs/framework/wcf/feature-details/distributed-application-security.md) + 分散アプリケーション トポグラフィで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がセキュリティを提供するしくみの概要を示します。 + + [セキュリティ用語](../../../../docs/framework/wcf/feature-details/wcf-security-terminology.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティの説明に使用される用語集です。 + +## 関連項目 + + + + + + + + + + +## 関連項目 + [セキュリティの拡張](../../../../docs/framework/wcf/extending/extending-security.md) + +## 参照 + [セキュリティ](../../../../docs/framework/wcf/feature-details/security.md) + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-considerations-for-data.md b/docs/framework/wcf/feature-details/security-considerations-for-data.md new file mode 100644 index 00000000000..b6ac145d232 --- /dev/null +++ b/docs/framework/wcf/feature-details/security-considerations-for-data.md @@ -0,0 +1,364 @@ +--- +title: "セキュリティに関するデータの考慮事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a7eb98da-4a93-4692-8b59-9d670c79ffb2 +caps.latest.revision: 23 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 23 +--- +# セキュリティに関するデータの考慮事項 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でデータを処理するとき、さまざまな種類の脅威について考慮する必要があります。 データ処理に関連する最も重要な脅威の種類を次の表に示します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、これらの脅威を軽減するためのツールが用意されています。 + + サービス拒否 + 信頼できないデータを受信すると、受信側では、そのデータによって非常に長い計算が発生し、メモリ、スレッド、利用可能な接続、プロセッサ サイクルなど複数のリソースに過剰にアクセスすることがあります。 サーバーに対するサービス拒否攻撃によって、サーバーがクラッシュし、正当なクライアントからのメッセージを処理できなくなる場合があります。 + + 悪質なコードの実行 + 信頼できないデータを受信すると、受信側で本来意図してしないコードが実行されます。 + + 情報の漏えい + リモートの攻撃者は、受信側に要求への応答を強制し、受信側が意図した以上の情報を公開させます。 + +## ユーザー指定のコードとコード アクセス セキュリティ + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] インフラストラクチャのさまざまな場所で、ユーザーが指定したコードが実行されます。 たとえば、 シリアル化エンジンでは、ユーザー指定のプロパティの `set` アクセサーと `get` アクセサーが呼び出されることがあります。 また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネル インフラストラクチャで、 クラスのユーザー指定の派生クラスが呼び出されることもあります。 + + コード作成者は、コードにセキュリティの脆弱性が存在しないことを確認する必要があります。 たとえば、整数型のデータ メンバー プロパティを使用してデータ コントラクト型を作成し、`set` アクセサー実装でこのプロパティ値に基づいて配列を割り当てた場合、悪質なメッセージにこのデータ メンバーの極端に大きな値が含まれていると、サービス拒否攻撃の危険にさらされることになります。 一般的に、受信データに基づく割り当てや、ユーザー指定のコードでの長時間に及ぶ処理は回避します \(特に、長時間に及ぶ処理が少量の受信データによって発生する可能性がある場合\)。 ユーザー指定のコードのセキュリティ分析を実行するときは、必ず失敗した場合 \(つまり、例外をスローするすべてのコード分岐\) も考慮してください。 + + ユーザー指定コードの特に重要な例は、各操作に対するサービス実装内部のコードです。 サービス実装のセキュリティを確保することはユーザーの責任です。 サービス拒否の脆弱性を生じるような、セキュリティで保護されていない操作実装は、不注意によって容易に作成されてしまいます。 たとえば、文字列を受け取り、名前がその文字列で始まる顧客のリストをデータベースから返す操作があるとします。 使用しているデータベースの規模が大きく、渡された文字列が 1 文字の場合、ユーザーのコードは、使用可能なメモリより大きなメッセージを作成しようとする可能性があります。これによって、サービス全体が失敗します \( では [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] を回復できないため、アプリケーションは必ず強制終了されます\)。 + + 悪質なコードがさまざまな機能拡張ポイントに接続されないようにする必要があります。 これが特に関係するのは、部分信頼で実行する場合、部分信頼アセンブリの型を処理する場合、または部分信頼コードで使用できるコンポーネントを作成する場合です。 詳細については、後のセクションの「部分信頼に関する脅威」を参照してください。 + + 部分信頼で実行する場合、データ コントラクトのシリアル化インフラストラクチャがサポートするのは、データ コントラクト プログラミング モデルの一部のサブセットのみです。たとえば、 属性を使用するプライベート データ メンバーや型はサポートされません。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [部分信頼](../../../../docs/framework/wcf/feature-details/partial-trust.md)。 + +## 意図しない情報公開の回避 + セキュリティを念頭に置いてシリアル化可能な型を設計するとき、情報の漏えい公開は考慮事項の 1 つです。 + + 次の点を考慮してください。 + +- プログラミング モデルでは、シリアル化中に型またはアセンブリの外側で、プライベートな内部データの公開が許可されます。 さらに、スキーマのエクスポート時に型の形状が公開されることがあります。 必ず、型のシリアル化射影について理解してください。 型を公開しない場合は、シリアル化を無効にします \(たとえば、データ コントラクトの場合、 属性を適用しないことによって無効にします\)。 + +- 使用するシリアライザーによっては、同じ型に対して複数のシリアル化射影が存在することがあります。 また、同じ型であっても、 を使用したときに公開されるデータ セットと、 を使用したとき公開されるデータ セットが異なる可能性があります。 使用するシリアライザーを誤ると、情報の漏えいを招く場合があります。 + +- 従来のリモート プロシージャ コール \(RPC\)\/エンコード モードで を使用すると、送信側のオブジェクト グラフの形状が誤って受信側に公開されることがあります。 + +## サービス拒否攻撃の防止 + +### クォータ + 受信側で大量のメモリ割り当てが発生した場合、サービス拒否攻撃の可能性があります。 ここでは、主に大きいメッセージが原因で起こるメモリ消費の問題について説明しますが、攻撃には他の種類もあります。 たとえば、メッセージに過度の処理時間が使用される場合があります。 + + サービス拒否攻撃の緩和には通常、クォータを使用します。 クォータを超えると、通常は 例外がスローされます。 クォータが設定されていないと、悪質なメッセージが使用可能なすべてのメモリにアクセスし、 例外が発生したり、使用可能なすべてのスタックにアクセスし、 例外が発生したりする可能性があります。 + + クォータが超過した状況は、回復可能です。実行中のサービスでこの状況が発生した場合、現在処理されているメッセージは破棄されますが、サービスの実行は続行され、次のメッセージが処理されます。 ただし、メモリ不足とスタック オーバーフローの場合は、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] のどの場所でも回復不可能です。このような例外が発生した場合、サービスは強制終了されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のクォータには、事前割り当ては含まれません。 たとえば、さまざまなクラスにある クォータを 128 KB に設定した場合、各メッセージに 128 KB が自動的に割り当てられるわけではありません。 実際の割当量は、実際の受信メッセージのサイズによって異なります。 + + トランスポート層には、利用できるクォータが多数あります。 使用しているトランスポート チャネル \(HTTP、TCP など\) によって指定されるクォータもあります。 ここでは、これらのクォータの一部について説明しますが、詳細については、「[トランスポート クォータ](../../../../docs/framework/wcf/feature-details/transport-quotas.md)」を参照してください。 + +### ハッシュ テーブルの脆弱性 + データ コントラクトにハッシュ テーブルまたはコレクションが含まれている場合は脆弱性が存在します。 多数の値がハッシュ テーブルに挿入されると問題が発生します。ハッシュ テーブルでは、このような多数の値によって同じハッシュ値が生成されます。 これは、DOS 攻撃に使用される可能性があります。 この脆弱性は、MaxRecievedMessageSize バインディング クォータを設定すると軽減できます。 このような攻撃を防ぐためにこのクォータを設定している場合は注意が必要です。 このクォータにより、WCF メッセージのサイズに上限が設定されます。 また、データ コントラクトではハッシュ テーブルやコレクションを使用しないようにしてください。 + +## メモリ消費の制限 \(ストリーミングなしの場合\) + 大きいメッセージに関するセキュリティ モデルは、ストリーミングが使用されているかどうかによって異なります。 ストリーミングを使用しない基本的なケースでは、メッセージはメモリにバッファーされます。 この場合、 またはシステム指定のバインディングで クォータを使用して、アクセスするメッセージの最大サイズを制限することによって、サイズの大きいメッセージからシステムを保護します。 サービスが複数のメッセージを同時に処理していることがありますが、この場合、メッセージはすべてメモリ内にあります。 この脅威を軽減するには、調整機能を使用します。 + + また、`MaxReceivedMessageSize` ではメッセージごとのメモリ消費に対して上限値が設定されませんが、メッセージごとのメモリ消費が定数係数以内に制限されます。 たとえば、`MaxReceivedMessageSize` が 1 MB のときに 1 MB のメッセージを受信し、逆シリアル化した場合、逆シリアル化されたオブジェクト グラフを格納するために追加のメモリが必要となるため、メモリの総消費量が 1 MB を超えることになります。 このため、受信するデータは大きくなくてもメモリ消費量が極端に大きくなるような、シリアル化可能な型は作成しないようにします。 たとえば、50 個の省略可能なデータ メンバー フィールドと 100 個のプライベート フィールドが設定されたデータ コントラクト "MyContract" が、"\" という XML 構造でインスタンス化されるとします。 この XML は、150 個のフィールドに対応するメモリにアクセスすることになります。 既定では、このデータ メンバーは省略可能です。 このような型が配列に含まれていると、問題はさらに悪化します。 + + `MaxReceivedMessageSize` だけでは、すべてのサービス拒否攻撃を防止できません。 たとえば、受信メッセージによって、デシリアライザーが深く入れ子になったオブジェクト グラフ \(オブジェクトに別のオブジェクトが格納され、その別のオブジェクトにさらに別のオブジェクトが格納されているということが繰り返されているオブジェクト\) を逆シリアル化することを強制される場合があります。 は、このオブジェクト グラフを逆シリアル化するために入れ子形態でメソッドを呼び出します。 メソッド呼び出しがレベルの深い入れ子構造になっていると、回復不可能な が発生する可能性があります。 この脅威は、このトピックの後半の「XML の安全な使用」で説明するように、 クォータを設定して、XML の入れ子レベルを制限することによって軽減できます。 + + バイナリ XML エンコーディングを使用する場合は、追加のクォータを `MaxReceivedMessageSize` に設定することが特に重要です。 バイナリ エンコーディングの使用は、圧縮に似ているところがあります。受信メッセージ内の少量のバイトで、大量のデータが表されていることがあります。 したがって、`MaxReceivedMessageSize` の制限に収まるメッセージでも、完全に展開された形式では、さらに多くのメモリを消費する可能性があります。 このような XML 固有の脅威を軽減するには、すべての XML リーダーのクォータを、このトピックの後半の「XML の安全な使用」で説明するとおりに設定する必要があります。 + +## メモリ消費の制限 \(ストリーミングありの場合\) + ストリーミング中、`MaxReceivedMessageSize` の設定値を小さくすることで、サービス拒否攻撃を防止できます。 ただし、ストリーミングを伴う場合、状況が複雑になります。 たとえば、ファイル アップロード サービスでは使用可能なメモリより大きいファイルが許容されます。 この場合、メモリにバッファーされるデータはほとんどなく、メッセージが直接ディスクにストリーミングされると予測して、`MaxReceivedMessageSize` を非常に大きな値に設定します。 何らかの方法で悪質なメッセージがデータをストリーミングするのではなく、バッファーに格納することを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に強制した場合、メッセージが使用可能なすべてのメモリにアクセスする状況を `MaxReceivedMessageSize` で防ぐことはできなくなります。 + + この脅威を軽減するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に含まれる複数のデータ処理コンポーネントには、バッファー化を制限するためのクォータ設定が存在します。 この中で最も重要なのは、複数のトランスポート バインド要素と標準バインディングに存在する `MaxBufferSize` プロパティです。 ストリーミングを使用する場合は、メッセージごとに割り当て可能なメモリの最大量を考慮して、このクォータを設定する必要があります。`MaxReceivedMessageSize` と同様、この設定ではメモリ消費の絶対的な最大値が設定されるのではなく、メモリ消費が定数係数以内に制限されるだけです。 また、`MaxReceivedMessageSize` の場合と同じく、複数のメッセージが同時に処理されている可能性もあります。 + +### MaxBufferSize の詳細 + `MaxBufferSize` プロパティは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が実行するすべての大量バッファーを制限します。 たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では常に、SOAP ヘッダーと SOAP エラー、さらに MTOM \(Message Transmission Optimization Mechanism\) メッセージ内で自然な読み取り順序ではないことが検出された MIME パートがバッファー化されます。 この設定では、このようなすべての状況でバッファー量が制限されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、バッファー化を行う可能性がある多様なコンポーネントに `MaxBufferSize` の値を渡すことによって、この制限を実現します。 たとえば、 クラスの一部の オーバーロードは、`maxSizeOfHeaders` パラメーターを受け取ります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、このパラメーターに `MaxBufferSize` の値を渡して、SOAP ヘッダーのバッファー量を制限します。 クラスを直接使用する場合、このパラメーターを設定することが重要です。 通常、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でクォータ パラメーターを受け取るコンポーネントを使用する場合、このパラメーターのセキュリティに対する影響を理解し、正しく設定することが重要です。 + + MTOM メッセージ エンコーダーには、`MaxBufferSize` 設定もあります。 標準バインディングを使用する場合、この値は自動的にトランスポート レベルの `MaxBufferSize` に設定されます。 ただし、MTOM メッセージ エンコーダーのバインド要素を使用してカスタム バインディングを作成する場合、ストリーミングの使用時には `MaxBufferSize` プロパティを安全な値に設定することが重要です。 + +## XML ベースのストリーミング攻撃 + ストリーミングが予想される場合、`MaxBufferSize` だけでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によるバッファー化が強制されないようにすることができません。 たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の XML リーダーは、新しい要素の読み取りを開始すると、必ず XML 要素の開始タグ全体をバッファー化します。 この処理は、名前空間と属性を適切に処理するために行われます。 \(たとえば、大きいファイルを直接ディスクにストリーミングするシナリオを可能にする目的で\) `MaxReceivedMessageSize` が大きい値に設定されている場合、メッセージの本文全体が大きい XML 要素の開始タグであるような、悪質なメッセージが作成される可能性があります。 このメッセージを読み取ろうとすると、 が発生します。 これは、XML ベースのサービス拒否攻撃の 1 つです。このような XML ベースのサービス拒否攻撃はすべて、このトピックの後半の「XML の安全な使用」で説明する XML リーダーのクォータを使用して軽減できます。 ストリーミングを使用する場合、これらのクォータをすべて設定することが特に重要です。 + +### ストリーミングとバッファー プログラミング モデルの混在 + 攻撃の多くは、同じサービス内にストリーミングとストリーミング以外のプログラミング モデルを混在させることによって発生することが考えられます。 2 つの操作が設定されたサービス コントラクトがあるとします。一方は を使用し、他方はカスタム型の配列を使用します。 また、1 つ目の操作で、大きいストリームを処理できるように、`MaxReceivedMessageSize` が大きい値に設定されているとします。 この場合、大きいメッセージを 2 つ目の操作でも受け取れることになってしまいます。デシリアライザーは、操作が呼び出される前にデータを配列としてメモリにバッファー化します。 この状況では、サービス拒否攻撃が発生する可能性があります。`MaxBufferSize` クォータでは、メッセージ本文のサイズ、つまり、デシリアライザーが処理するデータのサイズは制限できません。 + + このため、同じコントラクトにストリーム ベースの操作とストリーム以外の操作を混合しないようにしてください。 この 2 つのプログラミング モデルを混合する必要がある場合は、次の予防策を使用します。 + +- プロパティを に設定して、`true` 機能を無効にします。 これによって、コントラクトの一部であるメンバーだけが逆シリアル化されます。 + +- プロパティを安全な値に設定します。 このクォータは、 属性または構成からも操作できます。 このクォータは、1 回の逆シリアル化で逆シリアル化されるオブジェクトの数を制限します。 通常、1 回の逆シリアル化で、メッセージ コントラクト内の 1 つの操作パラメーターまたはメッセージ本文が逆シリアル化されます。 配列を逆シリアル化する場合、各配列エントリは個別のオブジェクトとしてカウントされます。 + +- すべての XML リーダーのクォータを安全な値に設定します。、および に注意して、ストリーミング以外の操作で文字列の使用を避けます。 + +- 既知の型のリストを確認し、ここにある型はいつでもインスタンス化が可能であることを覚えておいてください \(このトピックの後半の「意図しない型の読み込み防止」を参照\)。 + +- インターフェイスを実装して大量のデータをバッファー化する型は使用しないようにします。 このような型は既知の型のリストに追加しないでください。 + +- の各配列や、 を実装する型をコントラクトで使用しないでください。 + +- の各配列や、 を実装する型は、既知の型のリストで使用しないでください。 + + 前述の予防策は、ストリーミング以外の操作で を使用する場合に適用できます。 を使用している場合、これには クォータによる保護がないので、同じサービスにストリーミングとストリーミング以外のプログラミング モデルを絶対に混在させないでください。 + +### 遅いストリームによる攻撃 + ストリーミング サービス拒否攻撃では、メモリ消費は発生しません。 代わりに、この攻撃では送信側または受信側でデータの転送が遅くなります。 データが送信または受信されるのを待っている間、スレッドや利用可能な接続などのリソースが消耗します。 この状況は、悪質な攻撃を受けた結果として、または正当な送信側または受信側が遅いネットワーク接続を使用していることが原因で起こる可能性があります。 + + この攻撃を軽減するには、トランスポートのタイムアウトを適切に設定します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [トランスポート クォータ](../../../../docs/framework/wcf/feature-details/transport-quotas.md)。 また、`Read` でストリームを処理するときは、同期 `Write` 操作または同期 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 操作を使用しないでください。 + +## XML の安全な使用 + +> [!NOTE] +> このセクションは XML に関するものですが、ここに記載された情報は、JSON \(JavaScript Object Notation\) ドキュメントにも該当します。[JSON と XML 間のマッピング](../../../../docs/framework/wcf/feature-details/mapping-between-json-and-xml.md)を使用することで、クォータは同様に機能します。 + +### セキュリティで保護された XML リーダー + XML Infoset は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でのすべてのメッセージ処理の基礎となります。 信頼できない送信元からの XML データを受け入れる場合、多数のサービス拒否攻撃が存在する可能性があり、これを軽減する必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、セキュリティで保護された特別な XML リーダーが用意されています。 このリーダーは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で標準エンコーディング \(テキスト、バイナリ、MTOM\) のいずれかを使用しているときに自動的に作成されます。 + + このリーダーでは、一部のセキュリティ機能が常にアクティブです。 たとえば、このリーダーは文書型定義 \(DTD\) を処理しません。文書型定義は、サービス拒否攻撃のソースの 1 つになり得るものであり、正当な SOAP メッセージに使用すべきではありません。 他のセキュリティ機能としてリーダーのクォータがあり、これらを設定する必要があります。この機能については、次のセクションで説明します。 + + XML リーダーを直接操作するとき \(カスタム エンコーダーを記述するときや、 クラスを直接操作するときなど\)、信頼できないデータを処理する可能性がある場合は必ず、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティで保護されたリーダーを使用します。 セキュリティで保護されたリーダーは、 クラス上で 、または の静的ファクトリ メソッドのオーバーロードのいずれかを呼び出すことによって作成します。 リーダーを作成したら、安全なクォータ値を渡します。`Create` メソッドのオーバーロードを呼び出さないでください。 オーバーロードを呼び出しても [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のリーダーは作成されません。 作成されるのは、このセクションで説明したセキュリティ機能で保護されていないリーダーです。 + +### リーダーのクォータ + セキュリティで保護された XML リーダーには、5 つの設定可能なクォータがあります。 これらのクォータは通常、標準バインディングまたはエンコーディング バインド要素で `ReaderQuotas` プロパティを使用するか、リーダーの作成時に渡される オブジェクトを使用して設定します。 + +#### MaxBytesPerRead + このクォータは、要素の開始タグとその属性を読み取るときに、1 回の `Read` 操作で読み取るバイト数を制限します \(ストリーミングを使用しない場合、要素名自体がクォータに照らし合わせてカウントされることはありません\)。 が重要な理由は、次のとおりです。 + +- 要素名とその属性は、読み取り時に必ずメモリ内でバッファー化されます。 このため、ストリーミングが予想されるときにこのクォータをストリーミング モードで適切に設定して、過度のバッファーを防止することが重要です。 実行されるバッファリングの実際の量については、`MaxDepth` クォータのセクションを参照してください。 + +- XML 属性が多すぎると、属性名は一意かどうかを確認する必要があるため、処理時間が大幅に増加する可能性があります。`MaxBytesPerRead` によってこの脅威を軽減できます。 + +#### MaxDepth + このクォータは、XML 要素の入れ子の深さの最大値を制限します。 たとえば、ドキュメント "\\\\<\/B\>\<\/A\>" には 3 レベルの入れ子があります。 が重要な理由は、次のとおりです。 + +- `MaxDepth` は `MaxBytesPerRead` と相互に関係しています。リーダーは常に、現在の要素とそのすべての先祖に関するデータをメモリ内に維持します。このため、リーダーのメモリ消費の最大値は、この 2 つの設定値の積に比例します。 + +- 深く入れ子になったオブジェクト グラフを逆シリアル化する場合、デシリアライザーはスタック全体にアクセスし、回復不可能な をスローするしかありません。 の場合も の場合も、XML の入れ子構造とオブジェクトの入れ子構造との間に直接的な相関関係が存在します。 この脅威を軽減するには、`MaxDepth` を使用します。 + +#### MaxNameTableCharCount + このクォータは、リーダーの *nametable* のサイズを制限します。 nametable には、XML ドキュメントを処理するときに出現する特定の文字列 \(名前空間やプレフィックスなど\) が入っています。 この文字列はメモリ内でバッファー化されるので、ストリーミングが予想されるときは、このクォータを設定して過度のバッファーを防止します。 + +#### MaxStringContentLength + このクォータは、XML リーダーが返す文字列の最大サイズを制限します。 このクォータは、XML リーダー自体のメモリ消費は制限しませんが、このリーダーを使用するコンポーネントのメモリ消費を制限します。 たとえば、 でセキュリティ保護されたリーダーを使用するときは、このクォータを超える文字列を逆シリアル化することはありません。 クラスを直接使用すると、すべてのメソッドではなく、文字列を読み取ることを目的としたメソッド \( メソッドなど\) だけがこのクォータに従います。 リーダー上の プロパティはこのクォータの影響を受けないので、このクォータによる保護が必要な場合はこのプロパティを使用しないでください。 + +#### MaxArrayLength + このクォータは、XML リーダーが返すプリミティブ配列 \(バイト配列など\) の最大サイズを制限します。 このクォータは、XML リーダー自体のメモリ消費は制限しませんが、このリーダーを使用するコンポーネントのメモリ消費を制限します。 たとえば、 でセキュリティ保護されたリーダーを使用するときは、このクォータを超えるバイト配列を逆シリアル化することはありません。 1 つのコントラクトでストリーミングとバッファー プログラミング モデルを混合する場合は、このクォータを設定することが重要です。 クラスを直接使用すると、特定のプリミティブ型の任意のサイズの配列を読み取ることを目的としたメソッド \( メソッドなど\) だけがこのクォータに従います。 + +## バイナリ エンコーディングに固有の脅威 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がサポートするバイナリ XML エンコーディングには、*ディクショナリ文字列*機能があります。 長い文字列をわずかなバイト数でエンコードすることができます。 これによって、パフォーマンスは大幅に向上しますが、新たなサービス拒否攻撃の脅威を招き、その対策が必要になります。 + + ディクショナリには、*静的ディクショナリ*と*動的ディクショナリ*の 2 種類があります。 静的ディクショナリは、バイナリ エンコーディングで短いコードを使用して表現できる長い文字列の組み込みリストです。 この文字列のリストは、リーダーの作成時に固定され、変更できません。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が既定で使用する静的ディクショナリ内の文字列はいずれも、重大なサービス拒否攻撃の脅威を招くほど長くありません。ただし、ディクショナリ拡大攻撃に使用される可能性はあります。 独自の静的ディクショナリを使用する高度なシナリオでは、長いディクショナリ文字列を追加するときに注意が必要です。 + + 動的ディクショナリ機能では、メッセージで独自の文字列を定義し、その文字列を短いコードに関連付けることができます。 この文字列とコードのマッピングは、通信セッション中にメモリに格納されるので、後続のメッセージは文字列を再送信する必要がなく、既に定義されているコードを利用できます。 この文字列は、任意の長さになるので、静的ディクショナリの場合よりも重大な脅威を招く可能性があります。 + + 軽減する必要がある第 1 の脅威は、動的ディクショナリ \(文字列とコードのマッピング テーブル\) が大きくなりすぎる可能性です。 このディクショナリは、複数のメッセージを処理するうちに拡大する可能性があります。`MaxReceivedMessageSize` クォータは各メッセージに個別に適用されるだけなので、このクォータで保護することはできません。 このため、 にはディクショナリのサイズを制限する個別の プロパティがあります。 + + 他のほとんどのクォータと異なり、このクォータはメッセージの書き込み時にも適用されます。 メッセージの読み取り時にこのクォータを超えた場合は、`QuotaExceededException` が通常どおりスローされます。 メッセージの書き込み時にこのクォータを超えた場合は、クォータの超過を引き起こす文字列はそのまま書き込まれますが、動的ディクショナリ機能は使用されません。 + +### ディクショナリ拡大攻撃 + 重大なバイナリ固有の攻撃は、ディクショナリの拡大が原因で発生します。 文字列ディクショナリ機能を利用した場合、バイナリ形式の小さいメッセージが、完全に展開されたテキスト形式では非常に大きいメッセージになることがあります。 動的ディクショナリの文字列がディクショナリ全体の最大サイズを超えることはないため、動的ディクショナリの文字列の拡大要因は、 クォータで制限できます。 + + 、`MaxStringContentLength`、および `MaxArrayLength` の各プロパティで制限されるのは、メモリ消費だけです。 メモリ使用量は `MaxReceivedMessageSize` によって既に制限されているため、通常、ストリーミングを使用しない状況で脅威を軽減するためにこれらのプロパティを使用する必要はありません。 ただし、`MaxReceivedMessageSize` では、展開前のバイト数がカウントされます。 バイナリ エンコーディングを使用しているとき、メモリ消費は、`MaxReceivedMessageSize` という因数によってのみ制限される、 を超える可能性があります。 このため、バイナリ エンコーディングを使用するときはすべてのリーダーのクォータ \(特に \) を必ず設定することが重要です。 + + と共にバイナリ エンコーディングを使用する場合、`IExtensibleDataObject` インターフェイスを誤用して、ディクショナリ拡大攻撃を引き起こす可能性があります。 このインターフェイスは、コントラクトの一部でない任意のデータに対して無制限のストレージを提供します。`MaxSessionSize` に `MaxReceivedMessageSize` を掛けた値によって問題が起こらない程度に低くクォータを設定できない場合は、バイナリ エンコーディングを使用するときに `IExtensibleDataObject` 機能を無効にします。`IgnoreExtensionDataObject` 属性では `true` プロパティを `ServiceBehaviorAttribute` に設定します。 または `IExtensibleDataObject` インターフェイスを実装しないという方法もあります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [上位互換性のあるデータ コントラクト](../../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md)。 + +### クォータの概要 + 次の表では、クォータを使用するときのヒントを示します。 + +|条件|設定が重要なクォータ| +|--------|----------------| +|ストリーミングのない、またはストリーミングのある小さいメッセージ、テキスト、MTOM エンコーディング|`MaxReceivedMessageSize`、`MaxBytesPerRead`、および `MaxDepth`| +|ストリーミングのない、またはストリーミングのある小さいメッセージ、バイナリ エンコーディング|`MaxReceivedMessageSize`、`MaxSessionSize`、およびすべての `ReaderQuotas`| +|大きいストリーミング メッセージ、テキスト、MTOM エンコーディング|`MaxBufferSize` およびすべての `ReaderQuotas`| +|大きいストリーミング メッセージ、バイナリ エンコーディング|`MaxBufferSize`、`MaxSessionSize`、およびすべての `ReaderQuotas`| + +- トランスポート レベルのタイムアウトを常に設定する必要があります。ストリーミングを使用するときは、ストリーミングするメッセージが大きいか小さいかに関係なく、同期読み取りと書き込みを使用しないでください。 + +- クォータについて確信がない場合は、そのクォータを未決定のままにするのではなく、安全な値を設定します。 + +## 悪質なコードの実行の防止 + 主に、次の種類の脅威が、コードを実行し、意図しない結果をもたらす可能性があります。 + +- デシリアライザーが、悪質、安全でない、またはセキュリティに注意する必要がある型を読み込んでしまう。 + +- 受信メッセージが原因で、デシリアライザーが通常は安全な型のインスタンスを作成する際に、意図しない結果を引き起こすようなインスタンスが生成されてしまう。 + + 次の各セクションで、これらの種類の脅威について詳しく説明します。 + +## DataContractSerializer + \( のセキュリティ情報については、関連ドキュメントを参照してください\)。 のセキュリティ モデルは、 のセキュリティ モデルに似ていますが、細かい部分が異なります。 たとえば、型を含めるために、 属性ではなく 属性が使用されます。 に固有のいくつかの脅威については、このトピックの後半で説明します。 + +### 意図しない型の読み込み防止 + 意図しない型を読み込むと、その型が悪質である場合も、単にセキュリティに影響するような副作用がある型の場合も、重大な結果を引き起こす可能性があります。 型は、悪用されやすいセキュリティの脆弱性を含んでいたり、その型のコンストラクターまたはクラス コンストラクターでセキュリティに影響するアクションを実行したりする可能性があります。また、サービス拒否攻撃の実行を容易にしてしまうほどメモリ フットプリントが大きい場合や、回復不可能な例外をスローする場合もあります。 型には、インスタンスが作成されるよりも前に、その型が読み込まれると直ちに実行されるクラス コンストラクターが用意されている可能性があります。 これらの理由から、デシリアライザーがどのような型を読み込むかを制御することが重要です。 + + での逆シリアル化は、疎結合的な方法で行われます。 共通言語ランタイム \(CLR\) 型とアセンブリ名は、受信データから読み取られません。 これは、 の動作と似ていますが、、および の動作とは異なります。 疎結合的な方法をとることによって、ある程度の安全を確保できます。リモートの攻撃者は、メッセージ内で型の名前を示すだけでは、意図した型が読み込まれるように指定することができません。 + + は常に、コントラクトに基づいて現在予期される型を読み込むことができます。 たとえば、データ コントラクトに `Customer` 型のデータ メンバーが含まれている場合、 は、このデータ メンバーを逆シリアル化するときに `Customer` 型を読み込むことができます。 + + また、 はポリモーフィズムをサポートします。 データ メンバーを として宣言しておき、受信データに `Customer` インスタンスを含めることができます。 これが可能なのは、次のいずれかのメカニズムにより、`Customer` 型がデシリアライザーに対して既知の型になっている場合だけです。 + +- 型に 属性を適用する。 + +- `KnownTypeAttribute` 属性で、型のリストを返すメソッドを指定する。 + +- `ServiceKnownTypeAttribute` 属性を使用する。 + +- `KnownTypes` 構成セクションを使用する。 + +- 構築時に に既知の型のリストを明示的に渡す \(シリアライザーを直接使用している場合\)。 + + これらのメカニズムを使用すると、デシリアライザーが読み込むことのできる型が追加されるので、攻撃を受け得る表面積は拡大します。 既知の型リストに、悪質な型または意図しない型が追加されることのないように、これらのメカニズムを制御する必要があります。 + + 型が既知の型リストに追加されると、コントラクトでその型の使用が禁止されている場合でも、その型をいつでも読み込むことができ、その型のインスタンスを作成できるようになります。 たとえば、前述のメカニズムのいずれかを使用して "MyDangerousType" という型が既知の型のリストに追加されるとします。 これによって、次のことが起こります。 + +- `MyDangerousType` が読み込まれ、そのクラス コンストラクターが実行されます。 + +- 文字列データ メンバーが指定されたデータ コントラクトを逆シリアル化している場合でも、悪質なメッセージによって `MyDangerousType` のインスタンスが作成される可能性があります。 プロパティの setter など、`MyDangerousType` のコードが実行される可能性があります。 その後で、デシリアライザーが文字列データ メンバーにこのインスタンスを割り当てる動作を試行し、例外が発生して失敗します。 + + 既知の型のリストを返すメソッドを作成する場合、またはリストを直接 コンストラクターに渡す場合は、リストを準備するためのコードをセキュリティで保護し、信頼されたデータだけを操作対象にします。 + + 構成で既知の型を指定する場合は、構成ファイルをセキュリティで保護します。 構成では必ず厳密な名前を使用します \(型が含まれている署名付きアセンブリの公開キーを指定します\)。ただし、読み込む型のバージョンは指定しないでください。 型ローダーにより、可能であれば最新のバージョンが自動的に選択されます。 セキュリティの脆弱性を持つ型の場合、その脆弱性が今後のバージョンで修正される可能性があります。しかし、構成でバージョンを明示的に指定していると、脆弱なバージョンが引き続き読み込まれます。構成で特定のバージョンを指定した場合には、このリスクを負うことになります。 + + 既知の型が多すぎると、もう 1 つ問題が生じます。 は、アプリケーション ドメインでシリアル化コードまたは逆シリアル化コードのキャッシュを作成し、シリアル化または逆シリアル化する必要がある型ごとにエントリを作成します。 このキャッシュは、アプリケーション ドメインの実行中はクリアされません。 このため、アプリケーションに多くの既知の型が使用されていることを知る攻撃者は、これらの既知の型がすべて逆シリアル化され、キャッシュで大量のメモリが消費されるように仕向けることが可能です。 + +### 型の意図しない状態の防止 + 型には、従う必要がある内部の一貫性に対する制約が存在することがあります。 逆シリアル化中にこの制約に違反しないように注意する必要があります。 + + 次の型は、宇宙船でのエアロックの状態を表します。この型では、内側のドアと外側のドアを両方同時に開くことはできないという制約が適用されます。 + + [!code-csharp[DataContractAttribute#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/datacontractattribute/cs/overview.cs#3)] + [!code-vb[DataContractAttribute#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/datacontractattribute/vb/overview.vb#3)] + + 攻撃者は、次のような悪質なメッセージを送信することによってこの制約を迂回し、オブジェクトを無効な状態にする可能性があります。これにより、意図しない予測不可能な結果を招くおそれがあります。 + +``` + + true + true + +``` + + このような状況は、次の点を知っていると防止できます。 + +- で逆シリアル化が行われる際に、ほとんどのクラスで、コンストラクターが実行されません。 このため、コンストラクターで実行される状態管理には依存できません。 + +- コールバックを使用して、オブジェクトを確実に有効な状態にします。 属性でマークされたコールバックは、逆シリアル化の完了後に実行され、全体の状態を調査して訂正できるので便利です。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [バージョン トレラントなシリアル化コールバック](../../../../docs/framework/wcf/feature-details/version-tolerant-serialization-callbacks.md)。 + +- データ コントラクト型は、プロパティの setter が特定の順序で呼び出されなくてもよいように設計します。 + +- 属性でマークされた従来の型を使用する場合は十分に注意します。 このような型のほとんどは、信頼されたデータのみで使用するために、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] リモート処理で操作することを目的に設計されています。 この属性でマークされた既存の型は、状態の安全性を考えて設計されていない可能性があります。 + +- 状態の安全性に関しては、データの存在を保証するために、 属性の `DataMemberAttribute` プロパティに依存することはできません。 データは常に `null`、`zero`、または `invalid` になります。 + +- 信頼できないデータ ソースから逆シリアル化されたオブジェクト グラフは、検証せずに信頼してはいけません。 各オブジェクトが整合状態にあっても、オブジェクト グラフ全体としては整合状態にない場合があります。 さらに、オブジェクト グラフの保存モードが無効になっている場合でも、逆シリアル化されたグラフに、同じオブジェクトへの複数の参照または循環参照が存在することがあります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [シリアル化と逆シリアル化](../../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md)。 + +### NetDataContractSerializer の安全な使用 + は、型に対して密結合を使用するシリアル化エンジンです。 これは、 および に類似しています。 つまり、このシリアル化エンジンでは、受信データから [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] アセンブリと型名を読み取って、インスタンス化する型を決定します。 このシリアル化エンジンは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の一部ですが、このエンジンにプラグインする方法は用意されていないため、カスタム コードを記述する必要があります。`NetDataContractSerializer` は、主に、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] リモート処理から [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] への移行を容易にするためのものです。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][シリアル化と逆シリアル化](../../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md)」の関連セクションを参照してください。 + + 読み込むことができる型はメッセージ自身が示すことができるため、 のメカニズムは本質的にセキュリティで保護されていません。このエンジンでは、信頼されたデータだけを使用してください。 プロパティを使用して、セキュリティで保護され、型を限定する型バインダーを記述して、安全な型の読み込みだけを許可することによって、このエンジンをセキュリティで保護された状態にすることができます。 + + 信頼されたデータを使用している場合でも、特に プロパティが に設定されている場合は、読み込む型が受信データで適切に指定されないことがあります。 アプリケーションのディレクトリまたはグローバル アセンブリ キャッシュにアクセスできればだれにでも、読み込むべき型の代わりに、悪質な型を配置することができます。 アクセス許可を適切に設定することによって、アプリケーション ディレクトリとグローバル アセンブリ キャッシュのセキュリティを必ず確保してください。 + + 通常、部分信頼コードで `NetDataContractSerializer` インスタンスにアクセスしたり、サロゲート セレクター \(\) やシリアル化バインダー \(\) を制御したりできるようにすると、コードによってシリアル化と逆シリアル化のプロセスが細かく制御される可能性があります。 たとえば、コードによって任意の型が挿入されたり、情報漏えいにつながったりする場合があります。また、生成されたオブジェクト グラフやシリアル化されたデータが改ざんされたり、生成されたシリアル化ストリームをオーバーフローさせたりする場合もあります。 + + `NetDataContractSerializer` に関するもう 1 つのセキュリティの問題は、悪質なコードの実行ではなく、サービス拒否攻撃です。`NetDataContractSerializer` を使用する場合は、必ず クォータを安全な値に設定してください。 サイズがこのクォータでしか制限されないようなオブジェクトであれば、そのオブジェクトの配列を割り当てるための悪質な小さいメッセージを作成することは容易です。 + +### XmlSerializer 固有の脅威 + のセキュリティ モデルは、 のセキュリティ モデルに似ています。 ただし、 に固有の脅威がいくつか存在します。 + + は、実際にシリアル化と逆シリアル化を実行するコードが含まれた*シリアル化アセンブリ*を実行時に生成します。これらのアセンブリは、ファイルの一時ディレクトリに作成されます。 他のプロセスまたはユーザーがこのディレクトリにアクセスできる場合は、シリアル化または逆シリアル化のコードが任意のコードで上書きされる可能性があります。 その結果、シリアル化または逆シリアル化のコードではなく、上書き後のコードのセキュリティ コンテキストを使用して、 がこのコードを実行します。 一時ファイルのディレクトリへのアクセス許可が適切に設定されていることを確認し、この状況が起こらないようにしてください。 + + には、シリアル化アセンブリを実行時に生成するのではなく、事前生成済みのシリアル化アセンブリを使用するモードもあります。 このモードは、 が適切なシリアル化アセンブリを検出できるとトリガーされます。 は、シリアル化アセンブリの署名に使用されているキーが、シリアル化する型を含むアセンブリの署名に使用されたものと同じであるかどうかをチェックします。 このチェックによって、シリアル化アセンブリに偽装した悪質なアセンブリからの保護が可能になります。 ただし、シリアル化可能な型を含むアセンブリが署名されていない場合、 はこのチェックを実行できず、正しい名前を持つ任意のアセンブリを使用することになります。 これによって、悪質なコードの実行が生じる可能性があります。 シリアル化可能な型が属するアセンブリに必ず署名するか、アプリケーション ディレクトリとグローバル アセンブリ キャッシュへのアクセスを厳密に制御することによって、悪質なアセンブリの侵入を防止します。 + + は、サービス拒否攻撃にもさらされる可能性があります。 には、\(`MaxItemsInObjectGraph` で利用できるような\) クォータがありません。 したがって、逆シリアル化されるオブジェクトの量は、メッセージ サイズによってのみ制限されるため、不定になります。 + +### 部分信頼に関する脅威 + 部分信頼で実行されているコードに関連する脅威について、以下の懸念事項に注意してください。 これらの脅威には、悪質な部分信頼コードと、他の攻撃シナリオと結びついた悪質な部分信頼コード \(特定の文字列を作成し、それを逆シリアル化する部分信頼コードなど\) があります。 + +- シリアル化コンポーネントを使用するときは、使用前にどのアクセス許可もアサートしないでください。これは、シリアル化シナリオ全体がアサートのスコープ内であり、信頼できないデータまたはオブジェクトは処理しない場合も同様です。 アクセス許可をアサートすると、セキュリティ上の脆弱性の原因となる場合があります。 + +- 部分信頼コードで拡張ポイント \(サロゲート\)、シリアル化する型、または他の方法によってシリアル化プロセスを制御している場合、部分信頼コードが原因でシリアライザーが大量のデータをシリアル化ストリームに出力し、このストリームの受信側に対してサービス拒否 \(DoS: Denial of Service\) を引き起こす可能性があります。 DoS の脅威の影響を受けやすいターゲットを対象とするデータをシリアル化する場合、部分信頼の型をシリアル化したり、部分信頼コードでシリアル化を制御したりしないでください。 + +- 部分信頼コードで インスタンスにアクセスしたり、[データ コントラクト サロゲート](../../../../docs/framework/wcf/extending/data-contract-surrogates.md) を制御したりできるようにすると、部分信頼コードによってシリアル化と逆シリアル化のプロセスが細かく制御される可能性があります。 たとえば、コードによって任意の型が挿入されたり、情報漏えいにつながったりする場合があります。また、生成されたオブジェクト グラフやシリアル化されたデータが改ざんされたり、生成されたシリアル化ストリームをオーバーフローさせたりする場合もあります。 に関する同等の脅威については、「NetDataContractSerializer の安全な使用」で説明しています。 + +- 属性が型 \(または `[Serializable]` ではなく `ISerializable` とマークされた型\) に適用されている場合、すべてのコンストラクターが非パブリックであるか、または要求で保護されている場合でも、デシリアライザーはこのような型のインスタンスを作成できます。 + +- 逆シリアル化されるデータが信頼できるものであり、すべての既知の型が信頼した型であることが確実である場合を除き、逆シリアル化の結果を信頼しないでください。 部分信頼で実行されている場合、既知の型はアプリケーション構成ファイルから読み込まれません \(ただし、コンピューター構成ファイルからは読み込まれます\)。 + +- 部分信頼コードに追加されたサロゲートと共に `DataContractSerializer` インスタンスを渡すと、コードによってそのサロゲートの変更可能な設定が変更される可能性があります。 + +- 逆シリアル化されたオブジェクトでは、XML リーダー \(またはそれに含まれるデータ\) が部分信頼コードからのものである場合、結果の逆シリアル化されたオブジェクトを信頼できないデータとして扱ってください。 + +- 型がパブリック メンバーを含んでいなくても、それに含まれるデータが安全であるとは限りません。 たとえば、特権が付与されたデータ ソースから、いくつかのデータを含むオブジェクトに逆シリアル化し、そのオブジェクトを部分信頼コードに渡した場合、部分信頼コードは、オブジェクトをシリアル化して `ExtensionDataObject` のデータを読み取ることができます。 特権が付与されたデータ ソースから、後で部分信頼コードに渡されるオブジェクトに逆シリアル化する場合は、 を `true` に設定するよう考慮してください。 + +- 完全信頼では、 および が、プライベート メンバー、プロテクト メンバー、内部メンバー、およびパブリック メンバーのシリアル化をサポートします。 一方、部分信頼ではパブリック メンバーのシリアル化のみが可能です。 アプリケーションがパブリック メンバー以外のメンバーのシリアル化を試みると、`SecurityException` がスローされます。 + + 部分信頼で内部メンバーまたはプロテクト内部メンバーをシリアル化するには、`System.Runtime.CompilerServices.InternalsVisibleTo` アセンブリ属性を使用します。 この属性を使用すると、アセンブリは内部メンバーが他のアセンブリから参照できることを宣言できます。 この場合、内部メンバーのシリアル化が必要なアセンブリは、その内部メンバーが System.Runtime.Serialization.dll から参照できることを宣言します。 + + この方法の利点は、昇格されたコード生成パスが不要なことです。 + + ただし、2 つの大きな欠点もあります。 + + 1 つ目の欠点は、`InternalsVisibleTo` 属性のオプトイン プロパティがアセンブリ全体に適用されることです。 つまり、特定のクラスに対してのみ内部メンバーのシリアル化を可能にするような指定はできません。 もちろん、`DataMember` 属性をメンバーに追加しないことで、特定の内部メンバーをシリアル化しないことは可能です。 同様に、メンバーをプライベート メンバーまたはプロテクト メンバーではなく内部メンバーにすることもできますが、参照可能範囲の問題が残ります。 + + 2 つ目の欠点は、プライベート メンバーやプロテクト メンバーがサポートされないことです。 + + 部分信頼での `InternalsVisibleTo` 属性の使用を理解するために、次のプログラムについて考えてみましょう。 + + [!code-csharp[CDF_WCF_SecurityConsiderationsForData#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/cdf_wcf_securityconsiderationsfordata/cs/program.cs#1)] + + 上の例で、`PermissionsHelper.InternetZone` は部分信頼の `PermissionSet` に対応します。 ここで、`InternalsVisibleToAttribute` を指定しなければ、パブリック メンバー以外のメンバーは部分信頼でシリアル化できないことを示す `SecurityException` がスローされてアプリケーションは失敗します。 + + ただし、ソース ファイルに次の行を追加すると、プログラムは正常に実行されます。 + + [!code-csharp[CDF_WCF_SecurityConsiderationsForData#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/cdf_wcf_securityconsiderationsfordata/cs/program.cs#2)] + +## 状態管理に関するその他の注意事項 + オブジェクトの状態管理に関してその他の注意すべき点を以下に示します。 + +- ストリーミング トランスポートでストリーム ベースのプログラミング モデルを使用した場合、メッセージが到着するとメッセージの処理が開始されます。 メッセージの送信側によってストリームの途中で送信操作が中止されることはあり得ますが、このとき続きのコンテンツを待機していた場合、コードの状態を予想できなくなります。 一般に、ストリームは完全であると考えないでください。また、ストリーミングが中止されたときにロールバックできないようなストリーム ベースの操作では、処理を行わないでください。 このことは、ストリーミングの本文の後に続くメッセージの形式が正しくない可能性があるような状況にも当てはまります \(たとえば、SOAP エンベロープの終了タグが不足している、または 2 つ目のメッセージ本文があるなど\)。 + +- `IExtensibleDataObject` 機能を使用すると、機密データが出力される可能性があります。`IExtensibleObjectData` を含むデータ コントラクトに、信頼できない送信元のデータを受け入れ、その後、メッセージが署名される、セキュリティで保護されたチャネルにそのデータを再送した場合、一切確認していないデータを保証していることになります。 さらに、既知のデータと不明なデータの両方を考慮すると、送信している全体の状態が無効になる可能性があります。 このような状況を回避するには、拡張データ プロパティを `null` に設定するか、`IExtensibleObjectData` 機能を無効にします。 + +## スキーマのインポート + 通常、型を生成するためにスキーマをインポートするプロセスは、設計時にのみ発生します。たとえば、クライアント クラスを生成するために Web サービス上で [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用しているときなどです。 ただし、さらに高度なシナリオでは、スキーマを実行時に処理することがあります。 この場合、サービス拒否攻撃の危険にさらされる可能性があることを覚えておく必要があります。 スキーマによっては、インポートに時間がかかる場合があります。 スキーマが信頼できないソースからのものである可能性がある場合は、このようなシナリオで のスキーマ インポート コンポーネントを使用しないでください。 + +## ASP.NET AJAX 統合に固有の脅威 + ユーザーが または を実装すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は XML メッセージと JSON メッセージの両方を受け入れることができるエンドポイントを公開します。 ただし、XML リーダーと JSON リーダーの両方が使用するリーダー クォータのセットは 1 つしかありません。 一部のクォータ設定が一方のリーダーには適切であっても、もう一方のリーダーには大きすぎる場合があります。 + + `WebScriptEnablingBehavior` を実装すると、ユーザーはエンドポイントで JavaScript プロキシを公開するオプションを使用できます。 セキュリティに関する次の問題を考慮する必要があります。 + +- JavaScript プロキシを調べることで、サービスに関する情報 \(操作名、パラメーター名など\) を取得できます。 + +- JavaScript エンドポイントを使用すると、機密性の高い情報やプライベートな情報がクライアントの Web ブラウザーのキャッシュに保持される可能性があります。 + +## コンポーネントに関する注意事項 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、柔軟でカスタマイズ可能なシステムです。 このトピックのほとんどの内容は、最も一般的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の使用シナリオに基づいています。 ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が提供するコンポーネントは、複数の異なる方法で構築できます。 各コンポーネントを使用した場合のセキュリティへの影響について理解することが重要です。 特に次の点に注意してください。 + +- XML リーダーを使用する必要があるときは、 クラスに用意されたリーダーを使用し、それ以外のリーダーは使用しないようにします。 安全なリーダーは、 のいずれかのメソッドを使用して作成できます。 メソッドは使用しないでください。 リーダーは、必ず安全なクォータを使用して設定します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のシリアル化エンジンがセキュリティで保護されるのは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で提供されるセキュリティで保護された XML リーダーを使用する場合だけです。 + +- を使用して、信頼できない可能性のあるデータを逆シリアル化する場合は、必ず プロパティを設定します。 + +- メッセージを作成する場合、`maxSizeOfHeaders` による保護が十分でないときは `MaxReceivedMessageSize` パラメーターを設定します。 + +- エンコーダーを作成する場合、`MaxSessionSize` や `MaxBufferSize` などの関連クォータを必ず設定します。 + +- XPath メッセージ フィルターを使用する場合は、 を設定してそのフィルターがアクセスする XML ノードの量を制限します。 多数のノードにアクセスせず、計算に長い時間がかかる可能性がある XPath 式は使用しないようにします。 + +- 通常、クォータを受け入れるコンポーネントを使用する場合は、そのセキュリティへの影響を理解し、クォータを安全な値に設定します。 + +## 参照 + + + + [既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-considerations-for-secure-sessions.md b/docs/framework/wcf/feature-details/security-considerations-for-secure-sessions.md new file mode 100644 index 00000000000..1b9c981e602 --- /dev/null +++ b/docs/framework/wcf/feature-details/security-considerations-for-secure-sessions.md @@ -0,0 +1,33 @@ +--- +title: "セキュリティで保護されたセッションに関するセキュリティの検討 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0d5be591-9a7b-4a6f-a906-95d3abafe8db +caps.latest.revision: 14 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 14 +--- +# セキュリティで保護されたセッションに関するセキュリティの検討 +セキュリティで保護されたセッションを実装する場合に、セキュリティに影響を及ぼす次の項目について考慮する必要があります。セキュリティの考慮事項[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md)」および「[セキュリティのベスト プラクティス](../../../../docs/framework/wcf/feature-details/best-practices-for-security-in-wcf.md)」を参照してください。 + +## セキュリティで保護されたセッションとメタデータ + セキュリティで保護されたセッションが確立され、 プロパティが `false` に設定されると、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] はサービス エンドポイントの Web サービス記述言語 \(WSDL: Web Services Description Language\) ドキュメントにメタデータの一部として `mssp:MustNotSendCancel` アサーションを出力します。`mssp:MustNotSendCancel` アサーションは、クライアントに対してセキュリティで保護されたセッションのキャンセル要求にサービスが応答しないことを通知します。 プロパティが `true` に設定されている場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は WSDL ドキュメントに `mssp:MustNotSendCancel` アサーションを出力しません。セキュリティで保護されたセッションが必要でなくなった場合、クライアントはサービスに対してキャンセル要求を送る必要があります。[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用してクライアントを生成した場合、クライアント コードは、`mssp:MustNotSendCancel` アサーションが存在するかどうかに対して適切に反応するようになります。 + +## セキュリティ保護されたメッセージ交換とカスタム トークン + WS\-SecureConversation 仕様での定義方法に起因する、カスタム トークンと派生キーの混在に関する問題があります。仕様では、派生トークンを参照するオプション要素の `wsse:SecurityTokenReference` について次のような記述があります。「`/wsc:DerivedKeyToken/wsse:SecurityTokenReference` このオプション要素は、派生用のセキュリティ コンテキスト トークン、セキュリティ トークン、または共有キーやシークレットの指定に使用されます。指定されていない場合、受信者はメッセージのコンテキストから共有キーを判断できると想定されます。コンテキストを判断できない場合は、`wsc:UnknownDerivationSource` などのエラーが発生します。」 + + つまり、カスタム トークンを派生させるには、`SecurityTokenReference` 要素にその句型をラップする必要があります。派生をオフにするオプションもありますが、キーを派生させるオプションが既定となっています。キーをラップしなかった場合、派生キー トークンのシリアル化は実行されますが、その逆シリアル化を試みると例外がスローされます。 + +## 参照 + [方法 : WSFederationHttpBinding のセキュリティで保護されたセッションを無効にする](../../../../docs/framework/wcf/feature-details/how-to-disable-secure-sessions-on-a-wsfederationhttpbinding.md) + [セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md) + [セキュリティのベスト プラクティス](../../../../docs/framework/wcf/feature-details/best-practices-for-security-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-considerations-in-wcf.md b/docs/framework/wcf/feature-details/security-considerations-in-wcf.md new file mode 100644 index 00000000000..e1a536f1158 --- /dev/null +++ b/docs/framework/wcf/feature-details/security-considerations-in-wcf.md @@ -0,0 +1,61 @@ +--- +title: "WCF でのセキュリティの考慮事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF]" + - "WCF, セキュリティ" + - "Windows Communication Foundation, セキュリティ" +ms.assetid: 42055ee0-6d0c-443d-9d89-788dfc345d6d +caps.latest.revision: 49 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 49 +--- +# WCF でのセキュリティの考慮事項 +このセクションの各トピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションの設計時に考慮する必要のあるセキュリティ関連の各種項目を示します。 + +## このセクションの内容 + [情報の漏えい](../../../../docs/framework/wcf/feature-details/information-disclosure.md) + 情報が開示または攻撃されるさまざまな方法、およびそれを軽減する方法について説明します。 + + [権限の昇格](../../../../docs/framework/wcf/feature-details/elevation-of-privilege.md) + 最初に付与されたものよりも高い承認アクセス許可を攻撃者に与えることの影響、およびそれを軽減する方法について説明します。 + + [サービス拒否](../../../../docs/framework/wcf/feature-details/denial-of-service.md) + システムがメッセージを適切に処理できない場合の影響、およびそれを軽減する方法について説明します。 + + [改変](../../../../docs/framework/wcf/feature-details/tampering.md) + メッセージの改ざんやメッセージの配信先の変更、およびそれを軽減する方法について説明します。 + + [リプレイ攻撃](../../../../docs/framework/wcf/feature-details/replay-attacks.md) + 攻撃者がメッセージのストリームを送受信者間でコピーし、そのストリームを 1 つ以上の第三者に対してリプレイすることによる影響、およびそれを軽減する方法について説明します。 + + [セキュリティで保護されたセッションに関するセキュリティの検討](../../../../docs/framework/wcf/feature-details/security-considerations-for-secure-sessions.md) + セキュリティで保護されたセッションを実装する場合に、セキュリティに影響を及ぼす次の項目について説明します。 + + [サポートされていないシナリオ](../../../../docs/framework/wcf/feature-details/unsupported-scenarios.md) + セキュリティの特定の側面がサポートされないため、避けたり配慮したりする必要のあるさまざまなシナリオを示します。 + +## 関連項目 + + + + + + + + +## 関連項目 + [セキュリティ ガイドラインとベスト プラクティス](../../../../docs/framework/wcf/feature-details/security-guidance-and-best-practices.md) + +## 参照 + [セキュリティ](../../../../docs/framework/wcf/feature-details/security.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-considerations-with-metadata.md b/docs/framework/wcf/feature-details/security-considerations-with-metadata.md new file mode 100644 index 00000000000..8525c134d53 --- /dev/null +++ b/docs/framework/wcf/feature-details/security-considerations-with-metadata.md @@ -0,0 +1,50 @@ +--- +title: "メタデータを使用する場合のセキュリティ上の考慮事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e78ef8ab-4f63-4656-ab93-b1deab2666d5 +caps.latest.revision: 10 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 10 +--- +# メタデータを使用する場合のセキュリティ上の考慮事項 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のメタデータの機能を使用するときは、サービス メタデータの公開、取得、および使用によって生じるセキュリティへの影響を考慮する必要があります。 + +## メタデータを公開する場合と公開しない場合 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、既定ではメタデータを公開しない設定になっています。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのメタデータを公開するには、メタデータ エンドポイントをサービスに追加することにより、メタデータの公開を明示的に指定する必要があります \(「[メタデータの公開](../../../../docs/framework/wcf/feature-details/publishing-metadata.md)」を参照\)。 メタデータの公開を無効のままにしておけば、攻撃者にとっては侵入経路が少ないことになり、したがって情報漏洩の危険を減らすことができます。 メタデータを公開する必要のないサービスもあります。 必要ないのであれば無効のままにしておくようお勧めします。 この状態でも、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用すれば、サービス アセンブリから直接、メタデータやクライアント コードを生成できます。 Svcutil.exe を使用してメタデータをエクスポートする方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : Svcutil.exe を使用してコンパイル済みのサービス コードからメタデータをエクスポートする](../../../../docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-export-metadata-from-compiled-service-code.md)」を参照してください。 + +## セキュリティ保護されたバインディングによるメタデータの公開 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に組み込まれた既定のメタデータ バインディングはセキュリティ保護されておらず、メタデータへの匿名アクセスを許可するようになっています。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが公開するサービス メタデータにはサービスに関する詳細な記述があるので、故意または過失により、重要な情報が漏洩するおそれがあります。 たとえば、一般に公開するべきではない、インフラストラクチャ操作に関する情報が入った状態で発行される可能性があるのです。 権限のないアクセスを拒否する方法として、メタデータ エンドポイントで、セキュリティ保護されたバインディングを使う、というものがあります。 メタデータ エンドポイントは HTTP\/GET 要求に応答しますが、ここに SSL \(Secure Sockets Layer\) を使用すれば、メタデータを保護できます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : セキュリティで保護されたメタデータ エンドポイント](../../../../docs/framework/wcf/feature-details/how-to-secure-metadata-endpoints.md). + + メタデータ エンドポイントを保護することで、正当なユーザーが、改ざんやなりすましを恐れずに安全にサービス メタデータを取得できる手段も提供されます。 + +## 信頼できるメタデータのみを使用 + サービス メタデータを使用すると、サービスの呼び出しに必要なランタイム コンポーネントを自動構築できます。 たとえば、設計時には、クライアント アプリケーションを開発するためにメタデータを利用できます。また、実行時には、メタデータを利用して、クライアントがサービス呼び出しのために使用するバインディングを動的に更新できます。 + + サービス メタデータを取得する際、セキュリティ保護された方法を使わないと、改ざんやなりすましのおそれがあります。 メタデータが改ざんされると、知らない間に悪質なサービスに接続されたり、セキュリティ上問題のある設定に切り替えられたり、XML 構造が破壊されたりすることがあります。 メタデータ ドキュメントはかなりの容量になることがあるので、多くの場合、ファイル システムに保存することになります。 改ざんやなりすましを防ぐために、サービス メタデータを要求するときには、できるだけセキュリティで保護されたバインディングを使用してください。 + +## 安全な技術を使ってメタデータを処理 + サービス メタデータは多くの場合、MEX \(WS\-Metadata Exchange\) などの標準的なプロトコルを使用して、ネットワーク経由で伝送されます。 メタデータの形式を見ると、多くの場合、他のメタデータを参照する旨の記述ができるようになっています。 型は、Web サービス記述言語 \(WSDL\) ドキュメント、XML スキーマ、および MEX ドキュメント内の参照を自動的に処理します。 取得したメタデータから生成される オブジェクトのサイズは、使用されている インスタンスの の値と、この インスタンスが使用するバインディングの `MaxReceivedMessageSize` の値に比例します。 動作環境に合わせてこのクォータ値を適切に設定してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、サービス メタデータは XML の形で処理されます。 XML ドキュメントを処理するアプリケーションは、悪質な XML 構造が現れても破綻しないようになっていなければなりません。 XML を処理するときは、`XmlDictionaryReader` に適切なクォータ値を設定して使用すると共に、 インスタンスに対する オブジェクトの プロパティを `true` に設定してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のメタデータ システムは、メタデータ拡張をアプリケーションの構成ファイルに登録することにより、容易に拡張できるようになっています \(「[メタデータ システムの拡張](../../../../docs/framework/wcf/extending/extending-the-metadata-system.md)」を参照\)。 メタデータ拡張はどのようなコードでも実行できるので、適切なアクセス制御リスト \(ACL\) でアプリケーション構成ファイルを保護し、信頼できるメタデータ拡張以外は登録しないようにする必要があります。 + +## 生成されたクライアントの検証 + 信頼できないソースから取得したメタデータを基にクライアント コードを生成した場合、これがクライアント アプリケーションのセキュリティ ポリシーに合致しているかどうか検証する必要があります。 動作を検証するための専用クライアントを使うか、あるいはツールが生成したコードを目視で検査してください。 動作を検証するためのクライアントを実装する例については、「[クライアント検証](../../../../docs/framework/wcf/samples/client-validation.md)」を参照してください。 + +## アプリケーション構成ファイルの保護 + サービスのアプリケーション構成ファイルでは、メタデータを公開する方法、および公開の有無を制御できます。 攻撃者が設定を変更できないように、適切なアクセス制御リスト \(ACL\) でアプリケーション構成ファイルを保護することをお勧めします。 + +## 参照 + [方法 : セキュリティで保護されたメタデータ エンドポイント](../../../../docs/framework/wcf/feature-details/how-to-secure-metadata-endpoints.md) + [セキュリティ](../../../../docs/framework/wcf/feature-details/security.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-guidance-and-best-practices.md b/docs/framework/wcf/feature-details/security-guidance-and-best-practices.md new file mode 100644 index 00000000000..f491a2fde50 --- /dev/null +++ b/docs/framework/wcf/feature-details/security-guidance-and-best-practices.md @@ -0,0 +1,36 @@ +--- +title: "セキュリティ ガイドラインとベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティで保護されたアプリケーション [WCF]" +ms.assetid: 79e4e6f7-0c00-4045-b0f0-e6a7c37c7788 +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# セキュリティ ガイドラインとベスト プラクティス +このセクションのトピックでは、セキュリティで保護された [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションの作成に関するガイドラインおよび考慮事項を示します。Windows Server AppFabric およびセキュリティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409)」を参照してください。 + +## このセクションの内容 + [セキュリティのベスト プラクティス](../../../../docs/framework/wcf/feature-details/best-practices-for-security-in-wcf.md) + アプリケーションをセキュリティで保護する際に役立つ推奨事項を示します。 + + [セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーション作成時の考慮事項を示します。 + + [パフォーマンスに関する考慮事項](../../../../docs/framework/wcf/feature-details/performance-considerations.md) + パフォーマンスとセキュリティに関連するトピックが含まれています。 + +## 参照 + [基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-negotiation-and-timeouts.md b/docs/framework/wcf/feature-details/security-negotiation-and-timeouts.md new file mode 100644 index 00000000000..7ec7e6ae452 --- /dev/null +++ b/docs/framework/wcf/feature-details/security-negotiation-and-timeouts.md @@ -0,0 +1,24 @@ +--- +title: "セキュリティ ネゴシエーションとタイムアウト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 02a428f1-84e5-4d28-a11f-53ce31d63196 +caps.latest.revision: 8 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 8 +--- +# セキュリティ ネゴシエーションとタイムアウト +クライアントとサービスの認証では、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は認証の一環としてサービス資格情報をネゴシエートするモードをサポートします。このようなシナリオでは、サービス資格情報をクライアントに反映させるために、クライアントとサービスの間でマルチレッグ交換が発生する可能性があります。 プロパティは、マルチレッグ交換の完了に要する時間を制御します。ただし、このタイムアウトは、実際に、単一の要求 \- 応答よりも長い時間が交換にかかる場合のみ適用されます。単一のラウンド トリップでネゴシエーションが完了する場合、このタイムアウトは適用されません。 + +## 参照 + + [方法 : 時刻のずれの最大値を設定する](../../../../docs/framework/wcf/feature-details/how-to-set-a-max-clock-skew.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-overview.md b/docs/framework/wcf/feature-details/security-overview.md new file mode 100644 index 00000000000..34d8f34bc88 --- /dev/null +++ b/docs/framework/wcf/feature-details/security-overview.md @@ -0,0 +1,125 @@ +--- +title: "セキュリティの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "WCF, セキュリティ" + - "Windows Communication Foundation, セキュリティ" +ms.assetid: f478c80d-792d-4e7a-96bd-a2ff0b6f65f9 +caps.latest.revision: 37 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 37 +--- +# セキュリティの概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、SOAP メッセージに基づく分散プログラミングのプラットフォームです。データを保護するには、クライアントとサービス間のメッセージをセキュリティで保護することが不可欠です。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、既存のセキュリティ インフラストラクチャと、認識されている SOAP メッセージのセキュリティ標準の両方に基づき、セキュリティで保護されたメッセージを交換する汎用的で相互運用可能なプラットフォームを提供します。 + +> [!NOTE] +> WCF セキュリティの包括的なガイドについては、「[WCF セキュリティ ガイダンス](http://go.microsoft.com/fwlink/?LinkID=158912)」を参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTPS、Windows 統合セキュリティ、ユーザー認証のためのユーザー名とパスワードなど、既存の技術を使用してセキュリティで保護された分散アプリケーションを構築した経験のあるユーザーには、なじみのある概念を使用します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、既存のセキュリティ インフラストラクチャを統合するだけではありません。セキュリティで保護された SOAP メッセージを使用して Windows のみのドメインを超えて分散セキュリティを拡張します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] については、既存のプロトコルに加えて SOAP をプロトコルとして使用する大きな利点を兼ね備えた、既存のセキュリティ機構の実装と考えます。 たとえば、ユーザー名とパスワードや X.509 証明書など、クライアントまたはサービスを識別する資格情報には、相互運用可能な XML ベースの SOAP プロファイルがあります。 このプロファイルを使用して、XML デジタル署名や XML 暗号化などの公開仕様を利用するセキュリティで保護されたメッセージ交換を行います。 仕様の一覧については、「[システム標準の相互運用性バインディングがサポートしている Web サービス プロトコル](../../../../docs/framework/wcf/feature-details/web-services-protocols-supported-by-system-provided-interoperability-bindings.md)」を参照してください。 + + また他にも、Windows プラットフォームのコンポーネント オブジェクト モデル \(COM\) があり、セキュリティで保護された分散アプリケーションを実現します。 COM は、包括的なセキュリティ機構を有します。このセキュリティ機構により、セキュリティ コンテキストはコンポーネント間をフローできます。また、整合性、機密性、および認証を実現できます。 ただし COM では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が行うようなクロス プラットフォームでのセキュリティで保護されたメッセージ処理を実現できません。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、Windows ドメインからインターネットにまで及ぶサービスとクライアントを構築できます。 情報セキュリティに対する確信を持てるビジネス重視の動的サービスを構築するには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の相互運用可能なメッセージが必須です。 + +## Windows Communication Foundation セキュリティの利点 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、SOAP メッセージに基づく分散プログラミングのプラットフォームです。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用すると、サービスとサービス クライアントの両方の機能のアプリケーションを構築でき、他の無数のサービスやクライアントからのメッセージを作成および処理できます。 このような分散アプリケーションでは、メッセージをノード間でフローさせ、ファイアウォールを経由してインターネットに送信し、多くの SOAP 中継局を経由させることができます。 しかしこれは、さまざまなメッセージ セキュリティの脅威を招きます。 エンティティ間でメッセージ交換を行うときに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティで軽減できる一般的な脅威の例をいくつか示します。 + +- 機密情報を取得するネットワーク トラフィックの監視。 たとえば、オンライン バンキング シナリオを考えます。クライアントは口座間の資金の移動を要求します。 悪意のあるユーザーはメッセージを途中受信し、後で口座番号とパスワードを使用して、侵害した口座から資金を移動します。 + +- クライアントに気付かれることなくサービスとして動作する承認されていないエンティティ。 このシナリオでは、悪意のある \(承認されていない\) ユーザーがオンライン サービスとして動作し、クライアントからメッセージを途中受信して機密情報を取得します。 次にこの承認されていないユーザーは、盗んだデータを使用して侵害した口座から資金を転送します。 この攻撃は、*フィッシング攻撃*としても知られています。 + +- 呼び出し元が意図したものと異なる結果を取得するようなメッセージの改ざん。 たとえば、預金先の口座番号を変更して、資金を承認されていない口座に移動できます。 + +- 迷惑なハッカーは、同じ注文をリプレイします。 たとえば、オンライン書店は数百の注文を受け、注文していない顧客に書籍を送付します。 + +- クライアントを認証する能力の欠如。 この場合、サービスは、適切なユーザーがトランザクションを実行していることを保証できません。 + + 転送セキュリティが提供する保証を簡単に説明すると次のようになります。 + +- サービス エンドポイント \(応答者\) の認証 + +- クライアント プリンシパル \(イニシエーター\) の認証 + +- メッセージの整合性 + +- メッセージの機密性 + +- リプレイの検出 + +### 既存のセキュリティ インフラストラクチャとの統合 + ほとんどの場合、Web サービス展開には、SSL \(Secure Sockets Layer\) や Kerberos プロトコルなどの既存のセキュリティ ソリューションが実装されています。 Active Directory を使用する Windows ドメインなど、既に展開されているセキュリティ インフラストラクチャを利用する場合もあります。 新しい技術を評価し採用している間に、これらの既存の技術と統合する必要が生じることはよくあります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティは、既存のトランスポート セキュリティ モデルを統合します。また、既存のインフラストラクチャを活用して SOAP メッセージ セキュリティに基づく新しいトランスポート セキュリティ モデルを実現することもできます。 + +### 既存の認証モデルとの統合 + すべての通信セキュリティ モデルにとって、通信のエンティティを識別し認証する機能は重要です。 この通信のエンティティは、"デジタル ID" または資格情報を使用し、通信先のピアで自身を認証します。 分散型の通信プラットフォームの発展により、さまざまな資格情報認証モデルや関連セキュリティ モデルが実装されてきました。 たとえば、インターネットでは、ユーザー名とパスワードを使用してユーザーを識別することが一般的に行われています。 イントラネットでは、ユーザーとサービスの認証をサポートする Kerberos ドメイン コントローラーの使用が一般的になりつつあります。 たとえば、2 つのビジネス パートナー間での特定のシナリオでは、証明書を使用してお互いにパートナーを認証する場合もあります。 + + 同じサービスを企業内のユーザーや外部のパートナーまたはインターネット ユーザーに公開する Web サービスの世界では、インフラストラクチャがこのような既存のセキュリティ認証モデルとの統合に備えることが重要です。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティは、次のようなさまざまな資格情報の種類 \(認証モデル\) をサポートします。 + +- 匿名の呼び出し元 + +- ユーザー名クライアント資格情報 + +- 証明書クライアント資格情報 + +- Windows \(Kerberos プロトコルと NT LanMan \[NTLM\] の両方\) + +### 標準と相互運用 + 既存の大規模展開の世界では、均一性はほとんどありません。 分散型のコンピューティングまたは通信のプラットフォームでは、さまざまなベンダーから提供される技術を相互運用する必要があります。 同様に、セキュリティも相互運用可能である必要があります。 + + 相互運用可能なセキュリティ システムを実現するため、Web サービス業界で活動する企業はさまざまな標準を作成してきました。 特にセキュリティに関して、注目すべき標準がいくつか提案されています。それは、WS\-Security の SOAP メッセージ セキュリティ \(標準化団体の OASIS で認められ正式には WS\-Security として知られる\)、WS\-Trust、WS\-SecureConversation、および WS\-SecurityPolicy です。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、さまざまな相互運用可能なシナリオをサポートします。 クラスは、基本セキュリティ プロファイル \(BSP\) を対象とし、 クラスは、WS\-Security 1.1 や WS\-SecureConversation などの最新のセキュリティ標準を対象とします。 これらの標準に準拠することで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティは、Microsoft Windows 以外のオペレーティング システムやプラットフォームでホストされる Web サービスと相互運用および統合できます。 + +## WCF セキュリティの機能領域 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティは、転送セキュリティ、アクセス制御、および監査の 3 つの主要な機能領域に分けられます。 この後の各セクションでは、これらの領域について簡単に説明します。また、詳細情報へのリンクを示します。 + +### 転送セキュリティ + 転送セキュリティには、整合性、機密性、および認証の 3 つの主要なセキュリティ機能があります。 *整合性*とは、メッセージが改ざんされているかどうかを検出する機能です。 *機密性*とは、目的の受信者以外のユーザーにはメッセージを読み取り不可にする機能のことです。これを実現するために暗号化が使用されます。 *認証*とは、提示された ID を検証する機能です。 これらの 3 つの機能を一緒に使用して、メッセージをある地点から別の地点に安全に到着させることができます。 + +#### トランスポート セキュリティ モードとメッセージ セキュリティ モード + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で転送セキュリティを実装するには、*トランスポート* セキュリティ モードと*メッセージ* セキュリティ モードの 2 つの主要な機構を使用します。 + +- *トランスポート セキュリティ モード*では、HTTPS などのトランスポート レベルのプロトコルを使用して転送セキュリティを実現します。 トランスポート モードの利点は、広範囲に採用されていること、多くのプラットフォームで利用可能なこと、コンピューター処理上の複雑性が低いことです。 ただし、Point\-to\-Point からのメッセージだけのセキュリティを保護するという欠点もあります。 + +- 一方、*メッセージ セキュリティ モード*は、WS\-Security \(および他の仕様\) を使用して転送セキュリティを実現します。 メッセージ セキュリティは、SOAP メッセージに直接適用され、また SOAP エンベロープ内にアプリケーション データと共に格納されるため、トランスポート プロトコルに依存しない、拡張性が高い、エンド ツー エンド \(Point\-to\-Point と対照\) のセキュリティが保証される、という利点があります。ただし、SOAP メッセージの XML の性質を処理する必要があるため、トランスポート セキュリティ モードよりも処理が数倍遅くなる欠点があります。 + + これらの相違点[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md)」を参照してください。 + + 3 番目のセキュリティ モードは、上記の 2 つのモードを使用し、その両方の利点を引き継ぎます。 このモードは、`TransportWithMessageCredential` と呼ばれます。 このモードでは、クライアントの認証にメッセージ セキュリティを使用し、サーバーの認証にトランスポート セキュリティを使用して、メッセージの機密性と整合性を実現します。 これにより、`TransportWithMessageCredential` セキュリティ モードでは、トランスポート セキュリティ モードと同じ速度で処理が実行され、メッセージ セキュリティ モードと同じ方法でクライアント認証の拡張性が提供されます。 ただし、メッセージ セキュリティ モードと異なり、完全なエンド ツー エンド セキュリティは提供されません。 + +### アクセス制御 + *アクセス制御*は、承認とも呼ばれます。 *承認*を使って、さまざまなユーザーにさまざまなデータ参照権限を持たせることができます。 たとえば、企業の人事ファイルには従業員の機密データが含まれているため、管理者だけが従業員データの参照を許可されます。 また、管理者は直接報告書のデータのみを参照できます。 このような場合、アクセス制御は、ロール \("manager"\) と管理者の特定 ID の両方に基づいて行われます \(ある管理者が別の管理者の部下のレコードを参照できないようにします\)。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のアクセス制御機能は、共通言語ランタイム \(CLR\) の との統合、および *ID モデル*として知られる一連の API により提供されます。 アクセス制御とクレームに基づく承認の詳細については、「[セキュリティの拡張](../../../../docs/framework/wcf/extending/extending-security.md)」を参照してください。 + +### 監査 + *監査*とは、セキュリティ イベントを Windows イベント ログに記録することです。 認証の失敗 \(または成功\) などのセキュリティ関連のイベントをログに記録できます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [監査](../../../../docs/framework/wcf/feature-details/auditing-security-events.md). プログラミングの詳細については、「[方法 : セキュリティ イベントを監査する](../../../../docs/framework/wcf/feature-details/how-to-audit-wcf-security-events.md)」を参照してください。 + +## 参照 + + [サービスのセキュリティ保護](../../../../docs/framework/wcf/securing-services.md) + [一般的なセキュリティ シナリオ](../../../../docs/framework/wcf/feature-details/common-security-scenarios.md) + [バインディングとセキュリティ](../../../../docs/framework/wcf/feature-details/bindings-and-security.md) + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [認証](../../../../docs/framework/wcf/feature-details/authentication-in-wcf.md) + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) + [フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + [監査](../../../../docs/framework/wcf/feature-details/auditing-security-events.md) + [セキュリティ ガイドラインとベスト プラクティス](../../../../docs/framework/wcf/feature-details/security-guidance-and-best-practices.md) + [構成ファイルを使用してサービスを構成する方法](../../../../docs/framework/wcf/configuring-services-using-configuration-files.md) + [システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md) + [エンドポイントの作成の概要](../../../../docs/framework/wcf/endpoint-creation-overview.md) + [セキュリティの拡張](../../../../docs/framework/wcf/extending/extending-security.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-protocols-version-1-0.md b/docs/framework/wcf/feature-details/security-protocols-version-1-0.md new file mode 100644 index 00000000000..639dd89fb3b --- /dev/null +++ b/docs/framework/wcf/feature-details/security-protocols-version-1-0.md @@ -0,0 +1,2774 @@ +--- +title: "セキュリティ プロトコル バージョン 1.0 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ee3402d2-1076-410b-a3cb-fae0372bd7af +caps.latest.revision: 4 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 4 +--- +# セキュリティ プロトコル バージョン 1.0 +Web サービス セキュリティ プロトコルには、既存のエンタープライズ メッセージング セキュリティのあらゆる要件に対応する Web サービス セキュリティ機構が用意されています。 ここでは、以下の Web サービス セキュリティ プロトコルについて、\( で実装される\) [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] バージョン 1.0 の詳細を説明します。 + +||| +|-|-| +|仕様\/ドキュメント|Link| +|WSS SOAP Message Security 1.0|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-soap\-message\-security\-1.0.pdf| +|WSS: Username Token Profile 1.0|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-username\-token\-profile\-1.0.pdf| +|WSS: X509 Token Profile 1.0|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-x509\-token\-profile\-1.0.pdf| +|WSS: SAML 1.1 Token Profile 1.0|http:\/\/docs.oasis\-open.org\/wss\/oasis\-wss\-saml\-token\-profile\-1.0.pdf| +|WSS SOAP Message Security 1.1|http:\/\/www.oasis\-open.org\/committees\/download.php\/16790\/wss\-v1.1\-spec\-os\-SOAPMessageSecurity.pdf| +|WSS Username Token Profile 1.1|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-username\-token\-profile\-1.0.pdf| +|WSS: X.509 Token Profile 1.1|http:\/\/www.oasis\-open.org\/committees\/download.php\/16785\/wss\-v1.1\-spec\-os\-x509TokenProfile.pdf| +|WSS: Kerberos Token Profile 1.1|http:\/\/www.oasis\-open.org\/committees\/download.php\/16788\/wss\-v1.1\-spec\-os\-KerberosTokenProfile.pdf| +|WSS: SAML 1.1 Token Profile 1.1|http:\/\/www.oasis\-open.org\/committees\/download.php\/16768\/wss\-v1.1\-spec\-os\-SAMLTokenProfile.pdf| +|WS\-SecureConversation|http:\/\/msdn.microsoft.com\/ws\/2005\/02\/ws\-secure\-conversation\/| +|WS\-Trust|http:\/\/msdn.microsoft.com\/ws\/2005\/02\/ws\-trust\/| +|Application Note:

Using WS\-Trust for TLS Handshake|公開予定| +|Application Note:

Using WS\-Trust for SPNEGO|公開予定| +|Application Note:

Web Services Addressing Endpoint References And Identity|公開予定| +|WS\-SecurityPolicy 1.1

\(2005\/07\)|http:\/\/msdn.microsoft.com\/ws\/2005\/07\/ws\-security\-policy\/

OASIS WS\-SX 技術委員会 http:\/\/www.oasis\-open.org\/archives\/ws\-sx\/200512\/msg00017.html に提出された正誤表によって修正済み| + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Version 1 には、Web サービス セキュリティ構成の基礎として使用できる 17 個の認証モードが用意されています。 各モードは、次のような一般的な展開要件について最適化されています。 + +- クライアントとサービスの認証に使用する資格情報 + +- メッセージまたはトランスポートのセキュリティ保護機構 + +- メッセージ交換パターン + +|認証モード|クライアント認証|サーバー認証|モード| +|-----------|--------------|------------|---------| +|UserNameOverTransport|ユーザー名\/パスワード|X509|Transport| +|CertificateOverTransport|X509|X509|Transport| +|KerberosOverTransport|Windows|X509|Transport| +|IssuedTokenOverTransport|フェデレーション|X509|Transport| +|SspiNegotiatedOverTransport|Windows SSPI ネゴシエーション|Windows SSPI ネゴシエーション|Transport| +|AnonymousForCertificate|なし|X509|メッセージ| +|UserNameForCertificate|ユーザー名\/パスワード|X509|メッセージ| +|MutualCertificate|X509|X509|メッセージ| +|MutualCertificateDuplex|X509|X509|メッセージ| +|IssuedTokenForCertificate|フェデレーション|X509|メッセージ| +|Kerberos|Windows|Windows|メッセージ| +|IssuedToken|フェデレーション|フェデレーション|メッセージ| +|SspiNegotiated|Windows SSPI ネゴシエーション|Windows SSPI ネゴシエーション|メッセージ| +|AnonymousForSslNegotiated|なし|X509、TLS ネゴシエーション|メッセージ| +|UserNameForSslNegotiated|ユーザー名\/パスワード|X509、TLS ネゴシエーション|メッセージ| +|MutualSslNegotiated|X509|X509、TLS ネゴシエーション|メッセージ| +|IssuedTokenForSslNegotiated|フェデレーション|X509、TLS ネゴシエーション|メッセージ| + + このような認証モードを使用するエンドポイントは、WS\-SecurityPolicy \(WS\-SP\) を使用してセキュリティ要件を表現できます。 ここでは、各認証モードのセキュリティ ヘッダーとインフラストラクチャ メッセージの構造について説明します。また、ポリシーとメッセージの例も示します。 + + アプリケーション間での複数のメッセージ交換を保護するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では WS\-SecureConversation を使用してセキュリティで保護されたセッションをサポートします。 実装の詳細については、後述の「セキュリティで保護されたセッション」を参照してください。 + + 認証モードに加え、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、メッセージ セキュリティ ベースのほとんどの認証モードに適用される一般的な保護機構を制御するための設定 \(署名と暗号化操作の順序、アルゴリズム スイート、キー派生、署名確認など\) も用意されています。 + + このドキュメントでは、以下のプレフィックスと名前空間を使用します。 + +|プレフィックス|Namespace| +|-------------|---------------| +|s|http:\/\/www.w3.org\/2003\/05\/soap\-envelope| +|sp|http:\/\/schemas.xmlsoap.org\/ws\/2005\/07\/securitypolicy| +|a|http:\/\/www.w3.org\/2005\/08\/addressing| +|wsse|未定 \- OASIS WSS 1.0 の URI| +|wsse11|未定 \- OASIS WSS 1.1 の URI| +|wsu|未定 \- OASIS WSS 1.0 Utility の URI| +|ds|未定 \- W3C XMLDSig の URI| +|wst|未定 \- WS\-Trust 2005\/02 の URI| +|wssc|未定 \- WS\-SecureConversation 2005\/02 の URI| +|wsaw|未定 \- WS\-Addressing ポリシーの名前空間| +|wsp|http:\/\/schemas.xmlsoap.org\/ws\/2004\/09\/policy| +|mssp|http:\/\/schemas.microsoft.com\/ws\/2005\/07\/securitypolicy| + +## 1.トークン プロファイル + Web サービス セキュリティ仕様では、資格情報をセキュリティ トークンとして表します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、以下のトークンの種類をサポートしています。 + +### 1.1 UsernameToken + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、以下の制約で UsernameToken10 プロファイルおよび UsernameToken11 プロファイルに従います。 + + R1101 : UsernameToken\\Password 要素の PasswordType 属性では、\#PasswordText \(既定値\) を省略するか、指定する必要があります。 + + 機能拡張を使用すると、\#PasswordDigest を実装できます。 \#PasswordDigest は、十分に安全性の高いパスワード保護機構であると誤解されがちであることが報告されています。 しかし、\#PasswordDigest は、UsernameToken の暗号化の代替として使用できるわけではありません。 \#PasswordDigest の第一の目的は、リプレイ攻撃から保護することです。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の各認証モードでは、メッセージ署名を使用することで、リプレイ攻撃の脅威が軽減されます。 + + B1102 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Nonce および UsernameToken の作成済みサブ要素を出力することはありません。 + + これらのサブ要素は、リプレイ検出を支援するためのものです。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、代わりにメッセージ署名を使用します。 + + OASIS WSS SOAP Message Security UsernameToken Profile 1.1 \(UsernameToken11\) では、パスワードからのキー派生機能が導入されています。 + + B1103 : UsernameToken のパスワードをキー派生に使用することはできません。したがって、暗号化操作では使用できません。 + + 理由 : パスワードは、一般に暗号化操作に使用するには脆弱すぎると見なされています。 + +### 1.2 X509 トークン + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、資格情報の種類として X509v3 証明書をサポートしており、以下の制約で X509TokenProfile1.0 と X509TokenProfile1.1 に従います。 + + R1201 : BinarySecurityToken 要素に X509v3 証明書が含まれている場合、この要素の ValueType 属性の値は \#X509v3 であることが必要です。 + + WSS X509 Token Profile 1.0 および 1.1 では、値の種類として \#X509PKIPathv1 と \#PKCS7 も定義されています。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、これらの種類をサポートしていません。 + + R1202 : X509 証明書に SubjectKeyIdentifier \(SKI\) 拡張が含まれている場合、トークンへの外部参照に wsse:KeyIdentifier を使用する必要があります。この場合、ValueType 属性に \#X509SubjectKeyIdentifier を指定し、証明書の SKI 拡張の Base64 でエンコードされた値を含めます。 + + SKI 参照は幅広く実装されており、相互運用性の高い外部参照型であることが証明されています。 + + R1203 : X509 セキュリティ トークンへの外部参照では、ds:X509IssuerSerial を使用できません。 + + R1204 : X509TokenProfile1.1 を使用している場合、X509 セキュリティ トークンへの外部参照では、WS\-Security 1.1 で導入された拇印を使用する必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、X509IssuerSerial をサポートしています。 ただし、X509IssuerSerial には相互運用性の問題があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、文字列を使用して X509IssuerSerial の 2 つの値を比較します。 したがって、サブジェクト名の構成要素を並べ替えて、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに証明書への参照を送信した場合、参照が見つからないことがあります。 + +### 1.3 Kerberos トークン + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Windows 認証のために、以下の制約で KerberosTokenProfile1.1 をサポートしています。 + + R1301 : GSS\_API と Kerberos 仕様で定義されているように、Kerberos トークンは GSS によってラップされた Kerberos v4 AP\_REQ の値を伝達する必要があります。また、値 \#GSS\_Kerberosv5\_AP\_REQ が指定された ValueType 属性を持つ必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、ベア AP\-REQ ではなく、GSS によってラップされた Kerberos AP\-REQ を使用します。 これは、セキュリティのベスト プラクティスです。 + +### 1.4 SAML v1.1 トークン + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、SAML v1.1 トークンの WSS SAML Token Profile 1.0 および 1.1 をサポートしています。 SAML トークンの形式のその他のバージョンも実装できます。 + +### 1.5 セキュリティ コンテキスト トークン + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-SecureCoversation に導入されたセキュリティ コンテキスト トークン \(SCT\) をサポートしています。 SCT は、SecureConversation と、後述する TLS および SSPI の各バイナリ ネゴシエーション プロトコルで確立されたセキュリティ コンテキストを表すために使用されます。 + +## 2.一般的なメッセージ セキュリティ パラメーター + +### 2.1 タイムスタンプ + タイムスタンプの有無は、 クラスの プロパティを使用して制御します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、常に wsse:Created および wsse:Expires の各フィールドと共に wsse:TimeStamp をシリアル化します。 署名を使用する場合、wsse:TimeStamp は必ず署名されます。 + +### 2.2 保護の順序 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、メッセージ保護の順序として、"暗号化前に署名" と "署名前に暗号化" をサポートしています \(Security Policy 1.1\)。" WS\-Security 1.1 の SignatureConfirmation 機構を使用していない場合、"署名前に暗号化" を使用して保護されたメッセージを開くと、置き換え攻撃への署名が行われます。また、暗号化された内容に署名すると監査が困難になります。これらの理由から、"暗号化前に署名" を使用することをお勧めします。 + +### 2.3 署名の保護 + "署名前に暗号化" を使用する場合、暗号化された内容や署名キー \(特に、脆弱なキー マテリアルでカスタム トークンを使用する場合\) を推測するブルート フォース攻撃を防ぐために、署名を保護することをお勧めします。 + +### 2.4 アルゴリズム スイート + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Security Policy 1.1 に記載されたすべてのアルゴリズム スイートをサポートしています。 + +### 2.5 キー派生 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、WS\-SecureConversation に記載された "対称キーのキー派生" を使用します。 + +### 2.6 署名確認 + 署名確認によって "man\-in\-the\-middle" 攻撃から保護することで、署名セットを保護できます。 + +### 2.7 セキュリティ ヘッダーのレイアウト + 各認証モードでは、セキュリティ ヘッダーの特定のレイアウトが使用されます。 セキュリティ ヘッダー内の要素は、部分的に順序付けられています。 セキュリティ ヘッダーの子要素の順序を定義するために、WS\-Security Policy では、以下のセキュリティ ヘッダー レイアウト モードが定義されています。 + +||| +|-|-| +|Strict|"使用前に宣言する" という一般的原則に基づき、Security Policy のセクション 7.7.1 に記載された番号付きレイアウト ルールに従って、項目がセキュリティ ヘッダーに追加されます。| +|Lax|WSS: SOAP Message Security に準拠した任意の順序で、項目がセキュリティ ヘッダーに追加されます。| +|LaxTimestampFirst|セキュリティ ヘッダー内の最初の項目が wsse:Timestamp でなければならないという点を除き、Lax と同じです。| +|LaxTimestampLast|セキュリティ ヘッダー内の最後の項目が wsse:Timestamp でなければならないという点を除き、Lax と同じです。| + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、セキュリティ ヘッダーの 4 つのレイアウト モードをすべてサポートしています。 後ほど示す各認証モードのセキュリティ ヘッダーの構造とメッセージの例では、"Strict" モードに従っています。 + +## 2.一般的なメッセージ セキュリティ パラメーター + このセクションでは、各認証モードのポリシーの例、およびクライアントとサービスによって交換されるメッセージのセキュリティ ヘッダーの構造を示す例を紹介します。 + +### 6.1 トランスポートの保護 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意された UserNameOverTransport、CertificateOverTransport、KerberosOverTransport、IssuedTokenOverTransport、および SspiNegotiatedOverTransport の 5 つの認証モードでは、セキュリティで保護されたトランスポートを使用してメッセージを保護します。 + + これらの認証モードは、SecurityPolicy に記載されたトランスポート バインディングを使用して構築されます。 UserNameOverTransport 認証モードの場合、UsernameToken は署名付きサポート トークンです。 その他の認証モードでは、トークンは署名付き保証トークンとして表示されます。 SecurityPolicy の Appendix C.1.2 および C.1.3 には、セキュリティ ヘッダーのレイアウトの詳細が記載されています。 以降のセキュリティ ヘッダーの例は、指定の認証モードの Strict レイアウトを示しています。 + + すべてのケースで、トークンの "派生キー" プロパティの値は "false" です。 + + トランスポート バインディングの各プロパティの値は次のとおりです。 + + タイムスタンプ : true + + セキュリティ ヘッダーのレイアウト : Strict + + アルゴリズム スイート : Basic256 + +#### 6.1.1 UsernameOverTransport + この認証モードでは、クライアントはユーザー名トークンを使用して認証を行います。ユーザー名トークンは、イニシエーターから受信者に必ず送信される署名付きサポート トークンとして SOAP 層に表示されます。 サービスはトランスポート層で X.509 証明書を使用して認証されます。 使用するバインディングは、トランスポート バインディングです。 + + ポリシー + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + セキュリティ ヘッダーのレイアウト + + 要求 + +``` + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + +``` + +#### 6.1.2 CertificateOverTransport + この認証モードでは、クライアントは X.509 証明書を使用して認証を行います。X.509 証明書は、イニシエーターから受信者に必ず送信される保証サポート トークンとして SOAP 層に表示されます。 サービスはトランスポート層で X.509 証明書を使用して認証されます。 使用するバインディングは、トランスポート バインディングです。 + + ポリシー + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + セキュリティ ヘッダーのレイアウト + + 要求 + +``` + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + +``` + +#### 6.1.3 IssuedTokenOverTransport + この認証モードでは、クライアントはサービスに対する認証を行わず、セキュリティ トークン サービス \(STS\) により発行されたトークンを示すことで、共有キーの有無を示します。 発行されたトークンは、イニシエーターから受信者に必ず送信される保証サポート トークンとして SOAP 層に表示されます。 サービスはトランスポート層で X.509 証明書を使用して認証されます。 バインディングはトランスポート バインディングです。 + + ポリシー + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + セキュリティ ヘッダーのレイアウト + + 要求 + +``` + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + +``` + +#### 6.1.4 KerberosOverTransport + この認証モードを使用すると、クライアントは Kerberos チケットを使用してサービスに対する認証を行います。 Kerberos トークンは、保証サポート トークンとして SOAP 層に表示されます。 サービスはトランスポート層で X.509 証明書を使用して認証されます。 バインディングはトランスポート バインディングです。 + + ポリシー + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + セキュリティ ヘッダーのレイアウト + + 要求 + +``` + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + +``` + +#### 6.1.5 SspiNegotiatedOverTransport + このモードでは、ネゴシエーション プロトコルを使用して、クライアントとサーバーの認証を行います。 Kerberos を使用できる場合は Kerberos が使用され、それ以外の場合は NTLM が使用されます。 発行された SCT は、イニシエーターから受信者に必ず送信される保証サポート トークンとして SOAP 層に表示されます。 サービスは、トランスポート層で X.509 証明書により追加的に認証されます。 使用するバインディングは、トランスポート バインディングです。" SPNEGO" \(ネゴシエーション\) には、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が WS\-Trust で SSPI バイナリ ネゴシエーション プロトコルを使用する方法が記述されます。 このセクションで示すセキュリティ ヘッダーの例は、SPNEGO ハンドシェイクによって SCT が確立された後の状態を示しています。 + + ポリシー + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 + WS\-Trust バイナリ ネゴシエーションを使用して、SPNEGO ハンドシェイクによってセキュリティ コンテキスト トークンが確立されると、アプリケーション メッセージのセキュリティ ヘッダーは、次のような構造になります。 + + 要求 + +``` + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + +``` + +### 6.2 X.509 証明書を使用したサービス認証 + このセクションでは、MutualCertificate WSS1.0、Mutual CertificateDuplex、MutualCertificate WSS1.1、AnonymousForCertificate、UserNameForCertificate、および IssuedTokenForCertificate の各認証モードについて説明します。 + +#### 6.2.1 MutualCertificate WSS1.0 + この認証モードでは、クライアントは X.509 証明書を使用して認証を行います。X.509 証明書は、イニシエーター トークンとして SOAP 層に表示されます。 また、サービスは X.509 証明書を使用して認証されます。 + + 使用するバインディングは、次のプロパティ値が設定された非対称バインディングです。 + + イニシエーター トークン : インクルード モードが ...\/IncludeToken\/AlwaysToRecipient に設定されたクライアントの X.509 証明書 + + 受信者トークン : インクルード モードが …\/IncludeToken\/Never に設定されたサーバーの X.509 証明書 + + トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + ポリシー + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + ... + + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + ... + + + + ... + + +``` + + セキュリティ ヘッダーの例 : EncryptBeforeSign + + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + +``` + +#### 6.2.2 MutualCertificateDuplex + この認証モードでは、クライアントは X.509 証明書を使用して認証を行います。X.509 証明書は、イニシエーター トークンとして SOAP 層に表示されます。 また、サービスは X.509 証明書を使用して認証されます。 + + 使用するバインディングは、次のプロパティ値が設定された非対称バインディングです。 + + イニシエーター トークン : インクルード モードが ...\/IncludeToken\/AlwaysToRecipient に設定されたクライアントの X.509 証明書 + + 受信者トークン : インクルード モードが ...\/IncludeToken\/AlwaysToInitiator に設定されたサーバーの X509 証明書 + + トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + ポリシー + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求と応答 + +``` + + + ... + + + ... + + + ... + + ... + + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求と応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +#### 6.2.3 X.509 サービス認証での SymmetricBinding の使用 + "WSS10" では、X509 トークンを使用するシナリオのサポートが制限されていました。 たとえば、サービスの X509 トークンだけを使用して、メッセージの署名と暗号化を保護することはできませんでした。" WSS11" では、EncryptedKey を共通鍵トークンとして使用する方法が導入されています。 これにより、サービスの X.509 証明書の暗号化された一時キーを使用して、要求メッセージと応答メッセージの両方を保護できるようになります。 セクション 6.4 で説明する認証モードでは、このパターンを使用します。 + + WS\-SecurityPolicy には、サービスの X509 トークンを保護トークンとして使用して SymmetricBinding を使用するこのパターンが記載されています。 + + AnonymousForCertificate、UsernameForCertificate、MutualCertificate WSS11、および IssuedTokenForCertificate の各認証モードはすべて、以下のプロパティ値が設定された sp:SymmetricBinding の同様のインスタンスを使用します。 + + 保護トークン: インクルード モードが ...\/IncludeToken\/Never に設定されたサーバーの X509 証明書 + トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + 前述の各認証モードは、使用するサポート トークンだけが異なります。 AnonymousForCertificate はサポート トークンをまったく使用せず、MutualCertificate WSS 1.1 は保証サポート トークンとしてクライアントの X509 証明書を使用します。また、UserNameForCertificate は署名付きサポート トークンとしてユーザー名トークンを使用し、IssuedTokenForCertificate は保証サポート トークンとして発行済みトークンを使用します。 + + ポリシー + + 対称バインディング + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + + + + + +``` + +#### 6.2.4 AnonymousForCertificate + この認証モードでは、クライアントは匿名になり、X.509 証明書を使用してサービスが認証されます。 使用するバインディングは、6.4.2 で説明する対称バインディングのインスタンスです。 + + ポリシー + + バインディングの詳細については、前述の 6.2.3 の「ポリシー」を参照してください。 + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + + ... + + + ... + + +``` + +#### 6.2.5 UserNameForCertificate + この認証モードでは、クライアントはユーザー名トークンを使用してサーバーに対する認証を行います。ユーザー名トークンは、署名付きサポート トークンとして SOAP 層に表示されます。 X.509 証明書を使用したクライアントに対するサービス認証。 使用するバインディングは、クライアントによって生成され、サービスの公開キーで暗号化されたキーを保護トークンとして使用する対称バインディングです。 + + ポリシー + + バインディングの詳細については、前述の 6.2.3 の「ポリシー」を参照してください。 + + 署名付きサポート トークン + +``` + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +#### 6.2.6 MutualCertificate \(WSS 1.1\) + この認証モードでは、クライアントは X.509 証明書を使用して認証を行います。X.509 証明書は、保証サポート トークンとして SOAP 層に表示されます。 また、サービスは X.509 証明書を使用して認証されます。 使用するバインディングは、クライアントによって生成され、サービスの公開キーで暗号化されたキーを保護トークンとして使用する対称バインディングです。 + + ポリシー + + バインディングの詳細については、前述の 6.2.3 の「ポリシー」を参照してください。 + + 保証サポート トークン + +``` + + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + + + ... + + + ... + + +``` + +#### 6.2.7 IssuedTokenForCertificate + この認証モードでは、クライアントはサービスに対する認証を行わず、STS により発行されたトークンを示すことで、共有キーの有無を示します。 発行済みトークンは、保証サポート トークンとして SOAP 層に表示されます。 X.509 証明書を使用したクライアントに対するサービス認証。 使用するバインディングは、クライアントによって生成され、サービスの公開キーで暗号化されたキーを保護トークンとして使用する対称バインディングです。 + + ポリシー + + バインディングの詳細については、前述の 6.2.3 の「ポリシー」を参照してください。 + + 保証サポート トークン + +``` + + + + + +http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + + + ... + + + ... + + +``` + +## 6.3 Kerberos + この認証モードを使用すると、クライアントは Kerberos チケットを使用してサービスに対する認証を行います。 また、その同じチケットによってサーバーが認証されます。 使用するバインディングは、以下のプロパティが設定された対称バインディングです。 + + 保護トークン: インクルード モードが ...\/IncludeToken\/Once に設定された Kerberos チケット + トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + ポリシー + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + +TBD + +``` + + 応答 + +``` + +TBD + +``` + +#### 6.4 IssuedToken + この認証モードでは、クライアントはサービスに対する認証を行わず、STS により発行されたトークンを示すことで、共有キーの有無を示します。 サービスはクライアントに対する認証を行いませんが、そのサービスだけがキーを復号化できるように、STS は発行されたトークンの一部として共有キーを暗号化します。 使用するバインディングは、以下のプロパティが設定された対称バインディングです。 + + 保護トークン: インクルード モードが ...\/IncludeToken\/AlwaysToRecipient に設定された発行済みトークン + トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + ポリシー + +``` + + + + + + + + + + +http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### 6.5 SslNegotiated を使用したサービス認証 + このセクションでは、WS\-SecureConversation \(WS\-SC\) ごとのセキュリティ コンテキスト トークンである保護トークンと共に、対称バインディングを使用する認証モードのグループについて説明します。WS\-SecureConversation \(WS\-SC\) のキー値は、WS\-Trust \(WS\-T\) RST\/RSTR メッセージで TLS プロトコルを実行することによりネゴシエートされます。 WS\-Trust を使用した TLS ハンドシェイク実装の詳細は、TLSNEGO に記述されます。 ここで示すメッセージの例は、セキュリティ コンテキストに関連付けられた SCT が、ハンドシェイクによって既に確立されていることを前提としています。 + + 使用するバインディングは、以下のプロパティが設定された対称バインディングです。 + + 保護トークン: インクルード モードが ...\/IncludeToken\/Never に設定された SslContextToken + トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + +#### 6.5.1 SslNegotiated サービス認証のポリシー + このセクションで説明するすべての認証モードのポリシーは、使用する署名付きサポート トークンまたは保証トークンだけが異なります。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .. + + + + + + + + + + + + + + + + + + + +``` + +#### 6.5.2 AnonymousForSslNegotiated + この認証モードでは、クライアントは匿名になり、X.509 証明書を使用してサービスが認証されます。 使用するバインディングは、前述の 6.5.1 に示した対称バインディングのインスタンスです。 + + ポリシー + + バインディングの詳細については、前述の 6.5.1 の「ポリシー」を参照してください。 + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +#### 6.5.3 UserNameForSslNegotiated + この認証モードでは、クライアントはユーザー名トークンを使用して認証を行います。ユーザー名トークンは、署名付きサポート トークンとして SOAP 層に表示されます。 サービスは X.509 証明書を使用して認証されます。 使用するバインディングは、6.5.1 で説明した対称バインディングのインスタンスです。 + + ポリシー + + バインディングの詳細については、前述の 6.5.1 を参照してください。 + + 署名付きサポート トークン + +``` + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +#### 6.5.4 IssuedTokenForSslNegotiated + この認証モードでは、クライアントはサービスに対する認証を行わず、STS により発行されたトークンを示すことで、共有キーの有無を示します。 発行済みトークンは、保証サポート トークンとして SOAP 層に表示されます。 サービスは X.509 証明書を使用して認証されます。 使用するバインディングは、前述の 6.5.1 に示した対称バインディングのインスタンスです。 + + ポリシー + + バインディングの詳細については、前述の 6.5.1 を参照してください。 + + 保証サポート トークン + +``` + + + + + +http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + + + ... + + + ... + + +``` + +#### 6.5.5 MutualSslNegotiated + この認証モードでは、クライアントとサービスは X.509 証明書を使用して認証を行います。 使用するバインディングは、前述の 6.5.1 に示した対称バインディングのインスタンスです。 + + ポリシー + + バインディングの詳細については、前述の 6.5.1 を参照してください。 + + 保証サポート トークン + +``` + + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### 6.6 SspiNegotiated + この認証モードを使用すると、クライアントとサーバーの認証を実行するために、ネゴシエーション プロトコルが使用されます。 Kerberos を使用できる場合は Kerberos が使用され、それ以外の場合は NTLM が使用されます。 使用するバインディングは、以下のプロパティが設定された対称バインディングです。 + + 保護トークン: インクルード モードが ...\/IncludeToken\/AlwaysToRecipient に設定された SpnegoContextToken + トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + ポリシー + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### 6.7 SecureConversation + 使用するバインディングは、WS\-SecureConversation \(WS\-SC\) ごとの SCT を保護トークンとして使用する対称バインディングです。 入れ子になったバインディング \(このバインディング自体も、ネゴシエーション プロトコルを使用する対称バインディングです\) に従い、SCT は WS\-Trust \(WS\-Trust\) または WS\-SecureConversation \(WS\-SC\) を使用してネゴシエートされます。 ネゴシエーション プロトコルは、可能であれば Kerberos を使用してクライアントとサーバーの認証を行います。 Kerberos を使用できない場合は、NTLM が使用されます。 + + ポリシー + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` + + 応答 + +``` + + + ... + + + ... + + + ... + + + ... + + + ... + + +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security-protocols.md b/docs/framework/wcf/feature-details/security-protocols.md new file mode 100644 index 00000000000..f5364cca7ab --- /dev/null +++ b/docs/framework/wcf/feature-details/security-protocols.md @@ -0,0 +1,977 @@ +--- +title: "セキュリティ プロトコル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF], プロトコル" +ms.assetid: 57ffcbea-807c-4e43-a41c-44b3db8ed2af +caps.latest.revision: 11 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 11 +--- +# セキュリティ プロトコル +Web サービス セキュリティ プロトコルには、既存のエンタープライズ メッセージング セキュリティのあらゆる要件に対応する Web サービス セキュリティ機構が用意されています。ここでは、以下の Web サービス セキュリティ プロトコルについて、\( で実装される\) [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の詳細を説明します。 + +||| +|-|-| +|仕様\/ドキュメント|リンク| +|WSS: SOAP Message Security 1.0|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-soap\-message\-security\-1.0.pdf| +|WSS: Username Token Profile 1.0|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-username\-token\-profile\-1.0.pdf| +|WSS: X509 Token Profile 1.0|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-x509\-token\-profile\-1.0.pdf| +|WSS: SAML 1.1 Token Profile 1.0|http:\/\/docs.oasis\-open.org\/wss\/oasis\-wss\-saml\-token\-profile\-1.0.pdf| +|WSS SOAP Message Security 1.1\*|http:\/\/www.oasis\-open.org\/committees\/download.php\/16790\/wss\-v1.1\-spec\-os\-SOAPMessageSecurity.pdf| +|WSS Username Token Profile 1.1|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-username\-token\-profile\-1.0.pdf| +|WSS: X.509 Token Profile 1.1|http:\/\/www.oasis\-open.org\/committees\/download.php\/16785\/wss\-v1.1\-spec\-os\-x509TokenProfile.pdf| +|WSS: Kerberos Token Profile 1.1|http:\/\/www.oasis\-open.org\/committees\/download.php\/16788\/wss\-v1.1\-spec\-os\-KerberosTokenProfile.pdf| +|WSS: SAML 1.1 Token Profile 1.1|http:\/\/www.oasis\-open.org\/committees\/download.php\/16768\/wss\-v1.1\-spec\-os\-SAMLTokenProfile.pdf| +|WS\-Secure Conversation 1.3|http:\/\/docs.oasis\-open.org\/ws\-sx\/ws\-secureconversation\/200512\/ws\-secureconversation\-1.3\-os.pdf| +|WS\-Trust 1.3|http:\/\/docs.oasis\-open.org\/ws\-sx\/ws\-trust\/200512\/ws\-trust\-1.3\-os.pdf| +|Application Note:

Using WS\-Trust for TLS Handshake|公開予定| +|Application Note:

Using WS\-Trust for SPNEGO|公開予定| +|Application Note:

Web Services Addressing Endpoint References And Identity|公開予定| +|WS\-SecurityPolicy 1.2 \(2007\/04\)|http:\/\/www.oasis\-open.org\/committees\/download.php\/23821\/ws\-securitypolicy\-1.2\-spec\-cs.pdf| + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Version 1 には、Web サービス セキュリティ構成の基礎として使用できる 17 個の認証モードが用意されています。各モードは、次のような一般的な展開要件について最適化されています。 + +- クライアントとサービスの認証に使用する資格情報 + +- メッセージまたはトランスポートのセキュリティ保護機構 + +- メッセージ交換パターン + +|認証モード|クライアント認証|サーバー認証|モード| +|-----------|--------------|------------|---------| +|UserNameOverTransport|ユーザー名\/パスワード|X509|トランスポート| +|CertificateOverTransport|X509|X509|トランスポート| +|KerberosOverTransport|Windows|X509|トランスポート| +|IssuedTokenOverTransport|フェデレーション|X509|トランスポート| +|SspiNegotiatedOverTransport|Windows SSPI ネゴシエーション|Windows SSPI ネゴシエーション|トランスポート| +|AnonymousForCertificate|なし|X509|メッセージ| +|UserNameForCertificate|ユーザー名\/パスワード|X509|Message| +|MutualCertificate|X509|X509|Message| +|MutualCertificateDuplex|X509|X509|Message| +|IssuedTokenForCertificate|フェデレーション|X509|Message| +|Kerberos|Windows|Windows|Message| +|IssuedToken|フェデレーション|フェデレーション|Message| +|SspiNegotiated|Windows SSPI ネゴシエーション|Windows SSPI ネゴシエーション|Message| +|AnonymousForSslNegotiated|なし|X509、TLS ネゴシエーション|Message| +|UserNameForSslNegotiated|ユーザー名\/パスワード|X509、TLS ネゴシエーション|Message| +|MutualSslNegotiated|X509|X509、TLS ネゴシエーション|Message| +|IssuedTokenForSslNegotiated|フェデレーション|X509、TLS ネゴシエーション|Message| + + このような認証モードを使用するエンドポイントは、WS\-SecurityPolicy \(WS\-SP\) を使用してセキュリティ要件を表現できます。ここでは、各認証モードのセキュリティ ヘッダーとインフラストラクチャ メッセージの構造について説明します。また、ポリシーとメッセージの例も示します。 + + アプリケーション間での複数のメッセージ交換を保護するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では WS\-SecureConversation を使用してセキュリティで保護されたセッションをサポートします。実装の詳細については、後述の「セキュリティで保護されたセッション」を参照してください。 + + 認証モードに加え、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、メッセージ セキュリティ ベースのほとんどの認証モードに適用される一般的な保護機構を制御するための設定 \(署名と暗号化操作の順序、アルゴリズム スイート、キー派生、署名確認など\) も用意されています。 + + このドキュメントでは、以下のプレフィックスと名前空間を使用します。 + +|プレフィックス|名前空間| +|-------------|----------| +|s|http:\/\/www.w3.org\/2003\/05\/soap\-envelope| +|sp|http:\/\/docs.oasis\-open.org\/ws\-sx\/ws\-securitypolicy\/200702| +|a|http:\/\/www.w3.org\/2005\/08\/addressing| +|wsse|未定 \- OASIS WSS 1.0 の URI| +|wsse11|未定 \- OASIS WSS 1.1 の URI| +|wsu|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-wssecurity\-utility\-1.0.xsd| +|ds|未定 \- W3C XMLDSig の URI| +|wst|未定 \- WS\-Trust 2005\/02 の URI| +|wssc|未定 \- WS\-SecureConversation 2005\/02 の URI| +|wsaw|http:\/\/www.w3.org\/2006\/05\/addressing\/wsdl| +|wsp|http:\/\/schemas.xmlsoap.org\/ws\/2004\/09\/policy| +|mssp|http:\/\/schemas.microsoft.com\/ws\/2005\/07\/securitypolicy| + +## 1.トークン プロファイル + Web サービス セキュリティ仕様では、資格情報をセキュリティ トークンとして表します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、以下のトークンの種類をサポートしています。 + +### 1.1 UsernameToken + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、以下の制約で UsernameToken10 プロファイルおよび UsernameToken11 プロファイルに従います。 + + R1101 : UsernameToken\\Password 要素の PasswordType 属性では、\#PasswordText \(既定値\) を省略するか、指定する必要があります。 + + 機能拡張を使用すると、\#PasswordDigest を実装できます。\#PasswordDigest は、十分に安全性の高いパスワード保護機構であると誤解されがちであることが報告されています。しかし、\#PasswordDigest は、UsernameToken の暗号化の代替として使用できるわけではありません。\#PasswordDigest の第一の目的は、リプレイ攻撃から保護することです。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の各認証モードでは、メッセージ署名を使用することで、リプレイ攻撃の脅威が軽減されます。 + + B1102 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Nonce および UsernameToken の作成済みサブ要素を出力することはありません。 + + これらのサブ要素は、リプレイ検出を支援するためのものです。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、代わりにメッセージ署名を使用します。 + + OASIS WSS SOAP Message Security UsernameToken Profile 1.1 \(UsernameToken11\) では、パスワードからのキー派生機能が導入されています。 + + B1103 : UsernameToken のパスワードをキー派生に使用することはできません。したがって、暗号化操作では使用できません。 + + 理由 : パスワードは、一般に暗号化操作に使用するには脆弱すぎると見なされています。 + +### 1.2 X509 トークン + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、資格情報の種類として X509v3 証明書をサポートしており、以下の制約で X509TokenProfile1.0 と X509TokenProfile1.1 に従います。 + + R1201 : BinarySecurityToken 要素に X509v3 証明書が含まれている場合、この要素の ValueType 属性の値は \#X509v3 であることが必要です。 + + WSS X509 Token Profile 1.0 および 1.1 では、値の種類として \#X509PKIPathv1 と \#PKCS7 も定義されています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、これらの種類をサポートしていません。 + + R1202 : X509 証明書に SubjectKeyIdentifier \(SKI\) 拡張が含まれている場合、トークンへの外部参照に wsse:KeyIdentifier を使用する必要があります。この場合、ValueType 属性に \#X509SubjectKeyIdentifier を指定し、証明書の SKI 拡張の Base64 でエンコードされた値を含めます。 + + SKI 参照は幅広く実装されており、相互運用性の高い外部参照型であることが証明されています。 + + R1203 : X509 セキュリティ トークンへの外部参照では、ds:X509IssuerSerial を使用できません。 + + R1204 : X509TokenProfile1.1 を使用している場合、X509 セキュリティ トークンへの外部参照では、WS\-Security 1.1 で導入された拇印を使用する必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、X509IssuerSerial をサポートしています。ただし、X509IssuerSerial には相互運用性の問題があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、文字列を使用して X509IssuerSerial の 2 つの値を比較します。したがって、サブジェクト名の構成要素を並べ替えて、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに証明書への参照を送信した場合、参照が見つからないことがあります。 + +### 1.3 Kerberos トークン + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Windows 認証のために、以下の制約で KerberosTokenProfile1.1 をサポートしています。 + + R1301 : GSS\_API と Kerberos 仕様で定義されているように、Kerberos トークンは GSS によってラップされた Kerberos v4 AP\_REQ の値を伝達する必要があります。また、値 \#GSS\_Kerberosv5\_AP\_REQ が指定された ValueType 属性を持つ必要があります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、ベア AP\-REQ ではなく、GSS によってラップされた Kerberos AP\-REQ を使用します。これは、セキュリティのベスト プラクティスです。 + +### 1.4 SAML v1.1 トークン + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、SAML v1.1 トークンの WSS SAML Token Profile 1.0 および 1.1 をサポートしています。SAML トークンの形式のその他のバージョンも実装できます。 + +### 1.5 セキュリティ コンテキスト トークン + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-SecureCoversation に導入されたセキュリティ コンテキスト トークン \(SCT\) をサポートしています。SCT は、SecureConversation と、後述する TLS および SSPI の各バイナリ ネゴシエーション プロトコルで確立されたセキュリティ コンテキストを表すために使用されます。 + +## 2.一般的なメッセージ セキュリティ パラメーター + +### 2.1 タイムスタンプ + タイムスタンプの有無は、 クラスの プロパティを使用して制御します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、常に wsse:Created および wsse:Expires の各フィールドと共に wsse:TimeStamp をシリアル化します。署名を使用する場合、wsse:TimeStamp は必ず署名されます。 + +### 2.2 保護の順序 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、メッセージ保護の順序として、"暗号化前に署名" と "署名前に暗号化" をサポートしています \(Security Policy 1.2\)。"WS\-Security 1.1 の SignatureConfirmation 機構を使用していない場合、"署名前に暗号化" を使用して保護されたメッセージを開くと、置き換え攻撃への署名が行われます。また、暗号化された内容に署名すると監査が困難になります。これらの理由から、"暗号化前に署名" を使用することをお勧めします。 + +### 2.3 署名の保護 + "署名前に暗号化" を使用する場合、暗号化された内容や署名キー \(特に、脆弱なキー マテリアルでカスタム トークンを使用する場合\) を推測するブルート フォース攻撃を防ぐために、署名を保護することをお勧めします。 + +### 2.4 アルゴリズム スイート + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、Security Policy 1.2 に記載されたすべてのアルゴリズム スイートをサポートしています。 + +### 2.5 キー派生 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、WS\-SecureConversation に記載された "対称キーのキー派生" を使用します。 + +### 2.6 署名確認 + "man\-in\-the\-middle" 攻撃への対策として署名確認を使用することによって、署名セットを保護できます。 + +### 2.7 セキュリティ ヘッダーのレイアウト + 各認証モードでは、セキュリティ ヘッダーの特定のレイアウトが使用されます。セキュリティ ヘッダー内の要素は、部分的に順序付けられています。セキュリティ ヘッダーの子要素の順序を定義するために、WS\-Security Policy では、以下のセキュリティ ヘッダー レイアウト モードが定義されています。 + +||| +|-|-| +|Strict|"使用前に宣言する" という一般的原則に基づき、Security Policy のセクション 7.7.1 に記載された番号付きレイアウト ルールに従って、項目がセキュリティ ヘッダーに追加されます。| +|Lax|WSS: SOAP Message Security に準拠した任意の順序で、項目がセキュリティ ヘッダーに追加されます。| +|LaxTimestampFirst|セキュリティ ヘッダー内の最初の項目が wsse:Timestamp でなければならないという点を除き、Lax と同じです。| +|LaxTimestampLast|セキュリティ ヘッダー内の最後の項目が wsse:Timestamp でなければならないという点を除き、Lax と同じです。| + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、セキュリティ ヘッダーの 4 つのレイアウト モードをすべてサポートしています。後ほど示す各認証モードのセキュリティ ヘッダーの構造とメッセージの例では、"Strict" モードに従っています。 + +## 3.一般的なメッセージ セキュリティ パラメーター + このセクションでは、各認証モードのポリシーの例、およびクライアントとサービスによって交換されるメッセージのセキュリティ ヘッダーの構造を示す例を紹介します。 + +### 3.1 トランスポートの保護 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意された UserNameOverTransport、CertificateOverTransport、KerberosOverTransport、IssuedTokenOverTransport、および SspiNegotiatedOverTransport の 5 つの認証モードでは、セキュリティで保護されたトランスポートを使用してメッセージを保護します。 + + これらの認証モードは、SecurityPolicy に記載されたトランスポート バインディングを使用して構築されます。UserNameOverTransport 認証モードの場合、UsernameToken は署名付きサポート トークンです。その他の認証モードでは、トークンは署名付き保証トークンとして表示されます。SecurityPolicy の Appendix C.1.2 および C.1.3 には、セキュリティ ヘッダーのレイアウトの詳細が記載されています。以降のセキュリティ ヘッダーの例は、指定の認証モードの Strict レイアウトを示しています。 + + すべてのケースで、トークンの "派生キー" プロパティの値は "false" です。 + + トランスポート バインディングの各プロパティの値は次のとおりです。 + + タイムスタンプ : true + + セキュリティ ヘッダーのレイアウト : Strict + + アルゴリズム スイート : Basic256 + +#### 3.1.1 UsernameOverTransport + この認証モードでは、クライアントはユーザー名トークンを使用して認証を行います。ユーザー名トークンは、イニシエーターから受信者に必ず送信される署名付きサポート トークンとして SOAP 層に表示されます。サービスはトランスポート層で X.509 証明書を使用して認証されます。使用するバインディングは、トランスポート バインディングです。 + + ポリシー + +``` + +``` + + セキュリティ ヘッダーのレイアウト + + 要求 + +``` + ... ... +``` + + 応答 + +``` + ... +``` + +#### 3.1.2 CertificateOverTransport + この認証モードでは、クライアントは X.509 証明書を使用して認証を行います。X.509 証明書は、イニシエーターから受信者に必ず送信される保証サポート トークンとして SOAP 層に表示されます。サービスはトランスポート層で X.509 証明書を使用して認証されます。使用するバインディングは、トランスポート バインディングです。CertificateOverTransport が署名するのは SOAP ヘッダーのみで、SOAP 本文には署名しません。これは、TransportWithMessageCredentials セキュリティ モードで使用される認証モードです。認証はメッセージ資格情報を使用して行われるので、SOAP ヘッダーのみが署名されます。 + + ポリシー + +``` + +``` + + セキュリティ ヘッダーのレイアウト + + 要求 + +``` + ... ... ... +``` + + 応答 + +``` + ... +``` + +#### 3.1.3 IssuedTokenOverTransport + この認証モードでは、クライアントはサービスに対する認証を行わず、セキュリティ トークン サービス \(STS\) により発行されたトークンを示すことで、共有キーの有無を示します。発行されたトークンは、イニシエーターから受信者に必ず送信される保証サポート トークンとして SOAP 層に表示されます。サービスはトランスポート層で X.509 証明書を使用して認証されます。バインディングはトランスポート バインディングです。 + + ポリシー + +``` +
http://www.w3.org/2005/08/addressing/anonymous
...
...
http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + +#### 3.1.4 KerberosOverTransport + この認証モードを使用すると、クライアントは Kerberos チケットを使用してサービスに対する認証を行います。Kerberos トークンは、保証サポート トークンとして SOAP 層に表示されます。サービスはトランスポート層で X.509 証明書を使用して認証されます。バインディングはトランスポート バインディングです。 + + ポリシー + +``` + +``` + + セキュリティ ヘッダーのレイアウト + + 要求 + +``` + ... ... ... +``` + + 応答 + +``` + ... +``` + +#### 3.1.5 SspiNegotiatedOverTransport + このモードでは、ネゴシエーション プロトコルを使用して、クライアントとサーバーの認証を行います。Kerberos を使用できる場合は Kerberos が使用され、それ以外の場合は NTLM が使用されます。発行された SCT は、イニシエーターから受信者に必ず送信される保証サポート トークンとして SOAP 層に表示されます。サービスは、トランスポート層で X.509 証明書により追加的に認証されます。使用するバインディングは、トランスポート バインディングです。""SPNEGO" \(ネゴシエーション\) には、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が WS\-Trust で SSPI バイナリ ネゴシエーション プロトコルを使用する方法が記述されます。このセクションで示すセキュリティ ヘッダーの例は、SPNEGO ハンドシェイクによって SCT が確立された後の状態を示しています。 + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 + WS\-Trust バイナリ ネゴシエーションを使用して、SPNEGO ハンドシェイクによってセキュリティ コンテキスト トークンが確立されると、アプリケーション メッセージのセキュリティ ヘッダーは、次のような構造になります。 + + 要求 + +``` + ... ... ... +``` + + 応答 + +``` + ... +``` + +### 3.2 X.509 証明書を使用したサービス認証 + このセクションでは、MutualCertificate WSS1.0、Mutual CertificateDuplex、MutualCertificate WSS1.1、AnonymousForCertificate、UserNameForCertificate、および IssuedTokenForCertificate の各認証モードについて説明します。 + +#### 3.2.1 MutualCertificate WSS1.0 + この認証モードでは、クライアントは X.509 証明書を使用して認証を行います。X.509 証明書は、イニシエーター トークンとして SOAP 層に表示されます。また、サービスは X.509 証明書を使用して認証されます。SOAP ヘッダーと SOAP 本文の両方が署名されます。対称キーが作成され、受信者のトランスポート証明書を使用して暗号化されます。 + + 使用するバインディングは、次のプロパティ値が設定された非対称バインディングです。 + + イニシエーター トークン : インクルード モードが ...\/IncludeToken\/AlwaysToRecipient に設定されたクライアントの X.509 証明書 + + 受信者トークン : インクルード モードが ...\/IncludeToken\/Never に設定されたサーバーの X.509 証明書 + + トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... +``` + + 応答 + +``` + ... ... ... +``` + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... +``` + +#### 3.2.2 MutualCertificateDuplex + この認証モードでは、クライアントは X.509 証明書を使用して認証を行います。X.509 証明書は、イニシエーター トークンとして SOAP 層に表示されます。また、サービスは X.509 証明書を使用して認証されます。 + + 使用するバインディングは、次のプロパティ値が設定された非対称バインディングです。 + + イニシエーター トークン : インクルード モードが ...\/IncludeToken\/AlwaysToRecipient に設定されたクライアントの X.509 証明書 + + 受信者トークン : インクルード モードが ...\/IncludeToken\/AlwaysToInitiator に設定されたサーバーの X509 証明書 + + トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + 要求と応答 + +``` + ... ... ... ... +``` + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + 要求と応答 + +``` + ... ... ... ... ... +``` + +#### 3.2.3 X.509 サービス認証での SymmetricBinding の使用 + "WSS10" では、X509 トークンを使用するシナリオのサポートが制限されていました。たとえば、サービスの X509 トークンだけを使用して、メッセージの署名と暗号化を保護することはできませんでした。""WSS11" では、EncryptedKey を共通鍵トークンとして使用する方法が導入されています。これにより、サービスの X.509 証明書の暗号化された一時キーを使用して、要求メッセージと応答メッセージの両方を保護できるようになります。セクション 3.4 で説明する認証モードでは、このパターンを使用します。 + + WS\-SecurityPolicy には、サービスの X509 トークンを保護トークンとして使用して SymmetricBinding を使用するこのパターンが記載されています。 + + AnonymousForCertificate、UsernameForCertificate、MutualCertificate WSS11、および IssuedTokenForCertificate の各認証モードはすべて、以下のプロパティ値が設定された sp:SymmetricBinding の同様のインスタンスを使用します。 + + 保護トークン: インクルード モードが ...\/IncludeToken\/Never に設定されたサーバーの X509 証明書 +トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + 前述の各認証モードは、使用するサポート トークンだけが異なります。AnonymousForCertificate はサポート トークンをまったく使用せず、MutualCertificate WSS 1.1 は保証サポート トークンとしてクライアントの X509 証明書を使用します。また、UserNameForCertificate は署名付きサポート トークンとしてユーザー名トークンを使用し、IssuedTokenForCertificate は保証サポート トークンとして発行済みトークンを使用します。 + +#### 3.2.4 AnonymousForCertificate + この認証モードでは、クライアントは匿名になり、X.509 証明書を使用してサービスが認証されます。使用するバインディングは、3.4.2 で説明する対称バインディングのインスタンスです。 + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... ... +``` + + ポリシー + +``` + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + +#### 3.2.5 UserNameForCertificate + この認証モードでは、クライアントはユーザー名トークンを使用してサーバーに対する認証を行います。ユーザー名トークンは、署名付きサポート トークンとして SOAP 層に表示されます。X.509 証明書を使用したクライアントに対するサービス認証です。使用するバインディングは、クライアントによって生成され、サービスの公開キーで暗号化されたキーを保護トークンとして使用する対称バインディングです。 + + ポリシー + +``` + + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + + ポリシー + +``` + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... ... + +``` + + 応答 + +``` + ... ... ... ... ... + +``` + +#### 3.2.6 MutualCertificate \(WSS 1.1\) + この認証モードでは、クライアントは X.509 証明書を使用して認証を行います。X.509 証明書は、保証サポート トークンとして SOAP 層に表示されます。また、サービスは X.509 証明書を使用して認証されます。使用するバインディングは、クライアントによって生成され、サービスの公開キーで暗号化されたキーを保護トークンとして使用する対称バインディングです。 + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... ... ... +``` + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + +#### 3.2.7 IssuedTokenForCertificate + この認証モードでは、クライアントはサービスに対する認証を行わず、STS により発行されたトークンを示すことで、共有キーの有無を示します。発行済みトークンは、保証サポート トークンとして SOAP 層に表示されます。サービスはクライアントに対して X.509 証明書を使用して認証します。使用するバインディングは、クライアントによって生成され、サービスの公開キーで暗号化されたキーを保護トークンとして使用する対称バインディングです。 + + ポリシー + +``` +
http://www.w3.org/2005/08/addressing/anonymous
...
...
http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
+``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... + +``` + + 応答 + +``` + ... ... ... ... ... +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + ポリシー + +``` +
http://www.w3.org/2005/08/addressing/anonymous
...
...
http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
+ +``` + + 要求 + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + +## 3.3 Kerberos + この認証モードを使用すると、クライアントは Kerberos チケットを使用してサービスに対する認証を行います。また、その同じチケットによってサーバーが認証されます。使用するバインディングは、以下のプロパティが設定された対称バインディングです。 + + 保護トークン: インクルード モードが ...\/IncludeToken\/Once に設定された Kerberos チケット +トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... + +``` + + 応答 + +``` + ... ... ... ... ... +``` + + ポリシー + +``` + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + +#### 3.4 IssuedToken + この認証モードでは、クライアントはサービスに対する認証を行わず、STS により発行されたトークンを示すことで、共有キーの有無を示します。サービスはクライアントに対する認証を行いませんが、そのサービスだけがキーを復号化できるように、STS は発行されたトークンの一部として共有キーを暗号化します。使用するバインディングは、以下のプロパティが設定された対称バインディングです。 + + 保護トークン: インクルード モードが ...\/IncludeToken\/AlwaysToRecipient に設定された発行済みトークン +トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + ポリシー + +``` +
http://www.w3.org/2005/08/addressing/anonymous
...
...
http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
+``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + + ポリシー + +``` +
http://www.w3.org/2005/08/addressing/anonymous
...
...
http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
+``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + +### 3.5 SslNegotiated を使用したサービス認証 + このセクションでは、WS\-SecureConversation \(WS\-SC\) ごとのセキュリティ コンテキスト トークンである保護トークンと共に、対称バインディングを使用する認証モードのグループについて説明します。WS\-SecureConversation \(WS\-SC\) のキー値は、WS\-Trust \(WS\-T\) RST\/RSTR メッセージで TLS プロトコルを実行することによりネゴシエートされます。WS\-Trust を使用した TLS ハンドシェイク実装の詳細は、TLSNEGO に記述されます。ここで示すメッセージの例は、セキュリティ コンテキストに関連付けられた SCT が、ハンドシェイクによって既に確立されていることを前提としています。 + + 使用するバインディングは、以下のプロパティが設定された対称バインディングです。 + + 保護トークン: インクルード モードが ...\/IncludeToken\/Never に設定された SslContextToken +トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + +#### 3.5.1 SslNegotiated サービス認証のポリシー + このセクションで説明するすべての認証モードのポリシーは、使用する署名付きサポート トークンまたは保証トークンだけが異なります。 + +#### 3.5.2 AnonymousForSslNegotiated + この認証モードでは、クライアントは匿名になり、X.509 証明書を使用してサービスが認証されます。使用するバインディングは、前述の 3.5.1 に示した対称バインディングのインスタンスです。 + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + + ポリシー + +``` + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + +#### 3.5.3 UserNameForSslNegotiated + この認証モードでは、クライアントはユーザー名トークンを使用して認証を行います。ユーザー名トークンは、署名付きサポート トークンとして SOAP 層に表示されます。サービスは X.509 証明書を使用して認証されます。使用するバインディングは、3.5.1 で説明した対称バインディングのインスタンスです。 + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + + ポリシー + +``` + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... ... + +``` + + 応答 + +``` + ... ... ... ... ... +``` + +#### 3.5.4 IssuedTokenForSslNegotiated + この認証モードでは、クライアントはサービスに対する認証を行わず、STS により発行されたトークンを示すことで、共有キーの有無を示します。発行済みトークンは、保証サポート トークンとして SOAP 層に表示されます。サービスは X.509 証明書を使用して認証されます。使用するバインディングは、前述の 3.5.1 に示した対称バインディングのインスタンスです。 + + ポリシー + +``` +
http://www.w3.org/2005/08/addressing/anonymous
...
...
http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
+``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + + ポリシー + +``` +
http://www.w3.org/2005/08/addressing/anonymous
...
...
http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
+``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + +#### 3.5.5 MutualSslNegotiated + この認証モードでは、クライアントとサービスは X.509 証明書を使用して認証を行います。使用するバインディングは、前述の 3.5.1 に示した対称バインディングのインスタンスです。 + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... + +``` + + 応答 + +``` + ... ... ... ... ... +``` + +### 3.6 SspiNegotiated + この認証モードを使用すると、クライアントとサーバーの認証を実行するために、ネゴシエーション プロトコルが使用されます。Kerberos を使用できる場合は Kerberos が使用され、それ以外の場合は NTLM が使用されます。使用するバインディングは、以下のプロパティが設定された対称バインディングです。 + + 保護トークン: インクルード モードが ...\/IncludeToken\/AlwaysToRecipient に設定された SpnegoContextToken +トークンの保護 : False + + ヘッダーと本文全体の署名 : True + + 保護の順序 : SignBeforeEncrypt + + 署名の暗号化 : True + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + +### 3.7 SecureConversation + 使用するバインディングは、WS\-SecureConversation \(WS\-SC\) ごとの SCT を保護トークンとして使用する対称バインディングです。入れ子になったバインディング \(このバインディング自体も、ネゴシエーション プロトコルを使用する対称バインディングです\) に従い、SCT は WS\-Trust \(WS\-Trust\) または WS\-SecureConversation \(WS\-SC\) を使用してネゴシエートされます。ネゴシエーション プロトコルは、可能であれば Kerberos を使用してクライアントとサーバーの認証を行います。Kerberos を使用できない場合は、NTLM が使用されます。 + + ポリシー + +``` + +``` + +### セキュリティ ヘッダーの例 : SignBeforeEncrypt、EncryptSignature + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` + + ポリシー + +``` + + +``` + +### セキュリティ ヘッダーの例 : EncryptBeforeSign + Request + +``` + ... ... ... ... ... ... +``` + + 応答 + +``` + ... ... ... ... ... +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/security.md b/docs/framework/wcf/feature-details/security.md new file mode 100644 index 00000000000..8590329077e --- /dev/null +++ b/docs/framework/wcf/feature-details/security.md @@ -0,0 +1,80 @@ +--- +title: "Windows Communication Foundation セキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF]" + - "Windows Communication Foundation, プログラミング" + - "Windows Communication Foundation, セキュリティ" +ms.assetid: 7ea87fcb-dcfb-4a4a-8b03-6b954575d45b +caps.latest.revision: 21 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 21 +--- +# Windows Communication Foundation セキュリティ +このセクションの各トピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のセキュリティ機能、およびこれらの機能を使用してメッセージをセキュリティで保護する方法について説明します。 + + Windows Server AppFabric およびセキュリティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409)」を参照してください。 + +## このセクションの内容 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ機能について説明します。 + + [セキュリティの概念](../../../../docs/framework/wcf/feature-details/security-concepts.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティで使用される基本的な用語と概念について説明します。 + + [一般的なセキュリティ シナリオ](../../../../docs/framework/wcf/feature-details/common-security-scenarios.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で構成できるシナリオとトポロジについて説明します。 + + [セキュリティ動作](../../../../docs/framework/wcf/feature-details/security-behaviors-in-wcf.md) + 資格情報の設定など、セキュリティに影響する WCF の動作に関する概要について説明します。 + + [バインディングとセキュリティ](../../../../docs/framework/wcf/feature-details/bindings-and-security.md) + カスタム セキュリティ バインディングの作成方法を示すトピックなど、バインディングをセキュリティの観点から説明します。 + + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ機能を使用して、メッセージをセキュリティで保護する方法について説明します。 + + [認証](../../../../docs/framework/wcf/feature-details/authentication-in-wcf.md) + 一般的な認証タスクを示します。 + + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) + セキュリティ実装を使用した一般的な承認シナリオについて説明します。 + + [フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md) + フェデレーションの基本事項と、フェデレーション サーバーと通信するクライアントを作成する方法について説明します。 + + [部分信頼](../../../../docs/framework/wcf/feature-details/partial-trust.md) + 部分的な信頼のシナリオを実行する方法と、部分的な信頼を実行するときの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の制限について説明します。 + + [監査](../../../../docs/framework/wcf/feature-details/auditing-security-events.md) + セキュリティ イベントを監査する方法について説明します。 + + [セキュリティ ガイドラインとベスト プラクティス](../../../../docs/framework/wcf/feature-details/security-guidance-and-best-practices.md) + セキュリティで保護された [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションの作成に関するガイドラインを示します。 + +## 関連項目 + + + + +## 関連項目 + [WCF 機能の詳細](../../../../docs/framework/wcf/feature-details/index.md) + + [基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md) + + [チュートリアル入門](../../../../docs/framework/wcf/getting-started-tutorial.md) + + [概念](../../../../docs/framework/wcf/conceptual-overview.md) + +## 参照 + [アプリケーションの構成](../../../../docs/framework/wcf/diagnostics/configuring-your-application.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md b/docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md new file mode 100644 index 00000000000..b2f28520e7c --- /dev/null +++ b/docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md @@ -0,0 +1,129 @@ +--- +title: "SecurityBindingElement 認証モード | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 12300bf4-c730-4405-9f65-d286f68b5a43 +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 13 +--- +# SecurityBindingElement 認証モード +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、クライアントとサービスが互いに認証するためのモードが複数あります。 クラスの静的メソッドまたは構成を使用して、この認証モード用のセキュリティ バインド要素を作成できます。このトピックでは、18 の認証モードについて簡単に説明します。 + + 認証モードのいずれかで要素を使用する例については、「[方法 : 指定した認証モード用の SecurityBindingElement を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md)」を参照してください。 + +## 基本的な構成プログラミング + 構成ファイルで認証モードを設定する手順を次に示します。 + +#### 構成で認証モードを設定するには + +1. [\](../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) 要素に、[\](../../../../docs/framework/configure-apps/file-schema/wcf/custombinding.md)を追加します。 + +2. 子要素として、[\](../../../../docs/framework/misc/binding.md) 要素を `` 要素に追加します。 + +3. `` 要素を `` 要素に追加します。 + +4. `authenticationMode` 属性を、以下で説明する値のいずれかに設定します。たとえば、次のコードによりモードは `AnonymousForCertificate` に設定されます。 + + ``` + + + + + + + + ``` + +#### プログラムでモードを設定するには + +1. 戻り値の型を決めます。、または のいずれかを指定できます。 + +2. クラスの適切な静的メソッドを呼び出します。たとえば、次のコードは メソッドを呼び出します。 + + [!code-csharp[c_CustomBindingsAuthMode#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_custombindingsauthmode/cs/source.cs#3)] + [!code-vb[c_CustomBindingsAuthMode#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_custombindingsauthmode/vb/source.vb#3)] + +3. カスタム バインディングを作成するにはバインド要素を使用します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md). + +## モードの説明 + +### AnonymousForCertificate + この認証モードでは、クライアントは匿名になり、X.509 証明書を使用してサービスが認証されます。セキュリティ バインド要素は、 メソッドによって返される です。または、\<`security`\> 要素の `authenticationMode` 属性を `AnonymousForCertificate` に設定します。 + +### AnonymousForSslNegotiated + この認証モードでは、クライアントが匿名になり、実行時にネゴシエートされる X.509 証明書を使用してサービスが認証されます。セキュリティ バインド要素は、最初のパラメーターに `false` の値が渡される場合に メソッドによって返される です。代わりに、`authenticationMode` 属性に `AnonymousForSslNegotiated` を設定します。 + +### CertificateOverTransport + この認証モードでは、クライアントは、保証サポート トークン、つまりメッセージ署名を行うトークンとして SOAP 層に表示される X.509 証明書を使用して認証を行います。サービスはトランスポート層で X.509 証明書を使用して認証されます。セキュリティ バインド要素は、 メソッドによって返される です。代わりに、`authenticationMode` 属性に `CertificateOverTransport` を設定します。 + +### IssuedToken + この認証モードでは、クライアントはサービスに対する認証を行いません。代わりに、クライアントはセキュリティ トークン サービスに対して認証を行い、SAML トークンを受信します。その後、クライアントはサーバーに対してこのトークンを提示し、共有キーの情報を示します。サービスはクライアントに対して認証されませんが、そのサービスだけがキーを復号化できるように、セキュリティ トークン サービスは発行されたトークンの一部として共有キーを暗号化します。セキュリティ バインド要素は、 メソッドによって返される です。代わりに、`authenticationMode` 属性を `IssuedToken` に設定します。 + +### IssuedTokenForCertificate + この認証モードでは、クライアントはサービスに対する認証を行いません。代わりに、クライアントはセキュリティ トークン サービスに対して認証を行い、SAML トークンを受信します。その後、クライアントはサーバーに対してこのトークンを提示し、共有キーの情報を示します。発行済みトークンは、保証サポート トークンまたは所有者トークン \(メッセージ署名を行うトークン\) として SOAP 層に表示されます。サービスはクライアントに対して X.509 証明書を使用して認証します。セキュリティ バインド要素は、 メソッドによって返される です。代わりに、`authenticationMode` 属性に `IssuedTokenForCertificate` を設定します。 + +### IssuedTokenForSslNegotiated + この認証モードでは、クライアントはサービスに対する認証を行いません。代わりに、クライアントはセキュリティ トークン サービスに対して認証を行い、SAML トークンを受信します。その後、クライアントはサーバーに対してこのトークンを提示し、共有キーの情報を示します。発行済みトークンは、保証サポート トークンまたは所有者トークン \(メッセージ署名を行うトークン\) として SOAP 層に表示されます。サービスは X.509 証明書を使用して認証されます。セキュリティ バインド要素は、 メソッドによって返される です。代わりに、`authenticationMode` 属性に `IssuedTokenForSslnegotiated` を設定します。 + +### IssuedTokenOverTransport + この認証モードでは、クライアントはサービスに対する認証を行いません。代わりに、クライアントはセキュリティ トークン サービスに対して認証を行い、SAML トークンを受信します。その後、クライアントはサーバーに対してこのトークンを提示し、共有キーの情報を示します。発行済みトークンは、保証サポート トークンまたは所有者トークン \(メッセージ署名を行うトークン\) として SOAP 層に表示されます。サービスはトランスポート層で X.509 証明書を使用して認証されます。セキュリティ バインド要素は、 メソッドによって返される `TransportSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `IssuedTokenOverTransport` を設定します。 + +### Kerberos + この認証モードでは、クライアントは Kerberos チケットを使用してサービスに対する認証を行います。また、その同じチケットによってサーバーが認証されます。セキュリティ バインド要素は、 メソッドによって返される `SymmetricSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `Kerberos` を設定します。 + +> [!NOTE] +> この認証モードを使用するには、サービス アカウントをサービス プリンシパル名 \(SPN: Service Principal Name\) に関連付ける必要があります。この関連付けを行うには、NETWORK SERVICE アカウントまたは LOCAL SYSTEM アカウントでサービスを実行します。または、SetSpn.exe ツールを使用して、サービス アカウントの SPN を作成します。いずれの場合も、クライアントは [\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceprincipalname.md) 要素で正しい SPN を使用するか、 コンストラクターを使用して正しい SPN を使用する必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md). + +> [!NOTE] +> `Kerberos` 認証モードを使用する場合、 および の各偽装レベルはサポートされません。 + +### KerberosOverTransport + この認証モードでは、クライアントは Kerberos チケットを使用してサービスに対する認証を行います。Kerberos トークンは、保証サポート トークン、つまりメッセージ署名を行うトークンとして SOAP 層に表示されます。サービスはトランスポート層で X.509 証明書を使用して認証されます。セキュリティ バインド要素は、 メソッドによって返される `TransportSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `KerberosOverTransport` を設定します。 + +> [!NOTE] +> この認証モードを使用するには、サービス アカウントを SPN に関連付ける必要があります。この関連付けを行うには、NETWORK SERVICE アカウントまたは LOCAL SYSTEM アカウントでサービスを実行します。または、SetSpn.exe ツールを使用して、サービス アカウントの SPN を作成します。いずれの場合も、クライアントは [\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceprincipalname.md) 要素で正しい SPN を使用するか、 コンストラクターを使用して正しい SPN を使用する必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md). + +### MutualCertificate + この認証モードでは、クライアントは、保証サポート トークン、つまりメッセージ署名を行うトークンとして SOAP 層に表示される X.509 証明書を使用して認証を行います。また、サービスは X.509 証明書を使用して認証されます。セキュリティ バインド要素は、 メソッドによって返される `SymmetricSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `MutualCertificate` を設定します。 + +### MutualCertificateDuplex + この認証モードでは、クライアントは、保証サポート トークン、つまりメッセージ署名を行うトークンとして SOAP 層に表示される X.509 証明書を使用して認証を行います。また、サービスは X.509 証明書を使用して認証されます。バインディングは、 メソッドによって返される `AsymmetricSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `MutualCertificateDuplex` を設定します。 + +### MutalSslNegotiation + この認証モードでは、クライアントとサービスは X.509 証明書を使用して認証を行います。セキュリティ バインド要素は、最初のパラメーターに `true` の値が渡される場合に メソッドによって返される `SymmetricSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `MutualSslNegotiated` を設定します。 + +### SecureConversation + セキュリティ バインド要素は、 メソッドによって返される `SymmetricSecurityBindingElement` です。このメソッドは、パラメーターとして を受け取り、初期化時にこれを使用してセキュリティで保護されたセッションを確立します。代わりに、`authenticationMode` 属性に `SecureConversation` を設定します。 + + ブートストラップ バインディングを指定していない場合は、ブートストラップのために `SspiNegotiated` 認証モードが使用されます。 + +### SspiNegotiation + この認証モードでは、ネゴシエーション プロトコルを使用して、クライアントとサーバーの認証を行います。Kerberos を使用できる場合は Kerberos が使用され、それ以外の場合は、NTLM \(NT LanMan\) が使用されます。セキュリティ バインド要素は、 メソッドによって返される `SymmetricSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `SspiNegotiated` を設定します。 + +### SspiNegotiatedOverTransport + この認証モードでは、ネゴシエーション プロトコルを使用して、クライアントとサーバーの認証を行います。Kerberos プロトコルを使用できる場合は Kerberos プロトコルが使用され、それ以外の場合は NTLM が使用されます。発行されたトークンは、保証サポート トークン、つまりメッセージ署名を行うトークンとして SOAP 層に表示されます。サービスは、トランスポート層で X.509 証明書により追加的に認証されます。セキュリティ バインド要素は、 メソッドによって返される `TransportSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `SspiNegotiatedOverTransport` を設定します。 + +### UserNameForCertificate + この認証モードでは、クライアントは、署名付きサポート トークン、つまりメッセージ署名で署名されたトークンとして SOAP 層に表示されるユーザー名トークンを使用してサービスに対する認証を行います。X.509 証明書を使用したクライアントに対するサービス認証。セキュリティ バインド要素は、 メソッドによって返される `SymmetricSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `UserNameForCertificate` を設定します。 + + `UserNameForCertificate` 認証モードでは、クライアントとサービスの両方が WS\-Security 1.1 を使用している必要があります。 + +### UserNameForSslNegotiated + この認証モードでは、クライアントは、署名付きサポート トークン、つまりメッセージ署名で署名されたトークンとして SOAP 層に表示されるユーザー名トークンを使用して認証を行います。サービスは X.509 証明書を使用して認証されます。セキュリティ バインド要素は、 メソッドによって返される `SymmetricSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `UserNameForSslNegotiated` を設定します。 + +### UserNameOverTransport + この認証モードでは、クライアントは、署名付きサポート トークン、つまりメッセージ署名で署名されたトークンとして SOAP 層に表示されるユーザー名トークンを使用して認証を行います。サービスはトランスポート層で X.509 証明書を使用して認証されます。セキュリティ バインド要素は、 メソッドによって返される `TransportSecurityBindingElement` です。代わりに、`authenticationMode` 属性に `UserNameOverTransport` を設定します。 + +## 参照 + + [方法 : 指定した認証モード用の SecurityBindingElement を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/selecting-a-credential-type.md b/docs/framework/wcf/feature-details/selecting-a-credential-type.md new file mode 100644 index 00000000000..def1d37e923 --- /dev/null +++ b/docs/framework/wcf/feature-details/selecting-a-credential-type.md @@ -0,0 +1,123 @@ +--- +title: "資格情報の種類の選択 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bf707063-3f30-4304-ab53-0e63413728a8 +caps.latest.revision: 25 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 25 +--- +# 資格情報の種類の選択 +*"資格情報"* とは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] が、クレームされた ID または機能を確立するために使用するデータです。 たとえば、パスポートは、政府によって発行される、国籍または地域籍を証明するための資格情報です。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ユーザー名トークンや X.509 証明書など多数の形式を資格情報に使用できます。 ここでは、資格情報について説明し、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で資格情報を使用する方法およびアプリケーションに適切な資格情報を選択する方法についても説明します。 + + 多くの国や地域において、運転免許証は資格情報の一例です。 運転免許証には、個人を識別する情報や能力を表すデータが記載されます。 この免許証には、所有者の写真という形式で所有の証明が含まれています。 免許証は、政府機関など、信頼された証明機関によって発行されます。 免許証には発行機関印が押され \(国や地域によってはホログラムが使用され\) ており、これによって、改ざんあるいは偽造されたものではないことが示されています。 + + 資格情報の提示には、データ自体の提示とデータの所有証明の提示が関与します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、トランスポートとメッセージの両方のセキュリティ レベルで、さまざまな種類の資格情報がサポートされています。 例えば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされている、ユーザー名と \(X.509\) 証明書の 2 種類の資格情報を考えてみましょう。 + + ユーザー名資格情報で、ユーザー名はクレームされた ID を表しており、パスワードは所有の証明に使用されます。 この場合の信頼された証明機関とは、ユーザー名とパスワードを検証するシステムです。 + + X.509 証明書資格情報を使用する場合、サブジェクト名、サブジェクト代替名、または証明書内の特定のフィールドを ID のクレームとして使用し、`Valid From` 、`Valid To` などの他のフィールドで証明書の有効性を示すことができます。 + +## トランスポート資格情報の種類 + 転送セキュリティ モードのバインディングによって使用できるクライアント資格情報の種類を次の表に示します。 サービスを作成する際には、`ClientCredentialType` プロパティを次のいずれかの値に設定し、クライアントがサービスと通信するときに提供する必要がある資格情報の種類を指定します。 この種類は、コードまたは構成ファイルで設定できます。 + +|設定|説明| +|--------|--------| +|なし|クライアントが資格情報を提示する必要がないことを指定します。 匿名クライアントであると解釈されます。| +|Basic|クライアントに基本認証を指定します。 詳細については、RFC2617『[HTTP Authentication: Basic and Digest Authentication](http://go.microsoft.com/fwlink/?LinkID=88313)』を参照してください。| +|Digest|クライアントにダイジェスト認証を指定します。 詳細については、RFC2617『[HTTP Authentication: Basic and Digest Authentication](http://go.microsoft.com/fwlink/?LinkID=88313)』を参照してください。| +|Ntlm|NT LAN Manager \(NTLM\) 認証を指定します。 これは、何らかの理由で Kerberos 認証を使用できないときに使用されます。 プロパティを `false` に設定すると、フォールバックとしての NTLM の使用を無効にすることもできます。これにより、NTLM が使用されていれば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] はベスト エフォートで例外をスローするようになります。 ただし、このプロパティを `false` に設定しても、ネットワーク経由で NTLM 資格情報が送信されなくなるとは限りません。| +|Windows|Windows 認証を指定します。 Windows ドメインで Kerberos プロトコルだけを指定するには、 プロパティを `false` \(既定値は `true`\) に設定する必要があります。| +|証明書|X.509 証明書を使用したクライアント認証を実行します。| +|\[Password\]|ユーザーは、ユーザー名とパスワードを提供する必要があります。 Windows 認証または他のカスタム ソリューションを使用して、ユーザー名とパスワードの組み合わせを検証します。| + +### メッセージ クライアント資格情報の種類 + メッセージ セキュリティを使用するアプリケーションを作成するときに使用できる資格情報の種類を次の表に示します。 これらの値は、コードまたは構成ファイルで使用できます。 + +|設定|説明| +|--------|--------| +|なし|クライアントが資格情報を提示する必要がないことを指定します。 匿名クライアントであると解釈されます。| +|Windows|Windows 資格情報によって確立されたセキュリティ コンテキストで、SOAP メッセージ交換を実行できます。| +|\[ユーザー名\]|ユーザー名資格情報を使用したクライアントの認証をサービスで要求できるようにします。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、署名の生成やデータの暗号化など、ユーザー名を使用した暗号化操作が許可されていない点に注意してください。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ユーザー名資格情報の使用時に、トランスポートが確実にセキュリティで保護されます。| +|証明書|X.509 証明書を使用したクライアントの認証をサービスで要求できるようにします。| +|IssuedToken|セキュリティ ポリシーに従って構成されるカスタム トークンです。 既定のトークンの種類は、SAML \(Security Assertion Markup Language\) です。 トークンは、セキュリティ トークン サービスによって発行されます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md).| + +### サービス資格情報のネゴシエーション モデル + *ネゴシエーション*とは、資格情報を交換することによって、クライアントとサービスとの間に信頼を確立するプロセスです。 このプロセスは、ネゴシエーション プロセスの次の手順に必要な情報だけを公開するために、クライアントとサービスとの間で反復して実行されます。 実際には、最後に、後続の操作で使用されるサービスの資格情報がクライアントに配信されます。 + + 1 つの例外を除き、既定では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のシステム指定のバインディングは、メッセージ レベルのセキュリティを使用しているときに、サービス資格情報を自動的にネゴシエートします \(例外とは、 の場合です。このバインディングでは、既定ではセキュリティが有効化されません\)。この動作を無効にするには、 プロパティと プロパティを参照してください。 + +> [!NOTE] +> SSL セキュリティを .NET Framework 3.5 以降と共に使用すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントは、証明書ストア内の中間証明書と SSL ネゴシエーション中に受信した中間証明書の両方を使用して、サービスの証明書に対して証明書チェーンの検証を実行します。 .NET Framework 3.0 では、ローカルの証明書ストアにインストールされている中間証明書のみが使用されます。 + +#### 帯域外ネゴシエーション + 自動ネゴシエーションを無効にした場合、サービスにメッセージを送信する前にクライアント側にサービス資格情報が準備されている必要があります。 これは、*帯域外*プロビジョニングとも呼ばれます。 たとえば、指定された資格情報の種類が証明書で、自動ネゴシエーションが無効の場合、クライアントはサービス所有者に連絡し、証明書を受け取って、クライアント アプリケーションを実行しているコンピューターにインストールする必要があります。 この方法は、たとえば B2B シナリオで、サービスにアクセスできるクライアントを厳密に制御することが必要な場合に使用される可能性があります。 この帯域外ネゴシエーションは、電子メールで実行できます。X.509 証明書は、Microsoft 管理コンソール \(MMC\) の証明書スナップインなどのツールを使用して、Windows 証明書ストアに格納します。 + +> [!NOTE] +> プロパティを使用して、帯域外ネゴシエーションによって取得した証明書をサービスに提供します。 バインディングでは自動ネゴシエーションが許可されないので、 クラスを使用するときはこの操作が必要になります。 このプロパティは、相関関係のない双方向シナリオでも使用します。 このシナリオでは、クライアントが先にサーバーへの要求を送信する必要がなく、サーバーからクライアントにメッセージが送信されます。 サーバーにはクライアントからの要求がないので、サーバーはクライアントの証明書を使用して、クライアントへのメッセージを暗号化する必要があります。 + +## 資格情報の値の設定 + セキュリティ モードを選択したら、実際の資格情報を指定する必要があります。 たとえば、資格情報の種類を "Certificate" に設定した場合、特定の資格情報 \(特定の X.509 証明書など\) をサービスまたはクライアントに関連付ける必要があります。 + + サービスをプログラミングしている場合とクライアントをプログラミングしている場合で、資格情報の値を設定する方法が少し異なります。 + +### サービス資格情報の設定 + トランスポート モードを使用し、HTTP をトランスポートとして使用する場合は、インターネット インフォメーション サービス \(IIS\) を使用するか、証明書でポートを構成する必要があります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [トランスポート セキュリティの概要](../../../../docs/framework/wcf/feature-details/transport-security-overview.md) および [HTTP トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/http-transport-security.md)。 + + コードで資格情報をサービスに提供するには、 クラスのインスタンスを作成し、 プロパティからアクセスできる クラスを使用して適切な資格情報を指定します。 + +#### 証明書の設定 + クライアントに対するサービスの認証に使用される X.509 証明書をサービスに提供するには、 クラスの メソッドを使用します。 + + クライアント証明書をサービスに提供するには、 クラスの メソッドを使用します。 + +#### Windows 資格情報の設定 + クライアントが有効なユーザー名とパスワードを指定した場合、その資格情報がクライアントの認証に使用されます。 それ以外の場合は、現在ログオンしているユーザーの資格情報が使用されます。 + +### クライアント資格情報の設定 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、クライアント アプリケーションは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを使用してサービスに接続します。 各クライアントは、 クラスから派生しています。各クライアントでは プロパティを使用して、クライアント資格情報のさまざまな値を指定できます。 + +#### 証明書の設定 + サービスに対するクライアントの認証に使用される X.509 証明書をサービスに提供するには、 クラスの メソッドを使用します。 + +## サービスに対するクライアントの認証でのクライアント資格情報の使用 + サービスとの通信に必要なクライアント資格情報は、 プロパティまたは プロパティを使用して提供されます。 この情報は、サービスに対してクライアントを認証するためにセキュリティ チャネルで使用されます。 認証は、次のいずれかの方法で実行されます。 + +- クライアント資格情報を 1 回使用してから、セキュリティ コンテキストを確立するために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントのインスタンスを使用して最初のメッセージを送信します。 アプリケーション メッセージはすべて、そのセキュリティ コンテキストで保護されます。 + +- サービスに送信されたアプリケーション メッセージごとの認証に、クライアント資格情報を使用します。 この場合、クライアントとサービスとの間にコンテキストは確立されません。 + +### 変更できない確立された ID + 1 つ目の方法を使用した場合、確立されたコンテキストは、クライアント ID に永続的に関連付けられます。 つまり、セキュリティ コンテキストが確立されると、クライアントに関連付けられた ID を変更できません。 + +> [!IMPORTANT] +> ID の切り替えができないこと \(つまり、セキュリティ コンテキストを確立する場合の既定の動作\) について、注意が必要な状況があります。 別のサービスと通信するサービスを作成する場合、この 2 番目のサービスに対して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを開くために使用した ID は変更できません。 これは、複数のクライアントが最初のサービスを使用できる状況で、2 番目のサービスにアクセスするときに最初のサービスがクライアントを偽装する場合、問題になります。 サービスがすべての呼び出し元に対して同じクライアントを再利用する場合、2 番目のサービスへの呼び出しはすべて、2 番目のサービスに対してクライアントを開くために使用した最初の呼び出し元の ID によって実行されます。 つまり、このサービスでは、すべてのクライアントが 2 番目のサービスと通信できるように、最初のクライアントの ID が使用されます。 これによって、権限の昇格が発生する可能性があります。 これがサービスの目的の動作でない場合、各呼び出し元を追跡し、その呼び出し元ごとに 2 番目のサービスに対する新しいクライアントを作成する必要があります。これによって、適切な呼び出し元が 2 番目のサービスと通信するために、サービスは適切なクライアントだけを使用できます。 + + 資格情報とセキュリティで保護されたセッション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[セキュリティで保護されたセッションに関するセキュリティの検討](../../../../docs/framework/wcf/feature-details/security-considerations-for-secure-sessions.md)」を参照してください。 + +## 参照 + + + + + + + + + + + + + [セキュリティの概念](../../../../docs/framework/wcf/feature-details/security-concepts.md) + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + [WCF セキュリティのプログラミング](../../../../docs/framework/wcf/feature-details/programming-wcf-security.md) + [HTTP トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/http-transport-security.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/serializable-types.md b/docs/framework/wcf/feature-details/serializable-types.md new file mode 100644 index 00000000000..763e595d402 --- /dev/null +++ b/docs/framework/wcf/feature-details/serializable-types.md @@ -0,0 +1,53 @@ +--- +title: "シリアル化可能な型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f1c8539a-6a79-4413-b294-896f0957b2cd +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# シリアル化可能な型 +既定では、 は公開されている型をすべてシリアル化します。 その型の読み書き可能なパブリック プロパティおよびパブリック フィールドは、すべてシリアル化されます。 + + 既定の動作を変更するには、 属性と 属性を型とメンバーに適用します。この機能は、使用するコントロールに型がない場合や属性を追加するように変更できない場合に役立ちます。 は "マークされていない" 型を認識します。 + +## シリアル化の既定 + 属性と 属性を適用して、型とメンバーのシリアル化を明示的に制御またはカスタマイズできます。 さらに、これらの属性をプライベート フィールドに適用することもできます。 ただし、これらの属性でマークされていない型もシリアル化および逆シリアル化されます。 次のルールと例外が適用されます。 + +- は、新しく作成した型の既定のプロパティを使用して、属性のない型からデータ コントラクトを推論します。 + +- すべてのパブリック フィールドと、パブリック `get` メソッドおよび `set` メソッドを持つプロパティは、 属性をそのメンバーに適用しない限りシリアル化されます。 + +- シリアル化のセマンティクスは に似ています。 + +- マークされていない型では、パラメーターのないコンストラクターを持つパブリック型のみがシリアル化されます。 このルールの例外として、 インターフェイスとして使用される があります。 + +- 読み取り専用フィールド、`get` メソッドまたは `set` メソッドのないプロパティ、内部またはプライベート `set` メソッドまたは `get` メソッドのあるプロパティはシリアル化されません。 そのようなプロパティは無視され、例外はスローされません。ただし、取得専用のコレクションの場合は除きます。 + +- 属性 \(`XmlElement`、`XmlAttribute`、`XmlIgnore`、`XmlInclude` など\) は無視されます。 + +- 属性を指定の型に適用しない場合は、シリアライザーは 属性が適用されるその型のすべてのメンバーを無視します。 + +- プロパティは 属性でマークされていない型でサポートされます。 これには、マークされていない型での 属性のサポートも含まれます。 + +- パブリック メンバー、プロパティ、またはフィールドのシリアル化のプロセスを "取り消す" には、 属性をそのメンバーに適用します。 + +## 継承 + マークされていない型 \( 属性のない型\) は、この属性を持つ型から継承できます。ただし、その反対はできません。つまり、マークされていない型から属性を持つ型を継承することはできません。 このルールは、主に以前のバージョンの [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] で書かれたコードとの下位互換性を保つために適用されます。 + +## 参照 + + + + + [データ コントラクト シリアライザーでサポートされる型](../../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/serialization-and-deserialization.md b/docs/framework/wcf/feature-details/serialization-and-deserialization.md new file mode 100644 index 00000000000..12e33e6cf29 --- /dev/null +++ b/docs/framework/wcf/feature-details/serialization-and-deserialization.md @@ -0,0 +1,272 @@ +--- +title: "シリアル化と逆シリアル化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3d71814c-bda7-424b-85b7-15084ff9377a +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# シリアル化と逆シリアル化 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には新しいシリアル化エンジン、 が含まれます。 は、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] オブジェクトと XML を双方向で変換します。 ここでは、シリアライザーのしくみについて説明します。 + + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] オブジェクトをシリアル化するときに、シリアライザーは新しい*データ コントラクト* モデルも含めて、さまざまなシリアル化プログラミング モデルを認識します。 サポートされるすべての型の一覧については、「[データ コントラクト シリアライザーでサポートされる型](../../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md)」を参照してください。 データ コントラクトの概要については、「[データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md)」を参照してください。 + + XML を逆シリアル化するときに、シリアライザーは クラスと クラスを使用します。 また、 バイナリ XML 形式を使用する場合などに、最適化された XML を生成できるように、 クラスと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クラスもサポートしています。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、コンパニオン シリアライザーである も含まれます。 は、シリアル化されたデータの一部として 型名を出力するため、 シリアライザーや [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] シリアライザーに似ています。 このシリアライザーは、シリアル化と逆シリアル化の終了時に、同じ型を共有する場合に使用します。 は、共通の基本クラスである から派生します。 + +> [!WARNING] +> は、20 未満の 16 進数値と制御文字を含む文字列を XML エンティティとしてシリアル化します。 このため、WCF サービスにそのようなデータを送信する際に WCF 以外のクライアントに問題が発生することがあります。 + +## DataContractSerializer インスタンスの作成 + のインスタンスの作成は重要な手順です。 インスタンスの作成後に、設定を変更することはできません。 + +### ルート型の指定 + *ルート型*は、シリアル化または逆シリアル化するインスタンスの型です。 には、多数のコンストラクター オーバーロードがありますが、`type` パラメーターを使用して、少なくともルート型を指定する必要があります。 + + 特定のルート型に対応するシリアライザーを作成した場合、このシリアライザーを使用して別の型をシリアル化 \(または逆シリアル化\) することはできません。ただし、対象の型がルート型の派生型である場合を除きます。 2 つのクラスを次の例に示します。 + + [!code-csharp[c_StandaloneDataContractSerializer#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#1)] + [!code-vb[c_StandaloneDataContractSerializer#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#1)] + + `DataContractSerializer` クラスのインスタンスをシリアル化または逆シリアル化する場合にのみ使用できる `Person` のインスタンスを作成するコードを次に示します。 + + [!code-csharp[c_StandaloneDataContractSerializer#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#2)] + [!code-vb[c_StandaloneDataContractSerializer#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#2)] + +### 既知の型の指定 + 属性またはその他の機構を使用してまだ処理されていないシリアル化対象の型にポリモーフィズムが必要な場合、`knownTypes` パラメーターを使用して、存在し得る既知の型のリストをシリアライザーのコンストラクターに渡す必要があります。 既知の型[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください。 + + `LibraryPatron` 型のコレクションを含む `LibraryItem` クラスの例を次に示します。 2 番目のクラスでは、`LibraryItem` 型を定義しています。 3 番目と 4 番目のクラス \(`Book` と `Newspaper`\) は、`LibraryItem` クラスを継承しています。 + + [!code-csharp[c_StandaloneDataContractSerializer#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#3)] + [!code-vb[c_StandaloneDataContractSerializer#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#3)] + + `knownTypes` パラメーターを使用して、シリアライザーのインスタンスを作成するコードを次に示します。 + + [!code-csharp[c_StandaloneDataContractSerializer#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#4)] + [!code-vb[c_StandaloneDataContractSerializer#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#4)] + +### 既定のルート名と名前空間の指定 + 通常、オブジェクトをシリアル化すると、データ コントラクト名と名前空間に従って、最も外側にある XML 要素の既定の名前と名前空間が決定されます。 内側のすべての要素の名前はデータ メンバー名から決定され、名前空間にはデータ コントラクトの名前空間が使用されます。`Name` クラスと `Namespace` クラスのコンストラクターで、 および の値を設定する例を次に示します。 + + [!code-csharp[c_StandaloneDataContractSerializer#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#5)] + [!code-vb[c_StandaloneDataContractSerializer#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#5)] + + `Person` クラスのインスタンスをシリアル化すると、次のような XML が生成されます。 + +``` + + + 123 Main Street + + +``` + + ただし、`rootName` パラメーターと `rootNamespace` パラメーターの値を のコンストラクターに渡すことにより、ルート要素の既定の名前と名前空間をカスタマイズできます。`rootNamespace` は、データ メンバーに対応する格納されている要素の名前空間には影響を及ぼしません。 このパラメーターの影響を受けるのは、最も外側の要素の名前空間だけです。 + + これらの値を文字列または クラスのインスタンスとして渡すと、バイナリ XML 形式を使用して最適化できます。 + +### オブジェクトの最大クォータの設定 + `DataContractSerializer` の一部のコンストラクター オーバーロードには、`maxItemsInObjectGraph` パラメーターが含まれています。 このパラメーターにより、 メソッドの 1 回の呼び出しで、シリアライザーがシリアル化または逆シリアル化するオブジェクトの最大数が決まります \(このメソッドは常に、1 つのルート オブジェクトを読み取りますが、このオブジェクトはそのデータ メンバー内に他のオブジェクトを保持する場合があります。 さらに、そうしたオブジェクトも他のオブジェクトを持つ場合があります。以降のオブジェクトについても同様です\)。 既定値は 65536 です。 配列のシリアル化または逆シリアル化を行う場合、すべての配列エントリが個別のオブジェクトとしてカウントされることに注意してください。 また、オブジェクトによってはメモリ表現が大きくなる場合があり、このクォータだけでは、サービス拒否攻撃の防止には不十分である可能性があることに注意してください。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [セキュリティに関するデータの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-for-data.md)。 このクォータはデータの読み取り時と書き込み時の両方に適用されるため、このクォータに既定値を上回る値を設定する必要がある場合は、送信側 \(シリアル化\) と受信側 \(逆シリアル化\) の両方で設定することが重要です。 + +### ラウンド トリップ + *ラウンド トリップ*は、1 つの操作でオブジェクトの逆シリアル化と再シリアル化が行われるときに発生します。 したがって、XML からオブジェクト インスタンスを経由し、再び XML ストリームに戻るラウンド トリップが発生します。 + + `DataContractSerializer` の一部のコンストラクター オーバーロードには、`ignoreExtensionDataObject` パラメーターが含まれており、既定で `false` に設定されています。 この既定のモードでは、データ コントラクトが インターフェイスを実装していれば、データ コントラクトの新しいバージョンから以前のバージョンを経由し、新しいバージョンに戻るラウンド トリップで、データを失うことなく送信できます。 たとえば、`Person` データ コントラクトのバージョン 1 に、`Name` および `PhoneNumber` の各データ メンバーが含まれており、バージョン 2 で `Nickname` メンバーを追加したとします。`IExtensibleDataObject` を実装している場合、バージョン 2 からバージョン 1 に情報を送信すると、`Nickname` データが格納され、データを再度シリアル化したときに再出力されます。したがって、ラウンド トリップでデータが失われることはありません。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][上位互換性のあるデータ コントラクト](../../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md)」および「[データ コントラクトのバージョン管理](../../../../docs/framework/wcf/feature-details/data-contract-versioning.md)」を参照してください。 + +#### ラウンド トリップでのセキュリティとスキーマ検証の問題 + ラウンド トリップは、セキュリティに影響する場合があります。 たとえば、大量の無関係のデータを逆シリアル化し格納した場合、セキュリティ リスクが生じる可能性があります。 特に、デジタル署名を伴う場合は、検証方法のないこのようなデータの再出力について、セキュリティの問題が発生することがあります。 たとえば、前のシナリオでは、バージョン 1 エンドポイントが、悪質なデータを含む `Nickname` 値に署名する可能性があります。 また、スキーマ検証の問題が発生することもあります。エンドポイントでは、余分な値を出力せずに、記述されたコントラクトに厳密に従ったデータを常に出力することが必要な場合があります。 前の例では、バージョン 1 エンドポイントのコントラクトで `Name` と `PhoneNumber` だけを出力するよう指定されているときに、スキーマ検証を使用すると、余分な `Nickname` 値の出力によって検証が失敗します。 + +#### ラウンド トリップの有効化と無効化 + ラウンド トリップを無効にする場合は、 インターフェイスを実装しないでください。 型を制御できない場合は、`ignoreExtensionDataObject` パラメーターを `true` に設定することで、同じ効果を得ることができます。 + +### オブジェクト グラフの保存 + 次のコードに示すように、通常、シリアライザーはオブジェクト ID に留意することはありません。 + + [!code-csharp[c_StandaloneDataContractSerializer#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#6)] + [!code-vb[c_StandaloneDataContractSerializer#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#6)] + + 発注書を作成するコードを次に示します。 + + [!code-csharp[c_StandaloneDataContractSerializer#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#7)] + [!code-vb[c_StandaloneDataContractSerializer#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#7)] + + `billTo` フィールドと `shipTo` フィールドが、同じオブジェクト インスタンスに設定されていることに注意してください。 ただし、生成される XML は重複する情報を繰り返します。XML は次のようになります。 + +``` + + 123 Main St. + 123 Main St. + +``` + + この方法には以下の特性があり、望ましくないことがあります。 + +- パフォーマンス。 データのレプリケートは非効率的です。 + +- 循環参照。 他のオブジェクトを介してであっても、オブジェクトがそれ自体を参照している場合、レプリケーションによるシリアル化は無限ループを発生させます \(この状況が発生した場合、シリアライザーは をスローします\)。 + +- セマンティクス。 2 つの参照の参照先が 1 つのオブジェクトであり、2 つの同一のオブジェクトではない状態を維持することが重要な場合があります。 + + 上記の理由から、`DataContractSerializer` の一部のコンストラクター オーバーロードには、`preserveObjectReferences` パラメーターが含まれています \(既定値は `false` です\)。 このパラメーターを `true` に設定すると、オブジェクト参照をエンコードする特殊なメソッドが使用されます。これは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] だけが認識するメソッドです。`true` に設定すると、XML コードの例は次のようになります。 + +``` + + 123 Main St. + + +``` + + "ser" 名前空間は、シリアル化標準名前空間である http:\/\/schemas.microsoft.com\/2003\/10\/Serialization\/ を指します。 データの各部分は 1 回だけシリアル化され、ID 番号が与えられます。以降は、既にシリアル化されたデータへの参照を使用することになります。 + +> [!IMPORTANT] +> "id" および "ref" 属性の両方がデータ コントラクト `XMLElement` に存在する場合、"ref" 属性が使用され、"id" 属性は無視されます。 + + このモードの以下の制限を理解しておくことが重要です。 + +- `DataContractSerializer` が `preserveObjectReferences` に設定された `true` によって生成した XML は、他のテクノロジと相互運用できません。この XML にアクセスできるのは、`DataContractSerializer` が `preserveObjectReferences` に設定された別の `true` インスタンスだけです。 + +- この機能では、メタデータ \(スキーマ\) はサポートされていません。 生成されるスキーマは、`preserveObjectReferences` が `false` に設定されている場合にのみ有効です。 + +- この機能により、シリアル化および逆シリアル化プロセスの実行速度が低下することがあります。 データをレプリケートする必要はありませんが、このモードではオブジェクトの比較を追加で実行する必要があります。 + +> [!CAUTION] +> `preserveObjectReferences` モードを有効にする場合、`maxItemsInObjectGraph` の値を適切なクォータに設定することが特に重要となります。 このモードでの配列の処理方法に起因して、攻撃者は `maxItemsInObjectGraph` のクォータによってのみ制限される、メモリを大量に消費させる小さい悪質なメッセージを容易に作成できます。 + +### データ コントラクト サロゲートの指定 + `DataContractSerializer` の一部のコンストラクター オーバーロードには、`dataContractSurrogate` パラメーターが含まれています。このパラメーターは、`null` に設定できます。 それ以外の場合は、このパラメーターを使用して、*データ コントラクト サロゲート*を指定できます。データ コントラクト サロゲートは、 インターフェイスを実装する型です。 このインターフェイスを使用して、シリアル化および逆シリアル化プロセスをカスタマイズできます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [データ コントラクト サロゲート](../../../../docs/framework/wcf/extending/data-contract-surrogates.md)。 + +## シリアル化 + 次の情報は を継承するすべてのクラス \( クラスおよび クラスを含む\) に適用されます。 + +### 単純なシリアル化 + オブジェクトをシリアル化する最も簡単な方法は、オブジェクトを メソッドに渡すことです。 このメソッドには 3 つのオーバーロードがあり、それぞれ 、および への書き込みに対応しています。 オーバーロードの場合、出力は UTF\-8 エンコードの XML です。 オーバーロードを使用すると、シリアライザーによってバイナリ XML の出力が最適化されます。 + + メソッドを使用した場合、シリアライザーはラッパー要素の既定の名前と名前空間を使用し、コンテンツと共に書き込みます \(前の「既定のルート名と名前空間の指定」セクションを参照してください\)。 + + を使用した書き込みの例を次に示します。 + + [!code-csharp[c_StandaloneDataContractSerializer#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#8)] + [!code-vb[c_StandaloneDataContractSerializer#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#8)] + + これにより作成される XML は、次のようになります。 + +``` + + Jay Hamlin +
123 Main St.
+
+``` + +### 段階的なシリアル化 + 終了要素を書き込み、オブジェクトの内容を書き込み、ラッパー要素を閉じるには、それぞれ の各メソッドを使用します。 + +> [!NOTE] +> これらのメソッドの オーバーロードはありません。 + + この段階的なシリアル化には、2 つの一般的な使用方法があります。 次の例に示すように、1 つは属性やコメントなどのコンテンツを `WriteStartObject` と `WriteObjectContent` の間に挿入する場合に使用します。 + + [!code-csharp[c_StandaloneDataContractSerializer#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#9)] + [!code-vb[c_StandaloneDataContractSerializer#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#9)] + + これにより作成される XML は、次のようになります。 + +``` + + Jay Hamlin +
123 Main St.
+
+``` + + もう 1 つは、次のコードに示すように、 を使用せずに、独自のカスタム ラッパー要素を書き込む場合 \(ラッパーの書き込みを省略する場合もあります\) に使用します。 + + [!code-csharp[c_StandaloneDataContractSerializer#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#10)] + [!code-vb[c_StandaloneDataContractSerializer#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#10)] + + これにより作成される XML は、次のようになります。 + +``` + + Jay Hamlin +
123 Main St.
+
+``` + +> [!NOTE] +> 段階的なシリアル化を使用すると、スキーマが無効な XML が生成されることがあります。 + +## 逆シリアル化 + 次の情報は を継承するすべてのクラス \( クラスおよび クラスを含む\) に適用されます。 + + オブジェクトを逆シリアル化する最も簡単な方法は、 メソッド オーバーロードのいずれかを呼び出すことです。 3 つのオーバーロードがあり、それぞれ 、`XmlReader`、および `Stream` を使用した読み取りに対応しています。`Stream` オーバーロードは、クォータによって保護されていないテキスト形式の を作成するため、信頼されたデータを読み取る場合にのみ使用します。 + + `ReadObject` メソッドが返すオブジェクトは、適切な型にキャストする必要があります。 + + のインスタンスと を作成し、`Person` インスタンスを逆シリアル化するコードを次に示します。 + + [!code-csharp[c_StandaloneDataContractSerializer#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#11)] + [!code-vb[c_StandaloneDataContractSerializer#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#11)] + + メソッドを呼び出す前に、ラッパー要素またはラッパー要素の前にあるコンテンツ ノード以外のノードに XML リーダーを配置します。 これを行うには、次のコードに示すように、 またはその派生クラスの メソッドを呼び出し、 を調べます。 + + [!code-csharp[c_StandaloneDataContractSerializer#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_standalonedatacontractserializer/cs/source.cs#12)] + [!code-vb[c_StandaloneDataContractSerializer#12](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_standalonedatacontractserializer/vb/source.vb#12)] + + `ReadObject` にリーダーを渡す前に、このラッパー要素の属性を読み取ることができます。 + + 簡単な `ReadObject` オーバーロードのいずれかを使用すると、デシリアライザーはラッパー要素の既定の名前と名前空間を検索し \(前の「既定のルート名と名前空間の指定」セクションを参照\)、不明な要素が見つかった場合は例外をスローします。 前の例では、`` ラッパー要素が必要とされます。 予想どおりの名前が付けられた要素にリーダーが配置されているかどうかを確認するために、 メソッドが呼び出されます。 + + ラッパー要素のこの名前チェックを無効にする方法があります。`ReadObject` メソッドの一部のオーバーロードは、ブール型パラメーター `verifyObjectName` を取得します。このパラメーターは、既定で `true` に設定されています。 このパラメーターを `false` に設定すると、ラッパー要素の名前と名前空間が無視されます。 これは、前述の段階的なシリアル化機構を使用して書き込まれた XML を読み取る際に役立ちます。 + +## NetDataContractSerializer の使用 + `DataContractSerializer` と の大きな違いは、`DataContractSerializer` は、データ コントラクト名を使用するのに対し、`NetDataContractSerializer` は、シリアル化された XML に [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] アセンブリと型の完全名を出力するという点です。 これは、シリアル化エンドポイントと逆シリアル化エンドポイント間で、まったく同じ型を共有する必要があることを意味します。 逆シリアル化する正確な型が常にわかっているため、`NetDataContractSerializer` では既知の型機構は必要ないということです。 + + ただし、次のようないくつかの問題が発生する可能性があります。 + +- セキュリティ。 逆シリアル化する XML で見つかったすべての型が読み込まれます。 これを利用して、悪質な型が強制的に読み込まれるおそれがあります。 信頼できないデータでの `NetDataContractSerializer` の使用は、\( プロパティまたはコンストラクター パラメーターを使用して\) *シリアル化バインダー*を使用する場合に限定する必要があります。 バインダーが読み込みを許可するのは安全な型だけです。 このバインダー機構は、 名前空間の型が使用するものと同じです。 + +- バージョン管理。 XML で型とアセンブリの完全名を使用する場合、型をバージョン管理する方法が厳しく制限されます。 型名、名前空間、アセンブリ名、およびアセンブリのバージョンを変更することはできません。 プロパティまたはコンストラクター パラメーターを既定値の ではなく、 に設定すると、アセンブリのバージョンを変更できるようになりますが、ジェネリック パラメーターの型を変更することはできません。 + +- 相互運用性。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型名とアセンブリ名は XML に含まれるため、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 以外のプラットフォームでは、生成されたデータにアクセスできません。 + +- パフォーマンス。 型名とアセンブリ名を書き込むと、生成される XML のサイズが大幅に増加します。 + + この機構は、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] リモート処理で使用されるバイナリ シリアル化または SOAP シリアル化 \(具体的には、\) に似ています。 + + `NetDataContractSerializer` の使用方法と `DataContractSerializer` の使用方法は似ていますが、次のような違いがあります。 + +- コンストラクターでルート型を指定する必要はありません。`NetDataContractSerializer` の同じインスタンスを使用して、すべての型をシリアル化できます。 + +- コンストラクターは、既知の型のリストを受け入れません。 型名を XML にシリアル化する場合、既知の型機構は不要です。 + +- コンストラクターは、データ コントラクト サロゲートを受け入れません。 代わりに、\( プロパティに割り当てられた\) `surrogateSelector` という のパラメーターを受け入れます。 これは、従来のサロゲート機構です。 + +- コンストラクターは、`assemblyFormat` プロパティに割り当てられた、 というパラメーターを受け入れます。 前述のように、このパラメーターを使用することで、シリアライザーのバージョン管理機能を強化できます。 これは、バイナリ シリアル化または SOAP シリアル化の 機構と同じです。 + +- コンストラクターは、 プロパティに割り当てられた `context` という のパラメーターを受け入れます。 このパラメーターを使用して、シリアル化する型に情報を渡すことができます。 この使用方法は、他の クラスで使用する 機構と同じです。 + +- メソッドと メソッドは、 メソッドと メソッドのエイリアスです。 これらのメソッドは、より一貫性のあるプログラミング モデルで、バイナリ シリアル化または SOAP シリアル化を使用できるようにするために存在しています。 + + このような機能の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[バイナリ シリアル化](../../../../docs/framework/serialization/binary-serialization.md)」を参照してください。 + + 通常、`NetDataContractSerializer` と `DataContractSerializer` が使用する XML 形式には互換性がありません。 したがって、これらのシリアライザーの一方を使用してシリアル化し、もう一方を使用して逆シリアル化するシナリオはサポートされていません。 + + また、`NetDataContractSerializer` は、オブジェクト グラフの各ノードについて、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型とアセンブリの完全名を出力しません。 この情報を出力するのは、情報が不明確な場合だけです。 つまり、ポリモーフィックである場合に、ルート オブジェクト レベルで出力します。 + +## 参照 + + + + [バイナリ シリアル化](../../../../docs/framework/serialization/binary-serialization.md) + [データ コントラクト シリアライザーでサポートされる型](../../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/serializing-in-json-with-message-level-programming.md b/docs/framework/wcf/feature-details/serializing-in-json-with-message-level-programming.md new file mode 100644 index 00000000000..12292e8fd6e --- /dev/null +++ b/docs/framework/wcf/feature-details/serializing-in-json-with-message-level-programming.md @@ -0,0 +1,45 @@ +--- +title: "メッセージ レベルのプログラミングによる JSON 形式でのシリアル化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5f940ba2-57ee-4c49-a779-957c5e7e71fa +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# メッセージ レベルのプログラミングによる JSON 形式でのシリアル化 +WCF は、JSON 形式でのデータのシリアル化をサポートします。このトピックでは、 を使用して型をシリアル化することを WCF に命令する方法について説明します。 + +## 型指定されたメッセージのプログラミング + は、 または がサービス操作に適用されるときに使用されます。どちらの属性でも、`RequestFormat` と `ResponseFormat` を指定できます。要求と応答に JSON を使用するには、両方の属性を `WebMessageFormat.Json` に設定します。JSON を使用するには、 を使用する必要があります。これにより、 が自動的に構成されます。WCF のシリアル化の詳細については、「[シリアル化と逆シリアル化](../../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md)」および「[Windows Communication Foundation でのシリアル化](http://msdn.microsoft.com/magazine/cc163569.aspx)」を参照してください。JSON と WCF の詳細については、「[WCF の RESTful サービスの概要](http://msdn.microsoft.com/magazine/dd315413.aspx)」、「[.NET 3.5 での JSON が有効な WCF サービスの作成](http://www.pluralsight-training.net/community/blogs/fritz/archive/2008/01/31/50121.aspx)」、および「[WCF REST の概要](http://msdn.microsoft.com/netframework/dd547388)」を参照してください。 + +> [!IMPORTANT] +> JSON を使用するには、SOAP 通信をサポートしていない を使用する必要があります。 と通信を行うサービスは、サービス メタデータの公開をサポートしません。したがって、Visual Studio の "サービス参照の追加" 機能または svcutil コマンド ライン ツールを使用してクライアント側プロキシを生成することはできません。 を使用するサービスをプログラムで呼び出す方法については、「[WCF で REST サービスを使用する方法](http://blogs.msdn.com/b/pedram/archive/2008/04/21/how-to-consume-rest-services-with-wcf.aspx)」を参照してください。 + +## 型指定されていないメッセージのプログラミング + 型指定されていないメッセージ オブジェクトを直接操作する場合は、型指定されていないメッセージのプロパティを明示的に設定して JSON としてシリアル化する必要があります。これを行う方法を次のコード スニペットに示します。 + +``` + Message response = Message.CreateMessage( + MessageVersion.None, // No SOAP message version +                     "*", // SOAP action, ignored since this is JSON +                     "Response string: JSON format specified", // Message body +                     new DataContractJsonSerializer(typeof(string))); // Specify DataContractJsonSerializer + response.Properties.Add( WebBodyFormatMessageProperty.Name, +                    new WebBodyFormatMessageProperty(WebContentFormat.Json)); // Use JSON format + +``` + +## 参照 + [AJAX の統合と JSON のサポート](../../../../docs/framework/wcf/feature-details/ajax-integration-and-json-support.md) + [スタンドアロン JSON のシリアル化](../../../../docs/framework/wcf/feature-details/stand-alone-json-serialization.md) + [JSON シリアル化](../../../../docs/framework/wcf/samples/json-serialization.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/service-endpoints-and-queue-addressing.md b/docs/framework/wcf/feature-details/service-endpoints-and-queue-addressing.md new file mode 100644 index 00000000000..07d853aaec2 --- /dev/null +++ b/docs/framework/wcf/feature-details/service-endpoints-and-queue-addressing.md @@ -0,0 +1,115 @@ +--- +title: "サービス エンドポイントとキューのアドレス指定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7d2d59d7-f08b-44ed-bd31-913908b83d97 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# サービス エンドポイントとキューのアドレス指定 +ここでは、キューから読み取るサービスをクライアントがアドレス指定するしくみと、サービス エンドポイントがキューにマップされるしくみについて説明します。キューに置かれた [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションの標準的な配置を次の図に示します。 + + ![キューに置かれたアプリケーションの図](../../../../docs/framework/wcf/feature-details/media/distributed-queue-figure.jpg "Distributed\-Queue\-Figure") + + クライアントは、メッセージをサービスに送信するために、メッセージをターゲット キューにアドレス指定します。サービスは、キューからメッセージを読み取るために、リッスン アドレスをターゲット キューに設定します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でのアドレス指定は URI \(Uniform Resource Identifier\) ベースですが、メッセージ キュー \(MSMQ\) のキュー名は URI ベースでありません。そのため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、MSMQ で作成されたキューをアドレス指定する方法を理解しておくことが不可欠となります。 + +## MSMQ のアドレス指定 + MSMQ は、パスと形式名を使用してキューを識別します。パスでは、ホスト名と `QueueName` を指定します。必要に応じて、ホスト名と `QueueName` の間に `Private$` を指定して、Active Directory ディレクトリ サービスで公開されないプライベート キューを示すこともできます。 + + パス名は、ルーティングやキュー マネージャー転送プロトコルを含む、アドレスの追加の側面を指定する "FormatNames" にマップされます。キュー マネージャーは、ネイティブの MSMQ プロトコルと SOAP リライアブル メッセージ プロトコル \(SRMP: SOAP Reliable Messaging Protocol\) の 2 つの転送プロトコルをサポートしています。 + + MSMQ のパスと形式名[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[About Message Queuing](http://go.microsoft.com/fwlink/?LinkId=94837)」を参照してください。 + +## NetMsmqBinding とサービスのアドレス指定 + メッセージをサービスにアドレス指定するときは、通信に使用するトランスポートに基づいて URI のスキームが選択されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の各トランスポートには、一意のスキームがあります。このスキームには、通信に使用されるトランスポートの性質を反映する必要があります。たとえば、net.tcp、net.pipe、HTTP などがあります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 内の MSMQ のキューに置かれたトランスポートは、net.msmq スキームを公開します。net.msmq スキームを使用してアドレス指定されたすべてのメッセージは、`NetMsmqBinding` を使用して、MSMQ のキューに置かれたトランスポート チャネル経由で送信されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でのキューのアドレス指定は、次のパターンに基づきます。 + + net.msmq: \/\/ \<*host\-name*\> \/ \[private\/\] \<*queue\-name*\> + + 指定する項目は次のとおりです。 + +- \<*host\-name*\> は、ターゲット キューをホストするコンピューターの名前です。 + +- \[private\] はオプションです。専用キューであるターゲット キューをアドレス指定するときに使用します。パブリック キューをアドレス指定する場合は、private を指定しないでください。MSMQ のパスとは異なり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の URI 形式には "$" はありません。 + +- \<*queue\-name*\> は、キューの名前です。キュー名では、サブキューを参照することもできます。したがって、\<*queue\-name*\> \= \<*name\-of\-queue*\> \[;*sub\-queue\-name*\]。 + + 例 1 : コンピューター abc atadatum.com でホストされているプライベート キュー PurchaseOrders をアドレス指定する場合、URI は net.msmq:\/\/abc.adatum.com\/private\/PurchaseOrders になります。 + + 例 2 : コンピューター def atadatum.com でホストされているパブリック キュー AccountsPayable をアドレス指定する場合、URI は net.msmq:\/\/def.adatum.com\/AccountsPayable になります。 + + キュー アドレスは、メッセージを読み取るリスナーにより、リッスン URI として使用されます。つまり、キュー アドレスは TCP ソケットのリッスン ポートと同じです。 + + キューから読み取りを行うエンドポイントは、ServiceHost を開いたときにあらかじめ指定されているスキームと同じスキームを使用して、キューのアドレスを指定する必要があります。例については、「[ネット MSMQ バインディング](../../../../docs/framework/wcf/samples/net-msmq-binding.md)」および「[Message Queuing Integration Binding Samples](http://msdn.microsoft.com/ja-jp/997d11cb-f2c5-4ba0-9209-92843d4d0e1a)」を参照してください。 + +### キュー内の複数のコントラクト + キュー内のメッセージは、さまざまなコントラクトを実装している可能性があります。この場合、すべてのメッセージを正常に読み取って処理するためには、次のいずれかの処置を行う必要があります。 + +- すべてのコントラクトを実装するサービス エンドポイントを指定します。この方法をお勧めします。 + +- 異なるコントラクトを持つ複数のエンドポイントを指定します。ただし、すべてのエンドポイントで同じ `NetMsmqBinding` オブジェクトを使用するようにしてください。ServiceModel のディスパッチ ロジックでは、ディスパッチ用のトランスポート チャネルからメッセージを読み取るメッセージ ポンプを使用します。メッセージ ポンプは、最終的にコントラクトに基づいてこれらのメッセージをさまざまなエンドポイントに非多重化します。メッセージ ポンプは、リッスン URI とバインディングの組み合わせに対して作成されます。キュー アドレスは、キューに格納されたリスナーにより、リッスン URI として使用されます。すべてのエンドポイントで同じバインディング オブジェクトを使用するようにすると、1 つのメッセージ ポンプを使用してメッセージを読み取り、コントラクトに基づいて関連するエンドポイントに非多重化できるようになります。 + +### SRMP メッセージング + 既に説明したように、キュー間の転送には SRMP プロトコルを使用できます。このプロトコルは、HTTP トランスポートを使用して転送キューとターゲット キューの間でメッセージを送信する場合に使用するのが一般的です。 + + SRMP 転送プロトコルを使用するには、前述の net.msmq URI スキームを使用してメッセージをアドレス指定し、`NetMsmqBinding` の `QueueTransferProtocol` プロパティで SRMP または Secured SRMP を指定します。 + + `QueueTransferProtocol` プロパティの指定は、送信専用の機能です。これは、使用するキュー転送プロトコルの種類の、クライアントによる指示です。 + +### Active Directory の使用 + MSMQ は、Active Directory 統合をサポートします。MSMQ を Active Directory 統合と共にインストールした場合、コンピューターを Windows ドメインに含める必要があります。Active Directory は、探索用のキューを公開するために使用されます。このようなキューを *"パブリック キュー"* と呼びます。アドレス指定されたキューは、Active Directory を使用して解決できます。これは、ドメイン ネーム システム \(DNS: Domain Name System\) を使用して、ネットワーク名の IP アドレスを解決するしくみに似ています。`NetMsmqBinding` の `UseActiveDirectory` プロパティは、キューに置かれたチャネルでキューの URI を解決するために Active Directory を使用する必要があるかどうかを示すブール値です。既定では `false` に設定されています。`UseActiveDirectory` プロパティを `true` に設定すると、キューに置かれたチャネルは、Active Directory を使用して net.msmq:\/\/ URI を形式名に変換します。 + + `UseActiveDirectory` プロパティは、メッセージの送信時にキューのアドレスを解決するために使用されるので、メッセージを送信するクライアントに対してのみ有効です。 + +### メッセージ キュー形式名への net.msmq URI のマップ + キューに置かれたチャネルは、チャネルに提供された net.msmq URI 名を MSMQ 形式名にマップします。これらをマップする際に使用されるルールを次の表にまとめます。 + +|WCF の URI ベースのキュー アドレス|UseActiveDirectory プロパティ|QueueTransferProtocol プロパティ|結果の MSMQ 形式名| +|----------------------------|------------------------------|---------------------------------|------------------| +|Net.msmq:\/\/\\/private\/abc|False \(既定値\)|Native \(既定値\)|DIRECT\=OS:machine\-name\\private$\\abc| +|Net.msmq:\/\/\<コンピューター名\>\/private\/abc|False|SRMP|DIRECT\=http:\/\/machine\/msmq\/private$\/abc| +|Net.msmq:\/\/\<コンピューター名\>\/private\/abc|True|Native|PUBLIC\=some\-guid \(キューの GUID\)| + +### 配信不能キューまたは有害メッセージ キューからのメッセージの読み取り + ターゲット キューのサブキューである有害メッセージ キューからメッセージを読み取るには、サブキューのアドレスを使用して `ServiceHost` を開きます。 + + 例 : ローカル コンピューターの PurchaseOrders 専用キューの有害メッセージ キューから読み取るサービスでは、net.msmq:\/\/localhost\/private\/PurchaseOrders;poison というアドレスを指定します。 + + システム トランザクション配信不能キューからメッセージを読み取るには、URI を net.msmq:\/\/localhost\/system$;DeadXact という形式にする必要があります。 + + システム非トランザクション配信不能キューからメッセージを読み取るには、URI を net.msmq:\/\/localhost\/system$;DeadLetter という形式にする必要があります。 + + カスタムの配信不能キューを使用する場合は、配信不能キューをローカル コンピューターに配置する必要があります。そのため、配信不能キューの URI は次の形式に限定されます。 + + net.msmq: \/\/localhost\/ \[private\/\] \<*custom\-dead\-letter\-queue\-name*\>. + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、受信するすべてのメッセージが、リッスンしている特定のキューにアドレス指定されているかどうかを確認します。メッセージの送信先キューとメッセージが置かれているキューが一致しない場合、サービスはメッセージを処理しません。この問題には、配信不能キューをリッスンしているサービスが対処する必要があります。これは、配信不能キューにあるメッセージが、他の場所に配信されることになっていたメッセージであるためです。配信不能キューや有害メッセージ キューからメッセージを読み取るには、 パラメーターが設定された `ServiceBehavior` を使用する必要があります。例については、「[配信不能キュー](../../../../docs/framework/wcf/samples/dead-letter-queues.md)」を参照してください。 + +## MsmqIntegrationBinding とサービスのアドレス指定 + `MsmqIntegrationBinding` は、従来の MSMQ アプリケーションとの通信に使用されます。既存の MSMQ アプリケーションとの相互運用を容易にするために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は形式名のアドレス指定のみをサポートしています。そのため、このバインディングを使用して送信されるメッセージは、次の URI スキームに従う必要があります。 + + msmq.formatname:\<*MSMQ\-format\-name*\>\> + + "MSMQ\-format\-name" は、「[About Message Queuing](http://go.microsoft.com/fwlink/?LinkId=94837)」の MSMQ で指定された形式になります。 + + `MsmqIntegrationBinding` を使用してキューからメッセージを受信する場合、使用できるのは、直接形式名とパブリック\/プライベート形式名 \(ActiveDirectory 統合が必要です\) のみです。ただし、直接形式名を使用することをお勧めします。たとえば、[!INCLUDE[wv](../../../../includes/wv-md.md)] では、他の形式名を使用すると、エラーが発生します。これは、システムがサブキューを開こうとしても、サブキューは直接形式名でしか開くことができないためです。 + + `MsmqIntegrationBinding` を使用して SRMP のアドレス指定を行う場合は、インターネット インフォメーション サービス \(IIS: Internet Information Services\) のディスパッチを支援するために、直接形式名で \/msmq\/ を追加するという要件はありません。たとえば、SRMP プロトコルを使用してキュー abc をアドレス指定する場合は、DIRECT\=http:\/\/adatum.com\/msmq\/private$\/abc ではなく、DIRECT\=http:\/\/adatum.com\/private$\/abc を使用してください。 + + `MsmqIntegrationBinding` では、net.msmq:\/\/ によるアドレス指定を使用できないことに注意してください。`MsmqIntegrationBinding` は、自由形式の MSMQ 形式名によるアドレス指定をサポートしているため、このバインディングを使って MSMQ のマルチキャスト機能と配布リスト機能を使用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを使用できます。ただし、`MsmqIntegrationBinding` を使用するときに、`CustomDeadLetterQueue` を指定する場合を除きます。これは、`NetMsmqBinding` を使用して指定するのと同様に、net.msmq:\/\/ という形式にする必要があります。 + +## 参照 + [キューに置かれたアプリケーションの Web ホスト](../../../../docs/framework/wcf/feature-details/web-hosting-a-queued-application.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/service-identity-and-authentication.md b/docs/framework/wcf/feature-details/service-identity-and-authentication.md new file mode 100644 index 00000000000..14051c96b13 --- /dev/null +++ b/docs/framework/wcf/feature-details/service-identity-and-authentication.md @@ -0,0 +1,127 @@ +--- +title: "サービス ID と認証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "サービスの id を指定する認証 [WCF]" +ms.assetid: a4c8f52c-5b30-45c4-a545-63244aba82be +caps.latest.revision: 32 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 32 +--- +# サービス ID と認証 +サービスの*エンドポイント id*サービス Web サービス記述言語 (WSDL) から生成される値です。 この値は、すべてのクライアントに反映され、サービスの認証に使用されます。 クライアントがエンドポイントとの通信を開始し、サービスがクライアントに対して認証を行った後に、クライアントは、エンドポイント ID 値とエンドポイントの認証プロセスから返された実際の値を比較します。 この&2; つの値が一致した場合、クライアントは要求したサービス エンドポイントに接続していることを確認できます。 これは、関数は、保護として*フィッシング*クライアントが悪質なサービスでホストされるエンドポイントにリダイレクトされるようにすることで。 + + Id の設定を示すサンプル アプリケーションを参照してください。[サービス Id サンプル](../../../../docs/framework/wcf/samples/service-identity-sample.md)します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]エンドポイントとエンドポイント アドレスを参照してください。[アドレス](../../../../docs/framework/wcf/feature-details/endpoint-addresses.md)です。 + +> [!NOTE] +> 認証に NTLM (NT LanMan) を使用する場合、NTLM ではクライアントがサーバーを認証できないため、サービス ID はチェックされません。 NTLM はコンピューターが Windows ワークグループの一部である場合、または Kerberos 認証をサポートしていない古いバージョンの Windows が実行されている場合に使用されます。 + + サービスに対してメッセージを送信するためにクライアントがセキュリティで保護されたチャネルを開始すると、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] インフラストラクチャはこのサービスを認証し、サービス ID がクライアントの使用するエンドポイント アドレスに指定された ID と一致する場合にのみメッセージを送信します。 + + ID の処理は、次の&2; 段階から成ります。 + +- デザイン時に、クライアント開発者は、(WSDL を通じて公開される) エンドポイントのメタデータでサービスの ID を確認します。 + +- 実行時に、クライアント アプリケーションは、メッセージをサービスに送信する前に、サービスのセキュリティ資格情報のクレームを確認します。 + + クライアントでの ID の処理は、サービスでのクライアント認証と似ています。 セキュリティで保護されたサービスは、クライアントの資格情報が認証されるまでコードを実行しません。 同様に、クライアントは、サービスのメタデータによって事前に認識されている内容に基づいて、サービスの資格情報が認証されるまでメッセージを送信しません。 + + のプロパティ、 クラスは、クライアントによって呼び出されるサービスの id を表します。 サービスが公開、 のメタデータ。 クライアントの開発者が実行されるとき、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) 、生成された構成が、サービスの値を格納するサービスのエンドポイントに対してプロパティです。 (セキュリティが構成されている場合) [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャは、サービスが指定された ID を所有しているかどうかを検査します。 + +> [!IMPORTANT] +> メタデータには、サービスに要求される ID が含まれています。したがって、安全な方法 (サービスの HTTPS エンドポイントを作成するなど) でサービス メタデータを公開することをお勧めします。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法: メタデータ エンドポイントをセキュリティで保護された](../../../../docs/framework/wcf/feature-details/how-to-secure-metadata-endpoints.md)します。 + +## ID の種類 + サービスが提供できる ID は&5; 種類あります。 ID の各種類は、構成内の `` 要素に含めることのできる要素に対応します。 使用する ID の種類は、シナリオとサービスのセキュリティ要件によって異なります。 ID の各種類の説明を次の表に示します。 + +|ID の種類|説明|一般的なシナリオ| +|-------------------|-----------------|----------------------| +|ドメイン ネーム システム (DNS)|この要素は X.509 証明書または Windows アカウントと一緒に使用します。 資格情報に指定されている DNS 名とこの要素で指定されている値とが比較されます。|DNS チェックを行うことにより、DNS 名またはサブジェクト名を含む証明書を使用できます。 同じ DNS 名またはサブジェクト名を使用して証明書が再発行された場合、ID 検査は引き続き有効になります。 証明書を再発行すると、新しい RSA キーが取得されますが、同じ DNS 名またはサブジェクト名が保持されます。 つまり、クライアントはサービスの ID 情報を更新する必要がありません。| +|証明書。 `ClientCredentialType` が Certificate に設定されている場合の既定値です。|この要素は、クライアントと比較するための Base64 でエンコードされた X.509 証明書の値を指定します。

サービスを認証するときの資格情報として [!INCLUDE[infocard](../../../../includes/infocard-md.md)] を使用する場合にも、この要素が使用されます。|この要素は、証明書の拇印の値に基づいて、認証を&1; つの証明書に制限します。 拇印の値は一意であるため、この制限によってより厳密な認証が可能になります。 同じサブジェクト名を使用して証明書が再発行された場合、証明書には新しい拇印が含まれることになるので注意が必要です。 つまり、新しい拇印が認識されていない場合、クライアントはサービスを検証できなくなります。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]証明書の拇印を検索するを参照してください[方法: 証明書のサムプリントを取得](../../../../docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md)します。| +|証明書参照|前述の証明書オプションと同じです。 ただし、この要素を使用すると、証明書の名前と証明書を取得するストアの場所を指定できます。|前述の証明書のシナリオと同じです。

利点は、証明書ストアの場所を変更できることです。| +|RSA|この要素は、クライアントと比較するための RSA キーの値を指定します。 これは証明書オプションに似ていますが、証明書の拇印を使用するのではなく、証明書の RSA キーを使用します。|RSA チェックを行うと、証明書の RSA キーに基づいて、単一の証明書に基づく認証に明確に制限できます。 これにより、RSA キーが変更された場合に既存のクライアントでサービスが使用できなくなるのと引き換えに、特定の RSA キーをより厳しく認証できます。| +|ユーザー プリンシパル名 (UPN)。 `ClientCredentialType` が Windows に設定されており、サービス プロセスがシステム アカウントのいずれかで実行されていない場合の既定値です。|この要素は、サービスを実行中の UPN を指定します。 Kerberos プロトコルと Id のセクションを参照して[認証サービスの Id をオーバーライドする](../../../../docs/framework/wcf/extending/overriding-the-identity-of-a-service-for-authentication.md)です。|この設定では、サービスが特定の Windows ユーザー アカウントで実行されていることを確認します。 このユーザー アカウントは、現在ログオンしているユーザーである場合もあれば、特定のユーザー アカウントで実行されているサービスである場合もあります。

サービスが Active Directory 環境のドメイン アカウントで実行されている場合、この設定では Windows Kerberos セキュリティを利用します。| +|サービス プリンシパル名 (SPN)。 `ClientCredentialType` が Windows に設定されており、サービス プロセスがシステム アカウント (LocalService、LocalSystem、または NetworkService) のいずれかで実行されている場合の既定値です。|この要素は、サービスのアカウントに関連付けられている SPN を指定します。 Kerberos プロトコルと Id のセクションを参照して[認証サービスの Id をオーバーライドする](../../../../docs/framework/wcf/extending/overriding-the-identity-of-a-service-for-authentication.md)です。|これにより、SPN と SPN に関連付けられた特定の Windows アカウントによってサービスが識別されます。

Setspn.exe ツールを使用すると、サービスのユーザー アカウントに対してコンピューター アカウントを関連付けることができます。

サービスがシステム アカウントのいずれか、または SPN 名に関連付けられたドメイン アカウントで実行されており、コンピューターが Active Directory 環境のドメインのメンバーである場合、この設定では Windows Kerberos セキュリティを利用します。| + +## サービスでの ID の指定 + クライアント資格情報の種類を選択すると、サービス メタデータで公開される ID の種類が指定されるため、通常、サービスで ID を設定する必要はありません。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]オーバーライドまたはを指定する方法のサービスの id を参照してください[認証サービスの Id をオーバーライドする](../../../../docs/framework/wcf/extending/overriding-the-identity-of-a-service-for-authentication.md)です。 + +## 使用して、 <> \>構成内の要素 + 上記の例で示したバインディングのクライアント資格情報の種類を `Certificate,` に変更すると、次のコードに示すように、生成される WSDL には、Base64 でシリアル化された、ID 値用の X.509 証明書が含まれます。 これは、Windows 以外のすべてのクライアント資格情報の種類の既定値です。 + + + + 既定のサービス id の値を変更またはを使用して、id の種類を変更することができます、``要素の構成またはコードで id を設定します。 値 `contoso.com` を使用してドメイン ネーム システム (DNS) ID を設定する構成コードを次に示します。 + + + +## プログラムによる ID の設定 + ID は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって自動的に決定されるため、サービスで ID を明示的に指定する必要はありません。 ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、必要に応じてエンドポイントの ID を指定できます。 特定の DNS ID を持つ新しいサービス エンドポイントを追加するコードを次に示します。 + + [!code-csharp[C_Identity#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_identity/cs/source.cs#5)] + [!code-vb[C_Identity#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_identity/vb/source.vb#5)] + +## クライアントでの ID の指定 + デザイン時に、クライアント開発者が通常使用して、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)クライアント構成を生成します。 生成された構成ファイル (クライアントが使用するもの) には、サービスの ID が含まれます。 たとえば、次のコードは、前の例で示した DNS ID を指定するサービスから生成されたものです。 クライアントのエンドポイント ID 値が、サービスのエンドポイント ID 値と一致していることに注意してください。 この場合、クライアントは、サービスの Windows (Kerberos) 資格情報を受け取るときに、この値が `contoso.com` であることを要求します。 + + + + サービスでクライアント資格情報の種類として Windows ではなく証明書を指定した場合は、証明書の DNS プロパティの値が `contoso.com` であることが要求されます (DNS プロパティが `null` の場合は、証明書のサブジェクト名が `contoso.com` である必要があります)。 + +#### ID の特定の値の使用 + 次のクライアント構成ファイルは、サービスの ID に特定の値を要求する方法を示しています。 次の例では、クライアントは&2; つのエンドポイントと通信できます。 1 つ目のエンドポイントは証明書の拇印で識別され、もう&1; つは証明書の RSA キーで識別されます。 つまり、公開キーと秘密キーのペアだけが含まれた証明書ですが、この証明書は信頼された証明機関によって発行されたものではありません。 + + + +## 実行時の ID 検査 + デザイン時には、クライアント開発者はサービスのメタデータで ID を確認します。 実行時には、サービスのエンドポイントを呼び出す前に ID 検査が実行されます。 + + ID 値は、メタデータで指定された認証の種類 (つまり、サービスで使用される資格情報の種類) に関連付けられています。 + + 認証に X.509 証明書を使用するメッセージ レベルまたはトランスポート レベルの SSL (Secure Sockets Layer) を使用して認証を行うようにチャネルが構成されている場合、次の ID 値が有効になります。 + +- DNS。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、SSL ハンドシェイク中に提示された証明書に、クライアントの DNS ID に指定された値と等価の DNS または `CommonName` (CN) 属性が含まれているかどうかを確認します。 この検査は、サーバー証明書の有効性の確認とは別に行われます。 既定では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、サーバー証明書が信頼されたルート証明機関によって発行されたものかどうかを検証します。 + +- 証明書。 SSL ハンドシェイク中に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、ID に指定された証明書の値が、リモート エンドポイントによって間違いなく提示されているかどうかを確認します。 + +- 証明書参照。 証明書と同じです。 + +- RSA。 SSL ハンドシェイク中に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、ID に指定された RSA キーの値が、リモート エンドポイントによって間違いなく提示されているかどうかを確認します。 + + サービスが認証に Windows 資格情報を使用するメッセージ レベルまたはトランスポート レベル SSL の認証を行い、資格情報をネゴシエートする場合、次の ID 値が有効になります。 + +- DNS。 ネゴシエーションでは、DNS 名を確認できるように、サービスの SPN が渡されます。 SPN の形式は `host/` です。 + +- SPN。 サービスの明示的な SPN (例 : `host/myservice`) が返されます。 + +- UPN。 サービス アカウントの UPN です。 フォームでの UPN は`username` @`domain`します。 たとえば、サービスがユーザー アカウントで実行されている場合、UPN は `username@contoso.com` のようになります。 + + プログラムによる id の指定 (を使用して、 プロパティ) は省略可能です。 ID が指定されておらず、クライアント資格情報の種類が Windows の場合、既定値は、先頭に "host/" リテラルが付加されたサービス エンドポイント アドレスのホスト名の部分に値が設定された SPN になります。 ID が指定されておらず、クライアント資格情報の種類が証明書の場合、既定値は `Certificate` です。 これは、メッセージ レベルとトランスポート レベルの両方のセキュリティに適用されます。 + +## ID とカスタム バインディング + サービスの ID は使用するバインディングの種類によって異なるため、カスタム バインディングの作成時には、適切な ID が公開されていることを確認する必要があります。 たとえば、次のコード例では、セキュリティで保護された通信のブートストラップ バインディングの ID と、エンドポイントのバインディングの ID が一致していないため、セキュリティの種類と適合しない ID が公開されます。 セキュリティで保護されたメッセージ交換のバインディングは、DNS id を設定中に、 は UPN または SPN id が設定されます。 + + [!code-csharp[C_Identity#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_identity/cs/source.cs#8)] + [!code-vb[C_Identity#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_identity/vb/source.vb#8)] + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)]バインド要素をカスタム バインディングを正しくスタックする方法[ユーザー定義バインディング](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md)します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]使用してカスタム バインディングを作成する、 を参照してください[方法: 指定の認証モード用の SecurityBindingElement を作成](../../../../docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md)します。 + +## 関連項目 + [方法: SecurityBindingElement を使用してカスタム バインディングを作成します。](../../../../docs/framework/wcf/feature-details/how-to-create-a-custom-binding-using-the-securitybindingelement.md) + [方法: 指定した認証モード用の SecurityBindingElement を作成](../../../../docs/framework/wcf/feature-details/how-to-create-a-securitybindingelement-for-a-specified-authentication-mode.md) + [方法: カスタム クライアント Id 検証機能を作成します。](../../../../docs/framework/wcf/extending/how-to-create-a-custom-client-identity-verifier.md) + [資格情報の種類を選択します。](../../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md) + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) + [ユーザー定義のバインディングを作成します。](../../../../docs/framework/wcf/extending/creating-user-defined-bindings.md) + [方法: 証明書のサムプリントの取得](../../../../docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/service-returns-arbitrary-data-using-the-wcf-web.md b/docs/framework/wcf/feature-details/service-returns-arbitrary-data-using-the-wcf-web.md new file mode 100644 index 00000000000..6ad08984de0 --- /dev/null +++ b/docs/framework/wcf/feature-details/service-returns-arbitrary-data-using-the-wcf-web.md @@ -0,0 +1,190 @@ +--- +title: "方法 : WCF Web HTTP プログラミング モデルを使用して任意のデータを返すサービスを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0283955a-b4ae-458d-ad9e-6fbb6f529e3d +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 方法 : WCF Web HTTP プログラミング モデルを使用して任意のデータを返すサービスを作成する +開発者は、データがサービス操作から返される流れを完全に制御する必要が生じることがあります。サービス操作が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではサポートされない形式でデータを返す必要がある場合がこれに当てはまります。このトピックでは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルを使用してこのようなサービスを作成する方法を説明します。ストリームを返す操作を 1 つ持つサービスを例に取ります。 + +### サービス コントラクトを実装するには + +1. サービス コントラクトを定義します。コントラクトは `IImageServer` と呼ばれ、 を返す `GetImage` というメソッドが入っています。 + + ``` + [ServiceContract] + public interface IImageServer + { + [WebGet] + Stream GetImage(int width, int height); + } + ``` + + このメソッドは を戻すので、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] はその操作がサービス操作から戻るデータを完全に制御できると想定し、戻されたデータにフォーマットを適用しません。 + +2. サービス コントラクトを実装します。コントラクトには 1 つの操作 \(`GetImage`\) しかありません。このメソッドはビットマップを生成して、それを に .jpg 形式で保存します。操作はそのストリームを呼び出し元に戻します。 + + ``` + public class Service : IImageServer + { + public Stream GetImage(int width, int height) + { + Bitmap bitmap = new Bitmap(width, height); + for (int i = 0; i < bitmap.Width; i++) + { + for (int j = 0; j < bitmap.Height; j++) + { + bitmap.SetPixel(i, j, (Math.Abs(i - j) < 2) ? Color.Blue : Color.Yellow); + } + } + MemoryStream ms = new MemoryStream(); + bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); + ms.Position = 0; + WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; + return ms; + } + } + ``` + + コードの最後から 2 番目の行にある `WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg";` に注意してください。 + + これはコンテンツの種類のヘッダーを `“image/jpeg”` に設定します。この例では .jpg ファイルを戻す方法を示していますが、必要に応じて、任意の種類のデータを任意の形式で戻すように変更できます。操作はデータを生成または取得してそれをストリームに書き込む必要があります。 + +### サービスをホストするには + +1. コンソール アプリケーションを作成し、サービスをホストします。 + + ``` + class Program + { + static void Main(string[] args) + { + } + } + ``` + +2. 変数を作成し、`Main` メソッド内のサービスに使用するベース アドレスを保持します。 + + ``` + string baseAddress = "http://" + Environment.MachineName + ":8000/Service"; + ``` + +3. サービス クラスとベース アドレスを指定するサービスの インスタンスを作成します。 + + ``` + ServiceHost host = new ServiceHost(typeof(Service), new Uri(baseAddress)); + + ``` + +4. を使用して、エンドポイントを追加します。 + + ``` + host.AddServiceEndpoint(typeof(IImageServer), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior()); + + ``` + +5. サービス ホストを開きます。 + + ``` + host.Open() + ``` + +6. サービスを終了するためにユーザーが Enter キーを押すのを待ちます。 + + ``` + Console.WriteLine("Service is running"); + Console.Write("Press ENTER to close the host"); + Console.ReadLine(); + host.Close(); + + ``` + +### Internet Explorer を使用して生のサービスを呼び出すには + +1. サービスを実行します。サービスからの次の出力が表示されます。`Service is running Press ENTER to close the host` + +2. Internet Explorer を開き「`http://localhost:8000/Service/GetImage?width=50&height=40`」と入力します。黄色い長方形とその中心を通る青い斜線が表示されます。 + +## 使用例 + この例で使用されているコードの全容を次に示します。 + +``` +using System; +using System.Collections.Generic; +using System.Text; +using System.ServiceModel; +using System.ServiceModel.Web; +using System.ServiceModel.Description; +using System.IO; +using System.Drawing; + +namespace RawImageService +{ + // Define the service contract + [ServiceContract] + public interface IImageServer + { + [WebGet] + Stream GetImage(int width, int height); + } + + // implement the service contract + public class Service : IImageServer + { + public Stream GetImage(int width, int height) + { + // Although this method returns a jpeg, it can be + // modified to return any data you want within the stream + Bitmap bitmap = new Bitmap(width, height); + for (int i = 0; i < bitmap.Width; i++) + { + for (int j = 0; j < bitmap.Height; j++) + { + bitmap.SetPixel(i, j, (Math.Abs(i - j) < 2) ? Color.Blue : Color.Yellow); + } + } + MemoryStream ms = new MemoryStream(); + bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); + ms.Position = 0; + WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; + return ms; + } + } + + class Program + { + static void Main(string[] args) + { + string baseAddress = "http://" + Environment.MachineName + ":8000/Service"; + ServiceHost host = new ServiceHost(typeof(Service), new Uri(baseAddress)); + host.AddServiceEndpoint(typeof(IImageServer), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior()); + host.Open(); + Console.WriteLine("Service is running"); + Console.Write("Press ENTER to close the host"); + Console.ReadLine(); + host.Close(); + + } + } +} + +``` + +## コードのコンパイル + +- コード例のコンパイル時には、System.ServiceModel.dll と System.ServiceModel.Web.dll を参照します。 + +## 参照 + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/servicedescription-and-wsdl-reference.md b/docs/framework/wcf/feature-details/servicedescription-and-wsdl-reference.md new file mode 100644 index 00000000000..1653cd2bc56 --- /dev/null +++ b/docs/framework/wcf/feature-details/servicedescription-and-wsdl-reference.md @@ -0,0 +1,162 @@ +--- +title: "ServiceDescription と WSDL 参照 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: eedc025d-abd9-46b1-bf3b-61d2d5c95fd6 +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# ServiceDescription と WSDL 参照 +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] で行われる Web サービス記述言語 \(WSDL\) ドキュメントと インスタンスの間のマッピングについて説明します。 + +## ServiceDescription から WSDL 1.1 へのマッピング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、サービスの インスタンスから WSDL ドキュメントをエクスポートできます。 WSDL ドキュメントは、メタデータ エンドポイントを公開したときに自動的にサービスに対して生成されます。 + + また、`WsdlImporter` 型を使用して、WSDL ドキュメントから インスタンス、 インスタンス、および インスタンスをインポートできます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によってエクスポートされる WSDL ドキュメントは、外部の XML スキーマ ドキュメントから使用する XML スキーマ定義をインポートします。 データ型がサービスで使用するターゲット名前空間ごとに、個別の XML スキーマ ドキュメントがエクスポートされます。 同様に、サービス コントラクトが使用するターゲット名前空間ごとに、個別の WSDL ドキュメントがエクスポートされます。 + +### ServiceDescription + インスタンスは `wsdl:service` 要素にマップされます。 インスタンスは、それぞれが個別の `wsdl:port` 要素にマップされる インスタンスのコレクションを格納します。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`Name`|サービスの `wsdl:service`\/@name 値| +|`Namespace`|サービスの `wsdl:service` 定義の targetNamespace| +|`Endpoints`|サービスの `wsdl:port` 定義| + +### ServiceEndpoint + インスタンスは `wsdl:port` 要素にマップされます。 インスタンスは、アドレス、バインディング、およびコントラクトを格納します。 + + インターフェイスを実装するエンドポイント動作は、その動作が関連付けられているエンドポイントの `wsdl:port` 要素を変更できます。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`Name`|エンドポイントの `wsdl:port`\/@name 値およびエンドポイント バインディングの `wsdl:binding`\/@name 値| +|`Address`|エンドポイントの `wsdl:port` 定義のアドレス

アドレスの形式は、エンドポイントのトランスポートによって決まります。 たとえば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされるトランスポートの場合、SOAP アドレスまたはエンドポイント参照になります。| +|`Binding`|エンドポイントの `wsdl:binding` 定義

`wsdl:binding` 定義とは異なり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のバインディングはどのコントラクトにも関連付けられません。| +|`Contract`|エンドポイントの `wsdl:portType` 定義| +|`Behaviors`| インターフェイスを実装するエンドポイント動作は、エンドポイントの `wsdl:port` を変更できます。| + +### バインディング + `ServiceEndpoint` インスタンスのバインディング インスタンスは、`wsdl:binding` 定義にマップされます。 特定の `wsdl:portType` 定義に関連付ける必要がある `wsdl:binding` 定義とは異なり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のバインディングは、どのコントラクトにも依存しません。 + + バインディングは、バインド要素のコレクションで構成されます。 各要素は、エンドポイントがクライアントと通信する方法の一部分を記述します。 また、バインディングには、エンドポイントの を示すための があります。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`Name`|エンドポイントの既定の名前で使用されます。この名前は、バインディング名にコントラクト名を追加し、アンダースコアで区切った形で表記されます。| +|`Namespace`|`wsdl:binding` 定義の `targetNamespace`。

インポートでは、WSDL ポートに関連付けられたポリシーがある場合、インポートされたバインディング名前空間は、`wsdl:port` 定義の `targetNamespace` にマップされます。| +|`BindingElementCollection` \(`CreateBindingElements`\(\) メソッドによって返されるプロパティとして\)|`wsdl:binding` 定義に対するさまざまなドメイン固有の拡張。通常は、ポリシー アサーション。| +|`MessageVersion`|エンドポイントの `EnvelopeVersion` および `AddressingVersion`。

`MessageVersion.None` が指定されている場合、WSDL バインディングは SOAP バインディングを格納せず、WSDL ポートは WS\-Addressing コンテンツを含みません。 この設定は、通常、Plain Old XML \(POX\) エンドポイントに対して使用されます。| + +#### BindingElements + エンドポイント バインディングのバインド要素は、ポリシー アサーションなど、`wsdl:binding` のさまざまな WSDL 拡張にマップされます。 + + SOAP バインディングのトランスポート URI \(Uniform Resource Identifier\) は、バインディングの によって決まります。 + +#### AddressingVersion + バインディングの `AddressingVersion` は、`wsd:port` で使用されるアドレス指定のバージョンにマップされます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、SOAP 1.1 と SOAP 1.2 のアドレスおよび WS\-Addressing 08\/2004 と WS\-Addressing 1.0 のエンドポイント参照をサポートします。 + +#### EnvelopeVersion + バインディングの `EnvelopeVersion` は、`wsdl:binding` で使用される SOAP のバージョンにマップされます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、SOAP 1.1 と SOAP 1.2 のバインディングをサポートします。 + +### コントラクト + `ServiceEndpoint` インスタンスの インスタンスは、`wsdl:portType` にマップされます。 `ContractDescription` インスタンスは、特定のコントラクトのすべての操作を記述します。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`Name`|コントラクトの `wsdl:portType`\/@name 値| +|`Namespace`|`wsdl:portType` 定義の targetNamespace| +|`SessionMode`|コントラクトの `wsdl:portType`\/@msc:usingSession 値。 この属性は、WSDL 1.1 用の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 拡張です。| +|`Operations`|コントラクトの `wsdl:operation` 定義| + +### 操作 + インスタンスは、`wsdl:portType`\/`wsdl:operation` にマップされます。 `OperationDescription` は、操作のメッセージを記述する `MessageDescription` インスタンスのコレクションを格納します。 + + 主に、2 つの操作動作 `DataContractSerializerOperationBehavior` および `XmlSerializerOperationBehavior` が、`OperationDescription` を WSDL ドキュメントにマップする方法に関与しています。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`Name`|操作の `wsdl:portType`\/`wsdl:operation`\/@name 値| +|`ProtectionLevel`|この操作の `wsdl:binding/wsdl:operation` メッセージに関連付けられたセキュリティ ポリシーの保護アサーション| +|`IsInitiating`|操作の `wsdl:portType`\/`wsdl:operation`\/@msc:isInitiating 値。 この属性は、WSDL 1.1 用の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 拡張です。| +|`IsTerminating`|操作の `wsdl:portType`\/`wsdl:operation`\/@msc:isTerminating 値。 この属性は、WSDL 1.1 用の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 拡張です。| +|`Messages`|操作の `wsdl:portType`\/`wsdl:operation`\/`wsdl:input` メッセージおよび `wsdl:portType`\/`wsdl:operation`\/`wsdl:output` メッセージ| +|`Faults`|操作の `wsdl:portType`\/`wsdl:operation`\/`wsdl:fault` 定義| +|`Behaviors`|`DataContractSerializerOperationBehavior` および `XmlSerializerOperationBehavior` は、操作バインディングおよび操作メッセージを扱います。| + +#### DataContractSerializerOperationBehavior + 操作の `DataContractSerializerOperationBehavior` は、その操作の WSDL メッセージとバインディングをエクスポートする `IWsdlExportExtension` の実装です。 XML スキーマ型は、`XsdDataContractExporter` を使用してエクスポートされます。 また、`DataContractSerializerOperationBehavior` では、その操作に使用する使用方法、スタイル、およびスキーマ エクスポーターとインポーターを決定します。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`DataContractFormatAttribute`|この属性の `Style` プロパティは、操作の `wsdl:binding`\/`wsdl:operation`\/`soap:operation`\/@style 値にマップされます。

`DataContractSerializerOperationBehavior` は、WSDL のスキーマ型のリテラル使用だけをサポートします。| + +#### XmlSerializerOperationBehavior + 操作の `XmlSerializerOperationBehavior` は、その操作の WSDL メッセージとバインディングをエクスポートする `IWsdlExportExtension` の実装です。 XML スキーマ型は、`XmlSchemaExporter` を使用してエクスポートされます。 また、`XmlSerializerOperationBehavior` では、その操作に使用する使用方法、スタイル、およびスキーマ エクスポーターとインポーターを決定します。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`XmlSerializerFormatAttribute`|この属性の `Style` プロパティは、操作の `wsdl:binding`\/`wsdl:operation`\/`soap:operation`\/@style 値にマップされます。

この属性の `Use` プロパティは、操作のすべてのメッセージについて、`wsdl:binding`\/`wsdl:operation`\/`soap:operation`\/\*\/@use 値にマップされます。| + +### \[メッセージ\] + `MessageDescription` インスタンスは、操作の `wsdl:portType`\/`wsdl:operation`\/`wsdl:input` メッセージまたは `wsdl:portType`\/`wsdl:operation`\/`wsdl:output` メッセージによって参照される `wsdl:message` にマップされます。 `MessageDescription` には、本文とヘッダーがあります。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`Action`|メッセージの SOAP アクションまたは WS\-Addressing アクション。

Action 文字列 "\*" を使用する操作は、WSDL では表示されません。| +|`Direction`|`MessageDirection.Input` は `wsdl:input` にマップされます。

`MessageDirection.Output` は `wsdl:output` にマップされます。| +|`ProtectionLevel`|このメッセージの `wsdl:message` 定義に関連付けられたセキュリティ ポリシーの保護アサーション| +|`Body`|メッセージのメッセージ本文| +|`Headers`|メッセージのヘッダー| +|`ContractDescription.Name`, `OperationContract.Name`|エクスポートするときに、`wsdl:message`\/@name 値を派生するために使用されます。| + +#### メッセージ本文 + `MessageBodyDescription` インスタンスは、メッセージ本文の `wsdl:message`\/`wsdl:part` 定義にマップされます。 メッセージ本文は、ラップされている場合とベアの場合があります。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`WrapperName`|スタイルが RPC 以外の場合、`WrapperName` は、@name が "parameters" に設定された `wsdl:message`\/`wsdl:part` によって参照される要素名にマップされます。| +|`WrapperNamespace`|スタイルが RPC 以外の場合、`WrapperNamespace` は、@name が "parameters" に設定された `wsdl:message`\/`wsdl:part` の要素の名前空間にマップされます。| +|`Parts`|このメッセージ本文のメッセージ部分| +|`ReturnValue`|ラッパー要素が存在する場合 \(ドキュメント ラップ スタイルまたは RPC スタイル\)、そのラッパー要素の子要素。存在しない場合、メッセージに最初に現れる `wsdl:message`\/`wsdl:part`。| + +#### メッセージ部分 + `MessagePartDescription` インスタンスは、`wsdl:message`\/`wsdl:part` およびメッセージ部分が指す XML スキーマ型または要素にマップされます。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`Name`|メッセージ部分の `wsd:message`\/`wsdl:part`\/@name 値およびメッセージ部分が指す要素の名前| +|`Namespace`|メッセージ部分が指す要素の名前空間| +|`Index`|メッセージの `wsdl:message`\/`wsdl:part` のインデックス| +|`ProtectionLevel`|このメッセージ部分の `wsdl:message` 定義に関連付けられたセキュリティ ポリシーの保護アサーション。 ポリシーは、特定のメッセージ部分を指すためにパラメーター化されます。| +|`MessageType`|メッセージ部分が指す要素の XML スキーマ型| + +#### メッセージ ヘッダー + `MessageHeaderDescription` インスタンスは、メッセージ部分の `soap:header` バインディングにもマップされるメッセージ部分です。 + +### エラー + `FaultDescription` インスタンスは、`wsdl:portType`\/`wsdl:operation`\/`wsdl:fault` 定義およびその関連する `wsdl:message` 定義にマップされます。 `wsdl:message` は、関連する WSDL ポートの種類と同じターゲット名前空間に追加されます。 `wsdl:message` には、`FaultDescription` インスタンスの `DefaultType` プロパティ値に相当する XML スキーマ要素を指す、"detail" という名前の 1 つのメッセージ部分があります。 + +|プロパティ|WSDL マッピング| +|-----------|----------------| +|`Name`|エラーの `wsdl:portType`\/`wsdl:operation`\/`wsdl:fault`\/@name 値| +|`Namespace`|エラー詳細メッセージ部分が指す XML スキーマ要素の名前空間| +|`Action`|エラーの SOAP アクションまたは WS\-Addressing アクション| +|`ProtectionLevel`|このエラーの `wsdl:message` 定義に関連付けられたセキュリティ ポリシーの保護アサーション| +|`DetailType`|詳細メッセージ部分が指す要素の XML スキーマ型| +|`Name, ContractDescription.Name, OperationDescription.Name,`|エラー メッセージの `wsdl:message`\/@name 値を派生するために使用されます。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/servicemodel-attributes-and-servicedescription-reference.md b/docs/framework/wcf/feature-details/servicemodel-attributes-and-servicedescription-reference.md new file mode 100644 index 00000000000..3fee066332b --- /dev/null +++ b/docs/framework/wcf/feature-details/servicemodel-attributes-and-servicedescription-reference.md @@ -0,0 +1,124 @@ +--- +title: "ServiceModel 属性および ServiceDescription 参照 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4ab86b17-eab9-4846-a881-0099f9a7cc64 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# ServiceModel 属性および ServiceDescription 参照 +*"説明ツリー"* は、サービスのすべての側面をまとめて示す \( クラスで始まる\) 型の階層です。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、説明ツリーを使用して、有効なサービス ランタイムの構築、Web サービス記述言語 \(WSDL: Web Services Description Language\)、XML スキーマ定義言語 \(XSD: XML Schema Definition language\)、およびクライアントが接続して使用できるサービスに関するポリシー アサーション \(メタデータ\) の公開、説明ツリーの値を表すさまざまなコードと構成ファイルの生成を行います。 + + ここでは、サービス コントラクトからコントラクトに関連するプロパティが取得されるしくみ、およびこれらのプロパティが実装され、説明ツリーに追加されるしくみについて説明します。属性値が動作プロパティに変換された後、動作が説明ツリーに挿入される場合もあります。説明ツリーの値がメタデータに変換されるしくみ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ServiceDescription と WSDL 参照](../../../../docs/framework/wcf/feature-details/servicedescription-and-wsdl-reference.md)」を参照してください。 + +## 説明ツリーへの操作のマッピング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションでは、サービス コントラクトが、属性を使用してインターフェイスまたはクラスとそのメソッドを操作のグループとしてマークするインターフェイス \(またはクラス\) によってモデル化されます。 クラスを開くと、サービス コントラクトと実装が構成情報に反映され、構成情報とマージされて、説明ツリーに挿入されます。 + + 操作モデルには、*"パラメーター"* モデルと *"メッセージ コントラクト"* モデルの 2 種類があります。パラメーター モデルでは、 クラスによってマークされたパラメーターまたは戻り値の型を持たないマネージ メソッドを使用します。このモデルでは、開発者がパラメーターと戻り値のシリアル化を制御しますが、サービスとそのコントラクトの説明ツリーの設定に使用する値は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって生成されます。 + + 構成ファイルで指定されたバインディングは、 プロパティに直接読み込まれます。 + +|ServiceBehaviorAttribute プロパティ|影響を受ける説明ツリーの値| +|------------------------------------|-------------------| +|Name|| +|Namespace|| +|ConfigurationName|| +|IgnoreExtensionDataObject|すべての操作の プロパティを設定します。| +|MaxItemsInObjectGraph|すべての操作の プロパティを設定します。| + +|ServiceContractAttribute プロパティ|影響を受ける説明ツリーの値| +|------------------------------------|-------------------| +|CallbackContract|すべての操作の に追加される | +|ConfigurationName|| +|ProtectionLevel| と、場合によっては子の保護レベル。保護レベルの階層[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[保護レベルの理解](../../../../docs/framework/wcf/understanding-protection-level.md)」を参照してください。| +|SessionMode|| + +|ServiceKnownTypesAttribute 値|影響を受ける説明ツリーの値| +|----------------------------------|-------------------| +|MethodName|| + +|OperationContractAttribute 値|影響を受ける説明ツリーの値| +|----------------------------------|-------------------| +|Action|出力メッセージまたは入力メッセージの 。コントラクトまたはコールバック コントラクトによって異なります。| +|AsyncPattern|true の場合は、| +|IsOneWay| の 1 つの にマップします。| +|IsInitiating|| +|IsTerminating|| +|名前|| +|ProtectionLevel| と、場合によっては子の保護レベル。保護レベルの階層[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[保護レベルの理解](../../../../docs/framework/wcf/understanding-protection-level.md)」を参照してください。| +|ReplyAction|出力メッセージまたは入力メッセージの 。コントラクトまたはコールバック コントラクトによって異なります。| + +|FaultContractAttribute 値|影響を受ける説明ツリーの値| +|------------------------------|-------------------| +|Action|。コントラクトまたはコールバック コントラクトによって異なります。| +|DetailType|| +|Name|| +|Namespace|| +|ProtectionLevel|| + +|DataContractFormatAttribute 値|影響を受ける説明ツリーの値| +|-----------------------------------|-------------------| +|Use|操作の 値が設定されます。| + +|XmlSerializerFormatAttribute 値|影響を受ける説明ツリーの値| +|------------------------------------|-------------------| +|Style|操作の に、この プロパティが設定されます。| +|Use|操作の に、 が設定されます。| + +|TransactionFlowAttribute 値|影響を受ける説明ツリーの値| +|--------------------------------|-------------------| +|TransactionFlowOption| プロパティに操作の動作として追加されます。| + +|MessageContractAttribute 値|影響を受ける説明ツリーの値| +|--------------------------------|-------------------| +|ProtectionLevel|| +|WrapperName|| +|WrapperNamespace|| + +|MessageHeaderAttribute 値|影響を受ける説明ツリーの値| +|------------------------------|-------------------| +|Actor| 内の対応するヘッダーの| +|MustUnderstand| 内の対応するヘッダーの| +|Name| 内の対応するヘッダーの| +|Namespace| 内の対応するヘッダーの| +|ProtectionLevel| 内の対応するヘッダーの| +|Relay| 内の対応するヘッダーの| + +|MessageBodyMemberAttribute 値|影響を受ける説明ツリーの値| +|----------------------------------|-------------------| +|Name| 内の対応する部分の| +|Namespace| 内の対応する部分の| +|Order| 内の対応する部分の| +|ProtectionLevel| 内の対応する部分の| + +|MessageHeaderArrayAttribute 値|影響を受ける説明ツリーの値| +|-----------------------------------|-------------------| +|Actor|| +|MustUnderstand|| +|Name|| +|名前空間|| +|ProtectionLevel|| +|Relay|| + +|MessagePropertyAttribute 値|影響を受ける説明ツリーの値| +|--------------------------------|-------------------| +|Name|| + +|MessageParameterAttribute 値|影響を受ける説明ツリーの値| +|---------------------------------|-------------------| +|Name| 内の対応する部分の| + + 説明ツリーの値がメタデータに変換されるしくみ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ServiceDescription と WSDL 参照](../../../../docs/framework/wcf/feature-details/servicedescription-and-wsdl-reference.md)」を参照してください。 + +## 参照 + [ServiceDescription と WSDL 参照](../../../../docs/framework/wcf/feature-details/servicedescription-and-wsdl-reference.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/servicemodel-transaction-attributes.md b/docs/framework/wcf/feature-details/servicemodel-transaction-attributes.md new file mode 100644 index 00000000000..88587aa86fc --- /dev/null +++ b/docs/framework/wcf/feature-details/servicemodel-transaction-attributes.md @@ -0,0 +1,61 @@ +--- +title: "ServiceModel トランザクションの属性 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "トランザクション [WCF], ServiceModel の属性" +ms.assetid: 1e0d2436-6ae5-439b-9765-a448d6f60000 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# ServiceModel トランザクションの属性 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのトランザクションの動作を構成できる次の 3 つの標準的な 属性のプロパティが用意されています。 + +- + +- + +- + +## TransactionFlowAttribute + 属性は、クライアントから受信トランザクションを受け入れるときのサービス コントラクトにおける操作の受け入れやすさを指定します。この属性は、次のプロパティを使用してこの制御を行います。トランザクションは、 列挙型を使用して、受信トランザクションが のいずれであるかを指定します。 + + これは、サービス操作をクライアントの外部とのやり取りに関連付ける唯一の属性です。次のセクションで説明する属性は、操作の実行内部におけるトランザクションの使用と関連しています。 + +## ServiceBehaviorAttribute + 属性は、サービス コントラクト実装の内部実行動作を指定します。この属性のトランザクション固有のプロパティは次のとおりです。 + +- は、セッションの終了時に、未完了のトランザクションを完了させるかどうかを指定します。このプロパティの既定値は `false` です。このプロパティが `true` で、ネットワークまたはクライアントの障害が原因で、入力セッションが終了せずにシャットダウンした場合は、すべての未完了のトランザクションが正常に完了します。このプロパティが `false` の場合、またはセッションが正常に終了しなかった場合は、セッションの終了時にすべての未完了のトランザクションがロールバックされます。このプロパティを `true` に設定する場合、受信チャネルはセッション ベースである必要があります。 + +- は、トランザクションが完了したときに基になるサービス インスタンスを解放するかどうかを指定します。このプロパティの既定値は `true` です。次の受信メッセージによって、基になる新しいインスタンスが作成されると、以前のインスタンスが保持していたトランザクションごとの状態は破棄されます。サービス インスタンスの解放はサービスが実行する内部動作であるため、クライアントが確立した既存の接続またはセッションに影響を及ぼすことはありません。この機能は、COM\+ に用意された Just\-In\-Time アクティベーション機能に相当します。このプロパティが `true` の場合は、 を一致させる必要があります。そうでない場合、サービスの起動中に無効な構成の検証例外がスローされます。 + +- は、サービスのトランザクションで使用する分離レベルを指定します。このプロパティは、 の値のいずれかに設定されます。ローカルの分離レベル プロパティが、 以外に設定されている場合は、受信トランザクションの分離レベルをこのローカルのプロパティの設定に一致させる必要があります。そうでない場合、受信トランザクションは拒否され、クライアントにエラーが返されます。 が `true` であり、トランザクションがフローしていない場合、このプロパティによって、ローカルで作成されるトランザクションに使用する の値が決まります。 に設定されている場合は、 が使用されます。 + +- は、サービスで作成された新しいトランザクションを完了させる期間を指定します。この期間が過ぎてもトランザクションが完了しない場合は、トランザクションは中止されます。 は、 が `true` に設定された任意の操作、および新しいトランザクションが作成された任意の操作の タイムアウトとして使用されます。このタイムアウトは、2 フェーズ コミット プロトコルにおいて、トランザクションが作成されてからフェーズ 1 が完了するまでの最大許容時間です。使用されるタイムアウト値は、 プロパティと `transactionTimeout` 構成設定のうち、常に小さい方の値になります。 + +## OperationBehaviorAttribute + 属性は、サービス実装におけるメソッドの動作を指定します。この属性を使用して、操作の特定の実行動作を示すことができます。この属性のプロパティは、サービス コントラクトの Web サービス記述言語 \(WSDL: Web Service Description Language\) 記述には影響しません。また、このプロパティがない場合に開発者が実装する必要のある共通の機能を有効にする、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] プログラミング モデルの要素にすぎません。 + + この属性には、次のようなトランザクション固有のプロパティがあります。 + +- は、メソッドをアクティブなトランザクション スコープ内で実行する必要があるかどうかを指定します。既定値は `false` です。 属性がメソッドに対して設定されていない場合は、そのメソッドがトランザクション内で実行されないことを意味します。操作のトランザクション スコープが要求されない場合、メッセージ ヘッダーにあるトランザクションはアクティブ化されず、 の要素として残ります。操作のトランザクション スコープが必要な場合は、トランザクションのソースは次のいずれかから派生します。 + + - トランザクションがクライアントからフローされた場合、その分散トランザクションを使用して作成されたトランザクション スコープの下でメソッドが実行されます。 + + - キューに置かれたトランスポートでは、メッセージをキューから削除するトランザクションが使用されます。使用されるトランザクションはフローされたトランザクションではなく、したがってメッセージの送信元によって提供されたものではないことに注意してください。 + + - カスタム トランスポートは、`TransportTransactionProperty` を使用することによってトランザクションを提供できます。 + + - 上記のいずれもがトランザクションの外部ソースを提供しない場合は、メソッドの呼び出しの直前に新規の インスタンスが作成されます。 + +- は、未処理の例外がスローされなかった場合に、メソッドが実行されているトランザクションが自動的に完了されるかどうかを指定します。このプロパティが `true` の場合は、ユーザー メソッドが例外をスローせずに復帰したときに、呼び出し側のインフラストラクチャが自動的にそのトランザクションを "完了" としてマークします。このプロパティが `false` の場合、トランザクションはインスタンスにアタッチされ、このプロパティが `true` とマークされた後続のメソッドがクライアントによって呼び出されるか、または後続のメソッドから が明示的に呼び出された場合にのみ、"完了" とマークされます。 プロパティを `true` に設定しない限り、これらのどちらの実行に失敗しても、トランザクションは "完了" にならなくなり、格納されている作業はコミットされません。このプロパティが `true` に設定されている場合、セッションのあるチャネルを使用し、 に設定する必要があります。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/servicemodel-transaction-configuration.md b/docs/framework/wcf/feature-details/servicemodel-transaction-configuration.md new file mode 100644 index 00000000000..be46c2fc772 --- /dev/null +++ b/docs/framework/wcf/feature-details/servicemodel-transaction-configuration.md @@ -0,0 +1,74 @@ +--- +title: "ServiceModel トランザクションの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "トランザクション [WCF], ServiceModel 構成" +ms.assetid: 5636067a-7fbd-4485-aaa2-8141c502acf3 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ServiceModel トランザクションの構成 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、サービスのトランザクションを構成するために、`transactionFlow`、`transactionProtocol`、および `transactionTimeout` という 3 つの属性が用意されています。 + +## transactionFlow の構成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意されているほとんどの定義済みバインディングには、`transactionFlow` 属性と `transactionProtocol` 属性が含まれています。これらの属性を使用すると、特定のトランザクション フロー プロトコルを使用する特定のエンドポイントの受信トランザクションを受け入れるようにバインディングを構成できます。さらに、`transactionFlow` 要素とその `transactionProtocol` 属性を使用して、ユーザー独自のカスタム バインディングを構築できます。構成要素の設定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[\](../../../../docs/framework/misc/binding.md)」および「[WCF 構成スキーマ](../../../../docs/framework/configure-apps/file-schema/wcf/index.md)」を参照してください。 + + `transactionFlow` 属性は、バインディングを使用するサービス エンドポイントに対してトランザクション フローを有効にするかどうかを指定します。 + +## transactionProtocol の構成 + `transactionProtocol` 属性は、バインディングを使用するサービス エンドポイントで使用されるトランザクション プロトコルを指定します。 + + 以下に、指定したバインディングがトランザクション フローをサポートし、WS\-AtomicTransaction プロトコルを使用するように構成する構成セクションの例を示します。 + +``` + + + + +``` + +## transactionTimeout の構成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの `transactionTimeout` 属性は、構成ファイルの `behavior` 要素内で構成できます。次のコードでは、この設定方法について説明します。 + +``` + + + + + + + +``` + + `transactionTimeout` 属性は、サービスで作成された新しいトランザクションを完了させる期間を指定します。この属性は、新しいトランザクションを確立するすべての操作の タイムアウトとして使用され、 が適用されている場合、 プロパティは `true` に設定されます。 + + このタイムアウトは、2 フェーズ コミット プロトコルにおける、トランザクションの作成からフェーズ 1 の完了までの期間を指定します。 + + この属性を `service` 構成セクション内に設定する場合は、対応するサービスの 1 つ以上のメソッドで、 プロパティが `true` に設定された を適用する必要があります。 + + 使用されるタイムアウト値は常に、この `transactionTimeout` 構成設定と プロパティの小さい方の値になります。 + +## 参照 + [\](../../../../docs/framework/misc/binding.md) + [WCF 構成スキーマ](../../../../docs/framework/configure-apps/file-schema/wcf/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/sessions-instancing-and-concurrency.md b/docs/framework/wcf/feature-details/sessions-instancing-and-concurrency.md new file mode 100644 index 00000000000..34ff28c99f5 --- /dev/null +++ b/docs/framework/wcf/feature-details/sessions-instancing-and-concurrency.md @@ -0,0 +1,124 @@ +--- +title: "セッション、インスタンス化、および同時実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 50797a3b-7678-44ed-8138-49ac1602f35b +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# セッション、インスタンス化、および同時実行 +*"セッション"* とは、2 つのエンドポイント間で送信されるすべてのメッセージを相互に関連付けたものです。*"インスタンス化"* とは、ユーザー定義のサービス オブジェクトとこれらのオブジェクトに関連する オブジェクトの有効期間を制御することです。 また、*同時実行*は、 で同時に実行されるスレッドの数の制御を表す用語です。 + + ここでは、これらの設定とその使用方法、各設定間のさまざまな相互作用について説明します。 + +## セッション + サービス コントラクトによって プロパティが に設定されている場合、すべての呼び出し \(つまり、呼び出しをサポートする、基になるメッセージ交換\) を同じメッセージ交換の一部にする必要があります。 セッションが許可されるが必須ではないコントラクトの場合、クライアントは、接続した後にセッションを確立できます。また、セッションを確立しないままにしておくこともできます。 セッションが終了したのに、同じセッション ベースのチャネルでメッセージが送信されると、例外がスローされます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セッションには、主に次のような概念的特徴があります。 + +- 呼び出し側アプリケーションによって明示的に開始および終了される。 + +- セッション中に配信されたメッセージは、受信された順に処理される。 + +- セッションはメッセージのグループを相互に関連付けて通信を行う。 ここで "相互に関連付ける" は、抽象的な意味を持ちます。 たとえば、あるセッション ベースのチャネルでは、共有ネットワーク接続に基づいてメッセージが相互に関連付けられる一方、別のセッション ベースのチャネルでは、メッセージ本文にある共有タグに基づいてメッセージが相互に関連付けられます。 セッションから派生可能な機能は、相互関連付けの性質によって異なります。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セッションに関連付けられた一般的なデータ ストアはありません。 + + アプリケーションの [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] クラスに精通している場合は、この種のセッションと [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セッションの間に次のような相違があることがわかります。 + +- [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] セッションは、常にサーバーによって開始される。 + +- [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] セッションは、暗黙的に順序付けされない。 + +- [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] セッションは、要求全体について一般的なデータ ストレージ機構を提供する。 + + クライアント アプリケーションとサービス アプリケーションでは、異なる方法でセッションと対話します。 クライアント アプリケーションはセッションを開始し、セッション内で送信されてきたメッセージの受信と処理を行います。 サービス アプリケーションでは、動作を追加するための機能拡張ポイントとしてセッションを使用できます。 これは を直接操作する、またはカスタムのインスタンス コンテキスト プロバイダーを実装することで可能になります。 + +## インスタンス化 + インスタンス化動作 \( プロパティを使用して設定します\) は、受信メッセージに応答して を作成する方法を制御します。 既定では、各 は 1 つのユーザー定義サービス オブジェクトに関連付けられています。したがって、\(既定では\) プロパティを設定することによってもユーザー定義サービス オブジェクトのインスタンス化を制御できます。 インスタンス化モードは 列挙体によって定義されます。 + + 次のインスタンス化モードを使用できます。 + +- : 新しい \(およびサービス オブジェクト\) がクライアント要求ごとに作成されます。 + +- : 新しい \(およびサービス オブジェクト\) が新しいクライアント セッションごとに作成され、そのセッションの有効期間中、保持されます \(ただし、セッションをサポートするバインディングが必要です\)。 + +- : アプリケーションの有効期間中は、単一の \(およびサービス オブジェクト\) がすべてのクライアント要求を処理します。 + + 既定の 値 \(サービス クラスで明示的に設定された \) を次のコード例に示します。 + +``` +[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)] +public class CalculatorService : ICalculatorInstance +{ + ... +} +``` + + また、 プロパティは の解放頻度を制御しますが、 プロパティと プロパティはサービス オブジェクトの解放時期を制御します。 + +### 既知のシングルトン サービス + 単一インスタンス サービス オブジェクトの 1 つのバリエーションとして、サービス オブジェクトをユーザーが自分で作成し、このオブジェクトを使用してサービス ホストを作成すると有用な場合があります。 そのためには、 プロパティを に設定するか、サービス ホストが開かれたときに例外をスローする必要があります。 + + このようなサービスを作成するには、[ServiceHost.ServiceHost\(Object, Uri\ コンストラクターを使用します。 この方法は、シングルトン サービスが使用する特定のオブジェクト インスタンスを提供する場合に、カスタムの を実装する代わりに使用できます。 サービス実装の型を作成することが困難な場合 \(たとえば、既定のパラメーターなしのコンストラクターが作成されない場合\) は、このオーバーロードを使用できます。 + + オブジェクトをこのコンストラクターに指定すると、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のインスタンス化動作に関するいくつかの機能が異なる動作をすることに注意してください。 たとえば、シングルトン オブジェクト インスタンスを指定しているときは、 を呼び出しても効果はありません。 他のインスタンス解放機構も、同様に無視されます。 は常に、すべての操作について プロパティが に設定されているかのように動作します。 + +### InstanceContext オブジェクトの共有 + ユーザーが自ら関連付けを行うことにより、どの オブジェクトに、どのセッションフル チャネルまたは呼び出しを関連付けるかを制御することもできます。 + +## 同時実行 + 同時実行は、 内で同時にアクティブになるスレッドの数を制御します。 同時実行を制御するには、 列挙値を使用します。 + + 選択可能な同時実行モードは次の 3 つです。 + +- : 各インスタンス コンテキストは、そのインスタンス コンテキスト内でメッセージを処理するスレッドを最大で一度に 1 つ持つことができます。 他のスレッドは、最初のスレッドがインスタンス コンテキストを使用し終えるまで、同じインスタンス コンテキストを使用できません。 + +- : 各サービス インスタンスは、同時にメッセージを処理する複数のスレッドを持つことができます。 この同時実行モードを使用するには、サービスの実装がスレッドセーフである必要があります。 + +- : 各サービス インスタンスは、一度に 1 つのメッセージを処理しますが、再入操作の呼び出しを受け入れます。 サービスは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント オブジェクトを通じて呼び出しを行う場合のみ、この呼び出しを受け入れます。 + +> [!NOTE] +> 複数のスレッドを安全に使用するコードを理解し、適切に記述することが困難な場合もあります。 値や 値を使用する前に、これらのモード用にサービスが適切に設計されていることを確認してください。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] 。 + + 同時実行の使用は、インスタンス化モードに関連します。`` インスタンス化では、各メッセージが新しい によって処理され、 で複数のスレッドがアクティブになることはないため、同時実行とは関連しません。 + + プロパティを に設定するコード例を次に示します。 + +``` +[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)] +public class CalculatorService : ICalculatorConcurrency +{ + ... +} + +``` + +## InstanceContext 設定と対話するセッション + セッションと は、コントラクト内の 列挙値と、チャネルと特定のサービス オブジェクト間の関連付けを制御するサービス実装の プロパティ値の組み合わせに応じて、相互に作用します。 + + サービスの プロパティと プロパティの値の組み合わせが指定されているという条件で、セッションをサポートしている受信チャネルまたはサポートしていない受信チャネルの結果を次の表に示します。 + +|InstanceContextMode 値|||| +|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------| +|PerCall|- セッションフル チャネルでの動作 : 呼び出しごとに 1 つのセッションと
- セッションレス チャネルでの動作: 例外がスローされます。|- セッションフル チャネルでの動作 : 呼び出しごとに 1 つのセッションと
- セッションレス チャネルでの動作 : 呼び出しごとに 1 つの 。|- セッションフル チャネルでの動作: 例外がスローされます。
- セッションレス チャネルでの動作 : 呼び出しごとに 1 つの 。| +|PerSession|- セッションフル チャネルでの動作 : チャネルごとに 1 つのセッションと
- セッションレス チャネルでの動作: 例外がスローされます。|- セッションフル チャネルでの動作 : チャネルごとに 1 つのセッションと
- セッションレス チャネルでの動作 : 呼び出しごとに 1 つの 。|- セッションフル チャネルでの動作: 例外がスローされます。
- セッションレス チャネルでの動作 : 呼び出しごとに 1 つの 。| +|Single|- セッションフル チャネルでの動作 : すべての呼び出しに対して 1 つのセッションと 1 つの
- セッションレス チャネルでの動作: 例外がスローされます。|- セッションフル チャネルでの動作 : 作成したシングルトンまたはユーザー指定のシングルトンに対して 1 つのセッションと
- セッションレス チャネルでの動作 : 作成したシングルトンまたはユーザー指定のシングルトンに対して 。|- セッションフル チャネルでの動作: 例外がスローされます。
- セッションレス チャネルでの動作 : 作成したシングルトンまたはユーザー指定のシングルトンごとに 。| + +## 参照 + [セッションの使用](../../../../docs/framework/wcf/using-sessions.md) + [方法 : セッションを必要とするサービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-service-that-requires-sessions.md) + [方法 : サービスのインスタンス化を制御する](../../../../docs/framework/wcf/feature-details/how-to-control-service-instancing.md) + [同時実行](../../../../docs/framework/wcf/samples/concurrency.md) + [インスタンス化](../../../../docs/framework/wcf/samples/instancing.md) + [セッション](../../../../docs/framework/wcf/samples/session.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/side-by-side-versioning-in-workflowservicehost.md b/docs/framework/wcf/feature-details/side-by-side-versioning-in-workflowservicehost.md new file mode 100644 index 00000000000..6934a0b2df9 --- /dev/null +++ b/docs/framework/wcf/feature-details/side-by-side-versioning-in-workflowservicehost.md @@ -0,0 +1,171 @@ +--- +title: "WorkflowServiceHost による side-by-side でのバージョン管理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 60887eed-df40-4412-b812-41e1dd329d15 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# WorkflowServiceHost による side-by-side でのバージョン管理 +[!INCLUDE[net_v45](../../../../includes/net-v45-md.md)] で導入された による side\-by\-side でのバージョン管理は、1 つのエンドポイントでワークフロー サービスの複数のバージョンをホストする機能を提供します。 提供される side\-by\-side 機能により、既存の定義を使用してインスタンスを実行しているときに、新しいワークフロー定義を使用してワークフロー サービスの新しいインスタンスが作成されるように、ワークフロー サービスを構成できます。 このトピックでは、 を使用したワークフロー サービスの side\-by\-side での実行の概要を提供します。 + +> [!NOTE] +> サンプルをダウンロードしてワークフロー サービスの side\-by\-side でのバージョン管理のチュートリアル ビデオを閲覧するには、「[Side by Side Versioning with a Web\-Hosted Xamlx Workflow Service \(Web ホスト XAMLX ワークフロー サービスによる side\-by\-side でのバージョン管理\)](http://go.microsoft.com/fwlink/?LinkId=393746)」を参照してください。 + +## ワークフロー サービスでの複数のバージョンのホスティング + には、ワークフローの複数のバージョンを side\-by\-side 実行するように構成できる の 2 つのプロパティが含まれています。 には、ワークフロー サービスのサポートされているバージョンが含まれます。 は、各ワークフロー サービスを一意に識別するために使用されます。 これは、 をワークフロー サービスと関連付けることによって行われます。 には 3 種類の識別情報が格納されます。 は必須で、名前と を表します。また、 は省略可能で、アセンブリ名やその他の必要な情報などの情報を格納する追加文字列の指定に使用できます。 コレクションに含まれる各ワークフロー サービスは、一意の を持つ必要があります。 は、その 3 つのプロパティのいずれかが他の と異なる場合に一意です。 `null` の は、 に有効な値でし。しかし、ワークフロー サービスの以前のバージョンのうちの 1 つだけが `null` の を持つことができます。 + +> [!IMPORTANT] +> には、個人を特定できる情報 \(PII\) を含めないでください。 は、 \(\)、 \(\)、および \(\) の 3 つの部分で構成されます。 インスタンスの作成に使用される に関する情報は、ランタイムによるアクティビティ ライフ サイクルのさまざまなポイントで構成されているすべての追跡サービスに出力されます。 WF の追跡には PII \(機密ユーザー データ\) を非表示にするメカニズムがありません。 そのため、 インスタンスには PII データを含めないでください。PII データは、ランタイムによって追跡レコードに出力され、追跡レコードを表示するためのアクセス権を持つユーザーに表示できます。 + +### ワークフロー サービスでの複数のバージョンのホスティングに関する規則 + ユーザーが追加のバージョンを に追加する場合、エンドポイントと説明の同じセットを使用してワークフロー サービスをホストするために満たす必要があるいくつかの条件があります。 追加のバージョンのいずれかがこれらの条件を満たすことができない場合、 は `Open` が呼び出されたときに例外をスローします。 追加のバージョンとしてホストに提供される各ワークフロー定義は、次の要件を満たす必要があります \(プライマリ バージョンは、ホストのコンストラクターに提供されるワークフロー サービス定義です\)。 追加のワークフローのバージョンは、次の条件を満たす必要があります。 + +- ワークフロー サービスのプライマリ バージョンと同じ を持つ必要があります。 + +- プライマリ バージョンにない アクティビティまたは アクティビティがあってはならず、これらは操作コントラクトに一致する必要があります。 + +- 一意の を持つ必要があります。 `null` を持つことができるワークフロー定義は 1 つだけです。 + + 一部の変更は可能です。 次の項目は、バージョン間で異なることができます。 + +- は、プライマリ バージョンと異なる名前およびパッケージを持つことができます。 + +- 値は、プライマリ バージョンと異なることができます。 + +- 値は、プライマリ バージョンと異なることができます。 + +- 値は、プライマリ バージョンと異なることができます。 + +### DefinitionIdentity の構成 + ワークフロー デザイナーを使用してワークフロー サービスを作成する場合、**\[プロパティ\]** ウィンドウを使用して を設定します。 デザイナーのサービスのルート アクティビティの外部でクリックしてワークフロー サービスを選択し、**\[表示\]** メニューの **\[プロパティ ウィンドウ\]** を選択します。 **DefinitionIdentity** プロパティの横にあるドロップダウン リストから **\[WorkflowIdentity\]** を選択して展開し、目的の プロパティを指定します。 次の例の では、 に `MortgageWorkflow` が構成され、 に `1.0.0.0` が構成されています。 は省略可能です。この例では、`null` です。 + + ![DefinitionIdentity](../../../../docs/framework/wcf/feature-details/media/workflowservicedefinitionidentityv1.bmp "WorkflowServiceDefinitionIdentityv1") + + ワークフロー サービスが自己ホスト型の場合、 はワークフロー サービスを構築するときに構成されます。 次の例では、 が前の例と同じ値を使用して構成されています \(つまり が `MortgageWorkflow`、 が `1.0.0.0`\)。 + +```csharp +WorkflowService service = new WorkflowService +{ + Name = "MortgageWorkflowService", + Body = new MortgageWorkflow(), + DefinitionIdentity = new WorkflowIdentity + { + Name = "MortgageWorkflow", + Version = new Version(1, 0, 0, 0) + } +}; + +``` + +```vb +Dim service As New WorkflowService +With service + .Name = "MortgageWorkflowService" + .Body = New MortgageWorkflow + .DefinitionIdentity = New WorkflowIdentity With _ + { _ + .Name = "MortgageWorkflow", _ + .Version = New Version(1, 0, 0, 0) _ + } +End With +``` + + ワークフロー サービスのただ 1 つのバージョンだけが **null** の を持つことができますが、 は必須ではありません。 + +> [!NOTE] +> これは、最初に を構成せずにサービスを配置し、後で更新されたバージョンを作成する場合に便利です。 + +### Web ホスト ワークフロー サービスへの新しいバージョンの追加 + Web ホスト サービスで新しいバージョンのワークフロー サービスを構成する最初の手順では、`App_Code` フォルダーにサービス ファイルと同じ名前を持つ新しいフォルダーを作成します。 たとえば、サービスの `xamlx` ファイルの名前が `MortgageWorkflow.xamlx` である場合は、フォルダーに `MortgageWorkflow` という名前を付ける必要があります。 元のサービスの `xamlx` ファイルをこのフォルダーにコピーした後、新しい名前 \(たとえば、`MortgageWorkflowV1.xamlx`\) に変更します。 プライマリ サービスに必要な変更を加え、その を更新し、サービスを展開します。 次の例の は、`MortageWorkflow` という値の と `2.0.0.0` という値の で更新されています。 + + ![DefinitionIdentity](../../../../docs/framework/wcf/feature-details/media/workflowservicedefinitionidentityv2.bmp "WorkflowServiceDefinitionIdentityv2") + + サービスが再起動されたとき、以前のバージョンは指定された `App_Code` サブフォルダーにないため、 コレクションに自動的に追加されます。 ワークフロー サービスのプライマリ バージョンに `null` がある場合は以前のバージョンは追加されないことに注意してください。 `null` の を持つことができるのは 1 つのバージョンのみです。しかし、複数のバージョンがある場合、プライマリ バージョンは `null` を持つバージョンであることはできません。そうでないと、以前のバージョンが コレクションに追加されません。 + +### 自己ホスト型ワークフロー サービスへの新しいバージョンの追加 + 自己ホスト型ワークフロー サービスに新しいバージョンを追加する場合、ワークフロー サービスのプライマリ バージョンを使用して が構成されます。以前のバージョンは明示的に コレクションに追加する必要があります。 次の例では、`MortgageWorkflowV2` ワークフロー定義を使用するプライマリ ワークフロー サービスを使用して が構成されています。さらに、`MortgageWorkflowV1` ワークフロー定義を使用して構成されたワークフロー サービスが コレクションに追加されています。 各ワークフロー サービスは、ワークフロー定義のバージョンを反映する一意の で構成されます。 + +```csharp +// Create the primary version of the workflow service. +WorkflowService serviceV2 = new WorkflowService +{ + Name = "MortgageWorkflowService", + Body = new MortgageWorkflowV2(), + DefinitionIdentity = new WorkflowIdentity + { + Name = "MortgageWorkflow", + Version = new Version(2, 0, 0, 0) + } +}; + +// Configure the WorkflowServiceHost with the current version +// of the workflow service. This code requires Administrator +// privileges to function correctly. If running from Visual +// Studio, Visual Studio must be run with Administrator privileges. +WorkflowServiceHost host = new WorkflowServiceHost(serviceV2, + new Uri("http://localhost:8080/MortgageWorkflowService")); + +// Create the previous version of the workflow service. +WorkflowService serviceV1 = new WorkflowService +{ + Name = "MortgageWorkflowService", + Body = new MortgageWorkflowV1(), + DefinitionIdentity = new WorkflowIdentity + { + Name = "MortgageWorkflow", + Version = new Version(1, 0, 0, 0) + } +}; + +// Add the previous version of the service to the SupportedVersions collection. +host.SupportedVersions.Add(serviceV1); + +``` + +```vb +'Create the primary version of the workflow service +Dim serviceV2 As New WorkflowService +With serviceV2 + .Name = "MortgageWorkflowService" + .Body = New MortgageWorkflowV2 + .DefinitionIdentity = New WorkflowIdentity With _ + { _ + .Name = "MortgageWorkflow", _ + .Version = New Version(2, 0, 0, 0) _ + } +End With + +'Configure the WorkflowServiceHost with the current version +'of the workflow service. This code requires Administrator +'privileges to function correctly. If running from Visual +'Studio, Visual Studio must be run with Administrator privileges. + +Dim host As New WorkflowServiceHost(serviceV2, _ + New Uri("http://localhost:8080/MortgageWorkflowService")) + +'Create the previous version of the workflow service. +Dim serviceV1 As New WorkflowService +With serviceV1 + .Name = "MortgageWorkflowService" + .Body = New MortgageWorkflowV1 + .DefinitionIdentity = New WorkflowIdentity With _ + { _ + .Name = "MortgageWorkflow", _ + .Version = New Version(1, 0, 0, 0) _ + } +End With + +'Add the previous version of the service to the SupportedVersions collection. +host.SupportedVersions.Add(serviceV1) +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/specify-the-certificate-authority-chain-verify-signatures-wcf.md b/docs/framework/wcf/feature-details/specify-the-certificate-authority-chain-verify-signatures-wcf.md new file mode 100644 index 00000000000..4696b690170 --- /dev/null +++ b/docs/framework/wcf/feature-details/specify-the-certificate-authority-chain-verify-signatures-wcf.md @@ -0,0 +1,44 @@ +--- +title: "方法 : 署名の検証に使用する証明機関の証明書チェーンを指定する (WCF) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "証明書 [WCF], 証明機関証明書チェーンの指定" + - "証明書 [WCF], 署名の検査" +ms.assetid: 7c719355-aa41-4567-80d0-5115a8cf73fd +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 方法 : 署名の検証に使用する証明機関の証明書チェーンを指定する (WCF) +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、X.509 証明書を使用して署名された SOAP メッセージを受信すると、その X.509 証明書が信頼された証明機関によって発行されたものかどうかを既定で検証します。これは、証明書ストアを検索し、その証明機関の証明書が信頼された証明書として指定されているかどうかを確認することによって行われます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でこれが確認されるようにするには、証明機関証明書チェーンを適切な証明書ストアにインストールする必要があります。 + +### 証明機関証明書チェーンをインストールするには + +- SOAP メッセージの受信者が信頼する必要のある X.509 証明書の発行元の各証明機関について、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で X.509 証明書の取得元として構成されている証明書ストアに、証明機関証明書チェーンをインストールします。 + + たとえば、SOAP メッセージの受信者がマイクロソフトによって発行された X.509 証明書を信頼する必要がある場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で X.509 証明書の検索先として設定されている証明書ストアに、マイクロソフトの証明機関証明書チェーンをインストールする必要があります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が X.509 証明書を検索する証明書ストアは、コードまたは構成で指定できます。たとえば、これをコードで指定するには、 メソッドを使用します。構成では、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md)など、複数の方法で指定できます。 + + Windows には、信頼された証明機関の既定の証明書チェーンのセットが用意されているため、一部の CA については証明書チェーンをインストールする必要はありません。 + + 1. 証明機関証明書チェーンをエクスポートします。 + + 正確なエクスポート方法は、証明機関によって異なります。証明機関で Microsoft 証明書サービスを実行している場合は、**\[CA 証明書、証明書チェーン、または CRL のダウンロード\]** を選択し、**\[CA 証明書のダウンロード\]** を選択します。 + + 2. 証明機関証明書チェーンをインポートします。 + + Microsoft 管理コンソール \(MMC: Microsoft Management Console\) で、証明書スナップインを開きます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で X.509 証明書の取得元として構成されている証明書ストアの場合は、**\[信頼されたルート** **証明機関\]** フォルダーを選択します。**\[信頼されたルート証明機関\]** フォルダーの下の **\[証明書\]** フォルダーを右クリックし、**\[すべてのタスク\]** をポイントして、**\[インポート\]** をクリックします。手順 a. でエクスポートしたファイルを指定します。 + + MMC で証明書スナップインを使用する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : MMC スナップインを使用して証明書を参照する](../../../../docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md)」を参照してください。 + +## 参照 + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md b/docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md new file mode 100644 index 00000000000..ea22c7dea31 --- /dev/null +++ b/docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md @@ -0,0 +1,620 @@ +--- +title: "サービス コントラクトでのデータ転送の指定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "サービス コントラクト [WCF], データ転送" +ms.assetid: 7c5a26c8-89c9-4bcb-a4bc-7131e6d01f0c +caps.latest.revision: 38 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 38 +--- +# サービス コントラクトでのデータ転送の指定 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、一種のメッセージング インフラストラクチャと考えることができます。サービス操作では、メッセージを受信し、それらのメッセージを処理し、送信することができます。メッセージは、操作コントラクトを使用して記述されます。たとえば、次のようなコントラクトがあるとします。 + +```csharp +[ServiceContract] +public interface IAirfareQuoteService +{ + [OperationContract] + float GetAirfare(string fromCity, string toCity); +} +``` + +```vb + +Public Interface IAirfareQuoteService + + + Function GetAirfare(fromCity As String, toCity As String) As Double +End Interface +``` + + この場合、`GetAirfare` 操作では、`fromCity` と `toCity` に関する情報を含むメッセージを受け入れ、数値を含むメッセージを返します。 + + ここでは、操作コントラクトでメッセージを記述するさまざまな方法について説明します。 + +## パラメーターを使用したメッセージの記述 + メッセージを記述する最も簡単な方法は、パラメーター リストと戻り値を使用することです。前の例では、`fromCity` と `toCity` の 2 つの文字列パラメーターを使用して要求メッセージを記述し、float 型の戻り値を使用して応答メッセージを記述しました。戻り値だけでは応答メッセージを記述できない場合は、out パラメーターを使用できます。たとえば、次の操作は、`fromCity` と `toCity` を要求メッセージに含め、数値と通貨を応答メッセージに含めます。 + +```csharp +[OperationContract] +float GetAirfare(string fromCity, string toCity, out string currency); +``` + +```vb + + Function GetAirfare(fromCity As String, toCity As String) As Double +``` + + また、参照パラメーターを使用すると、要求メッセージと応答メッセージの両方のパラメーター部分を作成できます。パラメーターは、シリアル化 \(XML への変換\) が可能な型にする必要があります。既定では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、 クラスというコンポーネントを使用してこの変換を実行します。ほとんどのプリミティブ型 \(`int`、`string`、`float`、`DateTime` など\) がサポートされます。ユーザー定義型には、通常、データ コントラクトが存在する必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md). + +``` +public interface IAirfareQuoteService +{ + [OperationContract] + float GetAirfare(Itinerary itinerary, DateTime date); + + [DataContract] + public class Itinerary + { + [DataMember] + public string fromCity; + [DataMember] + public string toCity; + } +} +``` + +```vb +Public Interface IAirfareQuoteService + + GetAirfare(itinerary as Itinerary, date as DateTime) as Double + + + Class Itinerary + + + Public fromCity As String + + Public toCity As String + End Class +End Interface + +``` + + 場合によっては、使用する型のシリアル化に `DataContractSerializer` が適さないことがあります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、代替のシリアル化エンジンとして をサポートしているため、パラメーターのシリアル化にこれを使用することもできます。 では、`XmlAttributeAttribute` などの属性を使用することによって、結果の XML をより細かく制御できます。特定の操作やサービス全体で を使用するように切り替えるには、 属性を操作またはサービスに適用します。次に例を示します。 + +```csharp +[ServiceContract] +public interface IAirfareQuoteService +{ + [OperationContract] + [XmlSerializerFormat] + float GetAirfare(Itinerary itinerary, DateTime date); +} +public class Itinerary +{ + public string fromCity; + public string toCity; + [XmlAttribute] + public bool isFirstClass; +} + +``` + +```vb + +Public Interface IAirfareQuoteService + + + GetAirfare(itinerary as Itinerary, date as DateTime) as Double + +End Interface + +Class Itinerary + + Public fromCity As String + Public toCity As String + + Public isFirstClass As Boolean +End Class + +``` + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [XmlSerializer クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-xmlserializer-class.md).「XmlSerializer の使用」で説明するような明確な理由がある場合を除き、ここで示す への手動での切り替えはお勧めしません。 + + .NET パラメーター名をコントラクト名から分離するには、 属性を使用し、`Name` プロパティを使用してコントラクト名を設定します。たとえば、次の操作コントラクトは、このトピックの最初の例に相当します。 + +```csharp +[OperationContract] +public float GetAirfare( + [MessageParameter(Name="fromCity")] string originCity, + [MessageParameter(Name="toCity")] string destinationCity); + +``` + +```vb + + Function GetAirfare( fromCity As String, toCity As String) As Double + +``` + +## 空のメッセージの記述 + 空の要求メッセージを記述するには、入力パラメーターや参照パラメーターを一切指定しません。C\# の場合: + + `[OperationContract]` + + `public int GetCurrentTemperature();` + + VB の場合: + + `` + + `Function GetCurrentTemperature() as Integer` + + 空の応答メッセージを記述するには、戻り値の型として `void` を指定し、出力パラメーターや参照パラメーターを一切指定しません。たとえば: + +```csharp +[OperationContract] +public void SetTemperature(int temperature); + +``` + +```vb + +Sub SetTemperature(temperature As Integer) + +``` + + これは、次のような一方向操作コントラクトと異なります。 + +```csharp +[OperationContract(IsOneWay=true)] +public void SetLightbulbStatus(bool isOn); + +``` + +```vb + +Sub SetLightbulbStatus(isOne As Boolean) + +``` + + `SetTemperatureStatus` 操作は空のメッセージを返します。入力メッセージの処理中にエラーが発生した場合は、代わりにエラーを返す可能性があります。`SetLightbulbStatus` 操作は何も返しません。この操作からエラー状態を伝達することはできません。 + +## メッセージ コントラクトを使用したメッセージの記述 + 1 つの型を使用してメッセージ全体を表現する場合があります。この場合、データ コントラクトを使用することもできますが、メッセージ コントラクトを使用する方法をお勧めします。この方法を使用すると、結果の XML での不要なレベルのラップを回避できます。さらに、メッセージ コントラクトを使用すると、結果のメッセージをより細かく制御できます。たとえば、メッセージの本文とヘッダーに含める情報をそれぞれ決めることができます。次に、メッセージ コントラクトの使用例を示します。 + +```csharp +[ServiceContract] +public interface IAirfareQuoteService +{ + [OperationContract] + GetAirfareResponse GetAirfare(GetAirfareRequest request); +} + +[MessageContract] +public class GetAirfareRequest +{ + [MessageHeader] public DateTime date; + [MessageBodyMember] public Itinerary itinerary; +} + +[MessageContract] +public class GetAirfareResponse +{ + [MessageBodyMember] public float airfare; + [MessageBodyMember] public string currency; +} + +[DataContract] +public class Itinerary +{ + [DataMember] public string fromCity; + [DataMember] public string toCity; +} + +``` + +```vb + +Public Interface IAirfareQuoteService + + Function GetAirfare(request As GetAirfareRequest) As GetAirfareResponse +End Interface + + +Public Class GetAirfareRequest + + Public Property date as DateTime + + Public Property itinerary As Itinerary +End Class + + +Public Class GetAirfareResponse + + Public Property airfare As Double + Public Property currency As String +End Class + + +Public Class Itinerary + Public Property fromCity As String + Public Property toCity As String +End Class + +``` + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [メッセージ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-message-contracts.md). + + 前の例でも クラスが既定で使用されます。メッセージ コントラクトで、 クラスを使用することもできます。これを行うには、操作またはコントラクトに 属性を適用し、メッセージ ヘッダーと本文メンバーで クラスと互換性のある型を使用します。 + +## ストリームを使用したメッセージの記述 + 操作でメッセージを記述する場合は、 クラスまたはその派生クラスを操作コントラクトで使用したり、メッセージ コントラクト本文メンバー \(この場合、唯一のメンバーである必要があります\) として使用したりする方法もあります。受信メッセージの場合、型は `Stream` である必要があり、派生クラスを使用することはできません。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、シリアライザーを呼び出す代わりに、ストリームからデータを取得して送信メッセージに直接配置するか、受信メッセージからデータを取得してストリームに直接配置します。次に、ストリームの使用例を示します。 + +```csharp +[OperationContract] +public Stream DownloadFile(string fileName); + +``` + +```vb + +Function DownloadFile(fileName As String) As String + +``` + + 1 つのメッセージ本文で `Stream` と非ストリーム データを組み合わせることはできません。追加データをメッセージ ヘッダーに配置するには、メッセージ コントラクトを使用します。操作コントラクトを定義するときのストリームの不適切な使用例を次に示します。 + +```csharp +//Incorrect: +// [OperationContract] +// public void UploadFile (string fileName, Stream fileData); + +``` + +```vb +'Incorrect: + ' + Public Sub UploadFile(fileName As String, fileData As StreamingContext) + +``` + + 操作コントラクトを定義するときのストリームの正しい使用例を次に示します。 + +```csharp +[OperationContract] +public void UploadFile (UploadFileMessage message); +//code omitted +[MessageContract] +public class UploadFileMessage +{ + [MessageHeader] public string fileName; + [MessageBodyMember] public Stream fileData; +} + +``` + +```vb + +Public Sub UploadFile(fileName As String, fileData As StreamingContext) +'Code Omitted + +Public Class UploadFileMessage + + Public Property fileName As String + + Public Property fileData As Stream +End Class + +``` + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [大規模データとストリーミング](../../../../docs/framework/wcf/feature-details/large-data-and-streaming.md). + +## メッセージ クラスの使用 + 送受信されるメッセージをプログラムによって完全に制御するには、次のコード例に示すように クラスを直接使用します。 + +```csharp +[OperationContract] +public void LogMessage(Message m); + +``` + +```vb + +Sub LogMessage(m As Message) + +``` + + これは高度なシナリオです。詳細については、「[メッセージ クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-message-class.md)」を参照してください。 + +## エラー メッセージの記述 + 一方向ではない操作では、戻り値と出力パラメーターまたは参照パラメーターによって記述されるメッセージに加え、通常の応答メッセージとエラー メッセージの少なくとも 2 つのメッセージを返すことができます。たとえば、次の操作コントラクトがあるとします。 + +```csharp +[OperationContract] +float GetAirfare(string fromCity, string toCity, DateTime date); + +``` + +```vb + +Function GetAirfare(fromCity As String, toCity As String, date as DateTime) + +``` + + この操作は、`float` 型の数値を含む通常のメッセージか、エラー コードと説明を含むエラー メッセージのいずれかを返すことができます。これは、サービス実装で をスローすることによって実現できます。 + + 属性を使用すると、追加のエラー メッセージを指定できます。追加のエラーは、次のコード例に示すように、 を使用してシリアル化できる必要があります。 + +```csharp +[OperationContract] +[FaultContract(typeof(ItineraryNotAvailableFault))] +float GetAirfare(string fromCity, string toCity, DateTime date); + +//code omitted + +[DataContract] +public class ItineraryNotAvailableFault +{ + [DataMember] + public bool IsAlternativeDateAvailable; + + [DataMember] + public DateTime alternativeSuggestedDate; +} + +``` + +```vb + + +Function GetAirfare(fromCity As String, toCity As String, date as DateTime) As Double + +'Code Omitted + +Public Class + + Public Property IsAlternativeDateAvailable As Boolean + + Public Property alternativeSuggestedDate As DateTime +End Class + +``` + + これらの追加エラーは、適切なデータ コントラクト型の をスローすることによって生成できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][例外とエラーの処理](../../../../docs/framework/wcf/extending/handling-exceptions-and-faults.md). + + クラスを使用してエラーを記述することはできません。 は、エラー コントラクトに影響を及ぼしません。 + +## 派生型の使用 + 操作コントラクトやメッセージ コントラクトで基本型を使用し、その後、実際に操作を呼び出すときに派生型を使用する場合があります。この場合、 属性または何らかの代替機構を使用して、派生型を使用できるようにする必要があります。次の操作があるとします。 + +```csharp +[OperationContract] +public bool IsLibraryItemAvailable(LibraryItem item); + +``` + +```vbs + + Function IsLibraryItemAvailable(item As LibraryItem) As Boolean + +``` + + `LibraryItem` から派生する `Book` と `Magazine` の 2 つの型があると想定します。`IsLibraryItemAvailable` 操作でこれらの型を使用するには、操作を次のように変更します。 + + `[OperationContract]` + + `[ServiceKnownType(typeof(Book))]` + + `[ServiceKnownType(typeof(Magazine))]` + + `public bool IsLibraryItemAvailable(LibraryItem item);` + + 既定の を使用している場合は、次のコード例に示すように 属性を使用できます。 + +```csharp + +[OperationContract] +public bool IsLibraryItemAvailable(LibraryItem item); + +// code omitted + +[DataContract] +[KnownType(typeof(Book))] +[KnownType(typeof(Magazine))] +public class LibraryItem +{ + //code omitted +} + +``` + +```vb + +Function IsLibraryItemAvailable(item As LibraryItem) As Boolean + +'Code Omitted + + + +Public Class LibraryItem + 'Code Omitted +End Class + +``` + + を使用する場合は、 属性を使用できます。 + + 属性は、操作に適用することもサービス全体に適用することもできます。この属性は、 属性と同様に、型を受け取るか、既知の型の一覧を取得するために呼び出すメソッドの名前を受け取ります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md). + +## Use と Style の指定 + Web サービス記述言語 \(WSDL: Web Services Description Language\) を使用してサービスを記述するときは、一般にドキュメントとリモート プロシージャ コール \(RPC: Remote Procedure Call\) の 2 つのスタイルが使用されます。ドキュメント スタイルでは、スキーマを使用してメッセージ本文全体が記述されます。WSDL では、該当するスキーマの中の要素を参照して、メッセージ本文のさまざまな部分を記述します。RPC スタイルでは、WSDL は、要素ではなく、メッセージの各部を表すスキーマ型を参照します。場合によっては、これらのスタイルのいずれかを手動で選択することが必要になります。これを行うには、 属性を適用し、`Style` プロパティを設定するか \( を使用している場合\)、 属性の `Style` を設定します \( を使用している場合\)。 + + また、 はシリアル化された XML の形式を 2 とおり \(`Literal` および `Encoded`\) サポートしています。`Literal` は最も一般に受け入れられたフォームであり、 がサポートする唯一のフォームです。`Encoded` は SOAP 仕様のセクション 5 に記載されたレガシ フォームであり、新しいサービスにはお勧めしません。`Encoded` モードに切り替えるには、 属性の `Use` プロパティを `Encoded` に設定します。 + + ほとんどの場合、`Style` プロパティと `Use` プロパティの既定の設定は変更しないでください。 + +## シリアル化プロセスの制御 + データをシリアル化する方法をカスタマイズする場合、さまざまな設定を行うことができます。 + +### サーバーのシリアル化設定の変更 + 既定の を使用している場合は、 属性をサービスに適用することで、サービスでのシリアル化プロセスの一部の側面を制御できます。具体的には、`MaxItemsInObjectGraph` プロパティを使用して、 が逆シリアル化するオブジェクトの最大数を制限するクォータを設定できます。また、`IgnoreExtensionDataObject` プロパティを使用すると、ラウンド トリップ バージョン管理機能を無効にできます。クォータ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[セキュリティに関するデータの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-for-data.md)」を参照してください。ラウンドトリップ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[上位互換性のあるデータ コントラクト](../../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md)」を参照してください。 + +```csharp + +[ServiceBehavior(MaxItemsInObjectGraph=100000)] +public class MyDataService:IDataService +{ + public DataPoint[] GetData() + { + // Implementation omitted + } +} +``` + +```vb + + +Public Class MyDataService Implements IDataService + + Function GetData() As DataPoint() + ‘ Implementation omitted + End Function +End Interface + +``` + +### シリアル化の動作 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、特定の操作で使用しているシリアライザーに応じて自動的にプラグインされる、 の 2 つの動作が用意されています。これらの動作は自動的に適用されるため、通常、これらの動作を意識する必要はありません。 + + ただし、`DataContractSerializerOperationBehavior` には、`MaxItemsInObjectGraph`、`IgnoreExtensionDataObject`、および `DataContractSurrogate` の 3 つのプロパティがあり、これらを使用してシリアル化プロセスをカスタマイズできます。最初の 2 つのプロパティの意味は、前のセクションの説明と同じです。`DataContractSurrogate` プロパティを使用すると、シリアル化プロセスをカスタマイズおよび拡張するための強力な機構であるデータ コントラクト サロゲートを有効にできます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][データ コントラクト サロゲート](../../../../docs/framework/wcf/extending/data-contract-surrogates.md). + + `DataContractSerializerOperationBehavior` を使用すると、クライアントとサーバーの両方のシリアル化をカスタマイズできます。クライアントで `MaxItemsInObjectGraph` クォータを増やす方法を次の例に示します。 + +```csharp +ChannelFactory factory = new ChannelFactory(binding, address); +foreach (OperationDescription op in factory.Endpoint.Contract.Operations) +{ + DataContractSerializerOperationBehavior dataContractBehavior = + op.Behaviors.Find() + as DataContractSerializerOperationBehavior; + if (dataContractBehavior != null) + { + dataContractBehavior.MaxItemsInObjectGraph = 100000; + } +} +IDataService client = factory.CreateChannel(); + +``` + +```vb +Dim factory As ChannelFactory(Of IDataService) = New ChannelFactory(Of IDataService)(binding, address) +For Each op As OperationDescription In factory.Endpoint.Contract.Operations + Dim dataContractBehavior As DataContractSerializerOperationBehavior = op.Behaviors.Find(Of DataContractSerializerOperationBehavior)() + If dataContractBehavior IsNot Nothing Then + dataContractBehavior.MaxItemsInObjectGraph = 100000 + End If + Next + Dim client As IDataService = factory.CreateChannel + +``` + + 自己ホスト型サービスでの同等のコードを次に示します。 + +```csharp +ServiceHost serviceHost = new ServiceHost(typeof(IDataService)) +foreach (ServiceEndpoint ep in serviceHost.Description.Endpoints) +{ +foreach (OperationDescription op in ep.Contract.Operations) +{ + DataContractSerializerOperationBehavior dataContractBehavior = + op.Behaviors.Find() + as DataContractSerializerOperationBehavior; + if (dataContractBehavior != null) + { + dataContractBehavior.MaxItemsInObjectGraph = 100000; + } +} +} +serviceHost.Open(); + +``` + +```vb +Dim serviceHost As ServiceHost = New ServiceHost(GetType(IDataService)) + For Each ep As ServiceEndpoint In serviceHost.Description.Endpoints + For Each op As OperationDescription In ep.Contract.Operations + Dim dataContractBehavior As DataContractSerializerOperationBehavior = op.Behaviors.Find(Of DataContractSerializerOperationBehavior)() + + If dataContractBehavior IsNot Nothing Then + dataContractBehavior.MaxItemsInObjectGraph = 100000 + End If + Next + Next + serviceHost.Open() + +``` + + Web ホスト型の場合は、新しい `ServiceHost` 派生クラスを作成し、サービス ホスト ファクトリを使用してプラグインする必要があります。 + +### 構成でのシリアル化設定の制御 + 次の例に示すように、`MaxItemsInObjectGraph` と `IgnoreExtensionDataObject` は、`dataContractSerializer` エンドポイントまたはサービスの動作を使用して構成によって制御できます。 + +``` + + + + + + + + + + + + + + + +``` + +### 共有する型のシリアル化、オブジェクト グラフの保存、およびカスタム シリアライザー + は、.NET 型名ではなく、データ コントラクト名を使用してシリアル化を実行します。これは、サービス指向アーキテクチャの基本思想と一致しており、高度な柔軟性の実現を可能にします。つまり、ネットワーク コントラクトに影響を及ぼさずに .NET 型を変更できます。まれなケースとして、実際の .NET 型名をシリアル化することにより、.NET Framework リモート処理テクノロジと同様のクライアントとサーバー間の密結合を導入することが必要になる場合があります。.NET Framework リモート処理から [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] への移行時に発生するまれなケースを除き、これはお勧めしません。この場合、 クラスではなく、 クラスを使用する必要があります。 + + は、通常、オブジェクト グラフをオブジェクト ツリーとしてシリアル化します。つまり、同じオブジェクトが複数回にわたって参照される場合、そのオブジェクトは複数回にわたってシリアル化されます。たとえば、`billTo` および `shipTo` という、Address 型の 2 つのフィールドを持つ `PurchaseOrder` インスタンスがあるとします。この両方のフィールドに同じ Address インスタンスを設定すると、シリアル化および逆シリアル化の後に 2 つの同一の Address インスタンスが生じます。これは、オブジェクト グラフを XML で表現する相互運用可能な標準の方法がないためです \(ただし、`Style` と `Use` に関する前のセクションで説明した で使用できる従来の SOAP エンコード標準を除きます\)。オブジェクト グラフをツリーとしてシリアル化する場合、循環参照が含まれたグラフをシリアル化できないなどの欠点があります。場合によっては、相互運用が可能ではありませんが、真のオブジェクト グラフ シリアル化に切り替えることが必要になります。これを行うには、`preserveObjectReferences` パラメーターを `true` に設定して構築した を使用します。 + + シナリオによっては、組み込みのシリアライザーでは不十分な場合があります。ただし、ほとんどの場合、 の派生元である 抽象クラスを使用できます。 + + 前述の 3 つのケース \(.NET 型の保存、オブジェクト グラフの保存、および `XmlObjectSerializer` ベースの完全なカスタム シリアル化\) では、必ずカスタム シリアライザーをプラグインする必要があります。これを行うには、次の手順を実行します: + +1. から派生する独自の動作を記述します。 + +2. 独自のシリアライザー \(、`preserveObjectReferences` が `true` に設定された 、独自のカスタム のいずれか\) を返すように 2 つの `CreateSerializer` メソッドをオーバーライドします。 + +3. サービス ホストを開いたり、クライアント チャネルを作成したりする前に、既存の 動作を削除し、前の手順で作成したカスタム派生クラスをプラグインします。 + + シリアル化の高度な概念[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[シリアル化と逆シリアル化](../../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md)」を参照してください。 + +## 参照 + [XmlSerializer クラスの使用](../../../../docs/framework/wcf/feature-details/using-the-xmlserializer-class.md) + [方法 : ストリーミングを有効にする](../../../../docs/framework/wcf/feature-details/how-to-enable-streaming.md) + [方法 : クラスまたは構造体に基本的なデータ コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-data-contract-for-a-class-or-structure.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/stand-alone-json-serialization.md b/docs/framework/wcf/feature-details/stand-alone-json-serialization.md new file mode 100644 index 00000000000..9a5284ade1b --- /dev/null +++ b/docs/framework/wcf/feature-details/stand-alone-json-serialization.md @@ -0,0 +1,271 @@ +--- +title: "スタンドアロン JSON のシリアル化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 312bd7b2-1300-4b12-801e-ebe742bd2287 +caps.latest.revision: 32 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 32 +--- +# スタンドアロン JSON のシリアル化 +JSON \(JavaScript Object Notation\) は、ブラウザー内の Web ページで実行される JavaScript コードで使用するために特別に設計されたデータ形式です。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] で作成される ASP.NET AJAX サービスは、既定でこのデータ形式を使用します。 + + この形式は、ASP.NET と統合せずに AJAX サービスを作成する場合にも使用できます。この場合、XML が既定のデータ形式になりますが、JSON を選択することもできます。 + + JSON をサポートする必要はあっても AJAX サービスを作成する予定はない場合は、 を使用することで、.NET オブジェクトを JSON データに直接シリアル化したり、このようなデータを .NET 型のインスタンスに逆シリアル化したりできます。この手順の詳細については、「[方法 : JSON データをシリアル化および逆シリアル化する](../../../../docs/framework/wcf/feature-details/how-to-serialize-and-deserialize-json-data.md)」を参照してください。 + + JSON を使用する場合、一部例外はありますが、 でサポートされているものと同じ .NET 型 がサポートされます。サポートされる型の一覧については、「[データ コントラクト シリアライザーでサポートされる型](../../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md)」を参照してください。これには、ほとんどのプリミティブ型、ほとんどの配列型とコレクション型、 を使用する複合型などがあります。 + +## .NET 型から JSON 型へのマッピング + シリアル化および逆シリアル化の手順でマップされる場合の .NET 型と JSON\/JavaScript 型の対応表を次に示します。 + +|.NET 型|JSON\/JavaScript|注意| +|------------|----------------------|--------| +|すべての数値型 \( など\)|数値|`Double.NaN`、`Double.PositiveInfinity`、`Double.NegativeInfinity` などの特殊な値はサポートされていないため、無効な JSON になります。| +||数値|このトピックの「列挙体と JSON」を参照してください。| +||ブール|\-\-| +|,|文字列|\-\-| +|, , |文字列|JSON のこれらの型の形式は、XML の場合と同じです \(基本的には、TimeSpan は ISO 8601 の日付\/時刻形式、GUID は "12345678\-ABCD\-ABCD\-ABCD\-1234567890AB" 形式、URI は "http:\/\/www.example.com" のような自然な文字列形式です\)。正確な情報については、「[データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)」を参照してください。| +||文字列|形式は "name:namespace" です \(最初のコロンの前が名前です\)。名前または名前空間が存在しない場合があります。名前空間がない場合、コロンも省略されることがあります。| +| 型の|数値の配列型|各数値は、1 バイトの値を表します。| +||DateTime 型または文字列型|このトピックの「日付\/時刻と JSON」を参照してください。| +||複合型|このトピックの「日付\/時刻と JSON」を参照してください。| +|XML 型および ADO.NET 型 \(

. の配列、

,

\).|文字列|このトピックの「XML 型と JSON」を参照してください。| +||空の複合型|\-\-| +|コレクション、ディクショナリ、および配列|配列|このトピックの「コレクション、ディクショナリ、および配列」を参照してください。| +|複合型 \( または が適用された型\)|複合型|データ メンバーは、JavaScript 複合型のメンバーになります。| +| インターフェイスを実装する複合型|複合型|他の複合型と同じですが、一部の 型はサポートされません。このトピックの「高度な情報」の「ISerializable のサポート」を参照してください。| +|任意の型の `Null` 値|null|null 許容型もサポートされており、null 非許容型と同様に JSON にマップされます。| + +### 列挙体と JSON + 列挙メンバー値は、JSON では数値として処理されるため、列挙メンバー値がメンバー名として含まれているデータ コントラクトでの処理方法とは異なります。データ コントラクトでの処理[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[データ コントラクトの列挙型](../../../../docs/framework/wcf/feature-details/enumeration-types-in-data-contracts.md)」を参照してください。 + +- たとえば、`public enum Color {red, green, blue, yellow, pink}` の場合、`yellow` をシリアル化すると、文字列の "yellow" ではなく、数字の 3 が生成されます。 + +- `enum` のメンバーはすべて、シリアル化できます。 属性と 属性は、使用しても無視されます。 + +- 存在しない `enum` 値を逆シリアル化できます。たとえば、値 87 に対応する色の名前が定義されていなくても、この値を上記の Color 列挙値に逆シリアル化できます。 + +- フラグ `enum` は特殊ではなく、他の `enum` と同様に処理されます。 + +### 日付時刻 とJSON + JSON 形式では、日付と時刻を直接サポートしていません。ただし、日付と時刻は使用されることが非常に多いため、ASP.NET AJAX ではこれらの型を特別にサポートしています。ASP.NET AJAX プロキシを使用する場合、.NET の 型は JavaScript の `DateTime` 型に完全に対応します。 + +- ASP.NET を使用しない場合、JSON では、 型はこのトピックの「高度な情報」で説明する特殊な形式の文字列として表されます。 + +- JSON では、 が複合型 {"DateTime":dateTime,"OffsetMinutes":offsetMinutes} として表現されます。`offsetMinutes` メンバーは、当該イベントの場所に関連付けられたグリニッジ標準時 \(GMT\) \(協定世界時 \(UTC\) とも呼ばれます\) からの現地時刻のオフセットです。`dateTime` メンバーは、当該イベントが発生した時点のインスタンスを表します \(この場合も、ASP.NET AJAX を使用しているときは JavaScript の `DateTime` になり、使用していないときは文字列になります\)。シリアル化時には、`dateTime` メンバーは常に GMT でシリアル化されます。したがって、ニューヨーク時間の午前 3 時を示す場合、`dateTime` の時刻コンポーネントは 8:00 AM であり、`offsetMinutes` は 300 \(GMT マイナス 300 分 \(5 時間\)\) です。 + + > [!NOTE] + > オブジェクトと オブジェクトを JSON にシリアル化した場合、ミリ秒の精度までしか情報は保持されません。1 ミリ秒未満の値 \(マイクロ秒\/ナノ秒\) は、シリアル化時に失われます。 + +### XML 型と JSON + XML 型は JSON 文字列になります。 + +- たとえば、XElement 型のデータ メンバー "q" が \ を含む場合、JSON は {"q":"\"} になります。 + +- XML のラップ方法を指定する特別なルールがいくつかあります。詳細については、このトピックで後述する「高度な情報」を参照してください。 + +- ASP.NET AJAX を使用している場合に、JavaScript で文字列ではなく XML DOM を使用するときは、 プロパティを XML に設定するか、 プロパティを XML に設定します。 + +### コレクション、ディクショナリ、および配列 + コレクション、ディクショナリ、および配列は、JSON ではすべて配列として表されます。 + +- を使用するカスタマイズは、JSON 表現では無視されます。 + +- ディクショナリは、直接 JSON を操作する手段ではありません。ディクショナリの \ は、他の JSON テクノロジの使用方法から予想されるように [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされていない場合があります。たとえば、ディクショナリで "abc" が "xyz" にマップされ、"def" が 42 にマップされている場合、JSON 表現では {"abc":"xyz","def":42} ではなく、\[{"Key":"abc","Value":"xyz"},{"Key":"def","Value":42}\] になります。 + +- JSON を直接使用する \(厳密なコントラクトをあらかじめ定義せずに、キーと値に動的にアクセスする\) 場合、いくつかのオプションがあります。 + + - 「[弱い型指定の JSON のシリアル化 \(AJAX\)](../../../../docs/framework/wcf/samples/weakly-typed-json-serialization-sample.md)」のサンプルを使用することを検討します。 + + - インターフェイスと逆シリアル化コンストラクターを使用することを検討します。この 2 つの機構を使用すると、シリアル化と逆シリアル化の実行時にそれぞれ JSON のキーと値のペアにアクセスできます。ただし、これらの機構は、部分信頼シナリオでは機能しません。 + + - シリアライザーを使用するのではなく、[JSON と XML 間のマッピング](../../../../docs/framework/wcf/feature-details/mapping-between-json-and-xml.md)を使用することを検討します。 + + - シリアル化のコンテキストにおける *"ポリモーフィズム"* は、基本型が必要な場合に派生型をシリアル化できることを指します。コレクションをポリモーフィックに使用する場合は \(コレクションを に割り当てる場合など\)、JSON 固有の特別なルールがあります。この問題については、後の「高度な情報」で詳しく説明します。 + +## 追加の詳細情報 + +### データ メンバーの順序 + JSON を使用する際、データ メンバーの順序は重要ではありません。具体的には、 が設定されていても、JSON データを任意の順序で逆シリアル化できます。 + +### JSON の型 + JSON の型は、逆シリアル化時には前述の表と一致する必要はありません。たとえば、`Int` は通常 JSON の数値にマップされますが、JSON 文字列に有効な数値が含まれていれば、その文字列から正常に逆シリアル化することもできます。つまり、"q" という `Int` データ メンバーが存在する場合は、{"q":42} も {"q":"42"} も有効です。 + +### ポリモーフィズム + ポリモーフィックなシリアル化は、基本型が必要な場合に派生型をシリアル化できることで成り立ちます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] による JSON シリアル化でこれがサポートされているのは、XML シリアル化がサポートされている方法と互換性がある場合です。たとえば、`MyBaseType` が必要な場合に `MyDerivedType` をシリアル化したり、`Object` が必要な場合に `Int` をシリアル化したりできます。 + + 複合型を逆シリアル化する場合を除き、基本型が必要な場合に派生型を逆シリアル化すると、型情報が失われることがあります。たとえば、 が必要な場合に をシリアル化すると、JSON 文字列になります。この文字列を に逆シリアル化した場合、.NET の が返されます。デシリアライザーは、この文字列が最初は 型であったことを認識していません。通常、 を必要とするときに、すべての JSON 文字列が .NET 文字列として逆シリアル化されます。また、.NET のコレクション、ディクショナリ、および配列のシリアル化に使用するすべての JSON 配列は、実際の元の型に関係なく、 型の .NET として逆シリアル化されます。JSON のブール型は .NET の にマップされます。ただし、 が必要な場合、JSON の数値型は .NET の 、または の型として逆シリアル化されます。この場合、最も適切な型が自動的に選択されます。 + + インターフェイス型に逆シリアル化する場合、 は、宣言された型がオブジェクトである場合と同様に逆シリアル化します。 + + 独自の基本型と派生型を使用している場合は、通常、、または同等の機構を使用する必要があります。たとえば、戻り値が `Animal` である操作があり、実際には \(`Animal` から派生した\) `Cat` のインスタンスを返す場合、 を `Animal` 型に適用するか、 を操作に適用し、これらの属性で `Cat` 型を指定する必要があります。詳細については、「[既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください。 + + ポリモーフィックなシリアル化のしくみの詳細、およびポリモーフィックなシリアル化を使用するときに留意する必要のある制限事項については、このトピックで後述する「高度な情報」を参照してください。 + +### バージョン管理 + インターフェイスをはじめとするデータ コントラクトのバージョン管理機能は、JSON で完全にサポートされています。また、ほとんどの場合、ある形式 \(XML など\) で型を逆シリアル化した後、その型を別の形式 \(JSON など\) にシリアル化しても、 にデータを保持できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][上位互換性のあるデータ コントラクト](../../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md).JSON は順序なしであるため、順序情報は失われることに注意してください。また、JSON では、同じキー名を持つ複数のキーと値のペアをサポートしていません。 でのすべての操作は、本質的にポリモーフィックです。つまり、派生型はすべての型の基本型である に割り当てられます。 + +## URL 内の JSON + \( 属性を使用して\) HTTP GET 動詞と共に ASP.NET AJAX エンドポイントを使用する場合、受信パラメーターは、メッセージ本文ではなく要求 URL に配置されます。JSON は、要求 URL 内でもサポートされます。そのため、"number" という `Int` 型と "p" という `Person` 複合型を取得する操作がある場合、次のような URL になります。 + +``` +http://example.com/myservice.svc/MyOperation?number=7&p={"name":"John","age":42} +``` + + ASP.NET AJAX Script Manager コントロールとプロキシを使用してサービスを呼び出すと、この URL はプロキシによって自動的に生成されるため、確認することはできません。JSON は、ASP.NET AJAX エンドポイントを使用しない URL では使用できません。 + +## 高度な情報 + +### ISerializable のサポート + +#### サポートされる ISerializable 型とサポートされない ISerializable 型 + 通常、JSON をシリアル化または逆シリアル化するときに、 インターフェイスを実装する型は完全にサポートされています。ただし、これらの型の一部 \(一部の .NET Framework 型を含みます\) は、次のような JSON 固有のシリアル化の側面が原因で正しく逆シリアル化されない方法で実装されています。 + +- では、個々のデータ メンバーの型は事前にはわかりません。このため、型をオブジェクトに逆シリアル化する場合と同様のポリモーフィックな状況になります。前述のように、これは JSON で型情報が失われる原因となる場合があります。たとえば、 実装で `enum` をシリアル化した型を \(適切にキャストせずに\) `enum` に直接逆シリアル化しようとした場合、逆シリアル化は失敗します。これは、`enum` は JSON の数値型を使用してシリアル化されますが、JSON の数値型は .NET の組み込みの数値型 \(Int32、Decimal、または Double\) に逆シリアル化されるためです。そのため、この数値が `enum` 値を表すために使用されているという情報が失われます。 + +- 型が逆シリアル化コンストラクターで特定の順序の逆シリアル化に依存する場合も、一部の JSON データの逆シリアル化に失敗する場合があります。これは、ほとんどの JSON シリアライザーが特定の順序を保証しないためです。 + +#### ファクトリ型 + インターフェイスは JSON で一般にサポートされますが、"ファクトリ型" 機能 \( から、このインターフェイスを実装する型とは異なる型のインスタンスを返す機能\) を必要とする型はサポートされません。 + +### DateTime ワイヤ形式 + 値は、"\/Date\(700000\+0500\)\/" 形式の JSON 文字列として表されます。ここで、最初の数値 \(この例では 700000\) は GMT タイム ゾーンのミリ秒数であり、1970 年 1 月 1 日午前 0 時以降の \(夏時間ではなく\) 通常時間です。これより前の時間を表すために、この数値が負の値になる場合があります。この例の "\+0500" で構成される部分は省略可能であり、 の時刻を示します。つまり、逆シリアル化時にローカル タイム ゾーンに変換される必要があります。この部分が指定されていない場合、時刻は として逆シリアル化されます。実際の数値 \(この例では "0500"\) と記号 \(\+ または \-\) は無視されます。 + + をシリアル化すると、 の時刻はオフセットして書き込まれ、 はオフセットせずに書き込まれます。 + + ASP.NET AJAX クライアントの JavaScript コードにより、このような文字列は JavaScript の `DateTime` インスタンスに自動的に変換されます。類似する形式で .NET の 型ではない他の文字列が存在する場合、これらの文字列も変換されます。 + + 変換は、文字 "\/" をエスケープする場合 \(つまり、JSON が "\\\/Date\(700000\+0500\)\\\/" のような場合\) にのみ実行されます。このため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の JSON エンコーダー \( によって有効になります\) は、文字 "\/" を常にエスケープします。 + +### JSON 文字列内の XML + +#### XmlElement + は、ラップされずにそのままの状態でシリアル化されます。たとえば、\ を含む 型のデータ メンバー "x" は、次のように表されます。 + +``` +{"x":""} +``` + +#### XmlNode の配列 + 型の オブジェクトは、この型の標準のデータ コントラクト名前空間にある ArrayOfXmlNode という要素にラップされます。"x" が、"value" と空の要素ノード "M" を含む名前空間 "ns" にある、属性ノード "N" を含む配列である場合、次のように表されます。 + +``` +{"x":""} +``` + + XmlNode 配列の先頭 \(他の要素の前\) にある空の名前空間の属性はサポートされません。 + +#### XElement と DataSet を含む IXmlSerializable 型 + 型は、"コンテンツ型"、"DataSet 型"、および "要素型" に細分化されます。これらの型の定義については、「[データ コントラクトの XML および ADO.NET の種類](../../../../docs/framework/wcf/feature-details/xml-and-ado-net-types-in-data-contracts.md)」を参照してください。 + + "コンテンツ" 型と "DataSet" 型は、前のセクションで説明した オブジェクトと同様にシリアル化されます。これらの型は、その型のデータ コントラクトの名前と名前空間に対応する名前と名前空間を持つ要素にラップされます。 + + などの "要素" 型は、このトピックで既に説明した と同様に、そのままの状態でシリアル化されます。 + +### ポリモーフィズム + +#### 型情報の保持 + 前述のように、ポリモーフィズムは JSON でサポートされていますが、いくつかの制限があります。JavaScript は厳密に型指定されていない言語であるため、通常、型 ID は問題ではありません。ただし、JSON を使用して厳密に型指定されたシステム \(.NET\) と厳密に型指定されていないシステム \(JavaScript\) 間で通信する場合、型 ID を保持していると役立ちます。たとえば、"Square" と "Circle" というデータ コントラクト名を持つ型が "Shape" というデータ コントラクト名を持つ型から派生したとします。"Circle" が .NET から JavaScript に送信され、後で "Shape" を必要とする .NET メソッドに返された場合、該当のオブジェクトが本来は "Circle" であったことが .NET 側でわかれば役立ちます。そうでない場合、派生型に固有の情報 \("Circle" のデータ メンバー "radius" など\) が失われることがあります。 + + 型 ID を保持するために、複合型を JSON にシリアル化するときに "型ヒント" を追加できます。デシリアライザーはこのヒントを認識し、適切に動作します。"型ヒント" は、JSON のキーと値のペアです。キー名は "\_\_type" です \(2 つのアンダースコアの後に "type" という語が続きます\)。値は、"DataContractName:DataContractNamespace" 形式の JSON 文字列です \(最初のコロンまでが名前です\)。前述の例の "Circle" は、次のようにシリアル化できます。 + +``` +{"__type":"Circle:http://example.com/myNamespace","x":50,"y":70,"radius":10} +``` + + 型ヒントは、XML スキーマ インスタンス標準で定義された `xsi:type` 属性によく似ており、XML をシリアル化または逆シリアル化するときに使用されます。 + + "\_\_type" というデータ メンバーは、型ヒントと競合する可能性があるため、禁止されています。 + +#### 型ヒントのサイズの削減 + JSON メッセージのサイズを縮小するために、既定のデータ コントラクト名前空間プレフィックス \(http:\/\/schemas.datacontract.org\/2004\/07\/\) は文字 "\#" に置き換えられます \(この置換を元に戻すことを可能にするために、エスケープ ルールが使用されます。名前空間が "\#" または "\\" で始まる場合、これらの文字に "\\" が追加されます\)。したがって、"Circle" が .NET の "MyApp.Shapes" 名前空間の型である場合、既定のデータ コントラクト名前空間は http:\/\/schemas.datacontract.org\/2004\/07\/MyApp になります。形状と JSON 表現は次のようになります。 + +``` +{"__type":"Circle:#MyApp.Shapes","x":50,"y":70,"radius":10} +``` + + 逆シリアル化時には、切り捨てられた名前 \(\#MyApp.Shapes\) と完全名 \(http:\/\/schemas.datacontract.org\/2004\/07\/MyApp.Shapes\) の両方が認識されます。 + +#### JSON オブジェクト内での型ヒントの位置 + JSON 表現では、型ヒントは最初に出現する必要があります。JSON の処理でキーと値のペアの順序が重要となるのはこの場合だけです。たとえば、型ヒントの次の指定方法は無効です。 + +``` +{"x":50,"y":70,"radius":10,"__type":"Circle:#MyApp.Shapes"} +``` + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が使用する と ASP.NET AJAX クライアント ページでは、いずれも型ヒントが常に最初に出力されます。 + +#### 複合型にのみ適用される型ヒント + 複合型以外の型の型ヒントを出力する方法はありません。たとえば、戻り値の型が である操作で Circle を返す場合、前に示したような JSON 表現が可能であり、型情報は保持されます。ただし、Uri が返される場合、JSON 表現は文字列であり、この文字列が Uri を表すために使用されているという情報は失われます。これは、プリミティブ型だけでなく、コレクションと配列にも適用されます。 + +#### 型ヒントが出力される状況 + 型ヒントにより、メッセージ サイズが大幅に増加することがあります \(これを軽減する 1 つの方法として、可能であれば短いデータ コントラクト名前空間を使用します\)。そのため、次のルールによって型ヒントを出力するかどうかが制御されます。 + +- ASP.NET AJAX を使用する場合、基本型と派生型の割り当てが存在しない場合でも \(Circle を Circle に割り当てる場合など\)、型ヒントは可能である限り常に出力されます \(これは、厳密に型指定されていない JSON 環境から厳密に型指定された .NET 環境への呼び出しプロセスにおいて、情報が予想外に失われることのないプロセスを完全に実現するために必要です\)。 + +- ASP.NET と統合せずに AJAX サービスを使用する場合、基本型と派生型の割り当てが存在する場合にのみ、型ヒントが出力されます。つまり、Circle を Shape または に割り当てるときは出力されますが、Circle に割り当てるときには出力されません。この場合、JavaScript クライアントを適切に実装するために必要な最小限の情報しか提供されないため、パフォーマンスは向上しますが、適切に設計されていないクライアントでの型情報の損失を防ぐことはできません。クライアントでこの問題に対処することを避ける必要がある場合は、サーバーで基本型と派生型の割り当てを一切行わないようにします。 + +- 型を使用する場合、`alwaysEmitTypeInformation` コンストラクター パラメーターを使用すると、上記の 2 つのモードのいずれかを選択できます。既定値は "`false`" \(必要な場合にのみ型情報を出力\) です。 + +#### 重複するデータ メンバー名 + 派生型情報は、基本型情報と共に同じ JSON オブジェクト内に存在しますが、任意の順序で出現する場合があります。たとえば、`Shape` は次のように表されることがあります。 + +``` +{"__type":"Shape:#MyApp.Shapes","x":50,"y":70} +``` + + Circle は、次のように表されることがあります。 + +``` +{"__type":"Circle:#MyApp.Shapes","x":50, "radius":10,"y":70} +``` + + 基本型 `Shape` にも "`radius`" というデータ メンバーが含まれている場合、シリアル化と逆シリアル化の両方で競合が発生することになります。これは、シリアル化では JSON オブジェクトは反復するキー名を持つことができないためであり、逆シリアル化では "radius" が `Shape.radius` と `Circle.radius` のどちらを参照しているかが不明確であるためです。そのため、データ コントラクト クラスでは、"プロパティの隠ぺい" \(基本クラスと派生クラスに同じ名前のデータ メンバーが存在する\) という概念は一般に推奨されていませんが、JSON では実際には禁止されています。 + +#### ポリモーフィズムと IXmlSerializable 型 + 型は、既知の型の要件を満たしている限り、通常のデータ コントラクト規則に従って、通常どおり相互にポリモーフィックな割り当てを行うことができます。ただし、 の代わりに 型をシリアル化すると、結果が JSON 文字列になるため、型情報が失われることになります。 + +#### ポリモーフィズムと一部のインターフェイス型 + ではないコレクション型以外の型 \( を除きます\) が必要な場合、コレクション型または を実装する型をシリアル化することは禁止されています。たとえば、`IMyInterface` というカスタム インターフェイスと、`int` 型の と `IMyInterface` の両方を実装する `MyType` 型があるとします。この場合、戻り値の型が `IMyInterface` である操作から、`MyType` を返すことは禁止されています。これは、`MyType` は JSON 配列としてシリアル化する必要があり、型ヒントを必要としますが、前述のように型ヒントを配列と共に含めることはできないためです。型ヒントを含めることができるのは、複合型を使用する場合だけです。 + +#### 既知の型と構成 + が使用する既知の型機構は、 の場合と同様にすべてサポートされます。両方のシリアライザーが同じ構成要素 \([\](../../../../docs/framework/configure-apps/file-schema/wcf/system-runtime-serialization.md) の [\](../../../../docs/framework/configure-apps/file-schema/wcf/datacontractserializer-of-system-runtime-serialization.md)\) を読み取って、構成ファイルを通じて追加された既知の型を検出します。 + +#### Object に割り当てられたコレクション + Object に割り当てられたコレクションは、 を実装するコレクションと同様にシリアル化されます。複合型の場合は、各エントリに型ヒントが含まれた JSON 配列になります。たとえば、 に割り当てられた `Shape` 型の は、次のようになります。 + +``` +[{"__type":"Shape:#MyApp.Shapes","x":50,"y":70}, +{"__type":"Shape:#MyApp.Shapes","x":58,"y":73}, +{"__type":"Shape:#MyApp.Shapes","x":41,"y":32}] +``` + + に逆シリアル化するときは、次の点に注意してください。 + +- `Shape` は、既知の型リストに含まれている必要があります。既知の型に含まれている `Shape` 型の があっても効果はありません。この場合、シリアル化時に `Shape` を既知の型に追加する必要はありません。これは、自動的に実行されます。 + +- コレクションは、`Shape` インスタンスを格納する 型の として逆シリアル化されます。 + +#### 基本コレクションに割り当てられた派生コレクション + 派生コレクションを基本コレクションに割り当てると、通常、そのコレクションは基本型のコレクションと同様にシリアル化されます。ただし、派生コレクションの項目の型を基本コレクションの項目の型に割り当てることができない場合は、例外がスローされます。 + +#### 型ヒントとディクショナリ + ディクショナリを に割り当てると、ディクショナリに含まれる Key および Value の各エントリは、 に割り当てられている場合と同様に処理され、型ヒントを取得します。 + + ディクショナリ型をシリアル化した場合、"Key" メンバーと "Value" メンバーを含む JSON オブジェクトは、`alwaysEmitTypeInformation` 設定の影響を受けません。オブジェクトに型ヒントが含まれるのは、前述のコレクション ルールで必要とされる場合だけです。 + +### JSON の有効なキー名 + シリアライザーは、有効な XML 名ではないキー名を XML エンコードします。たとえば、"123" という名前のデータ メンバーの場合、"123" は無効な XML 要素名 \(数字で始まる要素名\) であるため、"\_x0031\_\_x0032\_\_x0033\_" のような名前にエンコードされます。XML 名が有効ではない一部の国際文字セットでも、同様の状況が発生する場合があります。JSON 処理に対する XML のこの影響については、「[JSON と XML 間のマッピング](../../../../docs/framework/wcf/feature-details/mapping-between-json-and-xml.md)」を参照してください。 + +## 参照 + [JSON などのデータ転送形式のサポート](../../../../docs/framework/wcf/feature-details/support-for-json-and-other-data-transfer-formats.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/standard-endpoints.md b/docs/framework/wcf/feature-details/standard-endpoints.md new file mode 100644 index 00000000000..91bbcc86869 --- /dev/null +++ b/docs/framework/wcf/feature-details/standard-endpoints.md @@ -0,0 +1,203 @@ +--- +title: "標準エンドポイント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3fcb4225-addc-44f2-935d-30e4943a8812 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 標準エンドポイント +エンドポイントは、アドレス、バインディング、およびコントラクトを指定して定義します。エンドポイントに設定できるその他のパラメーターには、動作構成、ヘッダー、リッスン URI などがあります。特定の種類のエンドポイントでは、これらの値が変化しません。たとえば、メタデータ交換エンドポイントでは、常に コントラクトを使用します。 などのその他のエンドポイントでは、指定されたエンドポイント動作が必要です。一般的に使用されるエンドポイント プロパティの既定の値を設定することによって、エンドポイントの操作性を向上させることができます。開発者は、標準エンドポイントを使用して、既定値を持つエンドポイント、またはエンドポイントの 1 つ以上のプロパティが変化しないエンドポイントを定義できます。これらのエンドポイントによって、静的な性質の情報を指定する必要がないエンドポイントの使用が可能になります。標準エンドポイントは、インフラストラクチャ エンドポイントおよびアプリケーション エンドポイントに使用できます。 + +## インフラストラクチャ エンドポイント + サービスの作成者が明示的に実装していないいくつかのプロパティを持つエンドポイントを、サービスが公開することがあります。たとえば、メタデータ交換エンドポイントは コントラクトを公開しますが、そのインターフェイスを実装するのは、サービスの作成者ではなく、WCF です。このようなインフラストラクチャ エンドポイントには、1 つ以上のプロパティの既定値があり、そのいくつかは変更できません。メタデータ交換エンドポイントの プロパティは である必要がありますが、バインディングなど、その他のプロパティは開発者が提供できます。インフラストラクチャ エンドポイントは、 プロパティを `true` に設定することによって識別されます。 + +## アプリケーション エンドポイント + アプリケーション開発者は独自の標準エンドポイントを定義でき、このエンドポイントでアドレス、バインディング、またはコントラクトの既定値が指定されます。標準エンドポイントを定義するには、 からクラスを派生させ、適切なエンドポイント プロパティを設定します。変更可能な既定値をプロパティに設定できます。他のいくつかのプロパティには、変更できない静的な値が設定されます。次の例は、標準エンドポイントの実装方法を示しています。 + +``` +public class CustomEndpoint : ServiceEndpoint + { + public CustomEndpoint() + : this(string.Empty) + { + } + + public CustomEndpoint(string address) + : this(address, ContractDescription.GetContract(typeof(ICalculator))) + { + } + + // Create the custom endpoint with a fixed binding + public CustomEndpoint(string address, ContractDescription contract) + : base(contract) + { + this.Binding = new BasicHttpBinding(); + this.IsSystemEndpoint = false; + } + + // Definition of the additional property of this endpoint + public bool Property + { + get; + set; + } + } +``` + + ユーザー定義のカスタム エンドポイントを構成ファイルで使用するには、 から 1 つのクラスを派生させ、 から 1 つのクラスを派生させて、新しい標準エンドポイントを app.config または machine.config の拡張セクションに登録します。 は、次の例に示すように、標準エンドポイントの構成サポートを提供します。 + +``` +public class CustomEndpointElement : StandardEndpointElement + { + // Definition of the additional property for the standard endpoint element + public bool Property + { + get { return (bool)base["property"]; } + set { base["property"] = value; } + } + + // The additional property needs to be added to the properties of the standard endpoint element + protected override ConfigurationPropertyCollection Properties + { + get + { + ConfigurationPropertyCollection properties = base.Properties; + properties.Add(new ConfigurationProperty("property", typeof(bool), false, ConfigurationPropertyOptions.None)); + return properties; + } + } + + // Return the type of this standard endpoint + protected override Type EndpointType + { + get { return typeof(CustomEndpoint); } + } + + // Create the custom service endpoint + protected override ServiceEndpoint CreateServiceEndpoint(ContractDescription contract) + { + return new CustomEndpoint(); + } + + // Read the value given to the property in config and save it + protected override void OnApplyConfiguration(ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement) + { + CustomEndpoint customEndpoint = (CustomEndpoint)endpoint; + customEndpoint.Property = this.Property; + } + + // Read the value given to the property in config and save it + protected override void OnApplyConfiguration(ServiceEndpoint endpoint, ChannelEndpointElement channelEndpointElement) + { + CustomEndpoint customEndpoint = (CustomEndpoint)endpoint; + customEndpoint.Property = this.Property; + } + + // No validation in this sample + protected override void OnInitializeAndValidate(ServiceEndpointElement serviceEndpointElement) + { + } + + // No validation in this sample + protected override void OnInitializeAndValidate(ChannelEndpointElement channelEndpointElement) + { + } + } + +``` + + は、標準エンドポイントの構成の \<`standardEndpoints`\> セクションの下に表示されるコレクションのバッキング型を提供します。次の例は、このクラスを実装する方法を示しています。 + +``` +public class CustomEndpointCollectionElement : StandardEndpointCollectionElement + { + // ... + + } +``` + + 次の例は、拡張セクションで標準エンドポイントを登録する方法を示しています。 + +``` + + + + +``` + +## 標準エンドポイントの構成 + 標準エンドポイントは、コードまたは構成で追加できます。標準エンドポイントをコードで追加するには、次の例に示すように、適切な標準エンドポイントの種類をインスタンス化し、それをサービス ホストに追加します。 + +```csharp +serviceHost.AddServiceEndpoint(new CustomEndpoint()); +``` + + 標準エンドポイントを構成で追加するには、\<`endpoint`\> 要素を、\<`service`\> 要素、および \<`standardEndpoints`\> 要素内の必要な構成設定に追加します。次の例は、 を追加する方法を示しています。これは、[!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] に付属する標準エンドポイントのいずれかです。 + +```xml + + + + + + + + + + +``` + + 標準エンドポイントの種類は、\<`endpoint`\> 要素の種類属性を使用して指定します。エンドポイントは、\<`standardEndpoints`\> 要素内で構成されます。前の例では、 エンドポイントが追加され、構成されます。\<`udpDiscoveryEndpoint`\> 要素は、 プロパティを設定する \<`standardEndpoint`\> を格納します。 + +## .NET Framework に付属する標準エンドポイント + 次の表は、[!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] に付属する標準エンドポイントを示しています。 + + `Mex Endpoint` + サービス メタデータの公開に使用する標準エンドポイント。 + + + サービスがアナウンス メッセージを送信するために使用する標準エンドポイント。 + + + サービスが探索メッセージを送信するために使用する標準エンドポイント。 + + + UDP マルチキャスト バインディング上での探索操作用に事前構成済みの標準エンドポイント。 + + + サービスが UDP バインディングでアナウンス メッセージを送信するために使用する標準エンドポイント。 + + + 実行時にエンドポイント アドレスを動的に検索するために WS\-Discovery を使用する標準エンドポイント。 + + + メタデータ交換用の標準エンドポイント。 + + + の動作を自動的に追加する バインディングを持つ標準エンドポイント。 + + + の動作を自動的に追加する バインディングを持つ標準エンドポイント。 + + + バインディングを持つ標準エンドポイント。 + + + ワークフロー インスタンスでの制御操作の呼び出しを可能にする標準エンドポイント。 + + + ワークフローの作成とブックマークの再開をサポートする標準エンドポイント。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/startup-time-of-wcf-client-applications-using-the-xmlserializer.md b/docs/framework/wcf/feature-details/startup-time-of-wcf-client-applications-using-the-xmlserializer.md new file mode 100644 index 00000000000..fc6304e83b4 --- /dev/null +++ b/docs/framework/wcf/feature-details/startup-time-of-wcf-client-applications-using-the-xmlserializer.md @@ -0,0 +1,61 @@ +--- +title: "方法 : XmlSerializer を使用する WCF クライアント アプリケーションの起動時間を短縮する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 21093451-0bc3-4b1a-9a9d-05f7f71fa7d0 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : XmlSerializer を使用する WCF クライアント アプリケーションの起動時間を短縮する + を使用してシリアル化できるデータ型を使用するサービスおよびクライアント アプリケーションは、実行時にこのようなデータ型のシリアル化コードを生成およびコンパイルします。このため、起動時のパフォーマンスが低下することがあります。 + +> [!NOTE] +> 事前生成済みシリアル化コードはクライアント アプリケーションでのみ使用できます。サービスでは使用できません。 + + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用すると、必要なシリアル化コードをアプリケーションのコンパイル済みアセンブリから生成することで、このようなアプリケーションの起動時のパフォーマンスを改善できます。Svcutil.exe は、 を使用してシリアル化できるコンパイル済みアプリケーション アセンブリに格納されたサービス コントラクトで使用されるすべてのデータ型に対して、シリアル化コードを生成します。 を使用するサービスおよび操作コントラクトは、 でマークされます。 + +### XmlSerializer シリアル化コードを生成するには + +1. サービスまたはクライアント コードを 1 つ以上のアセンブリにコンパイルします。 + +2. SDK コマンド プロンプトを開きます。 + +3. コマンド プロンプトで、次の形式を使用して Svcutil.exe ツールを起動します。 + + ``` + svcutil.exe /t:xmlSerializer * + ``` + + `assemblyPath` 引数には、サービス コントラクト型を格納するアセンブリへのパスを指定します。Svcutil.exe は、 を使用してシリアル化できるコンパイル済みアプリケーション アセンブリに格納されたサービス コントラクトで使用されるすべてのデータ型に対して、シリアル化コードを生成します。 + + Svcutil.exe は、C\# のシリアル化コードのみを生成できます。入力アセンブリごとに、1 つのソース コード ファイルが生成されます。生成されるコードの言語を変更するために、**\/language** スイッチを使用することはできません。 + + 依存アセンブリへのパスを指定するには、**\/reference** オプションを使用します。 + +4. 次のオプションのいずれかを使用して、生成したシリアル化コードをアプリケーションから利用できるようにします。 + + 1. 生成されたシリアル化コードを \[*original assembly*\].XmlSerializers.dll という名前 \(たとえば、MyApp.XmlSerializers.dll\) で別個のアセンブリにコンパイルします。アプリケーションがアセンブリを読み込むことができ、アセンブリが元のアセンブリと同じキーで署名されている必要があります。元のアセンブリを再コンパイルする場合は、シリアル化アセンブリも再生成する必要があります。 + + 2. 生成されたシリアル化コードを別個のアセンブリにコンパイルし、 を使用するサービス コントラクトで を使用します。 プロパティまたは プロパティが、コンパイル済みのシリアル化アセンブリを指すように設定します。 + + 3. 生成されたシリアル化コードをアプリケーション アセンブリにコンパイルし、 を使用するサービス コントラクトに を追加します。 プロパティおよび プロパティは設定しないでください。既定のシリアル化アセンブリが現在のアセンブリであると見なされます。 + +## 使用例 + 次のコマンドにより、アセンブリに含まれているサービス コントラクトが使用する `XmlSerializer` 型用のシリアル化型を生成します。 + +``` +svcutil /t:xmlserializer myContractLibrary.exe +``` + +## 参照 + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/streaming-message-transfer.md b/docs/framework/wcf/feature-details/streaming-message-transfer.md new file mode 100644 index 00000000000..6e0901af0f9 --- /dev/null +++ b/docs/framework/wcf/feature-details/streaming-message-transfer.md @@ -0,0 +1,57 @@ +--- +title: "メッセージ転送ストリーミング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 72a47a51-e5e7-4b76-b24a-299d51e0ae5a +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# メッセージ転送ストリーミング +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のトランスポートでは、メッセージを転送するための次の 2 つのモードをサポートしています。 + +- バッファー転送では、転送が完了するまで、メッセージ全体がメモリ バッファーに保持されます。受信側がメッセージを読み取るためには、バッファー内のメッセージが完全に配信される必要があります。 + +- ストリーミング転送では、ストリームとしてメッセージが公開されます。受信側は、メッセージが完全に配信される前にメッセージの処理を開始できます。 + +- ストリーミング転送では、大容量のメモリ バッファーが不要なため、サービスのスケーラビリティを向上できます。転送モードを変更することによってスケーラビリティが向上するかどうかは、転送されるメッセージのサイズによって決まります。メッセージのサイズが大きい場合は、ストリーム転送の使用をお勧めします。 + + 既定では、HTTP、TCP\/IP、および名前付きパイプの各トランスポートはバッファー転送を使用します。ここでは、これらのトランスポートをバッファー転送モードからストリーミング転送モードに切り替える方法と、その結果について説明します。 + +## ストリーミング転送の有効化 + バッファー転送モードとストリーミング転送モードは、トランスポートのバインド要素で切り替えます。バインド要素には、 プロパティがあり、`Buffered`、`Streamed`、`StreamedRequest`、または `StreamedResponse` に設定できます。転送モードを `Streamed` に設定すると、両方向のストリーミング通信が可能になります。転送モードを `StreamedRequest` または `StreamedResponse` に設定すると、指定した方向のストリーミング通信だけが有効になります。 + + 、および の各バインディングは、 プロパティを公開します。他のトランスポートの場合、転送モードを設定するにはカスタム バインディングを作成する必要があります。 + + バッファー転送とストリーミング転送のどちらを使用するかは、エンドポイントでローカルに決定します。HTTP トランスポートの場合、転送モードは、接続、つまりサーバーなどの中継局に伝達されません。転送モードの設定は、サービス インターフェイスの記述に反映されません。サービスに対してクライアント クラスを生成した後、ストリーミング転送で使用する予定のサービスの構成ファイルを編集し、転送モードを設定する必要があります。TCP トランスポートと名前付きパイプ トランスポートの場合、転送モードはポリシー アサーションとして伝達されます。 + + コード例については、「[方法 : ストリーミングを有効にする](../../../../docs/framework/wcf/feature-details/how-to-enable-streaming.md)」を参照してください。 + +## 非同期ストリーミングの有効化 + 非同期ストリーミングを有効にするには、エンドポイントの 動作をサービス ホストに追加し、 プロパティを `true` に設定します。 + + WCF のこのバージョンでは、ほかにも送信側の実際の非同期ストリーミング機能が追加されています。これによって、多数のクライアントにメッセージをストリーム出力するシナリオで、一部のクライアントがネットワークの混雑があるために読み取りが遅いか、読み取りがまったくない場合に、サービスのスケーラビリティを向上します。このようなシナリオでは、WCF はクライアントごとのサービスの個別のスレッドをブロックしません。サービスはこれによってこれまで以上のクライアントを処理できるようになり、スケーラビリティが向上します。 + +## ストリーミング転送の制限 + ストリーミング転送モードを使用すると、ランタイムによって追加の制限が適用されます。 + + ストリーミングされたトランスポートで発生する操作は、最大で 1 つの入力パラメーターまたは出力パラメーターが指定されたコントラクトを持つことができます。設定するパラメーターは、メッセージの本文全体に対応し、 の派生型、または 実装であることが必要です。操作の戻り値を取得することは、出力パラメーターを取得することと同じです。 + + 信頼できるメッセージング、トランザクション、SOAP メッセージ レベルのセキュリティなど、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の一部の機能は転送メッセージのバッファー処理に依存しています。これらの機能を使用すると、ストリーミングによって得られるパフォーマンス上の利点が減少したり、失われたりする可能性があります。ストリーミングされたトランスポートをセキュリティで保護する場合は、トランスポート レベルのセキュリティだけを使用するか、または、トランスポート レベルのセキュリティと認証のみのメッセージ セキュリティを組み合わせて使用してください。 + + SOAP ヘッダーは、転送モードがストリーミングに設定されている場合でも、必ずバッファーされます。メッセージのヘッダーが `MaxBufferSize` トランスポート クォータのサイズを超えないようにしてください。この設定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[トランスポート クォータ](../../../../docs/framework/wcf/feature-details/transport-quotas.md)」を参照してください。 + +## バッファー転送とストリーミング転送の違い + 転送モードをバッファーからストリーミングに変更すると、TCP トランスポートと名前付きパイプ トランスポートのネイティブなチャネル形状も変更されます。バッファー転送では、ネイティブなチャネル形状は です。ストリーム転送では、ネイティブなチャネル形状は です。これらのトランスポートを直接 \(つまり、サービス コントラクトを介さずに\) 使用する既存のアプリケーションで転送モードを変更するには、チャネル ファクトリおよびリスナーの予測されるチャネル形状を変更する必要があります。 + +## 参照 + [方法 : ストリーミングを有効にする](../../../../docs/framework/wcf/feature-details/how-to-enable-streaming.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/support-for-json-and-other-data-transfer-formats.md b/docs/framework/wcf/feature-details/support-for-json-and-other-data-transfer-formats.md new file mode 100644 index 00000000000..4a447604b94 --- /dev/null +++ b/docs/framework/wcf/feature-details/support-for-json-and-other-data-transfer-formats.md @@ -0,0 +1,34 @@ +--- +title: "JSON などのデータ転送形式のサポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a527f1be-4e37-4beb-9a95-291480d19627 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# JSON などのデータ転送形式のサポート +JSON \(JavaScript Object Notation\) は、クライアント ブラウザーと AJAX \(Asynchronous JavaScript and XML\) 対応の Web サービスとの間で少量のデータを高速に交換できる効率的なデータ エンコード形式です。 + +## このセクションの内容 + [スタンドアロン JSON のシリアル化](../../../../docs/framework/wcf/feature-details/stand-alone-json-serialization.md) + スタンドアロン JSON のシリアル化について説明します。 + + [方法 : JSON データをシリアル化および逆シリアル化する](../../../../docs/framework/wcf/feature-details/how-to-serialize-and-deserialize-json-data.md) + を使用して .NET 型のオブジェクトを JSON エンコードされたデータにシリアル化し、この JSON 形式のデータを .NET 型のインスタンスに戻すために逆シリアル化する方法について説明します。 + + [JSON と XML 間のマッピング](../../../../docs/framework/wcf/feature-details/mapping-between-json-and-xml.md) + JSON \(JavaScript Object Notation\) エンコードと、JSON エンコードされたデータおよびドキュメントを表すために [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 内部で使用される XML Infoset との関連について説明します。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/supported-deployment-scenarios.md b/docs/framework/wcf/feature-details/supported-deployment-scenarios.md new file mode 100644 index 00000000000..8fcc26f44a7 --- /dev/null +++ b/docs/framework/wcf/feature-details/supported-deployment-scenarios.md @@ -0,0 +1,53 @@ +--- +title: "サポートされている配置シナリオ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3399f208-3504-4c70-a22e-a7c02a8b94a6 +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# サポートされている配置シナリオ +部分的に信頼されたアプリケーションでの使用のために用意されている [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 機能のサブセットは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用するための一部のシナリオ \(全部ではありません\) の要件を満たすように作成されています。 サーバーでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、セキュリティの理由により [!INCLUDE[vstecasplong](../../../../includes/vstecasplong-md.md)] の中程度の信頼アクセス許可セットでサードパーティ製アプリケーションを実行するインターネット規模の共有ホスティング プロバイダーの要件を満たします。 クライアントでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の部分信頼サポート機能は、[ClickOnce 展開](http://go.microsoft.com/fwlink/?LinkId=83712)または [!INCLUDE[avalon2](../../../../includes/avalon2-md.md)] の XAML ブラウザー アプリケーション \(XBAP\) テクノロジなどの展開技術の要件を満たすように設計されています。これらの技術は、信頼できないサイトからシームレスかつ安全にデスクトップ アプリケーションを展開できるようにするためのものです。 + +## 最小のアクセス許可の要件 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、次の標準の名前付きアクセス許可セットのいずれかで実行されるアプリケーションの機能のサブセットをサポートします。 + +- 中程度の信頼アクセス許可 + +- インターネット ゾーン アクセス許可 + + これよりも制限の厳しいアクセス許可が設定された部分信頼アプリケーションで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用すると、実行時にセキュリティ例外が発生することがあります。 + + このようなアクセス許可セットでサポートされる機能の詳細については、「[部分信頼機能の互換性](../../../../docs/framework/wcf/feature-details/partial-trust-feature-compatibility.md)」を参照してください。 + +## サーバーでの部分信頼 + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web アプリケーション ホスティング サービスのプロバイダー事業者の多くは、それぞれのサーバーで動作するアプリケーションが [!INCLUDE[vstecasplong](../../../../includes/vstecasplong-md.md)] の中程度の信頼アクセス許可セットを使用して実行されることを義務付けています。 その業者がトランスポートレベルのセキュリティで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]、、または を使用する場合、 サービスは、このような環境で動作します。 + + 信頼レベルが中程度のホスティング環境で動作する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、クライアント要求に応じて他のサーバーにメッセージを送信することによって、中間層サービスとして動作することもできます。 ホスティング環境が適切な をアプリケーションに与えて、目的のサーバーに送信要求を行うようにする場合は、サーバーでの中間層のシナリオがサポートされます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、サポートされる SOAP バインディングのいずれか 1 つを使用する SOAP メッセージングの他にも、部分的に信頼されたアプリケーションで Web スタイルのサービスを構築するための をサポートします。 部分信頼では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md)、[WCF 配信](../../../../docs/framework/wcf/feature-details/wcf-syndication.md)、および [AJAX の統合と JSON のサポート](../../../../docs/framework/wcf/feature-details/ajax-integration-and-json-support.md) の各機能がすべてサポートされます。 + + ワークフロー サービスは完全信頼のアクセス許可を必要とし、部分的に信頼されたアプリケーションでは使用できません。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [How To: ASP.NET 2.0 で中程度の信頼を使用する方法](http://go.microsoft.com/fwlink/?LinkId=84603)」を参照してください。 + +## クライアントでの部分信頼 + 信頼されていないインターネット サイトからコードをダウンロードして実行する場合、ある程度のセキュリティ対策が必要です。[ClickOnce 展開](http://go.microsoft.com/fwlink/?LinkId=83712)と [!INCLUDE[avalon2](../../../../includes/avalon2-md.md)] の XBAP テクノロジでは共に、部分信頼を利用して信頼できないコードに制限付きのアクセス許可 \(インターネット ゾーン\) を与えます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、[ClickOnce 展開](http://go.microsoft.com/fwlink/?LinkId=83712)または XBAP によって展開された部分信頼のアプリケーション内からリモート サーバーと通信するときに使用できます。 インターネット ゾーン アクセス許可セットには、元のホスト用の が含まれます。これにより、このようなアプリケーションは、サポートされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインディングのいずれかを使用してそれぞれの元のサーバーと通信できます \(「[部分信頼機能の互換性](../../../../docs/framework/wcf/feature-details/partial-trust-feature-compatibility.md)」を参照\)。 + +## 参照 + [コード アクセス セキュリティ](http://go.microsoft.com/fwlink/?LinkId=83717) + [Windows Presentation Foundation ブラウザーによってホストされるアプリケーションの概要](http://go.microsoft.com/fwlink/?LinkId=98397) + [部分信頼](../../../../docs/framework/wcf/feature-details/partial-trust.md) + [ASP.NET の中程度の信頼](http://go.microsoft.com/fwlink/?LinkId=69328) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/supporting-multiple-iis-site-bindings.md b/docs/framework/wcf/feature-details/supporting-multiple-iis-site-bindings.md new file mode 100644 index 00000000000..635f7e6d5c2 --- /dev/null +++ b/docs/framework/wcf/feature-details/supporting-multiple-iis-site-bindings.md @@ -0,0 +1,37 @@ +--- +title: "複数の IIS サイト バインディングのサポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 40440495-254d-45c8-a8c6-b29f364892ba +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 複数の IIS サイト バインディングのサポート +インターネット インフォメーション サービス \(IIS: Internet Information Services\) 7.0 で [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをホストする場合は、同じサイトで同じプロトコルを使用する、複数のベース アドレスを提供できます。これにより、同じサービスで多数の異なる URI に応答できます。http:\/\/www.contoso.com および http:\/\/contoso.com でリッスンするサービスをホストするときには、これが役立ちます。また、内部ユーザー用に 1 つのベース アドレスを持ち、外部ユーザー用に別のベース アドレスを持つサービスを作成するのにも役立ちます。たとえば、http:\/\/internal.contoso.com および http:\/\/www.contoso.com というベース アドレスを持つ場合があります。 + +> [!NOTE] +> この機能は、HTTP プロトコルを使用してのみ、使用可能です。 + +## 複数のベース アドレス + この機能は、IIS でホストされている [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでのみ使用可能です。この機能は、既定では有効にされません。有効にするには、次の例に示すように、Web.config ファイルで `multipleSiteBindingsEnabled` 属性を \<`serviceHostingEnvironment`\> 要素に追加し、`true` に設定します。 + +```xml + +``` + + IIS で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをホストする場合、IIS では、アプリケーションを格納している仮想ディレクトリへの URI に基づいて、1 つのベース アドレスが作成されます。インターネット インフォメーション サービス マネージャーを使用して、同じプロトコルを使用するベース アドレスを追加し、1 つ以上のバインディングを Web サイトに追加できます。それぞれのバインディングに対して、プロトコル \(HTTP または HTTPS\)、IP アドレス、ポート、およびホスト名を指定します。インターネット インフォメーション サービス マネージャーの使用[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[IIS マネージャー \(IIS 7\)](http://go.microsoft.com/fwlink/?LinkId=164057)」を参照してください。サイトへのバインディングの追加[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Web サイトを作成する \(IIS 7\)](http://go.microsoft.com/fwlink/?LinkId=164060)」を参照してください。 + + 同じサイトに複数のベース アドレスを指定すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のヘルプ ページ、スキーマのインポート、サービスによって生成される WSDL\/MEX 情報に影響が生じます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のヘルプ ページには、サービスと通信できる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの生成に使用する、コマンド ラインが表示されます。このコマンド ラインには、その Web サイト用の IIS バインディングで指定された最初のアドレスだけが含まれています。同様に、スキーマをインポートするときには、IIS バインディングで指定された最初のベース アドレスだけが使用されます。WSDL および MEX データには、IIS バインディングで指定されたすべてのベース アドレスが含まれています。 + +> [!WARNING] +> つまり、サービスに 2 つのベース アドレス \(1 つは内部ユーザー用、もう 1 つは外部ユーザー用\) がある場合、サービスによって生成される WSDL\/MEX 情報では、両方のベース アドレスが指定されます。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/syndication-extensibility.md b/docs/framework/wcf/feature-details/syndication-extensibility.md new file mode 100644 index 00000000000..168aace7e17 --- /dev/null +++ b/docs/framework/wcf/feature-details/syndication-extensibility.md @@ -0,0 +1,56 @@ +--- +title: "配信の拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4d941175-74a2-4b15-81b3-086e8a95d25f +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 配信の拡張 +配信 API は、形式に依存せず、さまざま形式で概要コンテンツをネットワークに書き込むことができるプログラミング モデルを提供することを目的としています。抽象データ モデルは、次のクラスで構成されています。 + +- + +- + +- + +- + +- + + これらのクラスは、一部の名前が異なっていますが、Atom 1.0 仕様に規定されるコンストラクトに厳密にマップされています。 + + 配信プロトコルの主な機能は拡張性です。Atom 1.0 と RSS 2.0 のどちらも、仕様で定義されていない属性と要素を配信フィードに追加できます。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の配信プログラミング モデルには、カスタム属性と拡張機能を扱う方法として、次のように、弱い型指定のアクセスと新しいクラスの派生が用意されています。 + +## 弱い型指定のアクセス + 新しいクラスの派生によって拡張機能を追加するには、追加のコードを記述する必要があります。別の方法として、弱い型指定で拡張機能にアクセスする方法もあります。配信抽象データ モデルに定義される型にはすべて、`AttributeExtensions` および `ElementExtensions` という名前のプロパティが含まれます。ただし、 には `AttributeExtensions` プロパティがありますが、`ElementExtensions` プロパティはありません。この 2 つのプロパティはそれぞれ、`TryParseAttribute` メソッドと `TryParseElement` メソッドで処理されない拡張機能のコレクションです。この処理されない拡張機能にアクセスするには、、および の `ElementExtensions` プロパティで を呼び出します。このメソッドのセットは、指定した名前と名前空間を持つ拡張機能をすべて検索し、個別に `TExtension` のインスタンスに逆シリアル化して `TExtension` オブジェクトのコレクションとして返します。 + +## 新しいクラスの派生 + 任意の既存抽象データ モデル クラスから、新しいクラスを派生できます。これは、対象フィードのほとんどに特定の拡張機能が含まれるアプリケーションを実装する際に行います。このトピックでは、プログラムで処理するフィードのほとんどに、`MyExtension` 拡張機能が含まれています。プログラミング性を向上するには、次の手順を実行します。 + +- 拡張機能データを保持するクラスを作成します。この場合、MyExtension というクラスを作成します。 + +- プログラミング性を向上するには、 から MyExtensionItem というクラスを派生させ、MyExtension 型のプロパティを公開します。 + +- MyExtensionItem クラスの をオーバーライドし、MyExtension が読み込まれたら新しい MyExtension インスタンスをインスタンス化します。 + +- MyExtensionItem クラスの をオーバーライドし、MyExtension プロパティのコンテンツを XML ライターに書き出します。 + +- から、MyExtensionFeed というクラスを派生させます。 + +- MyExtensionFeed クラスの をオーバーライドし、既定の の代わりに MyExtensionItem をインスタンス化します。 および に、、および の各オブジェクトを生成する一連のメソッドが定義されます \(たとえば、 など\)。そのどれもが、カスタム派生クラスを作成するためにオーバーライドできます。 + +## 参照 + [WCF 配信の概要](../../../../docs/framework/wcf/feature-details/wcf-syndication-overview.md) + [配信のアーキテクチャ](../../../../docs/framework/wcf/feature-details/architecture-of-syndication.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/system-web-routing-integration.md b/docs/framework/wcf/feature-details/system-web-routing-integration.md new file mode 100644 index 00000000000..64dd5b215d3 --- /dev/null +++ b/docs/framework/wcf/feature-details/system-web-routing-integration.md @@ -0,0 +1,82 @@ +--- +title: "System.Web.Routing 統合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 31fe2a4f-5c47-4e5d-8ee1-84c524609d41 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# System.Web.Routing 統合 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをインターネット インフォメーション サービス \(IIS\) でホストするときは、.svc ファイルを仮想ディレクトリに配置します。この .svc ファイルは、使用するサービス ホスト ファクトリと、サービスを実装するクラスを指定します。サービスを要求するときは、http:\/\/contoso.com\/EmployeeServce.svc などの URI で .svc ファイルを指定します。REST サービスを記述するプログラマにとっては、この種類の URI は最適とは言えません。REST サービス用の URI は、特定のリソースを指定しており、拡張子がないのが普通です。 統合機能では、拡張子のない URI に応答する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] REST サービスをホストできます。ルーティング[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ASP.NET ルーティング](http://go.microsoft.com/fwlink/?LinkId=184660)」および「[AspNetRouteIntegration](../../../../docs/framework/wcf/samples/aspnetrouteintegration.md)」のサンプルを参照してください。 + +## System.Web.Routing 統合の使用 + 統合機能を使用するには、 クラスを使用して 1 つ以上のルートを作成し、Global.asax ファイルでそれらを に追加します。これらのルートは、サービスが応答する相対 URI を指定します。その方法を次の例に示します。 + +``` +<%@ Application Language="C#" %> +<%@ Import Namespace="System.Web.Routing" %> +<%@ Import Namespace="System.ServiceModel.Activation" %> +<%@ Import Namespace="System.ServiceModel.Web " %> + + + +``` + + これは、Customers で始まる相対 URI が指定されたすべての要求を `Service` サービスにルーティングします。 + + Web.config ファイルでは、次の例に示すように、`System.Web.Routing.UrlRoutingModule` モジュールを追加し、`runAllManagedModulesForAllRequests` 属性を `true` に設定し、`UrlRoutingHandler` ハンドラーを `` 要素に追加する必要があります。 + +```xml + + + + + + + + +``` + + これで、ルーティングに必要なモジュールとハンドラーが読み込まれます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][ルーティング](../../../../docs/framework/wcf/feature-details/routing.md).また、次の例に示すように、`` 要素で `aspNetCompatibilityEnabled` 属性を `true` に設定する必要もあります。 + +``` + + + + +``` + + 次の例に示すように、このサービスを実装するクラスでは、ASP.NET 互換要件を有効にする必要があります。 + +``` +[ServiceContract] +[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)] + public class Service + { + // ... + } +``` + +## 参照 + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) + [ASP.NET ルーティング](http://go.microsoft.com/fwlink/?LinkId=184660) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/tampering.md b/docs/framework/wcf/feature-details/tampering.md new file mode 100644 index 00000000000..2b5776172a9 --- /dev/null +++ b/docs/framework/wcf/feature-details/tampering.md @@ -0,0 +1,35 @@ +--- +title: "改変 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3bad93be-60bb-4f89-96ab-a1c3dc7c0fad +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 改変 +*改変*は、メッセージまたはメッセージの配信を変更し、意図された以外の目的のために、変更したメッセージを使用する行為です。 + +## WS\-Addressing を無効にしない + WS\-Addressing の仕様では、各メッセージにアドレス ヘッダーが提供されるため、メッセージの受信者はメッセージの送信者を検証できます。この機能を無効にするには、 プロパティを に設定します。 + + セキュリティ モードが Message に設定された状態で、WS\-Addressing が無効になっていると、攻撃者がクライアントから要求を取得して、これを別のサービスに送信した場合、要求を受信したサービスは、このメッセージが元のクライアントから送信されたことを検出できません。事実上、最初のサービスは、2 番目のサービスと対話するときに、自分をクライアントと偽ることができます。 + + これを防ぐには、 プロパティを絶対に に設定しないようにし、静的 プロパティのように、 プロパティを に設定する の使用を避けます。 + +## 参照 + [セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md) + [情報の漏えい](../../../../docs/framework/wcf/feature-details/information-disclosure.md) + [権限の昇格](../../../../docs/framework/wcf/feature-details/elevation-of-privilege.md) + [サービス拒否](../../../../docs/framework/wcf/feature-details/denial-of-service.md) + [サポートされていないシナリオ](../../../../docs/framework/wcf/feature-details/unsupported-scenarios.md) + [リプレイ攻撃](../../../../docs/framework/wcf/feature-details/replay-attacks.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transaction-models.md b/docs/framework/wcf/feature-details/transaction-models.md new file mode 100644 index 00000000000..ed4656e77ce --- /dev/null +++ b/docs/framework/wcf/feature-details/transaction-models.md @@ -0,0 +1,43 @@ +--- +title: "トランザクション モデル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 48a8bc1b-128b-4cf1-a421-8cc73223c340 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# トランザクション モデル +ここでは、トランザクション プログラミング モデルと、マイクロソフトが提供するインフラストラクチャ コンポーネントとの関係を説明します。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でトランザクションを使用する場合、選択するトランザクション モデルが異なるのではなく、統合され一貫した 1 つのモデルにおいて操作するレイヤーが異なるのだということを理解することが大切です。 + + 以下に、3 つの主要なトランザクション コンポーネントについて説明します。 + +## Windows Communication Foundation トランザクション + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされるトランザクションでは、トランザクション サービスを作成することができます。さらに、WS\-AtomicTransaction \(WS\-AT\) プロトコルのサポートにより、アプリケーションは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] またはサードパーティのテクノロジを使用して構築された Web サービスにトランザクションをフローさせることができます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスまたはアプリケーションでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] トランザクション機能により、インフラストラクチャがトランザクションを作成、フロー、同期する方法と時期を宣言的に指定するための属性と構成が提供されます。 + +## System.Transactions トランザクション + 名前空間は、 クラスに基づく明示的なプログラミング モデルだけでなく、インフラストラクチャがトランザクションを自動的に管理する、 クラスを使用した暗黙的なプログラミング モデルも提供します。 + + この 2 つのモデルを使用したトランザクション アプリケーション作成方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[トランザクション アプリケーションの作成](http://go.microsoft.com/fwlink/?LinkId=94947)」を参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスまたはアプリケーションでは、クライアント アプリケーション内にトランザクションを作成し、サービス内で必要な場合に、明示的にトランザクションと対話するためのプログラミング モデルが により提供されます。 + +## MSDTC トランザクション + Microsoft 分散トランザクション コーディネーター \(MSDTC\) は、分散トランザクションをサポートするトランザクション マネージャーです。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[DTC Programmer's Reference](http://go.microsoft.com/fwlink/?LinkId=94948)」を参照してください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスまたはアプリケーションにおいて MSDTC は、クライアントまたはサービス内で作成されたトランザクションを調整するためのインフラストラクチャを提供します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transaction-protocols-version-1-0.md b/docs/framework/wcf/feature-details/transaction-protocols-version-1-0.md new file mode 100644 index 00000000000..4a5f783f4c7 --- /dev/null +++ b/docs/framework/wcf/feature-details/transaction-protocols-version-1-0.md @@ -0,0 +1,437 @@ +--- +title: "トランザクション プロトコル バージョン 1.0 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 034679af-0002-402e-98a8-ef73dcd71bb6 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# トランザクション プロトコル バージョン 1.0 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] バージョン 1 は、WS\-Atomic Transaction プロトコルおよび WS\-Coordination プロトコルのバージョン 1.0 を実装します。バージョン 1.1 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[トランザクション プロトコル](../../../../docs/framework/wcf/feature-details/transaction-protocols.md)」を参照してください。 + +|仕様\/ドキュメント|リンク| +|----------------|---------| +|WS\-Coordination|http:\/\/msdn.microsoft.com\/ws\/2005\/08\/ws\-coordination\/| +|WS\-AtomicTransaction|http:\/\/msdn.microsoft.com\/ws\/2005\/08\/ws\-atomictransaction\/| + + これらのプロトコル仕様の相互運用性は、アプリケーション間とトランザクション マネージャー間の 2 つのレベルで必要です \(次の図を参照\)。仕様では、相互運用性の両方のレベルについて、メッセージ形式とメッセージ交換が詳細に説明されます。アプリケーション間での交換に必要な一定のセキュリティ、信頼性、およびエンコーディングは、通常のアプリケーションによる交換にも当てはまります。ただし、トランザクション マネージャー間で適切な相互運用性を実現するには、特定のバインディングを使用するという合意が必要となります。通常、バインディングはユーザーによって構成されないためです。 + + ここでは、WS\-AtomicTransaction \(WS\-AT\) 仕様のセキュリティに関する構成と、トランザクション マネージャー間の通信に使用されるセキュリティで保護されたバインディングについて説明します。このドキュメントで説明されているアプローチは、IBM、IONA、Sun Microsystems などを含む WS\-AT および WS\-Coordination の各種の実装でテスト済みのものです。 + + 次の図は、2 つのトランザクション マネージャー \(Transaction Manager 1 と Transaction Manager 2\)、および 2 つのアプリケーション \(Application 1 と Application 2\) 間の相互運用性を示しています。 + + ![トランザクション プロトコル](../../../../docs/framework/wcf/feature-details/media/transactionmanagers.gif "TransactionManagers") + + 1 つのイニシエーター \(I\) と 1 つの参加要素 \(P\) を持つ、一般的な WS\-Coordination\/WS\-AtomicTransaction のシナリオを考えます。イニシエーターと参加要素の両方にトランザクション マネージャー \(それぞれ ITM および PTM と呼びます\) があります。2 フェーズ コミットは、このトピックでは 2PC と呼びます。 + +||| +|-|-| +|1.CreateCoordinationContext|12.アプリケーション メッセージ応答| +|2.CreateCoordinationContextResponse|13.Commit \(完了\)| +|3.Register \(完了\)|14.Prepare \(2PC\)| +|4.RegisterResponse|15.Prepare \(2PC\)| +|5.アプリケーション メッセージ|16.Prepared \(2PC\)| +|6.CreateCoordinationContext with Context|17.Prepared \(2PC\)| +|7.Register \(永続的\)|18.Committed \(完了\)| +|8.RegisterResponse|19.Commit \(2PC\)| +|9.CreateCoordinationContextResponse|20.Commit \(2PC\)| +|10.Register \(永続的\)|21.Committed \(2PC\)| +|11.RegisterResponse|22.Committed \(2PC\)| + + このドキュメントでは、WS\-AtomicTransaction 仕様のセキュリティに関する構成と、トランザクション マネージャー間の通信に使用されるセキュリティで保護されたバインディングについて説明します。このドキュメントで説明されているアプローチは、WS\-AT および WS\-Coordination の各種の実装でテスト済みのものです。 + + この図および表では、セキュリティの観点から見た次の 4 つのクラスのメッセージを示しています。 + +- アクティベーション メッセージ \(CreateCoordinationContext と CreateCoordinationContextResponse\) + +- 登録メッセージ \(Register と RegisterResponse\) + +- プロトコル メッセージ \(Prepare、Rollback、Commit、Aborted など\) + +- アプリケーション メッセージ + + 最初の 3 つのメッセージ クラスはトランザクション マネージャーのメッセージと考えられます。これらのクラスのバインディング構成については、後の「アプリケーション メッセージ交換」で説明します。4 番目のメッセージ クラスは、アプリケーション間のメッセージであり、後の「メッセージの例」で説明します。ここでは、これらの各クラスで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって使用されるプロトコル バインディングについて説明します。 + + このドキュメントでは、次の XML 名前空間と関連付けられたプレフィックスが使用されます。 + +|プレフィックス|名前空間 URI| +|-------------|--------------| +|s11|http:\/\/schemas.xmlsoap.org\/soap\/envelope| +|wsa|http:\/\/www.w3.org\/2004\/08\/addressing| +|wscoor|http:\/\/schemas.xmlsoap.org\/ws\/2004\/10\/wscoor| +|wsat|http:\/\/schemas.xmlsoap.org\/ws\/2004\/10\/wsat| +|t|http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust| +|o|http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-wssecurity\-secext\-1.0.xsd| +|xsd|http:\/\/www.w3.org\/2001\/XMLSchema| + +## トランザクション マネージャー バインディング + R1001 : トランザクション マネージャーは、SOAP 1.1、WS\-Addressing 2004\/08 for WS\-AtomicTransaction、および WS\-Coordination メッセージ交換を使用する必要があります。 + + アプリケーション メッセージは、後で説明するように、これらのバインディングに制限されません。 + +### トランザクション マネージャー HTTPS バインディング + トランザクション マネージャー HTTPS バインディングは、セキュリティを実現してトランザクション ツリー内の送信者と受信者の各ペア間で信頼を確立するトランスポート セキュリティにのみ依存します。 + +#### HTTPS トランスポート構成 + トランザクション マネージャー ID を確立するために X.509 証明書が使用されます。クライアントおよびサーバーの承認が必要です。クライアントおよびサーバーの承認は、以下のような実装詳細の状態にしておきます。 + +- R1111 : ネットワーク経由で示された X.509 証明書は、発信元コンピューターの完全修飾ドメイン名 \(FQDN\) と一致するサブジェクト名を持っている必要があります。 + +- B1112 : X.509 のサブジェクト名のチェックが成功するには、システム内の送信者と受信者の各ペア間で、DNS が機能している必要があります。 + +#### アクティベーションと登録のバインディング構成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、HTTPS 上での関連付けにおいて要求\/応答の二重バインディングが必要です \(関連付けと要求\/応答メッセージ交換パターンの詳細については、WS\-AtomicTransaction 仕様のセクション 8 を参照してください\)。 + +#### 2PC プロトコルのバインディング構成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTPS 上の一方向 \(データグラム\) メッセージをサポートしています。メッセージ間の関連付けは、実装詳細の状態にしておきます。 + + B2131 : 実装では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の 2PC メッセージの関連付けを実現するために、WS\-Addressing で説明されているように、`wsa:ReferenceParameters` をサポートする必要があります。 + +### トランザクション マネージャーによる混合セキュリティ バインディング + これは、ID を確立する目的で WS\-Coordination 発行済みトークン モデルにトランスポート セキュリティを組み合わせて使用する代替の \(混合モードの\) バインディングです。2 つのバインディングを区別する要素は、アクティベーションと登録のみです。 + +#### HTTPS トランスポート構成 + トランザクション マネージャー ID を確立するために X.509 証明書が使用されます。クライアントおよびサーバーの承認が必要です。クライアントおよびサーバーの承認は、以下のような実装詳細の状態にしておきます。 + +#### アクティベーション メッセージのバインディング構成 + アクティベーション メッセージは通常、アプリケーションとローカルのトランザクション マネージャー間で発生するため、相互運用には参加しません。 + + B1221 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、アクティベーション メッセージに \(「[メッセージング プロトコル](../../../../docs/framework/wcf/feature-details/messaging-protocols.md)」で説明する\) HTTPS の二重バインディングを使用します。要求および応答メッセージは、WS\-Addressing 2004\/08 を使用して関連付けられます。 + + WS\-AtomicTransaction 仕様のセクション 8 では、関連付けとメッセージ交換のパターンについて詳細に説明されています。 + +- R1222 : `CreateCoordinationContext` を受信すると、コーディネーターは、関連付けられている秘密の `STx` を使用して `SecurityContextToken` を発行します。このトークンは、WS\-Trust の仕様に従って、`t:IssuedTokens` ヘッダー内に返されます。 + +- R1223 : アクティベーションが既存のコーディネーション コンテキスト内で発生した場合、既存のコンテキストに関連付けられた `SecurityContextToken` がある `t:IssuedTokens` ヘッダーは、`CreateCoordinationContext` メッセージでフローする必要があります。 + + `wscoor:CreateCoordinationContextResponse` 送信メッセージに添付する新しい `t:IssuedTokens` ヘッダーが生成されます。 + +#### 登録メッセージのバインディング構成 + B1231 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、\(「[メッセージング プロトコル](../../../../docs/framework/wcf/feature-details/messaging-protocols.md)」で説明する\) HTTPS の二重バインディングを使用します。要求および応答メッセージは、WS\-Addressing 2004\/08 を使用して関連付けられます。 + + WS\-AtomicTransaction 仕様のセクション 8 では、関連付けとメッセージ交換のパターンについて詳細に説明されています。 + + R1232 : `wscoor:Register` 送信メッセージでは、「[セキュリティ プロトコル](../../../../docs/framework/wcf/feature-details/security-protocols.md)」で説明する `IssuedTokenOverTransport` 認証モードを使用する必要があります。 + + `wsse:Timestamp` 要素は、`STx` によって発行された `SecurityContextToken` を使用して署名される必要があります。この署名は特定のトランザクションに関連付けられたトークンを所有していることの証明であり、トランザクションに登録されている参加要素の認証で使用されます。RegistrationResponse メッセージは、HTTPS を使用して返信されます。 + +#### 2PC プロトコルのバインディング構成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTPS 上の一方向 \(データグラム\) メッセージをサポートしています。メッセージ間の関連付けは、実装詳細の状態にしておきます。 + + B2131: [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の 2PC メッセージの関連付けを行うには、WS\-Addressing に記載されているように、実装では `wsa:ReferenceParameters` をサポートする必要があります。 + +## アプリケーション メッセージ交換 + アプリケーションでは、バインディングが次のセキュリティ要件を満たしている限り、アプリケーション間メッセージに任意のバインディングを使用できます。 + +- R2001 : アプリケーション間メッセージでは、メッセージのヘッダーの `CoordinationContext` に加えて `t:IssuedTokens` ヘッダーをフローする必要があります。 + +- R2002 : `t:IssuedToken` の整合性と機密性が提供される必要があります。 + + `CoordinationContext` ヘッダーには `wscoor:Identifier` が含まれます。`xsd:AnyURI` の定義では、絶対 URI と相対 URI の両方の使用が許可されていますが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では絶対 URI である `wscoor:Identifiers` のみがサポートされています。 + + `wscoor:CoordinationContext` の `wscoor:Identifier` が相対 URI である場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] トランザクション サービスからエラーが返されます。 + +## メッセージの例 + +### CreateCoordinationContext 要求\/応答メッセージ + 次のメッセージは、要求\/応答のパターンに従います。 + +#### CreateCoordinationContext + +``` + + + http://.../ws/2004/10/wscoor/CreateCoordinationContext + urn:uuid:069f5104-fd88-4264-9f99-60032a82854e + +
https://... + + https://... + + + 2005-12-15T23:36:09.921Z + 2005-12-15T23:41:09.921Z + + + + + + ... + + + + +``` + +#### CreateCoordinationContextResponse + +``` + + + + ./ws/2004/10/wscoor/CreateCoordinationContextResponse + urn:uuid:069f5104-fd88-4264-9f99-60032a82854e + https://... + + + http://schemas.xmlsoap.org/ws/2005/02/sc/sct + + + + http://fabrikam123.com/SCTi + + + + + http://fabrikam123.com/CCi + + + + + + + + + + + + + + + + + + 2005-10-24T20:19:26.526Z + 2005-10-25T06:24:26.526Z + + 256 + + + + + 2005-12-15T23:36:12.015Z + 2005-12-15T23:41:12.015Z + + + + + + + + http://fabrikam123.com/CCi + + ... + ... + + https://... + + ... + + + + + + + +``` + +### 登録メッセージ + 次のメッセージは、登録メッセージです。 + +#### Register + +``` + + + http://schemas.xmlsoap.org/ws/2004/10/wscoor/Register + urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088e + + https://... + + https://... + + + 2005-12-15T23:36:13.827Z + 2005-12-15T23:41:13.827Z + + + + http://fabrikam123.com/SCTi + + + + + + + + + + + + + + alRzyhjLgoUOYoh8cx4n75eTcUk= + + + + YZYjnVvSOVasAQqQxaaviTSWtqI= + + + + + + + + + + + ... + + https://... + + + + + +``` + +#### RegisterResponse + +``` + + + + http://schemas.xmlsoap.org/ws/2004/10/wscoor/RegisterResponse + + urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088d + + urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088e + + https://... + + + 2005-12-15T23:36:13.827Z + 2005-12-15T23:41:13.827Z + + + + + + + https://... + + ... + + + + + + +``` + +### 2 フェーズ コミット プロトコル メッセージ + 次のメッセージは、2 フェーズ コミット \(2PC\) プロトコルに関連しています。 + +#### Commit + +``` + + + http://.../ws/2004/10/wsat/Commit + https://... + + + 2005-12-15T23:36:13.827Z + 2005-12-15T23:41:13.827Z + + + + + + + + +``` + +### アプリケーション メッセージ + 次のメッセージは、アプリケーション メッセージです。 + +#### アプリケーション メッセージ \(要求\) + +``` + + + + + + 2005-10-25T06:29:18.703Z + 2005-10-25T06:34:18.703Z + + + + + + + + + + + + + + + + + + + + + + + + + + +... + + + +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transaction-protocols.md b/docs/framework/wcf/feature-details/transaction-protocols.md new file mode 100644 index 00000000000..0e5f056081c --- /dev/null +++ b/docs/framework/wcf/feature-details/transaction-protocols.md @@ -0,0 +1,659 @@ +--- +title: "トランザクション プロトコル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2820b0ec-2f32-430c-b299-1f0e95e1f2dc +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# トランザクション プロトコル +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、WS\-Atomic Transaction プロトコルと WS\-Coordination プロトコルを実装しています。 + +|仕様\/ドキュメント|バージョン|リンク| +|----------------|-----------|---------| +|WS\-Coordination|1.0

1.1|[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96104](http://go.microsoft.com/fwlink/?LinkId=96104)

[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96079](http://go.microsoft.com/fwlink/?LinkId=96079)| +|WS\-AtomicTransaction|1.0

1.1|[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96080](http://go.microsoft.com/fwlink/?LinkId=96080)

http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96081| + + これらのプロトコル仕様の相互運用性は、アプリケーション間とトランザクション マネージャー間の 2 つのレベルで必要です \(次の図を参照\)。仕様では、相互運用性の両方のレベルについて、メッセージ形式とメッセージ交換が詳細に説明されます。アプリケーション間での交換に必要な一定のセキュリティ、信頼性、およびエンコーディングは、通常のアプリケーションによる交換にも当てはまります。ただし、トランザクション マネージャー間で適切な相互運用性を実現するには、特定のバインディングを使用するという合意が必要となります。通常、バインディングはユーザーによって構成されないためです。 + + ここでは、WS\-AtomicTransaction \(WS\-AT\) 仕様のセキュリティに関する構成と、トランザクション マネージャー間の通信に使用されるセキュリティで保護されたバインディングについて説明します。このドキュメントで説明されているアプローチは、IBM、IONA、Sun Microsystems などを含む WS\-AT および WS\-Coordination の各種の実装でテスト済みのものです。 + + 次の図は、2 つのトランザクション マネージャー \(Transaction Manager 1 と Transaction Manager 2\)、および 2 つのアプリケーション \(Application 1 と Application 2\) 間の相互運用性を示しています。 + + ![トランザクション プロトコル](../../../../docs/framework/wcf/feature-details/media/transactionmanagers.gif "TransactionManagers") + + 1 つのイニシエーター \(I\) と 1 つの参加要素 \(P\) を持つ、一般的な WS\-Coordination\/WS\-AtomicTransaction のシナリオを考えます。イニシエーターと参加要素の両方にトランザクション マネージャー \(それぞれ ITM および PTM と呼びます\) があります。2 フェーズ コミットは、このトピックでは 2PC と呼びます。 + +||| +|-|-| +|1.CreateCoordinationContext|12.アプリケーション メッセージ応答| +|2.CreateCoordinationContextResponse|13.Commit \(完了\)| +|3.Register \(完了\)|14.Prepare \(2PC\)| +|4.RegisterResponse|15.Prepare \(2PC\)| +|5.アプリケーション メッセージ|16.Prepared \(2PC\)| +|6.CreateCoordinationContext with Context|17.Prepared \(2PC\)| +|7.Register \(永続的\)|18.Committed \(完了\)| +|8.RegisterResponse|19.Commit \(2PC\)| +|9.CreateCoordinationContextResponse|20.Commit \(2PC\)| +|10.Register \(永続的\)|21.Committed \(2PC\)| +|11.RegisterResponse|22.Committed \(2PC\)| + + このドキュメントでは、WS\-AtomicTransaction 仕様のセキュリティに関する構成と、トランザクション マネージャー間の通信に使用されるセキュリティで保護されたバインディングについて説明します。このドキュメントで説明されているアプローチは、WS\-AT および WS\-Coordination の各種の実装でテスト済みのものです。 + + この図および表では、セキュリティの観点から見た次の 4 つのクラスのメッセージを示しています。 + +- アクティベーション メッセージ \(CreateCoordinationContext と CreateCoordinationContextResponse\) + +- 登録メッセージ \(Register と RegisterResponse\) + +- プロトコル メッセージ \(Prepare、Rollback、Commit、Aborted など\) + +- アプリケーション メッセージ + + 最初の 3 つのメッセージ クラスはトランザクション マネージャーのメッセージと考えられます。これらのクラスのバインディング構成については、後の「アプリケーション メッセージ交換」で説明します。4 番目のメッセージ クラスは、アプリケーション間のメッセージであり、後の「メッセージの例」で説明します。ここでは、これらの各クラスで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって使用されるプロトコル バインディングについて説明します。 + + このドキュメントでは、次の XML 名前空間と関連付けられたプレフィックスが使用されます。 + +|プレフィックス|Version|名前空間の URI| +|-------------|-------------|---------------| +|s11||[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96014](http://go.microsoft.com/fwlink/?LinkId=96014)| +|wsa|1.0 より前

1.0|http:\/\/www.w3.org\/2004\/08\/addressing

[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96022](http://go.microsoft.com/fwlink/?LinkId=96022)| +|wscoor|1.0

1.1|[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96078](http://go.microsoft.com/fwlink/?LinkId=96078)

[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96079](http://go.microsoft.com/fwlink/?LinkId=96079)| +|wsat|1.0

1.1|[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96080](http://go.microsoft.com/fwlink/?LinkId=96080)

[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96081](http://go.microsoft.com/fwlink/?LinkId=96081)| +|t|1.3 より前

1.3|[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96082](http://go.microsoft.com/fwlink/?LinkId=96082)

[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96100](http://go.microsoft.com/fwlink/?LinkId=96100)| +|o||[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96101](http://go.microsoft.com/fwlink/?LinkId=96101)| +|xsd||[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=96102](http://go.microsoft.com/fwlink/?LinkId=96102)| + +## トランザクション マネージャー バインディング + R1001 : WS\-AT 1.0 トランザクションに参加するトランザクション マネージャーは、SOAP 1.1、WS\-Addressing 2004\/08 for WS\-Atomic Transaction、および WS\-Coordination メッセージ交換を使用する必要があります。 + + R1002 : WS\-AT 1.1 トランザクションに参加するトランザクション マネージャーは、SOAP 1.1、WS\-Addressing 2005\/08 for WS\-Atomic Transaction、および WS\-Coordination メッセージ交換を使用する必要があります。 + + アプリケーション メッセージは、後で説明するように、これらのバインディングに制限されません。 + +### トランザクション マネージャー HTTPS バインディング + トランザクション マネージャー HTTPS バインディングは、セキュリティを実現してトランザクション ツリー内の送信者と受信者の各ペア間で信頼を確立するトランスポート セキュリティにのみ依存します。 + +#### HTTPS トランスポート構成 + トランザクション マネージャー ID を確立するために X.509 証明書が使用されます。クライアントおよびサーバーの承認が必要です。クライアントおよびサーバーの承認は、以下のような実装詳細の状態にしておきます。 + +- R1111 : ネットワーク経由で示された X.509 証明書は、発信元コンピューターの完全修飾ドメイン名 \(FQDN\) と一致するサブジェクト名を持っている必要があります。 + +- B1112 : X.509 のサブジェクト名のチェックが成功するには、システム内の送信者と受信者の各ペア間で、DNS が機能している必要があります。 + +#### アクティベーションと登録のバインディング構成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、HTTPS 上での関連付けにおいて要求\/応答の二重バインディングが必要です \(関連付けと要求\/応答メッセージ交換パターンの詳細については、WS\-AtomicTransaction 仕様のセクション 8 を参照してください\)。 + +#### 2PC プロトコルのバインディング構成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTPS 上の一方向 \(データグラム\) メッセージをサポートしています。メッセージ間の関連付けは、実装詳細の状態にしておきます。 + + B1131 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の 2PC メッセージの関連付けを行うには、WS\-Addressing に記載されているように、実装で `wsa:ReferenceParameters` をサポートする必要があります。 + +### トランザクション マネージャーによる混合セキュリティ バインディング + これは、ID を確立するために、トランスポート セキュリティを WS\-Coordination 発行済みトークン モデルと組み合わせて使用する代替の \(混合モードの\) バインディングです。2 つのバインディングを区別する要素は、アクティベーションと登録のみです。 + +#### HTTPS トランスポート構成 + トランザクション マネージャー ID を確立するために X.509 証明書が使用されます。クライアントおよびサーバーの承認が必要です。クライアントおよびサーバーの承認は、以下のような実装詳細の状態にしておきます。 + +#### アクティベーション メッセージのバインディング構成 + アクティベーション メッセージは通常、アプリケーションとローカルのトランザクション マネージャー間で発生するため、相互運用には参加しません。 + + B1221 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、アクティベーション メッセージに \(「[メッセージング プロトコル](../../../../docs/framework/wcf/feature-details/messaging-protocols.md)」で説明する\) HTTPS の二重バインディングを使用します。要求\/応答メッセージは、WS\-AT 1.0 の WS\-Addressing 2004\/08 と WS\-AT 1.1 の WS\-Addressing 2005\/08 を使用して関連付けられます。 + + WS\-AtomicTransaction 仕様のセクション 8 では、関連付けとメッセージ交換のパターンについて詳細に説明されています。 + +- R1222 : `CreateCoordinationContext` を受信すると、コーディネーターは、関連付けられている秘密の `STx` を使用して `SecurityContextToken` を発行します。このトークンは、WS\-Trust の仕様に従って、`t:IssuedTokens` ヘッダー内に返されます。 + +- R1223 : アクティベーションが既存のコーディネーション コンテキスト内で発生した場合、既存のコンテキストに関連付けられた `SecurityContextToken` がある `t:IssuedTokens` ヘッダーは、`CreateCoordinationContext` メッセージでフローする必要があります。 + + `wscoor:CreateCoordinationContextResponse` 送信メッセージに添付する新しい `t:IssuedTokens` ヘッダーが生成されます。 + +#### 登録メッセージのバインディング構成 + B1231 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、\(「[メッセージング プロトコル](../../../../docs/framework/wcf/feature-details/messaging-protocols.md)」で説明する\) HTTPS の二重バインディングを使用します。要求\/応答メッセージは、WS\-AT 1.0 の WS\-Addressing 2004\/08 と WS\-AT 1.1 の WS\-Addressing 2005\/08 を使用して関連付けられます。 + + WS\-AtomicTransaction 仕様のセクション 8 では、関連付けとメッセージ交換のパターンについて詳細に説明されています。 + + R1232 : `wscoor:Register` 送信メッセージでは、「[セキュリティ プロトコル](../../../../docs/framework/wcf/feature-details/security-protocols.md)」で説明する `IssuedTokenOverTransport` 認証モードを使用する必要があります。 + + `wsse:Timestamp` 要素は、`STx` によって発行された `SecurityContextToken` を使用して署名される必要があります。この署名は特定のトランザクションに関連付けられたトークンを所有していることの証明であり、トランザクションに登録されている参加要素の認証で使用されます。RegistrationResponse メッセージは、HTTPS を使用して返信されます。 + +#### 2PC プロトコルのバインディング構成 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、HTTPS 上の一方向 \(データグラム\) メッセージをサポートしています。メッセージ間の関連付けは、実装詳細の状態にしておきます。 + + B1241 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の 2PC メッセージの関連付けを行うには、WS\-Addressing に記載されているように、実装で `wsa:ReferenceParameters` がサポートされている必要があります。 + +## アプリケーション メッセージ交換 + アプリケーションでは、バインディングが次のセキュリティ要件を満たしている限り、アプリケーション間メッセージに任意のバインディングを使用できます。 + +- R2001 : アプリケーション間メッセージでは、メッセージのヘッダーの `CoordinationContext` に加えて `t:IssuedTokens` ヘッダーをフローする必要があります。 + +- R2002 : `t:IssuedToken` の整合性と機密性が提供される必要があります。 + + `CoordinationContext` ヘッダーには `wscoor:Identifier` が含まれます。`xsd:AnyURI` の定義では、絶対 URI と相対 URI の両方の使用が許可されていますが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では絶対 URI である `wscoor:Identifiers` のみがサポートされています。 + + B2003 : `wscoor:CoordinationContext` の `wscoor:Identifier` が相対 URI の場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] トランザクション サービスからエラーが返されます。 + +## メッセージの例 + +### CreateCoordinationContext 要求\/応答メッセージ + 次のメッセージは、要求\/応答のパターンに従います。 + +#### WSCoor 1.0 での CreateCoordinationContext + +``` + + + http://.../ws/2004/10/wscoor/CreateCoordinationContext + urn:uuid:069f5104-fd88-4264-9f99-60032a82854e + +
https://... + + https://... + + + 2005-12-15T23:36:09.921Z + 2005-12-15T23:41:09.921Z + + + + + + ... + + + + +``` + +#### WSCoor 1.1 での CreateCoordinationContext + +``` + + +http://docs.oasis-open.org/ws-tx/wscoor/2006/06/CreateCoordinationContext +urn:uuid:069f5104-fd88-4264-9f99-60032a82854e + +
https://... + +https://... + + +2005-12-15T23:36:09.921Z +2005-12-15T23:41:09.921Z + + + + + +... + + + + +``` + +#### Trust Pre\-1.3 および WSCoor 1.0 での CreateCoordinationContextResponse + +``` + + + + ./ws/2004/10/wscoor/CreateCoordinationContextResponse + urn:uuid:069f5104-fd88-4264-9f99-60032a82854e + https://... + + + http://schemas.xmlsoap.org/ws/2005/02/sc/sct + + + + http://fabrikam123.com/SCTi + + + + + http://fabrikam123.com/CCi + + + + + + + + + + + + + + + + + + 2005-10-24T20:19:26.526Z + 2005-10-25T06:24:26.526Z + + 256 + + + + + 2005-12-15T23:36:12.015Z + 2005-12-15T23:41:12.015Z + + + + + + + + http://fabrikam123.com/CCi + + ... + ... + + https://... + + ... + + + + + + + +``` + +#### Trust 1.3 および WSCoor 1.1 での CreateCoordinationContextResponse + +``` + + + +http://docs.oasis-open.org/ws-tx/wscoor/2006/06/CreateCoordinationContextResponse +urn:uuid:069f5104-fd88-4264-9f99-60032a82854e +https://... + + +http://schemas.xmlsoap.org/ws/2005/02/sc/sct + + + http://fabrikam123.com/SCTi + + + + http://fabrikam123.com/CCi + + + + + + + + + + + + + + + + +2005-10-24T20:19:26.526Z +2005-10-25T06:24:26.526Z + +256 + + + + +2005-12-15T23:36:12.015Z +2005-12-15T23:41:12.015Z + + + + + + + http://fabrikam123.com/CCi + +... +... + +https://... + ... + + + + + + + +``` + +### 登録メッセージ + 次のメッセージは、登録メッセージです。 + +#### WSCoor 1.0 での Register + +``` + + + http://schemas.xmlsoap.org/ws/2004/10/wscoor/Register + urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088e + + https://... + + https://... + + + 2005-12-15T23:36:13.827Z + 2005-12-15T23:41:13.827Z + + + + http://fabrikam123.com/SCTi + + + + + + + + + + + + + + alRzyhjLgoUOYoh8cx4n75eTcUk= + + + + YZYjnVvSOVasAQqQxaaviTSWtqI= + + + + + + + + + + + ... + + https://... + + + + + +``` + +#### WSCoor 1.1 での Register + +``` + + +http://docs.oasis-open.org/ws-tx/wscoor/2006/06/Register +urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088e + +https://... + +https://... + + +2005-12-15T23:36:13.827Z +2005-12-15T23:41:13.827Z + + + http://fabrikam123.com/SCTi + + + + + + + + + + + + + alRzyhjLgoUOYoh8cx4n75eTcUk= + + + +YZYjnVvSOVasAQqQxaaviTSWtqI= + + + + + + + + + + + +... + +https://... + + + + + +``` + +#### WSCoor 1.0 での Register Response + +``` + + + + http://schemas.xmlsoap.org/ws/2004/10/wscoor/RegisterResponse + + urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088d + + urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088e + + https://... + + + 2005-12-15T23:36:13.827Z + 2005-12-15T23:41:13.827Z + + + + + + + https://... + + ... + + + + + + +``` + +#### WSCoor 1.1 での Register Response + +``` + + + http://docs.oasis-open.org/ws-tx/wscoor/2006/06/RegisterResponse + +urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088d + urn:uuid:ed418b86-a75e-4aea-9d4e-a5d0cb5c088e +https://... + + +2005-12-15T23:36:13.827Z +2005-12-15T23:41:13.827Z + + + + + + +https://... + ... + + + + + +``` + +### 2 フェーズ コミット プロトコル メッセージ + 次のメッセージは、2 フェーズ コミット \(2PC\) プロトコルに関連しています。 + +#### WSAT 1.0 での Commit + +``` + + + http://.../ws/2004/10/wsat/Commit + https://... + + + 2005-12-15T23:36:13.827Z + 2005-12-15T23:41:13.827Z + + + + + + + + +``` + +#### WSAT 1.1 での Commit + +``` + + +http://docs.oasis-open.org/ws-tx/wsat/2006/06 +https://... + + +2005-12-15T23:36:13.827Z +2005-12-15T23:41:13.827Z + + + + + + + + +``` + +### アプリケーション メッセージ + 次のメッセージは、アプリケーション メッセージです。 + +#### アプリケーション メッセージ \(要求\) + +``` + + + + + + 2005-10-25T06:29:18.703Z + 2005-10-25T06:34:18.703Z + + + + + + + + + + + + + + + + + + + + + + + + + + +... + + + +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transactional-support-in-system-servicemodel.md b/docs/framework/wcf/feature-details/transactional-support-in-system-servicemodel.md new file mode 100644 index 00000000000..8b23d76e4a9 --- /dev/null +++ b/docs/framework/wcf/feature-details/transactional-support-in-system-servicemodel.md @@ -0,0 +1,42 @@ +--- +title: "System.ServiceModel でのトランザクション サポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e7e54ed3-d1e5-4aa7-a653-1300c6b304eb +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# System.ServiceModel でのトランザクション サポート +このセクションのトピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] が提供するトランザクション機能について説明します。 + +## このセクションの内容 + [ServiceModel トランザクションの属性](../../../../docs/framework/wcf/feature-details/servicemodel-transaction-attributes.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス用のトランザクションの動作を構成可能な 2 つの標準的な 属性について説明します。 + + [ServiceModel トランザクションの構成](../../../../docs/framework/wcf/feature-details/servicemodel-transaction-configuration.md) + サービスのトランザクションを有効にするために使用できるさまざまな構成設定について説明します。 + + [トランザクション フローの有効化](../../../../docs/framework/wcf/feature-details/enabling-transaction-flow.md) + トランザクション フローを有効にする方法について説明します。 + + [方法 : トランザクション サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-transactional-service.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でトランザクション サービスを作成する実例を紹介します。 + + [トランザクション アプリケーションの診断](../../../../docs/framework/wcf/feature-details/diagnosing-transactional-applications.md) + トランザクション アプリケーションをトラブルシューティングするために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意されている管理機能および診断機能の使用方法について説明します。 + + [COM\+ と ServiceModel でのトランザクションの比較](../../../../docs/framework/wcf/feature-details/comparing-transactions-in-com-and-servicemodel.md) + トランザクション COM\+ サービスの動作を、 名前空間に定義されている属性を使用してシミュレートする方法について説明します。 + + [エンタープライズ サービスのトランザクション コンポーネントの統合](../../../../docs/framework/wcf/feature-details/integrating-enterprise-services-transactional-components.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービスを、エンタープライズ サービスを使用するコードと統合する方法について説明します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transactions-in-wcf.md b/docs/framework/wcf/feature-details/transactions-in-wcf.md new file mode 100644 index 00000000000..c28d8a12fac --- /dev/null +++ b/docs/framework/wcf/feature-details/transactions-in-wcf.md @@ -0,0 +1,44 @@ +--- +title: "WCF でのトランザクション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF, 使用 (トランザクションを)" + - "Windows Communication Foundation, 使用 (トランザクションを)" +ms.assetid: 1e8d04dd-b7cf-41e7-8560-54b4381beb0f +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# WCF でのトランザクション +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のトランザクション機能では、複数のコンポーネントが同時に 1 つのデータ操作に参加できます。このセクションのトピックでは、この機能について詳しく説明します。 + +## このセクションの内容 + [Windows Communication Foundation のトランザクションの概要](../../../../docs/framework/wcf/feature-details/transactions-overview.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で提供されるトランザクション機能の概要です。 + + [トランザクション モデル](../../../../docs/framework/wcf/feature-details/transaction-models.md) + Microsoft が提供するさまざまなトランザクション プログラミング モデルを比較します。 + + [WS\-AtomicTransaction の使用](../../../../docs/framework/wcf/feature-details/using-ws-atomictransaction.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に実装されている相互運用可能なトランザクション伝達プロトコルである WS\-AT \(WS\-AtomicTransaction\) について説明します。 + + [System.ServiceModel でのトランザクション サポート](../../../../docs/framework/wcf/feature-details/transactional-support-in-system-servicemodel.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が提供するトランザクション機能について説明します。 + +## 関連項目 + +## 関連項目 + [基本的な WCF プログラミング](../../../../docs/framework/wcf/basic-wcf-programming.md) + +## 参照 + [信頼できるセッションの概要](../../../../docs/framework/wcf/feature-details/reliable-sessions-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transactions-overview.md b/docs/framework/wcf/feature-details/transactions-overview.md new file mode 100644 index 00000000000..015b74cc671 --- /dev/null +++ b/docs/framework/wcf/feature-details/transactions-overview.md @@ -0,0 +1,55 @@ +--- +title: "Windows Communication Foundation のトランザクションの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "トランザクション [WCF]" + - "WCF, トランザクション" + - "Windows Communication Foundation, トランザクション" +ms.assetid: c7757854-1207-4019-8b31-552578b7d570 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# Windows Communication Foundation のトランザクションの概要 +トランザクションを使用すると、一連の処理や操作を 1 つの不可分の実行単位にグループ化できます。 トランザクションとは、次の性質を持つ操作のコレクションです。 + +- 原子性。 特定のトランザクションの下で完了したすべての更新は、コミットされて永続的に格納されるか、すべて中止されて前の状態にロールバックされるかのどちらかになります。 + +- 一貫性。 トランザクション下で行う変更は、一貫性のある状態から別の一貫性のある状態への変換を表します。 たとえば、当座預金から普通預金への振り替えトランザクションでは、全体の預金残高は変更されません。 + +- 分離 トランザクションが他の同時実行されているトランザクションに属するコミットされていない変更を監視することがなくなります。 分離により、同時実行の抽象概念が提供され、1 つのトランザクションが別のトランザクションの実行に予期しない影響を与える可能性がなくなります。 + +- 持続性。 マネージ リソース \(データベース レコードなど\) に対して 1 度コミットされた更新は、障害に直面しても永続的に残ります。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、Web サービスアプリケーション内で分散トランザクションを作成できる一連の豊富な機能を提供します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、WS\-AtomicTransaction \(WS\-AT\) プロトコル サポートを実装します。このプロトコルにより [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは、サードパーティ技術を使って作成された相互運用可能な Web サービスなど、相互運用可能アプリケーションにトランザクションをフローすることができます。 また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、OLE トランザクション プロトコル サポートも実装します。このプロトコルは、トランザクションのフローを有効にする相互運用可能な機能が必要とされないシナリオで使用することができます。 + + アプリケーション構成ファイルを使用してバインディングを構成し、トランザクション フローを有効にしたり無効にしたりできます。また、バインディングに目的のトランザクション プロトコルを設定できます。 さらに、構成ファイルを使用してサービス レベルでのトランザクションのタイムアウトを設定できます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [トランザクション フローの有効化](../../../../docs/framework/wcf/feature-details/enabling-transaction-flow.md). + + 名前空間のトランザクション属性で次の設定が行えます。 + +- 属性を使用して、トランザクションのタイムアウトと分離レベルのフィルター処理を構成する。 + +- 属性を使用して、トランザクション機能を有効にし、トランザクションの完了動作を構成する。 + +- コントラクト メソッドで 属性と 属性を使用して、トランザクション フローの要求、許可、または拒否を行う。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [ServiceModel トランザクションの属性](../../../../docs/framework/wcf/feature-details/servicemodel-transaction-attributes.md). + +## 参照 + [ServiceModel トランザクションの属性](../../../../docs/framework/wcf/feature-details/servicemodel-transaction-attributes.md) + [トランザクション フローの有効化](../../../../docs/framework/wcf/feature-details/enabling-transaction-flow.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transport-quotas.md b/docs/framework/wcf/feature-details/transport-quotas.md new file mode 100644 index 00000000000..c5746023515 --- /dev/null +++ b/docs/framework/wcf/feature-details/transport-quotas.md @@ -0,0 +1,123 @@ +--- +title: "トランスポート クォータ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "トランスポート クォータ [WCF]" +ms.assetid: 3e71dd3d-f981-4d9c-9c06-ff8abb61b717 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# トランスポート クォータ +トランスポート クォータは、接続がリソースを過剰に消費している時期を特定するポリシー機構です。クォータとは、クォータ値を超えた場合に、それ以上のリソースの使用を禁止する確実な制限です。トランスポート クォータは、悪質な、または意図的でないサービス拒否攻撃を防ぎます。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] トランスポートのクォータの既定値は、控えめなリソース割り当てに基づいています。これらの既定値は開発環境、および小規模のインストール シナリオに適しています。インストールでリソースが不足している場合、または追加リソースが使用可能であるにもかかわらず接続が制限されている場合、サービス管理者は、トランスポート クォータを確認し、個別のクォータ値を調整する必要があります。 + +## トランスポート クォータの種類 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のトランスポートには 3 種類のクォータがあります。 + +- *"タイムアウト"* は、長時間リソースを停滞させることによるサービス拒否攻撃を軽減します。 + +- *"メモリ割り当ての制限"* は、単一の接続によってシステム メモリが消耗され、他の接続へのサービス拒否が発生することを防止します。 + +- *"コレクション サイズの制限"* は、間接的に割り当てられるメモリ、または供給に制限のあるリソースの消費を抑制します。 + +## トランスポート クォータの説明 + ここでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の標準トランスポートである、HTTP\(S\)、TCP\/IP、および名前つきパイプで利用できるトランスポート クォータについて説明します。カスタム トランスポートでは、このリストに含まれない独自の構成可能なクォータを公開できます。カスタム トランスポートのクォータについては、ドキュメントを参照してください。 + + 各クォータ設定では、種類、最小値、および既定値を設定します。クォータの最大値は、クォータの種類によって制限されます。コンピューターの制限により、クォータを最大値に設定できない場合もあります。 + +|名前|型|最小

value|Default

value|説明| +|--------|-------|------------------|-----------------------|--------| +|`ChannelInitializationTimeout`|TimeSpan|1 目盛り|5 秒|最初の読み取り中に、接続が前文の送信を待機する最大時間。このデータは、認証が行われる前に受信されます。この設定は一般に、`ReceiveTimeout` クォータ値よりも大幅に小さな値になります。| +|`CloseTimeout`|TimeSpan|0|1 分|接続の終了を待機する最大時間。これを超えるとトランスポートで例外が発生します。| +|`ConnectionBufferSize`|整数|1|8 KB|基となるトランスポートの送信および受信バッファーのサイズ \(バイト単位\)。サイズの大きなメッセージを送信する場合、バッファー サイズを増やすとスループットを向上させることができます。| +|`IdleTimeout`|TimeSpan|0|2 分|プールされた接続が閉じられるまで、アイドル状態を維持できる最大時間。

この設定はプールされた接続にのみ適用されます。| +|`LeaseTimeout`|TimeSpan|0|5 分|プールされたアクティブな接続の最長有効期間。指定した期間が経過すると、現在の要求の処理後、接続は閉じられます。

この設定はプールされた接続にのみ適用されます。| +|`ListenBacklog`|整数|1|10|リスナーで未処理にできる接続の最大数。エンドポイントへの接続がこれ以上増加すると拒否されます。| +|`MaxBufferPoolSize`|Long|0|512 KB|トランスポートで再使用可能なメッセージ バッファーのプール専用にするメモリの最大値 \(バイト単位\)。プールがメッセージ バッファーを供給できない場合、新しいバッファーが一時的な使用のために割り当てられます。

多数のチャネル ファクトリまたはリスナーを作成するインストールでは、バッファー プールに多くのメモリが割り当てられることがあります。このバッファー サイズを縮小すると、このシナリオにおけるメモリ使用量を大幅に削減できることがあります。| +|`MaxBufferSize`|整数|1|64 KB|ストリーミング データ用に使用されるバッファーの最大サイズ \(バイト単位\)。このトランスポート クォータが設定されていない、またはトランスポートがストリーミングを使用しない場合、このクォータ値は `MaxReceivedMessageSize` クォータ値と の小さい方と同じになります。| +|`MaxOutboundConnectionsPerEndpoint`|整数|1|10|特定のエンドポイントに関連付けることのできる送信接続の最大数。

この設定はプールされた接続にのみ適用されます。| +|`MaxOutputDelay`|TimeSpan|0|200 ミリ秒|送信操作後に 1 回の操作で追加メッセージをバッチ処理するために待機する最大時間。基になるトランスポートのバッファーがいっぱいになると、メッセージはより早い時期に送信されます。追加のメッセージの送信によって遅延時間がリセットされることはありません。| +|`MaxPendingAccepts`|整数|1|1|リスナーで待機状態にできるチャネルの受け入れの最大数。

受け入れの完了と新しい受け入れの開始との間には、時間的な間隔があります。このコレクション サイズを大きくすると、この時間間隔内に接続するクライアントが切断されるのを防ぎます。| +|`MaxPendingConnections`|整数|1|10|アプリケーションによる受け入れをリスナーで待機できる最大接続数。このクォータ値を超過すると、新規の受信接続は受け入れられるのを待機せずに切断されます。

メッセージ セキュリティのような接続機能では、クライアントは複数の接続を開くことがあります。このクォータ値を設定する場合、サービス管理者はこのような追加の接続も考慮する必要があります。| +|`MaxReceivedMessageSize`|Long|1|64 KB|ヘッダーを含む、受信メッセージの最大サイズ \(バイト単位\)。これを超えるとトランスポートで例外が発生します。| +|`OpenTimeout`|TimeSpan|0|1 分|接続の確立を待機する最大時間。これを超えるとトランスポートで例外が発生します。| +|`ReceiveTimeout`|TimeSpan|0|10 分|読み取り操作の完了を待機する最大時間。これを超えるとトランスポートで例外が発生します。| +|`SendTimeout`|Timespan|0|1 分|書き込み操作の完了を待機する最大時間。これを超えるとトランスポートで例外が発生します。| + + トランスポート クォータ `MaxPendingConnections` および `MaxOutboundConnectionsPerEndpoint` は、バインディングまたは構成を使用して設定される場合には、`MaxConnections` トランスポート クォータと呼ばれる単一のクォータに結合されます。これらのクォータ値を個別に設定できるのは、バインド要素に限られます。`MaxConnections` トランスポート クォータでは、最小値と既定値が同じになります。 + +## トランスポート クォータの設定 + トランスポート クォータは、トランスポート バインド要素、トランスポート バンディング、アプリケーション構成、またはホスト ポリシーを介して設定されます。このドキュメントでは、ホスト ポリシーを介したトランスポートの設定については説明しません。ホスト ポリシー クォータの設定については、基になるトランスポートのドキュメントを参照してください。Http.sys ドライバーのクォータ設定については「[HTTP および HTTPS の構成](../../../../docs/framework/wcf/feature-details/configuring-http-and-https.md)」を参照してください。HTTP、TCP\/IP、および名前付きパイプの接続で Windows の制限を構成する詳細については、マイクロソフト サポート技術情報を検索してください。 + + 他の種類のクォータは、トランスポートへ間接的に適用されます。トランスポートがメッセージをバイトに変換するために使用するメッセージ エンコーダーには、独自のクォータ設定があります。ただし、これらのクォータは使用されているトランスポートの種類に依存しません。 + +### バインド要素によるトランスポート クォータの制御 + バインド要素を介してトランスポート クォータを設定した場合、トランスポートの動作を最も柔軟に制御できます。閉じる、開く、受信、送信の各操作の既定のタイムアウトは、チャネルを構築したときにバインディングから設定されます。 + +|名前|HTTP|TCP\/IP|名前付きパイプ| +|--------|----------|-------------|-------------| +|`ChannelInitializationTimeout`||X|X| +|`CloseTimeout`|||| +|`ConnectionBufferSize`||X|X| +|`IdleTimeout`||X|X| +|`LeaseTimeout`||X|| +|`ListenBacklog`||X|| +|`MaxBufferPoolSize`|X|X|X| +|`MaxBufferSize`|X|X|X| +|`MaxOutboundConnectionsPerEndpoint`||X|X| +|`MaxOutputDelay`||X|X| +|`MaxPendingAccepts`||X|X| +|`MaxPendingConnections`||X|X| +|`MaxReceivedMessageSize`|X|X|X| +|`OpenTimeout`|||| +|`ReceiveTimeout`|||| +|`SendTimeout`|||| + +### バインディングによるトランスポート クォータの制御 + バインディングによるトランスポート クォータの設定では、選択対象のクォータがセットにまとめられます。ただし、最も一般的に使用するクォータ値にはアクセスできます。 + +|名前|HTTP|TCP\/IP|名前付きパイプ| +|--------|----------|-------------|-------------| +|`ChannelInitializationTimeout`|||| +|`CloseTimeout`|X|X|X| +|`ConnectionBufferSize`|||| +|`IdleTimeout`|||| +|`LeaseTimeout`|||| +|`ListenBacklog`||X|| +|`MaxBufferPoolSize`|X|X|X| +|`MaxBufferSize`|1|X|X| +|`MaxOutboundConnectionsPerEndpoint`||2|2| +|`MaxOutputDelay`|||| +|`MaxPendingAccepts`|||| +|`MaxPendingConnections`||2|2| +|`MaxReceivedMessageSize`|X|X|X| +|`OpenTimeout`|X|X|X| +|`ReceiveTimeout`|X|X|X| +|`SendTimeout`|X|X|X| + +1. `MaxBufferSize` トランスポート クォータは、`BasicHttp` バインディングでのみ使用可能です。`WSHttp` バインディングは、ストリーミング トランスポート モードがサポートされないシナリオに対応します。 + +2. トランスポート クォータ `MaxPendingConnections` および `MaxOutboundConnectionsPerEndpoint` は、`MaxConnections` トランスポート クォータと呼ばれる単一のクォータに結合されます。 + +### 構成によるトランスポート クォータの制御 + アプリケーション構成からバインディング上のプロパティに直接アクセスして、同じトランスポート クォータを設定できます。構成ファイルでは、トランスポート クォータの名前は必ず小文字で始めます。たとえば、バインディングの `CloseTimeout` プロパティは構成では `closeTimeout` 設定に対応し、バインディングの `MaxConnections` プロパティは構成では `maxConnections` 設定に対応します。 + +## 参照 + + + + + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transport-security-overview.md b/docs/framework/wcf/feature-details/transport-security-overview.md new file mode 100644 index 00000000000..dc3ac567f65 --- /dev/null +++ b/docs/framework/wcf/feature-details/transport-security-overview.md @@ -0,0 +1,128 @@ +--- +title: "トランスポート セキュリティの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 00959326-aa9d-44d0-af61-54933d4adc7f +caps.latest.revision: 23 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 23 +--- +# トランスポート セキュリティの概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のトランスポート セキュリティ機構は、使用するバインディングとトランスポートによって異なります。 たとえばを使用する場合、 クラスで、トランスポートは HTTP であり、トランスポート セキュリティで保護するための主要機構 Secure Sockets Layer (SSL) over HTTP、HTTPS と呼ばします。 このトピックでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] システムに用意されたバインディングで使用する主要なトランスポート セキュリティ機構について説明します。 + +> [!NOTE] +> SSL セキュリティを .NET Framework 3.5 以降と共に使用すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントは、証明書ストア内の中間証明書と SSL ネゴシエーション中に受信した中間証明書の両方を使用して、サービスの証明書に対して証明書チェーンの検証を実行します。 .NET Framework 3.0 では、ローカルの証明書ストアにインストールされている中間証明書のみが使用されます。 + +> [!WARNING] +> トランスポート セキュリティを使用すると、 プロパティが上書きされる可能性があります。 設定しないように、 "なし"にします。 はサービスの説明で設定できるサービス動作です。 + +## BasicHttpBinding + 既定では、 クラスでは、セキュリティは提供されません。 このバインディングは、セキュリティを実装していない Web サービス プロバイダーとの相互運用性のためにデザインされています。 ただしを設定することでセキュリティに切り替えることができます、プロパティ以外の値をします。 トランスポート セキュリティを有効にする、プロパティを設定します。 + +### IIS との相互運用性 + クラスは、既存の Web サービスと相互運用する、主に使用され、それらのサービスの多くでインターネット インフォメーション サービス (IIS) によってをホストします。 そのため、このバインディングのトランスポート セキュリティは、IIS サイトとシームレスに相互運用できるようにデザインされています。 これは、セキュリティ モードを設定することでし、クライアント資格情報の種類を設定します。 資格情報の種類の値は、IIS ディレクトリのセキュリティ機構に対応しています。 モードを設定し、資格情報の種類を Windows に設定するコードを次に示します。 この構成は、クライアントとサーバーが同じ Windows ドメインに存在する場合に使用できます。 + + [!code-csharp[c_ProgrammingSecurity#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_programmingsecurity/cs/source.cs#10)] + [!code-vb[c_ProgrammingSecurity#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_programmingsecurity/vb/source.vb#10)] + + または、次のように構成します。 + +```xml + + + + + + + + + +``` + + 以下のセクションでは、その他のクライアント資格情報の種類について説明します。 + +#### 基本 + これは、IIS の基本認証方法に対応しています。 このモードを使用する場合は、Windows ユーザー アカウントと、適切な NTFS ファイル システムのアクセス許可を使用して IIS サーバーを構成する必要があります。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)][!INCLUDE[iis601](../../../../includes/iis601-md.md)]を参照してください[基本認証の有効化と領域名の構成](http://go.microsoft.com/fwlink/?LinkId=88592)します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)][!INCLUDE[iisver](../../../../includes/iisver-md.md)]、を参照してください[IIS 7.0 Beta: Configure Basic Authentication](http://go.microsoft.com/fwlink/?LinkId=88593)します。 + +#### 証明書 + IIS には、クライアントに証明書を使用してログオンすることを要求するオプションがあります。 この機能により、IIS はクライアント証明書を Windows アカウントにマップすることもできます。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)][!INCLUDE[iis601](../../../../includes/iis601-md.md)]を参照してください[Enabling Client Certificates in IIS 6.0](http://go.microsoft.com/fwlink/?LinkId=88594)します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)][!INCLUDE[iisver](../../../../includes/iisver-md.md)]を参照してください[IIS 7.0 Beta: Configuring Server Certificates in IIS 7.0](http://go.microsoft.com/fwlink/?LinkId=88595)します。 + +#### Digest + ダイジェスト認証は基本認証と似ていますが、資格情報をクリア テキストではなくハッシュとして送信できるという利点があります。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)][!INCLUDE[iis601](../../../../includes/iis601-md.md)]を参照してください[IIS 6.0 のダイジェスト認証](http://go.microsoft.com/fwlink/?LinkID=88443)します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)][!INCLUDE[iisver](../../../../includes/iisver-md.md)]、を参照してください[IIS 7.0 Beta: Configure Digest Authentication](http://go.microsoft.com/fwlink/?LinkId=88596)します。 + +#### Windows + これは、IIS の統合 Windows 認証に対応しています。 この値に設定する場合、サーバーは、Kerberos プロトコルを使用する Windows ドメインにドメイン コントローラーとして存在することにもなっています。 サーバーが Kerberos ベースのドメインに存在しない場合、または Kerberos システムに障害が発生した場合は、次のセクションで説明する NTLM (NT LAN Manager) 値を使用できます。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)][!INCLUDE[iis601](../../../../includes/iis601-md.md)]を参照してください[IIS 6.0 で統合 Windows 認証](http://go.microsoft.com/fwlink/?LinkId=88597)します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)][!INCLUDE[iisver](../../../../includes/iisver-md.md)]を参照してください[IIS 7.0 Beta: Configuring Server Certificates in IIS 7.0](http://go.microsoft.com/fwlink/?LinkId=88595)します。 + +#### NTLM + この値を使用すると、Kerberos プロトコルが失敗した場合に、サーバーは、NTLM を使用して認証を実行できます。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]IIS を構成して[!INCLUDE[iis601](../../../../includes/iis601-md.md)]を参照してください[強制的に NTLM 認証](http://go.microsoft.com/fwlink/?LinkId=88598)します。 [!INCLUDE[iisver](../../../../includes/iisver-md.md)] では、Windows 認証に NTLM 認証が含まれます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][IIS 7.0 Beta: Configuring Server Certificates in IIS 7.0](http://go.microsoft.com/fwlink/?LinkID=88595)します。 + +## WsHttpBinding + クラスが ws-を実装するサービスと相互運用のために設計されています * の仕様です。 このバインディングのトランスポート セキュリティは、SSL (Secure Sockets Layer) over HTTP または HTTPS です。 SSL を使用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションを作成するには、IIS を使用してアプリケーションをホストします。 自己ホスト型アプリケーションを作成する場合は、HttpCfg.exe ツールを使用して、X.509 証明書をコンピューターの特定のポートにバインドします。 ポート番号は、エンドポイント アドレスとして [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションの一部に指定されます。 トランスポート モードを使用する場合は、エンドポイント アドレスに HTTPS プロトコルを含める必要があります。そうしないと、実行時に例外が発生します。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][HTTP トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/http-transport-security.md)します。 + + クライアントの認証設定、 のプロパティ、 クラスのいずれかに、 列挙値。 列挙値が同一のクライアント資格情報の種類を IIS のサービスでホストされるように設計されています。 + + クライアント資格情報の種類が Windows の場合に使用するバインディングの例を次に示します。 + + [!code-csharp[c_ProgrammingSecurity#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_programmingsecurity/cs/source.cs#11)] + [!code-vb[c_ProgrammingSecurity#11](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_programmingsecurity/vb/source.vb#11)] + +## WSDualHttpBinding + このバインディングが提供するのは、トランスポート レベルのセキュリティではなく、メッセージ レベルのセキュリティだけです。 + +## NetTcpBinding + クラスは、メッセージ トランスポートに TCP を使用します。 トランスポート モードのセキュリティは、TLS (Transport Layer Security) over TCP を実装することによって実現されます。 TLS 実装は、オペレーティング システムによって提供されます。 + + 設定して、クライアントの資格情報の種類を指定することも、 のプロパティ、 クラスのいずれかに、 値は、次のコードに示すようにします。 + + [!code-csharp[c_ProgrammingSecurity#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_programmingsecurity/cs/source.cs#12)] + [!code-vb[c_ProgrammingSecurity#12](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_programmingsecurity/vb/source.vb#12)] + +#### クライアント + クライアントを使用して、証明書を指定する必要があります、 のメソッド、 クラスです。 + +> [!NOTE] +> Windows セキュリティを使用している場合には、証明書は不要です。 + + 証明書の拇印を使用するコードを次に示します。拇印により、証明書が一意に識別されます。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]証明書を参照してください[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)します。 + + [!code-csharp[c_ProgrammingSecurity#13](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_programmingsecurity/cs/source.cs#13)] + [!code-vb[c_ProgrammingSecurity#13](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_programmingsecurity/vb/source.vb#13)] + + または、証明書をクライアントの構成に指定を使用して、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md)動作セクション内の要素。 + +```xml + + + + + + + + +``` + +## NetNamedPipeBinding + クラスが効率的なマシン間の通信用に設計されています。 つまり、プロセスの名前付きパイプ チャネルは、同じコンピューターで実行されている間に作成できる、同じネットワーク上の&2; 台のコンピューターです。 このバインディングが提供するのは、トランスポート レベルのセキュリティだけです。 このバインディングを使用してアプリケーションを作成する場合は、エンドポイント アドレスにプロトコルとして "net.pipe" を含める必要があります。 + +## WSFederationHttpBinding + このバインディングが発行されたトークンを使用して、HTTPS と呼ばれる、HTTP 経由で SSL を使用するトランスポート セキュリティを使用する場合 ()。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]フェデレーション アプリケーションを参照してください[フェデレーションと発行されたトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md)します。 + +## NetPeerTcpBinding + クラスはセキュリティで保護されたトランスポートでは、ピア ツー ピア ネットワーク機能を使用して効率的に通信するためです。 クラスとバインディングの名前が示すように、プロトコルは TCP です。 セキュリティ モードが Transport に設定されている場合、このバインディングは TLS over TCP を実装します。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]ピア ツー ピア機能を参照してください[ピア ツー ピア ネットワーク](../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md)します。 + +## MsmqIntegrationBinding と NetMsmqBinding + トランスポートの詳細についてはセキュリティとメッセージ キュー (MSMQ と呼ばれていた) を参照してください[トランスポート セキュリティを使用してメッセージをセキュリティで保護する](../../../../docs/framework/wcf/feature-details/securing-messages-using-transport-security.md)です。 + +## 関連項目 + [WCF セキュリティのプログラミング](../../../../docs/framework/wcf/feature-details/programming-wcf-security.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transport-security-with-an-anonymous-client.md b/docs/framework/wcf/feature-details/transport-security-with-an-anonymous-client.md new file mode 100644 index 00000000000..50ab9c34343 --- /dev/null +++ b/docs/framework/wcf/feature-details/transport-security-with-an-anonymous-client.md @@ -0,0 +1,125 @@ +--- +title: "トランスポート セキュリティと匿名クライアント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 056653a5-384e-4a02-ae3c-1b0157d2ccb4 +caps.latest.revision: 14 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 14 +--- +# トランスポート セキュリティと匿名クライアント +この [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] シナリオでは、トランスポート セキュリティ \(HTTPS\) を使用して機密性と整合性を確保します。サーバーは SSL \(Secure Sockets Layer\) 証明書で認証される必要があり、クライアントはサーバーの証明書を信頼する必要があります。クライアントを認証する機構はないため、匿名となります。 + + サンプル アプリケーションについては、「[WS トランスポート セキュリティ](../../../../docs/framework/wcf/samples/ws-transport-security.md)」を参照してください。トランスポート セキュリティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[トランスポート セキュリティの概要](../../../../docs/framework/wcf/feature-details/transport-security-overview.md)」を参照してください。 + + サービスでの証明書の使用方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」および「[方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md)」を参照してください。 + + ![匿名クライアントを使用する場合のトランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/media/8fa2e931-0cfb-4aaa-9272-91d652b85d8d.gif "8fa2e931\-0cfb\-4aaa\-9272\-91d652b85d8d") + +|特性|説明| +|--------|--------| +|セキュリティ モード|トランスポート| +|相互運用性|既存の Web サービスとクライアントを使用する| +|認証 \(サーバー\)

認証 \(クライアント\)|○

アプリケーション レベル \([!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサポートなし\)| +|整合性|○| +|機密性|○| +|トランスポート|HTTPS| +|バインディング|| + +## サービス + 次のコードと構成は、別々に実行します。以下のいずれかを実行します。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成しますが、エンドポイントを定義しません。 + +### コード + 次のコードは、トランスポート セキュリティを使用してエンドポイントを作成する方法を示しています。 + + [!code-csharp[c_SecurityScenarios#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#5)] + [!code-vb[c_SecurityScenarios#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#5)] + +### 構成 + 次のコードは、次に示す構成を使用して同一のエンドポイントをセットアップします。クライアントを認証する機構はないため、匿名となります。 + +``` + + + + + + + + + + + + + + + + + + + + +``` + +## クライアント + 次のコードと構成は、別々に実行します。以下のいずれかの操作を行います。 + +- コード \(およびクライアント コード\) を使用してスタンドアロン クライアントを作成します。 + +- エンドポイント アドレスを定義しないクライアントを作成します。代わりに、引数として構成名を受け取るクライアント コンストラクターを使用します。例 : + + [!code-csharp[C_SecurityScenarios#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#0)] + [!code-vb[C_SecurityScenarios#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#0)] + +### コード + [!code-csharp[c_SecurityScenarios#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#6)] + [!code-vb[c_SecurityScenarios#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#6)] + +### 構成 + コードの代わりに次の構成を使用して、サービスをセットアップできます。 + +``` + + + + + + + + + + + + + + + + +``` + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [WS トランスポート セキュリティ](../../../../docs/framework/wcf/samples/ws-transport-security.md) + [トランスポート セキュリティの概要](../../../../docs/framework/wcf/feature-details/transport-security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transport-security-with-basic-authentication.md b/docs/framework/wcf/feature-details/transport-security-with-basic-authentication.md new file mode 100644 index 00000000000..9136e972b07 --- /dev/null +++ b/docs/framework/wcf/feature-details/transport-security-with-basic-authentication.md @@ -0,0 +1,124 @@ +--- +title: "基本認証でのトランスポート セキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b54f491d-196b-4279-876c-76b83ec0442c +caps.latest.revision: 18 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 18 +--- +# 基本認証でのトランスポート セキュリティ +次の図は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のサービスとクライアントを示しています。 サーバーには、SSL \(Secure Sockets Layer\) に使用できる有効な X509 証明書が必要であり、クライアントはサーバーの証明書を信頼する必要があります。 さらに、Web サービスには使用可能な SSL が既に実装されています。 インターネット インフォメーション サービス \(IIS\) で基本認証を有効にする方法についての[!INCLUDE[crabout](../../../../includes/crabout-md.md)] 「[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=83822](http://go.microsoft.com/fwlink/?LinkId=83822)」を参照してください。 + + ![基本認証を使用する場合のトランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/media/securedbyusername.gif "SecuredbyUsername") + +|特徴|説明| +|--------|--------| +|セキュリティ モード|Transport| +|相互運用性|既存の Web サービス クライアントとサービスを使用する| +|認証 \(サーバー\)

認証 \(クライアント\)|○ \(HTTPS を使用\)

○ \(ユーザー名とパスワードを使用\)| +|整合性|はい| +|機密性|はい| +|Transport|HTTPS| +|バインディング|| + +## サービス + 次のコードと構成は、別々に実行します。 次のいずれかの操作を行います。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成しますが、エンドポイントを定義しません。 + +### コード + 次のコードでは、転送セキュリティ用の Windows ドメイン ユーザー名とパスワードを使用するサービス エンドポイントを作成する方法を示します。 サービスには、クライアントに対する認証を行うための X 509 証明書が必要になります。 詳細については、「[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」および「[方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md)」を参照してください。 + + [!code-csharp[C_SecurityScenarios#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#1)] + [!code-vb[C_SecurityScenarios#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#1)] + +## 構成 + 次の例では、トランスポート レベルのセキュリティの基本認証を使用するサービスを構成します。 + +``` + + + + + + + + + + + + + + + + + + + +``` + +## Client + +### コード + 次のコードは、ユーザー名とパスワードが含まれるクライアント コードを示しています。 ユーザーは、有効な Windows ユーザー名とパスワードを指定する必要があります。 ユーザー名とパスワードを返すコードは、ここに示されていません。 ダイアログボックスまたは他のインターフェースを使用して、ユーザーにこれらの情報を照会してください。 + +> [!NOTE] +> ユーザー名とパスワードは、コードを使ってのみ設定できます。 + + [!code-csharp[C_SecurityScenarios#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#2)] + [!code-vb[C_SecurityScenarios#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#2)] + +### 構成 + 次のコードは、クライアントの構成を示しています。 + +> [!NOTE] +> 構成を使用してユーザー名とパスワードを設定することはできません。 ここに示した構成には、ユーザー名とパスワードを設定するためのコードを補う必要があります。 + +``` + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + [証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md) + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [\](../../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transport-security-with-certificate-authentication.md b/docs/framework/wcf/feature-details/transport-security-with-certificate-authentication.md new file mode 100644 index 00000000000..5527ebc8950 --- /dev/null +++ b/docs/framework/wcf/feature-details/transport-security-with-certificate-authentication.md @@ -0,0 +1,150 @@ +--- +title: "トランスポート セキュリティと証明書認証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3d726b71-4d8b-4581-a3bb-02b9af51d11b +caps.latest.revision: 20 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 20 +--- +# トランスポート セキュリティと証明書認証 +このトピックでは、トランスポート セキュリティを使用する場合にサーバーとクライアントの認証に X.509 証明書を使用する方法について説明します。X.509 証明書の詳細については、「[X.509 公開キー証明書](http://msdn.microsoft.com/library/bb540819\(VS.85\).aspx)」を参照してください。証明書は、証明機関によって発行される必要があります。多くの場合、証明機関はサードパーティの証明書発行者です。Windows サーバー ドメインでは、そのドメインのクライアント コンピューターに対して証明書を発行する際に Active Directory 証明書サービスを使用できます。詳細については、「[Windows 2008 R2 証明書サービス](http://go.microsoft.com/fwlink/?LinkID=209949&clcid=0x409)」を参照してください。このシナリオでは、Secure Sockets Layer \(SSL\) を使用して構成されたインターネット インフォメーション サービス \(IIS\) でサービスをホストします。サービスは、クライアントがサーバーの ID を確認するための SSL \(X.509\) 証明書を使用して構成されます。クライアントも、サービスがクライアントの ID を確認するための X.509 証明書を使用して構成されます。サーバーの証明書はクライアントによって信頼されている必要があり、クライアントの証明書はサーバーによって信頼されている必要があります。サービスとクライアントが互いの ID を確認する方法の実際のしくみについては、このトピックでは説明しません。詳細については、Wikipedia の「[デジタル署名](http://go.microsoft.com/fwlink/?LinkId=253157)」を参照してください。 + + このシナリオでは、次の図に示すような要求\/応答のメッセージ パターンを実装します。 + + ![証明書を使用した、セキュリティで保護された転送](../../../../docs/framework/wcf/feature-details/media/8f7b8968-899f-4538-a9e8-0eaa872a291c.gif "8f7b8968\-899f\-4538\-a9e8\-0eaa872a291c") + + サービスでの証明書の使用方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[証明書の使用](../../../../docs/framework/wcf/feature-details/working-with-certificates.md)」および「[方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md)」を参照してください。このシナリオのさまざまな特性を次の表に示します。 + +|特性|説明| +|--------|--------| +|セキュリティ モード|トランスポート| +|相互運用性|既存の Web サービス クライアントおよびサービスとの相互運用性| +|認証 \(サーバー\)

認証 \(クライアント\)|○ \(SSL 証明書を使用\)

○ \(X.509 証明書を使用\)| +|データの整合性|○| +|データの機密性|○| +|トランスポート|HTTPS| +|バインディング|| + +## サービスの構成 + このシナリオのサービスは IIS でホストされるので、web.config ファイルを使用して構成します。次の web.config は、トランスポート セキュリティと X.509 クライアント資格情報を使用するように を構成する方法を示しています。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## クライアントの構成 + クライアントはコードまたは app.config ファイルで構成できます。次の例は、クライアントをコードで構成する方法を示しています。 + +```vb +// Create the binding. +WSHttpBinding myBinding = new WSHttpBinding(); +myBinding.Security.Mode = SecurityMode.Transport; +myBinding.Security.Transport.ClientCredentialType = + HttpClientCredentialType.Certificate; + +// Create the endpoint address. Note that the machine name +// must match the subject or DNS field of the X.509 certificate +// used to authenticate the service. +EndpointAddress ea = new + EndpointAddress("https://localhost/CalculatorService/service.svc"); + +// Create the client. The code for the calculator +// client is not shown here. See the sample applications +// for examples of the calculator code. +CalculatorClient cc = + new CalculatorClient(myBinding, ea); + +// The client must specify a certificate trusted by the server. +cc.ClientCredentials.ClientCertificate.SetCertificate( + StoreLocation.CurrentUser, + StoreName.My, + X509FindType.FindBySubjectName, + "contoso.com"); + +// Begin using the client. +Console.WriteLine(cc.Add(100, 1111)); +//... +cc.Close(); + +``` + + また、次の例のように App.config ファイルでクライアントを構成することもできます。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transport-security-with-windows-authentication.md b/docs/framework/wcf/feature-details/transport-security-with-windows-authentication.md new file mode 100644 index 00000000000..d1d3c23a06e --- /dev/null +++ b/docs/framework/wcf/feature-details/transport-security-with-windows-authentication.md @@ -0,0 +1,127 @@ +--- +title: "トランスポート セキュリティと Windows 認証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 96dd26e2-46e7-4de0-9a29-4fcb05bf187b +caps.latest.revision: 17 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 17 +--- +# トランスポート セキュリティと Windows 認証 +次のシナリオでは、Windows セキュリティによって保護されている [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントおよびサービスを示します。プログラミング[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : Windows 資格情報でサービスをセキュリティで保護する](../../../../docs/framework/wcf/how-to-secure-a-service-with-windows-credentials.md)」を参照してください。 + + イントラネットの Web サービスでは人事情報を表示しています。クライアントは Windows フォーム アプリケーションです。このアプリケーションは、Kerberos コントローラーで保護されたドメインに展開されています。 + + ![Windows 認証を使用する場合のトランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/media/securedbywindows.gif "SecuredByWindows") + +|特性|説明| +|--------|--------| +|セキュリティ モード|トランスポート| +|相互運用性|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のみ| +|認証 \(サーバー\)

認証 \(クライアント\)|○ \(Windows 統合認証を使用\)

○ \(Windows 統合認証を使用\)| +|整合性|○| +|機密性|○| +|トランスポート|NET.TCP| +|バインディング|| + +## サービス + 次のコードと構成は、別々に実行します。以下のいずれかを実行します。 + +- 構成を使用せずに、コードを使用してスタンドアロン サービスを作成します。 + +- 提供された構成を使用してサービスを作成しますが、エンドポイントを定義しません。 + +### コード + 次のコードは、Windows セキュリティを使用するサービス エンドポイントの作成方法を示します。 + + [!code-csharp[C_SecurityScenarios#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#3)] + [!code-vb[C_SecurityScenarios#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#3)] + +### 構成 + コードの代わりに次の構成を使用して、サービス エンドポイントをセットアップできます。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## クライアント + 次のコードと構成は、別々に実行します。以下のいずれかの操作を行います。 + +- コード \(およびクライアント コード\) を使用してスタンドアロン クライアントを作成します。 + +- エンドポイント アドレスを定義しないクライアントを作成します。代わりに、引数として構成名を受け取るクライアント コンストラクターを使用する。次に例を示します。 + + [!code-csharp[C_SecurityScenarios#0](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#0)] + [!code-vb[C_SecurityScenarios#0](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#0)] + +### コード + クライアントを作成する場合のコード例を次に示します。バインディングは、クライアントの資格情報の種類が Windows に設定された、TCP トランスポートによるトランスポート モード セキュリティを使用するように構成されます。 + + [!code-csharp[C_SecurityScenarios#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_securityscenarios/cs/source.cs#4)] + [!code-vb[C_SecurityScenarios#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securityscenarios/vb/source.vb#4)] + +### 構成 + コードの代わりに次の構成を使用して、クライアントを作成できます。 + +``` + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [方法 : Windows 資格情報でサービスをセキュリティで保護する](../../../../docs/framework/wcf/how-to-secure-a-service-with-windows-credentials.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transport-security.md b/docs/framework/wcf/feature-details/transport-security.md new file mode 100644 index 00000000000..05b044bdd97 --- /dev/null +++ b/docs/framework/wcf/feature-details/transport-security.md @@ -0,0 +1,49 @@ +--- +title: "トランスポート セキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 86c94153-e48d-4539-b6cf-cd8060582e7f +caps.latest.revision: 7 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 7 +--- +# トランスポート セキュリティ +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のトランスポート セキュリティは、選択したバインディングに依存します。バインディングが実装するトランスポートによって実際のセキュリティ機構が決まります。このセクションの各トピックでは、実装される機構とそのオプションについて説明します。 + +## このセクションの内容 + [トランスポート セキュリティの概要](../../../../docs/framework/wcf/feature-details/transport-security-overview.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のトランスポート セキュリティの基本について説明します。 + + [HTTP トランスポート セキュリティ](../../../../docs/framework/wcf/feature-details/http-transport-security.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が SSL \(Secure Sockets Layer\)、つまり HTTPS を実装するしくみについて説明します。 + + [HTTP 認証の理解](../../../../docs/framework/wcf/feature-details/understanding-http-authentication.md) + HTTP 認証方式 \(基本、ダイジェスト、NTLM \(NT LAN Manager\) など\) について説明します。 + + [トランスポート セキュリティでの偽装の使用](../../../../docs/framework/wcf/feature-details/using-impersonation-with-transport-security.md) + トランスポート セキュリティ モードで使用できる 5 つの偽装レベルについて説明します。 + + [方法 : SSL 証明書を使用してポートを構成する](../../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md) + SSL \(トランスポート\) セキュリティを実現するために、X.509 証明書を使用してコンピューターのポートを構成する際の基本事項について説明します。 + +## 関連項目 + + + + + + +## 関連項目 + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) + +## 参照 + [WCF セキュリティのプログラミング](../../../../docs/framework/wcf/feature-details/programming-wcf-security.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/transports.md b/docs/framework/wcf/feature-details/transports.md new file mode 100644 index 00000000000..92e768bbda0 --- /dev/null +++ b/docs/framework/wcf/feature-details/transports.md @@ -0,0 +1,65 @@ +--- +title: "Windows Communication Foundation のトランスポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "トランスポート [WCF]" + - "WCF, トランスポート" + - "Windows Communication Foundation, トランスポート" +ms.assetid: 005c894b-af70-48aa-a1c1-c99338083c27 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# Windows Communication Foundation のトランスポート +トランスポート層は、チャネル スタックの最も低いレベルにあります。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] で使用される主なトランスポートは、HTTP、HTTPS、TCP、および名前付きパイプです。このセクションのトピックでは、このようなトランスポートの選択、トランスポートの構成、およびチューニング プロパティの設定について説明します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には追加のトランスポートが含まれています。メッセージ キュー \(MSMQ とも呼ばれます\) については、「[キューと信頼できるセッション](../../../../docs/framework/wcf/feature-details/queues-and-reliable-sessions.md)」を参照してください。ピアツーピア トランスポートについては、「[ピアツーピア ネットワーク](../../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md)」を参照してください。 + +## このセクションの内容 + [トランスポートの選択](../../../../docs/framework/wcf/feature-details/choosing-a-transport.md) + 3 つの主なトランスポートについて説明し、そのうちの 1 つを選択する際の考慮事項を示します。 + + [メッセージ エンコーダーを選択する](../../../../docs/framework/wcf/feature-details/choosing-a-message-encoder.md) + メッセージ エンコーディングのバインド要素を選択する際に考慮する必要のある要因について説明します。 + + [メッセージ転送ストリーミング](../../../../docs/framework/wcf/feature-details/streaming-message-transfer.md) + ストリーミングが行われるようにトランスポート層を構成する方法について説明します。 + + [HTTP および HTTPS の構成](../../../../docs/framework/wcf/feature-details/configuring-http-and-https.md) + HTTP および HTTPS トランスポート バインド要素の構成方法について説明します。 + + [方法: WCF URL 予約を制限付きの予約に置き換える](../../../../docs/framework/wcf/feature-details/how-to-replace-the-wcf-url-reservation-with-a-restricted-reservation.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の URL 制限付き予約の使用方法について説明します。 + + [トランスポート クォータ](../../../../docs/framework/wcf/feature-details/transport-quotas.md) + トランスポート層で使用できるクォータを設定する際の考慮事項について説明します。 + + [NAT とファイアウォールの使用](../../../../docs/framework/wcf/feature-details/working-with-nats-and-firewalls.md) + ファイアウォールを介してメッセージを送受信する場合や、ネットワーク アドレス交換 \(NAT\) が存在する場合にトランスポート層を構成する方法について説明します。 + + [Net.TCP ポート共有](../../../../docs/framework/wcf/feature-details/net-tcp-port-sharing.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の Net.TCP ポート共有コンポーネントの使用方法について説明します。 + +## 関連項目 + + + + + + + + +## 関連項目 + [バインディング](../../../../docs/framework/wcf/feature-details/bindings.md) + + [バインディングの拡張](../../../../docs/framework/wcf/extending/extending-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/troubleshooting-correlation.md b/docs/framework/wcf/feature-details/troubleshooting-correlation.md new file mode 100644 index 00000000000..e5b92984898 --- /dev/null +++ b/docs/framework/wcf/feature-details/troubleshooting-correlation.md @@ -0,0 +1,266 @@ +--- +title: "相関関係のトラブルシューティング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 98003875-233d-4512-a688-4b2a1b0b5371 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 相関関係のトラブルシューティング +相関関係は、ワークフロー サービス メッセージを互いに関連付けたり、正しいワークフロー インスタンスに関連付けたりするために使用されますが、正しく構成されていないと、メッセージが受信されず、アプリケーションが正しく機能しなくなります。ここでは、相関関係のトラブルシューティングのいくつかの方法の概要と、相関関係を使用するときに発生する一般的な問題について説明します。 + +## UnknownMessageReceived イベントの処理 + イベントは、サービスで不明なメッセージ \(既存のインスタンスに関連付けることができないメッセージなど\) が受信されたときに発生します。自己ホスト型サービスでは、このイベントをホスト アプリケーションで処理できます。 + +```csharp +host.UnknownMessageReceived += delegate(object sender, UnknownMessageReceivedEventArgs e) +{ + Console.WriteLine("Unknown Message Received:"); + Console.WriteLine(e.Message); +}; +``` + + Web ホスト サービスでこのイベントを処理するには、まず、 の派生クラスを作成し、 をオーバーライドします。 + +```csharp +class CustomFactory : WorkflowServiceHostFactory +{ + protected override WorkflowServiceHost CreateWorkflowServiceHost(Activity activity, Uri[] baseAddresses) + { + // Create the WorkflowServiceHost. + WorkflowServiceHost host = new WorkflowServiceHost(activity, baseAddresses); + + // Handle the UnknownMessageReceived event. + host.UnknownMessageReceived += delegate(object sender, UnknownMessageReceivedEventArgs e) + { + Console.WriteLine("Unknown Message Received:"); + Console.WriteLine(e.Message); + }; + + return host; + } +} +``` + + 次に、そのカスタムの をサービスの `svc` ファイルで指定します。 + +``` +<% @ServiceHost Language="C#" Service="OrderServiceWorkflow" Factory="CustomFactory" %> +``` + + このハンドラーが呼び出されると、 プロパティを使用して次のようなメッセージを取得できます。 + +```Output + +   +    http://localhost:8080/OrderService +    http://tempuri.org/IService/AddItem +   +   +     +      Books +     +   + + +``` + + ハンドラーにディスパッチされたメッセージを調べることで、メッセージがワークフロー サービスのインスタンスに関連付けられなかった理由の手がかりを得られる可能性があります。 + +## 追跡によるワークフローの進行状況の監視 + 追跡を使用すると、ワークフローの進行状況を監視できます。既定では、ワークフローのライフサイクル イベント、アクティビティのライフサイクル イベント、エラー伝達、およびブックマーク再開に対して追跡レコードが出力されます。そのほかに、カスタム アクティビティでカスタム追跡レコードを出力することもできます。相関関係のトラブルシューティングでは、アクティビティ追跡レコード、ブックマーク再開レコード、およびエラー伝達レコードが最も役立ちます。アクティビティ追跡レコードを使用すると、ワークフローの現在の進行状況を確認したり、現在メッセージを待機しているメッセージング アクティビティを特定したりすることができます。ブックマーク再開レコードを使用すると、ワークフローでメッセージが受信されたかどうかを確認できます。エラー伝達レコードは、ワークフローで発生したエラーの記録を提供します。追跡を有効にするには、 で目的の を指定します。次の例では、既定の追跡プロファイルを使用して `ConsoleTrackingParticipant` \(「[カスタム追跡](../../../../docs/framework/windows-workflow-foundation/samples/custom-tracking.md)」を参照\) を構成しています。 + +```csharp +host.WorkflowExtensions.Add(new ConsoleTrackingParticipant()); +``` + + ConsoleTrackingParticipant などの追跡参加要素は、コンソール ウィンドウを持つ自己ホスト型ワークフロー サービスで使用できます。Web ホスト サービスでは、追跡情報を永続ストアに記録する追跡参加要素 \(組み込みの など\) か、情報をファイルに記録するカスタムの追跡参加要素 \(「[テキスト ファイルを使用した追跡](../../../../docs/framework/windows-workflow-foundation/samples/tracking-using-a-text-file.md)」の `TextWriterTrackingParticpant` など\) を使用する必要があります。 + + Web ホスト ワークフロー サービスの追跡および追跡の構成[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフロー追跡とトレース](../../../../docs/framework/windows-workflow-foundation//workflow-tracking-and-tracing.md)」、「[ワークフローの追跡の構成](../../../../docs/framework/windows-workflow-foundation//configuring-tracking-for-a-workflow.md)」、および「[追跡 [WF サンプル]](../../../../docs/framework/windows-workflow-foundation/samples/tracking.md)」のサンプルを参照してください。 + +## WCF トレースの使用 + WCF トレースは、ワークフロー サービスのメッセージ フローのトレースを提供します。このトレース情報は、相関関係 \(特にコンテンツ ベースの相関関係\) のトラブルシューティングに役立ちます。トレースを有効にするには、`web.config` ファイル \(Web ホスト ワークフロー サービスの場合\) または `app.config` ファイル \(自己ホスト型ワークフロー サービスの場合\) の `system.diagnostics` セクションで目的のトレース リスナーを指定します。トレース ファイルにメッセージの内容を含めるには、`system.serviceModel` の `diagnostics` セクションの `messageLogging` 要素で `logEntireMessage` に対して `true` を指定します。次の例では、メッセージの内容を含むトレース情報を `service.svclog` という名前のファイルに書き込むように構成しています。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + `service.svclog` に含まれているトレース情報を表示するには、[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) を使用します。この方法を使用すると、渡されたメッセージの内容そのものを調べてコンテンツ ベースの相関関係の に一致するかどうかを確認できるため、コンテンツ ベースの相関関係のトラブルシューティングで特に便利です。WCF トレース[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md)」、「[トレースの構成](../../../../docs/framework/wcf/diagnostics/tracing/configuring-tracing.md)」、および「[トレースを使用したアプリケーションのトラブルシューティング](../../../../docs/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application.md)」を参照してください。 + +## コンテキスト交換の相関関係の一般的な問題 + 相関関係の中には、特定の種類のバインドが使用されていないと正しく機能しないものがあります。たとえば、要求\/応答の相関関係には などの双方向のバインドが、コンテキスト交換の相関関係には などのコンテキスト ベースのバインドが必要です。双方向の操作はほとんどのバインドでサポートされているため、要求\/応答の相関関係ではあまり問題になりませんが、コンテキスト ベースのバインドはわずかしかなく \( など\)、それらのいずれかが使用されていないと、ワークフロー サービスへの最初の呼び出しは成功しますが、その後の呼び出しが次の で失敗します。 + +```Output +サービスの受信メッセージにコンテキストが関連付けられておらず、 +現在の操作が "CanCreateInstance = true" でマークされていません。 +このサービスと通信するには、受信したバインドでコンテキスト プロトコルが +サポートされているかどうか、有効なコンテキストが初期化されているかどうかを確認してください。 +``` + + コンテキスト相関関係に使用されるコンテキスト情報は、双方向の操作が使用されている場合は から \(コンテキスト相関関係を初期化する\) アクティビティに返され、操作が一方向の場合は呼び出し元によって指定されます。コンテキストが呼び出し元によって送信されず、ワークフロー サービスからも返されない場合は、後続の操作が呼び出されたときに上述の が返されます。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [コンテキスト交換](../../../../docs/framework/wcf/feature-details/context-exchange-correlation.md). + +## 要求\/応答の相関関係の一般的な問題 + 要求\/応答の相関関係は、 のペアと使用すると、ワークフロー サービスに双方向の操作を実装でき、 のペアと使用すると、別の Web サービスの双方向の操作を呼び出すことができます。WCF サービスの双方向の操作を呼び出す場合、このサービスには、従来の命令型のコード ベースの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを使用することも、ワークフロー サービスを使用することもできます。要求\/応答の相関関係を使用するには、 などの双方向のバインドを使用する必要があります。操作が双方向である必要もあります。 + + ワークフロー サービスで、並行または重複する \/ のペアまたは \/ のペアに双方向の操作があると、 によって提供される暗黙の関連付けハンドル管理が \(特に高負荷のシナリオで\) 不十分となり、メッセージが正しくルーティングされなくなる可能性があります。この問題が発生しないようにするために、要求\/応答の相関関係を使用する際には常に を明示的に指定することをお勧めします。ワークフロー デザイナーの **\[ツールボックス\]** の \[メッセージング\] セクションにある **SendAndReceiveReply** テンプレートと **ReceiveAndSendReply** テンプレートを使用すると、 が既定で明示的に構成されます。コードを使用してワークフローを作成する場合は、ペアの最初のアクティビティの を指定します。次の例では、 を明示的に指定して アクティビティを構成しています。 + +```csharp +Variable RRHandle = new Variable(); + +Receive StartOrder = new Receive +{ + CanCreateInstance = true, + ServiceContractName = OrderContractName, + OperationName = "StartOrder", + CorrelationInitializers = + { + new RequestReplyCorrelationInitializer + { + CorrelationHandle = RRHandle + } + } +}; + +SendReply ReplyToStartOrder = new SendReply +{ + Request = StartOrder, + Content = ... // Contains the return value, if any. +}; + +// Construct a workflow using StartOrder and ReplyToStartOrder. +``` + + \/ のペアや \/ のペアの間で永続化を使用することはできません。両方のアクティビティが完了するまで存続する非永続化ゾーンが作成されます。遅延アクティビティなどのアクティビティがこの非永続化ゾーンにあって、ワークフローのアイドル状態を引き起こした場合、ホストでワークフローがアイドル状態になったときにワークフローを永続化するようにホストが構成されていても、ワークフローは永続化されません。Persist アクティビティなどのアクティビティが非永続化ゾーンで明示的に永続化を試みた場合、致命的な例外がスローされ、ワークフローが中止されて、 が呼び出し元に返されます。次の致命的な例外メッセージが表示されます。"System.InvalidOperationException: 持続性のないブロックに Persist アクティビティを含めることはできません。"この例外は呼び出し元に返されませんが、追跡が有効になっている場合は確認できます。呼び出し元に返される のメッセージは、"WorkflowInstance '5836145b\-7da2\-49d0\-a052\-a49162adeab6' が完了しているため、操作を実行できませんでした" です。 + + 要求\/応答の相関関係[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[要求\/応答](../../../../docs/framework/wcf/feature-details/request-reply-correlation.md)」を参照してください。 + +## コンテンツ ベースの相関関係の一般的な問題 + コンテンツ ベースの相関関係は、ワークフロー サービスが複数のメッセージを受信し、交換されるメッセージ内の一部のデータによって目的のインスタンスが識別される場合に使用されます。コンテンツ ベースの相関関係では、顧客番号や注文 ID などのメッセージ内のデータを使用して、適切なワークフロー インスタンスにメッセージをルーティングします。ここでは、コンテンツ ベースの相関関係を使用するときに発生するいくつかの一般的な問題について説明します。 + +### 識別データが一意であることの確認 + インスタンスの識別に使用されるデータは、相関関係キーにハッシュされます。相関関係による関連付けで使用するデータは必ず、一意にする必要があります。一意でない場合は、ハッシュされたキーで競合が発生し、誤った場所にメッセージがルーティングされる可能性があります。たとえば、顧客名だけに基づいた関連付けでは、同じ名前の顧客が複数存在する場合があるため、競合が発生する可能性があります。メッセージの関連付けに使用するデータの一部として、コロン \(:\) を使用することはできません。コロンは、メッセージ クエリのキーと値の区切り文字として既に使用されており、後でハッシュされる文字列に含まれるためです。永続化を使用している場合は、現在の識別データが、以前に永続化されたインスタンスによって使用されていないかどうかを確認する必要があります。この問題は、永続化を一時的に無効にすることによって特定できます。WCF トレースを使用すると、計算された相関関係キーを表示できるため、この種の問題のデバッグに役立ちます。 + +### 競合状態 + サービスがメッセージを受信してから実際に相関関係が初期化されるまでにはわずかな時間差があり、その間は後続のメッセージが無視されます。ワークフロー サービスで、クライアントから一方向の操作で渡されるデータを使用してコンテンツ ベースの相関関係が初期化される場合に、呼び出し元が後続のメッセージをすぐに送信すると、この時間差の間それらのメッセージが無視されます。この問題を回避するには、双方向の操作を使用して相関関係を初期化するか、 を使用します。 + +### 関連付けクエリについての問題 + 関連付けクエリは、メッセージの関連付けに使用するメッセージ内のデータを指定するために使用されます。このデータは、XPath クエリを使用して指定します。特に問題がないように見えるにもかかわらず、サービスへのメッセージがディスパッチされない場合は、トラブルシューティングの手法として、メッセージ データの値に一致するリテラル値を XPath クエリの代わりに指定することができます。リテラル値を指定するには `string` 関数を使用します。次の例では、`OrderId` に対して `11445` というリテラル値を使用するように が構成されています。XPath クエリはコメント アウトされています。 + +```csharp +MessageQuerySet = new MessageQuerySet +{ + { + "OrderId", + //new XPathMessageQuery("sm:body()/tempuri:StartOrderResponse/tempuri:OrderId") + new XPathMessageQuery("string('11445')") + } +} +``` + + 関連付けデータが取得されないなど、XPath クエリが正しく構成されていない場合、次のメッセージと共にエラーが返されます。"関連付けクエリで空の結果セットが生成されました。エンドポイントの関連付けクエリが正しく構成されていることを確認してください。"前のセクションで説明したとおり、XPath クエリをリテラル値と置換すると、すばやくトラブルシューティングすることができます。この問題は、**\[関連付け初期化子の追加\]** ダイアログ ボックスまたは **\[CorrelatesOn の定義\]** ダイアログ ボックスで XPath クエリ ビルダーを使用し、ワークフロー サービスでメッセージ コントラクトが使用された場合に発生する可能性があります。次の例では、メッセージ コントラクト クラスを定義します。 + +```csharp +[MessageContract] +public class AddItemMessage +{ + [MessageHeader] + public string CartId; + + [MessageBodyMember] + public string Item; +} + +``` + + このメッセージ コントラクトはワークフローの アクティビティで使用されます。メッセージのヘッダーにある `CartId` は、メッセージを正しいインスタンスに関連付けるために使用されます。`CartId` を取得する XPath クエリがワークフロー デザイナーの関連付けダイアログを使用して作成される場合、次の正しくないクエリが生成されます。 + +``` +sm:body()/xg0:AddItemMessage/xg0:CartId + +``` + + アクティビティがデータのパラメーターを使用した場合、この XPath クエリは正しいですが、メッセージ コントラクトを使用しているため、誤りとなります。次の XPath クエリがヘッダーから `CartId` を取得するために正しい XPath クエリです。 + +``` +sm:header()/tempuri:CartId + +``` + + これはメッセージの本文を調べて確認することができます。 + +```xml + + + http://tempuri.org/IService/AddItem + 80c95b41-c98d-4660-a6c1-99412206e54c + + + + Books + + + + +``` + + 次の例では、データを受信するために前のメッセージ コントラクトを使用する `AddItem` 操作のために構成された アクティビティを示します。XPath クエリは正しく構成されています。 + +```xaml + + + + + + http://schemas.datacontract.org/2004/07/MessageContractWFService + + sm:header()/tempuri:CartId + + + [AddItemMessage] + + + +``` + + コンテンツ ベースの相関関係[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[コンテンツ ベース](../../../../docs/framework/wcf/feature-details/content-based-correlation.md)」および「[相関電卓](../../../../docs/framework/windows-workflow-foundation/samples/correlated-calculator.md)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/troubleshooting-queued-messaging.md b/docs/framework/wcf/feature-details/troubleshooting-queued-messaging.md new file mode 100644 index 00000000000..cdb9155b8c0 --- /dev/null +++ b/docs/framework/wcf/feature-details/troubleshooting-queued-messaging.md @@ -0,0 +1,215 @@ +--- +title: "キューに置かれたメッセージングのトラブルシューティング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a5f2836f-018d-42f5-a571-1e97e64ea5b0 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# キューに置かれたメッセージングのトラブルシューティング +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でのキューの使用に関する一般的な質問とトラブルシューティング ヘルプについて説明します。 + +## 一般的な質問 + **Q:** [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Beta 1 を使用しているときに MSMQ 修正プログラムをインストールしました。この修正プログラムを削除する必要がありますか。 + + **A:** 必要があります。この修正プログラムのサポートは終了しています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、現在、MSMQ で正常に動作し、修正プログラムは不要です。 + + **Q:** MSMQ 用のバインディングには、 の 2 つがあります。それぞれの用途を教えてください。 + + **A:** を使用するのは、2 つの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーション間でのキューを使用した通信にトランスポートとして MSMQ を使用する場合です。また、 を使用するのは、既存の MSMQ アプリケーションを使用して、新しい [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションと通信する場合です。 + + **Q:** バインディングと `MsmqIntegration` バインディングを使用するには、MSMQ をアップグレードする必要がありますか。 + + **A:** 必要ありません。これらは共に [!INCLUDE[wxp](../../../../includes/wxp-md.md)] および [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] 上の MSMQ 3.0 で使用できます。[!INCLUDE[wv](../../../../includes/wv-md.md)] で MSMQ 4.0 にアップグレードすると、バインディングの特定の機能が使用可能になります。 + + **Q:** バインディングと バインディングの機能のうち、MSMQ 4.0 では使用できるが MSMQ 3.0 では使用できないのはどれですか。 + + **A:** MSMQ 4.0 では使用できても MSMQ 3.0 では使用できない機能は次のとおりです。 + +- カスタム配信不能キューは、MSMQ 4.0 でのみサポートされます。 + +- MSMQ 3.0 と 4.0 では、有害メッセージの処理方法が異なります。 + +- MSMQ 4.0 のみが、リモート トランザクション読み取りをサポートします。 + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [Windows Vista、Windows Server 2003、および Windows XP におけるキュー機能の相違点](../../../../docs/framework/wcf/feature-details/diff-in-queue-in-vista-server-2003-windows-xp.md). + + **Q:** キューを使用する通信の一方の側で MSMQ 3.0 を使用し、もう一方の側で MSMQ 4.0 を使用できますか。 + + **A:** 使用できます。 + + **Q:** 既存の MSMQ アプリケーションを新しい [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントまたはサーバーと統合しようと考えています。使用している MSMQ インフラストラクチャの両方の側をアップグレードする必要がありますか。 + + **A:** 必要ありません。どちら側も MSMQ 4.0 にアップグレードする必要はありません。 + +## トラブルシューティング + ここでは、一般的なトラブルシューティングの問題に対する解答を示します。既知の制限である一部の問題は、リリース ノートにも記載されています。 + + **Q:** プライベート キューを使用しようとすると、次の例外が表示されます。`System.InvalidOperationException` : この URL は無効です。キューの URL に '$' 文字を使用することはできません。net.msmq:\/\/machine\/private\/queueName の構文を使用して、プライベート キューをアドレス指定してください。 + + **A:** 構成とコードでキュー URI \(Uniform Resource Identifier\) を確認してください。URI では、"$" 文字を使用できません。たとえば、OrdersQueue という名前のプライベート キューのアドレスを指定する場合は、URI を net.msmq:\/\/localhost\/private\/ordersQueue と指定してください。 + + **Q:** キューに置かれたアプリケーションで `ServiceHost.Open()` を呼び出すと次の例外がスローされます。`System.ArgumentException` : ベース アドレスに URI クエリ文字列を含めることはできません。その理由を教えてください。 + + **A:** 構成とコードでキュー URI を確認してください。MSMQ のキューでは '?' 文字の使用がサポートされていますが、URI はこれを文字列クエリの開始と解釈します。この問題を回避するには、'?' 文字を含まないキュー名を使用してください。 + + **Q:** 送信は成功したのですが、受信側でサービス操作が呼び出されません。その理由を教えてください。 + + **A:** 理由を特定するには、次のチェック リストを検討してください。 + +- トランザクション キューの要件と指定済みの保証が適合することを確認します。次の原則に注意してください。 + + - "1 回限りの" 配信の保証 \( \= `true`\) 付きの永続的なメッセージ \(データグラムとセッション\) は、トランザクション キューにのみ送信できます。 + + - "1 回限りの" 配信の保証付きのセッションのみを送信できます。 + + - セッションでトランザクション キューからメッセージを受け取るには、1 つのトランザクションが必要です。 + + - 保証なし \( \= `false`\) の一時的なメッセージまたは永続的なメッセージ \(ダイアグラムのみ\) は、非トランザクション キューにのみ送受信できます。 + +- 配信不能キューを確認します。このキューにメッセージが置かれている場合は、メッセージが配信されなかった理由を特定してください。 + +- 送信キューを確認して、接続性またはアドレス指定の問題を特定します。 + + **Q:** カスタム配信不能キューを指定したのですが、送信元アプリケーションを起動すると、カスタム配信不能キューが見つからない、または送信元アプリケーションにカスタム配信不能キューへのアクセス許可がないという例外が表示されます。なぜ、こうなるのでしょうか。 + + **A:** カスタム配信不能キューの URI には、先頭のセグメントに "localhost" またはコンピューター名を含める必要があります。たとえば、net.msmq:\/\/localhost\/private\/myAppdead\-letter queue のようにします。 + + **Q:** カスタム配信不能キューを常に定義する必要がありますか。それとも既定の配信不能キューがあるのですか。 + + **A:** 保証が "1 回限り" \( \= `true`\) の場合、およびカスタム配信不能キューを指定していない場合は、システム全体のトランザクション配信不能キューが既定になります。 + + 保証なし \( \= `false`\) の場合、既定は配信不能キュー機能なしです。 + + **Q:** サービスが、SvcHost.Open で "EndpointListener が ListenerFactory の要件を満たすことができません" という内容のメッセージをスローします。その理由を教えてください。 + + A.サービス コントラクトを確認してください。"IsOneWay\=`true`" をすべてのサービス操作に配置するのを忘れた可能性があります。キューは、一方向のサービス操作しかサポートしません。 + + **Q:** キューにメッセージが置かれているのにサービス操作が呼び出されません。何が問題なのでしょうか。 + + **A:** サービス ホストがエラーになっているかどうかを確認してください。確認するには、トレースを調べるか、`IErrorHandler` を実装します。既定では、有害メッセージが検出された場合、サービス ホストはエラーになります。 + + **Q:** キューにメッセージが格納されているのに、Web ホスト型のキューを使用するサービスがアクティブになりません。その理由を教えてください。 + + **A:** 最も一般的な理由はアクセス許可です。 + +1. `NetMsmqActivator` プロセスが実行され、そのキューで、`NetMsmqActivator` の ID に読み取りおよびシーク アクセス許可が割り当てられていることを確認してください。 + +2. `NetMsmqActivator` がリモート コンピューター上のキューを監視している場合は、`NetMsmqActivator` が制限付きトークンの下で実行されていないことを確認してください。無制限のトークンを使用して `NetMsmqActivator` を実行するには、以下を実行します。 + + ``` + sc sidtype NetMsmqActivator unrestricted + ``` + + セキュリティ関連以外の Web ホストの問題については、「[キューに置かれたアプリケーションの Web ホスト](../../../../docs/framework/wcf/feature-details/web-hosting-a-queued-application.md)」を参照してください。 + + **Q:** 最も簡単にセッションにアクセスする方法を教えてください。 + + **A:** セッションの最後のメッセージに対応する操作で AutoComplete\=`true` を設定し、残りのすべてのサービス操作で AutoComplete\=`false` を設定します。 + + **Q:** MSMQ に関する一般的な質問の解答はどこで見つけられますか。 + + **A:** MSMQ [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Microsoft Message Queuing](http://go.microsoft.com/fwlink/?LinkId=87810)」を参照してください。 + + **Q:** キューを使用するセッション メッセージとキューを使用するデータグラム メッセージの両方を格納するキューから読み取るときに、サービスが `ProtocolException` をスローするのはなぜですか。 + + **A:** キューを使用するセッション メッセージとキューを使用するデータグラム メッセージは、それぞれ構成する方法が基本的に異なります。このため、キューを使用するセッション メッセージを読み取ろうとするサービスは、キューを使用するデータグラム メッセージを受信できず、キューを使用するデータグラム メッセージを読み取ろうとするサービスは、セッション メッセージを受信できません。これら両方の種類のメッセージを同じキューから読み取ろうとすると、次の例外がスローされます。 + +``` +System.ServiceModel.MsmqPoisonMessageException: The transport channel detected a poison message. This occurred because the message exceeded the maximum number of delivery attempts or because the channel detected a fundamental problem with the message. The inner exception may contain additional information. +---> System.ServiceModel.ProtocolException: An incoming MSMQ message contained invalid or unexpected .NET Message Framing information in its body. The message cannot be received. Ensure that the sender is using a compatible service contract with a matching SessionMode. +``` + + アプリケーションが同じコンピューターからキューを使用するセッション メッセージとキューを使用するデータグラム メッセージの両方を送信する場合は、任意のカスタム配信不能キューだけでなくシステム配信不能キューで特にこの問題が発生する可能性があります。メッセージを正常に送信できない場合、メッセージは配信不能キューに移されます。このような場合は、セッション メッセージとデータグラム メッセージの両方が配信不能キューに置かれる可能性があります。実行時にキューから読み取るときに両方の種類のメッセージを分離することはできません。そのため、アプリケーションでは、キューを使用するセッション メッセージとキューを使用するデータグラム メッセージの両方を同じコンピューターから送信しないでください。 + +### MSMQ 統合 : 固有のトラブルシューティング + **Q:** メッセージを送信したり、サービス ホストを開いたりすると、スキームが不正であるというエラー メッセージが表示されます。その理由を教えてください。 + + **A:** MSMQ 統合バインディングを使用するときは、msmq.formatname スキームを使用する必要があります。たとえば、msmq.formatname:DIRECT\=OS:.\\private$\\OrdersQueue などです。ただし、カスタム配信不能キューを指定するときは、net.msmq スキームを使用する必要があります。 + + **Q:** 公開または専用の形式名を使用して、[!INCLUDE[wv](../../../../includes/wv-md.md)] 上のサービス ホストを開くと、エラーが発生します。その理由を教えてください。 + + **A:** [!INCLUDE[wv](../../../../includes/wv-md.md)] 上の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 統合チャネルは、メイン アプリケーション キューの有害メッセージ処理用のサブキューを開くことができるかどうかを確認します。サブキューの名前は、リスナーに渡される msmq.formatname URI から派生します。MSMQ でのサブキュー名は、直接形式名に限定されます。そのためにエラーが発生します。キュー URI を直接形式名に変更してください。 + + **Q:** MSMQ アプリケーションからメッセージを受信すると、メッセージはキューに置かれ、受信側の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションによって読み取られません。その理由を教えてください。 + + **A:** メッセージに本文があるかどうか確認してください。メッセージに本文がない場合、MSMQ 統合チャネルはメッセージを無視します。例外を通知する `IErrorHandler` を実装し、トレースを確認してください。 + +### セキュリティ関連のトラブルシューティング + **Q:** ワークグループ モードで既定のバインディングを使用するサンプルを実行すると、メッセージは送信されるように思われるのですが、受信側で受信されません。 + + **A:** 既定では、メッセージは、Active Directory ディレクトリ サービスを必要とする MSMQ の内部証明書を使用して署名されます。ワークグループ モードでは、Active Directory が使用できないため、メッセージに署名できません。そのため、メッセージは配信不能キューに置かれ、"署名が正しくありません" などのエラーの原因が示されます。 + + この問題を回避するには、セキュリティを無効にします。セキュリティを無効にするには、ワークグループ モードで動作するように \= を設定します。 + + また、 プロパティから を取得し、それを に設定して、クライアント証明書を設定する方法もあります。 + + さらに、MSMQ と Active Directory 統合をインストールして回避することもできます。 + + **Q:** Active Directory で既定のバインディング \(トランスポート セキュリティが有効\) を使用してメッセージをキューに送信すると、"内部証明書が見つからない" という内容のメッセージが表示されます。これを修復する方法を教えてください。 + + **A:** これは、送信側の Active Directory 内の証明書を更新する必要があることを意味します。証明書を更新するには、**\[コントロール パネル\]**、**\[管理ツール\]**、**\[コンピューターの管理\]** の順に開き、**\[MSMQ\]** を右クリックして **\[プロパティ\]** を選択します。**\[ユーザー証明書\]** タブをクリックし、**\[更新\]** をクリックします。 + + **Q:** を使用してメッセージを送信するときに、使用する証明書を指定すると、"無効な証明書" というメッセージが表示されます。これを修復する方法を教えてください。 + + **A:** 証明書モードでは、ローカル コンピューターの証明書ストアを使用できません。証明書スナップインを使用して、コンピューターの証明書ストアから現在のユーザー ストアに証明書をコピーする必要があります。証明書スナップインを開くには、以下を実行します。 + +1. **\[スタート\]** ボタンをクリックし、**\[ファイル名を指定して実行\]** を選択し、「`mmc`」と入力して、**\[OK\]** をクリックします。 + +2. **\[Microsoft 管理コンソール\]** の **\[ファイル\]** メニューを開き、**\[スナップインの追加と削除\]** を選択します。 + +3. **\[スナップインの追加と削除\]** ダイアログ ボックスで、**\[追加\]** をクリックします。 + +4. **\[スタンドアロン スナップインの追加\]** ダイアログ ボックスで証明書を選択し、**\[追加\]** をクリックします。 + +5. **\[証明書スナップイン\]** ダイアログ ボックスで、**\[ユーザー アカウント\]** を選択し、**\[完了\]** をクリックします。 + +6. 次に、前の手順に従って 2 番目の証明書スナップインを追加しますが、今回は、**\[コンピューター アカウント\]** を選択して **\[次へ\]** をクリックします。 + +7. **\[ローカル コンピューター\]** を選択し、**\[完了\]** をクリックします。これで、コンピューターの証明書ストアから現在のユーザー ストアに証明書をドラッグ アンド ドロップできます。 + + **Q:** ワークグループモードで、サービスが別のコンピューター上のキューから読み取るときに "access denied" 例外が発生します。 + + **A:** ワークグループ モードでリモート アプリケーションがキューへのアクセスを取得するには、キューへのアクセス許可がアプリケーションに必要です。キューのアクセス制御リスト \(ACL\) に "匿名ログイン" を追加して、読み取りアクセス許可を割り当ててください。 + + **Q:** ネットワーク サービス クライアント \(またはドメイン アカウントを持たない任意のクライアント\) がキューを使用するメッセージを送信すると、証明書が無効であるというエラー メッセージが表示され、送信できません。これを修復する方法を教えてください。 + + **A:** バインディング構成を確認してください。既定のバインディングでは、メッセージに署名するために MSMQ トランスポート セキュリティを有効にしています。これを無効にしてください。 + +### リモート トランザクション受信 + **Q:** コンピューター A にキューがあるときに、コンピューター B のキューからメッセージを読み取る [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを実行すると \(リモート トランザクション受信シナリオ\)、キューからメッセージが読み取られません。トレース情報には、"Transaction cannot be imported." というメッセージが示され、受信に失敗したことがわかります。この問題を解決するには、どうすればいいですか。 + + **A:** これには、次の理由が考えられます。 + +- ドメイン モードの場合、リモート トランザクション受信には、Microsoft 分散トランザクション コーディネーター \(MSDTC\) ネットワーク アクセスが必要です。これは、**\[Windows コンポーネントの追加と削除\]** を使用して有効にできます。 + + ![ネットワーク DTC アクセスの有効化](../../../../docs/framework/wcf/feature-details/media/applicationserveraddcomps.jpg "ApplicationServerAddComps") + +- トランザクション マネージャーと通信するための認証モードを確認します。ワークグループ モードの場合は、\[認証を必要としない\] を選択する必要があります。ドメイン モードの場合は、\[相互認証を必要とする\] を選択する必要があります。 + + ![XA トランザクションの有効化](../../../../docs/framework/wcf/feature-details/media/4f3695e0-fb0b-4c5b-afac-75f8860d2bb0.jpg "4f3695e0\-fb0b\-4c5b\-afac\-75f8860d2bb0") + +- MSDTC が **\[インターネット接続ファイアウォール\]** 設定の例外の一覧に含まれていることを確認します。 + +- [!INCLUDE[wv](../../../../includes/wv-md.md)] を使用していることを確認します。[!INCLUDE[wv](../../../../includes/wv-md.md)] 上の MSMQ は、リモート トランザクション読み取りをサポートします。以前の Windows リリース上の MSMQ は、リモート トランザクション読み取りをサポートしません。 + + **Q:** キューから読み取るサービスが、Web ホストなどでのネットワーク サービスであるときにキューから読み取ると、アクセス拒否例外が発生するのはなぜですか。 + + **A:** ネットワーク サービス読み取りアクセスをキュー ACL に追加して、ネットワーク サービスがキューから読み取れるようにしてください。 + + **Q:** MSMQ アクティベーション サービスを使用して、リモート コンピューター上のキュー内のメッセージに基づいてアプリケーションをアクティブ化することは可能ですか。 + + **A:** 可能です。これには、ネットワーク サービスとして動作するように MSMQ アクティベーション サービスを構成し、リモート コンピューター上のキューへのネットワーク サービス アクセスを追加する必要があります。 + +## ReceiveContext を有効にしたカスタム MSMQ バインディングの使用 + を有効にしてカスタム MSMQ バインディングを使用すると、ネイティブの MSMQ が非同期の 受信の I\/O 完了をサポートしないために、着信メッセージの処理にスレッド プール内のスレッドが使用されます。これは、このようなメッセージの処理に の内部トランザクションが使用され、MSMQ が非同期処理をサポートしないためです。この問題を回避するには、 をエンドポイントに追加して同期処理を強制するか、 を 1 に設定します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/trusted-subsystem.md b/docs/framework/wcf/feature-details/trusted-subsystem.md new file mode 100644 index 00000000000..cb61b674799 --- /dev/null +++ b/docs/framework/wcf/feature-details/trusted-subsystem.md @@ -0,0 +1,219 @@ +--- +title: "信頼できるサブシステム | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1f5ce46b-e259-4bc9-a0b9-89d06fc9341c +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 信頼できるサブシステム +クライアントは、ネットワーク全体に分散している 1 つ以上の Web サービスにアクセスします。Web サービスは、追加のリソース \(データベースや他の Web サービスなど\) に対するアクセスが、Web サービスのビジネス ロジック内にカプセル化されるように設計されています。これらのリソースは、非承認のアクセスに対して保護する必要があります。信頼できるサブシステムの処理を次の図に示します。 + + ![信頼できるサブシステム](../../../../docs/framework/wcf/feature-details/media/wcfc-trustedsubsystemc.gif "wcfc\_TrustedSubsystemc") + + 上図に示した信頼できるサブシステムの処理について、以下の手順で説明します。 + +1. クライアントが、信頼できるサブシステムに、資格情報と共に要求を送信します。 + +2. 信頼できるサブシステムが、ユーザーの認証と承認を行います。 + +3. 信頼できるサブシステムは、リモート リソースに要求メッセージを送信します。この要求には、信頼できるサブシステムの資格情報 \(または信頼できるサブシステムの処理を実行しているサービス アカウント\) が付属しています。 + +4. バックエンド リソースが、信頼できるサブシステムの認証と承認を行います。次にバックエンド リソースは要求を処理し、信頼できるサブシステムへの応答を発行します。 + +5. 信頼できるサブシステムはこの応答を処理し、自身の応答をクライアントに発行します。 + +|特性|説明| +|--------|--------| +|セキュリティ モード|メッセージ| +|相互運用性|[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のみ| +|認証 \(サービス\)|セキュリティ トークン サービスはクライアントの認証と承認を行います。| +|認証 \(クライアント\)|信頼できるサブシステムがクライアントを認証し、リソースが信頼できるサブシステム サービスを認証します。| +|整合性|○| +|機密性|○| +|トランスポート|クライアントと信頼できるサブシステム サービス間にある HTTP

信頼できるサブシステム サービスとリソース \(バックエンド サービス\) の間にある NET.TCP| +|バインディング| および[\](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)| + +## リソース \(バックエンド サービス\) + +### コード + 次のコードでは、TCP トランスポート プロトコル上でトランスポート セキュリティを使用するリソースのサービス エンドポイントを作成する方法を示します。 + + [!code-csharp[TrustedSubSystemsResource#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/trustedsubsystemsresource/cs/source.cs#1)] + [!code-vb[TrustedSubSystemsResource#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/trustedsubsystemsresource/vb/source.vb#1)] + +### 構成 + 次の構成では、構成を使用して同一のエンドポイントをセットアップします。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 信頼できるサブシステム + +### コード + 次のコードでは、HTTP プロトコル上のメッセージ セキュリティで認証にユーザー名とパスワードを使用する、信頼できるサブシステムのサービス エンドポイントを作成する方法を示します。 + + [!code-csharp[TrustedSubSystems#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/trustedsubsystems/cs/source.cs#1)] + [!code-vb[TrustedSubSystems#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/trustedsubsystems/vb/source.vb#1)] + + 次のコードでは、TCP トランスポート プロトコル上でトランスポート セキュリティを使用してバックエンド サービスと通信を行う、信頼できるサブシステムのサービスを示します。 + + [!code-csharp[TrustedSubSystems#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/trustedsubsystems/cs/source.cs#2)] + [!code-vb[TrustedSubSystems#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/trustedsubsystems/vb/source.vb#2)] + +### 構成 + 次の構成では、構成を使用して同一のエンドポイントをセットアップします。2 つのバインディングがあることに注意してください。1 つは、信頼できるサブシステムでホストされるサービスをセキュリティで保護するバインディングで、もう 1 つは、信頼できるサブシステムとバックエンド サービスの間の通信のためのバインディングです。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## クライアント + +### コード + 次のコードでは、HTTP プロトコル上のメッセージ セキュリティで認証にユーザー名とパスワードを使用することで、信頼できるサブシステムと通信を行うクライアントを作成する方法を示します。 + + [!code-csharp[TrustedSubSystemsClient#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/trustedsubsystemsclient/cs/source.cs#1)] + [!code-vb[TrustedSubSystemsClient#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/trustedsubsystemsclient/vb/source.vb#1)] + +### 構成 + 次のコードでは、HTTP プロトコル上のメッセージ セキュリティ、および認証用のユーザー名とパスワードを使用するようにクライアントを構成します。ユーザー名とパスワードの指定はコードを使用する場合に限られます \(構成可能ではありません\)。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md b/docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md new file mode 100644 index 00000000000..b25b7dc7d15 --- /dev/null +++ b/docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md @@ -0,0 +1,82 @@ +--- +title: "データ コントラクト シリアライザーでサポートされる型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "シリアル化 [WCF], サポートされている型" +ms.assetid: 7381b200-437a-4506-9556-d77bf1bc3f34 +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# データ コントラクト シリアライザーでサポートされる型 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、データを XML に変換し、変換された XML をデータへ戻すための既定のシリアル化エンジンとして を使用します。 は、*データ コントラクト*型をシリアル化するように設計されています。 ただし、暗黙のデータ コントラクトを持つと考えられるその他の型も多数サポートされています。 以下は、シリアル化可能なすべての型です。 + +- パラメーターを持たないコンストラクターを持つ公開されている型すべて + +- データ コントラクト型。 属性が適用される型です。 ビジネス オブジェクトを表す新しいカスタム型は、通常、データ コントラクト型として作成されます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md)」および「[シリアル化可能な型](../../../../docs/framework/wcf/feature-details/serializable-types.md)」を参照してください。 + +- コレクション型。 データのリストを表す型です。 型の通常の配列、または などのコレクション型です。 属性を使用してこれらの型のシリアル化をカスタマイズすることもできますが、必須ではありません。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [データ コントラクトのコレクション型](../../../../docs/framework/wcf/feature-details/collection-types-in-data-contracts.md)。 + +- 列挙型。 フラグ列挙体などの列挙体はシリアル化できます。 列挙型は、必要に応じて、 属性でマークできます。その場合は、シリアル化に参加するすべてのメンバーを 属性でマークする必要があります。 マークされていないメンバーはシリアル化されません。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [データ コントラクトの列挙型](../../../../docs/framework/wcf/feature-details/enumeration-types-in-data-contracts.md)。 + +- .NET Framework プリミティブ型。 .NET Framework に組み込まれている型 \(、および \) は、すべてシリアル化可能であり、プリミティブ型であると考えられます。 + +- その他のプリミティブ型。 これらの型は .NET Framework のプリミティブではないが、シリアル化された XML 形式ではプリミティブとして扱われます。 この型には、、および の配列が含まれます。 + + > [!NOTE] + > 他のプリミティブ型とは異なり、 は既定では既知の型ではありません。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください\)。 + +- 属性でマークされた型。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 基本クラス ライブラリに含まれる多くの型は、このカテゴリに分類されます。 は、.NET Framework リモート処理、、および で使用されていたこのシリアル化プログラミング モデルを完全にサポートします。これは、 インターフェイスのサポートを含みます。 + +- 未処理の XML を表す型、または [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] のリレーショナル データを表す型。 型および 型の配列は、XML を直接表す方法としてサポートされています。 また、 インターフェイスを実装する型 \(関連する 属性、および 型と 型を含む\) もサポートされています。[!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] の 型と 型 \(およびその型指定された派生クラス\) はすべて インターフェイスを実装するので、このカテゴリに属します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [データ コントラクトの XML および ADO.NET の種類](../../../../docs/framework/wcf/feature-details/xml-and-ado-net-types-in-data-contracts.md)。 + +## 部分信頼モードにおける特定の型の使用制限 + 部分信頼モードのシナリオで型を使用する場合、型によっては次の制限があります。 + +- 部分信頼コードで を使用して を実装する型のシリアル化または逆シリアル化を行うには、 アクセス許可および アクセス許可が必要です。 + +- [部分信頼](../../../../docs/framework/wcf/feature-details/partial-trust.md)モードで [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] コードを実行する場合、`readonly` フィールド \(`public` と `private` の両方\) のシリアル化と逆シリアル化がサポートされていません。 これは、生成された IL が検証不能であるため、より高いアクセス許可が必要になるためです。 + +- 部分信頼環境では、 の両方がサポートされています。 ただし、 の使用は、次の条件に従う必要があります。 + + - シリアル化可能なすべての `[DataContract]` 型はパブリックである必要があります。 + + - `[DataMember]` 型にあるシリアル化可能なすべての `[DataContract]` フィールドまたはプロパティは、パブリックで読み書き可能である必要があります。`readonly` フィールドのシリアル化と逆シリアル化は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を部分信頼アプリケーションで実行する場合にはサポートされません。 + + - 部分信頼環境では、`[Serializable]`\/`ISerializable]` プログラミング モデルはサポートされていません。 + + - 既知の型はコード内、またはマシン レベルの構成 \(`Machine.config`\) で指定する必要があります。 既知の型はセキュリティ上の理由からアプリケーション レベルの構成では指定できません。 + +- メソッドにはセキュリティ アクセス許可 が必要であるため、`[SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]` を実装した型は、部分信頼環境で例外をスローします。 + +## シリアル化に関するその他のメモ + 次の規則はデータ コントラクト シリアライザーによってサポートされる型にも適用されます。 + +- ジェネリック型は、データ コントラクト シリアライザーで完全にサポートされます。 + +- null 許容型は、データ コントラクト シリアライザーで完全にサポートされます。 + +- インターフェイス型は \(コレクション インターフェイスの場合はコレクション型\) として扱われます。 + +- 構造体とクラスの両方がサポートされています。 + +- は、 と [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスで使用されるプログラミング モデルをサポートしていません。 特に、 のような属性をサポートしていません。 このプログラミング モデルのサポートを有効にするには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ではなく を使用するように を切り替える必要があります。 + +- 型は、特殊な方法で処理されます。 これは、シングルトン型です。デシリアライザーは、逆シリアル化後にシングルトン制約に従い、シングルトン インスタンスへのすべての `DBNull` 参照を指します。`DBNull` はシリアル化可能な型であるため、 アクセス許可が必要です。 + +## 参照 + [データ コントラクトの XML および ADO.NET の種類](../../../../docs/framework/wcf/feature-details/xml-and-ado-net-types-in-data-contracts.md) + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + [シリアル化可能な型](../../../../docs/framework/wcf/feature-details/serializable-types.md) + [データ コントラクトのコレクション型](../../../../docs/framework/wcf/feature-details/collection-types-in-data-contracts.md) + [データ コントラクトの列挙型](../../../../docs/framework/wcf/feature-details/enumeration-types-in-data-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/understanding-generated-client-code.md b/docs/framework/wcf/feature-details/understanding-generated-client-code.md new file mode 100644 index 00000000000..679947f71c2 --- /dev/null +++ b/docs/framework/wcf/feature-details/understanding-generated-client-code.md @@ -0,0 +1,88 @@ +--- +title: "生成されたクライアント コードの理解 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c3f6e4b0-1131-4c94-aa39-a197c5c2f2ca +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 生成されたクライアント コードの理解 +[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) は、クライアント アプリケーションの構築時に使用するクライアント コードとクライアント アプリケーション構成ファイルを生成します。 このトピックでは、標準サービス コントラクトのシナリオ向けに生成されたコード例について説明します。 生成されたコードを使用してクライアント アプリケーションを構築する方法の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[WCF クライアントの概要](../../../../docs/framework/wcf/wcf-client-overview.md)」を参照してください。 + +## 概要 + プロジェクトで [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] を使用して [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアント型を生成する場合、通常、生成されたクライアント コードを調べる必要はありません。 同じサービスを実行する開発環境を使用していない場合は、Svcutil.exe のようなツールを使用してクライアント コードを生成し、そのコードでクライアント アプリケーションを開発します。 + + Svcutil.exe には、生成された型情報を変更する多くのオプションがあるため、ここですべてのシナリオを説明することはできません。 ここでは、生成されたコードの検索に関する標準的な作業の例を紹介します。 + +- サービス コントラクト インターフェイスの識別 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント クラスの識別 + +- データ型の識別 + +- 双方向サービスのコールバック コントラクトの識別 + +- ヘルパーのサービス コントラクトのチャネル インターフェイスの識別 + +### サービス コントラクト インターフェイスの検索 + サービス コントラクトをモデル化するインターフェイスを検索するには、 属性でマークされたインターフェイスを検索します。 多くの場合、属性自体に設定された他の属性や明示的なプロパティが存在するため、この属性をすばやく読み取って見つけることは簡単ではありません。 サービス コントラクト インターフェイスとクライアント コントラクト インターフェイスは 2 つの別の種類だという点に注意してください。 次のコード例は、元のサービス コントラクトを示しています。 + + [!code-csharp[C_GeneratedCodeFiles#22](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_generatedcodefiles/cs/proxycode.cs#22)] + + 次のコード例は、Svcutil.exe で生成された同じサービス コントラクトを示しています。 + + [!code-csharp[C_GeneratedCodeFiles#12](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_generatedcodefiles/cs/proxycode.cs#12)] + + 生成されたサービス コントラクト インターフェイスと クラスを使用して、サービス操作の呼び出しに使用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネル オブジェクトを作成できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [方法 : ChannelFactory を使用する](../../../../docs/framework/wcf/feature-details/how-to-use-the-channelfactory.md)。 + +### WCF クライアント クラスの検索 + 使用するサービス コントラクトを実装する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント クラスを検索するには、 の拡張を検索します。ここで、型パラメーターは、以前に検索され、自身を拡張するサービス コントラクト インターフェイスです。 次のコード例は、 型の `ISampleService` クラスを示しています。 + + [!code-csharp[C_GeneratedCodeFiles#14](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_generatedcodefiles/cs/proxycode.cs#14)] + + この [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント クラスを使用するには、新しいインスタンスを作成し、このクラスに実装されているメソッドを呼び出します。 これらのメソッドは、対応しているサービス操作を呼び出し、やり取りを行うように構成されています。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [WCF クライアントの概要](../../../../docs/framework/wcf/wcf-client-overview.md)。 + +> [!NOTE] +> SvcUtil.exe で WCF クライアント クラスが生成されるとき、 がクライアント クラスに追加されるため、デバッガーで WCF クライアント クラスをステップ実行できなくなります。 + +### データ型の検索 + 生成されたコード内でデータ型を検索する最も基本的な方法は、コントラクトに指定された型名を識別し、その型宣言のコードを検索することです。 たとえば、次のコントラクトには、`SampleMethod` が型 `microsoft.wcf.documentation.SampleFault` の SOAP エラーを返せることが指定されています。 + + [!code-csharp[C_GeneratedCodeFiles#11](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_generatedcodefiles/cs/proxycode.cs#11)] + + `SampleFault` を検索すると、次の型宣言が見つかります。 + + [!code-csharp[C_GeneratedCodeFiles#30](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_generatedcodefiles/cs/proxycode.cs#30)] + + この場合、このデータ型は、クライアントの特定の例外 \(\) によりスローされる詳細な型です。詳細な型のパラメーターは、`microsoft.wcf.documentation.SampleFault` です。 データ型の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[サービス コントラクトでのデータ転送の指定](../../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md)」を参照してください。 クライアントでの例外の処理の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[エラーの送受信](../../../../docs/framework/wcf/sending-and-receiving-faults.md)」を参照してください。 + +### 双方向サービスのコールバック コントラクトの検索 + コントラクト インターフェイスにより プロパティの値が指定されているサービス コントラクトを検索すると、そのコントラクトには双方向コントラクトが指定されていることがわかります。 二重のコントラクトを使用した場合、クライアント アプリケーションは、コールバック コントラクトを実装するコールバック クラスを作成し、そのクラスのインスタンスを、サービスとの通信に使用する または に渡す必要があります。 双方向クライアントの[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[方法 : 双方向コントラクトを使用してサービスにアクセスする](../../../../docs/framework/wcf/feature-details/how-to-access-services-with-a-duplex-contract.md)」を参照してください。 + + 次のコントラクトは、型 `SampleDuplexHelloCallback` のコールバック コントラクトを指定しています。 + + [!code-csharp[C_GeneratedCodeFiles#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_generatedcodefiles/cs/duplexproxycode.cs#2)] + [!code-vb[C_GeneratedCodeFiles#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_generatedcodefiles/vb/duplexproxycode.vb#2)] + + このコールバック コントラクトを検索すると、クライアント アプリケーションが実装する必要のある次のインターフェイスが見つかります。 + + [!code-csharp[C_GeneratedCodeFiles#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_generatedcodefiles/cs/duplexproxycode.cs#4)] + [!code-vb[C_GeneratedCodeFiles#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_generatedcodefiles/vb/duplexproxycode.vb#4)] + +### サービス コントラクト チャネル インターフェイスの検索 + サービス コントラクト インターフェイスで クラスを使用する場合、明示的にチャネルを開いたり、閉じたり、中止したりするには、 インターフェイスにキャストする必要があります。 処理を容易にするために、Svcutil.exe ツールでは、サービス コントラクト インターフェイスと の両方を実装するヘルパー インターフェイスも生成されます。これにより、キャストを行わずにクライアント チャネル インフラストラクチャとのやりとりを実現できます。 上記のサービス コントラクトを実装するヘルパー クライアント チャネルの定義を、次のコード例に示します。 + + [!code-csharp[C_GeneratedCodeFiles#13](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_generatedcodefiles/cs/proxycode.cs#13)] + +## 参照 + [WCF クライアントの概要](../../../../docs/framework/wcf/wcf-client-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/understanding-http-authentication.md b/docs/framework/wcf/feature-details/understanding-http-authentication.md new file mode 100644 index 00000000000..0f89e4f510e --- /dev/null +++ b/docs/framework/wcf/feature-details/understanding-http-authentication.md @@ -0,0 +1,48 @@ +--- +title: "HTTP 認証の理解 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9376309a-39e3-4819-b47b-a73982b57620 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# HTTP 認証の理解 +認証は、リソースにアクセスする権限をクライアントが持つかどうかを確認するプロセスです。HTTP プロトコルは、セキュリティで保護されたリソースへのアクセスをネゴシエートする手段として、認証をサポートしています。 + + クライアントからの最初の要求は、通常、認証情報を含まない匿名要求です。HTTP サーバー アプリケーションは、認証が必要であることを示して匿名要求を拒否できます。その場合は、サポートされる認証方式を示す WWW 認証ヘッダーを送信します。ここでは、複数の HTTP 認証方式を示し、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] での各 HTTP 認証方式のサポートについて説明します。 + +## HTTP 認証方式 + サーバーは、クライアントが選択できる複数の認証方式を指定できます。Windows アプリケーションで一般的に使用される認証方式のいくつかを次の表に示します。 + +|認証方式|説明| +|----------|--------| +|匿名|匿名要求は、認証情報を含みません。これは、リソースへのアクセス権をすべてのユーザーに付与することを意味します。| +|基本|基本認証では、クライアントのユーザー名とパスワードを含む Base64 エンコード文字列が送信されます。Base64 は暗号化の形式ではありません。クリア テキストでのユーザー名とパスワードの送信と同じであると考えてください。リソースを保護する必要がある場合は、基本認証以外の認証方式の使用を検討してください。| +|ダイジェスト|ダイジェスト認証は、基本認証の代わりに使用できるチャレンジ レスポンス方式の認証です。サーバーは、*nonce* と呼ばれるランダムな文字列データをチャレンジとしてクライアントに送信します。クライアントは、ユーザー名、パスワード、nonce およびその他の追加情報を含むハッシュを使用して応答します。この認証方式では、このようなデータの交換によってもたらされる複雑さとデータのハッシュにより、ユーザーの資格情報を盗んで再使用することがより困難になります。

ダイジェスト認証では、Windows ドメイン アカウントを使用する必要があります。ダイジェストの*レルム*は Windows ドメイン名です。したがって、Windows ドメインをサポートしていないオペレーティング システム \(Windows XP Home Edition など\) で実行されているサーバーでは、ダイジェスト認証を使用できません。逆に、Windows ドメインをサポートしていないオペレーティング システムでクライアントが実行されている場合は、認証時にドメイン アカウントを明示的に指定する必要があります。| +|NTLM|NTLM \(NT LAN Manager\) 認証もチャレンジ レスポンス方式の認証ですが、ダイジェスト認証よりもセキュリティが強化されています。NTLM 認証では、エンコードされていないユーザー名とパスワードではなく、Windows 資格情報を使用してチャレンジ データが変換されます。NTLM 認証では、クライアントとサーバー間で複数のメッセージ交換を行う必要があります。認証を正常に完了するため、サーバーおよび介在するすべてのプロキシが永続的な接続をサポートしている必要があります。| +|Negotiate|ネゴシエート認証では、可用性に応じて、Kerberos プロトコルと NTLM 認証のいずれかが自動的に選択されます。Kerberos プロトコルを使用できる場合は Kerberos プロトコルが使用され、それ以外の場合は NTLM が使用されます。Kerberos 認証は、NTLM 認証を大幅に強化した認証方式です。Kerberos 認証は NTLM 認証よりも高速であるだけでなく、相互認証およびリモート コンピューターへの資格情報の委任を使用できます。| +|Windows Live ID|基になる Windows HTTP サービスには、フェデレーション プロトコルを使用する認証が含まれます。ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の標準 HTTP トランスポートは、Microsoft Windows Live ID などのフェデレーション認証方式をサポートしていません。現時点では、この機能をサポートするには、メッセージ セキュリティを使用する必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][フェデレーションと発行済みトークン](../../../../docs/framework/wcf/feature-details/federation-and-issued-tokens.md).| + +## 認証方式の選択 + HTTP サーバーに使用できる認証方式を選択する際には、以下の項目について検討します。 + +- リソースを保護する必要があるかどうかを検討します。HTTP 認証では、より多くのデータを送信する必要があるため、クライアントとの相互運用性が制限される可能性があります。保護する必要のないリソースには、匿名アクセスを許可してください。 + +- リソースを保護する必要がある場合は、必要なレベルのセキュリティがどの認証方式によって提供されるかを検討します。ここで説明した中で最も弱い標準の認証方式は、基本認証です。基本認証では、ユーザーの資格情報が保護されません。最も強力な標準の認証方式は、ネゴシエート認証で選択される Kerberos プロトコルです。 + +- 受け入れる準備ができていない認証方式、またはリソースを十分にセキュリティで保護できない認証方式をサーバーが \(WWW 認証ヘッダー内で\) 提示しないことを確認してください。クライアントは、サーバーによって提示された認証方式を自由に選択します。クライアントによっては、弱い認証方式、またはサーバーのリストにある最初の認証方式を既定で選択します。 + +## 参照 + [トランスポート セキュリティの概要](../../../../docs/framework/wcf/feature-details/transport-security-overview.md) + [トランスポート セキュリティでの偽装の使用](../../../../docs/framework/wcf/feature-details/using-impersonation-with-transport-security.md) + [委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/unsupported-scenarios.md b/docs/framework/wcf/feature-details/unsupported-scenarios.md new file mode 100644 index 00000000000..bb85b73f133 --- /dev/null +++ b/docs/framework/wcf/feature-details/unsupported-scenarios.md @@ -0,0 +1,124 @@ +--- +title: "サポートされていないシナリオ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 72027d0f-146d-40c5-9d72-e94392c8bb40 +caps.latest.revision: 43 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 39 +--- +# サポートされていないシナリオ +さまざまな理由から、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でサポートされていないセキュリティ シナリオがあります。 たとえば、[!INCLUDE[wxp](../../../../includes/wxp-md.md)] Home Edition は SSPI または Kerberos 認証プロトコルを実装しないため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、このプラットフォーム上での Windows 認証を使用するサービスの実行をサポートしません。 Windows XP Home Edition で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を実行している場合、ユーザー名\/パスワードや HTTP\/HTTPS 統合認証などの他の認証機構がサポートされます。 + +## 偽装シナリオ + +### クライアントが非同期呼び出しを行うと、偽装 ID はフローしない場合がある + WCF クライアントが、偽装で Windows 認証を使用して WCF サービスへの非同期呼び出しを行うと、偽装 ID ではなくクライアント プロセスの ID で認証が行われる場合があります。 + +### Windows XP と有効化されたセキュリティ コンテキスト トークン クッキー + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では偽装はサポートされず、以下の条件に該当する場合、 が発生します。 + +- オペレーティング システムが [!INCLUDE[wxp](../../../../includes/wxp-md.md)] である。 + +- 認証モードで Windows ID が生成された。 + +- プロパティが に設定されます。 + +- 状態ベースのセキュリティ コンテキスト トークン \(SCT: Security Context Token\) が作成された \(既定では、作成は無効になっています\)。 + + 状態ベースの SCT はカスタム バインディングの使用によってのみ作成できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : セキュリティで保護されたセッションに対しセキュリティ コンテキスト トークンを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-security-context-token-for-a-secure-session.md)」を参照してください。\) コードでトークンを有効にするには、 メソッドまたは メソッドを使用して、セキュリティ バインディング要素 \( または \) を作成し、`requireCancellation` パラメーターを `false` に設定します。 このパラメーターは、SCT のキャッシュを参照します。 値を `false` に設定することによって、状態ベースの SCT 機能が有効になります。 + + また、構成でトークンを有効にするには、\<`customBinding`\> を作成して、\<`security`\> 要素を追加し、`authenticationMode` 属性を SecureConversation に、`requireSecurityContextCancellation` 属性を `true` に設定します。 + +> [!NOTE] +> 上記の要件は限定的です。 たとえば、 は Windows ID を生成するバインド要素を作成しますが、SCT を確立しません。 したがって、`Required` で [!INCLUDE[wxp](../../../../includes/wxp-md.md)] オプションと共に使用できます。 + +### 考えられる ASP.NET との競合 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] はいずれも、偽装を有効にすることも無効にすることもできます。 このため、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションをホストしている場合に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] の構成設定の間で競合が発生する可能性があります。 競合が発生した場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の設定が優先されます。ただし、 プロパティを に設定している場合は、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] の偽装設定が優先されます。 + +### 偽装を有効にすると、アセンブリの読み込みに失敗する場合がある + 偽装されたコンテキストにアセンブリを読み込むためのアクセス権がない場合、共通言語ランタイム \(CLR: Common Language Runtime\) が AppDomain のアセンブリを初めて読み込もうとしたときに、その はエラーをキャッシュします。 この場合、偽装を元に戻した後、元に戻されたコンテキストにアセンブリを読み込むためのアクセス権があったとしても、それ以降のアセンブリの読み込みは失敗します。 これは、ユーザー コンテキストの変更後に、CLR が読み込みを再試行しないためです。 このエラーから回復するには、アプリケーション ドメインを再起動する必要があります。 + +> [!NOTE] +> クラスの プロパティの既定値は です。 ほとんどの場合、ID レベルの偽装コンテキストには、追加のアセンブリを読み込むための権限がありません。 これは既定値であるため、非常に一般的な状態として認識しておく必要があります。 ID レベルの偽装は、偽装プロセスが `SeImpersonate` 権限を持たない場合にも発生します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md)。 + +### 委任には資格情報ネゴシエーションが必要 + 委任で Kerberos 認証プロトコルを使用するには、資格情報ネゴシエーションを使用する Kerberos プロトコル \("マルチレッグ" Kerberos または "マルチステップ" Kerberos とも呼ばれます\) を実装する必要があります。 資格情報ネゴシエーションを使用しない Kerberos 認証 \(ワンショット Kerberos またはシングルレッグ Kerberos とも呼ばれる\) を実装した場合は、例外がスローされます。 資格情報ネゴシエーションの実装方法の[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[Windows 認証エラーのデバッグ](../../../../docs/framework/wcf/feature-details/debugging-windows-authentication-errors.md)」を参照してください。 + +## 暗号 + +### 対称キーを使用する場合にのみサポートされる SHA\-256 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、さまざまな暗号化アルゴリズムと署名ダイジェスト作成アルゴリズムをサポートしています。これらのアルゴリズムは、システム指定のバインディングでアルゴリズム スイートを使用して指定できます。 セキュリティを強化するため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、署名ダイジェスト ハッシュを作成するためにセキュア ハッシュ アルゴリズム \(SHA: Secure Hash Algorithm\) 2 \(具体的には SHA\-256\) をサポートしています。 このリリースは、Kerberos キーなどの対称キーを使用する場合、およびメッセージに署名するために X.509 証明書を使用しない場合に限り SHA\-256 をサポートします。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が現時点で RSA\-SHA256 をサポートしていないため、[!INCLUDE[vstecwinfx](../../../../includes/vstecwinfx-md.md)] では \(X.509 証明書で使用する\) RSA 署名に SHA\-256 ハッシュを使用できません。 + +### サポートされていない FIPS 準拠の SHA\-256 ハッシュ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、FIPS 準拠の SHA\-256 ハッシュをサポートしていません。したがって、FIPS 準拠のアルゴリズムを使用する必要のあるシステムでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、SHA\-256 を使用するアルゴリズム スイートをサポートしません。 + +### レジストリを編集すると、FIPS 準拠のアルゴリズムが失敗する場合がある + 連邦情報処理規格 \(FIPS: Federal Information Processing Standards\) 準拠のアルゴリズムを有効または無効にするには、Microsoft 管理コンソール \(MMC: Microsoft Management Console\) のローカル セキュリティ設定スナップインを使用します。 レジストリでこの設定にアクセスすることもできます。 ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、レジストリを使用した設定のリセットをサポートしていません。 値を 1 または 0 以外に設定すると、CLR とオペレーティング システム間で不整合が発生する可能性があります。 + +### FIPS 準拠の AES 暗号化の制限 + FIPS 準拠の AES 暗号化は、ID レベルの偽装での双方向コールバックでは機能しません。 + +### Windows Server 2008 での CNG\/KSP 証明書 + *CNG \(Cryptography API: Next Generation\)* は、CryptoAPI に代わるものとして長期的な視野に立って開発されました。 この API は [!INCLUDE[wv](../../../../includes/wv-md.md)] および [!INCLUDE[lserver](../../../../includes/lserver-md.md)] のアンマネージ コードです。 + + 下位レベルのプラットフォーム \([!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] および [!INCLUDE[wxp](../../../../includes/wxp-md.md)]\) の .NET Framework 2.0 ではこのプロトコルは認識されません。代わりに旧来の *CryptoApi* が CNG\/KSP 証明書の処理に使用されます。[!INCLUDE[lserver](../../../../includes/lserver-md.md)] および [!INCLUDE[wv](../../../../includes/wv-md.md)] の .NET Framework 3.5 はこれらの証明書をサポートしません。使用すると例外が発生します。 + + 証明書に KSP が使用されているかどうかを知る方法は 2 つあります。 + +- `p/invoke` を `CertGetCertificateContextProperty` に対して実行し、返された `dwProvType` で `CertGetCertificateContextProperty` を調べる。 + +- コマンド ラインから `certutil` コマンドを使用して証明書を調べる。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][証明書のトラブルシューティングに関する Certutil のタスク](http://go.microsoft.com/fwlink/?LinkId=120056)」を参照してください。 + +## ASP.NET の偽装と ASP.NET 互換を使用する必要がある場合にメッセージ セキュリティが失敗する + 次の設定の組み合わせはクライアント認証の妨げとなる可能性があるため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] はこの組み合わせをサポートしていません。 + +- [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] の偽装を有効にしている。 これを行うには、Web.config ファイルで \<`identity`\> 要素の `impersonate` 属性を `true` に設定します。 + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicehostingenvironment.md) の `aspNetCompatibilityEnabled` 属性を `true` に設定して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 互換モードを有効にしている。 + +- メッセージ モード セキュリティを使用している。 + + これを回避するには、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 互換モードを無効にします。[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 互換モードが必要である場合は、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] の偽装機能を無効にし、代わりに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で提供される偽装機能を使用します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md)。 + +## IPv6 リテラル アドレス エラー + クライアントとサービスが同じコンピューター上に存在し、サービスに対して IPv6 リテラル アドレスが使用されている場合は、セキュリティ要求が失敗します。 + + IPv6 リテラル アドレスは、サービスとクライアントがそれぞれ異なるコンピューター上に存在する場合に機能します。 + +## フェデレーション信頼での WSDL 取得エラー + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、フェデレーション信頼チェーンの各ノードに対してドキュメントが正確に 1 つだけ要求されます。 エンドポイントを指定するときにループにならないように注意する必要があります。 ループになる場合の例の 1 つは、フェデレーション信頼チェーンの WSDL ダウンロードの使用で、同じ WSDL ドキュメントの中に複数のリンクがある場合です。 この問題がよく発生するシナリオは、セキュリティ トークン サーバーとセキュリティ トークン サービスが同じ ServiceHost の中にあるフェデレーション サービスです。 + + そのような状況の例は次の 3 つのエンドポイント アドレスを使うサービスです。 + +- http:\/\/localhost\/CalculatorService\/service \(サービス\) + +- http:\/\/localhost\/CalculatorService\/issue\_ticket \(セキュリティ トークン サービス\) + +- http:\/\/localhost\/CalculatorService\/mex \(メタデータ エンドポイント\) + + これによって例外がスローされます。 + + このシナリオでエラーを避けるには、`issue_ticket` エンドポイントを別のところに置きます。 + +## WSDL インポート属性が失われる可能性 + WSDL インポートの際に、WCF は `` テンプレート内の `RST` 要素にあるインポート属性を追跡できなくなることがあります。 これは、クレームの種類のコレクションを直接使用する代わりに `` を直接 `WSFederationHttpBinding.Security.Message.TokenRequestParameters` または `IssuedSecurityTokenRequestParameters.AdditionalRequestParameters` 内で指定した場合に、WSDL インポートの際に発生します。 インポートが属性を失うので、WSDL を介して正しいバインディングのラウンド トリップが行われません。したがって、クライアント側で不適切になります。 + + 解決策は、インポートを行った後、クライアント側で直接バインディングを変更することです。 + +## 参照 + [セキュリティの考慮事項](../../../../docs/framework/wcf/feature-details/security-considerations-in-wcf.md) + [情報の漏えい](../../../../docs/framework/wcf/feature-details/information-disclosure.md) + [権限の昇格](../../../../docs/framework/wcf/feature-details/elevation-of-privilege.md) + [サービス拒否](../../../../docs/framework/wcf/feature-details/denial-of-service.md) + [改変](../../../../docs/framework/wcf/feature-details/tampering.md) + [リプレイ攻撃](../../../../docs/framework/wcf/feature-details/replay-attacks.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/uritemplate-and-uritemplatetable.md b/docs/framework/wcf/feature-details/uritemplate-and-uritemplatetable.md new file mode 100644 index 00000000000..a90460a922e --- /dev/null +++ b/docs/framework/wcf/feature-details/uritemplate-and-uritemplatetable.md @@ -0,0 +1,352 @@ +--- +title: "UriTemplate と UriTemplateTable | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5cbbe03f-4a9e-4d44-9e02-c5773239cf52 +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# UriTemplate と UriTemplateTable +Web 開発者は、サービスの応答先となる URI の形状とレイアウトを記述できる必要があります。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、開発者が URI を制御するための 2 つの新しいクラスが追加されています。 は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] における URI ベースのディスパッチ エンジンの基盤となります。これらのクラスは単独で使用することもできるため、開発者は [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを実装せずにテンプレートと URI マッピング機構を利用できます。 + +## テンプレート + テンプレートとは、一連の相対 URI を記述する方法です。次の表の URI テンプレートのセットは、各種気象情報を取得するシステムがどのように定義されているかを示しています。 + +|データ|テンプレート| +|---------|------------| +|国の天気予報|weather\/national| +|州の天気予報|weather\/{state}| +|都市の天気予報|weather\/{state}\/{city}| +|アクティビティの天気予報|weather\/{state}\/{city}\/{activity}| + + この表は、構造が似ている一連の URI を示しています。各エントリが URI テンプレートです。中かっこで囲まれたセグメントは変数を表します。中かっこで囲まれていないセグメントはリテラル文字を表します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のテンプレート クラスを使用すると、開発者は "\/weather\/wa\/seattle\/cycling" のような受信 URI を取得し、これを "\/weather\/{state}\/{city}\/{activity}" として説明するテンプレートと照合できます。 + +## UriTemplate + は、URI テンプレートをカプセル化するクラスです。コンストラクターは、テンプレートを定義する文字列パラメーターを受け取ります。この文字列には、次のセクションで説明する形式のテンプレートが含まれます。 クラスには、受信 URI をテンプレートと照合するメソッド、テンプレートから URI を生成するメソッド、テンプレートで使用されている変数名のコレクションを取得するメソッド、2 つのテンプレートが等しいかどうかを判断するメソッド、およびテンプレートの文字列を返すメソッドが用意されています。 + + は、ベース アドレスと候補となる URI を取得し、その URI をテンプレートと照合します。URI とテンプレートが一致した場合は、 インスタンスが返されます。 オブジェクトには、ベース URI、候補となる URI、クエリ パラメーターの名前\/値コレクション、相対パス セグメントの配列、一致した変数の名前\/値コレクション、照合を実行する際に使用する インスタンス、候補となる URI の一致していない部分を含む文字列 \(テンプレートにワイルドカードが含まれているときに使用\)、およびテンプレートに関連付けられたオブジェクトが格納されます。 + +> [!NOTE] +> クラスは、候補となる URI をテンプレートと照合するときにスキームとポート番号を無視します。 + + テンプレートから URI を生成できるメソッドとして、 と [BindByPosition\(Uri, String\ の 2 つのメソッドがあります。 は、ベース アドレスおよびパラメーターの名前\/値コレクションを取得します。テンプレートのバインド時に、これらのパラメーターが変数に代入されます。[BindByPosition\(Uri, String\ は、名前と値のペアを取得し、これらのペアを左から右の順に代入します。 + + は、テンプレート文字列を返します。 + + プロパティには、テンプレート文字列のパス セグメント内で使用される変数の名前のコレクションが格納されます。 + + をパラメーターとして受け取り、2 つのテンプレートが等しいかどうかを示すブール値を返します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]このトピックで後述する「テンプレートの等価性」を参照してください。 + + は、HTTP URI 文法に準じるすべての URI スキームで使用できるように設計されています。サポートされている URI スキームの例を次に示します。 + +- http:\/\/ + +- https:\/\/ + +- net.tcp:\/\/ + +- net.pipe:\/\/ + +- sb:\/\/ + + file:\/\/ や urn:\/\/ などのスキームは、HTTP URI 文法に準じていません。このため、URI テンプレートで使用すると予期せぬ結果が発生します。 + +### テンプレート文字列の構文 + テンプレートには、パス、クエリ \(省略可能\)、およびフラグメント \(省略可能\) の 3 つの部分があります。テンプレートの一例を次に示します。 + +``` +"/weather/{state}/{city}?forecast={length)#frag1 +``` + + パスは "\/weather\/{state}\/{city}"、クエリは "?forecast\={length}、フラグメントは "\#frag1" でそれぞれ構成されています。 + + パス式では、先頭と末尾のスラッシュは省略可能です。クエリ式とフラグメント式は、いずれも式全体を省略できます。パスは '\/' で区切られた一連のセグメントで構成され、各セグメントにはリテラル値、変数名 \(中かっこ \({}\) 内に記述\)、またはワイルドカード \('\*'\) を含めることができます。上記のテンプレートでは、"\/weather\/" セグメントがリテラル値で、"{state}" と "{city}" が変数です。変数は中かっこの内容から名前を取得し、後で具体的な値に置き換えることで*「完成した URI」*を作成できます。ワイルドカードは省略可能です。ただし、ワイルドカードは URI の末尾にのみ指定できます。これによって、"パスの残りの部分" と論理的に一致することを表現します。 + + クエリ式 \(存在する場合\) では、'&' で区切られた順序なしの一連の名前と値のペアを指定します。クエリ式の要素には、リテラル ペア \(x\=2\) または変数ペア \(x\={var}\) を指定できます。変数を指定できるのはクエリ式の右辺のみです。\({someName} \= {someValue}\) は指定できません。対になっていない値 \(?x\) は使用できません。空のクエリ式と、1 つの '?' だけで構成されたクエリ式は同じものです \(いずれも "任意のクエリ" を意味します\)。 + + フラグメント式はリテラル値で構成できます。変数は使用できません。 + + テンプレート文字列内のすべてのテンプレート変数名は、一意であることが必要です。テンプレート変数名では、大文字と小文字は区別されません。 + + 有効なテンプレート文字列の例を以下に示します。 + +- "" + +- "\/shoe" + +- "\/shoe\/\*" + +- "{shoe}\/boat" + +- "{shoe}\/{boat}\/bed\/{quilt}" + +- "shoe\/{boat}" + +- "shoe\/{boat}\/\*" + +- "shoe\/boat?x\=2" + +- "shoe\/{boat}?x\={bed}" + +- "shoe\/{boat}?x\={bed}&y\=band" + +- "?x\={shoe}" + +- "shoe?x\=3&y\={var} + + 無効なテンプレート文字列の例を以下に示します。 + +- "{shoe}\/{SHOE}\/x\=2" – 変数名が重複しています。 + +- "{shoe}\/boat\/?bed\={shoe}" – 変数名が重複しています。 + +- "?x\=2&x\=3" – クエリ文字列内の名前と値のペアは、リテラルである場合でも一意でなければなりません。 + +- "?x\=2&" – クエリ文字列の形式に誤りがあります。 + +- "?2&x\={shoe}" – クエリ文字列は、名前と値のペアである必要があります。 + +- "?y\=2&&X\=3" – クエリ文字列は、名前と値のペアである必要があります。名前を '&' で始めることはできません。 + +### 複合パス セグメント + 複合パス セグメントでは、単一の URI パス セグメントに複数の変数およびリテラルと組み合わせた変数を含むことができます。有効な複合パス セグメントの例を次に示します。 + +- \/filename.{ext}\/ + +- \/{filename}.jpg\/ + +- \/{filename}.{ext}\/ + +- \/{a}.{b}someLiteral{c}\({d}\)\/ + + 無効なパス セグメントの例を次に示します。 + +- \/{} – 変数には名前が付けられている必要があります。 + +- \/{shoe}{boat} – 変数はリテラルによって分割されている必要があります。 + +### 照合と複合パス セグメント + 複合パス セグメントを使用すると、1 つのパス セグメント内に複数の変数を含む UriTemplate を定義できます。たとえば、"Addresses\/{state}.{city}" というテンプレート文字列では、2 つの変数 \(state と city\) が同じセグメント内で定義されています。このテンプレートは、"http:\/\/example.com\/Washington.Redmond" などの URL と一致しますが、"http:\/\/example.com\/Washington.Redmond.Microsoft" のような URL とも一致します。後者の場合、state 変数には "Washington" が含まれ、city 変数には "Redmond.Microsoft" が含まれます。この場合、任意のテキスト \('\/' 以外\) が {city} 変数と一致することになります。テンプレートが "余分な" テキストと一致しないようにするには、"Addresses\/{state}\/{city}" のように、個別のテンプレート セグメントに変数を配置します。 + +### 名前付きワイルドカード セグメント + 名前付きワイルドカード セグメントは、ワイルドカード文字 '\*' で始まる変数名を持つ任意のパス変数セグメントです。次のテンプレート文字列には、"shoe" という名前付きワイルドカード セグメントが含まれています。 + +``` +"literal/{*shoe}" +``` + + ワイルドカード セグメントは、次の規則に従う必要があります。 + +- 1 つのテンプレート文字列に含められる名前付きワイルドカード セグメントは 1 つのみです。 + +- 名前付きワイルドカード セグメントは、パス内の右端のセグメントにある必要があります。 + +- 名前付きワイルドカード セグメントは、匿名ワイルドカード セグメントのあるテンプレート文字列には使用できません。 + +- 名前付きワイルドカード セグメントの名前は一意である必要があります。 + +- 名前付きワイルドカード セグメントには既定値を指定できません。 + +- 名前付きワイルドカード セグメントの末尾には "\/" は付けられません。 + +### 既定変数値 + 既定変数値を使用すると、テンプレート内で変数に既定値を指定できます。既定変数は、変数を宣言する中かっこを使用して指定することも、UriTemplate コンストラクターに渡されるコレクションとして指定することもできます。次のテンプレートに、既定値のある変数を使用して を指定する 2 つの方法を示します。 + +``` +UriTemplate t = new UriTemplate("/test/{a=1}/{b=5}"); +``` + + このテンプレートでは、既定値が `1` で `a` という名前の変数と、既定値が `5` で `b` という名前の変数が宣言されています。 + +> [!NOTE] +> パス セグメント変数のみが、既定値を持つことができます。クエリ文字列変数、複合セグメント変数、および名前付きワイルドカード変数には、既定値を指定することはできません。 + + 候補 URI との照合時に、既定値のある変数がどのように処理されるかを次のコードに示します。 + +``` +Uri baseAddress = new Uri("http://localhost:800 +Dictionary defVals = new Dictionary {{"a","1"}, {"b", "5"}}; +UriTemplate t = new UriTemplate("/test/{a}/{b}", defVals);0"); +UriTemplate t = new UriTemplate("/{state=WA}/{city=Redmond}/", true); +Uri candidate = new Uri("http://localhost:8000/OR"); + +UriTemplateMatch m1 = t.Match(baseAddress, candidate); + +// Display contents of BoundVariables +foreach (string key in m1.BoundVariables.AllKeys) +{ + Console.WriteLine("\t\t{0}={1}", key, m1.BoundVariables[key]); +} +// The output of the above code is +// Template: /{state=WA}/{city=Redmond}/ +// Candidate URI: http://localhost:8000/OR +// BoundVariables: +// STATE=OR +// CITY=Redmond + +``` + +> [!NOTE] +> http:\/\/localhost:8000\/\/\/ のような URI は、上記のコード内に一覧表示されるテンプレートには一致しません。一致するのは、http:\/\/localhost:8000\/ のような URI です。 + + テンプレートを使用して URI を作成する場合に、既定値のある変数がどのように処理されるかを次のコードに示します。 + +``` +Uri baseAddress = new Uri("http://localhost:8000/"); +Dictionary defVals = new Dictionary {{"a","1"}, {"b", "5"}}; +UriTemplate t = new UriTemplate("/test/{a}/{b}", defVals); +NameValueCollection vals = new NameValueCollection(); +vals.Add("a", "10"); + +Uri boundUri = t.BindByName(baseAddress, vals); +Console.WriteLine("BaseAddress: {0}", baseAddress); +Console.WriteLine("Template: {0}", t.ToString()); + +Console.WriteLine("Values: "); +foreach (string key in vals.AllKeys) +{ + Console.WriteLine("\tKey = {0}, Value = {1}", key, vals[key]); +} +Console.WriteLine("Bound URI: {0}", boundUri); + +// The output of the preceding code is +// BaseAddress: http://localhost:8000/ +// Template: /test/{a}/{b} +// Values: +// Key = a, Value = 10 +// Bound URI: http://localhost:8000/test/10/5 + +``` + + 変数の既定値として `null` が指定されている場合、さらに追加の制約があります。テンプレート文字列の右端のセグメントに変数を含んでいるか、その変数の右側にあるすべてのセグメントが `null` を既定値としている変数のみに既定値として `null` を指定できます。既定値に `null` が指定されている有効なテンプレート文字列を次に示します。 + +- ``` + UriTemplate t = new UriTemplate("shoe/{boat=null}"); + ``` + +- ``` + UriTemplate t = new UriTemplate("{shoe=null}/{boat=null}"); + ``` + +- ``` + UriTemplate t = new UriTemplate("{shoe=1}/{boat=null}"); + ``` + + 既定値に `null` が指定されている無効なテンプレート文字列を次に示します。 + +- ``` + UriTemplate t = new UriTemplate("{shoe=null}/boat"); // null default must be in the right most path segment + ``` + +- ``` + UriTemplate t = new UriTemplate("{shoe=null}/{boat=x}/{bed=null}"); // shoe cannot have a null default because boat does not have a default null value + ``` + +### 既定値と照合 + 候補 URI と既定値が指定されているテンプレートとの照合時に、候補 URI に値が指定されていない場合には、 コレクションに既定値が配置されます。 + +### テンプレートの等価性 + 2 つのテンプレートのすべてのリテラルが一致し、同じセグメントに変数が含まれる場合、その 2 つのテンプレートは "*構造的に等しい*" と言います。たとえば、次のテンプレートは構造的に等しいテンプレートです。 + +- \/a\/{var1}\/b b\/{var2}?x\=1&y\=2 + +- a\/{x}\/b%20b\/{var1}?y\=2&x\=1 + +- a\/{y}\/B%20B\/{z}\/?y\=2&x\=1 + + 次の点に注意してください。 + +- テンプレートに先頭のスラッシュが含まれている場合、最初の 1 つだけが無視されます。 + +- テンプレート文字列が構造的に等しいかどうかを比較する場合、変数名とパス セグメントでは大文字小文字は無視されますが、クエリ文字列では区別されます。 + +- クエリ文字列は順序なしです。 + +## UriTemplateTable + クラスは、開発者が選択したオブジェクトにバインドされた オブジェクトの結合テーブルを表します。 を呼び出す前に、 に 1 つ以上の を含めておく必要があります。 が呼び出されるまでは、 の内容を変更できます。 が呼び出されると、検証が実行されます。実行される検証の種類は、 に対する `allowMultiple` パラメーターの値によって異なります。 + + `false` を渡して を呼び出した場合、 はテーブル内に複数のテンプレートが存在しないことを確認します。構造的に等しいテンプレートが見つかった場合は、例外がスローされます。これは、受信 URI と一致するテンプレートが 1 つだけであることを確認する場合に、 と組み合わせて使用します。 + + `true` を渡して を呼び出した場合、 は、構造的に等しい複数のテンプレートが に含まれることを許可します。 + + に追加された一連の オブジェクトにクエリ文字列が含まれている場合、これらの文字列をあいまいにすることはできません。許可されるのは同一のクエリ文字列です。 + +> [!NOTE] +> では、HTTP 以外のスキームを使用したベース アドレスを使用できますが、候補 URI をテンプレートと照合する場合にスキームおよびポート番号は無視されます。 + +### クエリ文字列のあいまいさ + 複数のテンプレートと一致する URI が存在する場合、等しいパスを共有するテンプレートにあいまいなクエリ文字列が含まれています。 + + クエリ文字列の次のセットにはあいまいさはありません。 + +- ?x\=1 + +- ?x\=2 + +- ?x\=3 + +- ?x\=1&y\={var} + +- ?x\=2&z\={var} + +- ?x\=3 + +- ?x\=1 + +- ? + +- ?x\={var} + +- ? + +- ?m\=get&c\=rss + +- ?m\=put&c\=rss + +- ?m\=get&c\=atom + +- ?m\=put&c\=atom + + クエリ文字列テンプレートの次のセットにはあいまいさがあります。 + +- ?x\=1 + +- ?x\={var} + + "x\=1" \- 両方のテンプレートに一致します。 + +- ?x\=1 + +- ?y\=2 + + "x\=1&y\=2" は両方のテンプレートに一致します。これは、クエリ文字列に、一致するテンプレートよりも多くのクエリ文字列変数が含まれている可能性があるからです。 + +- ?x\=1 + +- ?x\=1&y\={var} + + "x\=1&y\=3" は両方のテンプレートに一致します。 + +- ?x\=3&y\=4 + +- ?x\=3&z\=5 + +> [!NOTE] +> 文字 á と Á が URI パスまたは のパス セグメントのリテラルの一部として出現した場合、これらは異なる文字と見なされます \(ただし、a と A は同じ文字と見なされます\)。文字 á と Á が の {variableName} またはクエリ文字列の一部として出現した場合は、これらは同じ文字と見なされます \(a と A も同じ文字と見なされます\)。 + +## 参照 + [WCF Web HTTP プログラミング モデルの概要](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md) + [WCF Web HTTP プログラミング オブジェクト モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-object-model.md) + [UriTemplate](../../../../docs/framework/wcf/samples/uritemplate-sample.md) + [UriTemplate テーブル](../../../../docs/framework/wcf/samples/uritemplate-table-sample.md) + [UriTemplate テーブル ディスパッチャー](../../../../docs/framework/wcf/samples/uritemplate-table-dispatcher-sample.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/use-the-wcf-service-moniker-without-registration.md b/docs/framework/wcf/feature-details/use-the-wcf-service-moniker-without-registration.md new file mode 100644 index 00000000000..c8c085e2a9a --- /dev/null +++ b/docs/framework/wcf/feature-details/use-the-wcf-service-moniker-without-registration.md @@ -0,0 +1,68 @@ +--- +title: "方法 : 未登録で Windows Communication Foundation のサービス モニカーを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "COM [WCF], 登録を使用しないサービス モニカー" +ms.assetid: ee3cf5c0-24f0-4ae7-81da-73a60de4a1a8 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# 方法 : 未登録で Windows Communication Foundation のサービス モニカーを使用する +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスに接続して通信するには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーションに、サービス アドレス、バインディング構成、およびサービス コントラクトの詳細が必要です。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス モニカーは通常、必要な属性型の前の登録から必要なコントラクトを取得しますが、これが適切でない場合もあります。 登録の代わりに、モニカーは、`wsdl` パラメーターまたは Metadata Exchange を使用し、`mexAddress` パラメーターを使用することによって、WSDL \(Web Services Definition Language\) ドキュメントの形でコントラクトの定義を取得できます。 + + これによって、セルの値の一部が Web サービスとの対話によって計算される Excel ワークシートの配布などのシナリオが可能になります。 このシナリオでは、ドキュメントを開く可能性があるすべてのクライアントにサービス コントラクト アセンブリを登録することが実現できない可能性があります。 `wsdl` パラメーターまたは `mexAddress` パラメーターによって、自己完結型のソリューションが可能になります。 + +> [!NOTE] +> 要求と応答の改ざんまたはなりすましを防止するために、相互認証を使用する必要があります。 具体的には、応答している Metadata Exchange エンドポイントが目的の信頼されたパーティであることがクライアントに対して保証されることが重要です。 + +## 例 + MEX コントラクトと共にサービス モニカーを使用する例を次に示します。 次のコントラクトが設定されたサービスは、wsHttpBinding で公開されます。 + +``` +using System.ServiceModel; + +... + +[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Demo")] +public interface IAffiliate +{ + [OperationContract] + bool NewAffiliate(string ID, string company, string fullname, string accountsCode); + [OperationContract] + bool RemoveAffiliate(string ID); + [OperationContract] + double RevenueCheckMonthly(ref string ID); + [OperationContract] + double RevenueCheckTotal(ref string ID); +} +``` + + リモート サービスに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを作成するとき、次の例に示すモニカーの文字列を使用できます。 + +``` +service4:mexAddress="http://servername/Affiliates/service.svc/mex", +address="http://servername/Affiliates/service.svc", +contract=IAffiliate, contractNamespace=http://Microsoft.ServiceModel.Demo, +binding=WSHttpBinding_IAffiliate, bindingNamespace=http://tempuri.org/ +``` + + クライアント アプリケーションの実行中に、クライアントは、指定された `mexAddress` で `WS-MetadataExchange` を実行します。 これによって、複数のサービスのアドレス、バインディング、およびコントラクトの詳細が返される可能性があります。 `address`、`contract`、`contractNamespace`、`binding`、および `bindingNamespace` の各パラメーターは、目的のサービスを識別するために使用されます。 このパラメーターが一致した場合、モニカーは、適切なコントラクト定義を使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを作成します。これによって、型指定されたコントラクトと同様、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを使用して呼び出しを実行できるようになります。 + +> [!NOTE] +> モニカーの形式が正しくないか、サービスを使用できない場合は、`GetObject` を呼び出すと、"構文が無効です" というエラーが返されます。 このエラーが発生した場合は、使用しているモニカーが正しく、サービスが使用可能であることを確認してください。 + +## 参照 + [方法 : サービス モニカーを登録および構成する](../../../../docs/framework/wcf/feature-details/how-to-register-and-configure-a-service-moniker.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-a-custom-binding-with-the-discovery-client-channel.md b/docs/framework/wcf/feature-details/using-a-custom-binding-with-the-discovery-client-channel.md new file mode 100644 index 00000000000..607d8b08ad2 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-a-custom-binding-with-the-discovery-client-channel.md @@ -0,0 +1,58 @@ +--- +title: "カスタム バインディングを探索クライアント チャネルと共に使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 36f95e75-04f7-44f3-a995-a0d623624d7f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# カスタム バインディングを探索クライアント チャネルと共に使用する +カスタム バインディングを と共に使用する場合は、 インスタンスを作成する を定義する必要があります。 + +## DiscoveryEndpointProvider の作成 + は、[T:System:ServiceModel.Discovery.DiscoveryEndpoints](assetId:///T:System:ServiceModel.Discovery.DiscoveryEndpoints?qualifyHint=False&autoUpgrade=True) を必要に応じて作成します。探索エンドポイント プロバイダーを定義するには、 からクラスを派生させ、 メソッドをオーバーライドし、新しい探索エンドポイントを返します。次の例は、探索エンドポイント プロバイダーを作成する方法を示しています。 + +``` +// Extend DiscoveryEndpointProvider class to change the default DiscoveryEndpoint +// to the DiscoveryClientBindingElement. The Discovery ClientChannel +// uses this endpoint to send Probe message. +public class UdpDiscoveryEndpointProvider : DiscoveryEndpointProvider +{ + public override DiscoveryEndpoint GetDiscoveryEndpoint() + { + return new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005); + } +} +``` + + 探索エンドポイント プロバイダーを定義したら、次の例に示すように、カスタム バインディングを作成し、その探索エンドポイント プロバイダーを参照する を追加できます。 + +``` +DiscoveryClientBindingElement discoveryBindingElement = new DiscoveryClientBindingElement(); + +// Provide the search criteria and the endpoint over which the probe is sent. +discoveryBindingElement.FindCriteria = new FindCriteria(typeof(ICalculatorService)); +discoveryBindingElement.DiscoveryEndpointProvider = new UdpDiscoveryEndpointProvider(); + +CustomBinding customBinding = new CustomBinding(new NetTcpBinding()); +// Insert DiscoveryClientBindingElement at the top of the BindingElement stack. +// An exception is thrown if this binding element is not at the top. +customBinding.Elements.Insert(0, discoveryBindingElement); +``` + + 探索クライアント チャネルの使用[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[探索クライアント チャネルの使用](../../../../docs/framework/wcf/feature-details/using-the-discovery-client-channel.md)」を参照してください。コード例全体については、「[探索バインディング要素のサンプル](../../../../docs/framework/wcf/samples/discovery-binding-element-sample.md)」を参照してください。 + +## 参照 + [WCF Discovery の概要](../../../../docs/framework/wcf/feature-details/wcf-discovery-overview.md) + [探索クライアント チャネルの使用](../../../../docs/framework/wcf/feature-details/using-the-discovery-client-channel.md) + [探索バインディング要素のサンプル](../../../../docs/framework/wcf/samples/discovery-binding-element-sample.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-a-data-contract-resolver.md b/docs/framework/wcf/feature-details/using-a-data-contract-resolver.md new file mode 100644 index 00000000000..e1176efb259 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-a-data-contract-resolver.md @@ -0,0 +1,102 @@ +--- +title: "データ コントラクト リゾルバーの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2e68a16c-36f0-4df4-b763-32021bff2b89 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# データ コントラクト リゾルバーの使用 +データ コントラクト リゾルバーでは、既知の型を動的に構成できます。データ コントラクトが予期しない型をシリアル化または逆シリアル化するときには、既知の型が必要です。既知の型[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md)」を参照してください。通常、既知の型は静的に指定されます。これは、操作を実装する間に操作が受け取る可能性のあるすべての型を把握しておく必要があることを意味します。これが当てはまらず、既知の型を動的に指定できることが重要である場合もあります。 + +## データ コントラクト リゾルバーの作成 + データ コントラクト リゾルバーを作成する際には、2 つのメソッド、 および を実装します。これらの 2 つのメソッドは、シリアル化および逆シリアル化の際に使用されるコールバックを実装します。 メソッドはシリアル化の際に呼び出されて、データ コントラクト型を受け取り、それを `xsi:type` の名前および名前空間にマップします。 メソッドは逆シリアル化の際に呼び出されて、`xsi:type` の名前および名前空間を受け取り、それをデータ コントラクト型に解決します。これらのメソッドの両方には `knownTypeResolver` パラメーターがあり、これを使用して、既定の既知の型のリゾルバーを実装で使用できます。 + + 次の例は、 を実装し、データ コントラクト型 `Person` から派生した `Customer` という名前のデータ コントラクト型との間でマッピングを行う方法を示しています。 + +```csharp +public class MyCustomerResolver : DataContractResolver +{ +    public override bool TryResolveType(Type dataContractType, Type declaredType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace) +    { +        if (dataContractType == typeof(Customer)) +        { +            XmlDictionary dictionary = new XmlDictionary(); +            typeName = dictionary.Add("SomeCustomer"); +            typeNamespace = dictionary.Add("http://tempuri.com"); + return true; +        } +        else +        { +            return knownTypeResolver.TryResolveType(dataContractType, declaredType, null, out typeName, out typeNamespace); +        } +    } + +    public override Type ResolveName(string typeName, string typeNamespace, DataContractResolver knownTypeResolver) +    { +        if (typeName == "SomeCustomer" && typeNamespace == "http://tempuri.com") +        { +            return typeof(Customer); +        } +        else +        { +            return knownTypeResolver.ResolveName(typeName, typeNamespace, null); +        } +    } +} +``` + + を定義したら、次の例に示すように、それを コンストラクターに渡して使用できます。 + +``` +XmlObjectSerializer serializer = new DataContractSerializer(typeof(Customer), null, Int32.MaxValue, false, false, null, new MyCustomerResolver()); +``` + + 次の例に示すように、 を、 メソッドまたは メソッドへの呼び出しで指定できます。 + +``` +MemoryStream ms = new MemoryStream(); +DataContractSerializer serializer = new DataContractSerializer(typeof(Customer)); +XmlDictionaryWriter writer = XmlDictionaryWriter.CreateDictionaryWriter(XmlWriter.Create(ms)); +serializer.WriteObject(writer, new Customer(), new MyCustomerResolver()); +writer.Flush(); +ms.Position = 0; +Console.WriteLine(((Customer)serializer.ReadObject(XmlDictionaryReader.CreateDictionaryReader(XmlReader.Create(ms)), false, new MyCustomerResolver())); + +``` + + また、次の例に示すように、 で設定することもできます。 + +``` +ServiceHost host = new ServiceHost(typeof(MyService)); + +ContractDescription cd = host.Description.Endpoints[0].Contract; +OperationDescription myOperationDescription = cd.Operations.Find("Echo"); + +DataContractSerializerOperationBehavior serializerBehavior = myOperationDescription.Behaviors.Find(); +if (serializerBehavior == null) +{ +    serializerBehavior = new DataContractSerializerOperationBehavior(myOperationDescription); +    myOperationDescription.Behaviors.Add(serializerBehavior); +} + +SerializerBehavior.DataContractResolver = new MyCustomerResolver(); + +``` + + サービスに適用できる属性を実装して、データ コントラクト リゾルバーを宣言によって指定できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[KnownAssemblyAttribute](../../../../docs/framework/wcf/samples/knownassemblyattribute.md)」のサンプルを参照してください。このサンプルでは "KnownAssembly" と呼ばれる属性を実装します。これはサービスの動作にカスタム データ コントラクト リゾルバーを追加します。 + +## 参照 + [既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) + [DataContractSerializer サンプル](../../../../docs/framework/wcf/samples/datacontractserializer-sample.md) + [KnownAssemblyAttribute](../../../../docs/framework/wcf/samples/knownassemblyattribute.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-contracts-in-workflow.md b/docs/framework/wcf/feature-details/using-contracts-in-workflow.md new file mode 100644 index 00000000000..818070ee2ff --- /dev/null +++ b/docs/framework/wcf/feature-details/using-contracts-in-workflow.md @@ -0,0 +1,49 @@ +--- +title: "ワークフロー内でのコントラクトの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 939c64e9-e7cc-4abc-b41e-27cfce1d7e50 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ワークフロー内でのコントラクトの使用 +サービスを実装するときは、サービスおよびサービスが送受信するデータを説明する一連のコントラクトを定義します。データは、データ コントラクトとメッセージ コントラクトで表されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスもワークフロー サービスも、サービスの説明の一環として、データ コントラクトとメッセージ コントラクトの定義を使用します。サービス自体は、\(WSDL の形で\) メタデータを公開して、サービスの操作を説明します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、サービス コントラクトと操作コントラクトによって、サービスとサービスがサポートする操作を定義します。ただし、ワークフロー サービスでは、これらのコントラクトはビジネス プロセス自体の一部になり、コントラクト推論と呼ばれるプロセスによってメタデータとして公開されます。 + +## コントラクト推論 + ワークフロー サービスが を使用してホストされている場合は、ワークフローで見つかった一連のメッセージ アクティビティに基づいて、ワークフロー定義が確認され、コントラクトが生成されます。具体的には、次のアクティビティとプロパティが、コントラクトの生成に使用されます。 + + アクティビティ + +- + +- + +- + +- + + アクティビティ + +- + +- + + アクティビティ + + コントラクト推論の結果は、WCF サービスと操作コントラクトと同じデータ構造を使用するサービスの説明になります。この情報を使用して、ワークフロー サービス用に WSDL が公開されます。 + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [メッセージング アクティビティ](../../../../docs/framework/wcf/feature-details/messaging-activities.md) + [方法: メッセージング アクティビティを使用してワークフロー サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-workflow-service-with-messaging-activities.md) + [既存のサービス コントラクトを使用するワークフロー サービスを作成する方法](../../../../docs/framework/windows-workflow-foundation//how-to-create-a-workflow-service-that-consumes-an-existing-service-contract.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-data-contracts.md b/docs/framework/wcf/feature-details/using-data-contracts.md new file mode 100644 index 00000000000..c75191aa26d --- /dev/null +++ b/docs/framework/wcf/feature-details/using-data-contracts.md @@ -0,0 +1,89 @@ +--- +title: "データ コントラクトの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "DataContractAttribute クラス" + - "WCF, データ" + - "データ コントラクト [WCF]" +ms.assetid: a3ae7b21-c15c-4c05-abd8-f483bcbf31af +caps.latest.revision: 38 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 38 +--- +# データ コントラクトの使用 +*データ コントラクト*は、サービスとクライアントの間の正式な取り決めであり、交換されるデータが抽象的に記述されています。 つまり、クライアントとサービスが通信するために必要なのは同じデータ コントラクトだけで、同じ型を共有する必要はありません。 データ コントラクトは、パラメーターまたは戻り値の型ごとに、交換するためにシリアル化する \(XML に変換する\) 必要があるデータを正確に定義します。 + +## データ コントラクトの基本 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、データ コントラクト シリアライザーと呼ばれるシリアル化エンジンを既定で使用して、データのシリアル化と逆シリアル化 \(データと XML の間の変換\) を行います。 すべての [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] プリミティブ型 \(整数や文字列など\) およびプリミティブ型として扱われる特定の型 \( など\) は、準備なしでシリアル化できるため、既定のデータ コントラクトを持つと見なされます。 多くの [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型もまた、既存のデータ コントラクトを持ちます。 シリアル化できるすべての型の一覧については、「[データ コントラクト シリアライザーでサポートされる型](../../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md)」を参照してください。 + + 新しい複合型を作成したら、シリアル化できるように、データ コントラクトを定義する必要があります。 既定では、 はデータ コントラクトを推測し、公開されている型をすべてシリアル化します。 その型の読み書き可能なパブリック プロパティおよびパブリック フィールドは、すべてシリアル化されます。 を使用することにより、メンバーがシリアル化されないようにすることができます。 また、 属性および 属性を使用して、データ コントラクトを明示的に作成することもできます。 これを行うには、通常、その型に 属性を適用します。 この属性は、クラス、構造体、および列挙体に適用できます。 次に、データ コントラクト型の各メンバーに 属性を適用して、それが*データ メンバー*であること、つまり、シリアル化する必要があることを示す必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [シリアル化可能な型](../../../../docs/framework/wcf/feature-details/serializable-types.md)。 + +### 例 + 属性と 属性が明示的に適用されたサービス コントラクト \(インターフェイス\) の例を次に示します。 この例は、プリミティブ型はデータ コントラクトを必要としないのに対し、複合型は必要とすることを示しています。 + + [!code-csharp[C_DataContract#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontract/cs/source.cs#1)] + [!code-vb[C_DataContract#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontract/vb/source.vb#1)] + + 次の例では、`MyTypes.PurchaseOrder` 型のデータ コントラクトが作成され、 属性がクラスとそのメンバーに適用されるかを示します。 + + [!code-csharp[C_DataContract#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontract/cs/source.cs#2)] + [!code-vb[C_DataContract#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontract/vb/source.vb#2)] + +### ノート + 以下に、データ コントラクトを作成する際に考慮する必要がある項目を示します。 + +- 属性は、マークされていない型で使用した場合にのみ受け入れられます。 これには、 のいずれかの属性でマークされていない型、または他の方法 \( など\) でシリアル化可能としてマークされた型が含まれます。 + +- 属性は、フィールドおよびプロパティに適用できます。 + +- メンバーのアクセシビリティ レベル \(内部、プライベート、保護、またはパブリック\) は、データ コントラクトに影響しません。 + +- 属性が静的メンバーに適用されている場合は無視されます。 + +- シリアル化中には、プロパティのデータ メンバーがシリアル化対象のプロパティの値を取得できるように、プロパティ取得コードが呼び出されます。 + +- 逆シリアル化中には、まず初期化されていないオブジェクトが、その型のコンストラクターを呼び出さずに作成されます。 次に、すべてのデータ メンバーが逆シリアル化されます。 + +- 逆シリアル化中には、プロパティのデータ メンバーが、プロパティを逆シリアル化されている値に設定できるように、プロパティ設定コードが呼び出されます。 + +- データ コントラクトが有効であるためには、すべてのデータ メンバーをシリアル化できる必要があります。 シリアル化できるすべての型の一覧については、「[データ コントラクト シリアライザーでサポートされる型](../../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md)」を参照してください。 + + ジェネリック型は、非ジェネリック型とまったく同じように処理されます。 ジェネリック パラメーターに対する特別な要件はありません。 たとえば、次の型について考えます。 + + [!code-csharp[C_DataContract#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontract/cs/source.cs#3)] + [!code-vb[C_DataContract#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontract/vb/source.vb#3)] + + この型は、ジェネリック型パラメーター \(`T`\) に使用される型をシリアル化できるかどうかに関係なくシリアル化できます。 すべてのデータ メンバーをシリアル化できる必要があるため、次の型をシリアル化できるのは、ジェネリック型パラメーターもシリアル化できる場合だけです。次のコード例を参照してください。 + + [!code-csharp[C_DataContract#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontract/cs/source.cs#4)] + [!code-vb[C_DataContract#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontract/vb/source.vb#4)] + + データ コントラクトを定義する WCF サービスのコード サンプル全体については、「[基本的なデータ コントラクト](../../../../docs/framework/wcf/samples/basic-data-contract.md)」のサンプルを参照してください。 + +## 参照 + + + [シリアル化可能な型](../../../../docs/framework/wcf/feature-details/serializable-types.md) + [データ コントラクト名](../../../../docs/framework/wcf/feature-details/data-contract-names.md) + [データ コントラクトの等価性](../../../../docs/framework/wcf/feature-details/data-contract-equivalence.md) + [データ メンバーの順序](../../../../docs/framework/wcf/feature-details/data-member-order.md) + [既知のデータ コントラクト型](../../../../docs/framework/wcf/feature-details/data-contract-known-types.md) + [上位互換性のあるデータ コントラクト](../../../../docs/framework/wcf/feature-details/forward-compatible-data-contracts.md) + [データ コントラクトのバージョン管理](../../../../docs/framework/wcf/feature-details/data-contract-versioning.md) + [バージョン トレラントなシリアル化コールバック](../../../../docs/framework/wcf/feature-details/version-tolerant-serialization-callbacks.md) + [データ メンバーの既定値](../../../../docs/framework/wcf/feature-details/data-member-default-values.md) + [データ コントラクト シリアライザーでサポートされる型](../../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md) + [方法 : クラスまたは構造体に基本的なデータ コントラクトを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-data-contract-for-a-class-or-structure.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-dead-letter-queues-to-handle-message-transfer-failures.md b/docs/framework/wcf/feature-details/using-dead-letter-queues-to-handle-message-transfer-failures.md new file mode 100644 index 00000000000..8b64df24a72 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-dead-letter-queues-to-handle-message-transfer-failures.md @@ -0,0 +1,83 @@ +--- +title: "配信不能キューを使用したメッセージ転送エラー処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9e891c6a-d960-45ea-904f-1a00e202d61a +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# 配信不能キューを使用したメッセージ転送エラー処理 +キューに置かれたメッセージは、配信に失敗する可能性があります。 配信に失敗したメッセージは、配信不能キューに記録されます。 配信の失敗は、ネットワーク エラー、キューが削除されている、キューがいっぱいになっている、認証エラー、配信が時間どおりに行われなかったなど、さまざまな理由で生じる可能性があります。 + + キューに置かれたメッセージは、受信側のアプリケーションでタイムリーに読み取られないと、長時間キューに残ることがあります。 時間依存のメッセージでは、このような動作が適切でない場合があります。 時間依存のメッセージでは、メッセージをキューに格納しておくことができる期間を示す TTL (Time to Live) プロパティが、キューに置かれたバインディングに設定されおり、この期間を超えると、メッセージの有効期限が切れます。 期限切れのメッセージは、配信不能キューと呼ばれる特別なキューに送信されます。 また、キューのクォータの超過、認証エラーなどの理由で、メッセージが配信不能キューに置かれる場合もあります。 + + 一般に、アプリケーションには、配信不能キューのメッセージとエラーの理由を読み取るための補正ロジックが記述されています。 補正ロジックはエラーの原因に依存します。 たとえば、認証エラーの場合は、メッセージに添付された証明書を修正し、メッセージを再送信できます。 また、ターゲット キューのクォータに達したために配信が失敗した場合は、クォータの問題が解決されていることを期待して配信を再試行できます。 + + ほとんどのキュー システムには、そのシステムから配信できなかったすべてのメッセージを格納するための、システム全体の配信不能キューがあります。 メッセージ キュー (MSMQ) には、システム全体の配信不能キューが&2; 種類用意されています。1 つはトランザクション キューへの配信に失敗したメッセージを格納するトランザクション システム全体の配信不能キューで、もう&1; つは非トランザクション キューへの配信に失敗したメッセージを格納する非トランザクション システム全体の配信不能キューです。 2 つのクライアントが&2; つの異なるサービスにメッセージを送信しているために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の異なるキューで、送信に同じ MSMQ サービスを共有している場合は、システム配信不能キューでメッセージが混在する可能性があります。 これは、必ずしも最適であるとは言えません。 場合によっては (たとえば、セキュリティ上の理由で)、一方のクライアントが、もう一方のクライアントのメッセージを配信不能キューから読み取ることができないようにする必要があるからです。 また、共有された配信不能キューでは、クライアントがキューを参照して、送信したメッセージを検索する必要もありますが、配信不能キューに置かれているメッセージの数によっては、これは極めて大きな負荷になる可能性があります。 したがって、 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] `NetMsmqBinding`、`MsmqIntegrationBinding,`および MSMQ に[!INCLUDE[wv](../../../../includes/wv-md.md)](アプリケーション固有の配信不能キューとも呼ばれます)、カスタム配信不能キューが用意されています。 + + カスタム配信不能キューでは、同じ MSMQ サービスを共有してメッセージを送信するクライアントをそれぞれ分離できます。 + + [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] の場合、[!INCLUDE[wxp](../../../../includes/wxp-md.md)] と [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、キューに置かれたすべてのクライアント アプリケーションに対して、システム全体で&1; つの配信不能キューが提供されます。 一方、[!INCLUDE[wv](../../../../includes/wv-md.md)] では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] により、キューに置かれたクライアント アプリケーションごとに配信不能キューが提供されます。 + +## 配信不能キューの使用の指定 + 配信不能キューは、送信元アプリケーションのキュー マネージャーに存在します。 ここには、有効期限が切れたメッセージと転送または配信に失敗したメッセージが格納されます。 + + バインディングには、次の配信不能キュー プロパティがあります。 + +- + +- + +## 配信不能キューからのメッセージの読み取り + 配信不能キューからメッセージを読み取るアプリケーションは、アプリケーション キューからメッセージを読み取る [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスとよく似ていますが、次のようなわずかな違いがあります。 + +- トランザクション システムの配信不能キューからメッセージを読み取るには、URI (Uniform Resource Identifier) を net.msmq://localhost/system$;DeadXact という形式にする必要があります。 + +- 非トランザクション システムの配信不能キューからメッセージを読み取る場合、URI は、net.msmq://localhost/system$;DeadLetter という形式にする必要があります。 + +- カスタム配信不能キューからメッセージの読み取り、URI は、フォーム: net.msmq://localhost/private/のする必要があります*カスタム「名*> 場所*カスタム「名*カスタム配信不能キューの名前を指定します。 + + [!INCLUDE[crabout](../../../../includes/crabout-md.md)]キューのアドレスを参照してください方法[サービスのエンドポイントとキューのアドレス指定](../../../../docs/framework/wcf/feature-details/service-endpoints-and-queue-addressing.md)します。 + + 受信側の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] スタックは、サービスがリッスンしているアドレスとメッセージのアドレスを照合します。 アドレスが一致する場合、メッセージはディスパッチされますが、一致しない場合はディスパッチされません。 これにより、配信不能キューから読み取るときに問題が生じる可能性があります。一般に、配信不能キュー内のメッセージは該当サービスにアドレス指定され、配信不能キュー サービスにアドレス指定されないからです。 そのため、配信不能キューから読み取るサービスは、`ServiceBehavior` アドレス フィルターをインストールし、受信者とは無関係にキュー内のすべてのメッセージを一致させるようスタックに指示する必要があります。 具体的には、追加する必要があります、`ServiceBehavior`で、 配信不能キューからメッセージを読み取るサービスへのパラメーターです。 + +## 配信不能キューの有害メッセージの処理 + 配信不能キューでは、条件付きで有害メッセージを処理できます。 システム キューからサブキューを作成できないため、システム配信不能キューから読み取るときは、`ReceiveErrorHandling` を `Move` に設定できません。 カスタム配信不能キューから読み取る場合は、サブキューを使用できるので、`Move` が有害メッセージに対する有効な処置であることに注意してください。 + + `ReceiveErrorHandling` を `Reject` に設定しているときにカスタム配信不能キューから読み取った場合、有害メッセージはシステム配信不能キューに置かれます。 システム配信不能キューから読み取ると、有害メッセージは破棄 (削除) されます。 MSMQ のシステム配信不能キューから拒否すると、メッセージは破棄 (削除) されます。 + +## 例 + 次の例は、配信不能キューを作成する方法と、配信不能キューを使用して期限切れのメッセージを処理する方法を示しています。 この例は例では、に基づいて[する方法: WCF エンドポイントでのキューに置かれたメッセージの交換](../../../../docs/framework/wcf/feature-details/how-to-exchange-queued-messages-with-wcf-endpoints.md)します。 この例では、アプリケーションごとの配信不能キューを使用する発注書処理サービスにクライアント コードを書き込む方法を示します。 また、配信不能キューのメッセージを処理する方法も示します。 + + 以下は、アプリケーションごとの配信不能キューを指定するクライアントのコードです。 + + [!code-csharp[S_DeadLetter#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_deadletter/cs/client.cs#1)] + [!code-vb[S_DeadLetter#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_deadletter/vb/client.vb#1)] + + 以下は、クライアント構成ファイルのコードです。 + + + + 以下は、配信不能キューのメッセージを処理するサービスのコードです。 + + [!code-csharp[S_DeadLetter#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/s_deadletter/cs/dlservice.cs#3)] + [!code-vb[S_DeadLetter#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/s_deadletter/vb/dlservice.vb#3)] + + 以下は、配信不能キュー サービス構成ファイルのコードです。 + + + +## 関連項目 + [キューの概要](../../../../docs/framework/wcf/feature-details/queues-overview.md) + [方法: キューの WCF エンドポイントとメッセージを交換](../../../../docs/framework/wcf/feature-details/how-to-exchange-queued-messages-with-wcf-endpoints.md) + [有害メッセージの処理](../../../../docs/framework/wcf/feature-details/poison-message-handling.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-impersonation-with-transport-security.md b/docs/framework/wcf/feature-details/using-impersonation-with-transport-security.md new file mode 100644 index 00000000000..8fae62604e6 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-impersonation-with-transport-security.md @@ -0,0 +1,68 @@ +--- +title: "トランスポート セキュリティでの偽装の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 426df8cb-6337-4262-b2c0-b96c2edf21a9 +caps.latest.revision: 12 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 12 +--- +# トランスポート セキュリティでの偽装の使用 +*偽装*とは、サーバー アプリケーションがクライアントの ID を獲得する機能です。リソースへのアクセスを検証するときに、サービスでは偽装が広く使用されます。サーバー アプリケーションはサービス アカウントを使用して実行されますが、クライアントの接続を受け入れたサーバーは、クライアントの資格情報を使用してアクセス チェックが実行できるようにクライアントを偽装します。トランスポート セキュリティは、資格情報を渡すこと、および渡された資格情報を使用して通信をセキュリティで保護することの 2 つの機構から成ります。このトピックでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のトランスポート セキュリティと共に偽装機能を使用する方法について説明します。メッセージ セキュリティを使用した偽装[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md)」を参照してください。 + +## 5 つの偽装レベル + トランスポート セキュリティでは、次の表で説明するように 5 つの偽装レベルを使用します。 + +|偽装レベル|説明| +|-----------|--------| +|None|サーバー アプリケーションは、クライアントの偽装を試みません。| +|Anonymous|サーバー アプリケーションはクライアントの資格情報に対してアクセス チェックを実行できますが、クライアントの ID に関する情報は一切受け取りません。この偽装レベルは、名前付きパイプなど、コンピューター上での通信にのみ意味があります。リモート接続で `Anonymous` レベルを使用すると、Identify レベルの偽装に昇格されます。| +|Identify|サーバー アプリケーションは、クライアントの ID を認識し、クライアントの資格情報に対するアクセスの検証を実行できますが、クライアントを偽装することはできません。トークン プロバイダーによって別の偽装レベルが提供されない限り、Identify レベルは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の SSPI 資格情報で使用される既定の偽装レベルになります。| +|Impersonate|サーバー アプリケーションは、アクセス チェックを実行できるだけでなく、クライアントとしてサーバー コンピューターのリソースにアクセスできます。偽装されたトークンにはネットワーク資格情報が含まれないため、サーバー アプリケーションはクライアントの ID を使用してリモート コンピューター上のリソースにアクセスできません。| +|Delegate|`Impersonate` と同じ機能に加えて、Delegate レベルの偽装では、サーバー アプリケーションがクライアントの ID を使用してリモート コンピューターのリソースにアクセスし、この ID を他のアプリケーションに渡すことができます。

**重要** これらの追加の機能を使用するには、ドメイン コントローラー上でそのサーバーのドメイン アカウントが委任先として信頼できるものとしてマークされている必要があります。このレベルの偽装は、機密としてマークされているクライアント ドメイン アカウントでは使用できません。| + + トランスポート セキュリティで最も多く使用されるレベルは、`Identify` および `Impersonate` です。`None` および `Anonymous` レベルは、通常の使用にはお勧めしません。トランスポートの多くでは認証でこのレベルの使用をサポートしていません。`Delegate` レベルの機能は強力であり、使用に際しては注意が必要です。資格情報を委任するアクセス許可は、信頼できるサーバー アプリケーションにのみ与える必要があります。 + + `Impersonate` または `Delegate` レベルで偽装を使用するには、サーバー アプリケーションが `SeImpersonatePrivilege` 特権を持っている必要があります。管理者グループのアカウントまたはサービス SID \(Network Service、Local Service、または Local System\) を持つアカウントでアプリケーションを実行している場合は、アプリケーションに既定でこの特権があります。偽装ではクライアントとサーバーの相互認証は必要ありません。NTLM など、偽装をサポートする認証方式の中には、相互認証を使用できないものもあります。 + +## 偽装でのトランスポート固有の問題 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] におけるトランスポートの選択は、選択できる偽装のレベルに影響を与えます。ここでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の標準 HTTP トランスポートと名前付きパイプ トランスポートに影響する問題について説明します。カスタム トランスポートには、偽装のサポートに関して独自の制限があります。 + +### 名前付きパイプ トランスポート + 次の項目が名前付きパイプ トランスポートと共に使用されます。 + +- 名前付きパイプ トランスポートはローカル コンピューター上のみで使用します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の名前付きパイプでは、コンピューター間の接続が明示的に禁止されています。 + +- 名前付きパイプは、`Impersonate` または `Delegate` 偽装レベルでは使用できません。これらの偽装レベルでは、名前付きパイプはコンピューター上で保障されません。 + + 名前付きパイプ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[トランスポートの選択](../../../../docs/framework/wcf/feature-details/choosing-a-transport.md)」を参照してください。 + +### HTTP トランスポート + HTTP トランスポートを使用するバインディング \(\) では、「[HTTP 認証の理解](../../../../docs/framework/wcf/feature-details/understanding-http-authentication.md)」で説明するように、いくつかの認証方式がサポートされます。サポートされる偽装レベルは、認証方式によって異なります。次の項目が HTTP トランスポートと共に使用されます。 + +- `Anonymous` 認証方式は偽装を無視します。 + +- `Basic` 認証方式は `Delegate` レベルのみをサポートします。これより低い偽装レベルは、アップグレードされます。 + +- `Digest` 認証方式では、`Impersonate` レベルと `Delegate` レベルのみをサポートします。 + +- `NTLM` 認証方式は、直接またはネゴシエーション経由で選択可能で、ローカル コンピューターで `Delegate` レベルのみをサポートします。 + +- Kerberos 認証方式は、ネゴシエーション経由でのみ選択可能で、サポートされるすべての偽装レベルで使用できます。 + + HTTP トランスポート[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[トランスポートの選択](../../../../docs/framework/wcf/feature-details/choosing-a-transport.md)」を参照してください。 + +## 参照 + [委任と偽装](../../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md) + [承認](../../../../docs/framework/wcf/feature-details/authorization-in-wcf.md) + [方法 : サービスでクライアントに偽装する](../../../../docs/framework/wcf/how-to-impersonate-a-client-on-a-service.md) + [HTTP 認証の理解](../../../../docs/framework/wcf/feature-details/understanding-http-authentication.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-jsonp.md b/docs/framework/wcf/feature-details/using-jsonp.md new file mode 100644 index 00000000000..131e1900dc3 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-jsonp.md @@ -0,0 +1,97 @@ +--- +title: "JSONP の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f386718c-b4ba-4931-a610-40c27a46672a +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# JSONP の使用 +JSONP \(JSON with Padding\) は、Web ブラウザーでクロスサイト スクリプトの利用を可能にするためのメカニズムです。 JSONP は、現在読み込まれているドキュメントを取得したサイトとは異なるサイトから、スクリプトを読み込むための Web ブラウザーの機能を軸に設計されています。 このメカニズムは、次の例に示すように、JSON ペイロードにユーザー定義のコールバック関数の名前を埋め込むことで機能します。 + +``` +callback({"a" = \"b\" }); +``` + + 上記の例では、JSON ペイロード `{"a" = \"b\"}` が、関数呼び出し `callback` にラップされています。 コールバック関数は、現在の Web ページで定義済みである必要があります。 JSONP 応答のコンテンツの種類は application\/javascript です。 + +## JSONP の使用 + JSONP は自動的には有効化されません。 有効にするには、次の例のように、HTTP の標準エンドポイントのいずれか \( または \) で、`javascriptCallbackEnabled` 属性を `true` に設定する必要があります。 + +```xml + + + + + + + +``` + + コールバック関数名は、次の URL に示すように、callback というクエリ変数で指定できます。 + +``` +http://baseaddress/Service/RestService?callback=functionName +``` + + このサービスを呼び出すと、次のような応答が送信されます。 + +```jscript +functionName({"root":"Something}); +``` + + コールバック関数名は、次の例のように、サービス クラスに を適用して指定することもできます。 + +```csharp +[ServiceContract] +[JavascriptCallbackBehavior(ParameterName = "$callback")] +public class Service1 +{ + [OperationContract] + [WebGet(ResponseFormat=WebMessageFormat.Json)] + public string GetData() + { + } +} +``` + + 上に示したサービスでは、要求は次のような形式になります。 + +``` +http://baseaddress/Service/RestService?$callback=anotherFunction +``` + + このサービスを呼び出すと、次のような応答が返されます。 + +``` +anotherFunction ({"root":"Something}); +``` + +## HTTP 状態コード + HTTP 状態コードが 200 以外の JSONP 応答には、次の例のように、HTTP 状態コードの数値表現が 2 つ目のパラメーターとして付加されます。 + +``` +anotherFunction ({"root":"Something}, 201); +``` + +## 検証 + JSONP が有効な場合、以下の検証が行われます。 + +- `javascriptCallback` が有効になっており、要求にコールバック クエリ文字列のパラメーターが含まれ、応答形式が JSON に設定されている場合は、WCF インフラストラクチャから例外がスローされます。 + +- 要求にコールバック クエリ文字列のパラメーターが含まれているが、操作が HTTP GET ではない場合は、コールバック パラメーターが無視されます。 + +- コールバック名が `null` または空の文字列の場合は、応答の形式が JSONP に設定されません。 + +## 参照 + [WCF Web HTTP プログラミング モデルの概要](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-message-contracts.md b/docs/framework/wcf/feature-details/using-message-contracts.md new file mode 100644 index 00000000000..cf90efe3505 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-message-contracts.md @@ -0,0 +1,464 @@ +--- +title: "メッセージ コントラクトの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "メッセージ コントラクト [WCF]" +ms.assetid: 1e19c64a-ae84-4c2f-9155-91c54a77c249 +caps.latest.revision: 46 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 46 +--- +# メッセージ コントラクトの使用 +一般に、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションを構築するときには、開発者はデータ構造とシリアル化の問題には細心の注意を払いますが、データを送信するメッセージの構造について懸念する必要はありません。このようなアプリケーションでは、パラメーターまたは戻り値用にデータ コントラクトを作成するのは簡単です \([!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][サービス コントラクトでのデータ転送の指定](../../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md).\) + + ただし、SOAP メッセージの構造を完全に制御することがメッセージの内容の制御と同様に重要となる場合があります。これが特に当てはまるのは、相互運用性が重要である場合、具体的にはメッセージまたはメッセージ部分のレベルでセキュリティの問題を制御する場合です。このような場合、必要とされる正確な SOAP メッセージの構造を指定できる、*メッセージ コントラクト*を作成できます。 + + ここでは、メッセージ コントラクトの各種属性を使用して、ユーザー操作に専用のメッセージ コントラクトを作成する方法について説明します。 + +## 処理におけるメッセージ コントラクトの使用 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、*"リモート プロシージャ コール \(RPC: Remote Procedure Call\) スタイル"*、または *"メッセージング スタイル"* でモデル化された操作をサポートします。RPC スタイルの操作では、シリアル化可能な任意の型を使用できます。複数のパラメーター、`ref` パラメーターと `out` パラメーターなど、ローカル呼び出しで使用できる機能が用意されています。このスタイルでは、選択したシリアル化の形式によって基になるメッセージのデータ構造が制御されますが、操作をサポートするために、メッセージは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムによって作成されます。これにより、SOAP や SOAP メッセージに不慣れな開発者でも、サービス アプリケーションを迅速かつ容易に作成し、使用できます。 + + RPC スタイルでモデル化されたサービス操作のコード例を次に示します。 + +```csharp +[OperationContract] +public BankingTransactionResponse PostBankingTransaction(BankingTransaction bt); +``` + + 通常は、データ コントラクトだけでメッセージのスキーマを定義することができます。たとえば、前述の例では、`BankingTransaction` と `BankingTransactionResponse` にデータ コントラクトがあれば、ほとんどのアプリケーションで基になる SOAP メッセージの内容を定義できます。データ コントラクト[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md)」を参照してください。 + + ただし、場合によっては、SOAP メッセージの構造がネットワーク経由でどのように転送されるかを厳密に制御する必要があります。最も一般的なシナリオは、カスタム SOAP ヘッダーの挿入です。もう 1 つの一般的なシナリオは、メッセージのヘッダーと本文のセキュリティ プロパティを定義すること、つまり、これらの要素にデジタル署名し、要素を暗号化するかどうかを決定することです。最後に、一部のサードパーティの SOAP スタックでは、メッセージが特定の形式である必要があります。この制御は、メッセージング スタイルの操作によって行うことができます。 + + メッセージング スタイルの操作には、最大で 1 つのパラメーターと 1 つの戻り値があります。これらはいずれもメッセージ型です。つまり、パラメーターと戻り値は、指定された SOAP メッセージ構造に直接シリアル化されます。これは、 型、または 型としてマークされた任意の型を使用できます。次のコード例は前の RPC スタイルと同様の操作を示していますが、この例ではメッセージング スタイルを使用しています。 + + たとえば、`BankingTransaction` と `BankingTransactionResponse` がいずれもメッセージ コントラクトである型である場合、次の操作のコードは有効です。 + +```csharp +[OperationContract] +BankingTransactionResponse Process(BankingTransaction bt); +[OperationContract] +void Store(BankingTransaction bt); +[OperationContract] +BankingTransactionResponse GetResponse(); +``` + + ただし、次のコードは無効です。 + +```csharp +[OperationContract] +bool Validate(BankingTransaction bt); +// Invalid, the return type is not a message contract. +[OperationContract] +void Reconcile(BankingTransaction bt1, BankingTransaction bt2); +// Invalid, there is more than one parameter. +``` + + メッセージ コントラクト型を含み、有効なパターンのいずれにも従わないすべての操作に対して例外がスローされます。もちろん、メッセージ コントラクト型を含まない処理にはこのような制限はありません。 + + 1 つの型にメッセージ コントラクトとデータ コントラクトの両方が含まれる場合は、処理でその型が使用されたときにはメッセージ コントラクトだけが考慮されます。 + +## メッセージ コントラクトの定義 + 型のメッセージ コントラクトを定義する \(つまり、型と SOAP エンベロープ間のマッピングを定義する\) には、 を型に適用します。次に、SOAP ヘッダーにする型のメンバーに を適用し、メッセージの SOAP 本文の一部にするメンバーに を適用します。 + + メッセージ コントラクトの使用例を次のコードに示します。 + +```csharp +[MessageContract] +public class BankingTransaction +{ + [MessageHeader] public Operation operation; + [MessageHeader] public DateTime transactionDate; + [MessageBodyMember] private Account sourceAccount; + [MessageBodyMember] private Account targetAccount; + [MessageBodyMember] public int amount; +} +``` + + この型を操作パラメーターとして使用すると、次の SOAP エンベロープが生成されます。 + +```xml + + + Deposit + 2012-02-16T16:10:00 + + + + 0 + + + + + + +``` + + `operation` と `transactionDate` が SOAP ヘッダーとして表示され、SOAP 本体は `sourceAccount`、`targetAccount`、および `amount` を含むラッパー要素 `BankingTransaction` から成ることに注意してください。 + + パブリック、プライベート、保護、または内部のいずれであるかに関係なく、 は、すべてのフィールド、プロパティ、およびイベントに適用できます。 + + を使用すると、SOAP メッセージの本文のラッパー要素の名前を制御する WrapperName および WrapperNamespace 属性を指定できます。既定では、メッセージ コントラクト型の名前はラッパー用に使用され、メッセージ コントラクトが定義されている名前空間 \(`http://tempuri.org/`\) は既定の名前空間として使用されます。 + +> [!NOTE] +> 属性は、メッセージ コントラクトでは無視されます。 が必要な場合は、対象のメッセージ コントラクトを使用している処理でそれを設定します。 + +## ヘッダー名、本文名、および名前空間の制御 + メッセージ コントラクトの SOAP 表現では、各ヘッダーと本文の各部分が名前と名前空間を持つ XML 要素にマップされます。 + + 既定では、名前空間はメッセージが参加しているサービス コントラクトの名前空間と同じであり、その名前は 属性または 属性が割り当てられたメンバー名によって決定されます。 + + \( 属性と 属性の親クラスの\) および を操作することによって、これらの既定値を変更できます。 + + 次のコード例のクラスについて考えてみます。 + +```csharp +[MessageContract] +public class BankingTransaction +{ + [MessageHeader] public Operation operation; + [MessageHeader(Namespace="http://schemas.contoso.com/auditing/2005")] public bool IsAudited; + [MessageBodyMember(Name="transactionData")] public BankingTransactionData theData; +} + +``` + + この例では、`IsAudited` ヘッダーがコードで指定された名前空間に存在し、`theData` メンバーを表す本文が `transactionData` という名前の XML 要素によって表現されます。次に、このメッセージ コントラクト用に生成された XML を示します。 + +``` + + + false + Deposit + + + + + + + + +``` + +## SOAP 本文の各部分のラップの制御 + SOAP 本文は、既定で、ラップされた要素内にシリアル化されます。たとえば、`HelloGreetingMessage` メッセージのメッセージ コントラクトに含まれる 型の名前から生成される `HelloGreetingMessage` ラッパー要素を次のコードに示します。 + + [!code-csharp[MessageHeaderAttribute#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/messageheaderattribute/cs/services.cs#3)] + [!code-vb[MessageHeaderAttribute#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/messageheaderattribute/vb/services.vb#3)] + + ラッパー要素を抑制するには、 プロパティを `false` に設定します。ラッパー要素の名前と名前空間を制御するには、 プロパティと プロパティを使用します。 + +> [!NOTE] +> ラップされていないメッセージにメッセージ本文の複数の部分を含めることは、WS\-I Basic Profile 1.1 規格に反するため、新しいメッセージ コントラクトを設計する場合はお勧めできません。ただし、特定の相互運用シナリオでは、複数のラップされていないメッセージ本文が必要な場合もあります。1 つのメッセージ本文で複数のデータを転送する場合は、既定の \(ラップされた\) モードを使用することをお勧めします。ラップされていないメッセージで複数のメッセージ ヘッダーを使用しても、何の問題もありません。 + +## メッセージ コントラクト内部でのカスタム型の使用 + メッセージが使用されるサービス コントラクト用に選択されたシリアル化エンジンを使用して、個々のメッセージ ヘッダーとメッセージ本文がシリアル化されます \(XML に変換されます\)。既定のシリアル化エンジンである `XmlFormatter` は、データ コントラクトを持つ任意の型を \( を持つことによって\) 明示的に処理することも、\(プリミティブ型にしたり、 を持ったりすることなどによって\) 暗黙的に処理することもできます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md). + + 前の例では、`Operation` 型と `BankingTransactionData` 型は、データ コントラクトを持つ必要があります。また、 がプリミティブである \(したがって、暗黙のデータ コントラクトを持つ\) ため、`transactionDate` はシリアル化可能です。 + + ただし、別のシリアル化エンジンである `XmlSerializer` に切り替えることができます。このような切り替えを行う場合は、メッセージ ヘッダーと本文の各部分に使用されているすべての型が `XmlSerializer` を使用してシリアル化可能であることを確認する必要があります。 + +## メッセージ コントラクト内部での配列の使用 + メッセージ コントラクトでは、反復要素の配列を 2 とおりの方法で使用できます。 + + 最初の方法は、配列上で または を直接使用する方法です。この場合は、配列全体が複数の子要素を含む 1 つの要素 \(つまり、1 つのヘッダーまたは 1 つの本文\) としてシリアル化されます。次の例のクラスについて考えてみます。 + +```csharp +[MessageContract] +public class BankingDepositLog +{ + [MessageHeader] public int numRecords; + [MessageHeader] public DepositRecord[] records; + [MessageHeader] public int branchID; +} +``` + + これは、次のような SOAP ヘッダーになります。 + +``` + +3 + + Record1 + Record2 + Record3 + +20643 + +``` + + もう 1 つの方法は、 を使用する方法です。この場合、各配列要素が個別にシリアル化されるため、次のように配列要素ごとに 1 つのヘッダーが付加されます。 + +``` + +3 +Record1 +Record2 +Record3 +20643 +``` + + 配列エントリの既定の名前は、 属性が適用されたメンバーの名前になります。 + + 属性は、 から継承されます。この属性は、非配列属性と同じ機能セットを持ちます。たとえば、単一のヘッダーに設定するのと同様に、ヘッダーの配列に順序、名前、および名前空間を設定できます。配列で `Order` プロパティを使用すると、その配列全体に適用されます。 + + を適用できるのは配列だけであり、コレクションには適用できません。 + +## メッセージ コントラクトでのバイト配列の使用 + バイト配列を非配列属性 \(\) で使用した場合は、配列としてではなく、生成された XML 内で Base64 でエンコードされたデータとして表現される特殊なプリミティブ型として扱われます。 + + 配列属性でバイト配列を使用した場合、結果は使用しているシリアライザーによって異なります。既定のシリアライザーでは、配列が個々のバイト エントリとして表されます。ただし、\(サービス コントラクトの を使用して\) `XmlSerializer` を選択した場合は、配列属性と非配列属性のどちらを使用しているかに関係なく、バイト配列は Base64 データとして扱われます。 + +## メッセージの一部の署名と暗号化 + メッセージ コントラクトでは、メッセージのヘッダーまたは本文にデジタル署名し、暗号化するかどうかを示すことができます。 + + この操作は、 属性と 属性の プロパティを設定することによって実行されます。このプロパティは、 型の列挙体であり、 \(暗号化と署名を行わない\)、 \(デジタル署名だけを行う\)、または \(暗号化とデジタル署名の両方を行う\) に設定できます。既定値は です。 + + これらのセキュリティ機能を使用するには、バインディングと動作を適切に構成する必要があります。適切な構成を行わずにこれらのセキュリティ機能を使用した場合 \(資格情報を指定せずにメッセージに署名しようとした場合など\)、検証時に例外がスローされます。 + + メッセージ ヘッダーの場合、ヘッダーごとに保護レベルが設定されます。 + + メッセージ本文の各部分の場合は、保護レベルを "最小保護レベル" と見なすことができます。本文には、その数に関係なく 1 つの保護レベルしか設定できません。本文の保護レベルは、本文の全部分の中の最も高い プロパティの設定によって決定されます。ただし、本文の各部分の保護レベルを必要最小限の保護レベルに設定することをお勧めします。 + + 次のコード例のクラスについて考えてみます。 + +```csharp +[MessageContract] +public class PatientRecord +{ + [MessageHeader(ProtectionLevel=None)] public int recordID; + [MessageHeader(ProtectionLevel=Sign)] public string patientName; + [MessageHeader(ProtectionLevel=EncryptAndSign)] public string SSN; + [MessageBodyMember(ProtectionLevel=None)] public string comments; + [MessageBodyMember(ProtectionLevel=Sign)] public string diagnosis; + [MessageBodyMember(ProtectionLevel=EncryptAndSign)] public string medicalHistory; +} +``` + + この例では、`recordID` ヘッダーは保護されず、`patientName` は署名され、`SSN` は暗号化および署名されます。本文の comments と diagnosis の各部分では低い保護レベルを指定していても、本文の少なくとも 1 つの部分 \(`medicalHistory`\) に が適用されているため、メッセージ本文全体が暗号化され、署名されます。 + +## SOAP アクション + SOAP 標準と関連する Web サービス標準では、送信されるすべての SOAP メッセージに設定可能な `Action` という名前のプロパティが定義されます。このプロパティの値は、操作の プロパティと プロパティによって制御されます。 + +## SOAP ヘッダーの属性 + SOAP 標準では、ヘッダーに設定可能な次の属性が定義されます。 + +- `Actor/Role` \(SOAP 1.1 では `Actor`、SOAP 1.2 では `Role`\) + +- `MustUnderstand` + +- `Relay` + + `Actor` 属性または `Role` 属性は、指定のヘッダーが対象とするノードの URI \(Uniform Resource Identifier\) を指定します。`MustUnderstand` 属性は、ヘッダー処理ノードがヘッダーを認識する必要があるかどうかを指定します。`Relay` 属性は、ダウンストリーム ノードにヘッダーを中継する必要があるかどうかを指定します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、`MustUnderstand` 属性を除いて \(このトピックの後の方の「メッセージ コントラクトのバージョン管理」セクションで指定\)、受信メッセージに対してこれらの属性の処理を実行しません。ただし、後述するように、必要に応じてこれらの属性を読み書きすることができます。 + + 既定では、メッセージの送信時にこれらの属性は出力されません。これは、2 とおりの方法で変更できます。1 つ目の方法として、次のコード例に示すように、、および の各プロパティを変更することによって、属性を必要な値に静的に設定できます \(`Role` プロパティが存在しないことに注意してください。SOAP 1.2 を使用している場合は、 プロパティを設定すると `Role` 属性が出力されます\)。 + +```csharp +[MessageContract] +public class BankingTransaction +{ + [MessageHeader(Actor="http://auditingservice.contoso.com", MustUnderstand=true)] public bool IsAudited; + [MessageHeader] public Operation operation; + [MessageBodyMember] public BankingTransactionData theData; +} +``` + + これらの属性を制御する 2 番目の方法は、コードを通して動的に行う方法です。これを行うには、必要なヘッダーの型を 型にラップし \(この型と非ジェネリック バージョンを混同しないようにしてください\)、その型を と共に使用します。これで、次のコード例に示すように、 のプロパティを使用して SOAP 属性を設定できるようになります。 + +```csharp +[MessageContract] +public class BankingTransaction +{ + [MessageHeader] public MessageHeader IsAudited; + [MessageHeader] public Operation operation; + [MessageBodyMember] public BankingTransactionData theData; +} +// application code: +BankingTransaction bt = new BankingTransaction(); +bt.IsAudited = new MessageHeader(); +bt.IsAudited.Content = false; // Set IsAudited header value to "false" +bt.IsAudited.Actor="http://auditingservice.contoso.com"; +bt.IsAudited.MustUnderstand=true; +``` + + 動的制御機構と静的制御機構の両方を使用する場合、静的な設定が既定で使用されますが、次のコードに示すように、後で動的機構を使用して静的な設定をオーバーライドできます。 + +``` +[C#] +[MessageHeader(MustUnderstand=true)] public MessageHeader documentApprover; +// later on in the code: +BankingTransaction bt = new BankingTransaction(); +bt.documentApprover = new MessageHeader(); +bt.documentApprover.MustUnderstand = false; // override the static default of 'true' +``` + + 次のコードに示すように、属性を動的に制御して繰り返すヘッダーを作成できます。 + +```csharp +[MessageHeaderArray] public MessageHeader documentApprovers[]; +``` + + 受信側で、 クラスがこの型のヘッダーで使用されている場合にのみ、これらの SOAP 属性の読み取りを実行できます。受信メッセージの属性設定を明らかにするために、 型のヘッダーの `Actor`、`Relay`、または `MustUnderstand` の各プロパティを調べます。 + + メッセージを受信して返信するときに、これらの SOAP 属性設定は 型のヘッダーとして往復するだけです。 + +## SOAP 本文の順序 + 状況によっては、本文の各部分の順序を制御する必要があります。本文要素の既定の順序はアルファベット順ですが、 プロパティで制御できます。このプロパティのセマンティクスは、継承シナリオにおける動作を除き、 プロパティのセマンティクスと同じです \(メッセージ コントラクトでは、派生型の本文メンバーの前に基本データ型の本文メンバーが並べ替えられることはありません\)。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][データ メンバーの順序](../../../../docs/framework/wcf/feature-details/data-member-order.md). + + 次の例では、通常はアルファベット順で最初である `amount` が先頭にきますが、 プロパティによって 3 番目の位置に挿入されます。 + +```csharp +[MessageContract] +public class BankingTransaction +{ + [MessageHeader] public Operation operation; + [MessageBodyMember(Order=1)] public Account sourceAccount; + [MessageBodyMember(Order=2)] public Account targetAccount; + [MessageBodyMember(Order=3)] public int amount; +} +``` + +## メッセージ コントラクトのバージョン管理 + 場合によっては、メッセージ コントラクトを変更する必要があります。たとえば、新しいバージョンのアプリケーションによってメッセージに余分なヘッダーが追加された場合です。この場合、新しいバージョンから古いバージョンに送信するときは、システムは余分なヘッダーを処理し、逆方向に送信するときは不足しているヘッダーを処理する必要があります。 + + ヘッダーのバージョン管理には、次のルールが適用されます。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は不足しているヘッダーを問題にしません。対応するメンバーは既定値で残されます。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、予期しない余分なヘッダーも無視します。このルールの 1 つの例外は、入力 SOAP メッセージ内の余分なヘッダーの `MustUnderstand` 属性が `true` に設定されている場合です。この場合、認識する必要のあるヘッダーを処理できないため、例外がスローされます。 + + メッセージ本文にも同様のバージョン管理ルールがあります。メッセージ本文の不足している部分と追加された部分はいずれも無視されます。 + +## 継承に関する留意点 + メッセージ コントラクト型は、基本データ型がメッセージ コントラクトを持っている限り、他の型から継承することができます。 + + 他のメッセージ コントラクト型から継承したメッセージ コントラクト型を使用して、メッセージを作成したり、メッセージにアクセスしたりする場合、次のルールが適用されます。 + +- 継承階層内のすべてのメッセージ ヘッダーが収集され、そのメッセージの完全なヘッダー セットが形成されます。 + +- 継承階層内のすべてのメッセージ本文が収集され、完全なメッセージ本文が形成されます。本文の各部分は、継承階層内での位置に関係なく、通常の順序ルール \( プロパティ順、続いてアルファベット順\) に従って並べられます。メッセージ本文が継承ツリーの複数レベルに存在するメッセージ コントラクト継承の使用は、あまりお勧めできません。基本クラスと派生クラスでヘッダーまたは本文に同じ名前が定義されている場合は、base\-most クラスからのメンバーがそのヘッダーまたは本文の値を保存するために使用されます。 + + 次のコード例のクラスについて考えてみます。 + +```csharp +[MessageContract] +public class PersonRecord +{ + [MessageHeader(Name="ID")] public int personID; + [MessageBodyMember] public string patientName; +} + +[MessageContract] +public class PatientRecord : PersonRecord +{ + [MessageHeader(Name="ID")] public int patientID; + [MessageBodyMember] public string diagnosis; +} +``` + + `PatientRecord` クラスは、`ID` という名前の 1 つのヘッダーを持つメッセージを記述します。このヘッダーは、base\-most メンバーが選択されたことによって、`personID` メンバーには対応しますが、`patientID` メンバーには対応しません。そのため、この場合は `patientID` フィールドは使用されません。メッセージ本文には、アルファベット順で、`diagnosis` 要素の次に `patientName` 要素が含まれます。この例は、基本メッセージ コントラクトと派生メッセージ コントラクトの両方にメッセージ本文が含まれ、あまりお勧めできないパターンを示していることに注意してください。 + +## WSDL に関する留意点 + メッセージ コントラクトを使用するサービスから Web サービス記述言語 \(WSDL: Web Services Description Language\) コントラクトを生成するときには、メッセージ コントラクトのすべての機能が結果の WSDL に反映されるわけではないことに留意してください。以下の点を考慮します。 + +- WSDL では、ヘッダー配列の概念を表現することができません。 を使用してヘッダー配列を含むメッセージを作成した場合、結果の WSDL は配列ではなく 1 つのヘッダーだけに反映されます。 + +- 結果の WSDL ドキュメントに一部の保護レベル情報が反映されない場合があります。 + +- WSDL で生成されたメッセージ型が、メッセージ コントラクト型のクラスと同じ名前になります。 + +- 複数の処理で同じメッセージ コントラクトを使用すると、WSDL ドキュメント内に複数のメッセージ型が生成されます。以降も使用できるように、"2"、"3" などの番号を付加することで名前を一意にします。WSDL をインポートし直すと、名前以外は同一の複数のメッセージ コントラクト型が作成されます。 + +## SOAP エンコードに関する留意点 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、XML のレガシー SOAP エンコード スタイルを使用できますが、このスタイルを使用することはお勧めしません。\(サービス コントラクトに適用されている で、`Use` プロパティを `Encoded` に設定して\) このスタイルを使用する場合、次の追加の考慮事項が適用されます。 + +- メッセージ ヘッダーはサポートされません。つまり、 属性と 配列属性は、SOAP エンコーディングと互換性がありません。 + +- メッセージ コントラクトがラップされていない場合、つまり、 プロパティが `false` に設定されている場合は、メッセージ コントラクトが持つことのできる本文の部分は 1 つに限られます。 + +- 要求メッセージ コントラクトのラッパー要素の名前は、操作の名前と一致する必要があります。この場合、メッセージ コントラクトの `WrapperName` プロパティを使用します。 + +- 応答メッセージ コントラクトのラッパー要素の名前は、操作の名前にサフィックスとして "Response" を付けたものと同じである必要があります。この場合、メッセージ コントラクトの プロパティを使用します。 + +- SOAP エンコードはオブジェクト参照を保存します。たとえば、次のコードについて考えてみます。 + + ```csharp + [MessageContract(WrapperName="updateChangeRecord")] + public class ChangeRecordRequest + { + [MessageBodyMember] Person changedBy; + [MessageBodyMember] Person changedFrom; + [MessageBodyMember] Person changedTo; + } + + [MessageContract(WrapperName="updateChangeRecordResponse")] + public class ChangeRecordResponse + { + [MessageBodyMember] Person changedBy; + [MessageBodyMember] Person changedFrom; + [MessageBodyMember] Person changedTo; + } + + // application code: + ChangeRecordRequest cr = new ChangeRecordRequest(); + Person p = new Person("John Doe"); + cr.changedBy=p; + cr.changedFrom=p; + cr.changedTo=p; + ``` + + SOAP エンコーディングを使用してメッセージをシリアル化した後、`changedFrom` と `changedTo` には `p` のコピーは保存されませんが、代わりに、`changedBy` 要素内部のコピーがポイントされます。 + +## パフォーマンスに関する考慮事項 + すべてのメッセージ ヘッダーとメッセージ本文が個別にシリアル化されます。したがって、ヘッダーおよび本文ごとに同じ名前空間が繰り返し宣言される可能性があります。特に、回線上のメッセージ サイズに関して、パフォーマンスを向上させるには、複数のヘッダーと本文を単一のヘッダーまたは本文に統合します。たとえば、次のコードの代わりに + +```csharp +[MessageContract] +public class BankingTransaction +{ + [MessageHeader] public Operation operation; + [MessageBodyMember] public Account sourceAccount; + [MessageBodyMember] public Account targetAccount; + [MessageBodyMember] public int amount; +} +``` + + 次のコードを使用します。 + +```csharp +[MessageContract] +public class BankingTransaction +{ + [MessageHeader] public Operation operation; + [MessageBodyMember] public OperationDetails details; +} + +[DataContract] +public class OperationDetails +{ + [DataMember] public Account sourceAccount; + [DataMember] public Account targetAccount; + [DataMember] public int amount; +} +``` + +### イベント ベースの非同期とメッセージ コントラクト + イベント ベースの非同期モデルのデザイン ガイドラインには、複数の値を返す場合に、1 つの値を `Result` プロパティとして返し、残りの値を オブジェクトのプロパティとして返すことが記載されています。この 1 つの結果として、クライアントがイベント ベースの非同期コマンド オプションを使用してメタデータをインポートし、操作から複数の値が返される場合、既定の オブジェクトは 1 つの値を `Result` プロパティとして返し、残りの値は オブジェクトのプロパティになります。 + + メッセージ オブジェクトを `Result` プロパティとして受け取り、返された値をそのオブジェクトのプロパティとして取得する場合は、`/messageContract` コマンド オプションを使用します。これにより、 オブジェクトの `Result` プロパティとして応答メッセージを返すシグネチャが生成されます。すべての内部戻り値は、応答メッセージ オブジェクトのプロパティになります。 + +## 参照 + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + [サービスの設計と実装](../../../../docs/framework/wcf/designing-and-implementing-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-metadata.md b/docs/framework/wcf/feature-details/using-metadata.md new file mode 100644 index 00000000000..415690b7584 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-metadata.md @@ -0,0 +1,33 @@ +--- +title: "メタデータを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 05cf53a1-b92d-4d8e-a87e-79f6e51c4a8d +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# メタデータを使用する +サービス メタデータには、コンピューターが読み取ることのできる、サービスに関する説明が含まれます。サービス メタデータには、サービス エンドポイント、バインディング、コントラクト、操作、およびメッセージに関する説明が含まれます。サービス メタデータは、サービスを利用するクライアントの自動生成、サービスに関する説明の実装、クライアントに対するバインディングの動的な更新など、さまざまな目的で使用できます。 + +## このセクションの内容 + [生成されたクライアント コードの理解](../../../../docs/framework/wcf/feature-details/understanding-generated-client-code.md) + Svcutil.exe ツールによって生成されるさまざまなクラスとインターフェイスについて説明します。 + + [方法 : メタデータの取得および準拠サービスの実装をする](../../../../docs/framework/wcf/feature-details/how-to-retrieve-metadata-and-implement-a-compliant-service.md) + Svcutil.exe を使用してメタデータを取得し、準拠サービスを実装する方法を示します。 + + [サービス メタデータからの WCF クライアントの生成](../../../../docs/framework/wcf/feature-details/generating-a-wcf-client-from-service-metadata.md) + Svcutil.exe を使用してメタデータを取得し、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントを生成する方法を示します。 + +## 参照 + [メタデータ](../../../../docs/framework/wcf/feature-details/metadata.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-multiple-authentication-schemes-with-wcf.md b/docs/framework/wcf/feature-details/using-multiple-authentication-schemes-with-wcf.md new file mode 100644 index 00000000000..2eb0978c945 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-multiple-authentication-schemes-with-wcf.md @@ -0,0 +1,139 @@ +--- +title: "WCF での複数の認証方式の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f32a56a0-e2b2-46bf-a302-29e1275917f9 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# WCF での複数の認証方式の使用 +WCF では、単一のエンドポイントに複数の認証方式を指定できるようになりました。 さらに、Web ホスト サービスは、認証設定を IIS から直接継承できます。 自己ホスト型サービスは、使用可能な認証方式を指定できます。 IIS での認証設定の詳細については、「[IIS の認証](http://go.microsoft.com/fwlink/?LinkId=232458)」を参照してください。 + +## IIS でホストされるサービス + IIS でホストされるサービスでは、IIS で使用する認証方式を設定します。 その後、サービスの web.config ファイル内のバインディング構成で、次の XML スニペットで示すように clientCredential の種類を "InheritedFromHost" として指定します。 + +```xml + + + + + + + + + +``` + + ServiceAuthenticationBehavior または \ 要素を使用して、認証方式のサブセットのみをサービスで使用するよう指定できます。 これをコードで構成する場合は、次のコード スニペットに示すように ServiceAuthenticationBehavior を使用します。 + +```csharp +// ... +ServiceAuthenticationBehavior sab = null; +sab = serviceHost.Description.Behaviors.Find(); + +if (sab == null) +{ + sab = new ServiceAuthenticationBehavior(); + sab.AuthenticationSchemes = AuthenticationSchemes.Basic | AuthenticationSchemes.Negotiate | AuthenticationSchemes.Digest; + serviceHost.Description.Behaviors.Add(sab); +} +else +{ + sab.AuthenticationSchemes = AuthenticationSchemes.Basic | AuthenticationSchemes.Negotiate | AuthenticationSchemes.Digest; +} +// ... + +``` + + config ファイルでこれを構成する場合は、次の XML スニペットに示すように \ 要素を使用します。 + +```xml + + + + + + + + +``` + + この結果、IIS で選択した内容に応じて、ここに示されている認証方式のサブセットに限り、サービス エンドポイントへの適用が検討されます。 つまり、開発者は serviceAuthenticationManager の一覧から基本認証を省略することによって、リストから基本認証を除外することができます。IIS で有効になっている場合でも、サービス エンドポイントには適用されません。 + +## 自己ホスト型サービス + 自己ホスト型サービスは、設定を継承する IIS がないため、構成方法が少し異なります。 ここで、\ 要素または ServiceAuthenticationBehavior を使用して、継承される認証設定を指定します。 コード例を次に示します。 + +```csharp +// ... +ServiceAuthenticationBehavior sab = null; +sab = serviceHost.Description.Behaviors.Find(); + +if (sab == null) +{ + sab = new ServiceAuthenticationBehavior(); + sab.AuthenticationSchemes = AuthenticationSchemes.Basic | AuthenticationSchemes.Negotiate | AuthenticationSchemes.Digest; + serviceHost.Description.Behaviors.Add(sab); +} +else +{ + sab.AuthenticationSchemes = AuthenticationSchemes.Basic | AuthenticationSchemes.Negotiate | AuthenticationSchemes.Digest; +} +// ... + +``` + + config では、次のようになります。 + +```xml + + + + + + + + +``` + + その後、次の XML スニペットに示すように、バインディング設定で InheritFromHost を指定できます。 + +```xml + + + + + + + + + +``` + + または、次の構成スニペットに示すように、HTTP トランスポート バインド要素で認証方式を設定することにより、カスタム バインディングで認証方式を指定することもできます。 + +```xml + +      +      +    + +``` + +## 参照 + [バインディングとセキュリティ](../../../../docs/framework/wcf/feature-details/bindings-and-security.md) + [エンドポイント : アドレス、バインディング、およびコントラクト](../../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md) + [システムが提供するバインディングの構成](../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md) + [カスタム バインディングを使用したセキュリティ機能](../../../../docs/framework/wcf/feature-details/security-capabilities-with-custom-bindings.md) + [バインディング](../../../../docs/framework/wcf/feature-details/bindings.md) + [バインディング](../../../../docs/framework/wcf/feature-details/bindings.md) + [カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-servicethrottlingbehavior-to-control-wcf-service-performance.md b/docs/framework/wcf/feature-details/using-servicethrottlingbehavior-to-control-wcf-service-performance.md new file mode 100644 index 00000000000..9f49503e348 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-servicethrottlingbehavior-to-control-wcf-service-performance.md @@ -0,0 +1,39 @@ +--- +title: "WCF サービス パフォーマンスを制御するための ServiceThrottlingBehavior の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "サービスのパフォーマンスの動作 [WCF]" +ms.assetid: f9dc120c-dc24-49d5-930e-b22f5bc73423 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# WCF サービス パフォーマンスを制御するための ServiceThrottlingBehavior の使用 +クラス インスタンスの数を制限するために使用できるか、セッションは、アプリケーション レベルで作成するプロパティを公開します。 この動作を使用して、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションのパフォーマンスを最適に調整できます。 + +## サービス インスタンスと同時呼び出しの制御 + 使用して、 でアクティブに処理されるメッセージの最大数を指定するプロパティ、 クラス、およびの最大数を指定するプロパティサービス内のオブジェクト。 + + 通常、これらのプロパティ設定の決定はに対してアプリケーションを実行している実際の動作後に行われるのための設定を読み込みます、 プロパティは、通常、アプリケーション構成ファイルを使用して指定、 [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/servicethrottling.md)要素。 + + 次のコード例の使用を示しています、 を設定するアプリケーション構成ファイルからクラスを、およびプロパティを 1 に簡単な例として。 特定のアプリケーションでの最適な設定については、実際の動作から判断します。 + + [!code-csharp[ServiceThrottlingBehavior#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/servicethrottlingbehavior/cs/hostapplication.exe.config#3)] + + 値によって、実際の実行時動作、 プロパティは、メッセージの数が、操作内実行できる同時やサービスの有効期間受信チャネル セッションに関連、それぞれします。 + + 詳細については、「 、およびします。 + +## 関連項目 + + \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-the-discovery-client-channel.md b/docs/framework/wcf/feature-details/using-the-discovery-client-channel.md new file mode 100644 index 00000000000..e1640f1aaf4 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-the-discovery-client-channel.md @@ -0,0 +1,70 @@ +--- +title: "探索クライアント チャネルの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1494242a-1d64-4035-8ecd-eb4f06c8d2ba +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 探索クライアント チャネルの使用 +WCF クライアント アプリケーションを記述するときには、呼び出すサービスのエンドポイント アドレスを知っている必要があります。多くの場合、サービスのエンドポイント アドレスがわからなかったり、サービスのアドレスが時間の経過と共に変化したりします。探索クライアント チャネルでは、WCF クライアント アプリケーションを記述し、呼び出すサービスを示すと、クライアント チャネルが自動的にプローブ要求を送信します。サービスが応答すると、探索クライアント チャネルは、プローブ応答からサービスのエンドポイント アドレスを受け取り、それを使用してサービスを呼び出します。 + +## 探索クライアント チャネルの使用 + 探索クライアント チャネルを使用するには、 のインスタンスをクライアント チャネル スタックに追加します。または、 を使用すると、まだ追加されていない場合は、 が自動的にバインディングに追加されます。 + +> [!CAUTION] +> は、クライアント チャネル スタックの最上位要素にすることをお勧めします。 の上に追加されたバインディング要素では、、またはそれによって作成されるチャネルが、エンドポイント アドレスまたは `Via` アドレス \(`CreateChannel` メソッドに渡されたアドレス\) を使用しないようにする必要があります。これらには、正しいアドレスが格納されていない可能性があります。 + + クラスには、2 つのパブリック プロパティが含まれています。 + +1. 呼び出すサービスを示すのに使用する 。 + +2. 探索メッセージの送信先の探索エンドポイントを指定する 。 + + プロパティでは、探しているサービス コントラクト、必要なスコープ URI、およびチャネルを開く最大試行回数を指定できます。コントラクトの型は、コンストラクター の呼び出しによって指定されます。スコープ URI は プロパティに追加できます。 プロパティでは、クライアントが接続を試行する結果の最大数を指定できます。プローブ応答を受信すると、クライアントは、プローブ応答で取得したエンドポイント アドレスを使用してチャネルを開きます。例外が発生した場合、クライアントは次のプローブ応答に進み、必要に応じて、さらに応答の受信を待機します。チャネルが正常に開かれるか、または結果の最大数に達するまで、この処理が続行されます。これらの設定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「」を参照してください。 + + プロパティでは、使用する探索エンドポイントを指定できます。通常は ですが、任意の有効なエンドポイントを指定できます。 + + サービスとの通信に使用するバインディングを作成するときには、サービスとまったく同じバインディングを使用するように注意する必要があります。唯一の相違点は、クライアント バインディングの場合は、 がスタックの一番上にあることです。サービスが、システムによって提供されるバインディングの 1 つを使用している場合は、新しい を作成し、システムによって提供されるバインディングを コンストラクターに渡します。次に、`Insert` を プロパティで呼び出して、 を追加できます。 + + をバインディングに追加し、構成したら、WCF クライアント クラスのインスタンスを作成し、それを開いて、そのメソッドを呼び出すことができます。次の例では、探索クライアント チャネルを使用して、`ICalculator` クラス \(WCF の入門チュートリアルで使用するクラス\) を実装し、その `Add` メソッドを呼び出す、WCF サービスを探索します。 + +``` +// Create the DiscoveryClientBindingElement +DiscoveryClientBindingElement bindingElement = new DiscoveryClientBindingElement(); +// Search for a service that implements the ICalculator interface, attempting to open +// the channel a maximum of 2 times +bindingElement.FindCriteria = new FindCriteria(typeof(ICalculator)) { MaxResults = 2 }; +// Use the UdpDiscoveryEndpoint +bindingElement.DiscoveryEndpoint = new UdpDiscoveryEndpoint(); + +// The service uses the BasicHttpBinding, so use that and insert the DiscoveryClientBindingElement at the +// top of the stack +CustomBinding binding = new CustomBinding(new BasicHttpBinding()); +binding.Elements.Insert(0,bindingElement); + +try +{ + // Create the WCF client and call a method + CalculatorClient client = new CalculatorClient(binding, new EndpointAddress("http://schemas.microsoft.com/dynamic")); + client.Open(); + client.Add(1, 1); +} +catch (EndpointNotFoundException ex) +{ + Console.WriteLine("An exception occurred: " + ex.Message); +} +``` + +## セキュリティおよび探索クライアント チャネル + 探索クライアント チャネルの使用時には、2 つのエンドポイントが指定されます。1 つは探索メッセージ用に使用されるエンドポイント \(通常は \) で、もう 1 つはアプリケーション エンドポイントです。セキュリティで保護されたサービスを実装するときには、両方のエンドポイントを保護するように注意する必要があります。セキュリティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-the-message-class.md b/docs/framework/wcf/feature-details/using-the-message-class.md new file mode 100644 index 00000000000..1291b73f011 --- /dev/null +++ b/docs/framework/wcf/feature-details/using-the-message-class.md @@ -0,0 +1,214 @@ +--- +title: "メッセージ クラスの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d1d62bfb-2aa3-4170-b6f8-c93d3afdbbed +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# メッセージ クラスの使用 +クラスは基本となる[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)]します。 クライアントとサービス間のすべての通信が最終的な結果にインスタンスが送受信されました。 + + 対話することはない通常のクラスを直接します。 その代わりに、データ コントラクト、メッセージ コントラクト、操作コントラクトなどの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス モデル コントラクトを使用して送受信メッセージを表します。 ただし、いくつか高度なシナリオを使用してプログラミングすることができます、クラスを直接します。 使用するなど、クラス。 + +- [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] オブジェクトをシリアル化する以外の方法で送信メッセージの内容を作成する必要がある場合 (ディスク上のファイルからメッセージを直接作成する場合など)。 + +- [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] オブジェクトに逆シリアル化する以外の方法で受信メッセージの内容を使用する必要がある場合 (XSLT 変換を XML の未処理コンテンツに適用する場合など)。 + +- メッセージ コンテンツに関係なく、一般的な方法でメッセージを処理する必要がある場合 (メッセージをルーティングまたは転送する場合や、ルーターシステム、負荷分散システム、または発行/定期受信システムを構築する場合など)。 + + 使用する前に、クラス、理解しておく、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]のデータ転送アーキテクチャ[データ転送のアーキテクチャ概要](../../../../docs/framework/wcf/feature-details/data-transfer-architectural-overview.md)します。 + + Aは、データの汎用的なコンテナーですが、その設計は SOAP プロトコル メッセージのデザインとほとんど同じです。 SOAP と同様に、メッセージには本文とヘッダーの両方があります。 メッセージ本文には実際のペイロード データが格納され、ヘッダーには追加の名前付きデータ コンテナーが格納されます。 本文とヘッダーの読み書きルールは異なります。たとえば、ヘッダーは必ずメモリにバッファーされるので順序や回数に関係なくアクセスできますが、本文は&1; 度だけ読み取ってストリーミングできます。 通常 SOAP を使用する場合、メッセージ本文は SOAP 本文にマップされ、メッセージ ヘッダーは SOAP ヘッダーにマップされます。 + +## 処理におけるメッセージ クラスの使用 + 使用することができます、処理、操作のいずれかまたは両方の戻り値の入力パラメーターとしてクラスです。 場合使用は任意の場所演算では、次の制限を適用します。 + +- 処理に `out` パラメーターまたは `ref` パラメーターを含めることはできません。 + +- 複数の `input` パラメーターを指定できません。 パラメーターがある場合は、そのパラメーターを Message 型またはメッセージ コントラクト型にする必要があります。 + +- 戻り値の型は、`void` 型、`Message` 型、またはメッセージ コントラクト型にする必要があります。 + + 有効な操作コントラクトを次のコード例に示します。 + + [!code-csharp[C_UsingTheMessageClass#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_usingthemessageclass/cs/source.cs#1)] + [!code-vb[C_UsingTheMessageClass#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_usingthemessageclass/vb/source.vb#1)] + +## 基本メッセージの作成 + クラスには静的`CreateMessage`ファクトリ メソッド基本的なメッセージを作成することができます。 + + すべて`CreateMessage`型のバージョン パラメーターを受け取るオーバー ロードメッセージで使用する SOAP と Ws-addressing のバージョンを示します。 受信メッセージと同じプロトコル バージョンを使用する場合は、使用、 プロパティをから取得したインスタンス、プロパティです。 また、ほとんどの `CreateMessage` オーバーロードには、メッセージで使用する SOAP アクションを示す文字列パラメーターもあります。 バージョンを `None` に設定すると、SOAP エンベロープの生成を無効にできます。この場合、メッセージは本文のみで構成されます。 + +## オブジェクトからのメッセージの作成 + 最も基本的な `CreateMessage` オーバーロードは、バージョンとアクションだけを受け取り、本文が空のメッセージを作成します。 別のオーバー ロードは、追加パラメーターの場合、メッセージ本体を持つ指定したオブジェクトのシリアル化表現は、これが作成されます。 使用して、 シリアル化の既定の設定にします。 異なるシリアライザーを使用する場合、または `DataContractSerializer` の構成を変更する場合は、`CreateMessage` パラメーターも受け取る `XmlObjectSerializer` オーバーロードを使用します。 + + たとえば、メッセージにオブジェクトを返す場合は、次のコードを使用できます。 + + [!code-csharp[C_UsingTheMessageClass#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_usingthemessageclass/cs/source.cs#2)] + [!code-vb[C_UsingTheMessageClass#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_usingthemessageclass/vb/source.vb#2)] + +## XML リーダーからのメッセージの作成 + ある`CreateMessage`を受け取るオーバー ロード、 またはオブジェクトではなく、本文のです。 この場合、メッセージの本文には、渡された XML リーダーから読み取られた XML が格納されます。 たとえば、次のコードは、XML ファイルから読み取られた内容を本文に持つメッセージを返します。 + + [!code-csharp[C_UsingTheMessageClass#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_usingthemessageclass/cs/source.cs#3)] + [!code-vb[C_UsingTheMessageClass#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_usingthemessageclass/vb/source.vb#3)] + + さらに、ある`CreateMessage`を受け取るオーバー ロード、 またはメッセージ全体と、本文だけでなくを表します。 これらのオーバーロードは、整数の `maxSizeOfHeaders` パラメーターも受け取ります。 メッセージが作成されると直ちにヘッダーがメモリに必ずバッファーされます。このパラメーターは、発生するバッファーの量を制限します。 XML が信頼できないソースから取り込まれる場合は、このパラメーターを安全な値に設定してサービス拒否攻撃の可能性を軽減することが重要です。 XML リーダーが表す、メッセージの SOAP バージョンと WS-Addressing バージョンは、バージョン パラメーターを使用して示されるバージョンと一致する必要があります。 + +## BodyWriter によるメッセージの作成 + `CreateMessage` オーバーロードの&1; つには、メッセージ本文を記述するための `BodyWriter` インスタンスを受け取るものがあります。 `BodyWriter` は、メッセージ本文の作成方法をカスタマイズするために派生させることのできる抽象クラスです。 独自の `BodyWriter` 派生クラスを作成すると、カスタマイズした方法でメッセージ本文を記述できます。 オーバーライドする必要があります、`BodyWriter.OnWriteBodyContents`を受け取るメソッド、 ; このメソッドは、本文の作成を担当します。 + + 本文ライターでは、バッファリングを行うことも、行わないようにする (ストリームする) こともできます。 バッファリングされる本文ライターでは、その内容を何度でも出力できますが、ストリームされる本文ライターの内容は&1; 度しか出力できません。 `IsBuffered` プロパティは、本文ライターがバッファリングされるかどうかを示します。 独自の本文ライターでこれを設定するには、ブール型の `BodyWriter` パラメーターを受け取る `isBuffered` プロテクト コンストラクターを呼び出します。 本文ライターでは、バッファリングされない本文ライターから、バッファリングされた本文ライターを作成することがサポートされています。 `OnCreateBufferedCopy` メソッドをオーバーライドすると、この処理をカスタマイズできます。 既定では、`OnWriteBodyContents` から返された XML が格納されているメモリ内のバッファーが使用されます。 `OnCreateBufferedCopy` は、整数の `maxBufferSize` パラメーターを受け取ります。このメソッドをオーバーライドする場合は、この最大サイズを超えるバッファーを作成しないようにする必要があります。 + + `BodyWriter` クラスには、`WriteBodyContents` メソッドと `CreateBufferedCopy` メソッドが用意されています。基本的にこれらは、それぞれ `OnWriteBodyContents` メソッドと `OnCreateBufferedCopy` メソッドの薄いラッパー (thin wrapper) です。 これらのメソッドは、バッファリングされない本文ライターが&2; 回以上アクセスされないように状態チェックを実行します。 これらのメソッドは、`Message` に基づいたカスタム `BodyWriters` 派生クラスを作成する場合にのみ直接呼び出されます。 + +## エラー メッセージの作成 + 特定の `CreateMessage` オーバーロードを使用して SOAP エラー メッセージを作成できます。 これらはの最も基本的なエラーを説明するオブジェクト。 他のオーバーロードは、利便性のために用意されています。 このようなオーバーロードの&1; つは、`FaultCode` と理由の文字列を受け取り、その情報を `MessageFault` で使用して `MessageFault.CreateFault` を作成します。 他のオーバーロードは、詳細オブジェクトを受け取り、そのオブジェクトをエラー コードと理由と共に `CreateFault` に渡します。 たとえば、次の操作はエラーを返します。 + + [!code-csharp[C_UsingTheMessageClass#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_usingthemessageclass/cs/source.cs#4)] + [!code-vb[C_UsingTheMessageClass#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_usingthemessageclass/vb/source.vb#4)] + +## メッセージ本文データの抽出 + `Message` クラスでは、その本文から情報を抽出する複数の方法がサポートされています。 方法は次のカテゴリに分類されます。 + +- XML ライターに&1; 度に書き込まれるメッセージ本文全体の取得。 これとして参照は*メッセージを書き込む*します。 + +- メッセージ本文での XML リーダーの取得。 これにより、必要に応じてメッセージ本文に後で少しずつアクセスできます。 これとして参照は*メッセージの読み取り*します。 + +- メモリ内のバッファーには、本文を含むメッセージ全体をコピーできます、 型です。 これとして参照は*メッセージのコピー*します。 + + `Message` の本文には、アクセス方法に関係なく&1; 回しかアクセスできません。 メッセージ オブジェクトには `State` プロパティがあります。このプロパティは Created として初期化されます。 この状態は、前の&3; つのアクセス方法により、それぞれ Written、Read、Copied に設定されます。 また、メッセージ本文の内容が不要になったときは、`Close` メソッドによって状態が Closed に設定されます。 メッセージ本文には、状態が Created の場合にのみアクセスできます。状態が変更された後で Created に戻す方法はありません。 + +## メッセージの書き込み + メソッドの本文の内容を指定された`Message`指定された XML ライターのインスタンス。 メソッドは同じで、適切なラッパー要素に、本文の内容を囲む点が異なります (たとえば、 `soap:body`>)。 最後に、 SOAP エンベロープとヘッダーをラップする側を含むメッセージ全体を書き込みます。 SOAP が無効になっている場合 (バージョンが `MessageVersion.None`)、これらの&3; つのメソッドはすべて同じ処理を行います。つまり、メッセージ本文の内容を書き込みます。 + + たとえば、次のコードは、受信メッセージの本文をファイルに書き込みます。 + + [!code-csharp[C_UsingTheMessageClass#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_usingthemessageclass/cs/source.cs#5)] + [!code-vb[C_UsingTheMessageClass#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_usingthemessageclass/vb/source.vb#5)] + + さらに、特定の SOAP 開始要素タグを書き込む&2; つのヘルパー メソッドがあります。 これらのメソッドはメッセージ本文にアクセスしないため、メッセージの状態は変わりません。 次の設定があります。 + +- など、開始本文要素を書き込みます``します。 + +- など、開始エンベロープ要素を書き込みます``します。 + + 対応する終了要素タグを書き込むには、対応する XML ライターで `WriteEndElement` を呼び出します。 これらのメソッドが直接呼び出されることはほとんどありません。 + +## メッセージの読み取り + メッセージ本体を読み取る主な方法は呼び出すします。 戻ります、 メッセージ本文の読み取りに使用することできます。 注意してください、読み取り状態に遷移するとすぐにが呼び出されると、返された XML リーダーを使用する場合にないとします。 + + メソッドでは型指定されたオブジェクトとしてメッセージ本文にアクセスすることもできます。 このメソッドを使用して内部的には、`GetReaderAtBodyContents`にメッセージの状態を移行するため、状態 (を参照してください、プロパティ)。 + + 確認することをお勧めは、 プロパティの場合、メッセージ本文は空とスロー、 します。 また、受信したメッセージ (返信など) の場合、することも確認するメッセージにエラーが含まれるかどうかを示します。 + + 最も基本的なオーバー ロード型 (ジェネリック パラメーターで示されます) を使用して、インスタンスにメッセージ本文をシリアル化解除、 と既定の設定で構成されて、 クォータが無効になっています。 別のシリアル化エンジンを使用するか、または構成するかどうか、`DataContractSerializer`既定以外の方法で使用して、 を受け取るオーバー ロード、 します。 + + たとえば、次のコードは、シリアル化された `Person` オブジェクトを含むメッセージ本文からデータを抽出し、その人の名前を出力します。 + + [!code-csharp[C_UsingTheMessageClass#6](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_usingthemessageclass/cs/source.cs#6)] + [!code-vb[C_UsingTheMessageClass#6](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_usingthemessageclass/vb/source.vb#6)] + +## バッファーへのメッセージのコピー + 場合によっては、メッセージ本文に&2; 回以上アクセスする必要が生じます。たとえば、パブリッシャー/サブスクライバー システムの一部として、同じメッセージを複数の宛先に転送する場合です。 この場合、メッセージ全体 (本文を含む) をメモリ内にバッファーする必要があります。 呼び出すことによってこれを行うします。 このメソッドは、最大バッファー サイズを表す整数パラメーターを受け取り、このサイズ以下のバッファーを作成します。 信頼されていないソースからメッセージを受信する場合は、これを安全な値に設定することが重要です。 + + バッファーとして返される、 インスタンス。 バッファー内のデータには、いくつかの方法でアクセスできます。 呼び出すことの主な方法ですを作成する`Message`バッファーからのインスタンス。 + + 実装には、バッファー内のデータにアクセスする方法、 インターフェイスが、 クラスを基になる XML に直接アクセスを実装します。 いくつかを作成できるオーバー ロードナビゲーター、ノード クォータで保護されたアクセス可能 XML ノードの数を制限します。 これにより、非常に長い処理時間によるサービス拒否攻撃を防止できます。 このクォータは、既定では無効です。 いくつか`CreateNavigator`XML 内の空白の処理方法を指定できるオーバー ロードを使用して、 列挙型の既定値は、`XmlSpace.None`です。 + + メッセージ バッファーの内容にアクセスする最後の方法は、その内容を使用してストリームに書き出すします。 + + `MessageBuffer` を操作する手順を次の例に示します。受信メッセージを複数の受信者に転送してからファイルに記録します。 バッファリングを行わないと、メッセージの本文には&1; 回しかアクセスできないため、この処理は不可能になります。 + + [!code-csharp[C_UsingTheMessageClass#7](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_usingthemessageclass/cs/source.cs#7)] + [!code-vb[C_UsingTheMessageClass#7](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_usingthemessageclass/vb/source.vb#7)] + + `MessageBuffer` クラスには、この他にも注目すべきメンバーがあります。 バッファーの内容が必要な不要になった場合は、リソースを解放メソッドを呼び出すことができます。 プロパティが割り当てられたバッファーのサイズを返します。 プロパティは、メッセージの MIME コンテンツ タイプを返します。 + +## デバッグのためのメッセージ本文へのアクセス + 呼び出すことができます、デバッグのためのメソッドを文字列としてメッセージの表現を取得します。 一般に、メッセージがテキスト エンコーダーでエンコードされていれば、この表現はネットワーク上でのメッセージの表示形式と一致します。ただし、XML の場合は人間にとって読みやすいように書式設定されます。 1 つの例外はメッセージ本文です。 本文は&1; 度しか読み取ることができません。また、`ToString` はメッセージの状態を変更しません。 したがって、`ToString`メソッドを選択し、本文にアクセスできない可能性があります (たとえば、「...」プレース ホルダーを置き換えることがあります "...") で代用されることがあります。 したがって、メッセージ本文の内容が重要な場合は、`ToString` を使用してメッセージを記録しないでください。 + +## メッセージの他の部分へのアクセス + メッセージの本文以外の情報にアクセスするさまざまなプロパティが用意されています。 ただし、これらのプロパティは、メッセージを閉じると呼び出すことができなくなります。 + +- プロパティは、メッセージ ヘッダーを表します。 このトピックの後の「ヘッダーの操作」を参照してください。 + +- プロパティは、一般に送出されません、メッセージが送信されるときに、メッセージに添付された名前付きのデータの一部であるメッセージのプロパティを表します。 このトピックの後の「プロパティの操作」を参照してください。 + +- プロパティが、メッセージに関連付けられている SOAP と Ws-addressing のバージョンを示すまたは`None`SOAP が無効になっている場合。 + +- プロパティを返します。`true`メッセージが SOAP エラー メッセージである場合。 + +- プロパティを返します。`true`場合は、メッセージが空です。 + + 使用することができます、 本文のラッパー要素の特定の属性にアクセスする方法 (たとえば、 ``)、特定の名前と名前空間で識別されます。 このような属性が見つからない場合は、`null` が返されます。 このメソッドは、`Message` の状態が Created の場合 (メッセージ本文がまだアクセスされていない場合) にのみ呼び出すことができます。 + +## ヘッダーの操作 + A`Message`と呼ばれる、名前付きの XML フラグメントの任意の数を含めることができます*ヘッダー*します。 通常、各フラグメントは SOAP ヘッダーにマップされます。 ヘッダーを使用してアクセスされる、`Headers`型のプロパティします。 のコレクションは、 を通じてアクセスできるオブジェクト、および個々 のヘッダー、 インターフェイスまたはインデクサーです。 たとえば、次のコードでは、`Message` のすべてのヘッダー名を表示します。 + + [!code-csharp[C_UsingTheMessageClass#8](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_usingthemessageclass/cs/source.cs#8)] + [!code-vb[C_UsingTheMessageClass#8](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_usingthemessageclass/vb/source.vb#8)] + +#### ヘッダーの追加、削除、検索 + 新しいヘッダーを追加するにを使用してすべての既存のヘッダーの最後に、メソッドです。 使用することができます、メソッドを特定のインデックスに、ヘッダーを挿入します。 挿入されたアイテムに応じて既存のヘッダーは移動します。 ヘッダーは、インデックスに従って順序付けられ、使用できる最初のインデックスは 0 です。 ボリュームを使用して、さまざまなを異なるヘッダーを追加するメソッドのオーバー ロード`Message`または`MessageHeaders`インスタンス。 一部のオーバーロードはヘッダーを&1; つだけコピーします。すべてのヘッダーをコピーする別のオーバーロードもあります。 メソッドは、すべてのヘッダーを削除します。 メソッドは、(その後にすべてのヘッダーをシフト) 特定のインデックス位置にあるヘッダーを削除します。 メソッドは、特定の名前と名前空間のすべてのヘッダーを削除します。 + + 特定のヘッダーを使用して、取得、 メソッドです。 このメソッドは、検索するヘッダーの名前と名前空間を受け取り、そのインデックスを返します。 複数のヘッダーが見つかった場合は、例外がスローされます。 ヘッダーが見つからなかい場合は、-1 が返されます。 + + SOAP ヘッダー モデルでは、ヘッダーに `Actor` 値を持たせ、ヘッダーの受信者を指定できます。 最も基本的な `FindHeader` オーバーロードでは、メッセージの最終受信者を表すヘッダーのみを検索します。 ただし、別のオーバーロードでは、検索に含める `Actor` 値を指定できます。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、SOAP 仕様を参照してください。 + + A [CopyTo (MessageHeaderInfo\からヘッダーをコピーする方法が提供される、 の配列にコレクションオブジェクトです。 + + ヘッダー内の XML データにアクセスするに呼び出すことができますし、特定のヘッダー インデックスの XML リーダーを返します。 ヘッダーの内容をオブジェクトに逆シリアル化する場合は、使用または他のオーバー ロードのいずれかです。 最も基本的なオーバー ロードを使用してヘッダーを逆シリアル化、 既定値で構成されている方法です。 異なるシリアライザーを使用したり、異なる構成の `DataContractSerializer` を使用したりする場合は、`XmlObjectSerializer` を受け取るオーバーロードの&1; つを使用します。 インデックスの代わりに、ヘッダー名、名前空間、オプションとして `Actor` 値のリストを受け取るオーバーロードもあります。これは、`FindHeader` と `GetHeader` の組み合わせです。 + +## プロパティの操作 + `Message` インスタンスには、任意の数の任意の型の名前付きオブジェクトを含めることができます。 このコレクションは、`Properties` 型の `MessageProperties` プロパティを使用してアクセスできます。 コレクションを実装、 インターフェイスし、のマッピングの役割を果たします\。 通常、プロパティの値は、ネットワーク上のメッセージの一部に直接マップされないが、さまざまなメッセージ処理のヒントのさまざまなチャンネルを提供、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]チャネル スタックや、 [CopyTo (MessageHeaderInfo\サービス フレームワークです。 例については、次を参照してください。[データ転送のアーキテクチャ概要](../../../../docs/framework/wcf/feature-details/data-transfer-architectural-overview.md)します。 + +## Message クラスからの継承 + `CreateMessage` を使用して作成された組み込みのメッセージ型がユーザーの要件を満たさない場合は、`Message` クラスから派生するクラスを作成します。 + +### メッセージ本文の内容の定義 + メッセージ本文内のデータにアクセスする主な手法は、書き込み、読み取り、バッファーへのコピーの&3; つです。 これらの操作は、最終的に、 、およびメソッドの呼び出しに、それぞれの派生クラスで`Message`します。 `Message` 基本クラスでは、これらのメソッドは `Message` インスタンスごとに&1; つしか呼び出されないようになっており、そのメソッドが&2; 回以上呼び出されることもありません。 また、この基本クラスは、閉じられているメッセージでメソッドが呼び出されないことも保証します。 実装の中でメッセージ状態を追跡する必要はありません。 + + 抽象メソッドで、実装する必要があります。 メッセージの本文内容を定義する最も基本的な方法は、このメソッドを使用して書き込むことです。 たとえば、次のメッセージには 1 から 20 までの 100,000 個の乱数が含まれています。 + + [!code-csharp[C_UsingTheMessageClass#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_usingthemessageclass/cs/source.cs#9)] + [!code-vb[C_UsingTheMessageClass#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_usingthemessageclass/vb/source.vb#9)] + + + `OnGetReaderAtBodyContents` メソッドと `OnCreateBufferedCopy` メソッドには、ほとんどの場合に有効な既定の実装があります。 既定の実装は、`OnWriteBodyContents` を呼び出し、結果をバッファーに格納して、格納後のバッファーを操作します。 ただし、これが十分ではない場合もあります。 前の例では、メッセージを読み込むと 100,000 個の XML 要素がバッファーに格納されることになりますが、これは望ましくありません。 `OnGetReaderAtBodyContents` をオーバーライドすると、乱数を提供するカスタムの `XmlDictionaryReader` 派生クラスを返すことができます。 これで、`OnWriteBodyContents` をオーバーライドして、`OnGetReaderAtBodyContents` プロパティから返されたリーダーを使用できます。この例を次に示します。 + + [!code-csharp[C_UsingTheMessageClass#10](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_usingthemessageclass/cs/source.cs#10)] + [!code-vb[C_UsingTheMessageClass#10](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_usingthemessageclass/vb/source.vb#10)] + + 同様に `OnCreateBufferedCopy` をオーバーライドして、独自の `MessageBuffer` 派生クラスを返すこともできます。 + + メッセージの派生クラスでは、メッセージ本文の内容を提供するだけでなく、`Version`、`Headers`、`Properties` の各プロパティをオーバーライドする必要もあります。 + + メッセージのコピーを作成した場合、作成したコピーでは、元のメッセージのメッセージ ヘッダーが使用されます。 + +### オーバーライド可能なその他のメンバー + オーバーライドすることができます、 、および SOAP エンベロープ、SOAP ヘッダーと SOAP 本文要素のタグを起動する方法を指定する方法が書き込まれます。 通常、これらは、``、``、および `` に対応します。 一般的に、`Version` プロパティで `MessageVersion.None` が返された場合、これらのメソッドで何も書き込まないでください。 + +> [!NOTE] +> `OnGetReaderAtBodyContents` の既定の実装では、`OnWriteStartEnvelope` を呼び出して結果をバッファーに格納する前に、`OnWriteStartBody` と `OnWriteBodyContents` を呼び出します。 ヘッダーは書き込まれません。 + + オーバーライド、 メソッドで、さまざまな部分からメッセージ全体を構築する方法を変更します。 `OnWriteMessage`からメソッドを呼び出したや既定実装します。 オーバーライドすることに注意してくださいベスト プラクティスではありません。 適切な上書きすることをお勧め`On`メソッド (たとえば、 、およびします。 + + オーバーライドをデバッグ中のメッセージ本文の表現方法をオーバーライドします。 既定では、3 つのドット ("...") で表されます。 このメソッドは、メッセージの状態が Closed 以外のときに複数回呼び出すことができます。 このメソッドを実装すると、1 度だけ実行する必要のある処理 (転送のみのストリームからの読み取りなど) は発生しません。 + + オーバーライド、 メソッド、SOAP 本文要素の属性へのアクセスを許可するようにします。 このメソッドは何度でも呼び出すことができますが、`Message` 基本型は、メッセージの状態が Created の時にのみ呼び出されることを保証します。 実装の中で状態をチェックする必要はありません。 既定の実装は、本文要素に属性がないことを示す `null` を常に返します。 + + 場合、`Message`オブジェクトでは、メッセージ本文が必要でなくなったときに特別なクリーンアップを実行する必要があります、オーバーライドするします。 既定の実装では、何も行われません。 + + `IsEmpty` プロパティと `IsFault` プロパティは、オーバーライド可能です。 既定では、両方とも `false` を返します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-the-nethttpbinding.md b/docs/framework/wcf/feature-details/using-the-nethttpbinding.md new file mode 100644 index 00000000000..3c4c612beaa --- /dev/null +++ b/docs/framework/wcf/feature-details/using-the-nethttpbinding.md @@ -0,0 +1,72 @@ +--- +title: "NetHttpBinding の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fe134acf-ceca-49de-84a9-05a37e3841f1 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# NetHttpBinding の使用 + は、HTTP や WebSocket のサービスを使用するために設計されたバインドで、既定ではバイナリ エンコードを使用します。 は、要求\-応答コントラクトと二重のコントラクトのどちらで使用されているかを検出し、一致するように動作を変更します。要求\-応答コントラクトには HTTP、二重のコントラクトには Websocket を使用します。 この動作は、 設定を使用してオーバーライドできます。 + +1. Always \- 要求\-応答コントラクトでも Websocket が使用されるようにします。 + +2. Never \- Websocket が使用されないようにします。 この設定で二重のコントラクトを使用しようとすると、例外が発生します。 + +3. WhenDuplex \- これが既定値で、既に説明したように動作します。 + + は、HTTP モードと WebSocket モードの両方で信頼できるセッションをサポートします。 WebSocket モードでは、セッションがトランスポートによって提供されます。 + +> [!WARNING] +> を使用していて、バインドの TransferMode が TransferMode.Streamed に設定されている場合、大きいストリームによってデッドロックが発生する可能性があり、呼び出しがタイムアウトします。 この問題を回避するには、小さいメッセージを送信するか、TransferMode.Buffered を使用してください。 + +## NetHttpBinding を使用するサービスの構成 + は、他のバインドと同様に構成できます。 次の構成スニペットは、 を使用して WCF サービスを構成する方法を示しています。 + +```xml + + + + + + + + + + + + + + + + +``` + + 次のコード スニペットは、コードで を追加する方法を示しています。 + +```csharp +ServiceHost svchost = new ServiceHost(typeof(Service1), baseAddress); + NetHttpBinding binding = new NetHttpBinding(); + svchost.AddServiceEndpoint(typeof(IService1), binding, address); + } +``` + +## 参照 + [サービスのバインディングの構成](../../../../docs/framework/wcf/configuring-bindings-for-wcf-services.md) + [バインディング](../../../../docs/framework/wcf/feature-details/bindings.md) + [システム標準のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md) + [双方向サービス](../../../../docs/framework/wcf/feature-details/duplex-services.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-the-xmlserializer-class.md b/docs/framework/wcf/feature-details/using-the-xmlserializer-class.md new file mode 100644 index 00000000000..3be6079f9bf --- /dev/null +++ b/docs/framework/wcf/feature-details/using-the-xmlserializer-class.md @@ -0,0 +1,197 @@ +--- +title: "XmlSerializer クラスの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "XmlSerializer [WCF], 使用" +ms.assetid: c680602d-39d3-44f1-bf22-8e6654ad5069 +caps.latest.revision: 26 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# XmlSerializer クラスの使用 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、各種のシリアル化テクノロジを使用して、アプリケーション データをクライアントとサービス間で転送される XML に変換できます。この処理をシリアル化といいます。 + +## 既定としての DataContractSerializer + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の既定では、データ型をシリアル化するのに クラスが使用されます。 このシリアライザーは、次の型をサポートします。 + +- プリミティブ型 \(整数、文字列、バイト配列など\) や、プリミティブとして処理される などの特殊な型。 + +- データ コントラクト型 \( 属性でマークされた型\)。 + +- インターフェイスを実装する型など、 属性でマークされた型。 + +- インターフェイスを実装する型。 + +- 多くのジェネリック コレクション型を含む多くの共通コレクション型。 + + 多くの [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型は、上に記載した一覧のうち、下 2 つのカテゴリに分類され、したがってシリアル化可能です。 シリアル化可能な型の配列もシリアル化可能です。 完全な一覧については、「[サービス コントラクトでのデータ転送の指定](../../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md)」を参照してください。 + + 新しい サービスを記述する方法としては、データ コントラクト型と共に使用される [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が推奨されます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md)。 + +## XmlSerializer クラスを使用する場合 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は クラスもサポートします。 クラスは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 独自のものではありません。 これは、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスが使用するのと同じシリアル化エンジンです。 クラスでは、 クラスよりもサポートされる型の範囲がずっと狭くなりますが、結果の XML に対する制御の柔軟性に優れています。また、XML スキーマ定義言語 \(XSD\) 標準のサポート範囲が広く、 シリアル化可能な型で宣言型属性が要求されません。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] のドキュメントで XML シリアル化に関するトピックを参照してください。 クラスは、データ コントラクト型をサポートしません。 + + [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] の Svcutil.exe または **\[サービス参照の追加\]** 機能を使用して、サードパーティ サービス用のクライアント コードを生成したり、サードパーティ スキーマを利用する場合、適切なシリアライザーが自動的に選択されます。 スキーマに との互換性がない場合は、 が選択されます。 + +## XmlSerializer への手動切り替え + に手動で切り替える必要が生じる場合もあります。 たとえば、次のような場合です。 + +- アプリケーションを [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Web サービスから [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に移行するときに、新しいデータ コントラクト型を作成するのではなく、既存の 互換の型を再利用する場合。 + +- メッセージに表示する XML に対する正確な制御が必要で、Web サービス記述言語 \(WSDL\) ドキュメントが利用できない場合。たとえば、DataContractSerializer と互換性がなく、標準化および公開されている特定のスキーマに従う必要のある型を使用して、サービスを作成する場合。 + +- 従来の SOAP エンコード標準に従うサービスを作成する場合。 + + 上記を含めた多様な状況で、次のコードに示すように、 属性をサービスに適用することにより、`XmlSerializerFormatAttribute` クラスに手動で切り替えることができます。 + + [!code-csharp[c_XmlSerializer#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_xmlserializer/cs/source.cs#1)] + [!code-vb[c_XmlSerializer#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_xmlserializer/vb/source.vb#1)] + +## セキュリティの考慮事項 + +> [!NOTE] +> シリアル化エンジンを切り替える場合は注意が必要です。 同じ型でも、使用するシリアライザーによって XML へのシリアル化方法が異なる場合があります。 誤って、不適切なシリアライザーを使用すると、公開する意図のない型の情報が公開されるおそれがあります。 + + たとえば、 クラスは、データ コントラクト型をシリアル化する場合、 属性でマークされたメンバーのみをシリアル化します。 クラスは、すべてのパブリック メンバーをシリアル化します。 たとえば、次のコードの型を見てください。 + + [!code-csharp[c_XmlSerializer#2](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_xmlserializer/cs/source.cs#2)] + [!code-vb[c_XmlSerializer#2](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_xmlserializer/vb/source.vb#2)] + + クラスが選択されているサービス コントラクトでこの型が誤って使用された場合、意図したものではなくても `creditCardNumber` メンバーがシリアル化されます。 + + クラスが既定の場合でも、 属性をサービス コントラクト型に適用することで、このクラスをサービスに対して明示的に選択できます \(ただし、この操作が必要になることはありません\)。 + + サービスで使用するシリアライザーはコントラクトにとって不可欠な部分です。別のバインディングを選択しても他の構成設定に変更しても、このシリアライザーを変更することはできません。 + + クラスについては、セキュリティに関する重要な考慮事項が他にもあります。 まず、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クラスを使用するすべての アプリケーションには、情報の漏えいから保護されたキーを使って署名することを強くお勧めします。 このことは、 に手動で切り替える場合と、自動切り替えが行われる場合 \(Svcutil.exe やサービス参照の追加などのツールによる\) の両方でお勧めします。 これは、 シリアル化エンジンで*事前生成済みのシリアル化アセンブリ*の読み込みがサポートされており、これらがアプリケーションと同じキーで署名されるためです。 署名されていないアプリケーションは、アプリケーション フォルダーやグローバル アセンブリ キャッシュに配置される事前生成済みのシリアル化アセンブリで予想される名前に、悪意のあるアセンブリが一致するという危険性に対して完全に無防備になります。 もちろん、攻撃者がこのようなアクションを行うには、この 2 つの場所のいずれかに対する書き込みアクセスをまず取得する必要があります。 + + を使用するときに必ず存在するもう 1 つの脅威は、システムの一時フォルダーへの書き込みアクセスに関連するものです。 シリアル化エンジンは、このフォルダー内に一時的な*シリアル化アセンブリ*を作成して使用します。 一時フォルダーへの書き込みアクセスのあるプロセスであれば、悪意のあるコードによってこれらのシリアル化アセンブリが上書きされるおそれがあることに注意してください。 + +## XmlSerializer サポートのルール + 互換の属性は、コントラクト操作のパラメーターまたは戻り値に直接適用できません。 ただし、次のコードに示すように、型指定されたメッセージ \(メッセージ コントラクトの本文\) には適用できます。 + + [!code-csharp[c_XmlSerializer#3](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_xmlserializer/cs/source.cs#3)] + [!code-vb[c_XmlSerializer#3](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_xmlserializer/vb/source.vb#3)] + + 型指定されたメッセージのメンバーに適用する場合、型指定されたメッセージ属性で競合するプロパティは、この属性によりオーバーライドされます。 たとえば、次のコードの `ElementName` は、`Name` をオーバーライドします。 + + [!code-csharp[c_XmlSerializer#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_xmlserializer/cs/source.cs#4)] + [!code-vb[c_XmlSerializer#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_xmlserializer/vb/source.vb#4)] + + の使用時は、 属性はサポートされません。 + +> [!NOTE] +> この場合、 より前にリリースされた [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって、"スキーマのトップ レベルで宣言された要素に `maxOccurs` \> 1 の値を含めることはできません。`XmlArray` ではなく、`XmlArrayItem` または `XmlElementAttribute` を使うか、Wrapped パラメーター スタイルを使って 'more' のラッパー要素を指定してください。" という例外がスローされます。 +> +> この例外が出力された場合は、この状況が当てはまるかどうかを調査します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、メッセージ コントラクトおよび操作コントラクトでの 属性および 属性はサポートされていません。代わりに、 属性を使用してください。 + +## IXmlSerializable インターフェイスを実装する型 + `IXmlSerializable` インターフェイスを実装する型は、`DataContractSerializer` で完全にサポートされます。 これらの型には、スキーマを制御するために必ず 属性を適用する必要があります。 + +> [!WARNING] +> ポリモーフィック型をシリアル化する場合、 を型に適用して、正しい型がシリアル化されるようにする必要があります。 + + `IXmlSerializable` を実装する型には、任意のコンテンツを表す型、1 つの要素を表す型、および従来の 型の 3 種類があります。 + +- コンテンツ型では、`XmlSchemaProviderAttribute` 属性によって指定されたスキーマ プロバイダー メソッドが使用されます。 このメソッドから `null` が返されることはなく、属性の プロパティは既定値 `false` のままになります。 これは、`IXmlSerializable` 型の最も一般的な使用方法です。 + +- 要素型は、`IXmlSerializable` 型が自身のルート要素名を制御する必要があるときに使用します。 型を要素型としてマークするには、 属性の プロパティを `true` に設定するか、スキーマ プロバイダー メソッドから `null` を返します。 スキーマ プロバイダー メソッドの使用は、要素型ではオプションです。`null` でメソッド名の代わりに `XmlSchemaProviderAttribute` を指定できます。 ただし、`IsAny` が `true` で、スキーマ プロバイダー メソッドが指定されている場合、メソッドは `null` を返す必要があります。 + +- 従来の 型は、`IXmlSerializable` 属性でマークされていない `XmlSchemaProviderAttribute` 型です。 これらの型は、スキーマ生成に関して メソッドに依存しています。 以前のバージョンの .NET Framework では、このパターンが `DataSet` 型に使用され、型指定されたデータセットからクラスが派生されます。ただし、現在、このパターンは使用されなくなっており、従来の型に対応することだけを目的としてサポートされています。 このパターンに依存せず、必ず `XmlSchemaProviderAttribute` を `IXmlSerializable` 型に適用してください。 + +### IXmlSerializable コンテンツ型 + `IXmlSerializable` を実装しており、以前に定義したコンテンツ型である型のデータ メンバーをシリアル化すると、シリアライザーはそのデータ メンバーのラッパー要素を書き込み、 メソッドに制御を渡します。 実装により、ラッパー要素に属性が追加されるなど、任意の XML が書き込まれることがあります。`WriteXml` の実行後、シリアライザーは要素を閉じます。 + + `IXmlSerializable` を実装しており、以前に定義したコンテンツ型である型のデータ メンバーを逆シリアル化すると、デシリアライザーはそのデータ メンバーのラッパー要素に XML リーダーを配置し、 メソッドに制御を渡します。 このメソッドは、開始タグと終了タグを含む、要素全体を読み取る必要があります。`ReadXml` コードでは、要素が空の場合も忘れずに処理してください。 また、`ReadXml` の実装では、特定の方法で名前が付けられたラッパー要素に依存しないようにしてください。 シリアライザーによって選択される名前は、異なる場合があります。 + + `IXmlSerializable` コンテンツ型は、たとえば 型のデータ メンバーなどに、ポリモーフィックに割り当てることができます。 また、型インスタンスを null にすることもできます。 さらに、`IXmlSerializable` 型は、オブジェクト グラフの保存を有効にして で使用することも可能です。 これらのすべての機能を実現するには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] シリアライザーが特定の属性 \(XML スキーマ インスタンス名前空間の "nil" と "type"、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 固有の名前空間の "Id"、"Ref"、"Type"、および "Assembly"\) をラッパー要素に追加する必要があります。 + +#### ReadXml を実装するときに無視する属性 + `ReadXml` コードに制御を渡す前に、デシリアライザーは、XML 要素を調べ、前述の特別な XML 属性を検出し、その属性に従って動作します。 たとえば、"nil" が `true` の場合は、null 値が逆シリアル化され、`ReadXml` は呼び出されません。 ポリモーフィズムが検出された場合は、要素のコンテンツが別の型と同様に逆シリアル化されます。 ポリモーフィックに割り当てられた型の `ReadXml` 実装が呼び出されます。 どの場合も、これらの特別な属性がデシリアライザーによって処理されるため、`ReadXml` 実装ではこれらの属性を無視する必要があります。 + +### IXmlSerializable コンテンツ型のスキーマに関する考慮事項 + スキーマと `IXmlSerializable` コンテンツ型をエクスポートすると、スキーマ プロバイダー メソッドが呼び出されます。 このスキーマ プロバイダー メソッドには、 が渡されます。 このメソッドは、有効なスキーマをスキーマ セットに追加できます。 スキーマ セットには、スキーマをエクスポートした時点で既に認識されていたスキーマが格納されます。 スキーマ プロバイダー メソッドは、スキーマ セットに項目を追加する必要があるときに、適切な名前空間を持つ がそのセットに既に存在するかどうかを確認する必要があります。 存在する場合、スキーマ プロバイダー メソッドは新しい項目を既存の `XmlSchema` に追加する必要があります。 存在しない場合、新しい `XmlSchema` インスタンスを作成する必要があります。 これは、`IXmlSerializable` 型の配列を使用する場合に重要です。 たとえば、`IXmlSerializable` 型を名前空間 "B" の "A" 型としてエクスポートする場合、スキーマ プロバイダー メソッドが呼び出される前に、"B" が "ArrayOfA" 型を保持するためのスキーマがスキーマ セットに既に存在している可能性があります。 + + 型を に追加する以外に、コンテンツ型のスキーマ プロバイダー メソッドは null 以外の値を返す必要があります。 このメソッドは、特定の 型で使用するスキーマ型の名前を指定する `IXmlSerializable` を返すことができます。 この修飾名は、その型のデータ コントラクト名および名前空間としても使用されます。 スキーマ プロバイダー メソッドは、スキーマ セットにまだ存在していない型であっても、復帰時に返すことができます。 ただし、関連するすべての型がエクスポートされる \( の関連するすべての型に対して メソッドが呼び出され、 プロパティにアクセスする\) までに、その型がスキーマ セットに存在している必要があります。 関連するすべての `Schemas` 呼び出しが実行される前に `Export` プロパティにアクセスすると、 が発生する可能性があります。 エクスポート プロセスの[!INCLUDE[crabout](../../../../includes/crabout-md.md)]については、「[クラスからのスキーマのエクスポート](../../../../docs/framework/wcf/feature-details/exporting-schemas-from-classes.md)」を参照してください。 + + スキーマ プロバイダー メソッドは、使用する を返すこともできます。 その型は、匿名の場合とそうでない場合があります。 匿名の場合、`IXmlSerializable` 型のスキーマは、`IXmlSerializable` 型がデータ メンバーとして使用されるたびに匿名型としてエクスポートされます。`IXmlSerializable` 型には、データ コントラクト名と名前空間が引き続き保持されます \(決定方法は、「[データ コントラクト名](../../../../docs/framework/wcf/feature-details/data-contract-names.md)」で説明されているとおりです。ただし、 属性を使用して名前をカスタマイズすることはできません\)。 匿名でない場合、型は `XmlSchemaSet` に含まれている型のいずれかである必要があります。 これは、型の `XmlQualifiedName` を返す場合と同じです。 + + さらに、型のグローバル要素宣言がエクスポートされます。 型に 属性が適用されていない場合、その要素にはデータ コントラクトと同じ名前と名前空間が使用され、その "nillable" プロパティは `true` に設定されます。 ただし、スキーマ名前空間 \("http:\/\/www.w3.org\/2001\/XMLSchema"\) だけは例外です。型のデータ コントラクトがこの名前空間にある場合は、スキーマ名前空間に新しい要素を追加することが禁止されているため、対応するグローバル要素は、空白の名前空間に属することになります。 型に `XmlRootAttribute` 属性が適用されている場合、グローバル要素宣言は、、および の各プロパティを使用してエクスポートされます。`XmlRootAttribute` が適用された場合の既定値は、データ コントラクト名、空白の名前空間、および `true` に設定された "nillable" です。 + + 同じグローバル要素宣言の規則が、従来のデータセット型に適用されます。`XmlRootAttribute` は、カスタム コードによって追加されたグローバル要素宣言をオーバーライドできません。これには、スキーマ プロバイダー メソッドを使用して `XmlSchemaSet` に追加された場合と、従来のデータセット型に対して `GetSchema` を使用して追加された場合があります。 + +### IXmlSerializable 要素型 + `IXmlSerializable` 要素型には、`IsAny` に設定された `true` プロパティか、`null` を返すスキーマ プロバイダー メソッドのいずれかが含まれています。 + + 要素型のシリアル化と逆シリアル化は、コンテンツ型のシリアル化と逆シリアル化に非常に似ています。 ただし、重要な違いがいくつかあります。 + +- `WriteXml` の実装では、要素 \(これには複数の子要素が含まれている可能性もありますが\) を 1 つだけ出力することが想定されています。 この 1 つの要素の外側にある属性、複数の兄弟要素、またはこれらが混在したコンテンツを出力することはできません。 要素は空であってもかまいません。 + +- `ReadXml` の実装では、ラッパー要素の読み取りは想定されていません。 読み取ることが想定されているのは、`WriteXml` で生成される要素 1 つのみです。 + +- 要素型を一様にシリアル化する場合 \(データ コントラクトのデータ メンバーとしてシリアル化する場合など\) は、コンテンツ型の場合と同様に、`WriteXml` を呼び出す前にラッパー要素が出力されます。 ただし、`WriteXml` コンストラクターまたは `DataContractSerializer` コンストラクターによるシリアライザーの構築時にルート名と名前空間を明示的に指定しない限り、トップ レベルで要素型をシリアル化しても、通常は `NetDataContractSerializer` で書き出される要素を囲むラッパー要素が出力されることはありません。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [シリアル化と逆シリアル化](../../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md)。 + +- 構築時にルート名と名前空間を指定せずにトップ レベルで要素型をシリアル化した場合、 では基本的に何も実行されず、 によって `WriteXml` が呼び出されます。 このモードでは、シリアル化されるオブジェクトは `null` にできず、ポリモーフィックに割り当てることができません。 また、オブジェクト グラフの保存を有効化できず、`NetDataContractSerializer` も使用できません。 + +- 構築時にルート名と名前空間を指定せずにトップ レベルで要素型を逆シリアル化したときに、要素の先頭を検出できた場合は、 が `true` を返します。 パラメーターが `verifyObjectName` に設定されている `true` は、実際にオブジェクトを読み取る前の動作が `IsStartObject` と同様です。 その後、`ReadObject` は制御を `ReadXml` メソッドに渡します。 + + 要素型の場合も、エクスポートされるスキーマは、前のセクションで説明した `XmlElement` 型に対するスキーマと同じです。ただし、スキーマ プロバイダー メソッドは、コンテンツ型と同様、追加のスキーマを に追加できます。 要素型には `XmlRootAttribute` 属性を使用することはできないので、グローバル要素宣言は要素型に対して出力されません。 + +### XmlSerializer との相違点 + `IXmlSerializable` インターフェイス、`XmlSchemaProviderAttribute` 属性、および `XmlRootAttribute` 属性は、 でも認識されます。 ただし、データ コントラクト モデルでの処理方法に違いがあります。 重要な違いを以下にまとめます。 + +- スキーマ プロバイダー メソッドは、`XmlSerializer` で使用できるようにするためにパブリックにする必要がありますが、データ コントラクト モデルで使用するためにパブリックにする必要はありません。 + +- スキーマ プロバイダー メソッドは、データ コントラクト モデルで `IsAny` が `true` の場合に呼び出されますが、`XmlSerializer` では呼び出されません。 + +- コンテンツ型または従来のデータセット型に `XmlRootAttribute` 属性がない場合、`XmlSerializer` は、グローバル要素宣言を空白の名前空間にエクスポートします。 データ コントラクト モデルで通常使用される名前空間は、前に説明したとおりデータ コントラクトの名前空間です。 + + 両方のシリアル化技術で使用する型を作成する場合には、これらの違いに注意してください。 + +### IXmlSerializable スキーマのインポート + `IXmlSerializable` 型から生成されたスキーマをインポートする場合、次のような状況が考えられます。 + +- 生成されたスキーマが、「[データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)」で説明されている有効なデータ コントラクト スキーマである場合があります。 この場合は、スキーマを通常どおりにインポートでき、通常のデータ コントラクト型が生成されます。 + +- 生成されたスキーマが、有効なデータ コントラクト スキーマではない場合があります。 たとえば、スキーマ プロバイダー メソッドによって、データ コントラクト モデルでサポートされていない XML 属性を含むスキーマが生成されることがあります。 この場合、スキーマを `IXmlSerializable` 型としてインポートできます。 このインポート モードは、既定では有効になっていませんが、たとえば、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) の `/importXmlTypes` コマンド ライン スイッチを使用して、簡単に有効にすることができます。 詳細については、「[クラスを作成するためのスキーマのインポート](../../../../docs/framework/wcf/feature-details/importing-schema-to-generate-classes.md)」を参照してください。 型インスタンスを処理するには、XML を直接操作する必要があります。`XmlSerializer` の使用方法に関するトピックを参照し、より広い範囲のスキーマをサポートする別のシリアル化技術を使用することを検討することもできます。 + +- 新しい型を生成する代わりに、プロキシ内の既存の `IXmlSerializable` 型を再利用できます。 この場合、「型を作成するためのスキーマのインポート」で説明する参照型の機能を使用して、再利用する型を示すことができます。 これは、Svcutil.exe で `/reference` スイッチを使用して、再利用する型を含むアセンブリを指定することに相当します。 + +### XmlSerializer の従来の動作 + .NET Framework 4.0 以前では、XmlSerializer が C\# コードをファイルに書き込むことによって、一時的なシリアル化アセンブリが生成されます。 さらに、このファイルがアセンブリとしてコンパイルされます。 この動作では、シリアライザーの起動時間が長くなるなど、望ましくない結果が生じることがあります。 .NET Framework 4.5 では、この動作が変更され、コンパイラを使用せずに、アセンブリが生成されるようになりました。 開発者によっては、生成された C\# コードを確認したい場合もあります。 次の構成によって、この従来の動作を使用するように指定できます。 + +```xml + + +    +    +      +    + + +``` + +## 参照 + + + + + [サービス コントラクトでのデータ転送の指定](../../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md) + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + [方法 : XmlSerializer を使用する WCF クライアント アプリケーションの起動時間を短縮する](../../../../docs/framework/wcf/feature-details/startup-time-of-wcf-client-applications-using-the-xmlserializer.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/using-ws-atomictransaction.md b/docs/framework/wcf/feature-details/using-ws-atomictransaction.md new file mode 100644 index 00000000000..526f5124ccf --- /dev/null +++ b/docs/framework/wcf/feature-details/using-ws-atomictransaction.md @@ -0,0 +1,37 @@ +--- +title: "WS-AtomicTransaction の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WS-AT プロトコル [WCF]" +ms.assetid: 04a4c200-0af0-4c5d-a3d9-87cb7339e054 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# WS-AtomicTransaction の使用 +WS\-AtomicTransaction \(WS\-AT\) は、相互運用が可能なトランザクション プロトコルです。Web サービス メッセージを使用して分散トランザクションをフローできるようにすると共に、異種のトランザクション インフラストラクチャ間で相互運用できるように調整します。WS\-AT では、2 フェーズ コミット プロトコルを使用して、分散アプリケーション、トランザクション マネージャー、およびリソース マネージャー間でアトミックな結果を実現します。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] で提供される WS\-AT 実装には、Microsoft 分散トランザクション コーディネーター \(MSDTC\) トランザクション マネージャーに組み込まれたプロトコル サービスが含まれています。WS\-AT を使用することにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは、サードパーティのテクノロジを使用して構築された相互運用可能な Web サービスを含む、他のアプリケーションにトランザクションをフローさせることができます。 + + クライアント アプリケーションとサーバー アプリケーション間でトランザクションをフローさせるときに使用されるトランザクション プロトコルは、クライアントが選択したエンドポイントでサーバーが公開するバインディングによって決定されます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] システム指定のバインディングでは、トランザクションの伝達形式として既定で `OleTransactions` プロトコルを指定するものと、WS\-AT を指定するものがあります。特定のバインディング内部でのトランザクション プロトコルの選択は、プログラムによって変更することもできます。 + + プロトコルの選択は、次の内容に影響を与えます。 + +- トランザクションをクライアントからサーバーにフローさせるために使用されるメッセージ ヘッダーの形式。 + +- トランザクションの結果を解決するために、クライアントのトランザクション マネージャーとサーバーのトランザクション マネージャーの間で 2 フェーズ コミット プロトコルを実行するために使用されるネットワーク プロトコル。 + + サーバーとクライアントが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して記述されている場合、WS\-AT を使用する必要はありません。その代わりに、`OleTransactions` プロトコルを使用する `TransactionFlow` 属性を有効にして `NetTcpBinding` の既定の設定を使用できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][\](../../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md).ただし、サード パーティのテクノロジで構築された Web サービスにトランザクションをフローさせる場合は、WS\-AT を使用する必要があります。 + +## 参照 + [WS\-AtomicTransaction サポートの構成](../../../../docs/framework/wcf/feature-details/configuring-ws-atomic-transaction-support.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/version-tolerant-serialization-callbacks.md b/docs/framework/wcf/feature-details/version-tolerant-serialization-callbacks.md new file mode 100644 index 00000000000..d9a4aa64c8c --- /dev/null +++ b/docs/framework/wcf/feature-details/version-tolerant-serialization-callbacks.md @@ -0,0 +1,57 @@ +--- +title: "バージョン トレラントなシリアル化コールバック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "OnDeserializedAttribute [WCF]" + - "OnDeserializingAttribute [WCF]" + - "OnSerializedAttribute [WCF]" + - "OnSerializingAttribute [WCF]" + - "シリアル化 [WCF], 既定値の設定" +ms.assetid: aa4a3a6f-05ec-4efd-bdbf-2181e13e6468 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# バージョン トレラントなシリアル化コールバック +データ コントラクトのプログラミング モデルでは、 クラスと クラスがサポートする、複数のバージョンに対応するシリアル化コールバック メソッドが完全にサポートされます。 + +## 複数のバージョンに対応する属性 + 4 つのコールバック属性があります。各属性は、さまざまなタイミングでシリアル化エンジンまたは逆シリアル化エンジンが呼び出すメソッドに適用できます。次の表では、各属性を使用するタイミングについて説明します。 + +|属性|対応するメソッドが呼び出されるタイミング| +|--------|--------------------------| +||型をシリアル化する前に呼び出されます。| +||型をシリアル化した後に呼び出されます。| +||型を逆シリアル化する前に呼び出されます。| +||型を逆シリアル化した後に呼び出されます。| + + メソッドは、 パラメーターを受け入れる必要があります。 + + これらのメソッドは、主にバージョン管理と初期化に使用するためのものです。逆シリアル化時にコンストラクターは呼び出されません。このため、データ メンバーのデータが受信ストリームにない場合、たとえば、データの送信元が、一部のデータ メンバーが不足している前のバージョンの型である場合、そのデータ メンバーを目的の既定値に適切に初期化できないことがあります。これを修正するには、次の例で示すように、 でマークされたコールバック メソッドを使用します。 + + 上記の各コールバック属性でマークできるのは、型ごとに 1 つのメソッドだけです。 + +### 例 + [!code-csharp[C_DataContract#9](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_datacontract/cs/source.cs#9)] + [!code-vb[C_DataContract#9](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_datacontract/vb/source.vb#9)] + +## 参照 + + + + + + [バージョン トレラントなシリアル化](../../../../docs/framework/serialization/version-tolerant-serialization.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/was-activation-architecture.md b/docs/framework/wcf/feature-details/was-activation-architecture.md new file mode 100644 index 00000000000..532e73090ab --- /dev/null +++ b/docs/framework/wcf/feature-details/was-activation-architecture.md @@ -0,0 +1,97 @@ +--- +title: "WAS アクティベーション アーキテクチャ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 58aeffb0-8f3f-4b40-80c8-15f3f1652fd3 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# WAS アクティベーション アーキテクチャ +ここでは、Windows プロセス アクティブ化サービス \(WAS とも呼ばれます\) の各コンポーネントについて説明します。 + +## アクティベーション コンポーネント + WAS は、複数のアーキテクチャ コンポーネントで構成されます。 + +- リスナー アダプター : 特定のネットワーク プロトコルでメッセージを受信し、WAS と通信して、受信メッセージを適切なワーカー プロセスにルーティングする Windows サービス。 + +- WAS : ワーカー プロセスの作成と有効期間を管理する Windows サービス。 + +- 汎用ワーカー プロセス実行可能ファイル \(w3wp.exe\)。 + +- アプリケーション マネージャー : ワーカー プロセス内のアプリケーションをホストするアプリケーション ドメインの作成と有効期間を管理します。 + +- プロトコル ハンドラー : ワーカー プロセスで実行され、ワーカー プロセスと個々のリスナー アダプター間の通信を管理するプロトコル固有のコンポーネント。プロトコル ハンドラーには、プロセス プロトコル ハンドラーと AppDomain プロトコル ハンドラーの 2 種類があります。 + + ワーカー プロセス インスタンスをアクティブ化する場合、WAS は必要なプロセス プロトコル ハンドラーをワーカー プロセスに読み込み、アプリケーション マネージャーを使用して、アプリケーションをホストするアプリケーション ドメインを作成します。アプリケーション ドメインは、アプリケーションのコードと、アプリケーションが使用するネットワーク プロトコルに必要な AppDomain プロトコル ハンドラーを読み込みます。 + + ![WAS アーキテクチャ](../../../../docs/framework/wcf/feature-details/media/wasarchitecture.gif "WASArchitecture") + +### リスナー アダプター + リスナー アダプターは個別の Windows サービスであり、リッスンするネットワーク プロトコルを使用して、メッセージ受信に使用されるネットワーク通信ロジックを実装します。次の表は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] プロトコルのリスナー アダプターの一覧です。 + +|リスナー アダプターのサービス名|プロトコル|メモ| +|----------------------|-----------|--------| +|W3SVC|http|IIS 7.0 と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の両方に HTTP アクティベーションを提供する共通コンポーネントです。| +|NetTcpActivator|net.tcp|NetTcpPortSharing サービスに依存します。| +|NetPipeActivator|net.pipe|| +|NetMsmqActivator|net.msmq|[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ベースのメッセージ キュー アプリケーションで使用します。| +|NetMsmqActivator|msmq.formatname|既存のメッセージ キュー アプリケーションとの下位互換性を提供します。| + + 次の XML サンプルに示すように、特定プロトコルのリスナー アダプターは、インストール時に applicationHost.config ファイルに登録されます。 + +``` + + + + + + + + + +``` + +### プロトコル ハンドラー + 特定のプロトコルのプロセス プロトコル ハンドラーと AppDomain プロトコル ハンドラーは、コンピューター レベルの Web.config ファイルに登録されます。 + +``` + + + + + + + +``` + +## 参照 + [WCF で使用するための WAS を設定する](../../../../docs/framework/wcf/feature-details/configuring-the-wpa--service-for-use-with-wcf.md) + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-and-internationalized-domain-names.md b/docs/framework/wcf/feature-details/wcf-and-internationalized-domain-names.md new file mode 100644 index 00000000000..aa2d4c4cb7f --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-and-internationalized-domain-names.md @@ -0,0 +1,53 @@ +--- +title: "WCF と国際化ドメイン名 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c8a3e10a-8bc2-4a78-8d86-a562ba6e65fa +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# WCF と国際化ドメイン名 +国際化ドメイン名 \(IDN\) を持つ WCF サービスを許可するためのサポートが追加されました。 国際化ドメイン名とは、非 ASCII 文字を含むドメイン名です。 このサポートには、IDN 名を持つ WCF サービスをホストする機能と、IDN 名を持つ Web サービスとの通信を行う WCF クライアントをホストする機能の両方が含まれます。 + +## System.Uri と IDN + には、 および という 2 つのプロパティがあります。 これらのプロパティには、IDN 構成設定に応じて Unicode 値または Punycode 値が格納されます。 + + IDN をアプリケーションの構成ファイルで有効にするには、次の XML を使用します。 + +``` + + + + + + +``` + + \ 要素の enabled 属性は、次のいずれかの値に設定できます。 + +1. "None" + +2. "AllExceptIntranet" + +3. "All" + + IDN 設定を "None" に設定した場合、Uri.Host または Uri.DnsSafeHost による変換は実行されません。 IDN 設定を "All" に設定した場合、uri.Host は Unicode のまま、uri.DnsSafeHost が Punycode に変換されます。 IDN 設定を "AllExceptIntranet" に設定すると、インターネット アドレスについては uri.DnsSafeHost が Punycode に変換され、イントラネット アドレスについては Unicode のままとなります。 この設定は、正しい DNS 名解決にとって重要です。 Windows 8 以降のバージョンでは、この設定を構成する必要はありません。 + +> [!WARNING] +> Punycode を使用してアドレスをハードコーディングしないようにしてください。 アドレスは、適用した構成設定に基づき、WCF によって自動的に変換されます。 + +> [!WARNING] +> Unicode 文字を applicationHost.exe.config に追加する場合は、UTF\-8 エンコードを使用してファイルを保存してください。 + +## 参照 + [System.Uri](http://msdn.microsoft.com/library/system.uri.aspx) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-and-websockets.md b/docs/framework/wcf/feature-details/wcf-and-websockets.md new file mode 100644 index 00000000000..eb040dd7d0f --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-and-websockets.md @@ -0,0 +1,31 @@ +--- +title: "WCF と WebSocket | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1e53b49e-022c-49c7-8984-4b21b53c05b3 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# WCF と WebSocket +.NET Framework 4.5 では、Windows Communication Foundation の WebSocket のサポートが導入されています。Websocket は、標準的な HTTP ポート 80 と 443 を介した双方向通信を有効にする効率的な標準ベース テクノロジです。標準 HTTP ポートを使用することで、Websocket は中継局を通じて Web 全体で通信できます。2 つの新しい標準バインディングが WebSocket トランスポート経由の通信をサポートするために追加されました。 および 。WebSocket 固有の設定は、 プロパティにアクセスして、 System.ServiceModel.Channels.HttpTransportBinding?qualifyHint=False&autoUpgrade=True 要素で構成できます。 + +## このセクションの内容 + [NetHttpBinding の使用](../../../../docs/framework/wcf/feature-details/using-the-nethttpbinding.md) + とその構成方法について説明します。 + + [WebSockets 上で通信する WCF サービスを作成する用法](../../../../docs/framework/wcf/feature-details/how-to-create-a-wcf-service-that-communicates-over-websockets.md) + Websocket 経由で通信する WCF サービスを作成する方法について説明します。 + +## 関連項目 + +## 関連項目 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-discovery-object-model.md b/docs/framework/wcf/feature-details/wcf-discovery-object-model.md new file mode 100644 index 00000000000..8307bd65d2d --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-discovery-object-model.md @@ -0,0 +1,142 @@ +--- +title: "WCF Discovery オブジェクト モデル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8365a152-eacd-4779-9130-bbc48fa5c5d9 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# WCF Discovery オブジェクト モデル +WCF Discovery は、実行時に探索可能なサービスと、これらのサービスを検索して使用するクライアントの作成を可能にする統合プログラミング モデルを提供する型のセットで構成されています。 + +## 探索可能なサービスの作成とサービスの検索 + WCF サービスを探索可能にするには、 をサービス ホストの に追加し、探索エンドポイントを追加します。サービスがアナウンス メッセージを送信するように構成されている \( を追加して\) 場合は、サービス ホストが開かれるとき、および閉じられるときにアナウンスが送信されます。 + + サービスのアナウンス メッセージをリッスンするクライアントは、アナウンス サービスをホストし、1 つ以上のアナウンス エンドポイントを追加します。アナウンス サービスは、アナウンス メッセージを受信し、アナウンス イベントを発生させます。 + + クライアントは、 クラスを使用して、利用可能なサービスを検索します。クライアント アプリケーションは クラスをインスタンス化し、探索メッセージの送信元を指定する探索エンドポイントを渡します。クライアントは メソッドを呼び出し、`Probe` 要求を送ります。探索メッセージをリッスンしているサービスが、この `Probe` 要求を受信します。サービスが `Probe` に指定されている条件に一致している場合は、`ProbeMatch` メッセージがクライアントに返されます。 + +## オブジェクト モデル + WCF Discovery API は、次のクラスを定義します。 + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +## AnnouncementClient + クラスは、アナウンス メッセージを送信するための同期メソッドと非同期メソッドを提供します。アナウンス メッセージには Hello と Bye の 2 種類があります。Hello メッセージは、サービスが使用可能になったことを示すために送信され、Bye メッセージは、既存のサービスが使用不可になったことを示すために送信されます。開発者は、 インスタンスを作成して、 のインスタンスをコンストラクター パラメーターとして渡します。 + +## AnnouncementEndpoint + は、固定アナウンス コントラクトが設定されている標準エンドポイントを表します。サービスまたはクライアントは、これを使用して、アナウンス メッセージの送受信を行います。既定では、 クラスは、WS\_Discovery 11 プロトコル バージョンを使用するように設定されています。 + +## AnnouncementService + は、アナウンス メッセージを受信して処理するアナウンス サービスの実装で、システムによって提供されています。Hello または Bye メッセージが受信されると、 のインスタンスが、適切な仮想メソッド または を呼び出し、アナウンス イベントを発生させます。 + +## DiscoveryClient + クラスは、使用可能なサービスを検索および解決するために、クライアント アプリケーションによって使用されます。指定されている を基にサービスを検索し、 を基にサービスを解決するための同期メソッドと非同期メソッドを提供します。開発者は、 インスタンスを作成して、 のインスタンスをコンストラクター パラメーターとして提供します。 + + サービスを検索するには、同期または非同期の `Find` メソッドを呼び出し、使用する検索条件が設定された インスタンスを提供します。 は、適切なヘッダーを設定して `Probe` メッセージを作成し、検索要求を送信します。どの時点でも、未処理の `Find` 要求が 1 つ以上存在する可能性があるため、クライアントは、受信した応答を関連付けて、応答を検証します。その後、 を使用して、結果を `Find` 操作の呼び出し元に渡します。 + + 既知のサービスを解決するには、既知のサービスの が設定された のインスタンスを提供する同期または非同期の `Resolve` メソッドを呼び出します。 は、適切なヘッダーを設定して `Resolve` メッセージを作成し、解決要求を送信します。受信された応答が未処理の解決要求と関連付けられ、その結果が、 を使用して、`Resolve` 操作の呼び出し元に渡されます。 + + ネットワークに探索プロキシが存在し、 がマルチキャストで探索要求を送信する場合、探索プロキシは、マルチキャスト抑制 Hello メッセージを使用して応答できます。 は、未処理の `Find` 要求または `Resolve` 要求に対する Hello 応答を受信すると、`ProxyAvailable` イベントを発生させます。`ProxyAvailable` イベントには、探索プロキシについての が含まれています。管理者は、この情報を使用して、アドホック モードからマネージ モードに切り替えるかどうかを制御できます。 + +## DiscoveryEndpoint + は、固定探索コントラクトが設定されている標準エンドポイントを表します。サービスまたはクライアントによる探索メッセージの送受信に使用されます。既定では、 が、 モードと WSDiscovery11 WS\-Discovery バージョンを使用するように設定されています。 + +## DiscoveryMessageSequenceGenerator + は、サービスが探索メッセージまたはアナウンス メッセージを送信するときに、 を生成するために使用されます。 + +## DiscoveryService + 抽象クラスは、`Probe` メッセージおよび `Resolve` メッセージの受信と処理のフレームワークを提供します。`Probe` メッセージが受信されると、 は、受信メッセージに基づいて のインスタンスを作成し、 仮想メソッドを呼び出します。`Resolve` メッセージが受信されると、 仮想メソッドを呼び出します。このクラスから継承して、カスタムの探索サービス実装を提供できます。 + +## DiscoveryProxy + 抽象クラスは、探索メッセージおよびアナウンス メッセージの受信と処理のフレームワークを提供します。カスタムの探索プロキシを実装するときは、このクラスを継承します。`Probe` メッセージがマルチキャストで受信されると、 クラスは `BeginShouldRedirectFind` 仮想メソッドを呼び出して、マルチキャスト抑制メッセージの送信が必要かどうかを決定します。開発者の判断により、マルチキャスト抑制メッセージを送信しない場合、または、`Probe` メッセージがユニキャストで受信された場合は、受信メッセージに基づいて クラスのインスタンスを作成し、`OnBeginFind` 仮想メソッドを呼び出します。`Resolve` メッセージがマルチキャストで受信されると、 クラスは `ShouldRedirectResolve` 仮想メソッドを呼び出して、マルチキャスト抑制メッセージの送信が必要かどうかを決定します。開発者の判断により、マルチキャスト抑制メッセージを送信しない場合、または、`Resolve` メッセージがユニキャストで受信された場合は、受信メッセージに基づいて クラスのインスタンスを作成し、`OnBeginResolve` 仮想メソッドを呼び出します。Hello または Bye メッセージが受信されると、 のインスタンスが、適切な仮想メソッド \(`OnBeginOnlineAnnouncement` または `OnBeingOfflineAnnouncement`\) を呼び出し、アナウンス イベントを発生させます。 + +## DiscoveryVersion + クラスは、使用する探索プロトコルのバージョンを表します。 + +## EndpointDiscoveryBehavior + クラスは、エンドポイントを探索可能にするかどうかの制御と、拡張機能、追加のコントラクト型の名前、およびそのエンドポイントに関連付けるスコープの指定に使用されます。この動作は、アプリケーション エンドポイントに追加されて、そのエンドポイントの を構成します。 がサービス ホストに追加されると、既定では、そのサービス ホストがホストしているすべてのアプリケーション エンドポイントが探索可能になります。 プロパティを `false` に設定すると、特定のエンドポイントの探索を無効化できます。 + +## EndpointDiscoveryMetadata + クラスは、サービスによって公開されるエンドポイントのバージョンに依存しない表現を提供します。これには、サービスの開発者によって指定されたエンドポイントのアドレス、リッスン URI、コントラクト型名、スコープ、メタデータのバージョン、および拡張機能が含まれます。 は、`Probe` 操作と との照合中に、クライアントによって送信されます。基準が一致した場合は、 がクライアントに返されます。 内のエンドポイント アドレスが、 のエンドポイント アドレスと照合されます。基準が一致した場合は、 がクライアントに返されます。 + +## FindCriteria + クラスは、サービスの検索時に使用される条件の指定に使用するバージョンに依存しないクラスです。サービスを照合するための WS\-Discovery 定義の条件を完全にサポートします。また、このクラスには、照合プロセス中に使用できるカスタム値を指定するために開発者が使用できる拡張機能もあります。開発者は、開発者が検索するサービスの合計数を指定する 、またはクライアントが応答を待機する時間を指定する値である を指定して、`Find` 操作の終了条件を設定できます。 + +## FindRequestContext + クラスは、クライアントが `Find` 操作を開始するときに受信する `Probe` メッセージに基づいて、探索サービスによってインスタンス化されます。これには、クライアントによって指定された のインスタンスが含まれます。 + +## FindResponse + クラスは、`Find` 操作の応答と共に、 の呼び出し元に返されます。これは、 にも存在します。これには、探索されたエンドポイントのコレクションである のコレクションと、 および のディクショナリが含まれます。 + +## ResolveCriteria + クラスは、既知のサービスの解決時に使用される条件の指定に使用するバージョンに依存しないクラスです。これには、既知のサービスのエンドポイント アドレスが含まれます。開発者は、クライアントが応答を待機する時間を指定する を指定して、解決操作の終了条件を提供できます。 + +## ResolveResponse + は、`Resolve` 操作の応答と共に、 メソッドの呼び出し元に返されます。これは、 にも存在します。これには、探索されたエンドポイントである のインスタンスと、 のインスタンスが含まれます。 + +## ServiceDiscoveryBehavior + クラスを使用すると、探索機能をサービスに追加できます。この動作は に追加します。 クラスは、サービス ホストに追加されているアプリケーション エンドポイントに対して反復処理され、探索可能なエンドポイントに基づいて のコレクションを作成します。既定では、すべてのエンドポイントが探索可能です。特定のエンドポイントが探索可能になるかどうかは、 をその特定のエンドポイントに追加することで制御できます。アナウンス エンドポイントが に追加されると、サービス ホストが開かれるときまたは閉じられるときに、すべての探索可能なエンドポイントのアナウンスが、各アナウンス エンドポイントから送られます。 + +## ServiceDiscoveryExtension + クラスは クラスによって作成されます。探索可能にされているエンドポイントは、 から取得できます。このクラスは、カスタムの探索サービス実装を指定する目的でも使用されます。 + +## UdpAnnouncementEndpoint + クラスは、UDP マルチキャスト バインディングを使用するアナウンス用に事前に構成しておく標準のアナウンス エンドポイントです。既定では、 が WSApril2005 WS\_Discovery バージョンを使用するように設定されています。 + +## UdpDiscoveryEndpoint + クラスは、UDP マルチキャスト バインディングを使用する探索のために事前に構成された標準の探索エンドポイントです。既定では、 が、WSDiscovery11 WS\-Discovery バージョンと モードを使用するように設定されています。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-discovery-overview.md b/docs/framework/wcf/feature-details/wcf-discovery-overview.md new file mode 100644 index 00000000000..ecaa291cc9c --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-discovery-overview.md @@ -0,0 +1,163 @@ +--- +title: "WCF Discovery の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 84fad0e4-23b1-45b5-a2d4-c9cdf90bbb22 +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# WCF Discovery の概要 +Discovery API は、WS\-Discovery プロトコルを使用した Web サービスの動的公開と探索の統合プログラミング モデルを提供します。これらの API は、サービスがサービス自体を公開し、クライアントが公開されたサービスを発見できるようにします。サービスを探索可能にした後は、サービスでアナウンス メッセージを送信できるほか、探索要求のリッスンと応答もできるようになります。探索可能なサービスは、ネットワークに接続されたことをアナウンスする Hello メッセージ、およびネットワークから切断されたことをアナウンスする Bye メッセージを送信できます。サービスを検索するために、クライアントは、サービス コントラクト型、キーワード、ネットワークのスコープなど、特定の条件が設定された `Probe` 要求を送信します。サービスはこの `Probe` 要求を受信し、条件に一致するかどうかを判断します。サービスが条件に一致した場合は、サービスへの接続に必要な情報と併せて `ProbeMatch` メッセージをクライアントに送り返すことで応答します。クライアントは `Resolve` 要求を送信することもできます。この要求では、エンドポイント アドレスが変更されている可能性があるサービスを発見できます。条件に一致したサービスは、`ResolveMatch` メッセージをクライアントに送り返すことで、`Resolve` 要求に応答します。 + +## アドホック モードとマネージ モード + Discovery API は、マネージとアドホックという 2 種類のモードをサポートします。マネージ モードでは、使用可能なサービスについての情報を管理する探索プロキシと呼ばれる集中サーバーがあります。探索プロキシには、さまざまな方法でサービスについての情報を設定できます。たとえば、サービスから起動中にアナウンス メッセージを探索プロキシに送信することも、探索プロキシがデータベースや構成ファイルからデータを読み取って、使用可能なサービスを特定することもできます。探索プロキシへの情報の設定方法は、開発者が決定します。クライアントは、探索プロキシを使用して、使用可能なサービスについての情報を取得します。クライアントは、サービスを検索するときに `Probe` メッセージを探索プロキシに送信します。探索プロキシは、認識しているサービスのうち、クライアントが検索しているサービスに一致するものがあるかどうかを判断します。一致するものがあった場合、探索プロキシは `ProbeMatch` 応答をクライアントに返します。クライアントは、プロキシから返されたサービスの情報を使用して、直接サービスにアクセスします。マネージ モードの基盤である最大の原則は、探索要求がユニキャストで 1 つの機構、つまり、探索プロキシに送信されることです。.NET Framework には、開発者が独自のプロキシを作成できる主要コンポーネントがあります。クライアントとサービスは、次のような複数の方法でプロキシを見つけることができます。 + +- プロキシがアドホック メッセージに応答する。 + +- プロキシが起動中にアナウンス メッセージを送信する。 + +- 特定の既知のエンドポイントを検索するように、クライアントとサービスを作成する。 + + アドホック モードには、集中サーバーはありません。サービス アナウンスやクライアント要求など、すべての探索メッセージは、マルチキャストで送信されます。既定では、.NET Framework に、UDP プロトコルを利用したアドホック探索のサポートが含まれています。たとえば、起動時に Hello アナウンスを送信するようにサービスが構成されている場合、サービスは、UDP プロトコルを使用して既知のマルチキャスト アドレスからアナウンスを送信します。クライアントは、これらのアナウンスをアクティブにリッスンし、適宜処理する必要があります。クライアントが、ある特定のサービスを検索するための `Probe` メッセージを送信すると、このメッセージは、マルチキャスト プロトコルを使用してネットワーク上で送信されます。要求を受信した各サービスは、`Probe` メッセージの条件に一致するかどうかを判断し、`Probe` メッセージに指定されている条件に一致する場合は、`ProbeMatch` メッセージを使用して直接クライアントに応答します。 + +## WCF Discovery を使用する利点 + WCF Discovery は WS\-Discovery プロトコルを使用して実装されるため、WS\-Discovery を実装するその他のクライアント、サービス、およびプロキシと相互運用可能です。WCF Discovery は既存の WCF API を基盤にしているため、既存のサービスやクライアントに簡単に探索機能を追加できます。サービスは、アプリケーション構成設定を使用して、簡単に探索可能にできます。また、WCF Discovery では、ピア ネットワーク、名前付けオーバーレイ、HTTP など、その他のトランスポートでの探索プロトコルの使用もサポートされます。WCF Discovery は、探索プロキシが使用されるマネージ モードの運用をサポートします。これにより、ネットワーク全体にマルチキャスト メッセージが送信されずに、探索プロキシに直接メッセージが送信されるため、ネットワーク トラフィックが軽減されます。WCF Discovery では、Web サービスをより柔軟に操作することもできます。たとえば、クライアントやサービスを再構成することなく、サービスのアドレスを変更できます。クライアントがサービスにアクセスする必要がある場合、`Find` 要求により `Probe` メッセージを発行すると、サービスの現在のアドレスがサービスから返されます。WCF Discovery では、クライアントは、コントラクトの種類、バインド要素、名前空間、スコープ、キーワードやバージョン番号など、異なる条件を基に特定のサービスを検索できます。WCF Discovery では、実行時および設計時にも探索が可能です。アプリケーションに探索を追加することで、フォールト トレランスや自動構成など、その他のシナリオを実現することもできます。 + +## サービスの公開 + サービスを探索可能にするには、 をサービス ホストに追加し、探索エンドポイントを追加して探索メッセージをリッスンする場所を指定する必要があります。次のコード例は、自己ホスト型サービスを変更して探索可能にする方法を示しています。 + +``` +Uri baseAddress = new Uri(string.Format("http://{0}:8000/discovery/scenarios/calculatorservice/{1}/", + System.Net.Dns.GetHostName(), Guid.NewGuid().ToString())); + +// Create a ServiceHost for the CalculatorService type. +using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress)) +{ + // add calculator endpoint + serviceHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), string.Empty); + + // ** DISCOVERY ** // + // make the service discoverable by adding the discovery behavior + serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); + + // ** DISCOVERY ** // + // add the discovery endpoint that specifies where to publish the services + serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint()); + + // Open the ServiceHost to create listeners and start listening for messages. + serviceHost.Open(); + + // The service can now be accessed. + Console.WriteLine("Press to terminate service."); + Console.ReadLine(); +} +``` + + サービスを探索可能にするには、 のインスタンスをサービスの説明に追加する必要があります。探索要求をリッスンするサービスを指定するには、 のインスタンスをサービス ホストに追加する必要があります。この例では、 \( から派生した\) を追加して、サービスが UDP マルチキャスト トランスポートを利用して探索要求をリッスンするように指定しています。すべてのメッセージがマルチキャストで送信されるため、 を使用してアドホック探索が実行されるようにしています。 + +## アナウンス + 既定では、サービスを公開しても、アナウンス メッセージは送信されません。アナウンス メッセージを送信するように、サービスを構成する必要があります。このため、探索メッセージのリッスンとは別に、サービスをアナウンスできるため、より柔軟にサービスを作成できます。サービス アナウンスは、探索プロキシまたはその他のサービス レジストリにサービスを登録するメカニズムとしても使用できます。次のコード例は、UDP バインドを利用してアナウンス メッセージを送信するようにサービスを構成する方法を示しています。 + +``` +Uri baseAddress = new Uri(string.Format("http://{0}:8000/discovery/scenarios/calculatorservice/{1}/", + System.Net.Dns.GetHostName(), Guid.NewGuid().ToString())); + +// Create a ServiceHost for the CalculatorService type. +using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress)) +{ + // add calculator endpoint + serviceHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), string.Empty); + + // ** DISCOVERY ** // + // make the service discoverable by adding the discovery behavior + ServiceDiscoveryBehavior discoveryBehavior = new ServiceDiscoveryBehavior(); + serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); + + // send announcements on UDP multicast transport + discoveryBehavior.AnnouncementEndpoints.Add( + new UdpAnnouncementEndpoint()); + + // ** DISCOVERY ** // + // add the discovery endpoint that specifies where to publish the services + serviceHost.Description.Endpoints.Add(new UdpDiscoveryEndpoint()); + + // Open the ServiceHost to create listeners and start listening for messages. + serviceHost.Open(); + + // The service can now be accessed. + Console.WriteLine("Press to terminate service."); + Console.ReadLine(); +} +``` + +## サービス探索 + クライアント アプリケーションは、 クラスを使用してサービスを検索できます。開発者は、`Probe` メッセージまたは `Resolve` メッセージの送信先を指定する探索エンドポイントに渡す クラスのインスタンスを作成します。クライアントは、次に、 インスタンス内に検索条件を指定する を呼び出します。一致するサービスが見つかった場合、 のコレクションを返します。次のコードは、`Find` メソッドを呼び出して、検索されたサービスに接続する方法を示しています。 + +``` +class Client +{ + static EndpointAddress serviceAddress; + + static void Main() + { + if (FindService()) InvokeService(); + } + + // ** DISCOVERY ** // + static bool FindService() + { + Console.WriteLine("\nFinding Calculator Service .."); + DiscoveryClient discoveryClient = + new DiscoveryClient(new UdpDiscoveryEndpoint()); + + Collection calculatorServices = + discoveryClient.Find(new FindCriteria(typeof(ICalculator))); + + discoveryClient.Close(); + + if (calculatorServices.Count == 0) + { + Console.WriteLine("\nNo services are found."); + return false; + } + else + { + serviceAddress = calculatorServices[0].EndpointAddress; + return true; + } + } + + static void InvokeService() + { + Console.WriteLine("\nInvoking Calculator Service at {0}\n", serviceAddress); + + // Create a client + CalculatorClient client = new CalculatorClient(); + client.Endpoint.Address = serviceAddress; + client.Add(10,3); +} +``` + +## 探索およびメッセージ レベルのセキュリティ + メッセージ レベルのセキュリティを使用する場合は、 をサービスの探索エンドポイントに指定し、対応する をクライアントの探索エンドポイントに指定する必要があります。メッセージ レベルのセキュリティ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メッセージのセキュリティ](../../../../docs/framework/wcf/feature-details/message-security-in-wcf.md)」を参照してください。 + +## 探索および Web ホスト サービス + WCF サービスが探索可能であるためには、このサービスが実行されている必要があります。IIS または WAS でホストされている WCF サービスは、IIS\/WAS がサービスにバインドされているメッセージを受信するまで実行されないため、既定では探索できません。Web ホスト サービスを探索可能にするには、次の 2 つのオプションがあります。 + +1. Windows Server AppFabric の自動開始機能の使用 + +2. サービスに代わって通信を行う探索プロキシの使用 + + Windows Server AppFabric には、メッセージを受信する前にサービスを開始できる自動開始機能が備わっています。この自動開始セットで、IIS\/WAS でホストされるサービスを探索できるように構成できます。自動開始機能[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows Server AppFabric 自動開始機能](http://go.microsoft.com/fwlink/?LinkId=205545)」を参照してください。自動開始機能をオンにすると共に、探索サービスを構成する必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][プログラムを使用して探索可能性に WCF サービスとクライアントを追加する方法](../../../../docs/framework/wcf/feature-details/how-to-programmatically-add-discoverability-to-a-wcf-service-and-client.md)[構成ファイルにおける探索の構成](../../../../docs/framework/wcf/feature-details/configuring-discovery-in-a-configuration-file.md). + + 探索プロキシはサービスが実行されていないときに WCF サービスの代わりに通信に使用できます。このプロキシはプローブをリッスンするか、メッセージを解決して、クライアントに応答できます。これで、クライアントはメッセージをサービスに直接送信できます。クライアントがサービスにメッセージを送信する場合、インスタンス化されてメッセージに応答します。探索プロキシの実装[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[探索プロキシの実装](../../../../docs/framework/wcf/feature-details/implementing-a-discovery-proxy.md)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-discovery.md b/docs/framework/wcf/feature-details/wcf-discovery.md new file mode 100644 index 00000000000..18aac79953c --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-discovery.md @@ -0,0 +1,46 @@ +--- +title: "WCF Discovery | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "探索 [WCF]" + - "WCF [WCF], 探索" + - "Windows Communication Foundation [WCF], 探索" +ms.assetid: 462c4913-f388-45a9-9042-28ae96a4e735 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# WCF Discovery +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、WS\-Discovery プロトコルを使用して、相互運用可能な方法で実行時にサービスを探索可能にするためのサポートを提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、その可用性を、マルチキャスト メッセージを使用してネットワークにアナウンスするか、探索プロキシ サーバーにアナウンスすることができます。クライアント アプリケーションは、ネットワークまたは探索プロキシ サーバーを検索して、一連の基準を満たすサービスを見つけることができます。このセクションのトピックでは、この機能の概要を示し、そのプログラミング モデルについて説明します。 + +## このセクションの内容 + [WCF Discovery の概要](../../../../docs/framework/wcf/feature-details/wcf-discovery-overview.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が提供する WS\-Discovery サポートの概要を示します。 + + [WCF Discovery オブジェクト モデル](../../../../docs/framework/wcf/feature-details/wcf-discovery-object-model.md) + オブジェクト モデルのクラスと WS\-Discovery サポートの拡張性について説明します。 + + [プログラムを使用して探索可能性に WCF サービスとクライアントを追加する方法](../../../../docs/framework/wcf/feature-details/how-to-programmatically-add-discoverability-to-a-wcf-service-and-client.md) + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを探索可能にする方法を示します。 + + [探索プロキシの実装](../../../../docs/framework/wcf/feature-details/implementing-a-discovery-proxy.md) + 探索プロキシを実装するのに必要な手順、探索プロキシで登録される探索可能なサービス、および探索プロキシを使用して探索可能なサービスを検索するクライアントについて説明します。 + + [探索機能のバージョン指定](../../../../docs/framework/wcf/feature-details/discovery-versioning.md) + いくつかの新しい探索機能のプロトタイプ実装の概要を示します。使用する探索バージョンを選択する方法の概要も示します。 + + [構成ファイルにおける探索の構成](../../../../docs/framework/wcf/feature-details/configuring-discovery-in-a-configuration-file.md) + 構成ファイルで探索を構成する方法を示します。 + + [探索クライアント チャネルの使用](../../../../docs/framework/wcf/feature-details/using-the-discovery-client-channel.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーションを記述する際に探索クライアント チャネルを使用する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-security-terminology.md b/docs/framework/wcf/feature-details/wcf-security-terminology.md new file mode 100644 index 00000000000..8ff57a1fbd3 --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-security-terminology.md @@ -0,0 +1,194 @@ +--- +title: "WCF セキュリティ用語 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ [WCF], 用語" + - "セキュリティ用語集 [WCF]" + - "セキュリティ用語 [WCF]" +ms.assetid: 68dde024-8e51-40ba-804f-ec52d85e9ca9 +caps.latest.revision: 14 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 14 +--- +# WCF セキュリティ用語 +セキュリティについて説明するときに使用する用語の中には、だれもが知っているとは限らないものもあります。ここでは、セキュリティ用語の一部を簡単に説明します。このトピックは、すべての項目について詳細に説明することを目的としたものではありません。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のドキュメントで使用される用語[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows Communication Foundation の基本概念](../../../../docs/framework/wcf/fundamental-concepts.md)」を参照してください。 + + アクセス制御リスト \(ACL: Access Control List\) + オブジェクトに適用されるセキュリティ保護のリスト。オブジェクトには、ファイル、プロセス、イベント、またはセキュリティ記述子を持つすべてのものが含まれます。ACL 内のエントリは、アクセス制御エントリ \(ACE: Access Control Entry\) と呼ばれます。ACL には、随意 ACL とシステム ACL の 2 種類があります。 + + 認証 + ユーザー、コンピューター、サービス、またはプロセスが、それ自身のクレームどおりのものであることを確認するプロセス。 + + 承認 + リソースに対するアクセスと権限を制御する行為。たとえば、あるグループのメンバーにはファイルの読み取りを許可し、そのファイルの変更は別のグループのメンバーだけに許可することです。 + + 証明機関 \(CA: Certificate Authority\) の証明書。 + 証明書を要求したサーバーとクライアントにサーバー認証証明書およびクライアント認証証明書を発行した CA を識別します。CA 証明書にはデジタル署名に使用する公開キーが含まれるため、*"署名証明書"* とも呼ばれます。CA がルート証明機関の場合、CA 証明書は *"ルート証明書"* と呼ばれることもあります。また、場合によっては *"サイト証明書"* とも呼ばれます。 + + CA 階層 + CA 階層には、複数の CA が含まれます。CA 階層は、*"ルート証明機関"* とも呼ばれる階層の最上位に到達するまで、各 CA が階層の上位にある別の CA によって証明されるように編成されています。 + + certificate + エンティティとそのエンティティの公開キーに関する情報が含まれたデジタル署名付き記述。これにより、この 2 つの情報が関連付けられます。証明機関と呼ばれる信頼された組織 \(またはエンティティ\) は、エンティティがそれ自身の主張どおりのものであることを検証した後に、証明書を発行します。 + + 証明書には、さまざまな種類のデータを含めることができます。たとえば、X.509 証明書には、証明書の書式、証明書のシリアル番号、証明書の署名に使用されているアルゴリズム、証明書を発行した CA の名前、証明書を要求したエンティティの名前と公開キー、および CA の署名が含まれます。 + + 証明書ストア + 一般に、証明書、証明書失効リスト \(CRL\)、および証明書信頼リスト \(CTL\) を格納する永続ストレージ。ただし、永続ストレージに格納する必要のない証明書を使用する場合は、メモリ内に証明書ストアを単独で作成し、開くことができます。 + + クレーム + 送信者の ID を確立するために使用する、エンティティ間で渡される情報。たとえば、ユーザー名\/パスワード トークンや X.509 証明書などがあります。 + + クライアント証明書 + クライアント認証 \(Web サーバーでの Web ブラウザーの認証など\) に使用する証明書。Web ブラウザー クライアントがセキュリティで保護された Web サーバーへのアクセスを試みたときに、クライアントは証明書をサーバーに送信して、サーバーがクライアントの ID を確認できるようにします。 + + 資格情報 + セキュリティ プリンシパルが自身の ID を確立するために使用する、既に認証済みのログオン データ \(パスワードなど\)、または Kerberos プロトコル チケット。資格情報は、リソースへのアクセスを制御するために使用されます。 + + ダイジェスト データ + 公開キー暗号化規格 \(PKCS: Public Key Cryptography Standard\) \#7 で定義されたデータ コンテンツ タイプ。任意のデータ型とコンテンツのメッセージ ハッシュ \(ダイジェスト\) で構成されます。 + + デジタル署名 + 送信する情報に送信者の ID をバインドするデータ。デジタル署名は、メッセージ、ファイル、またはその他のデジタル エンコードされた情報にバンドルされる場合もあれば、別々に送信される場合もあります。デジタル署名は公開キー環境で使用され、認証サービスと整合性サービスを提供します。 + + エンコーディング + データをビット ストリームに変換するプロセス。エンコーディングは、データを 1 と 0 のストリームに変換するシリアル化プロセスの一部です。 + + 交換キー ペア + セッション キーを暗号化するために使用する公開キーと秘密キーのペア。セッション キーを安全に保管し、他のユーザーと交換できるようにするために使用します。 + + hash + 数学関数 \(「ハッシュ アルゴリズム」を参照\) を任意の量のデータに適用することによって取得される固定サイズの数値。通常、このデータには *nonce* と呼ばれるランダムなデータが含まれます。結果をより複雑にするために、サービスとクライアントの両方が nonce の交換を支援します。この結果は、*"メッセージ ダイジェスト"* とも呼ばれます。パスワードなどの機密データが暗号化されている場合でも、機密データを送信するよりハッシュ値を送信する方が安全性が高くなります。ハッシュの送信者と受信者は、受信後にハッシュを検証できるように、ハッシュ アルゴリズムと nonce について合意する必要があります。 + + ハッシュ アルゴリズム + データ \(メッセージやセッション キーなど\) のある部分のハッシュ値を生成するために使用するアルゴリズム。一般的なハッシュ アルゴリズムとして、MD2、MD4、MD5、SHA\-1 などがあります。 + + Kerberos プロトコル + クライアントがネットワーク認証サービスとやり取りする方法を定義するプロトコル。クライアントは、Kerberos キー配布センター \(KDC\) からチケットを取得し、接続を確立する際にこれらのチケットをサーバーに提示します。Kerberos チケットは、クライアントのネットワーク資格情報を表します。 + + ローカル セキュリティ機関 \(LSA\) + ユーザーを認証し、ローカル システムにログオンさせる保護されたサブシステム。LSA は、システムのローカル セキュリティのあらゆる側面に関する情報を保持します。この情報を総称して、システムのローカル セキュリティ ポリシーと呼びます。 + + Negotiate + セキュリティ サポート プロバイダー インターフェイス \(SSPI: Security Support Provider Interface\) と他のセキュリティ サポート プロバイダー \(SSP: Security Support Provider\) との間で、アプリケーション層の役割を果たす SSP。アプリケーションは、SSPI を呼び出してネットワークにログオンするときに、要求を処理する SSP を指定できます。アプリケーションが `Negotiate` を指定した場合、`Negotiate` は要求を分析し、顧客が構成したセキュリティ ポリシーに基づいて要求を処理するのに最適な SSP を選択します。 + + nonce + "リプレイ" 攻撃を阻止するために使用されるランダムに生成された値。 + + 否認防止 + 特定のアクションを実行したユーザーを識別することにより、そのユーザーが試みたアクションへの責任を否認できないようにする機能。たとえば、ファイルが削除されたときに、システムによってユーザーの ID が必ず記録されるようにしておきます。 + + 公開キー暗号化規格 \(PKCS\) + 公開キー暗号化の普及を加速するために、世界各国のセキュリティ システムの開発者の協力を得て RSA Data Security, Inc. によって作成された仕様。 + + PKCS \#7 + Cryptographic Message Syntax Standard。暗号化を適用できるデータ \(デジタル署名など\) の一般的な構文。PKCS \#7 は、証明書または証明書失効リスト、およびその他のメッセージ属性 \(タイムスタンプなど\) を普及させるための構文も提供します。 + + プレーンテキスト + 暗号化されていないメッセージ。プレーンテキスト メッセージは、*"クリア テキスト"* メッセージと呼ばれる場合もあります。 + + 特権 + システム関連のさまざまな操作 \(システムのシャットダウン、デバイス ドライバーの読み込み、システム時刻の変更など\) を実行するためのユーザー権限。ユーザーのアクセス トークンには、ユーザーまたはユーザーのグループが保持する特権のリストが含まれます。 + + 秘密キー + 公開キー アルゴリズムで使用するキー ペアのうち、公開されない方のキー。通常、秘密キーは、対称セッション キーの暗号化、メッセージのデジタル署名、または対応する公開キーで暗号化されたメッセージの復号化に使用されます。「公開キー」も参照してください。 + + プロセス + アプリケーションが実行されるセキュリティ コンテキスト。通常、セキュリティ コンテキストはユーザーに関連付けられています。したがって、特定のプロセスで実行されるすべてのアプリケーションに、所有するユーザーのアクセス許可と特権が適用されます。 + + 公開キーと秘密キーのペア + 公開キー暗号化に使用される暗号化キーのセット。各ユーザーについて、暗号化サービス プロバイダー \(CSP: Cryptographic Service Provider\) は通常、公開キーと秘密キーの 2 つのペア \(交換キー ペアとデジタル署名キー ペア\) を保持しています。この 2 つのキー ペアは、セッション間で保持されます。 + + 公開キー + セッション キーまたはデジタル署名を復号化するときに通常使用される暗号化キー。公開キーは、メッセージの暗号化にも使用できます。この場合、メッセージを復号化できるのは、対応する秘密キーを持つ個人だけであることが保証されます。 + + 公開キー暗号化 + キーのペアを使用する暗号化。一方のキーでデータを暗号化し、もう一方のキーでデータを復号化します。これに対して、対称暗号化アルゴリズムでは、暗号化と復号化の両方に同じキーを使用します。実際には、公開キー暗号化は、対称暗号化アルゴリズムで使用するセッション キーを保護するために使用するのが一般的です。この場合、何らかのデータの暗号化に使用されたセッション キーを暗号化するために公開キーが使用され、秘密キーが復号化に使用されます。セッション キーを保護するだけでなく、公開キー暗号化を使用してメッセージにデジタル署名し \(秘密キーを使用\)、その署名を検証する \(公開キーを使用\) こともできます。 + + 公開キー基盤 \(PKI\) + 公開キー アプリケーションを作成、展開、および管理するためのサービスと管理ツールの統合セットを提供するインフラストラクチャ。 + + 否認 + ユーザーがあるアクションを実行したことを第三者が他の方法で証明できないため、ユーザーがその事実を偽って否定できること。たとえば、ファイルを削除したユーザーがその事実を否定することに成功した場合、そのユーザーは否認したことになります。 + + root authority + CA 階層の最上位にある CA。ルート証明機関は、階層の次のレベルにある CA を証明します。 + + セキュア ハッシュ アルゴリズム \(SHA\) + メッセージ ダイジェストを生成するハッシュ アルゴリズム。SHA は、DSS \(Digital Signature Standard\) の DSA \(Digital Signature Algorithm\) と共に使用されます。SHA には、SHA\-1、SHA\-256、SHA\-384、および SHA\-512 の 4 種類があります。SHA\-1 は、160 ビットのメッセージ ダイジェストを生成します。SHA\-256、SHA\-384、および SHA\-512 は、それぞれ 256 ビット、384 ビット、512 ビットのメッセージ ダイジェストを生成します。SHA は、NIST \(National Institute of Standards and Technology\) と NSA \(National Security Agency\) によって開発されました。 + + SSL \(Secure Sockets Layer\) + 公開キー\/秘密キー テクノロジの組み合わせを使用して、安全なネットワーク通信を行うためのプロトコル。 + + セキュリティ コンテキスト + 現在有効になっているセキュリティの属性またはルール。たとえば、コンピューターに現在ログオンしているユーザーや、スマート カード ユーザーが入力した個人 ID 番号などです。SSPI の場合、セキュリティ コンテキストは、接続に関連するセキュリティ データ \(セッション キーやセッションの存続を示す情報など\) が含まれた不透明なデータ構造です。 + + セキュリティ プリンシパル + セキュリティ システムによって認識されるエンティティ。プリンシパルには、人間のユーザーと共に自律プロセスを含めることができます。 + + セキュリティ サポート プロバイダー \(SSP\) + 1 つ以上のセキュリティ パッケージをアプリケーションで使用できるようにすることにより SSPI を実装するダイナミック リンク ライブラリ \(DLL\)。各セキュリティ パッケージは、アプリケーションの SSPI 関数呼び出しと実際のセキュリティ モデルの関数間のマッピングを提供します。セキュリティ パッケージは、Kerberos 認証や LanMan \(Microsoft LAN Manager\) などのセキュリティ プロトコルをサポートします。 + + セキュリティ サポート プロバイダー インターフェイス \(SSPI\) + Microsoft リモート プロシージャ コール \(RPC: Remote Procedure Call\) などのトランスポート レベルのアプリケーションと、Windows 分散セキュリティなどのセキュリティ プロバイダー間の共通インターフェイス。SSPI により、トランスポート アプリケーションは、複数のセキュリティ プロバイダーの中の 1 つを呼び出して、認証済みの接続を取得できます。これらの呼び出しでは、セキュリティ プロトコルの詳細を広範囲にわたり認識しておく必要はありません。 + + セキュリティ トークン サービス + マルチサービス シナリオで、カスタム セキュリティ トークンを発行し、発行済みトークンを管理するよう設計されたサービス。通常、カスタム トークンは、カスタム資格情報を含む SAML \(Security Assertions Markup Language\) トークンです。 + + サーバー証明書 + サーバー認証 \(Web ブラウザーに対する Web サーバーの認証など\) に使用する証明書。Web ブラウザー クライアントがセキュリティで保護された Web サーバーへのアクセスを試みたときに、サーバーは証明書をブラウザーに送信して、クライアントがサーバーの ID を確認できるようにします。 + + セッション + 単一のキー マテリアルの保護の元でのメッセージ交換。たとえば、SSL セッションでは、単一のキーを使用し、そのキーの下で複数のメッセージをやり取りします。 + + セッション キー + 1 回使用された後に破棄される、ランダムに生成されたキー。セッション キーは対称キーです \(暗号化と復号化の両方に使用されます\)。セッション キーはメッセージと共に送信され、対象の受信者の公開キーで暗号化することで保護されます。1 つのセッション キーは、約 40 ~ 2,000 ビットのランダムな数値で構成されます。 + + 補足の資格情報 + 外部のセキュリティ ドメインに対してセキュリティ プリンシパルを認証する際に使用する資格情報。 + + 対称暗号化 + 1 つのキーを暗号化と復号化の両方に使用する暗号化。大量のデータを暗号化する場合、対称暗号化が推奨されます。一般的な対称暗号化アルゴリズムとして、RC2、RC4、および DES \(Data Encryption Standard\) があります。 + + 「公開キー暗号化」も参照してください。 + + 対称キー + 暗号化と復号化の両方に使用する単一のキー。通常、セッション キーは対称キーです。 + + トークン \(アクセス トークン\) + アクセス トークンには、ログオン セッションのセキュリティ情報が含まれます。システムは、ユーザーのログオン時にアクセス トークンを作成し、そのユーザーのために実行されるすべてのプロセスがトークンのコピーを保持します。トークンにより、ユーザー、ユーザーのグループ、およびユーザーの特権が識別されます。システムはトークンを使用して、セキュリティ保護可能なオブジェクトへのアクセスを制御したり、ユーザーがローカル コンピューターで実行できるシステム関連のさまざまな操作を制御したりします。アクセス トークンには、プライマリ アクセス トークンと偽装アクセス トークンの 2 種類があります。 + + トランスポート層 + サービスの品質と情報の正確な配信の両方に対して責任を負うネットワーク層。この層で実行されるタスクには、エラーの検出と修正も含まれます。 + + 信頼リスト \(証明書信頼リスト \(CTL: Certificate Trust List\)\) + 信頼されたエンティティによって署名されている項目の定義済みリスト。CTL は、証明書のハッシュのリストやファイル名のリストなど、どのようなものでもかまいません。リスト内のすべての項目は、署名エンティティによって認証 \(承認\) されます。 + + 信頼プロバイダー + 指定されたファイルが信頼できるものかどうかを判断するソフトウェア。この判断は、そのファイルに関連付けられている証明書に基づいて行われます。 + + ユーザー プリンシパル名 \(UPN\) + ユーザー アカウント名 \(*"ユーザー ログイン名"* と呼ばれることもある\) と、ユーザー アカウントの検索範囲のドメインを識別するドメイン名です。これは、Windows ドメインにログオンするための標準的使用方法です。形式は、someone@example.com です \(電子メールアドレスの場合\)。 + +> [!NOTE] +> 標準の UPN 形式に加え、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、cohowinery.com\\someone のような下位レベル形式の UPN も受け入れます。 + + X.509 + 国際的に認知されている証明書の規格。証明書の必須部分が定義されています。 + +## 参照 + [Windows Communication Foundation の基本概念](../../../../docs/framework/wcf/fundamental-concepts.md) + [セキュリティの概念](../../../../docs/framework/wcf/feature-details/security-concepts.md) + [Windows Server AppFabric のセキュリティ モデル](http://go.microsoft.com/fwlink/?LinkID=201279&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-services-and-aspnet.md b/docs/framework/wcf/feature-details/wcf-services-and-aspnet.md new file mode 100644 index 00000000000..be53820102a --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-services-and-aspnet.md @@ -0,0 +1,112 @@ +--- +title: "WCF サービスと ASP.NET | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b980496a-f0b0-4319-8e55-a0f0fa32da70 +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# WCF サービスと ASP.NET +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを ASP.NET とサイド バイ サイドでホストし、これらを ASP.NET 互換モードでホストする方法について解説します。 + +## WCF を ASP.NET とサイド バイ サイドでホストする方法 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを Internet Information Services \(IIS\) 上で稼働させる場合、これを .ASPX ページや ASMX Web サービスと同じアプリケーション ドメイン内に置くことができます。 ASP.NET には、AppDomain の管理、動的コンパイルなどの共通インフラストラクチャ サービスが組み込まれており、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と ASP.NET HTTP ランタイムのどちらにも対応しています。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の既定の構成は、ASP.NET とサイド バイ サイドになっています。 + + ![WCF サービスと ASP .NET: 共有状態](../../../../docs/framework/wcf/feature-details/media/hostingwcfwithaspnet.gif "HostingWCFwithASPNET") + + ASP.NET の HTTP ランタイムは、ASP.NET 向けの要求を処理しますが、同じ AppDomain 上で稼働していても、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに対する要求の処理には関与しません。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービス モデルは、個々の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに向けられたメッセージを途中受信し、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のトランスポート\/チャネル スタックを介して転送します。 + + この結果、サイド バイ サイド モデルは次のようになります。 + +- ASP.NET と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、AppDomain の状態を共有できます。 どちらのフレームワークも同じ AppDomain に共存できるので、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は AppDomain の状態 \(静的変数、イベントなど\) も、ASP.NET と共有できます。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、ホスティング環境や伝送方式にかかわらず、動作が一貫しています。 ASP.NET HTTP ランタイムは意図的に、IIS\/ASP.NET ホスティング環境や HTTP 通信と強く結合する形で設計されています。 一方 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、ホスティング環境やトランスポートの種類に関係なく同じように動作します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の動作は IIS の内部でも外部でも同じであり、IIS 7.0 以降でホストされているサービスは、HTTP 以外のプロトコルを使用するエンドポイントを含め、すべてのエンドポイントで動作が同じです。 + +- HTTP ランタイムに実装された機能は、同じ AppDomain 内でも、ASP.NET のコンテンツには適用されますが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には適用されません。 ASP.NET アプリケーション プラットフォームに含まれている HTTP 固有の機能の多くは、ASP.NET コンテンツが含まれている AppDomain 内でホストされている [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスには適用されません。 このような機能の例を次に示します。 + + - HttpContext : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービスからアクセスされた場合、 は常に `null` を返します。 代わりに、 を使用してください。 + + - ファイル ベースの承認 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ モデルでは、サービス要求が承認済みであるかどうかを判断する際、アクセス制御リスト \(ACL\) をサービスの .svc ファイルに適用することはできません。 + + - 構成ベースの URL 承認: 同様に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ モデルでは、System.Web の \ 構成要素で指定された、URL ベースの承認規則が順守されません。 ASP.NET の URL 承認規則によって保護された URL 空間にサービスが存在する場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 要求に関しては、これらの設定が無視されます。 + + - HttpModule の拡張機能 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ホスティング インフラストラクチャは、 イベントが発生すると [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に対する要求を途中受信します。ASP.NET HTTP パイプラインには制御を返しません。 したがって、パイプラインのこれ以降の段階で要求を途中受信するよう設計されたモジュールは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に対する要求を途中受信できません。 + + - ASP.NET の偽装: 既定では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に対する要求は常に IIS のプロセス ID で実行されます。ASP.NET で、System.Web の \ という構成オプションにより偽装を有効にしていても同様です。 + + 以上の制約は、IIS アプリケーション上で稼働する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスにのみ適用されます。 ASP.NET コンテンツの動作が、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の有無によって変わることはありません。 + + 従来 HTTP パイプラインにより提供されていた機能を必要とする [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に組み込まれている、同等の機能の使用を検討します。これらは、特定のホストやトランスポートに依存しません。 + +- \( の代わり\) + +- \(ASP.NET のファイル ベースまたは URL ベースの承認の代わり\) + +- または独自の階層チャネル \(HTTP モジュールの代わり\) + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] による各操作の偽装 \(System.Web による偽装の代わり\) + + また、サービスを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の ASP.NET 互換モードで実行することも検討します。 + +## WCF サービスを ASP.NET 互換モードで提供する方法 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] モデルはホスティング環境やトランスポートにかかわらず一貫した動作をするように設計されていますが、アプリケーションによっては、このレベルの柔軟性が必要とされない場合も少なくありません。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の ASP.NET 互換モードはこのように、IIS 以外で動作したり、HTTP 以外のプロトコルで通信したりする必要がない代わりに、ASP.NET Web アプリケーション プラットフォームのあらゆる機能を活用したい場合に適しています。 + + 既定であるサイド バイド サイドの構成では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ホスティング インフラストラクチャが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージを途中受信し、HTTP パイプラインを使用せずに処理されました。これと異なり、ASP.NET 互換モードで実行される [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、ASP.NET の HTTP 要求と同じライフサイクルになります。 互換モードでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、 を実装することにより HTTP パイプラインを使用します。これはASPX ページや ASMX Web サービスに対する要求を処理する方法と同じです。 したがって、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、次に挙げるような ASP.NET の機能に関して、ASMX とまったく同じように動作します。 + +- ASP.NET 互換モードで動作する : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、 やこれに関連する状態にアクセスできます。 + +- ファイル ベースの承認 : ASP.NET 互換モードで稼動する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、ファイル システムのアクセス制御リスト \(ACL\) をサービスの .svc ファイルに関連付けることによって、セキュリティで保護されます。 + +- URL 承認の設定 : ASP.NET の URL 承認規則は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービスが ASP.NET 互換モードで動作していれば、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に対する要求にも適用されます。 + +- の拡張機能 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを ASP.NET 互換モードで実行した場合は、ASP.NET の HTTP 要求と同じライフサイクルになるので、HTTP パイプラインに構成された HTTP モジュールはすべて、サービス起動の前後で、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に対する要求を処理できます。 + +- ASP.NET の偽装 : [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、ASP.NET の偽装されたスレッドの ID で動作します。アプリケーションで ASP.NET の偽装が有効になっている場合、これは IIS プロセスの ID とは異なります。 特定のサービス操作に対して ASP.NET と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の両方の偽装が有効になっている場合、サービスは最終的に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] から取得された ID で動作します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の ASP.NET 互換モードは、アプリケーションごとに、その Web.config ファイルに次のような記述をすることにより有効になります。 + +``` + + + +``` + + 既定値は `true` です。 値が "`false`" に設定されている場合は、アプリケーションで動作する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスがすべて、ASP.NET 互換モードでは実行されないことを示します。 + + ASP.NET 互換モードでは、要求の処理方法が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の既定の構成とまったく異なるので、個々のサービス実装は、ASP.NET 互換モードが有効化されているアプリケーション内で動作するかどうかを制御できます。 各サービスは、ASP.NET 互換モードをサポートするかどうかを、 で示すことができます。 この属性の既定値は です。 + + `[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]` + + `public class CalculatorService : ICalculatorSession` + + `{//Implement calculator service methods.}` + + アプリケーション全体を互換モードにしたとき、個々のサービスのサポート レベルがどうなるかを表に示します。 + +|アプリケーション全体の互換モード設定|AspNetCompatibilityRequirementsMode

設定|実際の動作| +|------------------------|------------------------------------------------|-----------| +|aspNetCompatibilityEnabled \= “`true`”||サービスは正常に動作します。| +|aspNetCompatibilityEnabled \= “`true`”||サービスは正常に動作します。| +|aspNetCompatibilityEnabled \= “`true`”||サービスがメッセージを受信した時点でアクティベーション エラーが発生します。| +|aspNetCompatibilityEnabled \= “`false`”||サービスがメッセージを受信した時点でアクティベーション エラーが発生します。| +|aspNetCompatibilityEnabled \= “`false`”||サービスは正常に動作します。| +|aspNetCompatibilityEnabled \= “`false`”||サービスは正常に動作します。| + +> [!NOTE] +> IIS 7.0 や WAS 上で稼働する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、HTTP 以外のプロトコルでも通信できます。 しかし [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが ASP.NET 互換モードのアプリケーション上で動作している場合、HTTP 以外のエンドポイントと通信することはできません。 最初のメッセージを受信した時点で、アクティベーション例外が発生します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの ASP.NET 互換モードの有効化の詳細については、「」と「[ASP.NET 互換性](../../../../docs/framework/wcf/samples/aspnet-compatibility.md)」のサンプルを参照してください。 + +## 参照 + + [AppFabric のホスティング機能](http://go.microsoft.com/fwlink/?LinkId=201276) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-syndication-overview.md b/docs/framework/wcf/feature-details/wcf-syndication-overview.md new file mode 100644 index 00000000000..d3e38b31bfe --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-syndication-overview.md @@ -0,0 +1,32 @@ +--- +title: "WCF 配信の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: af6d4c39-e5e8-4099-aee6-5261feff9107 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# WCF 配信の概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスから配信フィードを公開することができます。配信は、サーバーがフィードと呼ばれる相互運用可能な形式でアプリケーション データの一部を公開するためのアプリケーション統合の機構です。フィードはアプリケーション データのコレクションであり、フィード レベルのメタデータ \(タイトル、作成者、URL、およびその他のメタデータ\) と一連のフィード アイテムから構成されます。フィード内で、フィード アイテムは通常、発生の逆順に並べられます。フィード アイテムは、アイテム レベルのメタデータの標準セット \(タイトル、URL、作成日時、カテゴリ、およびその他のアイテム レベルのメタデータ\) と任意の大きさのアプリケーション固有のデータから構成されます。最も一般的な配信フィードは、RSS \(Really Simple Syndication\) 2.0 と Atom 1.0 であり、どちらも [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でサポートされています。 + +## オブジェクト モデル + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、 など、配信専用の一連のクラスが定義されており、フィード、フィード アイテム、および関連するメタデータを形式に依存しない方法で処理できます。また [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、 など、WCF REST プログラミング モデル上で配信をサポートするために構築されるインフラストラクチャ クラスも定義されています。フィード フォーマッタ クラスは、オブジェクト モデルの RSS 2.0 と Atom 1.0 に対する双方向のシリアル化をサポートしています。 + +## シナリオ + 現在、配信はブログで広く使用されています。ブログの作成者は、さまざまな種類の情報を定期的に公開します。たとえば、文字、画像、音声などの情報です。多くの新聞や雑誌でも、配信を使用してニュースや記事を公開しています。このようなフィードを定期受信することで、ユーザーはこれらのサイトから発信されるすべての最新情報を得ることができます。配信は一般的にブログや出版社で使用されますが、一連の情報を公開する任意のアプリケーションで使用することもできます。たとえば、配信フィードを使用したバグ データベースの公開が考えられます。この場合は、`CodeDefects` という操作を公開する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを作成できます。この操作では、調べたいバグを報告した人の電子メール アドレスを指定するパラメーターを使用できます。クライアントは、http:\/\/someserver\/bugDatabase\/CodeDefects?user\=johndoe という URL を使用して、この操作を呼び出すことができます。 + +## 配信フォーマット + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の配信プラットフォームでは、RSS 2.0 と Atom 1.0 をサポートしています。 + +## 参照 + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-syndication.md b/docs/framework/wcf/feature-details/wcf-syndication.md new file mode 100644 index 00000000000..e37f634a077 --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-syndication.md @@ -0,0 +1,52 @@ +--- +title: "WCF 配信 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "配信 [WCF]" +ms.assetid: ebf80384-0fc9-4919-a1e8-23ca2a13e300 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# WCF 配信 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、Atom、RSS、またはその他の独自の形式の配信フィードを簡単に扱うためのサポートが用意されています。これを利用して、配信フィードの読み取りや作成を行ったり、サービス エンドポイントで配信フィードを公開したりできます。 このセクションのトピックでは、配信用のこのプログラミング モデルについて詳細に説明します。 + +## このセクションの内容 + [WCF 配信の概要](../../../../docs/framework/wcf/feature-details/wcf-syndication-overview.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で提供される配信サポートの概要について説明します。 + + [配信のアーキテクチャ](../../../../docs/framework/wcf/feature-details/architecture-of-syndication.md) + オブジェクト モデルのクラスと配信の拡張について説明します。 + + [WCF 配信オブジェクト モデルを Atom や RSS に割り当てる方法](../../../../docs/framework/wcf/feature-details/how-the-wcf-syndication-object-model-maps-to-atom-and-rss.md) + WCF 配信オブジェクト モデルにおけるフィードの表現方法と RSS フィードおよび ATOM フィードへの変換方法について説明します。 + + [方法 : 基本的な RSS フィードを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-rss-feed.md) + 基本的な RSS フィードを利用できるようにするサービスの作成方法について説明します。 + + [方法 : 基本的な ATOM フィードを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-atom-feed.md) + 基本的な ATOM フィードを利用できるようにするサービスの作成方法について説明します。 + + [方法 : Atom および RSS の両方としてフィードを公開する](../../../../docs/framework/wcf/feature-details/how-to-expose-a-feed-as-both-atom-and-rss.md) + ATOM と RSS で同じフィードを利用できるようにするサービスの作成方法について説明します。 + + [配信の拡張](../../../../docs/framework/wcf/feature-details/syndication-extensibility.md) + カスタム要素と属性を配信フィードに追加するメソッドについて説明します。 + +## 関連項目 + +## 関連項目 + +## 参照 + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) + [部分信頼](../../../../docs/framework/wcf/feature-details/partial-trust.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-web-http-error-handling.md b/docs/framework/wcf/feature-details/wcf-web-http-error-handling.md new file mode 100644 index 00000000000..77c6a017aa4 --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-web-http-error-handling.md @@ -0,0 +1,64 @@ +--- +title: "WCF Web HTTP エラー処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 02891563-0fce-4c32-84dc-d794b1a5c040 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# WCF Web HTTP エラー処理 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] Web HTTP エラー処理では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] Web HTTP サービスからエラーを返すことができます。このサービスは、HTTP 状態コードを指定し、操作と同じ形式 \(XML、JSON など\) を使用してエラーの詳細を返します。 + +## WCF Web HTTP エラー処理 + クラスは、HTTP 状態コードを指定できるようにするコンストラクターを定義します。この状態コードは、クライアントに返されます。 クラスのジェネリック バージョンである を使用すると、発生したエラーに関する情報を格納しているユーザー定義型を返すことができます。このカスタム オブジェクトは、操作で定義された形式を使用してシリアル化され、クライアントに返されます。次の例は、HTTP 状態コードを返す方法を示しています。 + +``` +Public string Operation1() +{ // Operation logic + // ... + Throw new WebFaultException(HttpStatusCode.Forbidden); +} +``` + + 次の例は、HTTP 状態コードおよび追加情報をユーザー定義型で返す方法を示しています。`MyErrorDetail` は、発生したエラーに関する追加情報を格納しているユーザー定義型です。 + +``` +Public string Operation2() + // Operation logic + // ... MyErrorDetail detail = new MyErrorDetail + { + Message = “Error Message”, + ErrorCode = 123, + } + throw new WebFaultException(detail, HttpStatusCode.Forbidden); +} +``` + + このコードは、禁止されている状態コード、および `MyErrorDetails` オブジェクトのインスタンスを格納している本文と共に、HTTP 応答を返します。`MyErrorDetails` オブジェクトの形式は、次の値によって決まります。 + +- サービス操作で指定された 属性または 属性の `ResponseFormat` パラメーターの値。 + +- の値。 + +- プロパティの値 \( にアクセスして取得\)。 + + これらの値が操作の形式にどのように影響するか [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WCF Web HTTP 形式](../../../../docs/framework/wcf/feature-details/wcf-web-http-formatting.md)」を参照してください。 + + であるため、SOAP エンドポイントと Web HTTP エンドポイントを公開するサービスのエラー例外プログラミング モデルとして使用できます。 + +## 参照 + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) + [WCF Web HTTP 形式](../../../../docs/framework/wcf/feature-details/wcf-web-http-formatting.md) + [エラーの定義と指定](../../../../docs/framework/wcf/defining-and-specifying-faults.md) + [例外とエラーの処理](../../../../docs/framework/wcf/extending/handling-exceptions-and-faults.md) + [エラーの送受信](../../../../docs/framework/wcf/sending-and-receiving-faults.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-web-http-formatting.md b/docs/framework/wcf/feature-details/wcf-web-http-formatting.md new file mode 100644 index 00000000000..ec7f124b8aa --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-web-http-formatting.md @@ -0,0 +1,182 @@ +--- +title: "WCF Web HTTP 形式 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e2414896-5463-41cd-b0a6-026a713eac2c +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# WCF Web HTTP 形式 +WCF Web HTTP プログラミング モデルでは、サービス操作で返す応答の最適な形式を動的に判断できます。 適切な形式を判断するための方法として、自動と明示的の 2 つがサポートされます。 + +## 自動書式 + 有効にした場合は、応答を返す最適な形式が自動選択によって選択されます。 最適な形式の判断は、次の項目をこの順序で確認することで行われます。 + +1. 要求メッセージの Accept ヘッダーのメディアの種類。 + +2. 要求メッセージのコンテンツの種類。 + +3. その処理での既定の形式設定。 + +4. WebHttpBehavior での既定の形式設定。 + + 要求メッセージに Accept ヘッダーが含まれる場合は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] インフラストラクチャがサポートする種類がインフラストラクチャで検索されます。 `Accept` ヘッダーにメディアの種類のプロパティが指定されている場合は、それに従います。 適切な形式が `Accept` ヘッダーで見つからない場合は、要求メッセージのコンテンツの種類が使用されます。 適切なコンテンツの種類が指定されていない場合は、その操作の既定の形式設定が使用されます。 既定の形式は、 の `ResponseFormat` パラメーターおよび 属性で設定されます。 その操作に既定の形式が指定されていない場合は、 プロパティの値が使用されます。 形式の自動選択は、 プロパティに依存します。 このプロパティが `true` に設定されている場合は、使用する最適な形式が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャで決定されます。 形式の自動選択は、既定で、下位互換性のために無効になっています。 形式の自動選択は、プログラムで有効にすることも、構成ファイルを使用して有効にすることもできます。 形式の自動選択をコードで有効にする方法を次の例に示します。 + +``` +// This code assumes the service name is MyService and the service contract is IMyContract +Uri baseAddress = new Uri("http://localhost:8000"); + +WebServiceHost host = new WebServiceHost(typeof(MyService), baseAddress) +try +{ + ServiceEndpoint sep = host.AddServiceEndpoint(typeof(IMyContract), new WebHttpBinding(), ""); + // Check it see if the WebHttpBehavior already exists + WebHttpBehavior whb = sep.Behaviors.Find(); + + if (whb != null) + { + whb.AutomaticFormatSelectionEnabled = true; + } + else + { + WebHttpBehavior webBehavior = new WebHttpBehavior(); + webBehavior.AutomaticFormatSelectionEnabled = true; + sep.Behaviors.Add(webBehavior); + } + // Open host to start listening for messages + host.Open(); + + // ... +} + catch(CommunicationException ex) + { + Console.WriteLine(“An exception occurred: “ + ex.Message()); + } + +``` + + 形式の自動選択は、構成ファイルを使用して有効にすることもできます。 プロパティは、 で直接、または を使用して設定できます。 形式の自動選択を で有効にする方法を次の例に示します。 + +``` + + + + + + + + + + + + + + + +``` + + 形式の自動選択を、 を使用して有効にする方法を次の例に示します。 + +``` + + + + + + + + +``` + +## 形式の明示的な選択 + 名前が示すように、形式の明示的な選択では、操作コード内に使用する最適な形式を開発者が判断します。 最適な形式が XML または JSON の場合は、開発者が または のいずれかに設定します。 プロパティが明示的に設定されていない場合は、その操作の既定の形式が使用されます。 + + 次の例では、使用する形式に対する形式クエリ文字列パラメーターを確認します。 指定されている場合、その操作の形式は を使用して設定されます。 + +``` +public class Service : IService +{ + [WebGet] + public string EchoWithGet(string s) + { + // if a format query string parameter has been specified, set the response format to that. If no such + // query string parameter exists the Accept header will be used + string formatQueryStringValue = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["format"]; + if (!string.IsNullOrEmpty(formatQueryStringValue)) + { + if (formatQueryStringValue.Equals("xml", System.StringComparison.OrdinalIgnoreCase)) + { + WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Xml; + } + else if (formatQueryStringValue.Equals("json", System.StringComparison.OrdinalIgnoreCase)) + { + WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json; + } + else + { + throw new WebFaultException(string.Format("Unsupported format '{0}'", formatQueryStringValue), HttpStatusCode.BadRequest); + } + } + return "You said " + s; + } +``` + + XML または JSON 以外の形式をサポートする必要がある場合は、操作に の戻り値の型があるように定義します。 操作コード内で、使用する適切な形式を決定し、次のメソッドのいずれかを使用して オブジェクトを作成します。 + +- `WebOperationContext.CreateAtom10Response` + +- `WebOperationContext.CreateJsonResponse` + +- `WebOperationContext.CreateStreamResponse` + +- `WebOperationContext.CreateTextResponse` + +- `WebOperationContext.CreateXmlResponse` + + これらの各メソッドでは、この適切な形式でコンテンツを取得してメッセージを作成します。 `WebOperationContext.Current.IncomingRequest.GetAcceptHeaderElements` メソッドは、クライアントで優先される形式の一覧を優先度が高い順に取得するために使用できます。 次の例では、`WebOperationContext.Current.IncomingRequest.GetAcceptHeaderElements` を使用して使用形式を決定し、適切な作成応答メソッドを使用して応答メッセージを作成する方法を示します。 + +``` + +public class Service : IService +{ + public Message EchoListWithGet(string list) + { + List returnList = new List(list.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)); + IList acceptHeaderElements = WebOperationContext.Current.IncomingRequest.GetAcceptHeaderElements(); + for (int x = 0; x < acceptHeaderElements.Count; x++) + { + string normalizedMediaType = acceptHeaderElements[x].MediaType.ToLowerInvariant(); + switch (normalizedMediaType) + { + case "image/jpeg": return CreateJpegResponse(returnList); + case "application/xhtml+xml": return CreateXhtmlResponse(returnList); + case "application/atom+xml": return CreateAtom10Response(returnList); + case "application/xml": return CreateXmlResponse(returnList); + case "application/json": return CreateJsonResponse(returnList); + } + } + + // Default response format is XML + return CreateXmlResponse(returnList); + } +} + +``` + +## 参照 + + + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) + [UriTemplate と UriTemplateTable](../../../../docs/framework/wcf/feature-details/uritemplate-and-uritemplatetable.md) + [WCF Web HTTP プログラミング モデルの概要](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md) + [WCF Web HTTP プログラミング オブジェクト モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-object-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md b/docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md new file mode 100644 index 00000000000..cab09d29727 --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md @@ -0,0 +1,156 @@ +--- +title: "WCF Web HTTP プログラミング モデルの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 381fdc3a-6e6c-4890-87fe-91cca6f4b476 +caps.latest.revision: 45 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 45 +--- +# WCF Web HTTP プログラミング モデルの概要 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] WEB HTTP プログラミング モデルは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での WEB HTTP サービスの構築に必要な基本的な要素を提供します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP サービスは、Web ブラウザーも含めて、最大限の幅広いクライアントからアクセスできるように設計されており、次の固有の要件があります。 + +- **URI および URI 処理** URI は、WEB HTTP サービスのデザインで中心的な役割を果たします。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルでは、 クラスおよび クラスを使用して、URI 処理機能を提供します。 + +- **GET 操作と POST 操作のサポート** WEB HTTP サービスは、データ変更やリモート呼び出しに必要なさまざまな起動用の動詞に加えて、データ取得用に GET 動詞を使用します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルは、 および を使用して、サービス操作を GET 動詞や PUT、POST、DELETE などの他の HTTP 動詞に関連付けます。 + +- **複数のデータ形式** Web スタイル サービスは SOAP メッセージ以外にもさまざまな種類のデータを処理します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルは、 および を使用して、XML ドキュメント、JSON データ オブジェクト、バイナリ コンテンツのストリーム \(イメージ、ビデオ ファイル、プレーンテキスト\) など、さまざまなデータ形式をサポートします。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の扱う範囲を拡大し、WEB HTTP サービス、AJAX および JSON サービス、配信 \(ATOM および RSS\) フィードを使用する Web スタイルのシナリオも対象とします。AJAX および JSON サービス[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[AJAX の統合と JSON のサポート](../../../../docs/framework/wcf/feature-details/ajax-integration-and-json-support.md)」を参照してください。配信[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WCF 配信の概要](../../../../docs/framework/wcf/feature-details/wcf-syndication-overview.md)」を参照してください。 + + WEB HTTP サービスから返されるデータの種類に追加の制限はありません。WEB HTTP サービス操作からは任意のシリアル化可能な型を返すことができます。WEB HTTP サービス操作は Web ブラウザーによって呼び出すことができるため、URL に指定できるデータ型に制限があります。既定でサポートされる型の詳細については、以下の「**UriTemplate クエリ文字列パラメーターと URL**」を参照してください。既定の動作は、URL で指定されたパラメーターから実際のパラメーター型への変換方法を指定する独自の T:System.ServiceModel.Dispatcher.QueryStringConverter 実装を提供することで変更できます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] + +> [!CAUTION] +> [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルで記述されたサービスでは、SOAP メッセージは使用されません。SOAP が使用されないため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって提供されるセキュリティ機能を使用することはできません。ただし、HTTPS でサービスをホストすることによってトランスポート ベースのセキュリティを使用できます。[!INCLUDE[crabout](../../../../includes/crabout-md.md)][!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティ[セキュリティの概要](../../../../docs/framework/wcf/feature-details/security-overview.md) + +> [!WARNING] +> IIS の WebDAV 拡張をインストールすると、WebDAV 拡張がすべての PUT 要求を処理しようとしたときに Web HTTP サービスが HTTP 405 エラーを返すことがあります。この問題を解決するには、WebDAV 拡張をアンインストールするか、Web サイトの WebDAV 拡張を無効にします。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][IIS および WebDav](http://learn.iis.net/page.aspx/357/webdav-for-iis-70/) + +## UriTemplate および UriTemplateTable を使用した URI 処理 + URI テンプレートには、構造的に類似する URI の大規模なセットを効率的に表現するための構文が備わっています。たとえば、テンプレート a\/{segment}\/c は、中間のセグメントの値を問わず、"a" で始まり "c" で終了する 3 つのセグメントから成る URI のセットを表しています。 + + このテンプレートによって、次のような URI が記述されます。 + +- a\/x\/c + +- a\/y\/c + +- a\/z\/c + +- など。 + + このテンプレートでは、中かっこによる表記 \("{segment}"\) で、リテラル値ではなく、変数のセグメントを示しています。 + + .NET Framework は という URI テンプレートでの作業に使用できる新しい API を提供します。`UriTemplates` を使用すると、次のことができます。 + +- 一連のパラメーターで `Bind` メソッドの 1 つを呼び出し、テンプレートに適合する*完全にクローズである URI* を生成できます。つまり、URI テンプレート内の変数がすべて、実際の値に置き換えられます。 + +- 候補の URI を使用して `Match`\(\) を呼び出すことができます。このメソッドは、テンプレートを使用して候補の URI を構成要素に分解し、テンプレート内の変数に従って分類される URI のさまざまな要素を収めたディクショナリを返します。 + +- `Bind`\(\) と `Match`\(\) は逆のもので、`Match`\( `Bind`\( x \) \) を呼び出し、最初と同じ環境に戻ることができます。 + + 包含されたテンプレートを個別に扱うことができるデータ構造内の一連の オブジェクトを追跡することが必要になる場合がよくあります \(特に、URI に基づいて要求をサービス操作にディスパッチすることが必要なサーバー上\)。 は、URI テンプレートのセットを表し、テンプレート セットと候補の URI が与えられると、最適の組み合わせを選択します。これは、特定のネットワーク スタックと結び付いていないので \([!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を含む\)、必要な場合はいつでも使用できます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス モデルは、 および を使用して、 によって記述された URI セットにサービス操作を関連付けます。サービス操作は、 または によって に関連付けられます。 および [!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[UriTemplate と UriTemplateTable](../../../../docs/framework/wcf/feature-details/uritemplate-and-uritemplatetable.md)」を参照してください。 + +## WebGet および WebInvoke 属性 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP サービスは、さまざまな呼び出し用の動詞 \(HTTP POST、PUT、DELETE など\) に加えて、データ取得のための動詞 \(HTTP GET など\) を使用します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルでは、サービスの開発者は を使用して、URI テンプレートと、各自のサービス操作に関連付けられた動詞を共に制御できます。 および を使用すると、個々の操作を URI と、それらの URI に関連付けられている HTTP メソッドにバインドする方法を制御できます。たとえば、次のコードでは、 および を追加します。 + +``` +[ServiceContract] +interface ICustomer +{ + //"View It" + + [WebGet] + Customer GetCustomer(): + + //"Do It" + [WebInvoke] + Customer UpdateCustomerName( string id, + string newName ); +} +``` + + 上記のコードを使用すると、次の HTTP 要求を行うことができます。 + + `GET /GetCustomer` + + `POST /UpdateCustomerName` + + は、既定で POST に設定されていますが、他の動詞にも使用できます。 + +``` +[ServiceContract] +interface ICustomer +{ + //"View It" -> HTTP GET + [WebGet( UriTemplate="customers/{id}" )] + Customer GetCustomer( string id ): + + //"Do It“ -> HTTP PUT + [WebInvoke( UriTemplate="customers/{id}", Method="PUT" )] + Customer UpdateCustomer( string id, Customer newCustomer ); +} +``` + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルを使用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのサンプル全体を確認するには、「[方法 : 基本的な WCF Web HTTP サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-wcf-web-http-service.md)」を参照してください。 + +## UriTemplate クエリ文字列パラメーターと URL + サービス操作に関連付けられた URL を入力することによって、Web ブラウザーから Web スタイルのサービスを呼び出すことができます。このようなサービス操作は、文字列形式で指定する必要があるクエリ文字列パラメーターを URL 内で受け取ることができます。次の表に、URL 内で渡すことができる型と、使用される形式を示します。 + +|型|Format| +|-------|------------| +||0 \- 255| +||\-128 \- 127| +||\-32768 \- 32767| +||\-2,147,483,648 \- 2,147,483,647| +||\-9,223,372,036,854,775,808 \- 9,223,372,036,854,775,807| +||0 \- 65535| +||0 \- 4,294,967,295| +||0 \- 18,446,744,073,709,551,615| +||\-3.402823e38 \- 3.402823e38 \(指数表記は要求されない\)| +||\-1.79769313486232e308 \- 1.79769313486232e308 \(指数表記は要求されない\)| +||任意の 1 文字| +||標準表記による任意の小数 \(指数なし\)| +||True または False \(大文字と小文字は区別されません\)| +||任意の文字列 \(null 文字列はサポートされず、エスケープは行われない\)| +||MM\/DD\/YYYY

MM\/DD\/YYYY HH:MM:SS \[AM|PM\]

月 日 年

月 日 年 HH:MM:SS \[AM|PM\]| +||DD.HH:MM:SS

DD \= 日、HH \= 時、MM \= 分、SS \= 秒| +||GUID。たとえば、次のようになります。

936DA01F\-9ABD\-4d9d\-80C7\-02AF85C822A8| +||MM\/DD\/YYYY HH:MM:SS MM:SS

DD \= 日、HH \= 時、MM \= 分、SS \= 秒| +|列挙体|列挙値。たとえば、次のコードのように列挙体を定義します。

`public enum Days{ Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };`

クエリ文字列に、任意の列挙値 \(またはそれぞれに対応する integer 値\) を指定できます。| +|型と文字列表現を双方向に変換できる `TypeConverterAttribute` を持つ型。|型コンバーターによって異なります。| + +## 形式と WCF WEB HTTP プログラミング モデル + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルには、さまざまなデータ形式を扱うための新機能が備わっています。 は、バインディング層で次のさまざまな種類のデータを読み書きできます。 + +- XML + +- JSON + +- 不透明なバイナリ ストリーム + + つまり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルではあらゆる種類のデータを処理できますが、 に対してプログラミングすることもできます。 + + [!INCLUDE[netfx35_short](../../../../includes/netfx35-short-md.md)] は、配信フィード \(ATOM および RSS\) だけでなく、JSON データ \(AJAX\) にも対応しています。このような機能[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[WCF Web HTTP 形式](../../../../docs/framework/wcf/feature-details/wcf-web-http-formatting.md)」、「[WCF 配信の概要](../../../../docs/framework/wcf/feature-details/wcf-syndication-overview.md)」、および「[AJAX の統合と JSON のサポート](../../../../docs/framework/wcf/feature-details/ajax-integration-and-json-support.md)」を参照してください。 + +## WCF WEB HTTP プログラミング モデルとセキュリティ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルでは WS\-\* プロトコルがサポートされないため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP サービスを保護するには、SSL を使用して HTTPS 全体でサービスを公開するしかありません。[!INCLUDE[iisver](../../../../includes/iisver-md.md)] を使用した SSL の設定[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[IIS での SSL の実装方法](http://go.microsoft.com/fwlink/?LinkId=131613)」を参照してください。 + +## WCF WEB HTTP プログラミング モデルのトラブルシューティング + を使用してチャネルを作成するために WCF WEB HTTP サービスを呼び出すと、異なる に渡されるとしても、 は構成ファイルに設定されている を使用します。 + +## 参照 + [WCF 配信](../../../../docs/framework/wcf/feature-details/wcf-syndication.md) + [WCF Web HTTP プログラミング オブジェクト モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-object-model.md) + [WCF Web HTTP プログラミング モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-web-http-programming-model.md b/docs/framework/wcf/feature-details/wcf-web-http-programming-model.md new file mode 100644 index 00000000000..85ec0d56800 --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-web-http-programming-model.md @@ -0,0 +1,52 @@ +--- +title: "WCF Web HTTP プログラミング モデル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "POX" + - "REST" + - "Web サービス プログラミング モデル [WCF]" +ms.assetid: 2312a8d3-b66e-4623-ba42-978434300c7f +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# WCF Web HTTP プログラミング モデル +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] Web HTTP プログラミング モデルを使用すると、開発者は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス操作を SOAP 以外のエンドポイントに公開できます。このセクションのトピックでは、この機能について詳しく説明します。 + +## このセクションの内容 + [WCF Web HTTP プログラミング モデルの概要](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md) + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] Web HTTP プログラミング モデルの概要を示します。 + + [WCF Web HTTP プログラミング オブジェクト モデル](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-object-model.md) + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] Web HTTP プログラミング モデルおよびその機能について説明します。 + + [方法 : 基本的な WCF Web HTTP サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-basic-wcf-web-http-service.md) + SOAP 以外のエンドポイントを公開する基本的なサービスを作成する方法について説明します。 + + [方法 : コントラクトを SOAP クライアントおよび Web クライアントに公開する](../../../../docs/framework/wcf/feature-details/how-to-expose-a-contract-to-soap-and-web-clients.md) + SOAP クライアントと SOAP 以外のクライアントの両方に同じコントラクトを公開する基本的なサービスを作成する方法について説明します。 + + [UriTemplate と UriTemplateTable](../../../../docs/framework/wcf/feature-details/uritemplate-and-uritemplatetable.md) + および を使用して URI を制御する方法について説明します。 + + [WCF WEB HTTP サービスのキャッシュ サポート](../../../../docs/framework/wcf/feature-details/caching-support-for-wcf-web-http-services.md) + WCF Web HTTP サービスのキャッシュ動作を指定する方法について説明します。 + + [WCF Web HTTP 形式](../../../../docs/framework/wcf/feature-details/wcf-web-http-formatting.md) + WCF Web HTTP サービスからの応答の形式を指定する方法について説明します。 + + [WCF Web HTTP エラー処理](../../../../docs/framework/wcf/feature-details/wcf-web-http-error-handling.md) + HTTP 状態コードやその他のユーザー定義のエラー データを含むエラーを WCF Web クライアントに返す方法について説明します。 + + [WCF サービスからの REST スタイル サービスの呼び出し](../../../../docs/framework/wcf/feature-details/calling-a-rest-style-service-from-a-wcf-service.md) + WCF サービス内から REST スタイルのサービスを呼び出す方法について説明します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-web-http-programming-object-model.md b/docs/framework/wcf/feature-details/wcf-web-http-programming-object-model.md new file mode 100644 index 00000000000..81ca33ed4ef --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-web-http-programming-object-model.md @@ -0,0 +1,115 @@ +--- +title: "WCF Web HTTP プログラミング オブジェクト モデル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ed96b5fc-ca2c-4b0d-bdba-d06b77c3cb2a +caps.latest.revision: 40 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 40 +--- +# WCF Web HTTP プログラミング オブジェクト モデル +WCF Web HTTP プログラミング モデルを使用すると、開発者は基本 HTTP 要求を使用して [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] Web サービスを公開できるようになり、SOAP は必要ありません。 WCF WEB HTTP プログラミング モデルは、既存の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 拡張モデルに基づいて構築されます。 Web HTTP プログラミング モデルでは、次のクラスが定義されます。 + + **プログラミング モデル** + +- + +- + +- + +- + + **チャネルおよびディスパッチャー インフラストラクチャ** + +- + +- + + **ユーティリティ クラスと機能拡張ポイント** + +- + +- + +- + +- + +## AspNetCacheProfileAttribute + は、サービス操作に適用された場合に、構成ファイル内の ASP.NET 出力キャッシュ プロファイルを示します。この構成ファイルを使用して ASP .NET 出力キャッシュに操作の応答がキャッシュされます。 このプロパティが受け取るパラメーターは 1 つ \(構成ファイルでキャッシュ設定を指定するキャッシュ プロファイル名\) だけです。 + +## WebGetAttribute + 属性は、サービス操作を HTTP GET 要求に応答する操作としてマークするために使用されます。 メタデータを操作の説明に追加する受信操作の動作です \( メソッドは何の処理も行いません\)。 このメタデータを操作の説明で検索する動作 \(特に \) がサービスの動作コレクションに追加されていない場合は、 を適用しても機能しません。 属性には、次の表に示すパラメーターをオプションで指定できます。 + +|パラメーター|説明| +|------------|--------| +|`BodyStyle`|属性が適用されているサービス操作との間で送受信される要求と応答をラップするかどうかを制御します。| +|`RequestFormat`|要求メッセージの書式設定方法を制御します。| +|`ResponseFormat`|応答メッセージの書式設定方法を制御します。| +|`UriTemplate`|属性が適用されているサービス操作にマップされた HTTP 要求を制御する URI テンプレートを指定します。| + +## WebHttpBinding + クラスは、 を使用して、XML、JSON、および生のバイナリ データのサポートを組み込みます。 これは、、および オブジェクトから構成されています。 は、 と組み合わせて使用するようにデザインされています。 + +## WebInvokeAttribute + 属性は 属性によく似ていますが、サービス操作を GET 以外の HTTP 要求に応答する操作としてマークするために使用されます。 メタデータを操作の説明に追加する受信操作の動作です \( メソッドは何の処理も行いません\)。 このメタデータを操作の説明で検索する動作 \(特に \) がサービスの動作コレクションに追加されていない場合は、 を適用しても機能しません。 + + 属性には、次の表に示すパラメーターをオプションで指定できます。 + +|パラメーター|説明| +|------------|--------| +|`BodyStyle`|属性が適用されているサービス操作との間で送受信される要求と応答をラップするかどうかを制御します。| +|`Method`|サービス操作がマップされる HTTP メソッドを指定します。| +|`RequestFormat`|要求メッセージの書式設定方法を制御します。| +|`ResponseFormat`|応答メッセージの書式設定方法を制御します。| +|`UriTemplate`|属性が適用されているサービス操作にマップされた GET 要求を制御する URI テンプレートを指定します。| + +## UriTemplate + クラスでは、構造が似ている URI のセットを定義できます。 テンプレートは、パスとクエリの 2 つの部分から構成されています。 パスは、スラッシュ \(\/\) で区切られた一連のセグメントから構成されています。 各セグメントには、リテラル値、変数値 \(中かっこ \[{ }\] 内に記述。必ず 1 つのセグメントと一致するよう制約\)、またはワイルドカード \(アスタリスク \[\*\] で記述。"残りのパス" に一致する\) を指定することができます。ワイルドカードは、パスの最後に指定する必要があります。 クエリ式は、すべて省略することができます。 存在する場合、クエリ式は順序なしの一連の名前\/値ペアを指定します。 クエリ式の要素には、リテラル ペア \(?x\=2\) または変数ペア \(?x\={*value*}\) を指定できます。 対になっていない値は使用できません。 は、特定の URI や URI のグループをサービス操作にマップするために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルによって内部的に使用されます。 + +## UriTemplateTable + クラスは、開発者が選択したオブジェクトにバインドされた オブジェクトの結合セットを表します。 これにより、セット内のテンプレートと候補 URI \(Uniform Resource Identifier\) を照合し、一致したテンプレートに関連付けられているデータを取得することができます。 は、特定の URI や URI のグループをサービス操作にマップするために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルによって内部的に使用されます。 + +## WebServiceHost + を拡張するため、SOAP 以外の Web スタイル サービスを容易にホストできます。 では、サービスの説明にエンドポイントが見つからない場合、サービスのベース アドレスに既定のエンドポイントを自動的に作成します。 既定の HTTP エンドポイントを作成するときに、 は、HTTP ヘルプ ページと Web サービス記述言語 \(WSDL\) GET 機能を無効にして、メタデータ エンドポイントが既定の HTTP エンドポイントに干渉しないようにします。 また、 は、 を使用するすべてのエンドポイントに必要な がアタッチされるようにもします。 最後に、 は、エンドポイントのバインディングを、安全な仮想ディレクトリで使用するときに、関連付けられたインターネット インフォメーション サービス \(IIS\) のセキュリティ設定と連携して動作するよう自動的に構成します。 + +## WebServiceHostFactory + クラスは、サービスがインターネット インフォメーション サービス \(IIS\) または Windows プロセス アクティブ化サービス \(WAS\) でホストされている場合に、 を動的に作成するために使用されます。 ホスト アプリケーションが をインスタンス化する自己ホスト型サービスとは異なり、IIS または WAS でホストされているサービスは、このクラスを使用してサービスの を作成します。 [CreateServiceHost\(Type, Uri\ メソッドは、サービスの受信要求の受信時に呼び出されます。 + +## WebHttpBehavior + クラスは、必要なフォーマッタ、操作セレクターなど、サービス モデル レイヤーで Web スタイル サービスをサポートするために必要な内容を提供します。 このパラメーターは \( と共に使用される\) エンドポイントの動作として実装され、これにより、フォーマッタと操作セレクターを各エンドポイントに指定できるようになり、さらに、同じサービス実装で SOAP エンドポイントと POX エンドポイントの両方を公開できるようになります。 + +### WebHttpBehavior の拡張 + は、仮想メソッド 、および を使用して拡張できます。 開発者は、 から派生クラスを作成し、そのメソッドをオーバーライドして既定の動作をカスタマイズすることができます。 + + は、 拡張の一例です。 によって、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] エンドポイントでブラウザー ベースの ASP.NET AJAX クライアントから HTTP 要求を受信できるようになります。 「[HTTP POST を使用する AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-using-http-post.md)」はこの機能拡張ポイントの使用例です。 + +> [!WARNING] +> を使用する場合、 は、 または 属性内でサポートされません。 + +## WebHttpDispatchOperationSelector + クラスは、 クラスおよび クラスを使用して、サービス操作に対して呼び出しをディスパッチします。 + +## 互換性 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルでは、SOAP ベースのメッセージを使用しないため、WS\-\* プロトコルをサポートしていません。 ただし、SOAP を使用するエンドポイントと SOAP を使用しないその他のエンドポイントの 2 つの異なるエンドポイントを使用して、同じコントラクトを公開できます。 例については、「[方法 : コントラクトを SOAP クライアントおよび Web クライアントに公開する](../../../../docs/framework/wcf/feature-details/how-to-expose-a-contract-to-soap-and-web-clients.md)」を参照してください。 + +## セキュリティ + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルでは WS\-\* プロトコルがサポートされないため、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] WEB HTTP プログラミング モデルで構築された Web サービスを保護するには、SSL を使用してサービスを公開するしかありません。 [!INCLUDE[iisver](../../../../includes/iisver-md.md)] を使用した SSL の設定の[!INCLUDE[crabout](../../../../includes/crabout-md.md)] 「[IIS で SSL を実装する方法](http://go.microsoft.com/fwlink/?LinkId=131613)」を参照してください。 + +## 参照 + + + + + + [WCF Web HTTP プログラミング モデルの概要](../../../../docs/framework/wcf/feature-details/wcf-web-http-programming-model-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wcf-web-http-service-help-page.md b/docs/framework/wcf/feature-details/wcf-web-http-service-help-page.md new file mode 100644 index 00000000000..b9d9ba95d96 --- /dev/null +++ b/docs/framework/wcf/feature-details/wcf-web-http-service-help-page.md @@ -0,0 +1,251 @@ +--- +title: "WCF Web HTTP サービスのヘルプ ページ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 63c7c695-44b6-4f31-bb9c-00f2763f525e +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# WCF Web HTTP サービスのヘルプ ページ +[!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] には、WCF WEB HTTP サービスの自動的なヘルプ ページが用意されています。このヘルプ ページには、各操作の説明、要求と応答の形式、およびスキーマが一覧表示されます。この機能は、既定では無効になっています。ユーザーが WCF WEB HTTP サービスを参照し、URL の最後に "\/Help" を追加する \(http:\/\/localhost:8000\/Customers\/Help など\) と、次のようなページが表示されます。 + + ![WCF REST ヘルプ ページ](../../../../docs/framework/wcf/feature-details/media/wcfresthelppagemain.png "WCFRESTHELPPAGEMAIN") + + ヘルプ ページに一覧表示されているメソッドをユーザーがクリックすると、その操作の詳細を示すページが表示され、メッセージの形式や応答例など、そのメソッドの詳細が示されます。次の図は、メソッドのヘルプ ページの例です。 + + ![WCF REST ヘルプ ページの詳細](../../../../docs/framework/wcf/feature-details/media/wcfresthelppagedetail2.png "WCFRESTHELPPAGEDETAIL2") + +## WCF Web HTTP ヘルプ ページの使用 + を使用して指定した場合は、WCF WEB HTTP ヘルプ ページに各操作の短い説明が表示されます。この属性は、適用される操作の短い説明を含む文字列を取得します。たとえば、次のコードでは、 を使用して短い説明を提供する方法を示しています。 + +``` +[OperationContract] +[WebGet(UriTemplate="/template1", BodyStyle = WebMessageBodyStyle.Bare)] +[Description("Description for GET /template1")] +SyndicationFeedFormatter GetTemplate1(); +``` + + WCF WEB HTTP ヘルプ ページを有効にするには、サービスのエンドポイントにエンドポイント動作を追加する必要があります。これは、構成で追加することも、コードで追加することもできます。WCF WEB HTTP ヘルプ ページを構成で有効化するには、`` 要素を持つエンドポイント動作を追加し、`enableHelp` を `true` に設定し、エンドポイントを追加して、エンドポイント動作を使用するようにそれを構成します。次の構成コードは、この実行方法を示しています。 + +``` + + + + + + + + + + + + +``` + + WCF Web HTTP ヘルプ ページをコードで有効化するには、サービス エンドポイントを追加し、 をエンドポイントに追加し、 を `true` に設定します。この方法を次のコードに示します。 + +``` +using (WebServiceHost host = new WebServiceHost(typeof(Service), new Uri("http://localhost:8000/Customers"))) +{ + host.AddServiceEndpoint(typeof(ICustomerCollection), new WebHttpBinding(), ""); + host.Description.Endpoints[0].Behaviors.Add(new WebHttpBehavior { EnableHelp = true }); + // ... +} +``` + + ヘルプ ページは XHTML ベースで、ページの各部分を識別するマークアップがあります。これにより、クライアントは、 またはその他の XLinq API を使用して、ページにプログラムでアクセスできます。 + +## WCF Web HTTP サービスのヘルプ ページで使用されるスキーマ + WCF Web HTTP サービスのヘルプ ページでは、次のスキーマが使用されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + データ コントラクトのシリアル化スキーマ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/web-hosting-a-queued-application.md b/docs/framework/wcf/feature-details/web-hosting-a-queued-application.md new file mode 100644 index 00000000000..631606ac148 --- /dev/null +++ b/docs/framework/wcf/feature-details/web-hosting-a-queued-application.md @@ -0,0 +1,53 @@ +--- +title: "キューに置かれたアプリケーションの Web ホスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c7a539fa-e442-4c08-a7f1-17b7f5a03e88 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# キューに置かれたアプリケーションの Web ホスト +Windows プロセス アクティブ化サービス \(WAS\) は、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをホストするアプリケーションが含まれるワーカー プロセスのアクティベーションと有効期間を管理します。 WAS プロセス モデルは HTTP の依存関係を取り除くことにより、HTTP サーバーの [!INCLUDE[iis601](../../../../includes/iis601-md.md)] プロセス モデルを一般化します。 これにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、メッセージ ベースのアクティブ化がサポートされ、特定のコンピューター上で多数のアプリケーションをホストできるホスト環境で、net.msmq や msmq.formatname などの HTTP プロトコルと非 HTTP プロトコルの両方を使用できるようになります。 + + WAS にはメッセージ キュー \(MSMQ\) アクティブ化サービスが含まれており、アプリケーションで使用されるキューのいずれかに 1 つ以上のメッセージが置かれると、キュー アプリケーションがアクティブ化されます。 MSMQ アクティブ化サービスは、既定で自動的に開始される NT サービスです。 + + WAS とその利点[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows プロセス アクティブ化サービスでのホスティング](../../../../docs/framework/wcf/feature-details/hosting-in-windows-process-activation-service.md)」を参照してください。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)] MSMQ については、「[キューの概要](../../../../docs/framework/wcf/feature-details/queues-overview.md)」を参照してください。 + +## WAS でのキュー アドレス指定 + WAS アプリケーションには URI \(Uniform Resource Identifier\) アドレスがあります。 アプリケーション アドレスは、ベース URI プレフィックスとアプリケーション固有の相対アドレス \(パス\) の 2 つの部分に分かれます。 この 2 つの部分を結合すると、アプリケーションの外部アドレスになります。 ベース URI プレフィックスは、サイト バインディングで構築され、サイト内のすべてのアプリケーションで使用されます。たとえば、“net.msmq:\/\/localhost"、"msmq.formatname:\/\/localhost"、または"net.tcp:\/\/localhost” などです。 次に、アプリケーション固有のパス フラグメント \(“\/applicationOne” など\) が取得され、ベース URI プレフィックスに追加されてアプリケーション アドレスが構築されます。これでアプリケーションの完全 URI になります。たとえば、"net.msmq:\/\/localhost\/applicationOne" などです。 + + MSMQ アクティブ化サービスは、アプリケーション URI を使用して、MSMQ アクティブ化サービスでメッセージを監視する必要のあるキューを照会します。 MSMQ アクティブ化サービスを起動すると、受信するように設定したコンピューターのすべてのパブリック キューとプライベート キューが列挙され、そのキューのメッセージが監視されます。 MSMQ アクティブ化サービスは、10 分おきに監視対象のキュー リストを更新します。 キューでメッセージが検出されると、アクティブ化サービスは、キュー名を net.msmq バインディングで一致する最長のアプリケーション URI と一致させ、アプリケーションをアクティブ化します。 + +> [!NOTE] +> アクティブ化するアプリケーションは、キュー名のプレフィックスに一致 \(最長一致\) する必要があります。 + + たとえば、msmqWebHost\/orderProcessing\/service.svc という名前のキューがあるとします。 アプリケーション 1 に仮想ディレクトリ \/msmqWebHost\/orderProcessing がありその下に service.svc が格納されており、アプリケーション 2 に仮想ディレクトリ \/msmqWebHost がありその下に orderProcessing.svc が格納されている場合、アプリケーション 1 がアクティブ化されます。 アプリケーション 1 が削除されると、アプリケーション 2 がアクティブ化されます。 + +> [!NOTE] +> キューが作成され、メッセージがそのキューに送信されても、MSMQ アクティブ化サービスがそのキュー リストを更新するまで、アプリケーションはアクティブ化されません。キュー リストが更新されるまでの時間は、キューが作成されてから最大で 10 分です。 アクティブ化サービスを再起動した場合も、キュー リストは更新されます。 + +### アドレスに対するプライベート キューとパブリック キューの影響 + MSMQ アクティブ化サービスでは、プライベート キューの監視とパブリック キューの監視が区別されません。 したがって、パブリック キューとプライベート キューを同じ名前にすることはできません。 同じ名前の場合、いずれかのキューを読み込んで、Web ホスト アプリケーションがアクティブ化される場合があります。 + +### アクティブ化のためのキュー構成 + MSMQ アクティブ化サービスは、NETWORK SERVICE として動作します。 これは、アプリケーションをアクティブ化するキューを監視するサービスです。 キューからアプリケーションをアクティブ化するようにするには、アクセス制御リスト \(ACL\) に NETWORK SERVICE アクセス用のキューを指定し、メッセージをピークする必要があります。 + +### 有害メッセージ処理 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での有害メッセージ処理は、チャネルによって行われます。チャネルは、有害メッセージを検出するだけでなく、ユーザーの構成に基づいて処置を選択します。 そのため、キューには 1 つのメッセージが存在します。 Web ホスト アプリケーションが連続的に中断されると、このメッセージは再試行キューに移動されます。 再試行サイクル遅延により指定された時点で、メッセージは再試行キューからメイン キューに移動されて再試行されます。 ただし、この場合、キューに置かれたチャネルがアクティブである必要があります。 アプリケーションが WAS により再利用される場合、メッセージは、別のメッセージがメイン キューに到着してキューに置かれたアプリケーションがアクティブ化されるまで再試行キューに残ります。 この場合の回避策は、メッセージを再試行キューからメイン キューに手動で戻し、アプリケーションを再アクティブ化することです。 + +### サブキューとシステム キューに関する注意 + WAS によりホストされるアプリケーションを、システム キュー \(システム全体の配信不能キューなど\) 内や、サブキュー \(有害サブキューなど\) 内のメッセージに基づいてアクティブ化することはできません。 これはこのバージョンの製品の制限です。 + +## 参照 + [有害メッセージ処理](../../../../docs/framework/wcf/feature-details/poison-message-handling.md) + [サービス エンドポイントとキューのアドレス指定](../../../../docs/framework/wcf/feature-details/service-endpoints-and-queue-addressing.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/web-services-protocols-interoperability-guide.md b/docs/framework/wcf/feature-details/web-services-protocols-interoperability-guide.md new file mode 100644 index 00000000000..42dc5c6780d --- /dev/null +++ b/docs/framework/wcf/feature-details/web-services-protocols-interoperability-guide.md @@ -0,0 +1,119 @@ +--- +title: "Web サービス プロトコルの相互運用性ガイド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f2981678-ebdb-433d-899b-467f7df95fb2 +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# Web サービス プロトコルの相互運用性ガイド +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、さまざまな Web サービス プロトコルを実装します。 これらのプロトコルの多くには、さまざまなオプションと拡張ポイントが用意されており、それらの実装は実装者の裁量に任されています。 このトピックでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が実装する Web サービス プロトコルの一覧を示します。 サポートされる各プロトコルの実装の詳細については、このセクションの他のトピックで説明します。 + +## WCF が実装する Web サービス プロトコル + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、チャネルを通じて Web サービス \(WS\) のインフラストラクチャ プロトコルをサポートし、コントラクト機能を通じて Web サービスのアプリケーション プロトコルをサポートします。 アプリケーション プロトコルの相互運用性は、XML スキーマ記述言語 \(XSD\) 1.0 と Web サービス記述言語 \(WSDL\) 1.1 を通じて実現されます。 + + インフラストラクチャ プロトコルの相互運用性は、WS\-\* 仕様によって提供されます。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネルには、さまざまな WS\-\* インフラストラクチャ プロトコルのサポートが用意されています。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネルは、バインド要素を使用して構成されます。 さまざまな [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] バインド要素によって実装される WS\-\* インフラストラクチャ プロトコルの完全な一覧を次の表に示します。 + + は、次の表の仕様をサポートします。 + +|仕様\/ドキュメント|Link| +|----------------|----------| +|HTTP 1.1|[RFC 2616](http://go.microsoft.com/fwlink/?LinkId=90372)| +|SOAP 1.1 HTTP バインディング|[簡易オブジェクト アクセス プロトコル \(SOAP\) 1.1](http://go.microsoft.com/fwlink/?LinkId=90520)、セクション 7| +|SOAP 1.2 HTTP バインディング|[SOAP バージョン 1.2 第 2 部: Adjuncts \(第 2 版\)](http://go.microsoft.com/fwlink/?LinkId=95329)、セクション 7| + + および は、次の表の仕様をサポートします。 + +|仕様\/ドキュメント|Link| +|----------------|----------| +|XML|[拡張マークアップ言語 \(XML\) 1.0 \(第 4 版\)](http://go.microsoft.com/fwlink/?LinkId=15139)| +|SOAP 1.1|[簡易オブジェクト アクセス プロトコル \(SOAP\) 1.1](http://go.microsoft.com/fwlink/?LinkId=96687)| +|SOAP 1.2 コア|[SOAP バージョン 1.2 第 1 部: Messaging Framework \(第 2 版\)](http://go.microsoft.com/fwlink/?LinkId=94664)| +|WS\-Addressing 2004\/08|[Web Services Addressing \(WS\-Addressing\)](http://go.microsoft.com/fwlink/?LinkId=81239)| +|W3C Web Services Addressing 1.0 \- コア|[Web Services Addressing 1.0 \- コア](http://go.microsoft.com/fwlink/?LinkId=96688)| +|W3C Web Services Addressing 1.0 \- SOAP バインディング|[Web Services Addressing 1.0 \- SOAP バインディング](http://go.microsoft.com/fwlink/?LinkId=96689)| +|W3C Web Services Addressing 1.0 \- WSDL バインディング\*|[Web Services Addressing 1.0 \- WSDL バインディング](http://go.microsoft.com/fwlink/?LinkId=96690)| +|W3C Web Services Addressing 1.0 \- メタデータ|[Web Services Addressing 1.0 \- メタデータ](http://www.w3.org/TR/ws-addr-metadata/)| +|WSDL SOAP1.1 バインディング|[Web サービス記述言語 \(WSDL\) 1.1](http://go.microsoft.com/fwlink/?LinkId=96160)| +|WSDL SOAP1.2 バインディング|[WSDL 1.1 Binding Extension for SOAP 1.2](http://go.microsoft.com/fwlink/?LinkId=96691)| + + は、次の表の仕様をサポートします。 + +|仕様\/ドキュメント|Link| +|----------------|----------| +|XOP|[XML\-binary Optimized Packaging](http://go.microsoft.com/fwlink/?LinkId=96714)| +|MTOM \+ SOAP1.2 バインディング|[SOAP Message Transmission Optimization Mechanism](http://go.microsoft.com/fwlink/?LinkId=96713)| +|MTOM SOAP 1.1 バインディング|[SOAP 1.1 Binding for MTOM 1.0](http://go.microsoft.com/fwlink/?LinkId=96712)| +|MTOM WS\-Policy アサーション|未公開| + + は、次の表の仕様をサポートします。 + +|仕様\/ドキュメント|Link| +|----------------|----------| +|WSS SOAP Message Security 1.0|[Web Services Security: SOAP Message Security 1.0](http://go.microsoft.com/fwlink/?LinkId=94684)| +|WSS: Username Token Profile 1.0|[Web Services Security UsernameToken Profile 1.0](http://go.microsoft.com/fwlink/?LinkId=95334)

Password\/@Type\=PasswordText \(既定\) が必要です。| +|WSS: X.509 Token Profile 1.0|[Web Services Security X.509 Certificate Token Profile](http://go.microsoft.com/fwlink/?LinkId=95335)| +|WSS: SAML 1.1 Token Profile 1.0|[Web Services Security: SAML Token Profile](http://go.microsoft.com/fwlink/?LinkId=96693)| +|WSS SOAP Message Security 1.1|[Web Services Security: SOAP Message Security 1.1](http://go.microsoft.com/fwlink/?LinkId=91240)| +|WSS Username Token Profile 1.1|[Web Services Security UsernameToken Profile 1.1](http://go.microsoft.com/fwlink/?LinkId=95331)

パスワード ベースのキー派生は実装していません。

Password\/@Type\=PasswordText \(既定\) が必要です。| +|WSS: X509 Token Profile 1.1|[Web Services Security X.509 Certificate Token Profile 1.1](http://go.microsoft.com/fwlink/?LinkId=95332)| +|WSS: Kerberos Token Profile 1.1|[Web Services Security Kerberos Token Profile 1.1](http://go.microsoft.com/fwlink/?LinkId=95333)| +|WSS: SAML 1.1 Token Profile 1.1|[Web Services Security SAML Token Profile 1.1](http://go.microsoft.com/fwlink/?LinkId=96694)| +|WS\-SecureConversation|[Web Services Secure Conversation Language](http://go.microsoft.com/fwlink/?LinkId=95317)| +|WS\-Trust 1.4|[Web Services Trust Language](http://go.microsoft.com/fwlink/?LinkId=169514)| +|WS\-SecurityPolicy 2005\/07|[Web Services Secure Conversation Language](http://go.microsoft.com/fwlink/?LinkId=95317)

OASIS WS\-SX 技術委員会に提出された正誤表で修正されています。

[ws\-sx message](http://go.microsoft.com/fwlink/?LinkId=96700)| +|WS\-ReliableMessaging 1.1|[リライアブル メッセージング プロトコル バージョン 1.1](../../../../docs/framework/wcf/feature-details/reliable-messaging-protocol-version-1-1.md)| + + は、次の表の仕様をサポートします。 + +|仕様\/ドキュメント|Link| +|----------------|----------| +|WS\-Coordination|[Web Services Coordination](http://go.microsoft.com/fwlink/?LinkId=95324)| +|WS\-AtomicTransaction|[Web Services Atomic Transaction](http://go.microsoft.com/fwlink/?LinkId=95323)| + + 、および の各クラスは、次のメタデータ仕様をサポートします。 + +- [XML スキーマ第 1 部: 構造第 2 版](http://go.microsoft.com/fwlink/?LinkId=3536) + +- [XML スキーマ第 2 部: データ型第 2 版](http://go.microsoft.com/fwlink/?LinkId=40138) + +- [WSDL 1.1](http://go.microsoft.com/fwlink/?LinkId=96160) + +- [WS\-Policy 1.2](http://go.microsoft.com/fwlink/?LinkId=96705) + +- [WS\-Policy 1.5](http://go.microsoft.com/fwlink/?LinkId=96706) + +- [WS\-PolicyAttachment 1.2](http://go.microsoft.com/fwlink/?LinkId=96707) + +- [WS\-MetadataExchange 1.1](http://go.microsoft.com/fwlink/?LinkId=94868) + +- [WS\-Transfer メタデータ取得のための Get](http://go.microsoft.com/fwlink/?LinkId=96708) + + さらに、次の相互運用性プロファイルが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 間で実装されます。 + +- [Basic Profile 1.1](http://go.microsoft.com/fwlink/?LinkId=69313) + +- [Simple SOAP Binding 1.0](http://go.microsoft.com/fwlink/?LinkId=96710) + +- [Basic Security Profile 1.0 草案](http://go.microsoft.com/fwlink/?LinkId=96711) + +## 参照 + [システム標準の相互運用性バインディングがサポートしている Web サービス プロトコル](../../../../docs/framework/wcf/feature-details/web-services-protocols-supported-by-system-provided-interoperability-bindings.md) + [メッセージング プロトコル](../../../../docs/framework/wcf/feature-details/messaging-protocols.md) + [データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md) + [WSDL とポリシー](../../../../docs/framework/wcf/feature-details/wsdl-and-policy.md) + [セキュリティ プロトコル](../../../../docs/framework/wcf/feature-details/security-protocols.md) + [信頼できるメッセージング プロトコル バージョン 1.0](../../../../docs/framework/wcf/feature-details/reliable-messaging-protocol-version-1-0.md) + [リライアブル メッセージング プロトコル バージョン 1.1](../../../../docs/framework/wcf/feature-details/reliable-messaging-protocol-version-1-1.md) + [トランザクション プロトコル](../../../../docs/framework/wcf/feature-details/transaction-protocols.md) + [コンテキスト交換プロトコル](../../../../docs/framework/wcf/feature-details/context-exchange-protocol.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/web-services-protocols-supported-by-system-provided-interoperability-bindings.md b/docs/framework/wcf/feature-details/web-services-protocols-supported-by-system-provided-interoperability-bindings.md new file mode 100644 index 00000000000..f0527563411 --- /dev/null +++ b/docs/framework/wcf/feature-details/web-services-protocols-supported-by-system-provided-interoperability-bindings.md @@ -0,0 +1,124 @@ +--- +title: "システム標準の相互運用性バインディングがサポートしている Web サービス プロトコル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WS-プロトコル" + - "Web サービス プロトコル" + - "Windows Communication Foundation、Web サービス プロトコル" +ms.assetid: 1f7fc4ff-30fe-4e46-adda-91caad3b06c6 +caps.latest.revision: 39 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 39 +--- +# システム標準の相互運用性バインディングがサポートしている Web サービス プロトコル +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、Web サービス仕様と呼ばれる一連の仕様をサポートする Web サービスと相互運用できるように構築されています。 相互運用性のベスト プラクティスについては、サービスの構成を簡略化する[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]3 つの相互運用可能なシステム指定のバインディングが導入されています: 、およびします。 Advancement 構造化情報標準 (OASIS) 標準では、組織との相互運用性の[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]1 つの相互運用可能なシステム指定のバインディングが含まれています: します。 メタデータの公開の[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]2 つの相互運用可能なシステム指定のバインディングが含まれています: [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/mexhttpbinding.md)と[ <> \ \>](../../../../docs/framework/configure-apps/file-schema/wcf/mexhttpsbinding.md)します。 このトピックでは、システム指定の相互運用可能なバインディングがサポートする仕様を示します。 + +## basicHttpBinding、wsHttpBinding、ws2007HttpBinding、および wsDualHttpBinding の各バインディングでサポートされる Web サービス プロトコル + +### すべてのバインディング + The [<>\>](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md), [<>\>](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md), and [<>\>](../../../../docs/framework/configure-apps/file-schema/wcf/ws2007httpbinding.md) bindings support the following protocols. + +> [!NOTE] +> メタデータの公開に使用するバインディングについては、このトピックで後述する「システム指定のメタデータ バインディング」を参照してください。 + +|カテゴリ|プロトコル|仕様と用途| +|--------------|--------------|-----------------------------| +|Transport|HTTP 1.1|[HTTP 1.1](http://go.microsoft.com/fwlink/?LinkId=84048)

`BasicHttpBinding`、`WSHttpBinding`、および `WS2007HttpBinding` は、HTTP トランスポートおよび HTTPS トランスポートを使用します。| +|メッセージング|MTOM|[MTOM](http://go.microsoft.com/fwlink/?LinkId=95326)

`basicHttpBinding`、`wsHttpBinding`、および `ws2007HttpBinding` は、MTOM (Message Transmission Optimization Mechanism) をサポートしています。 既定では使用されません。 MTOM を使用するには、`messageEncoding` 属性を `"Mtom"` に設定します。

例:

` `| +|メタデータ|WSDL 1.1|[WSDL 1.1](http://go.microsoft.com/fwlink/?LinkId=94859)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、サービスの記述に Web サービス記述言語 (WSDL) を使用します。| +|メタデータ|WS-Policy|[Ws-policy](http://go.microsoft.com/fwlink/?LinkId=94864)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ドメイン固有のアサーションと共に WS-Policy 仕様を使用して、サービス要件と機能を記述します。| +|メタデータ|WS-Policy 1.5|[Ws-policy 1.5](http://go.microsoft.com/fwlink/?LinkId=95327)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ドメイン固有のアサーションと共に WS-Policy 仕様を使用して、サービス要件と機能を記述します。| +|メタデータ|WS-PolicyAttachment|[Ws-policyattachment](http://go.microsoft.com/fwlink/?LinkId=95328)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、Web サービス記述言語 (WSDL) のさまざまなスコープでポリシー式を関連付けるために、WS-PolicyAttachment を実装しています。| +|メタデータ|WS-MetadataExchange|[Ws-metadataexchange](http://go.microsoft.com/fwlink/?LinkId=94868)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、XML スキーマ、WSDL、WS-Policy を取得するために WS-MetadataExchange が実装されています。| + +### basicHttpBinding + +|カテゴリ|プロトコル|仕様と用途| +|--------------|--------------|-----------------------------| +|メッセージング|SOAP 1.1|[SOAP 1.1](http://go.microsoft.com/fwlink/?LinkId=90520)

Basic Profile 1.1 に従って、`basicHttpBinding` 要素は SOAP 1.1 メッセージ プロトコルを実装しています。| +|セキュリティ|WSS SOAP Message Security 1.0|[WSS SOAP Message Security 1.0](http://go.microsoft.com/fwlink/?LinkId=94684)

Basic Security Profile に従って、`basicHttpBinding` 要素は、ユーザー名/パスワードおよび X.509 ベースのセキュリティを実現するために、WSS (Web Services Security) SOAP Message Security 1.0 仕様を実装しています。

` `| +|セキュリティ|WSS SOAP Message Security UsernameToken Profile 1.0|[WSS SOAP Message Security UsernameToken Profile 1.0](http://go.microsoft.com/fwlink/?LinkId=95334)

` `| +|セキュリティ|WSS SOAP Message Security X.509 証明書 Token Profile 1.0|[WSS SOAP Message Security X.509 証明書 Token Profile 1.0](http://go.microsoft.com/fwlink/?LinkId=95335)

` `| + +### wsHttpBinding、ws2007HttpBinding、および wsDualHttpBinding + +|カテゴリ|プロトコル|仕様と用途| +|--------------|--------------|-----------------------------| +|メッセージング|SOAP 1.2|[入門](http://go.microsoft.com/fwlink/?LinkId=48282)

[メッセージング フレームワーク](http://go.microsoft.com/fwlink/?LinkId=94664)

[Adjuncts (HTTP バインディングを含む)](http://go.microsoft.com/fwlink/?LinkId=95329)| +|メッセージング|Ws-addressing 2005/08|[Web Services Addressing 1.0 - コア](http://go.microsoft.com/fwlink/?LinkId=90574)

[Web Services Addressing 1.0 - SOAP](http://go.microsoft.com/fwlink/?LinkId=95330)

`wsHttpBinding`、`ws2007HttpBinding`、および `wsDualHttpBinding` は、非同期メッセージング、メッセージ相関、およびトランスポート中立のアドレス指定機構を有効にするために、W3C (World Wide Web Consortium) WS-Addressing 勧告を実装しています。

WCF は WS-Addressing ヘッダーの暗号化をサポートしていませんが、これは WS-* 仕様によって許可されています。| +|メッセージング|WS-Addressing 1.0 - メタデータ|[Ws-addressing 1.0 メタデータ](http://www.w3.org/2007/05/addressing/metadata)1.2 (既定値) に設定されると ServiceMetadata 動作のポリシーのバージョンを設定してこのプロトコルのサポートが有効になっている、1.5 に設定されると、wsdl 記述は Ws-addressing の wsdl に準拠して、wsdl 記述は ws-addressing メタデータに準拠しています。

WCF は WS-Addressing ヘッダーの暗号化をサポートしていませんが、これは WS-* 仕様によって許可されています。| +|セキュリティ|WSS SOAP Message Security 1.0|[WSS SOAP Message Security 1.0](http://go.microsoft.com/fwlink/?LinkId=94684)

`securityMode` 属性が "wsSecurityOverHttp" (既定) に設定され、`wsSecurity` 子要素を使用してパラメーターが構成されている場合に使用します。

` `| +|セキュリティ|WSS SOAP Message Security UsernameToken Profile 1.1|[WSS SOAP Message Security UsernameToken Profile 1.0](http://go.microsoft.com/fwlink/?LinkId=95331)

`wsSecurity` 要素の `authenticationMode` 属性が "Username" に設定されている場合に使用します。

` `| +|セキュリティ|WSS SOAP Message Security X.509 Certificate Token Profile 1.1|[WSS SOAP Message Security X.509 証明書トークン Profile 1.1](http://go.microsoft.com/fwlink/?LinkId=95332)

`wsSecurity` 要素の `authenticationMode` 属性が "Username"、"Certificate"、または "None" に設定されている場合に、メッセージを保護するために使用します。 また、`wsSecurity` 要素の `authenticationMode` 属性が "Certificate" に設定されている場合は、クライアント認証に使用します。

` `| +|セキュリティ|WSS SOAP Message Security Kerberos Token Profile 1.1|[WSS SOAP Message Security Kerberos トークン Profile 1.1](http://go.microsoft.com/fwlink/?LinkId=95333)

`wsSecurity` 要素の `authenticationMode` 属性が "Windows" に設定されている場合に、認証とメッセージの保護に使用します。

` `| +|セキュリティ|WS-SecureConversation|[Ws-secureconversation](http://go.microsoft.com/fwlink/?LinkId=95317)

`security/@mode` 属性が "Message" に設定され、`message/@establishSecurityContext` 属性が "true" (既定値) に設定されている場合に、セッションをセキュリティで保護するために使用します。| +|セキュリティ|WS-Trust|[WS 信頼](http://go.microsoft.com/fwlink/?LinkId=95318)

WS-SecureConversation で使用されます (上記を参照)。| +|信頼できるメッセージ機能|WS-ReliableMessaging|[Ws-reliablemessaging](http://go.microsoft.com/fwlink/?LinkId=95322)

バインディングが `reliableSession` を使用するように構成されている場合に使用します。

` `| +|トランザクション|WS-AtomicTransaction|[Ws-atomictransaction](http://go.microsoft.com/fwlink/?LinkId=95323)

トランザクション マネージャー間の通信に使用します。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のクライアントとサービスは、常にローカル トランザクション マネージャーを使用します。| +|トランザクション|WS-Coordination|[Ws-coordination 仕様](http://go.microsoft.com/fwlink/?LinkId=95324)

`flowTransactions` 属性が "Allowed" または "Required" に設定されている場合に、トランザクション コンテキストをフローするために使用します。

` `| + +## wsFederationHttpBinding および ws2007FederationHttpBinding + [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/wsfederationhttpbinding.md)と[ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/ws2007federationhttpbinding.md)サード パーティがクライアントの認証に使用されるトークンを発行、フェデレーション シナリオをサポートする要素が導入されています。 `wsHttpBinding` で使用されるプロトコルに加えて、`wsFederationHttpBinding` では次のものを使用します。 + +- トークンを発行するための `WS-Trust` + +- 最も一般的に発行されるトークンの形式のための WSS SAML (Security Assertions Markup Language) Token Profile 1.0 および 1.1 + + 例: + +``` + + + + + + + + + +``` + + [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md)します。 + +## システム指定のメタデータ バインディング + 次の表に、によって公開されているシステム指定の相互運用可能なメタデータ バインディングによってサポートされるプロトコル、 クラスです。 + +### mexHttpBinding + [ <> \> ](../../../../docs/framework/configure-apps/file-schema/wcf/mexhttpbinding.md)バインディングは、次のプロトコルをサポートします。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]このバインディングを使用して表示[メタデータの公開](../../../../docs/framework/wcf/feature-details/publishing-metadata.md)します。 + +|カテゴリ|プロトコル|仕様と用途| +|--------------|--------------|-----------------------------| +|Transport|HTTP 1.1|[HTTP 1.1](http://go.microsoft.com/fwlink/?LinkId=84048)| +|メッセージング|SOAP 1.2|[入門](http://go.microsoft.com/fwlink/?LinkId=48282)

[メッセージング フレームワーク](http://go.microsoft.com/fwlink/?LinkId=94664)

[Adjuncts (HTTP バインディングを含む)](http://go.microsoft.com/fwlink/?LinkId=95329)| +|メッセージング|Ws-addressing 2005/08|[Web Services Addressing 1.0 - コア](http://go.microsoft.com/fwlink/?LinkId=90574)

[Web Services Addressing 1.0 - SOAP](http://go.microsoft.com/fwlink/?LinkId=95330)| +|メタデータ|WS-MetadataExchange|[Ws-metadataexchange](http://go.microsoft.com/fwlink/?LinkId=94868)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、XML スキーマ、WSDL、WS-Policy を取得するために WS-MetadataExchange が実装されています。| + +### mexHttpsBinding + [<>\>](../../../../docs/framework/configure-apps/file-schema/wcf/mexhttpsbinding.md)次のプロトコルをサポートしています。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)]このバインディングを使用して表示[メタデータの公開](../../../../docs/framework/wcf/feature-details/publishing-metadata.md)します。 + +|カテゴリ|プロトコル|仕様と用途| +|--------------|--------------|-----------------------------| +|Transport|HTTP 1.1|[HTTP 1.1](http://go.microsoft.com/fwlink/?LinkId=84048)

トランスポート セキュリティは有効です。| +|メッセージング|SOAP 1.2|[入門](http://go.microsoft.com/fwlink/?LinkId=48282)

[メッセージング フレームワーク](http://go.microsoft.com/fwlink/?LinkId=94664)

[Adjuncts (HTTP バインディングを含む)](http://go.microsoft.com/fwlink/?LinkId=95329)| +|メッセージング|Ws-addressing 2005/08|[Web Services Addressing 1.0 - コア](http://go.microsoft.com/fwlink/?LinkId=90574)

[Web Services Addressing 1.0 - SOAP](http://go.microsoft.com/fwlink/?LinkId=95330)| +|メタデータ|WS-MetadataExchange|[Ws-metadataexchange](http://go.microsoft.com/fwlink/?LinkId=94868)

[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、XML スキーマ、WSDL、WS-Policy を取得するために WS-MetadataExchange が実装されています。| + +## 関連項目 + [システム指定のバインディング](../../../../docs/framework/wcf/system-provided-bindings.md) + [<>\>](../../../../docs/framework/configure-apps/file-schema/wcf/basichttpbinding.md) + [<>\>](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) + [<>\>](../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md) + [<>\>](../../../../docs/framework/configure-apps/file-schema/wcf/mexhttpsbinding.md) + [<>\>](../../../../docs/framework/configure-apps/file-schema/wcf/mexhttpbinding.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/workflow-control-endpoint.md b/docs/framework/wcf/feature-details/workflow-control-endpoint.md new file mode 100644 index 00000000000..16c411328ff --- /dev/null +++ b/docs/framework/wcf/feature-details/workflow-control-endpoint.md @@ -0,0 +1,62 @@ +--- +title: "ワークフロー コントロール エンドポイント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1b883334-1590-4fbb-b0d6-65197efe0700 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# ワークフロー コントロール エンドポイント +ワークフロー コントロール エンドポイントは、開発者が管理操作を呼び出して、 を使用してホストされているワークフロー インスタンスをリモート制御できるようにします。この機能を使用すると、一時停止、再開、終了などの管理操作をプログラムで実行することができます。 + +> [!WARNING] +> トランザクション内でワークフロー コントロール エンドポイントを使用していて、コントロールされているワークフローに アクティビティが含まれている場合、ワークフロー インスタンスはトランザクションがタイムアウトするまでハングします。 + +## ワークフロー インスタンスの管理 + [!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] は、 と呼ばれる新しいコントラクトを定義します。このコントラクトは、 でホストされるワークフロー インスタンスをリモート制御できるようにする一連の管理操作を定義します。 は、 コントラクトの実装を提供する標準のエンドポイントです。 は、管理操作を に送信するために使用するクラスです。 + + ワークフロー インスタンスには、次の状態があります。 + + Active + 完了した状態に達する前の、一時停止の状態でないときのワークフロー インスタンスの状態です。この状態にあるときのワークフロー インスタンスは、アプリケーション メッセージを実行し、処理します。 + + Suspended + この状態にある間は、まだ実行が開始されていないアクティビティや、部分的に実行されているアクティビティがある場合でも、ワークフロー インスタンスは実行されません。 + + Completed + ワークフロー インスタンスの最終的な状態です。この状態に達した後は、ワークフロー インスタンスは実行できません。 + +## IWorkflowInstanceManagement + インターフェイスでは、同期バージョンおよび非同期バージョンで、一連の管理操作が定義されます。トランザクション処理されたバージョンでは、トランザクションに対応するバインディングを使用する必要があります。次の表は、サポートされる管理操作の一覧を示します。 + +|管理操作|説明| +|----------|--------| +|Abort|ワークフロー インスタンスの実行を強制的に停止します。| +|Cancel|ワークフロー インスタンスをアクティブ状態または一時停止状態から完了状態に移行します。| +|Run|ワークフロー インスタンスに実行する機会を提供します。| +|Suspend|ワークフロー インスタンスをアクティブ状態から一時停止状態に移行します。| +|Terminate|ワークフロー インスタンスをアクティブ状態または一時停止状態から完了状態に移行します。| +|Unsuspend|ワークフロー インスタンスを一時停止状態からアクティブ状態に移行します。| +|TransactedCancel|クライアントからフローされた、またはローカルに作成されたトランザクションの下で Cancel 操作を実行します。システムでワークフロー インスタンスの永続状態が維持される場合は、ワークフロー インスタンスが、この操作の実行中に持続している必要があります。| +|TransactedRun|クライアントからフローされた、またはローカルに作成されたトランザクションの下で Run 操作を実行します。システムでワークフロー インスタンスの永続状態が維持される場合は、ワークフロー インスタンスが、この操作の実行中に持続している必要があります。| +|TransactedSuspend|クライアントからフローされた、またはローカルに作成されたトランザクションの下で Suspend 操作を実行します。システムでワークフロー インスタンスの永続状態が維持される場合は、ワークフロー インスタンスが、この操作の実行中に持続している必要があります。| +|TransactedTerminate|クライアントからフローされた、またはローカルに作成されたトランザクションの下で Terminate 操作を実行します。システムでワークフロー インスタンスの永続状態が維持される場合は、ワークフロー インスタンスが、この操作の実行中に持続している必要があります。| +|TransactedUnsuspend|クライアントからフローされた、またはローカルに作成されたトランザクションの下で Unsuspend 操作を実行します。システムでワークフロー インスタンスの永続状態が維持される場合は、ワークフロー インスタンスが、この操作の実行中に持続している必要があります。| + + コントラクトは、新しいワークフロー インスタンスを作成する手段を提供せず、既存のワークフロー インスタンスを管理する手段のみを提供します。新しいワークフロー インスタンスをリモートから作成する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフロー サービス ホストの拡張機能](../../../../docs/framework/wcf/feature-details/workflow-service-host-extensibility.md)」を参照してください。 + +## WorkflowControlEndpoint + は、固定コントラクト を持つ標準のエンドポイントです。 インスタンスにこのエンドポイントが追加されると、このエンドポイントを使用して、ホスト インスタンスによってホストされる任意のワークフロー インスタンスにコマンド操作を送信できます。標準のエンドポイント[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[標準エンドポイント](../../../../docs/framework/wcf/feature-details/standard-endpoints.md)」を参照してください。 + +## WorkflowControlClient + は、 に制御メッセージを送信できるようにするクラスです。このクラスには、トランザクション処理された操作を除き、 コントラクトでサポートされる各操作用のメソッドが格納されています。 では、アンビエント トランザクションを使用して、トランザクション処理された操作を使用する必要があるかどうかが判断されます。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/workflow-service-host-extensibility.md b/docs/framework/wcf/feature-details/workflow-service-host-extensibility.md new file mode 100644 index 00000000000..1351eddffac --- /dev/null +++ b/docs/framework/wcf/feature-details/workflow-service-host-extensibility.md @@ -0,0 +1,62 @@ +--- +title: "ワークフロー サービス ホストの拡張機能 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c0e8f7bb-cb13-49ec-852f-b85d7c23972f +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# ワークフロー サービス ホストの拡張機能 +[!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] には、ワークフロー サービスをホストするための クラスがあります。 このクラスは、マネージ アプリケーションまたは Windows サービスで、ワークフロー サービスを自己ホストするときに使用します。 また、このクラスは、インターネット インフォメーション サービス \(IIS\) または Windows プロセス アクティブ化サービス \(WAS\) を使用してワークフロー サービスをホストするときにも使用します。 クラスは、カスタムの拡張機能の追加、アイドル動作の変更、およびサービス以外のワークフロー \(メッセージング アクティビティを使用しないワークフロー\) のホストを可能にする拡張ポイントを提供します。 + +## ワークフロー サービス ホストの拡張機能 + には、 に拡張機能を追加するメソッドを提供する、 型の プロパティがあります。 各ワークフロー サービス インスタンスに拡張機能を追加するには、 メソッドを使用します。 指定されたデリゲートは、ワークフロー サービス インスタンスが作成されるとき、または永続化ストアから読み込まれるときに、新しい拡張機能を作成するために呼び出されます。 各ワークフロー サービス ホストに拡張機能を追加するには、 メソッドを使用します。追加された拡張機能の 1 つのインスタンスが、すべてのワークフロー サービス インスタンスで共有されます。 + +## ハンドルされない例外の処理 + を使用すると、ワークフロー サービス内でハンドルされない例外が発生したときに実行されるアクションを指定できます。 プロパティには、次の 値のいずれかを指定します。 + +- – ワークフロー サービス インスタンスを中止します。 + +- – 前回永続化された状態にロールバックし、ワークフロー サービス インスタンスを中断します。 これは、ワークフローが既に 1 回以上、永続化されている場合にのみ実行されます。 永続化されたことがない場合は、ワークフロー インスタンスが中止されます。 + +- – インスタンスを取り消します。 + +- – ワークフロー インスタンスを終了します。 + + この動作は、次の例に示すように、コードで構成できます。 + +```csharp +host.Description.Behaviors.Add(new WorkflowUnhandledExceptionBehavior { Action = WorkflowUnhandledExceptionAction.Abandon }); + +``` + + また、次の例のように、構成ファイルで構成することもできます。 + +```vb-c# + + + + + + + + + +``` + +## サービス以外のワークフローのホスティング + を使用すると、サービス以外のワークフロー、つまり、 アクティビティで開始されないワークフロー、またはメッセージング アクティビティを使用しないワークフローをホストできます。 ワークフロー サービスは、通常、 アクティビティで開始されます。 がワークフロー サービスに対するメッセージを受信すると、ワークフロー サービスが実行 \(または永続化\) されていない場合は、新しいワークフロー サービス インスタンスが作成されます。 ワークフローが Receive アクティビティで開始されない場合は、メッセージを受信するアクティビティがないため、このワークフローは、メッセージを送信して開始することはできません。 サービス以外のワークフローをホストするには、 から派生クラスを作成し、、および をオーバーライドします。 をオーバーライドすると、優先するインスタンスの ID を指定できます。 をオーバーライドすると、カスタムのワークフロー作成コンテキストを作成したり、既存の インスタンスを設定したりできます。 をオーバーライドすると、受信メッセージから手動でブックマークを抽出できます。 このメソッドをオーバーライドすると、WorkflowHostingEndpoint に送信されたメッセージに応答するために本文で を呼び出す必要があります。 これを呼び出さないと、 の制限を最終的に超過する可能性があります。 双方向コントラクトでは、応答を受信するために発生したクライアントのエラーのために、 の呼び出しで発生したエラーを検出できる可能性があります。 一方向コントラクトでは、 スロットルの制限を超過するまで を呼び出していないというミスを認識しない可能性があります。 詳細については、「[WorkflowHostingEndpoint 再開ブックマーク](../../../../docs/framework/windows-workflow-foundation/samples/workflowhostingendpoint-resume-bookmark.md)」を参照してください。サービス以外のワークフローの新しいインスタンスを作成するには、新しいインスタンスを作成する操作を定義するサービス コントラクトを宣言します。 作成操作は、必要なワークフロー パラメーターを渡すために、IDictionary\ を受け取る必要があります。 このコントラクトは、 の派生クラスによって、暗黙で実装されます。 ワークフローをホストする場合は、 を呼び出して の派生クラスのインスタンスをホストに追加し、 を呼び出します。 ワークフローのインスタンスを作成するには、使用するサービス コントラクト型の を作成し、 を呼び出します。 これで、サービス コントラクトに定義されている作成操作を呼び出すことができます。 + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [メッセージング アクティビティ](../../../../docs/framework/wcf/feature-details/messaging-activities.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/workflow-service-host-internals.md b/docs/framework/wcf/feature-details/workflow-service-host-internals.md new file mode 100644 index 00000000000..73babba804b --- /dev/null +++ b/docs/framework/wcf/feature-details/workflow-service-host-internals.md @@ -0,0 +1,66 @@ +--- +title: "ワークフロー サービス ホストの内部 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: af44596f-bf6a-4149-9f04-08d8e8f45250 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# ワークフロー サービス ホストの内部 + では、ワークフロー サービスのホストが提供されます。これにより、受信メッセージをリッスンして、該当するワークフロー サービス インスタンスにルーティングし、アイドル状態のワークフローのアンロードおよび永続化を制御できます。このトピックでは、WorkflowServiceHost がどのように受信メッセージを処理するかについて説明します。 + +## WorkflowServiceHost の概要 + クラスは、ワークフロー サービスをホストするために使用されます。このクラスは、受信メッセージをリッスンして、該当するサービス インスタンスにルーティングし、必要に応じて、新しいインスタンスを作成するか、永続ストレージから既存のインスタンスを読み込みます。次の図は、 の動作の概要を示しています。 + + ![WorkflowServiceHost の概要](../../../../docs/framework/wcf/feature-details/media/wfshhighlevel.gif "WFSHHighLevel") + + この図では、 は .xamlx ファイルからワークフロー サービス定義を読み込み、構成ファイルから構成情報を読み込みます。また、追跡プロファイルから追跡構成を読み込みます。 によって、ワークフロー インスタンスへの制御操作の送信を可能にするワークフロー コントロール エンドポイントが公開されます。詳細については、「[ワークフロー コントロール エンドポイント](../../../../docs/framework/wcf/feature-details/workflow-control-endpoint.md)」および「[ワークフロー管理エンドポイントのサンプル](../../../../docs/framework/windows-workflow-foundation/samples/workflow-management-endpoint-sample.md)」を参照してください。 + + によって、受信アプリケーション メッセージをリッスンするアプリケーション エンドポイントも公開されます。受信メッセージが到着すると、該当するワークフロー サービス インスタンスに送られます \(現在読み込み中の場合\)。必要に応じて、新しいワークフロー インスタンスが作成されます。既存のインスタンスが永続化されている場合は、永続ストアから読み込まれます。 + +## WorkflowServiceHost の詳細 + 次の図は、 がメッセージを処理する方法をさらに詳細に示しています。 + + ![ワークフロー サービス ホストのメッセージ フロー](../../../../docs/framework/wcf/feature-details/media/wfshmessageflow.gif "WFSHMessageFlow") + + この図には、3 つの異なるエンドポイント \(アプリケーション エンドポイント、ワークフロー コントロール エンドポイント、およびワークフローをホストするエンドポイント\) が示されています。アプリケーション エンドポイントは、特定のワークフロー インスタンスにバインドされたメッセージを受信します。ワークフロー コントロール エンドポイントは、制御操作をリッスンします。ワークフローをホストするエンドポイントは、 がサービス以外のワークフローを読み込んで実行するためのメッセージをリッスンします。この図が示すように、すべてのメッセージは、WCF ランタイム中に処理されます。ワークフロー サービス インスタンスの調整は、 プロパティを使用して実現されます。このプロパティは、同時ワークフロー サービス インスタンスの数を制限します。この調整を超過すると、新しいワークフロー サービス インスタンスの追加要求または永続化されたワークフロー インスタンスのアクティブ化の要求がキューに置かれます。キューに置かれた要求は、新規インスタンスと実行中の永続化されたインスタンスのどちらに対するものであるかにかかわらず、FIFO 順で処理されます。未処理の例外の処理方法およびアイドル状態のワークフロー サービスのアンロードおよび永続化方法を指定するホスト ポリシー情報が読み込まれます。これらのトピック[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ワークフロー サービスの未処理の例外動作を構成する方法](../../../../docs/framework/wcf/feature-details/config-workflow-unhandled-exception-workflowservicehost.md)」および「[WorkflowServiceHost を使用してアイドル動作を構成する方法](../../../../docs/framework/wcf/feature-details/how-to-configure-idle-behavior-with-workflowservicehost.md)」を参照してください。ワークフロー インスタンスは、ホスト ポリシーに従って永続化され、必要に応じて再度読み込まれます。ワークフロー永続化の詳細については、「[WorkflowServiceHost を使用して永続性を構成する方法](../../../../docs/framework/wcf/feature-details/how-to-configure-persistence-with-workflowservicehost.md)」、「[長時間のワークフロー サービスの作成](../../../../docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md)」、および「[ワークフローの永続性](../../../../docs/framework/windows-workflow-foundation//workflow-persistence.md)」を参照してください。 + + 次の図は、WorkflowServiceHost.Open が呼び出されたときの動作を示しています。 + + ![WorkflowServiceHost.Open が呼び出された場合の処理](../../../../docs/framework/wcf/feature-details/media/wfhostopen.gif "WFHostOpen") + + ワークフローが XAML から読み込まれ、アクティビティ ツリーが作成されます。 は、アクティビティ ツリーに従い、サービスの記述を作成します。構成がホストに適用されます。最後に、ホストは受信メッセージのリッスンを開始します。 + + 次の図は、CanCreateInstance が `true` に設定された場合の Receive アクティビティにバインドされたメッセージを受信したときの の動作を示しています。 + + ![ワークフロー サービス ホストがメッセージを受信した場合の処理](../../../../docs/framework/wcf/feature-details/media/wfhreceivemessagecci.gif "WFHReceiveMessageCCI") + + メッセージが到着し、WCF チャネル スタックによって処理されます。スロットルがチェックされ、関連付けクエリが実行されます。既存のインスタンスにバインドされているメッセージは配信されます。新しいインスタンスを作成する必要がある場合は、Receive アクティビティの CanCreateInstance プロパティが確認されます。true に設定されている場合、新しいインスタンスが作成され、メッセージが配信されます。 + + 次の図は、CanCreateInstance が false に設定された場合の Receive アクティビティにバインドされたメッセージを受信したときの の動作を示しています。 + + ![WorkflowServiceHost がメッセージを受信した場合の処理](../../../../docs/framework/wcf/feature-details/media/wfshreceivemessage.gif "WFSHReceiveMessage") + + メッセージが到着し、WCF チャネル スタックによって処理されます。スロットルがチェックされ、関連付けクエリが実行されます。メッセージが既存のインスタンスにバインドされている場合は \(CanCreateInstance が false に設定されているため\) インスタンスが永続ストアから読み込まれ、ブックマークが再開され、ワークフローが実行されます。 + +> [!WARNING] +> SQL Server が NamedPipe プロトコルでのみリッスンするように設定されている場合、ワークフロー サービス ホストは開きません。 + +## 参照 + [ワークフロー サービス](../../../../docs/framework/wcf/feature-details/workflow-services.md) + [ワークフロー サービスのホスティング](../../../../docs/framework/wcf/feature-details/hosting-workflow-services.md) + [ワークフロー コントロール エンドポイント](../../../../docs/framework/wcf/feature-details/workflow-control-endpoint.md) + [ワークフロー管理エンドポイントのサンプル](../../../../docs/framework/windows-workflow-foundation/samples/workflow-management-endpoint-sample.md) + [ワークフロー サービスの未処理の例外動作を構成する方法](../../../../docs/framework/wcf/feature-details/config-workflow-unhandled-exception-workflowservicehost.md) + [長時間のワークフロー サービスの作成](../../../../docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md) + [ワークフローの永続性](../../../../docs/framework/windows-workflow-foundation//workflow-persistence.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/workflow-services-overview.md b/docs/framework/wcf/feature-details/workflow-services-overview.md new file mode 100644 index 00000000000..2c466262085 --- /dev/null +++ b/docs/framework/wcf/feature-details/workflow-services-overview.md @@ -0,0 +1,72 @@ +--- +title: "ワークフロー サービスの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e536dda3-e286-441e-99a7-49ddc004b646 +caps.latest.revision: 30 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 30 +--- +# ワークフロー サービスの概要 +ワークフロー サービスは、ワークフローを使用して実装される [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ベースのサービスです。 ワーク フロー サービスは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] メッセージを送受信するメッセージ アクティビティを使用するワークフローです。 .NET Framework 4.5 では、ワークフロー内からメッセージを送受信できるようにする多数のメッセージ アクティビティが導入されています。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)] のメッセージング アクティビティ、およびさまざまなメッセージ交換パターンの実装にメッセージ アクティビティを使用できる方法については、「[メッセージング アクティビティ](../../../../docs/framework/wcf/feature-details/messaging-activities.md)」を参照してください。 + +## ワークフロー サービスを使用する利点 + アプリケーションが分散型になるにつれ、負荷を軽減させるために、個々のサービスが他のサービスを呼び出す役割を果たすようになっています。 これらの呼び出しを非同期操作として実装すると、コードがやや複雑になります。 エラー処理によって、例外処理と詳細な追跡情報の形式がさらに複雑になります。 一部のサービスには、長時間実行されることが多く、入力を待機する間に貴重なシステム リソースを占有するものがあります。 このような問題があるため、分散アプリケーションは、非常に複雑で、作成と保守が困難であることがよくあります。 ワークフローは、特に外部サービスへの呼び出しなど、非同期操作の連携を表す方法として最適です。 また、実行時間が長いビジネス プロセスを表す場合にも効率的です。 ワークフローが、分散環境でのサービス構築に役立つ資産となるのは、これらの特性があるためです。 + +## ワークフロー サービスの実装 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを実装するときは、サービスおよびサービスが送受信するデータを説明する一連のコントラクトを定義します。 データは、データ コントラクトとメッセージ コントラクトで表されます。 WCF サービスもワークフロー サービスも、サービスの説明の一環として、データ コントラクトとメッセージ コントラクトの定義を使用します。 サービス自体は、\(WSDL の形で\) メタデータを公開して、サービスの操作を説明します。 WCF では、サービス コントラクトと操作コントラクトによって、サービス、およびサービスがサポートする操作を定義します。 ただし、ワークフロー サービスでは、これらのコントラクトはビジネス プロセス自体の一部です。 これらは、コントラクト推論と呼ばれるプロセスによってメタデータとして公開されます。 ワークフロー サービスが を使用してホストされている場合は、ワークフローで見つかった一連のメッセージ アクティビティに基づいて、ワークフロー定義が確認され、コントラクトが生成されます。 具体的には、次のアクティビティとプロパティが、コントラクトの生成に使用されます。 + + アクティビティ + +- + +- + +- + +- + + アクティビティ + +- + +- + + アクティビティ + + コントラクト推論の結果は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと操作コントラクトと同じデータ構造を使用するサービスの説明になります。 この情報を使用して、ワークフロー サービス用に WSDL が公開されます。 + +> [!NOTE] +> [!INCLUDE[netfx_current_short](../../../../includes/netfx-current-short-md.md)] では、ツール サポートを追加せずに、既存のコントラクト定義を使用してワークフロー サービスを記述することはできません。 ワークフロー サービスのコントラクトは、前述のコントラクト推論プロセスによって作成されます。 ただし、メッセージ コントラクトおよびデータ コントラクトは完全にサポートされます。 + +## ワークフロー サービスと MSMQ ベースのバインディング + WCF は、2 つの MSMQ ベースのバインディングである を定義します。 MSMQ ベースのバインディングは、多くの場合、ワークフロー サービスと共に使用されます。これは、これらのサービスに、実行時間が長いという性質があるためです。 MSMQ ベースのバインディングには、MSMQ メッセージが有効と見なされる時間を指定する `ValidityDuration` プロパティがあります。 ワークフロー サービスは本質的に実行時間が長いため、ワークフロー サービスによるメッセージの処理が可能になる前に、MSMQ メッセージの有効期間が切れることがあります。 そのため、MSMQ バインディングの有効期間を適切な値に設定することが重要です。 この値は、ワークフローとそのメッセージの処理方法に基づいて選択する必要があります。 たとえば、 アクティビティがあり、これに続いて 10 分間実行されるカスタム アクティビティがあり、その後に別の アクティビティがある場合、`ValidityDuration` の適切な値は 10 分を超えることになります。 + +## ワークフロー サービスのホスティング + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと同様、ワークフロー サービスがホストされている必要があります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、 クラスを使用してサービスをホストし、ワークフロー サービスは、 を使用してサービスをホストします。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと同様に、ワークフロー サービスはさまざまな方法でホストできます。次に例を示します。 + +- マネージ [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] アプリケーション。 + +- インターネット インフォメーション サービス \(IIS\)。 + +- Windows プロセス アクティブ化サービス \(WAS\)。 + +- マネージ Windows サービス。 + + マネージ [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] アプリケーションまたはマネージ Windows サービスでホストされるワークフロー サービスは、 クラスのインスタンスを作成し、このインスタンスに、 プロパティ内のワークフロー定義を含む のインスタンスを渡します。 メッセージ アクティビティを格納するワークフロー定義は、ワークフロー サービスとして公開されます。 + + ワークフロー サービスを IIS または WAS でホストするには、ワークフロー サービス定義を格納する .xamlx ファイルを仮想ディレクトリに配置します。 既定のエンドポイント \( を使用\) は、[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] の[簡略化された構成](../../../../docs/framework/wcf/simplified-configuration.md)で自動的に作成されます。 また、Web.config ファイルを仮想ディレクトリに配置し、独自のエンドポイントを指定することもできます。 ワークフロー定義がアセンブリ内にある場合は、.svc ファイルを仮想ディレクトリに配置し、ワークフロー アセンブリを App\_Code ディレクトリに配置できます。 この .svc ファイルには、サービス ホスト ファクトリと、ワークフロー サービスを実装するクラスを指定する必要があります。 次の例に、サービス ホスト ファクトリを指定し、ワークフロー サービスを実装するクラスを指定する方法を示します。 + +``` +<%@ServiceHost Factory=" System.ServiceModel.Activities.Activation.WorkflowServiceHostFactory +Service="EchoService"%> +``` \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/workflow-services.md b/docs/framework/wcf/feature-details/workflow-services.md new file mode 100644 index 00000000000..e1a4b3c4cc9 --- /dev/null +++ b/docs/framework/wcf/feature-details/workflow-services.md @@ -0,0 +1,54 @@ +--- +title: "ワークフロー サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7b05c766-f181-425d-9a3d-2a5e150c85f7 +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# ワークフロー サービス +[!INCLUDE[netfx_current_long](../../../../includes/netfx-current-long-md.md)] では、ワークフロー ベースのサービスを XAML で宣言によって記述できます。サービスを実装するワークフローの定義、およびサービスが公開するエンドポイントの説明を、すべて XAML で実行できます。このセクションの各トピックでは、宣言によるサービスの記述をサポートするプログラミング モデルについて詳しく説明します。 + +## このセクションの内容 + [ワークフロー サービスの概要](../../../../docs/framework/wcf/feature-details/workflow-services-overview.md) + ワークフロー サービスの作成およびホストに関与するコンポーネントについて説明します。 + + [メッセージング アクティビティ](../../../../docs/framework/wcf/feature-details/messaging-activities.md) + ワークフローがメッセージを送受信できるようにするアクティビティについて説明します。 + + [方法: メッセージング アクティビティを使用してワークフロー サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-workflow-service-with-messaging-activities.md) + メッセージング アクティビティを使用してワークフロー サービスを作成する方法について説明します。 + + [方法: ワークフロー アプリケーションからサービスにアクセスする](../../../../docs/framework/wcf/feature-details/how-to-access-a-service-from-a-workflow-application.md) + ワークフロー アプリケーションからサービスを呼び出す方法について説明します。 + + [関連付け](../../../../docs/framework/wcf/feature-details/correlation.md) + 相関関係によってメッセージを相互に、またはインスタンスにマップする方法について説明します。 + + [順番を無視したメッセージの処理](../../../../docs/framework/wcf/feature-details/out-of-order-message-processing.md) + 順番を無視したメッセージを受け入れるようにサービスを構成する方法について説明します。 + + [方法: 別のワークフロー サービスを呼び出すワークフロー サービスを作成する](../../../../docs/framework/wcf/feature-details/how-to-create-a-workflow-service-that-calls-another-workflow-service.md) + 別のワークフロー サービス内からワークフロー サービスを同期的に呼び出す方法について説明します。 + + [コントラクト優先ワークフロー サービスの開発](../../../../docs/framework/windows-workflow-foundation//contract-first-workflow-service-development.md) + 既存のサービス コントラクトに基づいてワークフロー サービスを作成する方法について説明します。 + + [既存のサービス コントラクトを使用するワークフロー サービスを作成する方法](../../../../docs/framework/windows-workflow-foundation//how-to-create-a-workflow-service-that-consumes-an-existing-service-contract.md) + 既存のサービス コントラクトを使用してワークフロー サービスを作成する例を操作手順に従って説明します。 + + [ワークフロー サービスのホストの概要](../../../../docs/framework/wcf/feature-details/hosting-workflow-services-overview.md) + ワークフロー サービスのホストのさまざまな側面について説明します。 + + [ワークフロー内でのコントラクトの使用](../../../../docs/framework/wcf/feature-details/using-contracts-in-workflow.md) + コントラクトおよびコントラクト推論のさまざまな種類について説明します。 \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/working-with-certificates.md b/docs/framework/wcf/feature-details/working-with-certificates.md new file mode 100644 index 00000000000..60074898a4f --- /dev/null +++ b/docs/framework/wcf/feature-details/working-with-certificates.md @@ -0,0 +1,182 @@ +--- +title: "証明書の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "証明書 [WCF]" +ms.assetid: 6ffb8682-8f07-4a45-afbb-8d2487e9dbc3 +caps.latest.revision: 26 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 26 +--- +# 証明書の使用 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のセキュリティをプログラミングする場合、一般に X.509 デジタル証明書を使用して、クライアントとサーバーの認証、暗号化、およびメッセージのデジタル署名を行います。ここでは、X.509 デジタル証明書の機能および [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でのそれらの機能の使用方法について簡単に説明します。また、これらの概念の詳細を説明するトピックや、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と証明書を使用した一般的なタスクの実行方法が記載されたトピックへのリンクも示します。 + + 簡単に言うと、デジタル証明書は、*"公開キー基盤 \(PKI: Public Key Infrastructure\)"* の一部です。PKI は、デジタル証明書、証明機関、およびその他の登録機関から成るシステムです。登録機関では、公開キー暗号化を使用して、電子取引に関与する各当事者の有効性の検証と認証を行います。証明機関は証明書を発行します。各証明書には、*"サブジェクト"* \(証明書の発行先のエンティティ\)、有効期間 \(証明書が有効な場合\)、発行者 \(証明書を発行したエンティティ\)、公開キーなどのデータが含まれた一連のフィールドがあります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、これらの各プロパティは \(クレーム\) として処理されます。各クレームは、さらに ID と権限の 2 種類に分けられます。X.509 証明書[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[X.509 公開キー証明書](http://go.microsoft.com/fwlink/?LinkId=209952)」を参照してください。WCF のクレームと承認[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ID モデルを使用したクレームと承認の管理](../../../../docs/framework/wcf/feature-details/managing-claims-and-authorization-with-the-identity-model.md)」を参照してください。PKI 実装[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows Server 2008 R2 \- 証明書サービス](http://go.microsoft.com/fwlink/?LinkId=209949)」を参照してください。 + + 証明書の第一の機能は、他者に対して証明書の所有者の ID を認証することです。証明書は所有者の *"公開キー"* を含んでおり、所有者が秘密キーを保持しています。公開キーを使用して、証明書の所有者に送信されるメッセージを暗号化できます。秘密キーにアクセスできるのは所有者だけであるため、所有者だけが暗号化されたメッセージを復号化できます。 + + 証明書は、証明機関によって発行される必要があります。多くの場合、証明機関はサードパーティの証明書発行者です。Windows ドメインでは、そのドメインのコンピューターに対して証明書を発行する際に使用できる証明機関が含まれています。 + +## 証明書の表示 + 証明書を使用するには、多くの場合、証明書を表示し、プロパティを確認する必要があります。Microsoft 管理コンソール \(MMC: Microsoft Management Console\) スナップイン ツールを使用すると、これを簡単に行うことができます。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][方法 : MMC スナップインを使用して証明書を参照する](../../../../docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md). + +## 証明書ストア + 証明書はストアに格納されています。2 つの主要なストアがあり、さらにサブストアに分かれています。コンピューターの管理者は、MMC スナップイン ツールを使用して、両方の主要なストアを表示できます。管理者以外のユーザーは、現在のユーザー ストアだけを表示できます。 + +- **ローカル コンピューター ストア :** このストアには、コンピューター プロセス \([!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] など\) がアクセスする証明書が格納されます。クライアントに対してサーバーを認証するための証明書は、ここに格納します。 + +- **現在のユーザー ストア :** コンピューターの現在のユーザーの証明書は、通常、対話型アプリケーションによってここに配置されます。クライアント アプリケーションを作成する場合、サービスに対してユーザーを認証するための証明書は、通常、ここに配置します。 + + 上記の 2 つのストアは、さらにサブストアに分かれています。サブストアの中で、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でプログラミングするときに最も重要なものは次のとおりです。 + +- **信頼されたルート証明機関 :** このストア内の証明書を使用して、証明書チェーンを作成できます。証明書チェーンをさかのぼることで、このストア内の任意の証明機関証明書に到達できます。 + + > [!IMPORTANT] + > 証明書が信頼されたサードパーティ証明機関から発行されたものではない場合でも、ローカル コンピューターは、このストアに配置された証明書を暗黙で信頼します。したがって、発行者を完全に信頼し、かつ信頼することの結果を理解していない限り、このストアに証明書を配置しないでください。 + +- **個人 :** このストアは、コンピューターのユーザーに関連付けられた証明書に使用されます。通常、このストアは、信頼されたルート証明機関ストアにある証明機関証明書のいずれかによって発行された証明書に使用されます。また、自己発行され、アプリケーションから信頼された証明書が格納されている場合もあります。 + + 証明書ストア[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[証明書ストア](http://go.microsoft.com/fwlink/?LinkId=88912)」を参照してください。 + +### ストアの選択 + 証明書を格納する場所の選択は、サービスまたはクライアントの実行方法や実行する状況によって異なります。次の一般規則が適用されます。 + +- WCF サービスが Windows サービスでホストされる場合は、**ローカル コンピューター** ストアを使用します。ローカル コンピューター ストアに証明書をインストールするには、管理特権が必要です。 + +- サービスまたはクライアントがユーザー アカウントで実行されるアプリケーションである場合は、**現在のユーザー** ストアを使用します。 + +### ストアへのアクセス + ストアは、コンピューター上の一種のフォルダーであり、アクセス制御リスト \(ACL: Access Control List\) によって保護されています。インターネット インフォメーション サービス \(IIS: Internet Information Services\) によってホストされたサービスを作成すると、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アカウントで [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] プロセスが実行されます。このアカウントは、サービスが使用する証明書を格納するストアにアクセス可能である必要があります。各主要ストアは既定のアクセス リストで保護されていますが、これらのリストは変更できます。ストアにアクセスする別のロールを作成した場合、そのロールにアクセス許可を付与する必要があります。WinHttpCertConfig.exe ツールを使用してアクセス リストを変更する方法については、「[方法 : 開発中に使用する一時的な証明書を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development.md)」を参照してください。IIS でクライアント証明書を使用する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ASP.NET Web アプリケーションで認証用のクライアント証明書を使用して Web サービスを呼び出す方法](http://go.microsoft.com/fwlink/?LinkId=88914)」を参照してください。 + +## 信頼チェーンと証明機関 + 証明書は、各証明書がその発行元の CA にリンクされる階層構造で作成されます。このリンクは CA の証明書へのリンクになります。次に、CA の証明書は元の CA の証明書を発行した CA にリンクします。ルート CA の証明書に到達するまでこのプロセスが繰り返されます。ルート CA の証明書は本質的に信頼されています。 + + デジタル証明書を使用する場合、この階層 \(*"信頼チェーン"* とも呼ばれます\) に依存してエンティティを認証します。証明書のチェーンを表示するには、MMC スナップインを使用して、証明書をダブルクリックし、**\[証明書パス\]** タブをクリックします。証明機関の証明書チェーンをインポートする方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[方法 : 署名の検証に使用する証明機関の証明書チェーンを指定する](../../../../docs/framework/wcf/feature-details/specify-the-certificate-authority-chain-verify-signatures-wcf.md)」を参照してください。 + +> [!NOTE] +> 証明書を "信頼されたルート証明機関" 証明書ストアに配置することにより、その証明書の発行者を信頼されたルート証明機関として指定できます。 + +### 信頼チェーンの無効化 + 新しいサービスの作成時には、信頼されたルート証明書によって発行されていない証明書を使用できます。また、発行する証明書が、信頼されたルート証明機関ストアになくてもかまいません。開発だけを目的としている場合は、証明書の信頼チェーンをチェックする機構を一時的に無効にできます。これを行うには、`CertificateValidationMode` プロパティを `PeerTrust` または `PeerOrChainTrust` に設定します。これらのモードにより、証明書を自己発行するか \(ピア信頼\)、信頼チェーンに含めるかを指定できます。このプロパティは、次のどのクラスでも設定できます。 + +|クラス|プロパティ| +|---------|-----------| +||| +||| +||| +||| + + 構成を使用して、このプロパティを設定することもできます。検証モードを指定するには、次の要素を使用します。 + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-servicecertificate-element.md) + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/peerauthentication-element.md) + +- [\](../../../../docs/framework/configure-apps/file-schema/wcf/messagesenderauthentication-element.md) + +## カスタム認証 + `CertificateValidationMode` プロパティを使用すると、証明書の認証方法をカスタマイズすることもできます。既定では、レベルは `ChainTrust` に設定されています。 値を使用するには、`CustomCertificateValidatorType` 属性を証明書の検証に使用するアセンブリと型に設定することも必要です。カスタム検証を作成するには、抽象 クラスから継承する必要があります。 + + カスタム認証システムを作成する場合、オーバーライドする最も重要なメソッドは メソッドです。カスタム認証の例については、「[X.509 証明書検証](../../../../docs/framework/wcf/samples/x-509-certificate-validator.md)」のサンプルを参照してください。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][カスタム資格情報と資格情報の検証](../../../../docs/framework/wcf/extending/custom-credential-and-credential-validation.md). + +## Makecert.exe を使用した証明書チェーンの構築 + 証明書作成ツール \(Makecert.exe\) では、X.509 証明書および秘密キーと公開キーのペアを作成します。秘密キーをディスクに保存し、新しい証明書の発行と署名に使用できるため、チェーンになった証明書の階層をシミュレートできます。このツールは、サービスの開発時に支援ツールとして使用することだけを目的としています。実際の展開に使用する証明書の作成には使用しないでください。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスの開発時に、Makecert.exe を使用して信頼チェーンを構築するには、次の手順に従います。 + +#### Makecert.exe を使用して証明書チェーンを構築するには + +1. MakeCert.exe ツールを使用して、\(自己発行された\) 一時的なルート証明機関証明書を作成します。秘密キーをディスクに保存します。 + +2. この新しい証明書を使用して、公開キーを含む別の証明書を発行します。 + +3. 信頼されたルート証明機関ストアに、ルート証明機関証明書をインポートします。 + +4. 手順の詳細については、「[方法 : 開発中に使用する一時的な証明書を作成する](../../../../docs/framework/wcf/feature-details/how-to-create-temporary-certificates-for-use-during-development.md)」を参照してください。 + +## 使用する証明書の選択 + 証明書に関する一般的な質問は、どの証明書を使用するかということとその理由に関するものです。その答えは、クライアントとサービスのどちらをプログラミングするかによって異なります。以下に一般的なガイドラインを示します \(これらの質問に対する包括的な答えではありません\)。 + +### サービス証明書 + サービス証明書の第一の目的は、クライアントに対してサーバーを認証することです。クライアントがサーバーを認証するときの最初のチェックの 1 つとして、**"サブジェクト"** フィールドの値とサービスへのアクセスに使用する URI \(Uniform Resource Identifier\) が比較されます。この場合、双方の DNS が一致する必要があります。たとえば、サービスの URI が "http:\/\/www.contoso.com\/endpoint\/" の場合、**"サブジェクト"** フィールドにも値 "www.contoso.com" が含まれている必要があります。 + + このフィールドには複数の値を含めることができますが、各値の先頭にはその値を示す初期化コードが付加されます。通常、初期化コードは共通名 \(Common Name\) を表す "CN" です。たとえば、"CN \= www.contoso.com" のようになります。**"サブジェクト"** フィールドを空白にすることもできます。この場合、**"サブジェクト代替名"** フィールドに値として **DNS 名**を含めることができます。 + + また、証明書の **"目的"** フィールドの値に、適切な値 \("サーバー認証" や "クライアント認証" など\) を含める必要があります。 + +### クライアント証明書 + 通常、クライアント証明書はサードパーティ証明機関によって発行されません。通常は、"クライアント認証" という目的で、ルート証明機関によって、この証明書が現在のユーザー ストアの個人ストアに配置されます。クライアントは、相互認証が必要なときにこのような証明書を使用できます。 + +## オンラインの失効とオフラインの失効 + +### 証明書の有効期間 + すべての証明書は、*"有効期間"* と呼ばれる一定の期間にのみ有効です。有効期間は、X.509 証明書の **"Valid from"** フィールドと **"Valid to"** フィールドによって定義されています。認証時に、証明書がまだ有効期間内かどうかを確認するためのチェックが行われます。 + +### 証明書失効リスト + 有効期間中であっても、証明機関が証明書を失効させる場合があります。これは、証明書の秘密キーの侵害など、さまざまな理由によって行われます。 + + 証明書が失効した場合、失効した証明書から発生した下位のチェーンも無効になり、認証手順において信頼されなくなります。失効した証明書を検出するために、各発行者は日時が記された*"証明書失効リスト"* \(CRL\) を発行します。このリストは、オンラインの失効またはオフラインの失効を使用してチェックできます。これを使用するには、、および の各クラスの `RevocationMode` プロパティまたは `DefaultRevocationMode` プロパティを 列挙値のいずれかに設定します。すべてのプロパティの既定値は、`Online` です。 + + \([\](../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md) の\) [\](../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md) と \([\](../../../../docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md) の\) [\](../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md) の `revocationMode` 属性を使用することにより、構成でモードを設定することもできます。 + +## SetCertificate メソッド + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、認証、暗号化、またはメッセージのデジタル署名を行うために、多くの場合、サービスまたはクライアントが使用する証明書または証明書のセットを指定する必要があります。これは、X.509 証明書を表すさまざまなクラスの `SetCertificate` メソッドを使用することで、プログラムによって実行できます。`SetCertificate` メソッドを使用して証明書を指定するクラスは次のとおりです。 + +|クラス|メソッド| +|---------|----------| +||| +||| +||| +|| +|| + + `SetCertificate` メソッドを使用するには、ストアの場所とストア、証明書のフィールドを指定する "検索" の種類 \(`x509FindType` パラメーター\)、および該当のフィールドで検索する値を指定します。たとえば、次のコードでは、 インスタンスを作成し、`SetCertificate` メソッドを使用して、クライアントに対してサービスを認証する際に使用するサービス証明書を設定しています。 + + [!code-csharp[c_WorkingWithCertificates#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_workingwithcertificates/cs/source.cs#1)] + [!code-vb[c_WorkingWithCertificates#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_workingwithcertificates/vb/source.vb#1)] + +### 同じ値が含まれた複数の証明書 + ストアには、同じサブジェクト名が含まれた複数の証明書が格納されていることがあります。つまり、`x509FindType` に または を指定したときに、複数の証明書に同じ値が含まれていると、必要な証明書を区別することができないため、例外がスローされます。この状況は、`x509FindType` を に設定することによってある程度防ぐことができます。拇印フィールドには一意の値が含まれるため、このフィールドを使用することで、ストア内の特定の証明書を検索できます。ただし、この方法には欠点があります。証明書が失効したり、更新されたりした場合、拇印も失われてしまうため、`SetCertificate` メソッドは失敗します。また、証明書が有効でなくなると、認証が失敗します。このような状況が発生する可能性を軽減する方法として、`x590FindType` パラメーターを に設定し、発行者の名前を指定します。特定の発行者が必要ではない場合は、その他の 列挙値のいずれか \( など\) を設定することもできます。 + +## 構成における証明書 + 証明書は、構成を使用して設定することもできます。サービスを作成する場合、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicebehaviors.md)で証明書をはじめとする資格情報を指定します。クライアントをプログラミングする場合は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/endpointbehaviors.md)で証明書を指定します。 + +## ユーザー アカウントへの証明書のマッピング + IIS と Active Directory には、証明書を Windows ユーザー アカウントにマップできる機能があります。この機能[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ユーザー アカウントへの証明書のマッピング](http://go.microsoft.com/fwlink/?LinkId=88917)」を参照してください。 + + Active Directory のマッピングを使用する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[ディレクトリ サービス マッピングによるクライアント証明書のマッピング](http://go.microsoft.com/fwlink/?LinkId=88918)」を参照してください。 + + この機能が有効になっている場合、 クラスの プロパティを `true` に設定できます。構成では、次のコードに示すように、[\](../../../../docs/framework/configure-apps/file-schema/wcf/authentication-of-servicecertificate-element.md) 要素の `mapClientCertificateToWindowsAccount` 属性を `true` に設定できます。 + +``` + + + + + + + + + +``` + + Windows ユーザー アカウントを表すトークンに X.509 証明書をマップすると、Windows トークンを使用して保護されたリソースにアクセスできるため、このマッピングが特権の昇格と見なされます。したがって、マッピングを行う前に、ドメイン ポリシーにそのポリシーに準拠する X.509 証明書が必要となります。この要件は、*"SChannel"* のセキュリティ パッケージによって適用されます。 + + [!INCLUDE[netfx35_long](../../../../includes/netfx35-long-md.md)] 以降を使用している場合は、Windows アカウントにマッピングされる前に、証明書がドメイン ポリシーに準拠していることが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって確認されます。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の最初のリリースでは、ドメイン ポリシーを参照せずにマッピングが実行されます。そのため、マッピングが有効になっており、X.509 証明書がドメイン ポリシーを満たしていない場合は、最初のリリースの下で実行しているときには動作していた古いアプリケーションが動作しなくなる可能性があります。 + +## 参照 + + + + + [サービスおよびクライアントのセキュリティ保護](../../../../docs/framework/wcf/feature-details/securing-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/working-with-nats-and-firewalls.md b/docs/framework/wcf/feature-details/working-with-nats-and-firewalls.md new file mode 100644 index 00000000000..e6772b5bd5c --- /dev/null +++ b/docs/framework/wcf/feature-details/working-with-nats-and-firewalls.md @@ -0,0 +1,75 @@ +--- +title: "NAT とファイアウォールの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ファイアウォール [WCF]" + - "NAT [WCF]" +ms.assetid: 74db0632-1bf0-428b-89c8-bd53b64332e7 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# NAT とファイアウォールの使用 +ネットワーク接続のクライアントとサーバーには、直接開いている通信用のパスが存在しないことがよくあります。パケットは、エンドポイント コンピューター上だけでなく、ネットワーク上の中間コンピューターによってもフィルター処理、ルーティング、分析、および変換されます。ネットワーク アドレス変換 \(NAT: Network Address Translation\) とファイアウォールは、ネットワーク通信に参加できる中間アプリケーションの一般的な例です。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のトランスポートとメッセージ交換パターン \(MEP: Message Exchange Pattern\) では、NAT とファイアウォールに対する反応がそれぞれ異なります。ここでは、一般的なネットワーク トポロジで NAT とファイアウォールがどのように機能するかについて説明します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のトランスポートと MEP の特定の組み合わせに関する推奨事項は、ネットワーク上の NAT とファイアウォールに対するアプリケーションの堅牢性を向上させる上で役立ちます。 + +## NAT が通信に及ぼす影響 + NAT は、複数のコンピューターで 1 つの外部 IP アドレスを共有できるようにするために作成されました。ポート再割り当て NAT は、新しいポート番号を使用して、接続する内部 IP アドレスとポートを外部 IP アドレスに割り当てます。新しいポート番号により、NAT は、リターン トラフィックを元の通信に関連付けることができます。現在、多くのホーム ユーザーがプライベートでのみルーティング可能な IP アドレスを持ち、パケットのグローバル ルーティングを実現するために NAT に依存しています。 + + NAT は、セキュリティの境界を提供しません。ただし、一般的な NAT 構成は、内部コンピューターが直接アドレス指定されないようにします。これにより、内部コンピューターが望ましくない接続から保護されると共に、データをクライアントに非同期的に送り返す必要があるサーバー アプリケーションの作成が困難になります。NAT はパケットのアドレスを書き換え、接続が NAT コンピューターで発生しているかのように見せます。このため、サーバーがクライアントへの接続を開こうとしても失敗します。サーバーが、明らかになっているクライアントのアドレスを使用しても、クライアントのアドレスをパブリックにルーティングできないため、失敗します。サーバーが NAT アドレスを使用した場合は、該当するコンピューターにリッスンしているアプリケーションが存在しないため、接続できません。 + + 一部の NAT は、転送ルールの構成をサポートし、外部コンピューターが特定の内部コンピューターに接続できるようにします。転送ルールの構成手順は NAT によってそれぞれ異なるため、ほとんどのアプリケーションについて、NAT 構成の変更をエンド ユーザーに求めることはお勧めしません。多くのエンド ユーザーが、特定のアプリケーションに対する NAT 構成を変更できないか、変更を望まないからです。 + +## ファイアウォールが通信に及ぼす影響 + *"ファイアウォール"* とは、通過するトラフィックにルールを適用し、通過を許可するか、拒否するかを決定するソフトウェアまたはハードウェア デバイスです。ファイアウォールは、トラフィックの受信ストリームまたは送信ストリーム、あるいはこの両方を調べるように構成できます。ファイアウォールは、ネットワークの端またはエンドポイント ホストで、ネットワークのセキュリティ境界を提供します。ビジネス ユーザーは、悪質な攻撃を防ぐために従来からファイアウォールの内側にサーバーを保持しています。[!INCLUDE[wxpsp2](../../../../includes/wxpsp2-md.md)] にパーソナル ファイアウォールが導入されて以降、ファイアウォールを使用するホーム ユーザーの数も大幅に増えています。このため、接続の一端または両端に、パケットを検査するファイアウォールが存在する場合が多くなっています。 + + ファイアウォールは、パケットを調べる際の複雑さと能力の点で千差万別です。簡単なファイアウォールは、パケット内の送信元および送信先のアドレスとポートに基づいてルールを適用します。また、インテリジェント ファイアウォールもパケットの内容を調べて判断を下すことができます。これらのファイアウォールはさまざまな構成で提供され、多くの場合、特別な用途に使用されます。 + + ホーム ユーザー用ファイアウォールの一般的な構成では、以前に送信接続したことがあるコンピューター以外からの受信接続を禁止します。ビジネス ユーザー用ファイアウォールの一般的な構成では、特別に指定したポート グループを除き、すべてのポートで受信接続を禁止します。この一例としては、HTTP サービスと HTTPS サービスを提供するポート 80 とポート 443 以外のすべてのポートで接続を禁止するファイアウォールが挙げられます。管理されたファイアウォールは、ホーム ユーザーとビジネス ユーザーの両者を対象にしており、コンピューター上の信頼済みユーザーやプロセスによるファイアウォール構成の変更を許可します。管理されたファイアウォールの対象は、ネットワークの使用状況を制御する企業ポリシーが存在しないホーム ユーザーであるのがより一般的です。 + +## Teredo の使用 + Teredo は、NAT の内側にあるコンピューターの直接アドレス指定を可能にする IPv6 移行テクノロジです。Teredo は、パブリックにもグローバルにもルーティングが可能なサーバーを使用して考えられる接続をアドバタイズします。Teredo サーバーは、アプリケーション クライアントとサーバーに、接続情報を交換できる共通のミーティング ポイントを提供します。コンピューターは一時 Teredo アドレスを要求し、パケットが既存のネットワークをトンネリングされます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での Teredo のサポートには、オペレーティング システムの IPv6 と Teredo のサポートの有効化が必要です。[!INCLUDE[wxp](../../../../includes/wxp-md.md)] およびそれ以降のオペレーティング システムは Teredo をサポートします。[!INCLUDE[wv](../../../../includes/wv-md.md)] およびそれ以降のオペレーティング システムは、既定で IPv6 をサポートします。ユーザーが Teredo を有効にする必要があるだけです。[!INCLUDE[wxpsp2](../../../../includes/wxpsp2-md.md)] および [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] では、ユーザーが IPv6 と Teredo の両方を有効にする必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[Teredo の概要](http://go.microsoft.com/fwlink/?LinkId=87571)」を参照してください。 + +## トランスポートとメッセージ交換パターンの選択 + トランスポートと MEP の選択は、次の 3 つの手順から成るプロセスです。 + +1. エンドポイント コンピューターのアドレスの指定可能性を分析します。一般に、エンタープライズ サーバーは直接アドレス指定できますが、エンド ユーザーの場合は、NAT により、アドレス指定できないようになっています。エンド ユーザー間のピアツーピア シナリオなどで、両方のエンドポイントが NAT の内側にある場合は、アドレス指定を可能にする Teredo などのテクノロジが必要です。 + +2. エンドポイント コンピューターのプロトコルとポートの制限を分析します。一般にエンタープライズ サーバーは、多くのポートをブロックする強力なファイアウォールの内側にあります。ただし、多くの場合、ポート 80 \(HTTP トラフィックを許可するため\) とポート 443 \(HTTPS トラフィックを許可するため\) は開かれています。エンド ユーザーがポートを制限している可能性はほとんどありませんが、送信接続だけを許可するファイアウォールを使用している可能性があります。一部のファイアウォールでは、エンドポイントのアプリケーションによる管理が可能で、選択的に接続を開くことができます。 + +3. ネットワークのアドレス指定可能性とポートの制限によって許可されるトランスポートと MEP を計算します。 + + クライアント\/サーバー アプリケーションの一般的なトポロジでは、送信専用のファイアウォールを持ち、Teredo を使用しない NAT の内側にあるクライアントと、強力なファイアウォールを持つ直接アドレス指定が可能なサーバーを展開します。このシナリオでは、双方向 MEP を使用する TCP トランスポートと、要求\/応答 MEP を使用する HTTP トランスポートが適しています。ピアツーピア アプリケーションの一般的なトポロジでは、両方のエンドポイントを NAT とファイアウォールの内側に展開します。このシナリオと、ネットワーク トポロジが不明なシナリオでは、次の推奨事項を検討してください。 + +- 双方向トランスポートは使用しません。双方向トランスポートはより多くの接続を開くため、正常に接続できる可能性が低下します。 + +- 元の接続でのバック チャネルの確立をサポートします。双方向 TCP などでバック チャネルを使用すると、開かれる接続の数が少なくなるため、正常に接続できる可能性が向上します。 + +- エンドポイントの登録用、またはトラフィックの中継用に到達可能なサービスを使用します。Teredo サーバーなどの、グローバルに到達できる接続サービスを使用すると、ネットワーク トポロジの制限が厳しい場合やトポロジが不明な場合に正常に接続できる可能性が大幅に向上します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] における一方向、要求\/応答、双方向の各 MEP と、標準 TCP、Teredo を使用する TCP、および標準 HTTP と双方向 HTTP の各トランスポートについて次の表にまとめます。 + +|アドレスの指定可能性|サーバー \(直接指定\)|サーバー \(NAT トラバースによる直接指定\)|サーバー \(NAT\)|サーバー \(NAT トラバースによる NAT\)| +|----------------|-------------------|-------------------------------|------------------|-------------------------------| +|クライアント \(直接指定\)|トランスポートおよび MEP。|トランスポートおよび MEP。|サポートされていません。|サポートなし。| +|クライアント \(NAT トラバースによる直接指定\)|トランスポートおよび MEP。|トランスポートおよび MEP。|サポートなし。|Teredo を使用する TCP および任意の MEP。[!INCLUDE[wv](../../../../includes/wv-md.md)] には Teredo を使用する HTTP の使用をサポートするためのコンピューター全体に関するオプションが用意されています。| +|クライアント \(NAT\)|任意の一方向トランスポートおよび MEP。双方向 MEP には TCP トランスポートが必要です。|任意の一方向トランスポートおよび MEP。双方向 MEP には TCP トランスポートが必要です。|サポートなし。|サポートなし。| +|クライアント \(NAT トラバースによる NAT\)|任意の一方向トランスポートおよび MEP。双方向 MEP には TCP トランスポートが必要です。|双方向 HTTP 以外のすべてと任意の MEP。双方向 MEP には TCP トランスポートが必要です。双方向 TCP トランスポートには Teredo が必要です。[!INCLUDE[wv](../../../../includes/wv-md.md)] には Teredo を使用する HTTP の使用をサポートするためのコンピューター全体に関するオプションが用意されています。|サポートなし。|Teredo を使用する TCP および 任意の MEP。[!INCLUDE[wv](../../../../includes/wv-md.md)] には Teredo を使用する HTTP の使用をサポートするためのコンピューター全体に関するオプションが用意されています。| + +|ファイアウォールの制限|ファイアウォールを使用しないサーバー|管理されたファイアウォールを使用するサーバー|HTTP 専用のファイアウォールを使用するサーバー|送信専用のファイアウォールを使用するサーバー| +|-----------------|------------------------|----------------------------|-------------------------------|----------------------------| +|ファイアウォールを使用しないクライアント|トランスポートおよび MEP。|トランスポートおよび MEP。|任意の HTTP トランスポートおよび MEP。|サポートなし。| +|管理されたファイアウォールを使用するクライアント|任意の一方向トランスポートおよび MEP。双方向 MEP には TCP トランスポートが必要です。|任意の一方向トランスポートおよび MEP。双方向 MEP には TCP トランスポートが必要です。|任意の HTTP トランスポートおよび MEP。|サポートなし。| +|HTTP 専用のファイアウォールを使用するクライアント|任意の HTTP トランスポートおよび MEP。|任意の HTTP トランスポートおよび MEP。|任意の HTTP トランスポートおよび MEP。|サポートなし。| +|送信専用のファイアウォールを使用するクライアント|任意の一方向トランスポートおよび MEP。双方向 MEP には TCP トランスポートが必要です。|任意の一方向トランスポートおよび MEP。双方向 MEP には TCP トランスポートが必要です。|任意の HTTP トランスポートおよび任意の非双方向 MEP。|サポートなし。| \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/wsdl-and-policy.md b/docs/framework/wcf/feature-details/wsdl-and-policy.md new file mode 100644 index 00000000000..be3cc4a4aef --- /dev/null +++ b/docs/framework/wcf/feature-details/wsdl-and-policy.md @@ -0,0 +1,85 @@ +--- +title: "WSDL とポリシー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cea87440-3519-4640-8494-b8a2b0e88c84 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# WSDL とポリシー +ここでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] WSDL 1.1、WS\-Policy、および WS\-PolicyAttachment の実装の詳細、および [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって導入される追加の WS\-Policy アサーションと WSDL 1.1 拡張について説明します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、ここで説明する制約と説明に基づいて、W3C に提出された WS\-Policy 仕様と WS\-PolicyAttachment 仕様を実装しています。 + + このドキュメントでは、次の表に示すプレフィックスと名前空間を使用します。 + +|プレフィックス|Namespace| +|-------------|---------------| +|wsp \(WS\-Policy 1.2\)|http:\/\/schemas.xmlsoap.org\/ws\/2004\/09\/policy| +|wsp \(WS\-Policy 1.5\)|http:\/\/www.w3.org\/ns\/ws\-policy| +|http|http:\/\/schemas.microsoft.com\/ws\/06\/2004\/policy\/http| +|msmq|http:\/\/schemas.microsoft.com\/ws\/06\/2004\/mspolicy\/msmq| +|msf|http:\/\/schemas.microsoft.com\/ws\/2006\/05\/framing\/policy| +|mssp|http:\/\/schemas.microsoft.com\/ws\/2005\/07\/securitypolicy| +|msc|http:\/\/schemas.microsoft.com\/ws\/2005\/12\/wsdl\/contract| +|cdp|http:\/\/schemas.microsoft.com\/net\/2006\/06\/duplex| + +## WCF WSDL1.1 の拡張 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、次の WSDL1.1 拡張を使用して、コントラクト セッションの要件を表します。 + + wsdl:portType\/wsdl:operation\/@msc:isInitiating + xs:boolean は、この操作が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セッションを開始するかどうかを示します。既定値は `false` です。 + + wsdl:portType\/wsdl:operation\/@msc:isTerminating + xs:boolean は、この操作が [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セッションを終了するかどうかを示します。既定値は `false` です。 + + wsdl:portType\/wsdl:operation\/@msc:usingSession + xs:boolean は、このコントラクトでセッションを確立する必要があるかどうかを示します。 + +### SOAP 1.x HTTP バインディング トランスポートの URI + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、次の URI を使用して、WSDL 1.1、SOAP 1.1 および 1.2 のバインディング拡張要素に使用するトランスポートを示します。 + +|Transport|URI| +|---------------|---------| +|HTTP|http:\/\/schemas.xmlsoap.org\/soap\/http| +|TCP|http:\/\/schemas.microsoft.com\/soap\/tcp| +|MSMQ|http:\/\/schemas.microsoft.com\/soap\/msmq| +|名前付きパイプ|http:\/\/schemas.microsoft.com\/soap\/named\-pipe| + +## WCF で実装されるポリシー アサーション + Web サービス仕様 \(WS\-\*\) で導入されたポリシー アサーションとこのドキュメントの他のセクションに記載しているポリシー アサーションに加えて、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では次のポリシー アサーションを実装します。 + +|ポリシー アサーション|ポリシー サブジェクト|説明| +|-----------------|-----------------|--------| +|http:HttpBasicAuthentication|エンドポイント|エンドポイントは、HTTP 基本認証を使用します。| +|http:HttpDigestAuthentication|エンドポイント|エンドポイントは、HTTP ダイジェスト認証を使用します。| +|http:HttpNegotiateAuthentication|エンドポイント|エンドポイントは、HTTP ネゴシエート認証を使用します。| +|http:HttpNtlmAuthentication|エンドポイント|エンドポイントは、HTTP NTLM 認証を使用します。| +|msf:Streamed|エンドポイント|エンドポイントは、ストリーミングされたメッセージ フレームを使用します。 このアサーションは、TCP、名前付きパイプのようなトランスポートに提供されるメッセージ フレーム プロトコルと共に使用されます。| +|msf:SslTransportSecurity|エンドポイント|エンドポイントは、トランスポート層セキュリティ \(TLS\) をメッセージ フレームと共に使用します。| +|msf:WindowsTransportSecurity|エンドポイント|エンドポイントは、Security Provider Negotiation \(SPNEGO\) をメッセージ フレームと共に使用します。| +|msmq:MsmqBestEffort|エンドポイント|MSMQ はベストエフォート保証を使用します。| +|msmq:MsmqSession|エンドポイント|MSMQ はセッション保証を使用します。| +|msmq:MsmqVolatile|エンドポイント|MSMQ は揮発性です。| +|msmq:Authenticated|エンドポイント|認証が、MSMQ トランスポートと共に使用されます。| +|msmq:WindowsDomain|エンドポイント|MSMQ は Windows ドメイン認証を使用します。| +|cdp:CompositeDuplex|エンドポイント|エンドポイントは、メッセージの送受信に 2 つの個別の逆方向トランスポート接続を使用します。| +|mssp:RsaToken|入れ子|RSA キー トークンのアサーションです。 通常、この要件を満たすのは、保証する署名内でキー情報の一部として直接シリアル化される RSA キーです。| +|mssp:SslContextToken|入れ子|WS\-Trust を使用するバイナリ TLS ハンドシェイクによって取得される SecurityContextToken の使用を要求します。 入れ子になったアサーションには、sp:RequireDerivedKeys、mssp:MustNotSendCancel、mssp:RequireClientCertificate があります。| +|mssp:MustNotSendCancel|入れ子|Cancel バインディング \[WS\-Trust、WS\-SC\] を使用するセキュリティ トークン要求 \(RST\) の要求メッセージ \[WS\-Trust\] を特定の SecurityContextToken の発行者に送信しないという要件を指定します。 このアサーションが存在する場合、このような要求メッセージを発行者に送信することはできません。 このアサーションが存在しない場合、このような要求メッセージを発行者に送信できます。| +|mssp:RequireClientCertificate|入れ子|このオプション要素では、TLSNEGO プロトコルの一部としてクライアント証明書を提供するという要件を指定します。 このアサーションが存在する場合、クライアント証明書を提供する必要があります。 このアサーションが存在しない場合、クライアント証明書を提供しないでください。 このアサーションは、mssp:SslContextToken の外側で使用することはできません。| + +## 参照 + [カスタム WSDL パブリケーション](../../../../docs/framework/wcf/samples/custom-wsdl-publication.md) + [方法 : カスタム WSDL をエクスポートする](../../../../docs/framework/wcf/extending/how-to-export-custom-wsdl.md) + [方法 : カスタム WSDL をインポートする](../../../../docs/framework/wcf/extending/how-to-import-custom-wsdl.md) \ No newline at end of file diff --git a/docs/framework/wcf/feature-details/xml-and-ado-net-types-in-data-contracts.md b/docs/framework/wcf/feature-details/xml-and-ado-net-types-in-data-contracts.md new file mode 100644 index 00000000000..7aa0af4e53f --- /dev/null +++ b/docs/framework/wcf/feature-details/xml-and-ado-net-types-in-data-contracts.md @@ -0,0 +1,213 @@ +--- +title: "データ コントラクトの XML および ADO.NET の種類 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c2ce8461-3c15-4c41-8c81-1cb78f5b59a6 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# データ コントラクトの XML および ADO.NET の種類 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のデータ コントラクト モデルでは、XML を直接表す特定の型がサポートされています。 シリアライザーは、これらの型を XML にシリアル化するとき、型の XML コンテンツを書き出しますが、それ以上の処理は行いません。 サポートされている型は、 の配列 \(`XmlNode` 型自体はサポートされていません\)、および を実装した型です。 データベース プログラミングでは、 型、 型、および型指定されたデータセットが一般的に使用されます。 これらの型は `IXmlSerializable` インターフェイスを実装するので、データ コントラクト モデルでシリアル化可能です。 この型に関する考慮事項について、このトピックの最後に説明します。 + +## XML 型 + +### XmlElement + `XmlElement` 型は、その XML コンテンツを使用してシリアル化されます。 たとえば、次の型を使用するとします。 + + [!code-csharp[DataContractAttribute#4](../../../../samples/snippets/csharp/VS_Snippets_CFX/datacontractattribute/cs/overview.cs#4)] + [!code-vb[DataContractAttribute#4](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/datacontractattribute/vb/overview.vb#4)] + + これは、次のように XML にシリアル化されます。 + +``` + + + + myContents + + + +``` + + ラッパー データ メンバー要素 `` が引き続き存在している点に注意してください。 データ コントラクト モデルにはこの要素を削除する方法がありません。 このモデルを処理するシリアライザー \(\) では、このラッパー要素に特別な属性が出力されることがあります。 この特別な属性には、標準の XML スキーマ インスタンスの "nil" 属性 \(`XmlElement` を `null` に設定できるようにする属性\) や "type" 属性 \(`XmlElement` をポリモーフィックに使用できるようにする属性\) などがあります。 また、"Id"、"Ref"、"Type"、および "Assembly" は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に固有の XML 属性です。 これらの属性が出力されるのは、オブジェクト グラフの保存モードを有効にするか を使用する場合に `XmlElement` をサポートするためです \(オブジェクト グラフの保存モードの[!INCLUDE[crabout](../../../../includes/crabout-md.md)] 「[シリアル化と逆シリアル化](../../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md)」を参照してください\)。 + + `XmlElement` の配列またはコレクションを使用できます。これらは、他の配列またはコレクションとして処理されます。 つまり、コレクション全体のラッパー要素と、配列に含まれる `XmlElement` ごとに個別のラッパー要素 \(上記の例の `` と同様\) が存在することになります。 + + 逆シリアル化時には、デシリアライザーによって受信 XML から `XmlElement` が作成されます。 有効な親 は、デシリアライザーによって提供されます。 + + `XmlElement` に逆シリアル化される XML フラグメントでは、先祖要素のプレフィックス定義に依存するのではなく、使用するすべてのプレフィックスを定義しておく必要があります。 これは、`DataContractSerializer` を使用して、`DataContractSerializer` 以外の別のソースから XML にアクセスする場合にのみ考慮する必要があります。 + + `DataContractSerializer` を使用する場合、`XmlElement` の割り当てはポリモーフィックに行えますが、割り当てることができるのは 型のデータ メンバーに対してのみです。 が実装されていても、`XmlElement` をコレクション型として使用したり、 データ メンバーに割り当てることはできません。 すべてのポリモーフィックな割り当てと同様に、`DataContractSerializer` は、生成される XML にデータ コントラクト名を出力します。この場合、コントラクト名は "http:\/\/schemas.datacontract.org\/2004\/07\/System.Xml" 名前空間の "XmlElement" です。 + + `NetDataContractSerializer` を使用する場合、`XmlElement` の有効なポリモーフィック割り当て \(`Object` または `IEnumerable` への割り当て\) がすべてサポートされます。 + + `XmlElement` から派生した型がポリモーフィックに割り当てられているかどうかに関係なく、このような型と上記の 2 つのシリアライザーを一緒に使用しないでください。 + +### XmlNode の配列 + の配列の使用は、`XmlElement` の使用に非常に似ています。 `XmlNode` の配列を使用すると、`XmlElement` を使用する場合よりも高い柔軟性が得られます。 たとえば、データ メンバーがラップする要素内に複数の要素を作成できます。 データ メンバーがラップする要素内には、XML コメントなどの要素以外のコンテンツを挿入することもできます。 さらに、ラップする側のデータ メンバー要素にも属性を挿入できます。 これらはすべて、`XmlNode` の配列に `XmlNode` の特定の派生クラス \(、`XmlElement`、 など\) を追加することによって実現できます。 たとえば、次の型を使用するとします。 + + [!code-csharp[DataContractAttribute#5](../../../../samples/snippets/csharp/VS_Snippets_CFX/datacontractattribute/cs/overview.cs#5)] + [!code-vb[DataContractAttribute#5](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/datacontractattribute/vb/overview.vb#5)] + + シリアル化すると、生成される XML は次のコードのようになります。 + +``` + + + + + myContents + + + myContents + + + +``` + + データ メンバー ラッパー要素 `` には、1 つの属性、1 つのコメント、および 2 つの要素が含まれています。 これらが、シリアル化された 4 つの `XmlNode` インスタンスです。 + + 結果的に無効な XML になる `XmlNode` の配列は、シリアル化できません。 たとえば、最初のインスタンスが `XmlElement` で、次のインスタンスが という 2 つの `XmlNode` インスタンスの配列は、無効です。このシーケンスは、有効な XML インスタンスに対応していません \(属性を関連付ける場所がありません\)。 + + `XmlNode` の配列の逆シリアル化時には、ノードが作成され、そのノードに受信 XML からの情報が追加されます。 有効な親 は、デシリアライザーによって提供されます。 ラッパー データ メンバー要素にあるすべての属性を含めて、すべてのノードが逆シリアル化されます。ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] シリアライザーによってその要素に配置される属性 \(ポリモーフィック割り当てを示すための属性など\) を除きます。 XML フラグメントですべての名前空間プレフィックスを定義するときの注意点は、`XmlElement` の逆シリアル化に適用されるのと同様に、`XmlNode` の配列の逆シリアル化にも適用されます。 + + オブジェクト グラフの保存を有効にしてシリアライザーを使用した場合、オブジェクトの等価性は、個別の `XmlNode` インスタンスではなく、`XmlNode` 配列のレベルでのみ保存されます。 + + 1 つ以上のノードが `null` に設定された `XmlNode` の配列をシリアル化しないようにしてください。 配列メンバー全体を `null` にすることはできますが、配列に格納された個々の `XmlNode` を null にすることはできません。 配列メンバー全体が null の場合、ラッパー データ メンバー要素には、配列メンバー全体が null であることを示す特別な属性が含まれます。 逆シリアル化時にも、配列メンバー全体が null になります。 + + `XmlNode` の正規の配列だけが、シリアライザーによって特別に処理されます。 `XmlNode` を含む他のコレクション型として宣言されたデータ メンバーや、`XmlNode` から派生した型の配列として宣言されたデータ メンバーには、特別な処理は行われません。 このため、これらのデータ メンバーは、シリアル化に関するその他の条件のいずれかを満たしている場合を除き、通常はシリアル化できません。 + + `XmlNode` の配列の配列またはコレクションを使用できます。 コレクション全体のラッパー要素と、外側の配列またはコレクションに含まれる `XmlNode` の配列ごとに個別のラッパー要素 \(上記の例の `` と同様\) が存在することになります。 + + `IEnumerable` の `Object` または `Array` の 型のデータ メンバーに `XmlNode` インスタンスを追加しても、そのデータ メンバーが `XmlNode` インスタンスの `Array` として扱われることはありません。 配列の各メンバーは個別にシリアル化されます。 + + `DataContractSerializer` を使用する場合、`XmlNode` の配列をポリモーフィックに割り当てることができますが、その対象は `Object` 型のデータ メンバーだけです。 `IEnumerable` が実装されていても、`XmlNode` の配列をコレクション型として使用したり、`IEnumerable` データ メンバーに割り当てることはできません。 すべてのポリモーフィックな割り当てと同様に、`DataContractSerializer` は、生成される XML にデータ コントラクト名を出力します。この場合、コントラクト名は "http:\/\/schemas.datacontract.org\/2004\/07\/System.Xml" 名前空間の "ArrayOfXmlNode" です。 `DataContractSerializer` を使用する場合は、`XmlNode` 配列の有効な割り当てがサポートされます。 + +### スキーマの考慮事項 + XML 型のスキーマ マッピングの詳細については、「[データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)」を参照してください。 ここでは、重要な点の概要について説明します。 + + `XmlElement` 型のデータ メンバーは、次の匿名型を使用して定義された要素にマップされます。 + +``` + + + + + +``` + + `XmlNode` の Array 型のデータ メンバーは、次の匿名型を使用して定義された要素にマップされます。 + +``` + + + + + + +``` + +## IXmlSerializable インターフェイスを実装する型 + `IXmlSerializable` インターフェイスを実装する型は、`DataContractSerializer` で完全にサポートされます。 これらの型には、スキーマを制御するために必ず 属性を適用する必要があります。 + + `IXmlSerializable` を実装する型には、任意のコンテンツを表す型、1 つの要素を表す型、および従来の 型の 3 種類があります。 + +- コンテンツ型では、`XmlSchemaProviderAttribute` 属性によって指定されたスキーマ プロバイダー メソッドが使用されます。 このメソッドから `null` が返されることはなく、属性の プロパティは既定値 `false` のままになります。 これは、`IXmlSerializable` 型の最も一般的な使用方法です。 + +- 要素型は、`IXmlSerializable` 型が自身のルート要素名を制御する必要があるときに使用します。 型を要素型としてマークするには、 属性の プロパティを `true` に設定するか、スキーマ プロバイダー メソッドから null を返します。 スキーマ プロバイダー メソッドの使用は、要素型ではオプションです。`XmlSchemaProviderAttribute` でメソッド名の代わりに null を指定できます。 ただし、`IsAny` が `true` で、スキーマ プロバイダー メソッドが指定されている場合、メソッドは null を返す必要があります。 + +- 従来の 型は、`XmlSchemaProviderAttribute` 属性でマークされていない `IXmlSerializable` 型です。 これらの型は、スキーマ生成に関して メソッドに依存しています。 以前のバージョンの .NET Framework では、このパターンが `DataSet` 型に使用され、型指定されたデータセットからクラスが派生されます。ただし、現在、このパターンは使用されなくなっており、従来の型に対応することだけを目的としてサポートされています。 このパターンに依存せず、必ず `XmlSchemaProviderAttribute` を `IXmlSerializable` 型に適用してください。 + +### IXmlSerializable コンテンツ型 + `IXmlSerializable` を実装しており、以前に定義したコンテンツ型である型のデータ メンバーをシリアル化すると、シリアライザーはそのデータ メンバーのラッパー要素を書き込み、 メソッドに制御を渡します。 実装により、ラッパー要素に属性が追加されるなど、任意の XML が書き込まれることがあります。 `WriteXml` の実行後、シリアライザーは要素を閉じます。 + + `IXmlSerializable` を実装しており、以前に定義したコンテンツ型である型のデータ メンバーを逆シリアル化すると、デシリアライザーはそのデータ メンバーのラッパー要素に XML リーダーを配置し、 メソッドに制御を渡します。 このメソッドは、開始タグと終了タグを含む、要素全体を読み取る必要があります。 `ReadXml` コードでは、要素が空の場合も忘れずに処理してください。 また、`ReadXml` の実装では、特定の方法で名前が付けられたラッパー要素に依存しないようにしてください。 シリアライザーによって選択される名前は、異なる場合があります。 + + `IXmlSerializable` コンテンツ型は、たとえば 型のデータ メンバーなどに、ポリモーフィックに割り当てることができます。 また、型インスタンスを null にすることもできます。 さらに、`IXmlSerializable` 型は、オブジェクト グラフの保存を有効にして で使用することも可能です。 これらのすべての機能を実現するには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] シリアライザーが特定の属性 \(XML スキーマ インスタンス名前空間の "nil" と "type"、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 固有の名前空間の "Id"、"Ref"、"Type"、および "Assembly"\) をラッパー要素に追加する必要があります。 + +#### ReadXml を実装するときに無視する属性 + `ReadXml` コードに制御を渡す前に、デシリアライザーは、XML 要素を調べ、前述の特別な XML 属性を検出し、その属性に従って動作します。 たとえば、"nil" が `true` の場合は、null 値が逆シリアル化され、`ReadXml` は呼び出されません。 ポリモーフィズムが検出された場合は、要素のコンテンツが別の型と同様に逆シリアル化されます。 ポリモーフィックに割り当てられた型の `ReadXml` 実装が呼び出されます。 どの場合も、これらの特別な属性がデシリアライザーによって処理されるため、`ReadXml` 実装ではこれらの属性を無視する必要があります。 + +### IXmlSerializable コンテンツ型のスキーマに関する考慮事項 + `IXmlSerializable` コンテンツ型のスキーマをエクスポートすると、スキーマ プロバイダー メソッドが呼び出されます。 このスキーマ プロバイダー メソッドには、 が渡されます。 このメソッドは、有効なスキーマをスキーマ セットに追加できます。 スキーマ セットには、スキーマをエクスポートした時点で既に認識されていたスキーマが格納されます。 スキーマ プロバイダー メソッドは、スキーマ セットに項目を追加する必要があるときに、適切な名前空間を持つ がそのセットに既に存在するかどうかを確認する必要があります。 存在する場合、スキーマ プロバイダー メソッドは新しい項目を既存の `XmlSchema` に追加する必要があります。 存在しない場合、新しい `XmlSchema` インスタンスを作成する必要があります。 これは、`IXmlSerializable` 型の配列を使用する場合に重要です。 たとえば、`IXmlSerializable` 型を名前空間 "B" の "A" 型としてエクスポートする場合、スキーマ プロバイダー メソッドが呼び出される前に、"B" が "ArrayOfA" 型を保持するためのスキーマがスキーマ セットに既に存在している可能性があります。 + + 型を に追加する以外に、コンテンツ型のスキーマ プロバイダー メソッドは null 以外の値を返す必要があります。 このメソッドは、特定の `IXmlSerializable` 型で使用するスキーマ型の名前を指定する を返すことができます。 この修飾名は、その型のデータ コントラクト名および名前空間としても使用されます。 スキーマ プロバイダー メソッドは、スキーマ セットにまだ存在していない型であっても、復帰時に返すことができます。 ただし、関連するすべての型がエクスポートされる \( の関連するすべての型に対して メソッドが呼び出され、 プロパティにアクセスする\) までに、その型がスキーマ セットに存在している必要があります。 関連するすべての `Export` 呼び出しが実行される前に `Schemas` プロパティにアクセスすると、 が発生する可能性があります。 エクスポート プロセス[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[クラスからのスキーマのエクスポート](../../../../docs/framework/wcf/feature-details/exporting-schemas-from-classes.md)」を参照してください。 + + スキーマ プロバイダー メソッドは、使用する を返すこともできます。 その型は、匿名の場合とそうでない場合があります。 匿名の場合、`IXmlSerializable` 型のスキーマは、`IXmlSerializable` 型がデータ メンバーとして使用されるたびに匿名型としてエクスポートされます。 `IXmlSerializable` 型には、データ コントラクト名と名前空間が引き続き保持されます \(決定方法は、「[データ コントラクト名](../../../../docs/framework/wcf/feature-details/data-contract-names.md)」で説明されているとおりです。ただし、 属性を使用して名前をカスタマイズすることはできません\)。匿名でない場合、型は `XmlSchemaSet` に含まれている型のいずれかである必要があります。 これは、型の `XmlQualifiedName` を返す場合と同じです。 + + さらに、型のグローバル要素宣言がエクスポートされます。 型に 属性が適用されていない場合、その要素にはデータ コントラクトと同じ名前と名前空間が使用され、その "nillable" プロパティは true に設定されます。 ただし、スキーマ名前空間 \("http:\/\/www.w3.org\/2001\/XMLSchema"\) だけは例外です。型のデータ コントラクトがこの名前空間にある場合は、スキーマ名前空間に新しい要素を追加することが禁止されているため、対応するグローバル要素は、空白の名前空間に属することになります。 型に `XmlRootAttribute` 属性が適用されている場合、グローバル要素宣言は、、および の各プロパティを使用してエクスポートされます。 `XmlRootAttribute` が適用された場合の既定値は、データ コントラクト名、空白の名前空間、および true に設定された "nillable" です。 + + 同じグローバル要素宣言の規則が、従来のデータセット型に適用されます。 `XmlRootAttribute` は、カスタム コードによって追加されたグローバル要素宣言をオーバーライドできません。これには、スキーマ プロバイダー メソッドを使用して `XmlSchemaSet` に追加された場合と、従来のデータセット型に対して `GetSchema` を使用して追加された場合があります。 + +### IXmlSerializable 要素型 + `IXmlSerializable` 要素型には、`true` に設定された `IsAny` プロパティか、`null` を返すスキーマ プロバイダー メソッドのいずれかが含まれています。 + + 要素型のシリアル化と逆シリアル化は、コンテンツ型のシリアル化と逆シリアル化に非常に似ています。 ただし、重要な違いがいくつかあります。 + +- `WriteXml` の実装では、要素 \(これには複数の子要素が含まれている可能性もありますが\) を 1 つだけ出力することが想定されています。 この 1 つの要素の外側にある属性、複数の兄弟要素、またはこれらが混在したコンテンツを出力することはできません。 要素は空であってもかまいません。 + +- `ReadXml` の実装では、ラッパー要素の読み取りは想定されていません。 読み取ることが想定されているのは、`WriteXml` で生成される要素 1 つのみです。 + +- 要素型を一様にシリアル化する場合 \(データ コントラクトのデータ メンバーとしてシリアル化する場合など\) は、コンテンツ型の場合と同様に、`WriteXml` を呼び出す前にラッパー要素が出力されます。 ただし、`DataContractSerializer` コンストラクターまたは `NetDataContractSerializer` コンストラクターによるシリアライザーの構築時にルート名と名前空間が明示的に指定されていない限り、トップ レベルで要素型をシリアル化しても、通常は `WriteXml` で書き出される要素を囲むラッパー要素が出力されることはありません。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)] [シリアル化と逆シリアル化](../../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md). + +- 構築時にルート名と名前空間を指定せずにトップ レベルで要素型をシリアル化した場合、 では基本的に何も実行されず、 によって `WriteXml` が呼び出されます。 このモードでは、シリアル化されるオブジェクトは null にできず、ポリモーフィックに割り当てることができません。 また、オブジェクト グラフの保存を有効化できず、`NetDataContractSerializer` も使用できません。 + +- 構築時にルート名と名前空間を指定せずにトップ レベルで要素型を逆シリアル化したときに、要素の先頭を検出できた場合は、 が `true` を返します。 `verifyObjectName` パラメーターが `true` に設定されている は、実際にオブジェクトを読み取る前の動作が `IsStartObject` と同様です。 その後、`ReadObject` は制御を `ReadXml` メソッドに渡します。 + + 要素型の場合も、エクスポートされるスキーマは、前のセクションで説明した `XmlElement` 型に対するスキーマと同じです。ただし、スキーマ プロバイダー メソッドは、コンテンツ型と同様、追加のスキーマを に追加できます。 要素型には `XmlRootAttribute` 属性を使用することはできないので、グローバル要素宣言は要素型に対して出力されません。 + +### XmlSerializer との相違点 + `IXmlSerializable` インターフェイス、`XmlSchemaProviderAttribute` 属性、および `XmlRootAttribute` 属性は、 でも認識されます。 ただし、データ コントラクト モデルでの処理方法に違いがあります。 重要な違いを以下にまとめます。 + +- スキーマ プロバイダー メソッドは、`XmlSerializer` で使用できるようにするためにパブリックにする必要がありますが、データ コントラクト モデルで使用するためにパブリックにする必要はありません。 + +- スキーマ プロバイダー メソッドは、データ コントラクト モデルで `IsAny` が true の場合に呼び出されますが、`XmlSerializer` では呼び出されません。 + +- コンテンツ型または従来のデータセット型に `XmlRootAttribute` 属性がない場合、`XmlSerializer` は、グローバル要素宣言を空白の名前空間にエクスポートします。 データ コントラクト モデルで通常使用される名前空間は、前に説明したとおりデータ コントラクトの名前空間です。 + + 両方のシリアル化技術で使用する型を作成する場合には、これらの違いに注意してください。 + +### IXmlSerializable スキーマのインポート + `IXmlSerializable` 型から生成されたスキーマをインポートする場合、次のような状況が考えられます。 + +- 生成されたスキーマが、「[データ コントラクト スキーマの参照](../../../../docs/framework/wcf/feature-details/data-contract-schema-reference.md)」に記載された有効なデータ コントラクト スキーマである場合があります。 この場合は、スキーマを通常どおりにインポートでき、通常のデータ コントラクト型が生成されます。 + +- 生成されたスキーマが、有効なデータ コントラクト スキーマではない場合があります。 たとえば、スキーマ プロバイダー メソッドによって、データ コントラクト モデルでサポートされていない XML 属性を含むスキーマが生成されることがあります。 この場合、スキーマを `IXmlSerializable` 型としてインポートできます。 このインポート モードは、既定では有効化されていませんが、たとえば、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) の `/importXmlTypes` コマンド ライン スイッチを使用することによって、簡単に有効化できます。 詳細については、「[クラスを作成するためのスキーマのインポート](../../../../docs/framework/wcf/feature-details/importing-schema-to-generate-classes.md)」を参照してください。 型インスタンスを処理するには、XML を直接操作する必要があります。 `XmlSerializer` の使用方法に関するトピックを参照し、より広い範囲のスキーマをサポートする別のシリアル化技術を使用することを検討することもできます。 + +- 新しい型を生成する代わりに、プロキシ内の既存の `IXmlSerializable` 型を再利用できます。 この場合、「型を作成するためのスキーマのインポート」で説明する参照型の機能を使用して、再利用する型を示すことができます。 これは、Svcutil.exe で `/reference` スイッチを使用して、再利用する型を含むアセンブリを指定することに相当します。 + +## データ コントラクトでの任意の XML の表現 + `XmlElement` 型、`XmlNode` の配列、および `IXmlSerializable` 型を使用すると、任意の XML をデータ コントラクト モデルに挿入できます。 `DataContractSerializer` と `NetDataContractSerializer` は、プロセスには介入せずに、使用している XML ライターにこの XML コンテンツを渡します。 ただし、XML ライターは、出力する XML に対して特定の制限を適用することがあります。 次に重要な例を具体的に示します。 + +- 通常、XML ライターでは、別のドキュメントの書き込み中の XML ドキュメントの宣言 \(\ など\) は許可されません。 完全な XML ドキュメントを取得して、それを `XmlNode` データ メンバーの `Array` としてシリアル化したりすることはできません。 これを実行するには、ドキュメントの宣言を取り除くか、独自のエンコード方法でこの宣言を表現する必要があります。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に用意されたすべての XML ライターは、XML 処理命令 \(\\) と文書型定義 \(\<\! … \>\) を SOAP メッセージで使用できないため、これらを拒否します。 この場合も、独自のエンコード機構を使用して、この制限に対処できます。 生成される XML に XML 処理命令と文書型定義を含める必要がある場合は、この 2 つをサポートする XML ライターを使用するカスタム エンコーダーを作成できます。 + +- `WriteXml` を実装するときは、XML ライターで メソッドを呼び出さないようにします。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、バイナリを含むさまざまな XML エンコードを使用します。その結果をどのエンコードでも使用できるように `WriteRaw` を使用することは非常に困難か不可能です。 + +- `WriteXml` を実装するとき、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で提供される XML ライターでサポートされていない メソッドと メソッドを使用しないようにします。 + +## DataSet、Typed DataSet、および DataTable の使用 + データ コントラクト モデルでは、この 3 つの型の使用が完全にサポートされています。 これらの型を使用する場合は、次の点に注意してください。 + +- この 3 つの型 \(特に、 と型指定された派生クラス\) のスキーマは、一部の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 以外のプラットフォームと相互運用できない場合があります。また、このようなプラットフォームで使用しても、結果的に使いにくい場合もあります。 また、`DataSet` 型の使用はパフォーマンスに影響を与えることがあります。 さらに、将来的にアプリケーションのバージョン管理が通常より難しくなる可能性もあります。 コントラクトでは、`DataSet` 型の代わりに、明示的に定義されたデータ コントラクト型を使用することを検討してください。 + +- `DataSet` スキーマまたは `DataTable` スキーマをインポートする際には、これらの型を参照することが重要です。 Svcutil.exe コマンド ライン ツールを使用すると、System.Data.dll アセンブリ名を `/reference` スイッチに渡すことによって、この参照を実現できます。 型指定されたデータセット スキーマをインポートする場合、その型指定されたデータセットの型を参照する必要があります。 Svcutil.exe を使用して、型指定されたデータセットのアセンブリの場所を `/reference` スイッチに渡します。 型を参照する方法[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[クラスを作成するためのスキーマのインポート](../../../../docs/framework/wcf/feature-details/importing-schema-to-generate-classes.md)」を参照してください。 + + データ コントラクト モデルでは、型指定された DataSet のサポートが制限されています。 型指定された DataSet は、シリアル化と逆シリアル化が可能であり、スキーマをエクスポートすることもできます。 ただし、データ コントラクト スキーマのインポートでは、既存のスキーマの再利用のみが行われるため、型指定された新しい DataSet 型をスキーマから生成することはできません。 Svcutil.exe ツールで `/r` スイッチを使用して、型指定された既存の DataSet を指し示すことができます。 型指定されたデータセットを使用するサービスで、`/r` スイッチを指定せずに Svcutil.exe を使用しようとすると、代替のシリアライザー \(XmlSerializer\) が自動的に選択されます。 DataContractSerializer を使用することも、スキーマから DataSet を生成することも必要である場合は、\(サービスで `/d` スイッチを指定した Xsd.exe ツールを使用して\) 型指定された DataSet 型を生成し、型をコンパイルした後に、Svcutil.exe で `/r` スイッチを使用して、それらの型を指し示します。 + +## 参照 + + + [データ コントラクトの使用](../../../../docs/framework/wcf/feature-details/using-data-contracts.md) + [データ コントラクト シリアライザーでサポートされる型](../../../../docs/framework/wcf/feature-details/types-supported-by-the-data-contract-serializer.md) \ No newline at end of file diff --git a/docs/framework/wcf/feedback-and-community.md b/docs/framework/wcf/feedback-and-community.md new file mode 100644 index 00000000000..18a03845f50 --- /dev/null +++ b/docs/framework/wcf/feedback-and-community.md @@ -0,0 +1,25 @@ +--- +title: "フィードバックとコミュニティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "顧客フィードバック [WCF]" + - "フィードバック [WCF]" +ms.assetid: ba0fd32b-cbcb-4f5b-b913-d98514ab5650 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# フィードバックとコミュニティ +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] や [!INCLUDE[infocard](../../../includes/infocard-md.md)] のドキュメントに関するご意見をお待ちしております。 SDK の各ページの末尾には "このトピックに関するご意見をマイクロソフトまでお寄せください" という記述があります。リンクをクリックして、全般的なご意見や特定のトピックに関するご提案を書いてお送りください。 + + さらに詳しい情報を探している場合や、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] に関するテクニックを他のユーザーにも知らせたい場合は、「[MSDN Windows Communication Foundation フォーラム](http://go.microsoft.com/fwlink/?LinkId=186463)」にアクセスしてください。 \ No newline at end of file diff --git a/docs/framework/wcf/find-private-key-tool-findprivatekey-exe.md b/docs/framework/wcf/find-private-key-tool-findprivatekey-exe.md new file mode 100644 index 00000000000..337087ec4ee --- /dev/null +++ b/docs/framework/wcf/find-private-key-tool-findprivatekey-exe.md @@ -0,0 +1,61 @@ +--- +title: "秘密キー検索ツール (FindPrivateKey.exe) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: b8846a95-3fcc-4e8c-b9c0-128d975a6307 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 秘密キー検索ツール (FindPrivateKey.exe) +このコマンド ライン ツールを使用して、証明書ストアから秘密キーを取得できます。 たとえば、FindPrivateKey.exe を使用して、証明書ストア内の特定の X.509 証明書に関連付けられている秘密キー ファイルの場所と名前を見つけることができます。 + +> [!IMPORTANT] +> FindPrivateKey ツールは、WCF のサンプルとして付属しています。 このサンプルの検索場所とビルド方法の詳細については、 + +## 構文 + +``` +FindPrivateKey [{ {-n } | {-t } } [-f | -d | -a]] +``` + +## 解説 + 次の表では、秘密キー検索ツール \(FindPrivateKey.exe\) で使用できる引数とオプションについて説明します。 + +|引数|説明| +|--------|--------| +|`storeName`|証明書ストアの名前。| +|`storeLocation`|証明書ストアの場所。| + +|オプション|説明| +|-----------|--------| +|`/n <` *subjectName* `>`|証明書のサブジェクト名を指定します。| +|`/t <` *thumbprint* `>`|証明書のサムプリントを指定します。 Certmgr.exe を使用して証明書のサムプリントを取得します。| +|`/f`|ファイル名だけを出力します。| +|`/d`|ディレクトリだけを出力します。| +|`/a`|絶対ファイル名を出力します。| + +## 例 + 次のコマンドは、John Doe の秘密キーを取得します。 + +``` +FindPrivateKey My CurrentUser -n "CN=John Doe" +``` + + 次のコマンドは、ローカル マシンの秘密キーを取得します。 + +``` +FindPrivateKey My LocalMachine -t "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52" –a +``` \ No newline at end of file diff --git a/docs/framework/wcf/fundamental-concepts.md b/docs/framework/wcf/fundamental-concepts.md new file mode 100644 index 00000000000..2f07995502b --- /dev/null +++ b/docs/framework/wcf/fundamental-concepts.md @@ -0,0 +1,168 @@ +--- +title: "Windows Communication Foundation の基本概念 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "概念 [WCF]" + - "基本事項 [WCF]" + - "WCF [WCF], 概念" + - "Windows Communication Foundation [WCF], 概念" +ms.assetid: 3e7e0afd-7913-499d-bafb-eac7caacbc7a +caps.latest.revision: 39 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 39 +--- +# Windows Communication Foundation の基本概念 +このトピックでは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アーキテクチャの概要について説明します。ここでは、主要概念およびこれらの概念がどのように組み合わされているかについて説明します。最も単純な [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスおよびクライアントの作成のチュートリアルについては、「[チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] プログラミングの詳細については、「[基本的な WCF プログラミング](../../../docs/framework/wcf/basic-wcf-programming.md)」を参照してください。 + +## WCF の基礎 + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] は、サービスとクライアント間でメッセージを送信するシステムを作成するためのランタイムおよび一連の API です。同じコンピューター システム上、または別の企業内にあり、インターネット経由でアクセスするシステム上の他のアプリケーションと通信するアプリケーションを作成する場合にも、同じインフラストラクチャと API が使用されます。 + +### メッセージングとエンドポイント + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] は、メッセージ ベースの通信の概念に基づいています。メッセージとしてモデル化できるものであれば、HTTP 要求やメッセージ キュー \(MSMQ とも呼ばれる\) メッセージなど、プログラミング モデルにおいて同一の方法で表すことができます。これにより、さまざまなトランスポート機構にわたり統一された API が実現します。 + + モデルでは、*クライアント* \(通信を開始するアプリケーション\) と*サービス* \(クライアントからの通信を待機し、通信に応答するアプリケーション\) が区別されます。1 つのアプリケーションがクライアントとサービスの両方の役割を果たすことができます。例については、「[双方向サービス](../../../docs/framework/wcf/feature-details/duplex-services.md)」および「[ピアツーピア ネットワーク](../../../docs/framework/wcf/feature-details/peer-to-peer-networking.md)」を参照してください。 + + メッセージは、エンドポイント間で送信されます。*エンドポイント*は、メッセージを送信または受信 \(または送受信\) する場所であり、メッセージ交換に必要なすべての情報が定義されます。サービスは、1 つ以上のアプリケーション エンドポイント \(および 0 個以上のインフラストラクチャ エンドポイント\) を公開し、クライアントは、サービスのエンドポイントのいずれかと互換性のあるエンドポイントを作成します。 + + *エンドポイント*は、メッセージの送信先、メッセージの送信方法、およびメッセージの内容を標準ベースの方法で示します。サービスは、この情報をメタデータとして公開できます。クライアントは、このメタデータを処理することで、適切な [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントと通信*スタック*を作成できます。 + +### 通信プロトコル + 通信スタックの必須要素の 1 つは、*トランスポート プロトコル*です。一般的なトランスポート \(HTTP や TCP など\) を使用して、イントラネットおよびインターネット上でメッセージを送信できます。メッセージ キュー アプリケーションおよびピア ネットワーク メッシュのノードとの通信をサポートする他のトランスポートも含まれます。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の組み込み拡張ポイントを使用すると、さらに多くのトランスポート機構を追加できます。 + + 通信スタックのもう 1 つの必須要素はエンコードです。エンコードは、特定のメッセージをどのように書式設定するかを指定します。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、次のエンコードを使用できます。 + +- テキスト エンコード。相互運用可能なエンコードです。 + +- MTOM \(Message Transmission Optimization Mechanism\) エンコード。これは、サービスとの間で構造化されていないバイナリ データを効率的に送信するための相互運用可能な方法です。 + +- バイナリ エンコード。このエンコードを使用すると、転送を効率的に行うことができます。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の組み込み拡張ポイントを使用すると、さらに多くのエンコード機構 \(圧縮エンコードなど\) を追加できます。 + +### メッセージ パターン + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] は、要求\/応答、一方向、双方向通信など、複数のメッセージング パターンをサポートしています。各種トランスポートがサポートするメッセージング パターンはそれぞれに異なるため、サポートされる対話の種類に影響します。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] API とランタイムを使用すると、メッセージを安全かつ確実に送信できます。 + +## WCF の用語 + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のドキュメントで使用されるその他の概念と用語を以下に示します。 + + message + 独立したデータ単位は、本文やヘッダーなどの複数の部分で構成できます。 + + service + 1 つ以上のエンドポイントを公開する構造体です。各エンドポイントは、1 つ以上のサービス操作を公開します。 + + endpoint + メッセージを送信または受信 \(または送受信\) する場所となる構造体です。エンドポイントには、どこにメッセージを送信できるかを明確に示す場所 \(アドレス\)、メッセージの送信方法を記載した通信機構の仕様 \(バインディング\)、およびその場所で送信または受信 \(または送受信\) 可能な一連のメッセージの内容を示す定義 \(サービス コントラクト\) が含まれます。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスは、エンドポイントの集まりとして外部に公開されます。 + + アプリケーション エンドポイント + アプリケーションによって公開されるエンドポイントです。アプリケーション エンドポイントは、アプリケーションで実装されるサービス コントラクトに対応しています。 + + インフラストラクチャ エンドポイント + サービス コントラクトに関連しないサービスで必要とされる機能または提供される機能を促進するために、インフラストラクチャによって公開されるエンドポイントです。たとえば、サービスは、メタデータ情報を提供するインフラストラクチャ エンドポイントを持つ場合があります。 + + address + メッセージを受信する場所を指定します。アドレスは、URI \(Uniform Resource Identifier\) として指定されます。URI のスキーマ部分では、そのアドレスに到達するために使用するトランスポート機構 \(HTTP、TCP など\) を指定します。URI の階層部分には一意の場所が含まれ、その形式はトランスポート機構によって異なります。 + + エンドポイント アドレスにより、サービスのエンドポイントごとに一意のエンドポイント アドレスを作成できます。また、一定の条件下では、エンドポイント間でアドレスを共有することもできます。既定以外のポートで HTTPS プロトコルを使用するアドレスの例を次に示します。 + +``` +HTTPS://cohowinery:8005/ServiceModelSamples/CalculatorService +``` + + バインディング + エンドポイントが外部と通信する方法を定義します。バインディングは、バインディング要素と呼ばれる一連のコンポーネントで構成されます。各バインディング要素を "積み重ねる" ことで、通信インフラストラクチャが作成されます。バインディングでは、少なくともトランスポート \(HTTP や TCP など\) と使用するエンコード \(テキストやバイナリなど\) が定義されます。バインディングには、メッセージをセキュリティで保護するために使用するセキュリティ機構や、エンドポイントが使用するメッセージ パターンなどの詳細を指定したバインディング要素を含めることができます。詳細については、「[サービスの構成](../../../docs/framework/wcf/configuring-services.md)」を参照してください。 + + バインディング要素 + バインディングの特定の部分 \(トランスポート、エンコード、インフラストラクチャ レベルのプロトコル \(WS\-ReliableMessaging など\) の実装、通信スタックのその他のコンポーネントなど\) を表します。 + + behaviors + サービス、エンドポイント、特定の操作、またはクライアントの実行時のさまざまな状況を制御するコンポーネントです。動作はスコープに従ってグループ化されます。共通動作は、すべてのエンドポイントにグローバルに作用し、サービス動作は、サービスに関連する側面にのみ作用します。また、エンドポイントの動作は、エンドポイントに関連するプロパティにのみ作用し、操作レベルの動作は特定の操作に作用します。たとえば、サービス動作の 1 つである調整では、メッセージの数が多すぎて処理しきれないおそれがある場合に、サービスでどのように対処するかを指定します。一方、エンドポイントの動作は、セキュリティ資格情報の検索方法や検索場所など、エンドポイントに関連する側面だけを制御します。 + + システム指定のバインディング + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] には、システム指定の多数のバインディングが用意されています。これらは、特定のシナリオ用に最適化されたバインディング要素の集まりです。たとえば、 は、さまざまな WS\-\* 仕様を実装するサービスと相互運用できるようにデザインされています。これらの定義済みバインディングでは、特定のシナリオに適切に適用できるオプションだけが提供されるため、時間を節約できます。定義済みバインディングが要件を満たさない場合は、独自のカスタム バインディングを作成できます。 + + 構成とコーディング + アプリケーションは、コーディング、構成、またはこの 2 つの組み合わせによって制御できます。構成には、コードの作成後、再コンパイルを必要とせずに、開発者以外のユーザー \(ネットワーク管理者など\) がクライアントとサービスのパラメーターを設定できるという利点があります。構成では、エンドポイント アドレスなどの値を設定できるだけでなく、エンドポイント、バインディング、および動作の追加が可能であるため、制御を強化することもできます。コーディングの場合、開発者はサービスまたはクライアントのすべてのコンポーネントに対する厳密な制御を保持できます。構成によって行われた設定を検査し、必要に応じてコードによって無効にできます。 + + サービス操作 + 操作の機能を実装するためにサービスのコードに定義された手順です。この操作は、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントのメソッドとしてクライアントに公開されます。メソッドは、値を返すこともあれば、任意の数の引数を受け取ることもあります。また、引数を受け取らず、応答を返さないこともあります。たとえば、単純な "Hello" という機能を持つ操作をクライアントの存在の通知として使用したり、一連の操作を開始するために使用したりできます。 + + サービス コントラクト + 関連する複数の操作を 1 つの機能単位に関連付けます。コントラクトでは、サービスの名前空間や対応するコールバック コントラクトなど、サービス レベルの設定を定義できます。ほとんどの場合、開発者が選択したプログラミング言語でインターフェイスを作成し、このインターフェイスに 属性を適用することによって、コントラクトを定義します。実際のサービス コードは、インターフェイスを実装することによって作成されます。 + + 操作コントラクト + 操作コントラクトとは、操作のパラメーターと戻り値の型を定義するものです。サービス コントラクトを定義するインターフェイスの作成時に、コントラクトに含まれる各メソッド定義に 属性を適用することによって、操作コントラクトを表します。各操作は、単一のメッセージを取得し、単一のメッセージを返すようにモデル化することも、一連の型を取得し、型を返すようにモデル化することもできます。後者の場合、その操作用に交換する必要のあるメッセージの形式がシステムによって決定されます。 + + メッセージ コントラクト + メッセージの形式を記述します。たとえば、メッセージ要素をヘッダーと本文のどちらに入れるか、メッセージのどの要素にどのレベルのセキュリティを適用するかなどを宣言します。 + + エラー コントラクト + サービス操作に関連付けることにより、呼び出し元に返すことのできるエラーを示すことができます。操作には、0 個以上のエラーを関連付けることができます。これらのエラーは、プログラミング モデルで例外としてモデル化される SOAP エラーです。 + + データ コントラクト + サービスが使用するデータ型のメタデータの記述。これにより、他のサービスをそのサービスと相互運用できます。このデータ型は、パラメーターや戻り値など、メッセージの任意の部分で使用することができます。サービスが単純型だけを使用している場合、データ コントラクトを明示的に使用する必要はありません。 + + ホスト + サービスは、何らかのプロセス内でホストされている必要があります。*ホスト*とは、サービスの有効期間を制御するアプリケーションです。サービスは、自己ホスト型であっても、既存のホスティング プロセスによって管理されていてもかまいません。 + + 自己ホスト型サービス + 開発者が作成したプロセス アプリケーション内で実行されるサービスです。開発者は、サービスの有効期間を制御し、サービスのプロパティを設定します。また、サービスを開き \(サービスをリッスン モードに設定する\)、サービスを閉じることも開発者が行います。 + + ホスティング プロセス + サービスをホストするように設計されたアプリケーションです。ホスティング プロセスには、インターネット インフォメーション サービス \(IIS\)、Windows アクティブ化サービス \(WAS\)、Windows サービスなどがあります。これらのホスト シナリオでは、ホストがサービスの有効期間を制御します。たとえば、IIS を使用して、サービス アセンブリや構成ファイルを格納する仮想ディレクトリを設定できます。メッセージを受信すると、IIS はサービスを開始し、その有効期間を制御します。 + + インスタンス化 + サービスには、インスタンス化モデルが含まれます。インスタンス化モデルには、1 つの CLR オブジェクトがすべてのクライアントにサービスを提供する "単一モデル"、クライアント呼び出しを処理するために、呼び出しごとに新しい CLR オブジェクトが作成される "呼び出しモデル"、CLR オブジェクトのセットがセッションごとに 1 つ作成される "セッション モデル" の 3 つのモデルがあります。インスタンス化モデルの選択は、アプリケーション要件とサービスの予想される使用パターンによって異なります。 + + クライアント アプリケーション + 1 つ以上のエンドポイントとメッセージを交換するプログラムです。クライアント アプリケーションは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントのインスタンスを作成し、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントのメソッドを呼び出すことによって開始されます。1 つのアプリケーションがクライアントとサービスの両方として機能できることに注意してください。 + + channel + バインディング要素の具象実装です。バインディングは構成を表し、チャネルはその構成に関連付けられた実装です。したがって、各バインディング要素に関連付けられたチャネルが存在します。チャネルが積み重ねられて、バインディングの具象実装 \(チャネル スタック\) が作成されます。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント + サービス操作を \(Visual Basic や Visual C\# など、開発者が選択した [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] プログラミング言語の\) メソッドとして公開するクライアント アプリケーション構造体です。サービスをホストするアプリケーションも含め、すべてのアプリケーションが [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントをホストできます。したがって、他のサービスの [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントを含むサービスを作成できます。 + + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用し、メタデータを公開する実行中のサービスでメタデータを指定することによって、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントを自動的に生成できます。 + + メタデータ + サービスで、外部エンティティがそのサービスと通信するために認識しておく必要のあるサービスの特性を示します。[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) でメタデータを使用することにより、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントおよび付随する構成を生成できます。クライアント アプリケーションは、サービスとやり取りするためにこの構成を使用します。 + + サービスが公開するメタデータには、サービスのデータ コントラクトが定義された XML スキーマ ドキュメントと、サービスのメソッドが記載された WSDL ドキュメントが含まれます。 + + メタデータを有効にすると、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] によってサービスとそのエンドポイントが検査され、サービスのメタデータが自動的に生成されます。サービスからメタデータを公開するには、メタデータの動作を明示的に有効にする必要があります。 + + セキュリティ + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] には、機密性 \(盗聴を防ぐためのメッセージの暗号化\)、整合性 \(メッセージの改ざんを検出するための手段\)、認証 \(サーバーとクライアントを検証する方法\)、承認 \(リソースへのアクセスの制御\) が含まれます。これらの機能は、TLS over HTTP \(HTTPS とも呼ばれます\) などの既存のセキュリティ機構を利用するか、さまざまな WS\-\* セキュリティ仕様の中から 1 つ以上の仕様を実装することによって実現されます。 + + トランスポート セキュリティ モード + トランスポート層の機構 \(HTTPS など\) によって、機密性、整合性、および認証を提供することを示します。HTTPS のようなトランスポートを使用する場合、このモードには、パフォーマンスの面で効率的であることと、インターネットで普及しているため、十分に認識されているという利点があります。欠点は、この種のセキュリティは通信パスの各ホップで個別に適用されるため、通信が "Man\-in\-the\-middle" 攻撃の影響を受けやすくなることです。 + + メッセージ セキュリティ モード + セキュリティ仕様 \([Web Services Security: SOAP Message Security](http://go.microsoft.com/fwlink/?LinkId=94684) など\) を 1 つ以上実装することによってセキュリティを提供することを示します。各メッセージには、メッセージ送信中のセキュリティを確保し、受信側による改ざんの検出とメッセージの復号化を可能にするために必要な機構が含まれます。この意味で、セキュリティはすべてのメッセージ内にカプセル化されるため、複数のホップにわたるエンド ツー エンドのセキュリティが実現します。セキュリティ情報はメッセージの一部になるため、メッセージと共に複数の種類の資格情報を含めることもできます \(これらは*クレーム*と呼ばれます\)。この方法には、送信元と送信先の間の複数のトランスポートを含め、どのトランスポート上でもメッセージを安全に送信できるという利点もあります。この方法の欠点は、使用される暗号化機構が複雑であるため、パフォーマンスに影響することです。 + + メッセージ資格情報付きトランスポート セキュリティ モード + トランスポート層を使用してメッセージの機密性、認証、および整合性を提供します。各メッセージには、メッセージの受信側で必要とされる複数の資格情報 \(クレーム\) を含めることができます。 + + WS\-\* + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] に実装された一連の Web サービス \(WS\) 仕様 \(WS\-Security や WS\-ReliableMessaging など\) の略称です。 + +## 参照 + [Windows Communication Foundation とは](../../../docs/framework/wcf/whats-wcf.md) + [Windows Communication Foundation のアーキテクチャ](../../../docs/framework/wcf/architecture.md) + [Security Architecture](http://msdn.microsoft.com/ja-jp/16593476-d36a-408d-808c-ae6fd483e28f) \ No newline at end of file diff --git a/docs/framework/wcf/general-reference.md b/docs/framework/wcf/general-reference.md new file mode 100644 index 00000000000..80a1e902076 --- /dev/null +++ b/docs/framework/wcf/general-reference.md @@ -0,0 +1,24 @@ +--- +title: "一般的なリファレンス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "一般的なリファレンス [WCF]" + - "WCF, 一般リファレンス" + - "Windows Communication Foundation, 一般リファレンス" +ms.assetid: b1a21e93-4700-46e6-88ca-bd7a50e19a16 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 一般的なリファレンス +「[\](../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md)」では、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] クライアントとサービスの構成に使用する要素について説明します。 \ No newline at end of file diff --git a/docs/framework/wcf/generating-data-type-classes-from-xml.md b/docs/framework/wcf/generating-data-type-classes-from-xml.md new file mode 100644 index 00000000000..37dafbce9a9 --- /dev/null +++ b/docs/framework/wcf/generating-data-type-classes-from-xml.md @@ -0,0 +1,52 @@ +--- +title: "XML からのデータ型クラスの生成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e4e5e4e8-527f-44d1-92fa-8904a08784ea +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# XML からのデータ型クラスの生成 +[!INCLUDE[net_v45](../../../includes/net-v45-md.md)] には、XML からデータ型クラスを生成するための新しい機能があります。 このトピックでは、MSDN ライブラリの RSS フィードのデータ型を自動的に生成する方法について説明します。 + +### MSDN ライブラリの RSS フィードからの XML の取得 + +1. Internet Explorer で、[MSDN RSS フィード](http://go.microsoft.com/fwlink/?LinkId=225209)に移動します。 + +2. ページを右クリックし、**\[ソースの表示\]** を選択します。 + +3. Ctrl キーを押しながら A キーを押してフィードのテキストをすべて選択し、Ctrl キーを押しながら C キーを押してコピーします。 + +### データ型の作成 + +1. プロキシが使用されるコード ファイルを開きます。 このファイルは、[!INCLUDE[net_v45](../../../includes/net-v45-md.md)] プロジェクトの一部である必要があります。 + +2. 既存のクラスの外部にあるファイルの場所にカーソルを置きます。 + +3. **\[編集\]**、**\[形式を選択して貼り付け\]**、**\[XML をクラスとして貼り付ける\]** の順に選択します。 + +4. `rss`、`rssChannel`、`rssChannelImage`、および `rssChannelItem` というクラスは、RSS フィードの要素にアクセスするために必要なメンバーを使用して作成されます。 + +### 生成されたクラスの使用 + +1. クラスが生成されると、他のクラスのコードなどで使用できます。 次のコード例では、`rssChannelImage` クラスの新しいインスタンスが返されます。 + + ``` + var channelImage = new rssChannelImage() + { + title = "MyImage", + link = "http://www.contoso.com/images/channelImage.jpg", + url = "http://www.contoso.com/entries/myEntry.html" + }; + + ``` \ No newline at end of file diff --git a/docs/framework/wcf/getting-started-tutorial.md b/docs/framework/wcf/getting-started-tutorial.md new file mode 100644 index 00000000000..f4c96366fed --- /dev/null +++ b/docs/framework/wcf/getting-started-tutorial.md @@ -0,0 +1,75 @@ +--- +title: "チュートリアル入門 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "はじめに [WCF]" + - "WCF [WCF], はじめに" + - "Windows Communication Foundation [WCF], はじめに" +ms.assetid: df939177-73cb-4440-bd95-092a421516a1 +caps.latest.revision: 47 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 47 +--- +# チュートリアル入門 +このセクションの各トピックで、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] のプログラミング方法について簡単に説明します。 これらは、このトピックに記載されているリストの順番どおりに完了するように設計されています。 このチュートリアルを通じて [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスおよびクライアント アプリケーションの作成に必要な手順について理解することができます。 サービスは 1 つ以上のエンドポイントを公開し、それぞれのエンドポイントは 1 つ以上のサービス操作を公開します。 サービスの*エンドポイント*は、サービスの場所を示すアドレス、クライアントがサービスとどのように通信する必要があるかを示す情報を格納するバインディング、およびサービスがクライアントに提供する機能を定義するコントラクトを指定します。 + + このチュートリアルの一連のトピックを終了すると、サービスを実行し、クライアントからそのサービスを呼び出すことができるようになります。 最初の 3 つのトピックでは、サービス コントラクトを定義する方法、サービス コントラクトを実装する方法、およびサービスをホストする方法について説明します。 作成したサービスは、コンソール アプリケーション内で自己ホストされます。 また、サービスは、インターネット インフォメーション サービス \(IIS\) でホストすることもできます。 その方法[!INCLUDE[crabout](../../../includes/crabout-md.md)]「[方法 : IIS で WCF サービスをホストする](../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md)」を参照してください。 サービスはコードで構成されますが、構成ファイル内で構成することもできます。 構成ファイル[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[構成ファイルを使用してサービスを構成する方法](../../../docs/framework/wcf/configuring-services-using-configuration-files.md)」を参照してください。 + + 次の 3 つのトピックでは、クライアント プロキシを作成する方法、クライアント アプリケーションを構成する方法、およびサービスが公開するサービス操作をクライアント プロキシを使って呼び出す方法について説明します。 サービスは、クライアント アプリケーションがサービスと通信するために必要な情報を定義したメタデータを公開します。 [!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] は、このメタデータにアクセスするプロセスを自動化し、それを使って、サービスのクライアント アプリケーションを構築および構成します。 [!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] を使用していない場合は、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用して、サービスのクライアント アプリケーションを構築および構成できます。 + + このセクションのすべてのトピックでは、開発環境として Visual Studio 2011 を使用することを前提としています。 他の開発環境を使用する場合は、[!INCLUDE[vs_current_short](../../../includes/vs-current-short-md.md)] に固有の指示については無視してください。 + +> [!NOTE] +> [!INCLUDE[wv](../../../includes/wv-md.md)] 以降のバージョンの Windows オペレーティング システムを実行している場合は、\[スタート\] メニューの \[Visual Studio 2011\] を右クリックし、**\[管理者として実行\]** をクリックして [!INCLUDE[vs_current_short](../../../includes/vs-current-short-md.md)] を起動する必要があります。 Visual Studio 2011 を常に管理者として起動するには、ショートカットを作成して右クリックし、プロパティをクリックします。次に、**\[互換性\]** タブをクリックし、**\[管理者としてこのプログラムを実行する\]** チェック ボックスをオンにします。 このショートカットで Visual Studio 2011 を起動すると、常に管理者として実行されます。 + + ハード ディスクにダウンロードして実行できるサンプル アプリケーションについては、「[Windows Communication Foundation Samples](http://msdn.microsoft.com/ja-jp/8ec9d192-5d81-4f64-bfd3-90c5e5858c91)」のトピックを参照してください。 このトピックでは特に、「[概要](../../../docs/framework/wcf/samples/getting-started-sample.md)」を参照してください。 + + サービスとクライアントを作成する方法の詳細については、「[基本的な WCF プログラミング](../../../docs/framework/wcf/basic-wcf-programming.md)」を参照してください。 + +## このセクションの内容 + [方法 : サービス コントラクトを定義する](../../../docs/framework/wcf/how-to-define-a-wcf-service-contract.md) + ユーザー定義のインターフェイスを使用して、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] コントラクトを作成する方法について説明します。 コントラクトは、サービスが公開する機能を定義します。 + + [方法 : サービス コントラクトを実装する](../../../docs/framework/wcf/how-to-implement-a-wcf-contract.md) + サービス コントラクトを実装する方法について説明します。 定義したコントラクトはサービスのクラスと共に実装する必要があります。 + + [方法 : 基本的なサービスをホストおよび実行する](../../../docs/framework/wcf/how-to-host-and-run-a-basic-wcf-service.md) + サービスのエンドポイントをコードで構成する方法と、コンソール アプリケーションでサービスをホストする方法について説明します。 サービスをアクティブにするには、サービスをランタイム環境内で構成してホストする必要があります。 この環境によってサービスが作成され、サービスのコンテキストと有効期間が制御されます。 + + [方法 : クライアントを作成する](../../../docs/framework/wcf/how-to-create-a-wcf-client.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスから [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント プロキシを作成するために使用するメタデータを取得する方法について説明します。 このプロセスでは、Visual Studio 2011 の "サービス参照の追加" 機能を使用します。 + + [方法 : クライアントを構成する](../../../docs/framework/wcf/how-to-configure-a-basic-wcf-client.md) + WCF クライアントの構成方法について説明します。クライアントを構成するには、クライアントがサービスへのアクセスに使用するエンドポイントを指定する必要があります。 + + [方法 : クライアントを使用する](../../../docs/framework/wcf/how-to-use-a-wcf-client.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント プロキシを使用してサービス操作を呼び出す方法について説明します。 + +## 関連項目 + + + + +## 関連項目 + [Windows Communication Foundation Samples](http://msdn.microsoft.com/ja-jp/8ec9d192-5d81-4f64-bfd3-90c5e5858c91) + + [基本的なプログラミング ライフサイクル](../../../docs/framework/wcf/basic-programming-lifecycle.md) + +## 参照 + [概念](../../../docs/framework/wcf/conceptual-overview.md) + [ドキュメントのガイド](../../../docs/framework/wcf/guide-to-the-documentation.md) + [Windows Communication Foundation とは](../../../docs/framework/wcf/whats-wcf.md) + [WCF 機能の詳細](../../../docs/framework/wcf/feature-details/index.md) \ No newline at end of file diff --git a/docs/framework/wcf/glossary.md b/docs/framework/wcf/glossary.md new file mode 100644 index 00000000000..8615cf2972a --- /dev/null +++ b/docs/framework/wcf/glossary.md @@ -0,0 +1,68 @@ +--- +title: ".NET Framework 4.5 の Windows Communication Foundation 用語集 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF [WCF], 用語集" + - "Windows Communication Foundation [WCF], 用語集" +ms.assetid: 39cd36f4-8a28-4d0b-a830-98d55c9d30ae +caps.latest.revision: 243 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 243 +--- +# .NET Framework 4.5 の Windows Communication Foundation 用語集 +次の表に、Windows Communication Foundation のドキュメントで使用する用語の定義を示します。 + +## 用語 + +|用語|定義| +|--------|--------| +|address|メッセージを受信する場所を指定します。 アドレスは、URI \(Uniform Resource Identifier\) として指定されます。 URI のスキーマ部分では、そのアドレスに到達するために使用するトランスポート機構 \(HTTP、TCP など\) を指定します。 URI の階層部分には一意の場所が含まれ、その形式はトランスポート機構によって異なります。| +|アプリケーション エンドポイント|アプリケーションによって公開されるエンドポイントです。アプリケーション エンドポイントは、アプリケーションで実装されるサービス コントラクトに対応しています。| +|動作|動作とは、サービス、エンドポイント、特定の操作、またはクライアントの実行時のさまざまな状況を制御するコンポーネントです。 動作はスコープに従ってグループ化されます。共通動作は、すべてのエンドポイントにグローバルに作用し、サービス動作は、サービスに関連する側面にのみ作用します。また、エンドポイントの動作は、エンドポイントに関連するプロパティにのみ作用し、操作レベルの動作は特定の操作に作用します。| +|バインド|WCF サービスとの通信に使用する通信プロトコルを指定します。 バインディングは、バインディング要素と呼ばれる一連のコンポーネントで構成されます。各バインディング要素を積み重ねることで、通信インフラストラクチャが作成されます。 「エンドポイント」を参照してください。| +|チャネル|バインディング要素の具象実装です。 バインディングは構成を表し、チャネルはその構成に関連付けられた実装です。 したがって、各バインディング要素に関連付けられたチャネルが存在します。 チャネルが積み重ねられて、バインディングの具象実装 \(チャネル スタック\) が作成されます。| +|クレーム ベース セキュリティ|クレームに基づいて、保護されているリソースへの承認されたアクセスを許可します。| +|クライアント アプリケーション|クライアント アプリケーションは、1 つ以上のエンドポイントとメッセージを交換するプログラムです。 クライアント アプリケーションは、WCF クライアントのインスタンスを作成し、WCF クライアントのメソッドを呼び出すことによって開始されます。 1 つのアプリケーションがクライアントとサービスの両方として機能できることに注意してください。| +|コーディング|開発者は、サービスまたはクライアントのすべてのコンポーネントに対する厳密な制御を保持できます。構成によって行われた設定を検査し、必要に応じてコードによって無効にできます。 アプリケーションは、コーディング、構成、またはこの 2 つの組み合わせによって制御できます。| +|構成|構成には、コードの作成後、再コンパイルを必要とせずに、開発者以外のユーザー \(ネットワーク管理者など\) がクライアントとサービスのパラメーターを設定できるという利点があります。 構成では、エンドポイント アドレスなどの値を設定できるだけでなく、エンドポイント、バインディング、および動作の追加が可能であるため、制御を強化することもできます。 アプリケーションは、構成、コーディング、またはこの 2 つの組み合わせによって制御できます。| +|コントラクト|コントラクトは、特定の種類のコントラクトに対するサポート仕様です。 たとえば、サービス コントラクトは、操作のグループに対する仕様です。 WCF では、コントラクトは階層構造を持ち、これは System.ServiceModel.Description 名前空間に存在する説明オブジェクトにミラー化されています。 サービス コントラクトは、WCF で最も大きなコントラクト スコープです。 サービス コントラクトの各サービス操作には、エラー メッセージを含め、操作により交換されるメッセージとその交換方向を規定した操作コントラクトがあります。 操作の各メッセージには、メッセージ コントラクト、つまり SOAP メッセージ エンベロープの構造仕様があり、個々のメッセージ コントラクトには、メッセージに含まれるデータ構造を規定したデータ コントラクトがあります。| +|データ コントラクト|サービスが使用するデータ型をメタデータに記述して、他のサービスがそのサービスと相互運用できるようにする必要があります。 データ型の記述は、データ コントラクトと呼ばれます。型は、メッセージの任意の部分で使用できます \(パラメーターや戻り値の型など\)。 サービスが単純型だけを使用している場合、データ コントラクトを明示的に使用する必要はありません。| +|宣言アプリケーション|命令を実行しなくても実行時に作成されるように記述されたアプリケーションです。| +|エンドポイント|WCF サービスとの通信に使用されるアドレス、バインディング、およびコントラクトで構成されます。| +|エンドポイント アドレス|サービスのエンドポイントごとに一意のエンドポイント アドレスを作成できます。また、一定の条件下では、エンドポイント間でアドレスを共有することもできます。| +|エラー コントラクト|エラー コントラクトをサービス操作に関連付けることにより、呼び出し元に返すことのできるエラーを示すことができます。 操作には、0 個以上のエラーを関連付けることができます。 これらのエラーは、プログラミング モデルで例外としてモデル化される SOAP エラーです。 例外は SOAP エラーに変換され、その後、クライアントに送信されます。| +|ホスティング|サービスは、何らかのプロセス内でホストされている必要があります。 ホストは、サービスの有効期間を制御するアプリケーションです。 サービスは、自己ホスト型であっても、既存のホスティング プロセスによって管理されていてもかまいません。| +|ホスト プロセス|ホスティング プロセスとは、サービスをホストするように設計されたアプリケーションです。 ホスティング プロセスには、インターネット インフォメーション サービス \(IIS\)、Windows アクティブ化サービス \(WAS\)、Windows サービスなどがあります。 これらのホスト シナリオでは、ホストがサービスの有効期間を制御します。 たとえば、IIS を使用して、サービス アセンブリや構成ファイルを格納する仮想ディレクトリを設定できます。 メッセージを受信すると、IIS はサービスを開始し、その有効期間を制御します。| +|開始操作|新しいセッションの最初の操作として呼び出される操作です。 開始操作以外の操作は、少なくとも 1 つの開始操作が呼び出された後にしか呼び出すことはできません。| +|インスタンス化モデル|サービスには、インスタンス化モデルが含まれます。 インスタンス化モデルには、1 つの CLR オブジェクトがすべてのクライアントにサービスを提供する "単一モデル"、クライアント呼び出しを処理するために、呼び出しごとに新しい CLR オブジェクトが作成される "呼び出しモデル"、CLR オブジェクトのセットがセッションごとに 1 つ作成される "セッション モデル" の 3 つのモデルがあります。 インスタンス化モデルの選択は、アプリケーション要件とサービスの予想される使用パターンによって異なります。| +|message|メッセージとは、本文やヘッダーなどの複数の部分で構成できるデータの内部格納ユニットです。| +|メッセージ コントラクト|メッセージ コントラクトは、メッセージの形式を記述します。 たとえば、メッセージ要素をヘッダーと本文のどちらに入れるか、メッセージのどの要素にどのレベルのセキュリティを適用するかなどを宣言します。| +|メッセージ セキュリティ モード|メッセージ セキュリティ モードでは、セキュリティ仕様の 1 つまたは複数を実装することによりセキュリティが提供されます。 各メッセージには、メッセージ送信中のセキュリティを確保し、受信側による改ざんの検出とメッセージの復号化を可能にするために必要な機構が含まれます。 この意味で、セキュリティはすべてのメッセージ内にカプセル化されるため、複数のホップにわたるエンド ツー エンドのセキュリティが実現します。 セキュリティ情報はメッセージの一部になるため、メッセージと共に複数の種類の資格情報を含めることもできます \(これらはクレームと呼ばれます\)。 この方法には、送信元と送信先の間の複数のトランスポートを含め、どのトランスポート上でもメッセージを安全に送信できるという利点もあります。 この方法の欠点は、使用される暗号化機構が複雑であるため、パフォーマンスに影響することです。| +|メタデータ|サービスのメタデータは、外部エンティティがそのサービスと通信するために認識しておく必要のあるサービスの特性を示します。 ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\) でメタデータを使用することにより、クライアント アプリケーションがサービスとやり取りするために使用できる、WCF クライアントと付随する構成を生成できます。 サービスが公開するメタデータには、サービスのデータ コントラクトが定義された XML スキーマ ドキュメントと、サービスのメソッドが記載された WSDL ドキュメントが含まれます。 メタデータを有効にすると、WCF によってサービスとそのエンドポイントが検査され、サービスのメタデータが自動的に生成されます。 サービスからメタデータを公開するには、メタデータの動作を明示的に有効にする必要があります。| +|操作コントラクト|操作コントラクトは、操作のパラメーターと戻り値の型を定義します。 サービス コントラクトを定義するインターフェイスの作成時に、コントラクトに含まれる各メソッド定義に T:System.ServiceModel.OperationContractAttribute 属性を適用することによって、操作コントラクトを表します。 各操作は、単一のメッセージを取得し、単一のメッセージを返すようにモデル化することも、一連の型を取得し、型を返すようにモデル化することもできます。 後者の場合、その操作用に交換する必要のあるメッセージの形式がシステムによって決定されます。| +|射影|ネットワーク上でのデータの表現です。 たとえば、メッセージは、SOAP 射影では SOAP エンベロープとして送信され、Web 射影では JSON 形式で送信されます。| +|セキュリティ|WCF のセキュリティには、機密性 \(盗聴を防ぐためのメッセージの暗号化\)、整合性 \(メッセージの改ざんを検出するための手段\)、認証 \(サービスとクライアントを検証する方法\)、承認 \(リソースへのアクセスの制御\) が含まれます。 これらの機能は、TLS over HTTP \(HTTPS とも呼ばれます\) などの既存のセキュリティ機構を利用するか、さまざまな WS\-\* セキュリティ仕様の中から 1 つ以上の仕様を実装することによって実現されます。| +|自己ホスト サービス|自己ホスト型サービスとは、開発者が作成したプロセス アプリケーション内で実行されるサービスです。 開発者は、サービスの有効期間を制御し、サービスのプロパティを設定します。また、サービスを開き \(サービスをリッスン モードに設定する\)、サービスを閉じることも開発者が行います。| +|service|1 つ以上のエンドポイントを公開するプログラムまたはプロセスです。各エンドポイントは、1 つ以上の操作を公開します。| +|サービス コントラクト|サービス コントラクトは、関連する複数の操作を 1 つの機能単位に関連付けます。 コントラクトでは、サービスの名前空間や対応するコールバック コントラクトなど、サービス レベルの設定を定義できます。 ほとんどの場合、開発者は選択したプログラミング言語でインターフェイスを作成し、このインターフェイスに T:System.ServiceModel.ServiceContractAttribute 属性を適用することによって、コントラクトを定義します。 実際のサービス コードは、インターフェイスを実装することによって作成されます。| +|サービス操作|サービス操作とは、操作の機能を実装するためにサービスのコードに定義された手順です。 この操作は、WCF クライアントのメソッドとしてクライアントに公開されます。 メソッドは、値を返すこともあれば、任意の数の引数を受け取ることもあります。また、引数を受け取らず、応答を返さないこともあります。 たとえば、"Hello" という機能を持つ操作をクライアントの存在の通知として使用したり、一連の操作を開始するために使用したりできます。| +|システム指定のバインディング|WCF には、システム指定のバインディングが多数用意されています。 これらは、特定のシナリオ用に最適化されたバインディング要素の集まりです。 たとえば、T:System.ServiceModel.WSHttpBinding は、さまざまな WS\-\* 仕様を実装するサービスと相互運用できるようにデザインされています。 これらのバインディングでは、特定のシナリオに適切に適用できるオプションだけが提供されるため、時間を節約できます。 これらのバインディングでは要件が満たされない場合は、独自のカスタム バインディングを作成できます。| +|終了操作|既存セッションの最後のメッセージとして呼び出される操作です。 既定では、WCF は、サービスが関連付けられているセッションが閉じられた後に、サービス オブジェクトとそのコンテキストを再利用します。| +|トランスポート セキュリティ モード|セキュリティは、トランスポート モード、メッセージ セキュリティ モード、およびメッセージ資格情報付きトランスポート モードのいずれかによって提供できます。 トランスポート セキュリティ モードは、トランスポート層の機構 \(HTTPS など\) によって、機密性、整合性、および認証を提供することを示します。 HTTPS のようなトランスポートを使用する場合、このモードには、パフォーマンスの面で効率的であることと、インターネットで普及しているため、十分に認識されているという利点があります。 欠点は、この種のセキュリティは通信パスの各ホップで個別に適用されるため、通信が "Man\-in\-the\-middle" 攻撃の影響を受けやすくなることです。| +|メッセージ資格情報付きトランスポート セキュリティ モード|このモードは、トランスポート層を使用してメッセージの機密性、認証、および整合性を提供します。各メッセージには、メッセージの受信側で必要とされる複数の資格情報 \(クレーム\) を含めることができます。| +|型コンバーター|CLR 型は、CLR 型のインスタンスと他の型のインスタンスを変換する 1 つまたは複数の System.ComponentModel.TypeConverter 派生型に関連付けることができます。 型コンバーターは、System.ComponentModel.TypeConverterAttribute 属性を使用して、CLR 型に関連付けられています。 TypeConverterAttribute は、CLR 型またはプロパティで直接指定できます。 プロパティで指定された型コンバーターは、プロパティの CLR 型で指定された型コンバーターよりも常に優先されます。| +|WCF クライアント|WCF クライアントは、サービス操作を \(Visual Basic や Visual C\# など、開発者が選択した .NET Framework プログラミング言語の\) メソッドとして公開するクライアント アプリケーション構造体です。 サービスをホストするアプリケーションも含め、すべてのアプリケーションが WCF クライアントをホストできます。 したがって、他のサービスの WCF クライアントを含むサービスを作成できます。 ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\) を使用し、メタデータを公開する実行中のサービスでメタデータを指定することによって、WCF クライアントを自動的に生成できます。| +|ワークフロー サービス|ワークフロー サービスは、ワークフローとして実装される WCF サービスです。 ワークフローには、WCF メッセージを送受信するメッセージング アクティビティが含まれています。| +|WS\-\*|WCF に実装された一連の Web サービス \(WS\) 仕様 \(WS\-Security や WS\-ReliableMessaging など\) の略称です。| +|XAML|eXtensible Application Markup Language| +|XAML スキーマ|XAML でカスタム型を定義するために使用されるマークアップ スキーマです。| \ No newline at end of file diff --git a/docs/framework/wcf/guide-to-the-documentation.md b/docs/framework/wcf/guide-to-the-documentation.md new file mode 100644 index 00000000000..23ce5134b8a --- /dev/null +++ b/docs/framework/wcf/guide-to-the-documentation.md @@ -0,0 +1,78 @@ +--- +title: "ドキュメントのガイド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "WCF [WCF], ドキュメント" + - "Windows Communication Foundation [WCF], ドキュメント" +ms.assetid: 2aa18c85-a4fd-4bb9-986a-a8249e4f8e0e +caps.latest.revision: 36 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 36 +--- +# ドキュメントのガイド +ここでは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] ドキュメントについて説明します。リンク先のドキュメントは、特定の目的と専門知識のレベルに応じて分類された、推奨される出発点となります。 + + スタンドアロン バージョンのドキュメントとヘルプ ビューアーをインストールするには、[Microsoft Windows SDK v 7.1](http://go.microsoft.com/fwlink/?LinkID=194146&clcid=0x409) をダウンロードしてください。 + +## Windows Communication Foundation プログラミングの初心者向けドキュメント + +- [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] を使用したプログラミングの初心者であり、動作するアプリケーションのサンプルをまず確認する必要がある場合は、「[Windows Communication Foundation サンプル](../../../docs/framework/wcf/samples/index.md)」の一覧に示された各トピックを参照してください。 + +- [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスおよびクライアントの基本的な作成方法を順を追って解説したチュートリアルが必要な場合は、「[チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 + +- [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の背景にある概念に関心がある場合は、「[概念](../../../docs/framework/wcf/conceptual-overview.md)」の各トピックを参照してください。 + +- クライアントおよびサーバーのセキュリティ構成例の図については、「[一般的なセキュリティ シナリオ](../../../docs/framework/wcf/feature-details/common-security-scenarios.md)」を参照してください。 + +## プログラミングの詳細 + +- アプリケーション開発を開始する準備が整っている場合は、「[基本的な WCF プログラミング](../../../docs/framework/wcf/basic-wcf-programming.md)」を参照してください。 + +- [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の特定の機能に関するガイダンスが必要な場合は、「[WCF 機能の詳細](../../../docs/framework/wcf/feature-details/index.md)」の各トピックを参照してください。 + +- 要件に合わせて [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] を拡張したり、カスタマイズしたりする場合は、「[WCF の拡張](../../../docs/framework/wcf/extending/extending-wcf.md)」を参照してください。 + +- [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションの作成やデバッグを支援するツールについては、「[Windows Communication Foundation ツール](../../../docs/framework/wcf/tools.md)」を参照してください。 + +- XML ファイルを使用した構成は、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスおよびクライアントをプログラミングする主な方法の 1 つです。構成ファイルで使用する XML 要素のリファレンス ドキュメントが必要な場合は、「[WCF 構成スキーマ](../../../docs/framework/configure-apps/file-schema/wcf/index.md)」を参照してください。 + +## トラブルシューティング + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の一般的な問題のトラブルシューティングについては、「[WCF トラブルシューティング クイックスタート](../../../docs/framework/wcf/wcf-troubleshooting-quickstart.md)」を参照してください。 + +## Windows Communication Foundation の他のテクノロジの統合 + +- ASP.NET クライアントと通信するサービスを作成する場合は、「[方法 : WCF サービスおよび ASP.NET Web サービス クライアントを相互運用するために構成する](../../../docs/framework/wcf/feature-details/config-wcf-service-with-aspnet-web-service.md)」を参照してください。 + +- [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] リモート処理との統合については、「[.NET リモート処理アプリケーションの WCF への移行](../../../docs/framework/wcf/feature-details/migrating-net-remoting-applications-to-wcf.md)」を参照してください。 + +- 既存の COM\+ アプリケーションを [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスまたはクライアントと統合する場合は、「[COM\+ アプリケーションとの統合の概要](../../../docs/framework/wcf/feature-details/integrating-with-com-plus-applications-overview.md)」を参照してください。 + +- 既存の COM アプリケーションを [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスまたはクライアントと統合する場合は、「[COM アプリケーションとの統合](../../../docs/framework/wcf/feature-details/integrating-with-com-applications.md)」を参照してください。 + +- 既存の MSMQ アプリケーションを [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスまたはクライアントと統合する場合は、「[方法 : WCF エンドポイントを使用してキューに置かれたメッセージを交換する](../../../docs/framework/wcf/feature-details/how-to-exchange-queued-messages-with-wcf-endpoints.md)」および「[方法 : WCF エンドポイントとメッセージ キュー アプリケーションを使用してメッセージを交換する](../../../docs/framework/wcf/feature-details/how-to-exchange-messages-with-wcf-endpoints-and-message-queuing-applications.md)」を参照してください。 + +- インターネット インフォメーション サービス \(IIS\) を使用してサービスをホストする場合は、「[ホスティング サービス](../../../docs/framework/wcf/hosting-services.md)」を参照してください。 + +- [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] で Web サービス拡張 \(WSE: Web Services Extensions\) 3.0 サービスを使用する場合は、「[方法 : WSE 3.0 サービスにアクセスする](../../../docs/framework/wcf/feature-details/how-to-access-a-wse-3-0-service-with-a-wcf-client.md)」を参照してください。 + +## Windows Communication Foundation でサポートされる WS\-\* プロトコル + システム指定のバインディングでサポートされるプロトコルの一覧については、「[システム標準の相互運用性バインディングがサポートしている Web サービス プロトコル](../../../docs/framework/wcf/feature-details/web-services-protocols-supported-by-system-provided-interoperability-bindings.md)」を参照してください。システム指定のバインディングの一覧については、「[システム標準のバインディング](../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。 + +## 参照 + [Windows Communication Foundation サンプル](../../../docs/framework/wcf/samples/index.md) + [概念](../../../docs/framework/wcf/conceptual-overview.md) + [ガイドラインとベスト プラクティス](../../../docs/framework/wcf/guidelines-and-best-practices.md) + [クライアントを構築する](../../../docs/framework/wcf/building-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/guidelines-and-best-practices.md b/docs/framework/wcf/guidelines-and-best-practices.md new file mode 100644 index 00000000000..8e3a849c698 --- /dev/null +++ b/docs/framework/wcf/guidelines-and-best-practices.md @@ -0,0 +1,61 @@ +--- +title: "ガイドラインとベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "ベスト プラクティス [WCF], アプリケーション設計" + - "WCF, ベスト プラクティス" + - "WCF, ガイドライン" + - "Windows Communication Foundation, ベスト プラクティス" + - "Windows Communication Foundation, ガイドライン" +ms.assetid: 5098ba46-6e8d-4e02-b0c5-d737f9fdad84 +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# ガイドラインとベスト プラクティス +このセクションには、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションを作成する際のガイドラインとなるトピックが含まれています。 + +## このセクションの内容 + [ベスト プラクティス : データ コントラクトのバージョン管理](../../../docs/framework/wcf/best-practices-data-contract-versioning.md) + 将来のバージョンが作成されても影響を受けることのないデータ コントラクトを作成する方法と、そのタイミングについて説明します。 + + [サービスのバージョン管理](../../../docs/framework/wcf/service-versioning.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] でのバージョン管理の考え方について説明します。たとえば、変化するビジネス要件や IT 要件を満たしたり、問題を修復したりするために、展開後にサービス \(およびサービスによって公開されるエンドポイント\) を変更しなければならない場合があります。変更が発生するたびに、新しいバージョンのサービスが導入されます。 + + [負荷分散](../../../docs/framework/wcf/load-balancing.md) + Web ファームでの負荷分散のガイドラインを示します。 + + [リソース消費の制御とパフォーマンスの向上](../../../docs/framework/wcf/controlling-resource-consumption-and-improving-performance.md) + 過度のリソース消費を抑え、セキュリティを向上するために用意されているプロパティについて説明し、その使用方法の詳細情報を示します。 + + [ClickOnce を使用して WCF アプリケーションを展開する](../../../docs/framework/wcf/deploying-wcf-applications-with-clickonce.md) + ClickOnce 機能を使用する際の考慮事項について説明します。 + +## 関連項目 + + + + +## 関連項目 + [概念](../../../docs/framework/wcf/conceptual-overview.md) + + [基本的な WCF プログラミング](../../../docs/framework/wcf/basic-wcf-programming.md) + +## 参照 + [Windows Communication Foundation とは](../../../docs/framework/wcf/whats-wcf.md) + [Windows Communication Foundation Samples](http://msdn.microsoft.com/ja-jp/8ec9d192-5d81-4f64-bfd3-90c5e5858c91) + [概念](../../../docs/framework/wcf/conceptual-overview.md) + [クライアントを構築する](../../../docs/framework/wcf/building-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/host-a-wcf-service-net-framework-3-5-iis--net-framework-4.md b/docs/framework/wcf/host-a-wcf-service-net-framework-3-5-iis--net-framework-4.md new file mode 100644 index 00000000000..eafb4cd7486 --- /dev/null +++ b/docs/framework/wcf/host-a-wcf-service-net-framework-3-5-iis--net-framework-4.md @@ -0,0 +1,92 @@ +--- +title: ".NET Framework 4 で実行されている IIS 内の .NET Framework 3.5 で作成された WCF サービスをホストする方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9aabc785-068d-4d32-8841-3ef39308d8d6 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# .NET Framework 4 で実行されている IIS 内の .NET Framework 3.5 で作成された WCF サービスをホストする方法 +[!INCLUDE[netfx40_long](../../../includes/netfx40-long-md.md)] を実行するコンピューターで [!INCLUDE[netfx35_long](../../../includes/netfx35-long-md.md)] を使用して作成された [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスをホストすると、次のテキストで が返される場合があります。 + +```Output +ハンドルされていない例外: System.ServiceModel.ProtocolException: 応答メッセージのコンテンツの種類 text/html; charset=utf-8 が、バインド (application/soap+xml; charset=utf-8) のコンテンツの種類と一致しません。カスタム エンコーダーを使用している場合は、IsContentTypeSupported メソッドが正しく実装されていることを確認してください。応答の先頭の 1024 バイトは ' ' でした。アプリケーション ドメインまたはアプリケーション プールは、現在、バージョン 4 以降の .NET Framework を実行しています。この Web アプリケーションの IIS 設定が 4.0 以降に設定されている場合、または ASP.NET Web 開発サーバーのバージョン 4.0 以降を使用している場合に、この状況が発生することがあります。この Web アプリケーションの Web.config ファイル内の <compilation> 要素に、このバージョンの .NET Framework に必要な targetFrameworkMoniker 属性が含まれていません (<compilation targetFrameworkMoniker=".NETFramework,Version=v4.0">, など)。この属性を使用して Web.config ファイルを更新するか、別のバージョンの .NET Framework を使用するように Web アプリケーションを構成します。... +``` + + または、サービスの .svc ファイルを参照する際に、次のテキストのエラー ページが表示される場合があります。 + +```Output +アプリケーション ドメインまたはアプリケーション プールは、現在、.NET Framework のバージョン 4.0 以降を実行しています。この Web アプリケーションの IIS 設定が 4.0 以降に設定されている場合、または ASP.NET Web 開発サーバーのバージョン 4.0 以降を使用している場合に、この状況が発生することがあります。この Web アプリケーションの Web.config ファイル内の 要素に、このバージョンの .NET Framework に必要な targetFrameworkMoniker 属性が含まれていません ('' など)。この属性を使用して Web.config ファイルを更新するか、別のバージョンの .NET Framework を使用するように Web アプリケーションを構成します。 +``` + + これらのエラーは、IIS が実行されているアプリケーション ドメインが [!INCLUDE[netfx40_short](../../../includes/netfx40-short-md.md)] を実行していて、WCF サービスが [!INCLUDE[netfx35_short](../../../includes/netfx35-short-md.md)] で実行されるように構成されている場合に発生します。このトピックでは、このサービスを実行するために必要な変更について説明します。 + + 次に、\<`compilers`\> 要素を検索し、CompilerVersion プロバイダー オプションの値を 4.0 に変更します。既定では、2 つの \<`compiler`\> 要素が \<`compilers`\> 要素にあります。次の例に示すように、両方の CompilerVersion プロバイダー オプションを更新する必要があります。 + +``` + + + + + + + + + + + + + +``` + +### 必要な targetFramework 属性の追加 + +1. サービスの Web.config ファイルを開き、\<`compilation`\> 要素を探します。 + +2. 次の例に示すように、`targetFramework` 属性を \<`compilation`\> 要素に追加します。 + + ``` + + + + + + + + + + + ``` + +3. \<`compilers`\> 要素を検索し、CompilerVersion プロバイダー オプションの値を 4.0 に変更します。既定では、2 つの \<`compiler`\> 要素が \<`compilers`\> 要素にあります。次の例に示すように、両方の CompilerVersion プロバイダー オプションを更新する必要があります。 + + ``` + + + + + + + + + + + + + + ``` \ No newline at end of file diff --git a/docs/framework/wcf/hosting-services.md b/docs/framework/wcf/hosting-services.md new file mode 100644 index 00000000000..c353104a706 --- /dev/null +++ b/docs/framework/wcf/hosting-services.md @@ -0,0 +1,81 @@ +--- +title: "ホスティング サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "ホスティング サービス [WCF]" +ms.assetid: 192be927-6be2-4fda-98f0-e513c4881acc +caps.latest.revision: 31 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 31 +--- +# ホスティング サービス +アクティブにするには、サービスを作成してそのコンテキストと有効期間を制御するランタイム環境内で、サービスをホストする必要があります。[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスは、マネージ コードをサポートする任意の Windows プロセスで実行されるように設計されています。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] は、サービス指向アプリケーションを構築するための統一されたプログラミング モデルを提供します。 このプログラミング モデルには一貫性があり、サービスが展開されるランタイム環境に影響されません。 これは実際には、ホスト オプションにかかわらず、サービスのコードがほぼ同じになることを意味しています。 + + これらのホスト オプションの範囲は、コンソール アプリケーション内部での実行から、Windows サービスのようなサーバー環境、インターネット インフォメーション サービス \(IIS\) または Windows プロセス アクティブ化サービス \(WAS\) で管理されるワーカー プロセス内での実行までさまざまです。 開発者は、サービスの展開要件を満たすホスト環境を選択します。 このような要件は、アプリケーションを展開するプラットフォーム、メッセージの送受信を行うトランスポート、適切な可用性を保証するために必要なプロセスのリサイクルや管理、その他、管理上または信頼性上の要件から導き出されます。 ホスト オプションの情報とガイドラインについて、次のセクションで説明します。 + +## ホスト オプション + +#### マネージ アプリケーションにおける自己ホスト + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスはすべてのマネージ アプリケーションでホストされます。 これは、展開に必要なインフラストラクチャが最小限になるため、最も柔軟なオプションです。 マネージ アプリケーション コード内にサービスのコードを埋め込み、続いて のインスタンスを作成して開き、サービスを有効にします。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [方法 : マネージ アプリケーションで WCF サービスをホストする](../../../docs/framework/wcf/how-to-host-a-wcf-service-in-a-managed-application.md)。 + + このオプションで可能になる一般的なシナリオには、コンソール アプリケーション内部で実行される [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスと、[!INCLUDE[avalon1](../../../includes/avalon1-md.md)] または Windows フォーム \(WinForms\) に基づくリッチ クライアント アプリケーションの 2 つがあります。 コンソール アプリケーション内部の [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスをホストすることは、一般的にアプリケーションの開発フェーズで有用です。 コンソール アプリケーションにより、アプリケーション内部で起こっている状況を見極めるための情報のデバッグやトレースが容易になり、新しい場所にアプリケーションをコピーして移動することも簡単に行うことができます。 このホスト オプションを使用すると、[!INCLUDE[avalon2](../../../includes/avalon2-md.md)] や WinForms アプリケーションなど、外部と通信を行うリッチ クライアント アプリケーションの作成も容易になります。 たとえば、ユーザー インターフェイスに [!INCLUDE[avalon2](../../../includes/avalon2-md.md)] を使用しながら、他のクライアントからの接続を許容して情報を共有するために [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスをホストするピア ツー ピア コラボレーションのクライアントなどです。 + +#### マネージ Windows サービス + このホスト オプションは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスをマネージ Windows サービス \(従来 NT サービスと呼ばれていたもの\) としてホストするアプリケーション ドメイン \(AppDomain\) の登録から構成されているため、サービスのプロセス有効期間は Windows サービスのサービス コントロール マネージャー \(SCM\) によって制御されます。 自己ホスト オプションと同様、この種類のホスト環境では、ホスト コードをアプリケーションの一部として記述する必要があります。 サービスは、Windows サービスと [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスの両方として実装します。そのためには、 クラスから継承すると同時に、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス コントラクト インターフェイスからも継承します。 次に を作成し、オーバーライドされた [OnStart\(String\ メソッドで開き、オーバーライドされた メソッドで閉じます。 また、 から継承されるインストーラー クラスも実装し、プログラムが Installutil.exe ツールによって Windows サービスとしてインストールされるようにする必要があります。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [方法 : マネージ Windows サービスで WCF サービスをホストする](../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-a-managed-windows-service.md)。 マネージ Windows サービスのホスト オプションによって有効になるシナリオは、メッセージがアクティブ化されていない、セキュリティ保護された環境において、IIS の外部でホストされ、長時間実行される [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスです。 サービスの有効期限は代わりにオペレーティング システムによって制御されます。 このホスト オプションは Windows のすべてのバージョンで使用できます。 + +#### インターネット インフォメーション サービス \(IIS\) + IIS ホスト オプションは [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] と統合され、プロセスのリサイクル、アイドル シャットダウン、処理状況の監視、メッセージに基づくアクティベーションなど、このテクノロジによって提供される機能を使用します。[!INCLUDE[wxp](../../../includes/wxp-md.md)] および [!INCLUDE[ws2003](../../../includes/ws2003-md.md)] オペレーティング システムでは、高可用性と高スケーラビリティが求められる Web サービス アプリケーションのホストには、このオプションが適切なソリューションとなります。 IIS では、顧客がエンタープライズ クラスのサーバー製品に求める統合された管理性も提供されます。 このホスト オプションでは、IIS が正しく構成されている必要がありますが、アプリケーションの一部としてホスト コードを書く必要はありません。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス用に IIS ホストを構成する方法の[!INCLUDE[crabout](../../../includes/crabout-md.md)]については、「[方法 : IIS で WCF サービスをホストする](../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md)」を参照してください。 + + IIS でホストされるサービスは HTTP トランスポートしか使用できません。 IIS 5.1 の実装では、[!INCLUDE[wxp](../../../includes/wxp-md.md)] にいくつかの制限がありました。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 上で IIS 5.1 によって提供される、[!INCLUDE[wxp](../../../includes/wxp-md.md)] サービス用のメッセージ ベースのアクティベーションでは、同じコンピューター上にあるそれ以外の自己ホスト型 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスによる、ポート 80 を使用した通信が妨げられます。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 上で [!INCLUDE[iis601](../../../includes/iis601-md.md)] によってホストした場合は、[!INCLUDE[ws2003](../../../includes/ws2003-md.md)] サービスは他のアプリケーションと同じ AppDomain\/アプリケーション プール\/ワーカー プロセスで実行できます。 ただし、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] と [!INCLUDE[iis601](../../../includes/iis601-md.md)] のどちらもカーネル モードの HTTP スタック \(HTTP.sys\) を使用するため、IIS 5.1 とは異なり、[!INCLUDE[iis601](../../../includes/iis601-md.md)] ではポート 80 を同じコンピューター上で実行される他の自己ホスト型 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスと共有できます。 + +#### Windows プロセス アクティブ化サービス \(WAS\) + Windows プロセス アクティブ化サービス \(WAS\) とは、[!INCLUDE[lserver](../../../includes/lserver-md.md)] でも使用できる [!INCLUDE[wv](../../../includes/wv-md.md)] 用の新しいプロセス アクティブ化機構です。 よく知られている [!INCLUDE[iis601](../../../includes/iis601-md.md)] のプロセス モデル \(アプリケーション プールとメッセージ ベースのプロセス アクティベーション\) とホスト機能 \(迅速な障害保護、状態の監視、プロセスのリサイクルなど\) はそのままですが、HTTP に対する依存性がアクティベーション アーキテクチャから解消されています。[!INCLUDE[iisver](../../../includes/iisver-md.md)] では、WAS を使用して HTTP 経由でのメッセージ ベースのアクティベーションを実現しています。 ただし、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] がサポートする他のプロトコル \(TCP、MSMQ、名前付きパイプなど\) を介してメッセージ ベースのアクティベーションを実現するために、WAS には追加の [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] コンポーネントもプラグインされています。 これにより、IIS のプロセスのリサイクル、迅速な障害保護、一般的な構成システムなど、これまで HTTP ベースのアプリケーションのみで利用可能だった IIS 機能を、通信プロトコルを使用するアプリケーションでも使用できるようになりました。 + + このホスト オプションでは、WAS が正しく構成されている必要がありますが、アプリケーションの一部としてホスト コードを書く必要はありません。 WAS ホストを構成する方法の[!INCLUDE[crabout](../../../includes/crabout-md.md)]については、「[方法 : WAS で WCF サービスをホストする](../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-was.md)」を参照してください。 + +## ホスト環境の選択 + 次の表に、各ホスト オプションに関連する主な利点とシナリオの要点をまとめます。 + +|ホスト環境|一般的なシナリオ|主な利点と制限| +|-----------|--------------|-------------| +|マネージ アプリケーション \("自己ホスト"\)|- 開発時に使用されるコンソール アプリケーション。
- サービスにアクセスするリッチな Winform と [!INCLUDE[avalon2](../../../includes/avalon2-md.md)] クライアント アプリケーション。|- 柔軟性。
- 展開の容易さ。
- サービスのエンタープライズ ソリューションではない。| +|Windows サービス \(従来 NT サービスと呼ばれていたもの\)|- IIS 外でホストされ長時間実行される [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービス。|- サービス プロセスの有効期間は、メッセージ ベースのアクティベーションではなくオペレーティング システムにより制御される。
- すべてのバージョンの Windows でサポートされる。
- セキュリティで保護された環境。| +|IIS 5.1、[!INCLUDE[iis601](../../../includes/iis601-md.md)]|- HTTP プロトコルを使い、インターネット上で [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスを [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] コンテンツと共に同時に実行する。|- プロセスのリサイクル。
- アイドル シャットダウン。
- 処理状況の監視。
- メッセージ ベースのアクティベーション。
- HTTP のみ。| +|Windows プロセス アクティブ化サービス \(WAS\)|- インターネット上で IIS をインストールせずに、さまざまなトランスポート プロトコルを使用して [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスを実行する。|- IIS は不要。
- プロセスのリサイクル。
- アイドル シャットダウン。
- 処理状況の監視。
- メッセージ ベースのアクティベーション。
- HTTP、TCP、名前付きパイプ、および MSMQ で動作する。| +|IIS 7.0|- [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] コンテンツと共に [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] サービスを実行する。
- インターネット上で、さまざまなトランスポート プロトコルを使用して [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスを実行する。|- WAS の利点。
- [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] および IIS コンテンツと統合される。| + + ホスト環境の選択は、その展開先の Windows のバージョン、メッセージの送信に必要なトランスポート、および必要となるプロセスとアプリケーション ドメインのリサイクルの種類に依存します。 次の表に、これらの要件に関連するデータをまとめます。 + +|ホスト環境|プラットフォームの可用性|サポートされるトランスポート|プロセスと AppDomain のリサイクル| +|-----------|------------------|--------------------|----------------------------| +|マネージ アプリケーション \("自己ホスト"\)|[!INCLUDE[wxp](../../../includes/wxp-md.md)], [!INCLUDE[ws2003](../../../includes/ws2003-md.md)], [!INCLUDE[wv](../../../includes/wv-md.md)],

[!INCLUDE[lserver](../../../includes/lserver-md.md)]|HTTP、

net.tcp、

net.pipe、

net.msmq|いいえ| +|Windows サービス \(従来 NT サービスと呼ばれていたもの\)|[!INCLUDE[wxp](../../../includes/wxp-md.md)], [!INCLUDE[ws2003](../../../includes/ws2003-md.md)], [!INCLUDE[wv](../../../includes/wv-md.md)],

[!INCLUDE[lserver](../../../includes/lserver-md.md)]|HTTP、

net.tcp、

net.pipe、

net.msmq|いいえ| +|IIS 5.1|[!INCLUDE[wxp](../../../includes/wxp-md.md)]|HTTP|はい| +|[!INCLUDE[iis601](../../../includes/iis601-md.md)]|[!INCLUDE[ws2003](../../../includes/ws2003-md.md)]|HTTP|はい| +|Windows プロセス アクティブ化サービス \(WAS\)|[!INCLUDE[wv](../../../includes/wv-md.md)], [!INCLUDE[lserver](../../../includes/lserver-md.md)]|HTTP、

net.tcp、

net.pipe、

net.msmq|はい| + + 信頼されていないホストからサービスや拡張機能を実行すると、セキュリティが損なわれるので注意してください。 また、偽装して を開くと、アプリケーションは、ユーザーの をキャッシュするなどして、ユーザーがログオフしていないことを確認する必要があります。 + +## 参照 + [システム要件](../../../docs/framework/wcf/wcf-system-requirements.md) + [基本的なプログラミング ライフサイクル](../../../docs/framework/wcf/basic-programming-lifecycle.md) + [サービス コントラクトの実装](../../../docs/framework/wcf/implementing-service-contracts.md) + [方法 : IIS で WCF サービスをホストする](../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md) + [方法 : WAS で WCF サービスをホストする](../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-was.md) + [方法 : マネージ Windows サービスで WCF サービスをホストする](../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-a-managed-windows-service.md) + [方法 : マネージ アプリケーションで WCF サービスをホストする](../../../docs/framework/wcf/how-to-host-a-wcf-service-in-a-managed-application.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-configure-a-basic-wcf-client.md b/docs/framework/wcf/how-to-configure-a-basic-wcf-client.md new file mode 100644 index 00000000000..b14e2600673 --- /dev/null +++ b/docs/framework/wcf/how-to-configure-a-basic-wcf-client.md @@ -0,0 +1,93 @@ +--- +title: "方法 : 基本的な Windows Communication Foundation クライアントを構成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "WCF クライアント [WCF], 構成" +ms.assetid: d067b86d-afb0-47bf-94f6-45180a3d8d78 +caps.latest.revision: 47 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 47 +--- +# 方法 : 基本的な Windows Communication Foundation クライアントを構成する +これは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションの作成に必要な 6 つのタスクのうち、5 番目のタスクです。 6 つのすべてのタスクの概要については、「[チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 + + ここでは、[!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] の "サービス参照の追加" 機能、または[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用して生成されたクライアント構成ファイルについて説明します。 クライアントを構成するには、クライアントがサービスにアクセスするために使用するエンドポイントを指定します。 エンドポイントには、アドレス、バインディング、およびコントラクトがあり、クライアントを構成する過程でそれぞれを指定する必要があります。 + +### Windows Communication Foundation クライアントを構成するには + +1. GettingStartedClient プロジェクトから生成された構成ファイル \(App.config\) を開きます。 生成された構成ファイルを次の例に示します。 [\](../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md)[\ セクション内に](http://msdn.microsoft.com/ja-jp/13aa23b7-2f08-4add-8dbf-a99f8127c017) 要素があるのがわかります。 + + ``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ``` + + この例では、アドレス http:\/\/localhost:8000\/ServiceModelSamples\/Service\/CalculatorService に配置されたサービスにアクセスするために、クライアントが使用するエンドポイントを構成しています。 + + endpoint 要素は、`ServiceReference1.ICalculator` サービス コントラクトが、WCF クライアントと WCF サービス間の通信に使用されるように指定します。 WCF チャネルはシステム標準の で構成されます。 このコントラクトは、Visual Studio の "サービス参照の追加" を使用して生成されました。 基本的には、GettingStartedLib プロジェクトで定義されているコントラクトのコピーです。 バインディングは、トランスポートとして HTTP を指定し、相互運用可能なセキュリティ、およびその他の構成詳細を指定します。 + +2. この構成で生成されたクライアントを使用する方法[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[方法 : クライアントを使用する](../../../docs/framework/wcf/how-to-use-a-wcf-client.md)」を参照してください。 + +## 参照 + [サービスとクライアントを構成するためのバインディングの使用](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) + [方法 : クライアントを作成する](../../../docs/framework/wcf/how-to-create-a-wcf-client.md) + [概要](../../../docs/framework/wcf/samples/getting-started-sample.md) + [自己ホスト](../../../docs/framework/wcf/samples/self-host.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-create-a-wcf-client.md b/docs/framework/wcf/how-to-create-a-wcf-client.md new file mode 100644 index 00000000000..30d4eb1ead6 --- /dev/null +++ b/docs/framework/wcf/how-to-create-a-wcf-client.md @@ -0,0 +1,71 @@ +--- +title: "方法 : Windows Communication Foundation クライアントを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "クライアント [WCF], 実行" + - "WCF クライアント [WCF], 実行" +ms.assetid: a67884cc-1c4b-416b-8c96-5c954099f19f +caps.latest.revision: 64 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 64 +--- +# 方法 : Windows Communication Foundation クライアントを作成する +これは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションの作成に必要な 6 つのタスクのうち、4 番目のタスクです。6 つのすべてのタスクの概要については、「[チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 + + ここでは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスからメタデータを取得し、このメタデータを使用して、サービスにアクセスできる [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアント プロキシを作成する方法について説明します。このタスクは、Visual Studio によって提供される "サービス参照の追加" 機能を使用することで完了できます。このツールは、サービスの MEX エンドポイントからメタデータを取得し、ユーザーが選択した言語 \(既定では C\#\) でクライアント プロキシのマネージ ソース コード ファイルを生成します。このツールでは、クライアント プロキシの作成だけでなく、クライアントの構成ファイルの作成または更新も行います。この構成ファイルにより、クライアント アプリケーションはエンドポイントのいずれかにあるサービスに接続できるようになります。 + +> [!NOTE] +> また、Visual Studio 内で "サービス参照の追加" を使用する代わりに、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) ツールを使用して、プロキシ クラスおよび構成を生成することもできます。 + +> [!WARNING] +> [!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] のクラス ライブラリ プロジェクトから [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスを呼び出すときは、サービス参照の追加機能を使用して、プロキシおよび関連構成ファイルを自動的に生成できます。この構成ファイルはクラス ライブラリ プロジェクトで使用されません。クラス ライブラリを呼び出す実行可能ファイルの app.config ファイルに、生成された構成ファイル内の設定を追加する必要があります。 + + クライアント アプリケーションは生成されたプロキシ クラスを使用して、サービスと通信します。この手順については、「[方法 : クライアントを使用する](../../../docs/framework/wcf/how-to-use-a-wcf-client.md)」を参照してください。 + +### Windows Communication Foundation クライアントを作成するには + +1. 新しいコンソール アプリケーション プロジェクトを作成します。入門ソリューションを右クリックし、**\[追加\]**、**\[新しいプロジェクト\]** の順にクリックします。**\[新しいプロジェクトの追加\]** ダイアログ ボックスの左側で、**\[C\#\]** または **\[VB\]** の **\[Windows\]** をクリックします。ダイアログ ボックスの中央のセクションで、**\[コンソール アプリケーション\]** を選択します。プロジェクトに `GettingStartedClient` という名前を付けます。 + +2. GettingStartedClient プロジェクトのターゲット フレームワークを .NET Framework 4.5 に設定します。ソリューション エクスプローラーで **\[GettingStartedClient\]** を右クリックし、**\[プロパティ\]** を選択します。**\[ターゲット フレームワーク\]** ボックスの一覧の **\[.NET Framework 4.5\]** をクリックします。VB プロジェクトのターゲット フレームワークを設定する方法は多少異なり、GettingStartedClient プロジェクトの \[プロパティ\] ダイアログ ボックスで、画面左側の **\[コンパイル\]** タブをクリックし、ダイアログ ボックスの左下隅にある **\[詳細コンパイル オプション\]** をクリックします。次に、**\[ターゲット フレームワーク\]** ボックスの一覧の **\[.NET Framework 4.5\]** をクリックします。 + + ターゲット フレームワークを設定すると、Visual Studio 2011 はソリューションを再読み込みします。ダイアログが表示されたら、**\[OK\]** をクリックします。 + +3. System.ServiceModel への参照を GettingStartedClient プロジェクトに追加します。ソリューション エクスプローラーで GettingStartedClient プロジェクトの **\[参照\]** フォルダーを右クリックし、**\[参照の追加\]** をクリックします。**\[参照の追加\]** ダイアログ ボックスの左側で、**\[フレームワーク\]** を選択します。\[アセンブリの検索\] ボックスに「`System.ServiceModel`」と入力します。ダイアログ ボックスの中央のセクションで、**\[System.ServiceModel\]** を選択し、**\[追加\]**、**\[閉じる\]** の順にクリックします。メイン メニューの **\[すべて保存\]** をクリックして、ソリューションを保存します。 + +4. 次に、電卓サービスへのサービス参照を追加します。これを実行する前に、GettingStartedHost コンソール アプリケーションを起動する必要があります。ホストが実行中になったら、ソリューション エクスプローラーで GettingStartedClient プロジェクトの \[参照\] フォルダーを右クリックし、\[サービス参照の追加\] をクリックします。\[サービス参照の追加\] ダイアログ ボックスの \[アドレス\] ボックスに URL \(http:\/\/localhost:8000\/ServiceModelSamples\/Service\) を入力し、**\[移動\]** をクリックします。\[CalculatorService\] が \[サービス\] ボックスに表示されたら、\[CalculatorService\] をダブルクリックして、そのサービスによって実装されているサービス コントラクトを展開して表示します。既定の名前空間を変更せずに、**\[OK\]** をクリックします。 + + Visual Studio を使用してサービスへの参照を追加すると、新しい項目がソリューション エクスプローラーの GettingStartedClient プロジェクトの \[サービス参照\] フォルダーの下に表示されます。[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) ツールを使用した場合、ソース コード ファイルおよび app.config ファイルが生成されます。 + + コマンド ライン ツールである [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を適切なスイッチと共に使用して、クライアント コードを作成することもできます。次の例では、サービスのコード ファイルと構成ファイルを生成しています。最初の例は VB でプロキシを生成する方法を示し、2 番目の例は C\# でプロキシを生成する方法を示しています。 + + ``` + svcutil.exe /language:vb /out:generatedProxy.vb /config:app.config http://localhost:8000/ServiceModelSamples/service + + ``` + + ```csharp + svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://localhost:8000/ServiceModelSamples/service + + ``` + + ここでは、クライアント アプリケーションが電卓サービスを呼び出すために使用するプロキシを作成しました。シリーズの次のトピックに進んでください: [方法 : クライアントを構成する](../../../docs/framework/wcf/how-to-configure-a-basic-wcf-client.md) + +## 参照 + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) + [概要](../../../docs/framework/wcf/samples/getting-started-sample.md) + [自己ホスト](../../../docs/framework/wcf/samples/self-host.md) + [方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md) + [方法 : Svcutil.exe を使用してメタデータ ドキュメントをダウンロードする](../../../docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-download-metadata-documents.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-declare-faults-in-service-contracts.md b/docs/framework/wcf/how-to-declare-faults-in-service-contracts.md new file mode 100644 index 00000000000..e5e5d9c8582 --- /dev/null +++ b/docs/framework/wcf/how-to-declare-faults-in-service-contracts.md @@ -0,0 +1,53 @@ +--- +title: "方法 : サービス コントラクトでのエラーを宣言する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e8da98e7-d22f-4f60-ac82-3fb0928a353f +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 方法 : サービス コントラクトでのエラーを宣言する +マネージ コードでは、エラー条件が発生すると例外がスローされます。 しかし [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションでは、サービス コントラクトで SOAP エラーを宣言することにより、どのエラー情報をクライアントに通知するかを指定するようになっています。 例外とエラーの関係の概要については、「[コントラクトおよびサービスのエラーの指定と処理](../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md)」を参照してください。 + +### SOAP エラーを指定するサービス コントラクトを作成する + +1. サービス コントラクトを作成し、操作をいくつか定義します。 例については、「[方法 : サービス コントラクトを定義する](../../../docs/framework/wcf/how-to-define-a-wcf-service-contract.md)」を参照してください。 + +2. 操作を選択します。これに対して指定したエラー条件が発生したとき、クライアント側に通知することになります。 どのようなエラー条件を SOAP エラーとしてクライアントに通知する必要があるかについては、「[コントラクトおよびサービスのエラーの指定と処理](../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md)」を参照してください。 + +3. 選択した操作に対して 属性を適用し、シリアル化可能なエラー型をコンストラクターに渡します。 シリアル化可能な型の作成方法および使用方法の詳細については、「[サービス コントラクトでのデータ転送の指定](../../../docs/framework/wcf/feature-details/specifying-data-transfer-in-service-contracts.md)」を参照してください。 `SampleMethod` 操作で `GreetingFault` を返せるように指定する例を次に示します。 + + [!code-csharp[FaultContractAttribute#4](../../../samples/snippets/csharp/VS_Snippets_CFX/faultcontractattribute/cs/services.cs#4)] + [!code-vb[FaultContractAttribute#4](../../../samples/snippets/visualbasic/VS_Snippets_CFX/faultcontractattribute/vb/services.vb#4)] + +4. コントラクト内でクライアントへの通知が必要な操作すべてについて、手順 2. および 3. を繰り返します。 + +## 指定した SOAP エラーを返す操作の実装 + エラー状態を呼び出し元アプリケーションに通知するために、前の手順で指定したような特定の SOAP エラーを操作中に返せるように指定したので、次に実際に通知処理を実装します。 + +#### 指定した SOAP エラーを操作中に例外としてスローする + +1. 操作中に で指定したエラー条件が発生したとき、 例外を生成してスローする、というコードを記述します。SOAP エラーは型パラメーターとして、生成する例外に渡します。 前の手順で示した `SampleMethod` 内で `GreetingFault` 例外をスローするコード例を次に示します。 + + [!code-csharp[FaultContractAttribute#5](../../../samples/snippets/csharp/VS_Snippets_CFX/faultcontractattribute/cs/services.cs#5)] + [!code-vb[FaultContractAttribute#5](../../../samples/snippets/visualbasic/VS_Snippets_CFX/faultcontractattribute/vb/services.vb#5)] + +## 使用例 + `SampleMethod` 操作内で `GreetingFault` エラーが発生した場合の処理を実装したコード例を次に示します。 + + [!code-csharp[FaultContractAttribute#1](../../../samples/snippets/csharp/VS_Snippets_CFX/faultcontractattribute/cs/services.cs#1)] + [!code-vb[FaultContractAttribute#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/faultcontractattribute/vb/services.vb#1)] + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/wcf/how-to-define-a-wcf-service-contract.md b/docs/framework/wcf/how-to-define-a-wcf-service-contract.md new file mode 100644 index 00000000000..0db9acc0692 --- /dev/null +++ b/docs/framework/wcf/how-to-define-a-wcf-service-contract.md @@ -0,0 +1,101 @@ +--- +title: "方法 : Windows Communication Foundation サービス コントラクトを定義する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "サービス コントラクト [WCF], 定義" +ms.assetid: 67bf05b7-1d08-4911-83b7-a45d0b036fc3 +caps.latest.revision: 58 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 58 +--- +# 方法 : Windows Communication Foundation サービス コントラクトを定義する +これは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションの作成に必要な 6 つのタスクのうち、1 番目のタスクです。6 つのすべてのタスクの概要については、「[チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスを作成する場合、まずサービス コントラクトを定義します。サービス コントラクトは、サービスがサポートする操作を指定します。操作は Web サービス メソッドと見なすことができます。コントラクトは C\+\+、C\#、または Visual Basic \(VB\) インターフェイスを定義することで作成します。インターフェイスの各メソッドは、特定のサービス操作に対応しています。各インターフェイスには が適用されており、各操作には 属性が適用されている必要があります。 属性を持つインターフェイス内のメソッドに 属性がない場合、そのメソッドはサービスによって公開されません。 + + 手順の後に、このタスクに使用するコード例を示します。 + +### サービス コントラクトを定義するには + +1. **\[スタート\]** メニューで [!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] を右クリックし、**\[管理者として実行\]** をクリックして、管理者としてプログラムを開きます。 + +2. **\[ファイル\]** メニューの **\[新規作成\]** をポイントして **\[プロジェクト\]** をクリックすることにより、WCF サービス ライブラリ プロジェクトを作成します。**\[新しいプロジェクト\]** ダイアログで、左側の **\[Visual C\#\]** \(C\# プロジェクトの場合\) を展開するか、または **\[他の言語\]** を展開し、**\[Visual Basic\]** \(Visual Basic プロジェクトの場合\) を展開します。選択した言語の **\[WCF\]** を選択します。プロジェクト テンプレートの一覧がダイアログの中央部分に表示されます。**\[WCF サービス ライブラリ\]** を選択します。**\[名前\]** ボックスに「`GettingStartedLib`」と入力し、ダイアログの最下部の **\[ソリューション名\]** ボックスに「`GettingStarted`」と入力します。 + +3. Visual Studio により、IService1.cs \(または IService1.vb\)、Service1.cs \(または Service1.vb\)、App.config の 3 つのファイルを含むプロジェクトが作成されます。IService1 ファイルには、既定のサービス コントラクトが含まれています。Service1 ファイルには、サービス コントラクトの既定の実装が含まれています。App.config ファイルには、Visual Studio WCF サービス ホストに既定のサービスを読み込むために必要な構成が含まれています。WCF サービス ホスト ツールの詳細については、「[WCF サービス ホスト \(WcfSvcHost.exe\)](../../../docs/framework/wcf/wcf-service-host-wcfsvchost-exe.md)」を参照してください。 + +4. IService1.cs または IService1.vb ファイルを開き、名前空間の宣言を残したまま、名前空間宣言内のコードを削除します。次のコードに示すように、名前空間宣言内に新しいインターフェイス `ICalculator` を定義します。 + + ``` + // IService.cs + using System; + using System.Collections.Generic; + using System.Linq; + using System.Runtime.Serialization; + using System.ServiceModel; + using System.Text; + + namespace GettingStartedLib + { + [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] + public interface ICalculator + { + [OperationContract] + double Add(double n1, double n2); + [OperationContract] + double Subtract(double n1, double n2); + [OperationContract] + double Multiply(double n1, double n2); + [OperationContract] + double Divide(double n1, double n2); + } + } + + ``` + + ``` + ‘IService.vb + Imports System + Imports System.ServiceModel + + Namespace GettingStartedLib + + _ + Public Interface ICalculator + + _ + Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double + _ + Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double + _ + Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double + _ + Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double + End Interface + End Namespace + + ``` + + このコントラクトは、オンライン電卓を定義します。`ICalculator` インターフェイスは 属性でマークされています。この属性は、コントラクト名を区別するために使用される名前空間を定義します。各電卓操作は 属性でマークされています。 + + > [!NOTE] + > 属性を使用してインターフェイス、メンバー、またはクラスに注釈を付けるときは、属性名から "Attribute" 部分を削除できます。したがって、 は、C\# では `[ServiceContract]`、Visual Basic では `` になります。 + +## 参照 + + + [方法 : サービス コントラクトを実装する](../../../docs/framework/wcf/how-to-implement-a-wcf-contract.md) + [概要](../../../docs/framework/wcf/samples/getting-started-sample.md) + [自己ホスト](../../../docs/framework/wcf/samples/self-host.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-examine-the-security-context.md b/docs/framework/wcf/how-to-examine-the-security-context.md new file mode 100644 index 00000000000..5a52ffb3454 --- /dev/null +++ b/docs/framework/wcf/how-to-examine-the-security-context.md @@ -0,0 +1,63 @@ +--- +title: "方法 : セキュリティ コンテキストを調べる | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Claimset クラス" + - "ServiceSecurityContext クラス" + - "WCF, セキュリティ" +ms.assetid: 389b5a57-4175-4bc0-ada0-fc750d51149f +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 13 +--- +# 方法 : セキュリティ コンテキストを調べる +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスのプログラミングを行う場合、サービス セキュリティ コンテキストを使用すると、サービスの認証で使用されるクライアントの資格情報とクレームの詳細を確認できます。これは、 クラスのプロパティを使用することで可能になります。 + + たとえば、 プロパティまたは プロパティを使用すると、現在のクライアントの ID を取得できます。クライアントが匿名であるかどうかを確認するには、 プロパティを使用します。 + + また、 プロパティにあるクレームのコレクションを反復処理することによって、クライアントのためにどのようなクレームが作成されているのかを確認することもできます。 + +### 現在のセキュリティ コンテキストを取得するには + +- 現在のセキュリティ コンテキストを取得するためには、静的プロパティ にアクセスします。参照から現在のコンテキストの任意のプロパティを調べます。 + +### 呼び出し元の ID を確認するには + +1. プロパティおよび プロパティの値を表示します。 + +### 呼び出し元のクレームを解析するには + +1. 現在の クラスを返します。 プロパティを使用して、現在のサービス セキュリティ コンテキストを返し、次に プロパティを使用して `AuthorizationContext` を返します。 + +2. クラスの プロパティによって返された オブジェクトのコレクションを解析します。 + +## 使用例 + 次の例では、現在のセキュリティ コンテキストの プロパティおよび プロパティの値、 プロパティの値、クレームのリソース値、および現在のセキュリティ コンテキストのすべてのクレームの プロパティを表示します。 + + [!code-csharp[c_PrincipalPermissionAttribute#4](../../../samples/snippets/csharp/VS_Snippets_CFX/c_principalpermissionattribute/cs/source.cs#4)] + [!code-vb[c_PrincipalPermissionAttribute#4](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_principalpermissionattribute/vb/source.vb#4)] + +## コードのコンパイル + コードでは、次の名前空間を使用します。 + +- + +- + +- + +- + +## 参照 + [サービスのセキュリティ保護](../../../docs/framework/wcf/securing-services.md) + [サービス ID と認証](../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-host-a-wcf-service-in-a-managed-application.md b/docs/framework/wcf/how-to-host-a-wcf-service-in-a-managed-application.md new file mode 100644 index 00000000000..0ce675b3201 --- /dev/null +++ b/docs/framework/wcf/how-to-host-a-wcf-service-in-a-managed-application.md @@ -0,0 +1,109 @@ +--- +title: "方法 : マネージ アプリケーションで WCF サービスをホストする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 5eb29db0-b6dc-4e77-8c68-0a62f79d743b +caps.latest.revision: 42 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 42 +--- +# 方法 : マネージ アプリケーションで WCF サービスをホストする +マネージ アプリケーションでサービスをホストするには、マネージ アプリケーション コード内にサービスのコードを埋め込み、サービスのエンドポイントをコードで強制的に定義するか、構成を使用して宣言により定義してから、または既定のエンドポイントを使用して、 のインスタンスを作成します。 + + メッセージの受信を開始するには、 を呼び出します。これにより、サービスのリスナーが作成されて開きます。この方法によるサービスのホストは、マネージ アプリケーション自体がホスト作業を行うため、"自己ホスト" と呼ばれることがあります。サービスを閉じるには、 を呼び出します。 + + サービスは、マネージ Windows サービス、インターネット インフォメーション サービス \(IIS\)、または Windows プロセス アクティブ化サービス \(WAS\) でホストすることもできます。サービスのホスティング[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[ホスティング サービス](../../../docs/framework/wcf/hosting-services.md)」を参照してください。 + + マネージ アプリケーションでのサービスのホストは、展開するインフラストラクチャが最小限で済むため、最も柔軟性があります。マネージ アプリケーションでのホスティング サービス[!INCLUDE[crabout](../../../includes/crabout-md.md)]、[マネージ アプリケーションのホスト](../../../docs/framework/wcf/feature-details/hosting-in-a-managed-application.md)」を参照してください。 + + 次の手順では、自己ホスト型サービスをコンソール アプリケーションに実装する方法を示します。 + +### 自己ホスト型サービスを作成するには + +1. [!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] を開き、**\[ファイル\]** メニューの **\[新規作成\]**、**\[プロジェクト\]** の順にクリックします。 + +2. **\[インストールされているテンプレート\]** ボックスで **\[Visual C\#\]**、**\[Windows\]** または **\[Visual Basic\]**、**\[Windows\]** を選択します。[!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] の設定に応じて、選択した内容の 1 つまたは両方が **\[インストールされているテンプレート\]** ボックスの **\[他の言語\]** ノードに表示されます。 + +3. **\[Windows\]** ボックスから **\[コンソール アプリケーション\]** を選択します。**\[名前\]** ボックスに「`SelfHost`」と入力して **\[OK\]** をクリックします。 + +4. **ソリューション エクスプローラー**で **\[SelfHost\]** を右クリックし、**\[参照の追加\]** をクリックします。**\[.NET\]** タブの **\[System.ServiceModel\]** をクリックし、**\[OK\]** をクリックします。 + + > [!TIP] + > **ソリューション エクスプローラー** ウィンドウが表示されない場合は、**\[表示\]** メニューの **\[ソリューション エクスプローラー\]** をクリックします。 + +5. まだ開いていない場合は、**ソリューション エクスプローラー**で **\[Program.cs\]** または **\[Module1.vb\]** をダブルクリックして、コード ウィンドウで開きます。ファイルの先頭に次のステートメントを追加します。 + + [!code-csharp[CFX_SelfHost4#1](../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_selfhost4/cs/program.cs#1)] + [!code-vb[CFX_SelfHost4#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/cfx_selfhost4/vb/module1.vb#1)] + +6. サービス コントラクトを定義して実装します。この例では、サービスへの入力に基づいてメッセージを返す `HelloWorldService` を定義します。 + + [!code-csharp[CFX_SelfHost4#2](../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_selfhost4/cs/program.cs#2)] + [!code-vb[CFX_SelfHost4#2](../../../samples/snippets/visualbasic/VS_Snippets_CFX/cfx_selfhost4/vb/module1.vb#2)] + + > [!NOTE] + > サービス インターフェイスを定義および実装する方法[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[方法 : サービス コントラクトを定義する](../../../docs/framework/wcf/how-to-define-a-wcf-service-contract.md)」および「[方法 : サービス コントラクトを実装する](../../../docs/framework/wcf/how-to-implement-a-wcf-contract.md)」を参照してください。 + +7. `Main` メソッドの上部で、サービスのベース アドレスで クラスのインスタンスを作成します。 + + [!code-csharp[CFX_SelfHost4#3](../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_selfhost4/cs/program.cs#3)] + [!code-vb[CFX_SelfHost4#3](../../../samples/snippets/visualbasic/VS_Snippets_CFX/cfx_selfhost4/vb/module1.vb#3)] + +8. クラスのインスタンスを作成して、サービス型を表す とベース アドレス URI \(Uniform Resource Identifier\) を [ServiceHost\(Type, Uri\ に渡します。メタデータ公開を有効にして、 メソッドを呼び出し、サービスを初期化してメッセージを受信する準備をします。 + + [!code-csharp[CFX_SelfHost4#4](../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_selfhost4/cs/program.cs#4)] + [!code-vb[CFX_SelfHost4#4](../../../samples/snippets/visualbasic/VS_Snippets_CFX/cfx_selfhost4/vb/module1.vb#4)] + + > [!NOTE] + > この例では、既定のエンドポイントを使用するので、このサービスには構成ファイルは必要ありません。エンドポイントが構成されていない場合、ランタイムは、サービスによって実装されたサービス コントラクトごとに 1 つのエンドポイントを各ベース アドレスに作成します。既定のエンドポイント[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[簡略化された構成](../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +9. Ctrl キーと Shift キーを押しながら B キーを押して、ソリューションをビルドします。 + +### サービスをテストするには + +1. Ctrl キーを押しながら F5 キーを押してサービスを実行します。 + +2. **\[WCF のテスト用クライアント\]** を開きます。 + + > [!TIP] + > **\[WCF のテスト用クライアント\]** を開くには、[!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] コマンド プロンプトを開いて、**WcfTestClient.exe** を実行します。 + +3. **\[ファイル\]** メニューの **\[サービスの追加\]** をクリックします。 + +4. アドレス ボックスに「`http://localhost:8080/hello`」と入力し、**\[OK\]** をクリックします。 + + > [!TIP] + > サービスが実行していることを確認してください。サービスが実行していない場合、この手順は失敗します。コードでベース アドレスを変更した場合は、この手順で、変更したアドレスを使用します。 + +5. **\[マイ サービス プロジェクト\]** ノードの **\[SayHello\]** をダブルクリックします。自分の名前を **\[要求\]** ボックスの **\[値\]** 列に入力して、**\[起動\]** をクリックします。応答メッセージが **\[応答\]** ボックスに表示されます。 + +## 使用例 + `HelloWorldService` 型のサービスをホストする オブジェクトを作成し、 メソッドを呼び出す例を、次に示します。ベース アドレスがコードで指定され、メタデータ公開が有効化されていて、既定のエンドポイントが使用されています。 + + [!code-csharp[CFX_SelfHost4#5](../../../samples/snippets/csharp/VS_Snippets_CFX/cfx_selfhost4/cs/program.cs#5)] + [!code-vb[CFX_SelfHost4#5](../../../samples/snippets/visualbasic/VS_Snippets_CFX/cfx_selfhost4/vb/module1.vb#5)] + +## 参照 + + + + [方法 : IIS で WCF サービスをホストする](../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md) + [自己ホスト](../../../docs/framework/wcf/samples/self-host.md) + [ホスティング サービス](../../../docs/framework/wcf/hosting-services.md) + [方法 : サービス コントラクトを定義する](../../../docs/framework/wcf/how-to-define-a-wcf-service-contract.md) + [方法 : サービス コントラクトを実装する](../../../docs/framework/wcf/how-to-implement-a-wcf-contract.md) + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) + [サービスとクライアントを構成するためのバインディングの使用](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) + [システム標準のバインディング](../../../docs/framework/wcf/system-provided-bindings.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-host-and-run-a-basic-wcf-service.md b/docs/framework/wcf/how-to-host-and-run-a-basic-wcf-service.md new file mode 100644 index 00000000000..f180b43ceb1 --- /dev/null +++ b/docs/framework/wcf/how-to-host-and-run-a-basic-wcf-service.md @@ -0,0 +1,440 @@ +--- +title: "方法 : 基本的な Windows Communication Foundation サービスをホストおよび実行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "WCF サービス [WCF]" + - "WCF サービス [WCF], 実行" +ms.assetid: 31774d36-923b-4e2d-812e-aa190127266f +caps.latest.revision: 58 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 58 +--- +# 方法 : 基本的な Windows Communication Foundation サービスをホストおよび実行する +これは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションの作成に必要な 6 つのタスクのうち、3 番目のタスクです。6 つのすべてのタスクの概要については、「[チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 + + このトピックでは、コンソール アプリケーションで [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスをホストする方法について説明します。この操作は、次の手順から構成されます。 + +- コンソール アプリケーション プロジェクトを作成し、サービスをホストします。 + +- サービスのサービス ホストを作成します。 + +- メタデータ交換を有効にします。 + +- サービス ホストを開きます。 + + このタスクで書かれるコードの全容は手順に続いて提供されている例で見ることができます。 + +### 新しいコンソール アプリケーションを作成し、サービスをホストするには + +1. 新しいコンソール アプリケーション プロジェクトを作成します。入門ソリューションを右クリックし、**\[追加\]**、**\[新しいプロジェクト\]** の順にクリックします。**\[新しいプロジェクトの追加\]** ダイアログ ボックスの左側で、**\[C\#\]** または **\[VB\]** の **\[Windows\]** をクリックします。ダイアログ ボックスの中央のセクションで、**\[コンソール アプリケーション\]** を選択します。プロジェクトに GettingStartedHost という名前を付けます。 + +2. GettingStartedHost プロジェクトのターゲット フレームワークを .NET Framework 4.5 に設定します。ソリューション エクスプローラーで **\[GettingStartedHost\]** を右クリックし、**\[プロパティ\]** を選択します。**\[ターゲット フレームワーク\]** ボックスの一覧の **\[.NET Framework 4.5\]** をクリックします。VB プロジェクトのターゲット フレームワークを設定する方法は多少異なり、GettingStartedHost プロジェクトの \[プロパティ\] ダイアログ ボックスで、画面左側の **\[コンパイル\]** タブをクリックし、ダイアログ ボックスの左下隅にある **\[詳細コンパイル オプション\]** をクリックします。次に、**\[ターゲット フレームワーク\]** ボックスの一覧の **\[.NET Framework 4.5\]** をクリックします。 + + ターゲット フレームワークを設定すると、[!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] はソリューションを再読み込みします。ダイアログが表示されたら、**\[OK\]** をクリックします。 + +3. GettingStartedLib プロジェクトへの参照を GettingStartedHost プロジェクトに追加します。ソリューション エクスプローラーで GettingStartedHost プロジェクトの **\[参照\]** フォルダーを右クリックし、**\[参照の追加\]** をクリックします。**\[参照の追加\]** ダイアログで、ダイアログの左側の **\[ソリューション\]** を選択します。ダイアログの中央セクションで \[GettingStartedLib\] を選択し、**\[追加\]** をクリックします。これにより、GettingStartedLib に定義されている型を GettingStartedHost プロジェクトで利用できるようになります。 + +4. System.ServiceModel への参照を GettingStartedHost プロジェクトに追加します。ソリューション エクスプローラーで GettingStartedHost プロジェクトの **\[参照\]** フォルダーを右クリックし、**\[参照の追加\]** をクリックします。**\[参照の追加\]** ダイアログ ボックスの左側で、**\[フレームワーク\]** を選択します。\[アセンブリの検索\] ボックスに「`System.ServiceModel`」と入力します。ダイアログ ボックスの中央のセクションで、**\[System.ServiceModel\]** を選択し、**\[追加\]**、**\[閉じる\]** の順にクリックします。メイン メニューの \[すべて保存\] をクリックして、ソリューションを保存します。 + +### サービスをホストするには + +- Program.cs ファイルまたは Module.vb ファイルを開き、次のコードを追加します。 + + ``` + // program.cs + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + using System.ServiceModel; + using GettingStartedLib; + using System.ServiceModel.Description; + + namespace GettingStartedHost + { + class Program + { + static void Main(string[] args) + { + // Step 1 Create a URI to serve as the base address. + Uri baseAddress = new Uri("http://localhost:8000/GettingStarted/"); + + // Step 2 Create a ServiceHost instance + ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress); + + try + { + // Step 3 Add a service endpoint. + selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService"); + + // Step 4 Enable metadata exchange. + ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); + smb.HttpGetEnabled = true; + selfHost.Description.Behaviors.Add(smb); + + // Step 5 Start the service. + selfHost.Open(); + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + + // Close the ServiceHostBase to shutdown the service. + selfHost.Close(); + } + catch (CommunicationException ce) + { + Console.WriteLine("An exception occurred: {0}", ce.Message); + selfHost.Abort(); + } + } + } + } + + ``` + + ``` + ‘Module1.vb + Imports System + Imports System.ServiceModel + Imports System.ServiceModel.Description + Imports GettingStartedLibVB.GettingStartedLib + + Module Service + + Class Program + Shared Sub Main() + ' Step 1 Create a URI to serve as the base address + Dim baseAddress As New Uri("http://localhost:8000/ServiceModelSamples/Service") + + ' Step 2 Create a ServiceHost instance + Dim selfHost As New ServiceHost(GetType(CalculatorService), baseAddress) + Try + + ' Step 3 Add a service endpoint + ' Add a service endpoint + selfHost.AddServiceEndpoint( _ + GetType(ICalculator), _ + New WSHttpBinding(), _ + "CalculatorService") + + ' Step 4 Enable metadata exchange. + Dim smb As New ServiceMetadataBehavior() + smb.HttpGetEnabled = True + selfHost.Description.Behaviors.Add(smb) + + ' Step 5 Start the service + selfHost.Open() + Console.WriteLine("The service is ready.") + Console.WriteLine("Press to terminate service.") + Console.WriteLine() + Console.ReadLine() + + ' Close the ServiceHostBase to shutdown the service. + selfHost.Close() + Catch ce As CommunicationException + Console.WriteLine("An exception occurred: {0}", ce.Message) + selfHost.Abort() + End Try + End Sub + End Class + + End Module + + ``` + + 1. 手順 1 \- サービスのベース アドレスを保持する Uri クラスのインスタンスを作成します。サービスは、ベース アドレスとオプションの URI を含む URL によって識別されます。ベース アドレスの書式は、\[トランスポート\]:\/\/\[コンピューター名またはドメイン\]\[:省略可能なポート \#\]\/\[省略可能な URI セグメント\] です。電卓サービスのベース アドレスは、電卓サービスのベース アドレスを使用して HTTP トランスポート、localhost、ポート 8000、および URI セグメント "GettingStarted" を使用します。 + + 2. 手順 2 \- サービスをホストする クラスのインスタンスを作成します。コンストラクターは、サービス コントラクトを実装するクラスの型と、サービスのベース アドレスの、2 つのパラメーターを受け取ります。 + + 3. 手順 3 \- インスタンスを作成します。サービス エンドポイントは、アドレス、バインディング、およびサービス コントラクトから構成されます。 コンストラクターは、サービス コントラクト インターフェイスの型、バインディング、およびアドレスを受け取ります。サービス コントラクトは、サービス型に定義および実装した `ICalculator` です。このサンプルで使用するバインディングは、WS\-\* 仕様に準拠するエンドポイントへの接続に使用される組み込みのバインディングである です。WCF バインディングの詳細については、「[WCF のバインディングの概要](../../../docs/framework/wcf/bindings-overview.md)」を参照してください。エンドポイントを識別するために、ベース アドレスにアドレスが追加されます。このコードで指定されるアドレスは、"Calculator" です。したがって、エンドポイントの完全修飾アドレスは `“http://localhost:8000/GettingStartedService/Calculator”` です。 + + > [!IMPORTANT] + > サービス エンドポイントの追加は、.NET Framework 4 以降を使用する場合は省略可能です。これらのバージョンでは、エンドポイントがコードまたは構成で指定されていない場合、WCF は、サービスで実装されたベース アドレスとコントラクトの組み合わせごとに、1 つの既定のエンドポイントを追加します。既定のエンドポイントの詳細については、「[エンドポイント アドレスの指定](../../../docs/framework/wcf/specifying-an-endpoint-address.md)」を参照してください。既定のエンドポイント、バインディング、および動作[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[簡略化された構成](../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + + 4. 手順 4 \- メタデータ交換を有効にします。クライアントは、サービス操作を呼び出すために使用されるプロキシの生成にメタデータ交換を使用します。メタデータ交換を有効化するには、 インスタンスを作成し、その プロパティを `true` に設定します。さらに、動作を インスタンスの コレクションに追加します。 + + 5. 手順 5 \- 受信メッセージをリッスンするために を開きます。コードでは、ユーザーによる Enter キーの押下を待機しています。この動作を行わない場合、アプリは直ちに終了し、サービスはシャットダウンします。また、try\/catch ブロックが使用されている点にも注意してください。 がインスタンス化された後、他のコードはすべて try\/catch ブロックに配置されます。 によってスローされた例外を安全にキャッチする方法の詳細については、「[Using ステートメントに関する問題の回避](../../../docs/framework/wcf/samples/avoiding-problems-with-the-using-statement.md)」を参照してください。 + +### サービスが正常に機能していることを確認するには + +1. [!INCLUDE[vs_current_long](../../../includes/vs-current-long-md.md)] 内から GettingStartedHost コンソール アプリケーションを実行します。[!INCLUDE[wv](../../../includes/wv-md.md)] 以降のオペレーティング システムでは、サービスを管理者権限で実行する必要があります。[!INCLUDE[vs_current_short](../../../includes/vs-current-short-md.md)] は管理者権限で実行されているため、GettingStartedHost も管理者権限で実行される必要があります。新しいコマンド プロンプトを管理者権限で開いて、service.exe をその中で実行することもできます。 + +2. Internet Explorer を開き、サービスのデバッグ ページ \(`http://localhost:8000/GettingStarted/CalculatorService`\) に移動します。 + +## 使用例 + 次の例では、チュートリアルの前の手順で作成したサービス コントラクトと実装を含め、コンソール アプリケーションでサービスをホストします。 + + コマンド ライン コンパイラでこれをコンパイルするには、`System.ServiceModel.dll` を参照するクラス ライブラリに IService1.cs と Service2.cs をコンパイルします。さらに、Program.cs をコンソール アプリケーションにコンパイルします。 + +``` +// IService1.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.Text; + +namespace GettingStartedLib +{ + [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] + public interface ICalculator + { + [OperationContract] + double Add(double n1, double n2); + [OperationContract] + double Subtract(double n1, double n2); + [OperationContract] + double Multiply(double n1, double n2); + [OperationContract] + double Divide(double n1, double n2); + } +} + +``` + +``` +// Service1.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.Text; + +namespace GettingStartedLib +{ + public class CalculatorService : ICalculator + { + public double Add(double n1, double n2) + { + double result = n1 + n2; + Console.WriteLine("Received Add({0},{1})", n1, n2); + // Code added to write output to the console window. + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Subtract(double n1, double n2) + { + double result = n1 - n2; + Console.WriteLine("Received Subtract({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Multiply(double n1, double n2) + { + double result = n1 * n2; + Console.WriteLine("Received Multiply({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Divide(double n1, double n2) + { + double result = n1 / n2; + Console.WriteLine("Received Divide({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + } +} + +``` + +``` +//Program.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ServiceModel; +using GettingStartedLib; +using System.ServiceModel.Description; + +namespace GettingStartedHost +{ + class Program + { + static void Main(string[] args) + { + // Step 1 of the address configuration procedure: Create a URI to serve as the base address. + Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/Service"); + + // Step 2 of the hosting procedure: Create ServiceHost + ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress); + + try + { + // Step 3 of the hosting procedure: Add a service endpoint. + selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService"); + + // Step 4 of the hosting procedure: Enable metadata exchange. + ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); + smb.HttpGetEnabled = true; + selfHost.Description.Behaviors.Add(smb); + + // Step 5 of the hosting procedure: Start (and then stop) the service. + selfHost.Open(); + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + + // Close the ServiceHostBase to shutdown the service. + selfHost.Close(); + } + catch (CommunicationException ce) + { + Console.WriteLine("An exception occurred: {0}", ce.Message); + selfHost.Abort(); + } + } + } +} + +``` + +``` +‘IService1.vb +Imports System +Imports System.ServiceModel + +Namespace GettingStartedLib + + _ + Public Interface ICalculator + + _ + Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double + _ + Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double + _ + Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double + _ + Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double + End Interface +End Namespace + +``` + +``` +‘Service1.vb +Imports System +Imports System.ServiceModel + +Namespace GettingStartedLib + + Public Class CalculatorService + Implements ICalculator + + Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Add + Dim result As Double = n1 + n2 + ' Code added to write output to the console window. + Console.WriteLine("Received Add({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + End Function + + Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Subtract + Dim result As Double = n1 - n2 + Console.WriteLine("Received Subtract({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + + End Function + + Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Multiply + Dim result As Double = n1 * n2 + Console.WriteLine("Received Multiply({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + + End Function + + Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Divide + Dim result As Double = n1 / n2 + Console.WriteLine("Received Divide({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + + End Function + End Class +End Namespace + +``` + +``` +‘Module1.vb +Imports System +Imports System.ServiceModel +Imports System.ServiceModel.Description +Imports GettingStartedLibVB.GettingStartedLib + +Module Service + + Class Program + Shared Sub Main() + ' Step 1 of the address configuration procedure: Create a URI to serve as the base address. + Dim baseAddress As New Uri("http://localhost:8000/ServiceModelSamples/Service") + + ' Step 2 of the hosting procedure: Create ServiceHost + Dim selfHost As New ServiceHost(GetType(CalculatorService), baseAddress) + Try + + ' Step 3 of the hosting procedure: Add a service endpoint. + ' Add a service endpoint + selfHost.AddServiceEndpoint( _ + GetType(ICalculator), _ + New WSHttpBinding(), _ + "CalculatorService") + + ' Step 4 of the hosting procedure: Enable metadata exchange. + ' Enable metadata exchange + Dim smb As New ServiceMetadataBehavior() + smb.HttpGetEnabled = True + selfHost.Description.Behaviors.Add(smb) + + ' Step 5 of the hosting procedure: Start (and then stop) the service. + selfHost.Open() + Console.WriteLine("The service is ready.") + Console.WriteLine("Press to terminate service.") + Console.WriteLine() + Console.ReadLine() + + ' Close the ServiceHostBase to shutdown the service. + selfHost.Close() + Catch ce As CommunicationException + Console.WriteLine("An exception occurred: {0}", ce.Message) + selfHost.Abort() + End Try + End Sub + End Class + +End Module + +``` + +> [!NOTE] +> このようなサービスには、リッスンを行うコンピューター上で HTTP アドレスを登録するためのアクセス許可が必要です。管理者アカウントにはこのアクセス許可がありますが、管理者以外のアカウントの場合は、HTTP 名前空間へのアクセス許可を付与する必要があります。名前空間予約の構成方法[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[HTTP および HTTPS の構成](../../../docs/framework/wcf/feature-details/configuring-http-and-https.md)」を参照してください。[!INCLUDE[vs_current_short](../../../includes/vs-current-short-md.md)] での service.exe の実行には、管理者権限が必要です。 + + これでサービスが実行されていることが確認できました。「[方法 : クライアントを作成する](../../../docs/framework/wcf/how-to-create-a-wcf-client.md)」に進んでください。トラブルシューティングの詳細については、「[チュートリアル入門のトラブルシューティング](../../../docs/framework/wcf/troubleshooting-the-getting-started-tutorial.md)」を参照してください。 + +## 参照 + [概要](../../../docs/framework/wcf/samples/getting-started-sample.md) + [自己ホスト](../../../docs/framework/wcf/samples/self-host.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-impersonate-a-client-on-a-service.md b/docs/framework/wcf/how-to-impersonate-a-client-on-a-service.md new file mode 100644 index 00000000000..1c9e7f6c189 --- /dev/null +++ b/docs/framework/wcf/how-to-impersonate-a-client-on-a-service.md @@ -0,0 +1,56 @@ +--- +title: "方法 : サービスでクライアントに偽装する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF, 偽装" + - "偽装" + - "WCF, セキュリティ" +ms.assetid: 431db851-a75b-4009-9fe2-247243d810d3 +caps.latest.revision: 33 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 33 +--- +# 方法 : サービスでクライアントに偽装する +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスでクライアントを偽装すると、サービスはクライアントの代理としてアクションを実行できます。 コンピューター上のディレクトリやファイルへのアクセス、または SQL Server データベースへのアクセスなど、アクセス制御リスト \(ACL\) のチェックを受けるアクションでは、ACL のチェックがクライアントのユーザー アカウントに対して行われます。 ここでは、Windows ドメインのクライアントで、クライアント偽装レベルを設定できるようにするために必要な基本的な手順について説明します。 このパターンの実施例については、「[クライアントの偽装](../../../docs/framework/wcf/samples/impersonating-the-client.md)」を参照してください。 クライアントの偽装の[!INCLUDE[crabout](../../../includes/crabout-md.md)]については、「[委任と偽装](../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md)」を参照してください。 + +> [!NOTE] +> クライアントとサービスが同じコンピューター上で実行されており、クライアントがシステム アカウント \(`Local System` や `Network Service` など\) で実行されているときに、ステートレスなセキュリティ コンテキスト トークンを使用してセキュリティで保護されたセッションを確立した場合、クライアントを偽装することはできません。 通常、WinForms アプリケーションやコンソール アプリケーションは、現在ログインしているアカウントで実行されるため、既定でそのアカウントを偽装できます。 ただし、クライアントが [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] ページであり、そのページが [!INCLUDE[iis601](../../../includes/iis601-md.md)] または IIS 7.0 でホストされている場合、既定では、クライアントは `Network Service` アカウントで実行されます。 セキュリティで保護されたセッションをサポートするシステム提供のすべてのバインディングは、ステートフルなセキュリティ コンテキスト トークンを既定で使用します。 ただし、クライアントが [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] ページであり、ステートフルなセキュリティ コンテキスト トークンを使用する、セキュリティで保護されたセッションを使用している場合は、クライアントを偽装できません。 セキュリティで保護されたセッションでのステートフルなセキュリティ コンテキスト トークンの使用方法[!INCLUDE[crabout](../../../includes/crabout-md.md)]のについては、「[方法 : セキュリティで保護されたセッションに対しセキュリティ コンテキスト トークンを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-security-context-token-for-a-secure-session.md)」を参照してください。 + +### サービスにキャッシュされた Windows トークンでクライアントの偽装を有効にするには + +1. サービスを作成します。 この基本的な手順のチュートリアルについては、「[チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 + +2. Windows 認証を使用してセッションを作成するバインディング \( など\) を使用します。 + +3. サービスのインターフェイスの実装を作成するときには、クライアントの偽装を必要とするメソッドに クラスを適用します。 プロパティを に設定します。 + + [!code-csharp[c_SimpleImpersonation#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_simpleimpersonation/cs/source.cs#2)] + [!code-vb[c_SimpleImpersonation#2](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_simpleimpersonation/vb/source.vb#2)] + +### クライアントに許可される偽装レベルを設定するには + +1. [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用して、サービス クライアント コードを作成します。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [WCF クライアントを使用したサービスへのアクセス](../../../docs/framework/wcf/accessing-services-using-a-wcf-client.md)。 + +2. [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントの作成後、 クラスの プロパティを 列挙値の 1 つに設定します。 + + > [!NOTE] + > を使用するには、ネゴシエート Kerberos 認証 \(*"マルチレッグ"* Kerberos または *"マルチステップ"* Kerberos と呼ぶこともあります\) を使用する必要があります。 これを実装する方法については、「[セキュリティのベスト プラクティス](../../../docs/framework/wcf/feature-details/best-practices-for-security-in-wcf.md)」を参照してください。 + + [!code-csharp[c_SimpleImpersonation#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_simpleimpersonation/cs/source.cs#1)] + [!code-vb[c_SimpleImpersonation#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_simpleimpersonation/vb/source.vb#1)] + +## 参照 + + + [クライアントの偽装](../../../docs/framework/wcf/samples/impersonating-the-client.md) + [委任と偽装](../../../docs/framework/wcf/feature-details/delegation-and-impersonation-with-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-implement-a-wcf-contract.md b/docs/framework/wcf/how-to-implement-a-wcf-contract.md new file mode 100644 index 00000000000..fa2a40a5879 --- /dev/null +++ b/docs/framework/wcf/how-to-implement-a-wcf-contract.md @@ -0,0 +1,283 @@ +--- +title: "方法 : Windows Communication Foundation サービス コントラクトを実装する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "サービス コントラクト [WCF], 実装" +ms.assetid: d5ab51ba-61ae-403e-b3c8-e2669e326806 +caps.latest.revision: 38 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 38 +--- +# 方法 : Windows Communication Foundation サービス コントラクトを実装する +これは、基本的な [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスとそのサービスを呼び出すことができるクライアントの作成に必要な 6 つのタスクのうち、2 番目のタスクです。 6 つのすべてのタスクの概要については、「[チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 + + WCF アプリケーションの作成における次の手順では、サービス インターフェイスを実装します。 これには、ユーザー定義の `ICalculator` インターフェイスを実装する `CalculatorService` というクラスの作成も含まれます。 + +### WCF サービス コントラクトを実装するには + +1. Service1.cs ファイルまたは Service1.vb ファイルを開き、次のコードを追加します。 + + ```csharp + //Service1.cs + using System; + using System.Collections.Generic; + using System.Linq; + using System.Runtime.Serialization; + using System.ServiceModel; + using System.Text; + + namespace GettingStartedLib + { + public class CalculatorService : ICalculator + { + public double Add(double n1, double n2) + { + double result = n1 + n2; + Console.WriteLine("Received Add({0},{1})", n1, n2); + // Code added to write output to the console window. + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Subtract(double n1, double n2) + { + double result = n1 - n2; + Console.WriteLine("Received Subtract({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Multiply(double n1, double n2) + { + double result = n1 * n2; + Console.WriteLine("Received Multiply({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Divide(double n1, double n2) + { + double result = n1 / n2; + Console.WriteLine("Received Divide({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + } + } + + ``` + + ``` + ‘Service1.vb + Imports System + Imports System.ServiceModel + + Namespace GettingStartedLib + + Public Class CalculatorService + Implements ICalculator + + Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Add + Dim result As Double = n1 + n2 + ' Code added to write output to the console window. + Console.WriteLine("Received Add({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + End Function + + Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Subtract + Dim result As Double = n1 - n2 + Console.WriteLine("Received Subtract({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + + End Function + + Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Multiply + Dim result As Double = n1 * n2 + Console.WriteLine("Received Multiply({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + + End Function + + Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Divide + Dim result As Double = n1 / n2 + Console.WriteLine("Received Divide({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + + End Function + End Class + End Namespace + ``` + + 各メソッドは、電卓操作を実装し、テストしやすいように、いくつかのテキストをコンソールに出力します。 + +## 使用例 + コントラクトを定義するインターフェイスのコードとそのインターフェイスを実装するコードを次に示します。 + +``` +// IService1.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.Text; + +namespace GettingStartedLib +{ + [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] + public interface ICalculator + { + [OperationContract] + double Add(double n1, double n2); + [OperationContract] + double Subtract(double n1, double n2); + [OperationContract] + double Multiply(double n1, double n2); + [OperationContract] + double Divide(double n1, double n2); + } +} + +``` + +``` +// Service1.cs +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.ServiceModel; +using System.Text; + +namespace GettingStartedLib +{ + public class CalculatorService : ICalculator + { + public double Add(double n1, double n2) + { + double result = n1 + n2; + Console.WriteLine("Received Add({0},{1})", n1, n2); + // Code added to write output to the console window. + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Subtract(double n1, double n2) + { + double result = n1 - n2; + Console.WriteLine("Received Subtract({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Multiply(double n1, double n2) + { + double result = n1 * n2; + Console.WriteLine("Received Multiply({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + + public double Divide(double n1, double n2) + { + double result = n1 / n2; + Console.WriteLine("Received Divide({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + return result; + } + } +} + +``` + +``` +‘IService.vb +Imports System +Imports System.ServiceModel + +Namespace GettingStartedLib + + _ + Public Interface ICalculator + + _ + Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double + _ + Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double + _ + Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double + _ + Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double + End Interface +End Namespace +``` + +``` +Imports System +Imports System.ServiceModel + +Namespace GettingStartedLib + + Public Class CalculatorService + Implements ICalculator + + Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Add + Dim result As Double = n1 + n2 + ' Code added to write output to the console window. + Console.WriteLine("Received Add({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + End Function + + Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Subtract + Dim result As Double = n1 - n2 + Console.WriteLine("Received Subtract({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + + End Function + + Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Multiply + Dim result As Double = n1 * n2 + Console.WriteLine("Received Multiply({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + + End Function + + Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Divide + Dim result As Double = n1 / n2 + Console.WriteLine("Received Divide({0},{1})", n1, n2) + Console.WriteLine("Return: {0}", result) + Return result + + End Function + End Class +End Namespace +``` + + サービス コントラクトが作成されて実装されます。 ソリューションをビルドして、コンパイル エラーが発生しないことを確認します。次は、「[方法 : 基本的なサービスをホストおよび実行する](../../../docs/framework/wcf/how-to-host-and-run-a-basic-wcf-service.md)」に進んでサービスを実行します。 トラブルシューティングの詳細については、「[チュートリアル入門のトラブルシューティング](../../../docs/framework/wcf/troubleshooting-the-getting-started-tutorial.md)」を参照してください。 + +## コードのコンパイル + Visual Studio を使用している場合、\[ビルド\] メニューの \[ソリューションのビルド\] をクリックします \(または Ctrl キーと Shift キーを押しながら B キーを押します\)。 + +## 参照 + [概要](../../../docs/framework/wcf/samples/getting-started-sample.md) + [自己ホスト](../../../docs/framework/wcf/samples/self-host.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-implement-an-asynchronous-service-operation.md b/docs/framework/wcf/how-to-implement-an-asynchronous-service-operation.md new file mode 100644 index 00000000000..0b60cd93ba3 --- /dev/null +++ b/docs/framework/wcf/how-to-implement-an-asynchronous-service-operation.md @@ -0,0 +1,54 @@ +--- +title: "方法 : 非同期サービス操作を実装する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4e5d2ea5-d8f8-4712-bd18-ea3c5461702c +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 方法 : 非同期サービス操作を実装する +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションでは、クライアントに呼び出し方法を指示することなく、サービス操作を非同期的または同期的に実装できます。たとえば、非同期サービス操作を同期的に呼び出すことも、同期サービス操作を非同期的に呼び出すことも可能です。クライアント アプリケーションから操作を非同期で呼び出す方法を示す例については、「[方法 : サービス操作を非同期に呼び出す](../../../docs/framework/wcf/feature-details/how-to-call-wcf-service-operations-asynchronously.md)」を参照してください。同期操作および非同期操作[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[サービス コントラクトの設計](../../../docs/framework/wcf/designing-service-contracts.md)」および「[同期操作と非同期操作](../../../docs/framework/wcf/synchronous-and-asynchronous-operations.md)」を参照してください。このトピックでは、非同期サービス操作の基本構造について説明します。コードは部分的なコードです。サービス側とクライアント側の両方の完全な例については、「[Asynchronous](http://msdn.microsoft.com/ja-jp/833db946-f511-4f64-a26f-2759a11217c7)」を参照してください。 + +### 非同期サービス操作の実装 + +1. サービス コントラクトで、.NET 非同期デザイン ガイドラインに従って非同期メソッドのペアを宣言します。`Begin` メソッドは、パラメーター、コールバック オブジェクト、状態オブジェクトを受け取って を返し、組になる `End` メソッドは を受け取って戻り値を返します。非同期呼び出しの詳細については、「[非同期プログラミングのデザイン パターン](http://go.microsoft.com/fwlink/?LinkId=248221)」を参照してください。 + +2. 非同期メソッド ペアの `Begin` メソッドを 属性を使用してマークし、 プロパティを `true` に設定します。たとえば、次のコード例では手順 1. と 2. を実行します。 + + [!code-csharp[C_SyncAsyncClient#6](../../../samples/snippets/csharp/VS_Snippets_CFX/c_syncasyncclient/cs/services.cs#6)] + [!code-vb[C_SyncAsyncClient#6](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_syncasyncclient/vb/services.vb#6)] + +3. 非同期デザインのガイドラインに従って、`Begin/End` メソッド ペアをサービス クラスに実装します。たとえば、次のコード例では、非同期サービス操作の `Begin` および `End` の両方の部分の文字列がコンソールに書き出され、`End` 操作の戻り値がクライアントに返される実装を示します。コード例全体については、「使用例」を参照してください。 + + [!code-csharp[C_SyncAsyncClient#3](../../../samples/snippets/csharp/VS_Snippets_CFX/c_syncasyncclient/cs/services.cs#3)] + [!code-vb[C_SyncAsyncClient#3](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_syncasyncclient/vb/services.vb#3)] + +## 使用例 + このコード例では次のものが示されます。 + +1. 次の操作とのサービス コントラクト インターフェイス + + 1. 同期 `SampleMethod` 操作 + + 2. 非同期 `BeginSampleMethod` 操作 + + 3. 非同期 `BeginServiceAsyncMethod`\/`EndServiceAsyncMethod` 操作のペア + +2. オブジェクトを使用したサービスの実装 + + [!code-csharp[C_SyncAsyncClient#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_syncasyncclient/cs/services.cs#1)] + [!code-vb[C_SyncAsyncClient#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_syncasyncclient/vb/services.vb#1)] + +## 参照 + [サービス コントラクトの設計](../../../docs/framework/wcf/designing-service-contracts.md) + [同期操作と非同期操作](../../../docs/framework/wcf/synchronous-and-asynchronous-operations.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-restrict-access-with-the-principalpermissionattribute-class.md b/docs/framework/wcf/how-to-restrict-access-with-the-principalpermissionattribute-class.md new file mode 100644 index 00000000000..2691df57a64 --- /dev/null +++ b/docs/framework/wcf/how-to-restrict-access-with-the-principalpermissionattribute-class.md @@ -0,0 +1,101 @@ +--- +title: "方法 : PrincipalPermissionAttribute クラスでアクセスを制限する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "PrincipalPermissionAttribute クラス" + - "WCF, 承認" + - "WCF, セキュリティ" +ms.assetid: 5162f5c4-8781-4cc4-9425-bb7620eaeaf4 +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# 方法 : PrincipalPermissionAttribute クラスでアクセスを制限する +Windows ドメイン コンピューターのリソースへのアクセスを制御することは、基本的なセキュリティ タスクです。たとえば、給与情報のような機密データは、特定のユーザーだけが表示できるようにする必要があります。ここでは、ユーザーが定義済みグループに属していることを要求することによって、メソッドへのアクセスを制限する方法について説明します。実際に動作するサンプルについては、「[サービス操作へのアクセスの承認](../../../docs/framework/wcf/samples/authorizing-access-to-service-operations.md)」を参照してください。 + + タスクは、2 つの別個の手順で構成されます。最初の手順では、グループを作成してユーザーを追加します。2 番目の手順では、グループを指定するために クラスを適用します。 + +### Windows グループを作成するには + +1. **\[コンピューターの管理\]** コンソールを開きます。 + +2. 左のパネルで、**\[ローカル ユーザーとグループ\]** をクリックします。 + +3. **\[グループ\]** を右クリックし、**\[新しいグループ\]** をクリックします。 + +4. **\[グループ名\]** ボックスに、新しいグループの名前を入力します。 + +5. **\[説明\]** ボックスに、新しいグループの説明を入力します。 + +6. **\[追加\]** をクリックして、グループに新しいメンバーを追加します。 + +7. 自分自身をグループに追加した場合は、次のコードをテストする前に、コンピューターからいったんログオフし、再度ログオンして自分自身をグループに含める必要があります。 + +### ユーザー メンバーシップを要求するには + +1. 実装されたサービス コントラクト コードを含む [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] コード ファイルを開きます。コントラクトの実装[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[サービス コントラクトの実装](../../../docs/framework/wcf/implementing-service-contracts.md)」を参照してください。 + +2. 特定のグループに制限される必要がある各メソッドに 属性を適用します。 プロパティを に設定し、 プロパティをグループの名前に設定します。次に例を示します。 + + [!code-csharp[c_PrincipalPermissionAttribute#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_principalpermissionattribute/cs/source.cs#1)] + [!code-vb[c_PrincipalPermissionAttribute#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_principalpermissionattribute/vb/source.vb#1)] + + > [!NOTE] + > 属性をコントラクトに適用すると、 がスローされます。この属性はメソッド レベルにのみ適用できます。 + +## 証明書を使用したメソッドへのアクセスの制御 + クライアント資格情報の種類が "証明書" の場合は、`PrincipalPermissionAttribute` クラスを使用してメソッドへのアクセスを制御することもできます。そのためには、証明書のサブジェクトと拇印が必要になります。 + + 証明書のプロパティを確認する方法については、「[方法 : MMC スナップインを使用して証明書を参照する](../../../docs/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in.md)」を参照してください。拇印の値を検索する方法については、「[方法 : 証明書のサムプリントを取得する](../../../docs/framework/wcf/feature-details/how-to-retrieve-the-thumbprint-of-a-certificate.md)」を参照してください。 + +#### 証明書を使用してアクセスを制御するには + +1. アクセスを制限するメソッドに クラスを適用します。 + +2. 属性のアクションを に設定します。 + +3. `Name` プロパティを、サブジェクト名と証明書の拇印で構成される文字列に設定します。次の例に示すように、2 つの値をセミコロンと空白で区切ってください。 + + [!code-csharp[c_PrincipalPermissionAttribute#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_principalpermissionattribute/cs/source.cs#2)] + [!code-vb[c_PrincipalPermissionAttribute#2](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_principalpermissionattribute/vb/source.vb#2)] + +4. 次の構成例に示すように、 プロパティを に設定します。 + + ``` + + + + + + + + ``` + + この値を `UseAspNetRoles` に設定すると、`PrincipalPermissionAttribute` の `Name` プロパティを使用して文字列が比較されます。クライアント資格情報として証明書を使用している場合、既定では、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] は証明書の共通名と拇印をセミコロンで連結して、クライアントのプライマリ ID を表す一意の値が作成されます。`UseAspNetRoles` をサービスの `PrincipalPermissionMode` として設定している場合、このプライマリ ID の値と `Name` プロパティの値を比較してユーザーのアクセス権が決定されます。 + + また、自己ホスト型サービスを作成する場合は、次のコードに示すように、コードの プロパティを設定します。 + + [!code-csharp[c_PrincipalPermissionAttribute#3](../../../samples/snippets/csharp/VS_Snippets_CFX/c_principalpermissionattribute/cs/source.cs#3)] + [!code-vb[c_PrincipalPermissionAttribute#3](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_principalpermissionattribute/vb/source.vb#3)] + +## 参照 + + + + + [サービス操作へのアクセスの承認](../../../docs/framework/wcf/samples/authorizing-access-to-service-operations.md) + [セキュリティの概要](../../../docs/framework/wcf/feature-details/security-overview.md) + [サービス コントラクトの実装](../../../docs/framework/wcf/implementing-service-contracts.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-secure-a-service-with-windows-credentials.md b/docs/framework/wcf/how-to-secure-a-service-with-windows-credentials.md new file mode 100644 index 00000000000..deba0ff1bb1 --- /dev/null +++ b/docs/framework/wcf/how-to-secure-a-service-with-windows-credentials.md @@ -0,0 +1,159 @@ +--- +title: "方法 : Windows 資格情報でサービスをセキュリティで保護する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF, セキュリティ" +ms.assetid: d171b5ca-96ef-47ff-800c-c138023cf76e +caps.latest.revision: 26 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 26 +--- +# 方法 : Windows 資格情報でサービスをセキュリティで保護する +ここでは、Windows ドメイン内に存在し、同じドメイン内のクライアントから呼び出される [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスで転送セキュリティを有効にする方法について説明します。 [!INCLUDE[crabout](../../../includes/crabout-md.md)]このシナリオを参照してください[トランスポート セキュリティと Windows 認証](../../../docs/framework/wcf/feature-details/transport-security-with-windows-authentication.md)します。 サンプル アプリケーションについては、次を参照してください。、 [WSHttpBinding](../../../docs/framework/wcf/samples/wshttpbinding.md)サンプルです。 + + このトピックでは、定義済みのコントラクト インターフェイスと実装が既に存在するものとして、それに機能を追加していきます。 既存のサービスとクライアントを変更することもできます。 + + Windows 資格情報によるサービスのセキュリティ保護は、完全にコードで実現できます。 または、構成ファイルを使用して、一部のコードを省略することもできます。 このトピックでは両方の方法について説明します。 ただし、どちらか&1; つの方法だけを使うようにして、両方は使用しないでください。 + + 最初の&3; つの手順は、コードを使用してサービスをセキュリティで保護する方法について示しています。 4 番目と&5; 番目の手順は、構成ファイルを使用して同様の操作を行う方法について示しています。 + +## コードの使用 + サービスとクライアントの完全なコードは、このトピックの最後にある「使用例」のセクションに記載されています。 + + 作成して構成する最初の手順では、説明、 コード内のクラスです。 バインディングでは HTTP トランスポートを使用します。 同じバインディングがクライアント上で使用されます。 + +#### Windows 資格情報とメッセージ セキュリティを使用する WSHttpBinding を作成するには + +1. この手順のコードは、「使用例」のセクションに記載されたサービス コードの `Run` クラスの `Test` メソッドの先頭に挿入されています。 + +2. インスタンスを作成、 クラスです。 + +3. 設定、 のプロパティ、 クラスをします。 + +4. 設定、 のプロパティ、 クラスをします。 + +5. この手順で使用するコードは、次のようになります。 + + [!code-csharp[c_SecureWindowsService#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewindowsservice/cs/secureservice.cs#1)] + [!code-vb[c_SecureWindowsService#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewindowsservice/vb/secureservice.vb#1)] + +### サービスでのバインディングの使用 + この&2; 番目の手順では、自己ホスト型サービスでバインディングを使用する方法を示します。 [!INCLUDE[crabout](../../../includes/crabout-md.md)]ホスティング サービスを参照してください[ホスティング サービス](../../../docs/framework/wcf/hosting-services.md)します。 + +##### サービスでバインディングを使用するには + +1. 前の手順のコードの後に、この手順のコードを挿入します。 + +2. 作成、という名前の変数`contractType`インターフェイスの型を割り当てると (`ICalculator`)。 [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] を使用している場合は、`GetType` 演算子を使用し、C# を使用している場合は、`typeof` キーワードを使用します。 + +3. `Type` という名前の&2; つ目の `serviceType` 変数を作成し、その変数に実装されたコントラクトの型 (`Calculator`) を割り当てます。 + +4. インスタンスを作成、 という名前のクラス`baseAddress`サービスのベース アドレスを使用します。 ベース アドレスには、トランスポートに一致するスキームを指定する必要があります。 この場合、トランスポート スキームは HTTP であり、アドレスは、特別な URI (Uniform Resource Identifier) の "localhost"、ポート番号 (8036)、およびベース エンドポイント アドレス ("serviceModelSamples/) で構成されます。つまり、http://localhost:8036/serviceModelSamples/ になります。 + +5. インスタンスを作成、 クラス、`serviceType`と`baseAddress`変数です。 + +6. `contractType`、バインディング、およびエンドポイント名 (secureCalculator) を使用して、サービスにエンドポイントを追加します。 クライアントは、サービスへの呼び出しを開始するときに、ベース アドレスとエンドポイント名を連結する必要があります。 + +7. 呼び出す、サービスを開始するメソッドです。 この手順で使用するコードは次のとおりです。 + + [!code-csharp[c_SecureWindowsService#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewindowsservice/cs/secureservice.cs#2)] + [!code-vb[c_SecureWindowsService#2](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewindowsservice/vb/secureservice.vb#2)] + +### クライアントでのバインディングの使用 + この手順では、サービスと通信するプロキシの生成方法を示します。 プロキシが生成、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)サービス メタデータを使用してプロキシを作成します。 + + このプロシージャのインスタンスの作成も、 サービスと通信するクラスし、サービスが呼び出されます。 + + この例では、コードだけを使用してクライアントを作成します。 この手順の後のセクションに示す構成ファイルを使用することもできます。 + +##### コードによってクライアントでバインディングを使用するには + +1. SvcUtil.exe ツールを使用して、サービスのメタデータからプロキシ コードを生成します。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)][方法: クライアントを作成する](../../../docs/framework/wcf/how-to-create-a-wcf-client.md)です。 生成されたプロキシ コードが継承、 クラスで、必要なコンス トラクター、メソッド、およびプロパティと通信するすべてのクライアントがあることを確認、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)]サービスです。 この例では、生成されたコードに、`CalculatorClient` インターフェイスを実装した `ICalculator` クラスが追加されるので、サービス コードとの互換が可能になります。 + +2. この手順のコードは、クライアント プログラムの `Main` メソッドの先頭に挿入します。 + +3. インスタンスを作成、 クラスし、そのセキュリティ モードを設定`Message`とそのクライアントの資格情報の種類`Windows`します。 この例では、変数に `clientBinding` という名前を付けます。 + +4. インスタンスを作成、 という名前のクラス`serviceAddress`します。 エンドポイント名が連結されたベース アドレスでインスタンスを初期化します。 + +5. `serviceAddress` 変数と `clientBinding` 変数を指定して、生成されたクライアント クラスのインスタンスを作成します。 + +6. 呼び出す、メソッドを次のコードに示すようにします。 + +7. サービスを呼び出し、結果を表示します。 + + [!code-csharp[c_secureWindowsClient#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewindowsclient/cs/secureclient.cs#1)] + [!code-vb[c_secureWindowsClient#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewindowsclient/vb/secureclient.vb#1)] + +## 構成ファイルの使用 + 手順コードを使用してバインディングを作成する代わりに、構成ファイルのバインディング セクションに次のコードを記述することもできます。 + + 定義されているサービスがあるない場合は、次を参照してください。[を設計および実装するサービス](../../../docs/framework/wcf/designing-and-implementing-services.md)、および[サービスを構成する](../../../docs/framework/wcf/configuring-services.md)です。 + + **注**サービスとクライアントの両方の構成ファイルでこの構成コードを使用します。 + +#### 構成を使用して Windows ドメインのサービスで転送セキュリティを有効にするには + +1. 追加、 [ <> \> ](../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)要素を[ <> \> ](../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)構成ファイルの要素のセクションです。 + +2. <`binding`> 要素に <`WSHttpBinding`> 要素を追加し、`configurationName` 属性をアプリケーションに適した値に設定します。 + +3. <`security`> 要素を追加し、`mode` 属性を Message に設定します。 + +4. <`message`> 要素を追加し、`clientCredentialType` 属性を Windows に設定します。 + +5. サービスの構成ファイルで、`` セクションを次のコードに置き換えます。 サービス構成ファイルがあるない場合は、次を参照してください。[を使用してサービスを構成すると、クライアントのバインド](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md)します。 + + ``` + + + + + + + + + + ``` + +### クライアントでのバインディングの使用 + この手順では、サービスと通信するプロキシと構成ファイルの&2; つのファイルの生成方法を示します。 また、クライアント上で使用される&3; つ目のファイルであるクライアント プログラムへの変更点についても説明します。 + +##### 構成によってクライアントでバインディングを使用するには + +1. SvcUtil.exe ツールを使用して、サービスのメタデータからプロキシ コードと構成ファイルを生成します。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)][方法: クライアントを作成する](../../../docs/framework/wcf/how-to-create-a-wcf-client.md)です。 + +2. 置き換える、 [ <> \> ](../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)の構成コードは、前のセクションを生成された構成ファイルのセクションです。 + +3. 手順コードは、クライアント プログラムの `Main` メソッドの先頭に挿入します。 + +4. 生成されたクライアント クラスのインスタンスを作成します。このとき、構成ファイルのバインディングの名前を入力パラメーターとして渡します。 + +5. 呼び出す、メソッドを次のコードに示すようにします。 + +6. サービスを呼び出し、結果を表示します。 + + [!code-csharp[c_secureWindowsClient#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewindowsclient/cs/secureclient.cs#2)] + +## 例 + [!code-csharp[c_SecureWindowsService#0](../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewindowsservice/cs/secureservice.cs#0)] + + [!code-csharp[c_SecureWindowsClient#0](../../../samples/snippets/csharp/VS_Snippets_CFX/c_securewindowsclient/cs/secureclient.cs#0)] + [!code-vb[c_SecureWindowsClient#0](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_securewindowsclient/vb/secureclient.vb#0)] + +## 関連項目 + + [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) + [方法: クライアントを作成します。](../../../docs/framework/wcf/how-to-create-a-wcf-client.md) + [サービスのセキュリティ保護](../../../docs/framework/wcf/securing-services.md) + [セキュリティの概要](../../../docs/framework/wcf/feature-details/security-overview.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-set-the-protectionlevel-property.md b/docs/framework/wcf/how-to-set-the-protectionlevel-property.md new file mode 100644 index 00000000000..caf90433bd7 --- /dev/null +++ b/docs/framework/wcf/how-to-set-the-protectionlevel-property.md @@ -0,0 +1,101 @@ +--- +title: "方法 : ProtectionLevel プロパティを設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ProtectionLevel プロパティ" + - "WCF, セキュリティ" +ms.assetid: 3d4e8f80-0f9e-4a26-9899-beb6584e78df +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 方法 : ProtectionLevel プロパティを設定する +適切な属性を適用してプロパティを設定することで、保護レベルを設定できます。サービス レベルですべてのメッセージのすべての部分に影響する保護を設定したり、メソッドからメッセージ部分まで、段階的にきめ細かなレベルで保護を設定したりできます。`ProtectionLevel` プロパティ[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[保護レベルの理解](../../../docs/framework/wcf/understanding-protection-level.md)」を参照してください。 + +> [!NOTE] +> 保護レベルは構成ではなく、コードでのみ設定できます。 + +### サービスのすべてのメッセージに署名するには + +1. サービス用のインターフェイスを作成します。 + +2. 次のコードに示すように、 属性をサービスに適用し、 プロパティを に設定します \(既定のレベルは \)。 + + [!code-csharp[C_ProtectionLevel#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_protectionlevel/cs/source.cs#1)] + [!code-vb[C_ProtectionLevel#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_protectionlevel/vb/source.vb#1)] + +### 操作のすべてのメッセージ部分に署名するには + +1. サービスのインターフェイスを作成し、このインターフェイスに 属性を適用します。 + +2. インターフェイスにメソッド宣言を追加します。 + +3. 次のコードに示すように、メソッドに 属性を適用し、 プロパティを に設定します。 + + [!code-csharp[C_ProtectionLevel#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_protectionlevel/cs/source.cs#2)] + [!code-vb[C_ProtectionLevel#2](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_protectionlevel/vb/source.vb#2)] + +## エラー メッセージの保護 + サービスでスローされた例外は、SOAP エラーとしてクライアントに送信できます。厳密に型指定されたエラーの作成[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[コントラクトおよびサービスのエラーの指定と処理](../../../docs/framework/wcf/specifying-and-handling-faults-in-contracts-and-services.md)」および「[方法 : サービス コントラクトでのエラーを宣言する](../../../docs/framework/wcf/how-to-declare-faults-in-service-contracts.md)」を参照してください。 + +#### エラー メッセージを保護するには + +1. エラー メッセージを表す型を作成します。次の例では、2 つのフィールドを持つ `MathFault` という名前のクラスを作成します。 + +2. 次のコードに示すように、型に 属性を適用し、シリアル化する必要のある各フィールドに 属性を適用します。 + + [!code-csharp[C_ProtectionLevel#3](../../../samples/snippets/csharp/VS_Snippets_CFX/c_protectionlevel/cs/source.cs#3)] + [!code-vb[C_ProtectionLevel#3](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_protectionlevel/vb/source.vb#3)] + +3. エラーを返すインターフェイスで、エラーを返すメソッドに 属性を適用し、エラー クラスの型に `detailType` パラメーターを設定します。 + +4. 次のコードに示すように、コンストラクターでも、 プロパティを に設定します。 + + [!code-csharp[C_ProtectionLevel#4](../../../samples/snippets/csharp/VS_Snippets_CFX/c_protectionlevel/cs/source.cs#4)] + [!code-vb[C_ProtectionLevel#4](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_protectionlevel/vb/source.vb#4)] + +## メッセージ部分の保護 + メッセージ部分を保護するには、メッセージ コントラクトを使用します。メッセージ コントラクト[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[メッセージ コントラクトの使用](../../../docs/framework/wcf/feature-details/using-message-contracts.md)」を参照してください。 + +#### メッセージ本文を保護するには + +1. メッセージを表す型を作成します。次の例では、`CompanyName` と `CompanyID` の 2 つのフィールドを持つ `Company` クラスを作成します。 + +2. このクラスに 属性を適用し、 プロパティを に設定します。 + +3. メッセージ ヘッダーとして表現されるフィールドに 属性を適用し、`ProtectionLevel` プロパティを に設定します。 + +4. 次の例に示すように、メッセージ本文の一部として表現される任意のフィールドに を適用し、`ProtectionLevel` プロパティを に設定します。 + + [!code-csharp[C_ProtectionLevel#5](../../../samples/snippets/csharp/VS_Snippets_CFX/c_protectionlevel/cs/source.cs#5)] + [!code-vb[C_ProtectionLevel#5](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_protectionlevel/vb/source.vb#5)] + +## 使用例 + 次の例では、サービスのいろいろな場所で、いくつかの属性クラスの `ProtectionLevel` プロパティを設定します。 + + [!code-csharp[C_ProtectionLevel#6](../../../samples/snippets/csharp/VS_Snippets_CFX/c_protectionlevel/cs/source.cs#6)] + [!code-vb[C_ProtectionLevel#6](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_protectionlevel/vb/source.vb#6)] + +## コードのコンパイル + コード例のコンパイルに必要な名前空間を、次のコードに示します。 + + [!code-csharp[C_ProtectionLevel#0](../../../samples/snippets/csharp/VS_Snippets_CFX/c_protectionlevel/cs/source.cs#0)] + [!code-vb[C_ProtectionLevel#0](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_protectionlevel/vb/source.vb#0)] + +## 参照 + + + + + + [保護レベルの理解](../../../docs/framework/wcf/understanding-protection-level.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-set-the-security-mode.md b/docs/framework/wcf/how-to-set-the-security-mode.md new file mode 100644 index 00000000000..dcdff80c0bf --- /dev/null +++ b/docs/framework/wcf/how-to-set-the-security-mode.md @@ -0,0 +1,129 @@ +--- +title: "方法 : セキュリティ モードを設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Mode プロパティ" + - "WCF, セキュリティ" + - "WCF, セキュリティ モード" +ms.assetid: 6e01dd9f-b5dd-4474-b24c-06e124de4ff7 +caps.latest.revision: 22 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 22 +--- +# 方法 : セキュリティ モードを設定する +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] セキュリティには、"トランスポート"、"メッセージ"、および "メッセージ資格情報付きトランスポート" という 3 つの共通のセキュリティ モードがあり、ほとんどの定義済みバインディングでサポートされます。これ以外に、2 つのバインディングに固有の 2 つのモードがあります。 の "トランスポート資格情報専用" モードと、 の "両方" モードです。ここでは、3 つの共通のセキュリティモードである 、および に重点を置いて説明します。 + + ただし、これらのモードがすべての定義済みバインディングでサポートされるわけではありません。ここでは、 クラスと クラスでモードを設定し、プログラムと構成の両方を使用してモードを設定する方法を示します。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のセキュリティ[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[セキュリティの概要](../../../docs/framework/wcf/feature-details/security-overview.md)」、「[サービスのセキュリティ保護](../../../docs/framework/wcf/securing-services.md)」、および「[サービスおよびクライアントのセキュリティ保護](../../../docs/framework/wcf/feature-details/securing-services-and-clients.md)」を参照してください。トランスポート モードとメッセージ[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[トランスポート セキュリティ](../../../docs/framework/wcf/feature-details/transport-security.md)」および「[メッセージのセキュリティ](../../../docs/framework/wcf/feature-details/message-security-in-wcf.md)」を参照してください。 + +### コードでセキュリティ モードを設定するには + +1. 使用しているバインディング クラスのインスタンスを作成します。定義済みバインディングの一覧については、「[システム標準のバインディング](../../../docs/framework/wcf/system-provided-bindings.md)」を参照してください。この例では、 クラスのインスタンスを作成します。 + +2. `Security` プロパティから返されるオブジェクトの `Mode` プロパティを設定します。 + + [!code-csharp[c_SettingSecurityMode#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_settingsecuritymode/cs/source.cs#1)] + [!code-vb[c_SettingSecurityMode#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_settingsecuritymode/vb/source.vb#1)] + + または、モードを Message \(メッセージ\) に設定します。コードは次のようになります。 + + [!code-csharp[c_SettingSecurityMode#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_settingsecuritymode/cs/source.cs#2)] + [!code-vb[c_SettingSecurityMode#2](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_settingsecuritymode/vb/source.vb#2)] + + または、モードを TransportWithMessageCredential \(メッセージ資格情報付きトランスポート\) に設定します。コードは次のようになります。 + + [!code-csharp[c_SettingSecurityMode#3](../../../samples/snippets/csharp/VS_Snippets_CFX/c_settingsecuritymode/cs/source.cs#3)] + [!code-vb[c_SettingSecurityMode#3](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_settingsecuritymode/vb/source.vb#3)] + +3. 次のコードに示すように、バインディングのコンストラクターでモードを設定することもできます。 + + [!code-csharp[c_SettingSecurityMode#4](../../../samples/snippets/csharp/VS_Snippets_CFX/c_settingsecuritymode/cs/source.cs#4)] + [!code-vb[c_SettingSecurityMode#4](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_settingsecuritymode/vb/source.vb#4)] + +## ClientCredentialType プロパティの設定 + モードを上記の 3 つの値のいずれかに設定すると、`ClientCredentialType` プロパティの設定方法が決まります。たとえば、 クラスを使用し、モードを `Transport` に設定した場合、 クラスの プロパティを適切な値に設定する必要があります。 + +#### トランスポート モードの ClientCredentialType プロパティを設定するには + +1. バインディングのインスタンスを作成します。 + +2. `Mode` プロパティを `Transport` に設定します。 + +3. `ClientCredential` プロパティに適切な値を設定します。プロパティを `Windows` に設定するコードを次に示します。 + + [!code-csharp[c_SettingSecurityMode#5](../../../samples/snippets/csharp/VS_Snippets_CFX/c_settingsecuritymode/cs/source.cs#5)] + [!code-vb[c_SettingSecurityMode#5](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_settingsecuritymode/vb/source.vb#5)] + +#### メッセージ モードの ClientCredentialType プロパティを設定するには + +1. バインディングのインスタンスを作成します。 + +2. `Mode` プロパティを `Message` に設定します。 + +3. `ClientCredential` プロパティに適切な値を設定します。プロパティを `Certificate` に設定するコードを次に示します。 + + [!code-csharp[c_SettingSecurityMode#6](../../../samples/snippets/csharp/VS_Snippets_CFX/c_settingsecuritymode/cs/source.cs#6)] + [!code-vb[c_SettingSecurityMode#6](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_settingsecuritymode/vb/source.vb#6)] + +#### 構成でモードと ClientCredentialType プロパティを設定するには + +1. 構成ファイルの [\](../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) 要素に、適切なバインド要素を追加します。次の例では [\](../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) 要素を追加しています。 + +2. `` 要素を追加し、`name` 属性に適切な値を設定します。 + +3. `` 要素を追加し、`mode` 属性を `Message`、`Transport`、または `TransportWithMessageCredential` に設定します。 + +4. モードを `Transport` に設定した場合は、`` 要素を追加し、`clientCredential` 属性を適切な値に設定します。 + + モードを "`Transport"` に設定し、`` 要素の `clientCredentialType` 属性を "`Windows"` に設定する例を次に示します。 + + ``` + + + + + + + + ``` + + または、`security mode` を "`Message"` に設定し、その後に `<"message">` 要素を指定します。この例では、`clientCredentialType` を "`Certificate"` に設定しています。 + + ``` + + + + + + + + ``` + + 次に説明する 値は、特殊なケースで使用されます。 + +### TransportWithMessageCredential の使用 + セキュリティ モードを `TransportWithMessageCredential` に設定した場合、トランスポート レベルのセキュリティを提供する実際の機構はトランスポートによって決まります。たとえば、HTTP プロトコルでは SSL \(Secure Sockets Layer\) over HTTP \(HTTPS\) を使用します。このため、トランスポート セキュリティ オブジェクト \( など\) の `ClientCredentialType` プロパティを設定しても無視されます。つまり、メッセージ セキュリティ オブジェクト \(`WSHttpBinding` バインディングの場合は オブジェクト\) の `ClientCredentialType` だけを設定できます。 + + [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [方法 : トランスポート セキュリティとメッセージ資格情報を使用する](../../../docs/framework/wcf/feature-details/how-to-use-transport-security-and-message-credentials.md). + +## 参照 + [方法 : SSL 証明書を使用してポートを構成する](../../../docs/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate.md) + [方法 : トランスポート セキュリティとメッセージ資格情報を使用する](../../../docs/framework/wcf/feature-details/how-to-use-transport-security-and-message-credentials.md) + [トランスポート セキュリティ](../../../docs/framework/wcf/feature-details/transport-security.md) + [メッセージのセキュリティ](../../../docs/framework/wcf/feature-details/message-security-in-wcf.md) + [セキュリティの概要](../../../docs/framework/wcf/feature-details/security-overview.md) + [システム標準のバインディング](../../../docs/framework/wcf/system-provided-bindings.md) + [\](../../../docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md) + [\](../../../docs/framework/configure-apps/file-schema/wcf/security-of-basichttpbinding.md) + [\](../../../docs/framework/configure-apps/file-schema/wcf/security-of-nettcpbinding.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-specify-a-client-binding-in-code.md b/docs/framework/wcf/how-to-specify-a-client-binding-in-code.md new file mode 100644 index 00000000000..b70b8aa5f91 --- /dev/null +++ b/docs/framework/wcf/how-to-specify-a-client-binding-in-code.md @@ -0,0 +1,54 @@ +--- +title: "方法 : コード内でクライアント バインディングを指定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6bee5da4-adf7-42e6-8f78-63a9e5c6dbad +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : コード内でクライアント バインディングを指定する +この例では、電卓サービスを使用するためのクライアントを作成し、そのクライアントのバインディングを強制的にコードで指定します。クライアントは `CalculatorService` にアクセスします。これにより、`ICalculator` インターフェイスが実装され、サービスとクライアントの両方で クラスが使用されます。 + + ここで説明する手順では、電卓サービスが実行されていることを前提としています。サービスの構築については、「[方法 : 構成でサービス バインディングを指定する](../../../docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md)」を参照してください。クライアント コンポーネントを自動的に生成するために、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] に付属する [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) も使用します。このツールでは、サービスにアクセスするためのクライアント コードが生成されます。 + + クライアントは 2 つの部分で構成されます。Svcutil.exe によって、`ICalculator` インターフェイスを実装する `ClientCalculator` が生成されます。次に、`ClientCalculator` のインスタンスを作成し、サービスのバインディングとアドレスをコードで指定して、このクライアント アプリケーションを作成します。 + + この例のソースのコピーについては、「[BasicBinding](../../../docs/framework/wcf/samples/basicbinding.md)」のサンプルを参照してください。 + +### コード内でカスタム バインディングを指定するには + +1. コマンド ラインから Svcutil.exe を実行して、サービス メタデータからコードを生成します。 + + ``` + Svcutil.exe + ``` + +2. 生成されたクライアントには、クライアントの実装時に満たされなければならないサービス コントラクトを定義する `ICalculator` インターフェイスが含まれます。 + + [!code-csharp[C_HowTo_CodeClientBinding#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeclientbinding/cs/client.cs#1)] + [!code-vb[C_HowTo_CodeClientBinding#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeclientbinding/vb/client.vb#1)] + +3. 生成されたクライアントは `ClientCalculator` も実装します。 + + [!code-csharp[C_HowTo_CodeClientBinding#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeclientbinding/cs/client.cs#2)] + [!code-vb[C_HowTo_CodeClientBinding#2](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeclientbinding/vb/client.vb#2)] + +4. クライアント アプリケーション内で クラスを使用する `ClientCalculator` のインスタンスを作成し、指定したアドレスのサービス操作を呼び出します。 + + [!code-csharp[C_HowTo_CodeClientBinding#3](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeclientbinding/cs/client.cs#3)] + [!code-vb[C_HowTo_CodeClientBinding#3](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeclientbinding/vb/client.vb#3)] + +5. クライアントをコンパイルして実行します。 + +## 参照 + [サービスとクライアントを構成するためのバインディングの使用](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-specify-a-client-binding-in-configuration.md b/docs/framework/wcf/how-to-specify-a-client-binding-in-configuration.md new file mode 100644 index 00000000000..54316290cbd --- /dev/null +++ b/docs/framework/wcf/how-to-specify-a-client-binding-in-configuration.md @@ -0,0 +1,61 @@ +--- +title: "方法 : 構成でクライアント バインディングを指定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4a7c79aa-50ee-4991-891e-adc0599323a7 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 方法 : 構成でクライアント バインディングを指定する +この例では、電卓サービスを使用するためのクライアント コンソール アプリケーションを作成し、そのクライアントのバインディングを構成で宣言によって指定します。 クライアントがアクセスする、`CalculatorService`を実装する、`ICalculator`インターフェイス、およびサービスとを使用してクライアントの両方、 クラスです。 + + ここで説明する手順は、電卓サービスが実行されていることを前提とします。 サービスを構築する方法については、次を参照してください。[方法: 構成では、サービス バインドを指定](../../../docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md)します。 使用して、 [ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)を[!INCLUDE[indigo1](../../../includes/indigo1-md.md)]クライアント コンポーネントを自動的に生成を提供します。 このツールにより、サービスにアクセスするためのクライアント コードと構成が生成されます。 + + クライアントは&2; つの部分で構成されます。 Svcutil.exe によって、`ClientCalculator` インターフェイスを実装する `ICalculator` が生成されます。 次に、`ClientCalculator` のインスタンスを作成することで、クライアント アプリケーションを作成します。 + + 通常、ベスト プラクティスは、コードで命令として記述するよりも、構成でバインディングを指定して情報を明示的にアドレス指定することです。 設置済みサービスのバインドおよびアドレスは一般的に、サービスの開発中に使用されるものとは異なるので、コード内でエンドポイントを定義することは通常、実用的ではありません。 一般的に、バインディング情報とアドレス情報をコードに含めないことで、変更時にアプリケーションの再コンパイルや再展開を行う必要がなくなります。 + + 次の構成手順のすべてを実行するにを使用して、[構成エディター ツール (SvcConfigEditor.exe)](../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md)します。 + + この例のソースのコピー、表示、 [BasicBinding](../../../docs/framework/wcf/samples/basicbinding.md)サンプルです。 + +### 構成を使用したクライアント バインディングの指定 + +1. コマンド ラインから Svcutil.exe を実行して、サービス メタデータからコードを生成します。 + + ``` + Svcutil.exe + ``` + +2. 生成されたクライアントには、クライアントの実装時に満たされなければならないサービス コントラクトを定義する `ICalculator` インターフェイスが含まれます。 + + [!code-csharp[C_HowTo_ConfigureClientBinding#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_configureclientbinding/cs/generatedclient.cs#1)] + [!code-csharp[C_HowTo_ConfigureClientBinding#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_configureclientbinding/cs/source.cs#1)] + +3. 生成されたクライアントは `ClientCalculator` も実装します。 + + [!code-csharp[C_HowTo_ConfigureClientBinding#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_configureclientbinding/cs/generatedclient.cs#2)] + [!code-csharp[C_HowTo_ConfigureClientBinding#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_configureclientbinding/cs/source.cs#2)] + +4. Svcutil.exe を使用するクライアントの構成を生成も、 クラスです。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] を使用する場合、このファイルに App.config という名前を付けます。 このサービスの実装では、アドレス情報とバインディング情報が指定されないことに注意してください。 同様に、コードは構成ファイルから情報を取得する必要はありません。 + + [!code[C_HowTo_ConfigureClientBinding#100](../../../samples/snippets/common/VS_Snippets_CFX/c_howto_configureclientbinding/common/client.exe.config#100)] + +5. アプリケーションで `ClientCalculator` のインスタンスを作成し、サービス操作を呼び出します。 + + [!code-csharp[C_HowTo_ConfigureClientBinding#3](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_configureclientbinding/cs/client.cs#3)] + +6. クライアントをコンパイルして実行します。 + +## 関連項目 + [バインドを使用してサービスとクライアントを構成するには](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-specify-a-service-binding-in-code.md b/docs/framework/wcf/how-to-specify-a-service-binding-in-code.md new file mode 100644 index 00000000000..1d9a3484479 --- /dev/null +++ b/docs/framework/wcf/how-to-specify-a-service-binding-in-code.md @@ -0,0 +1,57 @@ +--- +title: "方法 : コード内でサービス バインディングを指定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 67ab5dd8-79c1-4e62-aa75-828ea918a53a +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 方法 : コード内でサービス バインディングを指定する +この例では、電卓サービスに `ICalculator` コントラクトを定義し、そのサービスを `CalculatorService` クラスに実装し、コード内でサービス エンドポイントを定義します。このエンドポイントでは、サービスが クラスを使用するように指定します。 + + 通常、ベスト プラクティスは、コードで命令として記述するよりも、構成でバインディングを指定して情報を明示的にアドレス指定することです。展開済みサービスのバインディングおよびアドレスは一般的に、サービスの開発中に使用されるものとは異なるので、コード内でエンドポイントを定義することは通常、実用的ではありません。一般的に、バインディング情報とアドレス情報をコードに含めないことで、変更時にアプリケーションの再コンパイルや再展開を行う必要がなくなります。 + + コードの代わりに構成要素を使用してこのサービスを構成する方法については、「[方法 : 構成でサービス バインディングを指定する](../../../docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md)」を参照してください。 + +### サービスで BasicHttpBinding が使用されるようにコードで指定するには + +1. サービスの種類にサービス コントラクトを定義します。 + + [!code-csharp[C_HowTo_CodeServiceBinding#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeservicebinding/cs/source.cs#1)] + [!code-vb[C_HowTo_CodeServiceBinding#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeservicebinding/vb/source.vb#1)] + +2. サービス クラスにサービス コントラクトを実装します。 + + [!code-csharp[C_HowTo_CodeServiceBinding#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeservicebinding/cs/source.cs#2)] + [!code-vb[C_HowTo_CodeServiceBinding#2](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeservicebinding/vb/source.vb#2)] + +3. ホスト アプリケーションで、サービスのベース アドレスとサービスで使用するバインディングを作成します。 + + [!code-csharp[C_HowTo_CodeServiceBinding#3](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeservicebinding/cs/source.cs#3)] + [!code-vb[C_HowTo_CodeServiceBinding#3](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeservicebinding/vb/source.vb#3)] + +4. サービスのホストを作成し、エンドポイントを追加して、ホストを開きます。 + + [!code-csharp[C_HowTo_CodeServiceBinding#4](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeservicebinding/cs/source.cs#4)] + [!code-vb[C_HowTo_CodeServiceBinding#4](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeservicebinding/vb/source.vb#4)] + +### バインディング プロパティの既定値を変更するには + +1. クラスの既定のプロパティ値を変更するには、ホストを作成する前に、バインディングのプロパティ値を新しい値に設定します。たとえば、開くおよび閉じる操作の既定のタイムアウト値を 1 分から 2 分に変更するには、次のようにします。 + + [!code-csharp[C_HowTo_CodeServiceBinding#5](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_codeservicebinding/cs/source.cs#5)] + [!code-vb[C_HowTo_CodeServiceBinding#5](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_codeservicebinding/vb/source.vb#5)] + +## 参照 + [サービスとクライアントを構成するためのバインディングの使用](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) + [エンドポイント アドレスの指定](../../../docs/framework/wcf/specifying-an-endpoint-address.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md b/docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md new file mode 100644 index 00000000000..ac0064c3f21 --- /dev/null +++ b/docs/framework/wcf/how-to-specify-a-service-binding-in-configuration.md @@ -0,0 +1,102 @@ +--- +title: "方法 : 構成でサービス バインディングを指定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 885037f7-1c2b-4d7a-90d9-06b89be172f2 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# 方法 : 構成でサービス バインディングを指定する +この例では、簡単な電卓サービス用に `ICalculator` コントラクトを定義し、そのサービスを `CalculatorService` クラスで実装し、そのエンドポイントを Web.config ファイルで構成します。このファイルでは、サービスが を使用するように指定します。構成の代わりにコードを使用してこのサービスを構成する方法については、「[方法 : コード内でサービス バインディングを指定する](../../../docs/framework/wcf/how-to-specify-a-service-binding-in-code.md)」を参照してください。 + + 通常、ベスト プラクティスは、コードで命令として記述するよりも、構成でバインディングを指定して情報を明示的にアドレス指定することです。展開済みサービスのバインディングおよびアドレスは一般的に、サービスの開発中に使用されるものとは異なるので、コード内でエンドポイントを定義することは通常、実用的ではありません。一般的に、バインディング情報とアドレス情報をコードに含めないことで、変更時にアプリケーションの再コンパイルや再展開を行う必要がなくなります。 + + 以下のすべての構成手順は、[構成エディター ツール \(SvcConfigEditor.exe\)](../../../docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md) を使用して実行できます。 + + この例のソースのコピーについては、「[BasicBinding](../../../docs/framework/wcf/samples/basicbinding.md)」を参照してください。 + +### サービスの構成で BasicHttpBinding が使用されるように指定するには + +1. サービスの種類にサービス コントラクトを定義します。 + + [!code-csharp[C_HowTo_ConfigureServiceBinding#1](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_configureservicebinding/cs/source.cs#1)] + [!code-vb[C_HowTo_ConfigureServiceBinding#1](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_configureservicebinding/vb/source.vb#1)] + +2. サービス クラスにサービス コントラクトを実装します。 + + [!code-csharp[C_HowTo_ConfigureServiceBinding#2](../../../samples/snippets/csharp/VS_Snippets_CFX/c_howto_configureservicebinding/cs/source.cs#2)] + [!code-vb[C_HowTo_ConfigureServiceBinding#2](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_howto_configureservicebinding/vb/source.vb#2)] + + > [!NOTE] + > アドレス情報とバインディング情報は、サービスの実装内では指定されません。また、構成ファイルからこの情報を取得するためのコードを記述する必要もありません。 + +3. を使用する `CalculatorService` のエンドポイントを構成する Web.config ファイルを作成します。 + + ``` + + + + + + + <--from the hosting environment,in this case IIS, so --> + <-- the address will just be that of the IIS Virtual --> + <--Directory.--> + address="" + <--Specify the binding type --> + binding="wsHttpBinding" + <--Specify the binding configuration name for that --> + <--binding type. This is optional but useful if you --> + <--want to modify the properties of the binding. --> + <--The bindingConfiguration name Binding1 is defined --> + <--below in the bindings element. --> + bindingConfiguration="Binding1" + contract="ICalculator" /> + + + + + + <-- Binding property values can be modified here. --> + <--See the next procedure. --> + + + + + + + ``` + +4. 次の行を含む Service.svc ファイルを作成し、インターネット インフォメーション サービス \(IIS: Internet Information Services\) 仮想ディレクトリに配置します。 + + ``` + <%@ServiceHost language=c# Service="CalculatorService" %> + ``` + +### バインディング プロパティの既定値を変更するには + +1. の既定のプロパティ値を変更するには、[\](../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) 要素内に `` という新しいバインディング構成名を作成し、このバインド要素のバインディングの属性に新しい値を設定します。たとえば、開く操作と閉じる操作の既定のタイムアウト値を 1 分から 2 分に変更するには、構成ファイルに以下を追加します。 + + ``` + + + + + ``` + +## 参照 + [サービスとクライアントを構成するためのバインディングの使用](../../../docs/framework/wcf/using-bindings-to-configure-services-and-clients.md) + [エンドポイント アドレスの指定](../../../docs/framework/wcf/specifying-an-endpoint-address.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-specify-client-credential-values.md b/docs/framework/wcf/how-to-specify-client-credential-values.md new file mode 100644 index 00000000000..909a669fb7d --- /dev/null +++ b/docs/framework/wcf/how-to-specify-client-credential-values.md @@ -0,0 +1,115 @@ +--- +title: "方法 : クライアントの資格情報の値を指定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 82293d7f-471a-4549-8f19-0be890e7b074 +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# 方法 : クライアントの資格情報の値を指定する +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] では、サービスに対するクライアントの認証方法を指定できます。 たとえば、証明書を使用してクライアントを認証するように指定できます。 + +### クライアント資格情報の種類を特定するには + +1. サービスのメタデータ エンドポイントからメタデータを取得します。 一般的に、メタデータは、選択したプログラミング言語 \(既定は Visual C\#\) のクライアント コードおよび XML 構成ファイルという 2 つのファイルで構成されています。 メタデータは、クライアント コードおよびクライアント構成を返す Svcutil.exe ツールを使用して取得できます。 詳細については、「[メタデータを取得する](../../../docs/framework/wcf/feature-details/retrieving-metadata.md)」および「[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md)」を参照してください。 + +2. XML 構成ファイルを開きます。 Svcutil.exe ツールを使用する場合、ファイルの既定の名前は、Output.config です。 + +3. **mode** 属性のある **\** 要素 \(**\**\) を見つけます。ここで、`MessageOrTransport` は、セキュリティ モードの 1 つに設定されています。 + +4. mode 値に一致する子要素を見つけます。 たとえば、mode が **Message** に設定されている場合、**\** 要素に含まれる **\** 要素を見つけます。 + +5. **clientCredentialType** 属性に割り当てられている値に注意します。 実際の値は、使用されているモード \(トランスポートまたはメッセージ\) に依存します。 + + 次の XML コードは、メッセージ セキュリティを使用し、クライアントの認証に証明書を要求するクライアントの構成を示します。 + +``` + + + + +``` + +## 例: クライアント資格情報としての証明書による TCP トランスポート モード + この例では、セキュリティ モードを "Transport \(トランスポート\)" モードに設定し、クライアント資格情報の値を X.509 証明書に設定します。 次の手順では、クライアントでクライアント資格情報の値をコードと構成を使用して設定する方法を示します。 ここでは、サービスからメタデータ \(コードと構成\) を返すために [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用していることを前提としています。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)][方法 : クライアントを作成する](../../../docs/framework/wcf/how-to-create-a-wcf-client.md)。 + +#### クライアントでクライアント資格情報の値をコードによって指定するには + +1. サービスからコードと構成を生成するために [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用します。 + +2. 生成されたコードを使用して、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントのインスタンスを作成します。 + +3. クライアント クラスで、 クラスの プロパティを適切な値に設定します。 この例では、 クラスの メソッドを使用して、このプロパティを X.509 証明書に設定します。 + + [!code-csharp[c_TcpService#4](../../../samples/snippets/csharp/VS_Snippets_CFX/c_tcpservice/cs/source.cs#4)] + [!code-vb[c_TcpService#4](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_tcpservice/vb/source.vb#4)] + + クラスの任意の列挙体を使用できます。 ここでは、有効期限が切れて証明書が変更された場合に備えて、サブジェクト名を使用しています。 サブジェクト名を使用することにより、インフラストラクチャは証明書を再検索できます。 + +#### クライアントでクライアント資格情報の値を構成によって指定するには + +1. [\](../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md) 要素を [\](../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素に追加します。 + +2. [\](../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md) 要素を [\](../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) 要素に追加します。 `name` 属性 \(必須\) を適切な値に必ず設定してください。 + +3. [\](../../../docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-servicecredentials.md) 要素を [\](../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md) 要素に追加します。 + +4. 次のコードに示すように、`storeLocation`、`storeName`、`x509FindType`、および `findValue` の各属性を適切な値に設定します。 証明書の[!INCLUDE[crabout](../../../includes/crabout-md.md)]については、「[証明書の使用](../../../docs/framework/wcf/feature-details/working-with-certificates.md)」を参照してください。 + + ``` + + + + + + + + + + ``` + +5. クライアントを構成するときは、次のコードに示すように、`behaviorConfiguration` 要素の `` 属性を設定して動作を指定します。 エンドポイント要素は [\](../../../docs/framework/configure-apps/file-schema/wcf/client.md) 要素の子です。 また、`bindingConfiguration` 属性をクライアントのバインディングに設定することにより、バインディング構成の名前を指定します。 生成された構成ファイルを使用している場合は、バインディングの名前は自動的に生成されます。 この例では、名前は `"tcpBindingWithCredential"` です。 + + ``` + + + + ``` + +## 参照 + + + + + + [WCF セキュリティのプログラミング](../../../docs/framework/wcf/feature-details/programming-wcf-security.md) + [資格情報の種類の選択](../../../docs/framework/wcf/feature-details/selecting-a-credential-type.md) + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) + [証明書の使用](../../../docs/framework/wcf/feature-details/working-with-certificates.md) + [方法 : クライアントを作成する](../../../docs/framework/wcf/how-to-create-a-wcf-client.md) + [\](../../../docs/framework/configure-apps/file-schema/wcf/nettcpbinding.md) + [\](../../../docs/framework/configure-apps/file-schema/wcf/security-of-nettcpbinding.md) + [\](../../../docs/framework/configure-apps/file-schema/wcf/message-element-of-nettcpbinding.md) + [\](../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md) + [\](../../../docs/framework/configure-apps/file-schema/wcf/behaviors.md) + [\](../../../docs/framework/configure-apps/file-schema/wcf/clientcertificate-of-servicecredentials.md) + [\](../../../docs/framework/configure-apps/file-schema/wcf/clientcredentials.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-specify-the-client-credential-type.md b/docs/framework/wcf/how-to-specify-the-client-credential-type.md new file mode 100644 index 00000000000..da5c56403af --- /dev/null +++ b/docs/framework/wcf/how-to-specify-the-client-credential-type.md @@ -0,0 +1,66 @@ +--- +title: "方法 : クライアントの資格情報の種類を指定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "セキュリティ資格情報, SOAP メッセージへの追加" + - "WCF, セキュリティ" +ms.assetid: 10f51bee-5f92-4c1a-9126-fa5418535d8f +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 方法 : クライアントの資格情報の種類を指定する +セキュリティ モード \(トランスポートまたはメッセージ\) を設定してから、クライアント資格情報の種類を指定することができます。このプロパティでは、クライアントが認証時にサービスに提供する必要のある資格情報の種類を指定します。セキュリティ モードの設定 \(クライアントの資格情報の種類を設定する前に必要な手順\) [!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[方法 : セキュリティ モードを設定する](../../../docs/framework/wcf/how-to-set-the-security-mode.md)」を参照してください。 + +### コードでクライアント資格情報の種類を設定するには + +1. サービスで使用されるバインドのインスタンスを作成します。この例では、 バインドを使用します。 + +2. プロパティに適切な値を設定します。この例では、メッセージ モードを使用します。 + +3. プロパティに適切な値を設定します。この例では、Windows 認証 \(\) を使用するように設定します。 + + [!code-csharp[c_ProgrammingSecurity#14](../../../samples/snippets/csharp/VS_Snippets_CFX/c_programmingsecurity/cs/source.cs#14)] + [!code-vb[c_ProgrammingSecurity#14](../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_programmingsecurity/vb/source.vb#14)] + +### 構成でクライアント資格情報の種類を設定するには + +1. [\](../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) 要素を構成ファイルに追加します。 + +2. 子要素として [\](../../../docs/framework/configure-apps/file-schema/wcf/bindings.md) 要素を追加します。 + +3. 適切なバインドを追加します。この例では、[\](../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md) 要素を使用します。 + +4. [\](../../../docs/framework/misc/binding.md) 要素を追加し、`name` 属性に適切な値を設定します。この例では、"SecureBinding" という名前を使用します。 + +5. `` バインドを追加します。`mode` 属性を適切な値に設定します。この例では、`"Message"` に設定します。 + +6. セキュリティ モードによって、`` 要素と `` 要素のどちらかを追加します。`clientCredentialType` 属性を適切な値に設定します。この例では、`"Windows"` を使用します。 + + ``` + + + + + + + + + + + + ``` + +## 参照 + [サービスのセキュリティ保護](../../../docs/framework/wcf/securing-services.md) + [方法 : セキュリティ モードを設定する](../../../docs/framework/wcf/how-to-set-the-security-mode.md) \ No newline at end of file diff --git a/docs/framework/wcf/how-to-use-a-wcf-client.md b/docs/framework/wcf/how-to-use-a-wcf-client.md new file mode 100644 index 00000000000..0a70b472bc5 --- /dev/null +++ b/docs/framework/wcf/how-to-use-a-wcf-client.md @@ -0,0 +1,176 @@ +--- +title: "方法 : Windows Communication Foundation クライアントを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "WCF クライアント [WCF], 使用" +ms.assetid: 190349fc-0573-49c7-bb85-8e316df7f31f +caps.latest.revision: 38 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 38 +--- +# 方法 : Windows Communication Foundation クライアントを使用する +これは、基本的な [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションの作成に必要な 6 つのタスクのうち、最後のタスクです。 6 つのすべてのタスクの概要については、「[チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md)」を参照してください。 + + [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] プロキシを作成して構成したら、クライアント インスタンスを作成できます。また、クライアント アプリケーションをコンパイルし、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスとの通信に使用できます。 このトピックでは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントをインスタンス化し、使用する手順について説明します。 この手順は、次の 3 つの手順で構成されます。 + +1. [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントをインスタンス化します。 + +2. 生成されたプロキシからサービス操作を呼び出します。 + +3. 操作の呼び出しが完了したらクライアントを閉じます。 + +### Windows Communication Foundation クライアントを使用するには + +1. GettingStartedClient プロジェクトの Program.cs ファイルまたは Program.vb ファイルを開き、既存のコードを次のコードで置き換えます。 + + ``` + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + using GettingStartedClient.ServiceReference1; + + namespace GettingStartedClient + { + class Program + { + static void Main(string[] args) + { + //Step 1: Create an instance of the WCF proxy. + CalculatorClient client = new CalculatorClient(); + + // Step 2: Call the service operations. + // Call the Add service operation. + double value1 = 100.00D; + double value2 = 15.99D; + double result = client.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + + // Call the Subtract service operation. + value1 = 145.00D; + value2 = 76.54D; + result = client.Subtract(value1, value2); + Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); + + // Call the Multiply service operation. + value1 = 9.00D; + value2 = 81.25D; + result = client.Multiply(value1, value2); + Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); + + // Call the Divide service operation. + value1 = 22.00D; + value2 = 7.00D; + result = client.Divide(value1, value2); + Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); + + //Step 3: Closing the client gracefully closes the connection and cleans up resources. + client.Close(); + } + } + } + + ``` + + ``` + Imports System + Imports System.Collections.Generic + Imports System.Text + Imports System.ServiceModel + Imports GettingStartedClientVB2.ServiceReference1 + + Module Module1 + + Sub Main() + ' Step 1: Create an instance of the WCF proxy + Dim Client As New CalculatorClient() + + 'Step 2: Call the service operations. + 'Call the Add service operation. + Dim value1 As Double = 100D + Dim value2 As Double = 15.99D + Dim result As Double = Client.Add(value1, value2) + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result) + + 'Call the Subtract service operation. + value1 = 145D + value2 = 76.54D + result = Client.Subtract(value1, value2) + Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result) + + 'Call the Multiply service operation. + value1 = 9D + value2 = 81.25D + result = Client.Multiply(value1, value2) + Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result) + + 'Call the Divide service operation. + value1 = 22D + value2 = 7D + result = Client.Divide(value1, value2) + Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result) + + ' Step 3: Closing the client gracefully closes the connection and cleans up resources. + Client.Close() + + Console.WriteLine() + Console.WriteLine("Press to terminate client.") + Console.ReadLine() + + End Sub + + End Module + + ``` + + GettingStartedClient.ServiceReference1 をインポートする using または imports ステートメントに注意してください。 これによって、Visual Studio の "サービス参照の追加" によって生成されたコードがインポートされます。 そのコードは WCF プロキシをインスタンス化してから、電卓サービスによって公開されている各サービス操作を呼び出し、プロキシを閉じて終了します。 + + これで、チュートリアルは終了です。 サービス コントラクトの定義、サービス コントラクトの実装、WCF プロキシの生成、WCF クライアント アプリケーションの構成、そしてプロキシの使用によるサービス操作の呼び出しを行いました。 アプリケーションをテストするには、まず GettingStartedHost を実行してサービスを開始し、次に GettingStartedClient を実行します。 GettingStartedHost からの出力は、次のようになります。 + +```Output + + サービスの準備は整っています。 サービスを終了するには、 キーを押します。 Received Add(100,15.99) +Return: 115.99 +Received Subtract(145,76.54) +Return: 68.46 +Received Multiply(9,81.25) +Return: 731.25 +Received Divide(22,7) +Return: 3.14285714285714 +``` + + GettingStartedClient からの出力は、次のようになります。 + +```Output + + Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +クライアントを終了するには、 キーを押します。 + +``` + +## 参照 + [クライアントを構築する](../../../docs/framework/wcf/building-clients.md) + [方法 : クライアントを作成する](../../../docs/framework/wcf/how-to-create-a-wcf-client.md) + [チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md) + [基本的な WCF プログラミング](../../../docs/framework/wcf/basic-wcf-programming.md) + [方法 : 双方向コントラクトを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-duplex-contract.md) + [方法 : 双方向コントラクトを使用してサービスにアクセスする](../../../docs/framework/wcf/feature-details/how-to-access-services-with-a-duplex-contract.md) + [概要](../../../docs/framework/wcf/samples/getting-started-sample.md) + [自己ホスト](../../../docs/framework/wcf/samples/self-host.md) \ No newline at end of file diff --git a/docs/framework/wcf/implementing-service-contracts.md b/docs/framework/wcf/implementing-service-contracts.md new file mode 100644 index 00000000000..3e514c3ff93 --- /dev/null +++ b/docs/framework/wcf/implementing-service-contracts.md @@ -0,0 +1,74 @@ +--- +title: "サービス コントラクトの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "サービス コントラクトの実装 [WCF]" +ms.assetid: aefb6f56-47e3-4f24-ab0a-9bc07bf9885f +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# サービス コントラクトの実装 +サービスは、1 つ以上のエンドポイントでクライアントが使用できる機能を公開するクラスです。サービスを作成するには、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] コントラクトを実装するクラスを記述します。2 つの方法のいずれかでこれを行うことができます。コントラクトを個別にインターフェイスとして定義し、そのインターフェイスを実装するクラスを作成できます。または、クラスに 属性を配置し、サービスのクライアントが使用できるメソッドに 属性を配置することによって、クラスとコントラクトを直接作成することもできます。 + +## サービス クラスの作成 + 個別に定義された `IMath` コントラクトを実装するサービスの例を次に示します。 + +```csharp +// Define the IMath contract. +[ServiceContract] +public interface IMath +{ + [OperationContract] + double Add(double A, double B); + + [OperationContract] + double Multiply (double A, double B); +} + +// Implement the IMath contract in the MathService class. +public class MathService : IMath +{ + public double Add (double A, double B) { return A + B; } + public double Multiply (double A, double B) { return A * B; } +} +``` + + また、サービスは直接コントラクトを公開できます。`MathService` コントラクトを定義し、実装するサービス クラスの例を次に示します。 + +```csharp +// Define the MathService contract directly on the service class. +[ServiceContract] +class MathService +{ + [OperationContract] + public double Add(double A, double B) { return A + B; } + [OperationContract] + private double Multiply (double A, double B) { return A * B; } +} +``` + + コントラクト名が異なるので、上記の 2 つのサービスが公開するコントラクトはそれぞれ異なります。最初の例では、公開されるコントラクトの名前が "`IMath`" であるのに対し、2 番目の例では、コントラクトの名前は "`MathService`" です。 + + 同時実行やインスタンス化など、いくつかの項目は、サービス実装レベルと操作実装レベルで設定できます。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)][サービスの設計と実装](../../../docs/framework/wcf/designing-and-implementing-services.md). + + サービス コントラクトを実装したら、そのサービスに 1 つ以上のエンドポイントを作成する必要があります。[!INCLUDE[crdefault](../../../includes/crdefault-md.md)][エンドポイントの作成の概要](../../../docs/framework/wcf/endpoint-creation-overview.md).サービスの実行方法[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[ホスティング サービス](../../../docs/framework/wcf/hosting-services.md)」を参照してください。 + +## 参照 + [サービスの設計と実装](../../../docs/framework/wcf/designing-and-implementing-services.md) + [方法 : コントラクト クラスを使用してサービスを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-wcf-contract-with-a-class.md) + [方法 : コントラクト インターフェイスを使用してサービスを作成する](../../../docs/framework/wcf/feature-details/how-to-create-a-service-with-a-contract-interface.md) + [サービスのランタイム動作の指定](../../../docs/framework/wcf/specifying-service-run-time-behavior.md) \ No newline at end of file diff --git a/docs/framework/wcf/index.md b/docs/framework/wcf/index.md new file mode 100644 index 00000000000..71105316342 --- /dev/null +++ b/docs/framework/wcf/index.md @@ -0,0 +1,91 @@ +--- +title: "Windows Communication Foundation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "WCF [WCF]" + - "Windows Communication Foundation [WCF]" +ms.assetid: 96aad289-58bc-4389-89d0-b09dfc4d5c58 +caps.latest.revision: 2 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Windows Communication Foundation +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] は、サービス指向のアプリケーションを構築するための Microsoft の統一プログラミング モデルです。 これを使用して開発者は、プラットフォーム間を統合し、既存のコンポーネントと相互運用する、セキュリティで保護された信頼性の高いトランザクション型のソリューションを構築できます。 + +## このセクションの内容 + [Windows Communication Foundation 4.5 の新機能](../../../docs/framework/wcf/whats-new.md) + Windows Communication Foundation の新機能について説明します。 + + [WCF の単純化機能](../../../docs/framework/wcf/wcf-simplification-features.md) + WCF アプリケーションの作成を容易にする新しい機能について説明します。 + + [ドキュメントのガイド](../../../docs/framework/wcf/guide-to-the-documentation.md) + WCF ドキュメントの説明があります。 + + [概念](../../../docs/framework/wcf/conceptual-overview.md) + Windows Communication Foundation \(WCF\) メッセージング システムおよびその使用をサポートしているクラスの概要について説明します。 + + [チュートリアル入門](../../../docs/framework/wcf/getting-started-tutorial.md) + WCF サービスとクライアントを作成する手順のチュートリアルです。 + + [基本的な WCF プログラミング](../../../docs/framework/wcf/basic-wcf-programming.md) + Windows Communication Foundation アプリケーションを作成するための基礎について説明します。 + + [WCF 機能の詳細](../../../docs/framework/wcf/feature-details/index.md) + 必要な [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 機能を選択するためのトピックを示します。 + + [WCF の拡張](../../../docs/framework/wcf/extending/extending-wcf.md) + WCF ランタイム コンポーネントを変更および拡張する方法について説明します。 + + [ガイドラインとベスト プラクティス](../../../docs/framework/wcf/guidelines-and-best-practices.md) + Windows Communication Foundation \(WCF\) アプリケーションの作成のガイドラインを提供します。 + + [管理と診断](../../../docs/framework/wcf/diagnostics/index.md) + WCF の診断機能について説明します。 + + [システム要件](../../../docs/framework/wcf/wcf-system-requirements.md) + WCF の実行に必要なシステム要件について説明します。 + + [WCF に必要なオペレーティング システム リソース](../../../docs/framework/wcf/operating-system-resources-required-by-wcf.md) + WCF に必要なオペレーティング システム リソースについて説明します。 + + [セットアップ問題のトラブルシューティング](../../../docs/framework/wcf/troubleshooting-setup-issues.md) + WCF のセットアップの問題に対処するためのガイダンスを示します。 + + [.NET リモート処理から WCF への移行](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md) + .NET リモート処理と WCF を比較し、一般的なシナリオ用の移行のガイダンスを提供します。 + + [WCF 開発ツールの使用](../../../docs/framework/wcf/using-the-wcf-development-tools.md) + WCFservice の開発に役立つ Visual Studio Windows Communication Foundation 開発ツールについて説明します。 + + [Windows Communication Foundation ツール](../../../docs/framework/wcf/tools.md) + WCF アプリケーションの作成、展開、および管理を簡単に行えるように設計されている WCF ツールについて説明します。 + + [Windows Communication Foundation サンプル](../../../docs/framework/wcf/samples/index.md) + Windows Communication Foundation のさまざまな特性について説明するサンプルがあります。 + + [Windows Communication Foundation 用語集](../../../docs/framework/wcf/glossary.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] に固有の用語の一覧を示します。 + + [一般的なリファレンス](../../../docs/framework/wcf/general-reference.md) + このセクションでは、Windows Communication Foundation のクライアントおよびサービスの設定に使用される要素について説明します。 + + [フィードバックとコミュニティ](../../../docs/framework/wcf/feedback-and-community.md) + Windows Communication Foundation に関するフィードバックを提供する方法についての情報です。 + + [プライバシー情報](../../../docs/framework/wcf/privacy-information.md) + WCF とプライバシーに関する情報があります。 + +## 関連項目 + +## 関連項目 \ No newline at end of file diff --git a/docs/framework/wcf/interpreting-error-codes-returned-by-wsatconfig-exe.md b/docs/framework/wcf/interpreting-error-codes-returned-by-wsatconfig-exe.md new file mode 100644 index 00000000000..425a1e8b439 --- /dev/null +++ b/docs/framework/wcf/interpreting-error-codes-returned-by-wsatconfig-exe.md @@ -0,0 +1,78 @@ +--- +title: "wsatConfig.exe によって返されたエラー コードの解釈 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ab65f22b-0d69-4c21-9aaf-74acef0ca102 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# wsatConfig.exe によって返されたエラー コードの解釈 +ここでは、WS\-AtomicTransaction 構成ユーティリティ \(wsatConfig.exe\) によって生成されるすべてのエラー コードと、実行する必要のある推奨アクションを示します。 + +## エラー コードの一覧 + +|エラー コード|説明|実行する必要のある推奨アクション| +|-------------|--------|----------------------| +|0|操作は成功しました。|なし| +|1|予期しないエラーが発生しました。|マイクロソフトにお問い合わせください。| +|2|MSDTC に問い合わせて、セキュリティ設定を取得しようとしたときに、予期しないエラーが発生しました。|MSDTC サービスが無効になっていないことを確認し、返された例外に示されているすべての問題を解決します。| +|3|WsatConfig.exe が実行されていたアカウントに、ネットワーク セキュリティ設定を読み取るために必要なアクセス許可がありませんでした。|管理者ユーザー アカウントで WsatConfig.exe を実行します。| +|4|WS\-AT サポートの有効化を試みる前に、MSDTC の "ネットワーク DTC アクセス" を有効にします。|MSDTC の "ネットワーク DTC アクセス" を有効にして、ユーティリティを再実行します。| +|5|入力したポートが有効範囲にありません。値は 1 ~ 65535 の範囲になければなりません。|`-port:`

コマンド ライン オプションを、エラー メッセージの指示に従って修正します。| +|6|コマンド ラインで、無効なエンドポイント証明書が指定されました。証明書が見つからなかったか、または検証を通過しませんでした。|`-endpointCert` コマンド ライン オプションを修正します。証明書に秘密キーがあること、ClientAuthentication および ServerAuthentication の両方での使用を目的としていること、LocalMachine\\MY 証明書ストアにインストールされていること、および完全に信頼されていることを確認します。| +|7|コマンド ラインで、無効なアカウント証明書が指定されました。|`-accountsCerts` コマンド ライン オプションを修正します。証明書が正しく指定されていないか、または見つかりませんでした。| +|8|既定のタイムアウトが、1 ~ 3600 秒の範囲内にありません。|指示のとおり、適切なタイムアウト値を入力します。| +|10|レジストリにアクセスしようとしたときに、予期しないエラーが発生しました。|エラー メッセージとエラー コードを調べて、アクション可能な項目を見つけます。| +|11|レジストリに書き込めません。|エラー メッセージに示されているキーが、WsatConfig.exe が実行されているアカウントからのレジストリへのアクセスをサポートしていることを確認してください。| +|12|証明書ストアにアクセスしようとしたときに、予期しないエラーが発生しました。|返されたエラー コードを使用して、適切なシステム エラーにマップします。| +|13|http.sys の構成に失敗しました。MSDTC 用の新しい HTTPS ポートを予約できません。|返されたエラー コードを使用して、適切なシステム エラーにマップします。| +|14|http.sys の構成に失敗しました。MSDTC 用の HTTPS ポートの予約を解除できません。|返されたエラー コードを使用して、適切なシステム エラーにマップします。| +|15|http.sys の構成に失敗しました。指定したポートに、以前の HTTPS ポートの予約が既に存在します。|別のアプリケーションが既に特定のポートを所有しています。別のポートへの変更、アンインストール、または現在のアプリケーションの再構成を行います。| +|16|http.sys の構成に失敗しました。指定した証明書をポートにバインドできません。|エラー メッセージで返されたエラー コードを使用して、適切なシステム エラーにマップします。| +|17|http.sys の構成に失敗しました。以前のポートから SSL 証明書をバインド解除できません。|エラー メッセージで返されたエラー コードを使用して、適切なシステム エラーにマップします。必要に応じて、httpcfg.exe または netsh.exe を使用して、誤ったポートの予約を解除します。| +|18|http.sys の構成に失敗しました。以前の SSL バインディングが既に存在するため、指定した証明書をポートにバインドできません。|別のアプリケーションが既に特定のポートを所有しています。別のポートへの変更、アンインストール、または現在のアプリケーションの再構成を行います。| +|19|MSDTC の再起動に失敗しました。|必要に応じて、MSDTC を手動で再起動します。問題が解決されない場合は、マイクロソフトにお問い合わせください。| +|20|[!INCLUDE[vstecwinfx](../../../includes/vstecwinfx-md.md)] がリモート コンピューターにインストールされていないか、または正しくインストールされていません。|[!INCLUDE[vstecwinfx](../../../includes/vstecwinfx-md.md)] をコンピューターにインストールします。| +|21|操作タイムアウトにより、リモート構成が失敗しました。|リモート コンピューターの WS\-AT を構成するための呼び出しにかかる時間は、90 秒を超えます。| +|22|[!INCLUDE[vstecwinfx](../../../includes/vstecwinfx-md.md)] がリモート コンピューターにインストールされていないか、または正しくインストールされていません。|[!INCLUDE[vstecwinfx](../../../includes/vstecwinfx-md.md)] をコンピューターにインストールします。| +|23|リモート コンピューターでの例外により、リモート構成が失敗しました。|エラー メッセージを調べて、アクション可能な項目を見つけます。| +|26|WsatConfig.exe に渡された引数が無効です。|コマンド ラインを調べてエラーを見つけます。| +|27|`-accounts` コマンド ライン オプションが無効です。|\-`accounts` コマンド ライン オプションを修正して、ユーザー アカウントを正しく指定します。| +|28|`-network` コマンド ライン オプションが無効です。|`-network` コマンド ライン オプションを修正して、"enable" または "disable" を正しく指定します。| +|29|`-maxTimeout` コマンド ライン オプションが無効です。|`-maxTimeout` コマンド ライン オプションを指示のとおり修正します。| +|30|`-timeout` コマンド ライン オプションが無効です。|`-timeout` コマンド ライン オプションを指示のとおり修正します。| +|31|`-traceLevel` コマンド ライン オプションが無効です。|`-traceLevel` コマンド ライン オプションを修正して、以下から有効な値を指定します。

- Off
- Error
- Critical
- 警告
- 情報
- Verbose
- すべて| +|32|`-traceActivity` コマンド ライン オプションが無効です。|"enable" または "disable" を指定して、`-traceActivity` コマンド ライン オプションを修正します。| +|33|`-traceProp` コマンド ライン オプションが無効です。|"enable" または "disable" を指定して、`-traceProp` コマンド ライン オプションを修正します。| +|34|`-tracePII` コマンド ライン オプションが無効です。|"enable" または "disable" を指定して、`-tracePII` コマンド ライン オプションを修正します。| +|37|WsatConfig.exe が、正確なコンピューターの証明書を特定できませんでした。このエラーは、複数の候補が存在するか、または候補が存在しない場合に発生する可能性があります。|証明書のサムプリントまたは Issuer\\SubjectName ペアを指定して、構成のための正確な証明書を正しく特定します。| +|38|プロセスまたはユーザーに、ファイアウォール構成を変更するために必要なアクセス許可がありません。|管理者ユーザー アカウントで WsatConfig.exe を実行します。| +|39|ファイアウォール構成の更新中に、WsatConfig.exe でエラーが発生しました。|エラー メッセージを調べて、アクション可能な項目を見つけます。| +|40|WsatConfig.exe が、MSDTC に、証明書の秘密キー ファイルの読み取りアクセス許可を付与できません。|管理者ユーザー アカウントで WsatConfig.exe を実行します。| +|41|[!INCLUDE[vstecwinfx](../../../includes/vstecwinfx-md.md)] のインストールが見つからないか、見つかったバージョンが、ツールで構成できるバージョンと一致しません。|[!INCLUDE[vstecwinfx](../../../includes/vstecwinfx-md.md)] が正しくインストールされていて、そのバージョンの [!INCLUDE[vstecwinfx](../../../includes/vstecwinfx-md.md)] に付属の WsatConfig.exe ツールのみを使用して WS\-AT を構成していることを確認します。| +|42|引数がコマンド ラインで複数回指定されました。|WsatConfig.exe を実行する際は、各引数は一度だけ指定します。| +|43|WS\-AT が有効になっていない場合、WsatConfig.exe は WS\-AT 設定を更新できません。|追加のコマンド ライン引数として `-network:enable` を指定します。| +|44|必要な修正プログラムが見つかりません。修正プログラムがインストールされるまで、WS\-AT を構成できません。|必要な修正プログラムをインストールするための手順については、[!INCLUDE[vstecwinfx](../../../includes/vstecwinfx-md.md)] のリリース ノートを参照してください。| +|45|`-virtualServer` コマンド ライン オプションが無効です。|構成するクラスター リソースのネットワーク名を指定して、`-virtualServer` コマンド ライン オプションを修正します。| +|46|ETW トレース セッションを開始しようとしたときに、予期しないエラーが発生しました。|返されたエラー コードを使用して、適切なシステム エラーにマップします。| +|47|プロセスまたはユーザーに、ETW トレース セッションを有効にするために必要なアクセス許可がありません。|管理者ユーザー アカウントで WsatConfig.exe を実行します。| +|48|ETW トレース セッションの開始中に、予期しないエラーが発生しました。|マイクロソフトにお問い合わせください。| +|49|%systemdrive% の容量不足が原因で、新しいログ ファイルを作成できません。|%systemdrive% に、ログ ファイル用に必要な容量があることを確認します。| +|51|ETW トレース セッションの開始中に、予期しないエラーが発生しました。|マイクロソフトにお問い合わせください。| +|52|ETW トレース セッションの開始中に、予期しないエラーが発生しました。|マイクロソフトにお問い合わせください。| +|53|以前の ETW セッションのログ ファイルのバックアップに失敗しました。|%systemdrive% に、ログ ファイル用、および以前のログ ファイル \(ある場合\) のバックアップ用に必要な容量があることを確認します。必要に応じて、以前のログ ファイルを手動で削除します。| +|55|ETW トレース セッションの開始中に、予期しないエラーが発生しました。|マイクロソフトにお問い合わせください。| +|56|ETW トレース セッションの開始中に、予期しないエラーが発生しました。|マイクロソフトにお問い合わせください。| + +## 参照 + [WS\-AtomicTransaction 構成ユーティリティ \(wsatConfig.exe\)](../../../docs/framework/wcf/ws-atomictransaction-configuration-utility-wsatconfig-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/introduction-to-extensibility.md b/docs/framework/wcf/introduction-to-extensibility.md new file mode 100644 index 00000000000..a19780b9385 --- /dev/null +++ b/docs/framework/wcf/introduction-to-extensibility.md @@ -0,0 +1,63 @@ +--- +title: "拡張機能の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "機能拡張 [WCF]" + - "WCF [WCF], 機能拡張" + - "Windows Communication Foundation [WCF], 機能拡張" +ms.assetid: ef56c251-d63c-4b3f-944f-b0c67bfb0f68 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 拡張機能の概要 +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] のアプリケーション モデルは、分散アプリケーションの大部分の通信要件に対応するように設計されています。 ただし、既定のアプリケーション モデルとシステム提供の実装でサポートされないシナリオが必ず存在します。 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の拡張モデルでは、アプリケーション モデル全体の置き換えに至るまでのすべてのレベルでシステム動作を変更できるようにすることによって、カスタム シナリオをサポートします。 ここでは、拡張のさまざまな領域を提示し、各領域の詳細について説明します。 + +## 拡張する領域 + 次の領域を拡張できます。 + +- アプリケーション ランタイム。 ここでは、アプリケーションについて、メッセージのディスパッチと処理を拡張します。 この領域には、セキュリティ システム、メタデータ システム、シリアル化システム、およびアプリケーションを基になるチャネル システムに接続するためのバインディングとバインド要素も含まれます。 + +- チャネルとチャネル ランタイム。 ここでは、メッセージ レベルで機能するシステムを拡張し、プロトコル、トランスポート、およびエンコーディングのサポートを提供します。 + +- ホスト ランタイム。 ここでは、チャネルおよびアプリケーション ランタイムとのホスト アプリケーション ドメインの関係を拡張します。 + +### アプリケーション ランタイムの拡張 + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションでは、対応するチャネル宛てのメッセージとアプリケーション宛てのメッセージを区別します。 チャネル メッセージは、セキュリティで保護されたメッセージ交換の確立や、信頼できるセッションの確立など、特定のチャネル関連の機能をサポートします。 このメッセージは、アプリケーション ランタイムでは使用できません。このメッセージは、アプリケーション層が関係する前に処理されます。 + + アプリケーション メッセージは、ユーザーまたはユーザーの顧客が作成したクライアントまたはサービスの操作向けのデータを含んでいます。 このメッセージは、必要に応じて、メッセージまたはオブジェクトの形でアプリケーション レベルの拡張システムで使用できます。 + + すべてのメッセージはチャネル システムを通過しますが、アプリケーション メッセージだけがチャネル システムからアプリケーションに渡されます。 新しいチャネル レベルの機能を作成するには、チャネル システムを拡張する必要があります。 新しいアプリケーション レベルの機能を作成するには、サービスまたはクライアントのランタイム \(それぞれディスパッチャーとチャネル ファクトリ\) を拡張する必要があります。 アプリケーション ランタイムの拡張[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[ServiceHost とサービス モデル レイヤーの拡張](../../../docs/framework/wcf/extending/extending-servicehost-and-the-service-model-layer.md)」を参照してください。 + +#### セキュリティの拡張 + トークンや資格情報などのカスタム セキュリティ機構を作成するには、セキュリティ システムを拡張する必要があります。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [セキュリティの拡張](../../../docs/framework/wcf/extending/extending-security.md). + +#### メタデータの拡張 + メタデータを既定以外の方法で公開するには、メタデータ システムを拡張する必要があります。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [メタデータ システムの拡張](../../../docs/framework/wcf/extending/extending-the-metadata-system.md). + +#### シリアル化の拡張 + カスタム エンコーダーの作成、データ サロゲートの提供、または転送されるデータのカスタマイズに関するその他の作業を行うには、シリアル化システムを拡張する必要があります。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [エンコーダーとシリアライザーの拡張](../../../docs/framework/wcf/extending/extending-encoders-and-serializers.md). + +#### バインディングの拡張 + トランスポート チャネルまたはプロトコル チャネルをアプリケーション層に関連付けるには、バインディング システムを拡張する必要があります。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [バインディングの拡張](../../../docs/framework/wcf/extending/extending-bindings.md). + +### チャネル システムの拡張 + カスタム トランスポートまたはプロトコル機能をサポートするチャネルを作成するには、「[チャネル レイヤーの拡張](../../../docs/framework/wcf/extending/extending-the-channel-layer.md)」を参照してください。 + +### サービス ホスト システムの拡張 + サービス全体のアプリケーション モデルを変更するには、 クラスを拡張する必要があります。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [ServiceHost とサービス モデル レイヤーの拡張](../../../docs/framework/wcf/extending/extending-servicehost-and-the-service-model-layer.md). + + ホスト アプリケーション ドメインとサービス ホストとの関係を変更するには、 クラスを拡張する必要があります。 [!INCLUDE[crdefault](../../../includes/crdefault-md.md)] [ServiceHostFactory を使用したホストの拡張](../../../docs/framework/wcf/extending/extending-hosting-using-servicehostfactory.md). + +## 参照 + [WCF の拡張](../../../docs/framework/wcf/extending/extending-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/load-balancing.md b/docs/framework/wcf/load-balancing.md new file mode 100644 index 00000000000..c4ffd1855ce --- /dev/null +++ b/docs/framework/wcf/load-balancing.md @@ -0,0 +1,103 @@ +--- +title: "負荷分散 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "負荷分散 [WCF]" +ms.assetid: 148e0168-c08d-4886-8769-776d0953b80f +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 負荷分散 +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] アプリケーションの処理能力を増加する方法の 1 つは、アプリケーションを負荷分散されたサーバー ファームに配置することでスケール アウトすることです。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションは、ハードウェア ベースの負荷分散アプリケーションの他に Windows Network Load Balancing のようなソフトウェアによる負荷分散も含む、標準的な負荷分散手法を使用して負荷分散することが可能です。 + + 以下のセクションでは、システム提供の各種のバインディングを使用して構築された [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションを負荷分散するときの考慮事項について説明します。 + +## 基本 HTTP バインディングによる負荷分散 + 負荷分散の面から見た場合、 を使用して通信を行う [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] アプリケーションと、他の一般的なタイプの HTTP ネットワーク トラフィック \(静的な HTML コンテンツ、ASP.NET ページ、ASMX Web サービス\) との相違はありません。このバインディングを使用する [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] チャネルは本質的に状態がなく、チャネルが閉じると接続を終了します。したがって、 には既存の HTTP 負荷分散の手法で十分に対応できます。 + + 既定では、 は、メッセージの接続 HTTP ヘッダーで `Keep-Alive` 値を送信することで、サポートするサービスにクライアントが永続的な接続を確立できるようにします。この構成では、以前に確立した接続を再使用して同じサーバーへの後続するメッセージを送信できるため、スループットが向上します。ただし、接続を再使用すると、クライアントが負荷分散ファーム内の特定サーバーと強く関連付けられてしまうため、ラウンドロビン方式の負荷分散の効果を損ねることがあります。これを回避するには、 またはユーザー定義の プロパティを使用して、サーバーの HTTP `Keep-Alive` を無効にできます。構成を使用してこれを行う例を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + [!INCLUDE[netfx40_short](../../../includes/netfx40-short-md.md)] で導入された簡略化された構成を使用すると、次の簡略化された構成で同じ動作を実現できます。 + +```xml + + + + + + + + + + + + + + + + + +``` + + 既定のエンドポイント、バインディング、および動作[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[簡略化された構成](../../../docs/framework/wcf/simplified-configuration.md)」および「[WCF サービスの簡略化された構成](../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md)」を参照してください。 + +## WSHttp バインディングおよび WSDualHttp バインディングによる負荷分散 + はどちらも、既定のバインディング構成をいくつか変更すれば、HTTP の負荷分散手法を使用して負荷分散できます。 + +- セキュリティ コンテキストの確立を無効にします。これは、 プロパティを `false` に設定することで実現されます。あるいは、セキュリティ セッションが必要な場合は、「[セキュリティで保護されたセッション](../../../docs/framework/wcf/feature-details/secure-sessions.md)」のトピックで説明しているステートフルなセキュリティ セッションを使用することも可能です。ステートフルなセキュリティ セッションは、セキュリティ セッションのすべての状態 \(ステート\) を保護セキュリティ トークンの一部として要求ごとに転送するため、サービスをステートレスな状態に保つことができます。ステートフルなセキュリティ セッションを有効にする場合、システムによって提供される では、必要な構成設定が公開されないため、 またはユーザー定義の を使用する必要があります。 + +- 信頼できるセッションを使用しないでください。この機能は既定で無効になっています。 + +## Net.TCP バインディングの負荷分散 + は、IP レイヤー負荷分散の手法を使用して負荷分散できます。ただし、 は接続の待ち時間を減らすために、既定で TCP 接続のプールを作成します。この最適化は、負荷分散の基本的なメカニズムに干渉します。 を最適化するための主な構成値はリース タイムアウトで、これは接続プール設定の一部です。接続プールによって、クライアントの接続がファーム内の特定サーバーと関連付けられます。このような接続の有効期間 \(これはリース タイムアウトの設定で制御される要素です\) が長くなるにつれて、ファーム内の各サーバーの負荷分散がうまくいかなくなります。その結果、平均呼び出し時間が増加します。したがって、 を負荷分散シナリオで使用する場合は、バインディングによって使用される既定のリース タイムアウトを少なくすることを検討してください。負荷分散のシナリオでは、30 秒のリース タイムアウトから始めるのが合理的ですが、最適値はアプリケーションによって異なります。チャネルのリース タイムアウトおよびその他のトランスポート クォータの詳細については、「[トランスポート クォータ](../../../docs/framework/wcf/feature-details/transport-quotas.md)」を参照してください。 + + 負荷分散のシナリオで最適なパフォーマンスを実現するには、 \( または \) を使用することを検討してください。 + +## 参照 + [インターネット インフォメーション サービス ホスティングのベスト プラクティス](../../../docs/framework/wcf/feature-details/internet-information-services-hosting-best-practices.md) \ No newline at end of file diff --git a/docs/framework/wcf/media/1060d9d2-c9c8-4e0a-9988-cdc2f7030f17.gif b/docs/framework/wcf/media/1060d9d2-c9c8-4e0a-9988-cdc2f7030f17.gif new file mode 100644 index 00000000000..84ee210b68a Binary files /dev/null and b/docs/framework/wcf/media/1060d9d2-c9c8-4e0a-9988-cdc2f7030f17.gif differ diff --git a/docs/framework/wcf/media/1df215cb-b344-4f36-a20d-195999bda741.gif b/docs/framework/wcf/media/1df215cb-b344-4f36-a20d-195999bda741.gif new file mode 100644 index 00000000000..d8472cf4500 Binary files /dev/null and b/docs/framework/wcf/media/1df215cb-b344-4f36-a20d-195999bda741.gif differ diff --git a/docs/framework/wcf/media/29fa00ac-cf78-46e5-822d-56222fff61d1.gif b/docs/framework/wcf/media/29fa00ac-cf78-46e5-822d-56222fff61d1.gif new file mode 100644 index 00000000000..65cf4e962aa Binary files /dev/null and b/docs/framework/wcf/media/29fa00ac-cf78-46e5-822d-56222fff61d1.gif differ diff --git a/docs/framework/wcf/media/2f628580-b80f-45a7-925b-616c96426c0e.gif b/docs/framework/wcf/media/2f628580-b80f-45a7-925b-616c96426c0e.gif new file mode 100644 index 00000000000..d8d1f8cb4d4 Binary files /dev/null and b/docs/framework/wcf/media/2f628580-b80f-45a7-925b-616c96426c0e.gif differ diff --git a/docs/framework/wcf/media/558943c4-17cf-4c12-9405-677e995ac387.gif b/docs/framework/wcf/media/558943c4-17cf-4c12-9405-677e995ac387.gif new file mode 100644 index 00000000000..8c2d71eaa18 Binary files /dev/null and b/docs/framework/wcf/media/558943c4-17cf-4c12-9405-677e995ac387.gif differ diff --git a/docs/framework/wcf/media/5dc8e0eb-1c32-4076-8c66-594935beaee9.gif b/docs/framework/wcf/media/5dc8e0eb-1c32-4076-8c66-594935beaee9.gif new file mode 100644 index 00000000000..0e88acb0323 Binary files /dev/null and b/docs/framework/wcf/media/5dc8e0eb-1c32-4076-8c66-594935beaee9.gif differ diff --git a/docs/framework/wcf/media/6f7f4191-df2b-4592-8998-8379769e2d32.gif b/docs/framework/wcf/media/6f7f4191-df2b-4592-8998-8379769e2d32.gif new file mode 100644 index 00000000000..177794d8e2a Binary files /dev/null and b/docs/framework/wcf/media/6f7f4191-df2b-4592-8998-8379769e2d32.gif differ diff --git a/docs/framework/wcf/media/74255b6e-7c47-46ef-8e53-870c76b04c3f.gif b/docs/framework/wcf/media/74255b6e-7c47-46ef-8e53-870c76b04c3f.gif new file mode 100644 index 00000000000..bc6bb159b36 Binary files /dev/null and b/docs/framework/wcf/media/74255b6e-7c47-46ef-8e53-870c76b04c3f.gif differ diff --git a/docs/framework/wcf/media/7457c4ed-8383-4ac7-bada-bcb27409da58.gif b/docs/framework/wcf/media/7457c4ed-8383-4ac7-bada-bcb27409da58.gif new file mode 100644 index 00000000000..ce35c31f847 Binary files /dev/null and b/docs/framework/wcf/media/7457c4ed-8383-4ac7-bada-bcb27409da58.gif differ diff --git a/docs/framework/wcf/media/7c66e994-2476-4260-a0db-98948b9af197.gif b/docs/framework/wcf/media/7c66e994-2476-4260-a0db-98948b9af197.gif new file mode 100644 index 00000000000..25172c33554 Binary files /dev/null and b/docs/framework/wcf/media/7c66e994-2476-4260-a0db-98948b9af197.gif differ diff --git a/docs/framework/wcf/media/7d908807-4967-4f6d-9226-d52125db69ca.gif b/docs/framework/wcf/media/7d908807-4967-4f6d-9226-d52125db69ca.gif new file mode 100644 index 00000000000..be822587342 Binary files /dev/null and b/docs/framework/wcf/media/7d908807-4967-4f6d-9226-d52125db69ca.gif differ diff --git a/docs/framework/wcf/media/8a728f91-5f80-4a95-afe8-0b6acd6e0317.gif b/docs/framework/wcf/media/8a728f91-5f80-4a95-afe8-0b6acd6e0317.gif new file mode 100644 index 00000000000..f848a30ae45 Binary files /dev/null and b/docs/framework/wcf/media/8a728f91-5f80-4a95-afe8-0b6acd6e0317.gif differ diff --git a/docs/framework/wcf/media/a0493e95-653e-4af8-84a4-4d09a400bc31.gif b/docs/framework/wcf/media/a0493e95-653e-4af8-84a4-4d09a400bc31.gif new file mode 100644 index 00000000000..baba3f88e0e Binary files /dev/null and b/docs/framework/wcf/media/a0493e95-653e-4af8-84a4-4d09a400bc31.gif differ diff --git a/docs/framework/wcf/media/b2d9850e-f362-4ae5-bb8d-9f6f3ca036a5.gif b/docs/framework/wcf/media/b2d9850e-f362-4ae5-bb8d-9f6f3ca036a5.gif new file mode 100644 index 00000000000..6fb232912ab Binary files /dev/null and b/docs/framework/wcf/media/b2d9850e-f362-4ae5-bb8d-9f6f3ca036a5.gif differ diff --git a/docs/framework/wcf/media/contractfirstadvanced.png b/docs/framework/wcf/media/contractfirstadvanced.png new file mode 100644 index 00000000000..18ad73f5906 Binary files /dev/null and b/docs/framework/wcf/media/contractfirstadvanced.png differ diff --git a/docs/framework/wcf/media/contractfirstoptions.png b/docs/framework/wcf/media/contractfirstoptions.png new file mode 100644 index 00000000000..d4738517e09 Binary files /dev/null and b/docs/framework/wcf/media/contractfirstoptions.png differ diff --git a/docs/framework/wcf/media/contractfirsttypes.png b/docs/framework/wcf/media/contractfirsttypes.png new file mode 100644 index 00000000000..db548647194 Binary files /dev/null and b/docs/framework/wcf/media/contractfirsttypes.png differ diff --git a/docs/framework/wcf/media/d7b135f6-ec7d-45d7-9913-037ab30e4c26.gif b/docs/framework/wcf/media/d7b135f6-ec7d-45d7-9913-037ab30e4c26.gif new file mode 100644 index 00000000000..d9619cc2fc5 Binary files /dev/null and b/docs/framework/wcf/media/d7b135f6-ec7d-45d7-9913-037ab30e4c26.gif differ diff --git a/docs/framework/wcf/media/de4f586c-c5dd-41ec-b1c3-ac56b4dfa35c.gif b/docs/framework/wcf/media/de4f586c-c5dd-41ec-b1c3-ac56b4dfa35c.gif new file mode 100644 index 00000000000..09a6ca51988 Binary files /dev/null and b/docs/framework/wcf/media/de4f586c-c5dd-41ec-b1c3-ac56b4dfa35c.gif differ diff --git a/docs/framework/wcf/media/wcf-architecture.gif b/docs/framework/wcf/media/wcf-architecture.gif new file mode 100644 index 00000000000..d70e883bce4 Binary files /dev/null and b/docs/framework/wcf/media/wcf-architecture.gif differ diff --git a/docs/framework/wcf/media/wcfc-defaultactivityc.gif b/docs/framework/wcf/media/wcfc-defaultactivityc.gif new file mode 100644 index 00000000000..e3634135900 Binary files /dev/null and b/docs/framework/wcf/media/wcfc-defaultactivityc.gif differ diff --git a/docs/framework/wcf/media/wcfc-executionactivityiconc.GIF b/docs/framework/wcf/media/wcfc-executionactivityiconc.GIF new file mode 100644 index 00000000000..c98c3a9c241 Binary files /dev/null and b/docs/framework/wcf/media/wcfc-executionactivityiconc.GIF differ diff --git a/docs/framework/wcf/migrating-from-net-remoting-to-wcf.md b/docs/framework/wcf/migrating-from-net-remoting-to-wcf.md new file mode 100644 index 00000000000..07adb6c0a83 --- /dev/null +++ b/docs/framework/wcf/migrating-from-net-remoting-to-wcf.md @@ -0,0 +1,717 @@ +--- +title: ".NET リモート処理から WCF への移行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 16902a42-ef80-40e9-8c4c-90e61ddfdfe5 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# .NET リモート処理から WCF への移行 +この記事では、.NET リモート処理を使用するアプリケーションを、Windows Communication Foundation \(WCF\) を使用するように移行する方法について説明します。 これらの製品間で類似する概念を比較した後、WCF で一般的なリモート処理のシナリオを実現する方法を説明します。 + + .NET リモート処理は、旧バージョンとの互換性のためだけにサポートされているレガシー製品です。 これは、クライアントとサーバーの間で個々の信頼レベルを維持できないため、信頼レベルが混在する環境において安全ではありません。 たとえば、インターネットまたは信頼できないクライアントには、.NET リモート処理のエンドポイントを非公開にする必要があります。 既存のリモート処理アプリケーションを、より新しく安全なテクノロジに移行することをお勧めします。 そのアプリケーションの設計に HTTP のみが使用されていて、かつ RESTful である場合、ASP.NET Web API をお勧めします。 詳細については、ASP.NET Web API を参照してください。 アプリケーションが SOAP ベースの場合や、TCP などの非 HTTP プロトコルを必要とする場合は、WCF をお勧めします。 + +- [.NET リモート処理と WCF の比較](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Compare_Top) + + - [サーバー実装の比較](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Server_Comp) + + - [クライアント実装の比較](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Client_Comp) + + - [シリアル化の使用方法](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Serialization_Usage) + + - [例外処理の機能](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Exception_Handling) + + - [セキュリティの考慮事項](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Security_Considerations) + +- [WCF への移行](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Migrating_Top) + + - [リモート処理から WCF に移行する理由](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Why_Migrate) + + - [移行の推奨事項](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Migration_Recommendations) + + - [移行のシナリオ](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Migration_Scenarios) + +- [概要](../../../docs/framework/wcf/migrating-from-net-remoting-to-wcf.md#Summary) + + +## .NET リモート処理と WCF の比較 + このセクションでは、.NET リモート処理の基本的な構成要素と、それに相当する WCF の構成要素を比較します。 これらの構成要素は、後ほど WCF で一般的なクライアントとサーバーのシナリオを作成するために使用します。次の表では、.NET リモート処理と WCF の主な類似点と相違点を示しています。 + +||.NET リモート処理|WCF| +|-|-----------------|---------| +|サーバーの型|サブクラス MarshalByRefObject|\[ServiceContract\] 属性でマーク| +|サービス操作|サーバーの型のパブリック メソッド|\[OperationContract\] 属性でマーク| +|シリアル化|ISerializable または \[Serializable\]|DataContractSerializer または XmlSerializer| +|渡されるオブジェクト|値渡しまたは参照渡し|値渡しのみ| +|エラーと例外|すべてのシリアル化可能な例外|FaultContract\| +|クライアント プロキシ オブジェクト|厳密に型指定された透過的プロキシが MarshalByRefObjects から自動的に作成されます|ChannelFactory\ を使用し、厳密に型指定されたプロキシを必要に応じて生成します| +|必要なプラットフォーム|クライアントとサーバーの両方で Microsoft OS と .NET を使用する必要があります|クロスプラットフォーム| +|メッセージ形式|プライベート|業界標準 \(SOAP、WS\-\* など\)| + + +### サーバー実装の比較 + +#### .NET リモート処理でサーバーを作成する + .NET リモート処理のサーバーの型は MarshalByRefObject から派生させて、次のようにクライアントから呼び出せるメソッドを定義する必要があります。 + +``` +public class RemotingServer : MarshalByRefObject +{ + public Customer GetCustomer(int customerId) { … } +} +``` + + このサーバーの型のパブリック メソッドは、クライアントから使用できるパブリック コントラクトになります。 サーバーのパブリック インターフェイスとその実装の間には境界がありません。1 つの型によって両方を処理します。 + + サーバーの型を定義した後は、次の例のように、クライアントから使用可能な状態にできます。 + +``` +TcpChannel channel = new TcpChannel(8080); +ChannelServices.RegisterChannel(channel, ensureSecurity : true); +RemotingConfiguration.RegisterWellKnownServiceType( + typeof(RemotingServer), + "RemotingServer", + WellKnownObjectMode.Singleton); +Console.WriteLine("RemotingServer is running. Press ENTER to terminate..."); +Console.ReadLine(); + +``` + + リモート処理の型をサーバーとして使用できるようにするには、構成ファイルを使用するなど、さまざまな方法があります。 この方法はほんの一例です。 + +#### WCF でサーバーを作成する + WCF で同等の手順を実行する場合は、パブリック "サービス コントラクト" と具象実装という 2 つの型を作成します。 1 つ目の型は、\[ServiceContract\] でマークされたインターフェイスとして宣言します。 クライアントから使用できるメソッドは、\[OperationContract\] でマークします。 + +``` +[ServiceContract] +public interface IWCFServer +{ + [OperationContract] + Customer GetCustomer(int customerId); +} + +``` + + サーバーの実装は、次の例のように、別の具象クラスで定義します。 + +``` +public class WCFServer : IWCFServer +{ + public Customer GetCustomer(int customerId) { … } +} +``` + + これらの型を定義した後は、次の例のように、WCF サーバーをクライアントから使用可能な状態にできます。 + +``` +NetTcpBinding binding = new NetTcpBinding(); +Uri baseAddress = new Uri("net.tcp://localhost:8000/wcfserver"); + +using (ServiceHost serviceHost = new ServiceHost(typeof(WCFServer), baseAddress)) +{ + serviceHost.AddServiceEndpoint(typeof(IWCFServer), binding, baseAddress); + serviceHost.Open(); + + Console.WriteLine(String.Format("The WCF server is ready at {0}.", + baseAddress)); + Console.WriteLine("Press to terminate service..."); + Console.WriteLine(); + Console.ReadLine(); +} + +``` + +> [!NOTE] +> 両方の例をできる限り似たものにするため、どちらの例でも TCP を使用します。 HTTP を使用する例については、このトピックで後述するシナリオのチュートリアルを参照してください。 + + WCF サービスの構成方法やホスト方法には、さまざまなものがあります。 これは、"自己ホスト型" と呼ばれる一例にすぎません。 詳細については、次のトピックを参照してください。 + +- [方法 : サービス コントラクトを定義する](../../../docs/framework/wcf/how-to-define-a-wcf-service-contract.md) + +- [構成ファイルを使用してサービスを構成する方法](../../../docs/framework/wcf/configuring-services-using-configuration-files.md) + +- [ホスティング サービス](../../../docs/framework/wcf/hosting-services.md) + + +### クライアント実装の比較 + +#### .NET リモート処理でクライアントを作成する + .NET リモート処理サーバー オブジェクトが使用可能になると、次の例のように、クライアントによって使用することができます。 + +``` +TcpChannel channel = new TcpChannel(); +ChannelServices.RegisterChannel(channel, ensureSecurity : true); +RemotingServer server = (RemotingServer)Activator.GetObject( + typeof(RemotingServer), + "tcp://localhost:8080/RemotingServer"); + +RemotingCustomer customer = server.GetCustomer(42); +Console.WriteLine(String.Format("Customer {0} {1} received.", + customer.FirstName, customer.LastName)); +``` + + Activator.GetObject\(\) から返される RemotingServer インスタンスは、"透過的プロキシ" と呼ばれています。 これによって RemotingServer 型のパブリック API がクライアントに実装されますが、すべてのメソッドは別のプロセスまたはコンピューターで実行中のサーバー オブジェクトを呼び出します。 + +#### WCF でクライアントを作成する + WCF で同等の手順を実行する場合は、チャネル ファクトリを使用してプロキシを明示的に作成します。 リモート処理と同様、プロキシ オブジェクトは、次の例のように、サーバーでの操作の呼び出しに使用できます。 + +``` +NetTcpBinding binding = new NetTcpBinding(); +String url = "net.tcp://localhost:8000/wcfserver"; +EndpointAddress address = new EndpointAddress(url); +ChannelFactory channelFactory = + new ChannelFactory(binding, address); +IWCFServer server = channelFactory.CreateChannel(); + +Customer customer = server.GetCustomer(42); +Console.WriteLine(String.Format(" Customer {0} {1} received.", + customer.FirstName, customer.LastName)); +``` + + この例では、リモート処理の例に最も近いことから、チャネル レベルでのプログラミングを示しています。 また、Visual Studio の **\[サービス参照の追加\]** によってコードを生成し、クライアントのプログラミングを簡略化する方法も利用できます。 詳細については、次のトピックを参照してください。 + +- [クライアントのチャネル レベルのプログラミング](../../../docs/framework/wcf/extending/client-channel-level-programming.md) + +- [How to: Add, Update, or Remove a Service Reference](../Topic/How%20to:%20Add,%20Update,%20or%20Remove%20a%20Service%20Reference.md) + + +### シリアル化の使用方法 + .NET リモート処理と WCF は、どちらもクライアントとサーバーの間のオブジェクト送信にシリアル化を使用しますが、次の重要な点が異なります。 + +1. シリアル化の対象を示すために異なるシリアライザーと規則を使用します。 + +2. .NET リモート処理では、"参照渡し" のシリアル化をサポートしています。これによって、1 つの階層でメソッドまたはプロパティへのアクセスを行い、セキュリティ境界をまたいだ別の階層でコードを実行できます。 この機能によってセキュリティの脆弱性が露呈することが、信頼できないクライアントにはリモート処理のエンドポイントを決して公開できない、主な理由の 1 つです。 + +3. リモート処理で使用されるシリアル化はオプトアウト \(シリアル化しないものを明示的に除外する\) で、WCF でのシリアル化はオプトイン \(どのメンバーをシリアル化するのかを明示的にマークする\) です。 + +#### .NET リモート処理でのシリアル化 + .NET リモート処理では、クライアントとサーバーの間でオブジェクトをシリアル化および逆シリアル化するために次の 2 つの方法をサポートしています。 + +- *値渡し* – オブジェクトの値は階層の境界をまたいでシリアル化され、そのオブジェクトの新しいインスタンスが、他の階層で作成されます。 この新しいインスタンスのメソッドまたはプロパティへの呼び出しはいずれもローカルに実行され、元のオブジェクトまたは階層には影響しません。 + +- *参照渡し* – 特別な "オブジェクト参照" は階層の境界をまたいでシリアル化されます。 1 つの階層がそのオブジェクトのメソッドまたはプロパティとやり取りをする場合、元の階層の元のオブジェクトに対して通信を行います。 参照渡しのオブジェクトは、いずれかの方向、つまりサーバーからクライアント、またはクライアントからサーバーにフローできます。 + + リモート処理での値渡し型は、次の例のように、\[Serializable\] 属性でマークされるか、ISerializable を実装します。 + +``` +[Serializable] +public class RemotingCustomer +{ + public string FirstName { get; set; } + public string LastName { get; set; } + public int CustomerId { get; set; } +} +``` + + 参照渡し型は、次の例のように、MarshalByRefObject クラスから派生します。 + +``` +public class RemotingCustomerReference : MarshalByRefObject +{ + public string FirstName { get; set; } + public string LastName { get; set; } + public int CustomerId { get; set; } +} +``` + + リモート処理の参照渡しのオブジェクトによる影響を理解することは、非常に重要です。 どちらかの階層 \(クライアントまたはサーバー\) が参照渡しのオブジェクトをもう一方の階層に送信する場合、すべてのメソッド呼び出しは、オブジェクトを持つ元の階層で実行されます。 たとえば、サーバーから返される参照渡しのオブジェクトでクライアントが呼び出すメソッドは、サーバーでコードを実行します。 同様に、クライアントから提供される参照渡しのオブジェクトでサーバーが呼び出すメソッドは、クライアントでコードを実行します。 このため、.NET リモート処理は、完全に信頼できる環境内でのみ使用することが推奨されます。 パブリック .NET リモート処理のエンドポイントを信頼できないクライアントに公開すると、リモート処理サーバーが攻撃に対して無防備な状態になります。 + +#### WCF でのシリアル化 + WCF では、値渡しのシリアル化のみをサポートしています。 クライアントとサーバーの間で交換する型を定義するための最も一般的な方法は、次の例のようになります。 + +``` +[DataContract] +public class WCFCustomer +{ + [DataMember] + public string FirstName { get; set; } + + [DataMember] + public string LastName { get; set; } + + [DataMember] + public int CustomerId { get; set; } +} +``` + + \[DataContract\] 属性は、この型をクライアントとサーバーの間でシリアル化および逆シリアル化ができる型として識別します。 \[DataMember\] 属性は、シリアル化する個々のプロパティまたはフィールドを識別します。 + + WCF が階層をまたいでオブジェクトを送信する場合は、値のみをシリアル化し、もう一方の階層でオブジェクトの新しいインスタンスを作成します。 オブジェクトの値とのやり取りはローカルでのみ発生し、.NET リモート処理の参照渡しのオブジェクトのような方法でもう一方の階層と通信することはありません。 詳細については、次のトピックを参照してください。 + +- [シリアル化と逆シリアル化](../../../docs/framework/wcf/feature-details/serialization-and-deserialization.md) + +- [Windows Communication Foundation でのシリアル化](http://msdn.microsoft.com/magazine/cc163569.aspx) + + +### 例外処理の機能 + +#### .NET リモート処理での例外 + リモート処理サーバーによってスローされた例外は、シリアル化され、クライアントに送信されて、その他すべての例外と同様に、クライアントでローカルにスローされます。 カスタムの例外は、Exception 型をサブクラス化して \[Serializable\] でマークすることによって作成できます。 フレームワークの例外の大部分は既にこの方法でマークされているため、サーバーによるスロー、シリアル化、およびクライアントでの再スローが可能です。 この設計は開発中には便利ですが、サーバー側の情報が誤ってクライアントに公開されてしまう可能性があります。 リモート処理の使用を完全に信頼できる環境に限定する必要がある理由はさまざまですが、これもその 1 つです。 + +#### WCF での例外とエラー + WCF では、不注意による情報の漏洩につながる可能性があるため、サーバーからクライアントに任意の例外型を返すことはできません。 サービス操作によって予期しない例外がスローされた場合、汎用の FaultException がクライアントでスローされます。 この例外には、問題の発生原因や発生場所の情報は含まれませんが、これらは一部のアプリケーションにとっては必要ありません。 より豊富なエラー情報をクライアントに伝える必要があるアプリケーションは、エラー コントラクトを定義することによってこれを実行します。 + + 方法としては、まずエラー情報を伝送するための \[DataContract\] 型を作成します。 + +``` +[DataContract] +public class CustomerServiceFault +{ + [DataMember] + public string ErrorMessage { get; set; } + + [DataMember] + public int CustomerId {get;set;} +} +``` + + 各サービス操作に使用するエラー コントラクトを指定します。 + +``` +[ServiceContract] +public interface IWCFServer +{ + [OperationContract] + [FaultContract(typeof(CustomerServiceFault))] + Customer GetCustomer(int customerId); +} +``` + + サーバーは、FaultException のスローによってエラー状態を報告します。 + +``` +throw new FaultException( + new CustomerServiceFault() { + CustomerId = customerId, + ErrorMessage = "Illegal customer Id" + }); +``` + + また、クライアントがサーバーに要求を行う場合は、常にエラーを通常の例外としてキャッチできます。 + +``` +try +{ + Customer customer = server.GetCustomer(-1); +} +catch (FaultException fault) +{ + Console.WriteLine(String.Format("Fault received: {0}", + fault.Detail.ErrorMessage)); +} + +``` + + エラー コントラクトの詳細については、「」を参照してください。 + + +### セキュリティの考慮事項 + +#### .NET リモート処理でのセキュリティ + 一部の .NET リモート処理チャネルでは、チャネル層 \(IPC と TCP\) での認証および暗号化などのセキュリティ機能をサポートしています。 HTTP チャネルでは、認証と暗号化の両方にインターネット インフォメーション サービス \(IIS\) を利用しています。 こういったサポートがあっても、.NET リモート処理を安全性が低い通信プロトコルと見なし、完全に信頼できる環境内に使用を制限する必要があります。 パブリック リモート処理のエンドポイントをインターネットや信頼できないクライアントに公開することは絶対に避けてください。 + +#### WCF でのセキュリティ + WCF は、.NET リモート処理で見つかった種類の脆弱性に対処する必要性などがあったため、セキュリティを考慮して設計されています。 WCF では、トランスポートとメッセージの両方のレベルでセキュリティが提供され、認証、承認、暗号化などのために、数多くのオプションが利用できます。 詳細については、次のトピックを参照してください。 + +- [セキュリティ](../../../docs/framework/wcf/feature-details/security.md) + +- [WCF セキュリティ ガイダンス](http://wcfsecurity.codeplex.com/) + + +## WCF への移行 + + +### リモート処理から WCF に移行する理由 + +- **.NET リモート処理はレガシー製品です。** 「[.NET リモート処理](http://msdn.microsoft.com/library/vstudio/72x4h507\(v=vs.100\).aspx)」で説明されているように、これはレガシー製品と見なされており、新規開発の用途にはお勧めしません。 新規および既存のアプリケーションには、WCF または ASP.NET Web API をお勧めします。 + +- **WCF では、クロスプラットフォーム標準を使用しています。** WCF は、クロスプラットフォームの相互運用性を考慮して設計されており、さまざまな業界標準 \(SOAP、WS\-Security、WS\-Trust など\) をサポートしています。 WCF サービスでは、Windows 以外のオペレーション システムで動作中のクライアントとの相互運用ができます。 リモート処理は、主に、サーバーおよびクライアント アプリケーションの両方が Windows オペレーティング システムで .NET Framework を使用して実行される環境向けに設計されました。 + +- **WCF にはセキュリティが組み込まれています。** WCF は、セキュリティを考慮して設計されており、認証、トランスポート レベルのセキュリティ、メッセージ レベルのセキュリティなどのために、数多くのオプションが用意されています。 リモート処理は、アプリケーションの相互運用を容易にするように設計されましたが、信頼できない環境で安全性を確保できるようには設計されていません。 WCF は信頼できる環境と信頼できない環境の両方で動作するよう設計されました。 + + +### 移行の推奨事項 + .NET リモート処理から WCF に移行するための推奨手順を次に示します。 + +- **サービス コントラクトを作成する。** サービス インターフェイスの型を定義し、\[ServiceContract\] 属性でマークします。クライアントからの呼び出しを可能にするすべてのメソッドを \[OperationContract\] でマークします。 + +- **データ コントラクトを作成する。** サーバーとクライアントの間で交換されるデータ型を定義し、\[DataContract\] 属性でマークします。 クライアントから使用できるようにするすべてのフィールドとプロパティを \[DataMember\] でマークします。 + +- **エラー コントラクトを作成する \(省略可能\)。** エラーが検出されたときにサーバーとクライアントの間で交換される型を作成します。 これらの型を \[DataContract\] と \[DataMember\] でマークしてシリアル化できるようにします。 \[OperationContract\] でマークしたすべてのサービス操作について、どのエラーが返されるのかを示すために \[FaultContract\] でも同様にマークします。 + +- **サービスを構成し、ホストする。** サービス コントラクトの作成後の手順としては、エンドポイントでサービスを公開するためにバインドを構成します。 詳細については、「[エンドポイント : アドレス、バインディング、およびコントラクト](../../../docs/framework/wcf/feature-details/endpoints-addresses-bindings-and-contracts.md)」を参照してください。 + + リモート処理アプリケーションの WCF への移行が完了した後は、.NET リモート処理で依存関係を削除する必要があります。 これにより、リモート処理の脆弱性がアプリケーションから確実に取り除かれます。 実行する必要がある手順は、次のとおりです。 + +- **MarshalByRefObject の使用を中止する。** MarshalByRefObject 型は、リモート処理のためだけに存在する型で、WCF では使用されません。 MarshalByRefObject をサブクラスに持つアプリケーション型は、削除するか変更する必要があります。 MarshalByRefObject 型は、リモート処理のためだけに存在する型で、WCF では使用されません。 MarshalByRefObject をサブクラスに持つアプリケーション型は、削除するか変更する必要があります。 + +- **\[Serializable\] と ISerializable の使用を中止する。** \[Serializable\] 属性と ISerializable インターフェイスは、信頼できる環境内の型をシリアル化するように設計されたものであり、これらはリモート処理によって使用されます。 WCF のシリアル化では、\[DataContract\] と \[DataMember\] でマークされている型を使用します。 アプリケーションで使用されるデータ型は、ISerializable や \[Serializable\] を使用せずに \[DataContract\] を使用するように変更する必要があります。 \[Serializable\] 属性と ISerializable インターフェイスは、信頼できる環境内の型をシリアル化するように設計されたものであり、これらはリモート処理によって使用されます。 WCF のシリアル化では、\[DataContract\] と \[DataMember\] でマークされている型を使用します。 アプリケーションで使用されるデータ型は、ISerializable や \[Serializable\] を使用せずに \[DataContract\] を使用するように変更する必要があります。 + + +### 移行のシナリオ + WCF で次の一般的なリモート処理のシナリオを実現する方法を見てみましょう。 + +1. サーバーからクライアントに値渡しでオブジェクトを返す + +2. サーバーからクライアントに参照渡しでオブジェクトを返す + +3. クライアントからサーバーに値渡しでオブジェクトを送信する + +> [!NOTE] +> WCF では、クライアントからサーバーに参照渡しでオブジェクを送信することはできません。 + + これらのシナリオを読み進める際は、.NET リモート処理のベースライン インターフェイスが次の例のようになると想定してください。 ここでは、.NET リモート処理の実装は重要ではありません。その理由は、ここで説明するのは WCF を使用して同等の機能を実装する方法のみであるためです。 + +``` +public class RemotingServer : MarshalByRefObject +{ + // Demonstrates server returning object by-value + public Customer GetCustomer(int customerId) {…} + + // Demonstrates server returning object by-reference + public CustomerReference GetCustomerReference(int customerId) {…} + + // Demonstrates client passing object to server by-value + public bool UpdateCustomer(Customer customer) {…} +} + +``` + +#### シナリオ 1: サービスが値渡しでオブジェクトを返す + このシナリオでは、値渡しでクライアントにオブジェクトを返すサーバーについて説明します。 WCF は常にサーバーから値渡しでオブジェクトを返すため、次の各手順では、単に通常の WCF サービスを構築する方法について説明します。 + +1. まずは、WCF サービスのパブリック インターフェイスを定義し、\[ServiceContract\] 属性でマークします。 クライアントが呼び出すサーバー側のメソッドを識別するために \[OperationContract\] を使用します。 + + ``` + [ServiceContract] + public interface ICustomerService + { + [OperationContract] + Customer GetCustomer(int customerId); + + [OperationContract] + bool UpdateCustomer(Customer customer); + } + ``` + +2. 次の手順は、このサービスのデータ コントラクトの作成です。 これを行うには、\[DataContract\] 属性でマークされたクラス \(インターフェイスではない\) を作成します。 クライアントとサーバーの両方に対して表示する個々のプロパティやフィールドは、\[DataMember\] でマークします。 派生型を許可する場合は、それを識別するために \[KnownType\] 属性を使用する必要があります。 WCF がこのサービス用にシリアル化または逆シリアル化を許可する型は、サービス インターフェイス内の型と、これらの "既知の型" のみです。 この一覧にないその他の型を交換しようとすると、拒否されます。 + + ``` + [DataContract] + [KnownType(typeof(PremiumCustomer))] + public class Customer + { + [DataMember] + public string FirstName { get; set; } + + [DataMember] + public string LastName { get; set; } + + [DataMember] + public int CustomerId { get; set; } + } + + [DataContract] + public class PremiumCustomer : Customer + { + [DataMember] + public int AccountId { get; set; } + } + ``` + +3. 次に、サービス インターフェイスの実装を提供します。 + + ``` + public class CustomerService : ICustomerService + { + public Customer GetCustomer(int customerId) + { + // read from database + } + + public bool UpdateCustomer(Customer customer) + { + // write to database + } + } + ``` + +4. WCF サービスを実行するには、特定の WCF バインドを使用して特定の URL で上記のサービス インターフェイスを公開するエンドポイントを宣言する必要があります。 通常、これを行うには、サーバー プロジェクトの web.config ファイルに次のセクションを追加します。 + + ``` + + + + + + + + + + ``` + +5. WCF サービスは次のコードで開始できます。 + + ``` + ServiceHost customerServiceHost = new ServiceHost(typeof(CustomerService)); + customerServiceHost.Open(); + ``` + + この ServiceHost は、開始されると web.config ファイルを使用して適切なコントラクト、バインド、エンドポイントを確立します。 構成ファイルの詳細については、「[構成ファイルを使用してサービスを構成する方法](../../../docs/framework/wcf/configuring-services-using-configuration-files.md)」を参照してください。 このようなサーバーの開始方法は、自己ホストと呼ばれています。 WCF サービスのホストに関する他の選択肢の詳細については、「[ホスティング サービス](../../../docs/framework/wcf/hosting-services.md)」を参照してください。 + +6. クライアント プロジェクトの app.config では、サービスのエンドポイントの対応するバインド情報を宣言する必要があります。 これを Visual Studio で行う最も簡単な方法は、**\[サービス参照の追加\]** を使用することで、これにより app.config ファイルが自動的に更新されます。 また、これと同じ変更を手動で加えることもできます。 + + ``` + + + + + + + + ``` + + **\[サービス参照の追加\]** の使用に関する詳細については、「[How to: Add, Update, or Remove a Service Reference](../Topic/How%20to:%20Add,%20Update,%20or%20Remove%20a%20Service%20Reference.md)」を参照してください。 + +7. これで、クライアントから WCF サービスを呼び出すことができます。 WCF サービスを呼び出すには、そのサービスのチャネル ファクトリを作成し、チャネルを要求して、そのチャネルで必要なメソッドを直接呼び出します。 この方法が可能なのは、チャネルがサービスのインターフェイスを実装し、基になる要求\/応答のロジックを処理するためです。 このメソッドの呼び出しからの戻り値は、サーバーの応答の逆シリアル化されたコピーです。 + + ``` + ChannelFactory factory = + new ChannelFactory("customerservice"); + ICustomerService service = factory.CreateChannel(); + Customer customer = service.GetCustomer(42); + Console.WriteLine(String.Format(" Customer {0} {1} received.", + customer.FirstName, customer.LastName)); + ``` + + WCF によってサーバーからクライアントに返されるオブジェクトは、常に値渡しです。 オブジェクトは、サーバーから送信されたデータの逆シリアル化されたコピーです。 クライアントは、コールバックによってサーバー コードを呼び出すリスクを冒すことなく、これらのローカル コピーでメソッドを呼び出すことができます。 + +#### シナリオ 2: サーバーから参照渡しでオブジェクトを返す + このシナリオでは、参照渡しでクライアントにオブジェクトを提供するサーバーについて説明します。 .NET リモート処理では、参照渡しでシリアル化された MarshalByRefObject から派生したすべての型に対してこの処理が自動的に行われます。 このシナリオの例としては、たとえば複数のクライアントが、独立したセッションフルなサーバー側オブジェクトを持てるようにします。 前述したように、WCF サービスによって返されるオブジェクトは常に値渡しであるため、参照渡しのオブジェクトに直接相当するものはありませんが、 オブジェクトを使用して参照渡しセマンティクスに類似するものを実現することは可能です。 これは、サーバー上のセッションフルな参照渡しのオブジェクトを取得するためにクライアントが使用できる、シリアル化可能な値渡しのオブジェクトです。 これによって、独立したセッションフルなサーバー側オブジェクトを持つ複数のクライアントを用意するというシナリオが可能になります。 + +1. まずは、セッションフル オブジェクト自体に対応する WCF サービス コントラクトを定義する必要があります。 + + ``` + [ServiceContract(SessionMode = SessionMode.Allowed)] + public interface ISessionBoundObject + { + [OperationContract] + string GetCurrentValue(); + + [OperationContract] + void SetCurrentValue(string value); + } + ``` + + > [!TIP] + > セッションフル オブジェクトは \[ServiceContract\] でマークされ、通常の WCF サービス インターフェイスになっていることに注意してください。 SessionMode プロパティを設定することは、それがセッションフル サービスになることを意味します。 WCF では、セッションは 2 つのエンドポイント間で送信される複数のメッセージを関連付ける方法です。 つまり、クライアントがこのサービスへの接続を確保すると、クライアントとサーバーの間でセッションが確立されます。 クライアントは、サーバー側オブジェクトの単一で一意のインスタンスを、この 1 つのセッション内でのすべてのやり取りに使用することになります。 + +2. 次に、このサービス インターフェイスの実装を提供する必要があります。 \[ServiceBehavior\] でこれを示し、InstanceContextMode を設定することによって、この型の一意のインスタンスを各セッションに使用することを WCF に伝えます。 + + ``` + [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] + public class MySessionBoundObject : ISessionBoundObject + { + private string _value; + + public string GetCurrentValue() + { + return _value; + } + + public void SetCurrentValue(string val) + { + _value = val; + } + + } + ``` + +3. ここで、このセッションフル オブジェクトのインスタンスを入手する方法が必要です。 これは、EndpointAddress10 オブジェクトを返すもう 1 つの WCF サービス インターフェイスを作成することによって行います。 これはクライアントがセッションフル オブジェクトの作成に使用できる、エンドポイントのシリアル化可能な形式です。 + + ``` + [ServiceContract] + public interface ISessionBoundFactory + { + [OperationContract] + EndpointAddress10 GetInstanceAddress(); + } + ``` + + さらに、この WCF サービスを実装します。 + + ``` + public class SessionBoundFactory : ISessionBoundFactory + { + public static ChannelFactory _factory = + new ChannelFactory("sessionbound"); + + public SessionBoundFactory() + { + } + + public EndpointAddress10 GetInstanceAddress() + { + IClientChannel channel = (IClientChannel)_factory.CreateChannel(); + return EndpointAddress10.FromEndpointAddress(channel.RemoteAddress); + } + } + ``` + + この実装では、セッションフル オブジェクトを作成するためにシングルトン チャネル ファクトリを保持しています。 チャネル ファクトリは、GetInstanceAddress\(\) が呼び出されるとチャネルを作成し、このチャネルに関連付けられているリモート アドレスを効率的にポイントする EndpointAddress10 オブジェクトを作成します。 EndpointAddress10 は、単に値渡しでクライアントに返すことのできるデータ型です。 + +4. 以下の例に示すように、次の 2 つの処理を実行して、サーバーの構成ファイルを変更する必要があります。 + + 1. セッションフル オブジェクトのエンドポイントを示す \ セクションを宣言する。 この処理が必要な理由は、この状況ではサーバーがクライアントとしても機能するためです。 + + 2. ファクトリおよびセッションフル オブジェクトのエンドポイントを宣言します。 この処理は、クライアントがサービス エンドポイントと通信して EndpointAddress10 の取得とセッションフル チャネルの作成を実行できるようにするために必要です。 + + ``` + + + + + + + + + + + + + + + + + + + + ``` + + これで、次のサービスを開始できます。 + + ``` + ServiceHost factoryHost = new ServiceHost(typeof(SessionBoundFactory)); + factoryHost.Open(); + + ServiceHost sessionHost = new ServiceHost(typeof(MySessionBoundObject)); + sessionHost.Open(); + ``` + +5. クライアントの構成は、そのプロジェクトの app.config ファイル内でこれらの同じエンドポイントを宣言することによって行います。 + + ``` + + + + + + + + + + ``` + +6. セッションフル オブジェクトを作成して使用するために、クライアントでは、次の手順を実行する必要があります。 + + 1. ISessionBoundFactory サービスへのチャネルを作成する。 + + 2. このチャネルを使用してサービスを呼び出し、EndpointAddress10 を取得する。 + + 3. EndpointAddress10 を使用してチャネルを作成し、セッションフル オブジェクトを取得する。 + + 4. セッションフル オブジェクトと対話し、複数の呼び出し間でインスタンスが同じであることを示す。 + + ``` + ChannelFactory channelFactory = + new ChannelFactory("factory"); + ISessionBoundFactory sessionFactory = channelFactory.CreateChannel(); + + EndpointAddress10 address1 = sessionFactory.GetInstanceAddress(); + EndpointAddress10 address2 = sessionFactory.GetInstanceAddress(); + + ChannelFactory sessionObjectFactory1 = + new ChannelFactory(new NetTcpBinding(), + address1.ToEndpointAddress()); + ChannelFactory sessionObjectFactory2 = + new ChannelFactory(new NetTcpBinding(), + address2.ToEndpointAddress()); + + ISessionBoundObject sessionInstance1 = sessionObjectFactory1.CreateChannel(); + ISessionBoundObject sessionInstance2 = sessionObjectFactory2.CreateChannel(); + + sessionInstance1.SetCurrentValue("Hello"); + sessionInstance2.SetCurrentValue("World"); + + if (sessionInstance1.GetCurrentValue() == "Hello" && + sessionInstance2.GetCurrentValue() == "World") + { + Console.WriteLine("sessionful server object works as expected"); + } + ``` + + WCF は常に値渡しでオブジェクトを返しますが、EndpointAddress10 を使用することで、参照渡しのセマンティクスに相当するものをサポートすることは可能です。 これによって、クライアントからセッションフル WCF サービス インスタンスを要求できるようになり、要求後は他のすべての WCF サービスのように対話ができます。 + +#### シナリオ 3: クライアントから値渡しのインスタンスをサーバーに送信する + このシナリオでは、サーバーに値渡しで非プリミティブ オブジェクト インスタンスを送信するクライアントについて説明します。 WCF は値渡しでのみオブジェクトを送信するため、このシナリオでは通常の WCF の使用方法を示します。 + +1. シナリオ 1 と同じ WCF サービスを使用します。 + +2. クライアントを使用して新しい値渡しのオブジェクト \(Customer\) を作成し、チャネルを作成して ICustomerService サービスと通信し、それにオブジェクトを送信します。 + + ``` + ChannelFactory factory = + new ChannelFactory("customerservice"); + ICustomerService service = factory.CreateChannel(); + PremiumCustomer customer = new PremiumCustomer { + FirstName = "Bob", + LastName = "Jones", + CustomerId = 43, + AccountId = 99}; + bool success = service.UpdateCustomer(customer); + Console.WriteLine(String.Format(" Server returned {0}.", success)); + ``` + + Customer オブジェクトはシリアル化され、サーバーに送信されて、そのオブジェクトの新しいコピーへと逆シリアル化されます。 + + > [!NOTE] + > このコードでは、派生型 \(PremiumCustomer\) の送信についても示しています。 サービス インターフェイスは Customer オブジェクトを要求していますが、Customer クラスの \[KnownType\] 属性は、PremiumCustomer も同様に許可されていることを示していました。 このサービス インターフェイスによって他の型をシリアル化または逆シリアル化しようとしても、WCF は必ず失敗します。 + + WCF での通常のデータ交換は、値渡しで行われます。 これにより、こういったデータ オブジェクトの 1 つでのメソッド呼び出しはローカルでのみ実行され、他の階層ではコードが呼び出されないことが保証されています。 *サーバーから*返される参照渡しのオブジェクトのようなものを実現することは可能ですが、*クライアントからサーバー*に参照渡しのオブジェクトを渡すことはできません。 クライアントとサーバーの間で対話を必要とするシナリオは、WCF で双方向サービスを使用することによって実現できます。 詳細については、「[双方向サービス](../../../docs/framework/wcf/feature-details/duplex-services.md)」を参照してください。 + + +## 概要 + .NET リモート処理は、完全に信頼できる環境内のみでの使用を意図した通信フレームワークです。 これはレガシー製品であり、旧バージョンとの互換性のためだけにサポートされています。 新しいアプリケーションの構築には使用できません。 反対に、WCF はセキュリティを考慮して設計されており、新規および既存のアプリケーション向けに推奨されています。 既存のリモート処理アプリケーションから、WCF または ASP.NET Web API を使用したアプリケーションに移行することをお勧めします。 \ No newline at end of file diff --git a/docs/framework/wcf/operating-system-resources-required-by-wcf.md b/docs/framework/wcf/operating-system-resources-required-by-wcf.md new file mode 100644 index 00000000000..ac0775bc745 --- /dev/null +++ b/docs/framework/wcf/operating-system-resources-required-by-wcf.md @@ -0,0 +1,29 @@ +--- +title: "WCF に必要なオペレーティング システム リソース | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cdd9a331-53fe-4e0d-bdfe-782264aec5c9 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# WCF に必要なオペレーティング システム リソース +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] は、オペレーティング システムで提供される複数のリソースに基づいて機能します。 このリソースを次の表に示します。 + +|リソース|説明| +|----------|--------| +|Microsoft 分散トランザクション コーディネーター \(MSDTC\)|OleTx トランザクションをサポートするために必要です。| +|インターネット インフォメーション サービス \(IIS\)|IIS を使用してアプリケーションをホストする場合に必要です。| +|Windows プロセス アクティブ化サービス \(WAS\)|WAS を使用してアプリケーションをホストする場合に必要です。| + +## 参照 + [システム要件](../../../docs/framework/wcf/wcf-system-requirements.md) \ No newline at end of file diff --git a/docs/framework/wcf/privacy-information.md b/docs/framework/wcf/privacy-information.md new file mode 100644 index 00000000000..bf80bd8e52b --- /dev/null +++ b/docs/framework/wcf/privacy-information.md @@ -0,0 +1,413 @@ +--- +title: "Windows Communication Foundation のプライバシー情報 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "プライバシー情報 [WCF]" + - "WCF, プライバシー情報" + - "Windows Communication Foundation, プライバシー情報" +ms.assetid: c9553724-f3e7-45cb-9ea5-450a22d309d9 +caps.latest.revision: 34 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 34 +--- +# Windows Communication Foundation のプライバシー情報 +マイクロソフトは、エンド ユーザーのプライバシー保護に力を入れています。 [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] \(バージョン 3.0\) を使用してアプリケーションを作成した場合、アプリケーションがエンド ユーザーのプライバシーに影響する可能性があります。 たとえば、アプリケーションが明示的にユーザーの連絡先情報を収集することがあります。つまり、アプリケーションがインターネットを経由して Web サイトに情報を要求したり、情報を送信したりすることがあります。 マイクロソフトの技術をアプリケーションに組み込んでいる場合、その技術にプライバシーに影響を与える可能性がある独自の動作が存在することがあります。 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、アプリケーションの作成者またはエンド ユーザーが選択しない限り、アプリケーションからマイクロソフトに情報を送信することはありません。 + +## WCF の概要 + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] とは、Microsoft .NET Framework を使用した分散メッセージング フレームワークで、これによって開発者は、分散アプリケーションを作成できます。 2 つのアプリケーション間で交換されるメッセージには、ヘッダーと本文情報が入ります。 + + ヘッダーには、アプリケーションが使用するサービスに応じて、メッセージ ルーティング、セキュリティ情報、トランザクションなどの情報が追加されます。 メッセージは、通常、既定で暗号化されます。 ただし、`BasicHttpBinding` を使用する場合は例外です。このバインディングは、セキュリティで保護されていない従来の Web サービスで使用するために設計されています。 アプリケーションの設計者であるユーザーには最終設計に対する責任があります。 SOAP 本文のメッセージには、アプリケーション固有のデータが入りますが、アプリケーション定義の個人情報などのデータは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の暗号化機能または機密性保護機能を使用してセキュリティで保護できます。 次のセクションでは、プライバシーに影響を与える可能性がある機能について説明します。 + +## メッセージング + 各 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] メッセージには、メッセージの送信先と応答の返信先を指定するアドレス ヘッダーがあります。 + + エンドポイント アドレスのアドレス構成要素は、エンドポイントを識別する URI \(Uniform Resource Identifier\) です。 このアドレスは、ネットワーク アドレスまたは論理アドレスのいずれかです。 アドレスには、コンピューター名 \(ホスト名、完全修飾ドメイン名\) と IP アドレスを指定できます。 また、エンドポイント アドレスには、グローバル一意識別子 \(GUID\)、または各アドレスを識別するために使用される一時アドレス指定用に GUID のコレクションを入れることもできます。 各メッセージには、GUID 形式のメッセージ ID があります。 この機能は、WS\-Addressing 参照仕様に準拠します。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] メッセージング レイヤーは個人情報をローカル コンピューターに書き込みません。 ただし、サービスの開発者が個人情報を公開するサービスを作成した場合は、ネットワーク レベルで個人情報を公開することがあります。このような例として、エンドポイント名に個人名を使用している場合や、エンドポイントの Web サービス記述言語に個人情報を追加しても、https を使用して WSDL にアクセスすることをクライアントに要求しない場合などがあります。 また、個人情報を公開するエンドポイントに対して [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を実行すると、そのツールの出力に個人情報が追加される可能性があります。その出力ファイルは、ローカルのハード ディスクに書き込まれます。 + +## ホスト + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のホスト機能によって、アプリケーションを必要に応じて開始したり、複数のアプリケーション間でポートを共有したりできます。 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のアプリケーションは、[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] 同様、インターネット インフォメーション サービス \(IIS\) でホストできます。 + + ホストでは、特定の情報をネットワークに公開せず、コンピューター上にデータを格納しません。 + +## メッセージのセキュリティ + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のセキュリティは、メッセージング アプリケーションにセキュリティ機能を提供します。 提供するセキュリティ機能には、認証と承認があります。 + + 認証は、クライアントとサービスとの間で資格情報を交換することによって実行されます。 認証は、次のように、トランスポート レベルのセキュリティまたは SOAP メッセージ レベルのセキュリティで実行できます。 + +- SOAP メッセージ セキュリティでは、発行者に応じて、ユーザー名とパスワード、X.509 証明書、Kerberos チケット、SAML トークンのような資格情報を使用して認証が実行されます。このすべての資格情報は、個人情報を含んでいる可能性があります。 + +- トランスポート セキュリティでは、HTTP 認証方式 \(Basic、Digest、Negotiate、Integrated Windows Authorization、NTLM、None、および Anonymous\) のような従来のトランスポート認証機構によって認証が実行されます。 + + 認証によって、通信するエンドポイント間にセキュリティで保護されたセッションを確立できます。 このセッションは、セキュリティ セッションの有効期間が切れるまで有効な GUID によって識別されます。 格納されるデータと格納場所を次の表に示します。 + +|データ|ストレージ| +|---------|-----------| +|ユーザー名、X.509 証明書、Kerberos トークンなどのプレゼンテーション資格情報、および資格情報への参照|Windows 証明書ストアなど、標準の Windows 資格情報管理機構| +|ユーザー名とパスワードなど、ユーザーのメンバーシップ情報|[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] メンバーシップ プロバイダー| +|クライアントに対するサービスの認証に使用されるサービスの ID 情報|サービスのエンドポイント アドレス| +|呼び出し元情報|監査ログ| + +## 監査 + 監査では、認証イベントと承認イベントの成功と失敗を記録します。 監査レコードには、サービス URI、アクション URI、および呼び出し元の ID が入ります。 + + また、監査では、管理者がメッセージ ログの設定 \(オンまたはオフ\) を変更した時刻を記録します。その理由は、メッセージ ログが、ヘッダーと本文のアプリケーション固有のデータをログに記録する可能性があるためです。 [!INCLUDE[wxp](../../../includes/wxp-md.md)] の場合、レコードはアプリケーション イベント ログに記録されます。 [!INCLUDE[wv](../../../includes/wv-md.md)] と [!INCLUDE[ws2003](../../../includes/ws2003-md.md)] の場合、レコードは、セキュリティ イベント ログに記録されます。 + +## トランザクション + トランザクション機能は、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のアプリケーションにトランザクション サービスを提供します。 + + トランザクションの伝達で使用されるトランザクション ヘッダーには、GUID 形式のトランザクション ID または登録リスト ID を追加できます。 + + トランザクション機能では、Microsoft 分散トランザクション コーディネーター \(MSDTC\) トランザクション マネージャー \(Windows コンポーネントの 1 つ\) を使用して、トランザクション状態を管理します。 既定では、トランザクション マネージャー間の通信は暗号化されます。 トランザクション マネージャーは、エンドポイント参照、トランザクション ID、および登録リスト ID を永続状態の一部としてログに記録できます。 この状態の有効期間は、トランザクション マネージャーのログ ファイルの有効期間によって決まります。 MSDTC サービスがこのログを所有し、管理します。 + + トランザクション機能は、WS\-Coordination 仕様と WS\-AtomicTransaction 仕様を実装します。 + +## 信頼できるセッション + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の信頼できるセッションは、トランスポートまたは中継局のエラーが発生した場合でもメッセージの転送を実現します。 信頼できるセッションは、基になるトランスポート \(たとえば、ワイヤレス ネットワーク上の TCP 接続\) が切断している場合やメッセージを紛失した場合 \(HTTP プロキシでの送受信メッセージの破棄\) でも、正確に 1 回のメッセージ転送を実行します。 また、メッセージが送信された順序を維持するので、メッセージの並べ替え \(マルチパス ルーティングの場合に発生する可能性がある\) を回復できます。 + + 信頼できるセッションは、WS\-ReliableMessaging \(WS\-RM\) プロトコルを使用して実装されています。 これによって追加される WS\-RM ヘッダーには、特定の信頼できるセッションに関連付けられたすべてのメッセージの識別に使用されるセッション情報が含まれています。 各 WS\-RM セッションには、GUID 形式の識別子があります。 + + エンド ユーザーのコンピューターに保持される個人情報はありません。 + +## キューに置かれたチャネル + キューは、送信元アプリケーションが送ったメッセージを受信側アプリケーションに代わって保存しておき、後で受信側アプリケーションに転送します。 受信側アプリケーションが一時的な場合なども、キューによって、送信元アプリケーションから受信側アプリケーションへのメッセージの転送を確実に実行できます。 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、トランスポートとして Microsoft メッセージ キュー \(MSMQ\) を使用することによってキューをサポートします。 + + キューに置かれたチャネル機能では、ヘッダーをメッセージに追加しません。 代わりに、適切なメッセージ キューのメッセージ プロパティ セットを備えたメッセージ キューのメッセージを作成し、メッセージ キューのメソッドを呼び出して、メッセージ キューのキューにメッセージを追加します。 メッセージ キューは、Windows に付属しているオプション コンポーネントです。 + + キューに置かれたチャネル機能では、キュー インフラストラクチャとしてメッセージ キューを使用するので、この機能によってエンド ユーザーのコンピューターに保持される情報はありません。 + +## COM\+ 統合 + この機能は、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のサービスと互換性のあるサービスを作成するために既存の COM 機能と COM\+ 機能をラップします。 この機能は、特定のヘッダーを使用せず、エンド ユーザーのコンピューターにデータを保持しません。 + +## COM サービス モニカー + この機能は、標準の [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] クライアントにアンマネージ ラッパーを提供します。 この機能は、ネットワーク上で特定のヘッダーを使用せず、コンピューターにデータを保持しません。 + +## ピア チャネル + ピア チャネルによって、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] を使用したマルチパーティ アプリケーションの展開が可能になります。 マルチパーティ メッセージングはメッシュのコンテキストで実行されます。 メッシュは、ノードが参加できる名前によって識別されます。 ピア チャネル内の各ノードは、ユーザー指定のポートで TCP リスナーを作成し、メッシュ内の他のノードとの接続を確立することによって、回復力を確保します。 メッシュ内の他のノードに接続するため、ノードは、リスナー アドレスやコンピューターの IP アドレスなど一部のデータをメッシュ内の他のノードと交換します。 メッシュ内で送信されるメッセージに送信者に関するセキュリティ情報を入れ、メッセージのなりすましと改ざんを防止することができます。 + + エンド ユーザーのコンピューターに個人情報は格納されません。 + +## IT 専門家向けの機能 + +### トレース + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] インフラストラクチャの診断機能は、トランスポート レイヤーとサービス モデル レイヤーを経由するメッセージ、およびこのメッセージに関連付けられたアクティビティとイベントをログに記録します。 この機能は既定で無効になっています。 この機能はアプリケーションの構成ファイルを使用して有効にし、トレース動作は、実行時に [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] WMI プロバイダーを使用して変更できます。 有効にすると、トレース インフラストラクチャは、メッセージ、アクティビティ、および処理イベントを含んだ診断トレースを構成済みリスナーに出力します。 出力の形式と場所は、管理者が選択するリスナー構成によって決まりますが、通常は XML 形式のファイルです。 管理者は、トレース ファイルでアクセス制御リスト \(ACL\) を設定する必要があります。 特に、Windows アクティベーション システム \(WAS\) でホストするとき、管理者は、ファイルがパブリック仮想ルート ディレクトリから提供されていないことを確認する必要があります \(提供されることを望まない場合\)。 + + トレースには、メッセージ ログとサービス モデル診断トレースの 2 種類があります。この 2 種類のトレースについて次のセクションで説明します。 この 2 つのトレースは、それぞれ というトレース ソースから構成されます。 このログ トレース ソースは両方とも、アプリケーションにローカルなデータを取り込みます。 + +### メッセージ ログ + メッセージ ログのトレース ソース \(\) によって管理者は、システムを通過するメッセージをログに記録できます。 ユーザーは構成によって、メッセージ全体またはメッセージ ヘッダーだけをログに記録するかどうか、トランスポート レイヤーまたはサービス モデル レイヤーでログに記録するかどうか、および形式が正しくないメッセージをログに記録するかどうかを設定できます。 また、ユーザーは、フィルター処理を設定して、ログに記録するメッセージを制限できます。 + + 既定では、メッセージ ログは無効になっています。 ローカル コンピューターの管理者は、アプリケーション レベルの管理者がメッセージ ログを有効にするのを防止できます。 + +#### 暗号化および復号化されるメッセージ ログ + メッセージは、以下に説明するようにログに記録され、暗号化および復号化されます。 + + トランスポート ログ + トランスポート レベルで送受信されるメッセージをログに記録します。 このメッセージは、すべてのヘッダーを含んでいて、ネットワーク上に送信される前と受信されるときに暗号化できます。 + + メッセージがネットワーク上に送信される前と受信されるときに暗号化される場合、そのメッセージは暗号化されたままログに記録されます。 例外は、セキュリティ プロトコル \(https\) を使用する場合です。メッセージは、ネットワーク上で暗号化されている場合でも、送信前と受信後は復号化された状態でログに記録されます。 + + サービス ログ + チャネル ヘッダー処理が実行された後、ユーザー コードを入力する直前と直後に、サービス モデル レベルで送受信されるメッセージをログに記録します。 + + このレベルでログに記録されるメッセージは、ネットワーク上でセキュリティ保護され、暗号化されている場合でも復号化されます。 + + 形式が正しくないメッセージのログ + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] インフラストラクチャが認識できないまたは処理できないメッセージをログに記録します。 + + メッセージは、暗号化の有無を問わず、そのままの状態でログに記録されます。 + + メッセージが復号化された状態または暗号化されていない状態でログに記録される場合、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では既定で、メッセージをログに記録する前にセキュリティ キーと個人情報の可能性がある情報をメッセージから削除します。 次のセクションでは、削除される情報と削除が実行される状況について説明します。 キーと個人情報の可能性がある情報をログに記録するには、コンピューターの管理者とアプリケーションを配置するユーザーの両方が、所定の構成操作を実行して既定の動作を変更する必要があります。 + +#### 復号化されたまたは暗号化されていないメッセージをログに記録するときにメッセージ ヘッダーから削除される情報 + メッセージが復号化された状態または暗号化されていない状態でログに記録される場合、既定ではメッセージがログに記録される前に、セキュリティ キーと個人情報の可能性がある情報がメッセージ ヘッダーとメッセージ本文から削除されます。 [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] によってキーおよび個人情報の可能性がある情報と見なされる部分を次のリストに示します。 + + 削除されるキー : + + \- xmlns:wst\="http:\/\/schemas.xmlsoap.org\/ws\/2004\/04\/trust" および xmlns:wst\="http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust" の場合 + + wst:BinarySecret + + wst:Entropy + + \- xmlns:wsse\="http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-wssecurity\-secext\-1.1.xsd" および xmlns:wsse\="http:\/\/docs.oasis\-open.org\/wss\/2005\/xx\/oasis\-2005xx\-wss\-wssecurity\-secext\-1.1.xsd" の場合 + + wsse:Password + + wsse:Nonce + + 削除される個人情報の可能性がある情報 : + + \- xmlns:wsse\="http:\/\/docs.oasis\-open.org\/wss\/2004\/01\/oasis\-200401\-wss\-wssecurity\-secext\-1.1.xsd" および xmlns:wsse\="http:\/\/docs.oasis\-open.org\/wss\/2005\/xx\/oasis\-2005xx\-wss\-wssecurity\-secext\-1.1.xsd" の場合 + + wsse:Username + + wsse:BinarySecurityToken + + \- xmlns:saml\="urn:oasis:names:tc:SAML:1.0:assertion" の場合、下記の太字の項目が削除されます。 + + \ + + \ + + \ + + \\[uri\]\<\/Audience\>\+ + + \<\/AudienceRestrictionCondition\>\* + + \\* + + \<\!\-\- abstract base type + + \\* + + \-\-\> + + \<\/Conditions\>? + + \ + + \\[ID\]\<\/AssertionIDReference\>\* + + \\[assertion\]\<\/Assertion\>\* + + \[any\]\* + + \<\/Advice\>? + + \<\!\-\- Abstract base types + + \\* + + \ + + \ + + `` + + `[string]` + + `?` + + \ + + \\[anyUri\]\<\/ConfirmationMethod\>\+ + + \\[any\]\<\/SubjectConfirmationData\>? + + \...\<\/ds:KeyInfo\>? + + \<\/SubjectConfirmation\>? + + \<\/Subject\> + + \<\/SubjectStatement\>\* + + \-\-\> + + \ + + \[Subject\] + + `?` + + \\* + + \<\/AuthenticationStatement\>\* + + \ + + \[Subject\] + + \ + + `[any]+` + + \<\/Attribute\>\+ + + \<\/AttributeStatement\>\* + + \ + + \[Subject\] + + \\[string\]\<\/Action\>\+ + + \ + + \\[ID\]\<\/AssertionIDReference\>\+ + + \\[assertion\]\<\/Assertion\>\+ + + \<\/Evidence\>? + + \<\/AuthorizationDecisionStatement\>\* + + \<\/Assertion\> + +#### 復号化されたまたは暗号化されていないメッセージをログに記録するときにメッセージ本文から削除される情報 + 前述のとおり、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、復号化されたまたは暗号化されていないメッセージをログに記録する場合、キーと既知の可能性がある個人情報をメッセージ ヘッダーから削除します。 それに加えて、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、次のリストに示す、キー交換に関係するセキュリティ メッセージを記述する本文要素とアクションについて、キーと既知の可能性がある個人情報をメッセージ本文から削除します。 + + 次の名前空間の場合 : + + xmlns:wst\="http:\/\/schemas.xmlsoap.org\/ws\/2004\/04\/trust" と xmlns:wst\="http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust" \(有効なアクションがない場合など\) + + キー交換を伴うこの本文要素について情報が削除されます。 + + wst:RequestSecurityToken + + wst:RequestSecurityTokenResponse + + wst:RequestSecurityTokenResponseCollection + + 次の各アクションについても情報が削除されます。 + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RST\/Issue + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RSTR\/Issue + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RST\/Renew + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RSTR\/Renew + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RST\/Cancel + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RSTR\/Cancel + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RST\/Validate + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RSTR\/Validate + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RST\/SCT + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RSTR\/SCT + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RST\/SCT\/Amend + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RSTR\/SCT\/Amend + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RST\/SCT\/Renew + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RSTR\/SCT\/Renew + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RST\/SCT\/Cancel + + http:\/\/schemas.xmlsoap.org\/ws\/2005\/02\/trust\/RSTR\/SCT\/Cancel + + http:\/\/schemas.xmlsoap.org\/ws\/2004\/04\/security\/trust\/RST\/SCT + + http:\/\/schemas.xmlsoap.org\/ws\/2004\/04\/security\/trust\/RSTR\/SCT + + http:\/\/schemas.xmlsoap.org\/ws\/2004\/04\/security\/trust\/RST\/SCT\-Amend + + http:\/\/schemas.xmlsoap.org\/ws\/2004\/04\/security\/trust\/RSTR\/SCT\-Amend + +#### 情報が削除されないアプリケーション固有のヘッダーと本文データ + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、アプリケーション固有のヘッダー \(クエリ文字列など\) と本文データ \(クレジット カード番号など\) にある個人情報を追跡しません。 + + メッセージ ログが有効な場合、アプリケーション固有のヘッダーと本文情報にある個人情報はログに表示される可能性があります。 そのため、この場合もアプリケーションを配置するユーザーが、構成ファイルとログ ファイルに対する ACL を設定する必要があります。 また、この情報を表示しない場合にログを無効にすることや、情報がログに記録された後で、この情報をログ ファイルからフィルターで除外することもできます。 + +### サービス モデル トレース + サービス モデルのトレース ソース \(\) によって、メッセージ処理に関するアクティビティとイベントのトレースを実行できます。 この機能では、 から .NET Framework 診断機能を使用します。 プロパティと同様、場所とその ACL は、.NET Framework アプリケーションの構成ファイルを使用してユーザーが設定できます。 メッセージ ログと同様、管理者がトレースを有効にするときに必ずファイルの場所が設定されるので、管理者は ACL を制御できます。 + + スコープ内のメッセージに含まれるメッセージ ヘッダーをトレースします。 前のセクションで説明した、メッセージ ヘッダーに含まれる個人情報の可能性がある情報を非表示にする場合と同じ規則が適用されます。既定では、先に示した個人情報はトレース時にヘッダーから削除されます。 個人情報の可能性がある情報をログに記録するには、コンピューターの管理者とアプリケーションを配置するユーザーの両方が構成を変更する必要があります。 ただし、アプリケーション固有のヘッダーにある個人情報はトレース時にログに記録されます。 アプリケーションを配置するユーザーは、構成ファイルとトレース ファイルに対する ACL を設定する必要があります。 また、この情報を表示しない場合にトレースを無効にすることや、情報がログに記録された後で、この情報をトレース ファイルからフィルターで除外することもできます。 + + ServiceModel トレースの一部として、一意な ID \(呼び出されたアクティビティ ID、通常は GUID\) は、インフラストラクチャのさまざまな部分を通過するメッセージとして、異なる複数のアクティビティを結合します。 + +#### カスタム トレース リスナー + メッセージ ログとトレースの両方で、カスタム トレース リスナーを構成できます。このリスナーは、ネットワーク上で、リモート データベースなどにトレースとメッセージを送信できます。 アプリケーションを配置するユーザーは、カスタム リスナーを構成するか、ユーザーがリスナーを構成できるようにする必要があります。 また、遠隔地で公開される個人情報に対しても責任があり、この遠隔地に ACL を適切に適用する必要があります。 + +### IT 専門家向けのその他の機能 + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] には、Windows に付属の WMI から [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] インフラストラクチャ構成情報を公開する WMI プロバイダーが用意されています。 既定では、WMI インターフェイスは管理者が利用できます。 + + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 構成では、.NET Framework 構成のしくみを使用します。 構成ファイルはコンピューターに保存されます。 アプリケーション開発者と管理者が、アプリケーションの要件に応じて構成ファイルと ACL を作成します。 構成ファイルには、エンドポイント アドレスと証明書ストア内の証明書へのリンクを入れることができます。 証明書を使用してアプリケーション データを提供し、アプリケーションによって使用される機能の各プロパティを構成することができます。 + + また、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、 メソッドを呼び出すことによって、.NET Framework のプロセス ダンプ機能を使用します。 + +### IT 専門家のツール + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] には、次の IT 専門家向けのツールも用意されており、Windows SDK に同梱されています。 + +#### SvcTraceViewer.exe + このビューアーは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] トレース ファイルを表示します。 このビューアーは、トレースに含まれているすべての情報を表示します。 + +#### SvcConfigEditor.exe + このエディターでは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] 構成ファイルを作成し、編集できます。 このエディターは、構成ファイルに含まれているすべての情報を表示します。 テキスト エディターでも同じ操作を実行できます。 + +#### ServiceModel\_Reg + このツールでは、コンピューター上の ServiceModel のインストールを管理できます。 このツールは、実行時にコンソール ウィンドウにステータス メッセージを表示し、処理中に [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] インストールの構成に関する情報を表示できます。 + +#### WSATConfig.exe と WSATUI.dll + このツールによって、IT 専門家は [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] で相互運用可能な WS\-AtomicTransaction ネットワーク サポートを構成できます。 このツールは、レジストリに格納された最も一般的に使用される WS\-AtomicTransaction 設定の値を表示し、ユーザーはこのツールを使用してその値を変更できます。 + +## 広範囲に使用できる機能 + 次の機能は広範囲に使用できます。 つまり、前述の任意の機能と共に構成できます。 + +### サービス フレームワーク + ヘッダーには、インスタンス ID を入れることができます。このインスタンス ID は、メッセージを CLR クラスのインスタンスに関連付ける GUID です。 + + Web サービス記述言語 \(WSDL\) には、ポートの定義が入ります。 各ポートには、エンドポイント アドレス、およびアプリケーションが使用するサービスを表すバインディングがあります。 WSDL の公開は、構成を使用して無効にできます。 コンピューターに保持される情報はありません。 + +## 参照 + [Windows Communication Foundation](http://msdn.microsoft.com/ja-jp/fd327ade-0260-4c40-adbe-b74645ba3277) + [セキュリティ](../../../docs/framework/wcf/feature-details/security.md) \ No newline at end of file diff --git a/docs/framework/wcf/publishing-metadata-endpoints.md b/docs/framework/wcf/publishing-metadata-endpoints.md new file mode 100644 index 00000000000..8d1aa2b3ceb --- /dev/null +++ b/docs/framework/wcf/publishing-metadata-endpoints.md @@ -0,0 +1,30 @@ +--- +title: "メタデータ エンドポイントを公開する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 29cd8a60-dfb7-460c-bf5a-c2b31b782671 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# メタデータ エンドポイントを公開する +[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスは 1 つ以上のメタデータ エンドポイントを公開することにより、メタデータを公開します。サービス メタデータを公開すると、そのメタデータで WS\-MetadataExchange \(MEX\) や HTTP\/GET 要求などの標準化プロトコルを使用できるようになります。メタデータのエンドポイントは、アドレス、バインディング、およびコントラクトを持つ他のサービス エンドポイントに似ており、構成またはコードを使用してサービス ホストに追加できます。メタデータ エンドポイントの公開を有効にするには、 サービス動作をサービスに追加する必要があります。 + +## このセクションの内容 + [方法 : 構成ファイルを使用してサービスのメタデータを公開する](../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-a-configuration-file.md) + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスを構成してメタデータを公開し、クライアントが `?wsdl` クエリ文字列を使用した WS\-MetadataExchange または HTTP\/GET 要求によりメタデータを取得できるようにする方法を示します。 + + [方法 : コードを使用してサービスのメタデータを公開する](../../../docs/framework/wcf/feature-details/how-to-publish-metadata-for-a-service-using-code.md) + コードを使用して [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] サービスのメタデータの公開を有効にして、`?wsdl` クエリ文字列を使用した WS\-MetadataExchange または HTTP\/GET 要求によりメタデータをクライアントが取得できるようにする方法を示します。 + +## 参照 + [メタデータの公開](../../../docs/framework/wcf/feature-details/publishing-metadata.md) \ No newline at end of file diff --git a/docs/framework/wcf/reliable-services.md b/docs/framework/wcf/reliable-services.md new file mode 100644 index 00000000000..ba06bd59f24 --- /dev/null +++ b/docs/framework/wcf/reliable-services.md @@ -0,0 +1,56 @@ +--- +title: "信頼できるサービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "サービス コントラクト [WCF], 信頼できるサービス" + - "WCF [WCF], 信頼できるメッセージング" + - "WCF [WCF], 信頼できるセッション" + - "Windows Communication Foundation [WCF], 信頼できるメッセージング" + - "Windows Communication Foundation [WCF], 信頼できるセッション" +ms.assetid: 07814ed0-0775-47f2-987b-d8134fdd5099 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 信頼できるサービス +キューおよび信頼できるセッションは、信頼できるメッセージングを実装する [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] の機能です。このトピックでは、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] の信頼できるメッセージング機能について説明します。 + + *信頼できるメッセージング*とは、信頼できるメッセージング送信元 \(*送信元* と呼ぶ\) から信頼できるメッセージング送信先 \(*送信先*と呼ぶ\) にメッセージを確実に転送することを指します。 + + 信頼できるメッセージングは、次の機能を実行します。 + +- メッセージ転送エラーまたはトランスポート エラーに関係なく、送信元から送信先に送られるメッセージの転送が保証されること。 + +- 送信元と送信先を互いに分離すること。これにより、送信元または送信先が利用できない場合でも、送信元と送信先でのそれぞれ独立したエラーと回復が可能になると共に、信頼できるメッセージの転送と配信が実現されます。 + + 信頼できるメッセージングを実現すると、待ち時間が長くなることがよくあります。*待ち時間*とは、メッセージが送信元から送信先に到達するまでにかかる時間です。そこで、[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] では、信頼できるメッセージングとして、次の 2 種類を提供します。 + +- [信頼できるセッション](../../../docs/framework/wcf/feature-details/reliable-sessions.md) : 長い待ち時間という代償を伴わずに、信頼できる転送を実現します。 + +- [WCF のキュー](../../../docs/framework/wcf/feature-details/queues-in-wcf.md) : 信頼できる転送、および送信元と送信先の分離を共に実現します。 + +## 信頼できるセッション + 信頼できるセッションでは、メッセージング \(送信元および送信先\) エンドポイントを分離する中継局の数や種類に関係なく、WS\-ReliableMessaging プロトコルを使用して、送信元から送信先へのエンドツーエンドの信頼できるメッセージ転送を実現します。これには SOAP を使用しないトランスポート手段 \(HTTP プロキシなど\)、またはエンドポイント間でメッセージをやりとりする場合に必要となる SOAP を使用する手段 \(SOAP ベースのルーターやブリッジなど\) が含まれます。信頼できるセッションでは、メモリ内転送ウィンドウを使用して、トランスポート エラーが発生した場合に SOAP メッセージ レベル エラーをマスクし、接続を再確立します。 + + 信頼できるセッションは、待ち時間の短い、信頼できるメッセージ転送を実現します。これらは、TCP が IP ブリッジ経由のパケットで実現するものと同等の転送を、プロキシや中継局経由の SOAP メッセージで実現します。信頼できるセッション[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[信頼できるセッション](../../../docs/framework/wcf/feature-details/reliable-sessions.md)」を参照してください。 + +### キュー + [!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のキューでは、待ち時間は長くなりますが、信頼できるメッセージの転送と共に送信元および送信先の分離が実現されます。[!INCLUDE[indigo2](../../../includes/indigo2-md.md)] のキュー通信は、Microsoft Message Queuing \(MSMQ\) に基づいています。 + + MSMQ は Windows のオプション コンポーネントとして付属します。MSMQ サービスは Windows サービスの 1 つとして実行されます。MSMQ サービスは、送信元の代わりに転送キューで転送用のメッセージを取得し、ターゲット キューに配信します。ターゲット キューは、送信先の代わりにメッセージを受け取り、後で送信先がメッセージを要求したときに配信します。MSMQ マネージャーは信頼できるメッセージ転送プロトコルを実装するため、転送中にメッセージが失われることはありません。このプロトコルは、ネイティブまたは SOAP リライアブル メッセージ プロトコル \(SRMP\) と呼ばれる SOAP ベースのプロトコルです。 + + キュー間でのメッセージの信頼できる転送に加え、送信元と送信先の分離により、疎結合されたアプリケーションで信頼できる通信を実現できます。信頼できるセッションとは異なり、送信元と送信先が同時に実行されている必要はありません。このため、送信元によるメッセージの生成レートと送信先によるメッセージの消費レートが一致しないときに、キューが実質上、負荷平準化機構として使用されるというシナリオが可能になります。キュー[!INCLUDE[crabout](../../../includes/crabout-md.md)]、「[WCF のキュー](../../../docs/framework/wcf/feature-details/queues-in-wcf.md)」を参照してください。 + +## 参照 + [信頼できるセッションの概要](../../../docs/framework/wcf/feature-details/reliable-sessions-overview.md) + [WCF でのキュー](../../../docs/framework/wcf/feature-details/queuing-in-wcf.md) \ No newline at end of file diff --git a/docs/framework/wcf/renaming-a-wcf-service.md b/docs/framework/wcf/renaming-a-wcf-service.md new file mode 100644 index 00000000000..e3352b23d4b --- /dev/null +++ b/docs/framework/wcf/renaming-a-wcf-service.md @@ -0,0 +1,60 @@ +--- +title: "WCF サービス名の変更 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 14235a65-b1c5-409d-b6cc-a979acd54bbd +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# WCF サービス名の変更 +ここでは、[!INCLUDE[indigo1](../../../includes/indigo1-md.md)] サービスの名前を変更する方法について説明します。 + +## WCF サービス名の変更 + [!INCLUDE[indigo1](../../../includes/indigo1-md.md)] テンプレートでサービスの名前を変更するには、次の手順を実行します。 + +- サービスを実装するクラスの名前を変更します。 + +- 次の例に示すように、このサービスの構成ファイルで、サービスの名前を新しい名前に変更します。構成ファイルは、ホスト モデルに応じて、app.config または web.config ファイルのどちらかです。 + +``` + + + + + + +``` + +- サービスが Web ホストである場合、\*.svc ファイルが使用されます。この svc ファイルを開き、次の例に示すように、サービスの名前を変更します。自己ホスト アプリケーションには svc ファイルがないので、この手順は必要ありません。 + +``` +<%@ ServiceHost Service=”WcfService.NewName”> +``` + +## WCF サービス コントラクト名の変更 + +- サービス コントラクトの名前を変更するには、次の手順を実行します。 + +- サービス コントラクトの名前を変更します。 + +- 次の例に示すように、このサービスの構成ファイルで、サービス コントラクトの名前を新しい名前に変更します。構成ファイルは、ホスト モデルに応じて、app.config または web.config ファイルのどちらかです。 + +``` + + + + + + + +``` \ No newline at end of file diff --git a/docs/framework/wcf/samples/TOC.md b/docs/framework/wcf/samples/TOC.md new file mode 100644 index 00000000000..f1a61dbe5a7 --- /dev/null +++ b/docs/framework/wcf/samples/TOC.md @@ -0,0 +1,260 @@ +# [配信不能キュー](dead-letter-queues.md) +# [ネット MSMQ バインディング](net-msmq-binding.md) +# [カスタム サービス ホスト](custom-service-host.md) +# [カスタム Demux](custom-demux.md) +# [双方向通信](two-way-communication.md) +# [クライアント](client.md) +# [フォーム ポスト](form-post.md) +# [ローカル チャネル](local-channel.md) +# [フィード フォーマッタ (JSON)](feed-formatter-json.md) +# [メタデータ拡張](metadata-extensibility.md) +# [WS トランザクション フロー](ws-transaction-flow.md) +# [同時実行](concurrency.md) +# [本文要素別のディスパッチ](dispatch-by-body-element.md) +# [ASP.NET キャッシュ統合](aspnet-caching-integration.md) +# [トランスポート セキュリティ付き BasicBinding](basicbinding-with-transport-security.md) +# [デザイン パターン : リストに基づく公開/定期受信](design-patterns-list-based-publish-subscribe.md) +# [NamedPipe アクティベーション](namedpipe-activation.md) +# [SystemWebRouting 統合サンプル](systemwebrouting-integration-sample.md) +# [クライアント検証](client-validation.md) +# [CustomChannelTester](customchannelstester.md) +# [WCF サービスと Event Tracing for Windows](wcf-services-and-event-tracing-for-windows.md) +# [高度なエラー処理](advanced-error-handling.md) +# [標準エンドポイントの使用](usage-of-standard-endpoints.md) +# [トランザクション バッチ](transacted-batching.md) +# [MSMQ 4.0 での有害メッセージ処理](poison-message-handling-in-msmq-4-0.md) +# [SAML トークン プロバイダー](saml-token-provider.md) +# [メタデータの抽出](retrieve-metadata.md) +# [クライアント相互運用性](client-interoperability.md) +# [既定の NetTcpBinding](default-nettcpbinding.md) +# [カスタム トークン](custom-token.md) +# [NetNamedPipeBinding](netnamedpipebinding.md) +# [構成を使用しない AJAX サービス](ajax-service-without-configuration.md) +# [バイトストリーム エンコーダー](bytestream-encoder.md) +# [チャネルのチャンキング](chunking-channel.md) +# [メッセージ コントラクト](message-contracts.md) +# [SOAP エンドポイントおよび HTTP エンドポイント](soap-and-http-endpoints.md) +# [MSMQ アクティベーション](msmq-activation.md) +# [WCF モニカーの COM クライアントと組み合わせての使用](using-the-wcf-moniker-with-com-clients.md) +# [拡張保護ポリシー](extended-protection-policy.md) +# [DataContractSerializer サンプル](datacontractserializer-sample.md) +# [高度な形式選択](advanced-format-selection.md) +# [サービス操作へのアクセスの承認](authorizing-access-to-service-operations.md) +# [Windows Communication Foundation サンプルの実行](running-the-samples.md) +# [形式の自動選択](automatic-format-selection.md) +# [ReceiveContext 製品ジェネレーター](receivecontext-enabled-wcf-channels.md) +# [基本的な AJAX サービス](basic-ajax-service.md) +# [アドレス指定](addressing.md) +# [スタンドアロン診断フィード](stand-alone-diagnostics-feed-sample.md) +# [メッセージ セキュリティ Windows](message-security-windows.md) +# [SRMP](srmp.md) +# [機能拡張](extensibility.md) +# [ツール サンプル](tool-samples.md) +# [バインディング拡張](binding-extensibility.md) +# [ASP.NET 互換性](aspnet-compatibility.md) +# [XmlSerializer エラー](xmlserializer-faults.md) +# [メッセージ セキュリティ ユーザー名](message-security-user-name.md) +# [カスタム バインディングの信頼できるセッション](custom-binding-reliable-session.md) +# [PII セキュリティ ロックダウン](pii-security-lockdown.md) +# [CustomDiscoveryMetadata](customdiscoverymetadata.md) +# [信頼されたファサード サービス](trusted-facade-service.md) +# [メッセージ セキュリティ匿名](message-security-anonymous.md) +# [WCF セキュリティの暗号化方式の指定](cryptographic-agility-in-wcf-security.md) +# [インスタンス化](instancing.md) +# [Basic](basic-sample.md) +# [JSONP](jsonp.md) +# [Use および Style プロパティの設定](setting-the-use-and-style-properties.md) +# [TCP アクティベーション](tcp-activation.md) +# [二重](duplex.md) +# [サービス セキュリティ](service-security.md) +# [Windows Presentation Foundation クライアントでのデータ バインディング](data-binding-in-a-wpf-client.md) +# [探索のセキュリティのサンプル](discovery-security-sample.md) +# [KnownAssemblyAttribute](knownassemblyattribute.md) +# [エラー コントラクト](fault-contract.md) +# [配信の拡張のサンプル](syndication-extensibility-samples.md) +# [カスタム検索基準](custom-find-criteria.md) +# [動的再構成](dynamic-reconfiguration.md) +# [ConcurrencyMode.Reentrant](concurrencymode-reentrant.md) +# [基本的なデータ コントラクト](basic-data-contract.md) +# [アドレス ヘッダー](address-headers.md) +# [動作](behaviors.md) +# [DataContract サロゲート](datacontract-surrogate.md) +# [Using ステートメントに関する問題の回避](avoiding-problems-with-the-using-statement.md) +# [探索バインディング要素のサンプル](discovery-binding-element-sample.md) +# [ETW トレース](etw-tracing.md) +# [シリアル化バインダーの使用](usage-of-serialization-binder.md) +# [ファイアウォール手順](firewall-instructions.md) +# [ASMX Web サービスとの相互運用性](interoperating-with-asmx-web-services.md) +# [カスタム バインディング セキュリティ](custom-binding-security.md) +# [Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](one-time-setup-procedure-for-the-wcf-samples.md) +# [WebContentTypeMapper](webcontenttypemapper-sample.md) +# [トレースとメッセージ ログ](tracing-and-message-logging.md) +# [メッセージ セキュリティ バインディング](message-security-binding.md) +# [データ バインドのシナリオ](data-binding-scenarios.md) +# [Windows フォーム クライアントのデータ バインディング](data-binding-in-a-windows-forms-client.md) +# [カスタム セキュア メタデータ エンドポイント](custom-secure-metadata-endpoint.md) +# [サービス コントラクト](service-contracts.md) +# [AJAX](ajax.md) +# [サービス デバッグ動作](service-debug-behavior.md) +# [メッセージ インスペクター](message-inspectors.md) +# [一意の ListenUri モードのサンプルを使用したサービスの探索](discover-a-service-with-unique-listen-uri-mode-sample.md) +# [ルーティング サービス](routing-services.md) +# [WS デュアル Http](ws-dual-http.md) +# [カスタム メッセージ フィルター](custom-message-filter.md) +# [WSStreamedHttpBinding](wsstreamedhttpbinding.md) +# [永続性インスタンス コンテキスト](durable-instance-context.md) +# [概要](getting-started-sample.md) +# [インターネット インフォメーション サービスのホスティング手順](internet-information-service-hosting-instructions.md) +# [アナウンス](announcements-sample.md) +# [トークン プロバイダー](token-provider.md) +# [データ コントラクト](data-contracts.md) +# [Reliable Secure Profile](reliable-secure-profile.md) +# [WS 2007 フェデレーション HTTP バインディング](ws-2007-federation-http-binding.md) +# [単一 ListenUri に対する複数のエンドポイント](multiple-endpoints-at-a-single-listenuri.md) +# [メッセージ セキュリティ証明書](message-security-certificate.md) +# [複数のエンドポイント](multiple-endpoints.md) +# [JSON および XML 形式の AJAX サービス](ajax-service-with-json-and-xml-sample.md) +# [高度なフィルター](advanced-filters.md) +# [メッセージ キュー統合](message-queueing-integration.md) +# [クライアントの偽装](impersonating-the-client.md) +# [ホスト](hosting.md) +# [Windows Communication Foundation サンプル](index.md) +# [既知の型](known-types.md) +# [Web](web.md) +# [複合型を使用した AJAX サービス](ajax-service-using-complex-types-sample.md) +# [BasicBinding](basicbinding.md) +# [WS 信頼できるセッション](ws-reliable-session.md) +# [トークン認証システム](token-authenticator.md) +# [メッセージ エンコーダー拡張](message-encoder-extensibility.md) +# [ワークフローの探索のサンプル](workflow-discovery-sample.md) +# [メッセージ セキュリティ サンプル](message-security-sample.md) +# [MTOM エンコーディング](mtom-encoding.md) +# [シナリオ](scenario.md) +# [カスタム チャネル ディスパッチャー](custom-channel-dispatcher.md) +# [フェデレーション サンプル](federation-sample.md) +# [メッセージ キュー (MSMQ) のインストール](installing-message-queuing-msmq.md) +# [XMLSerializer サンプル](xmlserializer-sample.md) +# [オブジェクト参照](object-references.md) +# [非同期検索](asynchronous-find-sample.md) +# [インスタンス化拡張](instancing-extensibility.md) +# [サービス ID サンプル](service-identity-sample.md) +# [Windows Communication Foundation でのメッセージ キュー](wcf-to-message-queuing.md) +# [メタデータ公開動作](metadata-publishing-behavior.md) +# [永続性発行済みトークン プロバイダー](durable-issued-token-provider.md) +# [構成](configuration-sample.md) +# [一方向](one-way.md) +# [カスタム メッセージ インターセプター](custom-message-interceptor.md) +# [トランスポート: UDP](transport-udp.md) +# [トランザクション MSMQ バインディング](transacted-msmq-binding.md) +# [サービスの説明](service-description.md) +# [カスタム バインディング強制](custom-binding-imperative.md) +# [Windows Communication Foundation へのメッセージ キュー](message-queuing-to-wcf.md) +# [トランスポート : UDP 経由のカスタム トランザクション](transport-custom-transactions-over-udp-sample.md) +# [DataContractResolver](datacontractresolver.md) +# [探索の機能拡張](discovery-extensibility.md) +# [カスタム バインディングのトランスポートとエンコード](custom-binding-transport-and-encoding.md) +# [スコープを使用した探索](discovery-with-scopes-sample.md) +# [カスタム メッセージ エンコーダー : カスタム テキスト エンコーダー](custom-message-encoder-custom-text-encoder.md) +# [ASP.NET クライアントでのデータ バインディング](data-binding-in-an-aspnet-client.md) +# [プール](pooling.md) +# [トークンのサポート](supporting-tokens.md) +# [型指定のあるクライアント](typed-client.md) +# [WS バインディング](ws-binding.md) +# [XmlReader サンプル](xmlreader-sample.md) +# [WCF 分析トレース](wcf-analytic-tracing.md) +# [循環トレース](circular-tracing.md) +# [トランスポート : WSE 3.0 TCP 相互運用性](transport-wse-3-0-tcp-interoperability.md) +# [UriTemplate テーブル](uritemplate-table-sample.md) +# [既定のメッセージ コントラクト](default-message-contract.md) +# [サービス監査動作](service-auditing-behavior.md) +# [ストリーム](stream.md) +# [カスタム メッセージ エンコーダー : 圧縮エンコーダー](custom-message-encoder-compression-encoder.md) +# [インライン コードを使用した IIS ホスティング](iis-hosting-using-inline-code.md) +# [弱く型指定された拡張](loosely-typed-extensions-sample.md) +# [管理](management.md) +# [カスタム有効期間](custom-lifetime.md) +# [探索](discovery-samples.md) +# [配信](syndication.md) +# [強制](imperative.md) +# [ネット バインディング](net-binding.md) +# [チャネル拡張](channels-extensibility.md) +# [UDP アクティベーション](udp-activation.md) +# [ブリッジとエラー処理](bridging-and-error-handling.md) +# [セキュリティ検証](security-validation.md) +# [セッションとキュー](sessions-and-queues.md) +# [HTTP 受信確認チャネル](http-acknowledgement-channel.md) +# [WMI プロバイダー](wmi-provider.md) +# [サービス](services.md) +# [エラー処理およびレポートに対する制御の拡張](extending-control-over-error-handling-and-reporting.md) +# [既定のサービスの動作](default-service-behavior.md) +# [基本的なリソース サービス](basic-resource-service.md) +# [ユーザー名パスワード検証](user-name-password-validator.md) +# [調整](throttling.md) +# [メッセージ相関](message-correlation.md) +# [WCF サービス付き ASMX クライアント](asmx-client-with-a-wcf-service.md) +# [探索ルーター サービス](discovery-router-service.md) +# [条件付きの Get と Put](conditional-get-and-put.md) +# [カスタム バインディング](custom-binding.md) +# [トランスポート拡張](transport-extensibility.md) +# [仮想ディレクトリのセットアップ手順](virtual-directory-setup-instructions.md) +# [JSON シリアル化](json-serialization.md) +# [構成チャネル ファクトリ](configuration-channel-factory.md) +# [カスタム WSDL パブリケーション](custom-wsdl-publication.md) +# [UriTemplate テーブル ディスパッチャー](uritemplate-table-dispatcher-sample.md) +# [X.509 証明書検証](x-509-certificate-validator.md) +# [ConfigurationCodeGenerator](configurationcodegenerator.md) +# [相互運用性の拡張](interop-extensibility.md) +# [POCO サポート](poco-support.md) +# [Windows プロセス アクティブ化](windows-process-activation.md) +# [セッション](session.md) +# [サービス相互運用性](service-interoperability.md) +# [WS トランスポート セキュリティ](ws-transport-security.md) +# [メッセージ キューを介したメッセージ セキュリティ](message-security-over-message-queuing.md) +# [バインド](binding.md) +# [コントラクト](contract.md) +# [複数のコントラクト](multiple-contracts.md) +# [トレースの拡張](extending-tracing.md) +# [セキュリティ拡張](security-extensibility.md) +# [基本的なバインディング](basic-binding.md) +# [予期される例外](expected-exceptions.md) +# [階層的な構成モデル](hierarchical-configuration-model.md) +# [Windows Communication Foundation サンプルのビルド](building-the-samples.md) +# [基本的な HTTP サービス](basic-http-service.md) +# [WSHttpBinding](wshttpbinding.md) +# [構成ベースのアクティブ化](configuration-based-activation.md) +# [ストリーミング フィード](streaming-feeds-sample.md) +# [WCF サービスの簡略化された構成](simplified-configuration-for-wcf-services.md) +# [探索プロキシのサンプル](discovery-proxy-sample.md) +# [承認ポリシー](authorization-policy.md) +# [操作フォーマッタと操作セレクター](operation-formatter-and-operation-selector.md) +# [Windows サービス ホスト](windows-service-host.md) +# [HTTP POST を使用する AJAX サービス](ajax-service-using-http-post.md) +# [サービス トランザクションの動作](service-transaction-behavior.md) +# [動作のセキュリティ](behavior-security.md) +# [FindPrivateKey](findprivatekey.md) +# [HTTPS を介したカスタム バインディングの信頼できるセッション](custom-binding-reliable-session-over-https.md) +# [NetTCPBinding](nettcpbinding.md) +# [初期化のインスタンス化](instancing-initialization.md) +# [DataContractSerializer と DataContractResolver を使用した NetDataContractSerializer 機能の提供](datacontractserializer-datacontractresolver-netdatacontractserializer.md) +# [OperationContextScope](operationcontextscope.md) +# [インターネット インフォメーション サービス (IIS) サーバー証明書インストール手順](iis-server-certificate-installation-instructions.md) +# [Web 拡張](web-extensibility.md) +# [HttpCookieSession](httpcookiesession.md) +# [ルーティング サービスを使用した Hello World](hello-world-with-the-routing-service.md) +# [メンバーシップとロール プロバイダー](membership-and-role-provider.md) +# [メッセージ資格情報付き WS トランスポート](ws-transport-with-message-credential.md) +# [揮発性キューによる通信](volatile-queued-communication.md) +# [型指定のない要求/応答](untyped-request-reply.md) +# [セットアップ手順](set-up-instructions.md) +# [弱い型指定の JSON のシリアル化 (AJAX)](weakly-typed-json-serialization-sample.md) +# [UriTemplate](uritemplate-sample.md) +# [チャネル ファクトリ](channel-factory.md) +# [本文別のルーティング](route-by-body.md) +# [AspNetRouteIntegration](aspnetrouteintegration.md) +# [自己ホスト](self-host.md) +# [セキュリティ](security-in-wcf.md) +# [Basic](basic.md) +# [Net.TCP ポート共有のサンプル](net-tcp-port-sharing-sample.md) +# [厳密に型指定された拡張](strongly-typed-extensions-sample.md) +# [ラップされていないメッセージ](unwrapped-messages.md) +# [パフォーマンス カウンターの使用](using-performance-counters.md) diff --git a/docs/framework/wcf/samples/address-headers.md b/docs/framework/wcf/samples/address-headers.md new file mode 100644 index 00000000000..e6b0500e7fb --- /dev/null +++ b/docs/framework/wcf/samples/address-headers.md @@ -0,0 +1,95 @@ +--- +title: "アドレス ヘッダー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b0c94d4a-3bde-4b4d-bb6d-9f12bc3a6940 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# アドレス ヘッダー +アドレス ヘッダーのサンプルでは、クライアントが [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用して、サービスに参照パラメータを渡す方法を示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + WS\-Addressing 仕様では、特定の Web サービスのエンドポイントのアドレスを指定するための方法として、エンドポイント参照の概念が定義されています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、エンドポイント参照は `EndpointAddress` クラスを通じてモデル化されます。`EndpointAddress` は、`ServiceEndpoint` クラスの Address フィールドの型です。 + + エンドポイント参照モデルの一部では、各参照は、追加の識別情報を追加する複数の参照パラメータを伝達できます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、これらの参照パラメータは `AddressHeader` クラスのインスタンスとしてモデル化されます。 + + このサンプルでは、クライアントはクライアント エンドポイントの `EndpointAddress` に参照パラメータを追加します。サービスはこの参照パラメータを検索し、その値を "Hello" サービス操作のロジックに使用します。 + +## クライアント + クライアントから参照パラメータを送信するには、`ServiceEndpoint` の `EndpointAddress` に `AddressHeader` を追加する必要があります。`EndpointAddress` クラスは不変なので、EndpointAddress の変更は `EndpointAddressBuilder` クラスを通じて行う必要があります。参照パラメータをメッセージの一部として送信するためにクライアントを初期化するコードを、次に示します。 + +``` +HelloClient client = new HelloClient(); +EndpointAddressBuilder builder = + new EndpointAddressBuilder(client.Endpoint.Address); +AddressHeader header = + AddressHeader.CreateAddressHeader(IDName, IDNamespace, "John"); +builder.Headers.Add(header); +client.Endpoint.Address = builder.ToEndpointAddress(); +``` + + このコードは、元の `EndpointAddress` を初期値として使用して `EndpointAddressBuilder` を作成します。次に、新しく作成されたアドレス ヘッダーを追加します。つまり `CreateAddressHeadercreates` を呼び出して、特定の名前、名前空間、および値を持つヘッダーを作成します。ここでの値は "John" です。ヘッダーがビルダに追加されると、`ToEndpointAddress()` メソッドが \(不変の\) ビルダを \(不変の\) エンドポイント アドレスに変換し直し、これをクライアント エンドポイントの Address フィールドに再度割り当てます。 + + ここで、クライアントは `Console.WriteLine(client.Hello());` サービスを呼び出します。このサービスは、このアドレス パラメータの値を取得できます。結果として得られるクライアントの出力は次のとおりです。 + + `Hello, John` + +## サーバー + サービス操作 `Hello()` の実装では、現在の `OperationContext` を使用して、入力メッセージのヘッダーの値を検査します。 + +``` +string id = null; +// look at headers on incoming message +for (int i = 0; + i < OperationContext.Current.IncomingMessageHeaders.Count; + ++i) +{ + MessageHeaderInfo h = + OperationContext.Current.IncomingMessageHeaders[i]; + // for any reference parameters with the correct name & namespace + if (h.IsReferenceParameter && + h.Name == IDName && + h.Namespace == IDNamespace) + { + // read the value of that header + XmlReader xr = +OperationContext.Current.IncomingMessageHeaders.GetReaderAtHeader(i); + id = xr.ReadElementContentAsString(); + } +} +return "Hello, " + id; +``` + + このコードでは、入力メッセージのすべてのヘッダーを反復処理して、特定の名前を持つ参照パラメーターを検索します。パラメーターが見つかると、そのパラメーター値を読み取って "id" 変数に格納します。 + +#### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Client\AddressHeaders` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/addressing.md b/docs/framework/wcf/samples/addressing.md new file mode 100644 index 00000000000..0c73a35b9f0 --- /dev/null +++ b/docs/framework/wcf/samples/addressing.md @@ -0,0 +1,149 @@ +--- +title: "アドレス指定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d438e6f2-d0f3-43aa-b259-b51b5bda2e64 +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# アドレス指定 +アドレス指定のサンプルでは、エンドポイント アドレスのさまざまな特性と機能を示します。 このサンプルは、[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)に基づいています。 このサンプルでは、サービスは自己ホスト型です。 サービスとクライアントは両方ともコンソール アプリケーションです。 サービスでは、エンドポイントの相対アドレスと絶対アドレスを組み合わせて複数のエンドポイントを定義します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + サービス構成ファイルでは、1 つのベース アドレスと 4 つのエンドポイントを指定します。 ベース アドレスは、次のサンプル構成のように add 要素を使用して service\/host\/baseAddresses の下に指定します。 + +``` + + + + + + + ... + +``` + + 次のサンプル構成の 1 番目のエンドポイント定義では、相対アドレスを指定します。つまり、エンドポイント アドレスは、ベース アドレスと URI 構造の規則に従った相対アドレスの組み合わせということを意味します。 + +``` + + + +``` + + この場合、相対アドレスが空 \(""\) のため、エンドポイント アドレスはベース アドレスと同じになります。 具体的には http:\/\/localhost:8000\/servicemodelsamples\/service です。 + + 2 番目のエンドポイント定義でも、相対アドレスを指定します。次のサンプル構成を参照してください。 + +``` + + + + +``` + + 相対アドレス "test" がベース アドレスの末尾に追加されています。 具体的には http:\/\/localhost:8000\/servicemodelsamples\/service\/test です。 + + 3 番目のエンドポイント定義では、絶対アドレスを指定します。次のサンプル構成を参照してください。 + +``` + +``` + + このアドレスでは、ベース アドレスは使用されていません。 具体的には http:\/\/localhost:8001\/hello\/servicemodelsamples です。 + + 4 番目のエンドポイント アドレスは、絶対アドレスと別のトランスポート \(ここでは TCP\) を指定しています。 このアドレスでは、ベース アドレスは使用されていません。 具体的には net.tcp:\/\/localhost:9000\/servicemodelsamples\/service です。 + +``` + + + + + + +``` + + クライアントがアクセスするのは、4 つのサービス エンドポイントのうちの 1 つだけですが、4 つすべてのエンドポイントがこの構成ファイルに定義されています。 クライアントは `CalculatorProxy` オブジェクトの作成時にエンドポイントを選択します。 `CalculatorEndpoint1` から `CalculatorEndpoint4` までの構成名を変更することにより、それぞれのエンドポイントを実行できます。 + + このサンプルを実行する際、サービスはそれぞれのエンドポイントのアドレス、バインディング名、およびコントラクト名を列挙します。 ServiceHost から見た場合、メタデータ交換 \(MEX\) エンドポイントは他と同じエンドポイントにすぎません。したがって、このエンドポイントもこの一覧に表示されます。 + +``` +Service endpoints: +Endpoint - address: http://localhost:8000/ServiceModelSamples/service + binding: WSHttpBinding + contract: ICalculator +Endpoint - address: http://localhost:8000/ServiceModelSamples/service/test + binding: WSHttpBinding + contract: ICalculator +Endpoint - address: http://localhost:8001/hello/servicemodelsamples + binding: WSHttpBinding + contract: ICalculator +Endpoint - address: net.tcp://localhost:9000/servicemodelsamples/service + binding: NetTcpBinding + contract: ICalculator +Endpoint - address: http://localhost:8000/ServiceModelSamples/service/mex + binding: MetadataExchangeHttpBinding + contract: IMetadataExchange + +The service is ready. +Press to terminate service. + +``` + + このクライアントを実行すると、操作要求と応答がサービスとクライアントの両方のコンソール ウィンドウに表示されます。 どちらかのコンソールで Enter キーを押すと、サービスとクライアントがどちらもシャットダウンされます。 + +``` +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + + > [!NOTE] + > Svcutil.exe を使用してこのサンプルの構成を再生成した場合は、クライアント コードに一致するように、クライアント構成内のエンドポイント名を変更してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」に移動して、すべての [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サンプルおよび [!INCLUDE[wf1](../../../../includes/wf1-md.md)] サンプルをダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Addressing` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/advanced-error-handling.md b/docs/framework/wcf/samples/advanced-error-handling.md new file mode 100644 index 00000000000..7e914ec9e34 --- /dev/null +++ b/docs/framework/wcf/samples/advanced-error-handling.md @@ -0,0 +1,135 @@ +--- +title: "高度なエラー処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ed54b687-78af-4eda-8507-9fd081bdea1a +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# 高度なエラー処理 +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] ルーティング サービスを示します。 ルーティング サービスは、コンテンツ ベースのルーターをアプリケーションに簡単に追加できるようにする [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] コンポーネントです。 このサンプルでは、トランザクションやその他のより複雑なメッセージ概念 \(マルチキャストなど\) を使用して、ルーティング サービスをエラーから自動的に回復する方法を示します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\RoutingServices\AdvancedErrorHandling` + +## サンプルの詳細 + このサンプルのルーティング サービスは、MSMQ キューからメッセージを読み取り、そのメッセージを 2 つのキュー リストにマルチキャストするように構成されています。 サービス キューに使用されるリストとログ キューに使用されるリストです。 + + 既定では、ルーティング サービスで使用するように構成された MSMQ バインディングによってトランザクションの使用がサポートされるため、メッセージはトランザクション メッセージとなり、それぞれのリストの少なくとも 1 つのキューで受信されないと、ルーティング サービスから受信キュー \(`InQ`\) に、メッセージが正常にルーティングされたとは報告されません。 しがたって、両方のサービス キューまたは両方のログ キューが使用できない場合は、メッセージをルーティングできなかったこと、および受信キューで何らかの処理が必要であることが報告されます。 この処理には、メッセージをシステム配信不能キューに移動することが含まれます。 + +#### このサンプルを使用するには + +1. > [!IMPORTANT] + > このサンプルを実行する前に、MSMQ をインストールしてください。 MSMQ がインストールされていないと、サンプルの実行中に例外メッセージが返されます。 MSMQ のインストール手順については、「[メッセージ キュー \(MSMQ\) のインストール](http://go.microsoft.com/fwlink/?LinkId=166437)」を参照してください。 + + [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を使用して AdvancedErrorHandling.sln を開きます。 + +2. [!INCLUDE[vs_current_short](../../../../includes/vs-current-short-md.md)] で F5 キーを押すか、Ctrl キーと Shift キーを押しながら B キーを押します。 + + 1. Ctrl キーと Shift キーを押しながら B キーを押してアプリケーションをビルドする場合は、.\/RoutingService\/bin\/debug\/RoutingService.exe にあるアプリケーションを開始する必要があります。 + +3. コンソール ウィンドウで、Enter キーを押してクライアントを起動します。 + +4. クライアントから、ケースごとに、キューに関するさまざまな統計情報が返されます。 + + 1. ケース 1 \(エラーなし\) の場合は、次の出力が返されます。 + + ```Output + + 受信キューに 0 個のメッセージがあります。 + + プライマリ サービス キューに 1 個のメッセージがあります。 + + バックアップ サービス キューに 0 個のメッセージがあります。 + + プライマリ ログ キューに 1 個のメッセージがあります。 + + バックアップ ログ キューに 0 個のメッセージがあります。 + + 続行するには キーを押してください。 + + ``` + + 2. ケース 3 \(プライマリ サービス キューとプライマリ ログ キューのエラー\) の場合は、次の出力が返されます。 + + ```Output + + 受信キューに 0 個のメッセージがあります。 + + プライマリ サービス キューが存在しません。 + + バックアップ サービス キューに 1 個のメッセージがあります。 + + プライマリ ログ キューが存在しません。 + + バックアップ ログ キューに 1 個のメッセージがあります。 + + 続行するには キーを押してください。 + + ``` + + 3. ケース 4 \(プライマリ サービス キューとプライマリおよびバックアップ ログ キューのエラー\) の場合は、次の出力が返されます。 + + ```Output + + 受信キューに 0 個のメッセージがあります。 + + プライマリ サービス キューが存在しません。 + + バックアップ サービス キューに 0 個のメッセージがあります。 + + プライマリ ログ キューが存在しません。 + + バックアップ ログ キューが存在しません。 + + システム配信不能キューに 1 個のメッセージがあります。 + + 終了するには、 キーを押してください。 + + ``` + + 4. ケース 2 \(プライマリ サービス キューのエラー\) の場合は、次の出力が返されます。 + + ```Output + + 受信キューに 0 個のメッセージがあります。 + + プライマリ サービス キューが存在しません。 + + バックアップ サービス キューに 1 個のメッセージがあります。 + + プライマリ ログ キューに 1 個のメッセージがあります。 + + バックアップ ログ キューに 0 個のメッセージがあります。 + + 続行するには キーを押してください。 + + ``` + +## コードまたは App.config で構成可能 + サンプルは、提供された時点では、App.config ファイルを使用してルーターの動作を定義するように構成されています。 RoutingService\\App.config ファイルの名前を別の名前に変更して認識されないようにし、RoutingService\\Program.cs の `configDriven` フィールドの値を `false` に変更して、コードで定義された構成を使用することもできます。 どちらの方法でも、ルーターの動作は同じになります。 + +### シナリオ + このサンプルは、ルーティング サービスで高度なメッセージング機能 \(トランザクションや受信コンテキストなど\) を処理できること、およびそれらの機能を適切なエラー処理シナリオの一部として利用できることを示しています。 + +### 実際のシナリオ + Contoso では、ルーティング サービスを介したトランザクションの受信を利用して、エラー状態のときでも、必要なすべてのサービスで情報を受信できるようにしたいと考えています。 さらに、エラーを自動的に適切に処理し、エラー処理ロジックを利用してもメッセージを配信できない場合にはエラーが報告されるようにしたいと考えています。 そのために、計画的に特定のエンドポイントにフェールオーバーするようにルーティング サービスを構成し、必要に応じてトランザクションや受信コンテキストの作成、完了、ロールバック、中止などを行うことで、エラー状態をルーティング サービスで処理するようにしています。 + +## 参照 + [AppFabric のホストおよび永続化のサンプル](http://go.microsoft.com/fwlink/?LinkId=193961) \ No newline at end of file diff --git a/docs/framework/wcf/samples/advanced-filters.md b/docs/framework/wcf/samples/advanced-filters.md new file mode 100644 index 00000000000..aa62013f220 --- /dev/null +++ b/docs/framework/wcf/samples/advanced-filters.md @@ -0,0 +1,172 @@ +--- +title: "高度なフィルター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8d81590f-e036-4f96-824a-4a187f462764 +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# 高度なフィルター +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] ルーティング サービスを示します。ルーティング サービスは、コンテンツ ベースのルーターをアプリケーションに簡単に追加できるようにする [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] コンポーネントです。このサンプルでは、標準の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 電卓のサンプルを改良し、ルーティング サービスを使用して通信するようにします。そして、メッセージ フィルターとメッセージ フィルター テーブルを使用してコンテンツ ベースのルーティング ロジックを定義する方法を説明します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\RoutingServices\AdvancedFilters` + +## サンプルの詳細 + 次の表は、ルーティング サービスのメッセージ フィルター テーブルに追加されるメッセージ フィルターを示しています。 + +|フィルター|規則|優先順位| +|-----------|--------|----------| +|If \(has header\)|Rounding|2| +|If \(showed up on Ep2\)|Regular|1| +|If \(showed up with Address2\)|Rounding|1| +|If \(RoundRobin1\)|Regular|0| +|If \(RoundRobin2\)|Rounding|0| + + メッセージ フィルターとメッセージ フィルター テーブルは、コードまたはアプリケーション構成ファイルで作成および構成できます。このサンプルのメッセージ フィルターとメッセージ フィルター テーブルは、コードで定義されたものが RoutingService\\routing.cs ファイルに、アプリケーション構成ファイルで定義されたものが RoutingService\\App.config ファイルにあります。以降では、このサンプルのメッセージ フィルターとメッセージ フィルター テーブルをコードで作成する方法を説明します。 + + まず最初に、 でカスタム ヘッダーを探します。 の結果のエンベロープ バージョンでは SOAP 1.2 が使用されるため、SOAP 1.2 名前空間を使用するように XPath ステートメントを定義します。 の既定の名前空間マネージャーでは SOAP 1.2 名前空間のプレフィックス \/s12 が既に定義されているため、このプレフィックスを使用できます。一方、クライアントが実際のヘッダー値を定義するために使用するカスタムの名前空間は含まれていないため、そのプレフィックスを定義する必要があります。このヘッダーを持つすべてのメッセージがこのフィルターに一致します。 + +``` +XPathMessageContext namespaceManager = new XPathMessageContext(); +namespaceManager.AddNamespace("custom", "http://my.custom.namespace/"); + +XPathMessageFilter xpathFilter = new XPathMessageFilter("/s12:Envelope/s12:Header/custom:RoundingCalculator = 1", namespaceManager); + +``` + + 2 番目のフィルターは、`calculatorEndpoint` で受信されたメッセージに一致する です。エンドポイント名は、サービス エンドポイント オブジェクトの作成時に定義されます。 + +``` +EndpointNameMessageFilter endpointNameFilter = new EndpointNameMessageFilter("calculatorEndpoint"); + +``` + + 3 番目のフィルターは、 です。このフィルターは、指定したアドレス プレフィックス \(アドレスの前半部分\) に一致するアドレスを持つエンドポイントで受信されたメッセージに一致します。この例のアドレス プレフィックスは "http:\/\/localhost\/routingservice\/router\/rounding\/" として定義されています。この場合、"http:\/\/localhost\/routingservice\/router\/rounding\/\*" 宛ての受信メッセージがこのフィルターに一致します。この例では、丸め処理を行う電卓のエンドポイントのアドレスが "http:\/\/localhost\/routingservice\/router\/rounding\/calculator" なので、このエンドポイントで受信されたメッセージがこのフィルターに一致することになります。 + +``` +PrefixEndpointAddressMessageFilter prefixAddressFilter = new PrefixEndpointAddressMessageFilter(new EndpointAddress("http://localhost/routingservice/router/rounding/")); + +``` + + 最後の 2 種類のメッセージ フィルターは、カスタムの です。この例では、"RoundRobin" メッセージ フィルターが使用されています。このメッセージ フィルターは、付属の RoutingService\\RoundRobinMessageFilter.cs ファイルに作成されています。これらのフィルターを同じグループに設定すると、両方のフィルターが同時に `true` を返さないように、メッセージに一致したという報告と一致しないという報告を交互に行うようになります。 + +``` +RoundRobinMessageFilter roundRobinFilter1 = new RoundRobinMessageFilter("group1"); + +RoundRobinMessageFilter roundRobinFilter2 = new RoundRobinMessageFilter("group1"); + +``` + + 次に、これらすべてのメッセージ フィルターを に追加します。その際に、メッセージ フィルター テーブルでフィルターが実行される順番を左右する優先度を指定します。優先度の高いフィルターが先に実行され、優先度の低いフィルターは後に実行されます。したがって、優先度が 2 のフィルターは優先度が 1 のフィルターより先に実行されます。優先度が指定されていない場合の既定の優先度は 0 です。メッセージ フィルター テーブルは、特定の優先度のフィルターをすべて実行してから次の優先度に移ります。特定の優先度で一致が検出された場合、それより低い優先度のフィルターでの検出は省略されます。 + +> [!NOTE] +> ここではメッセージ フィルターの優先度の使い方を説明していますが、一般的には、優先度を設定しなくても正しく機能するようにフィルターを設計および構成するのがパフォーマンスの観点からも設計の観点からも理想的です。 + + 最初に追加するフィルターは、優先度が 2 に設定された XPath フィルターです。これが、最初に実行されるメッセージ フィルターです。このフィルターによってカスタム ヘッダーが検出されると、他のフィルターの結果に関係なく、メッセージは丸め処理を行う電卓のエンドポイントにルーティングされます。 + + 優先度 1 では 2 つのフィルターを追加します。これらのフィルターは、メッセージが優先度 2 の XPath フィルターに一致しなかった場合にのみ実行されます。この 2 つのフィルターは、受信したメッセージの宛先を特定する 2 とおりの方法を示しており、それぞれが、2 つのエンドポイントの一方でメッセージが受信されたかどうかを確認します。したがって、両方が同時に `true` を返すことはないため、同じ優先度で実行できます。 + + 最後に、優先度 0 \(最も低い優先度\) で RoundRobin メッセージ フィルターが実行されます。これらのフィルターは同じグループ名で構成されているため、一度に 1 つのフィルターのみが一致します。カスタム ヘッダーを持つメッセージと特定の仮想エンドポイント宛てのメッセージはすべて既にルーティングされているため、RoundRobin メッセージ フィルターによって処理されるメッセージは、カスタム ヘッダーを持たない、既定のルーターのエンドポイント宛てのメッセージだけです。これらのメッセージは呼び出しのたびに切り替えられるため、操作の半分は通常の電卓のエンドポイントに送られ、もう半分は丸め処理を行う電卓のエンドポイントに送られます。 + +#### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を使用して AdvancedFilters.sln を開きます。 + +2. **ソリューション エクスプローラー**を開くには、**\[表示\]** メニューの **\[ソリューション エクスプローラー\]** をクリックします。 + +3. [!INCLUDE[vs_current_short](../../../../includes/vs-current-short-md.md)] で F5 キーを押すか、Ctrl キーと Shift キーを押しながら B キーを押します。 + + 1. F5 キーを押したときに必要なプロジェクトが自動的に起動されるようにする場合は、ソリューションを右クリックし、**\[プロパティ\]** をクリックします。左ペインの **\[共通プロパティ\]** で **\[スタートアップ プロジェクト\]** をクリックします。**\[マルチ スタートアップ プロジェクト\]** をクリックし、すべてのプロジェクトに**開始**アクションを設定します。 + + 2. Ctrl キーと Shift キーを押しながら B キーを押してプロジェクトをビルドする場合は、次のアプリケーションを開始する必要があります。 + + 1. 電卓クライアント \(.\/CalculatorClient\/bin\/client.exe\) + + 2. 電卓サービス \(.\/CalculatorService\/bin\/service.exe\) + + 3. 丸め処理を行う電卓サービス \(.\/RoundingCalcService\/bin\/service.exe\) + + 4. ルーティング サービス \(.\/RoutingService\/bin\/RoutingService.exe\) + +4. 電卓クライアントのコンソール ウィンドウで、Enter キーを押してクライアントを起動します。選択可能な送信先エンドポイントの一覧が返されます。 + +5. 対応する文字を入力して送信先エンドポイントを選択し、Enter キーを押します。 + +6. 次に、カスタム ヘッダーを追加するかどうかを確認するメッセージが表示されます。追加する場合は Y \(Yes\) キーを、追加しない場合は N \(No\) キーを押して、Enter キーを押します。 + +7. 選択に応じて異なる出力が表示されます。 + + 1. メッセージにカスタム ヘッダーを追加した場合は、次の出力が返されます。 + + ```Output + Add(100,15.99) = 116 + Subtract(145,76.54) = 68.5 + Multiply(9,81.25) = 731.3 + Divide(22,7) = 3.1 + + ``` + + 2. カスタム ヘッダーを使用せずに丸め処理を行う電卓のエンドポイントを選択した場合は、次の出力が返されます。 + + ```Output + Add(100,15.99) = 116 + Subtract(145,76.54) = 68.5 + Multiply(9,81.25) = 731.3 + Divide(22,7) = 3.1 + + ``` + + 3. カスタム ヘッダーを使用せずに通常の電卓のエンドポイントを選択した場合は、次の出力が返されます。 + + ```Output + Add(100,15.99) = 115.99 + Subtract(145,76.54) = 6846 + Multiply(9,81.25) = 731.25 + Divide(22,7) = 3.14285714285714 + + ``` + + 4. カスタム ヘッダーを使用せずに既定のルーターのエンドポイントを選択した場合は、次の出力が返されます。 + + ```Output + Add(100,15.99) = 116 + Subtract(145,76.54) = 68.46 + Multiply(9,81.25) = 731.3 + Divide(22,7) = 3.14285714285714 + + ``` + +8. また、電卓サービスと丸め処理を行う電卓サービスは、呼び出された操作のログをそれぞれのコンソール ウィンドウに出力します。 + +9. 終了するには、クライアント コンソール ウィンドウで「`quit`」と入力するか、Enter キーを押します。 + +10. サービスを終了するには、サービス コンソール ウィンドウで Enter キーを押します。 + +## コードまたは App.config で構成可能 + サンプルは、提供された時点では、App.config ファイルを使用してルーターの動作を定義するように構成されています。RoutingService\\App.config ファイルの名前を別の名前に変更して認識されないようにし、RoutingService\\routing.cs の `ConfigureRouterViaCode()` に対するメソッド呼び出しのコメントを解除することもできます。どちらの方法でも、ルーターの動作は同じになります。 + +### シナリオ + このサンプルでは、1 つのエンドポイントを介して複数の種類または実装のサービスを公開することを可能にするコンテンツ ベースのルーターとして機能するルーターを示します。 + +### 実際のシナリオ + Contoso では、すべてのサービスを仮想化して 1 つのエンドポイントのみを公開し、そのエンドポイントを通じて複数の異なる種類のサービスへのアクセスを提供したいと考えています。この場合は、ルーティング サービスのコンテンツ ベースのルーティング機能を使用して受信要求の送信先を決定します。 + +## 参照 + [AppFabric のホストおよび永続化のサンプル](http://go.microsoft.com/fwlink/?LinkId=193961) \ No newline at end of file diff --git a/docs/framework/wcf/samples/advanced-format-selection.md b/docs/framework/wcf/samples/advanced-format-selection.md new file mode 100644 index 00000000000..e346ba7a4d7 --- /dev/null +++ b/docs/framework/wcf/samples/advanced-format-selection.md @@ -0,0 +1,56 @@ +--- +title: "高度な形式選択 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e02d9082-4d55-41d8-9329-98f6d1c77f06 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 高度な形式選択 +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] REST プログラミング モデルを拡張して新しい送信応答形式をサポートする方法を示します。 また、このサンプルでは T4 テンプレートを使用して応答を XHTML ページとして返し、ビュースタイル プログラミング モデルの実装方法も示します。 + +## サンプルの詳細 + このサンプルは、単純なサービスと、サービスに要求を発行するクライアント コードで構成されます。 サービスは、単一の \[WebGet\] 操作をサポートします。この操作には、`Message EchoListWithGet(string list);` のメソッド シグネチャがあります。 + + クライアントでサービスに対する要求が発行されると、`list` クエリ文字列パラメーターの項目のコンマで区切られた一覧が示され、サービスからは、XML、JSON、Atom、XHTML、または jpeg のいずれかの形式で同じ一覧が返されます。 + + サービスから返される応答の形式は、最初は `format` クエリ文字列パラメーターで決定され、2 回目は要求で指定された HTTP Accept ヘッダーで決定されます。 `format` クエリ文字列パラメーターの値が前に示した形式のいずれかである場合、応答はその形式で返されます。 `format` クエリ文字列が存在しない場合、サービスは要求からの Accept ヘッダー要素を反復処理し、サービスがサポートする最初のコンテンツ タイプの形式を返します。 + + 操作の戻り値の型については注意が必要です。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] REST プログラミング モデルは、操作で 以外の型が返される場合にのみ XML 応答形式と JSON 応答形式をネイティブでサポートします。 ただし、戻り値の型として が使用されている場合、メッセージの内容の形式の設定は、開発者によって完全に制御されています。 + + このサンプルでは、 メソッド、 メソッドおよび メソッドを使用して、文字列の一覧を XML、JSON、および ATOM のメッセージにそれぞれシリアル化しています。 jpeg 応答形式の場合は、 メソッドが使用され、画像はストリームに保存されます。 XHTML 応答の場合、 が事前に処理された T4 テンプレートと共に使用されます。この T4 テンプレートは .tt ファイルと自動生成された .cs ファイルで構成されます。 開発者は、.tt ファイルを使用して変数と制御構造を含むテンプレート フォームで応答を作成できます。 T4 の[!INCLUDE[crabout](../../../../includes/crabout-md.md)] 「[テキスト テンプレートを使用した成果物の生成](http://go.microsoft.com/fwlink/?LinkId=166023)」を参照してください。 + + このサンプルは、コンソール アプリケーション内で実行される自己ホスト型サービスとクライアントで構成されています。 コンソール アプリケーションが実行されると、クライアントはサービスに要求を発行し、応答からの適切な情報をコンソール ウィンドウに書き込みます。 + +#### このサンプルを実行するには + +1. 高度な形式選択サンプルのソリューションを開きます。 サンプルを正しく実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を起動するときに、管理者として実行する必要があります。 管理者として実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] アイコンを右クリックし、コンテキスト メニューの **\[管理者として実行\]** をクリックします。 + +2. Ctrl キーと Shift キーを押しながら B キーを押してソリューションをビルドし、Ctrl キーを押しながら F5 キーを押してコンソール アプリケーションの AdvancedFormatSelection プロジェクトを、デバッグを行わずに実行します。 コンソール ウィンドウが表示されて、実行中のサービスの URI および実行中のサービスの HTML ヘルプ ページの URI が示されます。 + +3. サンプルが実行されると、クライアントは要求をサービスに送信し、応答をコンソール ウィンドウに書き込みます。 応答の形式は、XML、JSON、Atom、および XHTML のいずれかになります。 + +4. .jpeg 形式の応答を要求できる URI を参照するよう要求されます。 ブラウザーを開き、指定された URI を参照します。 + +5. 任意のキーを押して、サンプルを終了します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Web\AdvancedFormatSelection` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/ajax-service-using-complex-types-sample.md b/docs/framework/wcf/samples/ajax-service-using-complex-types-sample.md new file mode 100644 index 00000000000..5d40ee3da6f --- /dev/null +++ b/docs/framework/wcf/samples/ajax-service-using-complex-types-sample.md @@ -0,0 +1,78 @@ +--- +title: "複合型を使用した AJAX サービスのサンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 88242b99-4811-4cbe-8201-52ddf48fb174 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# 複合型を使用した AJAX サービスのサンプル +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用して、複合型のインスタンスを作成し、そのインスタンスをサービスとクライアント間で JSON \(JavaScript Object Notation\) として送信する ASP.NET AJAX \(Asynchronous JavaScript and XML\) サービスを作成する方法を示します。AJAX サービスには、Web ブラウザー クライアントから JavaScript コードを使用してアクセスできます。このサンプルは、「[基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md)」のサンプルに基づいています。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での AJAX サポートは、 コントロールを介して ASP.NET AJAX と共に使用できるように最適化されています。ASP.NET AJAX と共に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用する例については、「[AJAX Samples](http://msdn.microsoft.com/ja-jp/f3fa45b3-44d5-4926-8cc4-a13c30a3bf3e)」を参照してください。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + 次に示すサンプルのサービスは、AJAX 固有のコードを持たない [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスです。 属性は適用されないため、既定の HTTP 動詞 \("POST"\) が使用されます。サービスには 1 つの `DoMath` 操作があります。この操作は、`MathResult` という名前の複合型を返します。複合型は標準のデータ コントラクト型で、AJAX 固有のコードも含まれていません。 + +``` +[DataContract] + public class MathResult + { + [DataMember] + public double sum; + [DataMember] + public double difference; + [DataMember] + public double product; + [DataMember] + public double quotient; + } +``` + + 基本的な AJAX サービスのサンプルの場合と同様に、 を使用してサービスに AJAX エンドポイントを作成します。 + + クライアント Web ページ ComplexTypeClientPage.aspx には、ユーザーがページの **\[Perform calculation\]** ボタンをクリックしたときにサービスを呼び出す ASP.NET および JavaScript コードが含まれています。サービスを呼び出すコードは、JSON 本文を作成し、HTTP POST を使用して送信します。これは、[HTTP POST を使用する AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-using-http-post.md) サンプルと同様です。 + + サービス呼び出しに成功したら、生成された JavaScript オブジェクトのそれぞれのデータ メンバー \(`sum`、`difference`、`product`、および `quotient`\) にアクセスできます。 + +``` +function onSuccess(mathResult){ + document.getElementById("sum").value = mathResult.sum; + document.getElementById("difference").value = mathResult.difference; + document.getElementById("product").value = mathResult.product; + document.getElementById("quotient").value = mathResult.quotient; +} + +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. 「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」で説明されているように、ソリューション ComplexTypeAjaxService.sln をビルドします。 + +3. http:\/\/localhost\/ServiceModelSamples\/ComplexTypeClientPage.aspx に移動します \(プロジェクト ディレクトリからブラウザーで ComplexTypeClientPage.aspx を開かないでください\)。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Ajax\ComplexTypeAjaxService` + +## 参照 + [基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/ajax-service-using-http-post.md b/docs/framework/wcf/samples/ajax-service-using-http-post.md new file mode 100644 index 00000000000..ad4a13eb944 --- /dev/null +++ b/docs/framework/wcf/samples/ajax-service-using-http-post.md @@ -0,0 +1,64 @@ +--- +title: "HTTP POST を使用する AJAX サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1ac80f20-ac1c-4ed1-9850-7e49569ff44e +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# HTTP POST を使用する AJAX サービス +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用して、HTTP POST を使用する [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] Asynchronous JavaScript and XML \(AJAX\) サービスを作成する方法を示します。 AJAX サービスには、Web ブラウザー クライアントから基本的な JavaScript コードを使用してアクセスできます。 このサンプルは、[基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md) のサンプルに基づいていますが、HTTP GET の代わりに HTTP POST を使用する点が異なります。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] での AJAX サポートは、`ScriptManager` コントロールを介して ASP.NET AJAX と共に使用できるように最適化されています。 ASP.NET AJAX と共に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用する例については、「[Ajax Samples](../../../../docs/framework/wcf/samples/ajax-service-using-http-post.md)」を参照してください。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + 次に示すサンプルのサービスは、AJAX 固有のコードを持たない [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスです。 + + 属性が操作に適用されているか、または 属性が適用されていない場合、既定の HTTP 動詞 \(“POST”\) が使用されます。 POST 要求は、GET 要求よりも作成が困難ですが、キャッシュされません。キャッシュが不適切な操作に対しては、POST 要求を使用します。 + +``` +[ServiceContract(Namespace = "PostAjaxService")] + public interface ICalculator + { [WebInvoke] + double Add(double n1, double n2); + //Other operations omitted… + } + +``` + + 基本的な AJAX サービスのサンプルの場合と同様に、 を使用してサービスに AJAX エンドポイントを作成します。 + + GET 要求とは異なり、POST サービスはブラウザーから呼び出すことができません。 たとえば、http:\/\/localhost\/ServiceModelSamples\/service.svc\/Add?n1\=100&n2\=200 に移動すると、エラーになります。これは、URL ではなく、JSON 形式で `n1` パラメーターと `n2` パラメーターがメッセージ本文で送信されることを POST サービスが想定しているためです。 + + クライアントの Web ページの PostAjaxClientPage.aspx には、ユーザーがページ上のいずれかの操作ボタンをクリックするとサービスを呼び出す ASP.NET コードが含まれています。 サービスは、GET 要求で、[基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md) のサンプルと同じように応答します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[Windows Communication Foundation \(WCF\) and Windows Workflow Foundation \(WF\) Samples for .NET Framework 4](http://go.microsoft.com/fwlink/?LinkId=150780)」\(.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル\) にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Ajax\PostAjaxService` + +#### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」のセットアップ手順を実行します。 + +2. 「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の説明に従って、ソリューション PostAjaxService.sln をビルドします。 + +3. http:\/\/localhost\/ServiceModelSamples\/PostAjaxClientPage.aspx に移動します \(プロジェクト ディレクトリからブラウザーで PostAjaxClientPage.aspx を開かないでください\)。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/ajax-service-with-json-and-xml-sample.md b/docs/framework/wcf/samples/ajax-service-with-json-and-xml-sample.md new file mode 100644 index 00000000000..8342b49478e --- /dev/null +++ b/docs/framework/wcf/samples/ajax-service-with-json-and-xml-sample.md @@ -0,0 +1,124 @@ +--- +title: "JSON および XML 形式の AJAX サービスのサンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8ea5860d-0c42-4ae9-941a-e07efdd8e29c +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# JSON および XML 形式の AJAX サービスのサンプル +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用して、JSON \(JavaScript Object Notation\) または XML データのいずれかを返す AJAX \(Asynchronous JavaScript and XML\) サービスを作成する方法について説明します。AJAX サービスには、Web ブラウザー クライアントから JavaScript コードを使用してアクセスできます。このサンプルは、「[基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md)」のサンプルに基づいています。 + + 他の AJAX サンプルとは異なり、このサンプルでは ASP.NET AJAX および コントロールを使用しません。追加の構成を行うと、JavaScript を使用して HTML ページから [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] AJAX サービスにアクセスできます。このシナリオを次に示します。ASP.NET AJAX と共に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用する例については、「[AJAX Samples](http://msdn.microsoft.com/ja-jp/f3fa45b3-44d5-4926-8cc4-a13c30a3bf3e)」を参照してください。 + + このサンプルでは、JSON と XML 間で操作の応答のタイプを切り替える方法を示します。この機能は、サービスが ASP.NET AJAX または HTML\/JavaScript クライアント ページでアクセスできるように構成されているかどうかにかかわらず使用できます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + ASP.NET AJAX 以外のクライアントを使用するには、.svc ファイルで \( ではありません\) を使用します。 によって、 標準エンドポイントがサービスに追加されます。エンドポイントは .svc ファイルに相対する空のアドレス位置に作成されます。つまり、サービスのアドレスは、操作名以外の追加のサフィックスのない http:\/\/localhost\/ServiceModelSamples\/service.svc になります。 + +```html +<%@ServiceHost language="c#" Debug="true" Service="Microsoft.Samples.XmlAjaxService.CalculatorService" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %> + +``` + + Web.config 内の次のセクションを使用して、エンドポイントに対する構成変更を追加できます。追加の変更が不要な場合は、このセクションを削除できます。 + +```xml + + + + + + + + + +``` + + の既定のデータ形式は XML であるのに対し、 の既定のデータ形式は JSON です。詳細については、「[ASP.NET を使用せずに WCF AJAX サービスを作成する方法](../../../../docs/framework/wcf/feature-details/creating-wcf-ajax-services-without-aspnet.md)」を参照してください。 + + 次に示すサンプル内のサービスは、2 つの操作が設定された標準の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスです。どちらの操作でも または 属性に の本文スタイルが必要です。この本文スタイルは、`webHttp` 動作に固有で、JSON\/XML データ形式の切り替えに影響しません。 + +``` +[OperationContract] +[WebInvoke(ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped)] +MathResult DoMathXml(double n1, double n2); +``` + + この操作の応答形式は、XML として指定されています。これは、[\](../../../../docs/framework/configure-apps/file-schema/wcf/webhttp.md) 動作の既定の設定です。ただし、応答形式を明示的に指定することをお勧めします。 + + その他の操作では `WebInvokeAttribute` 属性を使用し、応答に XML ではなく JSON を明示的に指定します。 + +``` +[OperationContract] +[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] +MathResult DoMathJson(double n1, double n2); +``` + + どちらの場合でも、操作により、標準の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] データ コントラクト型である複合型 `MathResult` が返されます。 + + クライアント Web ページ XmlAjaxClientPage.htm には、ページ上の **\[Perform calculation \(return JSON\)\]** または **\[Perform calculation \(return XML\)\]** ボタンをクリックすると上記の 2 つの操作のどちらかを呼び出す JavaScript コードが含まれています。サービスを呼び出すコードによって JSON 本文が作成され、HTTP POST を使用して送信されます。「[基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md)」のサンプルや、ASP.NET AJAX を使用するその他のサンプルとは異なり、要求は JavaScript で手動で作成します。 + +``` +// Create HTTP request +var xmlHttp; +// Request instantiation code omitted… +// Result handler code omitted… + +// Build the operation URL +var url = "service.svc/ajaxEndpoint/"; +url = url + operation; + +// Build the body of the JSON message +var body = '{"n1":'; +body = body + document.getElementById("num1").value + ',"n2":'; +body = body + document.getElementById("num2").value + '}'; + +// Send the HTTP request +xmlHttp.open("POST", url, true); +xmlHttp.setRequestHeader("Content-type", "application/json"); +xmlHttp.send(body); +``` + + サービスが応答すると、応答はこれ以上の処理を行わずにページ上のテキスト ボックスに表示されます。これは、使用される XML および JSON データ形式を直接確認できるように、デモンストレーションの目的で実装されています。 + +``` +// Create result handler +xmlHttp.onreadystatechange=function(){ + if(xmlHttp.readyState == 4){ + document.getElementById("result").value = xmlHttp.responseText; + } +} +``` + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\AJAX\XmlAjaxService` + +#### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. 「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従って、ソリューション XmlAjaxService.sln をビルドします。 + +3. http:\/\/localhost\/ServiceModelSamples\/XmlAjaxClientPage.htm に移動します \(プロジェクト ディレクトリからブラウザで XmlAjaxClientPage.htm を開かないでください\)。 + +## 参照 + [HTTP POST を使用する AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-using-http-post.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/ajax-service-without-configuration.md b/docs/framework/wcf/samples/ajax-service-without-configuration.md new file mode 100644 index 00000000000..e5b8a0b61ed --- /dev/null +++ b/docs/framework/wcf/samples/ajax-service-without-configuration.md @@ -0,0 +1,62 @@ +--- +title: "構成を使用しない AJAX サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e6db7acd-5679-45d4-b98a-8449c6873838 +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# 構成を使用しない AJAX サービス +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用して、構成設定を使用せずに基本的な ASP.NET AJAX \(Asynchronous JavaScript and XML\) サービス \(Web ブラウザー クライアントから JavaScript コードを使用してアクセスできるサービス\) を作成する方法を示します。 このサービスは .svc ファイルの特殊な構文を使用して AJAX エンドポイントを自動的に有効にします。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での AJAX サポートは、`ScriptManager` コントロールを介して ASP.NET AJAX と共に使用できるように最適化されています。 ASP.NET AJAX と共に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用する例については、「[Ajax Samples](http://msdn.microsoft.com/ja-jp/f3fa45b3-44d5-4926-8cc4-a13c30a3bf3e)」を参照してください。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルは、HTTP POST を使用した AJAX サービスに基づいています。 [基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md) サンプルで説明したように、 を使用してサービスをホストします。 + +``` +<%ServiceHost + language=c# + Debug="true" + Service="Microsoft.Ajax.Samples.CalculatorService + Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" +%> + +``` + + は、 をサービスに自動的に追加します。 エンドポイントに対する構成変更が不要な場合、\ セクションはサービスの Web.config ファイルから完全に削除できます。 Web.config ファイルには、ConfigFreeClientPage.aspx で使用される ASP.NET 設定がいくつか含まれます。 そうでない場合は、Web.config ファイル全体を削除できます。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Ajax\ConfigFreeAjaxService` + +#### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」のセットアップ手順を実行します。 + +2. 「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従って、ソリューション ConfigFreeAjaxService.sln をビルドします。 + +3. http:\/\/localhost\/ServiceModelSamples\/ConfigFreeClientPage.aspx に移動します \(プロジェクト ディレクトリからブラウザーで ConfigFreeClientPage.aspx を開かないでください\)。 + +> [!NOTE] +> このサンプルを実行する場合、IIS の ServiceModelSamples フォルダーで匿名認証と Windows 認証が同時に有効になっていないことを確認してください。 有効になっている場合は、Windows 認証を無効にしてください。 サンプルの実行が終了したら、Windows 認証を有効にし、"iisreset" を実行します。 + +## 参照 + [基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/ajax.md b/docs/framework/wcf/samples/ajax.md new file mode 100644 index 00000000000..d87223c19e4 --- /dev/null +++ b/docs/framework/wcf/samples/ajax.md @@ -0,0 +1,42 @@ +--- +title: "AJAX | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9e0eb40a-69ef-4821-bdc3-45a9b71a58c3 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# AJAX +このセクションには、AJAX \(Asynchronous JavaScript and XML\) の機能を示すサンプルが含まれています。 + +## このセクションの内容 + [JSONP](../../../../docs/framework/wcf/samples/jsonp.md) + WCF REST サービスの JSONP \(JSON with Padding\) をサポートする方法を示します。 + + [JSON シリアル化](../../../../docs/framework/wcf/samples/json-serialization.md) + を使用して JSON \(JavaScript Object Notation\) 形式のデータをシリアル化および逆シリアル化する方法を示します。 + + [基本的な AJAX サービス](../../../../docs/framework/wcf/samples/basic-ajax-service.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、基本的な ASP.NET AJAX \(Asynchronous JavaScript and XML\) サービスを作成する方法を示します。 + + [HTTP POST を使用する AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-using-http-post.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、HTTP POST を使用する [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] AJAX \(Asynchronous JavaScript and XML\) サービスを作成する方法を示します。 + + [構成を使用しない AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-without-configuration.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、基本的な ASP.NET AJAX \(Asynchronous JavaScript and XML\) サービスを作成する方法を示します。 + + [複合型を使用した AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-using-complex-types-sample.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、複合型のインスタンスを作成する ASP.NET AJAX \(Asynchronous JavaScript and XML\) サービスを作成する方法を示します。 + + [JSON および XML 形式の AJAX サービス](../../../../docs/framework/wcf/samples/ajax-service-with-json-and-xml-sample.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、JSON \(JavaScript Object Notation\) データまたは XML データを返す AJAX \(Asynchronous JavaScript and XML\) サービスを作成する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/announcements-sample.md b/docs/framework/wcf/samples/announcements-sample.md new file mode 100644 index 00000000000..7713e31c588 --- /dev/null +++ b/docs/framework/wcf/samples/announcements-sample.md @@ -0,0 +1,97 @@ +--- +title: "アナウンスのサンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 954a75e4-9a97-41d6-94fc-43765d4205a9 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# アナウンスのサンプル +このサンプルでは、探索機能のアナウンス機能を使用する方法を示します。アナウンス機能を使用すると、サービスに関するメタデータを含むアナウンス メッセージをサービスから送信できます。既定では、サービスが開始されたときに Hello アナウンスが送信され、サービスがシャットダウンされたときに Bye アナウンスが送信されます。これらのアナウンスは、マルチキャストすることも、Point\-to\-Point 送信することもできます。このサンプルは、2 つのプロジェクト \(サービスとクライアント\) で構成されます。 + +## サービス + このプロジェクトには、自己ホスト型の電卓サービスが含まれています。`Main` メソッドでは、サービス ホストが作成され、それにサービス エンドポイントが追加されます。次に、 が作成されます。アナウンスを有効にする場合は、アナウンス エンドポイントを に追加する必要があります。この場合、UDP マルチキャストを使用して、標準エンドポイントをアナウンス エンドポイントとして追加します。これにより、既知の UDP アドレスからアナウンスがブロードキャストされます。 + +``` +Uri baseAddress = new Uri("http://localhost:8000/" + Guid.NewGuid().ToString()); + +// Create a ServiceHost for the CalculatorService type. +using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress)) +{ + serviceHost.AddServiceEndpoint(typeof(ICalculatorService), new WSHttpBinding(), String.Empty); + + ServiceDiscoveryBehavior serviceDiscoveryBehavior = new ServiceDiscoveryBehavior(); + + // Announce the availability of the service over UDP multicast + serviceDiscoveryBehavior.AnnouncementEndpoints.Add(new UdpAnnouncementEndpoint()); + + // Make the service discoverable over UDP multicast. + serviceHost.Description.Behaviors.Add(serviceDiscoveryBehavior); + serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint()); + serviceHost.Open(); + // ... +} +``` + +## クライアント + このプロジェクトでは、クライアントが をホストすることに注意してください。また、2 つのデリゲートがイベントに登録されます。これらのイベントにより、オンラインおよびオフラインのアナウンスを受信したときのクライアントの処理が決定されます。 + +``` +// Create an AnnouncementService instance +AnnouncementService announcementService = new AnnouncementService(); + +// Subscribe the announcement events +announcementService.OnlineAnnouncementReceived += OnOnlineEvent; +announcementService.OfflineAnnouncementReceived += OnOfflineEvent; +``` + + `OnOnlineEvent` メソッドと `OnOfflineEvent` メソッドはそれぞれ、Hello アナウンス メッセージと Bye アナウンス メッセージを処理します。 + +``` +static void OnOnlineEvent(object sender, AnnouncementEventArgs e) +{ + Console.WriteLine(); + Console.WriteLine("Received an online announcement from {0}:", e.AnnouncementMessage.EndpointDiscoveryMetadata.Address); +PrintEndpointDiscoveryMetadata(e.AnnouncementMessage.EndpointDiscoveryMetadata); +} + +static void OnOfflineEvent(object sender, AnnouncementEventArgs e) +{ + Console.WriteLine(); + Console.WriteLine("Received an offline announcement from {0}:", e.AnnouncementMessage.EndpointDiscoveryMetadata.Address); + PrintEndpointDiscoveryMetadata(e.AnnouncementMessage.EndpointDiscoveryMetadata); +} +``` + +#### このサンプルを使用するには + +1. このサンプルでは HTTP エンドポイントを使用します。このサンプルを実行するには、適切な URL ACL を追加する必要があります \(詳細については、「[HTTP および HTTPS の構成](http://go.microsoft.com/fwlink/?LinkId=70353)」を参照してください\)。管理特権で次のコマンドを実行すると、適切な ACL が追加されます。そのままではコマンドが動作しない場合は、代わりに、ドメインとユーザー名を引数に指定して実行してみてください。`netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%` + +2. ソリューションをビルドします。 + +3. client.exe アプリケーションを実行します。 + +4. service.exe アプリケーションを実行します。クライアントは、オンライン アナウンスを受信します。 + +5. service.exe アプリケーションを終了します。クライアントは、オフライン アナウンスを受信します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Discovery\Announcements` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/asmx-client-with-a-wcf-service.md b/docs/framework/wcf/samples/asmx-client-with-a-wcf-service.md new file mode 100644 index 00000000000..474156cf117 --- /dev/null +++ b/docs/framework/wcf/samples/asmx-client-with-a-wcf-service.md @@ -0,0 +1,166 @@ +--- +title: "WCF サービス付き ASMX クライアント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3ea381ee-ac7d-4d62-8c6c-12dc3650879f +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# WCF サービス付き ASMX クライアント +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用してサービスを作成し、ASMX クライアントなどの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 以外のクライアントからこのサービスにアクセスする方法を示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルは、クライアント コンソール プログラム \(.exe\) と、インターネット インフォメーション サービス \(IIS\) によってホストされるサービス ライブラリ \(.dll\) で構成されています。サービスは、要求\/応答通信パターンを定義するコントラクトを実装します。このコントラクトは `ICalculator` インターフェイスによって定義されており、算術演算 \(`Add`、`Subtract`、`Multiply`、`Divide`\) を公開しています。ASMX クライアントは算術演算を同期要求し、サービスは結果を添えて応答します。 + + サービスは、次に示すコードで定義される `ICalculator` コントラクトを実装します。 + +``` +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"), XmlSerializerFormat] +public interface ICalculator +{ + [OperationContract] + double Add(double n1, double n2); + [OperationContract] + double Subtract(double n1, double n2); + [OperationContract] + double Multiply(double n1, double n2); + [OperationContract] + double Divide(double n1, double n2); +} + +``` + + は、CLR 型を XML 表現にマップします。 は一部の XML 表現を、XmlSerializer とは異なる方法で解釈します。XmlSerializer を使用する場合、Wsdl.exe などの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 以外のプロキシ ジェネレータでは、より使いやすいインターフェイスが生成されます。 が `ICalculator` インターフェイスに適用され、CLR 型を XML へマップする際に確実に XmlSerializer を使用します。このサービス実装は、計算を行い、結果を返します。 + + サービスは、そのサービスとの通信に使用する単一エンドポイントを公開します。エンドポイントは構成ファイル \(Web.config\) で定義します。エンドポイントは、アドレス、バインディング、およびコントラクトがそれぞれ 1 つずつで構成されます。サービスは、インターネット インフォメーション サービス \(IIS\) ホストから提供されるベース アドレスで、エンドポイントを公開します。`binding` 属性は basicHttpBinding に設定されます。これにより、WS\-I Basic Profile 1.1 に準拠した SOAP 1.1 を使用する HTTP 通信を実現します。次のサンプル構成を参照してください。 + +``` + + + + + + + +``` + + ASMX クライアントは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスとの通信に、Web サービス記述言語 \(WSDL\) ユーティリティ \(Wsdl.exe\) によって生成された、型指定のあるプロキシを使用します。型指定のあるプロキシは、ファイル generatedClient.cs に含まれています。WSDL ユーティリティは、指定されたサービスが使用するメタデータを取得し、クライアントが通信に使用する型指定のあるプロキシを生成します。既定では、フレームワークはメタデータを公開しません。プロキシの生成に必要なメタデータを公開するには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicemetadata.md)を追加し、その `httpGetEnabled` 属性を `True` に設定する必要があります。次の構成を参照してください。 + +``` + + + + + + + + + +``` + + 次のコマンドをクライアント ディレクトリでコマンド プロンプトから実行して、型指定のあるプロキシを生成します。 + +``` +wsdl /n:Microsoft.ServiceModel.Samples /o:generatedClient.cs /urlkey:CalculatorServiceAddress http://localhost/servicemodelsamples/service.svc?wsdl + +``` + + 生成された型指定のあるプロキシを使用することにより、クライアントは適切なアドレスを構成して、指定のサービス エンドポイントにアクセスできます。クライアントは構成ファイル \(App.config\) を使用して、通信するエンドポイントを指定します。 + +``` + + + + +``` + + クライアント実装は型指定のあるプロキシのインスタンスを構築し、サービスとの通信を開始します。 + +``` +// Create a client to the CalculatorService. +using (CalculatorService client = new CalculatorService()) +{ + // Call the Add service operation. + double value1 = 100.00D; + double value2 = 15.99D; + double result = client.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + + // Call the Subtract service operation. + value1 = 145.00D; + value2 = 76.54D; + result = client.Subtract(value1, value2); + Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); + + // Call the Multiply service operation. + value1 = 9.00D; + value2 = 81.25D; + result = client.Multiply(value1, value2); + Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); + + // Call the Divide service operation. + value1 = 22.00D; + value2 = 7.00D; + result = client.Divide(value1, value2); + Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); + +} + +Console.WriteLine(); +Console.WriteLine("Press to terminate client."); +Console.ReadLine(); + +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. + +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!NOTE] +> 複合データ型の受け渡しおよび返却[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[Windows フォーム クライアントのデータ バインディング](../../../../docs/framework/wcf/samples/data-binding-in-a-windows-forms-client.md)」、「[Windows Presentation Foundation クライアントでのデータ バインディング](../../../../docs/framework/wcf/samples/data-binding-in-a-wpf-client.md)」、および「[ASP.NET クライアントでのデータ バインディング](../../../../docs/framework/wcf/samples/data-binding-in-an-aspnet-client.md)」を参照してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Interop\ASMX` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/aspnet-caching-integration.md b/docs/framework/wcf/samples/aspnet-caching-integration.md new file mode 100644 index 00000000000..a609607feb9 --- /dev/null +++ b/docs/framework/wcf/samples/aspnet-caching-integration.md @@ -0,0 +1,72 @@ +--- +title: "ASP.NET キャッシュ統合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f581923a-8a72-42fc-bd6a-46de2aaeecc1 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# ASP.NET キャッシュ統合 +このサンプルでは、WCF WEB HTTP プログラミング モデルで ASP.NET 出力キャッシュを利用する方法を示します。 このシナリオの自己ホスト バージョンについては、「[基本的なリソース サービス](../../../../docs/framework/wcf/samples/basic-resource-service.md)」のサンプルを参照してください。サービスの実装について詳しく説明されています。 ここでは、ASP.NET 出力キャッシュ統合機能について集中的に説明します。 + +## 使用例 + ASP.NET 出力キャッシュとの統合 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Web\AspNetCachingIntegration` + +## 説明 + このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスで ASP.NET 出力キャッシュを利用するために、 を使用します。 は、サービス操作に適用される属性で、特定の操作からの応答に適用する構成ファイル内のキャッシュ プロファイルの名前を指定します。 + + このサンプルの Service プロジェクトの Service.cs ファイルでは、`GetCustomer` 操作と `GetCustomers` 操作がどちらも でマークされ、キャッシュ プロファイル名として "CacheFor60Seconds" が指定されています。 キャッシュ プロファイル "CacheFor60Seconds" は、Service プロジェクトの Web.config ファイルで、\<`system.web`\> の \<`caching`\> 要素の下で定義されています。 このキャッシュ プロファイルの `duration` 属性の値は "60" であるため、このプロファイルに関連付けられた応答は、ASP.NET 出力キャッシュに 60 秒間キャッシュされます。 また、このキャッシュ プロファイルの `varmByParam` 属性が "format" に設定されているため、`format` クエリ文字列パラメーターの値が異なる要求の応答は別々にキャッシュされます。 さらに、キャッシュ プロファイルの `varyByHeader` 属性が "Accept" に設定されているため、Accept ヘッダーの値が異なる要求の応答は別々にキャッシュされます。 + + Client プロジェクトの Program.cs では、 を使用してこのようなクライアントを作成する方法を示します。 これは、WCF サービスにアクセスする 1 つの方法にすぎません。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネル ファクトリや などの他の .NET Framework クラスを使用して、サービスにアクセスすることも可能です。 SDK 内の他のサンプル \(「[基本的な HTTP サービス](../../../../docs/framework/wcf/samples/basic-http-service.md)」のサンプルや「[形式の自動選択](../../../../docs/framework/wcf/samples/automatic-format-selection.md)」のサンプルなど\) では、これらのクラスを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと通信する方法を示します。 + +## サンプルを実行するには + このサンプルは、3 つのプロジェクトで構成されます。 + +- **Service**: ASP.NET でホストされる WCF HTTP サービスを含む Web アプリケーション プロジェクト。 + +- **Client**: サービスを呼び出すコンソール アプリケーション プロジェクト。 + +- **Common**: クライアントとサービスによって使用される Customer 型を含む共有ライブラリ。 + + クライアント コンソール アプリケーションが実行されると、クライアントはサービスに要求を発行し、応答からの適切な情報をコンソール ウィンドウに書き込みます。 + +#### サンプルを実行するには + +1. ASP.NET キャッシュ統合サンプルのソリューションを開きます。 + +2. Ctrl キーと Shift キーを押しながら B キーを押して、ソリューションをビルドします。 + +3. **ソリューション エクスプローラー** ウィンドウがまだ開いていない場合は、Ctrl キーを押しながら W キーと S キーを押します。 + +4. **ソリューション エクスプローラー** ウィンドウで、**Service** プロジェクトを右クリックし、**\[新しいインスタンスを開始\]** をクリックします。 これで、サービスをホストする ASP.NET 開発サーバーが起動します。 + +5. **ソリューション エクスプローラー** ウィンドウで、**Client** プロジェクトを右クリックし、**\[新しいインスタンスを開始\]** をクリックします。 + +6. クライアント コンソール ウィンドウが表示されて、実行中のサービスの URI および実行中のサービスの HTML ヘルプ ページの URI が示されます。 ブラウザーでヘルプ ページの URI を入力することで、いつでも HTML ヘルプ ページを表示することができます。 + +7. サンプルが実行されると、クライアントは現在のアクティビティのステータスを書き込みます。 + +8. クライアント コンソール アプリケーションを終了するには、任意のキーを押します。 + +9. サービスのデバッグを停止するには、Shift キーを押しながら F5 キーを押します。 + +10. Windows の通知領域で、ASP.NET 開発サーバーのアイコンを右クリックし、**\[停止\]** を選択します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/aspnet-compatibility.md b/docs/framework/wcf/samples/aspnet-compatibility.md new file mode 100644 index 00000000000..bcb4356f8bf --- /dev/null +++ b/docs/framework/wcf/samples/aspnet-compatibility.md @@ -0,0 +1,139 @@ +--- +title: "ASP.NET 互換性 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c8b51f1e-c096-4c42-ad99-0519887bbbc5 +caps.latest.revision: 25 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 25 +--- +# ASP.NET 互換性 +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] で [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 互換性モードを有効にする方法を示します。 [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 互換性モードで実行されるサービスは [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] アプリケーション パイプラインに完全に組み込まれるので、ファイルや URL の承認、セッション状態、 クラスなどの [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] の機能を使用できるようになります。 クラスを使用すると、クッキー、セッション、およびその他の [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 機能にアクセスできます。 このモードでは、バインディングは HTTP トランスポートを使用し、サービス自体は IIS でホストされる必要があります。 + + このサンプルでは、クライアントはコンソール アプリケーション \(.exe\) で、サービスはインターネット インフォメーション サービス \(IIS\) によってホストされています。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +> [!NOTE] +> このサンプルを実行するには、[!INCLUDE[netfx40_long](../../../../includes/netfx40-long-md.md)] アプリケーション プールが必要です。 新しいアプリケーション プールの作成または既定のアプリケーション プールの変更を行うには、次の手順に従います。 +> +> 1. **コントロール パネル**を開きます。 **\[システムとセキュリティ\]** 見出しの下にある **\[管理ツール\]** アプレットを開きます。 **\[インターネット インフォメーション サービス \(IIS\) マネージャー\]** アプレットを開きます。 +> 2. **\[接続\]** ペインのツリー ビューを展開します。 **\[アプリケーション プール\]** ノードをクリックします。 +> 3. 既定のアプリケーション プールで [!INCLUDE[netfx40_long](../../../../includes/netfx40-long-md.md)] を使用するように設定する \(既存のサイトとの非互換性の問題が発生する可能性があります\) には、**DefaultAppPool** リスト項目を右クリックして **\[基本設定\]** をクリックします。 **\[.Net Framework バージョン\]** プルダウンを **\[.Net Framework v4.0.30128\]** \(またはそれ以降\) に設定します。 +> 4. [!INCLUDE[netfx40_long](../../../../includes/netfx40-long-md.md)] を使用する新しいアプリケーション プールを作成する \(他のアプリケーションの互換性を保持する\) には、**\[アプリケーション プール\]** ノードを右クリックして **\[アプリケーション プールの追加\]** をクリックします。 新しいアプリケーション プールに名前を付けて、**\[.Net Framework バージョン\]** プルダウンを **\[.Net Framework v4.0.30128\]** \(またはそれ以降\) に設定します。 以下のセットアップ手順を実行した後で、**ServiceModelSamples** アプリケーションを右クリックし、**\[アプリケーションの管理\]**、**\[詳細設定…\]** の順にクリックします。 **\[アプリケーション プール\]** を新しいアプリケーション プールに設定します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Hosting\WebHost\ASPNetCompatibility` + + このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 `ICalculator` コントラクトは、一連の算術演算を実行して実行結果を保持できるように `ICalculatorSession` コントラクトに変更されました。 + +``` +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public interface ICalculatorSession +{ + [OperationContract] + void Clear(); + [OperationContract] + void AddTo(double n); + [OperationContract] + void SubtractFrom(double n); + [OperationContract] + void MultiplyBy(double n); + [OperationContract] + void DivideBy(double n); + [OperationContract] + double Result(); +} + +``` + + サービスはこの機能を使用して、複数のサービス操作が呼び出されて計算を実行する際に、各クライアントの状態を保持します。 クライアントは `Result` を呼び出して現在の結果を取得したり、`Clear` を呼び出してその結果をクリアし、0 にすることができます。 + + このサービスは [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] セッションを使用して、各クライアント セッションの結果を保持します。 これにより、サービスは、サービスへの複数の呼び出しによる各クライアントの実行結果を保持できます。 + +> [!NOTE] +> [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] セッション状態と [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セッションとでは、大きく異なります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セッションの詳細については、「[セッション](../../../../docs/framework/wcf/samples/session.md)」を参照してください。 + + サービスは [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] セッション状態と密接な依存関係にあるので、正常に機能させるには [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 互換性モードが必要です。 これらの要件は、`AspNetCompatibilityRequirements` 属性を適用することにより宣言によって表されます。 + +``` +[AspNetCompatibilityRequirements(RequirementsMode = + AspNetCompatibilityRequirementsMode.Required)] +public class CalculatorService : ICalculatorSession +{ + double Result + { // store result in AspNet Session + get { + if (HttpContext.Current.Session["Result"] != null) + return (double)HttpContext.Current.Session["Result"]; + return 0.0D; + } + set + { + HttpContext.Current.Session["Result"] = value; + } + } + public void Clear() + { + Result = 0.0D; + } + public void AddTo(double n) + { + Result += n; + } + public void SubtractFrom(double n) + { + Result -= n; + } + public void MultiplyBy(double n) + { + Result *= n; + } + public void DivideBy(double n) + { + Result /= n; + } + public double Result() + { + return Result; + } +} +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` + +0, + 100, - 50, * 17.65, / 2 = 441.25 +Press to terminate client. + +``` + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. ソリューションがビルドされたら、Setup.bat を実行し、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] で ServiceModelSamples アプリケーションを設定します。 ServiceModelSamples ディレクトリは、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] アプリケーションとして表示されます。 + +4. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## 参照 + [AppFabric のホストおよび永続化のサンプル](http://go.microsoft.com/fwlink/?LinkId=193961) \ No newline at end of file diff --git a/docs/framework/wcf/samples/aspnetrouteintegration.md b/docs/framework/wcf/samples/aspnetrouteintegration.md new file mode 100644 index 00000000000..e8d8358a185 --- /dev/null +++ b/docs/framework/wcf/samples/aspnetrouteintegration.md @@ -0,0 +1,71 @@ +--- +title: "AspNetRouteIntegration | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0638ce0e-d053-47df-a447-688e447a03fb +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# AspNetRouteIntegration +このサンプルでは、ASP.NET ルートを使用して [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] REST サービスをホストする方法を示します。「[基本的なリソース サービス](../../../../docs/framework/wcf/samples/basic-resource-service.md)」のサンプルでは、このシナリオの自己ホスト バージョンを示し、サービスの実装について詳しく説明しています。ここでは、ASP.NET 統合機能について集中的に説明します。ASP.NET ルーティング[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「」を参照してください。 + +## サンプルの詳細 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでは、リソース指向の REST 方式で顧客のコレクションが公開されます。このサービスは、SOAP ベースの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと同様に、.svc ファイルを使用して ASP.NET でホストできます。ただし、多くの場合、これは HTTP シナリオには適していません。サービスの URL に .svc を含める必要があるためです。また、サービス ライブラリと共に .svc ファイルを配置することも必要です。これらの制限事項を回避するには、このサンプルで示すように、ASP.NET ルートを使用してサービスをホストします。 + + このサンプルでは、 を Global.asax ファイルに追加して ASP.NET でサービスをホストします。 は、サービスの型 \(この場合は "Service"\)、サービスに使用するサービス ホスト ファクトリの型 \(この場合は \)、およびサービスの HTTP ベース アドレス \(この場合は "~\/Customers"\) を指定します。 + + さらに、このサンプルには、 \(ASP.NET ルートを有効にする\) を追加してサービスの構成を行う Web.config が含まれています。具体的には、 が `true` に設定されている既定の を使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを構成します。その結果、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャによって、自動的な HTML ベースのヘルプ ページが `http://localhost/Customers/help` に作成されます。このページでは、サービスに対する HTTP 要求の作成方法とサービスの HTTP 応答へのアクセス方法に関する情報 \(顧客の詳細を XML と JSON で表す方法の例など\) が提供されます。 + + 顧客のコレクション \(一般的には、任意のリソース\) をこの方法で公開すると、クライアントは、URI と HTTP の `GET`、`PUT`、`DELETE`、および `POST` を使用して一貫した方法でサービスと対話することができます。 + + Client プロジェクトの Program.cs では、 を使用してこのようなクライアントを作成する方法を示します。これは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスにアクセスする 1 つの方法にすぎません。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネル ファクトリや などの他の .NET Framework クラスを使用して、サービスにアクセスすることも可能です。SDK 内の他のサンプル \(「[基本的な HTTP サービス](../../../../docs/framework/wcf/samples/basic-http-service.md)」のサンプルや「[形式の自動選択](../../../../docs/framework/wcf/samples/automatic-format-selection.md)」のサンプルなど\) では、これらのクラスを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと通信する方法を示します。 + + このサンプルは、3 つのプロジェクトで構成されます。 + + Service + ASP.NET でホストされる WCF HTTP サービスを含む Web アプリケーション プロジェクト。 + + Client + サービスを呼び出すコンソール アプリケーション プロジェクト。 + + Common + クライアントとサービスによって使用される `Customer` 型を含む共有ライブラリ。クライアント コンソール アプリケーションが実行されると、クライアントはサービスに要求を発行し、応答からの適切な情報をコンソール ウィンドウに書き込みます。 + +#### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] で、ASP.NET ルート統合サンプルのソリューションを開きます。 + +2. Ctrl キーと Shift キーを押しながら B キーを押して、ソリューションをビルドします。 + +3. まだ開いていない場合は、Ctrl キーを押しながら W キーと S キーを押して、**ソリューション エクスプローラー** ウィンドウを開きます。 + +4. **ソリューション エクスプローラー** ウィンドウで **Service** プロジェクトを右クリックして **\[デバッグ\]** コンテキスト メニュー オプションの上にカーソルを置き、**\[新しいインスタンスを開始\]** コンテキスト メニューを表示します。**\[新しいインスタンスを開始\]** をクリックします。これで、サービスをホストする ASP.NET 開発サーバーが起動します。 + +5. **ソリューション エクスプローラー** ウィンドウで **Client** プロジェクトを右クリックして **\[デバッグ\]** コンテキスト メニュー オプションの上にカーソルを置き、**\[新しいインスタンスを開始\]** コンテキスト メニューを表示します。**\[新しいインスタンスを開始\]** をクリックします。 + +6. クライアント コンソール ウィンドウが表示されて、実行中のサービスの URI および実行中のサービスの HTML ヘルプ ページの URI が示されます。ブラウザーでヘルプ ページの URI を入力することで、いつでも HTML ヘルプ ページを表示することができます。サンプルが実行されると、クライアントは現在のアクティビティのステータスを書き込みます。 + +7. クライアント コンソール アプリケーションを終了するには、任意のキーを押します。 + +8. サービスのデバッグを停止するには、Shift キーを押しながら F5 キーを押します。Windows の通知領域で、ASP.NET 開発サーバーのアイコンを右クリックし、コンテキスト メニューの **\[停止\]** を選択します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Web\AspNetRouteIntegration` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/asynchronous-find-sample.md b/docs/framework/wcf/samples/asynchronous-find-sample.md new file mode 100644 index 00000000000..cc335d8e0ab --- /dev/null +++ b/docs/framework/wcf/samples/asynchronous-find-sample.md @@ -0,0 +1,49 @@ +--- +title: "非同期検索のサンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7a713a25-c1f4-42e1-8c4a-93d64ca45a3b +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# 非同期検索のサンプル +このサンプルでは、クライアント アプリケーションで非同期の検索操作を使用する方法を示します。 + +## サンプルの詳細 + 次のデザイン パターンの利点は、検索要求の結果として配置されたエンドポイントがクライアントに対して非同期に通知されることです。このしくみを確認するには、Client.cs ファイルを開いてください。 オブジェクトには、そのイベント ハンドラーにアタッチされるデリゲートが 2 つあることに注意してください。1 つは イベントの発生時に呼び出され、もう 1 つは イベントが発生するたびに呼び出されます。このサンプルでは、アプリケーションでこのパターンを使用する方法について説明します。 + +> [!NOTE] +> このサンプルでは HTTP エンドポイントを使用します。サンプルを実行するには、適切な URL ACL を追加する必要があります。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][HTTP および HTTPS の構成](../../../../docs/framework/wcf/feature-details/configuring-http-and-https.md).管理特権で次のコマンドを実行すると、適切な ACL が追加されます。そのままではコマンドが動作しない場合は、代わりに、ドメインとユーザー名を引数に指定して実行してみてください。`netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%` + +#### サンプルを設定、ビルド、および実行するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] で、AsyncFind.sln を開きます。 + +2. Ctrl キーと Shift キーを押しながら B キーを押して、ソリューションをビルドします。 + +3. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプトを開き、\\WCF\\Basic\\Discovery\\AsyncFind\\CS\\service\\bin\\Debug ディレクトリまたは \\WCF\\Basic\\Discovery\\AsyncFind\\VB\\service\\bin\\Debug ディレクトリに移動して、Service.exe を実行します。 + +4. サービスが開始したら、\\WCF\\Basic\\Discovery\\AsyncFind\\CS\\client\\bin\\Debug ディレクトリまたは WCF\\Basic\\Discovery\\AsyncFind\\VB\\client\\bin\\Debug ディレクトリに移動して、Client.exe を実行します。 + +5. クライアントでサービスを検索して呼び出せることを確認します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Discovery\AsyncFind` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/authorization-policy.md b/docs/framework/wcf/samples/authorization-policy.md new file mode 100644 index 00000000000..1367aac07cd --- /dev/null +++ b/docs/framework/wcf/samples/authorization-policy.md @@ -0,0 +1,519 @@ +--- +title: "承認ポリシー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1db325ec-85be-47d0-8b6e-3ba2fdf3dda0 +caps.latest.revision: 38 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 38 +--- +# 承認ポリシー +このサンプルでは、カスタム クレーム承認ポリシーと、関連するカスタム サービス承認マネージャーを実装する方法を示します。この方法は、サービスがクレームに基づくアクセス チェックをサービス操作に行う場合や、アクセス チェックを行う前に呼び出し元に特定の権限を与える場合に便利です。このサンプルでは、クレームの追加プロセスと、完了したクレーム セットに対してアクセス チェックを行うプロセスの両方を示します。クライアント\/サーバー間のすべてのアプリケーション メッセージは署名され、暗号化されます。`wsHttpBinding` バインディングを使用する際の既定では、クライアントによって提供されるユーザー名とパスワードが、有効な Windows NT アカウントへのログオンに使用されます。このサンプルでは、カスタム を使用してクライアントを認証する方法を示します。さらにこのサンプルでは、クライアントが X.509 証明書を使用してサービスを認証する方法を示します。また、 の実装も示します。これらの間では、特定のユーザーに対するサービスの特定のメソッドへのアクセスが許可されます。このサンプルは、「[メッセージ セキュリティ ユーザー名](../../../../docs/framework/wcf/samples/message-security-user-name.md)」に基づいていますが、 が呼び出される前にクレームの変換を実行する方法を示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルで示す処理の概要は次のとおりです。 + +- クライアントはユーザー名とパスワードを使用して認証される。 + +- クライアントは X.509 証明書を使用して認証される。 + +- サーバーはクライアント資格情報をカスタム `UsernamePassword` 検証と照合する。 + +- サーバーがそのサーバーの X.509 証明書を使用して認証される。 + +- サーバーが を使用して、サービス内の特定メソッドへのアクセスを制御する。 + +- の実装方法。 + + サービスは、そのサービスとの通信に使用する 2 つのエンドポイントを公開します。エンドポイントは構成ファイル App.config で定義します。各エンドポイントは、アドレス、バインディング、およびコントラクトがそれぞれ 1 つずつで構成されます。1 つのバインディングの構成には、WS\-Security とクライアントのユーザー名認証を使用する、標準の `wsHttpBinding` バインディングが使用されます。もう 1 つのバインディングの構成には、WS\-Security とクライアント証明書による認証を使用する、標準の `wsHttpBinding` バインディングが使用されます。[\](../../../../docs/framework/configure-apps/file-schema/wcf/behavior-of-endpointbehaviors.md)により、サービス認証にユーザーの資格情報を使用することが指定されます。サーバー証明書の `SubjectName` プロパティには、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md) の `findValue` 属性と同じ値が指定されている必要があります。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + 各クライアント エンドポイント構成は、構成名、サービス エンドポイントの絶対アドレス、バインディング、およびコントラクトで構成されます。クライアント バインディングは、この場合に [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-wshttpbinding.md)で指定されている適切なセキュリティ モードと、[\](../../../../docs/framework/configure-apps/file-schema/wcf/message-of-wshttpbinding.md)で指定されている `clientCredentialType` で構成されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + ユーザー名に基づくエンドポイントには、使用するユーザー名とパスワードがクライアント実装で設定されます。 + +``` +// Create a client with Username endpoint configuration +CalculatorClient client1 = new CalculatorClient("Username"); + +client1.ClientCredentials.UserName.UserName = "test1"; +client1.ClientCredentials.UserName.Password = "1tset"; + +try +{ + // Call the Add service operation. + double value1 = 100.00D; + double value2 = 15.99D; + double result = client1.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + ... +} +catch (Exception e) +{ + Console.WriteLine("Call failed : {0}", e.Message); +} + +client1.Close(); + +``` + + 証明書に基づくエンドポイントには、使用するクライアント証明書がクライアント実装で設定されます。 + +``` +// Create a client with Certificate endpoint configuration +CalculatorClient client2 = new CalculatorClient("Certificate"); + +client2.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "test1"); + +try +{ + // Call the Add service operation. + double value1 = 100.00D; + double value2 = 15.99D; + double result = client2.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + ... +} +catch (Exception e) +{ + Console.WriteLine("Call failed : {0}", e.Message); +} + +client2.Close(); + +``` + + このサンプルでは、カスタム を使用してユーザー名とパスワードを検証します。サンプルは、 から派生する `MyCustomUserNamePasswordValidator` を実装しています。 の詳細については、ドキュメントを参照してください。 との統合を示すため、カスタム検証のこのサンプルでは次のコード例に示すように、 メソッドを実装して、ユーザー名がパスワードと一致するユーザー名とパスワードの組み合わせを許可します。 + +``` +public class MyCustomUserNamePasswordValidator : UserNamePasswordValidator +{ + // This method validates users. It allows in two users, + // test1 and test2 with passwords 1tset and 2tset respectively. + // This code is for illustration purposes only and + // MUST NOT be used in a production environment because it + // is NOT secure. + public override void Validate(string userName, string password) + { + if (null == userName || null == password) + { + throw new ArgumentNullException(); + } + + if (!(userName == "test1" && password == "1tset") && !(userName == "test2" && password == "2tset")) + { + throw new SecurityTokenException("Unknown Username or Password"); + } + } +} + +``` + + サービス コードに検証を実装した場合、使用する検証インスタンスをサービス ホストに通知する必要があります。これは次のコードで実行されます。 + +``` +Servicehost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom; +serviceHost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new MyCustomUserNamePasswordValidatorProvider(); +``` + + または、構成で同じことを実現できます。 + +``` + + + + + ... + + +``` + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] には、アクセス チェックの実行を目的とした、クレームに基づく豊富なモデルがあります。 オブジェクトを使用するとアクセス チェックが実行され、クライアントに関連付けられたクレームがサービス メソッドへのアクセスに必要な要件を満たすかどうかが判断されます。 + + このサンプルでは、デモンストレーションの目的で の実装を示します。この実装は メソッドを実装し、呼び出しが許可されている操作のアクション URI を値として持つ種類のクレーム \(http:\/\/example.com\/claims\/allowedoperation\) に基づいて、メソッドへのユーザーのアクセスを許可します。 + +``` +public class MyServiceAuthorizationManager : ServiceAuthorizationManager +{ + protected override bool CheckAccessCore(OperationContext operationContext) + { + string action = operationContext.RequestContext.RequestMessage.Headers.Action; + Console.WriteLine("action: {0}", action); + foreach(ClaimSet cs in operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets) + { + if ( cs.Issuer == ClaimSet.System ) + { + foreach (Claim c in cs.FindClaims("http://example.com/claims/allowedoperation", Rights.PossessProperty)) + { + Console.WriteLine("resource: {0}", c.Resource.ToString()); + if (action == c.Resource.ToString()) + return true; + } + } + } + return false; + } +} + +``` + + カスタム を実装した場合、使用する をサービス ホストに通知する必要があります。これを行うコードは次のようになります。 + +``` + + ... + + ... + + + +``` + + 実装する主要な メソッドは、 メソッドです。 + +``` +public class MyAuthorizationPolicy : IAuthorizationPolicy +{ + string id; + + public MyAuthorizationPolicy() + { + id = Guid.NewGuid().ToString(); + } + + public bool Evaluate(EvaluationContext evaluationContext, + ref object state) + { + bool bRet = false; + CustomAuthState customstate = null; + + if (state == null) + { + customstate = new CustomAuthState(); + state = customstate; + } + else + customstate = (CustomAuthState)state; + Console.WriteLine("In Evaluate"); + if (!customstate.ClaimsAdded) + { + IList claims = new List(); + + foreach (ClaimSet cs in evaluationContext.ClaimSets) + foreach (Claim c in cs.FindClaims(ClaimTypes.Name, + Rights.PossessProperty)) + foreach (string s in + GetAllowedOpList(c.Resource.ToString())) + { + claims.Add(new + Claim("http://example.com/claims/allowedoperation", + s, Rights.PossessProperty)); + Console.WriteLine("Claim added {0}", s); + } + evaluationContext.AddClaimSet(this, + new DefaultClaimSet(this.Issuer,claims)); + customstate.ClaimsAdded = true; + bRet = true; + } + else + { + bRet = true; + } + return bRet; + } +... +} +``` + + 前のコードでは、 メソッドが、処理に影響を与える新しいクレームが追加されていないことをチェックして特定のクレームを追加する方法を示しています。許可されるクレームは `GetAllowedOpList` メソッドから取得されます。このメソッドが実装されると、ユーザーによる実行が許可されている特定の操作リストが返されます。承認ポリシーは、特定の操作にアクセスするためのクレームを追加します。このポリシーは、アクセス チェックの決定を実行する によって後で使用されます。 + + カスタム を実装した場合、使用する承認ポリシーをサービス ホストに通知する必要があります。 + +``` + + + + + + +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。クライアントでは Add、Subtract、および Multiple メソッドは正常に呼び出されますが、Divide メソッドを呼び出そうとすると、"アクセスが拒否されました" のメッセージが発生します。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +## セットアップ バッチ ファイル + このサンプルに用意されている Setup.bat バッチ ファイルを使用すると、適切な証明書を使用してサーバーを構成し、サーバー証明書ベースのセキュリティを必要とする自己ホスト型アプリケーションを実行できるようになります。 + + 次に、バッチ ファイルのセクションのうち、該当する構成で実行するために変更が必要となる部分を示します。 + +- サーバー証明書の作成。 + + Setup.bat バッチ ファイルの次の行は、使用するサーバー証明書を作成します。%SERVER\_NAME% 変数はサーバー名を指定します。この変数を変更して、使用するサーバー名を指定します。既定値は、localhost です。 + + ``` + echo ************ + echo Server cert setup starting + echo %SERVER_NAME% + echo ************ + echo making server cert + echo ************ + makecert.exe -sr LocalMachine -ss MY -a sha1 -n CN=%SERVER_NAME% -sky exchange -pe + + ``` + +- サーバー証明書のクライアントの信頼された証明書ストアへのインストール。 + + Setup.bat バッチ ファイルの次の行は、サーバー証明書をクライアントの信頼されたユーザーのストアにコピーします。この手順が必要なのは、Makecert.exe によって生成される証明書がクライアント システムにより暗黙には信頼されないからです。マイクロソフト発行の証明書など、クライアントの信頼されたルート証明書に基づいた証明書が既にある場合は、クライアント証明書ストアにサーバー証明書を配置するこの手順は不要です。 + + ``` + certmgr.exe -add -r LocalMachine -s My -c -n %SERVER_NAME% -r CurrentUser -s TrustedPeople + ``` + +- クライアント証明書の作成。 + + Setup.bat バッチ ファイルの次の行は、使用するクライアント証明書を作成します。%USER\_NAME% 変数はユーザー名を指定します。この値は "test1" に設定されます。`IAuthorizationPolicy` によってこの名前が検索されたためです。%USER\_NAME% の値を変更した場合は、`IAuthorizationPolicy.Evaluate` メソッド内の対応する値を変更する必要があります。 + + 証明書は、CurrentUser ストアの場所の My \(Personal\) ストアに保存されます。 + + ``` + echo ************ + echo making client cert + echo ************ + makecert.exe -sr CurrentUser -ss MY -a sha1 -n CN=%CLIENT_NAME% -sky exchange -pe + + ``` + +- クライアント証明書のサーバーの信頼された証明書ストアへのインストール。 + + Setup.bat バッチ ファイルの次の行は、クライアント証明書を信頼されたユーザーのストアにコピーします。この手順が必要なのは、Makecert.exe によって生成される証明書がサーバー システムにより暗黙には信頼されないからです。マイクロソフト発行の証明書など、信頼されたルート証明書に基づく証明書が既にある場合は、サーバー証明書ストアにクライアント証明書を配置するこの手順は不要です。 + + ``` + certmgr.exe -add -r CurrentUser -s My -c -n %CLIENT_NAME% -r LocalMachine -s TrustedPeople + ``` + +#### サンプルをセットアップしてビルドするには + +1. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +2. サンプルを単一コンピューター構成で実行するか、複数コンピューター構成で実行するかに応じて、次の手順に従います。 + +> [!NOTE] +> Svcutil.exe を使用してこのサンプルの構成を再生成した場合は、クライアント コードに一致するように、クライアント構成内のエンドポイント名を変更してください。 + +#### サンプルを同じコンピューターで実行するには + +1. 管理特権で [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプト ウィンドウを開き、サンプルのインストール フォルダーから Setup.bat を実行します。これにより、サンプルの実行に必要なすべての証明書がインストールされます。 + + > [!NOTE] + > Setup.bat バッチ ファイルは、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプトから実行します。[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプト内で設定された PATH 環境変数は、Setup.bat スクリプトで必要な実行可能ファイルが格納されているディレクトリを指しています。 + +2. 管理特権を使用して Visual Studio コマンド プロンプトを開き、サンプルのインストール フォルダーから Setup.bat を実行します。これにより、サンプルの実行に必要なすべての証明書がインストールされます。 + +3. Service.exe を service\\bin で起動します。 + +4. Client.exe を \\client\\bin で起動します。クライアント アクティビティがクライアントのコンソール アプリケーションに表示されます。 + +5. クライアントとサービス間で通信できない場合は、「[Troubleshooting Tips](http://msdn.microsoft.com/ja-jp/8787c877-5e96-42da-8214-fa737a38f10b)」を参照してください。 + +#### サンプルを複数のコンピューターで実行するには + +1. サービス コンピューターにディレクトリを作成します。 + +2. \\service\\bin のサービス プログラム ファイルを、サービス コンピューターのディレクトリにコピーします。Setup.bat、Cleanup.bat、GetComputerName.vbs、ImportClientCert.bat の各ファイルもサービス コンピューターにコピーします。 + +3. クライアント コンピューターにクライアント バイナリ用のディレクトリを作成します。 + +4. クライアント プログラム ファイルを、クライアント コンピューターに作成したクライアント ディレクトリにコピーします。Setup.bat、Cleanup.bat、ImportServiceCert.bat の各ファイルもクライアントにコピーします。 + +5. サーバー上で管理特権を使用して Visual Studio コマンド プロンプトを開き、`setup.bat service` を実行します。`setup.bat` に `service` 引数を指定して実行すると、コンピューターの完全修飾ドメイン名を使用してサービス証明書が作成され、Service.cer というファイルにエクスポートされます。 + +6. Service.exe.config を編集して、新しい証明書名 \([\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md) の `findValue` 属性\) を反映します。これは、コンピューターの完全修飾ドメイン名と同じです。さらに、\\/\ 要素で、コンピューター名を localhost からサービス コンピューターの完全修飾名に変更します。 + +7. Service.cer ファイルを、サービス ディレクトリからクライアント コンピューターのクライアント ディレクトリにコピーします。 + +8. クライアント上で、管理特権を使用して Visual Studio コマンド プロンプトを開き、`setup.bat client` を実行します。`setup.bat` に `client` 引数を指定して実行すると、test1 というクライアント証明書が作成され、Client.cer というファイルにエクスポートされます。 + +9. クライアント コンピューターの Client.exe.config ファイルで、エンドポイントのアドレス値をサービスの新しいアドレスに合わせます。そのためには、localhost をサーバーの完全修飾ドメイン名に置き換えます。 + +10. Client.cer ファイルを、クライアント ディレクトリからサーバーのサービス ディレクトリにコピーします。 + +11. クライアント上で、管理特権を使用して Visual Studio コマンド プロンプトを開き、ImportServiceCert.bat を実行します。これにより、サービス証明書が Service.cer ファイルから CurrentUser \- TrustedPeople ストアにインポートされます。 + +12. サーバー上で、管理特権を使用して Visual Studio コマンド プロンプトを開き、ImportClientCert.bat を実行します。これにより、クライアント証明書が Client.cer ファイルから LocalMachine \- TrustedPeople ストアにインポートされます。 + +13. サーバー コンピューターで、コマンド プロンプト ウィンドウから Service.exe を起動します。 + +14. クライアント コンピューターで、コマンド プロンプト ウィンドウから Client.exe を起動します。クライアントとサービス間で通信できない場合は、「[Troubleshooting Tips](http://msdn.microsoft.com/ja-jp/8787c877-5e96-42da-8214-fa737a38f10b)」を参照してください。 + +#### サンプルの実行後にクリーンアップするには + +1. サンプルの実行が終わったら、サンプル フォルダーにある Cleanup.bat を実行します。これにより、証明書ストアからサーバー証明書とクライアント証明書が削除されます。 + +> [!NOTE] +> このサンプルを複数のコンピューターで実行している場合、このスクリプトはサービス証明書をクライアントから削除しません。複数のコンピューターで証明書を使用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サンプルを実行した場合は、CurrentUser \- TrustedPeople ストアにインストールされたサービス証明書を忘れずに削除してください。削除するには、コマンド `certmgr -del -r CurrentUser -s TrustedPeople -c -n ` を実行します。たとえば、`certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com` となります。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/authorizing-access-to-service-operations.md b/docs/framework/wcf/samples/authorizing-access-to-service-operations.md new file mode 100644 index 00000000000..e68f14d6c0c --- /dev/null +++ b/docs/framework/wcf/samples/authorizing-access-to-service-operations.md @@ -0,0 +1,74 @@ +--- +title: "サービス操作へのアクセスの承認 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "承認, Windows Communication Foundation サンプル" + - "サービス操作へのアクセスの承認のサンプル [Windows Communication Foundation]" + - "サービスの動作, アクセスの承認のサンプル" +ms.assetid: ddcfdaa5-8b2e-4e13-bd85-887209dc6328 +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# サービス操作へのアクセスの承認 +このサンプルでは、 属性を使用できるようにする [\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md)を使用して、サービス操作へのアクセスを承認する方法を示します。 このサンプルは、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」のサンプルに基づいています。 サービスとクライアントは、[\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)を使用して構成されています。 [\](../../../../docs/framework/configure-apps/file-schema/wcf/security-of-custombinding.md)の `mode` 属性は `Message` に、`clientCredentialType` は `Windows` に設定されています。 は各サービス メソッドに適用され、各操作へのアクセスを制限するために使用されます。 呼び出し元は、各操作にアクセスできる Windows 管理者である必要があります。 + + この例では、クライアントはコンソール アプリケーション \(.exe\) であり、サービスはインターネット インフォメーション サービス \(IIS\) によってホストされます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + サービス構成ファイルは、次のように [\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md)を使用して `principalPermissionMode` 属性を設定します。 + +``` + + + + ... + + + + + +``` + + `principalPermissionMode` を `UseWindowsGroups` に設定すると、Windows グループ名に基づいて を使用できるようになります。 + + 呼び出し元が Windows 管理者グループのメンバーであることを要求するため、 が各操作に適用されます。次のサンプル コードを参照してください。 + +``` +[PrincipalPermission(SecurityAction.Demand, + Role = "Builtin\\Administrators")] +public double Add(double n1, double n2) +{ + double result = n1 + n2; + return result; +} +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。 クライアントが管理者グループのメンバーであるアカウントで実行される場合、クライアントは各操作と正常に通信できます。それ以外のアカウントで実行される場合、アクセスは拒否されます。 承認エラーを試すには、管理グループのメンバーではないアカウントでクライアントを実行します。 クライアントをシャットダウンするには、コンソール ウィンドウで Enter キーを押します。 + + を実装すると、サービスに承認エラーを通知することができます。 `IErrorHandler` の実装方法については、「[エラー処理およびレポートに対する制御の拡張](../../../../docs/framework/wcf/samples/extending-control-over-error-handling-and-reporting.md)」を参照してください。 + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/automatic-format-selection.md b/docs/framework/wcf/samples/automatic-format-selection.md new file mode 100644 index 00000000000..d166d9a206d --- /dev/null +++ b/docs/framework/wcf/samples/automatic-format-selection.md @@ -0,0 +1,50 @@ +--- +title: "形式の自動選択 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: dab51e56-8517-4a6a-bb54-b55b15ab37bb +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 形式の自動選択 +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] REST プログラミング モデルで形式の自動選択 \(XML または JSON\) を有効にする方法と、操作コードで形式を明示的に設定する方法を示します。 + +## サンプルの詳細 + このサンプルは、サービスと、サービスに要求を発行するクライアント コードで構成されます。 サービスは、単一の HTTP `GET` 操作 \(`EchoWithGet`\) と単一の HTTP `POST` 操作 \(`EchoWithPost`\) をサポートします。 どちらの操作でも文字列を要求し、応答で文字列を返します。 `GET` 操作では、文字列は URI クエリ文字列パラメーターで示されます。 `POST` 操作では、文字列は XML でシリアル化された要求の本文で示されます。 サービスは、[!INCLUDE[netfx40_long](../../../../includes/netfx40-long-md.md)] の新機能である形式の自動選択と形式の強制選択を利用して、XML または JSON 形式のいずれかで応答を返すことができます。 + + このサンプルでは、App.config ファイルを使用して形式の自動選択を有効にしています。 既定の Web HTTP エンドポイントでは、`automaticFormatSelectionEnabled` 属性に `true` の値が指定されています。 形式の自動選択が有効な場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャは、要求の HTTP Accept ヘッダーまたは Content\-Type ヘッダーを指定して最適な応答形式 \(XML または JSON\) を選択します。 開発者は、`automaticFormatSelectionEnabled` 属性を `true` に設定する以外、この新しい機能を使用するためにコードまたは構成を追加する必要はありません。 Program.cs のクライアント コードでは、要求は、“application\/xml” または “application\/json” として指定された HTTP Accept ヘッダーを使用してサービスの `GET` 操作と `POST` 操作の両方に送信され、サービスはそれぞれの形式で応答を返します。 + + また、`GET` 操作では、形式の強制選択が使用されます。 `GET` 操作では、オプションの `format` クエリ文字列パラメーターがあるかどうかをチェックし、ある場合は、 プロパティで応答形式を設定します。 この方法で応答形式を強制的に設定すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャで実行された形式の自動選択がオーバーライドされます。 + + このサンプルは、コンソール アプリケーション内で実行される自己ホスト型サービスとクライアントで構成されています。 コンソール アプリケーションが実行されると、クライアントはサービスに要求を発行し、応答からの適切な情報をコンソール ウィンドウに書き込みます。 + +#### このサンプルを使用するには + +1. 形式の自動選択サンプルのソリューションを開きます。 サンプルを正しく実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を起動するときに、管理者として実行する必要があります。 管理者として実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] アイコンを右クリックし、コンテキスト メニューの **\[管理者として実行\]** をクリックします。 + +2. Ctrl キーと Shift キーを押しながら B キーを押してソリューションをビルドし、Ctrl キーを押しながら F5 キーを押してコンソール アプリケーションの AutomaticFormatSelection プロジェクトを実行します。 コンソール ウィンドウが表示されて、実行中のサービスの URI および実行中のサービスの HTML ヘルプ ページの URI が示されます。 + +3. サンプルが実行されると、クライアントは要求をサービスに送信し、応答をコンソール ウィンドウに書き込みます。 応答の形式は XML または JSON になります。 + +4. 任意のキーを押して、サンプルを終了します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Web\AutomaticFormatSelection` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/avoiding-problems-with-the-using-statement.md b/docs/framework/wcf/samples/avoiding-problems-with-the-using-statement.md new file mode 100644 index 00000000000..3aace8b4ab9 --- /dev/null +++ b/docs/framework/wcf/samples/avoiding-problems-with-the-using-statement.md @@ -0,0 +1,129 @@ +--- +title: "Using ステートメントに関する問題の回避 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: aff82a8d-933d-4bdc-b0c2-c2f7527204fb +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# Using ステートメントに関する問題の回避 +このサンプルでは、型指定のあるクライアントを使用する際に C\# の "using" ステートメントを使用せずに、リソースを自動的にクリーンアップする方法を示します。このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。この例では、クライアントはコンソール アプリケーション \(.exe\) で、サービスはインターネット インフォメーション サービス \(IIS\) によってホストされます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルでは、C\# の "using" ステートメントを型指定のあるクライアントと共に使用する際に発生する 2 つの一般的な問題と、例外が発生した後に正しくクリーンアップするコードを示します。 + + C\# の "using" ステートメントにより `Dispose`\(\) が呼び出されます。これは `Close`\(\) と同じで、ネットワーク エラーが発生したときに例外をスローする場合があります。`Dispose`\(\) への呼び出しは、"using" ブロックの閉じかっこで暗黙的に発生するので、コードを記述するユーザーとコードを読み取るユーザーの両者が、これを例外の発生元と気付かない可能性があります。これは、アプリケーション エラーの潜在的な原因となります。 + + 最初の問題は、次の `DemonstrateProblemUsingCanThrow` メソッドに示すように、閉じかっこで例外がスローされるとその後のコードが実行されないことです。 + +``` +using (CalculatorClient client = new CalculatorClient()) +{ + ... +} // <-- this line might throw +Console.WriteLine("Hope this code wasn't important, because it might not happen."); +``` + + using ブロック内部からスローされる例外がない場合、または using ブロック内のすべての例外がキャッチされた場合でも、`Console.Writeline` は発生しません。閉じかっこでの `Dispose`\(\) の暗黙の呼び出しによって例外がスローされるためです。 + + 2 番目の問題は、次の `DemonstrateProblemUsingCanThrowAndMask` メソッドで示すように、閉じかっこで別の例外が暗黙的にスローされる点です。 + +``` +using (CalculatorClient client = new CalculatorClient()) +{ + ... + throw new ApplicationException("Hope this exception was not important, because "+ + "it might be masked by the Close exception."); +} // <-- this line might throw an exception. +``` + + `Dispose`\(\) は "最後の" ブロック内で発生するので、`Dispose`\(\) が失敗した場合、`ApplicationException` は using ブロックの外側には表示されません。外側のコードで、`ApplicationException` の発生時期を認識できるよう考慮されている場合は、この例外をマスクすると、"using" コンストラクトが問題の原因となる場合があります。 + + 最後に、このサンプルでは、`DemonstrateCleanupWithExceptions` で例外が発生した場合に正しくクリーンアップする方法を示します。ここでは、try\/catch ブロックを使用してエラーを報告し、`Abort` を呼び出します。クライアントの呼び出しから例外をキャッチする方法の詳細については、「[予期される例外](../../../../docs/framework/wcf/samples/expected-exceptions.md)」のサンプルを参照してください。 + +``` +try +{ + ... + client.Close(); +} +catch (CommunicationException e) +{ + ... + client.Abort(); +} +catch (TimeoutException e) +{ + ... + client.Abort(); +} +catch (Exception e) +{ + ... + client.Abort(); + throw; +} +``` + +> [!NOTE] +> using ステートメントと ServiceHost: 多くの自己ホスト アプリケーションでは、サービスをホストする以外の処理はほとんど行われず、ServiceHost.Close から例外がスローされることはほとんどありません。したがって、このようなアプリケーションでは、using ステートメントを ServiceHost と共に使用しても安全です。ただし、ServiceHost.Close では `CommunicationException` がスローされる場合があることに注意してください。したがって、ServiceHost を閉じた後でアプリケーションを続行する場合は、using ステートメントを使用せずに前のパターンに従う必要があります。 + + このサンプルを実行すると、操作応答と例外がクライアントのコンソール ウィンドウに表示されます。 + + クライアント プロセスでは 3 つのシナリオが実行されます。各シナリオでは `Divide` の呼び出しが試行されます。最初のシナリオでは、`Dispose`\(\) からの例外のためにスキップされるコードを示します。2 番目のシナリオでは、`Dispose`\(\) からの例外のためにマスクされる重要な例外を示します。3 番目のシナリオでは、正しいクリーンアップを示します。 + + クライアント プロセスから予期される出力は次のとおりです。 + +``` += += Demonstrating problem: closing brace of using statement can throw. += +Got System.ServiceModel.CommunicationException from Divide. +Got System.ServiceModel.Security.MessageSecurityException += += Demonstrating problem: closing brace of using statement can mask other Exceptions. += +Got System.ServiceModel.CommunicationException from Divide. +Got System.ServiceModel.Security.MessageSecurityException += += Demonstrating cleanup with Exceptions. += +Calling client.Add(0.0, 0.0); + client.Add(0.0, 0.0); returned 0 +Calling client.Divide(0.0, 0.0); +Got System.ServiceModel.CommunicationException from Divide. + +Press to terminate client. + +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Client\UsingUsing` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/basic-ajax-service.md b/docs/framework/wcf/samples/basic-ajax-service.md new file mode 100644 index 00000000000..250afec3f86 --- /dev/null +++ b/docs/framework/wcf/samples/basic-ajax-service.md @@ -0,0 +1,103 @@ +--- +title: "基本的な AJAX サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: d66d0c91-0109-45a0-a901-f3e4667c2465 +caps.latest.revision: 30 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 30 +--- +# 基本的な AJAX サービス +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用して基本的な ASP.NET AJAX \(Asynchronous JavaScript and XML\) サービス \(Web ブラウザー クライアントから JavaScript コードを使用してアクセスできるサービス\) を作成する方法を示します。 このサービスは、 属性を使用してサービスが HTTP GET 要求に応答し、JSON \(JavaScript Object Notation\) データ形式を使用して応答するように構成されていることを確認します。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での AJAX サポートは、`ScriptManager` コントロールを介して ASP.NET AJAX と共に使用できるように最適化されています。 ASP.NET AJAX と共に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用する例については、「[AJAX Samples](http://msdn.microsoft.com/ja-jp/f3fa45b3-44d5-4926-8cc4-a13c30a3bf3e)」を参照してください。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + 次のコードでは、サービスが確実に HTTP GET 要求に応答するように 属性が `Add` 操作に適用されています。 このコードでは、簡単にするために GET を使用します \(すべての Web ブラウザーから HTTP GET 要求を構築できます\)。 また、GET を使用してキャッシングを有効にすることもできます。 HTTP POST は `WebGetAttribute` 属性を使用しない場合の既定です。 + +``` +[ServiceContract(Namespace = "SimpleAjaxService")] +public interface ICalculator +{ + + [WebGet] + double Add(double n1, double n2); + //Other operations omitted… +} + +``` + + サンプルの .svc ファイルでは が使用され、それによって 標準エンドポイントがサービスに追加されます。 エンドポイントは、.svc ファイルに相対する空のアドレス位置に設定されます。 つまり、サービスのアドレスは、操作名以外の追加のサフィックスのない http:\/\/localhost\/ServiceModelSamples\/service.svc になります。 + +``` +<%@ServiceHost language="C#" Debug="true" Service="Microsoft.Samples.SimpleAjaxService.CalculatorService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %> +``` + + は、ASP.NET AJAX クライアント ページからサービスにアクセスできるように事前に構成されています。 Web.config 内の次のセクションを使用して、エンドポイントに対する構成変更を追加できます。 追加の変更が不要な場合は、このセクションを削除できます。 + +```xml + + + + + + + + + +``` + + は、サービスの既定のデータ形式を XML ではなく JSON に設定します。 サービスを呼び出すには、このトピックで後述するように、セットアップ手順とビルド手順を完了してから、http:\/\/localhost\/ServiceModelSamples\/service.svc\/Add? n1\=100&n2\=200 に移動します。 このテスト機能は、HTTP GET 要求を使用することによって有効になります。 + + クライアントの Web ページの SimpleAjaxClientPage.aspx には、ユーザーがページ上のいずれかの操作ボタンをクリックするとサービスを呼び出す ASP.NET コードが含まれています。 `ScriptManager` コントロールは、JavaScript を使用してサービスからプロキシにアクセスできるようにする場合に使用します。 + +``` + + + + + + +``` + + 次の JavaScript コードを使用してローカル プロキシをインスタンス化し、操作を呼び出します。 + +``` +// Code for extracting arguments n1 and n2 omitted… +// Instantiate a service proxy +var proxy = new SimpleAjaxService.ICalculator(); +// Code for selecting operation omitted… +proxy.Add(parseFloat(n1), parseFloat(n2), onSuccess, onFail, null); + +``` + + サービス呼び出しが成功すると、コードは `onSuccess` ハンドラーを呼び出し、操作の結果がテキスト ボックスに表示されます。 + +``` +function onSuccess(mathResult){ + document.getElementById("result").value = mathResult; +} + +``` + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Ajax\SimpleAjaxService` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/basic-binding.md b/docs/framework/wcf/samples/basic-binding.md new file mode 100644 index 00000000000..82a75b0bad1 --- /dev/null +++ b/docs/framework/wcf/samples/basic-binding.md @@ -0,0 +1,30 @@ +--- +title: "基本的なバインディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2a0e8ac4-23e7-45ef-98dc-40691aac530a +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 基本的なバインディング +このセクションには、エンドポイント要素のバインディング属性の使用方法を示す基本的なサンプルが含まれています。 + +## このセクションの内容 + [メッセージ セキュリティ サンプル](../../../../docs/framework/wcf/samples/message-security-sample.md) + `basicHttpBinding` およびメッセージ セキュリティを使用するアプリケーションを実装する方法を示します。 + + [トランスポート セキュリティ付き BasicBinding](../../../../docs/framework/wcf/samples/basicbinding-with-transport-security.md) + 基本的なバインディングを使用した SSL トランスポート セキュリティを示します。 + + [BasicBinding](../../../../docs/framework/wcf/samples/basicbinding.md) + 第 1 世代と第 2 世代の Web サービスで HTTP 通信と最大限の相互運用性を実現する、`basicHttpBinding` の使用方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/basic-data-contract.md b/docs/framework/wcf/samples/basic-data-contract.md new file mode 100644 index 00000000000..6241ff74928 --- /dev/null +++ b/docs/framework/wcf/samples/basic-data-contract.md @@ -0,0 +1,161 @@ +--- +title: "基本的なデータ コントラクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "データ コントラクト" +ms.assetid: b124e9e0-cb73-4ae0-b9c3-e6cdf5eced98 +caps.latest.revision: 37 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 37 +--- +# 基本的なデータ コントラクト +このサンプルでは、データ コントラクトを実装する方法を示します。データ コントラクトを使用すると、サービスと構造化データをやり取りできます。このサンプルは「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいていますが、基本的な数値型ではなく複素数を使用します。 + + この例では、サービスはインターネット インフォメーション サービス \(IIS\) によってホストされています。クライアントはコンソール アプリケーション \(.exe\) です。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサービスのサービス コントラクトでは複素数を使用します。次のサンプル コードを参照してください。 + +``` +// Define a service contract. +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public interface ICalculator +{ + [OperationContract] + ComplexNumber Add(ComplexNumber n1, ComplexNumber n2); + [OperationContract] + ComplexNumber Subtract(ComplexNumber n1, ComplexNumber n2); + [OperationContract] + ComplexNumber Multiply(ComplexNumber n1, ComplexNumber n2); + [OperationContract] + ComplexNumber Divide(ComplexNumber n1, ComplexNumber n2); +} + +``` + + 属性と 属性は `ComplexNumber` クラスの定義に適用され、クラスのどのフィールドがクライアントとサービス間のネットワーク経由で渡されるかを示します。次のサンプル コードを参照してください。 + +``` +[DataContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public class ComplexNumber +{ + [DataMember] + public double Real = 0.0D; + [DataMember] + public double Imaginary = 0.0D; + + public ComplexNumber(double real, double imaginary) + { + this.Real = real; + this.Imaginary = imaginary; + } +} + +``` + + サービス実装は計算を行い、結果を返します。つまり、`ComplexNumber` 型の数値を受け入れて返します。 + +``` +// This is the service class that implements the service contract. +public class CalculatorService : ICalculator +{ + public ComplexNumber Add(ComplexNumber n1, ComplexNumber n2) + { + return new ComplexNumber(n1.Real + n2.Real, n1.Imaginary + + n2.Imaginary); + } + + public ComplexNumber Subtract(ComplexNumber n1, ComplexNumber n2) + { + return new ComplexNumber(n1.Real - n2.Real, n1.Imaginary - + n2.Imaginary); + } + public ComplexNumber Multiply(ComplexNumber n1, ComplexNumber n2) + { + double real1 = n1.Real * n2.Real; + double imaginary1 = n1.Real * n2.Imaginary; + double imaginary2 = n2.Real * n1.Imaginary; + double real2 = n1.Imaginary * n2.Imaginary * -1; + return new ComplexNumber(real1 + real2, imaginary1 + + imaginary2); + } + + public ComplexNumber Divide(ComplexNumber n1, ComplexNumber n2) + { + ComplexNumber conjugate = + new ComplexNumber(n2.Real, -1*n2.Imaginary); + ComplexNumber numerator = Multiply(n1, conjugate); + ComplexNumber denominator = Multiply(n2, conjugate); + return new ComplexNumber(numerator.Real / denominator.Real, + numerator.Imaginary); + } +} + +``` + + クライアント実装でも複素数を使用します。サービス コントラクトとデータ コントラクトは、どちらも generatedClient.cs ソース ファイルで定義されます。このソース ファイルは、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) によってサービス メタデータから生成されます。 + +``` +// Create a client. +DataContractCalculatorClient client = new DataContractCalculatorClient(); +// Call the Add service operation. +ComplexNumber value1 = new ComplexNumber(); +value1.Real = 1; +value1.Imaginary = 2; +ComplexNumber value2 = new ComplexNumber(); +value2.Real = 3; +value2.Imaginary = 4; +ComplexNumber result = proxy.Add(value1, value2); +Console.WriteLine("Add({0} + {1}i, {2} + {3}i) = {4} + {5}i", + value1.Real, value1.Imaginary, value2.Real, value2.Imaginary, + result.Real, result.Imaginary); + … +} + +``` + + このサンプルを実行する場合は、操作の要求や応答はクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` + +Add(1 + 2i, 3 + 4i) = 4 + 6i +Subtract(1 + 2i, 3 + 4i) = -2 + -2i +Multiply(2 + 3i, 4 + 7i) = -13 + 26i +Divide(3 + 7i, 5 + -2i) = 0.0344827586206897 + 41i + +Press to terminate client. +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Contract\Data\Basic` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/basic-http-service.md b/docs/framework/wcf/samples/basic-http-service.md new file mode 100644 index 00000000000..920db5f4a1b --- /dev/null +++ b/docs/framework/wcf/samples/basic-http-service.md @@ -0,0 +1,54 @@ +--- +title: "基本的な HTTP サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 27048b43-8a54-4f2a-9952-594bbfab10ad +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# 基本的な HTTP サービス +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] REST プログラミング モデルを使用して、一般に "POX" \(Plain Old XML\) サービスと呼ばれる、HTTP ベース、RPC ベースのサービスを実装する方法を示します。このサンプルは、自己ホスト型 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] HTTP サービス \(Service.cs\) と、サービスの作成およびサービスへの呼び出しを行うコンソール アプリケーション \(Program.cs\) の 2 つのコンポーネントで構成されています。 + +## サンプルの詳細 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、入力として渡された文字列を返す、`EchoWithGet` と `EchoWithPost` の 2 つの操作を公開します。 + + `EchoWithGet` 操作には、この操作で HTTP `GET` 要求が処理されることを示す、 という注釈が付いています。 では明示的に を指定しないため、操作には `s` という名前のクエリ文字列パラメーターを使用して渡される入力文字列が必要です。サービスが要求する URI の形式は、 プロパティを使用してカスタマイズすることができます。 + + `EchoWithPost` 操作には、これが `GET` 操作ではなく、副作用があることを示す、 という注釈が付いています。 では明示的に `Method` を指定しないため、この操作は、要求本文に文字列が含まれる HTTP `POST` 要求を処理します \(XML 形式など\)。HTTP メソッド、要求の URI の形式は、それぞれ プロパティ、 プロパティを使用して、カスタマイズすることができます。 + + App.config ファイルでは、`true` に設定されている プロパティを持つ既定の を使用して、WCF サービスを構成します。その結果、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] インフラストラクチャによって、自動的な HTML ベースのヘルプ ページが `http://localhost:8000/Customers/help` に作成されます。このページでは、サービスに対する HTTP 要求の作成方法とサービスの HTTP 応答の使用方法に関する情報が提供されます。 + + Program.cs では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネル ファクトリを使用してサービスへの呼び出しを実行し、応答を処理する方法を示します。これは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスにアクセスする 1 つの方法にすぎません。 などの他の .NET Framework クラスを使用して、サービスにアクセスすることも可能です。SDK 内の他のサンプル \(「[形式の自動選択](../../../../docs/framework/wcf/samples/automatic-format-selection.md)」のサンプルや「[基本的なリソース サービス](../../../../docs/framework/wcf/samples/basic-resource-service.md)」のサンプルなど\) では、これらのクラスを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと通信する方法を示します。 + + このサンプルは、コンソール アプリケーション内で実行される自己ホスト型サービスとクライアントで構成されています。コンソール アプリケーションが実行されると、クライアントはサービスに要求を発行し、応答からの適切な情報をコンソール ウィンドウに書き込みます。 + +#### このサンプルを使用するには + +1. 基本的な HTTP サービス サンプルのソリューションを開きます。サンプルを正しく実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を起動するときに、管理者として実行する必要があります。管理者として実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] アイコンを右クリックし、コンテキスト メニューの **\[管理者として実行\]** をクリックします。 + +2. Ctrl キーと Shift キーを押しながら B キーを押してソリューションをビルドし、Ctrl キーを押しながら F5 キーを押してコンソール アプリケーションを、デバッグを行わずに実行します。コンソール ウィンドウが表示されて、実行中のサービスの URI および実行中のサービスの HTML ヘルプ ページの URI が示されます。ブラウザーでヘルプ ページの URI を入力することで、いつでも HTML ヘルプ ページを表示することができます。サンプルが実行されると、クライアントは現在のアクティビティのステータスを書き込みます。 + +3. 任意のキーを押して、サンプルを終了します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Web\BasicHttpService` + +## 参照 + [形式の自動選択](../../../../docs/framework/wcf/samples/automatic-format-selection.md) + [基本的なリソース サービス](../../../../docs/framework/wcf/samples/basic-resource-service.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/basic-resource-service.md b/docs/framework/wcf/samples/basic-resource-service.md new file mode 100644 index 00000000000..4199a3f6be9 --- /dev/null +++ b/docs/framework/wcf/samples/basic-resource-service.md @@ -0,0 +1,50 @@ +--- +title: "基本的なリソース サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4360063e-cc8c-4648-846e-c05a5af51a7a +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 基本的なリソース サービス +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] REST プログラミング モデルを使用して HTTP ベースのサービスを実装する方法を示します。このモデルでは、取得、追加、削除、および置換の各操作をサポートする顧客のコレクションが公開されます。このサンプルは、自己ホスト型 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] HTTP サービス \(Service.cs\) と、サービスの作成およびサービスへの呼び出しを行うコンソール アプリケーション \(program.cs\) の 2 つのコンポーネントで構成されています。 + +## サンプルの詳細 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスでは、リソース指向の REST 方式で顧客のコレクションが公開されます。つまり、顧客のコレクションには一意の URI があり、コレクションにはすべての顧客が含まれます。このサービスは、コレクション全体を取得するための、コレクションの URI への HTTP `GET` の送信と、新しい顧客をコレクションに追加するための、コレクションの URI への HTTP `POST` の送信をサポートしています。また、個々の顧客の URI では、顧客の詳細を取得する HTTP `GET`、顧客の詳細を置換する HTTP `PUT`、コレクションから顧客を削除する HTTP `DELETE` をサポートしています。新しい顧客がコレクションに追加されると、サービスはその顧客に一意の URI を割り当て、顧客の詳細の一部として URI を格納します。また、応答の Location HTTP ヘッダーを使用して、クライアントの URI と通信します。 + + App.config ファイルでは、`true` に設定されている プロパティを持つ既定の を使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを構成します。その結果、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって、自動的な HTML ベースのヘルプ ページが `http://localhost:8000/Customers/help` に作成されます。このページでは、サービスに対する HTTP 要求の作成方法とサービスの HTTP 応答へのアクセス方法に関する情報 \(顧客の詳細を XML と JSON で表す方法の例など\) が提供されます。 + + 顧客のコレクション \(一般的には、任意のリソース\) をこの方法で公開すると、クライアントは、URI と HTTP の `GET`、`PUT`、`DELETE`、および `POST` を使用して一貫した方法でサービスと対話することができます。Program.cs では、 を使用してこのようなクライアントを作成する方法を示します。これは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] REST サービスにアクセスする 1 つの方法にすぎません。 などの他の .NET Framework クラスを使用して、サービスにアクセスすることも可能です。SDK 内の他のサンプル \(「[基本的な HTTP サービス](../../../../docs/framework/wcf/samples/basic-http-service.md)」のサンプルや「[形式の自動選択](../../../../docs/framework/wcf/samples/automatic-format-selection.md)」のサンプルなど\) では、これらのクラスを使用して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスと通信する方法を示します。 + + このサンプルは、コンソール アプリケーション内で実行される自己ホスト型サービスとクライアントで構成されています。コンソール アプリケーションが実行されると、クライアントはサービスに要求を発行し、応答からの適切な情報をコンソール ウィンドウに書き込みます。 + +#### このサンプルを使用するには + +1. 基本的なリソース サービス サンプルのソリューションを開きます。サンプルを正しく実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を起動するときに、管理者として実行する必要があります。管理者として実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] アイコンを右クリックし、コンテキスト メニューの **\[管理者として実行\]** をクリックします。 + +2. Ctrl キーと Shift キーを押しながら B キーを押してソリューションをビルドし、Ctrl キーを押しながら F5 キーを押してコンソール アプリケーションを実行します。コンソール ウィンドウが表示されて、実行中のサービスの URI および実行中のサービスの HTML ヘルプ ページの URI が示されます。ブラウザーでヘルプ ページの URI を入力することで、いつでも HTML ヘルプ ページを表示することができます。サンプルが実行されると、クライアントは現在のアクティビティのステータスを書き込みます。 + +3. 任意のキーを押して、サンプルを終了します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Web\BasicResourceService` + +## 参照 + [基本的な HTTP サービス](../../../../docs/framework/wcf/samples/basic-http-service.md) + [形式の自動選択](../../../../docs/framework/wcf/samples/automatic-format-selection.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/basic-sample.md b/docs/framework/wcf/samples/basic-sample.md new file mode 100644 index 00000000000..59beb200a5b --- /dev/null +++ b/docs/framework/wcf/samples/basic-sample.md @@ -0,0 +1,112 @@ +--- +title: "基本的なサンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c1910bc1-3d0a-4fa6-b12a-4ed6fe759620 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# 基本的なサンプル +このサンプルでは、サービスを探索可能にする方法と、探索可能なサービスの検索方法および呼び出し方法を示します。 このサンプルは、2 つのプロジェクト \(サービスとクライアント\) で構成されます。 + +> [!NOTE] +> このサンプルでは、探索をコードで実装しています。 探索を構成で実装するサンプルについては、「[構成](../../../../docs/framework/wcf/samples/configuration-sample.md)」を参照してください。 + +## サービス + これは簡単な電卓サービスの実装です。 探索関連のコードは `Main` にあります。ここでは、次のコードに示すように、 がサービス ホストに追加され、 が追加されます。 + +``` +using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress)) +{ + serviceHost.AddServiceEndpoint(typeof(ICalculatorService), new + WSHttpBinding(), String.Empty); + + // Make the service discoverable over UDP multicast + serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior()); + serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint()); + + serviceHost.Open(); + // ... +} +``` + +## Client + クライアントは、 を使用してサービスを検索します。 は標準エンドポイントで、クライアントが開いたときにサービスのエンドポイントを解決します。 この場合、 は、サービス コントラクトに基づいてサービスを検索します。 は、既定で を検索します。 サービス エンドポイントが見つかると、クライアントは指定されたバインディングを介してそのサービスに接続します。 + +```csharp +public static void Main() +{ + DynamicEndpoint dynamicEndpoint = new DynamicEndpoint( ContractDescription.GetContract(typeof(ICalculatorService)), new WSHttpBinding()); + // ... +} +``` + + クライアントは、 クラスを使用してサービスを検索する `InvokeCalculatorService` という名前のメソッドを定義します。 を継承しているため、`InvokeCalculatorService` メソッドに渡すことができます。 この例では、次に を使用して `CalculatorServiceClient` インスタンスを作成し、電卓サービスのさまざまな操作を呼び出します。 + +```csharp +static void InvokeCalculatorService(ServiceEndpoint serviceEndpoint) +{ + // Create a client + CalculatorServiceClient client = new CalculatorServiceClient(serviceEndpoint); + + Console.WriteLine("Invoking CalculatorService"); + Console.WriteLine(); + + double value1 = 100.00D; + double value2 = 15.99D; + + // Call the Add service operation. + double result = client.Add(value1, value2); + Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + + // Call the Subtract service operation. + result = client.Subtract(value1, value2); + Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); + + // Call the Multiply service operation. + result = client.Multiply(value1, value2); + Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); + + // Call the Divide service operation. + result = client.Divide(value1, value2); + Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); + Console.WriteLine(); + + //Closing the client gracefully closes the connection and cleans up resources + client.Close(); +} + +``` + +#### このサンプルを使用するには + +1. このサンプルでは HTTP エンドポイントを使用します。このサンプルを実行するには、適切な URL ACL を追加する必要があります。 [!INCLUDE[crdefault](../../../../includes/crdefault-md.md)]「[HTTP および HTTPS の構成](http://go.microsoft.com/fwlink/?LinkId=70353)」。 管理特権で次のコマンドを実行すると、適切な ACL が追加されます。 そのままではコマンドが動作しない場合は、代わりに、ドメインとユーザー名を引数に指定して実行してみてください。 `netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%` + +2. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を使用して Basic.sln を開き、サンプルをビルドします。 + +3. service.exe アプリケーションを実行します。 + +4. サービスが開始したら、client.exe を実行します。 + +5. クライアントがサービスのアドレスを知ることなくサービスを検索できたことを確認します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Discovery\Basic` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/basic.md b/docs/framework/wcf/samples/basic.md new file mode 100644 index 00000000000..a7e71dd1030 --- /dev/null +++ b/docs/framework/wcf/samples/basic.md @@ -0,0 +1,57 @@ +--- +title: "Basic | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 04e4d3bd-ab89-4b50-8f42-2a4430751a9c +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# Basic +このセクションには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の基本的な機能を示すサンプルのセクションが含まれています。 + +## このセクションの内容 + [概要](../../../../docs/framework/wcf/samples/getting-started-sample.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、一般的なサービスと一般的なクライアントを実装する方法を示します。 + + [AJAX](../../../../docs/framework/wcf/samples/ajax.md) + Asynchronous JavaScript and XML を示します。 + + [バインド](../../../../docs/framework/wcf/samples/binding.md) + エンドポイント要素のバインディング属性の使用方法を示します。 + + [クライアント](../../../../docs/framework/wcf/samples/client.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーションを示します。 + + [コントラクト](../../../../docs/framework/wcf/samples/contract.md) + データ コントラクトを示します。 + + [探索](../../../../docs/framework/wcf/samples/discovery-samples.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 探索を示します。 + + [管理](../../../../docs/framework/wcf/samples/management.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 管理を示します。 + + [ルーティング サービス](../../../../docs/framework/wcf/samples/routing-services.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ルーティング サービスを示します。 + + [セキュリティ](../../../../docs/framework/wcf/samples/security-in-wcf.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] セキュリティを示します。 + + [サービス](../../../../docs/framework/wcf/samples/services.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを示します。 + + [配信](../../../../docs/framework/wcf/samples/syndication.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 配信を示します。 + + [Web](../../../../docs/framework/wcf/samples/web.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での Web ホスティングを示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/basicbinding-with-transport-security.md b/docs/framework/wcf/samples/basicbinding-with-transport-security.md new file mode 100644 index 00000000000..0200a1b3889 --- /dev/null +++ b/docs/framework/wcf/samples/basicbinding-with-transport-security.md @@ -0,0 +1,104 @@ +--- +title: "トランスポート セキュリティ付き BasicBinding | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f49b1de6-0254-4362-8ef2-fccd8ff9688b +caps.latest.revision: 26 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 26 +--- +# トランスポート セキュリティ付き BasicBinding +このサンプルでは、基本的なバインディングを使用した SSL トランスポート セキュリティを示します。 このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Binding\Basic\TransportSecurity` + +## サンプルの詳細 + 既定で、基本的なバインディングは HTTP 通信をサポートします。 このサンプルでは、基本的なバインディングのトランスポート セキュリティを有効にする方法を示します。 このサンプルを実行する前に、証明書を作成し、Web サーバー証明書ウィザードを使用してあらかじめ割り当てておく必要があります。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + サンプル内のプログラム コードは、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」サービスのプログラム コードと同じです。 次に示すサンプル構成のように、構成ファイル設定でエンドポイントとバインディングを定義すると、通信のセキュリティ保護が有効になるように変更されます。 + +``` + + + + + + + + + + + + + + + + + ... + +``` + + このサンプルで使用する証明書は Makecert.exe で作成されたテスト証明書なので、ブラウザで https:\/\/localhost\/servicemodelsamples\/service.svc のような HTTPS: アドレスにアクセスしようとするとセキュリティ警告が表示されます。 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントがテスト証明書に対して動作するようにするには、クライアントにコードを追加して、セキュリティ警告を非表示にする必要があります。 そのためのコードとそれに必要なクラスは、実際の証明書を使用するときには不要です。 + +``` +// This code is required only for test certificates such as those +// created by Makecert.exe. +PermissiveCertificatePolicy.Enact( + "CN=ServiceModelSamples-HTTPS-Server"); + +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +#### サンプルをセットアップ、ビルド、および実行するには + +1. 次のコマンドを使用して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 4.0 をインストールします。 + + ``` + %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable + + ``` + +2. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +3. 「[インターネット インフォメーション サービス \(IIS\) サーバー証明書インストール手順](../../../../docs/framework/wcf/samples/iis-server-certificate-installation-instructions.md)」が実行済みであることを確認します。 + +4. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +5. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/basicbinding.md b/docs/framework/wcf/samples/basicbinding.md new file mode 100644 index 00000000000..62eddacd2cf --- /dev/null +++ b/docs/framework/wcf/samples/basicbinding.md @@ -0,0 +1,108 @@ +--- +title: "BasicBinding | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 86fbeb87-4d89-4b61-9577-867e0ac12945 +caps.latest.revision: 22 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 22 +--- +# BasicBinding +このサンプルでは、第 1 世代と第 2 世代の Web サービスで HTTP 通信と最大限の相互運用性を実現する、`basicHttpBinding` の使用方法を示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Binding\Basic\Http` + +## サンプルの詳細 + このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 + + 既定の動作で基本的なバインディングを使用する場合、必要なものはバインディング セクション名だけです。基本的なバインディングを構成してその設定の一部を変更する場合は、バインディング構成を定義する必要があります。名前によってバインディング構成を参照するには、\<`endpoint`\> 要素の `bindingConfiguration` 属性を使用する必要があります。次のサンプル コードを参照してください。 + +``` + + + + + + +``` + + このサンプルでは、バインディング構成の名前は `"Binding1"` です。これは次のコード例のように定義されます。 + +``` + + + + + + + + +``` + + バインディング要素には、ホスト名比較モード、最大メッセージ サイズ、プロキシ オプション、タイムアウト、メッセージ エンコーディングなど、さまざまなオプションを設定するための属性が用意されています。 + + このサンプルを実行する場合は、操作要求および応答はクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` + +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +#### サンプルを設定、ビルド、および実行するには + +1. 次のコマンドを使用して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 4.0 をインストールします。 + + ``` + %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable + + ``` + +2. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +3. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. 単一コンピュータ構成か複数コンピュータ構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/behavior-security.md b/docs/framework/wcf/samples/behavior-security.md new file mode 100644 index 00000000000..dc78a870b32 --- /dev/null +++ b/docs/framework/wcf/samples/behavior-security.md @@ -0,0 +1,33 @@ +--- +title: "動作のセキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 19710ae3-f197-4d28-ba9d-52e465006819 +caps.latest.revision: 5 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 5 +--- +# 動作のセキュリティ +このセクションには、サービスの動作に対するセキュリティの構成を示すサンプルが含まれています。 + +## このセクションの内容 + [サービス監査動作](../../../../docs/framework/wcf/samples/service-auditing-behavior.md) + このサンプルでは、 を使用して、サービス操作中にセキュリティ イベントの監査を有効にする方法を示します。 + + [メンバーシップとロール プロバイダー](../../../../docs/framework/wcf/samples/membership-and-role-provider.md) + このサンプルでは、サービスが [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] メンバーシップとロール プロバイダーを使用してクライアントを認証および承認するための方法を示します。 + + [サービス操作へのアクセスの承認](../../../../docs/framework/wcf/samples/authorizing-access-to-service-operations.md) + このサンプルでは、[\](../../../../docs/framework/configure-apps/file-schema/wcf/serviceauthorization-element.md)を使用して、サービス操作へのアクセスを承認する 属性を使用できるようにする方法を示します。 + + [クライアントの偽装](../../../../docs/framework/wcf/samples/impersonating-the-client.md) + サービスで呼び出し元のアプリケーションを偽装し、サービスが呼び出し元の代わりにシステム リソースにアクセスできるようにする方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/behaviors.md b/docs/framework/wcf/samples/behaviors.md new file mode 100644 index 00000000000..457fc61ea76 --- /dev/null +++ b/docs/framework/wcf/samples/behaviors.md @@ -0,0 +1,45 @@ +--- +title: "動作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b0885b65-4e74-4bc9-bbf0-eb7ebe566da1 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# 動作 +このセクションには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスの動作を示すサンプルが含まれています。 + +## このセクションの内容 + [同時実行](../../../../docs/framework/wcf/samples/concurrency.md) + 列挙体と共に使用する方法を示します。この列挙体は、サービスのインスタンスがメッセージを順番に処理するか、または同時に処理するかを制御します。 + + [既定のサービスの動作](../../../../docs/framework/wcf/samples/default-service-behavior.md) + サービスの動作設定を構成する方法を示します。 + + [インスタンス化](../../../../docs/framework/wcf/samples/instancing.md) + インスタンス化動作の設定を示します。この設定は、クライアント要求への応答として作成される、サービス クラスのインスタンスの作成方法を制御します。 + + [メタデータ公開動作](../../../../docs/framework/wcf/samples/metadata-publishing-behavior.md) + サービスのメタデータ公開機能を制御する方法を示します。 + + [サービス トランザクションの動作](../../../../docs/framework/wcf/samples/service-transaction-behavior.md) + クライアント調整トランザクションの使用方法と、サービス トランザクションの動作を制御する の設定方法を示します。 + + [サービス デバッグ動作](../../../../docs/framework/wcf/samples/service-debug-behavior.md) + サービス デバッグ動作の設定を構成する方法を示します。 + + [調整](../../../../docs/framework/wcf/samples/throttling.md) + 調整コントロールの使用方法を示します。 + + [動作のセキュリティ](../../../../docs/framework/wcf/samples/behavior-security.md) + サービスの動作セキュリティを構成する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/binding-extensibility.md b/docs/framework/wcf/samples/binding-extensibility.md new file mode 100644 index 00000000000..099483990d1 --- /dev/null +++ b/docs/framework/wcf/samples/binding-extensibility.md @@ -0,0 +1,27 @@ +--- +title: "バインディング拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cabdd583-ddf5-493e-9dba-c6c31cde8f65 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# バインディング拡張 +このセクションには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でのカスタム バインディングを示すサンプルが含まれています。 + +## このセクションの内容 + + 上に または をスタックするバインディングを実装する方法を示します。 + + + HTTP トランスポート使用時にストリーミングをサポートする目的でデザインされたバインドを作成する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/binding.md b/docs/framework/wcf/samples/binding.md new file mode 100644 index 00000000000..b10389e61d4 --- /dev/null +++ b/docs/framework/wcf/samples/binding.md @@ -0,0 +1,36 @@ +--- +title: "バインド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 324fa627-d012-465a-b266-95594a09dac2 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# バインド +このセクションには、エンドポイント要素のバインディング属性の使用方法を示すサンプルが含まれています。 + +## このセクションの内容 + [バイトストリーム エンコーダー](../../../../docs/framework/wcf/samples/bytestream-encoder.md) + バイト ストリーム エンコーダーの機能を示す である `ByteStreamHttpBinding` を作成する方法を示します。 + + [基本的なバインディング](../../../../docs/framework/wcf/samples/basic-binding.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での基本的なバインディングを示します。 + + [カスタム バインディング](../../../../docs/framework/wcf/samples/custom-binding.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でのカスタム バインディングを示します。 + + [ネット バインディング](../../../../docs/framework/wcf/samples/net-binding.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でのネットワーク バインディングを示します。 + + [WS バインディング](../../../../docs/framework/wcf/samples/ws-binding.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での Windows サービスのバインディングを示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/bridging-and-error-handling.md b/docs/framework/wcf/samples/bridging-and-error-handling.md new file mode 100644 index 00000000000..909a2be0cfc --- /dev/null +++ b/docs/framework/wcf/samples/bridging-and-error-handling.md @@ -0,0 +1,81 @@ +--- +title: "ブリッジとエラー処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4ae87d1a-b615-4014-a494-a53f63ff0137 +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# ブリッジとエラー処理 +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] ルーティング サービスを、各種のバインディングを使用するクライアントとサービス間の通信をブリッジするために使用する方法を示します。また、バックアップ サービスを使用してフェールオーバーのシナリオに対処する方法も示します。ルーティング サービスは、コンテンツ ベースのルーターをアプリケーションに簡単に追加できるようにする [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] コンポーネントです。このサンプルでは、標準の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 電卓のサンプルを改良し、ルーティング サービスを使用して通信するようにします。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\RoutingServices\ErrorHandlingAndBridging` + +## サンプルの詳細 + このサンプルの電卓クライアントは、ルーターによって公開されるエンドポイントにメッセージを送信するように構成されています。ルーティング サービスは、送信されてきたすべてのメッセージを受け入れ、電卓サービスに対応するエンドポイントに転送するように構成されています。プライマリ電卓サービス、バックアップ電卓サービス、および電卓クライアントの構成と、ルーティング サービスによるクライアントとサービス間の通信の処理方法を次に示します。 + +- 電卓クライアントは BasicHttpBinding を使用するように構成され、電卓サービスは NetTcpBinding を使用するように構成されています。ルーティング サービスは、電卓サービスに送信する前に、必要に応じて自動的にメッセージを変換します。また、電卓クライアントがアクセスできるように応答も変換します。 + +- ルーティング サービスは、プライマリ電卓サービスとバックアップ電卓サービスの 2 つの電卓サービスを認識します。まず、ルーティング サービスは、プライマリ電卓サービスのエンドポイントとの通信を試みます。エンドポイントがダウンしているためにこの試行が失敗すると、次に、バックアップ電卓サービスのエンドポイントとの通信を試みます。 + + したがって、クライアントから送信されたメッセージはルーターで受信され、実際の電卓サービスに再ルーティングされます。電卓サービスのエンドポイントがダウンしている場合、ルーティング サービスは、バックアップ電卓サービスのエンドポイントにメッセージをルーティングします。バックアップ電卓サービスからのメッセージはサービス ルーターに送り返され、ルーターから電卓クライアントに渡されます。 + +> [!NOTE] +> バックアップのリストには、複数のエンドポイントを定義しておくことができます。その場合、バックアップ サービスのエンドポイントがダウンしていると、ルーティング サービスはリスト内の次のバックアップ エンドポイントへの接続を試み、接続が成功するまで試行を続けます。 + +#### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を使用して、RouterBridgingAndErrorHandling.sln を開きます。 + +2. Visual Studio で F5 キーを押すか、Ctrl キーと Shift キーを押しながら B キーを押します。 + + 1. F5 キーを押したときに必要なプロジェクトが自動的に起動されるようにする場合は、ソリューションを右クリックし、**\[プロパティ\]** をクリックします。**\[共通プロパティ\]** の **\[スタートアップ プロジェクト\]** ノードで、**\[マルチ スタートアップ プロジェクト\]** をクリックし、すべてのプロジェクトを **\[開始\]** に設定します。 + + 2. Ctrl キーと Shift キーを押しながら B キーを押してプロジェクトをビルドすると、次のアプリケーションが開始します。 + + 1. 電卓クライアント \(.\/CalculatorClient\/bin\/client.exe\) + + 2. 電卓サービス \(.\/CalculatorService\/bin\/service.exe\) + + 3. ルーティング サービス \(.\/RoutingService\/bin\/RoutingService.exe\) + +3. 電卓クライアントで、Enter キーを押してクライアントを起動します。 + + 次の出力が表示されます。 + + ```Output + Add(100,15.99) = 115.99 + Subtract(145,76.54) = 68.46 + Multiply(9,81.25) = 731.25 + Divide(22,7) = 3.14285714285714 + + ``` + +## コードまたは App.config で構成可能 + サンプルは、提供された時点では、App.config ファイルを使用してルーターの動作を定義するように構成されています。App.config ファイルの名前を別の名前に変更して認識されないようにし、`ConfigureRouterViaCode()` に対するメソッド呼び出しのコメントを解除することもできます。どちらの方法でも、ルーターの動作は同じになります。 + +### シナリオ + このサンプルでは、プロトコル ブリッジおよびエラー ハンドラーとして機能するサービス ルーターを示します。このシナリオでは、コンテンツ ベースのルーティングは発生しません。ルーティング サービスは、構成済みの一連の送信先エンドポイントに直接メッセージを渡すように構成された透過的なプロキシ ノードとして機能します。さらに、通信するように構成されたエンドポイントへの送信の試行時にエラーが発生した場合に、そのエラーを透過的に処理する追加の手順も実行します。ルーティング サービスをプロトコル ブリッジとして使用することで、外部の通信と内部の通信に対して別々のプロトコルを定義することができます。 + +### 実際のシナリオ + Contoso では、外部には相互運用可能なサービスのエンドポイントを公開し、内部ではパフォーマンスを最適化したいと考えています。そのため、外部には BasicHttpBinding を使用するエンドポイントを通じてサービスを公開し、内部ではルーティング サービスを使用して、そのサービスの NetTcpBinding を使用するエンドポイントにその接続をブリッジしています。さらに、Contoso では、運用サービスのいずれかが一時的に停止した場合でも、サービスの提供を継続できるようにしたいと考えています。そのため、ルーター サービスの背後で複数のエンドポイントを仮想化し、必要に応じて、エラー処理機能を使用して自動的にバックアップ エンドポイントにフェールオーバーされるようにしています。 + +## 参照 + [AppFabric のホストおよび永続化のサンプル](http://go.microsoft.com/fwlink/?LinkId=193961) \ No newline at end of file diff --git a/docs/framework/wcf/samples/building-the-samples.md b/docs/framework/wcf/samples/building-the-samples.md new file mode 100644 index 00000000000..6ecce372592 --- /dev/null +++ b/docs/framework/wcf/samples/building-the-samples.md @@ -0,0 +1,93 @@ +--- +title: "Windows Communication Foundation サンプルのビルド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2899e7a5-9cb2-4e8d-b8d2-f31391549198 +caps.latest.revision: 33 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 33 +--- +# Windows Communication Foundation サンプルのビルド +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サンプルは、Visual Studio 2010 を使用したり、コマンド ラインで **msbuild** コマンドを使用したりしてビルドできます。ここでは、両方の手順について説明します。 + +> [!NOTE] +> [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サンプルをビルドまたは実行する前に、「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」に記述されている手順が完了していることを確認してください。 + +### コマンド プロンプトを使用してサンプルをビルドするには + +1. 管理特権を使用して [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプトを開き、サンプルのインストール ディレクトリに存在する言語固有のサブディレクトリに移動します。 + +2. コマンド プロンプトで `msbuild` と入力します。クライアント プログラムが client\\bin にビルドされ、サービス プログラムが service\\bin にビルドされます。サービスがインターネット インフォメーション サービス \(IIS\) によってホストされている場合は、サービス プログラム ファイルがさらに servicemodelsamples ディレクトリと、その \\bin サブディレクトリにコピーされます。 + +> [!NOTE] +> %systemdrive%\\inetpub\\wwwroot 上の ACL を、実行中のアカウントに変更権限を付与するように設定する必要があります。このように設定しない場合、ビルド後のイベントが失敗する場合があります。代わりに、ACL の設定はそのままにして、SDK コマンド プロンプトを管理者として実行することもできます。 + +### Visual Studio を使用してサンプルをビルドするには + +1. [!INCLUDE[wv](../../../../includes/wv-md.md)]、[!INCLUDE[lserver](../../../../includes/lserver-md.md)]、Windows 7、または Windows Server 2008 R2 を使用し、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を実行する場合は、より高いレベルのアクセス許可を使用して [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] を実行する必要があります。これを行うには、\[スタート\] メニューのアイコンを右クリックし、**\[管理者として実行\]** をクリックします。 + +2. [!INCLUDE[vs_current_short](../../../../includes/vs-current-short-md.md)] で、**\[ファイル\]** メニューの **\[開く\]** をクリックし、**\[プロジェクト\/ソリューション\]** をクリックします。サンプルをインストールしたディレクトリの下の言語固有のサブディレクトリに移動し、.sln ファイルのアイコンをダブルクリックして、[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] でソリューションを開きます。 + +3. **\[ビルド\]** メニューの **\[ソリューションのリビルド\]** をクリックします。クライアント プログラムが client\\bin にビルドされ、サービス プログラムが service\\bin にビルドされます。サービスが IIS によってホストされている場合は、サービス プログラム ファイルがさらに servicemodelsamples ディレクトリと、その \\bin サブディレクトリにコピーされます。 + +> [!NOTE] +> %systemdrive%\\inetpub\\wwwroot 上の ACL を、実行中のアカウントに変更権限を付与するように設定する必要があります。このように設定しない場合、ビルド後のイベントが失敗する場合があります。代わりに、ACL の設定はそのままにして、SDK コマンド プロンプトまたは Visual Studio を管理者として実行することもできます。Visual Studio の一部のアクション \(デバッガを ASP.Net ワーカー プロセスにアタッチするアクションなど\) では、さらに管理特権が必要です。 + +## セットアップ バッチ ファイルとスクリプト + Setup.exe バッチ ファイル、Cleanup.exe バッチ ファイル、およびスクリプトは、Visual Studio コマンド プロンプトから実行する必要があります。いくつかのセットアップ ファイルとクリーンアップ ファイルは、管理特権が必要なタスクを実行します。したがって、これらのファイルは管理特権で起動する必要があります。 + +## メタデータ エンドポイントに関する重要なセキュリティ情報 + サービスのメタデータには機密情報が含まれる可能性がありますが、意図的ではない開示を回避するために、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスの既定の構成では、メタデータは公開されないように設定されています。この動作は、既定の設定ではセキュリティで保護されますが、同時に、サービスの構成の中でメタデータ公開の動作が明示的に有効化されない限り、サービスの呼び出しに必要なクライアント コードをメタデータ インポート ツール \(Svcutil.exe など\) を使用して生成できないことも意味します。サンプルでの試みを容易にするため、ほとんどすべてのサンプルでは、セキュリティ保護されていないメタデータ公開エンドポイントを公開しています。このようなエンドポイントを利用するコンシューマーは、匿名で、認証を受けていない可能性もあります。したがって、エンドポイントを配置する前には注意を払い、サービスのメタデータをパブリックに開示することが適切であることを確認する必要があります。サービス メタデータの公開[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[メタデータ公開動作](../../../../docs/framework/wcf/samples/metadata-publishing-behavior.md)」のサンプルを参照してください。メタデータ エンドポイントをセキュリティ保護するサンプルについては、「[カスタム セキュア メタデータ エンドポイント](../../../../docs/framework/wcf/samples/custom-secure-metadata-endpoint.md)」のサンプルを参照してください。 + +## 例外処理 + 通常、コードではサンプルの主題を重視するので、これらのサンプルに例外処理は含まれていません。例外処理[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[予期される例外](../../../../docs/framework/wcf/samples/expected-exceptions.md)」のサンプルを参照してください。 + +## Svcutil を使用したクライアントと構成の再生成 + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用すると、ほとんどのサンプルのクライアント コードと構成を生成できます。一部のサンプルでは、構成を手動で編集する必要があります。たとえば、Svcutil.exe を使用して、クライアント証明書の資格情報を使用するサンプルの構成を再生成する場合は、以前に構成された資格情報を手動で指定する必要があります。一部のサンプルでは、生成コードに影響を与える、Svcutil.exe の特定のオプションを使用します。これらのオプションは、そうした特定のサンプルのトピックで指定されます。 + +#### クライアントと構成ファイルを再生成するには + +1. SDK コマンド プロンプトを開き、サンプルのインストール ディレクトリに存在する言語固有のサブディレクトリに移動します。 + +2. サービスが Web ホスト型の場合は、次のコマンドを使用します。 + + ``` + svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs + ``` + + サービスが自己ホスト型の場合は、次のコマンドを使用します。 + + ``` + svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost:8000/servicemodelsamples/service.svc/mex /out:generatedClient.cs + ``` + + http:\/\/localhost:8000\/ServiceModelSamples\/service.svc\/mex を、自己ホスト型サービスの MEX エンドポイントのアドレスに置き換えます。 + + Visual Basic の型でクライアントを生成するには、次のコマンドを使用します。 + + ``` + svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb + + ``` + + サービスが自己ホスト型の場合は、次のコマンドを使用します。 + + ``` + svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost:8000/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb + ``` + + > [!NOTE] + > クライアント構成の生成をスキップするには、**\/noConfig** オプションを追加します。 + +## 参照 + [Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md) + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/bytestream-encoder.md b/docs/framework/wcf/samples/bytestream-encoder.md new file mode 100644 index 00000000000..664a1658319 --- /dev/null +++ b/docs/framework/wcf/samples/bytestream-encoder.md @@ -0,0 +1,43 @@ +--- +title: "バイトストリーム エンコーダー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e674a8ab-f79a-4a93-b984-54b34392dafc +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# バイトストリーム エンコーダー +このサンプルでは、バイト ストリーム エンコーダーの機能を示す である `ByteStreamHttpBinding` を作成する方法を示します。 + +## 説明 + このサンプルでは、標準のバインディング要素 および を使用して、標準の を作成する方法を示します。 このサンプルでは、バイト ストリーム エンコーダーを使用して、画像をアップロードおよびダウンロードする方法を示します。 バイト ストリーム エンコーダーの機能は、HTTP トランスポートのみサポートし、信頼できるメッセージングやセキュリティなどの機能はサポートしません。 唯一サポートされる です。 + +> [!IMPORTANT] +> このサンプルを [!INCLUDE[windowsver](../../../../includes/windowsver-md.md)] または [!INCLUDE[win7_client_firstref](../../../../includes/win7-client-firstref-md.md)] で実行している場合は、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] をシステム特権で実行していることを確認してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WF\Basic\Binding\ByteStreamEncoder` + +#### サンプルをセットアップ、ビルド、および実行するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] で ByteStreamHttpBinding.sln ファイルを開きます。 + +2. ソリューション エクスプローラーで ByteStreamHttpBindingServer プロジェクトを右クリックし、コンテキスト メニューから **\[デバッグ\]**、**\[新しいインスタンスを開始\]** の順にクリックして、プロジェクトの新しいインスタンスを開始します。 + +3. ソリューション エクスプローラーで ByteStreamHttpBindingClient プロジェクトを右クリックし、コンテキスト メニューから **\[デバッグ\]**、**\[新しいインスタンスを開始\]** の順にクリックして、プロジェクトの新しいインスタンスを開始します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/channel-factory.md b/docs/framework/wcf/samples/channel-factory.md new file mode 100644 index 00000000000..5a1d57d493c --- /dev/null +++ b/docs/framework/wcf/samples/channel-factory.md @@ -0,0 +1,93 @@ +--- +title: "チャネル ファクトリ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 09b53aa1-b13c-476c-a461-e82fcacd2a8b +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# チャネル ファクトリ +このサンプルでは、クライアント アプリケーションが、生成されたクライアントではなく クラスを含むチャネルを作成できる方法を示します。このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルは、 クラスを使用して、サービス エンドポイントにチャネルを作成します。通常、サービス エンドポイントへのチャネルを作成するには、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用してクライアント型を生成し、生成された型のインスタンスを作成します。また、 クラスを使用してチャネルを作成することもできます。サンプルを参照してください。次のサンプル コードで作成されるサービスは、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」内のサービスと同じものです。 + +``` +EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc"); +WSHttpBinding binding = new WSHttpBinding(); +ChannelFactory factory = new + ChannelFactory(binding, address); +ICalculator channel = factory.CreateChannel(); +``` + +> [!IMPORTANT] +> このサンプルを複数コンピュータのシナリオで実行している場合は、前述のコードの "localhost" を、サービスを実行中のコンピュータの完全修飾名に置き換える必要があります。このサンプルは、エンドポイント アドレスを設定する構成を使用していません。したがって、コード内でアドレスを設定する必要があります。 + + チャネルが作成されたら、生成されたクライアントと同様にサービス操作を呼び出すことができます。 + +``` +// Call the Add service operation. +double value1 = 100.00D; +double value2 = 15.99D; +double result = channel.Add(value1, value2); +Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + +``` + + チャネルを閉じるには、最初にチャネルを インターフェイスにキャストする必要があります。これは、生成されたチャネルが `ICalculator` インターフェイスによってクライアント アプリケーション内で宣言されているからです。このインターフェイスには `Add` および `Subtract` などのメソッドは含まれていますが、`Close` は含まれていません。`Close` メソッドは、 インターフェイスで発生します。 + +``` +// Close the channel. + ((IClientChannel)client).Close(); + +``` + + このサンプルを実行する場合は、操作要求および応答はクライアントのコンソール ウィンドウに表示されます。クライアント アプリケーションをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。このサンプルではメタデータの公開は有効化されないことに注意してください。最初にこのサンプルのメタデータ公開を有効にして、クライアント型を再生成する必要があります。 + +3. 単一コンピュータ構成か複数コンピュータ構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +### サンプルを複数コンピュータで実行するには + +1. 次のコードの "localhost" を、サービスを実行中のコンピューターの完全修飾名に置き換えます。 + + ``` + EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc"); + ``` + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Client\ChannelFactory` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/channels-extensibility.md b/docs/framework/wcf/samples/channels-extensibility.md new file mode 100644 index 00000000000..fa681a322f8 --- /dev/null +++ b/docs/framework/wcf/samples/channels-extensibility.md @@ -0,0 +1,42 @@ +--- +title: "チャネル拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4cc3b20b-778a-4ae8-b58c-a3822fb13065 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# チャネル拡張 +このセクションには、カスタム チャネルを示すサンプルが含まれています。 + +## このセクションの内容 + [ローカル チャネル](../../../../docs/framework/wcf/samples/local-channel.md) + 同じアプリケーション ドメイン内の通信に使用される [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] トランスポート チャネルであるローカル チャネルを示します。 + + [Reliable Secure Profile](../../../../docs/framework/wcf/samples/reliable-secure-profile.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と Reliable Secure Profile \(RSP\) を作成する方法を示します。 + + [カスタム チャネル ディスパッチャー](../../../../docs/framework/wcf/samples/custom-channel-dispatcher.md) + を直接実装することによって、カスタマイズした方法でチャネル スタックを作成する方法と、Web ホスト環境でカスタム チャネル ディスパッチャーを作成する方法を示します。 + + [チャネルのチャンキング](../../../../docs/framework/wcf/samples/chunking-channel.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して送信されたサイズの大きいメッセージのバッファーに使用するメモリ容量を制限する方法を示します。 + + [HTTP 受信確認チャネル](../../../../docs/framework/wcf/samples/http-acknowledgement-channel.md) + 一方向メッセージング パターンを変える階層チャネルを示します。 + + [HttpCookieSession](../../../../docs/framework/wcf/samples/httpcookiesession.md) + カスタム プロトコル チャネルを作成し、セッション管理用の HTTP クッキーを使用する方法を示します。 + + [カスタム メッセージ インターセプター](../../../../docs/framework/wcf/samples/custom-message-interceptor.md) + チャネル ファクトリとチャネル リスナーを作成するカスタム バインディング要素を実装して、ランタイム スタックの特定のポイントですべての送受信メッセージを中断する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/chunking-channel.md b/docs/framework/wcf/samples/chunking-channel.md new file mode 100644 index 00000000000..ac503dafc52 --- /dev/null +++ b/docs/framework/wcf/samples/chunking-channel.md @@ -0,0 +1,391 @@ +--- +title: "チャネルのチャンキング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e4d53379-b37c-4b19-8726-9cc914d5d39f +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# チャネルのチャンキング +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用してサイズの大きいメッセージを送信する場合、一般的にはそうしたメッセージのバッファに使用するメモリ容量を制限することが望まれます。 解決策の 1 つとして、メッセージ本文のストリーミングが考えられます \(データの大部分が本文にある場合\)。 ただし、一部のプロトコルではメッセージ全体のバッファが必要です。 たとえば、信頼できるメッセージとセキュリティの 2 つがこの例として挙げられます。 そこで別の解決策として、サイズの大きいメッセージをチャンクと呼ばれるサイズの小さいメッセージに分割し、そうしたチャンクを 1 つずつ送信し、受信側でサイズの大きいメッセージに再構成するという方法が考えられます。 アプリケーション自体でこうしたチャンキングおよびチャンキング解除を行うことができるほか、カスタム チャネルを使用して行うこともできます。 チャネルのチャンキングのサンプルでは、カスタム プロトコル チャネルまたはカスタム階層チャネルを使用して、サイズの大きい任意のメッセージのチャンキングおよびチャンキング解除を行う方法を示します。 + + チャンキングは常に、送信されるメッセージ全体が構築された後にのみ使用する必要があります。 チャネルのチャンキングは常に、セキュリティ チャネルおよび信頼できるセッション チャネルの下位の階層に置く必要があります。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」に移動して、すべての [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サンプルおよび [!INCLUDE[wf1](../../../../includes/wf1-md.md)] サンプルをダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Channels\ChunkingChannel` + +## チャネルのチャンキングにおける前提と制限 + +### メッセージ構造 + チャネルのチャンキングでは、チャンク対象のメッセージについて、次のメッセージ構造を想定しています。 + +``` + + + + + data to be chunked + + + +``` + + ServiceModel を使用する場合、1 つの入力パラメータを持つコントラクト操作は、入力メッセージについてこのメッセージ形式に準拠します。 同様に、1 つの出力パラメータまたは 1 つの戻り値を持つコントラクト操作は、出力メッセージについてこのメッセージ形式に準拠します。 このような操作の例を次に示します。 + +``` +[ServiceContract] +interface ITestService +{ + [OperationContract] + Stream EchoStream(Stream stream); + + [OperationContract] + Stream DownloadStream(); + + [OperationContract(IsOneWay = true)] + void UploadStream(Stream stream); +} +``` + +### セッション + チャネルのチャンキングでは、メッセージ \(チャンク\) の順序付き配信でメッセージが正確に 1 回だけ配信される必要があります。 つまり、基になるチャネル スタックはセッションフルであることが必要です。 セッションは、トランスポート \(TCP トランスポートなど\) またはセッションフル プロトコル チャネル \(信頼できるセッション チャネルなど\) によって提供されます。 + +### 非同期の送受信 + 非同期の送受信方法は、このバージョンのチャネルのチャンキング サンプルには実装されていません。 + +## プロトコルのチャンキング + チャネルのチャンキングでは、一連のチャンクの開始と終了、および各チャンクのシーケンス番号を示すプロトコルを定義します。 次の 3 つのメッセージ例では、開始メッセージ、チャンク メッセージ、および終了メッセージを、それぞれの主要な特徴を説明するコメントと共に示します。 + +### 開始メッセージ + +``` + + + + http://samples.microsoft.com/chunkingAction + + +53f183ee-04aa-44a0-b8d3-e45224563109 + + + + + +http://tempuri.org/ITestService/EchoStream + + + + + + + + + + +``` + +### チャンク メッセージ + +``` + + + + + http://samples.microsoft.com/chunkingAction + + + + 53f183ee-04aa-44a0-b8d3-e45224563109 + + + + 1096 + + + + + +kfSr2QcBlkHTvQ== + + + + +``` + +### 終了メッセージ + +``` + + + + http://samples.microsoft.com/chunkingAction + + + + 53f183ee-04aa-44a0-b8d3-e45224563109 + + + + + + 79 + + + + + + + + + +``` + +## チャネルのチャンキングのアーキテクチャ + チャンキングを行うチャネルは `IDuplexSessionChannel` で、高レベルで通常のチャネル アーキテクチャに従います。 `ChunkingChannelFactory` と `ChunkingChannelListener` を作成できる `ChunkingBindingElement` があります。 `ChunkingChannelFactory` は、作成を要求されたときに `ChunkingChannel` のインスタンスを作成します。 `ChunkingChannelListener` は、新しい内部チャネルが受け入れられると `ChunkingChannel` のインスタンスを作成します。 メッセージの送受信は `ChunkingChannel` 自体が行います。 + + 1 つ下のレベルでは、`ChunkingChannel` がいくつかのコンポーネントに依存して、チャンキングを行うプロトコルを実装します。 送信側では、このチャネルは、実際にチャンキングを行う `ChunkingWriter` というカスタム `XmlDictionaryWriter` を使用します。 `ChunkingWriter` は内部チャネルを使用して直接チャンクを送信します。 カスタム `XmlDictionaryWriter` を使用すると、本文のサイズが大きい元のメッセージの書き込みと同時にチャンクを送信できます。 つまり、元のメッセージ全体はバッファされません。 + + ![チャネルのチャンキング](../../../../docs/framework/wcf/samples/media/chunkingchannel1.gif "ChunkingChannel1") + + 受信側では、`ChunkingChannel` は内部チャネルからメッセージをプルし、`ChunkingReader` というカスタム `XmlDictionaryReader` に渡します。これにより、受信チャンクから元のメッセージが再構成されます。 `ChunkingChannel` は、この `ChunkingReader` を `ChunkingMessage` というカスタム `Message` 実装でラップし、このメッセージを上の層に戻します。 `ChunkingReader` と `ChunkingMessage` を組み合わせて使用すると、元のメッセージ本文全体をバッファーする代わりに、元のメッセージ本文が上の層によって読み取られるのと同時にメッセージのチャンキング解除を行うことができます。 `ChunkingReader` には、バッファー対象のチャンクの構成可能な最大数を上限として受信チャンクをバッファーするキューがあります。 この上限に達すると、リーダーは、上の層によってメッセージがキューから出される \(つまり元のメッセージ本文の読み取りだけが行われる\) まで待機するか、または受信タイムアウトの上限に達するまで待機します。 + + ![チャネルのチャンキング](../../../../docs/framework/wcf/samples/media/chunkingchannel2.gif "ChunkingChannel2") + +## プログラミング モデルのチャンキング + サービス開発者は `ChunkingBehavior` 属性をコントラクト内の操作に適用することにより、チャンク対象のメッセージを指定できます。 この属性は `AppliesTo` プロパティを公開します。このプロパティを使用すると、開発者は、入力メッセージと出力メッセージのどちらか、またはその両方にチャンキングを適用するように指定できます。 `ChunkingBehavior` 属性の使用方法を次の例に示します。 + +``` +[ServiceContract] +interface ITestService +{ + [OperationContract] + [ChunkingBehavior(ChunkingAppliesTo.Both)] + Stream EchoStream(Stream stream); + + [OperationContract] + [ChunkingBehavior(ChunkingAppliesTo.OutMessage)] + Stream DownloadStream(); + + [OperationContract(IsOneWay=true)] + [ChunkingBehavior(ChunkingAppliesTo.InMessage)] + void UploadStream(Stream stream); + +} + +``` + + このプログラミング モデルから、`ChunkingBindingElement` は、チャンク対象のメッセージを識別するアクション URI のリストをコンパイルします。 各送信メッセージのアクションはこのリストと比較され、そのメッセージはチャンク対象なのか、または直接送信する必要があるのかが判断されます。 + +## Send 操作の実装 + 高レベルの Send 操作では、送信メッセージをチャンクする必要があるかどうかを最初にチェックし、その必要がない場合は内部チャネルを使用して直接メッセージを送信します。 + + メッセージのチャンキングが必要な場合、Send は新しい `ChunkingWriter` を作成して、この `ChunkingWriter` を渡す送信メッセージで `WriteBodyContents` を呼び出します。 次に、`ChunkingWriter` はメッセージのチャンキング \(およびチャンク開始メッセージへの元のメッセージ ヘッダーのコピー\) を行い、内部チャネルを使用してチャンクを送信します。 + + いくつかの細かい点に注意してください。 + +- Send は最初に `ThrowIfDisposedOrNotOpened` を呼び出し、`CommunicationState` が開かれた状態にします。 + +- Send は、セッションごとに一度に 1 つのメッセージだけを送信できるように同期されます。 `sendingDone` という `ManualResetEvent` があり、これはチャンキングが行われたメッセージが送信されたときにリセットされます。 チャンク終了メッセージが送信されると、このイベントが設定されます。 Send メソッドは、このイベントが設定されるのを待機した後でメッセージの送信を試行します。 + +- Send は `CommunicationObject.ThisLock` をロックし、送信中に同期状態が変更されないようにします。 の状態とステート マシンの詳細については、 のドキュメントを参照してください。 + +- Send に渡されるタイムアウトは、すべてのチャンクの送信を含む送信操作全体のタイムアウトとして使用されます。 + +- 元のメッセージ本文全体がバッファされないように、カスタムの `XmlDictionaryWriter` デザインが選択されています。 `message.GetReaderAtBodyContents` を使用して本文の `XmlDictionaryReader` を取得する場合、本文全体がバッファされます。 この場合は、代わりに、`message.WriteBodyContents` に渡されるカスタムの `XmlDictionaryWriter` があります。 メッセージがライタの WriteBase64 を呼び出すと、ライタはチャンクをパッケージ化してメッセージを作成し、内部チャンネルを使用して送信します。 WriteBase64 は、チャンクが送信されるまでブロックされます。 + +## Receive 操作の実装 + 高レベルの Receive 操作では、最初に受信メッセージが `null` でないことをチェックすると共に、アクションが `ChunkingAction` であることをチェックします。 どちらかの条件が満たされていない場合、メッセージは Receive によって変更されないまま返されます。 それ以外の場合、Receive は新しい `ChunkingReader` と、それを \(`GetNewChunkingMessage` を呼び出して\) ラップする新しい `ChunkingMessage` を作成します。 Receive は、新しい `ChunkingMessage` を返す前に、スレッド プールのスレッドを使用して `ReceiveChunkLoop` を実行します。これによってループ内に `innerChannel.Receive` が呼び出され、チャンク終了メッセージを受信するか、または受信タイムアウトに達するまで、チャンクが `ChunkingReader` に渡されます。 + + いくつかの細かい点に注意してください。 + +- Send と同様、Receive は最初に `ThrowIfDisposedOrNotOepned` を呼び出して、`CommunicationState` が開かれた状態にします。 + +- また Receive も、セッションから一度に 1 つのメッセージだけを受信できるように同期されます。 これは特に重要です。チャンク開始メッセージが受信されると、それ以降受信されるすべてのメッセージは、チャンク終了メッセージが受信されるまで、この新しいチャンク シーケンス内のチャンクであると想定されるためです。 Receive は、現在チャンキングを解除中のメッセージに属するすべてのチャンクが受信されるまでは、内部チャネルからメッセージをプルできません。 これを実現するため、Receive は `currentMessageCompleted` という `ManualResetEvent` を使用します。これはチャンク終了メッセージが受信されたときに設定され、新しいチャンク開始メッセージが受信されたときにリセットされます。 + +- Receive は Send と異なり、受信中に同期状態の遷移を妨げません。 たとえば、受信中に Close を呼び出して、保留中の元のメッセージの受信が完了するか、または指定されたタイムアウト値に達するまで待機できます。 + +- Receive に渡されるタイムアウトは、すべてのチャンクの受信を含む受信操作全体のタイムアウトとして使用されます。 + +- メッセージを処理するレイヤでメッセージ本文を処理する速度が、チャンク メッセージを受信する速度より遅い場合、`ChunkingReader` は、`ChunkingBindingElement.MaxBufferedChunks` で指定された上限に達するまでこうした受信チャンクをバッファします。 この上限に達すると、バッファされたチャンクが処理されるか、または受信タイムアウトに達するまで、チャンクは下位層からプルされなくなります。 + +## CommunicationObject のオーバーライド + +### OnOpen + `OnOpen` は `innerChannel.Open` を呼び出して内部チャネルを開きます。 + +### OnClose + `OnClose` は、保留状態の `ReceiveChunkLoop` が停止したことを通知するため、最初に `stopReceive` を `true` に設定します。 次に `receiveStopped` `ManualResetEvent` を待機します。これは、`ReceiveChunkLoop` が停止したときに設定されます。 `ReceiveChunkLoop` が指定されたタイムアウト内で停止した場合、`OnClose` はタイムアウトの残り時間で `innerChannel.Close` を呼び出します。 + +### OnAbort + `OnAbort` は、`innerChannel.Abort` を呼び出して内部チャネルを中止します。 保留中の `ReceiveChunkLoop` がある場合は、保留中の `innerChannel.Receive` 呼び出しから例外を受け取ります。 + +### OnFaulted + チャネルでエラーが発生した場合、`ChunkingChannel` では特別な動作は必要ありません。したがって、`OnFaulted` はオーバーライドされません。 + +## チャネル ファクトリの実装 + `ChunkingChannelFactory` は `ChunkingDuplexSessionChannel` のインスタンスを作成し、遷移した状態を内部チャネル ファクトリに転送します。 + + `OnCreateChannel` は内部チャネル ファクトリを使用して、`IDuplexSessionChannel` 内部チャネルを作成します。 次に、新しい `ChunkingDuplexSessionChannel` を作成し、それに内部チャネル、チャンク対象のメッセージ アクションのリスト、および受信時にバッファするチャンクの最大数を渡します。 チャンク対象のメッセージ アクションのリストと、バッファするチャンクの最大数の 2 つは、パラメータとしてコンストラクタの `ChunkingChannelFactory` に渡されます。 `ChunkingBindingElement` に関するセクションでは、これらの値の発生元について説明します。 + + `OnOpen`、`OnClose`、`OnAbort`、およびそれぞれと同等の非同期のメソッドは、対応する状態遷移メソッドを内部チャネル ファクトリで呼び出します。 + +## チャネル リスナの実装 + `ChunkingChannelListener` は、内部チャネル リスナのラッパーです。 この主な機能は、内部チャネル リスナへの呼び出しを代行するほか、内部チャネル リスナから受け入れられたチャネルを新しい `ChunkingDuplexSessionChannels` でラップすることです。 これは、`OnAcceptChannel` と `OnEndAcceptChannel` で行われます。 新しく作成された `ChunkingDuplexSessionChannel` は、以前説明した他のパラメータと共に内部チャネルに渡されます。 + +## バインディング要素とバインディングの実装 + `ChunkingBindingElement` は、`ChunkingChannelFactory` および `ChunkingChannelListener` を作成します。 `ChunkingBindingElement` は `CanBuildChannelFactory`\ と `CanBuildChannelListener`\ の T が `IDuplexSessionChannel` \(チャネルのチャンキングでサポートされる唯一のチャネル\) の型であるかどうかをチェックし、バインディング内の他のバインディング要素がこのチャネル型をサポートすることを確認します。 + + `BuildChannelFactory`\ は、要求されたチャネル型を構築できることをまず確認し、次にチャンク対象のメッセージ アクションのリストを取得します。 詳細については、次のセクションを参照してください。 次に、新しい `ChunkingChannelFactory` を作成し、それに内部チャネル ファクトリ \(`context.BuildInnerChannelFactory` から返されたままの状態での\)、メッセージ アクションのリスト、およびバッファするチャンクの最大数を渡します。 チャンクの最大数は、`ChunkingBindingElement` によって公開される `MaxBufferedChunks` というプロパティによって指定されます。 + + `BuildChannelListener` には、`ChunkingChannelListener` を作成してこれに内部チャネル リスナーを渡す同様の実装があります。 + + このサンプルには、`TcpChunkingBinding` というバインディング例が含まれています。 このバインディングは、`TcpTransportBindingElement` と `ChunkingBindingElement` の 2 つのバインディング要素で構成されています。 このバインディングは、`MaxBufferedChunks` プロパティを公開する他にも、`TcpTransportBindingElement` プロパティの一部を設定します。たとえば、ヘッダーについて、`MaxReceivedMessageSize` を `ChunkingUtils.ChunkSize` \+ 100 KB に設定します。 + + また、`TcpChunkingBinding` は、`IBindingRuntimePreferences` を実装し、`ReceiveSynchronously` メソッドに対して true を返すことで、同期 Receive 呼び出しのみが実装されていることを示します。 + +### チャンク対象のメッセージの判断 + チャネルのチャンキングによってチャンクされるメッセージは、`ChunkingBehavior` 属性を介して識別されるメッセージのみです。 `ChunkingBehavior` クラスは `IOperationBehavior` を実装し、`AddBindingParameter` メソッドの呼び出しによって実装されます。 このメソッドでは、`ChunkingBehavior` が `AppliesTo` プロパティの値 \(`InMessage` または`OutMessage` のいずれか、またはその両方\) を調べ、どのメッセージがチャンク対象かを判断します。 次に、チャンク対象の各メッセージのアクションを \(`OperationDescription` の Messages コレクションから\) 取得し、これを `ChunkingBindingParameter` のインスタンス内に含まれている文字列コレクションに追加します。 そして、この `ChunkingBindingParameter` を指定された `BindingParameterCollection` に追加します。 + + この `BindingParameterCollection` は、バインディング要素がチャネル ファクトリまたはチャネル リスナを作成するときに、`BindingContext` 内でバインディングの各バインディング要素に渡されます。 `ChunkingBindingElement` が `BuildChannelFactory` と `BuildChannelListener` を実装すると、この `ChunkingBindingParameter` が `BindingContext’` の `BindingParameterCollection` からプルされます。 次に、`ChunkingBindingParameter` に含まれているアクションのコレクションが `ChunkingChannelFactory` または `ChunkingChannelListener` に渡され、その後 `ChunkingDuplexSessionChannel` に渡されます。 + +## サンプルの実行 + +#### サンプルをセットアップ、ビルド、および実行するには + +1. 次のコマンドを使用して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 4.0 をインストールします。 + + ``` + %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable + + ``` + +2. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +3. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +5. 最初に Service.exe を実行して次に Client.exe を実行し、両方のコンソール ウィンドウで出力を表示します。 + + このサンプルを実行すると、次の出力が予測されます。 + + クライアント: + +``` +Press enter when service is available + + > Sent chunk 1 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + > Sent chunk 2 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + > Sent chunk 3 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + > Sent chunk 4 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + > Sent chunk 5 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + > Sent chunk 6 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + > Sent chunk 7 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + > Sent chunk 8 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + > Sent chunk 9 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + > Sent chunk 10 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + < Received chunk 1 of message 5b226ad5-c088-4988-b737-6a565e0563dd + < Received chunk 2 of message 5b226ad5-c088-4988-b737-6a565e0563dd + < Received chunk 3 of message 5b226ad5-c088-4988-b737-6a565e0563dd + < Received chunk 4 of message 5b226ad5-c088-4988-b737-6a565e0563dd + < Received chunk 5 of message 5b226ad5-c088-4988-b737-6a565e0563dd + < Received chunk 6 of message 5b226ad5-c088-4988-b737-6a565e0563dd + < Received chunk 7 of message 5b226ad5-c088-4988-b737-6a565e0563dd + < Received chunk 8 of message 5b226ad5-c088-4988-b737-6a565e0563dd + < Received chunk 9 of message 5b226ad5-c088-4988-b737-6a565e0563dd + < Received chunk 10 of message 5b226ad5-c088-4988-b737-6a565e0563dd +``` + + サーバー + +``` +Service started, press enter to exit + < Received chunk 1 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + < Received chunk 2 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + < Received chunk 3 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + < Received chunk 4 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + < Received chunk 5 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + < Received chunk 6 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + < Received chunk 7 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + < Received chunk 8 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + < Received chunk 9 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + < Received chunk 10 of message 867c1fd1-d39e-4be1-bc7b-32066d7ced10 + > Sent chunk 1 of message 5b226ad5-c088-4988-b737-6a565e0563dd + > Sent chunk 2 of message 5b226ad5-c088-4988-b737-6a565e0563dd + > Sent chunk 3 of message 5b226ad5-c088-4988-b737-6a565e0563dd + > Sent chunk 4 of message 5b226ad5-c088-4988-b737-6a565e0563dd + > Sent chunk 5 of message 5b226ad5-c088-4988-b737-6a565e0563dd + > Sent chunk 6 of message 5b226ad5-c088-4988-b737-6a565e0563dd + > Sent chunk 7 of message 5b226ad5-c088-4988-b737-6a565e0563dd + > Sent chunk 8 of message 5b226ad5-c088-4988-b737-6a565e0563dd + > Sent chunk 9 of message 5b226ad5-c088-4988-b737-6a565e0563dd + > Sent chunk 10 of message 5b226ad5-c088-4988-b737-6a565e0563dd +``` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/circular-tracing.md b/docs/framework/wcf/samples/circular-tracing.md new file mode 100644 index 00000000000..028198105cb --- /dev/null +++ b/docs/framework/wcf/samples/circular-tracing.md @@ -0,0 +1,71 @@ +--- +title: "循環トレース | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 5ff139f9-8806-47bc-8f33-47fe6c436b92 +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# 循環トレース +このサンプルでは、循環バッファ トレース リスナの実装を示します。製品版サービスの一般的なシナリオは、長期間使用できるサービスを持つことと、トレース ログを低レベルで有効にすることです。こうしたサービスは、大量のディスク領域を消費します。サービスのトラブルシューティングを行う場合、問題の解決に関連するのはトレース ログの最新データです。このサンプルで示す循環バッファ トレース リスナの実装では、設定可能なデータ量を上限とする最新のトレースのみがディスク上に保持されます。このサンプルは「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいており、カスタム トレース リスナを含んでいます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルでは、「[トレースとメッセージ ログ](../../../../docs/framework/wcf/samples/tracing-and-message-logging.md)」サンプルを理解し、「[トレースとメッセージ ログ](../../../../docs/framework/wcf/samples/tracing-and-message-logging.md)」サンプルで取り上げられているドキュメントを読んでいることを前提にしています。 + +## 循環バッファ トレース リスナ + 循環バッファ トレース リスナの実装の概念とは、2 つのファイルを使って、必要なトレース ログ データの全体量の半分を上限としたデータをそれぞれに保存することです。リスナは 1 つのファイルを作成して、データ サイズの半分という限界に到達するまでデータを書き込みます。この限界に到達した時点で、2 番目のファイルに切り替わります。2 番目のファイルの限界に到達したら、リスナは最初のファイルを新しいトレースで上書きします。 + + このリスナは `XmlWriteTraceListener` から派生し、ログを[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md) で表示できるようにします。ログの表示を試みる際に、サービス トレース ビューア ツールで 2 つのログ ファイルを両方同時に開くと、これらのファイルを簡単に再結合することができます。サービス トレース ビューア ツールは、トレースが正しい順序で表示されるように自動的にトレースの並べ替えを管理します。 + +## 構成 + サービスは、リスナとソースの要素に対して次のコードを追加することによって、循環バッファ トレース リスナを使用するように構成できます。ファイルの最大サイズは、循環トレース リスナの構成の `maxFileSizeKB` 属性を設定することによって指定します。このコードを次に示します。 + +``` + + + + + + + + + + + + + + +``` + +#### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Management\CircularTracing` + +## 参照 + [AppFabric の監視のサンプル](http://go.microsoft.com/fwlink/?LinkId=193959) \ No newline at end of file diff --git a/docs/framework/wcf/samples/client-interoperability.md b/docs/framework/wcf/samples/client-interoperability.md new file mode 100644 index 00000000000..6325e2f83c3 --- /dev/null +++ b/docs/framework/wcf/samples/client-interoperability.md @@ -0,0 +1,27 @@ +--- +title: "クライアント相互運用性 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e890e40a-b76a-48c4-9e5b-a4b385fac847 +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# クライアント相互運用性 +このセクションには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] と他のテクノロジとの相互運用性を示すサンプルが含まれています。 + +## このセクションの内容 + [ASMX Web サービスとの相互運用性](../../../../docs/framework/wcf/samples/interoperating-with-asmx-web-services.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーションを既存の ASMX Web サービスと統合する方法を示します。 + + [XMLSerializer サンプル](../../../../docs/framework/wcf/samples/xmlserializer-sample.md) + と互換性のある型をシリアル化および逆シリアル化する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/client-validation.md b/docs/framework/wcf/samples/client-validation.md new file mode 100644 index 00000000000..8c6f0660b89 --- /dev/null +++ b/docs/framework/wcf/samples/client-validation.md @@ -0,0 +1,74 @@ +--- +title: "クライアント検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f0c1f805-1a81-4d0d-a112-bf5e2e87a631 +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# クライアント検証 +サービスは頻繁にメタデータを公開し、クライアント プロキシの型を自動的に生成して構成できるようにします。 サービスが信頼できない場合、クライアント アプリケーションでは、セキュリティ、トランザクション、サービス コントラクトの型などに関して、メタデータがクライアント アプリケーションのポリシーに合致しているかどうか検証する必要があります。 次のサンプルでは、サービス エンドポイントを検証するクライアント エンドポイントの動作を記述して、サービス エンドポイントを安全に使用できることを確認する方法を示します。 + + サービスは 4 つのサービス エンドポイントを公開します。 1 つ目は WSDualHttpBinding を使用するエンドポイント、2 つ目は NTLM 認証を使用するエンドポイント、3 つ目はトランザクション フローを有効にするエンドポイント、4 つ目は証明書ベースの認証を使用するエンドポイントです。 + + クライアントは クラスを使用してサービスのメタデータを取得します。 クライアントは検証動作を使用して、二重バインディング、NTLM 認証、およびトランザクション フローを禁止するポリシーを適用します。 クライアント アプリケーションは、サービスのメタデータからインポートされた インスタンスごとに `InternetClientValidatorBehavior` エンドポイント動作のインスタンスを に追加し、その後 [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントを使用してエンドポイントへの接続を試行します。 動作の `Validate` メソッドはサービスで操作が呼び出される前に実行され、`InvalidOperationExceptions` をスローすることによってクライアントのポリシーを適用します。 + +### サンプルをビルドするには + +1. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +### サンプルを同じコンピューターで実行するには + +1. 管理特権を使用して Visual Studio コマンド プロンプトを開き、サンプルのインストール フォルダーから Setup.bat を実行します。 これにより、サンプルの実行に必要なすべての証明書がインストールされます。 + +2. サービス アプリケーションを \\service\\bin\\Debug で実行します。 + +3. クライアント アプリケーションを \\client\\bin\\Debug で実行します。 クライアント アクティビティがクライアントのコンソール アプリケーションに表示されます。 + +4. クライアントとサービス間で通信できない場合は、「[Troubleshooting Tips](http://msdn.microsoft.com/ja-jp/8787c877-5e96-42da-8214-fa737a38f10b)」を参照してください。 + +5. サンプルの使用が終わったら、Cleanup.bat を実行して証明書を削除してください。 他のセキュリティ サンプルでも同じ証明書を使用します。 + +### サンプルを複数のコンピューターで実行するには + +1. サーバー上で、管理特権を使用して Visual Studio コマンド プロンプトを実行し、「`setup.bat service`」と入力します。 `setup.bat` `` に `service` 引数を指定して実行すると、コンピューターの完全修飾ドメイン名を使用してサービス証明書が作成され、Service.cer というファイルにエクスポートされます。 + +2. サーバーで、App.config を編集して新しい証明書の名前を反映します。 つまり、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md) 要素の `findValue` 属性をコンピューターの完全修飾ドメイン名に変更します。 + +3. Service.cer ファイルを、サービス ディレクトリからクライアント コンピューターのクライアント ディレクトリにコピーします。 + +4. クライアント上で、管理者特権を使用して Visual Studio コマンド プロンプトを開き、「`setup.bat client`」と入力します。 `setup.bat` `` に `client` 引数を指定して実行すると、Client.com というクライアント証明書が作成され、Client.cer というファイルにエクスポートされます。 + +5. client.cs ファイルで、MEX エンドポイントと、既定のサーバー証明書を設定するための `findValue` のアドレス値を、サービスの新しいアドレスに合わせて変更します。 そのためには、localhost をサーバーの完全修飾ドメイン名に置き換えます。 再ビルドします。 + +6. Client.cer ファイルを、クライアント ディレクトリからサーバーのサービス ディレクトリにコピーします。 + +7. クライアント上で、管理特権を使用して Visual Studio コマンド プロンプトを開き、ImportServiceCert.bat を実行します。 これにより、サービス証明書が Service.cer ファイルから CurrentUser \- TrustedPeople ストアにインポートされます。 + +8. サーバー上で、管理特権を使用して Visual Studio コマンド プロンプトを開き、ImportClientCert.bat を実行します。 これにより、クライアント証明書が Client.cer ファイルから LocalMachine \- TrustedPeople ストアにインポートされます。 + +9. サービス コンピューターの Visual Studio でサービス プロジェクトをビルドし、service.exe を実行します。 + +10. クライアント コンピューターで、client.exe を実行します。 + + 1. クライアントとサービス間で通信できない場合は、「[Troubleshooting Tips](http://msdn.microsoft.com/ja-jp/8787c877-5e96-42da-8214-fa737a38f10b)」を参照してください。 + +### サンプルの実行後にクリーンアップするには + +- サンプルの実行が終わったら、サンプル フォルダーにある Cleanup.bat を実行します。 + + > [!NOTE] + > このサンプルを複数のコンピューターで実行している場合、このスクリプトはサービス証明書をクライアントから削除しません。 複数のコンピューターで証明書を使用する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サンプルを実行した場合は、CurrentUser \- TrustedPeople ストアにインストールされたサービス証明書を忘れずに削除してください。 削除するには、コマンド `certmgr -del -r CurrentUser -s TrustedPeople -c -n <サーバー コンピューターの完全修飾名>`を実行します。たとえば、"certmgr \-del \-r CurrentUser \-s TrustedPeople \-c \-n server1.contoso.com" となります。 + +## 参照 + [メタデータを使用する](../../../../docs/framework/wcf/feature-details/using-metadata.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/client.md b/docs/framework/wcf/samples/client.md new file mode 100644 index 00000000000..58c31b7c44b --- /dev/null +++ b/docs/framework/wcf/samples/client.md @@ -0,0 +1,42 @@ +--- +title: "クライアント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fabb0c70-b79b-4e58-a5d3-9705de85ee5b +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# クライアント +このセクションには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアント アプリケーションを示すサンプルが含まれています。 + +## このセクションの内容 + [クライアント相互運用性](../../../../docs/framework/wcf/samples/client-interoperability.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] と他の技術間の相互運用性を示します。 + + [アドレス ヘッダー](../../../../docs/framework/wcf/samples/address-headers.md) + クライアントが [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用して、サービスに参照パラメーターを渡す方法を示します。 + + [チャネル ファクトリ](../../../../docs/framework/wcf/samples/channel-factory.md) + クライアント アプリケーションが、生成されたクライアントではなく クラスを含むチャネルを作成できる方法を示します。 + + [予期される例外](../../../../docs/framework/wcf/samples/expected-exceptions.md) + 型指定のあるクライアントを使用する際に、予期される例外をキャッチする方法を示します。 + + [メタデータの抽出](../../../../docs/framework/wcf/samples/retrieve-metadata.md) + サービスからメタデータを動的に取得し、通信に使用するエンドポイントを選択するクライアントを実装する方法を示します。 + + [Using ステートメントに関する問題の回避](../../../../docs/framework/wcf/samples/avoiding-problems-with-the-using-statement.md) + 型指定のあるクライアントを使用する際に C\# の "using" ステートメントを使用せずに、リソースを自動的にクリーンアップする方法を示します。 + + [型指定のあるクライアント](../../../../docs/framework/wcf/samples/typed-client.md) + [ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) で生成された型指定のあるクライアントから情報を取得する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/concurrency.md b/docs/framework/wcf/samples/concurrency.md new file mode 100644 index 00000000000..3cdf7a34441 --- /dev/null +++ b/docs/framework/wcf/samples/concurrency.md @@ -0,0 +1,122 @@ +--- +title: "同時実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "同時実行のサンプル [Windows Communication Foundation]" + - "サービスの動作, 同時実行のサンプル" +ms.assetid: f8dbdfb3-6858-4f95-abe3-3a1db7878926 +caps.latest.revision: 32 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 32 +--- +# 同時実行 +同時実行のサンプルでは、 列挙体と共に使用する方法を示します。この列挙体は、サービスのインスタンスがメッセージを順番に処理するか、または同時に処理するかを制御します。 このサンプルは、`ICalculator` サービス コントラクトを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 このサンプルでは、`ICalculator` から継承される新しいコントラクト `ICalculatorConcurrency` を定義します。これによって、サービスの同時実行の状態を検査するための 2 つの操作が追加されます。 同時実行設定を変更してから、クライアントを実行して動作の変更を確認します。 + + この例では、クライアントはコンソール アプリケーション \(.exe\) であり、サービスはインターネット インフォメーション サービス \(IIS\) によってホストされます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + 選択可能な同時実行モードは次の 3 つです。 + +- `Single`: 各サービス インスタンスは、一度に 1 つのメッセージを処理します。 これが既定の同時実行モードです。 + +- `Multiple`: 各サービス インスタンスは、同時に複数のメッセージを処理します。 この同時実行モードを使用するには、サービスの実装がスレッドセーフである必要があります。 + +- `Reentrant`: 各サービス インスタンスは、一度に 1 つのメッセージを処理しますが、再入可能呼び出しを受け入れます。 サービスがこの呼び出しを受け入れるのは、コール アウトするときだけです。 再入は「[ConcurrencyMode.Reentrant](../../../../docs/framework/wcf/samples/concurrencymode-reentrant.md)」サンプルで説明されています。 + + 同時実行の使用は、インスタンス化モードに関連します。 インスタンス化では、各メッセージが新しいサービス インスタンスによって処理されるため、同時実行は関係しません。 インスタンス化では、 のいずれかの同時実行が関係します。これは 1 つのインスタンスがメッセージを順番に処理するか、同時に処理するかによって決まります。 インスタンス化では、どの同時実行モードも関係する可能性があります。 + + サービス クラスは、`[ServiceBehavior(ConcurrencyMode=)]` 属性を使用して同時実行動作を指定します。次のサンプル コードを参照してください。 行のコメント化を変更して、`Single` および `Multiple` の同時実行モードをそれぞれ試してみてください。 同時実行モードを変更したら、サービスを再ビルドする必要があります。 + +``` +// Single allows a single message to be processed sequentially by each service instance. +//[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.Single)] + +// Multiple allows concurrent processing of multiple messages by a service instance. +// The service implementation should be thread-safe. This can be used to increase throughput. +[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)] + +// Uses Thread.Sleep to vary the execution time of each operation. +public class CalculatorService : ICalculatorConcurrency +{ + int operationCount; + + public double Add(double n1, double n2) + { + operationCount++; + System.Threading.Thread.Sleep(180); + return n1 + n2; + } + + public double Subtract(double n1, double n2) + { + operationCount++; + System.Threading.Thread.Sleep(100); + return n1 - n2; + } + + public double Multiply(double n1, double n2) + { + operationCount++; + System.Threading.Thread.Sleep(150); + return n1 * n2; + } + + public double Divide(double n1, double n2) + { + operationCount++; + System.Threading.Thread.Sleep(120); + return n1 / n2; + } + + public string GetConcurrencyMode() + { + // Return the ConcurrencyMode of the service. + ServiceHost host = (ServiceHost)OperationContext.Current.Host; + ServiceBehaviorAttribute behavior = host.Description.Behaviors.Find(); + return behavior.ConcurrencyMode.ToString(); + } + + public int GetOperationCount() + { + // Return the number of operations. + return operationCount; + } +} +``` + + サンプルの既定の設定では、 インスタンス化と 同時実行が使用されます。 クライアント コードは、非同期プロキシを使用するように変更されています。 これにより、クライアントはサービスを呼び出した後に、応答を待たずに次の呼び出しを行うことができます。 サービスの同時実行モードの動作の違いを観察してください。 + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。 実行中のサービスの同時実行モードが表示され、各操作が呼び出され、その後で操作数が表示されます。 同時実行モードが `Multiple` の場合、結果が返される順序は呼び出された順序とは異なります。サービスは複数のメッセージを同時に実行するからです。 同時実行モードを `Single` に変更すると、結果は呼び出された順序どおりに返されます。サービスは各メッセージを順次処理するからです。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. Svcutil.exe を使用してプロキシ クライアントを生成する場合は、`/async` オプションを指定します。 + +3. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Behaviors\Concurrency` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/concurrencymode-reentrant.md b/docs/framework/wcf/samples/concurrencymode-reentrant.md new file mode 100644 index 00000000000..5e0e45a2935 --- /dev/null +++ b/docs/framework/wcf/samples/concurrencymode-reentrant.md @@ -0,0 +1,98 @@ +--- +title: "ConcurrencyMode 再入 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b2046c38-53d8-4a6c-a084-d6c7091d92b1 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# ConcurrencyMode 再入 +このサンプルでは、サービス実装で ConcurrencyMode.Reentrant を使用する必要性と影響を示します。ConcurrencyMode.Reentrant は、サービス \(またはコールバック\) が指定された時間で処理するメッセージが 1 つだけであることを示します \(`ConcurencyMode.Single` に似ています\)。スレッド セーフを確保するには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] はメッセージを処理する `InstanceContext` をロックして、他のメッセージが処理されないようにします。再入モードの場合、サービスが呼び出しの送信を行う直前に `InstanceContext` のロックが解除されます。これによりその後の呼び出しが可能になり \(サンプルに示すように再入可能になり\)、次回サービスに呼び出しが届いたときにロックされます。この動作を示すために、サンプルでは、クライアントとサービスが双方向コントラクトを使用してメッセージを相互に送信する方法を示します。 + + 定義されているコントラクトは双方向コントラクトで、サービスによって実装される `Ping` メソッドと、クライアントによって実装されるコールバック メソッド `Pong` を含みます。クライアントは、サーバーの `Ping` メソッドを呼び出します。このメソッドには、呼び出しを初期化するチック カウントが含まれています。サービスはチック カウントが 0 でないことを確認し、チック カウントをデクリメントしながらコールバックの `Pong` メソッドを呼び出します。これは、サンプルの次のコードによって行います。 + +``` + +public void Ping(int ticks) +{ + Console.WriteLine("Ping: Ticks = " + ticks); + //Keep pinging back and forth till Ticks reaches 0. + if (ticks != 0) + { + OperationContext.Current.GetCallbackChannel().Pong((ticks - 1)); + } +} + +``` + + コールバックの `Pong` 実装のロジックは、`Ping` 実装のロジックと同じです。つまり、このメソッドはチック カウントが 0 でないことを確認し、その後コールバック チャネル \(この場合は、元の `Ping` メッセージの送信に使用されたチャネル\) の `Ping` メソッドを呼び出し、チック カウントを 1 だけデクリメントします。チック カウントが 0 になると、このメソッドは返されます。これによってすべての応答のラップが解除され、クライアントが呼び出して初期化した最初の呼び出しに戻されます。これを、コールバック実装で示します。 + +``` + +public void Pong(int ticks) +{ + Console.WriteLine("Pong: Ticks = " + ticks); + if (ticks != 0) + { + //Retrieve the Callback Channel (in this case the Channel which was used to send the + //original message) and make an outgoing call until ticks reaches 0. + IPingPong channel = OperationContext.Current.GetCallbackChannel(); + channel.Ping((ticks - 1)); + } +} + +``` + + `Ping` メソッドと `Pong` メソッドはどちらも要求\/応答です。つまり、`Ping` の最初の呼び出しは、`CallbackChannel.Pong()` の呼び出しが返される以前には返されません。クライアントでは、`Pong` メソッドは、このメソッドを返す次の `Ping` 呼び出しが返される以前には返されません。コールバックとサービスはどちらも、保留中の要求に対して応答できるように、あらかじめ要求\/応答の呼び出しを送信する必要があるので、どちらの実装も ConcurrencyMode.Reentrant 動作でマークする必要があります。 + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. サンプルを単一コンピュータ構成または複数コンピュータ構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## 使用例 + サンプルを実行するには、クライアント プロジェクトとサーバー プロジェクトをビルドします。次に 2 つのコマンド ウィンドウを開き、ディレクトリを \\\CS\\Service\\bin\\debug と \\\CS\\Client\\bin\\debug に変更します。次に、「`service.exe`」と入力してサービスを開始し、チックの初期値が入力パラメーターとして渡された Client.exe を呼び出します。サンプルでは、チックとして 10 が出力されます。 + +``` + +Prompt>Service.exe +ServiceHost Started. Press Enter to terminate service. +Ping: Ticks = 10 +Ping: Ticks = 8 +Ping: Ticks = 6 +Ping: Ticks = 4 +Ping: Ticks = 2 +Ping: Ticks = 0 + +Prompt>Client.exe 10 +Pong: Ticks = 9 +Pong: Ticks = 7 +Pong: Ticks = 5 +Pong: Ticks = 3 +Pong: Ticks = 1 + +``` + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Reentrant` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/conditional-get-and-put.md b/docs/framework/wcf/samples/conditional-get-and-put.md new file mode 100644 index 00000000000..6ab3774644e --- /dev/null +++ b/docs/framework/wcf/samples/conditional-get-and-put.md @@ -0,0 +1,55 @@ +--- +title: "条件付きの Get と Put | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3d22067f-57b8-4e0f-a571-a694512187ae +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 条件付きの Get と Put +このサンプルでは、新しい条件付きの取得 API と更新 API を WCF REST プログラミング モデルで使用する方法を示します。条件付きの取得と更新はリソース指向の REST サービスに最も適しているため、このサンプルでは[基本的なリソース サービス](../../../../docs/framework/wcf/samples/basic-resource-service.md)のサンプルを拡張します。ここでは、[!INCLUDE[netfx40_long](../../../../includes/netfx40-long-md.md)] で導入された新しい API を使用して、条件付きの取得と更新のサポートを[基本的なリソース サービス](../../../../docs/framework/wcf/samples/basic-resource-service.md)のサンプルに追加する方法について説明します。 + +## 使用例 + 条件付きの取得と更新 + +## 説明 + このサンプルの WCF サービスでは、リソース指向の REST 方式で顧客のコレクションが公開されます。サービスの実装の詳細については、「[基本的なリソース サービス](../../../../docs/framework/wcf/samples/basic-resource-service.md)」のサンプルを参照してください。 + + このサンプルでは、条件付きの取得機能と更新機能を[基本的なリソース サービス](../../../../docs/framework/wcf/samples/basic-resource-service.md)のサンプルに追加します。条件付きの取得と更新では、HTTP のエンティティ タグと HTTP の If\-None\-Match ヘッダーおよび If\-Match ヘッダーを使用して、指定されたリソースの最新のエンティティがクライアントにあるかどうかを検証します。しかし、HTTP の If\-None\-Match ヘッダーと If\-Match ヘッダーを正しく解析するコードを実装することは、面倒であるだけでなく間違いの元にもなります。そのため、 メソッドと メソッドが追加され、 の現在のインスタンスを使用してアクセスできるようになっています。さらに、 に `SetETag` メソッドが追加されているため、有効なエンティティ タグを返すのも簡単になります。 + + メソッドは、\[WebGet\] 操作で使用されることを想定しています。このメソッドは、指定されたリソースの現在のエンティティ タグを `entityTag` パラメーターとして取得します。これは、`string`、`int`、`long`、または `Guid` のいずれかになります。 メソッドは、エンティティ タグを要求の HTTP If\-None\-Match ヘッダーと照合してチェックします。エンティティ タグが HTTP If\-None\-Match ヘッダーにある場合、ステータス コード 304 \(変更なし\) が設定された がスローされます。それ以外の場合は、メソッドから制御が戻ります。条件付きの取得メカニズムでは、クライアントからサーバーにそのエンティティを持っていることを通知し、クライアントがまだ現在のエンティティを持っていない場合にのみエンティティを送信することができます。 メソッドの使用例は、サービスの `GetCustomer` 操作および `GetCustomers` 操作で確認できます。 の呼び出しは戻らない場合があることに注意してください。そのため、操作を実装するときは、 の呼び出しの実行前に、要求が成功することがわかるようにする必要があります。そうすることで、 の呼び出しがなかった場合でも、成功を示すステータス コードが設定された応答がサービスから送信されます。 + + メソッドは、 メソッドに似ています。このメソッドも、指定されたリソースの現在のエンティティ タグを取得します。ただし、このメソッドは、メソッドが "PUT" または "DELETE" に設定された \[WebInvoke\] 操作で使用されることを想定しています。 メソッドは、エンティティ タグを要求の HTTP If\-Match ヘッダーと照合してチェックします。エンティティ タグが HTTP If\-Match ヘッダーにない場合、ステータス コード 412 \(必須条件に失敗しました\) が設定された がスローされます。条件付きの更新メカニズムでは、クライアントからサーバーにリソースのそのエンティティを持っていることを通知し、クライアントが現在のエンティティを持っている場合にのみリソースの変更を許可することができます。 メソッドの使用例は、サービスの `UpdateCustomer` 操作および `DeleteCustomer` 操作で確認できます。 と同様に、 の呼び出しは戻らない場合があることに注意してください。そのため、操作を実装するときは、 の呼び出しの実行前に、要求が成功することがわかるようにする必要があります。そうすることで、 の呼び出しがなかった場合でも、成功を示すステータス コードがサービスから返されます。 + + このサンプルは、コンソール アプリケーション内で実行される自己ホスト型サービスとクライアントで構成されています。コンソール アプリケーションが実行されると、クライアントはサービスに要求を発行し、応答からの適切な情報をコンソール ウィンドウに書き込みます。 + +#### サンプルを実行するには + +1. 条件付きの Get と Put のサンプルのソリューションを開きます。サンプルを正しく実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を起動するときに、管理者として実行する必要があります。管理者として実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] アイコンを右クリックし、コンテキスト メニューの **\[管理者として実行\]** をクリックします。 + +2. Ctrl キーと Shift キーを押しながら B キーを押してソリューションをビルドし、Ctrl キーを押しながら F5 キーを押してコンソール アプリケーション プロジェクトを実行します。デバッグを有効にしてこのプロジェクトを実行する場合 \(Ctrl キーと F5 キーではなく F5 キーだけを押した場合\) は、条件付きの GET および PUT のチェックで例外がスローされるとデバッガーが停止します。停止した場合、サンプルの実行を続けるには F5 キーを押してください。 + +3. コンソール ウィンドウが表示されて、実行中のサービスの URI および実行中のサービスの HTML ヘルプ ページの URI が示されます。 + +4. サンプルが実行されると、クライアントは要求をサービスに送信し、応答をコンソール ウィンドウに書き込みます。 + +5. 任意のキーを押して、サンプルを終了します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Web\ConditionalGetAndPut` \ No newline at end of file diff --git a/docs/framework/wcf/samples/configuration-based-activation.md b/docs/framework/wcf/samples/configuration-based-activation.md new file mode 100644 index 00000000000..129f669457f --- /dev/null +++ b/docs/framework/wcf/samples/configuration-based-activation.md @@ -0,0 +1,90 @@ +--- +title: "構成ベースのアクティブ化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 21bb762e-c43e-4b0c-887b-5e434d665838 +caps.latest.revision: 26 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 26 +--- +# 構成ベースのアクティブ化 +このサンプルでは、.svc ファイルを使用せずに [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをアクティブ化する方法を示します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Hosting\ConfigBasedActivation` + +## サンプルの詳細 + このサンプルでは、クライアントは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] テスト クライアントで、サービスは IIS によってホストされています。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +### .svc ファイルを必要としない、サービスのアクティブ化 + [!INCLUDE[netfx35_short](../../../../includes/netfx35-short-md.md)] では、サービスをアクティブ化するために .svc ファイルが必要でした。アプリケーションと共に追加ファイルを配置して管理する必要があったため、このことは管理のオーバーヘッドを増やす原因となりました。[!INCLUDE[netfx40_long](../../../../includes/netfx40-long-md.md)] リリースでは、アプリケーション構成ファイルを使用してアクティブ化コンポーネントを構成することができます。 + + [!INCLUDE[netfx40_short](../../../../includes/netfx40-short-md.md)] では、アプリケーション構成ファイルの に、新しい構成要素 が導入されています。 コレクションは、次のコード例に示すように、サービスのコレクションを受け取ってアクティブ化を行います。 + +```xml + + + + + +``` + + 注目すべき点は、構成が .svc ファイルの構成に非常に似ていることです。導入された追加の属性は、サービスのアドレスを提供する `relativeAddress` です。相対アドレスは、サービスの仮想パスでもあります。ホストは、ファイルの Web.config ファイルが存在する場合に、そのファイルを `virtualPath` の場所から取得します。ファイルが存在しない場合、ホストはその親フォルダーを再帰的に検索します。 + +> [!NOTE] +> このサンプルを機能させるには、IIS でホストする必要があります。 + +#### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を使用して、Service.csproj ファイルを開きます。 + +2. ソリューションをビルドするには、Ctrl キーと Shift キーを押しながら B キーを押します。 + +3. WCFTestClient.exe を実行してサービスをテストします。 + +4. [!INCLUDE[fileExplorer](../../../../includes/fileexplorer-md.md)] を使用して、%SystemDrive%\\Program Files\\Microsoft Visual Studio 10.0\\Common7\\IDE フォルダーに移動します。 + +5. WcfTestClient.exe を実行します。 + +6. サービスの MEX アドレスを設定します。 + +7. Ctrl と Shift キーを押しながら A キーを押して、サービス アドレスを設定します。 + +8. アドレスを http:\/\/localhost\/ServiceModelSamples\/Calculator.svc に設定します。 + +9. `Add` 操作を実行します。`n1` パラメーターの値を 10 に、`n2` パラメーターの値を 15 に設定します。 + +10. **\[起動\]** をクリックします。 + + 予期される結果は 25 です。 + +#### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. ソリューションがビルドされたら、Setup.bat を実行し、IIS で ServiceModelSamples アプリケーションを設定します。ServiceModelSamples ディレクトリは、IIS アプリケーションとして表示されます。 + +4. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## 参照 + [AppFabric のホストおよび永続化のサンプル](http://go.microsoft.com/fwlink/?LinkId=193961) \ No newline at end of file diff --git a/docs/framework/wcf/samples/configuration-channel-factory.md b/docs/framework/wcf/samples/configuration-channel-factory.md new file mode 100644 index 00000000000..a465d8c8e2e --- /dev/null +++ b/docs/framework/wcf/samples/configuration-channel-factory.md @@ -0,0 +1,61 @@ +--- +title: "構成チャネル ファクトリ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3b749493-bd8a-4ccb-893e-5948901a1486 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# 構成チャネル ファクトリ +このサンプルでは、 の使用方法を示します。 により、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント構成の集中管理が可能になります。これは、アプリケーション ドメインによる読み込みの後に構成が選択または変更される場合にも役立ちます。 + +## 使用例 + + +## 説明 + このサンプルでは、既定のアプリケーション構成ファイルを使用することなく、 を使用して、クライアント アプリケーションに特定の構成ファイルを追加する方法を示します。 + + このサンプルは、2 つのプロジェクトで構成されます。最初のプロジェクトは、クライアントから送信されるメッセージに応答するために実行される単純なサービスです。2 番目のプロジェクトは、Test.config 構成ファイルの を使用して、2 つの オブジェクトを作成し、サービスとの通信にそれらのオブジェクトを使用するクライアント アプリケーションです。どちらのクライアントも Test.config で指定された構成を使用してサービスと通信します。 + + 次のコードでは、カスタム構成ファイルをクライアント アプリケーションに追加します。 + +``` +ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); +fileMap.ExeConfigFilename = "Test.config"; +Configuration newConfiguration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); + +ConfigurationChannelFactory factory1 = new ConfigurationChannelFactory("endpoint1", newConfiguration, new EndpointAddress("http://localhost:8000/servicemodelsamples/service")); +ICalculatorChannel client1 = factory1.CreateChannel(); + +``` + +#### サンプルを設定、ビルド、および実行するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を管理者権限で開きます。 + +2. ConfigurationChannelFactory ソリューション \(2 つのプロジェクト\) を右クリックし、**\[プロパティ\]** をクリックします。 + +3. **\[共通プロパティ\]** で、**\[スタートアップ プロジェクト\]** をクリックし、**\[マルチ スタートアップ プロジェクト\]** をクリックします。 + +4. **Service** プロジェクトを一覧の先頭に移動し、**\[アクション\]** を \[開始\] に設定します。次に、**Client** プロジェクトを **Service** プロジェクトの後ろに移動し、同様に **\[アクション\]** を \[開始\] に設定して、**Client** プロジェクトが **Service** プロジェクトの後に実行されるようにします。 + +5. **\[OK\]** をクリックし、F5 キーを押して \(または Ctrl キーを押しながら F5 キーを押して\) サンプルを実行します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\ConfigurationChannelFactory` \ No newline at end of file diff --git a/docs/framework/wcf/samples/configuration-sample.md b/docs/framework/wcf/samples/configuration-sample.md new file mode 100644 index 00000000000..07b95c52a40 --- /dev/null +++ b/docs/framework/wcf/samples/configuration-sample.md @@ -0,0 +1,290 @@ +--- +title: "構成サンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 75515b4a-8d70-44c8-99e0-7423df41380e +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# 構成サンプル +このサンプルでは、構成ファイルを使用してサービスを探索可能にする方法を示します。 + +> [!NOTE] +> このサンプルでは、探索を構成ファイルで実装しています。探索をコードで実装するサンプルについては、「[Basic](../../../../docs/framework/wcf/samples/basic-sample.md)」を参照してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Discovery\Configuration` + +## サービス構成 + このサンプルの構成ファイルでは、次の 2 つの機能を示します。 + +- 標準の を介してサービスを探索できるようにします。 + +- サービスのアプリケーション エンドポイントに対する探索関連の情報を調整し、標準エンドポイントに対する探索関連の設定を調整します。 + + 探索を有効にするには、サービスのアプリケーション構成ファイルで次の変更を行う必要があります。 + +- 探索エンドポイントを `` 要素に追加する必要があります。これは標準の エンドポイントです。このエンドポイントが、ランタイムによって探索サービスに関連付けられるシステム エンドポイントになります。探索サービスは、このエンドポイント上でメッセージをリッスンします。 + +- `` 動作を `` セクションに追加します。これにより、サービスが実行時に探索されるようになり、前述の探索エンドポイントを使用して探索の `Probe` メッセージおよび `Resolve` メッセージをリッスンするようになります。この 2 つの追加により、指定した探索エンドポイントでサービスが探索可能になります。 + + 次の構成スニペットでは、アプリケーション エンドポイントのサービスと定義された探索エンドポイントが示されています。 + +```vb + + + + + + +``` + + アナウンスを活用するために、アナウンス エンドポイントを追加する必要があります。これを実行するために、次のコードに示すように構成ファイルを変更します。 + +``` + + + + + + + +``` + + アナウンス エンドポイントを探索サービス動作に追加することにより、サービスの既定のアナウンス クライアントが作成されます。これによって、サービスは、サービスが開いたときおよび閉じたときにそれぞれオンラインおよびオフラインのアナウンスを送信することが保証されます。 + + この構成ファイルは、さらに動作を変更することによって、より高度な機能を提供できます。特定のエンドポイントを使用することで、探索関連の情報を制御できます。つまり、ユーザーは、エンドポイントを探索できるかどうかを制御できるだけでなく、そのエンドポイントを およびカスタム XML メタデータでマークすることもできます。これを行うには、`behaviorConfiguration` プロパティをアプリケーション エンドポイントに追加する必要があります。この場合、次のプロパティをアプリケーション エンドポイントに追加します。 + +``` +behaviorConfiguration="endpointBehaviorConfiguration" +``` + + これで、この動作構成要素を通じて、探索関連の属性を制御できます。この場合、2 つのスコープがアプリケーション エンドポイントに追加されます。 + +```xml + + + + + + + + + + + + +``` + + スコープ[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[探索検索と FindCriteria](../../../../docs/framework/wcf/feature-details/discovery-find-and-findcriteria.md)」を参照してください。 + + 探索エンドポイントに固有の詳細を制御することもできます。この制御には を使用します。このサンプルでは、次のコード例に示すように、使用するプロトコルのバージョンを変更し、`maxResponseDelay` 属性を追加します。 + +``` + + + + + + +``` + + この例で使用されている構成ファイルの全体を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## クライアント構成 + クライアントのアプリケーション構成ファイルでは、`dynamicEndpoint` 型の `standardEndpoint` を使用して次の構成スニペットに示すように探索を利用します。 + +```xml + + + + + + +``` + + クライアントで `dynamicEndpoint` を使用する場合、探索は自動的に実行されます。探索時にはさまざまな設定が使用されます。たとえば、使用する探索エンドポイントの型を指定する、`discoveryClientSettings` セクションで定義される設定などがあります。 + +```xml + + +``` + + サービスの検索に使用する検索基準。 + +```xml + + + + + + + + This is custom metadata that is sent to the service along with the client's find request. + + + +``` + + このサンプルでは、この機能を拡張し、クライアントで使用される 、および探索に使用される標準の `updDiscoveryEndpoint` の一部のプロパティを変更します。 は、スコープと特定の `scopeMatchBy` アルゴリズム、およびカスタムの終了条件を使用するように変更します。さらに、このサンプルでは、クライアントで `Probe` メッセージを使用して XML 要素を送信する方法も示します。最後に、次の構成ファイルに示すように、使用するプロトコルのバージョンや UDP 固有の設定など、 の変更をいくつか行います。 + +```xml + + + + + + + +``` + + サンプルで使用されているクライアント構成の全体を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + This is custom metadata that is sent to the service along with the client's find request. + + + + + + + + + + + + + + + + + +``` + +#### このサンプルを使用するには + +1. このサンプルでは HTTP エンドポイントを使用します。このサンプルを実行するには、適切な URL ACL を追加する必要があります \(詳細については、「[HTTP および HTTPS の構成](http://go.microsoft.com/fwlink/?LinkId=70353)」を参照してください\)。管理特権で次のコマンドを実行すると、適切な ACL が追加されます。そのままではコマンドが動作しない場合は、代わりに、ドメインとユーザー名を引数に指定して実行してみてください。`netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%` + +2. ソリューションをビルドします。 + +3. ビルド ディレクトリからサービス実行可能ファイルを実行します。 + +4. クライアント実行可能ファイルを実行します。クライアントでサービスを検索できることに注意してください。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/configurationcodegenerator.md b/docs/framework/wcf/samples/configurationcodegenerator.md new file mode 100644 index 00000000000..f6ebc9d7f77 --- /dev/null +++ b/docs/framework/wcf/samples/configurationcodegenerator.md @@ -0,0 +1,63 @@ +--- +title: "ConfigurationCodeGenerator | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3913aae8-165f-4014-9262-7fe426f90cb2 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# ConfigurationCodeGenerator +ConfigurationCodeGenerator は、カスタム チャネルの実装を構成システムに公開する際に使用できるツールです。カスタム チャネルのユーザーは、このツールを使用することによって、`NetTcpBinding` などのシステム指定のバインディングやカスタム バインディングを `TcpTransportBindingElement` で構成するのと同じように、.config ファイルを使用してカスタム チャネルを構成できます。 + + 新しい `BindingElement` または `Binding` を使用してカスタム チャネルを記述し、プログラミング モデルに公開する場合は、.config ファイルを使用して、`BindingElement` または `Binding` を構成可能にするためのクラスのセットを作成する必要があります。ConfigurationCodeGenerator ツールを使用すると、こうしたクラスを生成してユーザーの操作性を向上させることができます。 + +### ツールをビルドするには + +1. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +2. ソリューションをビルドすると、ConfigurationCodeGenerator.exe ファイルが生成されます。SampleRun.cmd ファイルにはサンプルのコマンド ラインが含まれています。このコマンド ラインは、このツールを使用して「[トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md)」サンプル用のクラスを生成する方法を示します。 + +### ツールを実行するには + +1. `BindingElement` のカスタム型と `Binding` のカスタム型の両方がある場合は、コマンド プロンプトで次のように入力します。 + + ``` + ConfigurationCodeGenerator.exe /be:YourCustomBindingElementTypeName /sb:YourCustomStdBindingTypeName /dll:TheAssemblyWhereTheseTypesAreDefined + + ``` + + `BindingElement` のカスタム型のみがある場合は、次のように入力します。 + + ``` + ConfigurationCodeGenerator.exe /be:YourCustomBindingElementTypeName /dll: TheAssemblyWhereThisTypeIsDefined + + ``` + + `Binding` のカスタム型のみがある場合は、次のように入力します。 + + ``` + ConfigurationCodeGenerator.exe /sb:YourCustomStdBindingTypeName /dll:TheAssemblyWhereThisTypeIsDefined + + ``` + + このコマンドにより、`BindingElement` 用の 3 つの .cs ファイル \(\/be: オプションを指定した場合\)、標準の `Binding` 用の 5 つの .cs ファイル \(\/sb: オプションを指定した場合\)、および 1 つの .xml ファイルが生成されます。 + + 1. \/be オプションを使用した場合、いずれかの .cs ファイルに、バインディング要素用の `BindingElementExtensionSection` が実装されます。このコードにより、`BindingElement` が構成システムに公開されます。したがって他のカスタム バインディングも、このバインディング要素を使用できます。他のファイルには、既定と定数を示すクラスがあります。ファイルでは、既定値を更新する必要があることが `//TODO` コメントで示されています。 + + 2. \/sb オプションを指定した場合、2 つの .cs ファイルにそれぞれ `StandardBindingElement` と `StandardBindingCollectionElement` が実装されます。これによって、標準バインディングが構成システムに公開されます。他のファイルには、既定値と定数を示すクラスがあります。ファイルでは、既定値を更新する必要があることが `//TODO` コメントで示されています。 + + \/sb: オプションを指定した場合、CodeToAddTo\<*YourStdBinding*\>.cs には、標準バインディングを実装するクラスに手動で追加する必要のあるコードが設定されます。 + + SampleConfig.xml ファイルには、構成コードが含まれます。このコードは、前の手順 1. または 2. で定義されたハンドラーを登録する構成ファイルに追加する必要があります。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/contract.md b/docs/framework/wcf/samples/contract.md new file mode 100644 index 00000000000..16f77494cf6 --- /dev/null +++ b/docs/framework/wcf/samples/contract.md @@ -0,0 +1,39 @@ +--- +title: "コントラクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 305eeb65-a52f-459e-9aa8-0ef071eade16 +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# コントラクト +このセクションには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のコントラクトを示すサンプルが含まれています。 + +## このセクションの内容 + [データ コントラクト](../../../../docs/framework/wcf/samples/data-contracts.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のデータ コントラクトを示します。 + + [メッセージ コントラクト](../../../../docs/framework/wcf/samples/message-contracts.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のメッセージ コントラクトを示します。 + + [サービス コントラクト](../../../../docs/framework/wcf/samples/service-contracts.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のサービス コントラクトを示します。 + + [DataContractResolver](../../../../docs/framework/wcf/samples/datacontractresolver.md) + クラスを使用して、シリアル化プロセスおよび逆シリアル化プロセスをカスタマイズする方法を示します。 + + [KnownAssemblyAttribute](../../../../docs/framework/wcf/samples/knownassemblyattribute.md) + シリアル化および逆シリアル化時に既知の型を動的に追加する方法を示します。 + + [DataContractSerializer と DataContractResolver を使用した NetDataContractSerializer 機能の提供](../../../../docs/framework/wcf/samples/datacontractserializer-datacontractresolver-netdatacontractserializer.md) + を適切な と共に使用して、 と同じ機能を提供する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/cryptographic-agility-in-wcf-security.md b/docs/framework/wcf/samples/cryptographic-agility-in-wcf-security.md new file mode 100644 index 00000000000..afb0544c452 --- /dev/null +++ b/docs/framework/wcf/samples/cryptographic-agility-in-wcf-security.md @@ -0,0 +1,48 @@ +--- +title: "WCF セキュリティの暗号化方式の指定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c2c549e5-ac19-40c5-b686-8f67f52b6dbf +caps.latest.revision: 9 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 9 +--- +# WCF セキュリティの暗号化方式の指定 +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントおよびサービスで迅速な暗号化実装を提供するために標準またはカスタム アルゴリズムで指定する方法を示します。 サンプルは、以下のプロジェクトで構成されます。 + + サービス + これは自己ホスト型の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスで、`ICalculator` インターフェイスを実装し、セキュリティで保護されたセッションと信頼できるセッションが無効に設定された を使用してエンドポイントをセキュリティで保護します。 このサービスは、カスタム `SecurityAlgorithmSuite` クラスを定義し、メッセージのセキュリティを確保するために使用される暗号化アルゴリズムを指定します。 + + Client + これは、認証が成功した後にサービスにアクセスする [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントです。 このクライアントは、`ICalculator` インターフェイスによって公開され、サービスによって実装される操作を呼び出します。 このクライアントも、同じカスタム `SecurityAlgorithmSuite` クラスを定義し、メッセージのセキュリティを確保するために使用される暗号化アルゴリズムを指定します。 + +### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] で CryptoAgility.sln ソリューションを開きます。 + +2. Ctrl キーと Shift キーを押しながら B キーを押して、ソリューションをビルドします。 + +3. [!INCLUDE[fileExplorer](../../../../includes/fileexplorer-md.md)]を開き、\\WCF\\Basic\\Security\\CryptoAgility\\Service\\bin ディレクトリに移動して、service.exe ファイルを管理者権限で実行します。これを行うには、service.exe を右クリックして **\[管理者として実行\]** をクリックします。 + +4. \\WCF\\Basic\\Security\\CryptoAgility\\Client\\bin ディレクトリに移動して、client.exe ファイルを通常の方法で実行します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Security\CryptoAgility` + +## 参照 + [セキュリティ](../../../../docs/framework/wcf/feature-details/security.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-binding-imperative.md b/docs/framework/wcf/samples/custom-binding-imperative.md new file mode 100644 index 00000000000..48c18ec7a1c --- /dev/null +++ b/docs/framework/wcf/samples/custom-binding-imperative.md @@ -0,0 +1,96 @@ +--- +title: "カスタム バインディング強制 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6e13bf96-5de0-4476-b646-5f150774418d +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# カスタム バインディング強制 +このサンプルでは、強制コードを書き込むことにより、構成ファイルや生成された [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントを使用せずにカスタム バインディングを定義して使用する方法を示します。このサンプルでは、HTTP トランスポートと信頼できるセッション チャネルによって提供される機能を組み合わせて、HTTP ベースの信頼できるバインディングを作成します。このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + カスタム バインディングはクライアントとサービスの両方で作成されます。カスタム バインディングは、次のように 2 つのバインディング要素 \(信頼できるセッションと HTTP\) が含まれます。 + +``` + +ReliableSessionBindingElement reliableSession = new ReliableSessionBindingElement(); +reliableSession.Ordered = true; + +HttpTransportBindingElement httpTransport = new HttpTransportBindingElement(); +httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous; +httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard; + +CustomBinding binding = new CustomBinding(reliableSession, httpTransport); + +``` + + サービスでは、次のようにエンドポイントを ServiceHost に追加することによってバインディングを使用します。 + +``` +serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, ""); +``` + + クライアントでは、バインドは次のように によって使用され、サービスにチャネルが作成されます。 + +``` +EndpointAddress address = new EndpointAddress("http://localhost:8000/servicemodelsamples/service"); +ChannelFactory channelFactory = new ChannelFactory(binding, address); +ICalculator channel = channelFactory.CreateChannel(); +``` + + その後、このチャネルは次のようにサービスとのやり取りに使用されます。 + +``` + +// Call the Add service operation. +double value1 = 100.00D; +double value2 = 15.99D; +double result = channel.Add(value1, value2); +Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + +``` + + このサンプルを実行する場合は、操作要求および応答はクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` + +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WF\Basic\Binding\Custom\Imperative` + +## 参照 + [Custom Binding](http://msdn.microsoft.com/ja-jp/657e8143-beb0-472d-9cfe-ed1a19c2ab08) \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-binding-reliable-session-over-https.md b/docs/framework/wcf/samples/custom-binding-reliable-session-over-https.md new file mode 100644 index 00000000000..269b230cd18 --- /dev/null +++ b/docs/framework/wcf/samples/custom-binding-reliable-session-over-https.md @@ -0,0 +1,149 @@ +--- +title: "HTTPS を介したカスタム バインディングの信頼できるセッション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 16aaa80d-3ffe-47c4-8b16-ec65c4d25f8d +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# HTTPS を介したカスタム バインディングの信頼できるセッション +このサンプルでは、信頼できるセッションを使用した SSL トランスポート セキュリティを示します。信頼できるセッションは、WS\-ReliableMessaging プロトコルを実装しています。信頼できるセッションを介して WS\-Security を構築することにより、セキュリティで保護された信頼できるセッションを持つことができます。ただし、SSL による HTTP トランスポート セキュリティの使用を選択できる場合もあります。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Binding\Custom\ReliableSessionOverHttps` + +## サンプルの詳細 + SSL では、パケット自体のセキュリティが保護されます。WS\-SecureConversation を使用して、信頼できるセッションのセキュリティを保護する場合とは異なることに注意してください。 + + HTTPS を介して信頼できるセッションを使用するには、カスタム バインディングを作成する必要があります。このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。カスタム バインディングは、信頼できるセッションのバインディング要素と [\](../../../../docs/framework/configure-apps/file-schema/wcf/httpstransport.md)を使用して作成されます。カスタム バインディングの構成を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + サンプル内のプログラム コードは、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」サービスのプログラム コードと同じです。このサンプルをビルドして実行する前に、証明書を作成し、Web サーバー証明書ウィザードを使用してあらかじめ割り当てておく必要があります。次に示すクライアント用構成の例のように、構成ファイル設定でエンドポイントとバインディングを定義すると、カスタム バインディングの使用が有効になります。 + +``` + + + + + + + + + + + + + + + + + + + + + + +``` + + アドレス指定では https:\/\/ スキームを使用しています。 + + このサンプルで使用する証明書は Makecert.exe で作成されたテスト証明書なので、ブラウザで https:\/\/localhost\/servicemodelsamples\/service.svc のような https: アドレスにアクセスしようとするとセキュリティ警告が表示されます。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントがテスト証明書に対して問題なく動作するようにするには、クライアントにコードを追加して、セキュリティ警告を非表示にする必要があります。そのためのコードとそれに必要なクラスは、本運用の証明書を使用するときには不要です。 + +``` +// This code is required only for test certificates like those created by Makecert.exe. +PermissiveCertificatePolicy.Enact("CN=ServiceModelSamples-HTTPS-Server"); + +``` + + このサンプルを実行する場合は、操作要求および応答はクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +#### サンプルを設定、ビルド、および実行するには + +1. 次のコマンドを使用して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 4.0 をインストールします。 + + ``` + %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable + + ``` + +2. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +3. 「[インターネット インフォメーション サービス \(IIS\) サーバー証明書インストール手順](../../../../docs/framework/wcf/samples/iis-server-certificate-installation-instructions.md)」が実行済みであることを確認します。 + +4. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +5. 単一コンピュータ構成か複数コンピュータ構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-binding-reliable-session.md b/docs/framework/wcf/samples/custom-binding-reliable-session.md new file mode 100644 index 00000000000..f0b26ad4613 --- /dev/null +++ b/docs/framework/wcf/samples/custom-binding-reliable-session.md @@ -0,0 +1,135 @@ +--- +title: "カスタム バインディングの信頼できるセッション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c5fcd409-246f-4f3e-b3f1-629506ca4c04 +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# カスタム バインディングの信頼できるセッション +カスタム バインディングは、個々のバインディング要素の順序付きリストとして定義されます。 このサンプルでは、さまざまなトランスポートとメッセージ エンコーディング要素を使用し、特に信頼できるセッションを有効化することによって、カスタム バインディングを構成する方法を示します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Binding\Custom\ReliableSession` + +## サンプルの詳細 + 信頼できるセッションは、信頼できるメッセージとセッションに関する機能を提供します。 信頼できるメッセージは、エラー時に通信を再試行するほか、メッセージの順次到着などの配信の保証を指定できるようにします。 セッションでは、呼び出し間でクライアントの状態が保持されます。 サンプルでは、クライアントの状態を保持するセッションを実装し、配信順序を保証することを指定します。 このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 信頼できるセッション機能は、クライアントとサービスのアプリケーション構成ファイルで有効化され、構成されています。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + カスタム バインディングを定義するうえで、バインディング要素の順序は重要です。各バインディング要素は、チャネル スタック内のレイヤーを表すためです \(「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください\)。 + + サンプルのサービス構成は、次のコード例のように定義されます。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + 複数コンピュータのシナリオで実行する場合は、クライアントのエンドポイント アドレスをサービスのホスト名に合わせて変更する必要があります。 + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` + +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +#### サンプルをセットアップ、ビルド、および実行するには + +1. 次のコマンドを使用して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 4.0 をインストールします。 + + ``` + %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable + + ``` + +2. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +3. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + + > [!IMPORTANT] + > 複数コンピュータ構成でクライアントを実行する場合は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/endpoint-element.md) 要素の `address` 属性と、[\](../../../../docs/framework/configure-apps/file-schema/wcf/compositeduplex.md)の `clientBaseAddress` 属性の両方に含まれる "localhost" を、適切なコンピュータの名前で置き換える必要があります。次の例を参照してください。 + + ``` + + + ``` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-binding-security.md b/docs/framework/wcf/samples/custom-binding-security.md new file mode 100644 index 00000000000..bdcb0c3386d --- /dev/null +++ b/docs/framework/wcf/samples/custom-binding-security.md @@ -0,0 +1,200 @@ +--- +title: "カスタム バインディング セキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a6383dff-4308-46d2-bc6d-acd4e18b4b8d +caps.latest.revision: 30 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 30 +--- +# カスタム バインディング セキュリティ +このサンプルでは、カスタム バインディングを使用してセキュリティを構成する方法を示します。カスタム バインディングを使用して、セキュリティで保護されたトランスポートと共にメッセージ レベルのセキュリティを有効にする方法を示します。これは、クライアントとサービス間でメッセージを転送する際にセキュリティで保護されたトランスポートが必要であると同時に、そのメッセージをメッセージ レベルでセキュリティ保護する必要がある場合に便利です。この構成は、システム指定のバインディングではサポートされていません。 + + このサンプルは、クライアント コンソール プログラム \(EXE\) とサービス コンソール プログラム \(EXE\) で構成されています。サービスは、双方向コントラクトを実装します。このコントラクトは `ICalculatorDuplex` インターフェイスによって定義されており、算術演算 \(加算、減算、乗算、および 除算\) を公開しています。`ICalculatorDuplex` インターフェイスを使用することにより、クライアントは算術演算を実行し、セッション経由で実行結果を計算できます。サービスは、`ICalculatorDuplexCallback` インターフェイスで結果を個別に返すことができます。コンテキストを確立して、クライアントとサービスの間で送信される一連のメッセージを相互に関連付ける必要があるため、二重のコントラクトにはセッションが必要です。カスタム バインディングは、双方向通信をサポートしてセキュリティで保護されるよう定義されます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + サービス構成では、次をサポートするカスタム バインディングが定義されます。 + +- TLS\/SSL プロトコルを使用して保護される TCP 通信。 + +- Windows メッセージ セキュリティ。 + + カスタム バインディングの構成により、トランスポートのセキュリティ保護が有効になると同時に、メッセージ レベルのセキュリティも有効になります。カスタム バインディングを定義するうえで、バインディング要素の順序は重要です。各バインディング要素は、チャネル スタック内のレイヤーを表すためです \(「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください\)。カスタム バインディングはサービスとクライアントの構成ファイルで定義されます。次のサンプル構成を参照してください。 + +``` + + + + + + + + + + + + +``` + + カスタム バインディングはサービス証明書を使用して、トランスポート レベルでサービスを認証し、クライアントとサービス間で転送中のメッセージを保護します。これは `sslStreamSecurity` バインディング要素によって実現されます。サービスの証明書は、サービス動作を使用して構成されます。次のサンプル構成を参照してください。 + +``` + + + + + + + + + + + + +``` + + さらに、カスタム バインディングは Windows 資格情報の種類 \(既定の資格情報の種類\) によるメッセージ セキュリティを使用します。これは `security` バインディング要素によって実現されます。Kerberos 認証機構が利用できる場合は、クライアントとサービスはどちらもメッセージ レベルのセキュリティを使用して認証されます。サンプルを Active Directory 環境で実行する場合、この認証が行われます。Kerberos 認証機構が利用できない場合は、NTLM 認証が使用されます。NTLM はサービスに対してクライアントを認証しますが、クライアントに対するサービスの認証は行いません。`security` バインディング要素は `SecureConversation` と`authenticationType` を使用するように構成されます。この結果、クライアントとサービスの両方でセキュリティ セッションが作成されます。これは、サービスの双方向コントラクトを動作させるために必要です。 + + このサンプルを実行する場合は、操作要求および応答はクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Press to terminate client. +Result(100) +Result(50) +Result(882.5) +Result(441.25) +Equation(0 + 100 - 50 * 17.65 / 2 = 441.25) + +``` + + サンプルを実行すると、クライアントに戻ってきたメッセージがサービスから送信されたコールバック インターフェイスに表示されます。それぞれの中間結果が表示され、その後にすべての操作が完了したときの数式全体が表示されます。Enter キーを押してクライアントをシャットダウンします。 + + サンプルに用意されている Setup.bat ファイルを使用すると、適切なサービス証明書を使用してクライアントとサーバーを構成し、証明書ベースのセキュリティを必要とするホスト アプリケーションを実行できるようになります。このバッチ ファイルは、複数のコンピューターを使用する場合またはホストなしの場合に応じて変更する必要があります。 + + 次に、このサンプルに適用されるバッチ ファイルのセクションのうち、該当する構成で実行するために変更が必要となる部分を示します。 + +- サーバー証明書の作成。 + + Setup.bat ファイルの次の行は、使用するサーバー証明書を作成します。`%SERVER_NAME%` 変数はサーバー名です。この変数を変更して、使用するサーバー名を指定します。このバッチ ファイルでのサーバー名の既定は localhost です。 + + Web ホスト サービスの場合、証明書は CurrentUser ストアに格納されます。 + + ``` + echo ************ + echo Server cert setup starting + echo %SERVER_NAME% + echo ************ + echo making server cert + echo ************ + makecert.exe -sr LocalMachine -ss MY -a sha1 -n CN=%SERVER_NAME% -sky exchange -pe + + ``` + +- クライアントの信頼された証明書ストアへのサーバー証明書のインストール。 + + Setup.bat ファイルの次の行は、サーバー証明書をクライアントの信頼されたユーザーのストアにコピーします。この手順が必要なのは、Makecert.exe によって生成される証明書がクライアント システムにより暗黙には信頼されないためです。マイクロソフト発行の証明書など、クライアントの信頼されたルート証明書に基づいた証明書が既にある場合は、クライアント証明書ストアにサーバー証明書を配置するこの手順は不要です。 + + ``` + certmgr.exe -add -r LocalMachine -s My -c -n %SERVER_NAME% -r CurrentUser -s TrustedPeople + ``` + + > [!NOTE] + > Setup.bat バッチ ファイルは、Visual Studio 2010 コマンド プロンプトから実行します。MSSDK 環境変数が SDK のインストール ディレクトリを指している必要があります。この環境変数は、Visual Studio 2010 コマンド プロンプトで自動設定されます。 + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +### サンプルを同じコンピューターで実行するには + +1. 管理特権を使用して Visual Studio コマンド プロンプト ウィンドウを開き、サンプルのインストール フォルダーから Setup.bat を実行します。これにより、サンプルの実行に必要なすべての証明書がインストールされます。 + + > [!NOTE] + > Setup.bat バッチ ファイルは、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプトから実行します。[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプト内で設定された PATH 環境変数は、Setup.bat スクリプトで必要な実行可能ファイルが格納されているディレクトリを指しています。 + +2. Service.exe を \\service\\bin で起動します。 + +3. Client.exe を \\client\\bin で起動します。クライアント アクティビティがクライアントのコンソール アプリケーションに表示されます。 + +4. クライアントとサービス間で通信できない場合は、「[Troubleshooting Tips](http://msdn.microsoft.com/ja-jp/8787c877-5e96-42da-8214-fa737a38f10b)」を参照してください。 + +### サンプルを複数のコンピューターで実行するには + +1. サービス コンピューター上で次の手順を実行します。 + + 1. サービス コンピューターで、servicemodelsamples という仮想ディレクトリを作成します。 + + 2. サービス プログラム ファイルを \\inetpub\\wwwroot\\servicemodelsamples からサービス コンピューターの仮想ディレクトリにコピーします。ファイルのコピー先が \\bin サブディレクトリであることを確認します。 + + 3. Setup.bat ファイルと Cleanup.bat ファイルをサービス コンピューターにコピーします。 + + 4. 管理特権を使用して Visual Studio コマンド プロンプトを開き、`Setup.bat service` を実行します。これにより、バッチ ファイルが実行されたコンピューターの名前と一致するサブジェクト名を持つ、サービス証明書が作成されます。 + + > [!NOTE] + > Setup.bat バッチ ファイルは、Visual Studio 2010 コマンド プロンプトから実行します。path 環境変数が SDK のインストール ディレクトリを指している必要があります。この環境変数は、Visual Studio 2010 コマンド プロンプトで自動設定されます。 + + 5. Service.exe.config ファイル内の [\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-servicecredentials.md)を変更し、前の手順で生成された証明書のサブジェクト名を反映します。 + + 6. コマンド プロンプトから Service.exe を起動します。 + +2. クライアント コンピューター上で次の手順を実行します。 + + 1. クライアント プログラム ファイルを、\\client\\bin\\ フォルダーからクライアント コンピューターにコピーします。Cleanup.bat ファイルもコピーします。 + + 2. Cleanup.bat を実行して、前のサンプルから古い証明書を削除します。 + + 3. サービス コンピューターで、管理特権を使用して Visual Studio コマンド プロンプトを開き、次のコマンドを実行して、サービスの証明書をエクスポートします \(`%SERVER_NAME%` は、サービスが実行されているコンピューターの完全修飾名に置き換えてください\)。 + + ``` + certmgr -put -r LocalMachine -s My -c -n %SERVER_NAME% %SERVER_NAME%.cer + ``` + + 4. %SERVER\_NAME%.cer をクライアント コンピューターにコピーします \(%SERVER\_NAME% は、サービスが実行されているコンピューターの完全修飾名に置き換えてください\)。 + + 5. クライアント コンピューターで、管理特権を使用して Visual Studio コマンド プロンプトを開き、次のコマンドを実行して、サービスの証明書をインポートします \(%SERVER\_NAME% は、サービスが実行されているコンピューターの完全修飾名に置き換えてください\)。 + + ``` + certmgr.exe -add -c %SERVER_NAME%.cer -s -r CurrentUser TrustedPeople + ``` + + 証明書が信頼できる発行元から発行されている場合は、手順 c.、d.、および e. は不要です。 + + 6. 次のようにクライアントの App.config ファイルを変更します。 + + ``` + + + + + ``` + + 7. ドメイン環境でサービスが NetworkService または LocalSystem 以外のアカウントで実行されている場合は、クライアントの App.config ファイル内のサービス エンドポイントのエンドポイント ID を変更し、サービスの実行に使用されているアカウントに基づいて、適切な UPN または SPN を設定する必要がある場合があります。エンドポイント ID の詳細については、「[サービス ID と認証](../../../../docs/framework/wcf/feature-details/service-identity-and-authentication.md)」のトピックを参照してください。 + + 8. コマンド プロンプトから Client.exe を起動します。 + +### サンプルの実行後にクリーンアップするには + +- サンプルの実行が終わったら、サンプル フォルダーにある Cleanup.bat を実行します。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-binding-transport-and-encoding.md b/docs/framework/wcf/samples/custom-binding-transport-and-encoding.md new file mode 100644 index 00000000000..dbad73ac113 --- /dev/null +++ b/docs/framework/wcf/samples/custom-binding-transport-and-encoding.md @@ -0,0 +1,94 @@ +--- +title: "カスタム バインディングのトランスポートとエンコード | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6c0b353d-79ee-4e61-b348-be49ad0e9a16 +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# カスタム バインディングのトランスポートとエンコード +カスタム バインディングは、個々のバインディング要素の順序付きリストとして定義されます。このサンプルでは、さまざまなトランスポートとメッセージ エンコーディング要素を使用してカスタム バインディングを構成する方法を示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルは「[自己ホスト](../../../../docs/framework/wcf/samples/self-host.md)」に基づいており、HTTP、TCP、NamedPipe の各トランスポートがカスタム バインディングでサポートされるように、3 つのエンドポイントの構成が変更されています。クライアント構成も同様に変更され、クライアント コードは 3 つのエンドポイントそれぞれと通信するように変更されています。 + + このサンプルでは、特定のトランスポートとメッセージ エンコーディング要素をサポートするカスタム バインディングを構成する方法を示します。これを行うには、`binding` 要素のトランスポートとメッセージ エンコーディングを構成します。カスタム バインディングを定義するうえで、バインディング要素の順序は重要です。各バインディング要素は、チャネル スタック内のレイヤを表すからです \(「[カスタム バインディング](../../../../docs/framework/wcf/extending/custom-bindings.md)」を参照してください\)。このサンプルでは、テキスト エンコーディングによる HTTP トランスポート、テキスト エンコーディングによる TCP トランスポート、およびバイナリ エンコーディングによる NamedPipe トランスポートの 3 つのカスタム バインディングを構成します。 + + サービス構成では、次のようにカスタム バインディングが定義されます。 + +``` + + + + + + + + + + + + + + + + + +``` + + このサンプルを実行すると、操作要求と応答がサービスとクライアントの両方のコンソール ウィンドウに表示されます。クライアントは、3 つのエンドポイントのそれぞれと通信します。最初に HTTP、次に TCP、最後に NamedPipe にアクセスします。どちらかのコンソールで Enter キーを押すと、サービスとクライアントがどちらもシャットダウンされます。 + + `namedPipeTransport` バインディングは、複数のコンピュータ間の操作をサポートしません。同じコンピュータの通信だけに使用されます。したがって、このサンプルを複数コンピュータのシナリオで実行する場合は、クライアント コード ファイル内の次の行をコメント化してください。 + +```csharp +CalculatorClient client = new CalculatorClient("default"); +Console.WriteLine("Communicate with named pipe endpoint."); +// Call operations. +DoCalculations(client); +//Closing the client gracefully closes the connection and cleans up resources +client.Close(); +``` + +```vb +Dim client As New CalculatorClient("default") +Console.WriteLine("Communicate with named pipe endpoint.") +' call operations +DoCalculations(client) +'Closing the client gracefully closes the connection and cleans up resources +client.Close() +``` + +> [!NOTE] +> Svcutil.exe を使用してこのサンプルの構成を再生成した場合は、クライアント コードに一致するように、クライアント構成内のエンドポイント名を変更してください。 + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版、C\+\+ 版、または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Binding\Custom\Transport` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-binding.md b/docs/framework/wcf/samples/custom-binding.md new file mode 100644 index 00000000000..35ce62aaecb --- /dev/null +++ b/docs/framework/wcf/samples/custom-binding.md @@ -0,0 +1,33 @@ +--- +title: "カスタム バインディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3c9537ea-9708-4ebc-b861-219f2e2db53d +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# カスタム バインディング +このセクションには、エンドポイント要素のカスタム バインディング属性の使用方法を示すサンプルが含まれています。 + +## このセクションの内容 + [カスタム バインディング強制](../../../../docs/framework/wcf/samples/custom-binding-imperative.md) + 強制コードを書き込むことにより、構成ファイルや生成された [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを使用せずにカスタム バインディングを定義して使用する方法を示します。 + + [カスタム バインディングのトランスポートとエンコード](../../../../docs/framework/wcf/samples/custom-binding-transport-and-encoding.md) + さまざまなトランスポートとメッセージ エンコーディング要素を使用してカスタム バインディングを構成する方法を示します。 + + [カスタム バインディングの信頼できるセッション](../../../../docs/framework/wcf/samples/custom-binding-reliable-session.md) + さまざまなトランスポートとメッセージ エンコーディング要素を使用し、特に信頼できるセッションを有効化することによって、カスタム バインディングを構成する方法を示します。 + + [HTTPS を介したカスタム バインディングの信頼できるセッション](../../../../docs/framework/wcf/samples/custom-binding-reliable-session-over-https.md) + 信頼できるセッションを使用した SSL トランスポート セキュリティの使用方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-channel-dispatcher.md b/docs/framework/wcf/samples/custom-channel-dispatcher.md new file mode 100644 index 00000000000..58bf1a83022 --- /dev/null +++ b/docs/framework/wcf/samples/custom-channel-dispatcher.md @@ -0,0 +1,64 @@ +--- +title: "カスタム チャネル ディスパッチャー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 813acf03-9661-4d57-a3c7-eeab497321c6 +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# カスタム チャネル ディスパッチャー +このサンプルでは、 を直接実装することによって、カスタマイズした方法でチャネル スタックを作成する方法と、Web ホスト環境でカスタム チャネル ディスパッチャーを作成する方法を示します。チャネル ディスパッチャーは、 と対話してチャネルを受け入れ、チャネル スタックからメッセージを取得します。このサンプルには、 を使用して Web ホスト環境でチャネル スタックを作成する方法を示す基本的なサンプルも用意されています。 + +## カスタム ServiceHostBase + このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] スタック実装をチャネル スタック上のカスタム メッセージ処理層で置き換える方法を示すために、基本型として の代わりに を実装します。仮想メソッド をオーバーライドして、チャネル リスナーとチャネル ディスパッチャーを作成します。 + + Web ホスト サービスを実装するには、サービス拡張 コレクションから取得し、 に追加します。これにより、トランスポート層で、ホスト環境の設定 \(つまり、インターネット インフォメーション サービス \(IIS\) および Windows プロセス アクティブ化サービス \(WAS\) の設定\) に基づいてチャネル リスナーを構成する方法を認識できるようになります。 + +## カスタム チャネル ディスパッチャー + カスタム チャネル ディスパッチャーは型 を拡張します。この型はチャネル層のプログラミング ロジックを実装します。このサンプルでは、要求\/応答メッセージ交換パターンでサポートされるのは だけですが、カスタム チャネル ディスパッチャーは他の種類のチャネルに簡単に拡張できます。 + + ディスパッチャーは、まずチャネル リスナーを開き、次にシングルトン応答チャネルを受け入れます。このチャネルを使用して、無限ループでメッセージ \(応答\) の送信を開始します。要求ごとに、応答メッセージを作成し、クライアントに返信します。 + +## 応答メッセージの作成 + メッセージ処理は型 `MyServiceManager` で実装されます。`HandleRequest` メソッドでは、要求がサポートされているかどうか確認するために、メッセージの `Action` ヘッダーが最初にチェックされます。メッセージ フィルター処理を提供するために、定義済みの SOAP アクション "http:\/\/tempuri.org\/HelloWorld\/Hello" が定義されています。これは、 の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 実装におけるサービス コントラクトの概念と似ています。 + + 正しい SOAP アクションの場合、サンプルでは、 の場合と同じように、要求されたメッセージ データを取得し、要求に対して対応する応答を生成します。 + + 特に、この場合、正しくコンパイルされていることを確認するためにブラウザーからサービスを参照できるように、カスタム HTML メッセージを返して HTTP\-GET 動詞を処理します。SOAP アクションが一致しない場合は、エラー メッセージを返信して、要求がサポートされていないことを示します。 + + このサンプルのクライアントは、サービスから何も引き受けない標準の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントです。そのため、サービスは、標準の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 実装から取得した内容と一致するように特別に設計されています。したがって、クライアントに必要なのはサービス コントラクトだけです。 + +## サンプルの使用 + クライアント アプリケーションを直接実行すると、次の出力が生成されます。 + +```Output +クライアントは要求/応答 WCF サービスと通信しています。 +サーバーに送信する内容を入力してください: Howdy +サーバーからの応答: 送信内容: Howdy。メッセージ ID: 1 +サーバーからの応答: 送信内容: Howdy。メッセージ ID: 2 +サーバーからの応答: 送信内容: Howdy。メッセージ ID: 3 +サーバーからの応答: 送信内容: Howdy。メッセージ ID: 4 +サーバーからの応答: 送信内容: Howdy。メッセージ ID: 5 + +``` + + HTTP\-GET メッセージがサーバーで処理されるように、ブラウザーからサービスを参照することもできます。この場合、適切に書式設定された HTML テキストが返信されます。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Channels\CustomChannelDispatcher` \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-demux.md b/docs/framework/wcf/samples/custom-demux.md new file mode 100644 index 00000000000..9f5aa3c40d2 --- /dev/null +++ b/docs/framework/wcf/samples/custom-demux.md @@ -0,0 +1,206 @@ +--- +title: "カスタム Demux | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fc54065c-518e-4146-b24a-0fe00038bfa7 +caps.latest.revision: 41 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 41 +--- +# カスタム Demux +このサンプルでは、MSMQ メッセージ ヘッダーをさまざまなサービス操作にマッピングする方法を通して、 を使用する [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスで複数のサービス操作を使用できることを示します \(「[Windows Communication Foundation へのメッセージ キュー](../../../../docs/framework/wcf/samples/message-queuing-to-wcf.md)」と「[Windows Communication Foundation でのメッセージ キュー](../../../../docs/framework/wcf/samples/wcf-to-message-queuing.md)」のサンプルでは 1 つだけ使用しています\)。 + + このサンプルのサービスは自己ホスト型コンソール アプリケーションであるので、サービスを実行すると、キューに置かれたメッセージを受信するようすを観察できます。 + + サービス コントラクトは `IOrderProcessor` です。これは、キューでの使用に適した一方向サービスを定義します。 + +``` +[ServiceContract] +[KnownType(typeof(PurchaseOrder))] +[KnownType(typeof(String))] +public interface IOrderProcessor +{ + [OperationContract(IsOneWay = true, Name = "SubmitPurchaseOrder")] + void SubmitPurchaseOrder(MsmqMessage msg); + + [OperationContract(IsOneWay = true, Name = "CancelPurchaseOrder")] + void CancelPurchaseOrder(MsmqMessage ponumber); +} +``` + + MSMQ メッセージには Action ヘッダーがないので、 さまざまな MSMQ メッセージを操作コントラクトに自動的にマッピングすることはできません。 したがって、存在する操作コントラクトは 1 つだけです。 この制限を克服するために、サービスは インターフェイスの メソッドを実装します。 メソッドによって、メッセージの特定のヘッダーを特定のサービス操作にマッピングできるようになります。 このサンプルでは、メッセージのラベル ヘッダーをサービス操作にマッピングします。 操作コントラクトの `Name` パラメータは、特定のメッセージ ラベルに対してどのサービス操作をディスパッチするかを示します。 たとえば、メッセージのラベル ヘッダーに "SubmitPurchaseOrder" が含まれている場合に、"SubmitPurchaseOrder" サービス操作を呼び出します。 + +``` +public class OperationSelector : IDispatchOperationSelector +{ + public string SelectOperation(ref System.ServiceModel.Channels.Message message) + { + MsmqIntegrationMessageProperty property = MsmqIntegrationMessageProperty.Get(message); + return property.Label; + } +} +``` + + サービスは インターフェイスの メソッドを実装する必要があります。次のサンプル コードを参照してください。 これによって、カスタムの `OperationSelector` がサービス フレームワークのディスパッチ ランタイムに適用されます。 + +``` +void IContractBehavior.ApplyDispatchBehavior(ContractDescription description, ServiceEndpoint endpoint, DispatchRuntime dispatch) +{ + dispatch.OperationSelector = new OperationSelector(); +} +``` + + メッセージが OperationSelector に到達するには、ディスパッチャの を通過する必要があります。 既定の設定では、メッセージのアクションが、サービスによって実装されているどのコントラクトにも見つからない場合に、メッセージが拒否されます。 この検査を回避するために、`MatchAllFilterBehavior` という名前の を実装します。これは、次に示すように を適用して、どのメッセージも `ContractFilter` を通過できるようにするものです。 + +``` +public void ApplyDispatchBehavior(ServiceEndpoint serviceEndpoint, EndpointDispatcher endpointDispatcher) +{ + endpointDispatcher.ContractFilter = new MatchAllMessageFilter(); +} +``` + + メッセージをサービスが受信すると、ラベル ヘッダーからの情報を使用して該当するサービス操作がディスパッチされます。 メッセージの本文が逆シリアル化されて `PurchaseOrder` オブジェクトが作成されます。次のサンプル コードを参照してください。 + +``` +[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)] +public void SubmitPurchaseOrder(MsmqMessage msg) +{ + PurchaseOrder po = (PurchaseOrder)msg.Body; + Random statusIndexer = new Random(); + po.Status = (OrderStates)statusIndexer.Next(3); + Console.WriteLine("Processing {0} ", po); +} +``` + + サービスは自己ホスト型です。 MSMQ を使用するときは、使用するキューをあらかじめ作成しておく必要があります。 手動で作成することもコードで作成することもできます。 このサンプルでは、サービスのコードの中でキューの存在を確認し、存在しない場合は作成します。 キュー名は構成ファイルから読み込まれます。 + +``` +public static void Main() +{ + // Get MSMQ queue name from app settings in configuration + string queueName = ConfigurationManager.AppSettings["orderQueueName"]; + + // Create the transacted MSMQ queue if necessary. + if (!MessageQueue.Exists(queueName)) + MessageQueue.Create(queueName, true); + + // Create a ServiceHost for the CalculatorService type. + using (ServiceHost serviceHost = new ServiceHost(typeof(OrderProcessorService))) + { + ServiceEndpoint endpoint = serviceHost.Description.Endpoints[0]; + endpoint.Behaviors.Add(new MatchAllFilterBehavior()); + + //Open the ServiceHost to create listeners and start listening for messages. + serviceHost.Open(); + + // The service can now be accessed. + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.ReadLine(); + + // Close the ServiceHost to shutdown the service. + serviceHost.Close(); + } +} +``` + + MSMQ キュー名は、構成ファイルの appSettings セクションで指定されます。 + +> [!NOTE] +> キュー名では、ドット \(.\) を使用してローカル コンピューターを表し、バックスラッシュを使用してパスを区切ります。 [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイント アドレスでは msmq.formatname スキームが指定され、ローカル コンピューターを表す localhost が使用されます。 このスキームの後には、MSMQ 形式名のアドレス指定ガイドラインに沿って正しく書式設定されたキューのアドレスが続きます。 + +``` + + + + + +``` + +> [!NOTE] +> このサンプルを実行するには、[メッセージ キュー](http://go.microsoft.com/fwlink/?LinkId=95143)がインストールされている必要があります。 + + サービスを開始してクライアントを実行します。 + + クライアントには、次の出力が表示されます。 + +``` +Placed the order:Purchase Order: 28fc457a-1a56-4fe0-9dde-156965c21ed6 + Customer: somecustomer.com + OrderDetails + Order LineItem: 54 of Blue Widget @unit price: $29.99 + Order LineItem: 890 of Red Widget @unit price: $45.89 + Total cost of this order: $42461.56 + Order status: Pending +Canceled the Order: 28fc457a-1a56-4fe0-9dde-156965c21ed6 +Press to terminate client. +``` + + サービスには、次の出力が表示されます。 + +``` +The service is ready. +Press to terminate service. +Processing Purchase Order: 28fc457a-1a56-4fe0-9dde-156965c21ed6 + Customer: somecustomer.com + OrderDetails + Order LineItem: 54 of Blue Widget @unit price: $29.99 + Order LineItem: 890 of Red Widget @unit price: $45.89 + Total cost of this order: $42461.56 + Order status: Shipped +Purchase Order 28fc457a-1a56-4fe0-9dde-156965c21ed6 is canceled +``` + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. サービスを最初に実行すると、サービスはキューが存在するかどうかを確認します。 キューが存在しない場合、サービスによってキューが作成されます。 最初にサービスを実行してキューを作成することも、MSMQ キュー マネージャーでキューを作成することもできます。 Windows 2008 でキューを作成するには、次の手順に従います。 + + 1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] でサーバー マネージャーを開きます。 + + 2. **\[機能\]** タブを展開します。 + + 3. **\[プライベート メッセージ キュー\]** を右クリックし、**\[新規作成\]**、**\[専用キュー\]** の順にクリックします。 + + 4. **\[トランザクション\]** ボックスをオンにします。 + + 5. 新しいキューの名前として、`「ServiceModelSamplesTransacted」`と入力します。 + +3. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +### サンプルを複数のコンピューターで実行するには + +1. サービスのプログラム ファイルを、言語固有のフォルダーにある \\service\\bin\\ フォルダーからサービス コンピューターにコピーします。 + +2. クライアント プログラム ファイルを、言語固有のフォルダーにある \\client\\bin\\ フォルダーからクライアント コンピューターにコピーします。 + +3. Client.exe.config ファイルを開き、orderQueueName を変更して "." の代わりにサービス コンピューター名を指定します。 + +4. サービス コンピューターで、コマンド プロンプトから Service.exe を起動します。 + +5. クライアント コンピューターで、コマンド プロンプトから Client.exe を起動します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Binding\MSMQIntegration\CustomDemux` + +## 参照 + [WCF でのキュー](../../../../docs/framework/wcf/feature-details/queuing-in-wcf.md) + [メッセージ キュー](http://go.microsoft.com/fwlink/?LinkId=95143) \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-find-criteria.md b/docs/framework/wcf/samples/custom-find-criteria.md new file mode 100644 index 00000000000..10fc7859ba0 --- /dev/null +++ b/docs/framework/wcf/samples/custom-find-criteria.md @@ -0,0 +1,78 @@ +--- +title: "カスタム検索基準 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b2723929-8829-424d-8015-a37ba2ab4f68 +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# カスタム検索基準 +このサンプルでは、ロジックを使用するカスタム スコープ一致の作成方法とカスタム探索サービスの実装方法を示します。クライアントは、カスタム スコープ一致機能を使用して、システムによって提供される WCF Discovery の検索機能を改良および拡張します。このサンプルでは次のシナリオを扱います。 + +1. クライアントは電卓サービスを検索します。 + +2. 検索を絞り込むために、クライアントはカスタム スコープ一致ルールを使用する必要があります。 + +3. このルールに従って、サービスは、エンドポイントがクライアントによって指定されたスコープのいずれかと一致した場合、クライアントに応答を送り返します。 + +## 使用例 + +- カスタム探索サービスの作成。 + +- アルゴリズムに基づくカスタム スコープ一致の実装 + +## 説明 + クライアントは "OR" 一致条件を検索します。サービスは、エンドポイントのスコープがクライアントによって指定されたスコープのいずれかと一致した場合、応答を送り返します。この場合、クライアントは、次のいずれかのスコープを含む電卓サービスを検索します。 + +1. `net.tcp://Microsoft.Samples.Discovery/RedmondLocation` + +2. `net.tcp://Microsoft.Samples.Discovery/SeattleLocation` + +3. `net.tcp://Microsoft.Samples.Discovery/PortlandLocation` + + これを行うために、クライアントはカスタム スコープ一致を URI で渡すことで、カスタム スコープ一致を使用するようにサービスに指示します。サービスは、カスタム スコープ一致を容易にするために、カスタム スコープ一致ルールを理解し、関連する一致ロジックを実装するカスタム探索サービスを使用する必要があります。 + + クライアント プロジェクトで Program.cs ファイルを開きます。`FindCriteria` オブジェクトの `ScopeMatchBy` フィールドが特定の URI に設定されていることに注意してください。この識別子はサービスに送信されます。サービスがこのルールを理解できない場合、クライアントの検索要求は無視されます。 + + サービス プロジェクトを開きます。カスタム探索サービスの実装には、次の 3 つのファイルを使用します。 + +1. **AsyncResult.cs**: これは Discovery メソッドに必要な `AsyncResult` の実装です。 + +2. **CustomDiscoveryService.cs**: このファイルはカスタム探索サービスを実装します。この実装では、 クラスを拡張し、必要なメソッドをオーバーライドします。 メソッドの実装に注意してください。このメソッドは、ルールに基づくカスタム スコープ一致がクライアントによって指定されているかどうかをチェックします。これはクライアントが前に指定したカスタム URI です。カスタム ルールが指定されている場合は、その後に "OR" 一致ロジックを実装するコード パスが続きます。 + + このカスタム ロジックでは、サービスに含まれている各エンドポイントのスコープがすべてチェックされます。エンドポイントのスコープのいずれかがクライアントによって指定されたスコープのいずれかに一致した場合、探索サービスはクライアントに送り返す応答にそのエンドポイントを追加します。 + +3. **CustomDiscoveryExtension.cs**: 探索サービスの実装の最後の手順は、このカスタム探索サービスの実装をサービス ホストに関連付けることです。ここで使用するヘルパー クラスは `CustomDiscoveryExtension` クラスです。このクラスは クラスを拡張します。ユーザーは メソッドをオーバーライドする必要があります。この場合、このメソッドは、前に作成されたカスタム探索サービスのインスタンスを返します。`PublishedEndpoints` は、 に追加されたすべてのアプリケーション エンドポイントを含む です。カスタム探索サービスは、これを使用して内部リストを設定します。ユーザーは、その他のエンドポイント メタデータも追加できます。 + + 最後に、Program.cs を開きます。 と `CustomDiscoveryExtension` の両方がホストに追加されていることに注意してください。これが完了し、探索メッセージの受信に使用されるエンドポイントがホストに追加されると、アプリケーションがカスタム探索サービスを使用できるようになります。 + + クライアントがサービスのアドレスを知ることなくサービスを検索できることを確認します。 + +#### サンプルを設定、ビルド、および実行するには + +1. プロジェクトを含むソリューションを開きます。 + +2. プロジェクトをビルドします。 + +3. サービス アプリケーションを実行します。 + +4. クライアント アプリケーションを実行します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Discovery\CustomFindCriteria` \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-lifetime.md b/docs/framework/wcf/samples/custom-lifetime.md new file mode 100644 index 00000000000..8943d44fe85 --- /dev/null +++ b/docs/framework/wcf/samples/custom-lifetime.md @@ -0,0 +1,240 @@ +--- +title: "カスタム有効期間 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 52806c07-b91c-48fe-b992-88a41924f51f +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# カスタム有効期間 +このサンプルでは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の共有サービス インスタンスにカスタムの有効期間サービスを提供する [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 拡張機能の作成方法を示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +## 共有インスタンス化 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、サービス インスタンス用にいくつかのインスタンス化モードが用意されています。このトピックで説明する共有インスタンス化モードでは、サービス インスタンスを複数のチャネルで共有できます。クライアントは、インスタンスのエンドポイント アドレスをローカルで解決するか、サービスのファクトリ メソッドと通信して実行中のインスタンスのエンドポイント アドレスを取得することができます。エンドポイント アドレスを取得したら、新しいチャネルを作成して通信を開始することができます。次のコード例は、クライアント アプリケーションが既存のサービス インスタンスへの新しいチャネルを作成する方法を示しています。 + +``` +// Create the first channel. +IEchoService proxy = channelFactory.CreateChannel(); + +// Resolve the instance. +EndpointAddress epa = ((IClientChannel)proxy).ResolveInstance(); + +// Create new channel factory with the endpoint address resolved by +// previous statement. +ChannelFactory channelFactory2 = + new ChannelFactory("echoservice", + epa); + +// Create the second channel to the same instance. +IEchoService proxy2 = channelFactory2.CreateChannel(); + +``` + + 他のインスタンス化モードとは異なり、共有インスタンス化モードでは、独特の方法でサービス インスタンスを解放します。インスタンスのすべてのチャネルが閉じると、サービスの [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムによってタイマーが開始されます。タイムアウトになるまでに誰も接続しなかった場合、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] はインスタンスを解放してリソースを要求します。切り離し手順の一環として、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] は、インスタンスを解放する前にすべての 実装の メソッドを呼び出します。そのすべてが `true` を返す場合は、インスタンスが解放されます。それ以外の場合、 実装は、コールバック メソッドを使用してアイドル状態であることを`Dispatcher`に通知します。 + + 既定では、 のアイドル タイムアウト値は 1 分です。ただし、このサンプルでは、カスタム拡張機能を使用してこれを延長する方法を示します。 + +## InstanceContext の拡張 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の は、サービス インスタンスと`Dispatcher`の間のリンクです。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、拡張可能オブジェクト パターンを使用して新しい状態または動作を追加することで、このランタイム コンポーネントを拡張できます。拡張可能オブジェクト パターンは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、既存のランタイム クラスに新しい機能を付け加えて拡張するため、またはオブジェクトに新しい状態の機能を追加するために使用されます。拡張可能オブジェクト パターンには、`IExtensibleObject`、`IExtension`、および `IExtensionCollection` の 3 つのインターフェイスがあります。 + + `IExtensibleObject` インターフェイスは、機能をカスタマイズするための拡張が可能なオブジェクトによって実装されます。 + + `IExtension` インターフェイスは、`T` 型のクラスの拡張が可能なオブジェクトによって実装されます。 + + 最後に、`IExtensionCollection` インターフェイスは `IExtensions` のコレクションで、型ごとに `IExtensions` を取得できます。 + + したがって、 を拡張するには、`IExtension` インターフェイスを実装する必要があります。このサンプル プロジェクトでは、`CustomLeaseExtension` クラスにこの実装が含まれています。 + +``` +class CustomLeaseExtension : IExtension +{ +} + +``` + + `IExtension` インターフェイスには、`Attach` と `Detach` の 2 つのメソッドが含まれています。名前が示すように、これらの 2 つのメソッドは、ランタイムが クラスのインスタンスに拡張機能を関連付けるときと関連付けを解除するときに呼び出されます。このサンプルでは、`Attach` メソッドを使用して、拡張機能の現在のインスタンスに属する オブジェクトを追跡します。 + +``` +InstanceContext owner; + +public void Attach(InstanceContext owner) +{ + this.owner = owner; +} +``` + + また、有効期間の延長をサポートするには、必要な実装を拡張機能に追加する必要があります。したがって、`ICustomLease` インターフェイスを目的のメソッドで宣言し、`CustomLeaseExtension` クラスに実装します。 + +``` +interface ICustomLease +{ + bool IsIdle { get; } + InstanceContextIdleCallback Callback { get; set; } +} + +class CustomLeaseExtension : IExtension, ICustomLease +{ +} + +``` + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が 実装で メソッドを呼び出すと、この呼び出しは `CustomLeaseExtension` の メソッドにルーティングされます。次に、`CustomLeaseExtension` はそのプライベート状態をチェックし、 がアイドル状態かどうかを確認します。アイドル状態の場合は、`true` を返します。それ以外の場合は、延長された指定の有効期間のタイマーが開始されます。 + +``` +public bool IsIdle +{ + get + { + lock (thisLock) + { + if (isIdle) + { + return true; + } + else + { + StartTimer(); + return false; + } + } + } +} + +``` + + タイマーの `Elapsed` イベントで、別のクリーンアップ サイクルを開始するためにディスパッチャーのコールバック関数が呼び出されます。 + +``` +void idleTimer_Elapsed(object sender, ElapsedEventArgs args) +{ + idleTimer.Stop(); + isIdle = true; + callback(owner); +} + +``` + + アイドル状態に移行中のインスタンスに新しいメッセージが届いたときに、実行中のタイマーを更新する方法はありません。 + + このサンプルでは、 メソッドの呼び出しを受け取って `CustomLeaseExtension` にルーティングするために を実装します。 実装は、`CustomLifetimeLease` クラスに含まれています。 メソッドは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] がサービス インスタンスを解放するときに呼び出されます。ただし、ServiceBehavior の コレクションに存在する特定の `ISharedSessionInstance` 実装のインスタンスは 1 つだけです。つまり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] が メソッドをチェックする時点で閉じられている を知る方法はありません。したがって、このサンプルでは、スレッド ロックを使用して メソッドへの要求をシリアル化します。 + +> [!IMPORTANT] +> シリアル化はアプリケーションのパフォーマンスに大きな影響を及ぼす可能性があるので、スレッド ロックは使用しないことをお勧めします。 + + `CustomLeaseExtension` クラスでプライベート メンバー変数を使用して、`IsIdle` の値を追跡します。 の値が取得されるたびに、`IsIdle` プライベート メンバーが返されて `false` にリセットされます。ディスパッチャーが メソッドを呼び出すようにするには、この値を `false` に設定する必要があります。 + +``` +public bool IsIdle +{ + get + { + lock (thisLock) + { + bool idleCopy = isIdle; + isIdle = false; + return idleCopy; + } + } +} + +``` + + `ISharedSessionLifetime.IsIdle` プロパティが `false` を返す場合、ディスパッチャーは `NotifyIdle` メソッドを使用してコールバック関数を登録します。このメソッドは、解放される への参照を受け取ります。したがって、このサンプル コードでは、`ICustomLease` 型拡張に対してクエリを実行し、拡張状態の `ICustomLease.IsIdle` プロパティをチェックすることができます。 + +``` +public void NotifyIdle(InstanceContextIdleCallback callback, + InstanceContext instanceContext) +{ + lock (thisLock) + { + ICustomLease customLease = + instanceContext.Extensions.Find(); + customLease.Callback = callback; + isIdle = customLease.IsIdle; + if (isIdle) + { + callback(instanceContext); + } + } +} + +``` + + `ICustomLease.IsIdle` プロパティをチェックする前に、Callback プロパティを設定する必要があります。これは、アイドル状態になったときに `CustomLeaseExtension` がディスパッチャーに通知するために不可欠です。`ICustomLease.IsIdle` が `true` を返す場合は、`isIdle` プライベート メンバーが `CustomLifetimeLease` で単に `true` に設定され、コールバック メソッドが呼び出されます。このコードではロックが使用されているので、他のスレッドではこのプライベート メンバーの値を変更できません。次にディスパッチャーが `ISharedSessionLifetime.IsIdle` をチェックするときに `true` が返されて、ディスパッチャーがインスタンスを解放できるようになります。 + + これでカスタム拡張機能の基礎が完成したので、この拡張機能をサービス モデルにフックする必要があります。`CustomLeaseExtension` 実装を にフックするために、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、 のブートストラップを実行する インターフェイスが用意されています。このサンプルでは、`CustomLeaseInitializer` クラスでこのインターフェイスを実装し、`CustomLeaseExtension` のインスタンスを唯一のメソッドの初期化から得られる コレクションに追加します。このメソッドは、 の初期化中にディスパッチャーによって呼び出されます。 + +``` +public void Initialize(InstanceContext instanceContext, Message message) +{ + IExtension customLeaseExtension = + new CustomLeaseExtension(timeout); + instanceContext.Extensions.Add(customLeaseExtension); +} +``` + + 最後に、 実装を使用して、 実装と 実装がサービス モデルにフックされます。この実装は、`CustomLeaseTimeAttribute` クラスに配置されています。また、`Attribute` 基本クラスから派生してこの動作を属性として公開します。`IServiceBehavior.ApplyBehavior` メソッドで、 実装と 実装のインスタンスがそれぞれ コレクションと コレクションに追加されます。 + +``` +public void ApplyBehavior(ServiceDescription description, + ServiceHostBase serviceHostBase, + Collection behaviors, + Collection parameters) +{ + CustomLifetimeLease customLease = new CustomLifetimeLease(); + CustomLeaseInitializer initializer = + new CustomLeaseInitializer(timeout); + + foreach (DispatchBehavior dispatchBehavior in behaviors) + { + dispatchBehavior.InstanceContextLifetimes.Add(customLease); + dispatchBehavior.InstanceContextInitializers.Add(initializer); + } +} + +``` + + この動作は、`CustomLeaseTime` 属性を使用して注釈を付けることにより、サンプル サービス クラスに追加できます。 + +``` +[ServiceBehavior(InstanceContextMode=InstanceContextMode.Shareable)] +[CustomLeaseTime(Timeout = 20000)] +public class EchoService : IEchoService +{ + //… +} +``` + + このサンプルを実行すると、操作要求と応答がサービスとクライアントの両方のコンソール ウィンドウに表示されます。どちらかのコンソールで Enter キーを押すと、サービスとクライアントがどちらもシャットダウンされます。 + +#### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Instancing\Lifetime` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-message-encoder-compression-encoder.md b/docs/framework/wcf/samples/custom-message-encoder-compression-encoder.md new file mode 100644 index 00000000000..fe39c1598f1 --- /dev/null +++ b/docs/framework/wcf/samples/custom-message-encoder-compression-encoder.md @@ -0,0 +1,376 @@ +--- +title: "カスタム メッセージ エンコーダー : 圧縮エンコーダー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 57450b6c-89fe-4b8a-8376-3d794857bfd7 +caps.latest.revision: 37 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 37 +--- +# カスタム メッセージ エンコーダー : 圧縮エンコーダー +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] プラットフォームを使用するカスタム エンコーダーを実装する方法を示します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\MessageEncoder\Compression` + +## サンプルの詳細 + このサンプルは、クライアント コンソール プログラム \(.exe\)、自己ホスト型サービス コンソール プログラム \(.exe\)、および圧縮メッセージ エンコーダー ライブラリ \(.dll\) で構成されています。サービスは、要求\/応答通信パターンを定義するコントラクトを実装します。コントラクトは `ISampleServer` インターフェイスによって定義されます。このインターフェイスでは、基本的な文字列のエコー操作 \(`Echo` と `BigEcho`\) が公開されます。クライアントは指定された操作を同期要求し、サービスはクライアントにメッセージをそのまま戻すことによって応答します。クライアント アクティビティとサービス アクティビティは、コンソール ウィンドウに表示されます。このサンプルの目的は、カスタム エンコーダを記述する方法と、ネットワーク上でメッセージを圧縮したときの影響を示すことです。圧縮メッセージ エンコーダーにインストルメンテーションを追加すると、メッセージのサイズ、処理時間、またはその両方を計算することができます。 + +> [!NOTE] +> .NET Framework 4 では、サーバーが \(GZip や Deflate などのアルゴリズムで作成された\) 圧縮された応答を送信する場合は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントで自動展開が有効になっています。このサービスがインターネット インフォメーション サービス \(IIS\) で Web ホストされる場合は、サービスが圧縮された応答を送信するように IIS を構成することができます。このサンプルは、クライアントとサービスの両方で圧縮および展開を行うという要件がある場合、またはサービスが自己ホスト型である場合に使用できます。 + + サンプルでは、カスタム メッセージ エンコーダーをビルドして、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションに統合する方法を示します。GZipEncoder.dll ライブラリは、クライアントとサービスの両方で配置されます。また、このサンプルではメッセージを圧縮したときの影響も示します。GZipEncoder.dll のコードでは、次が示されます。 + +- カスタム エンコーダおよびエンコーダ ファクトリの作成。 + +- カスタム エンコーダのバインディング要素の開発。 + +- カスタム バインディング要素を統合するためのカスタム バインディング構成の使用。 + +- カスタム バインディング要素のファイル構成を可能にするカスタム構成ハンドラの開発。 + + 前に示したように、カスタム エンコーダにはいくつかのレイヤが実装されています。こうした各レイヤ間の関係をわかりやすく説明するために、サービス起動のイベントの順序を簡略化した一覧を次に示します。 + +1. サーバーが起動します。 + +2. 構成情報が読み取られます。 + + 1. サービス構成がカスタム構成ハンドラを登録します。 + + 2. サービス ホストが作成されて開かれます。 + + 3. カスタム構成要素がカスタム バインディング要素を作成して返します。 + + 4. カスタム バインディング要素がメッセージ エンコーダ ファクトリを作成して返します。 + +3. メッセージが受信されます。 + +4. メッセージ エンコーダ ファクトリは、メッセージを読み込んで応答を出力するためのメッセージ エンコーダを返します。 + +5. エンコーダ レイヤはクラス ファクトリとして実装されます。カスタム エンコーダ用にパブリックに公開する必要があるのはエンコーダのクラス ファクトリだけです。 オブジェクトまたは オブジェクトが作成されると、ファクトリ オブジェクトがバインディング要素によって返されます。メッセージ エンコーダは、バッファ モードまたはストリーミング モードで動作できます。このサンプルでは、バッファ モードとストリーミング モードの両方を示します。 + + 各モードの `MessageEncoder` 抽象クラスには、関連する `ReadMessage` メソッドと `WriteMessage` メソッドがあります。エンコード処理の大部分はこれらのメソッドで行われます。サンプルでは、既存のテキスト エンコーダとバイナリ メッセージ エンコーダをラップします。これにより、内部のエンコーダがネットワーク上でのメッセージの表現の読み取りと書き込みを代行し、圧縮エンコーダがその結果を圧縮または解凍できます。メッセージ エンコード用にはパイプラインがないので、これは [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で複数のエンコーダを使用する唯一のモデルです。メッセージが解凍されると、結果として得られたメッセージは、処理対象のチャネル スタックの上にスタックとして渡されます。圧縮中は、結果として得られる圧縮メッセージは指定されたストリームに直接書き込まれます。 + + このサンプルは、ヘルパー メソッド \(`CompressBuffer` と `DecompressBuffer`\) を使用して、バッファを、`GZipStream` クラスを使用するストリームに変換します。 + + バッファ内の `ReadMessage` クラスと `WriteMessage` クラスは、`BufferManager` クラスを使用します。エンコーダにはエンコーダ ファクトリを通じてのみアクセスできます。`MessageEncoderFactory` 抽象クラスは、現在のエンコーダにアクセスするための `Encoder` という名前のプロパティと、セッションをサポートするエンコーダを作成するための `CreateSessionEncoder` という名前のメソッドを提供します。チャネルがセッションをサポートし、順序付けされて信頼できるシナリオでは、このようなエンコーダを使用できます。このシナリオでは、ネットワークに書き込まれるデータの各セッションを最適化できます。これが必要でない場合は、基本メソッドをオーバーロードしないでください。`Encoder` プロパティは、セッションのないエンコーダにアクセスする機構を備えており、`CreateSessionEncoder` メソッドの既定の実装では、このプロパティの値が返されます。サンプルでは既存のエンコーダをラップして圧縮を行うので、`MessageEncoderFactory` の実装では、内部のエンコーダ ファクトリを表す `MessageEncoderFactory` が受け入れられます。 + + エンコーダおよびエンコーダ ファクトリが定義されたら、これを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントとサービスで使用できるようになります。ただし、これらのエンコーダをチャネル スタックに追加する必要があります。 クラスと クラスの派生クラスを作成して `OnInitialize` メソッドをオーバーライドすると、このエンコーダ ファクトリを手動で追加することができます。また、カスタム バインディング要素を介してエンコーダ ファクトリを公開することもできます。 + + 新しいカスタム バインディング要素を作成するには、 クラスの派生クラスを作成します。ただし、バインディング要素には複数の型があります。カスタム バインディング要素がメッセージ エンコード バインディング要素として認識されるには、さらに も実装する必要があります。 は、新しいメッセージ エンコーダ ファクトリ \(`CreateMessageEncoderFactory`\) を作成するためのメソッドを公開します。このメソッドを実装すると、一致するメッセージ エンコーダ ファクトリのインスタンスが返されます。また、 にはアドレス バージョンを示すプロパティがあります。このサンプルでは既存のエンコーダをラップするので、サンプルの実装では既存のエンコーダ バインディング要素もラップし、内部のエンコーダ バインディング要素をコンストラクタへのパラメータとして設定して、プロパティを介して公開します。`GZipMessageEncodingBindingElement` クラスを実装する方法を次のサンプル コードに示します。 + +``` +public sealed class GZipMessageEncodingBindingElement + : MessageEncodingBindingElement //BindingElement + , IPolicyExportExtension +{ + + //We use an inner binding element to store information + //required for the inner encoder. + MessageEncodingBindingElement innerBindingElement; + + //By default, use the default text encoder as the inner encoder. + public GZipMessageEncodingBindingElement() + : this(new TextMessageEncodingBindingElement()) { } + + public GZipMessageEncodingBindingElement(MessageEncodingBindingElement messageEncoderBindingElement) + { + this.innerBindingElement = messageEncoderBindingElement; + } + + public MessageEncodingBindingElement InnerMessageEncodingBindingElement + { + get { return innerBindingElement; } + set { innerBindingElement = value; } + } + + //Main entry point into the encoder binding element. + // Called by WCF to get the factory that creates the + //message encoder. + public override MessageEncoderFactory CreateMessageEncoderFactory() + { + return new +GZipMessageEncoderFactory(innerBindingElement.CreateMessageEncoderFactory()); + } + + public override MessageVersion MessageVersion + { + get { return innerBindingElement.MessageVersion; } + set { innerBindingElement.MessageVersion = value; } + } + + public override BindingElement Clone() + { + return new + GZipMessageEncodingBindingElement(this.innerBindingElement); + } + + public override T GetProperty(BindingContext context) + { + if (typeof(T) == typeof(XmlDictionaryReaderQuotas)) + { + return innerBindingElement.GetProperty(context); + } + else + { + return base.GetProperty(context); + } + } + + public override IChannelFactory BuildChannelFactory(BindingContext context) + { + if (context == null) + throw new ArgumentNullException("context"); + + context.BindingParameters.Add(this); + return context.BuildInnerChannelFactory(); + } + + public override IChannelListener BuildChannelListener(BindingContext context) + { + if (context == null) + throw new ArgumentNullException("context"); + + context.BindingParameters.Add(this); + return context.BuildInnerChannelListener(); + } + + public override bool CanBuildChannelListener(BindingContext context) + { + if (context == null) + throw new ArgumentNullException("context"); + + context.BindingParameters.Add(this); + return context.CanBuildInnerChannelListener(); + } + + void IPolicyExportExtension.ExportPolicy(MetadataExporter exporter, PolicyConversionContext policyContext) + { + if (policyContext == null) + { + throw new ArgumentNullException("policyContext"); + } + XmlDocument document = new XmlDocument(); + policyContext.GetBindingAssertions().Add(document.CreateElement( + GZipMessageEncodingPolicyConstants.GZipEncodingPrefix, + GZipMessageEncodingPolicyConstants.GZipEncodingName, + GZipMessageEncodingPolicyConstants.GZipEncodingNamespace)); + } +} +``` + + `GZipMessageEncodingBindingElement` クラスは `IPolicyExportExtension` インターフェイスを実装しているので、次の例に示すように、このバインディング要素はメタデータ内のポリシーとしてエクスポートできます。 + +``` + + + + + + + + + +``` + + `GZipMessageEncodingBindingElementImporter` クラスは `IPolicyImportExtension` インターフェイスを実装しています。このクラスは `GZipMessageEncodingBindingElement` のポリシーをインポートします。Svcutil.exe ツールを使用すると、ポリシーを構成ファイルにインポートして `GZipMessageEncodingBindingElement` を処理できます。これを行うには、Svcutil.exe.config に次のコードを追加する必要があります。 + +``` + + + + + + + + + + + + + + + + + + + +``` + + これで、一致する圧縮エンコーダのバインディング要素ができるので、新しいカスタム バインディング オブジェクトを作成してそのカスタム バインディング要素を追加すると、プログラムによって圧縮エンコーダのバインディング要素をサービスまたはクライアントにフックできます。次のサンプル コードを参照してください。 + +``` +ICollection bindingElements = new List(); +HttpTransportBindingElement httpBindingElement = new HttpTransportBindingElement(); +GZipMessageEncodingBindingElement compBindingElement = new GZipMessageEncodingBindingElement (); +bindingElements.Add(compBindingElement); +bindingElements.Add(httpBindingElement); +CustomBinding binding = new CustomBinding(bindingElements); +binding.Name = "SampleBinding"; +binding.Namespace = "http://tempuri.org/bindings"; + +``` + + ほとんどのユーザー シナリオではこのコードで十分ですが、サービスが Web ホストの場合はファイル構成のサポートが重要になります。Web ホストのシナリオをサポートするには、カスタム構成ハンドラを開発して、カスタム バインディング要素をファイル内で構成できるようにする必要があります。 + + バインディング要素の構成ハンドラーを、[!INCLUDE[dnprdnlong](../../../../includes/dnprdnlong-md.md)] によって用意された構成システム上にビルドできます。バインディング要素の構成ハンドラーは、 クラスから派生する必要があります。`BindingElementType` プロパティを使用して、このセクション用に作成するバインディング要素の型を構成システムに通知します。設定可能な `BindingElement` のすべての側面を、 派生クラスのプロパティとして公開する必要があります。 を使用して、構成要素の属性をプロパティにマップしたり、属性がない場合は既定値を設定する際に役立てます。構成から値が読み込まれてプロパティに適用されると、 メソッドが呼び出されます。このメソッドは、プロパティをバインディング要素の具体的なインスタンスに変換します。 メソッドを使用して、 派生クラスのプロパティを、新しく作成されたバインディング要素の設定対象の値に変換します。 + + `GZipMessageEncodingElement` を実装するサンプル コードを次に示します。 + +``` +public class GZipMessageEncodingElement : BindingElementExtensionElement +{ + public GZipMessageEncodingElement() + { + } + +//Called by the WCF to discover the type of binding element this +//config section enables + public override Type BindingElementType + { + get { return typeof(GZipMessageEncodingBindingElement); } + } + + //The only property we need to configure for our binding element is + //the type of inner encoder to use. Here, we support text and + //binary. + [ConfigurationProperty("innerMessageEncoding", + DefaultValue = "textMessageEncoding")] + public string InnerMessageEncoding + { + get { return (string)base["innerMessageEncoding"]; } + set { base["innerMessageEncoding"] = value; } + } + + //Called by the WCF to apply the configuration settings (the + //property above) to the binding element + public override void ApplyConfiguration(BindingElement bindingElement) + { + GZipMessageEncodingBindingElement binding = + (GZipMessageEncodingBindingElement)bindingElement; + PropertyInformationCollection propertyInfo = + this.ElementInformation.Properties; + if (propertyInfo["innerMessageEncoding"].ValueOrigin != + PropertyValueOrigin.Default) + { + switch (this.InnerMessageEncoding) + { + case "textMessageEncoding": + binding.InnerMessageEncodingBindingElement = + new TextMessageEncodingBindingElement(); + break; + case "binaryMessageEncoding": + binding.InnerMessageEncodingBindingElement = + new BinaryMessageEncodingBindingElement(); + break; + } + } + } + + //Called by the WCF to create the binding element + protected override BindingElement CreateBindingElement() + { + GZipMessageEncodingBindingElement bindingElement = + new GZipMessageEncodingBindingElement(); + this.ApplyConfiguration(bindingElement); + return bindingElement; + } +} +``` + + この構成ハンドラーは、サービスまたはクライアントの App.config または Web.config の次の表現にマップされます。 + +``` + + +``` + + この構成ハンドラーを使用するには、次のサンプル構成に示すように、[\](../../../../docs/framework/configure-apps/file-schema/wcf/system-servicemodel.md) 要素内に登録する必要があります。 + +``` + + + + + + +``` + + このサーバーを実行する場合は、操作要求および応答はコンソール ウィンドウに表示されます。サーバーをシャットダウンするには、ウィンドウで Enter キーを押します。 + +``` + +Press Enter key to Exit. + + Server Echo(string input) called: + Client message: Simple hello + + Server BigEcho(string[] input) called: + 64 client messages + +``` + + このクライアントを実行する場合は、操作要求および応答はコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` + +Calling Echo(string): +Server responds: Simple hello Simple hello + +Calling BigEcho(string[]): +Server responds: Hello 0 + +Press to terminate client. + +``` + +#### サンプルを設定、ビルド、および実行するには + +1. 次のコマンドを使用して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 4.0 をインストールします。 + + ``` + %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable + + ``` + +2. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +3. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\MessageEncoder\Compression` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-message-encoder-custom-text-encoder.md b/docs/framework/wcf/samples/custom-message-encoder-custom-text-encoder.md new file mode 100644 index 00000000000..daa9d7211bb --- /dev/null +++ b/docs/framework/wcf/samples/custom-message-encoder-custom-text-encoder.md @@ -0,0 +1,252 @@ +--- +title: "カスタム メッセージ エンコーダー : カスタム テキスト エンコーダー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 68ff5c74-3d33-4b44-bcae-e1d2f5dea0de +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# カスタム メッセージ エンコーダー : カスタム テキスト エンコーダー +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用してカスタム テキスト メッセージ エンコーダーを実装する方法を示します。 + +> [!WARNING] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\MessageEncoder\Text` + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の でサポートされているエンコーディングは、UTF\-8、UTF\-16、および Big Endean Unicode のみです。このサンプルのカスタム テキスト メッセージ エンコーダーでは、すべてのプラットフォームでサポートされ、相互運用に必要とされる可能性のある文字エンコーディングがサポートされます。このサンプルは、クライアント コンソール プログラム \(.exe\)、インターネット インフォメーション サービス \(IIS\) によってホストされるサービス ライブラリ \(.dll\)、およびテキスト メッセージ エンコーダー ライブラリ \(.dll\) で構成されています。サービスは、要求\/応答通信パターンを定義するコントラクトを実装します。このコントラクトは `ICalculator` インターフェイスによって定義されており、算術演算 \(加算、減算、乗算、および除算\) を公開しています。クライアントは指定された算術演算を同期要求し、サービスは結果と共に応答します。クライアントとサービスはどちらも、既定の の代わりに `CustomTextMessageEncoder` を使用します。 + + カスタム エンコーダーの実装は、メッセージ エンコーダー ファクトリ、メッセージ エンコーダー、メッセージ エンコーディング バインディング要素、および構成ハンドラーで構成され、次が示されます。 + +- カスタム エンコーダーおよびエンコーダー ファクトリの作成。 + +- カスタム エンコーダーのバインディング要素の作成。 + +- カスタム バインディング要素を統合するためのカスタム バインディング構成の使用。 + +- カスタム バインディング要素のファイル構成を可能にするカスタム構成ハンドラーの開発。 + +### サンプルを設定、ビルド、および実行するには + +1. 次のコマンドを使用して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 4.0 をインストールします。 + + ``` + %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable + + ``` + +2. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +3. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. 単一コンピュータ構成か複数コンピュータ構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## メッセージ エンコーダー ファクトリとメッセージ エンコーダー + またはクライアント チャネルが開かれると、デザイン時コンポーネント `CustomTextMessageBindingElement` は `CustomTextMessageEncoderFactory` を作成します。このファクトリは、`CustomTextMessageEncoder` を作成します。メッセージ エンコーダーは、ストリーミング モードとバッファー モードの両方で動作し、 を使用してメッセージの読み取りと書き込みを行います。UTF\-8、UTF\-16、および Big\-Endean Unicode だけをサポートするように最適化された [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の XML リーダーとライターとは異なり、これらのリーダーとライターはプラットフォームでサポートされるすべてのエンコーディングをサポートします。 + + カスタム テキスト メッセージ エンコーダーのコード例を次に示します。 + +```csharp + +public class CustomTextMessageEncoder : MessageEncoder +{ + private CustomTextMessageEncoderFactory factory; + private XmlWriterSettings writerSettings; + private string contentType; + + public CustomTextMessageEncoder(CustomTextMessageEncoderFactory factory) + { + this.factory = factory; + + this.writerSettings = new XmlWriterSettings(); + this.writerSettings.Encoding = Encoding.GetEncoding(factory.CharSet); + this.contentType = string.Format("{0}; charset={1}", + this.factory.MediaType, this.writerSettings.Encoding.HeaderName); + } + + public override string ContentType + { + get + { + return this.contentType; + } + } + + public override string MediaType + { + get + { + return factory.MediaType; + } + } + + public override MessageVersion MessageVersion + { + get + { + return this.factory.MessageVersion; + } + } + + public override Message ReadMessage(ArraySegment buffer, BufferManager bufferManager, string contentType) + { + byte[] msgContents = new byte[buffer.Count]; + Array.Copy(buffer.Array, buffer.Offset, msgContents, 0, msgContents.Length); + bufferManager.ReturnBuffer(buffer.Array); + + MemoryStream stream = new MemoryStream(msgContents); + return ReadMessage(stream, int.MaxValue); + } + + public override Message ReadMessage(Stream stream, int maxSizeOfHeaders, string contentType) + { + XmlReader reader = XmlReader.Create(stream); + return Message.CreateMessage(reader, maxSizeOfHeaders, this.MessageVersion); + } + + public override ArraySegment WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset) + { + MemoryStream stream = new MemoryStream(); + XmlWriter writer = XmlWriter.Create(stream, this.writerSettings); + message.WriteMessage(writer); + writer.Close(); + + byte[] messageBytes = stream.GetBuffer(); + int messageLength = (int)stream.Position; + stream.Close(); + + int totalLength = messageLength + messageOffset; + byte[] totalBytes = bufferManager.TakeBuffer(totalLength); + Array.Copy(messageBytes, 0, totalBytes, messageOffset, messageLength); + + ArraySegment byteArray = new ArraySegment(totalBytes, messageOffset, messageLength); + return byteArray; + } + + public override void WriteMessage(Message message, Stream stream) + { + XmlWriter writer = XmlWriter.Create(stream, this.writerSettings); + message.WriteMessage(writer); + writer.Close(); + } +} +``` + + メッセージ エンコーダー ファクトリを作成する方法を次のコード例に示します。 + +```csharp +public class CustomTextMessageEncoderFactory : MessageEncoderFactory +{ + private MessageEncoder encoder; + private MessageVersion version; + private string mediaType; + private string charSet; + + internal CustomTextMessageEncoderFactory(string mediaType, string charSet, + MessageVersion version) + { + this.version = version; + this.mediaType = mediaType; + this.charSet = charSet; + this.encoder = new CustomTextMessageEncoder(this); + } + + public override MessageEncoder Encoder + { + get + { + return this.encoder; + } + } + + public override MessageVersion MessageVersion + { + get + { + return this.version; + } + } + + internal string MediaType + { + get + { + return this.mediaType; + } + } + + internal string CharSet + { + get + { + return this.charSet; + } + } +} +``` + +## メッセージ エンコーディング バインディング要素 + このバインディング要素により、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイム スタックの構成が可能になります。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーション内でカスタム メッセージ エンコーダーを使用するには、ランタイム スタックの適切なレベルで適切な設定を使用してメッセージ エンコーダー ファクトリを作成する、バインディング要素が必要です。 + + `CustomTextMessageBindingElement` は 基本クラスから派生し、 クラスを継承します。これによって、他の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] コンポーネントは、このバインディング要素をメッセージ エンコーディング バインディング要素として認識できます。 を実装すると、一致するメッセージ エンコーダー ファクトリのインスタンスが適切に設定されて返されます。 + + `CustomTextMessageBindingElement` は、プロパティを介して `MessageVersion`、`ContentType`、および `Encoding` の設定を公開します。エンコーダーは、Soap11Addressing と Soap12Addressing1 の両方のバージョンをサポートします。既定値は Soap11Addressing1 です。また、`ContentType` の既定値は "text\/xml" です。`Encoding` プロパティでは、必要な文字エンコーディングの値を設定できます。サンプルのクライアントとサービスでは、ISO\-8859\-1 \(Latin1\) 文字エンコーディングを使用します。この規格は、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の ではサポートされません。 + + カスタム テキスト メッセージ エンコーダーを使用してプログラムでバインディングを作成する方法を次のコードに示します。 + +``` +ICollection bindingElements = new List(); +HttpTransportBindingElement httpBindingElement = new HttpTransportBindingElement(); +CustomTextMessageBindingElement textBindingElement = new CustomTextMessageBindingElement(); +bindingElements.Add(textBindingElement); +bindingElements.Add(httpBindingElement); +CustomBinding binding = new CustomBinding(bindingElements); +``` + +## メッセージ エンコーディング バインディング要素へのメタデータのサポートの追加 + から派生するすべての型は、サービスに対して生成される WSDL ドキュメント内の SOAP バインドのバージョンを更新します。これを行うには、 インターフェイス上に `ExportEndpoint` メソッドを実装し、生成された WSDL を変更します。このサンプルでは、`CustomTextMessageBindingElement` は `TextMessageEncodingBinidngElement` からの WSDL エクスポート ロジックを使用します。 + + このサンプルの場合、クライアント構成は手動構成です。Svcutil.exe を使用してクライアント構成を生成することはできません。`CustomTextMessageBindingElement` では、動作を記述するポリシー アサーションがエクスポートされないからです。通常は、カスタム バインディング要素上に インターフェイスを実装して、バインディング要素によって実装される動作または機能を記述するカスタム ポリシー アサーションをエクスポートする必要があります。カスタム バインディング要素のポリシー アサーションをエクスポートする方法の例については、「[トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md)」サンプルを参照してください。 + +## メッセージ エンコーディング バインディング構成ハンドラー + 前のセクションでは、カスタム テキスト メッセージ エンコーダーをプログラムによって使用する方法を示しました。`CustomTextMessageEncodingBindingSection` は構成ハンドラーを実装します。この構成ハンドラーにより、カスタム テキスト メッセージ エンコーダーを構成ファイル内で使用することを指定できます。`CustomTextMessageEncodingBindingSection` クラスは クラスから派生します。`BindingElementType` プロパティでは、このセクション用に作成するバインディング要素の型が構成システムに通知されます。 + + `CustomTextMessageBindingElement` によって定義されたすべての設定は、`CustomTextMessageEncodingBindingSection` のプロパティとして公開されます。 は、構成要素の属性をプロパティにマップしたり、属性がない場合は既定値を設定する際に役立ちます。構成から値が読み込まれて型のプロパティに適用されると、 メソッドが呼び出されます。このメソッドは、プロパティをバインディング要素の具体的なインスタンスに変換します。 + + この構成ハンドラーは、サービスまたはクライアントの App.config または Web.config の次の表現にマップされます。 + +``` + + +``` + + このサンプルでは、ISO\-8859\-1 エンコーディングを使用します。 + + この構成ハンドラーを使用するには、次の構成要素を使用して登録する必要があります。 + +``` + + + + + + +``` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-message-filter.md b/docs/framework/wcf/samples/custom-message-filter.md new file mode 100644 index 00000000000..94c11c2a7e6 --- /dev/null +++ b/docs/framework/wcf/samples/custom-message-filter.md @@ -0,0 +1,150 @@ +--- +title: "カスタム メッセージ フィルター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 98dd0af8-fce6-4255-ac32-42eb547eea67 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# カスタム メッセージ フィルター +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] が使用するメッセージ フィルタを置き換えて、メッセージをエンドポイントにディスパッチする方法を示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + チャネルでの最初のメッセージがサーバーに到着すると、サーバーは、URI に関連付けられているエンドポイントがある場合に、どのエンドポイントがメッセージを受信する必要があるかを判断する必要があります。この処理は、 に関連付けられている オブジェクトで制御されます。 + + サービスの各エンドポイントには、単一の があります。 には、 の両方があります。これら 2 つのフィルタを結合したものが、このエンドポイントに使用されるメッセージ フィルタです。 + + エンドポイントの の既定では、アドレス指定されているメッセージと、サービス エンドポイントの に一致するアドレスを照合します。エンドポイントの の既定では、受信メッセージのアクションを検査して、サービス エンドポイントのコントラクトの操作のいずれかのアクション \(対象になるのは `IsInitiating`\=`true` のアクションだけです\) に対応するアクションが含まれるメッセージを照合します。その結果、エンドポイントのフィルタの既定で一致と見なされるのは、メッセージの To ヘッダーがエンドポイントの に一致し、メッセージのアクションがエンドポイントの操作のいずれかのアクションと一致するという、2 つの条件がどちらも満たされる場合だけです。 + + これらのフィルタは、動作を使用して変更できます。サンプルのサービスは、次のように を作成して、 を置き換えます。 + +``` +class FilteringEndpointBehavior : IEndpointBehavior … +``` + + 2 つのアドレス フィルタは、次のように定義されます。 + +``` +// Matches any message whose To address contains the letter 'e' +class MatchEAddressFilter : MessageFilter … +// Matches any message whose To address does not contain the letter 'e' +class MatchNoEAddressFilter : MessageFilter +``` + + `FilteringEndpointBehavior` は構成可能になり、2 つの異なるバリエーションを設定できます。 + +``` +public class FilteringEndpointBehaviorExtension : BehaviorExtensionElement + +``` + + バリエーション 1 では 'e' が含まれる \(ただし任意のアクションを含む\) アドレスのみを照合します。これに対して、バリエーション 2 では 'e' が含まれないアドレスのみを照合します。 + +``` +if (Variation == 1) + return new FilteringEndpointBehavior( + new MatchEAddressFilter(), new MatchAllMessageFilter()); +else + return new FilteringEndpointBehavior( + new MatchNoEAddressFilter(), new MatchAllMessageFilter()); + +``` + + 構成ファイルでは、サービスは次のように新しい動作を登録します。 + +``` + + + + + +``` + + 次に、各バリエーションの `endpointBehavior` 構成を次のように作成します。 + +``` + + + + + + + + + +``` + + 最後に、サービスのエンドポイントは、`behaviorConfigurations` の 1 つを次のように参照します。 + +``` + + +``` + + クライアント アプリケーションの実装は単純で、URI の値を 2 番目の \(`via`\) パラメータとして に渡すことによって、2 つのチャネルをサービスの URI に作成し、各チャネルに 1 つのメッセージを送信します。ただし、チャネルごとに異なるエンドポイント アドレスが使用されます。この結果、次のクライアントの出力に示すように、クライアントからの送信メッセージにはそれぞれ異なる宛先が指定され、サーバーはこれに応じて応答します。 + +``` +Sending message to urn:e... +Exception: The message with To 'urn:e' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree. + +Sending message to urn:a... +Hello +``` + + サーバーの構成ファイルのバリエーションを切り替えると、フィルターが入れ替わり、クライアントには逆の動作が表示されます \(`urn:e` へのメッセージは正常に送信されますが、`urn:a` へのメッセージはエラーになります\)。 + +``` + + +``` + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\MessageFilter` + +### サンプルを設定、ビルド、および実行するには + +1. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +2. 単一コンピュータ構成でサンプルを実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +3. 複数コンピュータ構成でサンプルを実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従い、Client.cs の次の行を変更します。 + + ``` + Uri serviceVia = new Uri("http://localhost/ServiceModelSamples/service.svc"); + ``` + + つまり、localhost をサーバー名に置き換えます。 + + ``` + Uri serviceVia = new Uri("http://servermachinename/ServiceModelSamples/service.svc"); + ``` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-message-interceptor.md b/docs/framework/wcf/samples/custom-message-interceptor.md new file mode 100644 index 00000000000..f144251d503 --- /dev/null +++ b/docs/framework/wcf/samples/custom-message-interceptor.md @@ -0,0 +1,178 @@ +--- +title: "カスタム メッセージ インターセプター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 73f20972-53f8-475a-8bfe-c133bfa225b0 +caps.latest.revision: 24 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 24 +--- +# カスタム メッセージ インターセプター +このサンプルでは、チャネル拡張モデルの使用方法を示します。特に、チャネル ファクトリとチャネル リスナを作成するカスタム バインディング要素を実装して、ランタイム スタックの特定のポイントですべての送受信メッセージを中断する方法を示します。また、このサンプルには、こうしたカスタム ファクトリの使用方法を示すクライアントとサーバーも含まれます。 + + このサンプルでは、クライアントとサービスは両方ともコンソール プログラム \(.exe\) です。そして、これらのクライアントとサービスの両方で、カスタム バインディング要素およびこれに関連付けられたランタイム オブジェクトを含む共通ライブラリ \(.dll\) を使用します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Channels\MessageInterceptor` + + このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] でカスタム階層チャネルを作成するための推奨手順について説明します。作成時には、チャネル フレームワークと次に示す [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のベスト プラクティスを使用します。カスタム階層チャネルを作成する手順は、次のとおりです。 + +1. どのチャネル形状をチャネル ファクトリおよびチャネル リスナがサポートするかを決定します。 + +2. チャネル形状をサポートするチャネル ファクトリおよびチャネル リスナを作成します。 + +3. チャネル スタックにカスタム階層チャネルを追加するバインド要素を追加します。 + +4. バインド要素拡張セクションを追加して、新しいバインド要素を構成システムに公開します。 + +## チャネル形状 + カスタム階層チャネルを記述する最初の手順として、どの形状がチャネルに必要かを判断します。メッセージ インスペクタの場合、下のレイヤでサポートされる任意の形状をサポートします \(たとえば、下のレイヤで が作成できる場合は、 を公開します\)。 + +## チャネル ファクトリとリスナ ファクトリ + カスタム階層チャネルを記述する次の手順では、クライアント チャネルでの の実装とサービス チャネルでの の実装を作成します。 + + これらのクラスでは、内部ファクトリとリスナが取得され、この内部ファクトリとリスナが `OnCreateChannel` と `OnAcceptChannel` 以外のすべての呼び出しを代行します。 + +``` +class InterceptingChannelFactory : ChannelFactoryBase +{ ... } +class InterceptingChannelListener : ListenerFactoryBase +{ ... } +``` + +## バインド要素の追加 + このサンプルでは、`InterceptingBindingElement` というカスタム バインディング要素を定義します。`InterceptingBindingElement` は、`ChannelMessageInterceptor` を入力として受け取り、この `ChannelMessageInterceptor` を使用して、通過するメッセージを操作します。公開する必要があるクラスはこれだけです。ファクトリ、リスナ、およびチャネルはすべて、ランタイム パブリック インターフェイスの内部実装として設定できます。 + +``` +public class InterceptingBindingElement : BindingElement +``` + +## 構成サポートの追加 + バインディング構成と統合するには、ライブラリで、構成セクション ハンドラをバインディング要素拡張セクションとして定義します。クライアントとサーバーの構成ファイルでは、バインディング要素拡張を構成システムに登録する必要があります。バインディング要素を構成システムに公開する実装は、このクラスから派生できます。 + +``` +public abstract class InterceptingElement : BindingElementExtensionElement { ... } + +``` + +## ポリシーの追加 + ポリシー システムと統合するには、`InterceptingBindingElement` に IPolicyExportExtension を実装し、ポリシーの生成に参加する必要があることを通知します。生成されたクライアント上でポリシーのインポートをサポートするには、`InterceptingBindingElementImporter` の派生クラスを登録し、`CreateMessageInterceptor`\(\) をオーバーライドして、ポリシーが有効なそれらの `ChannelMessageInterceptor` クラスを生成します。 + +## 例 : 破棄可能なメッセージ インスペクタ + このサンプルには、メッセージを破棄する `ChannelMessageInspector` の実装例が含まれています。 + +``` + +class DroppingServerElement : InterceptingElement +{ + protected override ChannelMessageInterceptor CreateMessageInterceptor() + { + return new DroppingServerInterceptor(); + } +} +``` + + この例には、次のように構成からアクセスできます。 + +``` + + ... + + ... + + + + + + + + +``` + + クライアントとサーバーでは、両方ともこの新しく作成された構成セクションを使用して、カスタム ファクトリをランタイム チャネル スタックの最低レベル \(トランスポート レベルの上\) に挿入します。 + +``` + + + + + + + +``` + + クライアントでは `MessageInterceptor` ライブラリを使用して、カスタム ヘッダーを偶数番号付きメッセージに追加します。一方、サービスでは `MessageInterceptor` ライブラリを使用して、この特殊なヘッダーを持たないメッセージを削除します。 + + サービスを実行し、次にクライアントを実行すると、次のクライアント出力が表示されます。 + +``` +Reporting the next 10 wind speed +100 kph +Server dropped a message. +90 kph +80 kph +Server dropped a message. +70 kph +60 kph +Server dropped a message. +50 kph +40 kph +Server dropped a message. +30 kph +20 kph +Server dropped a message. +10 kph +Press ENTER to shut down client + +``` + + クライアントからは 10 種類の異なる風速がサービスに報告されますが、特殊なヘッダーがあるのはそれらのタグの半分だけです。 + + サービスには、次の出力が表示されます。 + +``` +Press ENTER to exit. +Dangerous wind detected! Reported speed (90) is greater than 64 kph. +Dangerous wind detected! Reported speed (70) is greater than 64 kph. +5 wind speed reports have been received. + +``` + +#### サンプルを設定、ビルド、および実行するには + +1. 次のコマンドを使用して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 4.0 をインストールします。 + + ``` + %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable + + ``` + +2. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +3. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. 単一コンピュータ構成か複数コンピュータ構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +5. 最初に Service.exe を実行して次に Client.exe を実行し、両方のコンソール ウィンドウで出力を表示します。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-secure-metadata-endpoint.md b/docs/framework/wcf/samples/custom-secure-metadata-endpoint.md new file mode 100644 index 00000000000..13d1370b929 --- /dev/null +++ b/docs/framework/wcf/samples/custom-secure-metadata-endpoint.md @@ -0,0 +1,197 @@ +--- +title: "カスタム セキュア メタデータ エンドポイント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9e369e99-ea4a-49ff-aed2-9fdf61091a48 +caps.latest.revision: 19 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 19 +--- +# カスタム セキュア メタデータ エンドポイント +このサンプルでは、メタデータ交換バインディング以外のバインディングが使用されているセキュア メタデータ エンドポイントが含まれるサービスを実装する方法と、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) またはクライアントを構成して、そのようなメタデータ エンドポイントからメタデータを取得する方法を示します。メタデータ エンドポイントを公開する場合に使用できるシステム指定のバインディングには、mexHttpBinding と mexHttpsBinding の 2 つがあります。mexHttpBinding は、メタデータ エンドポイントをセキュリティ保護されない HTTP で公開する場合に使用します。mexHttpsBinding は、メタデータ エンドポイントをセキュリティ保護される HTTPS で公開する場合に使用します。このサンプルでは、 を使用してセキュア メタデータ エンドポイントを公開する方法を示します。この方法は、HTTPS を使用せずにバインディングのセキュリティ設定を変更する場合に使用します。mexHttpsBinding を使用すると、メタデータ エンドポイントがセキュリティ保護されますが、バインディング設定を変更できなくなります。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +## サービス + このサンプルのサービスには 2 つのエンドポイントがあります。アプリケーション エンドポイントは、`ReliableSession` が有効で証明書による `Message` セキュリティを使用する `WSHttpBinding` に、`ICalculator` コントラクトを提供します。メタデータ エンドポイントでも、同じセキュリティが設定されている `WSHttpBinding` を使用しますが、`ReliableSession` は無効です。関連する構成は次のとおりです。 + +``` + + … + + + + + + + + + + + + + + + + + + + + + +``` + + 他の多くのサンプルでは、メタデータ エンドポイントには、セキュリティ保護されていない既定の `mexHttpBinding` が使用されます。このサンプルのメタデータは、`Message` セキュリティが設定されている `WSHttpBinding` を使用してセキュリティ保護されます。メタデータ クライアントがこのメタデータを取得するには、照合バインディングを使用して構成する必要があります。このサンプルでは、こうした 2 つのクライアントを示します。 + + 最初のクライアントでは Svcutil.exe を使用し、デザイン時にメタデータを取得してクライアント コードと構成を生成します。サービスはメタデータの既定以外のバインディングを使用するので、Svcutil.exe ツールはこのバインディングを使用してサービスからメタデータを取得できるよう、特に構成される必要があります。 + + 2 番目のクライアントでは `MetadataResolver` を使用し、既知のコントラクトのメタデータを動的に取得して、動的に生成されたクライアントでの操作を呼び出します。 + +## Svcutil クライアント + 既定のバインディングを使用して `IMetadataExchange` エンドポイントをホストする場合、このエンドポイントのアドレスを使用して次のように Svcutil.exe を実行できます。 + +``` +svcutil http://localhost/servicemodelsamples/service.svc/mex +``` + + これでツールが動作します。ただしこのサンプルのサーバーでは、メタデータをホストするときに既定以外のエンドポイントを使用しています。そのため、正しいバインディングが使用されるように Svcutil.exe を指定する必要があります。これは、Svcutil.exe.config ファイルを使用して実行できます。 + + Svcutil.exe.config ファイルは、通常のクライアント構成ファイルに似ています。異なる点は、次に示すようにクライアントのエンドポイント名とエンドポイント コントラクトだけです。 + +``` + +``` + + エンドポイント名は、メタデータがホストされるアドレスのスキーマの名前である必要があります。また、エンドポイント コントラクトは `IMetadataExchange` であることが必要です。したがって、Svcutil.exe をコマンド ラインで実行する場合は次のようになります。 + +``` +svcutil http://localhost/servicemodelsamples/service.svc/mex +``` + + ここでは、"http" という名前のエンドポイントと、このメタデータ エンドポイントとの通信交換のバインディングと動作を構成するコントラクト `IMetadataExchange` が検索されます。このサンプルでは、Svcutil.exe.config ファイルの残りの部分でバインディング構成と動作の資格情報を指定して、サーバーのメタデータ エンドポイントの構成と照合します。 + + Svcutil.exe が Svcutil.exe.config の構成を使用するには、Svcutil.exe がこの構成ファイルと同じディレクトリにある必要があります。したがって、Svcutil.exe をインストール場所から Svcutil.exe.config ファイルが含まれるディレクトリにコピーする必要があります。その後、そのディレクトリで次のコマンドを実行します。 + +``` +.\svcutil.exe http://localhost/servicemodelsamples/service.svc/mex +``` + + 先頭の ".\\" により、現在のディレクトリ \(対応する Svcutil.exe.config のあるディレクトリ\) 内の Svcutil.exe のコピーが実行されることになります。 + +## MetadataResolver クライアント + クライアントで、コントラクトおよびメタデータと対話する方法がデザイン時に認識されている場合、クライアントは `MetadataResolver` を使用してアプリケーション エンドポイントのバインディングとアドレスを動的に検索することができます。その例として、このクライアントのサンプルでは、`MetadataExchangeClient` を作成して構成することにより、`MetadataResolver` で使用されるバインディングと資格情報を構成する方法を示します。 + + Svcutil.exe.config には、同じバインディングと資格情報についての情報が示されており、`MetadataExchangeClient` でこれを次のように強制的に使用できます。 + +``` +// Specify the Metadata Exchange binding and its security mode +WSHttpBinding mexBinding = new WSHttpBinding(SecurityMode.Message); +mexBinding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate; + +// Create a MetadataExchangeClient for retrieving metadata, and set the // certificate details +MetadataExchangeClient mexClient = new MetadataExchangeClient(mexBinding); +mexClient.SoapCredentials.ClientCertificate.SetCertificate( StoreLocation.CurrentUser, StoreName.My, + X509FindType.FindBySubjectName, "client.com"); +mexClient.SoapCredentials.ServiceCertificate.Authentication. CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust; +mexClient.SoapCredentials.ServiceCertificate.SetDefaultCertificate( StoreLocation.CurrentUser, StoreName.TrustedPeople, + X509FindType.FindBySubjectName, "localhost"); +``` + + `mexClient` が構成されている場合、次のように必要なコントラクトを列挙し、`MetadataResolver` を使用してこれらのコントラクトが含まれるエンドポイントの一覧を取得できます。 + +``` +// The contract we want to fetch metadata for +Collection contracts = new Collection(); +ContractDescription contract = ContractDescription.GetContract(typeof(ICalculator)); +contracts.Add(contract); +// Find endpoints for that contract +EndpointAddress mexAddress = new EndpointAddress(ConfigurationManager.AppSettings["mexAddress"]); +ServiceEndpointCollection endpoints = MetadataResolver.Resolve(contracts, mexAddress, mexClient); +``` + + 最後に、こうしたエンドポイントからの情報を使用して、アプリケーション エンドポイントと通信するチャネルの作成に使用される、`ChannelFactory` のバインディングとアドレスを初期化できます。 + +``` +ChannelFactory cf = new ChannelFactory(endpoint.Binding, endpoint.Address); +``` + + このクライアント サンプルで重要な点は、`MetadataResolver` を使用しているときにメタデータ交換通信用のカスタム バインディングまたはカスタム動作を指定する必要がある場合に、`MetadataExchangeClient` を使用すればこうしたカスタム設定を指定できるということです。 + +#### サンプルをセットアップしてビルドするには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +#### サンプルを同じコンピューターで実行するには + +1. Setup.bat をサンプルのインストール フォルダーで実行します。これにより、サンプルの実行に必要なすべての証明書がインストールされます。Setup.bat は、「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」から setupCertTool.bat を実行してインストールされる FindPrivateKey.exe ツールを使用します。 + +2. \\MetadataResolverClient\\bin または \\SvcutilClient\\bin でクライアント アプリケーションを実行します。クライアント アクティビティがクライアントのコンソール アプリケーションに表示されます。 + +3. クライアントとサービス間で通信できない場合は、「[Troubleshooting Tips](http://msdn.microsoft.com/ja-jp/8787c877-5e96-42da-8214-fa737a38f10b)」を参照してください。 + +4. サンプルの使用が終わったら、Cleanup.bat を実行して証明書を削除してください。他のセキュリティ サンプルでも同じ証明書を使用します。 + +#### サンプルを別のコンピューターで実行するには + +1. サーバーで `setup.bat service` を実行します。`setup.bat` に `service` 引数を指定して実行すると、コンピューターの完全修飾ドメイン名を使用してサービス証明書が作成され、Service.cer というファイルにエクスポートされます。 + +2. サーバーで、Web.config を編集して新しい証明書の名前を反映します。つまり、[\](../../../../docs/framework/configure-apps/file-schema/wcf/servicecertificate-of-clientcredentials-element.md) 要素の `findValue` 属性をコンピューターの完全修飾ドメイン名に変更します。 + +3. Service.cer ファイルを、サービス ディレクトリからクライアント コンピューターのクライアント ディレクトリにコピーします。 + +4. クライアントで `setup.bat client` を実行します。`setup.bat` に `client` 引数を指定して実行すると、Client.com というクライアント証明書が作成され、Client.cer というファイルにエクスポートされます。 + +5. クライアント コンピューターにある `MetadataResolverClient` の App.config ファイルで、MEX エンドポイントのアドレス値をサービスの新しいアドレスに合わせて変更します。そのためには、localhost をサーバーの完全修飾ドメイン名に置き換えます。さらに、metadataResolverClient.cs ファイルに記述されている "localhost" を、新しいサービス証明書の名前 \(サーバーの完全修飾ドメイン名\) に変更します。SvcutilClient プロジェクトの App.config に対して、同様の手順を行います。 + +6. Client.cer ファイルを、クライアント ディレクトリからサーバーのサービス ディレクトリにコピーします。 + +7. クライアントで `ImportServiceCert.bat` を実行します。これにより、サービス証明書が Service.cer ファイルから CurrentUser \- TrustedPeople ストアにインポートされます。 + +8. サーバーで `ImportClientCert.bat` を実行します。これにより、クライアント証明書が Client.cer ファイルから LocalMachine \- TrustedPeople ストアにインポートされます。 + +9. サービス コンピューターで、Visual Studio でサービス プロジェクトをビルドし、それが実行されていることを Web ブラウザーでヘルプ ページを選択することにより検証します。 + +10. クライアント コンピューター上の VS で、MetadataResolverClient または SvcutilClient を実行します。 + + 1. クライアントとサービス間で通信できない場合は、「[Troubleshooting Tips](http://msdn.microsoft.com/ja-jp/8787c877-5e96-42da-8214-fa737a38f10b)」を参照してください。 + +#### サンプルの実行後にクリーンアップするには + +- サンプルの実行が終わったら、サンプル フォルダーにある Cleanup.bat を実行します。 + + > [!NOTE] + > このサンプルを別のマシンで実行している場合、このスクリプトはサービス証明書をクライアントから削除しません。別のコンピューターで証明書を使用する [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サンプルを実行した場合は、CurrentUser \- TrustedPeople ストアにインストールされたサービス証明書を忘れずに削除してください。削除するには、コマンド `certmgr -del -r CurrentUser -s TrustedPeople -c -n ` を実行します。たとえば、`certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com` のようにします。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Metadata\CustomMexEndpoint` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-service-host.md b/docs/framework/wcf/samples/custom-service-host.md new file mode 100644 index 00000000000..1d80c02521a --- /dev/null +++ b/docs/framework/wcf/samples/custom-service-host.md @@ -0,0 +1,186 @@ +--- +title: "カスタム サービス ホスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fe16ff50-7156-4499-9c32-13d8a79dc100 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# カスタム サービス ホスト +このサンプルでは、 クラスから派生したカスタムのサービス ホストを使用して、サービスの実行時動作を変更する方法を示します。 この方法は、多数のサービスを共通方式で構成するという方法の代わりに使用でき、再利用可能です。 このサンプルでは、 クラスを使用して、カスタムの ServiceHost を、インターネット インフォメーション サービス \(IIS\) または Windows プロセス アクティブ化サービス \(WAS\) でホストされる環境で使用する方法も示します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Hosting\CustomServiceHost` + +## シナリオについて + サービスのメタデータには機密情報が含まれる可能性がありますが、意図的ではない開示を回避するために、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスの既定の構成では、メタデータは公開されないようになっています。 この動作は、既定の設定ではセキュリティで保護されますが、同時に、サービスの構成の中でメタデータ公開の動作が明示的に有効化されない限り、サービスの呼び出しに必要なクライアント コードをメタデータ インポート ツール \(Svcutil.exe など\) を使用して生成できないことも意味します。 + + 多数のサービスのメタデータ公開を有効にすると、同一の構成要素が各サービスに追加されます。この結果、本質的に同じ構成情報が大量に発生することになります。 各サービスを個別に構成する代わりに、メタデータ公開を有効化する命令型コードを一度だけプログラミングして、そのコードを複数のサービスで再利用するという方法もあります。 この方法を使用するには、 から派生する新しいクラスを作成し、`ApplyConfiguration`\(\) メソッドをオーバーライドして命令型コードでメタデータ公開動作を追加します。 + +> [!IMPORTANT] +> このサンプルでは、わかりやすくするために、セキュリティで保護されていないメタデータ公開エンドポイントを作成する方法を示します。 このようなエンドポイントを利用するコンシューマーは、匿名で、認証を受けていない可能性もあります。したがって、エンドポイントを配置する前には注意を払い、サービスのメタデータをパブリックに開示することが適切であることを確認する必要があります。 + +## カスタム ServiceHost の実装 + クラスは、便利な仮想メソッドを多数公開しています。継承側でこの仮想メソッドをオーバーライドして、サービスの実行時動作を変更することができます。 たとえば、`ApplyConfiguration`\(\) メソッドはサービスの構成情報を構成ストアから読み取り、それに応じてホストの を変更します。 既定の実装は構成をアプリケーションの構成ファイルから読み取りますが、 カスタム実装では、`ApplyConfiguration`\(\) をオーバーライドすれば、命令型コードを使用して にさらに変更を加えることや、既定の構成ストア全体を置き換えることも可能です \( たとえば、サービスのエンドポイント構成を、アプリケーションの構成ファイルではなくデータベースから読み取るようにする場合\)。 + + このサンプルでは、ServiceMetadataBehavior \(メタデータ公開を有効にする動作\) がサービスの構成ファイルに明示的に追加されていない場合でもこの動作を追加する、カスタムの ServiceHost を構築します。 これを実現するには、 から継承する新しいクラスを作成して `ApplyConfiguration`\(\) をオーバーライドします。 + +``` +class SelfDescribingServiceHost : ServiceHost +{ + public SelfDescribingServiceHost(Type serviceType, params Uri[] baseAddresses) + : base(serviceType, baseAddresses) { } + + //Overriding ApplyConfiguration() allows us to + //alter the ServiceDescription prior to opening + //the service host. + protected override void ApplyConfiguration() + { + //First, we call base.ApplyConfiguration() + //to read any configuration that was provided for + //the service we're hosting. After this call, + //this.Description describes the service + //as it was configured. + base.ApplyConfiguration(); + + //(rest of implementation elided for clarity) + } +} +``` + + アプリケーションの構成ファイルで指定されている構成が無視されないようにしたいので、`ApplyConfiguration`\(\) のオーバーライドで最初に行うことは、基本実装の呼び出しです。 このメソッドが完了した後で、次の命令型コードを使用して、サービス記述に を追加します。 + +``` +ServiceMetadataBehavior mexBehavior = this.Description.Behaviors.Find(); +if (mexBehavior == null) +{ + mexBehavior = new ServiceMetadataBehavior(); + this.Description.Behaviors.Add(mexBehavior); +} +else +{ + //Metadata behavior has already been configured, + //so we do not have any work to do. + return; +} +``` + + `ApplyConfiguration`\(\) のオーバーライドでの最後の処理は、既定のメタデータ エンドポイントの追加です。 通常は、サービス ホストの BaseAddresses コレクション内の各 URI に対して 1 つずつメタデータ エンドポイントを作成します。 + +``` +//Add a metadata endpoint at each base address +//using the "/mex" addressing convention +foreach (Uri baseAddress in this.BaseAddresses) +{ + if (baseAddress.Scheme == Uri.UriSchemeHttp) + { + mexBehavior.HttpGetEnabled = true; + this.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, + MetadataExchangeBindings.CreateMexHttpBinding(), + "mex"); + } + else if (baseAddress.Scheme == Uri.UriSchemeHttps) + { + mexBehavior.HttpsGetEnabled = true; + this.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, + MetadataExchangeBindings.CreateMexHttpsBinding(), + "mex"); + } + else if (baseAddress.Scheme == Uri.UriSchemeNetPipe) + { + this.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, + MetadataExchangeBindings.CreateMexNamedPipeBinding(), + "mex"); + } + else if (baseAddress.Scheme == Uri.UriSchemeNetTcp) + { + this.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, + MetadataExchangeBindings.CreateMexTcpBinding(), + "mex"); + } +} + +``` + +## 自己ホストでのカスタム ServiceHost の使用 + カスタム ServiceHost の実装が完成したので、これを使用して任意のサービスにメタデータ公開動作を追加できるようになりました。追加するには、`SelfDescribingServiceHost` のインスタンス内でサービスをホストします。 カスタム ServiceHost を自己ホストのシナリオで使用する方法を次のコードに示します。 + +``` +SelfDescribingServiceHost host = + new SelfDescribingServiceHost( typeof( Calculator ) ); +host.Open(); +``` + + 既定の クラスを使用してサービスをホストする場合と同様に、このカスタム ServiceHost も、サービスのエンドポイント構成をアプリケーションの構成ファイルから読み取ります。 ただし、カスタム ホストの内部でメタデータ公開を有効にするというロジックを追加したので、構成の中でメタデータ公開動作を明示的に有効化することは不要になりました。 この方法のメリットがはっきりと現れるのは、開発するアプリケーションに複数のサービスがあり、同じ構成要素を繰り返し記述することなく各サービスでメタデータ公開を有効化できるようにする場合です。 + +## IIS または WAS でのカスタム ServiceHost の使用 + カスタム サービス ホストを自己ホストのシナリオで使用することは簡単です。サービス ホストのインスタンスを作成して開くことは、アプリケーションのコードで行うからです。 ただし、IIS または WAS がホストする環境では、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のインフラストラクチャが、受信メッセージに応答してサービスのホストを動的にインスタンス化します。 このホスト環境でもカスタム サービス ホストを使用できますが、ServiceHostFactory の形式でコードを追加する必要があります。 次に示すコードは、カスタム `SelfDescribingServiceHost` のインスタンスを返す、 の派生クラスの例です。 + +``` +public class SelfDescribingServiceHostFactory : ServiceHostFactory +{ + protected override ServiceHost CreateServiceHost(Type serviceType, + Uri[] baseAddresses) + { + //All the custom factory does is return a new instance + //of our custom host class. The bulk of the custom logic should + //live in the custom host (as opposed to the factory) + //for maximum + //reuse value outside of the IIS/WAS hosting environment. + return new SelfDescribingServiceHost(serviceType, + baseAddresses); + } +} +``` + + 上のコードでわかるように、カスタム ServiceHostFactory の実装は非常に簡単です。 すべてのカスタム ロジックは ServiceHost 実装内部にあり、このファクトリによって派生クラスのインスタンスが返されます。 + + サービス実装と共にカスタム ファクトリを使用するには、いくつかのメタデータをサービスの .svc ファイルに追加する必要があります。 + +``` +<%@ServiceHost Service="Microsoft.ServiceModel.Samples.CalculatorService" + Factory="Microsoft.ServiceModel.Samples.SelfDescribingServiceHostFactory" + language=c# Debug="true" %> +``` + + ここでは、`Factory` 属性を `@ServiceHost` ディレクティブに追加し、カスタム ファクトリの CLR 型の名前を属性値として渡しました。 IIS または WAS がこのサービスのメッセージを受信すると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ホスト インフラストラクチャによって最初に ServiceHostFactory のインスタンスが作成され、次に `ServiceHostFactory.CreateServiceHost()` が呼び出されてサービス ホスト自体のインスタンスが作成されます。 + +## サンプルの実行 + このサンプルには完全な機能を持つクライアントとサービスの実装が用意されていますが、ここでの目的は、カスタム ホストを使用してサービスのランタイム動作を変更する方法を示すことです。次の手順を実行します。 + +#### カスタム ホストの影響を確認するには + +1. サービスの Web.config ファイルを開き、その構成ではサービスのメタデータが明示的には有効にされていないことを確認します。 + +2. サービスの .svc ファイルを開き、@ServiceHost ディレクティブに Factory 属性があることと、カスタム ServiceHostFactory の名前が指定されていることを確認します。 + +#### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. ソリューションがビルドされたら、Setup.bat を実行し、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] で ServiceModelSamples アプリケーションを設定します。 ServiceModelSamples ディレクトリは、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] アプリケーションとして表示されます。 + +4. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +5. [!INCLUDE[iisver](../../../../includes/iisver-md.md)] アプリケーションを削除するには、Cleanup.bat を実行します。 + +## 参照 + [方法 : IIS で WCF サービスをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-token.md b/docs/framework/wcf/samples/custom-token.md new file mode 100644 index 00000000000..541c4507dc7 --- /dev/null +++ b/docs/framework/wcf/samples/custom-token.md @@ -0,0 +1,651 @@ +--- +title: "カスタム トークン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e7fd8b38-c370-454f-ba3e-19759019f03d +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# カスタム トークン +このサンプルでは、カスタム トークンの実装を [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] アプリケーションに追加する方法を示します。 この例では、`CreditCardToken` を使用して、クライアントのクレジット カードに関する情報をサーバーに安全に渡します。 このトークンは、WS\-Security メッセージ ヘッダー内で渡され、対称セキュリティ バインディング要素を使用してメッセージ本文と他のメッセージ ヘッダーと共に署名および暗号化されます。 これは、組み込みのトークンでは不十分な場合に役立ちます。 このサンプルでは、組み込みのトークンのいずれかを使用する代わりに、カスタム セキュリティ トークンをサービスに提供する方法を示します。 サービスは、要求\/応答通信パターンを定義するコントラクトを実装します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルに示されている手順の概要は次のとおりです。 + +- クライアントがカスタム セキュリティ トークンをサービスに渡す方法。 + +- サービスがカスタム セキュリティ トークンを使用および検証する方法。 + +- [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス コードが、カスタム セキュリティ トークンを含む、受信したセキュリティ トークンに関する情報を取得する方法。 + +- サーバーの X.509 証明書を使用して、メッセージの暗号化や署名に使用する対称キーを保護する方法。 + +## カスタム セキュリティ トークンを使用したクライアント認証 + サービスは単一エンドポイントを公開します。エンドポイントは、`BindingHelper` クラスと `EchoServiceHost` クラスを使用してプログラムによって作成されます。 エンドポイントは、アドレス、バインディング、およびコントラクトがそれぞれ 1 つずつで構成されます。 バインディングは、`SymmetricSecurityBindingElement` と `HttpTransportBindingElement` を使用して、カスタム バインディングとして構成されます。 このサンプルでは、`SymmetricSecurityBindingElement` を設定してサービスの X.509 証明書を使用し、送信中の対称キーを保護して、WS\-Security メッセージ ヘッダー内でカスタム `CreditCardToken` を署名および暗号化されたセキュリティ トークンとして渡します。 この動作により、クライアント認証に使用されるサービス資格情報と、サービス X.509 証明書に関する情報が指定されます。 + +``` +public static class BindingHelper +{ + public static Binding CreateCreditCardBinding() + { + HttpTransportBindingElement httpTransport = new HttpTransportBindingElement(); + + // The message security binding element will be configured to require a credit card. + // The token that is encrypted with the service's certificate. + SymmetricSecurityBindingElement messageSecurity = new SymmetricSecurityBindingElement(); + messageSecurity.EndpointSupportingTokenParameters.SignedEncrypted.Add(new CreditCardTokenParameters()); + X509SecurityTokenParameters x509ProtectionParameters = new X509SecurityTokenParameters(); + x509ProtectionParameters.InclusionMode = SecurityTokenInclusionMode.Never; + messageSecurity.ProtectionTokenParameters = x509ProtectionParameters; + return new CustomBinding(messageSecurity, httpTransport); + } +} +``` + + メッセージ内のクレジット カード トークンを使用するため、このサンプルではカスタム サービス資格情報を使用してこの機能を実現します。 サービス資格情報クラスは `CreditCardServiceCredentials` クラス内にあり、`EchoServiceHost.InitializeRuntime` メソッド内のサービス ホストの動作コレクションに追加されます。 + +``` +class EchoServiceHost : ServiceHost +{ + string creditCardFile; + + public EchoServiceHost(parameters Uri[] addresses) + : base(typeof(EchoService), addresses) + { + creditCardFile = ConfigurationManager.AppSettings["creditCardFile"]; + if (string.IsNullOrEmpty(creditCardFile)) + { + throw new ConfigurationErrorsException("creditCardFile not specified in service config"); + } + + creditCardFile = String.Format("{0}\\{1}", System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, creditCardFile); + + } + + override protected void InitializeRuntime() + { + // Create a credit card service credentials and add it to the behaviors. + CreditCardServiceCredentials serviceCredentials = new CreditCardServiceCredentials(this.creditCardFile); + serviceCredentials.ServiceCertificate.SetCertificate("CN=localhost", StoreLocation.LocalMachine, StoreName.My); + this.Description.Behaviors.Remove((typeof(ServiceCredentials))); + this.Description.Behaviors.Add(serviceCredentials); + + // Register a credit card binding for the endpoint. + Binding creditCardBinding = BindingHelper.CreateCreditCardBinding(); + this.AddServiceEndpoint(typeof(IEchoService), creditCardBinding, string.Empty); + + base.InitializeRuntime(); + } +} + +``` + + クライアント エンドポイントは、サービス エンドポイントと同様の方法で構成されます。 クライアントは、同じ `BindingHelper` クラスを使用してバインディングを作成します。 セットアップの残りの部分は、`Client` クラスにあります。 クライアントはさらに、`CreditCardClientCredentials` インスタンスを適切なデータと共にクライアント エンドポイントの動作コレクションに追加することによって、`CreditCardToken` に含まれる情報とサービス X.509 証明書に関する情報をセットアップ コード内に設定します。 サンプルでは、サービス証明書として、サブジェクト名が `CN=localhost` に設定された X.509 証明書を使用しています。 + +``` +Binding creditCardBinding = BindingHelper.CreateCreditCardBinding(); +EndpointAddress serviceAddress = new EndpointAddress("http://localhost/servicemodelsamples/service.svc"); + +// Create a client with given client endpoint configuration +channelFactory = +new ChannelFactory(creditCardBinding, serviceAddress); + +// configure the credit card credentials on the channel factory +CreditCardClientCredentials credentials = + new CreditCardClientCredentials( + new CreditCardInfo(creditCardNumber, issuer, expirationTime)); +// configure the service certificate on the credentials +credentials.ServiceCertificate.SetDefaultCertificate( + "CN=localhost", StoreLocation.LocalMachine, StoreName.My); + +// replace ClientCredentials with CreditCardClientCredentials +channelFactory.Endpoint.Behaviors.Remove(typeof(ClientCredentials)); +channelFactory.Endpoint.Behaviors.Add(credentials); + +client = channelFactory.CreateChannel(); + +Console.WriteLine("Echo service returned: {0}", client.Echo()); + +((IChannel)client).Close(); +channelFactory.Close(); +``` + +## カスタム セキュリティ トークンの実装 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でカスタム セキュリティ トークンを有効にするには、カスタム セキュリティ トークンのオブジェクト表現を作成します。 サンプルのこの表現は、`CreditCardToken` クラスにあります。 このオブジェクト表現は、セキュリティ トークンのすべての関連情報を保持し、セキュリティ トークンに含まれるセキュリティ キーのリストを提供します。 この場合、クレジット カード セキュリティ トークンにはセキュリティ キーが含まれません。 + + 次のセクションでは、カスタム トークンを有効にして通信回線を介して送信し、さらに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] エンドポイントで使用するために必要な手順について説明します。 + +``` +class CreditCardToken : SecurityToken +{ + CreditCardInfo cardInfo; + DateTime effectiveTime = DateTime.UtcNow; + string id; + ReadOnlyCollection securityKeys; + + public CreditCardToken(CreditCardInfo cardInfo) : this(cardInfo, Guid.NewGuid().ToString()) { } + + public CreditCardToken(CreditCardInfo cardInfo, string id) + { + if (cardInfo == null) + throw new ArgumentNullException("cardInfo"); + + if (id == null) + throw new ArgumentNullException("id"); + + this.cardInfo = cardInfo; + this.id = id; + + // The credit card token is not capable of any cryptography. + this.securityKeys = new ReadOnlyCollection(new List()); + } + + public CreditCardInfo CardInfo { get { return this.cardInfo; } } + + public override ReadOnlyCollection SecurityKeys { get { return this.securityKeys; } } + + public override DateTime ValidFrom { get { return this.effectiveTime; } } + public override DateTime ValidTo { get { return this.cardInfo.ExpirationDate; } } + public override string Id { get { return this.id; } } +} + +``` + +## カスタム クレジット カード トークンのメッセージへの提供とメッセージからの取得 + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティ トークン シリアライザーは、セキュリティ トークンのオブジェクト表現をメッセージの XML から作成するほか、XML 形式のセキュリティ トークンを作成します。 また、セキュリティ トークンを指すキー識別子の読み取りと書き込みなど、他の機能も備えていますが、この例ではセキュリティ トークン関連の機能だけを使用します。 カスタム トークンを有効にするには、独自のセキュリティ トークン シリアライザーを実装する必要があります。 このサンプルでは、この目的のために `CreditCardSecurityTokenSerializer` クラスを使用します。 + + サービス側では、カスタム シリアライザーは XML 形式のカスタム トークンを読み取り、そこからカスタム トークンのオブジェクト表現を作成します。 + + クライアント側では、`CreditCardSecurityTokenSerializer` クラスが、セキュリティ トークンのオブジェクト表現に含まれる情報を XML ライターに書き込みます。 + +``` +public class CreditCardSecurityTokenSerializer : WSSecurityTokenSerializer +{ + public CreditCardSecurityTokenSerializer(SecurityTokenVersion version) : base() { } + + protected override bool CanReadTokenCore(XmlReader reader) + { + XmlDictionaryReader localReader = XmlDictionaryReader.CreateDictionaryReader(reader); + + if (reader == null) throw new ArgumentNullException("reader"); + + if (reader.IsStartElement(Constants.CreditCardTokenName, Constants.CreditCardTokenNamespace)) + return true; + + return base.CanReadTokenCore(reader); + } + + protected override SecurityToken ReadTokenCore(XmlReader reader, SecurityTokenResolver tokenResolver) + { + if (reader == null) throw new ArgumentNullException("reader"); + + if (reader.IsStartElement(Constants.CreditCardTokenName, Constants.CreditCardTokenNamespace)) + { + string id = reader.GetAttribute(Constants.Id, Constants.WsUtilityNamespace); + + reader.ReadStartElement(); + + // Read the credit card number. + string creditCardNumber = reader.ReadElementString(Constants.CreditCardNumberElementName, Constants.CreditCardTokenNamespace); + + // Read the expiration date. + string expirationTimeString = reader.ReadElementString(Constants.CreditCardExpirationElementName, Constants.CreditCardTokenNamespace); + DateTime expirationTime = XmlConvert.ToDateTime(expirationTimeString, XmlDateTimeSerializationMode.Utc); + + // Read the issuer of the credit card. + string creditCardIssuer = reader.ReadElementString(Constants.CreditCardIssuerElementName, Constants.CreditCardTokenNamespace); + reader.ReadEndElement(); + + CreditCardInfo cardInfo = new CreditCardInfo(creditCardNumber, creditCardIssuer, expirationTime); + + return new CreditCardToken(cardInfo, id); + } + else + { + return WSSecurityTokenSerializer.DefaultInstance.ReadToken(reader, tokenResolver); + } + } + + protected override bool CanWriteTokenCore(SecurityToken token) + { + if (token is CreditCardToken) + return true; + + else + return base.CanWriteTokenCore(token); + } + + protected override void WriteTokenCore(XmlWriter writer, SecurityToken token) + { + if (writer == null) { throw new ArgumentNullException("writer"); } + if (token == null) { throw new ArgumentNullException("token"); } + + CreditCardToken c = token as CreditCardToken; + if (c != null) + { + writer.WriteStartElement(Constants.CreditCardTokenPrefix, Constants.CreditCardTokenName, Constants.CreditCardTokenNamespace); + writer.WriteAttributeString(Constants.WsUtilityPrefix, Constants.Id, Constants.WsUtilityNamespace, token.Id); + writer.WriteElementString(Constants.CreditCardNumberElementName, Constants.CreditCardTokenNamespace, c.CardInfo.CardNumber); + writer.WriteElementString(Constants.CreditCardExpirationElementName, Constants.CreditCardTokenNamespace, XmlConvert.ToString(c.CardInfo.ExpirationDate, XmlDateTimeSerializationMode.Utc)); + writer.WriteElementString(Constants.CreditCardIssuerElementName, Constants.CreditCardTokenNamespace, c.CardInfo.CardIssuer); + writer.WriteEndElement(); + writer.Flush(); + } + else + { + base.WriteTokenCore(writer, token); + } + } +} +``` + +## トークン プロバイダー クラスとトークン認証システム クラスの作成方法 + クライアントとサービスの資格情報は、セキュリティ トークン マネージャーのインスタンスを提供します。 セキュリティ トークン マネージャーのインスタンスを使用すると、トークン プロバイダー、トークン認証システム、およびトークン シリアライザーを取得できます。 + + トークン プロバイダーは、クライアントまたはサービスの資格情報に含まれる情報に基づいて、トークンのオブジェクト表現を作成します。 次に、トークンのオブジェクト表現は、\(前のセクションで説明したとおり\) トークン シリアライザーを使用してメッセージに書き込まれます。 + + トークン認証システムは、到着したメッセージ内のトークンを検証します。 受信トークンのオブジェクト表現は、トークン シリアライザーによって作成されます。 このオブジェクト表現は、次に、検証のためトークン認証システムに渡されます。 トークンが正常に検証されたら、トークン認証システムは `IAuthorizationPolicy` オブジェクトのコレクションを返します。このオブジェクトはトークンに含まれる情報を表します。 この情報は、承認に関する決定を行ったり、アプリケーションに対するクレームを提供したりするために、後でメッセージ処理中に使用されます。 この例では、クレジット カード トークンの認証システムはこの目的のために `CreditCardTokenAuthorizationPolicy` を使用します。 + + トークン シリアライザーは、トークンのオブジェクト表現を通信回線に送り、通信回線からトークンのオブジェクト表現を受け取ります。 これについては、前のセクションで説明したとおりです。 + + このサンプルでは、トークン プロバイダーはクライアントでのみ使用し、トークン認証システムはサービスでのみ使用します。これは、クレジット カード トークンの送信はクライアントからサービスへの方向でのみ行うためです。 + + クライアント側の機能は `CreditCardClientCrendentials`、`CreditCardClientCredentialsSecurityTokenManager`、および `CreditCardTokenProvider` クラスにあります。 + + サービス側の機能は `CreditCardServiceCredentials`、`CreditCardServiceCredentialsSecurityTokenManager`、`CreditCardTokenAuthenticator`、および `CreditCardTokenAuthorizationPolicy` クラスにあります。 + +``` + public class CreditCardClientCredentials : ClientCredentials + { + CreditCardInfo creditCardInfo; + + public CreditCardClientCredentials(CreditCardInfo creditCardInfo) + : base() + { + if (creditCardInfo == null) + throw new ArgumentNullException("creditCardInfo"); + + this.creditCardInfo = creditCardInfo; + } + + public CreditCardInfo CreditCardInfo + { + get { return this.creditCardInfo; } + } + + protected override ClientCredentials CloneCore() + { + return new CreditCardClientCredentials(this.creditCardInfo); + } + + public override SecurityTokenManager CreateSecurityTokenManager() + { + return new CreditCardClientCredentialsSecurityTokenManager(this); + } + } + +public class CreditCardClientCredentialsSecurityTokenManager : ClientCredentialsSecurityTokenManager + { + CreditCardClientCredentials creditCardClientCredentials; + + public CreditCardClientCredentialsSecurityTokenManager(CreditCardClientCredentials creditCardClientCredentials) + : base (creditCardClientCredentials) + { + this.creditCardClientCredentials = creditCardClientCredentials; + } + + public override SecurityTokenProvider CreateSecurityTokenProvider(SecurityTokenRequirement tokenRequirement) + { + // handle this token for Custom + if (tokenRequirement.TokenType == Constants.CreditCardTokenType) + return new CreditCardTokenProvider(this.creditCardClientCredentials.CreditCardInfo); + // return server cert + else if (tokenRequirement is InitiatorServiceModelSecurityTokenRequirement) + { + if (tokenRequirement.TokenType == SecurityTokenTypes.X509Certificate) + { + return new X509SecurityTokenProvider(creditCardClientCredentials.ServiceCertificate.DefaultCertificate); + } + } + + return base.CreateSecurityTokenProvider(tokenRequirement); + } + + public override SecurityTokenSerializer CreateSecurityTokenSerializer(SecurityTokenVersion version) + { + + return new CreditCardSecurityTokenSerializer(version); + } + + } + + class CreditCardTokenProvider : SecurityTokenProvider + { + CreditCardInfo creditCardInfo; + + public CreditCardTokenProvider(CreditCardInfo creditCardInfo) : base() + { + if (creditCardInfo == null) + { + throw new ArgumentNullException("creditCardInfo"); + } + this.creditCardInfo = creditCardInfo; + } + + protected override SecurityToken GetTokenCore(TimeSpan timeout) + { + SecurityToken result = new CreditCardToken(this.creditCardInfo); + return result; + } + } + +public class CreditCardServiceCredentials : ServiceCredentials + { + string creditCardFile; + + public CreditCardServiceCredentials(string creditCardFile) + : base() + { + if (creditCardFile == null) + throw new ArgumentNullException("creditCardFile"); + + this.creditCardFile = creditCardFile; + } + + public string CreditCardDataFile + { + get { return this.creditCardFile; } + } + + protected override ServiceCredentials CloneCore() + { + return new CreditCardServiceCredentials(this.creditCardFile); + } + + public override SecurityTokenManager CreateSecurityTokenManager() + { + return new CreditCardServiceCredentialsSecurityTokenManager(this); + } + } + +public class CreditCardServiceCredentialsSecurityTokenManager : ServiceCredentialsSecurityTokenManager +{ + CreditCardServiceCredentials creditCardServiceCredentials; + + public CreditCardServiceCredentialsSecurityTokenManager(CreditCardServiceCredentials creditCardServiceCredentials) + : base(creditCardServiceCredentials) + { + this.creditCardServiceCredentials = creditCardServiceCredentials; + } + + public override SecurityTokenAuthenticator CreateSecurityTokenAuthenticator(SecurityTokenRequirement tokenRequirement, out SecurityTokenResolver outOfBandTokenResolver) + { + if (tokenRequirement.TokenType == Constants.CreditCardTokenType) + { + outOfBandTokenResolver = null; + return new CreditCardTokenAuthenticator(creditCardServiceCredentials.CreditCardDataFile); + } + + return base.CreateSecurityTokenAuthenticator(tokenRequirement, out outOfBandTokenResolver); + } + + public override SecurityTokenSerializer CreateSecurityTokenSerializer(SecurityTokenVersion version) + { + return new CreditCardSecurityTokenSerializer(version); + } + } + + class CreditCardTokenAuthenticator : SecurityTokenAuthenticator + { + string creditCardsFile; + public CreditCardTokenAuthenticator(string creditCardsFile) + { + this.creditCardsFile = creditCardsFile; + } + + protected override bool CanValidateTokenCore(SecurityToken token) + { + return (token is CreditCardToken); + } + + protected override ReadOnlyCollection ValidateTokenCore(SecurityToken token) + { + CreditCardToken creditCardToken = token as CreditCardToken; + + if (creditCardToken.CardInfo.ExpirationDate < DateTime.UtcNow) + throw new SecurityTokenValidationException("The credit card has expired"); + if (!IsCardNumberAndExpirationValid(creditCardToken.CardInfo)) + throw new SecurityTokenValidationException("Unknown or invalid credit card"); + + // the credit card token has only 1 claim - the card number. The issuer for the claim is the + // credit card issuer + + DefaultClaimSet cardIssuerClaimSet = new DefaultClaimSet(new Claim(ClaimTypes.Name, creditCardToken.CardInfo.CardIssuer, Rights.PossessProperty)); + DefaultClaimSet cardClaimSet = new DefaultClaimSet(cardIssuerClaimSet, new Claim(Constants.CreditCardNumberClaim, creditCardToken.CardInfo.CardNumber, Rights.PossessProperty)); + List policies = new List(1); + policies.Add(new CreditCardTokenAuthorizationPolicy(cardClaimSet)); + return policies.AsReadOnly(); + } + + /// + /// Helper method to check if a given credit card entry is present in the User DB + /// + private bool IsCardNumberAndExpirationValid(CreditCardInfo cardInfo) + { + try + { + using (StreamReader myStreamReader = new StreamReader(this.creditCardsFile)) + { + string line = ""; + while ((line = myStreamReader.ReadLine()) != null) + { + string[] splitEntry = line.Split('#'); + if (splitEntry[0] == cardInfo.CardNumber) + { + string expirationDateString = splitEntry[1].Trim(); + DateTime expirationDateOnFile = DateTime.Parse(expirationDateString, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.AdjustToUniversal); + if (cardInfo.ExpirationDate == expirationDateOnFile) + { + string issuer = splitEntry[2]; + return issuer.Equals(cardInfo.CardIssuer, StringComparison.InvariantCultureIgnoreCase); + } + else + { + return false; + } + } + } + return false; + } + } + catch (Exception e) + { + throw new Exception("BookStoreService: Error while retrieving credit card information from User DB " + e.ToString()); + } + } + } + + public class CreditCardTokenAuthorizationPolicy : IAuthorizationPolicy + { + string id; + ClaimSet issuer; + IEnumerable issuedClaimSets; + + public CreditCardTokenAuthorizationPolicy(ClaimSet issuedClaims) + { + if (issuedClaims == null) + throw new ArgumentNullException("issuedClaims"); + this.issuer = issuedClaims.Issuer; + this.issuedClaimSets = new ClaimSet[] { issuedClaims }; + this.id = Guid.NewGuid().ToString(); + } + + public ClaimSet Issuer { get { return this.issuer; } } + + public string Id { get { return this.id; } } + + public bool Evaluate(EvaluationContext context, ref object state) + { + foreach (ClaimSet issuance in this.issuedClaimSets) + { + context.AddClaimSet(this, issuance); + } + + return true; + } + } + +``` + +## 呼び出し元の情報の表示 + 呼び出し元の情報を表示するには、次のサンプル コードに示すように `ServiceSecurityContext.Current.AuthorizationContext.ClaimSets` を使用します。 `ServiceSecurityContext.Current.AuthorizationContext.ClaimSets` には、現在の呼び出し元に関連付けられている承認クレームが含まれています。 クレームは、`AuthorizationPolicies` コレクションの `CreditCardToken` クラスによって提供されます。 + +``` +bool TryGetStringClaimValue(ClaimSet claimSet, string claimType, out string claimValue) +{ + claimValue = null; + IEnumerable matchingClaims = claimSet.FindClaims(claimType, + Rights.PossessProperty); + if (matchingClaims == null) + return false; + IEnumerator enumerator = matchingClaims.GetEnumerator(); + enumerator.MoveNext(); + claimValue = (enumerator.Current.Resource == null) ? null : + enumerator.Current.Resource.ToString(); + return true; +} + +string GetCallerCreditCardNumber() +{ + foreach (ClaimSet claimSet in + ServiceSecurityContext.Current.AuthorizationContext.ClaimSets) + { + string creditCardNumber = null; + if (TryGetStringClaimValue(claimSet, + Constants.CreditCardNumberClaim, out creditCardNumber)) + { + string issuer; + if (!TryGetStringClaimValue(claimSet.Issuer, + ClaimTypes.Name, out issuer)) + { + issuer = "Unknown"; + } + return String.Format( + "Credit card '{0}' issued by '{1}'", + creditCardNumber, issuer); + } + } + return "Credit card is not known"; +} +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +## セットアップ バッチ ファイル + このサンプルに用意されている Setup.bat バッチ ファイルを使用すると、適切な証明書を使用してサーバーを構成し、サーバー証明書ベースのセキュリティを必要とする、IIS でホストされるアプリケーションを実行できるようになります。 このバッチ ファイルは、複数のコンピューターを使用する場合またはホストなしの場合に応じて変更する必要があります。 + + 次に、バッチ ファイルのセクションのうち、該当する構成で実行するために変更が必要となる部分を示します。 + +- サーバー証明書の作成 : + + `Setup.bat` バッチ ファイルの次の行は、使用するサーバー証明書を作成します。 `%SERVER_NAME%` 変数はサーバー名です。 この変数を変更して、使用するサーバー名を指定します。 このバッチ ファイルでの既定は localhost です。 `%SERVER_NAME%` 変数を変更する場合は、Client.cs ファイルと Service.cs ファイル全体を参照して、localhost のすべてのインスタンスを Setup.bat スクリプトで使用するサーバー名に置き換える必要があります。 + + 証明書は、`LocalMachine` ストアの場所の My \(Personal\) ストアに保存されます。 証明書は、IIS でホストされるサービスの LocalMachine ストアに保存されます。 自己ホスト型サービスの場合、バッチ ファイルで文字列 LocalMachine を CurrentUser に置き換えて、クライアント証明書を CurrentUser ストアの場所に保存します。 + + ``` + + echo ************ + echo Server cert setup starting + echo %SERVER_NAME% + echo ************ + echo making server cert + echo ************ + makecert.exe -sr LocalMachine -ss MY -a sha1 -n CN=%SERVER_NAME% -sky exchange -pe + + ``` + +- サーバー証明書のクライアントの信頼された証明書ストアへのインストール。 + + Setup.bat バッチ ファイルの次の行は、サーバー証明書をクライアントの信頼されたユーザーのストアにコピーします。 この手順が必要なのは、Makecert.exe によって生成される証明書がクライアント システムにより暗黙には信頼されないからです。 マイクロソフト発行の証明書など、クライアントの信頼されたルート証明書に基づいた証明書が既にある場合は、クライアント証明書ストアにサーバー証明書を配置するこの手順は不要です。 + + ``` + + echo ************ + echo copying server cert to client's TrustedPeople store + echo ************ + certmgr.exe -add -r LocalMachine -s My -c -n %SERVER_NAME% -r CurrentUser -s TrustedPeople + + ``` + +- IIS でホストされるサービスから証明書の秘密キーへのアクセスを有効にするには、IIS でホストされる処理が実行されているユーザー アカウントに、秘密キーへの適切なアクセス許可を付与する必要があります。 これは、Setup.bat スクリプトの最後の手順によって実現されます。 + + ``` + echo ************ + echo setting privileges on server certificates + echo ************ + for /F "delims=" %%i in ('"%ProgramFiles%\ServiceModelSampleTools\FindPrivateKey.exe" My LocalMachine -n CN^=%SERVER_NAME% -a') do set PRIVATE_KEY_FILE=%%i + set WP_ACCOUNT=NT AUTHORITY\NETWORK SERVICE + (ver | findstr /C:"5.1") && set WP_ACCOUNT=%COMPUTERNAME%\ASPNET + echo Y|cacls.exe "%PRIVATE_KEY_FILE%" /E /G "%WP_ACCOUNT%":R + iisreset + ``` + +> [!NOTE] +> Setup.bat バッチ ファイルは、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプトから実行します。 [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプト内で設定された PATH 環境変数は、Setup.bat スクリプトで必要な実行可能ファイルが格納されているディレクトリを指しています。 + +#### サンプルをセットアップしてビルドするには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +#### サンプルを同じコンピューターで実行するには + +1. 管理特権で [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] コマンド プロンプト ウィンドウを開き、サンプルのインストール フォルダーから Setup.bat を実行します。 これにより、サンプルの実行に必要なすべての証明書がインストールされます。Makecert.exe が存在するフォルダーがパスに含まれていることを確認します。 + +> [!NOTE] +> サンプルの使用が終わったら、Cleanup.bat を実行して証明書を削除してください。 他のセキュリティ サンプルでも同じ証明書を使用します。 + +1. Client.exe を client\\bin ディレクトリで起動します。 クライアント アクティビティがクライアントのコンソール アプリケーションに表示されます。 + +2. クライアントとサービス間で通信できない場合は、「[Troubleshooting Tips](http://msdn.microsoft.com/ja-jp/8787c877-5e96-42da-8214-fa737a38f10b)」を参照してください。 + +#### サンプルを複数のコンピューターで実行するには + +1. サービス コンピューターにサービス バイナリ用のディレクトリを作成します。 + +2. サービス プログラム ファイルを、サービス コンピューターのサービス ディレクトリにコピーします。 必ず CreditCardFile.txt をコピーしてください。これを行わない場合、クレジット カードの認証システムはクライアントから送信されたクレジット カード情報を検証できません。 Setup.bat ファイルと Cleanup.bat ファイルもサービス コンピューターにコピーします。 + +3. コンピューターの完全修飾ドメイン名を含むサブジェクト名を持つサーバー証明書が必要です。 `%SERVER_NAME%` 変数を、サービスがホストされるコンピューターの完全修飾名に変更すると、Setup.bat を使用してこの証明書を作成できます。 Setup.bat ファイルは、管理特権を使用して開いた Visual Studio コマンド プロンプトで実行する必要があります。 + +4. サーバー証明書をクライアントの CurrentUser\-TrustedPeople ストアにコピーします。 このようにする必要があるのは、サーバー証明書が信頼できる発行元から発行されていない場合のみです。 + +5. EchoServiceHost.cs ファイルで、証明書のサブジェクト名の値を localhost から完全修飾コンピューター名に変更します。 + +6. クライアント プログラム ファイルを、言語固有のフォルダーにある \\client\\bin\\ フォルダーからクライアント コンピューターにコピーします。 + +7. Client.cs ファイルで、エンドポイントのアドレス値をサービスの新しいアドレスに合わせます。 + +8. Client.cs ファイルで、サービス X.509 証明書のサブジェクト名を localhost からリモート ホストの完全修飾コンピューター名に変更します。 + +9. クライアント コンピューターで、コマンド プロンプト ウィンドウから Client.exe を起動します。 + +10. クライアントとサービス間で通信できない場合は、「[Troubleshooting Tips](http://msdn.microsoft.com/ja-jp/8787c877-5e96-42da-8214-fa737a38f10b)」を参照してください。 + +#### サンプルの実行後にクリーンアップするには + +1. サンプルの実行が終わったら、サンプル フォルダーにある Cleanup.bat を実行します。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/custom-wsdl-publication.md b/docs/framework/wcf/samples/custom-wsdl-publication.md new file mode 100644 index 00000000000..4a15f73c839 --- /dev/null +++ b/docs/framework/wcf/samples/custom-wsdl-publication.md @@ -0,0 +1,320 @@ +--- +title: "カスタム WSDL パブリケーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3b3e8103-2c95-4db3-a05b-46aa8e9d4d29 +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# カスタム WSDL パブリケーション +このサンプルでは、次の方法を示します。 + +- カスタム 属性に を実装し、属性プロパティを WSDL 注釈としてエクスポートします。 + +- を実装し、カスタム WSDL 注釈をインポートします。 + +- カスタム コントラクトの動作とカスタム操作の動作に、それぞれ を実装し、インポートされたコントラクトと操作の CodeDOM に、インポートされた注釈をコメントとして書き込みます。 + +- を使用して WSDL をダウンロードし、 を使用してカスタム WSDL インポータによって WSDL をインポートします。さらに、 を使用して、C\# では \/\/\/、Visual Basic では ''' のコメントとして WSDL 注釈を含む [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアント コードを生成します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +## サービス + このサンプルのサービスは、2 つのカスタム属性でマークされています。1 つ目の属性は `WsdlDocumentationAttribute` で、この属性を使用するとコントラクタ内で文字列を使用でき、用途を説明する文字列をコントラクト インターフェイスまたは操作に提供するために適用できます。2 つ目は `WsdlParamOrReturnDocumentationAttribute` で、この属性は、操作内で値またはその値を表すパラメータを返すために適用できます。これらの属性を使用して表されたサービス コントラクト `ICalculator` を、次の例に示します。 + +``` +// Define a service contract. +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +// Document it. +[WsdlDocumentation("The ICalculator contract performs basic calculation services.")] +public interface ICalculator +{ + [OperationContract] + [WsdlDocumentation("The Add operation adds two numbers and returns the result.")] + [return:WsdlParamOrReturnDocumentation("The result of adding the two arguments together.")] + double Add( + [WsdlParamOrReturnDocumentation("The first value to add.")]double n1, + [WsdlParamOrReturnDocumentation("The second value to add.")]double n2 + ); + + [OperationContract] + [WsdlDocumentation("The Subtract operation subtracts the second argument from the first.")] + [return:WsdlParamOrReturnDocumentation("The result of the second argument subtracted from the first.")] + double Subtract( + [WsdlParamOrReturnDocumentation("The value from which the second is subtracted.")]double n1, + [WsdlParamOrReturnDocumentation("The value that is subtracted from the first.")]double n2 + ); + + [OperationContract] + [WsdlDocumentation("The Multiply operation multiplies two values.")] + [return:WsdlParamOrReturnDocumentation("The result of multiplying the first and second arguments.")] + double Multiply( + [WsdlParamOrReturnDocumentation("The first value to multiply.")]double n1, + [WsdlParamOrReturnDocumentation("The second value to multiply.")]double n2 + ); + + [OperationContract] + [WsdlDocumentation("The Divide operation returns the value of the first argument divided by the second argument.")] + [return:WsdlParamOrReturnDocumentation("The result of dividing the first argument by the second.")] + double Divide( + [WsdlParamOrReturnDocumentation("The numerator.")]double n1, + [WsdlParamOrReturnDocumentation("The denominator.")]double n2 + ); +} + +``` + + `WsdlDocumentationAttribute` は を実装しています。したがってサービスが開かれている場合は、この属性のインスタンスを、対応する または に追加できます。この属性は、さらに を実装しています。 が呼び出されると、メタデータのエクスポートに使用される と、サービス説明オブジェクトを含む が、エクスポートされたメタデータの変更を有効にするパラメータとして渡されます。 + + このサンプルでは、次のコードに示すように、エクスポート コンテキスト オブジェクトに または のどちらが含まれているかに応じて、そのテキスト プロパティを使用して属性からコメントが抽出され、WSDL 注釈の要素に追加されます。 + +``` +public void ExportContract(WsdlExporter exporter, WsdlContractConversionContext context) +{ + if (contractDescription != null) + { + // Inside this block it is the contract-level comment attribute. + // This.Text returns the string for the contract attribute. + // Set the doc element; if this isn't done first, there is no XmlElement in the + // DocumentElement property. + context.WsdlPortType.Documentation = string.Empty; + // Contract comments. + XmlDocument owner = context.WsdlPortType.DocumentationElement.OwnerDocument; + XmlElement summaryElement = owner.CreateElement("summary"); + summaryElement.InnerText = this.Text; + context.WsdlPortType.DocumentationElement.AppendChild(summaryElement); + } + else + { + Operation operation = context.GetOperation(operationDescription); + if (operation != null) + { + // We are dealing strictly with the operation here. + // This.Text returns the string for the operation-level attributes. + // Set the doc element; if this isn't done first, there is no XmlElement in the + // DocumentElement property. + operation.Documentation = String.Empty; + + // Operation C# triple comments. + XmlDocument owner = operation.DocumentationElement.OwnerDocument; + XmlElement newSummaryElement = owner.CreateElement("summary"); + newSummaryElement.InnerText = this.Text; + operation.DocumentationElement.AppendChild(newSummaryElement); +``` + + 操作がエクスポートされる場合、このサンプルでは次に示すように、リフレクションを使用してパラメータの `WsdlParamOrReturnDocumentationAttribute` 値を取得して返し、次にそれらの値を操作の WSDL 注釈の要素に追加します。 + +``` +// Get returns information +ParameterInfo returnValue = operationDescription.SyncMethod.ReturnParameter; +object[] returnAttrs = returnValue.GetCustomAttributes(typeof(WsdlParamOrReturnDocumentationAttribute), false); +if (returnAttrs.Length != 0) +{ + // text. + XmlElement returnsElement = owner.CreateElement("returns"); + returnsElement.InnerText = ((WsdlParamOrReturnDocumentationAttribute)returnAttrs[0]).ParamComment; + operation.DocumentationElement.AppendChild(returnsElement); +} + +// Get parameter information. +ParameterInfo[] args = operationDescription.SyncMethod.GetParameters(); +for (int i = 0; i < args.Length; i++) +{ + object[] docAttrs = args[i].GetCustomAttributes(typeof(WsdlParamOrReturnDocumentationAttribute), false); + if (docAttrs.Length == 1) + { + // Text. + XmlElement newParamElement = owner.CreateElement("param"); + XmlAttribute paramName = owner.CreateAttribute("name"); + paramName.Value = args[i].Name; + newParamElement.InnerText = ((WsdlParamOrReturnDocumentationAttribute)docAttrs[0]).ParamComment; + newParamElement.Attributes.Append(paramName); + operation.DocumentationElement.AppendChild(newParamElement); + } +} + +``` + + その後、サンプルでは次の構成ファイルを使用して、メタデータを標準的な方法で公開します。 + +``` + + + + + + + + + + + + + + + + + + + +``` + +## Svcutil クライアント + このサンプルでは、Svcutil.exe を使用しません。コントラクトは generatedClient.cs ファイルで提供されます。したがって、サンプルでカスタム WSDL のインポートとコードの生成を確認した後で、サービスを呼び出すことができます。次のカスタム WSDL インポータをこのサンプルで使用するには、Svcutil.exe を実行して `/svcutilConfig` オプションを指定します。このオプションは、このサンプルで使用されているクライアント構成ファイルへのパスを示します。また、Svcutil.exe は `WsdlDocumentation.dll` ライブラリを参照します。ただし、`WsdlDocumentationImporter` を読み込むには、Svuctil.exe が `WsdlDocumentation.dll` ライブラリの場所を特定し、これを読み込むことができる必要があります。つまり、このライブラリがグローバル アセンブリ キャッシュに登録されているか、パスに含まれているか、または Svcutil.exe と同じディレクトリにあることが必要です。このサンプルのような基本的なサンプルにおいてこれを行う最も簡単な方法は、Svcutil.exe とクライアント構成ファイルを `WsdlDocumentation.dll` と同じディレクトリにコピーして、そのディレクトリで実行することです。 + +## カスタム WSDL インポータ + カスタム オブジェクトの `WsdlDocumentationImporter` は、 も実装しています。これらはインポートされた ServiceEndpoints、、および に追加され、コントラクトまたは操作コードが作成されるときにコード生成を変更するために呼び出されます。 + + サンプルでは、最初に メソッドで、WSDL 注釈がコントラクト レベルまたは操作レベルのどちらにあるかを判断し、適切なスコープで WDSL 注釈自体を動作として追加します。その際、インポートされた注釈テキストをコンストラクタに渡します。 + +``` +public void ImportContract(WsdlImporter importer, WsdlContractConversionContext context) +{ + // Contract Documentation + if (context.WsdlPortType.Documentation != null) + { + // System examines the contract behaviors to see whether any implement IWsdlImportExtension. + context.Contract.Behaviors.Add(new WsdlDocumentationImporter(context.WsdlPortType.Documentation)); + } + // Operation Documentation + foreach (Operation operation in context.WsdlPortType.Operations) + { + if (operation.Documentation != null) + { + OperationDescription operationDescription = context.Contract.Operations.Find(operation.Name); + if (operationDescription != null) + { + // System examines the operation behaviors to see whether any implement IWsdlImportExtension. + operationDescription.Behaviors.Add(new WsdlDocumentationImporter(operation.Documentation)); + } + } + } +} + +``` + + その後、コードが生成される際に、システムは メソッドと メソッドを呼び出し、適切なコンテキスト情報を渡します。サンプルでは、カスタム WSDL 注釈の書式を設定し、コメントとして CodeDom に挿入します。 + +``` +public void GenerateContract(ServiceContractGenerationContext context) +{ + Debug.WriteLine("In generate contract."); + context.ContractType.Comments.AddRange(FormatComments(text)); +} + +public void GenerateOperation(OperationContractGenerationContext context) +{ + context.SyncMethod.Comments.AddRange(FormatComments(text)); + Debug.WriteLine("In generate operation."); +} + +``` + +## クライアント アプリケーション + クライアント アプリケーションは、アプリケーション構成ファイルにカスタム WSDL インポータを指定することにより、このインポータを読み込みます。 + +``` + + + + + + + + + +``` + + カスタム インポータが指定されると、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メタデータ システムはカスタム インポータを、この目的のために作成された に読み込みます。このサンプルでは、 を使用してメタデータをダウンロードし、適切に構成された を使用してサンプルで作成されたカスタム インポータによってメタデータをインポートします。さらに、 を使用して、変更されたコントラクト情報を Visual Basic および C\# のクライアント コードにコンパイルします。このコードは Intellisense をサポートする Visual Studio で使用するか、または XML ドキュメントにコンパイルできます。 + +``` +/// From WSDL Documentation: +/// +/// The ICalculator contract performs basic calculation +/// services. +/// +[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] +[System.ServiceModel.ServiceContractAttribute(Namespace="http://Microsoft.ServiceModel.Samples", ConfigurationName="ICalculator")] +public interface ICalculator +{ + + /// From WSDL Documentation: + /// + /// The Add operation adds two numbers and returns the + /// result.The result of adding the two arguments + /// together.The first value to add.The second value to add. + /// + [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Add", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/AddResponse")] + double Add(double n1, double n2); + + /// From WSDL Documentation: + /// + /// The Subtract operation subtracts the second argument from the + /// first.The result of the second argument subtracted from the + /// first.The value from which the second is + /// subtracted.The value that is subtracted from the + /// first. + /// + [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Subtract", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/SubtractResponse")] + double Subtract(double n1, double n2); + + /// From WSDL Documentation: + /// + /// The Multiply operation multiplies two values.The + /// result of multiplying the first and second arguments.The first value to multiply.The second value + /// to multiply. + /// + [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Multiply", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/MultiplyResponse")] + double Multiply(double n1, double n2); + + /// From WSDL Documentation: + /// + /// The Divide operation returns the value of the first argument divided + /// by the second argument.The result of dividing the first + /// argument by the second.The numerator.The denominator. + /// + [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Divide", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/DivideResponse")] + double Divide(double n1, double n2); +} +``` + +#### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Metadata\WsdlDocumentation` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/customchannelstester.md b/docs/framework/wcf/samples/customchannelstester.md new file mode 100644 index 00000000000..7022b5e9923 --- /dev/null +++ b/docs/framework/wcf/samples/customchannelstester.md @@ -0,0 +1,79 @@ +--- +title: "CustomChannelTester | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ee1fa307-98b1-4647-8860-2e9217ba6082 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# CustomChannelTester +`CustomChannelsTester` は、カスタム チャネルの実装を、定義済みのサービス コントラクト セットに対してテストする際に使用できるツールです。 サービス コントラクト セットを選択し、XML ファイルを使用してこのツールに渡すことができます。 これを受け取ったツールは、メッセージ交換中にカスタム チャネル実装をテストするサービスとクライアントを生成します。 + +### ツールをビルドするには + +1. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +2. ソリューションをビルドすると、CustomChannelsTester.exe、TestSpec.xml、および SampleRun.cmd の 3 つのファイルが生成されます。 SampleRun.cmd ファイルにはサンプルのコマンド ラインが含まれています。このコマンド ラインでは、このツールを使用して「[トランスポート: UDP](../../../../docs/framework/wcf/samples/transport-udp.md)」のサンプルをテストする方法を示します。 + +### ツールを実行するには + +- コマンド プロンプトに次のコマンドを入力します。 + + ``` + CustomChannelsTester.exe /binding:YourCustomBindngName /dll:TheAssemblyWhereThisTypeisDefined /testspec:XmlFileNameWhichContainsTestOptions + ``` + + `/binding` オプションを使用する必要があります。 + + "binding" が [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] で用意されているシステム指定のバインディングでない場合は、`/dll` が必要です。 + + `/testspec` は省略可能です。 + + これにより、テストの仕様とバインディングに基づくサーバーとクライアントが作成されます。 + + クライアントとサーバーを実行し、結果が返されます。 + + テストの仕様を説明する XML のサンプルを次に示します \(testspec.xml\)。 + + ``` + + + true + + false + + true + + true + + + + ReplaceThisWithTheServerMachineName + + 8000 + + + + 300 + + 60 + + 1 + + 1 + + + ``` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/customdiscoverymetadata.md b/docs/framework/wcf/samples/customdiscoverymetadata.md new file mode 100644 index 00000000000..a2ca7fc206c --- /dev/null +++ b/docs/framework/wcf/samples/customdiscoverymetadata.md @@ -0,0 +1,45 @@ +--- +title: "CustomDiscoveryMetadata | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c42455fd-3652-4b7e-b698-ab3a2bb52e48 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# CustomDiscoveryMetadata +このサンプルでは、サービスによって公開される探索可能なエンドポイントの探索メタデータにカスタム XML メタデータを挿入する方法を説明します。 次に、クライアントがサービスを検索してこのカスタム データを抽出する方法を示します。 このサンプルは、2 つのプロジェクト \(サービスとクライアント\) で構成されます。 + +## サービス + サンプルの `main` メソッドでは、 型のオブジェクトに必要なフィールドが設定され、このオブジェクトが に追加されます。 この が特定のエンドポイントに追加されます。 この特定のエンドポイントが探索されると、ここで追加されたカスタム データが探索メタデータに格納されます。 + +## Client + サンプルでは、 メソッドが呼び出されます。 次に、生成された に対して適切かつ必要な XML 要素が照会されます。 その後、これらの要素がコンソールに出力されます。 + +#### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] でプロジェクト ソリューションを読み込み、プロジェクトをビルドします。 + +2. まず、\[ソリューションの基本ディレクトリ\]\\service\\bin\\debug に生成されたサービス アプリケーションを実行します。次に、\[ソリューションの基本ディレクトリ\]\\Client\\bin\\debug に生成されたクライアント アプリケーションを実行します。 + +3. サービスがオンラインになると、クライアントはサービスを検索し、エンドポイントで公開されているメタデータを出力します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\DiscoveryExtensibility\CustomDiscoveryMetadata` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/data-binding-in-a-windows-forms-client.md b/docs/framework/wcf/samples/data-binding-in-a-windows-forms-client.md new file mode 100644 index 00000000000..32e8258d0b8 --- /dev/null +++ b/docs/framework/wcf/samples/data-binding-in-a-windows-forms-client.md @@ -0,0 +1,48 @@ +--- +title: "Windows フォーム クライアントのデータ バインディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a2a30b37-d6e2-4552-820e-e60b2bbe8829 +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# Windows フォーム クライアントのデータ バインディング +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスによって返されたデータを Windows フォーム アプリケーションでバインドする方法を示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、この記事の最後を参照してください。 + + このサンプルでは、要求\/応答通信パターンを定義するコントラクトを実装するサービスを示します。このサンプルは、クライアントの Windows フォーム アプリケーション \(.exe\) と、インターネット インフォメーション サービス \(IIS\) によってホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で構成されています。 + + コントラクトは `IWeatherService` インターフェイスによって定義されます。このインターフェイスでは、`GetWeatherData` という名前の操作が公開されます。この操作は都市名の配列を受け付け、各都市の予想最高気温と最低気温を表す `WeatherData` オブジェクトの配列を返します。 + + データ バインディングは、Windows フォーム アプリケーションのクライアントで発生します。`DataGridView` は Windows フォーム デザイナで定義し、データをグラフィック表示します。さらに、`BindingSource` という中継局も作成されます。`BindingSource` のデータ ソースは、サービスによって返されるデータ配列に設定されます。`BindingSource` の目的は、データとデータ ビュー間を間接化するレイヤを提供することです。データとの対話 \(移動、並べ替え、フィルタ処理、更新など\) はすべて、`BindingSource` コンポーネントを呼び出すことによって実行します。`DataGridView` へのデータ バインディングを行うには、`DataGridView` の `datasource` を `BindingSource` オブジェクトに設定します。これで、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスから返されるすべてのデータがユーザーに対してグラフィック表示されます。ユーザーがボタンをクリックするたびに、返されたデータはデータ バインドされた `DataGridView` で自動的に更新されます。 + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Scenario\DataBinding\WindowsForms` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/data-binding-in-a-wpf-client.md b/docs/framework/wcf/samples/data-binding-in-a-wpf-client.md new file mode 100644 index 00000000000..2c65960d5b5 --- /dev/null +++ b/docs/framework/wcf/samples/data-binding-in-a-wpf-client.md @@ -0,0 +1,96 @@ +--- +title: "Windows Presentation Foundation クライアントでのデータ バインディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: bb8c8293-5973-4aef-9b07-afeff5d3293c +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# Windows Presentation Foundation クライアントでのデータ バインディング +このサンプルでは、Windows Presentation Foundation \(WPF\) クライアントでのデータ バインディングの使用方法を示します。 このサンプルでは、アルバムの配列をランダムに生成してクライアントに返す [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスを使用します。 各アルバムには、名前、価格、およびアルバム トラックの一覧が含まれます。 アルバム トラックには、名前と継続時間が含まれます。 サービスによって返される情報は、[!INCLUDE[avalon1](../../../../includes/avalon1-md.md)] クライアントが提供するユーザー インターフェイス \(UI\) に自動的にバインドされます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + データ バインディングでは、データ ソースを自動的に UI にバインドすることができます。 これによってプログラミング モデルが簡素化されます。プログラムを使って、各 UI 要素をデータ オブジェクトまたはデータ オブジェクトの配列からのデータで更新する必要がないためです。 単一の UI 要素にオブジェクトをバインドしたり、複数の入力情報を取得する `ListBox` などのコントロールに配列をバインドしたりできます。 データを UI 要素の `DataContext` にバインドする方法を次のコードに示します。 + +``` +// Event handler executed when call is complete +void client_GetAlbumListCompleted(object sender, GetAlbumListCompletedEventArgs e) +{ + // This is on the UI thread, myPanel can be accessed directly + myPanel.DataContext = e.Result; +} + +``` + + 前のサンプルでは、`myPanel` という `grid` レイアウト要素の `DataContext` が、`GetAlbumList` メソッドによって返されるデータに設定されます。 `DataContext` では、バインディングに使用されるデータ ソースやその他のバインディング特性 \(パスなど\) に関する情報を、要素が親要素から継承できます。 このコード行は、サーバー上のデータが更新されるたびに実行する必要があります。 たとえば、ウィンドウが初期化されたり新しいアルバムが追加されたりするときに実行します。 + + 次の XAML サンプル コードでは、`ListBox` に `ItemsSource="{Binding }"` を指定します。 + +``` + + +``` + + これは、最上位の UI 要素にバインドされるデータは、このコントロール \(アルバムの配列\) にもバインドされることを示します。 また、`ItemTemplate="{StaticResource AlbumStyle}"` では、データ テンプレートが `ListBox` の各項目で使用されるように指定されます。 データの書式設定方法を指定するデータ テンプレートを定義することもできます。 こうしたデータ テンプレートは、アプリケーション内の他の UI 要素で再使用できます。この利点は、データ テンプレートを 1 つの場所で定義および維持できることです。 + + `AlbumStyle` データ テンプレートでは、2 つの並列の `TextBlock` を伴ってグリッドが配置されます。 このうちの 1 つはアルバムの名前を指定し、もう 1 つはアルバムのトラック数を指定します。 + +``` + + + + + + + + + + + +``` + + 2 つ目の `ListBox` を作成する XAML コードを次に示します。 + +``` + + +``` + + このコードは、`ItemsSource` のパスを指定します。 これは、このコントロールにバインドされるデータは最上位のデータではなく、`Tracks` という最上位データのプロパティであることを示します。 このプロパティは、アルバムに含まれるトラックの配列を表します。 さらに、`TrackStyle` という別の `DataTemplate` が指定されています。 `TrackStyle` テンプレートのレイアウトは `AlbumStyle` テンプレートのレイアウトに似ていますが、`TextBlock` は別々のプロパティにバインドされます。 これは、2 つのテンプレートが異なるデータ オブジェクトで使用されるためです。 + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Scenario\DataBinding\WPFDataBinding` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/data-binding-in-an-aspnet-client.md b/docs/framework/wcf/samples/data-binding-in-an-aspnet-client.md new file mode 100644 index 00000000000..f9c58295a94 --- /dev/null +++ b/docs/framework/wcf/samples/data-binding-in-an-aspnet-client.md @@ -0,0 +1,48 @@ +--- +title: "ASP.NET クライアントでのデータ バインディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 68b49fa6-94e7-4d4c-a34e-902a2b3770b6 +caps.latest.revision: 23 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 23 +--- +# ASP.NET クライアントでのデータ バインディング +このサンプルでは、一般的な [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスによって返されたデータを Web フォーム アプリケーションにバインドする方法を示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルでは、要求\/応答通信パターンを定義するコントラクトを実装するサービスを示します。このサンプルは、ブラウザからアクセスできるクライアントの Web フォーム アプリケーションと、インターネット インフォメーション サービス \(IIS\) によってホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスとで構成されています。 + + サービスは、要求\/応答通信パターンを定義するコントラクトを実装します。コントラクトは `IWeatherService` インターフェイスによって定義されます。このインターフェイスでは、`GetWeatherData` という名前の操作が公開されます。この操作は都市名の配列を受け付け、各都市の予想最高気温と最低気温を表す `WeatherData` オブジェクトの配列を返します。 + + [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] クライアントの .aspx ページには DataGrid Web コントロールが定義されています。このコントロールには、サービスによって返されるデータのグラフィック表示が含まれます。.aspx ページのコードによって気象データ用の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスが呼び出され、そのデータは `WeatherData` オブジェクトの配列に返されます。DataGrid の `DataSource` プロパティをこの配列に設定することにより、データを取得する場所を指定します。データ バインディングは、DataGrid の `DataBind` メソッドが呼び出されたときに発生します。このすべてのコードは .`aspx` ページの `Page_Load` メソッドに格納されています。したがって、ブラウザのページが更新されるたびに DataGrid 内のデータも更新されます。 + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. このサンプルのクライアントは、開発用 Web サーバーで実行される Web サイトです。開発用 Web サーバーを起動するには、コマンド プロンプトで「`%SystemDrive%\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WebDev.WebServer.EXE" /port:8000 /path:\CS\client /vpath:/client`」と入力します。次に、http:\/\/localhost:8000\/client に移動します。このサンプルを複数のコンピューターで実行するには、クライアントの Web.config ファイル内の `localhost` へのすべての参照をサーバーのコンピューター名に置き換えます。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Scenario\DataBinding\WebForms` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/data-binding-scenarios.md b/docs/framework/wcf/samples/data-binding-scenarios.md new file mode 100644 index 00000000000..c7130516ece --- /dev/null +++ b/docs/framework/wcf/samples/data-binding-scenarios.md @@ -0,0 +1,30 @@ +--- +title: "データ バインドのシナリオ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a2c10dc4-84af-4dab-baee-e9c84ca26ebf +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# データ バインドのシナリオ +このセクションには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のデータ バインドのシナリオを示すサンプルが含まれています。 + +## このセクションの内容 + [Windows フォーム クライアントのデータ バインディング](../../../../docs/framework/wcf/samples/data-binding-in-a-windows-forms-client.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスによって返されたデータを Windows フォーム アプリケーションでバインドする方法を示します。 + + [ASP.NET クライアントでのデータ バインディング](../../../../docs/framework/wcf/samples/data-binding-in-an-aspnet-client.md) + 一般的な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスによって返されたデータを Web フォーム アプリケーションでバインドする方法を示します。 + + [Windows Presentation Foundation クライアントでのデータ バインディング](../../../../docs/framework/wcf/samples/data-binding-in-a-wpf-client.md) + [!INCLUDE[avalon1](../../../../includes/avalon1-md.md)] クライアントでのデータ バインディングの使用方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/data-contracts.md b/docs/framework/wcf/samples/data-contracts.md new file mode 100644 index 00000000000..b6fc3254d95 --- /dev/null +++ b/docs/framework/wcf/samples/data-contracts.md @@ -0,0 +1,39 @@ +--- +title: "データ コントラクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 941049b6-8e98-497f-ab3f-19848241699f +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# データ コントラクト +このセクションには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のデータ コントラクトを示すサンプルが含まれています。 + +## このセクションの内容 + [基本的なデータ コントラクト](../../../../docs/framework/wcf/samples/basic-data-contract.md) + データ コントラクトを実装する方法を示します。 + + [DataContractSerializer サンプル](../../../../docs/framework/wcf/samples/datacontractserializer-sample.md) + データ コントラクト クラスに対して一般的なシリアル化および逆シリアル化のサービスを実行する、 を示します。 + + [既知の型](../../../../docs/framework/wcf/samples/known-types.md) + データ コントラクト内の派生型に関する情報を指定する方法を示します。 + + [オブジェクト参照](../../../../docs/framework/wcf/samples/object-references.md) + サーバーとクライアント間でオブジェクトを参照渡しする方法を示します。 + + [POCO サポート](../../../../docs/framework/wcf/samples/poco-support.md) + マークされていない型 \(シリアル化属性が適用されていない型で、POCO \(Plain Old CLR Object\) 型と呼ばれる場合もあります\) のシリアル化のサポートについて説明します。 + + [シリアル化バインダーの使用](../../../../docs/framework/wcf/samples/usage-of-serialization-binder.md) + このサンプルでは、 を使用して、ジェネリック型のバージョンをシリアル化する際に変更する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/datacontract-surrogate.md b/docs/framework/wcf/samples/datacontract-surrogate.md new file mode 100644 index 00000000000..aec73edee4e --- /dev/null +++ b/docs/framework/wcf/samples/datacontract-surrogate.md @@ -0,0 +1,286 @@ +--- +title: "DataContract サロゲート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b0188f3c-00a9-4cf0-a887-a2284c8fb014 +caps.latest.revision: 21 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 21 +--- +# DataContract サロゲート +このサンプルでは、シリアル化、逆シリアル化、スキーマのエクスポート、スキーマのインポートなどのプロセスを、データ コントラクト サロゲート クラスを使用してカスタマイズする方法を示します。このサンプルでは、クライアントとサーバーのシナリオ内でサロゲートを使用する方法を示します。このシナリオでは、データがシリアル化され、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントとサービス間で転送が行われます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルでは、次のサービス コントラクトを使用します。 + +``` +[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] +[AllowNonSerializableTypes] +public interface IPersonnelDataService +{ + [OperationContract] + void AddEmployee(Employee employee); + + [OperationContract] + Employee GetEmployee(string name); +} +``` + + `AddEmployee` 操作は、ユーザーが新しい従業員に関するデータを追加できるようにし、`GetEmployee` 操作は名前に基づく従業員の検索をサポートします。 + + これらの操作では、次のデータ型を使用します。 + +``` +[DataContract(Namespace = "http://Microsoft.ServiceModel.Samples")] +class Employee +{ + [DataMember] + public DateTime dateHired; + + [DataMember] + public Decimal salary; + + [DataMember] + public Person person; +} + +``` + + `Employee` 型では、`Person` クラス \(次のサンプル コードを参照\) は有効なデータ コントラクト クラスではないので、 によってシリアル化できません。 + +``` +public class Person +{ + public string firstName; + + public string lastName; + + public int age; + + public Person() { } +} +``` + + `DataContract` 属性は `Person` クラスに適用できますが、適用できない場合もあります。たとえば、`Person` クラスは、ユーザーが制御できない別のアセンブリで定義することができます。 + + このような制限がある場合、`Person` クラスをシリアル化するには、このクラスを `DataContractAttribute` でマークされた別のクラスに置き換え、必要なデータをこの新しいクラスにコピーするという方法があります。この目的は、`Person` クラスを DataContract として に表示することです。これは、データ コントラクト クラス以外のクラスをシリアル化する 1 つの方法です。 + + このサンプルでは、 `Person` クラスを `PersonSurrogated` という別のクラスに論理的に置き換えます。 + +``` +[DataContract(Name="Person", Namespace = "http://Microsoft.ServiceModel.Samples")] +public class PersonSurrogated +{ + [DataMember] + public string FirstName; + + [DataMember] + public string LastName; + + [DataMember] + public int Age; +} + +``` + + データ コントラクト サロゲートは、この置き換えを実現するために使用されます。データ コントラクト サロゲートは、 を実装するクラスです。このサンプルでは、`AllowNonSerializableTypesSurrogate` クラスがこのインターフェイスを実装しています。 + + このインターフェイスの実装での最初のタスクは、`Person` から `PersonSurrogated` への型のマップを確立することです。これは、シリアル化の時点およびスキーマをエクスポートする時点の両方で使用されます。このマッピングは、 メソッドを実装することによって実現されます。 + +``` +public Type GetDataContractType(Type type) +{ + if (typeof(Person).IsAssignableFrom(type)) + { + return typeof(PersonSurrogated); + } + return type; +} + +``` + + メソッドは、シリアル化中に `Person` インスタンスを `PersonSurrogated` インスタンスにマップします。次のサンプル コードを参照してください。 + +``` +public object GetObjectToSerialize(object obj, Type targetType) +{ + if (obj is Person) + { + Person person = (Person)obj; + PersonSurrogated personSurrogated = new PersonSurrogated(); + personSurrogated.FirstName = person.firstName; + personSurrogated.LastName = person.lastName; + personSurrogated.Age = person.age; + return personSurrogated; + } + return obj; +} + +``` + + メソッドは、逆シリアル化のための逆マップを実現します。次のサンプル コードを参照してください。 + +``` +public object GetDeserializedObject(object obj, +Type targetType) +{ + if (obj is PersonSurrogated) + { + PersonSurrogated personSurrogated = (PersonSurrogated)obj; + Person person = new Person(); + person.firstName = personSurrogated.FirstName; + person.lastName = personSurrogated.LastName; + person.age = personSurrogated.Age; + return person; + } + return obj; +} + +``` + + スキーマのインポート中に `PersonSurrogated` データ コントラクトを既存の `Person` クラスにマップするため、このサンプルでは メソッドを実装しています。次のサンプル コードを参照してください。 + +``` +public Type GetReferencedTypeOnImport(string typeName, + string typeNamespace, object customData) +{ +if ( +typeNamespace.Equals("http://schemas.datacontract.org/2004/07/DCSurrogateSample") +) + { + if (typeName.Equals("PersonSurrogated")) + { + return typeof(Person); + } + } + return null; +} + +``` + + インターフェイスの実装を完了するサンプル コードを次に示します。 + +``` +public System.CodeDom.CodeTypeDeclaration ProcessImportedType( + System.CodeDom.CodeTypeDeclaration typeDeclaration, + System.CodeDom.CodeCompileUnit compileUnit) +{ + return typeDeclaration; +} +public object GetCustomDataToExport(Type clrType, + Type dataContractType) +{ + return null; +} + +public object GetCustomDataToExport( +System.Reflection.MemberInfo memberInfo, Type dataContractType) +{ + return null; +} +public void GetKnownCustomDataTypes( + KnownTypeCollection customDataTypes) +{ + // It does not matter what we do here. + throw new NotImplementedException(); +} + +``` + + このサンプルでは、`AllowNonSerializableTypesAttribute` という属性により、ServiceModel でサロゲートが有効になります。開発の際には、この属性をサービス コントラクトに適用する必要があります。上の `IPersonnelDataService` サービス コントラクトを参照してください。この属性は `IContractBehavior` を実装し、`ApplyClientBehavior` メソッドと `ApplyDispatchBehavior` メソッドでの操作にサロゲートを設定します。 + + この場合、この属性は必要ありません。このサンプルでのデモンストレーション用にのみ使用されます。これ以外の方法として、コードまたは構成を使用して同様の `IContractBehavior`、`IEndpointBehavior`、または `IOperationBehavior` を手動で追加することにより、サロゲートを有効にすることもできます。 + + `IContractBehavior` の実装は、操作に `DataContractSerializerOperationBehavior` が登録されているかどうかをチェックすることにより、DataContract を使用する操作を検索します。登録されている場合は、その動作に `DataContractSurrogate` プロパティが設定されます。この処理を行うサンプル コードを次に示します。この操作にサロゲートが設定されると、シリアル化および逆シリアル化のために動作でサロゲートが有効化されます。 + +``` +public void ApplyClientBehavior(ContractDescription description, ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime proxy) +{ + foreach (OperationDescription opDesc in description.Operations) + { + ApplyDataContractSurrogate(opDesc); + } +} + +public void ApplyDispatchBehavior(ContractDescription description, ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.DispatchRuntime dispatch) +{ + foreach (OperationDescription opDesc in description.Operations) + { + ApplyDataContractSurrogate(opDesc); + } +} + +private static void ApplyDataContractSurrogate(OperationDescription description) +{ + DataContractSerializerOperationBehavior dcsOperationBehavior = description.Behaviors.Find(); + if (dcsOperationBehavior != null) + { + if (dcsOperationBehavior.DataContractSurrogate == null) + dcsOperationBehavior.DataContractSurrogate = new AllowNonSerializableTypesSurrogate(); + } +} +``` + + メタデータの生成中にサロゲートをプラグインとして使用するには、追加手順が必要です。これを行うための機構として、このサンプルで示す `IWsdlExportExtension` が用意されています。さらに、`WsdlExporter` を直接変更するという方法もあります。 + + `AllowNonSerializableTypesAttribute` 属性は `IWsdlExportExtension` と `IContractBehavior` を実装しています。この場合、拡張機能として `IContractBehavior` または `IEndpointBehavior` を使用できます。`IWsdlExportExtension.ExportContract` メソッドの実装は、DataContract のスキーマ生成中に使用される`XsdDataContractExporter` にサロゲートを追加することによって、サロゲートを有効にします。これを行う方法を次のコード スニペットに示します。 + +``` +public void ExportContract(WsdlExporter exporter, WsdlContractConversionContext context) +{ + if (exporter == null) + throw new ArgumentNullException("exporter"); + + object dataContractExporter; + XsdDataContractExporter xsdDCExporter; + if (!exporter.State.TryGetValue(typeof(XsdDataContractExporter), out dataContractExporter)) + { + xsdDCExporter = new XsdDataContractExporter(exporter.GeneratedXmlSchemas); + exporter.State.Add(typeof(XsdDataContractExporter), xsdDCExporter); + } + else + { + xsdDCExporter = (XsdDataContractExporter)dataContractExporter; + } + if (xsdDCExporter.Options == null) + xsdDCExporter.Options = new ExportOptions(); + + if (xsdDCExporter.Options.DataContractSurrogate == null) + xsdDCExporter.Options.DataContractSurrogate = new AllowNonSerializableTypesSurrogate(); +} +``` + + サンプルを実行すると、クライアントは AddEmployee の呼び出しに続いて、最初の呼び出しが正常に行われたかどうかをチェックする GetEmployee を呼び出します。GetEmployee の操作要求の結果は、クライアント コンソール ウィンドウに表示されます。GetEmployee 操作では、従業員の検索が正常に行われ、"found" と出力される必要があります。 + +> [!NOTE] +> このサンプルでは、シリアル化、逆シリアル化、およびメタデータの生成で、サロゲートをプラグインとして使用する方法を示します。メタデータからコードを生成するためにサロゲートをプラグインとして使用する方法を示すものではありません。クライアント コードの生成にプラグインとしてサロゲートを使用するサンプルについては、「[カスタム WSDL パブリケーション](../../../../docs/framework/wcf/samples/custom-wsdl-publication.md)」のサンプルを参照してください。 + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\DataContract` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/datacontractresolver.md b/docs/framework/wcf/samples/datacontractresolver.md new file mode 100644 index 00000000000..7c49b402440 --- /dev/null +++ b/docs/framework/wcf/samples/datacontractresolver.md @@ -0,0 +1,181 @@ +--- +title: "DataContractResolver | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6c200c02-bc14-4b8d-bbab-9da31185b805 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# DataContractResolver +このサンプルでは、 クラスを使用して、シリアル化プロセスおよび逆シリアル化プロセスをカスタマイズする方法を示します。このサンプルでは、シリアル化および逆シリアル化の際に CLR 型と xsi:type 表現との間にマッピングを行うために DataContractResolver を使用する方法を示します。 + +## サンプルの詳細 + サンプルでは、次の CLR 型を定義します。 + +```csharp +using System; +using System.Runtime.Serialization; + +namespace Types +{ + [DataContract] + public class Customer + { + [DataMember] + public string Name { get; set; } + } + + [DataContract] + public class VIPCustomer : Customer + { + [DataMember] + public string VipInfo { get; set; } + } + + [DataContract] + public class RegularCustomer : Customer + { + } + + [DataContract] + public class PreferredVIPCustomer : VIPCustomer + { + } +} + +``` + + サンプルでは、このアセンブリを読み込み、これらの各型を抽出して、型をシリアル化および逆シリアル化します。次の例で示すように、 派生クラスのインスタンスを コンストラクターに渡すことによってシリアル化プロセスに追加されます。 + +```csharp +this.serializer = new DataContractSerializer(typeof(Object), null, int.MaxValue, false, true, null, new MyDataContractResolver(assembly)); + +``` + + 次のコード例に示すように、サンプルでは CLR 型をシリアル化しています。 + +```csharp +Assembly assembly = Assembly.Load(new AssemblyName("Types")); + +public void serialize(Type type) +{ + Object instance = Activator.CreateInstance(type); + + Console.WriteLine("----------------------------------------"); + Console.WriteLine(); + Console.WriteLine("Serializing type: {0}", type.Name); + Console.WriteLine(); + this.buffer = new StringBuilder(); + using (XmlWriter xmlWriter = XmlWriter.Create(this.buffer)) + { + try + { + this.serializer.WriteObject(xmlWriter, instance); + } + catch (SerializationException error) + { + Console.WriteLine(error.ToString()); + } + } + Console.WriteLine(this.buffer.ToString()); +} + +``` + + 次のコード例に示すように、サンプルでは xsi:types を逆シリアル化しています。 + +```csharp +public void deserialize(Type type) +{ + Console.WriteLine(); + Console.WriteLine("Deserializing type: {0}", type.Name); + Console.WriteLine(); + using (XmlReader xmlReader = XmlReader.Create(new StringReader(this.buffer.ToString()))) + { + Object obj = this.serializer.ReadObject(xmlReader); + } +} + +``` + + カスタム コンストラクターに渡されるため、CLR 型を同等の `xsi:type` にマッピングするためのシリアル化時に が呼び出されます。同様に、`xsi:type` を同等の CLR 型にマッピングするための逆シリアル化時に が呼び出されます。このサンプルでは、 は、次の例のように定義されます。 + + から派生するクラスのコード例を次に示します。 + +``` +class MyDataContractResolver : DataContractResolver +{ + private Dictionary dictionary = new Dictionary(); + Assembly assembly; + + public MyDataContractResolver(Assembly assembly) + { + this.assembly = assembly; + } + + // Used at deserialization + // Allows users to map xsi:type name to any Type + public override Type ResolveName(string typeName, string typeNamespace, DataContractResolver knownTypeResolver) + { + XmlDictionaryString tName; + XmlDictionaryString tNamespace; + if (dictionary.TryGetValue(typeName, out tName) && dictionary.TryGetValue(typeNamespace, out tNamespace)) + { + return this.assembly.GetType(tNamespace.Value + "." + tName.Value); + } + else + { + return null; + } + } + + // Used at serialization + // Maps any Type to a new xsi:type representation + public override void ResolveType(Type dataContractType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace) + { + string name = dataContractType.Name; + string namesp = dataContractType.Namespace; + typeName = new XmlDictionaryString(XmlDictionary.Empty, name, 0); + typeNamespace = new XmlDictionaryString(XmlDictionary.Empty, namesp, 0); + if (!dictionary.ContainsKey(dataContractType.Name)) + { + dictionary.Add(name, typeName); + } + if (!dictionary.ContainsKey(dataContractType.Namespace)) + { + dictionary.Add(namesp, typeNamespace); + } + } +} + +``` + + サンプルの一部として、Types プロジェクトでは、このサンプルで使用するすべての型を含むアセンブリが生成されます。このプロジェクトは、シリアル化される型を追加、削除、または変更するために使用します。 + +#### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を使用して、DCRSample.sln ソリューション ファイルを開きます。 + +2. ソリューションを実行するには、F5 キーを押します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Contract\Data\DataContractResolver` + +## 参照 + [データ コントラクト リゾルバーの使用](../../../../docs/framework/wcf/feature-details/using-a-data-contract-resolver.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/datacontractserializer-datacontractresolver-netdatacontractserializer.md b/docs/framework/wcf/samples/datacontractserializer-datacontractresolver-netdatacontractserializer.md new file mode 100644 index 00000000000..ef18eb14dec --- /dev/null +++ b/docs/framework/wcf/samples/datacontractserializer-datacontractresolver-netdatacontractserializer.md @@ -0,0 +1,93 @@ +--- +title: "DataContractSerializer と DataContractResolver を使用した NetDataContractSerializer 機能の提供 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1376658f-f695-45f7-a7e0-94664e9619ff +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# DataContractSerializer と DataContractResolver を使用した NetDataContractSerializer 機能の提供 +このサンプルでは、 を適切な と共に使用して、 と同じ機能を提供する方法を示します。このサンプルで示すのは、 を作成して に追加する方法です。 + +## サンプルの詳細 + は、1 つの重要な点で とは異なります。 はシリアル化された XML の中に CLR 型情報を含みますが、 にはこの情報は含まれません。したがって、 は、シリアル化と逆シリアル化の両方で、同一の CLR 型を共有する結果になる場合のみ使用できます。ただし、 よりも優れたパフォーマンスが得られるため、 を使用することをお勧めします。 を追加することによって、 でシリアル化される情報を変更することができます。 + + このサンプルは、2 つのプロジェクトで構成されます。最初のプロジェクトでは、 を使用してオブジェクトをシリアル化します。2 番目のプロジェクトでは、 と共に使用して、最初のプロジェクトと同じ機能を提供します。 + + 次のコード例では、DCSwithDCR プロジェクトの に追加される `MyDataContractResolver` という名前のカスタム の実装を示します。 + +``` +class MyDataContractResolver : DataContractResolver +{ + private XmlDictionary dictionary = new XmlDictionary(); + + public MyDataContractResolver() + { + } + + // Used at deserialization + // Allows users to map xsi:type name to any Type + public override Type ResolveName(string typeName, string typeNamespace, DataContractResolver knownTypeResolver) + { + Type type = knownTypeResolver.ResolveName(typeName, typeNamespace, null); + if (type == null) + { + type = Type.GetType(typeName + ", " + typeNamespace); + } + return type; + } + + // Used at serialization + // Maps any Type to a new xsi:type representation + public override void ResolveType(Type dataContractType, DataContractResolver knownTypeResolver, out XmlDictionaryString typeName, out XmlDictionaryString typeNamespace) + { + knownTypeResolver.ResolveType(dataContractType, null, out typeName, out typeNamespace); + if (typeName == null || typeNamespace == null) + { + XmlDictionary dictionary = new XmlDictionary(); + typeName = dictionary.Add(dataContractType.FullName); + typeNamespace = dictionary.Add(dataContractType.Assembly.FullName); + } + } +} + +``` + +#### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を使用して、DCRSample.sln ソリューション ファイルを開きます。 + +2. ソリューション ファイルを右クリックし、**\[プロパティ\]** をクリックします。 + +3. **\[ソリューション プロパティ ページ\]** ダイアログ ボックスの **\[共通プロパティ\]** の **\[スタートアップ プロジェクト\]** で、**\[マルチ スタートアップ プロジェクト\]** を選択します。 + +4. **DCSwithDCR** プロジェクトの横にある **\[アクション\]** ボックスの一覧から **\[開始\]** を選択します。 + +5. **NetDCS** プロジェクトの横にある **\[アクション\]** ボックスの一覧の **\[開始\]** をクリックします。 + +6. **\[OK\]** をクリックしてダイアログ ボックスを閉じます。 + +7. ソリューションをビルドするには、Ctrl キーと Shift キーを押しながら B キーを押します。 + +8. ソリューションを実行するには、Ctrl キーを押しながら F5 キーを押します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Contract\Data\NetDcSasDcSwithDCR` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/datacontractserializer-sample.md b/docs/framework/wcf/samples/datacontractserializer-sample.md new file mode 100644 index 00000000000..67af776176a --- /dev/null +++ b/docs/framework/wcf/samples/datacontractserializer-sample.md @@ -0,0 +1,158 @@ +--- +title: "DataContractSerializer サンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "XML フォーマッタ" +ms.assetid: e0a2fe89-3534-48c8-aa3c-819862224571 +caps.latest.revision: 37 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 37 +--- +# DataContractSerializer サンプル +DataContractSerializer サンプルでは、 を示して、データ コントラクト クラスに対応した一般的なシリアル化および逆シリアル化の各サービスを実行します。 このサンプルでは の使用方法を示すため、`Record` オブジェクトを作成してメモリ ストリームにシリアル化し、次にそのメモリ ストリームを別の `Record` オブジェクトに逆シリアル化します。 サンプルではその後、バイナリ ライタを使用して `Record` オブジェクトをシリアル化し、バイナリ ライタがシリアル化にどのように影響するかを示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + `Record` のデータ コントラクトを次のサンプル コードに示します。 + +``` +[DataContract(Namespace="http://Microsoft.ServiceModel.Samples")] +internal class Record +{ + private double n1; + private double n2; + private string operation; + private double result; + + internal Record(double n1, double n2, string operation, double result) + { + this.n1 = n1; + this.n2 = n2; + this.operation = operation; + this.result = result; + } + + [DataMember] + internal double OperandNumberOne + { + get { return n1; } + set { n1 = value; } + } + + [DataMember] + internal double OperandNumberTwo + { + get { return n2; } + set { n2 = value; } + } + + [DataMember] + internal string Operation + { + get { return operation; } + set { operation = value; } + } + + [DataMember] + internal double Result + { + get { return result; } + set { result = value; } + } + + public override string ToString() + { + return string.Format("Record: {0} {1} {2} = {3}", n1, + operation, n2, result); + } +} +``` + + このサンプル コードは `record1` という `Record` オブジェクトを作成し、これを表示します。 + +``` +Record record1 = new Record(1, 2, "+", 3); +Console.WriteLine("Original record: {0}", record1.ToString()); + +``` + + 次に、 を使用して `record1` をメモリ ストリームにシリアル化します。 + +``` +MemoryStream stream1 = new MemoryStream(); + +//Serialize the Record object to a memory stream using DataContractSerializer. +DataContractSerializer serializer = new DataContractSerializer(typeof(Record)); +serializer.WriteObject(stream1, record1); + +``` + + さらに、 を使用してメモリ ストリームを新しい `Record` オブジェクトに逆シリアル化し、これを表示します。 + +``` +stream1.Position = 0; + +//Deserialize the Record object back into a new record object. +Record record2 = (Record)serializer.ReadObject(stream1); + +Console.WriteLine("Deserialized record: {0}", record2.ToString()); + +``` + + 既定では、`DataContractSerializer` は XML のテキスト表現を使用して、オブジェクトをストリームにエンコードします。 ただし、別のライタを渡すことによって XML のエンコーディングを制御できます。 このサンプルでは、 を呼び出してバイナリ ライタを作成します。 その後、 を呼び出す際に、このライタと Record オブジェクトをシリアライザに渡します。 最後に、ライタをフラッシュしてストリームの長さを報告します。 + +``` +MemoryStream stream2 = new MemoryStream(); + +XmlDictionaryWriter binaryDictionaryWriter = XmlDictionaryWriter.CreateBinaryWriter(stream2); +serializer.WriteObject(binaryDictionaryWriter, record1); +binaryDictionaryWriter.Flush(); + +//report the length of the streams +Console.WriteLine("Text Stream is {0} bytes long", stream1.Length); +Console.WriteLine("Binary Stream is {0} bytes long", stream2.Length); +``` + + このサンプルを実行すると、元の Record オブジェクトと逆シリアル化された Record オブジェクトが表示され、続いてテキスト エンコーディングの長さとバイナリ エンコーディングの長さとが比較されます。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Original record: Record: 1 + 2 = 3 +Deserialized record: Record: 1 + 2 = 3 +Text Stream is 233 bytes long +Binary Stream is 156 bytes long + +Press to terminate client. +``` + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. このサンプルを実行するには、コマンド プロンプトで「client\\bin\\client.exe」と入力してクライアントを開始します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Contract\Data\DataContractSerializer` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/dead-letter-queues.md b/docs/framework/wcf/samples/dead-letter-queues.md new file mode 100644 index 00000000000..a8e555d37c1 --- /dev/null +++ b/docs/framework/wcf/samples/dead-letter-queues.md @@ -0,0 +1,378 @@ +--- +title: "配信不能キュー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ff664f33-ad02-422c-9041-bab6d993f9cc +caps.latest.revision: 35 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 35 +--- +# 配信不能キュー +このサンプルでは、配信できなかったメッセージの処理方法を示します。 これは、「[トランザクション MSMQ バインディング](../../../../docs/framework/wcf/samples/transacted-msmq-binding.md)」のサンプルに基づいています。 このサンプルでは、`netMsmqBinding` バインディングを使用します。 サービスは自己ホスト型コンソール アプリケーションであるので、キューに置かれたメッセージをサービスが受信するようすを観察できます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +> [!NOTE] +> このサンプルで示す各アプリケーションの配信不能キューは、[!INCLUDE[wv](../../../../includes/wv-md.md)] でのみ使用が可能です。 [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] と [!INCLUDE[wxp](../../../../includes/wxp-md.md)] では、MSMQ 3.0 の既定のシステム全体用のキューを使用するようにサンプルを変更してください。 + + キュー通信では、クライアントはサービスとの通信にキューを使用します。 厳密には、クライアントはメッセージをキューに送信します。 サービスは、メッセージをキューから受信します。 したがって、キューを使用する通信では、サービスとクライアントが同時に実行されていなくてもかまいません。 + + キューを使用する通信では一定の活動停止状態が生じるので、メッセージの有効期間を設定して、有効期間経過後はメッセージをアプリケーションに配信しないようにすることが必要になる場合があります。 また、アプリケーションによっては、メッセージの配信が失敗したかどうかを通知する必要があります。 このような場合に、メッセージの有効期間が経過すると、あるいはメッセージの配信に失敗すると、メッセージは配信不能キューに置かれます。 このとき、送信元のアプリケーションは、配信不能キューに置かれたメッセージを読み取って修正処理を行います。修正処理とは、何も行わない場合から、配信失敗の原因を解消してメッセージを再送信する場合までさまざまです。 + + `NetMsmqBinding` バインディングの配信不能キューは、次のプロパティとして表されます。 + +- プロパティは、クライアントが必要とする配信不能キューの種類を表します。 この列挙体には、次の値があります。 + +- `None` : クライアントは配信不能キューを必要としません。 + +- `System`: システムの配信不能キューを使用して配信不能メッセージを保存します。 システムの配信不能キューは、そのコンピューターで実行されているすべてのアプリケーションで共有されます。 + +- `Custom`: プロパティで指定されるカスタムの配信不能キューを使用して配信不能メッセージを保存します。 この機能は、[!INCLUDE[wv](../../../../includes/wv-md.md)] でのみ使用できます。 同じコンピューターで実行されている他のアプリケーションとキューを共有するのではなく、そのアプリケーション専用の配信不能キューが必要な場合に、この値を使用します。 + +- プロパティは、配信不能キューとして使用される特定のキューを表します。 このプロパティは [!INCLUDE[wv](../../../../includes/wv-md.md)] でのみ使用できます。 + + このサンプルでは、クライアントがトランザクションのスコープ内からメッセージをまとめてサービスに送信しますが、メッセージの "有効期間" には意図的に小さい値 \(約 2 秒\) を指定しています。 さらに、有効期限切れのメッセージを入れるために使用するカスタムの配信不能キューを指定します。 + + クライアント アプリケーションは、配信不能キューからメッセージを読み取った後で、そのメッセージの再送信を試みるか、元のメッセージが配信不能となった原因のエラーを解消してメッセージを送信します。 このサンプルでは、クライアントはエラー メッセージを表示します。 + + サービス コントラクトは `IOrderProcessor` です。次のサンプル コードを参照してください。 + +``` +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public interface IOrderProcessor +{ + [OperationContract(IsOneWay = true)] + void SubmitPurchaseOrder(PurchaseOrder po); +} + +``` + + サンプルのサービス コードは「[トランザクション MSMQ バインディング](../../../../docs/framework/wcf/samples/transacted-msmq-binding.md)」のコードです。 + + サービスとの通信はトランザクションのスコープ内で実行されます。 サービスはキューからメッセージを読み取って操作を実行し、操作の結果を表示します。 このアプリケーションでは、配信不能メッセージ用の配信不能キューも作成します。 + +``` +//The service contract is defined in generatedClient.cs, generated from the service by the svcutil tool. + +//Client implementation code. +class Client +{ + static void Main() + { + // Get MSMQ queue name from app settings in configuration + string deadLetterQueueName = ConfigurationManager.AppSettings["deadLetterQueueName"]; + + // Create the transacted MSMQ queue for storing dead message if necessary. + if (!MessageQueue.Exists(deadLetterQueueName)) + MessageQueue.Create(deadLetterQueueName, true); + + // Create a proxy with given client endpoint configuration + OrderProcessorClient client = new OrderProcessorClient("OrderProcessorEndpoint"); + + // Create the purchase order + PurchaseOrder po = new PurchaseOrder(); + po.CustomerId = "somecustomer.com"; + po.PONumber = Guid.NewGuid().ToString(); + + PurchaseOrderLineItem lineItem1 = new PurchaseOrderLineItem(); + lineItem1.ProductId = "Blue Widget"; + lineItem1.Quantity = 54; + lineItem1.UnitCost = 29.99F; + + PurchaseOrderLineItem lineItem2 = new PurchaseOrderLineItem(); + lineItem2.ProductId = "Red Widget"; + lineItem2.Quantity = 890; + lineItem2.UnitCost = 45.89F; + + po.orderLineItems = new PurchaseOrderLineItem[2]; + po.orderLineItems[0] = lineItem1; + po.orderLineItems[1] = lineItem2; + + //Create a transaction scope. + using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) + { + // Make a queued call to submit the purchase order + client.SubmitPurchaseOrder(po); + // Complete the transaction. + scope.Complete(); + } + + client.Close(); + + Console.WriteLine(); + Console.WriteLine("Press to terminate client."); + Console.ReadLine(); + } +} +``` + + クライアントの構成では、メッセージがサービスに到達するまでの時間が短く設定されています。 指定された時間内にメッセージを送信できなかった場合は、メッセージが有効期限切れとなり、配信不能キューに移動します。 + +> [!NOTE] +> クライアントがメッセージを指定時間内にサービス キューに配信できる場合もあります。 配信不能サービスが動作していることを確認するには、サービスを開始する前にクライアントを実行してみてください。 メッセージはタイムアウトして、配信不能サービスに配信されます。 + + アプリケーションでは、どのキューを配信不能キューとして使用するかを定義する必要があります。 キューが指定されていない場合は、既定のシステム全体のトランザクション配信不能キューが使用されます。 この例のクライアント アプリケーションは、アプリケーション専用の配信不能キューを指定します。 + +``` + + + + + + + + + + + + + + + + + + + + + + +``` + + 配信不能メッセージ サービスは、メッセージを配信不能キューから読み取ります。 この配信不能メッセージ サービスは、`IOrderProcessor` コントラクトを実装します。 ただし、この実装は注文を処理するためのものではありません。 配信不能メッセージ サービスはクライアント サービスの 1 つで、注文処理機能は含まれていません。 + +> [!NOTE] +> 配信不能キューはクライアント キューであり、クライアントのキュー マネージャに対してローカルです。 + + 配信不能メッセージ サービスの実装の中で、メッセージの配信に失敗した原因を調べて修正処理を実行します。 メッセージ配信失敗の原因は、 の 2 つの列挙体に記録されます。 から取得できます。次のサンプル コードを参照してください。 + +``` +public void SubmitPurchaseOrder(PurchaseOrder po) +{ + Console.WriteLine("Submitting purchase order did not succed ", po); + MsmqMessageProperty mqProp = + OperationContext.Current.IncomingMessageProperties[ + MsmqMessageProperty.Name] as MsmqMessageProperty; + Console.WriteLine("Message Delivery Status: {0} ", + mqProp.DeliveryStatus); + Console.WriteLine("Message Delivery Failure: {0}", + mqProp.DeliveryFailure); + Console.WriteLine(); + …. +} + +``` + + 配信不能キューの中のメッセージは、メッセージを処理するサービス宛てのメッセージです。 そのため、配信不能メッセージ サービスがキューからメッセージを読み取ったときに、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のチャネル レイヤによってエンドポイントの不一致が検出され、メッセージはディスパッチされません。 この場合、メッセージの宛先は注文処理サービスですが、受信するのは配信不能メッセージ サービスです。 別のエンドポイント宛てのメッセージを受信するには、どのアドレスにも一致するアドレス フィルタを `ServiceBehavior` で指定します。 これは、配信不能キューから読み取ったメッセージを正常に処理するために必要です。 + + このサンプルでは、配信失敗の原因がメッセージのタイムアウトならば、配信不能メッセージ サービスはメッセージを再送信します。 他の原因の場合は、配信エラーを表示します。次のサンプル コードを参照してください。 + +``` +// Service class that implements the service contract. +// Added code to write output to the console window. +[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single, ConcurrencyMode=ConcurrencyMode.Single, AddressFilterMode=AddressFilterMode.Any)] +public class PurchaseOrderDLQService : IOrderProcessor +{ + OrderProcessorClient orderProcessorService; + public PurchaseOrderDLQService() + { + orderProcessorService = new OrderProcessorClient("OrderProcessorEndpoint"); + } + + [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)] + public void SubmitPurchaseOrder(PurchaseOrder po) + { + Console.WriteLine("Submitting purchase order did not succeed ", po); + MsmqMessageProperty mqProp = OperationContext.Current.IncomingMessageProperties[MsmqMessageProperty.Name] as MsmqMessageProperty; + + Console.WriteLine("Message Delivery Status: {0} ", mqProp.DeliveryStatus); + Console.WriteLine("Message Delivery Failure: {0}", mqProp.DeliveryFailure); + Console.WriteLine(); + + // resend the message if timed out + if (mqProp.DeliveryFailure == DeliveryFailure.ReachQueueTimeout || + mqProp.DeliveryFailure == DeliveryFailure.ReceiveTimeout) + { + // re-send + Console.WriteLine("Purchase order Time To Live expired"); + Console.WriteLine("Trying to resend the message"); + + // reuse the same transaction used to read the message from dlq to enqueue the message to app. queue + orderProcessorService.SubmitPurchaseOrder(po); + Console.WriteLine("Purchase order resent"); + } + } + + // Host the service within this EXE console application. + public static void Main() + { + // Create a ServiceHost for the PurchaseOrderDLQService type. + using (ServiceHost serviceHost = new ServiceHost(typeof(PurchaseOrderDLQService))) + { + // Open the ServiceHostBase to create listeners and start listening for messages. + serviceHost.Open(); + + // The service can now be accessed. + Console.WriteLine("The dead letter service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + } + } +} +``` + + 配信不能メッセージ用の構成を次のサンプルに示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + +``` + + このサンプルを実行するときは、3 つの実行可能ファイル \(クライアント、サービス、および各アプリケーションの配信不能キューを読み取ってメッセージをサービスに再送信する配信不能サービス\) が実行され、各アプリケーションに対して配信不能キューがどのように機能するかがわかります。 これらはすべてコンソール アプリケーションで、コンソール ウィンドウに出力が表示されます。 + +> [!NOTE] +> キューが使用されているので、クライアントとサービスが同時に実行されている必要はありません。 クライアントを実行してシャットダウンした後にサービスを起動しても、サービスはメッセージを受信します。 キューが作成されるように、サービスを起動してシャットダウンする必要があります。 + + クライアントを実行すると、次のメッセージが表示されます。 + +``` +Press to terminate client. +``` + + クライアントはメッセージの送信を試みますが、タイムアウトまでの時間が短いのでメッセージは期限切れとなり、メッセージが各アプリケーションの配信不能キューに置かれます。 + + 次に、配信不能サービスを実行すると、メッセージが読み取られてエラー コードが表示され、メッセージがサービスに再送信されます。 + +``` +The dead letter service is ready. +Press to terminate service. + +Submitting purchase order did not succeed +Message Delivery Status: InDoubt +Message Delivery Failure: ReachQueueTimeout + +Purchase order Time To Live expired +Trying to resend the message +Purchase order resent + +``` + + サービスを起動すると、再送信されたメッセージが読み取られて処理されます。 + +``` + +The service is ready. +Press to terminate service. + +Processing Purchase Order: 97897eff-f926-4057-a32b-af8fb11b9bf9 + Customer: somecustomer.com + OrderDetails + Order LineItem: 54 of Blue Widget @unit price: $29.99 + Order LineItem: 890 of Red Widget @unit price: $45.89 + Total cost of this order: $42461.56 + Order status: Pending + +``` + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. サービスを最初に実行すると、サービスはキューが存在するかどうかを確認します。 キューが存在しない場合、サービスによってキューが作成されます。 最初にサービスを実行してキューを作成することも、MSMQ キュー マネージャーでキューを作成することもできます。 Windows 2008 でキューを作成するには、次の手順に従います。 + + 1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] でサーバー マネージャーを開きます。 + + 2. **\[機能\]** タブを展開します。 + + 3. **\[プライベート メッセージ キュー\]** を右クリックし、**\[新規作成\]**、**\[専用キュー\]** の順にクリックします。 + + 4. **\[トランザクション\]** ボックスをオンにします。 + + 5. 新しいキューの名前として、`「ServiceModelSamplesTransacted」`と入力します。 + +3. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、キュー名を localhost からコンピューターの完全名に変更し、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +### ワークグループに参加しているコンピューターでこのサンプルを実行するには + +1. ドメインに属していないコンピューターを使用する場合は、トランスポート セキュリティをオフにします。オフにするには、認証モードとセキュリティ レベルを `None` に設定します。サンプル構成を次に示します。 + + ``` + + + + + + + + ``` + + エンドポイントの `bindingConfiguration` 属性が設定されて、エンドポイントとバインディングとが関連付けられていることを確認します。 + +2. DeadLetterService、サーバー、およびクライアントの構成を変更したことを確認してから、サンプルを実行します。 + + > [!NOTE] + > `security mode` を `None` に設定することは、`MsmqAuthenticationMode`、`MsmqProtectionLevel`、および `Message` のセキュリティを `None` に設定することに相当します。 + +## コメント + `netMsmqBinding` バインディング トランスポートを使用する場合の既定では、セキュリティが有効です。 トランスポート セキュリティの種類は、`MsmqAuthenticationMode` と `MsmqProtectionLevel` の 2 つのプロパティで決まります。 既定の設定では、認証モードは `Windows`、保護レベルは `Sign` です。 MSMQ の認証および署名の機能を利用するには、ドメインに属している必要があります。 ドメインに属していないコンピューターでこのサンプルを実行すると、"User's internal message queuing certificate does not exist" というエラーが表示されます。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Binding\Net\MSMQ\DeadLetter` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/default-message-contract.md b/docs/framework/wcf/samples/default-message-contract.md new file mode 100644 index 00000000000..8e04977bd11 --- /dev/null +++ b/docs/framework/wcf/samples/default-message-contract.md @@ -0,0 +1,199 @@ +--- +title: "既定のメッセージ コントラクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "メッセージ コントラクト" +ms.assetid: 5a200b78-1a46-4104-b7fb-da6dbab33893 +caps.latest.revision: 35 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 35 +--- +# 既定のメッセージ コントラクト +既定のメッセージ コントラクトのサンプルでは、ユーザー定義のカスタム メッセージをサービス操作に渡したり、サービス操作から渡されたりするサービスを示します。このサンプルは、電卓インターフェイスを型指定のあるサービスとして実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。このサンプルでは、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」で使用される加算、減算、乗算、および除算の個別のサービス操作ではなく、オペランドと演算子の両方を含むカスタム メッセージを渡し、その算術計算の結果を返します。 + + クライアントはコンソール プログラム \(.exe\) であり、サービス ライブラリはインターネット インフォメーション サービス \(IIS\) によってホストされます。クライアント アクティビティは、コンソール ウィンドウに表示されます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサービスでは、型 `MyMessage` のカスタム メッセージを受け入れて返す、1 つのサービス操作が定義されます。このサンプルでは要求および応答のメッセージの型は同じですが、もちろん、メッセージ コントラクトは必要に応じて変えることができます。 + +``` +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public interface ICalculator +{ + [OperationContract(Action="http://test/MyMessage_action", + ReplyAction="http://test/MyMessage_action")] + MyMessage Calculate(MyMessage request); +} + +``` + + カスタム メッセージ `MyMessage` は、、および 属性が付いたクラスで定義されます。このサンプルで使用するのは 3 番目のコンストラクタだけです。メッセージ コントラクトを使用すると、SOAP メッセージを完全に制御できます。このサンプルでは、 属性を使用して SOAP ヘッダーに `Operation` を格納します。オペランド `N1`、`N2`、および `Result` は SOAP 本文内に示されます。これらのオペランドには 属性が適用されているためです。 + +``` +[MessageContract] +public class MyMessage +{ + private string operation; + private double n1; + private double n2; + private double result; + + //Constructor - create an empty message. + + public MyMessage() {} + + //Constructor - create a message and populate its members. + + public MyMessage(double n1, double n2, string operation, + double result) + { + this.n1 = n1; + this.n2 = n2; + this.operation = operation; + this.result = result; + } + + //Constructor - create a message from another message. + + public MyMessage(MyMessage message) + { + this.n1 = message.n1; + this.n2 = message.n2; + this.operation = message.operation; + this.result = message.result; + } + + [MessageHeader] + public string Operation + { + get { return operation; } + set { operation = value; } + } + + [MessageBodyMember] + public double N1 + { + get { return n1; } + set { n1 = value; } + } + + [MessageBodyMember] + public double N2 + { + get { return n2; } + set { n2 = value; } + } + + [MessageBodyMember] + public double Result + { + get { return result; } + set { result = value; } + } +} +``` + + 実装クラスには、`Calculate` サービス処理用のコードが含まれています。`CalculateService` クラスは、オペランドと演算子を要求メッセージから取得し、要求された計算結果が含まれる応答メッセージを作成します。次のサンプル コードを参照してください。 + +``` +// Service class which implements the service contract. +public class CalculatorService : ICalculator +{ + // Perform a calculation. + + public MyMessage Calculate(MyMessage request) + { + MyMessage response = new MyMessage(request); + switch (request.Operation) + { + case "+": + response.Result = request.N1 + request.N2; + break; + case "-": + response.Result = request.N1 - request.N2; + break; + case "*": + response.Result = request.N1 * request.N2; + break; + case "/": + response.Result = request.N1 / request.N2; + break; + default: + response.Result = 0.0D; + break; + } + return response; + } +} +``` + + クライアント用に生成されるクライアント コードは、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用して作成されました。このツールでは、必要に応じて、生成済みのクライアント コード内にメッセージ コントラクト型が自動的に作成されます。`/messageContract` コマンド オプションを指定すると、メッセージ コントラクトを強制的に生成できます。 + +``` +svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" /o:client\generatedClient.cs http://localhost/servicemodelsamples/service.svc/mex +``` + + `MyMessage` メッセージを使用するクライアントを次のサンプル コードに示します。 + +``` +// Create a client with given client endpoint configuration +CalculatorClient client = new CalculatorClient(); + +// Perform addition using a typed message. + +MyMessage request = new MyMessage(); +request.N1 = 100D; +request.N2 = 15.99D; +request.Operation = "+"; +MyMessage response = ((ICalculator)client).Calculate(request); +Console.WriteLine("Add({0},{1}) = {2}", request.N1, request.N2, response.Result); +``` + + サンプルを実行すると、クライアント コンソール ウィンドウに計算が表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` + +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. + +``` + + この時点で、ユーザー定義のカスタム メッセージがクライアントとサービスの操作間で渡されます。メッセージ コントラクトでは、オペランドと結果はメッセージ本文内にあり、演算子はメッセージ ヘッダー内にあることが定義されました。このメッセージ構造を監視するために、メッセージ ログ記録を設定できます。 + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Contract\Message\Default` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/default-nettcpbinding.md b/docs/framework/wcf/samples/default-nettcpbinding.md new file mode 100644 index 00000000000..25a0c5f5adc --- /dev/null +++ b/docs/framework/wcf/samples/default-nettcpbinding.md @@ -0,0 +1,136 @@ +--- +title: "既定の NetTcpBinding | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "Net プロファイル TCP" +ms.assetid: e8475fe6-0ecd-407a-8e7e-45860561bb74 +caps.latest.revision: 39 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 39 +--- +# 既定の NetTcpBinding +このサンプルは、 バインディングの使用方法を示します。 このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 このサンプルでは、サービスは自己ホスト型です。 クライアントとサービスは両方ともコンソール アプリケーションです。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」に移動して、すべての [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サンプルおよび [!INCLUDE[wf1](../../../../includes/wf1-md.md)] サンプルをダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Binding\Net\TCP\Default` + + バインディングは、クライアントとサービスの構成ファイルに指定されます。 バインディングの種類は、[\](http://msdn.microsoft.com/ja-jp/13aa23b7-2f08-4add-8dbf-a99f8127c017) 要素の `binding` 属性で指定します。次のサンプル構成を参照してください。 + +``` + +``` + + 前のサンプルでは、`netTcpBinding` バインディングを既定の設定で使用するようエンドポイントを構成する手順を示しました。 `netTcpBinding` バインディングを構成してその設定の一部を変更する場合は、バインディング構成を定義する必要があります。 エンドポイントは、バインディング構成を `bindingConfiguration` 属性を使用して名前で参照します。 このサンプルでは、バインディング構成の名前は `Binding1` です。これは次のサンプル構成のように定義されます。 + +``` + + + ... + + ... + + + + + + + + + + + + + + +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press ENTER to terminate client. +``` + +### サンプルをセットアップ、ビルド、および実行するには + +1. 次のコマンドを使用して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 4.0 をインストールします。 + + ``` + %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable + + ``` + +2. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +3. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + + > [!NOTE] + > サーバーは自己ホスト型なので、このサンプルを複数コンピューター構成で実行する場合は、次のようにクライアントの App.config ファイルで ID を指定する必要があります。 + + ``` + + + + + + + + ``` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/default-service-behavior.md b/docs/framework/wcf/samples/default-service-behavior.md new file mode 100644 index 00000000000..fc5dd2402d2 --- /dev/null +++ b/docs/framework/wcf/samples/default-service-behavior.md @@ -0,0 +1,105 @@ +--- +title: "既定のサービスの動作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "既定のサービス動作のサンプル [Windows Communication Foundation]" + - "サービスの動作, 既定" +ms.assetid: 442d4f71-c64e-4c62-816a-a66c38e7d3ec +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# 既定のサービスの動作 +このサンプルでは、サービスの動作設定を構成する方法を示します。このサンプルは、`ICalculator` サービス コントラクトを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。このサンプルは、 属性と 属性を使用して、サービスの動作と操作の動作を明示的に定義しています。動作の構成は、このサンプルに示すように、構成ファイルで行うことも、コード内で強制的に行うこともできます。 + + この例では、クライアントはコンソール アプリケーション \(.exe\) で、サービスはインターネット インフォメーション サービス \(IIS\) によってホストされます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + サービス クラスは、 を使用して動作を指定します。次のサンプル コードを参照してください。指定されたすべての値は、既定値です。 + +``` +[ServiceBehavior( + AutomaticSessionShutdown=true, + ConcurrencyMode=ConcurrencyMode.Single, + InstanceContextMode=InstanceContextMode.PerSession, + IncludeExceptionDetailInFaults=false, + UseSynchronizationContext=true, + ValidateMustUnderstand=true)] +public class CalculatorService : ICalculator +{ + [OperationBehavior( + TransactionAutoComplete=true, + TransactionScopeRequired=false, + Impersonation=ImpersonationOption.NotAllowed)] + public double Add(double n1, double n2) + { + System.Threading.Thread.Sleep(1600); + return n1 + n2; + } + ... +} + +``` + + サービスの動作は、 属性で指定されます。これらの動作のいくつかを次の表に示します。 + +|サービスの動作|説明| +|-------------|--------| +||セッションをクライアントの要求で自動的にシャットダウンします。| +||各サービス インスタンスの同時実行モードを指定します。| +||インスタンス コンテキスト モードを指定します。| +||同期コンテキストが設定されている場合、その同期コンテキストを使用するかどうかを判断します。Windows フォーム アプリケーションで `WindowsFormsSynchronizationContext` を使用するかどうかを制御する場合に、これを使用します。| +||一般的な未処理の実行例外を `Fault` に変換してエラー メッセージとして送信するかどうかを判断します。| +||トランザクションの分離レベルを指定します。| +||予期しないメッセージのヘッダーがエラーの原因であるかどうかを判断します。| + + 操作の動作は 属性を使用して指定されます。これらの動作のいくつかを次の表に示します。 + +|操作の動作|説明| +|-----------|--------| +||現在のトランザクションがサービス操作の完了によってコミットされるかどうかを判断します。| +||サービス操作がクライアントからフローされたトランザクションに参加するかどうかを判断します。| +||サービス操作が呼び出し元の ID を偽装するかどうかを判断します。| +||サービス操作の呼び出しの開始時または終了時に、サービス インスタンスが再利用されるかどうかを判断します。| + + このサンプルを実行する場合は、操作要求および応答はクライアントのコンソール ウィンドウに表示されます。呼び出し間の遅延は、サービス操作で `System.Threading.Thread.Sleep()` が呼び出されることによるものです。以降の動作サンプルでは、これらの動作の詳細について説明します。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Behaviors\Default` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/design-patterns-list-based-publish-subscribe.md b/docs/framework/wcf/samples/design-patterns-list-based-publish-subscribe.md new file mode 100644 index 00000000000..5d76103a19e --- /dev/null +++ b/docs/framework/wcf/samples/design-patterns-list-based-publish-subscribe.md @@ -0,0 +1,172 @@ +--- +title: "デザイン パターン : リストに基づく公開/定期受信 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f4257abc-12df-4736-a03b-0731becf0fd4 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# デザイン パターン : リストに基づく公開/定期受信 +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] プログラムとして実装された、リストに基づく公開\/定期受信パターンを示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + リストに基づく公開\/定期受信のデザイン パターンは、「Microsoft Patterns & Practices」の「[統合パターン](http://go.microsoft.com/fwlink/?LinkId=95894)」で説明されています。 公開\/定期受信パターンは、情報トピックを定期受信する受信者のコレクションに情報を渡します。 リストに基づく公開\/定期受信では、サブスクライバのリストが保持されます。 共有情報が存在する場合は、コピーがリスト上の各サブスクライバに送信されます。 このサンプルでは、動的なリストに基づく公開\/定期受信パターンを示します。これにより、クライアントは必要に応じて何度でも定期受信または定期受信の解除ができます。 + + リストに基づく公開\/定期受信のサンプルは、クライアント、サービス、およびデータ ソース プログラムで構成されています。 クライアントとデータ ソース プログラムは、複数を実行できます。 クライアントはサービスを定期受信し、通知を受信して、定期受信を解除します。 データ ソース プログラムはサービスに情報を送信し、現在のすべてのサブスクライバでその情報が共有されるようにします。 + + このサンプルでは、クライアントとデータ ソースはコンソール プログラム \(.exe ファイル\) で、サービスはインターネット インフォメーション サービス \(IIS\) でホストされるライブラリ \(.dll\) です。 クライアントとデータ ソースのアクティビティは、デスクトップに表示されます。 + + サービスは、双方向通信を使用します。 `ISampleContract` サービス コントラクトは `ISampleClientCallback` コールバック コントラクトと対になっています。 サービスは Subscribe および Unsubscribe サービス操作を実装します。クライアントはこれらのサービス操作を使用してサブスクライバのリストに参加またはリストへの参加を解除します。 サービスは、さらに `PublishPriceChange` サービス操作も実装します。データ ソース プログラムはこれを呼び出して、新しい情報をサービスに提供します。 クライアント プログラムは `PriceChange` サービス操作を実装します。サービスはこれを呼び出して、すべてのサブスクライバに価格の変更を通知します。 + +``` +// Create a service contract and define the service operations. +// NOTE: The service operations must be declared explicitly. +[ServiceContract(SessionMode=SessionMode.Required, + CallbackContract=typeof(ISampleClientContract))] +public interface ISampleContract +{ + [OperationContract(IsOneWay = false, IsInitiating=true)] + void Subscribe(); + [OperationContract(IsOneWay = false, IsTerminating=true)] + void Unsubscribe(); + [OperationContract(IsOneWay = true)] + void PublishPriceChange(string item, double price, + double change); +} + +public interface ISampleClientContract +{ + [OperationContract(IsOneWay = true)] + void PriceChange(string item, double price, double change); +} +``` + + サービスは、すべてのサブスクライバに新しい情報を通知する機構として、.NET Framework イベントを使用します。 クライアントが Subscribe を呼び出してサービスに参加すると、イベント ハンドラが提供されます。 クライアントがサービスへの参加を解除すると、イベントからイベント ハンドラの定期受信が解除されます。 データ ソースが価格の変更を報告するサービスを呼び出すと、サービスはイベントを発生させます。 これにより、サービスの各インスタンスが呼び出されます。このサービスは定期受信した各クライアントのサービスで、この呼び出しによって各インスタンスのイベント ハンドラが実行されます。 各イベント ハンドラは、コールバック関数を使用してクライアントに情報を渡します。 + +``` +public class PriceChangeEventArgs : EventArgs + { + public string Item; + public double Price; + public double Change; + } + + // The Service implementation implements your service contract. + [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)] + public class SampleService : ISampleContract + { + public static event PriceChangeEventHandler PriceChangeEvent; + public delegate void PriceChangeEventHandler(object sender, PriceChangeEventArgs e); + + ISampleClientContract callback = null; + + PriceChangeEventHandler priceChangeHandler = null; + + //Clients call this service operation to subscribe. + //A price change event handler is registered for this client instance. + + public void Subscribe() + { + callback = OperationContext.Current.GetCallbackChannel(); + priceChangeHandler = new PriceChangeEventHandler(PriceChangeHandler); + PriceChangeEvent += priceChangeHandler; + } + + //Clients call this service operation to unsubscribe. + //The previous price change event handler is deregistered. + + public void Unsubscribe() + { + PriceChangeEvent -= priceChangeHandler; + } + + //Information source clients call this service operation to report a price change. + //A price change event is raised. The price change event handlers for each subscriber will execute. + + public void PublishPriceChange(string item, double price, double change) + { + PriceChangeEventArgs e = new PriceChangeEventArgs(); + e.Item = item; + e.Price = price; + e.Change = change; + PriceChangeEvent(this, e); + } + + //This event handler runs when a PriceChange event is raised. + //The client's PriceChange service operation is invoked to provide notification about the price change. + + public void PriceChangeHandler(object sender, PriceChangeEventArgs e) + { + callback.PriceChange(e.Item, e.Price, e.Change); + } + + } + +``` + + このサンプルを実行すると、複数のクライアントが起動されます。 クライアントはサービスを定期受信します。 次にデータ ソース プログラムが実行され、サービスに情報が送信されます。 サービスは、すべてのサブスクライバに情報を渡します。 各クライアント コンソールでアクティビティを表示し、情報が受信されたことを確認できます。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +### サンプルをセットアップしてビルドするには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +### サンプルを同じコンピューターで実行するには + +1. ブラウザにアドレス「http:\/\/localhost\/servicemodelsamples\/service.svc」を入力して、サービスにアクセスできるかどうかをテストします。 これに応答して、確認ページが表示されます。 + +2. 言語固有のフォルダーの下の \\client\\bin\\ にある Client.exe を実行します。 クライアント アクティビティがクライアント コンソール ウィンドウに表示されます。 複数のクライアントを起動します。 + +3. 言語固有のフォルダの下の \\datasource\\bin\\ にある Datasource.exe を実行します。 データ ソース アクティビティがコンソール ウィンドウに表示されます。 データ ソースがサービスに情報を送信すると、その情報は各クライアントに渡されます。 + +4. クライアント、データ ソース、およびサービス プログラムが通信できない場合は、「[Troubleshooting Tips](http://msdn.microsoft.com/ja-jp/8787c877-5e96-42da-8214-fa737a38f10b)」を参照してください。 + +### サンプルを複数コンピューターで実行するには + +1. サービス コンピュータを設定します。 + + 1. サービス コンピューターで、ServiceModelSamples という仮想ディレクトリを作成します。 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」でバッチ ファイル Setupvroot.bat ファイルを使用すると、ディスク ディレクトリと仮想ディレクトリを作成できます。 + + 2. サービス プログラム ファイルを %SystemDrive%\\Inetpub\\wwwroot\\servicemodelsamples からサービス コンピューターの ServiceModelSamples 仮想ディレクトリにコピーします。 \\bin ディレクトリのファイルが含まれていることを確認してください。 + + 3. ブラウザーを使用して、サービスにクライアント コンピューターからアクセスできるかどうかをテストします。 + +2. クライアント コンピュータを設定します。 + + 1. クライアント プログラム ファイルを、言語固有のフォルダにある \\client\\bin\\ フォルダからクライアント コンピュータにコピーします。 + + 2. 各クライアントの構成ファイルで、エンドポイント定義のアドレス値をサービスの新しいアドレスに合わせて変更します。 アドレスの "localhost" への参照をすべて完全修飾ドメイン名に置き換えます。 + +3. データ ソース コンピュータを設定します。 + + 1. データ ソース プログラム ファイルを、言語固有のフォルダにある \\datasource\\bin\\ フォルダからデータ ソース コンピュータにコピーします。 + + 2. データ ソースの構成ファイルで、エンドポイント定義のアドレス値をサービスの新しいアドレスに合わせて変更します。 アドレスの "localhost" への参照をすべて完全修飾ドメイン名に置き換えます。 + +4. クライアント コンピュータで、コマンド プロンプトから Client.exe を起動します。 + +5. データ ソース コンピューターで、コマンド プロンプトから Datasource.exe を起動します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Scenario\DesignPatterns/ListBasedPublishSubscribe` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/discover-a-service-with-unique-listen-uri-mode-sample.md b/docs/framework/wcf/samples/discover-a-service-with-unique-listen-uri-mode-sample.md new file mode 100644 index 00000000000..afb7d85d74e --- /dev/null +++ b/docs/framework/wcf/samples/discover-a-service-with-unique-listen-uri-mode-sample.md @@ -0,0 +1,49 @@ +--- +title: "一意の ListenUri モードのサンプルを使用したサービスの探索 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 9a6d35b2-0469-43c8-a0c9-63623e3d2733 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# 一意の ListenUri モードのサンプルを使用したサービスの探索 +このサンプルでは、 プロパティが に設定されているサービスを探索する方法を示します。 プロパティが に設定されている場合は、ポートを一意に設定するか、GUID を付加することによってパスを一意に設定して、ListenUri を一意にする必要があります。 + +### サービスの機能 + TCP エンドポイントの プロパティは、 に設定されます。これにより、 エンドポイントを介してサービスを探索できるようになります。 + +### クライアントの機能 + このクライアントは、適切な `Via.Uri` を使用してサービスに接続します。この際、 メソッドが使用されます。このメソッドから返された は、有効な を含んでいるかどうか、および `Address.Uri` とは異なるかどうかについて照会されます。適切な情報は `InvokeCalculatorService` メソッドに渡されます。`InvokeCalculatorService` メソッドでは、呼び出し元から が渡され、適切な `Via.Uri` が設定された `ClientViaBehavior` がクライアントのエンドポイントに追加されます。 + +##### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] で、UniqueListenUriMode.sln を開きます。 + +2. ソリューションをビルドするには、Ctrl キーと Shift キーを押しながら B キーを押します。 + +3. \[ソリューションの基本ディレクトリ\]\\service\\bin\\debug フォルダーに生成されたサービス アプリケーションを実行します。 + +4. \[ソリューションの基本ディレクトリ\]\\Client\\bin\\debug フォルダーに生成されたクライアント アプリケーションを実行します。 + + クライアントは実行中のサービスを検索し、サービスのエンドポイントで公開されているメタデータをコンソールに書き込みます。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Discovery\UniqueListenUriMode` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/discovery-binding-element-sample.md b/docs/framework/wcf/samples/discovery-binding-element-sample.md new file mode 100644 index 00000000000..870a6f86eae --- /dev/null +++ b/docs/framework/wcf/samples/discovery-binding-element-sample.md @@ -0,0 +1,130 @@ +--- +title: "探索バインディング要素のサンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: af513015-85bf-417b-8729-1bdff77ff6d6 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 探索バインディング要素のサンプル +このサンプルでは、探索クライアント バインディング要素を使用してサービスを探索する方法を示します。この機能を使用すると、開発者は、探索クライアント チャネルを既存のクライアント チャネル スタックに追加することにより、プログラミング モデルをきわめて直感的にすることができます。関連付けられたチャネルが開いている場合、サービスのアドレスは探索を使用して解決されます。このサンプルは、次のプロジェクトで構成されています。 + +- **CalculatorService**: 探索可能な [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービス。 + +- **CalculatorClient**: 探索クライアント チャネルを使用して CalculatorService の検索と呼び出しを行う [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーション。 + +- **DynamicCalculatorClient**: 動的エンドポイントを使用して CalculatorService の検索と呼び出しを行う [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアント アプリケーション。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Discovery\DiscoveryBindingElement` + +## CalculatorService + このプロジェクトには、`ICalculatorService` コントラクトを実装する簡単な電卓サービスが含まれています。 + + 次の App.config ファイルは、サービスの動作と探索エンドポイントに `` 動作を追加するために使用されています。 + +``` + + + + + + + + + + + + + + + + +``` + + これにより、サービスとそのエンドポイントが探索可能になります。CalculatorService は、NetTcpBinding バインディングを使用してエンドポイントを 1 つ追加する、自己ホスト型サービスです。また、次のコードに示すように、`EndpointDiscoveryBehavior` のエンドポイントへの追加と、スコープの指定も行います。 + +``` +// Add a NET.TCP endpoint and add a scope to that endpoint. +ServiceEndpoint netTcpEndpoint = serviceHost.AddServiceEndpoint(typeof(ICalculatorService), new NetTcpBinding(), netTcpAddress); +EndpointDiscoveryBehavior netTctEndpointBehavior = new EndpointDiscoveryBehavior(); +netTctEndpointBehavior.Scopes.Add(new Uri("ldap:///ou=engineering,o=exampleorg,c=us")); +netTcpEndpoint.Behaviors.Add(netTctEndpointBehavior); +serviceHost.Open(); +``` + +## CalculatorClient + このプロジェクトには、メッセージを CalculatorService に送信するクライアント実装が含まれています。このプログラムは、`CreateCustomBindingWithDiscoveryElement()` メソッドを使用して、探索クライアント チャネルを使用するカスタム バインディングを作成します。 + +``` +static CustomBinding CreateCustomBindingWithDiscoveryElement() + { + DiscoveryClientBindingElement discoveryBindingElement = new DiscoveryClientBindingElement(); + + // Provide the search criteria and the endpoint over which the probe is sent + discoveryBindingElement.FindCriteria = new FindCriteria(typeof(ICalculatorService)); + discoveryBindingElement.DiscoveryEndpointProvider = new UdpDiscoveryEndpointProvider(); + + CustomBinding customBinding = new CustomBinding(new NetTcpBinding()); + // Insert DiscoveryClientBindingElement at the top of the BindingElement stack. + // An exception is thrown if this binding element is not at the top + customBinding.Elements.Insert(0, discoveryBindingElement); + + return customBinding; } +``` + + をインスタンス化した後、サービスの検索時に使用する条件を指定します。この場合の探索検索条件は `ICalculatorService` 型です。さらに、 を指定します。これにより、サービスの検索場所を示す が返されます。 は、新しい インスタンスを返します。[!INCLUDE[crdefault](../../../../includes/crdefault-md.md)][カスタム バインディングを探索クライアント チャネルと共に使用する](../../../../docs/framework/wcf/feature-details/using-a-custom-binding-with-the-discovery-client-channel.md). + +``` +// Extend DiscoveryEndpointProvider class to change the default DiscoveryEndpoint + // to the DiscoveryClientBindingElement. The Discovery ClientChannel + // uses this endpoint to send Probe message. + public class UdpDiscoveryEndpointProvider : DiscoveryEndpointProvider + { + public override DiscoveryEndpoint GetDiscoveryEndpoint() + { + return new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005); + } + } +``` + + この場合、クライアントは、探索プロトコルによって定義された UDP マルチキャスト メカニズムを使用して、ローカル サブネット上のサービスを検索します。残りのメソッドは、カスタム バインディングを作成し、探索バインディング要素をスタックの一番上に挿入します。 + +> [!NOTE] +> は、バインディング スタックの一番上に配置する必要があります。 の一番上に配置された によって作成されたチャネル ファクトリまたはチャネルでは、`EndpointAddress` プロパティまたは `Via` プロパティを使用しないようにする必要があります。これは、実際のアドレスが探索クライアント チャネルでしか見つからないからです。 + + 次に、`CalculatorClient` をインスタンス化するために、このカスタム バインディングとエンドポイント アドレスを渡します。 + +``` +CalculatorServiceClient client = new CalculatorServiceClient(CreateCustomBindingWithDiscoveryElement(), DiscoveryClientBindingElement.DiscoveryEndpointAddress); +``` + + 探索クライアント チャネルを使用している場合、以前に指定された定数のエンドポイント アドレスが渡されます。実行時には、探索クライアント チャネルは、検索条件で指定されたサービスを検索し、見つかったサービスに接続します。サービスとクライアントの接続を確立するには、基になるバインディング スタックも同じにする必要があります。 + +#### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] で、ソリューションを開きます。 + +2. ソリューションをビルドします。 + +3. サービス アプリケーションと各クライアント アプリケーションを実行します。 + +4. クライアントがサービスのアドレスを知ることなくサービスを検索できたことを確認します。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/discovery-extensibility.md b/docs/framework/wcf/samples/discovery-extensibility.md new file mode 100644 index 00000000000..9e4163c5316 --- /dev/null +++ b/docs/framework/wcf/samples/discovery-extensibility.md @@ -0,0 +1,29 @@ +--- +title: "探索の機能拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6c1bca31-c143-468a-8ddd-32f87998a5ff +caps.latest.revision: 4 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 4 +--- +# 探索の機能拡張 +このセクションのサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] の探索機能を拡張する方法について説明します。 + +## このセクションの内容 + [CustomDiscoveryMetadata](../../../../docs/framework/wcf/samples/customdiscoverymetadata.md) + サービスによって公開される探索可能なエンドポイントの探索メタデータにカスタム XML メタデータを挿入する方法について説明します。 + +## 関連項目 + + +## 関連項目 \ No newline at end of file diff --git a/docs/framework/wcf/samples/discovery-proxy-sample.md b/docs/framework/wcf/samples/discovery-proxy-sample.md new file mode 100644 index 00000000000..4d3c3931657 --- /dev/null +++ b/docs/framework/wcf/samples/discovery-proxy-sample.md @@ -0,0 +1,65 @@ +--- +title: "探索プロキシのサンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 1dfa02df-15b1-4e97-9c8e-f5f2772711b0 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 探索プロキシのサンプル +このサンプルでは、既存のサービスに関する情報を格納するために探索プロキシの実装を作成する方法、およびクライアントからそのプロキシに情報のクエリを行う方法を示します。このサンプルは、3 つのプロジェクトで構成されます。 + +- **Service**: 探索プロキシに自らを登録する単純な [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 電卓サービス。 + +- **Discovery Proxy**: 探索プロキシ サービスの実装。 + +- **Client**: 探索プロキシを呼び出してサービスを検索する WCF クライアント アプリケーション。 + +## 使用例 + 探索プロキシの実装 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Discovery\DiscoveryProxy` + +## DiscoveryProxy + このサンプルでは、Program.cs ファイルの `Main` メソッドで、 型のサービスをホストする方法を示します。このメソッドによって、 型と 型の 2 つのエンドポイントが公開されます。どちらのエンドポイントも、TCP をトランスポートとして使用します。 は、`probeEndpointAddress` パラメーターで指定された URI をリッスンします。クライアントは、ここにプローブ メッセージを送信して、プロキシに対するデータのクエリを行うことができます。 は、`announcementEndpointAddress` パラメーターで指定された URI をリッスンします。これは、プロキシがアナウンスをリッスンする場所です。プロキシは、オンライン アナウンスを受け取るとサービスをキャッシュに追加し、オフライン アナウンスを受け取るとサービスをキャッシュから削除します。 + + の実装は DiscoveryProxy.cs に含まれています。プロキシは クラスから継承する必要があり、 の実装を必要とします。インスタンス化すると、プロキシは新しい を作成し、それを使用して認識している要素を格納します。 + + ファイルは、Proxy Cache Methods および Discovery Proxy Implementation という 2 つの領域に分かれています。Proxy Cache Methods 領域には、 の更新、 に対するクエリの実行、およびユーザーへのデータの出力に使用するメソッドが含まれています。Discovery Proxy Implementation 領域には、アナウンスおよびプローブ機能に必要なオーバーライドされたメソッドが含まれています。これらによって、オンライン アナウンス、オフライン アナウンス、またはプローブ メッセージを受け取った後にプロキシで実行されるアクションが定義されます。 + +## Service + Service プロジェクトの Program.cs ファイルでは、探索プロキシと同じ URI がアナウンス エンドポイントに使用されています。これは、サービスがこのエンドポイントを使用して送信したアナウンスを、プロキシが同じエンドポイントを使用して受け取るためです。サービスは、 を使用し、それにアナウンス エンドポイントを追加します。 + +## Client + Client プロジェクトは、プロキシと同じ URI をプローブ エンドポイントに使用します。これは、このシナリオのプローブも、プロキシで使用できるエンドポイントに明確にユニキャストされるからです。クライアントは、この既知のアドレスに接続してサービスのクエリを実行し、サービスを見つけるとそれに接続します。 + +#### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] でプロジェクト ソリューションを読み込み、プロジェクトをビルドします。 + +2. 最初に、\[ソリューションの基本ディレクトリ\]\\DiscoveryProxy\\bin\\debug に生成された探索プロキシ アプリケーションを実行します。探索プロキシを最初に実行しなければならないのは、サービスでアナウンスを送信するために TCP アナウンス エンドポイントを起動しておく必要があるからです。 + +3. 2 番目に、\[ソリューションの基本ディレクトリ\]\\Service\\bin\\debug に生成されたサービス アプリケーションを実行します。起動時に、サービスから探索プロキシのアナウンス エンドポイントにアナウンスが送信され、サービスがプロキシのキャッシュに登録されます。 + +4. 次に、\[ソリューションの基本ディレクトリ\]\\Client\\bin\\debug に生成されたクライアント アプリケーションを実行します。クライアントは、プロキシに対してクエリを実行してサービスのアドレスを取得し、サービスに接続します。 + +5. 最後に、クライアント、サービス、プロキシの順に終了します。プロキシは、サービスのオフライン アナウンスを受け取るまでは実行されている必要があります。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/discovery-router-service.md b/docs/framework/wcf/samples/discovery-router-service.md new file mode 100644 index 00000000000..355b3d321d0 --- /dev/null +++ b/docs/framework/wcf/samples/discovery-router-service.md @@ -0,0 +1,47 @@ +--- +title: "探索ルーター サービス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3d30af47-b24f-40e5-833a-24d77125c9e6 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 探索ルーター サービス +このサンプルでは、探索メッセージを別のエンドポイントに転送する方法を示します。 + +## 使用例 + 探索ルーティング + +## 説明 + 探索ルーティングは、プロキシがサービスを認識しないが、別のプロキシのことは認識する場合に、クライアントがプロキシを使用してそのようなサービスを検索するシナリオで役に立ちます。このプロキシは、探索パケットをこのクライアントから 2 番目のプロキシに転送できます。2 番目のプロキシはサービスを検索し、応答を元のクライアントに返します。 + + このサンプルでは、クライアントはメッセージを探索ルーティング コンポーネントに送信します。このメッセージは、探索ルーター上の特定のエンドポイントに送信されます。その後、このルーターはメッセージを UDP マルチキャスト エンドポイントに転送します。プローブ メッセージはマルチキャスト エンドポイントに送信され、UDP マルチキャスト アドレスをリッスンするサービスは、その探索ルーターに応答します。探索ルーターは応答を収集し、クライアントにその応答を返します。 + +#### サンプルを設定、ビルド、および実行するには + +1. このサンプルをビルドします。 + +2. DiscoveryRouter 実行可能ファイルを実行します。 + +3. ビルド ディレクトリからサービス実行可能ファイルを実行します。 + +4. クライアント実行可能ファイルを実行します。クライアントでサービスが検索されることに注意してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Discovery\DiscoveryRouter` \ No newline at end of file diff --git a/docs/framework/wcf/samples/discovery-samples.md b/docs/framework/wcf/samples/discovery-samples.md new file mode 100644 index 00000000000..e34173dc86c --- /dev/null +++ b/docs/framework/wcf/samples/discovery-samples.md @@ -0,0 +1,54 @@ +--- +title: "探索 (サンプル) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 522a00b4-a789-4e8c-b8d7-a4c3d863a182 +caps.latest.revision: 11 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 11 +--- +# 探索 (サンプル) +このセクションには、探索機能関連のサンプルが含まれています。 + +## このセクションの内容 + [アナウンス](../../../../docs/framework/wcf/samples/announcements-sample.md) + 探索機能を使用したアナウンスを使用する方法を示します。 + + [非同期検索](../../../../docs/framework/wcf/samples/asynchronous-find-sample.md) + すべての電卓サービスを検索する非同期検索を実行する方法を示します。 + + [Basic](../../../../docs/framework/wcf/samples/basic-sample.md) + プログラムでサービスを探索可能にする方法と、 を使用してそのサービスを検索する方法を示します。 + + [構成](../../../../docs/framework/wcf/samples/configuration-sample.md) + 構成ファイルを使用してサービスを探索可能にする方法と、構成によって を使用してそのサービスを検索する方法を示します。 + + [探索バインディング要素のサンプル](../../../../docs/framework/wcf/samples/discovery-binding-element-sample.md) + 探索バインディング要素をカスタム バインディングに追加する方法を示します。これにより、チャネルが開いている場合にクライアントでサービスを探索できるようになります。 + + [探索プロキシのサンプル](../../../../docs/framework/wcf/samples/discovery-proxy-sample.md) + 既存のサービスに関する情報を格納するために探索プロキシの実装を作成する方法と、クライアントからそのプロキシに情報のクエリを行う方法を示します。 + + [一意の ListenUri モードのサンプルを使用したサービスの探索](../../../../docs/framework/wcf/samples/discover-a-service-with-unique-listen-uri-mode-sample.md) + プロパティが に設定されているサービスを探索する方法を示します。 + + [スコープを使用した探索](../../../../docs/framework/wcf/samples/discovery-with-scopes-sample.md) + スコープを使用して探索可能なエンドポイントを分類する方法と、 を使用してエンドポイントの非同期検索を実行する方法を示します。 + + [カスタム検索基準](../../../../docs/framework/wcf/samples/custom-find-criteria.md) + ロジックを使用するカスタム スコープ一致の作成方法とカスタム探索サービスの実装方法を示します。 + + [ワークフローの探索のサンプル](../../../../docs/framework/wcf/samples/workflow-discovery-sample.md) + ワークフロー サービスを探索可能にする方法と、特定のサービスを検索するカスタム コード アクティビティを作成する方法を示します。 + + [探索ルーター サービス](../../../../docs/framework/wcf/samples/discovery-router-service.md) + 探索メッセージを別のエンドポイントに転送する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/discovery-security-sample.md b/docs/framework/wcf/samples/discovery-security-sample.md new file mode 100644 index 00000000000..f8683c8050d --- /dev/null +++ b/docs/framework/wcf/samples/discovery-security-sample.md @@ -0,0 +1,86 @@ +--- +title: "探索のセキュリティのサンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b8db01f4-b4a1-43fe-8e31-26d4e9304a65 +caps.latest.revision: 13 +author: "BrucePerlerMS" +ms.author: "bruceper" +manager: "mbaldwin" +caps.handback.revision: 13 +--- +# 探索のセキュリティのサンプル +Discovery 仕様では、探索プロセスに参加するエンドポイントをセキュリティで保護する必要はありません。 探索メッセージをセキュリティで強化することで、さまざまな種類の攻撃 \(メッセージの改ざん、サービス拒否、リプレイ、なりすまし\) が軽減されます。 このサンプルでは、コンパクトな署名形式 \(WS\-Discovery 仕様のセクション 8.2 を参照\) を使用してメッセージ署名の計算と検証を行うカスタム チャネルの実装方法を示します。 このサンプルは、[2005 年版](http://go.microsoft.com/fwlink/?LinkId=177912)と[バージョン 1.1](http://go.microsoft.com/fwlink/?LinkId=179677) の両方の Discovery の仕様に対応しています。 + + カスタム チャネルは、探索エンドポイントおよびアナウンス エンドポイントの既存のチャネル スタックの上に適用されます。 これにより、署名ヘッダーがすべての送信メッセージに適用されます。 署名は受信メッセージで検証され、署名が一致しない場合やメッセージに署名がない場合、そのメッセージは破棄されます。 このサンプルでは、メッセージの署名と検証を行うために証明書を使用します。 + +## 説明 + WCF は拡張性が非常に高く、ユーザーは必要に応じてチャネルをカスタマイズできます。 このサンプルでは、セキュリティで保護されたチャネルを作成する、探索のセキュリティ保護されたバインディング要素を実装します。 セキュリティで保護されたチャネルは、メッセージ署名を適用および検証します。このチャネルは現在のスタックの上に適用されます。 + + セキュリティ保護されたバインディング要素は、セキュリティで保護されたチャネル ファクトリとチャネル リスナーを作成します。 + +## セキュリティで保護されたチャネル ファクトリ + セキュリティで保護されたチャネル ファクトリは、メッセージ ヘッダーにコンパクトな署名を追加する出力チャネルまたは双方向チャネルを作成します。 メッセージをできるだけ小さくするために、コンパクトな署名形式が使用されます。 コンパクトな署名の構造の例を次に示します。 + +``` + + []? + ... + + +``` + +> [!NOTE] +> `PrefixList` は、Discovery プロトコルの 2008 バージョンで追加されました。 + + このサンプルでは、署名を計算するために、展開される署名のアイテムを特定します。 WS\-Discovery 仕様の規定のとおり、XML 署名 \(`SignedInfo`\) が `ds` 名前空間プレフィックスを使用して作成されます。 探索の本文とすべてのヘッダーおよびアドレス名前空間は署名で参照されるため、改ざんされることはありません。 参照される各要素が排他的正規化 \(http:\/\/www.w3.org\/2001\/10\/xml\-exc\-c14n\#\) を使用して変換され、SHA\-1 ダイジェスト \(http:\/\/www.w3.org\/2000\/09\/xmldsig\#sha1\) の値が計算されます。 参照されるすべての要素とそのダイジェストの値に基づいて、RSA アルゴリズム \(http:\/\/www.w3.org\/2000\/09\/xmldsig\#rsa\-sha1\) を使用して署名の値が計算されます。 + + メッセージは、クライアントが指定した証明書を使用して署名されます。 バインディング要素の作成時に、ストアの場所、名前、および証明書のサブジェクト名を指定する必要があります。 コンパクトな署名の `KeyId` は、署名トークンのキー識別子を表します。これは、署名トークンのサブジェクト キー識別子 \(SKI\) か、署名トークンの公開キーの SHA\-1 ハッシュ \(SKI が存在しない場合\) です。 + +## セキュリティで保護されたチャネル リスナー + セキュリティで保護されたチャネル リスナーは、受信メッセージのコンパクトな署名を検証する入力チャネルまたは双方向チャネルを作成します。 署名を検証するために、メッセージに結び付けられているコンパクトな署名で指定された `KeyId` を使用して、指定されたストアから証明書が選択されます。 メッセージに署名がない場合や署名のチェックに失敗した場合、そのメッセージは破棄されます。 このサンプルでは、セキュリティで保護されたバインディングを使用するために、探索のセキュリティ保護されたバインディング要素が追加されたカスタムの を作成するファクトリを定義します。 これらのセキュリティで保護されたエンドポイントは、探索アナウンス リスナーや探索サービスで使用できます。 + +## サンプルの詳細 + このサンプルには、1 つのライブラリと 4 つのコンソール アプリケーションが含まれています。 + +- **DiscoverySecurityChannels**: セキュリティで保護されたバインディングを公開するライブラリ。 このライブラリは、送信\/受信メッセージのコンパクトな署名の計算と検証を行います。 + +- **Service**: ICalculatorService コントラクトを公開するサービス \(自己ホスト型\)。 このサービスは、Discoverable としてマークされます。 メッセージの署名に使用する証明書の詳細はユーザーが指定します。ストアの場所と名前、証明書のサブジェクト名またはその他の一意の識別子、およびクライアント証明書 \(受信メッセージの署名のチェックに使用する証明書\) の保存場所を指定します。 これらの詳細に基づいて、セキュリティが追加された UdpDiscoveryEndpoint が作成されて使用されます。 + +- **Client**: このクラスは、ICalculatorService の探索と、サービスに対するメソッドの呼び出しを試行します。 ここでも、メッセージの署名と検証を行うために、セキュリティが追加された が作成されて使用されます。 + +- **AnnouncementListener**: オンラインおよびオフラインのアナウンスをリッスンし、セキュリティで保護されたアナウンス エンドポイントを使用する自己ホスト型のサービス。 + +> [!NOTE] +> Setup.bat を複数回実行すると、証明書が重複し、証明書マネージャーから、追加する証明書を選択するように求められます。 その場合は、既に重複が作成されているため、Setup.bat を中止して Cleanup.bat を呼び出します。 Cleanup.bat でも、削除する証明書を選択するように求められます。 一覧から証明書を選択し、残っている証明書がなくなるまで Cleanup.bat を実行します。 + +#### このサンプルを使用するには + +1. Visual Studio コマンド プロンプトから Setup.bat スクリプトを実行します。 このサンプルでは、証明書を使用してメッセージの署名と検証を行います。 スクリプトによって、証明書が Makecert.exe を使用して作成され、Certmgr.exe を使用してインストールされます。 このスクリプトは、管理者権限で実行する必要があります。 + +2. サンプルをビルドして実行するには、Visual Studio で Security.sln ファイルを開き、**\[すべてリビルド\]** を選択します。 複数のプロジェクトを起動するようにソリューションのプロパティを更新します。ここでは、DiscoverySecureChannels を除くすべてのプロジェクトで **\[開始\]** を選択します。 通常どおりソリューションを実行します。 + +3. サンプルの作業が終了したら、このサンプルで作成した証明書を削除する Cleanup.bat スクリプトを実行します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Scenario\DiscoveryScenario` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/discovery-with-scopes-sample.md b/docs/framework/wcf/samples/discovery-with-scopes-sample.md new file mode 100644 index 00000000000..09e9f7c8f76 --- /dev/null +++ b/docs/framework/wcf/samples/discovery-with-scopes-sample.md @@ -0,0 +1,47 @@ +--- +title: "スコープを使用した探索のサンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 6a37a754-6b8c-4ebe-bdf2-d4f0520271d5 +caps.latest.revision: 15 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 15 +--- +# スコープを使用した探索のサンプル +このサンプルでは、スコープを使用して、探索可能なエンドポイントを分類する方法、および を使用して、エンドポイントの非同期検索を実行する方法を示します。サービスに関しては、エンドポイント探索動作を追加し、その動作を使用してエンドポイントにスコープを追加し、さらにエンドポイントの探索可能性を制御することによって、各エンドポイントの探索をカスタマイズする方法を示します。クライアントに関しては、 を作成し、 にスコープを追加してスコープが条件となるように検索パラメーターを最適に調整する方法を示します。また、終了条件を追加することによってクライアントで応答を制限する方法も示します。 + +## サービス機能 + このプロジェクトでは、 に 2 つのサービス エンドポイントを追加します。各エンドポイントには が関連付けられます。この動作は、両方のエンドポイントの URI スコープを追加するために使用します。スコープは、クライアントが検索を最適に調整できるように、これらのエンドポイントを区別するために使用します。2 番目のエンドポイントについては、 プロパティを `false` に設定して探索可能性を無効にすることができます。これにより、このエンドポイントに関連付けられている探索メタデータが探索メッセージの一部として送信されなくなります。 + +## クライアント機能 + `FindCalculatorServiceAddress()` メソッドは、 を使用し、2 つの制限が設定された を渡す方法を示します。スコープを条件に追加し、 プロパティを 1 に設定します。このスコープにより、同じスコープを公開するサービスのみに結果が限定されます。 を 1 に設定すると、 が待機する応答が最大で 1 つのエンドポイントに制限されます。 の呼び出しは、タイムアウトになるかエンドポイントが 1 つ見つかるまでスレッドをブロックする同期操作です。 + +#### このサンプルを使用するには + +1. このサンプルでは HTTP エンドポイントを使用します。このサンプルを実行するには、適切な URL ACL を追加する必要があります。詳細については、「[HTTP および HTTPS の構成](http://go.microsoft.com/fwlink/?LinkId=70353)」を参照してください。管理特権で次のコマンドを実行すると、適切な ACL が追加されます。そのままではコマンドが動作しない場合は、代わりに、お使いのドメインとユーザー名を引数に指定して実行してみてください。`netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%` + +2. ソリューションをビルドします。 + +3. ビルド ディレクトリからサービス実行可能ファイルを実行します。 + +4. クライアント実行可能ファイルを実行します。クライアントでサービスを検索できることに注意してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Discovery\DiscoveryWithScopes` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/dispatch-by-body-element.md b/docs/framework/wcf/samples/dispatch-by-body-element.md new file mode 100644 index 00000000000..061038d93e1 --- /dev/null +++ b/docs/framework/wcf/samples/dispatch-by-body-element.md @@ -0,0 +1,191 @@ +--- +title: "本文要素別のディスパッチ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f64a3c04-62b4-47b2-91d9-747a3af1659f +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# 本文要素別のディスパッチ +このサンプルでは、入力メッセージを操作に割り当てるための代替アルゴリズムを実装する方法を示します。 + + 既定では、サービス モデル ディスパッチャは、メッセージの WS\-Addressing の "Action" ヘッダーまたは HTTP SOAP 要求でのこれと同等の情報に基づいて、入力メッセージの適切な処理メソッドを選択します。 + + WS\-I Basic Profile 1.1 のガイドラインに従っていない SOAP 1.1 Web サービス スタックの一部では、Action URI に基づくのではなく、SOAP 本文内にある最初の要素の XML 修飾名に基づいてメッセージをディスパッチします。 同様に、クライアント側のこうしたスタックでは、空または任意の HTTP SoapAction ヘッダーが含まれるメッセージを送信する場合があります。これは SOAP 1.1 の仕様で許可されていました。 + + メッセージをメソッドにディスパッチする方法を変更するために、このサンプルでは 拡張インターフェイスを `DispatchByBodyElementOperationSelector` に実装します。 このクラスは、メッセージ本文の最初の要素に基づいて操作を選択します。 + + クラス コンストラクタには、`XmlQualifiedName` と文字列のペアが記録されたディクショナリが必要です。この修飾名は SOAP 本文の最初の子の名前を示し、文字列は該当する操作名を示します。 `defaultOperationName` は、このディクショナリで照合できないすべてのメッセージを受信する操作の名前です。 + +``` +class DispatchByBodyElementOperationSelector : IDispatchOperationSelector +{ + Dictionary dispatchDictionary; + string defaultOperationName; + + public DispatchByBodyElementOperationSelector(Dictionary dispatchDictionary, string defaultOperationName) + { + this.dispatchDictionary = dispatchDictionary; + this.defaultOperationName = defaultOperationName; + } +``` + + インターフェイスにはメソッドが 1 つしかないので、 を実装すると、ビルドが非常に簡単です。 このメソッドでの処理は、入力メッセージを検査し、現在のエンドポイントのサービス コントラクトでのメソッド名と同じ文字列を返すことです。 + + このサンプルでは、操作セレクタは を通じて、入力メッセージの本文の を取得します。 このメソッドは既にリーダーをメッセージ本文の最初の子に配置しています。そのため、現在の要素の名前と名前空間の URI を取得して、それらを `XmlQualifiedName` に結合することは簡単です。その後、これは操作セレクタによって保持されているディクショナリから対応する操作を検索する際に使用されます。 + +``` +public string SelectOperation(ref System.ServiceModel.Channels.Message message) +{ + XmlDictionaryReader bodyReader = message.GetReaderAtBodyContents(); + XmlQualifiedName lookupQName = new + XmlQualifiedName(bodyReader.LocalName, bodyReader.NamespaceURI); + message = CreateMessageCopy(message,bodyReader); + if (dispatchDictionary.ContainsKey(lookupQName)) + { + return dispatchDictionary[lookupQName]; + } + else + { + return defaultOperationName; + } +} +``` + + 、またはメッセージ本文のコンテンツへのアクセスを提供する他のメソッドを使用してメッセージ本文にアクセスすると、そのメッセージは "read" とマークされます。つまり、メッセージは以降の処理に対して無効になります。 したがって、操作セレクタは次のコードに示すメソッドを使用して入力メッセージのコピーを作成します。 リーダーの位置は検査中には変更されていないので、新しく作成されたメッセージはこれを参照できます。入力メッセージのプロパティとヘッダーもこの新しいメッセージにコピーされるので、その結果、元のメッセージの完全な複製ができあがります。 + +``` + +private Message CreateMessageCopy(Message message, + XmlDictionaryReader body) +{ + Message copy = Message.CreateMessage(message.Version,message.Headers.Action,body); + copy.Headers.CopyHeaderFrom(message,0); + copy.Properties.CopyProperties(message.Properties); + return copy; +} + +``` + +## サービスへの操作セレクタの追加 + サービス ディスパッチ操作セレクタは [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] ディスパッチャに対する拡張機能です。 二重のコントラクトのコールバック チャネルでメソッドを選択する場合、クライアントの操作セレクタも存在します。この操作セレクタはここで説明するディスパッチ操作セレクタと非常によく似ていますが、このサンプルでは明示的には説明しません。 + + ディスパッチ操作セレクタはほとんどのサービス モデル拡張と同様、動作を使用してディスパッチャに追加されます。 *動作*とは構成オブジェクトのことで、1 つまたは複数の拡張機能をディスパッチ ランタイム \(またはクライアント ランタイム\) に追加します。追加しない場合は、そのランタイムの設定を変更します。 + + 操作セレクタにはコントラクトのスコープがあるので、ここで実装する適切な動作は です。 このインターフェイスは、次のコードに示すように 派生クラスに実装されているため、この動作は任意のサービス コントラクトに宣言として追加できます。 が開いてディスパッチ ランタイムがビルドされるたびに、コントラクト、操作、およびサービス実装の属性の形をとるか、またはサービス構成内の要素の形をとるすべての動作が自動的に追加され、その後拡張機能の支援または既定の構成の変更を求められます。 + + 次のコードの抜粋では、簡略化のため、メソッド の実装のみを示します。これは、このサンプルのディスパッチャの構成変更に影響します。 他のメソッドが表示されていないのは、何の処理も行わずに呼び出し元に返されるためです。 + +``` +[AttributeUsage(AttributeTargets.Class|AttributeTargets.Interface)] +class DispatchByBodyElementBehaviorAttribute : Attribute, IContractBehavior +{ + // public void AddBindingParameters(...) + // public void ApplyClientBehavior(...) + // public void Validate(...) +``` + + 最初に、 を実装し、サービス エンドポイントの 要素を反復処理することによって、操作セレクタの検索ディクショナリを設定します。 次に、各操作の記述に `DispatchBodyElementAttribute` 動作が存在するかどうかが検査されます。この動作は、このサンプルでも定義されている の実装です。 このクラスも動作の 1 つですが、パッシブな動作です。ディスパッチ ランタイムに対して構成変更をアクティブに支援することはありません。 このすべてのメソッドは、アクションを起こすことなく呼び出し元に返されます。 この操作の動作は、新しいディスパッチ機構に必要なメタデータ、つまり見つかった場合に操作で選択される本文要素の修飾名を、該当する操作に関連付ける目的でのみ存在します。 + + このような動作が見つかると、XML 修飾名 \(`QName` プロパティ\) と操作名 \(`Name` プロパティ\) から作成された値のペアがディクショナリに追加されます。 + + ディクショナリが設定されると、新しい `DispatchByBodyElementOperationSelector` がこの情報で構築され、ディスパッチ ランタイムの操作セレクタとして設定されます。 + +``` +public void ApplyDispatchBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.DispatchRuntime dispatchRuntime) +{ + Dictionary dispatchDictionary = + new Dictionary(); + foreach( OperationDescription operationDescription in + contractDescription.Operations ) + { + DispatchBodyElementAttribute dispatchBodyElement = + operationDescription.Behaviors.Find(); + if ( dispatchBodyElement != null ) + { + dispatchDictionary.Add(dispatchBodyElement.QName, + operationDescription.Name); + } + } + dispatchRuntime.OperationSelector = + new DispatchByBodyElementOperationSelector( + dispatchDictionary, + dispatchRuntime.UnhandledDispatchOperation.Name); + } +} +``` + +## サービスの実装 + このサンプルに実装されている動作は、通信回線からのメッセージの解釈方法とディスパッチ方法に直接影響します。これはサービス コントラクトの機能です。 そのため、この動作を使用することを選択したサービス実装では、この動作をサービス コントラクト レベルで宣言する必要があります。 + + サンプル プロジェクト service は `DispatchByBodyElementBehaviorAttribute` コントラクトの動作を `IDispatchedByBody` サービス コントラクトに適用し、2 つの操作 `OperationForBodyA()` と `OperationForBodyB()` のそれぞれに `DispatchBodyElementAttribute` 操作の動作のラベルを付けます。 このコントラクトを実装しているサービスのサービス ホストが開かれると、このメタデータは前で説明したようにディスパッチャ ビルダによって取得されます。 + + 操作セレクタはメッセージ本文の要素のみに基づいてディスパッチし、"Action" を無視するので、返された応答の "Action" ヘッダーをチェックしないようランタイムに通知する必要があります。これを行うには、ワイルドカード "\*" を の `ReplyAction` プロパティに割り当てます。 さらに、"Action" プロパティを持つ既定の操作をワイルドカード "\*" に設定する必要があります。 既定の操作は、ディスパッチできず、`DispatchBodyElementAttribute` を持たないすべてのメッセージを受信します。 + +``` +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"), + DispatchByBodyElementBehavior] +public interface IDispatchedByBody +{ + [OperationContract(ReplyAction="*"), + DispatchBodyElement("bodyA","http://tempuri.org")] + Message OperationForBodyA(Message msg); + [OperationContract(ReplyAction = "*"), + DispatchBodyElement("bodyB", "http://tempuri.org")] + Message OperationForBodyB(Message msg); + [OperationContract(Action="*", ReplyAction="*")] + Message DefaultOperation(Message msg); +} +``` + + このサンプルのサービス実装は簡単です。 どのメソッドも受信メッセージを応答メッセージにラップし、クライアントに再度エコーします。 + +## サンプルの実行とビルド + このサンプルを実行すると、次に示す \(書式設定された\) 出力と同様の、操作応答の内容がクライアントのコンソール ウィンドウに表示されます。 + + クライアントは 3 つのメッセージをサービスに送信します。このメッセージ本文のコンテンツ要素の名前は、それぞれ `bodyA`、`bodyB`、および `bodyX` です。 以上の説明とサービス コントラクトからわかるように、`bodyA` 要素が含まれる受信メッセージは、`OperationForBodyA()` メソッドにディスパッチされます。 `bodyX` 本文要素が含まれるメッセージについては、明示的なディスパッチ対象がないので、このメッセージは `DefaultOperation()` にディスパッチされます。 各サービス操作は、受信されたメッセージ本文をメソッド固有の要素にラップして返します。このサンプルでは、入力メッセージと出力メッセージを明確に関連付けるためにこの操作を行います。 + +``` + + + test + + + + test + + + + test + + +``` + +#### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Interop\AdvancedDispatchByBody` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/duplex.md b/docs/framework/wcf/samples/duplex.md new file mode 100644 index 00000000000..af18c355a5b --- /dev/null +++ b/docs/framework/wcf/samples/duplex.md @@ -0,0 +1,209 @@ +--- +title: "二重 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "二重のサービス コントラクト" +ms.assetid: bc5de6b6-1a63-42a3-919a-67d21bae24e0 +caps.latest.revision: 40 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 40 +--- +# 二重 +双方向サンプルでは、双方向コントラクトを定義して実装する方法を示します。 双方向通信は、クライアントがサービスとのセッションを確立し、サービスからクライアントにメッセージを返信できるチャネルがサービスに提供されると発生します。 このサンプルは、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 双方向コントラクトは、クライアントからサービスへのプライマリ インターフェイスとサービスからクライアントへのコールバック インターフェイスという 2 つのインターフェイスのペアとして定義されます。 このサンプルでは、`ICalculatorDuplex` インターフェイスを使用することにより、クライアントは算術演算を実行し、セッション経由で結果を計算できます。 サービスは、`ICalculatorDuplexCallback` インターフェイスで結果を返します。 コンテキストを確立して、クライアントとサービスの間で送信される一連のメッセージを相互に関連付ける必要があるため、二重のコントラクトにはセッションが必要です。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + この例では、クライアントはコンソール アプリケーション \(.exe\) であり、サービスはインターネット インフォメーション サービス \(IIS\) によってホストされます。 双方向コントラクトは、次のように定義されます。 + +``` +[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples", SessionMode=SessionMode.Required, + CallbackContract=typeof(ICalculatorDuplexCallback))] +public interface ICalculatorDuplex +{ + [OperationContract(IsOneWay = true)] + void Clear(); + [OperationContract(IsOneWay = true)] + void AddTo(double n); + [OperationContract(IsOneWay = true)] + void SubtractFrom(double n); + [OperationContract(IsOneWay = true)] + void MultiplyBy(double n); + [OperationContract(IsOneWay = true)] + void DivideBy(double n); +} + +public interface ICalculatorDuplexCallback +{ + [OperationContract(IsOneWay = true)] + void Result(double result); + [OperationContract(IsOneWay = true)] + void Equation(string eqn); +} + +``` + + `CalculatorService` クラスは、プライマリ `ICalculatorDuplex` インターフェイスを実装します。 このサービスは インスタンス モードを使用して、各セッションの結果を保持します。 クライアントへのコールバック チャネルへのアクセスには、`Callback` というプライベート プロパティを使用します。 サービスはこのコールバックを使用し、コールバック インターフェイスを介してメッセージをクライアントに返信します。 + +``` +[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] +public class CalculatorService : ICalculatorDuplex +{ + double result = 0.0D; + string equation; + + public CalculatorService() + { + equation = result.ToString(); + } + + public void Clear() + { + Callback.Equation(equation + " = " + result.ToString()); + equation = result.ToString(); + } + + public void AddTo(double n) + { + result += n; + equation += " + " + n.ToString(); + Callback.Result(result); + } + ... + ICalculatorDuplexCallback Callback + { + get + { + return OperationContext.Current.GetCallbackChannel(); + } + } +} +``` + + クライアントは、サービスからのメッセージを受信するために、双方向コントラクトのコールバック インターフェイスを実装するクラスを提供する必要があります。 このサンプルでは、`CallbackHandler` クラスは `ICalculatorDuplexCallback` インターフェイスを実装するように定義されています。 + +``` +public class CallbackHandler : ICalculatorDuplexCallback +{ + public void Result(double result) + { + Console.WriteLine("Result({0})", result); + } + + public void Equation(string equation) + { + Console.WriteLine("Equation({0}", equation); + } +} + +``` + + 双方向コントラクト用に生成されるプロキシは、コンストラクト時に が提供される必要があります。 この がコールバック インターフェイスを実装するオブジェクトのサイトとして使用され、サービスから返信されるメッセージを処理します。 は、`CallbackHandler` クラスのインスタンスを使用して構築されます。 このオブジェクトは、コールバック インターフェイスでサービスからクライアントに送信されるメッセージを処理します。 + +``` +// Construct InstanceContext to handle messages on callback interface. +InstanceContext instanceContext = new InstanceContext(new CallbackHandler()); + +// Create a client. +CalculatorDuplexClient client = new CalculatorDuplexClient(instanceContext); + +Console.WriteLine("Press to terminate client once the output is displayed."); +Console.WriteLine(); + +// Call the AddTo service operation. +double value = 100.00D; +client.AddTo(value); + +// Call the SubtractFrom service operation. +value = 50.00D; +client.SubtractFrom(value); + +// Call the MultiplyBy service operation. +value = 17.65D; +client.MultiplyBy(value); + +// Call the DivideBy service operation. +value = 2.00D; +client.DivideBy(value); + +// Complete equation. +client.Clear(); + +Console.ReadLine(); + +//Closing the client gracefully closes the connection and cleans up resources. +client.Close(); + +``` + + この構成は、セッション通信と双方向通信の両方をサポートするバインディングを提供するように変更されています。 `wsDualHttpBinding` はセッション通信をサポートし、どちらの方向にも HTTP 接続が 1 つ用意される双方向 HTTP 接続を提供して双方向通信を実現します。 サービスでの構成の唯一の違いは、使用されるバインディングです。 クライアントで、サーバーがクライアントへの接続に使用するアドレスを構成する必要があります。次のサンプル構成を参照してください。 + +``` + + + + + + + + + + + + +``` + + サンプルを実行すると、クライアントに戻ってきたメッセージがサービスから送信されたコールバック インターフェイスに表示されます。 それぞれの中間結果が表示され、その後にすべての操作が完了したときの数式全体が表示されます。 Enter キーを押してクライアントをシャットダウンします。 + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版、C\+\+ 版、または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + + > [!IMPORTANT] + > 複数コンピューター構成でクライアントを実行する場合は、[\](../../../../docs/framework/configure-apps/file-schema/wcf/wsdualhttpbinding.md) 要素内の [endpoint](http://msdn.microsoft.com/ja-jp/13aa23b7-2f08-4add-8dbf-a99f8127c017) 要素の `address` 属性と、[\](../../../../docs/framework/misc/binding.md) 要素の `clientBaseAddress` 属性の両方に含まれる "localhost" を、適切なコンピューターの名前で置き換える必要があります。次を参照してください。 + + ``` + + + + ... + + + + + ``` + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」に移動して、すべての [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サンプルおよび [!INCLUDE[wf1](../../../../includes/wf1-md.md)] サンプルをダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Contract\Service\Duplex` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/durable-instance-context.md b/docs/framework/wcf/samples/durable-instance-context.md new file mode 100644 index 00000000000..5807765487f --- /dev/null +++ b/docs/framework/wcf/samples/durable-instance-context.md @@ -0,0 +1,470 @@ +--- +title: "永続性インスタンス コンテキスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 97bc2994-5a2c-47c7-927a-c4cd273153df +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 永続性インスタンス コンテキスト +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] ランタイムをカスタマイズして、永続性インスタンス コンテキストを有効にする方法を示します。バッキング ストアとして、SQL Server 2005 \(この場合は SQL Server 2005 Express\) を使用します。ただし、カスタム ストレージ機構にアクセスする方法も示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルには、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のチャネル レイヤとサービス モデル レイヤの両方の拡張が含まれています。したがって、実装の詳細に進む前に基になる概念を理解する必要があります。 + + 永続性インスタンス コンテキストは、現実のケースでも頻繁に起こりうるものです。たとえば、ショッピング カート アプリケーションには、買い物を中断しても別の日に再開できる機能が用意されています。そのため、ショッピング カートに翌日アクセスすると、元のコンテキストが復元されます。接続が切断されている間、ショッピング カート アプリケーション \(サーバー上\) はショッピング カートのインスタンスを保持しないことに注意してください。その代わり、状態を永続的なストレージ メディアに保持し、復元されたコンテキストの新しいインスタンスを構築するときにこの状態を使用します。したがって、同じコンテキストに対してサービスを提供できるサービス インスタンスは、以前のインスタンスと同じではありません \(つまり、メモリ アドレスが同じではありません\)。 + + 永続性インスタンス コンテキストは、コンテキスト ID をクライアントとサービス間で交換するための簡単なプロトコルによって可能になります。このコンテキスト ID はクライアント上で作成され、サービスに転送されます。サービス インスタンスが作成されると、サービス上のランタイムは、永続ストレージ \(既定では SQL Server 2005 のデータベース\) 上で永続化されている、このコンテキスト ID に対応する状態を読み込もうとします。利用できる状態がない場合は、新しいインスタンスに既定の状態が設定されます。サービス実装は、カスタム属性を使用してサービス実装の状態を変更する操作の詳細を指定し、ランタイムがその操作を呼び出した後にサービス インスタンスを保存できるようにします。 + + 前の説明から、目標を達成するための手順は大きく次の 2 つに分けられます。 + +1. ネットワークに出力されるメッセージを、コンテキスト ID が含まれるように変更します。 + +2. サービス側のローカル動作を変更して、カスタムのインスタンス化ロジックを実装します。 + + この一覧の前者の手順は、カスタム チャネルとして実装され、チャネル レイヤにフックされる、ネットワーク上のメッセージに影響します。後者の手順が影響を及ぼすのは、サービスのローカル動作だけです。したがって、いくつかのサービス拡張ポイントを拡張することによって実装できます。以降のセクションでは、こうしたそれぞれの拡張について説明します。 + +## 永続的な InstanceContext チャネル + 最初に、チャネル レイヤの拡張について考えます。カスタム チャネルを記述する最初の手順として、チャネルの通信構造を決定します。新しいワイヤ プロトコルを導入する際には、チャネルはチャネル スタック内の他のほとんどすべてのチャネルに対応する必要があります。そのため、すべてのメッセージ交換パターンをサポートする必要があります。ただし、チャネルの中心的な機能は通信構造に関係なく同じです。具体的には、コンテキスト ID をクライアント側からメッセージに書き込み、サービス側からこのメッセージのコンテキスト ID を読み取って上位レベルに渡します。そのため、すべての永続性インスタンス コンテキスト チャネルの実装に対して抽象基本クラスとして動作する、`DurableInstanceContextChannelBase` クラスが作成されます。このクラスには、共通ステート マシンの管理機能と保護された 2 つのメンバが含まれ、これによってコンテキスト情報をメッセージに適用したり、メッセージからコンテキスト情報を読み取ったりします。 + +``` +class DurableInstanceContextChannelBase +{ + //… + protected void ApplyContext(Message message) + { + //… + } + protected string ReadContextId(Message message) + { + //… + } +} +``` + + これら 2 つのメソッドは、`IContextManager` 実装を使用して、メッセージへのコンテキスト ID の書き込みと、メッセージからのコンテキスト ID の読み取りを行います \(`IContextManager` は、すべてのコンテキスト マネージャのコントラクトの定義に使用されるカスタム インターフェイスです\)。チャネルは、このコンテキスト ID を、カスタム SOAP ヘッダーか HTTP クッキー ヘッダーのどちらかに含めることができます。各コンテキスト マネージャの実装は、`ContextManagerBase` クラスを継承します。このクラスには、すべてのコンテキスト マネージャについての共通機能が含まれています。このクラスの `GetContextId` メソッドは、コンテキスト ID をクライアント側で生成する際に使用されます。コンテキスト ID が最初に生成されると、このメソッドはこれをテキスト ファイルに保存します。テキスト ファイルの名前は、リモート エンドポイント アドレスによって作成されます \(通常の URI に含まれる、ファイル名として無効な文字は、@ 文字に置き換えられます\)。 + + コンテキスト ID が後で同じリモート エンドポイントで必要になると、このメソッドは適切なファイルが存在するかどうかをチェックします。ファイルが存在する場合は、コンテキスト ID を読み取って返します。存在しない場合は、新しく生成されたコンテキスト ID を返してこれをファイルに保存します。既定の構成では、これらのファイルは現在のユーザーの一時ディレクトリ内にある ContextStore ディレクトリにあります。ただし、この場所はバインディング要素を使用して構成できます。 + + コンテキスト ID の転送に使用される機構は構成可能です。HTTP クッキー ヘッダーか、またはカスタム SOAP ヘッダーのどちらかに記述できます。カスタム SOAP ヘッダーに記述する場合は、このプロトコルを HTTP 以外のプロトコル \(TCP や NamedPipes など\) で使用できます。これらの 2 つのオプションは、`MessageHeaderContextManager` と `HttpCookieContextManager` という名前の 2 つのクラスに実装されます。 + + これらのクラスはどちらも、コンテキスト ID をメッセージに適切に書き込みます。たとえば `MessageHeaderContextManager` クラスでは、`WriteContext` メソッドにより SOAP ヘッダーにコンテキスト ID が書き込まれます。 + +``` +public override void WriteContext(Message message) +{ + string contextId = this.GetContextId(); + + MessageHeader contextHeader = + MessageHeader.CreateHeader(DurableInstanceContextUtility.HeaderName, + DurableInstanceContextUtility.HeaderNamespace, + contextId, + true); + + message.Headers.Add(contextHeader); +} +``` + + `DurableInstanceContextChannelBase` クラス内の `ApplyContext` メソッドと `ReadContextId` メソッドは、それぞれ `IContextManager.ReadContext` と `IContextManager.WriteContext` を呼び出します。ただし、これらのコンテキスト マネージャは `DurableInstanceContextChannelBase` クラスによって直接作成されるわけではありません。代わりに `ContextManagerFactory` クラスを使用してこの処理が行われます。 + +``` +IContextManager contextManager = + ContextManagerFactory.CreateContextManager(contextType, + this.contextStoreLocation, + this.endpointAddress); +``` + + `ApplyContext` メソッドは送信チャネルによって呼び出されます。このメソッドは、コンテキスト ID を送信メッセージに挿入します。`ReadContextId` メソッドは受信チャネルによって呼び出されます。このメソッドは、受信メッセージ内でコンテキスト ID を使用できることを確認し、`Message` クラスの `Properties` コレクションにコンテキスト ID を追加します。さらに、コンテキスト ID の読み取りでエラーが発生した場合は `CommunicationException` をスローし、チャネルを中止します。 + +``` +message.Properties.Add(DurableInstanceContextUtility.ContextIdProperty, contextId); +``` + + 次に進む前に、`Message` クラスの `Properties` コレクションの使用方法について理解することが重要です。通常、この `Properties` コレクションは、チャネル レイヤのデータを下位レベルから上位レベルに渡すときに使用されます。この方法により、必要なデータを、プロトコルの詳細に関係なく一貫した方法で上位レベルに渡すことができます。つまり、チャネル レイヤはコンテキスト ID を、SOAP ヘッダーとしても HTTP クッキー ヘッダーとしても送受信できます。しかし、上位レベルではこうした詳細を認識する必要はありません。チャネル レイヤにより、この情報が `Properties` コレクションで使用できるためです。 + + `DurableInstanceContextChannelBase` クラスを配備したら、必要な 10 のインターフェイス \(IOutputChannel、IInputChannel、IOutputSessionChannel、IInputSessionChannel、IRequestChannel、IReplyChannel、IRequestSessionChannel、IReplySessionChannel、IDuplexChannel、および IDuplexSessionChannel\) のすべてを実装する必要があります。これらは、使用可能なすべてのメッセージ交換パターン \(データグラム、一方向、双方向、およびセッションフル バリエーション\) と似ています。これらの各実装は前記の基本クラスを継承し、`ApplyContext` と `ReadContexId` を適切に呼び出します。たとえば、IOutputChannel インターフェイスを実装する `DurableInstanceContextOutputChannel` は、メッセージを送信する各メソッドから `ApplyContext` メソッドを呼び出します。 + +``` +public void Send(Message message, TimeSpan timeout) +{ + // Apply the context information before sending the message. + this.ApplyContext(message); + //… +} +``` + + これに対し、`IInputChannel` インターフェイスを実装する `DurableInstanceContextInputChannel` は、メッセージを受信する各メソッドで `ReadContextId` メソッドを呼び出します。 + +``` +public Message Receive(TimeSpan timeout) +{ + //… + ReadContextId(message); + return message; +} +``` + + これらのチャネル実装は、これ以外には、チャネル スタック内でチャネル実装の下にあるチャネルへのメソッド呼び出しを代行します。ただし、セッションフル バリエーションには、セッション作成の基になる最初のメッセージに対してのみコンテキスト ID の送信と読み取りを許可する、基本的なロジックがあります。 + +``` +if (isFirstMessage) +{ +//… + this.ApplyContext(message); + isFirstMessage = false; +} +``` + + 次にこうしたチャネル実装は、`DurableInstanceContextBindingElement` クラスと `DurableInstanceContextBindingElementSection` クラスによって [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] チャネル ランタイムに適切に追加されます。バインディング要素とバインディング要素セクションの詳細については、[HttpCookieSession](../../../../docs/framework/wcf/samples/httpcookiesession.md) チャネルのサンプルに関するドキュメントを参照してください。 + +## サービス モデル レイヤの拡張 + コンテキスト ID がチャネル レイヤを通過すると、インスタンス化をカスタマイズするようにサービス側の動作を実装できます。このサンプルでは、記憶域マネージャを使用して永続ストアからの状態の読み込みと、永続ストアへの状態の保存が行われます。前述のように、このサンプルにはバッキング ストアとして SQL Server 2005 を使用する記憶域マネージャが用意されています。ただし、この拡張に対してカスタム ストレージ機構を追加することもできます。これを行うには、すべての記憶域マネージャが実装する必要のあるパブリック インターフェイスを宣言します。 + +``` +public interface IStorageManager +{ + object GetInstance(string contextId, Type type); + void SaveInstance(string contextId, object state); +} +``` + + `SqlServerStorageManager` クラスには、既定の `IStorageManager` 実装が含まれます。`SaveInstance` メソッドでは、指定されたオブジェクトは XmlSerializer を使用してシリアル化され、SQL Server データベースに保存されます。 + +``` +XmlSerializer serializer = new XmlSerializer(state.GetType()); +string data; + +using (StringWriter writer = new StringWriter(CultureInfo.InvariantCulture)) +{ + serializer.Serialize(writer, state); + data = writer.ToString(); +} + +using (SqlConnection connection = new SqlConnection(GetConnectionString())) +{ + connection.Open(); + + string update = @"UPDATE Instances SET Instance = @instance WHERE ContextId = @contextId"; + + using (SqlCommand command = new SqlCommand(update, connection)) + { + command.Parameters.Add("@instance", SqlDbType.VarChar, 2147483647).Value = data; + command.Parameters.Add("@contextId", SqlDbType.VarChar, 256).Value = contextId; + + int rows = command.ExecuteNonQuery(); + + if (rows == 0) + { + string insert = @"INSERT INTO Instances(ContextId, Instance) VALUES(@contextId, @instance)"; + command.CommandText = insert; + command.ExecuteNonQuery(); + } + } +} +``` + + `GetInstance` メソッドでは、シリアル化されたデータが特定のコンテキスト ID 用に読み取られ、そこから作成されたオブジェクトが呼び出し元に返されます。 + +``` +object data; +using (SqlConnection connection = new SqlConnection(GetConnectionString())) +{ + connection.Open(); + + string select = "SELECT Instance FROM Instances WHERE ContextId = @contextId"; + using (SqlCommand command = new SqlCommand(select, connection)) + { + command.Parameters.Add("@contextId", SqlDbType.VarChar, 256).Value = contextId; + data = command.ExecuteScalar(); + } +} + +if (data != null) +{ + XmlSerializer serializer = new XmlSerializer(type); + using (StringReader reader = new StringReader((string)data)) + { + object instance = serializer.Deserialize(reader); + return instance; + } +} +``` + + この記憶域マネージャを直接インスタンス化することはできません。その代わりに、`StorageManagerFactory` クラスを使用して、記憶域マネージャの作成に関する詳細から抽出します。このクラスには、指定された型の記憶域マネージャのインスタンスを作成する、1 つの静的メンバ `GetStorageManager` があります。型パラメータが `null` の場合、このメソッドは既定の `SqlServerStorageManager` クラスのインスタンスを作成して返します。さらに指定された型を検証して、それが `IStorageManager` インターフェイスを実装していることを確認します。 + +``` +public static IStorageManager GetStorageManager(Type storageManagerType) +{ +IStorageManager storageManager = null; + +if (storageManagerType == null) +{ + return new SqlServerStorageManager(); +} +else +{ + object obj = Activator.CreateInstance(storageManagerType); + + // Throw if the specified storage manager type does not + // implement IStorageManager. + if (obj is IStorageManager) + { + storageManager = (IStorageManager)obj; + } + else + { + throw new InvalidOperationException( + ResourceHelper.GetString("ExInvalidStorageManager")); + } + + return storageManager; +} +} +``` + + 永続ストレージのインスタンスの読み取りや書き込みに必要なインフラストラクチャを実装します。ここで、サービス側の動作を変更するために必要な手順を行う必要があります。 + + この処理の最初の手順として、チャネル レイヤを通過したコンテキスト ID を現在の InstanceContext に保存する必要があります。InstanceContext とは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ディスパッチャとサービス インスタンス間のリンクとして動作するランタイム コンポーネントです。これを使用すると、追加の状態と動作をサービス インスタンスに提供できます。セッションの多い通信では、コンテキスト ID は最初のメッセージだけに含まれて送信されるので、これが重要になります。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、拡張可能オブジェクト パターンを使用して、新しい状態および動作を追加することにより、InstanceContext ランタイム コンポーネントを拡張できます。拡張可能オブジェクト パターンは、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、既存のランタイム クラスに新しい機能を付け加えて拡張するため、またはオブジェクトに新しい状態の機能を追加するために使用されます。拡張オブジェクト パターンには、IExtensibleObject\、IExtension\、および IExtensionCollection\ の 3 つのインターフェイスがあります。 + +- ExtensibleObject\ インターフェイスは、機能をカスタマイズするための拡張が可能なオブジェクトによって実装されます。 + +- IExtension\ インターフェイスは、T 型のクラスの拡張であるオブジェクトによって実装されます。 + +- IExtensionCollection\ インターフェイスは IExtensions のコレクションで、型ごとに IExtensions を取得できます。 + + このため、IExtension インターフェイスを実装して、コンテキスト ID を保存するために必要な状態を定義する、InstanceContextExtension クラスを作成する必要があります。このクラスではさらに、使用される記憶域マネージャを保持する状態も提供されます。新しい状態が保存された後では、その状態を変更できません。したがって、インスタンスが作成される際、読み取り専用のプロパティを使用してのみアクセス可能になった時点で、状態がインスタンスに提供され、保存されます。 + +``` +// Constructor +public DurableInstanceContextExtension(string contextId, + IStorageManager storageManager) +{ + this.contextId = contextId; + this.storageManager = storageManager; +} + +// Read only properties +public string ContextId +{ + get { return this.contextId; } +} + +public IStorageManager StorageManager +{ + get { return this.storageManager; } +} +``` + + InstanceContextInitializer クラスは IInstanceContextInitializer インターフェイスを実装し、作成された InstanceContext の Extensions コレクションにインスタンス コンテキスト拡張を追加します。 + +``` +public void Initialize(InstanceContext instanceContext, Message message) +{ + string contextId = + (string)message.Properties[DurableInstanceContextUtility.ContextIdProperty]; + + DurableInstanceContextExtension extension = + new DurableInstanceContextExtension(contextId, + storageManager); + instanceContext.Extensions.Add(extension); +} +``` + + 既に説明したように、コンテキスト ID は `Message` クラスの `Properties` コレクションから読み取られ、拡張クラスのコンストラクタに渡されます。これによって、レイヤ間で情報を交換する場合の一貫性のある方法が示されます。 + + 次の重要な手順は、サービス インスタンスの作成手順をオーバーライドすることです。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] を使用すると、カスタマイズされたインスタンス化動作を実装し、IInstanceProvider インターフェイスを使用してこれをランタイムにフックできます。新しい `InstanceProvider` クラスがこの処理を行うために実装されます。コンストラクタでは、インスタンス プロバイダから予期されるサービス型が受け入れられます。これは、後で新しいインスタンスの作成に使用されます。`GetInstance` 実装では、永続するインスタンスを検索する記憶域マネージャのインスタンスが作成されます。`null` が返された場合、サービス型の新しいインスタンスがインスタンス化され、呼び出し元に返されます。 + +``` +public object GetInstance(InstanceContext instanceContext, Message message) +{ + object instance = null; + + DurableInstanceContextExtension extension = + instanceContext.Extensions.Find(); + + string contextId = extension.ContextId; + IStorageManager storageManager = extension.StorageManager; + + instance = storageManager.GetInstance(contextId, serviceType); + + if (instance == null) + { + instance = Activator.CreateInstance(serviceType); + } + + return instance; +} +``` + + 次の重要な手順は、`InstanceContextExtension` クラス、`InstanceContextInitializer` クラス、および `InstanceProvider` クラスをサービス モデル ランタイムにインストールすることです。カスタム属性を使用すると、サービス実装クラスの詳細を指定して、動作をインストールできます。`DurableInstanceContextAttribute` にはこの属性の実装が含まれ、サービス側のランタイム全体を拡張できるようにするために `IServiceBehavior` インターフェイスを実装します。 + + このクラスには、使用される記憶域マネージャの型を受け入れるプロパティがあります。このようにして実装を行うことにより、ユーザー独自の `IStorageManager` 実装を、この属性のパラメータとして指定できます。 + + `ApplyDispatchBehavior` 実装では、現在の `ServiceBehavior` 属性の `InstanceContextMode` が検証されます。このプロパティが Singleton に設定されている場合、永続性インスタンスを有効化できず、`InvalidOperationException` がスローされてホストに通知されます。 + +``` +ServiceBehaviorAttribute serviceBehavior = + serviceDescription.Behaviors.Find(); + +if (serviceBehavior != null && + serviceBehavior.InstanceContextMode == InstanceContextMode.Single) +{ + throw new InvalidOperationException( + ResourceHelper.GetString("ExSingeltonInstancingNotSupported")); +} +``` + + この後、記憶域マネージャのインスタンス、インスタンス コンテキストの初期化子、およびインスタンス プロバイダが作成され、各エンドポイント用に作成された `DispatchRuntime` にインストールされます。 + +``` +IStorageManager storageManager = + StorageManagerFactory.GetStorageManager(storageManagerType); + +InstanceContextInitializer contextInitializer = + new InstanceContextInitializer(storageManager); + +InstanceProvider instanceProvider = + new InstanceProvider(description.ServiceType); + +foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers) +{ + ChannelDispatcher cd = cdb as ChannelDispatcher; + + if (cd != null) + { + foreach (EndpointDispatcher ed in cd.Endpoints) + { + ed.DispatchRuntime.InstanceContextInitializers.Add(contextInitializer); + ed.DispatchRuntime.InstanceProvider = instanceProvider; + } + } +} +``` + + ここまでを要約すると、このサンプルでは、カスタム コンテキスト ID を交換するためにカスタム ワイヤ プロトコルを有効化するチャネルを作成しました。また、永続ストレージのインスタンスを読み込むように、既定のインスタンス化動作を上書きしました。 + + 残りの手順は、サービス インスタンスを永続ストレージに保存することです。既に説明したとおり、`IStorageManager` 実装に状態を保存するには、あらかじめ必要な機能があります。次に、この機能を [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムと統合する必要があります。これを行うには、サービス実装クラスのメソッドに適用可能な別の属性が必要です。つまりこの属性は、サービス インスタンスの状態を変更するメソッドに適用できることが必要です。 + + この機能は、`SaveStateAttribute` クラスに実装されています。このクラスには、各操作の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムを変更する `IOperationBehavior` クラスも実装されています。メソッドの詳細がこの属性で指定されると、適切な `DispatchOperation` が作成される際に、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムが `ApplyBehavior` メソッドを呼び出します。このメソッドの実装のコードは 1 行です。 + +``` +dispatch.Invoker = new OperationInvoker(dispatch.Invoker); +``` + + この手順により `OperationInvoker` 型のインスタンスが作成され、作成される `DispatchOperation` の `Invoker` プロパティに割り当てられます。`OperationInvoker` クラスは、`DispatchOperation` 用に作成された既定の操作呼び出しのラッパーです。このクラスは、`IOperationInvoker` インターフェイスを実装します。`Invoke` メソッドの実装では、実際のメソッド呼び出しは内部の操作呼び出しで代行されます。ただし、この結果が返される前に `InstanceContext` の記憶域マネージャが使用され、サービス インスタンスが保存されます。 + +``` +object result = innerOperationInvoker.Invoke(instance, + inputs, out outputs); + +// Save the instance using the storage manager saved in the +// current InstanceContext. +InstanceContextExtension extension = + OperationContext.Current.InstanceContext.Extensions.Find(); + +extension.StorageManager.SaveInstance(extension.ContextId, instance); +return result; +``` + +## 拡張機能の使用 + チャネル レイヤとサービス モデル レイヤの拡張を完了すると、どちらも [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アプリケーションで使用できるようになります。サービスでは、カスタム バインディングを使用してチャネルをチャネル スタックに追加し、サービス実装クラスの詳細を適切な属性で指定する必要があります。 + +``` +[DurableInstanceContext] +[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)] +public class ShoppingCart : IShoppingCart +{ +//… + [SaveState] + public int AddItem(string item) + { + //… + } +//… + } +``` + + クライアント アプリケーションは、カスタム バインディングを使用して DurableInstanceContextChannel をチャネル スタックに追加する必要があります。構成ファイル内でチャネルを宣言して構成するには、バインディング要素セクションをバインディング要素拡張のコレクションに追加する必要があります。 + +``` + + + + + + +``` + + これで、他の基本的なバインディング要素と同様、このバインディング要素をカスタム バインディングで使用できるようになりました。 + +``` + + + + + + + + + + +``` + +## 結論 + このサンプルでは、カスタム プロトコル チャネルを作成する方法と、これを有効にするためにサービス動作をカスタマイズする方法を示しました。 + + 構成セクションを使用して `IStorageManager` 実装を指定することで、この拡張機能をさらに強化することができます。これにより、サービス コードを再コンパイルせずにバッキング ストアを変更できます。 + + さらに、インスタンスの状態をカプセル化するクラス \(`StateBag` など\) を実装できます。このクラスにより、変更されるたびに状態が保持されます。この方法により、`SaveState` 属性の使用を回避しながら、永続する処理をより正確に実行できます \(たとえば、`SaveState` 属性を含むメソッドを呼び出すたびに状態を保存するのではなく、状態が実際に変更されたときに保持できます\)。 + + このサンプルを実行すると、次の出力が表示されます。クライアントは、2 つの商品をショッピング カートに追加し、その後ショッピング カートにある商品の一覧をサービスから取得します。どちらかのコンソールで Enter キーを押すと、サービスとクライアントがどちらもシャットダウンされます。 + +``` +Enter the name of the product: apples +Enter the name of the product: bananas + +Shopping cart currently contains the following items. +apples +bananas +Press ENTER to shut down client +``` + +> [!NOTE] +> サービスを再ビルドすると、データベース ファイルが上書きされます。サンプルを複数回実行する間に状態が保持されていることを確認するには、実行のたびにサンプルを再ビルドしないようにしてください。 + +#### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. サンプルを単一コンピュータ構成または複数コンピュータ構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!NOTE] +> このサンプルを実行するには、SQL Server 2005 または SQL Express 2005 を実行している必要があります。SQL Server 2005 を実行している場合は、サービスの接続文字列の構成を変更する必要があります 複数コンピューターで実行している場合、SQL Server が必要なのはサーバー コンピューターだけです。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Instancing\Durable` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/durable-issued-token-provider.md b/docs/framework/wcf/samples/durable-issued-token-provider.md new file mode 100644 index 00000000000..876b1f55f3c --- /dev/null +++ b/docs/framework/wcf/samples/durable-issued-token-provider.md @@ -0,0 +1,217 @@ +--- +title: "永続性発行済みトークン プロバイダー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 76fb27f5-8787-4b6a-bf4c-99b4be1d2e8b +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# 永続性発行済みトークン プロバイダー +このサンプルでは、カスタム クライアントの発行済みトークン プロバイダーを実装する方法を示します。 + +## 説明 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のトークン プロバイダーは、資格情報をセキュリティ インフラストラクチャに提供するために使用します。一般的に、トークン プロバイダーは、ターゲットをチェックし、適切な証明書を発行して、セキュリティ インフラストラクチャがメッセージのセキュリティを保護できるようにします。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] にはトークン プロバイダー [!INCLUDE[infocard](../../../../includes/infocard-md.md)] が付属しています。カスタム トークン プロバイダは、次の場合に便利です。 + +- 組み込みのトークン プロバイダが連係動作できない資格情報ストアがある場合。 + +- 資格情報をユーザーが詳細を提供した時点から [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントが資格情報を使用した時点に変換するための、独自のカスタム メカニズムを提供する場合。 + +- カスタム トークンを構築している場合。 + + このサンプルでは、セキュリティ トークン サービス \(STS\) によって発行されたトークンをキャッシュする、カスタム トークン プロバイダーを構築する方法を示します。 + + このサンプルに示されている手順の概要は次のとおりです。 + +- クライアントをカスタム トークン プロバイダーを使用して構成する手順。 + +- 発行済みトークンをキャッシュして [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントに提供する手順。 + +- サーバーがクライアントによってサーバーの X.509 証明書を使用して認証される手順。 + + このサンプルは、クライアント コンソール プログラム \(Client.exe\)、セキュリティ トークン サービス コンソール プログラム \(Securitytokenservice.exe\)、およびサービス コンソール プログラム \(Service.exe\) で構成されています。サービスは、要求\/応答通信パターンを定義するコントラクトを実装します。このコントラクトは `ICalculator` インターフェイスによって定義されており、算術演算 \(加算、減算、乗算、および 除算\) を公開しています。クライアントは、セキュリティ トークンをセキュリティ トークン サービス \(STS\) から取得し、指定された算術演算を実行する同期要求をサービスに対して行います。サービスは、結果を添えて応答します。クライアント アクティビティは、コンソール ウィンドウに表示されます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルは、[\](../../../../docs/framework/configure-apps/file-schema/wcf/wshttpbinding.md)を使用して ICalculator コントラクトを公開します。このバインディングのクライアント側の構成は、次のコードに示すとおりです。 + +``` + +``` + + `wsFederationHttpBinding` の `security` 要素では、使用するセキュリティ モードは `mode` 値で構成されます。このサンプルでは、メッセージ セキュリティが使用されています。このため、`wsFederationHttpBinding` の `message` 要素が `wsFederationHttpBinding` の `security` 要素の内側で指定されています。`wsFederationHttpBinding` の `message` 要素の内側にある `wsFederationHttpBinding` の `issuer` 要素は、セキュリティ トークンをクライアントに発行するセキュリティ トークン サービスのアドレスとバインディングを指定します。これにより、クライアントが Calculator サービスに認証されるようになります。 + + このバインディングのサービス側の構成は、次のコードに示すとおりです。 + +``` + +``` + + `wsFederationHttpBinding` の `security` 要素では、使用するセキュリティ モードは `mode` 値で構成されます。このサンプルでは、メッセージ セキュリティが使用されています。このため、`wsFederationHttpBinding` の `message` 要素が `wsFederationHttpBinding` の `security` 要素の内側で指定されています。`wsFederationHttpBinding` の `message` 要素の内側にある `wsFederationHttpBinding` の `issuerMetadata` 要素は、セキュリティ トークン サービスのメタデータ取得に使用できるエンドポイントのアドレスと ID を指定します。 + + このサービスの動作を次のコードに示します。 + +``` + +``` + + `serviceCredentials` 要素の内側にある `issuedTokenAuthentication` 要素を使用すると、サービスは、認証時にクライアントが提示できるトークンに関する制約を指定できます。この構成の指定では、サブジェクト名が CN\=STS である証明書によって署名されたトークンがサービスによって受け入れられます。 + + セキュリティ トークン サービスは、標準の wsHttpBinding を使用して、単一のエンドポイントを公開します。セキュリティ トークン サービスは、クライアントからのトークンの要求に応答し、クライアントが Windows アカウントを使用して認証していることを前提として、クライアントのユーザー名がクレームとして含まれているトークンを発行します。セキュリティ トークン サービスは、トークン作成の一環として、CN\=STS 証明書に関連付けられている秘密キーを使用して、トークンに署名します。また、対称キーを作成し、CN\=localhost 証明書に関連付けられている秘密キーを使用して暗号化します。セキュリティ トークン サービスは、トークンをクライアントに返すときに、対称キーも返します。クライアントは、発行されたトークンを Calculator サービスに提示し、対称キーを使用してメッセージに署名することで対称キーを認識していることを証明します。 + +## カスタム クライアント資格情報とトークン プロバイダ + 発行済みトークンをキャッシュするカスタム トークン プロバイダーを開発して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] のセキュリティに統合する方法を、次の手順に示します。 + +#### カスタム トークン プロバイダーを開発するには + +1. カスタム トークン プロバイダーを作成します。 + + サンプルでは、キャッシュから取得したセキュリティ トークンを返すカスタム トークン プロバイダーを実装します。 + + このタスクを実行するため、カスタム トークン プロバイダは クラスを派生し、 メソッドをオーバーライドします。このメソッドは、キャッシュ内のトークンの取得を試行します。キャッシュ内にトークンが見つからない場合は、基になるプロバイダからトークンを取得してキャッシュします。どちらの場合も、メソッドは `SecurityToken` を返します。 + + ``` + protected override SecurityToken GetTokenCore(TimeSpan timeout) + { + GenericXmlSecurityToken token; + if (!this.cache.TryGetToken(target, issuer, out token)) + { + token = (GenericXmlSecurityToken) this.innerTokenProvider.GetToken(timeout); + this.cache.AddToken(token, target, issuer); + } + return token; + } + ``` + +2. カスタム セキュリティ トークン マネージャーを作成します。 + + は、`CreateSecurityTokenProvider` メソッド内で渡される特定の の作成に使用されます。セキュリティ トークン マネージャーは、トークン認証システムとトークン シリアライザーの作成にも使用されますが、このサンプルでは扱っていません。このサンプルでは、カスタム セキュリティ トークン マネージャーは クラスを継承し、`CreateSecurityTokenProvider` メソッドをオーバーライドして、渡されたトークンの要件で発行済みトークンが必要であることが示されている場合にはカスタム トークン プロバイダーを返します。 + + ``` + class DurableIssuedTokenClientCredentialsTokenManager : + ClientCredentialsSecurityTokenManager + { + IssuedTokenCache cache; + + public DurableIssuedTokenClientCredentialsTokenManager ( DurableIssuedTokenClientCredentials creds ): base(creds) + { + this.cache = creds.IssuedTokenCache; + } + + public override SecurityTokenProvider CreateSecurityTokenProvider ( SecurityTokenRequirement tokenRequirement ) + { + if (IsIssuedSecurityTokenRequirement(tokenRequirement)) + { + return new DurableIssuedSecurityTokenProvider ((IssuedSecurityTokenProvider)base.CreateSecurityTokenProvider( tokenRequirement), this.cache); + } + Else + { + return base.CreateSecurityTokenProvider(tokenRequirement); + } + } + } + ``` + +3. カスタム クライアント資格情報を作成します。 + + クライアント資格情報クラスは、クライアント プロキシ用に構成された資格情報を表すために使用され、トークン認証システム、トークン プロバイダ、およびトークン シリアライザの取得に使用されるセキュリティ トークン マネージャを作成します。 + + ``` + public class DurableIssuedTokenClientCredentials : ClientCredentials + { + IssuedTokenCache cache; + + public DurableIssuedTokenClientCredentials() : base() + { + } + + DurableIssuedTokenClientCredentials ( DurableIssuedTokenClientCredentials other) : base(other) + { + this.cache = other.cache; + } + + public IssuedTokenCache IssuedTokenCache + { + Get + { + return this.cache; + } + Set + { + this.cache = value; + } + } + + protected override ClientCredentials CloneCore() + { + return new DurableIssuedTokenClientCredentials(this); + } + + public override SecurityTokenManager CreateSecurityTokenManager() + { + return new DurableIssuedTokenClientCredentialsTokenManager ((DurableIssuedTokenClientCredentials)this.Clone()); + } + } + ``` + +4. トークン キャッシュを実装します。サンプルの実装では抽象基本クラスを使用し、トークン キャッシュの利用先ではこのクラスを通じてキャッシュとやり取りします。 + + ``` + public abstract class IssuedTokenCache + { + public abstract void AddToken ( GenericXmlSecurityToken token, EndpointAddress target, EndpointAddress issuer); + public abstract bool TryGetToken(EndpointAddress target, EndpointAddress issuer, out GenericXmlSecurityToken cachedToken); + } + Configure the client to use the custom client credential. + ``` + + クライアントがカスタム クライアント資格情報を使用するため、サンプルでは既定のクライアント資格情報を削除し、新しいクライアント資格情報クラスを提供しています。 + + ``` + clientFactory.Endpoint.Behaviors.Remove(); + DurableIssuedTokenClientCredentials durableCreds = new DurableIssuedTokenClientCredentials(); + durableCreds.IssuedTokenCache = cache; + durableCreds.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust; + clientFactory.Endpoint.Behaviors.Add(durableCreds); + ``` + +## サンプルの実行 + サンプルの実行方法を次の手順に示します。サンプルを実行すると、セキュリティ トークン要求がセキュリティ トークン サービスのコンソール ウィンドウに表示されます。操作要求と応答は、クライアントとサービスのコンソール ウィンドウに表示されます。いずれかのコンソール ウィンドウで Enter キーを押すと、アプリケーションがシャットダウンします。 + +## Setup.cmd バッチ ファイル + このサンプルに用意されている Setup.cmd バッチ ファイルを使用すると、適切な証明書を使用してサーバーとセキュリティ トークン サービスを構成し、自己ホスト型アプリケーションを実行できるようになります。このバッチ ファイルにより、CurrentUser\/TrustedPeople 証明書ストアのどちらにも 2 つの証明書が作成されます。片方の証明書は CN\=STS のサブジェクト名を持ち、クライアントに発行するセキュリティ トークンを署名するためにセキュリティ トークン サービスが使用します。もう片方の証明書は CN\=localhost のサブジェクト名を持ち、サービスが暗号化を解除できるようにシークレットを暗号化するためにセキュリティ トークン サービスが使用します。 + +#### サンプルを設定、ビルド、および実行するには + +1. Setup.cmd ファイルを実行して、必要な証明書を作成します。 + +2. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。ソリューション内のすべてのプロジェクトがビルドされていることを確認します \(Shared、RSTRSTR、Service、SecurityTokenService、Client\)。 + +3. Service.exe と SecurityTokenService.exe がどちらも管理者権限で実行されていることを確認します。 + +4. Client.exe を実行します。 + +#### サンプルの実行後にクリーンアップするには + +1. サンプルの実行が終わったら、サンプル フォルダーにある Cleanup.cmd を実行します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Security\DurableIssuedTokenProvider` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/dynamic-reconfiguration.md b/docs/framework/wcf/samples/dynamic-reconfiguration.md new file mode 100644 index 00000000000..9a6fb9d0fd8 --- /dev/null +++ b/docs/framework/wcf/samples/dynamic-reconfiguration.md @@ -0,0 +1,95 @@ +--- +title: "動的再構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b20786ae-cce6-4f91-b6cb-9cae116faf8b +caps.latest.revision: 20 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 20 +--- +# 動的再構成 +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] ルーティング サービスを示します。ルーティング サービスは、コンテンツ ベースのルーターをアプリケーションに簡単に追加できるようにする [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] コンポーネントです。このサンプルでは、標準の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 電卓のサンプルを改良し、ルーティング サービスを使用して通信するようにします。このサンプルでは、実行時にルーティング サービスを動的に再構成する方法を示します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\RoutingServices\DynamicReconfiguration` + +## サンプルの詳細 + このサンプルでは、実行時にルーティング サービスを動的に再構成するために、5 秒ごとにタイマーを作動させ、新しい オブジェクトを作成して適用します。この構成は、通常の電卓のエンドポイントまたは丸め処理を行う電卓のエンドポイントのいずれかを示しています。電卓クライアント アプリケーションは、ルーティング サービスがその時点でどちらのサービスにルーティングするように構成されているかに応じて、いずれか一方のサービスからメッセージを受け取ります。 + + ルーティング サービスのカスタム動作を介した動的再構成機能が使用されます。このカスタム動作は、5 秒ごとに作動する単純なスレッド タイマーを含むサービス拡張をアタッチします。このスレッド タイマーにより、`UpdateRules` メソッドへのコールバックが発生し、新しいルーティング構成が作成および適用されます。実際の配置では、このコールバックは、別の種類のイベント \(SQL\-Event 通知や WS\-Discovery アナウンスなど\) の結果として行われる可能性があります。 + +#### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を使用して DynamicReconfiguration.sln を開きます。 + +2. **ソリューション エクスプローラー**を開くには、**\[表示\]** メニューの **\[ソリューション エクスプローラー\]** をクリックします。 + +3. [!INCLUDE[vs_current_short](../../../../includes/vs-current-short-md.md)] で F5 キーを押すか、Ctrl キーと Shift キーを押しながら B キーを押します。 + + 1. **F5** キーを押したときに必要なプロジェクトが自動的に起動されるようにする場合は、ソリューションを右クリックし、**\[プロパティ\]** をクリックします。左ペインの **\[共通プロパティ\]** で **\[スタートアップ プロジェクト\]** をクリックします。**\[マルチ スタートアップ プロジェクト\]** をクリックし、すべてのプロジェクトに**開始**アクションを設定します。 + + 2. Ctrl キーと Shift キーを押しながら B キーを押してプロジェクトをビルドする場合は、次のアプリケーションを開始する必要があります。 + + 1. 電卓クライアント \(.\/CalculatorClient\/bin\/client.exe\) + + 2. 電卓サービス \(.\/CalculatorService\/bin\/service.exe\) + + 3. 丸め処理を行う電卓サービス \(.\/RoundingCalcService\/bin\/service.exe\) + + 4. ルーティング サービス \(.\/RoutingService\/bin\/RoutingService.exe\) + +4. 電卓クライアントのコンソール ウィンドウで、Enter キーを押してクライアントを開始し、電卓サービス操作を呼び出します。 + + ルーティング サービスは、丸め処理を行う電卓と通常の電卓に交互にメッセージをルーティングします。これはルーティング構成が 5 秒ごとに動的に変化するためです。ルーティング サービスがどちらのエンドポイントにメッセージを送信するように構成されているかに応じて、異なる出力がクライアント コンソールに表示されます。 + +5. Enter キーを 5 秒以上にわたって繰り返し押して、サービスから返される結果が変化することを確認します。 + + 1. 次に、ルーター サービスが丸め処理を行う電卓サービスにメッセージをルーティングするように構成されている場合に返される出力を示します。 + + ```Output + Add(100,15.99) = 116 + Subtract(145,76.54) = 68.5 + Multiply(9,81.25) = 731.2 + Divide(22,7) = 3.1 + + ``` + + 2. 次に、ルーティング サービスが通常の電卓サービスにメッセージをルーティングするように構成されている場合に返される出力を示します。 + + ```Output + Add(100,15.99) = 115.99 + Subtract(145,76.54) = 68.46 + Multiply(9,81.25) = 731.25 + Divide(22,7) = 3.14285714285714 + + ``` + +6. また、電卓サービスと丸め処理を行う電卓サービスは、呼び出された操作のログをそれぞれのコンソール ウィンドウに出力します。 + +7. 終了するには、クライアント コンソール ウィンドウで「quit」と入力するか、Enter キーを押します。 + +8. サービスを終了するには、サービス コンソール ウィンドウで Enter キーを押します。 + +## シナリオ + このサンプルでは、1 つのエンドポイントを介して複数の種類または実装のサービスを公開することを可能にするコンテンツ ベースのルーターとして機能するルーターを示します。 + +### 実際のシナリオ + Contoso では、すべてのサービスを仮想化して 1 つのエンドポイントのみを公開し、そのエンドポイントを通じて複数の異なる種類のサービスへのアクセスを提供したいと考えています。この場合は、ルーティング サービスのコンテンツ ベースのルーティング機能を使用して受信要求の送信先を決定します。 + +## 参照 + [AppFabric のホストおよび永続化のサンプル](http://go.microsoft.com/fwlink/?LinkId=193961) \ No newline at end of file diff --git a/docs/framework/wcf/samples/etw-tracing.md b/docs/framework/wcf/samples/etw-tracing.md new file mode 100644 index 00000000000..68061c3b5d1 --- /dev/null +++ b/docs/framework/wcf/samples/etw-tracing.md @@ -0,0 +1,120 @@ +--- +title: "ETW トレース | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: ac99a063-e2d2-40cc-b659-d23c2f783f92 +caps.latest.revision: 42 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 42 +--- +# ETW トレース +このサンプルでは、Event Tracing for Windows \(ETW\) と、このサンプルに用意されている `ETWTraceListener` を使用して、エンドツーエンド \(E2E\) のトレースを実装する方法を示します。このサンプルは「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいており、ETW トレースが含まれています。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルは、「[トレースとメッセージ ログ](../../../../docs/framework/wcf/samples/tracing-and-message-logging.md)」について理解していることを前提としています。 + + トレース モデル内の各トレース ソースでは、データのトレース場所とトレース方法を決定するトレース リスナーを複数設定できます。リスナの種類では、トレース データの記録形式が定義されます。リスナを構成に追加する方法を、次のコード サンプルに示します。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + + このリスナを使用する前に、ETW トレース セッションを開始する必要があります。このセッションは、Logman.exe または Tracelog.exe を使用して開始できます。このサンプルには、ETW トレース セッションをセットアップするための SetupETW.bat ファイルと、セッションを閉じてログ ファイルを完了するための CleanupETW.bat ファイルが含まれています。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。これらのツールの詳細については、「[http:\/\/go.microsoft.com\/fwlink\/?LinkId\=56580](http://go.microsoft.com/fwlink/?LinkId=56580)」を参照してください。 + + ETWTraceListener を使用する場合、トレースはバイナリの .etl ファイルにログ記録されます。ServiceModel トレースが有効な場合、生成されるすべてのトレースは同じファイルに表示されます。.etl および .svclog ログ ファイルを表示するには、[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md)を使用します。このビューアでは、メッセージを送信側から受信側や使用地点までトレースできる、システムのエンドツーエンドのビューが作成されます。 + + ETW トレース リスナは、循環ログをサポートします。この機能を有効にするには、**\[スタート\]** メニューの **\[ファイル名を指定して実行\]** をクリックし、「`cmd`」と入力してコマンド コンソールを起動します。次のコマンドでは、`` パラメータを使用するログ ファイル名に置き換えます。 + +``` +logman create trace Wcf -o -p "{411a0819-c24b-428c-83e2-26b41091702e}" -f bincirc -max 1000 +``` + + `-f` スイッチと `-max` スイッチは省略できます。これらのスイッチでは、それぞれバイナリの循環形式と 1000 MB の最大ログ サイズが指定されます。`-p` スイッチは、トレース プロバイダーを指定する際に使用します。この例では、`"{411a0819-c24b-428c-83e2-26b41091702e}"` は "XML ETW サンプル プロバイダー" の GUID です。 + + セッションを開始するには、次のコマンドを入力します。 + +``` +Logman start Wcf + +``` + + ログ記録を完了したら、次のコマンドを使用してセッションを停止できます。 + +``` +Logman stop Wcf +``` + + この処理によってバイナリの循環ログが生成されます。このログは、[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md)や Tracerpt など、ユーザーが選択したツールを使用して処理できます。 + + また、循環ログ記録を実行する代替リスナの詳細については、「[循環トレース](../../../../docs/framework/wcf/samples/circular-tracing.md)」でも確認できます。 + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + + > [!NOTE] + > RegisterProvider.bat、SetupETW.bat、および CleanupETW.bat コマンドを使用するには、ローカル管理者アカウントで実行する必要があります。[!INCLUDE[wv](../../../../includes/wv-md.md)] 以降を使用している場合は、コマンド プロンプトも管理者権限で実行する必要があります。これを行うには、コマンド プロンプトのアイコンを右クリックし、**\[管理者として実行\]** をクリックします。 + +3. サンプルを実行する前に、クライアントとサーバーで RegisterProvider.bat を実行します。この結果、トレースを生成する ETWTracingSampleLog.etl ファイルがセットアップされます。このトレースはサービス トレース ビューアで読み取ることができます。このファイルは、C:\\logs フォルダにあります。このフォルダーが存在しない場合はフォルダーを作成する必要があります。作成しない場合、トレースは生成されません。次に、クライアント コンピューターとサーバー コンピューターで SetupETW.bat を実行し、ETW トレース セッションを開始します。SetupETW.bat ファイルは、CS\\Client フォルダーの下にあります。 + +4. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +5. サンプルの使用が終わったら、CleanupETW.bat を実行して ETWTracingSampleLog.etl ファイルの作成を完了します。 + +6. サービス トレース ビューア内で ETWTracingSampleLog.etl ファイルを開きます。このバイナリ形式のファイルを .svclog ファイルとして保存するかどうかを尋ねるメッセージが表示されます。 + +7. 新しく作成された .svclog ファイルをサービス トレース ビューアー内で開き、ETW トレースと ServiceModel トレースを表示します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Management\AnalyticTrace` + +## 参照 + [AppFabric の監視のサンプル](http://go.microsoft.com/fwlink/?LinkId=193959) \ No newline at end of file diff --git a/docs/framework/wcf/samples/expected-exceptions.md b/docs/framework/wcf/samples/expected-exceptions.md new file mode 100644 index 00000000000..1759fec76dc --- /dev/null +++ b/docs/framework/wcf/samples/expected-exceptions.md @@ -0,0 +1,90 @@ +--- +title: "予期される例外 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 299a6987-ae6b-43c6-987f-12b034b583ae +caps.latest.revision: 7 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 7 +--- +# 予期される例外 +このサンプルでは、型指定のあるクライアントを使用する際に、予期される例外をキャッチする方法を示します。このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。この例では、クライアントはコンソール アプリケーション \(.exe\) で、サービスはインターネット インフォメーション サービス \(IIS\) によってホストされます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルでは、正しいプログラムが処理する必要のある `TimeoutException` および `CommunicationException` という 2 種類の予期される例外を、キャッチして処理する方法を示します。 + + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアントの通信メソッドからスローされる例外には、予期される例外と予期しない例外があります。予期しない例外には、`OutOfMemoryException` などの致命的なエラーや、`ArgumentNullException` や `InvalidOperationException` などのプログラミング エラーが含まれます。一般に、予期しないエラーを処理する有効な方法はありません。したがって [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの通信メソッドを呼び出す際、通常は、予期しないエラーをキャッチしないでください。 + + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントの通信メソッドからの予期される例外には、`TimeoutException`、`CommunicationException`、および `CommunicationException` の任意の派生クラスが含まれます。これらの例外は通信中の問題を示しますが、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントを中止して通信エラーを報告することによって安全に処理できます。どのアプリケーションでも外部要因によってこうしたエラーが発生する可能性があるので、正しいアプリケーションはこのようなエラーをキャッチし、発生した場合には回復させる必要があります。 + + `CommunicationException` の派生クラスには、クライアントがスローできるものがいくつかあります。状況によっては、アプリケーションでこれらのサブクラスをキャッチして特別な処理を行うこともできます。しかし、それ以外の場合は `CommunicationException` として処理する必要があります。この処理は、より具体的な例外の種類を最初にキャッチし、後の catch 句で `CommunicationException` をキャッチすることによって実現できます。 + + クライアントの通信メソッドを呼び出すコードでは、`TimeoutException` と `CommunicationException` をキャッチする必要があります。こうしたエラーの処理方法の 1 つに、クライアントを中止して通信エラーを報告するという方法があります。 + +``` +try +{ + ... + double result = client.Add(value1, value2); + ... + client.Close(); +} +catch (TimeoutException exception) +{ + Console.WriteLine("Got {0}", exception.GetType()); + client.Abort(); +} +catch (CommunicationException exception) +{ + Console.WriteLine("Got {0}", exception.GetType()); + client.Abort(); +} +``` + + 予期される例外が発生した場合、それ以降、クライアントを使用できる場合もできない場合もあります。クライアントがそのまま使用可能かどうかを確認するには、`State` プロパティが `CommunicationState`.Opened であることを確認してください。Opened の場合は、そのまま使用できます。それ以外の場合は、クライアントを中止してすべての参照を解放する必要があります。 + +> [!CAUTION] +> 一般に、セッションを持つクライアントは、例外発生後に使用できなくなり、セッションを持たないクライアントは、例外発生後も使用可能なままです。ただし、どちらも必ずそうなるとは限りません。したがって、例外発生後も引き続きクライアントを使用する場合は、アプリケーションで `State` プロパティをチェックし、クライアントが Opened 状態のままであることを検証する必要があります。 + + このサンプルを実行すると、操作応答と例外がクライアントのコンソール ウィンドウに表示されます。 + + クライアント プロセスでは 2 つのシナリオが実行されます。各シナリオでは、`Add`、`Divide` の順に呼び出しが試行されます。最初のシナリオでは、`Divide` を呼び出す前にクライアントを中止することによってネットワーク問題をシミュレートします。2 番目のシナリオでは、メソッドを完了できないようにタイムアウト値をごく短く設定することによって、タイムアウトを発生させます。クライアント プロセスから予期される出力は次のとおりです。 + +``` +Add(100,15.99) = 115.99 +Simulated network problem occurs... +Got System.ServiceModel.CommunicationObjectAbortedException +Add(100,15.99) = 115.99 +Set timeout too short for method to complete... +Got System.TimeoutException +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Client\ExpectedExceptions` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/extended-protection-policy.md b/docs/framework/wcf/samples/extended-protection-policy.md new file mode 100644 index 00000000000..841063aef36 --- /dev/null +++ b/docs/framework/wcf/samples/extended-protection-policy.md @@ -0,0 +1,71 @@ +--- +title: "拡張保護ポリシー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e2616a10-317e-4c34-8023-0c015a80a82f +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 拡張保護ポリシー +拡張保護は、man\-in\-the\-middle \(MITM\) 攻撃に対するセキュリティ イニシアチブです。 MITM 攻撃はセキュリティの脅威です。MITM は、クライアントの資格情報を取得し、その資格情報をサーバーに転送します。 + +## 使用例 + 拡張保護 + +## 説明 + アプリケーションが HTTPS で Kerberos、Digest または NTLM を使用して認証を実行する場合、最初にトランスポート レベルのセキュリティ \(TLS\) チャネルが構築され、その後セキュリティ チャネルを使用して認証が行われます。 しかし、SSL によって生成されるセッション キーと認証時に生成されるセッション キーはバインドされていません。 サーバーはセキュリティ チャネルがクライアントまたは MITM のどちらで確立されたものであるか知ることができないため、トランスポート チャネルそのものはセキュリティで保護されていても、MITM がクライアントとサーバーの間に自身を構築し、クライアントからの要求の転送を開始する可能性があります。 このシナリオの解決策として、外部の TLS チャネルを内部の認証チャネルにバインドする方法があります。この方法により、サーバーは、MITM が存在するかどうかを検出できます。 + +> [!NOTE] +> このサンプルは、IIS でホストされている場合にのみ機能します。Cassini \(Visual Studio Development Server\) は HTTPS をサポートしないため、Cassini 上では機能しません。 + +> [!NOTE] +> この機能は現在 Windows 7 でのみ使用できます。 次の手順は、Windows 7 でのみ実行できます。 + +#### サンプルをセットアップ、ビルド、および実行するには + +1. **\[コントロール パネル\]**、**\[プログラムの追加と削除\]**、**\[Windows 機能\]** の順にクリックして、インターネット インフォメーション サービスをインストールします。 + +2. **\[Windows 機能\]**、**\[インターネット インフォメーション サービス\]**、**\[World Wide Web サービス\]**、**\[セキュリティ\]**、**\[Windows 認証\]** の順にクリックして、**Windows 認証**をインストールします。 + +3. **\[Windows 機能\]**、**\[Microsoft .NET Framework 3.5.1\]**、**\[Windows Communication Foundation HTTP Activation\]** の順にクリックして、**Windows Communication Foundation HTTP Activation** をインストールします。 + +4. このサンプルを実行するには、サーバーとの安全なチャネルを確立する必要のあるクライアントが必要なので、インターネット インフォメーション サービス \(IIS\) マネージャーからインストールすることのできるサーバー証明書が存在する必要があります。 + + 1. IIS マネージャーを開きます。 **\[サーバー証明書\]** を開きます。これは、ルート ノード \(コンピューター名\) を選択すると、**\[機能表示\]** タブに表示されます。 + + 2. このサンプルをテストする目的で、自己署名証明書を作成します。 インターネット エクスプローラーで証明書の安全性に関するプロンプトが表示されないようにする場合は、信頼されたルート証明機関ストアに証明書をインストールします。 + +5. 既定の Web サイトの**操作**ウィンドウを開きます。 **\[サイトの編集\]**、**\[バインド\]** の順にクリックします。 HTTPS が存在しない場合は、ポート番号を 443 に指定して HTTPS を追加します。 前の手順で作成した SSL 証明書を割り当てます。 + +6. サービスをビルドします。 これにより、仮想ディレクトリが IIS に作成され、サービスを Web ホストにするために必要な .dll ファイル、.svc ファイルおよび .config ファイルがコピーされます。 + +7. IIS マネージャーを開きます。 前の手順で作成した仮想ディレクトリ \(**ExtendedProtection**\) を右クリックします。 **\[アプリケーションへの変換\]** を選択します。 + +8. この仮想ディレクトリの**認証**モジュールを IIS マネージャーで開き、**Windows 認証**を有効にします。 + +9. 仮想ディレクトリの **\[Windows 認証\]** の下にある **\[詳細設定\]** を開き、**\[必須\]** に設定します。 + +10. ブラウザー ウィンドウから HTTPS URL にアクセスして \(完全修飾ドメイン名を指定します\) サービスをテストできます。 リモート コンピューターからこの URL にアクセスする場合は、すべての受信 HTTP および HTTPS 通信に対してファイアウォールが開かれていることを確認してください。 + +11. クライアント構成ファイルを開き、クライアントの完全修飾ドメイン名、または `<>` を置き換えるエンドポイント アドレス属性を指定します。 + +12. クライアントを実行します。 クライアントはサービスと通信します。これで、安全なチャネルが確立され、拡張保護が使用されます。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」に移動して、すべての [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サンプルおよび [!INCLUDE[wf1](../../../../includes/wf1-md.md)] サンプルをダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Security\ExtendedProtection` \ No newline at end of file diff --git a/docs/framework/wcf/samples/extending-control-over-error-handling-and-reporting.md b/docs/framework/wcf/samples/extending-control-over-error-handling-and-reporting.md new file mode 100644 index 00000000000..53414cacd3c --- /dev/null +++ b/docs/framework/wcf/samples/extending-control-over-error-handling-and-reporting.md @@ -0,0 +1,168 @@ +--- +title: "エラー処理およびレポートに対する制御の拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 45f996a7-fa00-45cb-9d6f-b368f5778aaa +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# エラー処理およびレポートに対する制御の拡張 +このサンプルでは、 インターフェイスを使用して、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスのエラー処理およびエラー報告に対する制御を拡張する方法を示します。サンプルは、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づき、エラー処理を行ういくつかの追加コードをサービスに追加しています。クライアントは、強制的にエラーが発生する状態にされます。サービスはエラーを途中受信して、ファイルに記録します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + サービスは インターフェイスを使用して、エラーを途中受信して処理を実行し、エラーを報告する方法を制御できます。このインターフェイスには、 の 2 つのメソッドを実装できます。 メソッドを使用すると、例外に対して生成されるエラー メッセージを追加または変更したり、非表示にすることができます。 メソッドを使用すると、エラーの発生時にエラー処理を実行することができます。またこのメソッドは追加のエラー処理を実行するかどうかを制御します。 + + このサンプルでは、`CalculatorErrorHandler` 型は インターフェイスを実装します。 + + メソッドでは、`CalculatorErrorHandler` がエラーのログを c:\\logs の Error.txt テキスト ファイルに書き込みます。このサンプルではエラーを記録して表示します。このエラーの報告は、クライアントに返されます。 + +``` +public class CalculatorErrorHandler : IErrorHandler +{ + // Provide a fault. The Message fault parameter can be replaced, or set to + // null to suppress reporting a fault. + + public void ProvideFault(Exception error, MessageVersion version, ref Message fault) + { + } + + // HandleError. Log an error, then allow the error to be handled as usual. + // Return true if the error is considered as already handled + + public bool HandleError(Exception error) + { + using (TextWriter tw = File.AppendText(@"c:\logs\error.txt")) + { + if (error != null) + { + tw.WriteLine("Exception: " + error.GetType().Name + " - " + error.Message); + } + tw.Close(); + } + return true; + } + } +``` + + `ErrorBehaviorAttribute` は、エラー ハンドラをサービスに登録する機構として存在します。この属性は、単一の型のパラメータを受け取ります。この型は インターフェイスを実装し、空のパブリック コンストラクタを含む必要があります。この属性は、そのエラー ハンドラの型のインスタンスをインスタンス化し、サービスにインストールします。これを行うには インターフェイスを実装し、次に メソッドを使用してエラー ハンドラのインスタンスをサービスに追加します。 + +``` +// This attribute can be used to install a custom error handler for a service. +public class ErrorBehaviorAttribute : Attribute, IServiceBehavior +{ + Type errorHandlerType; + + public ErrorBehaviorAttribute(Type errorHandlerType) + { + this.errorHandlerType = errorHandlerType; + } + + void IServiceBehavior.Validate(ServiceDescription description, ServiceHostBase serviceHostBase) + { + } + + void IServiceBehavior.AddBindingParameters(ServiceDescription description, ServiceHostBase serviceHostBase, System.Collections.ObjectModel.Collection endpoints, BindingParameterCollection parameters) + { + } + + void IServiceBehavior.ApplyDispatchBehavior(ServiceDescription description, ServiceHostBase serviceHostBase) + { + IErrorHandler errorHandler; + + try + { + errorHandler = (IErrorHandler)Activator.CreateInstance(errorHandlerType); + } + catch (MissingMethodException e) + { + throw new ArgumentException("The errorHandlerType specified in the ErrorBehaviorAttribute constructor must have a public empty constructor.", e); + } + catch (InvalidCastException e) + { + throw new ArgumentException("The errorHandlerType specified in the ErrorBehaviorAttribute constructor must implement System.ServiceModel.Dispatcher.IErrorHandler.", e); + } + + foreach (ChannelDispatcherBase channelDispatcherBase in serviceHostBase.ChannelDispatchers) + { + ChannelDispatcher channelDispatcher = channelDispatcherBase as ChannelDispatcher; + channelDispatcher.ErrorHandlers.Add(errorHandler); + } + } +} +``` + + このサンプルは、電卓サービスを実装しています。クライアントは、パラメータに無効な値を渡すことによって、サービスで意図的に 2 つのエラーを発生させます。`CalculatorErrorHandler` は インターフェイスを使用して、エラーをローカル ファイルに記録します。エラーの記録はその後、クライアントに報告されます。クライアントは強制的に 0 による除算を行い、引数を範囲外の状態にします。 + +``` +try +{ + Console.WriteLine("Forcing an error in Divide"); + // Call the Divide service operation - trigger a divide by 0 error. + value1 = 22; + value2 = 0; + result = proxy.Divide(value1, value2); + Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); +} +catch (FaultException e) +{ + Console.WriteLine("FaultException: " + e.GetType().Name + " - " + e.Message); +} +catch (Exception e) +{ + Console.WriteLine("Exception: " + e.GetType().Name + " - " + e.Message); +} +``` + + このサンプルを実行する場合は、操作要求および応答はクライアントのコンソール ウィンドウに表示されます。0 による除算が行われたことと引数が範囲外の状態であることが、エラーとして報告されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(15,3) = 18 +Subtract(145,76) = 69 +Multiply(9,81) = 729 +Forcing an error in Divide +FaultException: FaultException - Invalid Argument: The second argument must not be zero. +Forcing an error in Factorial +FaultException: FaultException - Invalid Argument: The argument must be greater than zero. + +Press to terminate client. +``` + + ファイル c:\\logs\\errors.txt には、サービスによって記録されたエラーに関する情報が格納されます。サービスがこのディレクトリに対して書き込み処理を実行できるように、サービスが実行されているプロセス \(通常は ASP.NET または Network Service\) が、このディレクトリに対する書き込み権限を持っていることを確認する必要があります。 + +``` +Fault: Reason = Invalid Argument: The second argument must not be zero. +Fault: Reason = Invalid Argument: The argument must be greater than zero. +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. error.txt ファイル用に c:\\logs ディレクトリを作成したことを確認します。または、`CalculatorErrorHandler.HandleError` で使用されるファイル名を変更します。 + +4. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\ErrorHandling` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/extending-tracing.md b/docs/framework/wcf/samples/extending-tracing.md new file mode 100644 index 00000000000..82853a81304 --- /dev/null +++ b/docs/framework/wcf/samples/extending-tracing.md @@ -0,0 +1,107 @@ +--- +title: "トレースの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 2b971a99-16ec-4949-ad2e-b0c8731a873f +caps.latest.revision: 28 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 28 +--- +# トレースの拡張 +このサンプルでは、ユーザー定義のアクティビティ トレースをクライアントとサービス コードに記述することにより、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] トレース機能を拡張する方法を示します。これにより、ユーザーはトレース アクティビティを作成し、トレースを作業の論理単位ごとにグループ化することができます。さらに、転送 \(同じエンドポイント内\) や伝達 \(異なるエンドポイント間\) を経由してアクティビティを相互に関連付けることもできます。このサンプルでは、トレースはクライアントとサービスの両方で有効です。クライアントとサービスの構成ファイル内でトレースを有効にする方法の詳細については、「[トレースとメッセージ ログ](../../../../docs/framework/wcf/samples/tracing-and-message-logging.md)」を参照してください。 + + このサンプルは、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Management\ExtendingTracing` + +## トレースとアクティビティの伝達 + ユーザー定義のアクティビティ トレースにより、ユーザー自身のトレース アクティビティを作成できます。これによって、複数のトレースを作業の論理単位ごとにグループ化したり、転送や伝達を経由してアクティビティを相互に関連付けたり、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] トレースのパフォーマンスの負荷 \(ログ ファイルによるディスク領域の負荷など\) を軽減できます。 + +### カスタム ソースの追加 + ユーザー定義のトレースは、クライアントとサービス コードの両方に追加できます。トレース ソースをクライアントまたはサービスの構成ファイルに追加すると、カスタム トレースを[サービス トレース ビューアー ツール \(SvcTraceViewer.exe\)](../../../../docs/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe.md)に記録および表示できます。次のコードは、`ServerCalculatorTraceSource` というユーザー定義のトレース ソースを構成ファイルに追加する方法を示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.... +.... +``` + +### アクティビティの相互関連付け + エンドポイント間でアクティビティを直接関連付けるには、`System.ServiceModel` トレース ソースの `propagateActivity` 属性を `true` に設定する必要があります。また、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] アクティビティを経由せずにトレースを伝達するには、ServiceModel アクティビティ トレースをオフにする必要があります。次のコード サンプルを参照してください。 + +> [!NOTE] +> ServiceModel アクティビティ トレースをオフにすることは、`switchValue` プロパティが表すトレース レベルをオフにすることとは異なります。 + +``` + + + + + ... + + + + +``` + +### パフォーマンスの負荷の軽減 + `System.ServiceModel` トレース ソースの `ActivityTracing` をオフに設定すると、ユーザー定義のアクティビティ トレースのみを含み、ServiceModel アクティビティ トレースは含まないトレース ファイルが生成されます。これによって、ログ ファイルのサイズがはるかに小さくなります。ただし、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 処理トレースを関連付けることはできなくなります。 + +##### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## 参照 + [AppFabric の監視のサンプル](http://go.microsoft.com/fwlink/?LinkId=193959) \ No newline at end of file diff --git a/docs/framework/wcf/samples/extensibility.md b/docs/framework/wcf/samples/extensibility.md new file mode 100644 index 00000000000..6577d2b075a --- /dev/null +++ b/docs/framework/wcf/samples/extensibility.md @@ -0,0 +1,72 @@ +--- +title: "機能拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: cd7ddffc-a261-44aa-bd50-33c1c74f0df0 +caps.latest.revision: 6 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 6 +--- +# 機能拡張 +このセクションには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のカスタムの機能拡張およびその他の機能に関するサンプルが含まれています。 + +## このセクションの内容 + [チャネル拡張](../../../../docs/framework/wcf/samples/channels-extensibility.md) + カスタム チャネルの例を示します。 + + [探索の機能拡張](../../../../docs/framework/wcf/samples/discovery-extensibility.md) + カスタム探索の例を示します。 + + [インスタンス化拡張](../../../../docs/framework/wcf/samples/instancing-extensibility.md) + カスタムの機能拡張の例を示します。 + + [相互運用性の拡張](../../../../docs/framework/wcf/samples/interop-extensibility.md) + カスタムの相互運用性の例を示します。 + + [メッセージ エンコーダー拡張](../../../../docs/framework/wcf/samples/message-encoder-extensibility.md) + カスタムのメッセージ エンコーディングの例を示します。 + + [メタデータ拡張](../../../../docs/framework/wcf/samples/metadata-extensibility.md) + カスタム メタデータの例を示します。 + + [セキュリティ拡張](../../../../docs/framework/wcf/samples/security-extensibility.md) + カスタム セキュリティの例を示します。 + + [配信の拡張のサンプル](../../../../docs/framework/wcf/samples/syndication-extensibility-samples.md) + カスタム配信の例を示します。 + + [トランスポート拡張](../../../../docs/framework/wcf/samples/transport-extensibility.md) + カスタム トランスポートの例を示します。 + + [Web 拡張](../../../../docs/framework/wcf/samples/web-extensibility.md) + カスタム Web 機能の例を示します。 + + [操作フォーマッタと操作セレクター](../../../../docs/framework/wcf/samples/operation-formatter-and-operation-selector.md) + 拡張ポイントでカスタムのメッセージのデータ形式を使用する方法を示します。 + + [カスタム メッセージ フィルター](../../../../docs/framework/wcf/samples/custom-message-filter.md) + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] が使用するメッセージ フィルターを置き換えて、メッセージをエンドポイントにディスパッチする方法を示します。 + + [カスタム サービス ホスト](../../../../docs/framework/wcf/samples/custom-service-host.md) + クラスから派生したカスタムのサービス ホストを使用して、サービスの実行時動作を変更する方法を示します。 + + [DataContract サロゲート](../../../../docs/framework/wcf/samples/datacontract-surrogate.md) + シリアル化、逆シリアル化、スキーマのエクスポート、スキーマのインポートなどのプロセスを、データ コントラクト サロゲート クラスを使用してカスタマイズする方法を示します。 + + [エラー処理およびレポートに対する制御の拡張](../../../../docs/framework/wcf/samples/extending-control-over-error-handling-and-reporting.md) + インターフェイスを使用して、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスのエラー処理およびエラー報告に対する制御を拡張する方法を示します。 + + [メッセージ インスペクター](../../../../docs/framework/wcf/samples/message-inspectors.md) + クライアントとサービスのメッセージ インスペクターを実装して構成する方法を示します。 + + [WebContentTypeMapper](../../../../docs/framework/wcf/samples/webcontenttypemapper-sample.md) + 新しいコンテンツ タイプを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] メッセージの本文の書式に割り当てる方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/fault-contract.md b/docs/framework/wcf/samples/fault-contract.md new file mode 100644 index 00000000000..cbfd3093ced --- /dev/null +++ b/docs/framework/wcf/samples/fault-contract.md @@ -0,0 +1,147 @@ +--- +title: "エラー コントラクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: b31b140e-dc3b-408b-b3c7-10b6fe769725 +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# エラー コントラクト +エラー コントラクトのサンプルでは、エラー情報をサービスからクライアントに通信する方法を示します。 サンプルは、「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づき、内部例外をエラーに変換するいくつかの追加コードをサービスに追加しています。 クライアントは 0 による除算を試行し、サービスを強制的にエラー状態にします。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + 電卓コントラクトは、 が含まれるように変更されています。次のサンプル コードを参照してください。 + +``` +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public interface ICalculator +{ + [OperationContract] + int Add(int n1, int n2); + [OperationContract] + int Subtract(int n1, int n2); + [OperationContract] + int Multiply(int n1, int n2); + [OperationContract] + [FaultContract(typeof(MathFault))] + int Divide(int n1, int n2); +} +``` + + 属性は、`Divide` 操作が型 `MathFault` のエラーを返すことができることを示します。 シリアル化可能な任意の型のエラーが発生します。 この場合、`MathFault` は次のようなデータ コントラクトになります。 + +``` +[DataContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public class MathFault +{ + private string operation; + private string problemType; + + [DataMember] + public string Operation + { + get { return operation; } + set { operation = value; } + } + + [DataMember] + public string ProblemType + { + get { return problemType; } + set { problemType = value; } + } +} + +``` + + 0 による除算の例外が発生すると、`Divide` メソッドは 例外をスローします。次のサンプル コードを参照してください。 この例外により、クライアントにエラーが送信されます。 + +``` +public int Divide(int n1, int n2) +{ + try + { + return n1 / n2; + } + catch (DivideByZeroException) + { + MathFault mf = new MathFault(); + mf.operation = "division"; + mf.problemType = "divide by zero"; + throw new FaultException(mf); + } +} +``` + + クライアント コードは、0 による除算を要求することで強制的にエラーを発生させます。 このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。 0 による除算がエラーとして報告されたことが示されます。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(15,3) = 18 +Subtract(145,76) = 69 +Multiply(9,81) = 729 +FaultException: Math fault while doing division. Problem: divide by zero + +Press to terminate client. +``` + + クライアントでこれを行うには、適切な `FaultException` 例外を次のようにキャッチします。 + +``` +catch (FaultException e) +{ + Console.WriteLine("FaultException: Math fault while doing " + e.Detail.operation + ". Problem: " + e.Detail.problemType); + client.Abort(); +} +``` + + 既定では、サービス実装の詳細がサービスのセキュリティの境界から漏えいするのを回避するため、予期しない例外の詳細はクライアントに送信されません。 `FaultContract` では、コントラクトでエラーを説明し、例外の特定の型がクライアントへの転送に適しているとマークできます。 `FaultException` には、エラーをコンシューマーに送信するためのランタイム機構が用意されています。 + + ただし、デバッグ時にはサービス エラーの内部詳細を確認することが役立ちます。 前に説明したセキュリティ動作を無効にするには、サーバーで未処理のすべての例外の詳細を、クライアントに送信するエラーに含めるように指定できます。 これは、 を `true` に設定することによって行います。 次の例に示すように、コードまたは構成のどちらを使用しても設定できます。 + +``` + + + + + + + + +``` + + さらに、サービスの `behaviorConfiguration` 属性を構成ファイルで “CalculatorServiceBehavior” に設定し、動作をサービスに関連付ける必要があります。 + + こうしたエラーをクライアントでキャッチするには、非ジェネリックの をキャッチする必要があります。 + + この動作はデバッグ目的でのみ使用し、製品版では有効にしないでください。 + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」に移動して、すべての [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サンプルおよび [!INCLUDE[wf1](../../../../includes/wf1-md.md)] サンプルをダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Contract\Service\Faults` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/federation-sample.md b/docs/framework/wcf/samples/federation-sample.md new file mode 100644 index 00000000000..11dfed3220e --- /dev/null +++ b/docs/framework/wcf/samples/federation-sample.md @@ -0,0 +1,127 @@ +--- +title: "フェデレーション サンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7e9da0ca-e925-4644-aa96-8bfaf649d4bb +caps.latest.revision: 26 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 26 +--- +# フェデレーション サンプル +このサンプルではフェデレーション セキュリティを示します。 + +## サンプルの詳細 + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] は、`wsFederationHttpBinding` を使用して、フェデレーション セキュリティ アーキテクチャの展開をサポートします。`wsFederationHttpBinding` は、セキュリティで保護された、信頼できる、相互運用が可能なバインディングを提供します。このバインディングでは、要求\/応答の通信のための基になるトランスポート機構として HTTP を使用でき、エンコーディングのためのワイヤ形式として Text\/XML を使用できます。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] でのフェデレーション[!INCLUDE[crabout](../../../../includes/crabout-md.md)]、「[フェデレーション](../../../../docs/framework/wcf/feature-details/federation.md)」を参照してください。 + + シナリオは、次の 4 つの部分から構成されます。 + +- BookStore サービス + +- BookStore STS + +- HomeRealm STS + +- BookStore クライアント + + BookStore サービスは、`BrowseBooks` と `BuyBook` の 2 つの操作をサポートします。サービスでは、`BrowseBooks` 操作には匿名アクセスできますが、`BuyBooks` 操作にアクセスするには認証済みのアクセス権限が必要です。認証は、BookStore STS によって発行されたトークンの形式を取ります。BookStore サービス用の構成ファイルは、次のように `wsFederationHttpBinding` を使用して、クライアントを BookStore STS にポイントします。 + +``` + + + + + + + + + + + + + + +``` + + 次に BookStore STS は、HomeRealm STS によって発行されたトークンを使用した、クライアントの認証を要求します。ここでも、BookStore STS 用の構成ファイルは、`wsFederationHttpBinding` を使用して、クライアントを HomeRealm STS にポイントします。 + +``` + + + + + + + + + + + + + + +``` + + `BuyBook` 操作にアクセスするときに発生するイベントの順序は、次のとおりです。 + +1. クライアントは、Windows 資格情報を使用して HomeRealm STS に対する認証を行います。 + +2. HomeRealm STS は、BookStore STS に対する認証に使用できるトークンを発行します。 + +3. クライアントは、HomeRealm STS によって発行されたトークンを使用して BookStore STS に対する認証を行います。 + +4. BookStore STS は、BookStore サービスに対する認証に使用できるトークンを発行します。 + +5. クライアントは、BookStore STS によって発行されたトークンを使用して BookStore サービスに対する認証を行います。 + +6. クライアントは `BuyBook` 操作にアクセスします。 + + このサンプルの設定および実行方法については、次の手順を参照してください。 + +> [!NOTE] +> このサンプルを実行するには、**wwwroot** ディレクトリに対する書き込み権限が必要です。 + +#### サンプルを設定、ビルド、および実行するには + +1. SDK コマンド ウィンドウを開きます。Setup.bat をサンプルのパスで実行します。これにより、サンプルに必要な仮想ディレクトリが作成され、必要な証明書が適切な権限を付与されてインストールされます。 + + > [!NOTE] + > Setup.bat バッチ ファイルは、Windows SDK コマンド プロンプトから実行します。MSSDK 環境変数が SDK のインストール ディレクトリを指している必要があります。この環境変数は、Windows SDK コマンド プロンプトで自動設定されます。セットアップで IIS 管理者スクリプトが使用されるため、[!INCLUDE[wv](../../../../includes/wv-md.md)] で IIS 6.0 管理互換がインストールされていることを確認する必要があります。[!INCLUDE[wv](../../../../includes/wv-md.md)] でセットアップ スクリプトを実行するには、管理者権限が必要です。 + +2. Visual Studio で FederationSample.sln を開き、**\[ビルド\]** メニューの **\[ソリューションのビルド\]** をクリックします。これによって共通のプロジェクト ファイル、Bookstore サービス、Bookstore STS、および HomeRealm STS が作成され、IIS に展開されます。さらに Bookstore クライアント アプリケーションがビルドされ、FederationSample\\BookStoreClient\\bin\\Debug フォルダに実行可能ファイル BookStoreClient.exe が配置されます。 + +3. BookStoreClient.exe をダブルクリックします。BookStoreClient ウィンドウが表示されます。 + +4. **\[Browse Books\]** をクリックすると、この書店で利用できる本を参照できます。 + +5. 特定の本を購入するには、一覧で本を選択して **\[Buy Book\]** をクリックします。アプリケーションが起動し、HomeRealm セキュリティ トークン サービスを使用した Windows 認証によって認証を行います。 + + サンプルは、ユーザーが 15 ドル以下の本を購入できるように構成されています。15 ドルを超える本を購入しようとすると、クライアントは、BookStore サービスからアクセス拒否のメッセージを受け取ります。 + + > [!NOTE] + > サンプルでは、購入後にユーザーの与信限度額を更新しません。ユーザーは、\(固定の\) 与信限度額以内なら何度でも本を購入できます。 + +#### クリーンアップするには + +1. Cleanup.bat を実行します。これによって、設定中に作成された仮想ディレクトリが削除されます。同時に、設定中にインストールされた証明書も削除されます。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Scenario\Federation` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/feed-formatter-json.md b/docs/framework/wcf/samples/feed-formatter-json.md new file mode 100644 index 00000000000..c0a7a58def6 --- /dev/null +++ b/docs/framework/wcf/samples/feed-formatter-json.md @@ -0,0 +1,72 @@ +--- +title: "フィード フォーマッタ (JSON) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: f9c0b295-55e7-48ea-b308-ba51c7d31143 +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# フィード フォーマッタ (JSON) +このサンプルでは、カスタムの および を使用することにより JSON \(JavaScript Object Notation\) 形式の クラスのインスタンスをシリアル化する方法を示します。 + +## サンプルのアーキテクチャ + このサンプルは を継承する `JsonFeedFormatter` という名前のクラスを実行します。 `JsonFeedFormatter` クラスは に依存し、JSON 形式でデータの読み取りと書き込みを行います。 内部的には、フォーマッタは `JsonSyndicationFeed` および `JsonSyndicationItem` という名前のデータ コントラクト型のカスタム セットを使用し、シリアライザによって生成される JSON データの形式を制御します。 これらの実装の詳細はエンド ユーザーには表示されず、標準的な および クラスに対する呼び出しを行うことができます。 + +## JSON フィードの書き込み + 次のコード例に示すように、JSON フィードの書き込みは `JsonFeedFormatter` \(このサンプルで実装\) を と共に使用して実行できます。 + +``` +//Basic feed with sample data +SyndicationFeed feed = new SyndicationFeed("Custom JSON feed", "A Syndication extensibility sample", null); +feed.LastUpdatedTime = DateTime.Now; +feed.Items = from s in new string[] { "hello", "world" } +select new SyndicationItem() +{ + Summary = SyndicationContent.CreatePlaintextContent(s) +}; + +//Write the feed out to a MemoryStream in JSON format +DataContractJsonSerializer writeSerializer = new DataContractJsonSerializer(typeof(JsonFeedFormatter)); +writeSerializer.WriteObject(stream, new JsonFeedFormatter(feed)); + +``` + +## JSON フィードの読み取り + 次のコードに示すように、JSON 形式のデータのストリームからの の取得は `JsonFeedFormatter` を使用して実行できます。 + + `//Read in the feed using the DataContractJsonSerializer` + + `DataContractJsonSerializer readSerializer = new DataContractJsonSerializer(typeof(JsonFeedFormatter));` + + `JsonFeedFormatter formatter = readSerializer.ReadObject(stream) as JsonFeedFormatter;` + + `SyndicationFeed feedRead = formatter.Feed;` + +#### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Syndication\JsonFeeds` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/findprivatekey.md b/docs/framework/wcf/samples/findprivatekey.md new file mode 100644 index 00000000000..8352a6cfe31 --- /dev/null +++ b/docs/framework/wcf/samples/findprivatekey.md @@ -0,0 +1,106 @@ +--- +title: "FindPrivateKey | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "FindPrivateKey" +ms.assetid: 16b54116-0ceb-4413-af0c-753bb2a785a6 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# FindPrivateKey +証明書ストア内の特定の X.509 証明書に関連付けられている秘密キー ファイルの場所と名前を見つけることが困難な場合があります。FindPrivateKey.exe ツールを使用すると、この処理を容易に実行できます。 + +> [!IMPORTANT] +> FindPrivateKey は、使用する前にコンパイルする必要があるサンプルです。FindPrivateKey ツールをビルドする手順については、この後の「FindPrivateKey プロジェクトをビルドするには」のセクションを参照してください。 + + X.509 証明書は、コンピューターの管理者または任意のユーザーによってインストールされます。ただし、証明書は別のアカウント \([!INCLUDE[wxp](../../../../includes/wxp-md.md)] の ASPNET、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] の NETWORK SERVICE アカウントなど\) で実行されているサービスからアクセスすることができます。 + + 別のアカウントでは、秘密キー ファイルへアクセスできない場合があります。これは、証明書が最初にこのアカウントによってインストールされていないからです。FindPrivateKey ツールでは、指定された X.509 証明書の秘密キー ファイルの場所を検索できます。特定の X.509 証明書の秘密キー ファイルの場所がわかれば、このファイルに対するアクセス許可の追加または削除を実行できます。 + + セキュリティ用の証明書を使用するこのサンプルでは、Setup.bat ファイル内の FindPrivateKey ツールを使用します。秘密キー ファイルが見つかったら、Cacls.exe などの別のツールを使用して、このファイルに対する適切なアクセス権を設定できます。 + + 自己ホスト型の実行可能ファイルなどの [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをユーザー アカウントで実行している場合は、そのユーザー アカウントがそのファイルへの読み取り専用のアクセス権限を持っていることを確認します。インターネット インフォメーション サービス \(IIS\) で [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを実行している場合、サービスが実行されている既定のアカウントは、[!INCLUDE[wxp](../../../../includes/wxp-md.md)] では ASPNET、[!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] では NETWORK SERVICE です。これらのアカウントには、既定では秘密キー ファイルへのアクセス権限がありません。 + +## 例 + 証明書にアクセスする際、プロセスにその証明書に対する読み取り権限がない場合、次の例のような例外メッセージが表示されます。 + +``` +System.ArgumentException was unhandled +Message="The certificate 'CN=localhost' must have a private key that is capable of key exchange. The process must have access rights for the private key." +Source="System.ServiceModel" +``` + + この例外が発生したら、FindPrivateKey ツールを使用して秘密キー ファイルを検索し、サービスが実行されているプロセスにアクセス権を設定します。たとえば、次の例に示すように、Cacls.exe ツールを使用して処理できます。 + +``` +cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\8aeda5eb81555f14f8f9960745b5a40d_38f7de48-5ee9-452d-8a5a-92789d7110b1" /E /G "NETWORK SERVICE":R +``` + +#### FindPrivateKey プロジェクトをビルドするには + +1. [!INCLUDE[fileExplorer](../../../../includes/fileexplorer-md.md)] を開き、サンプルのインストール ディレクトリに存在する言語固有のサブディレクトリに移動します。 + +2. .sln ファイルのアイコンをダブルクリックして、このファイルを Visual Studio で開きます。 + +3. **\[ビルド\]** メニューの **\[ソリューションのリビルド\]** をクリックします。クライアント プログラムが client\\bin にビルドされ、サービス プログラムが service\\bin にビルドされます。 + +4. ソリューションをビルドすると、FindPrivateKey.exe ファイルが生成されます。 + +## 規約 \- コマンド ラインのエントリ + "\[*option*\]" は省略可能なパラメーターのセットを表します。 + + "{*option*}" は必須パラメーターのセットを表します。 + + "*option1* |*option2*" はオプションのセットから選択することを表します。 + + "\<*value*\>" は入力されるパラメーター値を表します。 + +## 使用法 + +``` +FindPrivateKey [{ {-n } | {-t } } [-f | -d | -a]] +``` + + 指定する項目は次のとおりです。 + +``` +       The subject name of the certificate +         The thumbprint of the certificate (You can use the Certmgr.exe tool to find this) +       -f            output file name only +       -d            output directory only +       -a            output absolute file name +``` + + コマンド プロンプトでパラメーターを指定しない場合、このヘルプ テキストが表示されます。 + +## 例 + この例では、現在のユーザーの Personal ストアで、"CN\=localhost" というサブジェクト名を持つ証明書のファイル名を検索します \(FindPrivateKey My CurrentUser \-n "CN\=localhost"\)。 + + この例では、現在のユーザーの Personal ストアで、"CN\=localhost" というサブジェクト名を持つ証明書のファイル名を検索し、ディレクトリの完全パスを出力します。 + +``` +User.FindPrivateKey My CurrentUser -n "CN=localhost" -a + +``` + + この例では、ローカル コンピューターの Personal ストアで、"03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52" というサムプリントを持つ証明書のファイル名を検索します。 + +``` +FindPrivateKey My LocalMachine -t "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52" –c +``` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/firewall-instructions.md b/docs/framework/wcf/samples/firewall-instructions.md new file mode 100644 index 00000000000..5d237b5e9fb --- /dev/null +++ b/docs/framework/wcf/samples/firewall-instructions.md @@ -0,0 +1,100 @@ +--- +title: "ファイアウォール手順 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: a7dc429f-65ac-4faf-974a-77d5fb977fe1 +caps.latest.revision: 32 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 32 +--- +# ファイアウォール手順 +[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サンプルが機能するように、ファイアウォール内でいくつかのポートまたはプログラムを有効にする必要があります。サンプルの多くは、通信する際に 8000 ~ 8003 の範囲のポートと 9000 のポートを使用します。既定ではファイアウォールが有効なので、こうしたポートにはアクセスできません。サンプル用にファイアウォールを有効にするには、要件とセキュリティ環境に応じて次のいずれかの手順を完了する必要があります。 + +- オプション 1: 実行中のサンプルを対話形式で有効にします。ファイアウォールの構成をあらかじめ変更することなく、サンプルのビルドおよび実行の開始に進みます。サンプルが実行されると、**\[Windows セキュリティの緊急警告\]** ダイアログ ボックスが表示されます。対象のプログラムを、ブロック解除の一覧に対話形式で追加できます。この手順では、この後サンプルを再起動する必要があります。 + +- オプション 2: サンプル プログラムをあらかじめ有効にしておきます。**Windows ファイアウォールのコントロール パネル** アプレットを開始し、実行するサンプル プログラムを有効にします。実行可能ファイルが存在するように、プログラムを最初にビルドする必要があります。手順の詳細については、後述を参照してください。 + +- オプション 3: ポート範囲をあらかじめ有効にしておきます。**Windows ファイアウォール**の**コントロール パネル** アプレットを開始し、サンプルで使用するポート 80、443、8000 ~ 8003、および 9000 を有効にします。手順の詳細については、後述を参照してください。このオプションは他の手順よりも安全性が低くなります。サンプルだけでなく、任意のプログラムでこれらのポートを使用できるようになるからです。 + + どの手順を使用するか判断に迷う場合は、最初のオプションを選択してください。他のベンダのファイアウォールを実行している場合も、同様の変更が必要になる場合があります。 + +> [!IMPORTANT] +> ファイアウォールの構成を変更すると、セキュリティに影響します。変更内容は記録し、サンプルの使用が終わったらそれらの変更点を削除することをお勧めします。 + +### サンプル プログラムをあらかじめ有効にしておくには + +1. このサンプルをビルドします。 + +2. **\[スタート\]** ボタンをクリックし、**\[ファイル名を指定して実行\]** をクリックして、「`firewall.cpl`」と入力します。これにより、**Windows ファイアウォールのコントロール パネル** アプレットが開きます。 + + > [!NOTE] + > Windows ファイアウォールを介して通信する機能が必要なサンプルを実行するには、ファイアウォール設定を変更するための権限が必要です。一部のファイウォール設定を変更できず、コンピューターがドメインに接続される場合は、システム管理者がグループ ポリシーを使用してファイアウォール設定を管理している可能性があります。 + +3. Windows ファイアウォールを介したプログラムを許可するには、次のいずれかの手順を実行します。 + + - Windows 7 または Windows Server 2008 R2 の場合は、**\[Windows ファイアウォールを介したプログラムまたは機能を許可する\]** をクリックします。**\[設定の変更\]**、**\[別のプログラムの許可...\]** の順にクリックします。 + + - [!INCLUDE[wv](../../../../includes/wv-md.md)] または [!INCLUDE[lserver](../../../../includes/lserver-md.md)] の場合は、**\[Windows ファイアウォールによるプログラムの許可\]** をクリックします。 + +4. **\[例外\]** タブの **\[プログラムの追加\]** をクリックします。 + +5. **\[参照\]** ボタンをクリックして、実行するサンプルの実行可能ファイルを選択します。 + +6. 手順 4. と 5. を繰り返して、実行するすべてのサンプルの実行可能ファイルを追加します。 + +7. **\[OK\]** をクリックして、ファイアウォール アプレットを閉じます。 + +### ポート範囲をあらかじめ有効にしておくには + +1. **\[スタート\]** ボタンをクリックし、**\[ファイル名を指定して実行\]** をクリックして、「`firewall.cpl`」と入力します。これにより、**Windows ファイアウォールのコントロール パネル** アプレットが開きます。 + +2. Windows 7 または Windows Server 2008 R2 の場合は、次の手順を実行します。 + + 1. \[Windows ファイアウォール\] ウィンドウの左の列で、**\[詳細設定\]** をクリックします。 + + 2. 左の列で、**\[受信の規則\]** をクリックします。 + + 3. 右の列で、**\[新しい規則\]** をクリックします。 + + 4. **\[ポート\]** を選択して **\[次へ\]** をクリックします。 + + 5. **\[TCP\]** を選択し、**\[特定のローカル ポート\]** フィールドに「`8000, 8001, 8002, 8003, 9000, 80, 443`」と入力します。 + + 6. **\[次へ\]** をクリックします。 + + 7. **\[接続を許可する\]** を選択して **\[次へ\]** をクリックします。 + + 8. **\[ドメイン\]** と **\[プライベート\]** を選択して **\[次へ\]** をクリックします。 + + 9. この規則の名前を「`WCF-WF 4.0 サンプル`」に設定し、**\[完了\]** をクリックします。 + + 10. **\[送信の規則\]** をクリックし、手順 c ~ h を繰り返します。 + +3. [!INCLUDE[wv](../../../../includes/wv-md.md)] または [!INCLUDE[lserver](../../../../includes/lserver-md.md)] の場合は、次の手順を実行します。 + + 1. **\[Windows ファイアウォールによるプログラムの許可\]** をクリックします。 + + 2. **\[例外\]** タブの **\[ポートの追加\]** をクリックします。 + + 3. ポートの名前とポート番号 8000 を入力して、**\[TCP\]** オプションをクリックします。 + + 4. **\[スコープの変更\]** をクリックして **\[ユーザーのネットワーク \(サブネット\) のみ\]** オプションをクリックし、**\[OK\]** をクリックします。 + + 5. 手順 b ~ d を繰り返して、ポート 8001、8002、8003、9000、80、および 443 を設定します。 + +4. **\[OK\]** をクリックして、ファイアウォール アプレットを閉じます。 + +> [!NOTE] +> サンプルの実行が終わったら、ファイアウォールのすべての例外を削除します。これを行うには、**Windows ファイアウォールのコントロール パネル** アプレットを開き、前の手順で追加したすべてのプログラムまたはポートのエントリを削除します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/form-post.md b/docs/framework/wcf/samples/form-post.md new file mode 100644 index 00000000000..33a1974e5f9 --- /dev/null +++ b/docs/framework/wcf/samples/form-post.md @@ -0,0 +1,64 @@ +--- +title: "フォーム ポスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: fa6f84f9-2e07-4e3c-92d0-a245308b7dff +caps.latest.revision: 9 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 9 +--- +# フォーム ポスト +このサンプルでは、WCF REST プログラミング モデルを拡張して新しい受信要求形式をサポートする方法を示します。 このサンプルには、要求を HTML フォーム ポストから [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型に逆シリアル化できるフォーマッタの実装も含まれています。 また、このサンプルでは T4 テンプレートを使用して、ユーザーが WCF REST サービスにポストバックできる HTML フォームを提供する HTML ページを返します。 + +## 使用例 + +- 受信要求形式のサポートの拡張。 + +- T4 テンプレートの統合。 + +## 説明 + このサンプルは、2 つのプロジェクトで構成されます。 1 つ目のプロジェクトは、HTML フォーム ポストを [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型に逆シリアル化できるカスタム要求フォーマッタを含む HtmlFormProcessing ライブラリです。 2 つ目のプロジェクトは、HtmlFormProcessing ライブラリのカスタム要求フォーマッタを使用するように基本的なリソース サービス サンプルを拡張するコンソール アプリケーションです。 + + HTML フォーム ポストを逆シリアル化できるカスタム フォーマッタ \(HtmlFormRequestDispatchFormatter\) は、 を使用して文字列から変換できる [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型と、QueryStringConverter を使用して文字列から変換できるメンバーのみを持つ でマークされた型の両方を受け入れます。 + + HtmlFormProcessing ライブラリ プロジェクトには、他のカスタム要求フォーマッタを作成するために使用できる抽象基本クラス `RequestBodyDispatchFormatter` も含まれています。 `RequestBodyDispatchFormatter` から派生させると、開発者は、基本クラスで URI テンプレート パラメーターを操作のメソッド パラメーターにマップできるようにする要求本文の逆シリアル化ロジックに集中できます。 また、HtmlFormProcessing ライブラリ プロジェクトには、 から派生させて既定の要求フォーマッタをカスタム要求フォーマッタに置き換える方法を示す `HtmlFormProcessingBehavior` クラスもあります。 + + このコンソール アプリケーション プロジェクトでは、「[基本的なリソース サービス](../../../../docs/framework/wcf/samples/basic-resource-service.md)」のサンプルを拡張します。 基本的なリソース サービス サンプルは、WCF REST プログラミング モデルを使用してリソースを公開する方法を示しています。 基本的なリソース サービス サンプルでは、コレクション内の顧客を作成、取得、更新、および削除できるように、顧客コレクション リソースが公開されています。 基本的なリソース サービス サンプルでは、ネイティブでサポートされる XML と JSON の 2 つの受信要求形式のみが使用されます。 + + このフォーム ポスト サンプルのコンソール アプリケーションでは、HtmlFormProcessing ライブラリのカスタム フォーマッタが使用されるので、ユーザーはブラウザーを使用して HTML フォーム ポストから要求を送信することで顧客を作成できます。 また、このサンプルでは、サービスにポストバックされるフォームを含む HTML ページを返す操作も追加します。 この HTML ページは、事前に処理された T4 テンプレートを使用して生成されます。この T4 テンプレートは .tt ファイルと自動生成された .cs ファイルで構成されます。 開発者は、.tt ファイルを使用して変数と制御構造を含むテンプレート フォームで応答を作成できます。 [!INCLUDE[crabout](../../../../includes/crabout-md.md)] T4、「[コード生成と T4 テキスト テンプレート](http://go.microsoft.com/fwlink/?LinkId=178139)」を参照してください。 + +#### サンプルを実行するには + +1. フォーム ポスト サンプルのソリューションを開きます。 サンプルを正しく実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を起動するときに、管理者として実行する必要があります。 管理者として実行するには、[!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] アイコンを右クリックし、コンテキスト メニューの \[管理者として実行\] をクリックします。 + +2. Ctrl キーと Shift キーを押しながら B キーを押してソリューションをビルドし、Ctrl キーを押しながら F5 キーを押してコンソール アプリケーションの FormPost プロジェクトを実行します。 + +3. コンソール ウィンドウが表示されて、実行中のサービスの URI および実行中のサービスの HTML ヘルプ ページの URI が示されます。 + +4. サンプルが実行されると、クライアントは現在のアクティビティのステータス \(顧客を追加しているのか、顧客を更新しているのか、顧客を削除しているのか、または現在の顧客の一覧をサービスから取得しているのか\) をコンソール ウィンドウに書き込みます。 + +5. 顧客フォームの URI を参照するように求められます。 ブラウザーを開き、指定された URI を参照します。 顧客の名前と住所を入力し、**\[送信\]** ボタンをクリックします。 + +6. コンソール ウィンドウでサンプルの実行を続けるには、任意のキーを押します。 + +7. サンプルが完了すると、ブラウザーを使用して作成した顧客が最終的な顧客の一覧に追加されたことがわかります。 + +8. 任意のキーを押して、サンプルを終了します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Web\FormPost` \ No newline at end of file diff --git a/docs/framework/wcf/samples/getting-started-sample.md b/docs/framework/wcf/samples/getting-started-sample.md new file mode 100644 index 00000000000..bc34edce242 --- /dev/null +++ b/docs/framework/wcf/samples/getting-started-sample.md @@ -0,0 +1,303 @@ +--- +title: "入門サンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "基本的なサンプル [WCF], 概要" +ms.assetid: 967a3d94-0261-49ff-b85a-20bb07f1af20 +caps.latest.revision: 60 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 60 +--- +# 入門サンプル +この入門サンプルでは、一般的なサービスと一般的なクライアントを、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用して実装する方法を示します。このサンプルは、他のすべての基本的な技術サンプルの基礎になります。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\GettingStarted\GettingStarted` + + サービスが実行する操作は、メタデータとしてパブリックに公開するサービス コントラクト内に表されています。また、サービスにはその操作を実装するためのコードが含まれています。 + + クライアントには、サービス コントラクトの定義と、サービスにアクセスするためのプロキシ クラスが含まれています。プロキシ コードは、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) を使用してサービス メタデータから生成されます。 + + [!INCLUDE[wv](../../../../includes/wv-md.md)] では、サービスは Windows アクティベーション サービス \(WAS\) 内でホストされます。[!INCLUDE[wxp](../../../../includes/wxp-md.md)] と [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] では、インターネット インフォメーション サービス \(IIS\) と ASP.NET によってホストされます。サービスを IIS または WAS でホストすることにより、サービスに初めてアクセスしたときにそのサービスを自動的にアクティブ化できます。 + +> [!NOTE] +> IIS ではなくコンソール アプリケーションでサービスをホストするサンプルから始める場合は、「[自己ホスト](../../../../docs/framework/wcf/samples/self-host.md)」サンプルを参照してください。 + + サービスとクライアントは、アクセスの詳細を構成ファイルの設定により指定します。この方法によって展開時の柔軟性が得られます。この設定には、アドレス、バインディング、およびコントラクトを指定するエンドポイント定義が含まれます。バインディングは、サービスへのアクセス方法を示すためのトランスポートとセキュリティの詳細を指定します。 + + サービスは、メタデータを公開するようにランタイムの動作を構成します。 + + サービスは、要求\/応答通信パターンを定義するコントラクトを実装します。このコントラクトは `ICalculator` インターフェイスによって定義されており、算術演算 \(加算、減算、乗算、および 除算\) を公開しています。クライアントは指定された算術演算を要求し、サービスは結果と共に応答します。サービスは、次に示すコードで定義される `ICalculator` コントラクトを実装します。 + +```vb +' Define a service contract. + + Public Interface ICalculator + + Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double + + Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double + + Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double + + Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double + End Interface + +``` + +```csharp +// Define a service contract. +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] +public interface ICalculator +{ + [OperationContract] + double Add(double n1, double n2); + [OperationContract] + double Subtract(double n1, double n2); + [OperationContract] + double Multiply(double n1, double n2); + [OperationContract] + double Divide(double n1, double n2); +} + +``` + + サービス実装は計算を行い、結果を返します。次のコード例を参照してください。 + +```vb +' Service class which implements the service contract. +Public Class CalculatorService +Implements ICalculator +Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Add +Return n1 + n2 +End Function + +Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Subtract +Return n1 - n2 +End Function + +Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Multiply +Return n1 * n2 +End Function + +Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Divide +Return n1 / n2 +End Function +End Class + +``` + +```csharp +// Service class that implements the service contract. +public class CalculatorService : ICalculator +{ + public double Add(double n1, double n2) + { + return n1 + n2; + } + public double Subtract(double n1, double n2) + { + return n1 - n2; + } + public double Multiply(double n1, double n2) + { + return n1 * n2; + } + public double Divide(double n1, double n2) + { + return n1 / n2; + } +} + +``` + + サービスは、そのサービスとの通信に使用する単一エンドポイントを公開します。エンドポイントは構成ファイル \(Web.config\) を使用して定義します。次のサンプル構成を参照してください。 + +```xaml + + + + + ... + + + +``` + + サービスは、IIS ホストまたは WAS ホストから提供されるベース アドレスで、エンドポイントを公開します。バインディングの構成には、標準の を使用します。これは HTTP 通信と Web サービスの標準プロトコルを提供し、アドレス指定とセキュリティをサポートします。コントラクトは、サービスによって実装される `ICalculator` です。 + + 上記の構成では、サービスと同じコンピューター上にあるクライアントは、http:\/\/localhost\/servicemodelsamples\/service.svc でサービスにアクセスできます。リモート コンピューター上のクライアントがサービスにアクセスするには、localhost の代わりに完全修飾ドメイン名を指定する必要があります。 + + 既定では、フレームワークはメタデータを公開しません。そのため、サービスは を有効にし、Metadata Exchange \(MEX\) エンドポイントを http:\/\/localhost\/servicemodelsamples\/service.svc\/mex で公開します。これを設定する構成を次に示します。 + +```xaml + + + + ... + + + + + + + + + + + + + + + +``` + + クライアントは、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) によって生成されたクライアント クラスを使用することによって、特定のコントラクト型を使用して通信を行います。このように生成されたクライアントは、ファイル generatedClient.cs または generatedClient.vb に含まれています。このユーティリティは、特定のサービス用のメタデータを取得し、特定のコントラクト型を使用して通信するクライアント アプリケーションによって使用されるクライアントを生成します。クライアント コードを生成するには、ホストされるサービスを利用できる必要があります。このサービスは、更新されたメタデータの取得に使用されるためです。 + + 次のコマンドをクライアント ディレクトリで SDK コマンド プロンプトから実行して、型指定のあるプロキシを生成します。 + +``` +svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs +``` + + Visual Basic でクライアントを生成するには、次のコマンドを SDK コマンド プロンプトから入力します。 + + `Svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb` + + 生成されたクライアントを使用することにより、クライアントは適切なアドレスとバインディングを構成して、指定のサービス エンドポイントにアクセスできます。サービスと同様、クライアントは構成ファイル \(App.config\) を使用して、通信するエンドポイントを指定します。クライアント エンドポイント構成は、サービス エンドポイントの絶対アドレス、バインディング、およびコントラクトで構成されます。次の例を参照してください。 + +```xaml + + + + +``` + + クライアント実装はクライアントをインスタンス化し、型指定のあるインターフェイスを使用してサービスとの通信を開始します。次のコード例を参照してください。 + +```vb +' Create a client +Dim client As New CalculatorClient() + +' Call the Add service operation. + Dim value1 = 100.0R + Dim value2 = 15.99R + Dim result = client.Add(value1, value2) +Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result) + +' Call the Subtract service operation. +value1 = 145.00R +value2 = 76.54R +result = client.Subtract(value1, value2) +Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result) + +' Call the Multiply service operation. +value1 = 9.00R +value2 = 81.25R +result = client.Multiply(value1, value2) +Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result) + +' Call the Divide service operation. +value1 = 22.00R +value2 = 7.00R +result = client.Divide(value1, value2) +Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result) + +'Closing the client gracefully closes the connection and cleans up resources + +``` + +```csharp +// Create a client. +CalculatorClient client = new CalculatorClient(); + +// Call the Add service operation. +double value1 = 100.00D; +double value2 = 15.99D; +double result = client.Add(value1, value2); +Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + +// Call the Subtract service operation. +value1 = 145.00D; +value2 = 76.54D; +result = client.Subtract(value1, value2); +Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); + +// Call the Multiply service operation. +value1 = 9.00D; +value2 = 81.25D; +result = client.Multiply(value1, value2); +Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); + +// Call the Divide service operation. +value1 = 22.00D; +value2 = 7.00D; +result = client.Divide(value1, value2); +Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); + +//Closing the client releases all communication resources. +client.Close(); + +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. + +``` + + この入門サンプルでは、サービスとクライアントの標準的な作成方法を示します。その他の[Basic](../../../../docs/framework/wcf/samples/basic-sample.md)では、このサンプルに基づいて、具体的な製品機能の例を示します。 + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## 参照 + [方法 : マネージ アプリケーションで WCF サービスをホストする](../../../../docs/framework/wcf/how-to-host-a-wcf-service-in-a-managed-application.md) + [方法 : IIS で WCF サービスをホストする](../../../../docs/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/hello-world-with-the-routing-service.md b/docs/framework/wcf/samples/hello-world-with-the-routing-service.md new file mode 100644 index 00000000000..f29abf0195e --- /dev/null +++ b/docs/framework/wcf/samples/hello-world-with-the-routing-service.md @@ -0,0 +1,66 @@ +--- +title: "ルーティング サービスを使用した Hello World | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 0f4b0d5b-6522-4ad5-9f3a-baa78316d7d1 +caps.latest.revision: 13 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 13 +--- +# ルーティング サービスを使用した Hello World +このサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] ルーティング サービスを示します。ルーティング サービスは、コンテンツ ベースのルーターをアプリケーションに簡単に追加できるようにする [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] コンポーネントです。このサンプルでは、標準の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 電卓のサンプルを改良し、ルーティング サービスを使用して通信するようにします。このサンプルの電卓クライアントは、ルーターによって公開されるエンドポイントにメッセージを送信するように構成されています。ルーティング サービスは、送信されてきたすべてのメッセージを受け入れ、電卓サービスに対応するエンドポイントに転送するように構成されています。したがって、クライアントから送信されたメッセージはルーターで受信され、実際の電卓サービスに再ルーティングされます。電卓サービスからのメッセージはルーターに送り返され、ルーターから電卓クライアントに渡されます。 + +### このサンプルを使用するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を使用して、HelloRoutingService.sln を開きます。 + +2. F5 キーを押すか、Ctrl キーと Shift キーを押しながら B キーを押します。 + + > [!NOTE] + > F5 キーを押した場合は、電卓クライアントが自動的に起動します。Ctrl キーと Shift キーを押しながら B キーを押した \(ビルドする\) 場合は、次のアプリケーションを手動で開始する必要があります。 + > + > 1. 電卓クライアント \(.\/CalculatorClient\/bin\/client.exe\) + > 2. 電卓サービス \(.\/CalculatorService\/bin\/service.exe\) + > 3. ルーティング サービス \(.\/RoutingService\/bin\/RoutingService.exe\) + +3. Enter キーを押してクライアントを起動します。 + + 次の出力が表示されます。 + + Add\(100,15.99\) \= 115.99 + + Subtract\(145,76.54\) \= 68.46 + + Multiply\(9,81.25\) \= 731.25 + + Divide\(22,7\) \= 3.14285714285714 + +## コードまたは App.Config で構成可能 + サンプルは、提供された時点では、App.config ファイルを使用してルーターの動作を定義するように構成されています。App.config ファイルの名前を別の名前に変更して認識されないようにし、ConfigureRouterViaCode\(\) に対するメソッド呼び出しのコメントを解除することもできます。どちらの方法でも、ルーターの動作は同じになります。 + +### シナリオ + このサンプルでは、基本的なメッセージ ポンプとして機能するルーターを示します。ルーティング サービスは、構成済みの一連の送信先エンドポイントに直接メッセージを渡すように構成された透過的なプロキシ ノードとして機能します。 + +### 実際のシナリオ + Contoso では、サービスの名前指定、アドレス指定、構成、およびセキュリティに関する柔軟性を高めるために、基本的なメッセージ ポンプをサービスの前に配置して、それをエンドポイントとして公開しています。これにより、実際のサービスの前にセキュリティが追加され、スケールアウトされたソリューションやサービスのバージョン管理を後で簡単に実装できるようになります。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\RoutingServices\HelloRoutingService` + +## 参照 + [AppFabric のホストおよび永続化のサンプル](http://go.microsoft.com/fwlink/?LinkId=193961) \ No newline at end of file diff --git a/docs/framework/wcf/samples/hierarchical-configuration-model.md b/docs/framework/wcf/samples/hierarchical-configuration-model.md new file mode 100644 index 00000000000..ccd6bc411a8 --- /dev/null +++ b/docs/framework/wcf/samples/hierarchical-configuration-model.md @@ -0,0 +1,85 @@ +--- +title: "階層的な構成モデル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 28dcc698-226c-4b77-9e51-8bf45a36216c +caps.latest.revision: 12 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 12 +--- +# 階層的な構成モデル +このサンプルでは、サービスの構成ファイルの階層を実装する方法を示します。また、バインド、サービス動作、およびエンドポイント動作を階層の上位レベルから継承する方法も示します。 + +## サンプルの詳細 + [!INCLUDE[netfx40_long](../../../../includes/netfx40-long-md.md)] の [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 用に開発された機能の 1 つとして、階層的な構成モデルの強化があります。階層的な構成モデルは、たとえば、Machine.config \-\> Rootweb.config \-\> Web.config のように定義されます。[!INCLUDE[netfx40_short](../../../../includes/netfx40-short-md.md)] では、構成階層の上位レベルで定義されるこれらのバインドおよび動作が、明示的な構成なしにサービスに追加されます。このサンプルでは、コンピューター レベルまたはアプリケーション レベルで定義された構成要素に依存することによって簡単なサービス構成を実現する方法を示します。 + + このサンプルは、階層の 3 つのレベルで定義された 9 個のサービスから構成されます。`Service1` はルートになります。`Service2` と `Service3` は `Service1` から既定の要素を継承します。`Service4`、`Service5`、`Service6`、および `Service7` は、階層の第 3 レベルで定義され、`Service3` から既定の要素を継承します。最後に、`Service10` および `Service11` は階層の第 4 レベルに置かれます。 + + すべてのサービスは `IDesc` コントラクトを実装します。`IDesc` インターフェイスの定義を次に示します。この定義は、このインターフェイスで公開されるメソッドを示しています。`IDesc` インターフェイスは Service1.cs で定義されます。 + +``` +// Define a service contract +[ServiceContract(Namespace="http://Microsoft.Samples.ConfigHierarchicalModel")] +public interface IDesc +{ + [OperationContract] + List ListEndpoints(); + [OperationContract] + List ListServiceBehaviors(); + [OperationContract] + List ListEndpointBehaviors(); +} + +``` + + サービスによるこれらのメソッドの実装は単純です。`ListEndpoints` は、すべてのサービス エンドポイントを反復処理し、サービスにあるすべてのエンドポイントのリストを返します。`ListServiceBehaviors` は、サービスに追加されたすべての動作を反復処理し、サービスに関連付けられているすべてのサービス動作のリストを返します。`ListEndpointBehaviors` は、`ListServiceBehaviors` と同様に動作しますが、サービス動作ではなくエンドポイント動作のリストを返します。 + + この実装により、クライアントは、サービスで公開されているエンドポイントの数、およびサービスに追加されたサービス動作とエンドポイント動作を認識できます。サンプルの一部として実装されているクライアントは、ソリューションのすべてのサービスにサービス参照を追加し、サービスごとにこれらの要素を示します。 + +## このサンプルを使用するには + +#### クライアントを実行するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を使用して、ConfigHierarchicalModel.sln ファイルを開きます。 + +2. クライアント プロジェクトはまだスタートアップ プロジェクトに設定されていないので、次の手順で設定します。 + + 1. **ソリューション エクスプローラー**で、ソリューションを右クリックし、**\[プロパティ\]** をクリックします。 + + 2. **\[共通プロパティ\]** で、**\[スタートアップ プロジェクト\]** をクリックし、**\[シングル スタートアップ プロジェクト\]** をクリックします。 + + 3. **\[シングル スタートアップ プロジェクト\]** ボックスの一覧で、**\[クライアント\]** をクリックします。 + + 4. **\[OK\]** をクリックしてダイアログ ボックスを閉じます。 + +3. サンプルをビルドするには、Ctrl キーと Shift キーを押しながら B キーを押します。 + +4. クライアントを実行するには、Ctrl キーを押しながら F5 キーを押します。 + +> [!NOTE] +> この手順が機能しない場合は、次の手順を使用して、環境設定が適切であることを確認してください。 +> +> 1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 +> 2. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 +> 3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\ConfigHierarchicalModel` + +## 参照 + [AppFabric の管理のサンプル](http://go.microsoft.com/fwlink/?LinkId=193960) \ No newline at end of file diff --git a/docs/framework/wcf/samples/hosting.md b/docs/framework/wcf/samples/hosting.md new file mode 100644 index 00000000000..b3dbd624abb --- /dev/null +++ b/docs/framework/wcf/samples/hosting.md @@ -0,0 +1,42 @@ +--- +title: "ホスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 8a6ec5d4-d191-49cc-bb0f-a07639dc60d4 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# ホスト +このセクションには、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスをホストする方法を示すサンプルが含まれています。 + +## このセクションの内容 + [Windows プロセス アクティブ化](../../../../docs/framework/wcf/samples/windows-process-activation.md) + ネットワーク プロトコルを使用したサービスのアクティブ化について説明します。 + + [構成ベースのアクティブ化](../../../../docs/framework/wcf/samples/configuration-based-activation.md) + .svc ファイルを使用せずに [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスをアクティブ化する方法を示します。 + + [SystemWebRouting 統合サンプル](../../../../docs/framework/wcf/samples/systemwebrouting-integration-sample.md) + 名前空間内のクラスを使用してレイヤーの統合をホストする方法を示します。 + + [ASP.NET 互換性](../../../../docs/framework/wcf/samples/aspnet-compatibility.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] で [!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 互換性モードを有効にする方法を示します。 + + [インライン コードを使用した IIS ホスティング](../../../../docs/framework/wcf/samples/iis-hosting-using-inline-code.md) + インターネット インフォメーション サービス \(IIS\) によってホストされるサービスを実装する方法を示します。サービス コードは .svc ファイルにインラインで含まれており、必要に応じてコンパイルされます。 + + [Windows サービス ホスト](../../../../docs/framework/wcf/samples/windows-service-host.md) + マネージ Windows サービスでホストされる [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスを示します。 + + [自己ホスト](../../../../docs/framework/wcf/samples/self-host.md) + 自己ホスト型サービスをコンソール アプリケーションに実装する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/http-acknowledgement-channel.md b/docs/framework/wcf/samples/http-acknowledgement-channel.md new file mode 100644 index 00000000000..e260dcf7ed0 --- /dev/null +++ b/docs/framework/wcf/samples/http-acknowledgement-channel.md @@ -0,0 +1,55 @@ +--- +title: "HTTP 受信確認チャネル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 469f3056-5ef2-4753-8acf-b574d23d83cf +caps.latest.revision: 10 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 10 +--- +# HTTP 受信確認チャネル +HTTP 受信確認チャネルは、一方向メッセージング パターンを変える階層チャネルの例です。これにより、サービスでは、受信確認を自動的に送信するのではなく受信メッセージを承認または拒否できるようになります。また、HTTP 受信確認チャネルにより、サービスでは、メッセージが処理されるというビジネス レベルの保証がなされるまで受信確認を遅らせることができます。 + +## 使用例 + 、階層チャネルの例 \(HTTP 受信確認チャネル\)。 + +## 説明 + HTTP 受信確認チャネルでは、 を実装して、HTTP 要求\/応答メッセージング パターンを、受信確認の遅延が可能な一方向のパターンに変えます。この新しいパターンを使用すると、サービスでは、OK を示す HTTP ステータス コード 200 の形式で受信確認を送信することによって、メッセージ処理が完了するまでクライアントをブロックすることなく、メッセージ処理を保証できます。または、内部サーバー エラーを示す HTTP ステータス コード 500 の形式でエラー メッセージをクライアントに送信できます。たとえば、サービスでは、メッセージをキューに書き込んだ後に受信確認を送信し、その後で、非同期にメッセージの処理を継続することもできます。このシナリオでは、クライアントは、サービスから受信確認を受け取るまで各メッセージを再送信する場合に、サービスによってメッセージが少なくとも一度は処理されたことを確認できます。ただし、サービスで、メッセージ処理の保証なしに、HTTP を介した非同期の高速なメッセージ処理を行う必要がある場合は、 の方が適しています。 + + を使用すると、サービスでメッセージを処理できるかどうか判断している間、メッセージをそのままの状態にしておくことができます。サービスでメッセージを正常に処理できることは、HTTP OK ステータス コードを送信する オブジェクトで Complete を呼び出すことによって示されます。また、サービスでメッセージを処理できるかどうかは、HTTP 内部サーバー エラー ステータス コードを送信する オブジェクトで の `Abandon` メソッドを呼び出すことによって示されます。 + + この例では、クライアントは従業員 ID を送信して処理情報を要求します。サービス側では、受信した従業員 ID が 50 を超える場合は、HTTP ステータス コード 500 \(内部サーバー エラー\) をクライアントに送信します。それ以外の場合は、処理を正常に実行できると想定し、HTTP ステータス コード 200 \(成功\) をクライアントに送信します。 + +#### サンプルを設定、ビルド、および実行するには + +1. [!INCLUDE[vs_current_long](../../../../includes/vs-current-long-md.md)] を管理者権限で開きます。 + +2. **HttpAckChannel** ソリューションを開きます。 + +3. **ソリューション エクスプローラー**で **Service** プロジェクトを右クリックしてプロジェクトの新しいインスタンスを開始し、コンテキスト メニューから **\[デバッグ\]**、**\[新しいインスタンスを開始\]** の順にクリックします。 + +4. **ソリューション エクスプローラー**で **Client** プロジェクトを右クリックしてプロジェクトの新しいインスタンスを開始し、コンテキスト メニューから **\[デバッグ\]**、**\[新しいインスタンスを開始\]** の順にクリックします。 + +5. サービスが開始されたら、クライアント ウィンドウで Enter キーを押して、クライアントからサービスにメッセージを送信します。 + +6. 最初のメッセージがサービスで処理され、サービスからクライアントに HTTP OK ステータス コードが送信されます。 + +7. 2 番目のメッセージは失敗し、サービスからクライアントに HTTP 内部サーバー エラー ステータス コードが送信されます。これにより、 がクライアントで発生します。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Channels\HttpAckChannel` \ No newline at end of file diff --git a/docs/framework/wcf/samples/httpcookiesession.md b/docs/framework/wcf/samples/httpcookiesession.md new file mode 100644 index 00000000000..8f34dd0bb36 --- /dev/null +++ b/docs/framework/wcf/samples/httpcookiesession.md @@ -0,0 +1,181 @@ +--- +title: "HttpCookieSession | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 101cb624-8303-448a-a3af-933247c1e109 +caps.latest.revision: 31 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 31 +--- +# HttpCookieSession +このサンプルでは、カスタム プロトコル チャネルを作成し、セッション管理用の HTTP クッキーを使用する方法を示します。このチャネルは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サービスと ASMX クライアント間の通信、または [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] クライアントと ASMX サービス間の通信を有効にします。 + + クライアントがセッション ベースの ASMX Web サービス内で Web メソッドを呼び出すと、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] エンジンは次の処理を行います。 + +- 一意の ID \(セッション ID\) を生成します。 + +- セッション オブジェクトを生成し、一意の ID に関連付けます。 + +- 一意の IDを Set\-Cookie HTTP 応答ヘッダーに追加し、クライアントに送信します。 + +- 送信されるセッション ID に基づき、以降の呼び出しでクライアントを識別します。 + + クライアントは、サーバーに対する以降の要求にこのセッション ID を含めます。サーバーはクライアントのセッション ID を使用して、現在の HTTP コンテキストに適切なセッション オブジェクトを読み込みます。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Channels\HttpCookieSession` + +## HttpCookieSession チャネルのメッセージ交換パターン + このサンプルでは、ASMX などのシナリオのセッションを有効にします。チャネル スタックの一番下には、 をサポートする HTTP トランスポートがあります。これはチャネルのジョブで、より高いレベルのチャネル スタックにセッションを提供します。このサンプルでは、セッションをサポートする 2 つのチャネル \( および \) を実装します。 + +## サービス チャネル + このサンプルでは、`HttpCookieReplySessionChannelListener` クラスでサービス チャネルを提供します。このクラスは インターフェイスを実装し、チャネル スタックの低いレベルにある チャネルを に変換します。このプロセスは、次の部分に分かれています。 + +- チャネル リスナが開かれると、チャネル リスナは内部リスナの内部チャネルを受け入れます。内部リスナはデータグラム リスナであり、受け入れられたチャネルの有効期間は内部リスナの有効期間から切り離されるため、次のように、内部リスナを閉じて内部チャネルの保持のみを行うことができます。 + + ``` + this.innerChannelListener.Open(timeoutHelper.RemainingTime()); + this.innerChannel = this.innerChannelListener.AcceptChannel(timeoutHelper.RemainingTime()); + this.innerChannel.Open(timeoutHelper.RemainingTime()); + this.innerChannelListener.Close(timeoutHelper.RemainingTime()); + ``` + +- チャネル リスナを開くプロセスが完了したら、次のようにメッセージ ループをセットアップし、内部チャネルからメッセージを受信します。 + + ``` + IAsyncResult result = BeginInnerReceiveRequest(); + if (result != null && result.CompletedSynchronously) + { + // do not block the user thread + if (this.completeReceiveCallback == null) + { + this.completeReceiveCallback = new WaitCallback(CompleteReceiveCallback); + } + ThreadPool.QueueUserWorkItem(this.completeReceiveCallback, result); + } + ``` + +- メッセージが到着したら、サービス チャネルはセッション識別子を調べ、非多重化を行って適切なセッション チャネルに変換します。このチャネル リスナは、セッション識別子をセッション チャネル インスタンスにマップするディクショナリを保持します。 + + ``` + Dictionary channelMapping; + ``` + + `HttpCookieReplySessionChannel` クラスは、 を実装しています。より高いレベルのチャネル スタックは メソッドを呼び出し、このセッションの要求を読み込みます。各セッション チャネルにはプライベート メッセージ キューがあり、サービス チャネルによって設定されます。 + +``` +InputQueue requestQueue; +``` + + ユーザーが メソッドを呼び出したときに、このメッセージ キューにメッセージがない場合は、チャネルは指定された時間分待機した後にシャットダウンします。これにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 以外のクライアント用に作成されたセッション チャネルがクリーンアップされます。 + + `channelMapping` を使用して `ReplySessionChannels` を追跡します。受け入れられたすべてのチャネルが閉じられた後で、基になる `innerChannel` を閉じます。この方法により、`HttpCookieReplySessionChannel` は `HttpCookieReplySessionChannelListener` の有効期間を過ぎても存在できます。また、リスナのガベージ コレクトは気にする必要はありません。受け入れられたチャネルは、`OnClosed` コールバックを介してそのチャネルのリスナへの参照を保持するためです。 + +## クライアント チャネル + 対応するクライアント チャネルは、`HttpCookieSessionChannelFactory` クラスにあります。チャネルの作成中、チャネル ファクトリは内部要求チャネルを `HttpCookieRequestSessionChannel` でラップします。`HttpCookieRequestSessionChannel` クラスは、基になる要求チャネルへの呼び出しを転送します。クライアントがプロキシを閉じると、`HttpCookieRequestSessionChannel` はチャネルが閉じられようとしていることを示すメッセージをサービスに送信します。そのため、サービス チャネル スタックは、使用中のセッション チャネルを正常にシャットダウンできます。 + +## バインディングとバインディング要素 + サービス チャネルおよびクライアント チャネルを作成した後の次の手順は、それらのチャネルを [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムに統合することです。チャネルは、バインディングとバインディング要素を介して [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] に公開されます。バインディングは、1 つまたは複数のバインディング要素で構成されています。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] には、いくつかのシステム定義バインディングが用意されています。たとえば、BasicHttpBinding や WSHttpBinding などがあります。`HttpCookieSessionBindingElement` クラスには、バインディング要素の実装が含まれています。この実装によってチャネル リスナとチャネル ファクトリの作成メソッドがオーバーライドされ、必要なチャネル リスナまたはチャネル ファクトリがインスタンス化されます。 + + このサンプルでは、サービスの説明のポリシー アサーションを使用します。これにより、サンプルのチャネルの要件を、そのサービスを利用できる他のクライアントに公開できます。たとえば、このバインディング要素はポリシー アサーションを公開し、セッションがサポートされていることを潜在的なクライアントに通知します。このサンプルでは、バインディング要素の構成で `ExchangeTerminateMessage` プロパティが有効になっています。そのため、サービスで余分なメッセージ交換アクションがサポートされ、セッションでのメッセージ交換が終了されることを示すために必要なアサーションが追加されます。その後、クライアントはこのアクションを使用できます。`HttpCookieSessionBindingElement` から作成されたポリシー アサーションを、次の WSDL コードに示します。 + +``` + + + + + + + + +``` + + `HttpCookieSessionBinding` クラスは、システム指定のバインディング要素を使用する定義済みバインディングです。 + +## 構成システムへのチャネルの追加 + このサンプルでは、構成を使用してサンプル チャネルを公開する 2 つのクラスを提供します。1 つ目のクラスは、`HttpCookieSessionBindingElement` の です。実装の大部分は `HttpCookieSessionBindingConfigurationElement` で代行されます。これは の派生です。`HttpCookieSessionBindingConfigurationElement` には、`HttpCookieSessionBindingElement` のプロパティに対応するプロパティがあります。 + +### 要素拡張セクションのバインディング + セクション `HttpCookieSessionBindingElementSection` は で、`HttpCookieSessionBindingElement` を構成システムに公開します。構成セクション名をいくつかオーバーライドして、バインディング要素の種類とバインディング要素の作成方法が定義されます。その後、次のようにして拡張セクションを構成ファイルに登録できます。 + +``` + + + + + + + + + + + + + + + + + + + +``` + +## テスト コード + このサンプルのトランスポートを使用するテスト コードは、クライアント ディレクトリとサービス ディレクトリで使用できます。テスト コードは 2 つのテストで構成されます。1 つ目のテストは、`allowCookies` がクライアントで `true` に設定されているバインディングを使用します。2 つ目のテストは、バインディングで明示的なシャットダウン \(メッセージ交換の終了\) を有効にします。 + + このサンプルを実行すると、次の出力が表示されます。 + +``` +Simple binding: +AddItem(10000,2): ItemCount=2 +AddItem(10550,5): ItemCount=7 +RemoveItem(10550,2): ItemCount=5 +Items +10000, 2 +10550, 3 +Smart binding: +AddItem(10000,2): ItemCount=2 +AddItem(10550,5): ItemCount=7 +RemoveItem(10550,2): ItemCount=5 +Items +10000, 2 +10550, 3 + +Press to terminate client. +``` + +#### サンプルを設定、ビルド、および実行するには + +1. 次のコマンドを使用して、[!INCLUDE[vstecasp](../../../../includes/vstecasp-md.md)] 4.0 をインストールします。 + + ``` + %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable + + ``` + +2. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +3. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +4. 単一コンピュータ構成か複数コンピュータ構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/iis-hosting-using-inline-code.md b/docs/framework/wcf/samples/iis-hosting-using-inline-code.md new file mode 100644 index 00000000000..c4b089ea726 --- /dev/null +++ b/docs/framework/wcf/samples/iis-hosting-using-inline-code.md @@ -0,0 +1,108 @@ +--- +title: "インライン コードを使用した IIS ホスティング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "インライン コードを使用した IIS ホスティング サンプル [Windows Communication Foundation]" + - "Web ホスト サービス" +ms.assetid: 56fe3687-a34b-4661-8e30-b33770f413fa +caps.latest.revision: 40 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 40 +--- +# インライン コードを使用した IIS ホスティング +このサンプルでは、インターネット インフォメーション サービス \(IIS\) によってホストされるサービスを実装する方法を示します。サービス コードは .svc ファイルにインラインで含まれており、必要に応じてコンパイルされます。サービス コードは、アプリケーションの \\App\_Code ディレクトリにあるソース コード ファイルに直接実装するか、または \\bin に配置されるアセンブリにコンパイルすることもできます。ただし、このサンプルではこれらの手法は示しません。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Hosting\WebHost\InlineCode` + + このサンプルでは、要求\/応答通信パターンを定義するコントラクトを実装する一般的なサービスを示します。このサービスは IIS によってホストされ、サービス コードは Service.svc ファイルに完全に含まれています。サービスはホストによってアクティブ化され、このサービスに最初に送信されるメッセージによって必要に応じてコンパイルされます。あらかじめコンパイルしておく必要はありません。サービスは、次に示すコードで定義される `ICalculator` コントラクトを実装します。 + +``` +// Define a service contract. +[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] + public interface ICalculator +{ + [OperationContract] + double Add(double n1, double n2); + [OperationContract] + double Subtract(double n1, double n2); + [OperationContract] + double Multiply(double n1, double n2); + [OperationContract] + double Divide(double n1, double n2); +} +``` + + このサービス実装は、計算を行い、結果を返します。 + +``` +<%@ServiceHost language=c# Debug="true" Service="Microsoft.ServiceModel.Samples.CalculatorService" %> +… +// Service class that implements the service contract. +public class CalculatorService : ICalculator +{ + public double Add(double n1, double n2) + { + return n1 + n2; + } + public double Subtract(double n1, double n2) + { + return n1 - n2; + } + public double Multiply(double n1, double n2) + { + return n1 * n2; + } + public double Divide(double n1, double n2) + { + return n1 / n2; + } +} + +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. ソリューションがビルドされたら、setup.bat を実行し、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] で ServiceModelSamples アプリケーションを設定します。ServiceModelSamples ディレクトリは、[!INCLUDE[iisver](../../../../includes/iisver-md.md)] アプリケーションとして表示されます。 + +4. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。このサービスを呼び出すことができるクライアント アプリケーションを作成する方法の例については、「[方法 : クライアントを作成する](../../../../docs/framework/wcf/how-to-create-a-wcf-client.md)」を参照してください。 + +## 参照 + [AppFabric のホストおよび永続化のサンプル](http://go.microsoft.com/fwlink/?LinkId=193961) \ No newline at end of file diff --git a/docs/framework/wcf/samples/iis-server-certificate-installation-instructions.md b/docs/framework/wcf/samples/iis-server-certificate-installation-instructions.md new file mode 100644 index 00000000000..0f8ef9264a3 --- /dev/null +++ b/docs/framework/wcf/samples/iis-server-certificate-installation-instructions.md @@ -0,0 +1,88 @@ +--- +title: "インターネット インフォメーション サービス (IIS) サーバー証明書インストール手順 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 11281490-d2ac-4324-8f33-e7714611a34b +caps.latest.revision: 18 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 18 +--- +# インターネット インフォメーション サービス (IIS) サーバー証明書インストール手順 +インターネット インフォメーション サービス \(IIS\) と安全に通信するこのサンプルを実行するには、サーバー証明書を作成してインストールする必要があります。 + +## 手順 1.証明書の作成 + 使用しているコンピューター用の証明書を作成するには、管理特権を使用して Visual Studio コマンド プロンプトを開き、Setup.bat を実行します。Setup.bat は IIS と安全に通信する各サンプルに含まれています。このバッチ ファイルを実行する前に、Makecert.exe を含むフォルダがパスに含まれていることを確認します。Setup.bat で証明書の作成に使用されるコマンドは、次のとおりです。 + +``` +makecert -sr LocalMachine -ss My -n CN=ServiceModelSamples-HTTPS-Server -sky exchange -sk ServiceModelSamples-HTTPS-Key +``` + +## 手順 2.証明書のインストール + 先ほど作成した証明書をインストールするために必要な手順は、使用している IIS のバージョンによって異なります。 + +#### IIS 5.1 \(Windows XP\) および IIS 6.0 \(Windows Server 2003\) に証明書をインストールするには + +1. インターネット インフォメーション サービス マネージャ MMC スナップインを開きます。 + +2. \[既定の Web サイト\] を右クリックし、**\[プロパティ\]** をクリックします。 + +3. **\[ディレクトリ セキュリティ\]** タブをクリックします。 + +4. **\[サーバー証明書\]** ボタンをクリックします。Web サーバー証明書ウィザードが起動します。 + +5. ウィザードの指示に従います。証明書を割り当てるオプションを選択します。表示される証明書の一覧から ServiceModelSamples\-HTTPS\-Server 証明書を選択します。 + + ![IIS 証明書ウィザード](../../../../docs/framework/wcf/samples/media/iiscertificate-wizard.GIF "IISCertificate\_Wizard") + +6. サービスへのアクセスをテストします。ブラウザに HTTPS アドレス「https:\/\/localhost\/servicemodelsamples\/service.svc」を入力します。 + +#### Httpcfg.exe であらかじめ SSL が構成されている場合 + +1. Makecert.exe を使用 \(または Setup.bat を実行\) して、サーバー証明書を作成します。 + +2. IIS マネージャを実行し、前の手順に従って証明書をインストールします。 + +3. クライアント プログラムに次のコード行を追加します。 + +> [!IMPORTANT] +> このコードが必要になるのは、Makecert.exe によって作成された証明書などをテストする場合のみです。製品版のコードには、お勧めしません。 + +``` +PermissiveCertificatePolicy.Enact("CN=ServiceModelSamples-HTTPS-Server"); +``` + +#### IIS 7.0 \(Windows Vista および Windows Server 2008\) に証明書をインストールするには + +1. **\[スタート\]** メニューの **\[ファイル名を指定して実行\]** をクリックし、「**inetmgr**」と入力してインターネット インフォメーション サービス \(IIS\) MMC スナップインを開きます。 + +2. **\[既定の Web サイト\]** を右クリックし、**\[バインディングの編集...\]** をクリックします。 + +3. **\[Web サイト バインド\]** ダイアログ ボックスで、**\[追加\]** をクリックします。 + +4. **\[種類\]** ボックスの一覧から **\[HTTPS\]** を選択します。 + +5. **\[SSL 証明書\]** ボックスの一覧から **\[ServiceModelSamples\-HTTPS\-Server\]** を選択して、**\[OK\]** をクリックします。 + +6. サービスへのアクセスをテストします。ブラウザに HTTPS アドレス「https:\/\/localhost\/servicemodelsamples\/service.svc」を入力します。 + +> [!NOTE] +> 先ほどインストールしたテスト証明書は信頼された証明書ではないので、この証明書でセキュリティ保護されたローカル Web アドレスを参照した場合、Internet Explorer のセキュリティ警告がさらに発生する場合があります。 + +## 証明書の削除 + +- 前に説明したようにインターネット インフォメーション サービス マネージャーを使用しますが、証明書またはバインディングを追加するのではなく削除します。 + +- 次のコマンドを使用して、コンピューターの証明書を削除します。 + + ``` + httpcfg delete ssl -i 0.0.0.0:443 + ``` \ No newline at end of file diff --git a/docs/framework/wcf/samples/imperative.md b/docs/framework/wcf/samples/imperative.md new file mode 100644 index 00000000000..25c3131fa30 --- /dev/null +++ b/docs/framework/wcf/samples/imperative.md @@ -0,0 +1,107 @@ +--- +title: "強制 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4f7ce807-c0e4-407a-92a6-22abafb40b51 +caps.latest.revision: 14 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 14 +--- +# 強制 +このサンプルでは、コードを使用するサービスについて、構成で `wsHttpBinding` バインディングを定義する代わりに を定義する方法を示します。このサンプルは、電卓サービスを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + 次のコードは、バインディングをコードで強制的に定義する方法を示します。 + +``` +public static void Main() +{ + WSHttpBinding binding = new WSHttpBinding(); + binding.Name = "binding1"; + binding.HostNameComparisonMode = + HostNameComparisonMode.StrongWildcard; + binding.Security.Mode = SecurityMode.Message; + binding.ReliableSession.Enabled = false; + binding.TransactionFlow = false; + + Uri baseAddress = + new Uri("http://localhost:8000/servicemodelsamples/service"); + + // Create a ServiceHost for the CalculatorService type and provide the base address. + using(ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress)) + { + serviceHost.AddServiceEndpoint(typeof(ICalculator), + binding, baseAddress); + // Open the ServiceHostBase to create listeners and start listening for messages. + serviceHost.Open(); + + // The service can now be accessed. + Console.WriteLine("The service is ready."); + Console.WriteLine("Press to terminate service."); + Console.WriteLine(); + Console.ReadLine(); + // Close the ServiceHostBase to shutdown the service. + serviceHost.Close(); + } +} + +``` + + クライアントは、チャネルを作成してサービスと通信します。次のサンプル コードを参照してください。 + +``` +WSHttpBinding binding = new WSHttpBinding(); +binding.Name = "binding1"; +binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard; +binding.Security.Mode = SecurityMode.Message; +binding.ReliableSession.Enabled = false; +binding.TransactionFlow = false; + +String url = "http://localhost:8000/servicemodelsamples/service"; +EndpointAddress address = new EndpointAddress(url); +ChannelFactory channelFactory = new ChannelFactory(binding,address); +ICalculator channel = channelFactory.CreateChannel(); + +``` + + このサンプルを実行する場合は、操作要求および応答はクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` + +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Imperative` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/impersonating-the-client.md b/docs/framework/wcf/samples/impersonating-the-client.md new file mode 100644 index 00000000000..52f3dbc0b5e --- /dev/null +++ b/docs/framework/wcf/samples/impersonating-the-client.md @@ -0,0 +1,137 @@ +--- +title: "クライアントの偽装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クライアントの偽装のサンプル [Windows Communication Foundation]" + - "偽装, Windows Communication Foundation サンプル" + - "サービスの動作, 偽装のサンプル" +ms.assetid: 8bd974e1-90db-4152-95a3-1d4b1a7734f8 +caps.latest.revision: 25 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 25 +--- +# クライアントの偽装 +偽装のサンプルでは、サービスで呼び出し元のアプリケーションを偽装し、サービスが呼び出し元の代わりにシステム リソースにアクセスできるようにする方法を示します。 + + このサンプルは、「[自己ホスト](../../../../docs/framework/wcf/samples/self-host.md)」のサンプルに基づいています。サービスとクライアントの構成ファイルは、「[自己ホスト](../../../../docs/framework/wcf/samples/self-host.md)」サンプルの構成ファイルと同じです。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + サービス コードは、サービスの `Add` メソッドが を使用して呼び出し元を偽装するように変更されています。次のサンプル コードを参照してください。 + +``` +[OperationBehavior(Impersonation = ImpersonationOption.Required)] +public double Add(double n1, double n2) +{ + double result = n1 + n2; + Console.WriteLine("Received Add({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); + DisplayIdentityInformation(); + return result; +} + +``` + + この結果、実行中のスレッドのセキュリティ コンテキストは呼び出し元を偽装するように切り替えられ、その後 `Add` メソッドが入力されて、このメソッドが終了すると元に戻ります。 + + 次のサンプル コードに示す `DisplayIdentityInformation` メソッドは、呼び出し元の ID を表示するユーティリティ関数です。 + +``` +static void DisplayIdentityInformation() +{ + Console.WriteLine("\t\tThread Identity :{0}", + WindowsIdentity.GetCurrent().Name); + Console.WriteLine("\t\tThread Identity level :{0}", + WindowsIdentity.GetCurrent().ImpersonationLevel); + Console.WriteLine("\t\thToken :{0}", + WindowsIdentity.GetCurrent().Token.ToString()); + return; +} + +``` + + サービスの `Subtract` メソッドは、強制呼び出しを使用して呼び出し元を偽装します。次のサンプル コードを参照してください。 + +``` +public double Subtract(double n1, double n2) +{ + double result = n1 - n2; + Console.WriteLine("Received Subtract({0},{1})", n1, n2); + Console.WriteLine("Return: {0}", result); +Console.WriteLine("Before impersonating"); +DisplayIdentityInformation(); + + if (ServiceSecurityContext.Current.WindowsIdentity.ImpersonationLevel == TokenImpersonationLevel.Impersonation || + ServiceSecurityContext.Current.WindowsIdentity.ImpersonationLevel == TokenImpersonationLevel.Delegation) + { + // Impersonate. + using (ServiceSecurityContext.Current.WindowsIdentity.Impersonate()) + { + // Make a system call in the caller's context and ACLs + // on the system resource are enforced in the caller's context. + Console.WriteLine("Impersonating the caller imperatively"); + DisplayIdentityInformation(); + } + } + else + { + Console.WriteLine("ImpersonationLevel is not high enough to perform this operation."); + } + +Console.WriteLine("After reverting"); +DisplayIdentityInformation(); + return result; +} +``` + + この場合、呼び出し元は呼び出し全体に対して偽装されるのではなく、呼び出しの一部に対してのみ偽装されます。通常、操作全体の偽装を行うよりも、最小限の範囲での偽装をお勧めします。 + + 他のメソッドは呼び出し元を偽装しません。 + + クライアント コードは、偽装レベルを に設定するように変更されています。クライアントは 列挙体を使用して、サービスで使用される偽装レベルを指定します。この列挙体は、、および の値をサポートします。Windows ACL を使用して保護されているローカル コンピューターのシステム リソースにアクセスする場合、アクセス チェックを実行するには、偽装レベルを に設定する必要があります。次のサンプル コードを参照してください。 + +``` +// Create a client with given client endpoint configuration +CalculatorClient client = new CalculatorClient(); + +client.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; +``` + + このサンプルを実行すると、操作要求と応答がサービスとクライアントの両方のコンソール ウィンドウに表示されます。どちらかのコンソールで Enter キーを押すと、サービスとクライアントがどちらもシャットダウンされます。 + +> [!NOTE] +> サービスを管理アカウントで実行するか、またはサービスを実行するアカウントに http:\/\/localhost:8000\/ServiceModelSamples の URI を HTTP レイヤーに登録する権限を付与する必要があります。このような権限を付与するには、[Httpcfg.exe ツール](http://go.microsoft.com/fwlink/?LinkId=95010)を使用して[名前空間予約](http://go.microsoft.com/fwlink/?LinkId=95012)を設定します。 + +> [!NOTE] +> [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] を実行しているコンピューターでは、Host.exe アプリケーションに偽装特権がある場合にのみ偽装がサポートされます \(既定では、管理者のみがこれを許可できます\)。この特権をサービスが実行されているアカウントに追加するには、**\[管理ツール\]** の **\[ローカル セキュリティ ポリシー\]** を開き、**\[ローカル ポリシー\]** を開きます。次に、**\[ユーザー権利の割り当て\]** をクリックして **\[認証後にクライアントを偽装\]** をクリックし、ユーザーまたはグループを追加する **\[プロパティ\]** をダブルクリックします。 + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +4. サービスが呼び出し元を偽装していることを示すため、サービスが実行されているアカウントとは異なるアカウントでクライアントを実行します。これを行うには、コマンド プロンプトに次のコマンドを入力します。 + + ``` + runas /user:\ client.exe + ``` + + 次に、パスワードの入力が求められます。先ほど指定したアカウントのパスワードを入力します。 + +5. クライアントを実行する際、クライアントを実行する前と後で ID の資格情報が異なることに注意してください。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/index.md b/docs/framework/wcf/samples/index.md new file mode 100644 index 00000000000..d9475d55cbc --- /dev/null +++ b/docs/framework/wcf/samples/index.md @@ -0,0 +1,38 @@ +--- +title: "Windows Communication Foundation (WCF) サンプル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 89d4efce-7832-4dd5-82a8-0e574b3302f9 +caps.latest.revision: 17 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 17 +--- +# Windows Communication Foundation (WCF) サンプル +これらのサンプルでは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] のさまざまな特性について説明します。 + +- C# バージョンのサンプルについてを参照してください[Windows Communication Foundation (WCF) および .NET Framework 4 向けの Windows Workflow Foundation (WF) サンプル](http://go.microsoft.com/fwlink/?LinkId=150780)します。 + +- Visual Basic バージョンのサンプルを参照してください[Visual Basic 2010 サンプル](http://go.microsoft.com/fwlink/?LinkID=193373) をクリック**WF HYPERLINK"javascript:__doPostBack('ctl00$ctl00$Content$TabContentPanel$Content$ReleaseFiles$FileList$ctl02$FileNameLink','')"_WCF_Samples.zip**します。 + + [!INCLUDE[wf](../../../../includes/wf-md.md)] [アプリケーション](../../../../docs/framework/windows-workflow-foundation/samples/application.md)もサンプルではいくつか[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)]機能します。 + + ドキュメントとヘルプ ビューアーのスタンドアロン バージョンをインストールするには、ダウンロード、 [Microsoft Windows SDK v 7.1](http://go.microsoft.com/fwlink/?LinkID=194146)します。 + +## このセクションの内容 + [基本的な](../../../../docs/framework/wcf/samples/basic.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の基本的な機能を示すサンプルを紹介します。 + + 機能拡張 + 探索機能関連のサンプルを紹介します。 + + [シナリオ](../../../../docs/framework/wcf/samples/scenario.md) + WCF シナリオを例を使用して説明します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/installing-message-queuing-msmq.md b/docs/framework/wcf/samples/installing-message-queuing-msmq.md new file mode 100644 index 00000000000..fa14cc3d21e --- /dev/null +++ b/docs/framework/wcf/samples/installing-message-queuing-msmq.md @@ -0,0 +1,73 @@ +--- +title: "メッセージ キュー (MSMQ) のインストール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7ddcd497-3e04-427e-bc04-3610ad98b01e +caps.latest.revision: 16 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 16 +--- +# メッセージ キュー (MSMQ) のインストール +メッセージ キュー 4.0 およびメッセージ キュー 3.0 をインストールする方法を次の手順に示します。 + +> [!NOTE] +> メッセージ キュー 4.0 は、[!INCLUDE[wxp](../../../../includes/wxp-md.md)] および [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] では使用できません。 + +#### Windows Server 2008 または Windows Server 2008 R2 にメッセージ キュー 4.0 をインストールするには + +1. サーバー マネージャーで **\[機能\]** をクリックします。 + +2. **\[機能の概要\]** の右側のペインで、**\[機能の追加\]** をクリックします。 + +3. 表示されたウィンドウで **\[メッセージ キュー\]** を展開します。 + +4. **\[メッセージ キュー サービス\]** を展開します。 + +5. **\[ディレクトリ サービス統合\]** を \(ドメインに参加するコンピューターの場合\) クリックし、**\[HTTP サポート\]** をクリックします。 + +6. **\[次へ\]** をクリックし、**\[インストール\]** をクリックします。 + +#### Windows 7 または Windows Vista にメッセージ キュー 4.0 をインストールするには + +1. **コントロール パネル**を開きます。 + +2. **\[プログラム\]** をクリックし、**\[プログラムと機能\]** の **\[Windows の機能の有効化または無効化\]** をクリックします。 + +3. \[Microsoft Message Queue \(MSMQ\) Server\]、\[Microsoft Message Queue \(MSMQ\) Server Core\] の順に展開して、インストールする次のメッセージ キュー機能のチェック ボックスをオンにします。 + + - \[MSMQ Active Directory Domain Services Integration\] \(ドメインに参加するコンピューターの場合\) + + - \[MSMQ HTTP サポート\] + +4. **\[OK\]** をクリックします。 + +5. コンピューターを再起動するかどうかを確認するメッセージが表示されたら、**\[OK\]** をクリックしてインストールを完了します。 + +#### Windows XP および Windows Server 2003 にメッセージ キュー 3.0 をインストールするには + +1. **コントロール パネル**を開きます。 + +2. **\[プログラムの追加と削除\]**、**\[Windows コンポーネントの追加と削除\]** の順にクリックします。 + +3. メッセージ キューを選択し、**\[詳細\]** をクリックします。 + + > [!NOTE] + > [!INCLUDE[ws2003](../../../../includes/ws2003-md.md)] を実行している場合は、メッセージ キューにアクセスするアプリケーション サーバーを選択します。 + +4. 詳細ページで、\[MSMQ HTTP サポート\] オプションが選択されていることを確認します。 + +5. **\[OK\]** をクリックして詳細ページを閉じ、**\[次へ\]** をクリックします。インストールを完了します。 + +6. コンピューターを再起動するかどうかを確認するメッセージが表示されたら、**\[OK\]** をクリックしてインストールを完了します。 + +## 参照 + [セットアップ手順](../../../../docs/framework/wcf/samples/set-up-instructions.md) \ No newline at end of file diff --git a/docs/framework/wcf/samples/instancing-extensibility.md b/docs/framework/wcf/samples/instancing-extensibility.md new file mode 100644 index 00000000000..67fc708a8d4 --- /dev/null +++ b/docs/framework/wcf/samples/instancing-extensibility.md @@ -0,0 +1,33 @@ +--- +title: "インスタンス化拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 7a2f8b51-472b-4b71-8602-d3dbc6e1cb07 +caps.latest.revision: 5 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 5 +--- +# インスタンス化拡張 +このセクションには、カスタムのインスタンス化を示すサンプルが含まれています。 + +## このセクションの内容 + [永続性インスタンス コンテキスト](../../../../docs/framework/wcf/samples/durable-instance-context.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] ランタイムをカスタマイズして、永続性インスタンス コンテキストを有効にする方法を示します。 + + [カスタム有効期間](../../../../docs/framework/wcf/samples/custom-lifetime.md) + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] の共有サービス インスタンスにカスタムの有効期間サービスを提供する [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] 拡張機能の作成方法を示します。 + + [初期化のインスタンス化](../../../../docs/framework/wcf/samples/instancing-initialization.md) + オブジェクトの初期化をカスタマイズする方法を示します。 + + [プール](../../../../docs/framework/wcf/samples/pooling.md) + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を拡張してオブジェクト プールをサポートする方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/instancing-initialization.md b/docs/framework/wcf/samples/instancing-initialization.md new file mode 100644 index 00000000000..44228a74196 --- /dev/null +++ b/docs/framework/wcf/samples/instancing-initialization.md @@ -0,0 +1,280 @@ +--- +title: "初期化のインスタンス化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 154d049f-2140-4696-b494-c7e53f6775ef +caps.latest.revision: 31 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 31 +--- +# 初期化のインスタンス化 +このサンプルでは、インターフェイス `IObjectControl` を定義して、「[プール](../../../../docs/framework/wcf/samples/pooling.md)」サンプルを拡張します。このインターフェイスでは、オブジェクトのアクティブ化\/非アクティブ化を切り替えることによって、そのオブジェクトの初期化をカスタマイズできます。クライアントは、オブジェクトをプールに返すメソッドや、プールに返さないメソッドを呼び出します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + +## 拡張ポイント + [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] 拡張機能作成の最初の手順は、使用する機能拡張ポイントの決定です。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] での用語 *EndpointDispatcher* は、受信メッセージをユーザーのサービス上のメソッド呼び出しに変換したり、メソッドからの戻り値を送信メッセージに変換する実行時コンポーネントを表します。[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスは、各エンドポイントの EndpointDispatcher を作成します。 + + EndpointDispatcher は クラスを使用して、\(サービスによって送受信されるすべてのメッセージの\) エンドポイント スコープ拡張を提供します。このクラスにより、EndpointDispatcher の動作を制御するさまざまなプロパティをカスタマイズできます。このサンプルでは、サービス クラスのインスタンスを提供するオブジェクトをポイントする プロパティに焦点を当てています。 + +## IInstanceProvider + [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] では、EndpointDispatcher は インターフェイスを実装しているインスタンス プロバイダを使用して、サービス クラスのインスタンスを作成します。このインターフェイスに含まれるメソッドは、次の 2 つのみです。 + +- : メッセージが到着すると、このディスパッチャは メソッドを呼び出し、メッセージを処理するためのサービス クラスのインスタンスを作成します。このメソッドの呼び出し頻度は プロパティで決まります。たとえば プロパティが に設定されている場合、サービス クラスの新しいインスタンスが作成され、到着する各メッセージが処理されます。したがって、 はメッセージが到着するたびに呼び出されます。 + +- : サービス インスタンスがメッセージの処理を完了すると、EndpointDispatcher は メソッドを呼び出します。 メソッドと同様、このメソッドへの呼び出し頻度は プロパティで決まります。 + +## オブジェクト プール + `ObjectPoolInstanceProvider` クラスには、オブジェクト プールの実装が含まれています。このクラスは、サービス モデルのレイヤと対話する インターフェイスを実装しています。EndpointDispatcher が、新しいインスタンスを作成する代わりに メソッドを呼び出すと、カスタム実装はメモリ内プールで既存のオブジェクトを検索します。検索されたオブジェクトが使用可能な場合は、そのオブジェクトが返されます。使用可能なオブジェクトがない場合、`ObjectPoolInstanceProvider` は `ActiveObjectsCount` プロパティ \(プールから返されるオブジェクト数\) が最大プール サイズに達しているかどうかをチェックします。最大サイズに達していない場合は、新しいインスタンスが作成されて呼び出し元に返され、その後 `ActiveObjectsCount` がインクリメントされます。最大サイズに達していると、構成期間中、オブジェクト作成要求がキューに置かれます。`GetObjectFromThePool` の実装を次のサンプル コードに示します。 + +``` + +private object GetObjectFromThePool() +{ + bool didNotTimeout = + availableCount.WaitOne(creationTimeout, true); + if(didNotTimeout) + { + object obj = null; + lock (poolLock) + { + if (pool.Count != 0) + { + obj = pool.Pop(); + activeObjectsCount++; + } + else if (pool.Count == 0) + { + if (activeObjectsCount < maxPoolSize) + { + obj = CreateNewPoolObject(); + activeObjectsCount++; + + #if (DEBUG) + WritePoolMessage( + ResourceHelper.GetString("MsgNewObject")); + #endif + } + } + idleTimer.Stop(); + } + // Call the Activate method if possible. + if (obj is IObjectControl) + { + ((IObjectControl)obj).Activate(); + } + return obj; +} +throw new TimeoutException( +ResourceHelper.GetString("ExObjectCreationTimeout")); +} +``` + + カスタム `ReleaseInstance` 実装は、解放されたインスタンスをプールに戻し、`ActiveObjectsCount` 値をデクリメントします。EndpointDispatcher はこれらのメソッドをさまざまなスレッドから呼び出すので、`ObjectPoolInstanceProvider` クラスのクラス レベル メンバへの同期アクセスが必要となります。 + +``` +public void ReleaseInstance(InstanceContext instanceContext, object instance) +{ + lock (poolLock) + { + // Check whether the object can be pooled. + // Call the Deactivate method if possible. + if (instance is IObjectControl) + { + IObjectControl objectControl = (IObjectControl)instance; + objectControl.Deactivate(); + + if (objectControl.CanBePooled) + { + pool.Push(instance); + + #if(DEBUG) + WritePoolMessage( + ResourceHelper.GetString("MsgObjectPooled")); + #endif + } + else + { + #if(DEBUG) + WritePoolMessage( + ResourceHelper.GetString("MsgObjectWasNotPooled")); + #endif + } + } + else + { + pool.Push(instance); + + #if(DEBUG) + WritePoolMessage( + ResourceHelper.GetString("MsgObjectPooled")); + #endif + } + + activeObjectsCount--; + + if (activeObjectsCount == 0) + { + idleTimer.Start(); + } + } + + availableCount.Release(1); +} + +``` + + `ReleaseInstance` メソッドには、*初期化のクリーンアップ*機能があります。通常は、プールにはその有効期間中に最小限の数のオブジェクトが保持されます。ただし、使用率が非常に高くなり、プールでオブジェクトを追加作成する必要が生じて、その数が構成に指定されている上限に達する可能性があります。プールが最終的にアクティブでなくなると、そうした過剰なオブジェクトは余分なオーバーヘッドになります。したがって、`activeObjectsCount` がゼロに達すると、アイドル タイマが起動し、クリーンアップ サイクルがトリガされて実行されます。 + +``` +if (activeObjectsCount == 0) +{ + idleTimer.Start(); +} + +``` + + ServiceModel のレイヤ拡張は、次の動作を使用してフックされます。 + +- サービスの動作 : サービス ランタイム全体のカスタマイズを実現します。 + +- エンドポイントの動作 : EndpointDispatcher を含む、特定のサービス エンドポイントのカスタマイズを実現します。 + +- コントラクトの動作 : クライアント上またはサービス上で、それぞれ クラスまたは クラスのカスタマイズを実現します。 + +- 操作の動作 : クライアント上またはサービス上のいずれかで、それぞれ クラスまたは クラスのカスタマイズを実現します。 + + オブジェクト プール拡張を行うには、エンドポイントの動作またはサービスの動作のどちらかを作成します。この例ではサービスの動作を使用します。この動作では、オブジェクト プール機能がサービスの各エンドポイントに適用されます。サービス動作を作成するには、 インターフェイスを実装します。ServiceModel にカスタム動作を認識させるには、次のようにいくつかの方法があります。 + +- カスタム属性を使用する。 + +- カスタム動作をサービス説明の動作コレクションに強制的に追加する。 + +- 構成ファイルを拡張する。 + + このサンプルではカスタム属性を使用します。 が構築されると、サービスの種類の定義で使用されている属性が調べられ、使用可能な動作がサービス説明の動作コレクションに追加されます。 + + インターフェイスには、、および の 3 つのメソッドがあります。これらのメソッドは、 の初期化中に [!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] によって呼び出されます。最初に、 が呼び出されます。このメソッドによってサービスの不整合性を検査できます。次に、 が呼び出されます。このメソッドは、非常に高度なシナリオでのみ必要です。最後に、 が呼び出されます。このメソッドはランタイムを構成します。次のパラメータは、 に渡されます。 + +- `Description` : このパラメータは、サービス全体のサービスの説明を提供します。これを使用すると、サービスのエンドポイント、コントラクト、バインディング、およびサービスに関連するその他のデータに関する説明データを検査できます。 + +- `ServiceHostBase` : このパラメータは、現在初期化中の を提供します。 + + カスタム 実装では、`ObjectPoolInstanceProvider` の新しいインスタンスがインスタンス化され、 に関連付けられた各 内の プロパティに割り当てられます。 + +``` +public void ApplyDispatchBehavior(ServiceDescription description, ServiceHostBase serviceHostBase) +{ + if (enabled) + { + // Create an instance of the ObjectPoolInstanceProvider. + instanceProvider = new ObjectPoolInstanceProvider(description.ServiceType, + maxPoolSize, minPoolSize, creationTimeout); + + // Assign our instance provider to Dispatch behavior in each + // endpoint. + foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers) + { + ChannelDispatcher cd = cdb as ChannelDispatcher; + if (cd != null) + { + foreach (EndpointDispatcher ed in cd.Endpoints) + { + ed.DispatchRuntime.InstanceProvider = instanceProvider; + } + } + } + } +} +``` + + 実装のほかにも、`ObjectPoolingAttribute` クラスには属性引数を使用してオブジェクト プールをカスタマイズするいくつかのメンバがあります。こうしたメンバには `MaxSize`、`MinSize`、`Enabled`、`CreationTimeout` などがあり、.NET Enterprise Services で提供されるオブジェクト プール機能のセットに一致します。 + + オブジェクト プールの動作は、新しく作成されたカスタム `ObjectPooling` 属性を使用してサービス実装に注釈を付けることにより、[!INCLUDE[indigo2](../../../../includes/indigo2-md.md)] サービスに追加できるようになりました。 + +``` +[ObjectPooling(MaxSize=1024, MinSize=10, CreationTimeout=30000] +public class PoolService : IPoolService +{ + // … +} +``` + +## アクティブ化と非アクティブ化のフック + オブジェクト プールの主な目的は、比較的負荷のかかる作成および初期化を伴う有効期間の短いオブジェクトを最適化することです。そのため、オブジェクト プールが適切に使用された場合は、アプリケーションのパフォーマンスを大幅に向上させることができます。オブジェクトはプールから返されるので、コンストラクタが呼び出されるのは 1 回だけです。ただし一部のアプリケーションでは、単一のコンテキスト内で使用されるリソースを初期化してクリーンアップできるようにするために、ある一定のレベルの制御が必要になります。たとえば、一連の計算に使用されているオブジェクトは、次の計算を実行する前に、そのオブジェクトのプライベート フィールドをリセットできます。Enterprise Services では、オブジェクト開発者が ベース クラスの `Activate` メソッドおよび `Deactivate` メソッドをオーバーライドすることにより、コンテキスト固有のこの種の初期化が実現されます。 + + オブジェクト プールは、オブジェクトがプールから返される直前に `Activate` メソッドを呼び出します。オブジェクトがプールに返される際には `Deactivate` メソッドが呼び出されます。 ベース クラスには、`CanBePooled` という `boolean` プロパティもあります。このプロパティを使用すると、オブジェクトをさらにプールできるかどうかをプールに通知できます。 + + このサンプルではこの機能に似た動作が行われるように、前述のメンバを持つパブリック インターフェイス \(`IObjectControl`\) を宣言しています。このインターフェイスは、コンテキスト固有の初期化を提供するためのサービス クラスによって実装されます。 の実装は、これらの要件を満たすように変更する必要があります。ここで、`GetInstance` メソッドを呼び出してオブジェクトを取得するたびに、オブジェクトが `IObjectControl` を実装しているかどうかをチェックする必要があります。実装されている場合は、`Activate` メソッドを正しく呼び出す必要があります。 + +``` +if (obj is IObjectControl) +{ + ((IObjectControl)obj).Activate(); +} + +``` + + オブジェクトをプールに返すときには、そのオブジェクトをプールに追加し直す前に、`CanBePooled` プロパティのチェックが必要です。 + +``` +if (instance is IObjectControl) +{ + IObjectControl objectControl = (IObjectControl)instance; + objectControl.Deactivate(); + if (objectControl.CanBePooled) + { + pool.Push(instance); + } +} + +``` + + オブジェクトをプールできるかどうかはサービス開発者が決定できるので、指定時間におけるプール内のオブジェクト数は、最低サイズ未満になる場合があります。したがって、オブジェクト数が最低レベル未満になっているかどうかをチェックし、クリーンアップ手順において必要な初期化を実行する必要があります。 + +``` +// Remove the surplus objects. +if (pool.Count > minPoolSize) +{ + // Clean the surplus objects. +} +else if (pool.Count < minPoolSize) +{ + // Reinitialize the missing objects. + while(pool.Count != minPoolSize) + { + pool.Push(CreateNewPoolObject()); + } +} +``` + + このサンプルを実行すると、操作要求と応答がサービスとクライアントの両方のコンソール ウィンドウに表示されます。どちらかのコンソールで Enter キーを押すと、サービスとクライアントがどちらもシャットダウンされます。 + +#### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションをビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Extensibility\Instancing\Initialization` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/instancing.md b/docs/framework/wcf/samples/instancing.md new file mode 100644 index 00000000000..0232c268cb3 --- /dev/null +++ b/docs/framework/wcf/samples/instancing.md @@ -0,0 +1,152 @@ +--- +title: "インスタンス化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +helpviewer_keywords: + - "インスタンス化のサンプル [Windows Communication Foundation]" + - "サービスの動作, インスタンス化のサンプル" +ms.assetid: c290fa54-f6ae-45a1-9186-d9504ebc6ee6 +caps.latest.revision: 40 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 40 +--- +# インスタンス化 +インスタンス化のサンプルでは、インスタンス化動作の設定を示します。この設定は、クライアント要求への応答として作成される、サービス クラスのインスタンスの作成方法を制御します。 このサンプルは、`ICalculator` サービス コントラクトを実装する「[概要](../../../../docs/framework/wcf/samples/getting-started-sample.md)」に基づいています。 このサンプルでは、`ICalculator` から継承される新しいコントラクト `ICalculatorInstance` を定義します。 `ICalculatorInstance` によって指定されるコントラクトにより、サービス インスタンスの状態を検査するための 3 つの操作が追加されます。 インスタンス化設定を変更することにより、クライアントを実行して動作の変更を確認できます。 + + この例では、クライアントはコンソール アプリケーション \(.exe\) であり、サービスはインターネット インフォメーション サービス \(IIS\) によってホストされます。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + 次のインスタンス化モードを使用できます。 + +- : 新しいサービス インスタンスがクライアント要求ごとに作成されます。 + +- : 新しいインスタンスが新しいクライアント セッションごとに作成され、そのセッションの有効期間中保持されます \(セッションをサポートするバインディングが必要です\)。 + +- : アプリケーションの有効期間中、サービス クラスの単一のインスタンスがすべてのクライアント要求を処理します。 + + サービス クラスは、`[ServiceBehavior(InstanceContextMode=)]` 属性を使用してインスタンス化動作を指定します。次のサンプル コードを参照してください。 コメント化されている行を変更すると、各インスタンス モードの動作を確認できます。 インスタンス モードを変更したら、サービスを再ビルドする必要があります。 クライアントでは、インスタンス化に関連する設定は行いません。 + +``` +// Enable one of the following instance modes to compare instancing behaviors. + [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)] + +// PerCall creates a new instance for each operation. +//[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] + +// Singleton creates a single instance for application lifetime. +//[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] +public class CalculatorService : ICalculatorInstance +{ + static Object syncObject = new object(); + static int instanceCount; + int instanceId; + int operationCount; + + public CalculatorService() + { + lock (syncObject) + { + instanceCount++; + instanceId = instanceCount; + } + } + + public double Add(double n1, double n2) + { + operationCount++; + return n1 + n2; + } + + public double Subtract(double n1, double n2) + { + Interlocked.Increment(ref operationCount); + return n1 - n2; + } + + public double Multiply(double n1, double n2) + { + Interlocked.Increment(ref operationCount); + return n1 * n2; + } + + public double Divide(double n1, double n2) + { + Interlocked.Increment(ref operationCount); + return n1 / n2; + } + + public string GetInstanceContextMode() + { // Return the InstanceContextMode of the service + ServiceHost host = (ServiceHost)OperationContext.Current.Host; + ServiceBehaviorAttribute behavior = host.Description.Behaviors.Find(); + return behavior.InstanceContextMode.ToString(); + } + + public int GetInstanceId() + { // Return the id for this instance + return instanceId; + } + + public int GetOperationCount() + { // Return the number of ICalculator operations performed + // on this instance + lock (syncObject) + { + return operationCount; + } + } +} + +static void Main() +{ + // Create a client. + CalculatorInstanceClient client = new CalculatorInstanceClient(); + string instanceMode = client.GetInstanceContextMode(); + Console.WriteLine("InstanceContextMode: {0}", instanceMode); + DoCalculations(client); + + // Create a second client. + CalculatorInstanceClient client2 = new CalculatorInstanceClient(); + + DoCalculations(client2); + + Console.WriteLine(); + Console.WriteLine("Press to terminate client."); + Console.ReadLine(); +} +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。 サービスで実行されているインスタンス モードが表示されます。 各操作後に、インスタンス モードの動作が反映されたインスタンス ID と操作数が表示されます。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +### サンプルをセットアップ、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。 続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」に移動して、すべての [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] サンプルおよび [!INCLUDE[wf1](../../../../includes/wf1-md.md)] サンプルをダウンロードしてください。 このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Services\Behaviors\Instancing` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/internet-information-service-hosting-instructions.md b/docs/framework/wcf/samples/internet-information-service-hosting-instructions.md new file mode 100644 index 00000000000..49e41cef3ec --- /dev/null +++ b/docs/framework/wcf/samples/internet-information-service-hosting-instructions.md @@ -0,0 +1,189 @@ +--- +title: "インターネット インフォメーション サービスのホスティング手順 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" +ms.assetid: 959a21c8-9d9d-4757-b255-4e57793ae9d6 +caps.latest.revision: 30 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 30 +--- +# インターネット インフォメーション サービスのホスティング手順 +インターネット インフォメーション サービス \(IIS\) によってホストされているこのサンプルを実行するには、IIS が適切にインストールされて実行されていることを確認する必要があります。 + +### Windows Server 2008 R2 に IIS バージョン 7.5 をインストールするには + +1. **サーバー マネージャー**で **\[役割\]** をクリックし、 **\[役割の概要\]** の下の **\[役割の追加\]** をクリックします。 + +2. **\[次へ\]** をクリックして **\[サーバーの役割の選択\]** ダイアログを表示します。 + +3. **\[役割\]** 一覧の **\[アプリケーション サーバー\]** を選択し、**\[次へ\]** を 2 回クリックして、アプリケーション サーバーの役割を選択するための **\[役割の選択\]** ダイアログを表示します。 + +4. **\[Web サーバー \(IIS\)\]** チェック ボックスをオンにします。 追加した役割サービスと機能をインストールするかどうかを確認するメッセージが表示されたら、**\[必要な機能を追加\]** をクリックします。 **\[次へ\]** を 2 回クリックして、Web サーバー \(IIS\) の役割を選択するための **\[役割サービスの選択\]** ダイアログ ボックスを表示します。 + +5. **\[管理ツール\]**、**\[IIS 6 と互換性のある管理\]** の順に展開します。 **\[IIS 6 スクリプト ツール\]** を選択します。 追加した役割サービスと機能をインストールするかどうかを確認するメッセージが表示されたら、**\[必要な役割サービスを追加\]** をクリックします。 **\[次へ\]** をクリックします。 + +6. 選択内容が正しい場合は、**\[インストール\]** をクリックします。 + +7. インストールが完了したら、**\[閉じる\]** をクリックします。 + +### Windows 7 に IIS バージョン 7.5 をインストールするには + +1. **\[スタート\]** ボタンをクリックし、**\[コントロール パネル\]** をクリックします。 + +2. **\[プログラム\]** グループを開きます。 + +3. **\[プログラムと機能\]** で **\[Windows の機能の有効化または無効化\]** をクリックします。 + +4. **\[ユーザー アカウント制御\]** ダイアログが表示されます。 **\[続行\]** をクリックします。 + +5. **\[Windows の機能\]** ダイアログ ボックスが表示されます。 **\[インターネット インフォメーション サービス\]** というラベルが付いている項目を展開します。 + +6. **\[World Wide Web サービス\]** というラベルが付いている項目を展開します。 + +7. **\[アプリケーション開発機能\]** というラベルが付いている項目を展開します。 + +8. 次の項目が選択されていることを確認します。 + + 1. **.NET 拡張機能** + + 2. **ASP.NET** + + 3. **ISAPI 拡張機能** + + 4. **ISAPI フィルター** + +9. **\[World Wide Web サービス\]** というラベルが付いている項目で、**\[HTTP 共通機能\]** を展開します。 + +10. **\[静的コンテンツ\]** が選択されていることを確認します。 + +11. **\[World Wide Web サービス\]** というラベルが付いている項目で、**\[セキュリティ\]** を展開します。 + +12. **\[Windows 認証\]** が選択されていることを確認します。 + +13. **\[インターネット インフォメーション サービス\]** ディレクトリで、**\[Web 管理ツール\]** というラベルが付いている項目を展開し、**\[IIS 管理コンソール\]** を選択します。 + +14. **\[IIS 6 と互換性のある管理\]** というラベルが付いている項目を展開し、**\[IIS 6 スクリプト ツール\]** を選択します。 + +15. **\[インターネット インフォメーション サービス\]** ディレクトリで、**\[Microsoft .NET Framework 3.5.1\]** というラベルが付いている項目を展開し、**\[Windows Communication Foundation Http Activation\]** を選択します。 + +16. **\[OK\]** をクリックします。 + +### Windows Server 2008 に IIS バージョン 7.0 をインストールするには + +1. **サーバー マネージャー**で **\[役割\]** をクリックし、 **\[役割の概要\]** の下の **\[役割の追加\]** をクリックします。 + +2. **\[次へ\]** をクリックして **\[サーバーの役割の選択\]** ダイアログを表示します。 + +3. **\[役割\]** 一覧の **\[アプリケーション サーバー\]** を選択し、**\[次へ\]** を 2 回クリックして、アプリケーション サーバーの役割を選択するための **\[役割の選択\]** ダイアログを表示します。 + +4. **\[Web サーバー \(IIS\)\]** チェック ボックスをオンにします。 追加した役割サービスと機能をインストールするかどうかを確認するメッセージが表示されたら、**\[必要な機能を追加\]** をクリックします。 **\[次へ\]** を 2 回クリックして、Web サーバー \(IIS\) の役割を選択するための **\[役割サービスの選択\]** ダイアログ ボックスを表示します。 + +5. **\[管理ツール\]**、**\[IIS 6 と互換性のある管理\]** の順に展開します。 **\[IIS 6 スクリプト ツール\]** を選択します。 追加した役割サービスと機能をインストールするかどうかを確認するメッセージが表示されたら、**\[必要な役割サービスを追加\]** をクリックします。 **\[次へ\]** をクリックします。 + +6. 選択内容が正しい場合は、**\[インストール\]** をクリックします。 + +7. インストールが完了したら、**\[閉じる\]** をクリックします。 + +### Windows Vista に IIS バージョン 7.0 をインストールするには + +1. \[スタート\] ボタンをクリックし、\[コントロール パネル\] をクリックします。 + +2. **\[プログラム\]** グループを選択します。 + +3. **\[プログラムと機能\]** で **\[Windows の機能の有効化または無効化\]** をクリックします。 + +4. **\[ユーザー アカウント制御\]** ダイアログが表示されます。 **\[続行\]** をクリックします。 + +5. **\[Windows の機能\]** ダイアログ ボックスが表示されます。 **\[インターネット インフォメーション サービス\]** というラベルが付いている項目を展開します。 + +6. **\[World Wide Web サービス\]** というラベルが付いている項目を展開します。 + +7. **\[アプリケーション開発機能\]** というラベルが付いている項目を展開します。 + +8. 次の項目が選択されていることを確認します。 + + 1. **.NET 拡張機能** + + 2. **ASP.NET** + + 3. **ISAPI 拡張機能** + + 4. **ISAPI フィルター** + +9. **\[Web 管理ツール\]** というラベルが付いている項目を展開し、**\[IIS 管理コンソール\]** を選択します。 + +10. **\[World Wide Web サービス\]** というラベルが付いている項目で、**\[HTTP 共通機能\]** を展開します。 + +11. **\[静的コンテンツ\]** が選択されていることを確認します。 + +12. **\[World Wide Web サービス\]** というラベルが付いている項目で、**\[セキュリティ\]** を展開します。 + +13. **\[Windows 認証\]** が選択されていることを確認します。 + +14. **\[IIS 6 と互換性のある管理\]** というラベルが付いている項目を展開し、**\[IIS 6 スクリプト ツール\]** を選択します。 + +15. **\[Microsoft .NET Framework 3.0\]** というラベルが付いている項目を展開し、**\[Windows Communication Foundation Http Activation\]** をクリックします。 + +16. **\[OK\]** をクリックします。 + +### Windows Server 2003 に IIS バージョン 6.0 をインストールするには + +1. **\[サーバーの役割管理\]** で **\[役割を追加または削除する\]** をクリックし、**\[次へ\]** をクリックします。 + +2. **\[サーバーの役割\]** ボックスの一覧の **\[アプリケーション サーバー \(IIS、ASP.NET\)\]** をクリックし、**\[次へ\]** をクリックします。 + +3. **\[ASP.NET の有効化\]** チェック ボックスをオンにして、**\[次へ\]** をクリックします。 + +4. 選択内容が正しい場合は、\[次へ\] をクリックします。 + +### Service Pack 2 および Service Pack 3 がインストールされている Windows XP に IIS バージョン 5.1 をインストールするには + +1. \[コントロール パネル\] の **\[プログラムの追加と削除\]** をクリックします。 + +2. **\[プログラムの追加と削除\]** ダイアログ ボックスで **\[Windows コンポーネントの追加と削除\]** をクリックします。 + +3. **\[Windows コンポーネント ウィザード\]** の **\[インターネット インフォメーション サービス \(IIS\)\]** チェック ボックスをオンにし、**\[次へ\]** をクリックします。 + +4. **\[ファイルが必要\]** ダイアログ ボックスが表示された場合は、オペレーティング システムのインストール ディスクを挿入し、i386 フォルダーに移動して、**\[OK\]** をクリックします。 + +5. インストールが完了したら、**\[完了\]** をクリックします。 + +6. **\[プログラムの追加と削除\]** ダイアログ ボックスを閉じて、**\[コントロール パネル\]** を閉じます。 + +### IIS と ASP.NET がインストールされていることを確認するには + +1. このトピックの最後に示す HTML ファイルを \\InetPub\\wwwroot のルート ディレクトリに保存し、Default.aspx という名前を付けます。 + +2. ブラウザー ウィンドウを開きます。 + +3. アドレス ボックスに「`http://localhost/Default.aspx`」と入力して Enter キーを押します。 + +4. Web ページに、テキスト "Hello World" が表示されます。 + +> [!NOTE] +> [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の新しいバージョンをインストールするたびに、IIS の Web サービス拡張として aspnet\_isapi を再登録する必要があります。 これを行うには、`aspnet_regiis –I –enable` コマンドを実行します。 + +## サンプル コード + +``` + + +
+

Hello World +

+
+ + +``` \ No newline at end of file diff --git a/docs/framework/wcf/samples/interop-extensibility.md b/docs/framework/wcf/samples/interop-extensibility.md new file mode 100644 index 00000000000..750e9f26e75 --- /dev/null +++ b/docs/framework/wcf/samples/interop-extensibility.md @@ -0,0 +1,27 @@ +--- +title: "相互運用性の拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 384a012a-d92d-40d1-b1a5-9c18ca932fcc +caps.latest.revision: 3 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 3 +--- +# 相互運用性の拡張 +このセクションには、カスタムの相互運用性の例を示すサンプルが含まれています。 + +## このセクションの内容 + [本文要素別のディスパッチ](../../../../docs/framework/wcf/samples/dispatch-by-body-element.md) + 入力メッセージを操作に割り当てるための代替アルゴリズムを実装する方法を示します。 + + [本文別のルーティング](../../../../docs/framework/wcf/samples/route-by-body.md) + 任意の SOAP アクションでメッセージ オブジェクトを受け入れるサービスを実装する方法を示します。 \ No newline at end of file diff --git a/docs/framework/wcf/samples/interoperating-with-asmx-web-services.md b/docs/framework/wcf/samples/interoperating-with-asmx-web-services.md new file mode 100644 index 00000000000..e52be8ce17f --- /dev/null +++ b/docs/framework/wcf/samples/interoperating-with-asmx-web-services.md @@ -0,0 +1,144 @@ +--- +title: "ASMX Web サービスとの相互運用性 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: a7c11f0a-9e68-4f03-a6b1-39cf478d1a89 +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# ASMX Web サービスとの相互運用性 +このサンプルは、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] クライアント アプリケーションを既存の ASMX Web サービスと統合する手順を示します。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルは、クライアント コンソール プログラム \(.exe\) と、インターネット インフォメーション サービス \(IIS\) によってホストされるサービス ライブラリ \(.dll\) で構成されています。サービスは、要求\/応答通信パターンを定義するコントラクトを実装する ASMX Web サービスです。このサービスは算術演算 \(`Add`、`Subtract`、`Multiply`、および `Divide`\) を公開しています。クライアントは算術演算を同期要求し、サービスは応答して結果を返します。クライアント アクティビティは、コンソール ウィンドウに表示されます。 + + 次のサンプル コードで示す ASMX Web サービス実装では、計算を行い、結果を返します。 + +``` +[WebService(Namespace="http://Microsoft.ServiceModel.Samples")] +public class CalculatorService : System.Web.Services.WebService + { + [WebMethod] + public double Add(double n1, double n2) + { + return n1 + n2; + } + [WebMethod] + public double Subtract(double n1, double n2) + { + return n1 - n2; + } + [WebMethod] + public double Multiply(double n1, double n2) + { + return n1 * n2; + } + [WebMethod] + public double Divide(double n1, double n2) + { + return n1 / n2; + } + } + +``` + + 上記の構成では、サービスと同じコンピュータ上にあるクライアントは、http:\/\/localhost\/servicemodelsamples\/service.asmx でサービスにアクセスできます。リモート コンピュータ上のクライアントがサービスにアクセスするには、localhost の代わりに修飾ドメイン名を指定する必要があります。 + + 通信は、[ServiceModel メタデータ ユーティリティ ツール \(Svcutil.exe\)](../../../../docs/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe.md) によって生成されたクライアントを通じて行われます。このクライアントは、ファイル generatedClient.cs に含まれています。プロキシ コードを生成するには、ASMX サービスを利用できる必要があります。このサービスは、更新されたメタデータの取得に使用されるためです。次のコマンドをクライアント ディレクトリでコマンド プロンプトから実行して、型指定のあるプロキシを生成します。 + +``` +svcutil.exe /n:http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples http://localhost/servicemodelsamples/service.svc?wsdl /out:generatedClient.cs +``` + + 生成されたクライアントを使用することにより、適切なアドレスとバインディングを構成して、サービス エンドポイントにアクセスできます。サービスと同様、クライアントは構成ファイル \(App.config\) を使用して、通信するエンドポイントを指定します。クライアント エンドポイント構成は、サービス エンドポイントの絶対アドレス、バインディング、およびコントラクトで構成されます。次のサンプル構成を参照してください。 + +``` + + + + +``` + + クライアント実装は、生成されたクライアントのインスタンスをコンストラクトします。生成されたクライアントは、サービスとの通信に使用できます。 + +``` +// Create a client. +CalculatorServiceSoapClient client = new CalculatorServiceSoapClient(); + +// Call the Add service operation. +double value1 = 100.00D; +double value2 = 15.99D; +double result = client.Add(value1, value2); +Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result); + +// Call the Subtract service operation. +value1 = 145.00D; +value2 = 76.54D; +result = client.Subtract(value1, value2); +Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result); + +// Call the Multiply service operation. +value1 = 9.00D; +value2 = 81.25D; +result = client.Multiply(value1, value2); +Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result); + +// Call the Divide service operation. +value1 = 22.00D; +value2 = 7.00D; +result = client.Divide(value1, value2); +Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result); + +//Closing the client gracefully closes the connection and cleans up resources. +client.Close(); + +Console.WriteLine(); +Console.WriteLine("Press to terminate client."); +Console.ReadLine(); + +``` + + このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。 + +``` +Add(100,15.99) = 115.99 +Subtract(145,76.54) = 68.46 +Multiply(9,81.25) = 731.25 +Divide(22,7) = 3.14285714285714 + +Press to terminate client. +``` + +### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルの 1 回限りのセットアップの手順](../../../../docs/framework/wcf/samples/one-time-setup-procedure-for-the-wcf-samples.md)」が実行済みであることを確認します。 + +2. ソリューションの C\# 版または Visual Basic .NET 版をビルドするには、「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の手順に従います。 + +3. 単一コンピューター構成か複数コンピューター構成かに応じて、「[Windows Communication Foundation サンプルの実行](../../../../docs/framework/wcf/samples/running-the-samples.md)」の手順に従います。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Client\Interop\ASMX` + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/json-serialization.md b/docs/framework/wcf/samples/json-serialization.md new file mode 100644 index 00000000000..dccc2066646 --- /dev/null +++ b/docs/framework/wcf/samples/json-serialization.md @@ -0,0 +1,81 @@ +--- +title: "JSON シリアル化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 3c2c4747-7510-4bdf-b4fe-64f98428ef4a +caps.latest.revision: 19 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 19 +--- +# JSON シリアル化 +このサンプルでは、 を使用して、JavaScript Object Notation \(JSON\) 形式のデータをシリアル化および逆シリアル化する方法を示します。このシリアル化エンジンによって、JSON データを [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] 型のインスタンスに変換したり、また JSON データに戻したりできます。 では、 と同じ型をサポートしています。JSON データ形式は、特に Asynchronous JavaScript and XML \(AJAX\) スタイルの Web アプリケーションを作成するときに便利です。[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] での AJAX サポートは、ScriptManager コントロールを介して ASP.NET AJAX と共に使用できるように最適化されています。ASP.NET AJAX と共に [!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] を使用する例については、「[AJAX Samples](http://msdn.microsoft.com/ja-jp/f3fa45b3-44d5-4926-8cc4-a13c30a3bf3e)」を参照してください。 + +> [!NOTE] +> このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 + + このサンプルでは、シリアル化および逆シリアル化を示すために、`Person` データ コントラクトを使用しています。 + +``` +[DataContract] + class Person + { + [DataMember] + internal string name; + + [DataMember] + internal int age; + } + +``` + + `Person` 型のインスタンスを JSON にシリアル化するには、最初に を作成し、次に `WriteObject` メソッドを使用して JSON データをストリームに書き込みます。 + +``` +Person p = new Person(); +//Set up Person object... +MemoryStream stream1 = new MemoryStream(); +DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person)); +ser.WriteObject(stream1, p); + +``` + + メモリ ストリームには有効な JSON データが含まれています。 + +``` +{“age”:42,”name”:”John”} + +``` + + このサンプルでは、JSON データからオブジェクトへの逆シリアル化を示します。次に、ストリームを巻き戻し、`ReadObject` を呼び出します。 + +``` +Person p2 = (Person)ser.ReadObject(stream1); +``` + + `p2` オブジェクトを調べることで、JSON データが正しく逆シリアル化されていることがわかります。 + +> [!IMPORTANT] +> サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の \(既定の\) ディレクトリを確認してください。 +> +> `:\WF_WCF_Samples` +> +> このディレクトリが存在しない場合は、「[.NET Framework 4 向けの Windows Communication Foundation \(WCF\) および Windows Workflow Foundation \(WF\) のサンプル](http://go.microsoft.com/fwlink/?LinkId=150780)」にアクセスして、[!INCLUDE[indigo1](../../../../includes/indigo1-md.md)] および [!INCLUDE[wf1](../../../../includes/wf1-md.md)] のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。 +> +> `:\WF_WCF_Samples\WCF\Basic\Ajax\JsonSerialization` + +#### サンプルを設定、ビルド、および実行するには + +1. 「[Windows Communication Foundation サンプルのビルド](../../../../docs/framework/wcf/samples/building-the-samples.md)」の説明に従って、ソリューション JsonSerialization.sln をビルドします。 + +2. 作成されたコンソール アプリケーションを実行します。 + +## 参照 \ No newline at end of file diff --git a/docs/framework/wcf/samples/jsonp.md b/docs/framework/wcf/samples/jsonp.md new file mode 100644 index 00000000000..95762cf16e9 --- /dev/null +++ b/docs/framework/wcf/samples/jsonp.md @@ -0,0 +1,81 @@ +--- +title: "JSONP | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: c13b4d7b-dac7-4ffd-9f84-765c903511e1 +caps.latest.revision: 8 +author: "Erikre" +ms.author: "erikre" +manager: "erikre" +caps.handback.revision: 8 +--- +# JSONP +このサンプルでは、WCF REST サービスの JSONP \(JSON with Padding\) をサポートする方法を示します。 JSONP とは、現在のドキュメントでスクリプト タグを生成してドメイン間スクリプトを呼び出す際に使用される変換です。 結果は、指定したコールバック関数で返されます。 JSONP は、\ + ``` + +8. プロパティを使用して、クライアント アプリケーション コードからスクリプト コードにアクセスします。 + + たとえば、次のコードをボタンの イベント ハンドラーに追加します。 + + [!code-csharp[System.Windows.Forms.WebBrowser.ObjectForScripting#8](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/form1.cs#8)] + [!code-vb[System.Windows.Forms.WebBrowser.ObjectForScripting#8](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/form1.vb#8)] + +9. DHTML のデバッグが完了したら、コントロールの プロパティを `true` に設定して、 コントロールがスクリプト コードの問題のエラー メッセージを表示しないようにします。 + + [!code-csharp[System.Windows.Forms.WebBrowser.ObjectForScripting#9](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/form1.cs#9)] + [!code-vb[System.Windows.Forms.WebBrowser.ObjectForScripting#9](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/form1.vb#9)] + +## 使用例 + 次の完全なコード例は、この機能を理解するために使用できるデモ アプリケーションを示します。 HTML コードは、個別の HTML ファイルから読み込まれる代わりに、 プロパティを通じて コントロールに読み込まれます。 + + [!code-csharp[System.Windows.Forms.WebBrowser.ObjectForScripting#0](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/CS/form1.cs#0)] + [!code-vb[System.Windows.Forms.WebBrowser.ObjectForScripting#0](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.WebBrowser.ObjectForScripting/vb/form1.vb#0)] + +## コードのコンパイル + このコードには、次が必要です。 + +- System アセンブリおよび System.Windows.Forms アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法の詳細については、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + + + + [WebBrowser コントロール](../../../../docs/framework/winforms/controls/webbrowser-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/implementing-virtual-mode-jit-data-loading-in-the-datagrid.md b/docs/framework/winforms/controls/implementing-virtual-mode-jit-data-loading-in-the-datagrid.md new file mode 100644 index 00000000000..7de43b1e207 --- /dev/null +++ b/docs/framework/winforms/controls/implementing-virtual-mode-jit-data-loading-in-the-datagrid.md @@ -0,0 +1,86 @@ +--- +title: "Windows フォーム DataGridView コントロールでの Just-In-Time データ読み込みによる仮想モードの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ [Windows フォーム], 管理 (大容量のデータセットを)" + - "DataGridView コントロール [Windows フォーム], 大容量のデータセット" + - "DataGridView コントロール [Windows フォーム], 仮想モード" + - "例 [Windows フォーム], Just-In-Time データ読み込み" + - "Just-In-Time データ読み込み" + - "仮想モード, Just-In-Time データ読み込み" +ms.assetid: c2a052b9-423c-4ff7-91dc-d8c7c79345f6 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# Windows フォーム DataGridView コントロールでの Just-In-Time データ読み込みによる仮想モードの実装 + コントロールで仮想モードを実装する 1 つの理由は、データを必要なときにのみ取得するためです。 これを *Just\-In\-Time データ読み込み*と言います。 + + たとえば、リモート データベースの大型のテーブルを操作する場合、表示に必要なデータのみを取得し、ユーザーが新しい行をスクロール表示したときにのみ追加のデータを取得して、スタートアップの遅延を避ける必要があります。 また、アプリケーションを実行するクライアント コンピューターで、データの保存に利用できるメモリの容量が制限されている場合には、データベースから新しい値を取得するときに不要なデータを破棄する必要もあります。 + + 以下のセクションでは、Just\-In\-Time キャッシュで コントロールを使用する方法について説明します。 + + このトピックのコードを単一のリストとしてコピーするには、「[方法 : Windows フォーム DataGridView コントロールで Just\-In\-Time データ読み込みを使用して仮想モードを実装する](../../../../docs/framework/winforms/controls/virtual-mode-with-just-in-time-data-loading-in-the-datagrid.md)」を参照してください。 + +## フォーム + 次のコード例では、 イベント ハンドラー経由で `Cache` オブジェクトと対話する、読み取り専用の コントロールを含むフォームを定義しています。 `Cache` オブジェクトは、ローカルに保存された値を管理し、`DataRetriever` オブジェクトを使用して、Northwind サンプル データベースの Orders テーブルから値を取得します。 また、`Cache` クラスで必要な `IDataPageRetriever` インターフェイスを実装する `DataRetriever` オブジェクトを使用して、 コントロールの行と列を初期化します。 + + `IDataPageRetriever` 型、`DataRetriever` 型、および `Cache` 型については、このトピックの後半で説明します。 + +> [!NOTE] +> 接続文字列内にパスワードなどの機密情報を格納すると、アプリケーションのセキュリティに影響を及ぼすことがあります。 データベースへのアクセスを制御する方法としては、Windows 認証 \(統合セキュリティとも呼ばれます\) を使用する方が安全です。 詳細については、「[接続情報の保護](../../../../docs/framework/data/adonet/protecting-connection-information.md)」を参照してください。 + + [!code-csharp[System.Windows.Forms.DataGridView.Virtual_lazyloading#100](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.Virtual_lazyloading/CS/lazyloading.cs#100)] + [!code-vb[System.Windows.Forms.DataGridView.Virtual_lazyloading#100](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.Virtual_lazyloading/VB/lazyloading.vb#100)] + +## IDataPageRetriever インターフェイス + `DataRetriever` クラスによって実装される `IDataPageRetriever` インターフェイスを定義するコード例を次に示します。 このインターフェイスで宣言されているメソッドは、初期行インデックスと 1 ページのデータの行数を要求する `SupplyPageOfData` メソッドだけです。 これらの値は、データ ソースからデータのサブセットを取得する実装側で使用されます。 + + `Cache` オブジェクトは、このインターフェイスの実装を構築時に使用して、データの最初の 2 ページを読み込みます。 未キャッシュのデータが必要になると、キャッシュはこれらのページのいずれかを破棄し、`IDataPageRetriever` にその値を含む新しいページを要求します。 + + [!code-csharp[System.Windows.Forms.DataGridView.Virtual_lazyloading#201](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.Virtual_lazyloading/CS/lazyloading.cs#201)] + [!code-vb[System.Windows.Forms.DataGridView.Virtual_lazyloading#201](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.Virtual_lazyloading/VB/lazyloading.vb#201)] + +## DataRetriever クラス + 次に、`DataRetriever` クラスを定義するコード例を次に示します。このクラスは、データのページをサーバーから取得する `IDataPageRetriever` インターフェイスを実装します。 `DataRetriever` クラスは、`Columns` プロパティと `RowCount` プロパティも提供します。 コントロールは、これらのプロパティを使用して、必要な列を作成し、適切な数の空の行を コレクションに追加します。 空の行の追加は、テーブル内のデータがすべて存在するようにコントロールが動作するうえで必要です。 これにより、スクロール バーのスクロール ボックスが適切なサイズになり、ユーザーがテーブル内の任意の行にアクセスできるようになります。 行は、スクロール表示されたときにのみ、 イベント ハンドラーによって値が設定されます。 + + [!code-csharp[System.Windows.Forms.DataGridView.Virtual_lazyloading#200](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.Virtual_lazyloading/CS/lazyloading.cs#200)] + [!code-vb[System.Windows.Forms.DataGridView.Virtual_lazyloading#200](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.Virtual_lazyloading/VB/lazyloading.vb#200)] + +## Cache クラス + 次に、`Cache` クラスを定義するコード例を示します。このクラスは、`IDataPageRetriever` 実装によって設定される 2 ページのデータを管理します。 `Cache` クラスは、内側の `DataPage` 構造体を定義します。この構造体は、値を 1 つのキャッシュ ページに保存する を含み、ページの上下の境界を表す行インデックスを計算します。 + + `Cache` クラスは、構築時に 2 ページのデータを読み込みます。 イベントが値を要求すると、`Cache` オブジェクトは、その 2 ページのいずれかに値が存在するかどうか確認し、値が存在する場合には返します。 値がローカルに存在しない場合、`Cache` は、2 つのページのうちで、現在表示されている行から遠い方のページを特定し、そのページを、要求されている値を含む新しいページと置き換えて、値を返します。 + + データ ページの行数と、画面に同時に表示できる行数が一致することを前提に、このモデルでは、テーブルをページングしているユーザーが、直前に表示されたページに効率的に復帰できます。 + + [!code-csharp[System.Windows.Forms.DataGridView.Virtual_lazyloading#300](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.Virtual_lazyloading/CS/lazyloading.cs#300)] + [!code-vb[System.Windows.Forms.DataGridView.Virtual_lazyloading#300](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.Virtual_lazyloading/VB/lazyloading.vb#300)] + +## その他の考慮事項 + 上記のコード例は、Just\-In\-Time データ読み込みの例として紹介されています。 そのため、最大の効率を確保するには、独自のニーズに合わせてコードを変更する必要があります。 少なくとも、キャッシュ内の 1 ページあたりのデータの行数として適切な値を選択する必要があります。 この値は、`Cache` コンストラクターに渡されます。 1 ページあたりの行数は、 コントロールに同時に表示できる行数以上にする必要があります。 + + 最適な結果を得るには、パフォーマンス テストと操作性テストを実行し、システムとユーザーの要件を確認する必要があります。 考慮する必要がある要素には、アプリケーションを実行するクライアント コンピューターのメモリ容量、使用するネットワーク接続の有効帯域幅、使用するサーバーの待機時間などがあります。 帯域幅と待機時間は、ピーク使用時に測定する必要があります。 + + アプリケーションのスクロール性能を向上させるには、ローカルに保存されるデータ量を増やします。 ただし、起動時間を短縮するには、最初に過度のデータを読み込まないようにする必要があります。 `Cache` クラスを修正して、保存できるデータ ページ数を増大することもできます。 データ ページをより多く使用すると、スクロール効率を改善できますが、有効な帯域幅とサーバーの待機時間に応じて、データ ページの適切な行数を決める必要があります。 ページ数を少なくすると、サーバーへのアクセス頻度が増大しますが、要求したデータが返される時間が短縮します。 帯域幅よりも待機時間の方が問題になる場合は、データ ページを増やす必要があります。 + +## 参照 + + + [Windows フォーム DataGridView コントロールでのパフォーマンス チューニング](../../../../docs/framework/winforms/controls/performance-tuning-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールを拡張するための推奨される手順](../../../../docs/framework/winforms/controls/best-practices-for-scaling-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールでの仮想モード](../../../../docs/framework/winforms/controls/virtual-mode-in-the-windows-forms-datagridview-control.md) + [チュートリアル : Windows フォーム DataGridView コントロールでの仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-wf-datagridview-control.md) + [方法 : Windows フォーム DataGridView コントロールで Just\-In\-Time データ読み込みを使用して仮想モードを実装する](../../../../docs/framework/winforms/controls/virtual-mode-with-just-in-time-data-loading-in-the-datagrid.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/implementing-virtual-mode-wf-datagridview-control.md b/docs/framework/winforms/controls/implementing-virtual-mode-wf-datagridview-control.md new file mode 100644 index 00000000000..c67fb9f8991 --- /dev/null +++ b/docs/framework/winforms/controls/implementing-virtual-mode-wf-datagridview-control.md @@ -0,0 +1,146 @@ +--- +title: "チュートリアル : Windows フォーム DataGridView コントロールでの仮想モードの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ [Windows フォーム], 管理 (大容量のデータセットを)" + - "DataGridView コントロール [Windows フォーム], 大容量のデータセット" + - "DataGridView コントロール [Windows フォーム], 仮想モード" + - "仮想モード, チュートリアル" + - "チュートリアル [Windows フォーム], DataGridView コントロール" +ms.assetid: 74eb5276-5ab8-4ce0-8005-dae751d85f7c +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# チュートリアル : Windows フォーム DataGridView コントロールでの仮想モードの実装 +非常に大きな表形式のデータを コントロールに表示するときは、 プロパティを `true` に設定して、コントロールとデータ ストアとのやり取りを明示的に管理できます。 これにより、こうした状況でのコントロールのパフォーマンスを微調整できます。 + + コントロールには、カスタム データ ストアとやり取りするために使用できるイベントが用意されています。 このチュートリアルでは、このようなイベント ハンドラーの実装手順を具体的に示します。 説明しやすくするために、ここで紹介するコード例は非常に単純なデータ ソースを使用しています。 実際のアプリケーションでは、通常は表示に必要な行だけをキャッシュに読み込み、 イベントを処理して、キャッシュとのやり取りやキャッシュの更新を行います。 詳細については、「[Windows フォーム DataGridView コントロールでの Just\-In\-Time データ読み込みによる仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-jit-data-loading-in-the-datagrid.md)」を参照してください。 + + このトピックのコードを単一のリストとしてコピーするには、「[方法 : Windows フォーム DataGridView コントロールで仮想モードを実装する](../../../../docs/framework/winforms/controls/how-to-implement-virtual-mode-in-the-windows-forms-datagridview-control.md)」を参照してください。 + +## フォームの作成 + +#### 仮想モードを実装するには + +1. から派生したクラスを作成し、 コントロールを含めます。 + + 次のコードでは基本的な初期化を行います。 後の手順で使用する変数を宣言し、`Main` メソッドを定義し、クラス コンストラクターで単純なフォーム レイアウトを作成します。 + + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#001](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#001)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#001](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#001)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#001](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#001)] + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#002](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#002)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#002](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#002)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#002](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#002)] + +2. フォームの イベントに対して、 コントロールを初期化し、データ ストアにサンプルの値を格納するためのハンドラーを実装します。 + + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#110](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#110)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#110](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#110)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#110](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#110)] + +3. イベントに対して、要求されたセル値をデータ ストアまたは現在編集中の `Customer` オブジェクトから取得するためのハンドラーを実装します。 + + このイベントは、 コントロールがセルを描画しなければならないときに毎回発生します。 + + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#120](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#120)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#120](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#120)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#120](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#120)] + +4. イベントに対して、編集されたセル値を編集中の行を表す `Customer` オブジェクトに格納するためのハンドラーを実装します。 このイベントは、ユーザーがセル値の変更をコミットすると発生します。 + + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#130](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#130)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#130](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#130)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#130](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#130)] + +5. イベントに対して、新しく作成される行を表す `Customer` オブジェクトを作成するためのハンドラーを実装します。 + + このイベントは、ユーザーが新しいレコード用の行を入力すると発生します。 + + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#140](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#140)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#140](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#140)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#140](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#140)] + +6. イベントに対して、新しい行または変更された行をデータ ストアに保存するためのハンドラーを実装します。 + + このイベントは、ユーザーが現在の行を変更すると発生します。 + + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#150](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#150)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#150](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#150)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#150](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#150)] + +7. イベントに対して、ユーザーが Esc キーを \(編集モードの場合は 2 回、編集モードでない場合は 1 回\) 押して行の復帰を指示したときに イベントを発生させるかどうかを設定するハンドラーを実装します。 + + イベント ハンドラー内で プロパティを `true` に設定していない場合は、現在行の中の任意のセルが修正されているときに行の復帰を指示すると、既定で イベントが発生します。 このイベントは、コミットのスコープが実行時に決定される場合に役立ちます。 + + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#160](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#160)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#160](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#160)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#160](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#160)] + +8. イベントに対して、現在行を表す `Customer` オブジェクトの値を破棄するためのハンドラーを実装します。 + + このイベントは、ユーザーが Esc キーを \(編集モードでは 2 回、編集モード以外では 1 回\) 押して行の復帰を指示したときに発生します。 このイベントは、現在行の中に変更されたセルがない場合や、 イベント ハンドラー内で プロパティの値が `false` に設定されている場合には発生しません。 + + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#170](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#170)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#170](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#170)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#170](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#170)] + +9. イベントに対して、既存の `Customer` オブジェクトをデータ ストアから削除したり、新しく作成された行を表す保存されていない `Customer` オブジェクトを破棄したりするためのハンドラーを実装します。 + + このイベントは、ユーザーが行ヘッダーをクリックした後に Del キーを押して行を削除すると発生します。 + + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#180](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#180)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#180](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#180)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#180](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#180)] + +10. このコード例で使用されるデータ項目を表す単純な `Customers` クラスを実装します。 + + [!code-cpp[System.Windows.Forms.DataGridView.VirtualMode#200](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CPP/virtualmode.cpp#200)] + [!code-csharp[System.Windows.Forms.DataGridView.VirtualMode#200](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/CS/virtualmode.cs#200)] + [!code-vb[System.Windows.Forms.DataGridView.VirtualMode#200](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.VirtualMode/VB/virtualmode.vb#200)] + +## アプリケーションのテスト + フォームをテストして、期待どおりに動作することを確認します。 + +#### フォームをテストするには + +- アプリケーションをコンパイルして実行します。 + + 3 件の顧客レコードを含んだ コントロールが表示されます。 行内の複数のセルの値を変更した後に、Esc キーを \(編集モードの場合は 2 回、編集モードでない場合は 1 回\) 押すと、行全体を元の値に戻すことができます。 コントロール内の行を変更、追加、または削除すると、データ ストア内の `Customer` オブジェクトも変更、追加、削除されます。 + +## 次の手順 + このアプリケーションは、 コントロールの仮想モードを実装するときに処理しなければならないイベントの基本を示しています。 このアプリケーションはさまざまな方法で改良できます。 + +- 外部データベースから値をキャッシュするデータ ストアを実装します。 このキャッシュは必要に応じて値を取得および破棄するので、表示に必要なデータだけを格納し、クライアント コンピューターのメモリ消費量を抑えることができます。 + +- データ ストアのパフォーマンスを要件に合わせて微調整します。 たとえば、クライアント コンピューターのメモリの制限よりも、ネットワーク接続の遅さをカバーするためには、大きなサイズのキャッシュを使用して、データベース クエリの回数を最小限に抑えます。 + + 外部データベースから値をキャッシュする方法の詳細については、「[方法 : Windows フォーム DataGridView コントロールで Just\-In\-Time データ読み込みを使用して仮想モードを実装する](../../../../docs/framework/winforms/controls/virtual-mode-with-just-in-time-data-loading-in-the-datagrid.md)」を参照してください。 + +## 参照 + + + + + + + + + + [Windows フォーム DataGridView コントロールでのパフォーマンス チューニング](../../../../docs/framework/winforms/controls/performance-tuning-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールを拡張するための推奨される手順](../../../../docs/framework/winforms/controls/best-practices-for-scaling-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールでの Just\-In\-Time データ読み込みによる仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-jit-data-loading-in-the-datagrid.md) + [方法 : Windows フォーム DataGridView コントロールで仮想モードを実装する](../../../../docs/framework/winforms/controls/how-to-implement-virtual-mode-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/index.md b/docs/framework/winforms/controls/index.md new file mode 100644 index 00000000000..b035f591213 --- /dev/null +++ b/docs/framework/winforms/controls/index.md @@ -0,0 +1,52 @@ +--- +title: "Windows フォーム コントロール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム]" + - "Windows フォーム コントロール" + - "Windows フォーム コントロール, Windows フォーム コントロールの概要" +ms.assetid: f050de8f-4ebd-4042-94b8-edf9a1dbd52a +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# Windows フォーム コントロール +Windows フォーム アプリケーションのユーザー インターフェイスをデザインしたり変更したりする場合は、コントロールを追加、配置、および位置設定する必要があります。 コントロールは、フォーム オブジェクトに含まれているオブジェクトです。 それぞれの種類のコントロールには、特定の目的に応じた独自のプロパティ、メソッド、およびイベントのセットが含まれています。 コントロールは、デザイナーで操作できます。また、コードを記述して、実行時に動的にコントロールを追加できます。 + +## このセクションの内容 + [Windows フォームへのコントロールの追加](../../../../docs/framework/winforms/controls/putting-controls-on-windows-forms.md) + フォームへのコントロールの追加に関連するリンクを示します。 + + [Windows フォームでのコントロールの配置](../../../../docs/framework/winforms/controls/arranging-controls-on-windows-forms.md) + フォーム上のコントロールの配置に関連するリンクを示します。 + + [各 Windows フォーム コントロールのラベル設定とショートカットの作成](../../../../docs/framework/winforms/controls/labeling-individual-windows-forms-controls-and-providing-shortcuts-to-them.md) + ショートカット キー、コントロールのテキスト ラベル、および修飾子キーの使用法について説明します。 + + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォームで使用するコントロール、および各コントロールで実行できる基本的な処理の一覧を示します。 + + [.NET Framework を使用したカスタム Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-custom-windows-forms-controls.md) + カスタムの Windows フォーム コントロールを開発するときに役立つ背景情報およびサンプルを示します。 + + [デザイン時の Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-windows-forms-controls-at-design-time.md) + デザインと継承によりカスタム コントロールを作成するための手法を説明します。 + +## 関連項目 + [クライアント アプリケーション](../../../../docs/framework/develop-client-apps.md) + Windows ベースのアプリケーションの開発の概要を説明します。 + + [Windows Forms Walkthroughs](http://msdn.microsoft.com/ja-jp/fd44d13d-4733-416f-aefc-32592e59e5d9) + Windows フォームおよびコントロールに関するチュートリアルのトピックの一覧を示します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/keyboard-shortcuts-for-the-windows-forms-datagrid-control.md b/docs/framework/winforms/controls/keyboard-shortcuts-for-the-windows-forms-datagrid-control.md new file mode 100644 index 00000000000..7884067abf0 --- /dev/null +++ b/docs/framework/winforms/controls/keyboard-shortcuts-for-the-windows-forms-datagrid-control.md @@ -0,0 +1,64 @@ +--- +title: "Windows フォームの DataGrid コントロール内の移動に使用できるキーボード ショートカット | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "DataGrid コントロール [Windows フォーム], 移動キー" + - "ショートカット キー, DataGrid コントロール" +ms.assetid: a01780f9-20d5-4f5f-808f-c790c9a007a5 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# Windows フォームの DataGrid コントロール内の移動に使用できるキーボード ショートカット +> [!NOTE] +> コントロールは、 コントロールに代わると共に追加の機能を提供します。ただし、 コントロールは、下位互換性を保つ目的および将来使用する目的で保持されます。 詳細については、「[Windows フォームの DataGridView コントロールと DataGrid コントロールの違いについて](../../../../docs/framework/winforms/controls/differences-between-the-windows-forms-datagridview-and-datagrid-controls.md)」を参照してください。 + + Windows フォームの コントロール内の移動に使用できるキーボード ショートカットの一覧を示します。 + +|動作|Shortcut| +|--------|--------------| +|現在のセルへの入力を終了し、次のセルへ移動します。

フォーカスが子テーブルのリンクにある場合は、その子テーブルに移動します。|Enter| +|セル内が編集モードの場合は、セルの編集をキャンセルします。

マーキー選択の場合は、該当する行の編集をキャンセルします。|Esc| +|セルを編集するときに、カーソル位置の前にある文字列を削除します。|BackSpace| +|セルを編集するときに、カーソル位置の後にある文字列を削除します。|Del| +|現在の行にある最初のセルに移動します。|Home| +|現在の行にある最後のセルに移動します。|End| +|現在のセルの文字列を強調表示し、行の最後にカーソルを位置付けます。 セルをダブルクリックするのと同じ動作になります。|F2| +|セルにフォーカスがある場合は、同一行の次のセルに移動します。

フォーカスが行の最後のセルにある場合は、その行の最初の子テーブルへのリンクへ移動し、展開します。

子リンクにフォーカスがある場合は、次の子リンクに移動します。

最後の子リンクにフォーカスがある場合は、次の行の最初のセルに移動します。|Tab| +|セルにフォーカスがある場合は、同一行の 1 つ前のセルに移動します。

行の最初のセルにフォーカスがある場合は、1 つ前の行の最後に展開された子テーブルへのリンク、または 1 つ前の行の最後のセルに移動します。

子リンクにフォーカスがある場合は、1 つ前の子リンクに移動します。

最初の子リンクにフォーカスがある場合は、1 つ前の行の最後のセルに移動します。|Shift \+ Tab| +|タブ オーダー内の次のコントロールに移動します。|Ctrl \+ Tab| +|タブ オーダー内の 1 つ前のコントロールに移動します。|Ctrl \+ Shift \+ Tab| +|子テーブル内の場合は、親テーブルへ移動します。 \[戻る\] をクリックするのと同じ動作になります。|Alt \+ ←| +|子テーブルへのリンクを展開します。 Alt キーを押しながら ↓ キーを押すと、選択されているリンクだけでなく、すべてのリンクが展開されます。|Alt \+ ↓ または Ctrl \+ プラス記号 \(\+\)| +|子テーブルへのリンクを折りたたみます。 Alt キーを押しながら ↑ キーを押すと、選択されているリンクだけでなく、すべてのリンクが折りたたまれます。|Alt \+ ↑ または Ctrl \+ マイナス記号 \(\-\)| +|矢印の方向にある最も遠い、空白でないセルへ移動します。|Ctrl \+ 方向キー| +|選択範囲を矢印の方向に 1 行分拡張します \(子テーブルのリンクは除外します\)。|Shift \+ ↑ または Shift \+ ↓| +|矢印の方向にある最も遠い、空白でない行まで選択範囲を拡張します \(子テーブルのリンクは除きます\)。|Ctrl \+ Shift \+ ↑ または Ctrl \+ Shift \+ ↓| +|左上のセルへ移動します。|Ctrl \+ Home| +|右下のセルへ移動します。|Ctrl \+ End| +|一番上の行まで選択範囲を拡張します。|Ctrl \+ Shift \+ Home| +|一番下の行まで選択範囲を拡張します。|Ctrl \+ Shift \+ End| +|現在の行を選択します \(子テーブルのリンクは除きます\)。|Shift \+ Space| +|グリッド全体を選択します \(子テーブルのリンクは除きます\)。|Ctrl \+ A| +|子テーブル内の場合は、親テーブルの行を表示します。|Ctrl \+ PageDown| +|子テーブル内の場合は、親テーブルの行を非表示にします。|Ctrl \+ PageUp| +|選択範囲を 1 画面分下に拡張します \(子テーブルのリンクは除きます\)。|Shift \+ PageDown| +|選択範囲を 1 画面分上に拡張します \(子テーブルのリンクは除きます\)。|Shift \+ PageUp| +|現在の行で メソッドを呼び出します。|Ctrl \+ Enter| +|編集モードのときにセルに 値を入力します。|Ctrl \+ 0| + +## 参照 + [DataGrid コントロールの概要](../../../../docs/framework/winforms/controls/datagrid-control-overview-windows-forms.md) + [DataGrid コントロール](../../../../docs/framework/winforms/controls/datagrid-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/known-folder-guids-for-file-dialog-custom-places.md b/docs/framework/winforms/controls/known-folder-guids-for-file-dialog-custom-places.md new file mode 100644 index 00000000000..f0be2b5ecc0 --- /dev/null +++ b/docs/framework/winforms/controls/known-folder-guids-for-file-dialog-custom-places.md @@ -0,0 +1,300 @@ +--- +title: "ファイル ダイアログ ボックスのカスタム プレイス用既知のフォルダー GUID | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "カスタム プレイス, 既知のフォルダー GUID" + - "既知のフォルダー GUID, カスタム プレイス" + - "Windows Vista の既知のフォルダー GUID, カスタム プレイス" +ms.assetid: d8d8b544-8b4d-4da5-ba3a-b05e93244778 +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# ファイル ダイアログ ボックスのカスタム プレイス用既知のフォルダー GUID + コレクションにフォルダーを追加する際、 を使用して、[!INCLUDE[wiprlhext](../../../../includes/wiprlhext-md.md)] の既知のフォルダーを指定することができます。 既知のフォルダー GUID は大文字小文字の区別がなく、[!INCLUDE[winSDK](../../../../includes/winsdk-md.md)] 内の KnownFolders.h ファイルに定義されています。 + +> [!NOTE] +> に追加された既知のフォルダーが **\[お気に入りリンク\]** 領域に表示されない場合があります。 たとえば、指定した既知のフォルダーが、アプリケーションを実行しているコンピューター上にない場合、この既知のフォルダーは表示されません。 + +## GUID の一覧 + [!INCLUDE[wiprlhext](../../../../includes/wiprlhext-md.md)] の既知のフォルダーと、それぞれに関連付けられている を次の表に示します。 + + AddNewPrograms + DE61D971\-5EBC\-4F02\-A3A9\-6C82895E5C04 + + AdminTools + 724EF170\-A42D\-4FEF\-9F26\-B60E846FBA4F + + AppDataLow + A520A1A4\-1780\-4FF6\-BD18\-167343C5AF16 + + AppUpdates + A305CE99\-F527\-492B\-8B1A\-7E76FA98D6E4 + + CDBurning + 9E52AB10\-F80D\-49DF\-ACB8\-4330F5687855 + + ChangeRemovePrograms + DF7266AC\-9274\-4867\-8D55\-3BD661DE872D + + CommonAdminTools + D0384E7D\-BAC3\-4797\-8F14\-CBA229B392B5 + + CommonOEMLinks + C1BAE2D0\-10DF\-4334\-BEDD\-7AA20B227A9D + + CommonPrograms + 0139D44E\-6AFE\-49F2\-8690\-3DAFCAE6FFB8 + + CommonStartMenu + A4115719\-D62E\-491D\-AA7C\-E74B8BE3B067 + + CommonStartup + 82A5EA35\-D9CD\-47C5\-9629\-E15D2F714E6E + + CommonTemplates + B94237E7\-57AC\-4347\-9151\-B08C6C32D1F7 + + Computer + 0AC0837C\-BBF8\-452A\-850D\-79D08E667CA7 + + Conflict + 4BFEFB45\-347D\-4006\-A5BE\-AC0CB0567192 + + Connections + 6F0CD92B\-2E97\-45D1\-88FF\-B0D186B8DEDD + + 連絡先 + 56784854\-C6CB\-462B\-8169\-88E350ACB882 + + ControlPanel + 82A74AEB\-AEB4\-465C\-A014\-D097EE346D63 + + クッキー + 2B0F765D\-C0E9\-4171\-908E\-08A611B84FF6 + + \[デスクトップ\] + B4BFCC3A\-DB2C\-424C\-B029\-7FE99A87C641 + + ドキュメント + FDD39AD0\-238F\-46AF\-ADB4\-6C85480369C7 + + ダウンロード + 374DE290\-123F\-4565\-9164\-39C4925E467B + + お気に入り + 1777F761\-68AD\-4D8A\-87BD\-30B759FA33DD + + フォント + FD228CB7\-AE11\-4AE3\-864C\-16F3910AB8FE + + Games + CAC52C1A\-B53D\-4EDC\-92D7\-6B2E8AC19434 + + GameTasks + 054FAE61\-4DD8\-4787\-80B6\-090220C4B700 + + 履歴 + D9DC8A3B\-B784\-432E\-A781\-5A1130A75963 + + インターネット + 4D9F7874\-4E0C\-4904\-967B\-40B0D20C3E4B + + InternetCache + 352481E8\-33BE\-4251\-BA85\-6007CAEDCF9D + + リンク + BFB9D5E0\-C6A9\-404C\-B2B2\-AE6DB6AF4968 + + LocalAppData + F1B32785\-6FBA\-4FCF\-9D55\-7B8E7F157091 + + LocalizedResourcesDir + 2A00375E\-224C\-49DE\-B8D1\-440DF7EF3DDC + + Music + 4BD8D571\-6D19\-48D3\-BE97\-422220080E43 + + NetHood + C5ABBF53\-E17F\-4121\-8900\-86626FC2C973 + + Network + D20BEEC4\-5CA8\-4905\-AE3B\-BF251EA09B53 + + OriginalImages + 2C36C0AA\-5812\-4B87\-BFD0\-4CD0DFB19B39 + + PhotoAlbums + 69D2CF90\-FC33\-4FB7\-9A0C\-EBB0F0FCB43C + + Pictures + 33E28130\-4E1E\-4676\-835A\-98395C3BC3BB + + Playlists + DE92C1C7\-837F\-4F69\-A3BB\-86E631204A23 + + Printers + 76FC4E2D\-D6AD\-4519\-A663\-37BD56068185 + + PrintHood + 9274BD8D\-CFD1\-41C3\-B35E\-B13F55A758F4 + + Profile + 5E6C858F\-0E22\-4760\-9AFE\-EA3317B67173 + + ProgramData + 62AB5D82\-FDC1\-4DC3\-A9DD\-070D1D495D97 + + ProgramFiles + 905E63B6\-C1BF\-494E\-B29C\-65B732D3D21A + + ProgramFilesCommon + F7F1ED05\-9F6D\-47A2\-AAAE\-29D317C6F066 + + ProgramFilesCommonX64 + 6365D5A7\-0F0D\-45E5\-87F6\-0DA56B6A4F7D + + ProgramFilesCommonX86 + DE974D24\-D9C6\-4D3E\-BF91\-F4455120B917 + + ProgramFilesX64 + 6D809377\-6AF0\-444B\-8957\-A3773F02200E + + ProgramFilesX86 + 7C5A40EF\-A0FB\-4BFC\-874A\-C0F2E0B9FA8E + + プログラム + A77F5D77\-2E2B\-44C3\-A6A2\-ABA601054A51 + + Public + DFDF76A2\-C82A\-4D63\-906A\-5644AC457385 + + PublicDesktop + C4AA340D\-F20F\-4863\-AFEF\-F87EF2E6BA25 + + PublicDocuments + ED4824AF\-DCE4\-45A8\-81E2\-FC7965083634 + + PublicDownloads + 3D644C9B\-1FB8\-4F30\-9B45\-F670235F79C0 + + PublicGameTasks + DEBF2536\-E1A8\-4C59\-B6A2\-414586476AEA + + PublicMusic + 3214FAB5\-9757\-4298\-BB61\-92A9DEAA44FF + + PublicPictures + B6EBFB86\-6907\-413C\-9AF7\-4FC2ABF07CC5 + + PublicVideos + 2400183A\-6185\-49FB\-A2D8\-4A392A602BA3 + + QuickLaunch + 52A4F021\-7B75\-48A9\-9F6B\-4B87A210BC8F + + 最近使用したファイル + AE50C081\-EBD2\-438A\-8655\-8A092E34987A + + RecordedTV + BD85E001\-112E\-431E\-983B\-7B15AC09FFF1 + + RecycleBin + B7534046\-3ECB\-4C18\-BE4E\-64CD4CB7D6AC + + ResourceDir + 8AD10C31\-2ADB\-4296\-A8F7\-E4701232C972 + + RoamingAppData + 3EB685DB\-65F9\-4CF6\-A03A\-E3EF65729F3D + + SampleMusic + B250C668\-F57D\-4EE1\-A63C\-290EE7D1AA1F + + SamplePictures + C4900540\-2379\-4C75\-844B\-64E6FAF8716B + + SamplePlaylists + 15CA69B3\-30EE\-49C1\-ACE1\-6B5EC372AFB5 + + SampleVideos + 859EAD94\-2E85\-48AD\-A71A\-0969CB56A6CD + + SavedGames + 4C5C32FF\-BB9D\-43B0\-B5B4\-2D72E54EAAA4 + + SavedSearches + 7D1D3A04\-DEBB\-4115\-95CF\-2F29DA2920DA + + SEARCH\_CSC + EE32E446\-31CA\-4ABA\-814F\-A5EBD2FD6D5E + + SEARCH\_MAPI + 98EC0E18\-2098\-4D44\-8644\-66979315A281 + + SearchHome + 190337D1\-B8CA\-4121\-A639\-6D472D16972A + + SendTo + 8983036C\-27C0\-404B\-8F08\-102D10DCFD74 + + SidebarDefaultParts + 7B396E54\-9EC5\-4300\-BE0A\-2482EBAE1A26 + + SidebarParts + A75D362E\-50FC\-4FB7\-AC2C\-A8BEAA314493 + + StartMenu + 625B53C3\-AB48\-4EC1\-BA1F\-A1EF4146FC19 + + Startup + B97D20BB\-F46A\-4C97\-BA10\-5E3608430854 + + SyncManager + 43668BF8\-C14E\-49B2\-97C9\-747784D784B7 + + SyncResults + 289A9A43\-BE44\-4057\-A41B\-587A76D7E7F9 + + SyncSetup + 0F214138\-B1D3\-4A90\-BBA9\-27CBC0C5389A + + システム + 1AC14E77\-02E7\-4E5D\-B744\-2EB1AE5198B7 + + SystemX86 + D65231B0\-B2F1\-4857\-A4CE\-A8E7C6EA7D27 + + テンプレート + A63293E8\-664E\-48DB\-A079\-DF759E0509F7 + + TreeProperties + 5B3749AD\-B49F\-49C1\-83EB\-15370FBD4882 + + UserProfiles + 0762D272\-C50A\-4BB0\-A382\-697DCD729B80 + + UsersFiles + F3CE0F7C\-4901\-4ACC\-8648\-D5D44B04EF8F + + ビデオ + 18989B1D\-99B5\-455B\-841C\-AB7C74E4DDFC + + ウィンドウ + F38BF404\-1D43\-42F2\-9305\-67DE0B28FC23 + +## 参照 + + [方法 : よく使用する場所をファイル ダイアログ ボックスに追加する](../../../../docs/framework/winforms/controls/how-to-add-a-custom-place-to-a-file-dialog-box.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/label-control-overview-windows-forms.md b/docs/framework/winforms/controls/label-control-overview-windows-forms.md new file mode 100644 index 00000000000..0d967fa922c --- /dev/null +++ b/docs/framework/winforms/controls/label-control-overview-windows-forms.md @@ -0,0 +1,38 @@ +--- +title: "Label コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Label" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "イメージ [Windows フォーム], 表示 (ラベルに)" + - "Label コントロール [Windows フォーム], Label コントロールの概要" + - "ラベル" +ms.assetid: dcad7f44-11b7-4c55-b0c0-d984ade43d7d +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Label コントロールの概要 (Windows フォーム) +Windows フォームの コントロールを使用すると、ユーザーが編集できないテキストまたはイメージを表示できます。 Label コントロールでは、フォーム上のオブジェクトを識別します。このコントロールを使用して、特定のコントロールをクリックしたときの動作を記述したり、アプリケーションの実行時イベントやプロセスに応じた情報を表示したりできます。 たとえば、ラベルを使用して、テキスト ボックス、リスト ボックス、コンボ ボックスなどの説明テキストを追加します。 また、実行時にイベントに応じて表示されるテキストを変更するコードも記述できます。 たとえば、アプリケーションで変更を処理するのに数分かかる場合は、ラベルに処理状況のメッセージを表示します。 + +## Label コントロールの操作 + コントロールはフォーカスを受け取ることができないため、このコントロールを使用して他のコントロールのアクセス キーを作成できます。 ユーザーは、**Alt** キーを押しながらアクセス キーを押すことによって、コントロールを選択した場合と同様の操作ができます。 詳細については、「[Windows フォーム コントロールのアクセス キーの作成](../../../../docs/framework/winforms/controls/how-to-create-access-keys-for-windows-forms-controls.md)」と「[方法 : Windows フォームの Label コントロールでアクセス キーを作成する](../../../../docs/framework/winforms/controls/how-to-create-access-keys-with-windows-forms-label-controls.md)」を参照してください。 + + ラベルに表示されるキャプションは、 プロパティに含まれています。 プロパティを使用すると、ラベル内のテキストの配置を設定できます。 詳細については、「[方法 : Windows フォーム コントロールによって表示されるテキストを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-text-displayed-by-a-windows-forms-control.md)」を参照してください。 + +## 参照 + + [方法 : Windows フォーム Label コントロールのサイズを内容に合わせて変更する](../../../../docs/framework/winforms/controls/how-to-size-a-windows-forms-label-control-to-fit-its-contents.md) + [方法 : Windows フォームの Label コントロールでアクセス キーを作成する](../../../../docs/framework/winforms/controls/how-to-create-access-keys-with-windows-forms-label-controls.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/label-control-windows-forms.md b/docs/framework/winforms/controls/label-control-windows-forms.md new file mode 100644 index 00000000000..0d9f4366423 --- /dev/null +++ b/docs/framework/winforms/controls/label-control-windows-forms.md @@ -0,0 +1,47 @@ +--- +title: "Label コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Label コントロール [Windows フォーム]" + - "ラベル" + - "LinkLabel コントロール [Windows フォーム]" +ms.assetid: 2028bbe3-ffe2-43e8-8ae3-dec759d2ecec +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# Label コントロール (Windows フォーム) +> [!IMPORTANT] +> コントロールは、 コントロールに代わると共に追加の機能を提供します。 など他の新しいコントロールと共に使用できます。 ただし、 コントロールは、下位互換性を保つ目的および将来使用する目的で保持されています。 + + Windows フォームの コントロールを使用すると、ユーザーが編集できないテキストまたはイメージを表示できます。 Label コントロールでは、フォーム上のオブジェクトを識別します。このコントロールを使用して、特定のコントロールをクリックしたときの動作を記述したり、アプリケーションの実行時イベントやプロセスに応じた情報を表示したりできます。 コントロールはフォーカスを受け取ることができないため、このコントロールを使用して他のコントロールのアクセス キーを作成できます。 + +## このセクションの内容 + [Label コントロールの概要](../../../../docs/framework/winforms/controls/label-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : Windows フォームの Label コントロールでアクセス キーを作成する](../../../../docs/framework/winforms/controls/how-to-create-access-keys-with-windows-forms-label-controls.md) + ラベルを使用して、別のコントロールのアクセス キーを定義する方法について説明します。 + + [方法 : Windows フォーム Label コントロールのサイズを内容に合わせて変更する](../../../../docs/framework/winforms/controls/how-to-size-a-windows-forms-label-control-to-fit-its-contents.md) + キャプションに合わせてラベル コントロールのサイズを調整する方法について説明します。 + +## 関連項目 + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/labeling-individual-windows-forms-controls-and-providing-shortcuts-to-them.md b/docs/framework/winforms/controls/labeling-individual-windows-forms-controls-and-providing-shortcuts-to-them.md new file mode 100644 index 00000000000..861be5d13d4 --- /dev/null +++ b/docs/framework/winforms/controls/labeling-individual-windows-forms-controls-and-providing-shortcuts-to-them.md @@ -0,0 +1,46 @@ +--- +title: "各 Windows フォーム コントロールのラベル設定とショートカットの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム], アクセス キー" + - "ショートカット キー, コントロール" + - "ショートカット, コントロール" + - "Windows フォーム コントロール, ラベル" +ms.assetid: 6eaf868c-819f-4131-8f59-048e20c286f7 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 各 Windows フォーム コントロールのラベル設定とショートカットの作成 +Windows フォームに追加されたコントロールには、ユーザー操作をさらに特殊化するために使用されるプロパティとメソッドがあります。 ユーザーのニーズに合わせてユーザー インターフェイスをカスタマイズすることは、適切に設計された Windows アプリケーションにおいて非常に重要です。 + +## このセクションの内容 + [方法 : Windows フォーム コントロールによって表示されるテキストを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-text-displayed-by-a-windows-forms-control.md) + コントロールにテキスト ラベルを割り当てる方法について説明します。 + + [方法 : Windows フォーム コントロールによって表示されるイメージを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-image-displayed-by-a-windows-forms-control.md) + イメージを表示するためのコントロールを構成する方法について説明します。 + + [方法 : Windows フォーム コントロールのアクセス キーを作成する](../../../../docs/framework/winforms/controls/how-to-create-access-keys-for-windows-forms-controls.md) + 定義済みのキーボード ショートカットを作成する方法について説明します。 + + [Windows フォーム上のコントロールのユーザー補助情報の提供](../../../../docs/framework/winforms/controls/providing-accessibility-information-for-controls-on-a-windows-form.md) + コントロールでユーザー補助機能を使用できるようにする方法について説明します。 + +## 関連項目 + [Windows フォーム コントロール](../../../../docs/framework/winforms/controls/index.md) + コントロールを使用して実行できる、その他の基本的な項目へのリンク。 + + 「[方法 : デザイナーを使用して Windows フォーム コントロールのアクセス キーを作成する](http://msdn.microsoft.com/library/ms233673\(v=vs.110\))」、「[方法 : Windows フォーム コントロールに表示するテキストをデザイナーで設定する](http://msdn.microsoft.com/library/ms233665\(v=vs.110\))」、「[方法 : デザイナーを使用して Windows フォーム コントロールによって表示されるイメージを設定する](http://msdn.microsoft.com/library/ms233656\(v=vs.110\))」も参照してください。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/layout-in-windows-forms-controls.md b/docs/framework/winforms/controls/layout-in-windows-forms-controls.md new file mode 100644 index 00000000000..9b4eaa2471d --- /dev/null +++ b/docs/framework/winforms/controls/layout-in-windows-forms-controls.md @@ -0,0 +1,57 @@ +--- +title: "Windows フォーム コントロールのレイアウト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "レイアウト [Windows フォーム]" + - "LayoutEngine クラス" + - "Margin プロパティ [Windows フォーム]" + - "Padding プロパティ [Windows フォーム]" + - "サイズ変更, 自動 [Windows フォーム]" +ms.assetid: 99400e3a-720e-4f56-b68f-89df911a251c +caps.latest.revision: 7 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 7 +--- +# Windows フォーム コントロールのレイアウト +フォーム上にコントロールを正確に配置することは、多くのアプリケーションで重要度の高い処理です。 名前空間では、これを行うためのさまざまなレイアウト ツールを使用できます。 + +## このセクションの内容 + [AutoSize プロパティの概要](../../../../docs/framework/winforms/controls/autosize-property-overview.md) + プロパティとそのレイアウト上の役割について説明します。 + + [Windows フォーム コントロールでのマージンと埋め込み](../../../../docs/framework/winforms/controls/margin-and-padding-in-windows-forms-controls.md) + プロパティと プロパティ、およびそれらのレイアウト上の役割について説明します。 + + [方法 : フォームの端に合わせてコントロールを配置する](../../../../docs/framework/winforms/controls/how-to-align-a-control-to-the-edges-of-forms.md) + プロパティを使用して、フォーム上のコントロールをそのフォームの端に対して配置する方法を示します。 + + [方法 : 埋め込みを使用して Windows フォーム コントロールの周囲に境界線を作成する](../../../../docs/framework/winforms/controls/how-to-create-a-border-around-a-windows-forms-control-using-padding.md) + プロパティを使用してコントロールの外枠を指定する方法を示します。 + + [方法 : カスタム レイアウト エンジンを実装する](../../../../docs/framework/winforms/controls/how-to-implement-a-custom-layout-engine.md) + Windows フォーム コントロールの配置を行う を実装する方法を示します。 + +## 関連項目 + + コントロールの参照ドキュメントを提供します。 + + + コントロールの参照ドキュメントを提供します。 + +## 参照 + [方法 : FlowLayoutPanel コントロールで子コントロールを固定およびドッキングする](../../../../docs/framework/winforms/controls/how-to-anchor-and-dock-child-controls-in-a-flowlayoutpanel-control.md) + [方法 : TableLayoutPanel コントロールで子コントロールを固定およびドッキングする](../../../../docs/framework/winforms/controls/how-to-anchor-and-dock-child-controls-in-a-tablelayoutpanel-control.md) + [方法 : ローカリゼーションに対応した Windows フォーム レイアウトをデザインする](../../../../docs/framework/winforms/controls/how-to-design-a-windows-forms-layout-that-responds-well-to-localization.md) + [TableLayoutPanel コントロールにおける AutoSize 動作](../../../../docs/framework/winforms/controls/autosize-behavior-in-the-tablelayoutpanel-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/limitations-of-the-timer-component-interval-property.md b/docs/framework/winforms/controls/limitations-of-the-timer-component-interval-property.md new file mode 100644 index 00000000000..f691c6cdf17 --- /dev/null +++ b/docs/framework/winforms/controls/limitations-of-the-timer-component-interval-property.md @@ -0,0 +1,43 @@ +--- +title: "Windows フォームの Timer コンポーネントの Interval プロパティの制限 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Interval プロパティ, 制限事項" + - "Timer コンポーネント [Windows フォーム], 制限事項 (Interval プロパティの)" + - "タイマー, イベントの間隔" + - "タイマー, Windows ベースの" +ms.assetid: 7e5fb513-77e7-4046-a8e8-aab94e61ca0f +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Windows フォームの Timer コンポーネントの Interval プロパティの制限 +Windows フォームの コンポーネントの プロパティは、1 つのタイマー イベントから次のタイマー イベントまでの時間間隔をミリ秒単位で指定します。 コンポーネントが無効にされない限り、タイマーはほぼ一定の間隔で イベントを受信し続けます。 + + このコンポーネントは、Windows フォーム環境で使用します。 サーバー環境に適したタイマーが必要な場合は、「[Introduction to Server\-Based Timers](http://msdn.microsoft.com/ja-jp/adc0bc0a-a519-4812-bafc-fb9d1a5801fc)」を参照してください。 + +## Interval プロパティ + プロパティには、 コンポーネントのプログラミング時に考慮する必要のあるいくつかの制限があります。 + +- 実行しているアプリケーションまたは他のアプリケーションがシステムに対して重い負荷をかけている場合 \(長いループ、複雑な計算、ドライブ、ネットワーク、ポートへのアクセスなど\) は、アプリケーションがタイマー イベントを受け取る間隔が プロパティで指定されたよりも長くなることがあります。 + +- 間隔が厳密に時間どおりに経過することは保証されていません。 正確さを保つには、内部で蓄積された時間を追跡する代わりに、必要に応じてシステム時計をチェックします。 + +- プロパティの精度はミリ秒単位です。 コンピューターによっては、ミリ秒以上の高分解能カウンターが用意されているものがあります。 このようなカウンターが使用可能かどうかは、コンピューターのプロセッサ ハードウェアによります。 詳細については、マイクロソフト サポート技術情報 \(http:\/\/support.microsoft.com\) の文書 172338「QueryPerformanceCounter を使用してコードの時間を計測する方法」を参照してください。 + +## 参照 + + [Timer コンポーネント](../../../../docs/framework/winforms/controls/timer-component-windows-forms.md) + [Timer コンポーネントの概要](../../../../docs/framework/winforms/controls/timer-component-overview-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/link-to-an-object-or-web-page-with-wf-linklabel-control.md b/docs/framework/winforms/controls/link-to-an-object-or-web-page-with-wf-linklabel-control.md new file mode 100644 index 00000000000..585cebfa971 --- /dev/null +++ b/docs/framework/winforms/controls/link-to-an-object-or-web-page-with-wf-linklabel-control.md @@ -0,0 +1,196 @@ +--- +title: "方法 : Windows フォーム LinkLabel コントロールでオブジェクトまたは Web ページにリンクする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "例 [Windows フォーム], LinkLabel コントロール" + - "リンク, ほかのフォームへの" + - "LinkLabel コントロール [Windows フォーム], 例" + - "LinkLabel コントロール [Windows フォーム], リンク (オブジェクトまたは Web ページに)" + - "リンク, ほかのフォームへの" + - "Web ページ リンク コントロール" + - "Windows フォーム, リンク (オブジェクトに)" + - "Windows フォーム, リンク (Web ページに)" +ms.assetid: 6c91c975-3cb7-4504-82f0-fc6255f8fb85 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 方法 : Windows フォーム LinkLabel コントロールでオブジェクトまたは Web ページにリンクする +Windows フォーム コントロールを使用すると、フォーム上に Web スタイルのリンクを作成できます。 リンクをクリックしたときに、そのリンクにアクセスしたことがわかるように色を変更できます。 色の変更の詳細については、「[方法 : Windows フォーム LinkLabel コントロールの表示形式を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-appearance-of-the-windows-forms-linklabel-control.md)」を参照してください。 + +## 別のフォームへのリンク + +#### LinkLabel コントロールによって、別のフォームにリンクするには + +1. プロパティに適切なキャプションを設定します。 + +2. プロパティを設定して、キャプションのどの部分をリンクとして表示するかを指定します。 どのように表示するかは、リンク ラベルの表示形式に関連するプロパティによって異なります。 の値は、 オブジェクトで表されます。このオブジェクトには、文字の開始位置と文字数を示す 2 つの数字が含まれています。 プロパティは、\[プロパティ\] ウィンドウで、または次のような方法でコード内で設定できます。 + + ```vb + ' In this code example, the link area has been set to begin + ' at the first character and extend for eight characters. + ' You may need to modify this based on the text entered in Step 1. + LinkLabel1.LinkArea = New LinkArea(0, 8) + + ``` + + ```csharp + // In this code example, the link area has been set to begin + // at the first character and extend for eight characters. + // You may need to modify this based on the text entered in Step 1. + linkLabel1.LinkArea = new LinkArea(0,8); + + ``` + + ```cpp + // In this code example, the link area has been set to begin + // at the first character and extend for eight characters. + // You may need to modify this based on the text entered in Step 1. + linkLabel1->LinkArea = LinkArea(0,8); + ``` + +3. イベント ハンドラーで、 メソッドを呼び出してプロジェクトで別のフォームを開き、 プロパティを `true` に設定します。 + + > [!NOTE] + > クリックされた コントロールへの参照が クラスのインスタンスに含まれているため、`sender` オブジェクトをキャストする必要はありません。 + + ```vb + Protected Sub LinkLabel1_LinkClicked(ByVal Sender As System.Object, _ + ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) _ + Handles LinkLabel1.LinkClicked + ' Show another form. + Dim f2 As New Form() + f2.Show + LinkLabel1.LinkVisited = True + End Sub + + ``` + + ```csharp + protected void linkLabel1_LinkClicked(object sender, System. Windows.Forms.LinkLabelLinkClickedEventArgs e) + { + // Show another form. + Form f2 = new Form(); + f2.Show(); + linkLabel1.LinkVisited = true; + } + + ``` + + ```cpp + private: + void linkLabel1_LinkClicked(System::Object ^ sender, + System::Windows::Forms::LinkLabelLinkClickedEventArgs ^ e) + { + // Show another form. + Form ^ f2 = new Form(); + f2->Show(); + linkLabel1->LinkVisited = true; + } + ``` + +## Web ページへのリンク + コントロールを使用すると、既定のブラウザーで Web ページを表示することもできます。 + +#### Internet Explorer を起動し、LinkLabel コントロールによって Web ページにリンクするには + +1. プロパティに適切なキャプションを設定します。 + +2. プロパティを設定して、キャプションのどの部分をリンクとして表示するかを指定します。 + +3. イベント ハンドラーの例外処理ブロック内で第 2 のプロシージャを呼び出します。このプロシージャでは、 プロパティを `true` に設定し、 メソッドを使用して既定のブラウザーを該当の URL で起動します。 メソッドを使用するには、 名前空間への参照を追加する必要があります。 + + > [!IMPORTANT] + > 部分的に信頼できる環境 \(共有ドライブなど\) で次のコードを実行した場合、`VisitLink` メソッドの呼び出し時に JIT コンパイラでエラーが発生します。 `System.Diagnostics.Process.Start` のステートメントが発生するリンク確認要求が発生します。 `VisitLink` メソッドの呼び出し時に例外をキャッチすると、次のコードで JIT コンパイラのエラーが発生しても正常に処理されるようになります。 + + ```vb + Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, _ + ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) _ + Handles LinkLabel1.LinkClicked + Try + VisitLink() + Catch ex As Exception + ' The error message + MessageBox.Show("Unable to open link that was clicked.") + End Try + End Sub + + Sub VisitLink() + ' Change the color of the link text by setting LinkVisited + ' to True. + LinkLabel1.LinkVisited = True + ' Call the Process.Start method to open the default browser + ' with a URL: + System.Diagnostics.Process.Start("http://www.microsoft.com") + End Sub + + ``` + + ```csharp + private void linkLabel1_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e) + { + try + { + VisitLink(); + } + catch (Exception ex ) + { + MessageBox.Show("Unable to open link that was clicked."); + } + } + + private void VisitLink() + { + // Change the color of the link text by setting LinkVisited + // to true. + linkLabel1.LinkVisited = true; + //Call the Process.Start method to open the default browser + //with a URL: + System.Diagnostics.Process.Start("http://www.microsoft.com"); + } + + ``` + + ```cpp + private: + void linkLabel1_LinkClicked(System::Object ^ sender, + System::Windows::Forms::LinkLabelLinkClickedEventArgs ^ e) + { + try + { + VisitLink(); + } + catch (Exception ^ ex) + { + MessageBox::Show("Unable to open link that was clicked."); + } + } + private: + void VisitLink() + { + // Change the color of the link text by setting LinkVisited + // to true. + linkLabel1->LinkVisited = true; + // Call the Process.Start method to open the default browser + // with a URL: + System::Diagnostics::Process::Start("http://www.microsoft.com"); + } + ``` + +## 参照 + + [LinkLabel コントロールの概要](../../../../docs/framework/winforms/controls/linklabel-control-overview-windows-forms.md) + [方法 : Windows フォーム LinkLabel コントロールの表示形式を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-appearance-of-the-windows-forms-linklabel-control.md) + [LinkLabel コントロール](../../../../docs/framework/winforms/controls/linklabel-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/linklabel-control-overview-windows-forms.md b/docs/framework/winforms/controls/linklabel-control-overview-windows-forms.md new file mode 100644 index 00000000000..8c19fc2c654 --- /dev/null +++ b/docs/framework/winforms/controls/linklabel-control-overview-windows-forms.md @@ -0,0 +1,39 @@ +--- +title: "LinkLabel コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "LinkLabel" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Label コントロール [Windows フォーム], Label コントロールの概要" + - "LinkLabel コントロール [Windows フォーム], LinkLabel コントロールの概要" + - "リンク, LinkLabel コントロール" +ms.assetid: 9e248549-10ca-43a3-bb5e-60f583d369f1 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# LinkLabel コントロールの概要 (Windows フォーム) +Windows フォームの コントロールを使用すると、Web スタイルのリンクを Windows フォーム アプリケーションに追加できます。 コントロールは、 コントロールを使用できるすべての項目に使用できます。テキストの一部をファイル、フォルダー、または Web ページへのリンクとして設定することもできます。 + +## LinkLabel コントロールで可能なこと + コントロールには、 コントロールのすべてのプロパティ、メソッド、およびイベントに加えて、ハイパーリンクとリンクの色を設定するプロパティがあります。 プロパティでは、リンクをアクティブにするテキストの領域を設定します。 プロパティ、 プロパティ、および プロパティでは、リンクの色を設定します。 イベントでは、リンク テキストを選択したときの動作を指定します。 + + コントロールの最も単純な用途は プロパティを使用した単一リンクの表示ですが、 プロパティを使用することによって複数のハイパーリンクを表示することもできます。 プロパティを使用すると、リンクのコレクションにアクセスできます。 また、各 オブジェクトの プロパティ内にデータを指定することもできます。 プロパティの値は、表示するファイルの場所や Web サイトのアドレスを格納するために使用できます。 + +## 参照 + + [Label コントロールの概要](../../../../docs/framework/winforms/controls/label-control-overview-windows-forms.md) + [方法 : Windows フォーム LinkLabel コントロールでオブジェクトまたは Web ページにリンクする](../../../../docs/framework/winforms/controls/link-to-an-object-or-web-page-with-wf-linklabel-control.md) + [方法 : Windows フォーム LinkLabel コントロールの表示形式を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-appearance-of-the-windows-forms-linklabel-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/linklabel-control-windows-forms.md b/docs/framework/winforms/controls/linklabel-control-windows-forms.md new file mode 100644 index 00000000000..5f2dfe3f137 --- /dev/null +++ b/docs/framework/winforms/controls/linklabel-control-windows-forms.md @@ -0,0 +1,49 @@ +--- +title: "LinkLabel コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Label コントロール [Windows フォーム]" + - "LinkLabel コントロール [Windows フォーム]" + - "リンク, 追加 (Windows フォームに)" + - "Web ページ リンク コントロール" + - "Windows フォーム, 追加 (リンクを)" +ms.assetid: af1fd04e-e126-4fd7-9a4e-13b49010c5ca +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# LinkLabel コントロール (Windows フォーム) +Windows フォームの `LinkLabel` コントロールを使用すると、Web スタイルのリンクを Windows フォーム アプリケーションに追加できます。 `LinkLabel` コントロールは、 コントロールを使用できるすべての項目に使用できます。テキストの一部をオブジェクトまたは Web ページへのリンクとして設定することもできます。 + +## このセクションの内容 + [LinkLabel コントロールの概要](../../../../docs/framework/winforms/controls/linklabel-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : Windows フォーム LinkLabel コントロールの表示形式を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-appearance-of-the-windows-forms-linklabel-control.md) + リンク ラベルの Web スタイル リンクの色と下線を指定する方法の一覧を示します。 + + [方法 : Windows フォーム LinkLabel コントロールでオブジェクトまたは Web ページにリンクする](../../../../docs/framework/winforms/controls/link-to-an-object-or-web-page-with-wf-linklabel-control.md) + リンクをクリックしてフォームまたは Web ページを開く手順について説明します。 + + [方法 : Windows フォームの LinkLabel コントロールから Web ページを表示する \(Visual Basic\)](../../../../docs/framework/winforms/controls/display-a-web-page-from-a-wf-linklabel-control-visual-basic.md) + ユーザーが Windows フォームの `LinkLabel` コントロールをクリックしたときに、既定のブラウザーに Web ページを表示する方法を示します。 + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/listbox-control-overview-windows-forms.md b/docs/framework/winforms/controls/listbox-control-overview-windows-forms.md new file mode 100644 index 00000000000..575f2ea03dc --- /dev/null +++ b/docs/framework/winforms/controls/listbox-control-overview-windows-forms.md @@ -0,0 +1,42 @@ +--- +title: "ListBox コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ListBox" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "リスト ボックス, リスト ボックスの概要" + - "ListBox コントロール [Windows フォーム], ListBox コントロールの概要" +ms.assetid: 37ea226b-6fc8-4c70-936a-c6af4e0cad4c +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# ListBox コントロールの概要 (Windows フォーム) +Windows フォームの コントロールを使用すると、リストが表示され、ユーザーは 1 つ以上の項目を選択できます。 項目の合計数が表示限度を超えた場合は、 コントロールにスクロール バーが自動的に追加されます。 プロパティを `true` に設定した場合は、項目が複数列で表示され、水平スクロール バーが表示されます。 プロパティを `false` に設定した場合は、項目が単一列で表示され、垂直スクロール バーが表示されます。 を `true` に設定している場合は、項目数に関係なくスクロール バーが表示されます。 プロパティでは、一度に選択できるリスト項目の数を指定します。 + +## ListBox コントロールの変更方法 + プロパティは、リスト ボックス内で最初に選択した項目に対応する整数値を取得します。 コードの 値を変更することによって、選択した項目をプログラムで変更できます。リスト内の対応する項目が、Windows フォーム上に強調表示されます。 選択項目がない場合、 値は \-1 となります。 リストの最初の項目を選択した場合、 値は 0 となります。 複数の項目が選択されている場合、 値は、リストの最上位に表示される選択項目を表します。 プロパティは に似ていますが、項目自体 \(通常は文字列値\) を返す点が異なります。 プロパティは、リスト内の項目数を表します。 はゼロから始まるため、 プロパティの値は、 の最大値よりも常に 1 大きくなります。 + + コントロールの項目を追加または削除するには、 メソッド、 メソッド、 メソッド、または メソッドを使用します。 デザイン時に プロパティを使用して、リストに項目を追加することもできます。 + +## 参照 + + [方法 : Windows フォームの ComboBox、ListBox、または CheckedListBox コントロールに項目を追加または削除する](../../../../docs/framework/winforms/controls/add-and-remove-items-from-a-wf-combobox.md) + [方法 : Windows フォーム ComboBox、ListBox、または CheckedListBox コントロールを並べ替える](../../../../docs/framework/winforms/controls/sort-the-contents-of-a-wf-combobox-listbox-or-checkedlistbox-control.md) + [方法 : Windows フォームの ComboBox または ListBox コントロールをデータにバインドする ](../../../../docs/framework/winforms/controls/how-to-bind-a-windows-forms-combobox-or-listbox-control-to-data.md) + [ComboBox コントロールの概要](../../../../docs/framework/winforms/controls/combobox-control-overview-windows-forms.md) + [CheckedListBox コントロールの概要](../../../../docs/framework/winforms/controls/checkedlistbox-control-overview-windows-forms.md) + [オプションのリストを表示するための Windows フォーム コントロール](../../../../docs/framework/winforms/controls/windows-forms-controls-used-to-list-options.md) + [方法 : Windows フォーム ComboBox、ListBox、または CheckedListBox コントロールのルックアップ テーブルを作成する](../../../../docs/framework/winforms/controls/create-a-lookup-table-for-a-wf-combobox-listbox.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/listbox-control-windows-forms.md b/docs/framework/winforms/controls/listbox-control-windows-forms.md new file mode 100644 index 00000000000..eca60e7d702 --- /dev/null +++ b/docs/framework/winforms/controls/listbox-control-windows-forms.md @@ -0,0 +1,41 @@ +--- +title: "ListBox コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "リスト ボックス コントロール" + - "リスト ボックス" + - "リスト ボックス, Windows フォーム コントロール" + - "リスト コントロール, Windows フォーム" + - "リスト項目, Windows フォーム コントロール (項目の表示)" + - "ListBox コントロール [Windows フォーム]" +ms.assetid: b0172473-c5f2-411e-aaa4-c8f17cb5eed4 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# ListBox コントロール (Windows フォーム) +Windows フォームの `ListBox` コントロールを使用すると、項目のリストが表示され、ユーザーは 1 つ以上の項目を選択できます。 + +## このセクションの内容 + [ListBox コントロールの概要](../../../../docs/framework/winforms/controls/listbox-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [オプションのリストを表示するための Windows フォーム コントロール](../../../../docs/framework/winforms/controls/windows-forms-controls-used-to-list-options.md) + リスト ボックス、コンボ ボックス、およびチェックされたリスト ボックスの機能の一覧を提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/listview-control-overview-windows-forms.md b/docs/framework/winforms/controls/listview-control-overview-windows-forms.md new file mode 100644 index 00000000000..fcf5c5088f2 --- /dev/null +++ b/docs/framework/winforms/controls/listview-control-overview-windows-forms.md @@ -0,0 +1,71 @@ +--- +title: "ListView コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ListView" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "リスト ビュー" + - "一覧" + - "ListView コントロール [Windows フォーム], ListView コントロールの概要" +ms.assetid: c9ef56c1-3bb1-4101-9f4e-e95e720f2756 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# ListView コントロールの概要 (Windows フォーム) +Windows フォームの コントロールは、項目をアイコンと一緒に一覧表示します。 リスト ビューを使用すると、Windows エクスプローラーの右側のペインのようなユーザー インターフェイスを作成できます。 このコントロールには、LargeIcon、SmallIcon、List、Details の 4 つのビュー モードがあります。 + +## ListView コントロールで可能なこと + +> [!NOTE] +> 新しく追加されたビュー モードである、並べて表示モードは、Windows XP と Windows Server 2003 の各オペレーティング システムでのみ使用できます。 詳細については、「[方法 : Windows フォーム ListView コントロールの "並べて表示" ビューを有効にする](../../../../docs/framework/winforms/controls/how-to-enable-tile-view-in-a-windows-forms-listview-control.md)」を参照してください。 + + LargeIcon モードでは、項目のテキストのそばに大きなアイコンが表示されます。コントロールが十分に大きい場合は、項目が複数の列に表示されます。 SmallIcon モードは、表示されるアイコンが小さい点を除けば LargeIcon モードと同じです。 List モードでは、小さなアイコンが表示されますが、項目は必ず 1 列で表示されます。 Details モードでは、各項目に関する情報が複数の列に表示されます。 詳細については、「[方法 : Windows フォーム ListView コントロールに列を追加する](../../../../docs/framework/winforms/controls/how-to-add-columns-to-the-windows-forms-listview-control.md)」を参照してください。 ビュー モードは、 プロパティによって決定されます。 いずれのモードでも、イメージ リストのイメージを表示できます。 詳細については、「[方法 : Windows フォーム ListView コントロールのアイコンを表示する](../../../../docs/framework/winforms/controls/how-to-display-icons-for-the-windows-forms-listview-control.md)」を参照してください。 + + 次の表では、 のメンバーの一部およびそれらが有効であるビューを一覧しています。 + +|ListView メンバー|ビュー| +|-------------------|---------| +| プロパティ| または | +| プロパティ| または | +| メソッド|| +| プロパティ| または | +| イベント|| +| メソッド|、または | +| メソッド| または | +| メソッド| または | +| プロパティ| 以外のすべてのビュー| +| プロパティ|.| +| プロパティ|、または | + + コントロールの主要プロパティは です。このプロパティは、コントロールによって表示される項目を保持します。 プロパティは、コントロールで現在選択されている項目を保持します。 プロパティが `true` に設定されている場合、ユーザーは複数の項目を選択できます。たとえば、一度に複数の項目を別のコントロールにドラッグ アンド ドロップできます。 プロパティが `true` に設定されている場合、 コントロールでは、項目の横にチェック ボックスを表示できます。 + + プロパティは、リスト内の項目をアクティブにするためにユーザーが実行する必要のある操作を決定します。指定できるオプションは、、および です。 アクティブ化する操作が の場合、項目をアクティブにするにはシングル クリックする必要があります。 の場合は、項目をアクティブにするには、ダブルクリックする必要があります。シングル クリックすると、項目テキストの色が変わります。 の場合は、項目をアクティブにするには、ダブルクリックする必要がありますが、外観は変わりません。 + + コントロールでは、グループ化、並べて表示ビュー、挿入マークなど、Windows XP プラットフォームで使用できる visual スタイルなどの機能もサポートされています。 詳細については、「[Windows XP Features and Windows Forms Controls](http://msdn.microsoft.com/ja-jp/bc7fab94-fce9-4bf1-a8ad-a5837c91c3c0)」を参照してください。 + +## 参照 + + [ListView コントロール](../../../../docs/framework/winforms/controls/listview-control-windows-forms.md) + [方法 : Windows フォーム ListView コントロールで項目を追加および削除する](../../../../docs/framework/winforms/controls/how-to-add-and-remove-items-with-the-windows-forms-listview-control.md) + [方法 : Windows フォーム ListView コントロールに列を追加する](../../../../docs/framework/winforms/controls/how-to-add-columns-to-the-windows-forms-listview-control.md) + [方法 : Windows フォーム ListView コントロールのアイコンを表示する](../../../../docs/framework/winforms/controls/how-to-display-icons-for-the-windows-forms-listview-control.md) + [方法 : Windows フォーム ListView コントロールの列にサブ項目を表示する](../../../../docs/framework/winforms/controls/how-to-display-subitems-in-columns-with-the-windows-forms-listview-control.md) + [方法 : Windows フォーム ListView コントロール内の項目を選択する](../../../../docs/framework/winforms/controls/how-to-select-an-item-in-the-windows-forms-listview-control.md) + [方法 : Windows フォーム ListView コントロールの項目をグループ化する](../../../../docs/framework/winforms/controls/how-to-group-items-in-a-windows-forms-listview-control.md) + [方法 : Windows フォーム ListView コントロールに挿入マークを表示する](../../../../docs/framework/winforms/controls/how-to-display-an-insertion-mark-in-a-windows-forms-listview-control.md) + [方法 : ListView コントロールに検索機能を追加する](../../../../docs/framework/winforms/controls/how-to-add-search-capabilities-to-a-listview-control.md) + [方法 : TreeView コントロールまたは ListView コントロール \(Windows フォーム\) にカスタム情報を追加する](../../../../docs/framework/winforms/controls/add-custom-information-to-a-treeview-or-listview-control-wf.md) + [方法 : Windows フォームでマルチペイン ユーザー インターフェイスを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-multipane-user-interface-with-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/listview-control-windows-forms.md b/docs/framework/winforms/controls/listview-control-windows-forms.md new file mode 100644 index 00000000000..a561b763b07 --- /dev/null +++ b/docs/framework/winforms/controls/listview-control-windows-forms.md @@ -0,0 +1,98 @@ +--- +title: "ListView コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "チェックされたリスト項目, Windows フォーム コントロール" + - "アイコン, 一覧 (項目を)" + - "リスト コントロール, リスト ビュー" + - "リスト ビュー" + - "一覧" + - "一覧, アイコン表示で項目を" + - "ListView コントロール [Windows フォーム]" + - "ユーザー インターフェイス, 作成" +ms.assetid: 9f71cf5c-82da-488a-a04e-ef52c0817187 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# ListView コントロール (Windows フォーム) +Windows フォーム `ListView` コントロールにはアイコン表示で項目の一覧が表示されます。 リスト ビューを使用すると、Windows エクスプローラーの右側のペインのようなユーザー インターフェイスを作成することができます。 + +## このセクションの内容 + [ListView コントロールの概要](../../../../docs/framework/winforms/controls/listview-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : Windows フォーム ListView コントロールで項目を追加および削除する](../../../../docs/framework/winforms/controls/how-to-add-and-remove-items-with-the-windows-forms-listview-control.md) + リスト ビューから項目を追加または削除する方法について説明します。 + + [方法 : Windows フォーム ListView コントロールに列を追加する](../../../../docs/framework/winforms/controls/how-to-add-columns-to-the-windows-forms-listview-control.md) + 各リスト項目に関する情報を表示するために列を作成する方法について説明します。 + + [方法 : Windows フォーム ListView コントロールのアイコンを表示する](../../../../docs/framework/winforms/controls/how-to-display-icons-for-the-windows-forms-listview-control.md) + 大きいアイコンまたは小さいアイコンを表示するための適切なイメージ リストとリスト ビューを関連付ける方法について説明します。 + + [方法 : Windows フォーム ListView コントロールの列にサブ項目を表示する](../../../../docs/framework/winforms/controls/how-to-display-subitems-in-columns-with-the-windows-forms-listview-control.md) + 列の各リスト項目に関する情報を表示する方法について説明します。 + + [方法 : Windows フォーム ListView コントロール内の項目を選択する](../../../../docs/framework/winforms/controls/how-to-select-an-item-in-the-windows-forms-listview-control.md) + プログラムによって項目を選択する方法について説明します。 + + [方法 : Windows フォーム ListView コントロールの項目をグループ化する](../../../../docs/framework/winforms/controls/how-to-group-items-in-a-windows-forms-listview-control.md) + カテゴリ別表示用のグループを作成して各グループに項目を割り当てる方法について説明します。 + + この機能は、[!INCLUDE[WinXpFamily](../../../../includes/winxpfamily-md.md)] でのみ使用できます。 + + [方法 : Windows フォーム ListView コントロールの "並べて表示" ビューを有効にする](../../../../docs/framework/winforms/controls/how-to-enable-tile-view-in-a-windows-forms-listview-control.md) + 大きいアイコンと複数行のテキストで構成される項目のタイル表示の方法について説明します。 + + この機能は、[!INCLUDE[WinXpFamily](../../../../includes/winxpfamily-md.md)] でのみ使用できます。 + + [方法 : Windows フォーム ListView コントロールに挿入マークを表示する](../../../../docs/framework/winforms/controls/how-to-display-an-insertion-mark-in-a-windows-forms-listview-control.md) + 挿入マークがマウス ポインターの位置ごとにドロップする場所を示す、ドラッグ アンド ドロップ操作のためのユーザー フィードバックを実装する方法について説明します。 + + この機能は、[!INCLUDE[WinXpFamily](../../../../includes/winxpfamily-md.md)] でのみ使用できます。 + + [方法 : ListView コントロールに検索機能を追加する](../../../../docs/framework/winforms/controls/how-to-add-search-capabilities-to-a-listview-control.md) + プログラムでいずれかのテキストの検索または画面座標を使用してアイテムを検索する方法について説明します。 + +- [方法 : デザイナーを使って Windows フォーム ListView コントロールの "並べて表示" ビューを有効にする](http://msdn.microsoft.com/library/ms233655\(v=vs.110\)) + +- [方法 : デザイナーで Windows フォーム ListView コントロールを使って項目を追加および削除する](http://msdn.microsoft.com/library/ms233671\(v=vs.110\)) + +- [方法 :デザイナーを使って Windows フォーム ListView コントロールに列を追加する](http://msdn.microsoft.com/library/ms233652\(v=vs.110\)) + +- [方法 : デザイナーを使って Windows フォーム ListView コントロールの項目をグループ化する](http://msdn.microsoft.com/library/ms233663\(v=vs.110\)) + +- [チュートリアル : デザイナーを使用した、ListView コントロールと TreeView コントロールを含むエクスプローラー スタイルのインターフェイスの作成](http://msdn.microsoft.com/library/ms171645\(v=vs.110\)) + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [方法 : TreeView コントロールまたは ListView コントロール \(Windows フォーム\) にカスタム情報を追加する](../../../../docs/framework/winforms/controls/add-custom-information-to-a-treeview-or-listview-control-wf.md) + リスト ビュー内のアイテムまたはツリー ビュー内のノードから継承して、必要なフィールド、メソッド、またはコンストラクターを追加するための手順を説明します。 + + [ImageList コンポーネント](../../../../docs/framework/winforms/controls/imagelist-component-windows-forms.md) + イメージ リストの用途、主な機能、およびプロパティについて説明します。 + + [方法 : Windows フォームでマルチペイン ユーザー インターフェイスを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-multipane-user-interface-with-windows-forms.md) + 複数のペインで Windows フォームのレイアウトを設定するための方法を説明します。 + + [Windows XP Features and Windows Forms Controls](http://msdn.microsoft.com/ja-jp/bc7fab94-fce9-4bf1-a8ad-a5837c91c3c0) + コントロールに適用される、Windows XP に固有の機能を活用する方法について説明します。 + +## 参照 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/load-save-and-cancel-bindingnavigator.md b/docs/framework/winforms/controls/load-save-and-cancel-bindingnavigator.md new file mode 100644 index 00000000000..c8f4be03927 --- /dev/null +++ b/docs/framework/winforms/controls/load-save-and-cancel-bindingnavigator.md @@ -0,0 +1,135 @@ +--- +title: "方法 : Windows フォーム BindingNavigator コントロールに [Load]、[Save]、[Cancel] の各ボタンを追加する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム]、操作" + - "BindingNavigator コントロール [Windows フォーム]、ボタンの追加" +ms.assetid: faa33042-186e-4bb2-8798-17ceb987ec62 +caps.latest.revision: 17 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 17 +--- +# 方法 : Windows フォーム BindingNavigator コントロールに [Load]、[Save]、[Cancel] の各ボタンを追加する + コントロールは、フォーム上のデータ バインド コントロールの移動や操作に用途が特化された コントロールです。 + + コンポーネントは コントロールであるため、簡単に変更でき、ユーザー向けの追加コマンドや代替コマンドを含めることができます。 + + 次の手順では、 コントロールをデータにバインドし、フォームに追加した コントロールを変更して、\[Load\]、\[Save\]、\[Cancel\] の各ボタンを追加します。 + +### BindingNavigator コンポーネントに \[Load\] ボタン、\[Save\] ボタン、および \[Cancel\] ボタンを追加するには + +1. フォームに コントロールを追加します。 + +2. このコントロールを、データ ソースにバインドされている にバインドします。 この例では、 はデータベースにバインドされています。 + +3. データセットとテーブル アダプターが生成されたら、 コントロールをフォームにドラッグします。 + +4. コントロールの プロパティを、コントロールにバインドされているフォーム上の に設定します。 + +5. コントロールを選択します。 + +6. スマート タグ グリフ \(![スマート タグ グリフ](../../../../docs/framework/winforms/controls/media/vs-winformsmttagglyph.png "VS\_WinFormSmtTagGlyph")\) をクリックして **\[BindingNavigator タスク\]** ダイアログ ボックスを表示し、**\[項目の編集\]** をクリックします。 + + **項目コレクション エディター**が表示されます。 + +7. **項目コレクション エディター**で、次の手順を実行します。 + + 1. 適切な型の を選択し、**\[追加\]** をクリックして、 と 3 つの 項目を追加します。 + + 2. 各ボタンの `` プロパティを、それぞれ `` LoadButton、SaveButton、CancelButton `` に設定します。 + + 3. 各ボタンの プロパティを、それぞれ `` Load、Save、Cancel `` に設定します。 + + 4. 各ボタンの プロパティを `` Text に設定します。 または、このプロパティを `` Image `` または `` ImageAndText `` に設定し、 プロパティでイメージが表示されるように設定することもできます。 + + 5. **\[OK\]** をクリックしてダイアログ ボックスを閉じます。各ボタンが に追加されます。 + +8. フォームを右クリックし、**\[コードの表示\]** をクリックします。 + +9. コード エディターで、テーブル アダプターにデータを読み込むコード行を見つけます。 このコードは、手順 2. でデータ バインディングを設定したときに生成されます。 たとえば、`TableAdapterName.Fill(DataSetName.TableName)` のようになります。 このコードは、一般にフォームの イベントに含まれます。 + +10. 作成済みの `` **\[Load\]** `` イベントのイベント ハンドラーを作成し、データ読み込みコードをこのハンドラーに移動します。 + + コードは次のようになります。 + + \[Visual Basic\] + + ``` + Private Sub LoadButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadButton.Click + TableAdapterName.Fill(DataSetName.TableName) + End Sub + ``` + + \[C\#\] + + ``` + private void LoadButton_Click(System.Object sender, + System.EventArgs e) + { + TableAdapterName.Fill(DataSetName.TableName); + } + ``` + +11. 作成済みの **\[Save\]** `` イベントのイベント ハンドラーを作成し、コントロールがバインドされている、テーブル内のデータを更新するコードを記述します。 + + \[Visual Basic\] + + ``` + Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click + TableAdapterName.Update(DataSetName.TableName) + End Sub + ``` + + \[C\#\] + + ``` + private void SaveButton_Click(System.Object sender, + System.EventArgs e) + { + TableAdapterName.Update(DataSetName.TableName); + } + ``` + + > [!NOTE] + > コンポーネントには、既に `` **\[Save\]** ボタンが設定されている場合もありますが、Windows フォーム デザイナーによってコードは生成されていません。 このような場合は、 で新しいボタンを作成するのではなく、既存のボタンの イベント ハンドラーに前述のコードを配置できます。 ただし、ボタンは既定で無効になっているため、ボタンの プロパティを `true` に設定し、ボタンが適切に機能するようにします。 + +12. 作成済みの `` **\[Cancel\]** `` イベントのイベント ハンドラーを作成し、表示されているデータ レコードに対する変更をキャンセルするコードを記述します。 + + \[Visual Basic\] + + ``` + Private Sub CancelButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancelButton.Click + BindingSourceName.CancelEdit() + End Sub + ``` + + \[C\#\] + + ``` + private void CancelButton_Click(System.Object sender, System.EventArgs e) + { + BindingSourceName.CancelEdit(); + } + ``` + + > [!NOTE] + > メソッドのスコープはデータ行です。 個々のレコードの表示中に行った変更は、次のレコードに移動する前に保存してください。 + +## 参照 + + + + [BindingNavigator コントロール](../../../../docs/framework/winforms/controls/bindingnavigator-control-windows-forms.md) + [BindingSource コンポーネントの概要](../../../../docs/framework/winforms/controls/bindingsource-component-overview.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/mainmenu-component-overview-windows-forms.md b/docs/framework/winforms/controls/mainmenu-component-overview-windows-forms.md new file mode 100644 index 00000000000..c9d39cc8dbc --- /dev/null +++ b/docs/framework/winforms/controls/mainmenu-component-overview-windows-forms.md @@ -0,0 +1,42 @@ +--- +title: "MainMenu コンポーネントの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "MenuItem" + - "MainMenu" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "MainMenu コントロール [Windows フォーム], MainMenu コントロールの概要" + - "メニュー" +ms.assetid: b41cc5a3-cc59-4996-aa3c-8dd9c17d3c90 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# MainMenu コンポーネントの概要 (Windows フォーム) +> [!IMPORTANT] +> は、以前のバージョンの コントロールおよび コントロールに代わると共に追加の機能を提供しますが、 および は、下位互換性を保つ目的および将来使用する目的で、必要に応じて保持できます。 + + Windows フォームの コンポーネントを使用すると、実行時にメニューが表示されます。 メイン メニューに属するすべてのサブメニューおよび各項目は オブジェクトです。 + +## 主要なプロパティ + プロパティを `true` に設定することによって、メニュー項目を既定の項目として指定できます。 既定の項目は、メニューをクリックしたときに太字のテキストで表示されます。 メニュー項目の プロパティは、`true` または `false` のいずれかの値となり、メニュー項目が選択されているかどうかを示します。 メニュー項目の プロパティは、選択されている項目の外観をカスタマイズします。 が `true` に設定されている場合は、項目の横にオプション ボタンが表示され、 が `false` に設定されている場合は、項目の横にチェック マークが表示されます。 + +## 参照 + + + + + + [MenuStrip コントロールの概要](../../../../docs/framework/winforms/controls/menustrip-control-overview-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/mainmenu-component-windows-forms.md b/docs/framework/winforms/controls/mainmenu-component-windows-forms.md new file mode 100644 index 00000000000..5bb81aec47e --- /dev/null +++ b/docs/framework/winforms/controls/mainmenu-component-windows-forms.md @@ -0,0 +1,39 @@ +--- +title: "MainMenu コンポーネント (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "MainMenu コントロール [Windows フォーム]" +ms.assetid: 7cd22f29-828b-42e8-9c88-f08aa4533850 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# MainMenu コンポーネント (Windows フォーム) +> [!NOTE] +> `MenuStrip` と `ContextMenuStrip` は、以前のバージョンの `MainMenu` コントロールおよび コントロールに代わると共に追加の機能を提供しますが、`MainMenu` および は、下位互換性を保つ目的および将来使用する目的で、必要に応じて保持できます。 + + Windows フォームの `MainMenu` コンポーネントを使用すると、実行時にメニューが表示されます。 + +## このセクションの内容 + [MainMenu コンポーネントの概要](../../../../docs/framework/winforms/controls/mainmenu-component-overview-windows-forms.md) + このコンポーネントの用途、主な機能、およびプロパティについて説明します。 + +## 関連項目 + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/winforms/controls/make-columns-read-only-in-the-datagrid-using-the-designer.md b/docs/framework/winforms/controls/make-columns-read-only-in-the-datagrid-using-the-designer.md new file mode 100644 index 00000000000..64a10fcc3c0 --- /dev/null +++ b/docs/framework/winforms/controls/make-columns-read-only-in-the-datagrid-using-the-designer.md @@ -0,0 +1,51 @@ +--- +title: "方法 : デザイナーを使用して Windows フォームの DataGridView コントロールで列を読み取り専用にする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "列 [Windows フォーム], 読み取り専用" + - "データ [Windows フォーム], 表示" + - "DataGridView コントロール [Windows フォーム], 読み取り専用列" + - "Windows フォーム, 列" +ms.assetid: b4ef7a75-ab33-4ee3-b2cf-201530e454e9 +caps.latest.revision: 17 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 17 +--- +# 方法 : デザイナーを使用して Windows フォームの DataGridView コントロールで列を読み取り専用にする +既定では、ユーザーは Windows フォーム コントロールに表示されるテキストと数値データを変更できます。 表示するデータを変更できないようにする場合は、データを含む列を読み取り専用にする必要があります。 コントロールを完全に読み取り専用にする方法の詳細については、「[方法 : デザイナーを使用して Windows フォーム DataGridView コントロールで行が追加および削除されないようにする](../../../../docs/framework/winforms/controls/prevent-row-addition-and-deletion-in-the-datagrid-using-the-designer.md)」を参照してください。 + + 次の手順では、 コントロールを含むフォームを持つ **Windows アプリケーション** プロジェクトが必要です。 このプロジェクトの設定の詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」および「[方法 : Windows フォームにコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-controls-to-windows-forms.md)」を参照してください。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +### デザイナーを使用して列を読み取り専用にするには + +1. コントロールの右上隅にあるスマート タグ グリフ \(![スマート タグ グリフ](../../../../docs/framework/winforms/controls/media/vs-winformsmttagglyph.png "VS\_WinFormSmtTagGlyph")\) をクリックして、**\[列の編集\]** を選択します。 + +2. **\[選択された列\]** ボックスの一覧で列を選択します。 + +3. **\[列のプロパティ\]** グリッドで、 プロパティを `true` に設定します。 + + > [!NOTE] + > **\[列の追加\]** ダイアログ ボックスの **\[読み取り専用\]** チェック ボックスをオンにすることによって、列の追加時に列を読み取り専用にすることもできます。 + +## 参照 + + + [方法 : デザイナーを使用して Windows フォーム DataGridView コントロールの列を追加および削除する](../../../../docs/framework/winforms/controls/add-and-remove-columns-in-the-datagrid-using-the-designer.md) + [方法 : デザイナーを使用して Windows フォーム DataGridView コントロールで行が追加および削除されないようにする](../../../../docs/framework/winforms/controls/prevent-row-addition-and-deletion-in-the-datagrid-using-the-designer.md) + [How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa) + [方法 : Windows フォームにコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-controls-to-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/margin-and-padding-in-windows-forms-controls.md b/docs/framework/winforms/controls/margin-and-padding-in-windows-forms-controls.md new file mode 100644 index 00000000000..54ed6ce2860 --- /dev/null +++ b/docs/framework/winforms/controls/margin-and-padding-in-windows-forms-controls.md @@ -0,0 +1,45 @@ +--- +title: "Windows フォーム コントロールでのマージンと埋め込み | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "レイアウト [Windows フォーム], マージンと埋め込み" + - "Margin プロパティ [Windows フォーム]" + - "Padding プロパティ [Windows フォーム]" + - "Windows フォーム, レイアウト" +ms.assetid: 3781b5a1-3085-4072-bed0-44670c23ffdc +caps.latest.revision: 5 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 5 +--- +# Windows フォーム コントロールでのマージンと埋め込み +フォーム上のコントロールを正確に配置することは、多くのアプリケーションで優先度の高い作業です。 名前空間は、これを実現する多くのレイアウト機能を提供します。 最も重要な 2 つは、 プロパティと プロパティです。 + + プロパティは、その他のコントロールで、コントロールの枠線からの指定された距離を保持するコントロールの周囲のスペースを定義します。 + + プロパティは、コントロールの内容 \( プロパティの値など\) で、コントロールの枠線からの指定した距離を保持するコントロールの内部のスペースを定義します。 + + 次の図は、コントロールの プロパティと プロパティを示しています。 + + ![Windows フォーム コントロールのパディングとマージン](../../../../docs/framework/winforms/controls/media/vs-winformpadmargin.gif "VS\_WinFormPadMargin") + + Visual Studio では、この機能のデザイン時サポートがあります。 「[チュートリアル : Padding、Margin、および AutoSize プロパティを使用した Windows フォーム コントロールのレイアウト](http://msdn.microsoft.com/library/3z3f9e8b\(v=vs.110\))」も参照してください。 + +## 参照 + + + + + + \ No newline at end of file diff --git a/docs/framework/winforms/controls/maskedtextbox-control-windows-forms.md b/docs/framework/winforms/controls/maskedtextbox-control-windows-forms.md new file mode 100644 index 00000000000..1575fcef03c --- /dev/null +++ b/docs/framework/winforms/controls/maskedtextbox-control-windows-forms.md @@ -0,0 +1,44 @@ +--- +title: "MaskedTextBox コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "MaskedTextBox" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "MaskedTextBox コントロール [Windows フォーム]" + - "テキスト ボックス, 検証 (ユーザー入力の)" + - "ユーザー入力, 検証 (Windows フォームで)" + - "検証 (ユーザー入力の), Windows フォーム" +ms.assetid: 235d6121-027d-481d-8d59-4f6794d15d0c +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# MaskedTextBox コントロール (Windows フォーム) +このトピックでは、`MaskedTextBox` コントロールに関する他のトピックへのリンクを示します。 + +## このセクションの内容 + [チュートリアル : MaskedTextBox コントロールの使用](../../../../docs/framework/winforms/controls/walkthrough-working-with-the-maskedtextbox-control.md) + `MaskedTextBox` コントロールの主な機能について説明します。 + + [方法 : MaskedTextBox コントロールにデータをバインドする](../../../../docs/framework/winforms/controls/how-to-bind-data-to-the-maskedtextbox-control.md) + データベースのデータがマスク定義で予期される書式に一致しない場合に、データの書式を再設定する方法について説明します。 + +## 関連項目 + + マスク付きテキスト ボックス コントロールを実装する基本クラスです。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/media/cpdatacontainerctrl.gif b/docs/framework/winforms/controls/media/cpdatacontainerctrl.gif new file mode 100644 index 00000000000..8fafc3d6c3d Binary files /dev/null and b/docs/framework/winforms/controls/media/cpdatacontainerctrl.gif differ diff --git a/docs/framework/winforms/controls/media/demomarqueecontrol.gif b/docs/framework/winforms/controls/media/demomarqueecontrol.gif new file mode 100644 index 00000000000..822874de4f5 Binary files /dev/null and b/docs/framework/winforms/controls/media/demomarqueecontrol.gif differ diff --git a/docs/framework/winforms/controls/media/listviewgroups.gif b/docs/framework/winforms/controls/media/listviewgroups.gif new file mode 100644 index 00000000000..417345f5249 Binary files /dev/null and b/docs/framework/winforms/controls/media/listviewgroups.gif differ diff --git a/docs/framework/winforms/controls/media/listviewinsertion.gif b/docs/framework/winforms/controls/media/listviewinsertion.gif new file mode 100644 index 00000000000..051aa6b5da6 Binary files /dev/null and b/docs/framework/winforms/controls/media/listviewinsertion.gif differ diff --git a/docs/framework/winforms/controls/media/listviewtile.gif b/docs/framework/winforms/controls/media/listviewtile.gif new file mode 100644 index 00000000000..6ae8e977345 Binary files /dev/null and b/docs/framework/winforms/controls/media/listviewtile.gif differ diff --git a/docs/framework/winforms/controls/media/net-bindsrcdatabindarch.gif b/docs/framework/winforms/controls/media/net-bindsrcdatabindarch.gif new file mode 100644 index 00000000000..192c1714260 Binary files /dev/null and b/docs/framework/winforms/controls/media/net-bindsrcdatabindarch.gif differ diff --git a/docs/framework/winforms/controls/media/vbcontrol1.gif b/docs/framework/winforms/controls/media/vbcontrol1.gif new file mode 100644 index 00000000000..5c06417e409 Binary files /dev/null and b/docs/framework/winforms/controls/media/vbcontrol1.gif differ diff --git a/docs/framework/winforms/controls/media/vs-tlpanchor3.gif b/docs/framework/winforms/controls/media/vs-tlpanchor3.gif new file mode 100644 index 00000000000..c4c7b72e711 Binary files /dev/null and b/docs/framework/winforms/controls/media/vs-tlpanchor3.gif differ diff --git a/docs/framework/winforms/controls/media/vs-winformpadmargin.gif b/docs/framework/winforms/controls/media/vs-winformpadmargin.gif new file mode 100644 index 00000000000..8bb7202b2c0 Binary files /dev/null and b/docs/framework/winforms/controls/media/vs-winformpadmargin.gif differ diff --git a/docs/framework/winforms/controls/menustrip-control-overview-windows-forms.md b/docs/framework/winforms/controls/menustrip-control-overview-windows-forms.md new file mode 100644 index 00000000000..b06ef4b8899 --- /dev/null +++ b/docs/framework/winforms/controls/menustrip-control-overview-windows-forms.md @@ -0,0 +1,72 @@ +--- +title: "MenuStrip コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "MenuStrip" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "メニュー, 作成" + - "MenuStrip コントロール [Windows フォーム], MenuStrip コントロールの概要" +ms.assetid: f45516e5-bf01-4468-b851-d45f4c33c055 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# MenuStrip コントロールの概要 (Windows フォーム) +メニューは、共通のテーマでグループ化されたコマンドを保持することによってユーザーにさまざまな機能を公開します。 + + コントロールは、このバージョンの Visual Studio および .NET Framework で追加された新機能です。 このコントロールを使用すると、Microsoft Office に表示されるようなメニューを簡単に作成できます。 + + コントロールは、マルチ ドキュメント インターフェイス \(MDI: Multiple Document Interface\) と、メニューのマージ、ツール ヒント、およびオーバーフローをサポートします。 アクセス キー、ショートカット キー、チェック マーク、イメージ、および区分線を追加してメニューの使いやすさと読みやすさを向上させることもできます。 + + コントロールは、 コントロールに代わると共に追加の機能を提供します。ただし、 コントロールは、下位互換性を保持するため、および将来必要になったときに使用できるように保持されています。 + +## MenuStrip コントロールの用途 + コントロールを使用すると、次のことができます。 + +- 簡単にカスタマイズでき、一般的に使用できるだけでなく、高度なユーザー インターフェイス機能とレイアウト機能 \(テキストとイメージの並べ替えと配置、ドラッグ アンド ドロップ操作、MDI、オーバーフロー、およびメニュー コマンドにアクセスするための代替モード\) をサポートするメニューを作成する。 + +- オペレーティング システムの標準的な外観と動作をサポートする。 + +- 他のコントロールのイベント処理と同じように、コンテナーおよびコンテナーに含まれる項目のすべてを一貫して処理する。 + + および関連クラスの特に重要なプロパティのいくつかを次の表に示します。 + +|プロパティ|Description| +|-----------|-----------------| +||MDI 子フォームの一覧を表示するために使用する を取得または設定します。| +||MDI アプリケーションの子メニューを親メニューにマージする方法を取得または設定します。| +||MDI アプリケーションのメニュー内のマージされた項目の位置を取得または設定します。| +||フォームが MDI 子フォームのコンテナーであるかどうかを示す値を取得または設定します。| +|| に対してツール ヒントを表示するかどうかを示す値を取得または設定します。| +|| がオーバーフロー機能をサポートするかどうかを示す値を取得または設定します。| +|| に関連付けられたショートカット キーを取得または設定します。| +|| に関連付けられたショートカット キーを の横に表示するかどうかを示す値を取得または設定します。| + + 重要な コンパニオン クラスを次の表に示します。 + +|Class|Description| +|-----------|-----------------| +|| または に表示される選択可能なオプションを表します。| +||ショートカット メニューを表します。| +|| または上位レベルのメニュー項目をクリックしたときに表示される一覧から特定の項目を選択できるようにするコントロールを表します。| +||クリック時にドロップダウン項目を表示する、 から派生するコントロールの基本機能を提供します。| + +## 参照 + + + + + + \ No newline at end of file diff --git a/docs/framework/winforms/controls/menustrip-control-windows-forms.md b/docs/framework/winforms/controls/menustrip-control-windows-forms.md new file mode 100644 index 00000000000..d4148fe8a4d --- /dev/null +++ b/docs/framework/winforms/controls/menustrip-control-windows-forms.md @@ -0,0 +1,93 @@ +--- +title: "MenuStrip コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "メニュー" + - "MenuStrip コントロール [Windows フォーム]" +ms.assetid: e361bf98-eed8-4ed3-9dfb-5a2e865e3ce6 +caps.latest.revision: 21 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 21 +--- +# MenuStrip コントロール (Windows フォーム) +このコントロールは、アプリケーション コマンドをグループ化して簡単にアクセスできるようにします。 + +## このセクションの内容 + [MenuStrip コントロールの概要](../../../../docs/framework/winforms/controls/menustrip-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : ToolStripMenuItems に拡張機能を追加する](../../../../docs/framework/winforms/controls/how-to-add-enhancements-to-toolstripmenuitems.md) + メニューとメニュー コマンドにチェック マーク、イメージ、ショートカット キー、アクセス キー、および区分線を追加する方法について説明します。 + + [方法 : MenuStrip を MDI 親ウィンドウに追加する](../../../../docs/framework/winforms/controls/how-to-append-a-menustrip-to-an-mdi-parent-window-windows-forms.md) + 複数のプロパティを設定して、マルチ ドキュメント インターフェイス \(MDI: Multiple Document Interface\) 子メニューを MDI 親メニューに追加する方法について説明します。 + + [方法 : MenuStrip を使用して MDI ウィンドウの一覧を作成する](../../../../docs/framework/winforms/controls/how-to-create-an-mdi-window-list-with-menustrip-windows-forms.md) + 親フォームの \[ウィンドウ\] メニューに、すべてのアクティブな子フォームの一覧を作成する方法について説明します。 + + [方法 : ToolStripMenuItems を無効にする](../../../../docs/framework/winforms/controls/how-to-disable-toolstripmenuitems.md) + メニュー全体と個々のメニュー コマンドの両方を無効にする方法について説明します。 + + [方法 : ToolStripMenuItems を非表示にする](../../../../docs/framework/winforms/controls/how-to-hide-toolstripmenuitems.md) + メニュー全体と個々のメニュー コマンドの両方を非表示にする方法について説明します。 + + [方法 : MDI ドロップダウン メニューに MenuStrip を挿入する](../../../../docs/framework/winforms/controls/how-to-insert-a-menustrip-into-an-mdi-drop-down-menu-windows-forms.md) + 複数のプロパティを設定して、MDI 子メニューのメニュー項目のグループを MDI 親メニューのドロップダウン部分に挿入する方法について説明します。 + + [方法 : ToolStripMenuItem を MDI ドロップダウン メニューから削除する](../../../../docs/framework/winforms/controls/how-to-remove-a-toolstripmenuitem-from-an-mdi-drop-down-menu-windows-forms.md) + 複数のプロパティを設定して、MDI 親メニューのドロップダウン部分からメニュー項目を削除する方法について説明します。 + + [方法 : MenuStrip のチェックの余白とイメージの余白を設定する](../../../../docs/framework/winforms/controls/how-to-configure-menustrip-check-margins-and-image-margins.md) + チェックとイメージの余白のプロパティをさまざまに設定することで をカスタマイズする方法について説明します。 + + [方法 : フォームに標準メニュー項目を追加する](../../../../docs/framework/winforms/controls/how-to-provide-standard-menu-items-to-a-form.md) + コントロールを使用して標準的なメニューのあるフォームを作成する方法について説明します。 + + [方法 : MenuStrip にオプション ボタンを表示する](../../../../docs/framework/winforms/controls/how-to-display-option-buttons-in-a-menustrip-windows-forms.md) + オプション ボタン \(またはラジオ ボタン\) の動作を に実装する方法について説明します。 + + [Windows フォームの MenuStrip コントロールへのメニュー項目のマージ](../../../../docs/framework/winforms/controls/merging-menu-items-in-the-windows-forms-menustrip-control.md) + メニューのマージに関する一般的な概念とメソッドについて説明します。 + + [方法 : MDI アプリケーションでメニューの自動マージを設定する](../../../../docs/framework/winforms/controls/how-to-set-up-automatic-menu-merging-for-mdi-applications.md) + 実行時にメニュー項目を自動的にマージする方法について説明します。 + +- [MenuStrip Items コレクション エディター](http://msdn.microsoft.com/library/ms233625%20\(v=vs.110\)) + +- [方法: ToolStripMenuItems をコピーする](http://msdn.microsoft.com/library/ms171653%20\(v=vs.110\)) + +- [方法: デザイナーを使用して ToolStripMenuItems を非表示にする](http://msdn.microsoft.com/library/ms171658%20\(v=vs.110\)) + +- [方法: デザイナーを使用して ToolStripMenuItems を無効にする](http://msdn.microsoft.com/library/ms171656%20\(v=vs.110\)) + +- [方法: ToolStripMenuItems を移動する](http://msdn.microsoft.com/library/ms171660%20\(v=vs.110\)) + +- [チュートリアル : 標準メニュー項目をフォームに用意する](http://msdn.microsoft.com/library/ms233662\(v=vs.110\)) + +- [\[MenuStrip タスク\] ダイアログ ボックス](http://msdn.microsoft.com/library/ms233645%20\(v=vs.110\)) + +## 関連項目 + + フォームにメニュー システムを提供する クラスの機能について説明します。 + + + ショートカット メニューを表す の機能について説明します + + + または に表示される選択可能なオプションを表す クラスの機能について説明します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/merging-menu-items-in-the-windows-forms-menustrip-control.md b/docs/framework/winforms/controls/merging-menu-items-in-the-windows-forms-menustrip-control.md new file mode 100644 index 00000000000..77d7560ab29 --- /dev/null +++ b/docs/framework/winforms/controls/merging-menu-items-in-the-windows-forms-menustrip-control.md @@ -0,0 +1,70 @@ +--- +title: "Windows フォームの MenuStrip コントロールへのメニュー項目のマージ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "MenuStrip, マージ" + - "マージ, 一般的な概念" +ms.assetid: 95e113ba-f362-4dda-8a76-6d95ddc45cee +caps.latest.revision: 7 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 7 +--- +# Windows フォームの MenuStrip コントロールへのメニュー項目のマージ +マルチ ドキュメント インターフェイス \(MDI: Multiple Document Interface\) アプリケーションがある場合、子フォームのメニュー項目またはメニュー全体を親フォームのメニューにマージできます。 + + このトピックでは、MDI アプリケーションでメニュー項目のマージに関連する基本概念について説明します。 + +## 一般的な概念 + マージ手順には、ターゲット コントロールとソース コントロールが関係します。 + +- ターゲットは、メニュー項目をマージするメイン フォームまたは MDI 親フォームの コントロールです。 + +- ソースは、ターゲット メニューにマージするメニュー項目が含まれる MDI 子フォームの コントロールです。 + + プロパティは、作成するドロップダウン リストのメニュー項目を、現在の MDI 親フォームに対する MDI 子フォームのタイトルを使用して識別します。 たとえば、**\[ウィンドウ\]** メニューで現在開いている MDI の子フォームを列挙します。 + + プロパティは、MDI 子フォームの のどのメニュー項目を表示するかを指定します。 + + メニュー項目のマージは手動または自動で行うことができます。 どちらの方法でもメニュー項目は同様にマージされますが、マージをアクティブにする方法は異なります。詳細については、このトピックで後述する「手動マージ」と「自動マージ」を参照してください。 手動マージと自動マージのどちらでも、個々のマージ処理は次のマージ処理に影響します。 + + のマージによって、ある のメニュー項目を閉じずに他のメニュー項目に移動します。 の場合と同様です。 + +## MergeAction の値 + プロパティを使用してソース のメニュー項目にマージ処理を設定します。 + + 次の表で、使用できるマージ処理の意味と一般的な使用法を説明します。 + +|MergeAction の値|Description|一般的な用途| +|--------------------|-----------------|------------| +||\(既定\) ターゲット項目のコレクションの末尾にソース項目を追加します。|プログラムの一部がアクティブな場合、メニューの末尾にメニュー項目を追加します。| +||ターゲット項目のコレクションのうち、ソース項目に設定された プロパティに相当する場所にソース項目を追加します。|プログラムの一部がアクティブな場合、メニューの中間または先頭にメニュー項目を追加します。

値がどちらのメニュー項目でも同じ場合、逆順で追加します。 元の順序を維持するには、 を適切に設定します。| +||一致するテキストを検索します。一致するテキストが見つからない場合は 値を使用します。次に、この一致するターゲット メニュー項目をソース メニュー項目で置換します。|ターゲット メニュー項目を、名前は同じで何かが異なるソース メニュー項目で置換します。| +||一致するテキストを検索します。一致するテキストが見つからない場合は 値を使用します。次に、ソースのすべてのドロップダウン項目をターゲットに追加します。|メニュー項目をサブメニューに挿入または追加したり、メニュー項目をサブメニューから削除したりするメニュー構造を構築します。 たとえば、MDI 子フォームのメニュー項目をメインの の **\[名前を付けて保存\]** メニューに追加できます。

を使用すると、処理を実行しなくてもメニュー構造内を検索できます。 これは、以降の項目を評価する 1 つの方法です。| +||一致するテキストを検索します。一致するテキストが見つからない場合は 値を使用します。次に、ターゲットから項目を削除します。|ターゲットの からメニュー項目を削除します。| + +## 手動マージ + コントロールのみが自動マージに参加します。 など、他のコントロールの項目を結合するには、必要に応じて メソッドと メソッドをコードで呼び出して、手動でマージする必要があります。 + +## 自動マージ + ソース フォームをアクティブにすることで、MDI アプリケーションの自動マージを使用できます。 MDI アプリケーションの を使用するには、 プロパティをターゲットの に設定します。これは、ソースの で実行するマージ処理が、ターゲットの に反映されるようにするためです。 + + MDI ソースで をアクティブにすることで、自動マージをトリガーできます。 アクティブになると、ソース は MDI のターゲットにマージされます。 新しいフォームがアクティブになると、前のフォームではマージが元の状態に戻り、新しいフォームでマージがトリガーされます。 この動作は、必要に応じて各 プロパティを設定する方法、および各 プロパティを設定する方法で制御できます。 + +## 参照 + + + [MenuStrip コントロール](../../../../docs/framework/winforms/controls/menustrip-control-windows-forms.md) + [方法 : MenuStrip を使用して MDI ウィンドウの一覧を作成する](../../../../docs/framework/winforms/controls/how-to-create-an-mdi-window-list-with-menustrip-windows-forms.md) + [方法 : MDI アプリケーションでメニューの自動マージを設定する](../../../../docs/framework/winforms/controls/how-to-set-up-automatic-menu-merging-for-mdi-applications.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/method-implementation-in-custom-controls.md b/docs/framework/winforms/controls/method-implementation-in-custom-controls.md new file mode 100644 index 00000000000..bb91b5284d0 --- /dev/null +++ b/docs/framework/winforms/controls/method-implementation-in-custom-controls.md @@ -0,0 +1,86 @@ +--- +title: "カスタム コントロールへのメソッドの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "メソッドの実装のユーザー コントロール [Windows フォーム]" + - "メソッドのオーバー ロードのカスタム コントロール [Windows フォーム]" + - "カスタム コントロール [Windows フォーム] メソッドの実装" + - "メソッド [Windows フォーム]" + - "カスタム コントロールのメソッド [Windows フォーム]" +ms.assetid: 35d14fca-4bb4-4a27-8211-1f7a98ea27de +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# カスタム コントロールへのメソッドの実装 +コントロールにメソッドを実装する方法は、他のコンポーネントにメソッドが実装する場合と同じです。 + + Visual Basic では、値を返す必要のあるメソッドは `Public Function` として実装されます。 値が返されない場合は、`Public Sub` として実装されます。 メソッドは次の構文で宣言します。 + +```vb +Public Function ConvertMatterToEnergy(Matter as Integer) As Integer + ' Conversion code goes here. +End Function +``` + + 関数は値を返すため、整数、文字列、オブジェクトなど、戻り値の型を指定する必要があります。 `Function` プロシージャや `Sub` プロシージャが引数をとる場合は、引数も指定する必要があります。 + + Visual Basic とは異なり、C# では関数とプロシージャが区別されません。 メソッドは値を返すか、または `void` を返します。 C# のパブリック メソッドを宣言する構文は次のとおりです。 + +```csharp +public int ConvertMatterToEnergy(int matter) +{ + // Conversion code goes here. +} +``` + + メソッドを宣言する際、可能な限り、メソッドのすべての引数を明示的なデータ型として宣言します。 オブジェクト参照を使用する引数は、特定のクラス型として宣言される必要があります (例: `As Widget` ではなく、`As Object`)。 Visual Basic では、既定の設定 `Option Strict` によって自動的にこの規則が適用されます。 + + 型付き引数を使用することにより、開発者によるエラーの多くを、実行時ではなく、コンパイラによって検出できます。 コンパイラは常に多くのエラーを検出するのに対し、ランタイム テストは、テスト スイートと同程度の精度しかありません。 + +## オーバーロードされたメソッド + コントロールのユーザーが、メソッドにさまざまなパラメーターの組み合わせを指定できるようにするには、明示的なデータ型を使用して、メソッドのオーバーロードを複数提供します。 テスト時にエラーが検出されない場合があるため、任意のデータ型を含めることのできる `As Object` として宣言するパラメーターは作成しないでください。 + +> [!NOTE] +> 共通言語ランタイムの汎用データ型は、`Object` ではなく、`Variant` です。 `Variant` は、言語から削除されました。 + + たとえば、`Spin` という仮想のコントロールに `Widget` メソッドがあり、スピンの方向と速度を直接指定するか、角運動量を吸収する他の `Widget` オブジェクトを指定できます。 + +```vb +Overloads Public Sub Spin( _ + ByVal SpinDirection As SpinDirectionsEnum, _ + ByVal RevolutionsPerSecond As Double) + ' Implementation code here. +End Sub +Overloads Public Sub Spin(ByVal Driver As Widget) _ + ' Implementation code here. +End Sub +``` + +```csharp +public void Spin(SpinDirectionsEnum spinDirection, double revolutionsPerSecond) +{ + // Implementation code here. +} + +public void Spin(Widget driver) +{ + // Implementation code here. +} +``` + +## 関連項目 + [イベント](../../../../docs/standard/events/index.md) + [Windows フォーム コントロールのプロパティ](../../../../docs/framework/winforms/controls/properties-in-windows-forms-controls.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/monthcalendar-control-overview-windows-forms.md b/docs/framework/winforms/controls/monthcalendar-control-overview-windows-forms.md new file mode 100644 index 00000000000..07e22c09a65 --- /dev/null +++ b/docs/framework/winforms/controls/monthcalendar-control-overview-windows-forms.md @@ -0,0 +1,39 @@ +--- +title: "MonthCalendar コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "MonthCalendar" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "予定表コントロール, Windows フォーム" + - "予定表, Windows フォーム コントロール" + - "MonthCalendar コントロール [Windows フォーム], 設定 (週の最初の曜日を)" +ms.assetid: 788c5325-b721-44ec-95bf-9b680ba0f6a2 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# MonthCalendar コントロールの概要 (Windows フォーム) +Windows フォームの コントロールを使用すると、わかりやすいグラフィカル インターフェイスを使用して、日付情報を表示および設定できます。 このコントロールはカレンダー \(曜日の下に当月の日付が配列されたグリッド\) を表示します。日付の選択範囲が強調表示されます。 月表示のキャプションの両側にある矢印ボタンをクリックして、ほかの月を選択できます。 このコントロールでは、類似した コントロールとは異なり、複数の日付を選択できます。 コントロールの詳細については、「[DateTimePicker コントロール](../../../../docs/framework/winforms/controls/datetimepicker-control-windows-forms.md)」を参照してください。 + +## MonthCalendar コントロールの設定 + コントロールの外観には、さまざまな設定方法があります。 既定では、当日の日付が丸で囲まれて表示され、グリッドの下部にも表示されます。 この機能は、 プロパティと プロパティに `false` を設定することで変更できます。 プロパティに `true` を設定して、カレンダーに週番号を表示することもできます。 プロパティの設定によって、複数の月を縦や横に並べて表示することもできます。 既定では週の始まりが日曜日になっていますが、 プロパティで任意の曜日に変更できます。 + + 特定の日付を太字で表示することもできます。 オブジェクトを プロパティに追加すると、特定の日付が一度だけ太字で表示されます。 プロパティに追加すると、毎年太字で表示されます。 プロパティに追加すると、毎月太字で表示されます。 詳細については、「[方法 : Windows フォームの MonthCalendar コントロールを使用して特定の日付を太字で表示する](../../../../docs/framework/winforms/controls/display-specific-days-in-bold-with-wf-monthcalendar-control.md)」を参照してください。 + + コントロールの主要なプロパティは、 プロパティです。このプロパティは、コントロールで選択された日付の範囲を表します。 には、 プロパティに設定された選択可能な日付の数を超える値は指定できません。 ユーザーが選択できる最も古い日付と最も新しい日付は、 プロパティと プロパティで決定します。 + +## 参照 + + [MonthCalendar コントロール](../../../../docs/framework/winforms/controls/monthcalendar-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/monthcalendar-control-windows-forms.md b/docs/framework/winforms/controls/monthcalendar-control-windows-forms.md new file mode 100644 index 00000000000..3132d50771d --- /dev/null +++ b/docs/framework/winforms/controls/monthcalendar-control-windows-forms.md @@ -0,0 +1,54 @@ +--- +title: "MonthCalendar コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "予定表コントロール" + - "予定表" + - "日付, コントロール" + - "MonthCalendar コントロール [Windows フォーム]" +ms.assetid: 051c6518-e0ca-426b-855c-f9bf70972970 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# MonthCalendar コントロール (Windows フォーム) +Windows フォームの `MonthCalendar` コントロールを使用すると、わかりやすいグラフィカル インターフェイスを使用して、日付情報を表示および設定できます。 このコントロールには、曜日の下に月の日付が配列されたグリッドがあります。 月表示のキャプションの両側にある矢印ボタンをクリックして、ほかの月を選択できます。 似た機能を持つ コントロールとは異なり、このコントロールでは日付の範囲を選択できます。ただし、 コントロールでは日付のほかに時刻も設定できます。 + +## このセクションの内容 + [MonthCalendar コントロールの概要](../../../../docs/framework/winforms/controls/monthcalendar-control-overview-windows-forms.md) + `MonthCalendar` コントロールの全般的な概念を説明します。このコントロールにより、ユーザーはアプリケーションの日付情報を表示したり設定したりできます。 + + [方法 : Windows フォームの MonthCalendar コントロールの外観を変更する](../../../../docs/framework/winforms/controls/how-to-change-monthcalendar-control-appearance.md) + `MonthCalendar` コントロールの表示形式をカスタマイズする方法について説明します。 + + [方法 : Windows フォームの MonthCalendar コントロールにおいて複数の月を表示する](../../../../docs/framework/winforms/controls/display-more-than-one-month-wf-monthcalendar-control.md) + 同時に 2 か月以上を表示させるように `MonthCalendar` コントロールを設定する方法について説明します。 + + [方法 : Windows フォームの MonthCalendar コントロールを使用して特定の日付を太字で表示する](../../../../docs/framework/winforms/controls/display-specific-days-in-bold-with-wf-monthcalendar-control.md) + 特定の日付を太字で表示させる方法を説明します。 + + [方法 : Windows フォームの MonthCalendar コントロールで日付の範囲を選択する](../../../../docs/framework/winforms/controls/how-to-select-a-range-of-dates-in-the-windows-forms-monthcalendar-control.md) + `MonthCalendar` コントロールから特定範囲の日付をプログラムで選択する方法について説明します。 + +## 関連項目 + + クラスとそのメンバーに関する参照情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 + + [DateTimePicker コントロール](../../../../docs/framework/winforms/controls/datetimepicker-control-windows-forms.md) + と同様の機能を持つコントロールです。 コントロールでは時刻を選択できますが、日付の範囲指定はできません。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/move-through-a-dataset-with-wf-bindingnavigator-control.md b/docs/framework/winforms/controls/move-through-a-dataset-with-wf-bindingnavigator-control.md new file mode 100644 index 00000000000..ba7dc667ab9 --- /dev/null +++ b/docs/framework/winforms/controls/move-through-a-dataset-with-wf-bindingnavigator-control.md @@ -0,0 +1,50 @@ +--- +title: "方法 : Windows フォームの BindingNavigator コントロールを使用して DataSet を移動する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "BindingNavigator コントロール [Windows フォーム], 移動 (データセット内を)" + - "データセット [Windows フォーム], 移動" + - "例 [Windows フォーム], BindingNavigator コントロール" +ms.assetid: 146d97be-3d97-400e-accb-860bbf47729d +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法 : Windows フォームの BindingNavigator コントロールを使用して DataSet を移動する +データ ドリブン アプリケーションを作成するときに、ユーザーにデータのコレクションを表示する必要がある場合があります。 コントロールは、 コンポーネントと組み合わせて、コレクションを移動して項目を順番に表示する、便利で拡張可能なソリューションを提供します。 + +## 使用例 + コントロールを使用してデータ間を移動する方法を、次のコード例に示します。 セットは に含まれ、 コンポーネントを持つ コントロールにバインドされます。 + +> [!NOTE] +> 接続文字列内に機密情報 \(パスワードなど\) を格納すると、アプリケーションのセキュリティに影響を及ぼすことがあります。 データベースへのアクセスを制御する方法としては、Windows 認証 \(統合セキュリティとも呼ばれます\) を使用する方が安全です。 詳細については、「[接続情報の保護](../../../../docs/framework/data/adonet/protecting-connection-information.md)」を参照してください。 + + [!code-csharp[System.Windows.Forms.DataNavigator#1](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataNavigator/CS/form1.cs#1)] + [!code-vb[System.Windows.Forms.DataNavigator#1](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataNavigator/VB/form1.vb#1)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- System、System.Data、System.Drawing、System.Windows.Forms、および System.Xml アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法の詳細は、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + + + + [BindingNavigator コントロール](../../../../docs/framework/winforms/controls/bindingnavigator-control-windows-forms.md) + [BindingSource コンポーネント](../../../../docs/framework/winforms/controls/bindingsource-component.md) + [方法 : Windows フォーム コントロールを型にバインドする](../../../../docs/framework/winforms/controls/how-to-bind-a-windows-forms-control-to-a-type.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/multithreading-in-windows-forms-controls.md b/docs/framework/winforms/controls/multithreading-in-windows-forms-controls.md new file mode 100644 index 00000000000..cdca3f126b9 --- /dev/null +++ b/docs/framework/winforms/controls/multithreading-in-windows-forms-controls.md @@ -0,0 +1,53 @@ +--- +title: "Windows フォーム コントロールのマルチスレッド処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "BackgroundWorker コンポーネント" + - "BeginInvoke メソッド" + - "スレッド処理 [Windows フォーム], コントロール" +ms.assetid: c311d652-0f26-45fa-bdcc-b1615d73ce4e +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# Windows フォーム コントロールのマルチスレッド処理 +多くのアプリケーションでは、時間がかかる操作を別スレッドで実行することにより、ユーザー インターフェイス \(UI\) の反応を良くすることができます。 Windows フォーム コントロールでマルチスレッド処理を行うための手段はいくつか用意されています。たとえば、 名前空間、 メソッド、および `BackgroundWorker` コンポーネントです。 + +> [!NOTE] +> `BackgroundWorker` コンポーネントは、 名前空間および メソッドに代わるもので、また機能が追加されています。ただし、この名前空間とメソッドは、下位互換性を保つ目的、および必要に応じて将来使用する目的から、そのまま残されています。 詳細については、「[BackgroundWorker コンポーネントの概要](../../../../docs/framework/winforms/controls/backgroundworker-component-overview.md)」を参照してください。 + +## このセクションの内容 + [方法 : Windows フォーム コントロールのスレッド セーフな呼び出しを行う](../../../../docs/framework/winforms/controls/how-to-make-thread-safe-calls-to-windows-forms-controls.md) + Windows フォーム コントロールのスレッド セーフな呼び出しを行う方法を示します。 + + [方法 : バックグラウンド スレッドを使用してファイルを検索する](../../../../docs/framework/winforms/controls/how-to-use-a-background-thread-to-search-for-files.md) + 名前空間および メソッドを使用して、ファイルを非同期で検索する方法を示します。 + +## 関連項目 + + 非同期の操作用のワーカー スレッドをカプセル化するコンポーネントについて説明されています。 + + + サウンドを非同期で読み込む方法について説明されています。 + + + イメージを非同期で読み込む方法について説明されています。 + +## 関連項目 + [方法 : バックグラウンドで操作を実行する](../../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md) + 時間がかかる操作を コンポーネントで実行する方法を示します。 + + [BackgroundWorker コンポーネントの概要](../../../../docs/framework/winforms/controls/backgroundworker-component-overview.md) + コンポーネントを使用して非同期の操作を実行する方法を説明するトピックを示します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/notifyicon-component-overview-windows-forms.md b/docs/framework/winforms/controls/notifyicon-component-overview-windows-forms.md new file mode 100644 index 00000000000..e37300beba6 --- /dev/null +++ b/docs/framework/winforms/controls/notifyicon-component-overview-windows-forms.md @@ -0,0 +1,42 @@ +--- +title: "NotifyIcon コンポーネントの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "NotifyIcon" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "NotifyIcon コンポーネント, NotifyIcon コンポーネントの概要" + - "システム トレイのアイコン, システム トレイのアイコンについて" + - "システム トレイのアイコン, 使用 (Windows フォームで)" +ms.assetid: 5b9189fa-d4ae-41a6-9b97-eb1f44bb1a69 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# NotifyIcon コンポーネントの概要 (Windows フォーム) +Windows フォームの コンポーネントは、通常、バックグラウンドで動作し、ユーザー インターフェイスに長時間表示されないプロセスのアイコンを表示する場合に使用されます。 たとえば、タスク バーの状態通知領域のアイコンをクリックしてアクセス可能なウイルス対策プログラムなどです。 + +## NotifyIcons のキー プロパティ + 各 コンポーネントは、ステータス領域に 1 つのアイコンを表示します。 3 つのバック グラウンド プロセスがあり、それぞれのアイコンを表示する必要がある場合は、3 つの コンポーネントをフォームに追加する必要があります。 コンポーネントのキー プロパティは、 および です。 プロパティは、ステータス領域に表示されるアイコンを設定します。 アイコンを表示するために、 プロパティを `true` に設定する必要があります。 + + [!INCLUDE[vsprvslong](../../../../includes/vsprvslong-md.md)] を使用している場合は、 コントロールによって使用できる標準のイメージの大規模なライブラリにアクセスできます。 + +## NotifyIcons オプション + バルーン ヒント、ショートカット メニュー、およびツールヒントを に関連付けて、ユーザーを支援できます。 + + メソッドを呼び出して、バルーンヒントを表示する期間を指定することで、 のバルーン ヒントを表示できます。 テキスト、アイコン、およびとバルーン ヒントのタイトルを、それぞれ 、および を使用して指定できます。 コンポーネントには、ツールヒントとショートカット メニューも関連付けることができます。 詳細については、「[ToolTip コンポーネントの概要](../../../../docs/framework/winforms/controls/tooltip-component-overview-windows-forms.md)」および「[ContextMenu コンポーネントの概要](../../../../docs/framework/winforms/controls/contextmenu-component-overview-windows-forms.md)」を参照してください。 + +## 参照 + + [NotifyIcon コンポーネント](../../../../docs/framework/winforms/controls/notifyicon-component-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/notifyicon-component-windows-forms.md b/docs/framework/winforms/controls/notifyicon-component-windows-forms.md new file mode 100644 index 00000000000..1e4b5a85db1 --- /dev/null +++ b/docs/framework/winforms/controls/notifyicon-component-windows-forms.md @@ -0,0 +1,49 @@ +--- +title: "NotifyIcon コンポーネント (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "アプリケーション アイコン, バックグラウンド処理" + - "バックグラウンド プログラムのアイコン" + - "コンテキスト メニュー, バックグラウンド プロセスの" + - "NotifyIcon コンポーネント" + - "ステータス トレイのアイコン" + - "システム トレイのアイコン" + - "SysTray のアイコン" + - "ユーザー インターフェイス, バックグラウンド プロセスの" +ms.assetid: 20312268-1d67-494a-8601-5c43b7f1b513 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# NotifyIcon コンポーネント (Windows フォーム) +Windows フォームの `NotifyIcon` コンポーネントは、他にユーザー インターフェイスを持たない、バックグラウンドで動作するプロセスのために、タスク バーの状態通知領域にアイコンを表示します。 例としては、タスクバーの状態通知領域にあるアイコンをクリックしてアクセスできるウイルス防止プログラムなどがあります。 + +## このセクションの内容 + [NotifyIcon コンポーネントの概要](../../../../docs/framework/winforms/controls/notifyicon-component-overview-windows-forms.md) + `NotifyIcon` コンポーネントの全般的な概念を説明します。このコンポーネントは、ユーザー インターフェイスを持たない、バックグラウンドで動作するプロセスのためにアイコンを表示します。 + + [方法 : Windows フォームの NotifyIcon コンポーネントによってタスクバーにアプリケーション アイコンを追加する](../../../../docs/framework/winforms/controls/app-icons-to-the-taskbar-with-wf-notifyicon.md) + `NotifyIcon` コンポーネントで表示するアイコンを設定する手順を説明します。 + + [方法 : ショートカット メニューを Windows フォーム NotifyIcon コンポーネントに関連付ける](../../../../docs/framework/winforms/controls/how-to-associate-a-shortcut-menu-with-a-windows-forms-notifyicon-component.md) + `NotifyIcon` コンポーネントにショートカット メニューを追加する手順を説明します。 + +## 関連項目 + + クラスとそのメンバーに関する参照情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/numericupdown-control-overview-windows-forms.md b/docs/framework/winforms/controls/numericupdown-control-overview-windows-forms.md new file mode 100644 index 00000000000..a7fdfe04385 --- /dev/null +++ b/docs/framework/winforms/controls/numericupdown-control-overview-windows-forms.md @@ -0,0 +1,39 @@ +--- +title: "NumericUpDown コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "NumericUpDown" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "数値のスピン ボタン コントロール, Windows フォーム" + - "NumericUpDown コントロール [Windows フォーム], NumericUpDown コントロールの概要" + - "スピン ボタン コントロール, Windows フォーム" +ms.assetid: cff3cf30-4d46-4381-87df-37bfe83c71c5 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# NumericUpDown コントロールの概要 (Windows フォーム) + コントロールの外観は、テキスト ボックスと、数値を変更するための矢印で構成されています。 このコントロールでは、固定の数値の選択肢のリストから 1 つの数値を表示および設定します。 ユーザーは、上向きおよび下向きの矢印ボタンをクリックするか、↑キーと↓キーを押すことで、数値を増加または減少できます。また、コントロールのテキスト ボックス部分に数字を直接入力することもできます。 ↑キーをクリックすると最大値を上限に数値が増加し、↓キーをクリックすると最小値を下限に数値が減少します。 + + このコントロールは多用途の機能を備えるため、音楽再生アプリケーションのボリューム コントロールを作成する場合などに便利です。 コントロールは、Windows の多くのコントロール パネル アプリケーションで使用されています。 + +## 主要なプロパティおよびメソッド + コントロールのテキスト ボックスに表示する数値は、16 進数などさまざまな形式を使用できます。 詳細については、「[方法 : Windows フォームの NumericUpDown コントロールの書式を設定する](../../../../docs/framework/winforms/controls/how-to-set-the-format-for-the-windows-forms-numericupdown-control.md)」を参照してください。 コントロールの主なプロパティは、 \(既定値は 100\)、 \(既定値は 0\)、および \(既定値は 1\) です。 プロパティには、コントロールで現在選択している値を設定します。 プロパティには、上向きの矢印または下向きの矢印を 1 回クリックするごとに増加または減少される数値を設定します。 コントロールからフォーカスが移動するときに、直接入力した値が最小数値および最大数値と照合され、妥当性が検査されます。 プロパティを設定すると、ユーザーが連続的に上向きまたは下向きの矢印を押したときに、コントロールの数値が変化する速度を上げることができます。 コントロールの主要なメソッドは、 および です。 + +## 参照 + + [NumericUpDown コントロール](../../../../docs/framework/winforms/controls/numericupdown-control-windows-forms.md) + [方法 : Windows フォームの NumericUpDown コントロールの書式を設定する](../../../../docs/framework/winforms/controls/how-to-set-the-format-for-the-windows-forms-numericupdown-control.md) + [TextBox コントロール](../../../../docs/framework/winforms/controls/textbox-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/numericupdown-control-windows-forms.md b/docs/framework/winforms/controls/numericupdown-control-windows-forms.md new file mode 100644 index 00000000000..c9790a03a02 --- /dev/null +++ b/docs/framework/winforms/controls/numericupdown-control-windows-forms.md @@ -0,0 +1,50 @@ +--- +title: "NumericUpDown コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "NumericUpDown コントロール [Windows フォーム]" + - "スピン ボタン コントロール" + - "スピン ボタン コントロール, アップダウン コントロール" + - "アップダウン コントロール" + - "アップダウン コントロール, スピン ボタン コントロール" + - "Windows フォーム コントロール, NumericUpDown コントロール" +ms.assetid: 32b0c20d-4f37-4aea-873d-faded741d2db +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# NumericUpDown コントロール (Windows フォーム) +Windows フォームの `NumericUpDown` コントロールの外観は、テキスト ボックスと、数値を変更するための 2 つの矢印で構成されています。 このコントロールでは、選択肢のリストから 1 つの数値を表示したり設定したりします。 ユーザーは、上下矢印ボタンをクリックするか、方向キーを押すことで、数値を増加または減少できます。また、数字を直接入力することもできます。 上方向キーをクリックすると最大値を上限に値が増加し、下方向キーをクリックすると最小値を下限に値が減少します。 このコントロールは、ミュージック プレーヤーのボリューム コントロールなどに使用すると便利です。 **NumericUpDown** コントロールは、Windows コントロール パネルのいくつかのアプリケーションで使われています。 + +## このセクションの内容 + [NumericUpDown コントロールの概要](../../../../docs/framework/winforms/controls/numericupdown-control-overview-windows-forms.md) + `NumericUpDown` コントロールの全般的な概念を説明します。このコントロールは、ユーザーが参照して選択できる数値の一覧を表示します。 + + [方法 : Windows フォームの NumericUpDown コントロールを使用して数値を設定および取得する](../../../../docs/framework/winforms/controls/set-and-return-numeric-values-with-wf-numericupdown-control.md) + コントロールの値をテストする方法について説明します。 + + [方法 : Windows フォームの NumericUpDown コントロールの書式を設定する](../../../../docs/framework/winforms/controls/how-to-set-the-format-for-the-windows-forms-numericupdown-control.md) + コントロールに値をどのように表示するかを設定する方法について説明します。 + +## 関連項目 + [NumericUpDown クラス](frlrfSystemWindowsFormsNumericUpDownClassTopic) + クラスとそのメンバーに関する参照情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 + + [DomainUpDown コントロール](../../../../docs/framework/winforms/controls/domainupdown-control-windows-forms.md) + に似た コントロールについて説明します。ただし、このコントロールは数値の代わりに文字列を表示します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/openfiledialog-component-overview-windows-forms.md b/docs/framework/winforms/controls/openfiledialog-component-overview-windows-forms.md new file mode 100644 index 00000000000..664e42179ce --- /dev/null +++ b/docs/framework/winforms/controls/openfiledialog-component-overview-windows-forms.md @@ -0,0 +1,38 @@ +--- +title: "OpenFileDialog コンポーネントの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "OpenFileDialog" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "[ファイルを開く] ダイアログ ボックス, 表示 (Windows フォームで)" + - "OpenFileDialog コンポーネント, OpenFileDialog の概要" +ms.assetid: cd717300-46b6-4f82-8207-b218fa7fa407 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# OpenFileDialog コンポーネントの概要 (Windows フォーム) +Windows フォームの コンポーネントは、定義済みのダイアログ ボックスです。 Windows オペレーティング システムの **\[ファイルを開く\]** ダイアログ ボックスと同じダイアログ ボックスです。 このコンポーネントは、 クラスを継承しています。 + +## このコンポーネントの使用 + このコンポーネントは、独自のダイアログ ボックスを使用せずにファイル選択を行うための簡易ソリューションとして、Windows ベースのアプリケーション内で使用できます。 Windows の標準のダイアログ ボックスを使用して、一般的な基本機能を持つアプリケーションを作成できます。 ただし、 コンポーネントを使用する場合は、独自のファイル オープン ロジックを記述する必要があります。 + + メソッドを使用して、実行時にダイアログを表示します。 プロパティを使用すると、複数のファイルを選択して開くことができます。 また、 プロパティを使用すると、読み取り専用で開くためのチェック ボックスをダイアログ ボックスに表示するかどうかを指定できます。 プロパティは、読み取り専用チェック ボックスがオンかオフかを示します。 プロパティは、現在のファイル名フィルター文字列を設定します。この文字列で、ダイアログ ボックスの "ファイルの種類" で表示される選択肢を設定します。 + + フォームに登録すると、 コンポーネントは Windows フォーム デザイナーの下部のトレイに表示されます。 + +## 参照 + + [OpenFileDialog コンポーネント](../../../../docs/framework/winforms/controls/openfiledialog-component-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/openfiledialog-component-windows-forms.md b/docs/framework/winforms/controls/openfiledialog-component-windows-forms.md new file mode 100644 index 00000000000..d7d014538bd --- /dev/null +++ b/docs/framework/winforms/controls/openfiledialog-component-windows-forms.md @@ -0,0 +1,46 @@ +--- +title: "OpenFileDialog コンポーネント (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "[ファイルを開く] ダイアログ ボックス" + - "OpenFileDialog コンポーネント" +ms.assetid: d2efa832-a272-42ff-aa26-c4ac13ff59ba +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# OpenFileDialog コンポーネント (Windows フォーム) +Windows フォームの コンポーネントは、事前構成済みのダイアログ ボックスです。 これは、Windows オペレーティング システムの \[**ファイルを開く**\] ダイアログ ボックスと同じです。 これは、 クラスを継承しています。 + +## このセクションの内容 + [OpenFileDialog コンポーネントの概要](../../../../docs/framework/winforms/controls/openfiledialog-component-overview-windows-forms.md) + コンポーネントの全般的な概念を説明します。このコンポーネントにより、ユーザーがファイルを開くために使用する事前構成済みダイアログ ボックスを表示できます。 + + [方法 : OpenFileDialog コンポーネントを使用してファイルを開く](../../../../docs/framework/winforms/controls/how-to-open-files-using-the-openfiledialog-component.md) + コンポーネントのインスタンスを使用して実行時にファイルを開く方法について説明します。 + +## 関連項目 + + クラスとそのメンバーに関するリファレンス情報を提供します。 + +## 関連項目 + [ダイアログ ボックス コントロールおよびコンポーネント](../../../../docs/framework/winforms/controls/dialog-box-controls-and-components-windows-forms.md) + ユーザーがアプリケーションまたはシステムと標準的な対話を実行できるようにする一連のコントロールおよびコンポーネントについて説明します。 + + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 + + [Windows フォーム ダイアログ ボックスの重要コード](http://go.microsoft.com/fwlink/?LinkID=102575) + Windows フォーム ダイアログ ボックスのコントロールとコンポーネント、基本的な機能を実行するために必要なコードについて説明します。 \(MSDN オンライン ライブラリの技術記事\) \ No newline at end of file diff --git a/docs/framework/winforms/controls/overriding-the-onpaint-method.md b/docs/framework/winforms/controls/overriding-the-onpaint-method.md new file mode 100644 index 00000000000..89969bd2d4f --- /dev/null +++ b/docs/framework/winforms/controls/overriding-the-onpaint-method.md @@ -0,0 +1,98 @@ +--- +title: "OnPaint メソッドのオーバーライド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "OnPaint メソッド, オーバーライド (Windows フォーム カスタム コントロール内の)" + - "Paint イベント, 処理 (Windows フォーム カスタム コントロール内の)" +ms.assetid: e9ca2723-0107-4540-bb21-4f5ffb4a9906 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# OnPaint メソッドのオーバーライド +[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] で定義されているイベントをオーバーライドするための基本的な手順はすべてのイベントで同一です。次にこの手順を示します。 + +#### 継承したイベントをオーバーライドするには + +1. プロテクト メソッド `On`*EventName* をオーバーライドします。 + +2. オーバーライドされた `On`*EventName* メソッドから基本クラスの `On`*EventName* メソッドを呼び出します。その結果、登録デリゲートがイベントを受信します。 + + すべての Windows フォーム コントロールでは から継承する イベントをオーバーライドする必要があるため、 イベントについて詳しく説明します。 基本の クラスは、派生するコントロールの描画方法については認識せず、 メソッドでは描画ロジックを提供しません。 メソッドは、 イベントを登録イベント レシーバーへディスパッチします。 + + [方法 : シンプルな Windows フォーム コントロールを開発する](../../../../docs/framework/winforms/controls/how-to-develop-a-simple-windows-forms-control.md) のサンプルで作業すると、 メソッドのオーバーライド例を確認できます。 このサンプルの一部であるコード片を次に示します。 + +```vb +Public Class FirstControl + Inherits Control + + Public Sub New() + End Sub + + Protected Overrides Sub OnPaint(e As PaintEventArgs) + ' Call the OnPaint method of the base class. + MyBase.OnPaint(e) + ' Call methods of the System.Drawing.Graphics object. + e.Graphics.DrawString(Text, Font, New SolidBrush(ForeColor), RectangleF.op_Implicit(ClientRectangle)) + End Sub +End Class +``` + +```csharp +public class FirstControl : Control{ + public FirstControl() {} + protected override void OnPaint(PaintEventArgs e) { + // Call the OnPaint method of the base class. + base.OnPaint(e); + // Call methods of the System.Drawing.Graphics object. + e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), ClientRectangle); + } +} +``` + + クラスには、 イベントのデータが格納されます。 次のコードに示すように、**PaintEventArgs** クラスには 2 つのプロパティがあります。 + +```vb +Public Class PaintEventArgs + Inherits EventArgs + ... + Public ReadOnly Property ClipRectangle() As System.Drawing.Rectangle + ... + End Property + + Public ReadOnly Property Graphics() As System.Drawing.Graphics + ... + End Property + ... +End Class +``` + +```csharp +public class PaintEventArgs : EventArgs { +... + public System.Drawing.Rectangle ClipRectangle {} + public System.Drawing.Graphics Graphics {} +... +} +``` + + は、描画される四角形で、 プロパティは、 を参照します。 名前空間のクラスは、新しい Windows グラフィック ライブラリである [!INCLUDE[ndptecgdiplus](../../../../includes/ndptecgdiplus-md.md)] の機能へのアクセスを提供するマネージ クラスです。 オブジェクトには、ポイント、文字列、線、曲線、楕円などのさまざまな形状を描画するメソッドがあります。 + + ビジュアル表示を変更する必要がある場合は、コントロールは常に メソッドを呼び出します。 呼び出された `OnPaint` メソッドは イベントを発生させます。 + +## 参照 + [イベント](../../../../docs/standard/events/index.md) + [Windows フォーム コントロールのレンダリング](../../../../docs/framework/winforms/controls/rendering-a-windows-forms-control.md) + [イベントの定義](../../../../docs/framework/winforms/controls/defining-an-event-in-windows-forms-controls.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/overview-of-using-controls-in-windows-forms.md b/docs/framework/winforms/controls/overview-of-using-controls-in-windows-forms.md new file mode 100644 index 00000000000..3feea68acda --- /dev/null +++ b/docs/framework/winforms/controls/overview-of-using-controls-in-windows-forms.md @@ -0,0 +1,234 @@ +--- +title: "Windows フォームでのコントロールの使用方法の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム]" + - "カスタム コントロール [Windows フォーム]" + - "Windows フォーム, コントロール" +ms.assetid: fddbe951-4485-459d-a5fd-665ea346dbc1 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Windows フォームでのコントロールの使用方法の概要 +このトピックでは、Windows フォーム アプリケーションの必須要素についての説明と Windows フォーム アプリケーションでコントロールを使用してイベントを処理する例を示します。 + +## シンプルな Windows フォーム アプリケーション + Windows フォーム アプリケーションには、次の要素が必ず含まれています。 + +- から派生した 1 つ以上のクラス。 + +- `static` \(Visual Studio では `shared`\) の メソッドを呼び出し、 インスタンスをそのメソッドに渡す、`Main` メソッド。 オペレーティング システムからアプリケーションへのメッセージを処理する メソッド。 + + Windows フォーム アプリケーションの必須要素を記述したコード例を次に示します。 + +```vb +Option Explicit +Option Strict + +Imports System +Imports System.Windows.Forms + +Public Class MyForm + Inherits Form + + Public Sub New() + Me.Text = "Hello World" + End Sub 'New + + _ + Public Shared Sub Main() + Dim aform As New MyForm() + ' The Application.Run method processes messages from the operating system + ' to your application. If you comment out the next line of code, + ' your application will compile and execute, but because it is not in the + ' message loop, it will exit after an instance of the form is created. + Application.Run(aform) + End Sub +End Class +``` + +```csharp +using System; +using System.Windows.Forms; + +public class MyForm : Form { + + public MyForm() { + this.Text = "Hello World"; + } + [STAThread] + public static void Main(string[] args) { + MyForm aform = new MyForm(); +// The Application.Run method processes messages from the operating system +// to your application. If you comment out the next line of code, +// your application will compile and execute, but because it is not in the // message loop, it will exit after an instance of the form is created. + Application.Run(aform); + } +} +``` + +## Windows フォーム アプリケーションでのコントロールの使用 + シンプルな Windows フォーム アプリケーションでコントロールを使用し、イベントを処理する過程を示すコード例を次に示します。 このコード例では、フォームに 3 つのボタンがあります。それぞれのボタンをクリックすると、背景色が変更されます。 + +```vb +Option Explicit +Option Strict + +Imports System +Imports System.ComponentModel +Imports System.Windows.Forms +Imports System.Resources +Imports System.Drawing + +Public Class MyForm + Inherits Form + Private red As Button + Private blue As Button + Private green As Button + + Public Sub New() + InitializeComponent() + End Sub + + Protected Overloads Overrides Sub Dispose(disposing as Boolean) + MyBase.Dispose(disposing) + End Sub + + ' InitializeComponent is a helper method for the constructor. + ' It is included for consistency with code that is + ' auto-generated by the Windows Forms designer in Visual Studio. + Private Sub InitializeComponent() + + ' Creates three buttons, sets their properties, and attaches + ' an event handler to each button. + red = New Button() + red.Text = "Red" + red.Location = New Point(100, 50) + red.Size = New Size(50, 50) + AddHandler red.Click, AddressOf button_Click + Controls.Add(red) + + blue = New Button() + blue.Text = "Blue" + blue.Location = New Point(100, 100) + blue.Size = New Size(50, 50) + AddHandler blue.Click, AddressOf button_Click + Controls.Add(blue) + + green = New Button() + green.Text = "Green" + green.Location = New Point(100, 150) + green.Size = New Size(50, 50) + AddHandler green.Click, AddressOf button_Click + Controls.Add(green) + End Sub + + ' Event handler. + Private Sub button_Click(sender As Object, e As EventArgs) + If sender Is red Then + Me.BackColor = Color.Red + Else + If sender Is blue Then + Me.BackColor = Color.Blue + Else + Me.BackColor = Color.Green + End If + End If + End Sub + + ' The STAThreadAttribute informs the common language runtime that + ' Windows Forms uses the single-threaded apartment model. + _ + Public Shared Sub Main() + Application.Run(New MyForm()) + End Sub +End Class +``` + +```csharp +using System; +using System.ComponentModel; +using System.Windows.Forms; +using System.Resources; +using System.Drawing; + +public class MyForm : Form { + private Button red; + private Button blue; + private Button green; + + public MyForm() : base() { + InitializeComponent(); + } + + protected override void Dispose(bool disposing) { + base.Dispose(disposing); + } + +// InitializeComponent is a helper method for the constructor. +// It is included for consistency with code that is +// auto-generated by the Windows Forms designer in Visual Studio. + private void InitializeComponent() { + +// A delegate for the click event of a button. The argument to +// the constructor contains a reference to the method that performs the +// event handling logic. + EventHandler handler = new EventHandler(button_Click); + +// Creates three buttons, sets their properties, and attaches +// an event handler to each button. + + red = new Button(); + red.Text = "Red"; + red.Location = new Point(100, 50); + red.Size = new Size(50, 50); + red.Click +=handler; + Controls.Add(red); + + blue = new Button(); + blue.Text = "Blue"; + blue.Location = new Point(100, 100); + blue.Size = new Size(50, 50); + blue.Click += handler; + Controls.Add(blue); + + green = new Button(); + green.Text = "Green"; + green.Location = new Point(100, 150); + green.Size = new Size(50, 50); + green.Click += handler; + Controls.Add(green); + } + + // Event handler. + private void button_Click(object sender, EventArgs e) { + if (sender == red) this.BackColor = Color.Red ; + else if (sender == blue) this.BackColor = Color.Blue; + else this.BackColor = Color.Green; + } + // The STAThreadAttribute informs the common language runtime that + // Windows Forms uses the single-threaded apartment model. + [STAThread] + public static void Main(string[] args) { + Application.Run(new MyForm()); + } + +} +``` + +## 参照 + [.NET Framework を使用したカスタム Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-custom-windows-forms-controls.md) + [Windows フォーム コントロール開発の基本概念](../../../../docs/framework/winforms/controls/windows-forms-control-development-basics.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/pagesetupdialog-component-overview-windows-forms.md b/docs/framework/winforms/controls/pagesetupdialog-component-overview-windows-forms.md new file mode 100644 index 00000000000..40167ffbd34 --- /dev/null +++ b/docs/framework/winforms/controls/pagesetupdialog-component-overview-windows-forms.md @@ -0,0 +1,36 @@ +--- +title: "PageSetupDialog コンポーネントの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "PageSetupDialog" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "[ページ設定] ダイアログ ボックス, 表示" + - "PageSetupDialog コンポーネント" +ms.assetid: 791caacb-a5ca-4fca-bad9-1a5721ad697c +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# PageSetupDialog コンポーネントの概要 (Windows フォーム) +Windows フォームの コンポーネントは、Windows ベースのアプリケーションで印刷時のページ設定に使用する定義済みダイアログ ボックスです。 このコントロールは、独自のダイアログ ボックスを使用せずにページ設定を行うための簡易ソリューションとして、Windows ベースのアプリケーションの中で使用します。 罫線と余白の調整、ヘッダーとフッター、および印刷の縦向きまたは横向きを設定できます。 Windows の標準のダイアログ ボックスを使用して、一般的な基本機能を持つアプリケーションを作成できます。 + +## 主要なプロパティおよびメソッド + メソッドを使用して、実行時にダイアログを表示します。 このコンポーネントには、ページ単位で適用されるプロパティ \( クラス\) とすべてのドキュメントに適用されるプロパティ \( クラス\) があります。 また、 コンポーネントを使用して、 クラスに格納される特定のプリンター設定を決定できます。 + + フォームに登録すると、 コンポーネントは Windows フォーム デザイナーの下部のトレイに表示されます。 + +## 参照 + + [PageSetupDialog コンポーネント](../../../../docs/framework/winforms/controls/pagesetupdialog-component-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/pagesetupdialog-component-windows-forms.md b/docs/framework/winforms/controls/pagesetupdialog-component-windows-forms.md new file mode 100644 index 00000000000..6c3ff8a8bc3 --- /dev/null +++ b/docs/framework/winforms/controls/pagesetupdialog-component-windows-forms.md @@ -0,0 +1,60 @@ +--- +title: "PageSetupDialog コンポーネント (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "フッター, ページ設定オプション" + - "ヘッダー, 印刷" + - "横向き" + - "マージン, ページ設定オプション" + - "ページ フッター" + - "ページ ヘッダー" + - "ページのプロパティ" + - "ページ設定" + - "[ページ設定] ダイアログ ボックス" + - "PageSetupDialog コンポーネント" + - "用紙の向き" + - "縦向き" + - "印刷オプション, PageSetupDialog コンポーネント" + - "印刷 [Windows フォーム], 表示 (設定ダイアログ ボックスを)" + - "印刷 [Windows フォーム], ヘッダーとフッター" + - "印刷 [Windows フォーム], ページ設定" +ms.assetid: 1c7ccb02-ac62-4fc8-8e4f-c67b01a86802 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# PageSetupDialog コンポーネント (Windows フォーム) +Windows フォームの コンポーネントは、Windows ベースのアプリケーションで印刷時のページ設定に使用する定義済みダイアログ ボックスです。 このコントロールは、独自のダイアログ ボックスを使用せずにページ設定を行うための簡易ソリューションとして、Windows ベースのアプリケーションの中で使用します。 罫線と余白、ヘッダーとフッター、および印刷の向きを 設定できます。 Windows の標準のダイアログ ボックスを使用して、一般的な基本機能を持つアプリケーションを作成できます。 + +## このセクションの内容 + [PageSetupDialog コンポーネントの概要](../../../../docs/framework/winforms/controls/pagesetupdialog-component-overview-windows-forms.md) + コンポーネントの全般的な概念を説明します。このコンポーネントにより、ユーザーがページ設定を操作するために使用する定義済みダイアログ ボックスを表示できます。 + + [方法 : PageSetupDialog コンポーネントを使用してページのプロパティを決定する](../../../../docs/framework/winforms/controls/how-to-determine-page-properties-using-the-pagesetupdialog-component.md) + 実行時に コンポーネントのインスタンスを使用してページのプロパティを設定する方法について説明します。 + +## 関連項目 + + クラスとそのメンバーに関する参照情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 + + [ダイアログ ボックス コントロールおよびコンポーネント](../../../../docs/framework/winforms/controls/dialog-box-controls-and-components-windows-forms.md) + アプリケーションまたはシステムとの標準的なやり取りを可能にする一連のコントロールおよびコンポーネントについて説明します。 + + [Windows フォーム ダイアログ ボックスの重要コード](http://go.microsoft.com/fwlink/?LinkID=102575) + Windows フォームのダイアログ ボックス コントロールとコンポーネント、および、これらの基本機能を実行するために必要なコードについて説明します。 \(MSDN オンライン ライブラリの技術文書\) \ No newline at end of file diff --git a/docs/framework/winforms/controls/panel-control-overview-windows-forms.md b/docs/framework/winforms/controls/panel-control-overview-windows-forms.md new file mode 100644 index 00000000000..cf0aefd517e --- /dev/null +++ b/docs/framework/winforms/controls/panel-control-overview-windows-forms.md @@ -0,0 +1,39 @@ +--- +title: "Panel コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Panel" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "グループ化 (コントロールを), Panel コントロール" + - "Panel コントロール [Windows フォーム], Panel コントロールの概要" +ms.assetid: b6b83636-2c39-4dad-89d6-f0fa41049a74 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# Panel コントロールの概要 (Windows フォーム) +Windows フォームの コントロールを使用すると、他のコントロールと区別できるようにグループ化できます。 通常は、機能別にフォームを細分化するためにパネルを使用します。 たとえば、どの宅配業者を使用するかなどの発送情報を指定する注文フォームを作成できます。 すべてのオプションをパネルにグループ化することにより、論理的な関連性を視覚的に表現できます。 デザイン時に、すべてのコントロールを簡単に移動できます。 コントロールを移動すると、そこに含まれるすべてのコントロールも一緒に移動します。 パネルにグループ化されたコントロールは プロパティを使ってアクセスできます。 このプロパティは インスタンスのコレクションを返すため、通常は、このように取得したコントロールを特定の型にキャストする必要があります。 + +## Panel と GroupBox + コントロールは コントロールに似ていますが、スクロール バーを表示できるのは コントロールだけであり、キャプションを表示できるのは コントロールだけです。 + +## 主要なプロパティ + スクロール バーを表示するには、 プロパティを真 \(`true`\) に設定します。 、および の各プロパティを設定して、パネルの表示形式をカスタマイズすることもできます。 プロパティおよび プロパティの詳細については、「[方法 : パネルの背景を設定する](../../../../docs/framework/winforms/controls/how-to-set-the-background-of-a-windows-forms-panel.md)」を参照してください。 プロパティを使用すると、パネルのアウトラインを非可視の境界線 \(\)、単線 \(\)、または影付き線 \(\) のいずれかに設定できます。 + +## 参照 + + [GroupBox コントロール](../../../../docs/framework/winforms/controls/groupbox-control-windows-forms.md) + [方法 : デザイナーを使用して Windows フォーム Panel コントロールでコントロールをグループ化する](../../../../docs/framework/winforms/controls/group-controls-with-wf-panel-control-using-the-designer.md) + [方法 : デザイナーを使って Windows フォーム パネルの背景を設定する](../../../../docs/framework/winforms/controls/how-to-set-the-background-of-a-windows-forms-panel-using-the-designer.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/panel-control-windows-forms.md b/docs/framework/winforms/controls/panel-control-windows-forms.md new file mode 100644 index 00000000000..95c3b0038c1 --- /dev/null +++ b/docs/framework/winforms/controls/panel-control-windows-forms.md @@ -0,0 +1,50 @@ +--- +title: "Panel コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム], グループ化" + - "グループ化 (コントロールを)" + - "Panel コントロール [Windows フォーム]" +ms.assetid: 37c69803-5084-4347-b035-54cfbabdc310 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# Panel コントロール (Windows フォーム) +Windows フォームの `Panel` コントロールを使用すると、他のコントロールと区別できるようにグループ化できます。 通常は、機能別にフォームを細分化するためにパネルを使用します。 `Panel` コントロールは コントロールに似ていますが、スクロール バーを表示できるのは `Panel` コントロールだけであり、キャプションを表示できるのは コントロールだけです。 + +## このセクションの内容 + [Panel コントロールの概要](../../../../docs/framework/winforms/controls/panel-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : デザイナーを使用して Windows フォーム Panel コントロールでコントロールをグループ化する](../../../../docs/framework/winforms/controls/group-controls-with-wf-panel-control-using-the-designer.md) + デザイナーを使用してパネルでコントロールをグループ化する方法について説明します。 + + [方法 : デザイナーを使って Windows フォーム パネルの背景を設定する](../../../../docs/framework/winforms/controls/how-to-set-the-background-of-a-windows-forms-panel-using-the-designer.md) + デザイナーを使用してパネルの背景色および背景イメージを表示する方法について説明します。 + + [方法 : パネルの背景を設定する](../../../../docs/framework/winforms/controls/how-to-set-the-background-of-a-windows-forms-panel.md) + パネルの背景色および背景イメージを表示する方法について説明します。 + +## 関連項目 + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 + + [方法 : コントロールのコレクションに対して実行時にコントロールを追加または削除する](../../../../docs/framework/winforms/controls/how-to-add-to-or-remove-from-a-collection-of-controls-at-run-time.md) + フォーム上の任意のコンテナー コントロールにコントロールを追加したり、コンテナーからコントロールを削除したりする方法について説明します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/perform-a-custom-action-based-on-changes-in-a-cell-of-a-datagrid.md b/docs/framework/winforms/controls/perform-a-custom-action-based-on-changes-in-a-cell-of-a-datagrid.md new file mode 100644 index 00000000000..95cb065fc99 --- /dev/null +++ b/docs/framework/winforms/controls/perform-a-custom-action-based-on-changes-in-a-cell-of-a-datagrid.md @@ -0,0 +1,54 @@ +--- +title: "方法 : Windows フォーム DataGridView コントロールのセルの変更に基づいてカスタム動作を実行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "セル, 検出 (変更を)" + - "データ グリッド, 検出 (セルの変更を)" + - "DataGridView コントロール [Windows フォーム], 検出 (セルの変更を)" +ms.assetid: 7fa44d01-97f4-4ccb-a149-bc72628d2c36 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法 : Windows フォーム DataGridView コントロールのセルの変更に基づいてカスタム動作を実行する + コントロールには多数のイベントがあり、これらを使用して セルの状態の変更を検出できます。 最もよく使用されるイベントは イベントと イベントの 2 つです。 + +### DataGridView セルの値の変更を検出するには + +- イベントのハンドラーを記述します。 + + [!code-csharp[System.Windows.Forms.DataGridViewMisc#130](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/CS/datagridviewmisc.cs#130)] + [!code-vb[System.Windows.Forms.DataGridViewMisc#130](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/VB/datagridviewmisc.vb#130)] + +### DataGridView セルの状態の変更を検出するには + +- イベントのハンドラーを記述します。 + + [!code-csharp[System.Windows.Forms.DataGridViewMisc#135](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/CS/datagridviewmisc.cs#135)] + [!code-vb[System.Windows.Forms.DataGridViewMisc#135](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/VB/datagridviewmisc.vb#135)] + +## コードのコンパイル + この例には、次の項目が必要です。 + +- `dataGridView1` という名前の コントロール。 C\# の場合は、イベント ハンドラーを対応するイベントに接続しておく必要があります。 + +- アセンブリおよび アセンブリへの参照。 + +## 参照 + + + + [Windows フォーム DataGridView コントロールのセル、行、および列を使用したプログラミング](../../../../docs/framework/winforms/controls/programming-with-cells-rows-and-columns-in-the-datagrid.md) + [チュートリアル : Windows フォーム DataGridView コントロールのデータの妥当性検査](../../../../docs/framework/winforms/controls/walkthrough-validating-data-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/performance-tuning-in-the-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/performance-tuning-in-the-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..833cd0a5914 --- /dev/null +++ b/docs/framework/winforms/controls/performance-tuning-in-the-windows-forms-datagridview-control.md @@ -0,0 +1,50 @@ +--- +title: "Windows フォーム DataGridView コントロールでのパフォーマンス チューニング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "DataGridView コントロール [Windows フォーム], パフォーマンス チューニング" + - "パフォーマンス チューニング, データ グリッド" + - "パフォーマンス, DataGridView コントロール" +ms.assetid: 6ccbff28-a0ff-41e4-b601-61b31b61851d +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# Windows フォーム DataGridView コントロールでのパフォーマンス チューニング +`DataGridView` コントロールで大量のデータを扱うときは、慎重に使用しないと、オーバーヘッドのために大量のメモリが消費されることがあります。 クライアントのメモリが限られている場合は、メモリ消費の多い機能を使わないようにすることで、このオーバーヘッドをある程度回避できます。 また、仮想モードを使用して一部または全部のデータ保守タスクとデータ取得タスクを自力で管理すると、メモリ使用状況をシナリオに合わせてカスタマイズできます。 + +## このセクションの内容 + [Windows フォーム DataGridView コントロールを拡張するための推奨される手順](../../../../docs/framework/winforms/controls/best-practices-for-scaling-the-windows-forms-datagridview-control.md) + 大量のデータを扱うときに、無用なメモリ消費とパフォーマンス低下を避けるような方法で `DataGridView` コントロールを使用するための詳細を説明します。 + + [Windows フォーム DataGridView コントロールでの仮想モード](../../../../docs/framework/winforms/controls/virtual-mode-in-the-windows-forms-datagridview-control.md) + 仮想モードを使用して標準のデータ バインディング機構を補完する \(または置き換える\) 方法について説明します。 + + [チュートリアル : Windows フォーム DataGridView コントロールでの仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-wf-datagridview-control.md) + いくつかの仮想モード イベントのハンドラーを実装する方法について説明します。 また、ユーザー編集に対する行レベルのロールバックとコミットを実装する方法の具体例を示します。 + + [Windows フォーム DataGridView コントロールでの Just\-In\-Time データ読み込みによる仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-jit-data-loading-in-the-datagrid.md) + データを要求時に読み込む方法について説明します。この方法は、クライアント メモリに格納できないくらい多くのデータを表示しなければならないときに役立ちます。 + +## 関連項目 + + コントロールの参照ドキュメントを提供します。 + + + プロパティの参照ドキュメントを提供します。 + +## 参照 + [DataGridView コントロール](../../../../docs/framework/winforms/controls/datagridview-control-windows-forms.md) + [Windows フォーム DataGridView コントロールでのデータ表示モード](../../../../docs/framework/winforms/controls/data-display-modes-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/performing-common-tasks-using-smart-tags-on-wf-controls.md b/docs/framework/winforms/controls/performing-common-tasks-using-smart-tags-on-wf-controls.md new file mode 100644 index 00000000000..9f51df085f7 --- /dev/null +++ b/docs/framework/winforms/controls/performing-common-tasks-using-smart-tags-on-wf-controls.md @@ -0,0 +1,82 @@ +--- +title: "チュートリアル : Windows フォーム コントロールのスマート タグを使用した共通タスクの実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "デザイナー アクション" + - "DesignerAction オブジェクト モデル" + - "スマート タグ" +ms.assetid: cac337e6-00f6-4584-80f4-75728f5ea113 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# チュートリアル : Windows フォーム コントロールのスマート タグを使用した共通タスクの実行 +Windows フォーム アプリケーションのフォームやコントロールを構成するときは、繰り返し実行するタスクが数多くあります。 そのような共通タスクには、次のようなものがあります。 + +- へのタブの追加または削除 + +- 親コントロールへのコントロールのドッキング + +- コントロールの方向の変更 + + 開発をスピードアップするために、多くのコントロールにはスマート タグが用意されています。スマート タグは、上記のような共通タスクをデザイン時に単一の操作で実行できるようにする状況依存のメニューです。 これらのタスクは、*スマートタグ動詞*と呼ばれています。 + + スマート タグは、デザイナーでコントロール インスタンスが有効な間、コントロール インスタンスに表示されいつでも使用できます。 + + このチュートリアルでは、以下のタスクを行います。 + +- Windows フォーム プロジェクトの作成 + +- スマート タグの使用 + +- スマート タグの有効化と無効化 + + ここでは、これらの重要なレイアウト機能が果たす役割について理解します。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 最初にプロジェクトを作成し、フォームを設定します。 + +#### プロジェクトを作成するには + +1. "SmartTagsExample" という名前の Windows ベース アプリケーション プロジェクトを作成します。 詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」を参照してください。 + +2. **Windows フォーム デザイナー**でフォームを選択します。 + +## スマート タグの使用 + スマート タグを提供するコントロールでは、デザイン時にいつでもスマート タグを使用できます。 + +#### スマート タグを使用するには + +1. **ツールボックス**の コントロールをフォームにドラッグします。 スマート タグ グリフ \(![スマート タグ グリフ](../../../../docs/framework/winforms/controls/media/vs-winformsmttagglyph.png "VS\_WinFormSmtTagGlyph")\) が の横に表示されます。 + +2. スマート タグ グリフをクリックします。 グリフの横に表示されるショートカット メニューの **\[タブの追加\]** をクリックします。 新しいタブ ページが に追加されることを確認してください。 + +3. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +4. スマート タグ グリフをクリックします。 グリフの横に表示されるショートカット メニューの **\[列の追加\]** をクリックします。 新しい列が コントロールに追加されることを確認してください。 + +5. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +6. スマート タグ グリフをクリックします。 グリフの横に表示されるショートカット メニューの **\[上下分割の方向\]** をクリックします。 コントロールの分割バーが横向きになったことを確認してください。 + +## 参照 + + + + + [Walkthrough: Adding Smart Tags to a Windows Forms Component](../Topic/Walkthrough:%20Adding%20Smart%20Tags%20to%20a%20Windows%20Forms%20Component.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/picturebox-control-overview-windows-forms.md b/docs/framework/winforms/controls/picturebox-control-overview-windows-forms.md new file mode 100644 index 00000000000..d2df8e3f9ff --- /dev/null +++ b/docs/framework/winforms/controls/picturebox-control-overview-windows-forms.md @@ -0,0 +1,38 @@ +--- +title: "PictureBox コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "PictureBox" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "イメージ コントロール, イメージ コントロールの概要" + - "画像コントロール, 画像コントロールの概要" + - "PictureBox コントロール [Windows フォーム], PictureBox コントロールの概要" +ms.assetid: e5befee7-dc29-4888-a7c4-3b177e394112 +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# PictureBox コントロールの概要 (Windows フォーム) +Windows フォームの コントロールを使用すると、ビットマップ、GIF、JPEG、メタファイル、またはアイコンの形式でグラフィックスを表示できます。 + +## 主要なプロパティおよびメソッド + 表示されるピクチャは、実行時またはデザイン時に設定できる プロパティによって決まります。 または、 プロパティを設定してから、 メソッドを使用してイメージを同期で読み込むか、または メソッドを使用してイメージを非同期で読み込むという方法でイメージを指定することもできます。 プロパティでは、イメージとコントロールを相互に調整する方法を制御します。 詳細については、「[方法 : 実行時にピクチャのサイズまたは配置を変更する](../../../../docs/framework/winforms/controls/how-to-modify-the-size-or-placement-of-a-picture-at-run-time-windows-forms.md)」を参照してください。 + +## 参照 + + [方法 : デザイナーを使用してピクチャを読み込む](../../../../docs/framework/winforms/controls/how-to-load-a-picture-using-the-designer-windows-forms.md) + [方法 : 実行時にピクチャのサイズまたは配置を変更する](../../../../docs/framework/winforms/controls/how-to-modify-the-size-or-placement-of-a-picture-at-run-time-windows-forms.md) + [方法 : 実行時にピクチャを設定する](../../../../docs/framework/winforms/controls/how-to-set-pictures-at-run-time-windows-forms.md) + [PictureBox コントロール](../../../../docs/framework/winforms/controls/picturebox-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/picturebox-control-windows-forms.md b/docs/framework/winforms/controls/picturebox-control-windows-forms.md new file mode 100644 index 00000000000..0725037cf82 --- /dev/null +++ b/docs/framework/winforms/controls/picturebox-control-windows-forms.md @@ -0,0 +1,47 @@ +--- +title: "PictureBox コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "イメージ コントロール [Windows フォーム]" + - "イメージ [Windows フォーム], 追加 (PictureBox コントロールに)" + - "PictureBox コントロール [Windows フォーム]" +ms.assetid: f900eb93-25d5-40e5-b5df-b3cea0e831b6 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# PictureBox コントロール (Windows フォーム) +Windows フォームの `PictureBox` コントロールを使用すると、ビットマップ、GIF、JPEG、メタファイル、またはアイコンの形式でグラフィックスを表示できます。 + +## このセクションの内容 + [PictureBox コントロールの概要](../../../../docs/framework/winforms/controls/picturebox-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : 実行時にピクチャのサイズまたは配置を変更する](../../../../docs/framework/winforms/controls/how-to-modify-the-size-or-placement-of-a-picture-at-run-time-windows-forms.md) + プロパティの実行内容と設定方法について説明します。 + + [方法 : 実行時にピクチャを設定する](../../../../docs/framework/winforms/controls/how-to-set-pictures-at-run-time-windows-forms.md) + 実行時にピクチャを表示およびクリアする方法について説明します。 + + [方法 : デザイナーを使用してピクチャを読み込む](../../../../docs/framework/winforms/controls/how-to-load-a-picture-using-the-designer-windows-forms.md) + デザイン時にピクチャを読み込んでフォームに表示する方法について説明します。 + +## 関連項目 + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/prevent-row-addition-and-deletion-datagridview.md b/docs/framework/winforms/controls/prevent-row-addition-and-deletion-datagridview.md new file mode 100644 index 00000000000..073797a004e --- /dev/null +++ b/docs/framework/winforms/controls/prevent-row-addition-and-deletion-datagridview.md @@ -0,0 +1,47 @@ +--- +title: "方法 : Windows フォーム DataGridView コントロールで行が追加および削除されないようにする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ エントリ, 無効化 (グリッド内の)" + - "データ グリッド, 無効化 (データ入力を)" + - "DataGridView コントロール [Windows フォーム], 無効化 (データ入力を)" +ms.assetid: ef9539ce-539b-404e-84b6-ac282b64b88c +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : Windows フォーム DataGridView コントロールで行が追加および削除されないようにする +場合によっては、ユーザーが コントロールに新しいデータ行を入力したり、既存の行を削除したりできないようにする必要があります。 プロパティは新しいレコードのための行がコントロールの一番下に存在しているかどうかを示し、 プロパティは行を削除できるかどうかを示します。 次のコード例は、これらのプロパティを使用し、さらに プロパティも設定して、コントロール全体を読み取り専用にします。 + + Visual Studio では、このタスクに対するサポートが用意されています。 「[方法 : デザイナーを使用して Windows フォーム DataGridView コントロールで行が追加および削除されないようにする](http://msdn.microsoft.com/library/k5c88sw3\(v=vs.110\))」も参照してください。 + +## 使用例 + [!code-csharp[System.Windows.Forms.DataGridViewMisc#090](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/CS/datagridviewmisc.cs#090)] + [!code-vb[System.Windows.Forms.DataGridViewMisc#090](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/VB/datagridviewmisc.vb#090)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- `dataGridView1` という名前の コントロール。 + +- アセンブリおよび アセンブリへの参照。 + +## 参照 + + + + + + [Windows フォーム DataGridView コントロールでの列、行、およびセルの基本機能](../../../../docs/framework/winforms/controls/basic-column-row-and-cell-features-wf-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/prevent-row-addition-and-deletion-in-the-datagrid-using-the-designer.md b/docs/framework/winforms/controls/prevent-row-addition-and-deletion-in-the-datagrid-using-the-designer.md new file mode 100644 index 00000000000..499c314edd9 --- /dev/null +++ b/docs/framework/winforms/controls/prevent-row-addition-and-deletion-in-the-datagrid-using-the-designer.md @@ -0,0 +1,42 @@ +--- +title: "方法 : デザイナーを使用して Windows フォーム DataGridView コントロールで行が追加および削除されないようにする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "DataGridView コントロール [Windows フォーム], 防止 (行の追加または削除を)" +ms.assetid: a17722bd-9400-41e6-8dcc-c9c151f0a749 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 方法 : デザイナーを使用して Windows フォーム DataGridView コントロールで行が追加および削除されないようにする +場合によっては、ユーザーが コントロールに新しいデータ行を入力したり、既存の行を削除したりしないようにする必要があります。 新しい行は、コントロールの下の新しいレコード用の特別な行に入力されます。 行の追加を無効にすると、新しいレコード用の行は表示されません。 行の削除とセルの編集を無効にすると、コントロールを完全に読み取り専用にできます。 + + 次の手順では、 コントロールを含むフォームを持つ **Windows アプリケーション** プロジェクトが必要です。 このプロジェクトの設定の詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」および「[方法 : Windows フォームにコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-controls-to-windows-forms.md)」を参照してください。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +### 行が追加および削除されないようにするには + +- コントロールの右上隅にあるスマート タグ グリフ \(![スマート タグ グリフ](../../../../docs/framework/winforms/controls/media/vs-winformsmttagglyph.png "VS\_WinFormSmtTagGlyph")\) をクリックして、**\[追加を有効にする\]** チェック ボックスおよび **\[削除を有効にする\]** チェック ボックスをオフにします。 + + > [!NOTE] + > コントロールを完全に読み取り専用にするには、**\[編集を有効にする\]** チェック ボックスもオフにします。 + +## 参照 + + + [How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa) + [方法 : Windows フォームにコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-controls-to-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/printdialog-component-overview-windows-forms.md b/docs/framework/winforms/controls/printdialog-component-overview-windows-forms.md new file mode 100644 index 00000000000..7d53a42d395 --- /dev/null +++ b/docs/framework/winforms/controls/printdialog-component-overview-windows-forms.md @@ -0,0 +1,36 @@ +--- +title: "PrintDialog コンポーネントの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "PrintDialog" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "[印刷] ダイアログ ボックス, 表示" + - "PrintDialog コンポーネント [Windows フォーム], PrintDialog コンポーネントの概要" +ms.assetid: 8327b8ac-1017-4b5e-a88b-fea9dd56999c +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# PrintDialog コンポーネントの概要 (Windows フォーム) +Windows フォームの [PrintDialog](../../../../docs/framework/winforms/controls/printdialog-component-windows-forms.md) コンポーネントは、Windows ベースのアプリケーションで出力先プリンターや印刷範囲などの印刷設定に使用する、定義済みダイアログ ボックスです。 このダイアログ ボックスは、独自のダイアログ ボックスを使用せずにプリンターなどの印刷設定を行うための簡易ソリューションとして使用します。 ドキュメント全体、選択したページ範囲、選択した部分など、さまざまな印刷範囲を指定できます。 Windows の標準のダイアログ ボックスを使用して、一般的な基本機能を持つアプリケーションを作成できます。 コンポーネントは、 クラスを継承します。 + +## コンポーネントの操作 + 実行時にダイアログ ボックスを表示するには、 メソッドを使用します。 このコンポーネントには、印刷ジョブ単位で適用されるプロパティ \( クラス\) とプリンター単位で適用されるプロパティ \( クラス\) があります。 このいずれかを複数のプリンターで共有できます。 + + フォームに登録すると、 コンポーネントは Windows フォーム デザイナーの下部のトレイに表示されます。 + +## 参照 + + [PrintDialog コンポーネント](../../../../docs/framework/winforms/controls/printdialog-component-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/printdialog-component-windows-forms.md b/docs/framework/winforms/controls/printdialog-component-windows-forms.md new file mode 100644 index 00000000000..ae6ef5c8c99 --- /dev/null +++ b/docs/framework/winforms/controls/printdialog-component-windows-forms.md @@ -0,0 +1,43 @@ +--- +title: "PrintDialog コンポーネント (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "印刷ダイアログ ボックス (デザイナーを使用)" + - "印刷オプション, PrintDialog コンポーネント (デザイナーを使用)" + - "PrintDialog コンポーネント [Windows フォーム]" + - "印刷 [Windows フォーム], 印刷オプション" + - "印刷 [Windows フォーム], PrintDialog コンポーネント (デザイナーを使用)" +ms.assetid: 09b54db1-d7c7-42fa-b98a-840e6b80a9ad +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# PrintDialog コンポーネント (Windows フォーム) +Windows フォーム `PrintDialog` コンポーネントは、構成済みのダイアログ ボックスであり、Windows ベースのアプリケーションのプリンターの選択、印刷するページの選択、およびその他の印刷関連の設定の確認に使用します。 独自のダイアログ ボックスを構成する代わりに、プリンターと印刷関連の設定の選択のための簡単なソリューションとして使用します。 ユーザーが自分のドキュメントのさまざまな部分 \(すべての印刷、指定したページ範囲の印刷、または、選択部分の印刷\) を印刷できるようにすることが可能です。 Windows の標準のダイアログ ボックスを使用して、ユーザーがすぐに慣れる基本的な機能を持つアプリケーションを作成します。 + +## このセクションの内容 + [PrintDialog コンポーネントの概要](../../../../docs/framework/winforms/controls/printdialog-component-overview-windows-forms.md) + ユーザーがプリンターの選択、印刷するページの選択、および印刷関連の設定を決定するために使用できる構成済みのダイアログ ボックスを表示できる、`PrintDialog` コンポーネントの全般的な概要を紹介します。 + + [方法 : PrintDialog コンポーネントを表示する](../../../../docs/framework/winforms/controls/how-to-display-the-printdialog-component.md) + ダイアログを表示する方法とプロパティが保存される場所について説明します。 + +## 関連項目 + + クラスとそのメンバーに関するリファレンス情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全なリストを、使用に関する情報リンクと共に提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/printdocument-component-overview-windows-forms.md b/docs/framework/winforms/controls/printdocument-component-overview-windows-forms.md new file mode 100644 index 00000000000..406ef064e1b --- /dev/null +++ b/docs/framework/winforms/controls/printdocument-component-overview-windows-forms.md @@ -0,0 +1,42 @@ +--- +title: "PrintDocument コンポーネントの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "PrintDocument" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "PrintDocument コンポーネント [Windows フォーム], PrintDocument コンポーネントの概要" + - "印刷 [Windows フォーム], PrintDocument コンポーネント" +ms.assetid: b59b4b60-dce5-42ca-8421-3a54a2f7bab0 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# PrintDocument コンポーネントの概要 (Windows フォーム) +Windows フォームの [PrintDocument](../../../../docs/framework/winforms/controls/printdocument-component-windows-forms.md) コンポーネントは、Windows ベースのアプリケーション内でドキュメントの印刷を行うために、印刷対象と機能を定義するプロパティを設定するときに使用します。 このコンポーネントを [PrintDialog](../../../../docs/framework/winforms/controls/printdialog-component-windows-forms.md) コンポーネントと一緒に使用すると、ドキュメント印刷のすべての設定を制御できます。 + +## PrintDocument コンポーネントの操作 + コンポーネントを使用するのは主に次の 2 つの場合です。 + +- 簡易印刷ジョブ \(特定のテキスト ファイルを印刷する場合など\)。 簡易印刷ジョブの場合は、 コンポーネントを Windows フォームに追加してから、 イベント ハンドラーにファイル印刷のプログラミング ロジックを登録します。 このプログラミング ロジックでは、最後に メソッドを使用してドキュメントを印刷するようにします。 このメソッドは、 クラスの プロパティに格納されている オブジェクトをプリンターに送信します。 コンポーネントを使用してテキスト ドキュメントを印刷する方法を示す例については、「[方法 : Windows フォームで複数ページのテキスト ファイルを印刷する](../../../../docs/framework/winforms/advanced/how-to-print-a-multi-page-text-file-in-windows-forms.md)」を参照してください。 + +- より複雑な印刷ジョブ \(作成した印刷ロジックを再利用する場合など\)。 作成した印刷ロジックを再利用する場合は、 の派生コンポーネントを新規作成し、 イベントをオーバーライドします。オーバーライドの詳細については、Visual Basic では [Overrides](../Topic/Overrides%20\(Visual%20Basic\).md)、C\# では [override](../Topic/override%20\(C%23%20Reference\).md) のトピックをそれぞれ参照してください。 + + フォームに登録すると、 コンポーネントは Windows フォーム デザイナーの下部のトレイに表示されます。 + +## 参照 + + + [Windows フォームにおける印刷のサポート](../../../../docs/framework/winforms/advanced/windows-forms-print-support.md) + [PrintDocument コンポーネント](../../../../docs/framework/winforms/controls/printdocument-component-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/printdocument-component-windows-forms.md b/docs/framework/winforms/controls/printdocument-component-windows-forms.md new file mode 100644 index 00000000000..ed525d76f52 --- /dev/null +++ b/docs/framework/winforms/controls/printdocument-component-windows-forms.md @@ -0,0 +1,46 @@ +--- +title: "PrintDocument コンポーネント (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "PrintDocument コンポーネント [Windows フォーム]" + - "印刷 [Windows フォーム], ドキュメント" +ms.assetid: 5af6a51d-66f6-43cd-a8cd-d64eb18fe7e7 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# PrintDocument コンポーネント (Windows フォーム) +Windows フォーム `PrintDocument` コンポーネントを使用して印刷する対象を記述するプロパティを設定し、Windows ベースのアプリケーション内でドキュメントを印刷します。 ドキュメント印刷のあらゆる側面を管理するために、 コンポーネントと組み合わせて使用することができます。 + +## このセクションの内容 + [PrintDocument コンポーネントの概要](../../../../docs/framework/winforms/controls/printdocument-component-overview-windows-forms.md) + 印刷する内容を記述し、Windows ベースのアプリケーションで印刷を起動するプロパティを設定できる `PrintDocument` コンポーネントの一般的な概念を紹介します。 + +## 関連項目 + + クラスとそのメンバーに関するリファレンス情報を提供します。 + +## 関連項目 + [Windows フォームにおける印刷のサポート](../../../../docs/framework/winforms/advanced/windows-forms-print-support.md) + Windows フォームに関連する印刷のトピックの一覧を表示します。 + + [PrintDialog コンポーネント](../../../../docs/framework/winforms/controls/printdialog-component-windows-forms.md) + ユーザーがプリンターの選択、印刷するページの選択、および印刷関連の設定を決定するために使用できる構成済みのダイアログ ボックスを表示できる、 コンポーネントの全般的な概要を紹介します。 + + [PrintPreviewControl コントロール](../../../../docs/framework/winforms/controls/printpreviewcontrol-control-windows-forms.md) + 独自の印刷プレビュー ダイアログ ボックスまたはコンポーネントの設計に使用できる、 の一般的な概念を説明しています。 + + [PrintPreviewDialog コントロール](../../../../docs/framework/winforms/controls/printpreviewdialog-control-windows-forms.md) + コントロールの全般的な概念を説明します。このコントロールにより、ユーザーがドキュメントの印刷イメージを見るために使用する事前構成済みダイアログ ボックスを表示できます。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/printpreviewcontrol-control-overview-windows-forms.md b/docs/framework/winforms/controls/printpreviewcontrol-control-overview-windows-forms.md new file mode 100644 index 00000000000..37e7c33ff6c --- /dev/null +++ b/docs/framework/winforms/controls/printpreviewcontrol-control-overview-windows-forms.md @@ -0,0 +1,36 @@ +--- +title: "PrintPreviewControl コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "PrintPreviewControl" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "印刷プレビュー" + - "PrintPreviewControl コントロール" +ms.assetid: 4513c6c7-5e9b-4f4c-82ca-00f993a26955 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# PrintPreviewControl コントロールの概要 (Windows フォーム) +Windows フォームの は、[PrintDocument](../../../../docs/framework/winforms/controls/printdocument-component-windows-forms.md) を印刷時の状態で表示するために使用します。 にはボタンなどのユーザー インターフェイス要素がないため、通常は、独自の印刷プレビュー用ユーザー インターフェイスを作成する場合にだけ使用します。 標準のユーザー インターフェイスが必要な場合は、 コントロールを使用します。概要については「[PrintPreviewDialog コントロールの概要](../../../../docs/framework/winforms/controls/printpreviewdialog-control-overview-windows-forms.md)」を参照してください。 + +## 主要なプロパティ + このコントロールの主要なプロパティは、プレビューするドキュメントを設定する プロパティです。 ドキュメントは、 オブジェクトである必要があります。 印刷用ドキュメントの作成の概要については、「[PrintDocument コンポーネントの概要](../../../../docs/framework/winforms/controls/printdocument-component-overview-windows-forms.md)」と「[Windows フォームにおける印刷のサポート](../../../../docs/framework/winforms/advanced/windows-forms-print-support.md)」を参照してください。 プロパティと プロパティは、コントロール上で横方向および縦方向に表示されるページの数を決定します。 アンチエイリアシングを使用すると、文字の外観は滑らかになりますが、表示は遅くなります。使用する場合は、 プロパティを `true` に設定します。 + +## 参照 + + [PrintPreviewDialog コントロールの概要](../../../../docs/framework/winforms/controls/printpreviewdialog-control-overview-windows-forms.md) + [PrintPreviewControl コントロール](../../../../docs/framework/winforms/controls/printpreviewcontrol-control-windows-forms.md) + [ダイアログ ボックス コントロールおよびコンポーネント](../../../../docs/framework/winforms/controls/dialog-box-controls-and-components-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/printpreviewcontrol-control-windows-forms.md b/docs/framework/winforms/controls/printpreviewcontrol-control-windows-forms.md new file mode 100644 index 00000000000..5e50a135e31 --- /dev/null +++ b/docs/framework/winforms/controls/printpreviewcontrol-control-windows-forms.md @@ -0,0 +1,42 @@ +--- +title: "PrintPreviewControl コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "印刷プレビュー, カスタム インターフェイス (デザイナーを使用)" + - "印刷 [Windows フォーム], 印刷プレビュー" + - "PrintPreview コントロール (デザイナーを使用)" + - "PrintPreviewControl コントロール (デザイナーを使用)" +ms.assetid: 3fdb2e46-92a3-4e26-bb8d-63a89087b337 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# PrintPreviewControl コントロール (Windows フォーム) +Windows フォーム `PrintPreviewControl` は、印刷するときに表示されるドキュメントを表示するために使用されます。 このコントロールには、ボタンやその他のユーザー インターフェイスの要素がないため、通常は、独自の印刷プレビューのユーザー インターフェイスを作成する場合にのみ `PrintPreviewControl` を使用します。 標準のユーザー インターフェイスが必要な場合は、 コントロールを使用します。 + +## このセクションの内容 + [PrintPreviewControl コントロールの概要](../../../../docs/framework/winforms/controls/printpreviewcontrol-control-overview-windows-forms.md) + 独自の印刷プレビュー ダイアログまたはコンポーネントの設計に使用できる、`PrintPreviewControl` の一般的な概念について説明します。 + +## 関連項目 + + クラスとそのメンバーに関するリファレンス情報を提供します。 + +## 関連項目 + [PrintPreviewDialog コントロール](../../../../docs/framework/winforms/controls/printpreviewdialog-control-windows-forms.md) + 印刷プレビュー機能を作成する別の方法について説明します。 + + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/printpreviewdialog-control-overview-windows-forms.md b/docs/framework/winforms/controls/printpreviewdialog-control-overview-windows-forms.md new file mode 100644 index 00000000000..c8898dbe9ba --- /dev/null +++ b/docs/framework/winforms/controls/printpreviewdialog-control-overview-windows-forms.md @@ -0,0 +1,37 @@ +--- +title: "PrintPreviewDialog コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "PrintPreviewDialog" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "PrintPreviewDialog コントロール (デザイナーを使用), PrintPreviewDialog の概要" +ms.assetid: efd4ee8d-6edd-47ec-88e4-4a4759bd2384 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# PrintPreviewDialog コントロールの概要 (Windows フォーム) +Windows フォームの コントロールは、[PrintDocument](../../../../docs/framework/winforms/controls/printdocument-component-windows-forms.md) を印刷時の状態で表示する、定義済みダイアログ ボックスです。 このコントロールは、独自のダイアログ ボックスを使用しない簡易ソリューションとして、Windows ベースのアプリケーションで使用します。 このコントロールには、印刷を開始するボタン、ズーム イン用のボタン、1 ページまたは複数ページを表示するボタン、およびダイアログ ボックスを閉じるためのボタンがあります。 + +## 主要なプロパティおよびメソッド + このコントロールの主要なプロパティは、プレビューするドキュメントを設定する プロパティです。 ドキュメントは、 オブジェクトである必要があります。 ダイアログ ボックスを表示するには、コントロールの メソッドを呼び出す必要があります。 アンチエイリアシングを使用すると、文字の外観は滑らかになりますが、表示は遅くなります。使用する場合は、 プロパティを `true` に設定します。 + + いくつかのプロパティは、 に含まれる を介して使用できます。 をフォームに追加する必要はありません。コントロールは、ダイアログをフォームに追加したときに自動的に に含められます。 を介して使用できるプロパティの例として、 プロパティおよび プロパティがあります。これらのプロパティは、コントロール上で横方向および縦方向に表示されるページの数を決定します。 プロパティには、[!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] では `PrintPreviewDialog1.PrintPreviewControl.Columns`、[!INCLUDE[csprcs](../../../../includes/csprcs-md.md)] では `printPreviewDialog1.PrintPreviewControl.Columns`、または [!INCLUDE[vcprvc](../../../../includes/vcprvc-md.md)] では `printPreviewDialog1->PrintPreviewControl->Columns` としてアクセスできます。 + +## 参照 + + [PrintPreviewControl コントロールの概要](../../../../docs/framework/winforms/controls/printpreviewcontrol-control-overview-windows-forms.md) + [PrintPreviewDialog コントロール](../../../../docs/framework/winforms/controls/printpreviewdialog-control-windows-forms.md) + [ダイアログ ボックス コントロールおよびコンポーネント](../../../../docs/framework/winforms/controls/dialog-box-controls-and-components-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/printpreviewdialog-control-windows-forms.md b/docs/framework/winforms/controls/printpreviewdialog-control-windows-forms.md new file mode 100644 index 00000000000..b58b8180082 --- /dev/null +++ b/docs/framework/winforms/controls/printpreviewdialog-control-windows-forms.md @@ -0,0 +1,51 @@ +--- +title: "PrintPreviewDialog コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "印刷プレビュー, 既定のインターフェイス (デザイナーを使用)" + - "印刷 [Windows フォーム], 印刷プレビュー (デザイナーを使用)" + - "PrintPreview コントロール (デザイナーを使用)" + - "PrintPreviewDialog コントロール (デザイナーを使用)" +ms.assetid: bfb5a3d7-021e-44f4-90f3-d435467f51d6 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# PrintPreviewDialog コントロール (Windows フォーム) +Windows フォームの `PrintPreviewDialog` コントロールは、ドキュメントを印刷時の状態で表示するために使用される事前構成済みダイアログ ボックスです。 このコントロールは、独自のダイアログ ボックスを使用しない簡易ソリューションとして、Windows ベースのアプリケーションの中で使用します。 このコントロールには、印刷を開始するボタン、ズーム イン用のボタン、1 ページまたは複数ページを表示するボタン、およびダイアログ ボックスを閉じるためのボタンが含まれています。 + +## このセクションの内容 + [PrintPreviewDialog コントロールの概要](../../../../docs/framework/winforms/controls/printpreviewdialog-control-overview-windows-forms.md) + `PrintPreviewDialog` コントロールの全般的な概念を説明します。このコントロールにより、ユーザーがドキュメントの印刷イメージを見るために使用する事前構成済みダイアログ ボックスを表示できます。 + + [方法 : Windows フォーム アプリケーションに印刷プレビューを表示する](../../../../docs/framework/winforms/controls/how-to-display-print-preview-in-windows-forms-applications.md) + 実行時に `PrintPreviewDialog` コントロールのインスタンスを使用して、印刷するページを表示する方法について説明します。 + +## 関連項目 + + クラスとそのメンバーに関するリファレンス情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 + + [Windows フォーム ダイアログ ボックスの重要コード](http://go.microsoft.com/fwlink/?LinkID=102575) + Windows フォーム ダイアログ ボックスのコントロールとコンポーネント、基本的な機能を実行するために必要なコードについて説明します。 \(MSDN オンライン ライブラリの技術記事\) + + [ダイアログ ボックス コントロールおよびコンポーネント](../../../../docs/framework/winforms/controls/dialog-box-controls-and-components-windows-forms.md) + Windows フォームのさまざまなダイアログ ボックス コントロールについて説明します。 + + [Windows フォームのダイアログ ボックス](../../../../docs/framework/winforms/dialog-boxes-in-windows-forms.md) + Windows フォームのダイアログ ボックスを作成する方法について説明します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/programmatically-resize-cells-to-fit-content-in-the-datagrid.md b/docs/framework/winforms/controls/programmatically-resize-cells-to-fit-content-in-the-datagrid.md new file mode 100644 index 00000000000..b19fe83e2fd --- /dev/null +++ b/docs/framework/winforms/controls/programmatically-resize-cells-to-fit-content-in-the-datagrid.md @@ -0,0 +1,61 @@ +--- +title: "方法 : Windows フォームの DataGridView コントロールの内容に合わせてセルのサイズをプログラムで変更する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "セル, サイズ変更 (内容に合わせて)" + - "データ グリッド, サイズ変更 (内容に合わせてセルを)" + - "DataGridView コントロール [Windows フォーム], サイズ変更 (セルを)" + - "グリッド, サイズ変更 (内容に合わせてセルを)" +ms.assetid: 63d770dc-b3f5-462b-901a-3125b2753792 +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# 方法 : Windows フォームの DataGridView コントロールの内容に合わせてセルのサイズをプログラムで変更する + コントロールのさまざまなメソッドを使用すると、行、列、およびヘッダーのサイズを変更して、切り捨てることなく値の全体を表示することができます。 これらのメソッドを使用して、選択時に 要素のサイズを変更できます。 代わりに、コンテンツが変更されるたびに、これらの要素のサイズを自動的に変更するコントロールを構成することができます。 ただしこれは、大規模なデータ セットを処理しているときは、データが頻繁に変更されるときは、効率的ではありません。 詳細については、「[Windows フォーム DataGridView コントロールのサイズ変更オプション](../../../../docs/framework/winforms/controls/sizing-options-in-the-windows-forms-datagridview-control.md)」を参照してください。 + + 通常はデータ ソースから新しいデータを読み込むときや、ユーザーが値を編集するときにのみ、内容に合わせて 要素をプログラムで調整します。 これは、パフォーマンスを最適化するために便利ですが、ユーザーがマウスを使って行および列のサイズを手動で変更できるようにする場合にも便利です。 + + 次のコード例は、プログラムでのサイズ変更に使用できるオプションを示します。 + +## 使用例 + [!code-cpp[System.Windows.Forms.DataGridView.ProgrammaticResizing#0](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.ProgrammaticResizing/CPP/programmaticsizing.cpp#0)] + [!code-csharp[System.Windows.Forms.DataGridView.ProgrammaticResizing#0](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.ProgrammaticResizing/CS/programmaticsizing.cs#0)] + [!code-vb[System.Windows.Forms.DataGridView.ProgrammaticResizing#0](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.ProgrammaticResizing/VB/programmaticsizing.vb#0)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- System、System.Drawing、および System.Windows.Forms の各アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法の詳細については、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + + + + + + + + + + + + + + [Windows フォーム DataGridView コントロール内の列と行のサイズ変更](../../../../docs/framework/winforms/controls/resizing-columns-and-rows-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールのサイズ変更オプション](../../../../docs/framework/winforms/controls/sizing-options-in-the-windows-forms-datagridview-control.md) + [方法 : Windows フォームの DataGridView コントロールの内容変更時にセルのサイズを自動的に変更する](../../../../docs/framework/winforms/controls/automatically-resize-cells-when-content-changes-in-the-datagrid.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/programming-with-cells-rows-and-columns-in-the-datagrid.md b/docs/framework/winforms/controls/programming-with-cells-rows-and-columns-in-the-datagrid.md new file mode 100644 index 00000000000..a3b29d57b2d --- /dev/null +++ b/docs/framework/winforms/controls/programming-with-cells-rows-and-columns-in-the-datagrid.md @@ -0,0 +1,68 @@ +--- +title: "Windows フォーム DataGridView コントロールのセル、行、および列を使用したプログラミング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "セル, データ グリッド" + - "列 [Windows フォーム], データ グリッド" + - "データ グリッド, 要素" + - "DataGridView コントロール [Windows フォーム], プログラミング (グリッド要素を使用して)" + - "行 [Windows フォーム], データ グリッド" +ms.assetid: 0d76f7e4-4149-42c6-9118-bb37d6669dc5 +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Windows フォーム DataGridView コントロールのセル、行、および列を使用したプログラミング +ここでは、セル、行、列の各オブジェクトを使用したさまざまなプログラミング タスクの例を紹介するトピックを示します。 + +## このセクションの内容 + [方法 : Windows フォーム DataGridView コントロールの各セルにツールヒントを追加する](../../../../docs/framework/winforms/controls/add-tooltips-to-individual-cells-in-a-wf-datagridview-control.md) + イベントを使用してセルごとに異なるツールヒントを表示する方法について説明します。 + + [方法 : Windows フォーム DataGridView コントロールのセルの変更に基づいてカスタム動作を実行する](../../../../docs/framework/winforms/controls/perform-a-custom-action-based-on-changes-in-a-cell-of-a-datagrid.md) + イベントと イベントを処理する方法について説明します。 + + [方法 : Windows フォームの DataGridView コントロールのバンドを操作する](../../../../docs/framework/winforms/controls/how-to-manipulate-bands-in-the-windows-forms-datagridview-control.md) + 行および列の基本型である 型のオブジェクトを使用したプログラミングの方法について説明します。 + + [方法 : Windows フォームの DataGridView コントロールの行を操作する](../../../../docs/framework/winforms/controls/how-to-manipulate-rows-in-the-windows-forms-datagridview-control.md) + `DataGridViewRow` 型のオブジェクトを使用したプログラミングの方法について説明します。 + + [方法 : Windows フォーム DataGridView コントロールの列を操作する](../../../../docs/framework/winforms/controls/how-to-manipulate-columns-in-the-windows-forms-datagridview-control.md) + `DataGridViewColumn` 型のオブジェクトを使用したプログラミングの方法について説明します。 + + [方法 : Windows フォーム DataGridView コントロールのイメージ列を操作する](../../../../docs/framework/winforms/controls/how-to-work-with-image-columns-in-the-windows-forms-datagridview-control.md) + `DataGridViewImageColumn` クラスを使用したプログラミングの方法について説明します。 + +## 関連項目 + + コントロールの参照ドキュメントを提供します。 + + + クラスの参照ドキュメントを提供します。 + + + クラスの参照ドキュメントを提供します。 + + + クラスの参照ドキュメントを提供します。 + +## 関連項目 + [Windows フォーム DataGridView コントロールでの列、行、およびセルの基本機能](../../../../docs/framework/winforms/controls/basic-column-row-and-cell-features-wf-datagridview-control.md) + セル、行、および列の一般的なプロパティを説明するトピックを示します。 + +## 参照 + [DataGridView コントロール](../../../../docs/framework/winforms/controls/datagridview-control-windows-forms.md) + [Windows フォーム DataGridView コントロールの列型](../../../../docs/framework/winforms/controls/column-types-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/progressbar-control-overview-windows-forms.md b/docs/framework/winforms/controls/progressbar-control-overview-windows-forms.md new file mode 100644 index 00000000000..3540627517b --- /dev/null +++ b/docs/framework/winforms/controls/progressbar-control-overview-windows-forms.md @@ -0,0 +1,49 @@ +--- +title: "ProgressBar コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ProgressBar" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "プログレス コントロール, プログレス コントロールの概要" + - "ProgressBar コントロール [Windows フォーム], ProgressBar コントロールの概要" +ms.assetid: a05d9cba-3a6a-4f8f-94b8-8ec12799fb80 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# ProgressBar コントロールの概要 (Windows フォーム) +> [!IMPORTANT] +> コントロールは、 コントロールに代わると共に追加の機能を提供します。ただし、 コントロールは、下位互換性を保つ目的および将来使用する目的で保持されます。 + + Windows フォームの コントロールは、水平のバーに複数の四角形を表示することで、処理の進行状況を表します。 処理が完了したときには、バーが四角形で埋められます。 プログレス バーは、通常、処理が完了するまでの待機時間をユーザーに示すために使用します。たとえば、大きなファイルの読み込み時に使用します。 + +> [!NOTE] +> コントロールは、フォーム上で水平方向にのみ配置できます。 + +## 主要なプロパティおよびメソッド + コントロールの主要なプロパティは、、および です。 プロパティおよび プロパティは、プログレス バーに表示できる最大値と最小値を設定するために使用します。 プロパティは、操作が進行して完了した割合を表します。 コントロールに表示されるバーはブロックを並べて構成されるため、 コントロールによって示される値は、 プロパティの現在の値の近似値にすぎません。 コントロールのサイズに基づいて、 プロパティで次のブロックがいつ表示されるかが決定されます。 + + 現在の進行状況の値を更新する最も一般的な方法は、 プロパティを設定するコードを記述することです。 たとえば、大きいファイルの読み込みを行うときは、最大値として、ファイルの大きさを KB 単位で設定します。 たとえば、 プロパティが 100 に設定され、 プロパティが 10 に設定され、さらに プロパティが 50 に設定されている場合は、5 つの四角形が表示されます。 これは、表示できる数の半分です。 + + ただし、 プロパティを直接設定する以外にも、 コントロールによって表示される値を変更する方法があります。 プロパティを使用して、 プロパティをインクリメントする幅を指定できます。 次に、 メソッドを呼び出して値をインクリメントします。 インクリメント幅を変更する場合は、 メソッドを使用して、 プロパティをインクリメントする値を指定します。 + + 現在の処理状況をグラフィカルに表示するもう 1 つのコントロールは、 コントロールです。 + +> [!IMPORTANT] +> コントロールと コントロールは、 コントロールおよび コントロールに代わると共に追加の機能を提供します。ただし、 コントロールおよび コントロールは、下位互換性を保つ目的および将来使用する目的で、必要に応じて保持できます。 + +## 参照 + + [ProgressBar コントロール](../../../../docs/framework/winforms/controls/progressbar-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/progressbar-control-windows-forms.md b/docs/framework/winforms/controls/progressbar-control-windows-forms.md new file mode 100644 index 00000000000..3c537e140eb --- /dev/null +++ b/docs/framework/winforms/controls/progressbar-control-windows-forms.md @@ -0,0 +1,43 @@ +--- +title: "ProgressBar コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "プログレス コントロール" + - "ProgressBar コントロール [Windows フォーム]" +ms.assetid: 5be6b642-e8a6-4565-8ebd-ae73c7b10dc9 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# ProgressBar コントロール (Windows フォーム) +> [!IMPORTANT] +> コントロールは、 コントロールに代わると共に追加の機能を提供します。ただし、 コントロールは、下位互換性を保つ目的および将来使用する目的で保持されます。 + + Windows フォームの コントロールでは、水平のバーに複数の四角形を表示することで、処理の進行状況を表します。 処理が完了したときには、バーが四角形で埋められます。 プログレス バーは、通常、時間のかかる処理が完了するまでの待ち時間をユーザーに示すために使用します。たとえば、大きなファイルの読み込み中に使用します。 + +## このセクションの内容 + [ProgressBar コントロールの概要](../../../../docs/framework/winforms/controls/progressbar-control-overview-windows-forms.md) + 処理の進行状況をグラフィカルに表示できる コントロールの全般的な概念を説明します。 + + [方法 : Windows フォーム ProgressBar コントロールによって表示される値を設定する](../../../../docs/framework/winforms/controls/how-to-set-the-value-displayed-by-the-windows-forms-progressbar-control.md) + コントロールに表示される値を増加させる方法について説明します。 + +## 関連項目 + + クラスとそのメンバーに関する参照情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/properties-in-windows-forms-controls.md b/docs/framework/winforms/controls/properties-in-windows-forms-controls.md new file mode 100644 index 00000000000..f3e46fa3e47 --- /dev/null +++ b/docs/framework/winforms/controls/properties-in-windows-forms-controls.md @@ -0,0 +1,64 @@ +--- +title: "Windows フォーム コントロールのプロパティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム], プロパティ" + - "カスタム コントロール [Windows フォーム], プロパティの概要 (コードを使用)" + - "プロパティ [Windows フォーム]" +ms.assetid: 2785279b-fb57-4937-8f6b-2050e475db6f +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# Windows フォーム コントロールのプロパティ +Windows フォーム コントロールは、基本クラス から数多くのプロパティを継承しています。 こうしたプロパティには、 などがあります。 継承されるプロパティの詳細については、 に関するトピックを参照してください。 + + コントロールに継承されたプロパティをオーバーライドしたり、新しいプロパティを定義したりできます。 + +## このセクションの内容 + [プロパティの定義](../../../../docs/framework/winforms/controls/defining-a-property-in-windows-forms-controls.md) + カスタム コントロールまたはカスタム コンポーネントのプロパティを実装する方法と、そのプロパティをデザイン環境に統合する方法について説明します。 + + [ShouldSerialize メソッドと Reset メソッドによる既定値の定義](../../../../docs/framework/winforms/controls/defining-default-values-with-the-shouldserialize-and-reset-methods.md) + カスタム コントロールまたはカスタム コンポーネントの既定のプロパティ値を定義する方法について説明します。 + + [プロパティ変更イベント](../../../../docs/framework/winforms/controls/property-changed-events.md) + プロパティ値が変化したときにプロパティ変更通知を有効にする方法について説明します。 + + [方法 : 内在コントロールのプロパティを公開する](../../../../docs/framework/winforms/controls/how-to-expose-properties-of-constituent-controls.md) + カスタム複合コントロール内の内在コントロールのプロパティを公開する方法について説明します。 + + [カスタム コントロールへのメソッドの実装](../../../../docs/framework/winforms/controls/method-implementation-in-custom-controls.md) + カスタム コントロールおよびカスタム コンポーネントのメソッドを実装する方法について説明します。 + +## 関連項目 + + 複合コントロールを実装する基本クラスについて説明します。 + + + カスタム プロパティの型に使用する を指定する属性について説明します。 + + + カスタム プロパティに使用する を指定する属性について説明します。 + +## 関連項目 + [Windows フォーム コントロールの属性](../../../../docs/framework/winforms/controls/attributes-in-windows-forms-controls.md) + カスタム コントロールとカスタム コンポーネントのプロパティやその他のメンバーに適用できる属性について説明します。 + + [コンポーネントのデザイン時属性](../Topic/Design-Time%20Attributes%20for%20Components.md) + コンポーネントとコントロールに適用されるメタデータ属性の一覧を示します。メタデータ属性が適用されたコンポーネントとコントロールは、デザイン時にビジュアル デザイナーで適切に表示されます。 + + [Extending Design\-Time Support](../Topic/Extending%20Design-Time%20Support.md) + デザイン時サポートを提供するエディターやデザイナーなどのクラスを実装する方法を説明します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/property-changed-events.md b/docs/framework/winforms/controls/property-changed-events.md new file mode 100644 index 00000000000..89acd518967 --- /dev/null +++ b/docs/framework/winforms/controls/property-changed-events.md @@ -0,0 +1,37 @@ +--- +title: "プロパティ変更イベント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "カスタム コントロール [Windows フォーム], プロパティの変更 (コードを使用)" + - "プロパティ [Windows フォーム], 変更点" +ms.assetid: 268039ec-5aaa-4d76-b902-acccb036c850 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# プロパティ変更イベント +*PropertyName* というプロパティが変更されたときに、コントロールから通知が送信されるようにするには、*PropertyName*`Changed` というイベントと、イベントを発生させる `On`*PropertyName*`Changed` というメソッドを定義します。 Windows フォームの名前付け規則に従い、プロパティ名の前に *Changed* という単語が付け加えられます。 プロパティ変更イベントの型に関連付けられているイベント デリゲート型は であり、イベント データ型は です。 基本クラスの は、 など、多くのプロパティ変更イベントを定義します。 イベントに関する背景情報については、「[イベント](../../../../docs/standard/events/index.md)」と「[Windows フォーム コントロールのイベント](../../../../docs/framework/winforms/controls/events-in-windows-forms-controls.md)」を参照してください。 + + プロパティ変更イベントを使用すると、変更に反応するイベント ハンドラーをコントロールのコンシューマーが追加できるため、便利です。 コントロールが発生させたプロパティ変更イベントへこのコントロール自体が応答する必要がある場合には、デリゲートをイベントへアタッチする代わりに、対応する `On`*PropertyName*`Changed` メソッドをオーバーライドします。 通常、プロパティ変更イベントに対して応答するときに、コントロールは他のプロパティを更新するか、コントロールの描画面全体または一部を再描画します。 + + から継承したプロパティ変更イベントの一部に対して `FlashTrackBar` カスタム コントロールが応答する部分を示す例を次に示します。 サンプル全体については、「[方法 : 進行状況を示す Windows フォーム コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-windows-forms-control-that-shows-progress.md)」を参照してください。 + + [!code-csharp[System.Windows.Forms.FlashTrackBar#2](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.FlashTrackBar/CS/FlashTrackBar.cs#2)] + [!code-vb[System.Windows.Forms.FlashTrackBar#2](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.FlashTrackBar/VB/FlashTrackBar.vb#2)] + +## 参照 + [イベント](../../../../docs/standard/events/index.md) + [Windows フォーム コントロールのイベント](../../../../docs/framework/winforms/controls/events-in-windows-forms-controls.md) + [Windows フォーム コントロールのプロパティ](../../../../docs/framework/winforms/controls/properties-in-windows-forms-controls.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/providing-accessibility-information-for-controls-on-a-windows-form.md b/docs/framework/winforms/controls/providing-accessibility-information-for-controls-on-a-windows-form.md new file mode 100644 index 00000000000..4f1b581efb4 --- /dev/null +++ b/docs/framework/winforms/controls/providing-accessibility-information-for-controls-on-a-windows-form.md @@ -0,0 +1,107 @@ +--- +title: "Windows フォーム上のコントロールのユーザー補助情報の提供 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Windows フォーム コントロール、アクセシビリティ" + - "コントロール [Windows フォーム], ユーザー補助" + - "アクセシビリティ、Windows フォーム コントロール" +ms.assetid: 887dee6f-5059-4d57-957d-7c6fcd4acb10 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Windows フォーム上のコントロールのユーザー補助情報の提供 +ユーザー補助機能は専用のプログラムおよびデバイスで、障害を持つユーザーがコンピューターをより効果的に使用するよう助けます。 たとえば、視覚障碍者のためのスクリーン リーダーや、マウスまたはキーボードではなく音声コマンド入力を利用するユーザーのための音声入力ユーティリティがあります。 これらのユーザー補助機能は、Windows フォーム コントロールによって公開されているアクセシビリティのプロパティと連携します。 これらのプロパティとは: + +- **AccessibilityObject** + +- **AccessibleDefaultActionDescription** + +- **AccessibleDescription** + +- **AccessibleName** + +- **AccessibleRole** + +## AccessibilityObject プロパティ + この読み取り専用プロパティには [AccessibleObject クラス](frlrfSystemWindowsFormsAccessibleObjectClassTopic) インスタンスが含まれます。**AccessibleObject** は、コントロールの説明、画面上の位置、ナビゲーション能力、および値に関する情報を提供する インターフェイスを実装します。 デザイナーは、コントロールがフォームに追加されたときにこの値を設定します。 + +## AccessibleDefaultActionDescription プロパティ + この文字列は、コントロールの操作について説明します。 \[プロパティ\] ウィンドウには表示されず、コードでのみ設定できます。 次の例では、このプロパティをボタン コントロールに設定します。 + +``` +' Visual Basic +Button1.AccessibleDefaultActionDescription = _ + "Closes the application." + +// C# +Button1.AccessibleDefaultActionDescription = + "Closes the application."; + +// C++ +button1->AccessibleDefaultActionDescription = + "Closes the application."; +``` + +## AccessibleDescription プロパティ + この文字列はコントロールについて説明します。 これは、\[プロパティ\] ウィンドウで、または次のようにコードで設定できます。 + +``` +' Visual Basic +Button1.AccessibleDescription = "A button with text 'Exit'." + +// C# +Button1.AccessibleDescription = "A button with text 'Exit'"; + +// C++ +button1->AccessibleDescription = "A button with text 'Exit'"; +``` + +## AccessibleName プロパティ + これは、ユーザー補助機能に報告されたコントロールの名前です。 これは、\[プロパティ\] ウィンドウで、または次のようにコードで設定できます。 + +``` +' Visual Basic +Button1.AccessibleName = "Order" + +// C# +Button1.AccessibleName = "Order"; + +// C++ +button1->AccessibleName = "Order"; +``` + +## AccessibleRole プロパティ + このプロパティには [AccessibleRole 列挙](frlrfSystemWindowsFormsAccessibleRoleClassTopic)列挙型が含まれており、コントロールのユーザー インターフェイスの役割について説明します。 新しいコントロールは値が `Default` に設定されています。 つまり、**ボタン** コントロールは既定値では**ボタン**として機能します。 コントロールに別の役割がある場合、このプロパティをリセットできます。 たとえば、**PictureBox** コントロールを **Chart** として使用する場合、**PictureBox** ではなく **Chart** としてユーザー補助機能が役割を報告するようにできます。 また、開発したカスタム コントロールにこのプロパティを指定することもできます。 このプロパティは、\[プロパティ\] ウィンドウで、または次のようにコードで設定できます。 + +``` +' Visual Basic +PictureBox1.AccessibleRole = AccessibleRole.Chart + +// C# +PictureBox1.AccessibleRole = AccessibleRole.Chart; + +// C++ +pictureBox1->AccessibleRole = AccessibleRole::Chart; +``` + +## 参照 + + + + + + + \ No newline at end of file diff --git a/docs/framework/winforms/controls/putting-controls-on-windows-forms.md b/docs/framework/winforms/controls/putting-controls-on-windows-forms.md new file mode 100644 index 00000000000..1d3d5fd44ec --- /dev/null +++ b/docs/framework/winforms/controls/putting-controls-on-windows-forms.md @@ -0,0 +1,52 @@ +--- +title: "Windows フォームへのコントロールの追加 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ENV.Window.Toolbox" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Windows フォーム コントロール, 追加 (フォームに)" +ms.assetid: 997508f2-87e5-4bec-a78e-9eec8f1fb15b +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Windows フォームへのコントロールの追加 +Windows フォームに追加できるコントロールには、アプリケーションのニーズに応じるために、さまざまな種類があります。 + +## このセクションの内容 + [方法 : Windows フォームにコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-controls-to-windows-forms.md) + フォームにコントロールを追加する手順を示します。 + + [方法 : ユーザー インターフェイスを持たないコントロールを Windows フォームに追加する](../../../../docs/framework/winforms/controls/how-to-add-controls-without-a-user-interface-to-windows-forms.md) + ユーザー インターフェイスを使用せずに、アプリケーションにコントロールを追加する手順を示します。 + + [方法 : コントロールのコレクションに対して実行時にコントロールを追加または削除する](../../../../docs/framework/winforms/controls/how-to-add-to-or-remove-from-a-collection-of-controls-at-run-time.md) + 実行時にパネルにコントロールを追加したり、パネルからコントロールを削除したりする方法について説明します。 + + [チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定](../../../../docs/framework/winforms/controls/walkthrough-automatically-populating-the-toolbox-with-custom-components.md) + コンポーネントの作成後、**ツールボックス**にカスタム コンポーネントが自動的に表示されるようにする方法について説明します。 + + [方法 : Windows フォームに ActiveX コントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-activex-controls-to-windows-forms.md) + レガシ ActiveX コントロールを使用する手順を示します。 + + [Windows フォームで ActiveX コントロールをホストする場合の考慮事項](../../../../docs/framework/winforms/controls/considerations-when-hosting-an-activex-control-on-a-windows-form.md) + アプリケーションで ActiveX コントロールを使用する場合に考慮する点について説明します。 + +## 関連項目 + [Windows フォーム コントロール](../../../../docs/framework/winforms/controls/index.md) + コントロールを紹介するトピック、およびコントロールを使用して実行できる処理を紹介するトピックへのリンクを示します。 + + [Windows フォームでのユーザー入力の検証](../../../../docs/framework/winforms/user-input-validation-in-windows-forms.md) + Windows フォーム コントロールの内容の検証について、基本的な事項および背景にある理論を説明します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/radiobutton-control-overview-windows-forms.md b/docs/framework/winforms/controls/radiobutton-control-overview-windows-forms.md new file mode 100644 index 00000000000..9451175d970 --- /dev/null +++ b/docs/framework/winforms/controls/radiobutton-control-overview-windows-forms.md @@ -0,0 +1,44 @@ +--- +title: "RadioButton コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "RadioButton" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "オプション ボタン, オプション ボタンの概要" + - "オプション ボタン, 判断 (状態を)" + - "RadioButton コントロール [Windows フォーム], RadioButton コントロールの概要" + - "RadioButton コントロール [Windows フォーム], 判断 (状態を)" +ms.assetid: cd11f0c2-d098-4022-adf9-1455bc166a13 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# RadioButton コントロールの概要 (Windows フォーム) +Windows フォームの コントロールを使用すると、相互に排他的な選択項目を 2 つ以上含むセットを設定できます。 オプション ボタンとチェック ボックスは機能が似ているように見えますが、重要な違いがあります。ユーザーがオプション ボタンをクリックした場合、同じグループ内の他のオプション ボタンと同時にオンにすることはできません。 これに対し、チェック ボックスはいくつでもオンにできます。 オプション ボタン グループは、"内部で 1 つだけ選択できる選択項目のセット" と定義されます。 + +## コントロールの使用 + コントロールをクリックすると、 プロパティが `true` に設定され、 イベント ハンドラーが呼び出されます。 イベントは、 プロパティの値が変更されるときに発生します。 プロパティを `true` \(既定\) に設定した場合、オプション ボタンをクリックすると、グループ内の他のすべての項目が自動的にオフにされます。 選択したオプション ボタンが有効なオプションであることを確認するための検証コードを使用する場合、通常はこのプロパティを `false` に設定します。 コントロールに表示されるテキストは、 プロパティによって設定します。このプロパティには、アクセス キー ショートカットが含まれることがあります。 ユーザーは、Alt キーを押しながらアクセス キーを押すことによって、コントロールを "クリック" した場合と同様の操作ができます。 詳細については、「[方法 : Windows フォーム コントロールのアクセス キーを作成する](../../../../docs/framework/winforms/controls/how-to-create-access-keys-for-windows-forms-controls.md)」および「[方法 : Windows フォーム コントロールによって表示されるテキストを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-text-displayed-by-a-windows-forms-control.md)」を参照してください。 + + コントロールは、コマンド ボタンのように表示できます。 プロパティが に設定されている場合、選択されている状態では押し下げられているように表示されます。 プロパティと プロパティを使用すると、オプション ボタンでイメージを表示することもできます。 詳細については、「[方法 : Windows フォーム コントロールによって表示されるイメージを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-image-displayed-by-a-windows-forms-control.md)」を参照してください。 + +## 参照 + + [Panel コントロールの概要](../../../../docs/framework/winforms/controls/panel-control-overview-windows-forms.md) + [GroupBox コントロールの概要](../../../../docs/framework/winforms/controls/groupbox-control-overview-windows-forms.md) + [CheckBox コントロールの概要](../../../../docs/framework/winforms/controls/checkbox-control-overview-windows-forms.md) + [方法 : Windows フォーム コントロールのアクセス キーを作成する](../../../../docs/framework/winforms/controls/how-to-create-access-keys-for-windows-forms-controls.md) + [方法 : Windows フォーム コントロールによって表示されるテキストを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-text-displayed-by-a-windows-forms-control.md) + [方法 : セットとして機能する Windows フォーム RadioButton コントロールをグループ化する](../../../../docs/framework/winforms/controls/how-to-group-windows-forms-radiobutton-controls-to-function-as-a-set.md) + [RadioButton コントロール](../../../../docs/framework/winforms/controls/radiobutton-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/radiobutton-control-windows-forms.md b/docs/framework/winforms/controls/radiobutton-control-windows-forms.md new file mode 100644 index 00000000000..97746885c93 --- /dev/null +++ b/docs/framework/winforms/controls/radiobutton-control-windows-forms.md @@ -0,0 +1,43 @@ +--- +title: "RadioButton コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "チェックされたリスト項目, Windows フォーム コントロール" + - "リスト コントロール, Windows フォーム" + - "リスト項目, Windows フォーム コントロール (項目の表示)" + - "オプション ボタン" + - "RadioButton コントロール [Windows フォーム]" +ms.assetid: e895b2a5-9bcb-4486-b165-eaf4c3ea9644 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# RadioButton コントロール (Windows フォーム) +Windows フォームの `RadioButton` コントロールを使用すると、相互に排他的な選択項目を 2 つ以上含むセットを設定できます。 オプション ボタンとチェック ボックスは機能が似ているように見えますが、重要な違いがあります。ユーザーがオプション ボタンをクリックした場合、同じグループ内の他のオプション ボタンと同時にオンにすることはできません。 + +## このセクションの内容 + [RadioButton コントロールの概要](../../../../docs/framework/winforms/controls/radiobutton-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : セットとして機能する Windows フォーム RadioButton コントロールをグループ化する](../../../../docs/framework/winforms/controls/how-to-group-windows-forms-radiobutton-controls-to-function-as-a-set.md) + 1 つのボタンだけをオンにできるセットとして、オプション ボタンをグループ化する方法について説明します。 + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/raise-change-notifications--bindingsource.md b/docs/framework/winforms/controls/raise-change-notifications--bindingsource.md new file mode 100644 index 00000000000..6f0ffb92227 --- /dev/null +++ b/docs/framework/winforms/controls/raise-change-notifications--bindingsource.md @@ -0,0 +1,53 @@ +--- +title: "方法 : BindingSource と INotifyPropertyChanged の各インターフェイスを使用して変更通知を発生させる | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "BindingSource コンポーネント [Windows フォーム], および IPropertyChange" + - "BindingSource コンポーネント [Windows フォーム], 例" + - "変更通知" + - "変更通知, 発生" + - "データ ソース, 検出 (変更を)" + - "例 [Windows フォーム], BindingSource コンポーネント" + - "INotifyPropertyChanged インターフェイス, 使用 (BindingSource と共に)" +ms.assetid: 7fa2cf51-c09f-4375-adf0-e36c5617f099 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法 : BindingSource と INotifyPropertyChanged の各インターフェイスを使用して変更通知を発生させる +データ ソースに含まれる型が インターフェイスを実装し、プロパティ値が変更されると イベントを発生させる場合に、 コンポーネントがデータ ソースの変更を自動的に検出します。 これは、データ ソースの値が変わると、 にバインドされるコントロールが自動的に更新されるため便利です。 + +> [!NOTE] +> データ ソースが を実装し、非同期操作を実行している場合は、バック グラウンド スレッド上のデータ ソースを変更しないようにします。 代わりに、バック グラウンド スレッド上のデータを読み取り、UI スレッドでリストにデータをマージする必要があります。 + +## 使用例 + 次のコード例は、 インターフェイスの簡単な実装を示します。 型の一覧にバインドされるときに、 がバインドされたコントロールにデータ ソースの変更を自動的に渡す方法も示します。 + + `CallerMemberName` 属性を使用する場合、`NotifyPropertyChanged` メソッドの呼び出しが、文字列引数としてプロパティ名を指定する必要はありません。 詳細については、「[呼び出し元情報](../Topic/Caller%20Information%20\(C%23%20and%20Visual%20Basic\).md)」を参照してください。 + + [!code-csharp[System.ComponentModel.IPropertyChangeExample#1](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.IPropertyChangeExample/CS/Form1.cs#1)] + [!code-vb[System.ComponentModel.IPropertyChangeExample#1](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.IPropertyChangeExample/VB/Form1.vb#1)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- System、System.Data、System.Drawing、および System.Windows.Forms の各アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法の詳細は、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + + [BindingSource コンポーネント](../../../../docs/framework/winforms/controls/bindingsource-component.md) + [方法 : BindingSource ResetItem メソッドを使用して変更通知を発生させる](../../../../docs/framework/winforms/controls/how-to-raise-change-notifications-using-the-bindingsource-resetitem-method.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/reflect-data-source-updates-in-a-wf-control-with-the-bindingsource.md b/docs/framework/winforms/controls/reflect-data-source-updates-in-a-wf-control-with-the-bindingsource.md new file mode 100644 index 00000000000..45c138270c0 --- /dev/null +++ b/docs/framework/winforms/controls/reflect-data-source-updates-in-a-wf-control-with-the-bindingsource.md @@ -0,0 +1,49 @@ +--- +title: "方法 : BindingSource を使用して Windows フォーム コントロール内にデータ ソースの更新を反映させる | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "BindingSource コンポーネント [Windows フォーム], 例" + - "BindingSource コンポーネント [Windows フォーム], 更新 (データ バインディングを)" + - "データ バインド, 更新" + - "データ ソース, 更新" + - "例 [Windows フォーム], BindingSource コンポーネント" +ms.assetid: bd8bd9b2-af8a-4f11-a3d5-54eecbe2400b +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : BindingSource を使用して Windows フォーム コントロール内にデータ ソースの更新を反映させる +データ バインド コントロールを使用する場合、データ ソースがリスト変更イベントを発生させないことがあります。そのようなケースで、データ ソース内の変更に応答する必要が生じることがあります。 コンポーネントを使用してデータ ソースを Windows フォーム コントロールにバインドすれば、データ ソースが変更されたことを メソッドを呼び出すことによってコントロールに通知できます。 + +## 使用例 + 次のコード例では、バインドされたコントロールにデータ ソース内の更新について メソッドを使用して通知する方法を示します。 + + [!code-cpp[System.Windows.Forms.DataConnector.ResetBindings#1](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataConnector.ResetBindings/CPP/form1.cpp#1)] + [!code-csharp[System.Windows.Forms.DataConnector.ResetBindings#1](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataConnector.ResetBindings/CS/form1.cs#1)] + [!code-vb[System.Windows.Forms.DataConnector.ResetBindings#1](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataConnector.ResetBindings/VB/form1.vb#1)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- System、System.Drawing、および System.Windows.Forms の各アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法の詳細については、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + + + + [BindingSource コンポーネント](../../../../docs/framework/winforms/controls/bindingsource-component.md) + [方法 : Windows フォーム コントロールを型にバインドする](../../../../docs/framework/winforms/controls/how-to-bind-a-windows-forms-control-to-a-type.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/remove-autogenerated-columns-from-a-wf-datagridview-control.md b/docs/framework/winforms/controls/remove-autogenerated-columns-from-a-wf-datagridview-control.md new file mode 100644 index 00000000000..f8fd5b8681a --- /dev/null +++ b/docs/framework/winforms/controls/remove-autogenerated-columns-from-a-wf-datagridview-control.md @@ -0,0 +1,58 @@ +--- +title: "方法 : Windows フォーム DataGridView コントロールから自動生成された列を削除する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "列 [Windows フォーム], 削除" + - "DataGridView コントロール [Windows フォーム], 削除 (列を)" +ms.assetid: 92e28d98-95a3-446c-9150-41b7c7e5be15 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : Windows フォーム DataGridView コントロールから自動生成された列を削除する +データ ソースのデータに基づいて列を自動生成するように コントロールが設定されている場合、特定の列を任意に選択して省略できます。 この省略は、 コレクションの メソッドを呼び出して実行できます。 これ以外に、 プロパティを `false` に設定することによってもビューから列を非表示にできます。 この手法は、特定の条件で非表示の列を表示する場合や、列内のデータに非表示にしたままアクセスする必要がある場合に便利です。 + +### 自動生成された列を削除するには + +- コレクションの メソッドを呼び出します。 + + [!code-csharp[System.Windows.Forms.DataGridViewMisc#111](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/CS/datagridviewmisc.cs#111)] + [!code-vb[System.Windows.Forms.DataGridViewMisc#111](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/VB/datagridviewmisc.vb#111)] + +### 自動生成された列を非表示するには + +- 列の プロパティを `false` に設定します。 + + [!code-csharp[System.Windows.Forms.DataGridViewMisc#112](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/CS/datagridviewmisc.cs#112)] + [!code-vb[System.Windows.Forms.DataGridViewMisc#112](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/VB/datagridviewmisc.vb#112)] + +## 使用例 + [!code-csharp[System.Windows.Forms.DataGridViewMisc#110](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/CS/datagridviewmisc.cs#110)] + [!code-vb[System.Windows.Forms.DataGridViewMisc#110](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/VB/datagridviewmisc.vb#110)] + +## コードのコンパイル + この例には、次の項目が必要です。 + +- Northwind サンプルデータベースの `Customers` テーブルなど、`Fax` 列と `CustomerID` 列を含むテーブルにバインドされている `dataGridView1` という名前の コントロール。 + +- アセンブリおよび アセンブリへの参照。 + +## 参照 + + + + + + [Windows フォーム DataGridView コントロールでのデータの表示](../../../../docs/framework/winforms/controls/displaying-data-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/rendering-a-windows-forms-control.md b/docs/framework/winforms/controls/rendering-a-windows-forms-control.md new file mode 100644 index 00000000000..630a76ff9a1 --- /dev/null +++ b/docs/framework/winforms/controls/rendering-a-windows-forms-control.md @@ -0,0 +1,127 @@ +--- +title: "Windows フォーム コントロールのレンダリング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "カスタム コントロール [Windows フォーム], グラフィックス リソース" + - "カスタム コントロール [Windows フォーム], 無効化と描画" + - "カスタム コントロール [Windows フォーム], 描画" + - "OnPaintBackground メソッド, 呼び出し (Windows フォーム カスタム コントロールで)" +ms.assetid: aae8e1e6-4786-432b-a15e-f4c44760d302 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# Windows フォーム コントロールのレンダリング +レンダリングとは、ユーザーの画面にコントロールのビジュアル表現を作成する操作です。 Windows フォームは、[!INCLUDE[ndptecgdi](../../../../includes/ndptecgdi-md.md)] \(新しい Windows グラフィックス ライブラリ\) を使用してレンダリングを行います。 [!INCLUDE[ndptecgdi](../../../../includes/ndptecgdi-md.md)] へのアクセスを提供するマネージ クラスは、 名前空間とその下位名前空間に格納されています。 + + コントロールのレンダリングに使用される要素を次に示します。 + +- 基本クラスによって提供される描画機能 + +- [!INCLUDE[ndptecgdi](../../../../includes/ndptecgdi-md.md)] グラフィックス ライブラリの必須要素。 + +- 描画領域のジオメトリ + +- グラフィック リソースを解放するためのプロシージャ + +## コントロールの描画機能 + 基本クラスは、その イベントを介して描画機能を提供します。 コントロールの表示を更新する必要がある場合は、このコントロールが常に イベントを発生させます。 .NET Framework のイベントの詳細については、「[イベントの処理と発生](../../../../docs/standard/events/index.md)」を参照してください。 + + イベントのイベント データ クラスである は、コントロールの描画に必要なデータ、つまりグラフィックス オブジェクト、および描画する領域を表す四角形オブジェクトへのハンドルを維持します。 次のコード片では、これらのオブジェクトを太字で示します。 + +```vb +Public Class PaintEventArgs + Inherits EventArgs + Implements IDisposable + + Public ReadOnly Property ClipRectangle() As System.Drawing.Rectangle + ... + End Property + + Public ReadOnly Property Graphics() As System.Drawing.Graphics + ... + End Property + ' Other properties and methods. + ... +End Class +``` + +```csharp +public class PaintEventArgs : EventArgs, IDisposable { +public System.Drawing.Rectangle ClipRectangle {get;} +public System.Drawing.Graphics Graphics {get;} +// Other properties and methods. +... +} +``` + + は描画機能をカプセル化するマネージ クラスです。このクラスについては、このトピックの [!INCLUDE[ndptecgdi](../../../../includes/ndptecgdi-md.md)] のセクションで説明します。 構造体のインスタンスです。コントロールを描画するために使用できる領域を定義します。 コントロール開発者は、コントロールの プロパティを使用して を算出できます。これについては、このトピックの後半のジオメトリのセクションで説明します。 + + コントロールは、 から継承する メソッドをオーバーライドすることによって、レンダリング ロジックを提供する必要があります。 は、グラフィックス オブジェクトと四角形へアクセスし、渡された インスタンスの プロパティと プロパティを使用してこれらのオブジェクトを描画します。 + +```vb +Protected Overridable Sub OnPaint(pe As PaintEventArgs) +``` + +```csharp +protected virtual void OnPaint(PaintEventArgs pe); +``` + + 基本クラスの メソッドは描画機能を実装しません。このメソッドは、 イベントに登録されているイベント デリゲートを呼び出すだけです。 をオーバーライドする場合は、登録デリゲートが イベントを受信できるように、常に基本クラスの メソッドを呼び出す必要があります。 ただし描画面全体を描画するコントロールでは、基本クラスの を呼び出すとちらつきが発生するため、これを呼び出さないようにします。 イベントのオーバーライドの例については、「[方法 : 進行状況を示す Windows フォーム コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-windows-forms-control-that-shows-progress.md)」を参照してください。 + +> [!NOTE] +> コントロールから直接 を呼び出さないでください。 から継承された メソッドを呼び出すか、または を呼び出す他のメソッドを呼び出してください。 メソッドが を呼び出します。 メソッドはオーバーロードされます。また、 メソッドに渡される引数によって、コントロールの描画領域が画面領域の全体または一部のどちらであるかが決まります。 + + 基本クラスは、描画に役立つもう 1 つのメソッドである メソッドを定義します。 + +```vb +Protected Overridable Sub OnPaintBackground(pevent As PaintEventArgs) +``` + +```csharp +protected virtual void OnPaintBackground(PaintEventArgs pevent); +``` + + はウィンドウの背景 \(ウィンドウの形状\) を描画するメソッドであり、高速処理が保証されています。一方、 は詳細を描画するメソッドです。個々の描画要求が 1 つの イベントに結合されますが、このイベントは再描画する必要のある領域をすべてカバーしているため、このメソッドの処理には時間がかかることがあります。 たとえば、コントロールのグラデーション色の背景を描画するには、 を呼び出します。 + + にはイベントに似た命名規則があり、`OnPaint` メソッドと同じ引数を受け取ります。ただし、 は厳密にはイベント メソッドではありません。 `PaintBackground` というイベントは存在せず、 はイベント デリゲートを呼び出しません。 メソッドをオーバーライドする場合は、派生クラスがその基本クラスの メソッドを呼び出す必要はありません。 + +## GDI\+ の基本事項 + クラスには、テキストを表示するメソッドと同様に円形、三角形、円弧、楕円形などのさまざまな形状を描画するメソッドがあります。 形状 \(円形、四角形、円弧など\)、色、フォント、ブラシなどのグラフィックス要素をカプセル化したクラスは、 名前空間とその下位名前空間に格納されています。 [!INCLUDE[ndptecgdi](../../../../includes/ndptecgdi-md.md)] の詳細については、「[マネージ グラフィックス クラスの使用](../../../../docs/framework/winforms/advanced/using-managed-graphics-classes.md)」を参照してください。 また、[!INCLUDE[ndptecgdi](../../../../includes/ndptecgdi-md.md)] の基本については「[方法 : 進行状況を示す Windows フォーム コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-windows-forms-control-that-shows-progress.md)」にも説明されています。 + +## 描画領域のジオメトリ + プロパティが実際に描画される領域を指定している一方、コントロールの プロパティはユーザーの画面上のコントロールに使用できる四角形の領域を指定します。 実際に描画が実行されるのは、 インスタンスを引数として受け取る イベント メソッドです。 コントロールでは、使用できる領域の一部を描画するだけで済む場合があります。たとえば、コントロールの表示領域の一部だけが変更された場合などです。 このような場合、コントロールの開発者は実際に描画する領域を計算し、算出された値を へ渡す必要があります。 引数として または を受け取る のオーバーロードされたバージョンでは、その引数を使用して プロパティを生成します。 + + `FlashTrackBar` カスタム コントロールが、描画する四角形領域を計算する処理を次のコード片に示します。 `client` 変数は プロパティを示します。 サンプル全体については、「[方法 : 進行状況を示す Windows フォーム コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-windows-forms-control-that-shows-progress.md)」を参照してください。 + + [!code-csharp[System.Windows.Forms.FlashTrackBar#6](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.FlashTrackBar/CS/FlashTrackBar.cs#6)] + [!code-vb[System.Windows.Forms.FlashTrackBar#6](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.FlashTrackBar/VB/FlashTrackBar.vb#6)] + +## グラフィック リソースの解放 + グラフィック オブジェクトはシステム リソースを消費するため、パフォーマンスへの影響が大きいオブジェクトです。 そのようなオブジェクトは、 クラスのインスタンスに加えて、 クラス、 クラス、およびその他のグラフィックス クラスのインスタンスを含みます。 必要な場合にだけグラフィック リソースを作成し、リソースの利用が終わったらすぐにリソースを解放することが重要です。 インターフェイスを実装する型を作成する場合には、処理が完了したら、リソースを解放するために メソッドを呼び出します。 + + `FlashTrackBar` カスタム コントロールによる リソースの作成と解放を、次のコード片に示します。 ソース コード全体については、「[方法 : 進行状況を示す Windows フォーム コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-windows-forms-control-that-shows-progress.md)」を参照してください。 + + [!code-csharp[System.Windows.Forms.FlashTrackBar#5](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.FlashTrackBar/CS/FlashTrackBar.cs#5)] + [!code-vb[System.Windows.Forms.FlashTrackBar#5](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.FlashTrackBar/VB/FlashTrackBar.vb#5)] + + [!code-csharp[System.Windows.Forms.FlashTrackBar#4](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.FlashTrackBar/CS/FlashTrackBar.cs#4)] + [!code-vb[System.Windows.Forms.FlashTrackBar#4](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.FlashTrackBar/VB/FlashTrackBar.vb#4)] + + [!code-csharp[System.Windows.Forms.FlashTrackBar#3](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.FlashTrackBar/CS/FlashTrackBar.cs#3)] + [!code-vb[System.Windows.Forms.FlashTrackBar#3](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.FlashTrackBar/VB/FlashTrackBar.vb#3)] + +## 参照 + [方法 : 進行状況を示す Windows フォーム コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-windows-forms-control-that-shows-progress.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/rendering-controls-with-visual-styles.md b/docs/framework/winforms/controls/rendering-controls-with-visual-styles.md new file mode 100644 index 00000000000..3d24a296a43 --- /dev/null +++ b/docs/framework/winforms/controls/rendering-controls-with-visual-styles.md @@ -0,0 +1,91 @@ +--- +title: "visual スタイルが使用されているコントロールのレンダリング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "プロフェッショナルな外観, Windows フォーム コントロールでのレンダリング" + - "テーマ, XP の Visual スタイル (Window フォームでの)" + - "カスタム コントロール [Windows フォーム], レンダリング" + - "カスタム コントロール [Windows フォーム], 描画" + - "ビジュアル テーマ, レンダリング (Windows フォーム コントロールの)" + - "ユーザー コントロール [Windows フォーム], 描画" + - "ビジュアル テーマ, レンダリング (Windows フォーム コントロールの)" +ms.assetid: a5b178ba-610e-46c4-a6c0-509c0886a744 +caps.latest.revision: 19 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 19 +--- +# visual スタイルが使用されているコントロールのレンダリング +[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] は、視覚スタイルをサポートするオペレーティング システムでの、それらを使用したコントロールと他の Windows ユーザー インターフェイス \(UI\) 要素のレンダリングをサポートします。 このトピックでは、オペレーティング システムの現在の視覚スタイルを使用したコントロールと他の UI 要素のレンダリングに関して [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] でのいくつかのサポート レベルについて説明します。 + +## 一般的なコントロールのクラスをレンダリングする + コントロールのレンダリングとは、コントロールのユーザー インターフェイスを描画することを意味します。 名前空間は、いくつかの一般的な Windows フォーム コントロールをレンダリングするための クラスを提供します。 ただし、このクラスは従来の Windows スタイルでコントロールを描画するため、視覚スタイルが有効になったアプリケーションでカスタム コントロールを描画する際の一貫した UI エクスペリエンスの維持が困難になる可能性があります。 + + [!INCLUDE[dnprdnlong](../../../../includes/dnprdnlong-md.md)] に含まれる 名前空間のクラスは、視覚スタイルを使用して一般的なコントロールのパーツと状態をレンダリングします。 これらの各クラスに含まれる `static` メソッドにより、オペレーティング システムの現在の視覚スタイルを使用して、特定の状態のコントロールまたはコントロールのパーツを描画します。 + + これらのクラスの一部は、視覚スタイルが使用可能かどうかに関係なく関連するコントロールを描画するように設計されています。 視覚スタイルが有効になっている場合、クラス メンバーは視覚スタイルを使用して関連するコントロールを描画します。視覚スタイルが無効になっている場合、クラス メンバーは、従来の Windows スタイルでコントロールを描画します。 次のようなクラスがこれに含まれます。 + +- + +- + +- + +- + + 他のクラスは、視覚スタイルが使用可能な場合にのみ関連するコントロールを描画することができ、視覚スタイルが無効になっている場合、それらのメンバーは例外をスローします。 次のようなクラスがこれに含まれます。 + +- + +- + +- + +- + +- + +- + + これらのクラスを使用したコントロールの描画の詳細については、「[方法 : コントロールの描画クラスを使用する](../../../../docs/framework/winforms/controls/how-to-use-a-control-rendering-class.md)」を参照してください。 + +## 視覚スタイル要素とレンダリング クラス + 名前空間に含まれるクラスを使用して、視覚スタイルによってサポートされる任意のコントロールまたは UI 要素を描画したり、それらに関する情報を取得したりすることができます。 サポートされるコントロールには、 名前空間のレンダリング クラスを使用する一般的なコントロール \(前のセクションを参照してください\)、およびタブ コントロールや rebar コントロールなどの他のコントロールが含まれます。 他のサポートされる UI 要素には、**\[スタート\]** メニュー、タスクバー、ウィンドウの非クライアント領域のパーツなどがあります。 + + 名前空間の主要なクラスは です。 は、視覚スタイルによってサポートされる任意のコントロールまたはユーザー インターフェイス要素を識別するための基盤クラスです。 自体に加えて、 名前空間には、視覚スタイルによってサポートされるコントロール、コントロール パーツ、その他の UI 要素のすべての状態の を返す `static` プロパティを持つ の多くの入れ子になったクラスが含まれています。 + + は、オペレーティング システムの現在の視覚スタイルによって定義される各 を描画したり、それらに関する情報を取得したりするメソッドを提供します。 取得可能な要素に関する情報には、既定のサイズ、背景の種類、色の定義などが含まれます。 は、Windows プラットフォーム SDK の Windows シェル部分からの視覚スタイル \(UxTheme\) API の機能をラップします。 詳細については、MSDN ライブラリ \([http:\/\/msdn.microsoft.com\/library](http://msdn.microsoft.com/library/)\) のプラットフォーム SDK 部分の「Windows XP ビジュアル スタイルの使用」を参照してください。 + + の使用方法の詳細については、「[方法 : visual スタイル要素を描画する](../../../../docs/framework/winforms/controls/how-to-render-a-visual-style-element.md)」を参照してください。 + +## 視覚スタイルを有効にする + [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] バージョン 1.0 用に作成されたアプリケーションの視覚スタイルを有効にするには、プログラマーが、ComCtl32.dll バージョン 6 以降をコントロールの描画に使用することを指定するアプリケーション マニフェストを含める必要があります。[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] バージョン 1.1 以降を使用してビルドされたアプリケーションは、 クラスの メソッドを使用できます。 + +## 視覚スタイルのサポートの確認 + クラスの プロパティは、現在のアプリケーションが視覚スタイルを使用してコントロールを描画しているかどうかを示します。 カスタム コントロールを描画するときには、 の値を確認して、コントロールのレンダリングに視覚スタイルを使用する必要があるかどうかを判断できます。 次の表に、 が `true` を返すために満たす必要がある 4 つの条件を示します。 + +|条件|ノート| +|--------|---------| +|オペレーティング システム視覚スタイルをサポートしている。|この条件を個別に確認するには、 クラスの プロパティを使用します。| +|ユーザーがオペレーティング システムで視覚スタイルを有効にしている。|この条件を個別に確認するには、 クラスの プロパティを使用します。| +|アプリケーションで視覚スタイルが有効になっている。|アプリケーションで視覚スタイルを有効にするには、 メソッドを呼び出すか、ComCtl32.dll バージョン 6 以降をコントロールの描画に使用することを指定するアプリケーション マニフェストを使用します。| +|アプリケーション ウィンドウのクライアント領域を描画するために視覚スタイルが使用されている。|この条件を個別に確認するには、 クラスの プロパティを使用し、その値が または になっていることを確認します。| + + ユーザーが視覚スタイルの有効と無効を切り替えたり、1 つの視覚スタイルから別の視覚スタイルに切り替えたりしたときに、それを確認するには、 または イベントのハンドラーの 値を確認します。 + +> [!IMPORTANT] +> ユーザーが視覚スタイルを有効にしたり切り替えたりしたときに、 を使用してコントロールまたは UI 要素をレンダリングする場合は、 イベントではなく イベントを処理するときにこの処理を実行してください。 を処理するときに クラスを使用した場合は、例外がスローされます。 + +## 参照 + [コントロールのカスタム描画およびレンダリング](../../../../docs/framework/winforms/controls/custom-control-painting-and-rendering.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/resizing-columns-and-rows-in-the-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/resizing-columns-and-rows-in-the-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..5ceaebfc2a3 --- /dev/null +++ b/docs/framework/winforms/controls/resizing-columns-and-rows-in-the-windows-forms-datagridview-control.md @@ -0,0 +1,53 @@ +--- +title: "Windows フォーム DataGridView コントロール内の列と行のサイズ変更 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "列 [Windows フォーム], サイズ変更 (グリッドの)" + - "データ グリッド, サイズ変更 (列と行を)" + - "DataGridView コントロール [Windows フォーム], サイズ変更 (行と列を)" +ms.assetid: 7532764d-e5c1-4943-a08b-6377a722d3b6 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# Windows フォーム DataGridView コントロール内の列と行のサイズ変更 +`DataGridView` コントロールには、列と行のサイズ変更の動作をカスタマイズするさまざまな機能が用意されています。 通常、`DataGridView` のセルは、内容に基づくサイズ変更を行いません。 セルのサイズよりも大きい表示値は、一部だけが表示されます。 文字列として表示可能な内容は、ツールヒント内に表示されます。 + + 既定では、行、列、およびヘッダーの区分線をユーザーがマウスでドラッグすることにより、より多くの情報を表示できるようになっています。 また、ユーザーが区分線をダブルクリックすると、関連する行、列、またはヘッダーのサイズは、内容に応じて自動的にサイズ変更されます。 + + `DataGridView` コントロールには、このようなすべてのユーザー操作をカスタマイズしたり無効にしたりするためのプロパティ、メソッド、およびイベントがあります。 また、プログラムによって、行、列、およびヘッダーのサイズを内容に基づいて変更したり、内容が変更されるたびに自動的にサイズ変更されるように設定したりすることもできます。 列の設定によって、使用できるコントロールの幅が指定した比率で自動的に分割されるようにもできます。 + +## このセクションの内容 + [Windows フォーム DataGridView コントロールのサイズ変更オプション](../../../../docs/framework/winforms/controls/sizing-options-in-the-windows-forms-datagridview-control.md) + 行、列、およびヘッダーのサイズ変更の機能について説明します。 また、サイズ変更関連のプロパティとメソッドの詳細を示し、一般的な使用シナリオを説明します。 + + [Windows フォーム DataGridView コントロールの列フィル モード](../../../../docs/framework/winforms/controls/column-fill-mode-in-the-windows-forms-datagridview-control.md) + 列フィル モードについて詳しく説明し、列フィル モードおよびその他のモードを試すために使用できるデモ用のコードを示します。 + + [方法 : Windows フォーム DataGridView コントロールのサイズ変更モードを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-sizing-modes-of-the-windows-forms-datagridview-control.md) + 一般的な用途でのサイズ変更モードの設定方法について説明します。 + + [方法 : Windows フォームの DataGridView コントロールの内容に合わせてセルのサイズをプログラムで変更する](../../../../docs/framework/winforms/controls/programmatically-resize-cells-to-fit-content-in-the-datagrid.md) + プログラミングによるサイズ変更を試すために使用できるデモ用のコードを示します。 + + [方法 : Windows フォームの DataGridView コントロールの内容変更時にセルのサイズを自動的に変更する](../../../../docs/framework/winforms/controls/automatically-resize-cells-when-content-changes-in-the-datagrid.md) + 自動サイズ変更モードを試すために使用できるデモ用のコードを示します。 + +## 関連項目 + + コントロールの参照ドキュメントを提供します。 + +## 参照 + [DataGridView コントロール](../../../../docs/framework/winforms/controls/datagridview-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/richtextbox-control-overview-windows-forms.md b/docs/framework/winforms/controls/richtextbox-control-overview-windows-forms.md new file mode 100644 index 00000000000..0c5335f91fe --- /dev/null +++ b/docs/framework/winforms/controls/richtextbox-control-overview-windows-forms.md @@ -0,0 +1,39 @@ +--- +title: "RichTextBox コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "RichTextBox" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "RichTextBox コントロール [Windows フォーム], RichTextBox コントロールの概要" + - "テキスト ボックス, テキスト ボックスの概要" +ms.assetid: 95081194-3dd4-4b84-9545-dd373e491eca +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# RichTextBox コントロールの概要 (Windows フォーム) +Windows フォームの コントロールは、書式付きテキストの表示、入力、および操作を行うために使用されます。 コントロールは、 コントロールのすべての機能を備えている他、フォント、色、およびリンクを表示したり、ファイルからテキストや埋め込みイメージを読み込んだり、指定した文字を検索したりできます。 通常、 コントロールは、Microsoft Word などのワード プロセッシング アプリケーションと同様のテキスト操作および表示機能を提供します。 コントロールと同様に、 コントロールはスクロール バーを表示できます。ただし、 コントロールとは異なり、既定の設定では必要に応じて垂直スクロール バーと水平スクロール バーの両方が表示され、追加のスクロール バー設定もあります。 + +## RichTextBox コントロールの操作 + コントロールと同様に、表示されるテキストは プロパティによって設定されます。 コントロールには、テキストの書式を指定する多くのプロパティがあります。 各プロパティの詳細については、「[方法 : Windows フォームの RichTextBox コントロールのフォント属性を設定する](../../../../docs/framework/winforms/controls/how-to-set-font-attributes-for-the-windows-forms-richtextbox-control.md)」と「[方法 : Windows フォームの RichTextBox コントロールを使用してインデント、ぶら下げインデント、および箇条書き段落を設定する](../../../../docs/framework/winforms/controls/set-indents-hanging-indents-bulleted-paragraphs-with-wf-richtextbox.md)」を参照してください。 ファイルを操作するために、 メソッドおよび メソッドを使用すると、プレーンテキスト、Unicode プレーンテキスト、リッチ テキスト形式 \(RTF\) などの複数のファイル形式を表示し、書き込むことができます。 使用できるファイル形式の一覧については、「[RichTextBoxStreamType 列挙](frlrfSystemWindowsFormsRichTextBoxStreamTypeClassTopic)」を参照してください。 メソッドを使用すると、テキストの文字列や特定の文字を検索できます。 + + また、 プロパティを `true` に設定し、 イベントを処理するコードを記述することで、Web スタイルのリンクに コントロールを使用することもできます。 詳細については、「[方法 : Windows フォームの RichTextBox コントロールを使用して Web スタイルのリンクを表示する](../../../../docs/framework/winforms/controls/how-to-display-web-style-links-with-the-windows-forms-richtextbox-control.md)」を参照してください。 コントロール内のテキストの一部またはすべてをユーザーが操作できないようにするには、 プロパティを `true` に設定します。 + + コントロール内のほとんどの編集操作は、 メソッドおよび メソッドを呼び出すと、元に戻したりやり直したりできます。 メソッドを使用すると、ユーザーが最後に元に戻した動作をコントロールに再び適用できるかどうかを決定できます。 + +## 参照 + + [RichTextBox コントロール](../../../../docs/framework/winforms/controls/richtextbox-control-windows-forms.md) + [TextBox コントロールの概要](../../../../docs/framework/winforms/controls/textbox-control-overview-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/richtextbox-control-windows-forms.md b/docs/framework/winforms/controls/richtextbox-control-windows-forms.md new file mode 100644 index 00000000000..fa7fed10eb6 --- /dev/null +++ b/docs/framework/winforms/controls/richtextbox-control-windows-forms.md @@ -0,0 +1,65 @@ +--- +title: "RichTextBox コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "リッチ エディット コントロール" + - "RichTextBox コントロール [Windows フォーム]" + - "テキスト ボックス" +ms.assetid: 3225f2ef-c6d9-4bd4-9d3e-2219e58edbf2 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# RichTextBox コントロール (Windows フォーム) +Windows フォームの `RichTextBox` コントロールは、書式付きテキストの表示、入力、および操作を行うために使用されます。 `RichTextBox` コントロールは、 コントロールのすべての機能を備えており、さらに、フォント、色、およびリンクを表示したり、ファイルからテキストや埋め込みイメージを読み込んだり、編集操作を取り消し\/やり直したり、指定した文字を検索したりできます。 通常、`RichTextBox` コントロールは、Microsoft Word などのワード プロセッシング アプリケーションと同様のテキスト操作および表示機能を提供します。 コントロールと同様に、`RichTextBox` コントロールはスクロール バーを表示できます。ただし、 コントロールとは異なり、既定で垂直スクロール バーと水平スクロール バーの両方が表示され、追加のスクロール バー設定もあります。 + +## このセクションの内容 + [RichTextBox コントロールの概要](../../../../docs/framework/winforms/controls/richtextbox-control-overview-windows-forms.md) + `RichTextBox` コントロールの全般的な概念を説明します。このコントロールにより、ユーザーは書式オプションを使用してテキストを入力、表示、および操作できます。 + + [方法 : Windows フォームの RichTextBox コントロールにおける書式属性の変更を確認する](../../../../docs/framework/winforms/controls/determine-when-formatting-attributes-change-wf-richtextbox-control.md) + `RichTextBox` コントロールにおいて、フォントや段落書式の変更を追跡する方法を説明します。 + + [方法 : Windows フォームの RichTextBox コントロールにスクロール バーを表示する](../../../../docs/framework/winforms/controls/how-to-display-scroll-bars-in-the-windows-forms-richtextbox-control.md) + `RichTextBox` コントロールのスクロール バーに関するさまざまな選択肢について説明します。 + + [方法 : Windows フォームの RichTextBox コントロールを使用して Web スタイルのリンクを表示する](../../../../docs/framework/winforms/controls/how-to-display-web-style-links-with-the-windows-forms-richtextbox-control.md) + `RichTextBox` コントロールから Web サイトにリンクする方法について説明します。 + + [方法 : Windows フォームの RichTextBox コントロールにおけるドラッグ アンド ドロップ操作を有効にする](../../../../docs/framework/winforms/controls/enable-drag-and-drop-operations-with-wf-richtextbox-control.md) + `RichTextBox` コントロールにデータをドラッグする方法について説明します。 + + [方法 : Windows フォームの RichTextBox コントロールにファイルを読み込む](../../../../docs/framework/winforms/controls/how-to-load-files-into-the-windows-forms-richtextbox-control.md) + `RichTextBox` コントロールに既存のファイルを読み込む方法について説明します。 + + [方法 : Windows フォームの RichTextBox コントロールを使用してファイルを保存する](../../../../docs/framework/winforms/controls/how-to-save-files-with-the-windows-forms-richtextbox-control.md) + `RichTextBox` コントロールの内容をファイルに保存する方法について説明します。 + + [方法 : Windows フォームの RichTextBox コントロールのフォント属性を設定する](../../../../docs/framework/winforms/controls/how-to-set-font-attributes-for-the-windows-forms-richtextbox-control.md) + `RichTextBox` コントロール内のテキストのフォント ファミリ、サイズ、スタイル、および色を設定する方法について説明します。 + + [方法 : Windows フォームの RichTextBox コントロールを使用してインデント、ぶら下げインデント、および箇条書き段落を設定する](../../../../docs/framework/winforms/controls/set-indents-hanging-indents-bulleted-paragraphs-with-wf-richtextbox.md) + `RichTextBox` コントロール内の段落に書式を設定する方法について説明します。 + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 + + [TextBox コントロール](../../../../docs/framework/winforms/controls/textbox-control-windows-forms.md) + コントロールの全般的な概念を説明します。このコントロールにより、ユーザーは複数の行を入力して編集できます。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/run-procedures-at-set-intervals-with-wf-timer-component.md b/docs/framework/winforms/controls/run-procedures-at-set-intervals-with-wf-timer-component.md new file mode 100644 index 00000000000..f1a13c0676c --- /dev/null +++ b/docs/framework/winforms/controls/run-procedures-at-set-intervals-with-wf-timer-component.md @@ -0,0 +1,258 @@ +--- +title: "方法 : Windows フォームの Timer コンポーネントを使用して一定間隔でプロシージャを実行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "例 [Windows フォーム], タイマー" + - "初期化, Timer コンポーネント" + - "プロシージャ, 特定の時間間隔" + - "Timer コンポーネント [Windows フォーム], 初期化" + - "タイマー, イベントの間隔" + - "タイマー, Windows ベースの" +ms.assetid: 8025247a-2de4-4d86-b8ab-a8cb8aeab2ea +caps.latest.revision: 20 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 20 +--- +# 方法 : Windows フォームの Timer コンポーネントを使用して一定間隔でプロシージャを実行する +ループが完了するまで特定の間隔で実行するプロシージャや、設定した間隔が経過した時点で実行するプロシージャを作成することがあるかもしれません。 コンポーネントにより、このようなプロシージャが可能になります。 + + このコンポーネントは、Windows フォームの環境用に設計されています。 サーバー環境に適したタイマーが必要な場合は、「[Introduction to Server\-Based Timers](http://msdn.microsoft.com/ja-jp/adc0bc0a-a519-4812-bafc-fb9d1a5801fc)」を参照してください。 + +> [!NOTE] +> コンポーネントを使用する場合に、いくつかの制限があります。 詳細については、「[Windows フォームの Timer コンポーネントの Interval プロパティの制限](../../../../docs/framework/winforms/controls/limitations-of-the-timer-component-interval-property.md)」を参照してください。 + +### Timer コンポーネントで設定された間隔でプロシージャを実行するには + +1. をフォームに追加します。 プログラムでこれを実行する方法については、次の例のセクションを参照してください。 [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] も、コンポーネントをフォームに追加する方法をサポートします。 「[方法 : ユーザー インターフェイスを持たないコントロールを Windows フォームに追加する](http://msdn.microsoft.com/library/becyw7bz\(v=vs.110\))」も参照してください。 + +2. タイマーの プロパティ \(ミリ秒\) を設定します。 このプロパティは、プロシージャを再度実行する前に、経過する時間の長さを決定します。 + + > [!NOTE] + > タイマー イベントの発生頻度が高いと、イベントに対応するときに使用されるプロセッサ時間も長くなります。 これにより、全体的なパフォーマンスが低下します。 必要な間隔よりも小さな値を設定しないでください。 + +3. イベント ハンドラーで適切なコードを作成します。 このイベントで記述したコードは、 プロパティで指定した間隔で実行されます。 + +4. プロパティを `true` に設定して、タイマーを開始します。 イベントの発生が開始され、プロシージャが指定された間隔で実行されます。 + +5. 適切なタイミングで プロパティを `false` に設定し、プロシージャがもう一度実行されることがないようにします。 間隔を `0` に設定すると、タイマーの停止が発生しません。 + +## 使用例 + この最初のコード例は、1 秒単位で 1 日の時間を追跡します。 フォーム上で 、および コンポーネントを使用します。 プロパティが 1000 \(1 秒に等しい\) に設定されます。 イベントで、ラベルのキャプションが現在の時刻に設定されます。 ボタンをクリックしたときに、 プロパティが `false` に設定されると、タイマーがラベルのキャプションを更新しなくなります。 次のコード例は、`Button1` という名前の コントロール、`Timer1` という名前の コントロール、および `Label1` という名前の コントロールがあるフォームを持っている必要があります。 + +```vb +Private Sub InitializeTimer() + ' Run this procedure in an appropriate event. + ' Set to 1 second. + Timer1.Interval = 1000 + ' Enable timer. + Timer1.Enabled = True + Button1.Text = "Enabled" +End Sub +x +Private Sub Timer1_Tick(ByVal Sender As Object, ByVal e As EventArgs) Handles Timer1.Tick +' Set the caption to the current time. + Label1.Text = DateTime.Now +End Sub + +Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click + If Button1.Text = "Stop" Then + Button1.Text = "Start" + Timer1.Enabled = False + Else + Button1.Text = "Stop" + Timer1.Enabled = True + End If +End Sub + +``` + +```csharp +private void InitializeTimer() +{ + // Call this procedure when the application starts. + // Set to 1 second. + Timer1.Interval = 1000; + Timer1.Tick += new EventHandler(Timer1_Tick); + + // Enable timer. + Timer1.Enabled = true; + + Button1.Text = "Stop"; + Button1.Click += new EventHandler(Button1_Click); +} + +private void Timer1_Tick(object Sender, EventArgs e) +{ + // Set the caption to the current time. + Label1.Text = DateTime.Now.ToString(); +} + +private void Button1_Click(object sender, EventArgs e) +{ + if ( Button1.Text == "Stop" ) + { + Button1.Text = "Start"; + Timer1.Enabled = false; + } + else + { + Button1.Text = "Stop"; + Timer1.Enabled = true; + } +} + +``` + +```cpp +private: + void InitializeTimer() + { + // Run this procedure in an appropriate event. + // Set to 1 second. + timer1->Interval = 1000; + // Enable timer. + timer1->Enabled = true; + this->timer1->Tick += gcnew System::EventHandler(this, + &Form1::timer1_Tick); + + button1->Text = S"Stop"; + this->button1->Click += gcnew System::EventHandler(this, + &Form1::button1_Click); + } + + void timer1_Tick(System::Object ^ sender, + System::EventArgs ^ e) + { + // Set the caption to the current time. + label1->Text = DateTime::Now.ToString(); + } + + void button1_Click(System::Object ^ sender, + System::EventArgs ^ e) + { + if ( button1->Text == "Stop" ) + { + button1->Text = "Start"; + timer1->Enabled = false; + } + else + { + button1->Text = "Stop"; + timer1->Enabled = true; + } + } + +``` + +## 使用例 + この 2 つ目のコード例は、ループが終了するまでにプロシージャを 600 ミリ秒ごとに実行します。 次のコード例は、`Button1` という名前の コントロール、`Timer1` という名前の コントロール、および `Label1` という名前の コントロールがあるフォームを持っている必要があります。 + +```vb +' This variable will be the loop counter. +Private counter As Integer + +Private Sub InitializeTimer() + ' Run this procedure in an appropriate event. + counter = 0 + Timer1.Interval = 600 + Timer1.Enabled = True +End Sub + +Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick + If counter => 10 Then + ' Exit loop code. + Timer1.Enabled = False + counter = 0 + Else + ' Run your procedure here. + ' Increment counter. + counter = counter + 1 + Label1.Text = "Procedures Run: " & counter.ToString + End If +End Sub + +``` + +```csharp +// This variable will be the loop counter. +private int counter; + +private void InitializeTimer() +{ + // Run this procedure in an appropriate event. + counter = 0; + timer1.Interval = 600; + timer1.Enabled = true; + // Hook up timer's tick event handler. + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); +} + +private void timer1_Tick(object sender, System.EventArgs e) +{ + if (counter >= 10) + { + // Exit loop code. + timer1.Enabled = false; + counter = 0; + } + else + { + // Run your procedure here. + // Increment counter. + counter = counter + 1; + label1.Text = "Procedures Run: " + counter.ToString(); + } +} + +``` + +```cpp +private: + int counter; + + void InitializeTimer() + { + // Run this procedure in an appropriate event. + counter = 0; + timer1->Interval = 600; + timer1->Enabled = true; + // Hook up timer's tick event handler. + this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick); + } + + void timer1_Tick(System::Object ^ sender, + System::EventArgs ^ e) + { + if (counter >= 10) + { + // Exit loop code. + timer1->Enabled = false; + counter = 0; + } + else + { + // Run your procedure here. + // Increment counter. + counter = counter + 1; + label1->Text = String::Concat("Procedures Run: ", + counter.ToString()); + } + } +``` + +## 参照 + + [Timer コンポーネント](../../../../docs/framework/winforms/controls/timer-component-windows-forms.md) + [Timer コンポーネントの概要](../../../../docs/framework/winforms/controls/timer-component-overview-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/savefiledialog-component-overview-windows-forms.md b/docs/framework/winforms/controls/savefiledialog-component-overview-windows-forms.md new file mode 100644 index 00000000000..de2cb9e4ddf --- /dev/null +++ b/docs/framework/winforms/controls/savefiledialog-component-overview-windows-forms.md @@ -0,0 +1,38 @@ +--- +title: "SaveFileDialog コンポーネントの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "SaveFileDialog" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "[ファイルの保存] ダイアログ ボックス, 表示" + - "SaveFileDialog コンポーネント, SaveFileDialog の概要" +ms.assetid: be7a625f-46fd-4d06-9985-b613dcbf9bd2 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# SaveFileDialog コンポーネントの概要 (Windows フォーム) +Windows フォームの コンポーネントは、定義済みのダイアログ ボックスです。 このダイアログ ボックスは、Windows で使用される標準の **\[ファイルの保存\]** ダイアログ ボックスと同じダイアログ ボックスです。 このコンポーネントは、 クラスを継承しています。 + +## SaveFileDialog コンポーネントの操作 + このコントロールは、独自のダイアログ ボックスを設定せずにファイルの保存を行うための簡易ソリューションとして使用します。 Windows の標準のダイアログ ボックスを使用して、一般的な基本機能を持つアプリケーションを作成できます。 ただし、 コンポーネントを使用する場合は、独自のファイル保存ロジックを記述する必要があります。 + + 実行時にダイアログ ボックスを表示するには、 メソッドを使用します。 メソッドを使用して、ファイルを読み取り\/書き込みモードで開くことができます。 + + フォームに登録すると、 コンポーネントは Windows フォーム デザイナーの下部のトレイに表示されます。 + +## 参照 + + [SaveFileDialog コンポーネント](../../../../docs/framework/winforms/controls/savefiledialog-component-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/savefiledialog-component-windows-forms.md b/docs/framework/winforms/controls/savefiledialog-component-windows-forms.md new file mode 100644 index 00000000000..f626a731ac1 --- /dev/null +++ b/docs/framework/winforms/controls/savefiledialog-component-windows-forms.md @@ -0,0 +1,46 @@ +--- +title: "SaveFileDialog コンポーネント (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "[ファイルの保存] ダイアログ ボックス" + - "SaveFileDialog コンポーネント" +ms.assetid: 6f5d9321-37d7-4448-ac4c-a33c42b2a766 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# SaveFileDialog コンポーネント (Windows フォーム) +Windows フォームの コンポーネントは、事前構成済みのダイアログ ボックスです。 これは、Windows で使用される標準の \[ファイルを保存\] ダイアログ ボックスと同じです。 これは、 クラスを継承しています。 + +## このセクションの内容 + [SaveFileDialog コンポーネントの概要](../../../../docs/framework/winforms/controls/savefiledialog-component-overview-windows-forms.md) + コンポーネントの全般的な概念を説明します。このコンポーネントにより、ユーザーがファイルを指定した場所に保存するために使用する事前構成済みダイアログを表示できます。 + + [方法 : SaveFileDialog コンポーネントを使用してファイルを保存する](../../../../docs/framework/winforms/controls/how-to-save-files-using-the-savefiledialog-component.md) + コンポーネントのインスタンスを使用して実行時にファイルを保存する方法について説明します。 + +## 関連項目 + クラス + クラスとそのメンバーに関するリファレンス情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 + + [ダイアログ ボックス コントロールおよびコンポーネント](../../../../docs/framework/winforms/controls/dialog-box-controls-and-components-windows-forms.md) + ユーザーがアプリケーションまたはシステムと標準的な対話を実行できるようにする一連のコントロールおよびコンポーネントについて説明します。 + + [Windows フォーム ダイアログ ボックスの重要コード](http://go.microsoft.com/fwlink/?LinkID=102575) + Windows フォーム ダイアログ ボックスのコントロールとコンポーネント、基本的な機能を実行するために必要なコードについて説明します。 \(MSDN オンライン ライブラリの技術記事\) \ No newline at end of file diff --git a/docs/framework/winforms/controls/selected-cells-rows-and-columns-datagridview.md b/docs/framework/winforms/controls/selected-cells-rows-and-columns-datagridview.md new file mode 100644 index 00000000000..607d8a04b59 --- /dev/null +++ b/docs/framework/winforms/controls/selected-cells-rows-and-columns-datagridview.md @@ -0,0 +1,71 @@ +--- +title: "方法 : Windows フォーム DataGridView コントロールの選択されたセル、行、および列を取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "DataGridView コントロール [Windows フォーム], 取得 (選択項目を)" + - "取得 (選択項目を), DataGridView コントロール [Windows フォーム]" + - "選択, DataGridView コントロール [Windows フォーム]" +ms.assetid: d93c4b5b-498e-49bc-982a-2229d61778e4 +caps.latest.revision: 17 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 17 +--- +# 方法 : Windows フォーム DataGridView コントロールの選択されたセル、行、および列を取得する +選択されたセル、行、または列を コントロールから取得するには、それぞれ プロパティ、 プロパティ、または プロパティを使用します。 次の手順では、選択されたセルを取得し、行インデックスと列インデックスを に表示します。 + +### DataGridView コントロールの選択されたセルを取得するには + +- プロパティを使用します。 + + > [!NOTE] + > 多数のセルが表示されないようにするには、 メソッドを使用します。 + + [!code-csharp[System.Windows.Forms.DataGridViewSelectedCollections#10](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSelectedCollections/CS/DataGridViewSelectedCollections.cs#10)] + [!code-vb[System.Windows.Forms.DataGridViewSelectedCollections#10](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSelectedCollections/VB/DataGridViewSelectedCollections.vb#10)] + +### DataGridView コントロールの選択された行を取得するには + +- プロパティを使用します。 ユーザーが行を選択できるようにするには、 プロパティを または に設定する必要があります。 + + [!code-csharp[System.Windows.Forms.DataGridViewSelectedCollections#20](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSelectedCollections/CS/DataGridViewSelectedCollections.cs#20)] + [!code-vb[System.Windows.Forms.DataGridViewSelectedCollections#20](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSelectedCollections/VB/DataGridViewSelectedCollections.vb#20)] + +### DataGridView コントロールの選択された列を取得するには + +- プロパティを使用します。 ユーザーが列を選択できるようにするには、 プロパティを または に設定する必要があります。 + + [!code-csharp[System.Windows.Forms.DataGridViewSelectedCollections#30](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSelectedCollections/CS/DataGridViewSelectedCollections.cs#30)] + [!code-vb[System.Windows.Forms.DataGridViewSelectedCollections#30](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSelectedCollections/VB/DataGridViewSelectedCollections.vb#30)] + +## コードのコンパイル + この例には、次の項目が必要です。 + +- それぞれに イベントのハンドラーが割り当てられた、`selectedCellsButton`、`selectedRowsButton`、および `selectedColumnsButton` という名前の コントロール。 + +- `dataGridView1` という名前の コントロール。 + +- アセンブリ、 アセンブリ、および アセンブリへの参照。 + +## 信頼性の高いプログラミング + ここで説明するコレクションは、多数のセル、行、または列が選択されている場合は効率的に実行されません。 大量のデータを持つコレクションを使用する方法の詳細については、「[Windows フォーム DataGridView コントロールを拡張するための推奨される手順](../../../../docs/framework/winforms/controls/best-practices-for-scaling-the-windows-forms-datagridview-control.md)」を参照してください。 + +## 参照 + + + + + + + [Windows フォーム DataGridView コントロールでの選択およびクリップボードの使用](../../../../docs/framework/winforms/controls/selection-and-clipboard-use-with-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/selection-and-clipboard-use-with-the-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/selection-and-clipboard-use-with-the-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..557557a25e8 --- /dev/null +++ b/docs/framework/winforms/controls/selection-and-clipboard-use-with-the-windows-forms-datagridview-control.md @@ -0,0 +1,65 @@ +--- +title: "Windows フォーム DataGridView コントロールでの選択およびクリップボードの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "セル, 選択 (グリッドの)" + - "クリップボードのトピック, DataGridView コントロール内の" + - "データ グリッド, 選択 (セルを)" + - "DataGridView コントロール [Windows フォーム], クリップボードの使用" + - "DataGridView コントロール [Windows フォーム], 選択 (セルを)" + - "選択, DataGridView コントロール内の" +ms.assetid: 82cffcad-8b30-4897-bddb-c3a79d751b83 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Windows フォーム DataGridView コントロールでの選択およびクリップボードの使用 +`DataGridView` コントロールには、セル、行、および列をユーザーが選択する方法を設定するさまざまなオプションが用意されています。 たとえば、単一選択または複数選択を有効にしたり、ユーザーがセルをクリックした場合に行全体または列全体が選択されるようにしたり、ユーザーがヘッダーをクリックした場合にだけ行全体または列全体が選択されるようにしてセル単位での選択も有効にしたりできます。 選択操作のための独自のユーザー インターフェイスを提供する必要がある場合は、通常の選択操作を無効にし、すべての選択をプログラムで処理できます。 また、選択されている値をクリップボードにコピーできるようにすることもできます。 + +## このセクションの内容 + [Windows フォーム DataGridView コントロールの選択モード](../../../../docs/framework/winforms/controls/selection-modes-in-the-windows-forms-datagridview-control.md) + コントロール内でのユーザーおよびプログラムによる選択のオプションについて説明します。 + + [方法 : Windows フォーム DataGridView コントロールの選択モードを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-selection-mode-of-the-windows-forms-datagridview-control.md) + ユーザーがセルをクリックしたときに単一の行が選択されるようにコントロールを構成する方法について説明します。 + + [方法 : Windows フォーム DataGridView コントロールの選択されたセル、行、および列を取得する](../../../../docs/framework/winforms/controls/selected-cells-rows-and-columns-datagridview.md) + 選択されているセル、行、および列のコレクションを操作する方法について説明します。 + + [方法 : ユーザーが、Windows フォーム DataGridView コントロールからクリップボードに複数のセルをコピーできるようにする](../../../../docs/framework/winforms/controls/enable-users-to-copy-multiple-cells-to-the-clipboard-datagridview.md) + コントロールのクリップボード サポートを有効にする方法について説明します。 + +## 関連項目 + + コントロールの参照ドキュメントを提供します。 + + + プロパティの参照ドキュメントを提供します。 + + + プロパティの参照ドキュメントを提供します。 + + + クラスの参照ドキュメントを提供します。 + + + クラスの参照ドキュメントを提供します。 + + + クラスの参照ドキュメントを提供します。 + +## 参照 + [DataGridView コントロール](../../../../docs/framework/winforms/controls/datagridview-control-windows-forms.md) + [Windows フォーム DataGridView コントロールの既定のキーボード処理とマウス処理](../../../../docs/framework/winforms/controls/default-keyboard-and-mouse-handling-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/selection-modes-in-the-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/selection-modes-in-the-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..406274f0f08 --- /dev/null +++ b/docs/framework/winforms/controls/selection-modes-in-the-windows-forms-datagridview-control.md @@ -0,0 +1,62 @@ +--- +title: "Windows フォーム DataGridView コントロールの選択モード | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "DataGridView コントロール [Windows フォーム], 選択モード" + - "選択, モード (DataGridView コントロール内の)" +ms.assetid: a3ebfd3d-0525-479d-9d96-d9e017289b36 +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# Windows フォーム DataGridView コントロールの選択モード +作成したアプリケーションで実行するアクションを、 コントロール内のユーザーの選択に基づいて決定する必要がある場合があります。 実行するアクションによっては、可能な選択の種類を制限することが必要になります。 たとえば、現在選択されているレコードに関するレポートを印刷できるアプリケーションを作成するとします。 この場合、行内の任意の場所をクリックすると必ず行全体が選択され、一度に 1 行だけ選択できるように コントロールを設定する必要があります。 + + プロパティを次の 列挙値のいずれかに設定すると、許可する選択を指定できます。 + +|DataGridViewSelectionMode の値|Description| +|----------------------------------|-----------------| +||セルをクリックすると、そのセルが選択されます。 行ヘッダーおよび列ヘッダーを使用した選択はできません。| +||セルをクリックすると、そのセルが選択されます。 列ヘッダーをクリックすると、その列全体が選択されます。 列ヘッダーを使用した並べ替えはできません。| +||セルまたは列ヘッダーをクリックすると、その列全体が選択されます。 列ヘッダーを使用した並べ替えはできません。| +||セルまたは行ヘッダーをクリックすると、その行全体が選択されます。| +||既定の選択モードです。 セルをクリックすると、そのセルが選択されます。 行ヘッダーをクリックすると、その行全体が選択されます。| + +> [!NOTE] +> 実行時に選択モードを変更すると、その時点での選択は自動的に解除されます。 + + 既定では、ユーザーは、選択範囲を拡大または変更する際に Ctrl キーまたは Shift キーを押しながらマウスをドラッグすることで、複数の行、列、またはセルを選択できます。また、左上隅のヘッダー セルをクリックすることで、コントロール内のすべてのセルを選択できます。 この動作を無効にするには、 プロパティを `false` に設定します。 + + モードおよび モードでは、ユーザーは、行を選択して Del キーを押すことで、選択した行を削除できます。 ユーザーが行を削除できるのは、現在のセルが編集モードになっておらず、 プロパティが `true` に設定されており、基になるデータ ソースでユーザーによる行の削除がサポートされている場合に限られます。 これらの設定に関係なく、プログラムからは行を削除できます。 + +## プログラムによる選択 + ユーザーによる選択と同様、プログラムによる選択の動作も、現在の選択モードによって制限されます。 コントロール内のセル、行、または列の `Selected` プロパティを設定すると、プログラムから現在の選択を変更できます。 また、選択モードによっては、 メソッドによってコントロール内のすべてのセルを選択することもできます。 選択を解除するには、 メソッドを使用します。 + + プロパティが `true` に設定されている場合は、 の要素の `Selected` プロパティを変更することにより、その要素を選択に追加したり、選択から解除したりできます。 それ以外の場合は、1 つの要素の `Selected` プロパティを `true` に設定すると、他の要素の選択は自動的に解除されます。 + + プロパティの値を変更しても、現在の選択は変更されません。 + + コントロールの 、および の各プロパティから、現在選択されているセル、行、または列のコレクションを取得できます。 コントロール内のすべてのセルが選択されている場合は、これらのプロパティを使用するのは効率的ではありません。 このような場合のパフォーマンス低下を回避するには、先に メソッドを使用します。 また、選択されているセル、行、または列の数を調べる際にも、これらのコレクションを使用することは非効率的である場合があります。 代わりに、、または の各メソッドを使用し、 の値を渡してください。 + +> [!TIP] +> 選択されているセルをプログラムで使用する方法を示すコード例は、 クラスの概要にあります。 + +## 参照 + + + + + [Windows フォーム DataGridView コントロールでの選択およびクリップボードの使用](../../../../docs/framework/winforms/controls/selection-and-clipboard-use-with-the-windows-forms-datagridview-control.md) + [方法 : Windows フォーム DataGridView コントロールの選択モードを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-selection-mode-of-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/serializing-collections-designerserializationvisibilityattribute.md b/docs/framework/winforms/controls/serializing-collections-designerserializationvisibilityattribute.md new file mode 100644 index 00000000000..293a7f58ce5 --- /dev/null +++ b/docs/framework/winforms/controls/serializing-collections-designerserializationvisibilityattribute.md @@ -0,0 +1,159 @@ +--- +title: "チュートリアル : DesignerSerializationVisibilityAttribute を使用した、標準データ型のコレクションのシリアル化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コレクション, シリアル化" + - "コレクション, 標準の型" + - "DesiginerSerializationVisibilityAttribute クラス" + - "シリアル化, コレクション" + - "標準の型, コレクション" +ms.assetid: 020c9df4-fdc5-4dae-815a-963ecae5668c +caps.latest.revision: 19 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 19 +--- +# チュートリアル : DesignerSerializationVisibilityAttribute を使用した、標準データ型のコレクションのシリアル化 +カスタム コントロールは、コレクションをプロパティとして公開することがあります。 このチュートリアルでは、 クラスを使用して、デザイン時にコレクションのシリアル化を制御する方法について説明します。 コレクション プロパティに 値を適用すると、プロパティが確実にシリアル化されます。 + + このトピックのコードを単一のリストとしてコピーするには、「[How to: Serialize Collections of Standard Types with the DesignerSerializationVisibilityAttribute](../Topic/How%20to:%20Serialize%20Collections%20of%20Standard%20Types%20with%20the%20DesignerSerializationVisibilityAttribute.md)」を参照してください。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## 必須コンポーネント + このチュートリアルを完了するための要件は次のとおりです。 + +- Visual Studio がインストールされているコンピューターで、Windows フォーム アプリケーション プロジェクトを作成および実行するための十分なアクセス許可が付与されていること。 + +## シリアル化可能なコレクションを持つコントロールの作成 + 最初に、シリアル化可能なコレクションをプロパティとして持つコントロールを作成します。 このコレクションの内容は、**コレクション エディター**を使用して編集できます。コレクション エディターには、**\[プロパティ\]** ウィンドウがからアクセスできます。 + +#### シリアル化可能なコレクションを持つコントロールを作成するには + +1. `SerializationDemoControlLib` という名前の Windows コントロール ライブラリ プロジェクトを作成します。 詳細については、「[Windows Control Library Template](http://msdn.microsoft.com/ja-jp/722f4e2d-1310-4ed5-8f33-593337ab66b4)」を参照してください。 + +2. `UserControl1` の名前を `SerializationDemoControl` に変更します。 詳細については、「[How to: Rename Identifiers](http://msdn.microsoft.com/ja-jp/2430f732-2b70-4516-8cf6-a7bb71cc9724)」を参照してください。 + +3. **\[プロパティ\]** ウィンドウで、 プロパティの値を `10` に設定します。 + +4. コントロールを `SerializationDemoControl` に配置します。 + +5. コントロールを選択します。 **\[プロパティ\]** ウィンドウで、次のプロパティを設定します。 + + |プロパティ|変更後の値| + |-----------|-----------| + |**Multiline**|`true`| + |**Dock**|| + |**ScrollBars**|| + |**ReadOnly**|`true`| + +6. **コード エディター**を使用して、`stringsValue` という名前の文字列配列フィールドを `SerializationDemoControl` で宣言します。 + + [!code-cpp[System.ComponentModel.DesignerSerializationVisibilityAttribute#4](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.DesignerSerializationVisibilityAttribute/cpp/form1.cpp#4)] + [!code-csharp[System.ComponentModel.DesignerSerializationVisibilityAttribute#4](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.DesignerSerializationVisibilityAttribute/CS/form1.cs#4)] + [!code-vb[System.ComponentModel.DesignerSerializationVisibilityAttribute#4](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.DesignerSerializationVisibilityAttribute/VB/form1.vb#4)] + +7. `SerializationDemoControl` の `Strings` プロパティを定義します。 + +> [!NOTE] +> 値を使用して、コレクションのシリアル化を有効にします。 + + [!code-cpp[System.ComponentModel.DesignerSerializationVisibilityAttribute#5](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.DesignerSerializationVisibilityAttribute/cpp/form1.cpp#5)] + [!code-csharp[System.ComponentModel.DesignerSerializationVisibilityAttribute#5](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.DesignerSerializationVisibilityAttribute/CS/form1.cs#5)] + [!code-vb[System.ComponentModel.DesignerSerializationVisibilityAttribute#5](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.DesignerSerializationVisibilityAttribute/VB/form1.vb#5)] + +1. F5 キーを押してプロジェクトをビルドし、**ユーザー コントロール テスト コンテナー**でコントロールを実行します。 + +2. **ユーザー コントロール テスト コンテナー**の で、`Strings` プロパティを探します。 `Strings` プロパティをクリックし、省略記号ボタン \(![VisualStudioEllipsesButton スクリーンショット](../../../../docs/framework/winforms/media/vbellipsesbutton.png "vbEllipsesButton")\) をクリックして、**文字列コレクション エディター**を開きます。 + +3. **文字列コレクション エディター**にいくつかの文字列を入力します。 各文字列の末尾で Enter キーを押して区切ります。 文字列を入力したら、**\[OK\]** をクリックします。 + +> [!NOTE] +> 入力した文字列が `SerializationDemoControl` の に表示されます。 + +## コレクション プロパティのシリアル化 + コントロールのシリアル化動作をテストするには、コントロールをフォームに配置し、**コレクション エディター**を使用してコレクションの内容を変更します。 シリアル化されたコレクションの状態は、**Windows フォーム デザイナー**によるコードの出力先となる特別なデザイナー ファイルで確認できます。 + +#### コレクションをシリアル化するには + +1. Windows アプリケーション プロジェクトをソリューションに追加します。 プロジェクトに `SerializationDemoControlTest` という名前を付けます。 + +2. **\[ツールボックス\]** で、**\[SerializationDemoControlLib コンポーネント\]** という名前のタブを見つけます。 このタブで、`SerializationDemoControl` を探します。 詳細については、「[チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定](../../../../docs/framework/winforms/controls/walkthrough-automatically-populating-the-toolbox-with-custom-components.md)」を参照してください。 + +3. `SerializationDemoControl` をフォームに配置します。 + +4. **\[プロパティ\]** ウィンドウで、`Strings` プロパティを見つけます。 `Strings` プロパティをクリックし、省略記号ボタン \(![VisualStudioEllipsesButton スクリーンショット](../../../../docs/framework/winforms/media/vbellipsesbutton.png "vbEllipsesButton")\) をクリックして、**文字列コレクション エディター**を開きます。 + +5. **文字列コレクション エディター**にいくつかの文字列を入力します。 各文字列の末尾で Enter キーを押して区切ります。 文字列を入力したら、**\[OK\]** をクリックします。 + +> [!NOTE] +> 入力した文字列が `SerializationDemoControl` の に表示されます。 + +1. **ソリューション エクスプローラー**の **\[すべてのファイルを表示\]** をクリックします。 + +2. **\[Form1\]** ノードを開きます。 このノードの下に、**Form1.Designer.cs** または **Form1.Designer.vb** というファイルが表示されます。 **Windows フォーム デザイナー**は、このファイルにフォームと子コントロールのデザイン時の状態を表すコードを出力します。 **コード エディター**でこのファイルを開きます。 + +3. **Windows Form Designer generated code** という領域を開き、**serializationDemoControl1** というラベルが付けられたセクションを見つけます。 このラベルの下が、コントロールのシリアル化状態を表すコードです。 手順 5. で入力した文字列が、`Strings` プロパティへの代入として表示されます。 たとえば、文字列として "red"、"orange"、および "yellow" を入力した場合には、次のようなコードが表示されます。 + +4. \[Visual Basic\] + + ``` + Me.serializationDemoControl1.Strings = New String() {"red", "orange", "yellow"} + ``` + +5. \[C\#\] + + ``` + this.serializationDemoControl1.Strings = new string[] { + "red", + "orange", + "yellow"}; + ``` + +6. **コード エディター**で、`Strings` プロパティの の値を に変更します。 + +7. \[Visual Basic\] + + ``` + _ + ``` + +8. \[C\#\] + + ``` + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + ``` + +9. ソリューションを再度ビルドし、手順 4. から 8. を繰り返します。 + +> [!NOTE] +> この場合、**Windows フォーム デザイナー**は、`Strings` プロパティへの代入を出力しません。 + +## 次の手順 + 標準データ型のコレクションをシリアル化する方法がわかったら、カスタム コントロールをデザイン時環境により深く統合することを検討してください。 以下のトピックでは、カスタム コントロールのデザイン時の統合を強化する方法について説明しています。 + +- [Design\-Time Architecture](../Topic/Design-Time%20Architecture.md) + +- [Windows フォーム コントロールの属性](../../../../docs/framework/winforms/controls/attributes-in-windows-forms-controls.md) + +- [Designer Serialization Overview](../Topic/Designer%20Serialization%20Overview.md) + +- [チュートリアル : Visual Studio のデザイン時機能を活用した Windows フォーム コントロールの作成](../../../../docs/framework/winforms/controls/creating-a-wf-control-design-time-features.md) + +## 参照 + + [Designer Serialization Overview](../Topic/Designer%20Serialization%20Overview.md) + [How to: Serialize Collections of Standard Types with the DesignerSerializationVisibilityAttribute](../Topic/How%20to:%20Serialize%20Collections%20of%20Standard%20Types%20with%20the%20DesignerSerializationVisibilityAttribute.md) + [チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定](../../../../docs/framework/winforms/controls/walkthrough-automatically-populating-the-toolbox-with-custom-components.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/set-alternating-row-styles-for-the-datagrid-using-the-designer.md b/docs/framework/winforms/controls/set-alternating-row-styles-for-the-datagrid-using-the-designer.md new file mode 100644 index 00000000000..20260cd4c7f --- /dev/null +++ b/docs/framework/winforms/controls/set-alternating-row-styles-for-the-datagrid-using-the-designer.md @@ -0,0 +1,56 @@ +--- +title: "方法 : デザイナーを使用して Windows フォーム DataGridView コントロールに交互の行のスタイルを設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ [Windows フォーム], 表示" + - "DataGridView コントロール [Windows フォーム], 行スタイル (交互の行)" + - "帳簿のような形式" + - "行, 交互の" + - "Windows フォーム, 行" +ms.assetid: 02373442-bf94-4470-9f8a-e44c4a9d5b88 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : デザイナーを使用して Windows フォーム DataGridView コントロールに交互の行のスタイルを設定する +多くの場合、表形式データは、交互の行が異なる背景色を持つ帳簿のような形式で示されます。 この形式では、行とセルの位置関係を見極めやすく、列数が多く幅の広い表では特に便利です。 + + コントロールを使用すると、交互の行に対して完全なスタイル情報を指定できます。 このコントロールでは、背景色だけでなく前景色やフォントなどのスタイル特性を使用して、交互の行を区別化できます。 詳細については、「[Windows フォーム DataGridView コントロールでのセルのスタイル](../../../../docs/framework/winforms/controls/cell-styles-in-the-windows-forms-datagridview-control.md)」を参照してください。 + + 次の手順では、 コントロールを含むフォームを持つ **Windows アプリケーション** プロジェクトが必要です。 このプロジェクトの設定の詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」および「[方法 : Windows フォームにコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-controls-to-windows-forms.md)」を参照してください。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +### 交互の行のスタイルの定義 + +1. デザイナーで コントロールを選択します。 + +2. **\[プロパティ\]** ウィンドウで、 プロパティの横にある省略記号ボタン \(![VisualStudioEllipsesButton スクリーンショット](../../../../docs/framework/winforms/media/vbellipsesbutton.png "vbEllipsesButton")\) をクリックします。 + +3. **\[CellStyle ビルダー\]** ダイアログ ボックスで、プロパティを設定してスタイルを定義し、**プレビュー** ペインを使用して選択内容を確定します。 指定するスタイルは、コントロールに表示される 2 番目の行以降、1 行おきに適用されます。 + +4. 残りの行のスタイルを定義するには、 プロパティを使用して手順 2. と手順 3. を繰り返します。 + + > [!NOTE] + > セルは複数のプロパティから継承したスタイルを使用して表示されます。 スタイルの継承の詳細については、「[Windows フォーム DataGridView コントロールでのセルのスタイル](../../../../docs/framework/winforms/controls/cell-styles-in-the-windows-forms-datagridview-control.md)」を参照してください。 + +## 参照 + + [Windows フォーム DataGridView コントロールでのセルのスタイル](../../../../docs/framework/winforms/controls/cell-styles-in-the-windows-forms-datagridview-control.md) + [Windows フォームの DataGridView コントロールの基本的な書式設定およびスタイル設定](../../../../docs/framework/winforms/controls/basic-formatting-and-styling-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールでのデザイナーの使用](../../../../docs/framework/winforms/controls/using-the-designer-with-the-windows-forms-datagridview-control.md) + [How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa) + [方法 : Windows フォームにコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-controls-to-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/set-and-return-numeric-values-with-wf-numericupdown-control.md b/docs/framework/winforms/controls/set-and-return-numeric-values-with-wf-numericupdown-control.md new file mode 100644 index 00000000000..64d838e2bb0 --- /dev/null +++ b/docs/framework/winforms/controls/set-and-return-numeric-values-with-wf-numericupdown-control.md @@ -0,0 +1,110 @@ +--- +title: "方法 : Windows フォームの NumericUpDown コントロールを使用して数値を設定および取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "数値, Windows フォーム" + - "NumericUpDown コントロール [Windows フォーム], 設定と取得 (値の)" + - "Windows フォーム コントロール, NumericUpDown" + - "Windows フォーム, 数値" +ms.assetid: 5bd8f8cd-4c12-49ea-9cc3-2a647d064689 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : Windows フォームの NumericUpDown コントロールを使用して数値を設定および取得する +Windows フォームの コントロールの数値は、 プロパティによって決定されます。 他のプロパティと同様に、このコントロールの値に対する条件テストを記述できます。 プロパティを設定した後は、プロパティを操作するコードを記述して値を直接調整するか、または、 メソッドおよび メソッドを呼び出すことができます。 + +### 数値を設定するには + +1. コードまたは \[プロパティ\] ウィンドウで、 プロパティに値を割り当てます。 + + ```vb + NumericUpDown1.Value = 55 + + ``` + + ```csharp + numericUpDown1.Value = 55; + + ``` + + ```cpp + numericUpDown1->Value = 55; + ``` + + または + +2. メソッドまたは メソッドを呼び出して、 プロパティに指定された量だけ値を増加または減少させます。 + + ```vb + NumericUpDown1.UpButton() + + ``` + + ```csharp + numericUpDown1.UpButton(); + + ``` + + ```cpp + numericUpDown1->UpButton(); + ``` + +### 数値を取得するには + +- コードで プロパティにアクセスします。 + + ```vb + If NumericUpDown1.Value >= 65 Then + MessageBox.Show("Age is: " & NumericUpDown1.Value.ToString) + Else + MessageBox.Show("The customer is ineligible for a senior citizen discount.") + End If + + ``` + + ```csharp + if(numericUpDown1.Value >= 65) + { + MessageBox.Show("Age is: " + numericUpDown1.Value.ToString()); + } + else + { + MessageBox.Show("The customer is ineligible for a senior citizen discount."); + } + + ``` + + ```cpp + if(numericUpDown1->Value >= 65) + { + MessageBox::Show(String::Concat("Age is: ", + numericUpDown1->Value.ToString())); + } + else + { + MessageBox::Show + ("The customer is ineligible for a senior citizen discount."); + } + ``` + +## 参照 + + + + + + [NumericUpDown コントロール](../../../../docs/framework/winforms/controls/numericupdown-control-windows-forms.md) + [NumericUpDown コントロールの概要](../../../../docs/framework/winforms/controls/numericupdown-control-overview-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/set-indents-hanging-indents-bulleted-paragraphs-with-wf-richtextbox.md b/docs/framework/winforms/controls/set-indents-hanging-indents-bulleted-paragraphs-with-wf-richtextbox.md new file mode 100644 index 00000000000..a54b323d1d9 --- /dev/null +++ b/docs/framework/winforms/controls/set-indents-hanging-indents-bulleted-paragraphs-with-wf-richtextbox.md @@ -0,0 +1,83 @@ +--- +title: "方法 : Windows フォームの RichTextBox コントロールを使用してインデント、ぶら下げインデント、および箇条書き段落を設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - ".rtf ファイル, 書式指定 (RichTextBox コントロールで)" + - "例 [Windows フォーム], テキスト ボックス" + - "RichTextBox コントロール [Windows フォーム], 設定 (インデントと箇条書きを)" + - "RTF ファイル, 書式指定 (RichTextBox コントロールで)" + - "テキスト ボックス, 箇条書き" + - "テキスト ボックス, 設定 (インデントを)" +ms.assetid: abfb40e6-5642-4691-8ec1-9d9ae91688dc +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 方法 : Windows フォームの RichTextBox コントロールを使用してインデント、ぶら下げインデント、および箇条書き段落を設定する +Windows フォームの コントロールには、表示するテキストの書式を設定する数多くのオプションがあります。 プロパティを設定することにより、選択した段落を箇条書きとして設定できます。 また、、および の各プロパティを使用して、コントロールの左端または右端、およびテキストの他の行の左端を基準にして、段落のインデントを設定できます。 + +### 段落を箇条書きに設定するには + +1. プロパティを `true` に設定します。 + + ```vb + RichTextBox1.SelectionBullet = True + + ``` + + ```csharp + richTextBox1.SelectionBullet = true; + + ``` + + ```cpp + richTextBox1->SelectionBullet = true; + ``` + +### 段落にインデントを設定するには + +1. プロパティに、コントロールの左端とテキストの左端の間のピクセル数を示す整数を設定します。 + +2. プロパティに、段落内のテキストの 1 行目の左端と同じ段落の 2 行目以降の左端の間のピクセル数を示す整数を設定します。 プロパティの値は、1 行目の下で折り返されている段落の行にだけ適用されます。 + +3. プロパティに、コントロールの右端とテキストの右端の間のピクセル数を示す整数を設定します。 + + ```vb + RichTextBox1.SelectionIndent = 8 + RichTextBox1.SelectionHangingIndent = 3 + RichTextBox1.SelectionRightIndent = 12 + + ``` + + ```csharp + richTextBox1.SelectionIndent = 8; + richTextBox1.SelectionHangingIndent = 3; + richTextBox1.SelectionRightIndent = 12; + + ``` + + ```cpp + richTextBox1->SelectionIndent = 8; + richTextBox1->SelectionHangingIndent = 3; + richTextBox1->SelectionRightIndent = 12; + ``` + + > [!NOTE] + > これらのプロパティはすべて、選択したテキストを含む段落に適用されます。または、現在のカーソル位置から入力されるテキストに適用されます。 たとえば、ユーザーが段落内の 1 語を選択してインデントを調整すると、新しい設定はその語を含む段落全体に適用され、さらに、選択された段落の後に入力されるすべての段落にも適用されます。 テキストをプログラムで選択する方法については、「[TextBoxBase.Select メソッド](frlrfSystemWindowsFormsTextBoxBaseClassSelectTopic)」を参照してください。 + +## 参照 + + [RichTextBox コントロール](../../../../docs/framework/winforms/controls/richtextbox-control-windows-forms.md) + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/set-the-sort-modes-for-columns-wf-datagridview-control.md b/docs/framework/winforms/controls/set-the-sort-modes-for-columns-wf-datagridview-control.md new file mode 100644 index 00000000000..a7133e4d030 --- /dev/null +++ b/docs/framework/winforms/controls/set-the-sort-modes-for-columns-wf-datagridview-control.md @@ -0,0 +1,51 @@ +--- +title: "方法 : Windows フォーム DataGridView コントロール内の列の並べ替えモードを設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ グリッド, 並べ替え (データの)" + - "DataGridView コントロール [Windows フォーム], 並べ替えモード" + - "並べ替え, データ グリッド" +ms.assetid: 57dfed60-a608-40d5-86f9-d65686ffb325 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : Windows フォーム DataGridView コントロール内の列の並べ替えモードを設定する + コントロールでは、テキスト ボックスの列は既定で自動的に並べ替えられますが、その他のタイプの列は自動的には並べ替えられません。 これらの既定値をオーバーライドする必要が生じることがあります。 たとえば、テキスト、数値、または列挙型のセル値の代わりにイメージを表示できます。 イメージは並べ替えることができませんが、イメージが表す基になる値は並べ替えることができます。 + + コントロールでは、列の プロパティ値によって、その列の並べ替え動作が決定されます。 + + 「[方法 : Windows フォーム DataGridView コントロールのデータの書式設定をカスタマイズする](../../../../docs/framework/winforms/controls/how-to-customize-data-formatting-in-the-windows-forms-datagridview-control.md)」の `Priority` 列の処理方法を次の手順に示します。 この列はイメージ列であり、既定では並べ替えられません。 ただし、実際には文字列であるセル値を含むため、自動的に並べ替えることができます。 + +### 列に対して並べ替えモードを設定するには + +- プロパティを設定します。 + + [!code-csharp[System.Windows.Forms.DataGridViewMisc#066](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/CS/datagridviewmisc.cs#066)] + [!code-vb[System.Windows.Forms.DataGridViewMisc#066](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/VB/datagridviewmisc.vb#066)] + +## コードのコンパイル + この例には、次の項目が必要です。 + +- `Priority` という名前の列を含む `dataGridView1` という名前の コントロール。 + +- アセンブリおよび アセンブリへの参照。 + +## 参照 + + + [Windows フォームの DataGridView コントロールでのデータの並べ替え](../../../../docs/framework/winforms/controls/sorting-data-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロール内の列の並べ替えモード](../../../../docs/framework/winforms/controls/column-sort-modes-in-the-windows-forms-datagridview-control.md) + [方法 : Windows フォーム DataGridView コントロールの並べ替え機能をカスタマイズする](../../../../docs/framework/winforms/controls/how-to-customize-sorting-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/sizing-options-in-the-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/sizing-options-in-the-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..b0e40e974e4 --- /dev/null +++ b/docs/framework/winforms/controls/sizing-options-in-the-windows-forms-datagridview-control.md @@ -0,0 +1,168 @@ +--- +title: "Windows フォーム DataGridView コントロールのサイズ変更オプション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ グリッド, 列のサイズ変更" + - "データ グリッド, 行のサイズ変更" + - "データ グリッド, サイズ変更オプション" + - "DataGridView コントロール [Windows フォーム], 列のサイズ変更" + - "DataGridView コントロール [Windows フォーム], 行のサイズ変更" + - "DataGridView コントロール [Windows フォーム], サイズ変更オプション" +ms.assetid: a5620a9c-0d06-41e3-8934-c25ddb16c9e6 +caps.latest.revision: 29 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 29 +--- +# Windows フォーム DataGridView コントロールのサイズ変更オプション + の行、列、およびヘッダーのサイズは、さまざまな要因によって変更されることがあります。 次の表にその要因を示します。 + +|要因|Description| +|--------|-----------------| +|ユーザーによるサイズ変更|ユーザーは、行、列、またはヘッダーの区分線をドラッグまたはダブルクリックすることで、サイズを調整できます。| +|コントロールのサイズ変更|列フィル モードでは、コントロールが親フォームにドッキングしたり、ユーザーがフォームのサイズを変更したりすることでコントロールの幅が変わると、列幅も変更されます。| +|セルの値の変更|内容に基づいて自動的にサイズ変更するモードでは、新しい表示値に合わせてサイズが変更されます。| +|メソッドの呼び出し|プログラムによって内容に基づくサイズ変更を行う場合、メソッド呼び出し時のセルの値に合わせてサイズが調整されます。| +|プロパティの設定|高さと幅に特定の値を設定することもできます。| + + 既定では、ユーザーによるサイズ変更は有効、自動サイズ変更は無効になっており、列幅よりも幅が大きいセル値は欠けた状態で表示されます。 + + 次の表に、既定の動作を調整する場合や、特定の目的に合わせて各サイズ変更オプションを使用する場合のシナリオを示します。 + +|シナリオ|実装| +|----------|--------| +|列フィル モードを使用して、水平スクロール バーが表示されないようにコントロールの幅全体に比較的少数の列をすべて表示し、同程度のサイズのデータを表示する場合。| プロパティを に設定します。| +|列フィル モードを使用して、さまざまなサイズの表示値を表示する場合。| プロパティを に設定します。 列の プロパティを設定するか、コントロールにデータが入力された後でコントロールの メソッドを呼び出して、相対的な列幅を初期化します。| +|列フィル モードを使用して、さまざまな重要度の値を表示する場合。| プロパティを に設定します。 データの一部を常に表示する必要がある列の に大きい値を設定するか、特定の列にフィル モード以外のサイズ変更オプションを使用します。| +|列フィル モードを使用して、コントロールの背景色が表示されないようにする場合。|最終列の プロパティを に設定し、それ以外の列には他のサイズ変更オプションを使用します。 他の列が使用可能な領域を大量に使用している場合、最終列の プロパティを設定します。| +|アイコンや ID などの固定幅の列を表示する場合。|その列の に、 に設定します。 プロパティを設定するか、コントロールにデータが入力された後でコントロールの メソッドを呼び出して、列の幅を初期化します。| +|セルの内容が変更されるたびに、表示が欠けず、スペースが最も有効に使用されるように、サイズを自動的に調整する場合。|自動サイズ変更のプロパティに、内容に基づくサイズ変更モードを表す値を設定します。 大量のデータを処理する場合にパフォーマンス低下を避けるには、表示されている行のみを計算するサイズ変更モードを使用します。| +|多数の行を処理する際のパフォーマンス低下を避けるために、表示されている行の値に合わせてサイズを調整する場合。|自動サイズ変更またはプログラムによるサイズ変更を指定する、適切なサイズ変更モード列挙値を使用します。 スクロール操作で新しく表示された行の値に合わせてサイズを調整するには、 イベント ハンドラーでサイズ変更メソッドを呼び出します。 ユーザーのダブルクリックによるサイズ変更を、表示されている行の値のみに合わせて新しいサイズが決定されるようにカスタマイズするには、 イベント ハンドラーまたは イベント ハンドラーでサイズ変更メソッドを呼び出します。| +|パフォーマンス低下を避けるため、またはユーザーによるサイズ変更を有効にするために、セルの内容に合わせたサイズ調整を特定の場合に限定する場合。|イベント ハンドラーで、内容に基づくサイズ変更のメソッドを呼び出します。 たとえば、 イベントを使用して、バインディング後にサイズを初期化し、 を処理したり、 イベントを使用して、ユーザーによる編集やバインドされたデータ ソースの変更に対応してサイズを調整したりします。| +|複数行にわたる内容を持つセルが含まれる行の高さを調整する場合。|列幅を段落テキストの表示に適切なサイズにし、行の高さを内容に基づく自動サイズ変更またはプログラムによるサイズ変更を使用して調整します。 また、複数行の内容を含むセルは、セル スタイル に値 を使用して表示します。

通常は、行の高さを調整する前に、列の自動サイズ変更モードを使用して列幅を操作するか、列幅に特定の値を設定します。| + +## マウス操作によるサイズ変更 + 既定では、ユーザーは、セルの値に基づく自動サイズ変更モードを使用していない行、列、およびヘッダーのサイズを変更できます。 列フィル モードなど、それ以外のモードの場合にユーザーがサイズ変更できないようにするには、 の次の 1 つまたは複数のプロパティを設定します。 + +- + +- + +- + +- + + また、特定の行または列の プロパティを設定して、それらの行または列をユーザーがサイズ変更できないようにすることもできます。 既定では、 プロパティの値は、列の プロパティの値、および行の プロパティの値に基づいています。 ただし、 または に明示的に設定すると、その行または列のコントロール値は指定した値でオーバーライドされます。 継承の状態に戻すには、 に設定します。 + + により、値は継承された状態に戻るので、その行または列が コントロールに追加されていない場合を除き、 プロパティの値として が返されることはありません。 行または列の プロパティが継承されているかどうかを調べる必要がある場合は、 プロパティを確認します。 値に フラグが含まれている場合、 プロパティの値は継承されていません。 + +## 自動サイズ変更 + コントロールの自動サイズ変更には、列フィル モードと、内容に基づく自動サイズ変更の 2 種類があります。 + + 列フィル モードでは、コントロール内のすべての表示可能列が、コントロールの表示領域の幅を埋めるように表示されます。 このモードの詳細については、「[Windows フォーム DataGridView コントロールの列フィル モード](../../../../docs/framework/winforms/controls/column-fill-mode-in-the-windows-forms-datagridview-control.md)」を参照してください。 + + また、セルの内容に合わせて自動的にサイズ調整されるように、行、列、およびヘッダーを設定することもできます。 この場合は、セルの内容が変わるたびにサイズ調整が発生します。 + +> [!NOTE] +> 仮想モードを使用してセルの値をカスタム データ キャッシュに格納する場合、自動サイズ変更は、セルの値を編集すると発生しますが、キャッシュされた値を イベント ハンドラーの外部で変更しても発生しません。 この場合、 メソッドを呼び出すことにより、コントロールがセルの表示を更新し、現在の自動サイズ変更モードを適用するように強制できます。 + + 内容に基づく自動サイズ変更が 1 次元のみ有効 \(行のみ有効で列は無効、または列のみ有効で行は無効\) な状態でも、 が有効だと、無効な側の次元が変更された場合にもサイズ調整が発生します。 たとえば、自動サイズ変更が行については有効で列については無効な場合に、 が有効だと、ユーザーが列の区分線をドラッグして列幅を変更すると、セルの内容が完全に表示されるように行の高さが自動的に調整されます。 + + 内容に基づくサイズ変更を行と列の両方について設定し、 を有効にした場合は、セルの内容が変わるたびに コントロールで自動的にサイズが調整され、新しいサイズの計算時には最適なセルの高さと幅の比率が使用されます。 + + コントロールの値をオーバーライドしないでヘッダー、行、および列のサイズ変更モードを設定するには、次のいずれかの プロパティを設定します。 + +- + +- + +- + +- + + 特定の列についてコントロールの列サイズ変更モードをオーバーライドするには、その列の プロパティを 以外の値に設定します。 列のサイズ変更モードは、実際にはその列の プロパティによって決まります。 このプロパティの値は、列の プロパティの値に基づきますが、これが の場合にはコントロールの 値が継承されます。 + + 内容に基づく自動サイズ変更の使用は、大量のデータを処理する場合には注意が必要です。 パフォーマンス低下を避けるには、コントロール内のすべての行を分析してサイズを計算する自動サイズ変更モードではなく、表示されている行のみに基づく自動サイズ変更モードを使用します。 パフォーマンスを最大にするには、プログラムによるサイズ変更を使用して、新しいデータが読み込まれた直後などのタイミングを指定してサイズ変更してください。 + + 内容に基づく自動サイズ変更モードは、行または列の プロパティ、あるいはコントロールの プロパティまたは プロパティを `false` に設定して非表示にしている行、列、またはヘッダーには機能しません。 たとえば、大きいセル値に合わせて列のサイズが自動的に変更された後でその列を非表示にすると、その大きいセル値を含む行が削除されても非表示列のサイズは変わりません。 表示と非表示を切り替えても自動サイズ変更は発生しません。したがって、列の プロパティを `true` に戻しても、現在の内容に基づくサイズの再計算は行われません。 + + プログラムによって内容に基づくサイズ変更を行う場合、その変更は、表示されるかどうかに関係なく、行、列、およびヘッダーに作用します。 + +## プログラムによるサイズ変更 + 自動サイズ変更が無効の場合、プログラムで次のプロパティを使用して、行、列、またはヘッダーの幅や高さを厳密に設定できます。 + +- + +- + +- + +- + + また、プログラムで次のメソッドを使用して、行、列、およびヘッダーのサイズをその内容に合わせて変更できます。 + +- + +- + +- + +- + +- + +- + + これらのメソッドは、行、列、またはヘッダーのサイズを継続的に設定するのではなく、そのとき 1 度だけ変更します。 新しいサイズは、セルの内容すべてが欠けることなく表示されるように自動的に計算されます。 ただし、 プロパティの値が の列のサイズをプログラムによって変更すると、内容に基づいて計算された幅を使用して列の プロパティの値の比率が調整され、実際の列幅は、その新しい比率に応じてすべての列がコントロールの表示可能領域に収まるように計算されます。 + + プログラムによるサイズ変更は、頻繁なサイズ変更によるパフォーマンス低下を避けるのに役立ちます。 また、ユーザーによる行、列、およびヘッダーのサイズ変更が可能な場合や、列フィル モードを使用する場合の初期サイズを決めるのにも役立ちます。 + + 通常、プログラムでは、特定のタイミングでサイズ変更のメソッドを呼び出します。 たとえば、データ読み込み直後にプログラムによってすべての列のサイズを変更したり、特定のセルの値が変更された後にプログラムによって行のサイズを変更したりします。 + +## 内容に基づくサイズ変更動作のカスタマイズ + 派生した のセル、行、および列の種類を操作する場合、サイズ変更の動作は、派生した コントロールの 、または の各メソッドをオーバーライドすることによって、またはコントロールのサイズ変更のプロテクト メソッドのオーバーロードを呼び出すことによって、カスタマイズできます。 サイズ変更のプロテクト メソッドのオーバーロードは、組み合わせて使用することでセルの高さと幅の最適な比率が得られるようにデザインされており、これによって極端に長いまたは高いセルが作成されることを回避できます。 たとえば、 メソッドの `AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean)` オーバーロードを呼び出し、 パラメーターに `false` を渡すと、このオーバーロードはその行のセルの最適な高さと幅を計算しますが、行の高さだけを調整します。 計算された最適なサイズに列幅を調整するには、この後で メソッドを呼び出す必要があります。 + +## 内容に基づくサイズ変更のオプション + サイズ変更に関するプロパティとメソッドで使用する列挙体には、内容に基づくサイズ変更と同様の値が使用されます。 これらの値を使用して、適切なサイズを計算する際にどのセルを使用するかを制限できます。 サイズ変更の列挙体では、表示されているセルを表す名前の値を指定することで、サイズを計算する基準を表示されている行のセルに限定できます。 大量の行を処理する場合には、行を除外することはパフォーマンス低下を避けるのに役立ちます。 また、ヘッダーのセルまたはヘッダー以外のセルの値のみに計算を限定することもできます。 + +## 参照 + + + + + + + + + + + + + + + + + + + + + + + + + + + [Windows フォーム DataGridView コントロール内の列と行のサイズ変更](../../../../docs/framework/winforms/controls/resizing-columns-and-rows-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールの列フィル モード](../../../../docs/framework/winforms/controls/column-fill-mode-in-the-windows-forms-datagridview-control.md) + [方法 : Windows フォーム DataGridView コントロールのサイズ変更モードを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-sizing-modes-of-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/sort-and-filter-ado-net-data-with-wf-bindingsource-component.md b/docs/framework/winforms/controls/sort-and-filter-ado-net-data-with-wf-bindingsource-component.md new file mode 100644 index 00000000000..7fd4df766a4 --- /dev/null +++ b/docs/framework/winforms/controls/sort-and-filter-ado-net-data-with-wf-bindingsource-component.md @@ -0,0 +1,66 @@ +--- +title: "方法 : Windows フォーム BindingSource コンポーネントで ADO.NET データを並べ替える/フィルター処理する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ADO.NET [Windows フォーム]" + - "BindingSource コンポーネント [Windows フォーム], 並べ替えとフィルター処理 (データを)" + - "データ [Windows フォーム], フィルター処理" + - "データ [Windows フォーム], 並べ替え" + - "データの並べ替え, ADO.NET" + - "フィルター処理 [Windows フォーム], ADO.NET" + - "並べ替え (データの)" +ms.assetid: 6c206daf-d706-4602-9dbe-435343052063 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法 : Windows フォーム BindingSource コンポーネントで ADO.NET データを並べ替える/フィルター処理する + プロパティと プロパティを使用して、 コントロールの並べ替え機能とフィルター機能を公開できます。 基になるデータ ソースが のときは単純な並べ替えを適用できます。また、データ ソースが のときはフィルター処理と高度な並べ替えを適用できます。 プロパティは、標準の [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] 構文を必要とします。この構文では、データ ソース内のデータ列の名前を表す文字列に続けて、リストの並べ替えを昇順、降順のどちらで行うかを示す `ASC` または `DESC` を指定します。 高度な並べ替えや複数列の並べ替えを設定するには、コンマ \(区切り記号\) で各列を区切ります。 プロパティには文字列式を設定します。 + +> [!NOTE] +> 接続文字列内にパスワードなどの機密情報を格納すると、アプリケーションのセキュリティに影響を及ぼすことがあります。 データベースへのアクセスを制御する方法としては、Windows 認証 \(統合セキュリティとも呼ばれます\) を使用する方が安全です。 詳細については、「[接続情報の保護](../../../../docs/framework/data/adonet/protecting-connection-information.md)」を参照してください。 + +### BindingSource を使用してデータをフィルター処理するには + +- プロパティを任意の式に設定します。 + + 列名とその列に指定する値を次のコード例に示します。 + + [!code-csharp[System.Windows.Forms.DataConnectorFilterAndSort#11](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataConnectorFilterAndSort/CS/form1.cs#11)] + [!code-vb[System.Windows.Forms.DataConnectorFilterAndSort#11](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataConnectorFilterAndSort/VB/form1.vb#11)] + +### BindingSource を使用してデータを並べ替えるには + +1. プロパティを設定します。任意の列名に続けて、昇順または降順を示す `ASC` または `DESC` を指定してください。 + +2. 複数の列を指定するときは、コンマで区切ります。 + + [!code-csharp[System.Windows.Forms.DataConnectorFilterAndSort#12](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataConnectorFilterAndSort/CS/form1.cs#12)] + [!code-vb[System.Windows.Forms.DataConnectorFilterAndSort#12](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataConnectorFilterAndSort/VB/form1.vb#12)] + +## 使用例 + Northwind サンプル データベースの顧客テーブルから コントロールにデータを読み込み、表示データのフィルター処理および並べ替えを行う方法を次のコード例に示します。 + + [!code-csharp[System.Windows.Forms.DataConnectorFilterAndSort#1](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataConnectorFilterAndSort/CS/form1.cs#1)] + [!code-vb[System.Windows.Forms.DataConnectorFilterAndSort#1](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataConnectorFilterAndSort/VB/form1.vb#1)] + +## コードのコンパイル + この例を実行するには、`BindingSource1` という名前の および `dataGridView1` という名前の を含むフォームにコードを貼り付けます。 次に、フォームの イベントを処理し、Load イベント ハンドラー メソッド内で `InitializeSortedFilteredBindingSource` を呼び出します。 + +## 参照 + + + [方法 : サンプル データベースをインストールする](../Topic/How%20to:%20Install%20Sample%20Databases.md) + [BindingSource コンポーネント](../../../../docs/framework/winforms/controls/bindingsource-component.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/sort-the-contents-of-a-wf-combobox-listbox-or-checkedlistbox-control.md b/docs/framework/winforms/controls/sort-the-contents-of-a-wf-combobox-listbox-or-checkedlistbox-control.md new file mode 100644 index 00000000000..0c3a1fabdd3 --- /dev/null +++ b/docs/framework/winforms/controls/sort-the-contents-of-a-wf-combobox-listbox-or-checkedlistbox-control.md @@ -0,0 +1,45 @@ +--- +title: "方法 : Windows フォーム ComboBox、ListBox、または CheckedListBox コントロールを並べ替える | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "CheckedListBox コントロール [Windows フォーム], 並べ替え" + - "コンボ ボックス, 並べ替え (内容の)" + - "ComboBox コントロール [Windows フォーム], 並べ替え (内容の)" + - "リスト ボックス, 並べ替え (内容の)" + - "ListBox コントロール [Windows フォーム], 並べ替え (内容の)" +ms.assetid: c268e387-3d1d-4d86-a940-19f6673c8d06 +caps.latest.revision: 7 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 7 +--- +# 方法 : Windows フォーム ComboBox、ListBox、または CheckedListBox コントロールを並べ替える +Windows フォームのコントロールは、データ連結されているときには並べ替えができません。 並べ替えたデータを表示するには、並べ替えがサポートされているデータ ソースを使用して、並べ替えを行います。 並べ替えがサポートされているデータ ソースには、データ ビュー、データ ビュー マネージャー、および並べ替えられた配列があります。 + + コントロールがデータ バインドされていない場合、並べ替えができます。 + +### リストを並べ替えるには + +1. `Sorted` プロパティを `true` に設定します。 + + この設定によって、既存のリスト項目はすべて並べ替えの順序に従って移動されます。 + +## 参照 + + + + [Windows フォームでのデータ バインド](../../../../docs/framework/winforms/windows-forms-data-binding.md) + [方法 : Windows フォームの ComboBox、ListBox、または CheckedListBox コントロールに項目を追加または削除する](../../../../docs/framework/winforms/controls/add-and-remove-items-from-a-wf-combobox.md) + [ListBox の代わりに Windows フォーム ComboBox を使用する場合](../../../../docs/framework/winforms/controls/when-to-use-a-windows-forms-combobox-instead-of-a-listbox.md) + [オプションのリストを表示するための Windows フォーム コントロール](../../../../docs/framework/winforms/controls/windows-forms-controls-used-to-list-options.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/sorting-data-in-the-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/sorting-data-in-the-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..840081209ed --- /dev/null +++ b/docs/framework/winforms/controls/sorting-data-in-the-windows-forms-datagridview-control.md @@ -0,0 +1,53 @@ +--- +title: "Windows フォームの DataGridView コントロールでのデータの並べ替え | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ [Windows フォーム], 並べ替え (グリッド内の)" + - "データ グリッド, 並べ替え (データの)" + - "DataGridView コントロール [Windows フォーム], 並べ替え (データの)" +ms.assetid: c1d4f24c-d961-4181-809d-5a5caa6122e4 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# Windows フォームの DataGridView コントロールでのデータの並べ替え +既定では、`DataGridView` コントロールのデータは、テキスト ボックス列のヘッダーをユーザーがクリックすることによって並べ替えることができます。 必要性がある場合には、特定の列の `SortMode` プロパティを変更することにより、他の列型に基づいてユーザーが並べ替えを実行できるようになります。 また、任意の列または複数列に基づいて、データをプログラムで並べ替えることもできます。 + +## このセクションの内容 + [Windows フォーム DataGridView コントロール内の列の並べ替えモード](../../../../docs/framework/winforms/controls/column-sort-modes-in-the-windows-forms-datagridview-control.md) + コントロールのデータの並べ替えのオプションについて説明します。 + + [方法 : Windows フォーム DataGridView コントロール内の列の並べ替えモードを設定する](../../../../docs/framework/winforms/controls/set-the-sort-modes-for-columns-wf-datagridview-control.md) + 既定では並べ替えできない列に基づいてユーザーが並べ替えを実行できるようにする方法を説明します。 + + [方法 : Windows フォーム DataGridView コントロールの並べ替え機能をカスタマイズする](../../../../docs/framework/winforms/controls/how-to-customize-sorting-in-the-windows-forms-datagridview-control.md) + データをプログラムで並べ替える方法、および イベントの使用または インターフェイスの実装によって並べ替えをカスタマイズする方法を説明します。 + +## 関連項目 + + コントロールの参照ドキュメントを提供します。 + + + メソッドの参照ドキュメントを提供します。 + + + プロパティの参照ドキュメントを提供します。 + + + 列挙体の参照ドキュメントを提供します。 + +## 参照 + [DataGridView コントロール](../../../../docs/framework/winforms/controls/datagridview-control-windows-forms.md) + [Windows フォーム DataGridView コントロールの列型](../../../../docs/framework/winforms/controls/column-types-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/soundplayer-class-overview.md b/docs/framework/winforms/controls/soundplayer-class-overview.md new file mode 100644 index 00000000000..4ad94013a13 --- /dev/null +++ b/docs/framework/winforms/controls/soundplayer-class-overview.md @@ -0,0 +1,48 @@ +--- +title: "SoundPlayer クラスの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "SoundPlayer クラスのサウンドを再生" + - "SoundPlayer クラスの概要の SoundPlayer クラス" + - "サウンドの再生" +ms.assetid: fcebb938-62b9-4677-9cbe-6465bc863e22 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# SoundPlayer クラスの概要 +クラスでは、アプリケーションにサウンドを簡単に追加することができます。 + + クラスは、.wav 形式、リソースとは UNC または HTTP の場所からのサウンド ファイルを再生できます。 さらに、 クラスを使用すると、読み込みまたは非同期的にサウンドを再生します。 + + 使用することも、 ビープ音を含む、共通のシステム サウンドを再生するクラス。 + +## 一般的に使用されるプロパティ、メソッド、およびイベント + +|名前|説明| +|----------|-----------------| +|プロパティ|ファイル パスまたはサウンドの Web アドレス。 使用可能な値には、UNC または HTTP を指定できます。| +|プロパティ|プログラムが前に、サウンドの読み込みを待機するミリ秒数では、例外をスローします。 既定値は 10 秒です。| +|プロパティ|サウンドの読み込みが終了するかどうかを示すブール値。| +|メソッド|サウンドを同期的に読み込まれます。| +|メソッド|サウンドを非同期的に読み込みを開始します。 読み込みが完了したらを生成、 イベントです。| +|メソッド|指定したサウンドを再生して、 または新しいスレッドのプロパティです。| +|メソッド|指定したサウンドを再生して、 または現在のスレッドのプロパティです。| +|メソッド|再生されているすべてのサウンドを停止します。| +|イベント|サウンドの読み込みを試みた後に発生します。| + +## 関連項目 + + \ No newline at end of file diff --git a/docs/framework/winforms/controls/soundplayer-class.md b/docs/framework/winforms/controls/soundplayer-class.md new file mode 100644 index 00000000000..3d165d3b47c --- /dev/null +++ b/docs/framework/winforms/controls/soundplayer-class.md @@ -0,0 +1,64 @@ +--- +title: "SoundPlayer クラス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "SoundPlayer" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "SoundPlayer クラス" + - "サウンド, 再生" +ms.assetid: f3945af9-045c-4e2d-b251-377c37ca2d77 +caps.latest.revision: 18 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 18 +--- +# SoundPlayer クラス +`SoundPlayer` クラスを使用すると、アプリケーションにサウンドを簡単に組み込むことができます。 + + クラスを使用して、ビープ音を含む、共通のシステム サウンドを再生することもできます。 + +## このセクションの内容 + [SoundPlayer クラスの概要](../../../../docs/framework/winforms/controls/soundplayer-class-overview.md) + クラスの概要と、一般的に使用するプロパティ、メソッド、イベントについて説明します。 + + [方法 : Windows フォームからサウンドを再生する](../../../../docs/framework/winforms/controls/how-to-play-a-sound-from-a-windows-form.md) + ファイル パス、UNC パス、または HTTP パスで指定したサウンドを再生するコードを示します。 + + [方法 : Windows フォームからビープ音を再生する](../../../../docs/framework/winforms/controls/how-to-play-a-beep-from-a-windows-form.md) + コンピューターのビープ音を再生するコードを示します。 + + [方法 : Windows フォームからリソースに埋め込まれたサウンドを再生する](../../../../docs/framework/winforms/controls/how-to-play-a-sound-embedded-in-a-resource-from-a-windows-form.md) + リソースからサウンドを再生するコードを示します。 + + [方法 : Windows フォームからシステム サウンドを再生する](../../../../docs/framework/winforms/controls/how-to-play-a-system-sound-from-a-windows-form.md) + いずれかのシステム サウンドを再生するコードを示します。 + + [方法 : Windows フォーム内でサウンドを非同期的に読み込む](../../../../docs/framework/winforms/controls/how-to-load-a-sound-asynchronously-within-a-windows-form.md) + URL からサウンドを非同期で読み込んで再生するコードを示します。 + + [方法 : Windows フォームでサウンドの再生をループする](../../../../docs/framework/winforms/controls/how-to-loop-a-sound-playing-on-a-windows-form.md) + サウンドを繰り返し再生するコードを示します。 + +## 関連項目 + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォーム コントロール](../../../../docs/framework/winforms/controls/index.md) + Windows フォーム専用にデザインされたコントロールに関するトピックへのリンクを示します。 + + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 + + 「[My.Computer オブジェクト](http://msdn.microsoft.com/library/11bxex12\(v=vs.110\))」または「[My.Computer オブジェクト](http://msdn.microsoft.com/library/11bxex12\(v=vs.120\))」も参照してください。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/specify-default-values-for-new-rows-in-the-datagrid.md b/docs/framework/winforms/controls/specify-default-values-for-new-rows-in-the-datagrid.md new file mode 100644 index 00000000000..0748f368e31 --- /dev/null +++ b/docs/framework/winforms/controls/specify-default-values-for-new-rows-in-the-datagrid.md @@ -0,0 +1,48 @@ +--- +title: "方法 : Windows フォーム DataGridView コントロールの新しい行に既定値を指定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ グリッド, 既定値 (新しい行の)" + - "DataGridView コントロール [Windows フォーム], データ エントリ" + - "DataGridView コントロール [Windows フォーム], 既定値 (新しい行の)" + - "行, 指定 (既定値を)" +ms.assetid: 8d127963-d9f8-4e4e-9f7f-beb66688f1f2 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : Windows フォーム DataGridView コントロールの新しい行に既定値を指定する +新しく追加された行にアプリケーションが既定値を読み込むことでデータ入力を簡素化できます。 クラスを使用すると、 イベントで既定値を読み込むことができます。 このイベントは、ユーザーが新しいレコード用の行を入力すると発生します。 コードでこのイベントを処理すると、任意のセルに任意に選択した値を読み込むことができます。 + + イベントを使用して新しい行に既定値を指定する方法を次のコード例に示します。 + +## 使用例 + [!code-csharp[System.Windows.Forms.DataGridViewMisc#120](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/CS/datagridviewmisc.cs#120)] + [!code-vb[System.Windows.Forms.DataGridViewMisc#120](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/VB/datagridviewmisc.vb#120)] + +## コードのコンパイル + この例には、次の項目が必要です。 + +- `dataGridView1` という名前の コントロール。 + +- 一意の `CustomerID` 値を生成する `NewCustomerId` 関数。 + +- アセンブリおよび アセンブリへの参照。 + +## 参照 + + + [Windows フォーム DataGridView コントロールでのデータ入力](../../../../docs/framework/winforms/controls/data-entry-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールにおける新規レコード行の使用](../../../../docs/framework/winforms/controls/using-the-row-for-new-records-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/splitcontainer-control-overview-windows-forms.md b/docs/framework/winforms/controls/splitcontainer-control-overview-windows-forms.md new file mode 100644 index 00000000000..bc658588eb0 --- /dev/null +++ b/docs/framework/winforms/controls/splitcontainer-control-overview-windows-forms.md @@ -0,0 +1,64 @@ +--- +title: "SplitContainer コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "SplitContainer" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "SplitContainer コントロール [Windows フォーム], SplitContainer コントロールの概要" +ms.assetid: 6de5a5f7-97a5-402d-be6d-7e2785483db5 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# SplitContainer コントロールの概要 (Windows フォーム) +Windows フォームの コントロールは、移動できるバーによって分割された 2 つのパネルから成る複合コントロールと考えることができます。 マウス ポインターをバーの上に置くと、ポインターが変形し、そのバーを移動できることが示されます。 + +> [!IMPORTANT] +> **ツールボックス**では、以前のバージョンの [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] で使用されていた コントロールが、 コントロールに置き換えられました。 コントロールの優先度は、 コントロールよりもかなり高くなります。 クラスは、既存のアプリケーションとの互換性を確保するために、引き続き [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] に含まれていますが、新しいプロジェクトに対しては、 コントロールを使用することを強くお勧めします。 + + コントロールを使用すると、複雑なユーザー インターフェイスを作成できます。多くの場合、1 つのパネルで選択した項目によって、他のパネルで表示されるオブジェクトが決まります。 この配置は、情報の表示と参照には非常に有効です。 2 つのパネルを用意することで、領域に情報を集約でき、さらに、バーまたは "分割線" により、ユーザーが簡単にパネルのサイズを変更できます。 + + 第 2 の コントロールを水平方向に配置した状態で、複数の コントロールを入れ子にして、上部のパネルと下部のパネルを作成することもできます。 + + 既定では、 コントロールにはキーボードからアクセスできます。 プロパティが `false` に設定されていれば、ユーザーは方向キーを押して分割線を移動できます。 + + コントロールの プロパティは、コントロール自体の方向ではなく、分割線の方向を指定します。 そのため、このプロパティが に設定されているときは、上から下に向かって分割線が作成され、左パネルと右パネルが作成されます。 + + また、 プロパティの値は、 プロパティの値に応じて決定されることに注意してください。 詳細については、「 プロパティ」を参照してください。 + + コントロールのサイズと移動を制限することもできます。 プロパティでは、 コントロールのサイズを変更した後に同じサイズのままで維持するパネルが決定され、 プロパティでは、分割線がキーボードまたはマウスによって移動できるかどうかが決定されます。 + +> [!NOTE] +> プロパティが `true` に設定されている場合でも、 プロパティを使用するなどの方法で、プログラムによって分割線を移動させることができます。 + + 最後に、 コントロールの各パネルには、個々のサイズを決定するプロパティが用意されています。 + +## 一般的に使用されるプロパティ、メソッド、およびイベント + +|名前|Description| +|--------|-----------------| +| プロパティ| コントロールのサイズを変更した後に同じサイズのままで維持するパネルを決定します。| +| プロパティ|分割線がキーボードまたはマウスによって移動できるかどうかを決定します。| +| プロパティ|分割線を垂直方向と水平方法のどちらで配置するかを決定します。| +| プロパティ|左端または上端から移動できる分割バーまでの距離 \(ピクセル単位\) を決定します。| +| プロパティ|ユーザーが分割線を移動できる最小距離 \(ピクセル単位\) を決定します。| +| プロパティ|分割線の幅 \(ピクセル単位\) を決定します。| +| イベント|分割線の移動中に発生します。| +| イベント|分割線の移動後に発生します。| + +## 参照 + + [SplitContainer コントロール](../../../../docs/framework/winforms/controls/splitcontainer-control-windows-forms.md) + [SplitContainer Control Sample](http://msdn.microsoft.com/ja-jp/9015fad0-7108-4d85-a83a-a72d038c4f65) \ No newline at end of file diff --git a/docs/framework/winforms/controls/splitcontainer-control-windows-forms.md b/docs/framework/winforms/controls/splitcontainer-control-windows-forms.md new file mode 100644 index 00000000000..0a694e55fa5 --- /dev/null +++ b/docs/framework/winforms/controls/splitcontainer-control-windows-forms.md @@ -0,0 +1,56 @@ +--- +title: "SplitContainer コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "SplitContainer コントロール [Windows フォーム]" + - "分割ウィンドウ" +ms.assetid: 2e36f17f-5c39-4fb4-bb09-7ce3ef823402 +caps.latest.revision: 18 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 18 +--- +# SplitContainer コントロール (Windows フォーム) +Windows フォームの `SplitContainer` コントロールは複合と考えることができ、移動可能なバーで区切られた 2 つのパネルです。 マウス ポインターがバーの上に移動すると、ポインターの形が変わり、バーが移動可能であることを示します。 + +> [!NOTE] +> **ツールボックス** では、このコントロールが以前のバージョンの Visual Studio に存在した コントロールを置き換えます。 `SplitContainer` コントロールは コントロールより優先されます。 クラスは、既存のアプリケーションの互換性のために .NET Framework に含まれていますが、新しいプロジェクトでは `SplitContainer` コントロールを使用することを強くお勧めします。 + + `SplitContainer` コントロールでは複雑なユーザー インターフェイスを作成できます。多くの場合、1 つのパネルの選択項目が、もう一方のパネルに表示されるオブジェクトを決定します。 この配置は、情報の表示と参照に対して非常に効果的です。 2 つのパネルを使用することで、情報を領域に集約でき、バーまたは「分割」により、ユーザーがパネルを簡単にサイズ変更できます。 + +## このセクションの内容 + [SplitContainer コントロールの概要](../../../../docs/framework/winforms/controls/splitcontainer-control-overview-windows-forms.md) + `SplitContainer` コントロールを導入し、一般的に使用されるプロパティ、メソッド、およびイベントについて説明します。 + + [方法 : 分割ウィンドウでのサイズ変更および位置指定動作を定義する](../../../../docs/framework/winforms/controls/how-to-define-resize-and-positioning-behavior-in-a-split-window.md) + `SplitContainer` コントロール内のスプリッターを制御する方法について説明します。 + + [方法 : ウィンドウを水平方向に分割する](../../../../docs/framework/winforms/controls/how-to-split-a-window-horizontally.md) + `SplitContainer` コントロール内のスプリッターの方向を制御する方法について説明します。 + + [方法 : Windows フォームでマルチペイン ユーザー インターフェイスを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-multipane-user-interface-with-windows-forms.md) + Microsoft Outlook で使用されるような複数ペインのユーザー インターフェイスを作成します。 + + 「[方法 : デザイナーを使用してウィンドウを水平方向に分割する](http://msdn.microsoft.com/library/ms233667\(v=vs.110\))」、「[方法 : Windows フォームで Windows エクスプローラー スタイルのインターフェイスを作成する](http://msdn.microsoft.com/library/zh2fe5a5\(v=vs.110\))」、「[方法 : デザイナーを使用して Windows フォームでマルチペイン ユーザー インターフェイスを作成する](http://msdn.microsoft.com/library/ms233661\(v=vs.110\))」も参照してください。 + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォーム コントロール](../../../../docs/framework/winforms/controls/index.md) + Windows フォームでの操作専用に設計されているコントロールについてのトピックへのリンクを提供します。 + + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/splitter-control-overview-windows-forms.md b/docs/framework/winforms/controls/splitter-control-overview-windows-forms.md new file mode 100644 index 00000000000..f971fe94226 --- /dev/null +++ b/docs/framework/winforms/controls/splitter-control-overview-windows-forms.md @@ -0,0 +1,37 @@ +--- +title: "Splitter コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Splitter" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Splitter コントロール [Windows フォーム], Splitter コントロールの概要" +ms.assetid: e2b6ab83-dfdd-40ec-9762-850702c82dcb +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# Splitter コントロールの概要 (Windows フォーム) +> [!IMPORTANT] +> コントロールは、以前のバージョンの コントロールに代わると共に追加の機能を提供します。ただし、 コントロールは、下位互換性を保つ目的および将来使用する目的で保持されます。 + + Windows フォームの コントロールを使用すると、ドッキングされたコントロールのサイズを実行時に変更できます。 通常、 コントロールは、さまざまな長さのデータが表示されるコントロールのあるフォーム上で使用します。たとえば、エクスプローラーのデータ ペインには、状況に応じて異なる幅の情報が含まれています。 + +## Splitter コントロールの操作 + Splitter コントロールによってサイズ変更できるコントロール内で、ドッキングされていない端にユーザーがマウス ポインターを置くと、ポインターが変形し、このコントロールのサイズを変更できることが示されます。 Splitter コントロールを使用すると、そのすぐ前にあるドッキングされたコントロールをユーザーがサイズ変更できるようになります。 このため、ドッキングされたコントロールのサイズを実行時にユーザーが変更できるようにするには、サイズ変更するコントロールをコンテナーの端にドッキングしてから、コンテナーの同じ側に Splitter コントロールをドッキングする必要があります。 + +## 参照 + + [方法 : Windows フォーム上のコントロールをドッキングする](../../../../docs/framework/winforms/controls/how-to-dock-controls-on-windows-forms.md) + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/splitter-control-windows-forms.md b/docs/framework/winforms/controls/splitter-control-windows-forms.md new file mode 100644 index 00000000000..fa42b481925 --- /dev/null +++ b/docs/framework/winforms/controls/splitter-control-windows-forms.md @@ -0,0 +1,41 @@ +--- +title: "Splitter コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "マルチ ビュー" + - "Splitter コントロール [Windows フォーム]" + - "ビュー, 複数 (フレームあたり)" +ms.assetid: 6f287407-e895-4b07-a46a-a5bff8388d46 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Splitter コントロール (Windows フォーム) +Windows フォームの `Splitter` コントロールを使用すると、ドッキングされたコントロールのサイズを実行時に変更できます。 通常、`Splitter` コントロールは、さまざまな長さのデータが表示されるコントロールのあるフォーム上で使用します。たとえば、エクスプローラーのデータ ペインには、状況に応じて異なる幅の情報が含まれています。 + +> [!NOTE] +> コントロールは、以前のバージョンの `Splitter` コントロールに代わると共に追加の機能を提供します。ただし、`Splitter` コントロールは、下位互換性を保つ目的および将来使用する目的で保持されます。 + +## このセクションの内容 + [Splitter コントロールの概要](../../../../docs/framework/winforms/controls/splitter-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/statusbar-control-overview-windows-forms.md b/docs/framework/winforms/controls/statusbar-control-overview-windows-forms.md new file mode 100644 index 00000000000..deba4169f5e --- /dev/null +++ b/docs/framework/winforms/controls/statusbar-control-overview-windows-forms.md @@ -0,0 +1,40 @@ +--- +title: "StatusBar コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "StatusBar" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ステータス バー" + - "StatusBar コントロール [Windows フォーム], StatusBar コントロールの概要" +ms.assetid: b7b9852c-633d-4416-bb2e-94852b989c6c +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# StatusBar コントロールの概要 (Windows フォーム) +> [!IMPORTANT] +> コントロールと コントロールは、 コントロールおよび コントロールに代わると共に追加の機能を提供します。ただし、 コントロールおよび コントロールは、下位互換性を保つ目的および将来使用する目的で、必要に応じて保持できます。 + + Windows フォームの [StatusBar コントロール](../../../../docs/framework/winforms/controls/statusbar-control-windows-forms.md) 、フォーム上で領域として使用され、通常はウィンドウの下端に表示されます。アプリケーションは、このコントロールにさまざまなステータス情報を表示できます。 コントロールでは、コントロール上にステータス バー パネルを用意できます。このパネルでは、状態を示すテキストやアイコン、またはプロセスが進行中であることを伝えるアニメーション化された一連のアイコンを表示します。たとえば、[!INCLUDE[ofprword](../../../../includes/ofprword-md.md)] では、文書が保存中であることが表示されます。 + +## StatusBar コントロールの使用 + Internet Explorer では、マウスがハイパーリンクの上に置かれたときに、ステータス バーにページの URL が表示されます。[!INCLUDE[ofprword](../../../../includes/ofprword-md.md)] では、ページ番号、セクション番号、および、上書きや変更履歴などの編集モードの情報が表示されます。[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] では、ドッキング可能なウィンドウの操作方法 \(ドッキングと切り離し\) など、状況に応じた情報がステータス バーに表示されます。 + + プロパティに `false` \(既定値\) を設定し、表示するテキストをステータス バーの プロパティに設定することで、ステータス バーにメッセージを表示できます。 プロパティに `true` を設定し、 メソッドを使用することで、ステータス バーを複数のパネルに分割して、複数の種類の情報を表示できます。 + +## 参照 + + + [方法 : Windows フォームの StatusBar コントロールでクリックされたパネルを確認する](../../../../docs/framework/winforms/controls/determine-which-panel-wf-statusbar-control-was-clicked.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/statusbar-control-windows-forms.md b/docs/framework/winforms/controls/statusbar-control-windows-forms.md new file mode 100644 index 00000000000..d163bffa0b1 --- /dev/null +++ b/docs/framework/winforms/controls/statusbar-control-windows-forms.md @@ -0,0 +1,55 @@ +--- +title: "StatusBar コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ステータス バー, 作成" + - "StatusBar コントロール [Windows フォーム]" +ms.assetid: 6f543e27-cf78-4b7f-b4d0-6a8030155d48 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# StatusBar コントロール (Windows フォーム) +> [!NOTE] +> コントロールは、 コントロールに代わると共に追加の機能を提供します。ただし、 コントロールは、下位互換性を保つ目的および将来使用する目的で保持されます。 + + Windows フォームの コントロールは、フォーム上で領域として使用され、通常はウィンドウの下端に表示されます。アプリケーションは、このコントロールにさまざまなステータス情報を表示できます。 コントロールでは、コントロール上にステータス バー パネルを用意できます。このパネルでは、状態を示すアイコン、またはプロセスが進行中であることを伝えるアニメーション化された一連のアイコンを表示します。たとえば、Microsoft Word では、文書が保存中であることが表示されます。 + +## このセクションの内容 + [StatusBar コントロールの概要](../../../../docs/framework/winforms/controls/statusbar-control-overview-windows-forms.md) + コントロールの一般的な概念を紹介します。このコントロールにより、フォーカスが置かれたコントロールに関する情報を参照できます。 + + [方法 : StatusBar コントロールにパネルを追加する](../../../../docs/framework/winforms/controls/how-to-add-panels-to-a-statusbar-control.md) + プログラミング可能なパネルを コントロールに追加する方法について説明します。 + + [方法 : Windows フォームの StatusBar コントロールでクリックされたパネルを確認する](../../../../docs/framework/winforms/controls/determine-which-panel-wf-statusbar-control-was-clicked.md) + コントロールで発生した イベントを処理する方法について説明します。 + + [方法 : ステータス バー パネルのサイズを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-size-of-status-bar-panels.md) + 実行時にステータス バー パネルの幅とサイズ変更の動作を制御するプロパティについて説明します。 + + [チュートリアル : ステータス バー情報の実行時更新](../../../../docs/framework/winforms/controls/walkthrough-updating-status-bar-information-at-run-time.md) + ステータス バー パネル内のデータをプログラムによって制御する方法について説明します。 + +## 関連項目 + + クラスとそのメンバーに関する参照情報を提供します。 + + + コントロールに代わると共に追加の機能を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/statusstrip-control-overview.md b/docs/framework/winforms/controls/statusstrip-control-overview.md new file mode 100644 index 00000000000..908e8e6569f --- /dev/null +++ b/docs/framework/winforms/controls/statusstrip-control-overview.md @@ -0,0 +1,56 @@ +--- +title: "StatusStrip コントロールの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "StatusStrip" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ステータス バー, ステータス バーの概要" + - "StatusStrip コントロール [Windows フォーム], StatusStrip コントロールの概要" +ms.assetid: c0d9bcbb-f8b8-46ef-bae2-4146b8c8ce99 +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# StatusStrip コントロールの概要 + コントロールには、 に表示されているオブジェクト、そのオブジェクトのコンポーネント、またはそのオブジェクトのアプリケーション内での操作に関連するコンテキストについての情報を表示します。 通常、 コントロールは オブジェクトで構成され、それら各オブジェクトに、テキスト、アイコン、またはその両方が表示されます。 には、、および の各コントロールを組み込むこともできます。 + + 既定の にはパネルがありません。 にパネルを追加するには、 メソッドを使用します。 + + 項目と一般的なコマンドの処理に対しては、Visual Studio に広範なサポートが用意されています。 + + 「[StatusStrip Items コレクション エディター](http://msdn.microsoft.com/library/ms233631\(v=vs.110\))」、「[\[StatusStrip Tasks\] ダイアログ ボックス](http://msdn.microsoft.com/library/ms233642\(v=vs.110\))」も参照してください。 + + コントロールは、以前のバージョンの コントロールに代わると共に追加の機能を提供します。ただし、 コントロールも、下位互換性を保つ目的および必要に応じて将来使用する目的で保持されます。 + +### StatusStrip の重要なメンバー + +|名前|説明| +|--------|--------| +|| がオーバーフロー機能をサポートするかどうかを示す値を取得または設定します。| +|| 内で端から端まで拡大するかどうかを示す値を取得または設定します。| + +### StatusStrip の重要なコンパニオン クラス + +|名前|説明| +|--------|--------| +|| コントロールのパネルを表します。| +||関連付けられた を表示します。そこからユーザーは、単一の項目を選択できます。| +||標準のボタンとドロップダウン メニューという 2 つの部分から成るコントロールを表します。| +||処理の完了状態を表示します。| + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/winforms/controls/statusstrip-control.md b/docs/framework/winforms/controls/statusstrip-control.md new file mode 100644 index 00000000000..8cc7758fbe7 --- /dev/null +++ b/docs/framework/winforms/controls/statusstrip-control.md @@ -0,0 +1,44 @@ +--- +title: "StatusStrip コントロール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ステータス バー" + - "StatusStrip コントロール [Windows フォーム]" +ms.assetid: eb1e59da-0a48-4ce5-af7d-13b8e75af4b1 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# StatusStrip コントロール +Windows フォームの `StatusStrip` コントロールは、フォーム上で領域として使用され、通常はウィンドウの下端に表示されます。アプリケーションは、このコントロールにさまざまな種類のステータス情報を表示できます `StatusStrip` コントロールには、通常は `ToolStripStatusLabel` コントロールを配置し、状態を示すためのテキストまたはアイコンや、処理の完了状態を視覚的に表示するための を表示します。 + +## このセクションの内容 + [StatusStrip コントロールの概要](../../../../docs/framework/winforms/controls/statusstrip-control-overview.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : StatusStrip 内で Spring プロパティを対話的に使用する](../../../../docs/framework/winforms/controls/how-to-use-the-spring-property-interactively-in-a-statusstrip.md) + `Spring` プロパティを使用して、`ToolStripStatusLabel` を `StatusStrip` 内で対話式に中央揃えする方法を示します。 + + 「[StatusStrip Items コレクション エディター](http://msdn.microsoft.com/library/ms233631\(v=vs.110\))」、「[\[StatusStrip タスク\] ダイアログ ボックス](http://msdn.microsoft.com/library/ms233642\(v=vs.110\))」も参照してください。 + +## 関連項目 + + クラスとそのメンバーに関するリファレンス情報を提供します。 + + + クラスとそのメンバーに関するリファレンス情報を提供します。 + +## 参照 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/stretch-a-toolstriptextbox-to-fill-the-remaining-width-of-a-toolstrip-wf.md b/docs/framework/winforms/controls/stretch-a-toolstriptextbox-to-fill-the-remaining-width-of-a-toolstrip-wf.md new file mode 100644 index 00000000000..f8e5c398b7d --- /dev/null +++ b/docs/framework/winforms/controls/stretch-a-toolstriptextbox-to-fill-the-remaining-width-of-a-toolstrip-wf.md @@ -0,0 +1,44 @@ +--- +title: "方法 : ToolStripTextBox を拡大して ToolStrip の残りの幅に合わせる (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "テキスト ボックス, 拡大 (ToolStrip コントロールを) [Windows フォーム]" + - "ToolStrip コントロール [Windows フォーム], 拡大 (テキスト ボックスを)" +ms.assetid: 0e610fbf-85fe-414c-900c-9704a5dd5cc6 +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# 方法 : ToolStripTextBox を拡大して ToolStrip の残りの幅に合わせる (Windows フォーム) + コントロールの プロパティを `true` に設定すると、コントロールはコンテナーのサイズに合わせて拡大されます。コンテナーのサイズを変更すると、コントロールのサイズも変更されます。 この構成は、 などのコントロールの項目を拡大して使用できる領域に合わせる場合や、コントロールのサイズ変更時に項目のサイズを変更する場合に役立ちます。 コントロールの拡大は、Microsoft® Internet Explorer のアドレス バーに似た外観や動作を実装する場合に便利です。 + +## 使用例 + 次のコード例は、 から派生する `ToolStripSpringTextBox` というクラスを作成します。 このクラスでは、 メソッドをオーバーライドして、親の コントロールの幅から他のすべての項目の合計幅を引いた値を求め、使用できる領域の幅を計算します。 また、このコード例は、新しい動作を実行する クラスと `Program` クラスも作成します。 + + [!code-csharp[ToolStripSpringTextBox#00](../../../../samples/snippets/csharp/VS_Snippets_Winforms/ToolStripSpringTextBox/cs/ToolStripSpringTextBox.cs#00)] + [!code-vb[ToolStripSpringTextBox#00](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/ToolStripSpringTextBox/vb/ToolStripSpringTextBox.vb#00)] + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System、System.Drawing、System.Windows.Forms の各アセンブリへの参照。 + +## 参照 + + + + + [ToolStrip コントロールのアーキテクチャ](../../../../docs/framework/winforms/controls/toolstrip-control-architecture.md) + [方法 : StatusStrip 内で Spring プロパティを対話的に使用する](../../../../docs/framework/winforms/controls/how-to-use-the-spring-property-interactively-in-a-statusstrip.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/tabcontrol-control-overview-windows-forms.md b/docs/framework/winforms/controls/tabcontrol-control-overview-windows-forms.md new file mode 100644 index 00000000000..7ac3815eead --- /dev/null +++ b/docs/framework/winforms/controls/tabcontrol-control-overview-windows-forms.md @@ -0,0 +1,41 @@ +--- +title: "TabControl コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "TabControl" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "プロパティ ページ, Windows フォーム" + - "タブ ページ, タブ ページの概要" + - "TabControl コントロール [Windows フォーム], TabControl コントロールの概要" + - "Windows フォームのダイアログ ボックス, タブ" +ms.assetid: 2b4ea784-a39d-463c-81d8-af74ce068476 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# TabControl コントロールの概要 (Windows フォーム) +Windows フォーム コントロールは、複数のタブを表示します。タブは、ノートの仕切りページやファイリング キャビネット内のフォルダーを分類するラベルのようなものです。 タブには画像やその他のコントロールを表示できます。 タブ コントロールを使用すると、複数のページを持つダイアログ ボックスを作成できます。このようなダイアログ ボックスは、Windows オペレーティング システムで数多く使用されています \(コントロール パネルから表示する \[画面のプロパティ\] ダイアログ ボックスなど\)。 さらに、 を使用して、関連プロパティをグループ化するためのプロパティ ページを作成できます。 + +## TabControl の使用 + の主要プロパティは です。このプロパティは、個別のタブを保持します。 個別のタブは オブジェクトです。 タブがクリックされると、その オブジェクトの イベントが発生します。 + +## 参照 + + [TabControl コントロール](../../../../docs/framework/winforms/controls/tabcontrol-control-windows-forms.md) + [方法 : Windows フォーム TabControl の表示形式を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-appearance-of-the-windows-forms-tabcontrol.md) + [方法 : タブ ページにコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-a-control-to-a-tab-page.md) + [方法 : Windows フォーム TabControl のタブを追加および削除する](../../../../docs/framework/winforms/controls/how-to-add-and-remove-tabs-with-the-windows-forms-tabcontrol.md) + [方法 : タブ ページを無効化する](../../../../docs/framework/winforms/controls/how-to-disable-tab-pages.md) + [Windows フォームのダイアログ ボックス](../../../../docs/framework/winforms/dialog-boxes-in-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/tabcontrol-control-windows-forms.md b/docs/framework/winforms/controls/tabcontrol-control-windows-forms.md new file mode 100644 index 00000000000..f5a5ed69550 --- /dev/null +++ b/docs/framework/winforms/controls/tabcontrol-control-windows-forms.md @@ -0,0 +1,59 @@ +--- +title: "TabControl コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ダイアログ ボックス, 作成 (マルチページ)" + - "マルチページのダイアログ ボックス" + - "プロパティ ページ, 作成" + - "タブ コントロール" + - "タブ コントロール, 作成" + - "タブ ダイアログ ボックス" + - "TabControl コントロール [Windows フォーム]" +ms.assetid: 915091af-93ac-4d3d-8283-738dd2d21ea7 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# TabControl コントロール (Windows フォーム) +Windows フォーム `TabControl` は、ノートの仕切りや書類キャビネットのフォルダー セットのラベルに似た、複数のタブを表示します。 タブには画像やその他のコントロールを含めることができます。 プロパティ ページを作成するには、`TabControl` を使用します。 + +## このセクションの内容 + [TabControl コントロールの概要](../../../../docs/framework/winforms/controls/tabcontrol-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : タブ ページにコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-a-control-to-a-tab-page.md) + タブ ページにコントロールを表示するための手順を示します。 + + [方法 : Windows フォーム TabControl のタブを追加および削除する](../../../../docs/framework/winforms/controls/how-to-add-and-remove-tabs-with-the-windows-forms-tabcontrol.md) + デザイナーまたはコードのタブを追加および削除する方法を説明します。 + + [方法 : Windows フォーム TabControl の表示形式を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-appearance-of-the-windows-forms-tabcontrol.md) + 個々のタブの外観に影響するプロパティを調整するための手順を示します。 + + [方法 : タブ ページを無効化する](../../../../docs/framework/winforms/controls/how-to-disable-tab-pages.md) + ユーザーの資格情報に基づいて、タブのページへのアクセスを制限する方法について説明します。 + + 「[方法 : デザイナーで Windows フォーム TabControl を使ってタブを追加および削除する](http://msdn.microsoft.com/library/ms233654\(v=vs.110\))」、「[方法 : デザイナーを使ってタブ ページにコントロールを追加する](http://msdn.microsoft.com/library/ms233668\(v=vs.110\))」も参照してください。 + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームのダイアログ ボックス](../../../../docs/framework/winforms/dialog-boxes-in-windows-forms.md) + 多くの場合、タブを表示するダイアログ ボックスのタスクの一覧を示します。 + + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/tablelayoutpanel-control-overview.md b/docs/framework/winforms/controls/tablelayoutpanel-control-overview.md new file mode 100644 index 00000000000..bffcdabe706 --- /dev/null +++ b/docs/framework/winforms/controls/tablelayoutpanel-control-overview.md @@ -0,0 +1,58 @@ +--- +title: "TableLayoutPanel コントロールの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "TableLayoutPanel" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム], サイズ変更" + - "レイアウト [Windows フォーム], TableLayoutPanel コントロール" + - "サイズを変更できるコントロール" + - "TableLayoutPanel コントロール [Windows フォーム], TableLayoutPanel コントロールの概要" + - "Windows フォーム コントロール, 縦横比を維持したサイズ変更" + - "Windows フォーム, 縦横比を維持したサイズ変更 (コントロールの)" +ms.assetid: 337661c8-61cb-44ee-93e0-3662bddec327 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# TableLayoutPanel コントロールの概要 + コントロールは、内容をグリッドに整列させます。 レイアウトがデザイン時および実行時の両方で実行されるため、アプリケーション環境の変化に応じて動的に変更できます。 これにより、パネル内のコントロールを適切にサイズ変更することができるため、親コントロールのサイズ変更や、ローカライズによるテキスト長の変更などの変更に対応できます。 + + Windows フォーム コントロールは、 の他のインスタンスを含めて、 コントロールの子にすることができます。 これにより、実行時の変化に適応する高度なレイアウトを構築することができます。 + + 、および プロパティの値に応じて、 コントロールを追加するときに新しいコントロールに合わせて拡張できます。 プロパティまたは プロパティのいずれかを 0 の値に設定すると、 が対応する方向にバインド解除されます。 + + コントロールが完全に子コントロールになった後で、\(水平または垂直の\) 展開の方向を制御することもできます。 既定では、 コントロールは行を追加することで下方向に拡張します。 + + 既定の動作とは異なる方法で行と列を動作させる場合は、 プロパティと プロパティを使用して、行と列のプロパティを制御できます。 行または列のプロパティを個別に設定することができます。 + + コントロールは、その子コントロールに `Cell`、`Column`、`Row`、`ColumnSpan`、および `RowSpan` の各プロパティを追加します。 + + 子コントロールで `ColumnSpan` プロパティまたは `RowSpan` プロパティを設定することで、 コントロールのセルをマージできます。 + +1. [方法 : TableLayoutPanel コントロール内でコントロールを配置して伸縮する](http://msdn.microsoft.com/library/ms171688\(v=vs.110\)) + +2. [方法 : TableLayoutPanel コントロールの行と列を拡大する](http://msdn.microsoft.com/library/ms171687\(v=vs.110\)) + +3. [方法 : TableLayoutPanel コントロールの列と行を編集する](http://msdn.microsoft.com/library/ms171686\(v=vs.110\)) + +4. [チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置](http://msdn.microsoft.com/library/w4yc3e8c\(v=vs.110\)) + +## 参照 + + + [方法 : ローカリゼーションに対応した Windows フォーム レイアウトをデザインする](../../../../docs/framework/winforms/controls/how-to-design-a-windows-forms-layout-that-responds-well-to-localization.md) + [方法 : データ入力用のサイズ変更可能な Windows フォームを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-resizable-windows-form-for-data-entry.md) + [TableLayoutPanel コントロールの推奨される手順](../../../../docs/framework/winforms/controls/best-practices-for-the-tablelayoutpanel-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/tablelayoutpanel-control-windows-forms.md b/docs/framework/winforms/controls/tablelayoutpanel-control-windows-forms.md new file mode 100644 index 00000000000..cfbac841c1c --- /dev/null +++ b/docs/framework/winforms/controls/tablelayoutpanel-control-windows-forms.md @@ -0,0 +1,72 @@ +--- +title: "TableLayoutPanel コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "サイズの自動調整" + - "コントロール [Windows フォーム], サイズ変更" + - "レイアウト [Windows フォーム]" + - "レイアウト [Windows フォーム], TableLayoutPanel コントロール" + - "サイズ変更, 自動" + - "TableLayoutPanel コントロール [Windows フォーム]" +ms.assetid: f55175c6-424e-4782-a86e-3f79c1550235 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# TableLayoutPanel コントロール (Windows フォーム) + コントロールは、その内容をグリッド内に配置します。 レイアウトはデザイン時と実行時の両方で行われるため、アプリケーション環境の変更に合わせて動的に変更できます。 また、パネル内のコントロールが適切にサイズ変更されるため、親コントロールのサイズ変更や、ローカリゼーションに伴うテキスト長の変更に対応できます。 + +## このセクションの内容 + [TableLayoutPanel コントロールの概要](../../../../docs/framework/winforms/controls/tablelayoutpanel-control-overview.md) + コントロールの全般的な概念を説明します。このコントロールを使用すると、行と列から成るレイアウトを構築できます。 + + [TableLayoutPanel コントロールの推奨される手順](../../../../docs/framework/winforms/controls/best-practices-for-the-tablelayoutpanel-control.md) + コントロールのレイアウト機能を最大限に活用するために役立つ手法について、概要を示します。 + + [TableLayoutPanel コントロールにおける AutoSize 動作](../../../../docs/framework/winforms/controls/autosize-behavior-in-the-tablelayoutpanel-control.md) + コントロールが自動サイズ変更の動作をどのようにサポートするかを説明します。 + + [方法 : TableLayoutPanel コントロールで子コントロールを固定およびドッキングする](../../../../docs/framework/winforms/controls/how-to-anchor-and-dock-child-controls-in-a-tablelayoutpanel-control.md) + コントロールの子コントロールを固定およびドッキングする方法を示します。 + + [方法 : ローカリゼーションに対応した Windows フォーム レイアウトをデザインする](../../../../docs/framework/winforms/controls/how-to-design-a-windows-forms-layout-that-responds-well-to-localization.md) + コントロールを使用して、ローカリゼーションに適切に対応できるフォームを作成する例を示します。 + + [方法 : データ入力用のサイズ変更可能な Windows フォームを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-resizable-windows-form-for-data-entry.md) + コントロールを使用して、サイズ変更に適切に対応できるフォームを作成する例を示します。 + +1. [方法 : TableLayoutPanel コントロール内でコントロールを配置して伸縮する](http://msdn.microsoft.com/library/ms171688\(v=vs.110\)) + +2. [方法 : TableLayoutPanel コントロールの行と列を拡大する](http://msdn.microsoft.com/library/ms171687\(v=vs.110\)) + +3. [方法 : TableLayoutPanel コントロールの列と行を編集する](http://msdn.microsoft.com/library/ms171686\(v=vs.110\)) + +4. [チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置](http://msdn.microsoft.com/library/w4yc3e8c\(v=vs.110\)) + +## 関連項目 + + コントロールのリファレンス ドキュメントを提供します。 + + + 型のリファレンス ドキュメントを提供します。 + + + コントロールのリファレンス ドキュメントを提供します。 + +## 関連項目 + [ローカリゼーション](../../../../docs/standard/globalization-localization/localization.md) + ローカリゼーションに関連するトピックの概要を示します。 + + 「[アプリケーションのローカライズ](http://msdn.microsoft.com/library/z68135h5%20\(v=vs.110\))」または「[アプリケーションのローカライズ](http://msdn.microsoft.com/library/z68135h5%20\(v=vs.120\))」も参照してください。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/textbox-control-overview-windows-forms.md b/docs/framework/winforms/controls/textbox-control-overview-windows-forms.md new file mode 100644 index 00000000000..497915576ff --- /dev/null +++ b/docs/framework/winforms/controls/textbox-control-overview-windows-forms.md @@ -0,0 +1,67 @@ +--- +title: "TextBox コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "TextBox" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "テキスト ボックス, 追加" + - "TextBox コントロール [Windows フォーム], TextBox コントロールの概要" +ms.assetid: d1a9c7f5-fa53-480a-a75c-158f8649ea2f +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# TextBox コントロールの概要 (Windows フォーム) +Windows フォーム テキスト ボックスを使用すると、入力データを取得したりテキストを表示したりできます。 コントロールは、通常は編集可能なテキストに使用しますが、読み取り専用にすることもできます。 テキスト ボックスでは、複数の行を表示したり、コントロールのサイズに合わせてテキストを折り返したりできます。基本的な書式を追加することもできます。 コントロールには、表示用のテキストまたはコントロールから入力されたテキストに適用するための、単一の書式スタイルが用意されています。 書式が複数設定されたテキストを表示するには、 コントロールを使用します。 詳細については、「[RichTextBox コントロールの概要](../../../../docs/framework/winforms/controls/richtextbox-control-overview-windows-forms.md)」を参照してください。 + +## TextBox コントロールの操作 + コントロールによって表示されるテキストは、 プロパティに含まれています。 既定では、最大 2,048 文字をテキスト ボックスに入力できます。 プロパティを `true` に設定した場合は、32 KB までのテキストを入力できます。 プロパティは、デザイン時に \[プロパティ\] ウィンドウで設定するか、実行時にコードで設定するか、または実行時にユーザー入力によって設定します。 テキスト ボックスの現在の内容は、実行時に プロパティを読み取ることによって取得できます。 + + 実行時にテキストをコントロール内に設定するコード例を次に示します。 `InitializeMyControl` の手順では自動的に実装します ; これを呼び出す必要があります。 + +```vb +Private Sub InitializeMyControl() + ' Put some text into the control first. + TextBox1.Text = "This is a TextBox control." +End Sub + +``` + +```csharp +private void InitializeMyControl() { + // Put some text into the control first. + textBox1.Text = "This is a TextBox control."; +} + +``` + +```cpp +private: + void InitializeMyControl() + { + // Put some text into the control first. + textBox1->Text = "This is a TextBox control."; + } +``` + +## 参照 + + [方法 : Windows フォーム TextBox コントロールでのカーソル位置を制御する](../../../../docs/framework/winforms/controls/how-to-control-the-insertion-point-in-a-windows-forms-textbox-control.md) + [方法 : Windows フォームの TextBox コントロールを使用してパスワード テキスト ボックスを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-password-text-box-with-the-windows-forms-textbox-control.md) + [方法 : 読み取り専用テキスト ボックスを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-read-only-text-box-windows-forms.md) + [方法 : 文字列に引用符を挿入する](../../../../docs/framework/winforms/controls/how-to-put-quotation-marks-in-a-string-windows-forms.md) + [方法 : Windows フォーム TextBox コントロールでテキストを選択する](../../../../docs/framework/winforms/controls/how-to-select-text-in-the-windows-forms-textbox-control.md) + [方法 : Windows フォーム TextBox コントロールで複数行を表示する](../../../../docs/framework/winforms/controls/how-to-view-multiple-lines-in-the-windows-forms-textbox-control.md) + [TextBox コントロール](../../../../docs/framework/winforms/controls/textbox-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/textbox-control-windows-forms.md b/docs/framework/winforms/controls/textbox-control-windows-forms.md new file mode 100644 index 00000000000..3d157b63171 --- /dev/null +++ b/docs/framework/winforms/controls/textbox-control-windows-forms.md @@ -0,0 +1,55 @@ +--- +title: "TextBox コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "テキスト ボックス" + - "TextBox コントロール [Windows フォーム]" +ms.assetid: e5a06987-8aec-4271-b196-2245ba992d62 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# TextBox コントロール (Windows フォーム) +Windows フォーム テキスト ボックスを使用すると、入力データを取得したりテキストを表示したりできます。 `TextBox` コントロールは、通常は編集可能なテキストに使用しますが、読み取り専用にすることもできます。 テキスト ボックスでは、複数の行を表示したり、コントロールのサイズに合わせてテキストを折り返したりできます。基本的な書式を追加することもできます。 `TextBox` コントロールでは、コントロールに表示または入力されるテキストに対して単一の書式を使用できます。 + +## このセクションの内容 + [TextBox コントロールの概要](../../../../docs/framework/winforms/controls/textbox-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : Windows フォーム TextBox コントロールでのカーソル位置を制御する](../../../../docs/framework/winforms/controls/how-to-control-the-insertion-point-in-a-windows-forms-textbox-control.md) + エディット コントロールに最初にフォーカスが設定されたときに、カーソルを表示する位置を指定する手順について説明します。 + + [方法 : Windows フォームの TextBox コントロールを使用してパスワード テキスト ボックスを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-password-text-box-with-the-windows-forms-textbox-control.md) + テキスト ボックスに入力するデータを非表示にする方法について説明します。 + + [方法 : 読み取り専用テキスト ボックスを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-read-only-text-box-windows-forms.md) + テキスト ボックスの内容が変更されないようにする方法について説明します。 + + [方法 : 文字列に引用符を挿入する](../../../../docs/framework/winforms/controls/how-to-put-quotation-marks-in-a-string-windows-forms.md) + テキスト ボックスの文字列に引用符を追加する方法について説明します。 + + [方法 : Windows フォーム TextBox コントロールでテキストを選択する](../../../../docs/framework/winforms/controls/how-to-select-text-in-the-windows-forms-textbox-control.md) + テキスト ボックスのテキストを強調表示する方法について説明します。 + + [方法 : Windows フォーム TextBox コントロールで複数行を表示する](../../../../docs/framework/winforms/controls/how-to-view-multiple-lines-in-the-windows-forms-textbox-control.md) + テキスト ボックスをスクロールできるようにする方法について説明します。 + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/timer-component-overview-windows-forms.md b/docs/framework/winforms/controls/timer-component-overview-windows-forms.md new file mode 100644 index 00000000000..c9235b8024c --- /dev/null +++ b/docs/framework/winforms/controls/timer-component-overview-windows-forms.md @@ -0,0 +1,35 @@ +--- +title: "Timer コンポーネントの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Timer" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Timer コンポーネント [Windows フォーム], Timer コンポーネントの概要" + - "タイマー, タイマーの概要" +ms.assetid: e672c05b-a8b6-4b26-9e4d-9223aa9e3873 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# Timer コンポーネントの概要 (Windows フォーム) +Windows フォームの は、一定の間隔でイベントを発生させるコンポーネントです。 このコンポーネントは、Windows フォーム環境で使用します。 サーバー環境に適したタイマーが必要な場合は、「[Introduction to Server\-Based Timers](http://msdn.microsoft.com/ja-jp/adc0bc0a-a519-4812-bafc-fb9d1a5801fc)」を参照してください。 + +## 主要なプロパティ、メソッド、およびイベント + 間隔は プロパティで定義し、値はミリ秒単位で指定します。 このコンポーネントを有効にすると、 イベントが一定の間隔で発生します。 実行するコードは、ここに記述します。 詳細については、「[方法 : Windows フォームの Timer コンポーネントを使用して一定間隔でプロシージャを実行する](../../../../docs/framework/winforms/controls/run-procedures-at-set-intervals-with-wf-timer-component.md)」を参照してください。 コンポーネントの主要なメソッドは、タイマーをオンおよびオフにする です。 タイマーをオフにすると、タイマーはリセットされます。 コンポーネントを一時停止する方法はありません。 + +## 参照 + + [Timer コンポーネント](../../../../docs/framework/winforms/controls/timer-component-windows-forms.md) + [Windows フォームの Timer コンポーネントの Interval プロパティの制限](../../../../docs/framework/winforms/controls/limitations-of-the-timer-component-interval-property.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/timer-component-windows-forms.md b/docs/framework/winforms/controls/timer-component-windows-forms.md new file mode 100644 index 00000000000..d3c04cecabb --- /dev/null +++ b/docs/framework/winforms/controls/timer-component-windows-forms.md @@ -0,0 +1,50 @@ +--- +title: "Timer コンポーネント (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Timer コンポーネント [Windows フォーム]" + - "タイマー" + - "タイマー, 作成" +ms.assetid: 6700e534-6382-43d5-98ed-14205435fff7 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# Timer コンポーネント (Windows フォーム) +Windows フォーム は、一定の間隔でイベントを発生させるコンポーネントです。 このコンポーネントは、Windows フォームの環境用に設計されています。 + +## このセクションの内容 + [Timer コンポーネントの概要](../../../../docs/framework/winforms/controls/timer-component-overview-windows-forms.md) + アプリケーションが定期的なイベントに応答するよう設定できる コンポーネントの一般的な概念について説明しています。 + + [Windows フォームの Timer コンポーネントの Interval プロパティの制限](../../../../docs/framework/winforms/controls/limitations-of-the-timer-component-interval-property.md) + タイマーの間隔で、使用方法に影響を与える可能性がある既知の制限事項について説明します。 + + [方法 : Windows フォームの Timer コンポーネントを使用して一定間隔でプロシージャを実行する](../../../../docs/framework/winforms/controls/run-procedures-at-set-intervals-with-wf-timer-component.md) + 一定の時間間隔で Windows ベースのアプリケーションに応答する方法について説明します。 + +## 関連項目 + クラス + Windows フォームで使用されるクラスとそのメンバーに関するリファレンス情報を提供します。 + + クラス + サーバー ベースのタイマーによって使用される クラスのリファレンス情報について説明します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 + + [Visual Basic 6.0 ユーザー向けの Timer コントロール](http://msdn.microsoft.com/ja-jp/38e5184a-1e50-45cf-b936-dae566c0cfc5) + 以前のバージョンと比較して、Visual Basic のタイマー機能がどのように変更されたか説明します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolbar-control-overview-windows-forms.md b/docs/framework/winforms/controls/toolbar-control-overview-windows-forms.md new file mode 100644 index 00000000000..89e23a9253e --- /dev/null +++ b/docs/framework/winforms/controls/toolbar-control-overview-windows-forms.md @@ -0,0 +1,47 @@ +--- +title: "ToolBar コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ToolBar" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ToolBar コントロール [Windows フォーム], ToolBar コントロールの概要" + - "ツール バー [Windows フォーム], ツール バーの概要" +ms.assetid: d426b203-0216-4dbe-b834-1641e50a9c29 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# ToolBar コントロールの概要 (Windows フォーム) +> [!NOTE] +> コントロールは、 コントロールに代わると共に追加の機能を提供します。ただし、 コントロールは、下位互換性を保つ目的および将来使用する目的で保持されます。 + + Windows フォームの コントロールは、一連のドロップダウン メニューやコマンド実行用のビットマップ ボタンを表示する、フォーム上のコントロール バーとして使用します。 ツール バーのボタンをクリックして、メニュー コマンドを選択するのと同じ操作ができます。 ボタンは、プッシュ ボタン、ドロップダウン メニュー、または区切り記号として機能するように設定できます。 通常、ツール バーのボタンとメニューは、アプリケーションのメニュー構造の項目に対応し、使用頻度の高い関数やコマンドをすばやく実行します。 + +## ToolBar コントロールの操作 + コントロールは、通常は親ウィンドウの上部に沿って "ドッキング" されますが、ウィンドウの上下左右のどこにでもドッキングできます。 ツール バーには、ユーザーがツール バー ボタンをマウス ポインターでポイントしたときに表示されるツール ヒントを実装できます。 ツール ヒントは、ボタンまたはメニューの用途を簡潔に説明するための、小さなポップアップ ウィンドウです。 ツールヒントを表示するには、 プロパティに `true` を設定します。 + +> [!NOTE] +> 一部のアプリケーションには、アプリケーション ウィンドウの上部に "浮遊" していて位置を変更できる、ツール バーによく似たコントロールがあります。 Windows フォームの ToolBar コントロールは、位置を変更できません。 + + プロパティに [Normal](frlrfSystemWindowsFormsToolBarAppearanceClassTopic) を設定すると、ツール バー ボタンが立体的に表示されます。 ツール バーの プロパティに を設定すると、ツール バーとボタンが平面的に表示されます。 平面表示されたボタンの上にマウス ポインターが置かれると、ボタンが立体的に表示されます。 ツール バー ボタンは、区切り記号で論理的なグループに分類できます。 区切り記号は、 プロパティに [Separator](frlrfSystemWindowsFormsToolBarButtonStyleClassTopic) を設定したツール バー ボタンです。 ツール バー上では空の領域として表示されます。 ツール バーが平面表示されているときは、ボタン区切り記号は空の領域ではなく線で表示されます。 + + コントロールでは、 オブジェクトを コレクションに追加することにより、ツール バーを作成できます。 ボタンを コントロールに追加するときには、コレクション エディターを使用できます。各 オブジェクトには、テキストまたはイメージを割り当てます \(両方を割り当てることもできます\)。 イメージは、関連付けられた [ImageList](../../../../docs/framework/winforms/controls/imagelist-component-windows-forms.md) コンポーネントによって提供されます。 実行時に メソッドや メソッドを使用して、 にボタンを登録したり、登録済みのボタンを削除したりできます。 のボタンをプログラミングするには、 イベントにコードを追加します。クリックされたボタンの判別には、 クラスの プロパティを使用します。 + +## 参照 + + [ToolBar コントロール](../../../../docs/framework/winforms/controls/toolbar-control-windows-forms.md) + [方法 : ツール バー コントロールにボタンを追加する](../../../../docs/framework/winforms/controls/how-to-add-buttons-to-a-toolbar-control.md) + [方法 : ツール バー ボタンのアイコンを定義する](../../../../docs/framework/winforms/controls/how-to-define-an-icon-for-a-toolbar-button.md) + [方法 : ツール バー ボタンのメニュー イベントをトリガーする](../../../../docs/framework/winforms/controls/how-to-trigger-menu-events-for-toolbar-buttons.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolbar-control-windows-forms.md b/docs/framework/winforms/controls/toolbar-control-windows-forms.md new file mode 100644 index 00000000000..69997d01643 --- /dev/null +++ b/docs/framework/winforms/controls/toolbar-control-windows-forms.md @@ -0,0 +1,57 @@ +--- +title: "ToolBar コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ToolBar コントロール [Windows フォーム]" + - "ツール バー [Windows フォーム]" +ms.assetid: 6b40e9ce-6a7a-4784-bfc9-7f1d36b7462e +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# ToolBar コントロール (Windows フォーム) +> [!NOTE] +> コントロールは、`ToolBar` コントロールに代わると共に追加の機能を提供します。ただし、`ToolBar` コントロールは、下位互換性を保つ目的および将来使用する目的で保持されます。 + + Windows フォーム `ToolBar` コントロールは、コマンドをアクティブ化するドロップダウン メニューとビットマップのボタンの行を表示するコントロール バーとしてフォームを使用します。 そのため、ツールバー ボタンのクリックは、メニュー コマンドと同じです。 ボタンは、プッシュ ボタン、ドロップダウン メニュー、または区切り記号として表示して機能するように構成できます。 通常、ツールバーには、アプリケーションのメニュー構造の項目に対応するボタンとメニューが含まれ、アプリケーションで最も頻繁に使用される関数やコマンドにすばやくアクセスできます。 + +> [!NOTE] +> `ToolBar` コントロールの プロパティは、 クラスのインスタンスを参照として取得します。 このプロパティは クラスから継承する任意のオブジェクトを受け入れるため、アプリケーションのツールバーにこの種類のボタンを実装する場合は、渡す参照を慎重に検討してください。 + +## このセクションの内容 + [ToolBar コントロールの概要](../../../../docs/framework/winforms/controls/toolbar-control-overview-windows-forms.md) + ユーザーが操作できるカスタム ツールバーを設計できる、`ToolBar` コントロールの一般的な概念について説明します。 + + [方法 : ツール バー コントロールにボタンを追加する](../../../../docs/framework/winforms/controls/how-to-add-buttons-to-a-toolbar-control.md) + ボタンを `ToolBar` コントロールに追加する方法について説明します。 + + [方法 : ツール バー ボタンのアイコンを定義する](../../../../docs/framework/winforms/controls/how-to-define-an-icon-for-a-toolbar-button.md) + アイコンを `ToolBar` コントロールのボタン内に表示する方法について説明します。 + + [方法 : ツール バー ボタンのメニュー イベントをトリガーする](../../../../docs/framework/winforms/controls/how-to-trigger-menu-events-for-toolbar-buttons.md) + `ToolBar` コントロールでユーザーがクリックするボタンを解釈するコードの記述方法について説明します。 + + 「[方法 :デザイナーを使って ToolBar ボタンのアイコンを定義する](http://msdn.microsoft.com/library/ms233659\(v=vs.110\))」、「[方法 : デザイナーを使って ToolBar コントロールにボタンを追加する](http://msdn.microsoft.com/library/ms233650\(v=vs.110\))」も参照してください。 + +## 関連項目 + クラス + クラスとそのメンバーに関するリファレンス情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 + + [ToolStrip コントロール](../../../../docs/framework/winforms/controls/toolstrip-control-windows-forms.md) + Windows フォーム アプリケーションでメニュー、コントロール、およびユーザー コントロールをホストするツールバーについて説明します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstrip-control-architecture.md b/docs/framework/winforms/controls/toolstrip-control-architecture.md new file mode 100644 index 00000000000..a8f16672744 --- /dev/null +++ b/docs/framework/winforms/controls/toolstrip-control-architecture.md @@ -0,0 +1,397 @@ +--- +title: "ToolStrip コントロールのアーキテクチャ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ToolStrip コントロール [Windows フォーム], アーキテクチャ" +ms.assetid: 71df2d18-862e-4701-9ff9-c1fe606f94f2 +caps.latest.revision: 32 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 32 +--- +# ToolStrip コントロールのアーキテクチャ + クラスと クラスには、ツール バー項目、ステータス項目、およびメニュー項目を表示するための柔軟で拡張性のあるシステムが実装されています。 これらのクラスはすべて 名前空間に格納されており、通常、名前にはすべて "ToolStrip" プリフィックス \( など\) または "Strip" サフィックス \( など\) が付きます。 + +## ToolStrip + このトピックでは、 およびこのクラスから派生するコントロールについて説明します。 + + は、、および の抽象基本クラスです。 次のオブジェクト モデルは、 継承階層構造を示しています。 + + ![ToolStrip オブジェクト モデル](../../../../docs/framework/winforms/controls/media/toolstripobjectmodel.png "ToolStripObjectModel") +ToolStrip オブジェクト モデル + + に含まれているすべての項目には、 コレクションを介してアクセスできます。 に含まれているすべての項目には、 コレクションを介してアクセスできます。 の派生クラスでは、 プロパティを使用して、現在表示されている項目のみにアクセスすることもできます。 これらは、現在オーバーフロー メニューにない項目です。 + + 次の項目は、すべての位置で および の両方とシームレスに連動するように特別にデザインされています。 これらは、 コントロールのデザイン時に既定で使用できます。 + +- + +- + +- + +- + +- + +- + +- + +### MenuStrip + は、 に代わる最上位のコンテナーです。 これには、キー処理機能とマルチ ドキュメント インターフェイス \(MDI\) 機能も用意されています。 および から派生していますが、機能的には、 と連動します。 + + 次の項目は、すべての位置で および の両方とシームレスに連動するように特別にデザインされています。 これらは、 コントロールのデザイン時に既定で使用できます。 + +- + +- + +- + +### StatusStrip + コントロールを置き換えます。 の特別な機能には、カスタムのテーブル レイアウトや、フォームのサイズ変更グリップと移動グリップのサポートがあります。また、使用可能な領域を で自動的に設定できる `Spring` プロパティもあります。 + + 次の項目は、すべての位置で および の両方とシームレスに連動するように特別にデザインされています。 これらは、 コントロールのデザイン時に既定で使用できます。 + +- + +- + +- + +- + +### ContextMenuStrip + に代わるものです。 は任意のコントロールに関連付けることができ、関連付けたコントロールでは、マウスの右クリックで自動的にコンテキスト メニュー \(ショートカット メニュー\) が表示されます。 を使用して、 をプログラムによって表示できます。 では、キャンセル可能な イベントと イベントがサポートされているため、動的な作成や複数クリックのシナリオを処理できます。 イメージ、メニュー項目のチェックの状態、テキスト、アクセス キー、ショートカット、およびカスケード メニューをサポートしています。 + + 次の項目は、すべての位置で および の両方とシームレスに連動するように特別にデザインされています。 これらは、 コントロールのデザイン時に既定で使用できます。 + +- + +- + +- + +- + +### ToolStrip の汎用機能 + このトピックでは、 と派生コントロールに共通の機能と動作について説明します。 + +#### 描画 + コントロールには、カスタム描画を行う方法がいくつかあります。 他の Windows フォーム コントロールと同様に、 のどちらにも、オーバーライド可能な `OnPaint` メソッドと `Paint` イベントがあります。 通常の描画と同様に、座標系はコントロールのクライアント領域を基準としています。つまり、コントロールの左上角が 0, 0 になります。 の `Paint` イベントと `OnPaint` メソッドは、他のコントロール描画イベントと同じように動作します。 + + コントロールでは、 クラスを使用することにより、項目やコンテナーの描画の細部にアクセスすることもできます。このクラスには、 の背景、項目の背景、項目のイメージ、項目の矢印、項目のテキスト、および境界を描画するためのオーバーライド可能なメソッドがあります。 これらのメソッドのイベント引数は、四角形、色、テキスト形式など、目的に応じて調整できるいくつかのプロパティを公開します。 + + 項目が描画される方法についてのいくつかの側面を調整するには、通常、 をオーバーライドします。 + + 新しい項目を作成していて、描画に関するすべての側面を制御する場合には、`OnPaint` メソッドをオーバーライドします。 `OnPaint` 内から、 のメソッドを使用できます。 + + 既定では、 設定を利用してダブル バッファリングを行います。 + +#### ペアレンティング + コンテナーの所有権とペアレンティングの概念は、他の Windows フォーム コンテナー コントロールよりも コントロールの方が複雑です。 これは、オーバーフローなどの動的なシナリオをサポートし、複数の 項目でドロップダウン項目を共有する場合や、コントロールからの の生成をサポートする場合に必要です。 + + 次の一覧は、ペアレンティングに関連するメンバーとその使用方法を示しています。 + +- は、ドロップダウン項目のソースの項目にアクセスします。 これは に似ていますが、コントロールを返すのではなく、 を返します。 + +- は、複数のコントロールが同じ を共有している場合に、どのコントロールが のソースであるかを決定します。 + +- は、 プロパティの読み取り専用アクセサーです。 親は所有者とは異なり、項目が表示される現在の を表します。これはオーバーフロー領域の場合もあります。 + +- は、項目コレクションに現在の を含む を返します。 この方法は、オーバーフローを処理する特別なコードを記述せずに、トップレベルの や他のプロパティを参照するのに最適です。 + +#### 継承したコントロールの動作 + 次のコントロールは、継承で使用されると常にロックされます。 + +- + +- + +- + +- + +- のパネルなどの と個々の コントロール + + たとえば、前の一覧にあるコントロールの 1 つまたは複数を使用して、新しい Windows フォーム アプリケーションを作成します。 1 つ以上のコントロールのアクセス修飾子を `public` または `protected` に設定し、プロジェクトをビルドします。 最初のフォームから継承するフォームを追加し、継承したコントロールを選択します。 このコントロールはロックされた状態で表示され、アクセス修飾子が `private` であるかのように動作します。 + +#### ToolStripContainer の継承のサポート + コントロールは、次の例のような限定された継承のシナリオをサポートしています。 + +1. 新しい Windows フォームアプリケーションを作成します。 + +2. フォームに を追加します。 + +3. のアクセス修飾子を `public` または `protected` に設定します。 + +4. の各コントロールを任意に組み合わせて、 領域に追加します。 + +5. プロジェクトをビルドします。 + +6. 最初のフォームから継承するフォームを追加します。 + +7. 継承した をフォーム上で選択します。 + +#### 子コントロールの継承の動作 + 前の手順を完了すると、次のような継承の動作が発生します。 + +- デザイナーには、継承したアイコンと一緒にコントロールが表示されます。 + +- コントロールはロックされます。コンテンツの選択や再配置を行うことはできません。 + +- コントロールは、 に追加したり移動したりできます。また、 の子コントロールすることもできます。 + +- 変更内容はフォームのビルド後も保持されます。 + + > [!NOTE] + > 削除する必要がある場合は、 に含まれているすべての コントロールから、アクセス修飾子を削除してください。 この場合は、 のアクセス修飾子によってコントロール全体が制御されます。 + +#### 部分信頼 + 部分的にしか信頼のない状況では、不用意に入力した個人情報が認証されていない個人やサービスから使われることのないように、`ToolStrip` に制限が適用されます。 次のような保護方法があります。 + +- `ToolStripDropDown` コントロールで の項目を表示するには、 が必要です。 これは、 などの組み込みコントロールだけでなく、ユーザーが作成したコントロールにも適用されます。 この要件に適合しない場合、このような項目は表示されません。 例外をスローすることはありません。 + +- プロパティを `false` に設定することはできません。また、キャンセル可能な イベント パラメーターは無視されます。 このため、ドロップダウン項目を表示したまま複数のキーストロークを入力することはできなくなります。 この要件に適合しない場合、このような項目は表示されません。 例外をスローすることはありません。 + +- 以外の部分信頼の状況でキーストロークが発生しても、多くのキーストローク処理イベントは生成されません。 + +- が付与されていない場合、アクセス キーは処理されません。 + +#### 使用方法 + 次の使用パターンは、 のレイアウト、キーボードの対話的操作、およびエンド ユーザーの動作に影響します。 + +- への追加 + + は、 内および 間に移動できます。 `Dock` プロパティは無視されます。また、 プロパティが `false` の場合は、項目が に追加されるたびに のサイズが増加します。 通常、 はタブ オーダーに含められません。 + +- ドッキング + + はコンテナーの一辺の固定位置に配置され、サイズがドッキング対象の辺全体に拡張されます。 通常、 はタブ オーダーに含められません。 + +- 絶対配置 + + 他のコントロールと同様に、 プロパティによって配置され、サイズが固定され、通常はタブ オーダーに含められます。 + +#### キーボードによる対話操作 + +##### アクセス キー + Alt キーと同時または Alt キーに続けてアクセス キーを入力する操作は、キーボードを使用してコントロールをアクティブ化する 1 つの方法です。 では、明示的および暗黙的なアクセス キーの両方がサポートされます。 明示的な定義では、文字の前にアンパサンド \(&\) 文字を付けます。 暗黙的な定義では、指定された `Text` プロパティの文字の順序に基づいて、一致する項目を検出するアルゴリズムが使用されます。 + +##### ショートカット キー + で使用するショートカット キーは、 列挙値 \(順序が特定されているわけではありません\) の組み合わせを使用して定義します。 また、 プロパティを使用すると、テキストのみを使用してショートカット キーを表示できます。たとえば、"Delete" の代わりに "Del" と表示できます。 + +##### Navigation + Alt キーは、 で指定される をアクティブ化します。 この状態で Ctrl \+ Tab キーを使用すると、`ToolStripPanel` 内の コントロール間を移動できます。 Tab キーおよびテンキーの方向キーを使用すると、 の項目間を移動できます。 オーバーフロー領域の移動は、特別なアルゴリズムによって処理されます。 Space キーを押すと、、または が選択されます。 + +##### フォーカスと検証 + Alt キーで または をアクティブ化しても、通常、現在フォーカスがあるコントロールからフォーカスが移動したり削除されたりすることはありません。 内でホストされているコントロールまたは のドロップダウンがある場合、ユーザーが Tab キーを押すとコントロールはフォーカスを取得します。 一般的に、 の各イベントは、キーボードでアクティブ化した場合は発生しません。 このような場合は、代わりに イベントと イベントを使用します。 + + 既定では、 は `false` に設定されています。 検証を実行するには、フォームで明示的に を呼び出します。 + +#### \[レイアウト\] + のレイアウトを制御するには、 プロパティで のメンバーの 1 つを選択します。 + +##### スタック レイアウト + スタックとは、 の両端が互いに密着するように項目を配置することです。 次の一覧に、スタック レイアウトの説明を示します。 + +- が既定値です。 この設定により、 は、 プロパティに従ってそのレイアウトを自動的に変更し、ドラッグおよびドッキングのシナリオに対応します。 + +- は、 の項目を縦方向に並べて描画します。 + +- は、 の項目を横方向に並べて描画します。 + +##### スタック レイアウトのその他の機能 + は、項目が配置される の末尾を決定します。 + + 項目が 内に収まらない場合は、オーバーフロー ボタンが自動的に表示されます。 プロパティの設定によって、項目を常にオーバーフロー領域に表示する、必要な場合のみ表示する、または表示しないのいずれかに決定します。 + + イベントでは、 プロパティを調べ、項目がメインの とオーバーフロー状態の のどちらに配置されているか、または現在はまったく表示されていないかを確認できます。 項目が表示されない典型的な理由は、項目がメインの に収まらず、その プロパティが に設定されていることです。 + + を移動できるようにするには、これを に配置し、その に設定します。 + +##### その他のレイアウト オプション + その他のレイアウト オプションとして、 および があります。 + +##### フロー レイアウト + 、および の場合は、 が既定のレイアウトです。 このレイアウトは、 に似ています。 レイアウトの機能は次のとおりです。 + +- プロパティによって、 のすべての機能が公開されています。 クラスを クラスにキャストする必要があります。 + +- コード内で プロパティおよび プロパティを使用して、項目を行内に配置できます。 + +- プロパティは無視されます。 + +- イベントでは、 プロパティを調べ、項目がメインの に配置されたか、収まらなかったかを確認できます。 + +- グリップが描画されないため、 にある レイアウト スタイルの を移動できません。 + +- オーバーフロー ボタンは描画されません。また、 は無視されます。 + +##### テーブル レイアウト + の場合は、 が既定のレイアウトです。 このレイアウトは、 に似ています。 レイアウトの機能は次のとおりです。 + +- プロパティによって、 のすべての機能が公開されています。 クラスを クラスにキャストする必要があります。 + +- コード内で プロパティおよび プロパティを使用して、項目をテーブルのセル内に配置できます。 + +- プロパティは無視されます。 + +- イベントでは、 プロパティを調べ、項目がメインの に配置されたか、収まらなかったかを確認できます。 + +- グリップが描画されないため、 レイアウト スタイルでは を削除できません。 + +- オーバーフロー ボタンは描画されません。また、 は無視されます。 + +## ToolStripItem + このトピックでは、 およびこのクラスから派生するコントロールについて説明します。 + + は、 に追加されるすべての項目に対する抽象基本クラスです。 次のオブジェクト モデルは、 継承階層構造を示しています。 + + ![ToolStripItem オブジェクト モデル](../../../../docs/framework/winforms/controls/media/toolstripitemobjectmodel.png "ToolStripItemObjectModel") +ToolStripItem オブジェクト モデル + + クラスは、 から直接継承するか、 または を介して から間接的に継承します。 + + コントロールは、、または に格納される必要があり、フォームに直接追加できません。 コントロールの適切なサブセットを含むさまざまなコンテナー クラスが設計されています。 + + ストック コントロールおよびこれらのコントロールが最適に表示されるコンテナーを次の表に示します。 項目は の派生コンテナーであればどれでもホストできますが、以下に示すコンテナー内で最適に表示されるように設計されています。 + +> [!NOTE] +> は、デザイナー ツールボックスには表示されません。 + +|含まれる項目|ToolStrip|MenuStrip|ContextMenuStrip|StatusStrip|ToolStripDropDown| +|------------|---------------|---------------|----------------------|-----------------|-----------------------| +||○|X|X|X|○| +||○|○|○|X|○| +||○|X|X|○|○| +||○|X|X|○|○| +||○|○|○|X|○| +||○|X|X|○|○| +||○|○|○|X|○| +||X|○|○|X|X| +||X|X|X|○|X| +||○|X|X|○|X| +||○|○|X|○|○| + +### ToolStripButton + のボタン項目です。 さまざまな境界線スタイルで表示でき、操作状態を表したりアクティブ化したりするためにも使用できます。 既定でフォーカスが設定されるように定義することもできます。 + +### ToolStripLabel + は、 コントロールにラベル機能を提供します。 と似ており、既定ではフォーカスが設定されず、押下または強調表示された状態として描画されることもありません。 + + ホストされる項目としての では、アクセス キーがサポートされます。 + + でリンク コントロールをサポートするには、 の各プロパティを使用します。 + +### ToolStripStatusLabel + は、 で使用するように特別に設計されたバージョンの です。 固有の機能として、、および があります。 + +### ToolStripSeparator + は、ツール バーまたはメニューの方向に応じて、縦線または横線を追加します。 メニュー項目など、項目間のグループ化や区切りに使用できます。 + + を追加するには、デザイン時にドロップダウン リストから選択します。 ただし、デザイナーのテンプレート ノードまたは メソッドでハイフン \(\-\) を入力することで、自動的に を作成することもできます。 + +### ToolStripControlHost + は、、および の抽象基本クラスです。 は、カスタム コントロールを含む他のコントロールを次の 2 つの方法でホストできます。 + +- から派生するクラスを使用して を構築します。 ホストされるコントロールおよびプロパティに完全にアクセスするには、 プロパティをキャストして、このプロパティが表す実際のクラスに戻す必要があります。 + +- を拡張し、継承クラスの既定のコンストラクター内で、 から派生したクラスを渡す基本クラス コンストラクターを呼び出します。 このオプションを使用して一般的なコントロール メソッドとプロパティをラップすると、 内でのアクセスが簡単になります。 + +### ToolStripComboBox + は、 でホストするために最適化された です。 ホストされるコントロールのプロパティとイベントのサブセットは レベルで公開されますが、基になる コントロールは プロパティを使用して完全にアクセスできます。 + +### ToolStripTextBox + は、 でホストするために最適化された です。 ホストされるコントロールのプロパティとイベントのサブセットは レベルで公開されますが、基になる コントロールは プロパティを使用して完全にアクセスできます。 + +### ToolStripProgressBar + は、 でホストするために最適化された です。 ホストされるコントロールのプロパティとイベントのサブセットは レベルで公開されますが、基になる コントロールは プロパティを使用して完全にアクセスできます。 + +### ToolStripDropDownItem + は、、および の抽象基本クラスです。項目を直接ホストしたり、ドロップダウン コンテナーで追加項目をホストしたりできます。 これを実行するには、 プロパティを に設定して、 プロパティを設定します。 これらのドロップダウン項目には、 プロパティを使用して直接アクセスできます。 + +### ToolStripMenuItem + は、 と連携して、メニューの特殊な強調表示、レイアウト、および列の配置を処理する です。 + +### ToolStripDropDownButton + に似ていますが、ユーザーがクリックするとドロップダウン領域が表示される点が異なります。 プロパティを設定することで、ドロップダウン矢印を表示または非表示にできます。 は、 をオーバーフローする項目を表示する をホストします。 + +### ToolStripSplitButton + は、ボタンとドロップダウン ボタンの機能を組み合わせます。 + + プロパティを使用して、選択されたドロップダウン項目に対応する イベントと、ボタンに表示される項目とを同期します。 + +### ToolStripItem の汎用機能 + には、次のように、継承するコントロールに共通の機能とオプションがあります。 + +- コア イベント + +- イメージ処理 + +- \[配置\] + +- テキストとイメージの関係 + +- 表示スタイル + +#### コア イベント + では、自身に対するクリック イベント、マウス イベント、および描画イベントを受け取り、なんらかのキーボードの前処理を実行することもできます。 + +#### イメージ処理 + の各プロパティは、イメージ処理のさまざまな要素に関連しています。 コントロールでイメージを使用するには、これらのプロパティを手動で設定するか、実行時のみに有効な プロパティを設定します。 + + イメージのスケーリングは、次のように、 および の両方のプロパティの相互作用によって決まります。 + +- は、イメージの の設定とコンテナーの の設定の組み合わせによって決まる、最終的なイメージのスケールです。 + + - が `true` \(既定\) で の場合、イメージの拡大と縮小は行われず、 のサイズは最大の項目と同じサイズまたは定義済みの最小サイズになります。 + + - が `false` で の場合、イメージや の拡大と縮小は行われません。 + +#### \[配置\] + プロパティの値は、項目を表示する の辺を決定します。 プロパティが機能するのは、 のレイアウト スタイルがスタック オーバーフロー値のいずれかに設定されている場合のみです。 + + 項目は、項目コレクションに表示される順序で に配置されます。 項目を配置する場所をプログラムで変更するには、 メソッドを使用してコレクションの項目を移動します。 このメソッドは項目を移動しますが、複製はしません。 + +#### テキストとイメージの関係 + プロパティは、 上のテキストに対するイメージの相対的位置を定義します。 イメージ、テキスト、またはその両方がない項目は、 で存在しない要素の代わりに空白が表示されないように、特別なケースとして扱われます。 + +#### 表示スタイル + を使用すると、項目の Text プロパティと Image プロパティの値を設定して必要なものだけを表示できます。 これは通常、同じ項目を異なるコンテキストで表示するとき、表示スタイルだけを変更するために使用されます。 + +## アクセサリ クラス + 次のように、他にもさまざまな機能を実現するクラスがあります。 + +- は、アプリケーション全体について 関連のタスクをサポートします。たとえば、マージ、設定、レンダラーのオプションなどがあります。 + +- を使用すると、特定のスタイルやテーマを簡単に に適用できます。 + +- は、置き換えることのできるカラー テーブル \(\) に基づいてペンとブラシを作成します。 + +- は、システム カラーとフラットな visual スタイルを アプリケーションに適用します。 + +- と似ています。 ドッキング対象の 4 つのサイド パネル \( のインスタンス\) と、1 つのセントラル パネル \( のインスタンス\) を使用して、一般的な配置が作成されます。 サイド パネルは削除できませんが、非表示にすることはできます。 セントラル パネルを削除または非表示にすることはできません。 1 つ以上の コントロール、 コントロール、または コントロールをサイド パネルに配置でき、他のコントロールにはセントラル パネルを使用できます。 には、フォーム本体にレンダラーのサポートを取り入れ、一貫した状態で表示する方法も用意されています。 はマルチ ドキュメント インターフェイス \(MDI\) をサポートしていません。 + +- は、 コントロールを移動および配置する領域を作成します。 1 つのパネルだけを使用することもできますが、 は MDI のシナリオにも適しています。 + +## 参照 + [ToolStrip コントロールの概要](../../../../docs/framework/winforms/controls/toolstrip-control-overview-windows-forms.md) + [ToolStrip テクノロジの概要](../../../../docs/framework/winforms/controls/toolstrip-technology-summary.md) + [ToolStrip コントロール](../../../../docs/framework/winforms/controls/toolstrip-control-windows-forms.md) + [MenuStrip コントロール](../../../../docs/framework/winforms/controls/menustrip-control-windows-forms.md) + [StatusStrip コントロール](../../../../docs/framework/winforms/controls/statusstrip-control.md) + [ContextMenuStrip コントロール](../../../../docs/framework/winforms/controls/contextmenustrip-control.md) + [BindingNavigator コントロール](../../../../docs/framework/winforms/controls/bindingnavigator-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstrip-control-overview-windows-forms.md b/docs/framework/winforms/controls/toolstrip-control-overview-windows-forms.md new file mode 100644 index 00000000000..8dd9b30539d --- /dev/null +++ b/docs/framework/winforms/controls/toolstrip-control-overview-windows-forms.md @@ -0,0 +1,97 @@ +--- +title: "ToolStrip コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Toolstrip" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ツール バー [Windows フォーム]" + - "ツール バー [Windows フォーム], 新機能 (Windows フォームの)" + - "ToolStrip コントロール [Windows フォーム], ToolStrip コントロールの概要" + - "新機能 [Windows フォーム], ツール バー" +ms.assetid: 81d067ed-297c-4dad-90de-1bcac15336ec +caps.latest.revision: 17 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 17 +--- +# ToolStrip コントロールの概要 (Windows フォーム) +Windows フォームの コントロールと関連クラスには、ユーザー インターフェイス要素をツール バー、ステータス バー、およびメニューに組み込むための共通のフレームワークがあります。 コントロールは、埋め込み先編集の有効化、カスタム レイアウト、およびラフティング \(水平スペースまたは垂直スペースを共有するツール バーの機能\) を含む豊富なデザイン時機能を提供します。 + + コントロールは、以前のバージョンのコントロールに置き換わると共に追加の機能を提供します。ただし、 コントロールは、下位互換性を保持するため、および将来必要になったときに使用できるように保持されています。 + +## ToolStrip コントロールの機能 + コントロールを使用すると、次のことができます。 + +- コンテナー間に共通のユーザー インターフェイスを提供する。 + +- カスタマイズでき、一般に使用できるだけでなく、高度なユーザー インターフェイス機能とレイアウト機能 \(ドッキング、ラフティング、テキストおよびイメージ付きボタン、ドロップダウン ボタンとドロップダウン コントロール、オーバーフロー ボタン、実行時の 項目の並べ替えなど\) をサポートするツール バーを簡単に作成する。 + +- オーバーフローおよび実行時の項目の順序変更をサポートする。 オーバーフロー機能は、スペース不足で に項目を表示できない場合に、項目をドロップダウン メニューに移動します。 + +- 共通の描画モデルにより、オペレーティング システムの標準的な外観と動作をサポートする。 + +- 他のコントロールのイベント処理と同じように、コンテナーおよびコンテナーに含まれる項目のすべてを一貫して処理する。 + +- 複数の 間、または特定の 内で項目をドラッグする。 + +- 高度なレイアウトを使用したドロップダウン コントロールおよびユーザー インターフェイス型エディターを で作成する。 + + クラスを使用して 上で他のコントロールを使用し、それらの 機能を取得します。 + + 、および 列挙型および 列挙型と共に使用すると、機能を拡張して外観と動作を変更できます。 + + コントロールは構成が簡単で、拡張性に優れています。また、外観と動作をカスタマイズするためのさまざまなプロパティ、メソッド、およびイベントを提供します。 以下に、いくつかの重要なメンバーを示します。 + +### 重要な ToolStrip メンバー + +|名前|Description| +|--------|-----------------| +|| のドッキング先となる親コンテナーの端を取得または設定します。| +|| クラスがドラッグ アンド ドロップおよび項目の並べ替えをプライベートで処理するかどうかを示す値を取得または設定します。| +|| が項目をレイアウトする方法を示す値を取得または設定します。| +|| のどちらかに結び付けるか、または両者の間でフローティングできるかを取得または設定します。| +|| をクリックしたときに、 がドロップダウン リストに他の項目を表示するかどうかを示す値を取得または設定します。| +||オーバーフローが有効になった のオーバーフロー ボタンである を取得します。| +|| の外観と動作 \(ルック アンド フィール\) のカスタマイズに使用される を取得または設定します。| +|| に適用される描画スタイルを取得または設定します。| +|| プロパティが変更されると発生します。| + + コントロールの柔軟性は、多数のコンパニオン クラスを使用することによって実現されます。 以下に、最も重要なコンパニオン クラスを示します。 + +### 重要な ToolStrip コンパニオン クラス + +|名前|Description| +|--------|-----------------| +|| クラスに対して機能の置き換えと追加を行います。| +|| クラスに対して機能の置き換えと追加を行います。| +|| クラスに対して機能の置き換えと追加を行います。| +||、または に格納できるすべての要素のイベントとレイアウトを管理する抽象基本クラスです。| +||コントロールをさまざまな方法で配置できるパネルをフォームの両側に持つコンテナーを提供します。| +|| オブジェクトの描画機能を処理します。| +||Microsoft Office スタイルの外観を提供します。| +|| のレンダリングとラフティング、および の各オブジェクトのマージを制御します。| +||フォームに含まれる複数の オブジェクトに適用される描画スタイル \(カスタム、Windows XP、または Microsoft Office Professional\) を指定します。| +||フォームに含まれる特定の オブジェクトに適用される描画スタイル \(カスタム、Windows XP、または Microsoft Office Professional\) を指定します。| +||厳密には コントロールではないが、 機能が必要な他のコントロールをホストします。| +|| をメイン とオーバーフロー のどちらにレイアウトするか、またはどちらにもレイアウトしないかを指定します。| + + 詳細については、「[ToolStrip テクノロジの概要](../../../../docs/framework/winforms/controls/toolstrip-technology-summary.md)」および「[ToolStrip コントロールのアーキテクチャ](../../../../docs/framework/winforms/controls/toolstrip-control-architecture.md)」を参照してください。 + +## 参照 + + + + + + \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstrip-control-windows-forms.md b/docs/framework/winforms/controls/toolstrip-control-windows-forms.md new file mode 100644 index 00000000000..21356e6f59c --- /dev/null +++ b/docs/framework/winforms/controls/toolstrip-control-windows-forms.md @@ -0,0 +1,109 @@ +--- +title: "ToolStrip コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ツール バー [Windows フォーム]" + - "ToolStrip コントロール [Windows フォーム]" +ms.assetid: e5ef455a-e049-429c-8005-30c93132fb79 +caps.latest.revision: 28 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 28 +--- +# ToolStrip コントロール (Windows フォーム) + コントロールは、Windows フォーム アプリケーションでメニュー、コントロール、およびユーザー コントロールをホストするツール バーです。 + +## このセクションの内容 + [ToolStrip コントロールの概要](../../../../docs/framework/winforms/controls/toolstrip-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : ToolStrip オーバーフローを管理する](../../../../docs/framework/winforms/controls/how-to-manage-toolstrip-overflow-in-windows-forms.md) + オーバーフロー機能を有効にしてオーバーフロー動作を制御する方法について説明します。 + + [方法 : 実行時に ToolStrip 項目を並べ替えできるようにする](../../../../docs/framework/winforms/controls/how-to-enable-reordering-of-toolstrip-items-at-run-time-in-windows-forms.md) + コントロールの実行時の再配置を有効にする方法について説明します。 + + [方法 : ToolStrip コントロールの AutoComplete を有効にする](../../../../docs/framework/winforms/controls/how-to-enable-autocomplete-in-toolstrip-controls-in-windows-forms.md) + の自動補完機能について説明します。 + + [方法 : Windows フォーム内の ToolStrip 項目の間隔と配置を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-spacing-and-alignment-of-toolstrip-items-in-windows-forms.md) + 上で を並べ替えるためのさまざまな方法について説明します。 + + [方法 : Windows フォーム内の ToolStrip テキストとイメージの外観を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-appearance-of-toolstrip-text-and-images-in-windows-forms.md) + コントロール上のテキストとイメージの配置を定義および変更する方法について説明します。 + + [方法 : ToolStripControlHost を使用して Windows フォーム コントロールをラップする](../../../../docs/framework/winforms/controls/how-to-wrap-a-windows-forms-control-with-toolstripcontrolhost.md) + コントロールをホストする方法について説明します。 + + [方法 : Windows フォームに ToolStrip コントロールのカスタム レンダラーを作成して設定する](../../../../docs/framework/winforms/controls/create-and-set-a-custom-renderer-for-the-toolstrip-control-in-wf.md) + コントロール内で標準の描画およびカスタマイズされた描画を行う方法について説明します。 + + [方法 : ToolStrip コントロールをカスタム描画する](../../../../docs/framework/winforms/controls/how-to-custom-draw-a-toolstrip-control.md) + コントロールにおけるカスタム \(オーナー\) 描画のさまざまな側面について説明します。 + + [方法 : ToolStrip コントロールにトグル ボタンを作成する](../../../../docs/framework/winforms/controls/how-to-create-toggle-buttons-in-toolstrip-controls.md) + 切り替え可能な を作成する方法について説明します。 + + [方法 : ToolStrip コントロールにツールヒントを使用する](../../../../docs/framework/winforms/controls/how-to-use-tooltips-in-toolstrip-controls.md) + 項目のツール ヒントを定義する方法について説明します。 + + [方法 : ToolStrip を ToolStripContainer からフォームに移動する](../../../../docs/framework/winforms/controls/how-to-move-a-toolstrip-out-of-a-toolstripcontainer-onto-a-form.md) + コンテナーを持たないものの、フォームを持つ を設定する方法について説明します。 + + [方法 : ToolStrip に ToolStripItem を配置する](../../../../docs/framework/winforms/controls/how-to-position-a-toolstripitem-on-a-toolstrip.md) + の左端または右端に を配置する方法について説明します。 + + [方法 : Tab キーで ToolStrip コントロールから移動できるようにする](../../../../docs/framework/winforms/controls/how-to-enable-the-tab-key-to-move-out-of-a-toolstrip-control.md) + Tab キーを使用して、 内および ToolStrip 外の次のタブ オーダーのコントロールに移動する方法について説明します。 + + [方法 : マウス ポインターが ToolStripItem 上にあることを検出する](../../../../docs/framework/winforms/controls/how-to-detect-when-the-mouse-pointer-is-over-a-toolstripitem.md) + 各種マウス イベントを同期させることなく、項目上にマウスが配置されたことを検出するように 項目をセットアップする方法について説明します。 + + [方法 : ToolStripPanel コントロールを持つ MDI フォームを作成する](../../../../docs/framework/winforms/controls/how-to-create-an-mdi-form-with-toolstrippanel-controls.md) + コントロールを使用して、複数のマルチ ドキュメント インターフェイス \(MDI\) フォームを作成する方法について説明します。 + + [方法 : メニューのマージと ToolStrip コントロールを使用して MDI フォームを作成する](../../../../docs/framework/winforms/controls/how-to-create-an-mdi-form-with-menu-merging-and-toolstrip-controls.md) + コントロールとメニューのマージをサポートする MDI フォームを作成する方法について説明します。 + + [方法 : プロフェッショナル スタイルの ToolStrip コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-professionally-styled-toolstrip-control.md) + クラスを使用して、Microsoft® Outlook® の**ナビゲーション ウィンドウ**に似た複合コントロールを作成する方法について説明します。 + + [方法 : カスタムの ToolStripRenderer を実装する](../../../../docs/framework/winforms/controls/how-to-implement-a-custom-toolstriprenderer.md) + から派生するクラスを実装することによって、 コントロールの外観をカスタマイズする方法について説明します。 + +- [方法 : デザイナーを使用して標準アイテムで基本的な Windows フォーム ToolStrip を作成する](http://msdn.microsoft.com/library/571c1z99\(v=vs.110\)) + +- [方法 : ToolStrip を ToolStripContainer からフォームに移動する](http://msdn.microsoft.com/library/ms171701%20\(v=vs.110\)) + +- [チュートリアル : プロフェッショナル スタイルの ToolStrip コントロールの作成](http://msdn.microsoft.com/library/ms233664\(v=vs.110\)) + +- [チュートリアル : メニューのマージと ToolStrip コントロールのある MDI フォームを作成する](http://msdn.microsoft.com/library/ms233676\(v=vs.110\)) + +- [\[ToolStrip タスク\] ダイアログ ボックス](http://msdn.microsoft.com/library/ms233648\(v=vs.110\)) + +- [ToolStrip Items コレクション エディター](http://msdn.microsoft.com/library/ms233643\(v=vs.110\)) + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + クラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + クラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstrip-technology-summary.md b/docs/framework/winforms/controls/toolstrip-technology-summary.md new file mode 100644 index 00000000000..5787c4a427a --- /dev/null +++ b/docs/framework/winforms/controls/toolstrip-technology-summary.md @@ -0,0 +1,132 @@ +--- +title: "ToolStrip テクノロジの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "メニュー [Windows フォーム], テクノロジの概要" + - "ステータス バー, テクノロジの概要" + - "ツール バー [Windows フォーム], テクノロジの概要" + - "ToolStrip コントロール [Windows フォーム], テクノロジの概要" +ms.assetid: e8d61973-7af9-429f-9df5-05a899c15a7b +caps.latest.revision: 27 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 27 +--- +# ToolStrip テクノロジの概要 +ここでは、`ToolStrip` コントロールおよびその使用をサポートしているクラスの概要について説明します。 + + `ToolStrip` コントロールとその関連クラスは、ツール バー、ステータス バー、メニューを作成するための完全なソリューションを提供します。 + +## 名前空間 + + +## 背景 + `ToolStrip` コントロールと関連クラスを使用すると、外観と動作に一貫性がある、プロフェッショナル レベルの高度なツール バー機能を作成できます。 `ToolStrip` コントロールとクラスでは、以前のコントロールから次の点が改善されました。 + +- より一貫性のあるイベント モデル。 + +- タスク一覧と項目コレクション エディターを含む、より一貫性のあるデザイン時動作。 + +- `ToolStripManager` と `ToolStripRenderer` を使用したカスタム描画。 + +- `ToolStripContainer` と `ToolStripPanel` を使用したビルトイン ラフティング \(ドッキング時にツール領域内の水平スペースと垂直スペースを共有すること\)。 + +- プロパティを使用した、デザイン時および実行時の項目の並べ替え。 + +- プロパティを使用した、オーバーフロー メニューへの項目の再配置。 + +- `ToolStripContainer`、`ToolStripPanel`、`ToolStripContentPanel` を使用した、自由に構成可能なコントロール位置。 + +- `ToolStripControlHost` を使用した、`ToolStrip`、従来のコントロール、またはカスタム コントロールのホスト。 + +- `ToolStripPanel` を使用した `ToolStrip` コントロールのマージ。 + + `ToolStrip` は、`MenuStrip`、`ContextMenuStrip`、`StatusStrip` の拡張可能な基底クラスです。 これらのコントロールは、共通の動作とイベント処理を継承する コンテナーで、それぞれの実装で適切な動作を処理できるように拡張されています。 から派生するコントロールについて、次の表に示します。 `ToolStrip` 基底クラスでは、コントロールの描画、ユーザー入力、ドラッグ アンド ドロップの各イベントを処理します。 + + `ToolStrip`、`MenuStrip`、`ContextMenuStrip`、`StatusStrip` の各コントロールは、以前のツール バー、メニュー、ショートカット メニュー、ステータス バーの各コントロールに置き換わるものです。ただし、これらのコントロールも下位互換性の目的で保持されています。 + +## ToolStrip のクラスの概要 + テクノロジ分野でグループ化した ToolStrip クラスを次の表に示します。 + +|テクノロジ分野|クラス| +|-------------|---------| +|ツール バー、ステータス、メニューのコンテナー|







| +|ToolStrip 項目|





















| +|場所|



| +|プレゼンテーションと描画|







| + +## ToolStrip のデザイン時機能 + ファミリのコントロールには、実用的なアプリケーションを短期間で作成できるように、埋め込み先での編集とユーザー インターフェイスの基盤の定義を行うための豊富なツールとテンプレートのセットが用意されています。 + +### タスク ダイアログ ボックス + Visual Studio のデザイナーでコントロールのスマート タグをクリックすると、タスク一覧が表示されます。タスク一覧からは、よく使用する多くのコマンドに簡単にアクセスできます。 + +- [\[MenuStrip タスク\] ダイアログ ボックス](http://msdn.microsoft.com/library/ms233645\(v=vs.110\)) + +- [\[ToolStrip タスク\] ダイアログ ボックス](http://msdn.microsoft.com/library/ms233648\(v=vs.110\)) + +- [\[ContextMenuStrip タスク\] ダイアログ ボックス](http://msdn.microsoft.com/library/ms233646\(v=vs.110\)) + +- [\[StatusStrip タスク\] ダイアログ ボックス](http://msdn.microsoft.com/library/ms233642\(v=vs.110\)) + +- [\[ToolStripContainer タスク\] ダイアログ ボックス](http://msdn.microsoft.com/library/ms233647\(v=vs.110\)) + +### 項目コレクション エディター + Visual Studio で、タスク一覧の \[**項目の編集**\] をクリックするか、コントロールを右クリックしてショートカット メニューの \[**項目の編集**\] を選択すると、そのコントロールのコレクション エディターが表示されます。 コレクション エディターを使用すると、コントロールに含まれる項目の追加、削除、並べ替えを行うことができます。 また、コントロールとコントロール項目のプロパティを表示および変更することもできます。 + +- [MenuStrip Items コレクション エディター](http://msdn.microsoft.com/library/ms233625\(v=vs.110\)) + +- [StatusStrip Items コレクション エディター](http://msdn.microsoft.com/library/ms233631\(v=vs.110\)) + +- [ContextMenuStrip Items コレクション エディター](http://msdn.microsoft.com/library/ms233641\(v=vs.110\)) + +- [ToolStrip Items コレクション エディター](http://msdn.microsoft.com/library/ms233643\(v=vs.110\)) + +## コントロールのホスト + クラスは、 コントロール、 コントロール、 コントロールのためのビルトイン ラッパーを提供します。 その他の既存のコントロールまたは COM コントロールを でホストすることもできます。 + + コントロール ホストの例については、[方法 : ToolStripControlHost を使用して Windows フォーム コントロールをラップする](../../../../docs/framework/winforms/controls/how-to-wrap-a-windows-forms-control-with-toolstripcontrolhost.md) を参照してください。 + +## レンダリング + クラスでは、他の Windows フォーム コントロールとは大きく異なる描画スキームを実装します。 このスキームを使用すると、スタイルとテーマを簡単に適用できます。 + + とそこに含まれるすべての オブジェクトにスタイルを適用する場合、 イベントを項目ごとに処理する必要はありません。 代わりに、 プロパティを 値のいずれかに設定できます \( を除きます\)。 さらに別の方法として、 クラスを継承する任意のクラスに を直接設定することもできます。 このプロパティを設定すると、 が自動的に設定されます。 + + に設定し、 または プロパティをそれぞれ任意の または 値に設定すると、同じアプリケーション内の複数の オブジェクトに同じスタイルを適用できます。 + + レンダリングの例については、[方法 : Windows フォームに ToolStrip コントロールのカスタム レンダラーを作成して設定する](../../../../docs/framework/winforms/controls/create-and-set-a-custom-renderer-for-the-toolstrip-control-in-wf.md) を参照してください。 + +## スタイルとテーマ + とその関連クラスは、表示スタイルとカスタムの外観を容易にサポートします。この場合、 メソッドを項目ごとにオーバーライドする必要はありません。 と、 プロパティおよび プロパティを使用します。 + +## ラフティングとドッキング + コントロールは、ラフティング、ドッキング、または絶対位置を指定して配置できます。 項目は、コンテナーの によってレイアウトされます。 + + *ラフティング*は、水平スペースまたは垂直スペースを共有するためのツール バーの機能です。 Windows フォームでは、 の各コントロールの配置とラフティングを行うときに、フォームの左側、右側、上側、下側にパネルを持つ を使用できます。 複数の コントロールを左右の に配置すると、コントロールは垂直方向に積み重ねられます。 上または下の に配置すると、コントロールは水平方向に積み重ねられます。 の中央の を使用すると、従来のコントロールをフォーム上に配置できます。 + + 一部または全部の コントロールを、デザイン時に直接選択して削除できます。 は展開および折りたたみが可能で、内部のコントロールに合わせてサイズ調整されます。 + + *ドッキング* は、コントロールの位置をフォームの左側、右側、上側、または下側に単純に指定することです。 + + ドッキングよりもラフティングの方が有利な点は、 の各コントロールが他のコントロールと水平スペースまたは垂直スペースを共有できることです。 + + ほとんどの コントロールは、他のコントロールと同様、ラフティングを使用せずにフォームにドッキングできます。 また、 コントロールを 外に移動し、`Dock` プロパティを `None` に設定することによって、コントロールをフォーム上の任意の配置することもできます。また、それぞれの プロパティを設定して、コントロールの絶対位置を指定することもできます。 「[方法 : ToolStrip を ToolStripContainer からフォームに移動する](../../../../docs/framework/winforms/controls/how-to-move-a-toolstrip-out-of-a-toolstripcontainer-onto-a-form.md)」を参照してください。 + + 1 つ以上の コントロールを使用すると、柔軟性が高まります。特に、マルチ ドキュメント インターフェイス \(MDI: Multiple Document Interface\) アプリケーションの場合、または が不要な場合には、これが当てはまります。 には、 コントロールの配置とラフティングのためにドッキングできる領域が用意されていますが、従来のコントロールには用意されていません。 既定では、 はデザイナーの \[**ツールボックス**\] に表示されませんが、\[**ツールボックス**\] を右クリックして \[**アイテムの選択**\] をクリックすると配置できます。 また、他のクラスと同様に、 にプログラムからアクセスすることもできます。 + + 、および を使用すると、項目はオーバーフローします。 これは、Microsoft Office ツール バーの項目の動作と似ています。 + +## 参照 + [ToolStrip コントロールの概要](../../../../docs/framework/winforms/controls/toolstrip-control-overview-windows-forms.md) + [ToolStrip コントロールのアーキテクチャ](../../../../docs/framework/winforms/controls/toolstrip-control-architecture.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstripcontainer-control-overview.md b/docs/framework/winforms/controls/toolstripcontainer-control-overview.md new file mode 100644 index 00000000000..72812431d1b --- /dev/null +++ b/docs/framework/winforms/controls/toolstripcontainer-control-overview.md @@ -0,0 +1,46 @@ +--- +title: "ToolStripContainer コントロールの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ToolStripContainer" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ツール バー [Windows フォーム], ビルトイン ラフティング" + - "ToolStripContainer コントロール [Windows フォーム], ToolStripContainer コントロールの概要" +ms.assetid: c7d63bff-64e2-4a63-bd89-d31bc96dacb8 +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# ToolStripContainer コントロールの概要 + には、、および の各コントロールの配置およびラフティングのためのパネルが、上下左右のそれぞれの側にあります。 複数の コントロールを左右の に配置すると、コントロールは垂直方向に積み重ねられます。 上または下の に配置すると、コントロールは水平方向に積み重ねられます。 の中央の を使用すると、従来のコントロールをフォーム上に配置できます。 + + すべての コントロールは、デザイン時に直接選択して削除できます。 の各パネルは展開および折りたたみが可能で、内部のコントロールに合わせてサイズ調整されます。 + +### ToolStripContainer の重要なメンバー + +|名前|Description| +|--------|-----------------| +|| の下側パネルを取得します。| +|| の下パネルが表示されるかどうかを示す値を取得または設定します。| +|| の左パネルを取得します。| +|| の左パネルが表示されるかどうかを示す値を取得または設定します。| +|| の右パネルを取得します。| +|| の右パネルが表示されるかどうかを示す値を取得または設定します。| +|| の上パネルを取得します。| +|| の上パネルが表示されるかどうかを示す値を取得または設定します。| + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstripcontainer-control.md b/docs/framework/winforms/controls/toolstripcontainer-control.md new file mode 100644 index 00000000000..3035a40cbd7 --- /dev/null +++ b/docs/framework/winforms/controls/toolstripcontainer-control.md @@ -0,0 +1,54 @@ +--- +title: "ToolStripContainer コントロール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ツール バー [Windows フォーム], ビルトイン ラフティング" + - "ToolStrip コントロール [Windows フォーム], ToolStripContainer" + - "ToolStripContainer コントロール [Windows フォーム]" +ms.assetid: 378fa5b4-38e1-46f4-8e5c-d0c19dcd0200 +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# ToolStripContainer コントロール + コントロールは、 の使用による、ビルトイン ラフティング \(ドッキングされているときに、ツールの領域内の水平または垂直のスペースを共有\) を備えています。 + + このセクションのトピックでは、 の機能をアプリケーションに組み込むときに使用できる概念および手法について説明します。 + +## このセクションの内容 + [ToolStripContainer コントロールの概要](../../../../docs/framework/winforms/controls/toolstripcontainer-control-overview.md) + Windows フォームの コントロールの目的および中心となる概念を説明するトピックを示します。 + + [方法 : フォームに ToolStripContainer を追加する](../../../../docs/framework/winforms/controls/how-to-add-a-toolstripcontainer-to-a-form.md) + のアプリケーションへの追加と、 の特定のパネルへのコントロールの追加を示します。 + + [方法 : ToolStripContentPanel にコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-a-control-to-a-toolstripcontentpanel.md) + へのコントロールの追加を示します。 + +## 関連項目 + + コントロールのリファレンス ドキュメントを提供します。 + + + コントロールの のリファレンス ドキュメントを提供します。 + + 「[\[ToolStripContainer タスク\] ダイアログ ボックス](http://msdn.microsoft.com/library/ms233647\(v=vs.110\))」も参照してください。 + +## 関連項目 + + コントロールのリファレンス ドキュメントを提供します。 + +## 参照 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstrippanel-control-overview.md b/docs/framework/winforms/controls/toolstrippanel-control-overview.md new file mode 100644 index 00000000000..b23fe6c472f --- /dev/null +++ b/docs/framework/winforms/controls/toolstrippanel-control-overview.md @@ -0,0 +1,43 @@ +--- +title: "ToolStripPanel コントロールの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ToolStripPanel" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ツール バー [Windows フォーム]" + - "ToolStripPanel コントロール [Windows フォーム], ToolStripPanel コントロールの概要" +ms.assetid: ce54a60c-5eba-4b4c-bd77-cf0748a666cc +caps.latest.revision: 5 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 5 +--- +# ToolStripPanel コントロールの概要 + は、、および の各コントロールを配置およびラフティングするための単一の領域です。 に基づいて、複数の コントロールが垂直または水平に並びます。 + +### ToolStripPanel の重要なメンバー + +|名前|Description| +|--------|-----------------| +|| の向きが水平方向であるか垂直方向であるかを示す値を取得または設定します。| +|| の外観のカスタマイズに使用する を取得または設定します。| +|| に適用される描画スタイルを取得または設定します。| +|| の間隔をピクセル単位で取得または設定します。| +||この を取得します。| +|| に追加します。| + +## 参照 + + + [ToolStrip Sample](http://msdn.microsoft.com/ja-jp/b7352439-184a-4a3a-b2ad-07465d3af9ed) \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstrippanel-control.md b/docs/framework/winforms/controls/toolstrippanel-control.md new file mode 100644 index 00000000000..74b4d0a38fc --- /dev/null +++ b/docs/framework/winforms/controls/toolstrippanel-control.md @@ -0,0 +1,47 @@ +--- +title: "ToolStripPanel コントロール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "水平スペース" + - "ツール領域 [Windows フォーム]" + - "ToolStrip コントロール [Windows フォーム], ToolStripPanel" + - "ToolStripPanel コントロール [Windows フォーム]" + - "垂直スペース" +ms.assetid: aa47af39-1e71-40ee-bb75-2d2478f81bd0 +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# ToolStripPanel コントロール +`ToolStripPanel` コントロールは、ドッキングしたときにツールの領域内の水平方向または縦方向のスペースを共有し、 の 4 つのパネルと中庸のパネルが必要ないときに コントロールを調整することができます。 + + このセクションのトピックでは、`ToolStripPanel` の機能をアプリケーションに組み込むときに使用できる概念および手法について説明します。 + +## このセクションの内容 + [ToolStripPanel コントロールの概要](../../../../docs/framework/winforms/controls/toolstrippanel-control-overview.md) + Windows フォームの コントロールの目的および中心となる概念を説明するトピックを示します。 + + [方法 : ToolStripPanel を結合する](../../../../docs/framework/winforms/controls/how-to-join-toolstrippanels.md) + コントロールを `ToolStripPanel` に追加する方法を示しています。 + + [方法 : ToolStripPanel を MDI で使用する](../../../../docs/framework/winforms/controls/how-to-use-toolstrippanels-for-mdi.md) + マルチ ドキュメント インターフェイス アプリケーションの `ToolStripPanel` コントロールにより利用できる柔軟性を示しています。 + +## 関連項目 + + コントロールのリファレンス ドキュメントを提供します。 + +## 参照 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstripprogressbar-control-overview.md b/docs/framework/winforms/controls/toolstripprogressbar-control-overview.md new file mode 100644 index 00000000000..996e2e1bcfc --- /dev/null +++ b/docs/framework/winforms/controls/toolstripprogressbar-control-overview.md @@ -0,0 +1,44 @@ +--- +title: "ToolStripProgressBar コントロールの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ToolStripProgressBar" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "プログレス コントロール" + - "ツール バー [Windows フォーム], プログレス バー" + - "ToolStripProgressBar コントロール [Windows フォーム], ToolStripProgressBar コントロール" +ms.assetid: ec3ab522-5fe4-4b4d-a551-bc19e84f4774 +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# ToolStripProgressBar コントロールの概要 + は、すべての コントロールのラフティング機能および描画機能を、通常の処理追跡機能と組み合わせたものです。 は、 によりホストされるのが一般的ですが、 によりホストされる場合もあります。 + + コントロールは、以前のバージョンのコントロールに置き換わると共に追加の機能を提供します。ただし、 コントロールは、下位互換性を保持するため、および将来必要になったときに使用できるように保持されています。 + +### ToolStripProgressBar の重要なメンバー + +|名前|Description| +|--------|-----------------| +|| の表示のそれぞれの更新の間隔をミリ秒単位で表す値を取得または設定します。| +||この に対して定義される範囲の上限を取得または設定します。| +||この に対して定義される範囲の下限を取得または設定します。| +|| が操作の進行状況の表示に使用するスタイルを取得または設定します。| +|| コントロールの現在の値を取得または設定します。| +||プログレス バーの現在位置を プロパティの値の分だけ進めます。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstripprogressbar-control.md b/docs/framework/winforms/controls/toolstripprogressbar-control.md new file mode 100644 index 00000000000..101cfe68ad8 --- /dev/null +++ b/docs/framework/winforms/controls/toolstripprogressbar-control.md @@ -0,0 +1,41 @@ +--- +title: "ToolStripProgressBar コントロール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "プログレス コントロール" + - "ツール バー [Windows フォーム], プログレス バー" + - "ToolStrip コントロール [Windows フォーム], ToolStripProgressBar" + - "ToolStripProgressBar コントロール [Windows フォーム]" +ms.assetid: cb3eb0a8-60b1-483e-a03f-93b0b1351dae +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# ToolStripProgressBar コントロール + は、 の描画機能およびラフティング機能と、一般的な処理追跡機能とを組み合わせたものです。 + +## このセクションの内容 + [ToolStripProgressBar コントロールの概要](../../../../docs/framework/winforms/controls/toolstripprogressbar-control-overview.md) + Windows フォームの コントロールの用途と主要な概念を説明するトピックを示します。 + +## 関連項目 + + コントロールの参照ドキュメントを提供します。 + + + コントロールの参照ドキュメントを提供します。 + +## 参照 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstripstatuslabel-control-overview.md b/docs/framework/winforms/controls/toolstripstatuslabel-control-overview.md new file mode 100644 index 00000000000..377713f372d --- /dev/null +++ b/docs/framework/winforms/controls/toolstripstatuslabel-control-overview.md @@ -0,0 +1,38 @@ +--- +title: "ToolStripStatusLabel コントロールの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ToolStripStatusLabel" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ステータス バー" + - "ToolStripStatusLabel コントロール [Windows フォーム], aboutToolStripStatusLabel コントロール" +ms.assetid: 0b9c991e-a9fa-4609-9e1b-caadaef93821 +caps.latest.revision: 4 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 4 +--- +# ToolStripStatusLabel コントロールの概要 + 用のラベルです。 と同様に、 を使用すると、テキスト、イメージ、またはその両方にクリックできない表示領域を作成できます。 によってホストされます。 + +### ToolStripStatusLabel の重要なメンバー + +|名前|Description| +|--------|-----------------| +||フォームのサイズが変更されたときに、 が自動的に 上の使用可能な領域を占めるかどうかを表す値を取得または設定します。| +|| のどちらの側に境界線を表示するかを示す値を取得または設定します。| +|| の境界線スタイルを取得または設定します。| + +## 参照 + \ No newline at end of file diff --git a/docs/framework/winforms/controls/toolstripstatuslabel-control.md b/docs/framework/winforms/controls/toolstripstatuslabel-control.md new file mode 100644 index 00000000000..59710a1a9ca --- /dev/null +++ b/docs/framework/winforms/controls/toolstripstatuslabel-control.md @@ -0,0 +1,43 @@ +--- +title: "ToolStripStatusLabel コントロール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ステータス バー" + - "ToolStrip コントロール [Windows フォーム], ToolStripStatusLabel" + - "ToolStripStatusLabel コントロール [Windows フォーム]" +ms.assetid: 099bc74a-a29f-4f15-af0d-7c517ef50c7e +caps.latest.revision: 4 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 4 +--- +# ToolStripStatusLabel コントロール + は、テキスト、イメージ、またはその両方の 内に表示領域を用意します。 + +## このセクションの内容 + [ToolStripStatusLabel コントロールの概要](../../../../docs/framework/winforms/controls/toolstripstatuslabel-control-overview.md) + Windows フォーム コントロールの用途と主な概念について説明するトピックを示します。 + +## 関連項目 + + コントロールの参照ドキュメントを提供します。 + + + コントロールの参照ドキュメントを提供します。 + + + コントロールの参照ドキュメントを提供します。 + +## 参照 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/tooltip-component-overview-windows-forms.md b/docs/framework/winforms/controls/tooltip-component-overview-windows-forms.md new file mode 100644 index 00000000000..ce3a8bb727c --- /dev/null +++ b/docs/framework/winforms/controls/tooltip-component-overview-windows-forms.md @@ -0,0 +1,37 @@ +--- +title: "ToolTip コンポーネントの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ToolTip" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ToolTip コンポーネント [Windows フォーム], ToolTip コンポーネントの概要" + - "ツールヒント [Windows フォーム], ツールヒントの概要" +ms.assetid: 3fbc6f08-c882-4acd-a960-a08efe3c7e6e +caps.latest.revision: 7 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 7 +--- +# ToolTip コンポーネントの概要 (Windows フォーム) +Windows フォームの コンポーネントは、ユーザーがコントロールをポイントしたときにテキストを表示します。 ツールヒントは、どのコントロールにも関連付けることができます。 たとえば、ボタンに小さなアイコンを表示し、ツールヒントでボタンの機能を説明することで、フォームのスペースを節約できます。 + +## ToolTip コンポーネントの操作 + コンポーネントは、Windows フォームなどのコンテナーにある複数のコントロールに `ToolTip` プロパティを提供します。 たとえば、1 つの コンポーネントをフォームに配置して、 コントロールをポイントしたときに "ここに名前を入力してください" と表示したり、 コントロールをポイントしたときに "変更を保存するときはこのボタンをクリックしてください" と表示したりできます。 + + コンポーネントの主要なメソッドは、 および です。 メソッドは、コントロールに対応するツールヒントを設定します。 詳細については、「[方法 : デザイン時に Windows フォームのコントロールにツールヒントを設定する](../../../../docs/framework/winforms/controls/how-to-set-tooltips-for-controls-on-a-windows-form-at-design-time.md)」を参照してください。 主要なプロパティは 2 つです。ツールヒントを表示するには プロパティを `true` に設定する必要があります。 プロパティでは、ツールヒント文字列が表示される時間の長さ、ツールヒントが表示されるまでコントロールをポイントする必要がある時間、および後続のツールヒント ウィンドウが表示されるまでの時間を設定します。 詳細については、「[方法 : Windows フォームの ToolTip コンポーネントの遅延時間を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-delay-of-the-windows-forms-tooltip-component.md)」を参照してください。 + +## 参照 + + [方法 : デザイン時に Windows フォームのコントロールにツールヒントを設定する](../../../../docs/framework/winforms/controls/how-to-set-tooltips-for-controls-on-a-windows-form-at-design-time.md) + [方法 : Windows フォームの ToolTip コンポーネントの遅延時間を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-delay-of-the-windows-forms-tooltip-component.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/tooltip-component-windows-forms.md b/docs/framework/winforms/controls/tooltip-component-windows-forms.md new file mode 100644 index 00000000000..ed719fbb24c --- /dev/null +++ b/docs/framework/winforms/controls/tooltip-component-windows-forms.md @@ -0,0 +1,46 @@ +--- +title: "ToolTip コンポーネント (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ToolTip コンポーネント [Windows フォーム]" + - "ツールヒント [Windows フォーム]" +ms.assetid: 82e71dc3-0159-4f91-9f22-499224f004a0 +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# ToolTip コンポーネント (Windows フォーム) +Windows フォーム コンポーネントは、ユーザーがコントロールをポイントしたときにテキストを表示します。 ツールヒントは任意のコントロールに関連付けることができます。 このコントロールの使用例: フォーム上の領域を節約するために、ボタンに小さなアイコンを表示して、ツールヒントを使用し、ボタンの機能について説明できます。 + +## このセクションの内容 + [ToolTip コンポーネントの概要](../../../../docs/framework/winforms/controls/tooltip-component-overview-windows-forms.md) + ユーザーがマウスをコントロールにポイントしたときにテキストを表示する コンポーネントの一般的な概要について説明します。 + + [方法 : デザイン時に Windows フォームのコントロールにツールヒントを設定する](../../../../docs/framework/winforms/controls/how-to-set-tooltips-for-controls-on-a-windows-form-at-design-time.md) + コードまたはデザイナーでツールヒントを設定する方法について説明します。 + + [方法 : Windows フォームの ToolTip コンポーネントの遅延時間を変更する](../../../../docs/framework/winforms/controls/how-to-change-the-delay-of-the-windows-forms-tooltip-component.md) + ツールヒントが表示されるまでの時間の長さ、および表示される時間を制御する値の設定方法について説明します。 + +## 関連項目 + クラス + クラスとそのメンバーに関するリファレンス情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 + + [ツールヒントを使用したコントロールのヘルプ](../../../../docs/framework/winforms/advanced/control-help-using-tooltips.md) + Windows フォームの各コントロール専用の簡潔なヘルプ メッセージを作成する方法としてのツールヒントについて説明します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/trackbar-control-overview-windows-forms.md b/docs/framework/winforms/controls/trackbar-control-overview-windows-forms.md new file mode 100644 index 00000000000..87c532ffbb5 --- /dev/null +++ b/docs/framework/winforms/controls/trackbar-control-overview-windows-forms.md @@ -0,0 +1,37 @@ +--- +title: "TrackBar コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "TrackBar" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "スライダー コントロール, スライダー コントロールの概要" + - "スライダー, スライダーの概要" + - "TrackBar コントロール [Windows フォーム], TrackBar コントロールの概要" +ms.assetid: 95910ecb-8a4c-4776-89fa-206c89ed6973 +caps.latest.revision: 7 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 7 +--- +# TrackBar コントロールの概要 (Windows フォーム) +Windows フォームの コントロールは、"スライダー" コントロールとも呼ばれ、大量の情報内を移動する場合や、数値設定を視覚的に調整する場合などに使用します。 コントロールは、つまみ \(スライダー\) と軸目盛りという 2 つの部分で構成されます。 つまみは調整できます。 つまみの位置は プロパティに対応しています。 軸目盛りは、一定の間隔で区切られた視覚的なインジケーターです。 トラック バーは、指定した単位で移動し、水平または垂直に調整できます。 たとえば、トラック バーを使用して、システムのカーソル点滅速度やマウス速度を制御できます。 + +## 主要なプロパティ + コントロールの主要なプロパティは、、および です。 は、軸目盛りの間隔です。 および は、トラック バーに表示できる最小値および最大値です。 + + その他に、 という 2 つの重要なプロパティがあります。 プロパティの値は、左右の方向キーを押したときにつまみが移動する目盛りの数です。 プロパティの値は、PageUp キーまたは PageDown キーを押したとき、またはトラック バー上でつまみの左右をマウス クリックしたときに、つまみが移動する目盛りの数です。 + +## 参照 + + [TrackBar コントロール](../../../../docs/framework/winforms/controls/trackbar-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/trackbar-control-windows-forms.md b/docs/framework/winforms/controls/trackbar-control-windows-forms.md new file mode 100644 index 00000000000..fed50fbbbf6 --- /dev/null +++ b/docs/framework/winforms/controls/trackbar-control-windows-forms.md @@ -0,0 +1,38 @@ +--- +title: "TrackBar コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "スライダー コントロール" + - "スライダー" + - "TrackBar コントロール [Windows フォーム]" +ms.assetid: 37d6aee3-7e8a-4a10-a99c-3a6e09199553 +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# TrackBar コントロール (Windows フォーム) +Windows フォームの `TrackBar` コントロールは、大量の情報内を移動する場合や、数値設定を視覚的に調整する場合などに使用します \("スライダー" コントロールとも呼ばれます\)。 `TrackBar` コントロールは、つまみ \(スライダー\) と軸目盛りという 2 つの部分で構成されます。 つまみは調整できます。 つまみの位置は プロパティに対応しています。 軸目盛りは、一定の間隔で区切られた視覚的なインジケーターです。 トラック バーは、指定した単位で移動し、水平または垂直に調整できます。 たとえば、トラック バーを使用して、カーソルの点滅速度やマウスの速度などが設定できます。 + +## このセクションの内容 + [TrackBar コントロールの概要](../../../../docs/framework/winforms/controls/trackbar-control-overview-windows-forms.md) + `TrackBar` コントロールの全般的な概念を説明します。このコントロールにより、ユーザーは数値設定を視覚的に調整して情報内を移動できます。 + +## 関連項目 + クラス + クラスとそのメンバーに関する参照情報を提供します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/treeview-control-overview-windows-forms.md b/docs/framework/winforms/controls/treeview-control-overview-windows-forms.md new file mode 100644 index 00000000000..5789a590880 --- /dev/null +++ b/docs/framework/winforms/controls/treeview-control-overview-windows-forms.md @@ -0,0 +1,38 @@ +--- +title: "TreeView コントロールの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "TreeView" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "TreeView コントロール [Windows フォーム], TreeView コントロールの概要" +ms.assetid: 0ece823a-9508-478a-bbdb-7d7c3bae51d5 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# TreeView コントロールの概要 (Windows フォーム) +Windows フォームの コントロールでは、Windows オペレーティング システムの Windows エクスプローラーの左側のウィンドウにファイルやフォルダーが表示されるのと同じように、ノードの階層をユーザーに表示することができます。 ツリー ビュー内の各ノードには、*子ノード*と呼ばれるその他のノードが含まれている可能性があります。 親ノード、または子ノードを含むノードを展開または折りたたんで表示できます。 また、ツリー ビューの プロパティを `true` に設定することで、ノードの横にチェック ボックスがあるツリー ビューを表示することもできます。 ノードの プロパティを `true` または `false` に設定することにより、プログラムでノードをオンまたはオフにすることができます。 + +## 主要プロパティ + コントロールの主要プロパティは、 および です。 プロパティには、ツリー ビューの最上位のノードの一覧が含まれています。 プロパティは、現在選択されているノードを設定します。 ノードの横にあるアイコンを表示することができます。 コントロールはツリー ビューの プロパティで という名前のイメージを使用します。 プロパティは、ツリー ビューでノードの既定のイメージを設定します。 イメージを表示する方法についての詳細については、「[方法 : Windows フォーム TreeView コントロールのアイコンを設定する](../../../../docs/framework/winforms/controls/how-to-set-icons-for-the-windows-forms-treeview-control.md)」を参照してください。 [!INCLUDE[vsprvslong](../../../../includes/vsprvslong-md.md)] を使用している場合は、 コントロールによって使用できる標準のイメージの大規模なライブラリにアクセスできます。 + +## 参照 + + [TreeView コントロール](../../../../docs/framework/winforms/controls/treeview-control-windows-forms.md) + [方法 : Windows フォーム TreeView コントロールのアイコンを設定する](../../../../docs/framework/winforms/controls/how-to-set-icons-for-the-windows-forms-treeview-control.md) + [方法 : Windows フォーム TreeView コントロールでノードを追加および削除する](../../../../docs/framework/winforms/controls/how-to-add-and-remove-nodes-with-the-windows-forms-treeview-control.md) + [方法 : Windows フォーム TreeView コントロールのすべてのノードを反復処理する](../../../../docs/framework/winforms/controls/how-to-iterate-through-all-nodes-of-a-windows-forms-treeview-control.md) + [方法 : クリックされた TreeView ノードを判別する](../../../../docs/framework/winforms/controls/how-to-determine-which-treeview-node-was-clicked-windows-forms.md) + [方法 : TreeView コントロールまたは ListView コントロール \(Windows フォーム\) にカスタム情報を追加する](../../../../docs/framework/winforms/controls/add-custom-information-to-a-treeview-or-listview-control-wf.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/treeview-control-windows-forms.md b/docs/framework/winforms/controls/treeview-control-windows-forms.md new file mode 100644 index 00000000000..6912672b6ae --- /dev/null +++ b/docs/framework/winforms/controls/treeview-control-windows-forms.md @@ -0,0 +1,59 @@ +--- +title: "TreeView コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "チェックされたリスト項目, Windows フォーム コントロール" + - "リスト コントロール, Windows フォーム" + - "リスト項目, Windows フォーム コントロール (項目の表示)" + - "TreeView コントロール [Windows フォーム]" +ms.assetid: 879438b4-4eac-45c6-b345-0229c9b21ab0 +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# TreeView コントロール (Windows フォーム) +Windows フォームの `TreeView` コントロールでは、Windows オペレーティング システムの Windows エクスプローラーの左側のウィンドウにファイルやフォルダーが表示されるのと同じように、ノードの階層を表示することができます。 + +## このセクションの内容 + [TreeView コントロールの概要](../../../../docs/framework/winforms/controls/treeview-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [方法 : Windows フォーム TreeView コントロールでノードを追加および削除する](../../../../docs/framework/winforms/controls/how-to-add-and-remove-nodes-with-the-windows-forms-treeview-control.md) + ツリー ビューにノードを追加または削除するための方法を説明します。 + + [方法 : TreeView コントロールまたは ListView コントロール \(Windows フォーム\) にカスタム情報を追加する](../../../../docs/framework/winforms/controls/add-custom-information-to-a-treeview-or-listview-control-wf.md) + リスト ビュー内のアイテムまたはツリー ビュー内のノードを派生して、必要なフィールド、メソッド、またはコンストラクターを追加するための手順を説明します。 + + [方法 : クリックされた TreeView ノードを判別する](../../../../docs/framework/winforms/controls/how-to-determine-which-treeview-node-was-clicked-windows-forms.md) + アプリケーションが適切に応答できるように、ツリー ビュー内のどのノードがクリックされたか判断する方法を説明します。 + + [方法 : Windows フォーム TreeView コントロールのすべてのノードを反復処理する](http://msdn.microsoft.com/ja-jp/427f8928-ebcf-4beb-887f-695b905d5134) + ツリー ビュー内の各ノードを確認するための手順を説明します。 + + [方法 : Windows フォーム TreeView コントロールのアイコンを設定する](http://msdn.microsoft.com/ja-jp/c14ddcc0-e5a6-4c21-a2d5-6799fd491781) + ツリー ビューのノードのアイコンを表示する方法について説明します。 + + [方法 : ショートカット メニューを TreeView ノードに追加する](../../../../docs/framework/winforms/controls/how-to-attach-a-shortcut-menu-to-a-treeview-node.md) + ツリー ビュー ノードにショートカット メニューを追加する方法について説明します。 + + 「[方法 : デザイナーで Windows フォーム TreeView コントロールを使ってノードを追加および削除する](http://msdn.microsoft.com/library/ms233651\(v=vs.110\))」、「[方法 : デザイナーを使用して TreeNode にショートカット メニューを割り当てる](http://msdn.microsoft.com/library/ms171708\(v=vs.110\))」も参照してください。 + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + Windows フォーム コントロールの完全な一覧を、使用に関する情報リンクと共に提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/controls/troubleshooting-control-and-component-authoring.md b/docs/framework/winforms/controls/troubleshooting-control-and-component-authoring.md new file mode 100644 index 00000000000..072e0fdde04 --- /dev/null +++ b/docs/framework/winforms/controls/troubleshooting-control-and-component-authoring.md @@ -0,0 +1,123 @@ +--- +title: "コントロールとコンポーネントの作成時のトラブルシューティング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コンポーネント [Windows フォーム], トラブルシューティング" + - "コントロール [Windows フォーム], トラブルシューティング" + - "トラブルシューティング (コンポーネントの)" + - "トラブルシューティング (コントロール)" + - "Windows フォーム コントロール, デバッグ" +ms.assetid: e9c8c099-2271-4737-882f-50f336c7a55e +caps.latest.revision: 22 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 22 +--- +# コントロールとコンポーネントの作成時のトラブルシューティング +このトピックでは、コンポーネントとコントロールの作成時に発生する次の一般的な問題について説明します。 詳細については、「[コンポーネントによるプログラミング](../Topic/Programming%20with%20Components.md)」を参照してください。 + +- ツールボックスにコントロールを追加できない + +- Windows フォームのユーザー コントロールまたはコンポーネントをデバッグできない + +- 継承されたコントロールまたはコンポーネントでイベントが 2 回発生する + +- デザイン時エラー : "コンポーネント '*コンポーネント名*' を生成できませんでした。" + +- STAThreadAttribute + +- コンポーネント アイコンがツールボックスに表示されない + +## ツールボックスにコントロールを追加できない + 別のプロジェクトで作成したカスタム コントロールまたはサードパーティ コントロールを**ツールボックス**に追加する場合は、手動で追加する必要があります。 コントロールまたはコンポーネントが現在のプロジェクトに含まれているときは、**ツールボックス**に自動的に表示されます。 詳細については、「[チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定](../../../../docs/framework/winforms/controls/walkthrough-automatically-populating-the-toolbox-with-custom-components.md)」を参照してください。 + +#### コントロールをツールボックスに追加するには + +1. **\[ツールボックス\]** を右クリックして、ショートカット メニューの **\[アイテムの選択\]** をクリックします。 + +2. **\[ツールボックス アイテムの選択\]** ダイアログ ボックスで、コンポーネントを追加します。 + + - .NET Framework コンポーネントまたはコントロールを追加するには、**\[.NET Framework コンポーネント\]** タブをクリックします。 + + または + + - COM コンポーネントまたは ActiveX コントロールを追加するには、**\[COM コンポーネント\]** タブをクリックします。 + +3. ダイアログ ボックスにコントロールが一覧表示されたら、コントロールが選択されていることを確認して **\[OK\]** をクリックします。 + + コントロールが**ツールボックス**に追加されます。 + +4. ダイアログ ボックスにコントロールが一覧表示されない場合は、次の手順を実行します。 + + 1. **\[Browse\]** をクリックします。 + + 2. コントロールが入っている .dll ファイルが格納されたフォルダーを参照します。 + + 3. .dll ファイルを選択し、**\[開く\]** をクリックします。 + + ダイアログ ボックスにコントロールが表示されます。 + + 4. コントロールが選択されていることを確認して **\[OK\]** をクリックします。 + + コントロールが**ツールボックス**に追加されます。 + +## Windows フォームのユーザー コントロールまたはコンポーネントをデバッグできない + コントロールが クラスから派生している場合は、テスト コンテナーで実行時の動作をデバッグできます。 詳細については、「[方法 : UserControl の実行時の動作をテストする](../../../../docs/framework/winforms/controls/how-to-test-the-run-time-behavior-of-a-usercontrol.md)」を参照してください。 + + その他のカスタム コントロールやカスタム コンポーネントはスタンドアロン プロジェクトではありません。 そのため、Windows フォーム プロジェクトなどのアプリケーションでホストする必要があります。 コントロールまたはコンポーネントをデバッグするには、Windows フォーム プロジェクトに追加する必要があります。 + +#### コントロールまたはコンポーネントをデバッグするには + +1. **\[ビルド\]** メニューの **\[ソリューションのビルド\]** をクリックしてソリューションをビルドします。 + +2. **\[ファイル\]** メニューで、**\[追加\]**、**\[新しいプロジェクト\]** の順にクリックして、アプリケーションにテスト プロジェクトを追加します。 + +3. **\[新しいプロジェクトの追加\]** ダイアログ ボックスで、プロジェクトの種類として **\[Windows アプリケーション\]** を選択します。 + +4. **ソリューション エクスプローラー**で、新しいプロジェクトの **\[参照設定\]** ノードを右クリックします。 ショートカット メニューの **\[参照の追加\]** をクリックして、コントロールまたはコンポーネントを含むプロジェクトへの参照を追加します。 + +5. コントロールまたはコンポーネントのインスタンスをテスト プロジェクトに作成します。 コンポーネントが**ツールボックス**に表示されている場合は、デザイナー画面にドラッグできます。または、次のコード例に示すように、プログラムによってインスタンスを作成できます。 + + ```vb + Dim Component1 As New MyNeatComponent() + ``` + + ```csharp + MyNeatComponent Component1 = new MyNeatComponent(); + ``` + + これで、コントロールまたはコンポーネントを通常の方法でデバッグできるようになります。 + + デバッグの詳細については、「[Visual Studio でのデバッグ](../Topic/Debugging%20in%20Visual%20Studio.md)」および「[チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ](../../../../docs/framework/winforms/controls/walkthrough-debugging-custom-windows-forms-controls-at-design-time.md)」を参照してください。 + +## 継承されたコントロールまたはコンポーネントでイベントが 2 回発生する + `Handles` 句が重複していることが原因と考えられます。 詳細については、「[Troubleshooting Inherited Event Handlers in Visual Basic](../Topic/Troubleshooting%20Inherited%20Event%20Handlers%20in%20Visual%20Basic.md)」を参照してください。 + +## デザイン時エラー : "コンポーネント 'コンポーネント名' を生成できませんでした。" + コンポーネントやコントロールは、パラメーターなしの既定のコンストラクターを提供する必要があります。 デザイン環境は、コンポーネントやコントロールのインスタンスを作成するときに、パラメーターを受け取るコンストラクター オーバーロードにパラメーターを提供しません。 + +## STAThreadAttribute + は、Windows フォームがシングルスレッド アパートメント モデルを使用することを共通言語ランタイム \(CLR: Common Language Runtime\) に通知します。 この属性を Windows フォーム アプリケーションの `Main` メソッドに適用していない場合、意図しない動作が発生する場合があります。 たとえば、 などのコントロールに背景イメージが表示されない場合があります。 また、一部のコントロールでオートコンプリート動作やドラッグ アンド ドロップ動作を正常に行うためには、この属性が必要になる場合があります。 + +## コンポーネント アイコンがツールボックスに表示されない + を使用してアイコンをカスタム コンポーネントに関連付けた場合、自動的に生成されたコンポーネントのビットマップがツールボックスに表示されません。 ビットマップを表示するには、**\[ツールボックス アイテムの選択\]** ダイアログ ボックスを使用してコントロールを再読み込みします。 詳細については、「[方法 : コントロールにツールボックス ビットマップを指定する](../../../../docs/framework/winforms/controls/how-to-provide-a-toolbox-bitmap-for-a-control.md)」を参照してください。 + +## 参照 + [デザイン時の Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-windows-forms-controls-at-design-time.md) + [チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定](../../../../docs/framework/winforms/controls/walkthrough-automatically-populating-the-toolbox-with-custom-components.md) + [方法 : UserControl の実行時の動作をテストする](../../../../docs/framework/winforms/controls/how-to-test-the-run-time-behavior-of-a-usercontrol.md) + [チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ](../../../../docs/framework/winforms/controls/walkthrough-debugging-custom-windows-forms-controls-at-design-time.md) + [コンポーネントの作成](../Topic/Component%20Authoring.md) + [Troubleshooting Design\-Time Development](../Topic/Troubleshooting%20Design-Time%20Development.md) + [コンポーネントによるプログラミング](../Topic/Programming%20with%20Components.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/unbound-column-to-a-data-bound-datagridview.md b/docs/framework/winforms/controls/unbound-column-to-a-data-bound-datagridview.md new file mode 100644 index 00000000000..3b60acd44ec --- /dev/null +++ b/docs/framework/winforms/controls/unbound-column-to-a-data-bound-datagridview.md @@ -0,0 +1,46 @@ +--- +title: "方法 : データバインドされた Windows フォーム DataGridView コントロールに非バインド列を追加する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "列 [Windows フォーム], バインドされていないデータ" + - "データ グリッド, 追加 (バインドされていない列を)" + - "DataGridView コントロール [Windows フォーム], バインドされていないデータ" +ms.assetid: f7bdc4d8-ba8e-421b-ad62-82d936f01372 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : データバインドされた Windows フォーム DataGridView コントロールに非バインド列を追加する + コントロールに表示するデータは、通常なんらかのデータ ソースから取得されるデータですが、データ ソース以外からのデータの列を表示する必要が生じることがあります。 この種類の列は、非バインド列と呼ばれます。 非バインド列の形式はさまざまです。 しばしば、データ行の詳細へのアクセスに使用されます。 + + マスター\/詳細シナリオを実装する場合に、\[**Details**\] ボタンの非バインド列を作成して、親テーブルの特定の行に関連付けられた子テーブルを表示する方法を次のコード例に示します。 ボタンのクリックに応答するには、子テーブルを含むフォームを表示する イベント ハンドラーを実装します。 + + Visual Studio では、このタスクに対するサポートが用意されています。 「[方法 : デザイナーを使用して Windows フォーム DataGridView コントロールの列を追加および削除する](http://msdn.microsoft.com/library/dyyesckz\(v=vs.110\))」も参照してください。 + +## 使用例 + [!code-csharp[System.Windows.Forms.DataGridViewMisc#010](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/CS/datagridviewmisc.cs#010)] + [!code-vb[System.Windows.Forms.DataGridViewMisc#010](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewMisc/VB/datagridviewmisc.vb#010)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- `dataGridView1` という名前の コントロール。 + +- アセンブリおよび アセンブリへの参照。 + +## 参照 + + [Windows フォーム DataGridView コントロールでのデータの表示](../../../../docs/framework/winforms/controls/displaying-data-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールでのデータ表示モード](../../../../docs/framework/winforms/controls/data-display-modes-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/use-the-row-template-to-customize-rows-in-the-datagrid.md b/docs/framework/winforms/controls/use-the-row-template-to-customize-rows-in-the-datagrid.md new file mode 100644 index 00000000000..1e2496406db --- /dev/null +++ b/docs/framework/winforms/controls/use-the-row-template-to-customize-rows-in-the-datagrid.md @@ -0,0 +1,55 @@ +--- +title: "方法 : 行テンプレートを使用して Windows フォーム DataGridView コントロールの行をカスタマイズする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ グリッド, カスタマイズ (行を)" + - "DataGridView コントロール [Windows フォーム], カスタマイズ (行を)" +ms.assetid: 6db61607-7e57-4a84-8d63-9d6a7ed7f9ff +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法 : 行テンプレートを使用して Windows フォーム DataGridView コントロールの行をカスタマイズする + コントロールは、コントロールに追加するすべての行の基礎として行テンプレートを使用します。これは、データ バインディングを使用する場合にも、使用する既存の行を指定せずに メソッドを呼び出す場合にも当てはまります。 + + 行テンプレートを使用すると、 プロパティを使用した場合よりも、行の外観および動作を厳密に制御できます。 行テンプレートでは、 を含む任意の プロパティを設定できます。 + + 特定の効果を実現するために、行テンプレートを使用しなければならないこともあります。 たとえば、行の高さの情報は に格納できないため、行テンプレートを使用して、すべての行の既定の高さを変更する必要があります。 行テンプレートは、 から派生した独自のクラスを作成して、新しい行をコントロールに追加するときにカスタム型を使用する場合にも役立ちます。 + +> [!NOTE] +> 行テンプレートを使用できるのは、行を追加する場合だけです。 既存の行は、行テンプレートを変更することによって変更できません。 + +### 行テンプレートを使用するには + +- プロパティから取得したオブジェクトの各プロパティを設定します。 + + [!code-cpp[System.Windows.Forms.DataGridView.RowTemplate#1](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.RowTemplate/CPP/datagridviewrowtemplate.cpp#1)] + [!code-csharp[System.Windows.Forms.DataGridView.RowTemplate#1](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.RowTemplate/CS/datagridviewrowtemplate.cs#1)] + [!code-vb[System.Windows.Forms.DataGridView.RowTemplate#1](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.RowTemplate/VB/datagridviewrowtemplate.vb#1)] + +## コードのコンパイル + この例には、次の項目が必要です。 + +- `dataGridView1` という名前の コントロール。 + +- アセンブリ、 アセンブリ、および アセンブリへの参照。 + +## 参照 + + + + + [Windows フォームの DataGridView コントロールの基本的な書式設定およびスタイル設定](../../../../docs/framework/winforms/controls/basic-formatting-and-styling-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールでのセルのスタイル](../../../../docs/framework/winforms/controls/cell-styles-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/user-drawn-controls.md b/docs/framework/winforms/controls/user-drawn-controls.md new file mode 100644 index 00000000000..d7d903e4da1 --- /dev/null +++ b/docs/framework/winforms/controls/user-drawn-controls.md @@ -0,0 +1,95 @@ +--- +title: "ユーザー描画コントロール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "カスタム コントロール [Windows フォーム], ユーザー描画" + - "OnPaint メソッド [Windows フォーム]" + - "ユーザー描画コントロール [Windows フォーム]" +ms.assetid: 034af4b5-457f-4160-a937-22891817faa8 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# ユーザー描画コントロール +.NET Framework には、独自のコントロールを簡単に開発する機能が用意されています。 いくつかの標準コントロールをコードで結び付けることにより、ユーザー コントロールを作成できます。または、独自のコントロールを一から設計することもできます。 さらには、継承機能を利用して、既存のコントロールを継承するコントロールを作成し、本来の機能を拡張することもできます。 どのようなアプローチの場合でも、.NET Framework には、作成するコントロールに対してカスタム グラフィカル インターフェイスを描画する機能が用意されています。 + + コントロールの描画は、コントロールの メソッドのコードを実行することで行われます。 メソッドの引数は オブジェクトであり、コントロールのレンダリングに必要な情報と機能をすべて提供します。 はプロパティとして、コントロールのレンダリングで使用される 2 つの主要なオブジェクトを提供します。 + +- オブジェクト \- 描画されるコントロールの一部を表す四角形です。 コントロールの描画方法によって、コントロール全体またはコントロールの一部になります。 + +- オブジェクト \- コントロールを描画するために必要な機能を提供するいくつかのグラフィック指向オブジェクトとメソッドをカプセル化します。 + + オブジェクトとその使い方の詳細については、「[方法 : 描画する Graphics オブジェクトを作成する](../../../../docs/framework/winforms/advanced/how-to-create-graphics-objects-for-drawing.md)」を参照してください。 + + イベントは、コントロールが描画されるか、表示が更新されるたびに発生します。 オブジェクトは、コントロールが描画される四角形を表します。 コントロール全体を更新する必要がある場合、 オブジェクトはコントロール全体のサイズを表します。 ただし、コントロールの一部だけを更新する必要がある場合、 オブジェクトは再描画する必要のある領域だけを表します。 ユーザー インターフェイスで別のコントロールまたはフォームが重なっているためにコントロールの一部が見えない場合などはその一例です。 + + クラスから継承する場合は、 メソッドをオーバーライドし、その中にグラフィック レンダリング コードを記述する必要があります。 ユーザー コントロールまたは継承したコントロールにカスタム グラフィカル インターフェイスを提供する場合も、 メソッドをオーバーライドします。 次に例を示します。 + +```vb +Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs) + ' Call the OnPaint method of the base class. + MyBase.OnPaint(pe) + + ' Declare and instantiate a drawing pen. + Dim myPen As System.Drawing.Pen = New System.Drawing.Pen(Color.Aqua) + + ' Draw an aqua rectangle in the rectangle represented by the control. + pe.Graphics.DrawRectangle(myPen, New Rectangle(Me.Location, Me.Size)) +End Sub + +``` + +```csharp +protected override void OnPaint(PaintEventArgs pe) +{ + // Call the OnPaint method of the base class. + base.OnPaint(pe); + + // Declare and instantiate a new pen. + System.Drawing.Pen myPen = new System.Drawing.Pen(Color.Aqua); + + // Draw an aqua rectangle in the rectangle represented by the control. + pe.Graphics.DrawRectangle(myPen, new Rectangle(this.Location, + this.Size)); +} + +``` + + この例は、単純なグラフィカル表示によってコントロールをレンダリングする方法を示しています。 このコードは基本クラスの メソッドを呼び出し、描画に使用する オブジェクトを作成して、コントロールの で指定された四角形に楕円を描画します。 ほとんどのレンダリング コードはこの例よりもかなり複雑ですが、この例は オブジェクトに含まれる オブジェクトの使用方法を示しています。 など、既にグラフィカル表示が使用されているクラスから継承し、そのグラフィカル表示をコントロールのレンダリングに使用しない場合は、基本クラスの メソッドを呼び出さないでください。 + + コントロールの メソッドのコードは、コントロールが最初に描画されるとき、および表示が更新されたときに実行されます。 サイズが変更されたときにコントロールが必ず再描画されるようにするには、コントロールのコンストラクターに次の行を追加する必要があります。 + +```vb +SetStyle(ControlStyles.ResizeRedraw, True) + +``` + +```csharp +SetStyle(ControlStyles.ResizeRedraw, true); + +``` + +> [!NOTE] +> 四角形以外のコントロールを実装するには、 プロパティを使用します。 + +## 参照 + + + + + + [方法 : 描画する Graphics オブジェクトを作成する](../../../../docs/framework/winforms/advanced/how-to-create-graphics-objects-for-drawing.md) + [内在コントロール](../../../../docs/framework/winforms/controls/constituent-controls.md) + [さまざまなカスタム コントロール](../../../../docs/framework/winforms/controls/varieties-of-custom-controls.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/using-the-designer-with-the-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/using-the-designer-with-the-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..acff03b8784 --- /dev/null +++ b/docs/framework/winforms/controls/using-the-designer-with-the-windows-forms-datagridview-control.md @@ -0,0 +1,67 @@ +--- +title: "Windows フォーム DataGridView コントロールでのデザイナーの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "DataGridView コントロール [Windows フォーム], デザイナーのサポート" + - "書式設定 [Windows フォーム]" + - "テーブル [Windows フォーム]" +ms.assetid: b66057a6-5983-4864-b4e7-8cbc88a7010c +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# Windows フォーム DataGridView コントロールでのデザイナーの使用 +Visual Studio には、コードを書かずに多くのセットアップ タスクを実行できる、`DataGridView` コントロール用のデザイナーが用意されています。 実行できるタスクは、データ ソースへのコントロールのバインド、データ表示用の列の変更、コントロールの外観および基本動作の調整などです。 + +## このセクションの内容 + [方法 : デザイナーを使用して Windows フォーム DataGridView コントロールの列を追加および削除する](../../../../docs/framework/winforms/controls/add-and-remove-columns-in-the-datagrid-using-the-designer.md) + **\[列の追加\]** ダイアログ ボックスおよび **\[列の編集\]** ダイアログ ボックスを使用して、列コレクションへのデータの読み込みや列コレクションの編集を行う方法について説明します。 + + [方法 : デザイナーを使用してデータを Windows フォーム DataGridView コントロールにバインドする](../../../../docs/framework/winforms/controls/bind-data-to-the-datagrid-using-the-designer.md) + コントロールのスマート タグで **\[データ ソースの選択\]** オプションを使用して、データに接続する方法について説明します。 + + [方法 : デザイナーを使用して Windows フォーム DataGridView コントロールの列の順序を変更する](../../../../docs/framework/winforms/controls/change-the-order-of-columns-in-the-datagrid-using-the-designer.md) + **\[列の編集\]** ダイアログ ボックスを使用して、列を並べ替える方法について説明します。 + + [方法 : デザイナーを使用して Windows フォーム DataGridView 列の種類を変更する](../../../../docs/framework/winforms/controls/change-the-type-of-a-wf-datagridview-column-using-the-designer.md) + **\[列の編集\]** ダイアログ ボックスを使用して、列の種類を変更する方法について説明します。 + + [方法 : デザイナーを使用して Windows フォーム DataGridView コントロールの列の並べ替えを有効にする](../../../../docs/framework/winforms/controls/enable-column-reordering-in-the-datagrid-using-the-designer.md) + コントロールのスマート タグを使用して、ユーザーが列を並べ替えることができるようにする方法について説明します。 + + [方法 : デザイナーを使用して Windows フォーム DataGridView コントロールの列を固定する](../../../../docs/framework/winforms/controls/freeze-columns-in-the-datagrid-using-the-designer.md) + **\[列の編集\]** ダイアログ ボックスを使用して、特定の列がスクロールしないようにする方法について説明します。 + + [方法 : デザイナーを使用して Windows フォーム DataGridView コントロールの列を非表示にする](../../../../docs/framework/winforms/controls/hide-columns-in-the-datagrid-using-the-designer.md) + **\[列の編集\]** ダイアログ ボックスを使用して、特定の列を非表示にする方法について説明します。 + + [方法 : デザイナーを使用して Windows フォームの DataGridView コントロールで列を読み取り専用にする](../../../../docs/framework/winforms/controls/make-columns-read-only-in-the-datagrid-using-the-designer.md) + **\[列の編集\]** ダイアログ ボックスを使用して、特定の列の値をユーザーが編集できないようにする方法について説明します。 + + [方法 : デザイナーを使用して Windows フォーム DataGridView コントロールで行が追加および削除されないようにする](../../../../docs/framework/winforms/controls/prevent-row-addition-and-deletion-in-the-datagrid-using-the-designer.md) + コントロールのスマート タグを使用して、ユーザーがデータを追加したり削除したりできないようにする方法について説明します。 + + [方法 : デザイナーを使用して Windows フォーム DataGridView コントロールに交互の行のスタイルを設定する](../../../../docs/framework/winforms/controls/set-alternating-row-styles-for-the-datagrid-using-the-designer.md) + **\[CellStyle ビルダー\]** ダイアログ ボックスを使用して、コントロール内で帳簿のような外観を作成する方法について説明します。 + + [方法 : デザイナーを使用して Windows フォーム DataGridView コントロールの既定のセル スタイルとデータ形式を設定する](../../../../docs/framework/winforms/controls/default-cell-styles-datagridview.md) + **\[CellStyle ビルダー\]** ダイアログ ボックスを使用して、コントロールの基本的な外観とデータ表示形式を設定する方法について説明します。 + +## 関連項目 + + コントロールの参照ドキュメントを提供します。 + +## 参照 + [DataGridView コントロール](../../../../docs/framework/winforms/controls/datagridview-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/using-the-managed-html-document-object-model.md b/docs/framework/winforms/controls/using-the-managed-html-document-object-model.md new file mode 100644 index 00000000000..ab6d5991c5f --- /dev/null +++ b/docs/framework/winforms/controls/using-the-managed-html-document-object-model.md @@ -0,0 +1,53 @@ +--- +title: "マネージ HTML DOM (Document Object Model) の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "マネージ HTML DOM" +ms.assetid: a017dd5c-cd7b-47e4-952c-f4f54cb48409 +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# マネージ HTML DOM (Document Object Model) の使用 +マネージ HTML DOM \(Document Object Model\) は、Internet Explorer によって公開される HTML クラスに対して、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] に基づくラッパーを提供します。 このクラスを使用して、 コントロール内でホストされる HTML ページを操作します。新しいページを最初から構築することもできます。 + +## このセクションの内容 + [方法 : マネージ HTML DOM \(Document Object Model\) にアクセスする](../../../../docs/framework/winforms/controls/how-to-access-the-managed-html-document-object-model.md) + Windows フォーム アプリケーション、または Internet Explorer でホストされる から、 の有効なインスタンスを取得する方法について説明します。 + + [方法 : マネージ HTML DOM \(Document Object Model\) の HTML ソースにアクセスする](../../../../docs/framework/winforms/controls/how-to-access-the-html-source-in-the-managed-html-document-object-model.md) + 変更されていない元の HTML ソースを取得する方法、および DOM の現在の状態を反映する "実稼動" ソースを取得する方法について説明します。 + + [方法 : マネージ HTML DOM \(Document Object Model\) の要素のスタイルを変更する](../../../../docs/framework/winforms/controls/how-to-change-styles-on-an-element-in-the-managed-html-document-object-model.md) + 要素のビジュアル表示を制御するために使用されるスタイルの操作方法について説明します。 + + [マネージ HTML DOM \(Document Object Model\) へのアクセス](../../../../docs/framework/winforms/controls/accessing-frames-in-the-managed-html-document-object-model.md) + フレームとフレームセットの概要、およびフレームの DOM にアクセスする方法について説明します。 + + [マネージ HTML DOM \(Document Object Model\) の非公開メンバーへのアクセス](../../../../docs/framework/winforms/controls/accessing-unexposed-members-on-the-managed-html-document-object-model.md) + マネージ バージョンを持たない、基になる DOM のメンバーにアクセスする方法について説明します。 + +## 関連項目 + + + + + + +## 関連項目 + [WebBrowser コントロール](../../../../docs/framework/winforms/controls/webbrowser-control-windows-forms.md) + +## 参照 + [About the DHTML Object Model \(DHTML オブジェクト モデルについて\)](http://msdn.microsoft.com/library/default.asp?url=/workshop/author/om/doc_object.asp) \ No newline at end of file diff --git a/docs/framework/winforms/controls/using-the-row-for-new-records-in-the-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/using-the-row-for-new-records-in-the-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..ec57b107024 --- /dev/null +++ b/docs/framework/winforms/controls/using-the-row-for-new-records-in-the-windows-forms-datagridview-control.md @@ -0,0 +1,73 @@ +--- +title: "Windows フォーム DataGridView コントロールにおける新規レコード行の使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "DataGridView コントロール [Windows フォーム], 追加 (新規レコード行を)" + - "DataGridView コントロール [Windows フォーム], データ エントリ" + - "行, 新規レコード" +ms.assetid: 6110f1ea-9794-442c-a98a-f104a1feeaf4 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# Windows フォーム DataGridView コントロールにおける新規レコード行の使用 +アプリケーションでデータを編集するために を使用するときは、多くの場合、新しいデータ行をデータ ストアに追加する機能をユーザーに提供します。 コントロールはこの機能をサポートし、追加される新しいレコード行は常に最後の行として表示されます。 この行のヘッダーには、アスタリスク \(\*\) の記号が表示されます。 以下のセクションでは、新規レコード行を有効にしてプログラミングするときの考慮事項について説明します。 + +## 新規レコード行の表示 + プロパティを使用して、新規レコード行を表示するかどうかを指定します。 このプロパティの既定値は `true` です。 + + データがバインドされている場合、コントロールの プロパティとデータ ソースの プロパティが共に `true` であると、新規レコード行が表示されます。 これらのプロパティのいずれかが `false` の場合、行は表示されません。 + +## 新規レコード行への既定のデータの読み込み + ユーザーが新規レコード行を現在の行として選択すると、 コントロールは、 イベントを生成します。 + + このイベントは新しい へのアクセスを可能にし、新しい行に既定のデータを読み込むことができるようにします。 詳細については、「[方法 : Windows フォーム DataGridView コントロールの新しい行に既定値を指定する](../../../../docs/framework/winforms/controls/specify-default-values-for-new-rows-in-the-datagrid.md)」を参照してください。 + +## 行コレクション + 新規レコード行は、 コントロールの コレクションに含まれますが、次の 2 つの点で動作の仕方が異なります。 + +- 新規レコード行は、プログラムによって コレクションから削除できません。 削除しようとすると、 がスローされます。 また、新規レコード行は、ユーザーが削除することもできません。 メソッドは、この行を コレクションから削除しません。 + +- 新規レコード行の後に行を追加できません。 そのように設定しようとすると、 が生成されます。 このため、新規レコード行は、常に コントロールの最後の行になります。 行を追加する、 のメソッド \(、および\) はすべて、新規レコード行が存在するときに挿入メソッドを内部的に呼び出します。 + +## 新規レコード行のビジュアル カスタマイズ + 新規レコード行は、 プロパティで指定された行に基づいて作成されます。 この行に指定されていないセル スタイルは、他のプロパティから継承されます。 セル スタイルの継承の詳細については、「[Windows フォーム DataGridView コントロールでのセルのスタイル](../../../../docs/framework/winforms/controls/cell-styles-in-the-windows-forms-datagridview-control.md)」を参照してください。 + + 新規レコード行のセルに表示される初期値は、各セルの プロパティから取得されます。 セルの種類が の場合、このプロパティはプレースホルダー イメージを返します。 それ以外の場合は、`null` を返します。 このプロパティは、カスタム値を返すようにオーバーライドできます。 ただし、セルの初期値は、新規レコード行にフォーカスが入ったときに イベント ハンドラーによって置き換えることができます。 + + この行のヘッダーの標準アイコン \(矢印またはアスタリスク\) は公開されません。 このアイコンをカスタマイズする場合は、カスタムの クラスを作成する必要があります。 + + 標準アイコンは、行ヘッダー セルで使用されている プロパティを使用します。 標準アイコンは、表示領域が不十分な場合は描画されません。 + + 行ヘッダー セルに文字列値が設定され、テキストとアイコンの両方を表示する十分な領域がない場合は、アイコンが最初に無効にされます。 + +## 並べ替え + 非バインド モードでは、ユーザーが のコンテンツを並べ替えた場合でも、新規レコードは常に の最後に追加されます。 行を正確な位置に並べ替えるには、再度並べ替えを適用する必要があります。この動作は、 コントロールの動作に似ています。 + + データ バインド モードと仮想モードでは、並べ替えを適用したときの挿入動作は、データ モデルの実装によって異なります。 [!INCLUDE[vstecado](../../../../includes/vstecado-md.md)] では、行がすぐに正確な位置に並べ替えられます。 + +## 新規レコード行に関するその他の注意 + この行の プロパティは、`false` に設定できません。 そのように設定しようとすると、 が生成されます。 + + 新規レコード行は、常に未選択の状態で作成されます。 + +## 仮想モード + 仮想モードを実装する場合は、新規レコード行がデータ モデルで必要になる時点と、新規レコード行の追加をロールバックする時点を監視する必要があります。 この機能の正確な実装は、データ モデルの実装とそのトランザクション セマンティクス \(たとえば、コミット スコープがセル レベルか、行レベルかなど\) によって異なります。 詳細については、「[Windows フォーム DataGridView コントロールでの仮想モード](../../../../docs/framework/winforms/controls/virtual-mode-in-the-windows-forms-datagridview-control.md)」を参照してください。 + +## 参照 + + + [Windows フォーム DataGridView コントロールでのデータ入力](../../../../docs/framework/winforms/controls/data-entry-in-the-windows-forms-datagridview-control.md) + [方法 : Windows フォーム DataGridView コントロールの新しい行に既定値を指定する](../../../../docs/framework/winforms/controls/specify-default-values-for-new-rows-in-the-datagrid.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/varieties-of-custom-controls.md b/docs/framework/winforms/controls/varieties-of-custom-controls.md new file mode 100644 index 00000000000..423ca986cd8 --- /dev/null +++ b/docs/framework/winforms/controls/varieties-of-custom-controls.md @@ -0,0 +1,123 @@ +--- +title: "さまざまなカスタム コントロール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "複合コントロール" + - "コントロール [Windows フォーム], 複合" + - "コントロール [Windows フォーム], 拡張" + - "コントロール [Windows フォーム], 型" + - "コントロール [Windows フォーム], ユーザー コントロール" + - "カスタム コントロール [Windows フォーム]" + - "拡張されたコントロール" + - "ユーザー コントロール [Windows フォーム]" +ms.assetid: 3cea09e5-4344-4ccb-9858-b66ccac210ff +caps.latest.revision: 20 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 20 +--- +# さまざまなカスタム コントロール +.NET Framework では、新しいコントロールを開発および実装できます。 継承を通じて、使い慣れたユーザー コントロールや既存のコントロールの機能の拡張もできます。 また、それぞれ独自の描画を実行するカスタム コントロールを作成することもできます。 + + 作成するコントロールの種類を決めるときに、判断に迷うことがあります。 ここでは、継承できる各種コントロールの違いを明らかにし、プロジェクトに合わせて特定の種類のコントロールを選択する方法について説明します。 + +> [!NOTE] +> Web フォームで使用するコントロールの作成については、「[Developing Custom ASP.NET Server Controls](../Topic/Developing%20Custom%20ASP.NET%20Server%20Controls.md)」を参照してください。 + +## 基本コントロール クラス + クラスは、Windows フォーム コントロールの基本クラスです。 このクラスは、Windows フォーム アプリケーションでのビジュアル表示に必要なインフラストラクチャを提供します。 + + クラスは、Windows フォーム アプリケーションでビジュアル表示を実現するために次のタスクを実行します。 + +- ウィンドウ ハンドルを公開する。 + +- メッセージ ルーティングを管理する。 + +- マウス イベントとキーボード イベントの他にさまざまなユーザー インターフェイス イベントを提供する。 + +- 高度なレイアウト機能を提供する。 + +- など、ビジュアル表示に固有のさまざまなプロパティを格納する。 + +- Windows フォーム コントロールが Microsoft® ActiveX® コントロールとして機能するのに必要なセキュリティとスレッドのサポートを提供する。 + + 基本クラスによってインフラストラクチャの大部分が提供されるため、Windows フォーム コントロールは比較的簡単に開発できます。 + +## コントロールの種類 + Windows フォームは、*複合*、*拡張*、*カスタム*の 3 種類のユーザー定義コントロールをサポートします。 次の各セクションでは、それぞれのコントロールについて説明し、プロジェクトで使用する種類を選択する際の推奨事項を示します。 + +### 複合コントロール + 複合コントロールは、Windows フォーム コントロールのコレクションをコモン コンテナーにカプセル化したものです。 この種のコントロールは、*ユーザー コントロール*とも呼ばれます。 コンテナーに含まれているコントロールは、*内在コントロール*と言います。 + + 複合コントロールは、含まれる各 Windows フォーム コントロールに関連付けられている本来の機能をすべて保持し、選択したプロパティを公開および関連付けることができます。 また、開発者側の追加作業が不要な、既定のキーボード処理機能を数多く提供します。 + + たとえば、複合コントロールを作成して、データベースの顧客アドレス データを表示することもできます。 このコントロールには、データベース フィールドを表示するための コントロール、データ ソースへのバインディングを処理するための コントロール、およびレコード間を移動するための コントロールが含まれます。 データ バインディング プロパティを選択的に公開し、さらにコントロール全体をパッケージ化してアプリケーション間で再利用できます。 この種の複合コントロールの例については、「[方法 : Windows フォーム コントロールに属性を適用する](../../../../docs/framework/winforms/controls/how-to-apply-attributes-in-windows-forms-controls.md)」を参照してください。 + + 複合コントロールを作成するには、 クラスから派生します。 基本クラスは、子コントロールに対してキーボード ルーティング機能を提供し、複数の子コントロールを 1 つのグループとして機能させることができます。 詳細については、「[複合 Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-a-composite-windows-forms-control.md)」を参照してください。 + + **推奨事項** + + クラスからの継承は、次の場合に適しています。 + +- いくつかの Windows フォーム コントロールの機能を 1 つの再利用可能な単位に結合する場合。 + +### 拡張コントロール + 既存の Windows フォーム コントロールから継承したコントロールを派生できます。 この方法では、Windows フォーム コントロールの本来の機能をすべて保持しながら、カスタム プロパティやカスタム メソッドなどを追加して、それらの機能を拡張できます。 この方法では、基本コントロールの描画ロジックをオーバーライドし、そのユーザー インターフェイスの外観を変更して拡張できます。 + + たとえば、 コントロールから派生させることで、ユーザーがクリックした回数を追跡するコントロールを作成できます。 + + 一部のコントロールでは、基本クラスの メソッドをオーバーライドすることにより、コントロールのグラフィカル ユーザー インターフェイスに独自の外観を与えることもできます。 クリックを追跡する拡張ボタンでは、 メソッドをオーバーライドして の基本実装を呼び出し、 コントロールのクライアント領域の一角にクリック回数を描画できます。 + + **推奨事項** + + Windows フォーム コントロールからの継承は、次の場合に適しています。 + +- 必要な機能のほとんどが、既存の Windows フォーム コントロールの機能と同じである場合。 + +- 独自のグラフィカル ユーザー インターフェイスが必要でない場合。または、既存のコントロールに新しいグラフィカル ユーザー インターフェイスをデザインする場合。 + +### カスタム コントロール + コントロールを作成する方法には、 から継承することにより、コントロールを最初から作成する方法もあります。 クラスは、コントロールで必要とされるすべての基本的な機能 \(マウスやキーボードの処理イベントなど\) を提供しますが、コントロール固有の機能やグラフィカル インターフェイスは提供しません。 + + クラスから継承してコントロールを作成する場合は、 コントロールや既存の Windows フォーム コントロールから継承する場合に比べて、より多くの検討と作業が必要です。 開発者に数多くの実装作業が委ねられるため、作成されるコントロールは、複合コントロールや拡張コントロールよりも柔軟で、ニーズにちょうど合うようコントロールを調整できます。 + + カスタム コントロールを実装するには、必要な機能別のコードだけでなく、コントロールの イベントのコードも記述する必要があります。 また、 メソッドをオーバーライドして、Windows メッセージを直接処理することもできます。 これは、最も強力なコントロールの作成方法ですが、この方法を活用するには、Microsoft Win32® API を十分に理解しておく必要があります。 + + カスタム コントロールの例として、アナログ時計の外観と動作を模した時計コントロールがあります。 カスタム描画を実行することにより、内部の コンポーネントからの イベントに応答して、時計の針を動かすことができます。 詳細については、「[方法 : シンプルな Windows フォーム コントロールを開発する](../../../../docs/framework/winforms/controls/how-to-develop-a-simple-windows-forms-control.md)」を参照してください。 + + **推奨事項** + + クラスからの継承は、次の場合に適しています。 + +- コンポーネントに独自のグラフィカル表示を使用する場合。 + +- 標準のコントロールにはない、独自の機能を実装する必要がある場合。 + +### ActiveX コントロール + Windows フォーム インストラクチャは、Windows フォーム コントロールをホストするために最適化されていますが、代わりに ActiveX コントロールを使用することもできます。 Visual Studio では、このタスクに対するサポートが用意されています。 詳細については、「[方法 : Windows フォームに ActiveX コントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-activex-controls-to-windows-forms.md)」を参照してください。 + +### ウィンドウなしのコントロール + Microsoft Visual Basic® 6.0 と ActiveX テクノロジは、*ウィンドウなしの*コントロールをサポートします。 ウィンドウなしのコントロールは、Windows フォームではサポートされません。 + +## カスタムのデザイン体験 + カスタムのデザイン時体験を実装する必要がある場合は、独自のデザイナーを作成できます。 複合コントロールの場合は、 クラスや クラスからカスタム デザイナー クラスを派生します。 拡張コントロールやカスタム コントロールの場合は、 クラスからカスタム デザイナー クラスを派生します。 + + を使用して、コントロールをデザイナーに関連付けます。 詳細については、「[Extending Design\-Time Support](../Topic/Extending%20Design-Time%20Support.md)」および「[How to: Create a Windows Forms Control That Takes Advantage of Design\-Time Features](../Topic/How%20to:%20Create%20a%20Windows%20Forms%20Control%20That%20Takes%20Advantage%20of%20Design-Time%20Features.md)」を参照してください。 + +## 参照 + [.NET Framework を使用したカスタム Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-custom-windows-forms-controls.md) + [方法 : シンプルな Windows フォーム コントロールを開発する](../../../../docs/framework/winforms/controls/how-to-develop-a-simple-windows-forms-control.md) + [複合 Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-a-composite-windows-forms-control.md) + [Extending Design\-Time Support](../Topic/Extending%20Design-Time%20Support.md) + [How to: Create a Windows Forms Control That Takes Advantage of Design\-Time Features](../Topic/How%20to:%20Create%20a%20Windows%20Forms%20Control%20That%20Takes%20Advantage%20of%20Design-Time%20Features.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/view-errors-within-a-dataset-with-wf-errorprovider-component.md b/docs/framework/winforms/controls/view-errors-within-a-dataset-with-wf-errorprovider-component.md new file mode 100644 index 00000000000..009233dd110 --- /dev/null +++ b/docs/framework/winforms/controls/view-errors-within-a-dataset-with-wf-errorprovider-component.md @@ -0,0 +1,79 @@ +--- +title: "方法 : Windows フォーム ErrorProvider コンポーネントで DataSet 内にエラーを表示する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "エラー メッセージ, 表示 (データセット内の)" + - "ErrorProvider コンポーネント [Windows フォーム], データセット エラー" + - "エラー [Windows フォーム], データセット エラー" +ms.assetid: cbae023f-d651-4210-bdea-bcc5f037e321 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 方法 : Windows フォーム ErrorProvider コンポーネントで DataSet 内にエラーを表示する +Windows フォームの コンポーネントを使用すると、データセットなどのデータ ソース内の列エラーを表示できます。 コンポーネントでデータ エラーをフォームに表示する場合、コンポーネントをコントロールに直接関連付ける必要はありません。 データ ソースに連結すると、そのデータ ソースに連結されたすべてのコントロールの隣に、エラー アイコンを表示できるようになります。 + +> [!NOTE] +> エラー プロバイダーの プロパティおよび プロパティを実行時に変更する場合は、 メソッドを使用して競合を避ける必要があります。 + +### データ エラーを表示するには + +1. データ テーブルの特定の列にコンポーネントを連結します。 + + ```vb + ' Assumes existence of DataSet1, DataTable1 + TextBox1.DataBindings.Add("Text", DataSet1, "Customers.Name") + ErrorProvider1.DataSource = DataSet1 + ErrorProvider1.DataMember = "Customers" + + ``` + + ```csharp + // Assumes existence of DataSet1, DataTable1 + textBox1.DataBindings.Add("Text", DataSet1, "Customers.Name"); + errorProvider1.DataSource = DataSet1; + errorProvider1.DataMember = "Customers"; + + ``` + +2. プロパティをフォームに設定します。 + + ```vb + ErrorProvider1.ContainerControl = Me + + ``` + + ```csharp + errorProvider1.ContainerControl = this; + + ``` + +3. 現在のレコードの位置に、列エラーのある行を設定します。 + + ```vb + DataTable1.Rows(5).SetColumnError("Name", "Bad data in this row.") + Me.BindingContext(DataTable1).Position = 5 + + ``` + + ```csharp + DataTable1.Rows[5].SetColumnError("Name", "Bad data in this row."); + this.BindingContext [DataTable1].Position = 5; + + ``` + +## 参照 + [ErrorProvider コンポーネントの概要](../../../../docs/framework/winforms/controls/errorprovider-component-overview-windows-forms.md) + [方法 : Windows フォーム ErrorProvider コンポーネントを使用してフォーム妥当性検査でエラー アイコンを表示する](../../../../docs/framework/winforms/controls/display-error-icons-for-form-validation-with-wf-errorprovider.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/virtual-mode-in-the-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/virtual-mode-in-the-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..2fd79f558f7 --- /dev/null +++ b/docs/framework/winforms/controls/virtual-mode-in-the-windows-forms-datagridview-control.md @@ -0,0 +1,80 @@ +--- +title: "Windows フォーム DataGridView コントロールでの仮想モード | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "DataGridView コントロール [Windows フォーム], 仮想モード" +ms.assetid: feae5d43-2848-4b1a-8ea7-77085dc415b5 +caps.latest.revision: 21 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 21 +--- +# Windows フォーム DataGridView コントロールでの仮想モード +仮想モードを使用すると、 コントロールとカスタム データ キャッシュ間の対話を管理できます。 仮想モードを実装するには、 プロパティを `true` に設定し、ここで説明するイベントのうち 1 つ以上のイベントを処理します。 通常、少なくとも `CellValueNeeded` イベントだけは処理します。このイベントにより、コントロールがデータ キャッシュの値を検索できます。 + +## バインド モードと仮想モード + 仮想モードは、バインド モードを補完したり、置き換えたりする場合にのみ必要になります。 バインド モードでは、 プロパティを設定すると、コントロールが、指定したソースからデータを自動的に読み込み、ユーザーが行った変更をソースに送り返します。 バインド モードでは、どのバインド列を表示するかを制御できます。並べ替えなどの操作は、通常、データ ソース自体が処理します。 + +## バインド モードの補完 + バインド列と共に非バインド列を表示することによって、バインド モードを補完できます。 これは "混合モード" とも呼ばれ、計算値やユーザー インターフェイス \(UI\) コントロールなどの要素を表示するのに役立ちます。 + + 非バインド列は、データ ソースの外部に存在するので、データ ソースの並べ替え操作で無視されます。 そのため、混合モードでの並べ替えを有効にする場合は、非バインド データをローカル キャッシュで管理し、仮想モードを実装して コントロールがキャッシュと対話できるようにする必要があります。 + + 仮想モードを使用して非バインド列の値を保持する方法の詳細については、 プロパティと クラスのリファレンス トピックに記載されている例を参照してください。 + +## バインド モードの置換 + バインド モードがパフォーマンス上のニーズに適合しない場合は、仮想モード イベント ハンドラーを通じて、カスタム キャッシュ内のすべてのデータを管理できます。 たとえば、仮想モードを使用すると、Just\-In\-Time データ読み込み機構を実装できます。この機構では、ネットワーク接続されたデータベースから必要なデータだけを取得することで最適なパフォーマンスを実現します。 これは、低速のネットワーク接続で大量のデータを操作したり、RAM 容量やストレージ領域が制限されたクライアント コンピューターで作業する場合に特に役立ちます。 + + Just\-In\-Time のシナリオにおける仮想モードの使用方法の詳細については、「[Windows フォーム DataGridView コントロールでの Just\-In\-Time データ読み込みによる仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-jit-data-loading-in-the-datagrid.md)」を参照してください。 + +## 仮想モード イベント + データが読み取り専用の場合は、`CellValueNeeded` イベントを処理するだけで済むことがあります。 その他の仮想モード イベントを使用すると、ユーザーによる編集、行の追加と削除、行レベルのトランザクションなど、特定の機能を有効にできます。 + + 一部の標準 イベント \(ユーザーが行を追加または削除したときに発生するイベントや、セル値の編集、解析、検証、または書式指定時に発生するイベントなど\) は、仮想モードでも役立ちます。 また、セルのツールヒント テキスト、セルと行のエラー テキスト、セルと行のショートカット メニュー データ、行の高さデータなど、一般にバインド データ ソースに保存されない値を保持できるようにするイベントも処理できます。 + + 行レベルのコミット スコープで読み書き両用データを管理するために仮想モードを実装する方法の詳細については、「[チュートリアル : Windows フォーム DataGridView コントロールでの仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-wf-datagridview-control.md)」を参照してください。 + + セル レベルのコミット スコープで仮想モードを実装する例については、 プロパティのリファレンス トピックを参照してください。 + + 次のイベントは、 プロパティが `true` に設定されているときにのみ発生します。 + +|Event|Description| +|-----------|-----------------| +||コントロールが、データ キャッシュからセル値を取得して表示するために使用します。 このイベントは、非バインド列のセルに対してのみ発生します。| +||コントロールが、セルへのユーザー入力をデータ キャッシュにコミットするために使用します。 このイベントは、非バインド列のセルに対してのみ発生します。

イベント ハンドラーの外部でキャッシュ値を変更したときは、 メソッドを呼び出して、現在値がコントロールで確実に表示されるようにし、現在有効な自動サイズ変更モードを適用します。| +||コントロールが、データ キャッシュで新しい行が必要かどうかを示すために使用します。| +||コントロールが、コミットされていない変更が行に存在するかどうかを判断するために使用します。| +||コントロールが、行をキャッシュ値に戻す必要があることを示すために使用します。| + + 次のイベントは仮想モードで有効ですが、 プロパティの設定と無関係に使用できます。 + +|イベント|Description| +|----------|-----------------| +|





|行が削除または追加されたことを示すためにコントロールが使用します。これに応じて、データ キャッシュを更新できます。| +|









|コントロールが、表示するセル値の書式を設定し、ユーザー入力を解析および検証するために使用します。| +|| プロパティが設定されているとき、または プロパティが `true` であるときに、コントロールがセルのツールヒント テキストを取得するために使用します。

セルのツールヒントは、 プロパティ値が `true` のときにのみ表示されます。| +|

| プロパティが設定されているとき、または プロパティが `true` のときに、コントロールがセルまたは行のエラー テキストを取得するために使用します。

セルまたは行のエラー テキストを変更したときは、 メソッドまたは メソッドを呼び出して、現在の値がコントロールに確実に表示されるようにします。

セルと行のエラー グリフは、 プロパティと プロパティの値が `true` の場合に表示されます。| +|

|コントロールの プロパティが設定されているとき、または プロパティが `true` のときに、コントロールがセルまたは行の を取得するために使用します。| +|

|コントロールが、行の高さ情報をデータ キャッシュから取得または保存するために使用します。 キャッシュされた行の高さ情報を イベント ハンドラーの外部で変更したときは、 を呼び出して、現在の値がコントロールに確実に表示されるようにします。| + +## 仮想モードで推奨される手順 + 大量のデータを効率的に操作するために仮想モードを実装する場合は、 コントロール自体も効率よく操作できるようにする必要があります。 セル スタイル、自動サイズ変更、選択、および行の共有の効果的な使い方の詳細については、「[Windows フォーム DataGridView コントロールを拡張するための推奨される手順](../../../../docs/framework/winforms/controls/best-practices-for-scaling-the-windows-forms-datagridview-control.md)」を参照してください。 + +## 参照 + + + [Windows フォーム DataGridView コントロールでのパフォーマンス チューニング](../../../../docs/framework/winforms/controls/performance-tuning-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールを拡張するための推奨される手順](../../../../docs/framework/winforms/controls/best-practices-for-scaling-the-windows-forms-datagridview-control.md) + [チュートリアル : Windows フォーム DataGridView コントロールでの仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-wf-datagridview-control.md) + [Windows フォーム DataGridView コントロールでの Just\-In\-Time データ読み込みによる仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-jit-data-loading-in-the-datagrid.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/virtual-mode-with-just-in-time-data-loading-in-the-datagrid.md b/docs/framework/winforms/controls/virtual-mode-with-just-in-time-data-loading-in-the-datagrid.md new file mode 100644 index 00000000000..7ddfddb2553 --- /dev/null +++ b/docs/framework/winforms/controls/virtual-mode-with-just-in-time-data-loading-in-the-datagrid.md @@ -0,0 +1,53 @@ +--- +title: "方法 : Windows フォーム DataGridView コントロールで Just-In-Time データ読み込みを使用して仮想モードを実装する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ [Windows フォーム], 管理 (大容量のデータセットを)" + - "DataGridView コントロール [Windows フォーム], 大容量のデータセット" + - "DataGridView コントロール [Windows フォーム], 仮想モード" + - "例 [Windows フォーム], Just-In-Time データ読み込み" + - "Just-In-Time データ読み込み" + - "仮想モード, Just-In-Time データ読み込み" +ms.assetid: 33825f92-7a22-40ee-86d9-9a2ed1ead7b7 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法 : Windows フォーム DataGridView コントロールで Just-In-Time データ読み込みを使用して仮想モードを実装する +次のコード例では、必要がある場合にのみ、サーバーからデータを読み込むデータ キャッシュを持つ コントロールで仮想モードを使用する方法を示しています。 この例は、「[Windows フォーム DataGridView コントロールでの Just\-In\-Time データ読み込みによる仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-jit-data-loading-in-the-datagrid.md)」で詳細に説明しています。 + +## 使用例 + [!code-csharp[System.Windows.Forms.DataGridView.Virtual_lazyloading#000](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.Virtual_lazyloading/CS/lazyloading.cs#000)] + [!code-vb[System.Windows.Forms.DataGridView.Virtual_lazyloading#000](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridView.Virtual_lazyloading/VB/lazyloading.vb#000)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- System、System.Data、System.Xml、および System.Windows.Forms の各アセンブリへの参照。 + +- Northwind SQL Server サンプル データベースがインストールされているサーバーへのアクセス。 + + [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法の詳細は、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## .NET Framework セキュリティ + 接続文字列内に機密情報 \(パスワードなど\) を格納すると、アプリケーションのセキュリティに影響を及ぼすことがあります。 データベースへのアクセスを制御する方法としては、Windows 認証 \(統合セキュリティとも呼ばれます\) を使用する方が安全です。 詳細については、「[接続情報の保護](../../../../docs/framework/data/adonet/protecting-connection-information.md)」を参照してください。 + +## 参照 + + + + [Windows フォーム DataGridView コントロールでの Just\-In\-Time データ読み込みによる仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-jit-data-loading-in-the-datagrid.md) + [Windows フォーム DataGridView コントロールでのパフォーマンス チューニング](../../../../docs/framework/winforms/controls/performance-tuning-in-the-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールでの仮想モード](../../../../docs/framework/winforms/controls/virtual-mode-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-flowlayoutpanel.md b/docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-flowlayoutpanel.md new file mode 100644 index 00000000000..f961a1f1ea9 --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-flowlayoutpanel.md @@ -0,0 +1,208 @@ +--- +title: "チュートリアル : FlowLayoutPanel を使用した Windows フォーム上のコントロールの配置 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "FlowLayoutPanel コントロール [Windows フォーム]、チュートリアル" + - "Windows フォーム コントロール、配置" + - "コントロール [Windows フォーム]、FlowLayoutPanel を使用した配置" + - "レイアウト [Windows フォーム]、チュートリアル" +ms.assetid: a1744323-0316-49c2-992e-ebfc0a976b85 +caps.latest.revision: 22 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 22 +--- +# チュートリアル : FlowLayoutPanel を使用した Windows フォーム上のコントロールの配置 +アプリケーションによっては、フォームのサイズを変更したり、コンテンツのサイズが変化したりしたときに、それに応じて自動的にレイアウトを調整するフォームが必要です。 動的なレイアウトが必要であり、かつコードで イベントを明示的に処理しない場合は、レイアウト パネルの使用をご検討ください。 + + コントロールと コントロールを使用すると、コントロールをフォームに直感的な方法で配置できます。 これら 2 つのコントロールは、それぞれに含まれる子コントロールの相対位置を制御するための自動的で構成可能な機能を提供します。また、どちらも実行時に動的なレイアウト機能を提供するため、親フォームの寸法の変更に応じて子コントロールのサイズと位置を変更できます。 レイアウト パネルは他のレイアウト パネルの入れ子にすることができるため、高度なユーザー インターフェイスを実現できます。 + + は、その内容をグリッドに配置し、HTML \ 要素と同じような機能を提供します。 セルは行と列に配置され、それぞれに異なるサイズを設定できます。 詳細については、「[チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-tablelayoutpanel.md)」を参照してください。 + + はその内容を特定のフローの方向 \(水平または垂直\) に配置します。 ある行から次の行、またはある列から次の列に内容をラップすることができます。 また、ラップする代わりにクリップすることもできます。 このチュートリアルでは、以下のタスクを行います。 + +- Windows フォーム プロジェクトの作成 + +- コントロールの水平配置と垂直配置 + +- フロー方向の変更 + +- フロー中断の挿入 + +- パディングと余白を使用したコントロールの配置 + +- ツールボックスでのダブルクリックによるコントロールの挿入 + +- アウトラインの描画によるコントロールの挿入 + +- キャレットを使用したコントロールの挿入 + +- 別の親コントロールへの既存コントロールの再割り当て + + 終了すると、これらの重要なレイアウト機能が果たす役割について理解できます。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Visual Studio での開発設定のカスタマイズ](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 最初にプロジェクトを作成し、フォームを設定します。 + +#### プロジェクトを作成するには + +1. "FlowLayoutPanelExample" という名前の Windows ベース アプリケーション プロジェクトを作成します。 詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」を参照してください。 + +2. **フォーム デザイナー**でフォームを選びます。 + +## コントロールの水平配置と垂直配置 + コントロールでは、コントロールを行や列に沿って配置でき、各コントロールの位置を正確に指定する必要がありません。 + + コントロールでは、親フォームの寸法の変更に応じて、子コントロールのサイズやフローを変更できます。 + +#### FlowLayoutPanel を使用してコントロールを水平方向または垂直方向に配置するには + +1. **ツールボックス**から コントロールをフォームにドラッグします。 + +2. **ツールボックス**から コントロールを にドラッグします。 このコントロールが コントロールの左上隅に自動的に移動されることにご注意ください。 + +3. **ツールボックス**から別の コントロールを にドラッグします。 コントロールが、最初の コントロールの横の位置に自動的に移動することにご注意ください。 が狭すぎて、2 つのコントロールが同じ行に入りきらない場合、新しい コントロールは次の行に自動的に移動します。 + +4. **ツールボックス**からさらにいくつかの コントロールを にドラッグします。 次の行に折り返すまで、 コントロールを続けて配置します。 + +5. コントロールの プロパティの値を `false` に変更します。 子コントロールが次の行にフローしなくなることにご注意ください。 代わりに最初の行に移動してクリップされます。 + +6. コントロールの プロパティの値を `true` に変更します。 子コントロールがまた次の行に折り返されるようになることにご注意ください。 + +7. すべての コントロールが最初の列に移動するまで、 コントロールの幅を縮小します。 + +8. すべての コントロールが最初の行に移動するまで、 コントロールの幅を拡大します。 幅の拡大に対応できるように、フォームのサイズ変更が必要になる場合があります。 + +## フロー方向の変更 + プロパティを使用すると、コントロールの配置方向を変更できます。 子コントロールは左から右、右から左、上から下、または下から上に配置できます。 + +#### FlowLayoutPanel のフロー方向を変更するには + +1. コントロールの プロパティの値を に変更します。 コントロールの高さに応じて、子コントロールが 1 つ以上の列に再配置されることにご注意ください。 + +2. のサイズを変更し、その高さを コントロールの列よりも小さくします。 が、子コントロールを次の列にフローするように再配置することにご注意ください。 引き続き高さを小さくしていくと、子コントロールが次の列にフローしていくことにご注意ください。 コントロールの プロパティの値を に変更します。 子コントロールの位置が反転することにご注意ください。 プロパティの値を に変更したときのレイアウトをご確認ください。 + +## フロー中断の挿入 + コントロールでは、その子コントロールに FlowBreak プロパティを指定できます。 FlowBreak プロパティの値を `true` に設定することで、 コントロールを現在のフロー方向のコントロールにレイアウトすること、および次の行または列にラップすることを停止します。 + +#### フロー中断を挿入するには + +1. コントロールの プロパティの値を に変更します。 + +2. 左端の列の中ほどにある、 コントロールの 1 つを選びます。 + +3. コントロールの FlowBreak プロパティの値を `true` に設定します。 列が区切られ、選んだ コントロールよりも後のコントロールが次の列にフローすることにご注意ください。 コントロールの FlowBreak プロパティの値を `false` に設定すると、元の動作に戻ります。 + +## ドッキングと固定を使用したコントロールの配置 + 子コントロールのドッキング動作と固定動作は、他のコンテナー コントロールの動作と異なります。 ドッキングも固定も、フロー方向で最も大きいコントロールを基準として機能します。 + +#### ドッキングと固定を使用してコントロールを配置するには + +1. コントロールがすべて 1 列に配置されるまで、 のサイズを拡大します。 + +2. 1 番上にある コントロールを選びます。 幅を拡大して、他の コントロールの約 2 倍の幅にします。 + +3. 2 番目の コントロールを選びます。 プロパティの値を に変更します。 選択したコントロールが移動し、その右側の境界線が 1 番目の コントロールの右側の境界線と揃うことにご注意ください。 + +4. プロパティの値を および に変更します。 サイズが変更され、1 番目の コントロールと同じ幅になることにご注意ください。 + +5. 3 番目の コントロールを選びます。 プロパティの値を に変更します。 サイズが変更され、1 番目の コントロールと同じ幅になることにご注意ください。 + +## パディングと余白を使用したコントロールの配置 + コントロールには、 のプロパティを変更してコントロールを配置することもできます。 + + プロパティを使用すると、 コントロールのセル内でコントロールの配置を制御できます。 このプロパティは、子コントロールと コントロールの境界との間隔を指定します。 + + プロパティでは、コントロール間の間隔を制御できます。 + +#### Padding プロパティと Margin プロパティを使用してコントロールを配置するには + +1. コントロールの プロパティの値を に変更します。 フォームの大きさが十分にある場合、 コントロールは コントロールの最初の列に移動します。 + +2. コントロールの プロパティの値を変更します。これを行うには、**\[プロパティ\]** ウィンドウで エントリを展開し、 プロパティを **20** に設定します。 詳細については、「[チュートリアル : Padding、Margin、および AutoSize プロパティを使用した Windows フォーム コントロールのレイアウト](../../../../docs/framework/winforms/controls/windows-forms-controls-padding-autosize.md)」を参照してください。 子コントロールが コントロールの中央に移動することにご注意ください。 プロパティの値を大きくすると、子コントロールが コントロールの境界から離れます。 + +3. 内の コントロールをすべて選び、 プロパティの値を **20** に設定します。 コントロール間の間隔が広がり、各コントロールが離れることにご注意ください。 すべての子コントロールを表示するには、 コントロールのサイズを拡大する必要がある場合があります。 + +## ツールボックスでのダブルクリックによるコントロールの挿入 + **ツールボックス**でコントロールをダブルクリックすると、 コントロールに内容を挿入できます。 + +#### ツールボックスでダブルクリックしてコントロールを挿入するには + +1. **ツールボックス**の コントロール アイコンをダブルクリックします。 新しい コントロールが コントロールに表示されることにご注意ください。 + +2. **ツールボックス**でさらにいくつかのコントロールをダブルクリックします。 新しいコントロールが コントロールに順次表示されることにご注意ください。 + +## アウトラインの描画によるコントロールの挿入 + セルにアウトラインを描画すると、コントロールを コントロールに挿入し、サイズを指定できます。 + +#### アウトラインを描画してコントロールを挿入するには + +1. **ツールボックス**で コントロール アイコンをクリックします。 フォームにドラッグしないでください。 + +2. コントロールにマウス ポインターを置きます。 ポインターが コントロール アイコンが付いた十字カーソルに変わることにご注意ください。 + +3. マウス ボタンを押したままにします。 + +4. マウス ポインターをドラッグして、 コントロールのアウトラインを描画します。 適切なサイズのアウトラインを描画したら、マウス ボタンを離します。 コントロール上の次の空き位置に コントロールが作成されることにご注意ください。 + +## 挿入バーを使用したコントロールの挿入 + コントロールの特定の位置にコントロールを挿入できます。 コントロールのクライアント領域にコントロールをドラッグすると、コントロールの挿入位置を示す挿入バーが表示されます。 + +#### キャレットを使用してコントロールを挿入するには + +1. **ツールボックス**から コントロールを コントロールにドラッグし、2 つの コントロールの間の領域をポイントします。 挿入バーが描画され、 コントロールにドロップしたときに挿入される位置が示されることにご注意ください。 新しい コントロールを コントロールにドロップする前に、マウス ポインターを移動して、挿入バーがどのように移動するかを確認します。 + +2. 新しい コントロールを コントロールにドロップします。 新しい コントロールの プロパティの値が異なるため、他のコントロールとは位置が揃わないことにご注意ください。 + +## 別の親コントロールへの既存コントロールの再割り当て + フォームに存在するコントロールを新しい コントロールに割り当てることができます。 + +#### 既存のコントロールの親を変更するには + +1. **ツールボックス**から 3 つの コントロールをフォームにドラッグします。 これらを互いに近づけて配置しますが、整列はさせません。 + +2. **ツールボックス**で コントロール アイコンをクリックします。 フォームにドラッグしないでください。 + +3. マウス ポインターを 3 つの コントロールに近づけます。 ポインターが コントロール アイコンが付いた十字カーソルに変わることにご注意ください。 + +4. マウス ボタンを押したままにします。 + +5. マウス ポインターをドラッグして、 コントロールのアウトラインを描画します。 3 つの コントロールを囲むようにアウトラインを描画します。 + +6. マウスのボタンを離します。 3 つの コントロールが コントロールに挿入されることにご注意ください。 + +## 次の手順 + レイアウト パネルとコントロールを組み合わせて使用すると、複雑なレイアウトを作成できます。 さらに詳しく調べるための推奨事項を次に示します。 + +- いずれかの コントロールのサイズを拡大して、レイアウトの変化を確認します。 + +- レイアウト パネルには、別のレイアウト パネルを含めることができます。 コントロールを既存のコントロールにドロップしてみます。 + +- コントロールを親フォームにドッキングします。 フォームのサイズを変更し、レイアウトの変化を確認します。 + +- いずれかのコントロールの プロパティを `false` に設定し、これに呼応して のフローがどのように変化するか確認します。 + +## 参照 + + + [チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-tablelayoutpanel.md) + [チュートリアル : スナップ線を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-snaplines.md) + [Microsoft Windows User Experience, Official Guidelines for User Interface Developers and Designers. Redmond、WA: Microsoft Press、1999 年。 \(USBN: 0\-7356\-0566\-1\)](http://www.microsoft.com/mspress/southpacific/books/book11588.htm) + [AutoSize プロパティの概要](../../../../docs/framework/winforms/controls/autosize-property-overview.md) + [方法 : Windows フォーム上のコントロールをドッキングする](../../../../docs/framework/winforms/controls/how-to-dock-controls-on-windows-forms.md) + [方法 : Windows フォームにコントロールを固定する](../../../../docs/framework/winforms/controls/how-to-anchor-controls-on-windows-forms.md) + [チュートリアル : Padding、Margin、および AutoSize プロパティを使用した Windows フォーム コントロールのレイアウト](../../../../docs/framework/winforms/controls/windows-forms-controls-padding-autosize.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-tablelayoutpanel.md b/docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-tablelayoutpanel.md new file mode 100644 index 00000000000..ec443143685 --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-tablelayoutpanel.md @@ -0,0 +1,202 @@ +--- +title: "チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム], 配置 (TableLayoutPanel を使用した)" + - "TableLayoutPanel コントロール [Windows フォーム], チュートリアル" + - "Windows フォーム コントロール, 配置" +ms.assetid: d474885e-12cc-4ab7-b997-2a23a643049b +caps.latest.revision: 28 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 28 +--- +# チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置 +アプリケーションによっては、フォームのサイズを変更したり、コンテンツのサイズが変化したりしたときに、それに応じて自動的にレイアウトを調整するフォームが必要です。 動的なレイアウトが必要であり、しかも イベントをコードで明示的に処理しない場合は、レイアウト パネルの使用を検討してください。 + + コントロールや コントロールを使用すると、コントロールをフォームに直観的に配置できます。 これら 2 つのコントロールは、それぞれに含まれる子コントロールの相対位置を制御するための自動的で設定可能な機能を提供します。また、実行時に動的なレイアウト機能を提供するため、親フォームの寸法の変更に応じて子コントロールのサイズと位置を変更できます。 また、レイアウト パネルは他のレイアウト パネルの入れ子にすることもできるため、高度なユーザー インターフェイスを実現できます。 + + は、その内容を特定のフロー方向 \(水平または垂直方向\) に配置します。 このコントロールの内容は、ある行から次の行、またはある列から次の列に折り返すことができます。 また、折り返さずにクリップすることもできます。 詳細については、「[チュートリアル : FlowLayoutPanel を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-flowlayoutpanel.md)」を参照してください。 + + は、その内容をグリッドに配置し、HTML \ 要素と同じような機能を提供します。 コントロールでは、コントロールをグリッド レイアウトに配置でき、個々のコントロールの位置を正確に指定する必要がありません。 このレイアウト パネルのセルは行と列に配置され、それぞれ異なったサイズを設定できます。 セルは、行や列にまたがって結合できます。 セルには、フォームに配置できるすべての要素を格納できる他、ほとんどの点でコンテナーとして動作します。 + + コントロールは、実行時に比例的なサイズ変更機能を提供するため、フォームのサイズ変更に合わせてレイアウトを滑らかに変更できます。 このため、 コントロールは、データ入力フォームやアプリケーションのローカライズなどに適しています。 詳細については、「[Walkthrough: Creating a Resizable Windows Form for Data Entry](http://msdn.microsoft.com/ja-jp/e193b4fc-912a-4917-b036-b76c7a6f58ab)」および「[Walkthrough: Creating a Localizable Windows Form](http://msdn.microsoft.com/ja-jp/c5240b6e-aaca-4286-9bae-778a416edb9c)」を参照してください。 + + コントロールは、通常はレイアウト全体のコンテナーとして使用しないでください。 コントロールは、レイアウトの各部に比例的なサイズ変更機能を提供するために使用してください。 + + このチュートリアルでは、以下のタスクを行います。 + +- Windows フォーム プロジェクトの作成 + +- 行と列へのコントロールの配置 + +- 行と列のプロパティの設定 + +- 複数行および複数列へのコントロールの拡大 + +- オーバーフローの自動処理 + +- ツールボックスでのダブルクリックによるコントロールの挿入 + +- アウトラインの描画によるコントロールの挿入 + +- 別の親コントロールへの既存コントロールの再割り当て + + ここでは、これらの重要なレイアウト機能が果たす役割について理解します。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 最初にプロジェクトを作成し、フォームを設定します。 + +#### プロジェクトを作成するには + +1. "TableLayoutPanelExample" という名前の Windows アプリケーション プロジェクトを作成します。 詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」を参照してください。 + +2. **Windows** **フォーム デザイナー**でフォームを選択します。 + +## 行と列へのコントロールの配置 + コントロールを使用すると、行や列にコントロールを簡単に配置できます。 + +#### TableLayoutPanel を使用して、コントロールを行や列に配置するには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 既定では、 コントロールには 4 つのセルがあります。 + +2. **ツールボックス**から コントロールを コントロールにドラッグし、セルのいずれかにドロップします。 選択したセル内に コントロールが作成されます。 + +3. さらに 3 つの コントロールを、**ツールボックス**から コントロールにドラッグし、各セルにボタンを配置します。 + +4. 2 つの列の間にある垂直方向のサイズ変更ハンドルをドラッグして左に移動します。 1 列目の コントロールの幅が縮小しますが、2 列目の コントロールのサイズは変更されません。 + +5. 2 つの列の間にある垂直方向のサイズ変更ハンドルをドラッグして右に移動します。 1 列目の コントロールが元のサイズに戻り、2 列目の コントロールが右側に移動します。 + +6. 水平方向のサイズ変更ハンドルを上下に移動し、パネル内のコントロールが受ける影響を確認します。 + +## ドッキングおよび固定を使用した、セル内のコントロールの配置 + の子コントロールの固定動作は、他のコンテナー コントロールの場合と異なります。 子コントロールのドッキング動作は、他のコンテナー コントロールと同じです。 + +#### セル内のコントロールの配置 + +1. 最初の コントロールを選択します。 プロパティの値を に変更します。 コントロールがセル全体に拡大します。 + +2. 他の コントロールのいずれかを選択します。 プロパティの値を に変更します。 コントロールが移動し、その右側の境界線がセルの右側の境界線に近づきます。 境界間の距離は、 コントロールの プロパティとパネルの プロパティの合計値です。 + +3. コントロールの プロパティの値を および に変更します。 コントロールのサイズが、 値と 値を考慮して、セルの幅に変更されます。 + +4. スタイルと スタイルを使用して、手順 2. と手順 3. を繰り返します。 + +## 行と列のプロパティの設定 + コレクションと コレクションを使用して、行と列のプロパティを個別に設定できます。 + +#### 行と列のプロパティを設定するには + +1. **Windows フォーム デザイナー**で コントロールを選択します。 + +2. **\[プロパティ\]** ウィンドウで、**\[列\]** エントリの横にある省略記号ボタン \(![VisualStudioEllipsesButton スクリーンショット](../../../../docs/framework/winforms/media/vbellipsesbutton.png "vbEllipsesButton")\) をクリックして コレクションを開きます。 + +3. 最初の列を選択し、 プロパティの値を に変更します。 **\[OK\]** をクリックして変更を適用します。 最初の列の幅が、 コントロールに合わせて縮小されます。 また、列の幅が変更できなくなっていることも確認してください。 + +4. **\[プロパティ\]** ウィンドウで、 コレクションを開き、最初の列を選択します。 プロパティの値を に変更します。 **\[OK\]** をクリックして変更を適用します。 コントロールの幅を拡大すると、最初の列の幅が拡大します。 コントロールの幅を縮小すると、最初の列のボタンのサイズがセルに合わせて変更されます。 また、列の幅が変更できることも確認してください。 + +5. **\[プロパティ\]** ウィンドウで、 コレクションを開き、表示されているすべての列を選択します。 すべての プロパティの値を に設定します。 **\[OK\]** をクリックして変更を適用します。 コレクションでも、この手順を繰り返します。 + +6. 隅のサイズ変更ハンドルのいずれかをドラッグして、 コントロールの幅と高さを共に変更します。 コントロールのサイズの変化に応じて、行と列のサイズが変更されます。 また、行と列は、水平方向と垂直方向のサイズ変更ハンドルを使用してサイズを変更できることも確認してください。 + +## 複数行および複数列へのコントロールの拡大 + コントロールは、デザイン時にいくつかの新しいプロパティをコントロールに追加します。 これらのプロパティのうちの 2 つが `RowSpan` と `ColumnSpan` です。 これら 2 つのプロパティを使用すると、コントロールを複数の行または列に拡大できます。 + +#### コントロールを複数の行と列に拡大するには + +1. 最初の列の最初の行にある コントロールを選択します。 + +2. **\[プロパティ\]** ウィンドウで、`ColumnSpan` プロパティの値を 2 に変更します。 コントロールが最初の列と 2 番目の列を占有します。 また、この変更に対応するために新しい行が追加されていることも確認してください。 + +3. `RowSpan` プロパティに対して手順 2. を繰り返します。 + +## ツールボックスでのダブルクリックによるコントロールの挿入 + **ツールボックス**でコントロールをダブルクリックすることにより、そのコントロールを コントロールに挿入できます。 + +#### ツールボックスでダブルクリックしてコントロールを挿入するには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +2. **ツールボックス**の コントロール アイコンをダブルクリックします。 コントロールの最初のセルに新しいボタン コントロールが表示されます。 + +3. **ツールボックス**でさらにいくつかのコントロールを ダブルクリックします。 新しいコントロールが コントロールの未使用のセルに順次表示されます。 また、空のセルがない場合は、新しいコントロールを格納するために コントロールが拡大します。 + +## オーバーフローの自動処理 + コントロールにコントロールを挿入していくと、新しいコントロールを挿入する空のセルがなくなることがあります。 コントロールは、セルの数を増やすことによってこのような状況に自動的に対処します。 + +#### オーバーフローの自動処理を観察するには + +1. コントロールに空のセルがある場合は、 コントロールがいっぱいになるまで、新しい コントロールを挿入していきます。 + +2. コントロールがいっぱいになったら、**ツールボックス**の アイコンをダブルクリックして、新しい コントロールを挿入します。 コントロールでは、新しいコントロールを格納する新しいセルが作成されます。 コントロールをさらにいくつか挿入し、サイズ変更動作を確認します。 + +3. コントロールの プロパティの値を に変更します。 コントロールがいっぱいになるまで、**ツールボックス**の アイコンをダブルクリックして、 コントロールを挿入します。 **ツールボックス**の アイコンを再度ダブルクリックします。 追加の行と列を作成できないというエラー メッセージが **Windows フォーム デザイナー**によって表示されます。 + +## アウトラインの描画によるコントロールの挿入 + セルにコントロールのアウトラインを描画することによって、コントロールを コントロールに挿入し、サイズを指定できます。 + +#### アウトラインを描画してコントロールを挿入するには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +2. **ツールボックス**の コントロール アイコンをクリックします。 フォームにドラッグしないでください。 + +3. コントロールにマウス ポインターを置きます。 ポインターが コントロール アイコンが付いた十字カーソルに変わります。 + +4. マウス ボタンを押したままにします。 + +5. マウス ポインターをドラッグして、 コントロールのアウトラインを描画します。 適切なサイズのアウトラインを描画したら、マウス ボタンを離します。 コントロールのアウトラインを描画したセルに コントロールが作成されます。 + +## 1 つのセルに配置できるコントロールの数 + コントロールでは、セルごとに 1 つの子コントロールしか配置できません。 + +#### セルに複数のコントロールを配置できないことを確認するには + +- **ツールボックス**から コントロールを コントロールにドラッグし、割り当て済みのセルのいずれかにドロップします。 コントロールでは、割り当て済みのセルに コントロールをドロップできないことを確認してください。 + +## コントロールの交換 + コントロールでは、2 つの別個のセルに割り当てられているコントロールを交換できます。 + +#### コントロールを交換するには + +- 割り当て済みのセルからいずれかの コントロールをドラッグし、別の割り当て済みセルにドロップします。 2 つのコントロールがそれぞれ他方のセルに移動します。 + +## 次の手順 + レイアウト パネルとコントロールを組み合わせて使用すると、複雑なレイアウトを作成できます。 次に行う作業の例を示します。 + +- いずれかの コントロールのサイズを変更して、レイアウトの変化を確認します。 + +- 選択した複数のコントロールを コントロールに貼り付け、それらがどのように挿入されるかを確認します。 + +- レイアウト パネルには、別のレイアウト パネルを含めることができます。 コントロールを既存のコントロールにドロップしてみます。 + +- コントロールを親フォームにドッキングします。 フォームのサイズを変更し、レイアウトの変化を確認します。 + +## 参照 + + + [チュートリアル : FlowLayoutPanel を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-flowlayoutpanel.md) + [チュートリアル : スナップ線を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-snaplines.md) + [Microsoft Windows User Experience, Official Guidelines for User Interface Developers and Designers Redmond, WA: Microsoft Press, 1999. \(USBN: 0\-7356\-0566\-1\)](http://www.microsoft.com/mspress/southpacific/books/book11588.htm) + [Walkthrough: Creating a Resizable Windows Form for Data Entry](http://msdn.microsoft.com/ja-jp/e193b4fc-912a-4917-b036-b76c7a6f58ab) + [Walkthrough: Creating a Localizable Windows Form](http://msdn.microsoft.com/ja-jp/c5240b6e-aaca-4286-9bae-778a416edb9c) + [TableLayoutPanel コントロールの推奨される手順](../../../../docs/framework/winforms/controls/best-practices-for-the-tablelayoutpanel-control.md) + [AutoSize プロパティの概要](../../../../docs/framework/winforms/controls/autosize-property-overview.md) + [方法 : Windows フォーム上のコントロールをドッキングする](../../../../docs/framework/winforms/controls/how-to-dock-controls-on-windows-forms.md) + [方法 : Windows フォームにコントロールを固定する](../../../../docs/framework/winforms/controls/how-to-anchor-controls-on-windows-forms.md) + [チュートリアル : Padding、Margin、および AutoSize プロパティを使用した Windows フォーム コントロールのレイアウト](../../../../docs/framework/winforms/controls/windows-forms-controls-padding-autosize.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-snaplines.md b/docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-snaplines.md new file mode 100644 index 00000000000..2baccb6c1e5 --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-snaplines.md @@ -0,0 +1,256 @@ +--- +title: "チュートリアル : スナップ線を使用した Windows フォーム上のコントロールの配置 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム], 配置 (スナップ線を使用した)" + - "SnapLine クラス, チュートリアル" + - "スナップ線, 配置 (Windows フォーム コントロールを)" + - "Windows フォーム コントロール, 配置" +ms.assetid: d5c9edc7-cf30-4a97-8ebe-201d569340f8 +caps.latest.revision: 24 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 24 +--- +# チュートリアル : スナップ線を使用した Windows フォーム上のコントロールの配置 +フォーム上にコントロールを正確に配置することは、多くのアプリケーションで重要度の高い処理です。 Windows フォーム デザイナーには、そのためのさまざまなレイアウト ツールが用意されています。 その中で最も重要なツールの 1 つが 機能です。 + + スナップ線は、コントロールを他のコントロールと整列させる位置を正確に示します。 また、Windows ユーザー インターフェイスのガイドラインで指定されている、コントロール間のマージンの推奨距離も示します。 詳細については、「[User Interface Design and Development \(ユーザー インターフェイスのデザインと開発\)](http://go.microsoft.com/FWLink/?LinkId=83878)」を参照してください。 + + スナップ線を使用すると、簡単にコントロールを整列させることができ、鮮明でプロフェッショナルな外観と動作を実現できます。 + + このチュートリアルでは、以下のタスクを行います。 + +- Windows フォーム プロジェクトの作成 + +- スナップ線を使用したコントロールのスペーシングと配置 + +- フォームまたはコンテナーのマージンを使用した整列 + +- グループ化されたコントロールとの整列 + +- スナップ線を使用した、サイズのアウトラインによるコントロールの配置 + +- ツールボックスからコントロールをドラッグするときのスナップ線の使用 + +- スナップ線を使用したコントロールのサイズ変更 + +- コントロールのテキストとラベルの整列 + +- キーボードによる移動時のスナップ線の使用 + +- スナップ線とレイアウト パネル + +- スナップ線の無効化 + + ここでは、スナップ線機能がレイアウトに果たす役割について理解します。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 最初にプロジェクトを作成し、フォームを設定します。 + +#### プロジェクトを作成するには + +1. "SnaplineExample" という名前の Windows ベース アプリケーション プロジェクトを作成します。 詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」を参照してください。 + +2. フォーム デザイナーでフォームを選択します。 + +## スナップ線を使用したコントロールのスペーシングと配置 + スナップ線を使用すると、正確かつ直観的にコントロールをフォームに配置できます。 スナップ線は、選択した単数または複数のコントロールを、他のコントロールやコントロール セットと整列する位置の近くに移動すると表示されます。 選択したコントロールが他のコントロールを通過するとき、推奨位置に "スナップ" します。 + +#### スナップ線を使用してコントロールを配置するには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +2. コントロールをフォームの右下隅に移動します。 コントロールがフォームの下側と右側の境界線に近づくと、スナップ線が表示されます。 これらのスナップ線は、コントロールの境界線からフォームの境界線までの推奨距離を表します。 + +3. コントロールをフォームの境界線付近であちこちに移動し、スナップ線がどこで表示されるかを確認します。 この操作を終えたら、 コントロールをフォームの中心付近に移動します。 + +4. **ツールボックス**から別の コントロールをフォームにドラッグします。 + +5. この 2 つ目の コントロールが、最初のコントロールとほぼ水平の位置関係になるように移動します。 両方のボタンのテキスト ベースラインにスナップ線が表示され、移動中のコントロールが、最初のコントロールの真横にスナップします。 + +6. 2 つ目の コントロールを最初のコントロールのすぐ上に移動します。 両方のボタンの左端と右端に沿ってスナップ線が表示され、移動中のコントロールが、最初のコントロールの真上にスナップします。 + +7. コントロールのどちらかを選択し、もう 1 つのコントロールにほぼ接触するまで近づけます。 両方のコントロールの間にスナップ線が表示されます。 この距離が、これらのコントロールの境界間の推奨距離になります。 また、移動中のコントロールがこの位置にスナップすることも確認してください。 + +8. **ツールボックス**から 2 つの コントロールをフォームにドラッグします。 + +9. 1 つの コントロールを、もう 1 つのコントロールとほぼ水平の位置関係になるように移動します。 両方のコントロールの上端と下端に沿ってスナップ線が表示され、移動中のコントロールが、もう 1 つのコントロールの真横にスナップします。 + +## フォームまたはコンテナーのマージンを使用した整列 + スナップ線を使用すると、一貫した方法でフォームやコンテナーのマージンを使用してコントロールを整列させることができます。 + +#### フォームやコンテナーのマージンを使用してコントロールを整列させるには + +1. コントロールを 1 つ選択し、スナップ線が表示されるまで、フォームの右側の境界線に近づけます。 右側の境界線とスナップ線の距離は、コントロールの プロパティ値とフォームの プロパティ値の合計です。 + +> [!NOTE] +> フォームの プロパティを 0,0,0,0 に設定すると、Windows フォーム デザイナーでは、フォームの 値が暗黙的に 9,9,9,9 として解釈されます。 この動作をオーバーライドするには、0,0,0,0 以外の値を割り当てます。 + +1. コントロールの プロパティの値を変更します。これを行うには、**\[プロパティ\]** ウィンドウで エントリを展開し、 プロパティを 0 に設定します。 詳細については、「[チュートリアル : Padding、Margin、および AutoSize プロパティを使用した Windows フォーム コントロールのレイアウト](../../../../docs/framework/winforms/controls/windows-forms-controls-padding-autosize.md)」を参照してください。 + +2. スナップ線が表示されるまで、 コントロールをフォームの右側の境界線に近づけます。 この距離は、フォームの プロパティの値によって決まります。 + +3. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +4. コントロールの プロパティの値を変更します。これを行うには、**\[プロパティ\]** ウィンドウで エントリを展開し、 プロパティを 10 に設定します。 + +5. **ツールボックス**の コントロールを コントロールにドラッグします。 + +6. スナップ線が表示されるまで、 コントロールを コントロールの右側の境界線に近づけます。 コントロール内で を移動し、スナップ線がどこで表示されるかを確認します。 + +## グループ化されたコントロールとの整列 + スナップ線を使用すると、 コントロール内の コントロールだけでなく、グループ化されたコントロールも整列させることができます。 + +#### グループ化されたコントロールと整列させるには + +1. フォーム上のコントロールを 2 つ選択します。 選択したコントロールをあちこちに移動し、選択したコントロールと他のコントロールの間に表示されるスナップ線を確認します。 + +2. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +3. **ツールボックス**の コントロールを コントロールにドラッグします。 + +4. コントロールの 1 つを選択し、 コントロールの周囲であちこちに移動します。 コントロールの各端にスナップ線が表示されます。 また、 コントロールに含まれている コントロールの各端にもスナップ線が表示されます。 コンテナー コントロール内の子コントロールもスナップ線をサポートします。 + +## スナップ線を使用した、サイズのアウトラインによるコントロールの配置 + スナップ線を使用すると、コントロールを初めてフォームに配置する際に簡単に整列させることができます。 + +#### スナップ線を使用し、サイズのアウトラインを描いてコントロールを配置するには + +1. **ツールボックス**の コントロール アイコンをクリックします。 フォームにドラッグしないでください。 + +2. マウス ポインターをフォームのデザイン サーフェイスに置きます。 ポインターが コントロール アイコンが付いた十字カーソルに変わります。 また、 コントロールの推奨整列位置を示すスナップ線も表示されます。 + +3. マウス ボタンを押したままにします。 + +4. マウス ポインターをフォーム上でドラッグします。 コントロールの位置とサイズを示すアウトラインが描画されます。 + +5. フォーム上の別のコントロールに整列する位置までポインターをドラッグします。 スナップ線が表示され、整列を示します。 + +6. マウスのボタンを離します。 アウトラインで示された位置とサイズでコントロールが作成されます。 + +## ツールボックスからコントロールをドラッグするときのスナップ線の使用 + スナップ線を使用すると、**ツールボックス**からフォームにドラッグしたコントロールを簡単に整列させることができます。 + +#### ツールボックスからコントロールをドラッグするときにスナップ線を使用するには + +1. **ツールボックス**から コントロールをフォームにドラッグし、マウス ボタンを押したままにします。 + +2. マウス ポインターをフォームのデザイン サーフェイスに置きます。 ポインターの形が変わり、新しい コントロールが作成される位置を示します。 + +3. マウス ポインターをフォーム上でドラッグします。 コントロールの推奨整列位置を示すスナップ線が表示されます。 他のコントロールと整列する位置を見つけます。 + +4. マウスのボタンを離します。 スナップ線で示された位置にコントロールが作成されます。 + +## スナップ線を使用したコントロールのサイズ変更 + スナップ線を使用すると、コントロールのサイズを変更したときに簡単に整列させることができます。 + +#### スナップ線を使用してコントロールのサイズを変更するには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +2. コントロールの隅にあるサイズ変更ハンドルのいずれかをドラッグして、コントロールのサイズを変更します。 詳細については、「[方法 : Windows フォーム上のコントロールのサイズを変更する](../../../../docs/framework/winforms/controls/how-to-resize-controls-on-windows-forms.md)」を参照してください。 + +3. コントロールの境界線のいずれかが他のコントロールと整列するまでサイズ変更ハンドルをドラッグします。 スナップ線が表示されるのを確認します。 また、サイズ変更ハンドルがスナップ線で示された位置にスナップすることも確認します。 + +4. さまざまな方向に コントロールのサイズを変更し、サイズ変更ハンドルを別のコントロールに整列させます。 スナップ線がさまざまな方向に表示されて、整列を示すことを確認してください。 + +## コントロールのテキストとラベルの整列 + 一部のコントロールでは、スナップ線を利用して、他のコントロールを表示テキストに合わせて整列させることができます。 + +#### ラベルとコントロールのテキストを整列させるには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 コントロールをフォームにドロップしたら、スマート タグ グリフをクリックし、**\[textBox1 にテキストを設定\]** をクリックします。 詳細については、「[チュートリアル : Windows フォーム コントロールのスマート タグを使用した共通タスクの実行](../../../../docs/framework/winforms/controls/performing-common-tasks-using-smart-tags-on-wf-controls.md)」を参照してください。 + +2. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +3. コントロールの プロパティの値を `true` に変更します。 コントロールの境界線が表示テキストに合わせて調整されます。 + +4. コントロールを コントロールの左に移動し、 コントロールの下端に合わせて配置します。 2 つのコントロールの下端に沿ってスナップ線が表示されます。 + +5. のテキストと のテキストが整列するまで、 コントロールをわずかに上に移動します。 両方のコントロールのテキスト フィールドが整列すると、スタイルの異なるスナップ線が表示されます。 + +## キーボードによる移動時のスナップ線の使用 + スナップ線を使用すると、キーボードの方向キーを使用してコントロールを配置するときに、コントロールを簡単に整列させることができます。 + +#### キーボードによる移動時にスナップ線を使用するには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 このコントロールをフォームの左上隅に配置します。 + +2. Ctrl キーを押しながら↓キーを押します。 コントロールがフォーム内で下に移動し、使用できる最初の整列位置に置かれます。 + +3. コントロールがフォームの下端に到達するまで、Ctrl キーを押しながら↓キーを押し続けます。 コントロールがフォーム内を下に移動するときに占有する位置を確認します。 + +4. Ctrl キーを押しながら→キーを押します。 コントロールがフォーム上で右に移動し、使用できる最初の整列位置に置かれます。 + +5. コントロールがフォームの右端に到達するまで、Ctrl キーを押しながら→キーを押し続けます。 コントロールがフォーム内を右に移動するときに占有する位置を確認します。 + +6. 方向キーを組み合わせて使用してコントロールをフォーム上で移動します。 コントロールが占有する位置と表示されるスナップ線を確認します。 + +7. Shift キーを押しながら任意の方向キーを押して、 コントロールのサイズを 1 ピクセルずつ変更します。 + +8. Ctrl キーと Shift キーを押しながら任意の方向キーを押して、 コントロールのサイズをスナップ線のインクリメントで変更します。 + +## スナップ線とレイアウト パネル + スナップ線はレイアウト パネル内で無効にできます。 + +#### スナップ線を選択的に無効にするには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +2. **ツールボックス**の コントロール アイコンをダブルクリックします。 コントロールの最初のセルに新しいボタン コントロールが表示されます。 + +3. **ツールボックス**の コントロール アイコンをさらに 2 回ダブルクリックします。 これで、 コントロール内の空のセルは 1 つになります。 + +4. **ツールボックス**から コントロールを コントロールの空のセルにドラッグします。 スナップ線が表示されないことを確認します。 + +5. コントロールの外に コントロールをドラッグし、 コントロールの周囲を移動します。 スナップ線が再び表示されるのを確認します。 + +## スナップ線の無効化 + スナップ線は既定で有効です。 スナップ線は選択的に無効にすることも、デザイン環境で無効にすることもできます。 + +#### スナップ線を選択的に無効にするには + +- Alt キーを押しながらコントロールをフォーム上で移動します。 + + スナップ線が表示されず、コントロールが整列位置にスナップしないことを確認します。 + +#### スナップ線をデザイン環境で無効にするには + +1. **\[ツール\]** メニューから **\[オプション\]** ダイアログ ボックスを開きます。 \[Windows フォーム デザイナー\] ダイアログ ボックスを開きます。 詳細については、「[General, Windows Forms Designer, Options Dialog Box](http://msdn.microsoft.com/ja-jp/8dd170af-72f0-4212-b04b-034ceee92834)」を参照してください。 + +2. **\[全般\]** ノードを選択します。 **\[Layout Mode\]** セクションの選択項目を **\[SnapLines\]** から **\[SnapToGrid\]** に変更します。 + +3. \[OK\] をクリックして設定を適用します。 + +4. フォームでコントロールを選択し、他のコントロールの周囲で移動します。 スナップ線が表示されないことを確認します。 + +## 次の手順 + スナップ線を使用すると、フォーム上でコントロールを直観的に整列させることができます。 次に行う作業の例を示します。 + +- コントロールに別の コントロールを入れ子にしてみます。 コントロールを子 コントロールの中に配置し、別の Button コントロールを親 コントロールの中に配置します。 コントロールをあちこちに移動して、スナップ線がコンテナーの境界線とどのように交差するかを確認します。 + +- コントロールの列と、これに対応する コントロールの列を作成します。 コントロールの プロパティの値を `true` に設定します。 コントロールの表示テキストと コントロールのテキストが整列するように、スナップ線を使用して Label コントロールを移動します。 + + Windows ユーザー インターフェイスのデザインについては、書籍『*Microsoft Windows User Experience, Official Guidelines for User Interface Developers and Designers*』\(Redmond, WA: Microsoft Press, 1999. \(USBN: 0\-7356\-0566\-1\)\) を参照してください。 + +## 参照 + + [チュートリアル : FlowLayoutPanel を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-flowlayoutpanel.md) + [チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-tablelayoutpanel.md) + [チュートリアル : Padding、Margin、および AutoSize プロパティを使用した Windows フォーム コントロールのレイアウト](../../../../docs/framework/winforms/controls/windows-forms-controls-padding-autosize.md) + [Windows フォームでのコントロールの配置](../../../../docs/framework/winforms/controls/arranging-controls-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-authoring-a-composite-control-with-visual-basic.md b/docs/framework/winforms/controls/walkthrough-authoring-a-composite-control-with-visual-basic.md new file mode 100644 index 00000000000..80695bfc292 --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-authoring-a-composite-control-with-visual-basic.md @@ -0,0 +1,426 @@ +--- +title: "チュートリアル : Visual Basic による複合コントロールの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "複合コントロール, 作成" + - "コントロール [Windows フォーム], 複合コントロール" + - "カスタム コントロール [Visual Basic]" + - "カスタム コントロール [Windows フォーム], 作成" + - "ユーザー コントロール [Visual Basic]" + - "ユーザー コントロール [Windows フォーム], 作成 (Visual Basic を使用した)" + - "UserControl クラス, チュートリアル" +ms.assetid: f50e270e-4db2-409a-8319-6db6ca5c7daf +caps.latest.revision: 21 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 21 +--- +# チュートリアル : Visual Basic による複合コントロールの作成 +複合コントロールは、カスタム グラフィカル インターフェイスの作成と再利用のための手段を提供します。 複合コントロールは、基本的には表示できる形式を持つコンポーネントです。 そのため、ユーザー コントロールは、1 つ以上の Windows フォーム コントロール、コンポーネント、またはコードのブロックから構成でき、ユーザー入力を検査したり、表示プロパティを変更したり、作成者によって要求されるその他のタスクを実行したりすることで機能を拡張できます。 複合コントロールは、他のコントロールと同じ方法で Windows フォームに配置できます。 このチュートリアルの前半では、`ctlClock` という名前の単純な複合コントロールを作成します。 後半では、継承によって `ctlClock` の機能を拡張します。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 新しいプロジェクトを作成するときには、その名前を指定することにより、ルート名前空間、アセンブリ名、およびプロジェクト名を設定し、既定のコンポーネントが正しい名前空間に含まれるようにします。 + +#### ctlClockLib コントロール ライブラリおよび ctlClock コントロールを作成するには + +1. **\[ファイル\]** メニューの **\[新規作成\]** をポイントし、**\[プロジェクト\]** をクリックして **\[新しいプロジェクト\]** ダイアログ ボックスを表示します。 + +2. [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] プロジェクトの一覧の **\[Windows コントロール ライブラリ\]** プロジェクト テンプレートをクリックし、**\[プロジェクト名\]** ボックスに「`ctlClockLib`」と入力して、**\[OK\]** をクリックします。 + + プロジェクト名 `ctlClockLib` は、既定でルート名前空間にも割り当てられます。 ルート名前空間は、アセンブリ内のコンポーネント名の修飾に使用されます。 たとえば、`ctlClock` という名前のコンポーネントが 2 つのアセンブリに含まれる場合は、`ctlClockLib.ctlClock` という形で目的の `ctlClock` コンポーネントを指定できます。 + +3. ソリューション エクスプローラーで、**UserControl1.vb** を右クリックし、**\[名前の変更\]** をクリックします。 ファイル名を「`ctlClock.vb`」に変更します。 コード要素 "UserControl1" へのすべての参照の名前を変更するかどうかを確認するダイアログ ボックスが表示されたら、**\[はい\]** をクリックします。 + + > [!NOTE] + > 既定では、複合コントロールはシステムによって提供される クラスを継承します。 クラスは、すべての複合コントロールに必要な機能を提供し、標準のメソッドおよびプロパティを実装します。 + +4. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックして、プロジェクトを保存します。 + +## 複合コントロールへの Windows コントロールおよびコンポーネントの追加 + ビジュアル インターフェイスは、複合コントロールの基本的な部分です。 このビジュアル インターフェイスは、デザイナー画面に 1 つ以上の Windows コントロールを追加することによって実装されます。 次の例では、複合コントロールに Windows コントロールを取り込んで、機能を実装するコードを記述します。 + +#### 複合コントロールに Label と Timer を追加するには + +1. ソリューション エクスプローラーで **ctlClock.vb** を右クリックし、**\[デザイナーの表示\]** をクリックします。 + +2. ツールボックスの **\[コモン コントロール\]** ノードを展開し、**\[Label\]** をダブルクリックします。 + + `Label1` という名前の がデザイナー画面のコントロールに追加されます。 + +3. デザイナーで **Label1** をクリックします。 プロパティ ウィンドウで、次のプロパティを設定します。 + + |プロパティ|変更後の値| + |-----------|-----------| + |**名前**|`lblDisplay`| + |**テキスト**|`(空白)`| + |**TextAlign**|`MiddleCenter`| + |**Font.Size**|`14`| + +4. **ツールボックス**の **\[コンポーネント\]** ノードを展開し、**\[Timer\]** をダブルクリックします。 + + はコンポーネントであるため、実行時には表示できる形式を持ちません。 このため、デザイナー画面にはコントロールと共には表示されず、コンポーネント デザイナー \(デザイナー画面の下部にあるトレイ\) に表示されます。 + +5. コンポーネント デザイナーで、**\[Timer1\]** をクリックし、 プロパティを `1000`、 プロパティを `True` に設定します。 + + プロパティは、タイマー コンポーネントが時を刻む頻度を制御します。 `Timer1` が時を刻むたびに、`Timer1_Tick` イベントのコードが実行されます。 このプロパティは、タイマーが何ミリ秒ごとに時を刻むかを表しています。 + +6. コンポーネント デザイナーで、**\[Timer1\]** をダブルクリックして、`ctlClock` の `Timer1_Tick` イベントに移動します。 + +7. コードを次のコード サンプルのように変更します。 アクセス修飾子を必ず `Private` から `Protected` に変更してください。 + + \[Visual Basic\] + + ``` + Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As _ + System.EventArgs) Handles Timer1.Tick + ' Causes the label to display the current time. + lblDisplay.Text = Format(Now, "hh:mm:ss") + End Sub + ``` + + このコードは、現在の時刻を `lblDisplay` に表示します。 `Timer1` の間隔は 1000 に設定されているため、このイベントは `1000` ミリ秒ごとに発生します。したがって、現在の時刻は 1 秒ごとに更新されます。 + +8. メソッドをオーバーライドできるように変更します。 詳細については、後の「ユーザー コントロールからの継承」を参照してください。 + + \[Visual Basic\] + + ``` + Protected Overridable Sub Timer1_Tick(ByVal sender As Object, ByVal _ + e As System.EventArgs) Handles Timer1.Tick + ``` + +9. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックして、プロジェクトを保存します。 + +## 複合コントロールへのプロパティの追加 + 現在、クロック コントロールは、それぞれが固有のプロパティ セットを持つ コントロールと コンポーネントをカプセル化しています。 各コントロールのプロパティは、コントロールの後続のユーザーからはアクセスできませんが、適切なコード ブロックを作成することによってカスタム プロパティを作成および公開できます。 次の手順では、ユーザーが背景とテキストの色を変更できるようにするプロパティをコントロールに追加します。 + +#### 複合コントロールにプロパティを追加するには + +1. ソリューション エクスプローラーで **ctlClock.vb** を右クリックし、**\[コードの表示\]** をクリックします。 + + コントロールのコード エディターが表示されます。 + +2. `Public Class ctlClock` ステートメントを探します。 この行の直後に、次のコードを追加します。 + + \[Visual Basic\] + + ``` + Private colFColor as Color + Private colBColor as Color + ``` + + これらのステートメントは、作成するプロパティの値を格納するために使用するプライベート変数を作成します。 + +3. 手順 2. の変数宣言の下に次のコードを挿入します。 + + \[Visual Basic\] + + ``` + ' Declares the name and type of the property. + Property ClockBackColor() as Color + ' Retrieves the value of the private variable colBColor. + Get + Return colBColor + End Get + ' Stores the selected value in the private variable colBColor, and + ' updates the background color of the label control lblDisplay. + Set(ByVal value as Color) + colBColor = value + lblDisplay.BackColor = colBColor + End Set + + End Property + ' Provides a similar set of instructions for the foreground color. + Property ClockForeColor() as Color + Get + Return colFColor + End Get + Set(ByVal value as Color) + colFColor = value + lblDisplay.ForeColor = colFColor + End Set + End Property + ``` + + 上記のコードは、`Property` ステートメントを呼び出すことにより、このコントロールを今後使用するユーザーが `ClockForeColor` および `ClockBackColor` という 2 つのカスタム プロパティを使用できるようにします。 `Get` ステートメントと `Set` ステートメントは、プロパティに適切な機能を実装するコードと共に、プロパティ値の格納と取得の機能を提供します。 + +4. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックして、プロジェクトを保存します。 + +## コントロールのテスト + コントロールはスタンドアロン プロジェクトではないため、コンテナーでホストする必要があります。 コントロールの実行時の動作をテストし、**ユーザー コントロール テスト コンテナー**でそのプロパティを実行します。 詳細については、「[方法 : UserControl の実行時の動作をテストする](../../../../docs/framework/winforms/controls/how-to-test-the-run-time-behavior-of-a-usercontrol.md)」を参照してください。 + +#### コントロールをテストするには + +1. F5 キーを押してプロジェクトをビルドし、**ユーザー コントロール テスト コンテナー**でコントロールを実行します。 + +2. テスト コンテナーのプロパティ グリッドで、`ClockBackColor` プロパティを選択し、ドロップダウン矢印をクリックしてカラー パレットを表示します。 + +3. 任意の色をクリックして選択します。 + + コントロールの背景色が、選択した色に変更されます。 + +4. 同様なイベントのシーケンスを使用して、`ClockForeColor` プロパティが予想どおりに機能することを確認します。 + +5. **\[閉じる\]** をクリックして **\[ユーザー コントロール テスト コンテナー\]** を閉じます。 + + このセクションと前のセクションでは、コンポーネントと Windows コントロールをコードと結合し、複合コントロールの形式にパッケージ化してカスタム機能を提供する方法を説明しました。 複合コントロールのプロパティを公開し、完了後にコントロールをテストする方法を学びました。 次のセクションでは、`ctlClock` をベースとして継承した複合コントロールを構築する方法を学びます。 + +## 複合コントロールからの継承 + 前のセクションでは、再利用可能な複合コントロールに Windows コントロール、コンポーネント、およびコードを組み込む方法を学びました。 この複合コントロールをベースにして、他のコントロールを作成できます。 基本クラスからクラスを派生するプロセスは*継承*と呼ばれます。 このセクションでは、`ctlAlarmClock` という名前の複合コントロールを作成します。 このコントロールは、親コントロールである `ctlClock` から派生します。 ここでは、親のメソッドをオーバーライドし、新しいメソッドおよびプロパティを追加することにより、`ctlClock` の機能を拡張する方法を学びます。 + + 継承コントロールの作成の最初の手順は、親コントロールからの派生です。 これにより、親コントロールのプロパティ、メソッド、およびグラフィカル特性をすべて持つ新しいコントロールが作成されます。このコントロールに基づいて、新しい機能を追加したり機能を変更したりできます。 + +#### 継承コントロールを作成するには + +1. ソリューション エクスプローラーで、**\[ctlClockLib\]** を右クリックします。**\[追加\]** をポイントし、**\[ユーザー コントロール\]** をクリックします。 + + **\[新しい項目の追加\]** ダイアログ ボックスが表示されます。 + +2. **\[継承されたユーザー コントロール\]** テンプレートを選択します。 + +3. **\[ファイル名\]** ボックスに「`ctlAlarmClock.vb`」と入力し、**\[追加\]** をクリックします。 + + **\[継承ピッカー\]** ダイアログ ボックスが表示されます。 + +4. **\[コンポーネント名\]** の **\[ctlClock\]** をダブルクリックします。 + +5. ソリューション エクスプローラーで、現在のプロジェクトを最後まで参照します。 + + > [!NOTE] + > 現在のプロジェクトに **ctlAlarmClock.vb** という名前のファイルが追加されています。 + +### アラーム プロパティの追加 + 複合コントロールにプロパティを追加する場合と同じ方法で、継承コントロールにプロパティを追加できます。 ここでは、プロパティ宣言の構文を使用してコントロールに 2 つのプロパティを追加します。`AlarmTime` プロパティは、アラームを鳴らす日付と時刻の値を格納します。`AlarmSet` プロパティは、アラームが設定されているかどうかを示します。 + +##### 複合コントロールにプロパティを追加するには + +1. ソリューション エクスプローラーで、**\[ctlAlarmClock\]** を右クリックし、**\[コードの表示\]** をクリックします。 + +2. `Public Class ctlAlarmClock` として表示されている ctlAlarmClock コントロールのクラス宣言を探します。 クラス宣言に次のコードを挿入します。 + + \[Visual Basic\] + + ``` + Private dteAlarmTime As Date + Private blnAlarmSet As Boolean + ' These properties will be declared as Public to allow future + ' developers to access them. + Public Property AlarmTime() As Date + Get + Return dteAlarmTime + End Get + Set(ByVal value as Date) + dteAlarmTime = value + End Set + End Property + Public Property AlarmSet() As Boolean + Get + Return blnAlarmSet + End Get + Set(ByVal value as Boolean) + blnAlarmSet = value + End Set + End Property + ``` + +### コントロールのグラフィカル インターフェイスへの追加 + 継承したコントロールには、継承元のコントロールと同じビジュアル インターフェイスがあります。 継承コントロールには親コントロールと同じ内在コントロールがありますが、内在コントロールのプロパティは特に公開されない限り使用できません。 継承した複合コントロールのグラフィカル インターフェイスも、他の複合コントロールと同じように拡張できます。 引き続き、アラーム クロックのビジュアル インターフェイスに、アラームが鳴ったときに点滅するラベル コントロールを追加します。 + +##### ラベル コントロールを追加するには + +1. ソリューション エクスプローラーで、**\[ctlAlarmClock\]** を右クリックし、**\[デザイナーの表示\]** をクリックします。 + + `ctlAlarmClock` のデザイナーがメイン ウィンドウに表示されます。 + +2. `lblDisplay` \(コントロールの表示部分\) をクリックし、\[プロパティ\] ウィンドウを表示します。 + + > [!NOTE] + > すべてのプロパティが表示されていますが、淡色表示になっています。 つまり、これらのプロパティは `lblDisplay` に対してネイティブであり、\[プロパティ\] ウィンドウでは変更もアクセスもできません。 既定では、複合コントロールに含まれているコントロールは `Private` であり、どのような方法によってもプロパティにアクセスできません。 + + > [!NOTE] + > 今後複合コントロールを使用するユーザーがその内部のコントロールにアクセスできるようにするには、内部のコントロールを `Public` または `Protected` として宣言します。 これにより、適切なコードを使用して、複合コントロールに含まれるコントロールのプロパティを設定したり変更したりできるようになります。 + +3. 複合コントロールに コントロールを追加します。 + +4. マウスを使用して、 コントロールを表示ボックスのすぐ下にドラッグします。 プロパティ ウィンドウで、次のプロパティを設定します。 + + |プロパティ|設定| + |-----------|--------| + |**名前**|`lblAlarm`| + |**テキスト**|Alarm\!| + |**TextAlign**|`MiddleCenter`| + |**Visible**|`False`| + +### アラーム機能の追加 + 前の手順では、複合コントロールでアラーム機能を有効にするためのプロパティおよびコントロールを追加しました。 この手順では、現在の時刻をアラーム設定時刻と比較して、一致した場合にはアラームを鳴らしてラベルを点滅させるコードを追加します。 `ctlClock` の `Timer1_Tick` メソッドをオーバーライドしてコードを追加することにより、`ctlClock` の固有の機能をすべて保持しながら `ctlAlarmClock` の機能を拡張できます。 + +##### ctlClock の Timer1\_Tick メソッドをオーバーライドするには + +1. ソリューション エクスプローラーで **ctlAlarmClock.vb** を右クリックし、**\[コードの表示\]** をクリックします。 + +2. `Private blnAlarmSet As Boolean` ステートメントを探します。 このステートメントの直後に、次のステートメントを追加します。 + + \[Visual Basic\] + + ``` + Dim blnColorTicker as Boolean + ``` + +3. ページの下部にある `End Class` ステートメントを探します。 `End Class` ステートメントの直前に、次のコードを追加します。 + + \[Visual Basic\] + + ``` + Protected Overrides Sub Timer1_Tick(ByVal sender As Object, ByVal e _ + As System.EventArgs) + ' Calls the Timer1_Tick method of ctlClock. + MyBase.Timer1_Tick(sender, e) + ' Checks to see if the Alarm is set. + If AlarmSet = False Then + Exit Sub + End If + ' If the date, hour, and minute of the alarm time are the same as + ' now, flash and beep an alarm. + If AlarmTime.Date = Now.Date And AlarmTime.Hour = Now.Hour And _ + AlarmTime.Minute = Now.Minute Then + ' Sounds an audible beep. + Beep() + ' Sets lblAlarmVisible to True, and changes the background color based on the + ' value of blnColorTicker. The background color of the label will + ' flash once per tick of the clock. + lblAlarm.Visible = True + If blnColorTicker = False Then + lblAlarm.BackColor = Color.PeachPuff + blnColorTicker = True + Else + lblAlarm.BackColor = Color.Plum + blnColorTicker = False + End If + Else + ' Once the alarm has sounded for a minute, the label is made + ' invisible again. + lblAlarm.Visible = False + End If + End Sub + ``` + + このコードを追加することで、いくつかのタスクが実行されます。 `Overrides` ステートメントは、基本コントロールから継承されたメソッドの代わりに、このメソッドを使用するようにコントロールに指示します。 このメソッドが呼び出されると、メソッドは `MyBase.Timer1_Tick` ステートメントを呼び出すことにより、オーバーライドするメソッドを呼び出します。その結果、元のコントロールに含まれるすべての機能がこのコントロールに継承されます。 メソッドは次に追加のコードを実行してアラーム機能を組み込みます。 アラームが発生すると、点滅するラベル コントロールが表示され、ビープ音が聞こえます。 + + > [!NOTE] + > オーバーライドしているのは継承したイベント ハンドラーであるため、`Handles` キーワードでイベントを指定する必要はありません。 イベントは既にフックされています。 オーバーライドしているのはハンドラーの実装です。 + + これで、アラーム付き時計はほぼ完成です。 後は、アラームを止める手段を実装するだけです。 これを行うには、`lblAlarm_Click` メソッドにコードを追加します。 + +##### アラームを止める手段を実装するには + +1. ソリューション エクスプローラーで **ctlAlarmClock.vb** を右クリックし、**\[デザイナーの表示\]** をクリックします。 + +2. デザイナーで **lblAlarm** をダブルクリックします。 **コード エディター**が開き、`Private Sub lblAlarm_Click` 行が表示されます。 + +3. このメソッドを次のコードのように変更します。 + + \[Visual Basic\] + + ``` + Private Sub lblAlarm_Click(ByVal sender As Object, ByVal e As _ + System.EventArgs) Handles lblAlarm.Click + ' Turns off the alarm. + AlarmSet = False + ' Hides the flashing label. + lblAlarm.Visible = False + End Sub + ``` + +4. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックして、プロジェクトを保存します。 + +### フォームでの継承コントロールの使用 + 継承コントロールは、基本クラスである `ctlClock` のテストと同様の方法でテストできます。F5 キーを押してプロジェクトをビルドし、**ユーザー コントロール テスト コンテナー**でコントロールを実行します。 詳細については、「[方法 : UserControl の実行時の動作をテストする](../../../../docs/framework/winforms/controls/how-to-test-the-run-time-behavior-of-a-usercontrol.md)」を参照してください。 + + コントロールを使用できるようにするには、フォーム上でコントロールをホストする必要があります。 標準複合コントロールと同様に、継承複合コントロールはスタンドアロン型ではないため、フォームまたは他のコンテナーでホストする必要があります。 `ctlAlarmClock` は機能が拡張されているため、テストにも追加のコードが必要です。 次の手順では、`ctlAlarmClock` の機能をテストするための簡単なプログラムを記述します。 `ctlAlarmClock` の `AlarmTime` プロパティを設定および表示するコードを作成し、固有の機能をテストします。 + +##### コントロールをビルドしてテスト フォームに追加するには + +1. ソリューション エクスプローラーで、**\[ctlClockLib\]** を右クリックし、**\[ビルド\]** をクリックします。 + +2. **\[ファイル\]** メニューの **\[追加\]** をポイントし、**\[新しいプロジェクト\]** をクリックします。 + +3. ソリューションに新しい **Windows アプリケーション** プロジェクトを追加し、「`Test`」という名前を付けます。 + + **Test** プロジェクトがソリューション エクスプローラーに追加されます。 + +4. ソリューション エクスプローラーで、\[`Test`\] プロジェクト ノードを右クリックし、**\[参照の追加\]** をクリックして **\[参照の追加\]** ダイアログ ボックスを表示します。 + +5. **\[プロジェクト\]** タブをクリックします。 **ctlClockLib** プロジェクトが **\[プロジェクト名\]** の下に表示されます。 **\[ctlClockLib\]** をダブルクリックして、テスト プロジェクトに参照を追加します。 + +6. ソリューション エクスプローラーで、**Test** を右クリックし、**\[ビルド\]** をクリックします。 + +7. **ツールボックス**で、**\[ctlClockLib コンポーネント\]** ノードを展開します。 + +8. **\[ctlAlarmClock\]** をダブルクリックして、`ctlAlarmClock` のインスタンスをフォームに追加します。 + +9. **ツールボックス**で、**\[DateTimePicker\]** を検索してダブルクリックし、 コントロールをフォームに追加します。また、**\[Label\]** をダブルクリックして コントロールを追加します。 + +10. マウスを使用して、フォーム上で各コントロールを使いやすい位置に移動します。 + +11. コントロールのプロパティを次のように設定します。 + + |Control|プロパティ|値| + |-------------|-----------|-------| + |`label1`|**テキスト**|`(空白)`| + ||**名前**|`lblTest`| + |`dateTimePicker1`|**名前**|`dtpTest`| + ||**書式**|| + +12. デザイナーで、**\[dtpTest\]** をダブルクリックします。 + + **コード エディター**が開き、`Private Sub dtpTest_ValueChanged` が表示されます。 + +13. コードを次のように変更します。 + + \[Visual Basic\] + + ``` + Private Sub dtpTest_ValueChanged(ByVal sender As Object, ByVal e As _ + System.EventArgs) Handles dtpTest.ValueChanged + ctlAlarmClock1.AlarmTime = dtpTest.Value + ctlAlarmClock1.AlarmSet = True + lblTest.Text = "Alarm Time is " & Format(ctlAlarmClock1.AlarmTime, _ + "hh:mm") + End Sub + ``` + +14. ソリューション エクスプローラーで、**Test** を右クリックし、**\[スタートアップ プロジェクトに設定\]** をクリックします。 + +15. **\[デバッグ\]** メニューの **\[デバッグ開始\]** をクリックします。 + + テスト プログラムが起動します。 `ctlAlarmClock` コントロールの現在時刻が更新され、 コントロールに開始時刻が表示されます。 + +16. で分が表示されている部分をクリックします。 + +17. キーボードを使用して、`ctlAlarmClock` によって表示されている現在の時刻より 1 分後の値を設定します。 + + アラーム設定時刻は `lblTest` に表示されます。 表示時刻がアラームの設定時刻になるまで待ちます。 表示時刻がアラーム設定時刻になると、ビープ音が鳴り、`lblAlarm` が点滅します。 + +18. `lblAlarm` をクリックしてアラームを止めます。 その後で、アラームを再び設定できます。 + + このチュートリアルでは、多数の重要な概念を扱いました。 複合コントロール コンテナーにコントロールやコンポーネントを組み込んで複合コントロールを作成する方法を学びました。 また、コントロールにプロパティを追加する方法や、カスタム機能を実装するコードを記述する方法も学びました。 最後のセクションでは、継承によって特定の複合コントロールの機能を拡張し、オーバーライドによりホストのメソッドの機能を変更する方法を学びました。 + +## 参照 + [さまざまなカスタム コントロール](../../../../docs/framework/winforms/controls/varieties-of-custom-controls.md) + [方法 : 複合コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-author-composite-controls.md) + [方法: \[ツールボックス アイテムの選択\] ダイアログ ボックスにコントロールを表示する](../../../../docs/framework/winforms/controls/how-to-display-a-control-in-the-choose-toolbox-items-dialog-box.md) + [Component Authoring Walkthroughs](../Topic/Component%20Authoring%20Walkthroughs.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-authoring-a-composite-control-with-visual-csharp.md b/docs/framework/winforms/controls/walkthrough-authoring-a-composite-control-with-visual-csharp.md new file mode 100644 index 00000000000..6627790183f --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-authoring-a-composite-control-with-visual-csharp.md @@ -0,0 +1,437 @@ +--- +title: "チュートリアル : Visual C# による複合コントロールの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "カスタム コントロール [C#]" + - "カスタム コントロール [Windows フォーム], 作成" + - "ユーザー コントロール [C#]" + - "ユーザー コントロール [Windows フォーム], 作成 (Visual C# を使用した)" + - "UserControl クラス, チュートリアル" +ms.assetid: f88481a8-c746-4a36-9479-374ce5f2e91f +caps.latest.revision: 21 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 21 +--- +# チュートリアル : Visual C# による複合コントロールの作成 +複合コントロールは、カスタム グラフィカル インターフェイスの作成と再利用のための手段を提供します。 複合コントロールは、基本的には表示できる形式を持つコンポーネントです。 そのため、ユーザー コントロールは、1 つ以上の Windows フォーム コントロール、コンポーネント、またはコードのブロックから構成でき、ユーザー入力を検査したり、表示プロパティを変更したり、作成者によって要求されるその他のタスクを実行したりすることで機能を拡張できます。 複合コントロールは、他のコントロールと同じ方法で Windows フォームに配置できます。 このチュートリアルの前半では、`ctlClock` という名前の単純な複合コントロールを作成します。 後半では、継承によって `ctlClock` の機能を拡張します。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 新しいプロジェクトを作成するときには、その名前を指定することにより、ルート名前空間、アセンブリ名、およびプロジェクト名を設定し、既定のコンポーネントが正しい名前空間に含まれるようにします。 + +#### ctlClockLib コントロール ライブラリおよび ctlClock コントロールを作成するには + +1. **\[ファイル\]** メニューの **\[新規作成\]** をポイントし、**\[プロジェクト\]** をクリックして **\[新しいプロジェクト\]** ダイアログ ボックスを表示します。 + +2. [!INCLUDE[csprcs](../../../../includes/csprcs-md.md)] プロジェクトの一覧の **\[Windows フォーム コントロール ライブラリ\]** プロジェクト テンプレートをクリックし、**\[プロジェクト名\]** ボックスに「`ctlClockLib`」と入力し、**\[OK\]** をクリックします。 + + プロジェクト名 `ctlClockLib` は、既定でルート名前空間にも割り当てられます。 ルート名前空間は、アセンブリ内のコンポーネント名の修飾に使用されます。 たとえば、`ctlClock` という名前のコンポーネントが 2 つのアセンブリに含まれる場合は、`ctlClockLib.ctlClock` という形で目的の `ctlClock` コンポーネントを指定できます。 + +3. ソリューション エクスプローラーで、**UserControl1.cs** を右クリックし、**\[名前の変更\]** をクリックします。 ファイル名を「`ctlClock.cs`」に変更します。 コード要素 "UserControl1" へのすべての参照の名前を変更するかどうかを確認するダイアログ ボックスが表示されたら、**\[はい\]** をクリックします。 + + > [!NOTE] + > 既定では、複合コントロールはシステムによって提供される クラスを継承します。 クラスは、すべての複合コントロールに必要な機能を提供し、標準のメソッドおよびプロパティを実装します。 + +4. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックして、プロジェクトを保存します。 + +## 複合コントロールへの Windows コントロールおよびコンポーネントの追加 + ビジュアル インターフェイスは、複合コントロールの基本的な部分です。 このビジュアル インターフェイスは、デザイナー画面に 1 つ以上の Windows コントロールを追加することによって実装されます。 次の例では、複合コントロールに Windows コントロールを取り込んで、機能を実装するコードを記述します。 + +#### 複合コントロールに Label と Timer を追加するには + +1. ソリューション エクスプローラーで **ctlClock.cs** を右クリックし、**\[デザイナーの表示\]** をクリックします。 + +2. **ツールボックス**の **\[コモン コントロール\]** ノードを展開し、**\[Label\]** をダブルクリックします。 + + `label1` という名前の がデザイナー画面のコントロールに追加されます。 + +3. デザイナーで、**\[label1\]** をクリックします。 プロパティ ウィンドウで、次のプロパティを設定します。 + + |プロパティ|変更後の値| + |-----------|-----------| + |**名前**|`lblDisplay`| + |**テキスト**|`(空白)`| + |**TextAlign**|`MiddleCenter`| + |**Font.Size**|`14`| + +4. **ツールボックス**の **\[コンポーネント\]** ノードを展開し、**\[Timer\]** をダブルクリックします。 + + はコンポーネントであるため、実行時には表示できる形式を持ちません。 このため、デザイナー画面にはコントロールと共には表示されず、**コンポーネント デザイナー** \(デザイナー画面の下部にあるトレイ\) に表示されます。 + +5. **コンポーネント デザイナー**で、**\[Timer1\]** をクリックし、 プロパティを `1000`、 プロパティを `true` に設定します。 + + プロパティは、 コンポーネントが時を刻む頻度を制御します。 `timer1` が時を刻むたびに、`timer1_Tick` イベントのコードが実行されます。 このプロパティは、タイマーが何ミリ秒ごとに時を刻むかを表しています。 + +6. **コンポーネント デザイナー**で、**\[Timer1\]** をダブルクリックして、`ctlClock` の `timer1_Tick` イベントに移動します。 + +7. コードを次のコード サンプルのように変更します。 アクセス修飾子を必ず `private` から `protected` に変更してください。 + + \[C\#\] + + ``` + protected void timer1_Tick(object sender, System.EventArgs e) + { + // Causes the label to display the current time. + lblDisplay.Text = DateTime.Now.ToLongTimeString(); + } + ``` + + このコードは、現在の時刻を `lblDisplay` に表示します。 `timer1` の間隔は 1000 に設定されているため、このイベントは `1000` ミリ秒ごとに発生します。したがって、現在の時刻は 1 秒ごとに更新されます。 + +8. `virtual` キーワードを使用して、メソッドをオーバーライドできるように変更します。 詳細については、後の「ユーザー コントロールからの継承」を参照してください。 + + ``` + protected virtual void timer1_Tick(object sender, System.EventArgs e) + ``` + +9. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックして、プロジェクトを保存します。 + +## 複合コントロールへのプロパティの追加 + 現在、クロック コントロールは、それぞれが固有のプロパティ セットを持つ コントロールと コンポーネントをカプセル化しています。 各コントロールのプロパティは、コントロールの後続のユーザーからはアクセスできませんが、適切なコード ブロックを作成することによってカスタム プロパティを作成および公開できます。 次の手順では、ユーザーが背景とテキストの色を変更できるようにするプロパティをコントロールに追加します。 + +#### 複合コントロールにプロパティを追加するには + +1. ソリューション エクスプローラーで、**ctlClock.cs** を右クリックし、**\[コードの表示\]** をクリックします。 + + コントロールの**コード エディター**が表示されます。 + +2. `public partial class ctlClock` ステートメントを探します。 左中かっこ \(`{)` の下に次のコードを入力します。 + + \[C\#\] + + ``` + private Color colFColor; + private Color colBColor; + ``` + + これらのステートメントは、作成するプロパティの値を格納するために使用するプライベート変数を作成します。 + +3. 手順 2. の変数宣言の下に次のコードを入力します。 + + \[C\#\] + + ``` + // Declares the name and type of the property. + public Color ClockBackColor + { + // Retrieves the value of the private variable colBColor. + get + { + return colBColor; + } + // Stores the selected value in the private variable colBColor, and + // updates the background color of the label control lblDisplay. + set + { + colBColor = value; + lblDisplay.BackColor = colBColor; + } + } + // Provides a similar set of instructions for the foreground color. + public Color ClockForeColor + { + get + { + return colFColor; + } + set + { + colFColor = value; + lblDisplay.ForeColor = colFColor; + } + } + ``` + + 上記のコードは、このコントロールを今後使用するユーザーが `ClockForeColor` および `ClockBackColor` という 2 つのカスタム プロパティを使用できるようにします。 `get` ステートメントと `set` ステートメントは、プロパティに適切な機能を実装するコードと共に、プロパティ値の格納と取得の機能を提供します。 + +4. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックして、プロジェクトを保存します。 + +## コントロールのテスト + コントロールはスタンドアロン アプリケーションではないため、コンテナーでホストする必要があります。 コントロールの実行時の動作をテストし、**ユーザー コントロール テスト コンテナー**でそのプロパティを実行します。 詳細については、「[方法 : UserControl の実行時の動作をテストする](../../../../docs/framework/winforms/controls/how-to-test-the-run-time-behavior-of-a-usercontrol.md)」を参照してください。 + +#### コントロールをテストするには + +1. F5 キーを押してプロジェクトをビルドし、**ユーザー コントロール テスト コンテナー**でコントロールを実行します。 + +2. テスト コンテナーのプロパティ グリッドで、`ClockBackColor` プロパティを検索し、プロパティを選択してカラー パレットを表示します。 + +3. 任意の色をクリックして選択します。 + + コントロールの背景色が、選択した色に変更されます。 + +4. 同様なイベントのシーケンスを使用して、`ClockForeColor` プロパティが予想どおりに機能することを確認します。 + + このセクションと前のセクションでは、コンポーネントと Windows コントロールをコードと結合し、複合コントロールの形式にパッケージ化してカスタム機能を提供する方法を説明しました。 複合コントロールのプロパティを公開し、完了後にコントロールをテストする方法を学びました。 次のセクションでは、`ctlClock` をベースとして継承した複合コントロールを構築する方法を学びます。 + +## 複合コントロールからの継承 + 前のセクションでは、再利用可能な複合コントロールに Windows コントロール、コンポーネント、およびコードを組み込む方法を学びました。 この複合コントロールをベースにして、他のコントロールを作成できます。 基本クラスからクラスを派生するプロセスは*継承*と呼ばれます。 このセクションでは、`ctlAlarmClock` という名前の複合コントロールを作成します。 このコントロールは、親コントロールである `ctlClock` から派生します。 ここでは、親のメソッドをオーバーライドし、新しいメソッドおよびプロパティを追加することにより、`ctlClock` の機能を拡張する方法を学びます。 + + 継承コントロールの作成の最初の手順は、親コントロールからの派生です。 これにより、親コントロールのプロパティ、メソッド、およびグラフィカル特性をすべて持つ新しいコントロールが作成されます。このコントロールに基づいて、新しい機能を追加したり機能を変更したりできます。 + +#### 継承コントロールを作成するには + +1. ソリューション エクスプローラーで、**\[ctlClockLib\]** を右クリックします。**\[追加\]** をポイントし、**\[ユーザー コントロール\]** をクリックします。 + + **\[新しい項目の追加\]** ダイアログ ボックスが表示されます。 + +2. **\[継承されたユーザー コントロール\]** テンプレートを選択します。 + +3. **\[ファイル名\]** ボックスに「`ctlAlarmClock.cs`」と入力し、**\[追加\]** をクリックします。 + + **\[継承ピッカー\]** ダイアログ ボックスが表示されます。 + +4. **\[コンポーネント名\]** の **\[ctlClock\]** をダブルクリックします。 + +5. ソリューション エクスプローラーで、現在のプロジェクトを最後まで参照します。 + + > [!NOTE] + > 現在のプロジェクトに **ctlAlarmClock.cs** という名前のファイルが追加されています。 + +### アラーム プロパティの追加 + 複合コントロールにプロパティを追加する場合と同じ方法で、継承コントロールにプロパティを追加できます。 ここでは、プロパティ宣言の構文を使用してコントロールに 2 つのプロパティを追加します。`AlarmTime` プロパティは、アラームを鳴らす日付と時刻の値を格納します。`AlarmSet` プロパティは、アラームが設定されているかどうかを示します。 + +##### 複合コントロールにプロパティを追加するには + +1. ソリューション エクスプローラーで、**\[ctlAlarmClock\]** を右クリックし、**\[コードの表示\]** をクリックします。 + +2. `public class` ステートメントを探します。 コントロールが `ctlClockLib.ctlClock` から継承される点に注意してください。 左中かっこ \(`{)` ステートメントの下に次のコードを入力します。 + + \[C\#\] + + ``` + private DateTime dteAlarmTime; + private bool blnAlarmSet; + // These properties will be declared as public to allow future + // developers to access them. + public DateTime AlarmTime + { + get + { + return dteAlarmTime; + } + set + { + dteAlarmTime = value; + } + } + public bool AlarmSet + { + get + { + return blnAlarmSet; + } + set + { + blnAlarmSet = value; + } + } + ``` + +### コントロールのグラフィカル インターフェイスへの追加 + 継承したコントロールには、継承元のコントロールと同じビジュアル インターフェイスがあります。 継承コントロールには親コントロールと同じ内在コントロールがありますが、内在コントロールのプロパティは特に公開されない限り使用できません。 継承した複合コントロールのグラフィカル インターフェイスも、他の複合コントロールと同じように拡張できます。 引き続き、アラーム クロックのビジュアル インターフェイスに、アラームが鳴ったときに点滅するラベル コントロールを追加します。 + +##### ラベル コントロールを追加するには + +1. ソリューション エクスプローラーで、**\[ctlAlarmClock\]** を右クリックし、**\[デザイナーの表示\]** をクリックします。 + + `ctlAlarmClock` のデザイナーがメイン ウィンドウに表示されます。 + +2. コントロールの表示部分をクリックし、\[プロパティ\] ウィンドウを表示します。 + + > [!NOTE] + > すべてのプロパティが表示されていますが、淡色表示になっています。 つまり、これらのプロパティは `lblDisplay` に対してネイティブであり、\[プロパティ\] ウィンドウでは変更もアクセスもできません。 既定では、複合コントロールに含まれているコントロールは `private` であり、どのような方法によってもプロパティにアクセスできません。 + + > [!NOTE] + > 複合コントロールを今後使用するユーザーがその内部のコントロールにアクセスできるようにするには、内部のコントロールを `public` または `protected` として宣言します。 これにより、適切なコードを使用して、複合コントロールに含まれるコントロールのプロパティを設定したり変更したりできるようになります。 + +3. 複合コントロールに コントロールを追加します。 + +4. マウスを使用して、 コントロールを表示ボックスのすぐ下にドラッグします。 プロパティ ウィンドウで、次のプロパティを設定します。 + + |プロパティ|設定| + |-----------|--------| + |**名前**|`lblAlarm`| + |**テキスト**|Alarm\!| + |**TextAlign**|`MiddleCenter`| + |**Visible**|`false`| + +### アラーム機能の追加 + 前の手順では、複合コントロールでアラーム機能を有効にするためのプロパティおよびコントロールを追加しました。 この手順では、現在の時刻とアラームの時刻を比較し、一致した場合は、アラームを点滅させるコードを追加します。 `ctlClock` の `timer1_Tick` メソッドをオーバーライドしてコードを追加することにより、`ctlClock` の固有の機能をすべて保持しながら `ctlAlarmClock` の機能を拡張できます。 + +##### ctlClock の timer1\_Tick メソッドをオーバーライドするには + +1. **コード エディター**で、`private bool blnAlarmSet;` ステートメントを検索します。 このステートメントの直後に、次のステートメントを追加します。 + + \[C\#\] + + ``` + private bool blnColorTicker; + ``` + +2. **コード エディター**で、クラスの末尾にある右中かっこ \(`})` を検索します。 中かっこの直前に、次のコードを追加します。 + + \[C\#\] + + ``` + protected override void timer1_Tick(object sender, System.EventArgs e) + { + // Calls the Timer1_Tick method of ctlClock. + base.timer1_Tick(sender, e); + // Checks to see if the alarm is set. + if (AlarmSet == false) + return; + else + // If the date, hour, and minute of the alarm time are the same as + // the current time, flash an alarm. + { + if (AlarmTime.Date == DateTime.Now.Date && AlarmTime.Hour == + DateTime.Now.Hour && AlarmTime.Minute == DateTime.Now.Minute) + { + // Sets lblAlarmVisible to true, and changes the background color based on + // the value of blnColorTicker. The background color of the label + // will flash once per tick of the clock. + lblAlarm.Visible = true; + if (blnColorTicker == false) + { + lblAlarm.BackColor = Color.Red; + blnColorTicker = true; + } + else + { + lblAlarm.BackColor = Color.Blue; + blnColorTicker = false; + } + } + else + { + // Once the alarm has sounded for a minute, the label is made + // invisible again. + lblAlarm.Visible = false; + } + } + } + ``` + + このコードを追加することで、いくつかのタスクが実行されます。 `override` ステートメントは、基本コントロールから継承されたメソッドの代わりに、このメソッドを使用するようにコントロールに指示します。 このメソッドが呼び出されると、メソッドは `base.timer1_Tick` ステートメントを呼び出すことにより、オーバーライドするメソッドを呼び出します。その結果、元のコントロールに含まれるすべての機能がこのコントロールに継承されます。 メソッドは次に追加のコードを実行してアラーム機能を組み込みます。 アラームが発生すると、点滅するラベル コントロールが表示されます。 + + これで、アラーム付き時計はほぼ完成です。 後は、アラームを止める手段を実装するだけです。 これを行うには、`lblAlarm_Click` メソッドにコードを追加します。 + +##### アラームを止める手段を実装するには + +1. ソリューション エクスプローラーで、**ctlAlarmClock.cs** を右クリックし、**\[デザイナーの表示\]** をクリックします。 + + デザイナーが表示されます。 + +2. コントロールにボタンを追加します。 ボタンのプロパティを次のように設定します。 + + |プロパティ|値| + |-----------|-------| + |**名前**|`btnAlarmOff`| + |**テキスト**|Disable Alarm| + +3. デザイナーで、**\[btnAlarmOff\]** をダブルクリックします。 + + **コード エディター**が開き、`private void btnAlarmOff_Click` 行が表示されます。 + +4. このメソッドを次のコードのように変更します。 + + \[C\#\] + + ``` + private void btnAlarmOff_Click(object sender, System.EventArgs e) + { + // Turns off the alarm. + AlarmSet = false; + // Hides the flashing label. + lblAlarm.Visible = false; + } + ``` + +5. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックして、プロジェクトを保存します。 + +### フォームでの継承コントロールの使用 + 継承コントロールは、基本クラスである `ctlClock` のテストと同様の方法でテストできます。F5 キーを押してプロジェクトをビルドし、**ユーザー コントロール テスト コンテナー**でコントロールを実行します。 詳細については、「[方法 : UserControl の実行時の動作をテストする](../../../../docs/framework/winforms/controls/how-to-test-the-run-time-behavior-of-a-usercontrol.md)」を参照してください。 + + コントロールを使用できるようにするには、フォーム上でコントロールをホストする必要があります。 標準複合コントロールと同様に、継承複合コントロールはスタンドアロン型ではないため、フォームまたは他のコンテナーでホストする必要があります。 `ctlAlarmClock` は機能が拡張されているため、テストにも追加のコードが必要です。 次の手順では、`ctlAlarmClock` の機能をテストするための簡単なプログラムを記述します。 `ctlAlarmClock` の `AlarmTime` プロパティを設定および表示するコードを作成し、固有の機能をテストします。 + +##### コントロールをビルドしてテスト フォームに追加するには + +1. ソリューション エクスプローラーで、**\[ctlClockLib\]** を右クリックし、**\[ビルド\]** をクリックします。 + +2. ソリューションに新しい **Windows アプリケーション** プロジェクトを追加し、「`Test`」という名前を付けます。 + +3. ソリューション エクスプローラーで、テスト プロジェクトの **\[参照設定\]** ノードを右クリックします。 **\[参照の追加\]** をクリックして **\[参照の追加\]** ダイアログ ボックスを表示します。 **\[プロジェクト\]** タブをクリックします。 `ctlClockLib` プロジェクトが **\[プロジェクト名\]** の下に表示されます。 プロジェクトをダブルクリックしてテスト プロジェクトへの参照を追加します。 + +4. ソリューション エクスプローラーで、**Test** を右クリックし、**\[ビルド\]** をクリックします。 + +5. **ツールボックス**で、**\[ctlClockLib コンポーネント\]** ノードを展開します。 + +6. **\[ctlAlarmClock\]** をダブルクリックして、`ctlAlarmClock` をフォームにコピーします。 + +7. **ツールボックス**で、**\[DateTimePicker\]** を検索してダブルクリックし、 コントロールをフォームに追加します。また、**\[Label\]** をダブルクリックして コントロールを追加します。 + +8. マウスを使用して、フォーム上で各コントロールを使いやすい位置に移動します。 + +9. コントロールのプロパティを次のように設定します。 + + |Control|プロパティ|値| + |-------------|-----------|-------| + |`label1`|**テキスト**|`(空白)`| + ||**名前**|`lblTest`| + |`dateTimePicker1`|**名前**|`dtpTest`| + ||**書式**|| + +10. デザイナーで、**\[dtpTest\]** をダブルクリックします。 + + **コード エディター**が開き、`private void dtpTest_ValueChanged` が表示されます。 + +11. コードを次のように変更します。 + + \[C\#\] + + ``` + private void dtpTest_ValueChanged(object sender, System.EventArgs e) + { + ctlAlarmClock1.AlarmTime = dtpTest.Value; + ctlAlarmClock1.AlarmSet = true; + lblTest.Text = "Alarm Time is " + + ctlAlarmClock1.AlarmTime.ToShortTimeString(); + } + ``` + +12. ソリューション エクスプローラーで、**Test** を右クリックし、**\[スタートアップ プロジェクトに設定\]** をクリックします。 + +13. **\[デバッグ\]** メニューの **\[デバッグ開始\]** をクリックします。 + + テスト プログラムが起動します。 `ctlAlarmClock` コントロールの現在時刻が更新され、 コントロールに開始時刻が表示されます。 + +14. で分が表示されている部分をクリックします。 + +15. キーボードを使用して、`ctlAlarmClock` によって表示されている現在の時刻より 1 分後の値を設定します。 + + アラーム設定時刻は `lblTest` に表示されます。 表示時刻がアラームの設定時刻になるまで待ちます。 表示時刻がアラームの設定時刻になったときに、`lblAlarm` が点滅します。 + +16. `btnAlarmOff` をクリックしてアラームを止めます。 その後で、アラームを再び設定できます。 + + このチュートリアルでは、多数の重要な概念を扱いました。 複合コントロール コンテナーにコントロールやコンポーネントを組み込んで複合コントロールを作成する方法を学びました。 また、コントロールにプロパティを追加する方法や、カスタム機能を実装するコードを記述する方法も学びました。 最後のセクションでは、継承によって特定の複合コントロールの機能を拡張し、オーバーライドによりホストのメソッドの機能を変更する方法を学びました。 + +## 参照 + [さまざまなカスタム コントロール](../../../../docs/framework/winforms/controls/varieties-of-custom-controls.md) + [コンポーネントによるプログラミング](../Topic/Programming%20with%20Components.md) + [Component Authoring Walkthroughs](../Topic/Component%20Authoring%20Walkthroughs.md) + [方法: \[ツールボックス アイテムの選択\] ダイアログ ボックスにコントロールを表示する](../../../../docs/framework/winforms/controls/how-to-display-a-control-in-the-choose-toolbox-items-dialog-box.md) + [チュートリアル : Visual C\# による Windows フォーム コントロールからの継承](../../../../docs/framework/winforms/controls/walkthrough-inheriting-from-a-windows-forms-control-with-visual-csharp.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-automatically-populating-the-toolbox-with-custom-components.md b/docs/framework/winforms/controls/walkthrough-automatically-populating-the-toolbox-with-custom-components.md new file mode 100644 index 00000000000..2e9fac52cc5 --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-automatically-populating-the-toolbox-with-custom-components.md @@ -0,0 +1,111 @@ +--- +title: "チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "カスタム コンポーネント, 追加 (ツールボックスに)" + - "IToolboxService インターフェイス" + - "ツールボックス [Windows フォーム], データの読み込み" +ms.assetid: 2fa1e3e8-6b9f-42b2-97c0-2be57444dba4 +caps.latest.revision: 22 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 22 +--- +# チュートリアル : ツールボックスへのカスタム コンポーネントの自動設定 +現在開いているソリューションのプロジェクトで定義されたコンポーネントは、**\[ツールボックス\]** に自動的に表示され、独自の操作は必要ありません。 **\[ツールボックス\]** には、[Choose Toolbox Items Dialog Box \(Visual Studio\)](http://msdn.microsoft.com/ja-jp/bd07835f-18a8-433e-bccc-7141f65263bb) を使用してカスタム コンポーネントを手動で設定することもできますが、**\[ツールボックス\]** は、ソリューションのビルド出力で次の特徴をすべて備えた項目に対応します。 + +- を実装する。 + +- が `false` に設定されていない。 + +- が `false` に設定されていない。 + +> [!NOTE] +> **\[ツールボックス\]** は参照チェーンに従わないため、ソリューションのプロジェクトで構築されていない項目は表示されません。 + + このチュートリアルでは、構築されたカスタム コンポーネントが **\[ツールボックス\]** にどのように自動表示されるかについて説明します。 このチュートリアルでは、以下のタスクを行います。 + +- Windows フォーム プロジェクトの作成 + +- カスタム コンポーネントの作成 + +- カスタム コンポーネントのインスタンスの作成 + +- カスタム コンポーネントのアンロードと再読み込み + + このチュートリアルでは最終的に、作成したコンポーネントが **\[ツールボックス\]** に読み込まれていることを確認します。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 最初にプロジェクトを作成し、フォームを設定します。 + +#### プロジェクトを作成するには + +1. `ToolboxExample` という名前の Windows ベース アプリケーション プロジェクトを作成します。 + + 詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」を参照してください。 + +2. プロジェクトに新しいコンポーネントを追加します。 このコンポーネントに「`DemoComponent`」という名前を付けます。 + + 詳細については、「[NIB:How to: Add New Project Items](http://msdn.microsoft.com/ja-jp/63d3e16b-de6e-4bb5-a0e3-ecec762201ce)」を参照してください。 + +3. プロジェクトをビルドします。 + +4. **\[ツール\]** メニューの **\[オプション\]** 項目をクリックします。 **\[Windows フォーム デザイナー\]** 項目の **\[全般\]** をクリックし、**\[AutoToolboxPopulate\]** オプションが **\[True\]** に設定されていることを確認します。 + +## カスタム コンポーネントのインスタンスの作成 + 次に、カスタム コンポーネントのインスタンスをフォームで作成します。 **\[ツールボックス\]** は新しいコンポーネントに自動的に対応するため、これは、他のコンポーネントやコントロールを作成するのと同じように簡単です。 + +#### カスタム コンポーネントのインスタンスを作成するには + +1. プロジェクトのフォームを**フォーム デザイナー**で開きます。 + +2. **\[ツールボックス\]** で、**\[ToolboxExample コンポーネント\]** という新しいタブをクリックします。 + + このタブをクリックすると、**\[DemoComponent\]** が表示されます。 + + > [!NOTE] + > パフォーマンス上の理由により、**\[ツールボックス\]** の自動設定領域のコンポーネントはカスタム ビットマップを表示せず、 はサポートされません。 カスタム コンポーネントのアイコンを **\[ツールボックス\]** に表示するには、**\[ツールボックス アイテムの選択\]** ダイアログ ボックスを使用してコンポーネントを読み込みます。 + +3. コンポーネントをフォームにドラッグします。 + + コンポーネントのインスタンスが作成され、**\[コンポーネント トレイ\]** に追加されます。 + +## カスタム コンポーネントのアンロードと再読み込み + **\[ツールボックス\]** は、読み込まれた各プロジェクトのコンポーネントに対応し、プロジェクトがアンロードされると、プロジェクトのコンポーネントへの参照が削除されます。 + +#### ツールボックスに対するコンポーネントのアンロードと再読み込みの影響を確認するには + +1. プロジェクトをソリューションからアンロードします。 + + プロジェクトのアンロードの詳細については、「[NIB:How to: Unload and Reload Projects](http://msdn.microsoft.com/ja-jp/abc0155b-8fcb-4ffc-95b6-698518a7100b)」を参照してください。 保存するかどうかを確認するダイアログ ボックスが表示された場合は、**\[はい\]** をクリックします。 + +2. ソリューションに新しい **Windows アプリケーション** プロジェクトを追加します。 **デザイナー**でフォームを開きます。 + + 前のプロジェクトの **\[ToolboxExample コンポーネント\]** タブは削除されています。 + +3. `ToolboxExample` プロジェクトを再読み込みします。 + + **\[ToolboxExample コンポーネント\]** タブが再表示されます。 + +## 次の手順 + このチュートリアルでは、**\[ツールボックス\]** がプロジェクトのコンポーネントに対応することを説明してきましたが、**\[ツールボックス\]** は、コントロールにも対応します。 コントロール プロジェクトをソリューションに追加および削除して、独自のカスタム コントロールについても確認してみてください。 + +## 参照 + [General, Windows Forms Designer, Options Dialog Box](http://msdn.microsoft.com/ja-jp/8dd170af-72f0-4212-b04b-034ceee92834) + [How to: Manipulate Toolbox Tabs](http://msdn.microsoft.com/ja-jp/21285050-cadd-455a-b1f5-a2289a89c4db) + [Choose Toolbox Items Dialog Box \(Visual Studio\)](http://msdn.microsoft.com/ja-jp/bd07835f-18a8-433e-bccc-7141f65263bb) + [Windows フォームへのコントロールの追加](../../../../docs/framework/winforms/controls/putting-controls-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-creating-a-professionally-styled-toolstrip-control.md b/docs/framework/winforms/controls/walkthrough-creating-a-professionally-styled-toolstrip-control.md new file mode 100644 index 00000000000..e2021666fba --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-creating-a-professionally-styled-toolstrip-control.md @@ -0,0 +1,198 @@ +--- +title: "チュートリアル : プロフェッショナル スタイルの ToolStrip コントロールの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ツール バー [Windows フォーム], チュートリアル" + - "ToolStrip コントロール [Windows フォーム], 作成 (プロフェッショナル スタイルのコントロールを)" + - "ToolStripProfessionalRenderer クラス [Windows フォーム]" + - "ToolStripRenderer クラス [Windows フォーム]" +ms.assetid: b52339ae-f1d3-494e-996e-eb455614098a +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# チュートリアル : プロフェッショナル スタイルの ToolStrip コントロールの作成 + 型から派生する独自のクラスを記述することで、アプリケーションの コントロールにプロフェッショナルな外観と動作を与えることができます。 + + このチュートリアルでは、 コントロールを使用して、Microsoft® Outlook® の**ナビゲーション ペイン**に似た複合コントロールを作成する方法について説明します。 このチュートリアルでは、次のタスクについて説明します。 + +- 新しい Windows コントロール ライブラリ プロジェクトを作成します。 + +- StackView コントロールをデザインします。 + +- カスタム レンダラーを割り当てます。 + + これらのタスクを終了すると、Microsoft Office® XP コントロールのプロフェッショナルな外観を備えた、再利用できるカスタム クライアント コントロールが作成されます。 + + このトピックのコードを単一のリストとしてコピーするには、「[方法 : プロフェッショナル スタイルの ToolStrip コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-professionally-styled-toolstrip-control.md)」を参照してください。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## 必須コンポーネント + このチュートリアルを完了するための要件は次のとおりです。 + +- [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] がインストールされているコンピューターで、Windows フォーム アプリケーション プロジェクトを作成および実行するための十分なアクセス許可が付与されていること。 + +## コントロール ライブラリ プロジェクトの作成 + 最初に、コントロール ライブラリ プロジェクトを作成します。 + +#### コントロール ライブラリ プロジェクトを作成するには + +1. `StackViewLibrary` という新しい Windows コントロール ライブラリ プロジェクトを作成します。 + +2. **ソリューション エクスプローラー**で、選択した言語に応じて "UserControl1.cs" または "UserControl1.vb" という名前のソース ファイルを削除して、プロジェクトの既定のコントロールを削除します。 + + 詳細については、「[NIB:How to: Remove, Delete, and Exclude Items](http://msdn.microsoft.com/ja-jp/6dffdc86-29c8-4eff-bcd8-e3a0dd9e9a73)」を参照してください。 + +3. 新しい アイテムを **StackViewLibrary** プロジェクトに追加します。 新しいソース ファイルに、"`StackView`" という基本名を付けます。 + +## StackView コントロールのデザイン + `StackView` コントロールは、1 つの子コントロール を含む複合コントロールです。 複合コントロールの詳細については、「[さまざまなカスタム コントロール](../../../../docs/framework/winforms/controls/varieties-of-custom-controls.md)」を参照してください。 + +#### StackView コントロールをデザインするには + +1. **ツールボックス**からデザイン サーフェイスに コントロールを追加します。 + +2. **プロパティ** ウィンドウで、次の表に従って コントロールのプロパティを設定します。 + + |プロパティ|値| + |-----------|-------| + |名前|`stackStrip`| + |CanOverflow|`false`| + |Dock|| + |フォント|`Tahoma, 10pt, style=Bold`| + |GripStyle|| + |LayoutStyle|| + |Padding|`0, 7, 0, 0`| + |RenderMode|| + +3. Windows フォーム デザイナーで コントロールの **\[追加\]** ボタンをクリックし、 を `stackStrip` コントロールへ追加します。 + +4. **プロパティ** ウィンドウで、次の表に従って コントロールのプロパティを設定します。 + + |プロパティ|値| + |-----------|-------| + |名前|`mailStackButton`| + |CheckOnClick|true| + |CheckState|| + |DisplayStyle|| + |ImageAlign|| + |ImageScaling|| + |ImageTransparentColor|`238, 238, 238`| + |Margin|`0, 0, 0, 0`| + |Padding|`3, 3, 3, 3`| + |テキスト|Mail| + |TextAlign|| + +5. 残りの 3 つの コントロールについても手順 7. を繰り返します。 + + `calendarStackButton` コントロール、`contactsStackButton` コントロール、および `tasksStackButton` コントロールに名前を付けます。 プロパティの値を、それぞれ Calendar、Contacts、および Tasks に設定します。 + +## イベントの処理 + `StackView` コントロールが適切に動作するようにするには、2 つのイベントが重要です。 コントロールの位置を適切に指定するには イベントを処理します。 `StackView` コントロールの状態を コントロールと似た動作にするには、 ごとに イベントを処理します。 + +#### イベントを処理するには + +1. Windows フォーム デザイナーで、`StackView` コントロールを選択します。 + +2. **\[プロパティ\]** ウィンドウ ツール バーの **\[イベント\]** をクリックします。 + +3. Load イベントをダブルクリックして、`StackView_Load` イベント ハンドラーを生成します。 + +4. 次のコードをコピーし、`StackView_Load` イベント ハンドラーに貼り付けます。 + + [!code-csharp[System.Windows.Forms.ToolStrip.StackView#3](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/CS/StackView.cs#3)] + [!code-vb[System.Windows.Forms.ToolStrip.StackView#3](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/VB/StackView.vb#3)] + +5. Windows フォーム デザイナーで、`mailStackButton` コントロールを選択します。 + +6. **\[プロパティ\]** ウィンドウ ツール バーの **\[イベント\]** をクリックします。 + +7. \[Click\] イベントをダブルクリックします。 + + Windows フォーム デザイナーで `mailStackButton_Click` イベント ハンドラーが生成されます。 + +8. `mailStackButton_Click` イベント ハンドラーの名前を `stackButton_Click` に変更します。 + + 詳細については、「[How to: Rename an Identifier \(Visual Basic\)](http://msdn.microsoft.com/ja-jp/e5a5edf8-3dba-4119-81f4-fc2aba180e0c)」を参照してください。 + +9. `stackButton_Click` イベント ハンドラー内に次のコードを挿入します。 + + [!code-csharp[System.Windows.Forms.ToolStrip.StackView#4](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/CS/StackView.cs#4)] + [!code-vb[System.Windows.Forms.ToolStrip.StackView#4](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/VB/StackView.vb#4)] + +10. Windows フォーム デザイナーで、`calendarStackButton` コントロールを選択します。 + +11. **\[プロパティ\]** ウィンドウで、Click イベントを `stackButton_Click` イベント ハンドラーに設定します。 + +12. `contactsStackButton` コントロールと `tasksStackButton` コントロールについて、手順 10. と手順 11. を繰り返します。 + +## アイコンの定義 + 各 `StackView` にはアイコンが関連付けられています。 わかりやすいように、各アイコンは Base64 でエンコードされた文字列で表されます。この文字列は、 を作成する前に逆シリアル化されます。 稼動環境では、ビットマップ データをリソースとして格納すると、Windows フォーム デザイナーにアイコンが表示されます。 詳細については、「[How to: Add Background Images to Windows Forms](http://msdn.microsoft.com/ja-jp/7a509ba2-055c-4ae6-b88a-54625c6d9aff)」を参照してください。 + +#### アイコンを定義するには + +1. コード エディターで、次のコードを `StackView` クラス定義に追加します。 このコードでは、 アイコンのビットマップを初期化します。 + + [!code-csharp[System.Windows.Forms.ToolStrip.StackView#2](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/CS/StackView.cs#2)] + [!code-vb[System.Windows.Forms.ToolStrip.StackView#2](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/VB/StackView.vb#2)] + +2. `StackView` クラス コンストラクターに `InitializeImages` メソッドの呼び出しを追加します。 + + [!code-csharp[System.Windows.Forms.ToolStrip.StackView#5](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/CS/StackView.cs#5)] + [!code-vb[System.Windows.Forms.ToolStrip.StackView#5](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/VB/StackView.vb#5)] + +## カスタム レンダラーの実装 + クラスから派生するクラスを実装することによって、`StackView` コントロールでは、ほとんどの要素をカスタマイズできます。 この手順では、 コントロールについて、グリップをカスタマイズし、グラデーションの背景を描画する クラスを実装します。 + +#### カスタム レンダラーを実装するには + +1. `StackView` コントロール定義内に次のコードを挿入します。 + + これは `StackRenderer` クラスの定義です。この定義は、、および の各メソッドをオーバーライドし、カスタムの外観を作成します。 + + [!code-csharp[System.Windows.Forms.ToolStrip.StackView#10](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/CS/StackView.cs#10)] + [!code-vb[System.Windows.Forms.ToolStrip.StackView#10](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/VB/StackView.vb#10)] + +2. `StackView` コントロールのコンストラクターで、`StackRenderer` クラスの新しいインスタンスを作成し、そのインスタンスを `stackStrip` コントロールの プロパティに割り当てます。 + + [!code-csharp[System.Windows.Forms.ToolStrip.StackView#5](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/CS/StackView.cs#5)] + [!code-vb[System.Windows.Forms.ToolStrip.StackView#5](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StackView/VB/StackView.vb#5)] + +## StackView コントロールのテスト + `StackView` コントロールは クラスから派生します。 そのため、このコントロールは**UserControl Test Container**でテストできます。 詳細については、「[方法 : UserControl の実行時の動作をテストする](../../../../docs/framework/winforms/controls/how-to-test-the-run-time-behavior-of-a-usercontrol.md)」を参照してください。 + +#### StackView コントロールをテストするには + +1. F5 キーを押してプロジェクトをビルドし、**UserControl Test Container**を起動します。 + +2. `StackView` コントロールのボタンにマウス ポインターを移動し、ボタンをクリックすると、選択した状態の外観が表示されます。 + +## 次の手順 + このチュートリアルでは、Office XP コントロールのプロフェッショナルな外観を備えた、再利用できるカスタム コントロールを作成しました。 系コントロールの用途は、他にもたくさんあります。 + +- を使って、コントロールにショートカット メニューを作成します。 詳細については、「[ContextMenu コンポーネントの概要](../../../../docs/framework/winforms/controls/contextmenu-component-overview-windows-forms.md)」を参照してください。 + +- 標準メニューに自動的に項目が設定されるフォームを作成します。 詳細については、「[チュートリアル : 標準メニュー項目をフォームに用意する](../../../../docs/framework/winforms/controls/walkthrough-providing-standard-menu-items-to-a-form.md)」を参照してください。 + +- コントロールがドッキングされている、複数のマルチ ドキュメント インターフェイス \(MDI\) フォームを作成します。 詳細については、「[方法 : メニューのマージと ToolStrip コントロールを使用して MDI フォームを作成する](../../../../docs/framework/winforms/controls/how-to-create-an-mdi-form-with-menu-merging-and-toolstrip-controls.md)」を参照してください。 + +## 参照 + + + + [ToolStrip コントロール](../../../../docs/framework/winforms/controls/toolstrip-control-windows-forms.md) + [方法 : フォームに標準メニュー項目を追加する](../../../../docs/framework/winforms/controls/how-to-provide-standard-menu-items-to-a-form.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-creating-an-mdi-form-with-menu-merging-and-toolstrip-controls.md b/docs/framework/winforms/controls/walkthrough-creating-an-mdi-form-with-menu-merging-and-toolstrip-controls.md new file mode 100644 index 00000000000..afd6ce35792 --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-creating-an-mdi-form-with-menu-merging-and-toolstrip-controls.md @@ -0,0 +1,222 @@ +--- +title: "チュートリアル : メニューのマージと ToolStrip コントロールのある MDI フォームを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "MDI フォーム" + - "MDI フォーム, 作成" + - "MDI フォーム, チュートリアル" + - "MDI, 作成 (フォームを)" + - "マルチ ドキュメント インターフェイス (MDI) フォーム" + - "ツール バー [Windows フォーム]" + - "ToolStrip コントロール [Windows フォーム]" + - "ToolStripPanel コントロール [Windows フォーム]" +ms.assetid: fbab4221-74af-42d0-bbf4-3c97f7b2e544 +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# チュートリアル : メニューのマージと ToolStrip コントロールのある MDI フォームを作成する + 名前空間は、複数のマルチ ドキュメント インターフェイス \(MDI\) アプリケーションをサポートし、 コントロールは、メニューのマージをサポートします。 MDI フォームでは、 コントロールも使用できます。 + + このチュートリアルでは、MDI フォームで コントロールを使用する方法について説明します。 このフォームには、メニューを子メニューとマージする機能もあります。 このチュートリアルでは、次のタスクについて説明します。 + +- Windows フォーム プロジェクトの作成 + +- フォームのメイン メニューを作成 \(実際のメニュー名は異なります\) + +- **ツールボックス**への コントロールの追加 + +- 子フォームの作成 + +- z オーダーによる コントロールの並べ替え + + すべてのタスクを完了すると、メニューのマージおよび移動可能な コントロールをサポートする MDI フォームが完成します。 + + このトピックのコードを単一のリストとしてコピーするには、「[方法 : メニューのマージと ToolStrip コントロールを使用して MDI フォームを作成する](../../../../docs/framework/winforms/controls/how-to-create-an-mdi-form-with-menu-merging-and-toolstrip-controls.md)」を参照してください。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## 必須コンポーネント + このチュートリアルを完了するための要件は次のとおりです。 + +- [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] がインストールされているコンピューターで、Windows フォーム アプリケーション プロジェクトを作成および実行するための十分なアクセス許可が付与されていること。 + +## プロジェクトの作成 + 最初にプロジェクトを作成し、フォームを設定します。 + +#### プロジェクトを作成するには + +1. MdiForm という名前の Windows アプリケーション プロジェクトを作成します。 + + 詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」を参照してください。 + +2. Windows フォーム デザイナーで、フォームを選択します。 + +3. \[プロパティ\] ウィンドウで、 の値を `true` に設定します。 + +## メイン メニューの作成 + 親 MDI フォームにはメイン メニューがあります。 メイン メニューには **\[ウィンドウ\]** というメニュー項目が 1 つあります。 **\[ウィンドウ\]** メニュー項目を使用して、子フォームを作成できます。 子フォームのメニュー項目は、メイン メニューにマージされます。 + +#### メイン メニューを作成するには + +1. **ツールボックス**から、フォームに コントロールをドラッグします。 + +2. コントロールに追加し、\[ウィンドウ\] と名付けます。 + +3. コントロールを選択します。 + +4. \[プロパティ\] ウィンドウで、 プロパティの値を `ToolStripMenuItem1` に設定します。 + +5. サブ項目を **\[ウィンドウ\]** メニューに追加し、\[新規作成\] と名付けます。 + +6. \[プロパティ\] ウィンドウの **\[イベント\]** をクリックします。 + +7. イベントをダブルクリックします。 + + Windows フォーム デザイナーが、 イベントのイベント ハンドラーを生成します。 + +8. イベント ハンドラー内に次のコードを挿入します。 + + [!code-csharp[System.Windows.Forms.ToolStrip.MdiForm#2](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.MdiForm/CS/Form1.cs#2)] + [!code-vb[System.Windows.Forms.ToolStrip.MdiForm#2](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.MdiForm/VB/Form1.vb#2)] + +## ツールボックスへの ToolStripPanel コントロールの追加 + MDI フォームで コントロールを使用するときは、 コントロールが必要です。 MDI フォームを Windows フォーム デザイナー内でビルドするために、 コントロールを**ツールボックス**に追加する必要があります。 + +#### ToolStripPanel コントロールをツールボックスに追加するには + +1. **ツールボックス**を開き、**\[すべての Windows フォーム\]** タブをクリックすると、使用できる Windows フォーム コントロールが表示されます。 + +2. コントロールを右クリックしてショートカット メニューを開き、**\[アイテムの選択\]** をクリックします。 + +3. **\[ツールボックス アイテムの選択\]** ダイアログ ボックスで、**\[ToolStripPanel\]** が表示されるまで **\[名前\]** 列をスクロールします。 + +4. **\[ToolStripPanel\]** チェック ボックスをオンにし、**\[OK\]** をクリックします。 + + コントロールが**ツールボックス**に表示されます。 + +## 子フォームの作成 + この手順では、別個の コントロールを持つ独立した子フォーム クラスを定義します。 このフォームのメニュー項目は、親フォームのメニュー項目にマージされます。 + +#### 子フォームを定義するには + +1. `ChildForm` という名前の新規フォームをプロジェクトに追加します。 + + 詳細については、「[How to: Add Windows Forms to a Project](http://msdn.microsoft.com/ja-jp/3d7bb25f-fd90-47cf-9378-fa0d764686c1)」を参照してください。 + +2. **ツールボックス**から、子フォームに コントロールをドラッグします。 + +3. コントロールのスマート タグ グリフ \(![スマート タグ グリフ](../../../../docs/framework/winforms/controls/media/vs-winformsmttagglyph.png "VS\_WinFormSmtTagGlyph")\) をクリックし、**\[項目の編集\]** を選択します。 + +4. **\[項目コレクション エディター\]** ダイアログ ボックスで、ChildMenuItem という名前の新しい を子メニューに追加します。 + + 詳細については、「[ToolStrip Items Collection Editor](http://msdn.microsoft.com/ja-jp/e681f3ab-94ba-4b2b-ac64-1dfad46caa25)」を参照してください。 + +## フォームのテスト + +#### フォームをテストするには + +1. F5 キーを押して、フォームをコンパイルおよび実行します。 + +2. **\[ウィンドウ\]** メニュー項目をクリックしてメニューを開き、**\[新規作成\]** をクリックします。 + + 新規の子フォームが、フォームの MDI クライアント領域に作成されます。 子フォームのメニューが、メイン メニューにマージされます。 + +3. 子フォームを閉じます。 + + 子フォームのメニューは、メイン メニューから削除されます。 + +4. **\[新規作成\]** を数回クリックします。 + + コントロールの プロパティが割り当てられるため、複数の子フォームが自動的に **\[ウィンドウ\]** メニュー項目の下に表示されます。 + +## ToolStrip サポートの追加 + この手順では、4 つの コントロールを MDI 親フォームに追加します。 各 コントロールは コントロール内に追加され、このコントロールがフォームの端にドッキングされます。 + +#### ToolStrip コントロールを MDI 親フォームに追加するには + +1. **ツールボックス**から、フォームに コントロールをドラッグします。 + +2. コントロールを選択した状態で、**ツールボックス**内の コントロールをダブルクリックします。 + + コントロールが、 コントロール内に作成されます。 + +3. コントロールを選択します。 + +4. \[プロパティ\] ウィンドウで、コントロールの プロパティの値を に変更します。 + + コントロールがフォームの左側、メイン メニューの下にドッキングされます。 MDI クライアント領域は、 コントロールが収まるサイズに変更されます。 + +5. 手順 1. ~ 4. を繰り返します。 + + 新しい コントロールは、フォームの上部にドッキングされます。 + + コントロールはメイン メニューの下にドッキングされますが、今回は最初の コントロールの右側に配置されます。 この手順は、 コントロールを適切に配置する際の z オーダーの役割をよく示しています。 + +6. さらに 2 つの コントロールについて、手順 1. ~ 4. を繰り返します。 + + 新規の コントロールは、フォームの右側の下部にドッキングされます。 + +## z オーダーによる ToolStripPanel コントロールの並べ替え + MDI フォームにドッキングされる コントロールの位置は、z オーダーにおけるそのコントロールの位置によって決定されます。 コントロールの z オーダーは、\[ドキュメント アウトライン\] ウィンドウで簡単に設定できます。 + +#### z オーダーに従って ToolStripPanel コントロールを並べ替えるには + +1. **\[表示\]** メニューの **\[その他のウィンドウ\]** をクリックし、**\[ドキュメント アウトライン\]** をクリックします。 + + 前の手順で使用した コントロールの順序は、標準の順序ではありません。 これは、z オーダーが正しくないためです。 \[ドキュメント アウトライン\] ウィンドウを使って、コントロールの z オーダーを変更します。 + +2. \[ドキュメント アウトライン\] ウィンドウで、**\[ToolStripPanel4\]** を選択します。 + +3. **\[ToolStripPanel4\]** が一覧の最後に移動するまで、下向きの矢印ボタンを繰り返しクリックします。 + + **\[ToolStripPanel4\]** コントロールは、フォームの下部に、他のコントロールの下になる配置でドッキングされます。 + +4. **\[ToolStripPanel2\]** を選択します。 + +5. 下向き矢印ボタンを 1 度クリックして、リストで 3 番目のコントロールの位置を指定します。 + + **\[ToolStripPanel2\]** コントロールは、フォームの上部に、メイン メニューの下で他のコントロールの上になる配置でドッキングされます。 + +6. さまざまなコントロールを **\[ドキュメント アウトライン\]** ウィンドウで選択し、z オーダーの異なる位置に移動します。 z オーダーに従って、ドッキングされたコントロールの配置が変わることを確認してください。 Ctrl キーを押しながら Z キーを押すか、**\[編集\]** メニューの **\[元に戻す\]** をクリックすると、変更は元に戻ります。 + +## チェックポイント + +#### フォームをテストするには + +1. F5 キーを押して、フォームをコンパイルおよび実行します。 + +2. コントロールのグリップをクリックし、コントロールをフォームの異なる位置へドラッグします。 + + コントロールをある コントロールからドラッグして別のコントロールへ移動できます。 + +## 次の手順 + このチュートリアルでは、 コントロールとメニューのマージ機能を備えた MDI 親フォームを作成しました。 系コントロールの用途は、他にもたくさんあります。 + +- を使って、コントロールにショートカット メニューを作成します。 詳細については、「[ContextMenu コンポーネントの概要](../../../../docs/framework/winforms/controls/contextmenu-component-overview-windows-forms.md)」を参照してください。 + +- 標準メニューに自動的に項目が設定されるフォームを作成します。 詳細については、「[チュートリアル : 標準メニュー項目をフォームに用意する](../../../../docs/framework/winforms/controls/walkthrough-providing-standard-menu-items-to-a-form.md)」を参照してください。 + +- コントロールにプロフェッショナルな外観を与えます。 詳細については、「[方法 : アプリケーションの ToolStrip レンダラーを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-toolstrip-renderer-for-an-application.md)」を参照してください。 + +## 参照 + + + + [方法 : MDI 親フォームを作成する](../../../../docs/framework/winforms/advanced/how-to-create-mdi-parent-forms.md) + [方法 : MDI 子フォームを作成する](../../../../docs/framework/winforms/advanced/how-to-create-mdi-child-forms.md) + [方法 : MDI ドロップダウン メニューに MenuStrip を挿入する](../../../../docs/framework/winforms/controls/how-to-insert-a-menustrip-into-an-mdi-drop-down-menu-windows-forms.md) + [ToolStrip コントロール](../../../../docs/framework/winforms/controls/toolstrip-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-creating-an-unbound-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/walkthrough-creating-an-unbound-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..e7b97fca9af --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-creating-an-unbound-windows-forms-datagridview-control.md @@ -0,0 +1,105 @@ +--- +title: "チュートリアル : バインドされていない Windows フォーム DataGridView コントロールの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ [Windows フォーム], 表示 (データ ソースにバインドせずに)" + - "データ [Windows フォーム], バインドされていない" + - "DataGridView コントロール [Windows フォーム], 表示 (データ ソースにバインドせずにデータを)" + - "DataGridView コントロール [Windows フォーム], バインドされていないデータ" + - "チュートリアル [Windows フォーム], DataGridView コントロール" +ms.assetid: 5a8d6afa-1b4b-4b24-8db8-501086ffdebe +caps.latest.revision: 18 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 18 +--- +# チュートリアル : バインドされていない Windows フォーム DataGridView コントロールの作成 +データベースから取得したものではないデータを表形式で表示しなければならない場合はよくあります。 たとえば、文字列の 2 次元配列の内容を表示する場合などです。 クラスは、データ ソースにバインドせずにデータを表示するための、簡単で高度にカスタマイズ可能な手段となります。 このチュートリアルでは、 コントロールのデータを手動で作成し、行の追加と削除を非バインド モードで管理する方法を示します。 既定では、ユーザーが新しい行を追加できます。 行の追加を防ぐには、 プロパティを `false` に設定します。 + + このトピックのコードを単一のリストとしてコピーするには、「[方法 : 連結されていない Windows フォーム DataGridView コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-an-unbound-windows-forms-datagridview-control.md)」を参照してください。 + +## フォームの作成 + +#### バインドされていない DataGridView コントロールを使用するには + +1. から派生したクラスを作成し、次の変数宣言と `Main` メソッドを含めます。 + + [!code-csharp[System.Windows.Forms.DataGridViewSimpleUnbound#01](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/CS/simpleunbound.cs#01)] + [!code-vb[System.Windows.Forms.DataGridViewSimpleUnbound#01](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/VB/simpleunbound.vb#01)] + [!code-csharp[System.Windows.Forms.DataGridViewSimpleUnbound#02](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/CS/simpleunbound.cs#02)] + [!code-vb[System.Windows.Forms.DataGridViewSimpleUnbound#02](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/VB/simpleunbound.vb#02)] + +2. フォームのクラス定義の中に、フォームのレイアウトをセットアップするための `SetupLayout` メソッドを実装します。 + + [!code-csharp[System.Windows.Forms.DataGridViewSimpleUnbound#20](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/CS/simpleunbound.cs#20)] + [!code-vb[System.Windows.Forms.DataGridViewSimpleUnbound#20](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/VB/simpleunbound.vb#20)] + +3. の列とプロパティをセットアップするための `SetupDataGridView` メソッドを作成します。 + + このメソッドでは、まず コントロールをフォームの コレクションに追加します。 次に、 プロパティを使用して、表示する列の数を設定します。 さらに、列ヘッダーの既定のスタイルを設定するために、 プロパティによって返される 、および プロパティを設定します。 + + レイアウトと外観に関するプロパティを設定したら、次は列名を割り当てます。 このメソッドが終了すると、 コントロールにデータを追加できる状態になります。 + + [!code-csharp[System.Windows.Forms.DataGridViewSimpleUnbound#30](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/CS/simpleunbound.cs#30)] + [!code-vb[System.Windows.Forms.DataGridViewSimpleUnbound#30](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/VB/simpleunbound.vb#30)] + +4. コントロールに行を追加するための `PopulateDataGridView` メソッドを作成します。 + + 各行は、歌とその関連情報を表しています。 + + [!code-csharp[System.Windows.Forms.DataGridViewSimpleUnbound#40](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/CS/simpleunbound.cs#40)] + [!code-vb[System.Windows.Forms.DataGridViewSimpleUnbound#40](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/VB/simpleunbound.vb#40)] + +5. ユーティリティ メソッドを定義したら、次はイベント ハンドラーを追加します。 + + **\[Add\]** ボタンと **\[Delete\]** ボタンの イベント、フォームの イベント、さらに コントロールの イベントを処理します。 + + **\[Add\]** ボタンの イベントが発生したときは、新しい空の行を に追加します。 + + **\[Delete\]** ボタンの イベントが発生したときは、選択中の行が新規レコード用の行 \(ユーザーが新しい行を追加するときに使用\) でない限り、選択中の行を削除します。 この行は、必ず コントロールの最後の行になります。 + + フォームの イベントが発生したときは、`SetupLayout`、`SetupDataGridView`、`PopulateDataGridView` というユーティリティ メソッドを呼び出します。 + + イベントが発生したときは、`Date` 列の各セルを長い形式の日付に書式設定します \(セルの値が解析できない場合を除く\)。 + + [!code-csharp[System.Windows.Forms.DataGridViewSimpleUnbound#10](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/CS/simpleunbound.cs#10)] + [!code-vb[System.Windows.Forms.DataGridViewSimpleUnbound#10](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewSimpleUnbound/VB/simpleunbound.vb#10)] + +## アプリケーションのテスト + フォームをテストして、期待どおりに動作することを確認します。 + +#### フォームをテストするには + +- F5 キーを押してアプリケーションを実行します。 + + `PopulateDataGridView` 内で指定した歌の一覧を含む コントロールが表示されます。 **\[Add Row\]** ボタンをクリックすると新しい行を追加でき、**\[Delete Row\]** ボタンをクリックすると選択中の行を削除できます。 このバインドされていない コントロールはそれ自体がデータ ストアであり、このデータは や配列などの外部ソースに依存していません。 + +## 次の手順 + このアプリケーションでは、 コントロールの機能について基本を理解できます。 次のような方法を使用すると、 コントロールの外観および動作をカスタマイズできます。 + +- 輪郭およびヘッダー スタイルを変更します。 詳細については、「[方法 : Windows フォーム DataGridView コントロールの境界線とグリッド線のスタイルを変更する](../../../../docs/framework/winforms/controls/change-the-border-and-gridline-styles-in-the-datagrid.md)」を参照してください。 + +- コントロールへのユーザー入力の許可または制限。 詳細については、「[方法 : Windows フォーム DataGridView コントロールで行が追加および削除されないようにする](../../../../docs/framework/winforms/controls/prevent-row-addition-and-deletion-datagridview.md)」および「[方法 : Windows フォームの DataGridView コントロールで列を読み取り専用にする](../../../../docs/framework/winforms/controls/how-to-make-columns-read-only-in-the-windows-forms-datagridview-control.md)」を参照してください。 + +- ユーザー入力に対するデータベース関連エラーの検査。 詳細については、「[チュートリアル : Windows フォーム DataGridView コントロールでのデータ入力中に発生したエラーの処理](../../../../docs/framework/winforms/controls/handling-errors-that-occur-during-data-entry-in-the-datagrid.md)」を参照してください。 + +- 仮想モードを使用した大量のデータの処理。 詳細については、「[チュートリアル : Windows フォーム DataGridView コントロールでの仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-wf-datagridview-control.md)」を参照してください。 + +- セルの外観をカスタマイズします。 詳細については、「[方法 : Windows フォームの DataGridView コントロールのセルの外観をカスタマイズする](../../../../docs/framework/winforms/controls/customize-the-appearance-of-cells-in-the-datagrid.md)」および「[方法 : Windows フォーム DataGridView コントロールの既定のセル スタイルを設定する](../../../../docs/framework/winforms/controls/how-to-set-default-cell-styles-for-the-windows-forms-datagridview-control.md)」を参照してください。 + +## 参照 + + [Windows フォーム DataGridView コントロールでのデータの表示](../../../../docs/framework/winforms/controls/displaying-data-in-the-windows-forms-datagridview-control.md) + [方法 : 連結されていない Windows フォーム DataGridView コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-an-unbound-windows-forms-datagridview-control.md) + [Windows フォーム DataGridView コントロールでのデータ表示モード](../../../../docs/framework/winforms/controls/data-display-modes-in-the-windows-forms-datagridview-control.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-debugging-custom-windows-forms-controls-at-design-time.md b/docs/framework/winforms/controls/walkthrough-debugging-custom-windows-forms-controls-at-design-time.md new file mode 100644 index 00000000000..43d42dc80eb --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-debugging-custom-windows-forms-controls-at-design-time.md @@ -0,0 +1,184 @@ +--- +title: "チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム], デバッグ" + - "カスタム コントロール [Windows フォーム], デバッグ" + - "カスタム コントロール [Windows フォーム], チュートリアル" + - "デバッグ [Visual Studio], チュートリアル" + - "デバッグ [Visual Studio], Windows フォーム" + - "デザイナー" + - "デザイン時デバッグ" + - "ビジュアル エディター" + - "チュートリアル [Windows フォーム], デバッグ" +ms.assetid: 1fd83ccd-3798-42fc-85a3-6cba99467387 +caps.latest.revision: 19 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 19 +--- +# チュートリアル : カスタム Windows フォーム コントロールのデザイン時のデバッグ +カスタム コントロールを作成したときは、多くの場合、デザイン時動作のデバッグが必要になります。 特にカスタム コントロール用のカスタム デザイナーを作成した場合は、このようなデバッグが不可欠です。 詳細については、「[チュートリアル : Visual Studio のデザイン時機能を活用した Windows フォーム コントロールの作成](../../../../docs/framework/winforms/controls/creating-a-wf-control-design-time-features.md)」を参照してください。 + + カスタム コントロールは、他の .NET Framework クラスの場合と同じように Visual Studio を使用してデバッグできます。 ただし、カスタム コントロールの場合は、そのコードを実行する Visual Studio の別個のインスタンスをデバッグするという点が異なります。 + + このチュートリアルでは、以下のタスクを行います。 + +- カスタム コントロールをホストする Windows フォーム プロジェクトの作成 + +- コントロール ライブラリ プロジェクトの作成 + +- カスタム コントロールへのプロパティの追加 + +- ホスト フォームへのカスタム コントロールの追加 + +- デザイン時デバッグのためのプロジェクト設定 + +- カスタム コントロールのデザイン時のデバッグ + + ここでは、カスタム コントロールのデザイン時の動作のデバッグに必要なタスクについて理解します。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 最初にアプリケーション プロジェクトを作成します。 このプロジェクトを使用して、カスタム コントロールをホストするアプリケーションをビルドします。 + +#### プロジェクトを作成するには + +- "DebuggingExample" という名前の Windows アプリケーション プロジェクトを作成します。 詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」を参照してください。 + +## コントロール ライブラリ プロジェクトの作成 + 次に、コントロール ライブラリ プロジェクトを作成し、カスタム コントロールを設定します。 + +#### コントロール ライブラリ プロジェクトを作成するには + +1. **Windows コントロール ライブラリ** プロジェクトをソリューションに追加します。 + +2. 新しい **UserControl** アイテムを DebugControlLibrary プロジェクトに追加します。 詳細については、「[NIB:How to: Add New Project Items](http://msdn.microsoft.com/ja-jp/63d3e16b-de6e-4bb5-a0e3-ecec762201ce)」を参照してください。 新しいソース ファイルに、"DebugControl" という基本名を付けます。 + +3. **ソリューション エクスプローラー**を使用して、"`UserControl1`" という基本名のコード ファイルを削除することにより、プロジェクトの既定のコントロールを削除します。 詳細については、「[NIB:How to: Remove, Delete, and Exclude Items](http://msdn.microsoft.com/ja-jp/6dffdc86-29c8-4eff-bcd8-e3a0dd9e9a73)」を参照してください。 + +4. ソリューションをビルドします。 + +## チェックポイント + この時点で、カスタム コントロールが**ツールボックス**に表示されます。 + +#### 進行状況を確認するには + +- **\[DebugControlLibrary コンポーネント\]** という新しいタブを見つけ、クリックして選択します。 開いたタブには、コントロールが **\[DebugControl\]** としてリストされ、その横に既定のアイコンが表示されます。 + +## カスタム コントロールへのプロパティの追加 + カスタム コントロールのコードがデザイン時に動作することを示すために、プロパティを追加し、そのプロパティを実装するコードにブレークポイントを設定します。 + +#### カスタム コントロールにプロパティを追加するには + +1. **コード エディター**で **\[DebugControl\]** を開きます。 次のコードをクラス定義に追加します。 + + ```vb + Private demoStringValue As String = Nothing + + Public Property DemoString() As String + + Get + Return Me.demoStringValue + End Get + + Set(ByVal value As String) + Me.demoStringValue = value + End Set + + End Property + ``` + + ```csharp + private string demoStringValue = null; + [Browsable(true)] + public string DemoString + { + get + { + return this.demoStringValue; + } + set + { + demoStringValue = value; + } + } + ``` + +2. ソリューションをビルドします。 + +## ホスト フォームへのカスタム コントロールの追加 + カスタム コントロールのデザイン時動作をデバッグするには、カスタム コントロール クラスのインスタンスをホスト フォームに配置します。 + +#### ホスト フォームにカスタム コントロールを追加するには + +1. "DebuggingExample" プロジェクトの Form1 を **Windows フォーム デザイナー**で開きます。 + +2. **\[ツールボックス\]** の **\[DebugControlLibrary コンポーネント\]** タブを開き、**\[DebugControl\]** インスタンスをフォームにドラッグします。 + +3. **\[プロパティ\]** ウィンドウで `DemoString` カスタム プロパティを見つけます。 このプロパティの値は、他のプロパティと同じように変更できます。 また、`DemoString` プロパティを選択すると、**\[プロパティ\]** ウィンドウの下部にプロパティの説明文字列が表示されます。 + +## デザイン時デバッグのためのプロジェクト設定 + カスタム コントロールのデザイン時動作をデバッグするには、カスタム コントロールのコードを実行する Visual Studio の別個のインスタンスをデバッグします。 + +#### デザイン時デバッグのためにプロジェクトを設定するには + +1. **ソリューション エクスプローラー**で、**\[DebugControlLibrary\]** プロジェクトを右クリックし、**\[プロパティ\]** をクリックします。 + +2. **DebugControlLibrary** プロパティ シートの **\[デバッグ\]** タブをクリックします。 + + **\[開始動作\]** セクションで、**\[外部プログラムの開始\]** を選択します。 Visual Studio の別個のインスタンスをデバッグするので、省略記号 \(![VisualStudioEllipsesButton スクリーンショット](../../../../docs/framework/winforms/media/vbellipsesbutton.png "vbEllipsesButton")\) ボタンをクリックして、Visual Studio IDE を参照します。 実行可能ファイルの名前は **devenv.exe** で、既定の場所にインストールした場合、ファイルのパスは "%programfiles%\\Microsoft Visual Studio 9.0\\Common7\\IDE\\devenv.exe" になります。 + +3. **\[OK\]** をクリックし、ダイアログ ボックスを閉じます。 + +4. **\[DebugControlLibrary\]** プロジェクトを右クリックし、**\[スタートアップ プロジェクトに設定\]** をクリックして、このデバッグ構成を有効にします。 + +## カスタム コントロールのデザイン時のデバッグ + これで、カスタム コントロールをデザイン モードで実行しながらデバッグする準備ができました。 デバッグ セッションを開始すると、Visual Studio の新しいインスタンスが作成され、それを使って "DebuggingExample" ソリューションを読み込みます。 **フォーム デザイナー**で Form1 を開くと、カスタム コントロールのインスタンスが作成され、実行を開始します。 + +#### カスタム コントロールをデザイン時にデバッグするには + +1. **コード エディター**で **\[DebugControl\]** ソース ファイルを開き、`DemoString` プロパティの `Set` アクセサーにブレークポイントを配置します。 + +2. F5 キーを押してデバッグ セッションを開始します。 Visual Studio の新しいインスタンスが作成されることを確認してください。 各インスタンスは、次の 2 つの方法で識別できます。 + + - デバッグ インスタンスのタイトル バーには、"**実行中**" という単語が表示されます。 + + - デバッグ インスタンスの **\[デバッグ\]** ツール バーの **\[開始\]** ボタンは無効になります。 + + デバッグ インスタンスにブレークポイントが設定されます。 + +3. Visual Studio の新しいインスタンスで、"DebuggingExample" ソリューションを開きます。 **\[ファイル\]** メニューの **\[最近使ったプロジェクト\]** をクリックすると、ソリューションが簡単に見つかります。 "DebuggingExample.sln" ソリューション ファイルが、最後に使用したファイルとして表示されます。 + +4. **フォーム デザイナー**で Form1 を開き、**\[DebugControl\]** コントロールを選択します。 + +5. `DemoString` プロパティの値を変更します。 変更をコミットすると、Visual Studio のデバッグ インスタンスがフォーカスを取得し、ブレークポイントで実行が停止します。 プロパティ アクセサーは、他のコードと同じようにシングル ステップ実行できます。 + +6. デバッグ セッションが終了したら、Visual Studio のホスト インスタンスを閉じるか、デバッグ インスタンスの **\[デバッグの停止\]** をクリックして終了できます。 + +## 次の手順 + これで、カスタム コントロールをデザイン時にデバッグできるようになりました。この後は、コントロールと Visual Studio IDE の対話をさまざまな方法で拡張できます。 + +- クラスの プロパティを使用して、デザイン時にのみ動作するコードを記述できます。 詳細については、「」を参照してください。 + +- カスタム コントロールとデザイナーの対話を操作するために、コントロールのプロパティに適用できる属性がいくつかあります。 これらの属性は、 名前空間に含まれています。 + +- カスタム コントロール用のカスタム デザイナーを作成できます。 これにより、Visual Studio によって公開されている拡張性のあるデザイナー インフラストラクチャを使用して、デザイン手順を全面的に制御できます。 詳細については、「[チュートリアル : Visual Studio のデザイン時機能を活用した Windows フォーム コントロールの作成](../../../../docs/framework/winforms/controls/creating-a-wf-control-design-time-features.md)」を参照してください。 + +## 参照 + [チュートリアル : Visual Studio のデザイン時機能を活用した Windows フォーム コントロールの作成](../../../../docs/framework/winforms/controls/creating-a-wf-control-design-time-features.md) + [How to: Access Design\-Time Services](../Topic/How%20to:%20Access%20Design-Time%20Services.md) + [How to: Access Design\-Time Support in Windows Forms](../Topic/How%20to:%20Access%20Design-Time%20Support%20in%20Windows%20Forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-implementing-a-form-that-uses-a-background-operation.md b/docs/framework/winforms/controls/walkthrough-implementing-a-form-that-uses-a-background-operation.md new file mode 100644 index 00000000000..3da8016e45c --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-implementing-a-form-that-uses-a-background-operation.md @@ -0,0 +1,178 @@ +--- +title: "チュートリアル : バックグラウンド操作を使用するフォームの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "バックグラウンド操作" + - "バックグラウンド タスク" + - "BackgroundWorker コンポーネント" + - "フォーム, バックグラウンド操作" + - "フォーム, マルチスレッド" + - "スレッド処理 [Windows フォーム], バックグラウンド操作" + - "スレッド処理 [Windows フォーム], フォーム" + - "スレッド処理 [Windows フォーム], チュートリアル" +ms.assetid: 4691b796-9200-471a-89c3-ba4c7cc78c03 +caps.latest.revision: 25 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 25 +--- +# チュートリアル : バックグラウンド操作を使用するフォームの実装 +完了するまで時間がかかる操作があり、操作中にユーザー インターフェイス \(UI\) が応答を停止 \(つまり "ハングアップ"\) しないようにするには、 クラスを使用して操作を別のスレッドで実行できます。 + + このチュートリアルでは、 クラスを使用して、時間のかかる計算を "バックグラウンドで" 実行しながら、ユーザー インターフェイスの応答性を維持する方法について説明します。 ここでは、フィボナッチの数列を非同期的に計算するアプリケーションを作成します。 大きなフィボナッチ数の計算には、著しく時間がかかることがありますが、メイン UI スレッドは、この遅延によって中断されず、計算の間、フォームは応答性を維持します。 + + このチュートリアルでは、以下のタスクを行います。 + +- Windows ベース アプリケーションの作成 + +- フォームでの の作成 + +- 非同期イベント ハンドラーの追加 + +- 進行状況の報告機能とキャンセルのサポートの追加 + + この例で使用するコードの完全な一覧については、「[方法 : バックグラウンド操作を使用するフォームを実装する](../../../../docs/framework/winforms/controls/how-to-implement-a-form-that-uses-a-background-operation.md)」を参照してください。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 最初にプロジェクトを作成し、フォームを設定します。 + +#### バックグラウンド操作を使用するフォームを作成するには + +1. `BackgroundWorkerExample` という名前の Windows ベース アプリケーション プロジェクトを作成します。 詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」を参照してください。 + +2. **ソリューション エクスプローラー**で、**\[Form1\]** を右クリックし、ショートカット メニューの **\[名前の変更\]** をクリックします。 ファイル名を `FibonacciCalculator` に変更します。 コード要素 "`Form1`" へのすべての参照の名前を変更するかどうかを確認するダイアログ ボックスが表示されたら、**\[はい\]** をクリックします。 + +3. **\[ツールボックス\]** の コントロールをフォームにドラッグします。 プロパティを `1`、 プロパティを `91` に設定します。 + +4. 2 つの コントロールをフォームに追加します。 + +5. 一方の コントロールの名前を `startAsyncButton` に変更し、 プロパティを `Start Async` に設定します。 もう一方の コントロールの名前を `cancelAsyncButton` に変更し、 プロパティを `Cancel Async` に設定します。 プロパティを `false` に設定します。 + +6. 両方の コントロールの イベントに対するイベント ハンドラーを作成します。 詳細については、「[How to: Create Event Handlers Using the Designer](http://msdn.microsoft.com/ja-jp/8461e9b8-14e8-406f-936e-3726732b23d2)」を参照してください。 + +7. **\[ツールボックス\]** の コントロールをフォームにドラッグし、名前を `resultLabel` に変更します。 + +8. **\[ツールボックス\]** の コントロールをフォームにドラッグします。 + +## フォームでの BackgroundWorker の作成 + 非同期操作用の は、**Windows** **フォーム デザイナー** を使用して作成できます。 + +#### デザイナーを使用して BackgroundWorker を作成するには + +- **\[ツールボックス\]** の **\[コンポーネント\]** タブから、 をフォームにドラッグします。 + +## 非同期イベント ハンドラーの追加 + 以上で、 コンポーネントの非同期イベント用のイベント ハンドラーを追加する準備ができました。 バックグラウンドで実行する、時間のかかるフィボナッチ数列の計算操作は、これらのうちいずれかのイベント ハンドラーによって呼び出されます。 + +#### 非同期イベント ハンドラーを実装するには + +1. **\[プロパティ\]** ウィンドウで コンポーネントが選択されている状態で、**\[イベント\]** ボタンをクリックします。 イベントと イベントをダブルクリックして、イベント ハンドラーを作成します。 イベント ハンドラーの使用方法の詳細については、「[How to: Create Event Handlers Using the Designer](http://msdn.microsoft.com/ja-jp/8461e9b8-14e8-406f-936e-3726732b23d2)」を参照してください。 + +2. フォームで `ComputeFibonacci` という名前の新しいメソッドを作成します。 このメソッドが実際の操作を実行し、バックグラウンドで動作します。 このコードは、フィボナッチ アルゴリズムの反復実装を示しています。これは、著しく非効率な操作で、数が大きくなるにつれて、完了するまでにかかる時間が急激に長くなります。 アプリケーションで大きな遅延が発生する操作の例として、このコードを使用します。 + + [!code-cpp[System.ComponentModel.BackgroundWorker#10](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CPP/fibonacciform.cpp#10)] + [!code-csharp[System.ComponentModel.BackgroundWorker#10](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CS/fibonacciform.cs#10)] + [!code-vb[System.ComponentModel.BackgroundWorker#10](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/VB/fibonacciform.vb#10)] + +3. イベント ハンドラーで、`ComputeFibonacci` メソッドの呼び出しを追加します。 `ComputeFibonacci` の最初のパラメーターを、 プロパティから受け取ります。 パラメーターと パラメーターは、進行状況の報告機能とキャンセルのサポートのために後で使用します。 `ComputeFibonacci` の戻り値を プロパティに代入します。 この結果は、 イベント ハンドラーで利用できるようになります。 + + > [!NOTE] + > イベント ハンドラーは、`backgroundWorker1` インスタンス変数を直接参照しません。直接参照すると、このイベント ハンドラーが の特定のインスタンスに結合されるためです。 代わりに、該当するイベントを生成した への参照は、`sender` パラメーターから復元します。 このことは、フォームが複数の をホストする場合に重要です。 また、 イベント ハンドラーでユーザー インターフェイス オブジェクトを操作しないようにしてください。 代わりに、 のイベントを通じてユーザー インターフェイスと通信します。 + + [!code-cpp[System.ComponentModel.BackgroundWorker#5](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CPP/fibonacciform.cpp#5)] + [!code-csharp[System.ComponentModel.BackgroundWorker#5](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CS/fibonacciform.cs#5)] + [!code-vb[System.ComponentModel.BackgroundWorker#5](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/VB/fibonacciform.vb#5)] + +4. `startAsyncButton` コントロールの イベント ハンドラーで、非同期操作を開始するコードを追加します。 + + [!code-cpp[System.ComponentModel.BackgroundWorker#13](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CPP/fibonacciform.cpp#13)] + [!code-csharp[System.ComponentModel.BackgroundWorker#13](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CS/fibonacciform.cs#13)] + [!code-vb[System.ComponentModel.BackgroundWorker#13](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/VB/fibonacciform.vb#13)] + +5. イベント ハンドラーで、`resultLabel` コントロールに計算結果を代入します。 + + [!code-cpp[System.ComponentModel.BackgroundWorker#6](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CPP/fibonacciform.cpp#6)] + [!code-csharp[System.ComponentModel.BackgroundWorker#6](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CS/fibonacciform.cs#6)] + [!code-vb[System.ComponentModel.BackgroundWorker#6](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/VB/fibonacciform.vb#6)] + +## 進行状況の報告機能とキャンセルのサポートの追加 + 時間のかかる非同期操作では、進行状況をユーザーに報告し、ユーザーが操作をキャンセルできるようにすることが望まれます。 クラスには、バックグラウンド操作の進行状況を報告できるイベントが用意されています。 また、ワーカー コードで の呼び出しを検出し、ワーカー コード自体を中断できるようにするフラグも使用できます。 + +#### 進行状況の報告機能を実装するには + +1. **\[プロパティ\]** ウィンドウで `backgroundWorker1` を選択します。 プロパティと プロパティを `true` に設定します。 + +2. `FibonacciCalculator` フォームで 2 つの変数を宣言します。 これらの変数を使用して、進行状況を追跡します。 + + [!code-cpp[System.ComponentModel.BackgroundWorker#14](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CPP/fibonacciform.cpp#14)] + [!code-csharp[System.ComponentModel.BackgroundWorker#14](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CS/fibonacciform.cs#14)] + [!code-vb[System.ComponentModel.BackgroundWorker#14](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/VB/fibonacciform.vb#14)] + +3. イベントのイベント ハンドラーを追加します。 イベント ハンドラーで、 パラメーターの プロパティを使用して、 を更新します。 + + [!code-cpp[System.ComponentModel.BackgroundWorker#7](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CPP/fibonacciform.cpp#7)] + [!code-csharp[System.ComponentModel.BackgroundWorker#7](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CS/fibonacciform.cs#7)] + [!code-vb[System.ComponentModel.BackgroundWorker#7](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/VB/fibonacciform.vb#7)] + +#### キャンセルのサポートを実装するには + +1. `cancelAsyncButton` コントロールの イベント ハンドラーで、非同期操作をキャンセルするコードを追加します。 + + [!code-cpp[System.ComponentModel.BackgroundWorker#4](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CPP/fibonacciform.cpp#4)] + [!code-csharp[System.ComponentModel.BackgroundWorker#4](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CS/fibonacciform.cs#4)] + [!code-vb[System.ComponentModel.BackgroundWorker#4](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/VB/fibonacciform.vb#4)] + +2. 進行状況を報告し、キャンセルをサポートする `ComputeFibonacci` メソッドのコード片を次に示します。 + + [!code-cpp[System.ComponentModel.BackgroundWorker#11](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CPP/fibonacciform.cpp#11)] + [!code-csharp[System.ComponentModel.BackgroundWorker#11](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CS/fibonacciform.cs#11)] + [!code-vb[System.ComponentModel.BackgroundWorker#11](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/VB/fibonacciform.vb#11)] + [!code-cpp[System.ComponentModel.BackgroundWorker#12](../../../../samples/snippets/cpp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CPP/fibonacciform.cpp#12)] + [!code-csharp[System.ComponentModel.BackgroundWorker#12](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/CS/fibonacciform.cs#12)] + [!code-vb[System.ComponentModel.BackgroundWorker#12](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker/VB/fibonacciform.vb#12)] + +## チェックポイント + この時点で、フィボナッチ電卓アプリケーションをコンパイルして実行できます。 + +#### プロジェクトをテストするには + +- F5 キーを押してアプリケーションをコンパイルおよび実行します。 + + 計算がバックグラウンドで実行されている間、計算が完了するまでの進行状況が に表示されます。 また、保留中の操作をキャンセルすることもできます。 + + 小さい数の場合は計算に時間がかかりませんが、大きい数の場合は著しい遅延が生じます。 30 以上の値を入力した場合、コンピューターの処理速度によっては、数秒間の遅延が生じます。 値が 40 以上の場合は、計算が終了するまでに数分から数時間かかることがあります。 電卓が大きなフィボナッチ数を計算している間でも、フォームを自由に移動したり、拡大縮小したり、閉じたりすることもできるます。 これは、メイン UI スレッドが、計算の終了を待機していないからです。 + +## 次の手順 + これで、バックグラウンドで計算を実行する コンポーネントを使用するフォームを実装できました。この後は、次のような非同期操作の他の可能性を検討してください。 + +- 複数の オブジェクトを使用して、複数の同時操作を実行する。 + +- マルチスレッド アプリケーションをデバッグするには、「[方法 : \[スレッド\] ウィンドウを使用する](../Topic/How%20to:%20Use%20the%20Threads%20Window.md)」を参照してください。 + +- 非同期プログラミング モデルをサポートする独自のコンポーネントを実装する。 詳細については、「[Event\-based Asynchronous Pattern Overview](../../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md)」を参照してください。 + + > [!CAUTION] + > どのような種類のマルチスレッドを使用している場合でも、非常に深刻で複雑なバグを引き起こしてしまう可能性があります。 マルチスレッドを使用するソリューションを実装する前に、「[Managed Threading Best Practices](../../../../docs/standard/threading/managed-threading-best-practices.md)」を参照してください。 + +## 参照 + + [Managed Threading Best Practices](../../../../docs/standard/threading/managed-threading-best-practices.md) + [コンポーネントのマルチスレッド](../Topic/Multithreading%20in%20Components.md) + [NOT IN BUILD: Multithreading in Visual Basic](http://msdn.microsoft.com/ja-jp/c731a50c-09c1-4468-9646-54c86b75d269) + [方法 : バックグラウンド操作を使用するフォームを実装する](../../../../docs/framework/winforms/controls/how-to-implement-a-form-that-uses-a-background-operation.md) + [チュートリアル : 操作をバックグラウンドで実行する](../../../../docs/framework/winforms/controls/walkthrough-running-an-operation-in-the-background.md) + [BackgroundWorker コンポーネント](../../../../docs/framework/winforms/controls/backgroundworker-component.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-inheriting-from-a-windows-forms-control-with-visual-basic.md b/docs/framework/winforms/controls/walkthrough-inheriting-from-a-windows-forms-control-with-visual-basic.md new file mode 100644 index 00000000000..3329d5b0683 --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-inheriting-from-a-windows-forms-control-with-visual-basic.md @@ -0,0 +1,165 @@ +--- +title: "チュートリアル : Visual Basic による Windows フォーム コントロールからの継承 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "カスタム コントロール [Windows フォーム], 継承" + - "継承, control" + - "継承, カスタム コントロール" + - "継承, チュートリアル" + - "Windows フォーム コントロール, 継承" +ms.assetid: fb58d7c8-b702-4478-ad31-b00cae118882 +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# チュートリアル : Visual Basic による Windows フォーム コントロールからの継承 +[!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] では、*継承*によって強力なカスタム コントロールを作成できます。 継承を使用すると、標準の Windows フォーム コントロールの固有の機能をすべて保持しながら、カスタム機能も組み込んだコントロールを作成できます。 このチュートリアルでは、`ValueButton` という名前の簡単な継承コントロールを作成します。 このボタンは、標準の Windows フォーム コントロールの機能を継承し、`ButtonValue` というカスタム プロパティを公開します。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 新しいプロジェクトを作成するときには、その名前を指定することにより、ルート名前空間、アセンブリ名、およびプロジェクト名を設定し、既定のコンポーネントが正しい名前空間に含まれるようにします。 + +#### ValueButtonLib コントロール ライブラリおよび ValueButton コントロールを作成するには + +1. **\[ファイル\]** メニューの **\[新規作成\]** をポイントし、**\[プロジェクト\]** をクリックして **\[新しいプロジェクト\]** ダイアログ ボックスを開きます。 + +2. \[[!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] プロジェクト\] ボックスの一覧の **\[Windows フォーム コントロール ライブラリ\]** プロジェクト テンプレートを選択し、**\[プロジェクト名\]** ボックスに「`ValueButtonLib`」と入力します。 + + プロジェクト名 `ValueButtonLib` は、既定でルート名前空間にも割り当てられます。 ルート名前空間は、アセンブリ内のコンポーネント名の修飾に使用されます。 たとえば、`ValueButton` という名前のコンポーネントが 2 つのアセンブリに含まれる場合は、`ValueButtonLib.ValueButton` という形で目的の `ValueButton` コンポーネントを指定できます。 詳細については、「[Visual Basic における名前空間](../Topic/Namespaces%20in%20Visual%20Basic.md)」を参照してください。 + +3. **ソリューション エクスプローラー**で、**\[UserControl1.vb\]** を右クリックし、ショートカット メニューの **\[名前の変更\]** をクリックします。 ファイル名を「`ValueButton.vb`」に変更します。 コード要素 "UserControl1" へのすべての参照の名前を変更するかどうかを確認するダイアログ ボックスが表示されたら、**\[はい\]** をクリックします。 + +4. **ソリューション エクスプローラー**の **\[すべてのファイルを表示\]** をクリックします。 + +5. **\[ValueButton.vb\]** ノードを開き、デザイナー生成のコード ファイルである **ValueButton.Designer.vb** を表示します。 **コード エディター**でこのファイルを開きます。 + +6. `Class` ステートメント、`Partial Public Class ValueButton` を検索し、このコントロールが継承した型を から に変更します。 これによって、継承されたコントロールは コントロールのすべての機能を継承できます。 + +7. `InitializeComponent` メソッドを見つけ、 プロパティを割り当てる行を削除します。 このプロパティは、 コントロールには存在しません。 + +8. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックしてプロジェクトを保存します。 + + ビジュアル デザイナーは使用できなくなりました。 コントロールは独自の描画を実行するため、デザイナーでは表示を変更できません。 ビジュアル表示は、コードで変更しない限り、継承元のクラス \(つまり、\) とまったく同じです。 + +> [!NOTE] +> UI 要素のないコンポーネントをデザイン サーフェイスに追加することはできます。 + +## 継承したコントロールへのプロパティの追加 + 継承した Windows フォーム コントロールの可能な用途の 1 つとして、標準の Windows フォーム コントロールと同じ外観と操作性を持ちながらカスタム プロパティを公開するコントロールを作成できます。 ここでは、コントロールに `ButtonValue` という名前のプロパティを追加します。 + +#### Value プロパティを追加するには + +1. **ソリューション エクスプローラー**で、**\[ValueButton.vb\]** を右クリックし、ショートカット メニューの **\[コードの表示\]** をクリックします。 + +2. `Public Class ValueButton` ステートメントを探します。 このステートメントの直後に、次のコードを追加します。 + + \[Visual Basic\] + + ``` + ' Creates the private variable that will store the value of your + ' property. + Private varValue as integer + ' Declares the property. + Property ButtonValue() as Integer + ' Sets the method for retrieving the value of your property. + Get + Return varValue + End Get + ' Sets the method for setting the value of your property. + Set(ByVal Value as Integer) + varValue = Value + End Set + End Property + ``` + + このコードは、`ButtonValue` プロパティの格納方法と取得方法を設定します。 `Get` ステートメントは、返された値をプライベート変数 `varValue` に格納されている値に設定します。`Set` ステートメントは、`Value` キーワードを使用してプライベート変数の値を設定します。 + +3. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックしてプロジェクトを保存します。 + +## コントロールのテスト + コントロールはスタンドアロン プロジェクトではないため、コンテナーでホストする必要があります。 コントロールをテストするには、コントロールを実行するテスト プロジェクトを指定する必要があります。 また、コントロールをビルド \(コンパイル\) してテスト プロジェクトからもアクセスできるようにする必要があります。 ここでは、コントロールを作成し、Windows フォームでそのコントロールをテストします。 + +#### コントロールをビルドするには + +1. **\[ビルド\]** メニューの **\[ソリューションのビルド\]** をクリックします。 + + ビルドは、コンパイル エラーも警告もなしに完了します。 + +#### テスト プロジェクトを作成するには + +1. **\[ファイル\]** メニューの **\[追加\]** をポイントし、**\[新しいプロジェクト\]** をクリックして **\[新しいプロジェクトの追加\]** ダイアログ ボックスを表示します。 + +2. [!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] プロジェクト ノードを選択し、**\[Windows フォーム アプリケーション\]** をクリックします。 + +3. **\[プロジェクト名\]** ボックスに「`Test`」と入力します。 + +4. **ソリューション エクスプローラー**の **\[すべてのファイルを表示\]** をクリックします。 + +5. **ソリューション エクスプローラー**で、テスト プロジェクトの **\[参照設定\]** ノードを右クリックし、ショートカット メニューの **\[参照の追加\]** をクリックして **\[参照の追加\]** ダイアログ ボックスを表示します。 + +6. **\[プロジェクト\]** タブをクリックします。 + +7. **\[プロジェクト\]** タブをクリックします。 `ValueButtonLib` プロジェクトが **\[プロジェクト名\]** の下に表示されます。 プロジェクトをダブルクリックしてテスト プロジェクトへの参照を追加します。 + +8. **ソリューション エクスプローラー**で、**\[Test\]** を右クリックし、**\[ビルド\]** をクリックします。 + +#### フォームにコントロールを追加するには + +1. **ソリューション エクスプローラー**で、**\[Form1.vb\]** を右クリックし、ショートカット メニューの **\[デザイナーの表示\]** をクリックします。 + +2. **ツールボックス**の **\[ValueButtonLib コンポーネント\]** をクリックします。 **\[ValueButton\]** をダブルクリックします。 + + **ValueButton** がフォームに表示されます。 + +3. **\[ValueButton\]** を右クリックし、ショートカット メニューの **\[プロパティ\]** をクリックします。 + +4. **\[プロパティ\]** ウィンドウで、このコントロールのプロパティを調べます。 標準のボタンによって公開されるのと同じプロパティの他に、追加のプロパティ `ButtonValue` が含まれています。 + +5. `ButtonValue` プロパティを `5` に設定します。 + +6. **ツールボックス**の **\[すべての Windows フォーム\]** タブで、**\[Label\]** をダブルクリックしてフォームに コントロールを追加します。 + +7. ラベルをフォームの中央に配置し直します。 + +8. `ValueButton1` をダブルクリックします。 + + **コード エディター**が開き、`ValueButton1_Click` イベントが表示されます。 + +9. 次のコード行を入力します。 + + \[Visual Basic\] + + ``` + Label1.Text = CStr(ValueButton1.ButtonValue) + ``` + +10. **ソリューション エクスプローラー**で、**\[Test\]** を右クリックし、ショートカット メニューの **\[スタートアップ プロジェクトに設定\]** をクリックします。 + +11. **\[デバッグ\]** メニューの **\[デバッグ開始\]** をクリックします。 + + `Form1` が表示されます。 + +12. \[`Valuebutton1`\] をクリックします。 + + `Label1` に数字 "5" が表示され、継承したコントロールの `ButtonValue` プロパティが `ValueButton1_Click` メソッドを介して `Label1` に渡されたことを示します。 このようにして、`ValueButton` コントロールは標準の Windows フォーム ボタンの機能をすべて継承しながら、追加のカスタム プロパティを公開します。 + +## 参照 + [チュートリアル : Visual Basic による複合コントロールの作成](../../../../docs/framework/winforms/controls/walkthrough-authoring-a-composite-control-with-visual-basic.md) + [方法: \[ツールボックス アイテムの選択\] ダイアログ ボックスにコントロールを表示する](../../../../docs/framework/winforms/controls/how-to-display-a-control-in-the-choose-toolbox-items-dialog-box.md) + [.NET Framework を使用したカスタム Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-custom-windows-forms-controls.md) + [NOT IN BUILD: Inheritance in Visual Basic](http://msdn.microsoft.com/ja-jp/e5e6e240-ed31-4657-820c-079b7c79313c) + [Component Authoring Walkthroughs](../Topic/Component%20Authoring%20Walkthroughs.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-inheriting-from-a-windows-forms-control-with-visual-csharp.md b/docs/framework/winforms/controls/walkthrough-inheriting-from-a-windows-forms-control-with-visual-csharp.md new file mode 100644 index 00000000000..42ab38c41cb --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-inheriting-from-a-windows-forms-control-with-visual-csharp.md @@ -0,0 +1,161 @@ +--- +title: "チュートリアル : Visual C# による Windows フォーム コントロールからの継承 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "カスタム コントロール [Windows フォーム], 継承" + - "継承, control" + - "継承, カスタム コントロール" + - "継承, チュートリアル" + - "Windows フォーム コントロール, 継承" +ms.assetid: 09476da0-8d4c-4a4c-b969-649519dfb438 +caps.latest.revision: 17 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 17 +--- +# チュートリアル : Visual C# による Windows フォーム コントロールからの継承 +[!INCLUDE[csprcslong](../../../../includes/csprcslong-md.md)] では、*継承*によって強力なカスタム コントロールを作成できます。 継承を使用すると、標準の Windows フォーム コントロールの固有の機能をすべて保持しながら、カスタム機能も組み込んだコントロールを作成できます。 このチュートリアルでは、`ValueButton` という名前の簡単な継承コントロールを作成します。 このボタンは、標準の Windows フォーム コントロールの機能を継承し、`ButtonValue` というカスタム プロパティを公開します。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## プロジェクトの作成 + 新しいプロジェクトを作成するときには、その名前を指定することにより、ルート名前空間、アセンブリ名、およびプロジェクト名を設定し、既定のコンポーネントが正しい名前空間に含まれるようにします。 + +#### ValueButtonLib コントロール ライブラリおよび ValueButton コントロールを作成するには + +1. **\[ファイル\]** メニューの **\[新規作成\]** をポイントし、**\[プロジェクト\]** をクリックして **\[新しいプロジェクト\]** ダイアログ ボックスを開きます。 + +2. \[[!INCLUDE[csprcs](../../../../includes/csprcs-md.md)] プロジェクト\] ボックスの一覧の **\[Windows フォーム コントロール ライブラリ\]** プロジェクト テンプレートを選択し、**\[プロジェクト名\]** ボックスに「`ValueButtonLib`」と入力します。 + + プロジェクト名 `ValueButtonLib` は、既定でルート名前空間にも割り当てられます。 ルート名前空間は、アセンブリ内のコンポーネント名の修飾に使用されます。 たとえば、`ValueButton` という名前のコンポーネントが 2 つのアセンブリに含まれる場合は、`ValueButtonLib.ValueButton` という形で目的の `ValueButton` コンポーネントを指定できます。 詳細については、「[名前空間](../Topic/Namespaces%20\(C%23%20Programming%20Guide\).md)」を参照してください。 + +3. **ソリューション エクスプローラー**で、**\[UserControl1.cs\]** を右クリックし、ショートカット メニューの **\[名前の変更\]** をクリックします。 ファイル名を「`ValueButton.cs`」に変更します。 コード要素 "`UserControl1`" へのすべての参照の名前を変更するかどうかを確認するダイアログ ボックスが表示されたら、**\[はい\]** をクリックします。 + +4. **ソリューション エクスプローラー**で **\[ValueButton.cs\]** を右クリックし、**\[コードの表示\]** をクリックします。 + +5. `class` ステートメント行 `public partial class ValueButton` を見つけ、このコントロールの継承元である種類を から に変更します。 これによって、継承されたコントロールは コントロールのすべての機能を継承できます。 + +6. **ソリューション エクスプローラー**で、**\[ValueButton.cs\]** ノードを開き、**ValueButton.Designer.cs** というデザイナー生成のコード ファイルを表示します。 **コード エディター**でこのファイルを開きます。 + +7. `InitializeComponent` メソッドを見つけ、 プロパティを割り当てる行を削除します。 このプロパティは、 コントロールには存在しません。 + +8. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックしてプロジェクトを保存します。 + + > [!NOTE] + > ビジュアルなデザイナーは使用できなくなりました。 コントロールは独自の描画を実行するため、デザイナーでは表示を変更できません。 ビジュアル表示は、コードで変更しない限り、継承元のクラス \(つまり、\) とまったく同じです。 UI 要素のないコンポーネントをデザイン サーフェイスに追加することはできます。 + +## 継承したコントロールへのプロパティの追加 + 継承した Windows フォーム コントロールの可能な用途の 1 つとして、標準の Windows フォーム コントロールと同じ外観と操作性を持ちながらカスタム プロパティを公開するコントロールを作成できます。 ここでは、コントロールに `ButtonValue` という名前のプロパティを追加します。 + +#### Value プロパティを追加するには + +1. **ソリューション エクスプローラー**で、**\[ValueButton.cs\]** を右クリックし、ショートカット メニューの **\[コードの表示\]** をクリックします。 + +2. `class` ステートメントを探します。 始まりの中かっこ \(`{`\) の直後に、次のコードを入力します。 + + \[C\#\] + + ``` + // Creates the private variable that will store the value of your + // property. + private int varValue; + // Declares the property. + public int ButtonValue + { + // Sets the method for retrieving the value of your property. + get + { + return varValue; + } + // Sets the method for setting the value of your property. + set + { + varValue = value; + } + } + ``` + + このコードは、`ButtonValue` プロパティの格納方法と取得方法を設定します。 `get` ステートメントは、返された値をプライベート変数 `varValue` に格納されている値に設定します。`set` ステートメントは、`value` キーワードを使用してプライベート変数の値を設定します。 + +3. **\[ファイル\]** メニューの **\[すべてを保存\]** をクリックしてプロジェクトを保存します。 + +## コントロールのテスト + コントロールはスタンドアロン プロジェクトではないため、コンテナーでホストする必要があります。 コントロールをテストするには、コントロールを実行するテスト プロジェクトを指定する必要があります。 また、コントロールをビルド \(コンパイル\) してテスト プロジェクトからもアクセスできるようにする必要があります。 ここでは、コントロールを作成し、Windows フォームでそのコントロールをテストします。 + +#### コントロールをビルドするには + +1. **\[ビルド\]** メニューの **\[ソリューションのビルド\]** をクリックします。 + + ビルドは、コンパイル エラーも警告もなしに完了します。 + +#### テスト プロジェクトを作成するには + +1. **\[ファイル\]** メニューの **\[追加\]** をポイントし、**\[新しいプロジェクト\]** をクリックして **\[新しいプロジェクトの追加\]** ダイアログ ボックスを表示します。 + +2. **\[Visual C\#\]** ノードの下の **\[Windows\]** ノードを選択し、**\[Windows フォーム アプリケーション\]** をクリックします。 + +3. **\[プロジェクト名\]** ボックスに「`Test`」と入力します。 + +4. **ソリューション エクスプローラー**で、テスト プロジェクトの **\[参照設定\]** ノードを右クリックし、ショートカット メニューの **\[参照の追加\]** をクリックして **\[参照の追加\]** ダイアログ ボックスを表示します。 + +5. **\[プロジェクト\]** タブをクリックします。 `ValueButtonLib` プロジェクトが **\[プロジェクト名\]** の下に表示されます。 プロジェクトをダブルクリックしてテスト プロジェクトへの参照を追加します。 + +6. **ソリューション エクスプローラー**で、**\[Test\]** を右クリックし、**\[ビルド\]** をクリックします。 + +#### フォームにコントロールを追加するには + +1. **ソリューション エクスプローラー**で、**\[Form1.cs\]** を右クリックし、ショートカット メニューの **\[デザイナーの表示\]** をクリックします。 + +2. **ツールボックス**の **\[ValueButtonLib コンポーネント\]** をクリックします。 **\[ValueButton\]** をダブルクリックします。 + + **ValueButton** がフォームに表示されます。 + +3. **\[ValueButton\]** を右クリックし、ショートカット メニューの **\[プロパティ\]** をクリックします。 + +4. **\[プロパティ\]** ウィンドウで、このコントロールのプロパティを調べます。 標準のボタンによって公開されるのと同じプロパティの他に、追加のプロパティ `ButtonValue` が含まれています。 + +5. `ButtonValue` プロパティを `5` に設定します。 + +6. **ツールボックス**の **\[すべての Windows フォーム\]** タブで、**\[Label\]** をダブルクリックしてフォームに コントロールを追加します。 + +7. ラベルをフォームの中央に配置し直します。 + +8. `valueButton1` をダブルクリックします。 + + **コード エディター**が開き、`valueButton1_Click` イベントが表示されます。 + +9. 次のコード行を挿入します。 + + \[C\#\] + + ``` + label1.Text = valueButton1.ButtonValue.ToString(); + ``` + +10. **ソリューション エクスプローラー**で、**\[Test\]** を右クリックし、ショートカット メニューの **\[スタートアップ プロジェクトに設定\]** をクリックします。 + +11. **\[デバッグ\]** メニューの **\[デバッグ開始\]** をクリックします。 + + `Form1` が表示されます。 + +12. \[`valueButton1`\] をクリックします。 + + `label1` に数字 "5" が表示され、継承したコントロールの `ButtonValue` プロパティが `valueButton1_Click` メソッドを介して `label1` に渡されたことを示します。 このようにして、`ValueButton` コントロールは標準の Windows フォーム ボタンの機能をすべて継承しながら、追加のカスタム プロパティを公開します。 + +## 参照 + [コンポーネントによるプログラミング](../Topic/Programming%20with%20Components.md) + [Component Authoring Walkthroughs](../Topic/Component%20Authoring%20Walkthroughs.md) + [方法: \[ツールボックス アイテムの選択\] ダイアログ ボックスにコントロールを表示する](../../../../docs/framework/winforms/controls/how-to-display-a-control-in-the-choose-toolbox-items-dialog-box.md) + [チュートリアル : Visual C\# による複合コントロールの作成](../../../../docs/framework/winforms/controls/walkthrough-authoring-a-composite-control-with-visual-csharp.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-providing-standard-menu-items-to-a-form.md b/docs/framework/winforms/controls/walkthrough-providing-standard-menu-items-to-a-form.md new file mode 100644 index 00000000000..e94b3e0f98b --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-providing-standard-menu-items-to-a-form.md @@ -0,0 +1,134 @@ +--- +title: "チュートリアル : 標準メニュー項目をフォームに用意する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "メニュー項目, 標準" + - "StatusStrip コントロール [Windows フォーム]" + - "ツール バー [Windows フォーム], チュートリアル" + - "ToolStrip コントロール [Windows フォーム]" +ms.assetid: dac37d98-589e-4d6d-9673-6437e8943122 +caps.latest.revision: 7 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 7 +--- +# チュートリアル : 標準メニュー項目をフォームに用意する + コントロールを使って、標準メニューをフォームに用意できます。 + + このチュートリアルでは、 コントロールを使って標準メニューを作成する方法について説明します。 このフォームは、メニュー項目が選択されたときにもそれに応答する動作を実行します。 このチュートリアルでは、次のタスクについて説明します。 + +- Windows フォーム プロジェクトの作成 + +- 標準メニューの作成 + +- コントロールの作成 + +- メニュー項目選択の処理 + + タスクを完了すると、 コントロール内のメニュー項目選択を表示する標準メニューがあるフォームが完成します。 + + このトピックのコードを単一のリストとしてコピーするには、「[方法 : フォームに標準メニュー項目を追加する](../../../../docs/framework/winforms/controls/how-to-provide-standard-menu-items-to-a-form.md)」を参照してください。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## 必須コンポーネント + このチュートリアルを完了するための要件は次のとおりです。 + +- [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] がインストールされているコンピューターで、Windows フォーム アプリケーション プロジェクトを作成および実行するための十分なアクセス許可が付与されていること。 + +## プロジェクトの作成 + 最初にプロジェクトを作成し、フォームを設定します。 + +#### プロジェクトを作成するには + +1. StandardMenuForm という名前の Windows アプリケーション プロジェクトを作成します。 + + 詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」を参照してください。 + +2. Windows フォーム デザイナーで、フォームを選択します。 + +## 標準メニューの作成 + Windows フォーム デザイナーは、自動的に コントロールに標準のメニュー項目を設定します。 + +#### 標準メニューを作成するには + +1. **ツールボックス**から、フォームに コントロールをドラッグします。 + +2. コントロールのスマート タグ グリフ \(![スマート タグ グリフ](../../../../docs/framework/winforms/controls/media/vs-winformsmttagglyph.png "VS\_WinFormSmtTagGlyph")\) をクリックし、**\[標準項目の挿入\]** を選択します。 + + コントロールに標準メニュー項目が設定されます。 + +3. **\[ファイル\]** メニュー項目をクリックして、既定のメニュー項目とアイコンを表示します。 + +## StatusStrip コントロールの作成 + メソッドを使って、Windows フォーム アプリケーションのステータスを表示します。 現在の例では、ユーザーが選択したメニュー項目が コントロールに表示されます。 + +#### StatusStrip コントロールを作成するには + +1. **ツールボックス**から、フォームに コントロールをドラッグします。 + + は、自動的にフォームの下部にドッキングされます。 + +2. コントロールのドロップダウン リストをクリックし、**\[StatusLabel\]** を選択して コントロールを コントロールに追加します。 + +## アイテム選択の処理 + ユーザーがメニュー項目を選択したときに、 イベントを処理してそれに応答します。 + +#### 項目選択を処理するには + +1. 「標準メニューの作成」で作成した **\[ファイル\]** メニュー項目をクリックします。 + +2. **\[プロパティ\]** ウィンドウ ツール バーの **\[イベント\]** をクリックします。 + +3. イベントをダブルクリックします。 + + Windows フォーム デザイナーが、 イベントのイベント ハンドラーを生成します。 + +4. イベント ハンドラー内に次のコードを挿入します。 + + [!code-csharp[System.Windows.Forms.ToolStrip.StandardMenu#3](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StandardMenu/CS/Form1.cs#3)] + [!code-vb[System.Windows.Forms.ToolStrip.StandardMenu#3](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StandardMenu/VB/Form1.vb#3)] + +5. `UpdateStatus` ユーティリティ メソッドの定義をフォームに挿入します。 + + [!code-csharp[System.Windows.Forms.ToolStrip.StandardMenu#2](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StandardMenu/CS/Form1.cs#2)] + [!code-vb[System.Windows.Forms.ToolStrip.StandardMenu#2](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ToolStrip.StandardMenu/VB/Form1.vb#2)] + +## チェックポイント + +#### フォームをテストするには + +1. F5 キーを押して、フォームをコンパイルおよび実行します。 + +2. **\[ファイル\]** メニュー項目をクリックしてメニューを開きます。 + +3. **\[ファイル\]** メニューで、次のいずれかの項目をクリックして選択します。 + + 選択した項目が、 コントロールに表示されます。 + +## 次の手順 + このチュートリアルでは、標準メニューを備えたフォームを作成しました。 系コントロールの用途は、他にもたくさんあります。 + +- を使って、コントロールにショートカット メニューを作成します。 詳細については、「[ContextMenu コンポーネントの概要](../../../../docs/framework/winforms/controls/contextmenu-component-overview-windows-forms.md)」を参照してください。 + +- コントロールがドッキングされている、複数のマルチ ドキュメント インターフェイス \(MDI\) フォームを作成します。 詳細については、「[チュートリアル : メニューのマージと ToolStrip コントロールのある MDI フォームを作成する](../../../../docs/framework/winforms/controls/walkthrough-creating-an-mdi-form-with-menu-merging-and-toolstrip-controls.md)」を参照してください。 + +- コントロールにプロフェッショナルな外観を与えます。 詳細については、「[方法 : アプリケーションの ToolStrip レンダラーを設定する](../../../../docs/framework/winforms/controls/how-to-set-the-toolstrip-renderer-for-an-application.md)」を参照してください。 + +## 参照 + + + + [MenuStrip コントロール](../../../../docs/framework/winforms/controls/menustrip-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-running-an-operation-in-the-background.md b/docs/framework/winforms/controls/walkthrough-running-an-operation-in-the-background.md new file mode 100644 index 00000000000..2d4fb64bc6e --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-running-an-operation-in-the-background.md @@ -0,0 +1,114 @@ +--- +title: "チュートリアル : 操作をバックグラウンドで実行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "バックグラウンド操作" + - "バックグラウンド タスク" + - "バックグラウンド スレッド" + - "BackgroundWorker クラス, 例" + - "フォーム, バックグラウンド操作" + - "フォーム, マルチスレッド" + - "スレッド処理 [Windows フォーム], バックグラウンド操作" +ms.assetid: 1b9a4e0a-f134-48ff-a1be-c461446a31ba +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# チュートリアル : 操作をバックグラウンドで実行する +完了するまでに時間がかかる操作があり、ユーザー インターフェイスが遅くならないようにする場合は、 クラスを使用して別のスレッドで操作を実行できます。 + + ここで使用するコード例の完全なリストについては、「[方法 : バックグラウンドで操作を実行する](../../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md)」を参照してください。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +### 操作をバックグラウンドで実行するには + +1. Windows フォーム デザイナーでフォームをアクティブにした状態で、**ツールボックス**から 2 つの コントロールをフォームにドラッグし、ボタンの `Name` プロパティおよび プロパティを以下の表のとおりに設定します。 + + |ボタン|名前|テキスト| + |---------|--------|----------| + |`button1`|`startBtn`|\[開始\]| + |`button2`|`cancelBtn`|\[キャンセル\]| + +2. **ツールボックス**を開き、**\[コンポーネント\]** タブをクリックします。次に、 コンポーネントをフォームにドラッグします。 + + `backgroundWorker1` コンポーネントが、**コンポーネント トレイ**に表示されます。 + +3. **\[プロパティ\]** ウィンドウで、 プロパティを `true` に設定します。 + +4. **\[プロパティ\]** ウィンドウの **\[イベント\]** ボタンをクリックし、 イベントおよび イベントをダブルクリックしてイベント ハンドラーを作成します。 + +5. 完了するまでに時間のかかるコードを イベント ハンドラーに挿入します。 + +6. 操作に必要なパラメーターを パラメーターの プロパティから抽出します。 + +7. 計算の結果を プロパティに代入します。 + + この値は、 イベント ハンドラーで使用できます。 + + [!code-csharp[System.ComponentModel.BackgroundWorker.Example#2](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/CS/Form1.cs#2)] + [!code-vb[System.ComponentModel.BackgroundWorker.Example#2](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/VB/Form1.vb#2)] + +8. 操作の結果を取得するコードを イベント ハンドラーに挿入します。 + + [!code-csharp[System.ComponentModel.BackgroundWorker.Example#3](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/CS/Form1.cs#3)] + [!code-vb[System.ComponentModel.BackgroundWorker.Example#3](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/VB/Form1.vb#3)] + +9. `TimeConsumingOperation` メソッドを実装します。 + + [!code-csharp[System.ComponentModel.BackgroundWorker.Example#4](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/CS/Form1.cs#4)] + [!code-vb[System.ComponentModel.BackgroundWorker.Example#4](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/VB/Form1.vb#4)] + +10. Windows フォーム デザイナーで `startButton` をダブルクリックして イベント ハンドラーを作成します。 + +11. `startButton` の イベント ハンドラーで メソッドを呼び出します。 + + [!code-csharp[System.ComponentModel.BackgroundWorker.Example#5](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/CS/Form1.cs#5)] + [!code-vb[System.ComponentModel.BackgroundWorker.Example#5](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/VB/Form1.vb#5)] + +12. Windows フォーム デザイナーで `cancelButton` をダブルクリックして イベント ハンドラーを作成します。 + +13. `cancelButton` の イベント ハンドラーで メソッドを呼び出します。 + + [!code-csharp[System.ComponentModel.BackgroundWorker.Example#6](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/CS/Form1.cs#6)] + [!code-vb[System.ComponentModel.BackgroundWorker.Example#6](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/VB/Form1.vb#6)] + +14. ファイルの先頭に System.ComponentModel and System.Threading 名前空間をインポートします。 + + [!code-csharp[System.ComponentModel.BackgroundWorker.Example#7](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/CS/Form1.cs#7)] + [!code-vb[System.ComponentModel.BackgroundWorker.Example#7](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.BackgroundWorker.Example/VB/Form1.vb#7)] + +15. F6 を押してソリューションをビルドした後で、Ctrl キーを押しながら F5 キーを押してアプリケーションをデバッガーの外部で実行します。 + +> [!NOTE] +> F5 キーを押してアプリケーションをデバッガーの内部で実行した場合、`TimeConsumingOperation` メソッド内で発生する例外がデバッガーにキャッチされ、表示されます。 アプリケーションをデバッガーの外部で実行すると、 が例外を処理し、 プロパティにキャッシュします。 + +1. 非同期操作を実行するには **\[開始\]** をクリックし、非同期操作の実行を停止するには **\[キャンセル\]** をクリックします。 + + 各操作の結果は、 に表示されます。 + +## 次の手順 + +- 非同期操作の進行状況を通知するフォームを実装します。 詳細については、「[方法 : バックグラウンド操作を使用するフォームを実装する](../../../../docs/framework/winforms/controls/how-to-implement-a-form-that-uses-a-background-operation.md)」を参照してください。 + +- コンポーネント向けの非同期パターンをサポートするクラスを実装します。 詳細については、「[Implementing the Event\-based Asynchronous Pattern](../../../../docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md)」を参照してください。 + +## 参照 + + + [方法 : バックグラウンド操作を使用するフォームを実装する](../../../../docs/framework/winforms/controls/how-to-implement-a-form-that-uses-a-background-operation.md) + [方法 : バックグラウンドで操作を実行する](../../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md) + [BackgroundWorker コンポーネント](../../../../docs/framework/winforms/controls/backgroundworker-component.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-updating-status-bar-information-at-run-time.md b/docs/framework/winforms/controls/walkthrough-updating-status-bar-information-at-run-time.md new file mode 100644 index 00000000000..93b1700efa4 --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-updating-status-bar-information-at-run-time.md @@ -0,0 +1,99 @@ +--- +title: "チュートリアル : ステータス バー情報の実行時更新 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "パネル, 最新表示 (ステータス バーを)" + - "ステータス バー, 最新表示 (パネルを)" + - "ステータス バー, 更新 (実行時に)" + - "StatusBar コントロール [Windows フォーム], 最新表示 (パネルを)" +ms.assetid: cc2abb06-c082-49f7-a5a3-2fd1bbcb58d1 +caps.latest.revision: 18 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 18 +--- +# チュートリアル : ステータス バー情報の実行時更新 +> [!IMPORTANT] +> コントロールと コントロールは、 コントロールおよび コントロールに代わると共に追加の機能を提供します。ただし、 コントロールおよび コントロールは、下位互換性を保つ目的および将来使用する目的で、必要に応じて保持できます。 + + アプリケーション状態やユーザーとの対話に応じて、実行時にステータス バー パネルの内容を更新することが必要な場合があります。 これは、**CapsLock** キー、**NumLock** キー、**ScrollLock** キーなどのキーが有効化されたことをユーザーに通知したり、日付や時刻を便利な情報として表示するためによく使用される方法です。 + + クラスのインスタンスを使用して時計をホストする例を次に示します。 + +### ステータス バーを更新できる状態にするには + +1. 新しい Windows フォームを作成します。 + +2. フォームに コントロールを追加します。 詳細については、「[方法 : Windows フォームにコントロールを追加する](../../../../docs/framework/winforms/controls/how-to-add-controls-to-windows-forms.md)」を参照してください。 + +3. ステータス バー パネルを コントロールに追加します。 詳細については、「[方法 : StatusBar コントロールにパネルを追加する](../../../../docs/framework/winforms/controls/how-to-add-panels-to-a-statusbar-control.md)」を参照してください。 + +4. フォームに追加した コントロールで、 プロパティを `true` に設定します。 + +5. Windows フォームの コンポーネントをフォームに追加します。 + + > [!NOTE] + > Windows フォームの コンポーネントは、Windows フォーム環境向けにデザインされています。 サーバー環境に適したタイマーが必要な場合は、「[Introduction to Server\-Based Timers](http://msdn.microsoft.com/ja-jp/adc0bc0a-a519-4812-bafc-fb9d1a5801fc)」を参照してください。 + +6. プロパティを `true` に設定します。 + +7. プロパティを 30000 に設定します。 + + > [!NOTE] + > コンポーネントの プロパティは、正確な時間を表示時刻に反映するために、30 秒 \(30,000 ミリ秒\) に設定されます。 + +### ステータス バーを更新するタイマーを実装するには + +1. 次のコードを コンポーネントのイベント ハンドラーに挿入して、 コントロールのパネルを更新します。 + + ```vb + Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick + StatusBar1.Panels(0).Text = Now.ToShortTimeString + End Sub + + ``` + + ```csharp + private void timer1_Tick(object sender, System.EventArgs e) + { + statusBar1.Panels[0].Text = DateTime.Now.ToShortTimeString(); + } + + ``` + + ```cpp + private: + System::Void timer1_Tick(System::Object ^ sender, + System::EventArgs ^ e) + { + statusBar1->Panels[0]->Text = + DateTime::Now.ToShortTimeString(); + } + ``` + + この時点でアプリケーションを実行できる状態になるので、テータス バー パネルの時計の動作を確認します。 + +### アプリケーションをテストするには + +1. アプリケーションをデバッグし、F5 キーを押して実行します。 デバッグの詳細については、「[Visual Studio でのデバッグ](../Topic/Debugging%20in%20Visual%20Studio.md)」を参照してください。 + + > [!NOTE] + > ステータス バーに時計が表示されるまでに、約 30 秒かかります。 これは、できるだけ正確な時刻を表示するためです。 逆に、時計を早く表示するには、上の手順 7. で プロパティの設定値を小さくします。 + +## 参照 + + + [方法 : StatusBar コントロールにパネルを追加する](../../../../docs/framework/winforms/controls/how-to-add-panels-to-a-statusbar-control.md) + [方法 : Windows フォームの StatusBar コントロールでクリックされたパネルを確認する](../../../../docs/framework/winforms/controls/determine-which-panel-wf-statusbar-control-was-clicked.md) + [StatusBar コントロールの概要](../../../../docs/framework/winforms/controls/statusbar-control-overview-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-validating-data-in-the-windows-forms-datagridview-control.md b/docs/framework/winforms/controls/walkthrough-validating-data-in-the-windows-forms-datagridview-control.md new file mode 100644 index 00000000000..c7a56cc6237 --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-validating-data-in-the-windows-forms-datagridview-control.md @@ -0,0 +1,103 @@ +--- +title: "チュートリアル : Windows フォーム DataGridView コントロールのデータの妥当性検査 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ [Windows フォーム], 検証" + - "データ グリッド, 検証 (データを)" + - "データの妥当性検査, Windows フォーム" + - "DataGridView コントロール [Windows フォーム], データの妥当性検査" + - "検証 (データを), Windows フォーム" + - "チュートリアル [Windows フォーム], DataGridView コントロール" +ms.assetid: a4f1d015-2969-430c-8ea2-b612d179c290 +caps.latest.revision: 22 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 22 +--- +# チュートリアル : Windows フォーム DataGridView コントロールのデータの妥当性検査 +データ入力機能をユーザーに表示する場合、フォームに入力されたデータの妥当性検査を行うことが必要になる場合があります。 クラスには、データがデータ ストアにコミットされる前に妥当性検査を実行できる便利な手段が用意されています。 現在のセルが変更されたときに で発生する イベントを処理することで、データの妥当性検査を行うことができます。 + + このチュートリアルでは、Northwind サンプル データベースの `Customers` テーブルから行を取得し、 コントロールに表示します。 ユーザーが `CompanyName` 列のセルを編集し、そのセルから離れようとすると、 イベント ハンドラーは新しい会社名文字列が空でないかどうかを確認し、新しい値が空の文字列の場合、 は空でない文字列が入力されるまで、ユーザーのカーソルがそのセルから移動できないようにします。 + + このトピックのコードを単一のリストとしてコピーするには、「[方法 : Windows フォーム DataGridView コントロールのデータを検証する](../../../../docs/framework/winforms/controls/how-to-validate-data-in-the-windows-forms-datagridview-control.md)」を参照してください。 + +## 必須コンポーネント + このチュートリアルを完了するための要件は次のとおりです。 + +- Northwind SQL Server サンプル データベースがインストールされたサーバーへのアクセス + +## フォームの作成 + +#### DataGridView に入力されたデータの妥当性検査を行うには + +1. から派生し、 コントロールおよび コンポーネントを含むクラスを作成します。 + + 次のコード例は、基本的な初期化処理を行い、`Main` メソッドを含みます。 + + [!code-csharp[System.Windows.Forms.DataGridViewDataValidation#01](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewDataValidation/CS/datavalidation.cs#01)] + [!code-vb[System.Windows.Forms.DataGridViewDataValidation#01](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewDataValidation/VB/datavalidation.vb#01)] + [!code-csharp[System.Windows.Forms.DataGridViewDataValidation#02](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewDataValidation/CS/datavalidation.cs#02)] + [!code-vb[System.Windows.Forms.DataGridViewDataValidation#02](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewDataValidation/VB/datavalidation.vb#02)] + +2. フォームのクラス定義に、データベースへの接続の詳細を処理するメソッドを実装します。 + + このコード例では、データが入力された オブジェクトを返す `GetData` メソッドを使用します。 `connectionString` 変数には、使用するデータベースに適した値を設定してください。 + + > [!IMPORTANT] + > 接続文字列内にパスワードなどの機密情報を格納すると、アプリケーションのセキュリティに影響を及ぼすことがあります。 データベースへのアクセスを制御する方法としては、Windows 認証 \(統合セキュリティとも呼ばれます\) を使用する方が安全です。 詳細については、「[接続情報の保護](../../../../docs/framework/data/adonet/protecting-connection-information.md)」を参照してください。 + + [!code-csharp[System.Windows.Forms.DataGridViewDataValidation#30](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewDataValidation/CS/datavalidation.cs#30)] + [!code-vb[System.Windows.Forms.DataGridViewDataValidation#30](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewDataValidation/VB/datavalidation.vb#30)] + +3. の初期化、およびデータ バインディングの設定を行うために、フォームの イベントのハンドラーを実装します。 + + [!code-csharp[System.Windows.Forms.DataGridViewDataValidation#10](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewDataValidation/CS/datavalidation.cs#10)] + [!code-vb[System.Windows.Forms.DataGridViewDataValidation#10](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewDataValidation/VB/datavalidation.vb#10)] + +4. コントロールの イベントおよび イベントのハンドラーを実装します。 + + イベント ハンドラーでは、`CompanyName` 列のセルの値が空であるかどうかを調べます。 セルの値が妥当性検査に合格しなかった場合は、 クラスの プロパティを `true` に設定します。 これにより、 コントロールはカーソルがそのセルから移動することを禁止します。 その行の プロパティに説明文字列を設定します。 これにより、エラー アイコンと、エラー テキストを含むツールヒントが表示されます。 イベント ハンドラーでは、行の プロパティに空の文字列を設定します。 イベントは、セルの編集モードが終了した場合にのみ発生します。そのためには、セルが妥当性検査に合格することが必要です。 + + [!code-csharp[System.Windows.Forms.DataGridViewDataValidation#20](../../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewDataValidation/CS/datavalidation.cs#20)] + [!code-vb[System.Windows.Forms.DataGridViewDataValidation#20](../../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DataGridViewDataValidation/VB/datavalidation.vb#20)] + +## アプリケーションのテスト + フォームをテストして、期待どおりに動作することを確認します。 + +#### フォームをテストするには + +- アプリケーションをコンパイルして実行します。 + + に、`Customers` テーブルからのデータが入力されて表示されます。 `CompanyName` 列内のセルをダブルクリックすると、値を編集できます。 すべての文字を削除してから、Tab キーを押してそのセルから離れようとすると、 によって阻止されます。 空でない文字列をセルに入力すると、 コントロールはセルから離れることを許可します。 + +## 次の手順 + このアプリケーションでは、 コントロールの機能について基本を理解できます。 次のような方法を使用すると、 コントロールの外観および動作をカスタマイズできます。 + +- 輪郭およびヘッダー スタイルを変更します。 詳細については、「[方法 : Windows フォーム DataGridView コントロールの境界線とグリッド線のスタイルを変更する](../../../../docs/framework/winforms/controls/change-the-border-and-gridline-styles-in-the-datagrid.md)」を参照してください。 + +- コントロールへのユーザー入力の許可または制限。 詳細については、「[方法 : Windows フォーム DataGridView コントロールで行が追加および削除されないようにする](../../../../docs/framework/winforms/controls/prevent-row-addition-and-deletion-datagridview.md)」および「[方法 : Windows フォームの DataGridView コントロールで列を読み取り専用にする](../../../../docs/framework/winforms/controls/how-to-make-columns-read-only-in-the-windows-forms-datagridview-control.md)」を参照してください。 + +- ユーザー入力に対するデータベース関連エラーの検査。 詳細については、「[チュートリアル : Windows フォーム DataGridView コントロールでのデータ入力中に発生したエラーの処理](../../../../docs/framework/winforms/controls/handling-errors-that-occur-during-data-entry-in-the-datagrid.md)」を参照してください。 + +- 仮想モードを使用した大量のデータの処理。 詳細については、「[チュートリアル : Windows フォーム DataGridView コントロールでの仮想モードの実装](../../../../docs/framework/winforms/controls/implementing-virtual-mode-wf-datagridview-control.md)」を参照してください。 + +- セルの外観をカスタマイズします。 詳細については、「[方法 : Windows フォームの DataGridView コントロールのセルの外観をカスタマイズする](../../../../docs/framework/winforms/controls/customize-the-appearance-of-cells-in-the-datagrid.md)」および「[方法 : Windows フォーム DataGridView コントロールのフォントと色のスタイルを設定する](../../../../docs/framework/winforms/controls/how-to-set-font-and-color-styles-in-the-windows-forms-datagridview-control.md)」を参照してください。 + +## 参照 + + + [Windows フォーム DataGridView コントロールでのデータ入力](../../../../docs/framework/winforms/controls/data-entry-in-the-windows-forms-datagridview-control.md) + [方法 : Windows フォーム DataGridView コントロールのデータを検証する](../../../../docs/framework/winforms/controls/how-to-validate-data-in-the-windows-forms-datagridview-control.md) + [チュートリアル : Windows フォーム DataGridView コントロールでのデータ入力中に発生したエラーの処理](../../../../docs/framework/winforms/controls/handling-errors-that-occur-during-data-entry-in-the-datagrid.md) + [接続情報の保護](../../../../docs/framework/data/adonet/protecting-connection-information.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/walkthrough-working-with-the-maskedtextbox-control.md b/docs/framework/winforms/controls/walkthrough-working-with-the-maskedtextbox-control.md new file mode 100644 index 00000000000..cac9a56546c --- /dev/null +++ b/docs/framework/winforms/controls/walkthrough-working-with-the-maskedtextbox-control.md @@ -0,0 +1,137 @@ +--- +title: "チュートリアル : MaskedTextBox コントロールの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "入力, 制御 (検証するために)" + - "MaskedTextBox コントロール [Windows フォーム], 検証" + - "MaskedTextBox コントロール [Windows フォーム], チュートリアル" + - "テキスト, コントロール (入力の)" + - "ユーザー入力, 制御" +ms.assetid: df60565e-5447-4110-92a6-be1f6ff5faa3 +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# チュートリアル : MaskedTextBox コントロールの使用 +このチュートリアルでは、以下のタスクを行います。 + +- コントロールを初期化します。 + +- イベント ハンドラーを使用して、文字がマスクに従っていない場合にユーザーに警告します。 + +- プロパティに型を割り当て、 イベント ハンドラーを使用して、ユーザーがコミットしようとした値がその型に対して有効でない場合にユーザーに警告します。 + +## プロジェクトの作成とコントロールの追加 + +#### MaskedTextBox コントロールをフォームに追加するには + +1. コントロールを配置するフォームを開きます。 + +2. **ツールボックス**からフォームに コントロールをドラッグします。 + +3. コントロールを右クリックし、**\[プロパティ\]** をクリックします。 **\[プロパティ\]** ウィンドウの **\[マスク\]** プロパティを選択し、プロパティ名の横の **\[...\]** \(省略記号\) ボタンをクリックします。 + +4. **\[定型入力\]** ダイアログ ボックスで、**\[日付 \(和暦\)\]** マスクを選択し、**\[OK\]** をクリックします。 + +5. **\[プロパティ\]** ウィンドウで、 プロパティを `true` に設定します。 このプロパティを設定すると、マスク定義に違反する文字をユーザーが入力するたびに、短いビープ音が鳴ります。 + + \[マスク\] プロパティがサポートする文字の概要については、 プロパティの「解説」を参照してください。 + +## 入力エラーについてのユーザーへの警告 + +#### マスク入力の拒否に対するバルーン ヒントの追加 + +1. **ツールボックス**に戻り、 をフォームに追加します。 + +2. イベントに対するイベント ハンドラーを作成します。この中では、入力エラーが発生したときに を表示させます。 バルーン ヒントは、5 秒が経過するか、またはユーザーがクリックするまでは表示されたままとなります。 + + ```csharp + public void Form1_Load(Object sender, EventArgs e) + { + ... // Other initialization code + maskedTextBox1.Mask = "00/00/0000"; + maskedTextBox1.MaskInputRejected += new MaskInputRejectedEventHandler(maskedTextBox1_MaskInputRejected) + } + + void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e) + { + toolTip1.ToolTipTitle = "Invalid Input"; + toolTip1.Show("We're sorry, but only digits (0-9) are allowed in dates.", maskedTextBox1, maskedTextBox1.Location, 5000); + } + ``` + + ```vb + Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + Me.ToolTip1.IsBalloon = True + Me.MaskedTextBox1.Mask = "00/00/0000" + End Sub + + Private Sub MaskedTextBox1_MaskInputRejected(sender as Object, e as MaskInputRejectedEventArgs) Handles MaskedTextBox1.MaskInputRejected + ToolTip1.ToolTipTitle = "Invalid Input" + ToolTip1.Show("We're sorry, but only digits (0-9) are allowed in dates.", MaskedTextBox1, 5000) + End Sub + + ``` + +## 有効でない型についてのユーザーへの警告 + +#### 無効なデータ型に対するバルーン ヒントの追加 + +1. フォームの イベント ハンドラーで、 型を表す オブジェクトを、 コントロールの プロパティに対して割り当てます。 + + ```csharp + private void Form1_Load(Object sender, EventArgs e) + { + // Other code + maskedTextBox1.ValidatingType = typeof(System.DateTime); + maskedTextBox1.TypeValidationCompleted += new TypeValidationEventHandler(maskedTextBox1_TypeValidationCompleted); + } + ``` + + ```vb + Private Sub Form1_Load(sender as Object, e as EventArgs) + // Other code + MaskedTextBox1.ValidatingType = GetType(System.DateTime) + End Sub + ``` + +2. イベントのイベント ハンドラーを追加します。 + + ```csharp + public void maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e) + { + if (!e.IsValidInput) + { + toolTip1.ToolTipTitle = "Invalid Date Value"; + toolTip1.Show("We're sorry, but the value you entered is not a valid date. Please change the value.", maskedTextBox1, 5000); + e.Cancel = true; + } + } + ``` + + ```vb + Public Sub MaskedTextBox1_TypeValidationCompleted(sender as Object, e as TypeValidationEventArgs) + If Not e.IsValidInput Then + ToolTip1.ToolTipTitle = "Invalid Date Value" + ToolTip1.Show("We're sorry, but the value you entered is not a valid date. Please change the value.", maskedTextBox1, 5000) + e.Cancel = True + End If + End Sub + + ``` + +## 参照 + + [MaskedTextBox コントロール](../../../../docs/framework/winforms/controls/maskedtextbox-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/ways-to-select-a-windows-forms-button-control.md b/docs/framework/winforms/controls/ways-to-select-a-windows-forms-button-control.md new file mode 100644 index 00000000000..e7f3580d5c7 --- /dev/null +++ b/docs/framework/winforms/controls/ways-to-select-a-windows-forms-button-control.md @@ -0,0 +1,43 @@ +--- +title: "Windows フォームの Button コントロールを選択する方法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Button コントロール [Windows フォーム], 選択" +ms.assetid: fe2fc058-5118-4f70-b264-6147d64a7a8d +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Windows フォームの Button コントロールを選択する方法 +Windows フォームのボタンは、次の方法で選択できます。 + +- マウスを使用してボタンをクリックします。 + +- コード内でボタンの イベントを呼び出します。 + +- **Tab** キーを押してボタンにフォーカスを移し、**Space** キーまたは **Enter** キーを押してボタンを選択します。 + +- ボタンに対応するアクセス キーを押します \(**Alt** キーを押しながら下線の付いた文字のキーを押します\)。 アクセス キーの詳細については、「[方法 : Windows フォーム コントロールのアクセス キーを作成する](../../../../docs/framework/winforms/controls/how-to-create-access-keys-for-windows-forms-controls.md)」を参照してください。 + +- ボタンがフォームの "承認" ボタンである場合は、Enter キーを押すとそのボタンが選択されます。フォーカスが他のコントロールにあっても、\(そのコントロールが承認ボタン以外のボタン、複数行のテキスト ボックス、または Enter キーをトラップするカスタム コントロールである場合を除き\) この方法でボタンを選択できます。 + +- ボタンがフォームの "キャンセル" ボタンである場合は、フォーカスが他のコントロールにあっても、**Esc** キーを押すとボタンが選択されます。 + +- メソッドを呼び出して、プログラムによってボタンを選択します。 + +## 参照 + [Button コントロールの概要](../../../../docs/framework/winforms/controls/button-control-overview-windows-forms.md) + [方法 : Windows フォームのボタンのクリックに応答する](../../../../docs/framework/winforms/controls/how-to-respond-to-windows-forms-button-clicks.md) + [Button コントロール](../../../../docs/framework/winforms/controls/button-control-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/webbrowser-control-overview.md b/docs/framework/winforms/controls/webbrowser-control-overview.md new file mode 100644 index 00000000000..85a667d7c20 --- /dev/null +++ b/docs/framework/winforms/controls/webbrowser-control-overview.md @@ -0,0 +1,69 @@ +--- +title: "WebBrowser コントロールの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "WebBrowser" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Web ページ, 表示 (アプリケーション内に)" + - "WebBrowser コントロール [Windows フォーム], 概要" +ms.assetid: 6e3e1cc2-9c48-4136-9659-e99e4e60b7e9 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# WebBrowser コントロールの概要 + コントロールは、WebBrowser ActiveX コントロール用のマネージ ラッパーを提供します。 マネージ ラッパーを使用すると、Windows フォーム クライアント アプリケーションで、Web ページを表示できます。 コントロールを使用すると、アプリケーションで Internet Explorer の Web ブラウザー同様の機能を利用できます。または、Internet Explorer の既定の機能を無効にして、コントロールを単純な HTML ドキュメント ビューアーとして使用することもできます。 また、このコントロールを使用してフォームに DHTML ベースのユーザー インターフェイス要素を追加することによって、これらの機能が コントロールでホストされているという事実を隠すこともできます。 この方法によって、Web コントロールと Windows フォーム コントロールとを 1 つのアプリケーションでシームレスに組み合わせることができます。 + +## よく使用されるプロパティ、メソッド、およびイベント + コントロールには、Internet Explorer のコントロールを実装するために利用できる複数のプロパティ、メソッド、およびイベントがあります。 たとえば、`Navigate` メソッドを使用すると、アドレス バーを実装でき、`GoBack` メソッド、`GoForward` メソッド、`Stop` メソッド、および `Refresh` メソッドを使用すると、ツール バー上の移動ボタンを実装できます。 `Navigated` イベントを処理すると、`Url` プロパティの値でアドレス バーを更新したり、`DocumentTitle` プロパティの値でタイトル バーを更新したりできます。 + + アプリケーション内で独自のページ コンテンツを作成する場合は、`DocumentText` プロパティを設定します。 HTML ドキュメント オブジェクト モデル \(DOM\) の知識があれば、`Document` プロパティを使用して、現在の Web ページのコンテンツを操作することもできます。 このプロパティを使用すると、複数のファイルを移動しなくても、メモリ内でドキュメントの格納および変更を行うことができます。 + + `Document` プロパティは、Web ページのスクリプト コードで実装されているメソッドを、クライアント アプリケーション コードから呼び出す場合にも使用できます。 スクリプト コードからクライアント アプリケーション コードにアクセスするには、`ObjectForScripting` プロパティを設定します。 指定したオブジェクトは、`window.external` オブジェクトとしてスクリプト コードによってアクセスできます。 + +|名前|Description| +|--------|-----------------| +| プロパティ|現在の Web ページの HTML ドキュメント オブジェクト モデル \(DOM\) へのアクセスを管理するオブジェクトを取得します。| +| イベント|Web ページの読み込みが完了した時点で発生します。| +| プロパティ|現在の Web ページから HTML コンテンツを取得または設定します。| +| プロパティ|現在の Web ページのタイトルを取得します。| +| メソッド|履歴内の前のページに移動します。| +| メソッド|履歴内の次のページに移動します。| +| メソッド|指定した URL へ移動します。| +| イベント|移動を開始する前に発生し、アクションのキャンセルを可能にします。| +| プロパティ|Web ページのスクリプト コードでアプリケーションと通信するために使用するオブジェクトを取得または設定します。| +| メソッド|現在の Web ページを印刷します。| +| メソッド|現在の Web ページを再読み込みします。| +| メソッド|現在の移動処理を中断し、サウンドやアニメーションなどの動的なページ要素を停止します。| +| プロパティ|現在の Web ページの URL を取得または設定します。 このプロパティを設定すると、コントロールを新しい URL に移動できます。| + +## 参照 + + + + + + + + + + + + [方法 : WebBrowser コントロールで URL に移動する](../../../../docs/framework/winforms/controls/how-to-navigate-to-a-url-with-the-webbrowser-control.md) + [方法 : WebBrowser コントロールを使用して印刷する](../../../../docs/framework/winforms/controls/how-to-print-with-a-webbrowser-control.md) + [方法 : Windows フォーム アプリケーションに Web ブラウザーの機能を追加する](../../../../docs/framework/winforms/controls/how-to-add-web-browser-capabilities-to-a-windows-forms-application.md) + [方法 : Windows フォーム アプリケーションで HTML ドキュメントビューアーを作成する](../../../../docs/framework/winforms/controls/how-to-create-an-html-document-viewer-in-a-windows-forms-application.md) + [方法 : DHTML コードとクライアント アプリケーション コード間の双方向の通信を実装する](../../../../docs/framework/winforms/controls/implement-two-way-com-between-dhtml-and-client.md) + [WebBrowser セキュリティ](../../../../docs/framework/winforms/controls/webbrowser-security.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/webbrowser-control-windows-forms.md b/docs/framework/winforms/controls/webbrowser-control-windows-forms.md new file mode 100644 index 00000000000..4e54ef8a40b --- /dev/null +++ b/docs/framework/winforms/controls/webbrowser-control-windows-forms.md @@ -0,0 +1,91 @@ +--- +title: "WebBrowser コントロール (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Web ページ, ホスト (アプリケーション内に)" + - "Web ページ, Windows フォーム コントロール" + - "WebBrowser コントロール [Windows フォーム]" +ms.assetid: 12667861-5b5b-46bc-8fb5-675e25264c9f +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# WebBrowser コントロール (Windows フォーム) +Windows フォームの `WebBrowser` コントロールは、Web ページをホストして、Web ブラウズ機能をアプリケーションに提供します。 + +## このセクションの内容 + [WebBrowser コントロールの概要](../../../../docs/framework/winforms/controls/webbrowser-control-overview.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [WebBrowser セキュリティ](../../../../docs/framework/winforms/controls/webbrowser-security.md) + このコントロールに関連するセキュリティの問題を説明します。 + + [方法 : WebBrowser コントロールで URL に移動する](../../../../docs/framework/winforms/controls/how-to-navigate-to-a-url-with-the-webbrowser-control.md) + このコントロールで特定の URL を表示する方法を示します。 + + [方法 : WebBrowser コントロールを使用して印刷する](../../../../docs/framework/winforms/controls/how-to-print-with-a-webbrowser-control.md) + Web ページを表示しないで印刷する方法を示します。 + + [方法 : Windows フォーム アプリケーションに Web ブラウザーの機能を追加する](../../../../docs/framework/winforms/controls/how-to-add-web-browser-capabilities-to-a-windows-forms-application.md) + Web ブラウザーとして使用するために、コントロールを初期化する方法を説明します。 + + [方法 : Windows フォーム アプリケーションで HTML ドキュメントビューアーを作成する](../../../../docs/framework/winforms/controls/how-to-create-an-html-document-viewer-in-a-windows-forms-application.md) + HTML ビューアーとして使用するために、コントロールを初期化する方法を説明します。 + + [方法 : DHTML コードとクライアント アプリケーション コード間の双方向の通信を実装する](../../../../docs/framework/winforms/controls/implement-two-way-com-between-dhtml-and-client.md) + アプリケーション コードとコントロールでホストされている Web ページ内の DHTML との間で双方向の通信を設定する方法を説明します。 + + [マネージ HTML DOM \(Document Object Model\) の使用](../../../../docs/framework/winforms/controls/using-the-managed-html-document-object-model.md) + でホストされる HTML ページを操作または作成する方法を説明するトピックを示します。 + +## 関連項目 + クラス + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + このデリゲートについて説明します。 + + + この列挙体とそのすべての値について説明します。 + + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + このデリゲートについて説明します。 + + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + このデリゲートについて説明します。 + + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + このデリゲートについて説明します。 + + + この列挙体とそのすべての値について説明します。 + + + この列挙体とそのすべての値について説明します。 + +## 参照 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/webbrowser-security.md b/docs/framework/winforms/controls/webbrowser-security.md new file mode 100644 index 00000000000..60bb0298e43 --- /dev/null +++ b/docs/framework/winforms/controls/webbrowser-security.md @@ -0,0 +1,32 @@ +--- +title: "WebBrowser セキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "セキュリティ [Windows フォーム], WebBrowser コントロール" + - "WebBrowser コントロール [Windows フォーム], セキュリティ" +ms.assetid: 0968846e-48ee-485a-9797-65b5b9a622f8 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# WebBrowser セキュリティ + コントロールは、完全に信頼されている場合にのみ動作するようにデザインされています。 このコントロールでは、外部 Web サーバーからの HTML コンテンツを表示できるため、スクリプトや Web コントロールの形式でアンマネージ コードが含まれている可能性があります。 この場合に コントロールを使用しても、Internet Explorer を使用する場合と同様に安全ですが、マネージ コントロールである が、アンマネージ コードの実行を妨げることはありません。 + + 基になる ActiveX の `WebBrowser` コントロールに関するセキュリティ問題の詳細については、「[WebBrowser Control \(WebBrowser コントロール\)](http://go.microsoft.com/fwlink/?LinkId=198812)」を参照してください。 + +## 参照 + + [WebBrowser コントロールの概要](../../../../docs/framework/winforms/controls/webbrowser-control-overview.md) + [WebBrowser Control \(WebBrowser コントロール\)](http://go.microsoft.com/fwlink/?LinkId=198812) \ No newline at end of file diff --git a/docs/framework/winforms/controls/when-to-use-a-windows-forms-combobox-instead-of-a-listbox.md b/docs/framework/winforms/controls/when-to-use-a-windows-forms-combobox-instead-of-a-listbox.md new file mode 100644 index 00000000000..2bae1f315fd --- /dev/null +++ b/docs/framework/winforms/controls/when-to-use-a-windows-forms-combobox-instead-of-a-listbox.md @@ -0,0 +1,43 @@ +--- +title: "ListBox の代わりに Windows フォーム ComboBox を使用する場合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "バインド コントロール, コンボ ボックス" + - "コンボ ボックス, 比較 (リスト ボックスと)" + - "ComboBox コントロール [Windows フォーム], 比較 (ListBox と)" + - "ListBox コントロール [Windows フォーム], アクセス (項目に)" + - "ListBox コントロール [Windows フォーム], 追加と削除 (項目を)" + - "ListBox コントロール [Windows フォーム], および ComboBox" + - "ListCount プロパティ" + - "ListIndex プロパティ" + - "Windows フォーム コントロール, データ バインド" +ms.assetid: 7bcaea58-1cfa-46db-9baf-b75a69d8f9ec +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# ListBox の代わりに Windows フォーム ComboBox を使用する場合 + コントロールと コントロールは動作が似ており、置き換えることができる場合もあります。 ただし、各コントロールには、それぞれに適した用途があります。 + + 通常、コンボ ボックスは選択可能な値を単に示す場合に使用し、リスト ボックスは選択可能な値をリスト上の項目に限定する場合に使用します。 リストにない値を入力できるように、コンボ ボックスにはテキスト ボックス フィールドが含まれます。 ただし、 プロパティを に設定している場合は除きます。 その場合は、最初の文字を入力すると、コントロールによって項目が選択されます。 + + また、コンボ ボックスを使用すると、フォーム上の領域を節約できます。 ユーザーが下向きの矢印をクリックするまでリスト全体が表示されないため、リスト ボックスを配置できない小さな領域でも、コンボ ボックスを簡単に配置できます。 ただし、 プロパティが に設定されている場合、リスト全体が表示されるため、コンボ ボックスはリスト ボックスよりも大きい領域を占めることになります。 + +## 参照 + + + [方法 : Windows フォームの ComboBox、ListBox、または CheckedListBox コントロールに項目を追加または削除する](../../../../docs/framework/winforms/controls/add-and-remove-items-from-a-wf-combobox.md) + [方法 : Windows フォーム ComboBox、ListBox、または CheckedListBox コントロールを並べ替える](../../../../docs/framework/winforms/controls/sort-the-contents-of-a-wf-combobox-listbox-or-checkedlistbox-control.md) + [オプションのリストを表示するための Windows フォーム コントロール](../../../../docs/framework/winforms/controls/windows-forms-controls-used-to-list-options.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/windows-forms-control-development-basics.md b/docs/framework/winforms/controls/windows-forms-control-development-basics.md new file mode 100644 index 00000000000..0305ae1cce6 --- /dev/null +++ b/docs/framework/winforms/controls/windows-forms-control-development-basics.md @@ -0,0 +1,46 @@ +--- +title: "Windows フォーム コントロール開発の基本概念 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム], 作成" + - "カスタム コントロール [Windows フォーム], 派生型" + - "プログラミングの概念, Windows フォーム コントロール" +ms.assetid: 6277bb81-90f7-4c5b-9f4b-b02bb42dd316 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Windows フォーム コントロール開発の基本概念 +Windows フォーム コントロールは、 から直接または間接的に派生するクラスです。 一般的な Windows フォーム コントロールの開発方法をまとめた一覧を次に示します。 + +- 既存の複数のコントロールを組み合わせて、複合コントロールを作成します。 + + 複合コントロールは、コントロールとして再利用できるユーザー インターフェイスをカプセル化します。 複合コントロールの例としては、テキスト ボックスとリセット ボタンで構成されるコントロールがあります。 ビジュアル デザイナーには、複合コントロールの作成をサポートするさまざまな機能があります。 複合コントロールを作成するには、 から派生します。 基本クラスは子コントロールに対してキーボード ルーティングを提供し、複数の子コントロールを 1 つのグループとして機能させることができます。 詳細については、「[複合 Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-a-composite-windows-forms-control.md)」を参照してください。 + +- コントロールを拡張します。コントロールをカスタマイズするか、またはコントロールに機能を追加します。 + + 拡張コントロールの例としては、色を変更できないボタンや、クリック回数を追跡する追加プロパティが設定されているボタンがあります。 Windows フォーム コントロールをカスタマイズするには、コントロールからクラスを派生させて、プロパティ、メソッド、イベントを追加またはオーバーライドします。 + +- 既存の複合コントロールや拡張コントロール以外のコントロールを作成します。 + + この場合、 基本クラスからコントロールを派生させます。 基本クラスのプロパティ、メソッド、イベントをオーバーライドまたは追加できます。 開始するには、「[方法 : シンプルな Windows フォーム コントロールを開発する](../../../../docs/framework/winforms/controls/how-to-develop-a-simple-windows-forms-control.md)」を参照してください。 + + Windows フォーム コントロールの基本クラスである には、クライアント側の Windows ベースのアプリケーションでのビジュアル表示に必要な内部機構が用意されています。 には、ウィンドウ ハンドルがあり、メッセージ ルーティングを処理します。また、マウス イベントとキーボード イベントの他、多くのユーザー インターフェイス イベントが含まれています。 このクラスは、高度なレイアウトを提供し、 など、ビジュアル表示に関連する固有のプロパティを備えています。 さらに、セキュリティ、スレッド処理のサポート、ActiveX コントロールとの相互運用性を提供します。 基本クラスによってインフラストラクチャの大部分が提供されるため、Windows フォーム コントロールは比較的簡単に開発できます。 + +## 参照 + [方法 : シンプルな Windows フォーム コントロールを開発する](../../../../docs/framework/winforms/controls/how-to-develop-a-simple-windows-forms-control.md) + [複合 Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-a-composite-windows-forms-control.md) + [方法 : 進行状況を示す Windows フォーム コントロールを作成する](../../../../docs/framework/winforms/controls/how-to-create-a-windows-forms-control-that-shows-progress.md) + [さまざまなカスタム コントロール](../../../../docs/framework/winforms/controls/varieties-of-custom-controls.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/windows-forms-controls-by-function.md b/docs/framework/winforms/controls/windows-forms-controls-by-function.md new file mode 100644 index 00000000000..b4c10aebb28 --- /dev/null +++ b/docs/framework/winforms/controls/windows-forms-controls-by-function.md @@ -0,0 +1,98 @@ +--- +title: "Windows フォーム コントロールの機能別一覧 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム], 関数による" + - "Windows フォーム コントロール, 一覧" + - "Windows フォーム, コントロールの機能別一覧" +ms.assetid: 5e65a6c3-5d6f-480d-beb8-b28f865f07e3 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# Windows フォーム コントロールの機能別一覧 +Windows フォームには、さまざまな機能を実行するコントロールとコンポーネントがあります。 次の表に、Windows フォームのコントロールとコンポーネントを機能ごとにまとめて示します。 同じ機能を提供するコントロールが複数ある場合は、推奨コントロールを示し、非推奨コントロールについての注釈を付けています。 さらに、非推奨コントロールとそれに対応する推奨コントロールの一覧を独立した表として示します。 + +> [!NOTE] +> 次の表は、Windows フォームで使用できるすべてのコントロールやコンポーネントを示しているわけではありません。完全な一覧については、「[Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md)」を参照してください。 + +## 推奨されるコントロールとコンポーネント \(機能別\) + +|Function|Control|Description| +|--------------|-------------|-----------------| +|データの表示| コントロール| コントロールには、データを表示するための、カスタマイズできるテーブルが用意されています。 クラスを使用すると、セル、行、列、罫線をカスタマイズできます。 **Note:** コントロールには、 コントロールにはない、さまざまな基本機能と高度な機能が用意されています。 詳細については、「[Windows フォームの DataGridView コントロールと DataGrid コントロールの違いについて](../../../../docs/framework/winforms/controls/differences-between-the-windows-forms-datagridview-and-datagrid-controls.md)」を参照してください。| +|データ バインディングとナビゲーション| コンポーネント|同時実行の管理、変更通知などのサービスを提供し、フォーム上のコントロールとデータとのバインディングを単純化します。| +|| コントロール|フォーム上のデータをナビゲートしたり操作したりするためのツール バー形式のインターフェイスを実現します。| +|テキストの編集| コントロール|デザイン時に入力されたテキストを表示します。このテキストは、実行時にユーザーが編集でき、また、プログラムでも変更できます。| +|| コントロール|書式なしテキスト形式または書式付きテキスト \(RTF\) 形式で書式指定されたテキストを表示できます。| +|| コントロール|ユーザー入力の形式に制約を適用します。| +|情報の表示 \(読み取り専用\)| コントロール|ユーザーが直接編集できないテキストを表示します。| +|| コントロール|テキストを Web スタイルのリンクとして表示し、ユーザーが特定のテキストをクリックしたときにイベントを発生させます。 通常、このテキストは他のウィンドウまたは Web サイトへのリンクです。| +|| コントロール|フレーム付きの領域を使用してアプリケーションの現在の状態に関する情報を表示します。通常、親フォームの一番下に表示されます。| +|| コントロール|操作の現在の進行状況をユーザー向けに表示します。| +|Web ページの表示| コントロール|ユーザーがフォーム内で Web ページをナビゲートできるようにします。| +|一覧からの選択| コントロール|スクロール可能な項目の一覧を表示します。各項目の横にチェック ボックスが表示されます。| +|| コントロール|項目のドロップダウン リストを表示します。| +|| コントロール|ユーザーが上下の矢印ボタンを使用してスクロールできる、テキスト項目の一覧を表示します。| +|| コントロール|テキスト項目およびグラフィカル項目 \(アイコン\) の一覧を表示します。| +|| コントロール|4 つの異なるビューのうちの 1 つで項目を表示します。 ビューには、テキストだけ、テキストと小さいアイコン、テキストと大きいアイコン、および詳細ビューがあります。| +|| コントロール|ユーザーが上下の矢印ボタンを使用してスクロールできる、数値の一覧を表示します。| +|| コントロール|テキストとオプションのチェック ボックスまたはアイコンから成るノード オブジェクトの階層的なコレクションを表示します。| +|グラフィックスの表示| コントロール|ビットマップやアイコンなどのグラフィカル ファイルをフレーム内に表示します。| +|グラフィックスの格納| コントロール|イメージのリポジトリとして機能します。 コントロールとそれに含まれるイメージは、異なるアプリケーション間で再利用できます。| +|値の設定| コントロール|チェック ボックスとテキストのラベルを表示します。 一般に、オプションの設定に使用されます。| +|| コントロール|スクロール可能な項目の一覧を表示します。各項目の横にチェック ボックスが表示されます。| +|| コントロール|オンまたはオフにできるボタンを表示します。| +|| コントロール|ユーザーが目盛り上でつまみを動かして値を設定できるようにします。| +|日付の設定| コントロール|ユーザーが日付または時刻を選択できるグラフィカルなカレンダーを表示します。| +|| コントロール|ユーザーが日付の範囲を選択できるグラフィカルなカレンダーを表示します。| +|ダイアログ ボックス| コントロール|ユーザーがインターフェイス要素の色を設定できるカラー ピッカー ダイアログ ボックスを表示します。| +|| コントロール|ユーザーがフォントとその属性を設定できるダイアログ ボックスを表示します。| +|| コントロール|ユーザーがファイルを参照して選択できるダイアログ ボックスを表示します。| +|| コントロール|ユーザーがプリンターを選択してその属性を設定できるダイアログ ボックスを表示します。| +|| コントロール| コンポーネントが印刷時にどのように表示されるかを示すダイアログ ボックスを表示します。| +|| コントロール|ユーザーがフォルダーを参照、作成して最終的に選択するためのダイアログ ボックスを表示します。| +|| コントロール|ユーザーがファイルを保存できるダイアログ ボックスを表示します。| +|メニュー コントロール| コントロール|カスタム メニューを作成します。 **Note:** コントロールを置き換えるためにデザインされたものです。| +|| コントロール|カスタムのコンテキスト メニューを作成します。 **Note:** コントロールを置き換えるためにデザインされたものです。| +|コマンド| コントロール|プロセスの開始、停止、割り込み| +|| コントロール|テキストを Web スタイルのリンクとして表示し、ユーザーが特定のテキストをクリックしたときにイベントを発生させます。 通常、このテキストは他のウィンドウまたは Web サイトへのリンクです。| +|| コントロール|タスクバーのステータス通知領域に、バックグラウンドで実行中のアプリケーションを示すアイコンを表示します。| +|| コントロール|Microsoft Windows XP、Microsoft Office、Microsoft Internet Explorer、またはカスタムのルック アンド フィールに装備できるツール バーを作成します。このツール バーはテーマを適用しても適用しなくてもよく、オーバーフローと実行時の項目並べ替えをサポートしています。 **Note:** コントロールは コントロールを置き換えるためにデザインされたものです。| +|ユーザー ヘルプ| コンポーネント|コントロールのポップアップ ヘルプまたはオンライン ヘルプを提供します。| +|| コンポーネント|ユーザーがポインターをコントロール上に移動したときに、コントロールの用途についての簡単な説明を表示するポップアップ ウィンドウを表します。| +|他のコントロールのグループ化| コントロール|ラベルのないスクロール可能なフレームに、コントロールのセットをグループ化します。| +|| コントロール|ラベルの付いたスクロールできないフレームに、コントロール \(オプション ボタンなど\) のセットをグループ化します。| +|| コントロール|グループ化されたオブジェクトを効率的に整理してアクセスするためのタブ付きページを提供します。| +|| コントロール|移動可能なバーによって区切られた 2 つのパネルを表します。 **Note:** コントロールは コントロールを置き換えるためにデザインされたものです。| +|| コントロール|内容を行と列から成るグリッドに動的にレイアウトするパネルを表します。| +|| コントロール|内容を水平または垂直に動的にレイアウトするパネルを表します。| +|\[オーディオ\]| コントロール|.wav 形式のサウンド ファイルを再生します。 サウンドは非同期に読み込みまたは再生できます。| + +## 推奨されないコントロールとコンポーネント \(機能別\) + +|Function|推奨されないコントロール|推奨されるコントロール| +|--------------|------------------|-----------------| +|データの表示||| +|情報の表示 \(読み取り専用コントロール\)||| +|メニュー コントロール||| +|||| +|コマンド||| +|||| +|フォームのレイアウト||| + +## 参照 + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + [.NET Framework を使用したカスタム Windows フォーム コントロールの開発](../../../../docs/framework/winforms/controls/developing-custom-windows-forms-controls.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/windows-forms-controls-padding-autosize.md b/docs/framework/winforms/controls/windows-forms-controls-padding-autosize.md new file mode 100644 index 00000000000..5427944890e --- /dev/null +++ b/docs/framework/winforms/controls/windows-forms-controls-padding-autosize.md @@ -0,0 +1,204 @@ +--- +title: "チュートリアル : Padding、Margin、および AutoSize プロパティを使用した Windows フォーム コントロールのレイアウト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Margin.Bottom" + - "Margin.Left" + - "Margin.Top" + - "Margin.All" + - "Margin.Right" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "AutoSize プロパティ, チュートリアル" + - "レイアウト [Windows フォーム], マージンと埋め込み" + - "Margin プロパティ [Windows フォーム], チュートリアル" + - "Padding プロパティ [Windows フォーム], チュートリアル" + - "チュートリアル [Windows フォーム], レイアウト" + - "Windows フォーム, レイアウト" +ms.assetid: f8ae2a6b-db13-4630-8e25-d104091205c7 +caps.latest.revision: 28 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 28 +--- +# チュートリアル : Padding、Margin、および AutoSize プロパティを使用した Windows フォーム コントロールのレイアウト +フォーム上にコントロールを正確に配置することは、多くのアプリケーションで重要度の高い処理です。 **Windows フォーム デザイナー**には、そのためのさまざまなレイアウト ツールが用意されています。 最も重要な 3 つのプロパティは、、および です。これらは、すべての Windows フォーム コントロールに存在します。 + + プロパティは、コントロール周囲の空白領域を定義します。これによってコントロールの境界線と他のコントロールとの間で、指定した距離が保たれます。 + + プロパティはコントロールの内部の空白領域を定義します。これによって、コントロールの内容 \(たとえばその プロパティの値\) とコントロールの境界線との間で、指定した距離が保たれます。 + + コントロールの プロパティと プロパティを次の図に示します。 + + ![Windows フォーム コントロールのパディングとマージン](../../../../docs/framework/winforms/controls/media/vs-winformpadmargin.gif "VS\_WinFormPadMargin") + + プロパティを使用すると、コントロールのサイズが内容に合わせて自動的に調整されます。 コントロールは元の プロパティの値よりも小さいサイズには自動調整されず、 プロパティの値に対する領域を占めます。 + + このチュートリアルでは、以下のタスクを行います。 + +- Windows フォーム プロジェクトの作成 + +- コントロールのマージンの設定 + +- コントロールの埋め込みの設定 + +- コントロールの自動サイズ変更 + + ここでは、これらの重要なレイアウト機能が果たす役割について理解します。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +## 必須コンポーネント + このチュートリアルを完了するための要件は次のとおりです。 + +- Visual Studio がインストールされているコンピューターで、Windows フォーム アプリケーション プロジェクトを作成および実行するための十分なアクセス許可が付与されていること。 + +## プロジェクトの作成 + 最初にプロジェクトを作成し、フォームを設定します。 + +#### プロジェクトを作成するには + +1. `LayoutExample` という名前の **Windows アプリケーション** プロジェクトを作成します。 詳細については、「[How to: Create a Windows Application Project](http://msdn.microsoft.com/ja-jp/b2f93fed-c635-4705-8d0e-cf079a264efa)」を参照してください。 + +2. **Windows フォーム デザイナー**でフォームを選択します。 + +## コントロールのマージンの設定 + プロパティを使用すると、コントロール間の既定の距離を設定できます。 別のコントロールのすぐ近くまでコントロールを移動すると、両方のコントロールのマージンを示すスナップ線が表示されます。 また、移動中のコントロールは、マージンで定義された距離にスナップします。 + +#### Margin プロパティを使用してフォーム上にコントロールを配置するには + +1. **ツールボックス**から 2 つの コントロールをフォームにドラッグします。 + +2. コントロールのどちらかを選択し、もう 1 つのコントロールにほぼ接触するまで近づけます。 + + 両方のコントロールの間にスナップ線が表示されることを確認します。 この距離は、この 2 つのコントロールの 値の合計です。 移動中のコントロールは、この距離にスナップします。 詳細については、「[チュートリアル : スナップ線を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-snaplines.md)」を参照してください。 + +3. 一方のコントロールの プロパティを変更します。これを行うには **\[プロパティ\]** ウィンドウで エントリを展開し、 プロパティを 20 に設定します。 + +4. コントロールの一方を選択し、他方のコントロールに近づけます。 + + マージンの合計値を定義しているスナップ線が延長され、他方のコントロールからより遠い距離にコントロールがスナップします。 + +5. 選択したコントロールの プロパティを変更します。これを行うには **\[プロパティ\]** ウィンドウで エントリを展開し、 プロパティを 5 に設定します。 + +6. 選択したコントロールを他方のコントロールの下に移動し、スナップ線が短くなったことを確認します。 選択したコントロールを他方のコントロールの左に移動し、手順 4. で確認した値をスナップ線が維持していることを確認します。 + +7. プロパティの各要素 \(\) を異なる値に設定できます。また、 プロパティを使用してすべての要素を同じ値に設定することもできます。 + +## コントロールの埋め込みの設定 + アプリケーションに要求される正確なレイアウトを実現するために、コントロール内に子コントロールを含めることもあります。 子コントロールの境界線と親コントロールの境界線の間隔を指定するには、親コントロールの プロパティと子コントロールの プロパティを組み合わせて使用します。 プロパティは、コントロールの内容 \(たとえば、 コントロールの プロパティ\) と境界線の間隔を制御するためにも使用します。 + +#### 埋め込みを使用してフォーム上にコントロールを配置するには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +2. コントロールの プロパティの値を `true` に変更します。 + +3. プロパティを変更します。これを行うには **\[プロパティ\]** ウィンドウで エントリを展開し、 プロパティを 5 に設定します。 + + コントロールが拡大され、新しい埋め込みのための領域が確保されます。 + +4. **ツールボックス**からフォームに、 コントロールをドラッグします。 **ツールボックス**の コントロールを コントロールにドラッグします。 コントロールを コントロールの右下隅に揃えて配置します。 + + コントロールが コントロールの下側と右側の境界線に近づくと、スナップ線が表示されることを確認します。 これらのスナップ線は、 プロパティに対応します。 + +5. コントロールの プロパティを変更します。これを行うには **\[プロパティ\]** ウィンドウで エントリを展開し、 プロパティを 20 に設定します。 + +6. コントロール内の コントロールを選択し、 の中心の方向に移動します。 + + コントロールの境界線からより遠い距離でスナップ線が表示されます。 この距離は、 コントロールの プロパティと コントロールの プロパティの合計です。 + +## コントロールの自動サイズ変更 + アプリケーションによっては、デザイン時と実行時でコントロールのサイズが異なるものがあります。 たとえば、 コントロールのテキストはデータベースから取得されることがあり、その長さを事前に知ることはできません。 + + プロパティを `true` に設定すると、コントロールのサイズはその内容に合わせて自動的に調整されます。 詳細については、「[AutoSize プロパティの概要](../../../../docs/framework/winforms/controls/autosize-property-overview.md)」を参照してください。 + +#### AutoSize プロパティを使用してフォーム上にコントロールを配置するには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +2. コントロールの プロパティの値を `true` に変更します。 + +3. コントロールの プロパティを "This button has a long string for its Text property." に変更します。 + + この変更をコミットすると、 コントロールのサイズが新しいテキストに合わせて変更されます。 + +4. **ツールボックス**から別の コントロールをフォームにドラッグします。 + +5. コントロールの プロパティを "This button has a long string for its Text property." に変更します。 + + この変更をコミットすると、 コントロールのサイズは自動的に調整されず、テキストがコントロールの右端でクリップされます。 + +6. プロパティを変更します。これを行うには **\[プロパティ\]** ウィンドウで エントリを展開し、 プロパティを 5 に設定します。 + + コントロールの内部のテキストが 4 辺でクリップされます。 + +7. コントロールの プロパティを `true` に変更します。 + + コントロールのサイズが自動的に変更され、文字列全体が囲まれます。 また、テキストの周囲に埋め込みが追加され、 コントロールが上下左右に拡大されます。 + +8. **ツールボックス**からフォームに、 コントロールをドラッグします。 フォームの右下隅付近に配置してください。 + +9. コントロールの プロパティの値を `true` に変更します。 + +10. コントロールの プロパティを に設定します。 + +11. コントロールの プロパティを "This button has a long string for its Text property." に変更します。 + + この変更をコミットすると、 コントロールのサイズが左方向に調整されます。 通常、自動サイズ変更により、コントロールは プロパティ設定と反対の方向に拡大されます。 + +## AutoSize プロパティと AutoSizeMode プロパティ + 一部のコントロールは、`AutoSizeMode` プロパティをサポートしています。このプロパティにより、コントロールの自動サイズ変更動作をより細かく制御できます。 + +#### AutoSizeMode プロパティを使用するには + +1. **ツールボックス**からフォームに、 コントロールをドラッグします。 + +2. コントロールの プロパティの値を `true` に設定します。 + +3. **ツールボックス**の コントロールを コントロールにドラッグします。 + +4. コントロールを コントロールの右下隅付近に配置します。 + +5. コントロールを選択し、右下のサイズ変更ハンドルをグラブします。 コントロールを拡大または縮小します。 + + > [!NOTE] + > コントロールのサイズは自由に変更できますが、 コントロールの右下隅の位置を越えて縮小できません。 この動作は、`AutoSizeMode` プロパティの既定値である で指定されます。 + +6. コントロールの `AutoSizeMode` プロパティの値を に設定します。 + + コントロールのサイズが自動的に変更され、 コントロールが囲まれます。 コントロールのサイズは変更できません。 + +7. コントロールを コントロールの左上隅の方向にドラッグします。 + + コントロールの新しい位置に合わせて、 コントロールのサイズが変更されます。 + +## 次の手順 + Windows フォーム アプリケーションにコントロールを配置するためのレイアウト機能は、他にも数多くあります。 次のような組み合わせを試すことができます。 + +- コントロールを使用してフォームをビルドします。 詳細については、「[チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-tablelayoutpanel.md)」を参照してください。 コントロールの プロパティの値、およびその子コントロールの プロパティの値を変更してみてください。 + +- また、 コントロールを使用して同じ内容を試みます。 詳細については、「[チュートリアル : FlowLayoutPanel を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-flowlayoutpanel.md)」を参照してください。 + +- コントロール内で子コントロールのドッキングを試みます。 プロパティは、 プロパティをより一般化したものです。機能を確認するには、 コントロール内に子コントロールを配置し、その子コントロールの プロパティを に設定します。 次に、 コントロールの プロパティをさまざまな値に変更して変化を確認します。 + +## 参照 + + + + + [AutoSize プロパティの概要](../../../../docs/framework/winforms/controls/autosize-property-overview.md) + [チュートリアル : TableLayoutPanel を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-tablelayoutpanel.md) + [チュートリアル : FlowLayoutPanel を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-a-flowlayoutpanel.md) + [チュートリアル : スナップ線を使用した Windows フォーム上のコントロールの配置](../../../../docs/framework/winforms/controls/walkthrough-arranging-controls-on-windows-forms-using-snaplines.md) \ No newline at end of file diff --git a/docs/framework/winforms/controls/windows-forms-controls-used-to-list-options.md b/docs/framework/winforms/controls/windows-forms-controls-used-to-list-options.md new file mode 100644 index 00000000000..7e25a006e26 --- /dev/null +++ b/docs/framework/winforms/controls/windows-forms-controls-used-to-list-options.md @@ -0,0 +1,67 @@ +--- +title: "オプションのリストを表示するための Windows フォーム コントロール | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "オプションの一覧 (Windows フォームの)" + - "Windows フォーム コントロール, 一覧表示 (オプションを)" +ms.assetid: 5bc064c7-bc1f-4b62-8f4b-252f864b118e +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# オプションのリストを表示するための Windows フォーム コントロール +オプションのリストをユーザーが選択できるようにするには、Windows フォームにさまざまなコントロールを追加します。 ユーザーの入力をどれだけ制限するかに応じて、 コントロール、 コントロール、または コントロールを追加できます。 どのコントロールが最適であるかを判断するには、以下のリンクを使用してください。 + +## このセクションの内容 + [ListBox の代わりに Windows フォーム ComboBox を使用する場合](../../../../docs/framework/winforms/controls/when-to-use-a-windows-forms-combobox-instead-of-a-listbox.md) + Windows フォームの制限とニーズに応じて適切なリスト ベース コントロールを推奨します。 + + [方法 : Windows フォーム ComboBox、ListBox、または CheckedListBox コントロールの特定の項目にアクセスする](../../../../docs/framework/winforms/controls/access-specific-items-in-a-wf-combobox-listbox-or-checkedlistbox.md) + リスト内のどの項目が指定された位置に表示されるかをプログラミングによって判断する方法について説明します。 + + [方法 : Windows フォームの ComboBox、ListBox、または CheckedListBox コントロールに項目を追加または削除する](../../../../docs/framework/winforms/controls/add-and-remove-items-from-a-wf-combobox.md) + コントロールの項目のリスト内の項目を追加または削除する方法について説明します。 + + [方法 : Windows フォーム ComboBox、ListBox、または CheckedListBox コントロールのルックアップ テーブルを作成する](../../../../docs/framework/winforms/controls/create-a-lookup-table-for-a-wf-combobox-listbox.md) + フォーム データを使いやすい形式で表示および保持する方法について説明します。 + + [方法 : Windows フォームの ComboBox または ListBox コントロールをデータにバインドする ](../../../../docs/framework/winforms/controls/how-to-bind-a-windows-forms-combobox-or-listbox-control-to-data.md) + リスト ベースのコントロールをデータ ソースに連結する方法について説明します。 + + [方法 : Windows フォーム ComboBox、ListBox、または CheckedListBox コントロールを並べ替える](../../../../docs/framework/winforms/controls/sort-the-contents-of-a-wf-combobox-listbox-or-checkedlistbox-control.md) + データ ソースにあるリスト データを並べ替える方法について説明します。 + +## 関連項目 + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [CheckedListBox コントロールの概要](../../../../docs/framework/winforms/controls/checkedlistbox-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [ComboBox コントロールの概要](../../../../docs/framework/winforms/controls/combobox-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [ListBox コントロールの概要](../../../../docs/framework/winforms/controls/listbox-control-overview-windows-forms.md) + このコントロールの用途、主な機能、およびプロパティについて説明します。 + + [Windows フォームで使用するコントロール](../../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md) + 使用方法に関する情報へのリンクを含む、Windows フォーム コントロールの完全なリストを提供します。 \ No newline at end of file diff --git a/docs/framework/winforms/creating-a-new-windows-form.md b/docs/framework/winforms/creating-a-new-windows-form.md new file mode 100644 index 00000000000..ec1cb54daca --- /dev/null +++ b/docs/framework/winforms/creating-a-new-windows-form.md @@ -0,0 +1,52 @@ +--- +title: "新しい Windows フォームの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Windows フォーム, 作成 (新しいフォームを)" + - "Windows フォーム, はじめに" +ms.assetid: c725559c-803e-4725-80fa-96aba93de29a +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 新しい Windows フォームの作成 +このトピックでは、初めての Windows フォーム アプリケーションを作成する方法について説明したトピックへのリンクを示します。 また、このセクションのトピックでは、Windows フォーム アプリケーションを作成する際に理解しておくべき基本的な用語とガイドラインもいくつか紹介します。 . Windows フォーム アプリケーションとそこで使用できるコントロール、イベントとイベント処理、ユーザー入力の処理方法の詳細については、関連トピックの一覧を参照してください。 + +## このセクションの内容 + [Windows フォームの座標](../../../docs/framework/winforms/windows-forms-coordinates.md) + クライアント座標と画面座標について説明します。 + + [方法 : コマンド ラインから Windows フォーム アプリケーションを作成する](../../../docs/framework/winforms/how-to-create-a-windows-forms-application-from-the-command-line.md) + 基本的な Windows フォームを作成し、コマンド ラインからコンパイルする方法について説明します。 + +## 関連項目 + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + このクラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [ユーザーの入力の処理](../../../docs/framework/winforms/controls/handling-user-input.md) + Windows フォーム アプリケーションにおけるユーザー入力とその処理方法について説明したトピックへのリンクを示します。 + + [Windows フォーム内でのイベント ハンドラーの作成](../../../docs/framework/winforms/creating-event-handlers-in-windows-forms.md) + Windows フォーム アプリケーションでイベントを処理する方法について説明したトピックへのリンクを示します。 + + [Windows フォームの表示形式の変更](../../../docs/framework/winforms/changing-the-appearance-of-windows-forms.md) + Windows フォーム アプリケーションの外観を変更する方法について説明したトピックへのリンクを示します。 + + [Windows フォーム コントロールの機能別一覧](../../../docs/framework/winforms/controls/windows-forms-controls-by-function.md) + Windows フォーム アプリケーションで使用できるコントロールについて説明したトピックへのリンクを示します。 \ No newline at end of file diff --git a/docs/framework/winforms/creating-event-handlers-in-windows-forms.md b/docs/framework/winforms/creating-event-handlers-in-windows-forms.md new file mode 100644 index 00000000000..ebb19f20355 --- /dev/null +++ b/docs/framework/winforms/creating-event-handlers-in-windows-forms.md @@ -0,0 +1,54 @@ +--- +title: "Windows フォーム内でのイベント ハンドラーの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "イベント ハンドラー [Windows フォーム]" + - "イベント処理 [Windows フォーム]" + - "イベント [Windows フォーム], イベント ハンドラー" + - "Windows フォーム コントロール, イベント処理" + - "Windows フォーム, イベント処理" +ms.assetid: 6514e530-c6b8-489c-a8d2-eda7b7072701 +caps.latest.revision: 22 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 22 +--- +# Windows フォーム内でのイベント ハンドラーの作成 +イベント ハンドラーは、ユーザーがボタンをクリックする、またはメッセージ キューがメッセージを受信するなどのイベントが発生したときに実行するアクションを決定する、コード内の手順です。 イベントが発生すると、そのイベントを受信した一つまたは複数のイベント ハンドラーが実行されます。 イベントは複数のハンドラーに割り当てられ、特定のイベントを処理するメソッドは動的に変更できます。 イベント ハンドラーを作成するには、Windows フォーム デザイナーを使用することもできます。 + +## このセクションの内容 + [イベントの概要](../../../docs/framework/winforms/events-overview-windows-forms.md) + イベント モデルおよびデリゲートの役割を説明します。 + + [イベント ハンドラーの概要](../../../docs/framework/winforms/event-handlers-overview-windows-forms.md) + イベントを処理する方法について説明します。 + + [方法 : Windows フォームで実行時にイベント ハンドラーを作成する](../../../docs/framework/winforms/how-to-create-event-handlers-at-run-time-for-windows-forms.md) + システム イベントおよびユーザー イベントへの動的な応答の手順を説明します。 + + [方法 : Windows フォームの 1 つのイベント ハンドラーに複数のイベントを関連付ける](../../../docs/framework/winforms/how-to-connect-multiple-events-to-a-single-event-handler-in-windows-forms.md) + イベントを通じて、複数のコントロールに同じ機能を割り当てる手順について説明します。 + + [Windows フォームのイベントの順序](../../../docs/framework/winforms/order-of-events-in-windows-forms.md) + Windows フォーム コントロールで発生するイベントの順序について説明します。 + + [方法 : デザイナーを使用してイベント ハンドラーを作成する](http://msdn.microsoft.com/ja-jp/8461e9b8-14e8-406f-936e-3726732b23d2) + Windows フォーム デザイナーを使用してイベント ハンドラーを作成する方法について説明します。 + +## 関連項目 + [イベント](../../../docs/standard/events/index.md) + [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] を使用したイベントの処理および発生に関するトピックへのリンクを提供します。 + + [Troubleshooting Inherited Event Handlers in Visual Basic](../Topic/Troubleshooting%20Inherited%20Event%20Handlers%20in%20Visual%20Basic.md) + 継承されたコンポーネントでイベント ハンドラーに生じる一般的な問題を一覧表示します。 \ No newline at end of file diff --git a/docs/framework/winforms/data-binding-and-windows-forms.md b/docs/framework/winforms/data-binding-and-windows-forms.md new file mode 100644 index 00000000000..7c600f89773 --- /dev/null +++ b/docs/framework/winforms/data-binding-and-windows-forms.md @@ -0,0 +1,70 @@ +--- +title: "データ連結と Windows フォーム | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "バインド コントロール, Windows フォーム" + - "データ [Windows フォーム], 複合データ バインド" + - "データ [Windows フォーム], データ バインド" + - "データ [Windows フォーム], 単純データ バインディング" + - "データ バインド, Windows フォーム" + - "データ バインド コントロール, Windows フォーム" + - "ルックアップ テーブル, データ バインド" + - "マスター/詳細リスト" + - "レポート, Windows フォーム" + - "Windows フォーム コントロール, データ バインド" +ms.assetid: 419aac5e-819b-4aad-88b0-73a2f8c0bd27 +caps.latest.revision: 20 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 20 +--- +# データ連結と Windows フォーム +Windows フォームでは、従来のデータ ソースだけでなく、データを含むほぼすべての構造にバインドできます。 実行時に計算する値、ファイルから読み取る値、または他のコントロールの値から派生する値の配列にバインドできます。 + + さらに、任意のコントロールのプロパティをデータ ソースにバインドできます。 従来のデータ バインディングでは、通常は コントロールの プロパティなどの表示プロパティをデータ ソースにバインドします。 [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] を使用すると、バインディングによってその他のプロパティを設定することもできます。 バインディングを使用して、次のタスクを実行できます。 + +- イメージ コントロールのグラフィックの設定。 + +- 1 つ以上のコントロールの背景色の設定。 + +- コントロール サイズの設定。 + + 基本的には、データ バインディングは、フォーム上の任意のコントロールの実行時にアクセス可能なプロパティを自動的に設定する方法です。 + +## データ バインディングの種類 + Windows フォームでは、単純バインディングと複合バインディングの 2 種類のデータ バインディングを利用できます。 それぞれに異なる利点があります。 + +|データ バインディングの種類|説明| +|--------------------|--------| +|単純データ バインディング|データセット テーブル内の列の値など、1 つのデータ要素にバインドするコントロールの機能。 これは、 コントロールや コントロールなどのコントロールで一般的に使用される種類のバインディングです。これらのコントロールでは通常、1 つの値のみが表示されます。 実際には、コントロールのどのプロパティもデータベース内のフィールドにバインドできます。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] に、この機能の広範なサポートがあります。

詳細については、次のトピックを参照してください。

- [データ連結に関連するインターフェイス](../../../docs/framework/winforms/interfaces-related-to-data-binding.md)
- [方法 : Windows フォームでデータ間を移動する](../../../docs/framework/winforms/how-to-navigate-data-in-windows-forms.md)
- [方法 : Windows フォームに単純バインド コントロールを作成する](../../../docs/framework/winforms/how-to-create-a-simple-bound-control-on-a-windows-form.md)| +|複合データ バインディング|複数のデータ要素、一般的にはデータベース内の複数のレコードにバインドするコントロールの機能。 複合バインディングは、リストベース バインディングとも呼ばれます。 複合バインディングをサポートするコントロールの例には、、および の各コントロールがあります。 複合データ バインディングの例については、「[方法 : Windows フォームの ComboBox または ListBox コントロールをデータにバインドする ](../../../docs/framework/winforms/controls/how-to-bind-a-windows-forms-combobox-or-listbox-control-to-data.md)」を参照してください。| + +## BindingSource コンポーネント + データ バインディングを単純化するために、Windows フォームでは、データ ソースを コンポーネントにバインドしてから、コントロールを にバインドできます。 は、単純バインディングまたは複合バインディングのシナリオで使用できます。 いずれの場合も、 はデータ ソースとバインドされたコントロールの間の媒介として機能し、変更通知、通貨管理などのサービスを提供します。 + +## データ バインディングを使用する一般的なシナリオ + ほぼすべての商用アプリケーションで、通常はデータ バインディングによってある種類のデータ ソースから別の種類のデータ ソースに読み取られた情報を使用します。 次のリストに、データの表示および操作の方法としてデータ バインディングを使用する最も一般的なシナリオをいくつか示します。 + +|シナリオ|説明| +|----------|--------| +|レポート|レポートは、印刷された文書でデータを表示および集計する柔軟な方法を提供します。 データ ソースの選択したコンテンツを画面またはプリンターに出力するレポートを作成することは、非常に一般的に行われます。 一般的なレポートには、リスト、請求書、および概要などがあります。 通常、項目はリストの列として並べられ、サブ項目が各リスト項目に分類されますが、データに最も適したレイアウトをユーザーが選択する必要があります。| +|データ エントリ|大量の関連データを入力したり、ユーザーに情報の入力を求めたりする場合は、データ エントリ フォームを使用する方法が一般的です。 ユーザーは、テキスト ボックス、オプション ボタン、ドロップダウン リスト、およびチェック ボックスを使用して、情報を入力したり、オプションを選択したりできます。 情報は送信され、入力された情報に基づく構造を持つデータベースに格納されます。| +|マスター\/詳細リレーションシップ|マスター\/詳細アプリケーションは、関連データを表現するための形式の 1 つです。 具体的には、2 つのデータ テーブルと、それらを結合する関係があります。典型的なビジネスの例では、"顧客" テーブルと "注文" テーブルがあり、それらの間には、顧客とそれに対応する注文を結合する関係があります。 Windows フォームの 2 つの コントロールを持つマスター\/詳細アプリケーションの作成の詳細については、「[方法 : Windows フォームの 2 つの DataGridView コントロールを使用してマスター\/詳細形式のフォームを作成する](../../../docs/framework/winforms/controls/create-a-master-detail-form-using-two-datagrids.md)」を参照してください。| +|ルックアップ テーブル|別の一般的なデータ表示\/操作シナリオに、テーブル ルックアップがあります。 多くの場合、より大きなデータ表示の一部として、 コントロールを使用してデータを表示および操作します。 重要な点は、 コントロールで表示されるデータは、データベースに書き込まれるデータとは異なることです。 たとえば、食料品店から入手できる項目を表示する コントロールがあり、製品の名前 \(パン、牛乳、卵\) を表示するとします。 しかし、データベース内での情報の取得を容易にしたり、データベースを正規化したりするには、ある注文の特定の項目に関する情報を項目番号 \(\#501、\#603 など\) で格納する必要がある場合があります。 そのため、フォームの コントロールにある食料品項目の "わかりやすい名前" と、注文に表示される該当する項目番号との間には暗黙的なつながりがあります。 これがテーブル ルックアップの本質です。 詳細については、「[方法 : Windows フォーム BindingSource コンポーネントを使用してルックアップ テーブルを作成する](../../../docs/framework/winforms/controls/how-to-create-a-lookup-table-with-the-windows-forms-bindingsource-component.md)」を参照してください。| + +## 参照 + + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) + [方法 : データ ソースに Windows フォーム DataGrid コントロールをバインドする](../../../docs/framework/winforms/controls/how-to-bind-the-windows-forms-datagrid-control-to-a-data-source.md) + [BindingSource コンポーネント](../../../docs/framework/winforms/controls/bindingsource-component.md) \ No newline at end of file diff --git a/docs/framework/winforms/data-sources-supported-by-windows-forms.md b/docs/framework/winforms/data-sources-supported-by-windows-forms.md new file mode 100644 index 00000000000..8b8581af9d4 --- /dev/null +++ b/docs/framework/winforms/data-sources-supported-by-windows-forms.md @@ -0,0 +1,73 @@ +--- +title: "Windows フォームがサポートするデータ ソース | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "配列 [Windows フォーム]" + - "コレクション [Windows フォーム], バインド" + - "データ [Windows フォーム], データ プロバイダー" + - "データ プロバイダー [Windows フォーム]" + - "データ ソース [Windows フォーム]" + - "DataColumn クラス" + - "DataSet クラス, バインディングと Windows フォーム" + - "DataTable クラス, バインディングと Windows フォーム" + - "DataView クラス, バインディングと Windows フォーム" + - "DataViewManager クラス, バインディングと Windows フォーム" + - "OLE DB プロバイダー, Windows フォーム" + - "Windows フォーム, データ バインド" + - "Windows フォーム, ソース データ" +ms.assetid: 3d2c43f6-462b-4d35-9c86-13e9afe012e1 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# Windows フォームがサポートするデータ ソース +従来、データ バインディングは、データベースに格納されたデータをアプリケーション内で利用するために使用されてきました。 Windows フォームのデータ バインディングでは、データベースのデータだけでなく、配列やコレクションなど、一定の条件を満たす他の構造のデータにもアクセスできます。 + +## バインドできる構造 + Windows フォームでは、シンプル オブジェクトに対するバインド \(単純バインディング\) から、ADO.NET データ テーブルなどの複雑なリストに対するバインド \(複合バインディング\) まで、さまざまな構造にバインドできます。 単純バインディングでは、Windows フォームは、シンプル オブジェクトのパブリック プロパティに対するバインディングをサポートしています。 Windows フォームのリストベース バインディングでは、一般に、オブジェクトが インターフェイスまたは インターフェイスをサポートしていることが必要です。 加えて、 コンポーネントを通じてバインドする場合には、 インターフェイスをサポートするオブジェクトに対してバインドできます。 データ バインディングに関連するインターフェイスの詳細については、「[データ連結に関連するインターフェイス](../../../docs/framework/winforms/interfaces-related-to-data-binding.md)」を参照してください。 + + 次に示すのは、Windows フォームでバインドできる構造の一覧です。 + + + は、Windows フォームのデータ ソースとしては最も一般的で、データ ソースと Windows フォーム コントロールの間のプロキシの役割を果たします。 の使用パターンとしては、コントロールを にバインドし、 をデータ ソース \(たとえば、ADO.NET データ テーブルやビジネス オブジェクト\) にバインドするという形が一般的です。 は、データ バインディングのサポートを実現し、そのレベルを向上させるサービスを備えています。 たとえば、Windows フォームのリストベースのコントロール \( など\) は、 データ ソースへのバインディングを直接的にはサポートしていませんが、 を通じてバインドすることにより、それが可能になります。 この場合、 はデータ ソースを に変換します。 + + シンプル オブジェクト + Windows フォームは、コントロールのプロパティをオブジェクト インスタンスのパブリック プロパティにバインドする、 型を使用したデータ バインディングをサポートします。 また、Windows フォームは、 を使用したときには、リストベースのコントロール \( など\) からオブジェクト インスタンスへのバインディングをサポートします。 + + 配列またはコレクション + リストをデータ ソースとして使用するためには、 インターフェイスを実装する必要があります。その一例は、 クラスのインスタンスである配列です。 配列の詳細については、「[How to: Create an Array of Objects \(Visual Basic\)](http://msdn.microsoft.com/ja-jp/6b64e069-0387-400c-9081-3bdc581020c3)」を参照してください。 + + 一般に、データ バインディング用のオブジェクトのリストを作成するときは、 を使用する必要があります。 インターフェイスのジェネリック バージョンです。 インターフェイスは、 インターフェイスを拡張したもので、双方向のデータ バインディングに必要なプロパティ、メソッド、およびイベントが追加されています。 + + + Windows フォーム コントロールは、 コンポーネントを通じてバインドする場合には、 インターフェイスのみをサポートするデータ ソースにバインドできます。 + + [!INCLUDE[vstecado](../../../includes/vstecado-md.md)] データ オブジェクト + [!INCLUDE[vstecado](../../../includes/vstecado-md.md)] には、バインディングに適したデータ構造がいくつか用意されています。 各データ構造は、洗練の度合いと複雑さにおいてそれぞれ異なります。 + +- . 1 つのテーブルは複数の列で構成されるという点で、 の基本的なビルド ブロックです。 各 オブジェクトには プロパティがあります。このプロパティは、列に保持されるデータの種類 \(自動車を表すテーブルの場合は自動車の型など\) を決定します。 データ テーブル内の列に、コントロール \( コントロールの プロパティなど\) を単純バインドできます。 + +- . は、行と列で構成される、[!INCLUDE[vstecado](../../../includes/vstecado-md.md)] のテーブルの表現です。 データ テーブルは、 という 2 つのコレクションを持ちます。前者は、当該のテーブルのデータの列を表し、そのテーブルに入力できるデータの種類は最終的にはこれにより決まります。後者は、当該のテーブルの行を表します。 データ テーブルに含まれる情報に対して、コントロールを複合バインドできます \(たとえば、 コントロールからデータ テーブルに対するバインドなど\)。 ただし、 にバインドすると、実際にはテーブルの既定のビューにバインドされます。 + +- . は、1 つのデータ テーブルのカスタマイズされたビューであり、フィルター処理や並べ替えを行うことができます。 データ ビューは、複合連結コントロールで使用するデータの "スナップショット" です。 データ ビュー内のデータには単純バインドまたは複合バインドできますが、バインドしているのはクリーンな最新の状態のデータ ソースではなく、データの固定された "画像" であることに注意してください。 + +- . は、データベース内のデータのテーブル、リレーションシップ、および制約のコレクションです。 データセット内のデータには単純バインドまたは複合バインドできますが、バインドしているのは の既定の \(次の項目を参照\) に対してであることに注意してください。 + +- . は、 全体のカスタマイズされたビューです。 に似ていますが、リレーションシップが含まれています。 コレクションを使用すると、指定したテーブルに対して に設定されているビューに、既定のフィルターや並べ替えオプションを設定できます。 + +## 参照 + [Windows フォーム データ バインドの変更通知](../../../docs/framework/winforms/change-notification-in-windows-forms-data-binding.md) + [データ連結と Windows フォーム](../../../docs/framework/winforms/data-binding-and-windows-forms.md) + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) \ No newline at end of file diff --git a/docs/framework/winforms/dialog-boxes-in-windows-forms.md b/docs/framework/winforms/dialog-boxes-in-windows-forms.md new file mode 100644 index 00000000000..4a7fb790e32 --- /dev/null +++ b/docs/framework/winforms/dialog-boxes-in-windows-forms.md @@ -0,0 +1,56 @@ +--- +title: "Windows フォームのダイアログ ボックス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ダイアログ ボックス, Windows フォーム" + - "ダイアログ, 使用 (Windows フォームで)" + - "Windows フォームのダイアログ ボックス" +ms.assetid: d43d022b-451b-490d-9386-dc79d98fbf8a +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# Windows フォームのダイアログ ボックス +ダイアログ ボックスは、ユーザーとのやり取りおよび情報の取得のために使用します。 簡単に言えば、ダイアログ ボックスとは 列挙値のプロパティが `FixedDialog` に設定されたフォームのことです。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] の Windows フォーム デザイナーを使用して、独自のカスタム ダイアログ ボックスを作成できます。 `Label`、`Textbox`、および `Button` などのコントロールを追加し、ダイアログ ボックスを特定のニーズに合わせてカスタマイズできます。 また、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] には \[**ファイルを開く**\] やメッセージ ボックスなどの定義済みダイアログ ボックスも用意されています。アプリケーションを開発するときに、これらの定義済みダイアログ ボックスを利用できます。 詳細については、「[ダイアログ ボックス コントロールおよびコンポーネント](../../../docs/framework/winforms/controls/dialog-box-controls-and-components-windows-forms.md)」を参照してください。 + +## このセクションの内容 + [方法 : Windows フォームのダイアログ ボックスを表示する](../../../docs/framework/winforms/how-to-display-dialog-boxes-for-windows-forms.md) + ダイアログ ボックスを表示する手順を示します。 + +- [方法 : 複数のプロパティを使用してダイアログ ボックス情報を個別に取得する](http://msdn.microsoft.com/library/56taefba\(v=vs.110\)) + +- [方法 : ダイアログ ボックスの親フォームから情報を取得する](http://msdn.microsoft.com/library/k70t19bb%20\(v=vs.110\)) + +- [ダイアログ ボックスへのユーザー入力](http://msdn.microsoft.com/library/1s9ws53w%20\(v=vs.110\)) + +- [方法 : ダイアログ ボックスの結果を取得する](http://msdn.microsoft.com/library/40x40td1%20\(v=vs.110\)) + +- [チュートリアル : オブジェクトによるダイアログ ボックス情報の一括取得](http://msdn.microsoft.com/library/cakx2hdw\(v=vs.110\)) + +- [方法 : ダイアログ ボックスを閉じて、ユーザー入力を保持する](http://msdn.microsoft.com/library/65ad5907%20\(v=vs.110\)) + +- [方法 : デザイン時にダイアログ ボックスを作成する](http://msdn.microsoft.com/library/55cz5x2c\(v=vs.110\)) + +- [方法: メッセージ ボックスを表示する](http://msdn.microsoft.com/library/3tt9e94f%20\(v=vs.110\)) + +## 関連項目 + [ダイアログ ボックス コントロールおよびコンポーネント](../../../docs/framework/winforms/controls/dialog-box-controls-and-components-windows-forms.md) + 定義済みダイアログ ボックス コントロールの一覧を示します。 + + [Windows フォームの表示形式の変更](../../../docs/framework/winforms/changing-the-appearance-of-windows-forms.md) + Windows フォーム アプリケーションの外観を変更する方法について説明したトピックへのリンクを示します。 + + [TabControl コントロールの概要](../../../docs/framework/winforms/controls/tabcontrol-control-overview-windows-forms.md) + ダイアログ ボックスにタブ コントロールを組み込む方法について説明します。 \ No newline at end of file diff --git a/docs/framework/winforms/drag-and-drop-functionality-in-windows-forms.md b/docs/framework/winforms/drag-and-drop-functionality-in-windows-forms.md new file mode 100644 index 00000000000..0c1f525b708 --- /dev/null +++ b/docs/framework/winforms/drag-and-drop-functionality-in-windows-forms.md @@ -0,0 +1,56 @@ +--- +title: "Windows フォームにおけるドラッグ アンド ドロップ機能 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ドラッグ アンド ドロップ, Windows フォーム" + - "Windows フォーム, ドラッグ アンド ドロップ" +ms.assetid: 65cd2c03-8782-474e-b958-cbe43eeb902c +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# Windows フォームにおけるドラッグ アンド ドロップ機能 +Windows フォームには、ドラッグ アンド ドロップの動作を実装する一連のメソッド、イベント、およびクラスが含まれています。 このトピックでは、Windows フォームでのドラッグ アンド ドロップのサポートの概要について説明します。 「[ドラッグ アンド ドロップ操作とクリップボードのサポート](http://msdn.microsoft.com/library/fe5ebfwe\(v=vs.110\))」も参照してください。 + +## ドラッグ アンド ドロップ操作の実行 + ドラッグ アンド ドロップ操作を実行するには、 クラスの メソッドを使用します。 ドラッグ アンド ドロップ操作の実行方法の詳細については、「」を参照してください。 ドラッグ アンド ドロップ操作が開始される前に、マウス ポインターがドラッグされる四角形を取得するには、 クラスの プロパティを使用します。 + +## ドラッグ アンド ドロップ操作に関連するイベント + ドラッグ アンド ドロップ操作のイベントには、ドラッグ アンド ドロップ操作の現在のターゲットで発生するイベントと、ドラッグ アンド ドロップ操作のソースで発生するイベントの 2 つのカテゴリがあります。 + +### 現在のターゲットでのイベント + 次の表は、ドラッグ アンド ドロップ操作の現在のターゲットで発生するイベントを示します。 + +|マウス イベント|説明| +|--------------|--------| +||このイベントは、オブジェクトがコントロールの境界内にドラッグされると発生します。 このイベントのハンドラーは、型 の引数を受け取ります。| +||このイベントは、マウス ポインターがコントロールの境界内にある間にオブジェクトがドラッグされるときに発生します。 このイベントのハンドラーは、型 の引数を受け取ります。| +||このイベントは、ドラッグ アンド ドロップ操作が完了したときに発生します。 このイベントのハンドラーは、型 の引数を受け取ります。| +||このイベントは、オブジェクトがコントロールの境界外にドラッグされたときに発生します。 このイベントのハンドラーは、型 の引数を受け取ります。| + + クラスは、マウスのポインターの場所、マウス ボタンとキーボードの修飾子キーの現在の状態、ドラッグされているデータ、およびドラッグ イベントのソースによって許可される操作と操作に対するターゲットのドロップの効果を指定する の値を提供します。 + +### ソースのイベント + 次の表は、ドラッグ アンド ドロップ操作のソースで発生するイベントを示します。 + +|マウス イベント|説明| +|--------------|--------| +||このイベントは、ドラッグ操作中に発生します。 マウス ポインターを変更するなど、ドラッグ アンド ドロップ操作が実行されていることを示す視覚上の手掛かりをユーザーに示す機会を提供します。 このイベントのハンドラーは、型 の引数を受け取ります。| +||このイベントは、ドラッグ アンド ドロップ操作中に発生し、ドラッグ ソースがドラッグ アンド ドロップ操作をキャンセルする必要があるかどうかを決定できるようにします。 このイベントのハンドラーは、型 の引数を受け取ります。| + + クラスは、マウス ボタンとキーボードの修飾子キーの現在の状態、ESC キーを押したかどうかを指定する値、およびドラッグ アンド ドロップ操作を続行するかどうかを指定するために設定できる の値を提供します。 + +## 参照 + [Windows フォーム アプリケーションにおけるマウス入力](../../../docs/framework/winforms/mouse-input-in-a-windows-forms-application.md) \ No newline at end of file diff --git a/docs/framework/winforms/ensure-the-selected-row-in-a-child-table-correct.md b/docs/framework/winforms/ensure-the-selected-row-in-a-child-table-correct.md new file mode 100644 index 00000000000..bc892fb7b9f --- /dev/null +++ b/docs/framework/winforms/ensure-the-selected-row-in-a-child-table-correct.md @@ -0,0 +1,95 @@ +--- +title: "方法 : 子テーブルの選択行が現在位置を保持することを保証する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "キャッシュ [.NET Framework], 子の位置" + - "子の位置" + - "子テーブルの行の選択" + - "現在の子の位置" + - "データ バインディング [.NET Framework], 行の選択" + - "マスター/詳細ビュー [Windows フォーム]" + - "マスター/詳細ビュー" + - "親/子ビュー [Windows フォーム]" + - "リセット (子の位置を)" + - "行位置 [Windows フォーム]" +ms.assetid: c5fa2562-43a4-46fa-a604-52d8526a87bd +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : 子テーブルの選択行が現在位置を保持することを保証する +多くの場合、Windows フォームでデータ バインディングを処理するときは、いわゆる親\/子ビューまたはマスター\/詳細ビューにデータを表示します。 これは、同一ソースのデータが、2 つのコントロールに表示されるデータ バインディング シナリオを示します。 片方のコントロールで選択を変更すると、他方のコントロールに表示されるデータが変化します。 たとえば、第 1 のコントロールに顧客リストが含まれ、第 2 のコントロールに、第 1 のコントロールで選択された顧客に関連する注文リストが含まれます。 + + .NET Framework Version 2.0 以降、親\/子ビューにデータを表示する場合は、子テーブルで現在選択されている行が、親テーブルの先頭行にリセットされないようにするために、追加の手順を実行する必要があります。 そのためには、子テーブルの位置をキャッシュし、親テーブルが変更された後で位置をリセットする必要があります。 通常、子テーブルのリセットは、親テーブルの行のフィールドが初めて変更されたときに発生します。 + +### 子テーブルの現在位置をキャッシュするには + +1. 子リストの位置を格納する整数変数と、子の位置をキャッシュするかどうかを示すブール変数を宣言します。 + + [!code-csharp[System.Windows.Forms.CurrencyManagerReset#4](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.CurrencyManagerReset/CS/Form1.cs#4)] + [!code-vb[System.Windows.Forms.CurrencyManagerReset#4](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.CurrencyManagerReset/VB/Form1.vb#4)] + +2. バインディングの イベントを処理し、 をチェックします。 + +3. の現在位置をチェックします。 それがリストの最初のエントリ \(通常は 0\) よりも大きい場合は、変数に保存します。 + + [!code-csharp[System.Windows.Forms.CurrencyManagerReset#2](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.CurrencyManagerReset/CS/Form1.cs#2)] + [!code-vb[System.Windows.Forms.CurrencyManagerReset#2](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.CurrencyManagerReset/VB/Form1.vb#2)] + +4. 親リストの親現在位置マネージャーの イベントを処理します。 ハンドラーで、キャッシュ シナリオではないことを示すブール値を設定します。 が発生した場合、親の変更はリストの位置の変更であり、項目値の変更ではありません。 + + [!code-csharp[System.Windows.Forms.CurrencyManagerReset#5](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.CurrencyManagerReset/CS/Form1.cs#5)] + [!code-vb[System.Windows.Forms.CurrencyManagerReset#5](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.CurrencyManagerReset/VB/Form1.vb#5)] + +### 子の位置をリセットするには + +1. 子のバインディングの イベントを処理します。 + +2. 子テーブルの位置を、前の手順で保存したキャッシュ位置にリセットします。 + + [!code-csharp[System.Windows.Forms.CurrencyManagerReset#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.CurrencyManagerReset/CS/Form1.cs#3)] + [!code-vb[System.Windows.Forms.CurrencyManagerReset#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.CurrencyManagerReset/VB/Form1.vb#3)] + +## 使用例 + 子テーブルの の現在位置を保存し、親テーブルの編集が完了した後でその位置をリセットする方法を次の例に示します。 この例には、 コンポーネントを使用して 内の 2 つのテーブルにバインドされた 2 つの コントロールが含まれます。 この 2 つのテーブルの間にリレーションシップが確立され、そのリレーションシップが に追加されます。 子テーブル内の位置は、デモを目的として、3 行目に初期設定されています。 + + [!code-csharp[System.Windows.Forms.CurrencyManagerReset#1](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.CurrencyManagerReset/CS/Form1.cs#1)] + [!code-vb[System.Windows.Forms.CurrencyManagerReset#1](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.CurrencyManagerReset/VB/Form1.vb#1)] + + このコード例をテストするには、次の手順を実行します。 + +1. 例を実行します。 + +2. \[**Cache and reset position**\] \(位置をキャッシュしてリセットする\) チェック ボックスがオンであることを確認します。 + +3. \[**Clear parent field**\] \(親フィールドのクリア\) ボタンをクリックして、親テーブルのフィールドを変更します。 子テーブル内の選択行が変更されないことに注目してください。 + +4. 例をいったん閉じてから、例を再実行します。 リセット動作は親行が初めて変更された場合のみ発生するので、この操作を実行する必要があります。 + +5. \[**Cache and reset position**\] \(位置をキャッシュしてリセットする\) チェック ボックスをオフにします。 + +6. \[**Clear parent field**\] \(親フィールドのクリア\) ボタンをクリックします。 子テーブル内の選択行が 1 行目に変更されることに注目してください。 + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- System、System.Data、System.Drawing、System.Windows.Forms、および System.XML の各アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法の詳細は、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + [方法 : 複数のコントロールを 1 つのデータ ソースにバインドして同期状態を保つ](../../../docs/framework/winforms/multiple-controls-bound-to-data-source-synchronized.md) + [BindingSource コンポーネント](../../../docs/framework/winforms/controls/bindingsource-component.md) + [データ連結と Windows フォーム](../../../docs/framework/winforms/data-binding-and-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/event-handlers-overview-windows-forms.md b/docs/framework/winforms/event-handlers-overview-windows-forms.md new file mode 100644 index 00000000000..e86e6f24c5a --- /dev/null +++ b/docs/framework/winforms/event-handlers-overview-windows-forms.md @@ -0,0 +1,60 @@ +--- +title: "イベント ハンドラーの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "イベント ハンドラー, イベント ハンドラーの概要" + - "イベント処理, Windows フォーム" + - "Windows フォーム, イベント処理" +ms.assetid: 228112e1-1711-42ee-8ffa-ff3555bffe66 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# イベント ハンドラーの概要 (Windows フォーム) +イベント ハンドラーは、イベントに関連付けられたメソッドです。 イベントが発生すると、イベント ハンドラーのコードが実行されます。 各イベント ハンドラーには、イベントを適切に処理するためのパラメーターが 2 つ用意されています。 コントロールの イベントのイベント ハンドラーの例を次に示します。 + +```vb +Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click + +End Sub + +``` + +```csharp +private void button1_Click(object sender, System.EventArgs e) +{ + +} + +``` + +```cpp +private: + void button1_Click(System::Object ^ sender, + System::EventArgs ^ e) + { + + } +``` + + 最初のパラメーターは`sender`イベントを発生させたオブジェクトへの参照を提供します。 2 番目のパラメーター `e`では、処理されるイベントに応じた特定のオブジェクトを渡します。 このオブジェクトのプロパティ \(場合によってはメソッド\) を参照すると、マウス イベントのマウスの位置や、ドラッグ アンド ドロップ イベントで転送されるデータなどの情報を取得できます。 + + 通常、イベントごとに生成されるイベント ハンドラーでは、2 番目に指定されるイベント オブジェクトの種類がそれぞれ異なります。 イベントや イベントなどのイベント ハンドラーでは、2 番目のパラメーターが同じオブジェクト型になっています。 この種類のイベントでは、同じイベント ハンドラーを使用して両方のイベントを処理できます。 + + また、同じイベント ハンドラーを使用して、異なるコントロールに対する同じイベントを処理することもできます。 たとえば、フォームに コントロールのグループがある場合は、 イベントに対して 1 つのイベント ハンドラーを作成し、各コントロールの イベントをこの単独のイベント ハンドラーにバインドできます。 詳細については、「[方法 : Windows フォームの 1 つのイベント ハンドラーに複数のイベントを関連付ける](../../../docs/framework/winforms/how-to-connect-multiple-events-to-a-single-event-handler-in-windows-forms.md)」を参照してください。 + +## 参照 + [Windows フォーム内でのイベント ハンドラーの作成](../../../docs/framework/winforms/creating-event-handlers-in-windows-forms.md) + [イベントの概要](../../../docs/framework/winforms/events-overview-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/events-overview-windows-forms.md b/docs/framework/winforms/events-overview-windows-forms.md new file mode 100644 index 00000000000..53abcef86f5 --- /dev/null +++ b/docs/framework/winforms/events-overview-windows-forms.md @@ -0,0 +1,57 @@ +--- +title: "イベントの概要 (Windows フォーム) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "デリゲート [Windows フォーム], イベント" + - "デリゲート [Windows フォーム], マルチキャスト" + - "イベント [Windows フォーム], イベントの概要" + - "マルチキャスト イベント デリゲート" + - "Windows フォーム コントロール, イベント" + - "Windows フォーム, イベント処理" +ms.assetid: 814a6a43-a312-4791-88d8-f75f9a4f8c4c +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# イベントの概要 (Windows フォーム) +イベントとは、プログラマが応答できる、つまり、コードを使って "処理" できるアクションのことです。 イベントは、マウスのクリックやキーを押すなどのユーザー アクション、プログラム コードまたはシステムによって生成されます。 + + イベント ドリブン アプリケーションでは、イベントに応答してコードが実行されます。 各フォームおよびコントロールは、定義済みのイベント セットを公開しており、プログラマはそれらに対応するプログラムを作成できます。 これらのイベントの 1 つが発生したときに、関連するイベント ハンドラーにコードがある場合は、そのコードが呼び出されます。 + + オブジェクトが発生させるイベントにはさまざまな種類がありますが、その多くがほとんどのコントロールで共通です。 たとえば、 イベントは、ほとんどのオブジェクトで処理されます。 ユーザーがフォームをクリックすると、フォームの イベント ハンドラー内のコードが実行されます。 + +> [!NOTE] +> イベントの多くは、他のイベントと共に発生します。 たとえば、 イベントが発生する場合は、、および の各イベントが発生します。 + + イベントを発生させて処理する方法については、「[イベント](../../../docs/standard/events/index.md)」を参照してください。 + +## デリゲートとその役割 + デリゲートは、主にイベント処理機構をビルドするために、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] 内で使用されるクラスです。 デリゲートは、[!INCLUDE[vcprvc](../../../includes/vcprvc-md.md)] やその他のオブジェクト指向言語で一般的に使用される関数ポインターに似ています。 ただし、関数ポインターとは異なり、デリゲートはオブジェクト指向で、タイプ セーフで、安全です。 また、関数ポインターには特定の関数への参照だけが含まれていますが、デリゲートはオブジェクトへの参照、およびそのオブジェクト内の 1 つ以上のメソッドへの参照で構成されています。 + + このイベント モデルでは、*デリゲート*を使用してイベント処理に使用するメソッドにイベントを関連付けます。 デリゲートを使用すると、ハンドラーのメソッドを指定することにより、イベント通知のための他のクラスを登録できます。 イベントが発生すると、デリゲートは関連付けられたメソッドを呼び出します。 デリゲートを定義する方法の詳細については、「[イベント](../../../docs/standard/events/index.md)」を参照してください。 + + デリゲートは、単一のメソッドまたは複数のメソッドに関連付けることができます。後者は、マルチキャストと呼ばれます。 イベントのデリゲートを作成する場合は、通常、ユーザー \(Windows フォーム デザイナー\) がマルチキャスト イベントを作成します。 例外は、1 回のイベントで複数回実行されることが論理的にあり得ないような特定のプロシージャ \(ダイアログ ボックスの表示など\) を呼び出すイベントです。 マルチキャスト デリゲートを作成する方法については、「[方法 : デリゲートを結合する \(マルチキャスト デリゲート\)](../Topic/How%20to:%20Combine%20Delegates%20\(Multicast%20Delegates\)\(C%23%20Programming%20Guide\).md)」を参照してください。 + + マルチキャスト デリゲートは、関連付けられたメソッドの呼び出しリストを保持します。 マルチキャスト デリゲートでは、呼び出しリストにメソッドを追加する メソッド、およびリストからメソッドを削除する メソッドがサポートされています。 + + アプリケーションによってイベントが記録されると、コントロールは、そのイベント用のデリゲートを呼び出すことによってイベントを発生させます。 次に、デリゲートによって、関連付けられたメソッドが呼び出されます。 ほとんどの場合、デリゲート \(通常はマルチキャスト デリゲート\) では、呼び出しリストにある関連付けされた各メソッドが順番に呼び出されるため、一対多通知を実行できます。 この方法では、すべての登録と通知がデリゲートによって処理されるため、コントロールでは、イベント通知の対象となるオブジェクトのリストを保持する必要がありません。 + + デリゲートでは、複数のイベントを同じメソッドに関連付けし、多対一通知を実行することもできます。 たとえば、ボタンとメニューコマンドのクリック イベントで、同じデリゲートを呼び出すことができます。呼び出されたデリゲートによって単一のメソッドが呼び出されるので、どちらのイベントも同じように処理されます。 + + デリゲートと共に使用される関連付けの機構は動的です。デリゲートは、シグネチャがイベント ハンドラのシグネチャと一致する任意のメソッドに実行時に関連付けできます。 この機能によって、状況に応じて関連付けるメソッドを設定または変更したり、イベント ハンドラをコントロールに動的に関連付けることができます。 + +## 参照 + [Windows フォーム内でのイベント ハンドラーの作成](../../../docs/framework/winforms/creating-event-handlers-in-windows-forms.md) + [イベント ハンドラーの概要](../../../docs/framework/winforms/event-handlers-overview-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/getting-started-with-windows-forms.md b/docs/framework/winforms/getting-started-with-windows-forms.md new file mode 100644 index 00000000000..de02ba4dd7e --- /dev/null +++ b/docs/framework/winforms/getting-started-with-windows-forms.md @@ -0,0 +1,69 @@ +--- +title: "Windows フォームについて | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Designer_System.Windows.Forms.Design.FormDocumentDesigner" + - "vb.wfc.formdesigner" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "はじめに, Windows フォーム" + - "Windows フォーム, はじめに" +ms.assetid: a031aa58-5027-4082-b590-df7c12c77dec +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Windows フォームについて +Windows フォームを使用すると、Windows ベースのパワフルなアプリケーションを作成できます。 以下のトピックには、Windows フォームのパワーを利用してデータの表示やユーザー入力の処理を行う方法、およびアプリケーションを簡単に、またセキュリティを強力に保護しながら配置する方法が詳細に説明されています。 + +## このセクションの内容 + [Windows フォームの概要](../../../docs/framework/winforms/windows-forms-overview.md) + Windows フォームとスマート クライアント アプリケーションの概要を示します。 + + [新しい Windows フォームの作成](../../../docs/framework/winforms/creating-a-new-windows-form.md) + Windows フォーム アプリケーションの作成における基本的な概念について説明したトピックへのリンクが用意されています。 + + [Windows フォーム内でのイベント ハンドラーの作成](../../../docs/framework/winforms/creating-event-handlers-in-windows-forms.md) + Windows フォームのイベント ハンドラーを作成する方法を説明したトピックへのリンクが用意されています。 + + [Windows フォームのサイズとスケールを調整する](../../../docs/framework/winforms/adjusting-the-size-and-scale-of-windows-forms.md) + Windows フォームのサイズとスケールを調節する方法について説明したトピックへのリンクが用意されています。 + + [Windows フォームの表示形式の変更](../../../docs/framework/winforms/changing-the-appearance-of-windows-forms.md) + Windows フォーム アプリケーションの外観を変更する方法について説明したトピックへのリンクが用意されています。 + + [Windows フォーム コントロール](../../../docs/framework/winforms/controls/index.md) + Windows フォームのコンロトールとコンポーネントの使い方について説明したトピックへのリンクが用意されています。 + + [Windows フォームでのユーザー入力](../../../docs/framework/winforms/user-input-in-windows-forms.md) + Windows フォーム アプリケーションでユーザーからの入力を処理する方法について説明したトピックへのリンクが用意されています。 + + [Windows フォームのダイアログ ボックス](../../../docs/framework/winforms/dialog-boxes-in-windows-forms.md) + Windows フォームで使用できるさまざまなダイアログ ボックスについて説明したトピックへのリンクが用意されています。 + + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) + Windows フォームのデータ バインディング アーキテクチャについて、およびそれを Windows フォーム アプリケーションで使用する方法について説明したトピックへのリンクが用意されています。 + + [Windows フォームのセキュリティ](../../../docs/framework/winforms/windows-forms-security.md) + セキュリティが強化された Windows フォーム アプリケーションを作成する方法について説明したトピックへのリンクが用意されています。 + + [Windows フォームの ClickOnce 配置](../../../docs/framework/winforms/clickonce-deployment-for-windows-forms.md) + Windows フォーム アプリケーションを簡単に配置する方法について説明したトピックへのリンクが用意されています。 + + [方法 : Windows フォームのコレクションにアクセス キーを指定する](../../../docs/framework/winforms/how-to-access-keyed-collections-in-windows-forms.md) + インデックスではなくキーを使用してコレクションにアクセスする方法について説明します。 + +## 関連項目 + [Windows フォーム アプリケーションの拡張](../../../docs/framework/winforms/advanced/index.md) + Windows フォーム アプリケーションを作成するための高度な概念について説明したトピックへのリンクが用意されています。 \ No newline at end of file diff --git a/docs/framework/winforms/how-keyboard-input-works.md b/docs/framework/winforms/how-keyboard-input-works.md new file mode 100644 index 00000000000..fc70698a7a3 --- /dev/null +++ b/docs/framework/winforms/how-keyboard-input-works.md @@ -0,0 +1,86 @@ +--- +title: "キーボード入力のしくみ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "キーボード入力, キーボード入力の概要" + - "キーボード, キーボード入力" + - "Windows フォーム, キーボード入力" +ms.assetid: 9a29433c-a180-49bb-b74c-d187786584c8 +caps.latest.revision: 20 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 20 +--- +# キーボード入力のしくみ +Windows フォームは、Windows メッセージに応答してキーボード イベントを発生させることにより、キーボード入力を処理します。 多くの Windows フォーム アプリケーションは、キーボード イベントを処理することによってキーボード入力を排他的に処理します。 しかし、高度なキーボード入力のシナリオ \(キーがコントロールに到達する前にキーを受け取るなど\) を実装するためには、キーボード メッセージのしくみについて理解することが必要です。 このトピックでは Windows フォームが認識するキー データの種類について説明し、キーボード メッセージをルーティングする方法について概要を説明します。 キーボード イベントの詳細については、「[キーボード イベントの使用](../../../docs/framework/winforms/using-keyboard-events.md)」を参照してください。 + +## キーの種類 + Windows フォームはキーボード入力を、ビット単位の 列挙値で表現される仮想キー コードとして識別します。 列挙値を使用すると、入力された一連のキーを組み合わせて単一の値にできます。 これらの値は WM\_KEYDOWN および WM\_SYSKEYDOWN の Windows メッセージに付随する値になります。 ほとんどの物理的なキー入力は、 イベントまたは イベントを処理することで検出できます。 文字キーは 列挙値のサブセットであり、WM\_CHAR および WM\_SYSCHAR の Windows メッセージに付随する値になります。 キー入力の組み合わせが文字になった場合は、 イベントを処理することでその文字を検出できます。 または、Visual Basic プログラミング インターフェイスによって公開される を使用して、どのキーが押されたかの判断と、キーの送信を行うという方法もあります。 詳細については、「[Accessing the Keyboard](../Topic/Accessing%20the%20Keyboard%20\(Visual%20Basic\).md)」を参照してください。 + +## キーボード イベントの順序 + 先に説明したとおり、コントロール上では 3 つのキーボード関連のイベントが発生します。 イベントは一般に次の順序で発生します。 + +1. ユーザーが "a" のキーを押すと、キーが前処理され、ディスパッチされて、 イベントが発生します。 + +2. ユーザーが "a" のキーを押し続けると、キーが前処理され、ディスパッチされて、 イベントが発生します。 + + このイベントはユーザーがキーを押し続けているとき複数回発生します。 + +3. ユーザーが "a" のキーを離すと、キーが前処理され、ディスパッチされて、 イベントが発生します。 + +## キーの前処理 + 他のメッセージと同様に、キーボード メッセージもフォームやコントロールの メソッドで処理されます。 ただし、キーボード メッセージが処理される前に、 メソッドが 1 つ以上のメソッドを呼び出します。これらのメソッドをオーバーライドすることで、特別な文字キーと物理キーの処理が可能になります。 これらのメソッドをオーバーライドすると、コントロールがメッセージを処理する前に、特定のキーを検出してフィルターできます。 次の表に、実行される処理と、そのとき呼び出されるメソッドを \(メソッドが呼び出される順に\) 示します。 + +### KeyDown イベントの前処理 + +|動作|メソッド|説明| +|--------|----------|--------| +|アクセラレータやメニュー ショートカットなどのコマンド キーの確認。||このメソッドはコマンド キーを処理します。コマンド キーは通常のキーよりも優先順位が上です。 このメソッドが `true` を返した場合、キー メッセージはディスパッチされず、キー イベントも発生しません。 `false` を返した場合は、 が呼び出されます。| +|前処理を必要とする特別なキーか、または イベントを発生させ、コントロールにディスパッチされる通常の文字キーかどうかの確認。||メソッドが `true` を返した場合は、コントロールが通常の文字であることを意味するため、 イベントが発生します。 `false` を返した場合は、 が呼び出されます。 **Note:** コントロールがキーまたはキーの組み合わせを確実に取得するためには、 イベントを処理し、そのキーの に `true` を設定します。| +|移動キー \(Esc、Tab、Return、または方向キー\) の確認。||このメソッドはコントロール内で特別な機能 \(コントロールとその親コントロールの間のフォーカスの切り替えなど\) を実行する物理キーを処理します。 このコントロールがキーを処理しない場合は、親コントロールで が呼び出されます。それでも処理しなければ、コントロールの呼び出しが階層構造の最上階のコントロールまで続けられます。 このメソッドが `true` を返した場合、前処理は完了し、キー イベントは生成されません。 `false` を返した場合は、 イベントが発生します。| + +### KeyPress イベントの前処理 + +|動作|メソッド|説明| +|--------|----------|--------| +|キーがコントロールによって処理される通常の文字であるかどうかの確認||文字が通常の文字である場合は、このメソッドが `true` を返し、 イベントが発生します。それ以上の処理は行われません。 通常の文字でない場合は、 が呼び出されます。| +|文字がニーモニック \(ボタン上の &OK など\) かどうかの確認||このメソッドも と同様に、コントロールの階層構造を上に移動しながら呼び出されます。 コントロールがコンテナー コントロールである場合は、自身とその子コントロールから を呼び出すことによってニーモニックを確認します。 が `true` を返した場合、 イベントは発生しません。| + +## キーボード メッセージの処理 + キーボード メッセージは、フォームまたはコントロールの メソッドに到達した後、オーバーライド可能な一連のメソッドによって処理されます。 これらの各メソッドは、キーボード メッセージが処理され、コントロールがそれを使用したかどうかを示す 値を返します。 いずれかのメソッドが `true` を返した場合は、メッセージが処理されたと判断されるため、ベース コントロールまたは親コントロールにメッセージが渡されることはありません。 そうでない場合は、メッセージがメッセージ キューに残り、場合によってはそのコントロールのベースまたは親に含まれる別のメソッドで処理されます。 次の表に、キーボード メッセージを処理するメソッドを示します。 + +|メソッド|説明| +|----------|--------| +||このメソッドは、コントロールの メソッドが受信するすべてのキーボード メッセージを処理します。| +||このメソッドは、キーボード メッセージを親コントロールに送信します。 が `true` を返した場合、キー イベントは生成されません。そうでない場合は が呼び出されます。| +||このメソッドは必要に応じて 、および のイベントを発生させます。| + +## キーボード メソッドのオーバーライド + キーボード メッセージを処理するためにオーバーライドできるメソッドは多数ありますが、どのメソッドを選ぶかが非常に重要です。 次の表に、実行するタスクと、キーボード メソッドをオーバーライドする最善の方法を示します。 メソッドのオーバーライドの詳細については、「[NOT IN BUILD: Overriding Properties and Methods](http://msdn.microsoft.com/ja-jp/2167e8f5-1225-4b13-9ebd-02591ba90213)」を参照してください。 + +|タスク|メソッド| +|---------|----------| +|移動キーを受け取って イベントを発生させる。 たとえば、テキスト ボックス内で Tab や Return を処理するなど。| をオーバーライドします。 **Note:** または、 イベントを処理し、そのキーの に `true` を設定します。| +|コントロールで特別な入力処理や移動処理を実行する。 たとえば、リスト コントロールで方向キーを使用して選択項目を変更するなど。| をオーバーライドします。| +|移動キーを受け取って イベントを発生させる。 たとえば、スピン ボックス コントロールで方向キーを複数回押して、項目の移動を加速するなど。| をオーバーライドします。| +| イベントの間に、特別な入力処理や移動処理を実行する。 たとえば、リスト コントロール内で "r" キーを押し続けると、r の文字で始まる項目にスキップするなど。| をオーバーライドします。| +|カスタムなニーモニックの処理を実行する。たとえば、ツール バーに配置されたオーナー描画ボタンのニーモニックを処理するなど。| をオーバーライドします。| + +## 参照 + + + + [My.Computer.Keyboard Object](../../../ocs/visual-basic/language-reference/objects/my-computer-keyboard-object.md) + [Accessing the Keyboard](../Topic/Accessing%20the%20Keyboard%20\(Visual%20Basic\).md) + [キーボード イベントの使用](../../../docs/framework/winforms/using-keyboard-events.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-mouse-input-works-in-windows-forms.md b/docs/framework/winforms/how-mouse-input-works-in-windows-forms.md new file mode 100644 index 00000000000..82c10e78a76 --- /dev/null +++ b/docs/framework/winforms/how-mouse-input-works-in-windows-forms.md @@ -0,0 +1,67 @@ +--- +title: "Windows フォームにおけるマウス入力のしくみ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "マウス, 入力" + - "Windows フォーム, マウス入力" +ms.assetid: 48fc5240-75a6-44bf-9fce-6aa21b49705a +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# Windows フォームにおけるマウス入力のしくみ +マウス入力の受け取りと処理は、どの Windows アプリケーションでも重要です。 マウス イベントを処理してアプリケーションのアクションを実行したり、マウスの位置情報を使用してヒット テストなどのアクションを実行したりできます。 また、アプリケーションのコントロールがマウス入力を処理する方法を変更することもできます。 ここでは、マウス イベントの詳細と、マウスのシステム設定を取得して変更する方法について説明します。 マウス イベントで提供されるデータおよびマウスのクリック イベントの発生順序の詳細については、「[Windows フォームにおけるマウス イベント](../../../docs/framework/winforms/mouse-events-in-windows-forms.md)」を参照してください。 + +## マウスの位置とヒット テスト + ユーザーがマウスを動かすと、オペレーティング システムによってマウス ポインターが移動します。 マウス ポインターには "ホット スポット" と呼ばれる単一ピクセルの領域が含まれます。オペレーティング システムは、この領域を追跡することによってポインターの位置を認識します。 ユーザーがマウスを動かすか、マウス ボタンを押すと、 を含む が適切なマウス イベントを発生させます。 現在のマウスの位置を取得するには、マウス イベントの処理時に プロパティを使用するか、 クラスの プロパティを使用します。 その後、マウスの位置情報を使用してヒット テストを実行し、マウスの位置に基づいてアクションを実行できます。 ヒット テスト機能は、Windows フォームの複数のコントロール \(、および \) に組み込まれています。 ヒット テストを適切なマウス イベント \(たとえば、 など\) と組み合わせて使用すると、特定のアクションをアプリケーションがいつ実行するかを決定する上で便利です。 + +## マウス イベント + マウス入力に応答する主な方法は、マウス イベントを処理することです。 マウス イベントの一覧と各マウス イベントの発生タイミングを次の表に示します。 + +|マウス イベント|Description| +|--------------|-----------------| +||このイベントは、マウス ボタンが離されると発生します。通常は、 イベントの前に発生します。 このイベントのハンドラーは、 型の引数を受け取ります。 クリックがいつ発生したかだけを判断する必要がある場合は、このイベントを処理します。| +||このイベントは、ユーザーがマウスでコントロールをクリックすると発生します。 このイベントのハンドラーは、 型の引数を受け取ります。 クリック発生時のマウスに関する情報を取得する必要がある場合は、このイベントを処理します。| +||このイベントは、コントロールがダブルクリックされると発生します。 このイベントのハンドラーは、 型の引数を受け取ります。 ダブルクリックがいつ発生したかだけを判断する必要がある場合は、このイベントを処理します。| +||このイベントは、ユーザーがマウスでコントロールをダブルクリックすると発生します。 このイベントのハンドラーは、 型の引数を受け取ります。 ダブルクリック発生時のマウスに関する情報を取得する必要がある場合は、このイベントを処理します。| +||このイベントは、マウス ポインターがコントロール上にあるときに、ユーザーがマウス ボタンを押すと発生します。 このイベントのハンドラーは、 型の引数を受け取ります。| +||このイベントは、コントロールの種類に応じて、マウス ポインターがコントロールの境界またはクライアント領域に入ると発生します。 このイベントのハンドラーは、 型の引数を受け取ります。| +||このイベントは、マウス ポインターがコントロール上で停止したままになると発生します。 このイベントのハンドラーは、 型の引数を受け取ります。| +||このイベントは、コントロールの種類に応じて、マウス ポインターがコントロールの境界またはクライアント領域から出ると発生します。 このイベントのハンドラーは、 型の引数を受け取ります。| +||このイベントは、マウス ポインターがコントロール上にあるときに移動すると発生します。 このイベントのハンドラーは、 型の引数を受け取ります。| +||このイベントは、マウス ポインターがコントロール上にあるときに、ユーザーがマウス ボタンを離すと発生します。 このイベントのハンドラーは、 型の引数を受け取ります。| +||このイベントは、コントロールにフォーカスがあるときに、ユーザーがマウス ホイールを回転させると発生します。 このイベントのハンドラーは、 型の引数を受け取ります。 プロパティを使用して、マウスでどれだけスクロールしたかを判断できます。| + +## マウス入力の変更とシステム設定の検出 + コントロールがマウス入力を処理する方法を検出して変更するには、コントロールから派生させ、 メソッドと メソッドを使用します。 メソッドは、 値のビットごとの組み合わせを受け取り、コントロールが標準のクリック動作とダブルクリック動作のどちらを行うか、またはコントロールが独自のマウス処理を行うかどうかを決定します。 また、 クラスは、マウスの機能を記述したプロパティを含み、マウスとオペレーティング システムの対話方法を指定します。 これらのプロパティの概要を次の表に示します。 + +|プロパティ|Description| +|-----------|-----------------| +||2 回のクリックがオペレーティング システムによってダブルクリックであると認識されるために、ユーザーが 2 回クリックする必要がある領域の大きさ \(ピクセル単位\) を取得します。| +||オペレーティング システムによってマウス操作がダブルクリックであると認識されるための、1 回目のクリックと 2 回目のクリックの間の最大経過時間 \(ミリ秒単位\) を取得します。| +||マウスのボタンの数を取得します。| +||左右のマウス ボタンの機能が入れ替わっているかどうかを示す値を取得します。| +||マウス静止メッセージが生成されるためにマウス静止時間が経過するまでマウス ポインターをとどめておく必要がある四角形の領域の大きさ \(ピクセル単位\) を取得します。| +||マウス静止メッセージが生成されるために静止領域内にマウス ポインターをとどめておく必要がある時間 \(ミリ秒単位\) を取得します。| +||マウスが取り付けられているかどうかを示す値を取得します。| +||現在のマウス速度を示す値 \(1 ~ 20\) を取得します。| +||マウス ホイール付きのマウスが取り付けられているかどうかを示す値を取得します。| +||マウス ホイールの 1 目盛りの回転で増分される差分値を取得します。| +||マウス ホイールを回転したときにスクロールする行数を取得します。| + +## 参照 + [Windows フォーム アプリケーションにおけるマウス入力](../../../docs/framework/winforms/mouse-input-in-a-windows-forms-application.md) + [Windows フォームにおけるマウスのキャプチャ](../../../docs/framework/winforms/mouse-capture-in-windows-forms.md) + [Windows フォームにおけるマウス ポインター](../../../docs/framework/winforms/mouse-pointers-in-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-access-keyed-collections-in-windows-forms.md b/docs/framework/winforms/how-to-access-keyed-collections-in-windows-forms.md new file mode 100644 index 00000000000..68ed3157a00 --- /dev/null +++ b/docs/framework/winforms/how-to-access-keyed-collections-in-windows-forms.md @@ -0,0 +1,62 @@ +--- +title: "方法 : Windows フォームのコレクションにアクセス キーを指定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コレクション, アクセス (キーを使用して)" + - "キーが指定されたコレクション [Windows フォーム]" +ms.assetid: b9b79b8b-d9bf-4f8c-b9d6-9578bc3219d3 +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# 方法 : Windows フォームのコレクションにアクセス キーを指定する +- 個々のコレクション項目にはキーでアクセスできます。 この機能は、Windows フォーム アプリケーションによって一般に使用される多数のコレクション クラスに追加されました。 アクセスできるキーが指定されたコレクションのあるコレクション クラスの一部を次の一覧に示します。 + +- + +- + +- + +- + +- + + コレクションの項目に関連付けられるキーは、一般に項目名です。 次の手順では、コレクション クラスを使用し、一般的なタスクを実行する方法を説明します。 + +### コントロール コレクションの中で入れ子のコントロールを検索し、フォーカスの移動先にします。 + +- メソッドと メソッドを使用し、検索してフォーカスの移動先にするコントロール名を指定します。 + + [!code-csharp[System.Windows.Forms.KeyedCollectionsEx#1](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.KeyedCollectionsEx/CS/Form1.cs#1)] + [!code-vb[System.Windows.Forms.KeyedCollectionsEx#1](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.KeyedCollectionsEx/VB/Form1.vb#1)] + +### イメージ コレクションのイメージにアクセスするには + +- プロパティを使用して、アクセスするイメージ名を指定します。 + + [!code-csharp[System.Windows.Forms.KeyedCollectionsEx#2](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.KeyedCollectionsEx/CS/Form1.cs#2)] + [!code-vb[System.Windows.Forms.KeyedCollectionsEx#2](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.KeyedCollectionsEx/VB/Form1.vb#2)] + +### タブ ページを選択済みのタブとして設定するには + +- プロパティと プロパティを使用し、選択済みのタブとして設定するタブ ページ名を指定します。 + + [!code-csharp[System.Windows.Forms.KeyedCollectionsEx#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.KeyedCollectionsEx/CS/Form1.cs#3)] + [!code-vb[System.Windows.Forms.KeyedCollectionsEx#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.KeyedCollectionsEx/VB/Form1.vb#3)] + +## 参照 + [Windows フォームについて](../../../docs/framework/winforms/getting-started-with-windows-forms.md) + [方法 : Windows フォームの ImageList コンポーネントにイメージを追加または削除する](../../../docs/framework/winforms/controls/how-to-add-or-remove-images-with-the-windows-forms-imagelist-component.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-apply-the-propertynamechanged-pattern.md b/docs/framework/winforms/how-to-apply-the-propertynamechanged-pattern.md new file mode 100644 index 00000000000..d8585719378 --- /dev/null +++ b/docs/framework/winforms/how-to-apply-the-propertynamechanged-pattern.md @@ -0,0 +1,40 @@ +--- +title: "方法 : PropertyNameChanged パターンを適用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "カスタム コントロール [Windows フォーム], プロパティの変更 (コードを使用)" + - "データ バインド, カスタム コントロール" + - "PropertyNameChanged パターン, 適用" +ms.assetid: aa47ddf6-5223-40c4-833f-a78992194836 +caps.latest.revision: 5 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 5 +--- +# 方法 : PropertyNameChanged パターンを適用する +次のコード例では、*PropertyName*Changed パターンをカスタム コントロールに適用する方法を示します。 Windows フォーム データ バインディング エンジンと一緒に使用するカスタム コントロールを実装する場合は、このパターンを適用します。 + +## 使用例 + [!code-csharp[System.Windows.Forms.ChangeNotification#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ChangeNotification/CS/Form1.cs#3)] + [!code-vb[System.Windows.Forms.ChangeNotification#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ChangeNotification/VB/Form1.vb#3)] + +## コードのコンパイル + 上記のコード例をコンパイルするには + +- コードを空白のコード ファイルに貼り付けます。 `Main` メソッドを含む Windows フォームで、カスタム コントロールを使用する必要があります。 + +## 参照 + [方法 : INotifyPropertyChanged インターフェイスを実装する](../../../docs/framework/winforms/how-to-implement-the-inotifypropertychanged-interface.md) + [Windows フォーム データ バインドの変更通知](../../../docs/framework/winforms/change-notification-in-windows-forms-data-binding.md) + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-change-the-borders-of-windows-forms.md b/docs/framework/winforms/how-to-change-the-borders-of-windows-forms.md new file mode 100644 index 00000000000..86fd2000bd9 --- /dev/null +++ b/docs/framework/winforms/how-to-change-the-borders-of-windows-forms.md @@ -0,0 +1,54 @@ +--- +title: "方法 : Windows フォームの境界線を変更する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Windows フォーム, 変更 (境界線を)" +ms.assetid: b3d5fa56-80c6-4b10-b505-f9672307ed55 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : Windows フォームの境界線を変更する +Windows フォームの外観や動作を決定する際にはさまざまな境界線スタイルを選択できます。 プロパティを変更して、フォームのサイズ変更動作を制御できます。 また、 を設定すると、キャプション バーの表示方法や、キャプション バーに表示されるボタンを変更できます。 詳細については、「」を参照してください。 + + [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] では、このタスクに対する広範なサポートが用意されています。 + + 「[方法 : デザイナーを使用して Windows フォームの境界線を変更する](http://msdn.microsoft.com/library/yettzh3e%20\(v=vs.110\))」も参照してください。 + +### プログラムで Windows フォームの境界線スタイルを設定するには + +- プロパティを任意のスタイルに設定します。 フォーム `DlgBx1` の境界線スタイルを に設定するコード例は、次のとおりです。 + + ```vb + DlgBx1.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog + ``` + + ```csharp + DlgBx1.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + ``` + + ```cpp + DlgBx1->FormBorderStyle = + System::Windows::Forms::FormBorderStyle::FixedDialog; + ``` + + 「[方法 : デザイン時にダイアログ ボックスを作成する](http://msdn.microsoft.com/library/55cz5x2c\(v=vs.110\))」も参照してください。 + + また、**\[最小化\]** ボタンまたは **\[最大化\]** ボタンをフォームに配置できる境界線スタイルを選択した場合は、この 2 つのボタンのいずれか、または両方の機能を有効にするかどうかを指定できます。 これらのボタンは、ユーザーの操作感を細かく調節する場合に便利です。 既定では、**\[最小化\]** ボタンと **\[最大化\]** ボタンが有効になっています。**\[プロパティ\]** ウィンドウで、これらの機能を有効にするかどうかを制御できます。 + +## 参照 + + + [Windows フォームについて](../../../docs/framework/winforms/getting-started-with-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-connect-multiple-events-to-a-single-event-handler-in-windows-forms.md b/docs/framework/winforms/how-to-connect-multiple-events-to-a-single-event-handler-in-windows-forms.md new file mode 100644 index 00000000000..49116d97cb6 --- /dev/null +++ b/docs/framework/winforms/how-to-connect-multiple-events-to-a-single-event-handler-in-windows-forms.md @@ -0,0 +1,72 @@ +--- +title: "方法 : Windows フォームの 1 つのイベント ハンドラーに複数のイベントを関連付ける | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "イベント ハンドラー [Windows フォーム], 接続 (イベントを)" + - "イベント [Windows フォーム], 接続 (単一のイベント ハンドラーに複数のイベントを)" + - "メニュー項目, マルチキャスティング (イベント処理メソッドの)" + - "メニュー, イベント処理メソッド (複数メニュー項目の)" + - "Windows フォーム コントロール, イベント" +ms.assetid: 5a20749a-41b5-4acc-8eb1-9e5040b0a2c4 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法 : Windows フォームの 1 つのイベント ハンドラーに複数のイベントを関連付ける +アプリケーションのデザインによっては、1 つのイベント ハンドラーを複数のイベントに対応付ける必要があります。つまり、複数のイベントから 1 つのプロシージャを起動するようにする必要があります。 たとえば、メニュー コマンドとフォームのボタンの機能が同じ場合は、メニュー コマンドからフォームのボタンと同じイベントが発生するようにすると、大幅に作業時間を短縮できます。 これを行うには、C\# では、\[プロパティ\] ウィンドウのイベント ビューを使用します。Visual Basic コード エディターでは、`Handles` キーワードと、**\[クラス名\]** ボックスおよび **\[メソッド名\]** ボックスを使用します。 + +### Visual Basic で 1 つのイベント ハンドラーに複数のイベントを関連付けるには + +1. フォームを右クリックし、**\[コードの表示\]** をクリックします。 + +2. **\[クラス名\]** ボックスで、イベント ハンドラーが処理するコントロールを 1 つ選択します。 + +3. **\[メソッド名\]** ボックスで、イベント ハンドラーが処理するイベントを 1 つ選択します。 + +4. コード エディターによって適切なイベント ハンドラーが挿入され、対応するメソッド内にカーソルが移動します。 以下に コントロールの イベントの例を示します。 + + ```vb + Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click + ' Add event-handler code here. + End Sub + ``` + +5. 処理対象の他のイベントを `Handles` 句に追加します。 + + ```vb + Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click + ' Add event-handler code here. + End Sub + ``` + +6. 適切なコードをイベント ハンドラーに追加します。 + +### C\# で 1 つのイベント ハンドラーに複数のイベントを関連付けるには + +1. イベント ハンドラーを接続するコントロールを選択します。 + +2. \[プロパティ\] ウィンドウで、**\[イベント\]** ボタン \(![イベント ボタン](../../../docs/framework/winforms/media/vxeventsbutton-propertieswindow.png "vxEventsButton\_PropertiesWindow")\) をクリックします。 + +3. 処理するイベントの名前をクリックします。 + +4. イベント名の横にある値セクションでドロップダウン ボタンをクリックすると、処理するイベントのメソッド シグネチャと一致する既存のイベント ハンドラーの一覧が表示されます。 + +5. 一覧から、該当するイベント ハンドラーを選択します。 + + 選択したイベントを既存のイベント ハンドラーに関連付けするコードが、フォームに追加されます。 + +## 参照 + [Windows フォーム内でのイベント ハンドラーの作成](../../../docs/framework/winforms/creating-event-handlers-in-windows-forms.md) + [イベント ハンドラーの概要](../../../docs/framework/winforms/event-handlers-overview-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-create-a-bound-control-and-format-the-displayed-data.md b/docs/framework/winforms/how-to-create-a-bound-control-and-format-the-displayed-data.md new file mode 100644 index 00000000000..377e0449a78 --- /dev/null +++ b/docs/framework/winforms/how-to-create-a-bound-control-and-format-the-displayed-data.md @@ -0,0 +1,69 @@ +--- +title: "方法 : バインド コントロールを作成して表示データの書式を設定する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "バインド コントロール [Windows フォーム], 作成" + - "バインド コントロール [Windows フォーム], 書式設定 (データを)" + - "データ [Windows フォーム], 書式指定" +ms.assetid: d5a56228-899d-41d9-8af8-87b3f4ec2f94 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法 : バインド コントロールを作成して表示データの書式を設定する +Windows フォームのデータ バインディングでは、\[**フォーマットと詳細バインド**\] ダイアログ ボックスを使用してデータ バインド コントロールに表示されるデータの書式を設定できます。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +### コントロールをバインドして表示データの書式を設定するには + +1. データ ソースに接続します。 + + 詳細については、「[データ ソースへの接続](../../../docs/framework/data/adonet/connecting-to-a-data-source.md)」を参照してください。 + +2. フォームでコントロールを選択し、\[プロパティ\] ウィンドウを開きます。 + +3. \[**\(DataBindings\)**\] プロパティを展開し、\[**\(詳細\)**\] ボックスの省略記号ボタン \(![VisualStudioEllipsesButton スクリーンショット](../../../docs/framework/winforms/media/vbellipsesbutton.png "vbEllipsesButton")\) をクリックして、\[**フォーマットと詳細バインド**\] ダイアログ ボックスを表示します。このダイアログ ボックスには、そのコントロールのすべてのプロパティの一覧が表示されます。 + +4. バインドするプロパティを選択し、\[**バインド**\] の矢印をクリックします。 + + 使用できるデータ ソースの一覧が表示されます。 + +5. 目的の 1 つのデータ要素が見つかるまで、バインド先のデータ ソースを展開します。 + + たとえば、データセットのテーブル内の列の値にバインドする場合は、データセットの名前を展開し、次にテーブル名を展開して、列名を表示します。 + +6. バインド先の要素の名前をクリックします。 + +7. \[**形式の種類**\] ボックスで、コントロールに表示されるデータに適用する形式をクリックします。 + + どの形式でも、データ ソースに が含まれている場合には、コントロールに表示する値を指定できます。 それ以外の場合、オプションは、選択する形式の種類に応じて多少変わります。 次の表に、形式の種類とオプションを示します。 + + |形式の種類|書式設定のオプション| + |-----------|----------------| + |書式設定なし|オプションはありません。| + |数字|**\[小数点以下の桁数\]** アップダウン コントロールを使用して小数点以下の桁数を指定します。| + |通貨|**\[小数点以下の桁数\]** アップダウン コントロールを使用して小数点以下の桁数を指定します。| + |日付と時刻|**\[種類\]** 選択ボックス内の項目のいずれかを選択して、日付と時刻の表示方法を選択します。| + |指数|**\[小数点以下の桁数\]** アップダウン コントロールを使用して小数点以下の桁数を指定します。| + |カスタム|カスタム書式指定文字列を使用するように指定します。

詳細については、「[型の書式設定](../../../docs/standard/base-types/formatting-types.md)」を参照してください。 **Note:** カスタム書式指定文字列を使用した場合、データ ソースとバインド コントロールの間を往復したときにデータが正常に維持される保証はありません その代わりに、バインディングで イベントまたは イベントを処理し、イベント処理コードでカスタム書式を適用します。| + +8. \[**OK**\] をクリックして \[**フォーマットと詳細バインド**\] ダイアログ ボックスを閉じ、\[プロパティ\] ウィンドウに戻ります。 + +## 参照 + [方法 : Windows フォームに単純バインド コントロールを作成する](../../../docs/framework/winforms/how-to-create-a-simple-bound-control-on-a-windows-form.md) + [Windows フォームでのユーザー入力の検証](../../../docs/framework/winforms/user-input-validation-in-windows-forms.md) + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-create-a-simple-bound-control-on-a-windows-form.md b/docs/framework/winforms/how-to-create-a-simple-bound-control-on-a-windows-form.md new file mode 100644 index 00000000000..f93af2ca195 --- /dev/null +++ b/docs/framework/winforms/how-to-create-a-simple-bound-control-on-a-windows-form.md @@ -0,0 +1,60 @@ +--- +title: "方法 : Windows フォームに単純バインド コントロールを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ バインド, 単純データ バインディング" + - "Windows フォーム コントロール, データ バインド" +ms.assetid: 3bcaded8-0f1a-4cc0-8830-f59be253bf4e +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 方法 : Windows フォームに単純バインド コントロールを作成する +*単純バインディング*を使用すると、データセット テーブルの列の値など、1 つのデータ要素をコントロールで表示できます。 コントロールの任意のプロパティをデータ値に単純連結できます。 + +> [!NOTE] +> 実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、**\[ツール\]** メニューの **\[設定のインポートとエクスポート\]** をクリックします。 詳細については、「[Customizing Development Settings in Visual Studio](http://msdn.microsoft.com/ja-jp/22c4debb-4e31-47a8-8f19-16f328d7dcd3)」を参照してください。 + +### コントロールを単純連結するには + +1. データ ソースに接続する。 詳細については、「[データ ソースへの接続](../../../docs/framework/data/adonet/connecting-to-a-data-source.md)」を参照してください。 + +2. フォームでコントロールを選択し、**\[プロパティ\]** ウィンドウを表示します。 + +3. **\(DataBindings\)** プロパティを展開します。 + + 頻繁に連結されるプロパティが **\(DataBindings\)** プロパティの下に表示されます。 たとえば、ほとんどのコントロールでは、**Text** プロパティが最も頻繁に連結されます。 + +4. 連結しようとしているプロパティが一般によく連結されるプロパティでない場合は、**\[詳細\]** ボックスの**省略記号ボタン** \(![VisualStudioEllipsesButton スクリーンショット](../../../docs/framework/winforms/media/vbellipsesbutton.png "vbEllipsesButton")\) をクリックして、**\[フォーマットと詳細バインド\]** ダイアログ ボックスを表示します。このダイアログ ボックスには、選択したコントロールのプロパティの完全な一覧が表示されます。 + +5. 連結するプロパティを選択し、**\[バインド\]** の下にあるドロップダウン矢印をクリックします。 + + 使用できるデータ ソースの一覧が表示されます。 + +6. 目的の 1 つのデータ要素が見つかるまで、連結先のデータ ソースを展開します。 たとえば、データセットのテーブル内の列の値に連結する場合は、データセットの名前を展開し、次にテーブル名を展開して、列名を表示します。 + +7. 連結先の要素の名前をクリックします。 + +8. **\[フォーマットと詳細バインド\]** ダイアログ ボックスで作業している場合は、**\[OK\]** をクリックして **\[プロパティ\]** ウィンドウに戻ります。 + +9. コントロールのほかのプロパティも連結する場合は、手順 3 ~ 7 を繰り返します。 + + > [!NOTE] + > 単純連結コントロールは 1 つのデータ要素だけを表示するため、単純連結コントロールを含む Windows フォームにはデータ間で移動するためのロジックを含めるのが一般的です。 + +## 参照 + + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) + [データ連結と Windows フォーム](../../../docs/framework/winforms/data-binding-and-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-create-a-windows-forms-application-from-the-command-line.md b/docs/framework/winforms/how-to-create-a-windows-forms-application-from-the-command-line.md new file mode 100644 index 00000000000..f23d4bd2191 --- /dev/null +++ b/docs/framework/winforms/how-to-create-a-windows-forms-application-from-the-command-line.md @@ -0,0 +1,125 @@ +--- +title: "方法 : コマンド ラインから Windows フォーム アプリケーションを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Windows フォーム, アプリケーション開発 (コマンド ラインからの)" + - "Windows フォーム, 作成 (基本フォームを)" + - "Windows フォーム, はじめに" +ms.assetid: 45ad3f8b-1c26-4c9f-91a9-3bb0759a47a4 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法 : コマンド ラインから Windows フォーム アプリケーションを作成する +次の手順では、コマンドラインから Windows フォーム アプリケーションを作成して実行するために完了する必要のある基本的な手順について説明します。 Visual Studio では、これらの手順に対する広範なサポートが用意されています。 「[チュートリアル : 簡単な Windows フォームの作成](http://msdn.microsoft.com/library/z9w2f38k\(v=vs.110\))」も参照してください。 + +## プロシージャ + +#### フォームを作成するには + +1. 空のコード ファイルに、次の import ステートメントまたは using ステートメントを入力します。 + + [!code-csharp[System.Windows.Forms.BasicForm#2](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.BasicForm/CS/Form1.cs#2)] + [!code-vb[System.Windows.Forms.BasicForm#2](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.BasicForm/VB/Form1.vb#2)] + +2. フォーム クラスから継承する `Form1` という名前のクラスを宣言します。 + + [!code-csharp[System.Windows.Forms.BasicForm#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.BasicForm/CS/Form1.cs#3)] + [!code-vb[System.Windows.Forms.BasicForm#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.BasicForm/VB/Form1.vb#3)] + +3. `Form1` の既定のコンストラクターを作成します。 + + 後続の手順で、コンストラクターにさらにコードを追加します。 + + [!code-csharp[System.Windows.Forms.BasicForm#4](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.BasicForm/CS/Form1.cs#4)] + [!code-vb[System.Windows.Forms.BasicForm#4](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.BasicForm/VB/Form1.vb#4)] + +4. `Main` メソッドをクラスに追加します。 + + 1. を `Main` メソッドに適用し、Windows フォーム アプリケーションがシングル スレッド アパートメントであることを指定します。 + + 2. を呼び出して、アプリケーションを Windows XP の外観にします。 + + 3. フォームのインスタンスを作成して実行します。 + + [!code-csharp[System.Windows.Forms.BasicForm#5](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.BasicForm/CS/Form1.cs#5)] + [!code-vb[System.Windows.Forms.BasicForm#5](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.BasicForm/VB/Form1.vb#5)] + +#### アプリケーションをコンパイルして実行するには + +1. .NET Framework コマンド プロンプトで、`Form1` クラスを作成したディレクトリに移動します。 + +2. フォームをコンパイルします。 + + - C\# を使用している場合は、`csc form1.cs` と入力します。 + + `または` + + - Visual Basic を使用している場合は、`vbc form1.vb /r:system.dll,system.drawing.dll,system.windows.forms.dll` と入力します。 + +3. コマンド プロンプトで、`Form1.exe` と入力します。 + +## コントロールの追加とイベントの処理 + 前の手順は、コンパイルして実行する基本的な Windows フォームを作成する方法を示しました。 次の手順では、コントロールを作成してフォームに追加し、コントロールのイベントを処理する方法を示します。 Windows フォームに追加できるコントロールの詳細については、「[Windows フォーム コントロール](../../../docs/framework/winforms/controls/index.md)」を参照してください。 + + Windows フォーム アプリケーションを作成する方法を理解するだけでなく、イベント ベースのプログラミングとユーザー入力を処理する方法を理解する必要があります。 詳細については、「[Windows フォーム内でのイベント ハンドラーの作成](../../../docs/framework/winforms/creating-event-handlers-in-windows-forms.md)」および「[ユーザーの入力の処理](../../../docs/framework/winforms/controls/handling-user-input.md)」を参照してください。 + +#### ボタン コントロールを宣言して、クリック イベントを処理するには + +1. `button1` という名前のボタン コントロールを宣言します。 + +2. コンストラクターでボタンを作成し、、および の各プロパティを設定します。 + +3. フォームにボタンを追加します。 + + 次のコード例は、ボタン コントロールを宣言する方法を示します。 + + [!code-csharp[System.Windows.Forms.FormWithButton#2](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.FormWithButton/CS/Form1.cs#2)] + [!code-vb[System.Windows.Forms.FormWithButton#2](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.FormWithButton/VB/Form1.vb#2)] + +4. ボタンで イベントを処理するメソッドを作成します。 + +5. クリック イベント ハンドラーで、メッセージ "Hello World" と共に を表示します。 + + 次のコード例は、ボタン コントロールのクリック イベントを処理する方法を示します。 + + [!code-csharp[System.Windows.Forms.FormWithButton#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.FormWithButton/CS/Form1.cs#3)] + [!code-vb[System.Windows.Forms.FormWithButton#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.FormWithButton/VB/Form1.vb#3)] + +6. イベントを作成したメソッドに関連付けます。 + + 次のコード例は、イベントをメソッドに関連付ける方法を示します。 + + [!code-csharp[System.Windows.Forms.FormWithButton#4](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.FormWithButton/CS/Form1.cs#4)] + [!code-vb[System.Windows.Forms.FormWithButton#4](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.FormWithButton/VB/Form1.vb#4)] + +7. 前の手順で説明したように、アプリケーションをコンパイルして実行します。 + +## 使用例 + 次のコード例は、前の手順の完全な例です。 + + [!code-csharp[System.Windows.Forms.FormWithButton#1](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.FormWithButton/CS/Form1.cs#1)] + [!code-vb[System.Windows.Forms.FormWithButton#1](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.FormWithButton/VB/Form1.vb#1)] + +## コードのコンパイル + +- コードをコンパイルするには、アプリケーションをコンパイルして実行する方法を説明した、前述の手順に従います。 + +## 参照 + + + [Windows フォームの表示形式の変更](../../../docs/framework/winforms/changing-the-appearance-of-windows-forms.md) + [Windows フォーム アプリケーションの拡張](../../../docs/framework/winforms/advanced/index.md) + [Windows フォームについて](../../../docs/framework/winforms/getting-started-with-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-create-event-handlers-at-run-time-for-windows-forms.md b/docs/framework/winforms/how-to-create-event-handlers-at-run-time-for-windows-forms.md new file mode 100644 index 00000000000..59538d5cd62 --- /dev/null +++ b/docs/framework/winforms/how-to-create-event-handlers-at-run-time-for-windows-forms.md @@ -0,0 +1,87 @@ +--- +title: "方法 : Windows フォームで実行時にイベント ハンドラーを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Button コントロール [Windows フォーム], イベント ハンドラー" + - "イベント ハンドラー, 作成" + - "例 [Windows フォーム], イベント処理" + - "実行時に, 作成 (イベント ハンドラーを)" + - "Windows フォーム, イベント処理" +ms.assetid: 2e7c9e1a-61fe-444d-8113-3c5bacf1c8cb +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法 : Windows フォームで実行時にイベント ハンドラーを作成する +Windows フォーム デザイナーを使用してイベント ハンドラーを作成する他に、実行時にもイベント ハンドラーを作成できます。 これによって、プログラムが最初に起動したときにイベント ハンドラーを接続する代わりに、コード内に記述されている条件に基づいて、実行時にイベント ハンドラーを接続できます。 + +### 実行時にイベント ハンドラーを作成するには + +1. コード エディターで、イベント ハンドラーを追加するフォームを開きます。 + +2. 処理するイベントに対応するメソッド シグネチャを持つメソッドをフォームに追加します。 + + たとえば、 コントロールの イベントを処理する場合は、次のようなメソッドを作成します。 + + ```vb + Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) + ' Add event handler code here. + End Sub + + ``` + + ```csharp + private void button1_Click(object sender, System.EventArgs e) + { + // Add event handler code here. + } + + ``` + + ```cpp + private: + void button1_Click(System::Object ^ sender, + System::EventArgs ^ e) + { + // Add event handler code here. + } + ``` + +3. アプリケーションの必要に応じて、イベント ハンドラーにコードを追加します。 + +4. イベント ハンドラーをどのフォームまたはコントロールに対して作成するかを指定します。 + +5. フォームのクラスのメソッドに、イベントを処理するためのイベント ハンドラーを指定するコードを追加します。 たとえば、次のコードは、 コントロールの イベントを処理する `button1_Click` イベント ハンドラーを指定します。 + + ```vb + AddHandler Button1.Click, AddressOf Button1_Click + + ``` + + ```csharp + button1.Click += new EventHandler(button1_Click); + + ``` + + ```cpp + button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); + ``` + + 上の Visual Basic コードの メソッドは、ボタンに対するクリック イベント ハンドラーを作成しています。 + +## 参照 + [Windows フォーム内でのイベント ハンドラーの作成](../../../docs/framework/winforms/creating-event-handlers-in-windows-forms.md) + [イベント ハンドラーの概要](../../../docs/framework/winforms/event-handlers-overview-windows-forms.md) + [Troubleshooting Inherited Event Handlers in Visual Basic](../Topic/Troubleshooting%20Inherited%20Event%20Handlers%20in%20Visual%20Basic.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-determine-which-modifier-key-was-pressed.md b/docs/framework/winforms/how-to-determine-which-modifier-key-was-pressed.md new file mode 100644 index 00000000000..a3da9ab432b --- /dev/null +++ b/docs/framework/winforms/how-to-determine-which-modifier-key-was-pressed.md @@ -0,0 +1,57 @@ +--- +title: "方法 : どの修飾子キーが押されたかを判断する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Alt キー" + - "Ctrl キー" + - "イベント [Windows フォーム], キーボード" + - "イベント [Windows フォーム], マウス" + - "キーボード入力" + - "キーボード, キーボード入力" + - "キー, Alt キー" + - "キー, Ctrl キー" + - "キー, 判断 (最後に押された)" + - "キー, 修飾子キー" + - "キー, Shift キー" + - "Keys.Alt 列挙型メンバー" + - "Keys.ControlKey 列挙型メンバー" + - "Keys.Shift 列挙型メンバー" + - "修飾子キー" + - "Shift キー" + - "ユーザー入力, チェック (キーボードを)" +ms.assetid: 1e184048-0ae3-4067-a200-d4ba31dbc2cb +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# 方法 : どの修飾子キーが押されたかを判断する +ユーザーのキーストロークを受け付けるアプリケーションを作成するときに、Shift、Alt、Ctrl などの修飾子キーの監視が必要になる場合があります。 他のキーまたはマウスのクリックと組み合わせて修飾子キーが押された場合、アプリケーションはそれに応じて適切な処理を実行できます。 たとえば、S キーを押した場合は単に画面上に "s" が表示されますが、Ctrl キーを押しながら S キーを押した場合は現在のドキュメントが保存されます。 イベントを処理する場合、イベント ハンドラーが受け取る プロパティは、どの修飾子キーが押されたかを指定します。 また、 プロパティは、押された文字およびビットごとの OR と結合された修飾子キーを指定します。 ただし、 イベントやマウス イベントを処理する場合、イベント ハンドラーはこの情報を受け取りません。 その場合は、 クラスの プロパティを使用する必要があります。 いずれの場合も、適切な 値とテスト対象の値について、ビットごとの AND を実行する必要があります。 列挙型には修飾子キーごとのバリエーションが用意されているため、正しい値を使用してビットごとの AND を実行することが重要です。 たとえば、Shift キーは、、および で表されます。修飾子キーとしての Shift キーをテストするための正しい値は です。 同様に、修飾子キーとしての Ctrl キーおよび Alt キーをテストするには、それぞれ 値および 値を使用する必要があります。 + +> [!NOTE] +> Visual Basic プログラマは プロパティを介してキー情報にアクセスすることもできます。 + +### どの修飾キーが押されたかを判断するには + +- 特定の修飾子キーが押されたかどうかを判断するには、ビットごとの `AND` 演算子を プロパティおよび 列挙型の値と組み合わせて使用します。 イベント ハンドラー内で Shift キーが押されたかどうかを判断する方法を次のコード例に示します。 + + [!code-cpp[System.Windows.Forms.DetermineModifierKey#5](../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.DetermineModifierKey/cpp/form1.cpp#5)] + [!code-csharp[System.Windows.Forms.DetermineModifierKey#5](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.DetermineModifierKey/CS/form1.cs#5)] + [!code-vb[System.Windows.Forms.DetermineModifierKey#5](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.DetermineModifierKey/VB/form1.vb#5)] + +## 参照 + + + [Windows フォーム アプリケーションにおけるキーボード入力](../../../docs/framework/winforms/keyboard-input-in-a-windows-forms-application.md) + [How to: Determine If CapsLock is On in Visual Basic](http://msdn.microsoft.com/ja-jp/91e60f5c-dd61-4222-ba5f-39af803afd8c) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-display-dialog-boxes-for-windows-forms.md b/docs/framework/winforms/how-to-display-dialog-boxes-for-windows-forms.md new file mode 100644 index 00000000000..06bec4b720c --- /dev/null +++ b/docs/framework/winforms/how-to-display-dialog-boxes-for-windows-forms.md @@ -0,0 +1,60 @@ +--- +title: "方法 : Windows フォームのダイアログ ボックスを表示する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ダイアログ ボックス, 表示 (Windows フォームの)" + - "Windows フォームのダイアログ ボックス, 表示" + - "Windows フォーム, 呼び出し (フォームからの他のフォームの)" + - "Windows フォーム, 表示" +ms.assetid: aaac1b38-c651-495a-8d3d-5a9bfb32fee3 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法 : Windows フォームのダイアログ ボックスを表示する +ダイアログ ボックスは、アプリケーションで表示されるその他のフォームと同じ方法で表示されます。 スタートアップ フォームは、アプリケーションの実行時に自動的に読み込まれます。 別のフォームまたはダイアログ ボックスをアプリケーションで表示するには、フォームまたはダイアログ ボックスを読み込んで表示するコードを作成します。 同様に、フォームまたはダイアログ ボックスを非表示にするには、アンロードまたは非表示にするコードを作成します。 + +### ダイアログ ボックスを表示するには + +1. ダイアログ ボックスを開くために使用するイベント ハンドラーに移動します。 ダイアログ ボックスを開くイベントは、メニュー コマンドが選択されたとき、ボタンがクリックされたとき、または他のイベントが発生したときに発生します。 + +2. イベント ハンドラーに、ダイアログ ボックスを表示するコードを追加します。 次の例では、ボタン クリック イベントを使用してダイアログ ボックスを表示します。 + + ```vb + Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click + Dim dlg1 as new Form() + dlg1.ShowDialog() + End Sub + + ``` + + ```csharp + private void button1_Click(object sender, System.EventArgs e) + { + Form dlg1 = new Form(); + dlg1.ShowDialog(); + } + + ``` + + ```cpp + private: + void button1_Click(System::Object ^ sender, + System::EventArgs ^ e) + { + Form ^ dlg1 = gcnew Form(); + dlg1->ShowDialog(); + } + ``` \ No newline at end of file diff --git a/docs/framework/winforms/how-to-distinguish-between-clicks-and-double-clicks.md b/docs/framework/winforms/how-to-distinguish-between-clicks-and-double-clicks.md new file mode 100644 index 00000000000..16ea9c09a83 --- /dev/null +++ b/docs/framework/winforms/how-to-distinguish-between-clicks-and-double-clicks.md @@ -0,0 +1,51 @@ +--- +title: "方法 : クリックとダブルクリックを識別する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "マウス クリック, シングルとダブルの比較" + - "マウス, クリック" + - "マウス, ダブルクリック" +ms.assetid: d836ac8c-85bc-4f3a-a761-8aee03dc682c +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法 : クリックとダブルクリックを識別する +通常、1 回の*クリック*によってユーザー インターフェイス \(UI\) のアクションが開始され、*ダブルクリック*によってそのアクションが拡張されます。 たとえば、通常、1 回のクリックで項目が選択され、ダブルクリックでその項目が編集されます。 ただし、Windows フォームのクリック イベントでは、クリックとダブルクリックによって矛盾するアクションが実行されるようなシナリオには簡単に対応できません。それは、 イベントや イベントに結び付けられたアクションが、 イベントや イベントに結び付けられたアクションの前に実行されるためです。 ここでは、この問題の 2 つの解決方法について説明します。 1 つの解決方法は、ダブルクリック イベントを処理し、クリック イベントの処理のアクションをロールバックすることです。 まれに、クリック動作およびダブルクリック動作のシミュレートが必要になることがあります。その場合は、 イベントを処理し、 クラスの プロパティと プロパティを使用します。 クリック間の時間を測定し、 の値に到達する前に 2 回目のクリックが発生しており、かつ によって定義された四角形内でクリックが行われている場合は、ダブルクリック アクションが実行されます。それ以外の場合は、クリック アクションが実行されます。 + +### クリック アクションをロールバックするには + +- 対象のコントロールに標準のダブルクリック動作が含まれることを確認します。 含まれない場合は、 メソッドを使用してコントロールでダブルクリックを有効にします。 ダブルクリック イベントを処理して、ダブルクリック アクションを実行するだけでなく、クリック アクションをロールバックします。 ダブルクリックが有効になっているカスタム ボタンを作成する方法と、ダブルクリック イベント処理コード内でクリック アクションをロールバックする方法を次のコード例に示します。 + + [!code-csharp[System.Windows.Forms.ButtonDoubleClick#1](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.ButtonDoubleClick/CS/Form1.cs#1)] + [!code-vb[System.Windows.Forms.ButtonDoubleClick#1](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.ButtonDoubleClick/VB/Form1.vb#1)] + +### MouseDown イベントでのクリックを区別するには + +- イベントを処理し、適切な プロパティと コンポーネントを使用して、クリックが発生した場所および間隔を確認します。 クリックとダブルクリックのどちらが発生したかに応じて、適切なアクションを実行します。 これを実行する方法を次のコード例に示します。 + + [!code-cpp[System.Windows.Forms.SingleVersusDoubleClick#0](../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.SingleVersusDoubleClick/cpp/form1.cpp#0)] + [!code-csharp[System.Windows.Forms.SingleVersusDoubleClick#0](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.SingleVersusDoubleClick/CS/form1.cs#0)] + [!code-vb[System.Windows.Forms.SingleVersusDoubleClick#0](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.SingleVersusDoubleClick/VB/form1.vb#0)] + +## コードのコンパイル + これらの例には次の項目が必要です。 + +- System、System.Drawing、および System.Windows.Forms の各アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] のコマンド ラインからこれらの例をビルドする方法の詳細については、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + [Windows フォーム アプリケーションにおけるマウス入力](../../../docs/framework/winforms/mouse-input-in-a-windows-forms-application.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-handle-keyboard-input-at-the-form-level.md b/docs/framework/winforms/how-to-handle-keyboard-input-at-the-form-level.md new file mode 100644 index 00000000000..31ea3e5cd58 --- /dev/null +++ b/docs/framework/winforms/how-to-handle-keyboard-input-at-the-form-level.md @@ -0,0 +1,51 @@ +--- +title: "方法 : キーボード入力をフォーム レベルで処理する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "キーボード入力, フォーム レベルでの" + - "キーボード, フォーム レベルの入力" + - "Windows フォーム, 処理 (キーボード入力を)" +ms.assetid: d7f8b390-dc91-42d2-ae0f-2ffa388127ad +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法 : キーボード入力をフォーム レベルで処理する +Windows フォームでは、キーボード メッセージがコントロールに到達する前に、それらのメッセージをフォーム レベルで処理できます。 ここでは、このタスクを実行する方法について説明します。 + +### キーボード入力をフォーム レベルで処理するには + +- スタートアップ フォームの イベントまたは イベントを処理し、このフォームの プロパティを `true` に設定して、キーボード メッセージがフォーム上のコントロールに到達する前にフォームによって受け取られるようにします。 次のコード例では、 イベントを処理して、すべての数値キーを検出し、"1"、"4"、および "7" の各キーを使用します。 + + [!code-cpp[System.Windows.Forms.KeyboardInputForm#10](../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInputForm/cpp/form1.cpp#10)] + [!code-csharp[System.Windows.Forms.KeyboardInputForm#10](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInputForm/CS/form1.cs#10)] + [!code-vb[System.Windows.Forms.KeyboardInputForm#10](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInputForm/VB/form1.vb#10)] + +## 使用例 + 次のコード例は、上の例の完全なアプリケーションです。 このアプリケーションには、 の他に、 からフォーカスを移動できるようにするいくつかのコントロールが含まれています。 メイン イベントは "1"、"4"、および "7" の各キーを使用し、 イベントは "2"、"5"、および "8" の各キーを使用します。残りのキーは表示されるだけです。 にフォーカスがあるときに数値キーを押すと生成される 出力と、他のコントロールのいずれかにフォーカスがあるときに数値キーを押すと生成される 出力を比較してください。 + + [!code-cpp[System.Windows.Forms.KeyBoardInputForm#0](../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInputForm/cpp/form1.cpp#0)] + [!code-csharp[System.Windows.Forms.KeyBoardInputForm#0](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInputForm/CS/form1.cs#0)] + [!code-vb[System.Windows.Forms.KeyBoardInputForm#0](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInputForm/VB/form1.vb#0)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- System、System.Drawing、および System.Windows.Forms の各アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法の詳細については、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + [Windows フォーム アプリケーションにおけるキーボード入力](../../../docs/framework/winforms/keyboard-input-in-a-windows-forms-application.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-handle-user-input-events-in-windows-forms-controls.md b/docs/framework/winforms/how-to-handle-user-input-events-in-windows-forms-controls.md new file mode 100644 index 00000000000..9193561e639 --- /dev/null +++ b/docs/framework/winforms/how-to-handle-user-input-events-in-windows-forms-controls.md @@ -0,0 +1,40 @@ +--- +title: "方法 : Windows フォーム コントロールでユーザー入力イベントを処理する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ユーザー入力, Windows フォーム コントロール" + - "Windows フォーム コントロール, ユーザー入力" +ms.assetid: 3de74dcf-fae3-42d0-92b5-bc04a61a6888 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 方法 : Windows フォーム コントロールでユーザー入力イベントを処理する +この例では、Windows フォーム コントロールで発生する可能性がある、ほとんどのキーボード、マウス、フォーカス、および検証イベントを処理する方法を示します。 `TextBoxInput` という名前のテキスト ボックスは、フォーカスがあるときにイベントを受け取り、各イベントに関する情報は、イベントが発生する順序で、`TextBoxOutput` という名前のテキスト ボックスに書き込まれます。 アプリケーションには、レポートするイベントをフィルター処理するために使用できるチェック ボックスのセットも含まれています。 + +## 使用例 + [!code-cpp[System.Windows.Forms.UserInputWalkthrough#0](../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.UserInputWalkthrough/cpp/form1.cpp#0)] + [!code-csharp[System.Windows.Forms.UserInputWalkthrough#0](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.UserInputWalkthrough/CS/form1.cs#0)] + [!code-vb[System.Windows.Forms.UserInputWalkthrough#0](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.UserInputWalkthrough/VB/form1.vb#0)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- System、System.Drawing、および System.Windows.Forms の各アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法の詳細については、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + [Windows フォームでのユーザー入力](../../../docs/framework/winforms/user-input-in-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-implement-the-ilistsource-interface.md b/docs/framework/winforms/how-to-implement-the-ilistsource-interface.md new file mode 100644 index 00000000000..23944b68f82 --- /dev/null +++ b/docs/framework/winforms/how-to-implement-the-ilistsource-interface.md @@ -0,0 +1,52 @@ +--- +title: "方法 : IListSource インターフェイスを実装する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ バインド, 実装" + - "IListSource インターフェイス" +ms.assetid: 63ce27aa-2e23-4fbd-8228-0c1726f6c421 +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# 方法 : IListSource インターフェイスを実装する + を実装する代わりに別の場所からリストを提供する、バインドできるクラスを作成するには、 インターフェイスを実装します。 + +## 使用例 + インターフェイスを実装する方法を次のコード例に示します。 `EmployeeListSource` というコンポーネントは、 メソッドを実装することにより、データ バインディングの を公開します。 + + [!code-csharp[System.ComponentModel.IListSource#1](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.IListSource/CS/EmployeeListSource.cs#1)] + [!code-vb[System.ComponentModel.IListSource#1](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.IListSource/VB/EmployeeListSource.vb#1)] + + [!code-csharp[System.ComponentModel.IListSource#10](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.IListSource/CS/Employee.cs#10)] + [!code-vb[System.ComponentModel.IListSource#10](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.IListSource/VB/Employee.vb#10)] + + [!code-csharp[System.ComponentModel.IListSource#100](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.IListSource/CS/BusinessObjectBase.cs#100)] + [!code-vb[System.ComponentModel.IListSource#100](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.IListSource/VB/BusinessObjectBase.vb#100)] + + [!code-csharp[System.ComponentModel.IListSource#1000](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.IListSource/CS/Form1.cs#1000)] + [!code-vb[System.ComponentModel.IListSource#1000](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.IListSource/VB/Form1.vb#1000)] + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Drawing アセンブリと System.Windows.Forms アセンブリへの参照。 + +## 参照 + + + + + [データ連結と Windows フォーム](../../../docs/framework/winforms/data-binding-and-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-implement-the-inotifypropertychanged-interface.md b/docs/framework/winforms/how-to-implement-the-inotifypropertychanged-interface.md new file mode 100644 index 00000000000..dc953ae1bb8 --- /dev/null +++ b/docs/framework/winforms/how-to-implement-the-inotifypropertychanged-interface.md @@ -0,0 +1,34 @@ +--- +title: "方法 : INotifyPropertyChanged インターフェイスを実装する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "INotifyPropertyChanged インターフェイス, 実装" +ms.assetid: eac428af-b43b-46ac-80d9-1a5f88658725 +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法 : INotifyPropertyChanged インターフェイスを実装する + インターフェイスを実装する方法を次のコード例に示します。 このインターフェイスを Windows フォーム データ バインディングで使用されるビジネス オブジェクトに実装します。 実装すると、インターフェイスは、ビジネス オブジェクトでのバインド コントロールのプロパティの変更内容と通信します。 + +## 使用例 + [!code-csharp[System.ComponentModel.IPropertyChangeExample#1](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.IPropertyChangeExample/CS/Form1.cs#1)] + [!code-vb[System.ComponentModel.IPropertyChangeExample#1](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.IPropertyChangeExample/VB/Form1.vb#1)] + +## 参照 + [方法 : PropertyNameChanged パターンを適用する](../../../docs/framework/winforms/how-to-apply-the-propertynamechanged-pattern.md) + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) + [方法 : BindingSource と INotifyPropertyChanged の各インターフェイスを使用して変更通知を発生させる](../../../docs/framework/winforms/controls/raise-change-notifications--bindingsource.md) + [Windows フォーム データ バインドの変更通知](../../../docs/framework/winforms/change-notification-in-windows-forms-data-binding.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-implement-the-itypedlist-interface.md b/docs/framework/winforms/how-to-implement-the-itypedlist-interface.md new file mode 100644 index 00000000000..5f8a6bffdfd --- /dev/null +++ b/docs/framework/winforms/how-to-implement-the-itypedlist-interface.md @@ -0,0 +1,50 @@ +--- +title: "方法 : ITypedList インターフェイスを実装する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "BindingList(Of T) クラス" + - "データ バインド, 実装" + - "IBindingList インターフェイス" + - "ITypedList インターフェイス" +ms.assetid: 834cc15c-50bc-4a8b-a610-313d6a217357 +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# 方法 : ITypedList インターフェイスを実装する +バインドできるリストのスキーマを検出できるようにするには、 インターフェイスを実装します。 + +## 使用例 + インターフェイスを実装する方法を次のコード例に示します。 `SortableBindingList` というジェネリック型は、 クラスから派生し、 インターフェイスを実装します。 `Customer` という単純なクラスは、 コントロールのヘッダーにバインドされるデータを提供します。 + + [!code-csharp[System.ComponentModel.ITypedList#1](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.ITypedList/CS/SortableBindingList.cs#1)] + [!code-vb[System.ComponentModel.ITypedList#1](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.ITypedList/VB/SortableBindingList.vb#1)] + + [!code-csharp[System.ComponentModel.ITypedList#10](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.ITypedList/CS/Customer.cs#10)] + [!code-vb[System.ComponentModel.ITypedList#10](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.ITypedList/VB/Customer.vb#10)] + + [!code-csharp[System.ComponentModel.ITypedList#100](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.ITypedList/CS/Form1.cs#100)] + [!code-vb[System.ComponentModel.ITypedList#100](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.ITypedList/VB/Form1.vb#100)] + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Drawing アセンブリと System.Windows.Forms アセンブリへの参照。 + +## 参照 + + + + [データ連結と Windows フォーム](../../../docs/framework/winforms/data-binding-and-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-modify-keyboard-input-to-a-standard-control.md b/docs/framework/winforms/how-to-modify-keyboard-input-to-a-standard-control.md new file mode 100644 index 00000000000..8c7f336f188 --- /dev/null +++ b/docs/framework/winforms/how-to-modify-keyboard-input-to-a-standard-control.md @@ -0,0 +1,79 @@ +--- +title: "方法 : キーボード入力を標準コントロールに変更する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "キーボード入力, 変更" + - "キーボード, キーボード入力" + - "変更 (キーボード入力を)" + - "Windows フォーム, 変更 (キーボード入力を)" +ms.assetid: 626d3712-d866-4988-bcda-a2d5b36ec0ba +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : キーボード入力を標準コントロールに変更する +Windows フォームは、キーボードの入力を使用して変更する機能を提供します。 キーの使用とは、メッセージ キューのさらに下のその他のメソッドとイベントが、キーの値を受信しないようにメソッドまたはイベント ハンドラー内のキーを処理することを表します。 キーの変更とは、メッセージ キューのさらに下のメソッドとイベント ハンドラーが、異なるキーの値を受け取るようにキーの値を変更することを表します。 このトピックでは、これらのタスクを実行する方法について説明します。 + +### キーを使用するには + +- イベント ハンドラーで、 クラスの プロパティを `true` に設定します。 + + または + + イベント ハンドラーで、 クラスの プロパティを `true` に設定します。 + + > [!NOTE] + > イベント ハンドラーで プロパティを設定すると、 イベントと イベントが現在のキー入力から発生しないようにすることができます。 この目的には、 プロパティを使用します。 + + 次の例は、 イベント ハンドラーによって受信された プロパティを検査する `switch` ステートメントの抜粋です。 このコードは、'A' と 'a' 文字のキーを使用します。 + + [!code-csharp[System.Windows.Forms.KeyBoardInput#6](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInput/CS/form1.cs#6)] + [!code-vb[System.Windows.Forms.KeyBoardInput#6](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInput/VB/form1.vb#6)] + +### 標準の文字のキーを変更するには + +- イベント ハンドラーで、 クラスの プロパティを新しい文字のキーの値に設定します。 + + 次の例は、'B' を 'A' に変更して、'b' を 'a' に変更する `switch` ステートメントの抜粋です。 パラメーターの のプロパティが `false` に設定され、新しいキーの値が、メッセージ キューの他のメソッドとイベントに反映されることに注意してください。 + + [!code-csharp[System.Windows.Forms.KeyBoardInput#7](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInput/CS/form1.cs#7)] + [!code-vb[System.Windows.Forms.KeyBoardInput#7](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInput/VB/form1.vb#7)] + +### 非文字キーを変更するには + +- Windows メッセージを処理する メソッドをオーバーライドして、WM\_KEYDOWN または WM\_SYSKEYDOWN のメッセージを検出し、 パラメーターの プロパティを、新しい非文字キーを表す 値に設定します。 + + 次のコード例は、F1 から F9 のキーを検出して、F3 キーを押したときに F1 に変更するよう、コントロールの メソッドをオーバーライドする方法を示しています、 キーボードのメッセージを代行受信するようにオーバーライドできる メソッドの詳細については、「[Windows フォーム アプリケーションにおけるユーザー入力](../../../docs/framework/winforms/user-input-in-a-windows-forms-application.md)」と「[キーボード入力のしくみ](../../../docs/framework/winforms/how-keyboard-input-works.md)」を参照してください。 + + [!code-csharp[System.Windows.Forms.KeyBoardInput#12](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInput/CS/form1.cs#12)] + [!code-vb[System.Windows.Forms.KeyBoardInput#12](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInput/VB/form1.vb#12)] + +## 使用例 + 次のコード例は、前のセクションのコード例の完全なアプリケーションです。 アプリケーションは、 クラスから派生したカスタム コントロールを使用して、キーボードの入力を使用して変更します。 + + [!code-csharp[System.Windows.Forms.KeyBoardInput#0](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInput/CS/form1.cs#0)] + [!code-vb[System.Windows.Forms.KeyBoardInput#0](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.KeyboardInput/VB/form1.vb#0)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- System、System.Drawing、および System.Windows.Forms の各アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法の詳細については、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 「[方法 : 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + [Windows フォーム アプリケーションにおけるキーボード入力](../../../docs/framework/winforms/keyboard-input-in-a-windows-forms-application.md) + [Windows フォーム アプリケーションにおけるユーザー入力](../../../docs/framework/winforms/user-input-in-a-windows-forms-application.md) + [キーボード入力のしくみ](../../../docs/framework/winforms/how-keyboard-input-works.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-navigate-data-in-windows-forms.md b/docs/framework/winforms/how-to-navigate-data-in-windows-forms.md new file mode 100644 index 00000000000..df8f440180a --- /dev/null +++ b/docs/framework/winforms/how-to-navigate-data-in-windows-forms.md @@ -0,0 +1,63 @@ +--- +title: "方法 : Windows フォームでデータ間を移動する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "CurrencyManager クラス, 移動 (Windows フォームのデータを)" + - "カーソル, データ ソース" + - "データ [Windows フォーム], 移動" + - "データ ソース, Windows フォーム" + - "Windows フォーム, 移動" +ms.assetid: 97360f7b-b181-4084-966a-4c62518f735b +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : Windows フォームでデータ間を移動する +Windows アプリケーションで、データ ソースのレコード間を最も簡単な方法で移動するには、 コンポーネントをデータ ソースにバインドし、その にコントロールをバインドします。 その後で、 の組み込みの移動メソッド \(たとえば、、および \) を使用します。 これらのメソッドを使用すると、 プロパティおよび プロパティが適切に調整されます。 また、 プロパティを設定すると、検索した項目を現在の項目として設定できます。 + +### データ ソース内での位置をインクリメントするには + +1. バインドされているデータの プロパティを、移動先のレコード位置に設定します。 次に示す例では、`nextButton` がクリックされたときに、 メソッドを使用して プロパティをインクリメントします。 は、データセット `Northwind` の `Customers` テーブルに関連付けられています。 + + > [!NOTE] + > プロパティを最初または最後のレコードを超える値に設定してもエラーにはなりません。これは、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では位置をリストの範囲外の値に設定できないためです。 アプリケーションで最初または最後のレコードを超えたかどうかを知る必要がある場合は、データ要素数を超えるかどうかをテストするロジックを追加します。 + + [!code-csharp[System.Windows.Forms.NavigatingData#4](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.NavigatingData/CS/Form1.cs#4)] + [!code-vb[System.Windows.Forms.NavigatingData#4](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.NavigatingData/VB/Form1.vb#4)] + +### 最初または最後を超えたかどうかを確認するには + +1. イベントのイベント ハンドラーを作成します。 このハンドラーで、指定された位置の値が実際のデータ要素数を超えているかどうかをテストできます。 + + 最後のデータ要素に達したかどうかをテストする方法の例を次に示します。 この例では、最後の要素に達している場合は、フォームの **\[Next\]** ボタンが無効になります。 + + > [!NOTE] + > コード内を移動するリストを変更する場合は、ユーザーが新しいリスト全体を移動できるように、**\[次へ\]** ボタンをもう一度有効にする必要があるので注意してください。 また、扱う対象となる特定の の上記の イベントを、イベント処理メソッドと関連付ける必要がある点にも注意してください。 イベントを処理するメソッドの例を次に示します。 + + [!code-csharp[System.Windows.Forms.NavigatingData#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.NavigatingData/CS/Form1.cs#3)] + [!code-vb[System.Windows.Forms.NavigatingData#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.NavigatingData/VB/Form1.vb#3)] + +### 項目を検索し、現在の項目として設定するには + +1. 現在の項目として設定するレコードを検索します。 を実装しているデータ ソースの場合には、 メソッドを使用して検索を実行できます。 を実装しているデータ ソースの例としては、 および があります。 + + [!code-csharp[System.Windows.Forms.NavigatingData#2](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.NavigatingData/CS/Form1.cs#2)] + [!code-vb[System.Windows.Forms.NavigatingData#2](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.NavigatingData/VB/Form1.vb#2)] + +## 参照 + [Windows フォームがサポートするデータ ソース](../../../docs/framework/winforms/data-sources-supported-by-windows-forms.md) + [Windows フォーム データ バインドの変更通知](../../../docs/framework/winforms/change-notification-in-windows-forms-data-binding.md) + [データ連結と Windows フォーム](../../../docs/framework/winforms/data-binding-and-windows-forms.md) + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-resize-windows-forms.md b/docs/framework/winforms/how-to-resize-windows-forms.md new file mode 100644 index 00000000000..f6d8bab0185 --- /dev/null +++ b/docs/framework/winforms/how-to-resize-windows-forms.md @@ -0,0 +1,132 @@ +--- +title: "方法 : Windows フォームのサイズを変更する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "サイズ変更 (Windows フォームを)" + - "Windows フォーム, サイズ変更" +ms.assetid: 5d9dd47e-e68c-48c9-a0a3-a9ff34ba009d +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法 : Windows フォームのサイズを変更する +Windows フォームのサイズは、いくつかの方法で指定できます。 プロパティに新しい値を設定したり、 プロパティまたは プロパティを個別に調整したりすることで、フォームの高さと幅の両方をプログラムで変更できます。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] を使用している場合は、Windows フォーム デザイナーを使用してサイズを変更することができます。 「[方法 : デザイナーを使用して Windows フォームのサイズを変更する](http://msdn.microsoft.com/library/37k2zkwx\(v=vs.110\))」も参照してください。 + +### プログラムによってフォームのサイズを変更するには + +- フォームの プロパティを設定して、実行時にフォームのサイズを定義します。 + + 次のコード例では、フォームのサイズを 100 × 100 ピクセルに設定します。 + + ```vb + Form1.Size = New System.Drawing.Size(100, 100) + + ``` + + ```csharp + Form1.Size = new System.Drawing.Size(100, 100); + + ``` + + ```cpp + Form1->Size = System::Drawing::Size(100, 100); + ``` + +### フォームの幅と高さをプログラムで変更するには + +- を定義した後で、 プロパティまたは プロパティを使用して、フォームの高さと幅のいずれかを変更します。 + + 次のコード例は、フォームの幅を、フォームの左端から 300 ピクセルに設定し、高さは一定のままにする方法を示しています。 + + ```vb + Form1.Width = 300 + + ``` + + ```csharp + Form1.Width = 300; + + ``` + + ```cpp + Form1->Width = 300; + ``` + + または + + プロパティを設定して、 または を変更します。 + + ただし、次のコード例が示すように、この方法は、 プロパティまたは プロパティをただ設定する方法よりも煩雑になります。 + + ```vb + Form1.Size = New Size(300, Form1.Size.Height) + + ``` + + ```csharp + Form1.Size = new Size(300, Form1.Size.Height); + + ``` + + ```cpp + Form1->Size = System::Drawing::Size(300, Form1->Size.Height); + ``` + +### フォームのサイズをプログラムで増分して変更するには + +- フォームのサイズを増分するには、 プロパティと プロパティを設定します。 + + 次のコード例は、フォームの幅を、現在の設定より 200 ピクセル広くする方法を示しています。 + + ```vb + Form1.Width += 200 + + ``` + + ```csharp + Form1.Width += 200; + + ``` + + ```cpp + Form1->Width += 200; + ``` + + > [!CAUTION] + > プロパティを新しい 構造に設定することにより高さと幅の両方のディメンションを同時に設定するというのでない限り、フォームのディメンションを変更するには、常に プロパティまたは プロパティを使用します。 プロパティは、値型である 構造を返します。 値型のプロパティに新しい値を割り当てることはできません。 このため、次のコード例はコンパイルされません。 + + ```vb + ' NOTE: CODE WILL NOT COMPILE + Dim f As New Form() + f.Size.Width += 100 + + ``` + + ```csharp + // NOTE: CODE WILL NOT COMPILE + Form f = new Form(); + f.Size.Width += 100; + + ``` + + ```cpp + // NOTE: CODE WILL NOT COMPILE + Form^ f = gcnew Form(); + f->Size->X += 100; + ``` + +## 参照 + [Windows フォームについて](../../../docs/framework/winforms/getting-started-with-windows-forms.md) + [Windows フォーム アプリケーションの拡張](../../../docs/framework/winforms/advanced/index.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-respond-to-font-scheme-changes-in-a-windows-forms-application.md b/docs/framework/winforms/how-to-respond-to-font-scheme-changes-in-a-windows-forms-application.md new file mode 100644 index 00000000000..4d327ce1ad7 --- /dev/null +++ b/docs/framework/winforms/how-to-respond-to-font-scheme-changes-in-a-windows-forms-application.md @@ -0,0 +1,75 @@ +--- +title: "方法 : Windows フォーム アプリケーションでのフォント パターンの変更に応答する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Windows フォーム, フォント パターンの変更" +ms.assetid: 4db27702-22e7-43bf-a07d-9a004549853c +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 方法 : Windows フォーム アプリケーションでのフォント パターンの変更に応答する +Windows オペレーティング システムでは、システム全体のフォント設定を変更して、既定のフォントの表示サイズを大きくしたり、小さくしたりできます。 このようなフォント設定の変更は、視覚障害があり、画面上のテキストを読み取る際に比較的大きめの活字を必要とするユーザーにとって重要です。 Windows フォーム アプリケーションを、このような変更に合わせて調整するには、フォント パターンが変更されたときにフォームとフォームに含まれるすべてのテキストのサイズを拡大または縮小します。 フォント サイズの変更にフォームが動的に対応するようにする場合は、フォームにコードを追加します。 + + 通常、Windows フォームで使用される既定のフォントは、 名前空間での `GetStockObject(DEFAULT_GUI_FONT)` への呼び出しで返されたフォントです。 この呼び出しで返されたフォントは、画面の解像度を変更したときにのみ変更されます。 次の手順に示すように、フォント サイズの変更に応答するには、コードによって既定のフォントを に変更する必要があります。 + +### デスクトップ フォントを使用して、フォント パターンの変更に応答するには + +1. フォームを作成し、必要なコントロールを追加します。 詳細については、「[方法 : コマンド ラインから Windows フォーム アプリケーションを作成する](../../../docs/framework/winforms/how-to-create-a-windows-forms-application-from-the-command-line.md)」および「[Windows フォームで使用するコントロール](../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md)」を参照してください。 + +2. 名前空間への参照をコードに追加します。 + + [!code-csharp[WinFormsAutoScaling#2](../../../samples/snippets/csharp/VS_Snippets_Winforms/WinFormsAutoScaling/CS/Form1.cs#2)] + [!code-vb[WinFormsAutoScaling#2](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/WinFormsAutoScaling/VB/Form1.vb#2)] + +3. 必要なイベント ハンドラーをフックし、フォームで使用する既定のフォントを変更するために、次のコードをフォームのコンストラクターに追加します。 + + [!code-csharp[WinFormsAutoScaling#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/WinFormsAutoScaling/CS/Form1.cs#3)] + [!code-vb[WinFormsAutoScaling#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/WinFormsAutoScaling/VB/Form1.vb#3)] + +4. イベントのハンドラーを実装します。これにより、 カテゴリが変更されたときにフォームが自動的にスケーリングされます。 + + [!code-csharp[WinFormsAutoScaling#4](../../../samples/snippets/csharp/VS_Snippets_Winforms/WinFormsAutoScaling/CS/Form1.cs#4)] + [!code-vb[WinFormsAutoScaling#4](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/WinFormsAutoScaling/VB/Form1.vb#4)] + +5. 最後に、 イベント ハンドラーをデタッチする、 イベントのハンドラーを実装します。 + +> [!IMPORTANT] +> このコードを追加しないと、アプリケーションでメモリ リークが発生します。 + + [!code-csharp[WinFormsAutoScaling#5](../../../samples/snippets/csharp/VS_Snippets_Winforms/WinFormsAutoScaling/CS/Form1.cs#5)] + [!code-vb[WinFormsAutoScaling#5](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/WinFormsAutoScaling/VB/Form1.vb#5)] + +1. コードをコンパイルして実行します。 + +### Windows XP でフォント パターンを手動で変更するには + +1. Windows フォーム アプリケーションを実行しているときに Windows のデスクトップを右クリックし、ショートカット メニューの **\[プロパティ\]** をクリックします。 + +2. **\[画面のプロパティ\]** ダイアログ ボックスの **\[デザイン\]** タブをクリックします。 + +3. **\[フォント サイズ\]** ボックスで、新しいフォント サイズを選択します。 + + フォームは、デスクトップ フォント パターンの実行時の変更に対応します。 ユーザーが **\[標準\]**、**\[大\]**、または **\[特大\]** のいずれかに変更すると、フォームのフォントとスケールが適切に変更されます。 + +## 使用例 + [!code-csharp[WinFormsAutoScaling#1](../../../samples/snippets/csharp/VS_Snippets_Winforms/WinFormsAutoScaling/CS/Form1.cs#1)] + [!code-vb[WinFormsAutoScaling#1](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/WinFormsAutoScaling/VB/Form1.vb#1)] + + 次のコード例に示されているコンストラクターには、Visual Studio で新しい Windows フォームを作成するときに定義される `InitializeComponent` への呼び出しが含まれています。 アプリケーションをコマンド ラインで作成する場合は、このコード行を削除してください。 + +## 参照 + + [Windows フォームにおける自動スケーリング](../../../docs/framework/winforms/automatic-scaling-in-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/how-to-simulate-mouse-and-keyboard-events-in-code.md b/docs/framework/winforms/how-to-simulate-mouse-and-keyboard-events-in-code.md new file mode 100644 index 00000000000..0e97c0a1fb4 --- /dev/null +++ b/docs/framework/winforms/how-to-simulate-mouse-and-keyboard-events-in-code.md @@ -0,0 +1,98 @@ +--- +title: "方法 : マウス イベントとキーボード イベントをコードでシミュレートする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "キーボード, イベントのシミュレート" + - "ユーザー入力, シミュレート" + - "SendKeys, 使用" + - "マウス クリック, シミュレート" + - "マウス, イベントのシミュレート" +ms.assetid: 6abcb67e-3766-4af2-9590-bf5dabd17e41 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : マウス イベントとキーボード イベントをコードでシミュレートする +Windows フォームは、プログラムでマウスおよびキーボード入力をシミュレートするためのいくつかのオプションを提供します。 ここでは、これらのオプションの概要について説明します。 + +## マウス入力のシミュレート + マウス イベントをシミュレートする最善の方法は、`On`*EventName* メソッドを呼び出して、シミュレートの対象となるマウス イベントを発生させる方法です。 このオプションは、イベントを発生させるメソッドが保護され、コントロールまたはフォームの外部にアクセスできないため、通常はカスタム コントロールおよびフォーム内でのみ可能です。 たとえば、次の手順は、コードでマウスの右ボタンのクリックをシミュレートする方法を示しています。 + +#### プログラムでマウスの右ボタンをクリックするには + +1. プロパティが 値に設定された を作成します。 + +2. この を持つ メソッドを引数として呼び出します。 + + カスタム コントロールの詳細については、「[デザイン時の Windows フォーム コントロールの開発](../../../docs/framework/winforms/controls/developing-windows-forms-controls-at-design-time.md)」をご覧ください。 + + マウス入力をシミュレートする方法はほかにもあります。 たとえば、マウス入力によって標準的に設定する状態を表すコントロールのプロパティをプログラムで設定したり \( コントロールの プロパティなど\)、シミュレートの対象イベントにアタッチされているデリゲートを直接呼び出したりできます。 + +## キーボード入力のシミュレート + 前述のマウス入力に関する戦略を使用することで、キーボード入力をシミュレートできますが、Windows フォームはアクティブなアプリケーションにキー入力を送信するための クラスも提供します。 + +> [!CAUTION] +> アプリケーションが国際対応し、さまざまなキーボードの使用を想定している場合は、 の使用により予期しない結果になる可能性があるため、回避する必要があります。 + +> [!NOTE] +> .NET Framework 3.0 の クラスが更新され、Windows Vista で実行されるアプリケーションで使用できるようになりました。 Windows Vista の強化されたセキュリティ、\(ユーザー アカウント制御または UAC と呼ばれます\) により、前の実装は想定どおり機能できません。 +> +> クラスはタイミングの問題が発生する可能性があり、一部の開発者は回避策を取る必要がありました。 更新された実装は、引き続きタイミングの問題が発生する可能性がありますが、速度が少し向上し、回避策の変更が必要となる可能性があります。 クラスは、最初に前の実装を使用しようとし、失敗した場合に、新しい実装を使用します。 その結果、 クラスが別のオペレーティング システムと異なる動作を取る可能性があります。 さらに、 クラスは、新しい実装を使用した場合、 メソッドが別のプロセスに送信されたときにメッセージの処理を待機しません。 +> +> アプリケーションが、オペレーティング システムに関係なく一貫した動作に依存する場合、app.config ファイルに次のアプリケーション設定を追加することで、 クラスが新しい実装を使用するよう強制することができます。 +> +> `` +> +> `` +> +> `` +> +> クラスが前の実装を使用するよう強制するには、代わりに値 `"JournalHook"` を使用します。 + +#### 同じアプリケーションにキーストロークを送信するには + +1. クラスの メソッドまたは メソッドを呼び出します。 指定されたキーストロークは、アプリケーションのアクティブなコントロールによって受信されます。 次のコード例では、 を使用して、ユーザーがフォームのサーフェイスをダブルクリックしたときに、ENTER キーを押す操作をシミュレートします。 この例では、0 のタブ インデックスを持つ単一の コントロールがある を想定しています。 + + [!code-cpp[System.Windows.Forms.SimulateKeyPress#10](../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.SimulateKeyPress/cpp/form1.cpp#10)] + [!code-csharp[System.Windows.Forms.SimulateKeyPress#10](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.SimulateKeyPress/CS/form1.cs#10)] + [!code-vb[System.Windows.Forms.SimulateKeyPress#10](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.SimulateKeyPress/VB/form1.vb#10)] + +#### 別のアプリケーションにキーストロークを送信するには + +1. キー入力を受信するアプリケーション ウィンドウをアクティブ化し、 メソッドまたは メソッドを呼び出します。 別のアプリケーションをアクティブ化するマネージ メソッドがないため、ネイティブ Windows メソッドを使用して他のアプリケーションにフォーカスを設定する必要があります。 次のコード例は、プラットフォーム呼び出しを使用して `FindWindow` メソッドと `SetForegroundWindow` メソッドを呼び出し、電卓アプリケーションのウィンドウをアクティブ化してから、 を呼び出して電卓アプリケーションに一連の計算を発行します。 + + > [!NOTE] + > 電卓アプリケーションを特定する `FindWindow` 呼び出しの適切なパラメーターは、Windows のバージョンに応じて異なります。 次のコードでは、[!INCLUDE[win7](../../../includes/win7-md.md)] の電卓アプリケーションを検索します。[!INCLUDE[windowsver](../../../includes/windowsver-md.md)] では、最初のパラメーターを「SciCalc」に変更します。 Visual Studio に付属の Spy\+\+ ツールを使用して、適切なパラメーターを特定します。 + + [!code-cpp[System.Windows.Forms.SimulateKeyPress#5](../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.SimulateKeyPress/cpp/form1.cpp#5)] + [!code-csharp[System.Windows.Forms.SimulateKeyPress#5](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.SimulateKeyPress/CS/form1.cs#5)] + [!code-vb[System.Windows.Forms.SimulateKeyPress#5](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.SimulateKeyPress/VB/form1.vb#5)] + +## 使用例 + 次のコード例は、前のコード例の完全なアプリケーションです。 + + [!code-cpp[System.Windows.Forms.SimulateKeyPress#0](../../../samples/snippets/cpp/VS_Snippets_Winforms/System.Windows.Forms.SimulateKeyPress/cpp/form1.cpp#0)] + [!code-csharp[System.Windows.Forms.SimulateKeyPress#0](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.SimulateKeyPress/CS/form1.cs#0)] + [!code-vb[System.Windows.Forms.SimulateKeyPress#0](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.SimulateKeyPress/VB/form1.vb#0)] + +## コードのコンパイル + この例で必要な要素は次のとおりです。 + +- System、System.Drawing、および System.Windows.Forms の各アセンブリへの参照。 + + [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] または [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] のコマンド ラインからこの例をビルドする方法については、「[コマンド ラインからのビルド](../Topic/Building%20from%20the%20Command%20Line%20\(Visual%20Basic\).md)」または「[csc.exe を使用したコマンド ラインからのビルド](../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md)」を参照してください。 また、コードを新しいプロジェクトに貼り付けることにより、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でこの例をビルドすることもできます。 また、「[方法: 完成した Windows フォーム コードの例を Visual Studio を使ってコンパイルして実行する](http://msdn.microsoft.com/library/Bb129228\(v=vs.110\))」も参照してください。 + +## 参照 + [Windows フォームでのユーザー入力](../../../docs/framework/winforms/user-input-in-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/index.md b/docs/framework/winforms/index.md new file mode 100644 index 00000000000..3668445076b --- /dev/null +++ b/docs/framework/winforms/index.md @@ -0,0 +1,64 @@ +--- +title: "Windows フォーム | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ユーザー インターフェイス" + - "ユーザー インターフェイス, フォーム" + - "Windows フォーム" +ms.assetid: 627df1e9-b254-41af-bbac-9a4f02810c54 +caps.latest.revision: 25 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 23 +--- +# Windows フォーム +フォームはアプリケーションの基本単位であるため、機能とデザインにある程度の配慮を与えることが重要です。 フォームは、最終的には開発者がユーザー インターフェイスを作成するコントロールとデータを操作するコードを拡張する白紙状態です。 そのために、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] はコード作成を支援する統合開発環境 \(IDE\) や、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] を使用して作成された豊富なコントロール セットを提供します。 これらのコントロールの機能をコードに補完することにより、必要なソリューションを簡単に素早く開発できます。 + +## このセクションの内容 + [Windows フォームについて](../../../docs/framework/winforms/getting-started-with-windows-forms.md) + データの表示、ユーザー入力の処理、アプリケーションの簡単で堅牢なセキュリティを使用した配置のために、Windows フォームの機能を利用する方法に関するトピックへのリンクを提供します。 + + [Windows フォーム アプリケーションの拡張](../../../docs/framework/winforms/advanced/index.md) + Windows フォームでのさまざまな機能を拡張する方法に関するトピックへのリンクを提供します。 + +## 関連項目 + [Windows フォーム コントロール](../../../docs/framework/winforms/controls/index.md) + Windows フォーム コントロールの説明および、その実装方法について説明するトピックへのリンクが含まれます。 + + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) + Windows フォームのデータ バインディング アーキテクチャについて説明するトピックへのリンクが含まれます。 + + [グラフィックスの概要](../../../docs/framework/winforms/advanced/graphics-overview-windows-forms.md) + Windows のグラフィック デザイン インターフェイスの高度な実装を使用して、オブジェクトとして、グラフィックスを作成、テキストを描画、および、画像を操作する方法について説明します。 + + [ClickOnce のセキュリティと配置](../Topic/ClickOnce%20Security%20and%20Deployment.md) + ClickOnce 配置の基本原則について説明します。 + + [Visual Basic 6.0 ユーザー向けのフォームのタスク](http://msdn.microsoft.com/ja-jp/c3e8f7cf-456b-41df-b5a5-e0370039e525) + フォームが新しいバージョンでどのように変更されたかについて説明します。 + + [Windows フォームと MFC のプログラミング上の違い](../Topic/Windows%20Forms-MFC%20Programming%20Differences.md) + MFC アプリケーションと Windows フォームの違いについて説明します。 + + [Visual Studio でのデータへのアクセス](../Topic/Accessing%20data%20in%20Visual%20Studio.md) + アプリケーションにデータ アクセス機能を取り込む方法について説明します。 + + [Windows フォーム アプリケーション](../Topic/Debugging%20Preparation:%20Windows%20Forms%20Applications.md) + Windows アプリケーション プロジェクト テンプレートを使用して作成されたアプリケーションのデバッグのプロセス、およびデバッグ構成とリリース構成を変更する方法について説明します。 + + [アプリケーション、サービス、およびコンポーネントの配置](../Topic/Deploying%20Applications,%20Services,%20and%20Components.md) + 完成したアプリケーションやコンポーネントを他のコンピューターにインストールできるように配布するためのプロセスについて説明します。 + + [コンソール アプリケーションの構築](../../../docs/standard/building-console-apps.md) + クラスを使用したコンソール アプリケーションの作成の基本について説明します。 \ No newline at end of file diff --git a/docs/framework/winforms/interfaces-related-to-data-binding.md b/docs/framework/winforms/interfaces-related-to-data-binding.md new file mode 100644 index 00000000000..59bbe621743 --- /dev/null +++ b/docs/framework/winforms/interfaces-related-to-data-binding.md @@ -0,0 +1,164 @@ +--- +title: "データ連結に関連するインターフェイス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ [Windows フォーム], データ バインディング インターフェイス" + - "データ バインド, インターフェイス" + - "IBindingList インターフェイス, Windows フォームのデータ バインディング" + - "IBindingListView インターフェイス" + - "IDataErrorInfo インターフェイス, Windows フォームのデータ バインディング" + - "IEditableObject インターフェイス, Windows フォームのデータ バインディング" + - "IList インターフェイス, Windows フォームのデータ バインディング" + - "INotifyPropertyChanged インターフェイス" + - "インターフェイス, Windows フォームのデータ バインディング" +ms.assetid: 14e49a2e-3e46-47ca-b491-70d546333277 +caps.latest.revision: 23 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 23 +--- +# データ連結に関連するインターフェイス +[!INCLUDE[vstecado](../../../includes/vstecado-md.md)] では、アプリケーションで必要なバインディングや、処理する対象のデータに合わせて、さまざまなデータ構造を作成できます。 Windows フォームでデータを提供または利用するための独自のクラスを作成すると役立つ場合があります。 これらのオブジェクトはさまざまなレベルの機能を提供でき、複雑さもそれぞれに異なります。基本的なデータ バインディングを提供するもの、デザイン時のサポート、エラー チェック機能、または変更通知機能を提供するもの、さらには、データ自体に加えられた変更の構造化されたロールバックをサポートするものまであります。 + +## データ バインディング インターフェイスのコンシューマー + 以下のセクションでは、インターフェイス オブジェクトを 2 つのグループに分けて説明します。 1 つ目のグループは、データ ソース作成者がデータ ソースに実装するインターフェイスの一覧です。 これらのインターフェイスは、データ ソース コンシューマーによって利用されるようにデザインされています。データ ソース コンシューマーは、通常は Windows フォーム コントロールまたはコンポーネントです。 2 つ目のグループは、コンポーネント作成者によって利用されるようデザインされているインターフェイスの一覧です。 Windows フォーム データ バインディング エンジンが利用する、データ バインディングをサポートするコンポーネントを作成するときに、コンポーネント作成者はこれらのインターフェイスを使用します。 フォームに関連付けられたクラス内にこれらのインターフェイスを実装することで、データ バインディングを有効にできます。つまり、データとの対話を実現するインターフェイスを実装したクラスを作成できます。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] の Rapid Application Development \(RAD\) データ デザイン体験ツールでは、この機能が既に活用されています。 + +### データ ソース作成者が実装するインターフェイス + 以下のインターフェイスは、Windows フォーム コントロールによって利用されるようにデザインされています。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスには、、および があります。 これらは、 型の項目のインデックス付きリストです。 これらのリストは、同じ型のみを格納できます。インデックスの先頭の項目によって型が決定されるためです。 は、実行時にのみバインディングに利用できます。 + + > [!NOTE] + > Windows フォームとのバインディングのために、ビジネス オブジェクトのリストを作成する場合には、 の使用を検討する必要があります。 は、双方向の Windows フォーム データ バインディングに必要となる主要なインターフェイスが実装された、拡張性のあるクラスです。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスは、はるかに高いレベルのデータ バインディング機能を提供します。 この実装は、基本的な並べ替え機能と変更通知機能を持ちます。変更通知機能では、リスト項目が変更されたとき \(たとえば、顧客リストの 3 番目の項目で Address フィールドが変更されたとき\) とリスト自体が変更されたとき \(たとえば、リスト内の項目の数が増減したとき\) の両方について変更が通知されます。 変更通知は、複数のコントロールを同じデータにバインドする予定のときに、1 つのコントロールで行ったデータ変更を他のバインド コントロールにも反映させる場合に重要です。 + + > [!NOTE] + > インターフェイスの変更通知は プロパティで有効にされます。このプロパティが `true` の場合には イベントが発生し、リストまたはその中の項目が変更されたことが示されます。 + + 変更の種類は、 パラメーターの プロパティで示されます。 したがって、データ モデルが更新されたときには、それに依存するビュー \(たとえば、同じデータ ソースにバインドされた他のコントロール\) も更新されます。 ただし、リストが イベントを発生させるためには、リスト内に含まれるオブジェクトが変更されたときに、それをリストに通知する必要があります。 + + > [!NOTE] + > は、 インターフェイスの汎用実装です。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスは、 の実装が持つすべての機能に加えて、フィルター処理機能および高度な並べ替え機能を持ちます。 この実装は、文字列ベースのフィルター処理、およびプロパティ記述子と方向のペアによる複数列の並べ替え機能を提供します。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスを使用すると、オブジェクトへの変更を永続化するタイミングをオブジェクトが制御できるようになります。 この実装により、、および の各メソッドを使用できるようになり、それによってオブジェクトへの変更をロールバックできます。 次に示すのは、、および の各メソッドの機能と、データに対して加えられた変更のロールバックを実現するためのこれら各メソッドの連係についての簡単な説明です。 + + - メソッドはオブジェクトの編集の開始を示します。 このインターフェイスを実装するオブジェクトは、 メソッドの呼び出し後に加えられたすべての更新を格納して、 メソッドが呼び出されたときに破棄できるようにする必要があります。 Windows フォームのデータ バインディングでは、1 つの編集トランザクションのスコープ内で を複数回呼び出すことができます \(たとえば、\)。 の実装では、 が既に呼び出されたかどうかを追跡し、それ以降の の呼び出しを無視する必要があります。 このメソッドは複数回呼び出すことができるため、同じメソッドの以降の呼び出しが破壊的でないことが重要です。つまり、以降の の呼び出しでは、既に加えられている更新を破棄したり、最初の 呼び出し時に保存されたデータを変更したりすることはできません。 + + - メソッドは、基になるオブジェクトが現在編集モードである場合に、 の呼び出し後に加えられた変更をオブジェクトに反映します。 + + - メソッドは、オブジェクトに加えられた変更を破棄します。 + + 、および の各メソッドの機能の詳細については、「[データセットのデータの保存](../Topic/Save%20data%20back%20to%20the%20database.md)」を参照してください。 + + データ機能のこのトランザクションの概念は、 コントロールで使用されています。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスには、 インターフェイスも実装するのが一般的で、 メソッドでデータ ソースに対して行われた追加をロールバックできるようにします。 データ ソースに インターフェイスを実装する場合には、 インターフェイスも実装する必要があります。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスでは、オブジェクトからバインド コントロールに対してカスタムのエラー情報を次のように提供できます。 + + - プロパティは、一般的なエラー メッセージ テキスト \(たとえば、"An error has occurred"\) を返します。 + + - プロパティは、列からの具体的なエラー メッセージを含む文字列 \(たとえば、"The value in the `State` column is invalid"\) を返します。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスは、[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] によって利用されるのが一般的です。 このインターフェイスに対する Windows フォームのサポートは、 コンポーネントを通じてのみ利用できます。 + + > [!NOTE] + > コンポーネントは、バインディングのために、すべての 項目を別個のリストにコピーします。 + +- インターフェイスの使い方 + + インターフェイスを実装するコレクション クラスは、バインド コントロールに対して公開するプロパティの順序と組み合わせを制御する機能を持ちます。 + + > [!NOTE] + > メソッドを実装するとき、 配列が null でない場合には、配列の最後のエントリは、他の項目リストであるリスト プロパティを説明するプロパティ記述子です。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスは、自らに関する動的な情報を提供します。 このインターフェイスは に似ていますが、リストではなくオブジェクトに対して使用されます。 このインターフェイスは、 によって、基になる行のスキーマを反映するために使用されます。 の単純な実装は クラスにより提供されています。 + + > [!NOTE] + > を実装する型に対するデザイン時バインディングをサポートするためには、その型に も実装し、フォーム上にインスタンスとして配置する必要があります。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスでは、非リスト オブジェクトへのリストベース バインディングが可能になります。 メソッドを使用すると、 を継承していないオブジェクトから、バインドできるリストを取得できます。 クラスで使用されます。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスは、 インターフェイスも実装する、バインドできるリストです。 このインターフェイスは、 型の イベントを発生させる型かどうかを プロパティを通じて示すために使用されます。 + + > [!NOTE] + > データ ソースが、前述のリスト イベント変換を行うプロパティを持ち、 コンポーネントとやり取りする場合には、 を実装する必要があります。 その他の場合は、 がリスト イベント変換のためのプロパティを実行し、結果としてパフォーマンスが低下します。 + +- インターフェイスの使い方 + + インターフェイスを実装するコンポーネントは、プロパティの設定、および互いに依存するプロパティの初期化のために、バッチ最適化を活用します。 は次の 2 つのメソッドを持ちます。 + + - は、オブジェクトの初期化の開始を通知します。 + + - は、オブジェクトの初期化の終了を通知します。 + +- インターフェイスの使い方 + + インターフェイスを実装するコンポーネントは インターフェイスも実装します。 このインターフェイスを使用すると、他の コンポーネントに対して初期化の完了を通知できます。 インターフェイスは次の 2 つのメンバーを持ちます。 + + - は、コンポーネントが初期化されているかどうかを示す `boolean` 値を返します。 + + - は、 が呼び出されたときに発生します。 + +- インターフェイスの使い方 + + このインターフェイスを実装するクラスは、いずれかのプロパティ値が変更されたときにイベントを発生させる型です。 このインターフェイスは、コントロールの各プロパティに対して変更イベントを用意するパターンを置き換えるようにデザインされています。 で使用する場合、ビジネス オブジェクトは インターフェイスを実装する必要があり、BindingList\`1 は イベントを 型の イベントに変換します。 + + > [!NOTE] + > バインド クライアントとデータ ソースとの間のバインディングで変更通知が行われるためには、バインドされるデータ ソース型に インターフェイスを実装するか、またはバインドされる型に *propertyName*`Changed` イベントを用意するかのいずれか一方を行う必要があります。両方を行うことはできません \(前者を行うことをお勧めします\)。 + +### コンポーネント作成者が実装するインターフェイス + 以下のインターフェイスは、Windows フォームのデータ バインディング エンジンによって利用されるようデザインされています。 + +- インターフェイスの使い方 + + このインターフェイスを実装するクラスは、データ バインディングをサポートする非コントロール コンポーネントです。 このクラスは、このインターフェイスの プロパティおよび プロパティを通じて、コンポーネントのデータ バインディングおよびバインディング コンテキストを返します。 + + > [!NOTE] + > を継承するコンポーネントの場合は、 インターフェイスを実装する必要はありません。 + +- インターフェイスの使い方 + + インターフェイスを実装するクラスは、この特定のコンポーネントに関連付けられたバインディングを管理するための独自の を持つコンポーネントです。 カスタムの へは プロパティからアクセスできます。 + + > [!NOTE] + > を継承するクラスでは、バインディングは プロパティを通じて自動的に管理されます。そのため、 の実装が必要なケースはきわめてまれです。 + +## 参照 + [データ連結と Windows フォーム](../../../docs/framework/winforms/data-binding-and-windows-forms.md) + [方法 : Windows フォームに単純バインド コントロールを作成する](../../../docs/framework/winforms/how-to-create-a-simple-bound-control-on-a-windows-form.md) + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) \ No newline at end of file diff --git a/docs/framework/winforms/keyboard-input-in-a-windows-forms-application.md b/docs/framework/winforms/keyboard-input-in-a-windows-forms-application.md new file mode 100644 index 00000000000..a0f7a8ee817 --- /dev/null +++ b/docs/framework/winforms/keyboard-input-in-a-windows-forms-application.md @@ -0,0 +1,42 @@ +--- +title: "Windows フォーム アプリケーションにおけるキーボード入力 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "キーボード入力, 使用 (Windows フォームで)" + - "キーボード, キーボード入力" + - "Windows フォーム, キーボード入力" +ms.assetid: 68f5bc70-14d5-45c9-b288-7d7b1493ee79 +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# Windows フォーム アプリケーションにおけるキーボード入力 +Windows フォームは標準のキーボード イベントを備えており、これを使用すると、特定のキーの押下に応答できます。また、アプリケーション、フォーム、およびコントロールの各レベルで、キーの押下を受け取ったり、変更したり、処理したりする手段も備えています。 + +## このセクションの内容 + [キーボード入力のしくみ](../../../docs/framework/winforms/how-keyboard-input-works.md) + キーボード メッセージを処理し、キーボード イベントに変換する方法について説明します。 + + [キーボード イベントの使用](../../../docs/framework/winforms/using-keyboard-events.md) + キーボード イベントの種類と、キーボード イベント ハンドラーが受け取る情報について説明します。 + + [方法 : キーボード入力を標準コントロールに変更する](../../../docs/framework/winforms/how-to-modify-keyboard-input-to-a-standard-control.md) + キー値がコントロールに達する前にキー値を変更する方法を示すコード例です。 + + [方法 : どの修飾子キーが押されたかを判断する](../../../docs/framework/winforms/how-to-determine-which-modifier-key-was-pressed.md) + Shift、Alt、または Ctrl キーが別のキーと一緒に押されたかどうかを見つける方法を示します。 + + [方法 : キーボード入力をフォーム レベルで処理する](../../../docs/framework/winforms/how-to-handle-keyboard-input-at-the-form-level.md) + キー値がコントロールに達する前にキーを受け取る方法を示すコード例です。 \ No newline at end of file diff --git a/docs/framework/winforms/more-secure-file-and-data-access-in-windows-forms.md b/docs/framework/winforms/more-secure-file-and-data-access-in-windows-forms.md new file mode 100644 index 00000000000..8920216dfb3 --- /dev/null +++ b/docs/framework/winforms/more-secure-file-and-data-access-in-windows-forms.md @@ -0,0 +1,375 @@ +--- +title: "Windows フォームにおけるファイルおよびデータへのより安全なアクセス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "データ [Windows フォーム], 安全なアクセス" + - "データ アクセス [Windows フォーム]" + - "データベース アクセス (Windows フォームのセキュリティ)" + - "ファイル アクセス [Windows フォーム]" + - "レジストリ [Windows フォーム]" + - "セキュリティ [Windows フォーム], データ アクセス" + - "セキュリティ [Windows フォーム], ファイル アクセス" +ms.assetid: 3cd3e55b-2f5e-40dd-835d-f50f7ce08967 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# Windows フォームにおけるファイルおよびデータへのより安全なアクセス +[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] は、リソースとデータを保護できるアクセス許可を使用します。 アプリケーションでデータを読み取りまたは書き込みできる場所は、アプリケーションに付与されるアクセス許可に依存します。 部分信頼環境でアプリケーションを実行すると、データにアクセス許可がないか、またはデータにアクセスする方法を変更しなければならない可能性があります。 + + セキュリティの制限が発生した場合、アクセス許可をアサートする \(アプリケーションに付与されていると仮定した場合\)、または部分信頼で動作するよう作成されたバージョンの機能を使用するという 2 つのオプションがあります。 次のセクションでは、部分信頼環境で実行されているアプリケーションからファイル、データベース、およびレジストリ アクセスを操作する方法について説明します。 + +> [!NOTE] +> 既定では、[!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] の配置を生成するツールは、これらの配置が、実行するコンピューターから完全信頼を要求するよう既定で設定されます。 部分信頼での動作のセキュリティ強化の利点が必要だと判断した場合は、この既定値を [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] または [!INCLUDE[winsdklong](../../../includes/winsdklong-md.md)] ツール \(Mage.exe または MageUI.exe\) のいずれかに変更する必要があります。 Windows フォームのセキュリティと、アプリケーションの適切な信頼レベルを決定する方法の詳細については、「[Windows フォームのセキュリティの概要](../../../docs/framework/winforms/security-in-windows-forms-overview.md)」を参照してください。 + +## ファイル アクセス + クラスは、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] のファイルとフォルダーへのアクセスを制御します。 既定では、セキュリティ システムは、ローカルのイントラネットやインターネット ゾーンなどの部分信頼環境に を付与しません。 ただし、ファイルへのアクセスを必要とするアプリケーションは、アプリケーションの設計を変更するかファイルにアクセスする別の方法を使用すると、引き続きこれらの環境で機能することが可能です。 既定では、ローカル イントラネット ゾーンに、同じサイトと同じディレクトリにアクセスして、その起点のサイトに接続し、インストール ディレクトリから読み取るための権限が付与されます。 既定では、インターネット ゾーンは、起点のサイトに接続する権限のみが付与されます。 + +### ユーザー指定のファイル + ファイルへのアクセス許可を持たないときに処理する方法の 1 つは、 クラスまたは クラスを使用して、特定のファイル情報の入力をユーザーに求める方法です。 このユーザーの操作では、アプリケーションが悪意を持ってプライベート ファイルを読み込んだり、重要なファイルを上書きしたりできないことを、ある程度保証できます。 メソッドと メソッドは、ユーザーが指定したファイルのファイル ストリームを開くことで、ファイルの読み取りアクセスと書き込みアクセスを提供します。 メソッドは、ファイルのパスを隠すことで、ユーザーのファイルの保護にも役立ちます。 + +> [!NOTE] +> これらのアクセス許可は、アプリケーションが、インターネット ゾーン内かイントラネット ゾーン内かに応じて異なります。 インターネット ゾーンのアプリケーションは のみを使用できますが、イントラネット アプリケーションは、無制限のファイル ダイアログのアクセス許可を持っています。 + + クラスは、アプリケーションで使用できるファイル ダイアログ ボックスの種類を指定します。 次の表は、各 クラスを使用するために必要な値を示しています。 + +|クラス|必要なアクセス権の値| +|---------|----------------| +||| +||| + +> [!NOTE] +> メソッドが実際に呼び出されるまでは、特定のアクセス許可は要求されません。 + + ファイル ダイアログ ボックスを表示するためのアクセス許可は、、および の各クラスのすべてのメンバーに対するフルアクセスをアプリケーションに付与しません。 各メソッドを呼び出すために必要とされる正確なアクセス許可については、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] クラス ライブラリのドキュメントのそのメソッドに関するリファレンス トピックを参照してください。 + + 次のコード例では、 メソッドを使用して、ユーザーが指定したファイルを コントロールに開きます。 この例では、 および関連付けられた 列挙値が必要です。 例では、保存機能を無効にする必要があるかどうかを判断するために、 を処理する方法を示しています。 この例では、 が `ButtonOpen` という名前の コントロールと、`RtfBoxMain` という名前の コントロールを必要とします。 + +> [!NOTE] +> 保存機能のプログラミング ロジックは、この例では表示されません。 + +```vb +Private Sub ButtonOpen_Click(ByVal sender As System.Object, _ + ByVal e As System.EventArgs) Handles ButtonOpen.Click + + Dim editingFileName as String = "" + Dim saveAllowed As Boolean = True + + ' Displays the OpenFileDialog. + If (OpenFileDialog1.ShowDialog() = DialogResult.OK) Then + Dim userStream as System.IO.Stream + Try + ' Opens the file stream for the file selected by the user. + userStream =OpenFileDialog1.OpenFile() + Me.RtfBoxMain.LoadFile(userStream, _ + RichTextBoxStreamType.PlainText) + Finally + userStream.Close() + End Try + + ' Tries to get the file name selected by the user. + ' Failure means that the application does not have + ' unrestricted permission to the file. + Try + editingFileName = OpenFileDialog1.FileName + Catch ex As Exception + If TypeOf ex Is System.Security.SecurityException Then + ' The application does not have unrestricted permission + ' to the file so the save feature will be disabled. + saveAllowed = False + Else + Throw ex + End If + End Try + End If +End Sub + +``` + +```csharp +private void ButtonOpen_Click(object sender, System.EventArgs e) +{ + String editingFileName = ""; + Boolean saveAllowed = true; + + // Displays the OpenFileDialog. + if (openFileDialog1.ShowDialog() == DialogResult.OK) + { + // Opens the file stream for the file selected by the user. + using (System.IO.Stream userStream = openFileDialog1.OpenFile()) + { + this.RtfBoxMain.LoadFile(userStream, + RichTextBoxStreamType.PlainText); + userStream.Close(); + } + + // Tries to get the file name selected by the user. + // Failure means that the application does not have + // unrestricted permission to the file. + try + { + editingFileName = openFileDialog1.FileName; + } + catch (Exception ex) + { + if (ex is System.Security.SecurityException) + { + // The application does not have unrestricted permission + // to the file so the save feature will be disabled. + saveAllowed = false; + } + else + { + throw ex; + } + } + } +} +``` + +> [!NOTE] +> [!INCLUDE[csprcs](../../../includes/csprcs-md.md)] では、イベント ハンドラーを有効にするコードを追加することを確認します。 前の例でのコードを使用することで、次のコードではイベント ハンドラー `this.ButtonOpen.Click += newSystem.Windows.Forms.EventHandler(this.ButtonOpen_Click);` を有効にする方法を示します。 + +### その他のファイル + 場合によって、アプリケーション設定を保存しなければならないという場合など、ユーザーが指定しないファイルへの読み取りまたは書き込みを実行する必要があります。 ローカルのイントラネット ゾーンとインターネット ゾーンでは、アプリケーションにローカル ファイルにデータを格納するためのアクセス許可がありません。 ただし、アプリケーションが分離ストレージにデータを格納できるようにします。 分離ストレージは \(特定の記憶場所ではなく\) 抽象的なデータ コンパートメントであり、データが保存される実際のディレクトリの場所を含む、ストアと呼ばれる 1 つ以上の分離ストレージ ファイルが含まれます。 のようなファイルのアクセス許可は必要なく、代わりに クラスが分離ストレージのアクセス許可を制御します。 既定では、ローカル イントラネット ゾーンとインターネット ゾーンで実行されているアプリケーションが、分離ストレージを使用してデータを格納できます。ただし、ディスク クォータのように設定が変わることがあります。 分離ストレージの詳細については、「[分離ストレージ](../../../docs/standard/io/isolated-storage.md)」を参照してください。 + + 次の例では、分離ストレージを使用して、ストアにあるファイルにデータを書き込みます。 この例では、 および 列挙値が必要です。 例では、分離ストレージ内のファイルに対する、 コントロールの特定のプロパティ値の読み取りと書き込みを示しています。 `Read` 関数はアプリケーションの起動後に呼び出され、`Write` 関数はアプリケーションの終了前に呼び出されます。 例では、`Read` 関数と `Write` 関数が、`MainButton` という名前の コントロールを含む のメンバーとして存在していることが必要です。 + +```vb +' Reads the button options from the isolated storage. Uses Default values +' for the button if the options file does not exist. +Public Sub Read() + Dim isoStore As System.IO.IsolatedStorage.IsolatedStorageFile = _ + System.IO.IsolatedStorage.IsolatedStorageFile. _ + GetUserStoreForDomain() + + Dim filename As String = "options.txt" + Try + ' Checks to see if the options.txt file exists. + If (isoStore.GetFileNames(filename).GetLength(0) <> 0) Then + + ' Opens the file because it exists. + Dim isos As New System.IO.IsolatedStorage.IsolatedStorageFileStream _ + (filename, IO.FileMode.Open,isoStore) + Dim reader as System.IO.StreamReader + Try + reader = new System.IO.StreamReader(isos) + + ' Reads the values stored. + Dim converter As System.ComponentModel.TypeConverter + converter = System.ComponentModel.TypeDescriptor.GetConverter _ + (GetType(Color)) + + Me.MainButton.BackColor = _ + CType(converter.ConvertFromString _ + (reader.ReadLine()), Color) + me.MainButton.ForeColor = _ + CType(converter.ConvertFromString _ + (reader.ReadLine()), Color) + + converter = System.ComponentModel.TypeDescriptor.GetConverter _ + (GetType(Font)) + me.MainButton.Font = _ + CType(converter.ConvertFromString _ + (reader.ReadLine()), Font) + + Catch ex As Exception + Debug.WriteLine("Cannot read options " + _ + ex.ToString()) + Finally + reader.Close() + End Try + End If + + Catch ex As Exception + Debug.WriteLine("Cannot read options " + ex.ToString()) + End Try +End Sub + +' Writes the button options to the isolated storage. +Public Sub Write() + Dim isoStore As System.IO.IsolatedStorage.IsolatedStorageFile = _ + System.IO.IsolatedStorage.IsolatedStorageFile. _ + GetUserStoreForDomain() + + Dim filename As String = "options.txt" + Try + ' Checks if the file exists, and if it does, tries to delete it. + If (isoStore.GetFileNames(filename).GetLength(0) <> 0) Then + isoStore.DeleteFile(filename) + End If + Catch ex As Exception + Debug.WriteLine("Cannot delete file " + ex.ToString()) + End Try + + ' Creates the options.txt file and writes the button options to it. + Dim writer as System.IO.StreamWriter + Try + Dim isos As New System.IO.IsolatedStorage.IsolatedStorageFileStream _ + (filename, IO.FileMode.CreateNew, isoStore) + + writer = New System.IO.StreamWriter(isos) + Dim converter As System.ComponentModel.TypeConverter + + converter = System.ComponentModel.TypeDescriptor.GetConverter _ + (GetType(Color)) + writer.WriteLine(converter.ConvertToString( _ + Me.MainButton.BackColor)) + writer.WriteLine(converter.ConvertToString( _ + Me.MainButton.ForeColor)) + + converter = System.ComponentModel TypeDescriptor.GetConverter _ + (GetType(Font)) + writer.WriteLine(converter.ConvertToString( _ + Me.MainButton.Font)) + + Catch ex as Exception + Debug.WriteLine("Cannot write options " + ex.ToString()) + + Finally + writer.Close() + End Try +End Sub + +``` + +```csharp +// Reads the button options from the isolated storage. Uses default values +// for the button if the options file does not exist. +public void Read() +{ + System.IO.IsolatedStorage.IsolatedStorageFile isoStore = + System.IO.IsolatedStorage.IsolatedStorageFile. + GetUserStoreForDomain(); + + string filename = "options.txt"; + try + { + // Checks to see if the options.txt file exists. + if (isoStore.GetFileNames(filename).GetLength(0) != 0) + { + // Opens the file because it exists. + System.IO.IsolatedStorage.IsolatedStorageFileStream isos = + new System.IO.IsolatedStorage.IsolatedStorageFileStream + (filename, System.IO.FileMode.Open,isoStore); + System.IO.StreamReader reader = null; + try + { + reader = new System.IO.StreamReader(isos); + + // Reads the values stored. + TypeConverter converter ; + converter = TypeDescriptor.GetConverter(typeof(Color)); + + this.MainButton.BackColor = + (Color)(converter.ConvertFromString(reader.ReadLine())); + this.MainButton.ForeColor = + (Color)(converter.ConvertFromString(reader.ReadLine())); + + converter = TypeDescriptor.GetConverter(typeof(Font)); + this.MainButton.Font = + (Font)(converter.ConvertFromString(reader.ReadLine())); + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine + ("Cannot read options " + ex.ToString()); + } + finally + { + reader.Close(); + } + } + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine + ("Cannot read options " + ex.ToString()); + } +} + +// Writes the button options to the isolated storage. +public void Write() +{ + System.IO.IsolatedStorage.IsolatedStorageFile isoStore = + System.IO.IsolatedStorage.IsolatedStorageFile. + GetUserStoreForDomain(); + + string filename = "options.txt"; + try + { + // Checks if the file exists and, if it does, tries to delete it. + if (isoStore.GetFileNames(filename).GetLength(0) != 0) + { + isoStore.DeleteFile(filename); + } + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine + ("Cannot delete file " + ex.ToString()); + } + + // Creates the options file and writes the button options to it. + System.IO.StreamWriter writer = null; + try + { + System.IO.IsolatedStorage.IsolatedStorageFileStream isos = new + System.IO.IsolatedStorage.IsolatedStorageFileStream(filename, + System.IO.FileMode.CreateNew,isoStore); + + writer = new System.IO.StreamWriter(isos); + TypeConverter converter ; + + converter = TypeDescriptor.GetConverter(typeof(Color)); + writer.WriteLine(converter.ConvertToString( + this.MainButton.BackColor)); + writer.WriteLine(converter.ConvertToString( + this.MainButton.ForeColor)); + + converter = TypeDescriptor.GetConverter(typeof(Font)); + writer.WriteLine(converter.ConvertToString( + this.MainButton.Font)); + + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine + ("Cannot write options " + ex.ToString()); + } + finally + { + writer.Close(); + } +} +``` + +## データベースへのアクセス + データベースにアクセスするために必要なアクセス許可は、データベース プロバイダーに応じて異なります。ただし、適切なアクセス許可で実行されているアプリケーションのみがデータ接続を使用してデータベースにアクセスできます。 データベースへのアクセスに必要なアクセス許可の詳細については、「[コード アクセス セキュリティと ADO.NET](../../../docs/framework/data/adonet/code-access-security.md)」を参照してください。 + + アプリケーションを部分信頼で実行するためにデータベースに直接アクセスできない場合は、データにアクセスする別の方法として Web サービスを使用することができます。 Web サービスは、ネットワーク経由でプログラムでアクセスできるソフトウェアです。 Web サービスを使用すると、アプリケーションはコード グループのゾーンにまたがるデータを共有できます。 既定では、ローカル イントラネット ゾーンとインターネット ゾーンのアプリケーションに、元のサイトへのアクセス権が付与され、同じサーバーにホストされる Web サービスを呼び出すことができます。 詳細については、「[ASP.NET AJAX の Web サービス](http://msdn.microsoft.com/ja-jp/8290e543-7eff-47a4-aace-681f3c07229b)」または「[Windows Communication Foundation](http://msdn.microsoft.com/library/ms735119.aspx)」を参照してください。 + +## レジストリへのアクセス + クラスは、オペレーティング システムのレジストリへのアクセスを制御します。 既定では、ローカルで実行されているアプリケーションのみが、レジストリにアクセスできます。 はレジストリにアクセスしようとする権利のみをアプリケーションに付与します。オペレーティング システムは、引き続きレジストリのセキュリティを強制するため、アクセスが成功するかどうかは保証されません。 + + 部分信頼の下のレジストリにアクセスすることはできないため、データを格納するその他のメソッドを検索する必要がある場合があります。 アプリケーション設定を保存する場合、レジストリの代わりに分離ストレージを使用します。 また、分離ストレージを使用して、その他のアプリケーション固有のファイルを格納することもできます。 既定では、アプリケーションの発生元のサイトへのアクセスがアプリケーションに付与されているため、サーバーまたは元のサイトに関するグローバルなアプリケーションの情報を格納することもできます。 + +## 参照 + [Windows フォームでのより安全な印刷](../../../docs/framework/winforms/more-secure-printing-in-windows-forms.md) + [Windows フォームのセキュリティに関するその他の考慮事項](../../../docs/framework/winforms/additional-security-considerations-in-windows-forms.md) + [Windows フォームのセキュリティの概要](../../../docs/framework/winforms/security-in-windows-forms-overview.md) + [Windows フォームのセキュリティ](../../../docs/framework/winforms/windows-forms-security.md) + [Mage.exe \(マニフェストの生成および編集ツール\)](../../../docs/framework/tools/mage-exe-manifest-generation-and-editing-tool.md) + [MageUI.exe \(マニフェスト生成および編集ツールのグラフィカル クライアント\)](../../../docs/framework/tools/mageui-exe-manifest-generation-and-editing-tool-graphical-client.md) \ No newline at end of file diff --git a/docs/framework/winforms/more-secure-printing-in-windows-forms.md b/docs/framework/winforms/more-secure-printing-in-windows-forms.md new file mode 100644 index 00000000000..c725d2e46b3 --- /dev/null +++ b/docs/framework/winforms/more-secure-printing-in-windows-forms.md @@ -0,0 +1,42 @@ +--- +title: "Windows フォームでのより安全な印刷 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "印刷 [Windows フォーム], セキュリティ" + - "PrintingPermission クラス, Windows フォームのセキュリティ" + - "セキュリティ [Windows フォーム], 印刷" + - "Windows フォーム, 印刷" +ms.assetid: 48fd36ac-872f-4de0-902a-e52969cd4367 +caps.latest.revision: 9 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# Windows フォームでのより安全な印刷 +多くの Windows フォーム アプリケーションは、印刷機能を備えています。 [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では、 クラスを使用して印刷機能へのアクセスを制御し、これに関連付けられている 列挙値を使用してアクセスのレベルを示します。 \[イントラネット\] ゾーンと \[インターネット\] ゾーンでは、既定で印刷が有効になっています。ただし、アクセスのレベルはどちらのゾーンも制限されています。 アプリケーションが印刷を実行できるか、ユーザーとの対話が必要か、または印刷を実行できないかは、アプリケーションに与えられているアクセス許可の値によって異なります。 既定では、\[イントラネット\] ゾーンでは アクセスが許可され、\[インターネット\] ゾーンでは アクセスが許可されます。 + + 各印刷アクセス許可レベルで使用できる機能を次の表に示します。 + +|PrintingPermissionLevel|Description| +|-----------------------------|-----------------| +||インストールされているすべてのプリンターに対して完全なアクセス権限が与えられます。| +||既定のプリンターへのプログラムによる印刷、および制限付きの印刷ダイアログ ボックスを使用した安全な印刷を有効にします。 のサブセットです。| +||より制限されたダイアログ ボックスからの印刷だけが許可されます。 のサブセットです。| +||プリンターへのアクセスを防止します。 のサブセットです。| + +## 参照 + [Windows フォームにおけるファイルおよびデータへのより安全なアクセス](../../../docs/framework/winforms/more-secure-file-and-data-access-in-windows-forms.md) + [Windows フォームのセキュリティに関するその他の考慮事項](../../../docs/framework/winforms/additional-security-considerations-in-windows-forms.md) + [Windows フォームのセキュリティの概要](../../../docs/framework/winforms/security-in-windows-forms-overview.md) + [Windows フォームのセキュリティ](../../../docs/framework/winforms/windows-forms-security.md) \ No newline at end of file diff --git a/docs/framework/winforms/mouse-capture-in-windows-forms.md b/docs/framework/winforms/mouse-capture-in-windows-forms.md new file mode 100644 index 00000000000..851da7d2496 --- /dev/null +++ b/docs/framework/winforms/mouse-capture-in-windows-forms.md @@ -0,0 +1,34 @@ +--- +title: "Windows フォームにおけるマウスのキャプチャ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "マウス, キャプチャ" +ms.assetid: 8911d4b0-a4f8-4f93-8246-371aebd27d0c +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Windows フォームにおけるマウスのキャプチャ +*マウスのキャプチャ*とは、コントロールがすべてのマウス入力のコマンドを受け取ることを意味します。 コントロールがマウスをキャプチャしている場合は、マウス ポインターが境界内にあるかどうかにかかわらず、マウス入力を受け取ります。 + +## マウスのキャプチャの設定 + Windows フォーム内では、マウスは、ユーザーがコントロール上でマウス ボタンを押した時にコントロールによってキャプチャされ、ユーザーがマウス ボタンを離したときにコントロールによって解放されます。 + + クラスの プロパティは、コントロールがマウスをキャプチャしているかどうかを指定します。 コントロールがマウスのキャプチャをいつ失ったかを判断するには、 イベントを処理します。 + + 手前のウィンドウだけがマウスをキャプチャできます。 背面のウィンドウがマウスをキャプチャしようとすると、ウィンドウは、マウス ポインターがウィンドウの表示部分内にあるときに発生したマウス イベントのメッセージだけを受け取ります。 また、前面のウィンドウがマウスをキャプチャした場合でも、ユーザーは別のウィンドウをクリックすると、そのウィンドウを前面に表示できます。 マウスがキャプチャされると、ショートカット キーは動作しません。 + +## 参照 + [Windows フォーム アプリケーションにおけるマウス入力](../../../docs/framework/winforms/mouse-input-in-a-windows-forms-application.md) \ No newline at end of file diff --git a/docs/framework/winforms/mouse-events-in-windows-forms.md b/docs/framework/winforms/mouse-events-in-windows-forms.md new file mode 100644 index 00000000000..1563ba1e06d --- /dev/null +++ b/docs/framework/winforms/mouse-events-in-windows-forms.md @@ -0,0 +1,154 @@ +--- +title: "Windows フォームにおけるマウス イベント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Click イベント, 発生順序" + - "イベント [Windows フォーム], マウス" + - "マウス, イベント" + - "MouseClick イベント" + - "MouseDoubleClick イベント" + - "MouseDown イベント" + - "MouseEnter イベント" + - "MouseHover イベント" + - "MouseLeave イベント" + - "MouseMove イベント" + - "MouseUp イベント" + - "Windows フォーム コントロール, クリック イベント" +ms.assetid: 8cf0070d-793b-4876-b09e-d20d28280fab +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# Windows フォームにおけるマウス イベント +マウス入力を処理する場合、通常はマウスのポインターの位置とマウス ボタンの状態を確認しようとします。 このトピックでは、マウスのイベントからこの情報を取得する方法について詳しく説明し、Windows フォーム コントロールでマウス クリック イベントが発生する順序について説明します。 すべてのマウス イベントのリストと説明は、「[Windows フォームにおけるマウス入力のしくみ](../../../docs/framework/winforms/how-mouse-input-works-in-windows-forms.md)」を参照してください。 「[イベント ハンドラーの概要 \(Windows フォーム\)](http://msdn.microsoft.com/library/be6fx1bb\(v=vs.110\))」、「[イベントの概要 \(Windows フォーム\)](http://msdn.microsoft.com/library/1h12f09z\(v=vs.110\))」も参照してください。 + +## マウスの情報 + は、マウス ボタンのクリック、およびマウスの動きの追跡に関連するマウス イベントのハンドラーに送信します。 は、マウスのボタンが押された、およびマウスのホイールがスクロールされたといった、クライアント座標のマウス ポインターの場所を含む、マウスの現在の状態に関する情報を提供します。 マウス ポインターがコントロールの境界内に入った、または境界から出たときの通知など、いくつかのマウスイベントは、それ以上の情報はなしで をイベント ハンドラーに送信します。 + + マウス ボタン、または、マウス ポインターの位置の現在の状態を確認して、マウス イベントの処理を回避する場合は、 クラスの プロパティと プロパティも使用できます。 は現在押されているマウス ボタンに関する情報を返します。 はマウス ポインターの画面の座標を返しますが、 によって返される値と同じです。 + +## 画面の座標とクライアント座標の間の変換 + マウスの位置情報は、クライアント座標の場合と画面の座標の場合があるため、ポインターの座標システムの変換が必要になることがあります。 これは、 クラスで利用できる メソッドと メソッドを使用して簡単に実行できます。 + +## 標準のクリック イベントの動作 + マウスのクリック イベントを適切な順序で処理する場合は、Windows フォーム コントロールでクリック イベントが発生した順序を知る必要があります。 Windows フォームのコントロールは、すべて、\(どちらのマウス ボタンかは関係なく\) マウス ボタンを押したときと離したときに同じ順序でクリック イベントを発生させますが、各コントロールについて、次のリストに記載する例外があります。 マウス ボタンのシングル クリックに対して発生したイベントの順序を次に示します。 + +1. イベント。 + +2. イベント。 + +3. イベント。 + +4. イベント。 + + マウス ボタンのダブル クリックに対して発生したイベントの順序を次に示します。 + +1. イベント。 + +2. イベント。 + +3. イベント。 + +4. イベント。 + +5. イベント。 + +6. イベント。 \(これは、問題のコントロールで スタイルのビットが `true` に設定されているかどうかに応じて異なる可能性があります。 のビットの設定方法の詳細については、 メソッドを参照してください。\) + +7. イベント。 + +8. イベント。 + + マウス クリック イベントの順序を示すコード例については、「[方法 : Windows フォーム コントロールでユーザー入力イベントを処理する](../../../docs/framework/winforms/how-to-handle-user-input-events-in-windows-forms-controls.md)」を参照してください。 + +### 個別のコントロール + 次のコントロールは、標準のマウス クリック イベントの動作に準拠していません。 + +- 、および の各コントロール + + > [!NOTE] + > コントロールについて、ユーザーが編集フィールド、ボタン、またはリスト内の項目をクリックすると、後述するイベントの動作が発生します。 + + - 左クリック : + + - 右クリック : クリック イベントは発生しません + + - 左ダブルクリック : + + - 右ダブルクリック : クリック イベントは発生しません + +- および の各コントロール + + > [!NOTE] + > ユーザーがこれらのコントロール内で任意の場所をクリックすると、後述するイベントの動作が発生します。 + + - 左クリック : + + - 右クリック : クリック イベントは発生しません + + - 左ダブルクリック : + + - 右ダブルクリック : クリック イベントは発生しません + +- コントロール + + > [!NOTE] + > ユーザーが コントロールの項目をクリックした場合のみ、後述するイベントの動作が発生します。 コントロールのその他の場所をクリックした場合、イベントは発生しません。 後述するイベントに加えて、 のイベントがあり、 コントロールによる検証を使用する場合のためにまとめておきます。 + + - 左クリック : + + - 右クリック : + + - 左ダブルクリック : + + - 右ダブルクリック : + +- コントロール + + > [!NOTE] + > ユーザーが項目自体をクリックするか、 コントロールの項目の右側をクリックした場合にのみ、後述するイベントの動作が発生します。 コントロールのその他の場所をクリックした場合、イベントは発生しません。 後述するイベントに加えて、、および の各イベントがあり、 コントロールを持つ検証を使用する場合のためにまとめておきます。 + + - 左クリック : + + - 右クリック : + + - 左ダブルクリック : + + - 右ダブルクリック : + +### 切り替えコントロールの描画の動作 + クラスから派生するコントロールなど、切り替えコントロールには、次のようなマウス クリック イベントと組み合わせた独自の描画の動作があります。 + +1. ユーザーがマウス ボタンを押します。 + +2. 押された状態で、コントロールが描画します。 + +3. イベントが発生します。 + +4. ユーザーがマウス ボタンを離します。 + +5. 離した状態でコントロールが描画します。 + +6. イベントが発生します。 + +7. イベントが発生します。 + +8. イベントが発生します。 + + > [!NOTE] + > マウス ボタンが押されているときにユーザーがポインターを切り替えコントロールの外に移動した \(例 : コントロールを押しているときにマウスを移動した\) 場合、離された状態で切り替えコントロールが描画し、 イベントのみが発生します。 イベントまたは イベントは、このような状況では発生しません。 + +## 参照 + [Windows フォーム アプリケーションにおけるマウス入力](../../../docs/framework/winforms/mouse-input-in-a-windows-forms-application.md) \ No newline at end of file diff --git a/docs/framework/winforms/mouse-input-in-a-windows-forms-application.md b/docs/framework/winforms/mouse-input-in-a-windows-forms-application.md new file mode 100644 index 00000000000..1a8f3d48fd1 --- /dev/null +++ b/docs/framework/winforms/mouse-input-in-a-windows-forms-application.md @@ -0,0 +1,47 @@ +--- +title: "Windows フォーム アプリケーションにおけるマウス入力 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Windows フォーム, マウス入力" +ms.assetid: 743c2f3c-219e-4a52-b6b8-2657096a2da6 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Windows フォーム アプリケーションにおけるマウス入力 +Windows フォームは、さまざまなマウス イベントを備えており、カスタマイズされたマウス カーソル、マウスのキャプチャ、およびドラッグ アンド ドロップ動作もサポートします。 + +## このセクションの内容 + [Windows フォームにおけるマウス入力のしくみ](../../../docs/framework/winforms/how-mouse-input-works-in-windows-forms.md) + マウス イベントについて説明し、マウスの現在の情報とシステム設定を取得する方法について説明します。 + + [Windows フォームにおけるマウス イベント](../../../docs/framework/winforms/mouse-events-in-windows-forms.md) + マウス イベントが発生する順序と、特定のコントロール内でマウス イベントが発生する方法について説明します。 + + [方法 : クリックとダブルクリックを識別する](../../../docs/framework/winforms/how-to-distinguish-between-clicks-and-double-clicks.md) + シングルクリックとダブルクリックを使って互換性のない動作を開始する方法を示します。 + + [Windows フォームにおけるマウス ポインター](../../../docs/framework/winforms/mouse-pointers-in-windows-forms.md) + マウス カーソルを変更する方法について説明します。 + + [Windows フォームにおけるマウスのキャプチャ](../../../docs/framework/winforms/mouse-capture-in-windows-forms.md) + コントロールがマウスをキャプチャする方法について説明します。 + + [Windows フォームにおけるドラッグ アンド ドロップ機能](../../../docs/framework/winforms/drag-and-drop-functionality-in-windows-forms.md) + ドラッグ アンド ドロップ動作を実装する方法について説明します。 + +## 関連項目 + [Accessing the Mouse](../Topic/Accessing%20the%20Mouse%20\(Visual%20Basic\).md) + Visual Basic を使用したマウスへのアクセスについて説明するトピックの一覧を示します。 \ No newline at end of file diff --git a/docs/framework/winforms/mouse-pointers-in-windows-forms.md b/docs/framework/winforms/mouse-pointers-in-windows-forms.md new file mode 100644 index 00000000000..740ec67268b --- /dev/null +++ b/docs/framework/winforms/mouse-pointers-in-windows-forms.md @@ -0,0 +1,45 @@ +--- +title: "Windows フォームにおけるマウス ポインター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "カーソル, 設定 [Windows フォーム]" + - "マウス カーソル" + - "マウス ポインター" + - "マウス ポインター, 設定 [Windows フォーム]" + - "マウス, カーソル" + - "ポインター, 設定 [Windows フォーム]" +ms.assetid: c3400d85-de5b-42e8-abc3-d6088d69ee53 +caps.latest.revision: 12 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# Windows フォームにおけるマウス ポインター +カーソルとも呼ばれるマウス *ポインター*は、マウスでユーザー入力できるように画面上のフォーカス ポイントを指定するビットマップです。 ここでは、Windows フォームにおけるマウス ポインターについて概説し、マウス ポインターを変更および制御する方法をいくつか示します。 + +## マウス ポインターへのアクセス + マウス ポインターは クラスで表され、各 にはそのコントロールのポインターを指定する プロパティがあります。 クラスには、ポインターを記述するプロパティ \( プロパティや プロパティなど\) およびポインターの外観を変更できるメソッド \( メソッド、 メソッド、および メソッドなど\) が含まれます。 + +## マウス ポインターの制御 + マウス ポインターの使用領域の制限やマウスの位置の変更が必要になることがあります。 プロパティを使用すると、マウスの現在位置を取得または設定できます。 また、 プロパティを設定することにより、マウス ポインターの使用領域を制限することもできます。 既定では、クリップ領域は画面全体です。 + +## マウス ポインターの変更 + マウス ポインターの変更は、ユーザーにフィードバックを提供するための重要な手段です。 たとえば、 イベントおよび イベントのハンドラー内でマウス ポインターを変更することにより、計算を実行中であることをユーザーに通知し、コントロールでのユーザー操作を制限できます。 アプリケーションに対してドラッグ アンド ドロップ操作が行われた場合など、システム イベントによってマウス ポインターが変更されることもあります。 + + マウス ポインターを変更するための主な方法は、コントロールの プロパティまたは プロパティを新しい に設定することです。 マウス ポインターの変更例については、 クラスのコード例を参照してください。 また、 クラスでは、手の形をしたポインターなど、さまざまな種類のポインターを表す オブジェクトのセットが公開されています。 マウス ポインターがコントロール上にあるときに砂時計の形をした待機ポインターを表示するには、 クラスの プロパティを使用します。 + +## 参照 + + [Windows フォーム アプリケーションにおけるマウス入力](../../../docs/framework/winforms/mouse-input-in-a-windows-forms-application.md) + [Windows フォームにおけるドラッグ アンド ドロップ機能](../../../docs/framework/winforms/drag-and-drop-functionality-in-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/multiple-controls-bound-to-data-source-synchronized.md b/docs/framework/winforms/multiple-controls-bound-to-data-source-synchronized.md new file mode 100644 index 00000000000..45fbef2da87 --- /dev/null +++ b/docs/framework/winforms/multiple-controls-bound-to-data-source-synchronized.md @@ -0,0 +1,53 @@ +--- +title: "方法 : 複数のコントロールを 1 つのデータ ソースにバインドして同期状態を保つ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "コントロール [Windows フォーム], バインド (複数を)" + - "コントロール [Windows フォーム], 同期 (データ ソースとの)" +ms.assetid: c2f0ecc6-11e6-4c2c-a1ca-0759630c451e +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法 : 複数のコントロールを 1 つのデータ ソースにバインドして同期状態を保つ +Windows フォームでデータ バインディングを操作するときには、複数のコントロールを 1 つのデータ ソースにバインドすることがよくあります。 場合によっては、コントロールのバインド プロパティを他のコントロールやデータ ソースと同期した状態を保つために、追加の手順が必要になります。 追加の手順が必要となるケースとして、次の 2 つが挙げられます。 + +- データ ソースが を実装していないため、 型の イベントを生成する場合。 + +- データ ソースが を実装している場合。 + + 前者の場合、 を使用してコントロールにデータ ソースをバインドできます。 後者の場合、 を使用して イベントを処理し、バインドされた を呼び出します。 + +## 使用例 + 次のコード例は、3 つのコントロール \(2 つのテキスト ボックスと 1 つの コントロール\) について、 コンポーネントを使用して の同じ列にバインドする方法を示します。 この例は、 イベントを処理して、1 つのテキスト ボックスのテキスト値が変更されると、その他のテキスト ボックスと コントロールを適切な値で更新する方法を示しています。 + + この例では、 を使用してデータ ソースとコントロールをバインドします。 または、コントロールをデータ ソースに直接バインドし、フォームの からバインディングの を取得した後、 イベントを処理することもできます。 この処理方法の例については、 イベントに関するヘルプ ページを参照してください。 + + [!code-csharp[System.Windows.Forms.BindingSourceMultipleControls#1](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.BindingSourceMultipleControls/CS/Form1.cs#1)] + [!code-vb[System.Windows.Forms.BindingSourceMultipleControls#1](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.BindingSourceMultipleControls/VB/Form1.vb#1)] + +## コードのコンパイル + +- このコード例で必要な要件は次のとおりです。 + +- アセンブリ、 アセンブリ、および アセンブリへの参照。 + +- イベントを処理するフォーム。このフォームの イベント ハンドラーから、コード例の `InitializeControlsAndDataSource` メソッドを呼び出す必要があります。 + +## 参照 + [方法 : BindingSource コンポーネントを使用してフォーム間でバインド データを共有する](../../../docs/framework/winforms/controls/how-to-share-bound-data-across-forms-using-the-bindingsource-component.md) + [Windows フォーム データ バインドの変更通知](../../../docs/framework/winforms/change-notification-in-windows-forms-data-binding.md) + [データ連結に関連するインターフェイス](../../../docs/framework/winforms/interfaces-related-to-data-binding.md) + [Windows フォームでのデータ バインド](../../../docs/framework/winforms/windows-forms-data-binding.md) \ No newline at end of file diff --git a/docs/framework/winforms/order-of-events-in-windows-forms.md b/docs/framework/winforms/order-of-events-in-windows-forms.md new file mode 100644 index 00000000000..b5d6657da80 --- /dev/null +++ b/docs/framework/winforms/order-of-events-in-windows-forms.md @@ -0,0 +1,93 @@ +--- +title: "Windows フォームのイベントの順序 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "アプリケーション終了イベントの順序" + - "アプリケーション起動イベントの順序" + - "イベント [Windows フォーム], 順序" + - "フォーカス イベントの順序" + - "手順, イベントの" + - "検証イベント, 順序" +ms.assetid: e81db09b-4453-437f-b78a-62d7cd5c9829 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# Windows フォームのイベントの順序 +Windows フォーム アプリケーションでイベントが発生する順序は、各イベントを順番に処理する必要がある開発者にとって重要な問題です。 フォームの構成要素を再描画するときなど、イベント処理に細心の注意が必要な状況では、実行時におけるイベントの正確な発生順序に気を配る必要があります。 このトピックでは、アプリケーションとコントロールの有効期間におけるいくつかの重要な段階での、イベントの順序について詳しく説明します。 マウス入力イベントの順序の詳細については、「[Windows フォームにおけるマウス イベント](../../../docs/framework/winforms/mouse-events-in-windows-forms.md)」を参照してください。 Windows フォームのイベントの概要については、「[イベントの概要](../../../docs/framework/winforms/events-overview-windows-forms.md)」を参照してください。 イベント ハンドラーの構成の詳細については、「[イベント ハンドラーの概要](../../../docs/framework/winforms/event-handlers-overview-windows-forms.md)」を参照してください。 + +## アプリケーションのスタートアップ イベントとシャットダウン イベント。 + クラスおよび クラスは、アプリケーションのスタートアップおよびシャットダウンに関連する一連のイベントを公開しています。 Windows フォーム アプリケーションが起動すると、メイン フォームのスタートアップ イベントが次の順序で発生します。 + +- + +- + +- + +- + +- + +- + + アプリケーションを閉じると、メイン フォームのシャットダウン イベントが次の順序で発生します。 + +- + +- + +- + +- + +- + + クラスの イベントは、メイン フォームのシャットダウン イベントの後に発生します。 + +> [!NOTE] +> Visual Basic 2005 には、追加のアプリケーション イベント \( など\) があります。 + +## フォーカス イベントと検証イベント + キーボード \(Tab、Shift \+ Tab など\) を使用するか、 メソッドまたは メソッドを呼び出すか、 プロパティを現在のフォームに設定してフォーカスを変更すると、次の順序で クラスのフォーカス イベントが発生します。 + +- + +- + +- + +- + +- + +- + + マウスの使用、または メソッドの呼び出しによってフォーカスを変更すると、次の順序で クラスのフォーカス イベントが発生します。 + +- + +- + +- + +- + +- + +- + +## 参照 + [Windows フォーム内でのイベント ハンドラーの作成](../../../docs/framework/winforms/creating-event-handlers-in-windows-forms.md) \ No newline at end of file diff --git a/docs/framework/winforms/security-in-windows-forms-overview.md b/docs/framework/winforms/security-in-windows-forms-overview.md new file mode 100644 index 00000000000..d05c9aab464 --- /dev/null +++ b/docs/framework/winforms/security-in-windows-forms-overview.md @@ -0,0 +1,98 @@ +--- +title: "Windows フォームのセキュリティの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "アクセス制御, Windows フォーム" + - "コード アクセス セキュリティ, Windows フォーム" + - "アクセス許可, Windows フォーム" + - "セキュリティ [Windows フォーム], セキュリティの概要" + - "Windows フォーム, セキュリティ" +ms.assetid: 4810dc9f-ea23-4ce1-8ea1-657f0ff1d820 +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# Windows フォームのセキュリティの概要 +[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] のリリース以前、ユーザーのコンピューターで実行されているすべてのコードは、リソースにアクセスするために、そのコンピューターのユーザーが持っていたのと同じ権限またはアクセス許可を持っていました。 たとえば、ユーザーにファイル システムへのアクセスが許可されている場合は、コードにファイル システムへのアクセスが許可され、ユーザーにデータベースへのアクセスが許可されている場合は、コードにデータベースへのアクセスが許可されていました。 これらの権限やアクセス許可は、ユーザーがローカル コンピューターに明示的にインストールした実行可能ファイルのコードに対しては受け入れることができますが、インターネットやローカル イントラネットからの悪意のある可能性があるコードに対しては受け入れることができません。 このコードは、アクセス許可がないユーザーのコンピューター リソースにアクセスすべきではありません。 + + [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] は、アクセス許可または権限について、コードが持つものとユーザーが持つものを区別できる、コード アクセス セキュリティと呼ばれるインフラストラクチャを導入しています。 既定では、インターネットとイントラネットからのコードは、部分信頼と呼ばれるものでのみ実行できます。 部分信頼では、アプリケーションに一連の制限が適用されます。特に、アプリケーションはローカルのハード ディスクへのアクセスが制限され、アンマネージ コードを実行することができません。 [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] は、送信元、[厳密な名前付きアセンブリ](../../../docs/framework/app-domains/strong-named-assemblies.md)を持っているかどうか、証明書で署名されているかどうかなど、そのコードの身元に基づいて、コードのアクセスが許可されるリソースを制御します。 + + [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] テクノロジは、Windows フォーム アプリケーションの配置に使用しますが、部分信頼で実行するアプリケーションを、完全信頼や、昇格されたアクセス許可を持つ部分信頼で簡単に開発できるようにします。 [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] は、アクセス許可の昇格や、信頼されたアプリケーション配置などの機能を提供し、アプリケーションが完全信頼やアクセス許可の昇格をローカル ユーザーから実行可能な方法で要求できます。 + +## .NET Framework のセキュリティについて + コード アクセス セキュリティにより、コードの発生元や、そのコードの身元を示すその他の基準に基づいて、コードをさまざまなレベルで信頼できます。 共通言語ランタイムがセキュリティ ポリシーを決定するために使用する証拠の詳細については、「[証拠](http://msdn.microsoft.com/ja-jp/64ceb7c8-a0b4-46c4-97dc-6c22da0539da)」を参照してください。 悪意のあるコードからコンピューター システムを保護できるだけでなく、セキュリティの意図的または偶然の侵害から信頼されているコードを保護できます。 また、コード アクセス セキュリティは、アプリケーションが実行できるアクションに対して詳細に制御できます。これは、アプリケーションが持っている必要があるアクセス許可のみを指定できるためです。 コード アクセス セキュリティは、コードが単一のコード アクセス セキュリティのアクセス許可のチェックをしない場合でも、共通言語ランタイムを対象とするすべてのマネージ コードに影響を与えます。 [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] のセキュリティの詳細については、「[セキュリティの基本概念](../../../docs/standard/security/key-security-concepts.md)」と「[コード アクセス セキュリティの基礎](../../../docs/framework/misc/code-access-security-basics.md)」を参照してください。 + + ユーザーが Windows フォームの実行可能ファイルを Web サーバーまたはファイル共有から直接実行する場合、アプリケーションに付与される信頼の度合いは、コードが存在する場所や開始方法によって異なります。 アプリケーションを実行すると、自動的に評価され、共通言語ランタイムから、名前付き権限セットを受け取ります。 既定では、ローカル コンピューターからのコードに完全信頼のアクセス許可セットが付与され、ローカル ネットワークからのコードには、ローカル イントラネットのアクセス許可セットが付与され、インターネットからのコードには、インターネットのアクセス許可セットが付与されます。 + +> [!NOTE] +> [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] バージョン 1.0 Service Pack 1 と Service Pack 2 では、インターネット ゾーンのコード グループが何もしないアクセス許可セットを受け取ります。 その他のすべてのリリースの [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では、インターネット ゾーンのコード グループは、インターネットのアクセス許可セットを受け取ります。 +> +> これらのアクセス許可セットのそれぞれに付与されている既定のアクセス許可の一覧は、「[既定のセキュリティ ポリシー](http://msdn.microsoft.com/ja-jp/2c086873-0894-4f4d-8f7e-47427c1a3b55)」のトピックにあります。 アプリケーションが受け取るアクセス許可に応じて、正常に実行されるか、またはセキュリティ例外が生成されます。 +> +> [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] を使用して、多数の Windows フォーム アプリケーションが配置されます。 [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] の配置を生成するために使用されるツールは、これまでの説明とは異なる既定のセキュリティを持っています。 詳細については、次の説明を参照してください。 + + アプリケーションに付与される実際のアクセス許可は、セキュリティ ポリシーが変更される可能性があるため、既定値とは異なる可能性があります。つまり、アプリケーションが、あるコンピューターではアクセス許可を持ち、別のコンピューターでは持たない可能性があることを意味します。 + +## より安全な Windows フォーム アプリケーションの開発 + セキュリティは、アプリケーション開発のすべての手順で重要です。 まず「[安全なコーディングのガイドライン](../../../docs/standard/security/secure-coding-guidelines.md)」を確認して従います。 + + 次に、アプリケーションを完全信頼で実行する必要があるのか、または部分信頼で実行する必要があるのかを決定します。 完全信頼でアプリケーションを実行することで、ローカル コンピューター上のリソースへのアクセスが簡単になりますが、「安全なコーディングのガイドライン」のトピックに厳密に従ってアプリケーションを設計および開発しない場合、ユーザーとアプリケーションを高いセキュリティ リスクに晒すことになります。 部分信頼でアプリケーションを実行すると、より安全なアプリケーションをより簡単に開発でき、リスクを大幅に軽減しますが、特定の機能の実装方法について、より詳細な計画が必要になります。 + + 部分信頼 \(つまり、インターネットまたはローカル イントラネットのアクセス許可セットのいずれか\) を選択する場合は、アプリケーションがこの環境で動作する方法を決定します。 Windows フォームでは、信頼度の低い環境で、より安全に機能を実装する代わりの方法を提供します。 データ アクセスなど、アプリケーションの特定の部分が、部分信頼および完全信頼の両方の環境で異なる設計と作成がなされる場合があります。 アプリケーション設定など、一部の Windows フォームの機能は、部分信頼で動作するよう設計されています。 詳細については、「[アプリケーション設定の概要](../../../docs/framework/winforms/advanced/application-settings-overview.md)」を参照してください。 + + アプリケーションが部分信頼で許可するより多くのアクセス許可を必要とするが、完全信頼モードで実行したくない場合は、部分信頼で実行しながら、必要な追加のアクセス許可のみをアサートすることができます。 たとえば、部分信頼で実行するが、ユーザーのファイル システム上のディレクトリに、アプリケーションの読み取り専用のアクセス許可を付与する必要がある場合、そのディレクトリのみに対して を要求することができます。 適切に使用すると、このアプローチによってアプリケーションの機能が増加し、ユーザーのセキュリティ上のリスクを最小限に抑えることができます。 + + 部分信頼で実行されるアプリケーションを開発するときに、アプリケーションが実行する必要があるアクセス許可と、アプリケーションがオプションで使用できるアクセス許可を管理してください。 すべてのアクセス許可がわかっている場合、アプリケーション レベルでアクセス許可について宣言型の要求をする必要があります。 アクセス許可を要求すると、アプリケーションが必要とするアクセス許可、および特に必要ないアクセス許可について、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] のランタイムに通知します。 アクセス許可の要求の詳細については、「[アクセス許可の要求](http://msdn.microsoft.com/ja-jp/0447c49d-8cba-45e4-862c-ff0b59bebdc2)」を参照してください。 + + オプションのアクセス許可を要求するときに、アプリケーションに付与されていないアクセス許可が必要なアクションを実行する場合に生成されるセキュリティ例外を処理する必要があります。 を適切に処理することで、アプリケーションを続行できます。 アプリケーションは例外を使用して、ユーザーに対して機能を無効にする必要があるかどうかを判断できます。 たとえば、必要なファイルのアクセス許可が付与されていない場合、アプリケーションが **\[保存\]** メニュー オプションを無効にすることができます。 + + 場合によっては、すべての適切なアクセス許可をアサートしたかどうかを確認することが難しい場合があります。 たとえば、表面的には影響のないように見えるメソッドの呼び出しが、実行中のある時点でファイル システムにアクセスすることがあります。 必要なアクセス許可をすべて使用してアプリケーションを配置しない場合は、デスクトップでデバッグしている間は問題なくテストでき、配置のときに失敗する可能性があります。 [!INCLUDE[dnprdnlong](../../../includes/dnprdnlong-md.md)] SDK と [!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] の両方に、それぞれ MT.exe のコマンド ライン ツールと、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] のアクセス許可の検出機能という、アプリケーションに必要なアクセス許可を検出するためのツールが含まれています。 + + 次のトピックでは、Windows フォームの追加のセキュリティ機能について説明します。 + +|トピック|説明| +|----------|--------| +|- [Windows フォームにおけるファイルおよびデータへのより安全なアクセス](../../../docs/framework/winforms/more-secure-file-and-data-access-in-windows-forms.md)|部分信頼環境でファイルとデータにアクセスする方法について説明します。| +|- [Windows フォームでのより安全な印刷](../../../docs/framework/winforms/more-secure-printing-in-windows-forms.md)|部分信頼環境で印刷機能にアクセスする方法について説明します。| +|- [Windows フォームのセキュリティに関するその他の考慮事項](../../../docs/framework/winforms/additional-security-considerations-in-windows-forms.md)|部分信頼環境でのウィンドウ操作の実行、クリップボードの使用、およびアンマネージ コードへの呼び出しについて説明します。| + +### 適切なアクセス許可を持つアプリケーションの配置 + クライアント コンピューターに Windows フォーム アプリケーションを配置する最も一般的な方法は、アプリケーションが実行する必要があるすべてのコンポーネントを記述する配置テクノロジの [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] を使用することです。 [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] は、マニフェストと呼ばれる XML ファイルを使用して、アプリケーションを構成するアセンブリとファイル、およびアプリケーションに必要なアクセス許可を記述します。 + + [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] は、クライアント コンピューターでアクセス許可の昇格を要求するための 2 つのテクノロジを持っています。 どちらのテクノロジも、Authenticode 証明書の使用に依存します。 証明書は、アプリケーションが信頼できる発行元からのものであることをユーザーにある程度保証するのに役立ちます。 + + 次の表では、それらのテクノロジについて説明します。 + +|昇格されたアクセス許可のテクノロジ|説明| +|-----------------------|--------| +|アクセス許可の昇格|アプリケーションを最初に実行するときにセキュリティ ダイアログ ボックスをユーザーに表示します。 **\[アクセス許可の昇格\]** ダイアログ ボックスは、アプリケーションをだれが公開したのかについてユーザーに通知するので、ユーザーが追加の信頼を付与するかどうかについて、十分な情報を検討したうえで決定できます。| +|信頼されたアプリケーションの配置|システム管理者がクライアント コンピューターで、発行元の Authenticode 証明書のインストールを 1 回実行する必要があります。 その時点から、その証明書で署名されたアプリケーションは信頼済みとみなされ、追加メッセージを表示せずに、ローカル コンピューター上で完全信頼で実行できます。| + + どのテクノロジを選択するかは、配置環境に応じて異なります。 詳細については、「[ClickOnce 配置ストラテジの選択](../Topic/Choosing%20a%20ClickOnce%20Deployment%20Strategy.md)」を参照してください。 + + 既定では、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] または [!INCLUDE[dnprdnlong](../../../includes/dnprdnlong-md.md)] SDK ツール \(Mage.exe および MageUI.exe\) のいずれかを使用して配置された [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] アプリケーションは、完全信頼を持つクライアント コンピューターで実行するよう構成されます。 部分信頼を使用して、またはいくつか追加のアクセス許可のみを使用して、アプリケーションを配置している場合、この既定を変更する必要があります。 配置を構成するときに、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] または [!INCLUDE[dnprdnlong](../../../includes/dnprdnlong-md.md)] SDK ツールの MageUI.exe のいずれかを使用して構成できます。 MageUI.exe を使用する方法の詳細については、「チュートリアル : コマンドラインから ClickOnce アプリケーションを配置する」を参照してください。 「[方法 : ClickOnce アプリケーションのカスタム アクセス許可を設定する](http://msdn.microsoft.com/library/hafybdaa\(v=vs.110\))」または「[方法 : ClickOnce アプリケーションのカスタム アクセス許可を設定する](http://msdn.microsoft.com/library/hafybdaa\(v=vs.120\))」も参照してください。 + + [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] とアクセス許可の昇格のセキュリティ面の詳細については、「[ClickOnce アプリケーションのセキュリティ](../Topic/Securing%20ClickOnce%20Applications.md)」を参照してください。 信頼されたアプリケーションの配置の詳細については、「[信頼されたアプリケーションの配置の概要](../Topic/Trusted%20Application%20Deployment%20Overview.md)」を参照してください。 + +### アプリケーションのテスト + [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] を使用して Windows フォーム アプリケーションを配置した場合は、開発環境から、部分信頼または制限されたアクセス許可セットでのデバッグを有効にできます。 「[方法 : アクセス許可が制限された ClickOnce アプリケーションをデバッグする](http://msdn.microsoft.com/library/593zkfdf\(v=vs.110\))」または「[方法 : アクセス許可が制限された ClickOnce アプリケーションをデバッグする](http://msdn.microsoft.com/library/593zkfdf\(v=vs.120\))」も参照してください。 + +## 参照 + [Windows フォームのセキュリティ](../../../docs/framework/winforms/windows-forms-security.md) + [コード アクセス セキュリティの基礎](../../../docs/framework/misc/code-access-security-basics.md) + [ClickOnce のセキュリティと配置](../Topic/ClickOnce%20Security%20and%20Deployment.md) + [信頼されたアプリケーションの配置の概要](../Topic/Trusted%20Application%20Deployment%20Overview.md) + [Mage.exe \(マニフェストの生成および編集ツール\)](../../../docs/framework/tools/mage-exe-manifest-generation-and-editing-tool.md) + [MageUI.exe \(マニフェスト生成および編集ツールのグラフィカル クライアント\)](../../../docs/framework/tools/mageui-exe-manifest-generation-and-editing-tool-graphical-client.md) \ No newline at end of file diff --git a/docs/framework/winforms/user-input-in-a-windows-forms-application.md b/docs/framework/winforms/user-input-in-a-windows-forms-application.md new file mode 100644 index 00000000000..e14e2371988 --- /dev/null +++ b/docs/framework/winforms/user-input-in-a-windows-forms-application.md @@ -0,0 +1,45 @@ +--- +title: "Windows フォーム アプリケーションにおけるユーザー入力 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "Windows フォーム, ユーザー入力" +ms.assetid: 9d61fa96-70f7-4754-885a-49a4a6316bdb +caps.latest.revision: 7 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 7 +--- +# Windows フォーム アプリケーションにおけるユーザー入力 +Windows フォームでのユーザー入力は、Windows メッセージの形式でアプリケーションに送られます。 これらのメッセージは、オーバーライドできる一連のメソッドにより、アプリケーション、フォーム、コントロールの各レベルで処理されます。 これらのメソッドがマウス メッセージやキーボード メッセージを受け取るとイベントが発生し、このイベントを処理することで、マウス入力やキーボード入力に関する情報を取得できます。 多くの場合、Windows フォーム アプリケーションは、これらのイベントを処理するだけですべてのユーザー入力を処理できますが、 アプリケーションによっては、アプリケーション、フォーム、またはコントロールよりも前に特定のメッセージを受け取ることができるように、メッセージを処理するメソッドのいずれかをオーバーライドする必要がある場合もあります。 + +## マウス イベントとキーボード イベント + すべての Windows フォーム コントロールは、マウス入力とキーボード入力に関連するイベント セットを継承します。 たとえば、コントロールは、 イベントを処理して、押されたキーの文字コードを判別したり、 イベントを処理して、マウス クリックの位置を特定したりできます。 マウス イベントとキーボード イベントの詳細については、「[キーボード イベントの使用](../../../docs/framework/winforms/using-keyboard-events.md)」および「[Windows フォームにおけるマウス イベント](../../../docs/framework/winforms/mouse-events-in-windows-forms.md)」を参照してください。 + +## ユーザー入力メッセージを処理するメソッド + フォームとコントロールは、 インターフェイスと、メッセージ キュー内のさまざまな位置で Windows メッセージを処理する、オーバーライドできる一連のメソッドにアクセスできます。 これらのメソッドはすべて、Windows メッセージの下位の詳細情報をカプセル化する パラメーターを使用します。 これらのメソッドを実装またはオーバーライドしてメッセージを調べてから、メッセージを使用したり、メッセージ キュー内の次のコンシューマーにメッセージを渡したりできます。 Windows フォームですべての Windows メッセージを処理するメソッドを次の表に示します。 + +|メソッド|説明| +|----------|--------| +||キューに追加された \(またはポストされた\) Windows メッセージをアプリケーション レベルで受け取ります。| +||Windows メッセージが処理される前に、フォーム レベルまたはコントロール レベルでメッセージを受け取ります。| +||Windows メッセージをフォーム レベルまたはコントロール レベルで処理します。| +||Windows メッセージの既定の処理をフォーム レベルまたはコントロール レベルで実行します。 ウィンドウの最小限の機能を提供します。| +||メッセージが処理された後に、フォーム レベルまたはコントロール レベルでメッセージを受け取ります。 このメソッドが呼び出されるようにするには、 スタイル ビットを設定する必要があります。| + + キーボード メッセージとマウス メッセージは、これらのメッセージの種類に固有の、オーバーライドできる追加のメソッドによっても処理されます。 詳細については、「[キーボード入力のしくみ](../../../docs/framework/winforms/how-keyboard-input-works.md)」および「[Windows フォームにおけるマウス入力のしくみ](../../../docs/framework/winforms/how-mouse-input-works-in-windows-forms.md)」を参照してください。 + +## 参照 + [Windows フォームでのユーザー入力](../../../docs/framework/winforms/user-input-in-windows-forms.md) + [Windows フォーム アプリケーションにおけるキーボード入力](../../../docs/framework/winforms/keyboard-input-in-a-windows-forms-application.md) + [Windows フォーム アプリケーションにおけるマウス入力](../../../docs/framework/winforms/mouse-input-in-a-windows-forms-application.md) \ No newline at end of file diff --git a/docs/framework/winforms/user-input-in-windows-forms.md b/docs/framework/winforms/user-input-in-windows-forms.md new file mode 100644 index 00000000000..d4ac9e4ee6c --- /dev/null +++ b/docs/framework/winforms/user-input-in-windows-forms.md @@ -0,0 +1,49 @@ +--- +title: "Windows フォームでのユーザー入力 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "キーボード入力, 使用 (Windows フォームで)" + - "キーボード, キーボード入力" + - "マウス入力, 使用 (Windows フォームで)" + - "Windows フォーム, ユーザー入力" +ms.assetid: 1486075f-1e06-4c9e-82c6-f948331db6d6 +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# Windows フォームでのユーザー入力 +Windows フォームには、関連する Windows メッセージの処理中に発生するイベントに基づくユーザーの入力モデルが含まれています。 特定のタスクを実行する方法を示すコード例を含む、マウスとキーボードのユーザー入力については、このセクションのトピックで説明します。 + +## このセクションの内容 + [Windows フォーム アプリケーションにおけるユーザー入力](../../../docs/framework/winforms/user-input-in-a-windows-forms-application.md) + ユーザーの入力イベント、および Windows メッセージを処理するメソッドの概要を示します。 + + [Windows フォーム アプリケーションにおけるキーボード入力](../../../docs/framework/winforms/keyboard-input-in-a-windows-forms-application.md) + キーボードのメッセージ処理、様々な種類のキー、およびキーボード イベントについて説明します。 + + [Windows フォーム アプリケーションにおけるマウス入力](../../../docs/framework/winforms/mouse-input-in-a-windows-forms-application.md) + マウスのカーソルとマウスのキャプチャなど、マウス イベントやその他のマウスに関連する機能の情報を提供します。 + + [方法 : マウス イベントとキーボード イベントをコードでシミュレートする](../../../docs/framework/winforms/how-to-simulate-mouse-and-keyboard-events-in-code.md) + プログラムでマウスおよびキーボード入力をシミュレートするいくつかの方法を示します。 + + [方法 : Windows フォーム コントロールでユーザー入力イベントを処理する](../../../docs/framework/winforms/how-to-handle-user-input-events-in-windows-forms-controls.md) + ほとんどのユーザーの入力イベントを処理し、各イベントに関する情報をレポートするコード例を表示します。 + + [Windows フォームでのユーザー入力の検証](../../../docs/framework/winforms/user-input-validation-in-windows-forms.md) + Windows フォーム アプリケーションでユーザー入力を検証する方法について説明します。 + +## 関連項目 + 「[Windows フォーム内でのイベント ハンドラーの作成](http://msdn.microsoft.com/library/dacysss4\(v=vs.110\))」も参照してください。 \ No newline at end of file diff --git a/docs/framework/winforms/user-input-validation-in-windows-forms.md b/docs/framework/winforms/user-input-validation-in-windows-forms.md new file mode 100644 index 00000000000..26254ca12c0 --- /dev/null +++ b/docs/framework/winforms/user-input-validation-in-windows-forms.md @@ -0,0 +1,107 @@ +--- +title: "Windows フォームでのユーザー入力の検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "ユーザー入力, 検証 (Windows フォームで)" + - "検証 (ユーザー入力の), Windows フォーム" + - "検証, Windows フォームのユーザー入力" + - "Windows フォーム, 検証 (ユーザー入力の)" +ms.assetid: 4ec07681-1dee-4bf9-be5e-718f635a33a1 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# Windows フォームでのユーザー入力の検証 +ユーザーがアプリケーションにデータを入力する場合、アプリケーションがそのデータを使用する前に、データが有効であるかどうかの検証が必要になることがあります。 たとえば、テキスト フィールドの長さがゼロでないこと、フィールドの形式が電話番号や他の形式のデータとして適していること、または、文字列に、データベースのセキュリティに危険を与える可能性がある安全でない文字が含まれていないことを確認したりします。 Windows フォームは、アプリケーションでの入力を検証するさまざまな方法を提供します。 + +## MaskedTextBox コントロールによる検証 + 電話番号や部品番号のように特定の形式でユーザーがデータを入力する必要がある場合は、 コントロールを使用することで、これを簡単に、かつ最小限のコードで実現できます。 *マスク*は、テキスト ボックス内の所定の位置に入力できる文字を指定する、マスキング言語の文字から成る文字列です。 コントロールは、ユーザーに対して一連のプロンプトを表示します。 数字が要求される場所に文字を入力しようとするなど、ユーザーが正しくないエントリを入力すると、コントロールは自動的に入力を拒否します。 + + で使用されるマスク言語は非常に柔軟性があり、 必須文字、オプション文字、ハイフンやかっこなどのリテラル文字、通貨記号、および日付の区切り記号を指定できます。 コントロールは、データ ソースとバインドしている場合にも適切に動作します。 データ バインディングに対して イベントを使用すると、受信データをマスクに合わせて再設定できます。 イベントを使用すると、データ フィールドの指定に合わせて送信データを再設定できます。 + + 詳細については、「[MaskedTextBox コントロール](../../../docs/framework/winforms/controls/maskedtextbox-control-windows-forms.md)」を参照してください。 + +## イベント ドリブン検証 + プログラムで検証を完全に制御する場合、または、複雑な検証チェックを実行する必要がある場合は、大部分の Windows フォーム コントロールに組み込まれている検証イベントを使用します。 自由形式のユーザー入力を受け取る各コントロールは イベントを備えており、、コントロールがデータ検証を要求するとこのイベントが発生します。 イベント処理メソッドを使用すると、ユーザーの入力をさまざまな方法で検証できます。 たとえば、郵便番号を入力するテキスト ボックスがある場合、次のような方法で検証を実行できます。 + +- そこに特定のグループに属する郵便番号を入力する必要がある場合、入力値に対して文字列比較を実行し、ユーザーの入力データを検証できます。 たとえば、{10001, 10002, 10003} という集合に含まれる郵便番号を入力する必要がある場合、文字列比較を使用してデータを検証できます。 + +- 特定の形式で郵便番号を入力する必要がある場合は、正規表現を使用してユーザーの入力データを検証できます。 たとえば、`#####` または `#####-####` という形式を検証する場合、正規表現 `^(\d{5})(-\d{4})?$` を使用できます。 `A#A #A#` という形式を検証するには、正規表現 `[A-Z]\d[A-Z] \d[A-Z]\d` を使用できます。 正規表現の詳細については、「[.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md)」および「[正規表現の例](../../../docs/standard/base-types/regular-expression-examples.md)」を参照してください。 + +- 有効なアメリカ合衆国郵便番号を入力する必要がある場合、郵便番号の Web サービスを呼び出して、ユーザーの入力データを検証することもできます。 + + イベントには、 型のオブジェクトを提供します。 コントロールのデータが有効でないと判断した場合は、このオブジェクトの プロパティを `true` に設定することによって、 イベントをキャンセルできます。 プロパティが設定されない場合は、そのコントロールの検証が正常終了したものと見なされ、 イベントが発生します。 + + で電子メール アドレスを検証するコード例については、 のトピックを参照してください。 + +### データ バインディングおよびイベント ドリブン検証 + コントロールがデータベース テーブルなどのデータ ソースにバインドされている場合、検証は非常に効果的です。 検証を使用すると、コントロールのデータがデータ ソースに適した形式であることや、安全でない可能性がある引用符やバック スラッシュなどの特殊文字を含まないことを確認できます。 + + データ バインディングを使用すると、コントロール内のデータは、 イベントの実行中、データ ソースと同期します。 イベントをキャンセルすると、データはデータ ソースと同期しません。 + +> [!IMPORTANT] +> イベントの後に実行するカスタム検証の場合は、データ バインディングに影響しません。 たとえば、 イベント内にデータ バインディングをキャンセルするコードがある場合でも、データ バインディングは発生します。 この場合、 イベント内で検証を実行するには、コントロールの **\[データ ソース更新モード\]** プロパティ \(**\[\(Databindings\)\]**\\**\[\(詳細\)\]** の下\) を **\[OnValidation\]** から **\[Never\]** に変更し、検証コードに *Control*`.DataBindings["`*\*`"].WriteValue()` を追加します。 + +### 暗黙の検証と明示的な検証 + では、コントロールのデータはいつ検証を受けるのでしょうか。 その答えは、開発者しだいです。 アプリケーションの必要性に応じて、暗黙の検証と明示的な検証のいずれかを使用できます。 + +#### 暗黙の検証 + 暗黙の検証は、ユーザーがデータを入力するたびに検証する方法です。 キーの押下を読み取って、コントロールに入力されるデータを検証することもできますが、さらに一般的な方法としては、ユーザーがあるコントロールから次へ入力フォーカスを移動したときにデータを検証できます。 この方法は、入力中のデータについて、ユーザーに対して直ちにフィードバックを返す場合に有効です。 + + あるコントロールに対する暗黙の検証を使用する場合、そのコントロールの プロパティを `true` に設定します。 イベントをキャンセルした場合、コントロールの動作は に割り当てた値によって決定されます。 を割り当てた場合は、イベントをキャンセルしても、 イベントが発生しません。 ユーザーが有効なデータを入力するまで、入力フォーカスは現在のコントロールから移動しません。 を割り当てた場合は、イベントをキャンセルしても イベントは発生せず、フォーカスはそのまま次のコントロールに移ります。 + + プロパティに を割り当てると、暗黙の検証がまったく行われません。 コントロールを検証するには、明示的な検証を使用する必要があります。 + +#### 明示的な検証 + 明示的な検証は、データを 1 回で検証する方法です。 あるユーザー アクションが発生したとき \(\[保存\] ボタンや \[次へ\] リンクをクリックするなど\) に、データを検証することができます。 そのユーザー アクションが発生したときに明示的な検証をトリガーするには、次のいずれかを実行します。 + +- を呼び出して、最後のコントロールがフォーカスを失ったことを確認します。 + +- を呼び出して、フォーム コントロールまたはコンテナー コントロールのすべての子コントロールを検証します。 + +- カスタム メソッドを呼び出して、コントロールのデータを手動で検証します。 + +#### Windows フォーム コントロールにおける既定の暗黙の検証動作 + Windows フォーム コントロールの プロパティの既定値は、種類によってそれぞれ異なります。 最も一般的なコントロールとその既定値を次の表に示します。 + +|Control|既定の検証動作| +|-------------|-------------| +||| +||| +||Visual Studio の中でプロパティは公開されない| +||Visual Studio の中でプロパティは公開されない| +||| +||| + +## フォームを閉じて検証をオーバーライドする + データが無効なためにフォーカスがコントロールに維持される場合、次のような通常の方法でフォームを閉じようとしても、親フォームを閉じることができません。 + +- **\[閉じる\]** をクリックする。 + +- **\[システム\]** メニューの **\[閉じる\]** をクリックする。 + +- プログラムで メソッドを呼び出す。 + + ただし、場合によっては、コントロール内の値が有効かどうかにかかわらず、ユーザーがフォームを閉じることができるようにする必要があります。 フォームの イベントのハンドラーを作成することにより、検証をオーバーライドして、無効なデータを含んでいるフォームを閉じることができます。 このイベント内で、 プロパティを `false` に設定します。 これにより、フォームが強制的に閉じられます。 詳細および使用例については、「」を参照してください。 + +> [!NOTE] +> フォームをこのように強制的に閉じると、そのフォームのコントロール内の保存されていないデータはすべて失われます。 また、モーダル フォームは、閉じられるときにコントロールの内容を検証しません。 コントロールの検証を使用してフォーカスをコントロールにロックすることはできますが、フォームを閉じるときの動作を考慮する必要はありません。 + +## 参照 + + + + [MaskedTextBox コントロール](../../../docs/framework/winforms/controls/maskedtextbox-control-windows-forms.md) + [正規表現の例](../../../docs/standard/base-types/regular-expression-examples.md) \ No newline at end of file diff --git a/docs/framework/winforms/using-keyboard-events.md b/docs/framework/winforms/using-keyboard-events.md new file mode 100644 index 00000000000..b489f98d548 --- /dev/null +++ b/docs/framework/winforms/using-keyboard-events.md @@ -0,0 +1,53 @@ +--- +title: "キーボード イベントの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "イベント [Windows フォーム], キーボード" + - "キーボード イベント" + - "キーボード, キーボード イベント" + - "KeyDown イベント" + - "KeyPress イベント" + - "KeyUp イベント" +ms.assetid: d3f3e14b-a459-4ee6-9875-8957e34f8ee9 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# キーボード イベントの使用 +多くの Windows フォーム プログラムは、キーボード イベントを処理することによってキーボード入力を処理します。 ここでは、どのような場合に各キーボード イベントを使用するか、また各イベントがどのようなデータを提供するかについての詳細を含め、キーボード イベントの概要について説明します。 「[イベント ハンドラーの概要 \(Windows フォーム\)](http://msdn.microsoft.com/library/be6fx1bb\(v=vs.110\))」、「[イベントの概要 \(Windows フォーム\)](http://msdn.microsoft.com/library/1h12f09z\(v=vs.110\))」も参照してください。 + +## キーボード イベント + Windows フォームは、ユーザーがキーボードのキーを押したときに発生する 2 つのイベントと、キーボードのキーを離したときに発生する 1 つのイベントを提供します。これらのイベントは次のとおりです。 + +- イベント。キーを押したときに 1 回発生します。 + +- イベント。ユーザーが同じキーを押したままにすると、繰り返し発生する可能性があります。 + +- イベント。ユーザーがキーを離したときに 1 回発生します。 + + ユーザーがキーを押すと、Windows フォームは、キーボード メッセージが文字キーまたは物理キーのどちらを示しているかに基づいて、発生させるイベントを決定します。 文字キーと物理キーの詳細については、「[キーボード入力のしくみ](../../../docs/framework/winforms/how-keyboard-input-works.md)」を参照してください。 + + 上の 3 つのキーボード イベントに関する説明を次の表に示します。 + +|キーボード イベント|説明|結果| +|----------------|--------|--------| +||このイベントは、ユーザーが物理キーを押すと発生します。| のハンドラーは、次の項目を受け取ります。

  • パラメーター。このパラメーターは、物理キーボード ボタンを示す プロパティを提供します。
  • プロパティ \(Shift、Ctrl、または Alt キー\)。
  • プロパティ \(キー コードと修飾子を組み合わせます\)。 また、 パラメーターは、次のプロパティを提供します。

    • プロパティ。基となるコントロールがキーを受け取らないように設定できます。
    • プロパティ。これを使用すると、特定のキーストロークで イベントと イベントが発生しないようにすることができます。
| +||このイベントは、1 つまたは複数のキーを押すことにより文字が出力された場合に発生します。 たとえば、Shift キーを押しながら小文字の "a" キーを押すと、大文字の "A" が出力されます。| は、 の後に発生します。

  • のハンドラーは、次の項目を受け取ります。
  • パラメーター。このパラメーターには、押したキーの文字コードが入ります。 この文字コードは、文字キーと修飾子キーの組み合わせごとに一意です。

    たとえば、"A" キーは次の文字コードを生成します。

    • 文字コード 65 \(Shift キーまたは Caps Lock キーと一緒に押した場合\)
    • 97 \(単独で押した場合\)
    • 1 \(Ctrl キーと一緒に押した場合\)
| +||このイベントは、ユーザーが物理キーを離すと発生します。| のハンドラーは、次の項目を受け取ります。

  • パラメーターの値。次のプロパティを提供します。

    • プロパティ \(物理キーボード ボタンを示します\)。
    • プロパティ \(Shift、Ctrl、または Alt キー\)。
    • プロパティ \(キー コードと修飾子を組み合わせます\)。
| + +## 参照 + [Windows フォーム アプリケーションにおけるキーボード入力](../../../docs/framework/winforms/keyboard-input-in-a-windows-forms-application.md) + [キーボード入力のしくみ](../../../docs/framework/winforms/how-keyboard-input-works.md) + [Windows フォーム アプリケーションにおけるマウス入力](../../../docs/framework/winforms/mouse-input-in-a-windows-forms-application.md) \ No newline at end of file diff --git a/docs/framework/winforms/windows-forms-coordinates.md b/docs/framework/winforms/windows-forms-coordinates.md new file mode 100644 index 00000000000..4b30304baea --- /dev/null +++ b/docs/framework/winforms/windows-forms-coordinates.md @@ -0,0 +1,42 @@ +--- +title: "Windows フォームの座標 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "クライアント座標" + - "座標, Windows フォーム" + - "画面座標" + - "Windows フォームの座標" +ms.assetid: cc06e61f-43b6-4408-a676-2542dcfcd96e +caps.latest.revision: 5 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 5 +--- +# Windows フォームの座標 +Windows フォームの座標系はデバイス座標に基づいています。Windows フォームを描画するときの基本測定単位はデバイス単位 \(通常、ピクセル\) です。 画面上の点は x 座標と y 座標の組み合わせで表され、x 座標は右に行くほど大きくなり、y 座標は下に行くほど大きくなります。 画面上の原点の位置は、画面座標かクライアント座標のいずれを指定しているかによって異なります。 + +## 画面座標 + Windows フォーム アプリケーションでは、画面上のウィンドウの位置を画面座標で指定します。 画面座標の場合、原点は画面の左上隅になります。 ウィンドウの完全な位置は、多くの場合、ウィンドウの左上隅と右下隅を定義する 2 点の画面座標を含む 構造体によって表されます。 + +## クライアント座標 + Windows フォーム アプリケーションでは、フォームやコントロール内の点の位置をクライアント座標で指定します。 クライアント座標の原点は、コントロールやフォームのクライアント領域の左上隅になります。 クライアント座標により、アプリケーションでフォームやコントロールを描画するときに、画面上の位置とは無関係に一貫した座標値を使用できます。 + + クライアント領域の寸法も、その領域のクライアント座標を含む 構造体によって表されます。 常に四角形の左上の座標がクライアント領域に含まれ、右下の座標は除外されます。 グラフィックス操作には、クライアント領域の右辺と下辺が含まれません。 たとえば、 メソッドは、指定した四角形の右辺と下辺まで塗りつぶしますが、これらの辺を含みません。 + +## 座標の種類の変換 + 画面座標からクライアント座標への変換が必要になることがあります。 この変換は、 クラスの メソッドや メソッドを使用して簡単に行うことができます。 たとえば、 プロパティは画面座標で報告されますが、クライアント座標に変換することもできます。 + +## 参照 + + \ No newline at end of file diff --git a/docs/framework/winforms/windows-forms-data-binding.md b/docs/framework/winforms/windows-forms-data-binding.md new file mode 100644 index 00000000000..3cc7a0b13dc --- /dev/null +++ b/docs/framework/winforms/windows-forms-data-binding.md @@ -0,0 +1,80 @@ +--- +title: "Windows フォームでのデータ バインド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "バインド コントロール, Windows フォーム" + - "データ [Windows フォーム]" + - "データ [Windows フォーム], アーキテクチャ" + - "Windows フォーム コントロール, データ バインディング" + - "Windows フォーム, データ バインディング" +ms.assetid: c3826d8e-ea25-4ad4-a669-45bfb19192aa +caps.latest.revision: 25 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 25 +--- +# Windows フォームでのデータ バインド +Windows フォームでのデータ バインドは、データ ソースの情報をフォーム上のコントロールで表示したり変更したりする手段を提供します。 従来のデータ ソースに対してだけでなく、データを格納したほとんどすべての構造に対してバインドできます。 + +## このセクションの内容 + [データ連結と Windows フォーム](../../../docs/framework/winforms/data-binding-and-windows-forms.md) + Windows フォームのデータ バインドの概要を説明します。 + + [Windows フォームがサポートするデータ ソース](../../../docs/framework/winforms/data-sources-supported-by-windows-forms.md) + Windows フォームで使用できるデータ ソースについて説明します。 + + [データ連結に関連するインターフェイス](../../../docs/framework/winforms/interfaces-related-to-data-binding.md) + Windows フォームのデータ バインドで使用されるいくつかのインターフェイスについて説明します。 + + [方法 : Windows フォームでデータ間を移動する](../../../docs/framework/winforms/how-to-navigate-data-in-windows-forms.md) + データ ソースの項目間を移動する方法を示します。 + + [Windows フォーム データ バインドの変更通知](../../../docs/framework/winforms/change-notification-in-windows-forms-data-binding.md) + Windows フォーム データ バインドの異なる種類の変更通知について説明します。 + + [方法 : INotifyPropertyChanged インターフェイスを実装する](../../../docs/framework/winforms/how-to-implement-the-inotifypropertychanged-interface.md) + インターフェイスを実装する方法について説明します。 インターフェイスは、バインドしたコントロールを通してビジネス オブジェクトのプロパティの変更内容を通信します。 + + [方法 : PropertyNameChanged パターンを適用する](../../../docs/framework/winforms/how-to-apply-the-propertynamechanged-pattern.md) + Windows フォームのユーザー コントロールのプロパティに *PropertyName*Changed パターンを適用する方法について説明します。 + + [方法 : ITypedList インターフェイスを実装する](../../../docs/framework/winforms/how-to-implement-the-itypedlist-interface.md) + インターフェイスを実装して、バインドできるリストのスキーマを検出できるようにする方法について説明します。 + + [方法 : IListSource インターフェイスを実装する](../../../docs/framework/winforms/how-to-implement-the-ilistsource-interface.md) + インターフェイスを実装して、 を実装する代わりに別の場所からリストを提供する、バインドできるクラスを作成する方法について説明します。 + + [方法 : 複数のコントロールを 1 つのデータ ソースにバインドして同期状態を保つ](../../../docs/framework/winforms/multiple-controls-bound-to-data-source-synchronized.md) + イベントを処理して、データ ソースにバインドされているすべてのコントロールの同期を保つ方法について説明します。 + + [方法 : 子テーブルの選択行が現在位置を保持することを保証する](../../../docs/framework/winforms/ensure-the-selected-row-in-a-child-table-correct.md) + 親テーブルのフィールドが変更された場合に、子テーブルの選択行が変更されないことを保証する方法について説明しています。 + + 「[データ バインディングに関連するインターフェイス](http://msdn.microsoft.com/library/41e17s4b\(v=vs.110\))」、「[方法 : Windows フォームでデータ間を移動する](http://msdn.microsoft.com/library/b63ha24w\(v=vs.110\))」、「[方法 : Windows フォームに単純バインド コントロールを作成する](http://msdn.microsoft.com/library/sw223a62\(v=vs.110\))」も参照してください。 + +## 関連項目 + + バインドできるコンポーネントとデータ ソースの間のバインディングを表すクラスについて説明します。 + + + コントロールにバインドするためにデータ ソースをカプセル化するクラスについて説明します。 + +## 関連項目 + [BindingSource コンポーネント](../../../docs/framework/winforms/controls/bindingsource-component.md) + コンポーネントの使用方法の例を示すトピックの一覧を示します。 + + [DataGridView コントロール](../../../docs/framework/winforms/controls/datagridview-control-windows-forms.md) + バインドできるデータ グリッド コントロールの使用方法の例を示すトピックの一覧を示します。 + + 「[Visual Studio でのデータへのアクセス](http://msdn.microsoft.com/library/wzabh8c4\(v=vs.110\))」または「[Visual Studio でのデータへのアクセス](http://msdn.microsoft.com/library/wzabh8c4\(v=vs.110\))」も参照してください。 \ No newline at end of file diff --git a/docs/framework/winforms/windows-forms-overview.md b/docs/framework/winforms/windows-forms-overview.md new file mode 100644 index 00000000000..0e7adb22ffd --- /dev/null +++ b/docs/framework/winforms/windows-forms-overview.md @@ -0,0 +1,111 @@ +--- +title: "Windows フォームの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "スマート クライアント" + - "Windows フォーム, Windows フォームの概要" +ms.assetid: 3a2b6284-c8d6-4e1c-8c69-0bed38f38cd4 +caps.latest.revision: 34 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 34 +--- +# Windows フォームの概要 +次の概要では、スマート クライアント アプリケーションの利点、Windows フォームのプログラミングの主な機能について説明し、Windows フォームを使用して今日の企業とエンドユーザーのニーズを満たすスマート クライアントを構築する方法を示します。 + +## Windows フォームとスマート クライアント アプリケーション + Windows フォームを使用して、スマート クライアントを開発します。 *スマート クライアント*は、展開と更新が容易で、インターネットに接続したときも切断しているときも動作し、従来の Windows ベースのアプリケーションよりも安全な方法でローカル コンピューター上のリソースにアクセスできる、リッチなグラフィックスのアプリケーションです。 + +### リッチで対話型のユーザー インターフェイスの構築 + Windows フォームは、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] のためのスマート クライアント テクノロジであり、ファイル システムへの読み書きなど、アプリケーションの一般的なタスクを簡略化するマネージ ライブラリのセットです。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] などの開発環境を使用する場合、情報を表示して、ユーザーからの入力を要求し、ネットワーク経由でリモート コンピューターと通信する Windows フォームのスマート クライアント アプリケーションを作成できます。 + + Windows フォームでは、*フォーム*はユーザーに情報を表示するビジュアル サーフェイスです。 通常は、コントロールをフォームに追加して、マウスのクリックやキーの押下などのユーザー アクションへの応答を開発することで、Windows フォーム アプリケーションを開発します。 *コントロール* は、データを表示したりデータ入力を受け入れたりする独立したユーザー インターフェイス \(UI\) 要素です。 + + ユーザーがフォームまたはそのコントロールのいずれかにアクションを実行すると、そのアクションがイベントを生成します。 アプリケーションは、コードを使用してこれらのイベントに反応し、イベントが発生したときにそのイベントを処理します。 詳細については、「[Windows フォーム内でのイベント ハンドラーの作成](../../../docs/framework/winforms/creating-event-handlers-in-windows-forms.md)」を参照してください。 + + Windows フォームには、テキスト ボックス、ボタン、ドロップダウン ボックス、ラジオ ボタン、Web ページなどを表示するコントロールなど、フォームに追加できるさまざまなコントロールが含まれています。 フォーム上で使用できるすべてのコントロールの一覧は、「[Windows フォームで使用するコントロール](../../../docs/framework/winforms/controls/controls-to-use-on-windows-forms.md)」を参照してください。 既存のコントロールがニーズを満たしていない場合に、Windows フォームは クラスを使用した独自のカスタム コントロールの作成もサポートしています。 + + Windows フォームには、Microsoft Office のようなハイエンド アプリケーションの機能をエミュレートする豊富な UI コントロールが用意されています。 コントロールと コントロールを使用する場合、テキストとイメージを含むツールバーとメニューを作成したり、サブメニューを表示したり、テキスト ボックスやコンボ ボックスなど、その他のコントロールをホストしたりできます。 + + Windows フォーム デザイナーで [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] をドラッグ アンド ドロップすると、Windows フォーム アプリケーションを簡単に作成できます。 コントロールをカーソルで選択して、フォームの任意の場所に追加するだけです。 デザイナーがグリッド線やスナップ線などのツールを提供するので、コントロールの調整が楽になります。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] を使用する場合も、コマンド ラインでコンパイルする場合も、、および の各コントロールを使用して、短時間で高度なフォーム レイアウトを作成できます。 + + 最後に、独自のカスタム UI 要素を作成する必要がある場合は、 名前空間に、線、円、およびその他の図形をフォーム上に直接表示するクラスが多数含まれています。 + +> [!NOTE] +> Windows フォーム コントロールは、アプリケーション ドメイン間でマーシャリングするよう設計されていません。 このため、 基本型で可能であるように見えても、Microsoft は、 境界間の Windows フォーム コントロールの引き渡しはサポートしていません。 複数のアプリケーション ドメインを持つ Windows フォーム アプリケーションは、Windows フォーム コントロールがアプリケーション ドメインの境界を越えて渡されない限りサポートされます。 + +#### フォームとコントロールの作成に関するヘルプ + これらの機能を使用する方法の手順を追った説明については、次のヘルプ トピックを参照してください。 + +|説明|ヘルプ トピック| +|--------|--------------| +|フォーム上のコントロールを使用する|[方法 : Windows フォームにコントロールを追加する](../../../docs/framework/winforms/controls/how-to-add-controls-to-windows-forms.md)| +| コントロールを使用する|[方法 : デザイナーを使用して標準アイテムで基本的な ToolStrip を作成する](../../../docs/framework/winforms/controls/create-a-basic-wf-toolstrip-with-standard-items-using-the-designer.md)| +| を使用してグラフィックスを作成する|[グラフィックス プログラミングについて](../../../docs/framework/winforms/advanced/getting-started-with-graphics-programming.md)| +|カスタム コントロールの作成|[方法 : UserControl クラスを継承する](../../../docs/framework/winforms/controls/how-to-inherit-from-the-usercontrol-class.md)| + +### データの表示と操作 + 多くのアプリケーションは、データベース、XML ファイル、XML Web サービス、またはその他のデータ ソースからデータを表示する必要があります。 Windows フォームは、従来の行と列の形式である、表形式のデータを表示するために、 コントロールという名前の柔軟なコントロールを提供しているため、すべてのデータが独自のセルを占有します。 を使用すると、個別のセルの外観のカスタマイズ、任意の列と行のその場でのロック、セルの内部の複雑なコントロールの表示や、その他の機能が可能になります。 + + ネットワーク経由のデータ ソースへの接続は、Windows フォームのスマート クライアントを使用すればシンプルなタスクです。 コンポーネントは、[!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] と [!INCLUDE[dnprdnlong](../../../includes/dnprdnlong-md.md)] の新しい Windows フォームであり、データ ソースへの接続を表し、データをコントロールにバインドするためのメソッドの公開、前または次のレコードへの移動、レコードの編集、元のソースへの変更の保存を実行します。 コントロールは、ユーザーがレコード間を移動する コンポーネントに対して、シンプルなインターフェイスを提供します。 + + \[データ ソース\] ウィンドウを使用すると、データ バインド コントロールを簡単に作成できます。 ウィンドウには、プロジェクト内のデータベース、Web サービス、オブジェクトなどのデータ ソースが表示されます。 このウィンドウからプロジェクトのフォームに項目をドラッグして、データ バインド コントロールを作成できます。 また、\[データ ソース\] ウィンドウから既存のコントロールにオブジェクトをドラッグして、データに既存のコントロールをバインドすることもできます。 + + Windows フォームで管理できる別の種類のデータ バインディングは*設定*です。 ほとんどのスマート クライアント アプリケーションは、フォームの前回のサイズなどの実行時の状態に関する情報を保持し、保存されたファイルの既定の場所などのユーザー設定のデータを保持する必要があります。 アプリケーション設定機能は、クライアント コンピューターに両方の種類の設定を保存する簡単な方法を提供することで、こうした要件に対応します。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] またはコード エディターを使用してこれらの設定を定義したら、設定は XML として永続化され、実行時に自動的にメモリに読み取られます。 + +#### データの表示と操作に関するヘルプ + これらの機能を使用する方法の手順を追った説明については、次のヘルプ トピックを参照してください。 + +|説明|ヘルプ トピック| +|--------|--------------| +| コンポーネントを使用する|[方法 : デザイナーを使用して Windows フォーム コントロールを BindingSource コンポーネントにバインドする](../../../docs/framework/winforms/controls/bind-wf-controls-with-the-bindingsource.md)| +|[!INCLUDE[vstecado](../../../includes/vstecado-md.md)] データ ソースを操作する|[方法 : Windows フォーム BindingSource コンポーネントで ADO.NET データを並べ替える\/フィルター処理する](../../../docs/framework/winforms/controls/sort-and-filter-ado-net-data-with-wf-bindingsource-component.md)| +|\[データ ソース\] ウィンドウを使用する|[チュートリアル: Windows フォームでのデータの表示](../Topic/Walkthrough:%20Displaying%20Data%20on%20a%20Windows%20Form.md)| +|アプリケーション設定を使用する|[方法 : アプリケーション設定を作成する](../../../docs/framework/winforms/advanced/how-to-create-application-settings.md)| + +### クライアント コンピューターにアプリケーションを配置する + アプリケーションを作成した後、ユーザーにアプリケーションを送信して、独自のクライアント コンピューターにインストールして実行できるようにする必要があります。 [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] テクノロジを使用する場合、数回クリックするだけで、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] の中からアプリケーションを配置して、Web 上のアプリケーションを指す URL をユーザーに提供することができます。 [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] は、アプリケーションのすべての要素と依存関係を管理し、クライアント コンピューターにアプリケーションが正しくインストールされていることを確認します。 + + [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] アプリケーションは、ユーザーがネットワークに接続されている場合にのみ実行するか、オンラインとオフラインの両方で実行するかを構成することができます。 アプリケーションがオフライン操作をサポートするよう指定すると、[!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] はユーザーの **\[スタート\]** メニューにアプリケーションへのリンクを追加します。 ユーザーは、URL を使用せずにアプリケーションを開くことができます。 + + アプリケーションを更新するときに、新しい配置マニフェストとアプリケーションの新しいコピーを Web サーバーに発行します。 [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] は、使用可能な更新プログラムがあることを検出し、ユーザーのインストールをアップグレードします。古いアセンブリを更新するのに、カスタム プログラミングは必要ありません。 + +#### ClickOnce アプリケーションの配置に関するヘルプ + [!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] の完全な概要については、「[ClickOnce のセキュリティと配置](../Topic/ClickOnce%20Security%20and%20Deployment.md)」を参照してください。 これらの機能を使用する方法の手順を追った説明については、次のヘルプ トピックを参照してください。 + +|説明|ヘルプ トピック| +|--------|--------------| +|[!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] を使用してアプリケーションを配置する|[方法: 発行ウィザードを使用して ClickOnce アプリケーションを発行する](../Topic/How%20to:%20Publish%20a%20ClickOnce%20Application%20using%20the%20Publish%20Wizard.md)

[チュートリアル : ClickOnce アプリケーションを手動で配置する](../Topic/Walkthrough:%20Manually%20Deploying%20a%20ClickOnce%20Application.md)| +|[!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] の配置を更新する|[方法 : ClickOnce アプリケーションの更新プログラムを管理する](../Topic/How%20to:%20Manage%20Updates%20for%20a%20ClickOnce%20Application.md)| +|[!INCLUDE[ndptecclick](../../../includes/ndptecclick-md.md)] を使用してセキュリティを管理する|[方法 : ClickOnce のセキュリティ設定を有効にする](../Topic/How%20to:%20Enable%20ClickOnce%20Security%20Settings.md)| + +### その他のコントロールおよび機能 + Windows フォームには、ダイアログ ボックスの作成、ヘルプやドキュメントの印刷や追加、アプリケーションの複数言語へのローカライズのサポートなど、一般的なタスクを高速で簡単に実装できる機能が他にも多数あります。 さらに、Windows フォームは、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] の堅牢なセキュリティ システムを利用しています。 このシステムを使用することで、顧客により安全なアプリケーションをリリースできます。 + +#### その他のコントロールや機能の実装に関するヘルプ + これらの機能を使用する方法の手順を追った説明については、次のヘルプ トピックを参照してください。 + +|説明|ヘルプ トピック| +|--------|--------------| +|フォームの内容を印刷する|[方法 : Windows フォームでグラフィックスを印刷する](../../../docs/framework/winforms/advanced/how-to-print-graphics-in-windows-forms.md)

[方法 : Windows フォームで複数ページのテキスト ファイルを印刷する](../../../docs/framework/winforms/advanced/how-to-print-a-multi-page-text-file-in-windows-forms.md)| +|Windows フォームのセキュリティについての詳細|[Windows フォームのセキュリティの概要](../../../docs/framework/winforms/security-in-windows-forms-overview.md)| + +## 参照 + [Windows フォームについて](../../../docs/framework/winforms/getting-started-with-windows-forms.md) + [新しい Windows フォームの作成](../../../docs/framework/winforms/creating-a-new-windows-form.md) + [ToolStrip コントロールの概要](../../../docs/framework/winforms/controls/toolstrip-control-overview-windows-forms.md) + [DataGridView コントロールの概要](../../../docs/framework/winforms/controls/datagridview-control-overview-windows-forms.md) + [BindingSource コンポーネントの概要](../../../docs/framework/winforms/controls/bindingsource-component-overview.md) + [アプリケーション設定の概要](../../../docs/framework/winforms/advanced/application-settings-overview.md) + [ClickOnce のセキュリティと配置](../Topic/ClickOnce%20Security%20and%20Deployment.md) \ No newline at end of file diff --git a/docs/framework/winforms/windows-forms-security.md b/docs/framework/winforms/windows-forms-security.md new file mode 100644 index 00000000000..6120949abe6 --- /dev/null +++ b/docs/framework/winforms/windows-forms-security.md @@ -0,0 +1,70 @@ +--- +title: "Windows フォームのセキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-winforms" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "jsharp" +helpviewer_keywords: + - "アクセス制御, Windows フォーム" + - "デザイナーのアクセスのセキュリティ" + - "アクセス許可, Windows フォーム" + - "セキュリティ [Windows フォーム]" + - "セキュリティ ポリシー, Windows フォーム" + - "Windows フォーム, セキュリティ" +ms.assetid: 932d438a-5285-46d8-a958-8c93d0ad6cae +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Windows フォームのセキュリティ +Windows フォームには、コード ベースのセキュリティ モデルが使用されています。コードを実行するユーザーに関係なく、セキュリティ レベルはコードに対して設定されます。 これは、コンピューター システム上に既に用意されている任意のセキュリティ スキーマに追加して使用されます。 既に用意されているセキュリティ スキーマには、ブラウザーのセキュリティ スキーマ \(Internet Explorer で使用されるゾーン ベースのセキュリティなど\) とオペレーティング システムのセキュリティ スキーマ \(Windows NT の資格情報ベースのセキュリティなど\) があります。 + +## このセクションの内容 + [Windows フォームのセキュリティの概要](../../../docs/framework/winforms/security-in-windows-forms-overview.md) + .NET Framework のセキュリティ モデルについて簡単に説明し、アプリケーション内の Windows フォームの安全性を確保するための基本的な手順を示します。 + + [Windows フォームにおけるファイルおよびデータへのより安全なアクセス](../../../docs/framework/winforms/more-secure-file-and-data-access-in-windows-forms.md) + やや信頼度の低い環境でファイルとデータにアクセスする方法について説明します。 + + [Windows フォームでのより安全な印刷](../../../docs/framework/winforms/more-secure-printing-in-windows-forms.md) + やや信頼度の低い環境で印刷機能にアクセスする方法について説明します。 + + [Windows フォームのセキュリティに関するその他の考慮事項](../../../docs/framework/winforms/additional-security-considerations-in-windows-forms.md) + 信頼度の低い環境におけるウィンドウ操作の実行、クリップボードの使用、およびアンマネージ コードの呼び出しについて説明します。 + +## 関連項目 + [NIB: Default Security Policy](http://msdn.microsoft.com/ja-jp/2c086873-0894-4f4d-8f7e-47427c1a3b55) + Full Trust、Local Intranet、および Internet の各アクセス許可セットで許可される既定のアクセス許可の一覧を示します。 + + [NIB: General Security Policy Administration](http://msdn.microsoft.com/ja-jp/5121fe35-f0e3-402c-94ab-4f35b0a87b4b) + .NET Framework のセキュリティ ポリシーの管理、およびアクセス許可の度合いを高める方法について説明します。 + + [危険なアクセス許可とポリシー管理](../../../docs/framework/misc/dangerous-permissions-and-policy-administration.md) + セキュリティ システムが回避される可能性のある .NET Framework のアクセス許可の例について説明します。 + + [安全なコーディングのガイドライン](../../../docs/standard/security/secure-coding-guidelines.md) + .NET Framework に対して安全なコードを記述するために推奨される方法を説明したトピックへのリンクを提供します。 + + [NIB: Requesting Permissions](http://msdn.microsoft.com/ja-jp/0447c49d-8cba-45e4-862c-ff0b59bebdc2) + コードの実行に必要なアクセス許可をランタイムに通知するために属性を使用する方法を説明します。 + + [セキュリティの基本概念](../../../docs/standard/security/key-security-concepts.md) + コードのセキュリティに関する基本的な事項を説明したトピックへのリンクを提供します。 + + [コード アクセス セキュリティの基礎](../../../docs/framework/misc/code-access-security-basics.md) + .NET Framework の実行時セキュリティ ポリシーを使用するための基本的な事項について説明します。 + + [NIB: Determining When to Modify Security Policy](http://msdn.microsoft.com/ja-jp/af749b17-e461-409d-84b9-a3d44789db16) + アプリケーションが既定のセキュリティ ポリシーから逸脱する必要がある場合の判断の方法について説明します。 + + [NIB: Deploying Security Policy](http://msdn.microsoft.com/ja-jp/f936c1e5-033b-4bd9-a3bd-a39ba733a681) + セキュリティ ポリシーの変更を配置するための推奨される方法について説明します。 \ No newline at end of file diff --git a/docs/framework/wpf/TOC.md b/docs/framework/wpf/TOC.md new file mode 100644 index 00000000000..9c9704433cf --- /dev/null +++ b/docs/framework/wpf/TOC.md @@ -0,0 +1,7 @@ +# [Windows Presentation Foundation](index.md) +# [WPF 部分信頼セキュリティ](wpf-partial-trust-security.md) +# [セキュリティ](security-wpf.md) +# [クラス ライブラリ](class-library-wpf.md) +# [WPF のセキュリティ方針 - プラットフォーム セキュリティ](wpf-security-strategy-platform-security.md) +# [WPF のサンプル](wpf-samples.md) +# [WPF のセキュリティ方針 - セキュリティ エンジニアリング](wpf-security-strategy-security-engineering.md) diff --git a/docs/framework/wpf/advanced/TOC.md b/docs/framework/wpf/advanced/TOC.md new file mode 100644 index 00000000000..cd5257edcbb --- /dev/null +++ b/docs/framework/wpf/advanced/TOC.md @@ -0,0 +1,268 @@ +# [ビジュアルにテキストを描画する](how-to-draw-text-to-a-visual.md) +# [WPF の双方向機能の概要](bidirectional-features-in-wpf-overview.md) +# [チュートリアル : ハイブリッド アプリケーションのローカライズ](walkthrough-localizing-a-hybrid-application.md) +# [オブジェクトの有効期間イベント](object-lifetime-events.md) +# [インクの回転](how-to-rotate-ink.md) +# [依存関係プロパティのメタデータをオーバーライドする](how-to-override-metadata-for-a-dependency-property.md) +# [XamlWriter.Save のシリアル化の制限](serialization-limitations-of-xamlwriter-save.md) +# [DependencyObject の安全なコンストラクター パターン](safe-constructor-patterns-for-dependencyobjects.md) +# [TypeConverters および XAML](typeconverters-and-xaml.md) +# [手書き認識](handwriting-recognition.md) +# [ハイブリッド アプリケーションのトラブルシューティング](troubleshooting-hybrid-applications.md) +# [読み取り専用の依存関係プロパティ](read-only-dependency-properties.md) +# [アプリケーションの起動時間](application-startup-time.md) +# [テキストの高度な書式設定](advanced-text-formatting.md) +# [インク データにカスタム データを追加する](how-to-add-custom-data-to-ink-data.md) +# [方法のトピック](flow-content-elements-how-to-topics.md) +# [フロー ドキュメントの概要](flow-document-overview.md) +# [アニメーションをテキストに適用する](how-to-apply-animations-to-text.md) +# [入力の概要](input-overview.md) +# [依存関係プロパティの所有者の種類を追加する](how-to-add-an-owner-type-for-a-dependency-property.md) +# [添付プロパティを登録する](how-to-register-an-attached-property.md) +# [ローカリゼーション属性とコメント](localization-attributes-and-comments.md) +# [Direct3D9 および WPF の相互運用性のパフォーマンスに関する考慮事項](performance-considerations-for-direct3d9-and-wpf-interoperability.md) +# [RowGroups プロパティを介してテーブルの行グループを操作する](how-to-manipulate-table-row-groups-through-the-rowgroups-property.md) +# [グローバライズとローカライズ](globalization-and-localization.md) +# [WPF のツリー](trees-in-wpf.md) +# [弱いイベント パターン](weak-event-patterns.md) +# [WPF における XAML とカスタム クラス](xaml-and-custom-classes-for-wpf.md) +# [カスタム依存関係プロパティ](custom-dependency-properties.md) +# [タイポグラフィ](typography.md) +# [データ形式がデータ オブジェクトに存在するかどうかを判別する](how-to-determine-if-a-data-format-is-present-in-a-data-object.md) +# [プログラムによってテーブルをビルドする](how-to-build-a-table-programmatically.md) +# [印刷ダイアログ ボックスを呼び出す](how-to-invoke-a-print-dialog.md) +# [2D グラフィックスとイメージング](optimizing-performance-2d-graphics-and-imaging.md) +# [方法のトピック](properties-how-to-topics.md) +# [WPF アプリケーションのリアルタイムなスタイラス入力を無効にする](disable-the-realtimestylus-for-wpf-applications.md) +# [テキストのトリミングを有効にする](how-to-enable-text-trimming.md) +# [プリンターを複製する](how-to-clone-a-printer.md) +# [アプリケーションでのフォントのパッケージング](packaging-fonts-with-applications.md) +# [コマンドをサポートしないコントロールにコマンドをフックする](how-to-hook-up-a-command-to-a-control-with-no-command-support.md) +# [チュートリアル: WPF アプリケーション内のアプリケーション データのキャッシュ](walkthrough-caching-application-data-in-a-wpf-application.md) +# [カスタム コントロールでインクを消去する](how-to-erase-ink-on-a-custom-control.md) +# [コマンドを有効にする](how-to-enable-a-command.md) +# [プロパティ値の継承](property-value-inheritance.md) +# [プロパティ](properties-wpf.md) +# [ComponentResourceKey マークアップ拡張機能](componentresourcekey-markup-extension.md) +# [チュートリアル: 初めてのタッチ アプリケーションの作成](walkthrough-creating-your-first-touch-application.md) +# [移行と相互運用性](migration-and-interoperability.md) +# [プリンターのステータスをリモート操作で調査する](how-to-remotely-survey-the-status-of-printers.md) +# [グリフ](glyphs.md) +# [アプリケーション ジェスチャを認識する](how-to-recognize-application-gestures.md) +# [FrameworkElement のサイズをアニメーション化する](how-to-animate-the-size-of-a-frameworkelement.md) +# [分析のヒントに従ってインクを分析する](how-to-analyze-ink-with-analysis-hints.md) +# [イベント](events-wpf.md) +# [フロー コンテンツ](flow-content.md) +# [マージされたリソース ディクショナリ](merged-resource-dictionaries.md) +# [依存関係プロパティの概要](dependency-properties-overview.md) +# [依存関係プロパティのセキュリティ](dependency-property-security.md) +# [デジタル インク](digital-ink.md) +# [TextElement コンテンツ モデルの概要](textelement-content-model-overview.md) +# [読み取り専用の Freezable の書き込み可能なコピーを取得する](how-to-obtain-a-writable-copy-of-a-read-only-freezable.md) +# [パフォーマンスに関するその他の推奨事項](optimizing-performance-other-recommendations.md) +# [依存関係プロパティのメタデータ](dependency-property-metadata.md) +# [要素を名前で検索する](how-to-find-an-element-by-its-name.md) +# [文字の装飾を作成する](how-to-create-a-text-decoration.md) +# [チュートリアル: ユーザー コントロールでのドラッグ アンド ドロップの有効化](walkthrough-enabling-drag-and-drop-on-a-user-control.md) +# [印刷キューのサブセットを列挙する](how-to-enumerate-a-subset-of-print-queues.md) +# [Blocks プロパティを介して FlowDocument を操作する](how-to-manipulate-a-flowdocument-through-the-blocks-property.md) +# [アプリケーション パフォーマンスの計画](planning-for-application-performance.md) +# [インク スレッド モデル](the-ink-threading-model.md) +# [FlowDocument の列区切り属性を使用する](how-to-use-flowdocument-column-separating-attributes.md) +# [パフォーマンス](performance.md) +# [方法のトピック](globalization-and-localization-how-to-topics.md) +# [インク入力コントロールの作成](creating-an-ink-input-control.md) +# [方法のトピック](digital-ink-how-to-topics.md) +# [リソースとコード](resources-and-code.md) +# [ハードウェアの活用](optimizing-performance-taking-advantage-of-hardware.md) +# [チュートリアル : ElementHost コントロールを使用したプロパティの割り当て](walkthrough-mapping-properties-using-the-elementhost-control.md) +# [コマンド実行の概要](commanding-overview.md) +# [リソースを定義および参照する](how-to-define-and-reference-a-resource.md) +# [技術領域の概要](technology-regions-overview.md) +# [カスタム ルーティング イベントを作成する](how-to-create-a-custom-routed-event.md) +# [プレビュー イベント](preview-events.md) +# [方法のトピック](fonts-how-to-topics.md) +# [書式設定されたテキストの描画](drawing-formatted-text.md) +# [問題のある印刷ジョブを診断する](how-to-diagnose-problematic-print-job.md) +# [Blocks プロパティを介してフロー コンテンツ要素を操作する](how-to-manipulate-flow-content-elements-through-the-blocks-property.md) +# [Visual Basic と WPF のイベント処理](visual-basic-and-wpf-event-handling.md) +# [mc:Ignorable 属性](mc-ignorable-attribute.md) +# [WPF アプリケーションのパフォーマンスの最適化](optimizing-wpf-application-performance.md) +# [高度なインク処理](advanced-ink-handling.md) +# [自動レイアウト用のグリッドを使用する](how-to-use-a-grid-for-automatic-layout.md) +# [RoutedCommand を作成する](how-to-create-a-routedcommand.md) +# [ThemeDictionary のマークアップ拡張機能](themedictionary-markup-extension.md) +# [注釈スキーマ](annotations-schema.md) +# [XAML の概要 (WPF)](xaml-overview-wpf.md) +# [チュートリアル: WPF での Win32 コントロールのホスト](walkthrough-hosting-a-win32-control-in-wpf.md) +# [Enter キーが押されたことを検出する](how-to-detect-when-the-enter-key-pressed.md) +# [特定のデータ形式でデータを取得する](how-to-retrieve-data-in-a-particular-data-format.md) +# [方法のトピック](input-and-commands-how-to-topics.md) +# [XAML で特殊文字を使用する](how-to-use-special-characters-in-xaml.md) +# [UIElement を透明または半透明にする](how-to-make-a-uielement-transparent-or-semi-transparent.md) +# [インクの格納](storing-ink.md) +# [チュートリアル: WPF での Windows フォーム コントロールの配置](walkthrough-arranging-windows-forms-controls-in-wpf.md) +# [方法のトピック](resources-how-to-topics.md) +# [WPF と Windows フォームの相互運用性](wpf-and-windows-forms-interoperation.md) +# [WPF における分離コードと XAML](code-behind-and-xaml-in-wpf.md) +# [チュートリアル: WPF での Windows フォーム コントロールのホスト](walkthrough-hosting-a-windows-forms-control-in-wpf.md) +# [配置、余白、パディングの概要](alignment-margins-and-padding-overview.md) +# [入力](input-wpf.md) +# [コレクション型依存関係プロパティ](collection-type-dependency-properties.md) +# [Windows フォームと WPF プロパティの割り当て](windows-forms-and-wpf-property-mapping.md) +# [フレームワーク プロパティ メタデータ](framework-property-metadata.md) +# [プログラムでテキストに要素を挿入する](how-to-insert-an-element-into-text-programmatically.md) +# [StaticResource のマークアップ拡張機能](staticresource-markup-extension.md) +# [チュートリアル: WPF での Windows フォーム複合コントロールのホスト](walkthrough-hosting-a-windows-forms-composite-control-in-wpf.md) +# [自動レイアウトを使用してボタンを作成する](how-to-use-automatic-layout-to-create-a-button.md) +# [方法 : ハイブリッド アプリケーションで視覚スタイルを有効にする](how-to-enable-visual-styles-in-a-hybrid-application.md) +# [データ オブジェクトへ複数のデータ形式を格納する](how-to-store-multiple-data-formats-in-a-data-object.md) +# [インクをドラッグ アンド ドロップする](how-to-drag-and-drop-ink.md) +# [Freezable が固定されているかどうかを判別する](how-to-determine-whether-a-freezable-is-frozen.md) +# [XAML リソース](xaml-resources.md) +# [要素のツリーおよびシリアル化](element-tree-and-serialization.md) +# [コマンドをサポートするコントロールにコマンドをフックする](how-to-hook-up-a-command-to-a-control-with-command-support.md) +# [InkCanvas にデータをバインドする](how-to-data-bind-to-an-inkcanvas.md) +# [Windows フォーム コントロールおよび同等の WPF コントロール](windows-forms-controls-and-equivalent-wpf-controls.md) +# [Freezable オブジェクトの概要](freezable-objects-overview.md) +# [イベント ハンドラーでソース要素を検索する](how-to-find-the-source-element-in-an-event-handler.md) +# [WPF アーキテクチャ](wpf-architecture.md) +# [依存関係プロパティを実装する](how-to-implement-a-dependency-property.md) +# [XAML を使用してテーブルを定義する](how-to-define-a-table-with-xaml.md) +# [バインドのマークアップ拡張機能](binding-markup-extension.md) +# [方法のトピック](typography-how-to-topics.md) +# [現在、印刷ジョブが印刷可能であるかどうかを検出する](how-to-discover-whether-a-print-job-can-be-printed-at-this-time-of-day.md) +# [フォーカス イベントを使用して要素の色を変更する](how-to-change-the-color-of-an-element-using-focus-events.md) +# [ClearType の概要](cleartype-overview.md) +# [段落間の間隔を調整する](how-to-adjust-spacing-between-paragraphs.md) +# [ドキュメント](documents.md) +# [オブジェクト ツリーに存在しないオブジェクト要素の初期化](initialization-for-object-elements-not-in-an-object-tree.md) +# [スタイラスからの入力のインターセプト](intercepting-input-from-the-stylus.md) +# [ContextMenuOpening イベントを処理する](how-to-handle-the-contextmenuopening-event.md) +# [コントロールのフォーカスのスタイルと FocusVisualStyle](styling-for-focus-in-controls-and-focusvisualstyle.md) +# [ドラッグ アンド ドロップ](drag-and-drop.md) +# [システム パラメーター キーを使用する](how-to-use-system-parameters-keys.md) +# [インクの概要](getting-started-with-ink.md) +# [添付プロパティの概要](attached-properties-overview.md) +# [チュートリアル : WindowsFormsHost 要素を使用したプロパティの割り当て](walkthrough-mapping-properties-using-the-windowsformshost-element.md) +# [GlyphRun オブジェクトと Glyphs 要素の概要](introduction-to-the-glyphrun-object-and-glyphs-element.md) +# [ICommandSource を実装する](how-to-implement-icommandsource.md) +# [オブジェクトの動作](optimizing-performance-object-behavior.md) +# [DynamicResource のマークアップ拡張機能](dynamicresource-markup-extension.md) +# [注釈の概要](annotations-overview.md) +# [フロー コンテンツ要素を使用する](how-to-use-flow-content-elements.md) +# [要素およびコントロールのマージンを設定する](how-to-set-margins-of-elements-and-controls.md) +# [自動レイアウトの使用の概要](use-automatic-layout-overview.md) +# [XAML 読み込みと依存関係プロパティ](xaml-loading-and-dependency-properties.md) +# [WPF のドキュメント](documents-in-wpf.md) +# [フォント](fonts-wpf.md) +# [Freezable を読み取り専用にする](how-to-make-a-freezable-read-only.md) +# [RichTextBox コントロール上にドロップしたファイルを開く](how-to-open-a-file-that-is-dropped-on-a-richtextbox-control.md) +# [影付きテキストを作成する](how-to-create-text-with-a-shadow.md) +# [インライン スタイルおよびテンプレート](inline-styles-and-templates.md) +# [コントロールの背景にテキストを描画する](how-to-draw-text-to-a-control-background.md) +# [XAML 構文の詳細](xaml-syntax-in-detail.md) +# [マークアップの互換性 (mc:) 言語機能](markup-compatibility-mc-language-features.md) +# [Text](optimizing-performance-text.md) +# [インクの収集](collecting-ink.md) +# [カスタム レンダリング インク](custom-rendering-ink.md) +# [印刷および印刷システムの管理](printing-and-print-system-management.md) +# [アプリケーション リソース](optimizing-performance-application-resources.md) +# [マークアップ拡張機能と WPF XAML](markup-extensions-and-wpf-xaml.md) +# [チュートリアル : WPF での Direct3D9 コンテンツのホスト](walkthrough-hosting-direct3d9-content-in-wpf.md) +# [方法のトピック](printing-how-to-topics.md) +# [カスタム コントロールからインクを選択する](how-to-select-ink-from-a-custom-control.md) +# [ルーティング イベントの処理済みとしてのマーキング、およびクラス処理](marking-routed-events-as-handled-and-class-handling.md) +# [WPF XAML 拡張機能](wpf-xaml-extensions.md) +# [テーブルの概要](table-overview.md) +# [概要](digital-ink-overviews.md) +# [WPF の XAML](xaml-in-wpf.md) +# [XAML 名前空間および WPF XAML の名前空間の割り当て](xaml-namespaces-and-namespace-mapping-for-wpf-xaml.md) +# [データとデータ オブジェクト](data-and-data-objects.md) +# [DateTime XAML 構文](datetime-xaml-syntax.md) +# [詳細設定](index.md) +# [方法 : グリフを使用してテキストを描画する](draw-text-using-glyphs.md) +# [インク オブジェクト モデル : Windows フォームおよび COM と WPF の比較](the-ink-object-model-windows-forms-and-com-versus-wpf.md) +# [ClearType レジストリの設定](cleartype-registry-settings.md) +# [WPF のグローバリゼーションおよびローカリゼーションの概要](wpf-globalization-and-localization-overview.md) +# [OpenType フォント パックのサンプル](sample-opentype-font-pack.md) +# [方法のトピック](drag-and-drop-how-to-topics.md) +# [チュートリアル: Win32 での WPF クロックのホスト](walkthrough-hosting-a-wpf-clock-in-win32.md) +# [基本要素](base-elements.md) +# [WPF XAML 名前スコープ](wpf-xaml-namescopes.md) +# [ThicknessConverter オブジェクトを使用する](how-to-use-a-thicknessconverter-object.md) +# [Inlines プロパティを介してフロー コンテンツ要素を操作する](how-to-manipulate-flow-content-elements-through-the-inlines-property.md) +# [オブジェクトをマウス ポインターに追従させる](how-to-make-an-object-follow-the-mouse-pointer.md) +# [アプリケーション リソースを使用する](how-to-use-application-resources.md) +# [アプリケーションをローカライズする](how-to-localize-an-application.md) +# [PrintTickets を検証およびマージする](how-to-validate-and-merge-printtickets.md) +# [中抜きの文字列を作成する](how-to-create-outlined-text.md) +# [依存関係プロパティのコールバックと検証](dependency-property-callbacks-and-validation.md) +# [チュートリアル: Windows フォームでの 3D WPF 複合コントロールのホスト](walkthrough-hosting-a-3-d-wpf-composite-control-in-windows-forms.md) +# [ドキュメントのシリアル化および保存](document-serialization-and-storage.md) +# [コントロール](optimizing-performance-controls.md) +# [WPF のグローバリゼーション](globalization-for-wpf.md) +# [リフレクションを使用せずに印刷システム オブジェクトのプロパティを取得する](how-to-get-print-system-object-properties-without-reflection.md) +# [OpenType フォントの機能](opentype-font-features.md) +# [Columns プロパティによってテーブルの列を操作する](how-to-manipulate-table-columns-through-the-columns-property.md) +# [SystemFonts を使用する](how-to-use-systemfonts.md) +# [レイアウト](layout.md) +# [WPF での Win32 コンテンツのホスト](hosting-win32-content-in-wpf.md) +# [WindowsFormsHost 要素のレイアウトに関する考慮事項](layout-considerations-for-the-windowsformshost-element.md) +# [イベントを使用してロールオーバー効果を作成する](how-to-create-a-rollover-effect-using-events.md) +# [FontSizeConverter クラスを使用する](how-to-use-the-fontsizeconverter-class.md) +# [Win32 と WPF 間でのメッセージ ループの共有](sharing-message-loops-between-win32-and-wpf.md) +# [ハイパーリンクに下線を引くかどうかを指定する](how-to-specify-whether-a-hyperlink-is-underlined.md) +# [PresentationOptions:Freeze 属性](presentationoptions-freeze-attribute.md) +# [チュートリアル: Win32 での WPF コンテンツのホスト](walkthrough-hosting-wpf-content-in-win32.md) +# [システム フォントを列挙する](how-to-enumerate-system-fonts.md) +# [FocusVisualStyle をコントロールに適用する](how-to-apply-a-focusvisualstyle-to-a-control.md) +# [TextWrapping プロパティをプログラムにより変更する](how-to-change-the-textwrapping-property-programmatically.md) +# [方法のトピック](element-tree-and-serialization-how-to-topics.md) +# [基本要素の概要](base-elements-overview.md) +# [添付イベントの概要](attached-events-overview.md) +# [チュートリアル : WPF でホストするための Direct3D9 コンテンツの作成](walkthrough-creating-direct3d9-content-for-hosting-in-wpf.md) +# [RelativeSource のマークアップ拡張機能](relativesource-markupextension.md) +# [コードを使用してイベント ハンドラーを追加する](how-to-add-an-event-handler-using-code.md) +# [mc:ProcessContent 属性](mc-processcontent-attribute.md) +# [コメント](annotations.md) +# [依存関係プロパティ値の優先順位](dependency-property-value-precedence.md) +# [TemplateBinding のマークアップ拡張機能](templatebinding-markup-extension.md) +# [WPF と Direct3D9 の相互運用性](wpf-and-direct3d9-interoperation.md) +# [チュートリアル: WPF での、XAML を使用した Windows フォーム コントロールのホスト](walkthrough-hosting-a-windows-forms-control-in-wpf-by-using-xaml.md) +# [ドラッグ アンド ドロップの概要](drag-and-drop-overview.md) +# [ルーティング イベントの概要](routed-events-overview.md) +# [ResourceDictionary を使用してローカライズ可能な文字列リソースを管理する](how-to-use-a-resourcedictionary-to-manage-localizable-string-resources.md) +# [テキストの文字体裁を変更する](how-to-alter-the-typography-of-text.md) +# [チュートリアル: WPF での ActiveX コントロールのホスト](walkthrough-hosting-an-activex-control-in-wpf.md) +# [データ オブジェクト内のデータ形式の一覧を表示する](how-to-list-the-data-formats-in-a-data-object.md) +# [チュートリアル : ハイブリッド アプリケーションでのデータへのバインディング](walkthrough-binding-to-data-in-hybrid-applications.md) +# [ColorConvertedBitmap のマークアップ拡張機能](colorconvertedbitmap-markup-extension.md) +# [ルーティング イベントのクラス処理を追加する](how-to-add-class-handling-for-a-routed-event.md) +# [ルーティング イベントを処理する](how-to-handle-a-routed-event.md) +# [データ バインド](optimizing-performance-data-binding.md) +# [リソース](resources-wpf.md) +# [WPF と Win32 の相互運用性](wpf-and-win32-interoperation.md) +# [Windows フォームと WPF の相互運用性入力アーキテクチャ](windows-forms-and-wpf-interoperability-input-architecture.md) +# [PropertyPath の XAML 構文](propertypath-xaml-syntax.md) +# [印刷の概要](printing-overview.md) +# [テキストに変換を適用する](how-to-apply-transforms-to-text.md) +# [読み込まれたイベントを処理する](how-to-handle-a-loaded-event.md) +# [XPS ファイルをプログラムにより印刷する](how-to-programmatically-print-xps-files.md) +# [論理ツリーをオーバーライドする](how-to-override-the-logical-tree.md) +# [チュートリアル: Windows フォームでの WPF 複合コントロールのホスト](walkthrough-hosting-a-wpf-composite-control-in-windows-forms.md) +# [プロパティ変更イベント](property-change-events.md) +# [方法のトピック](base-elements-how-to-topics.md) +# [グラフィックスの描画層](graphics-rendering-tiers.md) +# [カーソルの種類を変更する](how-to-change-the-cursor-type.md) +# [ローカライズ可能アプリケーションでリソースを使用する](how-to-use-resources-in-localizable-applications.md) +# [WPF のタイポグラフィ](typography-in-wpf.md) +# [システム フォント キーを使用する](how-to-use-system-fonts-keys.md) +# [プログラムによってコンテンツの FlowDirection を変更する](how-to-change-the-flowdirection-of-content-programmatically.md) +# [SystemParameters を使用する](how-to-use-systemparameters.md) +# [スレッド モデル](threading-model.md) +# [UIElement を左右または上下に反転させる](how-to-flip-a-uielement-horizontally-or-vertically.md) +# [フォーカスの概要](focus-overview.md) +# [データ オブジェクトを作成する](how-to-create-a-data-object.md) +# [レイアウトとデザイン](optimizing-performance-layout-and-design.md) +# [方法のトピック](events-how-to-topics.md) diff --git a/docs/framework/wpf/advanced/advanced-ink-handling.md b/docs/framework/wpf/advanced/advanced-ink-handling.md new file mode 100644 index 00000000000..276bfa938e0 --- /dev/null +++ b/docs/framework/wpf/advanced/advanced-ink-handling.md @@ -0,0 +1,36 @@ +--- +title: "高度なインク処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "クラス, System.Windows.Input.StylusPlugIns" + - "インク, 高度な処理" + - "InkCanvas コントロール" + - "StylusPlugIns クラス" + - "System.Windows.Input.StylusPlugIns クラス" +ms.assetid: abc8481a-f983-416f-b051-9168ac8b2ba3 +caps.latest.revision: 52 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 52 +--- +# 高度なインク処理 +[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] には が付属しており、この要素をアプリケーションに導入すると、インクの収集および表示をすぐに開始できます。 ただし、 コントロールの提供する制御レベルが十分でない場合は、 を使用するインク コレクション クラスおよびインク レンダリング クラスをカスタマイズすることで、より高度な制御を保持できます。 + + クラスは、 入力および動的なレンダリング インクに対して低レベルの制御を実装するための機構を提供します。 クラスは、最適なパフォーマンスを実現するために、カスタム動作を実装し、その動作をスタイラス デバイスから取得されるデータのストリームに適用するための機構を提供します。 は、特殊な で、インク データの動的なレンダリングをリアルタイムにカスタマイズできます。つまり、 は、 データが生成されると直ちにデジタル インクを描画し、このインクはスタイラス デバイスから "流れる" ように表示されます。 + +## このセクションの内容 + [カスタム レンダリング インク](../../../../docs/framework/wpf/advanced/custom-rendering-ink.md) + [スタイラスからの入力のインターセプト](../../../../docs/framework/wpf/advanced/intercepting-input-from-the-stylus.md) + [インク入力コントロールの作成](../../../../docs/framework/wpf/advanced/creating-an-ink-input-control.md) + [インク スレッド モデル](../../../../docs/framework/wpf/advanced/the-ink-threading-model.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/advanced-text-formatting.md b/docs/framework/wpf/advanced/advanced-text-formatting.md new file mode 100644 index 00000000000..d622fe0e4a5 --- /dev/null +++ b/docs/framework/wpf/advanced/advanced-text-formatting.md @@ -0,0 +1,103 @@ +--- +title: "テキストの高度な書式設定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "書式設定 [WPF]" + - "テキスト [WPF]" + - "タイポグラフィ, テキストの書式設定" +ms.assetid: f0a7986e-f5b2-485c-a27d-f8e922022212 +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# テキストの高度な書式設定 +[!INCLUDE[TLA#tla_wpf](../../../../includes/tlasharptla-wpf-md.md)] には、アプリケーションにテキストを含めるための信頼性の高い一連の [!INCLUDE[TLA#tla_api#plural](../../../../includes/tlasharptla-apisharpplural-md.md)] が用意されています。 などのレイアウトおよび[!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] は、テキスト表示において最も共通して一般的に使用される要素を提供します。 などの描画 [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] では、書式設定されたテキストを描画に含めることができます。 最も高度なレベルでは、[!INCLUDE[TLA2#tla_wpf](../../../../includes/tla2sharptla-wpf-md.md)] により、テキスト ストアの管理、テキスト ランの書式設定の管理、埋め込みオブジェクトの管理などの、テキスト表示のあらゆる面の制御を行う拡張性のあるテキスト書式設定エンジンが提供されます。 + + ここでは、[!INCLUDE[TLA2#tla_wpf](../../../../includes/tla2sharptla-wpf-md.md)] におけるテキスト書式設定の概要を説明します。 特に、クライアントの実装と [!INCLUDE[TLA2#tla_wpf](../../../../includes/tla2sharptla-wpf-md.md)] のテキスト書式設定エンジンの使用を重点的に説明します。 + +> [!NOTE] +> このドキュメント内のすべてのコード例は、[テキストの高度な書式設定のサンプル](http://go.microsoft.com/fwlink/?LinkID=159965)にあります。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 必要条件 + ここでは、テキスト表示に使用する高いレベルの [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] に精通していることを前提として説明を進めます。 ほとんどのユーザーの場合、ここで説明する [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] の高度なテキスト書式設定は必要ありません。 別のテキスト [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] の概要については、「[WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md)」を参照してください。 + + +## テキストの高度な書式設定 + [!INCLUDE[TLA2#tla_wpf](../../../../includes/tla2sharptla-wpf-md.md)] のテキスト レイアウトおよび [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] コントロールは、アプリケーションに書式設定されたテキストを簡単に含めることができる書式設定プロパティを提供します。 これらのコントロールは、テキストの書体、サイズ、色などのテキスト表示を処理するためのさまざまなプロパティを公開します。 通常の場合は、これらのコントロールでアプリケーション内のテキスト表示の大半を処理できます。 ただし、一部の高度な処理の場合、テキスト表示に加えてテキスト保存のコントロールも必要となります。 [!INCLUDE[TLA2#tla_wpf](../../../../includes/tla2sharptla-wpf-md.md)] では拡張可能なテキスト書式設定エンジンを使用できます。 + + [!INCLUDE[TLA2#tla_wpf](../../../../includes/tla2sharptla-wpf-md.md)] の高度なテキスト書式設定機能は、テキスト書式設定エンジン、テキスト ストア、テキスト ラン、および書式設定プロパティで構成されています。 テキスト書式設定エンジンである により、表示用のテキスト行が作成されます。 これは、行書式設定プロセスを開始し、テキスト フォーマッタの を呼び出すことにより実行されます。 テキスト フォーマッタは、テキスト ストアの メソッドを呼び出すことにより、そのストアからテキスト ランを取得します。 次に、テキスト フォーマッタにより オブジェクトから オブジェクトが作成され、検査または表示用にアプリケーションに渡されます。 + + +## テキスト フォーマッタの使用 + は [!INCLUDE[TLA2#tla_wpf](../../../../includes/tla2sharptla-wpf-md.md)] のテキスト書式設定エンジンであり、テキスト行の書式指定および改行のサービスを提供します。 テキスト フォーマッタは異なるテキスト文字形式および段落スタイルを処理でき、国際的なテキスト レイアウトがサポートされています。 + + 従来のテキスト [!INCLUDE[TLA#tla_api](../../../../includes/tlasharptla-api-md.md)] とは異なり、 は一連のコールバック メソッドを使用して、テキスト レイアウト クライアントと対話します。 このテキスト フォーマッタを使用するには、クライアントが クラスの実装にこれらのメソッドを提供している必要があります。 クライアント アプリケーションと の間のテキスト レイアウトの対話を次の図に示します。 + + ![テキスト レイアウト クライアントと TextFormatter のダイアグラム](../../../../docs/framework/wpf/advanced/media/textformatter01.png "TextFormatter01") +アプリケーションと TextFormatter の対話 + + テキスト フォーマッタは、 の実装であるテキスト ストアから書式設定されたテキスト行を取得するために使用されます。 これは、最初に メソッドを使用してテキスト フォーマッタのインスタンスを作成することにより実行されます。 このメソッドによりテキスト フォーマッタのインスタンスが作成され、行の最大高と最大幅が設定されます。 テキスト フォーマッタのインスタンスが作成されると直ちに、 メソッドを呼び出すことにより、行作成プロセスが開始されます。 によりテキストのソースが呼び戻され、行を形成する一続きのテキストの、テキストと書式設定パラメーターが取得されます。 + + 次の例では、テキスト ストアを書式設定するプロセスを示します。 オブジェクトを使用してテキスト ストアからテキスト行が取得され、 に描画するテキスト行が書式設定されます。 + + [!code-csharp[TextFormatterExample#100](../../../../samples/snippets/csharp/VS_Snippets_Wpf/TextFormatterExample/CSharp/Window1.xaml.cs#100)] + [!code-vb[TextFormatterExample#100](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/TextFormatterExample/VisualBasic/Window1.xaml.vb#100)] + + +## クライアント テキスト ストアの実装 + テキスト書式設定エンジンを拡張する場合は、テキスト ストアをすべての面で実装および管理する必要があります。 これは単純な作業ではありません。 テキスト ストアの役割は、テキスト ランのプロパティ、段落プロパティ、埋め込みオブジェクト、およびその他の類似したコンテンツを追跡することです。 また、テキスト ストアは、 オブジェクトを作成するときにテキスト フォーマッタが使用する、個々の オブジェクトをテキスト フォーマッタに提供します。 + + テキスト ストアの仮想化を処理する場合は、テキスト ストアが から派生している必要があります。 では、テキスト フォーマッタがテキスト ストアからテキスト ランを取得するために使用するメソッドが定義されています。 は、行の書式設定に使用されるテキスト ランを取得するためにテキスト フォーマッタが使用するメソッドです。 次のいずれかの条件が発生するまで、 はテキスト フォーマッタによって繰り返し呼び出されます。 + +- またはサブクラスが返された場合。 + +- テキスト ランの累積幅が、テキスト フォーマッタを作成する呼び出し、またはテキスト フォーマッタの メソッドのいずれかに指定されている行の最大幅を超えた場合。 + +- "CF"、"LF"、または "CRLF" などの [!INCLUDE[TLA#tla_unicode](../../../../includes/tlasharptla-unicode-md.md)] 改行シーケンスが返された場合。 + + +## テキスト ランの提供 + テキスト フォーマッタとテキスト ストアの間の対話は、テキスト書式設定プロセスにおける中核となります。 を実装することにより、テキスト フォーマッタに オブジェクトおよびテキスト ランの書式設定に使用されるプロパティが提供されます。 この対話は、テキスト フォーマッタによって呼び出される メソッドによって処理されます。 + + 定義済みの オブジェクトの一部を次の表に示します。 + +|TextRun 型|使用方法| +|---------------|----------| +||テキスト フォーマッタに文字グリフの表示を戻すために使用される、特殊なテキスト ランです。| +||ボタン、テキスト内の画像などの、測定、ヒット テスト、描画がすべて実行されるコンテンツを提供するために使用される、特殊なテキスト ランです。| +||行の終わりを示すために使用される、特殊なテキスト ランです。| +||段落の終わりを示すために使用される、特殊なテキスト ランです。| +||前の 実行の影響を受けるスコープを終了する場合のように、セグメントの終わりを示すために使用される特殊なテキスト ランです。| +||隠し文字の範囲を示すために使用される特殊なテキスト ランです。| +||スコープ内のテキスト ランのプロパティを変更するために使用される、特殊なテキスト ランです。 この範囲は、次に一致する のテキスト ラン、または次の まで拡張されます。| + + 定義済みの オブジェクトは、すべてサブクラス化できます。 これにより、カスタム データを含むテキスト ランをテキスト ソースからテキスト フォーマッタに提供できます。 + + メソッドの例を次に示します。 このテキスト ストアは、次のテキスト フォーマッタに オブジェクトを返して処理を行います。 + + [!code-csharp[TextFormatterExample#101](../../../../samples/snippets/csharp/VS_Snippets_Wpf/TextFormatterExample/CSharp/CustomTextSource.cs#101)] + [!code-vb[TextFormatterExample#101](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/TextFormatterExample/VisualBasic/CustomTextSource.vb#101)] + +> [!NOTE] +> この例では、テキスト ストアによりすべてのテキストに対して同じテキスト プロパティが提供されます。 高度なテキスト ストアの場合、個々の文字に異なるプロパティを持たせるために、それぞれのテキスト ストア の範囲管理を実装する必要があります。 + + +## 書式設定プロパティの指定 + オブジェクトは、テキスト ストアによって提供されるプロパティを使用して書式設定されます。 このようなプロパティには、 の 2 つの型があります。 は、 などの、段落の包括的なプロパティを処理します。 は、前景ブラシ、、およびフォント サイズなどの、段落内のそれぞれのテキスト ランで異なるプロパティです。 カスタム段落プロパティ型およびカスタム テキスト ラン プロパティ型を実装するには、アプリケーションでそれぞれ および から派生するクラスを作成する必要があります。 + +## 参照 + [WPF のタイポグラフィ](../../../../docs/framework/wpf/advanced/typography-in-wpf.md) + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/alignment-margins-and-padding-overview.md b/docs/framework/wpf/advanced/alignment-margins-and-padding-overview.md new file mode 100644 index 00000000000..0fc30e3915c --- /dev/null +++ b/docs/framework/wpf/advanced/alignment-margins-and-padding-overview.md @@ -0,0 +1,157 @@ +--- +title: "配置、余白、パディングの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "エイリアスの使用" + - "クラス, FrameworkElement" + - "FrameworkElement クラス" + - "マージン" + - "埋め込み" +ms.assetid: 9c6a2009-9b86-4e40-8605-0a2664dc3973 +caps.latest.revision: 22 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 19 +--- +# 配置、余白、パディングの概要 + クラスは、子要素を正確に配置するために使用する複数のプロパティを公開します。 ここでは、最も重要な 4 つのプロパティ、、および について説明します。 これらのプロパティは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] アプリケーション内での要素の位置を制御するための基本機能を提供するため、その効果について理解しておくことが重要です。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 要素の配置の概要 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] を使用して要素を配置する方法はいくつもあります。 ただし、適切な 要素を選択するだけでは、理想的なレイアウトを実現することはできません。 配置をきめ細かく制御するには、 の各プロパティについて理解する必要があります。 + + 複数の配置プロパティを利用するレイアウト シナリオを次の図に示します。 + + ![WPF 位置決めのプロパティのサンプル](../../../../docs/framework/wpf/advanced/media/layout-margins-padding-alignment-graphic1.png "layout\_margins\_padding\_alignment\_graphic1") + + 一見すると、この図の 要素は無作為に配置されているように見えます。 しかし、実際には、これらの要素の位置は、余白、配置、およびパディングの組み合わせを使用して正確に制御されています。 + + 前の図のレイアウトを作成する方法を次の例に示します。 要素は親の をカプセル化しており、 の値は 15 [デバイス非依存ピクセル](GTMT)に設定されています。 これは、子 を囲む狭い の帯の部分を説明しています。 の子要素は、このトピックで詳しく説明するさまざまな配置プロパティを示すために使用されます。 3 つの 要素を使用して、 プロパティと プロパティの効果を示します。 + + [!code-csharp[MPALayoutSampleIntro#1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/MPALayoutSampleIntro/CSharp/MPA_Layout_Sample_Intro.cs#1)] + [!code-vb[MPALayoutSampleIntro#1](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/MPALayoutSampleIntro/VisualBasic/MPALayoutIntro.vb#1)] + + 次の図では、上の例で使用されているさまざまな配置プロパティを拡大して示します。 以下では、各配置プロパティの使用方法を詳しく説明します。 + + ![画面コールアウトを含む位置決めプロパティ](../../../../docs/framework/wpf/advanced/media/layout-margins-padding-alignment-graphic2.png "layout\_margins\_padding\_alignment\_graphic2") + + +## 配置プロパティの理解 + プロパティと プロパティは、親要素の割り当てられたレイアウト領域内で子要素を配置する方法を記述します。 これらのプロパティを一緒に使用することで、子要素を正確に配置できます。 たとえば、 の子要素の水平方向の配置については、、または の 4 種類を指定できます。 垂直方向の配置についても同様の値を指定できます。 + +> [!NOTE] +> 要素に対して明示的に設定された プロパティと プロパティは、 プロパティの値より優先されます。 、および `Stretch` の の値を設定しようとしても、`Stretch` 要求は無視されます。 + + +### HorizontalAlignment プロパティ + プロパティは、子要素に適用する水平方向の配置の特性を宣言します。 次の表は、 プロパティに指定できる値を示します。 + +|メンバー|Description| +|----------|-----------------| +||子要素を、親要素に割り当てられているレイアウト空間の左端に配置します。| +||子要素を、親要素に割り当てられているレイアウト空間の中央に配置します。| +||子要素を、親要素に割り当てられているレイアウト空間の右端に配置します。| +| \(既定値\)|子要素を、親要素に割り当てられているレイアウト空間全体に引き伸ばして配置します。 明示的に指定した および の値が優先されます。| + + 次の例は、 プロパティを 要素に適用する方法を示しています。 さまざまなレンダリング動作をわかりやすく図示するために、各属性の値を表示します。 + + [!code-csharp[MPALayoutHorizontalAlignment#2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/MPALayoutHorizontalAlignment/CSharp/MPA_Layout_HorizontalAlignment.cs#2)] + [!code-vb[MPALayoutHorizontalAlignment#2](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/MPALayoutHorizontalAlignment/VisualBasic/MPA_Layout_HorizontalAlignment.vb#2)] + + 上記のコードの結果、レイアウトは次の図のようになります。 各 の値によって要素がどのように配置されるかを図示しています。 + + ![HorizontalAlignment のサンプル](../../../../docs/framework/wpf/advanced/media/layout-horizontal-alignment-graphic.png "layout\_horizontal\_alignment\_graphic") + + +### VerticalAlignment プロパティ + プロパティは、子要素に適用する垂直方向の配置の特性を記述します。 次の表は、 プロパティに指定できる値を示します。 + +|メンバー|Description| +|----------|-----------------| +||子要素を、親要素に割り当てられているレイアウト空間の上端に配置します。| +||子要素を、親要素に割り当てられているレイアウト空間の中央に配置します。| +||子要素を、親要素に割り当てられているレイアウト空間の下端に配置します。| +| \(既定値\)|子要素を、親要素に割り当てられているレイアウト空間全体に引き伸ばして配置します。 明示的に指定した および の値が優先されます。| + + 次の例は、 プロパティを 要素に適用する方法を示しています。 さまざまなレンダリング動作をわかりやすく図示するために、各属性の値を表示します。 このサンプルでは、ガイドラインを表示した 要素を親として使用し、各プロパティ値のレイアウト動作がよくわかるようにします。 + + [!code-csharp[MPALayoutVerticalAlignment#2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/MPALayoutVerticalAlignment/CSharp/MPA_Layout_VerticalAlignment.cs#2)] + [!code-vb[MPALayoutVerticalAlignment#2](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/MPALayoutVerticalAlignment/VisualBasic/MPA_Layout_VerticalAlignment.vb#2)] + [!code-xml[MPALayoutVerticalAlignment#2](../../../../samples/snippets/xaml/VS_Snippets_Wpf/MPALayoutVerticalAlignment/XAML/default.xaml#2)] + + 上記のコードの結果、レイアウトは次の図のようになります。 各 の値によって要素がどのように配置されるかを図示しています。 + + ![VerticalAlignment プロパティのサンプル](../../../../docs/framework/wpf/advanced/media/layout-vertical-alignment-graphic.png "layout\_vertical\_alignment\_graphic") + + +## 余白プロパティの理解 + プロパティは、要素とその子 \(またはピア\) との間の距離を表します。 `Margin="20"` のような構文を使用することで、 の値を均一にできます。 この構文では、20 [デバイス非依存ピクセル](GTMT)という均一の が、要素に適用されます。 また、 の値には、`Margin="0,10,5,25"` のような 4 つの値から成る形式を使用することもできます。各値は、左、上、右、下に \(この順序で\) 適用する余白を示します。 プロパティを適切に使用することで、要素のレンダリング位置、および近隣の要素や子のレンダリング位置を、非常に細かく制御できます。 + +> [!NOTE] +> ゼロ以外の余白は、要素の および の外側の領域に適用されます。 + + 要素のグループの周囲に均一の余白を適用する方法を次の例に示します。 要素は、各方向に 10 ピクセルの余白を設けて等間隔に配置されます。 + + [!code-cpp[MarginPaddingAlignmentSample#1](../../../../samples/snippets/cpp/VS_Snippets_Wpf/MarginPaddingAlignmentSample/CPP/Margin_Padding_Alignment_Sample.cpp#1)] + [!code-csharp[MarginPaddingAlignmentSample#1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/MarginPaddingAlignmentSample/CSharp/Margin_Padding_Alignment_Sample.cs#1)] + [!code-vb[MarginPaddingAlignmentSample#1](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/MarginPaddingAlignmentSample/VisualBasic/MarginPaddingAlignment.vb#1)] + [!code-xml[MarginPaddingAlignmentSample#1](../../../../samples/snippets/xaml/VS_Snippets_Wpf/MarginPaddingAlignmentSample/XAML/default.xaml#1)] + + 多くのインスタンスでは、均一の余白は適切ではありません。 このような場合は、不均一の間隔を適用できます。 次の例では、子要素に不均一の余白を適用する方法を示します。 余白は、左、上、右、下の順序で記述されています。 + + [!code-cpp[MarginPaddingAlignmentSample#2](../../../../samples/snippets/cpp/VS_Snippets_Wpf/MarginPaddingAlignmentSample/CPP/Margin_Padding_Alignment_Sample.cpp#2)] + [!code-csharp[MarginPaddingAlignmentSample#2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/MarginPaddingAlignmentSample/CSharp/Margin_Padding_Alignment_Sample.cs#2)] + [!code-vb[MarginPaddingAlignmentSample#2](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/MarginPaddingAlignmentSample/VisualBasic/MarginPaddingAlignment.vb#2)] + [!code-xml[MarginPaddingAlignmentSample#2](../../../../samples/snippets/xaml/VS_Snippets_Wpf/MarginPaddingAlignmentSample/XAML/default.xaml#2)] + + +## パディング プロパティの理解 + パディングは、多くの点で に似ています。 パディング プロパティは少数のクラスでのみ、主に利便性向上のため、公開されています。パディング プロパティを公開しているクラスの例としては、 などがあります。 プロパティは、指定した の値だけ子要素の実質的なサイズを拡大します。 + + を親 要素に適用する方法を次の例に示します。 + + [!code-cpp[MarginPaddingAlignmentSample#3](../../../../samples/snippets/cpp/VS_Snippets_Wpf/MarginPaddingAlignmentSample/CPP/Margin_Padding_Alignment_Sample.cpp#3)] + [!code-csharp[MarginPaddingAlignmentSample#3](../../../../samples/snippets/csharp/VS_Snippets_Wpf/MarginPaddingAlignmentSample/CSharp/Margin_Padding_Alignment_Sample.cs#3)] + [!code-vb[MarginPaddingAlignmentSample#3](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/MarginPaddingAlignmentSample/VisualBasic/MarginPaddingAlignment.vb#3)] + [!code-xml[MarginPaddingAlignmentSample#3](../../../../samples/snippets/xaml/VS_Snippets_Wpf/MarginPaddingAlignmentSample/XAML/default.xaml#3)] + + +## アプリケーションでの配置、余白、パディングの使用 + 、および は、複雑な[!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] を作成するために必要なコントロールの配置機能を提供します。 各プロパティの効果を使用して子要素の配置を変更し、動的なアプリケーションやユーザー環境を柔軟に作成できます。 + + このトピックで詳しく説明した各概念の例を次に示します。 このトピックの最初のサンプルで示したインフラストラクチャを基にして、この例では、最初のサンプルの の子として 要素を追加します。 を親の 要素に適用します。 を使用して、3 つの子 要素の間の領域を分割します。 再び 要素を使用して、 のさまざまな効果を示します。 各 要素を追加し、各列の 要素に適用するさまざまなプロパティを定義しやすくします。 + + [!code-cpp[MarginPaddingAlignmentSample#4](../../../../samples/snippets/cpp/VS_Snippets_Wpf/MarginPaddingAlignmentSample/CPP/Margin_Padding_Alignment_Sample.cpp#4)] + [!code-csharp[MarginPaddingAlignmentSample#4](../../../../samples/snippets/csharp/VS_Snippets_Wpf/MarginPaddingAlignmentSample/CSharp/Margin_Padding_Alignment_Sample.cs#4)] + [!code-vb[MarginPaddingAlignmentSample#4](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/MarginPaddingAlignmentSample/VisualBasic/MarginPaddingAlignment.vb#4)] + [!code-xml[MarginPaddingAlignmentSample#4](../../../../samples/snippets/xaml/VS_Snippets_Wpf/MarginPaddingAlignmentSample/XAML/default.xaml#4)] + + コンパイルすると、前のアプリケーションからは次の図に示すような [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] が生成されます。 さまざまなプロパティ値の効果が要素間の間隔に示されており、各列の要素に対する重要なプロパティ値は 要素内に示されています。 + + ![1 つのアプリケーション内の複数の位置決めプロパティ](../../../../docs/framework/wpf/advanced/media/layout-margins-padding-aligment-graphic3.png "layout\_margins\_padding\_aligment\_graphic3") + + +## 次の内容 + クラスで定義されている配置プロパティを使用すると、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーション内の要素の配置をきめ細かく制御できます。 これまでに説明したいくつかの手法を使用すると、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] を使用して、要素をより適切に配置できます。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のレイアウトについてさらに詳細に説明するソースが他にもあります。 「[パネルの概要](../../../../docs/framework/wpf/controls/panels-overview.md)」トピックでは、さまざまな 要素についてさらに詳しく説明されています。 「[チュートリアル: WPF の概要](../../../../docs/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application.md)」トピックでは、レイアウト要素を使用してコンポーネントを配置し、そのアクションをデータ ソースにバインドする、高度な手法が紹介されています。 + +## 参照 + + + + + [パネルの概要](../../../../docs/framework/wpf/controls/panels-overview.md) + [レイアウト](../../../../docs/framework/wpf/advanced/layout.md) + [WPF レイアウト ギャラリーのサンプル](http://go.microsoft.com/fwlink/?LinkID=160054) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/annotations-overview.md b/docs/framework/wpf/advanced/annotations-overview.md new file mode 100644 index 00000000000..97ea58bb753 --- /dev/null +++ b/docs/framework/wpf/advanced/annotations-overview.md @@ -0,0 +1,83 @@ +--- +title: "注釈の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ドキュメント, 注釈" + - "強調表示" + - "付箋" +ms.assetid: 716bf474-29bd-4c74-84a4-8e0744bdad62 +caps.latest.revision: 17 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# 注釈の概要 +紙に印刷されたドキュメントにメモやコメントを書き込むことは、当然のように行われる一般的な行為です。 これらのメモやコメントは、後で参照するために、情報に目印を付けたり、関心のある項目を強調するためにドキュメントに追加する "注釈" です。 印刷されたドキュメントにメモを書き込むことは簡単で一般的ですが、電子ドキュメントに個人的なコメントを追加する機能は、利用できるとしても、通常は非常に限られています。 + + ここでは、いくつかの一般的な種類の注釈、特に付箋と強調表示について説明し、[!INCLUDE[TLA#tla_caf](../../../../includes/tlasharptla-caf-md.md)] で [!INCLUDE[TLA#tla_wpf](../../../../includes/tlasharptla-wpf-md.md)] ドキュメント表示コントロールを使用することにより、アプリケーションでこれらの種類の注釈を使用できるようにする方法を示します。 注釈をサポートする [!INCLUDE[TLA2#tla_wpf](../../../../includes/tla2sharptla-wpf-md.md)] ドキュメント表示コントロールには、 などがあり、また、 から派生した や  などのコントロールも含まれます。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 付箋 + 通常の付箋の場合は、色の付いた小さな用紙に情報を書き込み、それをドキュメントに貼り付けます。 デジタル付箋は、電子ドキュメントに対する同様の機能を提供しますが、入力したテキスト、手書きのメモ \(たとえば [!INCLUDE[TLA#tla_tpc](../../../../includes/tlasharptla-tpc-md.md)] の "インク" ストローク\)、Web リンクなど、さまざまな種類のコンテンツを格納できる柔軟性も備えています。 + + 強調表示、テキスト付箋、およびインク付箋による注釈の例を次の図に示します。 + + ![強調表示、テキストとインク付箋注釈。](../../../../docs/framework/wpf/advanced/media/caf-stickynote.jpg "CAF\_StickyNote") + + アプリケーションで注釈のサポートを有効にするために使用できる方法を次の例に示します。 + + [!code-csharp[DocViewerAnnotationsXml#DocViewXmlStartAnnotations](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DocViewerAnnotationsXml/CSharp/Window1.xaml.cs#docviewxmlstartannotations)] + [!code-vb[DocViewerAnnotationsXml#DocViewXmlStartAnnotations](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DocViewerAnnotationsXml/visualbasic/window1.xaml.vb#docviewxmlstartannotations)] + + +## 強調表示 + 多くの人は、紙に印刷されたドキュメントに印を付ける場合、関心のある項目を目立たせるために、下線を引く、蛍光ペンで強調する、文中の単語を丸で囲む、余白に記号や注釈を書き込むなど、さまざまな方法を工夫して使用します。 [!INCLUDE[TLA#tla_caf](../../../../includes/tlasharptla-caf-md.md)] での強調表示による注釈は、[!INCLUDE[TLA2#tla_wpf](../../../../includes/tla2sharptla-wpf-md.md)] ドキュメント表示コントロールに表示された情報に印を付けるための、同様の機能を提供します。 + + 強調表示による注釈の例を次の図に示します。 + + ![注釈の強調表示](../../../../docs/framework/wpf/advanced/media/caf-callouts.png "CAF\_Callouts") + + 通常、ユーザーが注釈を作成する場合には、最初にテキストまたは関心のある項目を選択し、次に右クリックして、注釈オプションの を表示します。 ユーザーが注釈を作成および管理するためにアクセスできるルーティング コマンドを格納した を宣言するために使用できる [!INCLUDE[TLA#tla_xaml](../../../../includes/tlasharptla-xaml-md.md)] を次の例に示します。 + + [!code-xml[DocViewerAnnotationsXps#CreateDeleteAnnotations](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DocViewerAnnotationsXps/CSharp/Window1.xaml#createdeleteannotations)] + + +## データ アンカー + [!INCLUDE[TLA2#tla_caf](../../../../includes/tla2sharptla-caf-md.md)] では、注釈は、表示ビュー上の位置に対してだけでなく、ユーザーが選択したデータに対してもバインドされます。 そのため、ドキュメント ビューが変更された場合 \(ユーザーが表示ウィンドウをスクロールまたはサイズ変更した場合など\) でも、注釈はそれがバインドされているデータ選択を保持します。 たとえば、次の図は、ユーザーがテキストを選択して行った注釈を示しています。 ドキュメント ビューが変更 \(スクロール、サイズ変更、スケーリング、または移動\) されると、強調表示による注釈は、元のデータ選択と共に移動します。 + + ![注釈データ固定](../../../../docs/framework/wpf/advanced/media/caf-dataanchoring.png "CAF\_DataAnchoring") + + +## 注釈と注釈先オブジェクトの対応付け + 注釈と、それに応じた注釈先オブジェクトとを対応付けることができます。 たとえば、コメント ペインを持つ簡単なドキュメント リーダー アプリケーションがあるとします。 そのコメント ペインは、そのドキュメントにアンカーされている注釈のリストのテキストを表示するリスト ボックスです。 ユーザーがリスト ボックスの項目を選択すると、対応する注釈オブジェクトがアンカーされているドキュメント内の段落が表示されます。 + + このようなコメント ペインとして使用するリスト ボックスのイベント ハンドラーを実装する方法を次の例に示します。 + + [!code-csharp[FlowDocumentAnnotatedViewer#Handler](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowDocumentAnnotatedViewer/CSharp/Window1.xaml.cs#handler)] + [!code-vb[FlowDocumentAnnotatedViewer#Handler](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FlowDocumentAnnotatedViewer/visualbasic/window1.xaml.vb#handler)] + + 別のサンプル シナリオとしては、ドキュメント リーダー間で注釈および付箋を電子メールで交換できるアプリケーションが考えられます。 この機能があるアプリケーションでは、交換した注釈を含むページにリーダーを移動できます。 + +## 参照 + + + + + + + [注釈スキーマ](../../../../docs/framework/wpf/advanced/annotations-schema.md) + [ContextMenu の概要](../../../../docs/framework/wpf/controls/contextmenu-overview.md) + [コマンド実行の概要](../../../../docs/framework/wpf/advanced/commanding-overview.md) + [フロー ドキュメントの概要](../../../../docs/framework/wpf/advanced/flow-document-overview.md) + [How to: Add a Command to a MenuItem](http://msdn.microsoft.com/ja-jp/013d68a0-5373-4a68-bd91-5de574307370) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/annotations-schema.md b/docs/framework/wpf/advanced/annotations-schema.md new file mode 100644 index 00000000000..2c2c32f8735 --- /dev/null +++ b/docs/framework/wpf/advanced/annotations-schema.md @@ -0,0 +1,606 @@ +--- +title: "注釈スキーマ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ドキュメント, 注釈" + - "Microsoft Annotations Framework" + - "XML スキーマ定義 (XSD)" +ms.assetid: a893442b-e220-4603-bf6a-b01fefcb4b37 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 注釈スキーマ +ここでは、Microsoft Annotations Framework でユーザーの注釈データを保存および取得するために使用される XML スキーマ定義 \(XSD\) について説明します。 + + [!INCLUDE[TLA2#tla_caf](../../../../includes/tla2sharptla-caf-md.md)] は、注釈データを内部表現から XML 形式に[シリアル化](GTMT)します。 変換に使用される XML 形式は、[!INCLUDE[TLA2#tla_caf](../../../../includes/tla2sharptla-caf-md.md)] XSD スキーマによって記述されます。 スキーマは、アプリケーション間で注釈データを交換するために使用できる、実装に依存しない XML 形式を定義します。 + + [!INCLUDE[TLA2#tla_caf](../../../../includes/tla2sharptla-caf-md.md)] の XML スキーマ定義は、次の 2 つのサブスキーマで構成されます。 + +- 注釈 XML コア スキーマ \(コア スキーマ\) + +- 注釈 XML 基本スキーマ \(基本スキーマ\) + + コア スキーマ は、 の主要な XML 構造を定義します。 コア スキーマ内で定義される XML 要素の多くは、 名前空間の型に対応します。 コア スキーマは、アプリケーションが独自の XML データを追加できる 3 つの拡張ポイントを公開します。 この拡張ポイントは、、および "Content" です \(Content 要素は、 リストの形式で提供されます\)。 + + ここで説明する基本スキーマは、[!INCLUDE[TLA#tla_wpf](../../../../includes/tlasharptla-wpf-md.md)] の初期のリリースに含まれている および Content の各型の拡張を定義します。 + + このトピックは、次のセクションで構成されています。 + + +- [注釈 XML コア スキーマ](#CoreSchema) + +- [注釈 XML 基本スキーマ](#BaseSchema) + +- [注釈 XmlStreamStore によって作成される XML のサンプル](#SampleXML) + + +## 注釈 XML コア スキーマ + 注釈 XML コア スキーマは、 オブジェクトの格納に使用される XML 構造を定義します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + +## 注釈 XML 基本スキーマ + 基本スキーマは、コア スキーマで定義される 3 つの抽象要素 \(、および \) の XML 構造を定義します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <-- PageNumber element substitutes ContentLocatorPart and is used to locate a + * page in a FixedDocument. PageNumber ContentLocatorPart is used in + * conjunction with the FixedTextRange ContentLocatorPart and it shows on with + * page are the coordinates defined in the FixedTextRange. + * Example of a PageNumber ContentLocatorPart: + * + * + * + * + --> + + + + + + + + + + + + + + + + + + + <-- Ink – contains XAML representing Sticky Note ink. + * Used in annotations of type InkStickyNote. --> + + + + + + + + + + + + + + + + + + + + +``` + + +## 注釈 XmlStreamStore によって作成される XML のサンプル + 次に示す XML は、注釈 の出力と、3 つの注釈 \(強調表示、テキストの付箋、インク付箋\) を含むサンプル ファイルの編成を示しています。 + +``` + + + + + + + + + + + + + + + + + + + + + + Denise Smith + + + + + + + + + + + + + + + + + + + + + + + + + + Mike Nash + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + + + [注釈の概要](../../../../docs/framework/wpf/advanced/annotations-overview.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/annotations.md b/docs/framework/wpf/advanced/annotations.md new file mode 100644 index 00000000000..328c38e601e --- /dev/null +++ b/docs/framework/wpf/advanced/annotations.md @@ -0,0 +1,37 @@ +--- +title: "コメント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ドキュメント, 注釈" + - "強調表示" + - "付箋" +ms.assetid: 232ad0d7-2264-4bed-aae3-10dfde116a9c +caps.latest.revision: 6 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 6 +--- +# コメント +[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] は、注釈のドキュメント コンテンツをサポートするドキュメント表示コントロールを提供します。 + +## このセクションの内容 + [注釈の概要](../../../../docs/framework/wpf/advanced/annotations-overview.md) + [注釈スキーマ](../../../../docs/framework/wpf/advanced/annotations-schema.md) + +## 関連項目 + + + + +## 関連項目 + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) + [フロー ドキュメントの概要](../../../../docs/framework/wpf/advanced/flow-document-overview.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/application-startup-time.md b/docs/framework/wpf/advanced/application-startup-time.md new file mode 100644 index 00000000000..d3582dab87d --- /dev/null +++ b/docs/framework/wpf/advanced/application-startup-time.md @@ -0,0 +1,139 @@ +--- +title: "アプリケーションの起動時間 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーションの起動 [WPF]" + - "パフォーマンス [WPF], 起動時間" + - "スプラッシュ スクリーン [WPF], 起動時間" + - "起動時間 [WPF]" + - "WPF, 起動時間" +ms.assetid: f0ec58d8-626f-4d8a-9873-c20f95e08b96 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# アプリケーションの起動時間 +WPF アプリケーションの起動に必要な時間は、大幅に変動する可能性があります。 このトピックでは、Windows Presentation Foundation \(WPF\) アプリケーションの認識される起動時間と実際の起動時間を短縮する方法について説明します。 + +## コールド スタートとウォーム スタートについて + コールド スタートは、システムの再起動後にアプリケーションを初めて起動するとき、またはアプリケーションを起動して閉じた後、時間をおいて再び起動するときに発生します。 アプリケーションが起動するときに、必要なページ \(コード、静的データ、レジストリなど\) が Windows メモリ マネージャーのスタンバイ リストに存在しない場合、ページ フォールトが発生します。 これらのページをメモリに読み込むには、ディスクにアクセスする必要があります。 + + ウォーム スタートは、主要な共通言語ランタイム \(CLR: Common Language Runtime\) コンポーネント用のページのほとんどが、既にメモリに読み込まれているときに発生し、貴重なディスク アクセス時間が節約されます。 このため、マネージ アプリケーションを再度実行すると、初回よりも短い時間で起動します。 + +## スプラッシュ スクリーンの実装 + アプリケーションの起動から最初の UI が表示されるまでにかなりの時間がかかることが避けられない場合は、*スプラッシュ スクリーン*を使用することで、認識される起動時間を最適化します。 この方法により、ユーザーがアプリケーションを起動すると、すぐにイメージが表示されます。 アプリケーションが最初の UI を表示する準備が整うと、スプラッシュ スクリーンはフェード アウトします。 [!INCLUDE[net_v35SP1_short](../../../../includes/net-v35sp1-short-md.md)] 以降、 クラスを使用して、スプラッシュ スクリーンを実装できます。 詳細については、「[スプラッシュ スクリーンを WPF アプリケーションに追加する](../../../../docs/framework/wpf/app-development/how-to-add-a-splash-screen-to-a-wpf-application.md)」を参照してください。 + + ネイティブな Win32 グラフィックスを使用することで、独自のスプラッシュ スクリーンを実装することもできます。 独自の実装は、 メソッドが呼び出される前に表示します。 + +## 起動コードの分析 + コールド スタートに時間がかかる理由を特定します。 ディスク I\/O が原因である可能性がありますが、常にそうとは限りません。 通常は、ネットワーク、Web サービス、ディスクなどの外部リソースの使用を最小限に抑えてください。 + + テストを始める前に、実行中のアプリケーションやサービスが、マネージ コードまたは WPF コードを使用していないことを確認してください。 + + 再起動したら、直ちに WPF アプリケーションを起動し、表示されるまでの時間を計測します。 この後、同じアプリケーションを複数回起動し \(ウォーム スタート\)、各回の起動時間が初回よりも短ければ、コールド スタートの問題の原因は I\/O であると判断できます。 + + アプリケーションのコールド スタートの問題に I\/O が無関係である場合は、アプリケーションが長時間かかる初期化や計算を実行しているか、イベントの完了を待機しているか、起動時に大量の JIT コンパイルを必要としている可能性があります。 以下のセクションでは、これらの状況のいくつかについてさらに詳しく説明します。 + +## モジュールの読み込みの最適化 + プロセス エクスプローラー \(Procexp.exe\) や Tlist.exe などのツールを使用して、アプリケーションが読み込むモジュールを調べます。 `Tlist ` コマンドは、プロセスによって読み込まれるすべてのモジュールを表示します。 + + たとえば、Web に接続しないにもかかわらず System.Web.dll が読み込まれている場合は、アプリケーション内にこのアセンブリを参照するモジュールが含まれています。 この参照が本当に必要かどうかを検討します。 + + アプリケーションに複数のモジュールがある場合は、それらをマージして単一のモジュールにします。 この方法により、CLR によるアセンブリ読み込みのオーバーヘッドが減少します。 アセンブリ数の減少は、CLR が管理する状態も減少することも意味します。 + +## 初期化処理の延期 + メイン アプリケーション ウィンドウが表示されるまで初期化コードの実行を延期することを考慮します。 + + 初期化はクラス コンストラクター内で実行される場合があり、初期化コードが他のクラスを参照している場合は、多数のクラス コンストラクターが次々に実行される可能性があることに注意してください。 + +## アプリケーションの構成の回避 + アプリケーションの構成を回避することを考慮します。 たとえば、アプリケーションの構成要件が単純であるときに、非常に短時間で起動する必要がある場合は、起動時間を短縮する方法として、構成の代わりにレジストリ エントリまたは単純な INI ファイルを使用できます。 + +## GAC の活用 + アセンブリがグローバル アセンブリ キャッシュ \(GAC: Global Assembly Cache\) にインストールされていない場合、厳密な名前付きアセンブリのハッシュ検証と Ngen イメージ検証 \(コンピューター上のネイティブ イメージを使用できる場合\) が原因で遅延が発生します。 厳密な名前の検証は、GAC にインストールされているアセンブリに対してはスキップされます。 詳細については、「[Gacutil.exe \(グローバル アセンブリ キャッシュ ツール\)](../../../../docs/framework/tools/gacutil-exe-gac-tool.md)」を参照してください。 + +## Ngen.exe の使用 + アプリケーションでのネイティブ イメージ ジェネレーター \(Ngen.exe\) の使用を考慮します。 Ngen.exe の使用は、CPU 消費が減少する代わりにディスク アクセスが増えることを意味します。これは、Ngen.exe によって生成されるネイティブ イメージの方が、MSIL イメージよりも容量が大きい場合が多いためです。 + + ウォーム スタートの起動時間を短縮するには、アプリケーションで Ngen.exe を常に使用します。これは、アプリケーション コードの JIT コンパイルにかかる CPU コストを回避するためです。 + + コールド スタートの場合も、Ngen.exe を使用すると有効なことがあります。 これは、JIT コンパイラ \(mscorjit.dll\) を読み込む必要がないためです。 + + Ngen と JIT モジュールを併用すると、最悪の影響が生じる可能性があります。 これは、mscorjit.dll を読み込む必要があることに加え、JIT コンパイラがアプリケーション コードを処理するためにアセンブリのメタデータを読み込む際に、Ngen イメージ内の多数のページにアクセスする必要があるためです。 + +### Ngen と ClickOnce + アプリケーションの配置方法も、読み込み時間に影響する可能性があります。 [!INCLUDE[ndptecclick](../../../../includes/ndptecclick-md.md)] によるアプリケーションの配置では、Ngen のサポートはありません。 アプリケーションで Ngen.exe を使用する場合は、Windows インストーラーなどの他の配置機構を使用する必要があります。 + + 詳細については、「[Ngen.exe \(ネイティブ イメージ ジェネレーター\)](../../../../docs/framework/tools/ngen-exe-native-image-generator.md)」を参照してください。 + +### ベース変更と DLL アドレスの衝突 + Ngen.exe を使用する場合は、ネイティブ イメージがメモリに読み込まれる際にベース変更が発生する可能性があることに注意してください。 希望するベース アドレスに DLL を読み込もうとしたときに、そのアドレス範囲が既に割り当て済みであるために DLL を読み込めない場合、Windows ローダーは、その DLL を別のアドレスに読み込みます。これは時間がかかる処理になる可能性があります。 + + 仮想アドレス ダンプ \(Vadump.exe\) ツールを使用して、すべてのページがプライベートであるモジュールが存在するかどうかを調べることができます。 これに該当する場合、そのモジュールは、別のアドレスにベース変更されている可能性があります。 したがって、それらのページは共有できません。 + + ベース アドレスを設定する方法の詳細については、「[Ngen.exe \(ネイティブ イメージ ジェネレーター\)](../../../../docs/framework/tools/ngen-exe-native-image-generator.md)」を参照してください。 + +## Authenticode の最適化 + Authenticode 検証によって起動時間は長くなります。 Authenticode 署名があるアセンブリは、証明機関 \(CA: Certification Authority\) を使用して検証する必要があります。 この検証では、最新の証明書失効リストをダウンロードするためにネットワークに複数回接続する必要があるので、時間がかかる可能性があります。 検証では、信頼できるルートに至るパス上の証明書がすべて有効であることも確認します。 これにより、アセンブリの読み込み中に、数秒間の遅延が発生します。 + + CA 証明書をクライアント コンピューターにインストールするか、可能な場合は Authenticode を使用しないことを考慮します。 アプリケーションが発行者の証拠を必要としないことが明らかな場合は、署名を検証する手間をかける必要はありません。 + + [!INCLUDE[net_v35_short](../../../../includes/net-v35-short-md.md)] 以降、Authenticode 検証のバイパスを可能にする構成オプションが用意されています。 これを行うには、次の設定を app.exe.config ファイルに追加します。 + +``` + + + + + +``` + + 詳細については、「[\ 要素](../../../../docs/framework/configure-apps/file-schema/runtime/generatepublisherevidence-element.md)」を参照してください。 + +## Windows Vista でのパフォーマンスの比較 + Windows Vista のメモリ マネージャーには、SuperFetch というテクノロジが組み込まれています。 SuperFetch は、時間の経過に伴うメモリ使用パターンを分析して、特定のユーザーに適したメモリの内容を決定し、 その内容を常に維持するように動作します。 + + これは、Windows XP で使用されているプリフェッチ手法とは異なります。プリフェッチでは、使用パターンを分析せずに、データをメモリにプリロードします。 ユーザーが WPF アプリケーションを Windows Vista で頻繁に使用する場合、時間の経過と共に、アプリケーションのコールド スタートの起動時間が短縮される可能性があります。 + +## AppDomains の効率的な使用 + 可能な場合はアセンブリをドメイン中立コード領域に読み込み、ネイティブ イメージが存在するのであれば、アプリケーションで作成されるすべての AppDomains でそのネイティブ イメージが使用されるようにします。 + + 最大限のパフォーマンスを得るには、ドメイン間呼び出しを減らしてドメイン間通信を効率化します。 可能であれば、引数のない呼び出し、または引数がプリミティブ型である呼び出しを使用します。 + +## NeutralResourcesLanguage 属性の使用 + を使用して、 のニュートラル カルチャを指定します。 この方法を使用すると、アセンブリのルックアップの失敗が回避されます。 + +## シリアル化での BinaryFormatter クラスの使用 + シリアル化を使用する必要がある場合は、 クラスの代わりに クラスを使用します。 クラスは、mscorlib.dll アセンブリの基本クラス ライブラリ \(BCL: Base Class Library\) に実装されます。 は System.Xml.dll アセンブリに実装されますが、追加の DLL が読み込まれる場合があります。 + + クラスを使用する必要がある場合は、シリアル化アセンブリを事前に生成することで、パフォーマンスを向上させることができます。 + +## 起動後に更新プログラムをチェックする ClickOnce の構成 + アプリケーションで [!INCLUDE[ndptecclick](../../../../includes/ndptecclick-md.md)] を使用する場合は、アプリケーションの起動後に配置サイトの更新プログラムをチェックするように [!INCLUDE[ndptecclick](../../../../includes/ndptecclick-md.md)] を構成することで、ネットワーク アクセスを回避します。 + + XAML ブラウザー アプリケーション \(XBAP: XAML Browser Application\) モデルを使用する場合、[!INCLUDE[ndptecclick](../../../../includes/ndptecclick-md.md)] は、XBAP が既に [!INCLUDE[ndptecclick](../../../../includes/ndptecclick-md.md)] のキャッシュに存在する場合でも、配置サイトの更新プログラムのチェックが行われることに注意してください。 詳細については、「[ClickOnce のセキュリティと配置](../Topic/ClickOnce%20Security%20and%20Deployment.md)」を参照してください。 + +## PresentationFontCache サービスの自動起動の構成 + 再起動後に最初に実行される WPF アプリケーションは PresentationFontCache サービスです。 このサービスは、システム フォントをキャッシュしてフォント アクセスを高速化することで、全体のパフォーマンスを向上させます。 このサービスの起動にはオーバーヘッドが伴うので、一部の制御された環境では、システムの再起動時にこのサービスを自動起動するように構成することを考慮します。 + +## データ バインディングのプログラムによる設定 + XAML を使用してメイン ウィンドウの を宣言によって設定する代わりに、 メソッドでプログラムによって設定することを考慮します。 + +## 参照 + + + + + [スプラッシュ スクリーンを WPF アプリケーションに追加する](../../../../docs/framework/wpf/app-development/how-to-add-a-splash-screen-to-a-wpf-application.md) + [Ngen.exe \(ネイティブ イメージ ジェネレーター\)](../../../../docs/framework/tools/ngen-exe-native-image-generator.md) + [\ 要素](../../../../docs/framework/configure-apps/file-schema/runtime/generatepublisherevidence-element.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/attached-events-overview.md b/docs/framework/wpf/advanced/attached-events-overview.md new file mode 100644 index 00000000000..be38944c672 --- /dev/null +++ b/docs/framework/wpf/advanced/attached-events-overview.md @@ -0,0 +1,101 @@ +--- +title: "添付イベントの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "添付イベント [WPF], 定義" + - "添付イベント [WPF], シナリオ" + - "添付イベントとルーティング イベント [WPF]" + - "サポート (添付イベントをルーティング イベントで) [WPF]" + - "定義 (添付イベントをルーティング イベントとして) [WPF]" + - "処理 (添付イベントを) [WPF]" +ms.assetid: 2c40eae3-80e4-4a45-ae09-df6c9ab4d91e +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 添付イベントの概要 +[!INCLUDE[TLA#tla_xaml](../../../../includes/tlasharptla-xaml-md.md)] は、言語コンポーネントと、*添付イベント*と呼ばれる種類のイベントも定義します。 添付イベントの概念によって、特定のイベントのハンドラーを、実際にそのイベントを定義または継承する要素ではなく任意の要素に追加することができます。 この場合、イベントを発生させる可能性のあるオブジェクトでも、インスタンスを処理する添付先でも、そのイベントを定義したり "所有" したりしません。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 必要条件 + このトピックは、「[ルーティング イベントの概要](../../../../docs/framework/wpf/advanced/routed-events-overview.md)」および「[XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md)」を既に通読していることを前提としています。 + + +## 添付イベントの構文 + 添付イベントには [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] 構文を使用します。また、添付イベントの使用に対応できるように、関連するコードでは特定のコーディング パターンを使用する必要があります。 + + [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] 構文では、添付イベントはイベント名だけでなく、所有している型とイベント名をドット \(.\) で区切って指定します。 イベント名にそれが所有する型が付加されるため、添付イベントの構文では、インスタンス化できる任意の要素に添付イベントをアタッチすることができます。 + + たとえば、ハンドラーをカスタムの `NeedsCleaning` 添付イベントにアタッチする [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] 構文の例を次に示します。 + + [!code-xml[WPFAquariumSln#AE](../../../../samples/snippets/csharp/VS_Snippets_Wpf/WPFAquariumSln/CSharp/WPFAquarium/Window1.xaml#ae)] + + `aqua:` プレフィクスがあることに注意してください。この例の添付イベントは独自にマップされた xmlns によるカスタム イベントであるため、このプレフィクスが必要です。 + + +## WPF の添付イベント実装方法 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、添付イベントは フィールドによってサポートされ、発生後はツリーを通じてルーティングされます。 通常、添付イベントの発生元 \(イベントを発生させたオブジェクト\) はシステムまたはサービスのオブジェクトです。したがって、イベントを発生させるコードを実行するオブジェクトは要素ツリーの直接の構成部分ではありません。 + + +## 添付イベントのシナリオ + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] で添付イベントがよく使用されるのは、サービス レベルでの抽象化が含まれる機能で、これは静的 クラスまたは クラスによって有効にされるイベントなどのためです。 サービスと対話したりサービスを使用したりするクラスでは、イベントを添付イベント構文で使用するか、添付イベントをルーティング イベントとしてクラスによるサービス機能統合の一部とすることができます。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] には多くの添付イベントが定義されていますが、添付イベントを直接使用または処理するシナリオは限られます。 一般に添付イベントは、アーキテクチャ上の目的を満たしてから、非添付の \([!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] イベント "ラッパー" によってサポートされる\) ルーティング イベントに転送されます。 + + たとえば、基になる添付イベント を特定の でより簡単に処理するには、添付イベント構文を [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] またはコードで使用するのではなく、その を使用します。 添付イベントは、入力デバイスを将来的に拡張することを可能にすることから、アーキテクチャ上の目的を満たします。 この架空のデバイスは、マウスからの入力をシミュレートする目的で を発生させるためだけに必要であり、それを行うために から派生する必要はありません。 ただし、このシナリオでは、イベントを処理するコードが必要であり、添付イベントを [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] で処理することは不適切です。 + + +## WPF の添付イベント処理 + 添付イベントを処理するプロセスと作成するハンドラー コードは、基本的にはルーティング イベントの場合と同じです。 + + 一般に [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の添付イベントは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のルーティング イベントと大差ありません。 違いは、イベントが発生する場所とクラスからメンバーとして公開される方法 \(これは [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] ハンドラー構文にも影響する\) です。 + + ただし、既に触れたとおり、既存の [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 添付イベントは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] で処理されることを特に意図していません。 多くの場合、イベントの目的は、複合要素から複合の親要素に状態を報告できるようにすることです。このとき、一般にイベントはコードで発生し、関連する親クラスのクラス処理にも依存します。 たとえば、 内の項目は添付 イベントを生成すると見なされます。このイベントは クラスによってクラス処理されてから、おそらくは クラスによって別のルーティング イベント に変換されます。 ルーティング イベントとクラス処理の詳細については、「[ルーティング イベントの処理済みとしてのマーキング、およびクラス処理](../../../../docs/framework/wpf/advanced/marking-routed-events-as-handled-and-class-handling.md)」を参照してください。 + + +## 独自の添付イベントをルーティング イベントとして定義する + 共通の [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 基本クラスから派生する場合、特定のパターンのメソッドをクラスに含め、基本クラスに既に提供されているユーティリティ メソッドを使用することにより、独自の添付イベントを実装することができます。 + + パターンは次のとおりです。 + +- 2 つのパラメーターを指定した `Add*Handler` メソッド。 1 番目のパラメーターにはイベントを識別する情報を指定します。イベントの名前は、メソッド名の "\*" 部分に一致する必要があります。 2 番目のパラメーターは、追加するハンドラーです。 メソッドは、戻り値のないパブリックで静的なメソッドである必要があります。 + +- 2 つのパラメーターを指定した `Remove*Handler` メソッド。 1 番目のパラメーターにはイベントを識別する情報を指定します。イベントの名前は、メソッド名の "\*" 部分に一致する必要があります。 2 番目のパラメーターは、削除するハンドラーです。 メソッドは、戻り値のないパブリックで静的なメソッドである必要があります。 + + `Add*Handler` アクセサー メソッドは、添付イベント ハンドラーの属性が要素で宣言されているときに [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] の処理を手助けします。 `Add*Handler` メソッドと `Remove*Handler` メソッドも、添付イベントのイベント ハンドラー ストアにアクセスする手段となります。 + + この一般的なパターンは、まだフレームワークとして実装するほど厳密なものではありません。というのも、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] リーダー実装では、基になるイベントを識別するためにサポート言語とアーキテクチャによって異なる方式が使用される場合があるためです。 これは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] が添付イベントをルーティング イベントとして実装する理由の 1 つです。イベント \(\) に使用する識別子は、既に [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] イベント システムに定義されています。 また、ルーティング イベントは、添付イベントの [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] 言語レベルの概念においては実装の自然な拡張です。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 添付イベントの `Add*Handler` 実装は、ルーティング イベントとハンドラーを引数として指定する 呼び出しで構成されます。 + + この実装方式とルーティング イベント システム全般では、添付イベントを処理できるのは 派生クラスまたは 派生クラスに限定されます。これらのクラスのみが を持つことがその理由です。 + + たとえば、次のコードでは、添付イベントをルーティング イベントとして宣言する [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 添付イベント方式を使用して、`NeedsCleaning` 添付イベントを所有者クラス `Aquarium` に定義しています。 + + [!code-csharp[WPFAquariumSln#AECode](../../../../samples/snippets/csharp/VS_Snippets_Wpf/WPFAquariumSln/CSharp/WPFAquariumObjects/Class1.cs#aecode)] + [!code-vb[WPFAquariumSln#AECode](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/WPFAquariumSln/visualbasic/wpfaquariumobjects/class1.vb#aecode)] + + 添付イベントの識別子フィールド を確立するために使用されるメソッドが、非添付ルーティング イベントを登録するために使用されるメソッドと実際には同じことに注意してください。 すべての添付イベントとルーティング イベントは、一元化された内部ストアに登録されます。 このイベント ストアの実装によって、「[ルーティング イベントの概要](../../../../docs/framework/wpf/advanced/routed-events-overview.md)」で説明されている "インターフェイスとしてのイベント" という概念が実現されます。 + + +## WPF 添付イベントの発生 + 通常は、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] に定義された既存の添付イベントをコードから発生させる必要はありません。 これらのイベントは一般的な "サービス" 概念モデルに従い、 などのサービス クラスがイベントを発生させる処理を担います。 + + ただし、 を基にする [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の添付イベント モデルに基づいてカスタムの添付イベントを定義する場合は、 を使用して添付イベントを任意の または から発生させることができます。 ルーティング イベント \(添付または非添付\) を発生させるには、特定の要素をイベント ソースとして要素ツリー内で宣言する必要があります。このソースが 呼び出し元として報告されます。 ツリー内のどの要素が発生元として報告されるかを決定することは、作成するサービスの役目です。 + +## 参照 + [ルーティング イベントの概要](../../../../docs/framework/wpf/advanced/routed-events-overview.md) + [XAML 構文の詳細](../../../../docs/framework/wpf/advanced/xaml-syntax-in-detail.md) + [WPF における XAML とカスタム クラス](../../../../docs/framework/wpf/advanced/xaml-and-custom-classes-for-wpf.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/attached-properties-overview.md b/docs/framework/wpf/advanced/attached-properties-overview.md new file mode 100644 index 00000000000..2aabea283f8 --- /dev/null +++ b/docs/framework/wpf/advanced/attached-properties-overview.md @@ -0,0 +1,151 @@ +--- +title: "添付プロパティの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "添付プロパティ [WPF デザイナー]" +ms.assetid: 75928354-dc01-47e8-a018-8409aec1f32d +caps.latest.revision: 28 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 27 +--- +# 添付プロパティの概要 +添付プロパティはXAML で定義されている概念です。 添付プロパティの目的は、任意のオブジェクトに対して設定可能な一種のグローバル プロパティとして使用することです。 [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] では添付プロパティは従来のプロパティ 「ラッパー」を持たない依存関係プロパティの特殊な形式で一般に定義されます。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 必要条件 + このトピックでは、ユーザーが [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] クラスの既存の依存関係プロパティの使用という観点から依存関係プロパティを理解し、「[依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md)」トピックを通読していることを前提としています。 このトピックの例に従うには[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] するアプリケーションの作成方法を XAML を理解していることも必要です。 + + +## 添付プロパティを使用する理由 + 添付プロパティの目的の 1 つは、実際には親要素で定義されるプロパティについて、子要素がそれぞれ別の値を指定できるようにすることです。 このシナリオは、たとえば、子要素を[!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] にどのように表示するかを子要素から親要素に通知させるという状況に応用されます。 プロパティがその一例です。 プロパティが添付プロパティとして作成されるのは、このプロパティが 自体ではなく に含まれる要素に対して設定するように設計されているためです。 クラスでは、 という名前の静的 フィールドが定義されており、[添付プロパティ](GTMT)のパブリック アクセサーとして メソッドと メソッドが定義されています。 + + +## XAML での添付プロパティ + XAML では、*AttachedPropertyProvider*.*PropertyName* という構文を使用して添付プロパティを設定します。 + + 次の XAML を設定する例を示しています : + + [!code-xml[PropertiesOvwSupport#APBasicUsage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page4.xaml#apbasicusage)] + + 使用方法が静的プロパティに少し似ていることに注意してください。名前で指定されたインスタンスを参照するのではなく、[添付プロパティ](GTMT)を所有および登録する 型を常に参照します。 + + また構成操作のみですXAML の添付プロパティがマークアップに設定した属性であるためです。 スタイル トリガーなどの値を比較する間接的機能があります \(詳細については" " [スタイルとテンプレート](../../../../docs/framework/wpf/controls/styling-and-templating.md) を直接 XAML のプロパティを取得できません。 + +### WPF での添付プロパティの実装 + [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] ではUI 表示に関連する [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の型になる添付プロパティのほとんどは依存関係プロパティとして実装されます。 添付プロパティは依存関係プロパティが [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の概念でありXAML の概念です。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の添付プロパティが依存関係プロパティであるためプロパティ メタデータなどの依存関係プロパティの概念やの既定値をプロパティ メタデータ サポートします。 + + +## 所有する型が添付プロパティを使用する方法 + 添付プロパティはどのオブジェクトに対しても設定可能ですが、プロパティを設定することで具体的な結果が得られたり、その値が他のオブジェクトから使用されたりするわけではありません。 大まかにいって、添付プロパティの目的は、さまざまなクラス階層または論理上のリレーションシップから発生するオブジェクトのそれぞれが、添付プロパティを定義する型に対して共通の情報を報告できるようにすることです。 添付プロパティを定義する型は一般に、次のいずれかのモデルに従います。 + +- 添付プロパティを定義する型は、添付プロパティの値を設定する要素の親要素になることができるように設計されています。 この型は、なんらかのオブジェクト ツリー構造に対して内部ロジックを通じて自身の子オブジェクトを反復処理し、値を取得し、その値に対するなんらかの処理を行います。 + +- 添付プロパティを定義する型は、さまざまな親要素およびコンテンツ モデルの子要素として使用されます。 + +- 添付プロパティを定義する型は、サービスを表します。 その他の型は、添付プロパティの値を設定します。 プロパティを設定する要素がサービスのコンテキスト内で評価されるときに、サービス クラスの内部ロジックを通じて添付プロパティの値が取得されます。 + +### 親要素で定義された添付プロパティの例 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] が添付プロパティを定義する最も一般的なシナリオは、親要素が子要素のコレクションをサポートすると同時に、親要素が実装した動作の詳細を子要素ごとに別個に報告させるというものです。 + + では 添付プロパティが定義され、 のレンダリング ロジックの一部としてクラス レベルのコードが設定されています \(具体的には \)。 のインスタンスは、直接の子要素が の値を設定しているかどうかを常に確認します。 設定されている場合は、その値を入力とするレンダリング ロジックを、その子要素に適用します。 入れ子になった インスタンスは、それぞれ自身の直接の子要素のコレクションを扱いますが、その動作は実装で 値を処理する方法によって異なります。 直接の親以外の要素に作用する添付プロパティも、理論的には可能です。 添付プロパティが設定されている要素が、作用対象の 親要素を持たない場合も、エラーや例外は発生しません。 これは、グローバル プロパティ値が設定されたけれども、その情報を利用できる親 が現在存在しないことを意味します。 + + +## コードでの添付プロパティ + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の添付プロパティには、get および set のアクセスを容易にするための標準的な [!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] "ラッパー" メソッドはありません。 これは、添付プロパティが設定されたインスタンスの [!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] 名前空間に、その添付プロパティが属しているとは限らないからです。 ただしXAML プロセッサが XAML の解析時にこれらの値を設定する必要があります。 有効な添付プロパティの使用方法をサポートするには添付プロパティの所有者型がフォーム `Get`*PropertyName* と `Set`*PropertyName* の専用アクセサー メソッドを実装する必要があります。 この専用アクセサー メソッドは、コードで添付プロパティを取得または設定するときにも役立ちます。 コードの観点から言うと、添付プロパティは、プロパティ アクセサーではなくメソッド アクセサーを持つバッキング フィールドに似ています。そしてそのバッキング フィールドは、任意のオブジェクトに存在し得るもので、具体的な定義を必要とするものではありません。 + + コードで添付プロパティを設定する方法を次の例に示します。 この例では、`myCheckBox` は クラスのインスタンスです。 + + [!code-csharp[PropertiesOvwSupport#APCode](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page4.xaml.cs#apcode)] + [!code-vb[PropertiesOvwSupport#APCode](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/PropertiesOvwSupport/visualbasic/page4.xaml.vb#apcode)] + + `myCheckBox` がコードの 3 行目で `myDockPanel` の子要素として追加されていない XAML の例と同様にコードの 4 行目も例外は発生しませんがプロパティ値は の親と対話していないため何も行われません。 子要素で 値が設定されていて、親要素の が存在する場合にのみ、レンダリングされたアプリケーション内で有効な動作が実行されます。 この場合、添付プロパティを設定した後でツリーにアタッチすることも、 ツリーにアタッチした後で添付プロパティを設定することもできます。 どちらの操作順序でも結果は同じになります。 + + +## 添付プロパティのメタデータ + プロパティを登録するときに、 を設定してプロパティの特性を指定します。たとえば、プロパティがレンダリングやサイズ測定に影響を及ぼすかどうかを指定します。 通常、[添付プロパティ](GTMT)のメタデータは、[依存プロパティ](GTMT)のメタデータと違いはありません。 オーバーライドで添付プロパティ メタデータに既定値を指定した場合、その値は、オーバーライドしたクラスのインスタンスの暗黙の添付プロパティの既定値となります。 具体的には、なんらかのプロセスが、`Get` メソッド アクセサーを通じて添付プロパティの値をクエリするときに、メタデータを設定したクラスのインスタンスを指定した場合、その添付プロパティの値が他では特に設定されていないときには、既定値が通知されます。 + + プロパティ値の継承を有効にするときには、添付プロパティ以外の依存関係プロパティではなく、添付プロパティを使用する必要があります。 詳細については、「[プロパティ値の継承](../../../../docs/framework/wpf/advanced/property-value-inheritance.md)」を参照してください。 + + +## カスタム添付プロパティ + + +### いつ添付プロパティを作成するか + [添付プロパティ](GTMT)を作成するのは、プロパティを定義するクラス以外のクラスでプロパティを設定するための機構が必要な場合です。 この最も一般的なシナリオはレイアウトです。 既存のレイアウト プロパティの例としては、 などがあります。 これによって実現するシナリオは、レイアウト制御要素の子要素として存在する要素が、レイアウト親要素に対して個別にレイアウト要件を表現するというものです。親が添付プロパティとして定義したプロパティ値を、個々の子要素が設定します。 + + 添付プロパティを使用するシナリオには、この他に、クラスによってサービスを表す場合に、クラスとサービスとをより透過的に統合できるようにするというものがあります。 + + さらに別のシナリオとしては、[!INCLUDE[vs_orcas_long](../../../../includes/vs-orcas-long-md.md)] の [!INCLUDE[wpfdesigner_current_short](../../../../includes/wpfdesigner-current-short-md.md)]のサポート \(**\[プロパティ\]** ウィンドウでの編集など\) に対応するというものもあります。 詳細については、「[コントロールの作成の概要](../../../../docs/framework/wpf/controls/control-authoring-overview.md)」を参照してください。 + + 既に述べたように、プロパティ値の継承を使用する場合には、添付プロパティとして登録する必要があります。 + + +### 添付プロパティの作成方法 + クラスで定義する[添付プロパティ](GTMT)が、他の型での使用のみを目的としている場合は、このクラスが から派生していなくてもかまいません。 ただし添付プロパティの [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の全体的なモデルには依存関係プロパティと から派生している必要があります。 + + 添付プロパティを依存関係プロパティとして定義するには、 型の `public` `static` `readonly` フィールドを宣言します。 このフィールドを定義するには、 メソッドの戻り値を使用します。 フィールド名は、添付プロパティと同じ名前に文字列 `Property` を付加したものである必要があります。識別するフィールドとそのフィールドが表すプロパティに関する、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] で確立された命名パターンに従うためです。 添付プロパティ プロバイダーは添付プロパティのアクセサーとして *PropertyName* と `Set`*PropertyName* の静的 `Get` メソッドを提供する必要があります。; 添付プロパティを使用してプロパティ システムでこの操作を行うとが発生します。 + +> [!NOTE] +> 添付プロパティの get アクセサーを省略すると、そのプロパティのデータ バインディングは、[!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] や Expression Blend などのデザイン ツールで動作しません。 + +#### Get アクセサー + *PropertyName* アクセサーのシグネチャの `Get` 形式は次のとおりです。: + + `public static object Get` *PropertyName* `(object` `target` `)` + +- `target` オブジェクトは、実装内で具体的な型として指定できます。 たとえば、 メソッドでは、このパラメーターの型が となっています。これは、添付プロパティが インスタンスに対してのみ設定されることになっているからです。 + +- 戻り値は、実装内で具体的な型として指定できます。 たとえば、 メソッドの戻り値の型は ですが、この値はその列挙体にのみ設定可能だからです。 + +#### Set アクセサー + *PropertyName* アクセサーのシグネチャの `Set` 形式は次のとおりです。: + + `public static void Set` *PropertyName* `(object` `target` `, object` `value` `)` + +- `target` オブジェクトは、実装内で具体的な型として指定できます。 たとえば、 メソッドのこのオブジェクトの型は となっています。これは、添付プロパティが インスタンスに対してのみ設定されることになっているからです。 + +- `value` オブジェクトは、実装の中で具体的な型として指定できます。 たとえば、 メソッドのこのパラメーターの型は となっています。この値は、その列挙体にのみ設定可能だからです。 マークアップの添付プロパティの添付プロパティが検出されたときにこのメソッドの値はXAML ローダーからの入力であることに注意してください。 入力はマークアップで XAML 属性値として指定される値です。 したがって、属性値 \(最終的には文字列\) から適切な型を作成するには、使用する型でサポートされる型変換、値のシリアライザー、またはマークアップ拡張機能が必要です。 + + 次の例では依存関係プロパティの登録 \( のメソッドを使用\) と*PropertyName* と `Get` `Set`*PropertyName* のアクセサーを示します。 この例では、添付プロパティ名は `IsBubbleSource` です。 したがって、アクセサーの名前は `GetIsBubbleSource` および `SetIsBubbleSource` となります。 + + [!code-csharp[WPFAquariumSln#RegisterAttachedBubbler](../../../../samples/snippets/csharp/VS_Snippets_Wpf/WPFAquariumSln/CSharp/WPFAquariumObjects/Class1.cs#registerattachedbubbler)] + [!code-vb[WPFAquariumSln#RegisterAttachedBubbler](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/WPFAquariumSln/visualbasic/wpfaquariumobjects/class1.vb#registerattachedbubbler)] + +#### 添付プロパティの属性 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] には、[!INCLUDE[TLA2#tla_netframewkattr#plural](../../../../includes/tla2sharptla-netframewkattrsharpplural-md.md)] がいくつか定義されています。これらは、リフレクション プロセス、およびリフレクションとプロパティ情報の一般的なユーザー \(デザイナーなど\) に対して、添付プロパティについての情報を提供することを目的としています。 添付プロパティはスコープの型であるためを XAML を使用する特定の技術の実装で定義されているすべての添付プロパティのグローバル リストを含む圧倒的なユーザーを回避する方法が必要です。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] が添付プロパティに対して定義する [!INCLUDE[TLA2#tla_netframewkattr#plural](../../../../includes/tla2sharptla-netframewkattrsharpplural-md.md)] を使用することで、特定の添付プロパティをプロパティ ウィンドウに表示するかどうかという状況に対応できます。 これらの属性は、独自のカスタム添付プロパティに適用することもできます。 [!INCLUDE[TLA2#tla_netframewkattr#plural](../../../../includes/tla2sharptla-netframewkattrsharpplural-md.md)] の目的と構文については、以下の該当するリファレンス ページを参照してください。 + +- + +- + +- + +- + + +## 添付プロパティの詳細情報 + +- 添付プロパティの作成方法の詳細については[添付プロパティを登録する](../../../../docs/framework/wpf/advanced/how-to-register-an-attached-property.md) を参照してください。 + +- 依存関係プロパティと添付プロパティの使用方法のより高度なシナリオについては、「[カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md)」を参照してください。 + +- プロパティを添付プロパティおよび依存関係プロパティとして登録するけれども "ラッパー" 実装も公開するということも可能です。 この場合プロパティは XAML の添付プロパティの構文によって設定するとその要素または要素のです。 標準の使用法と添付での使用法の両方について適切なシナリオを持つプロパティの例が、 です。 + +## 参照 + + [依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md) + [カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md) + [XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) + [添付プロパティを登録する](../../../../docs/framework/wpf/advanced/how-to-register-an-attached-property.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/base-elements-how-to-topics.md b/docs/framework/wpf/advanced/base-elements-how-to-topics.md new file mode 100644 index 00000000000..8d18096cc50 --- /dev/null +++ b/docs/framework/wpf/advanced/base-elements-how-to-topics.md @@ -0,0 +1,48 @@ +--- +title: "基本要素に関する「方法」トピック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "基本要素" +ms.assetid: 09f3a88d-b132-4505-a8bb-55cbfc6bb55a +caps.latest.revision: 75 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 75 +--- +# 基本要素に関する「方法」トピック +このセクションのトピックでは、WPF の 4 つの基本要素である 、および の使用方法について説明します。 + +## このセクションの内容 + [UIElement を透明または半透明にする](../../../../docs/framework/wpf/advanced/how-to-make-a-uielement-transparent-or-semi-transparent.md) + [FrameworkElement のサイズをアニメーション化する](../../../../docs/framework/wpf/advanced/how-to-animate-the-size-of-a-frameworkelement.md) + [Freezable が固定されているかどうかを判別する](../../../../docs/framework/wpf/advanced/how-to-determine-whether-a-freezable-is-frozen.md) + [読み込まれたイベントを処理する](../../../../docs/framework/wpf/advanced/how-to-handle-a-loaded-event.md) + [要素およびコントロールのマージンを設定する](../../../../docs/framework/wpf/advanced/how-to-set-margins-of-elements-and-controls.md) + [Freezable を読み取り専用にする](../../../../docs/framework/wpf/advanced/how-to-make-a-freezable-read-only.md) + [読み取り専用の Freezable の書き込み可能なコピーを取得する](../../../../docs/framework/wpf/advanced/how-to-obtain-a-writable-copy-of-a-read-only-freezable.md) + [UIElement を左右または上下に反転させる](../../../../docs/framework/wpf/advanced/how-to-flip-a-uielement-horizontally-or-vertically.md) + [ThicknessConverter オブジェクトを使用する](../../../../docs/framework/wpf/advanced/how-to-use-a-thicknessconverter-object.md) + [ContextMenuOpening イベントを処理する](../../../../docs/framework/wpf/advanced/how-to-handle-the-contextmenuopening-event.md) + +## 関連項目 + + + + + + + + +## 関連項目 + [基本要素](../../../../docs/framework/wpf/advanced/base-elements.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/base-elements-overview.md b/docs/framework/wpf/advanced/base-elements-overview.md new file mode 100644 index 00000000000..fe1ea5c50f1 --- /dev/null +++ b/docs/framework/wpf/advanced/base-elements-overview.md @@ -0,0 +1,112 @@ +--- +title: "基本要素の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "基本要素" +ms.assetid: 2c997092-72c6-4767-bc84-74267f4eee72 +caps.latest.revision: 19 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 18 +--- +# 基本要素の概要 +[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] のクラスの大部分は、[!INCLUDE[TLA2#tla_sdk](../../../../includes/tla2sharptla-sdk-md.md)] のドキュメントで一般に基本要素クラスと呼ばれている 4 つのクラスから派生しています。 このようなクラスとしては、、および があります。 クラスも関連がありますが、これは の両方に共通する基本クラスであるためです。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## WPF クラスの基本要素 API + および は、どちらも から派生していますが、その方法は多少異なります。 このレベルでの相違点は、 がユーザー インターフェイスで使用される方法と、それらがアプリケーション内で使用される目的に関するものです。 のクラス階層構造内には も存在します。これは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の基礎となる低レベルのグラフィックス サポートを公開するクラスです。 は、独立した四角形の画面領域を定義することにより、レンダリングのフレームワークを提供します。 実際には、 は比較的大きなオブジェクト モデルをサポートし、四角形の画面領域として記述できる領域にレンダリングおよびレイアウトされるように設計されている要素のためのものです。そのコンテンツ モデルは、さまざまな要素の組み合わせが可能なように、意図的にオープンに作られています。 から派生していません。そのモデルでは、 は、リーダーやビューアーなど、他のものによって処理されます。これらのリーダーやビューアーなどは、要素を解釈し、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] が処理する完全な を生成します。 一部の クラスは、コンテンツ ホストとなるように設計されています。それらのクラスは、1 つ以上の クラスに対して、ホスティングとレンダリングを提供します \(そのようなクラスの例として、 があります\)。 は、比較的小さなオブジェクト モデルを持ち、 内にホストされるテキスト、情報、またはドキュメントのコンテンツ向けに使用されることの多い要素の基本クラスとして使用されます。 + +### フレームワークレベルとコアレベル + は、 の基本クラスとして使用され、 は、 の基本クラスとして使用されます。 この第 2 レベルのクラスが存在する理由は、[WPF フレームワーク レベル](GTMT)とは異なる [WPF コア レベル](GTMT)をサポートすることです。この区分は、PresentationCore と PresentationFramework アセンブリ間での [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] の区分にも存在します。 [WPF フレームワーク レベル](GTMT)は、表示のためのレイアウト マネージャーの実装など、アプリケーションの基本的ニーズに対して、より完全なソリューションを提供します。 [WPF コア レベル](GTMT)は、アセンブリの追加によるオーバーヘッドを引き起こすことなく [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の大部分を使用する方法を提供します。 これらのレベルの区別は、ほとんどの通常のアプリケーション開発シナリオでほとんど問題になりません。一般には、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] を 1 つのものと見なして、[WPF フレームワーク レベル](GTMT)と [WPF コア レベル](GTMT)の違いについて意識する必要はありません。 アプリケーション設計で [WPF フレームワーク レベル](GTMT)の機能の大部分を置き換えることにした場合、たとえば開発中のソリューション全体に、独自の [!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] の構成およびレイアウトが既に実装されている場合には、これらのレベルの区分に関する理解が必要となる可能性があります。 + + +## 派生元の要素を選択する + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] を拡張したカスタム クラスを作成するための最も実際的な方法は、既存のクラス階層から必要な機能を可能な限り得ることのできる、いずれかの [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] クラスから派生させることです。 このセクションでは、継承元とするクラスの選択に役立つように、最も重要な要素クラスのうちの 3 つのクラスが提供する機能を示します。 + + コントロールを実装する場合には \([!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] クラスから派生させる理由としてはこれが実際のところ最も一般的なものですが\)、実用的なコントロールであるクラス、コントロール ファミリの基本クラス、または少なくとも 基本クラスから派生させるのが一般的です。 いくつかのガイドラインと実際の例については、「[コントロールの作成の概要](../../../../docs/framework/wpf/controls/control-authoring-overview.md)」を参照してください。 + + コントロールを作成しているのではなく、階層の上位にあるクラスから派生する必要がある場合は、各基本要素クラスに定義された特性に関するガイドを意図した、以下のセクションを参照してください。 + + から派生するクラスを作成すると、次の機能が継承されます。 + +- のサポート、およびプロパティ システム全体のサポート。 + +- [依存関係プロパティ](GTMT)と、[依存関係プロパティ](GTMT)として実装されている[添付プロパティ](GTMT)を使用する機能。 + + から派生するクラスを作成する場合は、 によって提供される機能以外に、次の機能を継承します。 + +- アニメーション化されたプロパティ値の基本的なサポート。 詳細については、「[アニメーションの概要](../../../../docs/framework/wpf/graphics-multimedia/animation-overview.md)」を参照してください。 + +- 基本的な入力イベントのサポートと、コマンド実行のサポート。 詳細については、「[入力の概要](../../../../docs/framework/wpf/advanced/input-overview.md)」および「[コマンド実行の概要](../../../../docs/framework/wpf/advanced/commanding-overview.md)」を参照してください。 + +- レイアウト システムに情報を提供するためにオーバーライドできる仮想メソッド。 + + から派生するクラスを作成する場合は、 によって提供される機能以外に、次の機能を継承します。 + +- スタイル設定とストーリーボードのサポート。 詳細については、「」および「[ストーリーボードの概要](../../../../docs/framework/wpf/graphics-multimedia/storyboards-overview.md)」を参照してください。 + +- データ バインディングのサポート。 詳細については、「[データ バインドの概要](../../../../docs/framework/wpf/data/data-binding-overview.md)」を参照してください。 + +- 動的リソース参照のサポート。 詳細については、「[XAML リソース](../../../../docs/framework/wpf/advanced/xaml-resources.md)」を参照してください。 + +- プロパティ値継承のサポート、および、データ バインディング、スタイル、またはレイアウトのフレームワークの実装などのフレームワーク サービスのプロパティに関する条件をレポートする場合に役立つ、メタデータ内の他のフラグ。 詳細については、「[フレームワーク プロパティ メタデータ](../../../../docs/framework/wpf/advanced/framework-property-metadata.md)」を参照してください。 + +- [論理ツリー](GTMT)の概念。 詳細については、「[WPF のツリー](../../../../docs/framework/wpf/advanced/trees-in-wpf.md)」を参照してください。 + +- レイアウトに影響を与えるプロパティの変更を検出できる オーバーライドなど、レイアウト システムの実際的な [WPF フレームワーク レベル](GTMT)の実装のサポート。 + + から派生するクラスを作成する場合は、 によって提供される機能以外に、次の機能を継承します。 + +- アニメーションのサポート。 詳細については、「[アニメーションの概要](../../../../docs/framework/wpf/graphics-multimedia/animation-overview.md)」を参照してください。 + +- 基本的な入力イベントのサポートと、コマンド実行のサポート。 詳細については、「[入力の概要](../../../../docs/framework/wpf/advanced/input-overview.md)」および「[コマンド実行の概要](../../../../docs/framework/wpf/advanced/commanding-overview.md)」を参照してください。 + + から派生するクラスを作成する場合は、 によって提供される機能以外に、次の機能を使用できます。 + +- スタイル設定とストーリーボードのサポート。 詳細については、「」および「[アニメーションの概要](../../../../docs/framework/wpf/graphics-multimedia/animation-overview.md)」を参照してください。 + +- データ バインディングのサポート。 詳細については、「[データ バインドの概要](../../../../docs/framework/wpf/data/data-binding-overview.md)」を参照してください。 + +- 動的リソース参照のサポート。 詳細については、「[XAML リソース](../../../../docs/framework/wpf/advanced/xaml-resources.md)」を参照してください。 + +- プロパティ値継承のサポート、および、データ バインディング、スタイル、またはレイアウトのフレームワークの実装などのフレームワーク サービスのプロパティに関する条件をレポートする場合に役立つ、メタデータ内の他のフラグ。 詳細については、「[フレームワーク プロパティ メタデータ](../../../../docs/framework/wpf/advanced/framework-property-metadata.md)」を参照してください。 + +- レイアウト システムの変更 \(たとえば \) へのアクセスは継承されません。 レイアウト システムの実装は、 でのみ利用できます。 ただし、レイアウトに影響を与えるプロパティの変更を検出し、それらの変更を任意のコンテンツ ホストに報告できる オーバーライドは継承されます。 + + さまざまなクラスに関してコンテンツ モデルが文書化されています。 派生元として適切なクラスを見つける必要がある場合、クラスのコンテンツ モデルは、考慮する必要がある項目の候補の 1 つです。 詳細については、「[WPF のコンテンツ モデル](../../../../docs/framework/wpf/controls/wpf-content-model.md)」を参照してください。 + + +## 他の基本クラス + +### DispatcherObject + は、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] スレッド処理モデルのサポートを提供し、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションのために作成されたすべてのオブジェクトが に関連付けられるようにします。 、または から派生しない場合でも、このスレッド処理モデルのサポートを可能にするために から派生することを検討してください。 詳細については、「[スレッド モデル](../../../../docs/framework/wpf/advanced/threading-model.md)」を参照してください。 + +### Visual + は、四角形に近い表示形式を必要とする 2D オブジェクトの概念を実装します。 の実際の描画は他のクラスで行われます \(単一のクラスですべての操作が完結しません\) が、 クラスは、描画プロセスのさまざまなレベルで使用される既知の型を提供します。 はヒット テストを実装しますが、ヒット テストの結果を報告するイベントは公開しません \(このイベントは にあります\)。 詳細については、「[ビジュアル層のプログラミング](../../../../docs/framework/wpf/graphics-multimedia/visual-layer-programming.md)」を参照してください。 + +### Freezable + は、変更できないオブジェクトが必要なときやパフォーマンス上の理由で望ましいときにオブジェクトのコピーを生成する手段を提供することにより、変更できるオブジェクト上で不変性をシミュレートします。 型は、ジオメトリ、ブラシ、アニメーションなどの特定のグラフィックス要素に使用できる共通の基盤です。 ではありません。これには、別のオブジェクトのプロパティ値を設定するために が適用されるときにサブプロパティとなるプロパティを格納できます。これらのサブプロパティは、描画に影響することがあります。 詳細については、「[Freezable オブジェクトの概要](../../../../docs/framework/wpf/advanced/freezable-objects-overview.md)」を参照してください。 + + + + は、 派生クラスであり、このクラスによってアニメーション コントロール層とユーティリティ メンバーが追加され、現在のアニメーション プロパティを非アニメーション プロパティから区別できるようになります。 + +### Control + は、あるテクノロジではコントロールと呼ばれ、別のテクノロジではコンポーネントと呼ばれる種類のオブジェクトの基本クラスとして意図されています。 一般に [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] コントロール クラスは、UI コントロールを直接表すクラスか、コントロールの複合に密接に参加するクラスです。 が主に提供する機能は、コントロールのテンプレート作成です。 + +## 参照 + + [依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md) + [コントロールの作成の概要](../../../../docs/framework/wpf/controls/control-authoring-overview.md) + [WPF アーキテクチャ](../../../../docs/framework/wpf/advanced/wpf-architecture.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/base-elements.md b/docs/framework/wpf/advanced/base-elements.md new file mode 100644 index 00000000000..d947dfbb631 --- /dev/null +++ b/docs/framework/wpf/advanced/base-elements.md @@ -0,0 +1,50 @@ +--- +title: "基本要素 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "基本要素" +ms.assetid: 55034aa5-3c1d-442a-8293-f4692d8ea6ae +caps.latest.revision: 70 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 70 +--- +# 基本要素 +4 つの主要クラス、、および は、WPF プログラミングで使用できる共通要素の機能の大部分を実装しています。 この SDK では、これら 4 つのクラスは基本要素クラスと呼ばれます。 + +## このセクションの内容 + [基本要素の概要](../../../../docs/framework/wpf/advanced/base-elements-overview.md) + [Freezable オブジェクトの概要](../../../../docs/framework/wpf/advanced/freezable-objects-overview.md) + [配置、余白、パディングの概要](../../../../docs/framework/wpf/advanced/alignment-margins-and-padding-overview.md) + [方法のトピック](../../../../docs/framework/wpf/advanced/base-elements-how-to-topics.md) + +## 関連項目 + + + + + + + + +## 関連項目 + [WPF アーキテクチャ](../../../../docs/framework/wpf/advanced/wpf-architecture.md) + [WPF の XAML](../../../../docs/framework/wpf/advanced/xaml-in-wpf.md) + [要素のツリーおよびシリアル化](../../../../docs/framework/wpf/advanced/element-tree-and-serialization.md) + [プロパティ](../../../../docs/framework/wpf/advanced/properties-wpf.md) + [イベント](../../../../docs/framework/wpf/advanced/events-wpf.md) + [入力](../../../../docs/framework/wpf/advanced/input-wpf.md) + [リソース](../../../../docs/framework/wpf/advanced/resources-wpf.md) + [スタイルとテンプレート](../../../../docs/framework/wpf/controls/styling-and-templating.md) + [スレッド モデル](../../../../docs/framework/wpf/advanced/threading-model.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/bidirectional-features-in-wpf-overview.md b/docs/framework/wpf/advanced/bidirectional-features-in-wpf-overview.md new file mode 100644 index 00000000000..90f5624f4eb --- /dev/null +++ b/docs/framework/wpf/advanced/bidirectional-features-in-wpf-overview.md @@ -0,0 +1,288 @@ +--- +title: "WPF の双方向機能の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "双方向機能" + - "FlowDirection プロパティ" + - "FlowDocument プロパティ" + - "Span 要素" +ms.assetid: fd850e25-7dba-408c-b521-8873e51dc968 +caps.latest.revision: 22 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 18 +--- +# WPF の双方向機能の概要 +他のどの開発プラットフォームとも異なり、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] には双方向コンテンツ \(たとえば、同じドキュメント内で左から右へ記述される情報と右から左へ記述される情報が混在している状態\) の迅速な開発をサポートする多数の機能があります。 また [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] は、アラビア語やヘブライ語を扱うユーザーなど双方向機能を必要とするユーザーにとって、操作性が優れています。 + + 以降のセクションでは、多数の双方向機能と双方向コンテンツを最適に表示した例について説明します。 この概念は [!INCLUDE[TLA#tla_cshrp](../../../../includes/tlasharptla-cshrp-md.md)] コードまたは [!INCLUDE[TLA#tla_visualb](../../../../includes/tlasharptla-visualb-md.md)] コードに容易に適用できますが、ほとんどのサンプルでは [!INCLUDE[TLA#tla_titlexaml](../../../../includes/tlasharptla-titlexaml-md.md)] を使用します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## FlowDirection + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションでのコンテンツのフロー方向を定義する基本プロパティが です。 このプロパティは 2 つの列挙値のいずれか、つまり または に設定できます。 このプロパティは、 を継承するすべての [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 要素に対して使用できます。 + + 以下の例は、 要素のフロー方向を設定したものです。 + + **左から右へ記述するフロー方向** + + [!code-xml[LTRRTL#LTR](../../../../samples/snippets/csharp/VS_Snippets_Wpf/LTRRTL/CS/Pane1.xaml#ltr)] + + **右から左へ記述するフロー方向** + + [!code-xml[LTRRTL#RTL](../../../../samples/snippets/csharp/VS_Snippets_Wpf/LTRRTL/CS/Pane1.xaml#rtl)] + + 次の図は、前のコードがどのように表示されるのかを示します。 + + **FlowDirection を示す図** + + ![TextBlock 配置](../../../../docs/framework/wpf/advanced/media/lefttorightrighttoleft.png "LefttoRightRighttoLeft") + + [!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] ツリー内の要素が をそのコンテナーから継承します。 次の例では、 が、 に存在する 内にあります。 に対して を設定することは、 に対しても設定することを意味します。 + + 次の例では、 の設定を示します。 + + [!code-xml[FlowDirection#FlowDirection](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowDirection/CS/Window1.xaml#flowdirection)] + + また、最上位の には があるため、これに格納されているすべての要素も同じ を継承します。 要素が指定された を上書きするためには、前の例で に変更された 2 番目の などの明示的な方向変更を追加する必要があります。 が定義されていない場合、既定の が適用されます。 + + 前の例の出力を次の図に示します。 + + **明示的に割り当てられた FlowDirection を示す図** + + ![フロー方向の図](../../../../docs/framework/wpf/advanced/media/flowdir.png "FlowDir") + + +## FlowDocument + [!INCLUDE[TLA#tla_html](../../../../includes/tlasharptla-html-md.md)]、[!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)]、Java などの多数の開発プラットフォームは、双方向コンテンツ開発を特別にサポートしています。 [!INCLUDE[TLA#tla_html](../../../../includes/tlasharptla-html-md.md)] などのマークアップ言語では、コンテンツの作成者が任意の必要な方向にテキストを表示するために必要なマークアップを使用できます。たとえば "rtl" または "ltr" を値として解釈する [!INCLUDE[TLA#tla_html](../../../../includes/tlasharptla-html-md.md)] 4.0 タグの "dir" などです。 このタグは プロパティに似ていますが、 プロパティはテキスト コンテンツのレイアウトに対する機能がより拡張されていて、テキスト以外のコンテンツでも使用できます。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、 がテキスト、テーブル、イメージ、および他の要素の組み合わせをホストできる、柔軟性のある [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] 要素となります。 以下のセクションのサンプルでは、この要素を使用します。 + + へのテキストの追加には、複数の方法があります。 単純な方法は、テキストなどのコンテンツのグループ化に使用するブロック レベル要素の を用いることです。 サンプルでは、インライン レベルの要素にテキストを追加するために、 が使用されています。 は他のインライン要素のグループ化に使用されるインライン レベルのフロー コンテンツ要素で、 は書式設定されていない一連のテキストを格納するためのインライン レベルのフロー コンテンツ要素です。 1 つの に、複数の 要素を含めることができます。 + + 最初のドキュメント例には、いくつかのネットワーク共有名 \(たとえば `\\server1\folder\file.ext`\) がある文書が含まれます。 このネットワーク リンクがアラビア語または英語のいずれの文書にあっても、常に同じように表示する必要があります。 次の図は、アラビア語の ドキュメントのリンクを示します。 + + **Span 要素の使用を示す図** + + ![右から左に読むドキュメント](../../../../docs/framework/wpf/advanced/media/flowdocument.png "FlowDocument") + + テキストは であるため、"\\" などのすべての特殊文字でテキストを右から左の順序で区切ります。 この場合、リンクが正しい順序で表示されません。したがって、この問題を解決するためにテキストを埋め込んで、フロー方向が を個別に残す必要があります。 言語ごとに を作成するのではなく、頻繁には使用しない英語のテキストは大きなアラビア語の に埋め込むのがより良い問題の解決法です。 + + 次の図にこれを示します。 + + **Span 要素に埋め込んだ実行要素の使用を示す図** + + ![XamlPad スクリーンショット](../../../../docs/framework/wpf/advanced/media/runspan.png "RunSpan") + + 次の例は、 要素をドキュメントで使用する方法を示します。 + + [!code-xml[RunSpan#RunSpan](../../../../samples/snippets/csharp/VS_Snippets_Wpf/RunSpan/CS/Window1.xaml#runspan)] + + +## Span 要素 + 要素は、フロー方向が異なるテキストの境界区切り記号の役割を果たします。 フロー方向が同じ 要素でも、双方向スコープは異なると見なされます。これは、コンテナーの 中で 要素が順序付けられているということです。 要素内のコンテンツのみが に従います。 + + 次の図は、複数の 要素のフロー方向を示します。 + + **複数の TextBlock 要素での FlowDirection を示す図** + + ![フロー方向が異なるテキスト ブロック](../../../../docs/framework/wpf/advanced/media/span.png "Span") + + 次の例には、前の図で表示された結果を作成するために 要素と 要素を使用する方法を示します。 + + [!code-xml[Span#Span](../../../../samples/snippets/csharp/VS_Snippets_Wpf/Span/CS/Window1.xaml#span)] + + サンプルの 要素では、 要素は親の に従って配置されます。ただし、各 要素内のテキストはそれ自体の に従って流れます。 これは、ラテン語やアラビア語だけでなく、他のどの言語にも当てはまります。 + +### xml:lang の追加 + 次の図は、`"200.0+21.4=221.4"` などの番号と算術式を使用する別の例を示します。 だけが設定されることに注意してください。 + + **FlowDirection のみを使用して数値を表示する図** + + ![右から左に読む数字](../../../../docs/framework/wpf/advanced/media/langattribute.png "LangAttribute") + + 残念ながらこのアプリケーションの出力では、 が正しいにもかかわらず、数字がアラビア数字の形状になりません。 + + XAML 要素には、各要素の言語を定義する [!INCLUDE[TLA#tla_xml](../../../../includes/tlasharptla-xml-md.md)] 属性 \(`xml:lang`\) を含めることができます。 また、XAML では、ツリーの親要素に `xml:lang` 値を適用すると、子要素にもその属性が適用されるという [!INCLUDE[TLA2#tla_xml](../../../../includes/tla2sharptla-xml-md.md)] 言語の原則も遵守されます。 前の例では、 要素に対しても、その最上位要素に対しても言語が定義されていないため、`xml:lang` の既定値 \(XAML では `en-US`\) が適用されています。 また、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の内部数字形成アルゴリズムによって、対応する言語 \(この場合は英語\) の数字が選択されます。 アラビア数字を正しく表示するためには、`xml:lang` を設定する必要があります。 + + 次の図は、`xml:lang` を追加した例を示しています。 + + **xml:lang 属性の使用を示す図** + + ![右から左に読むアラビア数字](../../../../docs/framework/wpf/advanced/media/langattribute2.png "LangAttribute2") + + 次の例では、アプリケーションに `xml:lang` が追加されています。 + + [!code-xml[LangAttribute#LangAttribute](../../../../samples/snippets/csharp/VS_Snippets_Wpf/LangAttribute/CS/Window1.xaml#langattribute)] + + 多くの言語では、対象となる地域に応じて異なる `xml:lang` 値があります。たとえば、`"ar-SA"` と `"ar-EG"` はアラビア語の 2 つのバリエーションです。 前の例は、`xml:lang` と の両方の値を定義する必要があることを示しています。 + + +## 非テキスト要素のある FlowDirection + は、テキストのテキスト要素内でのフロー方向だけでなく、他のほぼすべての [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] 要素の流れ方も定義します。 次の図は、背景を描画するために、水平 で使用する を示します。 + + **左から右へのグラデーションを付けたツール バーを示す図** + + ![グラデーションのスクリーンショット](../../../../docs/framework/wpf/advanced/media/gradient.png "Gradient") + + を設定すると、 ボタンが右から左に整列されるだけでなく、 によりそのオフセットが右から左に移動するように調整されます。 + + 次の図は、再構成された を示します。 + + **右から左へのグラデーションを付けたツール バーを示す図** + + ![右から左に読むグラデーション](../../../../docs/framework/wpf/advanced/media/gradient2-wpf.png "Gradient2\_WPF") + + を作成する例を次に示します。 \(左から右に描画するには、 に対する 属性を削除します。 + + [!code-xml[Gradient#Gradient](../../../../samples/snippets/csharp/VS_Snippets_Wpf/Gradient/CS/Window1.xaml#gradient)] + + +### FlowDirection の例外 + が期待どおりに動作しない場合があります。 ここでは、そのような例外を 2 つ取り上げて説明します。 + + **Image** + + は、イメージを表示するコントロールを表します。 [!INCLUDE[TLA#tla_titlexaml](../../../../includes/tlasharptla-titlexaml-md.md)] では、表示する の [!INCLUDE[TLA#tla_uri](../../../../includes/tlasharptla-uri-md.md)] を定義する プロパティと合わせてこのコントロールを使用できます。 + + 他の [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] 要素とは異なり、 はコンテナーから を継承しません。 ただし、 に明示的に設定されると、 は左右反転して表示されます。 これは、双方向コンテンツの開発者にとって便利な機能として実装されています。場合によっては、イメージを左右反転して表示することで必要な効果が得られるためです。 + + 次の図は、反転された を示します。 + + **反転されたイメージを示す図** + + ![XamlPad スクリーンショット](../../../../docs/framework/wpf/advanced/media/image.png "Image") + + 次の例は、 が、それが含まれる からの の継承に失敗することを示します。 **メモ** この例を実行するには、C:\\ ドライブに **ms logo.jpg** という名前のファイルが必要です。 + + [!code-xml[Image#Image](../../../../samples/snippets/csharp/VS_Snippets_Wpf/Image/CS/Window1.xaml#image)] + + **メモ** ダウンロード ファイルには、**Ms logo.jpg** ファイルが含まれています。 コードは、この .jpg ファイルがプロジェクト内ではなく、C:\\ ドライブ上にあることを前提としています。 プロジェクト内のファイルを検索するためには、プロジェクト ファイルから C:\\ドライブに .jpg をコピーするかコードを変更する必要があります。 これを行うには、`Source="file://c:/ms_logo.jpg"` を `Source="ms_logo.jpg"` に変更します。 + + **パス** + + のほかに興味深い要素は です。 Pathは、接続された一連の線と曲線を描画できるオブジェクトです。 に関しては と同様に動作します。たとえば を水平方向に反転したものです。 ただし、 とは異なり、 をコンテナーから継承し、明示的に指定する必要がありません。 + + 次の例では、3 本の線を用いて単純な矢印を描画します。 最初の矢印は、始点と終点が右側を起点として計測されるように、 から フロー方向を継承します。 明示的な を持つ 2 番目の矢印も右側を起点とします。 ただし、3 番目の矢印の起点は左側です。 描画の詳細については、「」および「」を参照してください。 + + [!code-xml[Paths#Paths](../../../../samples/snippets/csharp/VS_Snippets_Wpf/Paths/CS/Window1.xaml#paths)] + + 前の例の出力を次の図に示します。 + + **Path 要素を使用して描画した矢印の図** + + ![パス](../../../../docs/framework/wpf/advanced/media/paths.png "Paths") + + は、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] による の使用方法を示す 2 つの例です。 は、コンテナー内の特定の方向に [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] 要素を配置する他に、サーフェイス上にインクをレンダリングする 、および などの要素と合わせて使用できます。 左から右への動作を模したコンテンツに対して右から左への動作が必要な場合、またはその逆の場合には、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] を使用すれば可能です。 + + +## 数字代替 + 従来から、[!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] は、同じ数字をカルチャによって異なる形状で表現できるようにすると同時に、ロケールが異なってもこれらの数字の内部ストレージを統一する \(たとえば、数字をごく一般的な 16 進値である 0x40 や 0x41 で格納しながら、表示は選択された言語で行う\) ことによって、数字代替をサポートしてきました。 + + これによって、言語間での変換を行わなくてもアプリケーションが数値を処理することができます。たとえば、ローカライズされたアラビア語 [!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] の [!INCLUDE[TLA#tla_xl](../../../../includes/tlasharptla-xl-md.md)] スプレッドシートを開いて、アラビア語の形状の数字を表示することができますが、このスプレッドシートを [!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] のヨーロッパ言語バージョンで開き同じ数字のヨーロッパ語表現を表示することもできます。 これは、コンマ区切りやパーセント記号などの他の記号でも必要です。これらの記号は、通常同じドキュメント内で数字を伴っているからです。 + + [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] は引き続きこの機能を備え、代替を用いるタイミングと方法をユーザーがより広く制御できるようにこの機能を改善してゆきます。 この機能はどの言語に対しても有効ですが、アプリケーションが使用されるカルチャが多岐にわたるために特定の言語に合わせて数字の形状を設定することがアプリケーション開発者にとってに問題となる双方向コンテンツに対して特に有用です。 + + 数字代替の [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] での機能を制御する中核のプロパティは、 依存プロパティです。 クラスは、テキストでの数字の表示方法を指定します。 動作を定義する 3 つのパブリック プロパティがあります。 以下は、各プロパティの概要です。 + + **CultureSource:** + + このプロパティは、数字のカルチャを確認する方法を指定します。 3 つの 列挙値のいずれかをとります。 + +- Override: 数字カルチャは、 プロパティの数字カルチャです。 + +- Text: 数字カルチャは、テキスト ランのカルチャです。 マークアップでは、これは `xml:lang`、つまりエイリアスである `Language` プロパティ \( または \) です。 から派生しているクラスの既定でもあります。 こうしたクラスには、 などが含まれます。 + +- User: 数字カルチャは、現在のスレッドのカルチャです。 このプロパティは、、および などの のすべてのサブクラスの既定です。 + + **CultureOverride** : + + プロパティが使用されるのは プロパティに設定されている場合のみで、それ以外の場合は無視されます。 このプロパティは、数字カルチャを指定します。 既定値である `null` の値は、en\-US として解釈されます。 + + **代替** : + + このプロパティは、実行する数字代替の種類を指定します。 次の 列挙値のいずれかをとります。 + +- : 数字カルチャの プロパティ値に基づいて代替方法が決定されます。 これは、既定の設定です。 + +- : 数字カルチャがアラビアまたはペルシアのカルチャである場合に、数字がコンテキストに応じて使用されるように指定します。 + +- : 数字は常にヨーロッパ数字として描画されます。 + +- : カルチャの プロパティで指定された、数字カルチャに対応する国の数字を使って、数字が描画されます。 + +- : 数字カルチャの通常の数字を使用して数字を描画することを指定します。 ほとんどのカルチャで、これは と同じです。 ただし、 では一部のアラビア カルチャでラテン数字が表示されますが、Traditional ではすべてのアラビア カルチャでアラビア数字が表示されます。 + + これらの値は双方向コンテンツ開発者にとってどういった意味があるのでしょうか。 ほとんどの場合、開発者は と各テキスト [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] 要素の言語 \(たとえば `Language="ar-SA"`\) を定義するだけでよく、数字の表示は、 ロジックにより、各 [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] に応じて行われます。 次の例は、[!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] のアラビア語版で実行されている [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] アプリケーションでアラビア数字と英語数字を使用する方法を示します。 + + [!code-xml[Numbers#Numbers](../../../../samples/snippets/csharp/VS_Snippets_Wpf/Numbers/CS/Window1.xaml#numbers)] + + 次の図は、[!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] のアラビア語版を実行している場合の、前のサンプルの出力を示します。 + + **表示されたアラビア数字と英語数字を示す図** + + ![数字を含む XamlPad のスクリーンショット](../../../../docs/framework/wpf/advanced/media/numbers.png "Numbers") + + この場合、代わりに を設定するとヨーロッパ数字が生成されていたため、 が重要でした。 以下のセクションでは、ドキュメント全体で数字の表示を統一する方法について説明します。 この例では、アラビア語版 Windows で実行されていなければ、すべての数字がヨーロッパ数字として表示されます。 + + **代替ルールの定義** + + 実際のアプリケーションでは、プログラムでの言語設定が必要となる場合があります。 たとえば、`xml:lang` 属性をシステムの [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] により使用されている属性と同じものに設定する場合もありますし、アプリケーション状態に応じて言語を変更する場合もあります。 + + アプリケーションの状態に基づいて変更を行う場合には、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] が備えている他の機能を使用してください。 + + アプリケーション コンポーネントの `NumberSubstitution.CultureSource="Text"` を最初に設定します。 この設定を使用すると、 などの既定値が "User" であるテキスト要素の [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] から設定が取得されることはありません。 + + 次に例を示します。 + +|| +|-| +|`
`Name="text1" NumberSubstitution.CultureSource="Text">`

`1234+5679=6913`

``| + + 対応する [!INCLUDE[TLA2#tla_lhcshrp](../../../../includes/tla2sharptla-lhcshrp-md.md)] コードで、`Language` プロパティを `"ar-SA"` などに設定します。 + +|| +|-| +|`text1.Language =`

`System.Windows.Markup.XmlLanguage.GetLanguage("ar-SA");`| + + 現在のユーザーの [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] 言語に `Language` プロパティを設定する必要がある場合、次のコードを使用します。 + +|| +|-| +|`text1.Language =`

`System.Windows.Markup.XmlLanguage.GetLanguage(`

`System.Globalization.CultureInfo.CurrentUICulture.IetfLanguageTag);`| + + は、実行時に現在のスレッドによって使用される現在のカルチャを表します。 + + 最終的な [!INCLUDE[TLA#tla_titlexaml](../../../../includes/tlasharptla-titlexaml-md.md)] 例は、次の例に似たものになります。 + + [!code-xml[Numbers2#Numbers2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/Numbers2/CS/Window1.xaml#numbers2)] + + 最終的な [!INCLUDE[TLA#tla_cshrp](../../../../includes/tlasharptla-cshrp-md.md)] 例は、次のようなものになります。 + + [!code-csharp[NumbersCSharp#NumbersCSharp](../../../../samples/snippets/csharp/VS_Snippets_Wpf/NumbersCSharp/CSharp/Window1.xaml.cs#numberscsharp)] + + 次の図は、いずれかのプログラミング言語に対するウィンドウの外観を示します。 + + **アラビア数字を表示した図** + + ![アラビア数字](../../../../docs/framework/wpf/advanced/media/numbers2.png "Numbers2") + + **Substitution プロパティの使用** + + 数字代替の [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] での機能は、テキスト要素の言語と の両方によって異なります。 が左から右の場合、ヨーロッパ数字が表示されます。 ただし、アラビア語のテキストが前にある場合、または言語が "ar" に設定されており、 の場合には、代わりにアラビア数字が描画されます。 + + ただし、たとえばすべてのユーザーに対してヨーロッパ数字を表示するなどの、統一されたアプリケーションを作成する必要のある場合もあります。 また、特定の セルにアラビア数字を表示する必要のある場合もあります。 これを行う簡単な方法の 1 つは、 プロパティを使用することです。 + + 次の例で、最初の には プロパティ セットがないため、予想されるようにアルゴリズムによってアラビア数字が表示されます。 ただし、2 番目の では、代替がヨーロッパ言語に設定されて、既定のアラビア数字への代替がオーバーライドされているため、ヨーロッパ数字が表示されます。 + + [!code-xml[Numbers3#Numbers3](../../../../samples/snippets/csharp/VS_Snippets_Wpf/Numbers3/CS/Window1.xaml#numbers3)] \ No newline at end of file diff --git a/docs/framework/wpf/advanced/binding-markup-extension.md b/docs/framework/wpf/advanced/binding-markup-extension.md new file mode 100644 index 00000000000..a4d664dc82e --- /dev/null +++ b/docs/framework/wpf/advanced/binding-markup-extension.md @@ -0,0 +1,136 @@ +--- +title: "バインドのマークアップ拡張機能 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Binding" +helpviewer_keywords: + - "バインディングのマークアップ拡張機能" + - "XAML, バインディングのマークアップ拡張機能" +ms.assetid: 83d6e2a4-1b0c-4fc8-bd96-b5e98800ab63 +caps.latest.revision: 23 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 23 +--- +# バインドのマークアップ拡張機能 +プロパティ値を、データ バインドされた値として指定できるようにします。中間の式オブジェクトを作成し、実行時に要素とそのバインディングに適用されるデータ コンテキストを解釈します。 + +## Binding 式の使用方法 + +``` + +-or- + +-or- + +-or + +``` + +## 構文についてのメモ + これらの構文の `[]` と `*` は、リテラルではありません。 0 個以上の *bindProp*`=`*value* ペアを使用できることを示す表記法の一部です。先行する *bindProp*`=`*value* ペアとの区切り記号には `,` が使用されます。 + + 「バインディング拡張で設定できるバインディング プロパティ」に示すプロパティはいずれも、 オブジェクト要素の属性を使用して設定することもできます。 ただしそれは、実際には のマークアップ拡張機能の使用方法ではなく、CLR クラスのプロパティを設定する属性の一般的な XAML 処理にすぎません。 つまり、`` は、`Binding` 式の使用方法ではなく、 オブジェクト要素の属性を使用した同等の構文です。 の特定のプロパティの XAML 属性の使用方法の詳細については、.NET Framework クラス ライブラリで、 の該当するプロパティの「XAML 属性の使用方法」を参照してください。 + +## XAML 値 + +||| +|-|-| +|`bindProp1, bindPropN`|設定対象の プロパティまたは プロパティの名前。 のすべてのプロパティを `Binding` 拡張を使用して設定できるとは限りません。また、プロパティによっては、マークアップ拡張機能をさらに入れ子にしなければ `Binding` 式の中では設定できません。 「バインディング拡張で設定できるバインディング プロパティ」を参照してください。| +|`value1, valueN`|プロパティに設定する値。 属性値の処理は、最終的には、設定される特定の プロパティの型とロジックによって決まります。| +|`path`|暗黙的な プロパティを設定するパス文字列。 [PropertyPath の XAML 構文](../../../../docs/framework/wpf/advanced/propertypath-xaml-syntax.md) も参照してください。| + +## 非修飾の {Binding} + 「Binding 式の使用方法」に示した `{Binding}` という使用方法では、既定値 \(`null` の初期値 など\) を使用して オブジェクトが作成されます。 それでも、さまざまなシナリオで役に立ちます。作成される は、実行時のデータ コンテキストで設定される主要なデータ バインディング プロパティ \( など\) に依存する可能性があるためです。 データ コンテキストの概念の詳細については、「[データ バインディング](../../../../docs/framework/wpf/data/data-binding-wpf.md)」を参照してください。 + +## 暗黙のパス + `Binding` マークアップ拡張機能では、 を概念的な "既定のプロパティ" として使用します。そのため、`Path=` を式で指定する必要はありません。 暗黙的なパスを含む `Binding` 式を指定する場合は、その暗黙的なパスを式で最初に \( プロパティを名前で指定する他の `bindProp`\=`value` ペアより先に\) 指定する必要があります \(例: `{Binding PathString}` \(`PathString` は、マークアップ拡張機能の使用方法によって作成される の値に評価される文字列\)\)。 暗黙のパスの後に、他の名前付きプロパティをコンマで区切って追加することもできます。たとえば、`{Binding LastName, Mode=TwoWay}` のように指定します。 + +## バインディング拡張で設定できるバインディング プロパティ + ここに示す構文では、`bindProp`\=`value` という一般的な形式を使用します。`Binding` マークアップ拡張機能\/式の構文を使用して設定可能な、 の読み書き可能なプロパティは多数あるためです。 暗黙的な 以外は、設定する順序は自由です \(`Path=` を明示的に指定することもできます。その場合は、このプロパティを自由な順序で設定できます\)。 基本的に、下の一覧に示したプロパティのうち 0 個以上を、`bindProp`\=`value` ペアの形式で、コンマで区切って設定します。 + + これらのプロパティ値のいくつかは、要求しているオブジェクト型が XAML のテキスト構文からのネイティブ型変換をサポートしていないので、さらに属性値として設定するためにマークアップ拡張機能が必要です。 詳細については、.NET Framework クラス ライブラリで各プロパティの「XAML 属性の使用方法」を参照してください。さらなるマークアップ拡張機能の使用を含む場合も含まない場合も、XAML 属性構文で使用する文字列は、`Binding` 式で指定する値と基本的に同じです。違いは、`Binding` 式では各 `bindProp`\=`value` を引用符で囲まないことだけです。 + +- : バインディング グループの候補を示す文字列。 これは比較的高度なバインディング概念です。詳細については、 のリファレンス ページを参照してください。 + +- : ブール値。`true` と `false` のいずれかです。 既定値は、`false` です。 + +- : `bindProp`\=`value` の文字列として式で設定できますが、そのためには値のオブジェクト参照 \([StaticResource のマークアップ拡張機能](../../../../docs/framework/wpf/advanced/staticresource-markup-extension.md)など\) が必要です。 この場合の値は、カスタム コンバーター クラスのインスタンスです。 + +- : 標準ベースの識別子として式で設定できます。 のリファレンス トピックを参照してください。 + +- : `bindProp`\=`value` の文字列として式で設定できますが、渡されるパラメーターの型に依存します。 値に参照型を渡す場合、この使用方法では入れ子になった [StaticResource のマークアップ拡張機能](../../../../docs/framework/wpf/advanced/staticresource-markup-extension.md)などのオブジェクト参照が必要です。 + +- : このプロパティと および は同時に使用できません。これらの各バインディング プロパティは特定のバインディング方法を表します。 「[データ バインドの概要](../../../../docs/framework/wpf/data/data-binding-overview.md)」を参照してください。 + +- : `bindProp`\=`value` の文字列として式で設定できますが、渡される値の型に依存します。 参照型を渡す場合は、入れ子になった [StaticResource のマークアップ拡張機能](../../../../docs/framework/wpf/advanced/staticresource-markup-extension.md)などのオブジェクト参照が必要です。 + +- : ブール値。`true` と `false` のいずれかです。 既定値は、`false` です。 + +- : *value* は 列挙体の定数名です。 たとえば、`{Binding Mode=OneWay}` のようにします。 + +- : ブール値。`true` または `false` のいずれかです。 既定値は、`false` です。 + +- : ブール値。`true` と `false` のいずれかです。 既定値は、`false` です。 + +- : ブール値。`true` または `false` のいずれかです。 既定値は、`false` です。 + +- : データ オブジェクトまたは汎用オブジェクト モデルへのパスを表す文字列。 ここで詳しく説明することはできませんが、この形式は、オブジェクト モデルを走査するための複数の異なる規約に対応しています。 「[PropertyPath の XAML 構文](../../../../docs/framework/wpf/advanced/propertypath-xaml-syntax.md)」を参照してください。 + +- : このプロパティと および は同時に使用できません。これらの各バインディング プロパティは特定のバインディング方法を表します。 「[データ バインドの概要](../../../../docs/framework/wpf/data/data-binding-overview.md)」を参照してください。 値を指定するには、入れ子になった [RelativeSource のマークアップ拡張機能](../../../../docs/framework/wpf/advanced/relativesource-markupextension.md)の使用が必要です。 + +- : このプロパティと および は同時に使用できません。これらの各バインディング プロパティは特定のバインディング方法を表します。 「[データ バインドの概要](../../../../docs/framework/wpf/data/data-binding-overview.md)」を参照してください。 入れ子になった拡張機能の使用 \(通常は、キーを持つリソース ディクショナリのオブジェクト データ ソースを参照する [StaticResource のマークアップ拡張機能](../../../../docs/framework/wpf/advanced/staticresource-markup-extension.md)\) が必要です。 + +- : バインドされたデータの文字列書式指定規則を表す文字列。 これは比較的高度なバインディング概念です。詳細については、 のリファレンス ページを参照してください。 + +- : `bindProp`\=`value` の文字列として式で設定できますが、渡されるパラメーターの型に依存します。 値に参照型を渡す場合は、入れ子になった [StaticResource のマークアップ拡張機能](../../../../docs/framework/wpf/advanced/staticresource-markup-extension.md)などのオブジェクト参照が必要です。 + +- : *value* は 列挙体の定数名です。 たとえば、`{Binding UpdateSourceTrigger=LostFocus}` のようにします。 特定のコントロールには、このバインディング プロパティに対して別の既定値がある可能性があります。 「」を参照してください。 + +- : ブール値。`true` と `false` のいずれかです。 既定値は、`false` です。 「解説」を参照してください。 + +- : ブール値。`true` と `false` のいずれかです。 既定値は、`false` です。 「解説」を参照してください。 + +- : XML データ ソースの XMLDOM へのパスを表す文字列。 「[XMLDataProvider と XPath クエリを使用して XML データにバインドする](../../../../docs/framework/wpf/data/how-to-bind-to-xml-data-using-an-xmldataprovider-and-xpath-queries.md)」を参照してください。 + + 次に示す のプロパティは、`Binding` マークアップ拡張機能\/`{Binding}` 式の形式を使用して設定することはできません。 + +- : このプロパティには、コールバック実装への参照が必要です。 コールバック\/イベント ハンドラー以外のメソッドは、XAML 構文で参照できません。 + +- : このプロパティは、 オブジェクトのジェネリック コレクションを受け取ります。 オブジェクト要素のプロパティ要素として表現することもできますが、`Binding` 式ですぐに使用できる属性解析方法がありません。 のリファレンス トピックを参照してください。 + +- + +## 解説 + +> [!IMPORTANT] +> 依存関係プロパティの優先順位という点では、`Binding` 式はローカルで設定される値と同等です。 `Binding` 式を持っているプロパティに対してローカル値を設定すると、`Binding` は完全に削除されます。 詳細については、「[依存関係プロパティ値の優先順位](../../../../docs/framework/wpf/advanced/dependency-property-value-precedence.md)」を参照してください。 + + ここでは、基本レベルでのデータ バインディングについては説明しません。 「[データ バインドの概要](../../../../docs/framework/wpf/data/data-binding-overview.md)」を参照してください。 + +> [!NOTE] +> および は、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] 拡張構文をサポートしません。代わりに、プロパティ要素を使用します。 および のリファレンス トピックを参照してください。 + + XAML のブール値は、大文字と小文字を区別しません。 たとえば、`{Binding NotifyOnValidationError=true}` または `{Binding NotifyOnValidationError=True}` のように指定できます。 + + 通常、データ検証を伴うバインディングは、`{Binding ...}` 式としてではなく、明示的な `Binding` 要素で指定され、 または を式で設定することは一般的ではありません。 これは、コンパニオン プロパティである を式の形式で容易に設定できないためです。 詳細については、「[バインディングの検証の実装](../../../../docs/framework/wpf/data/how-to-implement-binding-validation.md)」を参照してください。 + + `Binding` はマークアップ拡張機能です。 一般にマークアップ拡張機能を実装するのは、属性値をリテラル値やハンドラー名以外にエスケープする要件が存在し、その要件の適用範囲がグローバルで、特定の型やプロパティに属性が追加される型コンバーターにとどまらない場合です。 XAML のすべてのマークアップ拡張機能では、それぞれの属性構文で `{` と `}` の 2 つの記号を使用します。これは規約であり、これに従って XAML プロセッサは、マークアップ拡張機能で文字列の内容を処理する必要があることを認識します。 詳細については、「[マークアップ拡張機能と WPF XAML](../../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md)」を参照してください。 + + `Binding` が他のマークアップ拡張機能と異なる点は、WPF の XAML 実装のこの拡張機能を実装する クラスが、XAML に関連しないその他のいくつかのメソッドやプロパティも実装することです。 他のメンバーの目的は、 を汎用性の高い、自己完結型のクラスにすることです。これによって、XAML マークアップ拡張機能としての機能に加え、さまざまなデータ バインディング シナリオに対応できるようになります。 + +## 参照 + + [データ バインドの概要](../../../../docs/framework/wpf/data/data-binding-overview.md) + [XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) + [マークアップ拡張機能と WPF XAML](../../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/cleartype-overview.md b/docs/framework/wpf/advanced/cleartype-overview.md new file mode 100644 index 00000000000..cf7c95e37f5 --- /dev/null +++ b/docs/framework/wpf/advanced/cleartype-overview.md @@ -0,0 +1,78 @@ +--- +title: "ClearType の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ClearType, テクノロジ" + - "タイポグラフィ, ClearType テクノロジ" +ms.assetid: 7e2392e0-75dc-463d-a716-908772782431 +caps.latest.revision: 13 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# ClearType の概要 +ここでは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の [!INCLUDE[TLA#tla_ct](../../../../includes/tlasharptla-ct-md.md)] テクノロジの概要について説明します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## テクノロジの概要 + [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] は、ラップトップや Pocket PC の画面、フラット パネル モニターなど、既存の LCD \(液晶ディスプレイ\) でのテキストの読みやすさを向上させるために [!INCLUDE[TLA#tla_ms](../../../../includes/tlasharptla-ms-md.md)] が開発したソフトウェア テクノロジです。 [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] は、LCD 画面の各ピクセル内の個々の垂直カラー ストライプ要素にアクセスすることによって機能します。 [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] が開発されるまでは、コンピューターで表示可能な最小の詳細レベルは 1 ピクセルでしたが、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] を LCD モニターで使用すると、テキストの各部分の幅が 1 ピクセルよりも小さくても表示できるようになります。 解像度が上がるとテキスト表示の微細部のシャープさが向上するため、長時間にわたって読んでも苦になりません。 + + [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] で利用可能な [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] は、[!INCLUDE[TLA#tla_gdi](../../../../includes/tlasharptla-gdi-md.md)] に含まれるバージョンに多数の改良を加えた [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] の最新バージョンです。 + + +## サブピクセル ポジショニング + [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] の旧バージョンから大きく改善された点の 1 つに、サブピクセル ポジショニングの使用があります。 [!INCLUDE[TLA2#tla_gdi](../../../../includes/tla2sharptla-gdi-md.md)] に含まれている [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] 実装とは異なり、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] では、ピクセルの境界から開始するグリフだけでなく、ピクセルの途中から開始するグリフも表示できます。 グリフの配置の解像度が上がることにより、グリフの間隔や比率の正確さや一貫性が増します。 + + 次の 2 つの例は、サブピクセル ポジショニングを使用した場合にサブピクセル境界でグリフを開始できることを示しています。 左側の例は、サブピクセル ポジショニングが採用されていない、旧バージョンの [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レンダラーを使用してレンダリングしたものです。 右側の例は、新しいバージョンの [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レンダラーで、サブピクセル ポジショニングを使用してレンダリングしたものです。 右側のイメージの **e** と **l** が、それぞれ異なるサブピクセルから開始しているために若干異なってレンダリングされていることに注意してください。 グリフ イメージはハイ コントラストであるので、テキストを標準サイズで画面に表示したときは、この違いはわかりません。 これは、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] に組み込まれている高度なカラー フィルター処理によってのみ実現します。 + + ![2 つのバージョンの ClearType を使用して表示されるテキスト](../../../../docs/framework/wpf/advanced/media/wcpsdk-mmgraphics-text-cleartype-overview-01.png "wcpsdk\_mmgraphics\_text\_cleartype\_overview\_01") +ClearType の旧バージョンおよび新バージョンによる表示テキスト + + 次の 2 つの例では、旧バージョンの [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レンダラーでの出力と新バージョンの [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レンダラーの出力を比較しています。 右側に示したサブピクセル ポジショニングでは、画面上の文字の間隔が大きく改善されています。特に、サブピクセル 1 個とピクセル 1 個の差がグリフの幅に占める割合の大きい、小さなサイズの場合によくわかります。 2 番目のイメージの方が、文字の間隔が均等に近くなっています。 サブピクセル ポジショニングによるさまざまなメリットがテキスト画面全体の外観に及ぼす効果は大幅に増加しましたが、これは [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] テクノロジが大きく進歩したことを表しています。 + + ![以前のバージョンの ClearType を使用して表示されるテキスト](../../../../docs/framework/wpf/advanced/media/wcpsdk-mmgraphics-text-cleartype-overview-02.png "wcpsdk\_mmgraphics\_text\_cleartype\_overview\_02") +ClearType の旧バージョンおよび新バージョンによるテキスト + + +## Y 方向のアンチエイリアス + [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] のもう 1 つの改善点は、y 方向のアンチエイリアシングです。 y 方向のアンチエイリアシングを行わない [!INCLUDE[TLA2#tla_gdi](../../../../includes/tla2sharptla-gdi-md.md)] の [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] では、x 軸上では高い解像度を得られますが、y 軸上では解像度が低くなります。 緩やかな曲線部分の上下では、端がぎざぎざになって読みにくくなります。 + + 次の例では、y 方向のアンチエイリアシングを使用しない場合の効果を示します。 この場合、文字の上下で端がぎざぎざになっていることがよくわかります。 + + ![緩やかな曲線上にギザギザした境界が付いたテキスト](../../../../docs/framework/wpf/advanced/media/wcpsdk-mmgraphics-text-cleartype-overview-03.png "wcpsdk\_mmgraphics\_text\_cleartype\_overview\_03") +滑らかな曲線部分で端がぎざぎざになっているテキスト + + [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] には、ぎざぎざになっている輪郭を滑らかにする y 方向レベルのアンチエイリアシング機能があります。 これは、東アジア言語を読みやすくするために特に重要です。これらの言語の表意文字では、緩やかな曲線の量が水平方向と垂直方向でほぼ同じであるからです。 + + 次の例では、y 方向のアンチエイリアシングの効果を示します。 文字の上下の曲線が滑らかに表示されています。 + + ![ClearType y 方向アンチエイリアシングを含むテキスト](../../../../docs/framework/wpf/advanced/media/wcpsdk-mmgraphics-text-cleartype-overview-04.png "wcpsdk\_mmgraphics\_text\_cleartype\_overview\_04") +ClearType の y 方向アンチエイリアシングを適用したテキスト + + +## ハードウェアの高速化 + [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] は、ハードウェア アクセラレーションを利用してパフォーマンスを向上させ、CPU の負荷および必要なシステム メモリを削減します。 グラフィックス カードのピクセル シェーダーおよびビデオ メモリを使用することにより、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] では特にアニメーション使用時のテキストのレンダリングが速くなります。 + + [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] によって、システム全体の [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] 設定が変更されることはありません。 [!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] の [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] を無効にすると、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] のアンチエイリアシングがグレースケール モードに設定されます。また、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] によって、[ClearType Tuner PowerToy](http://www.microsoft.com/typography/ClearTypePowerToy.mspx) の設定が変更されることはありません。 + + [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] のアーキテクチャ設計における決定事項の 1 つに、解像度に依存しないレイアウトによる高解像度 DPI モニターのサポート向上があります。高解像度モニターの普及は進みつつあるからです。 この決定を受けて、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] ではエイリアス化されたテキスト レンダリングや、一部の東アジア言語フォントのビットマップをサポートしないことになりました。これらはどちらも解像度に依存するためです。 + + +## 詳細情報 + [ClearType Information \(ClearType の情報\)](http://www.microsoft.com/typography/ClearTypeInfo.mspx) + + [ClearType Tuner PowerToy \(ClearType Tuner PowerToy\)](http://www.microsoft.com/typography/ClearTypePowerToy.mspx) + +## 参照 + [ClearType レジストリの設定](../../../../docs/framework/wpf/advanced/cleartype-registry-settings.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/cleartype-registry-settings.md b/docs/framework/wpf/advanced/cleartype-registry-settings.md new file mode 100644 index 00000000000..cebabbe408a --- /dev/null +++ b/docs/framework/wpf/advanced/cleartype-registry-settings.md @@ -0,0 +1,127 @@ +--- +title: "ClearType レジストリの設定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ClearType, レジストリ設定" + - "タイポグラフィ, ClearType レジストリの設定" +ms.assetid: 56f314bb-b30b-4f67-8492-8b8a9fa432ae +caps.latest.revision: 18 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 12 +--- +# ClearType レジストリの設定 +ここでは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションで使用される [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA#tla_ct](../../../../includes/tlasharptla-ct-md.md)] レジストリ設定の概要について説明します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## テクノロジの概要 + ディスプレイ デバイスにテキストをレンダリングする [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションは、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] 機能を使用して読みやすさを拡張します。 [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] は、ラップトップや Pocket PC の画面、フラット パネル モニターなど、既存の LCD \(液晶ディスプレイ\) でのテキストの読みやすさを向上させるために [!INCLUDE[TLA#tla_ms](../../../../includes/tlasharptla-ms-md.md)] が開発したソフトウェア テクノロジです。 [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] は、LCD 画面の各ピクセル内の個々の垂直カラー ストライプ要素にアクセスすることによって機能します。 [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] の詳細については、「[ClearType の概要](../../../../docs/framework/wpf/advanced/cleartype-overview.md)」を参照してください。 + + [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] でレンダリングされるテキストの表示は、表示先のディスプレイ デバイスによって大きく異なります。 たとえば、一般的な赤、緑、青 \([!INCLUDE[TLA#tla_rgb](../../../../includes/tlasharptla-rgb-md.md)]\) の順ではなく青、緑、赤の順でカラー ストライプ要素を実装するモニターもわずかに存在します。 + + また、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] でレンダリングされるテキストの表示は、各個人の色の感度レベルによっても大きく異なります。 他の人よりも色のわずかな違いを見分ける能力に長けている人もいます。 + + それぞれの場合において、各個人が最も読みやすい表示を実現するために、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] 機能を変更する必要があります。 + + +## レジストリ設定 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] には、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] の機能を制御するための 4 つのレジストリ設定が用意されています。 + +|設定|Description| +|--------|-----------------| +|[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レベル|[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] の色の鮮明度を示します。| +|ガンマ レベル|ディスプレイ デバイスのピクセル カラー コンポーネントのレベルを示します。| +|ピクセル構造|ディスプレイ デバイスのピクセルの配置を示します。| +|テキストのコントラスト レベル|表示されるテキストのコントラストのレベルを示します。| + + これらの設定には、所定の [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レジストリ設定の参照方法を認識している外部構成ユーティリティを使用してアクセスできます。 また、これらの設定は、[!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] レジストリ エディターを使用して値に直接アクセスして作成または変更することもできます。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レジストリ設定が設定されていない場合 \(既定の状態\)、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションは、フォント スムージング設定について [!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] システム パラメーター情報に照会します。 + +> [!NOTE] +> ディスプレイ デバイス名の列挙については、`SystemParametersInfo` [!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] 関数を参照してください。 + + +## ClearType レベル + [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レベルを設定すると、個人の色の感度および知覚に基づいてテキストのレンダリングを調整できます。人によっては、最高レベルの [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] を使用するテキストのレンダリングでは最も読みやすい表示が実現されない場合があります。 + + [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レベルは、0 ~ 100 の範囲の整数値です。 既定のレベルは 100 です。これは、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] でディスプレイ デバイスの最大限のカラー ストライプ要素が使用されることを意味します。 ただし、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レベルが 0 の場合、テキストはグレースケールでレンダリングされます。 [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レベルを 0 ~ 100 の間に設定することで、個人の色の感度に適した中間レベルを実現できます。 + +### レジストリ設定 + [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レベルのレジストリ設定は、特定のディスプレイ デバイス名に対応する個別のユーザー設定の場所にあります。 + + `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\` + + ユーザのディスプレイ デバイス名ごとに `ClearTypeLevel` の DWORD 値が定義されます。 次のスクリーンショットは、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] レベルのレジストリ エディターの設定を示しています。 + + ![レジストリ エディターの ClearType 設定](../../../../docs/framework/wpf/advanced/media/cleartyperegistry01.png "ClearTypeRegistry01") + +> [!NOTE] +> [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションでは、[!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] を使用する場合と使用しない場合のいずれかのモードでテキストがレンダリングされます。 [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] を使用しないテキストのレンダリングは、グレースケール レンダリングと呼ばれます。 + + +## ガンマ レベル + ガンマ レベルとは、ピクセル値とルミナンス間の非線形リレーションシップのことです。 ガンマ レベル設定は、ディスプレイ デバイスの物理特性に対応する必要があります。対応していない場合、レンダリング出力にゆがみが発生する場合があります。 たとえば、テキストの表示が広すぎたり細すぎたりする場合や、色縁がグリフの縦線の端に表示される場合などがあります。 + + ガンマ レベルは、1000 ~ 2200 の範囲の整数値です。 既定のレベルは 1900 です。 + +### レジストリ設定 + ガンマ レベルのレジストリ設定は、特定のディスプレイ デバイス名に対応するローカル マシン設定の場所にあります。 + + `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Avalon.Graphics\` + + ユーザのディスプレイ デバイス名ごとに `GammaLevel` の DWORD 値が定義されます。 次のスクリーンショットは、ガンマ レベルのレジストリ エディターの設定を示しています。 + + ![レジストリ エディターの ClearType 設定](../../../../docs/framework/wpf/advanced/media/cleartyperegistry02.png "ClearTypeRegistry02") + + +## ピクセル構造 + ピクセル構造は、ディスプレイ デバイスを構成するピクセルの種類を示します。 ピクセル構造は、次の 3 種類のいずれかとして定義されます。 + +|種類|値|Description| +|--------|-------|-----------------| +|フラット|0|ディスプレイ デバイスにピクセル構造がありません。 つまり、各色の光源がピクセル領域に均等に拡散しています。これは、グレースケール レンダリングと呼ばれます。 標準のディスプレイ デバイスはこのようにして機能します。 [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] はレンダリングされたテキストに適用されません。| +|RGB|1|ディスプレイ デバイスのピクセルは、赤、緑、青の順の 3 つのストライプで構成されます。 [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] がレンダリングされたテキストに適用されます。| +|BGR|2|ディスプレイ デバイスのピクセルは、青、緑、赤の順の 3 つのストライプで構成されます。 [!INCLUDE[TLA2#tla_ct](../../../../includes/tla2sharptla-ct-md.md)] がレンダリングされたテキストに適用されます。 順序が RGB の場合の逆であることに注目してください。| + + ピクセル構造は、0 ~ 2 の範囲の整数値に対応します。 既定のレベルは 0 です。これは、フラット ピクセル構造を表します。 + +> [!NOTE] +> ディスプレイ デバイス名の列挙については、`EnumDisplayDevices` [!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] 関数を参照してください。 + +### レジストリ設定 + ピクセル構造のレジストリ設定は、特定のディスプレイ デバイス名に対応するローカル マシン設定の場所にあります。 + + `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Avalon.Graphics\` + + ユーザのディスプレイ デバイス名ごとに `PixelStructure` の DWORD 値が定義されます。 次のスクリーンショットは、ピクセル構造のレジストリ エディターの設定を示しています。 + + ![レジストリ エディターの ClearType 設定](../../../../docs/framework/wpf/advanced/media/cleartyperegistry02.png "ClearTypeRegistry02") + + +## テキストのコントラスト レベル + テキストのコントラスト レベルを設定すると、グリフの縦線の幅に基づいてテキストのレンダリングを調整できます。 テキストのコントラスト レベルは、0 ~ 6 の範囲の整数値です。整数値を大きくすると、縦線の幅が広くなります。 既定のレベルは 1 です。 + +### レジストリ設定 + テキストのコントラスト レベルのレジストリ設定は、特定のディスプレイ デバイス名に対応する個別のユーザー設定の場所にあります。 + + `HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics\` + + ユーザのディスプレイ デバイス名ごとに `TextContrastLevel` の DWORD 値が定義されます。 次のスクリーンショットは、テキストのコントラスト レベルのレジストリ エディターの設定を示しています。 + + ![レジストリ エディターの ClearType 設定](../../../../docs/framework/wpf/advanced/media/cleartyperegistry01.png "ClearTypeRegistry01") + +## 参照 + [ClearType の概要](../../../../docs/framework/wpf/advanced/cleartype-overview.md) + [ClearType アンチエイリアシング](_win32_ClearType_Antialiasing) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/code-behind-and-xaml-in-wpf.md b/docs/framework/wpf/advanced/code-behind-and-xaml-in-wpf.md new file mode 100644 index 00000000000..d49b61d376d --- /dev/null +++ b/docs/framework/wpf/advanced/code-behind-and-xaml-in-wpf.md @@ -0,0 +1,72 @@ +--- +title: "WPF における分離コードと XAML | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "分離コード ファイル, XAML" + - "XAML, 分離コード" +ms.assetid: 9df6d3c9-aed3-471c-af36-6859b19d999f +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# WPF における分離コードと XAML + 分離コードとは、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] ページがマークアップ コンパイルされる際に、マークアップ定義オブジェクトによって結合されるコードを表す用語です。 ここでは、分離コードの要件と、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] 内のコードの代替インライン コード機構について説明します。 + + このトピックは、次のセクションで構成されています。 + +- [必要条件](#Prerequisites) + +- [分離コードと XAML 言語](#codebehind_and_the_xaml_language) + +- [WPF における分離コード、イベント ハンドラー、および部分クラスの要件](#Code_behind__Event_Handler__and_Partial_Class) + +- [x:Code](#x_Code) + +- [インライン コードの制限](#Inline_Code_Limitations) + + +## 必要条件 + このトピックでは、「[XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md)」を通読していることと、[!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] およびオブジェクト指向プログラミングに関する基礎知識があることを前提にしています。 + + +## 分離コードと XAML 言語 + XAML 言語には、コード ファイルをマークアップ ファイル側からマークアップ ファイルに関連付けることのできる言語レベルの機能が含まれています。 具体的には、XAML 言語で [x:Class ディレクティブ](../../../../docs/framework/xaml-services/x-class-directive.md)、[x:Subclass ディレクティブ](../../../../docs/framework/xaml-services/x-subclass-directive.md) および [x:ClassModifier ディレクティブ](../../../../docs/framework/xaml-services/x-classmodifier-directive.md) という言語機能が定義されています。 XAML 言語は、コードの生成方法、およびマークアップとコードの統合方法を正確に指定するものではありません。 コードの統合方法、アプリケーションとプログラミング モデルでの XAML の使用方法、これらの操作に必要なビルド アクションまたは他のサポート機能の判別は、WPF などのフレームワークで行います。 + + +## WPF における分離コード、イベント ハンドラー、および部分クラスの要件 + +- 部分クラスは、ルート要素をサポートする型から派生する必要があります。 + +- マークアップ コンパイルによるビルド アクションの既定の動作では、分離コード側の部分クラス定義における派生を空白のままにできます。 コンパイル結果は、指定されていない場合でも、ページ ルートのバッキング型が部分クラスの基礎になると仮定されます。 ただし、この動作に依存することはお勧めしません。 + +- 分離コードで記述したイベント ハンドラーは、インスタンス メソッドである必要があります。静的メソッドにすることはできません。 これらのメソッドは、`x:Class` で識別される CLR 名前空間内の部分クラスによって定義される必要があります。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] プロセッサがイベント ハンドラーの検索を異なるクラス スコープ内のイベント接続で行うように、イベント ハンドラーの名前を修飾することはできません。 + +- ハンドラーは、バッキング型システム内の適切なイベントのデリゲートと一致する必要があります。 + +- [!INCLUDE[TLA#tla_visualb](../../../../includes/tlasharptla-visualb-md.md)] 言語の場合に限り、言語固有の `Handles` キーワードを使用すると、ハンドラーを、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] 内の属性に関連付ける代わりに、ハンドラー宣言内のインスタンスとイベントに関連付けることができます。 ただし、この手法にはいくつかの制限もあります。一定のルーティング イベント シナリオや添付イベントなど、`Handles` キーワードでサポートできない [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] イベント システムの特定機能が存在するためです。 詳細については、「[Visual Basic と WPF のイベント処理](../../../../docs/framework/wpf/advanced/visual-basic-and-wpf-event-handling.md)」を参照してください。 + + +## x:Code + [x:Code](../../../../docs/framework/xaml-services/x-code-intrinsic-xaml-type.md) は、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] で定義されるディレクティブ要素です。`x:Code` ディレクティブ要素には、インラインのプログラミング コードを含めることができます。 インラインで定義されたコードは、同一ページ上の [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] と対話できます。 [!INCLUDE[TLA2#tla_cshrp](../../../../includes/tla2sharptla-cshrp-md.md)] のインライン コードを次の例に示します。 コードは `x:Code` 要素内に含まれており、[!INCLUDE[TLA2#tla_xml](../../../../includes/tla2sharptla-xml-md.md)] のコンテンツをエスケープする `` でコードを囲んでいるのは、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] プロセッサ \([!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] スキーマまたは [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] スキーマを解釈\) がこのコンテンツをリテラルに [!INCLUDE[TLA2#tla_xml](../../../../includes/tla2sharptla-xml-md.md)] として解釈しないようにする必要があるためです。 + + [!code-xml[XAMLOvwSupport#ButtonWithInlineCode](../../../../samples/snippets/csharp/VS_Snippets_Wpf/XAMLOvwSupport/CSharp/page4.xaml#buttonwithinlinecode)] + + +## インライン コードの制限 + インライン コードを使用しないようにするか、限定的に使用することを考慮する必要があります。 アーキテクチャおよびコーディングの原理という点では、マークアップと分離コードを切り離しておくことによって、デザイナーと開発者の役割もはっきりと区別できます。 より技術的なレベルで言えば、インライン コードとして作成するコードは記述が面倒な場合があります。常に [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] に生成された部分クラス内に記述することとなり、既定の XML 名前空間のマッピングしか使用できないためです。 `using` ステートメントを追加できないため、作成する [!INCLUDE[TLA2#tla_api](../../../../includes/tla2sharptla-api-md.md)] 呼び出しの多くを完全に修飾する必要があります。 既定の [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] マッピングには、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アセンブリ内に存在する [!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] 名前空間のほとんどが含まれますが、すべての名前空間が含まれるのではありません。他の CLR 名前空間内に含まれる型とメンバーへの呼び出しを完全に修飾することが必要になります。 また、インライン コードでは部分クラス以外を定義することはできません。参照するすべてのユーザー コード エンティティが、生成された部分クラス内のメンバーまたは変数として存在する必要があります。 マクロ、グローバル変数やビルド変数に対する `#ifdef` など、言語固有のその他のプログラミング機能も使用できません。 詳細については、「[x:Code 組み込み XAML 型](../../../../docs/framework/xaml-services/x-code-intrinsic-xaml-type.md)」を参照してください。 + +## 参照 + [XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) + [x:Code 組み込み XAML 型](../../../../docs/framework/xaml-services/x-code-intrinsic-xaml-type.md) + [WPF アプリケーションのビルド](../../../../docs/framework/wpf/app-development/building-a-wpf-application-wpf.md) + [XAML 構文の詳細](../../../../docs/framework/wpf/advanced/xaml-syntax-in-detail.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/collecting-ink.md b/docs/framework/wpf/advanced/collecting-ink.md new file mode 100644 index 00000000000..4ef4c8d158c --- /dev/null +++ b/docs/framework/wpf/advanced/collecting-ink.md @@ -0,0 +1,87 @@ +--- +title: "インクの収集 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "収集 (デジタル インクを)" + - "DefaultDrawingAttributes プロパティ" + - "デジタル インク, 収集" + - "DrawingAttributes プロパティ" + - "インク, 収集" + - "InkCanvas 要素" + - "プロパティ, DefaultDrawingAttributes" + - "プロパティ, DrawingAttributes" +ms.assetid: 66a3129d-9577-43eb-acbd-56c147282016 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# インクの収集 +[Windows Presentation Foundation](../../../../docs/framework/wpf/index.md) プラットフォームでは、その機能の中核としてデジタル インクが収集されます。 ここでは、[!INCLUDE[TLA#tla_wpf](../../../../includes/tlasharptla-wpf-md.md)] でのインクの収集方法について説明します。 + +## 必要条件 + 以降に示す例を使用するには、まず [!INCLUDE[TLA#tla_visualstu2005](../../../../includes/tlasharptla-visualstu2005-md.md)] と [!INCLUDE[TLA2#tla_winfxsdk](../../../../includes/tla2sharptla-winfxsdk-md.md)] をインストールする必要があります。 また、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] に対応するアプリケーションの作成方法も理解しておく必要があります。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の概要については、「[チュートリアル: WPF の概要](../../../../docs/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application.md)」を参照してください。 + +## InkCanvas 要素の使用 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] で最も簡単にインクを収集する方法は、 要素を使用することです。 要素は、[!INCLUDE[TLA2#tla_tpclssdk](../../../../includes/tla2sharptla-tpclssdk-md.md)] 以前のバージョンの オブジェクトに似ています。 + + 要素は、インク入力を受け取って表示するために使用します。 インクは一般的に、スタイラスを使用して入力します。スタイラスはデジタイザーとの対話により、インク ストロークを生成します。 また、スタイラスの代わりにマウスを使用することもできます。 生成されたストロークは オブジェクトとして表され、プログラムとユーザー入力の両方によって操作できます。 を使用すると、ユーザーは既存の を選択、変更、または削除することができます。 + + XAML を使用して、`InkCanvas` 要素をツリーに追加するだけで簡単にインク収集を設定できます。 次の例では、[!INCLUDE[TLA#tla_visualstu2005](../../../../includes/tlasharptla-visualstu2005-md.md)] で作成された既定の [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロジェクトに を追加します。 + + [!code-xml[DigitalInkTopics#6](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DigitalInkTopics/CSharp/Window2.xaml#6)] + + `InkCanvas` 要素には子要素を含めることもできます。これにより、ほとんどすべての XAML 要素にインク注釈機能を追加できます。 たとえば、インク処理機能をテキスト要素に追加するには、単にその要素を の子にします。 + + [!code-xml[DigitalInkTopics#5](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DigitalInkTopics/CSharp/Window2.xaml#5)] + + インクを使用したイメージのマークアップのサポートも、簡単に追加できます。 + + [!code-xml[DigitalInkTopics#7](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DigitalInkTopics/CSharp/Window2.xaml#7)] + +### InkCollection モード + は、 プロパティを使用してさまざまな入力モードをサポートします。 + +### インクの操作 + は、さまざまなインク編集操作をサポートしています。 たとえば、 は、ペンの消しゴム ツールによる消去をサポートします。この機能を要素に追加するために、追加コードは必要ありません。 + +#### Selection + 選択モードは、 プロパティを **Select** に設定するだけで、簡単に設定できます。 次のコードは、 の値に基づいて編集モードを設定します。 + + [!code-csharp[DigitalInkTopics#8](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DigitalInkTopics/CSharp/Window1.xaml.cs#8)] + [!code-vb[DigitalInkTopics#8](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DigitalInkTopics/VisualBasic/Window1.xaml.vb#8)] + +#### DrawingAttributes + プロパティは、インク ストロークの外観を変更するために使用します。 たとえば、 メンバーは、描画される の色を設定します。 選択されたストロークの色を赤に変更する方法を次の例に示します。 + + [!code-csharp[DigitalInkTopics#9](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DigitalInkTopics/CSharp/Window1.xaml.cs#9)] + [!code-vb[DigitalInkTopics#9](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DigitalInkTopics/VisualBasic/Window1.xaml.vb#9)] + +### DefaultDrawingAttributes + プロパティを使用すると、 で作成されるストロークの高さ、幅、色などのプロパティにアクセスできます。 を変更すると、それ以降に に入力されるストロークはすべて新しいプロパティ値を使用して描画されます。 + + 分離コード ファイルでの の変更に加えて、XAML 構文を使用した プロパティの指定もできます。 プロパティを設定する方法を次の XAML コードに示します。 このコードを使用するには、Visual Studio 2005 で "HelloInkCanvas" という新しい [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロジェクトを作成します。 Window1.xaml ファイルのコードを次のコードに置き換えます。 + + [!code-xml[HelloInkCanvas#1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/HelloInkCanvas/CSharp/Window1.xaml#1)] + + 次に、以下のボタン イベント ハンドラーを、分離コード ファイルの Window1 クラス内に追加します。 + + [!code-csharp[HelloInkCanvas#2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/HelloInkCanvas/CSharp/Window1.xaml.cs#2)] + + このコードのコピー後に、Microsoft Visual Studio 2005 で F5 キーを押し、デバッガーでプログラムを実行します。 + + によってボタンが の上に配置されることに注目してください。 ボタンの上でインク処理を実行しようとすると、 によってインクがボタンの背後で収集および描画されます。 これは、ボタンが の子ではなく兄弟であるためです。 また、ボタンは z オーダーの上位に位置するため、インクはその背後で描画されます。 + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/wpf/advanced/collection-type-dependency-properties.md b/docs/framework/wpf/advanced/collection-type-dependency-properties.md new file mode 100644 index 00000000000..6edb2f93b31 --- /dev/null +++ b/docs/framework/wpf/advanced/collection-type-dependency-properties.md @@ -0,0 +1,71 @@ +--- +title: "コレクション型依存関係プロパティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コレクション型プロパティ" + - "依存関係プロパティ" + - "プロパティ, コレクション型" + - "プロパティ, 依存関係" +ms.assetid: 99f96a42-3ab7-4f64-a16b-2e10d654e97c +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 7 +--- +# コレクション型依存関係プロパティ +ここでは、プロパティの型がコレクション型である場合に[依存関係プロパティ](GTMT)を実装する方法についての、ガイダンスと推奨されるパターンを示します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## コレクション型依存関係プロパティの実装 + 一般に、依存関係プロパティの場合、使用する実装パターンは、[!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] プロパティ ラッパーを定義するものです。この場合、そのプロパティは、フィールドや他の構造ではなく 識別子によってサポートされます。 コレクション型プロパティを実装するときは、これと同じパターンに従います。 ただし、コレクションに含まれる型それ自体が または の派生クラスである場合は常に、コレクション型プロパティを使用することでパターンは複雑になります。 + + +## 既定値を上回るコレクションの初期化 + 依存関係プロパティを作成するときは、初期フィールド値としてプロパティの既定値を指定しません。 代わりに、依存関係プロパティのメタデータを使用して既定値を指定します。 プロパティが参照型の場合、依存関係プロパティのメタデータで指定する既定値はインスタンスごとの既定値ではありません。その型のすべてのインスタンスに適用される既定値です。 したがって、コレクション プロパティ メタデータによって定義される単一の静的コレクションを、その型の新しく作成されるインスタンスの作業既定値として使用しないように注意してください。 代わりに、クラス コンストラクターのロジックの一部として、コレクションの値に一意 \(インスタンス\) のコレクションを意図的に設定する必要があります。 それ以外の場合は、意図しないシングルトン クラスを作成することになります。 + + 例を次に示します。 この例は、`Aquarium` クラスの定義を示しています。 このクラスで定義されているコレクション型依存関係プロパティ `AquariumObjects` は、 型の制約でジェネリック 型を使用します。 依存関係プロパティに対する の呼び出しでは、メタデータが、既定値を新しいジェネリック に設定します。 + + [!code-csharp[PropertiesOvwSupport#CollectionProblemDefinition](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page4.xaml.cs#collectionproblemdefinition)] + [!code-vb[PropertiesOvwSupport#CollectionProblemDefinition](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/PropertiesOvwSupport/visualbasic/page4.xaml.vb#collectionproblemdefinition)] +[!code-csharp[PropertiesOvwSupport#CollectionProblemEndB](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page4.xaml.cs#collectionproblemendb)] +[!code-vb[PropertiesOvwSupport#CollectionProblemEndB](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/PropertiesOvwSupport/visualbasic/page4.xaml.vb#collectionproblemendb)] + + ただし、コードをこのままにすると、単一のリストの既定値が `Aquarium` のすべてのインスタンスで共有されます。 次のテスト コードは、2 つの異なる `Aquarium` インスタンスをインスタンス化し、それぞれに単一の異なる `Fish` を追加する方法を示していますが、これを実行すると、想定外の結果になります。 + + [!code-csharp[PropertiesOvwSupport#CollectionProblemTestCode](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page4.xaml.cs#collectionproblemtestcode)] + [!code-vb[PropertiesOvwSupport#CollectionProblemTestCode](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/PropertiesOvwSupport/visualbasic/page4.xaml.vb#collectionproblemtestcode)] + + 各コレクションのカウントが 1 になるのではなく、いずれのコレクションもカウントが 2 になります。 これは、各 `Aquarium` は `Fish` を既定値のコレクションに追加しますが、その基になっているのはメタデータでの単一のコンストラクター呼び出しであり、したがってすべてのインスタンス間で共有されるためです。 これは望ましい状況ではありません。 + + この問題を回避するには、クラス コンストラクターの呼び出しの一部として、コレクションの依存関係プロパティの値を一意のインスタンスにリセットする必要があります。 プロパティは読み取り専用の依存関係プロパティであるため、クラス内だけでアクセスできる を使用し、 メソッドを使用して設定します。 + + [!code-csharp[PropertiesOvwSupport#CollectionProblemCtor](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page4.xaml.cs#collectionproblemctor)] + [!code-vb[PropertiesOvwSupport#CollectionProblemCtor](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/PropertiesOvwSupport/visualbasic/page4.xaml.vb#collectionproblemctor)] + + 再びテスト コードを実行すると、結果は期待したものに近くなり、各 `Aquarium` が独自の一意のコレクションをサポートします。 + + コレクション プロパティを読み取り\/書き込みにすると、このパターンには若干のバリエーションが発生します。 この場合は、コンストラクターからパブリック set アクセサーを呼び出して初期化を行うことができ、パブリック 識別子を使用して、set ラッパー内でキーなしのシグネチャの を呼び出します。 + +## コレクション プロパティからのバインディング値変更の報告 + それ自体が依存関係プロパティであるコレクション プロパティは、変更をサブプロパティに自動的には報告しません。 コレクションにバインディングを作成している場合は、これによってバインディングが変更を報告しないことがあり、一部のデータ バインディング シナリオが無効になります。 ただし、コレクション型として を使用している場合は、コレクションに含まれる要素に対するサブプロパティの変更は正しく報告され、バインディングは意図したとおりに動作します。 + + 依存関係オブジェクト コレクションでサブプロパティのバインディングを有効にするには、 型としてコレクション プロパティを作成し、そのコレクションの型制約を 派生クラスに指定します。 + +## 参照 + + [WPF における XAML とカスタム クラス](../../../../docs/framework/wpf/advanced/xaml-and-custom-classes-for-wpf.md) + [データ バインドの概要](../../../../docs/framework/wpf/data/data-binding-overview.md) + [依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md) + [カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md) + [依存関係プロパティのメタデータ](../../../../docs/framework/wpf/advanced/dependency-property-metadata.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/colorconvertedbitmap-markup-extension.md b/docs/framework/wpf/advanced/colorconvertedbitmap-markup-extension.md new file mode 100644 index 00000000000..89e5fbf490e --- /dev/null +++ b/docs/framework/wpf/advanced/colorconvertedbitmap-markup-extension.md @@ -0,0 +1,49 @@ +--- +title: "ColorConvertedBitmap のマークアップ拡張機能 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ColorConvertedBitmap マークアップ拡張機能" + - "XAML, ColorConvertedBitmap マークアップ拡張機能" +ms.assetid: 18321c18-c898-4470-93fa-a702b47770c1 +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# ColorConvertedBitmap のマークアップ拡張機能 +埋め込まれたプロファイルのないビットマップ ソースを指定する方法を提供します。 カラー コンテキスト\/プロファイルは、イメージ リソース [!INCLUDE[TLA2#tla_uri](../../../../includes/tla2sharptla-uri-md.md)] と同じように [!INCLUDE[TLA2#tla_uri](../../../../includes/tla2sharptla-uri-md.md)] で指定されます。 + +## XAML 属性の使用方法 + +``` + +``` + +## XAML 値 + +||| +|-|-| +|`imageSource`|プロファイルになっていないビットマップの [!INCLUDE[TLA2#tla_uri](../../../../includes/tla2sharptla-uri-md.md)]。| +|`sourceIIC`|ソース プロファイル構成の [!INCLUDE[TLA2#tla_uri](../../../../includes/tla2sharptla-uri-md.md)]。| +|`destinationIIC`|変換先プロファイル構成の [!INCLUDE[TLA2#tla_uri](../../../../includes/tla2sharptla-uri-md.md)]。| + +## 解説 + このマークアップ拡張機能は、 などの関連するイメージ ソース プロパティ値のセットを塗りつぶすためのものです。 + + 属性構文は、このマークアップ拡張機能で使用される最も一般的な構文です。 `ColorConvertedBitmap` \(または `ColorConvertedBitmapExtension`\) は、プロパティ要素構文では使用できません。これは、値は初期コンストラクターの値としてのみ設定でき、拡張機能の識別子に従う文字列であるためです。 + + `ColorConvertedBitmap` はマークアップ拡張機能です。 一般にマークアップ拡張機能を実装するのは、属性値をリテラル値やハンドラー名以外にエスケープする要件が存在し、その要件の適用範囲がグローバルで、特定の型やプロパティに型コンバーターを適用するだけにとどまらない場合です。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] のすべてのマークアップ拡張機能では、それぞれの属性構文で { と } の 2 つの記号を使用します。これは規約であり、これに従って [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] プロセッサは、マークアップ拡張機能で属性を処理する必要があることを認識します。 詳細については、「[マークアップ拡張機能と WPF XAML](../../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md)」を参照してください。 + +## 参照 + + [マークアップ拡張機能と WPF XAML](../../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md) + [イメージングの概要](../../../../docs/framework/wpf/graphics-multimedia/imaging-overview.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/commanding-overview.md b/docs/framework/wpf/advanced/commanding-overview.md new file mode 100644 index 00000000000..2bca0bc6cee --- /dev/null +++ b/docs/framework/wpf/advanced/commanding-overview.md @@ -0,0 +1,200 @@ +--- +title: "コマンド実行の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クラス, CommandBinding" + - "コマンド ライブラリ" + - "CommandBindings" + - "コマンド実行" + - "CommandManager" + - "コマンド, 定義" + - "ICommandSource インターフェイス" + - "インターフェイス, ICommandSource" +ms.assetid: bc208dfe-367d-426a-99de-52b7e7511e81 +caps.latest.revision: 35 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 34 +--- +# コマンド実行の概要 + コマンド実行は、デバイス入力よりも意味を持つレベルで入力を処理する [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の入力機構です。 コマンドの例としては、多くのアプリケーションで目にする **\[コピー\]**、**\[切り取り\]**、**\[貼り付け\]** などの操作があります。 + + ここでは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] にはどんなコマンドがあるか、コマンド実行モデルに含まれるクラス、およびアプリケーションでコマンドを使用および作成する方法について説明します。 + + このトピックは、次のセクションで構成されています。 + +- [コマンドとは](#commands_at_10000_feet) + +- [WPF の簡単なコマンドの例](#simple_command) + +- [WPF のコマンド実行の 4 つの主要な概念](#Four_main_Concepts) + +- [コマンド ライブラリ](#Command_Library) + +- [カスタム コマンドの作成](#creating_commands) + + +## コマンドとは + コマンドにはいくつかの目的があります。 最初の目的は、コマンドを呼び出すセマンティクスとオブジェクトを、コマンドを実行するロジックから分離することです。 これにより、複数のさまざまなソースで同じコマンド ロジックを呼び出せるようになり、コマンド ロジックをさまざまな対象用にカスタマイズできるようになります。 たとえば、多くのアプリケーションで目にする **\[コピー\]**、**\[切り取り\]**、**\[貼り付け\]** の編集操作は、コマンドを使用して実装されていれば、複数の異なるユーザー アクションから呼び出すことができます。 アプリケーションでは、ボタンのクリック、メニューの項目の選択、または Ctrl \+ X などのショートカット キーの使用によって、選択したオブジェクトまたはテキストを切り取ることができます。 コマンドを使用すると、各種類のユーザー アクションを同じロジックにバインドできます。 + + コマンドには、アクションが使用可能かどうかを示すという目的もあります。 オブジェクトまたはテキストの切り取りの例を続けると、アクションは何かが選択されているときにのみ効果があります。 ユーザーが何も選択せずにオブジェクトまたはテキストを切り取ろうとしても、何も行われません。 これをユーザーに示すために、多くのアプリケーションでは、ボタンとメニュー項目を無効にして、アクションを実行できるかどうかがわかるようにしています。 コマンドは、 メソッドを実装することで、アクションが使用可能かどうかを示すことができます。 ボタンでは、 イベントにサブスクライブし、 が `false` を返す場合に無効にし、 が `true` を返す場合に有効にすることができます。 + + コマンドのセマンティクスはアプリケーションおよびクラスの間で一貫していますが、アクションのロジックは実行される特定のオブジェクトに固有です。 Ctrl \+ X というショートカット キーは、テキスト クラス、イメージ クラス、および Web ブラウザーで **\[切り取り\]** コマンドを呼び出しますが、**\[切り取り\]** 操作を実行するための実際のロジックは、切り取りを実行するアプリケーションによって定義されます。 は、クライアントによるロジックの実装を可能にします。 テキスト オブジェクトでは選択されたテキストをクリップボードに切り取る一方で、イメージ オブジェクトでは選択されたイメージを切り取ることができます。 アプリケーションは、 イベントを処理する場合に、コマンドのターゲットにアクセスし、ターゲットの種類に応じて適切なアクションを実行できます。 + + +## WPF の簡単なコマンドの例 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] でコマンドを使用する最も簡単な方法は、コマンド ライブラリ クラスのいずれかから定義済みの を使用すること、コマンドの処理をネイティブにサポートしているコントロールを使用すること、およびコマンドの呼び出しをネイティブにサポートしているコントロールを使用することです。 コマンドは、 クラスの定義済みコマンドの 1 つです。 コントロールには、 コマンドを処理するためのロジックが組み込まれており、 クラスは、コマンドの呼び出しをネイティブにサポートしています。 + + にキーボード フォーカスがある場合に、 がクリックされると コマンドを呼び出すように を設定する方法を次の例に示します。 + + [!code-xml[CommandingOverviewSnippets#CommandingOverviewSimpleCommand](../../../../samples/snippets/csharp/VS_Snippets_Wpf/CommandingOverviewSnippets/CSharp/Window1.xaml#commandingoverviewsimplecommand)] + + [!code-csharp[CommandingOverviewSnippets#CommandingOverviewCommandTargetCodeBehind](../../../../samples/snippets/csharp/VS_Snippets_Wpf/CommandingOverviewSnippets/CSharp/Window1.xaml.cs#commandingoverviewcommandtargetcodebehind)] + [!code-vb[CommandingOverviewSnippets#CommandingOverviewCommandTargetCodeBehind](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/CommandingOverviewSnippets/visualbasic/window1.xaml.vb#commandingoverviewcommandtargetcodebehind)] + + +## WPF のコマンド実行の 4 つの主要な概念 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のルーティング コマンド モデルは、コマンド、コマンド ソース、コマンドの対象、およびコマンド バインディングの 4 つの主要な概念に分けることができます。 + +- *コマンド*は、実行されるアクションです。 + +- *コマンド ソース*は、コマンドを呼び出すオブジェクトです。 + +- *コマンドの対象*は、コマンドが実行されているオブジェクトです。 + +- *コマンド バインディング*は、コマンド ロジックをコマンドに割り当てるオブジェクトです。 + + 前の例では、 コマンドがコマンド、 がコマンド ソース、 がコマンドの対象であり、コマンド バインディングは コントロールによって提供されています。 ただし、 が、コマンドの対象クラスであるコントロールによって必ず提供されるとは限らないことに注意してください。 アプリケーション開発者が を作成する必要がある場合や、 をコマンドの対象の親に割り当てる場合も多くあります。 + + +### コマンド + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のコマンドを作成するには、 インターフェイスを実装します。 は、 および という 2 つのメソッドと、 イベントを公開します。 はコマンドに関連するアクションを実行します。 は現在のコマンドの対象でコマンドを実行できるかどうかを決定します。 は、コマンド実行操作を集中管理するコマンド マネージャーが、発生済みだがコマンド バインディングによってまだ実行されていないコマンドを無効にする可能性がある変更をコマンド ソース内で検出した場合に発生します。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] での の実装は クラスです。この概要ではこのクラスを中心に説明しています。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の主な入力ソースは、マウス、キーボード、インク、およびルーティング コマンドです。 よりデバイス指向の入力では、 を使用して、入力イベントが発生したアプリケーション ページ内のオブジェクトを通知します。 も同じです。 メソッドと メソッドには、コマンドのアプリケーション ロジックは含まれませんが、 を持つオブジェクトを検出するまで、要素ツリー内をトンネリングおよびバブリングするルーティング イベントを発生させます。 にはこれらのイベントのハンドラーが含まれ、このハンドラーがコマンドを実行するハンドラーとなります。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 内でのイベント ルーティングの詳細については、「[ルーティング イベントの概要](../../../../docs/framework/wpf/advanced/routed-events-overview.md)」を参照してください。 + + メソッドは、コマンドの対象で イベントと イベントを発生させます。 メソッドは、コマンドの対象で イベントと イベントを発生させます。 これらのイベントは、その特定のコマンドの を持つオブジェクトを検出するまで、要素ツリー内をトンネリングおよびバブリングします。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] は、複数のクラスに散在する一連の一般的なルーティング コマンドである 、および を提供します。 これらのクラスは、 オブジェクトのみで構成され、コマンドの実装ロジックは含まれません。 実装ロジックは、コマンドが実行されているオブジェクトに含まれます。 + + +### コマンド ソース + コマンド ソースは、コマンドを呼び出すオブジェクトです。 コマンド ソースには、 などがあります。 + + 通常 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のコマンド ソースは、 インターフェイスを実装します。 + + は、、および の 3 つのプロパティを公開します。 + +- は、コマンド ソースが呼び出されると実行されるコマンドです。 + +- は、コマンドが実行される対象オブジェクトです。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、 プロパティは、 の場合にのみ適用されることに注意してください。 が設定されていても、対応するコマンドが でない場合は、コマンドの対象は無視されます。 が設定されていない場合は、キーボード フォーカスを持つ要素がコマンドの対象になります。 + +- は、コマンドを実装するハンドラーに情報を渡すために使用されるユーザー定義のデータ型です。 + + を実装する [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のクラスには、、および があります。 、および は、クリックされるとコマンドを呼び出し、 は、それに関連付けられている が実行されるとコマンドを呼び出します。 + + 内の を、 コマンドのコマンド ソースとして使用する方法を次の例に示します。 + + [!code-xml[CommandingOverviewSnippets#CommandingOverviewCmdSourceXAML](../../../../samples/snippets/csharp/VS_Snippets_Wpf/CommandingOverviewSnippets/CSharp/Window1.xaml#commandingoverviewcmdsourcexaml)] + + [!code-csharp[CommandingOverviewSnippets#CommandingOverviewCmdSource](../../../../samples/snippets/csharp/VS_Snippets_Wpf/CommandingOverviewSnippets/CSharp/Window1.xaml.cs#commandingoverviewcmdsource)] + [!code-vb[CommandingOverviewSnippets#CommandingOverviewCmdSource](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/CommandingOverviewSnippets/visualbasic/window1.xaml.vb#commandingoverviewcmdsource)] + + 通常、コマンド ソースは、 イベントをリッスンします。 このイベントは、現在のコマンドの対象でコマンドを実行できるかどうかが変更された可能性があることをコマンド ソースに通知します。 コマンド ソースは、 メソッドを使用して の現在のステータスを照会できます。 コマンドが実行できない場合は、コマンド ソースそのものが無効になります。 コマンドを実行できない場合に灰色表示される は、この一例です。 + + は、コマンド ソースとして使用できます。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の入力ジェスチャには、 の 2 種類があります。 は Ctrl \+ C などのキーボード ショートカットと考えることができます。 は、と、 のセットで構成されています。 は、 と、オプションの のセットで構成されています。 + + をコマンド ソースとして機能させるには、コマンドに関連付ける必要があります。 これを実現するには、いくつかの方法があります。 1 つは、 を使用する方法です。 + + の間に を作成する方法を次の例に示します。 + + [!code-xml[CommandingOverviewSnippets#CommandingOverviewXAMLKeyBinding](../../../../samples/snippets/csharp/VS_Snippets_Wpf/CommandingOverviewSnippets/CSharp/Window1.xaml#commandingoverviewxamlkeybinding)] + + [!code-csharp[CommandingOverviewSnippets#CommandingOverviewKeyBinding](../../../../samples/snippets/csharp/VS_Snippets_Wpf/CommandingOverviewSnippets/CSharp/Window1.xaml.cs#commandingoverviewkeybinding)] + [!code-vb[CommandingOverviewSnippets#CommandingOverviewKeyBinding](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/CommandingOverviewSnippets/visualbasic/window1.xaml.vb#commandingoverviewkeybinding)] + + に関連付ける別の方法は、 に追加する方法です。 + + に追加する方法を次の例に示します。 + + [!code-csharp[CommandingOverviewSnippets#CommandingOverviewKeyGestureOnCmd](../../../../samples/snippets/csharp/VS_Snippets_Wpf/CommandingOverviewSnippets/CSharp/Window1.xaml.cs#commandingoverviewkeygestureoncmd)] + [!code-vb[CommandingOverviewSnippets#CommandingOverviewKeyGestureOnCmd](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/CommandingOverviewSnippets/visualbasic/window1.xaml.vb#commandingoverviewkeygestureoncmd)] + + +### CommandBinding + は、コマンドを実装するイベント ハンドラーにコマンドを関連付けます。 + + クラスには、 プロパティと、、および イベントが含まれます。 + + は、 が関連付けられているコマンドです。 イベントと イベントに割り当てられたイベント ハンドラーは、コマンド ロジックを実装します。 イベントと イベントに割り当てられたイベント ハンドラーは、コマンドが現在のコマンドの対象で実行可能かどうかを判断します。 + + アプリケーションのルート を作成する方法を次の例に示します。 は、 コマンドを ハンドラーおよび ハンドラーに関連付けます。 + + [!code-xml[commandwithhandler#CommandHandlerCommandBinding](../../../../samples/snippets/csharp/VS_Snippets_Wpf/commandWithHandler/CSharp/Window1.xaml#commandhandlercommandbinding)] + + [!code-csharp[CommandHandlerProcedural#CommandHandlerBindingInit](../../../../samples/snippets/csharp/VS_Snippets_Wpf/CommandHandlerProcedural/CSharp/Window1.xaml.cs#commandhandlerbindinginit)] + [!code-vb[CommandHandlerProcedural#CommandHandlerBindingInit](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/CommandHandlerProcedural/visualbasic/window1.xaml.vb#commandhandlerbindinginit)] + + 次に、 および を作成します。 は、コマンドが実行されたことを知らせる文字列を表示する を開きます。 は、 プロパティを `true` に設定します。 + + [!code-csharp[commandwithhandler#CommandHandlerExecutedHandler](../../../../samples/snippets/csharp/VS_Snippets_Wpf/commandWithHandler/CSharp/Window1.xaml.cs#commandhandlerexecutedhandler)] + [!code-vb[commandwithhandler#CommandHandlerExecutedHandler](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/commandWithHandler/VisualBasic/Window1.xaml.vb#commandhandlerexecutedhandler)] + + [!code-csharp[commandwithhandler#CommandHandlerCanExecuteHandler](../../../../samples/snippets/csharp/VS_Snippets_Wpf/commandWithHandler/CSharp/Window1.xaml.cs#commandhandlercanexecutehandler)] + [!code-vb[commandwithhandler#CommandHandlerCanExecuteHandler](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/commandWithHandler/VisualBasic/Window1.xaml.vb#commandhandlercanexecutehandler)] + + は、アプリケーションまたはコントロールのルート などの特定のオブジェクトに割り当てられます。 が割り当てられたオブジェクトは、バインディングのスコープを定義します。 たとえば、コマンドの対象の先祖に割り当てられた には、 イベントによって到達できますが、コマンドの対象の子孫に割り当てられた には到達できません。 これは、イベントを発生させるオブジェクトから がトンネリングおよびバブリングするというしくみが直接影響するからです。 + + 場合によっては、 は、 クラスに対する の各コマンドのように、コマンドの対象自体に割り当てられます。 ただし、 は、特に同じ を複数のコマンドの対象で使用できる場合には、メイン やアプリケーション オブジェクトなど、コマンドの対象の先祖に割り当てる方が便利な場合がよくあります。 これらは、コマンド実行インフラストラクチャの作成時に検討される設計上の決定事項です。 + + +### コマンドの対象 + コマンドの対象は、コマンドが実行される要素です。 のコマンドの対象は、 および のルーティングが開始される要素です。 前に述べたように、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、 プロパティは、 の場合にのみ適用されます。 が設定されていても、対応するコマンドが でない場合は、コマンドの対象は無視されます。 + + コマンド ソースは、コマンドの対象を明示的に設定できます。 コマンドの対象が定義されていない場合は、キーボード フォーカスを持つ要素がコマンドの対象として使用されます。 キーボード フォーカスを持つ要素をコマンドの対象として使用する利点の 1 つは、アプリケーション開発者が同じコマンド ソースを使用して、コマンドの対象を追跡せずにコマンドを複数の対象で呼び出すことができることです。 たとえば、 コントロールと コントロールを持つアプリケーションで **\[貼り付け\]** コマンドを呼び出した場合、その対象は、キーボード フォーカスのあるコントロールに応じて または にすることができます。 + + マークアップと分離コードでコマンドの対象を明示的に設定する方法を次の例に示します。 + + [!code-xml[CommandingOverviewSnippets#CommandingOverviewXAMLCommandTarget](../../../../samples/snippets/csharp/VS_Snippets_Wpf/CommandingOverviewSnippets/CSharp/Window1.xaml#commandingoverviewxamlcommandtarget)] + + [!code-csharp[CommandingOverviewSnippets#CommandingOverviewCommandTargetCodeBehind](../../../../samples/snippets/csharp/VS_Snippets_Wpf/CommandingOverviewSnippets/CSharp/Window1.xaml.cs#commandingoverviewcommandtargetcodebehind)] + [!code-vb[CommandingOverviewSnippets#CommandingOverviewCommandTargetCodeBehind](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/CommandingOverviewSnippets/visualbasic/window1.xaml.vb#commandingoverviewcommandtargetcodebehind)] + + +### CommandManager + は、多数のコマンド関連機能を提供します。 、および の各イベント ハンドラーを特定の要素に対して追加および削除するための一連の静的メソッドを提供します。 オブジェクトと オブジェクトを特定のクラスに登録する手段を提供します。 また、 は、 イベントを介して、 イベントを発生させるタイミングをコマンドに通知する方法も提供します。 + + メソッドは、 イベントを強制的に発生させます。 これは、コマンドを無効または有効にする必要がある場合に役立ちますが、 が認識しない場合には使用しません。 + + +## コマンド ライブラリ + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] は、一連の定義済みコマンドを提供します。 コマンド ライブラリは、、および の各クラスから構成されます。 これらのクラスは、 などのコマンドを提供します。 + + これらのコマンドの多くには、一連の既定の入力バインディングが含まれます。 たとえば、アプリケーションでコピー コマンドを処理するように指定した場合、キーボード バインディング "Ctrl\+C" が自動的に取得されます。[!INCLUDE[TLA2#tla_tpc](../../../../includes/tla2sharptla-tpc-md.md)] ペン ジェスチャや音声情報など、他の入力デバイスのバインディングも取得されます。 + + [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] を使用してさまざまなコマンド ライブラリ内のコマンドを参照する場合、通常は、静的コマンド プロパティを公開するライブラリ クラスのクラス名を省略できます。 一般に、コマンド名は文字列としてあいまいではなく、所有する型は、コマンドを論理的にグループ化するために存在し、あいまいさを排除するために必要なわけではありません。 たとえば、冗長な `Command="ApplicationCommands.Cut"` ではなく、`Command="Cut"` と指定できます。 これは、コマンドの [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] プロセッサに組み込まれている便利なメカニズムであり \(もっと正確に言えば、これは の型コンバーターの動作です\)、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] プロセッサが読み込み時に参照します。 + + +## カスタム コマンドの作成 + コマンド ライブラリ クラス内のコマンドが目的に合っていない場合は、独自のコマンドを作成できます。 カスタム コマンドを作成するには 2 とおりの方法があります。 1 つは、最初から作成する方法で インターフェイスを実装します。 もう 1 つは、 または を作成する方法で、こちらの方が一般的です。 + + カスタム の作成の例については、[カスタム RoutedCommand の作成のサンプル](http://go.microsoft.com/fwlink/?LinkID=159980)を参照してください。 + +## 参照 + + + + + [入力の概要](../../../../docs/framework/wpf/advanced/input-overview.md) + [ルーティング イベントの概要](../../../../docs/framework/wpf/advanced/routed-events-overview.md) + [ICommandSource を実装する](../../../../docs/framework/wpf/advanced/how-to-implement-icommandsource.md) + [How to: Add a Command to a MenuItem](http://msdn.microsoft.com/ja-jp/013d68a0-5373-4a68-bd91-5de574307370) + [カスタム RoutedCommand の作成のサンプル](http://go.microsoft.com/fwlink/?LinkID=159980) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/componentresourcekey-markup-extension.md b/docs/framework/wpf/advanced/componentresourcekey-markup-extension.md new file mode 100644 index 00000000000..580eeeb6b0a --- /dev/null +++ b/docs/framework/wpf/advanced/componentresourcekey-markup-extension.md @@ -0,0 +1,89 @@ +--- +title: "ComponentResourceKey マークアップ拡張機能 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "ComponentResourceKey" + - "ComponentResourceKeyExtension" +helpviewer_keywords: + - "ComponentResourceKey マークアップ拡張機能" + - "XAML, ComponentResourceKey マークアップ拡張機能" +ms.assetid: d6bcdbe6-61b3-40a7-b381-4e02185b5a85 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# ComponentResourceKey マークアップ拡張機能 +外部アセンブリから読み込まれるリソースのキーを定義および参照します。 これにより、アセンブリ内またはクラスで明示的にリソース ディクショナリを指定する代わりに、リソース ルックアップによってアセンブリ内の対象の型を指定することが可能になります。 + +## XAML 属性の使用方法 \(キー設定、コンパクト\) + +``` + +``` + +## XAML 属性の使用方法 \(キー設定、詳細\) + +``` + +``` + +## XAML 属性の使用方法 \(リソース要求、コンパクト\) + +``` + +``` + +## XAML 属性の使用方法 \(リソース要求、詳細\) + +``` + +``` + +## XAML 値 + +||| +|-|-| +|`targetTypeName`|リソース アセンブリ内で定義されているパブリック[!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] 型の名前。| +|`targetID`|リソースのキー。 リソースを検索する場合、`targetID` はそのリソースの [x:Key ディレクティブ](../../../../docs/framework/xaml-services/x-key-directive.md)と類似しています。| + +## 解説 + 上記の使用方法に示すように、{`ComponentResourceKey`} マークアップ拡張機能は次の 2 か所で使用されています。 + +- コントロールの作成者が指定したテーマ リソース ディクショナリ内のキーの定義 + +- アセンブリからテーマ リソースへのアクセス \(コントロールに対してテンプレートの再設定を行っているが、コントロールのテーマによって指定されたリソースからのプロパティ値を使用する場合\) + + テーマからのコンポーネント リソースを参照するには、通常 `{StaticResource}` ではなく `{DynamicResource}` を使用することをお勧めします。 これは使用方法で示されています。 テーマ自体はユーザーが変更できるため、`{DynamicResource}` が推奨されます。 テーマのサポートに関するコントロールの作成者の意図に最も合ったコンポーネント リソースが必要な場合は、コンポーネント リソース参照を動的にできるようにする必要もあります。 + + は、そのリソースが実際に定義されている対象アセンブリに存在している型を識別します。 `ComponentResourceKey` は、 がどこで定義されているかが正確にわかっていない場合でも定義して使用できますが、最終的には、参照されているアセンブリによって型を解決する必要があります。 + + の一般的な使用方法は、後にクラスのメンバーとして公開するキーを定義することです。 この方法で使用する場合は、マークアップ拡張機能ではなく、 クラス コンストラクターを使用します。 詳細については、 または「[コントロールの作成の概要](../../../../docs/framework/wpf/controls/control-authoring-overview.md)」の「テーマ リソース用のキーの定義と参照」セクションを参照してください。 + + キーを確立するときとキーを持つリソースを参照するときには、`ComponentResourceKey` マークアップ拡張機能には一般に属性構文が使用されます。 + + 前に示したコンパクトな構文は、 コンストラクター シグネチャおよびマークアップ拡張機能の位置指定パラメーターの使用に依存します。 `targetTypeName` と `targetID` を設定する順序が重要です。 詳細な構文は、既定のコンストラクターである に依存し、オブジェクト要素の実際の属性構文と同様の方法で を設定します。 詳細な構文では、各プロパティを設定する順序は重要ではありません。 これら 2 つの方法 \(コンパクトと詳細\) の関係および機構の詳細については、「[マークアップ拡張機能と WPF XAML](../../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md)」を参照してください。 + + 技術的には、`targetID` の値は任意のオブジェクトにすることができ、文字列にする必要はありません。 ただし、WPF での最も一般的な使用方法は、`targetID` 値を文字列であるフォームに合わせることです。このような文字列は、[XamlName の文法](../../../../docs/framework/xaml-services/xamlname-grammar.md)で有効です。 + + `ComponentResourceKey` は、オブジェクト要素構文で使用できます。 この場合、拡張機能を正しく初期化するには、 プロパティと プロパティの両方の値を指定する必要があります。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] リーダー実装では、このマークアップ拡張機能の処理は、 クラスによって定義されます。 + + `ComponentResourceKey` はマークアップ拡張機能です。 一般にマークアップ拡張機能を実装するのは、属性値をリテラル値やハンドラー名以外にエスケープする要件が存在し、その要件の適用範囲がグローバルで、特定の型やプロパティに型コンバーターを適用するだけにとどまらない場合です。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] のすべてのマークアップ拡張機能では、それぞれの属性構文で { と } の 2 つの記号を使用します。これは規約であり、これに従って [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] プロセッサは、マークアップ拡張機能で属性を処理する必要があることを認識します。 詳細については、「[マークアップ拡張機能と WPF XAML](../../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md)」を参照してください。 + +## 参照 + + + [コントロールの作成の概要](../../../../docs/framework/wpf/controls/control-authoring-overview.md) + [XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) + [マークアップ拡張機能と WPF XAML](../../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/creating-an-ink-input-control.md b/docs/framework/wpf/advanced/creating-an-ink-input-control.md new file mode 100644 index 00000000000..35027695740 --- /dev/null +++ b/docs/framework/wpf/advanced/creating-an-ink-input-control.md @@ -0,0 +1,110 @@ +--- +title: "インク入力コントロールの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "収集 (インク ストロークを)" + - "DynamicRenderer オブジェクト" + - "インク入力コントロール" + - "インク ストローク, 収集" + - "インク ストローク, 管理" + - "インク, 描画" + - "入力 (マウスから), 受け入れ" + - "管理 (インク ストロークを)" + - "マウス入力, 受け入れ" + - "レンダリング インク" + - "StylusPlugIn オブジェクト" +ms.assetid: c31f3a67-cb3f-4ded-af9e-ed21f6575b26 +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 14 +--- +# インク入力コントロールの作成 +インクのレンダリングを動的にも静的にも行うカスタム コントロールを作成できます。 つまり、ユーザーがストロークを描画したときに、タブレット ペンから "流れる" ようにインクが表示されるようにインクをレンダリングしたり、タブレット ペンからの入力、クリップボードからの貼り付け、ファイルからの読み込みのいずれかによってインクをコントロールに追加した後にそのインクを表示したりします。 インクを動的にレンダリングするには、コントロールが を使用する必要があります。 インクを静的にレンダリングするには、スタイラス イベント メソッド \(、および \) をオーバーライドして、 データの収集、ストロークの作成、これらのメソッドの \(コントロール上でインクをレンダリングする\) への追加を行う必要があります。 + + このトピックは、次の内容で構成されています。 + +- [方法 : スタイラス ポイント データを収集してインク ストロークを作成する](#CollectingStylusPointDataAndCreatingInkStrokes) + +- [方法 : コントロールでマウスからの入力を受け付けられるようにする](#EnablingYourControlToAcceptInputTromTheMouse) + +- [スタイラスおよびマウス双方からの入力](#PuttingItTogether) + +- [追加のプラグインと DynamicRenderer の使用](#UsingAdditionalPluginsAndDynamicRenderers) + +- [まとめ](#AdvancedInkHandling_Conclusion) + + +## 方法 : スタイラス ポイント データを収集してインク ストロークを作成する + インク ストロークを収集して管理するコントロールを作成するには、次の手順を実行します。 + +1. のクラス、または の派生クラスのいずれか \( など\) を派生します。 + + [!code-csharp[AdvancedInkTopicsSamples#20](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControl.cs#20)] + [!code-csharp[AdvancedInkTopicsSamples#14](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControlSnippets.cs#14)] + [!code-csharp[AdvancedInkTopicsSamples#15](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControlSnippets.cs#15)] + +2. をそのクラスに追加し、 プロパティを新しい に設定します。 + + [!code-csharp[AdvancedInkTopicsSamples#16](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControlSnippets.cs#16)] + +3. メソッドを呼び出して に割り当て、 コレクションに追加します。 これにより、コントロールによってスタイラス ポイント データが収集されたとおりに がインクを表示できるようになります。 + + [!code-csharp[AdvancedInkTopicsSamples#17](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControlSnippets.cs#17)] + [!code-csharp[AdvancedInkTopicsSamples#18](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControlSnippets.cs#18)] + +4. メソッドをオーバーライドします。 このメソッドでは、 を呼び出してスタイラスをキャプチャします。 スタイラスをキャプチャすることにより、コントロールは、スタイラスがコントロールの境界を離れても イベントおよび イベントを継続して受け取ります。 これは、厳密には必須ではありませんが、快適なユーザー エクスペリエンスのためには、たいてい必要です。 新しい を作成し、 データを収集します。 最後に、 データの最初のセットを に追加します。 + + [!code-csharp[AdvancedInkTopicsSamples#7](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControl.cs#7)] + +5. メソッドをオーバーライドし、 データを、作成しておいた オブジェクトに追加します。 + + [!code-csharp[AdvancedInkTopicsSamples#8](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControl.cs#8)] + +6. メソッドをオーバーライドし、 データを持つ新しい を作成します。 作成した新しい コレクションに追加し、スタイラス キャプチャを解放します。 + + [!code-csharp[AdvancedInkTopicsSamples#10](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControl.cs#10)] + + +## 方法 : コントロールでマウスからの入力を受け付けられるようにする + 前の例で作成したコントロールをアプリケーションに追加して実行した場合に、マウスを入力デバイスとして使用すると、ストロークが永続化されないことがわかります。 マウスを入力デバイスとして使用する場合にもストロークを永続化するには、次の手順を実行します。 + +1. をオーバーライドし、新しい を作成します。イベント発生時のマウスの位置を取得し、そのポイント データを使用して を作成して、その に追加します。 + + [!code-csharp[AdvancedInkTopicsSamples#11](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControl.cs#11)] + +2. メソッドをオーバーライドします。 イベント発生時のマウスの位置を取得し、そのポイント データを使用して を作成します。 を作成しておいた オブジェクトに追加します。 + + [!code-csharp[AdvancedInkTopicsSamples#12](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControl.cs#12)] + +3. メソッドをオーバーライドします。 データを持つ新しい を作成し、作成したその新しい コレクションに追加します。 + + [!code-csharp[AdvancedInkTopicsSamples#13](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControl.cs#13)] + + +## スタイラスおよびマウス双方からの入力 + ユーザーがマウスまたはペンのいずれかを使用した場合にインクを収集するカスタム コントロールの例を次に示します。 + + [!code-csharp[AdvancedInkTopicsSamples#20](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControl.cs#20)] +[!code-csharp[AdvancedInkTopicsSamples#6](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/StylusControl.cs#6)] + + +## 追加のプラグインと DynamicRenderer の使用 + InkCanvas と同様に、カスタム コントロールでも、カスタム オブジェクトや追加の オブジェクトを使用できます。 これらのオブジェクトを コレクションに追加します。 内での オブジェクトの順番は、インクが描画されるときの外観に影響します。 たとえば、`dynamicRenderer` という およびタブレット ペンのインクをオフセットする `translatePlugin` というカスタムの があるとします。 `translatePlugin` が 内の最初の で、`dynamicRenderer` が 2 番目の場合、ユーザーがペンを動かすと、"流れる" インクがオフセットされます。 `dynamicRenderer` が最初で、`translatePlugin` が 2 番目の場合、インクは、ユーザーがペンを持ち上げるまでオフセットされません。 + + +## まとめ + スタイラス イベント メソッドのオーバーライドにより、インクを収集してレンダリングするカスタム コントロールを作成できます。 独自のコントロールを作成し、独自の クラスを派生させ、それらのクラスを に挿入することにより、デジタル インクで想定できるすべての動作を事実上実装できます。 生成されたとおりの データにアクセスできるため、アプリケーションの必要に応じて 入力をカスタマイズし、画面上にレンダリングすることができるようになります。 データにそのように低いレベルでアクセスできるため、インク コレクションの実装とアプリケーションに最適なパフォーマンスでのレンダリングを実現できます。 + +## 参照 + [高度なインク処理](../../../../docs/framework/wpf/advanced/advanced-ink-handling.md) + [Accessing and Manipulating Pen Input \(ペン入力のアクセスと操作\)](http://go.microsoft.com/fwlink/?LinkId=50752&clcid=0x409) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/custom-dependency-properties.md b/docs/framework/wpf/advanced/custom-dependency-properties.md new file mode 100644 index 00000000000..c14e228793f --- /dev/null +++ b/docs/framework/wpf/advanced/custom-dependency-properties.md @@ -0,0 +1,171 @@ +--- +title: "カスタム依存関係プロパティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "カスタム依存関係プロパティ" + - "依存関係プロパティ, カスタム" + - "実装, ラッパー" + - "メタデータ, プロパティ" + - "プロパティ, メタデータ" + - "プロパティ, 登録" + - "登録 (プロパティを)" + - "ラッパー, 実装" +ms.assetid: e6bfcfac-b10d-4f58-9f77-a864c2a2938f +caps.latest.revision: 25 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 24 +--- +# カスタム依存関係プロパティ +ここでは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] アプリケーションの開発者とコンポーネント作成者に対して、カスタム[依存関係](GTMT)の作成を推奨する理由を説明し、その実装手順と共に、プロパティのパフォーマンス、操作性、または汎用性の向上につながるいくつかの実装オプションを示します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 必要条件 + このトピックでは、ユーザーが [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] クラスの既存の依存関係プロパティの使用という観点から依存関係プロパティを理解し、「[依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md)」トピックを通読していることを前提としています。 このトピックの例を理解するには、[!INCLUDE[TLA#tla_xaml](../../../../includes/tlasharptla-xaml-md.md)] についての理解があり、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションの記述方法を理解していることも必要です。 + + +## 依存関係プロパティとは + 通常なら[!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] プロパティになるプロパティを[依存関係プロパティ](GTMT)として実装すると、そのプロパティでスタイル設定、データ バインディング、継承、アニメーション、および既定値をサポートできるようになります。 依存関係プロパティは、 メソッド \(または \) を呼び出すことによって [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムに登録され、 識別子フィールドによって補足されるプロパティです。 依存関係プロパティを使用できるのは 型のみですが、 は [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] クラス階層の中で非常に高い位置にあるため、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] で使用できるクラスの大多数は依存関係プロパティをサポートすることができます。 依存関係プロパティと、この [!INCLUDE[TLA2#tla_sdk](../../../../includes/tla2sharptla-sdk-md.md)] で依存関係プロパティの説明に使用している一部の用語と規則の詳細については、「[依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md)」を参照してください。 + + +## 依存関係プロパティの例 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のクラスに実装されている依存関係プロパティは多数あり、その例として プロパティ、 プロパティ、 プロパティなどが挙げられます。 クラスによって公開される依存関係プロパティにはそれぞれ 型の public static フィールドが対応付けられ、その同じクラスで公開されます。これは、依存関係プロパティの識別子です。 この識別子には、名前付け規則に従って、[依存関係プロパティ](GTMT)の名前に文字列 `Property` を加えた名前が付けられます。 たとえば、 プロパティに対応する 識別子フィールドの名前は になります。 識別子には[依存関係プロパティ](GTMT)に関する登録情報が格納され、後に[依存関係プロパティ](GTMT)関連のその他の操作 \( の呼び出しなど\) に使用されます。 + + 「[依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md)」で説明しているとおり、"ラッパー" の実装のため、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の依存関係プロパティ \(大部分の[添付プロパティ](GTMT)は除く\) はいずれも [!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] プロパティを兼ねます。 したがって、他の [!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] プロパティを使用するときと同様にラッパーを定義する [!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] アクセサーをコードから呼び出すことによって、依存関係プロパティを取得または設定することができます。 通常、確立された依存関係プロパティのコンシューマーは、基になるプロパティ システムへのコネクション ポイントである メソッドや メソッドは使用しません。 [!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] プロパティの既存の実装により、識別子フィールドが適切に使用され、プロパティの `get` ラッパーと `set` ラッパーの実装内で があらかじめ呼び出されるようになっています。 カスタム依存関係プロパティを自分で実装する場合は、同様の方法でラッパーを定義することになります。 + + +## 依存関係プロパティの実装が必要になるケース + プロパティをクラスに実装する場合、対象となるクラスが から派生したものであれば、そのプロパティを 識別子で補足することによって依存関係プロパティにするという選択肢があります。 プロパティを依存関係プロパティにする必要性や妥当性の有無は、それぞれのシナリオのニーズによって異なります。 プロパティをプライベート フィールドで補足する通常の手法で十分な場合もあります。 ただし、プロパティで次のいずれか 1 つ以上の [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 機能がサポートされるようにするには、必ず[依存関係プロパティ](GTMT)として実装する必要があります。 + +- プロパティをスタイル内で設定する機能。 詳細については、「[スタイルとテンプレート](../../../../docs/framework/wpf/controls/styling-and-templating.md)」を参照してください。 + +- プロパティでデータ バインディングをサポートする機能。 依存関係プロパティのデータ バインディングの詳細については、「[2 つのコントロールのプロパティをバインドする](../../../../docs/framework/wpf/data/how-to-bind-the-properties-of-two-controls.md)」を参照してください。 + +- プロパティを動的リソース参照で設定する機能。 詳細については、「[XAML リソース](../../../../docs/framework/wpf/advanced/xaml-resources.md)」を参照してください。 + +- プロパティ値を要素ツリー内の親要素から自動的に継承する機能。 この場合、[!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] アクセス用のプロパティ ラッパーを作成する場合でも、 メソッドで登録します。 詳細については、「[プロパティ値の継承](../../../../docs/framework/wpf/advanced/property-value-inheritance.md)」を参照してください。 + +- プロパティをアニメーション化する機能。 詳細については、「[アニメーションの概要](../../../../docs/framework/wpf/graphics-multimedia/animation-overview.md)」を参照してください。 + +- プロパティの以前の値がプロパティ システムのアクション、環境、ユーザー、またはスタイルの読み込みや使用によって変更された場合に、プロパティ システムから報告を受ける機能。 プロパティのメタデータを使用することによって、プロパティでコールバック メソッドを指定し、プロパティ システムがプロパティ値の決定的な変更を確認するたびに、そのメソッドが呼び出されるようにすることができます。 関連する概念として、プロパティ値の強制型変換があります。 詳細については、「[依存関係プロパティのコールバックと検証](../../../../docs/framework/wpf/advanced/dependency-property-callbacks-and-validation.md)」を参照してください。 + +- プロパティ値の変更に伴ってレイアウト システムで要素のビジュアルの再構成が必要になるかどうかの報告を受けるなど、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロセスでも使用される、確立されたメタデータ規則を使用する機能。 または、メタデータのオーバーライドを使用して、メタデータに基づいた既定値などの特性を派生クラスで変更する機能。 + +- カスタム コントロールのプロパティが、**\[プロパティ\]** ウィンドウの編集など、[!INCLUDE[vs_orcas_long](../../../../includes/vs-orcas-long-md.md)] [!INCLUDE[wpfdesigner_current_short](../../../../includes/wpfdesigner-current-short-md.md)]のサポートを受ける機能。 詳細については、「[コントロールの作成の概要](../../../../docs/framework/wpf/controls/control-authoring-overview.md)」を参照してください。 + + これらのシナリオを検討するときは、まったく新しいプロパティを実装するのではなく、既存の[依存関係プロパティ](GTMT)のメタデータをオーバーライドすることによって、自分のシナリオを実現できるかどうかも考慮する必要があります。 メタデータのオーバーライドが実際的かどうかはシナリオに依存し、そのシナリオが [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の既存の依存関係プロパティおよびクラスとどの程度似ているかにもよります。 既存のプロパティのメタデータをオーバーライドする方法の詳細については、「[依存関係プロパティのメタデータ](../../../../docs/framework/wpf/advanced/dependency-property-metadata.md)」を参照してください。 + + +## 依存関係プロパティを定義する場合のチェックリスト + 依存関係プロパティの定義は、4 つの概念で構成されています。 これらの概念は、実装内では 1 行のコードで表されるものもあるため、必ずしも厳密な手順というわけではありません。 + +- \(オプション\) 依存関係プロパティのプロパティ メタデータを作成します。 + +- プロパティ システムにプロパティ名を登録します。その際、所有者型およびプロパティ値の型を指定します。 また、プロパティ メタデータを使用する場合は、併せて指定します。 + +- 所有者型に 識別子を `public` `static` `readonly` フィールドとして定義します。 + +- 依存関係プロパティと同じ名前で、[!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] の "ラッパー" プロパティを定義します。 [!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] の "ラッパー" プロパティの `get` および `set` アクセサーを、基になる依存関係プロパティと連係するように実装します。 + + +### プロパティ システムへのプロパティの登録 + プロパティを[依存関係プロパティ](GTMT)にするには、そのプロパティをプロパティ システムによって保持されるテーブルに登録し、以降のプロパティ システム操作で修飾子として使用される一意の識別子を付与する必要があります。 これらの操作は内部操作の場合もあれば、独自のコードによるプロパティ システム [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] の呼び出しの場合もあります。 プロパティを登録するには、クラスの本文 \(クラス内のメンバー定義以外の部分\) で メソッドを呼び出します。 メソッドを呼び出すと、その戻り値として識別子フィールドも提供されます。 の呼び出しを他のメンバー定義の外で行うのは、この戻り値を使用して、 型の `public` `static` `readonly` フィールドをクラスの一部として割り当てて作成するためです。 このフィールドは、依存関係プロパティの識別子になります。 + + [!code-csharp[WPFAquariumSln#RegisterAG](../../../../samples/snippets/csharp/VS_Snippets_Wpf/WPFAquariumSln/CSharp/WPFAquariumObjects/Class1.cs#registerag)] + [!code-vb[WPFAquariumSln#RegisterAG](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/WPFAquariumSln/visualbasic/wpfaquariumobjects/class1.vb#registerag)] + + +### 依存関係プロパティの名前付け規則 + 依存関係プロパティに関しては確立された名前付け規則があり、例外的な状況を除いて必ずその規則に従う必要があります。 + + 依存関係プロパティ自体の基本的な名前 \(この例では "AquariumGraphic"\) を、 の最初のパラメーターとして指定します。 その名前は、それぞれの登録型の中で一意である必要があります。 基本型を通じて継承される依存関係プロパティは、既に登録型の一部であると見なされ、継承されたプロパティの名前を再び登録することはできません。 ただし、その依存関係プロパティが継承されていない場合でも、依存関係プロパティの所有者として、クラスを追加する方法はあります。詳細については、「[依存関係プロパティのメタデータ](../../../../docs/framework/wpf/advanced/dependency-property-metadata.md)」を参照してください。 + + 識別子フィールドを作成するときは、プロパティの登録名にサフィックス `Property` を加えた名前を付けます。 このフィールドは依存関係プロパティの識別子であり、ラッパー内で行う の呼び出しの入力として、また、独自のコード、許可した外部コード、プロパティ システム、および場合によっては [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] プロセッサによるプロパティへのその他のコード アクセスの入力として、後で使用されます。 + +> [!NOTE] +> 通常の実装ではクラスの本文で依存関係プロパティを定義しますが、クラスの静的コンストラクターで依存関係プロパティを定義することも可能です。 依存関係プロパティを初期化するために複数のコード行が必要な場合は、この方法が理にかなっています。 + + +### "ラッパー" の実装 + ラッパー実装では、`get` の実装で を呼び出し、`set` の実装で を呼び出します \(ここでは、わかりやすくするために元の登録呼び出しとフィールドを示しています\)。 + + 例外的な状況を除いて、ラッパー実装は、 の処理をそれぞれ実行します。 その理由については、「[XAML 読み込みと依存関係プロパティ](../../../../docs/framework/wpf/advanced/xaml-loading-and-dependency-properties.md)」を参照してください。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のクラスに用意されている既存のパブリック依存関係プロパティは、この単純なラッパー実装モデルを使用します。依存関係プロパティのしくみの複雑さは、プロパティ システムの動作に内在するものか、プロパティ メタデータによる強制やプロパティ変更コールバックなどの他の概念に由来するものがほとんどです。 + + [!code-csharp[WPFAquariumSln#AGWithWrapper](../../../../samples/snippets/csharp/VS_Snippets_Wpf/WPFAquariumSln/CSharp/WPFAquariumObjects/Class1.cs#agwithwrapper)] + [!code-vb[WPFAquariumSln#AGWithWrapper](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/WPFAquariumSln/visualbasic/wpfaquariumobjects/class1.vb#agwithwrapper)] + + 繰り返しますが、ラッパー プロパティの名前は通常、プロパティを登録する際に の呼び出しの最初のパラメーターとして選択し、指定した名前と同じである必要があります。 この規則に従わないとプロパティが完全に使用できなくなるわけではありませんが、注意を要するいくつかの問題が発生します。 + +- スタイルとテンプレートの一部が機能しません。 + +- ほとんどのツールとデザイナーでは、名前付け規則への準拠が [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] の適切なシリアル化やプロパティ単位のデザイナー環境支援の条件となっています。 + +- [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] ローダーの現在の実装は、属性を処理するときにラッパーを完全にバイパスし、名前付け規則に依存します。 詳細については、「[XAML 読み込みと依存関係プロパティ](../../../../docs/framework/wpf/advanced/xaml-loading-and-dependency-properties.md)」を参照してください。 + + +### 新しい依存関係プロパティのプロパティ メタデータ + 依存関係プロパティを登録すると、プロパティ システムを通じた登録によって、プロパティ特性を格納するメタデータ オブジェクトが作成されます。 これらの特性の多くは、プロパティが の簡易署名で登録された場合に設定される既定値を持っています。 のその他の署名を使用すると、必要なメタデータをプロパティの登録時に指定することができます。 依存関係プロパティに対して指定する最も一般的なメタデータは、そのプロパティを使用する新しいインスタンスに適用する既定値を指定します。 + + の派生クラスに存在する依存関係プロパティを作成する場合は、基本クラス ではなく、より特化したメタデータ クラス を使用できます。 クラスのコンストラクターには、さまざまなメタデータ特性を組み合わせて指定できる署名がいくつか存在します。 既定値のみを指定する場合は、 型の単一のパラメーターを受け取る署名を使用します。 そのオブジェクト パラメーターをプロパティの型固有の既定値として渡します \(指定する既定値の型は、 の呼び出しで `propertyType` パラメーターとして指定した型である必要があります\)。 + + の場合は、プロパティのメタデータ オプション フラグを指定することもできます。 これらのフラグは、登録後にプロパティ メタデータの個々のプロパティに変換され、特定の条件を、レイアウト エンジンなど、他のプロセスに伝えるのに使用されます。 + +#### 適切なメタデータ フラグの設定 + +- プロパティ \(またはその値の変更\) が[!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] に影響を及ぼす場合、特に、レイアウト システムが要素をページ内にレイアウトする際のサイズ設定と描画に影響する場合は、 のいずれか 1 つ以上のフラグを設定します。 + + - は、このプロパティの変更に伴って [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] レンダリングの変更が必要になり、格納オブジェクトが親の内部に必要とする領域が増減する可能性があることを示します。 たとえば、"Width" プロパティにはこのフラグを設定する必要があります。 + + - は、このプロパティの変更に伴って [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] レンダリングの変更が必要になり、その変更が、通常は専用領域の変更は必要としないものの、領域内の配置変更を示唆することを示します。 たとえば、"Alignment" プロパティにはこのフラグを設定する必要があります。 + + - は、その他の何らかの変更が発生しており、レイアウトと測定値には影響しないものの、新たに描画する必要があることを示します。 例としては、既存の要素の色を変更する "Background" などのプロパティが挙げられます。 + + - 多くの場合、これらのフラグは、独自に行うプロパティ システムのオーバーライド実装やレイアウト コールバックのメタデータでプロトコルとして使用されます。 コールバックを例にとると、インスタンスのいずれかのプロパティで値の変更が報告され、そのメタデータで が `true` になっていることを条件として、 を呼び出すことができます。 + +- 一部のプロパティは、それが含まれている親要素のレンダリング特性に対し、前述した必要サイズの変更以上の影響を及ぼす可能性があります。 その例としては、フロー ドキュメント モデルで使用される プロパティが挙げられます。このプロパティが変更されると、該当する段落を含むフロー ドキュメントの全体的なレンダリングに変更が生じる可能性があります。 独自のプロパティで同様のケースを識別するには、 または を使用します。 + +- 既定では、依存関係プロパティはデータ バインディングをサポートします。 データ バインディングの現実的なシナリオがない場合や、大きなオブジェクトに対するデータ バインディングのパフォーマンスが問題として認識されている場合には、データ バインディングを意図的に無効にすることができます。 + +- 既定では、依存関係プロパティのデータ バインディング の既定値は になっています。 バインディングは、バインディング インスタンスごとにいつでも に変更できます。詳細については、「[バインディングの方向を指定する](../../../../docs/framework/wpf/data/how-to-specify-the-direction-of-the-binding.md)」を参照してください。 ただし、依存関係プロパティの作成者の判断で、プロパティの既定のバインディング モードを にすることもできます。 既存の依存関係プロパティの例として、 が挙げられます。このプロパティについては、 設定ロジックと の複合が既定のテーマ スタイルと対話するシナリオが想定されています。 プロパティ ロジックは、データ バインディングをネイティブに使用し、他の状態プロパティおよびメソッド呼び出しに応じてプロパティの状態を保持します。 既定で のバインディングを行うプロパティのもう 1 つの例は です。 + +- フラグを設定することによって、カスタム依存関係プロパティでプロパティの継承を有効にすることもできます。 プロパティの継承は、親要素と子要素に共通のプロパティがあるシナリオで役立ちます。子要素がその特定のプロパティ値を親と同じ値に設定することは理にかなっています。 継承可能なプロパティの例としては、 が挙げられます。このプロパティは、データの表示に関する重要なマスター詳細シナリオを実現するためのバインディング操作に使用されます。 を継承可能にすると、そのデータ コンテキストもすべての子要素に継承されます。 プロパティ値の継承により、ページまたはアプリケーションのルートでデータ コンテキストを指定すると、あらゆる子要素内のバインディングについて改めて指定しなくても済むようになります。 は、継承によって既定値がオーバーライドされるものの、特定の子要素で常にローカルに設定できることを示す例としても適しています。詳細については、「[階層データでマスター詳細パターンを使用する](../../../../docs/framework/wpf/data/how-to-use-the-master-detail-pattern-with-hierarchical-data.md)」を参照してください。 プロパティ値の継承はパフォーマンスの低下につながる可能性があるため、多用は避けてください。詳細については、「[プロパティ値の継承](../../../../docs/framework/wpf/advanced/property-value-inheritance.md)」を参照してください。 + +- 依存関係プロパティがナビゲーション履歴サービスで検出または使用されるようにするかどうかを示すには、 フラグを設定します。 例としては、 プロパティが挙げられます。選択コントロールで選択された項目は、ジャーナル履歴のナビゲーション時に保持する必要があります。 + + +## 読み取り専用の依存関係プロパティ + 読み取り専用の依存関係プロパティを定義することができます。 ただし、プロパティを読み取り専用として定義する理由に関するシナリオは、これらをプロパティ システムに登録し、識別子を公開する手順同様に、少し異なります。 詳細については、「[読み取り専用の依存関係プロパティ](../../../../docs/framework/wpf/advanced/read-only-dependency-properties.md)」を参照してください。 + + +## コレクション型依存関係プロパティ + コレクション型依存関係プロパティには、別途考慮する必要のある実装上の問題がいくつかあります。 詳細については、「[コレクション型依存関係プロパティ](../../../../docs/framework/wpf/advanced/collection-type-dependency-properties.md)」を参照してください。 + + +## 依存関係プロパティに関するセキュリティ上の考慮事項 + 依存関係プロパティは、パブリック プロパティとして宣言する必要があります。 依存関係プロパティの識別子フィールドは、public static フィールドとして宣言する必要があります。 他のアクセス レベル \(保護など\) を宣言しようとしても、依存関係プロパティには、識別子とプロパティ システム [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] の組み合わせを使用して常にアクセスできます。 など、プロパティ システムに組み込まれているメタデータ報告や値決定の [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] により、保護された識別子フィールドにもアクセスできる可能性があります。 詳細については、「[依存関係プロパティのセキュリティ](../../../../docs/framework/wpf/advanced/dependency-property-security.md)」を参照してください。 + + +## 依存関係プロパティとクラス コンストラクター + マネージ コード プログラミングでは、\(通例 FxCop などのコード分析ツールによって適用される\) 一般的な方針として、クラス コンストラクターで仮想メソッドを呼び出すことは避ける必要があります。 これは、コンストラクターは派生クラスのコンストラクターの基本の初期化として呼び出すことができ、コンストラクターを通じた仮想メソッドの入力は、構築中のオブジェクト インスタンスの初期化が不完全な状態で実行される可能性があるためです。 の派生クラスからさらに派生させる場合は、仮想メソッドの呼び出しと公開をプロパティ システム自体が内部的に行う点に注意が必要です。 これらの仮想メソッドは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムのサービスの一部です。 メソッドをオーバーライドすると、派生クラスが値の決定に参加できるようになります。 ランタイムの初期化で問題が発生するのを避けるため、特定のコンストラクター パターンに従わない限り、依存関係プロパティの値はクラスのコンストラクター内で定義しないでください。 詳細については、「[DependencyObject の安全なコンストラクター パターン](../../../../docs/framework/wpf/advanced/safe-constructor-patterns-for-dependencyobjects.md)」を参照してください。 + +## 参照 + [依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md) + [依存関係プロパティのメタデータ](../../../../docs/framework/wpf/advanced/dependency-property-metadata.md) + [コントロールの作成の概要](../../../../docs/framework/wpf/controls/control-authoring-overview.md) + [コレクション型依存関係プロパティ](../../../../docs/framework/wpf/advanced/collection-type-dependency-properties.md) + [依存関係プロパティのセキュリティ](../../../../docs/framework/wpf/advanced/dependency-property-security.md) + [XAML 読み込みと依存関係プロパティ](../../../../docs/framework/wpf/advanced/xaml-loading-and-dependency-properties.md) + [DependencyObject の安全なコンストラクター パターン](../../../../docs/framework/wpf/advanced/safe-constructor-patterns-for-dependencyobjects.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/custom-rendering-ink.md b/docs/framework/wpf/advanced/custom-rendering-ink.md new file mode 100644 index 00000000000..55b8651a4bb --- /dev/null +++ b/docs/framework/wpf/advanced/custom-rendering-ink.md @@ -0,0 +1,104 @@ +--- +title: "カスタム レンダリング インク | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クラス, DynamicRenderer" + - "クラス, InkCanvas" + - "クラス, ストローク" + - "カスタム レンダリング インク" + - "DynamicRenderer クラス" + - "インク, カスタム レンダリング" + - "InkCanvas クラス" + - "Stroke クラス" +ms.assetid: 65c978a7-0ee0-454f-ac7f-b1bd2efecac5 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# カスタム レンダリング インク +ストロークの プロパティを使用すると、ストロークのサイズ、色、形状などの外観を指定できますが、 で可能な指定以上の外観にカスタマイズする必要が生じる場合もあります。 インクの外観は、エアブラシや油絵の具などのさまざまな効果の外観でレンダリングすることでカスタマイズできます。 [!INCLUDE[TLA#tla_wpf](../../../../includes/tlasharptla-wpf-md.md)] では、カスタムの オブジェクトと オブジェクトを実装することで、インクのカスタム レンダリングを実行できます。 + + このトピックは、次の内容で構成されています。 + +- [アーキテクチャ](#Architecture) + +- [動的レンダラーの実装](#ImplementingADynamicRenderer) + +- [Implementing a Custom Stroke](#ImplementingACustomStroke) + +- [カスタム InkCanvas の実装](#ImplementingACustomInkCanvas) + +- [まとめ](#Conclusion) + + +## アーキテクチャ + インクのレンダリングは 2 回行われます。ユーザーがインクをインク サーフェイスに書き込んだときと、ストロークがインク対応サーフェイスに追加された後です。 はユーザーがタブレット ペンをデジタイザー上で動かしたときにインクをレンダリングし、 は要素に追加されたときにレンダリングされます。 + + インクを動的にレンダリングするときに実装するクラスは 3 つあります。 + +1. **DynamicRenderer** : から派生するクラスを実装します。 このクラスは、ストロークを描画されたとおりにレンダリングする特殊な です。 は個別のスレッドでレンダリングを実行するため、アプリケーションのユーザー インターフェイス \(UI\) スレッドがブロックされても、インクを収集するためにインク サーフェイスが表示されます。 スレッド処理モデルの詳細については、「[インク スレッド モデル](../../../../docs/framework/wpf/advanced/the-ink-threading-model.md)」を参照してください。 ストロークの動的レンダリングをカスタマイズするには、 メソッドをオーバーライドします。 + +2. **Stroke** : から派生するクラスを実装します。 このクラスは、 データが オブジェクトに変換された後に、そのデータの静的レンダリングを実行します。 ストロークの静的レンダリングが動的レンダリングと一貫するようにするには、 メソッドをオーバーライドします。 + +3. **InkCanvas** : から派生するクラスを実装します。 カスタマイズされた プロパティに割り当てます。 メソッドをオーバーライドし、カスタム ストロークを プロパティに追加します。 これにより、インクの外観の一貫性が確保されます。 + + +## 動的レンダラーの実装 + クラスは [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の標準クラスですが、特殊なレンダリングを実行するには、 から派生したカスタマイズ動的レンダラーを作成し、 メソッドをオーバーライドする必要があります。 + + 線形グラデーション ブラシ効果を使用してインクを描画するカスタマイズされた の例を次に示します。 + + [!code-csharp[AdvancedInkTopicsSamples#19](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/DynamicRenderer.cs#19)] + [!code-vb[AdvancedInkTopicsSamples#19](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/AdvancedInkTopicsSamples/VisualBasic/DynamicRenderer.vb#19)] +[!code-csharp[AdvancedInkTopicsSamples#1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/DynamicRenderer.cs#1)] +[!code-vb[AdvancedInkTopicsSamples#1](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/AdvancedInkTopicsSamples/VisualBasic/DynamicRenderer.vb#1)] + + +## カスタム ストロークの実装 + から派生するクラスを実装します。 このクラスは、 データが オブジェクトに変換された後に、そのデータのレンダリングを実行します。 実際の描画を実行するには、 クラスをオーバーライドします。 + + メソッドを使用して、Stroke クラスにカスタム データを格納することもできます。 このデータは、永続化される場合、ストローク データと共に格納されます。 + + クラスは、ヒット テストを実行することもできます。 また、現在のクラスで メソッドをオーバーライドして、独自のヒット テスト アルゴリズムを実装することもできます。 + + 次の C\# のコードは、 データを 3\-D ストロークとしてレンダリングするカスタムの クラスを示しています。 + + [!code-csharp[AdvancedInkTopicsSamples#19](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/DynamicRenderer.cs#19)] + [!code-vb[AdvancedInkTopicsSamples#19](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/AdvancedInkTopicsSamples/VisualBasic/DynamicRenderer.vb#19)] +[!code-csharp[AdvancedInkTopicsSamples#2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/DynamicRenderer.cs#2)] +[!code-vb[AdvancedInkTopicsSamples#2](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/AdvancedInkTopicsSamples/VisualBasic/DynamicRenderer.vb#2)] + + +## カスタム InkCanvas の実装 + カスタマイズされた およびストロークの最も簡単な使用方法は、 から派生するクラスを実装して使用することです。 には、ユーザーがストロークを描画しているときにそのストロークをどのようにレンダリングするかを指定する プロパティがあります。 + + でストロークのカスタム レンダリングを行うには、次の操作を実行します。 + +- から派生するクラスを作成します。 + +- カスタマイズされた プロパティに割り当てます。 + +- メソッドをオーバーライドします。 このメソッドで、InkCanvas に追加された元のストロークを削除します。 次に、カスタム ストロークを作成して プロパティに追加し、カスタム ストロークを含む新しい を使用して基本クラスを呼び出します。 + + 次の C\# のコードは、カスタマイズされた を使用してカスタム ストロークを収集するカスタムの クラスを示しています。 + + [!code-csharp[AdvancedInkTopicsSamples#9](../../../../samples/snippets/csharp/VS_Snippets_Wpf/AdvancedInkTopicsSamples/CSharp/Window1.xaml.cs#9)] + + には、複数の を追加できます。 複数の オブジェクトを に追加するには、それらのオブジェクトを プロパティに追加します。 + + +## まとめ + インクの外観をカスタマイズするには、独自の 、および クラスを派生させます。 これらのクラスを合わせて、ユーザーがストロークを描画したときとそのストロークが収集された後のストロークの外観の一貫性を確保することができます。 + +## 参照 + [高度なインク処理](../../../../docs/framework/wpf/advanced/advanced-ink-handling.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/data-and-data-objects.md b/docs/framework/wpf/advanced/data-and-data-objects.md new file mode 100644 index 00000000000..544aff2a2ff --- /dev/null +++ b/docs/framework/wpf/advanced/data-and-data-objects.md @@ -0,0 +1,101 @@ +--- +title: "データとデータ オブジェクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ転送 [WPF], ドラッグ アンド ドロップ" + - "DataFormats クラス [WPF]" + - "DataObject クラス [WPF]" +ms.assetid: 5967d557-1867-420f-a524-ae3af78402da +caps.latest.revision: 5 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 5 +--- +# データとデータ オブジェクト +ドラッグ アンド ドロップ操作の一部として転送されるデータは、データ オブジェクトに格納されます。 概念上、データ オブジェクトは、次の項目の 1 つ以上のペアで構成されます。 + +- 実際のデータを格納する 。 + +- 対応するデータ形式の識別子。 + + データ自体は、基本 として表すことができる任意の項目で構成できます。 対応するデータ形式は、データの形式に関するヒントを提供する文字列または です。 データ オブジェクトは、データとデータ形式の複数ペアのホストをサポートします。これにより、単一のデータ オブジェクトでデータを複数の形式で提供できます。 + + +## データ オブジェクト + すべてのデータ オブジェクトで、 インターフェイスを実装する必要があります。このインターフェイスは、データ転送を可能にし、容易にする次の標準メソッド セットを提供します。 + +|メソッド|概要| +|----------|--------| +||データ オブジェクトを指定したデータ形式で取得します。| +||データが指定した形式で使用可能かどうか、または指定した形式に変換可能かどうかをチェックします。| +||このデータ オブジェクトのデータが格納されているか、または変換可能である形式のリストを返します。| +||指定したデータをこのデータ オブジェクトに格納します。| + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] は、 クラスの の基本実装を提供します。 多くの一般的なデータ転送シナリオでは、標準の クラスで十分です。 + + ビットマップ、CSV、ファイル、HTML、RTF、文字列、テキスト、オーディオなど、複数の定義済みの形式があります。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] で提供される定義済みのデータ形式については、 クラスのリファレンス トピックを参照してください。 + + 一般的に、データ オブジェクトには、データの抽出時にある形式で格納されているデータを別の形式に自動的に変換する機能が含まれています。この機能は自動変換と呼ばれます。 データ オブジェクトで使用できるデータ形式を照会するときに、 メソッドまたは メソッドを呼び出して `autoConvert` パラメーターを `false` に指定することで、自動変換可能なデータ形式をネイティブ データ形式からフィルター処理することができます。 メソッドを使用してデータをデータ オブジェクトに追加する場合、`autoConvert` パラメーターを `false` に設定してデータの自動変換を禁止することができます。 + + +## データ オブジェクトの操作 + ここでは、データ オブジェクトを作成および操作する一般的な手法について説明します。 + +### 新しいデータ オブジェクトの作成 + クラスは、新しい インスタンスに単一のデータとデータ形式のペアを容易に設定できるようにするいくつかのオーバーロードされたコンストラクターを提供します。 + + 新しいデータ オブジェクトを作成し、オーバーロードされたこのコンストラクター \(\) のいずれかを使用して、文字列と指定したデータ形式でデータ オブジェクトを初期化するコード例を次に示します。 ここでは、データ形式は文字列によって指定されます。 クラスは、事前定義されている一連の型文字列を提供します。 既定では、格納されるデータの自動変換が有効です。 + + [!code-csharp[DragDrop_DragDropMiscCode#_DragDrop_CreateDataObject_TypeString](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DragDrop_DragDropMiscCode/CSharp/Window1.xaml.cs#_dragdrop_createdataobject_typestring)] + [!code-vb[DragDrop_DragDropMiscCode#_DragDrop_CreateDataObject_TypeString](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DragDrop_DragDropMiscCode/visualbasic/window1.xaml.vb#_dragdrop_createdataobject_typestring)] + + データ オブジェクトを作成するコードの例については、「[データ オブジェクトを作成する](../../../../docs/framework/wpf/advanced/how-to-create-a-data-object.md)」を参照してください。 + +### 複数の形式のデータの格納 + 単一のデータ オブジェクトに複数の形式でデータを格納できます。 単一のデータ オブジェクト内で複数のデータ形式を戦略的に使用すると、単一のデータ形式のみを表す場合よりも、データ オブジェクトを幅広いドロップ ターゲットで使用できる可能性が高くなります。 通常、ドラッグ ソースは潜在的なドロップ ターゲットで使用できるデータ形式に依存しない必要があることに注意してください。 + + 次の例は、 メソッドを使用してデータを複数の形式のデータ オブジェクトに追加する方法を示しています。 + + [!code-csharp[DragDrop_DragDropMiscCode#_DragDrop_StoreMultipleFormats](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DragDrop_DragDropMiscCode/CSharp/Window1.xaml.cs#_dragdrop_storemultipleformats)] + [!code-vb[DragDrop_DragDropMiscCode#_DragDrop_StoreMultipleFormats](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DragDrop_DragDropMiscCode/visualbasic/window1.xaml.vb#_dragdrop_storemultipleformats)] + +### データ オブジェクトで使用可能な形式の照会 + 単一のデータ オブジェクトに任意の数のデータ形式を含めることができるため、データ オブジェクトには、使用可能なデータ形式のリストを取得する機能が含まれています。 + + オーバーロードを使用して、データ オブジェクトで使用可能なすべてのデータ形式 \(ネイティブおよび自動変換の両方で使用可能\) を示す一連の文字列を取得するコード例を次に示します。 + + [!code-csharp[DragDrop_DragDropMiscCode#_DragDrop_GetAllDataFormats](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DragDrop_DragDropMiscCode/CSharp/Window1.xaml.cs#_dragdrop_getalldataformats)] + [!code-vb[DragDrop_DragDropMiscCode#_DragDrop_GetAllDataFormats](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DragDrop_DragDropMiscCode/visualbasic/window1.xaml.vb#_dragdrop_getalldataformats)] + + データ オブジェクトで使用可能なデータ形式を照会するコードの例については、「[データ オブジェクト内のデータ形式の一覧を表示する](../../../../docs/framework/wpf/advanced/how-to-list-the-data-formats-in-a-data-object.md)」を参照してください。 特定のデータ形式が存在するかどうかをデータ オブジェクトに照会する例については、「[データ形式がデータ オブジェクトに存在するかどうかを判別する](../../../../docs/framework/wpf/advanced/how-to-determine-if-a-data-format-is-present-in-a-data-object.md)」を参照してください。 + +### データ オブジェクトからのデータの取得 + データ オブジェクトから特定の形式のデータを取得するには、単に メソッドのいずれかを呼び出して目的のデータ形式を指定します。 メソッドのいずれかを使用すると、特定のデータ形式が存在するかどうかを確認できます。 は、 内のデータを返します。データ形式に応じて、このオブジェクトを型固有のコンテナーにキャストできます。 + + オーバーロードを使用して、指定したデータ形式が \(ネイティブで、または自動変換により\) 使用可能かどうかを確認するコード例を次に示します。 指定した形式が使用可能な場合は、 メソッドを使用してデータを取得します。 + + [!code-csharp[DragDrop_DragDropMiscCode#_DragDrop_GetSpecificDataFormat](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DragDrop_DragDropMiscCode/CSharp/Window1.xaml.cs#_dragdrop_getspecificdataformat)] + [!code-vb[DragDrop_DragDropMiscCode#_DragDrop_GetSpecificDataFormat](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DragDrop_DragDropMiscCode/visualbasic/window1.xaml.vb#_dragdrop_getspecificdataformat)] + + データ オブジェクトからデータを取得するコードの例については、「[特定のデータ形式でデータを取得する](../../../../docs/framework/wpf/advanced/how-to-retrieve-data-in-a-particular-data-format.md)」を参照してください。 + +### データ オブジェクトからのデータの削除 + データは、データ オブジェクトから直接削除できません。 データ オブジェクトからデータを事実上削除するには、次の手順に従います。 + +1. 保持するデータのみを含む新しいデータ オブジェクトを作成します。 + +2. 古いデータ オブジェクトから新しいデータ オブジェクトに目的のデータを "コピー" します。 データをコピーするには、 メソッドのいずれかを使用して未処理データを含む を取得し、 メソッドのいずれかを使用してデータを新しいデータ オブジェクトに追加します。 + +3. 古いデータ オブジェクトを新しいデータ オブジェクトに置き換えます。 + +> [!NOTE] +> メソッドは、データ オブジェクトへのデータの追加のみを行います。データとデータ形式が前回の呼び出しとまったく同じ場合でも、データの置換は行いません。 同じデータとデータ形式に対して を 2 回呼び出すと、そのデータとデータ形式がデータ オブジェクトに 2 回存在することになります。 \ No newline at end of file diff --git a/docs/framework/wpf/advanced/datetime-xaml-syntax.md b/docs/framework/wpf/advanced/datetime-xaml-syntax.md new file mode 100644 index 00000000000..a119933a0dd --- /dev/null +++ b/docs/framework/wpf/advanced/datetime-xaml-syntax.md @@ -0,0 +1,86 @@ +--- +title: "DateTime XAML 構文 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "DateTime XAML 構文 [WPF]" + - "DateTime XAML 構文 [WPF], 書式指定文字列" + - "DateTime XAML 構文 [WPF], 文字列" + - "DateTime XAML 構文 [WPF], 使用される状況" + - "DateTime XAML テキスト [WPF]" + - "短い日付形式 [WPF], DateTime" +ms.assetid: 5901710a-609b-40c8-9d65-f0016cd9090b +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# DateTime XAML 構文 + など、一部のコントロールには、 型を使用したプロパティが存在します。 これらのコントロールに対する日付または時刻の初期値は、分離コードで実行時に指定するのが一般的です。ただし、日付または時刻の初期値を XAML で指定することもできます。 WPF XAML パーサーが組み込みの XAML テキスト構文を使用して、 の値を解析します。 このトピックでは、 の XAML テキスト構文の指定方法について説明します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## DateTime XAML 構文が使用される状況 + 日付は必ずしも XAML で設定する必要はありません。また、XAML で設定することが適切とは言えない場合もあります。 たとえば、 プロパティを使用すると、実行時に日付を初期化できます。また、カレンダーに対する日付の調整も、ユーザーの入力に基づいて分離コードですべて行うことができます。 ただし、コントロール テンプレートの中で、 に対して日付をハードコーディングすることが必要となる場合もあります。 このようなシナリオでは、 XAML 構文を使用する必要があります。 + +### DateTime XAML 構文はネイティブの動作 + は、CLR の基本クラス ライブラリで定義されているクラスです。 基本クラス ライブラリと CLR の他のライブラリとの関連性のため、 をクラスに適用し、型コンバーターを使用して XAML 文字列を処理し、ランタイム オブジェクト モデルの に変換することはできません。 変換動作を提供する `DateTimeConverter` クラスは存在しません。このトピックで説明する変換動作は、WPF XAML パーサーのネイティブな動作です。 + + +## DateTime XAML 構文の書式指定文字列 + の形式は、書式指定文字列で指定できます。 書式指定文字列は、値を作成するときに使用できるテキスト構文を形式化します。 既存の WPF コントロールの 値では、一般に、 の日付要素のみを使用し、時刻要素は使用しません。 + + XAML で指定する場合、どの書式指定文字列でも代用できます。 + + また、このトピックで特に示されていない形式および書式指定文字列も使用できます。 技術的には、 値を XAML で指定する場合、WPF XAML パーサーによって解析されるときに に対して内部的な呼び出しを使用します。したがって、XAML 入力では で受け取ることのできる任意の文字列を使用できます。 詳細については、「」を参照してください。 + +> [!IMPORTANT] +> DateTime XAML 構文でネイティブ変換を行う場合は、常に `en-us` を として使用します。 このことは、XAML 内の 値または `xml:lang` 値による影響を受けません。XAML の属性レベルでの型変換は、コンテキストなしでも動作するためです。 日や月を表示する順序などにはカルチャによる違いがあるため、ここで示した書式指定文字列は補完しないでください。 ここで示した書式指定文字列は、その他のカルチャ設定に関係なく、XAML を解析する場合に適しています。 + + 以降のセクションでは、 の一般的な書式指定文字列について説明します。 + +### 短い形式の日付パターン \("d"\) + XAML における の短い日付形式は次のとおりです。 + + `M/d/YYYY` + + これは、WPF コントロールでの一般的な使用法で、必要なすべての情報を指定するための最も簡単な形式です。タイム ゾーン オフセットと時刻要素を誤って指定した場合でも影響を受けないため、他の形式ではなく、この形式の使用をお勧めします。 + + たとえば、2010 年 6 月 1 日を指定するには、次の文字列を使用します。 + + `3/1/2010` + + 詳細については、「」を参照してください。 + +### 並べ替えできる DateTime のパターン \("s"\) + XAML における並べ替え可能な のパターンを次に示します。 + + `yyyy'-'MM'-'dd'T'HH':'mm':'ss` + + たとえば、2010 年 6 月 1 日を指定するには、次の文字列を使用します \(時刻要素はすべて 0 として入力されます\)。 + + `2010-06-01T000:00:00` + +### RFC1123 パターン \("r"\) + RFC1123 パターンの利点は、カルチャに依存しないために、RFC1123 パターンが使用されている他の日付ジェネレーターから入力された文字列を使用できることです。 XAML における RFC1123 の パターンを次に示します。 + + `ddd, dd MMM yyyy HH':'mm':'ss 'UTC'` + + たとえば、2010 年 6 月 1 日を指定するには、次の文字列を使用します \(時刻要素はすべて 0 として入力されます\)。 + + `Mon, 01 Jun 2010 00:00:00 UTC` + +### その他の形式とパターン + 既に説明したように、XAML における では、 に対する入力として受け取ることのできる任意の文字列を指定できます。 これには、その他の形式化された形式 \(例: \) および特定の フォームとして形式化されていない形式が含まれます。 たとえば、`YYYY/mm/dd` フォームを の入力として使用できます。 このトピックでは、使用可能な形式の一部を説明します。標準的な使用手順としては、短い形式の日付パターンをお勧めします。 + +## 参照 + [XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/dependency-properties-overview.md b/docs/framework/wpf/advanced/dependency-properties-overview.md new file mode 100644 index 00000000000..7ef023fee99 --- /dev/null +++ b/docs/framework/wpf/advanced/dependency-properties-overview.md @@ -0,0 +1,224 @@ +--- +title: "依存関係プロパティの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "添付プロパティ" + - "データ バインディング" + - "依存関係プロパティ" + - "プロパティ, 添付" + - "プロパティ, 概要" + - "リソース, 参照" + - "スタイル" +ms.assetid: d119d00c-3afb-48d6-87a0-c4da4f83dee5 +caps.latest.revision: 30 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 29 +--- +# 依存関係プロパティの概要 +[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] には、[!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] プロパティの機能を拡張するために使用できる一連のサービスが用意されています。 通常、これらのサービスをまとめて [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムと呼びます。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムによってサポートされるプロパティは、[依存関係プロパティ](GTMT)と呼ばれています。ここでは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムについて、および[依存関係プロパティ](GTMT)の機能について説明します。この説明では、既存の[依存関係プロパティ](GTMT)を XAML およびコードで使用する方法を示します。 また、依存関係プロパティ メタデータなどの依存関係プロパティの特殊な側面や、カスタム クラスで独自の依存関係プロパティを作成する方法についても説明します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 必要条件 + ここでは、[!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] およびオブジェクト指向プログラミングに関する基礎知識があることを前提にしています。 このトピックの例に従うには、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] について理解し、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションの作成方法に精通している必要があります。 詳細については、「[チュートリアル: WPF の概要](../../../../docs/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application.md)」を参照してください。 + + +## 依存関係プロパティおよび CLR プロパティ + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では通常、プロパティは[!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] プロパティとして公開されます。 基本的なレベルでは、これらのプロパティと直接対話でき、これらのプロパティが[依存関係](GTMT)として実装されることを認識することはありません。 ただし、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムの一部またはすべての機能を利用できるように、これらの機能に精通しておく必要があります。 + + [依存関係プロパティ](GTMT)の目的は、他の入力の値に基づいてプロパティの値を計算する方法を提供することです。 他の入力には、テーマやユーザー設定などのシステム プロパティ、データ バインディングやアニメーション\/ストーリーボードなどのジャスト イン タイム プロパティ判定機構、リソースやスタイルなどの多目的のテンプレート、要素ツリー内の他の要素との親子のリレーションシップから判断される値などがあります。 また、[依存関係プロパティ](GTMT)を実装して、自己完結型の検証、既定値、他のプロパティに対する変更を監視するコールバック、およびランタイム情報の可能性がある情報に基づいてプロパティ値を強制するシステムを提供できます。 既存のプロパティの実際の実装をオーバーライドしたり新しいプロパティを作成したりするのではなく、依存関係プロパティ メタデータをオーバーライドすることによって、派生クラスで既存のプロパティの特定の特性を変更することもできます。 + + SDK リファレンスで、プロパティのマネージ リファレンス ページの「依存関係プロパティの情報」セクションの有無によって、どのプロパティが依存関係プロパティかを特定できます。 「依存関係プロパティの情報」セクションにはその依存関係プロパティの 識別子フィールドへのリンクがあり、そのプロパティに設定されるメタデータ オプションのリスト、クラスごとのオーバーライド情報、およびその他の詳細も示されています。 + + +## 依存関係プロパティによる CLR プロパティの補足 + [依存関係プロパティ](GTMT)および [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムは、プライベート フィールドでプロパティをサポートする標準パターンの代替実装として、プロパティをサポートする型を提供することによって、プロパティ機能を拡張します。 この型の名前は です。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムを定義するもう 1 つの重要な型は です。 は、[依存関係プロパティ](GTMT)を登録および所有できる基本クラスを定義します。 + + [依存関係プロパティ](GTMT)について説明するときにこの[!INCLUDE[TLA#tla_sdk](../../../../includes/tlasharptla-sdk-md.md)] ドキュメントで使用する用語の概要を次に示します。 + +- **依存関係プロパティ** : によってサポートされるプロパティ。 + +- **依存関係プロパティの識別子**: [依存関係プロパティ](GTMT)の登録時に戻り値として取得され、クラスの静的メンバーとして格納される インスタンス。 この識別子は、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムと対話する多くの [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] でパラメーターとして使用されます。 + +- **CLR "ラッパー"** : プロパティの実際の get および set 実装。 これらの実装は、依存関係プロパティの識別子を および の呼び出しで使用し、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムを使用してプロパティの補足を提供することによって、その識別子を組み込みます。 + + 次の例では、`IsSpinning` [依存関係プロパティ](GTMT)を定義し、 識別子とサポートされるプロパティの関係を示します。 + + [!code-csharp[PropertiesOvwSupport#DPFormBasic](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page4.xaml.cs#dpformbasic)] + [!code-vb[PropertiesOvwSupport#DPFormBasic](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/PropertiesOvwSupport/visualbasic/page4.xaml.vb#dpformbasic)] +[!code-csharp[PropertiesOvwSupport#DPFormBasic2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page4.xaml.cs#dpformbasic2)] + + プロパティとそれを補足する フィールドの名前付け規則は重要です。 フィールドの名前は常にプロパティの名前であり、サフィックス `Property` が追加されます。 この規則とその理由の詳細については、「[カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md)」を参照してください。 + + +## プロパティ値の設定 + コードまたは XAML でプロパティを設定できます。 + + +### XAML でのプロパティ値の設定 + ボタンの背景色を赤に指定する方法を次の XAML の例に示します。 この例では、生成されたコードで XAML 属性の単純な文字列値が WPF XAML パーサーによって [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 型 \( を使用した \) に型変換される場合を示します。 + + [!code-xml[PropertiesOvwSupport#MostBasicProperty](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/Page1.xaml#mostbasicproperty)] + + XAML は、プロパティを設定するためのさまざまな構文形式をサポートします。 特定のプロパティに対してどの構文を使用するかは、プロパティで使用される値型、および型コンバーターの有無などのその他の要素によって決定されます。 プロパティ設定の XAML 構文の詳細については、「[XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md)」および「[XAML 構文の詳細](../../../../docs/framework/wpf/advanced/xaml-syntax-in-detail.md)」を参照してください。 + + 属性以外の構文の例として、別のボタンの背景を次の XAML の例に示します。 今回は単純な純色を設定するのではなく、背景をイメージに設定し、そのイメージおよびそのイメージのソースを表す要素を、入れ子にした要素の属性として指定します。 これは、プロパティ要素構文の例です。 + + [!code-xml[PropertiesOvwSupport#PESyntaxProperty](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/Page1.xaml#pesyntaxproperty)] + + +### コードでのプロパティの設定 + [依存関係プロパティ](GTMT)の値をコードで設定するには、通常、[!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] "ラッパー" によって公開される set 実装を呼び出すだけで済みます。 + + [!code-csharp[PropertiesOvwSupport#ProceduralPropertySet](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/Page1.xaml.cs#proceduralpropertyset)] + [!code-vb[PropertiesOvwSupport#ProceduralPropertySet](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/PropertiesOvwSupport/visualbasic/page1.xaml.vb#proceduralpropertyset)] + + プロパティ値を取得する場合も、基本的に get "ラッパー" 実装を呼び出します。 + + [!code-csharp[PropertiesOvwSupport#ProceduralPropertyGet](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/Page1.xaml.cs#proceduralpropertyget)] + [!code-vb[PropertiesOvwSupport#ProceduralPropertyGet](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/PropertiesOvwSupport/visualbasic/page1.xaml.vb#proceduralpropertyget)] + + また、プロパティ システム [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] および を直接呼び出すこともできます。 これは通常、既存のプロパティを使用する場合は不要ですが \(ラッパーの方が便利で、開発者ツール用のより優れたプロパティが公開されます\)、[!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] を直接呼び出す方法は、特定のシナリオに適しています。 + + プロパティは、XAML で設定してから分離コードを介してコードでアクセスすることもできます。 詳細については、「[WPF における分離コードと XAML](../../../../docs/framework/wpf/advanced/code-behind-and-xaml-in-wpf.md)」を参照してください。 + + +## 依存関係プロパティによって提供されるプロパティ機能 + 依存関係プロパティは、フィールドによって補足されるプロパティとは対照的に、プロパティの機能を拡張する機能を提供します。 多くの場合、このような機能のそれぞれが、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 全体の機能セットの特定の機能を表したりサポートしたりします。 + +- [リソース](#setting_properties_resources) + +- [データ バインディング](#setting_properties_data_binding) + +- [スタイル](#setting_properties_styles) + +- [アニメーション](#animations) + +- [メタデータのオーバーライド](#metadata) + +- [プロパティ値の継承](#setting_properties_inheritance) + +- [WPF デザイナーの統合](#vs2008_integration) + + +### リソース + 依存関係プロパティの値は、リソースを参照することによって設定できます。 リソースは通常、ページのルート要素またはアプリケーションの `Resources` プロパティ値として指定されます \(これらの場所を使用することが、リソースにアクセスするのに最も便利な方法です\)。 リソースを定義する方法を次の例に示します。 + + [!code-xml[PropertiesOvwSupport#ResourcesResource](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page2.xaml#resourcesresource)] + + リソースを定義すると、リソースを参照し、そのリソースを使用してプロパティ値を指定できるようになります。 + + [!code-xml[PropertiesOvwSupport#ResourcesReference](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page2.xaml#resourcesreference)] + + この特定のリソースは、[DynamicResource のマークアップ拡張機能](../../../../docs/framework/wpf/advanced/dynamicresource-markup-extension.md) として参照されます \(WPF XAML では、静的リソース参照または動的リソース参照を使用できます\)。 動的リソース参照を使用するには、依存関係プロパティに設定している必要があるため、これは具体的には、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムによって有効になる動的リソース参照の使用方法になります。 詳細については、「[XAML リソース](../../../../docs/framework/wpf/advanced/xaml-resources.md)」を参照してください。 + +> [!NOTE] +> リソースはローカル値として扱われます。つまり、別のローカル値を設定すると、リソース参照がなくなります。 詳細については、「[依存関係プロパティ値の優先順位](../../../../docs/framework/wpf/advanced/dependency-property-value-precedence.md)」を参照してください。 + + +### データ バインディング + 依存関係プロパティは、データ バインディングを介して値を参照できます。 データ バインドは、XAML で特定のマークアップ拡張機能構文を介して機能するか、コードで オブジェクトを介して機能します。 データ バインディングを使用すると、プロパティ値の最終的な決定が、データ ソースから値が取得される実行時まで延期されます。 + + XAML で宣言されたバインディングを使用して、 プロパティを設定する例を次に示します。 バインディングでは、継承されたデータ コンテキストおよび データ ソース \(この例には示されていません\) が使用されます。 バインディング自体は、データ ソース内で によって目的のソース プロパティを指定します。 + + [!code-xml[PropertiesOvwSupport#BasicInlineBinding](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page3.xaml#basicinlinebinding)] + +> [!NOTE] +> バインディングはローカル値として扱われます。つまり、別のローカル値を設定すると、バインディングがなくなります。 詳細については、「[依存関係プロパティ値の優先順位](../../../../docs/framework/wpf/advanced/dependency-property-value-precedence.md)」を参照してください。 + + 依存関係プロパティまたは クラスは、データ バインディング操作に対応する ソース プロパティ値の変更の通知を生成する をネイティブ サポートしません。 データ バインディング ターゲットに対する変更を報告できる、データ バインディングで使用するためのプロパティを作成する方法の詳細については、「[データ バインドの概要](../../../../docs/framework/wpf/data/data-binding-overview.md)」を参照してください。 + + +### スタイル + スタイルおよびテンプレートは、依存関係プロパティの使用に関する 2 つの主なシナリオです。 スタイルは、アプリケーション [!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] を定義するプロパティを設定する際に特に役立ちます。 通常、スタイルは XAML のリソースとして定義されます。 スタイルには通常、特定のプロパティの "setter" および別のプロパティのリアルタイム値に基づいてプロパティ値を変更する "トリガー" が含まれるため、スタイルはプロパティ システムと対話します。 + + 非常に単純なスタイル \( ディクショナリ内で定義されますが、この例には示されていません\) を作成し、そのスタイルを プロパティに直接適用する例を次に示します。 スタイル内の setter によって、スタイルが適用された プロパティが緑色に設定されます。 + + [!code-xml[PropertiesOvwSupport#SimpleStyleDef](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page3.xaml#simplestyledef)] + + [!code-xml[PropertiesOvwSupport#SimpleStyle](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page3.xaml#simplestyle)] + + 詳細については、「[スタイルとテンプレート](../../../../docs/framework/wpf/controls/styling-and-templating.md)」を参照してください。 + + +### アニメーション + 依存関係プロパティは、アニメーション化することができます。 アニメーションが適用されて実行されると、アニメーション化された値は、それ以外の場合のプロパティの値 \(ローカル値など\) よりも高い優先順位で動作します。 + + プロパティの をアニメーション化する例を次に示します \(技術的には、 はプロパティ要素構文を使用して空白の として指定することでアニメーション化され、その プロパティが、直接アニメーション化されるプロパティになります\)。 + + [!code-xml[PropertiesOvwSupport#MiniAnimate](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page3.xaml#minianimate)] + + プロパティのアニメーション化の詳細については、「[アニメーションの概要](../../../../docs/framework/wpf/graphics-multimedia/animation-overview.md)」および「[ストーリーボードの概要](../../../../docs/framework/wpf/graphics-multimedia/storyboards-overview.md)」を参照してください。 + + +### メタデータのオーバーライド + [依存関係プロパティ](GTMT)の特定の動作は、[依存関係プロパティ](GTMT)を最初に登録したクラスから派生させるときにプロパティのメタデータをオーバーライドすることで変更できます。 メタデータのオーバーライドは、 識別子に依存します。 メタデータのオーバーライドでは、プロパティを再実装する必要はありません。 メタデータの変更は、プロパティ システムでネイティブに処理されます。各クラスは、基本クラスから継承したすべてのプロパティに対して、型ごとに個別のメタデータを保持する可能性があります。 + + 依存関係プロパティ のメタデータをオーバーライドする例を次に示します。 この特定の依存関係プロパティ メタデータのオーバーライドは、テーマから既定のスタイルを使用できるコントロールを作成する実装パターンの一部です。 + + [!code-csharp[PropertiesOvwSupport#OverrideMetadata](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page3.xaml.cs#overridemetadata)] + [!code-vb[PropertiesOvwSupport#OverrideMetadata](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/PropertiesOvwSupport/visualbasic/page3.xaml.vb#overridemetadata)] + + プロパティ メタデータをオーバーライドまたは取得する方法の詳細については、「[依存関係プロパティのメタデータ](../../../../docs/framework/wpf/advanced/dependency-property-metadata.md)」を参照してください。 + + +### プロパティ値の継承 + 要素は、オブジェクト ツリー内の親から依存関係プロパティの値を継承できます。 + +> [!NOTE] +> プロパティ値の継承動作は、すべての依存関係プロパティにグローバルに有効にはなりません。これは、継承の計算時間がパフォーマンスに影響するからです。 プロパティ値の継承は通常、特定のシナリオでプロパティ値の継承が適切であると示されるプロパティに対してのみ有効にします。 SDK リファレンスで、依存関係プロパティの「依存関係プロパティの情報」セクションを調べて、依存関係プロパティで継承を行うかどうかを決定できます。 + + 次の例ではバインディングを示し、前述のバインディングの例では示されていなかったバインディングのソースを指定する プロパティを設定します。 子オブジェクトの以降のバインディングではソースを指定する必要はなく、親 オブジェクトの から継承された値を使用できます \(または、子オブジェクトが独自の または を直接指定し、そのバインディングのデータ コンテキストに継承された値を意図的に使用しないようにすることもできます\)。 + + [!code-xml[PropertiesOvwSupport#InheritanceContext](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page3.xaml#inheritancecontext)] + + 詳細については、「[プロパティ値の継承](../../../../docs/framework/wpf/advanced/property-value-inheritance.md)」を参照してください。 + + +### WPF デザイナーの統合 + 依存関係プロパティとして実装されるプロパティを使用するカスタム コントロールは、適切な [!INCLUDE[wpfdesigner_current_long](../../../../includes/wpfdesigner-current-long-md.md)] のサポートを受けます。 1 つの例として、**\[プロパティ\]** ウィンドウで、直接依存関係プロパティと添付依存関係プロパティを編集できる機能が挙げられます。 詳細については、「[コントロールの作成の概要](../../../../docs/framework/wpf/controls/control-authoring-overview.md)」を参照してください。 + + +## 依存関係プロパティ値の優先順位 + [依存関係プロパティ](GTMT)の値を取得する場合、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムに関係する他のプロパティに基づく入力のいずれかを介して、そのプロパティに設定された値を取得する可能性があります。 プロパティの値の取得方法に関するさまざまなシナリオが予測可能な方法で相互作用できるように、依存関係プロパティ値の優先順位が存在しています。 + + 例を次に示します。 この例には、すべてのボタンおよびそれらの プロパティに適用されるスタイルが含まれていますが、 値がローカルに設定されているボタンも 1 つ指定されています。 + +> [!NOTE] +> SDK ドキュメントでは、依存関係プロパティについて説明するときに、"ローカル値" または "ローカルに設定された値" という用語が使用される場合があります。 ローカルに設定された値は、コードでオブジェクト インスタンスに直接設定されたプロパティ値または XAML で要素の属性として設定されたプロパティ値です。 + + 原則として、最初のボタンではプロパティが 2 回設定されますが、適用される値は 1 つだけで、優先順位が最も高い値が適用されます。 ローカルに設定された値の優先順位が最も高いため \(実行中のアニメーションを除きますが、この例ではアニメーションは適用されていません\)、最初のボタンの背景に対するスタイル setter の値ではなくローカルに設定された値が使用されます。 2 番目のボタンにはローカル値が設定されていないため \(また、優先順位がスタイル setter より高い値が他にないため\)、そのボタンの背景はスタイル setter に基づきます。 + + [!code-xml[PropertiesOvwSupport#MiniPrecedence](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page3.xaml#miniprecedence)] + +### 依存関係プロパティの優先順位が存在する理由 + 通常、スタイルを常に適用し、個別の要素のローカルに設定された値を無効にすることは望ましくありません \(また、一般に、スタイルまたは要素の使用は非常に困難です\)。 そのため、スタイルに基づく値は、ローカルに設定された値よりも低い優先順位で動作します。 依存関係プロパティの詳細なリストおよび依存関係プロパティの有効値を決める要因については、「[依存関係プロパティ値の優先順位](../../../../docs/framework/wpf/advanced/dependency-property-value-precedence.md)」を参照してください。 + +> [!NOTE] +> [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 要素で定義されるプロパティには、依存関係プロパティではないものが多数あります。 概してプロパティは、プロパティ システムによって可能になる 1 つ以上のシナリオ \(データ バインディング、スタイル設定、アニメーション、既定値のサポート、継承、添付プロパティ、または無効化\) をサポートする必要がある場合にのみ依存関係プロパティとして実装されます。 + + +## 依存関係プロパティの詳細情報 + +- [添付プロパティ](GTMT)は、XAML で特殊な構文をサポートするプロパティの一種です。 多くの場合、添付プロパティは[!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] プロパティと 1 対 1 で対応せず、[依存関係プロパティ](GTMT)であるとは限りません。 [添付プロパティ](GTMT)の一般的な目的は、親要素と子要素がどちらも、クラス メンバー リストの一部としてそのプロパティを処理しない場合でも、子要素が親要素にプロパティ値を報告できるようにすることです。 主なシナリオは、子要素から親要素に [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] でどのように表示するかを通知できるようにすることです。例については、 または を参照してください。 詳細については、「[添付プロパティの概要](../../../../docs/framework/wpf/advanced/attached-properties-overview.md)」を参照してください。 + +- コンポーネントまたはアプリケーションの開発者は、データ バインディングやスタイルのサポートなどの機能を有効にするために、または無効化および値の強制のサポートのために、独自の[依存関係プロパティ](GTMT)を作成できます。 詳細については、「[カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md)」を参照してください。 + +- 依存関係プロパティは通常、インスタンスにアクセスできる呼び出し元がアクセス可能か、少なくとも検出可能なパブリック プロパティと見なされます。 詳細については、「[依存関係プロパティのセキュリティ](../../../../docs/framework/wpf/advanced/dependency-property-security.md)」を参照してください。 + +## 参照 + [カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md) + [読み取り専用の依存関係プロパティ](../../../../docs/framework/wpf/advanced/read-only-dependency-properties.md) + [XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) + [WPF アーキテクチャ](../../../../docs/framework/wpf/advanced/wpf-architecture.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/dependency-property-callbacks-and-validation.md b/docs/framework/wpf/advanced/dependency-property-callbacks-and-validation.md new file mode 100644 index 00000000000..a7a646d4548 --- /dev/null +++ b/docs/framework/wpf/advanced/dependency-property-callbacks-and-validation.md @@ -0,0 +1,90 @@ +--- +title: "依存関係プロパティのコールバックと検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コールバック, 検証" + - "強制値コールバック" + - "依存関係プロパティ, コールバック" + - "依存関係プロパティ, 検証" + - "検証 (依存関係プロパティの)" +ms.assetid: 48db5fb2-da7f-49a6-8e81-3540e7b25825 +caps.latest.revision: 17 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# 依存関係プロパティのコールバックと検証 +このトピックでは、検証による判定、プロパティの有効値が変更されたときに呼び出されるコールバック、値の決定への外部的影響のオーバーライドなど、プロパティ関連機能の代替カスタム実装を使用して依存関係プロパティを作成する方法について説明します。 また、これらの手法を用いてプロパティ システムの既定の動作を拡張することが適切であるシナリオについても説明します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 必要条件 + このトピックでは、依存プロパティの実装の基本シナリオとカスタム依存プロパティへのメタデータの適用方法を理解していることを前提とします。 詳細については、「[カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md)」および「[依存関係プロパティのメタデータ](../../../../docs/framework/wpf/advanced/dependency-property-metadata.md)」を参照してください。 + + +## 検証コールバック + 検証コールバックは、最初の登録時に依存関係プロパティに割り当てることができます。 検証コールバックは、プロパティ メタデータの一部ではなく、 メソッドの直接入力です。 したがって、依存関係プロパティの検証コールバックを作成した後で、その検証コールバックを新しい実装でオーバーライドすることはできません。 + + [!code-csharp[DPCallbackOverride#CurrentDefinitionWithWrapper](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DPCallbackOverride/CSharp/SDKSampleLibrary/class1.cs#currentdefinitionwithwrapper)] + [!code-vb[DPCallbackOverride#CurrentDefinitionWithWrapper](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DPCallbackOverride/visualbasic/sdksamplelibrary/class1.vb#currentdefinitionwithwrapper)] + + 検証コールバックは、オブジェクト値を受け取るように実装されます。 指定された値がプロパティに対して有効である場合は `true` を、有効でない場合は `false` を返します。 プロパティの型はプロパティ システムに登録済みの適切な型であると想定されます。したがって、通常の場合、コールバック内での型チェックは行われません。 検証コールバックは、プロパティ システムが実行するさまざまな操作で使用されます。 たとえば、最初に型を既定値で初期化したり、 を呼び出してプログラムで値を変更したり、指定された新しい既定値でメタデータをオーバーライドする場合などに使用されます。 これらの操作で呼び出された検証コールバックが `false` を返す場合、例外が発生します。 アプリケーションの作成者はこれらの例外を処理する必要があります。 検証コールバックは、列挙値の検証や、プロパティの測定値がゼロ以上に設定されている場合に integer 型または double 型の値を制限するときによく使用されます。 + + 検証コールバックは、インスタンスではなくクラスを検証するためのものです。 検証コールバックのパラメーターは、検証対象のプロパティが設定されている特定の を通知しません。 したがって、検証コールバックを使用して、プロパティ値に影響を及ぼす可能性がある "依存関係" \(インスタンス固有のプロパティ値が他のインスタンス固有のプロパティ値や実行時の状態などの要因に依存する関係\) を強制することはできません。 + + 非常に簡単な検証コールバック シナリオのコード例を次に示します。この例では、 プリミティブ型として型指定されているプロパティが または でないことを検証します。 + + [!code-csharp[DPCallbackOverride#ValidateValueCallback](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DPCallbackOverride/CSharp/SDKSampleLibrary/class1.cs#validatevaluecallback)] + [!code-vb[DPCallbackOverride#ValidateValueCallback](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DPCallbackOverride/visualbasic/sdksamplelibrary/class1.vb#validatevaluecallback)] + + +## 強制値コールバックとプロパティ変更イベント + 強制値コールバックは、依存関係プロパティの値が変更されるたびにプロパティ システムによって呼び出される 実装と同様に、プロパティの特定の インスタンスを渡します。 これら 2 つのコールバックを組み合わせて使用すると、あるプロパティが変更されたときに他のプロパティに自動的に強制または再評価が適用される一連のプロパティを要素に作成することができます。 + + 依存関係プロパティ間の関連は、最小値、最大値、および実際の値 \(または現在の値\) を表す 3 つのプロパティが要素に含まれる場合において、ユーザー インターフェイス ドリブン プロパティがあるときによく使用されます。 ここで、最大値が現在の値より小さい値に調整された場合、現在の値を新しい最大値以下の値に強制する必要があります。現在の値と最小値についても同様の関係が成り立ちます。 + + 次の、3 つの依存関係プロパティの 1 つを示す非常に簡単なコード例は、こうした関係を表しています。 この例は、3 つの関連する Reading プロパティ \(Min、Max、Current\) のうちの 1 つである `CurrentReading` プロパティの登録方法を示しています。 ここでは、前のセクションで説明した検証を使用しています。 + + [!code-csharp[DPCallbackOverride#CurrentDefinitionWithWrapper](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DPCallbackOverride/CSharp/SDKSampleLibrary/class1.cs#currentdefinitionwithwrapper)] + [!code-vb[DPCallbackOverride#CurrentDefinitionWithWrapper](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DPCallbackOverride/visualbasic/sdksamplelibrary/class1.vb#currentdefinitionwithwrapper)] + + Current のプロパティ変更コールバックを使用して、他の依存関係プロパティに対して登録されている強制値コールバックを明示的に呼び出すことにより、変更を他のプロパティに伝播します。 + + [!code-csharp[DPCallbackOverride#OnPCCurrent](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DPCallbackOverride/CSharp/SDKSampleLibrary/class1.cs#onpccurrent)] + [!code-vb[DPCallbackOverride#OnPCCurrent](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DPCallbackOverride/visualbasic/sdksamplelibrary/class1.vb#onpccurrent)] + + 強制値コールバックは、Current プロパティが依存している可能性があるプロパティの値を検証し、必要に応じて現在の値に強制を機能させます。 + + [!code-csharp[DPCallbackOverride#CoerceCurrent](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DPCallbackOverride/CSharp/SDKSampleLibrary/class1.cs#coercecurrent)] + [!code-vb[DPCallbackOverride#CoerceCurrent](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DPCallbackOverride/visualbasic/sdksamplelibrary/class1.vb#coercecurrent)] + +> [!NOTE] +> プロパティの既定値は強制されません。 プロパティ値が初期既定値を保持している場合、または を使用して他の値を消去した場合、プロパティ値が既定値に等しくなる可能性があります。 + + 強制値コールバックとプロパティ変更コールバックはプロパティ メタデータの一部です。 したがって、特定の依存関係プロパティを所有する型から派生させた型に存在するその特定の依存関係プロパティのコールバックは、派生させた型でプロパティのメタデータをオーバーライドすることで変更できます。 + + +## 高度な強制とコールバック シナリオ + +### 制約と目的の値 + プロパティ システムは、 コールバックを使用して、開発者が宣言したロジックに従って値に強制を機能させます。ただし、ローカルに設定されたプロパティの、強制が機能している値は、"目的の値" を内部で保持します。 制約がアプリケーションの有効期間内に動的に変更される可能性があるプロパティ値に基づいている場合、強制の制約も動的に変更されます。そして、制約されているプロパティは、指定された新しい制約の下で、その値を目的の値にできる限り近づけることができます。 制約がすべて解除された場合、値は目的の値になります。 相互に循環的に依存する複数のプロパティを使用している場合、非常に複雑な依存関係シナリオを導入することができます。 たとえば、Min\/Max\/Current シナリオでは、Minimum と Maximum をユーザー設定可能なプロパティにすることができます。 その場合、Maximum が常に Minimum より大きくなり、Minimum が常に Maximum より小さくなるように強制しなければならないことがあります。 ただし、この強制を有効にし、Maximum が Minimum に強制された場合、Current が未設定の状態になります。なぜなら、Currenct は Maximum と Minimum の両方に依存し、両者の値の間の範囲内 \(この場合はゼロ\) に制約されるからです。 その後、Maximum または Minimum が調整された場合、Current はいずれかの値を "追跡" すると考えられます。なぜなら、Current の目的の値が依然として保持されており、制約が緩和されると Current が目的の値に到達しようとするからです。 + + 複雑な依存関係に関する技術的な問題はありません。ただし、多数の再評価が必要になる場合、パフォーマンスが若干低下することがあります。また、UI に直接影響する場合は、ユーザーの混乱につながることもあります。 プロパティ変更コールバックおよび強制値コールバックについては注意が必要です。試行中の強制ができる限り明確に処理されること、およびその制約が "過剰制約" ではないことを確認してください。 + +### CoerceValue を使用した値変更の取り消し + プロパティ システムは、 値を返すすべての を特殊なケースとして処理します。 この特殊なケースは、 呼び出しの原因となったプロパティの変更がプロパティ システムによって拒否され、代わりにプロパティの直前の値がプロパティ システムによって報告されることを意味します。 このメカニズムは、非同期に開始されたプロパティの変更が現在のオブジェクトの状態に対して依然として有効であるかどうかをチェックし、有効でない場合はその変更を抑制する場合に役立ちます。 考えられるもう 1 つのシナリオとして、プロパティ値の決定におけるどの構成要素が報告されるプロパティ値を決定するかに応じて値を選択的に抑制することもできます。 これを行うには、コールバックで渡された とプロパティ識別子を への入力として使用し、次に を処理します。 + +## 参照 + [依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md) + [依存関係プロパティのメタデータ](../../../../docs/framework/wpf/advanced/dependency-property-metadata.md) + [カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/dependency-property-metadata.md b/docs/framework/wpf/advanced/dependency-property-metadata.md new file mode 100644 index 00000000000..869477d6165 --- /dev/null +++ b/docs/framework/wpf/advanced/dependency-property-metadata.md @@ -0,0 +1,107 @@ +--- +title: "依存関係プロパティのメタデータ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "API, メタデータ" + - "依存関係プロパティ, メタデータ" + - "メタデータ, 依存関係プロパティ" + - "オーバーライド (メタデータを)" +ms.assetid: d01ed009-b722-41bf-b82f-fe1a8cdc50dd +caps.latest.revision: 24 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 23 +--- +# 依存関係プロパティのメタデータ +[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] プロパティ システムには、リフレクションや一般的な [!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] 特性から得られる以上の詳細なプロパティ情報を提供するメタデータ報告システムが含まれています。 [依存関係プロパティ](GTMT)のメタデータは、[依存関係プロパティ](GTMT)を定義するクラスで個別に割り当てることも、[依存関係プロパティ](GTMT)を別のクラスに追加する際に変更することもできます。また、[依存関係プロパティ](GTMT)をその定義元の基本クラスから継承するすべての派生クラスで明確にオーバーライドすることもできます。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 必要条件 + このトピックでは、ユーザーが [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] クラスの既存の依存関係プロパティの使用という観点から依存関係プロパティを理解し、「[依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md)」トピックを通読していることを前提としています。 このトピックの例に従うには、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] について理解し、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションの作成方法に精通している必要があります。 + + +## 依存関係プロパティのメタデータの使用方法 + 依存関係プロパティのメタデータは、依存プロパティの特性を照会して調べることができるオブジェクトとして存在します。 また、プロパティ システムは、特定の依存関係プロパティを処理する際に、このメタデータに頻繁にアクセスします。 依存関係プロパティのメタデータ オブジェクトには、次のような情報が格納されます。 + +- 依存関係プロパティの既定値 \(ローカル値、スタイル、継承などによってその他の依存関係プロパティ値が指定されない場合\)。 依存関係プロパティの値を割り当てる際の、既定値と、プロパティ システムで使用される優先順位の関係に関する詳細な説明については、「[依存関係プロパティ値の優先順位](../../../../docs/framework/wpf/advanced/dependency-property-value-precedence.md)」を参照してください。 + +- 所有者型に基づく強制または変更通知の動作に影響を与えるコールバック実装への参照。 多くの場合、これらのコールバックは非パブリックなアクセス レベルで定義されます。したがって、参照が、許可されたアクセス スコープ内にない限り、一般にメタデータから実際の参照を取得することはできません。 依存関係プロパティのコールバックの詳細については、「[依存関係プロパティのコールバックと検証](../../../../docs/framework/wpf/advanced/dependency-property-callbacks-and-validation.md)」を参照してください。 + +- 対象の依存関係プロパティが [WPF フレームワーク レベル](GTMT)のプロパティと見なされる場合、[WPF フレームワーク レベル](GTMT)の依存関係プロパティ特性がメタデータに含まれる可能性があります。これは、[WPF フレームワーク レベル](GTMT)のレイアウト エンジンやプロパティ継承ロジックなどのサービスの情報および状態を報告します。 この内容に関する依存関係プロパティのメタデータの詳細については、「[フレームワーク プロパティ メタデータ](../../../../docs/framework/wpf/advanced/framework-property-metadata.md)」を参照してください。 + + +## メタデータ API + プロパティ システムで使用されるほとんどのメタデータ情報を報告する型は クラスです。 メタデータ インスタンスは、依存関係プロパティをプロパティ システムに登録する際に必要に応じて指定されます。それ自体を所有者として追加する追加の型、または基本クラスの依存関係プロパティ定義から継承したメタデータをオーバーライドする追加の型に再度指定することもできます \(プロパティ登録でメタデータが指定されない場合は、そのクラスの既定値を使用して既定の が作成されます\)。 インスタンスの依存関係プロパティからメタデータを取得するさまざまな オーバーロードを呼び出すと、登録されているメタデータが として返されます。 + + クラスは、[WPF フレームワーク レベル](GTMT) クラスなどのアーキテクチャ区分に対してより具体的なメタデータを提供するために派生されます。 は、アニメーション報告を追加し、 は、前のセクションで説明した [WPF フレームワーク レベル](GTMT) プロパティを提供します。 依存関係プロパティを登録すると、これらの 派生クラスにその依存関係プロパティを登録できるようになります。 メタデータを検査すると、基本 型が派生クラスにキャストされる場合があります。これにより、より具体的な情報プロパティを検査することができます。 + +> [!NOTE] +> このドキュメントでは、 で指定できるプロパティ特性を "フラグ" と呼ぶことがあります。 依存関係プロパティの登録やメタデータのオーバーライドで使用するメタデータ インスタンスを新しく作成する場合、フラグ列挙体である を使用してこれらの値を指定し、この列挙体の値 \(連結された値である可能性があります\) を コンストラクターに渡します。 ただし、メタデータが構築されると、これらのオプション特性は、構築元の列挙値ではなく、一連のブール型プロパティとして 内で公開されます。 これらのブール型プロパティを使用すると、目的の情報を取得するためにフラグ列挙値に対してマスクを適用することなく、各条件をチェックすることができます。 コンストラクターは、コンストラクター シグネチャを適切な長さに保つために、連結された を使用します。一方、実際に構築されたメタデータは、より直感的な方法でメタデータを照会できるようにするために、プロパティを個別に公開します。 + + +## メタデータをオーバーライドする場合、クラスを派生する場合 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムには、依存関係プロパティを完全に再実装することなく、依存関係プロパティの一部の特性を変更するための機能が用意されています。 これは、特定の型に存在する依存関係プロパティについて、そのプロパティ メタデータの別のインスタンスを構築することで実現されます。 既存の依存関係プロパティの大部分は仮想プロパティではありません。したがって、厳密には、継承クラスでの依存関係プロパティの "再実装" は、既存のメンバーをシャドウすることによってのみ実現されます。 + + 型の依存関係プロパティに対して有効にしようとしているシナリオが、既存の依存関係プロパティの特性の変更では実現できない場合、派生クラスを作成し、その派生クラスでカスタム依存関係プロパティを宣言することが必要になる場合があります。 カスタム依存関係プロパティは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA#tla_api#plural](../../../../includes/tlasharptla-apisharpplural-md.md)] で定義されている依存関係プロパティとまったく同じように動作します。 カスタム依存関係プロパティの詳細については、「[カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md)」を参照してください。 + + オーバーライドすることができない依存関係プロパティの代表的な特性の 1 つは、依存関係プロパティの値型です。 目的の動作にほぼ合致する依存関係プロパティを継承していても、その依存関係プロパティに別の型が必要な場合には、カスタム依存関係プロパティを実装し、型変換またはカスタム クラスのその他の実装を通じてプロパティをリンクする必要があります。 また、既存の を置換することはできません。このコールバックが、そのメタデータ内ではなく、登録フィールド自体に存在するためです。 + + +## 既存のメタデータを変更するシナリオ + 既存の依存関係プロパティのメタデータを使用している場合、依存関係プロパティのメタデータを変更する一般的なシナリオの 1 つは、既定値を変更することです。 プロパティ システム コールバックの変更または追加は、より高度なシナリオです。 依存関係プロパティ間の異なる相互関係が派生クラスの実装に含まれている場合は、プロパティ システム コールバックの変更または追加が必要になることがあります。 コードと宣言的な使用方法の両方をサポートするプログラミング モデルを使用する条件の 1 つとして、プロパティを任意の順序で設定できる必要があります。 したがって、依存関係プロパティはすべて、コンテキストを使用せずにジャスト イン タイムで設定する必要があります。また、設定順序 \(コンストラクター内の順序など\) に依存することもできません。 この内容に関するプロパティ システムの詳細については、「[依存関係プロパティのコールバックと検証](../../../../docs/framework/wpf/advanced/dependency-property-callbacks-and-validation.md)」を参照してください。 検証コールバックは、メタデータの一部ではなく、依存関係プロパティ識別子の一部であることに注意してください。 したがって、検証コールバックは、メタデータのオーバーライドでは変更できません。 + + 既存の依存関係プロパティに対して、[WPF フレームワーク レベル](GTMT)のプロパティのメタデータ オプションの変更が必要になる場合があります。 これらのオプションは、[WPF フレームワーク レベル](GTMT)のプロパティに関する特定の既知の条件を、レイアウト システムなどの他の [WPF フレームワーク レベル](GTMT)のプロセスに伝達します。 通常、これらのオプションを設定するのは、新しい依存関係プロパティを登録するときだけです。ただし、 呼び出しまたは 呼び出しの一部として [WPF フレームワーク レベル](GTMT)のプロパティのメタデータを変更することもできます。 使用する具体的な値および詳細については、「[フレームワーク プロパティ メタデータ](../../../../docs/framework/wpf/advanced/framework-property-metadata.md)」を参照してください。 新しく登録した依存関係プロパティに対してこれらのオプションを設定する方法の詳細については、「[カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md)」を参照してください。 + + +### メタデータのオーバーライド + メタデータのオーバーライドの主な目的は、型に存在する依存関係プロパティに適用される、メタデータから派生したさまざまな動作を変更できるようにすることです。 この理由については、「[メタデータ](#dp_metadata_contents)」セクションで詳しく説明します。 コード例を含む詳細については、「[依存関係プロパティのメタデータをオーバーライドする](../../../../docs/framework/wpf/advanced/how-to-override-metadata-for-a-dependency-property.md)」を参照してください。 + + プロパティのメタデータは、登録 \(\) の呼び出し時に依存関係プロパティに対して指定できます。 ただし、多くの場合、その依存関係プロパティを継承するクラスに対して、型固有のメタデータを提供する必要があります。 これを行うには、 メソッドを呼び出します。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] の例では、 依存関係プロパティを最初に登録する型は クラスです。 ただし、 クラスは、この依存関係プロパティのメタデータをオーバーライドし、それ自体の初期既定値を `false` から `true` に変更して提供します。オーバーライドしない場合は、元の 実装を再利用します。 + + メタデータをオーバーライドすると、さまざまなメタデータ特性がマージされるか置き換えられます。 + +- はマージされます。 新しい を追加すると、そのコールバックがメタデータに格納されます。 オーバーライド時に を指定しないと、 の値が昇格され、メタデータでそれを指定した最も近い先祖からの参照となります。 + +- の実際のプロパティ システム動作では、階層内のすべてのメタデータ所有者用の実装が維持されてテーブルに追加されます。プロパティ システムによる実行順序としては、派生回数の最も多いクラスのコールバックが最初に呼び出されます。 + +- は置き換えられます。 オーバーライド時に を指定しないと、 の値は、メタデータでそれを指定した最も近い先祖によって決まります。 + +- 実装は置き換えられます。 新しい を追加すると、そのコールバックがメタデータに格納されます。 オーバーライド時に を指定しないと、 の値が昇格され、メタデータでそれを指定した最も近い先祖からの参照となります。 + +- プロパティ システム動作では、直接のメタデータ内の だけが呼び出されます。 階層内の他の 実装への参照は行われません。 + + この動作は によって実装され、派生メタデータ クラス上でオーバーライドできます。 + +#### 添付プロパティのメタデータのオーバーライド + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、[添付プロパティ](GTMT)は依存関係プロパティとして実装されます。 このことは、添付プロパティもプロパティ メタデータを持ち、これを個々のクラスでオーバーライドできることを意味します。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の添付プロパティのスコープでは、通常、任意の に、添付プロパティを設定できます。 したがって、クラスのインスタンスで設定されている場合、 派生クラスは添付プロパティのメタデータをオーバーライドできます。 オーバーライドできるのは、既定値、コールバック、または [WPF フレームワーク レベル](GTMT)の特性報告プロパティです。 添付プロパティがクラスのインスタンスで設定されている場合、そのオーバーライド プロパティ メタデータ特性が適用されます。 たとえば、プロパティが他では特に指定されていないときには、オーバーライド値がクラスのインスタンス上の添付プロパティの値として報告されるように、既定値をオーバーライドできます。 + +> [!NOTE] +> プロパティは、添付プロパティに関係しません。 + + +### 既存の依存関係プロパティの所有者としてのクラスの追加 + クラスは、 メソッドを使用することで、それ自体を登録済みの依存関係プロパティの所有者として追加できます。 これにより、当初は別の型に対して登録された依存関係プロパティをクラスで使用できるようになります。 通常、追加するクラスは、所有者としてその依存関係プロパティを最初に登録した型の派生クラスではありません。 これにより、元の所有者クラスと追加するクラスが同一のクラス階層内にない場合でも、クラスとその派生クラスで[依存関係プロパティ](GTMT)の実装を "継承" することが事実上可能になります。 また、追加するクラスとすべての派生クラスでは、型固有のメタデータを元の依存関係プロパティに提供することができます。 + + 追加するクラスは、プロパティ システムのユーティリティ メソッドを介してそれ自体を所有者として追加するだけでなく、追加のパブリック メンバーをそれ自体で宣言する必要があります。これは、[依存関係プロパティ](GTMT)を完全な形でプロパティ システムに登録し、コードとマークアップの両方に対して公開するためです。 既存の依存関係プロパティを追加するクラスは、その依存関係プロパティのオブジェクト モデルを公開する限り、新しいカスタム依存関係プロパティを定義するクラスと同様の役割を負います。 これらのメンバーの中で最初に公開するのは、依存関係プロパティの識別子フィールドです。 このフィールドは、 呼び出しの戻り値に割り当てられる、 型の `public static readonly` フィールドである必要があります。 2 番目に定義するメンバーは、[!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] の "ラッパー" プロパティです。 ラッパーを使用すると、コード内での依存関係プロパティの操作がずっと簡単になります \( を毎回呼び出す必要がなくなり、ラッパー内で 1 回呼び出すだけで済むようになります\)。 このラッパーの実装方法は、カスタム[依存関係プロパティ](GTMT)を登録する場合の実装方法とまったく同じです。 [依存関係プロパティ](GTMT)の実装の詳細については、「[カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md)」および「[依存関係プロパティの所有者の種類を追加する](../../../../docs/framework/wpf/advanced/how-to-add-an-owner-type-for-a-dependency-property.md)」を参照してください。 + +#### AddOwner および添付プロパティ + 所有者クラスで添付プロパティとして定義されている依存関係プロパティに対して、 を呼び出すことができます。 通常、これは、以前の添付プロパティを非添付の依存関係プロパティとして公開する目的で行います。 次に、 の戻り値を、依存関係プロパティの識別子として使用される `public static readonly` フィールドとして公開し、プロパティがメンバー テーブルに表示され、クラス内で非添付プロパティを使用できるように、適切な "ラッパー" プロパティを定義します。 + +## 参照 + + + + + [依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md) + [フレームワーク プロパティ メタデータ](../../../../docs/framework/wpf/advanced/framework-property-metadata.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/dependency-property-security.md b/docs/framework/wpf/advanced/dependency-property-security.md new file mode 100644 index 00000000000..b97c20d8220 --- /dev/null +++ b/docs/framework/wpf/advanced/dependency-property-security.md @@ -0,0 +1,51 @@ +--- +title: "依存関係プロパティのセキュリティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "依存関係プロパティ, access" + - "依存関係プロパティ, セキュリティ" + - "セキュリティ, 依存関係プロパティ" + - "セキュリティ, ラッパー" + - "検証, 依存関係プロパティ" + - "ラッパー, access" + - "ラッパー, セキュリティ" +ms.assetid: d10150ec-90c5-4571-8d35-84bafa2429a4 +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 7 +--- +# 依存関係プロパティのセキュリティ +依存関係プロパティは一般に、パブリック プロパティと見なす必要があります。 [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] プロパティ システムの性質上、依存関係プロパティ値については、セキュリティは保証されません。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## ラッパーと依存関係プロパティのアクセスとセキュリティ + 通常、依存関係プロパティは、インスタンスのプロパティの取得や設定を簡素化する "ラッパー" [!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] プロパティと共に実装されます。 ただし、ラッパーは、依存関係プロパティと対話する場合に使用される基になる および の各静的呼び出しを実装する便利な方法です。 別な観点で考えると、プロパティは、プライベート フィールドではなく依存関係プロパティによって偶然にサポートされている[!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] プロパティとして公開されています。 ラッパーに適用されるセキュリティ機構は、基になる依存関係プロパティに関するプロパティ システムの動作およびアクセスと同等ではありません。 ラッパーに対してセキュリティを要求しても、この便利な方法が使用できなくなるだけで、 の呼び出しは阻止されません。 同様に、ラッパーに保護またはプライベート アクセス レベルを設定しても、効果的なセキュリティは実現されません。 + + 独自の依存関係プロパティを記述する場合は、ラッパーと 識別子フィールドをパブリック メンバーとして宣言する必要があります。そうすることで、呼び出し元がそのプロパティの実際のアクセス レベルに関する、誤りの原因となる情報を取得することを防止できます \(そのストアが依存関係プロパティとして実装されているため\)。 + + カスタム依存関係プロパティの場合、そのプロパティを読み取り専用の依存関係プロパティとして登録できます。これは、そのプロパティの への参照を保持していなくてもだれでもプロパティを設定できるのを防ぐ有効な手段となります。 詳細については、「[読み取り専用の依存関係プロパティ](../../../../docs/framework/wpf/advanced/read-only-dependency-properties.md)」を参照してください。 + +> [!NOTE] +> 識別子フィールドをプライベートとして宣言することは、禁止されていないだけでなく、カスタム クラスの直接公開名前空間を減らすのに役立つ可能性もあります。ただし、このようなプロパティは、[!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] 言語定義と同じ意味で "プライベート" であると見なすことはできません。その理由は次のセクションで説明します。 + + +## 依存関係プロパティのプロパティ システムによる公開 + をパブリック以外のアクセス レベルとして宣言することは、一般的には役に立たず、誤りの原因となる可能性もあります。 このようなアクセス レベル設定を行っても、宣言しているクラスからインスタンスへの参照を取得できなくなるだけです。 しかしプロパティ システムには、クラスのインスタンスや派生クラスのインスタンスに存在する特定のプロパティを識別する手段として を返すいくつかの局面があり、この識別子は、元の静的識別子がパブリック以外として宣言されていた場合でも、 の呼び出しで使用できます。 また、 仮想メソッドは、値が変更された既存の依存関係プロパティに関する情報を受け取ります。 さらに、 メソッドは、値がローカルに設定されたインスタンスのプロパティに関する識別子を返します。 + +### 検証とセキュリティ + に対して要求を発行し、要求エラーの発生時に検証エラーでプロパティの設定を回避する方法は、十分なセキュリティ機構ではありません。 による設定値の無効化も、悪意のある呼び出し元がアプリケーション ドメイン内で動作している場合には、これらの呼び出し元によって抑制される可能性があります。 + +## 参照 + [カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/dependency-property-value-precedence.md b/docs/framework/wpf/advanced/dependency-property-value-precedence.md new file mode 100644 index 00000000000..0ca2cfb7ed8 --- /dev/null +++ b/docs/framework/wpf/advanced/dependency-property-value-precedence.md @@ -0,0 +1,142 @@ +--- +title: "依存関係プロパティ値の優先順位 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クラス, 所有者 (依存関係プロパティの)" + - "依存関係プロパティ, クラス (所有者としての)" + - "依存関係プロパティ, メタデータ" + - "メタデータ, 依存関係プロパティ" +ms.assetid: 1fbada8e-4867-4ed1-8d97-62c07dad7ebc +caps.latest.revision: 27 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 26 +--- +# 依存関係プロパティ値の優先順位 + ここでは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] プロパティ システムの機能が[依存関係プロパティ](GTMT)の値にどのように影響する可能性があるかについて説明し、プロパティ システムの側面がプロパティの有効値に適用される際の優先順位を示します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 必要条件 + このトピックでは、ユーザーが [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] クラスの既存の依存関係プロパティの使用という観点から依存関係プロパティを理解し、「[依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md)」トピックを通読していることを前提としています。 このトピックの例を実行するには、[!INCLUDE[TLA#tla_xaml](../../../../includes/tlasharptla-xaml-md.md)] について理解し、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションの記述に精通している必要があります。 + + +## WPF プロパティ システム + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムは、依存関係プロパティの値をさまざまな要素に基づいて決定するための強力な方法を提供し、リアルタイムのプロパティ検証や遅延バイディングなどの機能を実現すると共に、関連するプロパティに他のプロパティの値の変更について通知します。 依存関係プロパティの値を決定するために使用される厳密な順序とロジックは、かなり複雑です。 この順序を理解することにより、不必要なプロパティ設定を回避できると同時に、依存関係プロパティ値を変更または取得する操作を行ったにもかかわらず最終的に想定どおりの値が設定されなかった場合、その原因を究明できます。 + + +## 複数の場所に "設定" 可能な依存関係プロパティ + 1 つのプロパティ \(\) に、値に影響を与える可能性がある 3 つの異なる "設定" 操作がある場合の [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] 例を次に示します。 + + [!code-xml[PropertiesOvwSupport#DPPrecedence](../../../../samples/snippets/csharp/VS_Snippets_Wpf/PropertiesOvwSupport/CSharp/page4.xaml#dpprecedence)] + + ここでは、赤色、緑色、青色のうち、どの色が適用されるかを考えます。 + + アニメーション化された値および強制を除き、ローカルのプロパティ セットが最も高い優先順位で設定されます。 任意のスタイルまたはコントロール テンプレートの上に設定した場合でも、ローカルに値を設定すると、この値が適用されると想定できます。 この例では、 が Red としてローカルに設定されています。 したがって、このスコープ内で定義されるスタイルは、これ以外の場合にはそのスコープ内のその型のすべての要素に適用される暗黙のスタイルであっても、 プロパティに値を指定する際には最高の優先順位を持ちません。 Button インスタンスから Red のローカル値を削除した場合は、スタイルが優先され、ボタンはスタイルから Background 値を取得します。 スタイル内ではトリガーが優先されるため、マウスが置かれるとボタンは青色になり、それ以外の場合は緑色になります。 + + +## 依存関係プロパティ設定の優先順位リスト + 依存関係プロパティのランタイム値を割り当てる際に、最終的にプロパティ システムで使用される順序を次に示します。 優先順位の高いものから順に示します。 このリストは、「[依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md)」で取り上げた一般化を一部拡張したものです。 + +1. **プロパティ システムの強制型変換。**強制型変換の詳細については、このトピックの「[強制型変換、アニメーション、および基本値](#animations)」を参照してください。 + +2. **アクティブなアニメーション、または Hold 動作を使用したアニメーション。**実際的な効果を持たせるためには、プロパティのアニメーションは値がローカルに設定されている場合でも、その基本 \(アニメーション化されていない\) 値よりも優先される必要があります。 詳細については、このトピックの「[強制型変換、アニメーション、および基本値](#animations)」を参照してください。 + +3. **ローカル値。**ローカル値は "ラッパー" プロパティの利点を利用して設定できます。これは、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)]内で属性またはプロパティ要素として設定することと同じです。また、特定のインスタンスのプロパティを使用して [!INCLUDE[TLA#tla_api](../../../../includes/tlasharptla-api-md.md)] を呼び出すことによって設定することもできます。 バインディングまたはリソースを使用してローカル値を設定すると、優先順位に関しては値を直接設定した場合と同じように扱われます。 + +4. **TemplatedParent テンプレート プロパティ。**テンプレート \( または \) の一部として作成された要素には、 が含まれます。 これが当てはまる状況については、このトピックの「[TemplatedParent](#templatedparent)」を参照してください。 テンプレート内では、次の優先順位が適用されます。 + + 1. テンプレートからのトリガー。 + + 2. テンプレート内のプロパティ セット \(通常は [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] 属性によって提供される\)。 + +5. **暗黙のスタイル。** `Style` プロパティにだけ適用されます。 `Style` プロパティには、その要素の種類に一致するキーを持つスタイル リソースが設定されます。 このスタイル リソースは、ページまたはアプリケーション内に存在する必要があります。暗黙のスタイル リソースの検索はテーマまで進行しません。 + +6. **スタイルのトリガー。**ページまたはアプリケーションからのスタイル内トリガー \(スタイルは明示または暗黙のスタイルですが、優先順位の低い既定のスタイルではありません\)。 + +7. **テンプレートのトリガー。**スタイル内のテンプレートの任意のトリガー、または直接適用されたテンプレート。 + +8. **スタイルの setter。**ページまたはアプリケーションからのスタイル内 の値。 + +9. **既定の \(テーマ\) スタイル。**これが適用される状況とテーマ スタイル内でのテーマ スタイルとテンプレートの関連付けの詳細については、このトピックの「[既定の \(テーマ\) スタイル](#themestyles)」を参照してください。 既定のスタイル内では、次の優先順位が適用されます。 + + 1. テーマ スタイル内のアクティブなトリガー。 + + 2. テーマ スタイル内の setter。 + +10. **継承。**いくつかの依存関係プロパティは、アプリケーション全体で各要素に明確に設定しなくて済むように、親要素から子要素に値が継承されます。 詳細については、[プロパティ値の継承](../../../../docs/framework/wpf/advanced/property-value-inheritance.md) を参照してください。 + +11. **依存関係プロパティのメタデータの既定値。**依存関係プロパティは、その特定のプロパティのプロパティ システム登録によって設定された既定値を持つ場合があります。 また、依存関係プロパティを継承する派生クラスは、型ごとにそのメタデータ \(既定値を含む\) をオーバーライドすることができます。 詳細については、「[依存関係プロパティのメタデータ](../../../../docs/framework/wpf/advanced/dependency-property-metadata.md)」を参照してください。 継承されたプロパティについては、既定値の前に継承がチェックされるため、親要素の既定値が子要素よりも優先されます。 このため、継承可能なプロパティがどこにも設定されていない場合は、子要素の既定値の代わりにルートまたは親に指定された既定値が使用されます。 + + +## TemplatedParent + 優先順位項目としての TemplatedParent は、標準のアプリケーション マークアップに直接宣言した要素のプロパティには適用されません。 TemplatedParent の概念は、テンプレートのアプリケーションを通じて成立するビジュアル ツリー内の下位項目に対してのみ存在します。 プロパティ システムが値の テンプレートを検索する場合は、その要素を作成したテンプレートが検索されます。 一般に、 テンプレートのプロパティ値は、下位要素のローカル値として設定されている場合と同様に機能します。ただし、テンプレートは共有されている可能性があるため、優先順位はローカル値よりも下位である必要があります。 詳細については、「」を参照してください。 + + +## Style プロパティ + 前に説明した検索の順序は、 プロパティを除く、存在するすべての依存関係プロパティに適用されます。 プロパティは、それ自体のスタイルを設定できないという特異なプロパティであるため、優先順位の項目 5 ~ 8 は適用されません。 また、 のアニメーションまたは強制型変換は推奨されません \( のアニメーションにはカスタムのアニメーション クラスが必要になります\)。 プロパティを設定する方法として、残されたのは次の 3 つです。 + +- **明示的なスタイル。** プロパティを直接設定します。 ほとんどのシナリオでは、スタイルをインラインで定義するのではなくリソースとして明示的なキーにより参照します。 この場合、Style プロパティ自体はローカル値であるかのように動作します \(優先順位の項目 3\)。 + +- **暗黙のスタイル。** プロパティを直接設定しません。 ただし、 はリソース検索シーケンスのどれかのレベル \(ページ、アプリケーション\) に存在し、適用対象のスタイルの種類に一致するリソース キーによりキーが設定されます。 この場合、 プロパティ自体はシーケンス内で優先順位の項目 5 となるように動作します。 この情報は、 プロパティに を使用し、その結果で を検索することによって確認できます。 + +- **既定のスタイル** \(別名**テーマ スタイル**\)。 プロパティは直接設定しません。実行時までは、プロパティを読み取ると `null` が返されます。 この方法では、スタイルは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プレゼンテーション エンジンの一部である実行時テーマ評価処理によって生成されます。 + + テーマ内にない暗黙のスタイルの場合、型は正確に一致する必要があります。たとえば、`Button` 派生クラス `MyButton` では、`Button` のスタイルは暗黙的には使用されません。 + + +## 既定の \(テーマ\) スタイル。 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] に付属するコントロールには既定のスタイルがあります。 既定のスタイルはテーマによって異なる可能性があります。既定のスタイルがテーマ スタイルとも呼ばれるのは、このような理由があるためです。 + + コントロールの既定のスタイルに含まれる最も重要な情報は、コントロール テンプレートです。このテンプレートは、テーマ スタイルでは プロパティの setter として存在します。 既定のスタイルにテンプレートがなかったとしたら、カスタム スタイルの一部としてカスタム テンプレートを持たないコントロールは、表示形式をまったく持たないことになります。 既定のスタイルのテンプレートによって、コントロールの表示形式に基本構造が与えられ、テンプレートのビジュアル ツリーに定義されたプロパティとそれに対応するコントロール クラスが適切に接続されます。 コントロールからは、テンプレートを完全に置き換えなくてもコントロールの表示形式を変更できる一連のプロパティが提供されます。 たとえば、 コントロールの既定の表示形式を例として説明します。このコントロールは、 のコンポーネントです。 + + は、特定のカスタマイズしたプロパティを持ちます。 の既定のテンプレートによって、傾斜して表示されるいくつかの入れ子になった コンポーネントから成る基本構造とビジュアル ツリーが作成されます。 テンプレートの一部であるプロパティを クラスによってカスタマイズされることを意図して公開する場合は、テンプレート内で [TemplateBinding](../../../../docs/framework/wpf/advanced/templatebinding-markup-extension.md) を使用してそのプロパティを公開する必要があります。 では、これらの境界のさまざまなプロパティは などのプロパティへのテンプレート バインディングを共有します。 しかし、他の特定のプロパティやビジュアル配置は、コントロール テンプレート内にハードコーディングされるかテーマに直接設定された値にバインドされており、テンプレート全体を置き換えるには不十分であるため変更できません。 一般にプロパティが、テンプレート化されている親に由来し、テンプレート バインディングから公開されない場合、対象をこのプロパティに設定する簡単な方法がないため、スタイルを使用して調整することはできません。 しかし、このプロパティも、適用されるテンプレートのプロパティ値継承による、または既定値による影響を受けます。 + + テーマ スタイルの定義では、データ型がキーとして使用されます。 ただし、テーマを特定の要素インスタンスに適用すると、この型に対するテーマの検索は、コントロールの プロパティをチェックすることにより実行されます。 これは、暗黙のスタイルでリテラル型が使用されるのと対照的です。 の値は、実装側で変更されない場合でも派生クラスに継承されます \(プロパティを変更する方法として意図されているのは、プロパティ レベルでオーバーライドすることではなく、既定値をプロパティ メタデータで変更することです\)。 このような間接的な方法を使うことにより、基本クラスでは、他の方法ではスタイルを持つことがない \(さらに重要なことには、そのスタイル内にテンプレートを持たないため既定の表示形式をまったく持つことがない\) 派生要素にテーマ スタイルを定義できます。 そのため、`MyButton` を から派生でき、さらに 既定テンプレートを取得できます。 `MyButton` コントロールの作成者が別の動作を必要とする場合は、別のキーを返すよう の依存関係プロパティのメタデータを `MyButton` でオーバーライドし、`MyButton` コントロールにパッケージ化する必要がある `MyButton` 用テンプレートなどを関連テーマ スタイルに定義できます。 テーマ、スタイル、およびコントロールの作成の詳細については、「[コントロールの作成の概要](../../../../docs/framework/wpf/controls/control-authoring-overview.md)」を参照してください。 + + +## 動的リソース参照とバインディング + 動的リソース参照とバインディング操作では、設定された場所の優先順位が優先されます。 たとえば、ローカル値に適用される動的リソースは優先順位の項目 3 に準拠し、テーマ スタイル内のプロパティ setter のバインディングは優先順位の項目 9 で適用されます。 動的リソース参照とバインディングはどちらも、アプリケーションの実行時の状態から値を取得できる必要があります。このため、指定された任意のプロパティに対してプロパティ値の優先順位を決定する実際のプロセスは、実行時まで拡張されます。 + + 動的リソース参照は、厳密にはプロパティ システムの一部ではありませんが、前に述べた順序に関連する独自の検索順序を持ちます。 この優先順位の詳細については、「[XAML リソース](../../../../docs/framework/wpf/advanced/xaml-resources.md)」を参照してください。 この優先順位は、簡単に要約すると、ページ ルート、アプリケーション、テーマ、システムに対する要素です。 + + 動的リソース参照とバインディング操作は設定された場所の優先順位を持ちますが、その値は遅延されます。 このため、動的リソースまたはバインディングをローカル値に設定した場合、このローカル値を変更すると動的バインディングまたはバインディング全体が完全に置き換えられます。 ローカルに設定された値を消去するために メソッドを呼び出した場合でも、動的リソースまたはバインディングは復元されません。 実際、動的リソースまたはバインディングが指定されたプロパティ \(リテラルのローカル値ではない\) で を呼び出した場合、これらもこの の呼び出しによって消去されます。 + + +## SetCurrentValue + メソッドはプロパティを設定するためのもう 1 つの方法ですが、プロパティの設定は優先順位の順に行われません。 を使用すると、前の値のソースを上書きすることなくプロパティ値を変更できます。 は、ローカル値の優先順位を与えずに値を設定する場合にいつでも使用できます。 たとえば、トリガーによってプロパティが設定され、 を介してこのプロパティに別の値が割り当てられた場合、プロパティ システムはトリガーを考慮するため、トリガーのアクションが発生するとプロパティは変更されます。 を使用すると、高い優先順位を持つソースを与えることなくプロパティ値を変更できます。 同様に、 を使用すると、バインディングを上書きすることなくプロパティ値を変更できます。 + + +## 強制、アニメーション、および基本値 + 強制とアニメーションはどちらも、この [!INCLUDE[TLA2#tla_sdk](../../../../includes/tla2sharptla-sdk-md.md)] 全体で "基本値" と呼ばれる値に基づいて機能します。 基本値は、項目 2 に達するまで項目を上方に評価することによって決定される値です。 + + アニメーションでは、特定の動作に "From" と "To" の両方を指定していない場合、またはアニメーションが完了すると基本値に戻るようにする場合に、基本値はアニメーション化される値に影響を与えます。 これを実際に確かめるには、[アニメーションのターゲット値 \(From、To、および By\) のサンプル](http://go.microsoft.com/fwlink/?LinkID=159988)を実行します。 ローカル値の初期値をアニメーション内の "From" とは異なる値にするために、例の中で四角形の高さを示すローカル値を設定してください。 アニメーションは "From" 値を使用して直ちに開始され、開始後にこの基本値を置き換えます。 アニメーションは、Stop を指定してアニメーションを完了した後、アニメーションの前に見つかった値に戻るように指定できます。 それ以降、基本値の決定には通常の優先順位が使用されます。 + + 1 つのプロパティに複数のアニメーションが適用され、アニメーションごとに値の優先順位に関する定義が異なる場合が考えられます。 この場合は、単に優先順位が高いアニメーションを適用するのではなく、アニメーションでそれらの値を組み合わせることがあります。 これは、アニメーションが実際にどのように定義されているか、およびアニメーション化される値の型によって異なります。 プロパティのアニメーション化の詳細については、「[アニメーションの概要](../../../../docs/framework/wpf/graphics-multimedia/animation-overview.md)」を参照してください。 + + 強制は、最高レベルで適用されます。 既に実行中のアニメーションでも、値の強制に制約されます。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 内の既存の依存関係プロパティの中には、組み込みの強制を持つものがあります。 カスタム依存関係プロパティの場合は、プロパティの作成時に を記述し、メタデータの一部としてコールバックを渡すことにより、カスタム依存関係プロパティの強制動作を定義します。 また、派生クラス内のそのプロパティでメタデータをオーバーライドすることにより、既存のプロパティの強制動作をオーバーライドすることもできます。 強制の制約がその時点の制約として適用されるが基本値は引き続き保持されるという形で、強制は基本値と関係しています。 したがって、その後で強制の制約が解除されると、強制はその基本値に最も近い値を返し、制約がすべて解除された場合には、強制のプロパティへの影響は直ちになくなる可能性があります。 強制型変換の動作の詳細については、「[依存関係プロパティのコールバックと検証](../../../../docs/framework/wpf/advanced/dependency-property-callbacks-and-validation.md)」を参照してください。 + + +## トリガー動作 + 多くの場合、コントロールは、トリガー動作をテーマ内の既定のスタイルの一部として定義します。 コントロールにローカル プロパティを設定すると、ユーザーによる表示上または動作上のイベントに対してトリガーが応答できなくなる場合があります。 プロパティ トリガーは、最も一般的には、コントロール プロパティや などの状態プロパティのために使用されます。 たとえば、既定で が無効な場合 \( のトリガーが `false` の場合\)、テーマ スタイル内の 値によってコントロールは "灰色表示" されます。 ただし、ローカルの 値を設定している場合は、プロパティがトリガーされるというこのシナリオでも、ローカル プロパティ セットが通常の灰色表示よりも優先されます。 テーマ レベルのトリガー動作が含まれるプロパティの値の設定は慎重に行い、そのコントロールで意図されるユーザー エクスペリエンスに過度に干渉しないようにしてください。 + + +## ClearValue および値の優先順位 + メソッドは、要素に設定される[依存関係プロパティ](GTMT)からローカルに適用された値を消去するのに役立つ方法を提供します。 ただし、 を呼び出しても、プロパティの登録時にメタデータ内に設定された既定値が新しい有効値になることは保証されません。 値の優先順位に関係するその他すべての値は依然としてアクティブです。 ローカルに設定された値のみが、一連の優先順位から削除されています。 たとえば、テーマ スタイルによっても設定されているプロパティで を呼び出すと、テーマ値はメタデータに基づいた既定値ではなく新しい値として適用されます。 プロセスから関連するすべてのプロパティ値を取得して、登録されたメタデータの既定値に値を設定する場合は、依存関係プロパティのメタデータを照会することによって明確に既定値を取得でき、さらにこの既定値を使用し、 を呼び出してプロパティをローカルに設定できます。 + +## 参照 + + + [依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md) + [カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md) + [依存関係プロパティのコールバックと検証](../../../../docs/framework/wpf/advanced/dependency-property-callbacks-and-validation.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/digital-ink-how-to-topics.md b/docs/framework/wpf/advanced/digital-ink-how-to-topics.md new file mode 100644 index 00000000000..d3212e17c78 --- /dev/null +++ b/docs/framework/wpf/advanced/digital-ink-how-to-topics.md @@ -0,0 +1,34 @@ +--- +title: "デジタル インクに関する「方法」トピック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "デジタル インク" + - "インク, デジタル" +ms.assetid: c29f8728-bfcb-4af7-9fbc-8169e180109f +caps.latest.revision: 40 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 37 +--- +# デジタル インクに関する「方法」トピック +## このセクションの内容 + [カスタム コントロールからインクを選択する](../../../../docs/framework/wpf/advanced/how-to-select-ink-from-a-custom-control.md) + [インク データにカスタム データを追加する](../../../../docs/framework/wpf/advanced/how-to-add-custom-data-to-ink-data.md) + [カスタム コントロールでインクを消去する](../../../../docs/framework/wpf/advanced/how-to-erase-ink-on-a-custom-control.md) + [アプリケーション ジェスチャを認識する](../../../../docs/framework/wpf/advanced/how-to-recognize-application-gestures.md) + [インクをドラッグ アンド ドロップする](../../../../docs/framework/wpf/advanced/how-to-drag-and-drop-ink.md) + [InkCanvas にデータをバインドする](../../../../docs/framework/wpf/advanced/how-to-data-bind-to-an-inkcanvas.md) + [分析のヒントに従ってインクを分析する](../../../../docs/framework/wpf/advanced/how-to-analyze-ink-with-analysis-hints.md) + [インクの回転](../../../../docs/framework/wpf/advanced/how-to-rotate-ink.md) + [Journal ファイルを読み取る](../Topic/How%20to:%20Read%20a%20Journal%20File.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/digital-ink-overviews.md b/docs/framework/wpf/advanced/digital-ink-overviews.md new file mode 100644 index 00000000000..74944582d0a --- /dev/null +++ b/docs/framework/wpf/advanced/digital-ink-overviews.md @@ -0,0 +1,31 @@ +--- +title: "デジタル インクの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "デジタル インク" + - "インク, デジタル" +ms.assetid: 5ddb23a6-7813-4058-b59d-29ff3341638c +caps.latest.revision: 39 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 39 +--- +# デジタル インクの概要 +## このセクションの内容 + [インクの概要](../../../../docs/framework/wpf/advanced/getting-started-with-ink.md) + [インクの収集](../../../../docs/framework/wpf/advanced/collecting-ink.md) + [手書き認識](../../../../docs/framework/wpf/advanced/handwriting-recognition.md) + [インクの格納](../../../../docs/framework/wpf/advanced/storing-ink.md) + [インク オブジェクト モデル : Windows フォームおよび COM と WPF の比較](../../../../docs/framework/wpf/advanced/the-ink-object-model-windows-forms-and-com-versus-wpf.md) + [高度なインク処理](../../../../docs/framework/wpf/advanced/advanced-ink-handling.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/digital-ink.md b/docs/framework/wpf/advanced/digital-ink.md new file mode 100644 index 00000000000..74b82fce30a --- /dev/null +++ b/docs/framework/wpf/advanced/digital-ink.md @@ -0,0 +1,32 @@ +--- +title: "デジタル インク | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "デジタル インク" + - "インク, デジタル" +ms.assetid: d0d6df69-daf9-4cf3-b7f9-ffee588037a3 +caps.latest.revision: 39 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 39 +--- +# デジタル インク +ここでは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] でのデジタル インクの使用について説明します。 デジタル インクは、これまでは Tablet PC SDK のみに含まれていましたが、Windows Presentation Foundation の主要部分でも使用可能になりました。 そのため、Windows Presentation Foundation の機能を使用して、本格的な Tablet PC アプリケーションの開発が可能になりました。 + +## このセクションの内容 + [概要](../../../../docs/framework/wpf/advanced/digital-ink-overviews.md) + [方法のトピック](../../../../docs/framework/wpf/advanced/digital-ink-how-to-topics.md) + +## 関連項目 + [Windows Presentation Foundation](../../../../docs/framework/wpf/index.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/disable-the-realtimestylus-for-wpf-applications.md b/docs/framework/wpf/advanced/disable-the-realtimestylus-for-wpf-applications.md new file mode 100644 index 00000000000..8239be0516e --- /dev/null +++ b/docs/framework/wpf/advanced/disable-the-realtimestylus-for-wpf-applications.md @@ -0,0 +1,63 @@ +--- +title: "WPF アプリケーションのリアルタイムなスタイラス入力を無効にする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e0525309-5ede-4782-837d-dbf6e5554859 +caps.latest.revision: 3 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 3 +--- +# WPF アプリケーションのリアルタイムなスタイラス入力を無効にする +Windows Presentation Foundation \(WPF\) には Windows 7 のタッチ入力処理をサポートする機能が組み込まれています。スタイラス入力を イベント、 イベントおよび イベントとして、タブレットからリアルタイムに実行できるようにします。 また、Windows 7 ではマルチタッチ入力による Win32 WM\_TOUCH ウィンドウ メッセージにも対応しています。 これらの 2 つの API を、同じ HWND で同時に使用することはできません。 タブレットからのタッチ入力を有効にすると \(WPF アプリケーションの既定\)、WM\_TOUCH messages は無効になります。 そのため、WM\_TOUCH を使用して WPF ウィンドウからタッチ メッセージを受信する場合には、WPF に組み込まれているスタイラス入力のサポートを無効にする必要があります。 この状況に該当するのは、WM\_TOUCH を使用するコンポーネントをホストしている WPF ウィンドウなどです。 + + WPF でのスタイラス入力の待機を無効にするには、WPF ウィンドウで追加されたタブレットのサポートをすべて削除します。 + +## 使用例 + 次に示すサンプル コードでは、リフレクションを使って既定のタブレット入力のサポートを削除する方法を示しています。 + +``` +public static void DisableWPFTabletSupport() +{ + // Get a collection of the tablet devices for this window. + TabletDeviceCollection devices = System.Windows.Input.Tablet.TabletDevices; + + if (devices.Count > 0) + { + // Get the Type of InputManager. + Type inputManagerType = typeof(System.Windows.Input.InputManager); + + // Call the StylusLogic method on the InputManager.Current instance. + object stylusLogic = inputManagerType.InvokeMember("StylusLogic", + BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic, + null, InputManager.Current, null); + + if (stylusLogic != null) + { + // Get the type of the stylusLogic returned from the call to StylusLogic. + Type stylusLogicType = stylusLogic.GetType(); + + // Loop until there are no more devices to remove. + while (devices.Count > 0) + { + // Remove the first tablet device in the devices collection. + stylusLogicType.InvokeMember("OnTabletRemoved", + BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic, + null, stylusLogic, new object[] { (uint)0 }); + } + } + + } +} +``` + +## 参照 + [スタイラスからの入力のインターセプト](../../../../docs/framework/wpf/advanced/intercepting-input-from-the-stylus.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/document-serialization-and-storage.md b/docs/framework/wpf/advanced/document-serialization-and-storage.md new file mode 100644 index 00000000000..632590dbf30 --- /dev/null +++ b/docs/framework/wpf/advanced/document-serialization-and-storage.md @@ -0,0 +1,90 @@ +--- +title: "ドキュメントのシリアル化および保存 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ドキュメント, シリアル化" + - "ドキュメント, storage" + - "シリアル化 (ドキュメントの)" + - "保存 (ドキュメントを)" +ms.assetid: 4839cd87-e206-4571-803f-0200098ad37b +caps.latest.revision: 24 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 23 +--- +# ドキュメントのシリアル化および保存 +[!INCLUDE[TLA#tla_winfx](../../../../includes/tlasharptla-winfx-md.md)] は、高品質なドキュメントを作成および表示するための強力な環境を提供します。 固定ドキュメントとフロー ドキュメントの両方をサポートする拡張機能、高度な表示コントロール、および 2D や 3D の強力なグラフィックス機能を組み合わせることにより、[!INCLUDE[TLA2#tla_winfx](../../../../includes/tla2sharptla-winfx-md.md)] アプリケーションの品質とユーザー エクスペリエンスをさらに向上させることができます。 ドキュメントのメモリ内表現を柔軟に管理するための機能は [!INCLUDE[TLA2#tla_winfx](../../../../includes/tla2sharptla-winfx-md.md)] の重要な機能の 1 つであり、データ ストアからドキュメントを効率的に保存して読み込むための機能はほとんどのアプリケーションで必要になります。 内部のメモリ内表現から外部のデータ ストアにドキュメントを変換するプロセスは、[シリアル化](GTMT)と呼ばれます。 データ ストアを読み込んで元のメモリ内インスタンスを再作成する逆のプロセスは、逆シリアル化と呼ばれます。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## ドキュメントのシリアル化について + 理想的には、メモリ内のドキュメントを[シリアル化](GTMT)および逆シリアル化してメモリに戻すプロセスは、アプリケーションから透過的に実行されます。 アプリケーションは、シリアライザーの "write" メソッドを呼び出してドキュメントを保存します。一方、デシリアライザーの "read" メソッドは、データ ストアにアクセスして元のインスタンスをメモリ内に再作成します。 シリアル化および逆シリアル化によってドキュメントが元の形式に再作成される限り、通常、データの特定の保存形式はアプリケーションにとって重要ではありません。 + + 多くのアプリケーションには複数のシリアル化オプションが用意されています。これは、ドキュメントを異なるメディアや異なる形式に保存できるようにするためです。 たとえば、ディスク ファイル、データベース、または Web サービスにドキュメントを保存するための "名前を付けて保存" オプションがアプリケーションに用意されていることがあります。 同様に、複数のシリアライザーを使用することで、HTML、RTF、XML、XPS などさまざまな形式でドキュメントを保存できます。また、サードパーティの形式に保存することもできます。 シリアル化は、アプリケーションに対し、ストレージ メディアの詳細を各シリアライザーの実装内に分離するインターフェイスを定義します。 [!INCLUDE[TLA2#tla_winfx](../../../../includes/tla2sharptla-winfx-md.md)] [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] には、ストレージ詳細のカプセル化という利点に加えて、いくつかの重要な機能が用意されています。 + +### .NET Framework 3.0 ドキュメント シリアライザーの機能 + +- 高レベルのドキュメント オブジェクト \([論理ツリー](GTMT)およびビジュアル\) への直接アクセス。この機能により、自動修正されたコンテンツ、2D\/3D 要素、イメージ、メディア、ハイパーリンク、注釈、およびその他のサポート コンテンツを効率的に保存できます。 + +- [同期](GTMT)操作と[非同期](GTMT)操作。 + +- 次の拡張機能を持つプラグイン シリアライザーのサポート。 + + - すべての [!INCLUDE[TLA2#tla_winfx](../../../../includes/tla2sharptla-winfx-md.md)] アプリケーションで使用される、システム全体へのアクセス。 + + - アプリケーション プラグインの簡単な検出。 + + - サードパーティのカスタム プラグインの簡単な配置、インストール、および更新。 + + - ランタイム設定およびオプションをカスタマイズするためのユーザー インターフェイス サポート。 + +### XPS 印刷パス + [!INCLUDE[TLA#tla_winfx](../../../../includes/tlasharptla-winfx-md.md)] [!INCLUDE[TLA2#tla_xps](../../../../includes/tla2sharptla-xps-md.md)] 印刷パスもまた、印刷出力を介してドキュメントを書き込むための拡張性の高い機能を提供します。 [!INCLUDE[TLA2#tla_xps](../../../../includes/tla2sharptla-xps-md.md)] は、ドキュメントのファイル形式および [!INCLUDE[TLA#tla_winvista](../../../../includes/tlasharptla-winvista-md.md)] のネイティブな印刷スプール形式として使用されます。 [!INCLUDE[TLA2#tla_xps](../../../../includes/tla2sharptla-xps-md.md)] ドキュメントは、[!INCLUDE[TLA2#tla_xps](../../../../includes/tla2sharptla-xps-md.md)] 互換プリンターに直接送信できます。中間形式に変換する必要はありません。 印刷パスの出力オプションおよび機能の詳細については、「[印刷の概要](../../../../docs/framework/wpf/advanced/printing-overview.md)」を参照してください。 + + +## プラグイン シリアライザー + API は、プラグイン シリアライザーとリンクされたシリアライザーの両方をサポートします。これらのシリアライザーは、アプリケーションから別々にインストールされ、実行時にバインドされます。これらのシリアライザーにアクセスする際には、 の検出機構が使用されます。 プラグイン シリアライザーには、配置およびシステム全体での使用を容易にするための拡張機能が用意されています。 リンクされたシリアライザーは、プラグイン シリアライザーにアクセスできない [!INCLUDE[TLA#tla_xbap#plural](../../../../includes/tlasharptla-xbapsharpplural-md.md)] などの[部分信頼](GTMT)環境にも実装できます。 リンクされたシリアライザーは、 クラスの派生実装に基づいており、アプリケーション内に直接コンパイルおよびリンクされます。 プラグイン シリアライザーとリンクされたシリアライザーは、同一のパブリック メソッドおよびイベントを介して動作します。これにより、いずれかまたは両方のシリアライザーを同じアプリケーション内で容易に使用することができます。 + + プラグイン シリアライザーは、新しいストレージ設計およびファイル形式に拡張機能を提供します。これにより、ビルド時に使用される可能性があるすべての形式に対してコードを直接記述する必要がなくなるため、アプリケーション開発者の負担が軽減されます。 また、プラグイン シリアライザーでは、カスタム ファイル形式または専用のファイル形式のためのシステム アクセス可能なプラグインを標準的な方法で配置、インストール、および更新できます。これにより、サードパーティの開発者の負担も軽減されます。 + +### プラグイン シリアライザーの使用 + プラグイン シリアライザーは簡単に使用できます。 クラスは、システムにインストールされている各プラグインの オブジェクトを列挙します。 プロパティは、現在の構成に基づいてインストール済みのプラグインをフィルター処理し、アプリケーションによるシリアライザーの読み込みおよび使用が可能であるかどうかを検証します。 は、 などその他のプロパティも提供します。アプリケーションは、これらのプロパティを使用して、使用可能な出力形式のシリアライザーの選択をユーザーに求めることができます。 [!INCLUDE[TLA2#tla_xps](../../../../includes/tla2sharptla-xps-md.md)] の既定のプラグイン シリアライザーは [!INCLUDE[TLA2#tla_winfx](../../../../includes/tla2sharptla-winfx-md.md)] によって提供されます。このシリアライザーは必ず列挙されます。 ユーザーが出力形式を選択したら、 メソッドを使用してその形式に対応する を作成します。 次に、. メソッドを呼び出して、ドキュメント ストリームをデータ ストアに出力できます。 + + "PlugInFileFilter" プロパティ内で メソッドを使用するアプリケーションの例を次に示します。 PlugInFileFilter は、インストール済みのプラグインを列挙し、使用可能なファイル オプションを使用してフィルター文字列を作成します。このフィルター文字列は で使用されます。 + + [!code-csharp[DocumentSerialize#DocSerializeFileFilter](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DocumentSerialize/CSharp/ThumbViewer.cs#docserializefilefilter)] + + ユーザーが出力ファイル名を選択した後、 メソッドを使用して、指定したドキュメントを指定した形式で保存する例を次に示します。 + + [!code-csharp[DocumentSerialize#DocSerializePlugIn](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DocumentSerialize/CSharp/ThumbViewer.cs#docserializeplugin)] + + +### プラグイン シリアライザーのインストール + クラスは、プラグイン シリアライザーの検出およびアクセスに使用される、上位レベルのアプリケーション インターフェイスを提供します。 は、システムにインストールされているアクセスできるシリアライザーを検索し、その一覧をアプリケーションに提供します。 インストール済みのシリアライザーの詳細は、レジストリ設定で定義されます。 メソッドを使用すると、プラグイン シリアライザーをレジストリに追加することができます。[!INCLUDE[TLA2#tla_winfx](../../../../includes/tla2sharptla-winfx-md.md)] がまだインストールされていない場合は、プラグインのインストール スクリプトでレジストリの値を直接設定できます。 メソッドを使用すると、以前にインストールされたプラグインを削除できます。アンインストール スクリプトでレジストリ設定をリセットすることもできます。 + +### プラグイン シリアライザーの作成 + プラグイン シリアライザーとリンクされたシリアライザーは、公開されている同一のパブリック メソッドおよびイベントを使用します。また、同様の方法で[同期的](GTMT)または[非同期的](GTMT)に動作するように設計できます。 プラグイン シリアライザーを作成する場合、通常は次の 3 つの基本手順に従います。 + +1. まず、リンクされたシリアライザーとしてシリアライザーを実装およびデバッグします。 最初にテスト アプリケーション内でシリアライザーを直接コンパイルおよびリンクして作成すると、ブレークポイントや、テストに役立つその他のデバッグ サービスへの完全なアクセスが提供されます。 + +2. シリアライザーのテストが完了したら、 インターフェイスを追加してプラグインを作成します。 インターフェイスにより、論理ツリー、 オブジェクト、 要素などすべての [!INCLUDE[TLA2#tla_winfx](../../../../includes/tla2sharptla-winfx-md.md)] オブジェクトへのフル アクセスが可能になります。 さらに、 は、リンクされたシリアライザーによって使用される同一の同期および非同期のメソッドとイベントを提供します。 サイズの大きいドキュメントは出力に時間がかかる場合があるので、ユーザー操作の応答性を維持するために非同期操作を使用するようお勧めします。また、データ ストアに問題が発生した場合に備えて "キャンセル" オプションを用意してください。 + +3. プラグイン シリアライザーを作成したら、プラグインの配布、インストール、およびアンインストールのためのインストール スクリプトを実装します \(前の「[プラグイン シリアライザーのインストール](#InstallingPluginSerializers)」を参照してください\)。 + +## 参照 + + + + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) + [印刷の概要](../../../../docs/framework/wpf/advanced/printing-overview.md) + [XML Paper Specification: 概要](http://go.microsoft.com/fwlink?LinkID=106246) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/documents-in-wpf.md b/docs/framework/wpf/advanced/documents-in-wpf.md new file mode 100644 index 00000000000..3085339a708 --- /dev/null +++ b/docs/framework/wpf/advanced/documents-in-wpf.md @@ -0,0 +1,158 @@ +--- +title: "WPF のドキュメント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ブラウザーで表示可能なドキュメント" + - "ドキュメント, ブラウザーで表示可能" + - "ドキュメント, コントロール" + - "ドキュメント, パッケージ化" + - "ドキュメント, テキストのレイアウト" + - "ドキュメント, 型" + - "ドキュメント, XPS" + - "パッケージ化 (ドキュメントを)" + - "XPS ドキュメント" +ms.assetid: 6e8db7bc-050a-4070-aa72-bb8c46e87ff8 +caps.latest.revision: 36 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 35 +--- +# WPF のドキュメント +[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] は、[!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] の前の世代よりも簡単にアクセスおよび読み取りを行うことができるように設計されている、忠実性の高いコンテンツの作成を可能にするさまざまなドキュメント機能を提供します。 拡張された機能と品質に加えて、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] は、ドキュメントの表示、パッケージ化、およびセキュリティの統合されたサービスも提供します。 ここでは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のドキュメントの種類とドキュメントのパッケージ化の概要を説明します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## ドキュメントの種類 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、ドキュメントは用途に基づいて大きく 2 つのカテゴリに分けられます。これらのドキュメントのカテゴリは "固定ドキュメント" および "フロー ドキュメント" と呼ばれます。 + + 固定ドキュメントは、使用されるディスプレイまたはプリンター ハードウェアに関係なく、正確な [!INCLUDE[TLA#tla_wys](../../../../includes/tlasharptla-wys-md.md)] プレゼンテーションを必要とするアプリケーションを対象に用意されています。 固定ドキュメントの一般的な用途としては、元のページ デザインに準拠していることが重要になるデスクトップ パブリッシング、ワード プロセッシング、およびフォーム レイアウトなどがあります。 レイアウトの一部として、固定ドキュメントでは、使用中のディスプレイまたは印刷デバイスに依存しないコンテンツ要素の正確な配置位置が保持されます。 たとえば、96 dpi のディスプレイに表示される固定ドキュメント ページは、600 dpi のレーザー プリンターに出力される場合に、4800 dpi の写真植字に出力される場合とまったく同じように表示されます。 ドキュメントの品質は各デバイスの機能に応じて最大化されますが、ページ レイアウトはすべての場合において同じになります。 + + これに対して、フロー ドキュメントは、表示と読みやすさを最適化するように設計されており、ドキュメントが主に読みやすさを目的としている場合に最適です。 フロー ドキュメントは、1 つの定義済みのレイアウトに設定するのではなく、ウィンドウのサイズ、デバイスの解像度、省略可能なユーザー設定など、ランタイム変数に基づいてコンテンツを動的に調整したり再配置したりします。 Web ページは、そのコンテンツが現在のウィンドウに収まるように動的にフォーマットされるフロー ドキュメントの簡単な例です。 フロー ドキュメントは、ランタイム環境に基づいて、ユーザーにとっての表示と読みやすさを最適化します。 たとえば、同じフロー ドキュメントでも、高解像度の 19 インチ ディスプレイなのか、小型の 2x3 インチの PDA 画面なのかに応じて、最も読みやすくなるように書式設定が動的に変更されます。 また、フロー ドキュメントには、検索、読みやすさを最適化するモードの表示、およびフォントのサイズと外観を変更する機能を含むさまざまな組み込み済みの機能があります。 フロー ドキュメントの図、例、および詳細については、「[フロー ドキュメントの概要](../../../../docs/framework/wpf/advanced/flow-document-overview.md)」を参照してください。 + + +## ドキュメント コントロールおよびテキスト レイアウト + [!INCLUDE[TLA2#tla_avalonwinfx](../../../../includes/tla2sharptla-avalonwinfx-md.md)] には、アプリケーション内の固定ドキュメント、フロー ドキュメント、および一般的なテキストの使用を簡略化する、事前にビルドされたコントロールのセットが用意されています。 固定ドキュメントのコンテンツの表示は、 コントロールを使用してサポートされます。 フロー ドキュメントのコンテンツの表示は、異なるユーザー シナリオに割り当てられている 、および という 3 つの異なるコントロールによってサポートされます \(後のセクションを参照してください\)。 その他の [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] コントロールでは、一般的なテキストの使用をサポートする簡略化されたレイアウトが提供されます \(後の「[ユーザー インターフェイスのテキスト](#text_in_the_user_interface)」を参照してください\)。 + +### 固定ドキュメント コントロール \- DocumentViewer + コントロールは コンテンツを表示するように設計されています。 コントロールは、印刷出力、クリップボードへのコピー、拡大、およびテキスト検索の機能を含む共通の操作へのサポートが組み込まれている直感的なユーザー インターフェイスを提供します。 コントロールは、使い慣れたスクロール機構を使用してコンテンツのページへのアクセスを提供します。 すべての [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] コントロールと同様に、 は、事実上すべてのアプリケーションまたは環境に視覚的にコントロールを統合できるようにする、完全なスタイル変更または一部のスタイル変更をサポートします。 + + は、読み取り専用の形でコンテンツを表示するように設計されています。コンテンツの編集または変更は行うことはできず、サポートされていません。 + + +### フロー ドキュメント コントロール + **メモ :** フロー ドキュメント機能の詳細、およびフロー ドキュメントの作成方法については、「[フロー ドキュメントの概要](../../../../docs/framework/wpf/advanced/flow-document-overview.md)」を参照してください。 + + フロー ドキュメントのコンテンツの表示は、、および という 3 つのコントロールによってサポートされます。 + +#### FlowDocumentReader + には、単一ページ \(一度に 1 ページ\) 表示モード、2 ページ \(読書形式\) 表示モード、連続スクロール \(ボトムレス\) 表示モードなど、さまざまな表示モードをユーザーが動的に選択できるようにするための機能が用意されています。 これらの表示モードの詳細については、 を参照してください。 表示モードを動的に切り替える必要がない場合は、 および を使用すると便利です。これらは、特定の表示モードに固定された軽量のコンテンツ ビューアーです。 + +#### FlowDocumentPageViewer と FlowDocumentScrollViewer + は、コンテンツを一度に 1 ページずつ表示し、 はコンテンツを連続したスクロール モードで表示します。 および は、いずれも特定の表示モードに固定されています。 と比較してください。このリーダーでは、 列挙体により各種表示モードを動的に切り替えることができますが、 よりも多くのリソースを消費します。 + + 既定では、垂直スクロール バーは常に表示され、水平スクロール バーは必要に応じて表示されます。 の既定の [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] にはツール バーが含まれませんが、 プロパティを使用して組み込みツール バーを有効にできます。 + + +### ユーザー インターフェイスのテキスト + ドキュメントへのテキストの追加だけでなく、テキストはもちろん、フォームなどのアプリケーション UI で使用できます。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] には、画面にテキストを描画するための複数のコントロールが含まれています。 各コントロールは、異なるシナリオを対象にしており、それぞれに一連の機能と制限があります。 一般的に、[!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] で短い文を使用するなど、限定的なテキストのサポートが必要な場合は、 要素を使用する必要があります。 最小限のテキスト サポートが必要な場合には、 を使用できます。 詳細については、「[TextBlock の概要](../../../../docs/framework/wpf/controls/textblock-overview.md)」を参照してください。 + + +## ドキュメントのパッケージ化 + の [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] は、簡単にアクセスでき、移植可能で、配布しやすい単一のコンテナー内のアプリケーション データ、ドキュメント コンテンツ、および関連リソースを編成するための効率的な方法を提供します。 ZIP ファイルは、複数のオブジェクトを 1 つの単位として保持することができる の種類の 1 例です。 パッケージ化の [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] は、XML ファイルおよび ZIP ファイル アーキテクチャと共に Open Packaging Conventions 標準を使用して、既定の 実装を提供します。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のパッケージ化 [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] は、パッケージの作成、およびパッケージへのオブジェクトの格納とそれらのオブジェクトへのアクセスを簡単にします。 に格納されたオブジェクトは \("パーツ"\) と呼ばれます。 パッケージには、パーツの発行元を識別し、パッケージのコンテンツが変更されていないことを検証するのに使用できる署名されたデジタル証明書を含めることもできます。 パッケージには、追加情報をパッケージに追加できたり、既存のパーツのコンテンツを実際に変更することなく特定のパーツに関連付けたりすることができる、 機能も含まれます。 パッケージ サービスでは、[!INCLUDE[TLA#tla_rm](../../../../includes/tlasharptla-rm-md.md)] もサポートされます。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] パッケージ アーキテクチャは、さまざまな重要な技術の基盤として機能します。 + +- [!INCLUDE[TLA#tla_xps](../../../../includes/tlasharptla-xps-md.md)] に準拠する [!INCLUDE[TLA2#tla_xps](../../../../includes/tla2sharptla-xps-md.md)] ドキュメント。 + +- Microsoft Office "12" Open XML Formats のドキュメント \(.docx\)。 + +- 独自のアプリケーション設計のカスタム保存形式。 + + パッケージ化 API に基づいて、 は、特に [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 固定コンテンツ ドキュメントを格納するために設計されています。 は、ビューアーで開き、 コントロールに表示し、印刷スプールにルーティングし、[!INCLUDE[TLA2#tla_xps](../../../../includes/tla2sharptla-xps-md.md)] と互換性のあるプリンターに直接出力することができる、自己完結型ドキュメントです。 + + 以下のセクションでは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] で提供されている および [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] について追加情報を示します。 + + +### パッケージ コンポーネント + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] パッケージ化 API は、アプリケーション データとドキュメントを 1 つの移植可能な単位に編成できるようにします。 ZIP ファイルは、最もよく使用されるパッケージの種類の 1 つであり、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] で用意されている既定のパッケージの種類です。 自体は、 が標準のオープン XML および ZIP ファイル アーキテクチャを使用して実装される元となる抽象クラスです。 メソッドは、既定では を使用して ZIP ファイルを作成および使用します。 パッケージには、次の 3 種類の基本的な項目を含めることができます。 + +||| +|-|-| +||アプリケーション コンテンツ、データ、ドキュメント、およびリソース ファイル。| +||識別、認証、および検証のための [X.509 証明書](GTMT)。| +||パッケージまたは特定のパーツに関連する追加された情報。| + + +#### PackageParts + \("パーツ"\) は に格納されたオブジェクトを参照する抽象クラスです。 ZIP ファイルでは、パッケージ パーツは ZIP ファイル内に格納された個別のファイルに対応します。 は、 内に格納されるシリアル化可能なオブジェクトに対する既定の実装を提供します。 ファイル システムと同様に、パッケージに含まれているパーツは、階層的ディレクトリまたは "フォルダー スタイル" 編成で格納されます。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] パッケージ化 API を使用すると、アプリケーションは、単一の ZIP ファイル コンテナーを使用して、複数の オブジェクトの書き込み、格納、および読み取りを行うことができます。 + + +#### PackageDigitalSignatures + セキュリティ保護のために、パッケージ内のパーツに \("デジタル署名"\) を関連付けることができます。 には、次の 2 つの機能を提供する [509](GTMT) が組み込まれています。 + +1. パーツの発行元を識別および認証します。 + +2. パーツが変更されていないことを検証します。 + + デジタル署名はパーツを変更できなくするものではありません。しかし、パーツが何らかの方法で変更されている場合、デジタル署名に対する検証チェックは失敗します。 その後、アプリケーションでは適切なアクションを実行することができます。たとえば、パーツを開く操作をブロックしたり、パーツが変更されていて安全ではないことをユーザーに知らせたりすることができます。 + + +#### PackageRelationships + \("リレーションシップ"\) は、追加情報をパッケージまたはパッケージ内のパーツに関連付けるための機構を提供します。 リレーションシップは、実際のパーツのコンテンツを変更することなく追加情報をパーツに関連付けることができるパッケージ レベルの機能です。 パーツのコンテンツに新しいデータを直接挿入するのは、次のように多くの場合において実用的ではありません。 + +- パーツの実際の種類およびそのコンテンツ スキーマが不明な場合。 + +- わかっていたとしても、コンテンツ スキーマが新しい情報を追加する方法を提供しない可能性がある場合。 + +- パーツが、デジタル署名されたり、暗号化されたり、変更できなくされたりする可能性がある場合。 + + パッケージ リレーションシップは、追加情報を個別のパーツまたはパッケージ全体に追加または関連付けるための検出可能な方法を提供します。 パッケージ リレーションシップは、次の 2 つの主要な機能のために使用されます。 + +1. 1 つのパーツから別のパーツへの依存関係の定義。 + +2. メモまたはパーツに関連したその他のデータを追加する情報リレーションシップの定義。 + + は、依存関係を定義し、パッケージのパーツまたはパッケージ全体に関連付けられたその他の情報を追加するための、すばやく検出可能な方法を提供します。 + + +##### 依存関係 + 依存関係は、1 つのパーツによって他のパーツに対して作成される依存関係を記述するために使用されます。 たとえば、パッケージには、1 つ以上の \ イメージ タグを含む HTML パーツが含まれている場合があります。 イメージ タグは、パッケージの内部またはパッケージの外部 \(インターネット経由でアクセスできる場合など\) にあるその他のパーツとして配置されているイメージを参照します。 HTML ファイルに関連付けられている を作成すると、依存リソースの検出およびアクセスがすばやく簡単になります。 ブラウザーまたはビューアー アプリケーションは、パーツ リレーションシップに直接アクセスし、スキーマが不明であったりドキュメントの解析を行わない状態で依存リソースをすぐにアセンブルできます。 + + +##### 情報リレーションシップ + メモまたは注釈と同様に、 は、実際にパーツのコンテンツ自体を変更することなく、パーツに関連付けられるその他の種類の情報を格納するために使用することもできます。 + + +## XPS ドキュメント + [!INCLUDE[TLA#tla_xps](../../../../includes/tlasharptla-xps-md.md)] ドキュメントは、レンダリングのために必要なすべてのリソースおよび情報と共に 1 つ以上の固定ドキュメントを格納するパッケージです。 [!INCLUDE[TLA2#tla_xps](../../../../includes/tla2sharptla-xps-md.md)] はネイティブな [!INCLUDE[TLA#tla_winvista](../../../../includes/tlasharptla-winvista-md.md)] 印刷スプール ファイル形式でもあります。 An は、標準 ZIP データセットに格納され、イメージ ファイルやフォント ファイルなどのバイナリ コンポーネントと XML コンポーネントを組み合わせて格納できます。[PackageRelationships](#PackageRelationships) は、ドキュメントを完全にレンダリングするために必要なコンテンツとリソースの間の依存関係を定義するために使用されます。 の設計は、次のような複数の用途をサポートする忠実性の高い単一のドキュメント ソリューションを提供します。 + +- 単一の移植可能で配布しやすいファイルとして、固定ドキュメント コンテンツおよびリソースを読み取り、書き込み、および格納する。 + +- [!INCLUDE[TLA2#tla_xps](../../../../includes/tla2sharptla-xps-md.md)] ビューアー アプリケーションを使用してドキュメントを表示する。 + +- [!INCLUDE[TLA#tla_winvista](../../../../includes/tlasharptla-winvista-md.md)] のネイティブな印刷スプール出力形式でドキュメントを出力する。 + +- [!INCLUDE[TLA2#tla_xps](../../../../includes/tla2sharptla-xps-md.md)] と互換性があるプリンターにドキュメントを直接ルーティングする。 + +## 参照 + + + + + + + + [テキスト](../../../../docs/framework/wpf/advanced/optimizing-performance-text.md) + [フロー ドキュメントの概要](../../../../docs/framework/wpf/advanced/flow-document-overview.md) + [印刷の概要](../../../../docs/framework/wpf/advanced/printing-overview.md) + [ドキュメントのシリアル化および保存](../../../../docs/framework/wpf/advanced/document-serialization-and-storage.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/documents.md b/docs/framework/wpf/advanced/documents.md new file mode 100644 index 00000000000..10ffff4a6cb --- /dev/null +++ b/docs/framework/wpf/advanced/documents.md @@ -0,0 +1,39 @@ +--- +title: "ドキュメント | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "ドキュメント" + - "ドキュメント, 機能" +ms.assetid: 7bf37ccb-5d09-4eae-9661-929582aeb259 +caps.latest.revision: 86 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 86 +--- +# ドキュメント +[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] には、開発するアプリケーションにおける高度なドキュメント機能の利用と読みやすさの向上のための、多様なコンポーネントがあります。 豊富な機能と品質の高さに加えて、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] には、ドキュメントのパッケージ化、セキュリティ、および保存を容易にする各種管理サービスもあります。 + +## このセクションの内容 + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) + [ドキュメントのシリアル化および保存](../../../../docs/framework/wpf/advanced/document-serialization-and-storage.md) + [コメント](../../../../docs/framework/wpf/advanced/annotations.md) + [フロー コンテンツ](../../../../docs/framework/wpf/advanced/flow-content.md) + [タイポグラフィ](../../../../docs/framework/wpf/advanced/typography.md) + [印刷および印刷システムの管理](../../../../docs/framework/wpf/advanced/printing-and-print-system-management.md) + +## 参照 + + + + [isXPS.exe \(isXPS 適合性ツール\)](../Topic/isXPS.exe%20\(isXPS%20Conformance%20Tool\).md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/drag-and-drop-how-to-topics.md b/docs/framework/wpf/advanced/drag-and-drop-how-to-topics.md new file mode 100644 index 00000000000..40e81f11134 --- /dev/null +++ b/docs/framework/wpf/advanced/drag-and-drop-how-to-topics.md @@ -0,0 +1,35 @@ +--- +title: "ドラッグ アンド ドロップに関する「方法」トピック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "ドラッグ アンド ドロップ [WPF], 方法トピック" +ms.assetid: 559c0804-c62a-4640-b6b9-cbd2aa9fb99c +caps.latest.revision: 80 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 80 +--- +# ドラッグ アンド ドロップに関する「方法」トピック +次の例では、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] ドラッグ アンド ドロップ フレームワークを使用して一般的なタスクを実行する方法を示します。 + +## このセクションの内容 + [RichTextBox コントロール上にドロップしたファイルを開く](../../../../docs/framework/wpf/advanced/how-to-open-a-file-that-is-dropped-on-a-richtextbox-control.md) + [データ オブジェクトを作成する](../../../../docs/framework/wpf/advanced/how-to-create-a-data-object.md) + [データ形式がデータ オブジェクトに存在するかどうかを判別する](../../../../docs/framework/wpf/advanced/how-to-determine-if-a-data-format-is-present-in-a-data-object.md) + [データ オブジェクト内のデータ形式の一覧を表示する](../../../../docs/framework/wpf/advanced/how-to-list-the-data-formats-in-a-data-object.md) + [特定のデータ形式でデータを取得する](../../../../docs/framework/wpf/advanced/how-to-retrieve-data-in-a-particular-data-format.md) + [データ オブジェクトへ複数のデータ形式を格納する](../../../../docs/framework/wpf/advanced/how-to-store-multiple-data-formats-in-a-data-object.md) + +## 参照 + [ドラッグ アンド ドロップの概要](../../../../docs/framework/wpf/advanced/drag-and-drop-overview.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/drag-and-drop-overview.md b/docs/framework/wpf/advanced/drag-and-drop-overview.md new file mode 100644 index 00000000000..10e255507b4 --- /dev/null +++ b/docs/framework/wpf/advanced/drag-and-drop-overview.md @@ -0,0 +1,228 @@ +--- +title: "ドラッグ アンド ドロップの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ転送 [WPF], ドラッグ アンド ドロップ" + - "ドラッグ ソース [WPF], ドラッグ アンド ドロップ" + - "ドラッグ アンド ドロップ [WPF], バージョン情報" + - "ドラッグ アンド ドロップ [WPF], イベント" + - "ドラッグ アンド ドロップ [WPF], 実装" + - "ドロップ ターゲット [WPF], ドラッグ アンド ドロップ" +ms.assetid: 1a5b27b0-0ac5-4cdf-86c0-86ac0271fa64 +caps.latest.revision: 31 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 30 +--- +# ドラッグ アンド ドロップの概要 +このトピックでは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] アプリケーションでのドラッグ アンド ドロップのサポートの概要について説明します。 一般的に、ドラッグ アンド ドロップとは、マウス \(または何らかのポインティング デバイス\) を使用して 1 つ以上のオブジェクトを選択し、これらのオブジェクトを [!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] の目的のドロップ先までドラッグしてからドロップするデータ転送方式をいいます。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## WPF でのドラッグ アンド ドロップのサポート + ドラッグ アンド ドロップ操作には、一般に、ドラッグするオブジェクトがドラッグを始めるドラッグ元と、ドロップするオブジェクトを受け取るドロップ先という 2 者があります。 ドラッグ元とドロップ先は、同じアプリケーションまたは異なるアプリケーションの UI 要素になることがあります。 + + ドラッグ アンド ドロップで操作できるオブジェクトの種類と数は、まったく任意です。 たとえば、ファイル、フォルダー、およびコンテンツの選択項目は、ドラッグ アンド ドロップ操作を介して操作する、より一般的なオブジェクトの一部です。 + + ドラッグ アンド ドロップ操作中に実行される特定の操作はアプリケーション固有で、多くの場合コンテキストによって決定されます。 たとえば、同じストレージ デバイスで選択したファイルをあるフォルダーから別のフォルダーにドラッグすると、既定ではファイルが移動します。一方、[!INCLUDE[TLA#tla_unc](../../../../includes/tlasharptla-unc-md.md)] 共有からローカル フォルダーにファイルをドラッグすると、既定ではファイルがコピーされます。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] が提供するドラッグ アンド ドロップ機能は、さまざまなドラッグ アンド ドロップのシナリオをサポートするよう、非常に柔軟かつカスタマイズできるように設計されています。 ドラッグ アンド ドロップでは、1 つのアプリケーション内で、または異なるアプリケーションの間でのオブジェクトの操作をサポートします。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションと他の [!INCLUDE[TLA2#tla_win](../../../../includes/tla2sharptla-win-md.md)] アプリケーションの間でのドラッグ アンド ドロップも完全にサポートされています。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、任意の または がドラッグ アンド ドロップに参加できます。 ドラッグ アンド ドロップ操作に必要なイベントとメソッドは、 クラスで定義されています。 クラスには、 のアタッチ済みのイベントのエイリアスが含まれています。これにより、 が基本要素として継承されるときに、イベントがクラスのメンバーとして表示されます。 これらのイベントにアタッチされたイベント ハンドラーは、基になる のアタッチ済みのイベントにアタッチされ、同じイベント データのインスタンスを受信します。 詳細については、 イベントを参照してください。 + +> [!IMPORTANT] +> OLE のドラッグ アンド ドロップは、インターネット ゾーンにある間は機能しません。 + + +## データ転送 + ドラッグ アンド ドロップは、より一般的な領域のデータ転送の一部です。 データ転送には、ドラッグ アンド ドロップ操作およびコピーと貼り付けの操作があります。 ドラッグ アンド ドロップ操作は、システムのクリップボードを使用して、あるオブジェクトまたはアプリケーションから別のオブジェクトまたはアプリケーションへのデータ転送に使用する、コピーと貼り付け操作または切り取りと貼り付け操作に似ています。 いずれの種類の操作でも、次のものが必要です。 + +- データを提供するソース オブジェクト。 + +- 転送されたデータを一時的に格納する方法。 + +- データを受け取るターゲット オブジェクト。 + + コピーと貼り付け操作では、システムのクリップボードを使用して、転送されたデータを一時的に保存します。ドラッグ アンド ドロップ操作では、 を使用してデータを格納します。 データ オブジェクトは、概念的に、実際のデータと対応するデータ形式の識別子を格納する 1 組以上の で構成されています。 + + ドラッグ元では、静的な メソッドを呼び出して、転送するデータをそのメソッドに渡すことでドラッグ アンド ドロップ操作を開始します。 必要な場合、 メソッドは にデータを自動的にラップします。 データ形式の制御を拡大するには、データを メソッドに渡す前に にラップします。 ドロップ先は、 からデータを抽出する役割を務めます。 データ オブジェクトの操作の詳細については、「[データとデータ オブジェクト](../../../../docs/framework/wpf/advanced/data-and-data-objects.md)」を参照してください。 + + ドラッグ アンド ドロップ操作のソースとターゲットは UI 要素ですが、一般に、実際に転送されているデータには視覚的表現はありません。 Windows エクスプローラーでファイルをドラッグするときに起こるような視覚的表現を、ドラッグするデータで実行するように、コードを記述することができます。 既定では、データを移動するのかコピーするのかなど、ドラッグ アンド ドロップ操作によりデータに起こる効果を表すようにカーソルを変更して、ユーザーにフィードバックします。 + +### ドラッグ アンド ドロップの効果 + ドラッグ アンド ドロップ操作には、転送するデータにさまざまな効果を持たせることができます。 たとえば、データをコピーしたり、データを移動したりできるなどです。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、ドラッグ アンド ドロップ操作の効果を指定するために使用できる 列挙体を定義します。 ドラッグ元では、ソースが メソッドで許可する効果を指定できます。 ドロップ先では、 クラスの プロパティでターゲットの目的の効果を指定できます。 イベントでドロップ先の目的の効果を指定した場合、その情報が イベントのドラッグ元に渡されます。 ドラッグ元では、この情報を使用して、ドロップ先がデータにどのような効果を起こそうとしているかをユーザーに伝えます。 データがドロップされると、ドロップ先では イベントでの実際の効果を指定します。 この情報は、 メソッドの戻り値としてドラッグ元に渡されます。 ドラッグ元の `allowedEffects` の一覧にない効果をドロップ先が返す場合、ドラッグ アンド ドロップ操作は取り消され、データ転送は発生しません。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、ドラッグ アンド ドロップ操作の効果に関しては、 値はドラッグ元とドロップ先間の通信にのみ使用されるということを覚えておくのは重要です。 ドラッグ アンド ドロップ操作の実際の効果は、アプリケーションで適切なコードを記述することに依存します。 + + たとえば、ドロップ先では、ドロップ先にデータをドロップすることはデータが移動することと指定される可能性があります。 ただし、データを移動するには、データがターゲット要素に追加されるとともに、ソース要素から削除される必要があります。 ソース要素は、データの移動を許可していますが、ソース要素からデータを削除するコードを指定しない場合、最終的にデータは移動ではなく、コピーされるという結果になります。 + + +## ドラッグ アンド ドロップのイベント + ドラッグ アンド ドロップの操作は、イベント ドリブン モデルをサポートしています。 ドラッグ元とドロップ先の両方でイベントの標準セットを使用して、ドラッグ アンド ドロップの操作を処理します。 次の表は、標準のドラッグ アンド ドロップのイベントをまとめたものです。 これらは、 クラスでアタッチされるイベントです。 アタッチされるイベントの詳細については、「[添付イベントの概要](../../../../docs/framework/wpf/advanced/attached-events-overview.md)」を参照してください。 + +### ドラッグ元のイベント + +|イベント|概要| +|----------|--------| +||このイベントは、ドラッグ アンド ドロップ操作中に継続的に発生し、ドロップ ソースがユーザーに情報をフィードバックできるようにします。 このフィードバックは、通常、マウス ポインターの外観を変えて、ドロップ先が許可する効果を示すことで実行されます。 これは、 [バブリング](GTMT) イベントです。| +||このイベントは、ドラッグ アンド ドロップ操作時にキーボードやマウス ボタンの状態が変化し、ドロップ ソースがキーやボタンの状態によってドラッグ アンド ドロップ操作の取り消しができるようになったときに発生します。 これは、 バブリング イベントです。| +||[トンネリング](GTMT) バージョンの です。| +||トンネリング バージョンの です。| + +### ドロップ先のイベント + +|イベント|概要| +|----------|--------| +||このイベントは、オブジェクトがドロップ先の境界の中にドラッグされるときに発生します。 これは、 バブリング イベントです。| +||このイベントは、オブジェクトがドロップ先の境界の外にドラッグされるときに発生します。 これは、 バブリング イベントです。| +||このイベントは、オブジェクトがドロップ先の境界内でドラッグ \(移動\) する間、継続的に発生します。 これは、 バブリング イベントです。| +||このイベントは、オブジェクトがドロップ先にドロップするときに発生します。 これは、バブリング イベントです。| +||トンネリング バージョンの です。| +||トンネリング バージョンの です。| +||トンネリング バージョンの です。| +||トンネリング バージョンの です。| + + オブジェクトのインスタンスのドラッグ アンド ドロップ イベントを処理するには、前述の表に一覧表示されたイベントにハンドラーを追加します。 クラス レベルでドラッグ アンド ドロップ イベントを処理するには、対応する仮想 On\*Event イベントおよび On\*PreviewEvent メソッドをオーバーライドします。 詳細については、「[制御の基底クラスによるルーティング イベントのクラスの処理](../../../../docs/framework/wpf/advanced/marking-routed-events-as-handled-and-class-handling.md#Class_Handling_of_Routed_Events)」を参照してください。 + + +## ドラッグ アンド ドロップの実装 + UI 要素は、ドラッグ元、ドロップ先、またはその両方になれます。 基本的なドラッグ アンド ドロップを実装するには、ドラッグ アンド ドロップ操作を開始して、ドロップしたデータを処理するコードを記述します。 オプションのドラッグ アンド ドロップ イベントを処理すると、ドラッグ アンド ドロップの操作性を拡張できます。 + + 基本的なドラッグ アンド ドロップを実装するには、次のタスクを実行します。 + +- ドラッグ元となる要素を特定します。 ドラッグ元には または を指定できます。 + +- ドラッグ アンド ドロップ操作を開始するドラッグ元のイベント ハンドラーを作成します。 通常、イベントは イベントです。 + +- ドラッグ アンド ドロップ操作を開始するには、ドラッグ元のイベント ハンドラーで メソッドを呼び出します。 の呼び出しで、ドラッグ元、転送するデータ、および許可される効果を指定します。 + +- ドロップ先となる要素を特定します。 ドロップ先には、 または を指定できます。 + +- ドロップ先で、 プロパティを `true` に設定します。 + +- ドロップ先で、ドロップしたデータを処理する イベント ハンドラーを作成します。 + +- イベント ハンドラーで、 メソッドと メソッドを使用して、 からデータを抽出します。 + +- イベント ハンドラーで、データを使用して、目的のドラッグ アンド ドロップ操作を実行します。 + + 次のタスクに示すように、カスタム を作成し、オプションのドラッグ元とドロップ先のイベントを処理すると、ドラッグ アンド ドロップの実装を拡張できます。 + +- カスタム データまたは複数のデータ項目を転送するには、 メソッドに渡す を作成します。 + +- ドラッグ中に他の操作を実行するには、ドロップ先で 、および イベントを処理します。 + +- マウス ポインターの外観を変更するには、ドラッグ元で イベントを処理します。 + +- ドラッグ アンド ドロップ操作の取り消し方法を変更するには、ドラッグ元で イベントを処理します。 + + +## ドラッグ アンド ドロップの例 + このセクションでは、 要素のドラッグ アンド ドロップを実装する方法について説明します。 はドラッグ元とドロップ先の両方です。 転送されるデータは、楕円の プロパティの文字列表現です。 次の XAML は、 要素と、XAML が処理するドラッグ アンド ドロップ関連のイベントを示しています。 ドラッグ アンド ドロップの実装方法の完全な手順については、「[チュートリアル: ユーザー コントロールでのドラッグ アンド ドロップの有効化](../../../../docs/framework/wpf/advanced/walkthrough-enabling-drag-and-drop-on-a-user-control.md)」を参照してください。 + + [!code-xml[DragDropSnippets#EllipseXaml](../../../../samples/snippets/csharp/VS_Snippets_Wpf/dragdropsnippets/cs/mainwindow.xaml#ellipsexaml)] + +### 要素がドラッグ元になるようにする + ドラッグ元であるオブジェクトは次の役割を務めます。 + +- いつドラッグが発生するかを識別する。 + +- ドラッグ アンド ドロップ操作を開始する。 + +- 転送するデータを特定する。 + +- ドラッグ アンド ドロップ操作によってデータ転送時に起こすことができる効果を指定する。 + + ドラッグ元には、許可される操作 \(移動、コピー、なし\) に関してユーザーにフィードバックすることもできます。また、ドラッグ中に Esc キーを押すなどのユーザーの追加の入力に基づいて、ドラッグ アンド ドロップ操作を取り消すことができます。 + + いつドラッグが発生したかを判断してから、 メソッドを呼び出してドラッグ アンド ドロップ操作を開始することは、アプリケーションの役割です。 通常、これはマウス ボタンが押されている間に、要素上で イベントが発生してドラッグする場合です。 次の例は、 要素の イベント ハンドラーからドラッグ アンド ドロップ操作を開始してドラッグ元にする方法を示しています。 転送されるデータは、楕円の プロパティの文字列表現です。 + + [!code-csharp[DragDropSnippets#DoDragDrop](../../../../samples/snippets/csharp/VS_Snippets_Wpf/dragdropsnippets/cs/mainwindow.xaml.cs#dodragdrop)] + [!code-vb[DragDropSnippets#DoDragDrop](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/dragdropsnippets/vb/mainwindow.xaml.vb#dodragdrop)] + + イベント ハンドラー内で、 メソッドを呼び出して、ドラッグ アンド ドロップ操作を開始します。 メソッドは 3 つのパラメーターを受け取ります。 + +- `dragSource` – 転送されたデータのソースである依存関係オブジェクトへの参照。通常、これは イベントのソースです。 + +- `data` \- にラップされる転送済みデータを含むオブジェクト。 + +- `allowedEffects` \- ドラッグ アンド ドロップ操作の許可される効果を指定する 列挙値の 1 つ。 + + シリアル化可能なオブジェクトはすべて `data` パラメーターに渡すことができます。 データがまだ にラップされていない場合、データは新しい に自動的にラップされます。 複数のデータ項目を渡すには、自分で を作成し、 メソッドに渡す必要があります。 詳細については、「[データとデータ オブジェクト](../../../../docs/framework/wpf/advanced/data-and-data-objects.md)」を参照してください。 + + `allowedEffects` パラメーターを使用すると、ドラッグ元が、ドロップ先に対して、データの転送時に何を行えるかを指定できます。 ドラッグ元の一般的な値は 、および です。 + +> [!NOTE] +> ドロップ先でも、ドロップされたデータに対応してどのような効果を意図するか指定できます。 たとえば、ドロップ先がドロップするデータ型を認識しない場合、許可された効果を に設定してデータを拒否することができます。 これは通常、 イベント ハンドラーで実行します。 + + ドラッグ元は、オプションで イベントと イベントを処理できます。 これらのイベントには、イベントを処理済みとマークしない限り使用される既定のハンドラーがあります。 既定の動作を変更する特定のニーズがない限り、通常はこれらのイベントを無視します。 + + ドラッグ元がドラッグされている間、 イベントは継続的に発生します。 このイベントの既定のハンドラーは、ドラッグ元が有効なドロップ先の上にドラッグしているかどうかを確認します。 有効である場合は、このハンドラーは、ドロップ先の許可された効果を確認します。 その後、許可されているドロップ効果に関してエンドユーザーにフィードバックします。 通常は、マウス カーソルを非ドロップ、コピー、または移動のカーソルに変更してこれを実行します。 カスタムのカーソルを使用してユーザーにフィードバックする必要がある場合のみ、このイベントを処理する必要があります。 このイベントを処理する場合は、既定のハンドラーが自作のハンドラーをオーバーライドしないよう、必ずイベントを処理済みとマークしてください。 + + ドラッグ元がドラッグされている間、 イベントは継続的に発生します。 このイベントを処理すると、Esc、Shift、Ctrl、および Alt の各キーの状態に加えて、マウス ボタンの状態に基づいて、どのアクションがドラッグ アンド ドロップ操作を終了させるかを決定することができます。 このイベントの既定のハンドラーは、Esc キーを押した場合はドラッグ アンド ドロップ操作を取り消し、マウス ボタンを放した場合はデータをドロップします。 + +> [!CAUTION] +> これらのイベントは、ドラッグ アンド ドロップ操作中に継続的に発生します。 そのため、イベント ハンドラーではリソースを集中的に使用するタスクを避ける必要があります。 たとえば、 イベントが発生するたびに新しいカーソルを作成するのではなく、キャッシュされたカーソルを使用します。 + +### 要素がドロップ先になるようにする + ドロップ先であるオブジェクトは次の役割を務めます。 + +- 有効なドロップ先であることを指定する。 + +- ドラッグ元に対して、ターゲットの上にドラッグしたときに応答する。 + +- 転送されたデータが受信できる形式であることを確認する。 + +- ドロップしたデータを処理する。 + + 要素がドロップ先であることを指定するには、 プロパティを `true` に設定します。 ドロップ先のイベントが要素で発生して、処理できるようになります。 ドラッグ アンド ドロップ操作中に、次の一連のイベントがドロップ先で発生します。 + +1. + +2. + +3. または + + イベントは、データがドロップ先の境界の中にドラッグされるときに発生します。 通常は、アプリケーションに適していれば、ドラッグ アンド ドロップ操作の効果のプレビューを提供するように、このイベントを処理します。 イベントで プロパティを設定しないでください。このプロパティは イベントで上書きされるためです。 + + 次の例は、 要素の イベント ハンドラーを示しています。 このコードでは、現在の ブラシを保存して、ドラッグ アンド ドロップ操作の効果をプレビューします。 続いて、 メソッドを使用して、楕円の上にドラッグした に、 に変換できる文字列データが含まれているかどうかを確認します。 含まれている場合、データは メソッドによって抽出されます。 その後、データは に変換されて、楕円に適用されます。 変更は イベント ハンドラーで元に戻ります。 データが に変換できない場合、アクションは実行されません。 + + [!code-csharp[DragDropSnippets#DragEnter](../../../../samples/snippets/csharp/VS_Snippets_Wpf/dragdropsnippets/cs/mainwindow.xaml.cs#dragenter)] + [!code-vb[DragDropSnippets#DragEnter](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/dragdropsnippets/vb/mainwindow.xaml.vb#dragenter)] + + イベントは、データがドロップ先の上にドラッグされる間、継続的に発生します。 このイベントはドラッグ元の イベントとペアになります。 イベント ハンドラーでは、通常は メソッドと メソッドを使用して、転送されたデータがドロップ先で処理できる形式であるかどうかを確認します。 また、いずれかの修飾キーが押されたかどうかも確認できます。修飾キーは、通常、ユーザーが移動またはコピー操作を意図しているかどうかを示します。 これらの確認を行った後、 プロパティを、データをドロップするとどのような効果が起こるかをドラッグ元に通知するように設定します。 ドラッグ元は、 のイベント引数でこの情報を受信し、適切なカーソルを設定してユーザーにフィードバックします。 + + 次の例は、 要素の イベント ハンドラーを示しています。 このコードは、楕円の上にドラッグされている に、 に変換できる文字列データが含まれているかどうかを確認します。 含まれている場合、 プロパティを に設定します。 これにより、ドラッグ元に対して、データが楕円にコピーできることを示します。 データが に変換できない場合、 プロパティは に設定されます。 これにより、ドラッグ元に対して、楕円はデータの有効なドロップ先ではないことを示します。 + + [!code-csharp[DragDropSnippets#DragOver](../../../../samples/snippets/csharp/VS_Snippets_Wpf/dragdropsnippets/cs/mainwindow.xaml.cs#dragover)] + [!code-vb[DragDropSnippets#DragOver](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/dragdropsnippets/vb/mainwindow.xaml.vb#dragover)] + + イベントは、データがドロップされることなくターゲットの境界の外にドラッグされるときに発生します。 このイベントを処理すると、 イベント ハンドラーで行ったことをすべて元に戻すことができます。 + + 次の例は、 要素の イベント ハンドラーを示しています。 このコードは、保存された を楕円に適用することで、 イベント ハンドラーで行ったプレビュー内容を元に戻します。 + + [!code-csharp[DragDropSnippets#DragLeave](../../../../samples/snippets/csharp/VS_Snippets_Wpf/dragdropsnippets/cs/mainwindow.xaml.cs#dragleave)] + [!code-vb[DragDropSnippets#DragLeave](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/dragdropsnippets/vb/mainwindow.xaml.vb#dragleave)] + + イベントは、データがドロップ先にドロップされると発生します。既定では、これはマウス ボタンが放されたときに発生します。 イベント ハンドラーでは、 メソッドを使用して から転送されたデータを抽出し、アプリケーションが必要とするデータ処理を実行します。 イベントは、ドラッグ アンド ドロップ操作を終了します。 + + 次の例は、 要素の イベント ハンドラーを示しています。 このコードは、ドラッグ アンド ドロップ操作の効果を適用します。 イベント ハンドラーのコードと似ています。 このコードは、楕円の上にドラッグされている に、 に変換できる文字列データが含まれているかどうかを確認します。 含まれている場合は、 は楕円に適用されます。 データが に変換できない場合、アクションは実行されません。 + + [!code-csharp[DragDropSnippets#Drop](../../../../samples/snippets/csharp/VS_Snippets_Wpf/dragdropsnippets/cs/mainwindow.xaml.cs#drop)] + [!code-vb[DragDropSnippets#Drop](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/dragdropsnippets/vb/mainwindow.xaml.vb#drop)] + +## 参照 + + [チュートリアル: ユーザー コントロールでのドラッグ アンド ドロップの有効化](../../../../docs/framework/wpf/advanced/walkthrough-enabling-drag-and-drop-on-a-user-control.md) + [方法のトピック](../../../../docs/framework/wpf/advanced/drag-and-drop-how-to-topics.md) + [ドラッグ アンド ドロップ](../../../../docs/framework/wpf/advanced/drag-and-drop.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/drag-and-drop.md b/docs/framework/wpf/advanced/drag-and-drop.md new file mode 100644 index 00000000000..de7fa646c2a --- /dev/null +++ b/docs/framework/wpf/advanced/drag-and-drop.md @@ -0,0 +1,42 @@ +--- +title: "ドラッグ アンド ドロップ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "データ [WPF], ドラッグ アンド ドロップ" + - "ドラッグ アンド ドロップ [WPF]" + - "ドラッグ アンド ドロップ [WPF]" +ms.assetid: 77c48920-8c8b-41eb-8fe8-b411962c8623 +caps.latest.revision: 85 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 85 +--- +# ドラッグ アンド ドロップ +[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] のドラッグ アンド ドロップ インフラストラクチャは非常に柔軟性が高く、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーション内だけでなく、他の [!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] アプリケーション内でのデータのドラッグ アンド ドロップもサポートします。 + +## このセクションの内容 + [ドラッグ アンド ドロップの概要](../../../../docs/framework/wpf/advanced/drag-and-drop-overview.md) + [データとデータ オブジェクト](../../../../docs/framework/wpf/advanced/data-and-data-objects.md) + [チュートリアル: ユーザー コントロールでのドラッグ アンド ドロップの有効化](../../../../docs/framework/wpf/advanced/walkthrough-enabling-drag-and-drop-on-a-user-control.md) + [方法のトピック](../../../../docs/framework/wpf/advanced/drag-and-drop-how-to-topics.md) + +## 関連項目 + + + + + + + +## 関連項目 \ No newline at end of file diff --git a/docs/framework/wpf/advanced/draw-text-using-glyphs.md b/docs/framework/wpf/advanced/draw-text-using-glyphs.md new file mode 100644 index 00000000000..019f44a64b2 --- /dev/null +++ b/docs/framework/wpf/advanced/draw-text-using-glyphs.md @@ -0,0 +1,36 @@ +--- +title: "グリフを使用したテキストの描画 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "テキストの描画 (Glyphs オブジェクトで)" + - "Glyphs オブジェクト、テキストの描画" + - "文字体裁、Glyphs オブジェクト" +ms.assetid: 587ab17e-a419-4ad5-b6da-8933a8e83d97 +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# グリフを使用したテキストの描画 +ここで、低レベルの使用方法について説明テキストを表示するオブジェクト[!INCLUDE[TLA#tla_xaml](../../../../includes/tlasharptla-xaml-md.md)]します。 + +## 例 + 次の例は、プロパティを定義する方法を示して、オブジェクト[!INCLUDE[TLA#tla_xaml](../../../../includes/tlasharptla-xaml-md.md)]します。 オブジェクトの出力を表す、 で[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)]します。 例では、Arial、Courier New および Times New Roman フォントが、ローカル コンピューター上の C:\WINDOWS\Fonts フォルダーにインストールされているものとします。 + + [!code-xml[GlyphsOvwSample1#1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/GlyphsOvwSample1/CS/default.xaml#1)] + + この例は、その他のプロパティを定義する方法を示します内のオブジェクト[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)]します。 + + [!code-xml[GlyphsOvwSamp2#1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/GlyphsOvwSamp2/CS/default.xaml#1)] + +## 関連項目 + [WPF のタイポグラフィ](../../../../docs/framework/wpf/advanced/typography-in-wpf.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/drawing-formatted-text.md b/docs/framework/wpf/advanced/drawing-formatted-text.md new file mode 100644 index 00000000000..0b18ebda759 --- /dev/null +++ b/docs/framework/wpf/advanced/drawing-formatted-text.md @@ -0,0 +1,138 @@ +--- +title: "書式設定されたテキストの描画 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "描画, 書式設定テキスト" + - "書式設定テキスト [WPF]" + - "テキスト [WPF]" + - "タイポグラフィ, 描画 (書式設定されたテキストを)" +ms.assetid: b1d851c1-331c-4814-9964-6fe769db6f1f +caps.latest.revision: 14 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 書式設定されたテキストの描画 +ここでは、 オブジェクトの機能の概要について説明します。 このオブジェクトは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] アプリケーションでのテキストの描画に対する低レベルの制御を提供します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## テクノロジの概要 + オブジェクトを使用すると、複数行のテキストを描画できます。このテキストでは、テキスト内の各文字を個々に書式設定できます。 複数の書式が適用されたテキストを次の例に示します。 + + ![FormattedText オブジェクトを使用して表示されるテキスト](../../../../docs/framework/wpf/advanced/media/formattedtext01.png "FormattedText01") +FormattedText メソッドを使用して表示されたテキスト + +> [!NOTE] +> [!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)] API から移行する開発者のために、「[Win32 の移行](#win32_migration)」の表に [!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)] DrawText フラグと [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] におけるほぼ同等のものを示します。 + +### 書式設定されたテキストを使用する理由 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] には、画面にテキストを描画するための複数のコントロールが含まれています。 各コントロールは、異なるシナリオを対象にしており、それぞれに一連の機能と制限があります。 一般的に、[!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] で短い文を使用するなど、限定的なテキストのサポートが必要な場合は、 要素を使用する必要があります。 最小限のテキスト サポートが必要な場合には、 を使用できます。 詳細については、「[WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md)」を参照してください。 + + オブジェクトは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] テキスト コントロールよりも強力なテキスト書式設定機能を提供し、テキストを装飾的要素として使用する場合に役立ちます。詳細については、後の「[書式設定されたテキストのジオメトリへの変換](#converting_formatted_text)」を参照してください。 + + また、 オブジェクトは、テキスト指向の 派生オブジェクトを作成する場合に役立ちます。 は、図形、イメージ、またはテキストのレンダリングに使用する軽量の描画クラスです。 詳細については、[DrawingVisuals を使用したヒット テストのサンプル](http://go.microsoft.com/fwlink/?LinkID=159994)を参照してください。 + + +## FormattedText オブジェクトの使用 + 書式設定されたテキストを作成するには、 コンストラクターを呼び出して オブジェクトを作成します。 最初の書式設定済みテキスト文字列を作成したら、書式スタイルの範囲を適用できます。 + + テキストを特定の幅に制限するには、 プロパティを使用します。 テキストは、指定された幅を超えないように自動的に折り返されます。 テキストを特定の高さに制限するには、 プロパティを使用します。 テキストは、指定された高さを超えた部分に省略記号 "…" を表示します。 + + ![FormattedText オブジェクトを使用して表示されるテキスト](../../../../docs/framework/wpf/advanced/media/formattedtext02.png "FormattedText02") +折り返しと省略記号を示す表示テキスト + + 複数の書式スタイルを 1 つ以上の文字に適用できます。 たとえば、 メソッドと メソッドの両方を呼び出して、テキストの最初の 5 文字の書式設定を変更できます。 + + オブジェクトを作成し、複数の書式設定スタイルをテキストに適用するコード例を次に示します。 + + [!code-csharp[FormattedTextSnippets#FormattedTextSnippets1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FormattedTextSnippets/CSharp/Window1.xaml.cs#formattedtextsnippets1)] + [!code-vb[FormattedTextSnippets#FormattedTextSnippets1](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FormattedTextSnippets/visualbasic/window1.xaml.vb#formattedtextsnippets1)] + +### フォント サイズの測定単位 + [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] アプリケーションの他のテキスト オブジェクトと同様に、 オブジェクトでは、測定単位としてデバイス非依存ピクセルが使用されます。 ただし、ほとんどの [!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)] アプリケーションでは、測定単位としてポイントが使用されます。 [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] アプリケーションでポイント単位の表示テキストを使用する場合は、[!INCLUDE[TLA#tla_dipixel#plural](../../../../includes/tlasharptla-dipixelsharpplural-md.md)] をポイントに変換する必要があります。 この変換を実行する方法を次のコード例に示します。 + + [!code-csharp[FormattedTextSnippets#FormattedTextSnippets2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FormattedTextSnippets/CSharp/Window1.xaml.cs#formattedtextsnippets2)] + [!code-vb[FormattedTextSnippets#FormattedTextSnippets2](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FormattedTextSnippets/visualbasic/window1.xaml.vb#formattedtextsnippets2)] + + +### 書式設定されたテキストのジオメトリへの変換 + 書式設定したテキストを オブジェクトに変換し、人の目をひきつける他の種類のテキストを作成することができます。 たとえば、テキスト文字列のアウトラインに基づいて オブジェクトを作成できます。 + + ![線形グラデーション ブラシを使用するテキスト アウトライン](../../../../docs/framework/wpf/advanced/media/outlinedtext02.png "OutlinedText02") +線形グラデーション ブラシを使用したテキスト アウトライン + + 変換されたテキストのストローク、塗りつぶし、および強調表示を変更して、人の目をひく視覚効果を作成するいくつかの方法を次の例に示します。 + + ![塗りつぶしとストロークに別の色を使用するテキスト](../../../../docs/framework/wpf/advanced/media/outlinedtext03.png "OutlinedText03") +ストロークおよび塗りつぶしを別々の色に設定した例 + + ![ストロークに適用されるイメージ ブラシを含むテキスト](../../../../docs/framework/wpf/advanced/media/outlinedtext04.png "OutlinedText04") +ストロークに適用したイメージ ブラシの例 + + ![ストロークに適用されるイメージ ブラシを含むテキスト](../../../../docs/framework/wpf/advanced/media/outlinedtext05.png "OutlinedText05") +ストロークおよび強調表示に適用したイメージ ブラシの例 + + テキストを オブジェクトに変換すると、テキストは文字の集まりではなくなります。つまり、文字列内の文字を変更することはできません。 ただし、変換されたテキストのストロークおよび塗りつぶしのプロパティを変更することで、テキストの外観を変えることができます。 ストロークは、変換したテキストのアウトラインを参照します。塗りつぶしは、変換したテキストのアウトラインの内側の領域を参照します。 詳細については、「[中抜きの文字列を作成する](../../../../docs/framework/wpf/advanced/how-to-create-outlined-text.md)」を参照してください。 + + 書式設定されたテキストを オブジェクトに変換し、そのオブジェクトをテキストの強調表示に使用することもできます。 たとえば、 オブジェクトに 1 つのアニメーションを適用することができ、これによりアニメーションは書式設定されたテキストのアウトラインに従うようになります。 + + 次の例は、 オブジェクトに変換された書式付きテキストを示しています。 アニメーション化された楕円は、レンダリングされたテキストのストロークのパスに従います。 + + ![テキストのパス ジオメトリに続く球](../../../../docs/framework/wpf/advanced/media/textpathgeometry01.png "TextPathGeometry01") +テキストのパス図形座標に従う球体 + + 詳細については、「[How to: Create a PathGeometry Animation for Text](http://msdn.microsoft.com/ja-jp/29f8051e-798a-463f-a926-a099a99e9c67)」を参照してください。 + + 書式設定したテキストを オブジェクトに変換したら、他の有意義な効果を作成することができます。 たとえば、ビデオをクリップしてテキスト内に表示することができます。 + + ![テキストのパス ジオメトリに表示されるビデオ](../../../../docs/framework/wpf/advanced/media/videotextdemo01.png "VideoTextDemo01") +テキストのパス図形座標に表示されるビデオ + + +## Win32 の移行 + テキストを描画するための の機能は、[!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)] DrawText 関数の機能に似ています。 [!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)] API から移行する開発者のために、次の表に [!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)] DrawText フラグと [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] におけるほぼ同等のものを示します。 + +|DrawText フラグ|同等の WPF 操作|説明| +|------------------|----------------|--------| +|DT\_BOTTOM||適切な [!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)] DrawText の 'y' 位置を計算するには、 プロパティを使用します。| +|DT\_CALCRECT|, |出力四角形を計算するには、 プロパティおよび プロパティを使用します。| +|DT\_CENTER|| プロパティを使用して値を に設定します。| +|DT\_EDITCONTROL|なし|必要ありません。 スペースの幅および最後の行のレンダリングは、フレームワークのエディット コントロールと同じです。| +|DT\_END\_ELLIPSIS|| プロパティを使用して値を に設定します。

を使用して、DT\_WORD\_ELIPSIS の末尾の省略記号が設定された [!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)] DT\_END\_ELLIPSIS を取得します。この場合、省略記号は 1 行に収まらない単語にのみ表示されます。| +|DT\_EXPAND\_TABS|なし|必要ありません。 タブは自動的に全角 4 文字分ごとに展開されます。これは、言語非依存文字の約 8 文字分の幅です。| +|DT\_EXTERNALLEADING|なし|必要ありません。 外部レディングは、常に行間隔に含まれます。 プロパティを使用して、ユーザー定義の行間隔を作成します。| +|DT\_HIDEPREFIX|なし|サポートされていません。 オブジェクトを構築する前に、文字列から '&' を削除します。| +|DT\_LEFT||これは、テキストの配置の既定値です。 プロパティを使用して値を に設定します \(WPF のみ\)。| +|DT\_MODIFYSTRING|なし|サポートされていません。| +|DT\_NOCLIP||クリッピングは自動的には行われません。 テキストをクリップする場合は、 プロパティを使用します。| +|DT\_NOFULLWIDTHCHARBREAK|なし|サポートされていません。| +|DT\_NOPREFIX|なし|必要ありません。 文字列内の '&' 文字は、常に通常の文字として扱われます。| +|DT\_PATHELLIPSIS|なし| プロパティを使用して値を に設定します。| +|DT\_PREFIX|なし|サポートされていません。 アクセラレータ キーやリンクなどのテキストにアンダースコアを使用する場合は、 メソッドを使用します。| +|DT\_PREFIXONLY|なし|サポートされていません。| +|DT\_RIGHT|| プロパティを使用して値を に設定します \(WPF のみ\)。| +|DT\_RTLREADING|| プロパティを に設定します。| +|DT\_SINGLELINE|なし|必要ありません。 プロパティが設定されていない場合、またはテキストに改行コード \(CR\/LF\) が含まれていない場合、 オブジェクトは単一行コントロールとして動作します。| +|DT\_TABSTOP|なし|ユーザー定義のタブ位置はサポートされていません。| +|DT\_TOP||必要ありません。 上端揃えが既定値です。 その他の垂直方向の配置の値を定義するには、 プロパティを使用して、適切な [!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)] DrawText の 'y' 位置を計算します。| +|DT\_VCENTER||適切な [!INCLUDE[TLA#tla_win32](../../../../includes/tlasharptla-win32-md.md)] DrawText の 'y' 位置を計算するには、 プロパティを使用します。| +|DT\_WORDBREAK|なし|必要ありません。 単語の区切りは、 オブジェクトで自動的に行われます。 無効にすることはできません。| +|DT\_WORD\_ELLIPSIS|| プロパティを使用して値を に設定します。| + +## 参照 + + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) + [WPF のタイポグラフィ](../../../../docs/framework/wpf/advanced/typography-in-wpf.md) + [中抜きの文字列を作成する](../../../../docs/framework/wpf/advanced/how-to-create-outlined-text.md) + [How to: Create a PathGeometry Animation for Text](http://msdn.microsoft.com/ja-jp/29f8051e-798a-463f-a926-a099a99e9c67) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/dynamicresource-markup-extension.md b/docs/framework/wpf/advanced/dynamicresource-markup-extension.md new file mode 100644 index 00000000000..36e7699979e --- /dev/null +++ b/docs/framework/wpf/advanced/dynamicresource-markup-extension.md @@ -0,0 +1,89 @@ +--- +title: "DynamicResource のマークアップ拡張機能 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "DynamicResource" + - "DynamicResourceExtension" +helpviewer_keywords: + - "DynamicResource のマークアップ拡張機能" + - "XAML, DynamicResource マークアップ拡張機能" +ms.assetid: 7324f243-03af-4c2b-b0db-26ac6cdfcbe4 +caps.latest.revision: 16 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 16 +--- +# DynamicResource のマークアップ拡張機能 +定義されたリソースに対する参照になる値を優先させることによって、任意の [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] プロパティ属性の値を指定します。 そのリソースに関する検索動作は、実行時検索に似ています。 + +## XAML 属性の使用方法 + +``` + +``` + +## XAML プロパティ要素の使用方法 + +``` + + + + + +``` + +## XAML 値 + +||| +|-|-| +|`key`|要求したリソースのキー。 リソースがマークアップで作成された場合、このキーは [x:Key ディレクティブ](../../../../docs/framework/xaml-services/x-key-directive.md)によって最初に割り当てられたものです。リソースがコードで作成された場合は、 を呼び出すときに `key` パラメーターで指定されたものです。| + +## 解説 + `DynamicResource` は、初期コンパイル中に一時的な式を作成し、それによって、要求されたリソース値がオブジェクトを構成するために実際に必要になるまで、リソースに関する検索を遅延します。 これは、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] ページが読み込まれた後になる可能性があります。 リソース値は、すべてのアクティブなリソース ディクショナリに対して、現在のページ スコープを開始点としてキー検索を実行することで検出され、コンパイル時に設定されたプレースホルダー式と置き換えられます。 + +> [!IMPORTANT] +> 依存関係プロパティの優先順位という点では、`DynamicResource` 式は、動的リソース参照が適用される位置と同じになります。 以前に `DynamicResource` 式をローカル値として持っていたプロパティにローカル値を設定すると、`DynamicResource` は完全に削除されます。 詳細については、「[依存関係プロパティ値の優先順位](../../../../docs/framework/wpf/advanced/dependency-property-value-precedence.md)」を参照してください。 + + ある種のリソース アクセス シナリオは、[StaticResource のマークアップ拡張機能](../../../../docs/framework/wpf/advanced/staticresource-markup-extension.md)とは対照的に、`DynamicResource` に特に適しています。 `DynamicResource` と `StaticResource` のメリットの比較、およびパフォーマンスへの影響の詳細については、「[XAML リソース](../../../../docs/framework/wpf/advanced/xaml-resources.md)」を参照してください。 + + 指定した は、ページ、アプリケーション、使用可能なコントロール テーマと外部リソース、またはシステム リソースで [x:Key ディレクティブ](../../../../docs/framework/xaml-services/x-key-directive.md)によって指定された既存のリソースに対応するキーでなければなりません。また、リソースのルックアップはキーの指定順に行われます。 静的リソースと動的リソースのリソース検索の詳細については、「[XAML リソース](../../../../docs/framework/wpf/advanced/xaml-resources.md)」を参照してください。 + + リソース キーは、[XamlName の文法](../../../../docs/framework/xaml-services/xamlname-grammar.md)で定義されている任意の文字列にすることができます。 などの他のオブジェクト型にすることもできます。 キーは、コントロールをテーマごとにどのようにデザインするかを決定するのに重要です。 詳細については、「[コントロールの作成の概要](../../../../docs/framework/wpf/controls/control-authoring-overview.md)」を参照してください。 + + リソース値の検索に使用する などの [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] は、`DynamicResource` で使用されるものと同じリソース検索ロジックに従います。 + + これとは別の、リソース参照の宣言的手段には、[StaticResource のマークアップ拡張機能](../../../../docs/framework/wpf/advanced/staticresource-markup-extension.md)を使用する方法があります。 + + 属性構文は、このマークアップ拡張機能で使用される最も一般的な構文です。 `DynamicResource` 識別子文字列の後に設定される文字列トークンは、基になる 拡張クラスの 値として割り当てられます。 + + `DynamicResource` は、オブジェクト要素構文で使用できます。 この場合、 プロパティの値の指定は必須です。 + + `DynamicResource` は、 プロパティをプロパティおよび値のペアとして指定する詳細出力属性使用でも使用できます。 + +``` + +``` + + 詳細出力の使用は、複数の設定可能プロパティを持つ拡張機能や、一部のプロパティがオプションである場合に役立ちます。 `DynamicResource` には、必須の設定可能プロパティが 1 つしか存在しないため、このような詳細出力の使用は一般的ではありません。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] プロセッサ実装では、このマークアップ拡張機能の処理は、 クラスによって定義されます。 + + `DynamicResource` はマークアップ拡張機能です。 一般にマークアップ拡張機能を実装するのは、属性値をリテラル値やハンドラー名以外にエスケープする要件が存在し、その要件の適用範囲がグローバルで、特定の型やプロパティに型コンバーターを適用するだけにとどまらない場合です。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] のすべてのマークアップ拡張機能では、それぞれの属性構文で { と } の 2 つの記号を使用します。これは規約であり、これに従って [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] プロセッサは、マークアップ拡張機能で属性を処理する必要があることを認識します。 詳細については、「[マークアップ拡張機能と WPF XAML](../../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md)」を参照してください。 + +## 参照 + [XAML リソース](../../../../docs/framework/wpf/advanced/xaml-resources.md) + [リソースとコード](../../../../docs/framework/wpf/advanced/resources-and-code.md) + [x:Key ディレクティブ](../../../../docs/framework/xaml-services/x-key-directive.md) + [XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) + [マークアップ拡張機能と WPF XAML](../../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md) + [StaticResource のマークアップ拡張機能](../../../../docs/framework/wpf/advanced/staticresource-markup-extension.md) + [マークアップ拡張機能と WPF XAML](../../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/element-tree-and-serialization-how-to-topics.md b/docs/framework/wpf/advanced/element-tree-and-serialization-how-to-topics.md new file mode 100644 index 00000000000..9f3bf41b0db --- /dev/null +++ b/docs/framework/wpf/advanced/element-tree-and-serialization-how-to-topics.md @@ -0,0 +1,38 @@ +--- +title: "要素のツリーおよびシリアル化に関する「方法」トピック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "要素ツリー" + - "シリアル化" +ms.assetid: 2d8ef436-d559-4c3e-86de-5a160d5f87d2 +caps.latest.revision: 74 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 74 +--- +# 要素のツリーおよびシリアル化に関する「方法」トピック +このセクションのトピックでは、WPF 要素ツリーの使用方法について説明します。 + +## このセクションの内容 + [要素を名前で検索する](../../../../docs/framework/wpf/advanced/how-to-find-an-element-by-its-name.md) + [論理ツリーをオーバーライドする](../../../../docs/framework/wpf/advanced/how-to-override-the-logical-tree.md) + +## 関連項目 + + + + + + +## 関連項目 \ No newline at end of file diff --git a/docs/framework/wpf/advanced/element-tree-and-serialization.md b/docs/framework/wpf/advanced/element-tree-and-serialization.md new file mode 100644 index 00000000000..077fbcd0fe3 --- /dev/null +++ b/docs/framework/wpf/advanced/element-tree-and-serialization.md @@ -0,0 +1,50 @@ +--- +title: "要素のツリーおよびシリアル化 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "要素ツリー" + - "シリアル化" + - "ツリー [WPF]" +ms.assetid: 8f57e879-180b-421f-b3d0-ac007ff2ce80 +caps.latest.revision: 71 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 70 +--- +# 要素のツリーおよびシリアル化 +WPF プログラミングの各要素は、多くの場合、ある種の相互ツリー リレーションシップにあります。 たとえば、XAML で作成するアプリケーション UI は、オブジェクト ツリーとして概念化できます。 要素のツリーはさらに、[論理ツリー](GTMT)と[ビジュアル ツリー](GTMT)という 2 つのツリーに分割できます。これらのツリーは異なるものですが、同時に並列関係である場合もありまます。 WPF でのシリアル化には、これら 2 つのツリーの状態およびアプリケーション状態の保存と、ファイル \(通常は XAML\) へのその書き込みが含まれます。 + +## このセクションの内容 + [WPF のツリー](../../../../docs/framework/wpf/advanced/trees-in-wpf.md) + [XamlWriter.Save のシリアル化の制限](../../../../docs/framework/wpf/advanced/serialization-limitations-of-xamlwriter-save.md) + [オブジェクト ツリーに存在しないオブジェクト要素の初期化](../../../../docs/framework/wpf/advanced/initialization-for-object-elements-not-in-an-object-tree.md) + [方法のトピック](../../../../docs/framework/wpf/advanced/element-tree-and-serialization-how-to-topics.md) + +## 関連項目 + + + + + + +## 関連項目 + [WPF アーキテクチャ](../../../../docs/framework/wpf/advanced/wpf-architecture.md) + [WPF の XAML](../../../../docs/framework/wpf/advanced/xaml-in-wpf.md) + [基本要素](../../../../docs/framework/wpf/advanced/base-elements.md) + [プロパティ](../../../../docs/framework/wpf/advanced/properties-wpf.md) + [イベント](../../../../docs/framework/wpf/advanced/events-wpf.md) + [入力](../../../../docs/framework/wpf/advanced/input-wpf.md) + [リソース](../../../../docs/framework/wpf/advanced/resources-wpf.md) + [スタイルとテンプレート](../../../../docs/framework/wpf/controls/styling-and-templating.md) + [スレッド モデル](../../../../docs/framework/wpf/advanced/threading-model.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/events-how-to-topics.md b/docs/framework/wpf/advanced/events-how-to-topics.md new file mode 100644 index 00000000000..b574b5a9d4d --- /dev/null +++ b/docs/framework/wpf/advanced/events-how-to-topics.md @@ -0,0 +1,40 @@ +--- +title: "イベントに関する「方法」トピック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "イベント, 方法トピック" +ms.assetid: 00463181-36eb-4be0-bfa2-452854cce642 +caps.latest.revision: 75 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 75 +--- +# イベントに関する「方法」トピック +このセクションのトピックでは、WPF でイベントを使用する方法について説明します。 + +## このセクションの内容 + [コードを使用してイベント ハンドラーを追加する](../../../../docs/framework/wpf/advanced/how-to-add-an-event-handler-using-code.md) + [ルーティング イベントを処理する](../../../../docs/framework/wpf/advanced/how-to-handle-a-routed-event.md) + [カスタム ルーティング イベントを作成する](../../../../docs/framework/wpf/advanced/how-to-create-a-custom-routed-event.md) + [イベント ハンドラーでソース要素を検索する](../../../../docs/framework/wpf/advanced/how-to-find-the-source-element-in-an-event-handler.md) + [ルーティング イベントのクラス処理を追加する](../../../../docs/framework/wpf/advanced/how-to-add-class-handling-for-a-routed-event.md) + +## 関連項目 + + + + + + +## 関連項目 \ No newline at end of file diff --git a/docs/framework/wpf/advanced/events-wpf.md b/docs/framework/wpf/advanced/events-wpf.md new file mode 100644 index 00000000000..a38c1be9081 --- /dev/null +++ b/docs/framework/wpf/advanced/events-wpf.md @@ -0,0 +1,56 @@ +--- +title: "イベント (WPF) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "イベント, ウィンドウ" + - "Windows Presentation Foundation, イベント" + - "WPF, イベント" +ms.assetid: d3b93c6f-aa6b-486d-a010-d097ea8a516b +caps.latest.revision: 73 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 72 +--- +# イベント (WPF) +[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] では、アプリケーションの要素ツリー内のさまざまなリスナー上に存在するハンドラーを呼び出すことができる[ルーティング イベント](GTMT)が導入されています。 + +## このセクションの内容 + [ルーティング イベントの概要](../../../../docs/framework/wpf/advanced/routed-events-overview.md) + [添付イベントの概要](../../../../docs/framework/wpf/advanced/attached-events-overview.md) + [オブジェクトの有効期間イベント](../../../../docs/framework/wpf/advanced/object-lifetime-events.md) + [ルーティング イベントの処理済みとしてのマーキング、およびクラス処理](../../../../docs/framework/wpf/advanced/marking-routed-events-as-handled-and-class-handling.md) + [プレビュー イベント](../../../../docs/framework/wpf/advanced/preview-events.md) + [プロパティ変更イベント](../../../../docs/framework/wpf/advanced/property-change-events.md) + [Visual Basic と WPF のイベント処理](../../../../docs/framework/wpf/advanced/visual-basic-and-wpf-event-handling.md) + [弱いイベント パターン](../../../../docs/framework/wpf/advanced/weak-event-patterns.md) + [方法のトピック](../../../../docs/framework/wpf/advanced/events-how-to-topics.md) + +## 関連項目 + + + + + + +## 関連項目 + [WPF アーキテクチャ](../../../../docs/framework/wpf/advanced/wpf-architecture.md) + [WPF の XAML](../../../../docs/framework/wpf/advanced/xaml-in-wpf.md) + [基本要素](../../../../docs/framework/wpf/advanced/base-elements.md) + [要素のツリーおよびシリアル化](../../../../docs/framework/wpf/advanced/element-tree-and-serialization.md) + [プロパティ](../../../../docs/framework/wpf/advanced/properties-wpf.md) + [入力](../../../../docs/framework/wpf/advanced/input-wpf.md) + [リソース](../../../../docs/framework/wpf/advanced/resources-wpf.md) + [スタイルとテンプレート](../../../../docs/framework/wpf/controls/styling-and-templating.md) + [WPF のコンテンツ モデル](../../../../docs/framework/wpf/controls/wpf-content-model.md) + [スレッド モデル](../../../../docs/framework/wpf/advanced/threading-model.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/flow-content-elements-how-to-topics.md b/docs/framework/wpf/advanced/flow-content-elements-how-to-topics.md new file mode 100644 index 00000000000..457b5d99435 --- /dev/null +++ b/docs/framework/wpf/advanced/flow-content-elements-how-to-topics.md @@ -0,0 +1,50 @@ +--- +title: "フロー コンテンツ要素に関する「方法」トピック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "ドキュメント, フロー コンテンツ参照" + - "フロー コンテンツ要素 [WPF], 方法トピック" +ms.assetid: ef5175df-6ab9-4096-be0c-804003b44c64 +caps.latest.revision: 62 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 62 +--- +# フロー コンテンツ要素に関する「方法」トピック +このセクションのトピックでは、さまざまなフロー コンテンツ要素とその関連する機能を使用して一般的なタスクを行う方法について説明します。 + +## このセクションの内容 + [段落間の間隔を調整する](../../../../docs/framework/wpf/advanced/how-to-adjust-spacing-between-paragraphs.md) + [プログラムによってテーブルをビルドする](../../../../docs/framework/wpf/advanced/how-to-build-a-table-programmatically.md) + [プログラムによってコンテンツの FlowDirection を変更する](../../../../docs/framework/wpf/advanced/how-to-change-the-flowdirection-of-content-programmatically.md) + [TextWrapping プロパティをプログラムにより変更する](../../../../docs/framework/wpf/advanced/how-to-change-the-textwrapping-property-programmatically.md) + [XAML を使用してテーブルを定義する](../../../../docs/framework/wpf/advanced/how-to-define-a-table-with-xaml.md) + [テキストの文字体裁を変更する](../../../../docs/framework/wpf/advanced/how-to-alter-the-typography-of-text.md) + [テキストのトリミングを有効にする](../../../../docs/framework/wpf/advanced/how-to-enable-text-trimming.md) + [プログラムでテキストに要素を挿入する](../../../../docs/framework/wpf/advanced/how-to-insert-an-element-into-text-programmatically.md) + [Blocks プロパティを介してフロー コンテンツ要素を操作する](../../../../docs/framework/wpf/advanced/how-to-manipulate-flow-content-elements-through-the-blocks-property.md) + [Inlines プロパティを介してフロー コンテンツ要素を操作する](../../../../docs/framework/wpf/advanced/how-to-manipulate-flow-content-elements-through-the-inlines-property.md) + [Blocks プロパティを介して FlowDocument を操作する](../../../../docs/framework/wpf/advanced/how-to-manipulate-a-flowdocument-through-the-blocks-property.md) + [Columns プロパティによってテーブルの列を操作する](../../../../docs/framework/wpf/advanced/how-to-manipulate-table-columns-through-the-columns-property.md) + [RowGroups プロパティを介してテーブルの行グループを操作する](../../../../docs/framework/wpf/advanced/how-to-manipulate-table-row-groups-through-the-rowgroups-property.md) + [フロー コンテンツ要素を使用する](../../../../docs/framework/wpf/advanced/how-to-use-flow-content-elements.md) + [FlowDocument の列区切り属性を使用する](../../../../docs/framework/wpf/advanced/how-to-use-flowdocument-column-separating-attributes.md) + +## 関連項目 + + + + +## 関連項目 + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/flow-content.md b/docs/framework/wpf/advanced/flow-content.md new file mode 100644 index 00000000000..3b0af716694 --- /dev/null +++ b/docs/framework/wpf/advanced/flow-content.md @@ -0,0 +1,49 @@ +--- +title: "フロー コンテンツ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "ドキュメント, フロー コンテンツ参照" + - "フロー コンテンツ参照" +ms.assetid: d32501af-0bac-4b80-8a20-61a6996753fe +caps.latest.revision: 70 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 70 +--- +# フロー コンテンツ +フロー コンテンツ要素は、 でホストするのに適したフロー コンテンツを作成するためのビルド ブロックを提供します。 + +## このセクションの内容 + [フロー ドキュメントの概要](../../../../docs/framework/wpf/advanced/flow-document-overview.md) + [TextElement コンテンツ モデルの概要](../../../../docs/framework/wpf/advanced/textelement-content-model-overview.md) + [テーブルの概要](../../../../docs/framework/wpf/advanced/table-overview.md) + [方法のトピック](../../../../docs/framework/wpf/advanced/flow-content-elements-how-to-topics.md) + +## 関連項目 + + + + + + + + + + + + + + +## 関連項目 + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/flow-document-overview.md b/docs/framework/wpf/advanced/flow-document-overview.md new file mode 100644 index 00000000000..051173837ca --- /dev/null +++ b/docs/framework/wpf/advanced/flow-document-overview.md @@ -0,0 +1,364 @@ +--- +title: "フロー ドキュメントの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コンテンツ スキーマ" + - "ドキュメント, フロー ドキュメント" + - "フロー コンテンツ要素 [WPF], フロー ドキュメント" + - "フロー ドキュメント" +ms.assetid: ef236a50-d44f-43c8-ba7c-82b0c733c0b7 +caps.latest.revision: 39 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 29 +--- +# フロー ドキュメントの概要 +フロー ドキュメントは、表示と読みやすさを最適化するように設計されたドキュメントです。 フロー ドキュメントは、1 つの定義済みのレイアウトに設定するのではなく、ウィンドウのサイズ、デバイスの解像度、省略可能なユーザー設定など、ランタイム変数に基づいてコンテンツを動的に調整したり再配置したりします。 また、フロー ドキュメントは、改ページ位置の自動修正や列などの高度なドキュメント機能を提供します。 ここでは、フロー ドキュメントの概要およびフロー ドキュメントの作成方法について説明します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## フロー ドキュメントとは + フロー ドキュメントは、ウィンドウ サイズ、デバイスの解像度、およびその他の環境変数に応じて "コンテンツを再配置" するために設計されています。 また、フロー ドキュメントには、検索、読みやすさを最適化するモードの表示、およびフォントのサイズと外観を変更する機能を含むさまざまな組み込み済みの機能があります。 フロー ドキュメントは、主なドキュメントの使用シナリオが読みやすさである場合に最適です。 これに対し、固定ドキュメントは、静的なプレゼンテーションを行うように設計されています。 ソース コンテンツの忠実性が重要である場合は、固定ドキュメントが適しています。 各種ドキュメントの詳細については、「[WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md)」を参照してください。 + + さまざまなサイズの複数のウィンドウで表示されるサンプルのフロー ドキュメントを次の図に示します。 表示領域が変わると、コンテンツはスペースを最大限に利用できるように再配置されます。 + + ![フロー ドキュメントの内容のフロー変更](../../../../docs/framework/wpf/advanced/media/edocs-flowdocument.png "eDocs\_FlowDocument") + + 上のイメージに示すように、フロー コンテンツには、段落、リスト、図などの複数のコンポーネントを含めることができます。 これらのコンポーネントは、マークアップでの要素と手順コードでのオブジェクトに対応します。 これらのクラスの詳細については、この概要の「[フロー関連のクラス](#flow_related_classes)」でもう一度説明します。 ここでは、太字テキストとリストが含まれている段落で構成されているフロー ドキュメントを作成する単純なコード例を示します。 + + [!code-xml[FlowOvwSnippets_snip#SimpleFlowExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/SimpleFlowExample.xaml#simpleflowexamplewholepage)] + + [!code-csharp[FlowOvwSnippets_procedural_snip#SimpleFlowCodeOnlyExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/CSharp/SimpleFlowExample.cs#simpleflowcodeonlyexamplewholepage)] + [!code-vb[FlowOvwSnippets_procedural_snip#SimpleFlowCodeOnlyExampleWholePage](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/VisualBasic/SimpleFlowExample.vb#simpleflowcodeonlyexamplewholepage)] + + 次の図は、このコード スニペットの結果を示したものです。 + + ![スクリーンショット: 表示される FlowDocument の例](../../../../docs/framework/wpf/advanced/media/flow-ovw-first-example.png "Flow\_Ovw\_First\_Example") + + この例では、 コントロールはフロー コンテンツをホストするために使用されています。 コントロールをホストしているフロー コンテンツの詳細については、「[フロー ドキュメントの種類](#flow_document_types)」を参照してください。 、および 要素は、マークアップでの順序に基づいて、コンテンツの書式設定を制御するために使用されます。 たとえば、 要素は、段落内のテキストの部分のみにまたがっています。結果として、その部分のみが太字のテキストになります。 HTML を使用したことがある場合、これは慣れ親しまれているでしょう。 + + 上の図が示すように、フロー ドキュメントには、いくつかの機能が組み込まれています。 + +- 検索 : ユーザーがドキュメント全体のフルテキスト検索を実行できるようにします。 + +- 表示モード : ユーザーは、単一ページ \(一度に 1 ページ\) 表示モード、2 ページ \(読書形式\) 表示モード、および連続したスクロール \(ボトムレス\) 表示モードなど、各自に適切な表示モードを選択できます。 これらの表示モードの詳細については、 を参照してください。 + +- ページ ナビゲーション コントロール : ドキュメントの表示モードでページを使用する場合、ページ ナビゲーション コントロールには、次のページへのジャンプ用ボタン \(下向き矢印\)、前のページへのジャンプ用ボタン \(上向き矢印\)、および現在のページ番号と総ページ数のインジケーターが含まれます。 ページ間の移動は、キーボードの方向キーを使用して行うこともできます。 + +- ズーム : ユーザーはプラス \(\+\) ボタンまたはマイナス \(\-\) ボタンをクリックして、ズーム レベルを上げたり下げたりできます。 ズーム コントロールには、ズーム レベルの調整用スライダーも含まれます。 詳細については、「」を参照してください。 + + これらの機能は、フロー コンテンツをホストするために使用されるコントロールに基づいて変更できます。 次のセクションでは、さまざまなコントロールについて説明します。 + + +## フロー ドキュメントの種類 + フロー ドキュメント コンテンツの表示、およびそれがどのように表示されるかは、どのようなオブジェクトがフロー コンテンツをホストするために使用されるかに依存します。 , 、および の 4 つのコントロールがフロー コンテンツの表示をサポートします。 これらのコントロールについて、以下に簡単に説明します。 + + **メモ :** はフロー コントロールを直接ホストするために必要であるため、これらのすべての表示コントロールでは を使用してフロー コンテンツのホストを可能にします。 + +### FlowDocumentReader + には、単一ページ \(一度に 1 ページ\) 表示モード、2 ページ \(読書形式\) 表示モード、連続スクロール \(ボトムレス\) 表示モードなど、さまざまな表示モードをユーザーが動的に選択できるようにするための機能が用意されています。 これらの表示モードの詳細については、 を参照してください。 表示モードを動的に切り替える必要がない場合は、 および を使用すると便利です。これらは、特定の表示モードに固定された軽量のコンテンツ ビューアーです。 + +### FlowDocumentPageViewer と FlowDocumentScrollViewer + は、コンテンツを一度に 1 ページずつ表示し、 はコンテンツを連続したスクロール モードで表示します。 および は、いずれも特定の表示モードに固定されています。 と比較してください。このリーダーでは、 列挙体により各種表示モードを動的に切り替えることができますが、 よりも多くのリソースを消費します。 + + 既定では、垂直スクロール バーは常に表示され、水平スクロール バーは必要に応じて表示されます。 の既定の UI にはツール バーが含まれませんが、 プロパティを使用して組み込みツール バーを有効にできます。 + +### RichTextBox + ユーザーがフロー コンテンツを編集できるようにする場合は、 を使用します。 たとえば、表、斜体や太字の書式設定などをユーザーが操作できるようにするエディターを作成する必要がある場合は、 を使用します。 詳細については、「[RichTextBox の概要](../../../../docs/framework/wpf/controls/richtextbox-overview.md)」を参照してください。 + + **メモ :** 内のフロー コンテンツの動作は、他のコントロールに格納されたフロー コンテンツの動作とは異なる場合があります。 たとえば、 内には列が存在しないため、自動サイズ変更動作もありません。 また、検索、表示モード、ページ ナビゲーション、およびズームなどのフロー コンテンツの通常の組み込み機能も、 内では使用できません。 + + +## フロー コンテンツの作成 + フロー コンテンツは、テキスト、イメージ、テーブル、およびコントロールのような 派生クラスを含むさまざまな要素で構成された複雑になものにすることができます。 複雑なフロー コンテンツを作成する方法を理解するには、次の点が重要です。 + +- **フロー関連のクラス** : フロー コンテンツ内で使用される各クラスには特定の目的があります。 また、フロー クラス間の階層型の関係により、それらがどのように使用されるかが理解しやすくなっています。 たとえば、 から派生したクラスは表示されるオブジェクトを格納しますが、 クラスから派生したクラスは他のオブジェクトを格納するために使用されます。 + +- **コンテンツ スキーマ** : フロー ドキュメントには、多くの入れ子になった要素が必要になる場合があります。 コンテンツ スキーマは、使用可能な要素間の親子のリレーションシップを指定します。 + + 以下のセクションでは、これらの点のそれぞれについて詳しく説明します。 + + +## フロー関連のクラス + 次の図は、フロー コンテンツで最も一般的に使用されるオブジェクトを示します。 + + ![ダイアグラム: フロー コンテンツ要素クラス階層](../../../../docs/framework/wpf/advanced/media/flow-class-hierarchy.png "Flow\_Class\_Hierarchy") + + フロー コンテンツのために、2 つの重要なカテゴリがあります。 + +1. **Block の派生クラス** : "Block コンテンツ要素" または単に "Block 要素" とも呼ばれます。 を継承する要素は、要素を共通の親の下にグループ化したり、共通の属性をグループに適用したりするために使用できます。 + +2. **Inline の派生クラス** : "Inline コンテンツ要素" または単に "Inline 要素" とも呼ばれます。 から継承する要素は、Block 要素または別の Inline 要素内に格納されます。 Inline 要素は、多くの場合、画面にレンダリングされるコンテンツの直接のコンテナーとして使用されます。 たとえば、 \(Block 要素\) には \(Inline 要素\) を格納することができますが、 には実際には画面にレンダリングされるテキストが格納されます。 + + これらの 2 つのカテゴリの各クラスについて、以下に簡単に説明します。 + +### Block の派生クラス + **Paragraph** + + は、通常、コンテンツを 1 つの段落にグループ化するために使用されます。 Paragraph の最も単純かつ一般的な用途は、テキストの段落の作成です。 + + [!code-xml[FlowOvwSnippets_snip#ParagraphExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/ParagraphExample.xaml#paragraphexamplewholepage)] + + [!code-csharp[FlowOvwSnippets_procedural_snip#ParagraphCodeOnlyExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/CSharp/ParagraphExample.cs#paragraphcodeonlyexamplewholepage)] + [!code-vb[FlowOvwSnippets_procedural_snip#ParagraphCodeOnlyExampleWholePage](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/VisualBasic/ParagraphExample.vb#paragraphcodeonlyexamplewholepage)] + + ただし、次に示すように、他の Inline の派生要素を格納することもできます。 + + **セクション** + + は、他の の派生要素を格納するためにのみ使用されます。 格納している要素に対して、既定の書式設定を適用することはありません。 ただし、 で設定されたプロパティ値は、その子要素に適用されます。 セクションでは、プログラムで子コレクションを反復処理することもできます。 は、HTML の \ タグと同じように使用されます。 + + 次の例では、3 つの段落は、1 つの で定義されます。 このセクションには、 プロパティ値である Red があるため、段落の背景色も赤になります。 + + [!code-xml[FlowOvwSnippets_snip#SectionExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/SectionExample.xaml#sectionexamplewholepage)] + + [!code-csharp[FlowOvwSnippets_procedural_snip#SectionCodeOnlyExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/CSharp/SectionExample.cs#sectioncodeonlyexamplewholepage)] + [!code-vb[FlowOvwSnippets_procedural_snip#SectionCodeOnlyExampleWholePage](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/VisualBasic/SectionExample.vb#sectioncodeonlyexamplewholepage)] + + **BlockUIContainer** + + は、 要素 \( など\) を Block の派生フロー コンテンツに埋め込むことができるようにします。 \(以下を参照\) は Inline の派生フロー コンテンツに 要素を埋め込むために使用されます。 および は、これらの 2 つの要素のいずれかの中に格納されない限り、フロー コンテンツで を使用する方法は他にないため重要です。 + + 要素を使用してフロー コンテンツ内に オブジェクトをホストする方法を次の例に示します。 + + [!code-xml[SpanSnippets#_BlockUIXAML](../../../../samples/snippets/csharp/VS_Snippets_Wpf/SpanSnippets/CSharp/Window1.xaml#_blockuixaml)] + + この例の表示結果を次の図に示します。 + + ![スクリーンショット: フロー コンテンツに埋め込まれた UIElement](../../../../docs/framework/wpf/advanced/media/blockuicontainer.png "BlockUIContainer") + + **リスト** + + は、箇条書きリストまたは番号リストを作成するために使用されます。 プロパティを 列挙値に設定して、リストのスタイルを決定します。 簡単なリストを作成する方法を次の例に示します。 + + [!code-xml[FlowOvwSnippets_snip#ListExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/ListExample.xaml#listexamplewholepage)] + + [!code-csharp[FlowOvwSnippets_procedural_snip#ListCodeOnlyExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/CSharp/ListExample.cs#listcodeonlyexamplewholepage)] + [!code-vb[FlowOvwSnippets_procedural_snip#ListCodeOnlyExampleWholePage](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/VisualBasic/ListExample.vb#listcodeonlyexamplewholepage)] + + **メモ :** だけが を使用して子要素を管理するフロー要素です。 + + **テーブル** + + は、テーブルを作成するために使用されます。 は、 要素と似ていますが、より多くの機能を備えています。そのため、さらに多くのリソースのオーバーヘッドを必要とします。 であるため、 または に格納されない限り、フロー コンテンツで使用できません。 の詳細については、「[テーブルの概要](../../../../docs/framework/wpf/advanced/table-overview.md)」を参照してください。 + +### Inline の派生クラス + **\[実行\]** + + は、書式なしテキストを格納するために使用されます。 フロー コンテンツでは オブジェクトを広範に使用することを想定している場合がありますが、 マークアップでは 要素を明示的に使用する必要はありません。 は、コードを使用してフロー ドキュメントを作成または操作するときに使用する必要があります。 たとえば、次のマークアップでは、最初の 要素を明示的に指定しますが、2 番目の Paragraph は Run 要素を明示的に指定しません。 両方の段落は、同じ出力を生成します。 + + [!code-xml[FlowOvwSnippets_snip#RunExample1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/RunSnippetsExample.xaml#runexample1)] + + **メモ:** [!INCLUDE[net_v40_short](../../../../includes/net-v40-short-md.md)] 以降では、 オブジェクトの プロパティは依存関係プロパティです。 プロパティを などのデータ ソースにバインドできます。 プロパティは、一方向のバインディングを完全にサポートしています。 また、 プロパティは、 を除く双方向のバインディングもサポートしています。 例については、 のトピックを参照してください。 + + **Span** + + は他のインライン コンテンツ要素をグループ化します。 継承されたレンダリングは、 要素内のコンテンツには適用されません。 ただし、、および を含む から継承する要素は、テキストに書式設定を適用します。 + + テキスト、 要素、および を含むインライン コンテンツを格納するために使用されている の例を次に示します。 + + [!code-xml[FlowOvwSnippets_snip#SpanExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/SpanExample.xaml#spanexamplewholepage)] + + 次のスクリーンショットは、この例がどのようにレンダリングされるかを示しています。 + + ![スクリーンショット: 表示される Span の例](../../../../docs/framework/wpf/advanced/media/flow-spanexample.png "Flow\_SpanExample") + + **InlineUIContainer** + + は、 要素 \( のようなコントロール\) を コンテンツ要素に埋め込むことができるようにします。 この要素は、前に説明した と等価のインラインです。 インラインを挿入するために を使用する例を次に示します。 + + [!code-xml[FlowOvwSnippets_snip#InlineUIContainerExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/InlineUIContainerExample.xaml#inlineuicontainerexamplewholepage)] + + [!code-csharp[FlowOvwSnippets_procedural_snip#InlineUIContainerCodeOnlyExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/CSharp/InlineUIContainerExample.cs#inlineuicontainercodeonlyexamplewholepage)] + [!code-vb[FlowOvwSnippets_procedural_snip#InlineUIContainerCodeOnlyExampleWholePage](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/VisualBasic/InlineUIContainerExample.vb#inlineuicontainercodeonlyexamplewholepage)] + + **メモ :** は、マークアップでは明示的に使用する必要はありません。 これを省略した場合、コードがコンパイルされると が作成されます。 + + ****Figure および Floater**** + + および は、主要コンテンツ フローとは別にカスタマイズできる配置プロパティを持つフロー ドキュメント内にコンテンツを埋め込むために使用されます。 多くの場合、 要素または 要素は、コンテンツの一部を強調表示したり目立たせたりするため、コンテンツのメイン フロー内のサポート イメージや他のコンテンツをホストするため、または広告などの関連の薄いコンテンツを挿入するために使用されます。 + + テキストの段落に を埋め込む方法を次の例に示します。 + + [!code-xml[FlowOvwSnippets_snip#FigureExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/FigureExample.xaml#figureexamplewholepage)] + + [!code-csharp[FlowOvwSnippets_procedural_snip#FigureCodeOnlyExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/CSharp/FigureExample.cs#figurecodeonlyexamplewholepage)] + [!code-vb[FlowOvwSnippets_procedural_snip#FigureCodeOnlyExampleWholePage](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FlowOvwSnippets_procedural_snip/VisualBasic/FigureExample.vb#figurecodeonlyexamplewholepage)] + + この例の表示結果を次の図に示します。 + + ![スクリーンショット: 図形の例](../../../../docs/framework/wpf/advanced/media/flow-ovw-figure-example.png "Flow\_Ovw\_Figure\_Example") + + にはいくつか違いがあり、それぞれ異なる場面で使用されます。 + + ****Figure:**** + +- 配置可能です。水平方向および垂直方向のアンカーを設定することによって、ページ、コンテンツ、列、または段落に対して相対的にドッキングできます。 プロパティおよび プロパティを使用して、任意のオフセットを指定することもできます。 + +- 複数の列にまたがるサイズ指定が可能です。 の高さと幅は、ページ、コンテンツ、または列の高さや幅の倍数に設定できます。 ページおよびコンテンツの場合は、1 より大きい倍数は指定できない点に注意してください。 たとえば、 の幅を「0.5 ページ」、「0.25 コンテンツ」、「2 列」のように設定できます。 高さと幅は、絶対ピクセル値で指定することもできます。 + +- 改ページ位置の自動修正は行いません。 の内側のコンテンツが 内に収まらない場合は、収まる部分のみが表示され、残りの部分は失われます。 + + ****Floater:**** + +- 位置の指定はできず、必要なスペースを確保できる場所に描画されます。 のオフセットやアンカーを設定することはできません。 + +- 複数の列にまたがるサイズ指定はできません。 の既定サイズは 1 列です。 絶対ピクセル値で指定できる プロパティがありますが、設定値が 1 列の幅より大きいと無視されるため、その場合の浮遊要素のサイズは 1 列になります。 正しいピクセル幅を設定することによってサイズを 1 列未満にすることはできますが、列を基準とした相対的なサイズ指定はできないため、 の幅に関しては "0.5 列" という表現は有効ではありません。 には高さのプロパティはなく、高さを設定することはできません。高さはコンテンツに依存します。 + +- は改ページ位置の自動修正を行います。指定した幅のコンテンツが複数列の高さまで拡張されると、浮遊要素は分割されて、次の列、次のページなどに改ページ位置が自動修正されます。 + + は、サイズや位置の制御が求められ、指定サイズに収まることが確実な単体のコンテンツを配置する場合に適しています。 は、メイン ページのコンテンツと同様にフローする流動性の高いコンテンツを、メイン ページのコンテンツとは別に配置する場合に適しています。 + + ****LineBreak**** + + はフロー コンテンツの改行の原因となります。 次の例は の使い方を示しています。 + + [!code-xml[FlowOvwSnippets_snip#LineBreakExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/LineBreakExample.xaml#linebreakexamplewholepage)] + + 次のスクリーンショットは、この例がどのようにレンダリングされるかを示しています。 + + ![スクリーンショット: LineBreak の例](../../../../docs/framework/wpf/advanced/media/flow-ovw-linebreakexample.png "Flow\_Ovw\_LineBreakExample") + +### フロー コレクションの要素 + 上記の例の多くでは、プログラムでフロー コンテンツを構築するために および が使用されています。 たとえば、要素を に追加するには、次の構文を使用できます。 + + `…` + + `myParagraph.Inlines.Add(new Run("Some text"));` + + `…` + + これは、 に追加します。 これは、マークアップの の内部にある暗黙の と同じです。 + + `…` + + `` + + `Some Text` + + `` + + `…` + + の使用例として、次の例では、新しい を作成してから、**Add** メソッドを使用して新しい コンテンツに追加します。 + + [!code-csharp[FlowDocumentSnippets#_SectionBlocksAdd](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowDocumentSnippets/CSharp/Window1.xaml.cs#_sectionblocksadd)] + [!code-vb[FlowDocumentSnippets#_SectionBlocksAdd](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FlowDocumentSnippets/visualbasic/window1.xaml.vb#_sectionblocksadd)] + + フロー コレクションへの項目の追加に加えて、項目を削除できます。 次の例では、 内の最後の 要素を削除します。 + + [!code-csharp[SpanSnippets#_SpanInlinesRemoveLast](../../../../samples/snippets/csharp/VS_Snippets_Wpf/SpanSnippets/CSharp/Window1.xaml.cs#_spaninlinesremovelast)] + [!code-vb[SpanSnippets#_SpanInlinesRemoveLast](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/SpanSnippets/visualbasic/window1.xaml.vb#_spaninlinesremovelast)] + + 次の例では、 からすべての内容 \( 要素\) を消去します。 + + [!code-csharp[SpanSnippets#_SpanInlinesClear](../../../../samples/snippets/csharp/VS_Snippets_Wpf/SpanSnippets/CSharp/Window1.xaml.cs#_spaninlinesclear)] + [!code-vb[SpanSnippets#_SpanInlinesClear](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/SpanSnippets/visualbasic/window1.xaml.vb#_spaninlinesclear)] + + フロー コンテンツをプログラムによって操作する場合、これらのコレクションを広く活用する可能性があります。 + + フロー要素が子要素を格納するために \(インライン\) または \(ブロック\) を使用するかどうかは、親が格納できる子要素の種類 \( または \) によって異なります。 フロー コンテンツ要素の格納規則については、次のセクションのコンテンツ スキーマで説明します。 + + **メモ :** フロー コンテンツと共に使用されるコレクションの 3 つ目の種類は ですが、このコレクションは と共にしか使用されません。 また、 と共に使用されるいくつかのコレクションがあります。 詳細については、「[テーブルの概要](../../../../docs/framework/wpf/advanced/table-overview.md)」を参照してください。 + + +## コンテンツ スキーマ + 多数のさまざまなフロー コンテンツ要素が指定されると、要素が格納できる子要素の種類を追跡できなくなる可能性があります。 フロー要素の格納規則をまとめたものを次の図に示します。 矢印は、使用可能な親子のリレーションシップを表します。 + + ![ダイアグラム: フロー コンテンツ コンテインメント スキーマ](../../../../docs/framework/wpf/advanced/media/flow-content-schema.png "Flow\_Content\_Schema") + + 上の図からわかるように、要素で許容される子は、必ずしもそれが 要素と 要素のどちらであるかによって決まるわけではありません。 たとえば、 \( 要素\) は 子要素だけを持つことができるのに対し、 \(同じく 要素\) は 子要素だけを持つことができます。 そのため、どの要素を別の要素に含めることができるかをすばやく判断するには、図が役立ちます。 例として、 のフロー コンテンツを構築する方法を、上の図を使用して判断してみましょう。 + + **1.** を含んでいる必要があり、 の派生オブジェクトを含んでいる必要があります。 上の図でこれに対応する部分を次に示します。 + + ![ダイアグラム: RichTextBox コンテインメント規則](../../../../docs/framework/wpf/advanced/media/flow-ovw-schemawalkthrough1.png "Flow\_Ovw\_SchemaWalkThrough1") + + この段階では、マークアップは次のようになります。 + + [!code-xml[FlowOvwSnippets_snip#SchemaWalkThrough1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/MiscSnippets.xaml#schemawalkthrough1)] + + **2.**上の図によると、 要素には、、および を含む、いくつかの選択肢があります \(図の Block の派生クラスを参照\)。 ここで、 が必要だとします。 上の図によると、 を含んでおり、これは 要素を含んでいます。さらにこれは 要素を含んでおり、これは の派生オブジェクトを含んでいます。 上の図で、 に対応する部分を次に示します。 + + ![ダイアグラム: テーブルの親/子スキーマ](../../../../docs/framework/wpf/advanced/media/flow-ovw-schemawalkthrough2.png "Flow\_Ovw\_SchemaWalkThrough2") + + 以下は、これに対応するマークアップです。 + + [!code-xml[FlowOvwSnippets_snip#SchemaWalkThrough2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/MiscSnippets.xaml#schemawalkthrough2)] + + **3.**さらに、 の下にも、1 つ以上の 要素が必要です。 簡単にするために、セル内にいくつかのテキストを配置することにします。 これを行うには、 要素と組み合わせて使用します。 上の図でこれに対応する部分を次に示します。ここには、 要素を取ることができ、 \( 要素の 1 つ\) がプレーン テキストのみを取ることができることが示されています。 + + ![ダイアグラム: 段落の親/子スキーマ](../../../../docs/framework/wpf/advanced/media/flow-ovw-schemawalkthrough3.png "Flow\_Ovw\_SchemaWalkThrough3") + + ![ダイアグラム: 実行の親/子スキーマ](../../../../docs/framework/wpf/advanced/media/flow-ovw-schemawalkthrough4.png "Flow\_Ovw\_SchemaWalkThrough4") + + 以下は、マークアップによる例の全体です。 + + [!code-xml[FlowOvwSnippets_snip#SchemaExampleWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FlowOvwSnippets_snip/CS/SchemaExample.xaml#schemaexamplewholepage)] + + +## テキストのカスタマイズ + 通常、テキストは、フロー ドキュメントで最も一般的なコンテンツの種類です。 上で導入されたオブジェクトは、テキストをレンダリングする方法のほとんどの側面を制御するために使用できますが、このセクションで説明されるテキストのカスタマイズ用にその他のメソッドがいくつか存在します。 + +### 文字装飾 + 文字装飾によって、下線、上線、ベースライン、および取り消し線の効果をテキストに適用できます \(下図を参照\)。 これらの装飾は、、および を含む複数のオブジェクトによって公開される プロパティを使用して追加されます。 + + プロパティを設定する方法を次の例に示します。 + + [!code-xml[InlineSnippets#_Paragraph_TextDecXAML](../../../../samples/snippets/csharp/VS_Snippets_Wpf/InlineSnippets/CSharp/Window1.xaml#_paragraph_textdecxaml)] + + [!code-csharp[InlineSnippets#_Paragraph_TextDec](../../../../samples/snippets/csharp/VS_Snippets_Wpf/InlineSnippets/CSharp/Window1.xaml.cs#_paragraph_textdec)] + [!code-vb[InlineSnippets#_Paragraph_TextDec](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/InlineSnippets/visualbasic/window1.xaml.vb#_paragraph_textdec)] + + この例の表示結果を次の図に示します。 + + ![スクリーンショット: 既定の取り消し線が適用されたテキスト](../../../../docs/framework/wpf/advanced/media/inline-textdec-strike.png "Inline\_TextDec\_Strike") + + 次の図は、それぞれ**上線**、**標準**、**下線**の各装飾の表示結果を示しています。 + + ![スクリーンショット: TextDecorator の上に線を引く](../../../../docs/framework/wpf/advanced/media/inline-textdec-over.png "Inline\_TextDec\_Over") + + ![スクリーンショット: テキストに対する既定のベースライン効果](../../../../docs/framework/wpf/advanced/media/inline-textdec-base.png "Inline\_TextDec\_Base") + + ![スクリーンショット: 既定の下線が適用されたテキスト](../../../../docs/framework/wpf/advanced/media/inline-textdec-under.png "Inline\_TextDec\_Under") + +### タイポグラフィ + プロパティは、、および を含むほとんどのフロー関連のコンテンツによって公開されます。 このプロパティは、テキストの文字体裁の特性またはバリエーション \( 小さい大文字か大きい大文字か、上付き文字と下付き文字の作成など\) を制御するために使用されます。 + + 要素として を使用して、 属性を設定する方法を次の例に示します。 + + [!code-xml[TextElementSnippets#_TextElement_TypogXAML](../../../../samples/snippets/csharp/VS_Snippets_Wpf/TextElementSnippets/CSharp/Window1.xaml#_textelement_typogxaml)] + + この例の表示結果を次の図に示します。 + + ![スクリーンショット: 変更されたタイポグラフィを含むテキスト](../../../../docs/framework/wpf/advanced/media/textelement-typog.png "TextElement\_Typog") + + 既定の文字体裁プロパティを設定した同様の例の表示結果を次の図に示します。 + + ![スクリーンショット: 変更されたタイポグラフィを含むテキスト](../../../../docs/framework/wpf/advanced/media/textelement-typog-default.png "TextElement\_Typog\_Default") + + プロパティをプログラムによって設定する方法を次の例に示します。 + + [!code-csharp[TextElementSnippets#_TextElement_Typog](../../../../samples/snippets/csharp/VS_Snippets_Wpf/TextElementSnippets/CSharp/Window1.xaml.cs#_textelement_typog)] + [!code-vb[TextElementSnippets#_TextElement_Typog](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/TextElementSnippets/visualbasic/window1.xaml.vb#_textelement_typog)] + + 文字体裁の詳細については、「[WPF のタイポグラフィ](../../../../docs/framework/wpf/advanced/typography-in-wpf.md)」を参照してください。 + +## 参照 + [テキスト](../../../../docs/framework/wpf/advanced/optimizing-performance-text.md) + [WPF のタイポグラフィ](../../../../docs/framework/wpf/advanced/typography-in-wpf.md) + [方法のトピック](../../../../docs/framework/wpf/advanced/flow-content-elements-how-to-topics.md) + [TextElement コンテンツ モデルの概要](../../../../docs/framework/wpf/advanced/textelement-content-model-overview.md) + [RichTextBox の概要](../../../../docs/framework/wpf/controls/richtextbox-overview.md) + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) + [テーブルの概要](../../../../docs/framework/wpf/advanced/table-overview.md) + [注釈の概要](../../../../docs/framework/wpf/advanced/annotations-overview.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/focus-overview.md b/docs/framework/wpf/advanced/focus-overview.md new file mode 100644 index 00000000000..e51c5a04403 --- /dev/null +++ b/docs/framework/wpf/advanced/focus-overview.md @@ -0,0 +1,129 @@ +--- +title: "フォーカスの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション, フォーカス" + - "フォーカスを設定 (アプリケーションに)" +ms.assetid: 0230c4eb-0c8a-462b-ac4b-ae3e511659f4 +caps.latest.revision: 19 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 18 +--- +# フォーカスの概要 +[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、キーボード フォーカスと論理フォーカスという、フォーカスに関する 2 つの主要な概念があります。 キーボード フォーカスはキーボード入力を受け取る要素を表し、論理フォーカスはフォーカスを持つフォーカス範囲内の要素を表します。 これらの概念については、この概要で詳しく説明します。 フォーカスを取得可能な領域を複数持つ複雑なアプリケーションを作成する場合は、これらの概念の違いを理解することが重要です。 + + フォーカス管理に関与する主要なクラスには、 クラス、 クラス、および などの基本要素クラスがあります。 基本要素の詳細については、「[基本要素の概要](../../../../docs/framework/wpf/advanced/base-elements-overview.md)」を参照してください。 + + クラスは主にキーボード フォーカスに関連し、 は主に論理フォーカスに関連しますが、これは絶対的な区別ではありません。 キーボード フォーカスを持つ要素は論理フォーカスも持ちますが、論理フォーカスを持つ要素は必ずしもキーボード フォーカスを持ちません。 クラスを使用してキーボード フォーカスを持つ要素を設定したときには、要素に論理フォーカスも設定されるので、この違いがよくわかります。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## キーボード フォーカス + キーボード フォーカスは、現在キーボード入力を受け取っている要素を指します。 キーボード フォーカスを持つ要素は、デスクトップ全体で 1 つしかありません。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、キーボード フォーカスを持つ要素の は `true` に設定されます。 クラスの静的プロパティ は、現在キーボード フォーカスを持っている要素を取得します。 + + 要素でキーボード フォーカスを取得するためには、基本要素で プロパティと プロパティを `true` に設定する必要があります。 基本クラスなど一部のクラスでは の既定値は `false` です。したがって、このような要素がキーボード フォーカスを取得できるようにする場合は、 を `true` に設定する必要があります。 + + キーボード フォーカスは、要素への Tab キーでの移動や特定の要素でのマウスのクリックなど、[!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] でのユーザー操作を通じて取得できます。 キーボード フォーカスは、 クラスで メソッドを使用してプログラムにより取得することもできます。 メソッドは、指定された要素にキーボード フォーカスを設定しようとします。 返される要素はキーボード フォーカスが設定された要素ですが、古いフォーカス オブジェクトまたは新しいフォーカス オブジェクトが要求をブロックする場合は、要求された要素とは異なる可能性があります。 + + メソッドを使用して、キーボード フォーカスを に設定する例を次に示します。 + + [!code-csharp[focussample#FocusSampleSetFocus](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FocusSample/CSharp/Window1.xaml.cs#focussamplesetfocus)] + [!code-vb[focussample#FocusSampleSetFocus](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FocusSample/visualbasic/window1.xaml.vb#focussamplesetfocus)] + + 基本要素クラスの プロパティは、要素にキーボード フォーカスがあるかどうかを示す値を取得します。 基本要素クラスの プロパティは、要素またはいずれかの子ビジュアル要素にキーボード フォーカスがあるかどうかを示す値を取得します。 + + アプリケーションの起動時に初期フォーカスを設定する場合、フォーカスを受け取る要素は、アプリケーションによって読み込まれる初期ウィンドウのビジュアル ツリーに含まれていて、 が `true` に設定されている必要があります。 初期フォーカスを設定する場所は、 イベント ハンドラー内にすることをお勧めします。 コールバックは、 または を呼び出して使用することもできます。 + + +## 論理フォーカス + 論理フォーカスとは、フォーカス範囲内の を意味します。 フォーカス範囲とは、その範囲内の を追跡する要素です。 キーボード フォーカスがフォーカス範囲を離れると、フォーカスがある要素はキーボード フォーカスを失いますが、論理フォーカスは引き続き保持します。 キーボード フォーカスがフォーカス範囲に戻ると、フォーカスがある要素はキーボード フォーカスを得ます。 これにより、キーボード フォーカスが複数のフォーカス範囲間で変更されても、フォーカスがフォーカス範囲に戻ると、そのフォーカス範囲内のフォーカスがある要素はキーボード フォーカスを取り戻すことができます。 + + アプリケーションでは、複数の要素が論理フォーカスを持つことがありますが、特定のフォーカス範囲で論理フォーカスを持つ要素は 1 つだけに限られます。 + + キーボード フォーカスを持つ要素は、その要素が属するフォーカス範囲の論理フォーカスを持ちます。 + + [!INCLUDE[TLA#tla_xaml](../../../../includes/tlasharptla-xaml-md.md)] では、 の添付プロパティ を `true` に設定することにより、要素をフォーカス範囲にすることができます。 コードでは、 を呼び出して、要素をフォーカス範囲にすることができます。 + + 添付プロパティを設定して、 をフォーカス範囲にする例を次に示します。 + + [!code-xml[MarkupSnippets#MarkupIsFocusScopeXAML](../../../../samples/snippets/csharp/VS_Snippets_Wpf/MarkupSnippets/CSharp/Window1.xaml#markupisfocusscopexaml)] + + [!code-csharp[FocusSnippets#FocusSetIsFocusScope](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FocusSnippets/CSharp/Window1.xaml.cs#focussetisfocusscope)] + [!code-vb[FocusSnippets#FocusSetIsFocusScope](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FocusSnippets/visualbasic/window1.xaml.vb#focussetisfocusscope)] + + は、指定した要素のフォーカス範囲を返します。 + + 既定でフォーカス範囲になる、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のクラスは、、および です。 + + は、指定したフォーカス範囲のフォーカスを持つ要素を取得します。 は、指定したフォーカス範囲でフォーカスを持つ要素を設定します。 は、通常、最初にフォーカスを得る要素を設定するために使用します。 + + フォーカス範囲にフォーカスを持つ要素を設定し、フォーカス範囲のフォーカスを持つ要素を取得する例を次に示します。 + + [!code-csharp[FocusSnippets#FocusGetSetFocusedElement](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FocusSnippets/CSharp/Window1.xaml.cs#focusgetsetfocusedelement)] + [!code-vb[FocusSnippets#FocusGetSetFocusedElement](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FocusSnippets/visualbasic/window1.xaml.vb#focusgetsetfocusedelement)] + + +## キーボード ナビゲーション + クラスは、ナビゲーション キーのいずれかが押されたときに、既定のキーボード フォーカスのナビゲーションを実装します。 ナビゲーション キーとは、Tab、Shift \+ Tab、Ctrl \+ Tab、Ctrl \+ Shift \+ Tab、上方向、下方向、左方向、および右方向の各キーを指します。 + + ナビゲーション コンテナーのナビゲーション動作は、添付 プロパティの 、および を設定することにより変更できます。 これらのプロパティは 型であり、指定可能な値は 、および です。 既定値は です。これは、要素がナビゲーション コンテナーではないことを意味します。 + + 複数の オブジェクトを使用して を作成する例を次に示します。 で、 添付プロパティが に設定されます。 内で Tab キーを使用してフォーカスを変更すると、各要素間をフォーカスが移動し、最後の要素に達すると最初の要素にフォーカスが戻ります。 + + [!code-xml[MarkupSnippets#MarkupKeyboardNavigationTabNavigationXAML](../../../../samples/snippets/csharp/VS_Snippets_Wpf/MarkupSnippets/CSharp/Window1.xaml#markupkeyboardnavigationtabnavigationxaml)] + + [!code-csharp[MarkupSnippets#MarkupKeyboardNavigationTabNavigationCODE](../../../../samples/snippets/csharp/VS_Snippets_Wpf/MarkupSnippets/CSharp/Window1.xaml.cs#markupkeyboardnavigationtabnavigationcode)] + [!code-vb[MarkupSnippets#MarkupKeyboardNavigationTabNavigationCODE](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/MarkupSnippets/visualbasic/window1.xaml.vb#markupkeyboardnavigationtabnavigationcode)] + + +## プログラムによるフォーカスのナビゲーション + フォーカスを操作するための追加の [!INCLUDE[TLA#tla_api](../../../../includes/tlasharptla-api-md.md)] には、 があります。 + + は、アプリケーション内の次の要素にフォーカスを変更します。 は、方向を指定するために使用されます。 に渡された は、 などの、フォーカスを移動できる方向を指定します。 + + を使用してフォーカスがある要素を変更する例を次に示します。 + + [!code-csharp[focussample#FocusSampleMoveFocus](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FocusSample/CSharp/Window1.xaml.cs#focussamplemovefocus)] + [!code-vb[focussample#FocusSampleMoveFocus](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/FocusSample/visualbasic/window1.xaml.vb#focussamplemovefocus)] + + は、フォーカスが変更された場合にフォーカスを受け取るオブジェクトを返します。 現在、 でサポートされているのは、、および だけです。 + + +## フォーカス イベント + キーボード フォーカスに関連するイベントには、、および があります。 イベントは、 クラスで添付イベントとして定義されますが、基本要素クラスで等価なルーティング イベントして簡単にアクセスできます。 イベントの詳細については、「[ルーティング イベントの概要](../../../../docs/framework/wpf/advanced/routed-events-overview.md)」を参照してください。 + + は、要素がキーボード フォーカスを受け取ったときに発生します。 は、要素がキーボード フォーカスを失ったときに発生します。 イベントまたは イベントが処理され、 が `true` に設定されると、フォーカスは変更されなくなります。 + + イベント ハンドラーと イベント ハンドラーを に添付する例を次に示します。 + + [!code-xml[keyboardsample#KeyboardSampleXAMLHandlerHookup](../../../../samples/snippets/csharp/VS_Snippets_Wpf/KeyboardSample/CSharp/Window1.xaml#keyboardsamplexamlhandlerhookup)] + + がキーボード フォーカスを取得すると、 プロパティが に変更されます。 + + [!code-csharp[keyboardsample#KeyboardSampleGotFocus](../../../../samples/snippets/csharp/VS_Snippets_Wpf/KeyboardSample/CSharp/Window1.xaml.cs#keyboardsamplegotfocus)] + [!code-vb[keyboardsample#KeyboardSampleGotFocus](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/KeyboardSample/visualbasic/window1.xaml.vb#keyboardsamplegotfocus)] + + がキーボード フォーカスを失うと、 プロパティが白に戻ります。 + + [!code-csharp[keyboardsample#KeyboardSampleLostFocus](../../../../samples/snippets/csharp/VS_Snippets_Wpf/KeyboardSample/CSharp/Window1.xaml.cs#keyboardsamplelostfocus)] + [!code-vb[keyboardsample#KeyboardSampleLostFocus](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/KeyboardSample/visualbasic/window1.xaml.vb#keyboardsamplelostfocus)] + + 論理フォーカスに関連するイベントには、 および があります。 これらのイベントは、 で添付イベントとして定義されますが、 は CLR イベント ラッパーを公開しません。 これらのイベントは、 によって、より使いやすい形で公開されます。 + +## 参照 + + + + [入力の概要](../../../../docs/framework/wpf/advanced/input-overview.md) + [基本要素の概要](../../../../docs/framework/wpf/advanced/base-elements-overview.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/fonts-how-to-topics.md b/docs/framework/wpf/advanced/fonts-how-to-topics.md new file mode 100644 index 00000000000..87fca87235a --- /dev/null +++ b/docs/framework/wpf/advanced/fonts-how-to-topics.md @@ -0,0 +1,34 @@ +--- +title: "フォントに関する「方法」トピック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "フォント [WPF]" +ms.assetid: b4a97c97-7f88-4a89-b1d1-cf2c0d087955 +caps.latest.revision: 73 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 73 +--- +# フォントに関する「方法」トピック +このセクションのトピックでは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] に含まれるフォント機能を使用する方法について説明します。 + +## このセクションの内容 + [システム フォントを列挙する](../../../../docs/framework/wpf/advanced/how-to-enumerate-system-fonts.md) + [FontSizeConverter クラスを使用する](../../../../docs/framework/wpf/advanced/how-to-use-the-fontsizeconverter-class.md) + +## 参照 + + + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) + [WPF のタイポグラフィ](../../../../docs/framework/wpf/advanced/typography-in-wpf.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/fonts-wpf.md b/docs/framework/wpf/advanced/fonts-wpf.md new file mode 100644 index 00000000000..899579f7fb9 --- /dev/null +++ b/docs/framework/wpf/advanced/fonts-wpf.md @@ -0,0 +1,36 @@ +--- +title: "フォント (WPF) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "フォント [WPF]" +ms.assetid: 6c766a95-ad03-475e-a36f-2243e9495941 +caps.latest.revision: 82 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 82 +--- +# フォント (WPF) +[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] は、[!INCLUDE[TLA#tla_opentype](../../../../includes/tlasharptla-opentype-md.md)] フォントを使用する多彩なテキスト表示をサポートします。 [!INCLUDE[TLA#tla_opentype](../../../../includes/tlasharptla-opentype-md.md)] フォントのサンプル パックは [!INCLUDE[TLA2#tla_lhsdk](../../../../includes/tla2sharptla-lhsdk-md.md)] に含まれています。 + +## このセクションの内容 + [OpenType フォントの機能](../../../../docs/framework/wpf/advanced/opentype-font-features.md) + [アプリケーションでのフォントのパッケージング](../../../../docs/framework/wpf/advanced/packaging-fonts-with-applications.md) + [OpenType フォント パックのサンプル](../../../../docs/framework/wpf/advanced/sample-opentype-font-pack.md) + [方法のトピック](../../../../docs/framework/wpf/advanced/fonts-how-to-topics.md) + +## 参照 + + + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) + [WPF のタイポグラフィ](../../../../docs/framework/wpf/advanced/typography-in-wpf.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/framework-property-metadata.md b/docs/framework/wpf/advanced/framework-property-metadata.md new file mode 100644 index 00000000000..8a245c848c6 --- /dev/null +++ b/docs/framework/wpf/advanced/framework-property-metadata.md @@ -0,0 +1,86 @@ +--- +title: "フレームワーク プロパティ メタデータ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "フレームワーク プロパティ メタデータ" + - "メタデータ, フレームワーク プロパティ" +ms.assetid: 9962f380-b885-4b61-a62e-457397083fea +caps.latest.revision: 19 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 18 +--- +# フレームワーク プロパティ メタデータ +フレームワーク プロパティ メタデータのオプションは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] アーキテクチャの [WPF フレームワーク レベル](GTMT)にあると見なされるオブジェクト要素のプロパティに対して報告されます 一般に、[WPF フレームワーク レベル](GTMT)が指定されている場合、レンダリング、データ バインディング、プロパティ システムの調整などの機能が、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のプレゼンテーション [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] と実行可能ファイルによって処理されます。 フレームワーク プロパティ メタデータがこれらのシステムによって照会されて、特定の要素プロパティに対する機能固有の特性が決まります。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 必要条件 + このトピックでは、ユーザーが [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] クラスの既存の[依存関係プロパティ](GTMT)の使用という観点から依存関係プロパティを理解し、「[依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md)」トピックを通読していることを前提としています。 また、「[依存関係プロパティのメタデータ](../../../../docs/framework/wpf/advanced/dependency-property-metadata.md)」を通読している必要もあります。 + + +## フレームワーク プロパティ メタデータによる通知内容 + フレームワーク プロパティ メタデータは、次のように分類できます。 + +- 要素に影響するレイアウト プロパティ \(\) の報告。 プロパティがそれぞれの側面に影響する場合、メタデータにこれらのフラグを設定できます。また、 \/ メソッドをクラスに実装して、特定のレンダリングの動作と情報をレイアウト システムに指定します。 通常、そのような実装では、依存関係プロパティのメタデータでこれらのレイアウト プロパティのいずれかが true であると、プロパティの無効化があるかどうかがチェックされます。無効化があった場合にのみ、新しいレイアウト パスの要求が必要となります。 + +- 要素の親要素に影響するレイアウト プロパティ \(\) の報告。 これらのフラグが既定で設定される例として、 があります。 + +- . 既定では、依存関係プロパティは値を継承しません。 を使用すると、継承のパスがビジュアル ツリー内を通ることもできるようになります。コントロールを複合する一部のシナリオでは、このような必要が生じることがあります。 + + > [!NOTE] + > プロパティ値のコンテキストにおける "継承" という用語は、依存関係プロパティに固有の事項を意味します。つまり、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プロパティ システムの [WPF フレームワーク レベル](GTMT)の機能によって、実際の依存関係プロパティ値を子要素が親要素から継承できることを意味します。 派生型を通じたマネージ コードの型およびメンバーの継承とは、直接関係がありません。 詳細については、「[プロパティ値の継承](../../../../docs/framework/wpf/advanced/property-value-inheritance.md)」を参照してください。 + +- データ バインディング特性 \(\) の報告。 既定では、フレームワークの依存関係プロパティは、一方向のバインディング動作を持つデータ バインディングをサポートします。 必要がない場合はデータ バインディングを無効にできます \(柔軟性と拡張性を目的とするため、既定の [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] [!INCLUDE[TLA2#tla_api#plural](../../../../includes/tla2sharptla-apisharpplural-md.md)] にそのようなプロパティの例は多くありません\)。 複数のコンポーネント間でコントロールの動作を関連付けるプロパティ \( など\) や、ユーザーにとって双方向のバインディングが一般的かつ期待されるシナリオであるプロパティ \( など\) に対しては、双方向のバインディングを既定として設定できます。 データ バインディング関連のメタデータを変更した場合に影響を受けるのは既定値だけです。この既定値は、バインディングごとにいつでも変更できます。 バインディング モードおよびバインディング全般の詳細については、「[データ バインドの概要](../../../../docs/framework/wpf/data/data-binding-overview.md)」を参照してください。 + +- 履歴作成をサポートするアプリケーションまたはサービスによって、プロパティの履歴を作成するかどうか \(\) の報告。 一般的な要素に対しては、履歴作成が既定で有効にされることはありません。特定のユーザー入力コントロールに対して、選択的に有効にします。 これは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の履歴作成の実装を含む、履歴サービスによって読み取られるプロパティです。通常、複数のナビゲーション段階にわたって永続化する必要があるユーザー コントロール \(一覧におけるユーザー選択など\) に設定します。 履歴の詳細については、「[ナビゲーションの概要](../../../../docs/framework/wpf/app-development/navigation-overview.md)」を参照してください。 + + +## FrameworkPropertyMetadata の読み取り + 上記にリンクを示した各プロパティは、 によって直接の基本クラス に追加される特定のプロパティです。 これらのプロパティの既定値はいずれも `false` です。 これらのプロパティの値を知るためにメタデータを要求する場合は、返されたメタデータを にキャストしてから、必要に応じて個々のプロパティの値を確認する必要があります。 + + +## メタデータの指定 + 新しい依存関係プロパティの登録にメタデータを適用する目的で、メタデータ インスタンスを新しく作成するときは、基本メタデータ クラス を使用するか、 などの派生クラスを使用するかを選択できます。 通常は を使用します。特に、プロパティがプロパティ システムと対話する場合や、レイアウトやデータ バインディングなどの [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 機能と対話する場合は、このクラスを使用します。 より高度なシナリオでは、 から派生して独自のメタデータ報告クラスを作成し、メンバーに追加情報が含まれるようにします。 または を使用して、実装の機能をサポートする度合いを通知することもできます。 + + 既存のプロパティ \( 呼び出しまたは 呼び出し\) は必ず、元の登録で使用されているメタデータ型でオーバーライドします。 + + のインスタンスを作成する場合、フレームワーク プロパティの特性を通知する特定のプロパティの値をそのメタデータに読み込むには、次の 2 つの方法があります。 + +1. `flags` パラメーターを使用可能な コンストラクター シグネチャを使用します。 このパラメーターには、 列挙体フラグの結合された値を、必要に応じすべて指定します。 + +2. `flags` パラメーターを持たないシグネチャのいずれかを使用し、各特性の任意の変更について、 上の報告する各 Boolean プロパティを `true` に設定します。 この場合、この依存関係プロパティを持つすべての要素の構築前に、これらのプロパティを設定する必要があります。`flags` パラメーターを使用せずにメタデータを読み込めるよう、これらの Boolean プロパティは読み書き可能な状態ですが、プロパティ使用前にメタデータを事実上シールする必要があります。 そのため、メタデータの要求後にこれらのプロパティを設定しようとすると、無効な操作となります。 + + +## フレームワーク プロパティ メタデータのマージ動作 + フレームワーク プロパティ メタデータをオーバーライドすると、さまざまなメタデータ特性が、マージされるか置き換えられます。 + +- はマージされます。 新しい を追加すると、そのコールバックがメタデータに格納されます。 オーバーライド時に を指定しないと、 の値が昇格され、メタデータでそれを指定した最も近い先祖からの参照となります。 + +- の実際のプロパティ システム動作では、階層内のすべてのメタデータ所有者用の実装が維持されてテーブルに追加されます。プロパティ システムによる実行順序としては、最派生クラスのコールバックが最初に呼び出されます。 継承されたコールバックは、それらをメタデータに配置したクラスによって所有されていると見なされ、それぞれ 1 回だけ実行されます。 + +- は置き換えられます。 オーバーライド時に を指定しないと、 の値は、メタデータでそれを指定した最も近い先祖によって決まります。 + +- 実装は置き換えられます。 新しい を追加すると、そのコールバックがメタデータに格納されます。 オーバーライド時に を指定しないと、 の値が昇格され、メタデータでそれを指定した最も近い先祖からの参照となります。 + +- プロパティ システム動作では、直接のメタデータ内の だけが呼び出されます。 階層内の他の 実装への参照は行われません。 + +- 列挙体のフラグは、ビットごとの OR 演算として組み合わされます。 を指定しても、元のオプションは上書きされません。 オプションを変更するには、 で対応するプロパティを設定します。 たとえば、元の オブジェクトが フラグを設定している場合は、 を `false` に設定することでこのフラグを変更できます。 + + この動作は によって実装され、派生メタデータ クラス上でオーバーライドできます。 + +## 参照 + + [依存関係プロパティのメタデータ](../../../../docs/framework/wpf/advanced/dependency-property-metadata.md) + [依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md) + [カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/freezable-objects-overview.md b/docs/framework/wpf/advanced/freezable-objects-overview.md new file mode 100644 index 00000000000..c63db81bdc5 --- /dev/null +++ b/docs/framework/wpf/advanced/freezable-objects-overview.md @@ -0,0 +1,175 @@ +--- +title: "Freezable オブジェクトの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "クラス, Freezable" + - "Freezable オブジェクト, description" + - "固定解除 (Freezable オブジェクトを)" +ms.assetid: 89c71692-4f43-4057-b611-67c6a8a863a2 +caps.latest.revision: 30 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 30 +--- +# Freezable オブジェクトの概要 +ここでは、アプリケーションのパフォーマンス向上のための特別な機能を備えた オブジェクトの、効率的な使用方法および作成方法について説明します。 フリーズ可能オブジェクトには、ブラシ、ペン、変換、ジオメトリ、アニメーションなどがあります。 + + このトピックは、次のセクションで構成されています。 + + + +## Freezable \(フリーズ可能\) とは + は、非フリーズとフリーズの 2 つの状態を持つ特殊な型のオブジェクトです。 フリーズしていない は、他のオブジェクトと同様に動作しているように見えます。 をフリーズすると、変更できなくなります。 + + には、オブジェクトの変更を監視者に通知するための イベントがあります。 をフリーズすると、変更通知のためのリソースが不要になるので、パフォーマンスが向上します。 また、フリーズされた はスレッド間で共有できますが、フリーズされていない は共有できません。 + + クラスはさまざまな目的に使用できますが、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] の オブジェクトのほとんどは、グラフィックス サブシステムに関連するものです。 + + クラスを使用すると、特定のグラフィックス システムのオブジェクトが使いやすくなり、アプリケーション パフォーマンスを向上させることができます。 から継承するクラスには、 などがあります。 このようなクラスにはアンマネージ リソースが格納されているので、システムはオブジェクトが変更されたかどうかを監視する必要があります。元のオブジェクトに変更があった場合は、対応するアンマネージ リソースを更新します。 実際にはグラフィックス システムのオブジェクトが変更されることがなくても、万一の変更に備えて、システムはオブジェクトの監視用にリソースの一部を消費しなければなりません。 + + たとえば、 ブラシを作成して、ボタンの背景の塗りつぶしに使用するとします。 + + [!code-csharp[freezablesample_procedural#FrozenExamplePart1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/freezablesample_procedural/CSharp/freezablesample.cs#frozenexamplepart1)] + [!code-vb[freezablesample_procedural#FrozenExamplePart1](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/freezablesample_procedural/visualbasic/freezablesample.vb#frozenexamplepart1)] + + ボタンがレンダリングされるとき、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のグラフィックス サブシステムは指定された情報を使用してピクセルのグループを塗りつぶし、ボタンの外観を作成します。 ボタンの描画方法を示すために単色のブラシを指定したとしても、この単色のブラシが実際に塗りつぶしを行うわけではありません。 グラフィックス システムによって、ボタンおよびブラシの高速かつ低レベルのオブジェクトが生成され、実際に画面に表示されます。 + + ブラシに変更を加える場合は、このような低レベルのオブジェクトの再生成が必要です。 Freezable クラスとは、ブラシに、自身に対応する生成済みの低レベル オブジェクトを検出して自身が変更されたときにそのオブジェクトを更新するという能力を与えるものです。 この機能が有効化されているときは、ブラシは "フリーズされていない" といいます。 + + フリーズ可能オブジェクトの は、この自己更新機能を無効化するためのメソッドです。 このメソッドを使用すると、ブラシを "フリーズ" 状態、つまり変更不可能にすることができます。 + +> [!NOTE] +> すべての Freezable オブジェクトをフリーズできるわけではありません。 がスローされることを避けるには、Freezable オブジェクトをフリーズする前に プロパティの値を調べて、フリーズ可能かどうかを判断します。 + + [!code-csharp[freezablesample_procedural#FrozenExamplePart2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/freezablesample_procedural/CSharp/freezablesample.cs#frozenexamplepart2)] + [!code-vb[freezablesample_procedural#FrozenExamplePart2](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/freezablesample_procedural/visualbasic/freezablesample.vb#frozenexamplepart2)] + + フリーズ可能オブジェクトを変更する必要がなくなった場合は、フリーズすることによってパフォーマンスが向上します。 この例では、ブラシをフリーズすると、グラフィックス システムがブラシの変更を監視する必要はなくなります。 グラフィックス システムはこのブラシが変更されないことを認識しているので、その他の最適化も実行できるようになります。 + +> [!NOTE] +> 便宜を図るために、フリーズ可能オブジェクトは、明示的にフリーズされない限り非フリーズ状態を維持します。 + + +## Freezable の使用 + フリーズされていないフリーズ可能オブジェクトの使用は、その他の種類のオブジェクトの使用に似ています。 次のコード例では、 の色をボタンの背景塗りつぶしに使用した後で、黄色から赤に変更します。 グラフィックス システムが内部的処理を行い、画面が次回更新されたときにボタンを黄色から赤に自動的に変更します。 + + [!code-csharp[freezablesample_procedural#UnFrozenExampleShort](../../../../samples/snippets/csharp/VS_Snippets_Wpf/freezablesample_procedural/CSharp/freezablesample.cs#unfrozenexampleshort)] + [!code-vb[freezablesample_procedural#UnFrozenExampleShort](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/freezablesample_procedural/visualbasic/freezablesample.vb#unfrozenexampleshort)] + +### Freezable のフリーズ + を変更不可にするには、その メソッドを呼び出します。 フリーズ可能オブジェクトを格納するオブジェクトをフリーズすると、格納されているオブジェクトもフリーズされます。 たとえば、 をフリーズすると、格納されている数字およびセグメントもフリーズされます。 + + 次のいずれかに当てはまる場合は、Freezable をフリーズすることはできません。 + +- アニメーション化されたプロパティ、またはデータ バインドされたプロパティがある。 + +- プロパティが動的リソースによって設定されている \(動的リソースの詳細については、「[XAML リソース](../../../../docs/framework/wpf/advanced/xaml-resources.md)」を参照してください\)。 + +- に格納されているサブオブジェクトがフリーズ不可能である。 + + これらの条件に該当しない場合に、それ以降 を変更しないことが明らかならば、既に説明したように、パフォーマンスを向上させるためにオブジェクトをフリーズしてください。 + + フリーズ可能オブジェクトの メソッドをいったん呼び出すと、そのオブジェクトは変更できなくなります。 フリーズされたオブジェクトを変更しようとすると、 がスローされます。 次のコードでは、ブラシをフリーズした後に変更しようとしているので、例外がスローされます。 + + [!code-csharp[freezablesample_procedural#ExceptionExample](../../../../samples/snippets/csharp/VS_Snippets_Wpf/freezablesample_procedural/CSharp/freezablesample.cs#exceptionexample)] + [!code-vb[freezablesample_procedural#ExceptionExample](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/freezablesample_procedural/visualbasic/freezablesample.vb#exceptionexample)] + + この例外がスローされるのを避けるには、 メソッドを使用して、 がフリーズされているかどうかを判断します。 + + [!code-csharp[freezablesample_procedural#CheckIsFrozenExample](../../../../samples/snippets/csharp/VS_Snippets_Wpf/freezablesample_procedural/CSharp/freezablesample.cs#checkisfrozenexample)] + [!code-vb[freezablesample_procedural#CheckIsFrozenExample](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/freezablesample_procedural/visualbasic/freezablesample.vb#checkisfrozenexample)] + + 前のコード例では、フリーズされたオブジェクトの変更可能なコピーを、 メソッドを使用して作成しました。 複製の詳細については、次のセクションで説明します。 + + **メモ** フリーズされたフリーズ可能オブジェクトはアニメーション化できないので、 を使用してアニメーション化しようとすると、フリーズされた オブジェクトの変更可能な複製がアニメーション システムによって自動的に作成されます。 複製によって生じるパフォーマンス オーバーヘッドを回避するために、オブジェクトをアニメーション化する場合は非フリーズ状態のままにしてください。 ストーリーボードを使用したアニメーションの詳細については、「[ストーリーボードの概要](../../../../docs/framework/wpf/graphics-multimedia/storyboards-overview.md)」を参照してください。 + +### マークアップからのフリーズ + マークアップで宣言された オブジェクトをフリーズするには、`PresentationOptions:Freeze` 属性を使用します。 次の例では、 を、フリーズされたページ リソースとして宣言します。 次に、このブラシを使用してボタンの背景を設定します。 + + [!code-xml[FreezableSample#FreezeFromMarkupWholePage](../../../../samples/snippets/csharp/VS_Snippets_Wpf/FreezableSample/CS/FreezeFromMarkupExample.xaml#freezefrommarkupwholepage)] + + `Freeze` 属性を使用するには、表示オプション名前空間 `http://schemas.microsoft.com/winfx/2006/xaml/presentation/options` に割り当てる必要があります。 この名前空間を割り当てるときの推奨プレフィックスは `PresentationOptions` です。 + +``` +xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options" +``` + + すべての XAML リーダーがこの属性を認識するとは限らないので、[mc:Ignorable 属性](../../../../docs/framework/wpf/advanced/mc-ignorable-attribute.md)を使用して、`Presentation:Freeze` 属性が無視可能であると指定することをお勧めします。 + +``` +xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" +mc:Ignorable="PresentationOptions" +``` + + 詳細については、[mc:Ignorable 属性](../../../../docs/framework/wpf/advanced/mc-ignorable-attribute.md)のページを参照してください。 + +### Freezable の "フリーズ解除" + をフリーズすると、変更やフリーズ解除はできなくなりますが、 メソッドまたは メソッドを使用すると、フリーズされていない複製を作成できます。 + + 次の例では、ブラシを使用してボタンの背景を設定してから、そのブラシをフリーズします。 メソッドを使用して、ブラシのフリーズされていない複製を作成します。 この複製を変更し、使用して、ボタンの背景を黄色から赤に変更します。 + + [!code-csharp[freezablesample_procedural#CloneExample](../../../../samples/snippets/csharp/VS_Snippets_Wpf/freezablesample_procedural/CSharp/freezablesample.cs#cloneexample)] + [!code-vb[freezablesample_procedural#CloneExample](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/freezablesample_procedural/visualbasic/freezablesample.vb#cloneexample)] + +> [!NOTE] +> 使用する Clone メソッドにかかわらず、アニメーションが新しい にコピーされることはありません。 + + メソッドと メソッドは、フリーズ可能オブジェクトの深いコピーを生成します。 フリーズ可能オブジェクトに、他のフリーズされたフリーズ可能オブジェクトが格納されている場合は、格納されるオブジェクトも複製されて、変更可能になります。 たとえば、フリーズされた を複製して変更可能にする場合は、格納されている数字およびセグメントもコピーされ、変更可能な状態になります。 + + +## 独自の Freezable クラスの作成 + から派生するクラスには、次の機能が与えられます。 + +- 特殊な状態 : 読み取り専用 \(フリーズ\) 状態と書き込み可能状態。 + +- スレッド セーフ : フリーズされた は、スレッド間で共有できます。 + +- 詳細な変更通知 : 他の とは異なり、Freezable オブジェクトは、サブプロパティの値が変更されたときに変更通知を提供します。 + +- 容易な複製 : Freezable クラスは、深い複製を作成するためのメソッドを既に実装しています。 + + は、 の一種であるので、依存関係プロパティ システムを使用します。 作成するクラスのプロパティが依存関係プロパティである必要はありませんが、 クラスは依存関係プロパティを想定して設計されているので、依存関係プロパティを使用すれば、プログラミングに必要なコードの量が少なくて済みます。 依存関係プロパティ システムの詳細については、「[依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md)」を参照してください。 + + のすべてのサブクラスで メソッドをオーバーライドする必要があります。 作成するクラスで、すべてのデータについて依存関係プロパティを使用する場合は、これで完了です。 + + クラスに依存関係プロパティ以外のデータ メンバーが含まれている場合は、次のメソッドもオーバーライドする必要があります。 + +- + +- + +- + +- + +- + + また、依存関係プロパティではないデータ メンバーへのアクセスおよび書き込みについては、次のルールに従う必要があります。 + +- 依存関係プロパティ以外のデータ メンバーを読み取る [!INCLUDE[TLA#tla_api](../../../../includes/tlasharptla-api-md.md)] の開始時に、 メソッドを呼び出します。 + +- 依存関係プロパティ以外のデータ メンバーを書き込む API の開始時に、 メソッドを呼び出します \([!INCLUDE[TLA2#tla_api](../../../../includes/tla2sharptla-api-md.md)] の中で を呼び出した後は、依存関係プロパティ以外のデータ メンバーを読み取る場合も、 を改めて呼び出す必要はありません\)。 + +- 依存関係プロパティ以外のデータ メンバーに書き込みを行うメソッドを終了する前に、 メソッドを呼び出します。 + + 作成するクラスに含まれる、依存関係プロパティ以外のデータ メンバーの中に オブジェクトがある場合は、そのメンバーの値を変更するたびに メソッドも呼び出す必要があります \(そのメンバーを `null` に設定する場合も\)。 + +> [!NOTE] +> オーバーライドする の各メソッドの先頭で基本実装を呼び出すことが非常に重要です。 + + カスタム クラスの例については、[カスタム アニメーションのサンプル](http://go.microsoft.com/fwlink/?LinkID=159981)を参照してください。 + +## 参照 + + [カスタム アニメーションのサンプル](http://go.microsoft.com/fwlink/?LinkID=159981) + [依存関係プロパティの概要](../../../../docs/framework/wpf/advanced/dependency-properties-overview.md) + [カスタム依存関係プロパティ](../../../../docs/framework/wpf/advanced/custom-dependency-properties.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/getting-started-with-ink.md b/docs/framework/wpf/advanced/getting-started-with-ink.md new file mode 100644 index 00000000000..f40e9e84ff6 --- /dev/null +++ b/docs/framework/wpf/advanced/getting-started-with-ink.md @@ -0,0 +1,88 @@ +--- +title: "インクの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アニメーション, グラデーション ブラシの色" + - "ブラシ, アニメーション化 (色を)" + - "グラデーション ブラシ, アニメーション化 (色を)" + - "XAML の代わりに手続き型コードを使用" + - "XAML, 代わりに手続き型コードを使用" +ms.assetid: 760332dd-594a-475d-865b-01659db8cab7 +caps.latest.revision: 10 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 10 +--- +# インクの概要 +アプリケーションへのデジタル インクの組み込みは、今までになく容易になりました。 COM および Windows フォームによるプログラミング手法の付随的な存在であったインクは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] に完全に統合されるまでに発展しました。 個別の SDK や、ランタイム ライブラリをインストールする必要はありません。 + +## 必要条件 + 以降に示す例を使用するには、まず Microsoft Visual Studio 2005 および [!INCLUDE[TLA2#tla_winfxsdk](../../../../includes/tla2sharptla-winfxsdk-md.md)] をインストールする必要があります。 また、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] に対応するアプリケーションの作成方法も理解しておく必要があります。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の概要については、「[チュートリアル: WPF の概要](../../../../docs/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application.md)」を参照してください。 + +## クイック スタート + ここでは、インクを収集する簡単な [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションを作成する方法を説明します。 + + Microsoft Visual Studio 2005 および [!INCLUDE[TLA#tla_winfxsdk](../../../../includes/tlasharptla-winfxsdk-md.md)] をまだインストールしていない場合はインストールしてください。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションを表示するには、その全体が [!INCLUDE[TLA#tla_xaml](../../../../includes/tlasharptla-xaml-md.md)] で構成されている場合でも、通常はあらかじめコンパイルしておく必要があります。 また、[!INCLUDE[TLA#tla_winfxsdk](../../../../includes/tlasharptla-winfxsdk-md.md)] には、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] ベースの UI の実装作業を迅速化するために設計された、XamlPad というアプリケーションが付属しています。 このアプリケーションを使用して、このドキュメントの最初にあるいくつかのサンプルを表示し、いろいろと変更してみるとよいでしょう。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] からコンパイルされたアプリケーションを作成する作業については、このドキュメントで後に説明します。 + + XAMLPad を起動するには、\[スタート\] ボタンをクリックし、\[すべてのプログラム\] をポイントします。次に、\[Microsoft Windows SDK\] をポイントし、\[Tools\] をポイントして、\[XAMLPad\] をクリックします。 XAMLPad のレンダリング ペインには、コード ペインで作成された XAML コードがレンダリングされます。 XAML コードを編集すると、変更は直ちにレンダリング ペインに反映されます。 + +#### インクを取得する + インクをサポートする [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションを初めて作成するには、次の手順を実行します。 + +1. Microsoft Visual Studio 2005 を開きます。 + +2. 新しい Windows アプリケーション \(WPF\) を作成します。 + +3. 2 つの `` タグの間に「``」と入力します。 + +4. デバッガーでアプリケーションを起動するために、**F5** キーを押します。 + +5. スタイラスまたはマウスを使用して、ウィンドウに「hello world」と書き込みます。 + + "hello world" アプリケーションに相当するインクが、わずか 12 回のキーストロークで書き込まれました。 + +#### アプリケーションを改良する + 次に、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のいくつかの機能を利用してみましょう。 開始タグ \ と終了タグ \<\/Window\> の間にあるすべてのコードを、次に示すマークアップで置き換えてください。インク サーフェイスに、グラデーション ブラシによる背景が表示されます。 + + [!code-xml[DigitalInkTopics#1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DigitalInkTopics/CSharp/Window1.xaml#1)] +[!code-xml[DigitalInkTopics#1a](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DigitalInkTopics/CSharp/Window1.xaml#1a)] + +#### アニメーションを使用する + 今度は、グラデーション ブラシの色をアニメーション化してみましょう。 次に示す [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] を、終了タグ `` と終了タグ `` の間に追加します。 + + [!code-xml[DigitalInkTopics#2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DigitalInkTopics/CSharp/Window1.xaml#2)] + +#### XAML に分離コードを追加する + XAML を使用すると、ユーザー インターフェイスの設計は非常に簡単になりますが、実際のアプリケーションには、イベントを処理するコードを追加する必要があります。 マウスが右クリックされたときにインクを拡大表示する簡単な例を次に示します。 + + 作成した [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] の中で、次のように `MouseRightButtonUp` ハンドラーを設定します。 + + [!code-xml[DigitalInkTopics#3](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DigitalInkTopics/CSharp/Window2.xaml#3)] + + Visual Studio のソリューション エクスプローラーで Windows1.xaml を展開し、分離コード ファイル Window1.xaml.cs \(Visual Basic を使用している場合は Window1.xaml.vb\) を開きます。 次に示すイベント ハンドラー コードを追加します。 + + [!code-csharp[DigitalInkTopics#4](../../../../samples/snippets/csharp/VS_Snippets_Wpf/DigitalInkTopics/CSharp/Window2.xaml.cs#4)] + [!code-vb[DigitalInkTopics#4](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/DigitalInkTopics/VisualBasic/Window2.xaml.vb#4)] + + ここで、アプリケーションを実行します。 いくつかのインクを追加してから、マウスで右クリックするか、またはスタイラスを使用して同等の操作であるプレス アンド ホールドを実行します。 + +#### XAML の代わりに手順コードを使用する + 手順コードからは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のすべての機能にアクセスできます。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] を一切使用しない [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の "Hello Ink World" アプリケーションを次に示します。 Visual Studio で、次に示すコードを空のコンソール アプリケーションに貼り付けます。 PresentationCore、PresentationFramework、および WindowsBase の各アセンブリへの参照を追加し、**F5** キーを押してアプリケーションをビルドします。 + + [!code-csharp[InkCanvasConsoleApp#1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/InkCanvasConsoleApp/CSharp/Program.cs#1)] + [!code-vb[InkCanvasConsoleApp#1](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/InkCanvasConsoleApp/VisualBasic/Module1.vb#1)] + +## 参照 + [デジタル インク](../../../../docs/framework/wpf/advanced/digital-ink.md) + [インクの収集](../../../../docs/framework/wpf/advanced/collecting-ink.md) + [手書き認識](../../../../docs/framework/wpf/advanced/handwriting-recognition.md) + [インクの格納](../../../../docs/framework/wpf/advanced/storing-ink.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/globalization-and-localization-how-to-topics.md b/docs/framework/wpf/advanced/globalization-and-localization-how-to-topics.md new file mode 100644 index 00000000000..d0f301a40f8 --- /dev/null +++ b/docs/framework/wpf/advanced/globalization-and-localization-how-to-topics.md @@ -0,0 +1,43 @@ +--- +title: "グローバリゼーションおよびローカリゼーションに関する「方法」トピック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "グローバリゼーション, 機能" + - "ローカリゼーション, 機能" +ms.assetid: c4b484fb-bc90-4186-a08d-f081e7109cad +caps.latest.revision: 71 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 71 +--- +# グローバリゼーションおよびローカリゼーションに関する「方法」トピック +このセクションのトピックでは、国際対応アプリケーションを開発する方法について説明します。 + +## このセクションの内容 + [アプリケーションをローカライズする](../../../../docs/framework/wpf/advanced/how-to-localize-an-application.md) + [自動レイアウトを使用してボタンを作成する](../../../../docs/framework/wpf/advanced/how-to-use-automatic-layout-to-create-a-button.md) + [自動レイアウト用のグリッドを使用する](../../../../docs/framework/wpf/advanced/how-to-use-a-grid-for-automatic-layout.md) + [ResourceDictionary を使用してローカライズ可能な文字列リソースを管理する](../../../../docs/framework/wpf/advanced/how-to-use-a-resourcedictionary-to-manage-localizable-string-resources.md) + [ローカライズ可能アプリケーションでリソースを使用する](../../../../docs/framework/wpf/advanced/how-to-use-resources-in-localizable-applications.md) + +## 関連項目 + + + + + + + [XAML における xml:lang の処理](../../../../docs/framework/xaml-services/xml-lang-handling-in-xaml.md) + +## 関連項目 \ No newline at end of file diff --git a/docs/framework/wpf/advanced/globalization-and-localization.md b/docs/framework/wpf/advanced/globalization-and-localization.md new file mode 100644 index 00000000000..ddbe0ca718c --- /dev/null +++ b/docs/framework/wpf/advanced/globalization-and-localization.md @@ -0,0 +1,48 @@ +--- +title: "グローバライズとローカライズ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "グローバリゼーション [WPF]" + - "ローカリゼーション [WPF]" + - "Windows Presentation Foundation, グローバリゼーション" + - "Windows Presentation Foundation, ローカリゼーション" + - "WPF, グローバリゼーション" + - "WPF, ローカリゼーション" +ms.assetid: e96f9764-4e3f-4d1c-bf20-3fb890118aae +caps.latest.revision: 77 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 77 +--- +# グローバライズとローカライズ +[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] には、国際対応アプリケーション開発の拡張サポートが備わっています。 + +## このセクションの内容 + [WPF のグローバリゼーションおよびローカリゼーションの概要](../../../../docs/framework/wpf/advanced/wpf-globalization-and-localization-overview.md) + [WPF のグローバリゼーション](../../../../docs/framework/wpf/advanced/globalization-for-wpf.md) + [自動レイアウトの使用の概要](../../../../docs/framework/wpf/advanced/use-automatic-layout-overview.md) + [ローカリゼーション属性とコメント](../../../../docs/framework/wpf/advanced/localization-attributes-and-comments.md) + [WPF の双方向機能の概要](../../../../docs/framework/wpf/advanced/bidirectional-features-in-wpf-overview.md) + [方法のトピック](../../../../docs/framework/wpf/advanced/globalization-and-localization-how-to-topics.md) + +## 関連項目 + + + + + + + [XAML における xml:lang の処理](../../../../docs/framework/xaml-services/xml-lang-handling-in-xaml.md) + +## 関連項目 \ No newline at end of file diff --git a/docs/framework/wpf/advanced/globalization-for-wpf.md b/docs/framework/wpf/advanced/globalization-for-wpf.md new file mode 100644 index 00000000000..2f587d51381 --- /dev/null +++ b/docs/framework/wpf/advanced/globalization-for-wpf.md @@ -0,0 +1,192 @@ +--- +title: "WPF のグローバリゼーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "グローバリゼーション" + - "各国対応ユーザー インターフェイス, XAML" + - "XAML, グローバリゼーション" + - "XAML, 各国対応ユーザー インターフェイス" +ms.assetid: 4571ccfe-8a60-4f06-9b37-7ac0b1c2d10f +caps.latest.revision: 35 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 31 +--- +# WPF のグローバリゼーション +ここでは、[!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] アプリケーションをグローバル市場向けに作成する際の注意点について説明します。 グローバリゼーションのプログラミング要素は、[!INCLUDE[TLA#tla_net](../../../../includes/tlasharptla-net-md.md)] の `System.Globalization` に定義されています。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## XAML のグローバリゼーション + [!INCLUDE[TLA#tla_xaml#initcap](../../../../includes/tlasharptla-xamlsharpinitcap-md.md)] は [!INCLUDE[TLA#tla_xml](../../../../includes/tlasharptla-xml-md.md)] に基づいており、[!INCLUDE[TLA2#tla_xml](../../../../includes/tla2sharptla-xml-md.md)] 仕様で定義されているグローバリゼーション サポートを利用します。 以下のセクションでは、注意する必要がある [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] 機能について説明します。 + + +### 文字参照コード + 文字参照コードは、それによって表される特定の [!INCLUDE[TLA#tla_unicode](../../../../includes/tlasharptla-unicode-md.md)] 文字の番号を 10 進形式または 16 進形式で指定します。 10 進形式の文字参照コードの例を次に示します。 + +``` +Ϩ +``` + + 次の例は、16 進形式の文字参照コードを示しています。 16 進数の前に **x** が付いていることに注意してください。 + +``` +Ϩ +``` + + +### エンコーディング + [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] では、[!INCLUDE[TLA#tla_ascii](../../../../includes/tlasharptla-ascii-md.md)]、[!INCLUDE[TLA2#tla_unicode](../../../../includes/tla2sharptla-unicode-md.md)]、UTF\-16、および UTF\-8 のエンコードがサポートされています。 エンコード ステートメントは [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] ドキュメントの先頭にあります。 エンコード属性が存在せず、バイト順がない場合、パーサーは既定で UTF\-8 に設定されます。 優先されるエンコードは UTF\-8 と UTF\-16 です。 UTF\-7 はサポートされていません。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] ファイルで UTF\-8 エンコードを指定する方法を次の例に示します。 + +``` +?xml encoding="UTF-8"? +``` + + +### Language 属性 + [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] では、[xml:lang](../../../../docs/framework/xaml-services/xml-lang-handling-in-xaml.md) を使用して要素の言語属性を表します。 クラスを利用するには、言語属性の値が で定義済みのカルチャ名である必要があります。 [xml:lang](../../../../docs/framework/xaml-services/xml-lang-handling-in-xaml.md) は要素ツリーでの継承が可能で \(XML 規則では、依存関係プロパティが継承されるため必ずしも継承可能ではない\)、明示的に割り当てられていない場合の既定値は空の文字列です。 + + 言語属性は、方言を指定する場合にとても便利です。 たとえばフランス語では、フランス、ケベック、ベルギー、およびスイスで、スペル、語彙、および発音がそれぞれ異なります。 また、中国語、日本語、および韓国語は、[!INCLUDE[TLA2#tla_unicode](../../../../includes/tla2sharptla-unicode-md.md)] のコード ポイントを共有していますが、文字の形状が異なるため、まったく異なるフォントを使用します。 + + 次の [!INCLUDE[TLA#tla_xaml](../../../../includes/tlasharptla-xaml-md.md)] では、`fr-CA` 言語属性を使用してカナダ フランス語を指定しています。 + +``` +Découvrir la France +``` + + +### Unicode + [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] は、サロゲートを含むすべての [!INCLUDE[TLA2#tla_unicode](../../../../includes/tla2sharptla-unicode-md.md)] 機能をサポートしています。 [!INCLUDE[TLA2#tla_unicode](../../../../includes/tla2sharptla-unicode-md.md)] にマッピングできる文字セットはすべてサポートされます。 たとえば、GB18030 によって導入される文字は、CJK \(Chinese, Japanese, and Korean\) 統合漢字拡張 A および B とサロゲート ペアにマッピングされるため、GB18030 は完全にサポートされます。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションで を使用すると、文字列にサロゲート ペアや組み合わせ文字があるかどうかに関係なく文字列を操作できます。 + + +## XAML による各国対応ユーザー インターフェイスの設計 + ここでは、アプリケーションを作成する際に考慮する必要がある[!INCLUDE[TLA#tla_ui](../../../../includes/tlasharptla-ui-md.md)] 機能について説明します。 + + +### 各国対応テキスト + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] には、[!INCLUDE[TLA#tla_winfx](../../../../includes/tlasharptla-winfx-md.md)] でサポートされているすべての書記体系の処理が組み込まれています。 + + 現在サポートされている書記体系を次に示します。 + +- アラビア語 + +- ベンガル語 + +- デバナガリ + +- キリル語 + +- ギリシャ語 + +- グジャラート語 + +- グルムキー + +- ヘブライ語 + +- 表意文字 + +- カナラ語 + +- ラオス語 + +- ラテン語 + +- マラヤラム語 + +- モンゴル語 + +- オディア語 + +- シリア語 + +- タミル語 + +- テルグ語 + +- ターナ + +- タイ語\* + +- チベット語 + + \* このリリースでは、タイ語テキストの表示と編集はサポートされていますが、単語の区切りはサポートされていません。 + + 現在サポートされていない書記体系を次に示します。 + +- クメール語 + +- 韓国語の古ハングル + +- ミャンマー + +- シンハラ語 + + すべての書記体系エンジンで [!INCLUDE[TLA#tla_opentype](../../../../includes/tlasharptla-opentype-md.md)] フォントがサポートされています。 [!INCLUDE[TLA2#tla_opentype](../../../../includes/tla2sharptla-opentype-md.md)] フォントには [!INCLUDE[TLA2#tla_opentype](../../../../includes/tla2sharptla-opentype-md.md)] レイアウト テーブルを含めることができるため、フォント作成者は、各国対応が強化された高品質なタイポグラフィ フォントをデザインすることができます。 [!INCLUDE[TLA2#tla_opentype](../../../../includes/tla2sharptla-opentype-md.md)] フォント レイアウト テーブルには、グリフ代替、グリフの配置、両端揃え、およびベースラインの配置に関する情報が含まれています。これにより、テキスト処理アプリケーションによるテキスト レイアウトが強化されます。 + + [!INCLUDE[TLA2#tla_opentype](../../../../includes/tla2sharptla-opentype-md.md)] フォントでは、[!INCLUDE[TLA2#tla_unicode](../../../../includes/tla2sharptla-unicode-md.md)] エンコードを使用して大きなグリフ セットを処理することができます。 こうしたエンコードにより、グリフの文字体裁のバリエーションだけでなく、各国対応の幅も広がります。 + + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のテキスト レンダリングには、解像度に依存しないレンダリングをサポートする [!INCLUDE[TLA#tla_ct](../../../../includes/tlasharptla-ct-md.md)] サブピクセル テクノロジが利用されています。 これにより読みやすさが大幅に向上し、すべての書記体系で高品質な雑誌スタイルのドキュメントをサポートできるようになります。 + + +### 各国対応レイアウト + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] には、横型、縦型、および双方向のレイアウトをサポートするための非常に便利な方法が用意されています。 プレゼンテーション フレームワークで、 プロパティを使用してレイアウトを定義できます。 フロー方向のパターンは次のとおりです。 + +- *LeftToRight* : ラテン言語や東アジア言語などの横型レイアウト。 + +- *RightToLeft* : アラビア語やヘブライ語などの双方向レイアウト。 + + +## ローカライズ可能なアプリケーションの開発 + 世界各国で使用されるアプリケーションを作成する際には、アプリケーションがローカライズ可能でなければならないということを念頭に置く必要があります。 以下のトピックでは、その際に考慮する必要がある点について説明します。 + + +### 複数言語ユーザー インターフェイス + [!INCLUDE[TLA#tla_ms](../../../../includes/tlasharptla-ms-md.md)] では、MUI \(Multilingual User Interface\) によって言語間での [!INCLUDE[TLA2#tla_ui#plural](../../../../includes/tla2sharptla-uisharpplural-md.md)] の切り替えをサポートしています。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションは、アセンブリ モデルを使用して MUI をサポートします。 1 つのアプリケーションに、言語に依存しないアセンブリと、言語に依存するサテライト リソース アセンブリが含まれます。 エントリ ポイントはメイン アセンブリのマネージ .EXE です。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] リソース ローダーは、[!INCLUDE[TLA2#tla_netframewk](../../../../includes/tla2sharptla-netframewk-md.md)] のリソース マネージャーを利用して、リソースのルックアップとフォールバックをサポートします。 複数の言語サテライト アセンブリが同じメイン アセンブリで動作します。 読み込まれるリソース アセンブリは、現在のスレッドの によって決まります。 + + +### ローカライズ可能なユーザー インターフェイス + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションでは、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] を使用して [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] を定義します。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] では、一連のプロパティとロジックを持つオブジェクトの階層を指定することができます。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] は主に [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションの開発に使用されますが、任意の[!INCLUDE[TLA#tla_clr](../../../../includes/tlasharptla-clr-md.md)] オブジェクトの階層を指定することもできます。 ほとんどの開発者は、[!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] を使用してアプリケーションの [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] を指定し、[!INCLUDE[TLA#tla_cshrp](../../../../includes/tlasharptla-cshrp-md.md)] などのプログラミング言語を使用してユーザー操作に応答します。 + + リソースの観点から見た場合、言語に依存しない [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] を記述するために作成された [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] ファイルはリソース要素であるため、各国の言語をサポートするためには、最終的にローカライズ可能な形式で配布する必要があります。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] はイベントを処理できないため、多くの [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] アプリケーションにはそのためのコードが含まれています。 詳細については、「[XAML の概要 \(WPF\)](../../../../docs/framework/wpf/advanced/xaml-overview-wpf.md)」を参照してください。 [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] ファイルが XAML の BAML 形式にトークン化されると、コードが取り除かれて別のバイナリにコンパイルされます。XAML の BAML 形式のファイル、イメージ、およびその他の種類のマネージ リソース オブジェクトは、他の言語にローカライズできるようにサテライト リソース アセンブリに埋め込まれるか、ローカリゼーションが不要な場合にはメイン アセンブリに埋め込まれます。 + +> [!NOTE] +> [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションは、文字列テーブルやイメージなどを含むすべての [!INCLUDE[TLA2#tla_netframewk](../../../../includes/tla2sharptla-netframewk-md.md)] [!INCLUDE[TLA2#tla_clr](../../../../includes/tla2sharptla-clr-md.md)] リソースをサポートしています。 + + +### ローカライズ可能なアプリケーションのビルド + ローカリゼーションとは、[!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] を異なるカルチャに適合させることを意味します。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションをローカライズ可能にするには、ローカライズ可能なすべてのリソースをリソース アセンブリに組み込む必要があります。 リソース アセンブリはさまざまな言語にローカライズされ、分離コードがリソース管理 [!INCLUDE[TLA#tla_api](../../../../includes/tlasharptla-api-md.md)] を使用して読み込みます。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションに必要なファイルの 1 つはプロジェクト ファイル \(.proj\) です。 プロジェクト ファイルには、アプリケーションで使用するすべてのリソースを含める必要があります。 .csproj ファイルの場合の例を次に示します。 + +``` + + +``` + + アプリケーションでリソースを使用するには、 をインスタンス化し、使用するリソースを読み込みます。 この方法を次の例に示します。 + + [!code-csharp[LocalizationResources#2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/LocalizationResources/CSharp/page1.xaml.cs#2)] + + +## ローカライズされたアプリケーションでの ClickOnce の使用 + ClickOnce は Windows フォームの新しい配置テクノロジで、[!INCLUDE[TLA#tla_visualstu2005](../../../../includes/tlasharptla-visualstu2005-md.md)] で利用できます。 これにより、アプリケーションのインストールや Web アプリケーションのアップグレードを行うことができます。 ClickOnce で配置されたアプリケーションをローカライズした場合、ローカライズしたカルチャ以外では表示できません。 たとえば、配置されたアプリケーションを日本語にローカライズすると、日本語の [!INCLUDE[TLA#tla_win](../../../../includes/tlasharptla-win-md.md)] でしか表示できなくなります \(英語の [!INCLUDE[TLA2#tla_win](../../../../includes/tla2sharptla-win-md.md)] では表示できません\)。 日本のユーザーが英語版の [!INCLUDE[TLA2#tla_win](../../../../includes/tla2sharptla-win-md.md)] を実行するケースは珍しくないため、これは問題になります。 + + この問題を解決するには、ニュートラル言語フォールバック属性を設定します。 アプリケーション開発者は、リソースをメイン アセンブリから削除して、特定のカルチャに対応するサテライト アセンブリにそのリソースを置くように指定することができます。 この処理を制御するには、 を使用します。 クラスのコンストラクターには 2 つのシグネチャがあります。そのうちの 1 つは、 がフォールバック リソースを抽出する場所 \(メイン アセンブリかサテライト アセンブリか\) を指定する パラメーターを受け取ります。 この属性を使用する方法の例を次に示します。 このコードでは、最終フォールバック位置について、現在実行しているアセンブリのディレクトリの "de" サブディレクトリからリソースを検索するように に指示しています。 + +``` +[assembly: NeutralResourcesLanguageAttribute( + "de" , UltimateResourceFallbackLocation.Satellite)] + +``` + +## 参照 + [WPF のグローバリゼーションおよびローカリゼーションの概要](../../../../docs/framework/wpf/advanced/wpf-globalization-and-localization-overview.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/glyphs.md b/docs/framework/wpf/advanced/glyphs.md new file mode 100644 index 00000000000..0c44487ea83 --- /dev/null +++ b/docs/framework/wpf/advanced/glyphs.md @@ -0,0 +1,39 @@ +--- +title: "グリフ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "GlyphRun オブジェクト" + - "GlyphRunDrawing オブジェクト" + - "グリフ [WPF]" + - "Glyphs 要素" + - "テキスト, グリフ" +ms.assetid: d5d9274c-23b3-4859-8869-6e64403c9ca7 +caps.latest.revision: 54 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 54 +--- +# グリフ +グリフは、画面上に描画される文字の低レベルの表現です。 [!INCLUDE[TLA#tla_winclient](../../../../includes/tlasharptla-winclient-md.md)] は、ユーザーが書式設定後にテキストを途中受信して保持できるように、グリフへの直接アクセスをサポートします。 + +## このセクションの内容 + [GlyphRun オブジェクトと Glyphs 要素の概要](../../../../docs/framework/wpf/advanced/introduction-to-the-glyphrun-object-and-glyphs-element.md) + [方法 : グリフを使用してテキストを描画する](../../../../docs/framework/wpf/advanced/draw-text-using-glyphs.md) + +## 参照 + + + + [WPF のドキュメント](../../../../docs/framework/wpf/advanced/documents-in-wpf.md) + [WPF のタイポグラフィ](../../../../docs/framework/wpf/advanced/typography-in-wpf.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/graphics-rendering-tiers.md b/docs/framework/wpf/advanced/graphics-rendering-tiers.md new file mode 100644 index 00000000000..47168fe8064 --- /dev/null +++ b/docs/framework/wpf/advanced/graphics-rendering-tiers.md @@ -0,0 +1,145 @@ +--- +title: "グラフィックスの描画層 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "グラフィックスの描画層" + - "グラフィックス, パフォーマンス" + - "グラフィックス, 描画層" + - "描画 (グラフィックスを)" + - "描画層" +ms.assetid: 08dd1606-02a2-4122-9351-c0afd2ec3a70 +caps.latest.revision: 44 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 43 +--- +# グラフィックスの描画層 +描画層は、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションを実行するデバイスのグラフィックス ハードウェアの機能およびパフォーマンスのレベルを定義します。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## グラフィックス ハードウェア + 描画層のレベルに大きく影響するグラフィックス ハードウェアの機能は、次のとおりです。 + +- **ビデオ RAM** グラフィックス ハードウェアのビデオ メモリの量によって、グラフィックスを合成する際に使用できるバッファーのサイズと数が決まります。 + +- **ピクセル シェーダー** ピクセル シェーダーは、ピクセル単位で効果を計算するグラフィックス処理関数です。 表示するグラフィックスの解像度によっては、各表示フレームの処理に数百万ピクセルが必要な場合もあります。 + +- **頂点シェーダー** 頂点シェーダーは、オブジェクトの頂点データの算術演算を実行するグラフィックス処理関数です。 + +- **マルチテクスチャのサポート** マルチテクスチャがサポートされていると、3D グラフィックス オブジェクトのブレンド操作を行うときに、2 つ以上の別個のテクスチャを適用できます。 マルチテクスチャのサポートの度合いは、グラフィックス ハードウェアのマルチテクスチャ ユニットの数によって決まります。 + + +## 描画層の定義 + グラフィックス ハードウェアの機能によって、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションの表示能力が決まります。 [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] システムは、次の 3 つの描画階層を定義します。 + +- **描画層 0** グラフィックス ハードウェアの加速が使用されません。 すべてのグラフィックス機能で、ソフトウェア アクセラレータを使用します。 [!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] のバージョン レベルは Version 9.0 未満です。 + +- **描画層 1** 一部のグラフィックス機能で、グラフィックス ハードウェア アクセラレータを使用します。 [!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] のバージョン レベルは Version 9.0 以上です。 + +- **描画層 2** ほとんどのグラフィックス機能でグラフィックス ハードウェアの加速を使用します。 [!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] のバージョン レベルは Version 9.0 以上です。 + + プロパティを使用すると、アプリケーションの実行時に描画層を取得できます。 描画層を使用すると、特定のハードウェア アクセラレータ グラフィックス機能がデバイスでサポートされているかどうかを確認できます。 アプリケーションは、デバイスでサポートされている描画層に応じて、実行時に異なるコード パスを受け取ることができます。 + +### 描画層 0 + 描画層の値 0 は、デバイスのアプリケーションに使用できるグラフィックス ハードウェア アクセラレータがないことを示します。 この描画層では、すべてのグラフィックスがハードウェア アクセラレータを使用せずにソフトウェアで描画されることを想定する必要があります。 この層の機能は、[!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] の 9.0 未満の Version に対応します。 + +### 描画層 1 および描画層 2 + +> [!NOTE] +> .NET Framework 4 以降、描画層 1 は、[!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] 以降をサポートするグラフィックス ハードウェアのみを含むように再定義されています。 [!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] 7 または 8 をサポートするグラフィックス ハードウェアは、描画層 0 と定義されています。 + + 描画層の値 1 または 2 は、必要なシステム リソースが使用可能であり、枯渇していない場合に、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のほとんどのグラフィックス機能がハードウェア アクセラレータを使用することを示します。 これは、[!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] の 9.0 以上の Version に対応します。 + + 描画層 1 と描画層 2 のグラフィックス ハードウェア要件の違いを次の表に示します。 + +|機能|層 1|層 2| +|--------|---------|---------| +|[!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] のバージョン|9.0 以上であることが必要です。|9.0 以上であることが必要です。| +|ビデオ RAM|60 MB 以上であることが必要です。|120 MB 以上であることが必要です。| +|ピクセル シェーダー|バージョン レベルは、2.0 以上であることが必要です。|バージョン レベルは、2.0 以上であることが必要です。| +|頂点シェーダー|要件は特にありません。|バージョン レベルは、2.0 以上であることが必要です。| +|マルチテクスチャ単位|要件は特にありません。|単位数は、4 以上であることが必要です。| + + 描画層 1 および描画層 2 では、以下の機能がハードウェア アクセラレータによって加速されます。 + +|機能|説明| +|--------|--------| +|2D レンダリング|ほとんどの 2D レンダリングがサポートされています。| +|3D ラスタライズ|ほとんどの 3D ラスタライズがサポートされています。| +|3D 異方性フィルタリング|[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、3D コンテンツの描画時に異方性フィルタリングの使用が試行されます。 異方性フィルタリングとは、カメラから遠く、視線角度のきつい位置にあるサーフェイス上のテクスチャの画質を向上させる手法です。| +|3D ミップマップ|[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] では、3D コンテンツの描画時にミップマップの使用が試行されます。ミップマップを使用すると、テクスチャが の狭い視野を占める場合にテクスチャの描画品質が向上します。| +|放射状グラデーション|サポートされますが、大きなオブジェクトでは を使用しないでください。| +|3D の光源計算|[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] は、頂点ごとの光源処理を実行します。そのため、メッシュに適用されている各素材の頂点ごとに光の強さを計算する必要があります。| +|テキストの描画|サブピクセル フォントの描画では、グラフィックス ハードウェアで利用可能なピクセル シェーダーを使用します。| + + 描画層 2 に対してのみ、以下の機能がハードウェア アクセラレータによって加速されます。 + +|機能|説明| +|--------|--------| +|3D アンチエイリアシング|3D アンチエイリアシングは、Windows Display Driver Model \(WDDM\) をサポートするオペレーティング システム \([!INCLUDE[TLA2#tla_winvista](../../../../includes/tla2sharptla-winvista-md.md)]、[!INCLUDE[win7](../../../../includes/win7-md.md)] など\) でのみサポートされます。| + + 以下の機能はハードウェア アクセラレータによって加速されません。 + +|機能|説明| +|--------|--------| +|印刷されるコンテンツ|印刷されるすべてのコンテンツが、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] ソフトウェア パイプラインによって表示されます。| +| を使用する、ラスタライズされたコンテンツ|すべてのコンテンツが、 メソッドによって描画されます。| +| を使用する、並べて表示されるコンテンツ|すべての並べて表示されるコンテンツにおいて プロパティが に設定されます。| +|グラフィックス ハードウェアの最大テクスチャ サイズを超えるサーフェイス。|ほとんどのグラフィックス ハードウェアでは、大型のサーフェイスのサイズは 2048 x 2048 ピクセルまたは 4096 x 4096 ピクセルです。| +|必要なビデオ RAM 容量がグラフィックス ハードウェアのメモリ容量を上回るすべての操作|Windows SDK の [WPF Performance Suite](../Topic/WPF%20Performance%20Suite.md) に付属する Perforator ツールを使用して、アプリケーション ビデオ RAM の使用量を監視できます。| +|レイヤード ウィンドウ|レイヤード ウィンドウを使用すると、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションで、コンテンツを四角形以外のウィンドウの画面に描画できます。 Windows Display Driver Model \(WDDM\) をサポートするオペレーティング システム \([!INCLUDE[TLA2#tla_winvista](../../../../includes/tla2sharptla-winvista-md.md)]、[!INCLUDE[win7](../../../../includes/win7-md.md)] など\) では、レイヤード ウィンドウはハードウェア アクセラレータによって加速されます。 [!INCLUDE[winxp](../../../../includes/winxp-md.md)] などのその他のシステムでは、レイヤード ウィンドウはハードウェア アクセラレータを使用せずにソフトウェアで描画されます。

[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] でレイヤード ウィンドウを有効にするには、 の次のプロパティを設定します。

- \=
- \= `true`
- \= | + + +## その他のリソース + 次の技術情報は、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションのパフォーマンス特性の分析に役立ちます。 + +### グラフィックス レンダリングのレジストリ設定 + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] には、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] のレンダリングを制御するために 4 つのレジストリ設定が用意されています。 + +|設定|Description| +|--------|-----------------| +|**Disable Hardware Acceleration Option**|ハードウェア アクセラレータを有効にするかどうかを指定します。| +|**Maximum Multisample Value**|[!INCLUDE[TLA2#tla_3d](../../../../includes/tla2sharptla-3d-md.md)] コンテンツのアンチエイリアシングのマルチサンプリングの度合いを指定します。| +|**Required Video Driver Date Setting**|2004 年 11 月より前にリリースされたドライバーに対してハードウェア アクセラレータをシステムで無効にするかどうかを指定します。| +|**Use Reference Rasterizer Option**|[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] でリファレンス ラスタライザーを使用するかどうかを指定します。| + + これらの設定には、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] レジストリ設定の参照方法を認識している外部構成ユーティリティを使用してアクセスできます。 また、これらの設定は、[!INCLUDE[TLA#tla_mswin](../../../../includes/tlasharptla-mswin-md.md)] レジストリ エディターを使用して値に直接アクセスして作成または変更することもできます。 詳細については、「[グラフィックス レンダリングのレジストリ設定](../../../../docs/framework/wpf/graphics-multimedia/graphics-rendering-registry-settings.md)」を参照してください。 + +### WPF パフォーマンス プロファイリング ツール + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] は、アプリケーションの実行時の動作を分析したり、適用可能なパフォーマンス最適化の種類を決定できるパフォーマンス プロファイリング ツール スイートを提供します。 [!INCLUDE[TLA2#tla_lhsdk](../../../../includes/tla2sharptla-lhsdk-md.md)] ツール \(WPF Performance Suite\) に含まれるパフォーマンス プロファイリング ツールを次の表に示します。 + +|ツール|Description| +|---------|-----------------| +|Perforator|レンダリング動作の分析に使用します。| +|ビジュアル プロファイラー|ビジュアル ツリーの要素による [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] サービス \(レイアウトやイベント処理など\) の使用状況に関するプロファイリングで使用します。| + + WPF Performance Suite では、パフォーマンス データを多彩なグラフィカル ビューで表示できます。 WPF のパフォーマンス ツールの詳細については、「[WPF Performance Suite](../Topic/WPF%20Performance%20Suite.md)」を参照してください。 + +### DirectX 診断ツール + [!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] 診断ツール \(Dxdiag.exe\) は、[!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] 関連の問題のトラブルシューティングを支援します。 [!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] 診断ツールの既定のインストール フォルダーは次のとおりです。 + + `~\Windows\System32` + + [!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] 診断ツールを実行すると、メイン ウィンドウに一連のタブが表示され、これらのタブを使用して [!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] 関連の情報を表示および診断することができます。 たとえば、\[システム\] タブにはコンピューターに関するシステム情報が表示され、コンピューターにインストールされている [!INCLUDE[TLA2#tla_dx](../../../../includes/tla2sharptla-dx-md.md)] のバージョンが示されます。 + + ![スクリーンショット: DirectX 診断ツール](../../../../docs/framework/wpf/advanced/media/directxdiagnostictool-01.png "DirectXDiagnosticTool\_01") +DirectX 診断ツールのメイン ウィンドウ + +## 参照 + + + [WPF アプリケーションのパフォーマンスの最適化](../../../../docs/framework/wpf/advanced/optimizing-wpf-application-performance.md) + [WPF Performance Suite](../Topic/WPF%20Performance%20Suite.md) + [グラフィックス レンダリングのレジストリ設定](../../../../docs/framework/wpf/graphics-multimedia/graphics-rendering-registry-settings.md) + [アニメーションのヒントとテクニック](../../../../docs/framework/wpf/graphics-multimedia/animation-tips-and-tricks.md) \ No newline at end of file diff --git a/docs/framework/wpf/advanced/handwriting-recognition.md b/docs/framework/wpf/advanced/handwriting-recognition.md new file mode 100644 index 00000000000..85df287f0c0 --- /dev/null +++ b/docs/framework/wpf/advanced/handwriting-recognition.md @@ -0,0 +1,43 @@ +--- +title: "手書き認識 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "手書き認識" + - "認識 (手書きの)" +ms.assetid: f4e8576d-e731-4bac-9818-22e2ae636636 +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 手書き認識 +ここでは、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] プラットフォームでのデジタル インクに関連した認識の基礎について説明します。 + +## 認識ソリューション + を使用してインクを認識する方法を次の例に示します。 + +> [!NOTE] +> このサンプルでは、手書き認識エンジンをシステムにインストールする必要があります。 + + Visual Studio 2005 で、InkRecognition という新しい [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーション プロジェクトを作成します。 Window1.xaml ファイルの内容を次の XAML コードに置き換えます。 このコードは、アプリケーションのユーザー インターフェイスを表示します。 + + [!code-xml[InkRecognition#1](../../../../samples/snippets/csharp/VS_Snippets_Wpf/InkRecognition/CSharp/Window1.xaml#1)] + + WPF インク分析アセンブリ \(IAWinFX.dll、IACore.dll、および IALoader.dll\) への参照を追加します。これらのファイルは、\\Program Files\\Reference Assemblies\\Microsoft\\Tablet PC\\v1.7 にあります。 この分離コード ファイルの内容を次のコードに置き換えます。 + + [!code-csharp[InkRecognition#2](../../../../samples/snippets/csharp/VS_Snippets_Wpf/InkRecognition/CSharp/Window1.xaml.cs#2)] + [!code-vb[InkRecognition#2](../../../../samples/snippets/visualbasic/VS_Snippets_Wpf/InkRecognition/VisualBasic/Window1.xaml.vb#2)] + +## 参照 + + + \ No newline at end of file diff --git a/docs/framework/wpf/advanced/hosting-win32-content-in-wpf.md b/docs/framework/wpf/advanced/hosting-win32-content-in-wpf.md new file mode 100644 index 00000000000..95368326b29 --- /dev/null +++ b/docs/framework/wpf/advanced/hosting-win32-content-in-wpf.md @@ -0,0 +1,375 @@ +--- +title: "WPF での Win32 コンテンツのホスト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "相互運用性 [WPF], チュートリアル" + - "相互運用性 [WPF], Win32" + - "Win32 コード, WPF 相互運用" +ms.assetid: 3cc8644a-34f3-4082-9ddc-77623e4df2d8 +caps.latest.revision: 7 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 7 +--- +# WPF での Win32 コンテンツのホスト +## 必須コンポーネント + 「[WPF と Win32 の相互運用性](../../../../docs/framework/wpf/advanced/wpf-and-win32-interoperation.md)」を参照してください。 + +## Windows Presentation Framework \(HwndHost\) 内の Win32 のチュートリアル + [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーション内で [!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] コンテンツを再利用するには、 を使用します。 は、HWND を [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] コンテンツのように見せるコントロールです。 と同様に、 は簡単に使用できます。 から派生し、`BuildWindowCore` メソッドと `DestroyWindowCore` メソッドを実装して、 派生クラスをインスタンス化し、[!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーション内に配置します。 + + [!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] ロジックが既にコントロールとしてパッケージ化されている場合、`BuildWindowCore` 実装は、`CreateWindow` の呼び出しとほとんど変わりません。 たとえば、[!INCLUDE[TLA#tla_cpp](../../../../includes/tlasharptla-cpp-md.md)] で [!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] LISTBOX コントロールを作成するには、次のようにします。 + +``` +virtual HandleRef BuildWindowCore(HandleRef hwndParent) override { + HWND handle = CreateWindowEx(0, L"LISTBOX", + L"this is a Win32 listbox", + WS_CHILD | WS_VISIBLE | LBS_NOTIFY + | WS_VSCROLL | WS_BORDER, + 0, 0, // x, y + 30, 70, // height, width + (HWND) hwndParent.Handle.ToPointer(), // parent hwnd + 0, // hmenu + 0, // hinstance + 0); // lparam + + return HandleRef(this, IntPtr(handle)); +} + +virtual void DestroyWindowCore(HandleRef hwnd) override { + // HwndHost will dispose the hwnd for us +} +``` + + しかし、[!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] コードがあまり自己完結的ではないこともあります。 その場合は、[!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] ダイアログ ボックスを作成して、そのコンテンツをより大きい [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションに埋め込みます。 サンプルでは、これを [!INCLUDE[TLA#tla_visualstu](../../../../includes/tlasharptla-visualstu-md.md)] と [!INCLUDE[TLA#tla_cpp](../../../../includes/tlasharptla-cpp-md.md)] で示していますが、別の言語またはコマンド ラインで実行することも可能です。 + + まず、[!INCLUDE[TLA#tla_cpp](../../../../includes/tlasharptla-cpp-md.md)] [!INCLUDE[TLA2#tla_dll](../../../../includes/tla2sharptla-dll-md.md)] プロジェクトにコンパイルされる単純なダイアログから始めます。 + + 次に、より大きい [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションにダイアログを導入します。 + +- [!INCLUDE[TLA2#tla_dll](../../../../includes/tla2sharptla-dll-md.md)] をマネージとしてコンパイルします \(`/clr`\)。 + +- ダイアログをコントロールに変換します。 + +- の派生クラスを `BuildWindowCore` メソッドと `DestroyWindowCore` メソッドで定義します。 + +- `TranslateAccelerator` メソッドをオーバーライドして、ダイアログ キーを処理します。 + +- `TabInto` メソッドをオーバーライドして、Tab キーによる移動をサポートします。 + +- `OnMnemonic` メソッドをオーバーライドして、ニーモニックをサポートします。 + +- サブクラスをインスタンス化し、それを適切な [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] 要素の下に置きます。 + +### ダイアログをコントロールに変換します。 + WS\_CHILD スタイルと DS\_CONTROL スタイルを使用して、ダイアログ ボックスを子 HWND に変換できます。 ダイアログが定義されているリソース ファイル \(.rc\) に移動し、次のようなダイアログ定義の先頭を見つけます。 + +``` +IDD_DIALOG1 DIALOGEX 0, 0, 303, 121 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +``` + + 2 行目を次のように変更します。 + +``` +STYLE DS_SETFONT | WS_CHILD | WS_BORDER | DS_CONTROL +``` + + この操作では、ダイアログが自己完結的なコントロールに完全にパッケージ化されることはありません。[!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] が特定のメッセージを処理できるように、`IsDialogMessage()` を呼び出す必要があります。ただし、コントロールを変更すると、それらのコントロールを別の HWND に簡単に置くことができます。 + +## サブクラス HwndHost + 次の名前空間をインポートします。 + +``` +namespace ManagedCpp +{ + using namespace System; + using namespace System::Windows; + using namespace System::Windows::Interop; + using namespace System::Windows::Input; + using namespace System::Windows::Media; + using namespace System::Runtime::InteropServices; +``` + + 次に、 の派生クラスを作成し、`BuildWindowCore` メソッドと `DestroyWindowCore` メソッドをオーバーライドします。 + +``` +public ref class MyHwndHost : public HwndHost, IKeyboardInputSink { + private: + HWND dialog; + + protected: + virtual HandleRef BuildWindowCore(HandleRef hwndParent) override { + InitializeGlobals(); + dialog = CreateDialog(hInstance, + MAKEINTRESOURCE(IDD_DIALOG1), + (HWND) hwndParent.Handle.ToPointer(), + (DLGPROC) About); + return HandleRef(this, IntPtr(dialog)); + } + + virtual void DestroyWindowCore(HandleRef hwnd) override { + // hwnd will be disposed for us + } +``` + + ここでは、`CreateDialog` を使用して実際のコントロールであるダイアログ ボックスを作成します。 これは、[!INCLUDE[TLA2#tla_dll](../../../../includes/tla2sharptla-dll-md.md)] 内で最初に呼び出されるメソッドの 1 つであるため、後から定義する、`InitializeGlobals()` という名前の関数を呼び出して標準の [!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] 初期化を実行することも必要です。 + +``` +bool initialized = false; + void InitializeGlobals() { + if (initialized) return; + initialized = true; + + // TODO: Place code here. + MSG msg; + HACCEL hAccelTable; + + // Initialize global strings + LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); + LoadString(hInstance, IDC_TYPICALWIN32DIALOG, szWindowClass, MAX_LOADSTRING); + MyRegisterClass(hInstance); + +``` + +### TranslateAccelerator Method のオーバーライドによるダイアログ キーの処理 + このサンプルをこのまま実行すると、ダイアログ コントロールは表示されますが、ダイアログ ボックスが実際に使用できるようになるためのキーボード処理は、すべて無視されます。 ここでは、\( が実装するインターフェイスである `IKeyboardInputSink` から取得する\) `TranslateAccelerator` 実装をオーバーライドする必要があります。 このメソッドは、アプリケーションが WM\_KEYDOWN および WM\_SYSKEYDOWN を受け取ったときに呼び出されます。 + +``` + +#undef TranslateAccelerator + virtual bool TranslateAccelerator(System::Windows::Interop::MSG% msg, + ModifierKeys modifiers) override + { + ::MSG m = ConvertMessage(msg); + + // Win32's IsDialogMessage() will handle most of our tabbing, but doesn't know + // what to do when it reaches the last tab stop + if (m.message == WM_KEYDOWN && m.wParam == VK_TAB) { + HWND firstTabStop = GetDlgItem(dialog, IDC_EDIT1); + HWND lastTabStop = GetDlgItem(dialog, IDCANCEL); + TraversalRequest^ request = nullptr; + + if (GetKeyState(VK_SHIFT) && GetFocus() == firstTabStop) { + // this code should work, but there’s a bug with interop shift-tab in current builds + request = gcnew TraversalRequest(FocusNavigationDirection::Last); + } + else if (!GetKeyState(VK_SHIFT) && GetFocus() == lastTabStop) { + request = gcnew TraversalRequest(FocusNavigationDirection::Next); + } + + if (request != nullptr) + return ((IKeyboardInputSink^) this)->KeyboardInputSite->OnNoMoreTabStops(request); + + } + + // Only call IsDialogMessage for keys it will do something with. + if (msg.message == WM_SYSKEYDOWN || msg.message == WM_KEYDOWN) { + switch (m.wParam) { + case VK_TAB: + case VK_LEFT: + case VK_UP: + case VK_RIGHT: + case VK_DOWN: + case VK_EXECUTE: + case VK_RETURN: + case VK_ESCAPE: + case VK_CANCEL: + IsDialogMessage(dialog, &m); + // IsDialogMessage should be called ProcessDialogMessage -- + // it processes messages without ever really telling you + // if it handled a specific message or not + return true; + } + } + + return false; // not a key we handled + } +``` + + この例には多くのコードが含まれているため、そのいくつかについて詳しく説明します。 最初に、[!INCLUDE[TLA#tla_cpp](../../../../includes/tlasharptla-cpp-md.md)] および [!INCLUDE[TLA#tla_cpp](../../../../includes/tlasharptla-cpp-md.md)] のマクロを使用するコードについて、`TranslateAccelerator` という名前のマクロが既に存在し、winuser.h で次のように定義されていることに注意する必要があります。 + +``` +#define TranslateAccelerator TranslateAcceleratorW +``` + + このため、`TranslateAcceleratorW` メソッドではなく `TranslateAccelerator` メソッドを定義する必要があります。 + + 同様に、アンマネージ winuser.h MSG とマネージ `Microsoft::Win32::MSG` struct の両方が存在します。 [!INCLUDE[TLA#tla_cpp](../../../../includes/tlasharptla-cpp-md.md)] `::` 演算子を使用して、この 2 つの MSG のあいまいさを解消できます。 + +``` + +virtual bool TranslateAccelerator(System::Windows::Interop::MSG% msg, + ModifierKeys modifiers) override +{ + ::MSG m = ConvertMessage(msg); +``` + + 2 つの MSG のデータは同じですが、アンマネージ定義を使用した方が簡単な場合があるため、このサンプルでは次のように明確な変換ルーチンを定義できます。 + +``` +::MSG ConvertMessage(System::Windows::Interop::MSG% msg) { + ::MSG m; + m.hwnd = (HWND) msg.hwnd.ToPointer(); + m.lParam = (LPARAM) msg.lParam.ToPointer(); + m.message = msg.message; + m.wParam = (WPARAM) msg.wParam.ToPointer(); + + m.time = msg.time; + + POINT pt; + pt.x = msg.pt_x; + pt.y = msg.pt_y; + m.pt = pt; + + return m; +} +``` + + `TranslateAccelerator` に戻ります。 基本的な原則は、[!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] 関数 `IsDialogMessage` を呼び出して、できる限り多くの作業を実行することですが、`IsDialogMessage` はダイアログ外のものには一切アクセスできません。ユーザーがダイアログ内を Tab キーで移動し、Tab キーがダイアログ内の最後のコントロールを超える場合は、`IKeyboardInputSite::OnNoMoreStops` を呼び出してフォーカスを [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] の部分に設定する必要があります。 + +``` +// Win32's IsDialogMessage() will handle most of the tabbing, but doesn't know +// what to do when it reaches the last tab stop +if (m.message == WM_KEYDOWN && m.wParam == VK_TAB) { + HWND firstTabStop = GetDlgItem(dialog, IDC_EDIT1); + HWND lastTabStop = GetDlgItem(dialog, IDCANCEL); + TraversalRequest^ request = nullptr; + + if (GetKeyState(VK_SHIFT) && GetFocus() == firstTabStop) { + request = gcnew TraversalRequest(FocusNavigationDirection::Last); + } + else if (!GetKeyState(VK_SHIFT) && GetFocus() == lastTabStop) { { + request = gcnew TraversalRequest(FocusNavigationDirection::Next); + } + + if (request != nullptr) + return ((IKeyboardInputSink^) this)->KeyboardInputSite->OnNoMoreTabStops(request); +} +``` + + 最後に、`IsDialogMessage` を呼び出します。 ただし、`TranslateAccelerator` メソッドが行う処理の 1 つは、キーストロークを処理しているかどうかを [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] に伝えることです。 キーストロークを処理していない場合、入力イベントはアプリケーションの残りをトンネリングおよびバブリングできます。 ここで、キーボード メッセージ処理の特性と、[!INCLUDE[TLA2#tla_win32](../../../../includes/tla2sharptla-win32-md.md)] の入力アーキテクチャの性質を公開します。 `IsDialogMessage` は、特定のキーストロークを処理しているかどうかの値を返しません。 さらに、処理する必要のないキーストロークで `DispatchMessage()` を呼び出します。 このため、`IsDialogMessage` をリバースエンジニアリングして、処理することがわかっているキーに対してのみ `IsDialogMessage` を呼び出す必要があります。 + +``` +// Only call IsDialogMessage for keys it will do something with. +if (msg.message == WM_SYSKEYDOWN || msg.message == WM_KEYDOWN) { + switch (m.wParam) { + case VK_TAB: + case VK_LEFT: + case VK_UP: + case VK_RIGHT: + case VK_DOWN: + case VK_EXECUTE: + case VK_RETURN: + case VK_ESCAPE: + case VK_CANCEL: + IsDialogMessage(dialog, &m); + // IsDialogMessage should be called ProcessDialogMessage -- + // it processes messages without ever really telling you + // if it handled a specific message or not + return true; + } +``` + +### TabInto メソッドのオーバーライドによる Tab キーによる移動のサポート + `TranslateAccelerator` の実装が完了したので、ユーザーはダイアログ ボックス内を Tab キーで移動し、ダイアログ ボックスからより大きい [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションへ移動することができます。 ただし、ユーザーはダイアログ ボックスに Tab キーで戻ることができません。 この問題を解決するためには、`TabInto` をオーバーライドします。 + +``` + +public: + virtual bool TabInto(TraversalRequest^ request) override { + if (request->FocusNavigationDirection == FocusNavigationDirection::Last) { + HWND lastTabStop = GetDlgItem(dialog, IDCANCEL); + SetFocus(lastTabStop); + } + else { + HWND firstTabStop = GetDlgItem(dialog, IDC_EDIT1); + SetFocus(firstTabStop); + } + return true; + } + +``` + + `TraversalRequest` パラメーターは、Tab キーのアクションが Tab キーであるか Shift \+ Tab キーであるかを示します。 + +### OnMnemonic メソッドのオーバーライドによるニーモニックのサポート + キーボード処理はほぼ完了ですが、1 つ残っている処理があります。それはニーモニックが機能しないという点です。 ユーザーが Alt キーを押しながら F キーを押しても、\[First name:\] ボックスにはジャンプしません。 このため、`OnMnemonic` メソッドを次のようにオーバーライドします。 + +``` +virtual bool OnMnemonic(System::Windows::Interop::MSG% msg, ModifierKeys modifiers) override { + ::MSG m = ConvertMessage(msg); + + // If it's one of our mnemonics, set focus to the appropriate hwnd + if (msg.message == WM_SYSCHAR && GetKeyState(VK_MENU /*alt*/)) { + int dialogitem = 9999; + switch (m.wParam) { + case 's': dialogitem = IDOK; break; + case 'c': dialogitem = IDCANCEL; break; + case 'f': dialogitem = IDC_EDIT1; break; + case 'l': dialogitem = IDC_EDIT2; break; + case 'p': dialogitem = IDC_EDIT3; break; + case 'a': dialogitem = IDC_EDIT4; break; + case 'i': dialogitem = IDC_EDIT5; break; + case 't': dialogitem = IDC_EDIT6; break; + case 'z': dialogitem = IDC_EDIT7; break; + } + if (dialogitem != 9999) { + HWND hwnd = GetDlgItem(dialog, dialogitem); + SetFocus(hwnd); + return true; + } + } + return false; // key unhandled +}; +``` + + ここでは、なぜ `IsDialogMessage` を呼び出さないのでしょうか。 前述したとおり、コードがキーストロークを処理したかどうかを [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] に伝える必要があるにもかかわらず、`IsDialogMessage` はそれを実行できません。 また、フォーカスがある HWND がダイアログ ボックス内にない場合、ニーモニックの処理を `IsDialogMessage` が拒否するという問題もあります。 + +### HwndHost 派生クラスのインスタンス化 + 最後に、すべてのキーと Tab キーがサポートされるようになったので、 をより大きい [!INCLUDE[TLA2#tla_winclient](../../../../includes/tla2sharptla-winclient-md.md)] アプリケーションに入れることができます。 メインのアプリケーションが [!INCLUDE[TLA2#tla_xaml](../../../../includes/tla2sharptla-xaml-md.md)] で記述される場合、 を正しい場所に入れる最も簡単な方法は、 を入れる空の 要素を残しておくことです。 ここで、`insertHwndHostHere` という名前の を作成します。 + +``` + + +
+``` + +## XAML 値 + +||| +|-|-| +|`namespace`|省略可能です。 `classname` で識別される部分クラスを含む [!INCLUDE[TLA2#tla_clr](../../../includes/tla2sharptla-clr-md.md)] 名前空間を指定します。 `namespace` を指定する場合は、`namespace` と `classname` をドット \(.\) で区切ります。 「解説」を参照してください。| +|`classname`|必ず指定します。 読み込まれた XAML、およびその XAML の分離コードを接続する部分クラスの [!INCLUDE[TLA2#tla_clr](../../../includes/tla2sharptla-clr-md.md)] 名を指定します。| + +## 依存関係 + `x:Class` は、XAML 稼動環境のルート要素でのみ指定できます。 `x:Class` は、XAML 稼動環境内に親を持つ任意のオブジェクトで無効です。 詳細については、「[\[MS\-XAML\] 第 4.3.1.6 節](http://go.microsoft.com/fwlink/?LinkId=114525)」を参照してください。 + +## 解説 + `namespace` の値には、関連する名前空間を名前の階層に編成するために追加のドットを含めることができます。これは、.NET Framework プログラミングの一般的な手法です。 `x:Class` の値の文字列に含まれる最後のドットのみが、`namespace` と `classname` の区切りとして解釈されます。`x:Class` として使用するクラスは、入れ子にできません。 入れ子になったクラスが許可されると `x:Class` 文字列のドットの意味の判断があいまいになるので、入れ子になったクラスは許可されません。 + + `x:Class` を使用する既存のプログラミング モデルの `x:Class` は、分離コードを一切持たない XAML ページが存在することはまったく問題ないという意味で省略可能です。 ただし、XAML を使用するフレームワークによって実装されたビルド アクションにはこの機能が作用します。 また、さまざまな種類の XAML 固有コンテンツがアプリケーション モデル内や対応するビルド アクションにおいて担う役割も、`x:Class` の機能に影響します。 イベント処理属性の値を XAML で宣言する場合や、\(定義しているクラスが分離コード クラスに存在するような\) カスタム要素を XAML でインスタンス化する場合には、分離コードの該当クラスに対する `x:Class` ディレクティブ参照 \(または [x:Subclass](../../../docs/framework/xaml-services/x-subclass-directive.md)\) を指定する必要があります。 + + `x:Class` ディレクティブの値は、クラスの完全修飾名を指定する文字列です。ただし、アセンブリの情報は含まれません \( に相当します\)。 単純なアプリケーションの場合、CLR 名前空間情報を省略することもできますが、分離コードもそのように構成されている \(コード定義がクラス レベルで開始する\) ことが条件となります。 + + ページまたはアプリケーション定義の分離コード ファイルは、コンパイル済みアプリケーションを作成しマークアップ コンパイルに関与するプロジェクトの一部として含まれているコード ファイル内にある必要があります。 CLR クラスの名前規則に従う必要があります。 詳細については、「[Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md)」を参照してください。 既定では、分離コード クラスは `public` である必要がありますが、[x:ClassModifier Directive](../../../docs/framework/xaml-services/x-classmodifier-directive.md)を使用して、異なるアクセス レベルとして定義できます。 + + この `x:Class` 属性の解釈が当てはまるのは、CLR ベースの XAML 実装、特に、.NET Framework XAML サービスのみです。 CLR に基づかず、.NET Framework XAML サービスを使用しない他の XAML 実装では、XAML マークアップと対応するランタイム コードを関連付けるために異なる解決式を使用する場合があります。 `x:Class` の一般的な解釈の詳細については、「[\[MS\-XAML\]](http://go.microsoft.com/fwlink/?LinkId=114525)」を参照してください。 + + 特定レベルのアーキテクチャでは、`x:Class` の意味は、.NET Framework XAML サービスで定義されていません。 これは、.NET Framework XAML サービスで、XAML マークアップと対応するコードが関連付けられるプログラミング モデルが指定されていないためです。 `x:Class` ディレクティブの用途は他にも考えられます。XAML マークアップと CLR ベースの分離コードを関連付ける方法を定義する目的で、そうした用途が、プログラミング モデルまたはアプリケーション モデルを使用する特定のフレームワークによって実装される場合があります。 それぞれのフレームワークは、一部の動作を実現する独自のビルド アクションや、ビルド環境に含める必要のある特定のコンポーネントを備えています。 フレームワーク内では、分離コードで使用される特定の CLR 言語に応じてビルド アクションは変化することもあります。 + +## WPF プログラミング モデルの x:Class + WPF アプリケーションおよび WPF アプリケーション モデルでは、`x:Class` を、XAML ファイルのルートで、コンパイルされている任意の要素の属性 \(XAML が `Page` ビルド アクションによって WPF アプリケーション プロジェクトに組み込まれている場合\)、またはコンパイル済み WPF アプリケーションのアプリケーション定義の ルートの属性として宣言できます。 [!INCLUDE[net_v30_short](../../../includes/net-v30-short-md.md)] および [!INCLUDE[net_v35_short](../../../includes/net-v35-short-md.md)] の WPF XAML コンパイラでは、ページ ルートまたはアプリケーション ルート以外の要素、あるいはコンパイルされていない WPF XAML ファイルで `x:Class` を宣言すると、コンパイル時エラーが発生します。 WPF の `x:Class` 処理に関連したその他の情報については、「[WPF における分離コードと XAML](../../../docs/framework/wpf/advanced/code-behind-and-xaml-in-wpf.md)」を参照してください。 + +## Windows Workflow Foundation の x:Class + Windows Workflow Foundation の場合、`x:Class` によって名前指定されるのは、完全に XAML で構成されたカスタム アクティビティのクラスか、または分離コードを持つアクティビティ デザイナー用の XAML ページの部分クラスです。 + +## Silverlight の使用上の注意 + Silverlight 用の `x:Class` に関しては、別途ドキュメントが用意されています。 詳細については、「[XAML 名前空間 \(x:\) 言語機能 \(Silverlight\)](http://go.microsoft.com/fwlink/?LinkId=199081)」を参照してください。 + +## 参照 + [x:Subclass Directive](../../../docs/framework/xaml-services/x-subclass-directive.md) + [WPF における XAML とカスタム クラス](../../../docs/framework/wpf/advanced/xaml-and-custom-classes-for-wpf.md) + [x:ClassModifier Directive](../../../docs/framework/xaml-services/x-classmodifier-directive.md) + [Types Migrated from WPF to System.Xaml](../../../docs/framework/xaml-services/types-migrated-from-wpf-to-system-xaml.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-classmodifier-directive.md b/docs/framework/xaml-services/x-classmodifier-directive.md new file mode 100644 index 00000000000..29091a70eb9 --- /dev/null +++ b/docs/framework/xaml-services/x-classmodifier-directive.md @@ -0,0 +1,68 @@ +--- +title: "x:ClassModifier Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "xClassModifier" + - "x:ClassModifier" + - "ClassModifier" +helpviewer_keywords: + - "XAML [XAML Services], x:ClassModifier attribute" + - "x:ClassModifier attribute [XAML Services]" + - "ClassModifier attribute in XAML [XAML Services]" +ms.assetid: ef30ab78-d334-4668-917d-c9f66c3b6aea +caps.latest.revision: 22 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 21 +--- +# x:ClassModifier Directive +`x:Class` も提供される場合の XAML のコンパイル動作を変更します。 特に、`Public` アクセス レベル \(既定レベル\) を持つ部分 `class` を作成する代わりに、提供された `x:Class` が `NotPublic` アクセス レベルで作成されます。 この動作は、生成されるアセンブリでのクラスのアクセス レベルに影響を与えます。 + +## XAML 属性の使用方法 + +``` + + ... +
+``` + +## XAML 値 + +||| +|-|-| +|*NotPublic*| かを指定するために渡す正確な文字列は、分離コードで使用されているプログラミング言語によって異なります。 「解説」を参照してください。| + +## 依存関係 + [x:Class](../../../docs/framework/xaml-services/x-class-directive.md) も同じ要素に提供される必要があり、その要素はページのルート要素である必要があります。 詳細については、「[\[MS\-XAML\] 第 4.3.1.8 節](http://go.microsoft.com/fwlink/?LinkId=114525)」を参照してください。 + +## 解説 + .NET Framework XAML サービスの使用での `x:ClassModifier` の値は、プログラミング言語によって異なります。 使用する文字列は、各言語の の実装方法、その言語が の意味を定義するために返す型コンバーター、およびその言語が大文字と小文字を区別するかどうかによって決まります。 + +- [!INCLUDE[TLA2#tla_cshrp](../../../includes/tla2sharptla-cshrp-md.md)] の場合、 を指定するために渡す文字列は `internal` です。 + +- [!INCLUDE[TLA2#tla_visualbnet](../../../includes/tla2sharptla-visualbnet-md.md)] の場合、 を指定するために渡す文字列は `Friend` です。 + +- [!INCLUDE[TLA2#tla_cppcli](../../../includes/tla2sharptla-cppcli-md.md)] の場合、XAML のコンパイルをサポートする既存のターゲットは存在しないため、渡す値は指定されていません。 + + \([!INCLUDE[TLA2#tla_cshrp](../../../includes/tla2sharptla-cshrp-md.md)] では `public`、[!INCLUDE[TLA2#tla_visualb](../../../includes/tla2sharptla-visualb-md.md)] では `Public`\) を指定することもできますが、 が既定の動作となっているため を指定するのは一般的ではありません。 + + [!INCLUDE[TLA2#tla_cshrp](../../../includes/tla2sharptla-cshrp-md.md)] の `private` など、同等のユーザー コード アクセス レベル制限を持つ他の値は、`x:ClassModifier` として有効ではありません。XAML では入れ子になったクラス参照がサポートされないためであり、 修飾子が同じ効果を持ちます。 + +## セキュリティに関するメモ + `x:ClassModifier` で定義されているアクセス レベルは、特定のフレームワークとその機能によって解釈されます。 WPF には、対象のクラスが Pack URI 参照によって WPF リソースから参照される場合に、`x:ClassModifier` が `internal` である型を読み込んでインスタンス化する機能が用意されています。 このケースおよび他のフレームワークによって実装される同様のケースを踏まえて、可能性のあるすべてのインスタンス化をブロックするために `x:ClassModifier` だけに依存しないでください。 + +## 参照 + [x:Class Directive](../../../docs/framework/xaml-services/x-class-directive.md) + [WPF における分離コードと XAML](../../../docs/framework/wpf/advanced/code-behind-and-xaml-in-wpf.md) + [x:FieldModifier Directive](../../../docs/framework/xaml-services/x-fieldmodifier-directive.md) + [セキュリティ \(WPF\)](../../../docs/framework/wpf/security-wpf.md) + [Types Migrated from WPF to System.Xaml](../../../docs/framework/xaml-services/types-migrated-from-wpf-to-system-xaml.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-code-intrinsic-xaml-type.md b/docs/framework/xaml-services/x-code-intrinsic-xaml-type.md new file mode 100644 index 00000000000..49560575b78 --- /dev/null +++ b/docs/framework/xaml-services/x-code-intrinsic-xaml-type.md @@ -0,0 +1,61 @@ +--- +title: "x:Code Intrinsic XAML Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Code" + - "x:Code" + - "xCode" +helpviewer_keywords: + - "Code directive in XAML [XAML Services]" + - "x:Code XAML directive element [XAML Services]" + - "XAML [XAML Services], x:Code directive element" +ms.assetid: 87986b13-1a2e-4830-ae36-15f9dc5629e8 +caps.latest.revision: 19 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 19 +--- +# x:Code Intrinsic XAML Type +XAML 稼動環境内にコードを配置できます。 このようなコードは、XAML をコンパイルする XAML プロセッサ実装によってコンパイルすることもできれば、ランタイムによって解釈させるなど、後から使用するために XAML 稼動環境内に残しておくこともできます。 + +## XAML オブジェクト要素の使用方法 + +``` + + // code instructions, usually enclosed by CDATA... + +``` + +## 解説 + `x:Code` XAML ディレクティブ要素内のコードも、指定された汎用 XML 名前空間と XAML 名前空間内で解釈されます。 したがって、`x:Code` 用に使用されるコードを `CDATA` セグメントで囲むことも通常は必要です。 + + `x:Code` は、どの XAML 稼動環境の配置機構でも使用できるとは限りません。 特定のフレームワーク \(たとえば、WPF\) では、コードはコンパイルする必要があります。 その他のフレームワークでは、`x:Code` の使用は一般に許可されていません。 + + マネージ `x:Code` コンテンツを許容するフレームワークの場合、`x:Code` コンテンツに対して使用される適切な言語コンパイラは、アプリケーションをコンパイルするために使用される格納元プロジェクトの設定とターゲットによって決定されます。 + +## WPF の使用上の注意 + WPF の場合、`x:Code` 内で宣言されるコードに関して、いくつかの制限事項があります。 + +- `x:Code` ディレクティブ要素は、XAML 稼動環境のルート要素の直接の子要素でなければなりません。 + +- [x:Class Directive](../../../docs/framework/xaml-services/x-class-directive.md) は、親ルート要素で提供される必要があります。 + +- コンパイル時に、`x:Code` 内に配置されているコードは、その XAML ページに対して既に作成された部分クラスのスコープ内にあるものとして扱われます。 このため、定義するすべてのコードは、その部分クラスのメンバーまたは変数である必要があります。 + +- 部分クラスの内側にクラスを入れ子にすること以外の方法で、追加クラスを定義することはできません \(入れ子にすることはできますが、入れ子のクラスは XAML では参照できないので、一般的ではありません\)。 既存の部分クラスに対して使用されている名前空間以外の CLR 名前空間を定義したり追加したりすることはできません。 + +- 部分クラスの CLR 名前空間の外側のコード エンティティに対する参照は、すべて完全修飾されている必要があります。 宣言されるメンバーが、部分クラスのオーバーライド可能なメンバーに対するオーバーライドである場合は、言語固有のオーバーライド キーワードを使用してこのことを指定する必要があります。 `x:Code` のスコープで宣言されたメンバーと、XAML から作成された部分クラスのメンバーとの間に、コンパイラから報告されるような競合がある場合は、XAML ファイルを読み込んだりコンパイルしたりすることはできません。 + +## 参照 + [x:Class Directive](../../../docs/framework/xaml-services/x-class-directive.md) + [WPF における分離コードと XAML](../../../docs/framework/wpf/advanced/code-behind-and-xaml-in-wpf.md) + [XAML の概要 \(WPF\)](../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-factorymethod-directive.md b/docs/framework/xaml-services/x-factorymethod-directive.md new file mode 100644 index 00000000000..09b3de74023 --- /dev/null +++ b/docs/framework/xaml-services/x-factorymethod-directive.md @@ -0,0 +1,67 @@ +--- +title: "x:FactoryMethod Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "XAML. x:FactoryMethod directive [XAML Services]" + - "FactoryMethod directive in XAML [XAML Services]" + - "x:FactoryMethod directive [XAML Services]" +ms.assetid: 829bcbdf-5318-4afb-9a03-c310e0d2f23d +caps.latest.revision: 8 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 8 +--- +# x:FactoryMethod Directive +XAML プロセッサが、バッキング型を解決した後にオブジェクトを初期化するために使用する、コンストラクター以外のメソッドを指定します。 + +## XAML 属性の使用方法、x:Arguments なし + +``` + + ... +
+``` + +## XAML 属性の使用方法、要素としての x:Arguments + +``` + + + oneOrMoreObjectElements + + +``` + +## XAML 値 + +||| +|-|-| +|`methodname`|XAML プロセッサが、`object` として指定されるインスタンスを初期化するために、XAML プロセッサが呼び出すメソッドの文字列メソッド名。 「解説」を参照してください。| +|`oneOrMoreObjectElements`|ファクトリ メソッド パラメーターを指定するオブジェクトの、1 つ以上のオブジェクト要素。 ファクトリ メソッドに引数が渡される順序を指定するので、順序は重要です。| + +## 解説 + `methodname` がインスタンス メソッドである場合、修飾できません。 + + ファクトリ メソッドとしての静的メソッドはサポートされます。 `methodname` が静的メソッドである場合、`methodname` は *typeName*.*methodName* の組み合わせとして指定されます。ここで、*typeName* は、静的ファクトリ メソッドを定義するクラスの名前です。 *typeName* は、マップされた xmlns の型を表す場合は、プレフィックスで修飾されています。 *typeName* は、`typeof(``object``)` とは異なる型のこともあります。 + + ファクトリ メソッドは、関連するオブジェクト要素をサポートする型の、宣言済みパブリック メソッドである必要があります。 + + ファクトリ メソッドは、関連オブジェクトに割り当てることができるインスタンスを返す必要があります。 ファクトリ メソッドが null 値を返すことはありません。 + + `x:Arguments` は、ファクトリ メソッドのシグネチャの最優先の一致の原則に従います。 一致においては、最初にパラメーター数が評価されます。 パラメーター数に 1 つ以上の一致が見られる場合、パラメーター型が評価され、最優先の一致が決定されます。 評価のこのフェーズの後にあいまいさが残る場合は、XAML プロセッサの動作は未定義です。 + + `x:FactoryMethod` 要素の使用方法は、一般的な意味合いにおけるプロパティ要素の使用方法ではありません。これは、ディレクティブのマークアップは、格納オブジェクトの要素の型を参照しないためです。 要素の使用方法は、属性の使用方法よりも一般的ではないとされています。 `x:Arguments` \(属性または要素の使用方法\) は、`x:FactoryMethod` 要素の使用方法と共に使用できますが、「使用方法」のセクションには具体的に示されません。 + + 要素としての `x:FactoryMethod` はその他のプロパティ要素、要素として指定される `x:Arguments`、およびコンテンツ\/内部テキスト\/初期化テキストの前に配置される必要があります。 + +## 参照 + [x:Arguments Directive](../../../docs/framework/xaml-services/x-arguments-directive.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-fieldmodifier-directive.md b/docs/framework/xaml-services/x-fieldmodifier-directive.md new file mode 100644 index 00000000000..5578eef539a --- /dev/null +++ b/docs/framework/xaml-services/x-fieldmodifier-directive.md @@ -0,0 +1,65 @@ +--- +title: "x:FieldModifier Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "FieldModifier attribute in XAML [XAML Services]" + - "x:FieldModifier attribute [XAML Services]" + - "XAML [XAML Services], x:FieldModifier attribute" +ms.assetid: ed427cd4-2f35-4d24-bd2f-0fa7b71ec248 +caps.latest.revision: 15 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 14 +--- +# x:FieldModifier Directive +指定されているオブジェクト参照のフィールドが、既定動作の ではなく アクセスで定義されるように、XAML のコンパイル動作を変更します。 + +## XAML 属性の使用方法 + +``` + +``` + +## XAML 値 + +||| +|-|-| +|*Public*| かを指定するために渡す正確な文字列は、分離コードで使用されているプログラミング言語によって異なります。 「解説」を参照してください。| + +## 依存関係 + XAML 稼動環境が任意の場所で `x:FieldModifier` を使用する場合、XAML 稼動環境のルート要素は [x:Class Directive](../../../docs/framework/xaml-services/x-class-directive.md) を宣言する必要があります。 + +## 解説 + `x:FieldModifier` は、クラスまたはそのメンバーの一般的なアクセス レベルの宣言には関連しません。 XAML 稼動環境の一部である特定の XAML オブジェクトが処理されるときの XAML 処理動作にだけ関係し、アプリケーションのオブジェクト グラフ内で潜在的にアクセスできるオブジェクトとなります。 既定では、このようなオブジェクトのフィールド参照は非公開なので、コントロール コンシューマーはオブジェクト グラフを直接変更できません。 代わりに、コントロール コンシューマーは、レイアウト ルートの取得、子要素のコレクションの取得、専用のパブリック プロパティの取得などのプログラミング モデルによって有効になる標準パターンを使用してオブジェクト グラフを変更します。 + + `x:FieldModifier` 属性の値はプログラミング言語ごとに異なり、その目的は特定のフレームワークで変わることがあります。 使用する文字列は、各言語の の実装方法、その言語が の意味を定義するために返す型コンバーター、およびその言語が大文字と小文字を区別するかどうかによって決まります。 + +- [!INCLUDE[TLA2#tla_cshrp](../../../includes/tla2sharptla-cshrp-md.md)] の場合、 を指定するために渡す文字列は `public` です。 + +- [!INCLUDE[TLA2#tla_visualbnet](../../../includes/tla2sharptla-visualbnet-md.md)] の場合、 を指定するために渡す文字列は `Public` です。 + +- [!INCLUDE[TLA2#tla_cppcli](../../../includes/tla2sharptla-cppcli-md.md)] の場合、XAML のターゲットは現在存在しないため、渡す文字列は定義されていません。 + + \([!INCLUDE[TLA2#tla_cshrp](../../../includes/tla2sharptla-cshrp-md.md)] では `internal`、[!INCLUDE[TLA2#tla_visualb](../../../includes/tla2sharptla-visualb-md.md)] では `Friend`\) を指定することもできますが、動作としては `NotPublic` が既定となっているため を指定するのは一般的ではありません。 + + が既定の動作になっているのは、XAML をコンパイルしたアセンブリの外部のコードから XAML で作成された要素にアクセスする必要があまりないためです。 パブリック アクセスを許可するようにユーザーが明確に `x:FieldModifier` を設定しない限り、WPF のセキュリティ アーキテクチャと XAML のコンパイル動作の組み合わせが、要素のインスタンスを格納するフィールドを Public にすることはありません。 + + `x:FieldModifier` は、[x:Name Directive](../../../docs/framework/xaml-services/x-name-directive.md)が指定されている要素に対してのみ関係します。これは、フィールドが Public になると、その名前を使用してフィールドを参照するためです。 + + ルート要素の部分クラスは既定で Public になっていますが、[x:ClassModifier Directive](../../../docs/framework/xaml-services/x-classmodifier-directive.md)を使用して NonPublic にすることができます。 [x:ClassModifier Directive](../../../docs/framework/xaml-services/x-classmodifier-directive.md)は、ルート要素クラスのインスタンスのアクセス レベルにも影響を与えます。 ルート要素には `x:Name` と `x:FieldModifier` の両方を配置できますが、これはルート要素のパブリック フィールドのコピーを作成するだけであり、実際のルート要素クラスのアクセス レベルは引き続き [x:ClassModifier Directive](../../../docs/framework/xaml-services/x-classmodifier-directive.md)によって制御されます。 + +## 参照 + [WPF における XAML とカスタム クラス](../../../docs/framework/wpf/advanced/xaml-and-custom-classes-for-wpf.md) + [WPF における分離コードと XAML](../../../docs/framework/wpf/advanced/code-behind-and-xaml-in-wpf.md) + [x:Name Directive](../../../docs/framework/xaml-services/x-name-directive.md) + [WPF アプリケーション \(WPF\) のビルド](../../../docs/framework/wpf/app-development/building-a-wpf-application-wpf.md) + [x:ClassModifier Directive](../../../docs/framework/xaml-services/x-classmodifier-directive.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-key-directive.md b/docs/framework/xaml-services/x-key-directive.md new file mode 100644 index 00000000000..8a8e0e3eab2 --- /dev/null +++ b/docs/framework/xaml-services/x-key-directive.md @@ -0,0 +1,123 @@ +--- +title: "x:Key Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "xKey" + - "Key" + - "x:Key" +helpviewer_keywords: + - "x:Key attribute [XAML Services]" + - "Key attribute in XAML [XAML Services]" + - "XAML [XAML Services], x:Key attribute" +ms.assetid: 1985cd45-f197-42d5-b75e-886add64b248 +caps.latest.revision: 25 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 25 +--- +# x:Key Directive +XAML で定義されたディクショナリで作成および参照される要素を一意に識別します。 `x:Key` 値を XAML オブジェクトに追加するのは、リソース ディクショナリ \( など\) のリソースを識別するための最も一般的な方法です。 + +## XAML 属性の使用方法 + +``` + +-or- + +``` + +## XAML 属性の使用方法 \(WPF 固有\) + +``` + + + +-or- + +   + +``` + +## XAML 値 + +||| +|-|-| +|`stringKeyValue`|キーとして使用するテキスト文字列。 テキスト文字列は、[XamlName の文法](../../../docs/framework/xaml-services/xamlname-grammar.md)に準拠している必要があります。| +|`markupExtensionUsage`|マークアップ拡張機能の区切り記号 {} 内では、キーとして使用するオブジェクトを提供するマークアップ拡張機能の使用方法です。 「解説」を参照してください。| + +## 解説 + `x:Key` は XAML のリソース ディクショナリの概念をサポートしています。 言語としての XAML ではリソース ディクショナリの実装は定義されていません。特定の UI フレーム ワークによって定義されています。 WPF での XAML リソース ディクショナリの実装方法の詳細については、「[XAML リソース](../../../docs/framework/wpf/advanced/xaml-resources.md)」を参照してください。 + + XAML 2006 および WPF では、`x:Key` は属性として示す必要があります。 文字列ではないキーも使用できますが、文字列ではない値を属性形式で提供するためには、マークアップ拡張機能を使用する必要があります。 XAML 2009 を使用する場合は、`x:Key` を要素として指定し、マークアップ拡張機能の仲介を必要とすることなく、文字列以外のオブジェクトの種類をキーとするディクショナリを明示的にサポートすることができます。 このトピックの「XAML 2009」のセクションを参照してください。 解説セクションの残りの部分では、XAML 2006 の実装について説明します。 + + `x:Key` の属性値には、[XamlName の文法](../../../docs/framework/xaml-services/xamlname-grammar.md) で定義されている任意の文字列またはマークアップ拡張機能を使用して評価されたオブジェクトを指定できます。 WPF の例については、「WPF の使用上の注意」を参照してください。 + + 通常、 の実装である親要素の子要素には、そのディクショナリ内の一意のキー値を指定する `x:Key` 属性を含める必要があります。 フレームワークでは、特定の型の `x:Key` を代用するために、エイリアス化されたキー プロパティを実装する場合があります。このようなプロパティを定義する型には、 属性を設定する必要があります。 + + `x:Key` の指定に相当するコードは、基になる で使用されるキーです。 たとえば、マークアップで適用される WPF のリソースの `x:Key` は、コードでリソースを WPF の に追加する場合、 の `key` パラメーターの値と同等です。 + +## WPF の使用上の注意 + 通常、WPF の などの の実装である親オブジェクトの子オブジェクトには、`x:Key` 属性を含める必要があります。また、キー値は、そのディクショナリ内で一意である必要があります。 ただし、次のように 2 つの重要な例外があります。 + +- 一部の WPF 型は、ディクショナリの使用に対して暗黙のキーを宣言します。 たとえば、 が設定された や、 が設定された は、 に格納して、暗黙のキーを使用できます。 + +- WPF は、マージされたリソース ディクショナリの概念をサポートしています。 キーは、マージされたディクショナリ間で共有できます。また、共有されたキーの動作には、 を使用してアクセスできます。 詳細については、「[マージされたリソース ディクショナリ](../../../docs/framework/wpf/advanced/merged-resource-dictionaries.md)」を参照してください。 + + 通常、WPF XAML の実装およびアプリケーション モデルでは、キーの一意性が XAML マークアップ コンパイラによってチェックされることはありません。 その代わり、`x:Key` 値が指定されていない場合や一意でない場合は、読み込み時に XAML パーサー エラーが発生します。 ただし、WPF のディクショナリに対する [!INCLUDE[vs_current_short](../../../includes/vs-current-short-md.md)] 処理によって、このようなエラーの多くは、デザイン フェーズで指摘されます。 + + ここに示す構文において、 オブジェクトは WPF XAML プロセッサが コレクションを取得するためのコレクションを生成する方法を暗黙的に決定することに注意してください。 は、通常はマークアップで要素として明示的に指定されませんが、わかりやすくするために必要に応じて明示的に指定することもできます \(その場合、このオブジェクトは、 プロパティ要素とディクショナリに設定される項目間のコレクション オブジェクト要素になります\)。 コレクション オブジェクトがマークアップでほぼ必ず暗黙の要素になる理由の詳細については、「[XAML 構文の詳細](../../../docs/framework/wpf/advanced/xaml-syntax-in-detail.md)」を参照してください。 + + WPF XAML 実装では、リソース ディクショナリ キーの処理は、 抽象クラスによって定義されます。 ただし、WPF XAML プロセッサは、使用方法に基づいてキーごとに別の基になる拡張型を生成します。 たとえば、 または任意の派生クラスのキーは個別に処理され、異なる オブジェクトを生成します。 + + 基本的な XAML 定義では、キーと名前で異なるディレクティブと言語要素 \(`x:Key` と `x:Name`\) が使用されます。 また、キーと名前は、それらの概念の WPF 定義およびアプリケーションにより異なる状況において使用されます。 詳細については、「[WPF XAML 名前スコープ](../../../docs/framework/wpf/advanced/wpf-xaml-namescopes.md)」を参照してください。 + + 既に説明したように、キー値はマークアップ拡張機能によって指定され、文字列値以外になる場合があります。 WPF シナリオの例としては、`x:Key` の値が [ComponentResourceKey](../../../docs/framework/wpf/advanced/componentresourcekey-markup-extension.md) になる場合が挙げられます。 特定のコントロールでは、スタイルを完全に置き換えることなく、そのコントロールの外観と動作の一部に影響を与えるカスタム スタイル リソースの型に対応するスタイル キーが公開されます。 このようなキーの例として、 が挙げられます。 + + WPF のマージされたディクショナリ機能では、キーの一意性およびキーの検索動作について考慮を要する点があります。 詳細については、「[マージされたリソース ディクショナリ](../../../docs/framework/wpf/advanced/merged-resource-dictionaries.md)」を参照してください。 + +## XAML 2009 + XAML 2009 は、`x:Key` を常に属性形式で提供するという制限を緩和します。 + + WPF では XAML 2009 の機能を使用できますが、マークアップ コンパイルされていない XAML に限定されます。 WPF 向けにマークアップ コンパイルされた XAML、および XAML の BAML 形式は、現在、XAML 2009 のキーワードと機能をサポートしていません。 + + XAML 2009 では、次の使用法により、`x:Key` 要素を指定できます。 + +### XAML 要素の使用 \(XAML 2009 のみ\) + +``` + + + keyObject + +... + +``` + +### XAML 値 + +||| +|-|-| +|`keyObject`|専用のディクショナリで指定された `object` のキーとして使用されるオブジェクトの、オブジェクト要素。| + +- この種類の使用方法のコンテナー\/親は、ここには示しません。 `object` は、専用のディクショナリの実装を表すオブジェクト要素の子であると想定されます。 `keyObject` は、その専用のディクショナリの実装のキーとして適切なオブジェクト インスタンス \(または値の型の値\) であると想定されます。 + +- WPF は、この使用方法を必要とするディクショナリを実装しません。 オブジェクト キーは XAML 言語のより一般的な機能であり、カスタム ディクショナリのシナリオで XAML でのディクショナリ作成が望まれる場合に有益であることがあります。 リソースに対して文字列以外のキーを使用する暗黙的なスタイルなどの WPF 機能については、別の方法によってキーを確立、または指定することができるので、オブジェクト キーを使用する必要はありません。 + +- *keyObject* は、直接オブジェクト インスタンスではなく、オブジェクト要素の形式で、マークアップ拡張機能の使用方法になる場合もあります。 + +## Silverlight の使用上の注意 + Silverlight 用の `x:Key` に関しては、別途ドキュメントが用意されています。 詳細については、「[XAML 名前空間 \(X:\) 言語機能 \(Silverlight\)](http://go.microsoft.com/fwlink/?LinkId=199081)」を参照してください。 + +## 参照 + [XAML リソース](../../../docs/framework/wpf/advanced/xaml-resources.md) + [リソースとコード](../../../docs/framework/wpf/advanced/resources-and-code.md) + [StaticResource のマークアップ拡張機能](../../../docs/framework/wpf/advanced/staticresource-markup-extension.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-member-directive.md b/docs/framework/xaml-services/x-member-directive.md new file mode 100644 index 00000000000..65eec0e5480 --- /dev/null +++ b/docs/framework/xaml-services/x-member-directive.md @@ -0,0 +1,49 @@ +--- +title: "x:Member Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 4d8394ef-644c-4331-b6c5-be855d392980 +caps.latest.revision: 5 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 5 +--- +# x:Member Directive +マークアップで XAML メンバーを宣言します。 + +## XAML オブジェクト要素の使用方法 + +``` + + + + + additionalMembers + + +``` + +## XAML 値 + +||| +|-|-| +|`className`|XAML 運用環境のバッキング クラスまたは部分クラスの名前。| +|`memberName`|定義されるプロパティのメンバーの名前。| + +## 解説 + .NET Framework XAML サービス実装では、 `x:Member` には直接の型のバッキングはありませんが、 クラスによってサポートされています。 XAML ノード ストリームでは、`x:Member` 要素は、XAML 言語の XAML 名前空間から `Member` という名前のメンバーとして表されます。 メンバー `Member` は、マークアップによって宣言された属性を保持します。 + + `Name` と `Type` の意味は、.NET Framework XAML サービス レベルでは割り当てられません。 これらは、特定のフレームワークによって課される可能性がある規則の下で後に解釈される文字列の値として、初期の XAML ノード ストリームに格納されます。 意味は、実装によって、XAML の名前および XAML 型の意味と揃えるか、バッキング型のシステムでのみ有効になることがあります。 + + マークアップでメンバーの定義を指定する手段として `x:Members` の実用的な使用法をサポートするため、メンバーを変更可能なクラスに関連付ける必要があります。 目的とするモデルは、`x:Members` が `x:Class` を指定する型のメンバーとして存在することです。 ただし、型とメンバーを関連付けたり、動的メンバーの定義を作成したりするメカニズムは、.NET Framework XAML サービス レベルではサポートされません。 これは、XAML のメンバーの定義をサポートするアプリケーション モデルがある個々のフレームワークに残されています。 一般に、XAML をマークアップ コンパイルするとともに、XAML と分離コードの統合または純粋な XAML からのアセンブリの生成を行う MSBUILD のビルド操作が、この機能をサポートするために必要です。 + +## Windows Workflow Foundation の x:Property + Windows Workflow Foundation では、 `x:Property` は、全体が XAML で構成されるカスタム アクティビティのメンバーや、分離コードを含むアクティビティ デザイナーの XAML で定義された動的メンバーを定義します。 `x:Class` は、XAML の運用環境のルート要素にも指定する必要があります。 これは、.NET Framework XAML サービス レベルの要件ではありませんが、全般にカスタム アクティビティと Windows Workflow Foundation の XAML をサポートする MSBUILD のビルド アクションによって XAML の運用環境が読み込まれるときの要件になります。 Windows Workflow Foundation は、`x:Property` `Type` 属性の目的とする値として、純粋な XAML の型名を使用しません。代わりに、このドキュメントで説明されていない規約を使用します。 詳細については、「[DynamicActivity の作成](http://msdn.microsoft.com/library/dd807392.aspx)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/xaml-services/x-members-directive.md b/docs/framework/xaml-services/x-members-directive.md new file mode 100644 index 00000000000..7d0676bd703 --- /dev/null +++ b/docs/framework/xaml-services/x-members-directive.md @@ -0,0 +1,46 @@ +--- +title: "x:Members Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 155b393d-3b49-4c5a-8c9e-b3d9893af4e4 +caps.latest.revision: 5 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 5 +--- +# x:Members Directive +マークアップで定義された一連の \(親要素の x:Class に適用される\) メンバーを保持します。 + +## XAML 属性の使用方法 + +``` + + + + oneOrMoreMembers + +``` + +## XAML 値 + +||| +|-|-| +|`className`|XAML 稼動環境のバッキング クラスまたは部分クラスの名前。 「解説」を参照してください。| +|`oneOrMoreMembers`|メンバーの定義を表す 1 つ以上のオブジェクト要素。 通常、これらは `x:Property` オブジェクト要素です。 「解説」を参照してください。| + +## 解説 + .NET Framework XAML サービス実装では、`x:Members` に対するバッキング クラスや基になるメンバー実装は存在しません。 `x:Members` は、あらゆる型のメンバーとして存在できる特殊な XAML メンバーです。 XAML ノード ストリームにおいて、`x:Members` は、XAML 言語の XAML 名前空間の `Members` という名前のメンバーとして表されます。 メンバー `Members` には、`Member` オブジェクトの読み取り専用のジェネリック リストが格納されます。 通常のマークアップでは、個々のメンバーが `x:Property` プロパティの要素として指定されます。 `x:Property` は、型のプロパティ専用の明確な型であり、`x:Member` に割り当てることができます。 詳細については、「[x:Property Directive](../../../docs/framework/xaml-services/x-property-directive.md)」を参照してください。 + + マークアップでメンバー定義を指定する手段として `x:Members` を実際に使用できるようにするためには、変更可能なクラスにメンバーが関連付けられている必要があります。 想定されているモデルは、`x:Class` を指定する型のメンバーとして `x:Members` が存在することです。 ただし、型とメンバーを関連付けたり動的なメンバー定義を生成したりするためのメカニズムは、.NET Framework XAML サービス レベルではサポートされていません。 この点は、XAML に基づくメンバー定義に対応したアプリケーション モデルを持つ個々のフレームワークに委ねられています。 通常、そのような機能をサポートするためには、XAML をマークアップ コンパイルし、分離コードと統合するか、純粋な XAML 由来のアセンブリを生成する MSBUILD ビルド アクションが必要です。 + +## Windows Workflow Foundation の x:Members + Windows Workflow Foundation の場合、`x:Members` に格納されるのは、完全に XAML で構成されたカスタム アクティビティのメンバーか、またはアクティビティ デザイナー用に分離コードと共に XAML で定義された動的メンバーです。 また、XAML 稼動環境のルート要素には、`x:Class` が指定されている必要があります。 これは、.NET Framework XAML サービス レベルの要件ではありませんが、カスタム アクティビティおよび Windows Workflow Foundation XAML 全般をサポートする MSBUILD ビルド アクションによって XAML 稼動環境が読み込まれた場合には、これが要件となります。 `x:Class` を宣言するオブジェクト要素のマークアップにおいて、`x:Members` は最初の子要素である必要があります。 \ No newline at end of file diff --git a/docs/framework/xaml-services/x-name-directive.md b/docs/framework/xaml-services/x-name-directive.md new file mode 100644 index 00000000000..58d0391a0ab --- /dev/null +++ b/docs/framework/xaml-services/x-name-directive.md @@ -0,0 +1,79 @@ +--- +title: "x:Name Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "x:Name" + - "xName" + - "Name" +helpviewer_keywords: + - "x:Name attribute [XAML Services]" + - "XAML [XAML Services], x:Name attribute" + - "Name attribute in XAML [XAML Services]" +ms.assetid: b7e61222-e8cf-48d2-acd0-6df3b7685d48 +caps.latest.revision: 27 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 27 +--- +# x:Name Directive +XAML で定義された XAML 名前スコープ内の要素を一意に識別します。 XAML を基に作成されたオブジェクト グラフに対し実行時にアクセスする動作がフレームワークに実装されている場合、またはそのような API が存在する場合、XAML 名前スコープとその一意性モデルを、インスタンス化されたオブジェクトに適用することができます。 + +## XAML 属性の使用方法 + +``` + +``` + +## XAML 値 + +||| +|-|-| +|`XAMLNameValue`|[XamlName の文法](../../../docs/framework/xaml-services/xamlname-grammar.md)の制限に準拠する文字列。| + +## 解説 + フレームワークの基になるプログラミング モデルに適用後の `x:Name` は、コンストラクターによって返されるオブジェクト参照またはインスタンスを保持する変数と等価と見なすことができます。 + + `x:Name` ディレクティブの使用上、その値は、XAML 名前スコープ内で一意である必要があります。 既定では、.NET Framework XAML サービス API によって使用された場合、プライマリ XAML 名前スコープは、単一の XAML 稼動環境の XAML ルート要素で定義され、その XAML 稼動環境内の要素を含みます。 特定のシナリオに対応するために、フレームワークによって追加の個別の \(単一の XAML 稼動環境内に出現する\) XAML 名前スコープを定義できます。 たとえば、WPF では、新しい XAML 名前スコープも、その XAML 稼動環境で定義される任意のテンプレートによって定義および作成されます。 XAML 名前スコープの詳細 \(WPF に関して記述されていますが、多くの XAML 名前スコープの概念にも関連しています\) については、「[WPF XAML 名前スコープ](../../../docs/framework/wpf/advanced/wpf-xaml-namescopes.md)」を参照してください。 + + 通常、`x:Name` は、`x:Key` も使用する状況には適用しないでください。 特定の既存フレームワークによる XAML 実装では、`x:Key` と `x:Name` の間に代替の概念を導入していますが、それは推奨されるプラクティスではありません。 .NET Framework XAML サービスでは、 などの名前\/キー情報を処理するときに、このような代替概念はサポートしていません。 + + `x:Name` の許可規則と名前の一意性の適用は、特定の実装フレームワークによって潜在的に定義されます。 ただし、.NET Framework XAML サービスと併用できるように、XAML 名前スコープの一意性に対するフレームワーク定義は、このドキュメントの 情報の定義と整合性を維持し、その情報の適用先に関して同じ規則を使用する必要があります。 たとえば、[!INCLUDE[TLA#tla_winclient](../../../includes/tlasharptla-winclient-md.md)] 実装は、さまざまなマークアップ要素を個別の 範囲 \(リソース ディクショナリ、ページ レベルの XAML によって作成された論理ツリー、テンプレート、その他の遅延コンテンツなど\) に分け、その後、各 XAML 名前スコープで XAML 名の一意性を適用します。 + + .NET Framework XAML サービス XAML オブジェクト ライターを使用するカスタム型の場合、型の `x:Name` にマッピングするプロパティを設定または変更できます。 この動作は、型定義コード内の で、マッピングするプロパティの名前を参照することによって定義します。 は型レベルの属性です。 + + .NET Framework XAML サービスを使用すると、 インターフェイスを実装することで、フレームワークに依存しない方法で、XAML 名前スコープをサポートするバッキング ロジックを定義できます。 + +## WPF の使用上の注意 + [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] アプリケーションの標準のビルド構成では、XAML、部分クラス、および分離コードを使用します。ここで指定した `x:Name` は、[!INCLUDE[TLA2#tla_xaml](../../../includes/tla2sharptla-xaml-md.md)] がマークアップ コンパイル ビルド タスクによって処理されるときに、基になるコードで生成されるフィールドの名前となり、そのフィールドはオブジェクトへの参照を保持します。作成されるフィールドは、既定では内部型です。 [x:FieldModifier 属性](../../../docs/framework/xaml-services/x-fieldmodifier-directive.md)を指定することによって、フィールド アクセスを変更できます。 WPF および Silverlight では、マークアップ コンパイルによって、まず部分クラスにフィールドが定義され、名前が付けられます。ただし、初期状態では値は空です。 次に、`InitializeComponent` という名前で生成されたメソッドがクラスのコンストラクター内から呼び出されます。 `InitializeComponent` は、一連の `FindName` 呼び出しで構成されます。このとき、部分クラスの XAML 定義部に存在する `x:Name` の値が、それぞれの呼び出しの入力文字列として使用されます。 その戻り値が同名のフィールド参照に代入され、XAML の解析に基づいて作成されたオブジェクトがフィールドの値として設定されます。 `InitializeComponent` が実行されることで、XAML で定義されたオブジェクトの参照が必要になったときに、`FindName` を明示的に呼び出さなくても、いつでも `x:Name`\/フィールド名を直接使用して、ランタイム オブジェクト グラフを参照できるようになります。 + + [!INCLUDE[TLA#tla_visualb](../../../includes/tlasharptla-visualb-md.md)] のターゲットを使用し `Page` ビルド アクションを持つ XAML ファイルを含む WPF アプリケーションでは、個別の参照プロパティはコンパイル時に作成されます。このコンパイルでは、`x:Name` を持つすべての要素に `WithEvents` キーワードが追加され、イベント ハンドラー デリゲートの `Handles` 構文をサポートします。 このプロパティは常にパブリックです。 詳細については、「[Visual Basic と WPF のイベント処理](../../../docs/framework/wpf/advanced/visual-basic-and-wpf-event-handling.md)」を参照してください。 + + WPF XAML プロセッサは、`x:Name` を使用して、読み込み時に XAML 名前スコープに名前を登録します。これは、そのページが、ビルド アクションによってマークアップ コンパイルされない場合 \(たとえば、リソース ディクショナリの Loose XAML\) にも当てはまります。 このような動作になっているのは、 バインディングに `x:Name` が必要になる場合があるためです。 詳細については、「[データ バインドの概要](../../../docs/framework/wpf/data/data-binding-overview.md)」を参照してください。 + + 前述のとおり、`x:Name` \(または `Name`\) は、`x:Key` も使用する状況では適用しないでください。 [!INCLUDE[TLA2#tla_winclient](../../../includes/tla2sharptla-winclient-md.md)] は、この動作を適用する方法として、自らを XAML 名前スコープとして定義するにもかかわらず、 API については Not Implemented または null 値を返すという特殊な動作をするためです。 XAML で定義された 内に WPF XAML パーサーが `Name` または `x:Name` を検出した場合、いずれの XAML 名前スコープにも名前は追加されません。 その名前を XAML 名前スコープから見つけようとしても、`FindName` メソッドからは有効な結果は返されません。 + +### x:Name および Name + WPF アプリケーションで `x:Name` 属性をまったく使用せずに済むケースも多くあります。これは、 などのいくつかの重要な基本クラスの既定の XAML 名前空間内で指定される `Name` 依存関係プロパティが、同じ機能を満たすからです。 それでも、フレームワーク レベルで `Name` プロパティのない要素へのコード アクセスが重要となる XAML および WPF の一般的なシナリオもあります。 たとえば、一部のアニメーション サポート クラスおよびストーリーボード サポート クラスは、`Name` プロパティをサポートしていません。しかし、アニメーションを制御するためには、多くの場合、それらをコード内で参照する必要があります。 XAML で作成するタイムラインと変換を後でコードから参照するには、その属性として `x:Name` を指定する必要があります。 + + をクラスのプロパティとして使用できる場合、 と `x:Name` のどちらも属性として使用できますが、両方を同じ要素で指定すると解析例外が発生します。 XAML をマークアップ コンパイルすると、マークアップ コンパイル時に例外が発生します。それ以外の場合は、読み込み時に例外が発生します。 + + は、XAML 属性構文や を使用するコードで設定できます。ただし、コードから プロパティを設定した場合、XAML が既に読み込まれているほとんどの状況では、これを表すフィールド参照が XAML 名前スコープ内に作成されない場合があるので注意してください。 コードに を設定する代わりに、コードから適切な名前スコープに対して メソッドを使用します。 + + は、内部テキストと一緒にプロパティ要素構文を使用して設定することもできますが、これは一般的ではありません。 対照的に、`x:Name` は、XAML プロパティ要素構文で設定したり、 を使用するコードで設定したりすることはできません。ディレクティブであるため、オブジェクトで要素の属性構文を使用する場合にのみ設定できます。 + +## Silverlight の使用上の注意 + Silverlight 用の `x:Name` に関しては、別途ドキュメントが用意されています。 詳細については、「[XAML 名前空間 \(x:\) 言語機能 \(Silverlight\)](http://go.microsoft.com/fwlink/?LinkId=199081)」を参照してください。 + +## 参照 + + + [WPF のツリー](../../../docs/framework/wpf/advanced/trees-in-wpf.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-null-markup-extension.md b/docs/framework/xaml-services/x-null-markup-extension.md new file mode 100644 index 00000000000..c4453bfdc3f --- /dev/null +++ b/docs/framework/xaml-services/x-null-markup-extension.md @@ -0,0 +1,57 @@ +--- +title: "x:Null Markup Extension | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "NullExtension" + - "x:NullExtension" + - "x:Null" + - "Null" + - "xNull" +helpviewer_keywords: + - "Null markup extension in XAML [XAML Services]" + - "x:Null markup extension [XAML Services]" + - "XAML [XAML Services], x:Null markup extension" +ms.assetid: 2e3ccc21-4996-481d-91b5-3910d8b3bfa3 +caps.latest.revision: 20 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 20 +--- +# x:Null Markup Extension +XAML メンバーの値として `null` を指定します。 + +## XAML 属性の使用方法 + +``` + +``` + +## 解説 + [!INCLUDE[TLA#tla_cshrp](../../../includes/tlasharptla-cshrp-md.md)] および [!INCLUDE[TLA#tla_cpp](../../../includes/tlasharptla-cpp-md.md)] における null 参照のキーワードは null です。 null 参照の [!INCLUDE[TLA#tla_visualb](../../../includes/tlasharptla-visualb-md.md)] キーワードは `Nothing` ですが、どの分離コード言語が XAML と関連付けられているかに関係なく、XAML の使用方法としては常に `{x:Null}` を使用してください。 + + `x:Null` のマークアップ拡張機能には、設定可能なプロパティはありません。 + + null の使用方法は多くの場合、CLR 値の XAML メンバーの公開と関連付けられます。 + + XAML のあらゆるマークアップ拡張機能と同様、`x:Null` マークアップ拡張機能は、属性値の処理をリテラルやイベント ハンドラー参照以外にエスケープする場合、中かっこ \(`{,}`\) を使用します。 属性構文は、このマークアップ拡張機能で最も多く使用される構文です。 `x:Null` マークアップ拡張機能では位置指定パラメーターや構築引数は使用されないので、オブジェクト要素構文 `` は技術的には使用できますが、使用されることはまれです。 + + マークアップ拡張機能については、「[マークアップ拡張機能と WPF XAML](../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md)」を参照してください。 + + .NET Framework XAML サービスでは、このマークアップ拡張機能の処理は、 クラスによって定義されます。 + +## WPF の使用上の注意 + `null` は、参照型の依存関係プロパティの初期未設定値であるとは限らないことに注意してください。 初期既定値は、依存関係プロパティごとに異なることがあります。また、プロパティ固有のメタデータに基づいていることがあります。 依存関係プロパティの多くは、その検証コールバックの実装により、マークアップまたはコードのいずれによる場合でも、`null` を値として許容しません。 依存関係プロパティの詳細については、「[依存関係プロパティの概要](../../../docs/framework/wpf/advanced/dependency-properties-overview.md)」を参照してください。 + +## 参照 + + [XAML の概要 \(WPF\)](../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) + [マークアップ拡張機能と WPF XAML](../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-property-directive.md b/docs/framework/xaml-services/x-property-directive.md new file mode 100644 index 00000000000..b5c1c1bcc80 --- /dev/null +++ b/docs/framework/xaml-services/x-property-directive.md @@ -0,0 +1,50 @@ +--- +title: "x:Property Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 618555a8-c893-455c-810f-ac54cd24ef10 +caps.latest.revision: 6 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 6 +--- +# x:Property Directive +マークアップで XAML プロパティを宣言します。 + +## XAML オブジェクト要素の使用方法 + +``` + + + + +``` + +## XAML オブジェクト要素の使用方法 + +``` + + + + + +``` + +## XAML 値 + +||| +|-|-| +|`instancexName`|参照先のインスタンスの `x:Name` 値 \(または によって識別されるプロパティの値\)。| + +## 解説 + `x:Reference` は、WPF など、特定のフレームワークでは他の方法によって実装されていた要素の参照の概念に対して、XAML 言語レベルのサポートを提供します。 + +## x:Reference と WPF + WPF と XAML 2006 では、要素の参照は、 バインディングのフレームワークレベル機能によって対応していました。 大半の WPF アプリケーションおよびシナリオでは、 バインディングを継続して使用する必要があります。 ただし、データ コンテキストまたはスコープに関するその他の考慮事項によってデータ バインディングが実用的ではなくなる場合や、マークアップ コンパイルを伴わない場合などは例外です。 + + `x:Reference` は、XAML 2009 で定義されている構造です。 WPF では XAML 2009 の機能を使用できますが、WPF マークアップ コンパイルされていない XAML に限定されます。 マークアップ コンパイルされた XAML、および XAML の BAML 形式は、現在、XAML 2009 言語のキーワードと機能をサポートしていません。 \ No newline at end of file diff --git a/docs/framework/xaml-services/x-shared-attribute.md b/docs/framework/xaml-services/x-shared-attribute.md new file mode 100644 index 00000000000..32c1e9bb2cd --- /dev/null +++ b/docs/framework/xaml-services/x-shared-attribute.md @@ -0,0 +1,62 @@ +--- +title: "x:Shared Attribute | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "XAML [XAML Services], x:Shared attribute" + - "x:Shared attribute [XAML Services]" + - "Shared attribute in XAML [XAML Services]" +ms.assetid: c8cff434-2785-405f-9f95-16deb34c9e64 +caps.latest.revision: 16 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 16 +--- +# x:Shared Attribute +`false` に設定されると、WPF リソース取得動作を変更して、すべての要求で同じインスタンスを共有するのではなく、属性付きリソースに対して要求があるたびに新しいインスタンスが作成されるようにします。 + +## XAML 属性の使用方法 + +``` + + + +``` + +## 解説 + `x:Shared` は、XAML 言語 XAML 名前空間にマッピングされ、.NET Framework XAML サービスおよびその XAML リーダーによって有効な XAML 言語要素として認識されます。 ただし、`x:Shared` の規定の機能は、WPF アプリケーションおよび WPF XAML パーサーのみに関連しています。 WPF では、`x:Shared` は、WPF 内に存在するオブジェクトに適用される場合にだけ属性として有用です。 その他の用途では、解析例外や他のエラーはスローされませんが、効果はありません。 + + `x:Shared` の意味は、XAML 言語仕様では指定されていません。 .NET Framework XAML サービスに基づいている実装など、その他の XAML 実装は、必ずしもリソース共有をサポートしているとは限りません。 このような XAML 実装は、`x:Shared` 値も使用するフレームワークのサポート時と同様に動作します。 + + WPF では、リソースに対する `x:Shared` の既定の状態は `true` です。 この状態は、指定したすべてのリソース要求が常に同じインスタンスを返すことを意味します。 + + などのリソース API をとおして返されるオブジェクトを変更するか、または 内で直接オブジェクトを変更すると、元のリソースが変更されます。 そのリソースへの参照が動的リソース参照であった場合、そのリソースのコンシューマーは変更されたリソースを取得するようになります。 + + リソースへの参照が静的リソース参照であった場合は、[!INCLUDE[TLA2#tla_xaml](../../../includes/tla2sharptla-xaml-md.md)] 処理後にリソースを変更しても無意味です。 静的リソース参照と動的リソース参照の詳細については、「[XAML リソース](../../../docs/framework/wpf/advanced/xaml-resources.md)」を参照してください。 + + `x:Shared="true"` は既定の設定であるため、これを明示的に指定することはあまりありません。 WPF オブジェクト モデルには `x:Shared` と同等の直接的なコードはありません。そのようなコードは、XAML の使用方法でのみ指定でき、既定の WPF 動作によって、または .NET Framework XAML サービスとその XAML リーダーを使用して処理される場合は読み込みパス上の中間 XAML ノード ストリーム内で処理されることが必要です。 + + `x:Shared="false"` を指定するシナリオの 1 つに、 派生クラスまたは 派生クラスをリソースとして定義し、その要素リソースをコンテンツ モデルに導入する場合があります。 `x:Shared="false"` を指定することで、要素リソースを同じコレクション \( など\) に複数回導入できます。 `x:Shared="false"` を指定しない場合は、コレクションの内容が一意であることが強制されるため、この操作が無効になります。 ただし、`x:Shared="false"` の動作は、基本的には同じインスタンスを返すのではなく、リソースの同一インスタンスを新たに作成します。 + + `x:Shared="false"` を指定するもう 1 つのシナリオは、アニメーションの値用に リソースを使用し、そのリソースをアニメーションごとに変更する場合です。 + + `false` 文字列の処理では、大文字と小文字が区別されません。 + + WPF では、`x:Shared` は、次の条件下でのみ有効となります。 + +- `x:Shared` が指定された項目を含んでいる をコンパイルする必要があります。 を Loose XAML 内に含めたり、テーマに使用したりすることはできません。 + +- 項目を含んでいる を、別の 内に入れ子にすることはできません。 たとえば、既に の項目となっている 内にある 内の項目には、`x:Shared` を使用できません。 + +## 参照 + + [XAML リソース](../../../docs/framework/wpf/advanced/xaml-resources.md) + [基本要素](../../../docs/framework/wpf/advanced/base-elements.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-static-markup-extension.md b/docs/framework/xaml-services/x-static-markup-extension.md new file mode 100644 index 00000000000..84114e469b0 --- /dev/null +++ b/docs/framework/xaml-services/x-static-markup-extension.md @@ -0,0 +1,88 @@ +--- +title: "x:Static Markup Extension | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "StaticExtension" + - "xStatic" + - "x:Static" +helpviewer_keywords: + - "x:Static markup extension [XAML Services]" + - "Static markup extension in XAML [XAML Services]" + - "XAML [XAML Services], x:Static markup extension" +ms.assetid: 056aee79-7cdd-434f-8174-dfc856cad343 +caps.latest.revision: 25 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 25 +--- +# x:Static Markup Extension +[!INCLUDE[TLA#tla_cls](../../../includes/tlasharptla-cls-md.md)] に準拠した方法で定義された静的な値渡しコード エンティティを参照します。 参照先の静的プロパティを使用して、XAML でプロパティの値を指定できます。 + +## XAML 属性の使用方法 + +``` + +``` + +## XAML 値 + +||| +|-|-| +|`prefix`|省略可能です。 割り当てられた、既定以外の XAML 名前空間を参照するプレフィックス。 既定の XAML 名前空間から派生した静的プロパティを参照する機会はほとんどないので、実際の用途では `prefix` が明示的に使用されます。 「解説」を参照してください。| +|`typeName`|必ず指定します。 目的の静的なメンバーを定義する型の名前です。| +|`staticMemberName`|必ず指定します。 目的の静的な値メンバーの名前 \(定数、静的プロパティ、フィールド、または列挙値\)。| + +## 解説 + 参照されるコード エンティティは次のいずれかにする必要があります。 + +- 定数 + +- 静的プロパティ + +- フィールド + +- 列挙値 + + 非静的プロパティなど、他のコード エンティティを指定すると、XAML のマークアップ コンパイル時にエラーが発生したり、XAML の読み込み時に解析例外が発生したりします。 + + 現在の XAML ドキュメントの既定の XAML 名前空間内にない静的なフィールドやプロパティに対して `x:Static` 参照を作成することはできますが、これにはプレフィックスの割り当てが必要です。 ほとんどの場合、XAML 名前空間は、XAML ドキュメントのルート要素で定義されます。 + + 静的プロパティのルックアップ操作は、既定の XAML スキーマ コンテキストで実行する場合、.NET Framework XAML サービスおよびその XAML リーダーと XAML ライターで実行できます。 この XAML スキーマ コンテキストでは、CLR リフレクションを使用して、オブジェクト グラフの構築に必要な静的な値を指定できます。 指定する `typeName` は、実際には XAML の型名であって、CLR の型名ではありません。ただし、既定の XAML スキーマ コンテキストを使用する場合、またはすべて CLR ベースの既存の XAML 実装フレームワークを使用する場合、両者は基本的には同じ名前となります。 + + 直接にはプロパティの値の型ではない `x:Static` 参照を作成する際には注意が必要です。 XAML の処理シーケンスでは、マークアップ拡張機能で指定した値に対して、さらに値変換が行われることはありません。 これは、`x:Static` 参照によって作成されるのがテキスト文字列でも同じであり、テキスト文字列に基づく属性値の値変換は、通常、特定のメンバーまたは戻り値の型の任意のメンバーに対して行われます。 + + 属性構文は、このマークアップ拡張機能で使用される最も一般的な構文です。 `x:Static` 識別子文字列の後に設定される文字列トークンは、基になる 拡張クラスの 値として割り当てられます。 + + これ以外にも、技術的には可能な XAML の使用方法としては、次の 2 種類が挙げられます。 ただし、次の使用方法は必要以上に冗長なので、あまり一般的ではありません。 + + **オブジェクト要素構文:** `` + + **初期化文字列の明示的なメンバー プロパティを含む属性構文:** `<``object````property``="{x:Static Member=``prefix``:``typeName``.``staticMemberName``}" .../>` + + .NET Framework XAML サービス実装では、このマークアップ拡張機能の処理は、 クラスによって定義されます。 + + `x:Static` はマークアップ拡張機能です。 XAML のすべてのマークアップ拡張機能では、それぞれの属性構文で `{` と `}` の 2 つの記号を使用します。これは規約であり、これに従って XAML プロセッサは、マークアップ拡張機能で値を指定する必要があることを認識します。 マークアップ拡張機能の詳細については、「[Markup Extensions for XAML Overview](../../../docs/framework/xaml-services/markup-extensions-for-xaml-overview.md)」を参照してください。 + +## WPF の使用上の注意 + WPF プログラミングで使用する既定の XAML 名前空間には、有用な静的プロパティはそれほど数多くは用意されていません。また、有用な静的プロパティのほとんどで、型コンバーターなどの機能がサポートされており、特に `{x:Static}` を使用する必要はありません。 次のいずれかに該当する場合、静的プロパティに対して、XAML 名前空間のプレフィックスを割り当てる必要があります。 + +- WPF 内に存在するが、WPF の既定の XAML 名前空間 \([!INCLUDE[TLA#tla_wpfxmlnsv1](../../../includes/tlasharptla-wpfxmlnsv1-md.md)]\) の一部ではない型を参照している場合。 これは、`x:Static` を使用する非常に一般的なシナリオです。 たとえば、 クラスの静的プロパティを参照するためには、 CLR 名前空間と mscorlib アセンブリに割り当てられた XAML 名前空間を持つ `x:Static` 参照を使用できます。 + +- カスタム アセンブリの型を参照している場合。 + +- WPF アセンブリ内に存在する型を参照しているが、その型が WPF の既定の XAML 名前空間の一部になるように割り当てられた名前空間以外の CLR 名前空間内にある場合。 WPF の既定の XAML 名前空間への CLR 名前空間の割り当ては、各種 WPF アセンブリ \(この概念の詳細については、「[XAML 名前空間および WPF XAML の名前空間の割り当て](../../../docs/framework/wpf/advanced/xaml-namespaces-and-namespace-mapping-for-wpf-xaml.md)」を参照\) の定義に基づいて実行されます。 未割り当ての CLR 名前空間は、その CLR 名前空間の大部分が、 など、通常、XAML では使用されないクラス定義で構成される場合に存在できます。 + + WPF でのプレフィックスおよび XAML 名前空間の使用方法の詳細については、「[XAML 名前空間および WPF XAML の名前空間の割り当て](../../../docs/framework/wpf/advanced/xaml-namespaces-and-namespace-mapping-for-wpf-xaml.md)」を参照してください。 + +## 参照 + [x:Type Markup Extension](../../../docs/framework/xaml-services/x-type-markup-extension.md) + [Types Migrated from WPF to System.Xaml](../../../docs/framework/xaml-services/types-migrated-from-wpf-to-system-xaml.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-subclass-directive.md b/docs/framework/xaml-services/x-subclass-directive.md new file mode 100644 index 00000000000..f8af9fc9aa7 --- /dev/null +++ b/docs/framework/xaml-services/x-subclass-directive.md @@ -0,0 +1,68 @@ +--- +title: "x:Subclass Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "Subclass" + - "xSubclass" + - "x:Subclass" +helpviewer_keywords: + - "x:Subclass attribute [XAML Services]" + - "XAML [XAML Services], x:Subclass attribute" + - "Subclass attribute in XAML [XAML Services]" +ms.assetid: 99f66072-8107-4362-ab99-8171dc83b469 +caps.latest.revision: 20 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 20 +--- +# x:Subclass Directive +`x:Class` も提供される場合の XAML マークアップのコンパイル動作を変更します。 `x:Class` クラスに基づいて部分クラスを作成する代わりに、提供された `x:Class` を中間クラスとして作成し、ユーザーが提供した派生クラスは `x:Class` に基づくものと想定されます。 + +## XAML 属性の使用方法 + +``` + + ... + +``` + +## XAML 値 + +||| +|-|-| +|`namespace`|省略可能です。 `classname` を含む CLR 名前空間を指定します。 `namespace` を指定する場合は、`namespace` と `classname` をドット \(.\) で区切ります。| +|`classname`|必ず指定します。 読み込まれた XAML、およびその XAML の分離コードを接続する部分クラスの CLR 名を指定します。 「解説」を参照してください。| +|`subclassNamespace`|省略可能です。 各名前空間が他の名前空間を解決できる場合、`namespace` と異なっていてもかまいません。 `subclassName` を含む CLR 名前空間を指定します。 `subclassName` を指定する場合は、`subclassNamespace` と `subclassName` をドット \(.\) で区切ります。| +|`subclassName`|必ず指定します。 サブクラスの CLR 名を指定します。| + +## 依存関係 + [x:Class Directive](../../../docs/framework/xaml-services/x-class-directive.md) も同じオブジェクトに提供される必要があり、そのオブジェクトは XAML 稼動環境のルート要素である必要があります。 + +## 解説 + `x:Subclass` は、主として、部分クラス宣言をサポートしない言語のためのものです。 + + `x:Subclass` として使用されるクラスは入れ子のクラスにすることはできず、`x:Subclass` は、「依存関係」のセクションで説明したとおり、ルート オブジェクトを参照している必要があります。 + + それ以外の点について、`x:Subclass` の概念的な意味は、.NET Framework XAML サービス実装では定義されていません。 これは、.NET Framework XAML サービスの動作で、XAML マークアップと対応するコードが関連付けられるプログラミング モデル全体が指定されていないためです。 `x:Class` と `x:Subclass` に関連するその他の概念の実装は、XAML マークアップ、コンパイルされたマークアップ、および CLR ベースの分離コードを関連付ける方法を定義するために、プログラミング モデルまたはアプリケーション モデルを使用する特定のフレームワークによって実行されます。 それぞれのフレームワークは、一部の動作を実現する独自のビルド アクションや、ビルド環境に含める必要のある特定のコンポーネントを備えています。 フレームワーク内では、分離コードで使用される特定の CLR 言語に応じてビルド アクションは変化することもあります。 + +## WPF の使用上の注意 + `x:Subclass` は、ページ ルート上に配置することも、既に `x:Class` を持つアプリケーション定義内の ルート上に配置することもできます。 `x:Subclass` を、ページ ルートまたはアプリケーション ルート以外の要素で宣言すると、または `x:Class` が存在しない場所で指定すると、コンパイル時エラーが発生します。 + + `x:Subclass` のシナリオで正しく動作する派生クラスを作成するのは、かなり複雑な作業です。 中間ファイル \(マークアップ コンパイルによってプロジェクトの obj フォルダーに生成される .g ファイルで、名前には .xaml ファイル名が含まれる\) の確認が必要になる場合があります。 これらの中間ファイルは、コンパイル済みアプリケーション内の結合された部分クラスにおいて、特定のプログラミング構造の起点を特定するのに役立ちます。 + + コンパイル時に中間クラスで作成されるハンドラーのスタブをオーバーライドするには、派生クラス内のイベント ハンドラーが `internal override` \([!INCLUDE[TLA#tla_visualb](../../../includes/tlasharptla-visualb-md.md)] では `Friend Overrides`\) でなければなりません。 それ以外の場合は、派生クラスの実装が中間クラスの実装を隠し \(シャドウ\)、中間クラスのハンドラーは呼び出されません。 + + `x:Class` と `x:Subclass` の両方を定義する場合、`x:Class` によって参照されるクラスの実装を提供する必要はありません。 コンパイラが中間ファイルで作成するクラスについてガイダンスを得られるよう、`x:Class` 属性を使用して名前を指定することだけが必要です \(この場合、コンパイラは既定の名前を選択しません\)。 `x:Class` クラスに実装を提供してもかまいませんが、これは `x:Class` と `x:Subclass` の両方を使用する標準的なシナリオでは行いません。 + +## 参照 + [x:Class Directive](../../../docs/framework/xaml-services/x-class-directive.md) + [WPF における XAML とカスタム クラス](../../../docs/framework/wpf/advanced/xaml-and-custom-classes-for-wpf.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-type-markup-extension.md b/docs/framework/xaml-services/x-type-markup-extension.md new file mode 100644 index 00000000000..70dfaeedcb4 --- /dev/null +++ b/docs/framework/xaml-services/x-type-markup-extension.md @@ -0,0 +1,93 @@ +--- +title: "x:Type Markup Extension | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "x:TypeExtension" + - "Type" + - "x:Type" + - "xType" + - "TypeExtension" +helpviewer_keywords: + - "x:Type markup extension [XAML Services]" + - "XAML [XAML Services], x:Type markup extension" + - "XAML [XAML Services], TargetType attribute" + - "TargetType attribute [XAML Services]" + - "Type markup extension in XAML [XAML Services]" +ms.assetid: e0e0ce6f-e873-49c7-8ad7-8b840eb353ec +caps.latest.revision: 27 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 27 +--- +# x:Type Markup Extension +指定した XAML 型の基になる型の CLR オブジェクトを指定します。 + +## XAML 属性の使用方法 + +``` + +``` + +## XAML オブジェクト要素の使用方法 + +``` + +``` + +## XAML 値 + +||| +|-|-| +|`prefix`|省略可能です。 既定以外の XAML 名前空間を割り当てるプレフィックス。 ほとんどの場合、プレフィックスは指定する必要がありません。 「解説」を参照してください。| +|`typeNameValue`|必ず指定します。 現在の既定の XAML 名前空間で解決できる型名。`prefix` を指定した場合はその割り当てられたプレフィックス。| + +## 解説 + `x:Type` マークアップ拡張機能は、[!INCLUDE[TLA#tla_cshrp](../../../includes/tlasharptla-cshrp-md.md)] の `typeof()` 演算子または [!INCLUDE[TLA#tla_visualb](../../../includes/tlasharptla-visualb-md.md)] の `GetType` 演算子に似た機能を備えています。 + + `x:Type` マークアップ拡張機能は、型 を使用するプロパティの文字列からの変換動作を指定します。 入力は XAML 型です。 入力 XAML 型と出力 CLR との関係は、XAML スキーマ コンテキストとそのコンテキストが提供する サービスに基づいて必須の を検索した後、出力 が入力 であることです。 + + .NET Framework XAML サービスでは、このマークアップ拡張機能の処理は、 クラスによって定義されます。 + + 特定のフレームワーク実装では、値として を受け取る一部のプロパティは、型の名前 \(型の `Name` の文字列値\) を直接受け入れることができます。 ただし、このような動作を実装するのは複雑なシナリオとなります。 例については、後の「WPF の使用上の注意」を参照してください。 + + 属性構文は、このマークアップ拡張機能で使用される最も一般的な構文です。 `x:Type` 識別子文字列の後に設定される文字列トークンは、基になる 拡張クラスの 値として割り当てられます。 CLR 型に基づく、.NET Framework XAML サービスの既定の XAML スキーマ コンテキストでは、この属性の値は、対象の型の になるか、または、既定以外の XAML 名前空間割り当ての場合はプレフィックスが付加された を含みます。 + + `x:Type` マークアップ拡張機能は、オブジェクト要素構文で使用できます。 この場合、拡張機能を正しく初期化するには、 プロパティの値を指定する必要があります。 + + `x:Type` マークアップ拡張機能は詳細出力属性として使用することもできますが、この用法は一般的ではありません \(`<``object` `property``="{x:Type TypeName=``typeNameValue``}" .../>`\)。 + +## WPF の使用上の注意 + +### 既定の XAML 名前空間および型の割り当て + WPF プログラミングの既定の XAML 名前空間には、通常の XAML シナリオで必要なほとんどの XAML 型が含まれるため、通常は、XAML 型値を参照するときにプレフィックスを回避できます。 カスタム アセンブリ内の型を参照している場合、または WPF アセンブリ内に存在する型ではあるが、その型がある CLR 名前空間が既定の XAML 名前空間に割り当てられていない場合は、プレフィックスの割り当てが必要になることがあります。 プレフィックス、XML 名前空間、および CLR 名前空間の割り当ての詳細については、「[XAML 名前空間および WPF XAML の名前空間の割り当て](../../../docs/framework/wpf/advanced/xaml-namespaces-and-namespace-mapping-for-wpf-xaml.md)」を参照してください。 + +### 文字列としての型名をサポートする型プロパティ + WPF は、`x:Type` マークアップ拡張機能を使用する必要なく、型 の一部のプロパティの値を指定できる技術をサポートしています。 代わりに、型に名前を付ける文字列として値を指定できます。 この例としては、 および があります。 型コンバーターとマークアップ拡張機能は、どちらもこの動作をサポートしていません。 これは、 を通じて実装される遅延動作です。 + + Silverlight も同様の規則となります。 実際、Silverlight の XAML 言語の対応状況を見ると、現在 `{x:Type}` はサポートされていません。WPF から Silverlight への XAML の移行支援を意図した一部の状況を除いて、`{x:Type}` の使用は認められていません。 したがって、文字列としての型名の動作は、 が値となる、Silverlight のすべてのネイティブ プロパティの評価に組み込まれています。 + +## XAML 2009 + XAML 2009 はジェネリック型に対するサポートを強化し、このサポートを実現できるよう `x:TypeArguments` および `x:Type` の機能の動作を修正します。 + +- `x:TypeArguments` および汎用オブジェクトのインスタンス化で使用される関連オブジェクト要素は、ルート以外の要素上にあることがあります。 詳細については、「[x:TypeArguments Directive](../../../docs/framework/xaml-services/x-typearguments-directive.md)」の「XAML 2009」のセクションを参照してください。 + +- XAML 2009 は、マークアップでジェネリック型の制約を指定する構文をサポートします。 これは、`x:TypeArguments`、`x:Type`、またはこれら 2 つの機能の組み合わせで使用できます。 + +- XAML 2009 の読み込みを処理する WPF の XAML 実装も、型 を使用する特定のフレームワーク プロパティの暗黙的な型変換動作に対して、この機能を追加します。 + + WPF では XAML 2009 の機能を使用できますが、Loose XAML \(マークアップ コンパイルされていない XAML\) に限定されます。 WPF 向けにマークアップ コンパイルされた XAML、および XAML の BAML 形式は、現在、XAML 2009 のキーワードと機能をサポートしていません。 + +## 参照 + + [スタイルとテンプレート](../../../docs/framework/wpf/controls/styling-and-templating.md) + [XAML の概要 \(WPF\)](../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) + [マークアップ拡張機能と WPF XAML](../../../docs/framework/wpf/advanced/markup-extensions-and-wpf-xaml.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-typearguments-directive.md b/docs/framework/xaml-services/x-typearguments-directive.md new file mode 100644 index 00000000000..03e55dd6d1e --- /dev/null +++ b/docs/framework/xaml-services/x-typearguments-directive.md @@ -0,0 +1,95 @@ +--- +title: "x:TypeArguments Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "x:TypeArguments" + - "xTypeArguments" + - "TypeArguments" +helpviewer_keywords: + - "x:TypeArguments attribute [XAML Services]" + - "TypeArguments attribute in XAML [XAML Services]" + - "XAML [XAML Services], x:TypeArguments attribute" +ms.assetid: 86561058-d393-4a44-b5c3-993a4513ea74 +caps.latest.revision: 18 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 18 +--- +# x:TypeArguments Directive +ジェネリックの制約型引数をジェネリック型のコンストラクターに渡します。 + +## XAML 属性の使用方法 + +``` + +``` + +## XAML 値 + +||| +|-|-| +|`object`|CLR ジェネリック型によってサポートされる XAML 型のオブジェクト要素の宣言。 `object` が、既定の XAML 名前空間から派生していない XAML 型である場合、`object` は `object` が存在する XAML 名前空間を示すプレフィックスを必要とします。| +|`typeString`|CLR ジェネリック型に型引数を提供する、1 つ以上の XAML 型名を文字列として宣言する文字列。 構文の注意事項の詳細については、「解説」を参照してください。| + +## 解説 + ほとんどの場合、`typeString` 文字列の情報項目として使用される XAML 型には、プレフィックスが付加されます。 CLR ジェネリック制約 \( など\) の一般的な型は、CLR 基本クラス ライブラリから派生します。 これらのライブラリは一般的なフレームワーク固有の既定の XAML 名前空間にマッピングされないので、XAML の使用方法に対応するプレフィックスのマッピングが必要になります。 + + コンマを区切り記号として使用することで、複数の XAML 型名を指定できます。 + + ジェネリック制約自体がジェネリック型を使用している場合、ネストされた制約型引数はかっこ \(\) で囲むことができます。 + + この `x:TypeArguments` の定義は、.NET Framework XAML サービスに固有で、CLR バッキングを使用していることに注意してください。 言語レベルの定義については、「[\[MS\-XAML\] 第 5.3.11 節](http://go.microsoft.com/fwlink/?LinkId=114525)」を参照してください。 + +## 使用例 + この例では、次の XAML 名前空間の定義が宣言されていることを前提としています。 + +``` +xmlns:sys="clr-namespace:System;assembly=mscorlib" +xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" +``` + +### List\ + `` は、 型引数で新しい をインスタンス化します。 + +### Dictionary\ + `` は、2 つの 型引数で新しい をインスタンス化します。 + +### Queue\\> + `` は、内部制約型引数 および の制約がある新しい をインスタンス化します。 + +## XAML 2006 および WPF ジェネリック XAML の使用方法 + XAML 2006 の使用方法と、WPF アプリケーションで使用される XAML では、通常、XAML からの `x:TypeArguments` とジェネリック型の使用方法に対して、次のような制約があります。 + +- ジェネリック型を参照するジェネリック XAML の使用方法をサポートできるのは、XAML ファイルのルート要素のみに限定されます。 + +- ルート要素は最低 1 つの型引数と共にジェネリック型にマッピングする必要があります。 はその一例です。 ページ関数は、WPF でジェネリック XAML の使用方法をサポートする主なシナリオです。 + +- ジェネリック対応のルート要素の XAML オブジェクト要素も、`x:Class` を使用して特定のクラスを宣言する必要があります。 これは、WPF ビルド アクションを定義する場合にも当てはまります。 + +- `x:TypeArguments` は、ネストされたジェネリック制約を参照できません。 + +## XAML 2009、または WPF 3.0\/3.5 に依存しない XAML 2006 + XAML 2006 または XAML 2009 の .NET Framework XAML サービスでは、ジェネリック XAML の使用方法に対する WPF 関連の制約が緩和されています。 バッキング型システムとオブジェクト モデルがサポートできる XAML マークアップの任意の位置で、汎用オブジェクト要素をインスタンス化できます。 + + XAML 2009 を使用している場合は、一般的な言語プリミティブを取得するために CLR 基本型をマッピングする代わりに、[共通の XAML 言語プリミティブの組み込み型](../../../docs/framework/xaml-services/built-in-types-for-common-xaml-language-primitives.md)を `typeString` の情報アイテムとして使用できます。 たとえば、次を宣言できます \(プレフィックス マッピングは示されていません。x は XAML 2009 の XAML 言語 XAML 名前空間です\)。 + +``` + +``` + + WPF で、[!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] を対象としている場合は、XAML 2009 の機能を `x:TypeArguments` と共に使用できますが、Loose XAML \(マークアップ コンパイルされていない XAML\) に限定されます。 WPF 向けにマークアップ コンパイルされた XAML、および XAML の BAML 形式は、現在、XAML 2009 のキーワードと機能をサポートしていません。 XAML をマークアップ コンパイルする必要がある場合、「XAML 2006 および WPF ジェネリック XAML の使用方法」に記載された制約に従って操作する必要があります。 + +## 参照 + [x:Class Directive](../../../docs/framework/xaml-services/x-class-directive.md) + [x:Type Markup Extension](../../../docs/framework/xaml-services/x-type-markup-extension.md) + [共通の XAML 言語プリミティブの組み込み型](../../../docs/framework/xaml-services/built-in-types-for-common-xaml-language-primitives.md) + [Generics in XAML](../../../docs/framework/xaml-services/generics-in-xaml.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-uid-directive.md b/docs/framework/xaml-services/x-uid-directive.md new file mode 100644 index 00000000000..f5d56e8fc0e --- /dev/null +++ b/docs/framework/xaml-services/x-uid-directive.md @@ -0,0 +1,54 @@ +--- +title: "x:Uid Directive | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "XAML [XAML Services], localizable content attribute" + - "XAML [XAML Services], x:Uid attribute" + - "x:Uid attribute [XAML Services]" + - "Uid attribute [XAML Services]" +ms.assetid: 81defade-483b-4a89-b76d-9b25bba34010 +caps.latest.revision: 12 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 12 +--- +# x:Uid Directive +マークアップ要素の一意識別子を提供します。 多くの場合、この一意識別子は XAML のローカリゼーションのプロセスとツールによって使用されます。 + +## XAML 属性の使用方法 + +``` + +``` + +## XAML 値 + +||| +|-|-| +|`identifier`|`x:Uid` コンシューマーによる解釈時にファイル内で一意であることが必要となる、手動で作成または自動生成された文字列。| + +## 解説 + \[MS\-XAML\] では、`x:Uid` はディレクティブとして定義されます。 詳細については、「[\[MS\-XAML\] 第 5.3.6 節](http://go.microsoft.com/fwlink/?LinkId=114525)」を参照してください。 + + 規定された XAML のローカリゼーション シナリオにより、`x:Uid` は `x:Name` から分離しています。したがって、ローカリゼーションで使用される識別子は、プログラミング モデルの関連において `x:Name` への依存関係はありません。 また、`x:Name` が XAML 名前スコープによって制御されるのに対して、`x:Uid` が XAML 言語で定義された一意性の適用の概念によって制御されることはありません。 一般的な意味での XAML プロセッサ \(ローカリゼーション プロセスに関与しないプロセッサ\) では、`x:Uid` 値の一意性を適用する処理は行われません。 概念上、この処理は値を作成する側の責任で行われます。 専用のグローバリゼーションのプロセスやツールなど、この値を使用する側にとっては、単一の XAML ソースに含まれる `x:Uid` 値が一意になっていると想定するのは当然のことになります。 一般的な一意性モデルでは、XAML を表現する XML でエンコードされたファイル内で `x:Uid` 値は一意になります。 + + 特定の XAML スキーマを十分に認識するツールでは、テキスト文字列値がマークアップで検出されたすべてのケースに対してではなく、本当にローカライズ可能な文字列のみに `x:Uid` を適用するよう選択できます。 + + フレームワークでは、属性 を定義元の型に適用することで、オブジェクト モデルに含まれる特定のプロパティを `x:Uid` のエイリアスとして指定できます。 フレームワークで特定のプロパティを指定する場合、同じオブジェクトで `x:Uid` とエイリアス化したメンバーの両方を指定することは無効です。 `x:Uid` とエイリアス化したメンバーの両方を指定した場合、.NET Framework XAML サービス API によって通常、このケースでは がスローされます。 + +## WPF の使用上の注意 + WPF ローカリゼーションのプロセスおよび XAML の BAML 形式における `x:Uid` の役割の詳細については、「[WPF のグローバリゼーション](../../../docs/framework/wpf/advanced/globalization-for-wpf.md)」または「」を参照してください。 + +## 参照 + + + [WPF のグローバリゼーション](../../../docs/framework/wpf/advanced/globalization-for-wpf.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/x-xdata-intrinsic-xaml-type.md b/docs/framework/xaml-services/x-xdata-intrinsic-xaml-type.md new file mode 100644 index 00000000000..3e50b099c75 --- /dev/null +++ b/docs/framework/xaml-services/x-xdata-intrinsic-xaml-type.md @@ -0,0 +1,62 @@ +--- +title: "x:XData Intrinsic XAML Type | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "x:XData" + - "XData" + - "xXData" +helpviewer_keywords: + - "XAML [XAML Services], x:XData directive element" + - "XData in XAML [XAML Services]" + - "x:XData XAML directive element [XAML Services]" +ms.assetid: 7ce209c2-621b-4977-b643-565f7e663534 +caps.latest.revision: 17 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 17 +--- +# x:XData Intrinsic XAML Type +XML データ アイランドを XAML 稼動環境内に配置できるようにします。 `x:XData` 内の XML 要素は、動作している既定の XAML 名前空間またはその他の XAML 名前空間の一部として扱うことはできません。 `x:XData` は、任意の整形式 XML を含むことができます。 + +## XAML オブジェクト要素の使用方法 + +``` + +   +    [elementData] +   + +``` + +## XAML 値 + +||| +|-|-| +|`elementDataRoot`|囲まれたデータ アイランドの単一ルート要素。 ほとんどのコンシューマーでは、最終的に、単一のルートを持たない XML は無効と見なされます。 特に、`x:XData` が、WPF \(または XML ソースをデータ バインディングに使用するその他各種テクノロジ\) の XML データ ソースとして使用される場合、単一のルートが必要になります。| +|`[elementData]`|省略可能です。 XML データを表す XML。 要素データとして任意の数の要素を含めることができる、入れ子にした要素を他の要素に含めることができるなど、XML の一般規則が適用されます。| + +## 解説 + `x:XData` オブジェクト内の XML 要素は、このデータ内で、格納している側の XMLDOM のすべての考えられる名前空間およびプレフィックスを再宣言できます。 + + XML データおよび `x:XData` 組み込み XAML 型へのプログラムによるアクセスは、.NET Framework XAML サービスでは、 クラスを介して実行できます。 + +## WPF の使用上の注意 + The `x:XData` オブジェクトは主に、 の子オブジェクトとして使用されるか、 プロパティ \(XAML では、通常、プロパティ要素構文で表される\) の子オブジェクトとして使用されます。 + + 一般に、データ アイランド内では、基本 XML 名前空間を新しい既定の XML 名前空間として再定義する必要があります \(空の文字列に設定\)。 この方法は、単純なデータ アイランドの場合には最も簡単です。データを参照やバインドに 式を使用することでプレフィックスが不要になるからです。 より複雑なデータ アイランドでは、データのプレフィックスを複数定義し、ルートにある XML 名前空間に特定のプレフィックスを使用するという方法を選択できます。 この場合は、すべての 式参照において、名前空間にマップされた適切なプレフィックスを付ける必要があります。 詳細については、「[データ バインドの概要](../../../docs/framework/wpf/data/data-binding-overview.md)」を参照してください。 + + 技術的には、`x:XData` は 型の任意のプロパティのコンテンツとして使用できます。 ただし、よく使用されているのは の実装のみです。 + +## 参照 + + [データ バインドの概要](../../../docs/framework/wpf/data/data-binding-overview.md) + [バインドのマークアップ拡張機能](../../../docs/framework/wpf/advanced/binding-markup-extension.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/xaml-2009-language-features.md b/docs/framework/xaml-services/xaml-2009-language-features.md new file mode 100644 index 00000000000..b04355fc95f --- /dev/null +++ b/docs/framework/xaml-services/xaml-2009-language-features.md @@ -0,0 +1,43 @@ +--- +title: "XAML 2009 Language Features | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "XAML 2009 [XAML Services]" + - "XAML [XAML Services], XAML 2009" +ms.assetid: f6bb18d8-c86a-4549-8862-323e6b32a8dd +caps.latest.revision: 11 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 11 +--- +# XAML 2009 Language Features +XAML 2009 とは、既存の XAML 言語仕様を拡張した、XAML の新しい言語機能の短縮名です。 XAML 2009 には、いくつかの新しいディレクティブとコンストラクトが導入されています。 たとえば、[x:Arguments Directive](../../../docs/framework/xaml-services/x-arguments-directive.md)、[x:FactoryMethod Directive](../../../docs/framework/xaml-services/x-factorymethod-directive.md)、[x:Reference Markup Extension](../../../docs/framework/xaml-services/x-reference-markup-extension.md)、[x:TypeArguments Directive](../../../docs/framework/xaml-services/x-typearguments-directive.md)、共通言語プリミティブの組み込み型 \(`x:Char` など\) があります。 + + +## XAML 2009 は、WPF および Visual Studio でサポートされています。 + WPF では XAML 2009 の機能を使用できますが、WPF マークアップ コンパイルされていない XAML に限定されます。 マークアップ コンパイルされた XAML、および XAML の BAML 形式は、現在、XAML 2009 言語のキーワードと機能をサポートしていません。 + + なお、WPF に Loose XAML を読み込むための既存の方法には、CLR 型および型システムに対するセキュリティ制限およびアクセス制限が課されていることがあります。この制限は、マークアップ コンパイルされた XAML に対する制限よりも限定的です。 詳細については、「[セキュリティ \(WPF\)](../../../docs/framework/wpf/security-wpf.md)」または「[WPF のセキュリティ方針 \- プラットフォーム セキュリティ](../../../docs/framework/wpf/wpf-security-strategy-platform-security.md)」を参照してください。 + + また、XAML 2009 では、以前の XAML 2006 構造を変更するか、または基本的なマークアップ形式を変更する、追加機能も導入されました。 + +### オブジェクトの要素としての x:Key + XAML 2009 では `x:Key` をオブジェクト \(オブジェクト要素値を持つプロパティ要素\) としてサポートできます。XAML 2006 では、`x:Key` は属性としてのみサポートされていました。 「[x:Key Directive](../../../docs/framework/xaml-services/x-key-directive.md)」の「XAML 2009」のセクションを参照してください。 + +### プロパティ要素の xmlns + XAML 2009 は、プロパティ要素に対する XAML 名前空間 \(xmlns\) の定義をサポートできます。XAML 2006 では、オブジェクト要素に対してのみ xmlns 定義をサポートしていました。 + +### イベント属性 + イベントによってサポートされる属性については、XAML 2006 ではマークアップ コンパイルが関係していると仮定されて、イベントはマークアップ コンパイルに送信されます。 XAML 2009 はマークアップ拡張機能に似たマークアップ形式をサポートします。このマークアップ形式は、XAML のランタイム解析と読み込みが行われるまでイベント接続を遅延します。 ただし、WPF アプリケーション、および WPF の UI の XAML シナリオでは、一般にこの機能は使用しません。 WPF およびその XAML 2006 の実装では、イベント属性処理の大部分に対し、 レベルで定義されたルーティング イベントのイベント ハンドラー接続と、そのマークアップ コンパイラ手順の組み合わせを使用します。 マークアップ コンパイラは、XAML 内に見つかるすべてのイベント属性を事前に処理し、マークアップ コンパイラが使用されることがビルド アクションによって宣言されます。 + +## 参照 + [XAML の概要 \(WPF\)](../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/xaml-namespace-x-language-features.md b/docs/framework/xaml-services/xaml-namespace-x-language-features.md new file mode 100644 index 00000000000..46dd55f1479 --- /dev/null +++ b/docs/framework/xaml-services/xaml-namespace-x-language-features.md @@ -0,0 +1,47 @@ +--- +title: "XAML Namespace (x:) Language Features | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "AutoGeneratedOrientationPage" +helpviewer_keywords: + - "XAML namespace [XAML Services]" + - "XAML [XAML Services], namespaces" +ms.assetid: e1f47225-9996-4fbf-ab86-62d2e955f3fc +caps.latest.revision: 61 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 58 +--- +# XAML Namespace (x:) Language Features +## このセクションの内容 + [x:Array Markup Extension](../../../docs/framework/xaml-services/x-array-markup-extension.md) + [x:Class Directive](../../../docs/framework/xaml-services/x-class-directive.md) + [x:ClassModifier Directive](../../../docs/framework/xaml-services/x-classmodifier-directive.md) + [x:Code Intrinsic XAML Type](../../../docs/framework/xaml-services/x-code-intrinsic-xaml-type.md) + [x:FieldModifier Directive](../../../docs/framework/xaml-services/x-fieldmodifier-directive.md) + [x:Key Directive](../../../docs/framework/xaml-services/x-key-directive.md) + [x:Member Directive](../../../docs/framework/xaml-services/x-member-directive.md) + [x:Members Directive](../../../docs/framework/xaml-services/x-members-directive.md) + [x:Name Directive](../../../docs/framework/xaml-services/x-name-directive.md) + [x:Null Markup Extension](../../../docs/framework/xaml-services/x-null-markup-extension.md) + [x:Shared Attribute](../../../docs/framework/xaml-services/x-shared-attribute.md) + [x:Property Directive](../../../docs/framework/xaml-services/x-property-directive.md) + [x:Static Markup Extension](../../../docs/framework/xaml-services/x-static-markup-extension.md) + [x:Subclass Directive](../../../docs/framework/xaml-services/x-subclass-directive.md) + [x:Type Markup Extension](../../../docs/framework/xaml-services/x-type-markup-extension.md) + [x:TypeArguments Directive](../../../docs/framework/xaml-services/x-typearguments-directive.md) + [x:Uid Directive](../../../docs/framework/xaml-services/x-uid-directive.md) + [x:XData Intrinsic XAML Type](../../../docs/framework/xaml-services/x-xdata-intrinsic-xaml-type.md) + [XamlName の文法](../../../docs/framework/xaml-services/xamlname-grammar.md) + [{} Escape Sequence \/ Markup Extension](../../../docs/framework/xaml-services/escape-sequence-markup-extension.md) + [xml:lang Handling in XAML](../../../docs/framework/xaml-services/xml-lang-handling-in-xaml.md) + [xml:space Handling in XAML](../../../docs/framework/xaml-services/xml-space-handling-in-xaml.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/xaml-namespaces-for-net-framework-xaml-services.md b/docs/framework/xaml-services/xaml-namespaces-for-net-framework-xaml-services.md new file mode 100644 index 00000000000..62d14395d5f --- /dev/null +++ b/docs/framework/xaml-services/xaml-namespaces-for-net-framework-xaml-services.md @@ -0,0 +1,74 @@ +--- +title: "XAML Namespaces for .NET Framework XAML Services | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: e4f15f13-c420-4c1e-aeab-9b6f50212047 +caps.latest.revision: 3 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XAML Namespaces for .NET Framework XAML Services +XAML 名前空間は、XML 名前空間の定義を拡張する概念です。 XML 名前空間と同様に、マークアップ内で `xmlns` 属性を使用することで XAML 名前空間を定義できます。 XAML 名前空間は XAML ノード ストリームなどの XAML サービス API でも表されます。 このトピックでは、XAML 名前空間の概念について説明し、XAML 名前空間の定義の方法と、XAML スキーマ コンテキストなどの .NET Framework XAML サービスの各要素で XAML 名前空間を使用する方法について説明します。 + +## XML 名前空間と XAML 名前空間 + XAML が特殊な形式の XML であるように、XAML 名前空間は特殊な XML 名前空間です。マークアップには XML の基本形式が使用されます。 マークアップ内で、要素に適用される `xmlns` 属性を利用して、XAML 名前空間とそのマッピングを宣言します。 内部で XAML 名前空間が宣言されている同じ要素に対して、`xmlns` 宣言を実行することができます。 要素に対して XAML 名前空間を宣言すると、その要素、その要素のすべての属性、およびその要素のすべての子要素に対してその宣言が有効になります。 属性が含まれている要素と異なる XAML 名前空間をその属性で使用できます。ただし、マークアップ内で、属性名自体からプレフィックスがその属性名の一部として参照されていることが必要です。 + + XAML 名前空間と XML 名前空間の違いについて説明します。XML 名前空間は、スキーマの参照やエンティティの単純な判別に使用されます。 XAML の場合、XAML で使用される型とメンバーは最終的にバッキング型として解決される必要がありますが、XML スキーマの概念はこの機能に該当しません。 XAML 名前空間には、XAML スキーマ コンテキストでこのような型の対応付けを実行するために必要となる情報が含まれています。 + +## XAML 名前空間の構成要素 + XAML 名前空間の定義には、プレフィックスと識別子という 2 つの構成要素が含まれます。 マークアップ内で XAML 名前空間を宣言するとき、または XAML 型システムで XAML 名前空間を定義するときに、このような構成要素がそれぞれ表示されます。 + + プレフィックスには、[W3C による XML 1.0 名前空間の仕様](http://go.microsoft.com/fwlink/?LinkID=161735)で定められている任意の文字列を使用できます。 一般的なマークアップ ファイルではプレフィックスが頻繁に記述されるため、慣習として非常に短い文字列が使用されます。 複数の XAML 実装で使用するための XAML 名前空間では、慣習的に特定のプレフィックスが使用されます。 たとえば、XAML 言語の XAML 名前空間は一般的にプレフィックス `x` を使用して対応付けされます。 既定の XAML 名前空間を定義することもできます。既定の XAML 名前空間ではプレフィックスが定義で指定されませんが、.NET Framework XAML サービス API から定義または照会された場合は、空の文字列として表されます。 一般的に、XAML を実装するテクノロジとそのシナリオおよびボキャブラリによって、プレフィックスを省略したマークアップを最大限増やすために、意図的に既定の XAML 名前空間が選択されます。 + + 識別子には、[W3C による XML 1.0 名前空間の仕様](http://go.microsoft.com/fwlink/?LinkID=161735)で定められている任意の文字列を使用できます。 慣習として、XML 名前空間または XAML 名前空間の識別子は URI の形で \(通常はプロトコルで修飾された絶対 URI として\) 指定されるのが一般的です。 多くの場合、特定の XAML ボキャブラリを定義するバージョン情報がパス文字列の中に含まれます。 XAML 名前空間によって、XML URI の規則に加えて新しい識別子規則が追加されます。 XAML 名前空間では、XAML 名前空間で指定された型を解決したり、属性をメンバーとして解決したりするために XAML スキーマ コンテキストで必要となる情報が、識別子によって伝達されます。 + + XAML スキーマ コンテキストに情報を伝達するために、XAML 名前空間の識別子が URI の形のままになる場合があります。 ただし、この場合、この URI も特定のアセンブリまたは一連のアセンブリ内の一致する識別子として宣言されます。 アセンブリでこれを行うには、 を使用してアセンブリに属性を設定します。 属性付きのアセンブリ内で、XAML 名前空間を識別し、CLR ベースの型解決処理をサポートするこの方法は、.NET Framework XAML サービスにおける既定の XAML スキーマ コンテキストでサポートされます。 さらに一般的には、XAML スキーマ コンテキストが CLR を含んでいるか、既定の XAML スキーマ コンテキストに基づいている場合 \(CLR アセンブリから CLR 属性を読み取るために必要です\)、この規則を使用できます。 + + XAML 名前空間も、CLR 名前空間を伝達する規則と、型を定義するアセンブリによって識別できます。 この規則は、型が含まれるアセンブリに 属性が存在しない場合に使用されます。 この規則は URI 規則よりも複雑化する可能性があります。また、アセンブリの参照方法が複数あるため、あいまいさや重複が発生する可能性があります。 + + CLR 名前空間とアセンブリ規則を使用する識別子の、最も基本的な形は、次のようになります。 + + `clr-namespace:` *clrnsName* `; assembly=` *assemblyShortName* + + `clr-namespace:` および `; assembly=` は、この構文のリテラル要素です。 + + *clrnsName* は、CLR 名前空間を識別する文字列名です。 この文字列名の中に含まれるドット \(.\) は、CLR 名前空間に関するヒントを示し、他の CLR 名前空間との関係を表します。 + + *assemblyShortName* は、XAML で有用な型を定義するアセンブリの文字列名です。 宣言される XAML 名前空間を利用してアクセスされる型は、アセンブリによって定義され、*clrnsName* で指定された CLR 名前空間内で特別に宣言されることになります。 この文字列名は、通常、 によって報告される情報と一致します。 + + CLR 名前空間とアセンブリ規則の詳細な定義は、次のようになります。 + + `clr-namespace:` *clrnsName* `; assembly=` *assemblyName* + + *assemblyName* は、 入力として有効な任意の文字列を表します。 この文字列には、カルチャ、公開キー、またはバージョン情報を含めることができます \(このような概念の定義については のリファレンス トピックを参照してください\)。 COFF の形式および証拠 \( の他のオーバーロードで使用する場合\) は、XAML アセンブリの読み込み目的には対応しません。すべての読み込み情報は文字列として表される必要があります。 + + アセンブリに公開キーを指定することは、XAML のセキュリティを確保するために有効な手法です。また、アセンブリが簡易名によって読み込まれる場合に生じるあいまいさや、キャッシュまたはアプリケーション ドメインの既存のあいまいさを解消するためにも役立ちます。 詳細については、「[XAML Security Considerations](../../../docs/framework/xaml-services/xaml-security-considerations.md)」を参照してください。 + +## XAML サービス API における XAML 名前空間宣言 + XAML サービス API では、XAML 名前空間宣言は オブジェクトによって表されます。 コード内で XAML 名前空間を宣言する場合、 コンストラクターを呼び出します。 `ns` パラメーターと `prefix` パラメーターは文字列として指定します。この 2 つのパラメーターの入力内容は、このトピックで既に説明した、XAML 名前空間識別子および XAML 名前空間プレフィックスの定義と対応しています。 + + XAML ノード ストリームの中で、または XAML 型システムへの他のアクセスを利用して、XAML 名前空間の情報を調べる場合、 を使用すると XAML 名前空間識別子が返され、 を使用すると XAML 名前空間プレフィックスが返されます。 + + XAML ノード ストリームで、XAML 名前空間の情報は、適用対象のエンティティの前にある XAML ノードとして表示される場合があります。 これは、XAML 名前空間の情報が XAML ルート要素の `StartObject` の前にある場合にも同じです。 詳細については、「[Understanding XAML Node Stream Structures and Concepts](../../../docs/framework/xaml-services/understanding-xaml-node-stream-structures-and-concepts.md)」を参照してください。 + + .NET Framework XAML サービス API が使用されるシナリオでは、多くの場合、1 つ以上の XAML 名前空間宣言が存在すると考えられます。その宣言に、XAML スキーマ コンテキストで必要な情報が含まれている、または参照されていることが必要です。 XAML 名前空間には、読み込まれるアセンブリを指定するか、読み込み済みまたは XAML スキーマ コンテキストで認識済みの名前空間とアセンブリの中で特定の型を解決するために役立つアセンブリを指定する必要があります。 + + XAML ノード ストリームを生成するためには、XAML スキーマ コンテキストによって XAML 型情報が得られることが必要です。 XAML 型情報を決定するには、作成する各ノードに対応する XAML 名前空間を先に決定する必要があります。 この時点ではまだ型のインスタンスは作成されていませんが、XAML スキーマ コンテキストでは、アセンブリの定義とバッキング型の定義から情報を参照する必要がある場合があります。 たとえば、マークアップ `` を処理するには、XAML スキーマ コンテキストで `Party` の `ContentProperty` の名前と型を決定できる必要があるため、`Party` および `PartyFavor` の XAML 名前空間情報も認識されている必要があります。 既定の XAML スキーマ コンテキストの場合、ノード ストリームに XAML 型ノードを生成するために必要な XAML 型システム情報の多くが、静的リフレクションによって取得されます。 + + XAML ノード ストリームのオブジェクト グラフを生成するには、元のマークアップで使用され、XAML ノード ストリームで記録された、それぞれの XAML プレフィックスに対応する XAML 名前空間宣言が存在していることが必要です。 この時点でインスタンスが作成され、実際の型の対応付けが行われます。 + + XAML 名前空間の情報を事前に入力する必要がある場合 \(たとえば、XAML スキーマ コンテキストで使用する予定の XAML 名前空間がマークアップで定義されていない場合など\)、 で XML 名前空間宣言を宣言する手法を使用できます。 次に、その を XAML リーダー コンストラクター \(\) の入力として使用します。 + + .NET Framework XAML サービスで XAML 名前空間の処理に対応する、他の 2 つの API は、 属性および 属性です。 これらの属性はアセンブリに適用されます。 は、XAML スキーマ コンテキストで、URI を含む XAML 名前空間宣言を解釈するために使用されます。 は、XAML を出力するツールで使用されます。これによって、特定の XAML 名前空間を予測可能なプレフィックスでシリアル化することができます。 詳細については、「[XAML\-Related CLR Attributes for Custom Types and Libraries](../../../docs/framework/xaml-services/xaml-related-clr-attributes-for-custom-types-and-libraries.md)」を参照してください。 + +## 参照 + [Understanding XAML Node Stream Structures and Concepts](../../../docs/framework/xaml-services/understanding-xaml-node-stream-structures-and-concepts.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/xaml-related-clr-attributes-for-custom-types-and-libraries.md b/docs/framework/xaml-services/xaml-related-clr-attributes-for-custom-types-and-libraries.md new file mode 100644 index 00000000000..a23a87c9701 --- /dev/null +++ b/docs/framework/xaml-services/xaml-related-clr-attributes-for-custom-types-and-libraries.md @@ -0,0 +1,280 @@ +--- +title: "XAML-Related CLR Attributes for Custom Types and Libraries | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "CLR attributes for custom types [XAML Services]" +ms.assetid: 5dfb299a-b6e2-41b8-8694-e6ac987547f1 +caps.latest.revision: 8 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 8 +--- +# XAML-Related CLR Attributes for Custom Types and Libraries +このトピックでは、.NET Framework XAML サービスによって定義される共通言語ランタイム \(CLR: Common Language Runtime\) 属性について説明します。 また、アセンブリまたは型に適用される XAML 関連のシナリオを持つ、.NET Framework で定義されるその他の CLR 属性についても説明します。 アセンブリ、型、およびメンバーに対して、このような CLR 属性を設定すると、型に関連する XAML 型システム情報が提供されます。 情報は、XAML ノード ストリームの直接処理または専用の XAML リーダーおよび XAML ライターによる処理を目的として .NET Framework XAML サービスを使用する、すべての XAML コンシューマーに提供されます。 + +## カスタム型とカスタム メンバー用の XAML 関連の CLR 属性 + CLR 属性を使用すると、CLR 全般を使用して型を定義することになります。それ以外の場合は、CLR 属性は使用できません。 CLR を使用して型バッキングを定義した場合、.NET Framework XAML サービスの XAML ライターによって使用される既定の XAML スキーマ コンテキストは、バッキング アセンブリに対するリフレクションを介して CLR 属性を読み取ることができるようになります。 + + 以降では、カスタム型およびカスタム メンバーに適用できる XAML 関連の属性について説明します。 各 CLR 属性は、XAML 型システムに関連する情報をやり取りします。 読み込みパスでは、属性付きの情報に基づいて、XAML リーダーが有効な XAML ノード ストリームを形成する場合と、XAML ライターが有効なオブジェクト グラフを生成する場合があります。 保存パスでは、属性付きの情報に基づいて、XAML リーダーが有効な XAML ノード ストリームを形成して XAML 型システム情報を再構築する場合と、XAML ライターやその他の XAML コンシューマーに対するシリアル化のヒントおよび要件が宣言される場合があります。 + +### AmbientAttribute + **リファレンス ドキュメント:** + + **対象:** クラス、プロパティ、またはアタッチ可能なプロパティをサポートする `get` アクセサー メンバー。 + + **引数:** なし + + は、プロパティ \(属性付き型を受け取るすべてのプロパティ\) は XAML のアンビエント プロパティの概念に基づいて解釈する必要があることを示します。 アンビエントの概念は XAML プロセッサがメンバーの型の所有者を確認する方法と関連します。 アンビエント プロパティは、オブジェクト グラフの作成時にパーサー コンテキストで値を使用できるという想定のプロパティです。ただし、XAML ノード セットを迅速に作成するために、通常の型メンバーの検索は中断されます。 + + アンビエントの概念は、CLR 属性で を定義する方法に関してプロパティとして表現されない、アタッチ可能なメンバーに適用できます。 メソッド属性の使用は、`get` アクセサーが XAML のアタッチ可能な使用方法をサポートするケースのみに限定する必要があります。 + +### ConstructorArgumentAttribute + **リファレンス ドキュメント:** + + **対象:** クラス + + **引数:** 単一のコンストラクター引数と照合されるプロパティ名を指定する文字列。 + + は、既定以外のコンストラクター構文を使用してオブジェクトを初期化できることと、指定された名前のプロパティが構造情報を提供することを指定します。 この情報は、主に XAML のシリアル化に使用されます。 詳細については、「」を参照してください。 + +### ContentPropertyAttribute + **リファレンス ドキュメント:** + + **対象:** クラス + + **引数:** 属性付き型のメンバー名を指定する文字列。 + + は、引数によって名前が指定されたプロパティはその型の XAML コンテンツ プロパティとして機能する必要があることを示します。 XAML コンテンツ プロパティ定義は、定義元の型に割り当て可能なすべての派生型に継承されます。 特定の派生型の定義を無視するには、 を特定の派生型に適用します。 + + XAML コンテンツ プロパティとして機能するプロパティの場合、そのプロパティのプロパティ要素に対するタグ付けは XAML の使用方法では省略できます。 通常は、XAML コンテンツ プロパティを指定して、コンテンツおよびコンテインメント モデルの XAML マークアップを簡略化します。 XAML コンテンツ プロパティとして指定できるのは単一のメンバーのみに限定されるので、場合によっては、XAML コンテンツ プロパティとして指定する必要がある、型のいくつかのコンテナー プロパティの種類に関して、デザインを選択することになります。 その他のコンテナー プロパティは、明示的なプロパティ要素と共に使用する必要があります。 + + XAML ノード ストリームでは、XAML コンテンツ プロパティは のプロパティ名に基づいて `StartMember` ノードと `EndMember` ノードを生成します。 メンバーが XAML コンテンツ プロパティであるかどうか判断するには、`StartObject` の位置から 値を調べ、 の値を取得します。 + +### ContentWrapperAttribute + **リファレンス ドキュメント:** + + **対象:** クラス \(特にコレクション型\)。 + + **引数:** 外部コンテンツ用のコンテンツ ラッパー型として使用する型を指定する 。 + + は、外部コンテンツをラップするために使用される関連するコレクション型に対して 1 つ以上の型を指定します。 外部コンテンツは、コンテンツ プロパティの型に対する型システムの制約で、所有する型の XAML 使用方法でサポートされるコンテンツ ケースの一部がキャプチャされないケースを指します。 たとえば、XAML は、厳密に型指定されたジェネリック で文字列をサポートする可能性がある、特定の型のコンテンツをサポートします。 コンテンツ ラッパーは、テキスト関連のコンテンツ モデルの移行など、既存のマークアップ規則を、コレクションの割り当て可能な値に関する XAML の概念に移行する場合に役立ちます。 + + 複数のコンテンツ ラッパー型を指定するには、属性を複数回適用します。 + +### DependsOnAttribute + **リファレンス ドキュメント:** + + **対象:** プロパティ + + **引数:** 属性付き型の別のメンバー名を指定する文字列。 + + は、属性付きプロパティが別のプロパティの値に依存することを示します。 この属性をプロパティ定義に適用すると、依存プロパティは XAML オブジェクトの記述で最初に処理されます。 の使用により、例外的なケースを指定して、有効なオブジェクトを作成するために特定の順序で解析を行う必要がある型のプロパティに対応します。 + + プロパティ定義に対して複数の ケースを適用できます。 + +### MarkupExtensionReturnTypeAttribute + **リファレンス ドキュメント:** + + **対象:** 派生型であると想定されるクラス。 + + **引数:** 属性付きの の `ProvideValue` の結果として想定される最も精密な型を指定する 。 + + 詳細については、「[Markup Extensions for XAML Overview](../../../docs/framework/xaml-services/markup-extensions-for-xaml-overview.md)」を参照してください。 + +### NameScopePropertyAttribute + **リファレンス ドキュメント:** + + **対象:** クラス + + **引数:** 次の 2 つの形式の属性をサポートします。 + +- 属性付き型のプロパティ名を指定する文字列 + +- プロパティ名を指定する文字列、および名前付きプロパティを定義する型の この形式では、XAML 名前スコープ プロパティとしてアタッチ可能なメンバーを指定します。 + + は、属性付きクラスに XAML 名前スコープの値を提供するプロパティを指定します。 XAML 名前スコープのプロパティは、 を実装し、実際の XAML 名前スコープ、そのストア、およびその動作を保持するオブジェクトを参照すると想定されます。 + +### RuntimeNamePropertyAttribute + **リファレンス ドキュメント:** + + **対象:** クラス + + **引数:** 属性付き型のランタイム名のプロパティ名を指定する文字列。 + + は、XAML の [x:Name Directive](../../../docs/framework/xaml-services/x-name-directive.md) にマップされる属性付き型のプロパティを報告します。 このプロパティは 型であると同時に、読み書き可能である必要があります。 + + この定義は、定義元の型に割り当て可能なすべての派生型に継承されます。 特定の派生型の定義を無視するには、 を特定の派生型に適用します。 + +### TrimSurroundingWhitespaceAttribute + **リファレンス ドキュメント:** + + **対象:** 型 + + **引数:** なし。 + + は、空白が意味を持つコンテンツ \( を含むコレクションによって保持されるコンテンツ\) 内で子要素として表される可能性がある特定の型に適用されます。 は主に保存パスに関連しますが、 を調べることで、読み込みパスの XAML 型システムでも使用できます。 詳細については、「[Whitespace Processing in XAML](../../../docs/framework/xaml-services/whitespace-processing-in-xaml.md)」を参照してください。 + +### TypeConverterAttribute + **リファレンス ドキュメント:** + + **対象:** クラス、プロパティ、メソッド \(XAML 対応の唯一のメソッド ケースは、アタッチ可能なメンバーをサポートする `get` アクセサー\)。 + + **引数:** 。 + + XAML コンテキストの は、カスタム を参照します。 この は、カスタム型 \(その型のメンバー\) の型変換動作を提供します。 + + 型コンバーターの実装を参照し、 属性を型に適用します。 クラス、構造体、およびインターフェイスに対して、XAML の型コンバーターを定義できます。 列挙体に対しては、型変換がネイティブで有効になっているため、型変換を提供する必要はありません。 + + 型コンバーターは、マークアップで属性または初期化テキストに使用される文字列を目的の型に変換できる必要があります。 詳細については、「[TypeConverters および XAML](../../../docs/framework/wpf/advanced/typeconverters-and-xaml.md)」を参照してください。 + + XAML の型コンバーターの動作は、型のすべての値を適用する代わりに、特定のプロパティを対象にすることもできます。 このケースでは、 をプロパティ定義 \(特定の `get` および `set` 定義以外の定義\) に適用します。 + + アタッチ可能なカスタム メンバーの XAML の使用に対応する型コンバーターの動作を割り当てるには、XAML の使用をサポートする `get` メソッド アクセサーに を割り当てます。 + + と同様に、 は XAML よりも前に .NET Framework に存在しており、型コンバーター モデルはその他の目的に対応していました。 を参照して使用するには、完全修飾するか、 に `using` ステートメントを指定します。 システム アセンブリをプロジェクトに含める必要もあります。 + +### UidPropertyAttribute + **リファレンス ドキュメント:** + + **対象:** クラス + + **引数:** 関連プロパティを名前で参照する文字列。 + + [x:Uid Directive](../../../docs/framework/xaml-services/x-uid-directive.md) をエイリアス化するクラスの CLR プロパティを示します。 + +### UsableDuringInitializationAttribute + **リファレンス ドキュメント:** + + **対象:** クラス + + **引数:** ブール値。 属性の用途で使用する場合、常に `true` として指定する必要があります。 + + XAML のオブジェクト グラフの作成中にこの型がトップダウンで構築されるかどうかを示します。 これは高度な概念であり、実際のプログラミング モデルの定義に密接に関連していると考えられます。 詳細については、「」を参照してください。 + +### ValueSerializerAttribute + **リファレンス ドキュメント:** + + **対象:** クラス、プロパティ、メソッド \(XAML 対応の唯一のメソッド ケースは、アタッチ可能なメンバーをサポートする `get` アクセサー\)。 + + **引数:** 属性付き型のプロパティ \(特定の属性付きプロパティ\) をすべてシリアル化する場合に使用する値のシリアライザーのサポート クラスを指定する 。 + + は、 よりも状態とコンテキストを必要とする値のシリアル化クラスを指定します。 アタッチ可能なメンバーの静的な `get` アクセサー メソッド上で 属性を適用することにより、アタッチ可能なメンバーに を関連付けることができます。 値のシリアル化は、列挙体、インターフェイス、および構造体に対しても適用できますが、デリゲートには適用できません。 + +### WhitespaceSignificantCollectionAttribute + **リファレンス ドキュメント:** + + **対象:** クラス \(特に、オブジェクト要素周辺の空白が UI 表現で意味を持つ、混合コンテンツをホストする想定のコレクション型\) + + **引数:** なし。 + + は、コレクション内で XAML ノード ストリームの値ノードの作成に影響を及ぼすため、XAML プロセッサで空白が意味を持つものとしてコレクション型を処理する必要があることを示します。 詳細については、「[Whitespace Processing in XAML](../../../docs/framework/xaml-services/whitespace-processing-in-xaml.md)」を参照してください。 + +### XamlDeferLoadAttribute + **リファレンス ドキュメント:** + + **対象:** クラス、プロパティ。 + + **引数:** 文字列として 2 つの属性フォーム型、または の型をサポートします。 「」を参照してください。 + + クラスまたはプロパティに XAML の遅延読み込みの使用 \(テンプレート動作など\) が含まれていることを示し、遅延動作を有効にするクラスと、その宛先\/コンテンツ タイプを報告します。 + +### XamlSetMarkupExtensionAttribute + **リファレンス ドキュメント:** + + **対象:** クラス + + **引数:** コールバックの名前を指定します。 + + クラスでマークアップ拡張機能を使用して 1 つ以上のプロパティの値を指定できることを示すと同時に、クラスの任意のプロパティに対してマークアップ拡張機能のセット操作を実行する前に XAML ライターから呼び出す必要のあるハンドラーを参照します。 + +### XamlSetTypeConverterAttribute + **リファレンス ドキュメント:** + + **対象:** クラス + + **引数:** コールバックの名前を指定します。 + + クラスで型コンバーターを使用して 1 つ以上のプロパティの値を指定できることを示すと同時に、クラスの任意のプロパティに対して型コンバーターのセット操作を実行する前に XAML ライターから呼び出す必要のあるハンドラーを参照します。 + +### XmlLangPropertyAttribute + **リファレンス ドキュメント:** + + **対象:** クラス + + **引数:** 属性付き型の `xml:lang` にエイリアス化するプロパティ名を指定する文字列。 + + は、XML の `lang` ディレクティブにマッピングされる属性付き型のプロパティを報告します。 このプロパティは必ずしも 型である必要はありませんが、文字列からの割り当て \(具体的には、プロパティの型または特定のプロパティと型コンバーターの関連付け\) に対応する必要があります。 このプロパティは読み取り\/書き込み可能である必要があります。 + + `xml:lang` のマッピングに対応するシナリオでは、特に XMLDOM による処理を必要とせずに、ランタイム オブジェクト モデルが XML 固有の言語情報にアクセスできます。 + + この定義は、定義元の型に割り当て可能なすべての派生型に継承されます。 特定の派生型の定義を無視するには、 を特定の派生型に適用します。ただし、これは一般的なシナリオではありません。 + +## アセンブリ レベルでの XAML 関連の CLR 属性 + 以降では、型やメンバー定義に適用されずにアセンブリに適用される XAML 関連の属性について説明します。 各属性の全体としての目的は、XAML で使用するカスタム型を含むライブラリを定義することです。 一部の属性は XAML ノード ストリームに直接影響を及ぼすわけではありませんが、使用するその他のコンシューマー用にノード ストリームで受け渡されます。 情報のコンシューマーとしては、XAML 名前空間の情報および関連付けられたプレフィックス情報を必要とする、デザイン環境やシリアル化処理が挙げられます。 XAML スキーマ コンテキスト \(既定の .NET Framework XAML サービスを含む\) も、この情報を使用します。 + +### XmlnsCompatibleWithAttribute + **リファレンス ドキュメント:** + + **引数:** + +- 包含する XAML 名前空間の識別子を指定する文字列。 + +- 前の引数から XAML 名前空間を包含できる XAML 名前空間の識別子を指定する文字列。 + + は、XAML 名前空間を別の XAML 名前空間で包含できることを指定します。 通常、XAML 名前空間の包含は、あらかじめ定義した で示されます。 この方法は、ライブラリ内の XAML の語彙のバージョン管理を目的として使用され、以前のバージョンの語彙に対してあらかじめ定義したマークアップとの互換性を確保します。 + +### XmlnsDefinitionAttribute + **リファレンス ドキュメント:** + + **引数:** + +- 定義する XAML 名前空間の識別子を指定する文字列。 + +- CLR 名前空間の名前を付ける文字列。 CLR 名前空間がアセンブリのパブリック型を定義し、CLR 名前空間の型のうち少なくとも 1 つが XAML の使用方法で対象になる必要があります。 + + は、XAML 名前空間と CLR 名前空間の間のアセンブリごとのマッピングを指定します。これは、XAML オブジェクト ライターまたは XAML スキーマ コンテキストによる型解決に使用されます。 + + アセンブリに対して、複数の を適用できます。 この方法は、次の理由のいずれか、または組み合わせに基づいて使用されます。 + +- ランタイム API アクセスの論理構成に対応する複数の CLR 名前空間がライブラリ デザインに含まれるが、同じ XAML 名前空間を参照して各名前空間のすべての型を XAML で使用可能にする必要がある。 このケースでは、 値は同じで 値は異なる複数の 属性を適用します。 XAML 名前空間のマッピングを定義するときに、一般的な使用方法でフレームワークまたはアプリケーションが既定の XAML 名前空間になる想定である場合、この方法が役立ちます。 + +- 複数の CLR 名前空間がライブラリ デザインに含まれ、各 CLR 名前空間での型の使用方法に応じて意図的に XAML 名前空間を分離する必要がある。 + +- アセンブリで CLR 名前空間を定義して、複数の XAML 名前空間からのアクセスを可能にする必要がある。 同じコードベースで複数の語彙をサポートしている場合に、このような必要性が生じます。 + +- 1 つ以上の CLR 名前空間で XAML 言語サポートを定義する。 これらについては、 値に `http://schemas.microsoft.com/winfx/2006/xaml` を指定する必要があります。 + +### XmlnsPrefixAttribute + **リファレンス ドキュメント:** + + **引数:** + +- XAML 名前空間の識別子を指定する文字列。 + +- 推奨プレフィックスを指定する文字列。 + + は、XAML 名前空間に使用する推奨プレフィックスを指定します。 .NET Framework XAML サービスの によってシリアル化される XAML ファイルに要素および属性を書き込む場合や、XAML 実装ライブラリが XAML の編集機能を備えたデザイン環境とやり取りする場合に、このプレフィックスが役立ちます。 + + アセンブリに対して、複数の を適用できます。 この方法は、次の理由のいずれか、または組み合わせに基づいて使用されます。 + +- アセンブリで複数の XAML 名前空間の型を定義する。 このケースでは、XAML 名前空間ごとに異なるプレフィックス値を定義する必要があります。 + +- 複数の語彙をサポートしている状況で、語彙および XAML 名前空間ごとに異なるプレフィックスを使用する。 + +- アセンブリで XAML 言語サポートを定義し、 に `http://schemas.microsoft.com/winfx/2006/xaml` を指定する。 このケースでは通常、プレフィックス `x` を昇格させる必要があります。 + +> [!NOTE] +> .NET Framework XAML サービスでは、XAML 関連の属性 も定義します。 これは、プロジェクト システム サポート用のアセンブリ レベルの属性であり、XAML のカスタム型には関連しません。 + +## 参照 + + [Defining Custom Types for Use with .NET Framework XAML Services](../../../docs/framework/xaml-services/defining-custom-types-for-use-with-net-framework-xaml-services.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/xaml-security-considerations.md b/docs/framework/xaml-services/xaml-security-considerations.md new file mode 100644 index 00000000000..25b3cf8ae5d --- /dev/null +++ b/docs/framework/xaml-services/xaml-security-considerations.md @@ -0,0 +1,52 @@ +--- +title: "XAML Security Considerations | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "security [XAML Services], .NET XAML services" + - "XAML security [XAML Services]" +ms.assetid: 544296d4-f38e-4498-af49-c9f4dad28964 +caps.latest.revision: 7 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 7 +--- +# XAML Security Considerations +このトピックでは、XAML および .NET Framework XAML サービス API を使用するときの、アプリケーションのセキュリティのベスト プラクティスについて説明します。 + +## アプリケーションの信頼されていない XAML + 最も一般的な意味では、信頼されていない XAML とは、アプリケーションで明確に含めたり生成したりしていない XAML ソースを指します。 + + 信頼された署名済みアセンブリ内に `resx` 型のリソースとしてコンパイルまたは格納されている XAML は、本質的には信頼されていない XAML ではありません。 XAML は、アセンブリ全体と同程度に信頼することができます。 ほとんどの場合は、Loose XAML の信頼の側面のみを考慮します。Loose XAML とは、ストリームやその他の IO から読み込む XAML ソースのことです。 Loose XAML は、配置およびパッケージング インフラストラクチャを持つアプリケーション モデルの特定のコンポーネントや機能ではありません。 ただし、アセンブリは Loose XAML の読み込みを伴う動作を実装することがあります。 + + 信頼されていない XAML は、一般的には、信頼されていないコードと同じように扱う必要があります。 信頼されていない可能性がある XAML が、信頼されているコードにアクセスしないよう、サンドボックス化またはその他の比喩を使用します。 + + XAML 機能は、性質上、オブジェクトを構築し、プロパティを設定する権利を XAML に与えます。 これらの機能には、型コンバーターへのアクセス、アプリケーション ドメインのアセンブリのマッピングとアクセス、マークアップ拡張機能の使用、`x:Code` ブロックなども含まれます。 + + 言語レベルの機能に加えて、XAML は、さまざまな技術の UI の定義で使用されています。 信頼されていない XAML を読み込むと、悪意のあるなりすまし UI を読み込む可能性もあります。 + +## リーダーおよびライターによるコンテキストの共有 + XAML リーダーおよび XAML ライターの .NET Framework XAML サービス アーキテクチャでは、XAML ライターまたは XAML スキーマ コンテキストに XAML リーダーを共有する必要があります。 XAML ノード ループ ロジックを記述している場合、またはカスタム保存パスを指定する場合には、オブジェクトまたはコンテキストの共有が必要になることがあります。 信頼されているコードと信頼されていないコードの間で、XAML リーダー インスタンス、既定以外の XAML スキーマ コンテキスト、または XAML リーダー\/XAML ライター クラスの設定を共有しないでください。 + + CLR ベースの型バッキング向けの、XAML オブジェクトの記述を伴う大半のシナリオおよび操作では、既定の XAML スキーマ コンテキストのみを使用できます。 既定の XAML スキーマ コンテキストには、完全な信頼を損なう可能性がある設定は明示的には含まれていません。 そのため、信頼されている XAML リーダー\/ライター コンポーネントと、信頼されていない XAML リーダー\/ライター コンポーネントの間でコンテキストを共有しても安全です。 ただし、そうする場合は、そのようなリーダーとライターを個別の スコープに保持しておき、いずれか 1 つを部分信頼用に指定\/サンドボックス化することをお勧めします。 + +## XAML 名前空間およびアセンブリの信頼 + XAML がアセンブリに対するカスタム XAML 名前空間マッピングをどのように解釈するかについての基本的な非修飾構文および定義では、アプリケーション ドメインに読み込まれた、信頼されたアセンブリと信頼されていないアセンブリを区別しません。 そのため、理論的には、信頼されていないアセンブリが信頼されているアセンブリが目的とする XAML 名前空間マッピングになりすまし、XAML ソースの宣言されたオブジェクトおよびプロパティ情報をキャプチャすることはできます。 この状況を回避するためのセキュリティ要件がある場合は、目的の XAML 名前空間マッピングは、次のいずれかの方法によって行われる必要があります。 + +- アプリケーションの XAML によって作成されたすべての XAML 名前空間マッピングで、厳密な名前を持つ完全修飾アセンブリ名を使用する。 + +- XAML リーダーおよび XAML オブジェクト ライターに対して特定の を構築し、アセンブリ マッピングを参照アセンブリの固定セットに制限する。 「」を参照してください。 + +## XAML 型マッピングと型システム アクセス + XAML は独自の型システムをサポートしています。この型システムは、CLR が基本的な CLR 型システムを実装する方法と、多くの点で似ています。 ただし、型情報に基づいて型に関する信頼の決定を下すという、型対応の一部の側面では、CLR バッキング型の型情報に従う必要があります。 これは、XAML 型システム固有の一部のレポート機能は仮想メソッドとして開いたままになるため、元の .NET Framework XAML サービス実装の完全な制御下にはないためです。 これらの機能拡張ポイントが存在するのは、既定の CLR バッキング実装および既定の XAML スキーマ コンテキストに比べ、XAML 型システムには XAML 自体の拡張性と、使用できる型マッピング戦略に対応するだけの拡張性があるためです。 詳細については、 および のいくつかのプロパティに関するメモを参照してください。 + +## 参照 + \ No newline at end of file diff --git a/docs/framework/xaml-services/xamlname-grammar.md b/docs/framework/xaml-services/xamlname-grammar.md new file mode 100644 index 00000000000..9e4953e42d5 --- /dev/null +++ b/docs/framework/xaml-services/xamlname-grammar.md @@ -0,0 +1,76 @@ +--- +title: "XamlName の文法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "DottedXamlName の文法 [XAML サービス]" + - "文法 [XAML サービス]、DottedXamlName" + - "文法 [XAML サービス]、XamlName" + - "XAML の名前 [XAML サービス]" + - "XamlName の文法 [XAML サービス]" +ms.assetid: 11e4cada-41d2-494d-9531-0d3df4dfcbe3 +caps.latest.revision: 13 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 13 +--- +# XamlName の文法 +XamlName の文法は、XAML 言語仕様 \[MS\-XAML\] で定義された固有の文法であり、ここでは便宜上、再掲しています。 + +## XAML 仕様 + \[MS\-XAML\] 仕様では、型とプロパティに使用される正式なシンボル識別子のセットを識別するために、文法 XamlName が定義されています。 + + XamlName 型の文字列値は、次の文法に準拠している必要があります。 + +``` +XamlName ::= NameStartChar ( NameChar )* +NameStartChar ::= LetterCharacter | '_' +NameChar ::= NameStartChar | DecimalDigit | CombiningCharacter +LetterCharacter ::= UnicodeLu | UnicodeLl | UnicodeLo | UnicodeLt | UnicodeNl +DecimalDigit ::= UnicodeNd +CombiningCharacter ::= UnicodeMn | UnicodeMc + +``` + + ここでは、Unicode 文字データベースで定義されている次の一般的なカテゴリ値を想定しています。 + +``` + +Lu +Letter, Uppercase +Ll +Letter, Lowercase +Lt +Letter, Titlecase +Lm +Letter, Modifier +Lo +Letter, Other +Mn +Mark, Non-Spacing +Mc +Mark, Spacing Combining +Nd +Number, Decimal +Nl +Number, Letter +``` + + XAML では、プロパティとイベントで修飾される参照、およびアタッチされたメンバーで使用される、第 2 の文法 DottedXamlName が定義されています。 詳細については、「」および「[XAML の概要 \(WPF\)](../../../docs/framework/wpf/advanced/xaml-overview-wpf.md)」を参照してください。 + + DottedXamlName 型の文字列値は、次の文法に準拠している必要があります。 + +``` +DottedXamlName ::= XamlName '.' XamlName +``` + +## 解説 + 詳細な仕様については、「[\[MS\-XAML\]](http://go.microsoft.com/fwlink/?LinkId=114525)」を参照してください。 \ No newline at end of file diff --git a/docs/framework/xaml-services/xamlservices-class-and-basic-xaml-reading-or-writing.md b/docs/framework/xaml-services/xamlservices-class-and-basic-xaml-reading-or-writing.md new file mode 100644 index 00000000000..58c8c6c9359 --- /dev/null +++ b/docs/framework/xaml-services/xamlservices-class-and-basic-xaml-reading-or-writing.md @@ -0,0 +1,74 @@ +--- +title: "XAMLServices Class and Basic XAML Reading or Writing | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "XAML [XAML Services], XamlServices class" + - "XamlServices class [XAML Services], how to use" +ms.assetid: 6ac27fad-3687-4d7a-add1-3e90675fdfde +caps.latest.revision: 11 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 11 +--- +# XAMLServices Class and Basic XAML Reading or Writing + は、XAML ノード ストリーム、またはこれらのノードから取得された XAML 型システム情報への固有のアクセスを必要としない XAML シナリオに対応するために使用できる、.NET Framework XAML サービスによって提供されるクラスです。 要約すると、 API は次のように説明できます。`Load` または `Parse` で XAML 読み込みパスをサポートし、`Save` で XAML 保存パスをサポートし、`Transform` で読み込みパスと保存パスを連結する方法を指定します。`Transform` は、XAML スキーマを別の XAML スキーマに変更するために使用できます。 このトピックでは、それぞれの API 分類について要約し、特定のメソッド オーバーロード間の相違点について説明します。 + + +## 読み込み + のさまざまなオーバーロードは、読み込みパスのロジック全体を実装しています。 読み込みパスは、ある形式の XAML を使用して XAML ノード ストリームを出力します。 これらの読み込みパスのほとんどは、エンコードされた XML テキスト ファイル形式で XAML を使用します。 ただし、一般的なストリームを読み込むことも、異なる 実装に既に含まれているプリロード済みの XAML ソースを読み込むこともできます。 + + ほとんどのシナリオにおいて最もシンプルなオーバーロードは、 です。 このオーバーロードには、読み込まれる XAML を含むテキスト ファイル名を表す `fileName` パラメーターがあります。 これは、以前にローカル コンピューターに対してシリアル化された状態またはデータを持つ、完全信頼アプリケーションなどのアプリケーション シナリオに適しています。 また、アプリケーション モデル \(フレームワーク\) を定義している場合に、アプリケーションの動作、開始 UI、またはフレームワークによって定義された XAML を使用するその他の機能を定義した標準ファイルの 1 つを読み込む場合にも便利です。 + + にも、類似したシナリオがあります。 はファイル システムにアクセスできるその他の API の出力として頻繁に使用されるため、読み込むファイルをユーザーが選択できるようにする場合は、このオーバーロードが便利です。 または、非同期ダウンロードや、ストリームを生成するその他のネットワーク技術を使用して XAML ソースにアクセスすることもできます。 \(ストリームまたはユーザーが選択したソースからの読み込みは、セキュリティに影響が出ることがあります。 詳しくは、「[XAML Security Considerations](../../../docs/framework/xaml-services/xaml-security-considerations.md)」をご覧ください。\) + + は、.NET Framework の前のバージョンの形式のリーダーに依存するオーバーロードです。 これらのオーバーロードを使用するには、あらかじめリーダー インスタンスを作成し、その `Create` API を使用して XAML を関連形式 \(テキストまたは XML\) に読み込む必要があります。 レコード ポインターを他のリーダーに既に移動したり、またはレコード ポインターを使用して他の操作を実行したりした場合でも、そのことは問題になりません。 からの読み込みパス ロジックは、常にルート以下の XAML 入力全体を処理します。 これらのオーバーロードのシナリオには、次のものがあります。 + +- 既存の XML 用テキスト エディターを利用してシンプルな XAML 編集機能を提供するデザイン サーフェイス。 + +- 専用のリーダーを使用してファイルまたはストリームを開く、コア の派生シナリオ。 XAML として読み込む前に、コンテンツの基本的なチェックや処理をロジックで実行します。 + + ファイルまたはストリームを読み込むか、XAML 入力をラップした 、または を \(そのリーダーの API を使用して読み込むことにより\) 読み込むことができます。 + + 内部的には、上に示した各オーバーロードは最終的に になり、渡された は新しい を作成するために使用されます。 + + より高度なシナリオを提供する `Load` シグネチャは です。 このシグネチャは、次のいずれかのケースで使用できます。 + +- の独自の実装を定義した場合。 + +- 既定の設定とは異なる設定を に指定する必要がある場合。 + + 既定以外の設定は、たとえば次のものに対する設定です: の既定のリーダーは です。 独自の を提供する場合の設定では、次のプロパティが既定値以外に設定されます: 。 + + +## Parse + は、XAML 入力から XAML ノード ストリームを作成する読み込みパス API であるため、`Load` に似ています。 ただし、この場合の XAML 入力は、読み込まれる XAML 全体を含む文字列として直接指定されます。 は軽量のアプローチであり、フレームワーク シナリオよりもアプリケーション シナリオにより適しています 詳細については、「」を参照してください。 実際には、 はラップされた 呼び出しで、内部では を使用します。 + + +## 保存 + のさまざまなオーバーロードは、保存パスを実装しています。 どの メソッドもオブジェクト グラフを入力として取り、ストリーム、ファイル、または \/ インスタンスとして出力を生成します。 + + 入力オブジェクトは、何らかのオブジェクト表現のルート オブジェクトであると想定されます。 ビジネス オブジェクトの単一ルート、UI シナリオでのページのオブジェクト ツリーのルート、デザイン ツールの作業用の編集サーフェイス、またはシナリオに適したその他のルート オブジェクト概念などが考えられます。 + + 多くのシナリオでは、保存されるオブジェクト ツリーは、 またはフレームワーク\/アプリケーション モデルによって実装されたその他の API で XAML をロードした元の操作に関連しています。 状態の変更、アプリケーションがユーザーからキャプチャしたランタイム設定の変更、アプリケーションが XAML デザイン サーフェイスであるために発生する XAML の変更などにより、キャプチャされるオブジェクト ツリーに相違が生じることもあります。変更の有無にかかわらず、まずマークアップから XAML を読み込んで再保存し、2 つの XAML マークアップ フォームを比較するという概念は、XAML のラウンド トリップ表現と呼ばれることがあります。 + + マークアップ形式で設定された複合オブジェクトの保存とシリアル化に伴う課題は、完全な表現によって情報を失われないようにすることと、XAML が詳細すぎてユーザーが判読しにくい状態になることとの間のバランスを取ることです。 さらに、XAML を使用する顧客が異なれば、このバランスをどのように取るかの定義や要求も異なることがあります API は、このバランスの定義の 1 つを表します。 は、使用できる XAML スキーマ コンテキストと、 の既定の CLR ベースの特性、およびその他の組み込み XAML と XAML 型システムの概念を使用し、ある XAML ノード ストリーム構造をマークアップに再保存するときに、どこで最適化するかを決定します。 たとえば、 の保存パスでは、CLR ベースの既定の XAML スキーマ コンテキストを使用してオブジェクトの を解決し、 を決定したうえで、このオブジェクトの XAML コンテンツにプロパティを記述するときにプロパティ要素タグを省略できます。 + + +## 変換 + は、読み込みパスと保存パスを単一の操作としてリンクすることによって、XAML を変換します。 および に対して異なるスキーマ コンテキストまたは異なるバッキング型システムを使用できます。これは、結果として生成される XAML がどのように変換されるかに影響します。 これは、さまざまな変換操作で機能します。 + + XAML ノード ストリームの各ノードの確認に依存する操作については、通常、 は使用しません。 代わりに、読み込みパスから保存パスへの一連の操作を独自に定義し、独自のロジックを挿入する必要があります。 たとえば、独自のノード ループの中で XAML リーダーと XAML ライターのペアを使用します。 具体的に言うと、 を使用して最初の XAML を読み込み、 を連続的に呼び出してノードにステップ インします。 XAML ノード ストリーム レベルの操作では、個々のノード \(型、メンバー、その他のノード\) を調整して変換を適用するか、ノードをそのままにしておくことができます。 その後、ノードを の関連する `Write` API に送り、オブジェクトを書き込みます。 詳細については、「[Understanding XAML Node Stream Structures and Concepts](../../../docs/framework/xaml-services/understanding-xaml-node-stream-structures-and-concepts.md)」を参照してください。 + +## 参照 + + + [XAML Services](../../../docs/framework/xaml-services/index.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/xml-lang-handling-in-xaml.md b/docs/framework/xaml-services/xml-lang-handling-in-xaml.md new file mode 100644 index 00000000000..933233c31b5 --- /dev/null +++ b/docs/framework/xaml-services/xml-lang-handling-in-xaml.md @@ -0,0 +1,54 @@ +--- +title: "xml:lang Handling in XAML | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "XAML [XAML Services], xml:lang attribute" + - "xml:lang attribute [XAML Services]" + - "RFC 3066 standard [XAML Services]" + - "standards [XAML Services], RFC 3066" +ms.assetid: 7aac0078-a1c5-41f8-b8b0-975510d9dca0 +caps.latest.revision: 16 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 15 +--- +# xml:lang Handling in XAML +`xml:lang` 属性は [!INCLUDE[TLA2#tla_xml](../../../includes/tla2sharptla-xml-md.md)] の定義済み属性の 1 つであり、XML の要素の言語およびカルチャ情報を宣言します。 属性の意味は XAML でも同じですが、いくつかの追加の考慮事項が適用されます。 + +## XAML 属性の使用方法 + +``` + +``` + +## XAML 値 + +||| +|-|-| +|*rfc3066lang*|[RFC 3066](http://go.microsoft.com/fwlink/?LinkId=132454) 標準で定義されている文字列。1 つの言語、または言語と地域を表します。 後者の場合は、言語と地域が 1 つのハイフンで区切られます。 値と形式の詳細については、「」を参照してください。| + +## 解説 + [!INCLUDE[TLA2#tla_xaml](../../../includes/tla2sharptla-xaml-md.md)] における `xml:lang` 属性の定義は、[!INCLUDE[TLA#tla_w3c](../../../includes/tlasharptla-w3c-md.md)] によって [!INCLUDE[TLA2#tla_xml](../../../includes/tla2sharptla-xml-md.md)] の "特別な属性" として定義された `xml:lang` から派生したものです。 言語およびカルチャ情報が要素によって処理される方法は、実装に応じて異なる可能性がありますが、[!INCLUDE[TLA2#tla_xaml](../../../includes/tla2sharptla-xaml-md.md)] における `xml:lang` 属性の既定の処理というものは存在しません。 + + `xml:lang` 属性の既定値は、属性レベルで空の文字列です。 + + `xml:lang` 属性の効果と属性の値が、`xml:lang` 値を処理するシステムによって解釈される場合、これらの効果と値は、通常、子要素に反映されます。 + + .NET Framework XAML サービスの XAML ライターによって解釈される場合、`xml:lang` 値によって、基になるオブジェクト表現に オブジェクトや オブジェクトが作成される可能性があります。ただし、この動作は、`xml:lang` に指定されている値が、それらのクラスを構築するための入力として有効であるかどうかに依存します。 + + フレームワークは、 をプロパティに適用することによって、フレームワーク定義プロパティと XML 内の `xml:lang` の意味を関連付けることができます。 + +## WPF の使用上の注意 + 要素が または の派生クラスの場合は、`xml:lang` 属性の代わりに、同等の 依存関係プロパティを使用できます。 別途設定されない限り、 プロパティの値は既定で "en\-US" となります。このプロパティの値は、このプロパティを通して、または `xml:lang` 属性を処理することによって設定されます。 + +## 参照 + [WPF のグローバリゼーション](../../../docs/framework/wpf/advanced/globalization-for-wpf.md) \ No newline at end of file diff --git a/docs/framework/xaml-services/xml-space-handling-in-xaml.md b/docs/framework/xaml-services/xml-space-handling-in-xaml.md new file mode 100644 index 00000000000..a6ffb0c4b71 --- /dev/null +++ b/docs/framework/xaml-services/xml-space-handling-in-xaml.md @@ -0,0 +1,52 @@ +--- +title: "xml:space Handling in XAML | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net-framework" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-wpf" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "XAML [XAML Services], xml:space attribute" + - "XAML [XAML Services], whitespace processing" + - "xml:space attribute [XAML Services]" + - "whitespace processing [XAML Services]" +ms.assetid: 5e1814f0-5b30-43d5-8c88-dede335a89d7 +caps.latest.revision: 15 +author: "wadepickett" +ms.author: "wpickett" +manager: "wpickett" +caps.handback.revision: 15 +--- +# xml:space Handling in XAML +`xml:space` 属性は XML で定義される属性であり、重要な空白の処理動作をオブジェクト要素内で宣言します。 この動作は、`xml:space` が宣言されている要素に含まれるすべてのコンテンツ \(内部テキスト\) に関連すると同時に、そのスコープは子要素にも及びます。 + +## XAML 属性の使用方法 + +``` + +``` + + または + +``` + +``` + +## 解説 + 2 つの指定可能な値を含め、XAML の `xml:space` 属性の定義は、XML の W3C 仕様で "特別な属性" として定義されている `xml:space` から派生しています。 + + `xml:space` 属性の既定値は、リテラル値の `"default"` です。 値が `"default"` の場合、または `xml:space` がまったく示されていない場合、重要な空白の解析は、トピック「[Whitespace Processing in XAML](../../../docs/framework/xaml-services/whitespace-processing-in-xaml.md)」で定義されているように、既定の動作で処理されます。 + + オブジェクト要素のコンテンツ内で空白を保持するには、そのオブジェクト要素で `xml:space="preserve"` を指定します。 + + ほとんどの解釈では、`xml:space` 属性の効果と属性の値は、子要素に反映されます。 + + XAML での空白の処理の詳細については、「[Whitespace Processing in XAML](../../../docs/framework/xaml-services/whitespace-processing-in-xaml.md)」を参照してください。 + +## 参照 + [Whitespace Processing in XAML](../../../docs/framework/xaml-services/whitespace-processing-in-xaml.md) + [XAML の概要 \(WPF\)](../../../docs/framework/wpf/advanced/xaml-overview-wpf.md) \ No newline at end of file diff --git a/docs/standard/TOC.md b/docs/standard/TOC.md new file mode 100644 index 00000000000..3f42c2c8c92 --- /dev/null +++ b/docs/standard/TOC.md @@ -0,0 +1,10 @@ +# [Parallel Processing and Concurrency](parallel-processing-and-concurrency.md) +# [数値](numerics.md) +# [自動メモリ管理](automatic-memory-management.md) +# [コンソール アプリケーションの構築](building-console-apps.md) +# [クラス ライブラリの概要](class-library-overview.md) +# [アプリケーションの基本事項](application-essentials.md) +# [言語への非依存性、および言語非依存コンポーネント](language-independence-and-language-independent-components.md) +# [マネージ実行プロセス](managed-execution-process.md) +# [メタデータと自己言及的なコンポーネント](metadata-and-self-describing-components.md) +# [共通言語ランタイム](clr.md) diff --git a/docs/standard/application-essentials.md b/docs/standard/application-essentials.md new file mode 100644 index 00000000000..f593685d3aa --- /dev/null +++ b/docs/standard/application-essentials.md @@ -0,0 +1,75 @@ +--- +title: ".NET Framework アプリケーションの基本事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework の開発" +ms.assetid: 653da4ba-3752-4d1f-a08a-de017dc86ecc +caps.latest.revision: 19 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 19 +--- +# .NET Framework アプリケーションの基本事項 +.NET Framework ドキュメントのこのセクションでは、.NET Framework での基本的なアプリケーション開発タスクに関する情報を提供します。 + +## このセクションの内容 + [基本データ型](../../docs/standard/base-types/index.md) + 基本データ型の書式指定と解析、および正規表現を使用したテキストの処理について説明します。 + + [コレクションとデータ構造体](../../docs/standard/collections/index.md) + .NET Framework で利用できるスタック、キュー、リスト、配列、構造体などのさまざまなコレクション型について説明します。 + + [ジェネリック](../../docs/standard/generics/index.md) + ジェネリック コレクション、ジェネリック デリゲート、ジェネリック インターフェイスなど、.NET Framework に用意されているジェネリック機能について説明します。 C#、Visual Basic、および Visual C++ の機能についてのドキュメント、およびリフレクションなどのサポート テクノロジへのリンクを示します。 + + [数値](../../docs/standard/numerics.md) + .NET Framework での数値型について説明します。 + + [イベント](../../docs/standard/events/index.md) + .NET Framework のイベント モデルについて概説します。 + + [例外](../../docs/standard/exceptions/index.md) + .NET Framework が提供するエラー処理および例外処理の基本事項について説明します。 + + [ファイルおよびストリームは、O](../../docs/standard/io/index.md) + ファイルやデータ ストリームに対する同期アクセスおよび非同期アクセスの実行方法と、分離ストレージの使用方法について説明します。 + + [日付、時刻、およびタイム ゾーン](../../docs/standard/datetime/index.md) + タイム ゾーン対応のアプリケーションでのタイム ゾーンの処理方法とタイム ゾーンの変換について説明します。 + + [アプリケーション ドメインとアセンブリ](../../docs/framework/app-domains/index.md) + アセンブリとアプリケーション ドメインの作成方法および操作方法について説明します。 + + [シリアル化](../../docs/framework/serialization/index.md) + オブジェクトの状態を永続化または転送できる形式に変換するプロセスについて説明します。 + + [デスクトップ アプリでのリソース](../../docs/framework/resources/index.md) + リソースを作成し格納するための .NET Framework のサポートについて説明します。 また、このセクションでは、ローカライズされたリソースに対するサポートについて説明し、それらローカライズされたリソースのパッケージ化および配置のサテライト アセンブリ リソース モデルについて説明します。 + + [グローバリゼーションとローカリゼーション](../../docs/standard/globalization-localization/index.md) + 国際対応アプリケーションの設計および開発に役立つ情報を提供します。 + + ユーザー補助 + Microsoft UI オートメーションについて説明します。Microsoft UI オートメーションは、ユーザー インターフェイス (UI) に関する情報をプログラムで使用できるようにすることにより、ユーザー補助技術製品および自動テスト フレームワークに対するニーズに応えるアクセシビリティ フレームワークです。 + + [属性](../../docs/standard/attributes/index.md) + 属性を使用してメタデータをカスタマイズする方法について説明します。 + + [64 ビット アプリケーション](../../docs/framework/64-bit-apps.md) + Windows 64 ビット オペレーティング システムで動作するアプリケーションの開発に関する問題について説明します。 + +## 関連項目 + [開発ガイド](../../docs/framework/development-guide.md) + アプリケーションの作成、構成、デバッグ、セキュリティ、配置、および動的プログラミング、相互運用性、拡張性、メモリ管理、スレッド処理に関する情報を含む、アプリケーション開発用の主要な技術領域とタスクのすべてについての手引書です。 + + [セキュリティ](../../docs/standard/security/index.md) + 共通言語ランタイムおよび .NET Framework において安全なアプリケーションの開発を促進するクラスおよびサービスに関する情報を提供します。 \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/TOC.md b/docs/standard/asynchronous-programming-patterns/TOC.md new file mode 100644 index 00000000000..be7054b699a --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/TOC.md @@ -0,0 +1,23 @@ +# [Implementing the Task-based Asynchronous Pattern](implementing-the-task-based-asynchronous-pattern.md) +# [Interop with Other Asynchronous Patterns and Types](interop-with-other-asynchronous-patterns-and-types.md) +# [Using an AsyncCallback Delegate and State Object](using-an-asynccallback-delegate-and-state-object.md) +# [Blocking Application Execution by Ending an Async Operation](blocking-application-execution-by-ending-an-async-operation.md) +# [Asynchronous Programming Model (APM)](asynchronous-programming-model-apm.md) +# [Event-based Asynchronous Pattern (EAP)](event-based-asynchronous-pattern-eap.md) +# [Polling for the Status of an Asynchronous Operation](polling-for-the-status-of-an-asynchronous-operation.md) +# [Deciding When to Implement the Event-based Asynchronous Pattern](deciding-when-to-implement-the-event-based-asynchronous-pattern.md) +# [Using an AsyncCallback Delegate to End an Asynchronous Operation](using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md) +# [Multithreaded Programming with the Event-based Asynchronous Pattern](multithreaded-programming-with-the-event-based-asynchronous-pattern.md) +# [Task-based Asynchronous Pattern (TAP)](task-based-asynchronous-pattern-tap.md) +# [Event-based Asynchronous Pattern Overview](event-based-asynchronous-pattern-overview.md) +# [Walkthrough: Implementing a Component That Supports the Event-based Asynchronous Pattern](component-that-supports-the-event-based-asynchronous-pattern.md) +# [Asynchronous Programming Patterns](index.md) +# [イベントベースの非同期パターンを実装するための推奨される手順](best-practices-for-implementing-the-event-based-asynchronous-pattern.md) +# [イベントベースの非同期パターンの実装](implementing-the-event-based-asynchronous-pattern.md) +# [Calling Synchronous Methods Asynchronously](calling-synchronous-methods-asynchronously.md) +# [How to: Implement a Component That Supports the Event-based Asynchronous Pattern](component-that-supports-the-event-based-asynchronous-pattern.md) +# [Asynchronous Programming Using Delegates](asynchronous-programming-using-delegates.md) +# [How to: Use Components That Support the Event-based Asynchronous Pattern](how-to-use-components-that-support-the-event-based-asynchronous-pattern.md) +# [How to: Implement a Client of the Event-based Asynchronous Pattern](how-to-implement-a-client-of-the-event-based-asynchronous-pattern.md) +# [Calling Asynchronous Methods Using IAsyncResult](calling-asynchronous-methods-using-iasyncresult.md) +# [Consuming the Task-based Asynchronous Pattern](consuming-the-task-based-asynchronous-pattern.md) diff --git a/docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md b/docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md new file mode 100644 index 00000000000..113f2878b7a --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md @@ -0,0 +1,75 @@ +--- +title: "Asynchronous Programming Model (APM) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ending asynchronous operations" + - "starting asynchronous operations" + - "beginning asynchronous operations" + - "asynchronous programming, ending operations" + - "asynchronous programming" + - "stopping asynchronous operations" + - "asynchronous programming, beginning operations" +ms.assetid: c9b3501e-6bc6-40f9-8efd-4b6d9e39ccf0 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# Asynchronous Programming Model (APM) + デザイン パターンを使用する非同期操作は **Begin** *OperationName* と **End** *OperationName* という名前の、各 *OperationName* 非同期操作を開始および終了する 2 種類のメソッドとして実装されます。 たとえば、 クラスは、 および メソッドを提供して、非同期的にファイルからバイトを読み取ります。 これらのメソッドは非同期バージョンの メソッドを実装します。 + +> [!NOTE] +> .NET Framework 4 以降では、タスク並列ライブラリによって非同期\/並列プログラミングの新しいモデルが提供されます。 詳細については、「[Task Parallel Library \(TPL\)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md)」および「[Task\-based Asynchronous Pattern \(TAP\)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md)」を参照してください。 + + **Begin** *OperationName* を呼び出した後、アプリケーションは別のスレッドで非同期操作が行われている間も、スレッドの呼び出しに関する命令の実行を続行できます。**Begin** *OperationName* の呼び出しごとに、アプリケーションでは **End** *OperationName* も呼び出して、操作の結果を取得する必要があります。 + +## 非同期操作の開始 + **Begin** *OperationName* メソッドは非同期操作 *OperationName* を開始し、 インターフェイスを実装するオブジェクトを返します。 オブジェクトは非同期操作に関する情報を格納します。 非同期操作に関する情報を次の表に示します。 + +|メンバー|説明| +|----------|--------| +||非同期操作についての情報を格納するオプションのアプリケーション固有オブジェクト。| +||。非同期操作が完了するまでアプリケーションの実行をブロックするために使用できます。| +||非同期操作が別の スレッドで完了する代わりに、**Begin** *OperationName* の呼び出しに使用されたスレッドで完了したかどうかを示す値。| +||非同期操作が完了したかどうかを示す値。| + + **Begin** *OperationName* メソッドは、同期バージョンのメソッドのシグネチャで宣言された、値渡しまたは参照渡しのパラメーターを受け取ります。 どの out パラメーターも、**Begin** *OperationName* メソッド シグネチャの一部ではありません。**Begin** *OperationName* メソッド シグネチャには、2 種類の追加のパラメーターが含まれます。 1 つ目のパラメーターは、非同期操作が完了したときに呼び出されるメソッドを参照する デリゲートを定義します。 操作完了時にメソッドを呼び出さない場合、呼び出し元は `null` \(Visual Basic では `Nothing`\) を指定できます。 2 つ目の追加のパラメーターは、ユーザー定義オブジェクトです。 このオブジェクトは、アプリケーション固有の状態情報を、非同期操作が完了したときに呼び出されるメソッドに渡すために使用できます。**Begin** *OperationName* メソッドが、ファイルから読み取ったバイトを格納するバイト配列など操作固有の追加のパラメーターを受け取る場合は、 とアプリケーション状態オブジェクトが **Begin** *OperationName* メソッド シグネチャの最後のパラメーターになります。 + + **Begin** *OperationName* は、瞬時にコントロールを呼び出し元スレッドに返します。**Begin** *OperationName* メソッドが例外をスローする場合は、非同期操作が開始される前に例外がスローされます。**Begin** *OperationName* メソッドが例外をスローする場合、コールバック メソッドは呼び出されません。 + +## 非同期操作の終了 + **End** *OperationName* メソッドは、非同期操作の *OperationName* を終了します。**End** *OperationName* メソッドの戻り値は、このメソッドの対応する同期操作によって返される型と同じ型であり、非同期操作に固有です。 たとえば、 メソッドは から読み取ったバイト数を返し、 メソッドはホスト コンピューターに関する情報を含む オブジェクトを返します。**End** *OperationName* メソッドは、メソッドの同期バージョンのシグネチャで宣言された out パラメーターや ref パラメーターをすべて受け取ります。**End** *OperationName* メソッドには、同期メソッドからのパラメーターに加えて パラメーターが含まれています。 呼び出し元は、対応する呼び出しから返されたインスタンスを **Begin** *OperationName* に渡す必要があります。 + + **End** *OperationName* が呼び出されるときに オブジェクトによって表される非同期操作が完了していない場合、**End** *OperationName* は非同期操作が完了するまで、呼び出し元スレッドをブロックします。 非同期操作によってスローされた例外は、**End** *OperationName* メソッドからスローされます。 同じ を使用して **End** *OperationName* メソッドを複数回呼び出す場合の効果は定義されません。 同様に、関連する Begin メソッドによって返されたのではない を使用した **End** *OperationName* メソッドの呼び出しも定義されません。 + +> [!NOTE] +> どちらの未定義シナリオの場合でも、実装者は のスローを検討する必要があります。 + +> [!NOTE] +> このデザイン パターンの実装者は を true に設定し、非同期コールバック メソッドを呼び出して \(指定されている場合\)、 をシグナリングすることで、非同期操作の完了を呼び出し元に通知する必要があります。 + + アプリケーション開発者には、非同期操作の結果にアクセスするための、デザイン上の選択肢がいくつかあります。 どの選択が適切になるかは、アプリケーションが操作の完了前に実行できる命令を持っているかどうかによって変わります。 非同期操作の結果を受け取るまで、アプリケーションが別の作業を実行できない場合は、結果が使用可能になるまで、そのアプリケーションをブロックする必要があります。 非同期操作が完了するまでブロックするには、次に示す方法の 1 つを使用します。 + +- アプリケーションのメイン スレッドから **End** *OperationName* を呼び出し、操作が完了するまでアプリケーションの実行をブロックします。 この手法の例については、「[Blocking Application Execution by Ending an Async Operation](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md)」を参照してください。 + +- を使用して、1 つ以上の操作が完了するまでアプリケーションの実行をブロックします。 この手法の例については、「[Blocking Application Execution Using an AsyncWaitHandle](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md)」を参照してください。 + + 非同期操作が完了するまでアプリケーションをブロックする必要がない場合は、次のいずれかの方法を使用します。 + +- プロパティを定期的に確認し、操作が完了したときに **End** *OperationName* を呼び出して、操作完了ステータスをポーリングします。 この手法の例については、「[Polling for the Status of an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md)」を参照してください。 + +- デリゲートを使用して、操作が完了したときに呼び出されるメソッドを指定します。 この手法の例については、「[Using an AsyncCallback Delegate to End an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md)」を参照してください。 + +## 参照 + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) + [Calling Synchronous Methods Asynchronously](../../../docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md) + [Using an AsyncCallback Delegate and State Object](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/asynchronous-programming-using-delegates.md b/docs/standard/asynchronous-programming-patterns/asynchronous-programming-using-delegates.md new file mode 100644 index 00000000000..3b880f1e7ae --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/asynchronous-programming-using-delegates.md @@ -0,0 +1,46 @@ +--- +title: "Asynchronous Programming Using Delegates | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "BeginInvoke method" + - "asynchronous programming, delegates" + - "asynchronous delegates" + - "calling synchronous methods in asynchronous manner" + - "EndInvoke method" + - "calling asynchronous methods" + - "delegates [.NET Framework], asynchronous" + - "synchronous calling in asynchronous manner" +ms.assetid: 38a345ca-6963-4436-9608-5c9defef9c64 +caps.latest.revision: 16 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# Asynchronous Programming Using Delegates +デリゲートを使用すると、同期メソッドを非同期的に呼び出すことができます。 デリゲートを同期的に呼び出すと、`Invoke` メソッドによって対象メソッドが現在のスレッドで直接呼び出されます。 `BeginInvoke` メソッドが呼び出されると、共通言語ランタイム \(CLR: Common Language Runtime\) は要求をキューに置き、すぐに呼び出し元に戻ります。 対象メソッドは、スレッド プールのスレッドで非同期に呼び出されます。 要求を送信した元のスレッドは、対象メソッドと並行して継続実行できます。 `BeginInvoke` メソッドの呼び出しにコールバック メソッドを指定した場合、対象メソッドの終了時に、そのコールバック メソッドが呼び出されます。 コールバック メソッドでは、`EndInvoke` メソッドを使用して、戻り値と、入出力パラメーターまたは出力専用パラメーターを取得します。 `BeginInvoke` の呼び出しにコールバック メソッドを指定しなかった場合は、`BeginInvoke` を呼び出したスレッドから `EndInvoke` を呼び出すことができます。 + +> [!IMPORTANT] +> コンパイラは、ユーザーが指定したデリゲート シグネチャを使用して、`Invoke`、`BeginInvoke`、`EndInvoke` の各メソッドを持つデリゲート クラスを出力します。 `BeginInvoke` メソッドと `EndInvoke` メソッドは、ネイティブとして修飾されます。 これら 2 つのメソッドはネイティブとしてマークされるため、クラスの読み込み時には、CLR によって自動的にメソッドが実装されます。 ローダーは、これらのメソッドがオーバーライドされないことを保証します。 + +## このセクションの内容 + [Calling Synchronous Methods Asynchronously](../../../docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md) + デリゲートを使用した通常のメソッドの非同期呼び出しについて説明すると共に、簡単なコード例を示して、非同期呼び出しが戻るのを待機する 4 つの方法を紹介します。 + + [非同期デリゲートのプログラミング サンプル](../Topic/Asynchronous%20Delegates%20Programming%20Sample.md) + デリゲートを使用して非同期呼び出しを行う例を示します。ここでは、より複雑なコード例を紹介し、数値の因数分解を実行します。 + +## 関連項目 + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) + .NET Framework での非同期プログラミングについて説明します。 + +## 参照 + \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md new file mode 100644 index 00000000000..1f935ff4bbc --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md @@ -0,0 +1,163 @@ +--- +title: "イベントベースの非同期パターンを実装するための推奨される手順 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "イベント ベースの非同期パターン" + - "ProgressChangedEventArgs クラス" + - "BackgroundWorker コンポーネント" + - "イベント [.NET Framework], 非同期" + - "AsyncOperationManager クラス" + - "スレッド処理 [.NET Framework], 非同期機能" + - "AsyncOperation クラス" + - "AsyncCompletedEventArgs クラス" +ms.assetid: 4acd2094-4f46-4eff-9190-92d0d9ff47db +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# イベントベースの非同期パターンを実装するための推奨される手順 +イベントベースの非同期パターンは、使い慣れたイベントおよびデリゲートのセマンティクスと共に、クラス内の非同期動作を公開する効果的な方法を提供します。 イベント ベースの非同期パターンを実装するには、いくつかの固有の動作要件に従う必要があります。 以降のセクションでは、イベントベースの非同期パターンに従うクラスを実装する際に検討すべき要件とガイドラインについて説明します。 + + 概要については、「[Implementing the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md)」を参照してください。 + +## 必要な動作保証 + イベントベースの非同期パターンを実装する場合は、クラスが適切に動作し、クラスのクライアントがそのような動作に依存できるようにするため、多数の保証を提供する必要があります。 + +### 完了 + 正常完了、エラー、またはキャンセルの場合に常に *MethodName*`Completed` イベント ハンドラーを呼び出します。 アプリケーションがアイドルになり完了しない状態が発生してはなりません。 この規則の唯一の例外として、非同期操作自体は完了することがないように設計されている場合があります。 + +### 完了イベントおよび EventArg + 個別の *MethodName*`Async` メソッドごとに、次の設計要件を適用します。 + +- メソッドと同じクラスで *MethodName*`Completed` イベントを定義します。 + +- クラスから派生した *MethodName*`Completed` イベントの クラスと、これに付随するデリゲートを定義します。 既定のクラス名の形式は *MethodName*`CompletedEventArgs` です。 + +- クラスは、*MethodName* メソッドの戻り値に固有のクラスにしてください。 クラスを使用する場合は、開発者に対して結果をキャストすることを義務付けないでください。 + + 設計要件の適切な実装と不適切な実装を次のコード例に示します。 + +```csharp +// Good design +private void Form1_MethodNameCompleted(object sender, xxxCompletedEventArgs e) +{ + DemoType result = e.Result; +} + +// Bad design +private void Form1_MethodNameCompleted(object sender, MethodNameCompletedEventArgs e) +{ + DemoType result = (DemoType)(e.Result); +} +``` + +- を返すメソッドのために `void` クラスを定義しないでください。 代わりに クラスのインスタンスを使用してください。 + +- 常に *MethodName*`Completed` イベントを発生させてください。 このイベントは、正常完了、エラー、またはキャンセル時に発生する必要があります。 アプリケーションがアイドルになり完了しない状態が発生してはなりません。 + +- 非同期操作で発生した例外をすべてキャッチし、キャッチした例外を プロパティに割り当ててください。 + +- タスクの実行中にエラーが発生した場合は、結果にアクセスできないようにしてください。 プロパティが `null` ではない場合は、 構造体のプロパティにアクセスすると例外が発生するようにしてください。 この検証を行うには、 メソッドを使用します。 + +- タイムアウトをエラーとしてモデル化します。 タイムアウトが発生したら、*MethodName*`Completed` イベントを発生させ、 プロパティに割り当てます。 + +- クラスで複数の同時呼び出しがサポートされている場合は、*MethodName*`Completed` イベントに適切な `userSuppliedState` オブジェクトが含まれるようにしてください。 + +- *MethodName* `Completed` イベントが、適切なスレッドでアプリケーション サイクルの適切な時点で発生するようにしてください。 詳細については、「スレッド処理およびコンテキスト」を参照してください。 + +### 操作の同時実行 + +- クラスで複数の同時呼び出しがサポートされている場合は、開発者が各呼び出しを個別に追跡できるようにするため、オブジェクト値状態パラメーターまたはタスク ID `userSuppliedState` を受け取る *MethodName*`Async` オーバーライドを定義します。 このパラメーターは常に *MethodName*`Async` メソッドのシグネチャの最終パラメーターにする必要があります。 + +- オブジェクト値状態パラメーターまたはタスク ID を受け取る *MethodName*`Async` オーバーロードがクラスによって定義される場合は、そのタスク ID の操作の有効期間を追跡し、完了ハンドラーに戻す必要があります。 役に立つヘルパー クラスがあります。 同時実行管理の詳細については、「[Walkthrough: Implementing a Component That Supports the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)」を参照してください。 + +- クラスによって、状態パラメーターなしで *MethodName*`Async` メソッドが定義され、このクラスで複数の同時呼び出しがサポートされていない場合、直前の *MethodName*`Async` 呼び出しが完了する前に *MethodName*`Async` を呼び出そうとすると、 が発生するようにします。 + +- 一般に、`userSuppliedState` パラメーターのない *MethodName*`Async` メソッドを複数回呼び出すときには、複数の未完了操作が存在するようにするため、例外を発生させないでください。 例外を発生させることができるのは、クラスがその状況に対処できないことが明らかであるものの、開発者がこのような区別できない複数のコールバックを処理できる場合です。 + +### 結果へのアクセス + +- 非同期操作の実行中にエラーが発生した場合、その結果にはアクセスできないようにしてください。 ではない場合に `null` のプロパティにアクセスすると、 により参照される例外が発生するようにしてください。. クラスには、この目的で使用する メソッドが用意されています。 + +- 結果にアクセスしようとすると、操作がキャンセルされたことを示す が発生するようにしてください。 この検証を行うには、 メソッドを使用します。 + +### 進行状況のレポート + +- 可能であれば、進行状況レポートをサポートします。 これにより、開発者はクラスを使用する際に、より優れたアプリケーション ユーザー エクスペリエンスを提供できます。 + +- `ProgressChanged`\/*MethodName*`ProgressChanged` イベントを実装する場合は、操作の *MethodName*`Completed` イベントが発生した後で、特定の非同期操作についてそのようなイベントが発生していないようにしてください。 + +- 標準 の値が設定される場合は、 が常にパーセンテージとして解釈できるようにしてください。 パーセンテージは正確である必要はありませんが、パーセンテージを表している必要があります。 進行状況レポート メトリックがパーセンテージ以外でなければならない場合は、 クラスからクラスを派生し、 は 0 のままにしておきます。 パーセンテージ以外のレポート メトリックは使用しないでください。 + +- `ProgressChanged` イベントが、適切なスレッドでアプリケーション サイクルの適切な時点で発生するようにしてください。 詳細については、「スレッド処理およびコンテキスト」を参照してください。 + +### IsBusy 実装 + +- クラスが複数の同時呼び出しをサポートしている場合は、`IsBusy` プロパティを公開しないでください。 たとえば XML Web サービス プロキシは、非同期メソッドの複数同時呼び出しをサポートしているため、`IsBusy` プロパティを公開しません。 + +- `IsBusy` プロパティは、*MethodName*`Async` メソッドが呼び出されてから、*MethodName*`Completed` イベントが発生するまでの間は、`true` を返します。 それ以外の場合は、`false` を返す必要があります。 プロパティを公開するクラスの例として、 および `IsBusy` コンポーネントがあります。 + +### キャンセル + +- 可能であれば、キャンセルをサポートしてください。 これにより、開発者はクラスを使用する際に、より優れたアプリケーション ユーザー エクスペリエンスを提供できます。 + +- キャンセルの場合、 オブジェクトに フラグを設定します。 + +- 結果にアクセスしようとすると、操作がキャンセルされたことを示す が発生するようにしてください。 この検証を行うには、 メソッドを使用します。 + +- キャンセル メソッドの呼び出しは常に正常に戻り、例外を発生させないようにしてください。 一般に、特定の時点で操作が実際にキャンセル可能かどうかと、前に発行したキャンセルが正常に実行されたかどうかはクライアントに通知されません。 ただし、キャンセルが正常に完了すると常にアプリケーションに通知が送られます。これは、アプリケーションが完了ステータスに関与しているためです。 + +- 操作がキャンセルされた場合は *MethodName*`Completed` イベントを発生させます。 + +### エラーおよび例外 + +- 非同期操作で発生した例外をすべてキャッチし、その例外の プロパティの値を設定します。 + +### スレッド処理およびコンテキスト + クラスを正しく操作するには、特定のアプリケーション モデル \([!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] および Windows Forms アプリケーションを含む\) の適切なスレッドまたはコンテキストで、クライアントのイベント ハンドラーが呼び出されることが重要です。 非同期クラスがどのアプリケーション モデルでも正しく動作するように、 という 2 つの重要なヘルパー クラスが用意されています。 + + にはメソッド が含まれています。このメソッドは を返します。*MethodName*`Async` メソッドは を呼び出し、クラスは返される を使用して非同期タスクの有効期間を追跡します。 + + 進行状況、インクリメンタル結果、および完了をクライアントに報告するため、 メソッドと メソッドを呼び出します。 は、クライアントのイベント ハンドラーに対する呼び出しを適切なスレッドまたはコンテキストにマーシャリングします。 + +> [!NOTE] +> アプリケーション モデルのポリシーに対し明示的に準拠しないものの、イベント ベースの非同期パターンを使用する他のメリットを利用したい場合は、これらの規則を回避できます。 たとえば、Windows Forms でのクラス操作をフリー スレッド化するとします。 開発者がフリー スレッド化クラスの暗黙的な制限を理解している場合は、フリースレッド化クラスを作成できます。 コンソール アプリケーションは 呼び出しの実行を同期しません。 これが原因で、`ProgressChanged` イベントが正しくない順序で発生することがあります。 呼び出しを順次実行するには、 クラスを実装およびインストールします。 + + を使用して非同期操作を使用可能にする方法の詳細については、「[Walkthrough: Implementing a Component That Supports the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)」を参照してください。 + +## ガイドライン + +- 各メソッド呼び出しが相互に独立していることが理想的です。 呼び出しを共有リソースと組み合わせないでください。 リソースを複数の呼び出し間で共有する場合は、実装に適切な同期メカニズムを提供する必要があります。 + +- クライアントが同期を実装する必要がある設計は推奨されません。 たとえば、グローバルな静的オブジェクトをパラメータとして受け取る非同期メソッドがあり、この非同期メソッドを同時に複数呼び出すと、データの破損またはデッドロックが発生することがあります。 + +- 複数呼び出しのオーバーロード \(シグネチャの `userState`\) を使用してメソッドを実装する場合、ユーザー状態、タスク ID、対応する保留操作のコレクションをクラスで管理する必要があります。 さまざまな呼び出しでこのコレクションの `lock` オブジェクトが追加および削除されるため、このコレクションを `userState` 領域で保護する必要があります。 + +- 可能かつ適切な場合は、`CompletedEventArgs` クラスの再利用を検討してください。 この場合、特定のデリゲートと 型が 1 つのメソッドに関連付けられていないため、名前付けにはメソッド名との整合性がありません。 ただし、開発者に対して のプロパティから取得した値をキャストすることを強制することはできません。 + +- から派生したクラスを編集する場合、独自の クラスを実装およびインストールしないでください。 使用される を制御するのは、コンポーネントではなくアプリケーション モデルです。 + +- どのようなマルチスレッドを使用する場合でも、深刻かつ複雑なバグが発生する可能性があります。 マルチスレッドを使用するソリューションを実装する前に、「[Managed Threading Best Practices](../../../docs/standard/threading/managed-threading-best-practices.md)」を参照してください。 + +## 参照 + + + + + + [Implementing the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md) + [Multithreaded Programming with the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md) + [Deciding When to Implement the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md) + [Best Practices for Implementing the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md) + [How to: Use Components That Support the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md) + [Walkthrough: Implementing a Component That Supports the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md b/docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md new file mode 100644 index 00000000000..4b80192106c --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md @@ -0,0 +1,41 @@ +--- +title: "Blocking Application Execution by Ending an Async Operation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "blocks, asynchronous operations" + - "AsyncWaitHandle property" + - "asynchronous programming, blocking applications" + - "blocking application execution" +ms.assetid: cc5e2834-a65b-4df8-b750-7bdb79997fee +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Blocking Application Execution by Ending an Async Operation +非同期操作の結果を待っている間に他の作業を行うことができないアプリケーションは、操作が完了するまでブロックする必要があります。 非同期操作の完了を待っている間に、アプリケーションのメイン スレッドをブロックするには、次のいずれかのオプションを使用します。 + +- 非同期操作の **\[終了\]** *OperationName* のメソッドを呼び出します。 この方法については、このトピックで説明します。 + +- 非同期操作の **\[開始\]** *OperationName* のメソッドによって返される のプロパティを使用します。 この方法の実行例については、「[Blocking Application Execution Using an AsyncWaitHandle](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md)」を参照してください。 + + 非同期操作が完了するまでブロックするに **\[終了\]** *OperationName* のメソッドを使用するアプリケーションは、通常 **\[開始\]** *OperationName* のメソッドを呼び出した後、操作の結果がなくても行うことができます。次に、**\[終了\]** *OperationName*を作業を呼び出します。 + +## 例 + クラスで非同期メソッドを使用して、ユーザー指定のコンピューターのドメイン ネーム システム \(DNS\) 情報を取得するコード例を次に示します。 ここで使用する方法では、 の `requestCallback` パラメーターと `stateObject` パラメーターは不要なので、これらには `null` \(Visual Basic では `Nothing`\) が渡されます。 + + [!code-csharp[AsyncDesignPattern#1](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDesignPattern/CS/Async_EndBlock.cs#1)] + [!code-vb[AsyncDesignPattern#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDesignPattern/VB/Async_EndBlock.vb#1)] + +## 参照 + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) + [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/calling-asynchronous-methods-using-iasyncresult.md b/docs/standard/asynchronous-programming-patterns/calling-asynchronous-methods-using-iasyncresult.md new file mode 100644 index 00000000000..8bf0a25eed6 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/calling-asynchronous-methods-using-iasyncresult.md @@ -0,0 +1,40 @@ +--- +title: "Calling Asynchronous Methods Using IAsyncResult | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ending asynchronous operations" + - "waiting for asynchronous operations" + - "asynchronous method calling" + - "calling asynchronous methods" + - "asynchronous programming, calling asynchronous methods" + - "IAsyncResult interface, calling asynchronous methods" + - "stopping asynchronous operations" +ms.assetid: 07fba116-045b-473c-a0b7-acdbeb49861f +caps.latest.revision: 6 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 6 +--- +# Calling Asynchronous Methods Using IAsyncResult +.NET Framework およびサードパーティ製クラス ライブラリの型は、メイン アプリケーション スレッド以外のスレッドで非同期操作を実行中に、アプリケーションの実行を継続できるメソッドを提供します。 以降のセクションでは、 デザイン パターンを使用する非同期メソッドを呼び出すことのできる、さまざまなコード例を説明および紹介します。 + +- [Blocking Application Execution by Ending an Async Operation](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-by-ending-an-async-operation.md). + +- [Blocking Application Execution Using an AsyncWaitHandle](../../../docs/standard/asynchronous-programming-patterns/blocking-application-execution-using-an-asyncwaithandle.md). + +- [Polling for the Status of an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md). + +- [Using an AsyncCallback Delegate to End an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md). + +## 参照 + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) + [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md b/docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md new file mode 100644 index 00000000000..a79619a7e5d --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously.md @@ -0,0 +1,115 @@ +--- +title: "Calling Synchronous Methods Asynchronously | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "asynchronous programming, delegates" + - "asynchronous delegates" + - "AsyncWaitHandle property" + - "callback methods" + - "calling synchronous methods in asynchronous manner" + - "WaitHandle class, code examples" + - "asynchronous programming, status polling" + - "polling asynchronous operation status" + - "delegates [.NET Framework], asynchronous" + - "synchronous calling in asynchronous manner" + - "waiting for asynchronous calls" + - "status information [.NET Framework], asynchronous operations" +ms.assetid: 41972034-92ed-450a-9664-ab93fcc6f1fb +caps.latest.revision: 24 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 24 +--- +# Calling Synchronous Methods Asynchronously +.NET Framework では、すべてのメソッドを非同期的に呼び出すことができます。 これを行うには、呼び出すメソッドと同じシグネチャを持つデリゲートを定義します。これにより、共通言語ランタイムによって、適切なシグネチャを持つ、このデリゲートの `BeginInvoke` メソッドと `EndInvoke` メソッドが自動的に定義されます。 + +> [!NOTE] +> 非同期デリゲート \(具体的には `BeginInvoke` メソッドと `EndInvoke` メソッド\) は、.NET Compact Framework ではサポートされていません。 + + `BeginInvoke` メソッドは、非同期呼び出しを開始します。 このメソッドは、非同期的に実行するメソッドと同じパラメーターと共に、2 つの省略可能な追加パラメーターを持っています。 最初のパラメーターは、同期呼び出しが完了したときに呼び出されるメソッドを参照する デリゲートです。 2 番目のパラメーターは、コールバック メソッドに情報を渡すユーザー定義オブジェクトです。`BeginInvoke` からは制御がすぐに戻り、非同期呼び出しが完了するまで待機しません。`BeginInvoke` は を返します。これを使用して非同期呼び出しの進捗状況を監視できます。 + + `EndInvoke` メソッドは、非同期呼び出しの結果を取得します。 このメソッドは、`BeginInvoke` の後であればいつでも呼び出すことができます。 非同期呼び出しがまだ完了していない場合は、`EndInvoke` は非同期呼び出しが完了するまで呼び出し元スレッドをブロックします。`EndInvoke` のパラメーターには、非同期実行するメソッドの `out` パラメーターと `ref` パラメーター \(Visual Basic では [\](../Topic/OutAttribute%20Class.md) `ByRef` と `ByRef`\) と、 によって返された `BeginInvoke` が含まれます。 + +> [!NOTE] +> [!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] の IntelliSense 機能によって `BeginInvoke` および `EndInvoke` のパラメーターが表示されます。 Visual Studio や類似のツールを使っていない場合や、[!INCLUDE[vsprvslong](../../../includes/vsprvslong-md.md)] で C\# を使っている場合、これらのメソッドについて定義されているパラメーターについては、「[Asynchronous Programming Model \(APM\)](../../../docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md)」をご覧ください。 + + このトピックのコード例では、`BeginInvoke` と `EndInvoke` を使用して非同期呼び出しを行う 4 つの一般的な方法を示します。`BeginInvoke` を呼び出した後、次の処理を行うことができます。 + +- 何か処理を実行した後、呼び出しが完了するまでブロックする `EndInvoke` を呼び出します。 + +- プロパティを使用して を取得し、その メソッドを使用して が通知されるまで実行をブロックし、`EndInvoke` を呼び出します。 + +- によって返される `BeginInvoke` をポーリングして非同期呼び出しが完了したかどうかを確認した後、`EndInvoke` を呼び出します。 + +- コールバック メソッドのデリゲートを `BeginInvoke` に渡します。 このメソッドは、非同期呼び出しが完了すると、 スレッドで実行されます。 コールバック メソッドは `EndInvoke` を呼び出します。 + +> [!IMPORTANT] +> どの手法を使用する場合でも、常に `EndInvoke` を呼び出して、非同期呼び出しを完了します。 + +## テスト メソッドと非同期デリゲートの定義 + 次のコード例は、長時間実行される `TestMethod` メソッドの非同期呼び出しを行うさまざまな方法を示します。`TestMethod` メソッドはコンソール メッセージを表示して処理が開始されたことを示し、しばらくスリープした後、終了します。`TestMethod` には `out` パラメーターがあり、`BeginInvoke` および `EndInvoke` のシグネチャへのそのようなパラメーターの追加方法を示します。`ref` パラメーターは同様に処理できます。 + + 次のコード例は、`TestMethod` と、`AsyncMethodCaller` の非同期呼び出しに使用できる `TestMethod` という名前のデリゲートの定義を示します。 コード例をコンパイルするには、`TestMethod` および `AsyncMethodCaller` デリゲートの定義を含める必要があります。 + + [!code-cpp[AsyncDelegateExamples#1](../../../samples/snippets/cpp/VS_Snippets_CLR/AsyncDelegateExamples/cpp/TestMethod.cpp#1)] + [!code-csharp[AsyncDelegateExamples#1](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDelegateExamples/CS/TestMethod.cs#1)] + [!code-vb[AsyncDelegateExamples#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDelegateExamples/VB/TestMethod.vb#1)] + +## EndInvoke による非同期呼び出しの待機 + メソッドを非同期実行する最も簡単な方法は、デリゲートの `BeginInvoke` メソッドを呼び出してメソッドの実行を開始し、メイン スレッドで何かの処理を実行した後、デリゲートの `EndInvoke` メソッドを呼び出す方法です。`EndInvoke` は非同期呼び出しが完了するまで戻らないので、呼び出し元スレッドがブロックされる場合があります。 この手法はファイルやネットワーク操作を使用するときに適しています。 + +> [!IMPORTANT] +> `EndInvoke` でブロックするため、ユーザー インターフェイスにサービスを提供するスレッドからは呼び出さないでください。 + + [!code-cpp[AsyncDelegateExamples#2](../../../samples/snippets/cpp/VS_Snippets_CLR/AsyncDelegateExamples/cpp/EndInvoke.cpp#2)] + [!code-csharp[AsyncDelegateExamples#2](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDelegateExamples/CS/EndInvoke.cs#2)] + [!code-vb[AsyncDelegateExamples#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDelegateExamples/VB/EndInvoke.vb#2)] + +## WaitHandle による非同期呼び出しの待機 + を取得するには、 によって返される の `BeginInvoke` プロパティを使用します。 は非同期呼び出しが完了すると通知され、 メソッドを呼び出すことによってこれを待機できます。 + + を使用する場合は、非同期呼び出しの完了前または完了後、`EndInvoke` を呼び出して結果を取得する前に、追加の処理を実行できます。 + +> [!NOTE] +> `EndInvoke` を呼び出す場合、待機ハンドルは自動的に閉じられません。 待機ハンドルへのすべての参照を解放すると、ガベージ コレクションが待機ハンドルをクリアするときにシステム リソースが解放されます。 待機ハンドルの使用が終了すると同時にシステム リソースを解放するには、 メソッドを呼び出して破棄します。 破棄可能なオブジェクトが明示的に破棄されると、ガベージ コレクションはより効率的に動作します。 + + [!code-cpp[AsyncDelegateExamples#3](../../../samples/snippets/cpp/VS_Snippets_CLR/AsyncDelegateExamples/cpp/waithandle.cpp#3)] + [!code-csharp[AsyncDelegateExamples#3](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDelegateExamples/CS/waithandle.cs#3)] + [!code-vb[AsyncDelegateExamples#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDelegateExamples/VB/WaitHandle.vb#3)] + +## 非同期呼び出し完了のポーリング + によって返された の `BeginInvoke` プロパティを使用して、非同期呼び出しが完了したことを検出できます。 この方法は、ユーザー インターフェイスにサービスを提供するスレッドから非同期呼び出しを行う場合に使用します。 完了をポーリングすると、呼び出し元スレッドは、 スレッドで非同期呼び出しを実行しながら、実行を継続できます。 + + [!code-cpp[AsyncDelegateExamples#4](../../../samples/snippets/cpp/VS_Snippets_CLR/AsyncDelegateExamples/cpp/polling.cpp#4)] + [!code-csharp[AsyncDelegateExamples#4](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDelegateExamples/CS/polling.cs#4)] + [!code-vb[AsyncDelegateExamples#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDelegateExamples/VB/polling.vb#4)] + +## 非同期呼び出し完了時のコールバック メソッドの実行 + 非同期呼び出しを開始したスレッドが結果を処理するスレッドである必要がない場合は、呼び出しが完了したときにコールバック メソッドを実行できます。 コールバック メソッドは スレッドで実行されます。 + + コールバック メソッドを使用するには、コールバック メソッドを表す `BeginInvoke` デリゲートを に渡す必要があります。 コールバック メソッドで使用される情報を含むオブジェクトを渡すこともできます。 コールバック メソッドでは、唯一のパラメーターである オブジェクトにキャストします。 こうすると、 プロパティを使用して、呼び出しを開始するために使用したデリゲートを取得し、`EndInvoke` を呼び出すことができるようになります。 + + 例に関する注意事項 + +- `threadId` の `TestMethod` パラメーターは `out` パラメーター \(Visual Basic では [\](../Topic/OutAttribute%20Class.md) `ByRef`\) であるため、その入力値が `TestMethod` で使用されることはありません。`BeginInvoke` 呼び出しにはダミー変数が渡されます。`threadId` パラメーターが `ref` パラメーター \(Visual Basic では `ByRef`\) であった場合、`BeginInvoke` と `EndInvoke` の両方に渡すことができるように、変数はクラス レベルのフィールドであることが必要です。 + +- `BeginInvoke` に渡される状態情報は、コールバック メソッドが出力メッセージを書式指定するために使用する書式指定文字列です。 型 として渡されるため、状態情報を使用するには適切な型にキャストする必要があります。 + +- コールバックは スレッドで作成されます。 スレッドは、メイン スレッドが終了した場合はアプリケーションの実行を継続しないバックグラウンド スレッドであるため、例で使用するメイン スレッドは、コールバックが終了できるまでスリープする必要があります。 + + [!code-cpp[AsyncDelegateExamples#5](../../../samples/snippets/cpp/VS_Snippets_CLR/AsyncDelegateExamples/cpp/callback.cpp#5)] + [!code-csharp[AsyncDelegateExamples#5](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDelegateExamples/CS/callback.cs#5)] + [!code-vb[AsyncDelegateExamples#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDelegateExamples/VB/callback.vb#5)] + +## 参照 + + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md new file mode 100644 index 00000000000..b3c2824fb63 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md @@ -0,0 +1,262 @@ +--- +title: "Walkthrough: Implementing a Component That Supports the Event-based Asynchronous Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Event-based Asynchronous Pattern" + - "ProgressChangedEventArgs class" + - "BackgroundWorker component" + - "events [.NET Framework], asynchronous" + - "Asynchronous Pattern" + - "AsyncOperationManager class" + - "threading [.NET Framework], asynchronous features" + - "components [.NET Framework], asynchronous" + - "AsyncOperation class" + - "threading [Windows Forms], asynchronous features" + - "AsyncCompletedEventArgs class" +ms.assetid: 61f676b5-936f-40f6-83ce-f22805ec9c2f +caps.latest.revision: 21 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 21 +--- +# Walkthrough: Implementing a Component That Supports the Event-based Asynchronous Pattern +一部の操作によって著しい遅延が発生する可能性があるクラスを記述する場合は、[Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) の実装による非同期機能の追加を検討してください。 + + このチュートリアルでは、イベント ベースの非同期パターンを実装するコンポーネントの作成方法を示します。 これは 名前空間からヘルパー クラスを使用して実装されます。これによりコンポーネントは、[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)]、コンソール アプリケーション、および Windows フォーム アプリケーションを含む任意のアプリケーション モデルで正常に動作します。 また、このコンポーネントは、 コントロールおよび独自のカスタム デザイナーでデザインが可能です。 + + これが終了すると、素数を非同期的に計算するアプリケーションの用意ができます。 アプリケーションには、メインのユーザー インターフェイス \(UI\) スレッドと、各素数計算のためのスレッドが含まれます。 大きな数が素数かどうかのテストには時間がかかりますが、メインの UI スレッドがこの遅延によって中断されることはなく、計算中もフォームは応答可能な状態です。 同時にいくつでも計算を実行でき、保留中の計算を個別に選択してキャンセルできます。 + + このチュートリアルでは、以下のタスクを行います。 + +- コンポーネントの作成 + +- パブリック非同期イベントおよびデリゲートの定義 + +- プライベート デリゲートの定義 + +- パブリック イベントの実装 + +- 完了メソッドの実装 + +- ワーカー メソッドの実装 + +- 開始およびキャンセル メソッドの実装 + + このトピックのコードを単一のリストとしてコピーするには、「[How to: Implement a Component That Supports the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)」を参照してください。 + +## コンポーネントの作成 + 最初に、イベント ベースの非同期パターンを実装するコンポーネントを作成します。 + +#### コンポーネントを作成するには + +- から継承した、`PrimeNumberCalculator` という名前のクラスを作成します。 + +## パブリック非同期イベントおよびデリゲートの定義 + コンポーネントは、イベントを使用してクライアントと通信します。 *MethodName*`Completed` イベントは、非同期タスクの完了にクライアントに表示され、*MethodName*`ProgressChanged` イベントは、非同期タスクの進行状況をクライアントに通知します。 + +#### コンポーネントのクライアントの非同期イベントを定義するには + +1. および 名前空間をファイルの先頭にインポートします。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#11](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#11)] + [!code-vb[System.ComponentModel.AsyncOperationManager#11](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#11)] + +2. `PrimeNumberCalculator` クラスの定義の前に、進行状況および完了のイベントのデリゲートを宣言します。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#7](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#7)] + [!code-vb[System.ComponentModel.AsyncOperationManager#7](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#7)] + +3. `PrimeNumberCalculator` クラスの定義の前に、進行状況および完了をクライアントにレポートするイベントを宣言します。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#8](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#8)] + [!code-vb[System.ComponentModel.AsyncOperationManager#8](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#8)] + +4. `PrimeNumberCalculator` クラスの定義の後に、 `CalculatePrimeCompletedEventArgs` クラスを派生させて、各計算の結果を `CalculatePrimeCompleted`.event のクライアントのイベント ハンドラーにレポートします。 `AsyncCompletedEventArgs` プロパティに加えて、このクラスにより、クライアントはどの数値がテストされたのか、素数かどうか、素数でない場合は最初の除数は何かを判断できます。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#6](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#6)] + [!code-vb[System.ComponentModel.AsyncOperationManager#6](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#6)] + +## チェックポイント + この時点で、コンポーネントをビルドできます。 + +#### コンポーネントをテストするには + +- コンポーネントをコンパイルします。 + + 次の 2 つのコンパイラの警告が表示されます。 + + ``` + warning CS0067: The event 'AsynchronousPatternExample.PrimeNumberCalculator.ProgressChanged' is never used + warning CS0067: The event 'AsynchronousPatternExample.PrimeNumberCalculator.CalculatePrimeCompleted' is never used + ``` + + これらの警告は、次のセクションでは消去されます。 + +## プライベート デリゲートの定義 + `PrimeNumberCalculator` コンポーネントの非同期的な側面は、 と呼ばれる特別なデリゲートと共に、内部的に実装されます。 はコールバック メソッドを表し、 スレッドで実行されます。 コールバック メソッドには、型 の単一のパラメーターを受け取るシグネチャが必要です。つまり、デリゲート間の状態をラッパー クラスに渡す必要があります。 詳細については、「」を参照してください。 + +#### コンポーネントの内部的な非同期動作を実装するには + +1. `PrimeNumberCalculator` クラス内に デリゲートを宣言および作成します。 `InitializeDelegates` という名前のユーティリティ メソッド内に、 オブジェクトを作成します。 + + クライアントに進行状況を報告するためと、クライアントに完了を報告するための 2 つのデリゲートが必要です。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#9](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#9)] + [!code-vb[System.ComponentModel.AsyncOperationManager#9](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#9)] + [!code-csharp[System.ComponentModel.AsyncOperationManager#20](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#20)] + [!code-vb[System.ComponentModel.AsyncOperationManager#20](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#20)] + +2. コンポーネントのコンストラクター内で `InitializeDelegates` メソッドを呼び出します。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#21](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#21)] + [!code-vb[System.ComponentModel.AsyncOperationManager#21](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#21)] + +3. `PrimeNumberCalculator` クラス内で、非同期的に行われる実際の作業を処理するデリゲートを宣言します。 このデリゲートは、数値が素数かどうかをテストするワーカー メソッドをラップします。 デリゲートは パラメーターを受け取ります。これは、非同期操作の有効期間を追跡するのに使用されます。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#22](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#22)] + [!code-vb[System.ComponentModel.AsyncOperationManager#22](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#22)] + +4. 保留中の非同期操作の有効期間を管理するコレクションを作成します。 クライアントには、実行時および完了時に操作を追跡する手段が必要です。クライアントが非同期メソッドを呼び出したときに、クライアントに一意なトークン \(タスク ID\) を渡すように要求することによって、この追跡を行います。 `PrimeNumberCalculator` コンポーネントは、タスク ID を対応する呼び出しに関連付けて、各呼び出しを追跡する必要があります。 クライアントから一意ではないタスク ID が渡された場合は、`PrimeNumberCalculator` コンポーネントで例外を発生させる必要があります。 + + `PrimeNumberCalculator` コンポーネントは、 と呼ばれる特別なコレクション クラスを使用して、タスク ID を追跡します。 クラス定義内で、 `userTokenToLifetime` という名前の を作成します。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#23](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#23)] + [!code-vb[System.ComponentModel.AsyncOperationManager#23](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#23)] + +## パブリック イベントの実装 + イベント ベースの非同期パターンを実装するコンポーネントは、イベントを使用してクライアントと通信します。 これらのイベントは、 クラスのおかげで、適切なスレッドで呼び出されます。 + +#### コンポーネントのクライアントに対してイベントを発生させるには + +1. クライアントにレポートするために、パブリック イベントを実装します。 進行状況をレポートするためのイベントと、完了をレポートするためのイベントが必要です。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#24](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#24)] + [!code-vb[System.ComponentModel.AsyncOperationManager#24](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#24)] + +## 完了メソッドの実装 + 完了デリゲートとは、非同期操作が正常な完了、エラー、またはキャンセルによって終了したときに、基になるフリースレッドの非同期動作を呼び出すメソッドです。 この呼び出しは任意のスレッドで発生します。 + + このメソッドでは、一意なクライアント トークンの内部コレクションからクライアントのタスク ID を削除します。 また、このメソッドは、対応する メソッドを呼び出すことにより、特定の非同期操作の有効期間を終了します。 この呼び出しにより、アプリケーション モデルに適したスレッドで完了イベントが発生します。 メソッドが呼び出された後、 のこのインスタンスは使用できなくなります。これ以降、これを使用しようとすると、例外がスローされます。 + + `CompletionMethod` シグネチャには、非同期操作の結果を記述するために必要なすべての状態が格納されている必要があります。 これには、この特定の非同期操作によってテストされた数値と、数値が素数かどうか、素数でない場合はその最初の除数の値の状態が格納されます。 また、発生した例外と、この特定のタスクに対応する を示す状態も格納されます。 + +#### 非同期操作を完了するには + +- 完了メソッドを実装します。 6 つのパラメーターを受け取ります。これらを使用して `CalculatePrimeCompletedEventArgs` が作成され、クライアントの `CalculatePrimeCompletedEventHandler` を介してクライアントに返されます。 クライアントのタスク ID トークンを内部コレクションから削除し、 の呼び出しにより、非同期操作の有効期間を終了します。 は、アプリケーション モデルに適したスレッドまたはコンテキストの呼び出しをマーシャリングします。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#26](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#26)] + [!code-vb[System.ComponentModel.AsyncOperationManager#26](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#26)] + +## チェックポイント + この時点で、コンポーネントをビルドできます。 + +#### コンポーネントをテストするには + +- コンポーネントをコンパイルします。 + + 次のコンパイラの警告が表示されます。 + + ``` + warning CS0169: The private field 'AsynchronousPatternExample.PrimeNumberCalculator.workerDelegate' is never used + ``` + + この警告は、次のセクションでは解決されます。 + +## ワーカー メソッドの実装 + ここまでで、`PrimeNumberCalculator` コンポーネントをサポートしている非同期コードを実装しました。 次に、実際の作業を行うコードを実装します。 `CalculateWorker`、 `BuildPrimeNumberList`、`IsPrime` の 3 つのメソッドを実装します。 `BuildPrimeNumberList` と `IsPrime` は、エラトステネスのふるいと呼ばれる有名なアルゴリズムを構成します。このアルゴリズムは、テスト数値の平方根まですべての素数を検索して、数値が素数かどうかを調べます。 その時点で除数が見つからない場合、そのテスト数値は素数です。 + + 効率を最大限に高めるためにこのコンポーネントが記述されている場合は、異なるテスト数値のさまざまな呼び出しによって検出されたすべての素数を記憶します。 また、2、3、5 などの単純な除数もチェックします。 この例の目的は、時間のかかる操作を非同期的に実行する方法を示すことですが、練習用にこれらの最適化も残しておきます。 + + `CalculateWorker` メソッドはデリゲート内にラップされており、`BeginInvoke` の呼び出しによって非同期的に呼び出されます。 + +> [!NOTE] +> 進行状況の報告は、`BuildPrimeNumberList` メソッドによって実装されます。 高速のコンピューターでは、`ProgressChanged` イベントがすばやく連続して発生する場合があります。 こうしたイベントが発生するクライアント スレッドでは、この状況に対応できる必要があります。 ユーザー インターフェイス コードにメッセージがあふれて処理が追いつかなくなり、ハングする可能性があります。 この状況に対応するユーザー インターフェイス例については、「[How to: Implement a Client of the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/how-to-implement-a-client-of-the-event-based-asynchronous-pattern.md)」を参照してください。 + +#### 素数の計算を非同期的に実行するには + +1. `TaskCanceled` ユーティリティ メソッドを実装します。 これにより、指定したタスク ID のタスクの有効期間コレクションがチェックされ、タスク ID が見つからなかった場合は、`true` が返されます。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#32](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#32)] + [!code-vb[System.ComponentModel.AsyncOperationManager#32](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#32)] + +2. `CalculateWorker` メソッドを実装します。 2 つのパラメーターを受け取ります。テストする数値および です。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#27](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#27)] + [!code-vb[System.ComponentModel.AsyncOperationManager#27](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#27)] + +3. `BuildPrimeNumberList` を実装します。 2 つのパラメーターを受け取ります。テストする数値と です。 を使用して、進行状況およびインクリメンタル結果をレポートします。 これにより、クライアントのイベント ハンドラーが、アプリケーション モデルに適したスレッドまたはコンテキストで呼び出されるようになります。 `BuildPrimeNumberList` は素数を検出すると、これをインクリメンタル結果として、`ProgressChanged` イベントのクライアントのイベント ハンドラーにレポートします。 これには、 から派生した `CalculatePrimeProgressChangedEventArgs` と呼ばれるクラスが必要です。このクラスには、`LatestPrimeNumber` と呼ばれる追加されたプロパティが 1 つあります。 + + また、`BuildPrimeNumberList` メソッドは、定期的に `TaskCanceled` メソッドを呼び出し、`true` が返されると終了します。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#5](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#5)] + [!code-vb[System.ComponentModel.AsyncOperationManager#5](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#5)] + +4. `IsPrime` を実装します。 3 つのパラメーターを受け取ります。既知の素数のリスト、テストする数値、および見つかった最初の除数の出力パラメーターです。 素数のリストを指定すると、テスト数値が素数かどうかを確認します。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#28](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#28)] + [!code-vb[System.ComponentModel.AsyncOperationManager#28](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#28)] + +5. `CalculatePrimeProgressChangedEventArgs` を から派生させます。 このクラスは、`ProgressChanged` イベントのクライアントのイベント ハンドラーに、インクリメンタル結果をレポートするために必要です。 `LatestPrimeNumber` という名前の追加されたプロパティが 1 つあります。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#29](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#29)] + [!code-vb[System.ComponentModel.AsyncOperationManager#29](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#29)] + +## チェックポイント + この時点で、コンポーネントをビルドできます。 + +#### コンポーネントをテストするには + +- コンポーネントをコンパイルします。 + + この他に記述する必要があるものは、非同期操作を開始およびキャンセルするためのメソッド \(`CalculatePrimeAsync` および `CancelAsync`\) です。 + +## 開始およびキャンセル メソッドの実装 + ワーカー スレッドを独自のスレッドで開始するには、それをラップしているデリゲートで `BeginInvoke` を呼び出します。 特定の非同期操作の有効期間を管理するには、 ヘルパー クラスで メソッドを呼び出します。 こうすると が返され、適切なスレッドまたはコンテキストへのクライアントのイベント ハンドラーの呼び出しがマーシャリングされます。 + + 特定の保留中の操作をキャンセルするには、 を対応する で呼び出します。 こうするとその操作が終了し、これ以降その を呼び出すと例外がスローされます。 + +#### 開始およびキャンセル機能を実装するには + +1. `CalculatePrimeAsync` メソッドを実装します。 クライアントによって提供されたトークン \(タスク ID\) が、現在保留中のタスクを表すすべてのタスクから見て一意であることを確認します。 クライアントから一意ではないトークンが渡された場合は、`CalculatePrimeAsync` は例外を発生させます。 それ以外の場合は、トークンがタスク ID のコレクションに追加されます。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#3)] + [!code-vb[System.ComponentModel.AsyncOperationManager#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#3)] + +2. `CancelAsync` メソッドを実装します。 トークン コレクションに `taskId` パラメーターが存在する場合は、削除されます。 これにより、起動されていないキャンセル済みタスクが実行されるのを防止します。 タスクが実行中の場合は、そのタスク ID が有効期間コレクションから削除されたことを `BuildPrimeNumberList` メソッドが検出すると、メソッドは終了します。 + + [!code-csharp[System.ComponentModel.AsyncOperationManager#4](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#4)] + [!code-vb[System.ComponentModel.AsyncOperationManager#4](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#4)] + +## チェックポイント + この時点で、コンポーネントをビルドできます。 + +#### コンポーネントをテストするには + +- コンポーネントをコンパイルします。 + + `PrimeNumberCalculator` コンポーネントがコンパイルされ、使用できるようになります。 + + `PrimeNumberCalculator` コンポーネントを使用するクライアントの例については、「[How to: Implement a Client of the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/how-to-implement-a-client-of-the-event-based-asynchronous-pattern.md)」を参照してください。 + +## 次の手順 + この例に入力するには、`CalculatePrimeAsync` メソッドの同期用である `CalculatePrime` を記述します。 こうすると、`PrimeNumberCalculator` コンポーネントがイベント ベースの非同期パターンに完全に準拠します。 + + この例を改善するには、異なるテスト数値のさまざまな呼び出しによって検出された、すべての素数のリストを保持します。 この方法を使用すると、以前のタスクで行われた作業が各タスクに役立ちます。 このリストを `lock` 領域で保護する際には注意が必要です。異なるスレッドによるリストへのアクセスはシリアル化されます。 + + 2、3、5 などの単純な除数をテストしても、この例を改善できます。 + +## 参照 + [方法 : バックグラウンドで操作を実行する](../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md) + [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) + [NOT IN BUILD: Multithreading in Visual Basic](http://msdn.microsoft.com/ja-jp/c731a50c-09c1-4468-9646-54c86b75d269) + [How to: Implement a Component That Supports the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md) + [Multithreaded Programming with the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md new file mode 100644 index 00000000000..6766af8bd14 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md @@ -0,0 +1,880 @@ +--- +title: "Consuming the Task-based Asynchronous Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework, and TAP" + - "asynchronous design patterns, .NET Framework" + - "TAP, .NET Framework support for" + - "Task-based Asynchronous Pattern, .NET Framework support for" + - ".NET Framework, asynchronous design patterns" +ms.assetid: 033cf871-ae24-433d-8939-7a3793e547bf +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# Consuming the Task-based Asynchronous Pattern +タスク ベースの非同期パターン \(TAP\) を使用して非同期操作を行うと、コールバックを使用して、ブロックすることなく待機できます。タスクの場合、 などのメソッドを使用してこれを行うことができます。 言語ベースの非同期サポートが、通常の制御フロー内での非同期操作の待機を許可することで、コールバックを隠し、コンパイラにより生成されたコードはこの同じ API レベルのサポートを提供します。 + +## Await を使って実行を中断する + [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] 以降では、C\# の [await](../Topic/await%20\(C%23%20Reference\).md) キーワードおよび Visual Basic の [Await Operator](../Topic/Await%20Operator%20\(Visual%20Basic\).md) を使って オブジェクトおよび オブジェクトを非同期に待機できます。 を待機しているとき、`await` 式の型は `void` です。 を待機しているとき、`await` 式の型は `TResult` です。 `await` 式は、非同期メソッドの本体内に含める必要があります。 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] における C\# および Visual Basic の言語サポートの詳細については、C\# および Visual Basic の言語仕様を参照してください。 + + 待機機能は、隠れた状態で継続を使用してタスクにコールバックをインストールします。このコールバックは中断ポイントから非同期メソッドを再開します。 非同期メソッドが再開され、待機していた操作が正常に完了し、 であった場合に、その `TResult` が返されます。待機していた または 状態になった場合は、 例外がスローされます。待機していた または 状態になった場合は、エラーの原因になった例外がスローされます。 `Task` は複数の例外の結果としてエラーになることがありますが、反映されるのはこれらの例外の中の 1 つのみです。 ただし、 プロパティに、すべてのエラーを含む 例外が返されます。 + + 同期コンテキスト \( オブジェクト\) が中断時点で非同期メソッドを実行していたスレッドに関連付けられている場合 \(たとえば、 プロパティが `null` でない場合\)、そのコンテキストの メソッドを使用して、非同期メソッドが同じ同期コンテキスト上で再開されます。 それ以外の場合は、中断時に実行されていたタスク スケジューラ \( オブジェクト\) に基づきます。 通常、これはスレッド プールをターゲットとする既定のタスク スケジューラ \(\) です。 このタスク スケジューラによって、待機していた非同期操作が完了した場合に再開するかどうか、または再開のスケジュールを設定するかどうかが決定されます。 既定のスケジューラは、通常、待機していた操作が完了したスレッド上での実行の継続を許可します。 + + 非同期メソッドが呼び出された場合、まだ完了していない待機可能なインスタンスの最初の await 式まで、関数の本体を同期をとって実行し、この時点で呼び出しを呼び出し元に返します。 非同期メソッドが `void` を返さない場合、進行中の計算を表すために、 または オブジェクトが返されます。 void 以外の非同期メソッドでは、return ステートメントが検出された場合、またはメソッド本体の末尾に到達した場合、タスクが の終了状態で完了します。 ハンドルされない例外により、非同期メソッドの本体から制御が離れた場合、タスクは 状態になります。 その例外が の場合、タスクは 状態になります。 この方法では、結果または例外が最終的に発行されます。 + + この動作には、いくつかの重要なバリエーションがあります。タスクが待機になる前に既に完了していた場合は、パフォーマンス上の理由から、制御が明け渡されず、関数が実行を継続します。また、元のコンテキストに戻ることが必ずしも望ましい動作ではない場合は変更されることがあります。これは、次のセクションで詳しく説明します。 + +### Yield と ConfigureAwait を使って中断と再開を構成する + 一部のメソッドでは、非同期メソッドの実行をより詳細に制御できます。 たとえば、 メソッドを使用して非同期メソッドに明け渡しポイントを導入できます。 + +```csharp +public class Task : … +{ + public static YieldAwaitable Yield(); + … +} + +``` + + これは、非同期にポストするか、現在のコンテキストにスケジュールを戻すことと同じです。 + +```csharp +Task.Run(async delegate +{ + for(int i=0; i<1000000; i++) + { + await Task.Yield(); // fork the continuation into a separate work item + ... + } +}); + +``` + + また、非同期メソッドで中断と再開をより詳細に制御するため メソッドも使用できます。再開時に非同期メソッドの継続を呼び出すために非同期メソッドが中断され、そのキャプチャされたのコンテキストが使用されている場合、既定では、現在のコンテキストを既に説明したようにキャプチャされます。これは、多くの場合に求められる動作です。その他の場合では、継続のコンテキストが重要でないこともあり、元のコンテキストへのポスト バックを回避することでパフォーマンスを向上できます。このためには、 メソッドを使用して、待機操作にコンテキストをキャプチャして再開するのではなく、待機していた非同期操作がどこで完了したかを問わず、実行を継続するように指示できます。 + +```csharp +await someTask.ConfigureAwait(continueOnCapturedContext:false); + +``` + +## 非同期操作を取り消す + [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、取り消しをサポートする TAP メソッドは、キャンセル トークン \( オブジェクト\) を受け取るオーバーロードを少なくとも 1 つ用意します。 + + キャンセル トークンは、キャンセル トークンのソース \( オブジェクト\) によって作成されます。ソースの プロパティは、ソースの メソッドが呼び出されたときに通知されるキャンセル トークンを返します。たとえば、単一の Web ページをダウンロードする際に操作を取り消せるようにする場合は、 オブジェクトを作成し、TAP メソッドにそのオブジェクトのトークンを渡し、操作を取り消す準備ができたらソースの メソッドを呼び出します。 + +```csharp +var cts = new CancellationTokenSource(); +string result = await DownloadStringAsync(url, cts.Token); +… // at some point later, potentially on another thread +cts.Cancel(); + +``` + + 複数の非同期呼び出しを取り消す場合は、すべての呼び出しに同じトークンを渡すことができます。 + +```csharp +var cts = new CancellationTokenSource(); +    IList results = await Task.WhenAll(from url in urls select DownloadStringAsync(url, cts.Token)); +    // at some point later, potentially on another thread +    … +    cts.Cancel(); + +``` + + または、操作の一部を選択して同じトークンを渡すこともできます。 + +```csharp +var cts = new CancellationTokenSource(); +    byte [] data = await DownloadDataAsync(url, cts.Token); +    await SaveToDiskAsync(outputPath, data, CancellationToken.None); +    … // at some point later, potentially on another thread +    cts.Cancel(); + +``` + + 取り消し要求は任意のスレッドから開始することができます。 + + 取り消しが要求されないことを示すために、キャンセル トークンを受け取るすべてのメソッドに 値を渡すことができます。これにより、 プロパティから `false` が返され、呼び出し先のメソッドはそれに応じて最適化できます。テストのためには、トークンが既に取り消された状態か取り消し不可能な状態で開始するかどうかを示すブール値を受け取るコンストラクターを使用してインスタンス化した、事前に取り消されたキャンセル トークンを渡すこともできます。 + + この取り消し方法には、いくつか利点があります。 + +- 同じキャンセル トークンを、任意の数の同期操作および非同期操作に渡すことができます。 + +- 同じ取り消し要求を、任意の数のリスナーに渡すことができます。 + +- 取り消しが要求されるかどうか、およびそれがいつ実行されるかは、非同期 API の開発者が完全に制御します。 + +- API を使用するコードにより、取り消し要求が反映される非同期呼び出しが選択され決定されます。 + +## 進行状況の監視 + 一部の非同期メソッドは、非同期メソッドに渡される進行状況インターフェイスを通じて進行状況を公開します。たとえば、テキスト文字列を非同期的にダウンロードし、その過程で完了したダウンロードの割合を含む進行状況の更新を発生する関数があるとします。このようなメソッドは、Windows Presentation Foundation \(WPF\) アプリケーションでは次のように使用できます。 + +```csharp +private async void btnDownload_Click(object sender, RoutedEventArgs e) +{ + btnDownload.IsEnabled = false; + try + { + txtResult.Text = await DownloadStringAsync(txtUrl.Text, + new Progress(p => pbDownloadProgress.Value = p)); + } + finally { btnDownload.IsEnabled = true; } +} + +``` + + +## タスク ベースの組み込み連結子の使用 + 名前空間には、タスクを構成および使用するための複数のメソッドがあります。 + +### Task.Run + クラスには メソッドが複数含まれ、たとえば次のように、スレッド プールへの または として作業を簡単にオフロードできるようにします。 + +```csharp +public async void button1_Click(object sender, EventArgs e) +{ + textBox1.Text = await Task.Run(() => + { + // … do compute-bound work here + return answer; + }); +} + +``` + + オーバーロードなどの、これらの メソッドの一部は、 メソッドの短縮形として提供されています。 などの他のオーバーロードでは、次の例のように、オフロードされた作業内で await を使用できるようにします。 + +```csharp +public async void button1_Click(object sender, EventArgs e) +{ + pictureBox1.Image = await Task.Run(async() => + { + using(Bitmap bmp1 = await DownloadFirstImageAsync()) + using(Bitmap bmp2 = await DownloadSecondImageAsync()) + return Mashup(bmp1, bmp2); + }); +} +``` + + このようなオーバーロードは、タスク並列ライブラリの 拡張メソッドと共に メソッドを使用することと論理的に同じです。 + +### Task.FromResult + データが既に利用でき、単に にリフトされたタスクを返すメソッドから返す必要があるシナリオでは、 メソッドを使用できます。 + +```csharp +public Task GetValueAsync(string key) +{ + int cachedValue; + return TryGetCachedValue(out cachedValue) ? + Task.FromResult(cachedValue) : + GetValueAsyncInternal(); +} + +private async Task GetValueAsyncInternal(string key) +{ + … +} + +``` + +### Task.WhenAll + メソッドは、タスクとして表される複数の非同期操作で非同期に待機するために使用されます。メソッドには、一連の非ジェネリック タスクまたは不均一な一連のジェネリック タスク \(複数の void を返す操作を非同期に待機したり、各値の型が異なる複数の値を返すメソッドを非同期に待機するなど\) に加えて、均一な一連のジェネリック タスク \(複数の `TResult` を返すメソッドを非同期に待機するなど\) をサポートする複数のオーバーロードが含まれます。 + + 複数の顧客に電子メール メッセージを送信するとします。 このような場合、1 つのメッセージの送信完了を待たずに次のメッセージを送信するような、メッセージのオーバーラップ送信が可能です。 送信操作がいつ完了したか、またエラーが発生したかを確認することもできます。 + +```csharp +IEnumerable asyncOps = from addr in addrs select SendMailAsync(addr); +await Task.WhenAll(asyncOps); + +``` + + このコードは発生する可能性がある例外を明示的に処理せず、 の結果のタスクの `await` から例外を反映します。例外を処理するには、次のようなコードを使用できます。 + +```csharp +IEnumerable asyncOps = from addr in addrs select SendMailAsync(addr); +try +{ + await Task.WhenAll(asyncOps); +} +catch(Exception exc) +{ + ... +} + +``` + + この例では、非同期操作のいずれかが失敗した場合、すべての例外が 例外に統合され メソッドから返された に格納されます。ただし、これらの例外の 1 つだけが `await` キーワードによって反映されます。すべての例外を調べる場合は、上記のコードを次のように書き直します。 + +```csharp +Task [] asyncOps = (from addr in addrs select SendMailAsync(addr)).ToArray(); +try +{ + await Task.WhenAll(asyncOps); +} +catch(Exception exc) +{ + foreach(Task faulted in asyncOps.Where(t => t.IsFaulted)) + { + … // work with faulted and faulted.Exception + } +} + +``` + + Web から複数のファイルを非同期にダウンロードする例を考えてみます。この場合、すべての非同期操作の結果の型が同種で、結果に簡単にアクセスできます。 + +```csharp +string [] pages = await Task.WhenAll( + from url in urls select DownloadStringAsync(url)); +``` + + 前の void を返す場合で説明したのと同じ例外処理手法を使用できます。 + +```csharp +Task [] asyncOps = + (from url in urls select DownloadStringAsync(url)).ToArray(); +try +{ + string [] pages = await Task.WhenAll(asyncOps); + ... +} +catch(Exception exc) +{ + foreach(Task faulted in asyncOps.Where(t => t.IsFaulted)) + { + … // work with faulted and faulted.Exception + } +} + +``` + +### Task.WhenAny + メソッドを使用して、完了するタスクとして表される複数の非同期操作の 1 つのみを非同期に待機できます。このメソッドは、次の 4 つの主なユース ケースで役立ちます。 + +- 冗長性: 操作を複数回実行し、最初に完了した 1 を選択し \(たとえば、一つの結果と最速の完了する\) 1 を選択して値を生成する複数の Web サービスに問い合わせてください。 + +- インタリーブ: 複数の操作を起動し、待機しますが、処理が完了するまで、あらゆるものを完了します。 + +- スロットリングする場合: 他のユーザーとして追加操作の開始を許可操作が完了します。これは、インタリーブのシナリオの拡張版です。 + +- 初期のエスケープ: たとえば、タスク t1 によって表される別のタスク t2 との操作は タスクにグループ化し、 タスクで待機できます。 タスク t2 は、タイムアウトか取り消し、または タスクを t1 の前に完了するようなその他のシグナルを表す場合があります。 + +#### 冗長性 + 株式を購入するかどうかの決断を行うとします。信頼できるいくつかの株式推薦 Web サービスがありますが、日常的な負荷によっては、時に応じて各サービスがかなり遅くなることがあります。いずれかの操作が完了したときに通知を受け取るには メソッドを使用できます。 + +```csharp +var recommendations = new List>() +{ + GetBuyRecommendation1Async(symbol), + GetBuyRecommendation2Async(symbol), + GetBuyRecommendation3Async(symbol) +}; +Task recommendation = await Task.WhenAny(recommendations); +if (await recommendation) BuyStock(symbol); + +``` + + 正常に完了したすべてのタスクの結果をラップしないで返す とは異なり、 は完了したタスクを返します。 タスクが失敗した場合は、そのタスクが失敗したことを把握することが重要です。タスクが成功した場合は、戻り値が関連付けられているタスクを把握することが重要です。この例で示すように、返されたタスクの結果にアクセスする必要がある場合は、引き続き待機。 + + と同様に、例外に対応できるようにする必要があります。完了したタスクを受け取るので、次のように、適切に `try/catch` で囲んで、エラーが反映されて返されるタスクを待機します。 + +```csharp +Task [] recommendations = …; +while(recommendations.Count > 0) +{ + Task recommendation = await Task.WhenAny(recommendations); + try + { + if (await recommendation) BuyStock(symbol); + break; + } + catch(WebException exc) + { + recommendations.Remove(recommendation); + } +} + +``` + + さらに、最初のタスクが正常に完了しても、以降のタスクが失敗する可能性があります。この時点で、例外を処理する方法はいくつかあります。: のメソッドを使用することも、すべての例外が重要であると判断し、ことを記録する必要がある場合は、すべての開始したタスクが完了するまで待機することができます。この場合は、継続を使用してタスクが非同期に完了した時点で通知を受け取ります。 + +```csharp +foreach(Task recommendation in recommendations) +{ + var ignored = recommendation.ContinueWith( + t => { if (t.IsFaulted) Log(t.Exception); }); +} + +``` + + または + +```csharp +foreach(Task recommendation in recommendations) +{ + var ignored = recommendation.ContinueWith( + t => Log(t.Exception), TaskContinuationOptions.OnlyOnFaulted); +} + +``` + + 以下も考えられます。 + +``` +private static async void LogCompletionIfFailed(IEnumerable tasks) +{ + foreach(var task in tasks) + { + try { await task; } + catch(Exception exc) { Log(exc); } + } +} +… +LogCompletionIfFailed(recommendations); + +``` + + 最後に、残りのすべての操作を取り消すこともできます。 + +```csharp +var cts = new CancellationTokenSource(); +var recommendations = new List>() +{ + GetBuyRecommendation1Async(symbol, cts.Token), + GetBuyRecommendation2Async(symbol, cts.Token), + GetBuyRecommendation3Async(symbol, cts.Token) +}; + +Task recommendation = await Task.WhenAny(recommendations); +cts.Cancel(); +if (await recommendation) BuyStock(symbol); + +``` + +#### インターリーブ + Web からイメージをダウンロードして、各イメージを処理するとします \(イメージを UI コントロールに追加するなど\)。UI スレッドで順次処理する必要があるとしても、イメージはできるだけ同時にダウンロードすることを考えています。 また、すべてダウンロードされるまで UI へのイメージの追加を保留するのは望ましくないので、ダウンロードが完了した順に追加します。 + +```csharp +List> imageTasks = + (from imageUrl in urls select GetBitmapAsync(imageUrl)).ToList(); +while(imageTasks.Count > 0) +{ + try + { + Task imageTask = await Task.WhenAny(imageTasks); + imageTasks.Remove(imageTask); + + Bitmap image = await imageTask; + panel.AddImage(image); + } + catch{} +} + +``` + + 次のように、ダウンロードしたイメージの でコンピューター処理を集中して行うことが必要になるシナリオでも、インタリーブを適用できます。 + +```csharp +List> imageTasks = + (from imageUrl in urls select GetBitmapAsync(imageUrl) + .ContinueWith(t => ConvertImage(t.Result)).ToList(); +while(imageTasks.Count > 0) +{ + try + { + Task imageTask = await Task.WhenAny(imageTasks); + imageTasks.Remove(imageTask); + + Bitmap image = await imageTask; + panel.AddImage(image); + } + catch{} +} + +``` + +#### 調整 + インタリーブの例ではユーザーが多くのイメージをダウンロードするため、このダウンロード数を絞り込み、たとえば、特定の数のダウンロードだけを同時実行する必要がある場合を考えます。 これを行うには、非同期操作のサブセットを開始します。操作が完了したら、追加操作を開始して、完了した操作に代えて実行します。 + +```csharp +const int CONCURRENCY_LEVEL = 15; +Uri [] urls = …; +int nextIndex = 0; +var imageTasks = new List>(); +while(nextIndex < CONCURRENCY_LEVEL && nextIndex < urls.Length) +{ + imageTasks.Add(GetBitmapAsync(urls[nextIndex])); + nextIndex++; +} + +while(imageTasks.Count > 0) +{ + try + { + Task imageTask = await Task.WhenAny(imageTasks); + imageTasks.Remove(imageTask); + + Bitmap image = await imageTask; + panel.AddImage(image); + } + catch(Exception exc) { Log(exc); } + + if (nextIndex < urls.Length) + { + imageTasks.Add(GetBitmapAsync(urls[nextIndex])); + nextIndex++; + } +} + +``` + +#### 初期のエスケープ + ユーザーの取り消し要求 \(キャンセル ボタンがクリックされたなど\) に同時に対応できるようにしながら、1 つの操作の完了を非同期に待機するとします。 このシナリオのコードを次に示します。 + +```csharp +private CancellationTokenSource m_cts; + +public void btnCancel_Click(object sender, EventArgs e) +{ + if (m_cts != null) m_cts.Cancel(); +} + +public async void btnRun_Click(object sender, EventArgs e) +{ + m_cts = new CancellationTokenSource(); + btnRun.Enabled = false; + try + { + Task imageDownload = GetBitmapAsync(txtUrl.Text); + await UntilCompletionOrCancellation(imageDownload, m_cts.Token); + if (imageDownload.IsCompleted) + { + Bitmap image = await imageDownload; + panel.AddImage(image); + } + else imageDownload.ContinueWith(t => Log(t)); + } + finally { btnRun.Enabled = true; } +} + +private static async Task UntilCompletionOrCancellation( + Task asyncOp, CancellationToken ct) +{ + var tcs = new TaskCompletionSource(); + using(ct.Register(() => tcs.TrySetResult(true))) + await Task.WhenAny(asyncOp, tcs.Task); + return asyncOp; +} + +``` + + この実装は、エスケープを決めた直後にユーザー インターフェイスを再度使用できるようにしますが、基になる非同期操作は取り消しません。別の方法として、エスケープを決めたときに保留中の操作を取り消すことがありますが、取り消し要求のために途中で終了する場合など、操作が実際に完了するまでユーザー インターフェイスを再確立しません。 + +```csharp +private CancellationTokenSource m_cts; + +public async void btnRun_Click(object sender, EventArgs e) +{ + m_cts = new CancellationTokenSource(); + + btnRun.Enabled = false; + try + { + Task imageDownload = GetBitmapAsync(txtUrl.Text, m_cts.Token); + await UntilCompletionOrCancellation(imageDownload, m_cts.Token); + Bitmap image = await imageDownload; + panel.AddImage(image); + } + catch(OperationCanceledException) {} + finally { btnRun.Enabled = true; } +} + +``` + + 初期のエスケープの別の例は、次のセクションで説明するように メソッドと共に メソッドを使います。 + +### Task.Delay + メソッドを使用して、非同期メソッドの実行に一時停止を導入できます。これは、ポーリング ループのビルド、あらかじめ指定された期間にわたるユーザー入力処理の遅延など、さまざまな機能に役立ちます。さらに、待機のタイムアウトを実装するために メソッドを と組み合わせて使用できます。 + + 大規模な非同期操作 \(ASP.NET Web サービスなど\) の一部を構成するタスクが完了するまで時間がかかる場合、特に操作が終了しない場合には、操作全般に影響が及びます。このため、非同期操作の待機をタイムアウトできるようにすることが重要になります。同期 メソッド、 WaitAll?qualifyHint=False&autoUpgrade=True メソッド、および WaitAny?qualifyHint=False&autoUpgrade=True メソッドはタイムアウト値を受け取りますが、対応する \/ メソッドおよび前述の \/ メソッドはタイムアウト値を受け取りません。代わりに、 を組み合わせて使用してタイムアウトを実装することができます。 + + たとえば、UI アプリケーションで、イメージをダウンロードし、そのダウンロード中は UI を無効にするとします。 ただし、ダウンロードに時間がかかりすぎる場合には、UI を再び有効にしてダウンロードを破棄します。 + +```csharp +public async void btnDownload_Click(object sender, EventArgs e) +{ + btnDownload.Enabled = false; + try + { + Task download = GetBitmapAsync(url); + if (download == await Task.WhenAny(download, Task.Delay(3000))) + { + Bitmap bmp = await download; + pictureBox.Image = bmp; + status.Text = “Downloaded”; + } + else + { + pictureBox.Image = null; + status.Text = “Timed out”; + var ignored = download.ContinueWith( + t => Trace(“Task finally completed”)); + } + } + finally { btnDownload.Enabled = true; } +} + +``` + + によりタスクが返されるため、複数のダウンロードでも同じことが当てはまります。 + +```csharp +public async void btnDownload_Click(object sender, RoutedEventArgs e) +{ + btnDownload.Enabled = false; + try + { + Task downloads = + Task.WhenAll(from url in urls select GetBitmapAsync(url)); + if (downloads == await Task.WhenAny(downloads, Task.Delay(3000))) + { + foreach(var bmp in downloads) panel.AddImage(bmp); + status.Text = “Downloaded”; + } + else + { + status.Text = “Timed out”; + downloads.ContinueWith(t => Log(t)); + } + } + finally { btnDownload.Enabled = true; } +} + +``` + +## タスク ベースの連結子のビルド + タスクは、非同期操作を完全に表現し、操作の結合、その結果の取得などの同期機能と非同期機能を提供することができるため、大きなパターンをビルドするためのタスクの構成に使用できる有益な連結子ライブラリを構築できるようになります。前のセクションで説明したように、.NET Framework には、いくつかの組み込み連結子が用意されていますが、独自にビルドこともできます。 以下のセクションでは、可能な連結子メソッドと型の例をいくつか示します。 + +### RetryOnFault + 多くの状況では、前の操作が失敗した場合に再試行することが望まれます。同期コードの場合は、次の例のように `RetryOnFault` などのヘルパー メソッドをビルドしてこれを行うことができます。 + +```csharp +public static T RetryOnFault( + Func function, int maxTries) +{ + for(int i=0; i RetryOnFault( + Func> function, int maxTries) +{ + for(int i=0; i DownloadStringAsync(url), 3); + +``` + + `RetryOnFault` 関数をさらに拡張できます。 たとえば、この関数は別の `Func` を受け取り、次のように再試行のタイミングを判断するために、再試行の間に呼び出されます。 + +```csharp +public static async Task RetryOnFault( + Func> function, int maxTries, Func retryWhen) +{ + for(int i=0; i DownloadStringAsync(url), 3, () => Task.Delay(1000)); + +``` + +### NeedOnlyOne + 操作の待機時間と成功の確率を改善するために、冗長性を活用できる場合があります。株式相場を提供するいくつかの Web サービスがあるとします。しかし、時間によって、各サービスの品質レベルと応答時間が変化します。この変動に対応するには、すべての Web サービスに要求を出し、最初の応答を取得した時点で残りの要求を取り消します。複数の操作を起動し、応答を待ち、残りの操作を取り消すというこの一般的なパターンの実装は、ヘルパー関数を実装して簡略化できます。 次の例の `NeedOnlyOne` 関数は、このシナリオを示します。 + +```csharp +public static async Task NeedOnlyOne( + params Func> [] functions) +{ + var cts = new CancellationTokenSource(); + var tasks = (from function in functions + select function(cts.Token)).ToArray(); + var completed = await Task.WhenAny(tasks).ConfigureAwait(false); + cts.Cancel(); + foreach(var task in tasks) + { + var ignored = task.ContinueWith( + t => Log(t), TaskContinuationOptions.OnlyOnFaulted); + } + return completed; +} +``` + + この関数は次のように使用できます。 + +```csharp +double currentPrice = await NeedOnlyOne( + ct => GetCurrentPriceFromServer1Async(“msft”, ct), + ct => GetCurrentPriceFromServer2Async(“msft”, ct), + ct => GetCurrentPriceFromServer3Async(“msft”, ct)); +``` + +### インタリーブされた操作 + 多数のタスクを使用する際に、インタリーブのシナリオをサポートするために メソッドを使用する場合、パフォーマンスの問題が発生することがあります。 のすべての呼び出しは、各タスクに登録されている継続になります。 タスクの数を N とすると、インタリーブ操作の有効期間に作成された O \(N2\) の継続になります。多くのタスクを使用する場合は、パフォーマンスの問題に対処 \(次の例の`Interleaved`\) を使用する場合: + +```csharp +static IEnumerable> Interleaved(IEnumerable> tasks) +{ + var inputTasks = tasks.ToList(); + var sources = (from _ in Enumerable.Range(0, inputTasks.Count) + select new TaskCompletionSource()).ToList(); + int nextTaskIndex = -1; + foreach (var inputTask in inputTasks) + { + inputTask.ContinueWith(completed => + { + var source = sources[Interlocked.Increment(ref nextTaskIndex)]; + if (completed.IsFaulted) + source.TrySetException(completed.Exception.InnerExceptions); + else if (completed.IsCanceled) + source.TrySetCanceled(); + else + source.TrySetResult(completed.Result); + }, CancellationToken.None, + TaskContinuationOptions.ExecuteSynchronously, + TaskScheduler.Default); + } + return from source in sources + select source.Task; +} + +``` + + タスクが完了すると、たとえば次のように、連結子を使用してタスクの結果を処理できます。 + +```csharp +IEnumerable> tasks = ...; +foreach(var task in Interleaved(tasks)) +{ + int result = await task; + … +} +``` + +### WhenAllOrFirstException + 特定のスキャッター\/ギャザー シナリオでは、すべてのタスクの完了を待機することが考えられますが、そのうちの 1 つがエラーになった場合には、例外の発生時点で待機を停止することが望まれます。これは、次の例の `WhenAllOrFirstException` などの連結子メソッドを使用して実行できます。 + +```csharp +public static Task WhenAllOrFirstException(IEnumerable> tasks) +{ +    var inputs = tasks.ToList(); +    var ce = new CountdownEvent(inputs.Count); +    var tcs = new TaskCompletionSource(); + +    Action onCompleted = (Task completed) => +    { +        if (completed.IsFaulted)  +            tcs.TrySetException(completed.Exception.InnerExceptions); +        if (ce.Signal() && !tcs.Task.IsCompleted) +            tcs.TrySetResult(inputs.Select(t => t.Result).ToArray()); +    }; + +    foreach (var t in inputs) t.ContinueWith(onCompleted); +    return tcs.Task; +} + +``` + +## タスク ベースのデータ構造のビルド + カスタム タスク ベースの連結子をビルドする機能に加えて、非同期操作の結果と、結合する必要な同期の両方を表す および 内にデータ構造を配置することで、非同期シナリオに使用するカスタム データ構造をビルドするための非常に強力な型になります。 + +### AsyncCache + タスクの重要な側面の 1 つに、タスクを待つ複数のコンシューマーに渡し、タスクに継続を登録し、その結果または例外を取得できることなどがあります \( の場合\)。このため、 は、非同期キャッシュ インフラストラクチャで使用するのに最適です。次に、 上にビルドした小さいながらも強力な非同期キャッシュの例を示します。 + +```csharp +public class AsyncCache +{ + private readonly Func> _valueFactory; + private readonly ConcurrentDictionary>> _map; + + public AsyncCache(Func> valueFactory) + { + if (valueFactory == null) throw new ArgumentNullException("loader"); + _valueFactory = valueFactory; + _map = new ConcurrentDictionary>>(); + } + + public Task this[TKey key] + { + get + { + if (key == null) throw new ArgumentNullException("key"); + return _map.GetOrAdd(key, toAdd => + new Lazy>(() => _valueFactory(toAdd))).Value; + } + } +} + +``` + + [AsyncCache\](http://go.microsoft.com/fwlink/p/?LinkId=251941) クラス コンストラクターにはデリゲートとして `TKey` を受け取り、を返す関数を受け取ります。以前にキャッシュからアクセスした値は内部ディクショナリに格納され、`AsyncCache` によって、キャッシュに同時にアクセスしてもキーごとにタスクが 1 つしか生成されないようにします。 + + たとえば、次のようにダウンロードされた Web ページのキャッシュをビルドできます。 + +```csharp +private AsyncCache m_webPages = + new AsyncCache(DownloadStringAsync); + +``` + + Web ページのコンテンツが必要なときはいつでも、非同期メソッドで、このキャッシュを使用できます。 `AsyncCache` クラスは、できるだけ少ない数のページとしてダウンロードしていることを確認し、結果をキャッシュします。 + +```csharp +private async void btnDownload_Click(object sender, RoutedEventArgs e) +{ + btnDownload.IsEnabled = false; + try + { + txtContents.Text = await m_webPages["http://www.microsoft.com"]; + } + finally { btnDownload.IsEnabled = true; } +} + +``` + +### AsyncProducerConsumerCollection + タスクは、非同期アクティビティを調整するためのデータ構造のビルドにも使用できます。プロデューサー\/コンシューマーというクラシックな並列設計パターンの 1 つについて考えてみます。このパターンでは、コンシューマーによって使用されるデータをプロデューサーが生成し、プロデューサーおよびコンシューマーは並列に実行できます。 たとえば、コンシューマーは、項目 2.を生成する前に、プロデューサーが生成した項目 1 を処理します。プロデューサー\/コンシューマー パターンでは、毎回使用できるときにコンシューマーが新しいデータが利用、それを検索するようにあるデータ構造体がプロデューサーが作成した作業を保存する必要があります。 + + 次に、プロデューサーおよびコンシューマーとして使用する非同期メソッドを有効にするタスク上にビルドされた単純なデータ構造を示します。 + +```csharp +public class AsyncProducerConsumerCollection +{ + private readonly Queue m_collection = new Queue(); + private readonly Queue> m_waiting = + new Queue>(); + + public void Add(T item) + { + TaskCompletionSource tcs = null; + lock (m_collection) + { + if (m_waiting.Count > 0) tcs = m_waiting.Dequeue(); + else m_collection.Enqueue(item); + } + if (tcs != null) tcs.TrySetResult(item); + } + + public Task Take() + { + lock (m_collection) + { + if (m_collection.Count > 0) + { + return Task.FromResult(m_collection.Dequeue()); + } + else + { + var tcs = new TaskCompletionSource(); + m_waiting.Enqueue(tcs); + return tcs.Task; + } + } + } +} + +``` + + このデータ構造を使用すると、次のようなコードを作成できます。 + +```csharp +private static AsyncProducerConsumerCollection m_data = …; +… +private static async Task ConsumerAsync() +{ + while(true) + { + int nextItem = await m_data.Take(); + ProcessNextItem(nextItem); + } +} +… +private static void Produce(int data) +{ + m_data.Add(data); +} +``` + + 名前空間には、同様の方法で使用でき、カスタム コレクション型をビルドする必要がない 型が含まれています。 + +```csharp +private static BufferBlock m_data = …; +… +private static async Task ConsumerAsync() +{ + while(true) + { + int nextItem = await m_data.ReceiveAsync(); + ProcessNextItem(nextItem); + } +} +… +private static void Produce(int data) +{ + m_data.Post(data); +} + +``` + +> [!NOTE] +> 名前空間は、**NuGet** により [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] で使用できます。 名前空間を含むアセンブリをインストールし、[!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)] でプロジェクトを開き、\[プロジェクト\] メニューの **\[Manage NuGet Packages\]** \(NuGet パッケージの管理\) を選択し、Microsoft.Tpl.Dataflow パッケージをオンラインで検索します。 + +## 参照 + [Task\-based Asynchronous Pattern \(TAP\)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md) + [Implementing the Task\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md) + [Interop with Other Asynchronous Patterns and Types](../../../docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md new file mode 100644 index 00000000000..d82ebd9c85f --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md @@ -0,0 +1,95 @@ +--- +title: "Deciding When to Implement the Event-based Asynchronous Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Event-based Asynchronous Pattern" + - "ProgressChangedEventArgs class" + - "BackgroundWorker component" + - "events [.NET Framework], asynchronous" + - "AsyncOperationManager class" + - "threading [.NET Framework], asynchronous features" + - "AsyncOperation class" + - "AsyncCompletedEventArgs class" +ms.assetid: a00046aa-785d-4f7f-a8e5-d06475ea50da +caps.latest.revision: 8 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Deciding When to Implement the Event-based Asynchronous Pattern +イベント ベースの非同期パターンは、クラスの非同期動作を公開するためのパターンを提供します。 このパターンを導入すると、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] は、非同期動作を公開するための 2 つのパターンを定義します。 インターフェイスに基づく非同期パターンと、イベントベースのパターンです。 このトピックでは、どのような場合にこの 2 つのパターンを実装すればよいかについて説明します。 + + インターフェイスを使用した非同期プログラミングの詳細については、「[Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md)」を参照してください。 + +## 一般原則 + 一般に、できる限りイベントベースの非同期パターンを使用して非同期機能を公開する必要があります。 ただし、イベント ベースのパターンでは満たすことのできない要件もあります。 その場合は、イベントベースのパターンだけでなく、 パターンも実装することが必要になることがあります。 + +> [!NOTE] +> イベントベースのパターンを実装せずに、 パターンだけを実装することはまれです。 + +## ガイドライン + イベント ベースの非同期パターンを実装する必要のある場合についてのガイドラインを次に示します。 + +- イベントベースのパターンを既定の API として使用して、クラスの非同期動作を公開します。 + +- クラスを Windows フォームなどのクライアント アプリケーションで主に使用する場合は、 パターンを公開しないでください。 + +- 要件を満たす必要がある場合にだけ、 パターンを公開します。 たとえば、既存の API との互換性を保つために、 パターンを公開することが必要な場合があります。 + +- イベントベースのパターンを公開せずに、 パターンだけを公開しないでください。 + +- パターンを公開する必要がある場合は、高度なオプションとして公開します。 たとえば、プロキシ オブジェクトを生成する場合、 パターンを生成するオプションと共に、既定でイベントベースのパターンを生成します。 + +- パターンの実装でイベントベースのパターンの実装を構築します。 + +- 同じクラスでイベントベースのパターンと パターンの両方を公開しないようにしてください。 イベントベースのパターンは "高レベル" のクラスで公開し、 パターンは "低レベル" のクラスで公開します。 たとえば、 コンポーネントのイベントベースのパターンを、 クラスの パターンと比較します。 + + - 互換性を保つために必要な場合は、イベントベースのパターンと パターンを同じクラスで公開します。 たとえば、 パターンを使用する API を既にリリースしている場合、下位互換性を保つために パターンを保持する必要があります。 + + - 実装を分離すると結果的にオブジェクト モデルが複雑になり、複雑さが実装を分離する利点を上回る場合は、イベントベースのパターンと パターンを同じクラスで公開します。 イベントベースのパターンの公開を避けるよりも、単一のクラスで両方のパターンを公開する方が適切です。 + + - イベントベースのパターンと パターンを単一のクラスで公開する必要がある場合、 に設定した を使用して、 パターンの実装を高度な機能としてマークします。 これは、 のプロパティやメソッドを表示するためではなく、[!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] の IntelliSense などのデザイン環境に対して示します。 これらのプロパティやメソッドも完全に使用できますが、IntelliSense を使用する開発者には API のより明瞭なビューが用意されています。 + +## イベントベースのパターンに加え IAsyncResult パターンを公開する際の判断基準 + 前述のシナリオに基づくイベント ベースの非同期パターンには多数の利点がありますが、欠点もいくつかあります。パフォーマンスが最も重要な要件である場合は、これらの欠点を認識しておく必要があります。 + + イベントベースのパターンが パターンと同様には対処できない 3 つのシナリオは次のとおりです。 + +- 1 つの での待機のブロッキング + +- 多数の オブジェクトでの待機のブロッキング + +- での完了のポーリング + + イベントベースのパターンを使用してこれらのシナリオに対処できますが、 パターンを使用するよりも煩雑になります。 + + 多くの場合、開発者は一般的に高いパフォーマンス要件のサービスに対して パターンを使用します。 たとえば、完了のシナリオのポーリングは、高パフォーマンスのサーバーの技法です。 + + さらに、イベントベースのパターンは、作成するオブジェクト \(特に \) の数が多く、スレッド全体にわたって同期するため、 パターンに比べ効率が下がります。 + + パターンを使用する場合に従う推奨事項を次に示します。 + +- オブジェクトまたは オブジェクトのサポートが特に必要な場合にだけ、 パターンを公開します。 + +- パターンを使用する既存の API がある場合にだけ、 パターンを公開します。 + +- パターンに基づく既存の API がある場合は、次回のリリースでイベントベースのパターンも公開するよう考慮します。 + +- 検証済みの高いパフォーマンス要件をイベントベースのパターンでは満たすことができず、 パターンであれば満たすことができる場合にだけ、 パターンを公開します。 + +## 参照 + [Walkthrough: Implementing a Component That Supports the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md) + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) + [Multithreaded Programming with the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md) + [Implementing the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md) + [イベントベースの非同期パターンを実装するための推奨される手順](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md) + [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md b/docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md new file mode 100644 index 00000000000..bc7b46266cd --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md @@ -0,0 +1,72 @@ +--- +title: "Event-based Asynchronous Pattern (EAP) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "asynchronous calls" + - "asynchronous programming, design patterns" + - "asynchronous programming" +ms.assetid: c6baed9f-2a25-4728-9a9a-53b7b14840cf +caps.latest.revision: 20 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 20 +--- +# Event-based Asynchronous Pattern (EAP) +非同期機能をクライアント コードに公開する方法は数多くあります。 イベント ベースの非同期パターンは、クラスが非同期動作を示す 1 つの方法を規定します。 + +> [!NOTE] +> [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、タスク並列ライブラリによって非同期\/並列プログラミングの新しいモデルが提供されます。 詳細については、「[Parallel Programming](../../../docs/standard/parallel-programming/index.md)」を参照してください。 + +## このセクションの内容 + [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) + イベント ベースの非同期パターンによって、マルチスレッド デザイン固有の多くの複雑な問題を気にせずに、マルチスレッド アプリケーションの利点を活用できるしくみを説明します。 + + [Implementing the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md) + 非同期機能を持つクラスをパッケージ化するための標準的な方法について説明します。 + + [イベントベースの非同期パターンを実装するための推奨される手順](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md) + イベント ベースの非同期パターンに従って非同期機能を公開するための要件について説明します。 + + [Deciding When to Implement the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md) + どのような場合に、 パターンではなく、イベント ベースの非同期パターンの実装を選択するかを判断する方法について説明します。 + + [Walkthrough: Implementing a Component That Supports the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md) + イベント ベースの非同期パターンを実装するコンポーネントの作成方法を示します。 これは、 名前空間のヘルパー クラスを使用して実装します。これにより、コンポーネントは任意のアプリケーション モデルで正常に動作します。 + + [How to: Use Components That Support the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md) + イベント ベースの非同期パターンをサポートするコンポーネントの使用方法について説明します。 + +## 関連項目 + + クラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + クラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + コンポーネントについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 関連項目 + [Task Parallel Library \(TPL\)](../../../docs/standard/parallel-programming/task-parallel-library-tpl.md) + 非同期操作および並列操作のプログラミング モデルについて説明します。 + + [Threading](../../../docs/standard/threading/index.md) + .NET Framework のマルチスレッド機能について説明します。 + + [スレッド](../Topic/Threading%20\(C%23%20and%20Visual%20Basic\).md) + C\# 言語と Visual Basic 言語のマルチスレッド機能について説明します。 + +## 参照 + [Managed Threading Best Practices](../../../docs/standard/threading/managed-threading-best-practices.md) + [イベント](../../../docs/standard/events/index.md) + [コンポーネントのマルチスレッド](../Topic/Multithreading%20in%20Components.md) + [Asynchronous Programming Design Patterns](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md b/docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md new file mode 100644 index 00000000000..f71bbc5d7ec --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md @@ -0,0 +1,146 @@ +--- +title: "Event-based Asynchronous Pattern Overview | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Event-based Asynchronous Pattern" + - "ProgressChangedEventArgs class" + - "BackgroundWorker component" + - "events [.NET Framework], asynchronous" + - "Asynchronous Pattern" + - "AsyncOperationManager class" + - "threading [.NET Framework], asynchronous features" + - "AsyncOperation class" + - "AsyncCompletedEventArgs class" +ms.assetid: 792aa8da-918b-458e-b154-9836b97735f3 +caps.latest.revision: 19 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 19 +--- +# Event-based Asynchronous Pattern Overview +多数のタスクを同時に実行しながら、ユーザーの操作にも応答するアプリケーションには、通常、複数のスレッドを使用するデザインが必要です。 名前空間は、高性能なマルチスレッド アプリケーションを作成するのに必要なすべてのツールを提供します。ただし、これらのツールを効果的に使用するには、マルチスレッド ソフトウェア エンジニアリングの豊富な経験が必要です。 比較的単純なマルチスレッド アプリケーションの場合は、 コンポーネントが簡単なソリューションを提供します。 より高度な非同期アプリケーションの場合は、イベント ベースの非同期パターンに準拠したクラスの実装を検討してください。 + + イベント ベースの非同期パターンを使用すると、マルチスレッド デザイン固有の多くの複雑な問題を気にせずに、マルチスレッド アプリケーションの利点を活用できます。 このパターンをサポートするクラスを使用すると、次のことが可能になります。 + +- ダウンロードやデータベース操作などの時間がかかるタスクを、アプリケーションを中断せずに、"バックグラウンド" で行うことができます。 + +- 複数の操作を同時に実行し、それぞれの操作が完了するたびに通知を受け取ることができます。 + +- アプリケーションを停止 \("ハングアップ"\) せずに、リソースが使用可能な状態になるまで待機できます。 + +- 使い慣れたイベントおよびデリゲートのモデルを使用して、保留中の非同期操作と通信できます。 イベント ハンドラーおよびデリゲートの使い方の詳細については、「[イベント](../../../docs/standard/events/index.md)」を参照してください。 + + イベント ベースの非同期パターンをサポートするクラスには、*MethodName*`Async` という名前のメソッドが 1 つ以上含まれます。 これらのメソッドは、同期バージョンに対応するもので、現在のスレッドで同じ操作を行います。 クラスには、*MethodName*`Completed` イベントや *MethodName*`AsyncCancel` メソッド \(または単に `CancelAsync` メソッド\) が含まれる場合もあります。 + + は、イベント ベースの非同期パターンをサポートする一般的なコンポーネントです。 イメージを同期的にダウンロードするには、その メソッドを呼び出します。ただし、イメージのサイズが大きい場合や、ネットワークの接続速度が遅い場合は、ダウンロード操作が完了して の呼び出しから戻るまで、アプリケーションが停止 \("ハングアップ"\) します。 + + イメージの読み込み中にもアプリケーションを実行し続けるには、 メソッドを呼び出して、他のイベントを処理する場合と同様に、 イベントを処理します。 メソッドを呼び出すと、ダウンロードを別のスレッドで \("バックグラウンド" で\) 続行しながら、アプリケーションを実行し続けることができます。 イメージの読み込み操作が完了すると、イベント ハンドラーが呼び出されます。イベント ハンドラーは、 パラメーターを調べて、ダウンロードが正常に完了したかどうかを確認できます。 + + イベント ベースの非同期パターンでは、非同期操作をキャンセルできる必要があります。 コントロールでは、その メソッドでこの要件をサポートしています。 を呼び出すと、保留中のダウンロードを停止する要求が送信されます。タスクがキャンセルされると、 イベントが発生します。 + +> [!CAUTION] +> 要求が作成されると同時に、ダウンロードが終了する可能性もあります。このような場合、 にはキャンセルの要求が反映されません。 これは*競合状態*と呼ばれる、マルチスレッド プログラミングの一般的な問題です。 マルチスレッド プログラミングの問題の詳細については、「[Managed Threading Best Practices](../../../docs/standard/threading/managed-threading-best-practices.md)」を参照してください。 + +## イベント ベースの非同期パターンの特性 + イベント ベースの非同期パターンには、特定のクラスでサポートされている操作の複雑さに応じて、複数の形式があります。 最もシンプルなクラスには、単一の *MethodName*`Async` メソッドと、このメソッドに対応する *MethodName*`Completed` イベントが含まれます。 より複雑なクラスには、複数の *MethodName*`Async` メソッドと、それぞれに対応する *MethodName*`Completed` イベント、これらのメソッドの同期バージョンが含まれます。 クラスでは、各非同期メソッドの、キャンセル、進行状況のレポート、およびインクリメンタル結果をオプションでサポートできます。 + + また、非同期メソッドでは複数の保留中の呼び出し \(複数の同時呼び出し\) をサポートして、他の保留中の操作が完了するまで、コードを何度も呼び出せるようにできます。 このような状況を適切に処理するには、アプリケーションで各操作の完了を追跡する必要があります。 + +### イベント ベースの非同期パターンの例 + および コンポーネントは、イベント ベースの非同期パターンのシンプルな実装です。 および コンポーネントは、イベント ベースの非同期パターンのより複雑な実装です。 + + パターンに準拠したクラス宣言の例を次に示します。 + +```vb +Public Class AsyncExample + ' Synchronous methods. + Public Function Method1(ByVal param As String) As Integer + Public Sub Method2(ByVal param As Double) + + ' Asynchronous methods. + Overloads Public Sub Method1Async(ByVal param As String) + Overloads Public Sub Method1Async(ByVal param As String, ByVal userState As Object) + Public Event Method1Completed As Method1CompletedEventHandler + + Overloads Public Sub Method2Async(ByVal param As Double) + Overloads Public Sub Method2Async(ByVal param As Double, ByVal userState As Object) + Public Event Method2Completed As Method2CompletedEventHandler + + Public Sub CancelAsync(ByVal userState As Object) + + Public ReadOnly Property IsBusy () As Boolean + + ' Class implementation not shown. +End Class +``` + +```csharp +public class AsyncExample +{ + // Synchronous methods. + public int Method1(string param); + public void Method2(double param); + + // Asynchronous methods. + public void Method1Async(string param); + public void Method1Async(string param, object userState); + public event Method1CompletedEventHandler Method1Completed; + + public void Method2Async(double param); + public void Method2Async(double param, object userState); + public event Method2CompletedEventHandler Method2Completed; + + public void CancelAsync(object userState); + + public bool IsBusy { get; } + + // Class implementation not shown. +} +``` + + 架空の `AsyncExample` クラスには 2 つのメソッドがあり、いずれも同期および非同期の呼び出しをサポートしています。 同期のオーバーロードは、呼び出し元スレッドで操作を呼び出しおよび実行する任意のメソッドと同様に動作します。操作に時間がかかる場合は、呼び出しから戻るまでにかなりの遅延が発生する場合があります。 非同期のオーバーロードは、別のスレッドで操作を開始して即座に戻ります。これにより、操作を "バックグラウンド" で実行しながら、呼び出し元スレッドを続行できます。 + +### 非同期メソッドのオーバーロード + 非同期操作には、基本的に単一呼び出しと複数呼び出しの 2 つのオーバーロードがあります。 これら 2 つの形式はそのメソッド シグネチャで区別できます。複数呼び出しの形式には、`userState` という名前の追加のパラメーターがあります。 この形式を使用すると、保留中の非同期操作が完了するのを待たずに、コードで `Method1Async(string param, object userState)` を複数回呼び出すことができます。 一方、直前の呼び出しが完了する前に `Method1Async(string param)` を呼び出そうとすると、メソッドにより が発生します。 + + 複数呼び出しのオーバーロードの `userState` パラメーターにより、非同期操作を区別できます。 `Method1Async(string param, object userState)` の各呼び出しに一意な値 \(GUID やハッシュ コードなど\) を指定すると、各操作が完了したときに、イベント ハンドラーは、どの操作のインスタンスが完了イベントを発生させたのかを確認できます。 + +### 保留中の操作の追跡 + 複数呼び出しのオーバーロードを使用する場合は、保留中のタスクの `userState` オブジェクト \(タスク ID\) を追跡する必要があります。 `Method1Async(string param, object userState)` の呼び出しごとに、通常は新しい一意な `userState` オブジェクトを生成し、それをコレクションに追加します。 この `userState` オブジェクトに対応するタスクが完了イベントを発生させると、完了メソッドの実装は を調べて、それをコレクションから削除します。 このように使用すると、`userState` パラメーターはタスク ID の役割を果たします。 + +> [!NOTE] +> 複数呼び出しのオーバーロードの呼び出しでは、`userState` に一意な値を指定するように注意が必要です。 タスク ID が一意でないと、非同期クラスが をスローします。 + +### 保留中の操作のキャンセル + 非同期操作を完了前にいつでもキャンセルできることは重要です。 イベント ベースの非同期パターンを実装するクラスには、`CancelAsync` メソッド \(非同期メソッドが 1 つだけの場合\) または *MethodName*`AsyncCancel` メソッド \(複数の非同期メソッドがある場合\) が含まれます。 + + 複数呼び出しを可能にするメソッドは `userState` パラメーターを受け取ります。これは、各タスクの有効期間を追跡するのに使用できます。 `CancelAsync` は `userState` パラメーターを受け取ります。このパラメーターにより、特定の保留中のタスクを取り消すことができます。 + + 保留中の操作を一度に 1 つだけサポートする `Method1Async(string param)` のようなメソッドは、キャンセルできません。 + +### 進行状況の更新およびインクリメンタル結果の受信 + イベント ベースの非同期パターンに準拠するクラスは、進行状況およびインクリメンタル結果を追跡するイベントをオプションで提供します。 通常、これは `ProgressChanged` または *MethodName*`ProgressChanged` という名前で、その対応するイベント ハンドラーは パラメーターを受け取ります。 + + `ProgressChanged` イベントのイベント ハンドラーは、 プロパティを調べて、非同期タスクの何パーセントが完了したのかを確認できます。 このプロパティは 0 ~ 100 の範囲です。これを使用すると、ar の プロパティを更新できます。 複数の非同期操作が保留中の場合は、 プロパティを使用して、どの操作が進行状況をレポートしているのかを判別できます。 + + 一部のクラスは、非同期操作の進行に応じて、インクリメンタル結果をレポートします。 これらの結果は から派生したクラス内に保存され、派生クラスのプロパティとして表示されます。 `ProgressChanged` イベントのイベント ハンドラーのこれらの結果へは、 プロパティにアクセスするのと同じようにアクセスできます。 複数の非同期操作が保留中の場合は、 プロパティを使用して、どの操作がインクリメンタル結果をレポートしているのかを判別できます。 + +## 参照 + + + + [How to: Use Components That Support the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md) + [方法 : バックグラウンドで操作を実行する](../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md) + [方法 : バックグラウンド操作を使用するフォームを実装する](../../../docs/framework/winforms/controls/how-to-implement-a-form-that-uses-a-background-operation.md) + [Multithreaded Programming with the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md) + [イベントベースの非同期パターンを実装するための推奨される手順](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md) + [Deciding When to Implement the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/how-to-implement-a-client-of-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/how-to-implement-a-client-of-the-event-based-asynchronous-pattern.md new file mode 100644 index 00000000000..0082847a587 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/how-to-implement-a-client-of-the-event-based-asynchronous-pattern.md @@ -0,0 +1,48 @@ +--- +title: "How to: Implement a Client of the Event-based Asynchronous Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Event-based Asynchronous Pattern" + - "ProgressChangedEventArgs class" + - "BackgroundWorker component" + - "events [.NET Framework], asynchronous" + - "Asynchronous Pattern" + - "AsyncOperationManager class" + - "threading [.NET Framework], asynchronous features" + - "components [.NET Framework], asynchronous" + - "AsyncOperation class" + - "threading [Windows Forms], asynchronous features" + - "AsyncCompletedEventArgs class" +ms.assetid: 21a858c1-3c99-4904-86ee-0d17b49804fa +caps.latest.revision: 11 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 11 +--- +# How to: Implement a Client of the Event-based Asynchronous Pattern +「[Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md)」に従ってコンポーネントを使用する方法のコード例を次に示します。 この例のフォームでは、「[How to: Implement a Component That Supports the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)」で説明した `PrimeNumberCalculator` コンポーネントを使用します。 + + この例を使用するプロジェクトを実行すると、"Prime Number Calculator" フォームにグリッドと 2 つのボタン \(**\[Start New Task\]** および **\[Cancel\]**\) が表示されます。 **\[Start New Task\]** ボタンは、続けて何度もクリックできます。クリックするたびに、非同期操作によって計算が開始され、ランダムに生成されたテスト数値が素数かどうかが調べられます。 フォームには定期的に進行状況およびインクリメンタル結果が表示されます。 各操作には一意のタスク ID が割り当てられます。 計算結果は **\[Result\]** 列に表示されます。テスト数値が素数でない場合は、**\[Composite\]** とラベルが付けられ、最初の約数が表示されます。 + + **\[Cancel\]** ボタンを使用すると、任意の保留中の操作をキャンセルできます。 複数選択できます。 + +> [!NOTE] +> 大部分の数値は素数ではありません。 いくつもの操作を完了しても素数が見つからない場合は、さらにタスクを開始すると、いずれ素数が見つかります。 + +## 使用例 + [!code-csharp[System.ComponentModel.AsyncOperationManager#10](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/CS/primenumbercalculatormain.cs#10)] + [!code-vb[System.ComponentModel.AsyncOperationManager#10](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.ComponentModel.AsyncOperationManager/VB/primenumbercalculatormain.vb#10)] + +## 参照 + + + \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md new file mode 100644 index 00000000000..ba57a9b3273 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md @@ -0,0 +1,69 @@ +--- +title: "How to: Use Components That Support the Event-based Asynchronous Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Event-based Asynchronous Pattern" + - "ProgressChangedEventArgs class" + - "BackgroundWorker component" + - "events [.NET Framework], asynchronous" + - "Asynchronous Pattern" + - "AsyncOperationManager class" + - "threading [.NET Framework], asynchronous features" + - "components [.NET Framework], asynchronous" + - "AsyncOperation class" + - "threading [Windows Forms], asynchronous features" + - "AsyncCompletedEventArgs class" +ms.assetid: 35e9549c-1568-4768-ad07-17cc6dff11e1 +caps.latest.revision: 15 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 15 +--- +# How to: Use Components That Support the Event-based Asynchronous Pattern +大部分のコンポーネントは、非同期的に作業を行うオプションを提供します。 たとえば、 および コンポーネントを使用すると、メイン スレッドを中断せずに実行したまま、サウンドおよびイメージを "バックグラウンド" で読み込むことができます。 + + サポートするクラスで非同期メソッドを使用して、他のイベントの場合と同じように [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) は場合、イベント ハンドラーをコンポーネントの *MethodName*`Completed` イベントにアタッチする簡単です。 *MethodName*`Async` のメソッドを呼び出すと、アプリケーションが *MethodName*`Completed` イベントが発生させるまで中断されずに実行されます。 イベント ハンドラーで パラメーターを調べると、非同期操作が正常に完了したか、キャンセルされたかを確認できます。 + + イベンド ハンドラーの使用方法の詳細については、「[イベント ハンドラーの概要](../../../docs/framework/winforms/event-handlers-overview-windows-forms.md)」を参照してください。 + + 次の手順は、 コントロールの非同期イメージ読み込み機能を使用する方法を示しています。 + +### PictureBox コントロールを有効にして、非同期的にイメージを読み込むには + +1. フォームで コンポーネントのインスタンスを作成します。 + +2. イベントにイベント ハンドラーを割り当てます。 + + ここで、非同期ダウンロード中に発生したエラーを確認します。 キャンセルも確認します。 + + [!code-csharp[System.Windows.Forms.PictureBox.LoadAsync#2](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/CS/Form1.cs#2)] + [!code-vb[System.Windows.Forms.PictureBox.LoadAsync#2](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/VB/Form1.vb#2)] + + [!code-csharp[System.Windows.Forms.PictureBox.LoadAsync#5](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/CS/Form1.cs#5)] + [!code-vb[System.Windows.Forms.PictureBox.LoadAsync#5](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/VB/Form1.vb#5)] + +3. フォームに 2 つのボタン \(`loadButton` および `cancelLoadButton`\) を追加します。 イベント ハンドラーを追加して、ダウンロードを開始およびキャンセルします。 + + [!code-csharp[System.Windows.Forms.PictureBox.LoadAsync#3](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/CS/Form1.cs#3)] + [!code-vb[System.Windows.Forms.PictureBox.LoadAsync#3](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/VB/Form1.vb#3)] + + [!code-csharp[System.Windows.Forms.PictureBox.LoadAsync#4](../../../samples/snippets/csharp/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/CS/Form1.cs#4)] + [!code-vb[System.Windows.Forms.PictureBox.LoadAsync#4](../../../samples/snippets/visualbasic/VS_Snippets_Winforms/System.Windows.Forms.PictureBox.LoadAsync/VB/Form1.vb#4)] + +4. アプリケーションを実行します。 + + イメージのダウンロードの進行中には、フォームを自由に移動、最小化、最大化できます。 + +## 参照 + [方法 : バックグラウンドで操作を実行する](../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md) + [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) + [NOT IN BUILD: Multithreading in Visual Basic](http://msdn.microsoft.com/ja-jp/c731a50c-09c1-4468-9646-54c86b75d269) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md new file mode 100644 index 00000000000..9ec855d43ee --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md @@ -0,0 +1,260 @@ +--- +title: "イベントベースの非同期パターンの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "イベント ベースの非同期パターン" + - "ProgressChangedEventArgs クラス" + - "BackgroundWorker コンポーネント" + - "イベント [.NET Framework], 非同期" + - "非同期パターン" + - "AsyncOperationManager クラス" + - "スレッド処理 [.NET Framework], 非同期機能" + - "非同期コンポーネント [.NET Framework]" + - "AsyncOperation クラス" + - "AsyncCompletedEventArgs クラス" +ms.assetid: 43402d19-8d30-426d-8785-1a4478233bfa +caps.latest.revision: 20 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 20 +--- +# イベントベースの非同期パターンの実装 +いくつかの操作によって顕著な遅延が発生する可能性がありますクラスを作成している場合は、実装することによって、非同期機能を付けることを検討して[非同期パターンの概要をイベントに基づく](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md)します。 + + イベント ベースの非同期パターンは、標準的な非同期機能を持つクラスをパッケージ化する方法を提供します。 ヘルパー クラスで実装される場合と同様に、どのアプリケーション モデル、クラスが正しく動作を含む[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)]、コンソール アプリケーション、および Windows フォーム アプリケーションです。 + + イベント ベースの非同期パターンを実装する例を参照してください。[方法: イベント ベースの非同期パターンをサポートするコンポーネントの実装](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md)します。 + + 検索は、単純な非同期操作の適切なコンポーネントです。 詳細についてはを参照してください[方法: バック グラウンドで操作を実行](../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md)します。 + + 次の一覧では、このトピックで説明するイベント ベースの非同期パターンの機能について説明します。 + +- イベント ベースの非同期パターンを実装するための機会 + +- 非同期メソッドの名前を付ける + +- オプションでキャンセルをサポートします。 + +- オプションでサポートする場合、IsBusy プロパティ + +- 進行状況レポートのサポートを必要に応じて指定します。 + +- 必要に応じてインクリメンタル結果を返すためのサポートを提供します。 + +- 処理し、メソッドの Ref パラメーター + +## イベント ベースの非同期パターンを実装するための機会 + イベント ベースの非同期パターンの実装を検討する場合。 + +- クラスのクライアントは必要はありません非同期操作、つまり、そのポーリングに使用できるオブジェクトとまたはクライアントによってに基づいて作成する必要があります。 + +- 使い慣れたイベントのデリゲートのモデルを使用するクライアントで管理するための非同期操作を必要とします。 + + すべての操作が非同期の実装の候補が、長い待機時間が予想されるものと見なします。 特に適切なは、操作をクライアントがメソッドを呼び出すし、それ以上の介入なしで通知を受けず、です。 適切なは、定期的に進捗状況、インクリメンタル結果や状態の変化をクライアントに通知を継続的に実行される操作です。 + + イベント ベースの非同期パターンをサポートする時期を決定する際の詳細については、次を参照してください。[を決定するときに、イベント ベースの非同期パターンを実装する](../../../docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md)です。 + +## 非同期メソッドの名前を付ける + 各同期メソッド*MethodName*の対応する非同期を提供します。 + + 定義、 *MethodName* `Async`メソッドです。 + +- `void` を返します。 + +- 同じパラメーターを受け取り、 *MethodName*メソッドです。 + +- 複数の呼び出しを受け入れます。 + + 必要に応じて定義、 *MethodName* `Async`オーバー ロードのと同じ*MethodName*`Async`と呼ばれますが、追加のオブジェクトの値を持つパラメーターが`userState`です。 その場合、そのメソッドの複数の同時呼び出しを管理する準備を整えておけば場合は、`userState`メソッドの呼び出しを区別するためにすべてのイベント ハンドラーにもたらされる価値です。 できますこれを行う後で利用できるユーザーの状態を格納する場所として単純にします。 + + 各個別*MethodName* `Async`メソッド シグネチャ。 + +1. メソッドと同じクラスでは、次のイベントを定義します。 + + ```vb + Public Event MethodNameCompleted As MethodNameCompletedEventHandler + ``` + + ```csharp + public event MethodNameCompletedEventHandler MethodNameCompleted; + ``` + +2. 次のデリゲートを定義し、 します。 これらはの場合、同じ名前空間が、クラス自体の外部で定義されます。 + + ```vb + Public Delegate Sub MethodNameCompletedEventHandler( _ + ByVal sender As Object, _ + ByVal e As MethodNameCompletedEventArgs) + + Public Class MethodNameCompletedEventArgs + Inherits System.ComponentModel.AsyncCompletedEventArgs + Public ReadOnly Property Result() As MyReturnType + End Property + ``` + + ```csharp + public delegate void MethodNameCompletedEventHandler(object sender, + MethodNameCompletedEventArgs e); + + public class MethodNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs + { + public MyReturnType Result { get; } + } + ``` + + - いることを確認、 *MethodName* `CompletedEventArgs`フィールド、データ バインドできるため、クラスが読み取り専用プロパティとフィールドではなく、メンバーを公開します。 + + - いずれかを定義しないの結果が得られないメソッド用のクラスを派生します。 インスタンスを使用するだけ自体です。 + + > [!NOTE] + > 可能かつ適切なデリゲートを再利用するときにまったく問題ありませんが、 型です。 ここでは、名前付けされませんメソッド名に一貫性のある特定のデリゲート以降と&1; つのメソッドに関連付けられているされません。 + +## オプションでキャンセルをサポートします。 + クラスでは、非同期操作のキャンセルをサポートする場合、以下に示すようキャンセルは、クライアントに公開する必要があります。 キャンセルのサポートを定義する前に到達する必要がある&2; つの意思決定ポイントがあることに注意してください。 + +- を、今後の予想される追加機能を含め、クラスはキャンセルをサポートする非同期操作を&1; つだけありますか。 + +- キャンセルのサポートに複数の保留中の操作をサポートする非同期操作をできるでしょうか。 *MethodName* `Async`メソッドを`userState`パラメーター、おり、いずれかを完了するを待機する前に複数の呼び出しは許可してでしょうか。 + + 次の表でこれら&2; つの質問に対する回答を使用して、キャンセル メソッドのシグネチャを決定します。 + +### Visual Basic + +||サポートされている複数の同時操作|一度に&1; つだけの操作| +|------|------------------------------------------------|----------------------------------| +|クラス全体で&1; つの非同期操作|`Sub MethodNameAsyncCancel(ByVal userState As Object)`|`Sub MethodNameAsyncCancel()`| +|クラスの複数の非同期操作|`Sub CancelAsync(ByVal userState As Object)`|`Sub CancelAsync()`| + +### C# + +||サポートされている複数の同時操作|一度に&1; つだけの操作| +|------|------------------------------------------------|----------------------------------| +|クラス全体で&1; つの非同期操作|`void MethodNameAsyncCancel(object userState);`|`void MethodNameAsyncCancel();`| +|クラスの複数の非同期操作|`void CancelAsync(object userState);`|`void CancelAsync();`| + + 定義した場合、`CancelAsync(object userState)`メソッドでは、クライアントは、オブジェクトで呼び出されたすべての非同期メソッドを区別できるようにするには、その状態値を選択する場合は注意が必要またはすべての呼び出しで非同期メソッドを&1; つだけでなくにする必要があります。 + + 1 つの非同期操作のバージョンの名前を決定*MethodName* `AsyncCancel`を Visual Studio の IntelliSense のようなデザイン環境でメソッドをより簡単に検出できないに基づきます。 これにより、関連するメンバーをグループ化し、それらを他のメンバーを持つ非同期機能とは無関係から区別します。 あることを追加する場合の非同期操作で追加今後のバージョンを定義することをお勧め`CancelAsync`します。 + + 上の表の複数のメソッドを同じクラスに定義されていません。 しないことになる意味では、または、クラス インターフェイスのメソッドの増加に伴うがわかりにくくなります。 + + これらのメソッド通常がすぐに、れ、操作を実際にはキャンセルできませんか。 イベントのハンドラーで、 *MethodName* `Completed` 、イベント、 *MethodName* `CompletedEventArgs`オブジェクトが含まれています、`Cancelled`フィールドには、クライアントを使用して、キャンセルが発生したかどうかを確認します。 + + 説明されているキャンセルのセマンティクスに従う[イベント ベースの非同期パターンを実装するためのベスト プラクティス](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md)します。 + +## オプションでサポートする場合、IsBusy プロパティ + クラスが複数の同時呼び出しをサポートしていない場合は、公開することを検討してください、`IsBusy`プロパティです。 これにより、開発者を判断するかどうか、 *MethodName* `Async`から例外をキャッチせずメソッドが実行されている、 *MethodName* `Async`メソッドです。 + + 遵守、`IsBusy`セマンティクスの記載[イベント ベースの非同期パターンを実装するためのベスト プラクティス](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md)します。 + +## 進行状況レポートのサポートを必要に応じて指定します。 + その操作中に進行状況を報告する非同期操作のことをお勧めします。 イベント ベースの非同期パターンは、そのためのガイドラインを示します。 + +- 必要に応じて、非同期操作で発生し、適切なスレッドで呼び出されるイベントを定義します。 オブジェクトは、0 ~ 100 の範囲であると予想される整数値の進行状況インジケーターを実行します。 + +- このイベントには、次のように名前を付けます。 + + - `ProgressChanged`クラスが複数の非同期操作 (または将来のバージョンで複数の非同期操作を含めると予想されて) です。 + + - *MethodName* `ProgressChanged`クラスは、非同期操作を&1; つを持つ場合です。 + + この名前の付け方は、必要に応じてキャンセルのサポート セクションで説明したキャンセル メソッドに対して行わ対応しています。 + + このイベントを使用する必要があります、 デリゲート シグネチャとクラスです。 代わりに、インスタンス、読み取られたバイトと、ダウンロード操作の合計バイト数) (よりドメイン固有の進行状況インジケーターを提供できる場合、必要があります定義の派生クラスします。 + + 1 つだけ`ProgressChanged`または*MethodName* `ProgressChanged`としては、非同期のメソッドの数にかかわらず、クラスのイベントです。 クライアントが使用する必要があります、`userState`に渡されるオブジェクト、 *MethodName* `Async`メソッドを複数の同時操作の進行状況の更新を区別します。 + + 複数の操作が進行状況をサポートし、進行状況のさまざまなインジケーターを返すそれぞれの状況である可能性があります。 この場合、1 つで`ProgressChanged`イベントが適切でないと、複数のサポートを検討することが`ProgressChanged`イベントです。 ここでの名前付けパターンを使用して*MethodName* `ProgressChanged`各*MethodName* `Async`メソッドです。 + + 説明した進行状況レポートのセマンティクスに従う[イベント ベースの非同期パターンを実装するためのベスト プラクティス](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md)します。 + +## 必要に応じてインクリメンタル結果を返すためのサポートを提供します。 + 場合もあります非同期操作が完了する前に、インクリメンタル結果を返すことができます。 このシナリオをサポートするために使用できるオプションが多数あります。 次の例をいくつか。 + +### 単一の操作 + クラスは、1 つの非同期操作のみをサポートし、その操作が、インクリメンタル結果を返すことができません: 場合 + +- 拡張、 インクリメンタル結果データを実行するために入力し、定義、 *MethodName* `ProgressChanged`イベントと、このデータを拡張します。 + +- これを発生させる*MethodName* `ProgressChanged`イベントのレポートへの増分の結果があるときです。 + + このソリューション適用具体的には、単一非同期操作として、「すべての操作」でインクリメンタル結果を返す発生している同じイベントに問題がないため、 *MethodName* `ProgressChanged`イベントがします。 + +### 同種のインクリメンタル結果を持つクラスを複数回の操作 + この場合をこれらインクリメンタル結果をすべて同じ型のデータがあるクラスはそれぞれ、インクリメンタル結果を返すことのできる、複数の非同期メソッドをサポートします。 + + クラスについては単一の操作、同じとは、上記で説明したモデルに従うすべてインクリメンタル結果を使用しても構造体。 定義、`ProgressChanged`イベントの代わりに、 *MethodName* `ProgressChanged`イベント、複数の非同期メソッドに適用されるためです。 + +### 異種のインクリメンタル結果を持つクラスを複数回の操作 + クラスは、複数の非同期メソッドをサポートする場合、データの別の型を返す各手順に従います。 + +- インクリメンタル結果の進行状況のレポートからレポートを区切ります。 + +- 別の定義*MethodName* `ProgressChanged`イベントを適切なそのメソッドの増分の結果データを処理する各非同期メソッドのです。 + + 」の説明に従って、適切なスレッドでは、そのイベント ハンドラーを呼び出す[イベント ベースの非同期パターンを実装するためのベスト プラクティス](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md)します。 + +## 処理し、メソッドの Ref パラメーター + 使用する`out`と`ref`一般に、.NET Framework で避けることを推奨、ここでは、ルールが含まれているときに実行します。 + + 同期メソッドを指定した*MethodName*: + +- `out`パラメーターを*MethodName*の一部をすることはできません*MethodName*`Async`します。 代わりの一部をすることがあります*MethodName* `CompletedEventArgs`と等価で、パラメーターと同じ名前の*MethodName* (がない限りより適切な名前)。 + +- `ref`パラメーターを*MethodName*の一部として出現する必要があります*MethodName*`Async`の一部として*MethodName* `CompletedEventArgs`と等価で、パラメーターと同じ名前の*MethodName* (がない限りより適切な名前)。 + + 例を示します。 + +```vb +Public Function MethodName(ByVal arg1 As String, ByRef arg2 As String, ByRef arg3 As String) As Integer +``` + +```csharp +public int MethodName(string arg1, ref string arg2, out string arg3); +``` + + 非同期メソッドとそのクラスは次のようになります。 + +```vb +Public Sub MethodNameAsync(ByVal arg1 As String, ByVal arg2 As String) + +Public Class MethodNameCompletedEventArgs + Inherits System.ComponentModel.AsyncCompletedEventArgs + Public ReadOnly Property Result() As Integer + End Property + Public ReadOnly Property Arg2() As String + End Property + Public ReadOnly Property Arg3() As String + End Property +End Class +``` + +```csharp +public void MethodNameAsync(string arg1, string arg2); + +public class MethodNameCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs +{ + public int Result { get; }; + public string Arg2 { get; }; + public string Arg3 { get; }; +} +``` + +## 関連項目 + + + [方法: イベント ベースの非同期パターンをサポートするコンポーネントの実装](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md) + [方法: バック グラウンドで操作を実行](../../../docs/framework/winforms/controls/how-to-run-an-operation-in-the-background.md) + [方法: フォーム バック グラウンド操作を実装します。](../../../docs/framework/winforms/controls/how-to-implement-a-form-that-uses-a-background-operation.md) + [イベント ベースの非同期パターンを実装する状況の判断](../../../docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md) + [イベント ベースの非同期パターンではマルチ スレッド プログラミング](../../../docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md) + [イベント ベースの非同期パターンを実装するためのベスト プラクティス](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md new file mode 100644 index 00000000000..9604fb5156d --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md @@ -0,0 +1,110 @@ +--- +title: "Implementing the Task-based Asynchronous Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework, and TAP" + - "asynchronous design patterns, .NET Framework" + - "TAP, .NET Framework support for" + - "Task-based Asynchronous Pattern, .NET Framework support for" + - ".NET Framework, asynchronous design patterns" +ms.assetid: fab6bd41-91bd-44ad-86f9-d8319988aa78 +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# Implementing the Task-based Asynchronous Pattern +タスク ベースの非同期パターン \(TAP\) は、3 つの方法 \(Visual Studio の C\# および Visual Basic コンパイラを使用する方法、手動で行う方法、またはコンパイラと手動による方法を組み合わせた方法\) で実装できます。 以下のセクションでは、それぞれの方法について詳しく説明します。 TAP パターンを使用して、計算主体と I\/O バインドの非同期操作の両方を実装できます \(各種操作については「[作業負荷](#workloads)」セクションで説明します\)。 + +## TAP メソッドの生成 + +### コンパイラの使用方法 + [!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)] および [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] では、`async` キーワード \(Visual Basic では `Async`\) を使用して属性設定されているメソッドは、非同期メソッドと見なされ、TAP を使用して非同期にメソッドを実装するために必要となる変換が C\# コンパイラおよび Visual Basic コンパイラによって行われます。 非同期メソッドは、 オブジェクトまたは オブジェクトを返す必要があります。 後者の場合、関数の本体は `TResult` を返す必要があり、コンパイラによって、結果として得られるタスク オブジェクトでこの結果が利用可能になっていることが確認されます。 同様に、メソッド本体で処理されない例外は、出力タスクにマーシャリングされ、結果として得られるタスクが 状態で終了する原因となります。 例外は、 \(または派生型\) がハンドルされない場合で、結果として得られるタスクは 状態で終了します。 + +### 手動での TAP メソッドの生成 + TAP パターンは、実装の制御を強化するために手動で実装することができます。 コンパイラは、 名前空間から公開されるパブリック アクセス機能および 名前空間でサポートされている型に依存します。 TAP を実装するには、 オブジェクトを作成して非同期操作を実行し、それが完了したら、、または メソッド、またはそのいずれかのメソッドの `Try` バージョンを呼び出します。 TAP メソッドを手動で実装する場合には、表現されている非同期操作の完了時に、結果として得られるタスクを完了する必要があります。 次に例を示します。 + + [!code-csharp[Conceptual.TAP_Patterns#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap_patterns/cs/patterns1.cs#1)] + [!code-vb[Conceptual.TAP_Patterns#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap_patterns/vb/patterns1.vb#1)] + +### ハイブリッド手法 + TAP パターンは手動で実装しても、コア ロジックはコンパイラの実装に委譲すると便利な場合があります。 たとえば、例外を オブジェクトを使用して公開するのではなく、メソッドの直接の呼び出し元にエスケープするように、コンパイラが生成した非同期メソッドの外部で引数を検証する場合は、ハイブリッド手法を使用します。 + + [!code-csharp[Conceptual.TAP_Patterns#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap_patterns/cs/patterns1.cs#2)] + [!code-vb[Conceptual.TAP_Patterns#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap_patterns/vb/patterns1.vb#2)] + + また、このような委譲が便利なもう 1 つのケースとして、高速パスの最適化を実装し、キャッシュされたタスクを返す場合を挙げられます。 + + +## 作業負荷 + 計算主体および I\/O バインドの非同期操作は、いずれも、TAP のメソッドとして実装することができます。 ただし、TAP メソッドがライブラリから公開される場合には、TAP メソッドは、I\/O バインド操作 \(計算が含まれていても、純粋な計算ではない\) を含む作業負荷にのみ指定する必要があります。 メソッドが純粋に計算主体の場合、同期実装としてのみ公開される必要があります。つまり、そのメソッドを使用するコードによって、別のスレッドに作業をオフロードするため、または並列化を実現するためにその同期メソッドの呼び出しをタスク内にラップするかどうかが選択されます。 + +### 計算主体のタスク + クラスは、計算を集中的に行う操作の表現に適しています。 既定では、このクラスは、 クラス内の特別なサポートを利用します。また、いつ、どこで、どのように非同期計算を実行するかを細かく制御することもできます。 + + 計算主体のタスクは、次の方法で生成できます。 + +- .NET Framework 4 では、デリゲート \(通常、 または \) の非同期実行を許容する メソッドを使用します。 のデリゲートを指定する場合、メソッドはデリゲートの非同期実行を表す オブジェクトを返します。 のデリゲートを指定する場合、メソッドは オブジェクトを返します。 メソッドのオーバーロードは、キャンセル トークン \(\)、タスクの作成オプション \(\)、およびタスク スケジューラ \(\) を受け取ります。 たとえば、`Task.Factory.StartNew(…)` など、現在のタスク スケジューラをターゲットとするファクトリ インスタンスを、 クラスの静的プロパティ \(\) として使用できます。 + +- [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] では、静的な メソッドを へのショートカットとして使用します。 スレッド プールをターゲットとする計算主体のタスクを簡単に起動するには、 を使用します。 [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] では、これが計算主体のタスクの推奨起動方法です。 タスクによりきめの細かい制御を行う場合のみ `StartNew` を直接使用します。 + +- タスクを個別に生成およびスケジュールする場合は、`Task` 型のコンストラクターまたは `Start` メソッドを使用します。 パブリック メソッドは、既に開始されているタスクのみを返す必要があります。 + +- メソッドのオーバーロードを使用します。 このメソッドは、別のタスクが完了したときにスケジュールされる新しいタスクを作成します。 一部の オーバーロードは、キャンセル トークン、継続オプション、およびタスク スケジューラを受け取るため、継続タスクのスケジュール設定と実行を細かく制御することができます。 + +- メソッドと メソッドを使用します。 これらのメソッドは、指定された一連のタスクのすべてまたは一部の完了時にスケジュールされる新しいタスクを作成します。 これらのメソッドには、こうしたタスクのスケジュール設定と実行を制御するためのオーバーロードも用意されています。 + + 計算主体のタスクでは、実行開始前に取り消し要求を受信した場合に、スケジュール済みのタスクがシステムによって実行されないようにすることができます。 したがって、キャンセル トークン \( オブジェクト\) を指定すると、そのトークンを監視する非同期コードにそのトークンを渡すことができます。 また、`StartNew` や `Run` など、前述のメソッドのいずれかにそのトークンを指定し、`Task` ランタイムによって、そのトークンが監視されるようにもできます。 + + たとえば、イメージをレンダリングする非同期メソッドを考えます。 タスクの本体によってキャンセル トークンをポーリングすることで、レンダリングの実行中に取り消し要求を受信した場合にコードを早期に終了できるようにします。 また、取り消し要求がレンダリングの開始前に発生した場合、レンダリング処理が行われないようにします。 + + [!code-csharp[Conceptual.TAP_Patterns#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap_patterns/cs/patterns1.cs#3)] + [!code-vb[Conceptual.TAP_Patterns#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap_patterns/vb/patterns1.vb#3)] + + 計算主体のタスクは、次の条件のうち最低でも 1 つが true の場合に 状態で終了します。 + +- 取り消し要求は、タスクが 状態に遷移する前に、引数として作成メソッド \(`StartNew` や `Run` など\) に渡される オブジェクトを使用して受け取ります。 + +- このようなタスクの本体では、 例外がハンドルされなくなります。この例外にはタスクに渡されたのと同じ が含まれていて、このトークンは取り消しが要求されていることを示します。 + + 別の例外がそのタスク本体でハンドルされないと、タスクは 状態で終了し、タスクでの待機または結果へのアクセスが試みられると例外をスローします。 + +### I\/O バインドのタスク + スレッドの実行全体に対してスレッドによって直接サポートされないタスクを作成するには、 型を使用します。 この型は、関連する インスタンスを返す プロパティを公開します。 このタスクの有効期間は、、`TrySet` バリアントなどの メソッドによって制御されます。 + + 指定時間が経過すると完了するタスクを作成する場合を考えてみます。 たとえば、ユーザー インターフェイスでアクティビティを遅延させる場合などです。 クラスには、一定時間経過後にデリゲートを非同期に呼び出す機能、また、 を使用して、タイマーの前に を配置する機能が用意されています。次に例を示します。 + + [!code-csharp[Conceptual.TAP_Patterns#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap_patterns/cs/patterns1.cs#4)] + [!code-vb[Conceptual.TAP_Patterns#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap_patterns/vb/patterns1.vb#4)] + + [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] 以降では、このような目的のために メソッドが用意されており、別の非同期メソッド内で使用して、たとえば、非同期ポーリング ループを実装することもできます。 + + [!code-csharp[Conceptual.TAP_Patterns#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap_patterns/cs/patterns1.cs#5)] + [!code-vb[Conceptual.TAP_Patterns#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap_patterns/vb/patterns1.vb#5)] + + クラスには、非ジェネリック クラスがありません。 ただし、 から が派生されるため、単純にタスクを返す I\/O バインド メソッドに対してジェネリックな オブジェクトを使用できます。 これを行うには、ソースをダミー `TResult` と共に使用します \( は適切な既定の選択肢ですが、 のユーザーがそれを にダウンキャストすることが懸念される場合は、代わりにプライベートな `TResult` を使用することもできます\)。 たとえば、前の例の `Delay` メソッドは、結果として得られるオフセット \(`Task`\) と共に現在時間を返します。 このような結果値が不要である場合、メソッドのコードは次のように記述できます \(戻り値の型と の引数が変化することに注意してください\)。 + + [!code-csharp[Conceptual.TAP_Patterns#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap_patterns/cs/patterns1.cs#6)] + [!code-vb[Conceptual.TAP_Patterns#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap_patterns/vb/patterns1.vb#6)] + +### 計算主体のタスクと I\/O バインドのタスクの混在 + 非同期メソッドは、計算主体の操作や I\/O バインド操作に限らず、この 2 つを混在させた操作を表現できます。 実際、複数の非同期操作は、しばしばより規模の大きな混合操作に合成されます。 たとえば、前の例の `RenderAsync` メソッドでは、いくつかの入力 `imageData` に基づいて、計算を集中的に行う操作を実行してイメージをレンダリングしました。 この `imageData` は、非同期にアクセスする Web サービスから次のように取得される場合があります。 + + [!code-csharp[Conceptual.TAP_Patterns#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap_patterns/cs/patterns1.cs#7)] + [!code-vb[Conceptual.TAP_Patterns#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap_patterns/vb/patterns1.vb#7)] + + また、この例では、単一のキャンセル トークンが複数の非同期操作でどのようにスレッド化されるかも示します。 詳細については、「[Consuming the Task\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md)」のキャンセル使用のセクションを参照してください。 + +## 参照 + [Task\-based Asynchronous Pattern \(TAP\)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md) + [Consuming the Task\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md) + [Interop with Other Asynchronous Patterns and Types](../../../docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/index.md b/docs/standard/asynchronous-programming-patterns/index.md new file mode 100644 index 00000000000..a19e1e371b9 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/index.md @@ -0,0 +1,80 @@ +--- +title: "Asynchronous Programming Patterns | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "asynchronous design patterns, .NET Framework" + - ".NET Framework, asynchronous design patterns" +ms.assetid: 4ece5c0b-f8fe-4114-9862-ac02cfe5a5d7 +caps.latest.revision: 5 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 5 +--- +# Asynchronous Programming Patterns +.NET Framework は、非同期操作を実行するための 3 つのパターンを提供します。 + +- 非同期プログラミング モデル \(APM\) パターン \( パターンとも呼ばれます\)。非同期操作には `Begin` メソッドと `End` メソッドが必要です \(たとえば、非同期書き込み操作の場合は `BeginWrite` と `EndWrite`\)。 このパターンは、新規の開発では推奨されなくなりました。 詳細については、「[Asynchronous Programming Model \(APM\)](../../../docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md)」を参照してください。 + +- イベント ベースの非同期パターン \(EAP\)。`Async` サフィックスを持つメソッドと、1 つ以上のイベント、イベント ハンドラー デリゲート型、および `EventArg` 派生型を必要とします。 EAP は、.NET Framework 2.0 で導入されました。 新規の開発では推奨されなくなりました。 詳細については、「[Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md)」を参照してください。 + +- タスク ベースの非同期パターン \(TAP\)。1 つのメソッドを使用して非同期操作の開始と完了を表します。 TAP は .NET Framework 4 で導入され、.NET Framework での非同期プログラミングに推奨されるアプローチです。 C\# の [async](../Topic/async%20\(C%23%20Reference\).md) キーワードと [await](../Topic/await%20\(C%23%20Reference\).md) キーワード、および Visual Basic 言語の [Async](../Topic/Async%20\(Visual%20Basic\).md) 演算子と [Await](../Topic/Await%20Operator%20\(Visual%20Basic\).md) 演算子により、TAP の言語サポートが追加されます。 詳細については、「[Task\-based Asynchronous Pattern \(TAP\)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md)」を参照してください。 + +## パターンの比較 + 3 つのパターンで非同期操作がどのようにモデリングされるかを簡単に比較するために、指定された量のデータを、指定のバッファーの指定されたオフセットに読み込む `Read` メソッドを考えます。 + +```csharp +public class MyClass +{ + public int Read(byte [] buffer, int offset, int count); +} +``` + + APM の場合は、このメソッドにより `BeginRead` メソッドと `EndRead` メソッドが公開されます。 + +```csharp +public class MyClass +{ + public IAsyncResult BeginRead( + byte [] buffer, int offset, int count, + AsyncCallback callback, object state); + public int EndRead(IAsyncResult asyncResult); +} +``` + + EAP の場合は次の型とメンバーのセットが公開されます。 + +```csharp +public class MyClass +{ + public void ReadAsync(byte [] buffer, int offset, int count); + public event ReadCompletedEventHandler ReadCompleted; +} +``` + + TAP の場合は次の単一の `ReadAsync` メソッドが公開されます。 + +```csharp +public class MyClass +{ + public Task ReadAsync(byte [] buffer, int offset, int count); +} +``` + + TAP、APM、および EAP の包括的な説明については、次のセクションに記載のリンクを参照してください。 + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[Asynchronous Programming Model \(APM\)](../../../docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md)| インターフェイスを使用して非同期動作を提供するレガシ モデルについて説明します。 このモデルは新規の開発では推奨されなくなりました。| +|[Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md)|非同期動作を提供するイベント ベースのレガシ モデルについて説明します。 このモデルは新規の開発では推奨されなくなりました。| +|[Task\-based Asynchronous Pattern \(TAP\)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md)| 名前空間に基づく新しい非同期パターンについて説明します。 このモデルは、.NET Framework 4 以降のバージョンでの非同期プログラミングで推奨されるアプローチです。| \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md b/docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md new file mode 100644 index 00000000000..9cc710088f5 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md @@ -0,0 +1,120 @@ +--- +title: "Interop with Other Asynchronous Patterns and Types | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework, and TAP" + - "asynchronous design patterns, .NET Framework" + - "TAP, .NET Framework support for" + - "Task-based Asynchronous Pattern, .NET Framework support for" + - ".NET Framework, asynchronous design patterns" +ms.assetid: f120a5d9-933b-4d1d-acb6-f034a57c3749 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# Interop with Other Asynchronous Patterns and Types +.NET Framework 1.0 では、 とも、[Asynchronous Programming Model \(APM\)](../../../docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md) パターンとも呼ばれる `Begin/End` パターンが導入されました。 .NET Framework 2.0 では、[Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) が追加されました。 .NET Framework 4 以降では、[Task\-based Asynchronous Pattern \(TAP\)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md) が APM および EAP よりも優先されますが、以前のパターンからの移行ルーチンを簡単にビルドする機能が提供されます。 + + このトピックの内容 + +- [タスクおよび APM](#APM) \(「[APM から TAP へ](#ApmToTap)」または「[TAP から APM へ](#TapToApm)」\) + +- [タスクおよび EAP](#EAP) + +- [タスクおよび待機ハンドル](#WaitHandles) \(「[待機ハンドルから TAP へ](#WHToTap)」または「[TAP から待機ハンドルへ](#TapToWH)」\) + + +## タスクおよび非同期プログラミング モデル \(APM\) + + +### APM から TAP へ + [Asynchronous Programming Model \(APM\)](../../../docs/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm.md) パターンは高度に構造化されているため、ラッパーをビルドして APM 実装を TAP 実装として公開するのはとても簡単です。 実際、.NET Framework では、[!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降で、この変換を行うために メソッドのオーバーロードという形でヘルパー ルーチンが用意されています。 + + クラスと、そのクラスの および メソッドについて考えてみましょう。これらのメソッドは、同期 メソッドに対応する APM 側のメソッドです。 + + [!code-csharp[Conceptual.AsyncInterop#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Stream1.cs#1)] + [!code-vb[Conceptual.AsyncInterop#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/stream1.vb#1)] +[!code-csharp[Conceptual.AsyncInterop#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Stream1.cs#2)] +[!code-vb[Conceptual.AsyncInterop#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/stream1.vb#2)] +[!code-csharp[Conceptual.AsyncInterop#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Stream1.cs#3)] +[!code-vb[Conceptual.AsyncInterop#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/stream1.vb#3)] + + メソッドを次のように使用すると、この操作に対する TAP ラッパーを実装できます。 + + [!code-csharp[Conceptual.AsyncInterop#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Wrap1.cs#4)] + [!code-vb[Conceptual.AsyncInterop#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/Wrap1.vb#4)] + + この実装は次のようになります。 + + [!code-csharp[Conceptual.AsyncInterop#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Wrap2.cs#5)] + [!code-vb[Conceptual.AsyncInterop#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/Wrap2.vb#5)] + + +### TAP から APM へ + 既存のインフラストラクチャで APM パターンを使用することを想定している場合は、TAP の実装を用意し、APM の実装を想定している場所でその TAP の実装を使用します。 タスクは合成することができ、 クラスが を実装するため、これは単純なヘルパー関数を使用して実現することができます。 次のコードでは、 クラスの拡張を使用しますが、ほぼ同じ関数を非ジェネリック タスクに使用できます。 + + [!code-csharp[Conceptual.AsyncInterop#6](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/APM1.cs#6)] + [!code-vb[Conceptual.AsyncInterop#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/APM1.vb#6)] + + ここで、TAP 実装がある次のような例を考えてみます。 + + [!code-csharp[Conceptual.AsyncInterop#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/APM2.cs#7)] + [!code-vb[Conceptual.AsyncInterop#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/APM2.vb#7)] + + そして、次の APM 実装を使用します。 + + [!code-csharp[Conceptual.AsyncInterop#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/APM2.cs#8)] + [!code-vb[Conceptual.AsyncInterop#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/APM2.vb#8)] +[!code-csharp[Conceptual.AsyncInterop#9](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/APM2.cs#9)] +[!code-vb[Conceptual.AsyncInterop#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/APM2.vb#9)] + + 次のコードは、APM への移行の一例です。 + + [!code-csharp[Conceptual.AsyncInterop#10](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/APM2.cs#10)] + [!code-vb[Conceptual.AsyncInterop#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/APM2.vb#10)] + + +## タスクとイベント ベースの非同期パターン \(EAP\) + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) 実装をラップする手順は、APM パターンをラップするより複雑です。EAP パターンのほうが APM パターンよりもバリエーションが多く、構造化の程度が低いためです。 例を示すために、次のコードでは `DownloadStringAsync` メソッドをラップしています。`DownloadStringAsync` は、URI を受け付け、進行状況として複数の統計情報をレポートするためにダウンロード中に `DownloadProgressChanged` イベントを発生させ、完了時に `DownloadStringCompleted` イベントを発生させます。 最終結果は、指定された URI にあるページのコンテンツを含む文字列です。 + + [!code-csharp[Conceptual.AsyncInterop#11](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/EAP1.cs#11)] + [!code-vb[Conceptual.AsyncInterop#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/EAP1.vb#11)] + + +## タスクおよび待機ハンドル + + +### 待機ハンドルから TAP へ + 待機ハンドルは非同期パターンを実装しませんが、上級開発者は、待機ハンドルが設定されるときに非同期の通知を行うため、 クラスおよび メソッドを使用できます。 メソッドをラップすると、待機ハンドルのすべての同期待機をタスク ベースの待機にできます。 + + [!code-csharp[Conceptual.AsyncInterop#12](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Wait1.cs#12)] + [!code-vb[Conceptual.AsyncInterop#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/Wait1.vb#12)] + + このメソッドにより、非同期メソッドで既存の 実装を使用できます。 たとえば、特定の時点に実行する非同期操作の数を絞り込む場合は、セマフォ \( オブジェクト\) を利用できます。 セマフォのカウントを *N* に初期化し、操作を実行するときには常にセマフォを待機し、操作完了時にセマフォを解放することで、同時実行される操作の数を *N* に絞り込むことができます。 + + [!code-csharp[Conceptual.AsyncInterop#13](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Semaphore1.cs#13)] + [!code-vb[Conceptual.AsyncInterop#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/Semaphore1.vb#13)] + + また、待機ハンドルに依存せず、代わりにタスクで完全に動作する非同期セマフォもビルドできます。 これを行うには、 の上位にデータ構造をビルドするという「[Consuming the Task\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md)」で説明されている手法を使用します。 + + +### TAP から待機ハンドルへ + 前述のとおり、 クラスは、 を実装し、その実装は プロパティを公開します。このプロパティは、 が完了したときに設定される待機ハンドルを返します。 は次のように取得できます。 + + [!code-csharp[Conceptual.AsyncInterop#14](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.AsyncInterop/cs/Wait1.cs#14)] + [!code-vb[Conceptual.AsyncInterop#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.AsyncInterop/vb/Wait1.vb#14)] + +## 参照 + [Task\-based Asynchronous Pattern \(TAP\)](../../../docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md) + [Implementing the Task\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md) + [Consuming the Task\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md b/docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md new file mode 100644 index 00000000000..82037cc05d2 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/multithreaded-programming-with-the-event-based-asynchronous-pattern.md @@ -0,0 +1,65 @@ +--- +title: "Multithreaded Programming with the Event-based Asynchronous Pattern | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Event-based Asynchronous Pattern" + - "ProgressChangedEventArgs class" + - "BackgroundWorker component" + - "events [.NET Framework], asynchronous" + - "AsyncOperationManager class" + - "threading [.NET Framework], asynchronous features" + - "components [.NET Framework], asynchronous" + - "AsyncOperation class" + - "AsyncCompletedEventArgs class" +ms.assetid: 958d6617-5e70-4b36-b5db-63c16dc35e43 +caps.latest.revision: 19 +author: "dotnet-bot" +ms.author: "dotnetcontent" +manager: "wpickett" +caps.handback.revision: 19 +--- +# Multithreaded Programming with the Event-based Asynchronous Pattern +非同期機能をクライアント コードに公開する方法は数多くあります。 イベント ベースの非同期パターンは、非同期動作を示すクラスに対して推奨される方法を規定します。 + +## このセクションの内容 + [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) + イベント ベースの非同期パターンによって、マルチスレッド デザイン固有の多くの複雑な問題を気にせずに、マルチスレッド アプリケーションの利点を活用できるしくみを説明します。 + + [Implementing the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/implementing-the-event-based-asynchronous-pattern.md) + 非同期機能を持つクラスをパッケージ化するための標準的な方法について説明します。 + + [イベントベースの非同期パターンを実装するための推奨される手順](../../../docs/standard/asynchronous-programming-patterns/best-practices-for-implementing-the-event-based-asynchronous-pattern.md) + イベント ベースの非同期パターンに従って非同期機能を公開するための要件について説明します。 + + [Deciding When to Implement the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/deciding-when-to-implement-the-event-based-asynchronous-pattern.md) + どのような場合に、 パターンではなく、イベント ベースの非同期パターンの実装を選択するかを判断する方法について説明します。 + + [Walkthrough: Implementing a Component That Supports the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/component-that-supports-the-event-based-asynchronous-pattern.md) + イベント ベースの非同期パターンを実装するコンポーネントの作成方法を示します。 これは、 名前空間のヘルパー クラスを使用して実装します。これにより、コンポーネントは任意のアプリケーション モデルで正常に動作します。 + + [How to: Use Components That Support the Event\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/how-to-use-components-that-support-the-event-based-asynchronous-pattern.md) + イベント ベースの非同期パターンをサポートするコンポーネントの使用方法について説明します。 + +## 関連項目 + + クラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + クラスについて説明し、すべてのメンバーへのリンクの一覧を示します。 + + + コンポーネントについて説明し、すべてのメンバーへのリンクの一覧を示します。 + +## 参照 + [Managed Threading Best Practices](../../../docs/standard/threading/managed-threading-best-practices.md) + [イベント](../../../docs/standard/events/index.md) + [コンポーネントのマルチスレッド](../Topic/Multithreading%20in%20Components.md) + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md b/docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md new file mode 100644 index 00000000000..5925c5aabb3 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md @@ -0,0 +1,38 @@ +--- +title: "Polling for the Status of an Asynchronous Operation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "asynchronous programming, status polling" + - "polling asynchronous operation status" + - "status information [.NET Framework], asynchronous operations" +ms.assetid: b541af31-dacb-4e20-8847-1b1ff7c35363 +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# Polling for the Status of an Asynchronous Operation +非同期操作の結果を待っている間に他の作業を行うことができるアプリケーションは、操作が完了するまで待機をブロックしないでください。 非同期操作の完了を待っている間に、命令の実行を継続するには、次のいずれかのオプションを使用します。 + +- 操作が完了したかどうかを確認するには、非同期操作の **\[開始\]** *OperationName* のメソッドによって返される のプロパティを使用します。 この方法はポーリングと呼ばれます。これについては、このトピックで説明します。 + +- デリゲートを使用して、個別のスレッド内の非同期操作の結果を処理します。 この方法の実行例については、「[Using an AsyncCallback Delegate to End an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md)」を参照してください。 + +## 例 + クラスで非同期メソッドを使用して、ユーザー指定のコンピューターのドメイン ネーム システム \(DNS\) 情報を取得するコード例を次に示します。 この例では、非同期操作を開始し、操作が完了するまでコンソールにピリオド \("."\) を出力します。 ここで使用する方法では、 パラメーターと パラメーターは不要なので、これらのパラメーターには **null** \(Visual Basic では **Nothing**\) が渡されます。 + + [!code-csharp[AsyncDesignPattern#3](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDesignPattern/CS/Async_Poll.cs#3)] + [!code-vb[AsyncDesignPattern#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDesignPattern/VB/Async_Poll.vb#3)] + +## 参照 + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) + [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md b/docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md new file mode 100644 index 00000000000..5c5aa6c3498 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap.md @@ -0,0 +1,203 @@ +--- +title: "Task-based Asynchronous Pattern (TAP) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework, and TAP" + - "asynchronous design patterns, .NET Framework" + - "TAP, .NET Framework support for" + - "Task-based Asynchronous Pattern, .NET Framework support for" + - ".NET Framework, asynchronous design patterns" +ms.assetid: 8cef1fcf-6f9f-417c-b21f-3fd8bac75007 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# Task-based Asynchronous Pattern (TAP) +タスク ベースの非同期パターン \(TAP\) は、任意の非同期操作を表すために使用される 名前空間の 型および 型に基づいています。 TAP は、新規開発に推奨の非同期デザイン パターンです。 + +## 名前付け、パラメーター、および戻り値の型 + TAP では、非同期操作の開始と終了を表すために単一のメソッドが使用されます。 これは、`Begin` メソッドと `End` メソッドが必要になる非同期プログラミング モデル \(APM または `IAsyncResult`\) パターンや、`Async` サフィックスの付いたメソッドと、1 つ以上のイベント、イベント ハンドラーのデリゲート型、および `EventArg` 派生型も必要になるイベント ベースの非同期パターン \(EAP\) とは対照的です。 TAP の非同期操作は、操作名の後に `Async` サフィックスが付きます。たとえば、取得 \(Get\) 操作の場合は `GetAsync` になります。 既に `Async` サフィックスの付いたメソッド名を含むクラスに TAP メソッドを追加する場合は、代わりに `TaskAsync` サフィックスを使用します。 たとえば、既にクラスに `GetAsync` メソッドが含まれている場合は、`GetTaskAsync` という名前を使用します。 + + 対応する同期メソッドにより void または `TResult` 型が返されるかどうかに応じて、TAP メソッドは または を返します。 + + TAP メソッドのパラメーターには、対応する同期メソッドと同じパラメーターを、同じ順序で指定する必要があります。 ただし、`out` パラメーターと `ref` パラメーターはこの規則に該当せず、すべて回避する必要があります。 `out` パラメーターまたは `ref` パラメーターで返されるデータは、代わりに複数の値を格納するために、タプルまたはカスタム データ構造を使用して、 により返される `TResult` の一部として返す必要があります。 タスクの作成、操作、または組み合わせのためだけに使用されるメソッド \(メソッド名またはメソッドが属する型の名前でメソッドの非同期の意図が明確な場合\) は、この名前付けパターンに従う必要はありません。このようなメソッドは、*連結子*と呼ばれることもあります。 連結子の例には、 および があります。詳細については、記事「[Consuming the Task\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md)」の「[タスク ベースの組み込み連結子の使用](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md#combinators)」セクションを参照してください。 + + 非同期プログラミング モデル \(APM\) やイベント ベースの非同期パターン \(EAP\) など、従来の非同期プログラミング パターンで使用される構文とは異なる TAP 構文の例については、「[Asynchronous Programming Patterns](../../../docs/standard/asynchronous-programming-patterns/index.md)」を参照してください。 + +## 非同期操作の開始 + TAP に基づく非同期メソッドは、引数の検証や非同期操作の開始などの少量の作業を同期をとって実行してから結果のタスクを返すことができます。 このような同期作業は必要最低限にし、非同期メソッドからすぐに制御を戻すようにします。 制御をすぐに戻す理由は次のとおりです。 + +- 非同期メソッドはユーザー インターフェイス \(UI\) スレッドから呼び出される可能性があるため、同期作業の実行に時間がかかると、アプリケーションの応答性が低下します。 + +- 複数の非同期メソッドが同時に起動される可能性があります。 そのため、非同期メソッドの同期部分の作業に時間がかかると、他の非同期操作の開始が遅れ、同時実行の利点が低減します。 + + 場合によっては、操作の完了に必要な作業の量は、操作を非同期に起動するのに必要な作業量よりも少なくなります。 このようなシナリオの例にはストリームからの読み取りがあり、既にメモリ バッファーにあるデータを読み取ることで読み取り操作が完了する場合です。 このような場合は、操作を同期をとって実行し、既に完了しているタスクを返すことができます。 + +## 例外 + 非同期メソッドは、使用エラーに応答して非同期メソッド呼び出しからスローされる例外のみを発生する必要があります。 運用コードでは使用エラーを発生させないようにする必要があります。 たとえば、null 参照 \(Visual Basic では `Nothing`\) がメソッドの引数の 1 つとして渡されたときにエラー状態 \(通常 によって表される\) が発生する場合、呼び出し元のコードを変更して null 参照が渡されないようにします。 他のエラーの場合はすべて、非同期メソッドの実行中に発生する例外を、返されるタスクに割り当てます。これは、タスクが返される前に非同期メソッドが同期をとって行われる場合でも同じです。 通常、タスクに含まれる例外は最大でも 1 つです。 ただし、タスクが複数の操作 \( など\) を表す場合は、複数の例外を単一タスクに関連付けることができます。 + +## 対象の環境 + TAP メソッドを実装するときに、非同期実行をどこで行うかを決定できます。 スレッド プールで作業負荷を実行したり、\(操作実行のほとんどでスレッドにバインドされないように\) 非同期 I\/O を使用して実装したり、特定のスレッド \(UI スレッドなど\) で実行したり、任意の数の可能なコンテキストを使用したりすることができます。 TAP メソッドは実行する内容がなく、システム内の他の場所で特定の条件が発生していること \(データがキューに置かれたデータ構造に到達したことを表すタスクなど\) を表す を単に返すこともあります。TAP メソッドの呼び出し元は、結果のタスク上で非同期に待機することで、TAP メソッドが完了するまでの待機をブロックするか、非同期操作が完了したときに追加コード \(継続コード\) を実行することができます。 継続コードの作成者は、そのコードが実行される場所を制御できます。 継続コードは、 クラス \( など\) のメソッドによって明示的に作成するか、継続の上位にビルドされる言語サポート \(C\# の `await`、Visual Basic の `Await`、F\# の `AwaitValue` など\) を使用して暗黙のうちに作成できます。 + +## タスク ステータス + クラスは、非同期操作の有効期間を提供し、そのサイクルは、 列挙型によって表されます。 および から派生する型のコーナー ケースに加え、スケジューリングからの構造の分離をサポートするために、 クラスは メソッドを公開します。 パブリック コンストラクターにより作成されるタスクは、ライフ サイクルがスケジュールされていない 状態から始まり、これらのインスタンスで が呼び出されるときにのみスケジュールされることから、*コールド タスク*と呼ばれます。 他のすべてのタスクは、ホットな状態からライフ サイクルが始まります。つまり、タスクが表す非同期操作が既に開始され、それらのタスクの状態は 以外の列挙値であることを意味します。 TAP メソッドから返されるすべてのタスクをアクティブにする必要があります。 TAP メソッドが返すタスクをインスタンス化するためにタスクのコンストラクターを内部使用する場合、TAP メソッドはタスクを返す前に オブジェクトで を呼び出す必要があります。 TAP メソッドのコンシューマーは、返されたタスクがアクティブであるものと推定しても問題はなく、TAP メソッドから返された 上で 呼び出しを試行しないようにする必要があります。 アクティブなタスク上で を呼び出すと、 例外になります。 + +## 取り消し \(省略可能\) + TAP では、取り消しは非同期メソッドの実装側とコンシューマーのどちらでも省略可能です。 操作の取り消しを許可する場合、キャンセル トークン \( インスタンス\) を受け取る非同期メソッドのオーバーロードを公開します。 規則により、パラメーターには `cancellationToken` という名前が付けられます。 + + [!code-csharp[Conceptual.TAP#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap/cs/examples1.cs#1)] + [!code-vb[Conceptual.TAP#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap/vb/examples1.vb#1)] + + 非同期操作は取り消し要求に対してこのトークンを監視します。 取り消し要求を受け取ると、その要求を受け入れて操作を取り消すことができます。 取り消し要求によって作業が途中で終了する場合、TAP メソッドは 状態で終了するタスクを返します。使用できる結果はなく、例外もスローされません。 状態は、 状態や 状態と共に、タスクの最終状態 \(完了状態\) と見なされます。 したがって、タスクが 状態の場合、 プロパティは `true` を返します。 タスクが 状態で完了した場合、 など、継続のオプションを継続から除外するよう指定されていない限り、タスクに登録された継続がスケジュールまたは実行されます。 言語機能を使用して取り消されたタスクを非同期に待機するコードは実行を継続しますが、 またはその派生例外を受け取ります。 などのメソッドによってタスクでの同期をとって待機している状態をブロックされたコードも、例外を伴って実行を継続します。 + + キャンセル トークンが、トークンを受け取る TAP メソッドが呼び出される前に取り消しを要求していた場合、TAP メソッドは タスクを返す必要があります。 ただし、非同期操作の実行中に取り消し要求が出される場合、その非同期操作は取り消し要求を受け取る必要はありません。 取り消し要求の結果として操作が完了した場合にのみ、返されたタスクが 状態で終了します。 取り消しが要求されても、結果 \(例外\) が依然として生成される場合、タスクは 状態または 状態で終了します。 開発者が何よりもまず取り消すことを目的に使用する非同期メソッドの場合は、キャンセル トークンを受け取らないオーバーロードを用意する必要はありません。 取り消せないメソッドの場合、キャンセル トークンを受け取るオーバーロードを用意しません。これにより、ターゲット メソッドが実際に取り消し可能かどうかを呼び出し元に示すことができます。 取り消しを望まないコンシューマー コードは、 を受け取るメソッドを呼び出し、引数値として を指定することができます。 は、既定の と機能的には同じです。 + +## 進行状況のレポート \(省略可能\) + 一部の非同期操作では、進行状況の通知を行うことで利点が得られます。進行状況の通知は、通常、非同期操作の進行状況に関する情報でユーザー インターフェイスを更新するために使用されます。 TAP では、進行状況が、通常 `progress` という名前のパラメーターとして非同期メソッドに渡される インターフェイスによって処理されます。 非同期メソッドの呼び出し時に進行状況インターフェイスを指定することで、不適切な使用方法により発生する競合状態 \(操作の開始後に不適切に登録されたイベント ハンドラーで更新を検出できない場合\) を排除できます。 さらに重要なのは、コンシューマー コードの判断に応じて、進行状況インターフェイスがさまざまな実装方法の進行状況をサポートできるようにすることです。 たとえば、コンシューマー コードが最新の進行状況の更新のみに留意する場合、すべての更新をバッファーに格納することを望む場合、各更新の操作を呼び出すことを望む場合、呼び出しを特定のスレッドにマーシャリングするかどうかの制御を望む場合が考えられます。 これらはすべて、インターフェイスの異なる実装を使用して行うことができ、各実装を特定のコンシューマー ニーズに合わせてカスタマイズできます。 取り消しと同様、TAP の実装では、API が進行状況通知をサポートする場合にのみ、 パラメーターを指定する必要があります。 たとえば、前に説明した `ReadAsync` メソッドが読み取り済みのバイト数の形式で中間進行状況を報告できる場合、進行状況のコールバックは インターフェイスとなることが考えられます。 + + [!code-csharp[Conceptual.TAP#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap/cs/examples1.cs#2)] + [!code-vb[Conceptual.TAP#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap/vb/examples1.vb#2)] + + `FindFilesAsync` メソッドが特定の検索パターンに合ったすべてのファイルのリストを返す場合は、進行状況のコールバックで、完了した作業の割合の見積りに加え、現在の部分的な結果セットを示すことが考えられます。 これは、タプルで行ったり、 + + [!code-csharp[Conceptual.TAP#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap/cs/examples1.cs#3)] + [!code-vb[Conceptual.TAP#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap/vb/examples1.vb#3)] + + または次のように API 固有のデータ型で行うことができます。 + + [!code-csharp[Conceptual.TAP#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.tap/cs/examples1.cs#4)] + [!code-vb[Conceptual.TAP#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.tap/vb/examples1.vb#4)] + + 後者の場合、特別なデータ型には通常 `ProgressInfo` サフィックスを付けます。 + + TAP の実装が `progress` パラメーターを受け取るオーバーロードを用意している場合、`null` の引数を許可し、進行状況を報告しないことを許可する必要があります。 TAP の実装は、 オブジェクトに進行状況を同期をとって報告して、非同期メソッドが速やかに進行状況を提供し、進行状況のコンシューマーが、最適な情報の処理方法と処理場所を判断できるようにします。 たとえば、進行状況のインスタンスはコールバックをマーシャリングし、キャプチャされた同期コンテキストでイベントを発生するように選択することができます。 + +## IProgress\ の実装 + [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] は、単一の implementation: 実装を提供します。 クラスは次のように宣言されます。 + +```csharp + +public class Progress : IProgress +{ + public Progress(); + public Progress(Action handler); + protected virtual void OnReport(T value); + public event EventHandler ProgressChanged; +} + +``` + +```vb + +Public Class Progress(Of T) : Inherits IProgress(Of T) + Public Sub New() + Public Sub New(handler As Action(Of T)) + Protected Overridable Sub OnReport(value As T) + Public Event ProgressChanged As EventHandler(Of T> +End Class + +``` + + のインスタンスは、非同期操作が進行状況の更新を報告するたびに発生する イベントを公開します。 イベントは、 インスタンスがインスタンス化されたときにキャプチャされた オブジェクトで発生します。 同期コンテキストを利用できない場合は、スレッド プールをターゲットとして、既定のコンテキストが使用されます。 ハンドラーは、このイベントに登録することができます。 1 つのハンドラーは、利便性のために コンストラクターにも提供でき、 イベントのイベント ハンドラーと同様に作動します。 進行状況の更新は、イベント ハンドラーの実行中、非同期操作を遅延しないように、非同期に発生します。 別のセマンティクスを適用するため、別の の実装を選択できます。 + +## 提供するオーバーロードの選択 + ともに省略可能な パラメーターと パラメーターの両方を TAP の実装に使用すると、4 つまでオーバーロードを要求することができます。 + +```csharp + +public Task MethodNameAsync(…); +public Task MethodNameAsync(…, CancellationToken cancellationToken); +public Task MethodNameAsync(…, IProgress progress); +public Task MethodNameAsync(…, + CancellationToken cancellationToken, IProgress progress); + +``` + +```vb + +Public MethodNameAsync(…) As Task +Public MethodNameAsync(…, cancellationToken As CancellationToken cancellationToken) As Task +Public MethodNameAsync(…, progress As IProgress(Of T)) As Task +Public MethodNameAsync(…, cancellationToken As CancellationToken, + progress As IProgress(Of T)) As Task + +``` + + ただし、TAP の実装の多くは取り消しまたは進行状況の機能を提供しないため、必要なメソッドは 1 つです。 + +```csharp +public Task MethodNameAsync(…); +``` + +```vb +Public MethodNameAsync(…) As Task +``` + + TAP の実装で取り消しまたは進行状況の両方ではなく、いずれかを一方をサポートする場合は、実装に 2 つのオーバーロードを提供することができます。 + +```csharp + +public Task MethodNameAsync(…); +public Task MethodNameAsync(…, CancellationToken cancellationToken); + +// … or … + +public Task MethodNameAsync(…); +public Task MethodNameAsync(…, IProgress progress); + +``` + +```vb + +Public MethodNameAsync(…) As Task +Public MethodNameAsync(…, cancellationToken As CancellationToken) As Task + +' … or … + +Public MethodNameAsync(…) As Task +Public MethodNameAsync(…, progress As IProgress(Of T)) As Task + +``` + + TAP の実装で取り消しおよび進行状況の両方をサポートする場合は、4 種類のオーバーロードをすべて公開できます。 ただし、次の 2 種類のみ提供することもできます。 + +```csharp + +public Task MethodNameAsync(…); +public Task MethodNameAsync(…, + CancellationToken cancellationToken, IProgress progress); + +``` + +```vb + +Public MethodNameAsync(…) As Task +Public MethodNameAsync(…, cancellationToken As CancellationToken, + progress As IProgress(Of T)) As Task + +``` + + 不足する 2 種類の中間の組み合わせを補足するために、開発者は `cancellationToken` パラメーターに または既定の を渡したり、`progress` パラメーターに `null` を渡すことができます。 + + TAP メソッドに必ず取り消しや進行状況をサポートすることを想定する場合、必要なパラメーターを受け取らないオーバーロードは省略できます。 + + TAP メソッドの複数のオーバーロードを公開して取り消しや進行状況を省略可能にする場合、取り消しや進行状況をサポートしないオーバーロードは、これらをサポートするオーバーロードに、取り消しの場合は 、進行状況の場合は `null` が渡されたように機能する必要があります。 + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[Asynchronous Programming Patterns](../../../docs/standard/asynchronous-programming-patterns/index.md)|非同期操作を実行するための 3 種類のパターンとして、タスク ベースの非同期パターン \(TAP\)、非同期プログラミング モデル \(APM\)、およびイベント ベースの非同期パターン \(EAP\) を紹介します。| +|[Implementing the Task\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/implementing-the-task-based-asynchronous-pattern.md)|タスク ベースの非同期パターン \(TAP\) の実装の 3 つの方法として、Visual Studio の C\# および Visual Basic コンパイラを使用する方法、手動で行う方法、またはコンパイラと手動による方法を組み合わせた方法を説明します。| +|[Consuming the Task\-based Asynchronous Pattern](../../../docs/standard/asynchronous-programming-patterns/consuming-the-task-based-asynchronous-pattern.md)|タスクとコールバックを使用して、ブロックすることなく待機できる方法を説明します。| +|[Interop with Other Asynchronous Patterns and Types](../../../docs/standard/asynchronous-programming-patterns/interop-with-other-asynchronous-patterns-and-types.md)|タスク ベースの非同期パターン \(TAP\) を使用して、非同期プログラミング モデル \(APM\) とイベント ベースの非同期パターン \(EAP\) を実装する方法について説明します。| \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md b/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md new file mode 100644 index 00000000000..7bf36d298e3 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md @@ -0,0 +1,36 @@ +--- +title: "Using an AsyncCallback Delegate and State Object | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "asynchronous programming, delegates" + - "AsyncCallback delegate, samples" + - "asynchronous programming, state objects" + - "IAsyncResult interface, samples" +ms.assetid: e3e5475d-c5e9-43f0-928e-d18df8ca1f1d +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# Using an AsyncCallback Delegate and State Object +別のスレッドで非同期操作の結果を処理するために デリゲートを使用するときには、状態オブジェクトを使用すると、コールバック間での情報の受け渡しおよび最終結果の取得ができます。 このトピックでは、「[Using an AsyncCallback Delegate to End an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md)」の例を拡張するその実例を示します。 + +## 例 + クラスで非同期メソッドを使用して、ユーザー指定のコンピューターのドメイン ネーム システム \(DNS\) 情報を取得するコード例を次に示します。 この例では、`HostRequest` クラスを定義および使用して、状態情報を格納します。 `HostRequest` オブジェクトは、ユーザーによって入力されたコンピューター名ごとに作成されます。 このオブジェクトは、 メソッドに渡されます。 `ProcessDnsInformation` メソッドは、要求が完了するたびに呼び出されます。 `HostRequest` オブジェクトは、 プロパティを使用して取得されます。 `ProcessDnsInformation` メソッドは `HostRequest` オブジェクトを使用して、要求によって返された または要求によってスローされた を格納します。 すべての要求が完了すると、アプリケーションは `HostRequest` オブジェクトを反復処理し、DNS 情報または エラー メッセージを表示します。 + + [!code-csharp[AsyncDesignPattern#5](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDesignPattern/CS/AsyncDelegateWithStateObject.cs#5)] + [!code-vb[AsyncDesignPattern#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDesignPattern/VB/AsyncDelegateWithStateObject.vb#5)] + +## 参照 + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) + [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) + [Using an AsyncCallback Delegate to End an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md) \ No newline at end of file diff --git a/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md b/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md new file mode 100644 index 00000000000..7c04607d058 --- /dev/null +++ b/docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-to-end-an-asynchronous-operation.md @@ -0,0 +1,43 @@ +--- +title: "Using an AsyncCallback Delegate to End an Asynchronous Operation | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ending asynchronous operations" + - "asynchronous programming, ending operations" + - "AsyncCallback delegate" + - "stopping asynchronous operations" +ms.assetid: 9d97206c-8917-406c-8961-7d0909d84eeb +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# Using an AsyncCallback Delegate to End an Asynchronous Operation +非同期操作の結果を待っている間に他の作業を行うことができるアプリケーションは、操作が完了するまで待機をブロックしないでください。 非同期操作の完了を待っている間に、命令の実行を継続するには、次のいずれかのオプションを使用します。 + +- デリゲートを使用して、個別のスレッド内の非同期操作の結果を処理します。 この方法については、このトピックで説明します。 + +- 操作が完了したかどうかを確認するには、非同期操作の **\[開始\]** *OperationName* のメソッドによって返される のプロパティを使用します。 この方法の実行例については、「[Polling for the Status of an Asynchronous Operation](../../../docs/standard/asynchronous-programming-patterns/polling-for-the-status-of-an-asynchronous-operation.md)」を参照してください。 + +## 例 + クラスで非同期メソッドを使用して、ユーザー指定のコンピューターのドメイン ネーム システム \(DNS\) 情報を取得するコード例を次に示します。 この例では、`ProcessDnsInformation` メソッドを参照する デリゲートを作成します。 このメソッドは、DNS 情報の非同期要求を行うたびに一度だけ呼び出されます。 + + ユーザー指定のホストが パラメーターに渡される点に注意してください。 さらに複雑な状態オブジェクトの定義および使い方の例については、「[Using an AsyncCallback Delegate and State Object](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md)」を参照してください。 + + [!code-csharp[AsyncDesignPattern#4](../../../samples/snippets/csharp/VS_Snippets_CLR/AsyncDesignPattern/CS/AsyncDelegateNoStateObject.cs#4)] + [!code-vb[AsyncDesignPattern#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/AsyncDesignPattern/VB/AsyncDelegateNoState.vb#4)] + +## 参照 + [Event\-based Asynchronous Pattern \(EAP\)](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-eap.md) + [Event\-based Asynchronous Pattern Overview](../../../docs/standard/asynchronous-programming-patterns/event-based-asynchronous-pattern-overview.md) + [Calling Asynchronous Methods Using IAsyncResult](../../../docs/standard/asynchronous-programming-patterns/calling-asynchronous-methods-using-iasyncresult.md) + [Using an AsyncCallback Delegate and State Object](../../../docs/standard/asynchronous-programming-patterns/using-an-asynccallback-delegate-and-state-object.md) \ No newline at end of file diff --git a/docs/standard/attributes/TOC.md b/docs/standard/attributes/TOC.md new file mode 100644 index 00000000000..c001a49cb73 --- /dev/null +++ b/docs/standard/attributes/TOC.md @@ -0,0 +1,4 @@ +# [属性の適用](applying-attributes.md) +# [カスタム属性の記述](writing-custom-attributes.md) +# [属性に格納されている情報の取得](retrieving-information-stored-in-attributes.md) +# [属性](index.md) diff --git a/docs/standard/attributes/applying-attributes.md b/docs/standard/attributes/applying-attributes.md new file mode 100644 index 00000000000..caf818c30e4 --- /dev/null +++ b/docs/standard/attributes/applying-attributes.md @@ -0,0 +1,59 @@ +--- +title: "属性の適用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 属性" + - "属性 [.NET Framework], 適用" +ms.assetid: dd7604eb-9fa3-4b60-b2dd-b47739fa3148 +caps.latest.revision: 19 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 19 +--- +# 属性の適用 +コードの要素に属性を適用するには、次のプロセスを使用します。 + +1. 新しい属性を定義するか、または .NET Framework から名前空間をインポートして既存の属性を使用します。 + +2. 属性をコード要素の直前に記述することで、その要素に属性を適用します。 + + 各言語には独自の属性構文があります。 C\+\+ および C\# では、属性が角かっこで囲まれ、要素とは空白で区切られます。属性と要素の間には改行を入れることもできます。 Visual Basic では、属性が山かっこで囲まれ、同じ論理行に記述されている必要があります。改行が必要な場合は、行連結文字を使用できます。 J\# では、特殊なコメント構文を使用して属性がアタッチされます。 + +3. 属性に、位置指定パラメーターと名前付きパラメーターを指定します。 + + 位置指定パラメーターは必須で、名前付きパラメーターの前に指定する必要があります。位置指定パラメーターは、属性のいずれかのコンストラクターのパラメーターに対応します。 名前付きパラメーターは省略可能で、属性の読み取り\/書き込みプロパティに対応します。 C\+\+、C\#、および J\# では、オプションのパラメーターごとに `name`\=`value` を指定します。`name` はプロパティの名前です。 Visual Basic では、`name`:\=`value` を指定します。 + + コードをコンパイルすると属性がメタデータに格納され、ランタイム リフレクション サービスを通じて共通言語ランタイム、すべてのカスタム ツールやアプリケーションで使用できるようになります。 + + 規則では、属性の名前の最後は Attribute にします。 ただし、Visual Basic や C\# など、ランタイムを対象とする言語では、属性をフルネームで指定する必要はありません。 たとえば、 を初期化する場合は、**Obsolete** と指定するだけで参照できます。 + +## メソッドへの属性の適用 + 次の例では、**System.ObsoleteAttribute** をどのように宣言するかを解説しています。これは、コードを互換性のために残されているものとして記述しておくために使用します。 文字列 `"Will be removed in next version"` が属性に渡されます。 属性が記述されているコードが呼び出された時点で、渡された文字列を示すコンパイラの警告が表示されます。 + + [!code-cpp[Conceptual.Attributes.Usage#3](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source1.cpp#3)] + [!code-csharp[Conceptual.Attributes.Usage#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source1.cs#3)] + [!code-vb[Conceptual.Attributes.Usage#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source1.vb#3)] + +## アセンブリ レベルでの属性の適用 + アセンブリ レベルで属性を適用する場合は、キーワード **assembly** \(Visual Basic では `Assembly`\) を使用します。 **AssemblyTitleAttribute** をアセンブリ レベルで適用するコードを次に示します。 + + [!code-cpp[Conceptual.Attributes.Usage#2](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source1.cpp#2)] + [!code-csharp[Conceptual.Attributes.Usage#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source1.cs#2)] + [!code-vb[Conceptual.Attributes.Usage#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source1.vb#2)] + + この属性が適用されると、ファイルのメタデータ部分のアセンブリ マニフェストの中に、文字列 `"My Assembly"` が挿入されます。 この属性を表示するには、[MSIL 逆アセンブラー \(Ildasm.exe\)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) を使用するか、または属性を取得するためのプログラムを作成します。 + +## 参照 + [属性](../../../docs/standard/attributes/index.md) + [属性に格納されている情報の取得](../../../docs/standard/attributes/retrieving-information-stored-in-attributes.md) + [Concepts](../Topic/Attributed%20Programming%20Concepts.md) + [属性](../Topic/Attributes%20\(C%23%20and%20Visual%20Basic\).md) \ No newline at end of file diff --git a/docs/standard/attributes/index.md b/docs/standard/attributes/index.md new file mode 100644 index 00000000000..42632aeb063 --- /dev/null +++ b/docs/standard/attributes/index.md @@ -0,0 +1,44 @@ +--- +title: "属性を使用したメタデータの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "注釈を付ける (プログラミング要素に)" + - "属性 [.NET Framework], メタデータ" + - "共通言語ランタイム, 属性" + - "要素 [.NET Framework], 属性" + - "拡張 (メタデータを)" + - "キーワードに似た記述的な宣言" + - "メタデータ, 拡張" + - "ランタイム, 属性" +ms.assetid: 30386922-1e00-4602-9ebf-526b271a8b87 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 属性を使用したメタデータの拡張 +共通言語ランタイムでは、属性と呼ばれるキーワードに似た記述的な宣言を追加して、型、フィールド、メソッド、プロパティなどのプログラミング要素に注釈を付けることができます。 ランタイム用にコードをコンパイルすると、コードは Microsoft Intermediate Language \(MSIL\) に変換され、コンパイラによって生成されるメタデータと共に、ポータブル実行可能 \(PE\) ファイルに格納されます。 属性を使用すると、ランタイム リフレクション サービスで抽出できる記述的な情報をメタデータに追加できます。 属性は、 から派生する特殊なクラスのインスタンスを宣言するときに、コンパイラによって作成されます。 + + .NET Framework では、属性がさまざまな理由と目的で使用されます。 属性を使用して、データをシリアル化する方法を記述したり、セキュリティの適用に使用する特性を指定したりします。また、コードをデバッグしやすい状態に保つためにジャスト イン タイム \(JIT\) コンパイラによる最適化を制限する場合も、属性を使用します。 さらに、ファイル名やコードの作成者の記録、およびフォームの開発時にコントロールやメンバーを表示するかどうかの制御も、属性で指定します。 + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[属性の適用](../../../docs/standard/attributes/applying-attributes.md)|コードの要素に属性を適用する方法を説明します。| +|[カスタム属性の記述](../../../docs/standard/attributes/writing-custom-attributes.md)|カスタム属性クラスをデザインする方法を説明します。| +|[属性に格納されている情報の取得](../../../docs/standard/attributes/retrieving-information-stored-in-attributes.md)|実行コンテキストに読み込まれるコードのカスタム属性を取得する方法を説明します。| +|[メタデータと自己言及的なコンポーネント](../../../docs/standard/metadata-and-self-describing-components.md)|メタデータの概要と、.NET Framework のポータブル実行可能 \(PE\) ファイル内でメタデータがどのように実装されるかを説明します。| +|[方法 : リフレクションのみのコンテキストにアセンブリを読み込む](../../../docs/framework/reflection-and-codedom/how-to-load-assemblies-into-the-reflection-only-context.md)|リフレクションのみのコンテキストでカスタム属性情報を取得する方法を説明します。| + +## 参照 + \ No newline at end of file diff --git a/docs/standard/attributes/retrieving-information-stored-in-attributes.md b/docs/standard/attributes/retrieving-information-stored-in-attributes.md new file mode 100644 index 00000000000..72540b29e51 --- /dev/null +++ b/docs/standard/attributes/retrieving-information-stored-in-attributes.md @@ -0,0 +1,91 @@ +--- +title: "属性に格納されている情報の取得 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "属性 [.NET Framework], 取得" + - "複数の属性インスタンス" + - "取得 (属性を)" +ms.assetid: 37dfe4e3-7da0-48b6-a3d9-398981524e1c +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 属性に格納されている情報の取得 +カスタム属性を取得するプロセスは簡単です。 まず、取得する属性のインスタンスを宣言します。 次に、 メソッドを使用して、取得する属性の値に新しい属性を初期化します。 新しい属性が初期化されたら、そのプロパティを使用して値を取得できます。 + +> [!IMPORTANT] +> このトピックでは、実行コンテキストに読み込まれるコードの属性を取得する方法について説明します。 リフレクション専用のコンテキストに読み込むコードの属性を取得するには、「[方法 : リフレクションのみのコンテキストにアセンブリを読み込む](../../../docs/framework/reflection-and-codedom/how-to-load-assemblies-into-the-reflection-only-context.md)」に示されているように、 クラスを使用する必要があります。 + + ここでは、属性を取得する方法について説明します。 + +- [属性の 1 つのインスタンスの取得。](#cpconretrievingsingleinstanceofattribute) + +- [同じスコープに適用された属性の複数のインスタンスの取得。](#cpconretrievingmultipleinstancesofattributeappliedtosamescope) + +- [他のスコープに適用された属性の複数のインスタンスの取得。](#cpconretrievingmultipleinstancesofattributeappliedtodifferentscopes) + + +## 属性の 1 つのインスタンスの取得 + 前のセクションで説明した `DeveloperAttribute` が、クラス レベルで `MainApp` クラスに適用されている例を次に示します。 `GetAttribute` メソッドは、**GetCustomAttribute** を使用して、`DeveloperAttribute` に格納されている値をクラス レベルで取得し、コンソールに表示します。 + + [!code-cpp[Conceptual.Attributes.Usage#18](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source3.cpp#18)] + [!code-csharp[Conceptual.Attributes.Usage#18](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source3.cs#18)] + [!code-vb[Conceptual.Attributes.Usage#18](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source3.vb#18)] + + このプログラムは、実行されると次のテキストを表示します。 + +``` +The Name Attribute is: Joan Smith. +The Level Attribute is: 42. +The Reviewed Attribute is: True. +``` + + 属性が見つからない場合、**GetCustomAttribute** メソッドは `MyAttribute` を null 値に初期化します。 この例では、`MyAttribute` をチェックして、属性が見つからない場合はユーザーに通知します。 クラス スコープ内に `DeveloperAttribute` が見つからない場合は、コンソールに次のメッセージが表示されます。 + +``` +The attribute was not found. +``` + + この例では、属性の定義が現在の名前空間内にあることを想定しています。 属性の定義が現在の名前空間内にないときは、属性の定義がある名前空間をインポートする必要があります。 + + +## 同じスコープに適用された属性の複数のインスタンスの取得 + 前の例では、調べるクラスと検索する属性が に渡されています。 このコードが正常に機能するのは、属性の 1 つのインスタンスだけがクラス レベルで適用されているときです。 属性の複数のインスタンスが同じクラス レベルで適用されている場合は、**GetCustomAttribute** メソッドによってすべての情報を取得することはできません。 同じ属性の複数のインスタンスが同じスコープに適用されている場合は、 を使用して、属性のすべてのインスタンスを配列に格納できます。 たとえば、`DeveloperAttribute` の 2 つのインスタンスが同じクラスのクラス レベルで適用されている場合は、両方の属性で見つかる情報を表示するように `GetAttribute` メソッドを変更できます。 ただし、同じレベルで複数の属性を適用するには、 で **AllowMultiple** プロパティを **true** として属性を定義しておく必要があります。 + + **GetCustomAttributes** メソッドを使用して、指定したクラス内の `DeveloperAttribute` のすべてのインスタンスを参照する配列を作成する方法を次のコード例に示します。 すべての属性の値は、コンソールに表示されます。 + + [!code-cpp[Conceptual.Attributes.Usage#19](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source3.cpp#19)] + [!code-csharp[Conceptual.Attributes.Usage#19](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source3.cs#19)] + [!code-vb[Conceptual.Attributes.Usage#19](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source3.vb#19)] + + 属性が見つからない場合、このコードはユーザーに警告を発します。 それ以外の場合は、`DeveloperAttribute` の両方のインスタンスに含まれている情報が表示されます。 + + +## ほかのスコープに適用された属性の複数のインスタンスの取得 + メソッドと メソッドでは、クラス全体を検索してクラス内の属性のすべてのインスタンスを返すことはできません。 これらのメソッドが一度に検索するのは、指定された 1 つのメソッドまたは 1 つのメンバーだけです。 クラスのメンバーすべてに同じ属性が適用されていて、それらのメンバーに適用されたすべての属性の値を取得するには、すべてのメソッドやメンバーを個別に **GetCustomAttributes** と **GetCustomAttribute** に渡す必要があります。 + + パラメーターとしてクラスをとり、そのクラス レベルとそのクラスの各メソッドすべてについて `DeveloperAttribute` \(前に定義されています\) を検索するコード例を次に示します。 + + [!code-cpp[Conceptual.Attributes.Usage#20](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source3.cpp#20)] + [!code-csharp[Conceptual.Attributes.Usage#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source3.cs#20)] + [!code-vb[Conceptual.Attributes.Usage#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source3.vb#20)] + + メソッド レベルまたはクラス レベルで `DeveloperAttribute` のインスタンスが見つからない場合、`GetAttribute` メソッドは属性が見つからなかったことをユーザーに通知し、属性が含まれないメソッド名またはクラス名を表示します。 属性が見つかった場合は、`Name`、`Level`、`Reviewed` の各フィールドがコンソールに表示されます。 + + 渡されたクラス内の各メソッドとメンバーを取得するには、 クラスのメンバーを使用します。 この例では、最初に **Type** オブジェクトを問い合わせて、クラス レベルの属性情報を取得しています。 次に、 を使用して、すべてのメソッドのインスタンスを オブジェクトの配列に格納し、メソッド レベルの属性情報を取得します。 また、 メソッドを使用してプロパティ レベルの属性を調べることも、 メソッドを使用してコンストラクター レベルの属性を調べることもできます。 + +## 参照 + + + + [属性](../../../docs/standard/attributes/index.md) \ No newline at end of file diff --git a/docs/standard/attributes/writing-custom-attributes.md b/docs/standard/attributes/writing-custom-attributes.md new file mode 100644 index 00000000000..dcbb9154480 --- /dev/null +++ b/docs/standard/attributes/writing-custom-attributes.md @@ -0,0 +1,162 @@ +--- +title: "カスタム属性の記述 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "AllowMultiple プロパティ" + - "属性クラス, 宣言" + - "属性 [.NET Framework], カスタム" + - "AttributeTargets 列挙型" + - "AttributeUsageAttribute クラス, カスタム属性" + - "カスタム属性" + - "Inherited プロパティ" + - "複数の属性インスタンス" +ms.assetid: 97216f69-bde8-49fd-ac40-f18c500ef5dc +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# カスタム属性の記述 +独自のカスタム属性をデザインするために、多くの新しい概念を習得する必要はありません。 オブジェクト指向プログラミングに精通してクラスをデザインする方法を理解しているなら、必要な知識をほぼすべて持っています。 カスタム属性は、基本的には、 から直接的に派生したか間接的に派生した従来のクラスです。 従来のクラスと同じように、カスタム属性には、データを格納したり取得したりするメソッドが含まれます。 + + カスタム属性クラスを適切にデザインするための主要な手順は次のとおりです。 + +- [AttributeUsageAttribute を適用する](#cpconapplyingattributeusageattribute) + +- [属性クラスを宣言する](#cpcondeclaringattributeclass) + +- [コンストラクターを宣言する](#cpcondeclaringconstructors) + +- [プロパティを宣言する](#cpcondeclaringproperties) + + このセクションでは、これらの各手順について説明し、最後に[カスタム属性の例](#cpconcustomattributeexample)について説明します。 + + +## AttributeUsageAttribute を適用する + カスタム属性宣言は **AttributeUsageAttribute** で始まり、属性クラスの主な特性のいくつかを定義します。 たとえば、属性が他のクラスによって継承されるかどうかを指定したり、属性を適用する要素を指定したりすることができます。 次のコード フラグメントは、**AttributeUsageAttribute** の使い方を示しています。 + + [!code-cpp[Conceptual.Attributes.Usage#5](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#5)] + [!code-csharp[Conceptual.Attributes.Usage#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#5)] + [!code-vb[Conceptual.Attributes.Usage#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#5)] + + には、カスタム属性を作成するために重要な 3 つのメンバーがあります。それらは、[AttributeTargets](#cpconwritingcustomattributesanchor1)、[Inherited](#cpconwritingcustomattributesanchor2)、[AllowMultiple](#cpconwritingcustomattributesanchor3) です。 + + +### AttributeTargets メンバー + 前の例では、**AttributeTargets.All** を指定し、この属性をすべてのプログラム要素に適用できることが示されています。 代わりに、属性をクラスにのみ適用できることを示す **AttributeTargets.Class** を指定するか、属性をメソッドにのみ適用できることを示す **AttributeTargets.Method** を指定できます。 この方法で、カスタム属性を使って、説明としてすべてのプログラム要素をマークすることができます。 + + また、 の複数のインスタンスを渡すこともできます。 次のコード フラグメントは、すべてのクラスやメソッドに適用できるカスタム属性を指定します。 + + [!code-cpp[Conceptual.Attributes.Usage#6](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#6)] + [!code-csharp[Conceptual.Attributes.Usage#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#6)] + [!code-vb[Conceptual.Attributes.Usage#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#6)] + + +### Inherited プロパティ + プロパティは、属性が、その属性が適用されたクラスから派生したクラスによって継承可能かどうかを示します。 このプロパティは、**true** \(既定\) か **false** フラグのいずれかを使います。 たとえば、次の例で、`MyAttribute` は **true** の既定の 値が指定されていますが、`YourAttribute` は **false** の 値が指定されています。 + + [!code-cpp[Conceptual.Attributes.Usage#7](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#7)] + [!code-csharp[Conceptual.Attributes.Usage#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#7)] + [!code-vb[Conceptual.Attributes.Usage#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#7)] + + その後、2 つの属性が基底クラス `MyClass` に適用されます。 + + [!code-cpp[Conceptual.Attributes.Usage#9](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#9)] + [!code-csharp[Conceptual.Attributes.Usage#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#9)] + [!code-vb[Conceptual.Attributes.Usage#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#9)] + + 最後に、クラス `YourClass` が基底クラス `MyClass` から継承されます。 メソッド `MyMethod` は `MyAttribute` を表示しますが、`YourAttribute` を表示しません。 + + [!code-cpp[Conceptual.Attributes.Usage#10](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#10)] + [!code-csharp[Conceptual.Attributes.Usage#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#10)] + [!code-vb[Conceptual.Attributes.Usage#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#10)] + + +### AllowMultiple プロパティ + プロパティは、1 つの要素に、属性の複数のインスタンスが存在できるかどうかを示します。**true** に設定されている場合、複数のインスタンスが許可され、**false** \(既定\) に設定されている場合、1 つのインスタンスのみが許可されます。 + + 次の例では、`MyAttribute` は **false** の既定の 値が指定されていますが、`YourAttribute` は **true** の値が指定されています。 + + [!code-cpp[Conceptual.Attributes.Usage#11](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#11)] + [!code-csharp[Conceptual.Attributes.Usage#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#11)] + [!code-vb[Conceptual.Attributes.Usage#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#11)] + + これらの属性の複数のインスタンスが適用されると、`MyAttribute` ではコンパイラ エラーが発生します。 次のコード例は、`YourAttribute` の正しい使い方と `MyAttribute` の正しくない使い方を示しています。 + + [!code-cpp[Conceptual.Attributes.Usage#13](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#13)] + [!code-csharp[Conceptual.Attributes.Usage#13](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#13)] + [!code-vb[Conceptual.Attributes.Usage#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#13)] + + プロパティと プロパティの両方が **true** に設定されている場合、別のクラスから継承されるクラスは属性を継承し、同じ子クラスに適用される同じ属性の別のインスタンスを持つことができます。 が **false** に設定されている場合、親クラスのすべての属性の値は、子クラスの同じ属性の新しいインスタンスによって上書きされます。 + + +## 属性クラスを宣言する + を適用すると、属性を具体的に定義できるようになります。 属性クラスの宣言は、次のコードに示すように、従来のクラスの宣言に似ています。 + + [!code-cpp[Conceptual.Attributes.Usage#14](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#14)] + [!code-csharp[Conceptual.Attributes.Usage#14](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#14)] + [!code-vb[Conceptual.Attributes.Usage#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#14)] + + この属性定義は、次の点を示します。 + +- 属性クラスはパブリック クラスとして宣言する必要があります。 + +- 規則により、属性クラスの名前の終わりに **Attribute** という単語を付けます。 必須ではありませんが、読みやすさの向上のために、この規定をお勧めします。 属性を適用すると、Attribute という単語を含める必要はなくなります。 + +- すべての属性クラスは、**System.Attribute** から直接的に継承するか間接的に継承する必要があります。 + +- Microsoft Visual Basic では、すべてのカスタム属性クラスは **AttributeUsageAttribute** 属性が必要です。 + + +## コンストラクターを宣言する + 属性は、従来のクラスと同じ方法で、コンストラクターで初期化されます。 次のコード フラグメントは、一般的な属性のコンストラクターを示しています。 このパブリック コンストラクターは、パラメーターを使って、メンバー変数と同じ値を設定します。 + + [!code-cpp[Conceptual.Attributes.Usage#15](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#15)] + [!code-csharp[Conceptual.Attributes.Usage#15](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#15)] + [!code-vb[Conceptual.Attributes.Usage#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#15)] + + さまざまな値の組み合わせに対応するように、コンストラクターをオーバーロードできます。 カスタム属性クラスの[プロパティ](../Topic/Properties%20Overview.md)も定義する場合、属性を初期化する際に、名前付きパラメーターと位置指定パラメーターの組み合わせを使うことができます。 通常、必須パラメーターすべてを位置指定パラメーター、省略可能なパラメーターすべてを名前付きパラメーターとして定義します。 この場合、属性は必須パラメーターがないと初期化できません。 その他のすべてのパラメーターは省略できます。 Visual Basic では、属性クラスのコンストラクターで ParamArray 引数を使うべきではないことに注意してください。 + + 次のコード例は、省略可能なパラメーターと必須パラメーターを使って、前のコンストラクターを使う属性を適用できることを示しています。 ここでは、属性には、必須のブール値 1 つと省略可能な文字列のプロパティ 1 つが含まれていることを前提としています。 + + [!code-cpp[Conceptual.Attributes.Usage#17](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#17)] + [!code-csharp[Conceptual.Attributes.Usage#17](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#17)] + [!code-vb[Conceptual.Attributes.Usage#17](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#17)] + + +## プロパティを宣言する + 名前付きパラメーターを定義するか、属性によって格納される値を簡単に返すことができるようにする場合、[プロパティ](../Topic/Properties%20Overview.md)を宣言します。 属性プロパティは、返されるデータ型の記述を添えて、パブリック エンティティとして宣言する必要があります。 プロパティの値を保持する変数を定義して、その変数を **get** メソッドと **set** メソッドに関連付けます。 次のコード例は、属性に単純なプロパティを実装する方法を示しています。 + + [!code-cpp[Conceptual.Attributes.Usage#16](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#16)] + [!code-csharp[Conceptual.Attributes.Usage#16](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#16)] + [!code-vb[Conceptual.Attributes.Usage#16](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#16)] + + +## カスタム属性の例 + このセクションには、前の情報が含まれており、コードのセクションの作成者に関する情報を文書化する単純な属性をデザインする方法を示しています。 この例の属性は、プログラマの名前とレベル、またコードを確認したかどうかを格納します。 保存する実際の値を格納するため、3 つのプライベート変数を使います。 各変数は、値を取得して設定するパブリック プロパティで表されます。 最後に、コンストラクターを 2 つの必須パラメーターを使って定義します。 + + [!code-cpp[Conceptual.Attributes.Usage#4](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#4)] + [!code-csharp[Conceptual.Attributes.Usage#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#4)] + [!code-vb[Conceptual.Attributes.Usage#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#4)] + + 完全名 `DeveloperAttribute` や省略名 `Developer` を使って、次のいずれかの方法でこの属性を適用できます。 + + [!code-cpp[Conceptual.Attributes.Usage#12](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.attributes.usage/cpp/source2.cpp#12)] + [!code-csharp[Conceptual.Attributes.Usage#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.attributes.usage/cs/source2.cs#12)] + [!code-vb[Conceptual.Attributes.Usage#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.attributes.usage/vb/source2.vb#12)] + + 最初の例は、必須の名前付きパラメーターのみを使って適用された属性を示し、2 番目の例は、必須パラメーターと省略可能なパラメーターの両方を使って適用された属性を示しています。 + +## 参照 + + + [属性](../../../docs/standard/attributes/index.md) \ No newline at end of file diff --git a/docs/standard/automatic-memory-management.md b/docs/standard/automatic-memory-management.md new file mode 100644 index 00000000000..d63f59b378f --- /dev/null +++ b/docs/standard/automatic-memory-management.md @@ -0,0 +1,61 @@ +--- +title: "自動メモリ管理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "自動メモリ管理" + - "共通言語ランタイム, 自動メモリ管理" + - "ガベージ コレクション, 自動メモリ管理" + - "マネージ ヒープ" + - "メモリ, 割り当て" + - "メモリ, 自動メモリ管理" + - "メモリ, 解放" + - "ランタイム, 自動メモリ管理" +ms.assetid: d4850de5-fa63-4936-a250-5678d118acba +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 自動メモリ管理 +自動メモリ管理は、[マネージ実行](../../docs/standard/managed-execution-process.md)中に共通言語ランタイムが提供するサービスの 1 つです。 共通言語ランタイムのガベージ コレクターは、アプリケーションが使用するメモリの割り当ておよび解放を管理します。 したがって、開発者がマネージ アプリケーションを開発するときに、メモリ管理タスクを実行するためのコードを記述する必要はありません。 自動メモリ管理により、オブジェクトを解放し忘れたためにメモリ リークが発生する、既に解放されているオブジェクトのメモリにアクセスしようとするなどの一般的な問題を回避できます。 ここでは、ガベージ コレクターによるメモリの割り当て方法および解放方法について説明します。 + +## メモリの割り当て + 新しいプロセスが初期化されると、ランタイムは連続したアドレス空間領域をそのプロセスのために予約します。 この予約済みのアドレス空間をマネージ ヒープと呼びます。 マネージ ヒープは、ヒープ内で次のオブジェクトを割り当てるアドレスへのポインターを管理します。 初期状態では、このポインターはマネージ ヒープのベース アドレスに設定されます。 すべての[参照型](../../docs/standard/base-types/common-type-system.md)は、マネージ ヒープ上に割り当てられます。 アプリケーションが最初の参照型を作成すると、マネージ ヒープのベース アドレスの位置にその型のメモリが割り当てられます。 アプリケーションが次のオブジェクトを作成すると、ガベージ コレクターは、アドレス空間で最初のオブジェクトの直後のメモリをそのオブジェクトに割り当てます。 ガベージ コレクターは、使用できるアドレス空間がある限り、この方法で新しいオブジェクトにアドレス空間を割り当てていきます。 + + マネージ ヒープからのメモリ割り当ては、アンマネージ メモリ割り当てよりも高速に処理されます。 ランタイムはポインターに値を加算することによってオブジェクトにメモリを割り当てるため、この方法によるメモリ割り当ては、スタックからのメモリ割り当てとほとんど同じ速度で行われます。 また、連続してメモリを割り当てられた複数の新規オブジェクトは、マネージ ヒープ内でも連続して格納されるため、アプリケーションからそれらのオブジェクトに高速でアクセスできます。 + + +## メモリの解放 + ガベージ コレクターの最適化エンジンは、現在の割り当て状況に基づいて、ガベージ コレクションの実行に最適な時期を判断します。 ガベージ コレクターは、ガベージ コレクションを実行するときに、アプリケーションが使用しなくなったオブジェクトのメモリを解放します。 使用されなくなったオブジェクトを判断するために、アプリケーションのルートを調べます。 すべてのアプリケーションには、ルートのセットがあります。 各ルートは、マネージ ヒープ上のオブジェクトを参照しているか、または null に設定されています。 アプリケーションのルートには、グローバル オブジェクト ポインターと静的オブジェクト ポインター、スレッドのスタック上のローカル変数と参照オブジェクト パラメーター、CPU レジスタなどが含まれています。 ガベージ コレクターは、[ジャスト イン タイム \(JIT\) コンパイラ](../../docs/standard/managed-execution-process.md)とランタイムが管理している、アクティブなルートのリストにアクセスします。 このリストを使用してアプリケーションのルートを調べ、ルートから到達できるすべてのオブジェクトを含むグラフを作成します。 + + このグラフに含まれないオブジェクトは、アプリケーションのルートからは到達できません。 ガベージ コレクターは、そうした到達できないオブジェクトをガベージ \(ごみ\) であると判断し、それらのオブジェクトに割り当てられたメモリを解放します。 ガベージ コレクション中に、ガベージ コレクターはマネージ ヒープを調べ、到達できないオブジェクトが占有しているアドレス空間ブロックを検索します。 到達できないオブジェクトを検出すると、それらのオブジェクトに割り当てられていたアドレス空間ブロックを解放し、メモリ コピー機能を使用して、到達できるオブジェクトのメモリを圧縮します。 到達できるオブジェクトのメモリを圧縮した後で、ガベージ コレクターは、アプリケーションのルートがそれらのオブジェクトの新しい位置を指すようにポインターを修正します。 また、マネージ ヒープのポインターも、最後の到達できるオブジェクトの後を指すように修正します。 メモリが圧縮されるのは、ガベージ コレクション中に、到達できないオブジェクトが一定数以上検出された場合だけです。 マネージ ヒープ内のすべてのオブジェクトがごみではないと判断された場合は、メモリを圧縮する必要がありません。 + + パフォーマンスを向上させるために、ランタイムは、大きいオブジェクトのメモリは独立したヒープに割り当てます。 ガベージ コレクターは、これらの大きいオブジェクトのメモリを自動的に解放します。 ただし、メモリ内で大きいオブジェクトを移動するのを避けるため、このメモリは圧縮されません。 + +## ジェネレーションとパフォーマンス + ガベージ コレクターのパフォーマンスを最適化するために、マネージ ヒープは 0、1、および 2 の 3 つのジェネレーションに分割されます。 ランタイムのガベージ コレクション アルゴリズムは、これまでのガベージ コレクション手法の利用経験から、コンピューター ソフトウェア業界で有効だと認識されている次の原則に基づいています。 まず、マネージ ヒープの一部のメモリを圧縮する方が、マネージ ヒープ全体のメモリを圧縮するよりも高速です。 次に、オブジェクトが新しいほどその存続期間は短く、古いほど存続期間は長くなります。 最後に、新しいオブジェクトは相互に関連を持つ傾向にあり、アプリケーションによって同時に頻繁にアクセスされます。 + + ランタイムのガベージ コレクターは、新しいオブジェクトをジェネレーション 0 に格納します。 アプリケーションの有効期間の初期に作成され、ガベージ コレクションでごみではないと判断されたオブジェクトは昇格してジェネレーション 1 とジェネレーション 2 に格納されます。 オブジェクトの昇格プロセスについては後で説明します。 マネージ ヒープの一部を圧縮する方がヒープ全体を圧縮するよりも高速であるため、この手法では、ガベージ コレクターがコレクションを実行するたびにマネージ ヒープ全体のメモリを解放するのではなく、特定のジェネレーションのメモリだけを解放できるようにします。 + + 実際には、ガベージ コレクターはジェネレーション 0 がいっぱいになったときにガベージ コレクションを実行します。 ジェネレーション 0 がいっぱいになったときにアプリケーションが新しいオブジェクトを作成しようとすると、ガベージ コレクターは、そのオブジェクトに割り当てるためのアドレス空間がジェネレーション 0 には残っていないことを認識します。 ガベージ コレクターは、ジェネレーション 0 のアドレス空間を解放して新しいオブジェクトに割り当てるために、ガベージ コレクションを実行します。 まず、ガベージ コレクターは、マネージ ヒープ内の全オブジェクトではなく、ジェネレーション 0 のオブジェクトだけを調べます。 一般に新しいオブジェクトの存続期間は短く、ジェネレーション 0 のオブジェクトの多くはガベージ コレクションが実行された時点でアプリケーションによって使用されていないと推測されるため、この方法は最も効率的です。 また、多くの場合、ジェネレーション 0 のガベージ コレクションを行うだけで、アプリケーションが新しいオブジェクトの作成を続行するために十分なメモリを確保できます。 + + ガベージ コレクターは、ジェネレーション 0 のガベージ コレクションを実行した後で、このトピックの「[メモリの解放](#cpconautomaticmemorymanagementreleasingmemoryanchor1)」で既に説明したように、到達できるオブジェクトのメモリを圧縮します。 次に、ガベージ コレクターはこれらのオブジェクトを昇格させ、それらのオブジェクトが占めているマネージ ヒープ内の部分をジェネレーション 1 と見なします。 一般にガベージ コレクションでごみだと判断されなかったオブジェクトの存続期間は長いので、これらのオブジェクトを上位のジェネレーションに昇格させるのは有効です。 この結果、ガベージ コレクターがジェネレーション 0 のガベージ コレクションを実行するたびに、ジェネレーション 1 とジェネレーション 2 に昇格したオブジェクトを再び調べる必要がなくなります。 + + ジェネレーション 0 の最初のガベージ コレクションを実行し、到達できるオブジェクトをジェネレーション 1 に昇格させた後で、ガベージ コレクターはマネージ ヒープの残りの部分をジェネレーション 0 と見なします。 ガベージ コレクターは、ジェネレーション 0 がいっぱいになってガベージ コレクションを再び実行する必要が生じるまで、ジェネレーション 0 のメモリを新しいオブジェクトに割り当てます。 この時点で、ガベージ コレクターの最適化エンジンは、古いジェネレーションのオブジェクトを調べる必要があるかどうかを判断します。 たとえば、ジェネレーション 0 のガベージ コレクションを行うだけでは、アプリケーションが新しいオブジェクトを作成するために必要なメモリを確保できない場合、ガベージ コレクターはジェネレーション 1、0 の順にガベージ コレクションを実行します。 これでも必要なメモリを確保できない場合は、ジェネレーション 2、1、および 0 の順にガベージ コレクションを実行します。 ガベージ コレクターは、それぞれのガベージ コレクション後にジェネレーション 0 内にある到達できるオブジェクトを圧縮し、それらのオブジェクトをジェネレーション 1 に昇格させます。 ガベージ コレクションでごみだと判断されなかったジェネレーション 1 のオブジェクトは、ジェネレーション 2 に昇格します。 ガベージ コレクターがサポートするジェネレーションは 3 つしかないため、ガベージ コレクションでごみだと判断されなかったジェネレーション 2 のオブジェクトは、その後のガベージ コレクションで到達できないオブジェクトであると判断されるまで、ジェネレーション 2 に残ります。 + +## アンマネージ リソースのメモリの解放 + アプリケーションで作成されるオブジェクトの大部分については、ガベージ コレクターによって、必要なメモリ管理タスクを自動的に実行できます。 しかし、アンマネージ リソースでは、明示的なクリーンアップが必要です。 最も一般的な種類のアンマネージ リソースは、ファイル ハンドル、ウィンドウ ハンドル、ネットワーク接続などのオペレーティング システム リソースをラップしたオブジェクトです。 ガベージ コレクターは、アンマネージ リソースをカプセル化したマネージ オブジェクトの存続期間を追跡することはできますが、そのアンマネージ リソースのクリーンアップ方法については具体的な情報を持っていません。 アンマネージ リソースをカプセル化するオブジェクトを作成する場合は、そのアンマネージ リソースをクリーンアップするために必要なコードをパブリックな **Dispose** メソッドという形で提供することをお勧めします。 **Dispose** メソッドを提供すると、ユーザーがオブジェクトを使い終わったときに、そのオブジェクトのメモリを明示的に解放できます。 アンマネージ リソースをカプセル化するオブジェクトを使用する場合は、**Dispose** メソッドの存在を念頭に置き、必要に応じて呼び出すようにしてください。 アンマネージ リソースのクリーンアップの詳細と、**Dispose** を実装するためのデザイン パターンの例については、「[Garbage Collection](../../docs/standard/garbage-collection/index.md)」を参照してください。 + +## 参照 + + [Garbage Collection](../../docs/standard/garbage-collection/index.md) + [マネージ実行プロセス](../../docs/standard/managed-execution-process.md) \ No newline at end of file diff --git a/docs/standard/base-types/TOC.md b/docs/standard/base-types/TOC.md new file mode 100644 index 00000000000..4fd2353ff5d --- /dev/null +++ b/docs/standard/base-types/TOC.md @@ -0,0 +1,61 @@ +# [例 : HREFS のスキャン](regular-expression-example-scanning-for-hrefs.md) +# [文字のエスケープ](character-escapes-in-regular-expressions.md) +# [方法 : Web コントロールでの数値のユーザー入力を数値に変換する](how-to-convert-numeric-user-input-in-web-controls-to-numbers.md) +# [方法 : グレゴリオ暦以外の暦の日付を表示する](how-to-display-dates-in-non-gregorian-calendars.md) +# [正規表現の例](regular-expression-examples.md) +# [数値文字列の解析](parsing-numeric.md) +# [列挙型書式指定文字列](enumeration-format-strings.md) +# [文字列の操作](manipulating-strings.md) +# [置換](substitutions-in-regular-expressions.md) +# [その他の文字列の解析](parsing-other.md) +# [正規表現のオプション](regular-expression-options.md) +# [.NET Framework における文字エンコーディング](character-encoding.md) +# [標準の日時書式指定文字列](standard-date-and-time-format-strings.md) +# [.NET Framework における型変換](type-conversion.md) +# [文字列を使用するためのベスト プラクティス](best-practices-strings.md) +# [方法 : 日付と時刻の値をラウンドトリップさせる](how-to-round-trip-date-and-time-values.md) +# [方法 : 文字列から無効な文字を取り除く](how-to-strip-invalid-characters-from-a-string.md) +# [方法: 日付および時刻の値のミリ秒部分を表示する](how-to-display-milliseconds-in-date-and-time-values.md) +# [方法 : URL からプロトコルとポート番号を抽出する](how-to-extract-a-protocol-and-port-number-from-a-url.md) +# [文字のトリムと削除](trimming.md) +# [カスタム時間間隔書式指定文字列](custom-timespan-format-strings.md) +# [方法 : カスタム数値書式プロバイダーを定義して使用する](how-to-define-and-use-custom-numeric-format-providers.md) +# [標準の時間間隔書式指定文字列](standard-timespan-format-strings.md) +# [カスタム日時書式指定文字列](custom-date-and-time-format-strings.md) +# [文字列の比較](comparing.md) +# [正規表現言語 - クイック リファレンス](regular-expression-language-quick-reference.md) +# [複合書式指定](composite-formatting.md) +# [文字列の埋め込み](padding.md) +# [基本的な文字列操作](basic-string-operations.md) +# [その他の構成体](miscellaneous-constructs-in-regular-expressions.md) +# [スレッド セーフ](thread-safety-in-regular-expressions.md) +# [方法 : 文字列が有効な電子メール形式であるかどうかを検証する](how-to-verify-that-strings-are-in-valid-email-format.md) +# [カスタム数値書式指定文字列](custom-numeric-format-strings.md) +# [大文字と小文字の変更](changing-case.md) +# [正規表現に関するベスト プラクティス](best-practices.md) +# [例 : 日付形式の変更](regular-expression-example-changing-date-formats.md) +# [文字列の解析](parsing-strings.md) +# [StringBuilder クラスの使用](stringbuilder.md) +# [標準の数値書式指定文字列](standard-numeric-format-strings.md) +# [前方参照構成体](backreference-constructs-in-regular-expressions.md) +# [共通型システム](common-type-system.md) +# [.NET Framework の正規表現](regular-expressions.md) +# [正規表現のオブジェクト モデル](the-regular-expression-object-model.md) +# [日付と時刻文字列の解析](parsing-datetime.md) +# [方法 : ローカライズされた日付/時刻情報を Web ユーザーに表示する](how-to-display-localized-date-and-time-information-to-web-users.md) +# [書式設定操作の実行](performing-formatting-operations.md) +# [限定子](quantifiers-in-regular-expressions.md) +# [バックトラッキング](backtracking-in-regular-expressions.md) +# [アンカー](anchors-in-regular-expressions.md) +# [方法 : 特定の日付から曜日を抽出する](how-to-extract-the-day-of-the-week-from-a-specific-date.md) +# [コンパイルと再利用](compilation-and-reuse-in-regular-expressions.md) +# [方法: 基本的な文字列操作を実行する](basic-manipulations.md) +# [グループ化構成体](grouping-constructs-in-regular-expressions.md) +# [文字クラス](character-classes-in-regular-expressions.md) +# [正規表現の動作の詳細](details-of-regular-expression-behavior.md) +# [型変換の表](conversion-tables.md) +# [型の書式設定](formatting-types.md) +# [方法: 数値に先行するゼロを埋め込む](how-to-pad-a-number-with-leading-zeros.md) +# [代替構成体](alternation-constructs-in-regular-expressions.md) +# [新しい文字列の作成](creating-new.md) +# [基本型](index.md) diff --git a/docs/standard/base-types/alternation-constructs-in-regular-expressions.md b/docs/standard/base-types/alternation-constructs-in-regular-expressions.md new file mode 100644 index 00000000000..a0f05e7159d --- /dev/null +++ b/docs/standard/base-types/alternation-constructs-in-regular-expressions.md @@ -0,0 +1,137 @@ +--- +title: "正規表現での代替構成体 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, 代替構成体" + - "代替構成体" + - "代替の一致パターン" + - "構成体, 代替" + - "OR 一致" + - "オプションの一致パターン" + - "正規表現, 代替構成体" +ms.assetid: 071e22e9-fbb0-4ecf-add1-8d2424f9f2d1 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 正規表現での代替構成体 + 代替構成体は、択一条件または条件一致を有効にするように正規表現を変更します。 .NET Framework では、次の 3 つの代替構成体がサポートされています。 + +- [| を使用したパターン マッチ](#Either_Or) + +- [\(?\(expression\)yes|no\) を使用した条件一致](#Conditional_Expr) + +- [有効なキャプチャ グループに基づく条件一致](#Conditional_Group) + + +## | を使用したパターン マッチ + 縦棒 \(`|`\) 文字を使って、`|` 文字で各パターンを区切った一連のパターンのいずれかと照合できます。 + + 肯定的文字クラスと同じように、`|` 文字を使うと、複数の文字のいずれか 1 文字と照合できます。 次の例は、肯定的文字クラスと `|` 文字との択一パターン マッチを使って、文字列から単語 "gray"や "grey" を検索します。 この場合、`|` 文字を使うと、より詳細な正規表現が生成されます。 + + [!code-csharp[RegularExpressions.Language.Alternation#1](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.alternation/cs/alternation1.cs#1)] + [!code-vb[RegularExpressions.Language.Alternation#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.alternation/vb/alternation1.vb#1)] + + `|` 文字を使う正規表現 `\bgr(a|e)y\b` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`gr`|文字 "gr" と一致します。| +|`(a|e)`|"a" または "e" と一致します。| +|`y\b`|ワード境界にある "y" と一致します。| + + また、`|` 文字を使って、複数の文字や部分式との択一照合を実行できます。これは、文字リテラルと正規表現言語要素を自由に組み合わせて使うことができます。 \(文字クラスにこの機能はありません\)。 次の例では、`|` 文字を使って、米国の社会保障番号 \(SSN、*ddd*\-*dd*\-*dddd* という形式の 9 桁の数字\)、または米国の雇用者番号 \(EIN、*dd*\-*ddddddd* という形式の 9 桁の数字\) のいずれかを抽出します。 + + [!code-csharp[RegularExpressions.Language.Alternation#2](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.alternation/cs/alternation2.cs#2)] + [!code-vb[RegularExpressions.Language.Alternation#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.alternation/vb/alternation2.vb#2)] + + この正規表現 `\b(\d{2}-\d{7}|\d{3}-\d{2}-\d{4})\b` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`(\d{2}-\d{7}|\d{3}-\d{2}-\d{4})`|「2 桁と 7 桁の 10 進数がハイフンでつながれた文字列」または「3 桁、2 桁、4 桁の 10 進数がそれぞれハイフンでつながれた文字列」のいずれかと一致します。| +|`\d`|ワード境界で照合を終了します。| + + [ページのトップへ](#top) + + +## 式を使用した条件一致 + この言語要素では、最初のパターンに一致するかどうかに応じて、2 つのパターンのいずれかの照合を実行します。 構文は次のとおりです。 + + `(?(` *式* `)` *可* `|` *no* `)` + + ここで、*expression* は照合する最初のパターン、*yes* は *expression* が一致した場合に照合するパターン、*no* は *expression* が一致しなかった場合に照合するパターン \(省略可能\) です。*expression* は正規表現エンジンによってゼロ幅アサーションとして処理されるので、*expression* が評価された後、正規表現エンジンによる入力ストリーム内の評価位置は前に進みません。 そのため、この構成体は次の構成体と同じです。 + + `(?(?=` *式* `)` *可* `|` *no* `)` + + ここで、`(?=`*expression*`)` はゼロ幅アサーションの構成体として解釈されます \(詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください\)。 正規表現エンジンによって *expression* はアンカー \(ゼロ幅アサーション\) として解釈されるので、*expression* は、ゼロ幅アサーション \(詳しくは「[アンカー](../../../docs/standard/base-types/anchors-in-regular-expressions.md)」を参照\) か、*yes* にも含まれている部分式のいずれかである必要があります。 それ以外の場合、*yes* パターンには一致しません。 + +> [!NOTE] +> *expression* が名前付きキャプチャ グループや番号付きキャプチャ グループである場合、代替構成体はキャプチャ テストとして解釈されます。詳しくは、次のセクション「[有効なキャプチャ グループに基づく条件一致](#Conditional_Group)」をご覧ください。 つまり、正規表現エンジンは、キャプチャした部分文字列を照合しようとはせず、代わりにグループが存在するかどうかをテストします。 + + 次の例は、前の「[| を使用したパターン マッチ](#Either_Or)」セクションで説明した例を少し変更したものです。 条件一致を使用して、ワード境界の後の最初の 3 文字が「2 桁の数字の後にハイフン」であるかどうかを判定します。 一致した場合は、米国の雇用者番号 \(EIN\) との照合を試みます。 一致しない場合は、米国の社会保険番号 \(SSN\) との照合を試みます。 + + [!code-csharp[RegularExpressions.Language.Alternation#3](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.alternation/cs/alternation3.cs#3)] + [!code-vb[RegularExpressions.Language.Alternation#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.alternation/vb/alternation3.vb#3)] + + この正規表現パターン `\b(?(\d{2}-)\d{2}-\d{7}|\d{3}-\d{2}-\d{4})\b` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`(?(\d{2}-)`|次の 3 文字が「2 桁の数字の後にハイフン」で構成されているかどうかを判定します。| +|`\d{2}-\d{7}`|前のパターンに一致する場合は、「2 桁の数字の後にハイフン、その後に 7 桁の数字」を照合します。| +|`\d{3}-\d{2}-\d{4}`|前のパターンに一致しない場合は、「3 桁の 10 進数、ハイフン、2 桁の 10 進数、もう 1 つのハイフン、および 4 桁の 10 進数」を照合します。| +|`\b`|ワード境界に一致します。| + + [ページのトップへ](#top) + + +## 有効なキャプチャ グループに基づく条件一致 + この言語要素では、指定されたキャプチャ グループに一致するかどうかに応じて、2 つのパターンのいずれかを照合します。 構文は次のとおりです。 + + `(?(` *name* `)` *可* `|` *no* `)` + + または + + `(?(` *number* `)` *可* `|` *no* `)` + + ここで、*name* はキャプチャ グループの名前、*number* はキャプチャ グループの番号です。*yes* は、*name* または *number* が一致する場合に照合する式です。*no* き、一致しない場合に照合する式 \(省略可能\) です。 + + *name* が正規表現パターンで使用されているキャプチャ グループの名前に一致しない場合、その代替構成体は式のテスト \(前のセクションで説明したもの\) として解釈されます。 通常、これは *expression* が `false` に評価されることを意味します。*number* が正規表現パターンで使用されている番号付きキャプチャ グループに対応しない場合は、正規表現エンジンが をスローします。 + + 次の例は、前の「[| を使用したパターン マッチ](#Either_Or)」セクションで説明した例を少し変更したものです。 「2 桁の数字の後にハイフン」で構成される `n2` という名前付きキャプチャ グループを使用しています。 代替構成体により、このキャプチャ グループが入力文字列に一致したかどうかテストされます。 一致した場合は、場合に、米国の 9 桁の雇用者番号 \(EIN\) との照合を試みます。 一致しなかった場合は、米国の 9 桁の社会保険番号 \(SSN\) との照合を試みます。 + + [!code-csharp[RegularExpressions.Language.Alternation#4](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.alternation/cs/alternation4.cs#4)] + [!code-vb[RegularExpressions.Language.Alternation#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.alternation/vb/alternation4.vb#4)] + + この正規表現パターン `\b(?\d{2}-)*(?(n2)\d{7}|\d{3}-\d{2}-\d{4})\b` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`(?\d{2}-)*`|「2 桁の数字の後にハイフン」の 0 個または 1 個の出現と照合します。 このキャプチャ グループに `n2` という名前を付けます。| +|`(?(n2)`|`n2` への一致が入力文字列内に見つかるかどうかテストします。| +|`)\d{7}`|`n2` が一致した場合は、7 桁の 10 進数を照合します。| +|`|\d{3}-\d{2}-\d{4}`|`n2` が一致しなかった場合は、「3 桁の 10 進数、ハイフン、2 桁の 10 進数、もう 1 つのハイフン、および 4 桁の 10 進数」を照合します。| +|`\b`|ワード境界に一致します。| + + この例を少し変更して、名前付きグループではなく番号付きグループを使用する例を次に示します。 正規表現パターンは `\b(\d{2}-)*(?(1)\d{7}|\d{3}-\d{2}-\d{4})\b` です。 + + [!code-csharp[RegularExpressions.Language.Alternation#5](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.alternation/cs/alternation5.cs#5)] + [!code-vb[RegularExpressions.Language.Alternation#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.alternation/vb/alternation5.vb#5)] + +## 参照 + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) \ No newline at end of file diff --git a/docs/standard/base-types/anchors-in-regular-expressions.md b/docs/standard/base-types/anchors-in-regular-expressions.md new file mode 100644 index 00000000000..e5a94d326fb --- /dev/null +++ b/docs/standard/base-types/anchors-in-regular-expressions.md @@ -0,0 +1,180 @@ +--- +title: "正規表現のアンカー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, アンカー" + - ".NET Framework 正規表現, アトミック ゼロ幅アサーション" + - "アンカー, 正規表現で" + - "アトミック ゼロ幅アサーション" + - "メタ文字, アンカー" + - "メタ文字, アトミック ゼロ幅アサーション" + - "正規表現, アンカー" + - "正規表現, アトミック ゼロ幅アサーション" +ms.assetid: 336391f6-2614-499b-8b1b-07a6837108a7 +caps.latest.revision: 20 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 20 +--- +# 正規表現のアンカー + アンカー \(アトミック ゼロ幅アサーション\) は、文字列が一致する位置を指定します。 検索式でアンカーを使用した場合、正規表現エンジンは、後方の文字列を読み込んだり、文字に一致させたりすることはしません。指定された位置での一致のみが検索されます。 たとえば、`^` は、行または文字列の先頭に一致する必要があることを指定します。 したがって、正規表現 `^http:` は、"http:" が行の先頭にある場合にのみ一致します。 次の表は、.NET Framework の正規表現でサポートされているアンカーの一覧です。 + +|アンカー|説明| +|----------|--------| +|`^`|文字列または行の先頭に一致します。 詳細については、「[文字列または行の先頭](#Start)」を参照してください。| +|`$`|文字列または行の末尾に一致するか、文字列または行の末尾にある `\n` の前に一致します。 詳細については、「[文字列または行の末尾](#End)」を参照してください。| +|`\A`|文字列の先頭にのみ一致します \(複数行はサポートされません\)。 詳細については、「[文字列の先頭のみ](#StartOnly)」を参照してください。| +|`\Z`|文字列の末尾で一致するか、文字列の末尾にある `\n` の前に一致します。 詳細については、「[文字列の末尾または末尾の改行の前](#EndOrNOnly)」を参照してください。| +|`\z`|文字列の末尾にのみ一致します。 詳細については、「[文字列の末尾のみ](#EndOnly)」を参照してください。| +|`\G`|前回の一致が終了した位置に一致します。 詳細については、「[連続一致](#Contiguous)」を参照してください。| +|`\b`|ワード境界に一致します。 詳細については、「[ワード境界](#WordBoundary)」を参照してください。| +|`\B`|ワード境界以外に一致します。 詳細については、「[ワード境界以外](#NonwordBoundary)」を参照してください。| + + +## 文字列または行の先頭: ^ + `^` アンカーは、その後に続くパターンが、文字列の最初の文字位置から始まる必要があることを指定します。`^` オプションを指定して を使用した場合は \(「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」を参照\)、各行の先頭に一致します。 + + 次の例では、正規表現で `^` アンカーを使用して、プロ野球チームが存続した年数に関する情報を抽出します。 この例では、 メソッドの 2 つのオーバーロードを呼び出しています。 + +- オーバーロードの呼び出しでは、入力文字列内で正規表現パターンに一致する最初の部分文字列が検索されます。 + +- パラメーターを `options` に設定した オーバーロードの呼び出しでは、5 つのすべての部分文字列が検索されます。 + + [!code-csharp[Conceptual.RegEx.Language.Assertions#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.assertions/cs/startofstring1.cs#1)] + [!code-vb[Conceptual.RegEx.Language.Assertions#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.assertions/vb/startofstring1.vb#1)] + + 正規表現パターン `^((\w+(\s?)){2,}),\s(\w+\s\w+),(\s\d{4}(-(\d{4}|present))?,?)+` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`^`|入力文字列の先頭から \(または、 オプションを指定してメソッドが呼び出された場合は行の先頭から\) 照合を開始します。| +|`((\w+(\s?)){2,}`|1 個以上の単語文字の後に 0 個または 1 個の空白が続くパターンが、2 回繰り返される部分に一致します。 これが最初のキャプチャ グループです。 この表現は、2 番目と 3 番目のキャプチャ グループも定義します。2 番目のグループはキャプチャされた単語で構成され、3 番目のグループはキャプチャされた空白で構成されます。| +|`,\s`|コンマおよびそれに続く空白文字に一致します。| +|`(\w+\s\w+)`|1 個以上の単語文字の後に 1 個の空白が続き、さらに 1 個以上の単語文字が続くパターンに一致します。 これが 4 番目のキャプチャ グループです。| +|`,`|コンマに一致します。| +|`\s\d{4}`|1 個の空白の後に 4 個の 10 進数字が続くパターンに一致します。| +|\(\-`(\d{4}|present))?`|1 個のハイフンの後に 4 個の 10 進数字または文字列 "present" が続くパターンの、0 回または 1 回の繰り返しに一致します。 これが 6 番目のキャプチャ グループです。 7 番目のキャプチャ グループも含まれています。| +|`,?`|コンマの 0 回または 1 回の繰り返しに一致します。| +|`(\s\d{4}(-(\d{4}|present))?,?)+`|1 個のスペース、4 個の 10 進数字、1 個のハイフンの後に 4 個の 10 進数字または文字列 "present" が続くパターンの 0 回または 1 回の繰り返し、0 個または 1 個のコンマが並んだパターンの、1 回以上の繰り返しに一致します。 これが 5 番目のキャプチャ グループです。| + + [ページのトップへ](#top) + + +## 文字列または行の末尾: $ + `$` アンカーは、その前にあるパターンが、入力文字列の末尾、または入力文字列の末尾にある `\n` の前で一致する必要があることを指定します。 + + `$` オプションを指定して を使用した場合は、行の末尾にも一致します。`$` は、`\n` に一致しますが、`\r\n` \(復帰文字と改行文字の組み合わせ、つまり CR\/LF\) には一致しないことに注意してください。 CR\/LF 文字の組み合わせに一致させるには、正規表現パターンに `\r?$` を含めます。 + + 次の例では、「[文字列または行の先頭](#Start)」の例で使用した正規表現パターンに `$` アンカーを追加しています。 5 つのテキスト行を含む元の入力文字列に対して使用した場合、 メソッドは一致を見つけることができません。これは、最初の行の末尾が `$` パターンに一致しないためです。 元の入力文字列を文字列配列に分割すると、 メソッドは 5 つの各行の一致に成功します。 パラメーターを `options` に設定して メソッドを呼び出すと、一致は見つかりません。これは、正規表現パターンで復帰要素 \(\\u\+000D\) が考慮されないためです。 ただし、`$` を `\r?$` に置き換え、`options` パラメーターを に設定して メソッドを呼び指すと、正規表現パターンが変更され、再び 5 つの一致が検索されるようになります。 + + [!code-csharp[Conceptual.RegEx.Language.Assertions#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.assertions/cs/endofstring1.cs#2)] + [!code-vb[Conceptual.RegEx.Language.Assertions#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.assertions/vb/endofstring1.vb#2)] + + [ページのトップへ](#top) + + +## 文字列の先頭のみ: \\A + `\A` アンカーは、入力文字列の先頭に一致する必要があることを指定します。 これは `^` アンカーと同じですが、`\A` では オプションが無視される点が異なります。 したがって、複数行の入力文字列でも最初の行の先頭にのみ一致することができます。 + + 次の例は、`^` アンカーおよび `$` アンカーの例と似ています。 この例では、正規表現で `\A` アンカーを使用して、プロ野球チームが存続した年数に関する情報を抽出します。 入力文字列には 5 つの行が含まれます。 メソッドを呼び出すと、入力文字列内で正規表現パターンに一致する最初の部分文字列のみが検索されます。 この例からわかるように、 オプションの効果はありません。 + + [!code-csharp[Conceptual.RegEx.Language.Assertions#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.assertions/cs/startofstring2.cs#3)] + [!code-vb[Conceptual.RegEx.Language.Assertions#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.assertions/vb/startofstring2.vb#3)] + + [ページのトップへ](#top) + + +## 文字列の末尾または末尾の改行の前: \\Z + `\Z` アンカーは、入力文字列の末尾、または入力文字列の末尾にある `\n` の前に一致する必要があることを指定します。 これは `$` アンカーと同じですが、`\Z` では オプションが無視される点が異なります。 したがって、複数行文字列では、最後の行の末尾か、最後の行の `\n` の前にのみ一致することができます。 + + `\Z` は `\n` に一致しますが、`\r\n` \(CR\/LF 文字の組み合わせ\) には一致しないことに注意してください。 CR\/LF と一致させるには、`\r?\Z` を正規表現パターンに含めます。 + + 次の例では、正規表現で `\Z` アンカーを使用して、プロ野球チームが存続した年数に関する情報を抽出します。この正規表現は、「[文字列または行の先頭](#Start)」で取り上げた例に似ています。 正規表現 `^((\w+(\s?)){2,}),\s(\w+\s\w+),(\s\d{4}(-(\d{4}|present))?,?)+\r?\Z` 内の部分式 `\r?\Z` は、文字列の末尾に一致するほか、`\n` または `\r\n` で終了する文字列にも一致します。 結果として、配列内の各要素が正規表現パターンに一致します。 + + [!code-csharp[Conceptual.RegEx.Language.Assertions#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.assertions/cs/endofstring2.cs#4)] + [!code-vb[Conceptual.RegEx.Language.Assertions#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.assertions/vb/endofstring2.vb#4)] + + [ページのトップへ](#top) + + +## 文字列の末尾のみ: \\z + `\z` アンカーは、入力文字列の末尾に一致する必要があることを指定します。`$` 言語要素と同様に、`\z` では オプションが無視されます。`\Z` 言語要素とは異なり、`\z` は文字列末尾にある `\n` 文字には一致しません。 したがって、入力文字列の最後の行にのみ一致することができます。 + + 次の例では、正規表現で `\z` アンカーを使用して、プロ野球チームが存続した年数に関する情報を抽出します。この正規表現は、アンカーを除けば前のセクションで取り上げた例と同じです。 この例は、文字列配列の 5 つの各要素と正規表現パターン `^((\w+(\s?)){2,}),\s(\w+\s\w+),(\s\d{4}(-(\d{4}|present))?,?)+\r?\z` の一致を試みます。 これらのうち、2 つの文字列は復帰文字と改行文字で終わり、別の 1 つの文字列は改行文字で終わっています。残りの 2 つの文字列の末尾には、復帰文字も改行文字もありません。 出力結果が示すように、復帰文字も改行文字もない文字列だけがパターンに一致します。 + + [!code-csharp[Conceptual.RegEx.Language.Assertions#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.assertions/cs/endofstring3.cs#5)] + [!code-vb[Conceptual.RegEx.Language.Assertions#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.assertions/vb/endofstring3.vb#5)] + + [ページのトップへ](#top) + + +## 連続一致: \\G + `\G` アンカーは、前回の一致が終了した位置に一致する必要があることを指定します。 このアンカーを メソッドまたは メソッドと共に使用すると、すべての一致が連続することになります。 + + 次の例では、正規表現を使用して、コンマ区切りの文字列からげっ歯類の名称を抽出します。 + + [!code-csharp[Conceptual.RegEx.Language.Assertions#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.assertions/cs/contiguous1.cs#6)] + [!code-vb[Conceptual.RegEx.Language.Assertions#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.assertions/vb/contiguous1.vb#6)] + + この正規表現 `\G(\w+\s?\w*),?` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\G`|最後の一致の終了位置から開始します。| +|`\w+`|1 つ以上の単語文字に一致します。| +|`\s?`|0 個または 1 個の空白に一致します。| +|`\w*`|0 個以上の単語に使用される文字に一致します。| +|`(\w+\s?\w*)`|1 個以上の単語文字の後に 0 個または 1 個の空白が続き、さらに 0 個以上の単語文字が続くパターンに一致します。 これが最初のキャプチャ グループです。| +|`,?`|リテラルのコンマ文字の 0 回または 1 回の繰り返しに一致します。| + + [ページのトップへ](#top) + + +## ワード境界: \\b + `\b` アンカーは、単語文字 \(`\w` 言語要素\) と単語以外の文字 \(`\W` 言語要素\) の境界に一致する必要があることを示します。 単語文字は英数字とアンダースコアで構成され、単語以外の文字は、英数字でもアンダースコアでもない任意の文字で構成されます \(詳細については、「[文字クラス](../../../docs/standard/base-types/character-classes-in-regular-expressions.md)」を参照してください\)。 文字列の先頭または末尾にあるワード境界にも一致する可能性があります。 + + `\b` アンカーは、部分式を単語の先頭または末尾ではなく単語全体に一致させる目的で頻繁に使用されます。 次の例の正規表現 `\bare\w*\b` は、この使用方法を示しています。 これは、部分文字列 "are" で始まる任意の単語に一致します。 この例の出力から、`\b` は入力文字列の先頭と末尾の両方に一致することもわかります。 + + [!code-csharp[Conceptual.RegEx.Language.Assertions#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.assertions/cs/word1.cs#7)] + [!code-vb[Conceptual.RegEx.Language.Assertions#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.assertions/vb/word1.vb#7)] + + この正規表現パターンの解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`are`|部分文字列 "are" に一致します。| +|`\w*`|0 個以上の単語に使用される文字に一致します。| +|`\b`|ワード境界で照合を終了します。| + + [ページのトップへ](#top) + + +## ワード境界以外: \\B + `\B` アンカーは、ワード境界には一致しないことを指定します。 これは、`\b` アンカーと逆の働きをします。 + + 次の例では、`\B` アンカーを使用して、単語内で部分文字列 "qu" が出現する位置を見つけます。 正規表現パターン `\Bqu\w+` は、"qu" で始まり \(単語の先頭ではない\)、単語の終わりまでの部分文字列に一致します。 + + [!code-csharp[Conceptual.RegEx.Language.Assertions#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.assertions/cs/nonword1.cs#8)] + [!code-vb[Conceptual.RegEx.Language.Assertions#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.assertions/vb/nonword1.vb#8)] + + この正規表現パターンの解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\B`|ワード境界では照合を開始しません。| +|`qu`|部分文字列 "qu" と一致します。| +|`\w+`|1 つ以上の単語文字に一致します。| + +## 参照 + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) + [正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md) \ No newline at end of file diff --git a/docs/standard/base-types/backreference-constructs-in-regular-expressions.md b/docs/standard/base-types/backreference-constructs-in-regular-expressions.md new file mode 100644 index 00000000000..60a0b5fa590 --- /dev/null +++ b/docs/standard/base-types/backreference-constructs-in-regular-expressions.md @@ -0,0 +1,126 @@ +--- +title: "正規表現での前方参照構成体 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, 前方参照構成体" + - "逆参照" + - "構成体, 前方参照" + - "正規表現, 前方参照構成体" +ms.assetid: 567a4b8d-0e79-49dc-8df9-f4b1aa376a2a +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 正規表現での前方参照構成体 +前方参照を使用すると、文字列内で繰り返し出現する文字や部分文字列を簡単に特定できます。 たとえば、入力文字列に任意の部分文字列が複数回出現する場合は、最初の出現箇所をキャプチャ グループで一致させた後に、前方参照を使用してそれ以降の出現箇所を一致させることができます。 + +> [!NOTE] +> 置換文字列の名前付きのキャプチャ グループと番号付きのキャプチャ グループの参照には、別の構文が使用されます。 詳細については、「[置換](../../../docs/standard/base-types/substitutions-in-regular-expressions.md)」を参照してください。 + + .NET Framework では、番号付きのキャプチャ グループと名前付きのキャプチャ グループを参照する個別の言語要素が定義されています。 キャプチャ グループの詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + +## 番号付き前方参照 + 番号付き前方参照では、次の構文を使用します。 + + `\` *number* + + *number* は、正規表現のキャプチャ グループの位置です。 たとえば、`\4` を使用すると、4 番目のキャプチャ グループの内容と一致します。 *number* が正規表現パターンで定義されていない場合は、解析エラーが発生し、正規表現エンジンは をスローします。 たとえば、正規表現 `\b(\w+)\s\1` は、`(\w+)` が式の 1 番目の唯一のキャプチャ グループであるので有効です。 これに対して、`\b(\w+)\s\2` は、`\2` の番号が付けられたキャプチャ グループが存在しないので無効であり、引数の例外がスローされます。 + + 同じ表記を使用する `\`*number* の前方参照と 8 のエスケープ コードがあいまいです \(`\16`など\) にします。 このあいまいさは次のように解決されます。 + +- `\1` から `\9` までの式は常に前方参照と解釈され、8 進コードとは解釈されません。 + +- 複数桁の式の最初の桁が 8 または 9 の場合 \(`\80` や `\91` など\)、その式はリテラルと解釈されます。 + +- `\10` 以降の式は、その番号に対応する前方参照がある場合には、前方参照と見なされます。それ以外の場合は、8 進コードと解釈されます。 + +- 未定義のグループ番号への前方参照が正規表現にある場合は、解析エラーが発生し、正規表現エンジンから がスローされます。 + + あいまいさが問題になる場合は、明確、8 進文字コードと混同できない `\k<`*name*`>` 表記法を使用できます。 同様に、`\xdd` などの 16 進コードにもあいまいさがないため、前方参照と混同されることはありません。 + + 次の例では、文字列内で、単語に使用される文字のうち重複する文字を検索します。 この例では、次の要素で構成される正規表現 `(\w)\1` が定義されています。 + +|要素|説明| +|--------|--------| +|`(\w)`|単語に使用される文字と一致し、その文字を 1 番目のキャプチャ グループに代入します。| +|`\1`|次に出現した、1 番目のキャプチャ グループの値と同じ文字と一致します。| + + [!code-csharp[RegularExpressions.Language.Backreferences#1](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.backreferences/cs/backreference1.cs#1)] + [!code-vb[RegularExpressions.Language.Backreferences#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.backreferences/vb/backreference1.vb#1)] + +## 名前付き前方参照 + 名前付き前方参照は、次の構文を使用して定義します。 + + `\k<` *name* `>` + + または + + `\k'` *name* `'` + + *name* が正規表現パターンで定義されているキャプチャ グループの名前です。 *name* が正規表現パターンで定義されていない場合は、解析エラーが発生し、正規表現エンジンは をスローします。 + + 次の例では、文字列内で、単語に使用される文字のうち重複する文字を検索します。 この例では、次の要素で構成される正規表現 `(?\w)\k` が定義されています。 + +|要素|説明| +|--------|--------| +|`(?\w)`|単語に使用される文字と一致し、その文字を `char` という名前のキャプチャ グループに代入します。| +|`\k`|次に出現した、`char` キャプチャ グループの値と同じ文字と一致します。| + + [!code-csharp[RegularExpressions.Language.Backreferences#2](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.backreferences/cs/backreference2.cs#2)] + [!code-vb[RegularExpressions.Language.Backreferences#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.backreferences/vb/backreference2.vb#2)] + + *name* には、数値の文字列形式である場合があることに注意してください。 たとえば、次の例では、正規表現 `(?<2>\w)\k<2>` を使用して、文字列内で、単語に使用される文字のうち重複する文字を検索します。 + + [!code-csharp[RegularExpressions.Language.Backreferences#3](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.backreferences/cs/backreference3.cs#3)] + [!code-vb[RegularExpressions.Language.Backreferences#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.backreferences/vb/backreference3.vb#3)] + +## 前方参照で一致する対象 + 前方参照は、最も近いグループ定義 \(左から右に検索する場合、左側の最も近いところにある定義\) を参照します。 1 つのグループで複数のキャプチャが行われる場合、前方参照は最も近いキャプチャを参照します。 + + 次の例では、\\1 名前付きグループを再定義する正規表現パターン `(?<1>a)(?<1>\1b)*` を使用しています。 この正規表現の各パターンの説明を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`(?<1>a)`|文字 "a" と一致し、結果を `1` という名前のキャプチャ グループに代入します。| +|`(?<1>\1b)*`|`1` という名前のグループに "b" を加えた文字列に 0 回または 1 回一致し、結果を `1` という名前のキャプチャ グループに代入します。| + + [!code-csharp[RegularExpressions.Language.Backreferences#4](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.backreferences/cs/backreference4.cs#4)] + [!code-vb[RegularExpressions.Language.Backreferences#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.backreferences/vb/backreference4.vb#4)] + + 正規表現と入力文字列 \("aababb"\) の比較時、正規表現エンジンは次の操作を実行します。 + +1. 文字列の先頭から開始し、"a" と式 `(?<1>a)` の一致に成功します。 `1` グループの値は "a" になります。 + +2. 2 番目の文字に進み、文字列 "ab" と式 `\1b` \(つまり "ab"\) の一致に成功します。 結果の "ab" を `\1` に代入します。 + +3. 4 番目の文字に進みます。 式 `(?<1>\1b)` は 0 回以上一致するので、文字列 "abb" と式 `\1b` の一致に成功します。 結果の "abb" を `\1` に代入します。 + + この例では、`*` はループ量指定子であるので、定義されているパターンと一致する文字列がなくなるまで、繰り返し評価されます。 量指定子によるループが行われても、グループ定義はクリアされません。 + + あるグループによってキャプチャされる部分文字列がない場合は、そのグループへの前方参照は未定義になるため、一致する文字列は見つかりません。 このことを、次のように定義される正規表現パターン `\b(\p{Lu}{2})(\d{2})?(\p{Lu}{2})\b` を使用して示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`(\p{Lu}{2})`|2 個の大文字と一致します。 これが最初のキャプチャ グループです。| +|`(\d{2})?`|2 桁の 10 進数と 0 回または 1 回一致します。 これが 2 番目のキャプチャ グループです。| +|`(\p{Lu}{2})`|2 個の大文字と一致します。 これが 3 番目のキャプチャ グループです。| +|`\b`|ワード境界で照合を終了します。| + + 2 番目のキャプチャ グループで定義されている 2 桁の 10 進数が存在しない場合でも、入力文字列とこの正規表現を一致させることができます。 次の例では、一致する対象は見つかりますが、一致する対象が見つかった 2 つのキャプチャ グループの間には空のキャプチャ グループがあります。 + + [!code-csharp[RegularExpressions.Language.Backreferences#5](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.backreferences/cs/backreference5.cs#5)] + [!code-vb[RegularExpressions.Language.Backreferences#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.backreferences/vb/backreference5.vb#5)] + +## 参照 + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) \ No newline at end of file diff --git a/docs/standard/base-types/backtracking-in-regular-expressions.md b/docs/standard/base-types/backtracking-in-regular-expressions.md new file mode 100644 index 00000000000..e63bcfef80c --- /dev/null +++ b/docs/standard/base-types/backtracking-in-regular-expressions.md @@ -0,0 +1,224 @@ +--- +title: "正規表現におけるバックトラッキング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, バックトラッキング" + - "代替の一致パターン" + - "オプションの一致パターン" + - "検索 (正規表現を使用した), バックトラッキング" + - "パターンマッチング (正規表現を使用した), バックトラッキング" + - "バックトラッキング" + - "正規表現 [.NET Framework], バックトラッキング" + - "文字列 [.NET Framework]、正規表現" + - "テキストの解析 (正規表現を使用した), バックトラッキング" +ms.assetid: 34df1152-0b22-4a1c-a76c-3c28c47b70d8 +caps.latest.revision: 20 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 20 +--- +# 正規表現におけるバックトラッキング + バックトラッキングは、正規表現パターンに省略可能な[量指定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md)または[代替構成体](../../../docs/standard/base-types/alternation-constructs-in-regular-expressions.md)が含まれている場合に発生します。この場合、正規表現エンジンは、一致の検索を継続するために、以前に保存した状態に戻ります。 バックトラッキングは、正規表現を強力にするための中心的な機能で、これにより、非常に複雑なパターンを照合できる強力かつ柔軟な正規表現を作成できるようになります。 その一方で、バックトラッキングにはマイナス面もあり、 多くの場合、正規表現エンジンのパフォーマンスを左右する最大の要因になります。 さいわい、正規表現エンジンの動作とバックトラッキングの使用方法は開発者が制御できます。 ここでは、バックトラッキングの動作のしくみと、バックトラッキングを制御する方法について説明します。 + +> [!NOTE] +> 一般に、.NET Framework の正規表現エンジンのような非決定性有限オートマトン \(NFA: Nondeterministic Finite Automaton\) エンジンでは、効率的かつ高速な正規表現を作成する責任は開発者にあります。 + + このトピックは、次のセクションで構成されています。 + +- [バックトラッキングを使用しない直線的な比較](#linear_comparison_without_backtracking) + +- [省略可能な量指定子または代替構成体によるバックトラッキング](#backtracking_with_optional_quantifiers_or_alternation_constructs) + +- [入れ子になった省略可能な量指定子によるバックトラッキング](#backtracking_with_nested_optional_quantifiers) + +- [バックトラッキングの制御](#controlling_backtracking) + + +## バックトラッキングを使用しない直線的な比較 + 正規表現パターンに省略可能な量指定子や代替構成体が含まれていない場合、正規表現エンジンは線形時間で実行されます。 つまり、パターンの最初の言語要素を入力文字列のテキストと照合し、パターンの次の言語要素を入力文字列の次の文字または文字グループと照合するという操作が、 照合が最終的に成功または失敗するまで繰り返されます。 いずれの場合も、正規表現エンジンは入力文字列内を 1 文字ずつ進みます。 + + 具体的な例を次に示します。 正規表現 `e{2}\w\b` は、文字 "e" が 2 回出現した後に任意の単語文字とワード境界が続くパターンを検索します。 + + [!code-csharp[Conceptual.RegularExpressions.Backtracking#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/cs/backtracking1.cs#1)] + [!code-vb[Conceptual.RegularExpressions.Backtracking#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/vb/backtracking1.vb#1)] + + この正規表現には量指定子 `{2}` が含まれていますが、この量指定子は直線的に評価されます。 正規表現エンジンがバックトラックしないのは、`{2}` が省略可能な量指定子ではないからです。この量指定子は、前の部分式が一致する必要がある正確な回数 \(可変の回数ではなく\) を指定しています。 結果として、正規表現エンジンは、次の表に示すような方法でこの正規表現パターンを入力文字列と照合します。 + +|操作|パターン内の位置|文字列内の位置|結果| +|--------|--------------|-------------|--------| +|1|e|"needing a reed" \(インデックス 0\)|一致なし。| +|2|e|"eeding a reed" \(インデックス 1\)|一致候補。| +|3|e{2}|"eding a reed" \(インデックス 2\)|一致候補。| +|4|\\w|"ding a reed" \(インデックス 3\)|一致候補。| +|5|\\b|"ing a reed" \(インデックス 4\)|一致候補の失敗。| +|6|e|"eding a reed" \(インデックス 2\)|一致候補。| +|7|e{2}|"ding a reed" \(インデックス 3\)|一致候補の失敗。| +|8|e|"ding a reed" \(インデックス 3\)|照合の失敗。| +|9|e|"ing a reed" \(インデックス 4\)|一致なし。| +|10|e|"ng a reed" \(インデックス 5\)|一致なし。| +|11|e|"g a reed" \(インデックス 6\)|一致なし。| +|12|e|" a reed" \(インデックス 7\)|一致なし。| +|13|e|"a reed" \(インデックス 8\)|一致なし。| +|14|e|" reed" \(インデックス 9\)|一致なし。| +|16|e|"reed" \(インデックス 10\)|一致なし。| +|16|e|"eed" \(インデックス 11\)|一致候補。| +|17|e{2}|"ed" \(インデックス 12\)|一致候補。| +|18|\\w|"d" \(インデックス 13\)|一致候補。| +|19|\\b|"" \(インデックス 14\)|一致。| + + 正規表現パターンに省略可能な量指定子や代替構成体が含まれていない場合、正規表現パターンと入力文字列の照合に必要な比較の最大数は、入力文字列の文字数にほぼ等しくなります。 この場合、正規表現エンジンは、この 13 文字の文字列の一致候補を特定するために 19 回の比較を使用します。 つまり、正規表現エンジンは、省略可能な量指定子や代替構成体が含まれていない場合にはほぼ線形時間で実行されます。 + + [ページのトップへ](#top) + + +## 省略可能な量指定子または代替構成体によるバックトラッキング + 正規表現に省略可能な量指定子または代替構成体が含まれている場合、入力文字列の評価は直線的ではなくなります。 NFA エンジンによるパターン一致の動作は、照合する入力文字列内の文字ではなく、正規表現内の言語要素によって決まります。 したがって、正規表現エンジンは、省略可能な部分式や代替の部分式を完全に照合しようとします。 部分式内の次の言語要素に進んで照合が失敗した場合は、正規表現全体を入力文字列と照合するために、それまでに見つかった部分的な一致を放棄して、以前に保存した状態に戻ることもあります。 このように、一致を見つけるために以前に保存した状態に戻るプロセスを、バックトラッキングと呼びます。 + + 例として、`.*(es)` という正規表現パターンについて見てみましょう。この正規表現パターンは、文字 "es" と、それに先行するすべての文字に一致します。 次の例に示すように、入力文字列が "Essential services are provided by regular expressions." の場合、このパターンは、"expressions" の "es" までの文字列全体に一致します。 + + [!code-csharp[Conceptual.RegularExpressions.Backtracking#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/cs/backtracking2.cs#2)] + [!code-vb[Conceptual.RegularExpressions.Backtracking#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/vb/backtracking2.vb#2)] + + この場合、正規表現エンジンでは次のようにバックトラッキングが使用されます。 + +- `.*` \(任意の文字の 0 回以上の出現に一致します\) を入力文字列全体と照合します。 + +- 正規表現パターンの "e" との照合を試みますが、 入力文字列にはもう照合する文字がありません。 + +- 最後に成功した照合 \("Essential services are provided by regular expressions."\) にバックトラックして、"e" を文末のピリオドと照合します。 照合に失敗します。 + +- 成功した前の照合へのバックトラッキングを一度に 1 文字ずつ繰り返して、暫定的に一致する部分文字列 "Essential services are provided by regular expr" に到達します。 その後、パターンの "e" を "expressions" の 2 つ目の "e" と比較して、一致を見つけます。 + +- パターンの "s" を、一致した文字 "e" の後の "s" \("expressions" の 1 つ目の "s"\) と比較します。 照合に成功します。 + + バックトラッキングを使用した場合、この正規表現パターンを 55 文字の入力文字列と照合するのに 67 回の比較操作が必要になります。 興味深いことに、この正規表現パターンに最短一致の量指定子 .`*?(es)` が含まれていた場合は、照合に必要な比較が増加します。 この場合、正規表現エンジンは、文字列の末尾から "expressions" の "r" までではなく、文字列の先頭までバックトラックして "Es" を見つけなければなりません。その結果、113 回の比較が必要になります。 一般に、正規表現パターンに 1 つの代替構成体または省略可能な量指定子が含まれている場合、パターンの照合に必要な比較操作の回数は入力文字列の文字数の 2 倍以上になります。 + + [ページのトップへ](#top) + + +## 入れ子になった省略可能な量指定子によるバックトラッキング + パターンに多数の代替構成体、入れ子になった代替構成体、または \(最もよくあるケースとして\) 入れ子になった省略可能な量指定子が含まれていると、正規表現パターンの照合に必要な比較操作の回数は指数関数的に増加する可能性があります。 例として、1 つ以上の文字 "a" から成る文字列全体に一致するように作られた `^(a+)+$` という正規表現パターンについて見てみましょう。 次の例では、同じ長さの 2 つの入力文字列が渡されていますが、パターンに一致するのは 1 つ目の文字列だけです。 クラスは、照合操作にかかる時間を調べるために使用されています。 + + [!code-csharp[Conceptual.RegularExpressions.Backtracking#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/cs/backtracking3.cs#3)] + [!code-vb[Conceptual.RegularExpressions.Backtracking#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/vb/backtracking3.vb#3)] + + 出力を見るとわかるように、入力文字列がパターンに一致しない場合の処理時間は一致する場合の約 2 倍になります。 これは、照合の失敗は常に最悪のシナリオに相当するためです。 正規表現エンジンは、照合の失敗という結論に到達するまでに、正規表現を使用してデータのすべての可能なパスを辿らなければなりません。かっこが入れ子になっていると、データのパスは大幅に増加します。 2 つ目の文字列がパターンに一致しないという結論に到達するまでに正規表現エンジンによって行われる操作を以下に示します。 + +- 文字列の先頭にいることを確認し、文字列の最初の 5 文字をパターン `a+` と照合します。 次に、文字 "a" のグループが文字列内にそれ以上ないことを特定します。 最後に、文字列の終わりをテストします。 文字列にまだ文字が 1 文字残っているため、照合は失敗します。 この照合の失敗に必要な比較は 9 回です。 正規表現エンジンは、"a" \(以降は照合 1 と呼びます\)、"aa" \(照合 2\)、"aaa" \(照合 3\)、および "aaaa" \(照合 4\) の各照合の状態情報を保存します。 + +- 以前に保存した照合 4 に戻ります。 追加のキャプチャ グループに割り当てる必要がある文字 "a" があと 1 つあることを特定します。 最後に、文字列の終わりをテストします。 文字列にまだ文字が 1 文字残っているため、照合は失敗します。 この照合の失敗に必要な比較は 4 回です。 これまでに実行された比較は合計 13 回になります。 + +- 以前に保存した照合 3 に戻ります。 追加のキャプチャ グループに割り当てる必要がある文字 "a" があと 2 つあることを特定しますが、 文字列の終わりのテストに失敗します。 その後、照合 3 に戻り、2 つの追加のキャプチャ グループの 2 つの追加の文字 "a" を照合しようとしますが、 ここでも文字列の終わりのテストに失敗します。 これらの照合の失敗に必要な比較は 12 回です。 これまでに実行された比較は合計 25 回になります。 + + このようにして、正規表現エンジンがすべての可能な一致の組み合わせを試行し終わるまで入力文字列と正規表現の比較が続けられます。一致しないという結論に到達するのはその後です。 この比較は、入れ子になった量指定子があるため、O\(2n\) \(指数演算、*n* は入力文字列の文字数\) です。 そのため、最悪のケースでは、30 文字の入力文字列で約 1,073,741,824 回、40 文字の入力文字列では約 1,099,511,627,776 回の比較が必要になります。 使用する文字列の長さがこのレベル以上になると、正規表現パターンに一致しない入力を処理するときに、正規表現メソッドの完了までに膨大な時間がかかる可能性があります。 + + [ページのトップへ](#top) + + +## バックトラッキングの制御 + バックトラッキングを使用すると、強力かつ柔軟な正規表現を作成できますが、 前のセクションで見たように、受け入れられないほどのパフォーマンスの低下が伴うことがあります。 過度なバックトラッキングを回避するには、 オブジェクトをインスタンス化したり静的な正規表現の一致メソッドを呼び出したりするときに、タイムアウト間隔を定義する必要があります。 これについては、次のセクションで説明します。 また、.NET Framework では、バックトラッキングを制限または抑制する 3 つの正規表現言語要素がサポートされています。これらを使用すると、パフォーマンスをほとんど低下させずに複雑な正規表現を使用できます。それらの言語要素とは、[非バックトラッキング部分式](#Nonbacktracking)、[後読みアサーション](#Lookbehind)、および[先読みアサーション](#Lookahead)です。 各言語要素の詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + + +### タイムアウト間隔の定義 + [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] 以降では、正規表現エンジンが単一の一致を検索する最長間隔を表すタイムアウト値を設定できます。それを超えると試行が中止され、 例外がスローされます。 タイムアウト間隔を指定するには、インスタンス正規表現の コンストラクターに 値を指定します。 また、各静的パターン一致メソッドには、 パラメーターを持つオーバーロードがあり、これを使用してタイムアウト値を指定できます。 既定のタイムアウト間隔は に設定されており、正規表現エンジンはタイムアウトしません。 + +> [!IMPORTANT] +> 正規表現がバックトラッキングに依存する場合は、常にタイムアウト間隔を設定することをお勧めします。 + + 例外は、指定されたタイムアウト間隔中に正規表現エンジンが一致を見つけられなかったことを示しますが、例外がスローされた原因は示しません。 原因は、通常は過度なバックトラッキングですが、例外がスローされたときのシステムの負荷に対して、タイムアウト間隔の設定が短すぎた可能性もあります。 例外を処理するときに、入力文字列との一致の検索をやめるか、タイムアウト間隔を延長して一致操作を再試行するかを選択できます。 + + たとえば、次のコードは コンストラクターを呼び出して、1 秒のタイムアウト値を持つ オブジェクトをインスタンス化します。 正規表現パターン `(a+)+$` は、行の末尾にある 1 つ以上の "a" 文字の 1 つ以上のシーケンスに一致しますが、過度なバックトラッキングの対象になります。 この例では、 がスローされたら、タイムアウト値を 3 秒の最大間隔まで大きくします。 その後、パターンに一致させる試行を中止します。 + + [!code-csharp[System.Text.RegularExpressions.Regex.ctor#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.text.regularexpressions.regex.ctor/cs/ctor1.cs#1)] + [!code-vb[System.Text.RegularExpressions.Regex.ctor#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.text.regularexpressions.regex.ctor/vb/ctor1.vb#1)] + + +### 非バックトラッキング部分式 + `(?>` *subexpression* `)` 言語要素を使用すると、部分式でバックトラッキングがなされないようにすることができます。 これは、照合の失敗に関連するパフォーマンスの問題の防止に役立ちます。 + + 次の例は、入れ子になった量指定子を使用している場合にバックトラッキングを抑制すると、いかにパフォーマンスが向上するかを示しています。 この例では、入力文字列が 2 つの正規表現に一致しないことが正規表現エンジンによって確認されるまでの時間を測定しています。 1 つ目の正規表現は、1 つ以上の 16 進数、コロン、1 つ以上の 16 進数、2 つのコロンというパターンを 1 つ以上含む文字列を、バックトラッキングを使用して照合します。 2 つ目の正規表現は、バックトラッキングを無効にする以外は 1 つ目と同じです。 出力を見るとわかるように、バックトラッキングを無効にするとパフォーマンスが大幅に向上します。 + + [!code-csharp[Conceptual.RegularExpressions.Backtracking#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/cs/backtracking4.cs#4)] + [!code-vb[Conceptual.RegularExpressions.Backtracking#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/vb/backtracking4.vb#4)] + + +### 後読みアサーション + .NET Framework には、入力文字列の前の文字と一致する 2 つの言語要素 \(`(?<=`*subexpression*`)` と `(? メソッドの実行時間が表示されます。 + + [!code-csharp[Conceptual.RegularExpressions.Backtracking#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/cs/backtracking5.cs#5)] + [!code-vb[Conceptual.RegularExpressions.Backtracking#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/vb/backtracking5.vb#5)] + + 最初の正規表現パターン `^[0-9A-Z]([-.\w]*[0-9A-Z])*@` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`^`|文字列の先頭から照合を開始します。| +|`[0-9A-Z]`|英数字 1 文字に一致します。 メソッドが オプションを使用して呼び出されているため、この比較では大文字と小文字が区別されません。| +|`[-.\w]*`|ハイフン、ピリオド、または単語文字の 0 回以上の出現に一致します。| +|`[0-9A-Z]`|英数字 1 文字に一致します。| +|`([-.\w]*[0-9A-Z])*`|0 個以上のハイフン、ピリオド、または単語文字の後に英数字が続く組み合わせの 0 回以上の出現に一致します。 これが最初のキャプチャ グループです。| +|`@`|アット マーク \("@"\) に一致します。| + + 2 つ目の正規表現パターン `^[0-9A-Z][-.\w]*(?<=[0-9A-Z])@` では、肯定後読みアサーションが使用されています。 このパターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`^`|文字列の先頭から照合を開始します。| +|`[0-9A-Z]`|英数字 1 文字に一致します。 メソッドが オプションを使用して呼び出されているため、この比較では大文字と小文字が区別されません。| +|`[-.\w]*`|ハイフン、ピリオド、または単語文字の 0 回以上の出現と一致します。| +|`(?<=[0-9A-Z])`|最後に照合された文字を後読みして、英数字だった場合は照合を継続します。 英数字は、ピリオド、ハイフン、およびすべての単語文字から成るセットのサブセットです。| +|`@`|アット マーク \("@"\) に一致します。| + + +### 先読みアサーション + .NET Framework には、入力文字列の次の文字と一致する 2 つの言語要素 \(`(?=`*subexpression*`)` と `(?!`*subexpression*`)`\) が含まれています。 これらの言語要素は、どちらもゼロ幅アサーションです。つまり、現在の文字の直後にある文字が *subexpression* に一致するかどうかを、前進もバックトラッキングもせずに確認します。 + + `(?=` *subexpression* `)` は肯定先読みアサーションで、現在の位置の後にある文字が *subexpression* に一致する必要があります。`(?!`*subexpression*`)` は否定先読みアサーションで、現在の位置の後にある文字が *subexpression* に一致しない必要があります。 肯定と否定のどちらの先読みアサーションも、*subexpression* が次の部分式のサブセットである場合に特に役立ちます。 + + 次の例では、完全修飾型名を検証する 2 つの同等の正規表現パターンが使用されています。 1 つ目のパターンでは、過度なバックトラッキングのためにパフォーマンスが低下します。 2 つ目のパターンでは、1 つ目の正規表現に変更を加えて、入れ子になった量指定子を肯定先読みアサーションに置き換えています。 この例の出力には、 メソッドの実行時間が表示されます。 + + [!code-csharp[Conceptual.RegularExpressions.Backtracking#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/cs/backtracking6.cs#6)] + [!code-vb[Conceptual.RegularExpressions.Backtracking#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.backtracking/vb/backtracking6.vb#6)] + + 最初の正規表現パターン `^(([A-Z]\w*)+\.)*[A-Z]\w*$` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`^`|文字列の先頭から照合を開始します。| +|`([A-Z]\w*)+\.`|1 個の英文字 \(A\-Z\) の後に 0 個以上の単語文字が続くパターンの 1 回以上の繰り返しの後にピリオドが続くパターンに一致します。 メソッドが オプションを使用して呼び出されているため、この比較では大文字と小文字が区別されません。| +|`(([A-Z]\w*)+\.)*`|前のパターンの 0 回以上の繰り返しに一致します。| +|`[A-Z]\w*`|1 個の英文字の後に 0 個以上の単語文字が続くパターンに一致します。| +|`$`|入力文字列の末尾で照合を終了します。| + + 2 つ目の正規表現パターン `^((?=[A-Z])\w+\.)*[A-Z]\w*$` では、肯定先読みアサーションが使用されています。 このパターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`^`|文字列の先頭から照合を開始します。| +|`(?=[A-Z])`|先頭の文字を先読みして、英文字 \(A\-Z\) だった場合は照合を継続します。 メソッドが オプションを使用して呼び出されているため、この比較では大文字と小文字が区別されません。| +|`\w+\.`|1 個以上の単語文字の後にピリオドが続くパターンに一致します。| +|`((?=[A-Z])\w+\.)*`|1 個以上の単語文字の後にピリオドが続くパターンの 0 回以上の繰り返しと一致します。 最初の単語文字は英文字でなければなりません。| +|`[A-Z]\w*`|1 個の英文字の後に 0 個以上の単語文字が続くパターンに一致します。| +|`$`|入力文字列の末尾で照合を終了します。| + + [ページのトップへ](#top) + +## 参照 + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) + [限定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md) + [代替構成体](../../../docs/standard/base-types/alternation-constructs-in-regular-expressions.md) + [グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md) \ No newline at end of file diff --git a/docs/standard/base-types/basic-manipulations.md b/docs/standard/base-types/basic-manipulations.md index bd0d51c9357..87ae4707a50 100644 --- a/docs/standard/base-types/basic-manipulations.md +++ b/docs/standard/base-types/basic-manipulations.md @@ -1,307 +1,33 @@ --- -title: "方法: 基本的な文字列操作を実行する" -description: "方法: 基本的な文字列操作を実行する" -keywords: .NET, .NET Core -author: stevehoag -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 141d5c94-08db-469c-8a33-708c0d3bba42 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: a8c0433564c1922adf338d230c14d0d3a110f44a -ms.lasthandoff: 03/02/2017 - ---- - -# 方法: 基本的な文字列操作を実行する - -次の例では、「[基本的な文字列操作](basic-string-operations.md)」のトピックで説明したいくつかの方法を使用して、実際のアプリケーションで見られる方法で文字列の操作を実行するクラスを構築します。 `MailToData` クラスは、個人の名前とアドレスを個別のプロパティに格納し、`City`、`State`、`Zip` フィールドを組み合わせて、ユーザーに表示する1 つの文字列にする方法を提供します。 さらに、このクラスを使用して、ユーザーが市区町村、都道府県、および郵便番号情報を&1; つの文字列として入力することができます。アプリケーションは自動的に&1; つの文字列を解析し、対応するプロパティに適切な情報を入力します。 - -わかりやすいように、この例ではコマンド ライン インターフェイスによるコンソール アプリケーションを使用します。 - -## 例 - -```csharp -using System; - -class MainClass -{ - static void Main() - { - MailToData MyData = new MailToData(); - - Console.Write("Enter Your Name: "); - MyData.Name = Console.ReadLine(); - Console.Write("Enter Your Address: "); - MyData.Address = Console.ReadLine(); - Console.Write("Enter Your City, State, and ZIP Code separated by spaces: "); - MyData.CityStateZip = Console.ReadLine(); - Console.WriteLine(); - - if (MyData.Validated) { - Console.WriteLine("Name: {0}", MyData.Name); - Console.WriteLine("Address: {0}", MyData.Address); - Console.WriteLine("City: {0}", MyData.City); - Console.WriteLine("State: {0}", MyData.State); - Console.WriteLine("Zip: {0}", MyData.Zip); - - Console.WriteLine("\nThe following address will be used:"); - Console.WriteLine(MyData.Address); - Console.WriteLine(MyData.CityStateZip); - } - } -} - -public class MailToData -{ - string name = ""; - string address = ""; - string citystatezip = ""; - string city = ""; - string state = ""; - string zip = ""; - bool parseSucceeded = false; - - public string Name - { - get{return name;} - set{name = value;} - } - - public string Address - { - get{return address;} - set{address = value;} - } - - public string CityStateZip - { - get { - return String.Format("{0}, {1} {2}", city, state, zip); - } - set { - citystatezip = value.Trim(); - ParseCityStateZip(); - } - } - - public string City - { - get{return city;} - set{city = value;} - } - - public string State - { - get{return state;} - set{state = value;} - } - - public string Zip - { - get{return zip;} - set{zip = value;} - } - - public bool Validated - { - get { return parseSucceeded; } - } - - private void ParseCityStateZip() - { - string msg = ""; - const string msgEnd = "\nYou must enter spaces between city, state, and zip code.\n"; - - // Throw a FormatException if the user did not enter the necessary spaces - // between elements. - try - { - // City may consist of multiple words, so we'll have to parse the - // string from right to left starting with the zip code. - int zipIndex = citystatezip.LastIndexOf(" "); - if (zipIndex == -1) { - msg = "\nCannot identify a zip code." + msgEnd; - throw new FormatException(msg); - } - zip = citystatezip.Substring(zipIndex + 1); - - int stateIndex = citystatezip.LastIndexOf(" ", zipIndex - 1); - if (stateIndex == -1) { - msg = "\nCannot identify a state." + msgEnd; - throw new FormatException(msg); - } - state = citystatezip.Substring(stateIndex + 1, zipIndex - stateIndex - 1); - state = state.ToUpper(); - - city = citystatezip.Substring(0, stateIndex); - if (city.Length == 0) { - msg = "\nCannot identify a city." + msgEnd; - throw new FormatException(msg); - } - parseSucceeded = true; - } - catch (FormatException ex) - { - Console.WriteLine(ex.Message); - } - } - - private string ReturnCityStateZip() - { - // Make state uppercase. - state = state.ToUpper(); - - // Put the value of city, state, and zip together in the proper manner. - string MyCityStateZip = String.Concat(city, ", ", state, " ", zip); - - return MyCityStateZip; - } -} -``` - -```vb -Class MainClass - Public Shared Sub Main() - Dim MyData As New MailToData() - - Console.Write("Enter Your Name: ") - MyData.Name = Console.ReadLine() - Console.Write("Enter Your Address: ") - MyData.Address = Console.ReadLine() - Console.Write("Enter Your City, State, and ZIP Code separated by spaces: ") - MyData.CityStateZip = Console.ReadLine() - Console.WriteLine() - - If MyData.Validated Then - Console.WriteLine("Name: {0}", MyData.Name) - Console.WriteLine("Address: {0}", MyData.Address) - Console.WriteLine("City: {0}", MyData.City) - Console.WriteLine("State: {0}", MyData.State) - Console.WriteLine("ZIP Code: {0}", MyData.Zip) - - Console.WriteLine("The following address will be used:") - Console.WriteLine(MyData.Address) - Console.WriteLine(MyData.CityStateZip) - End If - End Sub -End Class - -Public Class MailToData - Private strName As String = "" - Private strAddress As String = "" - Private strCityStateZip As String = "" - Private strCity As String = "" - Private strState As String = "" - Private strZip As String = "" - Private parseSucceeded As Boolean = False - - Public Property Name() As String - Get - Return strName - End Get - Set - strName = value - End Set - End Property - - Public Property Address() As String - Get - Return strAddress - End Get - Set - strAddress = value - End Set - End Property - - Public Property CityStateZip() As String - Get - Return String.Format("{0}, {1} {2}", strCity, strState, strZip) - End Get - Set - strCityStateZip = value.Trim() - ParseCityStateZip() - End Set - End Property - - Public Property City() As String - Get - Return strCity - End Get - Set - strCity = value - End Set - End Property - - Public Property State() As String - Get - Return strState - End Get - Set - strState = value - End Set - End Property - - Public Property Zip() As String - Get - Return strZip - End Get - Set - strZip = value - End Set - End Property - - Public ReadOnly Property Validated As Boolean - Get - Return parseSucceeded - End Get - End Property - - Private Sub ParseCityStateZip() - Dim msg As String = Nothing - Const msgEnd As String = vbCrLf + - "You must enter spaces between city, state, and zip code." + - vbCrLf - - ' Throw a FormatException if the user did not enter the necessary spaces - ' between elements. - Try - ' City may consist of multiple words, so we'll have to parse the - ' string from right to left starting with the zip code. - Dim zipIndex As Integer = strCityStateZip.LastIndexOf(" ") - If zipIndex = -1 Then - msg = vbCrLf + "Cannot identify a zip code." + msgEnd - Throw New FormatException(msg) - End If - strZip = strCityStateZip.Substring(zipIndex + 1) - - Dim stateIndex As Integer = strCityStateZip.LastIndexOf(" ", zipIndex - 1) - If stateIndex = -1 Then - msg = vbCrLf + "Cannot identify a state." + msgEnd - Throw New FormatException(msg) - End If - strState = strCityStateZip.Substring(stateIndex + 1, zipIndex - stateIndex - 1) - strState = strState.ToUpper() - - strCity = strCityStateZip.Substring(0, stateIndex) - If strCity.Length = 0 Then - msg = vbCrLf + "Cannot identify a city." + msgEnd - Throw New FormatException(msg) - End If - parseSucceeded = True - Catch ex As FormatException - Console.WriteLine(ex.Message) - End Try - End Sub -End Class -``` - -上記のコードを実行すると、ユーザーは自分の名前とアドレスを入力するように求められます。 アプリケーションは、適切なプロパティに情報を格納し、市区町村、都道府県、および郵便番号情報を表示する&1; つの文字列を作成して、ユーザーに情報を表示します。 - -## 関連項目 - -[基本的な文字列操作](basic-string-operations.md) - +title: "方法: .NET Framework で基本的な文字列操作を実行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "文字列 [.NET Framework], 例" +ms.assetid: 121d1eae-251b-44c0-8818-57da04b8215e +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# 方法: .NET Framework で基本的な文字列操作を実行する +「[基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md)」で説明したいくつかのメソッドを使用して、実際のアプリケーションで行われるような文字列操作を行うクラスを作成する例を次に示します。 `MailToData` クラスは個人の名前と住所を別々のプロパティに格納し、`City`、`State`、`Zip` の各フィールドを連結して 1 つの文字列としてユーザーに表示できるようにします。 さらに、このクラスを使用すると、ユーザーは都市、州、郵便番号を 1 つの文字列として入力でき、アプリケーションがその文字列を自動的に解析し、対応するプロパティに正しい情報を入力します。 + + わかりやすくするために、この例ではコマンド ライン インターフェイスを持つコンソール アプリケーションを使用します。 + +## 使用例 + [!code-csharp[Conceptual.String.BasicOps#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/basicops.cs#1)] + [!code-vb[Conceptual.String.BasicOps#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/basicops.vb#1)] + + 上のコードを実行すると、ユーザーは名前と住所を入力するように要求されます。 アプリケーションは入力された情報を適切なプロパティに格納し、都市、州、郵便番号の各情報をまとめて表示する 1 つの文字列を作成して、ユーザーに対して表示します。 + +## 参照 + [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) \ No newline at end of file diff --git a/docs/standard/base-types/basic-string-operations.md b/docs/standard/base-types/basic-string-operations.md index db639112c47..c4cda53b99e 100644 --- a/docs/standard/base-types/basic-string-operations.md +++ b/docs/standard/base-types/basic-string-operations.md @@ -1,47 +1,52 @@ --- -title: "基本的な文字列操作" -description: "基本的な文字列操作" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 9658098d-de60-4868-ba5b-0c278748a90f -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: b8bdbeccd226c412e725200fcaf81ec568afc5bc -ms.lasthandoff: 03/02/2017 - ---- - -# 基本的な文字列操作 - -アプリケーションは、多くの場合、ユーザー入力に基づいてメッセージを構築することによってユーザーに応答します。 たとえば、Web サイトで、新たにログオンしたユーザーに対して、ユーザーの名前を含む特別なメッセージで応答することは珍しいことではありません。 [System.String](xref:System.String) と [System.Text.StringBuilder](xref:System.Text.StringBuilder) クラスのいくつかのメソッドを使用すると、ユーザー インターフェイスに表示するカスタム文字列を動的に構築できます。 これらのメソッドでは、バイト配列から新しい文字列を作成する、文字列の値を比較する、既存の文字列を変更するなどのいくつかの基本的な文字列操作を実行することもできます。 - -## このセクションの内容 - -[新しい文字列の作成](creating-new.md) - オブジェクトを文字列に変換し、文字列を結合する基本的な方法について説明します。 - -[文字のトリムと削除](trimming.md) - 文字列内の文字をトリミングまたは削除する方法について説明します。 - -[文字列の埋め込み](padding.md) - 文字列に文字または空白を挿入する方法について説明します。 - -[文字列の比較](comparing.md) -2 つ以上の文字列の内容を比較する方法について説明します。 - -[大文字と小文字の変更](changing-case.md) - 文字列内の文字の大文字と小文字を変更する方法について説明します。 - -[StringBuilder クラスの使用](stringbuilder.md) - [StringBuilder](xref:System.Text.StringBuilder) クラスを使用して、動的な文字列オブジェクトを作成して変更する方法について説明します。 - -[方法: 基本的な文字列操作を実行する](basic-manipulations.md) - 基本的な文字列操作の使用例を示します。 - -## 関連項目 - -[型変換](type-conversion.md) - 型を変換する方法について説明します。 - -[型の書式設定](formatting-types.md) - 文字列の書式指定子を使用して文字列の書式を設定する方法について説明します。 - - - +title: ".NET Framework での基本的な文字列操作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "文字列 [.NET Framework]、基本的な文字列操作" + - "カスタム文字列" +ms.assetid: 8133d357-90b5-4b62-9927-43323d99b6b6 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# .NET Framework での基本的な文字列操作 +多くの場合、アプリケーションはユーザーが入力した内容に基づいてメッセージを生成することでユーザーに応答します。 たとえば、Web サイトでは、初めてログオンしたユーザーに対して、そのユーザーの名前を含んだ特別なメッセージが表示されることがよくあります。 クラスおよび クラスのいくつかのメソッドを使用すると、ユーザー インターフェイスに表示するカスタム文字列を動的に生成できます。 これらのメソッドは、バイト配列から新しい文字列を作成する、文字列の値を比較する、既存の文字列を変更するなどの基本的な文字列操作を行う場合にも役立ちます。 + +## このセクションの内容 + [新しい文字列の作成](../../../docs/standard/base-types/creating-new.md) + オブジェクトを文字列に変換したり、文字列を連結したりする基本的な方法について説明します。 + + [文字のトリムと削除](../../../docs/standard/base-types/trimming.md) + 文字列内の文字をトリムまたは削除する方法について説明します。 + + [文字列の埋め込み](../../../docs/standard/base-types/padding.md) + 文字列に文字または空白を挿入する方法について説明します。 + + [文字列の比較](../../../docs/standard/base-types/comparing.md) + 2 つ以上の文字列の値を比較する方法について説明します。 + + [大文字と小文字の変更](../../../docs/standard/base-types/changing-case.md) + 文字列に含まれる文字の大文字と小文字を変更する方法について説明します。 + + [StringBuilder クラスの使用](../../../docs/standard/base-types/stringbuilder.md) + クラスの動的な文字列オブジェクトを作成および変更する方法について説明します。 + + [方法: 基本的な文字列操作を実行する](../../../docs/standard/base-types/basic-manipulations.md) + 基本的な文字列操作の例を示します。 + +## 関連項目 + [.NET Framework における型変換](../../../docs/standard/base-types/type-conversion.md) + ある型から別の型に変換する方法について説明します。 + + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + 書式指定子を使用して文字列の書式を指定する方法について説明します。 \ No newline at end of file diff --git a/docs/standard/base-types/best-practices-strings.md b/docs/standard/base-types/best-practices-strings.md index d895bfaac88..c910d1457b7 100644 --- a/docs/standard/base-types/best-practices-strings.md +++ b/docs/standard/base-types/best-practices-strings.md @@ -1,1106 +1,374 @@ --- -title: "文字列を使用するためのベスト プラクティス" -description: "文字列を使用するためのベスト プラクティス" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -manager: wpickett -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net-core -ms.technology: .net-core-technologies -ms.devlang: dotnet -ms.assetid: b3cefaa4-0a3f-4a96-aba9-1de30fb07c29 -translationtype: Human Translation -ms.sourcegitcommit: b20713600d7c3ddc31be5885733a1e8910ede8c6 -ms.openlocfilehash: 3efd30bade564fe1b7dbf93237a9ff40c58c5f1e - ---- - -# 文字列を使用するためのベスト プラクティス - -.NET には、ローカライズされたアプリケーションやグローバル化されたアプリケーションを開発するための広範なサポートが用意されており、文字列の並べ替えや表示などの一般的な操作を実行するときに、現在のカルチャの規則や特定のカルチャの規則を簡単に適用できるようになっています。 しかし、文字列の並べ替えや比較の操作は、必ずしもカルチャに依存するとは限りません。 たとえば、アプリケーションが内部で使用する文字列は、通常、すべてのカルチャで同じように処理される必要があります。 XML タグ、HTML タグ、ユーザー名、ファイル パス、システム オブジェクトの名前などのカルチャに依存しない文字列データがカルチャに依存するかのように解釈されると、アプリケーション コードで軽度のバグが発生したり、パフォーマンスが低下したり、場合によってはセキュリティの問題を引き起こしたりする可能性があります。 - -ここでは、.NET の文字列の並べ替え、比較、および大文字と小文字の区別のメソッドについて検討し、適切な文字列処理メソッドを選択するための推奨事項と、文字列処理メソッドに関する追加情報を紹介します。 また、数値データ、日時データなど、書式付きデータを表示および格納のために処理する方法についても説明します。 - -この記事は、次のセクションで構成されています。 - -* [文字列の使用に関する推奨事項](#recommendations-for-string-usage) - -* [文字列比較の明示的な指定](#specifying-string-comparisons-explicitly) - -* [文字列比較の詳細](#the-details-of-string-comparison) - -* [メソッド呼び出しに使用する StringComparison メンバーの選択](#choosing-a-stringcomparison-member-for-your-method-call) - -* [一般的な文字列比較メソッド](#common-string-comparison-methods) - -* [間接的に文字列比較を実行するメソッド](#methods-that-perform-string-comparison-indirectly) - -* [書式設定されたデータを表示および保持する](#displaying-and-persisting-formatted-data) - -## 文字列の使用に関する推奨事項 - -.NET による開発で文字列を使用するときの簡単な推奨事項を次に示します。 - -* 文字列操作に対して文字列比較の規則を明示的に指定するオーバーロードを使用します。 そのためには、通常、[StringComparison](xref:System.StringComparison) 型のパラメーターを持つメソッド オーバーロードを呼び出します。 - -* カルチャに依存しない文字列照合の安全な既定の方法として、[StringComparison.Ordinal](xref:System.StringComparison.Ordinal) または [StringComparison.OrdinalIgnoreCase](xref:System.StringComparison.OrdinalIgnoreCase) を使用して比較を行います。 - -* パフォーマンスを向上させるには、[StringComparison.Ordinal](xref:System.StringComparison.Ordinal) または [StringComparison.OrdinalIgnoreCase](xref:System.StringComparison.OrdinalIgnoreCase) による比較を使用します。 - -* ユーザーに出力を表示する場合は、[StringComparison.CurrentCulture](xref:System.StringComparison.CurrentCulture) に基づく文字列操作を使用します。 - -* 比較が言語的な意味を持たない場合 (記号としての比較など) は、[CultureInfo.InvariantCulture](xref:System.Globalization.CultureInfo.InvariantCulture) に基づく文字列操作ではなく、非言語的な [StringComparison.Ordinal](xref:System.StringComparison.Ordinal) 値または [StringComparison.OrdinalIgnoreCase](xref:System.StringComparison.OrdinalIgnoreCase) 値を使用します。 - -* 比較のために文字列を正規化する場合は、[String.ToLowerInvariant](xref:System.String.ToLowerInvariant) メソッドではなく [String.ToUpperInvariant](xref:System.String.ToUpperInvariant) メソッドを使用します。 - -* 2 つの文字列が等価かどうかをテストするには、[String](xref:System.String) `Equals` メソッドのオーバーロードを使用します。 - -* [String](xref:System.String) `Compare` メソッドと [String.CompareTo](xref:System.String.CompareTo(System.String)) メソッドのオーバーロードは、文字列を並べ替える場合に使用し、文字列の等価性を確認する場合には使用しません。 - -* 数値、日付など、文字列以外のデータをユーザー インターフェイスに表示するには、カルチャに依存する書式設定を使用します。 文字列以外のデータを文字列形式で保持するには、インバリアント カルチャを使用する書式設定を使用します。 - -文字列を使用する際に避ける必要があることを次に示します。 - -* 文字列操作に対して文字列比較の規則を明示的または暗黙的に指定しないオーバーロードは使用しないでください。 - -* 2 つの文字列が等価かどうかを確認する場合に、[String](xref:System.String) `Compare` メソッドまたは [String.CompareTo](xref:System.String.CompareTo(System.String)) メソッドのオーバーロードで戻り値が 0 かどうかをテストする方法は使用しないでください。 - -* 数値データや日時データを文字列形式で保持する場合は、カルチャに依存する書式設定を使用しないでください。 - -## 文字列比較の明示的な指定 - -.NET の文字列操作メソッドは、ほとんどがオーバーロードされています。 通常は、既定の設定をそのまま使用する 1 つまたは複数のオーバーロードと、既定の設定を使用せずに文字列の比較または操作の正確な方法を定義するその他のオーバーロードがあります。 既定の設定に依存しないメソッドには、ほとんどの場合、[StringComparison](xref:System.StringComparison) 型のパラメーターが含まれています。これは、カルチャおよび大文字と小文字の区別によって文字列比較の規則を明示的に指定する列挙型です。 [StringComparison](xref:System.StringComparison) 列挙型のメンバーを次の表に示します。 - -StringComparison のメンバー | 説明 ------------------------ | ----------- -[StringComparison.CurrentCulture](xref:System.StringComparison.CurrentCulture) | 現在のカルチャを使用して、大文字と小文字を区別する比較を実行します。 -[CurrentCultureIgnoreCase](xref:System.StringComparison.CurrentCultureIgnoreCase) | 現在のカルチャを使用して、大文字と小文字を区別しない比較を実行します。 -[StringComparison.Ordinal](xref:System.StringComparison.Ordinal) | 序数に基づく比較を実行します。 -[StringComparison.OrdinalIgnoreCase](xref:System.StringComparison.OrdinalIgnoreCase) | 大文字と小文字を区別しない、序数に基づく比較を実行します。 - -たとえば、文字または文字列に一致する[String](xref:System.String) オブジェクト内の部分文字列のインデックスを返す [String](xref:System.String) `IndexOf` メソッドには、次の 9 つのオーバーロードがあります。 - -* [IndexOf(Char)](xref:System.String.IndexOf(System.Char))、[IndexOf(Char, Int32)](xref:System.String.IndexOf(System.Char,System.Int32))、および [IndexOf(Char, Int32, Int32)](xref:System.String.IndexOf(System.Char,System.Int32,System.Int32))。文字列内の文字の序数に基づく (大文字と小文字を区別し、カルチャに依存しない) 検索を既定で実行します。 - -* [IndexOf(String)](xref:System.String.IndexOf(System.String))、[IndexOf(String, Int32)](xref:System.String.IndexOf(System.String,System.Int32))、および [IndexOf(String, Int32, Int32)](xref:System.String.IndexOf(System.String,System.Int32,System.Int32))。文字列内の部分文字列の、大文字と小文字を区別し、カルチャに依存した検索を既定で実行します。 - -* [IndexOf(String, StringComparison)](xref:System.String.IndexOf(System.String,System.StringComparison))、[IndexOf(String, Int32, StringComparison)](xref:System.String.IndexOf(System.String,System.Int32,System.StringComparison))、および [IndexOf(String, Int32, Int32, StringComparison)](xref:System.String.IndexOf(System.String,System.Int32,System.Int32,System.StringComparison))。比較の形式を指定できる StringComparison 型のパラメーターが含まれています。 - -次のような理由から、既定値を使用しないオーバーロードを選択することをお勧めします。 - -* 既定のパラメーターを持つオーバーロードには、序数に基づく比較を実行するもの (文字列インスタンスで [Char](xref:System.Char) を検索するもの) と、カルチャに依存するもの (文字列インスタンスで文字列を検索するもの) があります。 どのメソッドがどの既定値を使用するのかを覚えておくのは容易ではなく、使用するオーバーロードを間違えやすくなります。 - -* メソッド呼び出しで既定値に依存するコードは、意図が不明確になります。 たとえば、既定値に依存する次の例では、2 つの文字列の序数に基づく比較と言語に基づく比較のどちらを開発者が意図しているのかや、`protocol` と "http" の大文字と小文字が違っていた場合に等価性テストで `false` が返されるのかどうかがわかりにくくなっています。 - - ```csharp - string protocol = GetProtocol(url); - if (String.Equals(protocol, "http", StringComparison.OrdinalIgnoreCase)) { - // ...Code to handle HTTP protocol. - } - else { - throw new InvalidOperationException(); - } - ``` - - ```vb - Dim protocol As String = GetProtocol(url) - If String.Equals(protocol, "http") Then - ' ...Code to handle HTTP protocol. - Else - Throw New InvalidOperationException() - End If - ``` - -一般的には、既定値に依存しないメソッドを呼び出すことをお勧めします。そうすると、コードの意図が明確になります。 その結果、コードが読みやすくなるため、デバッグや保守も容易になります。 次の例では、前の例で発生した問題に対応します。 序数比較を使用することと、大文字と小文字の違いを無視することを指定します。 - -```csharp -string protocol = GetProtocol(url); -if (String.Equals(protocol, "http", StringComparison.OrdinalIgnoreCase)) { - // ...Code to handle HTTP protocol. -} -else { - throw new InvalidOperationException(); -} -``` - -```vb -Dim protocol As String = GetProtocol(url) -If String.Equals(protocol, "http", StringComparison.OrdinalIgnoreCase) Then - ' ...Code to handle HTTP protocol. -Else - Throw New InvalidOperationException() -End If -``` - -## 文字列比較の詳細 - -文字列比較は、多くの文字列関連操作 (特に並べ替えおよび等価性テスト) の中核です。 文字列は、決まった順序で並べられています。たとえば、文字列の並べ替え済みリストで "my" が "string" の前にある場合は、比較で "my" が "string" 以下になる必要があります。 また、比較は等価性を暗黙的に定義します。 比較演算では、等価と見なされた文字列に対して 0 が返されます。 これは、どちらの文字列ももう一方の文字列より小さくないという意味に解釈するとわかりやすくなります。 文字列に関係する、意味のある操作のほとんどには、他の文字列との比較か、正しく定義された並べ替え操作の実行のいずれかまたは両方の処理が含まれています。 - -しかし、2 つの文字列の等価性や並べ替え順序を評価する場合、正しい結果は 1 つではありません。結果は、文字列の比較に使用される基準に依存するためです。 特に、序数に基づく文字列比較や、現在のカルチャまたはインバリアント カルチャ (英語をベースとする、ロケールに依存しないカルチャ) の大文字と小文字の規則や並べ替えの規則に基づく文字列比較では、さまざまな結果が返される可能性があります。 - -### 現在のカルチャを使用する文字列比較 - -文字列を比較するときの基準として現在のカルチャの規則が使用される場合があります。 現在のカルチャに基づく比較では、スレッドの現在のカルチャ (ロケール) が使用されます。 言語的な意味を持つデータや、カルチャに依存したユーザー操作を反映するデータに対しては、常に現在のカルチャに基づく比較を使用する必要があります。 - -しかし、.NET の比較や大文字と小文字の区別の動作は、カルチャによって変わります。 たとえば、開発されたコンピューターとは異なるカルチャのコンピューターでアプリケーションが実行された場合や、実行中のスレッドのカルチャが変更された場合などに、この変化が生じます。 これは意図的な動作ですが、多くの開発者にはまだあまり知られていません。 次の例は、英語 (米国) ("en-US") とスウェーデン語 ("sv-SE") のカルチャの並べ替え順序の違いを示しています。 並べ替えられた文字列配列で、"ångström"、"Windows"、および "Visual Studio" の位置が違っていることに注目してください。 - -```csharp -using System; -using System.Globalization; -using System.Threading; - -public class Example -{ - public static void Main() - { - string[] values= { "able", "ångström", "apple", "Æble", - "Windows", "Visual Studio" }; - Array.Sort(values); - DisplayArray(values); - - // Change culture to Swedish (Sweden). - string originalCulture = CultureInfo.CurrentCulture.Name; - Thread.CurrentThread.CurrentCulture = new CultureInfo("sv-SE"); - Array.Sort(values); - DisplayArray(values); - - // Restore the original culture. - Thread.CurrentThread.CurrentCulture = new CultureInfo(originalCulture); - } - - private static void DisplayArray(string[] values) - { - Console.WriteLine("Sorting using the {0} culture:", - CultureInfo.CurrentCulture.Name); - foreach (string value in values) - Console.WriteLine(" {0}", value); - - Console.WriteLine(); - } -} -// The example displays the following output: -// Sorting using the en-US culture: -// able -// Æble -// ångström -// apple -// Visual Studio -// Windows -// -// Sorting using the sv-SE culture: -// able -// Æble -// apple -// Windows -// Visual Studio -// ångström -``` - -```vb -Imports System.Globalization -Imports System.Threading - -Module Example - Public Sub Main() - Dim values() As String = { "able", "ångström", "apple", _ - "Æble", "Windows", "Visual Studio" } - Array.Sort(values) - DisplayArray(values) - - ' Change culture to Swedish (Sweden). - Dim originalCulture As String = CultureInfo.CurrentCulture.Name - Thread.CurrentThread.CurrentCulture = New CultureInfo("sv-SE") - Array.Sort(values) - DisplayArray(values) - - ' Restore the original culture. - Thread.CurrentThread.CurrentCulture = New CultureInfo(originalCulture) - End Sub - - Private Sub DisplayArray(values() As String) - Console.WRiteLine("Sorting using the {0} culture:", _ - CultureInfo.CurrentCulture.Name) - For Each value As String In values - Console.WriteLine(" {0}", value) - Next - Console.WriteLine() - End Sub -End Module -' The example displays the following output: -' Sorting using the en-US culture: -' able -' Æble -' ångström -' apple -' Visual Studio -' Windows -' -' Sorting using the sv-SE culture: -' able -' Æble -' apple -' Windows -' Visual Studio -' ångström -``` - -現在のカルチャを使用する、大文字と小文字を区別しない比較は、スレッドの現在のカルチャの大文字と小文字の区別の規則が無視される以外は、カルチャに依存した比較と同じです。 この動作も、並べ替え順序に影響する場合があります。 - -現在のカルチャのセマンティクスを使用する比較は、次のメソッドで既定で使用されます。 - -* [StringComparison](xref:System.StringComparison) パラメーターを含まない [String](xref:System.String) `Compare` オーバーロード。 - -* [String.CompareTo](xref:System.String.CompareTo(System.String)) オーバーロード。 - -* 既定の [String.StartsWith(String)](xref:System.String.StartsWith(System.String)) メソッド。 - -* 既定の [String.EndsWith(String)](xref:System.String.EndsWith(System.String)) メソッド。 - -* 検索パラメーターとして [String](xref:System.String) を受け取る、[StringComparison](xref:System.StringComparison) パラメーターを持たない [String](xref:System.String) `IndexOf` のオーバーロード。 - -* 検索パラメーターとして [String](xref:System.String) を受け取る、[StringComparison](xref:System.StringComparison) パラメーターを持たない [String](xref:System.String) `LastIndexOf` のオーバーロード。 - -どのような場合でも、[StringComparison](xref:System.StringComparison) パラメーターを持つオーバーロードを呼び出して、メソッド呼び出しの意図を明確にすることをお勧めします。 - -非言語的な文字列データが言語的に解釈されたり、特定のカルチャの文字列データが別のカルチャの規則で解釈されたりすると、軽度のバグやあまり軽度でないバグが発生する可能性があります。 その典型的な例が、トルコ語の I の問題です。 - -英語 (米国) を含むほぼすべてのラテン アルファベットでは、文字 "i" (\u0069) は "I" (\u0049) の小文字版です。 この大文字と小文字の規則は、このようなカルチャでプログラミングを行う人にとってはすぐに当たり前のことになります。 しかし、トルコ語 ("tr-TR") のアルファベットには、"i" の大文字版である "ドット付きの I" ("İ" (\u0130)) や、 大文字にすると "I" になる小文字の "ドットなしの i" ("ı" (\u0131)) があります。 この動作は、アゼルバイジャン語 ("az") のカルチャでも発生します。 - -したがって、"i" を大文字にしたり "I" を小文字にしたりする動作に関する前提は、すべてのカルチャで有効なわけではありません。 文字列比較ルーチンの既定のオーバーロードを使用すると、カルチャ間の差異の影響を受けることになります。 また、非言語的なデータを比較する場合も、既定のオーバーロードを使用すると望ましくない結果が返される可能性があります。たとえば次の例では、文字列 "file" と "FILE" の大文字と小文字を区別しない比較を実行しようとしています。 - -```csharp -using System; -using System.Globalization; -using System.Threading; - -public class Example -{ - public static void Main() - { - string fileUrl = "file"; - Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); - Console.WriteLine("Culture = {0}", - Thread.CurrentThread.CurrentCulture.DisplayName); - Console.WriteLine("(file == FILE) = {0}", - fileUrl.StartsWith("FILE", true, null)); - Console.WriteLine(); - - Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR"); - Console.WriteLine("Culture = {0}", - Thread.CurrentThread.CurrentCulture.DisplayName); - Console.WriteLine("(file == FILE) = {0}", - fileUrl.StartsWith("FILE", true, null)); - } -} -// The example displays the following output: -// Culture = English (United States) -// (file == FILE) = True -// -// Culture = Turkish (Turkey) -// (file == FILE) = False -``` - -```vb -Imports System.Globalization -Imports System.Threading - -Module Example - Public Sub Main() - Dim fileUrl = "file" - Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US") - Console.WriteLine("Culture = {0}", _ - Thread.CurrentThread.CurrentCulture.DisplayName) - Console.WriteLine("(file == FILE) = {0}", _ - fileUrl.StartsWith("FILE", True, Nothing)) - Console.WriteLine() - - Thread.CurrentThread.CurrentCulture = New CultureInfo("tr-TR") - Console.WriteLine("Culture = {0}", _ - Thread.CurrentThread.CurrentCulture.DisplayName) - Console.WriteLine("(file == FILE) = {0}", _ - fileUrl.StartsWith("FILE", True, Nothing)) - End Sub -End Module -' The example displays the following output: -' Culture = English (United States) -' (file == FILE) = True -' -' Culture = Turkish (Turkey) -' (file == FILE) = False -``` - -この比較は、セキュリティが重要となる状況でカルチャが不注意に使用されると、重大な問題を引き起こす可能性があります。 `IsFileURI("file:")` などのメソッド呼び出しは、現在のカルチャが英語 (米国) の場合は `true` を返しますが、現在のカルチャがトルコ語の場合は `false` を返します。 したがって、"FILE:" で始まる URI へのアクセスを大文字と小文字の区別なくブロックするセキュリティ対策は、トルコ語のシステムでは攻略される可能性があります。 - -```csharp -public static bool IsFileURI(String path) -{ - return path.StartsWith("FILE:", true, null); -} -``` - -```vb -Public Shared Function IsFileURI(path As String) As Boolean - Return path.StartsWith("FILE:", True, Nothing) -End Function -``` - -この例の "file:" は、カルチャに依存しない非言語的な識別子として解釈されるものなので、コードを次のように書き換える必要があります。 - -```csharp -public static bool IsFileURI(string path) -{ - return path.StartsWith("FILE:", StringComparison.OrdinalIgnoreCase); -} -``` - -```vb -Public Shared Function IsFileURI(path As String) As Boolean - Return path.StartsWith("FILE:", StringComparison.OrdinalIgnoreCase) -End Function -``` - -## 序数に基づく文字列操作 - -メソッド呼び出しで [StringComparison.Ordinal](xref:System.StringComparison.Ordinal) 値または [StringComparison.OrdinalIgnoreCase](xref:System.StringComparison.OrdinalIgnoreCase) 値を指定すると、非言語的な比較が行われ、自然言語の特性は無視されます。 これらの [StringComparison](xref:System.StringComparison) 値を使用して呼び出されたメソッドでは、文字列操作の判断が、大文字と小文字の指定、またはカルチャでパラメーター化される同等の表ではなく、単純なバイト比較に基づいて行われます。 これにより、ほとんどの場合に文字列が意図されたとおりに解釈され、コードの実行速度と信頼性も向上します。 - -序数に基づく比較とは、各文字列の各バイトが言語的に解釈されずに比較される文字列比較です (たとえば、"windows" と "Windows" は一致しません)。 文字列が厳密に一致する必要がある状況や、慎重な照合ポリシーが求められる状況では、この比較を使用します。 また、序数に基づく比較は最も高速な比較演算でもあります。これは、結果を判定するときに言語の規則が適用されないためです。 - -.NET の文字列には、null 文字が埋め込まれる場合があります。 序数に基づく比較とカルチャに依存した比較 (インバリアント カルチャを使用する比較を含む) の最も明白な違いの 1 つは、文字列に埋め込まれた null 文字の処理に関連しています。 これらの文字は、[String](xref:System.String) `Compare` メソッドや [String](xref:System.String) `Equals` メソッドを使用して、カルチャに依存した比較 (インバリアント カルチャを使用する比較を含む) を実行する場合には無視されます。 その結果、カルチャに依存した比較では、null 文字が埋め込まれた文字列と null 文字が埋め込まれていない文字列が等価と見なされる可能性があります。 - +title: ".NET Framework で文字列を使用するためのベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "推奨される手順, 文字列の比較と並べ替え" + - "比較 (文字列を)" + - "並べ替え (文字列を)" + - "文字列比較 [.NET Framework], 推奨される手順" + - "文字列の並べ替え" + - "文字列 [.NET Framework], 基本的な文字列操作" + - "文字列 [.NET Framework], 推奨される手順" + - "文字列 [.NET Framework], 比較" + - "文字列 [.NET Framework], 検索" + - "文字列 [.NET Framework], 並べ替え" +ms.assetid: b9f0bf53-e2de-4116-8ce9-d4f91a1df4f7 +caps.latest.revision: 35 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 35 +--- +# .NET Framework で文字列を使用するためのベスト プラクティス + .NET Framework には、ローカライズされたアプリケーションやグローバル化されたアプリケーションを開発するための広範なサポートが用意されており、文字列の並べ替えや表示などの一般的な操作を実行するときに、現在のカルチャの規則や特定のカルチャの規則を簡単に適用できるようになっています。 しかし、文字列の並べ替えや比較の操作は、必ずしもカルチャに依存するとは限りません。 たとえば、アプリケーションが内部で使用する文字列は、通常、すべてのカルチャで同じように処理される必要があります。 XML タグ、HTML タグ、ユーザー名、ファイル パス、システム オブジェクトの名前などのカルチャに依存しない文字列データがカルチャに依存するかのように解釈されると、アプリケーション コードで軽度のバグが発生したり、パフォーマンスが低下したり、場合によってはセキュリティの問題を引き起こしたりする可能性があります。 + + ここでは、NET Framework の文字列の並べ替え、比較、および大文字と小文字の区別のメソッドについて検討し、適切な文字列処理メソッドを選択するための推奨事項と、文字列処理メソッドに関する追加情報を紹介します。 また、数値データ、日時データなど、書式付きデータを表示および格納のために処理する方法についても説明します。 + + このトピックは、次のセクションで構成されています。 + +- [文字列の使用に関する推奨事項](#recommendations_for_string_usage) + +- [文字列比較の明示的な指定](#specifying_string_comparisons_explicitly) + +- [文字列比較の詳細](#the_details_of_string_comparison) + +- [メソッド呼び出しに使用する StringComparison メンバーの選択](#choosing_a_stringcomparison_member_for_your_method_call) + +- [.NET Framework の一般的な文字列比較メソッド](#common_string_comparison_methods_in_the_net_framework) + +- [間接的に文字列比較を実行するメソッド](#methods_that_perform_string_comparison_indirectly) + +- [書式設定されたデータを表示および保持する](#Formatted) + + +## 文字列の使用に関する推奨事項 + .NET Framework による開発で文字列を使用するときの簡単な推奨事項を次に示します。 + +- 文字列操作に対して文字列比較の規則を明示的に指定するオーバーロードを使用します。 そのためには、通常、 型のパラメーターを持つメソッド オーバーロードを呼び出します。 + +- カルチャに依存しない文字列照合の安全な既定の方法として、 または を使用して比較を行います。 + +- パフォーマンスを向上させるには、 または による比較を使用します。 + +- ユーザーに出力を表示する場合は、 に基づく文字列操作を使用します。 + +- 比較が言語的な意味を持たない場合 \(記号としての比較など\) は、 に基づく文字列操作ではなく、非言語的な 値または 値を使用します。 + +- 比較のために文字列を正規化する場合は、 メソッドではなく メソッドを使用します。 + +- 2 つの文字列が等価かどうかをテストするには、 メソッドのオーバーロードを使用します。 + +- メソッドと メソッドは、文字列を並べ替える場合に使用し、文字列の等価性を確認する場合には使用しません。 + +- 数値、日付など、文字列以外のデータをユーザー インターフェイスに表示するには、カルチャに依存する書式設定を使用します。 文字列以外のデータを文字列形式で保持するには、インバリアント カルチャを使用する書式設定を使用します。 + + 文字列を使用する際に避ける必要があることを次に示します。 + +- 文字列操作に対して文字列比較の規則を明示的または暗黙的に指定しないオーバーロードは使用しないでください。 + +- ほとんどの場合、 に基づく文字列操作は使用しないでください。 数少ない例外の 1 つは、言語的な意味を持つがカルチャには依存しないデータを永続化する場合です。 + +- 2 つの文字列が等価かどうかを確認する場合に、 メソッドまたは メソッドのオーバーロードで戻り値が 0 かどうかをテストする方法は使用しないでください。 + +- 数値データや日時データを文字列形式で保持する場合は、カルチャに依存する書式設定を使用しないでください。 + + [ページのトップへ](#top) + + +## 文字列比較の明示的な指定 + .NET Framework の文字列操作メソッドは、ほとんどがオーバーロードされています。 通常は、既定の設定をそのまま使用する 1 つまたは複数のオーバーロードと、既定の設定を使用せずに文字列の比較または操作の正確な方法を定義するその他のオーバーロードがあります。 既定の設定に依存しないメソッドには、ほとんどの場合、 型のパラメーターが含まれています。これは、カルチャおよび大文字と小文字の区別によって文字列比較の規則を明示的に指定する列挙型です。 列挙型のメンバーを次の表に示します。 + +|StringComparison のメンバー|説明| +|----------------------------|--------| +||現在のカルチャを使用して、大文字と小文字を区別する比較を実行します。| +||現在のカルチャを使用して、大文字と小文字を区別しない比較を実行します。| +||インバリアント カルチャを使用して、大文字と小文字を区別する比較を実行します。| +||インバリアント カルチャを使用して、大文字と小文字を区別しない比較を実行します。| +||序数に基づく比較を実行します。| +||大文字と小文字を区別しない、序数に基づく比較を実行します。| + + たとえば、文字または文字列に一致する オブジェクト内の部分文字列のインデックスを返す メソッドには、次の 9 つのオーバーロードがあります。 + +- 、および 。文字列内の文字の序数に基づく \(大文字と小文字を区別し、カルチャに依存しない\) 検索を既定で実行します。 + +- 、および 。文字列内の部分文字列の、大文字と小文字を区別し、カルチャに依存した検索を既定で実行します。 + +- 、および 。比較の形式を指定できる 型のパラメーターが含まれています。 + + 次のような理由から、既定値を使用しないオーバーロードを選択することをお勧めします。 + +- 既定のパラメーターを持つオーバーロードには、序数に基づく比較を実行するもの \(文字列インスタンスで を検索するもの\) と、カルチャに依存するもの \(文字列インスタンスで文字列を検索するもの\) があります。 どのメソッドがどの既定値を使用するのかを覚えておくのは容易ではなく、使用するオーバーロードを間違えやすくなります。 + +- メソッド呼び出しで既定値に依存するコードは、意図が不明確になります。 既定値に依存する次の例では、2 つの文字列の序数に基づく比較と言語に基づく比較のどちらを開発者が意図しているのかや、`protocol` と "http" の大文字と小文字が違っていた場合に等価性テストで `false` が返されるのかどうかがわかりにくくなっています。 + + [!code-csharp[Conceptual.Strings.BestPractices#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/explicitargs1.cs#1)] + [!code-vb[Conceptual.Strings.BestPractices#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/explicitargs1.vb#1)] + + 一般的には、既定値に依存しないメソッドを呼び出すことをお勧めします。そうすると、コードの意図が明確になります。 その結果、コードが読みやすくなるため、デバッグや保守も容易になります。 次の例では、前の例で発生した問題に対応します。 序数比較を使用することと、大文字と小文字の違いを無視することを指定します。 + + [!code-csharp[Conceptual.Strings.BestPractices#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/explicitargs1.cs#2)] + [!code-vb[Conceptual.Strings.BestPractices#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/explicitargs1.vb#2)] + + [ページのトップへ](#top) + + +## 文字列比較の詳細 + 文字列比較は、多くの文字列関連操作 \(特に並べ替えおよび等価性テスト\) の中核です。 文字列は、決まった順序で並べられています。たとえば、文字列の並べ替え済みリストで "my" が "string" の前にある場合は、比較で "my" が "string" 以下になる必要があります。 また、比較は等価性を暗黙的に定義します。 比較演算では、等価と見なされた文字列に対して 0 が返されます。 これは、どちらの文字列ももう一方の文字列より小さくないという意味に解釈するとわかりやすくなります。 文字列に関係する、意味のある操作のほとんどには、他の文字列との比較か、正しく定義された並べ替え操作の実行のいずれかまたは両方の処理が含まれています。 + + しかし、2 つの文字列の等価性や並べ替え順序を評価する場合、正しい結果は 1 つではありません。結果は、文字列の比較に使用される基準に依存するためです。 特に、序数に基づく文字列比較や、現在のカルチャまたはインバリアント カルチャ \(英語をベースとする、ロケールに依存しないカルチャ\) の大文字と小文字の規則や並べ替えの規則に基づく文字列比較では、さまざまな結果が返される可能性があります。 + + +### 現在のカルチャを使用する文字列比較 + 文字列を比較するときの基準として現在のカルチャの規則が使用される場合があります。 現在のカルチャに基づく比較では、スレッドの現在のカルチャ \(ロケール\) が使用されます。 ユーザーがカルチャを設定していない場合は、コントロール パネルの **\[地域のオプション\]** ウィンドウの設定が既定で使用されます。 言語的な意味を持つデータや、カルチャに依存したユーザー操作を反映するデータに対しては、常に現在のカルチャに基づく比較を使用する必要があります。 + + しかし、.NET Framework の比較や大文字と小文字の区別の動作は、カルチャによって変わります。 たとえば、開発されたコンピューターとは異なるカルチャのコンピューターでアプリケーションが実行された場合や、実行中のスレッドのカルチャが変更された場合などに、この変化が生じます。 これは意図的な動作ですが、多くの開発者にはまだあまり知られていません。 次の例は、英語 \(米国\) \("en\-US"\) とスウェーデン語 \("sv\-SE"\) のカルチャの並べ替え順序の違いを示しています。 並べ替えられた文字列配列で、"ångström"、"Windows"、および "Visual Studio" の位置が違っていることに注目してください。 + + [!code-csharp[Conceptual.Strings.BestPractices#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/comparison1.cs#3)] + [!code-vb[Conceptual.Strings.BestPractices#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/comparison1.vb#3)] + + 現在のカルチャを使用する、大文字と小文字を区別しない比較は、スレッドの現在のカルチャの大文字と小文字の区別の規則が無視される以外は、カルチャに依存した比較と同じです。 この動作も、並べ替え順序に影響する場合があります。 + + 現在のカルチャのセマンティクスを使用する比較は、次のメソッドで既定で使用されます。 + +- パラメーターを含まない のオーバーロード。 + +- のオーバーロード。 + +- 既定の メソッドと、`null` パラメーターを持つ メソッド。 + +- 既定の メソッドと、`null` パラメーターを持つ メソッド。 + +- 検索パラメーターとして を受け取る、 パラメーターを持たない のオーバーロード。 + +- 検索パラメーターとして を受け取る、 パラメーターを持たない のオーバーロード。 + + どのような場合でも、 パラメーターを持つオーバーロードを呼び出して、メソッド呼び出しの意図を明確にすることをお勧めします。 + + 非言語的な文字列データが言語的に解釈されたり、特定のカルチャの文字列データが別のカルチャの規則で解釈されたりすると、軽度のバグやあまり軽度でないバグが発生する可能性があります。 その典型的な例が、トルコ語の I の問題です。 + + 英語 \(米国\) を含むほぼすべてのラテン アルファベットでは、文字 "i" \(\\u0069\) は "I" \(\\u0049\) の小文字版です。 この大文字と小文字の規則は、このようなカルチャでプログラミングを行う人にとってはすぐに当たり前のことになります。 しかし、トルコ語 \("tr\-TR"\) のアルファベットには、"i" の大文字版である "ドット付きの I" \("İ" \(\\u0130\)\) や、 大文字にすると "I" になる小文字の "ドットなしの i" \("ı" \(\\u0131\)\) があります。 この動作は、アゼルバイジャン語 \("az"\) のカルチャでも発生します。 + + したがって、"i" を大文字にしたり "I" を小文字にしたりする動作に関する前提は、すべてのカルチャで有効なわけではありません。 文字列比較ルーチンの既定のオーバーロードを使用すると、カルチャ間の差異の影響を受けることになります。 また、非言語的なデータを比較する場合も、既定のオーバーロードを使用すると望ましくない結果が返される可能性があります。たとえば次の例では、文字列 "file" と "FILE" の大文字と小文字を区別しない比較を実行しようとしています。 + + [!code-csharp[Conceptual.Strings.BestPractices#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/turkish1.cs#11)] + [!code-vb[Conceptual.Strings.BestPractices#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/turkish1.vb#11)] + + この比較は、セキュリティが重要となる状況でカルチャが不注意に使用されると、重大な問題を引き起こす可能性があります。`IsFileURI("file:")` などのメソッド呼び出しは、現在のカルチャが英語 \(米国\) の場合は `true` を返しますが、現在のカルチャがトルコ語の場合は `false` を返します。 したがって、"FILE:" で始まる URI へのアクセスを大文字と小文字の区別なくブロックするセキュリティ対策は、トルコ語のシステムでは攻略される可能性があります。 + + [!code-csharp[Conceptual.Strings.BestPractices#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/turkish1.cs#12)] + [!code-vb[Conceptual.Strings.BestPractices#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/turkish1.vb#12)] + + この例の "file:" は、カルチャに依存しない非言語的な識別子として解釈されるものなので、コードを次のように書き換える必要があります。 + + [!code-csharp[Conceptual.Strings.BestPractices#13](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/turkish1.cs#13)] + [!code-vb[Conceptual.Strings.BestPractices#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/turkish1.vb#13)] + +### 序数に基づく文字列操作 + メソッド呼び出しで 値または 値を指定すると、非言語的な比較が行われ、自然言語の特性は無視されます。 これらの 値を使用して呼び出されたメソッドでは、文字列操作の判断が、大文字と小文字の指定、またはカルチャでパラメーター化される同等の表ではなく、単純なバイト比較に基づいて行われます。 これにより、ほとんどの場合に文字列が意図されたとおりに解釈され、コードの実行速度と信頼性も向上します。 + + 序数に基づく比較とは、各文字列の各バイトが言語的に解釈されずに比較される文字列比較です \(たとえば、"windows" と "Windows" は一致しません\)。 これは、実質的には C ランタイムの `strcmp` 関数の呼び出しです。 文字列が厳密に一致する必要がある状況や、慎重な照合ポリシーが求められる状況では、この比較を使用します。 また、序数に基づく比較は最も高速な比較演算でもあります。これは、結果を判定するときに言語の規則が適用されないためです。 + + .NET Framework の文字列には、null 文字が埋め込まれる場合があります。 序数に基づく比較とカルチャに依存した比較 \(インバリアント カルチャを使用する比較を含む\) の最も明白な違いの 1 つは、文字列に埋め込まれた null 文字の処理に関連しています。 これらの文字は、 メソッドや メソッドを使用して、カルチャに依存した比較 \(インバリアント カルチャを使用する比較を含む\) を実行する場合には無視されます。 その結果、カルチャに依存した比較では、null 文字が埋め込まれた文字列と null 文字が埋め込まれていない文字列が等価と見なされる可能性があります。 + > [!IMPORTANT] -> 埋め込まれた null 文字は、文字列比較メソッドでは無視されますが、文字列検索メソッド ([String.Contains](xref:System.String.Contains(System.String))、[String.EndsWith](xref:System.String.EndsWith(System.String))、[String.IndexOf](xref:System.String.IndexOf(System.Char))、[String.LastIndexOf](xref:System.String.LastIndexOf(System.String))、[String.StartsWith](xref:System.String.StartsWith(System.String)) など) では無視されません。 - -次の例では、文字列 "Aa" と、"A" と "a" の間にいくつかの null 文字が埋め込まれた類似の文字列とのカルチャに依存した比較を実行して、2 つの文字列が等価と見なされることを示しています。 - -```csharp -using System; - -public class Example -{ - public static void Main() - { - string str1 = "Aa"; - string str2 = "A" + new String('\u0000', 3) + "a"; - Console.WriteLine("Comparing '{0}' ({1}) and '{2}' ({3}):", - str1, ShowBytes(str1), str2, ShowBytes(str2)); - Console.WriteLine(" With String.Compare:"); - Console.WriteLine(" Current Culture: {0}", - String.Compare(str1, str2, StringComparison.CurrentCulture)); - Console.WriteLine(" Invariant Culture: {0}", - String.Compare(str1, str2, StringComparison.InvariantCulture)); - - Console.WriteLine(" With String.Equals:"); - Console.WriteLine(" Current Culture: {0}", - String.Equals(str1, str2, StringComparison.CurrentCulture)); - Console.WriteLine(" Invariant Culture: {0}", - String.Equals(str1, str2, StringComparison.InvariantCulture)); - } - - private static string ShowBytes(string str) - { - string hexString = String.Empty; - for (int ctr = 0; ctr < str.Length; ctr++) - { - string result = String.Empty; - result = Convert.ToInt32(str[ctr]).ToString("X4"); - result = " " + result.Substring(0,2) + " " + result.Substring(2, 2); - hexString += result; - } - return hexString.Trim(); - } -} -// The example displays the following output: -// Comparing 'Aa' (00 41 00 61) and 'A a' (00 41 00 00 00 00 00 00 00 61): -// With String.Compare: -// Current Culture: 0 -// Invariant Culture: 0 -// With String.Equals: -// Current Culture: True -// Invariant Culture: True -``` - -```vb -Module Example - Public Sub Main() - Dim str1 As String = "Aa" - Dim str2 As String = "A" + New String(Convert.ToChar(0), 3) + "a" - Console.WriteLine("Comparing '{0}' ({1}) and '{2}' ({3}):", _ - str1, ShowBytes(str1), str2, ShowBytes(str2)) - Console.WriteLine(" With String.Compare:") - Console.WriteLine(" Current Culture: {0}", _ - String.Compare(str1, str2, StringComparison.CurrentCulture)) - Console.WriteLine(" Invariant Culture: {0}", _ - String.Compare(str1, str2, StringComparison.InvariantCulture)) - - Console.WriteLine(" With String.Equals:") - Console.WriteLine(" Current Culture: {0}", _ - String.Equals(str1, str2, StringComparison.CurrentCulture)) - Console.WriteLine(" Invariant Culture: {0}", _ - String.Equals(str1, str2, StringComparison.InvariantCulture)) - End Sub - - Private Function ShowBytes(str As String) As String - Dim hexString As String = String.Empty - For ctr As Integer = 0 To str.Length - 1 - Dim result As String = String.Empty - result = Convert.ToInt32(str.Chars(ctr)).ToString("X4") - result = " " + result.Substring(0,2) + " " + result.Substring(2, 2) - hexString += result - Next - Return hexString.Trim() - End Function -End Module -``` - -一方、次の例のように序数に基づく比較を使用すると、これらの文字列は等価とは見なされません。 - -```csharp -Console.WriteLine("Comparing '{0}' ({1}) and '{2}' ({3}):", - str1, ShowBytes(str1), str2, ShowBytes(str2)); -Console.WriteLine(" With String.Compare:"); -Console.WriteLine(" Ordinal: {0}", - String.Compare(str1, str2, StringComparison.Ordinal)); - -Console.WriteLine(" With String.Equals:"); -Console.WriteLine(" Ordinal: {0}", - String.Equals(str1, str2, StringComparison.Ordinal)); -// The example displays the following output: -// Comparing 'Aa' (00 41 00 61) and 'A a' (00 41 00 00 00 00 00 00 00 61): -// With String.Compare: -// Ordinal: 97 -// With String.Equals: -// Ordinal: False -``` - -```vb -Console.WriteLine("Comparing '{0}' ({1}) and '{2}' ({3}):", _ - str1, ShowBytes(str1), str2, ShowBytes(str2)) -Console.WriteLine(" With String.Compare:") -Console.WriteLine(" Ordinal: {0}", _ - String.Compare(str1, str2, StringComparison.Ordinal)) - -Console.WriteLine(" With String.Equals:") -Console.WriteLine(" Ordinal: {0}", _ - String.Equals(str1, str2, StringComparison.Ordinal)) -' The example displays the following output: -' Comparing 'Aa' (00 41 00 61) and 'A a' (00 41 00 00 00 00 00 00 00 61): -' With String.Compare: -' Ordinal: 97 -' With String.Equals: -' Ordinal: False -``` - -序数に基づく比較の次に慎重な方法は、大文字と小文字を区別しない序数に基づく比較です。 この比較では、大文字と小文字の区別のほとんどが無視されます (たとえば、"windows" と "Windows" は一致します)。 ASCII 文字を操作する場合、このポリシーは [StringComparison.Ordinal](xref:System.StringComparison.Ordinal) と同等ですが、通常の ASCII の大文字と小文字の区別が無視されます。 したがって、[A, Z] (\u0041-\u005A) の任意の文字が [a,z] (\u0061-\007A) の対応する文字と一致します。 ASCII の範囲外の大文字と小文字の区別には、インバリアント カルチャのテーブルが使用されます。 次に例を示します。 - -```csharp -String.Compare(strA, strB, StringComparison.OrdinalIgnoreCase); -``` - -```vb -String.Compare(strA, strB, StringComparison.OrdinalIgnoreCase) -``` - -この比較は、次の比較と同等です (ただし、より高速です)。 - -```csharp -String.Compare(strA.ToUpperInvariant(), strB.ToUpperInvariant(), - StringComparison.Ordinal); -``` - -```vb -String.Compare(strA.ToUpperInvariant(), strB.ToUpperInvariant(), - StringComparison.Ordinal) -``` - -とはいえ、これらの比較はどちらも非常に高速です。 - -[StringComparison.Ordinal](xref:System.StringComparison.Ordinal) と [StringComparison.OrdinalIgnoreCase](xref:System.StringComparison.OrdinalIgnoreCase) は、どちらもバイナリ値を直接使用するため、照合に最適です。 比較の設定について確信を持てない場合は、この 2 つのいずれかの値を使用してください。 ただし、これらの値を使用するとバイトごとの比較が行われるため、言語的な順序 (英語の辞書のような順序) ではなくバイナリの順序で並べ替えが行われます。 したがって、結果をユーザーに表示すると、ほとんどの場合不自然に見えます。 - -序数に基づくセマンティクスは、[StringComparison](xref:System.StringComparison) 引数を含まない [String](xref:System.String) `Equals` のオーバーロード (等値演算子を含む) で既定で使用されます。 どのような場合でも、[StringComparison](xref:System.StringComparison) パラメーターを持つオーバーロードを呼び出すことをお勧めします。 - -### インバリアント カルチャを使用する文字列操作 - -インバリアント カルチャを使用する比較では、静的 [CultureInfo.InvariantCulture](xref:System.Globalization.CultureInfo.InvariantCulture) プロパティから返される [CompareInfo](xref:System.Globalization.CompareInfo) プロパティが使用されます。 この動作は、すべてのシステムで同じです。範囲外の文字は、等価のインバリアント文字と見なされる文字に変換されます。 このポリシーは、同じ文字列動作のセットを複数のカルチャにわたって保持する場合に便利ですが、予期しない結果になることもよくあります。 - -インバリアント カルチャを使用する、大文字と小文字を区別しない比較でも、静的 [CultureInfo.InvariantCulture](xref:System.Globalization.CultureInfo.InvariantCulture) プロパティから返される静的 [CompareInfo](xref:System.Globalization.CompareInfo) プロパティが比較情報として使用されます。 変換後の文字の大文字と小文字の違いは無視されます。 - -[CultureInfo.InvariantCulture](xref:System.Globalization.CultureInfo.InvariantCulture) オブジェクトによって、[String](xref:System.String) `Compare` メソッドで特定の文字のセットが等価と解釈されます。 たとえば、次の例が等価になるのは、インバリアント カルチャでは妥当です。 - -InvariantCulture: a + ̊ = å - -latin small lette A 文字 "a" (\u0061) は、combining ring above 文字 "+ " ̊" (\u030a) の横にある場合、latin small letter A with ring above 文字 "å" (\u00e5) として解釈されます。 この動作は、次の例に示すように、序数に基づく比較とは異なります。 - -```csharp -string separated = "\u0061\u030a"; -string combined = "\u00e5"; - -Console.WriteLine("Equal sort weight of {0} and {1} using InvariantCulture: {2}", - separated, combined, - String.Compare(separated, combined, - StringComparison.InvariantCulture) == 0); - -Console.WriteLine("Equal sort weight of {0} and {1} using Ordinal: {2}", - separated, combined, - String.Compare(separated, combined, - StringComparison.Ordinal) == 0); -// The example displays the following output: -// Equal sort weight of a° and å using InvariantCulture: True -// Equal sort weight of a° and å using Ordinal: False -``` - -```vb -Dim separated As String = ChrW(&h61) + ChrW(&h30a) -Dim combined As String = ChrW(&he5) - -Console.WriteLine("Equal sort weight of {0} and {1} using InvariantCulture: {2}", _ - separated, combined, _ - String.Compare(separated, combined, _ - StringComparison.InvariantCulture) = 0) - -Console.WriteLine("Equal sort weight of {0} and {1} using Ordinal: {2}", _ - separated, combined, _ - String.Compare(separated, combined, _ - StringComparison.Ordinal) = 0) -' The example displays the following output: -' Equal sort weight of a° and å using InvariantCulture: True -' Equal sort weight of a° and å using Ordinal: False -``` - -ファイル名やクッキーなど、"å" のような組み合わせが出現する可能性がある要素を解釈する場合にも、序数に基づく比較を使用するのが最も明確かつ適切な方法になります。 - -結局のところ、インバリアント カルチャには、比較に使用する際に便利なプロパティがほとんどありません。 インバリアント カルチャを使用すると、言語的な意味を持つ形で比較が行われるため、記号の完全な等価性は保証されません。その一方で、特定のカルチャでの表示にも適していません。 たとえば、表示する並べ替え済みの識別子のリストを含む大きなデータ ファイルがアプリケーションに付属している場合に、そのリストにエントリを追加するには、インバリアント スタイルの並べ替えを使用する挿入が必要になります。 - -## メソッド呼び出しに使用する StringComparison メンバーの選択 - -文字列のセマンティックなコンテキストと [StringComparison](xref:System.StringComparison) 列挙型のメンバーとの対応関係の概要を次の表に示します。 - -データ | 動作 | 対応する System.StringComparison 値 ----- | -------- | ------------------------------------------- -大文字と小文字が区別される内部識別子、XML や HTTP などの標準の、大文字と小文字が区別される識別子、または大文字と小文字が区別されるセキュリティ関連の設定。 | バイトが正確に一致する非言語的識別子。 | [StringComparison.Ordinal](xref:System.StringComparison.Ordinal) -大文字と小文字が区別されない内部識別子、XML や HTTP などの標準の、大文字と小文字が区別される識別子、ファイル パス、レジストリ キーと値、環境変数、リソース識別子 (ハンドル名など)、または大文字と小文字が区別されないセキュリティ関連の設定。 | 大文字と小文字の区別に関係ない非言語的識別子。 | [StringComparison.OrdinalIgnoreCase](xref:System.StringComparison.OrdinalIgnoreCase) -ユーザーに表示されるデータまたはほとんどのユーザーの入力。 | 特定の言語の規則を必要とするデータ。 | [StringComparison.CurrentCulture](xref:System.StringComparison.CurrentCulture) または [CurrentCultureIgnoreCase](xref:System.StringComparison.CurrentCultureIgnoreCase) - -## 一般的な文字列比較メソッド - -以降では、文字列比較でよく使用されるメソッドについて説明します。 - -### String.Compare - -既定の解釈: [StringComparison.CurrentCulture](xref:System.StringComparison.CurrentCulture)。 - -このメソッドは文字列解釈の中心的な操作となるため、メソッド呼び出しのすべてのインスタンスを調べて、文字列を現在のカルチャに従って解釈するべきか、カルチャから切り離して (記号として) 扱うべきかどうかを確認する必要があります。 ほとんどは後者であるため、その場合は代わりに [StringComparison.Ordinal](xref:System.StringComparison.Ordinal) の比較を使用します。 - -[CultureInfo.CompareInfo](xref:System.Globalization.CultureInfo.CompareInfo) プロパティから返される [System.Globalization.CompareInfo](xref:System.Globalization.CompareInfo) クラスにも、[CompareOptions](xref:System.Globalization.CompareOptions) フラグ列挙体でさまざまな照合方法 (序数に基づく、空白文字を無視する、カナ型を無視するなど) を指定できる [Compare](xref:System.Globalization.CompareInfo.Compare(System.String,System.Int32,System.String,System.Int32,System.Globalization.CompareOptions)) メソッドが含まれています。 - -### String.CompareTo - -既定の解釈: [StringComparison.CurrentCulture](xref:System.StringComparison.CurrentCulture)。 - -このメソッドには、現時点では、[StringComparison](xref:System.StringComparison) 型を指定するオーバーロードはありません。 通常は、このメソッドを推奨される [String.Compare(String, String, StringComparison)](xref:System.String.Compare(System.String,System.String,System.StringComparison)) の形式に変換できます。 - -このメソッドは、[IComparable](xref:System.IComparable) インターフェイスと [IComparable<T>](xref:System.IComparable%601) インターフェイスを実装する型に実装されます。 このメソッドには[StringComparison](xref:System.StringComparison) パラメーターのオプションがないため、実装する型のコンストラクターで [StringComparer](xref:System.StringComparer) を指定できるようにするのが一般的です。 次の例では、クラス コンストラクターに [StringComparer](xref:System.StringComparer) パラメーターを含む `FileName` クラスを定義しています。 この [StringComparer](xref:System.StringComparer) オブジェクトは、その後、`FileName.CompareTo` メソッドで使用されています。 - -```csharp -using System; - -public class FileName : IComparable -{ - string fname; - StringComparer comparer; - - public FileName(string name, StringComparer comparer) - { - if (String.IsNullOrEmpty(name)) - throw new ArgumentNullException("name"); - - this.fname = name; - - if (comparer != null) - this.comparer = comparer; - else - this.comparer = StringComparer.OrdinalIgnoreCase; - } - - public string Name - { - get { return fname; } - } - - public int CompareTo(object obj) - { - if (obj == null) return 1; - - if (! (obj is FileName)) - return comparer.Compare(this.fname, obj.ToString()); - else - return comparer.Compare(this.fname, ((FileName) obj).Name); - } -} -``` - -```vb -Public Class FileName : Implements IComparable - Dim fname As String - Dim comparer As StringComparer - - Public Sub New(name As String, comparer As StringComparer) - If String.IsNullOrEmpty(name) Then - Throw New ArgumentNullException("name") - End If - - Me.fname = name - - If comparer IsNot Nothing Then - Me.comparer = comparer - Else - Me.comparer = StringComparer.OrdinalIgnoreCase - End If - End Sub - - Public ReadOnly Property Name As String - Get - Return fname - End Get - End Property - - Public Function CompareTo(obj As Object) As Integer _ - Implements IComparable.CompareTo - If obj Is Nothing Then Return 1 - - If Not TypeOf obj Is FileName Then - obj = obj.ToString() - Else - obj = CType(obj, FileName).Name - End If - Return comparer.Compare(Me.fname, obj) - End Function -End Class -``` - -### String.Equals - -既定の解釈: [StringComparison.Ordinal](xref:System.StringComparison.Ordinal)。 - -[String](xref:System.String) クラスで等価性テストを実行するには、`Equals` メソッド (静的メソッドまたはインスタンス メソッド) のオーバーロードを呼び出すか、静的等値演算子を使用します。 これらのオーバーロードと演算子では、序数に基づく比較が既定で使用されますが、 序数に基づく比較を実行する場合でも、[StringComparison](xref:System.StringComparison) 型を明示的に指定するオーバーロードを呼び出すことをお勧めします。これにより、特定の文字列解釈のコードを検索しやすくなります。 - -### String.ToUpper と String.ToLower - -既定の解釈: [StringComparison.CurrentCulture](xref:System.StringComparison.CurrentCulture)。 - -これらのメソッドを使用するときには注意が必要です。というのも、文字列を大文字や小文字に強制的に変換する操作は、文字列を大文字と小文字の区別に関係なく比較するための小規模の正規化としてよく使用されるからです。 その場合は、大文字と小文字を区別しない比較を使用することを検討してください。 - -[String.ToUpperInvariant](xref:System.String.ToUpperInvariant) メソッドと [String.ToLowerInvariant](xref:System.String.ToLowerInvariant) メソッドも使用できます。 [ToUpperInvariant](xref:System.String.ToUpperInvariant) は、大文字と小文字を正規化するための標準的な方法です。 [StringComparison.OrdinalIgnoreCase](xref:System.StringComparison.OrdinalIgnoreCase) を使用して行われる比較は、動作の内容を見ると、両方の文字列引数に対して [ToUpperInvariant](xref:System.String.ToUpperInvariant) を呼び出し、[StringComparison.Ordinal](xref:System.StringComparison.Ordinal) を使用して比較を行うという、2 つの呼び出しの組み合わせです。 - -特定のカルチャを表す [CultureInfo](xref:System.Globalization.CultureInfo) オブジェクトを渡してそのカルチャで大文字および小文字への変換を行うためのオーバーロードもあります。 - -### Char.ToUpper と Char.ToLower - -既定の解釈: [StringComparison.CurrentCulture](xref:System.StringComparison.CurrentCulture)。 - -これらのメソッドの動作は、上で説明した [String.ToUpper](xref:System.String.ToUpper) メソッドおよび [String.ToLower](xref:System.String.ToLower) メソッドと同様です。 - -### String.StartsWith と String.EndsWith - -既定の解釈: [StringComparison.CurrentCulture](xref:System.StringComparison.CurrentCulture)。 - -これらのメソッドは、いずれもカルチャに依存した比較を既定で実行します。 - -### String.IndexOf と String.LastIndexOf - -既定の解釈: [StringComparison.CurrentCulture](xref:System.StringComparison.CurrentCulture)。 - -これらのメソッドの既定のオーバーロードは、比較の実行方法が一貫していません。 [Char](xref:System.Char) パラメーターを含むすべての [String](xref:System.String) `IndexOf` メソッドと [String](xref:System.String) `LastIndexOf` メソッドは、序数に基づく比較を実行します。一方、[String](xref:System.String) パラメーターを含む既定の [String](xref:System.String) `IndexOf` メソッドと [String`](xref:System.String) `LastIndexOf` メソッドは、カルチャに依存した比較を実行します。 - -` `IndexOf` or `LastIndexOf` メソッドを呼び出して、現在のインスタンスで検索する文字列を渡す場合は、[StringComparison](xref:System.StringComparison) 型を明示的に指定するオーバーロードを呼び出すことをお勧めします。 [Char](xref:System.Char) 引数を含むオーバーロードでは、[StringComparison](xref:System.StringComparison) 型を指定することはできません。 - -## 間接的に文字列比較を実行するメソッド - -文字列比較を中心的な操作とする非文字列メソッドの中には、[StringComparer](xref:System.StringComparer) 型を使用するものがあります。 [StringComparer](xref:System.StringComparer) クラスには、[StringComparer](xref:System.StringComparer) のインスタンスを返す静的プロパティが 4 つ含まれています。これらのインスタンスの `Compare` メソッドは、次の種類の文字列比較を実行します。 - -* 現在のカルチャを使用する、カルチャに依存した文字列比較。 この [StringComparer](xref:System.StringComparer) オブジェクトは、[StringComparer.CurrentCulture](xref:System.StringComparer.CurrentCulture) プロパティによって返されます。 - -* 現在のカルチャを使用する、大文字と小文字を区別しない比較。 この [StringComparer](xref:System.StringComparer) オブジェクトは、[StringComparer.CurrentCultureIgnoreCase](xref:System.StringComparer.CurrentCultureIgnoreCase) プロパティによって返されます。 - -* 序数に基づく比較。 この [StringComparer](xref:System.StringComparer) オブジェクトは、[StringComparer.Ordinal](xref:System.StringComparer.Ordinal) プロパティによって返されます。 - -* 大文字と小文字を区別しない、序数に基づく比較。 この [StringComparer](xref:System.StringComparer) オブジェクトは、[StringComparer.OrdinalIgnoreCase](xref:System.StringComparer.OrdinalIgnoreCase) プロパティによって返されます。 - -### Array.Sort と Array.BinarySearch - -既定の解釈: [StringComparison.CurrentCulture](xref:System.StringComparison.CurrentCulture)。 - -データをコレクションに格納したり、永続化されたデータをファイルやデータベースからコレクションに読み取ったりするときに現在のカルチャを切り替えると、コレクション内のインバリアントが無効になる可能性があります。 [Array.BinarySearch](xref:System.Array.BinarySearch(System.Array,System.Object)) メソッドでは、配列内で検索する要素が既に並べ替えられていると見なされます。 [Array.Sort](xref:System.Array.Sort(System.Array)) メソッドは、配列内の文字列要素を並べ替えるために、[String] `Compare` メソッドを呼び出して個々の要素を順序付けます。 配列の並べ替えが行われてから内容の検索が行われるまでの間にカルチャが変更される場合、カルチャに依存した比較子を使用するのは危険です。 たとえば、次のコードでは、`Thread.CurrentThread.CurrentCulture` プロパティによって暗黙的に提供される比較子で格納と取得の操作が行われています。 `StoreNames` の呼び出しと `DoesNameExist` の呼び出しの間にカルチャが変更されると (この 2 つのメソッドの呼び出しの間に配列の内容が永続化された場合には特に)、バイナリ サーチが失敗する可能性があります。 - -```csharp -// Incorrect. -string []storedNames; - -public void StoreNames(string [] names) -{ - int index = 0; - storedNames = new string[names.Length]; - - foreach (string name in names) - { - this.storedNames[index++] = name; - } - - Array.Sort(names); // Line A. -} - -public bool DoesNameExist(string name) -{ - return (Array.BinarySearch(this.storedNames, name) >= 0); // Line B. -} -``` - -```vb -' Incorrect. -Dim storedNames() As String - -Public Sub StoreNames(names() As String) - Dim index As Integer = 0 - ReDim storedNames(names.Length - 1) - - For Each name As String In names - Me.storedNames(index) = name - index+= 1 - Next - - Array.Sort(names) ' Line A. -End Sub - -Public Function DoesNameExist(name As String) As Boolean - Return Array.BinarySearch(Me.storedNames, name) >= 0 ' Line B. -End Function -``` - -次の例は、推奨されるバリエーションを示しています。ここでは、配列の並べ替えと検索の両方に、同じ序数に基づく (カルチャに依存しない) 比較メソッドが使用されています。 コードの変更は、2 つの例の `Line A` および `Line B` というラベルが付いた行に反映されています。 - -```csharp -// Correct. -string []storedNames; - -public void StoreNames(string [] names) -{ - int index = 0; - storedNames = new string[names.Length]; - - foreach (string name in names) - { - this.storedNames[index++] = name; - } - - Array.Sort(names, StringComparer.Ordinal); // Line A. -} - -public bool DoesNameExist(string name) -{ - return (Array.BinarySearch(this.storedNames, name, StringComparer.Ordinal) >= 0); // Line B. -} -``` - -```vb -' Correct. -Dim storedNames() As String - -Public Sub StoreNames(names() As String) - Dim index As Integer = 0 - ReDim storedNames(names.Length - 1) - - For Each name As String In names - Me.storedNames(index) = name - index+= 1 - Next - - Array.Sort(names, StringComparer.Ordinal) ' Line A. -End Sub - -Public Function DoesNameExist(name As String) As Boolean - Return Array.BinarySearch(Me.storedNames, name, StringComparer.Ordinal) >= 0 ' Line B. -End Function -``` - -このデータを永続化して別のカルチャのシステムに移動したり、データをユーザーに表示するために並べ替えたりする場合は、`StringComparison.InvariantCulture` を使用することを検討してください。そうすると、ユーザー出力のために言語的な操作を行っても、カルチャの変更による影響を受けることはありません。 次の例では、前の 2 つの例を変更して、配列の並べ替えと検索にインバリアント カルチャを使用しています。 - -```csharp -// Correct. -string []storedNames; - -public void StoreNames(string [] names) -{ - int index = 0; - storedNames = new string[names.Length]; - - foreach (string name in names) - { - this.storedNames[index++] = name; - } - - Array.Sort(names, StringComparer.InvariantCulture); // Line A. -} - -public bool DoesNameExist(string name) -{ - return (Array.BinarySearch(this.storedNames, name, StringComparer.InvariantCulture) >= 0); // Line B. -} -``` - -```vb -' Correct. -Dim storedNames() As String - -Public Sub StoreNames(names() As String) - Dim index As Integer = 0 - ReDim storedNames(names.Length - 1) - - For Each name As String In names - Me.storedNames(index) = name - index+= 1 - Next - - Array.Sort(names, StringComparer.InvariantCulture) ' Line A. -End Sub - -Public Function DoesNameExist(name As String) As Boolean - Return Array.BinarySearch(Me.storedNames, name, StringComparer.InvariantCulture) >= 0 ' Line B. -End Function -``` - -### コレクションの例: Hashtable のコンストラクター - -文字列のハッシュも、文字列の比較方法の影響を受ける操作の 1 つです。 - -次の例では、[StringComparer.OrdinalIgnoreCase](xref:System.StringComparer.OrdinalIgnoreCase) プロパティによって返される [StringComparer](xref:System.StringComparer) オブジェクトを渡すことによって [Hashtable](xref:System.Collections.Hashtable) オブジェクトをインスタンス化します。 [StringComparer](xref:System.StringComparer) から派生するクラス [StringComparer](xref:System.StringComparer)は [IEqualityComparer](xref:System.Collections.IEqualityComparer) インターフェイスを実装するため、その [GetHashCode](xref:System.Collections.IEqualityComparer) メソッドを使用して、ハッシュ テーブルの文字列のハッシュ コードを計算しています。 - -```csharp -const int initialTableCapacity = 100; -Hashtable h; - -public void PopulateFileTable(string directory) -{ - h = new Hashtable(initialTableCapacity, - StringComparer.OrdinalIgnoreCase); - - foreach (string file in Directory.GetFiles(directory)) - h.Add(file, File.GetCreationTime(file)); -} - -public void PrintCreationTime(string targetFile) -{ - Object dt = h[targetFile]; - if (dt != null) - { - Console.WriteLine("File {0} was created at time {1}.", - targetFile, - (DateTime) dt); - } - else - { - Console.WriteLine("File {0} does not exist.", targetFile); - } -} -``` - -```vb -Const initialTableCapacity As Integer = 100 -Dim h As Hashtable - -Public Sub PopulateFileTable(dir As String) - h = New Hashtable(initialTableCapacity, _ - StringComparer.OrdinalIgnoreCase) - - For Each filename As String In Directory.GetFiles(dir) - h.Add(filename, File.GetCreationTime(filename)) - Next -End Sub - -Public Sub PrintCreationTime(targetFile As String) - Dim dt As Object = h(targetFile) - If dt IsNot Nothing Then - Console.WriteLine("File {0} was created at {1}.", _ - targetFile, _ - CDate(dt)) - Else - Console.WriteLine("File {0} does not exist.", targetFile) - End If -End Sub -``` - -## 書式設定されたデータを表示および保持する - -数値、日時など、文字列以外のデータをユーザーに表示するには、ユーザーのカルチャ設定を使用して書式設定します。 既定では、数値型と日時型の [String.Format](xref:System.String.Format(System.IFormatProvider,System.String,System.Object)) メソッドと `ToString` メソッドは、書式設定の操作に現在のスレッド カルチャを使用します。 書式設定メソッドで現在のカルチャを使用することを明示的に指定するには、provider パラメーターを含む書式設定メソッド ([String.Format(IFormatProvider, String, Object[])](xref:System.String.Format(System.IFormatProvider,System.String,System.Object))、[DateTime.ToString(IFormatProvider)](xref:System.DateTime.ToString(System.IFormatProvider)) など) のオーバーロードを呼び出して、そのパラメーターを [CultureInfo.CurrentCulture](xref:System.Globalization.CultureInfo.CurrentCulture) プロパティに渡します。 - -文字列以外のデータは、バイナリ データまたは書式付きデータとして保持できます。 書式付きデータとして保存するには、*provider* パラメーターを含む書式指定メソッドのオーバーロードを呼び出し、そのパラメーターを [CultureInfo.InvariantCulture](xref:System.Globalization.CultureInfo.InvariantCulture) プロパティに渡す必要があります。 インバリアント カルチャは、カルチャとコンピューターに依存しない書式付きデータに一貫した書式を提供します。 これに対し、インバリアント カルチャ以外のカルチャを使用して書式設定するデータの保持には、さまざまな制限があります。 - -* カルチャが異なるシステムでデータを取得したり、現在のシステムのユーザーが現在のカルチャを変更してデータを取得しようとしたりすると、そのデータは使用できない可能性があります。 - -* 特定のコンピューターのカルチャのプロパティは、その標準の値とは異なる場合があります。 常に、ユーザーはカルチャに依存した表示設定をカスタマイズする可能性があります。 このため、ユーザーがカルチャの設定をカスタマイズすると、システムに保存されている書式付きデータが読み取ることができなくなる場合があります。 コンピューター間の書式付きデータの移植性がさらに制限される可能性があります。 - -* 数値や日時の書式設定を制御する国際的、地域的、または国内の標準は時間と共に変化するため、これらの変化はオペレーティング システムの更新プログラムに組み込まれています。 書式設定の規則が変わると、以前の規則に従って書式設定されたデータが読み取ることができなくなる場合があります。 - -次に、カルチャに依存する書式設定を使用してデータを保持すると移植性が制限される例を示します。 この例では、日時の値の配列をファイルに保存します。 これらは、英語 (米国) のカルチャの規則を使用して書式設定されています。 現在のスレッド カルチャがフランス語 (スイス) に変更されると、アプリケーションは現在のカルチャの書式設定規則を使用して保存された値を読み取ることを試みます。 2 つのデータ項目の読み取りを試みると、[FormatException](xref:System.FormatException) 例外がスローされます。日付の配列には、[MinValue](xref:System.DateTime.MinValue) に等しい 2 つの間違った要素が含まれることになります。 - -```csharp -using System; -using System.Globalization; -using System.IO; -using System.Text; -using System.Threading; - -public class Example -{ - private static string filename = @".\dates.dat"; - - public static void Main() - { - DateTime[] dates = { new DateTime(1758, 5, 6, 21, 26, 0), - new DateTime(1818, 5, 5, 7, 19, 0), - new DateTime(1870, 4, 22, 23, 54, 0), - new DateTime(1890, 9, 8, 6, 47, 0), - new DateTime(1905, 2, 18, 15, 12, 0) }; - // Write the data to a file using the current culture. - WriteData(dates); - // Change the current culture. - Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-CH"); - // Read the data using the current culture. - DateTime[] newDates = ReadData(); - foreach (var newDate in newDates) - Console.WriteLine(newDate.ToString("g")); - } - - private static void WriteData(DateTime[] dates) - { - StreamWriter sw = new StreamWriter(filename, false, Encoding.UTF8); - for (int ctr = 0; ctr < dates.Length; ctr++) { - sw.Write("{0}", dates[ctr].ToString("g", CultureInfo.CurrentCulture)); - if (ctr < dates.Length - 1) sw.Write("|"); - } - sw.Close(); - } - - private static DateTime[] ReadData() - { - bool exceptionOccurred = false; - - // Read file contents as a single string, then split it. - StreamReader sr = new StreamReader(filename, Encoding.UTF8); - string output = sr.ReadToEnd(); - sr.Close(); - - string[] values = output.Split( new char[] { '|' } ); - DateTime[] newDates = new DateTime[values.Length]; - for (int ctr = 0; ctr < values.Length; ctr++) { - try { - newDates[ctr] = DateTime.Parse(values[ctr], CultureInfo.CurrentCulture); - } - catch (FormatException) { - Console.WriteLine("Failed to parse {0}", values[ctr]); - exceptionOccurred = true; - } - } - if (exceptionOccurred) Console.WriteLine(); - return newDates; - } -} -// The example displays the following output: -// Failed to parse 4/22/1870 11:54 PM -// Failed to parse 2/18/1905 3:12 PM -// -// 05.06.1758 21:26 -// 05.05.1818 07:19 -// 01.01.0001 00:00 -// 09.08.1890 06:47 -// 01.01.0001 00:00 -// 01.01.0001 00:00 -``` - -```vb -Imports System.Globalization -Imports System.IO -Imports System.Text -Imports System.Threading - -Module Example - Private filename As String = ".\dates.dat" - - Public Sub Main() - Dim dates() As Date = { #5/6/1758 9:26PM#, #5/5/1818 7:19AM#, _ - #4/22/1870 11:54PM#, #9/8/1890 6:47AM#, _ - #2/18/1905 3:12PM# } - ' Write the data to a file using the current culture. - WriteData(dates) - ' Change the current culture. - Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-CH") - ' Read the data using the current culture. - Dim newDates() As Date = ReadData() - For Each newDate In newDates - Console.WriteLine(newDate.ToString("g")) - Next - End Sub - - Private Sub WriteData(dates() As Date) - Dim sw As New StreamWriter(filename, False, Encoding.Utf8) - For ctr As Integer = 0 To dates.Length - 1 - sw.Write("{0}", dates(ctr).ToString("g", CultureInfo.CurrentCulture)) - If ctr < dates.Length - 1 Then sw.Write("|") - Next - sw.Close() - End Sub - - Private Function ReadData() As Date() - Dim exceptionOccurred As Boolean = False - - ' Read file contents as a single string, then split it. - Dim sr As New StreamReader(filename, Encoding.Utf8) - Dim output As String = sr.ReadToEnd() - sr.Close() - - Dim values() As String = output.Split( {"|"c } ) - Dim newDates(values.Length - 1) As Date - For ctr As Integer = 0 To values.Length - 1 - Try - newDates(ctr) = DateTime.Parse(values(ctr), CultureInfo.CurrentCulture) - Catch e As FormatException - Console.WriteLine("Failed to parse {0}", values(ctr)) - exceptionOccurred = True - End Try - Next - If exceptionOccurred Then Console.WriteLine() - Return newDates - End Function -End Module -' The example displays the following output: -' Failed to parse 4/22/1870 11:54 PM -' Failed to parse 2/18/1905 3:12 PM -' -' 05.06.1758 21:26 -' 05.05.1818 07:19 -' 01.01.0001 00:00 -' 09.08.1890 06:47 -' 01.01.0001 00:00 -' 01.01.0001 00:00 -' -``` - -ただし、[DateTime.ToString(String, IFormatProvider)](xref:System.DateTime.ToString(System.String,System.IFormatProvider)) 呼び出しと [DateTime.Parse(String, IFormatProvider)](xref:System.DateTime.Parse(System.String,System.IFormatProvider)) 呼び出しで [CultureInfo.CurrentCulture](xref:System.Globalization.CultureInfo.CurrentCulture) プロパティを [CultureInfo.InvariantCulture](xref:System.Globalization.CultureInfo.InvariantCulture) に置き換えると、保持されている日時データは正常に復元されます。次にその出力を示します。 - -``` -// 06.05.1758 21:26 -// 05.05.1818 07:19 -// 22.04.1870 23:54 -// 08.09.1890 06:47 -// 18.02.1905 15:12 -``` - -## 関連項目 - -[文字列の操作](manipulating-strings.md) - - - - - - +> 埋め込まれた null 文字は、文字列比較メソッドでは無視されますが、文字列検索メソッド \( など\) では無視されません。 + + 次の例では、文字列 "Aa" と、"A" と "a" の間にいくつかの null 文字が埋め込まれた類似の文字列とのカルチャに依存した比較を実行して、2 つの文字列が等価と見なされることを示しています。 + + [!code-csharp[Conceptual.Strings.BestPractices#19](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/embeddednulls1.cs#19)] + [!code-vb[Conceptual.Strings.BestPractices#19](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/embeddednulls1.vb#19)] + + 一方、次の例のように序数に基づく比較を使用すると、これらの文字列は等価とは見なされません。 + + [!code-csharp[Conceptual.Strings.BestPractices#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/embeddednulls2.cs#20)] + [!code-vb[Conceptual.Strings.BestPractices#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/embeddednulls2.vb#20)] + + 序数に基づく比較の次に慎重な方法は、大文字と小文字を区別しない序数に基づく比較です。 この比較では、大文字と小文字の区別のほとんどが無視されます \(たとえば、"windows" と "Windows" は一致します\)。 ASCII 文字を操作する場合、このポリシーは と同等ですが、通常の ASCII の大文字と小文字の区別が無視されます。 したがって、\[A, Z\] \(\\u0041\-\\u005A\) の任意の文字が \[a,z\] \(\\u0061\-\\007A\) の対応する文字と一致します。 ASCII の範囲外の大文字と小文字の区別には、インバリアント カルチャのテーブルが使用されます。 次に例を示します。 + + [!code-csharp[Conceptual.Strings.BestPractices#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/comparison2.cs#4)] + [!code-vb[Conceptual.Strings.BestPractices#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/comparison2.vb#4)] + + この比較は、次の比較と同等です \(ただし、より高速です\)。 + + [!code-csharp[Conceptual.Strings.BestPractices#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/comparison2.cs#5)] + [!code-vb[Conceptual.Strings.BestPractices#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/comparison2.vb#5)] + + とはいえ、これらの比較はどちらも非常に高速です。 + +> [!NOTE] +> ファイル システム、レジストリのキーと値、および環境変数の文字列の動作は、 によって最もよく表現されます。 + + は、どちらもバイナリ値を直接使用するため、照合に最適です。 比較の設定について確信を持てない場合は、この 2 つのいずれかの値を使用してください。 ただし、これらの値を使用するとバイトごとの比較が行われるため、言語的な順序 \(英語の辞書のような順序\) ではなくバイナリの順序で並べ替えが行われます。 したがって、結果をユーザーに表示すると、ほとんどの場合不自然に見えます。 + + 序数に基づくセマンティクスは、 引数を含まない のオーバーロード \(等値演算子を含む\) で既定で使用されます。 どのような場合でも、 パラメーターを持つオーバーロードを呼び出すことをお勧めします。 + +### インバリアント カルチャを使用する文字列操作 + インバリアント カルチャを使用する比較では、静的 プロパティから返される プロパティが使用されます。 この動作は、すべてのシステムで同じです。範囲外の文字は、等価のインバリアント文字と見なされる文字に変換されます。 このポリシーは、同じ文字列動作のセットを複数のカルチャにわたって保持する場合に便利ですが、予期しない結果になることもよくあります。 + + インバリアント カルチャを使用する、大文字と小文字を区別しない比較でも、静的 プロパティから返される静的 プロパティが比較情報として使用されます。 変換後の文字の大文字と小文字の違いは無視されます。 + + を使用する比較と を使用する比較は、ASCII 文字列に対して同じように動作します。 ただし、 では言語的な判断が下されるため、バイト セットとして解釈する必要がある文字列に対しては不適切になることがあります。`CultureInfo.InvariantCulture.CompareInfo` オブジェクトによって、 メソッドで特定の文字のセットが等価と解釈されます。 たとえば、次の例が等価になるのは、インバリアント カルチャでは妥当です。 + + InvariantCulture: a \+ ̊ \= å + + LATIN SMALL LETTER A 文字 "a" \(\\u0061\) は、COMBINING RING ABOVE 文字 "\+ " ̊" \(\\u030a\) の横にある場合、LATIN SMALL LETTER A WITH RING ABOVE 文字 "å" \(\\u00e5\) として解釈されます。 この動作は、次の例に示すように、序数に基づく比較とは異なります。 + + [!code-csharp[Conceptual.Strings.BestPractices#15](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/comparison3.cs#15)] + [!code-vb[Conceptual.Strings.BestPractices#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/comparison3.vb#15)] + + ファイル名やクッキーなど、"å" のような組み合わせが出現する可能性がある要素を解釈する場合にも、序数に基づく比較を使用するのが最も明確かつ適切な方法になります。 + + 結局のところ、インバリアント カルチャには、比較に使用する際に便利なプロパティがほとんどありません。 インバリアント カルチャを使用すると、言語的な意味を持つ形で比較が行われるため、記号の完全な等価性は保証されません。その一方で、特定のカルチャでの表示にも適していません。 を比較に使用する数少ない理由の 1 つは、順序付けされたデータを複数のカルチャで同じように表示するために永続化できることです。 たとえば、表示する並べ替え済みの識別子のリストを含む大きなデータ ファイルがアプリケーションに付属している場合に、そのリストにエントリを追加するには、インバリアント スタイルの並べ替えを使用する挿入が必要になります。 + + [ページのトップへ](#top) + + +## メソッド呼び出しに使用する StringComparison メンバーの選択 + 文字列のセマンティックなコンテキストと 列挙型のメンバーとの対応関係の概要を次の表に示します。 + +|データ|動作|対応する System.StringComparison

値| +|---------|--------|----------------------------------------| +|大文字と小文字が区別される内部識別子。

XML や HTTP などの標準の、大文字と小文字が区別される識別子。

大文字と小文字が区別されるセキュリティ関連の設定。|バイトが正確に一致する非言語的識別子。|| +|大文字と小文字が区別されない内部識別子。

XML や HTTP などの標準の、大文字と小文字が区別されない識別子。

ファイル パス。

レジストリのキーと値。

環境変数。

リソース識別子 \(ハンドル名など\)。

大文字と小文字が区別されないセキュリティ関連の設定。|大文字と小文字が区別されない、言語的な意味を持たない識別子 \(ほとんどの Windows システム サービスで格納されるデータなど\)。|| +|永続化される、言語的な意味を持つデータの一部。

一定の並べ替え順序を必要とする言語的なデータの表示。|カルチャに依存しないが、言語的な意味を持つデータ。|

または

| +|ユーザーに表示されるデータ。

ほとんどのユーザー入力。|特定の言語の規則を必要とするデータ。|

または

| + + [ページのトップへ](#top) + + +## .NET Framework の一般的な文字列比較メソッド + 以降では、文字列比較でよく使用されるメソッドについて説明します。 + +### String.Compare + 既定の解釈: + + このメソッドは文字列解釈の中心的な操作となるため、メソッド呼び出しのすべてのインスタンスを調べて、文字列を現在のカルチャに従って解釈するべきか、カルチャから切り離して \(記号として\) 扱うべきかどうかを確認する必要があります。 ほとんどは後者であるため、その場合は代わりに の比較を使用します。 + + プロパティから返される クラスにも、 フラグ列挙体でさまざまな照合方法 \(序数に基づく、空白文字を無視する、カナ型を無視するなど\) を指定できる メソッドが含まれています。 + +### String.CompareTo + 既定の解釈: + + このメソッドには、現時点では、 型を指定するオーバーロードはありません。 通常は、このメソッドを推奨される の形式に変換できます。 + + このメソッドは、 インターフェイスと インターフェイスを実装する型に実装されます。 このメソッドには パラメーターのオプションがないため、実装する型のコンストラクターで を指定できるようにするのが一般的です。 次の例では、クラス コンストラクターに `FileName` パラメーターを含む クラスを定義しています。 この オブジェクトは、その後、`FileName.CompareTo` メソッドで使用されています。 + + [!code-csharp[Conceptual.Strings.BestPractices#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/api1.cs#6)] + [!code-vb[Conceptual.Strings.BestPractices#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/api1.vb#6)] + +### String.Equals + 既定の解釈: + + クラスで等価性テストを実行するには、 メソッド \(静的メソッドまたはインスタンス メソッド\) のオーバーロードを呼び出すか、静的等値演算子を使用します。 これらのオーバーロードと演算子では、序数に基づく比較が既定で使用されますが、 序数に基づく比較を実行する場合でも、 型を明示的に指定するオーバーロードを呼び出すことをお勧めします。これにより、特定の文字列解釈のコードを検索しやすくなります。 + +### String.ToUpper と String.ToLower + 既定の解釈: + + これらのメソッドを使用するときには注意が必要です。というのも、文字列を大文字や小文字に強制的に変換する操作は、文字列を大文字と小文字の区別に関係なく比較するための小規模の正規化としてよく使用されるからです。 その場合は、大文字と小文字を区別しない比較を使用することを検討してください。 + + メソッドと メソッドを使用することもできます。 は、大文字と小文字を正規化するための標準的な方法です。 を使用して行われる比較は、動作の内容を見ると、両方の文字列引数に対して を呼び出し、 を使用して比較を行うという、2 つの呼び出しの組み合わせです。 + + 特定のカルチャを表す オブジェクトを渡してそのカルチャで大文字および小文字への変換を行うためのオーバーロードもあります。 + +### Char.ToUpper と Char.ToLower + 既定の解釈: + + これらのメソッドの動作は、上で説明した メソッドおよび メソッドと同様です。 + +### String.StartsWith と String.EndsWith + 既定の解釈: + + これらのメソッドは、いずれもカルチャに依存した比較を既定で実行します。 + +### String.IndexOf と String.LastIndexOf + 既定の解釈: + + これらのメソッドの既定のオーバーロードは、比較の実行方法が一貫していません。 パラメーターを含むすべての メソッドと メソッドは、序数に基づく比較を実行します。一方、 パラメーターを含む既定の メソッドと メソッドは、カルチャに依存した比較を実行します。 + + メソッドまたは メソッドを呼び出して、現在のインスタンスで検索する文字列を渡す場合は、 型を明示的に指定するオーバーロードを呼び出すことをお勧めします。 引数を含むオーバーロードでは、 型を指定することはできません。 + + [ページのトップへ](#top) + + +## 間接的に文字列比較を実行するメソッド + 文字列比較を中心的な操作とする非文字列メソッドの中には、 型を使用するものがあります。 クラスには、 のインスタンスを返す静的プロパティが 6 つ含まれています。これらのインスタンスの メソッドは、次の種類の文字列比較を実行します。 + +- 現在のカルチャを使用する、カルチャに依存した文字列比較。 この オブジェクトは、 プロパティによって返されます。 + +- 現在のカルチャを使用する、大文字と小文字を区別しない比較。 この オブジェクトは、 プロパティによって返されます。 + +- インバリアント カルチャの単語ベースの比較規則を使用する、カルチャに依存しない比較。 この オブジェクトは、 プロパティによって返されます。 + +- インバリアント カルチャの単語ベースの比較規則を使用する、大文字と小文字を区別しない、カルチャに依存しない比較。 この オブジェクトは、 プロパティによって返されます。 + +- 序数に基づく比較。 この オブジェクトは、 プロパティによって返されます。 + +- 大文字と小文字を区別しない、序数に基づく比較。 この オブジェクトは、 プロパティによって返されます。 + +### Array.Sort と Array.BinarySearch + 既定の解釈: + + データをコレクションに格納したり、永続化されたデータをファイルやデータベースからコレクションに読み取ったりするときに現在のカルチャを切り替えると、コレクション内のインバリアントが無効になる可能性があります。 メソッドでは、配列内で検索する要素が既に並べ替えられていると見なされます。 メソッドは、配列内の文字列要素を並べ替えるために、 メソッドを呼び出して個々の要素を順序付けます。 配列の並べ替えが行われてから内容の検索が行われるまでの間にカルチャが変更される場合、カルチャに依存した比較子を使用するのは危険です。 たとえば、次のコードでは、`Thread.CurrentThread.CurrentCulture` プロパティによって暗黙的に提供される比較子で格納と取得の操作が行われています。`StoreNames` の呼び出しと `DoesNameExist` の呼び出しの間にカルチャが変更されると \(この 2 つのメソッドの呼び出しの間に配列の内容が永続化された場合には特に\)、バイナリ サーチが失敗する可能性があります。 + + [!code-csharp[Conceptual.Strings.BestPractices#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/indirect1.cs#7)] + [!code-vb[Conceptual.Strings.BestPractices#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/indirect1.vb#7)] + + 次の例は、推奨されるバリエーションを示しています。ここでは、配列の並べ替えと検索の両方に、同じ序数に基づく \(カルチャに依存しない\) 比較メソッドが使用されています。 コードの変更は、2 つの例の `Line A` および `Line B` というラベルが付いた行に反映されています。 + + [!code-csharp[Conceptual.Strings.BestPractices#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/indirect1.cs#8)] + [!code-vb[Conceptual.Strings.BestPractices#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/indirect1.vb#8)] + + このデータを永続化して別のカルチャのシステムに移動したり、データをユーザーに表示するために並べ替えたりする場合は、 を使用することを検討してください。そうすると、ユーザー出力のために言語的な操作を行っても、カルチャの変更による影響を受けることはありません。 次の例では、前の 2 つの例を変更して、配列の並べ替えと検索にインバリアント カルチャを使用しています。 + + [!code-csharp[Conceptual.Strings.BestPractices#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/indirect1.cs#9)] + [!code-vb[Conceptual.Strings.BestPractices#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/indirect1.vb#9)] + +### コレクションの例: Hashtable のコンストラクター + 文字列のハッシュも、文字列の比較方法の影響を受ける操作の 1 つです。 + + 次の例では、 プロパティから返される オブジェクトを渡して オブジェクトをインスタンス化しています。 から派生するクラス インターフェイスを実装するため、その メソッドを使用して、ハッシュ テーブルの文字列のハッシュ コードを計算しています。 + + [!code-csharp[Conceptual.Strings.BestPractices#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/indirect2.cs#10)] + [!code-vb[Conceptual.Strings.BestPractices#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/indirect2.vb#10)] + + [ページのトップへ](#top) + + +## 書式設定されたデータを表示および保持する + 数値、日時など、文字列以外のデータをユーザーに表示するには、ユーザーのカルチャ設定を使用して書式設定します。 既定では、数値型と日時型の メソッドと `ToString` メソッドは、書式設定の操作に現在のスレッド カルチャを使用します。 書式指定メソッドで現在のカルチャを使用することを明示的に指定するには、`provider` パラメーターを含む書式指定メソッド \([String.Format\(IFormatProvider, String, Object\ など\) のオーバーロードを呼び出し、そのパラメーターを プロパティに渡すことができます。 + + 文字列以外のデータは、バイナリ データまたは書式付きデータとして保持できます。 書式付きデータとして保存するには、`provider` パラメーターを含む書式指定メソッドのオーバーロードを呼び出し、そのパラメーターを プロパティに渡す必要があります。 インバリアント カルチャは、カルチャとコンピューターに依存しない書式付きデータに一貫した書式を提供します。 これに対し、インバリアント カルチャ以外のカルチャを使用して書式設定するデータの保持には、さまざまな制限があります。 + +- カルチャが異なるシステムでデータを取得したり、現在のシステムのユーザーが現在のカルチャを変更してデータを取得しようとしたりすると、そのデータは使用できない可能性があります。 + +- 特定のコンピューターのカルチャのプロパティは、その標準の値とは異なる場合があります。 常に、ユーザーはカルチャに依存した表示設定をカスタマイズする可能性があります。 このため、ユーザーがカルチャの設定をカスタマイズすると、システムに保存されている書式付きデータが読み取ることができなくなる場合があります。 コンピューター間の書式付きデータの移植性がさらに制限される可能性があります。 + +- 数値や日時の書式設定を制御する国際的、地域的、または国内の標準は時間と共に変化するため、これらの変化は Windows オペレーティング システムの更新プログラムに組み込まれています。 書式設定の規則が変わると、以前の規則に従って書式設定されたデータが読み取ることができなくなる場合があります。 + + 次に、カルチャに依存する書式設定を使用してデータを保持すると移植性が制限される例を示します。 この例では、日時の値の配列をファイルに保存します。 これらは、英語 \(米国\) のカルチャの規則を使用して書式設定されています。 現在のスレッド カルチャがフランス語 \(スイス\) に変更されると、アプリケーションは現在のカルチャの書式設定規則を使用して保存された値を読み取ることを試みます。 2 つのデータ項目の読み取りを試みると、 例外がスローされます。日付の配列には、 に等しい 2 つの間違った要素が含まれることになります。 + + [!code-csharp[Conceptual.Strings.BestPractices#21](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.bestpractices/cs/persistence.cs#21)] + [!code-vb[Conceptual.Strings.BestPractices#21](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.bestpractices/vb/persistence.vb#21)] + + しかし、 プロパティを に置き換えて 呼び出しと 呼び出しを行うと、保持されている日時データは正常に復元されます。次にその出力を示します。 + +``` + +06.05.1758 21:26 +05.05.1818 07:19 +22.04.1870 23:54 +08.09.1890 06:47 +18.02.1905 15:12 + +``` + +## 参照 + [文字列の操作](../../../docs/standard/base-types/manipulating-strings.md) \ No newline at end of file diff --git a/docs/standard/base-types/best-practices.md b/docs/standard/base-types/best-practices.md index ad6e8d06b60..9cec5898f3f 100644 --- a/docs/standard/base-types/best-practices.md +++ b/docs/standard/base-types/best-practices.md @@ -1,1106 +1,301 @@ --- -title: "正規表現に関するベスト プラクティス" -description: "正規表現に関するベスト プラクティス" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 096fd614-91bf-4296-be24-12f62b062294 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: cf9c83de791fa4990a991689a26d4bbdd84cfe7d -ms.lasthandoff: 03/02/2017 - ---- - -# 正規表現に関するベスト プラクティス - -.NET の正規表現エンジンは、リテラル テキストの比較と照合ではなくパターン一致に基づいてテキストを処理する、完全な機能を備えた強力なツールです。 ほとんどの場合は、すばやく効率的にパターン一致が実行されますが、 処理が非常に遅く見えることもあります。 極端なケースでは、比較的小さな入力の処理に何時間も何日もかかり、応答しなくなったように見えることさえあります。 - -ここでは、正規表現で最適なパフォーマンスを確保するためのいくつかのベスト プラクティスの概要を説明します。 このチュートリアルは、次のセクションで構成されています。 - -* [入力ソースを考慮に入れる](#consider-the-input-source) - -* [オブジェクトのインスタンス化を適切に処理する](#handle-object-instantiation-appropriately) - -* [バックトラッキングを管理する](#take-charge-of-backtracking) - -* [タイムアウト値を使用する](#use-time-out-values) - -* [必要なときにのみキャプチャする](#capture-only-when-necessary) - -* [関連トピック](#related-topics) - -## 入力ソースを考慮に入れる - -一般に、正規表現で受け入れられる入力には、制約のある入力と制約のない入力の&2; 種類があります。 制約のある入力とは、あらかじめ定義された形式に従っている、既知のソースまたは信頼できるソースからのテキストです。 制約のない入力とは、あらかじめ定義された形式や予想される形式に従っていない可能性のある、不確実なソース (Web ユーザーなど) からのテキストです。 - -正規表現パターンは、有効な入力に一致するように記述されるのが一般的です。 開発者はまず、対象となるテキストを調査して、そのテキストに一致する正規表現パターンを記述します。 記述が完了すると、そのパターンを複数の有効な入力項目でテストして、修正や改善が必要かどうかを確認します。 想定されるすべての有効な入力に一致するようになったら、そのパターンは運用環境で使用する準備が整ったと見なされ、リリースされるアプリケーションに含めることができます。 こうして作成された正規表現パターンは、制約のある入力との照合には適していますが、 制約のない入力との照合に適しているとは言えません。 - -制約のない入力と照合する正規表現は、次の&3; 種類のテキストを効率的に処理できなければなりません。 - -• 正規表現パターンに一致するテキスト。 - -• 正規表現パターンに一致しないテキスト。 - -• 正規表現パターンにほぼ一致するテキスト。 - -制約のある入力を処理するために記述された正規表現で特に問題となるのは、最後の種類のテキストです。 その正規表現が広範な[バックトラッキング](backtracking.md)にも依存している場合、一見何の問題もないように見えるテキストの処理に極端に長い時間 (場合によっては何時間も何日も) が費やされる可能性があります。 - +title: ".NET Framework での正規表現に関するベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, 推奨される手順" + - "正規表現, 推奨される手順" +ms.assetid: 618e5afb-3a97-440d-831a-70e4c526a51c +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# .NET Framework での正規表現に関するベスト プラクティス +.NET Framework の正規表現エンジンは、リテラル テキストの比較と照合ではなくパターン一致に基づいてテキストを処理する、完全な機能を備えた強力なツールです。 ほとんどの場合は、すばやく効率的にパターン一致が実行されますが、 処理が非常に遅く見えることもあります。 極端なケースでは、比較的小さな入力の処理に何時間も何日もかかり、応答しなくなったように見えることさえあります。 + + ここでは、正規表現で最適なパフォーマンスを確保するためのいくつかのベスト プラクティスの概要を説明します。 このチュートリアルは、次のセクションで構成されています。 + +- [入力ソースを考慮に入れる](#InputSource) + +- [オブジェクトのインスタンス化を適切に処理する](#ObjectInstantiation) + +- [バックトラッキングを管理する](#Backtracking) + +- [タイムアウト値を使用する](#Timeouts) + +- [必要なときにのみキャプチャする](#Capture) + +- [関連トピック](#RelatedTopics) + + +## 入力ソースを考慮に入れる + 一般に、正規表現で受け入れられる入力には、制約のある入力と制約のない入力の 2 種類があります。 制約のある入力とは、あらかじめ定義された形式に従っている、既知のソースまたは信頼できるソースからのテキストです。 制約のない入力とは、あらかじめ定義された形式や予想される形式に従っていない可能性のある、不確実なソース \(Web ユーザーなど\) からのテキストです。 + + 正規表現パターンは、有効な入力に一致するように記述されるのが一般的です。 開発者はまず、対象となるテキストを調査して、そのテキストに一致する正規表現パターンを記述します。 記述が完了すると、そのパターンを複数の有効な入力項目でテストして、修正や改善が必要かどうかを確認します。 想定されるすべての有効な入力に一致するようになったら、そのパターンは運用環境で使用する準備が整ったと見なされ、リリースされるアプリケーションに含めることができます。 こうして作成された正規表現パターンは、制約のある入力との照合には適していますが、 制約のない入力との照合に適しているとは言えません。 + + 制約のない入力と照合する正規表現は、次の 3 種類のテキストを効率的に処理できなければなりません。 + +- 正規表現パターンに一致するテキスト。 + +- 正規表現パターンに一致しないテキスト。 + +- 正規表現パターンにほぼ一致するテキスト。 + + 制約のある入力を処理するために記述された正規表現で特に問題となるのは、最後の種類のテキストです。 その正規表現が広範な[バックトラッキング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md)にも依存している場合、一見何の問題もないように見えるテキストの処理に極端に長い時間 \(場合によっては何時間も何日も\) が費やされる可能性があります。 + > [!WARNING] -> 次の例では、過度なバックトラッキングを生じる傾向があり、有効な電子メール アドレスを拒否する可能性がある正規表現を使用します。 電子メールの検証ルーチンで使用しないでください。 メール アドレスを検証する正規表現が必要な場合は、「[方法: 文字列が有効な電子メール形式であるかどうかを検証する](verify-format.md)」を参照してください。 - - -例として、電子メール アドレスのエイリアスを検証するための正規表現について見てみましょう。このような正規表現はよく使用されますが、きわめて大きな問題もはらんでいます。 有効と見なされる電子メール アドレスを処理するために、`^[0-9A-Z]([-.\w]*[0-9A-Z])*$` という正規表現を記述したとします。有効な電子メール アドレスは、英数字で始まり、その後に&0; 個以上の文字 (英数字、ピリオド、またはハイフン) が続きます。 また、正規表現は英数字で終了する必要があります。 この正規表現は、次の例に示すように、有効な入力は簡単に処理できますが、有効に近い入力を処理するときに極端に処理効率が低下します。 - -```csharp -using System; -using System.Diagnostics; -using System.Text.RegularExpressions; - -public class Example -{ - public static void Main() - { - Stopwatch sw; - string[] addresses = { "AAAAAAAAAAA@contoso.com", - "AAAAAAAAAAaaaaaaaaaa!@contoso.com" }; - // The following regular expression should not actually be used to - // validate an email address. - string pattern = @"^[0-9A-Z]([-.\w]*[0-9A-Z])*$"; - string input; - - foreach (var address in addresses) { - string mailBox = address.Substring(0, address.IndexOf("@")); - int index = 0; - for (int ctr = mailBox.Length - 1; ctr >= 0; ctr--) { - index++; - - input = mailBox.Substring(ctr, index); - sw = Stopwatch.StartNew(); - Match m = Regex.Match(input, pattern, RegexOptions.IgnoreCase); - sw.Stop(); - if (m.Success) - Console.WriteLine("{0,2}. Matched '{1,25}' in {2}", - index, m.Value, sw.Elapsed); - else - Console.WriteLine("{0,2}. Failed '{1,25}' in {2}", - index, input, sw.Elapsed); - } - Console.WriteLine(); - } - } -} - -// The example displays output similar to the following: -// 1. Matched ' A' in 00:00:00.0007122 -// 2. Matched ' AA' in 00:00:00.0000282 -// 3. Matched ' AAA' in 00:00:00.0000042 -// 4. Matched ' AAAA' in 00:00:00.0000038 -// 5. Matched ' AAAAA' in 00:00:00.0000042 -// 6. Matched ' AAAAAA' in 00:00:00.0000042 -// 7. Matched ' AAAAAAA' in 00:00:00.0000042 -// 8. Matched ' AAAAAAAA' in 00:00:00.0000087 -// 9. Matched ' AAAAAAAAA' in 00:00:00.0000045 -// 10. Matched ' AAAAAAAAAA' in 00:00:00.0000045 -// 11. Matched ' AAAAAAAAAAA' in 00:00:00.0000045 -// -// 1. Failed ' !' in 00:00:00.0000447 -// 2. Failed ' a!' in 00:00:00.0000071 -// 3. Failed ' aa!' in 00:00:00.0000071 -// 4. Failed ' aaa!' in 00:00:00.0000061 -// 5. Failed ' aaaa!' in 00:00:00.0000081 -// 6. Failed ' aaaaa!' in 00:00:00.0000126 -// 7. Failed ' aaaaaa!' in 00:00:00.0000359 -// 8. Failed ' aaaaaaa!' in 00:00:00.0000414 -// 9. Failed ' aaaaaaaa!' in 00:00:00.0000758 -// 10. Failed ' aaaaaaaaa!' in 00:00:00.0001462 -// 11. Failed ' aaaaaaaaaa!' in 00:00:00.0002885 -// 12. Failed ' Aaaaaaaaaaa!' in 00:00:00.0005780 -// 13. Failed ' AAaaaaaaaaaa!' in 00:00:00.0011628 -// 14. Failed ' AAAaaaaaaaaaa!' in 00:00:00.0022851 -// 15. Failed ' AAAAaaaaaaaaaa!' in 00:00:00.0045864 -// 16. Failed ' AAAAAaaaaaaaaaa!' in 00:00:00.0093168 -// 17. Failed ' AAAAAAaaaaaaaaaa!' in 00:00:00.0185993 -// 18. Failed ' AAAAAAAaaaaaaaaaa!' in 00:00:00.0366723 -// 19. Failed ' AAAAAAAAaaaaaaaaaa!' in 00:00:00.1370108 -// 20. Failed ' AAAAAAAAAaaaaaaaaaa!' in 00:00:00.1553966 -// 21. Failed ' AAAAAAAAAAaaaaaaaaaa!' in 00:00:00.3223372 -``` - -```vb -Imports System.Diagnostics -Imports System.Text.RegularExpressions - -Module Example - Public Sub Main() - Dim sw As Stopwatch - Dim addresses() As String = { "AAAAAAAAAAA@contoso.com", - "AAAAAAAAAAaaaaaaaaaa!@contoso.com" } - ' The following regular expression should not actually be used to - ' validate an email address. - Dim pattern As String = "^[0-9A-Z]([-.\w]*[0-9A-Z])*$" - Dim input As String - - For Each address In addresses - Dim mailBox As String = address.Substring(0, address.IndexOf("@")) - Dim index As Integer = 0 - For ctr As Integer = mailBox.Length - 1 To 0 Step -1 - index += 1 - input = mailBox.Substring(ctr, index) - sw = Stopwatch.StartNew() - Dim m As Match = Regex.Match(input, pattern, RegexOptions.IgnoreCase) - sw.Stop() - if m.Success Then - Console.WriteLine("{0,2}. Matched '{1,25}' in {2}", - index, m.Value, sw.Elapsed) - Else - Console.WriteLine("{0,2}. Failed '{1,25}' in {2}", - index, input, sw.Elapsed) - End If - Next - Console.WriteLine() - Next - End Sub -End Module -' The example displays output similar to the following: -' 1. Matched ' A' in 00:00:00.0007122 -' 2. Matched ' AA' in 00:00:00.0000282 -' 3. Matched ' AAA' in 00:00:00.0000042 -' 4. Matched ' AAAA' in 00:00:00.0000038 -' 5. Matched ' AAAAA' in 00:00:00.0000042 -' 6. Matched ' AAAAAA' in 00:00:00.0000042 -' 7. Matched ' AAAAAAA' in 00:00:00.0000042 -' 8. Matched ' AAAAAAAA' in 00:00:00.0000087 -' 9. Matched ' AAAAAAAAA' in 00:00:00.0000045 -' 10. Matched ' AAAAAAAAAA' in 00:00:00.0000045 -' 11. Matched ' AAAAAAAAAAA' in 00:00:00.0000045 -' -' 1. Failed ' !' in 00:00:00.0000447 -' 2. Failed ' a!' in 00:00:00.0000071 -' 3. Failed ' aa!' in 00:00:00.0000071 -' 4. Failed ' aaa!' in 00:00:00.0000061 -' 5. Failed ' aaaa!' in 00:00:00.0000081 -' 6. Failed ' aaaaa!' in 00:00:00.0000126 -' 7. Failed ' aaaaaa!' in 00:00:00.0000359 -' 8. Failed ' aaaaaaa!' in 00:00:00.0000414 -' 9. Failed ' aaaaaaaa!' in 00:00:00.0000758 -' 10. Failed ' aaaaaaaaa!' in 00:00:00.0001462 -' 11. Failed ' aaaaaaaaaa!' in 00:00:00.0002885 -' 12. Failed ' Aaaaaaaaaaa!' in 00:00:00.0005780 -' 13. Failed ' AAaaaaaaaaaa!' in 00:00:00.0011628 -' 14. Failed ' AAAaaaaaaaaaa!' in 00:00:00.0022851 -' 15. Failed ' AAAAaaaaaaaaaa!' in 00:00:00.0045864 -' 16. Failed ' AAAAAaaaaaaaaaa!' in 00:00:00.0093168 -' 17. Failed ' AAAAAAaaaaaaaaaa!' in 00:00:00.0185993 -' 18. Failed ' AAAAAAAaaaaaaaaaa!' in 00:00:00.0366723 -' 19. Failed ' AAAAAAAAaaaaaaaaaa!' in 00:00:00.1370108 -' 20. Failed ' AAAAAAAAAaaaaaaaaaa!' in 00:00:00.1553966 -' 21. Failed ' AAAAAAAAAAaaaaaaaaaa!' in 00:00:00.3223372 -``` - -この出力を見るとわかるように、有効な電子メール エイリアスは、その長さに関係なくほとんど同じ時間で処理されます。 一方、有効に近い電子メール アドレスでは、長さが&5; 文字を超えると、文字列の文字が&1; 文字増えるたびに処理時間が約&2; 倍に増加します。 つまり、有効に近い文字列の長さが 28 文字になると処理に 1 時間以上かかり、33 文字になるとほぼ 1 日かかることになります。 - -この正規表現は、一致する入力の形式ばかりを念頭に置いて開発されていて、パターンに一致しない入力のことが考慮されていません。 そのため、制約のない入力が正規表現パターンにほぼ一致する場合に、パフォーマンスが大幅に低下する可能性があります。 - -この問題を解決する方法を以下に示します。 - -* パターンを開発するときには、バックトラッキングが正規表現エンジンのパフォーマンスに与える影響を考慮に入れます。特に、制約のない入力を処理する正規表現ではこれが重要です。 詳細については、このトピックの「[バックトラッキングを管理する](#take-charge-of-backtracking)」を参照してください。 - -* 有効な入力だけでなく、無効な入力と有効に近い入力も使用して、正規表現を徹底的にテストします。 特定の正規表現に対する入力をランダムに生成するには、Microsoft Research の正規表現調査ツール [Rex](http://research.microsoft.com/en-us/projects/rex/) を使用できます。 - -## オブジェクトのインスタンス化を適切に処理する - -.NET の正規表現オブジェクト モデルの中核となるのは、正規表現エンジンを表す [System.Text.RegularExpressions.Regex](xref:System.Text.RegularExpressions.Regex) クラスです。 [Regex](xref:System.Text.RegularExpressions.Regex) エンジンの使用方法は、多くの場合、正規表現のパフォーマンスを左右する最大の要因になります。 正規表現を定義するときには、正規表現エンジンと正規表現パターンを密に結合する必要があります。 この結合のプロセスは、正規表現パターンをコンストラクターに渡して [Regex](xref:System.Text.RegularExpressions.Regex) オブジェクトをインスタンス化する場合も、分析する文字列と共に正規表現パターンを渡して静的メソッドを呼び出す場合も、必然的にコストが高くなります。 - -正規表現エンジンを特定の正規表現パターンと結合し、そのエンジンを使用してテキストを照合するには、次のようにいくつかの方法があります。 - -* パターン一致を実行する静的メソッド [Regex.Match(String, String)](xref:System.Text.RegularExpressions.Regex.Match(System.String,System.String)) などを呼び出します。 この場合は、正規表現オブジェクトをインスタンス化する必要はありません。 - -* [Regex](xref:System.Text.RegularExpressions.Regex) オブジェクトをインスタンス化し、解釈される正規表現のパターン一致を実行するインスタンス メソッドを呼び出します。 これは、正規表現エンジンを正規表現パターンにバインドするための既定の方法です。 [RegexOptions.Compiled](xref:System.Text.RegularExpressions.RegexOptions.Compiled) フラグを含むオプション引数を使用せずに [Regex](xref:System.Text.RegularExpressions.Regex) オブジェクトがインスタンス化された場合にこのようになります。 - -* [Regex](xref:System.Text.RegularExpressions.Regex) オブジェクトをインスタンス化し、コンパイルされた正規表現のパターン一致を実行するインスタンス メソッドを呼び出します。 [Regex](xref:System.Text.RegularExpressions.Regex) オブジェクトをインスタンス化するときに、[RegexOptions.Compiled](xref:System.Text.RegularExpressions.RegexOptions.Compiled) フラグを含むオプション引数を指定した場合、正規表現オブジェクトはコンパイル済みのパターンを表します。 - +> 次の例では、過度なバックトラッキングを生じる傾向があり、有効な電子メール アドレスを拒否する可能性がある正規表現を使用します。 電子メールの検証ルーチンで使用しないでください。 電子メール アドレスを検証する正規表現が必要な場合は、「[方法 : 文字列が有効な電子メール形式であるかどうかを検証する](../../../docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md)」を参照してください。 + + 例として、電子メール アドレスのエイリアスを検証するための正規表現について見てみましょう。このような正規表現はよく使用されますが、きわめて大きな問題もはらんでいます。 有効と見なされる電子メール アドレスを処理するために、`^[0-9A-Z]([-.\w]*[0-9A-Z])*$` という正規表現を記述したとします。有効な電子メール アドレスは、英数字で始まり、その後に 0 個以上の文字 \(英数字、ピリオド、またはハイフン\) が続きます。 また、正規表現は英数字で終了する必要があります。 この正規表現は、次の例に示すように、有効な入力は簡単に処理できますが、有効に近い入力を処理するときに極端に処理効率が低下します。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/design2.cs#1)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/design2.vb#1)] + + この出力を見るとわかるように、有効な電子メール エイリアスは、その長さに関係なくほとんど同じ時間で処理されます。 一方、有効に近い電子メール アドレスでは、長さが 5 文字を超えると、文字列の文字が 1 文字増えるたびに処理時間が約 2 倍に増加します。 つまり、有効に近い文字列の長さが 28 文字になると処理に 1 時間以上かかり、33 文字になるとほぼ 1 日かかることになります。 + + この正規表現は、一致する入力の形式ばかりを念頭に置いて開発されていて、パターンに一致しない入力のことが考慮されていません。 そのため、制約のない入力が正規表現パターンにほぼ一致する場合に、パフォーマンスが大幅に低下する可能性があります。 + + この問題を解決する方法を以下に示します。 + +- パターンを開発するときには、バックトラッキングが正規表現エンジンのパフォーマンスに与える影響を考慮に入れます。特に、制約のない入力を処理する正規表現ではこれが重要です。 詳細については、このトピックの「[バックトラッキングを管理する](#Backtracking)」を参照してください。 + +- 有効な入力だけでなく、無効な入力と有効に近い入力も使用して、正規表現を徹底的にテストします。 特定の正規表現に対する入力をランダムに生成するには、Microsoft Research の正規表現調査ツール [Rex](http://go.microsoft.com/fwlink/?LinkId=210756) を使用できます。 + + [ページのトップへ](#top) + + +## オブジェクトのインスタンス化を適切に処理する + .NET Framework の正規表現オブジェクト モデルの中核となるのは、正規表現エンジンを表す クラスです。 エンジンの使用方法は、多くの場合、正規表現のパフォーマンスを左右する最大の要因になります。 正規表現を定義するときには、正規表現エンジンと正規表現パターンを密に結合する必要があります。 この結合のプロセスは、正規表現パターンをコンストラクターに渡して オブジェクトをインスタンス化する場合も、分析する文字列と共に正規表現パターンを渡して静的メソッドを呼び出す場合も、必然的にコストが高くなります。 + +> [!NOTE] +> 解釈される正規表現を使用する場合とコンパイルされる正規表現を使用する場合のパフォーマンスへの影響に関する詳細な議論については、BCL チームのブログの「[正規表現のパフォーマンスの最適化、パート II: バックトラッキングの管理](http://go.microsoft.com/fwlink/?LinkId=211566)」を参照してください。 + + 正規表現エンジンを特定の正規表現パターンと結合し、そのエンジンを使用してテキストを照合するには、次のようにいくつかの方法があります。 + +- パターン一致を実行する静的メソッド \( など\) を呼び出します。 この場合は、正規表現オブジェクトをインスタンス化する必要はありません。 + +- オブジェクトをインスタンス化し、解釈される正規表現のパターン一致を実行するインスタンス メソッドを呼び出します。 これは、正規表現エンジンを正規表現パターンにバインドするための既定の方法です。 オブジェクトをインスタンス化するときに、`options` フラグを含む 引数を指定しないと、この方法が使用されます。 + +- オブジェクトをインスタンス化し、コンパイルされた正規表現のパターン一致を実行するインスタンス メソッドを呼び出します。 オブジェクトをインスタンス化するときに、`options` フラグを含む 引数を指定した場合、正規表現オブジェクトはコンパイル済みのパターンを表します。 + +- 特定の正規表現パターンと密に結合された専用の オブジェクトを作成し、コンパイルして、スタンドアロンのアセンブリに保存します。 これを行うには、 メソッドを呼び出します。 + + 正規表現の一致メソッドを呼び出す方法は、アプリケーションのパフォーマンスに大きな影響を与える可能性があります。 以降では、アプリケーションのパフォーマンスを改善するために、静的メソッドの呼び出し、解釈される正規表現、およびコンパイルされる正規表現を使い分ける方法について説明します。 + > [!IMPORTANT] -> メソッド呼び出しの形式 (静的、解釈、コンパイル) は、メソッド呼び出しで同じ正規表現が繰り返し使用される場合や、アプリケーションで正規表現オブジェクトが多用される場合に、パフォーマンスに影響を与えます。 - -### 静的正規表現 - -静的正規表現メソッドは、正規表現オブジェクトを同じ正規表現で繰り返しインスタンス化する代わりの方法として推奨されます。 正規表現オブジェクトで使用される正規表現パターンとは異なり、インスタンス メソッドの呼び出しで使用されるパターンの場合は、そのオペレーション コードまたはコンパイルされた Microsoft Intermediate Language (MSIL) が正規表現エンジンによって内部にキャッシュされます。 - -たとえば、ユーザー入力を検証するメソッドを呼び出すことができます。 この例では `IsValidCurrency` という名前のメソッドが、ユーザーが少なくとも&1; つの&10; 進数を通貨記号の後に入力したかどうかを確認します。 次の例は、`IsValidCurrency` メソッドのきわめて非効率的な実装を示しています。 この例では、このメソッドが呼び出されるたびに [Regex](xref:System.Text.RegularExpressions.Regex) オブジェクトが同じパターンでインスタンス化されます。 そのため、メソッドが呼び出されるたびに正規表現パターンを再コンパイルしなければならなくなります。 - -```csharp -using System; -using System.Text.RegularExpressions; - -public class RegexLib -{ - public static bool IsValidCurrency(string currencyValue) - { - string pattern = @"\p{Sc}+\s*\d+"; - Regex currencyRegex = new Regex(pattern); - return currencyRegex.IsMatch(currencyValue); - } -} -``` - -```vb -Public Sub OKButton_Click(sender As Object, e As EventArgs) _ - Handles OKButton.Click - - If Not String.IsNullOrEmpty(sourceCurrency.Text) Then - If RegexLib.IsValidCurrency(sourceCurrency.Text) Then - PerformConversion() - Else - status.Text = "The source currency value is invalid." - End If - End If -End Sub -``` - -この非効率的なコードは、静的な [Regex.IsMatch(String, String)](xref:System.Text.RegularExpressions.Regex.IsMatch(System.String,System.String)) メソッドの呼び出しに置き換える必要があります。 これにより、パターン一致メソッドを呼び出すたびに [Regex](xref:System.Text.RegularExpressions.Regex) オブジェクトをインスタンス化する必要がなくなり、正規表現エンジンがキャッシュからコンパイル済みの正規表現を取得できるようになります。 - -```csharp -using System; -using System.Text.RegularExpressions; - -public class RegexLib -{ - public static bool IsValidCurrency(string currencyValue) - { - string pattern = @"\p{Sc}+\s*\d+"; - return Regex.IsMatch(currencyValue, pattern); - } -} -``` - -```vb -Imports System.Text.RegularExpressions - -Public Module RegexLib - Public Function IsValidCurrency(currencyValue As String) As Boolean - Dim pattern As String = "\p{Sc}+\s*\d+" - Return Regex.IsMatch(currencyValue, pattern) - End Function -End Module -``` - -既定では、最近使用された静的正規表現パターンが 15 個までキャッシュされます。 アプリケーションで多数の静的正規表現をキャッシュする必要がある場合は、[Regex.CacheSize](xref:System.Text.RegularExpressions.Regex.CacheSize) プロパティを設定してキャッシュのサイズを調整できます。 - -この例で使用されている正規表現 `\p{Sc}+\s*\d+` は、入力文字列が通貨記号と&1; 文字以上の&10; 進数の数字で構成されているかどうかを確認します。 このパターンは、次の表に示すように定義されます。 - -パターン | 説明 -------- | ----------- -`\p{Sc}+` | Unicode の Symbol, Currency カテゴリの&1; 個以上の文字と一致します。 -`\s*` | 0 個以上の空白文字と一致します。 -`\d+` | 1 個以上の&10; 進数と一致します。 - -### 解釈される正規表現とコンパイルされる正規表現 - -[RegexOptions.Compiled](xref:System.Text.RegularExpressions.RegexOptions.Compiled) オプションを指定して正規表現エンジンにバインドされていない正規表現パターンは、解釈されます。 正規表現オブジェクトがインスタンス化されるとき、正規表現エンジンは、その正規表現を一連のオペレーション コードに変換します。 インスタンス メソッドが呼び出されると、オペレーション コードが MSIL に変換され、JIT コンパイラによって実行されます。 同様に、静的正規表現メソッドが呼び出され、その正規表現がキャッシュに見つからない場合、正規表現エンジンは、その正規表現を一連のオペレーション コードに変換し、キャッシュに格納します。 それらのオペレーション コードは、その後、JIT コンパイラで実行できるように MSIL に変換されます。 解釈される正規表現では、実行時間が長くなる代わりに、スタートアップ時間が短縮されます。 このため、正規表現を使用するメソッドの呼び出し回数が少ない場合、または正確な回数はわからなくても少ないと予想される場合に適しています。 メソッド呼び出しの回数が増えるにつれて、スタートアップ時間の短縮というメリットよりも、実行速度の低下というデメリットの方が大きくなります。 - -[RegexOptions.Compiled](xref:System.Text.RegularExpressions.RegexOptions.Compiled) オプションを指定して正規表現エンジンにバインドされている正規表現パターンは、コンパイルされます。 つまり、正規表現オブジェクトがインスタンス化されるとき、または静的正規表現メソッドが呼び出され、その正規表現がキャッシュに見つからないとき、正規表現エンジンは、その正規表現を一連の中間的なオペレーション コードに変換し、さらに MSIL に変換します。 メソッドが呼び出されると、その MSIL が JIT コンパイラによって実行されます。 コンパイルされる正規表現では、解釈される正規表現とは対照的に、スタートアップ時間が長くなる一方で、個々のパターン一致メソッドの実行時間は短くなります。 結果として、正規表現のコンパイルによって得られるパフォーマンス上のメリットは、正規表現メソッドが呼び出される回数に比例して大きくなります。 - -要約すると、特定の正規表現について正規表現メソッドを呼び出す回数が比較的少ない場合は、解釈される正規表現を使用することをお勧めします。 特定の正規表現について正規表現メソッドを呼び出す回数が比較的多い場合は、コンパイルされる正規表現を使用することをお勧めします。 解釈される正規表現で実行速度の低下がスタートアップ時間の短縮を上回るしきい値や、コンパイルされる正規表現でスタートアップ時間の増加が実行速度の向上を上回るしきい値については、正確な値を特定するのは困難です。 これは、正規表現の複雑さや、処理される個々のデータなど、さまざまな要因に依存します。 特定のアプリケーションのシナリオにおいて、解釈される正規表現とコンパイルされる正規表現のどちらで最適なパフォーマンスが得られるかを特定するには、[Stopwatch](xref:System.Diagnostics.Stopwatch) クラスを使用して実行時間を比較します。 - -次の例では、Theodore Dreiser の『The Financier』の最初の&10; 個の文を読み取る場合とすべての文を読み取る場合について、コンパイルされる正規表現と解釈される正規表現のパフォーマンスを比較しています。 出力を見るとわかるように、正規表現の一致メソッドの呼び出しが&10; 回だけの場合は、解釈される正規表現の方がコンパイルされる正規表現よりパフォーマンスが高くなります。 しかし、多数の呼び出し (この場合は 13,000 回以上) が行われる場合は、コンパイルされる正規表現の方がパフォーマンスが高くなります。 - -```csharp -using System; -using System.Diagnostics; -using System.IO; -using System.Text.RegularExpressions; - -public class Example -{ - public static void Main() - { - string pattern = @"\b(\w+((\r?\n)|,?\s))*\w+[.?:;!]"; - Stopwatch sw; - Match match; - int ctr; - - StreamReader inFile = new StreamReader(@".\Dreiser_TheFinancier.txt"); - string input = inFile.ReadToEnd(); - inFile.Close(); - - // Read first ten sentences with interpreted regex. - Console.WriteLine("10 Sentences with Interpreted Regex:"); - sw = Stopwatch.StartNew(); - Regex int10 = new Regex(pattern, RegexOptions.Singleline); - match = int10.Match(input); - for (ctr = 0; ctr <= 9; ctr++) { - if (match.Success) - // Do nothing with the match except get the next match. - match = match.NextMatch(); - else - break; - } - sw.Stop(); - Console.WriteLine(" {0} matches in {1}", ctr, sw.Elapsed); - - // Read first ten sentences with compiled regex. - Console.WriteLine("10 Sentences with Compiled Regex:"); - sw = Stopwatch.StartNew(); - Regex comp10 = new Regex(pattern, - RegexOptions.Singleline | RegexOptions.Compiled); - match = comp10.Match(input); - for (ctr = 0; ctr <= 9; ctr++) { - if (match.Success) - // Do nothing with the match except get the next match. - match = match.NextMatch(); - else - break; - } - sw.Stop(); - Console.WriteLine(" {0} matches in {1}", ctr, sw.Elapsed); - - // Read all sentences with interpreted regex. - Console.WriteLine("All Sentences with Interpreted Regex:"); - sw = Stopwatch.StartNew(); - Regex intAll = new Regex(pattern, RegexOptions.Singleline); - match = intAll.Match(input); - int matches = 0; - while (match.Success) { - matches++; - // Do nothing with the match except get the next match. - match = match.NextMatch(); - } - sw.Stop(); - Console.WriteLine(" {0:N0} matches in {1}", matches, sw.Elapsed); - - // Read all sentnces with compiled regex. - Console.WriteLine("All Sentences with Compiled Regex:"); - sw = Stopwatch.StartNew(); - Regex compAll = new Regex(pattern, - RegexOptions.Singleline | RegexOptions.Compiled); - match = compAll.Match(input); - matches = 0; - while (match.Success) { - matches++; - // Do nothing with the match except get the next match. - match = match.NextMatch(); - } - sw.Stop(); - Console.WriteLine(" {0:N0} matches in {1}", matches, sw.Elapsed); - } -} -// The example displays the following output: -// 10 Sentences with Interpreted Regex: -// 10 matches in 00:00:00.0047491 -// 10 Sentences with Compiled Regex: -// 10 matches in 00:00:00.0141872 -// All Sentences with Interpreted Regex: -// 13,443 matches in 00:00:01.1929928 -// All Sentences with Compiled Regex: -// 13,443 matches in 00:00:00.7635869 -// -// >compare1 -// 10 Sentences with Interpreted Regex: -// 10 matches in 00:00:00.0046914 -// 10 Sentences with Compiled Regex: -// 10 matches in 00:00:00.0143727 -// All Sentences with Interpreted Regex: -// 13,443 matches in 00:00:01.1514100 -// All Sentences with Compiled Regex: -// 13,443 matches in 00:00:00.7432921 -``` - -```vb -Imports System.Diagnostics -Imports System.IO -Imports System.Text.RegularExpressions - -Module Example - Public Sub Main() - Dim pattern As String = "\b(\w+((\r?\n)|,?\s))*\w+[.?:;!]" - Dim sw As Stopwatch - Dim match As Match - Dim ctr As Integer - - Dim inFile As New StreamReader(".\Dreiser_TheFinancier.txt") - Dim input As String = inFile.ReadToEnd() - inFile.Close() - - ' Read first ten sentences with interpreted regex. - Console.WriteLine("10 Sentences with Interpreted Regex:") - sw = Stopwatch.StartNew() - Dim int10 As New Regex(pattern, RegexOptions.SingleLine) - match = int10.Match(input) - For ctr = 0 To 9 - If match.Success Then - ' Do nothing with the match except get the next match. - match = match.NextMatch() - Else - Exit For - End If - Next - sw.Stop() - Console.WriteLine(" {0} matches in {1}", ctr, sw.Elapsed) - - ' Read first ten sentences with compiled regex. - Console.WriteLine("10 Sentences with Compiled Regex:") - sw = Stopwatch.StartNew() - Dim comp10 As New Regex(pattern, - RegexOptions.SingleLine Or RegexOptions.Compiled) - match = comp10.Match(input) - For ctr = 0 To 9 - If match.Success Then - ' Do nothing with the match except get the next match. - match = match.NextMatch() - Else - Exit For - End If - Next - sw.Stop() - Console.WriteLine(" {0} matches in {1}", ctr, sw.Elapsed) - - ' Read all sentences with interpreted regex. - Console.WriteLine("All Sentences with Interpreted Regex:") - sw = Stopwatch.StartNew() - Dim intAll As New Regex(pattern, RegexOptions.SingleLine) - match = intAll.Match(input) - Dim matches As Integer = 0 - Do While match.Success - matches += 1 - ' Do nothing with the match except get the next match. - match = match.NextMatch() - Loop - sw.Stop() - Console.WriteLine(" {0:N0} matches in {1}", matches, sw.Elapsed) - - ' Read all sentnces with compiled regex. - Console.WriteLine("All Sentences with Compiled Regex:") - sw = Stopwatch.StartNew() - Dim compAll As New Regex(pattern, - RegexOptions.SingleLine Or RegexOptions.Compiled) - match = compAll.Match(input) - matches = 0 - Do While match.Success - matches += 1 - ' Do nothing with the match except get the next match. - match = match.NextMatch() - Loop - sw.Stop() - Console.WriteLine(" {0:N0} matches in {1}", matches, sw.Elapsed) - End Sub -End Module -' The example displays output like the following: -' 10 Sentences with Interpreted Regex: -' 10 matches in 00:00:00.0047491 -' 10 Sentences with Compiled Regex: -' 10 matches in 00:00:00.0141872 -' All Sentences with Interpreted Regex: -' 13,443 matches in 00:00:01.1929928 -' All Sentences with Compiled Regex: -' 13,443 matches in 00:00:00.7635869 -' -' >compare1 -' 10 Sentences with Interpreted Regex: -' 10 matches in 00:00:00.0046914 -' 10 Sentences with Compiled Regex: -' 10 matches in 00:00:00.0143727 -' All Sentences with Interpreted Regex: -' 13,443 matches in 00:00:01.1514100 -' All Sentences with Compiled Regex: -' 13,443 matches in 00:00:00.7432921 -``` - -この例で使用する正規表現パターン `\b(\w+((\r?\n)|,?\s))*\w+[.?:;!]` は、次の表に示すように定義されています。 - -パターン | 説明 -------- | ----------- -`\b` | ワード境界から照合を開始します。 -`\w+` | 1 つ以上の単語文字に一致します。 -`(\r?\n)|,?\s)` | 0 ~&1; 個の復帰とそれに続く改行文字、または&0; ~&1; 個のコンマとそれに続く空白文字に一致します。 -`(\w+((\r?\n)|,?\s))*` | 1 個以上の単語文字の後に&0; ~&1; 個の復帰と改行文字または&0; ~&1; 個のコンマと空白文字が続くパターンの&0; 回以上の出現に一致します。 -`\w+` | 1 つ以上の単語文字に一致します。 -`[.?:;!]` | ピリオド、疑問符、コロン、セミコロン、または感嘆符に一致します。 - -## バックトラッキングを管理する - -通常、正規表現エンジンは入力文字列内を直線的に進んで、入力文字列を正規表現パターンと比較します。 しかし、正規表現パターン内で不定量指定子 (__*__、**+**、**?** など) が使用されていると、パターン全体に対する一致を検索するために、それまでに見つかった部分的な一致を放棄して、以前に保存した状態に戻る場合があります。 このプロセスをバックトラッキングと呼びます。 - +> メソッド呼び出しの形式 \(静的、解釈、コンパイル\) は、メソッド呼び出しで同じ正規表現が繰り返し使用される場合や、アプリケーションで正規表現オブジェクトが多用される場合に、パフォーマンスに影響を与えます。 + +### 静的正規表現 + 静的正規表現メソッドは、正規表現オブジェクトを同じ正規表現で繰り返しインスタンス化する代わりの方法として推奨されます。 正規表現オブジェクトで使用される正規表現パターンとは異なり、インスタンス メソッドの呼び出しで使用されるパターンの場合は、そのオペレーション コードまたはコンパイルされた Microsoft Intermediate Language \(MSIL\) が正規表現エンジンによって内部にキャッシュされます。 + + たとえば、ユーザー入力を検証するために別のメソッドを頻繁に呼び出すイベント ハンドラーがあったとします。 これを反映したコードを次の例に示します。この例では、 コントロールの イベントを使用して `IsValidCurrency` というメソッドを呼び出しています。このメソッドは、ユーザーが通貨記号に続けて 1 文字以上の 10 進数の数字を入力したかどうかを確認します。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/static1.cs#2)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/static1.vb#2)] + + 次の例は、`IsValidCurrency` メソッドのきわめて非効率的な実装を示しています。 この例では、このメソッドが呼び出されるたびに オブジェクトが同じパターンでインスタンス化されます。 そのため、メソッドが呼び出されるたびに正規表現パターンを再コンパイルしなければならなくなります。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/static1.cs#3)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/static1.vb#3)] + + この非効率的なコードは、静的な メソッドの呼び出しに置き換える必要があります。 これにより、パターン一致メソッドを呼び出すたびに オブジェクトをインスタンス化する必要がなくなり、正規表現エンジンがキャッシュからコンパイル済みの正規表現を取得できるようになります。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/static2.cs#4)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/static2.vb#4)] + + 既定では、最近使用された静的正規表現パターンが 15 個までキャッシュされます。 アプリケーションで多数の静的正規表現をキャッシュする必要がある場合は、 プロパティを設定してキャッシュのサイズを調整できます。 + + この例で使用されている正規表現 `\p{Sc}+\s*\d+` は、入力文字列が通貨記号と 1 文字以上の 10 進数の数字で構成されているかどうかを確認します。 このパターンは、次の表に示すように定義されます。 + +|パターン|説明| +|----------|--------| +|`\p{Sc}+`|Unicode の Symbol, Currency カテゴリの 1 個以上の文字と一致します。| +|`\s*`|0 個以上の空白文字と一致します。| +|`\d+`|1 個以上の 10 進数と一致します。| + + +### インタープリターによって処理されるとします。コンパイルされた正規表現 + オプションを指定して正規表現エンジンにバインドされていない正規表現パターンは、解釈されます。 正規表現オブジェクトがインスタンス化されるとき、正規表現エンジンは、その正規表現を一連のオペレーション コードに変換します。 インスタンス メソッドが呼び出されると、オペレーション コードが MSIL に変換され、JIT コンパイラによって実行されます。 同様に、静的正規表現メソッドが呼び出され、その正規表現がキャッシュに見つからない場合、正規表現エンジンは、その正規表現を一連のオペレーション コードに変換し、キャッシュに格納します。 それらのオペレーション コードは、その後、JIT コンパイラで実行できるように MSIL に変換されます。 解釈される正規表現では、実行時間が長くなる代わりに、スタートアップ時間が短縮されます。 このため、正規表現を使用するメソッドの呼び出し回数が少ない場合、または正確な回数はわからなくても少ないと予想される場合に適しています。 メソッド呼び出しの回数が増えるにつれて、スタートアップ時間の短縮というメリットよりも、実行速度の低下というデメリットの方が大きくなります。 + + オプションを指定して正規表現エンジンにバインドされた正規表現パターンは、コンパイルされます。 つまり、正規表現オブジェクトがインスタンス化されるとき、または静的正規表現メソッドが呼び出され、その正規表現がキャッシュに見つからないとき、正規表現エンジンは、その正規表現を一連の中間的なオペレーション コードに変換し、さらに MSIL に変換します。 メソッドが呼び出されると、その MSIL が JIT コンパイラによって実行されます。 コンパイルされる正規表現では、解釈される正規表現とは対照的に、スタートアップ時間が長くなる一方で、個々のパターン一致メソッドの実行時間は短くなります。 結果として、正規表現のコンパイルによって得られるパフォーマンス上のメリットは、正規表現メソッドが呼び出される回数に比例して大きくなります。 + + 要約すると、特定の正規表現について正規表現メソッドを呼び出す回数が比較的少ない場合は、解釈される正規表現を使用することをお勧めします。 特定の正規表現について正規表現メソッドを呼び出す回数が比較的多い場合は、コンパイルされる正規表現を使用することをお勧めします。 解釈される正規表現で実行速度の低下がスタートアップ時間の短縮を上回るしきい値や、コンパイルされる正規表現でスタートアップ時間の増加が実行速度の向上を上回るしきい値については、正確な値を特定するのは困難です。 これは、正規表現の複雑さや、処理される個々のデータなど、さまざまな要因に依存します。 特定のアプリケーションのシナリオにおいて、解釈される正規表現とコンパイルされる正規表現のどちらで最適なパフォーマンスが得られるかを特定するには、 クラスを使用して実行時間を比較します。 + + 次の例では、Theodore Dreiser の『*The Financier*』の最初の 10 個の文を読み取る場合とすべての文を読み取る場合について、コンパイルされる正規表現と解釈される正規表現のパフォーマンスを比較しています。 出力を見るとわかるように、正規表現の一致メソッドの呼び出しが 10 回だけの場合は、解釈される正規表現の方がコンパイルされる正規表現よりパフォーマンスが高くなります。 しかし、多数の呼び出し \(この場合は 13,000 回以上\) が行われる場合は、コンパイルされる正規表現の方がパフォーマンスが高くなります。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/compare1.cs#5)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/compare1.vb#5)] + + この例で使用する正規表現パターン `\b(\w+((\r?\n)|,?\s))*\w+[.?:;!]` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`\w+`|1 つ以上の単語文字に一致します。| +|`(\r? \n)|,? \s)`|0 ~ 1 個の復帰とそれに続く改行文字、または 0 ~ 1 個のコンマとそれに続く空白文字に一致します。| +|`(\w+((\r? \n)|,? \s))*`|1 個以上の単語文字の後に 0 ~ 1 個の復帰と改行文字または 0 ~ 1 個のコンマと空白文字が続くパターンの 0 回以上の出現に一致します。| +|`\w+`|1 つ以上の単語文字に一致します。| +|`[.?:;!]`|ピリオド、疑問符、コロン、セミコロン、または感嘆符に一致します。| + +### 正規表現: アセンブリへのコンパイル + .NET Framework では、コンパイル済みの正規表現を含むアセンブリを作成することもできます。 これにより、パフォーマンスの低下を招く正規表現のコンパイルを、実行時ではなくデザイン時に行うことができます。 ただし、追加の作業がいくつか必要になります。具体的には、正規表現を事前に定義して、アセンブリにコンパイルしなければなりません。 これにより、アセンブリの正規表現を使用するソース コードをコンパイルするときに、コンパイラがそのアセンブリを参照できるようになります。 アセンブリに含まれるコンパイル済みの各正規表現は、 の派生クラスによって表されます。 + + 正規表現をアセンブリにコンパイルするには、[Regex.CompileToAssembly\(RegexCompilationInfo\ メソッドを呼び出して、コンパイルする正規表現を表す オブジェクトの配列と、作成するアセンブリに関する情報を含む オブジェクトを渡します。 + + 次のような状況では、正規表現をアセンブリにコンパイルすることをお勧めします。 + +- コンポーネント開発者が、再利用できる正規表現のライブラリを作成する場合。 + +- 正規表現のパターン一致メソッドが呼び出される回数を特定できない場合 \(1 ~ 2 回から数千~数万回の範囲\)。 別個のアセンブリにコンパイルされた正規表現では、コンパイルされる正規表現や解釈される正規表現とは違って、メソッド呼び出しの回数に関係なく一貫したパフォーマンスが得られます。 + + コンパイル済みの正規表現を使用してパフォーマンスを最適化する場合は、アセンブリの作成、正規表現エンジンの読み込み、およびそのパターン一致メソッドの実行にリフレクションを使用しないようにする必要があります。 そのためには、正規表現パターンを動的に構築しないこと、およびパターン一致オプション \(大文字と小文字を区別しないパターン一致など\) をアセンブリの作成時に指定することが要求されます。 さらに、アセンブリを作成するコードを、正規表現を使用するコードから分離する必要もあります。 + + 次の例は、コンパイル済みの正規表現を含むアセンブリを作成する方法を示しています。 この例では、`RegexLib.dll` という 1 つの正規表現クラスを含む `SentencePattern` という名前のアセンブリを作成しています。このクラスには、「[解釈される正規表現とコンパイルされる正規表現](#Interpreted)」で使用した、文に一致する正規表現パターンが含まれています。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/compile1.cs#6)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/compile1.vb#6)] + + この例を実行可能ファイルにコンパイルして実行すると、`RegexLib.dll` という名前のアセンブリが作成されます。 正規表現は、`Utilities.RegularExpressions.SentencePattern` から派生する という名前のクラスによって表されます。 次の例では、このコンパイル済みの正規表現を使用して、Theodore Dreiser の『*The Financier*』のテキストから文を抽出しています。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/compile2.cs#7)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/compile2.vb#7)] + + [ページのトップへ](#top) + + +## バックトラッキングを管理する + 通常、正規表現エンジンは入力文字列内を直線的に進んで、入力文字列を正規表現パターンと比較します。 しかし、正規表現パターン内で不定量指定子 \(`*`、`+`、`?` など\) が使用されていると、パターン全体に対する一致を検索するために、それまでに見つかった部分的な一致を放棄して、以前に保存した状態に戻る場合があります。 このプロセスをバックトラッキングと呼びます。 + > [!NOTE] -> バックトラッキングの詳細については、「[正規表現の動作の詳細](regex-behavior.md)」と「[正規表現におけるバックトラッキング](backtracking.md)」を参照してください。 - -バックトラッキングのサポートにより、正規表現はより強力かつ柔軟になります。 同時に、正規表現エンジンの動作を正規表現の開発者が制御することにもなります。 この責任を認識していない開発者によるバックトラッキングの誤用や過度なバックトラッキングへの依存が、多くの場合、正規表現のパフォーマンスを低下させる最大の要因になっています。 最悪のシナリオでは、入力文字列が&1; 文字増えるたびに実行時間が倍増することもあります。 実際、バックトラッキングを過度に使用すると、入力が正規表現パターンにほぼ一致する場合に、プログラム的に無限ループと同等の状態に陥りやすくなります。そのような状態では、正規表現エンジンによる比較的短い入力文字列の処理に何時間も何日もかかることがあります。 - -照合に必要でないにもかかわらずバックトラッキングを使用した代償として、アプリケーションのパフォーマンスが低下することもよくあります。 例として、`\b\p{Lu}\w*\b` という正規表現について見てみましょう。この正規表現は、次の表に示すように、大文字で始まるすべての単語に一致します。 - -パターン | 説明 -------- | ----------- -`\b` | ワード境界から照合を開始します。 -`\p{Lu}` | 大文字に一致します。 -`\w*` | 0 個以上の単語に使用される文字に一致します。 -`\b` | ワード境界で照合を終了します。 - -ワード境界は単語文字と同じではなく、単語文字のサブセットでもないため、正規表現エンジンが単語文字の照合中にワード境界を越える可能性はありません。 したがって、この正規表現では、バックトラッキングが照合の全体的な成功に寄与することはありません。バックトラッキングを使用すると、正規表現エンジンが単語文字の照合に成功するたびに状態を保存しなければならなくなるため、パフォーマンスを低下させるだけです。 - -バックトラッキングが不要であることがわかった場合は、**(?>**_subexpression_**)** 言語要素を使用して無効にすることができます。 次の例では、2 つの正規表現を使用して入力文字列を解析しています。 1 つはバックトラッキングに依存する `\b\p{Lu}\w*\b`、 もう&1; つはバックトラッキングを無効にする `\b\p{Lu}(?>\w*)\b` です。 出力を見るとわかるように、どちらも結果は同じになります。 - -```csharp -using System; -using System.Text.RegularExpressions; - -public class Example -{ - public static void Main() - { - string input = "This this word Sentence name Capital"; - string pattern = @"\b\p{Lu}\w*\b"; - foreach (Match match in Regex.Matches(input, pattern)) - Console.WriteLine(match.Value); - - Console.WriteLine(); - - pattern = @"\b\p{Lu}(?>\w*)\b"; - foreach (Match match in Regex.Matches(input, pattern)) - Console.WriteLine(match.Value); - } -} -// The example displays the following output: -// This -// Sentence -// Capital -// -// This -// Sentence -// Capital -``` - -```vb -Imports System.Text.RegularExpressions - -Module Example - Public Sub Main() - Dim input As String = "This this word Sentence name Capital" - Dim pattern As String = "\b\p{Lu}\w*\b" - For Each match As Match In Regex.Matches(input, pattern) - Console.WriteLine(match.Value) - Next - Console.WriteLine() - - pattern = "\b\p{Lu}(?>\w*)\b" - For Each match As Match In Regex.Matches(input, pattern) - Console.WriteLine(match.Value) - Next - End Sub -End Module -' The example displays the following output: -' This -' Sentence -' Capital -' -' This -' Sentence -' Capital -``` - -正規表現パターンと入力テキストの照合にバックトラッキングが欠かせない場合もよくあります。 ただし、過度なバックトラッキングが発生すると、極端にパフォーマンスが低下して、アプリケーションが応答しなくなったように見えることがあります。 この状況が発生するのは、たとえば、量指定子が入れ子になっていて、外側の部分式に一致するテキストが内側の部分式に一致するテキストのサブセットになっている場合です。 - +> バックトラッキングの詳細については、「[正規表現の動作の詳細](../../../docs/standard/base-types/details-of-regular-expression-behavior.md)」と「[バックトラッキング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md)」を参照してください。 バックトラッキングに関する詳細な議論については、BCL チームのブログの「[正規表現のパフォーマンスの最適化、パート II: バックトラッキングの管理](http://go.microsoft.com/fwlink/?LinkId=211567)」を参照してください。 + + バックトラッキングのサポートにより、正規表現はより強力かつ柔軟になります。 同時に、正規表現エンジンの動作を正規表現の開発者が制御することにもなります。 この責任を認識していない開発者によるバックトラッキングの誤用や過度なバックトラッキングへの依存が、多くの場合、正規表現のパフォーマンスを低下させる最大の要因になっています。 最悪のシナリオでは、入力文字列が 1 文字増えるたびに実行時間が倍増することもあります。 実際、バックトラッキングを過度に使用すると、入力が正規表現パターンにほぼ一致する場合に、プログラム的に無限ループと同等の状態に陥りやすくなります。そのような状態では、正規表現エンジンによる比較的短い入力文字列の処理に何時間も何日もかかることがあります。 + + 照合に必要でないにもかかわらずバックトラッキングを使用した代償として、アプリケーションのパフォーマンスが低下することもよくあります。 例として、`\b\p{Lu}\w*\b` という正規表現について見てみましょう。この正規表現は、次の表に示すように、大文字で始まるすべての単語に一致します。 + +||| +|-|-| +|パターン|説明| +|`\b`|ワード境界から照合を開始します。| +|`\p{Lu}`|大文字に一致します。| +|`\w*`|0 個以上の単語に使用される文字に一致します。| +|`\b`|ワード境界で照合を終了します。| + + ワード境界は単語文字と同じではなく、単語文字のサブセットでもないため、正規表現エンジンが単語文字の照合中にワード境界を越える可能性はありません。 したがって、この正規表現では、バックトラッキングが照合の全体的な成功に寄与することはありません。バックトラッキングを使用すると、正規表現エンジンが単語文字の照合に成功するたびに状態を保存しなければならなくなるため、パフォーマンスを低下させるだけです。 + + バックトラッキングが不要であることがわかった場合は、`(?>``subexpression``)` 言語要素を使用して無効にすることができます。 次の例では、2 つの正規表現を使用して入力文字列を解析しています。 1 つはバックトラッキングに依存する `\b\p{Lu}\w*\b`、 もう 1 つはバックトラッキングを無効にする `\b\p{Lu}(?>\w*)\b` です。 出力を見るとわかるように、どちらも結果は同じになります。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/backtrack2.cs#10)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/backtrack2.vb#10)] + + 正規表現パターンと入力テキストの照合にバックトラッキングが欠かせない場合もよくあります。 ただし、過度なバックトラッキングが発生すると、極端にパフォーマンスが低下して、アプリケーションが応答しなくなったように見えることがあります。 この状況が発生するのは、たとえば、量指定子が入れ子になっていて、外側の部分式に一致するテキストが内側の部分式に一致するテキストのサブセットになっている場合です。 + > [!WARNING] -> 過度なバックトラッキングの回避に加えて、タイムアウト機能を使用して、過度なバックトラッキングによって、正規表現のパフォーマンスが極端に低下するのを防ぐ必要があります。 詳細については、「[タイムアウト値を使用する](#use-time-out-values)」を参照してください。 - -例として、部品番号に一致するように作られた `^[0-9A-Z]([-.\w]*[0-9A-Z])*\$$` という正規表現パターンについて見てみましょう。この部品番号は、少なくとも&1; 文字の英数字で構成されます。 追加の文字では、英数字、ハイフン、アンダースコア、およびピリオドが許容されますが、最後の文字は英数字でなければなりません。 部品番号の終わりはドル記号で示されます。 この正規表現パターンは、量指定子が入れ子になっているうえに、部分式 `[0-9A-Z]` が部分式 `[-.\w]*` のサブセットであるため、パフォーマンスが極端に低下する可能性があります。 - -このような場合に正規表現のパフォーマンスを最適化するには、入れ子になった量指定子を削除して、外側の部分式をゼロ幅の先読みアサーションまたは後読みアサーションに置き換えます。 先読みアサーションと後読みアサーションはアンカーなので、入力文字列内でポインターを移動させることなく、先読みまたは後読みによって、指定された条件が満たされているかどうかを確認します。 たとえば、この部品番号の正規表現は `^[0-9A-Z][-.\w]*(?<=[0-9A-Z])\$$` として書き直すことができます。 この正規表現パターンは、次の表に示すように定義されます。 - -パターン | 説明 -------- | ----------- -`^` | 入力文字列の先頭から照合を開始します。 -`[0-9A-Z]` | 英数字&1; 文字に一致します。 これは、部品番号に最低限必要な文字です。 -`[-.\w]*` | 任意の単語文字、ハイフン、またはピリオドの&0; 回以上の出現に一致します。 -`\$] | ドル記号に一致します。 -`(?<=[0-9A-Z])` | 末尾のドル記号を先読みし、前の文字が英数字であることを確認します。 -`$` 入力文字列の末尾で照合を終了します。 - -次の例では、この正規表現を使用して、部品番号を含む配列を照合しています。 - -```csharp -using System; -using System.Text.RegularExpressions; - -public class Example -{ - public static void Main() - { - string pattern = @"^[0-9A-Z][-.\w]*(?<=[0-9A-Z])\$$"; - string[] partNos = { "A1C$", "A4", "A4$", "A1603D$", "A1603D#" }; - - foreach (var input in partNos) { - Match match = Regex.Match(input, pattern); - if (match.Success) - Console.WriteLine(match.Value); - else - Console.WriteLine("Match not found."); - } - } -} -// The example displays the following output: -// A1C$ -// Match not found. -// A4$ -// A1603D$ -// Match not found. -``` - -```vb -Imports System.Text.RegularExpressions - -Module Example - Public Sub Main() - Dim pattern As String = "^[0-9A-Z][-.\w]*(?<=[0-9A-Z])\$$" - Dim partNos() As String = { "A1C$", "A4", "A4$", "A1603D$", - "A1603D#" } - - For Each input As String In partNos - Dim match As Match = Regex.Match(input, pattern) - If match.Success Then - Console.WriteLine(match.Value) - Else - Console.WriteLine("Match not found.") - End If - Next - End Sub -End Module -' The example displays the following output: -' A1C$ -' Match not found. -' A4$ -' A1603D$ -' Match not found. -``` - -.NET の正規表現言語には、入れ子になった量指定子を取り除くために使用できる次の言語要素が含まれています。 詳細については、「[正規表現でのグループ化構成体](grouping.md)」を参照してください。 - -言語要素 | 説明 ----------------- | ----------- -**(?**=_subexpression_**)** | ゼロ幅の肯定先読みです。 現在の位置からの先読みにより、*subexpression* が入力文字列に一致するかどうかを確認します。 -**(?!**_subexpression_**)** | ゼロ幅の否定先読みです。 現在の位置からの先読みにより、*subexpression* が入力文字列に一致しないかどうかを確認します。 -**(?<**=_subexpression_**)** | ゼロ幅の肯定後読みです。 現在の位置からの後読みにより、*subexpression* が入力文字列に一致するかどうかを確認します。 -**(?タイムアウト値を使用する - -正規表現が正規表現パターンにほぼ一致する入力を処理する場合は、パフォーマンスに大きな影響を与える過度なバックトラッキングに依存することがよくあります。 慎重にバックトラッキングの使用を検討し、ほぼ一致する入力に対して正規表現をテストすることに加えて、過度なバックトラッキングが発生した場合にその影響を確実に最小限に抑えるために、必ずタイムアウト値を設定する必要があります。 - -正規表現のタイムアウト間隔は、タイムアウトする前に正規表現エンジンが単一の一致を検索する期間を定義します。 既定のタイムアウト間隔は [Regex.InfiniteMatchTimeout](xref:System.Text.RegularExpressions.Regex.InfiniteMatchTimeout) で、正規表現がタイムアウトしないことを意味します。 次のようにこの値をオーバーライドし、タイムアウト間隔を定義できます。 - -* [Regex(String, RegexOptions, TimeSpan)](xref:System.Text.RegularExpressions.Regex.%23ctor(System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan)) コンストラクターを呼び出すことによって、[Regex](xref:System.Text.RegularExpressions.Regex) オブジェクトをインスタンス化するときに、タイムアウト値を指定します。 - -* [Regex.Match(String, String, RegexOptions, TimeSpan)](xref:System.Text.RegularExpressions.Regex.Match(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan))、[Regex.Replace(String, String, String, RegexOptions, TimeSpan)](xref:System.Text.RegularExpressions.Regex.Replace(System.String,System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.TimeSpan)) など、*matchTimeout* パラメーターを含む静的パターン一致メソッドを呼び出します。 - -タイムアウト間隔を定義していて、その間隔の終了時に一致が見つからない場合、正規表現メソッドは [RegexMatchTimeoutException](xref:System.Text.RegularExpressions.RegexMatchTimeoutException) 例外をスローします。 例外ハンドラーで、タイムアウト間隔を延長して一致を再試行する、一致操作を破棄して一致なしと見なす、または一致操作を破棄して今後の分析のために例外情報を記録することを選択できます。 - -次の例では、テキスト ドキュメントの単語の数と 1 つの単語に含まれる平均文字数を計算するために、タイムアウト間隔が 350 ミリ秒の正規表現をインスタンス化する `GetWordData` メソッドを定義します。 一致操作がタイムアウトした場合、タイムアウト間隔は 350 ミリ秒ずつ延長され、[Regex](xref:System.Text.RegularExpressions.Regex) オブジェクトが再インスタンス化されます。 新しいタイムアウト間隔が 1 秒を超える場合、メソッドは呼び出し元に例外を再スローします。 - -```csharp -using System; -using System.Collections.Generic; -using System.IO; -using System.Text.RegularExpressions; - -public class Example -{ - public static void Main() - { - RegexUtilities util = new RegexUtilities(); - string title = "Doyle - The Hound of the Baskervilles.txt"; - try { - var info = util.GetWordData(title); - Console.WriteLine("Words: {0:N0}", info.Item1); - Console.WriteLine("Average Word Length: {0:N2} characters", info.Item2); - } - catch (IOException e) { - Console.WriteLine("IOException reading file '{0}'", title); - Console.WriteLine(e.Message); - } - catch (RegexMatchTimeoutException e) { - Console.WriteLine("The operation timed out after {0:N0} milliseconds", - e.MatchTimeout.TotalMilliseconds); - } - } -} - -public class RegexUtilities -{ - public Tuple GetWordData(string filename) - { - const int MAX_TIMEOUT = 1000; // Maximum timeout interval in milliseconds. - const int INCREMENT = 350; // Milliseconds increment of timeout. - - List exclusions = new List( new string[] { "a", "an", "the" }); - int[] wordLengths = new int[29]; // Allocate an array of more than ample size. - string input = null; - StreamReader sr = null; - try { - sr = new StreamReader(filename); - input = sr.ReadToEnd(); - } - catch (FileNotFoundException e) { - string msg = String.Format("Unable to find the file '{0}'", filename); - throw new IOException(msg, e); - } - catch (IOException e) { - throw new IOException(e.Message, e); - } - finally { - if (sr != null) sr.Close(); - } - - int timeoutInterval = INCREMENT; - bool init = false; - Regex rgx = null; - Match m = null; - int indexPos = 0; - do { - try { - if (! init) { - rgx = new Regex(@"\b\w+\b", RegexOptions.None, - TimeSpan.FromMilliseconds(timeoutInterval)); - m = rgx.Match(input, indexPos); - init = true; - } - else { - m = m.NextMatch(); - } - if (m.Success) { - if ( !exclusions.Contains(m.Value.ToLower())) - wordLengths[m.Value.Length]++; - - indexPos += m.Length + 1; - } - } - catch (RegexMatchTimeoutException e) { - if (e.MatchTimeout.TotalMilliseconds < MAX_TIMEOUT) { - timeoutInterval += INCREMENT; - init = false; - } - else { - // Rethrow the exception. - throw; - } - } - } while (m.Success); - - // If regex completed successfully, calculate number of words and average length. - int nWords = 0; - long totalLength = 0; - - for (int ctr = wordLengths.GetLowerBound(0); ctr <= wordLengths.GetUpperBound(0); ctr++) { - nWords += wordLengths[ctr]; - totalLength += ctr * wordLengths[ctr]; - } - return new Tuple(nWords, totalLength/nWords); - } -} -``` - -```vb -Imports System.Collections.Generic -Imports System.IO -Imports System.Text.RegularExpressions - -Module Example - Public Sub Main() - Dim util As New RegexUtilities() - Dim title As String = "Doyle - The Hound of the Baskervilles.txt" - Try - Dim info = util.GetWordData(title) - Console.WriteLine("Words: {0:N0}", info.Item1) - Console.WriteLine("Average Word Length: {0:N2} characters", info.Item2) - Catch e As IOException - Console.WriteLine("IOException reading file '{0}'", title) - Console.WriteLine(e.Message) - Catch e As RegexMatchTimeoutException - Console.WriteLine("The operation timed out after {0:N0} milliseconds", - e.MatchTimeout.TotalMilliseconds) - End Try - End Sub -End Module - -Public Class RegexUtilities - Public Function GetWordData(filename As String) As Tuple(Of Integer, Double) - Const MAX_TIMEOUT As Integer = 1000 ' Maximum timeout interval in milliseconds. - Const INCREMENT As Integer = 350 ' Milliseconds increment of timeout. - - Dim exclusions As New List(Of String)({"a", "an", "the" }) - Dim wordLengths(30) As Integer ' Allocate an array of more than ample size. - Dim input As String = Nothing - Dim sr As StreamReader = Nothing - Try - sr = New StreamReader(filename) - input = sr.ReadToEnd() - Catch e As FileNotFoundException - Dim msg As String = String.Format("Unable to find the file '{0}'", filename) - Throw New IOException(msg, e) - Catch e As IOException - Throw New IOException(e.Message, e) - Finally - If sr IsNot Nothing Then sr.Close() - End Try - - Dim timeoutInterval As Integer = INCREMENT - Dim init As Boolean = False - Dim rgx As Regex = Nothing - Dim m As Match = Nothing - Dim indexPos As Integer = 0 - Do - Try - If Not init Then - rgx = New Regex("\b\w+\b", RegexOptions.None, - TimeSpan.FromMilliseconds(timeoutInterval)) - m = rgx.Match(input, indexPos) - init = True - Else - m = m.NextMatch() - End If - If m.Success Then - If Not exclusions.Contains(m.Value.ToLower()) Then - wordLengths(m.Value.Length) += 1 - End If - indexPos += m.Length + 1 - End If - Catch e As RegexMatchTimeoutException - If e.MatchTimeout.TotalMilliseconds < MAX_TIMEOUT Then - timeoutInterval += INCREMENT - init = False - Else - ' Rethrow the exception. - Throw - End If - End Try - Loop While m.Success - - ' If regex completed successfully, calculate number of words and average length. - Dim nWords As Integer - Dim totalLength As Long - - For ctr As Integer = wordLengths.GetLowerBound(0) To wordLengths.GetUpperBound(0) - nWords += wordLengths(ctr) - totalLength += ctr * wordLengths(ctr) - Next - Return New Tuple(Of Integer, Double)(nWords, totalLength/nWords) - End Function -End Class -``` - -## 必要なときにのみキャプチャする - -.NET の正規表現では、数多くのグループ化構成体がサポートされています。これらを使用すると、正規表現パターンを&1; つ以上の部分式にグループ化することができます。 .NET の正規表現言語で最もよく使用されるグループ化構成体は、番号付きのキャプチャ グループを定義する **(**_subexpression_**)** と、名前付きのキャプチャ グループを定義する **(?<*_name_**>**_subexpression_**)** です。 グループ化構成体は、前方参照を作成したり、量指定子を適用する部分式を定義したりするのに欠かせません。 - -しかし、これらの言語要素の使用にはコストが伴います。 まず、[Match.Groups](xref:System.Text.RegularExpressions.Match.Groups) プロパティから返される [GroupCollection](xref:System.Text.RegularExpressions.GroupCollection) オブジェクトに、最新の名前のないキャプチャまたは名前付きキャプチャが設定されます。また、1 つのグループ化構成体によって入力文字列の複数の部分文字列がキャプチャされた場合は、特定のキャプチャ グループの [Group.Captures](xref:System.Text.RegularExpressions.Group.Captures) プロパティから返される [CaptureCollection](xref:System.Text.RegularExpressions.CaptureCollection) オブジェクトに複数の [Capture](xref:System.Text.RegularExpressions.Capture) オブジェクトが設定されます。 - -正規表現内で量指定子を適用できるようにするためだけにグループ化構成体が使用されていて、それらの部分式によってキャプチャされたグループがその後に使用されていない場合もよくあります。 例として、文全体をキャプチャするために作られた正規表現 `\b(\w+[;,]?\s?)+[.?!]` について見てみましょう。 次の表は、この正規表現パターン内の言語要素と、[Match](xref:System.Text.RegularExpressions.Match) オブジェクトの [Match.Groups](xref:System.Text.RegularExpressions.Match.Groups) コレクションおよび [Group.Captures](xref:System.Text.RegularExpressions.Group.Captures) コレクションに対する影響を示しています。 - -パターン | 説明 -------- | ----------- -`\b` | ワード境界から照合を開始します。 -`\w+` | 1 つ以上の単語文字に一致します。 -`[;,]?` | 0 個または&1; 個のコンマまたはセミコロンに一致します。 -`\s?` | 0 個または&1; 個の空白文字と一致します。 -`(\w+[;,]?\s?)+` | 1 個以上の単語文字の後に省略可能なコンマまたはセミコロンと省略可能な空白文字が続くパターンの&1; 回以上の出現に一致します。 これにより、最初のキャプチャ グループが定義されます。このグループは、複数の単語文字の組み合わせ (つまり単語) の後に省略可能な区切り記号が続くパターンが、正規表現エンジンが文の終わりに到達するまで繰り返されるようにするために必要です。 -`[.?!]` | ピリオド、疑問符、または感嘆符に一致します。 - -次の例に示すように、一致が見つかると、[GroupCollection](xref:System.Text.RegularExpressions.GroupCollection) オブジェクトと [CaptureCollection](xref:System.Text.RegularExpressions.CaptureCollection) オブジェクトの両方に一致からのキャプチャが設定されます。 ここでは、**+** 量指定子を適用できるようにするためにキャプチャ グループ `(\w+[;,]?\s?)` が使用されているため、正規表現パターンが文の各単語に一致します。 そうでない場合は、文の最後の単語に一致します。 - -```csharp -using System; -using System.Text.RegularExpressions; - -public class Example -{ - public static void Main() - { - string input = "This is one sentence. This is another."; - string pattern = @"\b(\w+[;,]?\s?)+[.?!]"; - - foreach (Match match in Regex.Matches(input, pattern)) { - Console.WriteLine("Match: '{0}' at index {1}.", - match.Value, match.Index); - int grpCtr = 0; - foreach (Group grp in match.Groups) { - Console.WriteLine(" Group {0}: '{1}' at index {2}.", - grpCtr, grp.Value, grp.Index); - int capCtr = 0; - foreach (Capture cap in grp.Captures) { - Console.WriteLine(" Capture {0}: '{1}' at {2}.", - capCtr, cap.Value, cap.Index); - capCtr++; - } - grpCtr++; - } - Console.WriteLine(); - } - } -} -// The example displays the following output: -// Match: 'This is one sentence.' at index 0. -// Group 0: 'This is one sentence.' at index 0. -// Capture 0: 'This is one sentence.' at 0. -// Group 1: 'sentence' at index 12. -// Capture 0: 'This ' at 0. -// Capture 1: 'is ' at 5. -// Capture 2: 'one ' at 8. -// Capture 3: 'sentence' at 12. -// -// Match: 'This is another.' at index 22. -// Group 0: 'This is another.' at index 22. -// Capture 0: 'This is another.' at 22. -// Group 1: 'another' at index 30. -// Capture 0: 'This ' at 22. -// Capture 1: 'is ' at 27. -// Capture 2: 'another' at 30. -``` - -```vb -Imports System.Text.RegularExpressions - -Module Example - Public Sub Main() - Dim input As String = "This is one sentence. This is another." - Dim pattern As String = "\b(\w+[;,]?\s?)+[.?!]" - - For Each match As Match In Regex.Matches(input, pattern) - Console.WriteLine("Match: '{0}' at index {1}.", - match.Value, match.Index) - Dim grpCtr As Integer = 0 - For Each grp As Group In match.Groups - Console.WriteLine(" Group {0}: '{1}' at index {2}.", - grpCtr, grp.Value, grp.Index) - Dim capCtr As Integer = 0 - For Each cap As Capture In grp.Captures - Console.WriteLine(" Capture {0}: '{1}' at {2}.", - capCtr, cap.Value, cap.Index) - capCtr += 1 - Next - grpCtr += 1 - Next - Console.WriteLine() - Next - End Sub -End Module -' The example displays the following output: -' Match: 'This is one sentence.' at index 0. -' Group 0: 'This is one sentence.' at index 0. -' Capture 0: 'This is one sentence.' at 0. -' Group 1: 'sentence' at index 12. -' Capture 0: 'This ' at 0. -' Capture 1: 'is ' at 5. -' Capture 2: 'one ' at 8. -' Capture 3: 'sentence' at 12. -' -' Match: 'This is another.' at index 22. -' Group 0: 'This is another.' at index 22. -' Capture 0: 'This is another.' at 22. -' Group 1: 'another' at index 30. -' Capture 0: 'This ' at 22. -' Capture 1: 'is ' at 27. -' Capture 2: 'another' at 30. -``` - -量指定子を適用するためだけに部分式を使用していて、キャプチャされたテキストは特に必要ないという場合は、グループ キャプチャを無効にする必要があります。 たとえば、**(?:**_subexpression_**)** 言語要素をグループに適用すると、そのグループでは、一致した部分文字列がキャプチャされなくなります。 次の例では、前の例の正規表現パターンが `\b(?:\w+[;,]?\s?)+[.?!]` に変更されています。 出力を見るとわかるように、これにより、[GroupCollection](xref:System.Text.RegularExpressions.GroupCollection) コレクションと [CaptureCollection](xref:System.Text.RegularExpressions.CaptureCollection) コレクションが設定されなくなります。 - -```csharp -using System; -using System.Text.RegularExpressions; - -public class Example -{ - public static void Main() - { - string input = "This is one sentence. This is another."; - string pattern = @"\b(?:\w+[;,]?\s?)+[.?!]"; - - foreach (Match match in Regex.Matches(input, pattern)) { - Console.WriteLine("Match: '{0}' at index {1}.", - match.Value, match.Index); - int grpCtr = 0; - foreach (Group grp in match.Groups) { - Console.WriteLine(" Group {0}: '{1}' at index {2}.", - grpCtr, grp.Value, grp.Index); - int capCtr = 0; - foreach (Capture cap in grp.Captures) { - Console.WriteLine(" Capture {0}: '{1}' at {2}.", - capCtr, cap.Value, cap.Index); - capCtr++; - } - grpCtr++; - } - Console.WriteLine(); - } - } -} -// The example displays the following output: -// Match: 'This is one sentence.' at index 0. -// Group 0: 'This is one sentence.' at index 0. -// Capture 0: 'This is one sentence.' at 0. -// -// Match: 'This is another.' at index 22. -// Group 0: 'This is another.' at index 22. -// Capture 0: 'This is another.' at 22. -``` - -```vb -Imports System.Text.RegularExpressions - -Module Example - Public Sub Main() - Dim input As String = "This is one sentence. This is another." - Dim pattern As String = "\b(?:\w+[;,]?\s?)+[.?!]" - - For Each match As Match In Regex.Matches(input, pattern) - Console.WriteLine("Match: '{0}' at index {1}.", - match.Value, match.Index) - Dim grpCtr As Integer = 0 - For Each grp As Group In match.Groups - Console.WriteLine(" Group {0}: '{1}' at index {2}.", - grpCtr, grp.Value, grp.Index) - Dim capCtr As Integer = 0 - For Each cap As Capture In grp.Captures - Console.WriteLine(" Capture {0}: '{1}' at {2}.", - capCtr, cap.Value, cap.Index) - capCtr += 1 - Next - grpCtr += 1 - Next - Console.WriteLine() - Next - End Sub -End Module -' The example displays the following output: -' Match: 'This is one sentence.' at index 0. -' Group 0: 'This is one sentence.' at index 0. -' Capture 0: 'This is one sentence.' at 0. -' -' Match: 'This is another.' at index 22. -' Group 0: 'This is another.' at index 22. -' Capture 0: 'This is another.' at 22. -``` - -キャプチャを無効にするには次のような方法があります。 - -* **(?:**_subexpression_**)** 言語要素を使用します。 この要素をグループに適用すると、そのグループでは、一致した部分文字列がキャプチャされなくなります。 入れ子になったグループによる部分文字列のキャプチャは無効になりません。 - -* [RegexOptions.ExplicitCapture](xref:System.Text.RegularExpressions.RegexOptions.ExplicitCapture) オプションを使用します。 これにより、正規表現パターン内の名前のないキャプチャ (暗黙的なキャプチャ) がすべて無効になります。 このオプションを使用した場合は、**(?<**_name_**>**_subexpression_**)** 言語要素を使用して定義した名前付きグループに一致する部分文字列のみがキャプチャされます。 [ExplicitCapture](xref:System.Text.RegularExpressions.RegexOptions.ExplicitCapture) フラグは、[Regex](xref:System.Text.RegularExpressions.Regex) クラス コンストラクターの options パラメーターか、[Regex](xref:System.Text.RegularExpressions.Regex) の静的な一致メソッドの options パラメーターに渡すことができます。 - -* **(?imnsx)** 言語要素の **n** オプションを使用します。 これにより、正規表現パターンでこの要素が出現する位置以降の名前のないキャプチャ (暗黙的なキャプチャ) がすべて無効になります。 パターンの末尾に到達するか、**(-n)** オプションによって名前のないキャプチャ (暗黙的なキャプチャ) が有効になるまで、キャプチャは無効のままです。 詳細については、「[正規表現でのその他の構成体](miscellaneous.md)」を参照してください。 - -* **(?imnsx:**_subexpression_**)** 言語要素の **n** オプションを使用します。 これにより、*subexpression* 内の名前のないキャプチャ (暗黙的なキャプチャ) がすべて無効になります。 入れ子になった名前のない (暗黙的な) キャプチャ グループによるキャプチャも無効になります。 - -## 関連トピック - -タイトル | 説明 ------ | ----------- -[正規表現の動作の詳細](regex-behavior.md) | .NET の正規表現エンジンの実装について検討します。 正規表現の柔軟性に焦点を当てて、正規表現エンジンの効率的かつ堅牢な動作を確保するための開発者の責任について説明します。 -[正規表現におけるバックトラッキング](backtracking.md) | バックトラッキングの概要と、正規表現のパフォーマンスに与える影響について説明し、バックトラッキングの代わりに使用できる言語要素について検討します。 -[正規表現言語 - クイック リファレンス](quick-ref.md) | .NET の正規表現言語の言語要素について説明します。各言語要素の詳細な説明へのリンクも含まれています。 - - - +> 過度なバックトラッキングの回避に加えて、タイムアウト機能を使用して、過度なバックトラッキングによって、正規表現のパフォーマンスが極端に低下するのを防ぐ必要があります。 詳細については、「[タイムアウト値を使用する](#Timeouts)」を参照してください。 + + 例として、部品番号に一致するように作られた `^[0-9A-Z]([-.\w]*[0-9A-Z])*\$$` という正規表現パターンについて見てみましょう。この部品番号は、少なくとも 1 文字の英数字で構成されます。 追加の文字では、英数字、ハイフン、アンダースコア、およびピリオドが許容されますが、最後の文字は英数字でなければなりません。 部品番号の終わりはドル記号で示されます。 この正規表現パターンは、量指定子が入れ子になっているうえに、部分式 `[0-9A-Z]` が部分式 `[-.\w]*` のサブセットであるため、パフォーマンスが極端に低下する可能性があります。 + + このような場合に正規表現のパフォーマンスを最適化するには、入れ子になった量指定子を削除して、外側の部分式をゼロ幅の先読みアサーションまたは後読みアサーションに置き換えます。 先読みアサーションと後読みアサーションはアンカーなので、入力文字列内でポインターを移動させることなく、先読みまたは後読みによって、指定された条件が満たされているかどうかを確認します。 たとえば、この部品番号の正規表現は `^[0-9A-Z][-.\w]*(?<=[0-9A-Z])\$$` として書き直すことができます。 この正規表現パターンは、次の表に示すように定義されます。 + +|パターン|説明| +|----------|--------| +|`^`|入力文字列の先頭から照合を開始します。| +|`[0-9A-Z]`|英数字 1 文字に一致します。 これは、部品番号に最低限必要な文字です。| +|`[-. \w]*`|任意の単語文字、ハイフン、またはピリオドの 0 回以上の出現に一致します。| +|`\$`|ドル記号に一致します。| +|`(?<=[0-9A-Z])`|末尾のドル記号を先読みし、前の文字が英数字であることを確認します。| +|`$`|入力文字列の末尾で照合を終了します。| + + 次の例では、この正規表現を使用して、部品番号を含む配列を照合しています。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/backtrack4.cs#11)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/backtrack4.vb#11)] + + .NET Framework の正規表現言語には、入れ子になった量指定子を取り除くために使用できる次の言語要素が含まれています。 詳しくは、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + +|言語要素|説明| +|----------|--------| +|`(?=` `subexpression` `)`|ゼロ幅の肯定先読みです。 現在の位置からの先読みにより、`subexpression` が入力文字列に一致するかどうかを確認します。| +|`(?!` `subexpression` `)`|ゼロ幅の否定先読みです。 現在の位置からの先読みにより、`subexpression` が入力文字列に一致しないかどうかを確認します。| +|`(?<=` `subexpression` `)`|ゼロ幅の肯定後読みです。 現在の位置からの後読みにより、`subexpression` が入力文字列に一致するかどうかを確認します。| +|`(? +## タイムアウト値を使用する + 正規表現が正規表現パターンにほぼ一致する入力を処理する場合は、パフォーマンスに大きな影響を与える過度なバックトラッキングに依存することがよくあります。 慎重にバックトラッキングの使用を検討し、ほぼ一致する入力に対して正規表現をテストすることに加えて、過度なバックトラッキングが発生した場合にその影響を確実に最小限に抑えるために、必ずタイムアウト値を設定する必要があります。 + + 正規表現のタイムアウト間隔は、タイムアウトする前に正規表現エンジンが単一の一致を検索する期間を定義します。 既定のタイムアウト間隔は で、正規表現がタイムアウトしないことを意味します。 次のようにこの値をオーバーライドし、タイムアウト間隔を定義できます。 + +- コンストラクターを呼び出すことによって、 オブジェクトをインスタンス化するときに、タイムアウト値を指定します。 + +- など、`matchTimeout` パラメーターを含む静的パターン一致メソッドを呼び出します。 + +- メソッドを呼び出すことによって作成されるコンパイルされる正規表現の場合、 型のパラメーターを持つコンストラクターを呼び出します。 + + タイムアウト間隔を定義していて、その間隔の終了時に一致が見つからない場合、正規表現メソッドは 例外をスローします。 例外ハンドラーで、タイムアウト間隔を延長して一致を再試行する、一致操作を破棄して一致なしと見なす、または一致操作を破棄して今後の分析のために例外情報を記録することを選択できます。 + + 次の例では、テキスト ドキュメントの単語の数と 1 つの単語に含まれる平均文字数を計算するために、タイムアウト間隔が 350 ミリ秒の正規表現をインスタンス化する `GetWordData` メソッドを定義します。 一致操作がタイムアウトした場合、タイムアウト間隔は 350 ミリ秒ずつ延長され、 オブジェクトが再インスタンス化されます。 新しいタイムアウト間隔が 1 秒を超える場合、メソッドは呼び出し元に例外を再スローします。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/timeout1.cs#12)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/timeout1.vb#12)] + + [ページのトップへ](#top) + + +## 必要なときにのみキャプチャする + .NET Framework の正規表現では、数多くのグループ化構成体がサポートされています。これらを使用すると、正規表現パターンを 1 つ以上の部分式にグループ化することができます。 .NET Framework の正規表現言語で最もよく使用されるグループ化構成体は、番号付きのキャプチャ グループを定義する `(`*subexpression*`)` と、名前付きのキャプチャ グループを定義する `(?<`*name*`>`*subexpression*`)` です。 グループ化構成体は、前方参照を作成したり、量指定子を適用する部分式を定義したりするのに欠かせません。 + + しかし、これらの言語要素の使用にはコストが伴います。 まず、 プロパティから返される オブジェクトに、最新の名前のないキャプチャまたは名前付きキャプチャが設定されます。また、1 つのグループ化構成体によって入力文字列の複数の部分文字列がキャプチャされた場合は、特定のキャプチャ グループの プロパティから返される オブジェクトに複数の オブジェクトが設定されます。 + + 正規表現内で量指定子を適用できるようにするためだけにグループ化構成体が使用されていて、それらの部分式によってキャプチャされたグループがその後に使用されていない場合もよくあります。 例として、文全体をキャプチャするために作られた正規表現 `\b(\w+[;,]?\s?)+[.?!]` について見てみましょう。 次の表は、この正規表現パターン内の言語要素と、 オブジェクトの コレクションおよび コレクションに対する影響を示しています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`\w+`|1 つ以上の単語文字に一致します。| +|`[;,]?`|0 個または 1 個のコンマまたはセミコロンに一致します。| +|`\s?`|0 個または 1 個の空白文字と一致します。| +|`(\w+[;,]? \s?)+`|1 個以上の単語文字の後に省略可能なコンマまたはセミコロンと省略可能な空白文字が続くパターンの 1 回以上の出現に一致します。 これにより、最初のキャプチャ グループが定義されます。このグループは、複数の単語文字の組み合わせ \(つまり単語\) の後に省略可能な区切り記号が続くパターンが、正規表現エンジンが文の終わりに到達するまで繰り返されるようにするために必要です。| +|`[.?!]`|ピリオド、疑問符、または感嘆符に一致します。| + + 次の例に示すように、一致が見つかると、 オブジェクトと オブジェクトの両方に一致からのキャプチャが設定されます。 ここでは、`(\w+[;,]?\s?)` 量指定子を適用できるようにするためにキャプチャ グループ `+` が使用されているため、正規表現パターンが文の各単語に一致します。 そうでない場合は、文の最後の単語に一致します。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/group1.cs#8)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/group1.vb#8)] + + 量指定子を適用するためだけに部分式を使用していて、キャプチャされたテキストは特に必要ないという場合は、グループ キャプチャを無効にする必要があります。 たとえば、`(?:``subexpression``)` 言語要素をグループに適用すると、そのグループでは、一致した部分文字列がキャプチャされなくなります。 次の例では、前の例の正規表現パターンが `\b(?:\w+[;,]?\s?)+[.?!]` に変更されています。 出力を見るとわかるように、これにより、 コレクションと コレクションが設定されなくなります。 + + [!code-csharp[Conceptual.RegularExpressions.BestPractices#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/cs/group2.cs#9)] + [!code-vb[Conceptual.RegularExpressions.BestPractices#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.bestpractices/vb/group2.vb#9)] + + キャプチャを無効にするには次のような方法があります。 + +- `(?:` `subexpression` `)` 言語要素を使用します。 この要素をグループに適用すると、そのグループでは、一致した部分文字列がキャプチャされなくなります。 入れ子になったグループによる部分文字列のキャプチャは無効になりません。 + +- オプションを使用します。 これにより、正規表現パターン内の名前のないキャプチャ \(暗黙的なキャプチャ\) がすべて無効になります。 このオプションを使用した場合は、`(?<``name``>``subexpression``)` 言語要素を使用して定義した名前付きグループに一致する部分文字列のみがキャプチャされます。 フラグは、`options` クラス コンストラクターの パラメーターか、`options` の静的な一致メソッドの パラメーターに渡すことができます。 + +- `n` 言語要素の `(?imnsx)` オプションを使用します。 これにより、正規表現パターンでこの要素が出現する位置以降の名前のないキャプチャ \(暗黙的なキャプチャ\) がすべて無効になります。 パターンの末尾に到達するか、`(-n)` オプションによって名前のないキャプチャ \(暗黙的なキャプチャ\) が有効になるまで、キャプチャは無効のままです。 詳しくは、「[その他の構成体](../../../docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md)」を参照してください。 + +- `(?imnsx:` `subexpression` `)` 言語要素の `n` オプションを使用します。 これにより、`subexpression` 内の名前のないキャプチャ \(暗黙的なキャプチャ\) がすべて無効になります。 入れ子になった名前のない \(暗黙的な\) キャプチャ グループによるキャプチャも無効になります。 + + [ページのトップへ](#top) + + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[正規表現の動作の詳細](../../../docs/standard/base-types/details-of-regular-expression-behavior.md)|.NET Framework の正規表現エンジンの実装について検討します。 正規表現の柔軟性に焦点を当てて、正規表現エンジンの効率的かつ堅牢な動作を確保するための開発者の責任について説明します。| +|[バックトラッキング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md)|バックトラッキングの概要と、正規表現のパフォーマンスに与える影響について説明し、バックトラッキングの代わりに使用できる言語要素について検討します。| +|[正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md)|.NET Framework の正規表現言語の言語要素について説明します。各言語要素の詳細な説明へのリンクも含まれています。| \ No newline at end of file diff --git a/docs/standard/base-types/changing-case.md b/docs/standard/base-types/changing-case.md index 6db14c93a1d..b063aed98ba 100644 --- a/docs/standard/base-types/changing-case.md +++ b/docs/standard/base-types/changing-case.md @@ -1,77 +1,76 @@ --- -title: "大文字と小文字の変更" -description: "大文字と小文字の変更" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 646c5afd-8aec-4393-9c00-f68ad2580c68 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 023f40969095627242d3652add853eb999c30c4b -ms.lasthandoff: 03/02/2017 - ---- - -# 大文字と小文字の変更 - -ユーザーからの入力を受け付けるアプリケーションを記述する場合、ユーザーがデータ入力に使用するケースを正確に予測することはできません。 多くの場合、特にユーザー インターフェイスにそれを表示する場合には、文字列に一貫性のあるケースを使用することが求められます。 次の表は、2 つのケース変更方式を示しています。 - -メソッド名 | 使用 ------------ | --- -[String.ToUpper](xref:System.String.ToUpper) | 文字列内のすべての文字を大文字に変換します。 -[String.ToLower](xref:System.String.ToLower) | 文字列内のすべての文字を小文字に変換します。 - -> [!WARNING] -> `String.ToUpper` と `String.ToLower` の方式を使用して、文字列を比較したり等しいかどうかをテストしたりする目的で、それらの文字列を変換するべきではないことに注意してください。 - -## 大小混合文字の文字列を比較する - -大小混合文字の文字列を比較してそれらが等しいかどうかを判別するには、*comparisonType* パラメーターのある [String](xref:System) `Equals` メソッドのいずれかのオーバーロードを呼び出して、*comparisonType* 引数に [StringComparison.CurrentCultureIgnoreCase](xref:System.StringComparison.CurrentCultureIgnoreCase) または [StringComparison.OrdinalIgnoreCase](xref:System.StringComparison.OrdinalIgnoreCase) の値を指定します。 - -詳細については、「[文字列を使用するためのベスト プラクティス](best-practices.md)」を参照してください。 - -## ToUpper - -[String.ToUpper](xref:System.String.ToUpper) メソッドは文字列内のすべての文字を大文字に変換します。 次の例では、文字列 "Hello World!" を 大小混合文字から大文字に変換します。 - -```csharp -string properString = "Hello World!"; -Console.WriteLine(properString.ToUpper()); -// This example displays the following output: -// HELLO WORLD! -``` - -```vb -Dim MyString As String = "Hello World!" -Console.WriteLine(MyString.ToUpper()) -' This example displays the following output: -' HELLO WORLD! -``` - -## ToLower - -[String.ToLower](xref:System.String.ToLower) メソッドは、前のメソッドと似ていますが、代わりに文字列内のすべての文字を小文字に変換します。 次の例では、文字列 "Hello World!" を 小文字に変換します。 - -```csharp -string properString = "Hello World!"; -Console.WriteLine(properString.ToLower()); -// This example displays the following output: -// hello world! -``` - -```vb -Dim MyString As String = "Hello World!" -Console.WriteLine(MyString.ToLower()) -' This example displays the following output: -' hello world! -``` - -## 関連項目 - -[基本的な文字列操作](basic-string-operations.md) - +title: ".NET Framework における大文字と小文字の変更 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "大文字と小文字の区別" + - "小文字" + - "文字列 [.NET Framework], case" + - "ToLower メソッド" + - "ToUpper メソッド" + - "大文字" +ms.assetid: 6805f81b-e9ad-4387-9f4c-b9bdb21b87c0 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# .NET Framework における大文字と小文字の変更 +ユーザーからの入力を受け付けるアプリケーションを記述する場合、ユーザーがデータ入力に使用するケースを正確に予測することはできません。 多くの場合、特にユーザー インターフェイスにそれを表示する場合には、文字列に一貫性のあるケースを使用することが求められます。 次の表は、3 つのケース変更方式を示しています。 最初の 2 つの方式は、カルチャを受け入れるオーバーロードを提供します。 + +|メソッド名|用途| +|-----------|--------| +||文字列内のすべての文字を大文字に変換します。| +||文字列内のすべての文字を小文字に変換します。| +||文字列をタイトル ケースに変換します。| + +> [!WARNING] +> の方式を使用して、文字列を比較したり等しいかどうかをテストしたりする目的で、それらの文字列を変換するべきではないことに注意してください。 詳しくは、「[大小混合文字の文字列を比較する](#Comparing)」セクションを参照してください。 + + +## 大小混合文字の文字列を比較する + 大小混合文字の文字列を比較してそれらの順序を判別するには、`comparisonType` パラメーターのある メソッドのいずれかのオーバーロードを呼び出して、`comparisonType` 引数に 、または の値を指定します。 現在のカルチャ以外の特定のカルチャを使用して比較する場合、`culture` と `options` の両方のパラメーターのある メソッドのオーバーロードを呼び出して、`options` 引数に の値を指定します。 + + 大小混合文字の文字列を比較してそれらが等しいかどうかを判別するには、`comparisonType` パラメーターのある メソッドのいずれかのオーバーロードを呼び出して、`comparisonType` 引数に 、または の値を指定します。 + + 詳しくは、「[文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md)」を参照してください。 + +## ToUpper + メソッドは文字列内のすべての文字を大文字に変換します。 次の例では、文字列 "Hello World\!" を大小混合文字から大文字に変換します。 + + [!code-csharp[Strings.ChangingCase#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.ChangingCase/cs/Example.cs#1)] + [!code-vb[Strings.ChangingCase#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.ChangingCase/vb/Example.vb#1)] + + 前の例は、既定でカルチャに依存しています。これには、現在のカルチャのケース表記規則が適用されます。 カルチャに依存しないケース変更を実行したり、特定のカルチャのケース表記規則を適用したりするには、 メソッドのオーバーロードを使用して、*culture* パラメーターに指定のカルチャを表す または オブジェクトの値を提供します。 メソッドを使用してカルチャに依存しないケース変更を実行する方法を示す例については、「[カルチャを認識しない大文字と小文字の変更の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md)」を参照してください。 + +## ToLower + メソッドは、前のメソッドと似ていますが、代わりに文字列内のすべての文字を小文字に変換します。 次の例では、文字列 "Hello World\!" を小文字に変換します。 + + [!code-csharp[Strings.ChangingCase#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.ChangingCase/cs/Example.cs#2)] + [!code-vb[Strings.ChangingCase#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.ChangingCase/vb/Example.vb#2)] + + 前の例は、既定でカルチャに依存しています。これには、現在のカルチャのケース表記規則が適用されます。 カルチャに依存しないケース変更を実行したり、特定のカルチャのケース表記規則を適用したりするには、 メソッドのオーバーロードを使用して、*culture* パラメーターに指定のカルチャを表す または オブジェクトの値を提供します。 メソッドを使用してカルチャに依存しないケース変更を実行する方法を示す例については、「[カルチャを認識しない大文字と小文字の変更の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md)」を参照してください。 + +## ToTitleCase + は、各単語の最初の文字を大文字に変換し、残りの文字を小文字に変換します。 ただし、すべて大文字である単語は頭字語であると想定されて、変換されません。 + + メソッドはカルチャに依存しています。つまり、特定のカルチャのケース表記規則を使用します。 メソッドを呼び出すためには、最初に特定のカルチャのケース表記規則を表す オブジェクトを、特定のカルチャの プロパティから取得します。 + + 次の例は、配列内の各文字列を メソッドに渡します。 文字列には、適切なタイトルの文字列と頭字語が含まれています。 文字列は、英語 \(米国\) カルチャのケース表記規則を使用して、タイトル ケースに変換されます。 + + [!code-csharp[System.Globalization.TextInfo.ToTitleCase#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.globalization.textinfo.totitlecase/cs/totitlecase2.cs#1)] + [!code-vb[System.Globalization.TextInfo.ToTitleCase#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.globalization.textinfo.totitlecase/vb/totitlecase2.vb#1)] + + カルチャに依存していても、 メソッドは言語的に正しい大文字小文字の規則を提供しないことに注意してください。 たとえば、前の例で、メソッドは "a tale of two cities" を "A Tale Of Two Cities" に変換します。 しかし、en\-US カルチャで言語的に正しいタイトルの大文字小文字の表記は "A Tale of Two Cities" です。 + +## 参照 + [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) + [カルチャを認識しない文字列操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md) \ No newline at end of file diff --git a/docs/standard/base-types/character-classes-in-regular-expressions.md b/docs/standard/base-types/character-classes-in-regular-expressions.md new file mode 100644 index 00000000000..045e3faff41 --- /dev/null +++ b/docs/standard/base-types/character-classes-in-regular-expressions.md @@ -0,0 +1,592 @@ +--- +title: "正規表現での文字クラス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, 文字クラス" + - "文字クラス" + - "文字, 一致構文" + - "正規表現, 文字クラス" +ms.assetid: 0f8bffab-ee0d-4e0e-9a96-2b4a252bb7e4 +caps.latest.revision: 58 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 52 +--- +# 正規表現での文字クラス +文字クラスは、いずれかが入力文字列に含まれると一致と見なされる文字のセットを定義します。 .NET Framework の正規表現言語では、次の文字クラスがサポートされます。 + +- 文字グループの肯定。 入力文字列内の文字が指定した文字のセットのいずれかと一致する必要があります。 詳細については、「[文字グループの肯定](#PositiveGroup)」を参照してください。 + +- 文字グループの否定。 入力文字列内の文字が指定した文字のセットのいずれかと一致しない必要があります。 詳細については、「[文字グループの否定](#NegativeGroup)」を参照してください。 + +- 任意の文字。 正規表現の `.` \(ドットまたはピリオド\) 文字は、`\n` を除く任意の文字と一致するワイルドカード文字です。 詳細については、「[任意の文字](#AnyCharacter)」を参照してください。 + +- Unicode 一般カテゴリまたは名前付きブロック。 入力文字列内の文字が一致と見なされるには、その文字が特定の Unicode カテゴリのメンバーであるか、または Unicode 文字の連続した範囲内に含まれる必要があります。 詳細については、「[Unicode カテゴリまたは Unicode ブロック](#CategoryOrBlock)」を参照してください。 + +- Unicode 一般カテゴリまたは名前付きブロックの否定。 入力文字列内の文字が一致と見なされるには、その文字が特定の Unicode カテゴリのメンバーでないか、または Unicode 文字の連続した範囲内に含まれない必要があります。 詳細については、「[Unicode カテゴリまたは Unicode ブロックの否定](#NegativeCategoryOrBlock)」を参照してください。 + +- 単語に使用される文字。 入力文字列内の文字が、単語内の文字に適した Unicode カテゴリのいずれかに属することができます。 詳細については、「[単語に使用される文字](#WordCharacter)」を参照してください。 + +- 単語に使用されない文字。 入力文字列内の文字が、単語に使用される文字ではない Unicode カテゴリのいずれかに属することができます。 詳細については、「[単語に使用されない文字](#NonWordCharacter)」を参照してください。 + +- 空白文字。 入力文字列内の文字が、Unicode 区切り記号および各種制御文字のいずれかです。 詳細については、「[空白文字](#WhitespaceCharacter)」を参照してください。 + +- 空白以外の文字。 入力文字列内の文字が、空白文字以外の文字のいずれかです。 詳細については、「[空白以外の文字](#NonWhitespaceCharacter)」を参照してください。 + +- 10 進数。 入力文字列内の文字が、Unicode 10 進数に分類される各種文字のいずれかです。 詳細については、「[10 進数字](#DigitCharacter)」を参照してください。 + +- 10 進数字以外の文字。 入力文字列内の文字が、Unicode 10 進数以外の文字のいずれかです。 詳細については、「[10 進数字](#NonDigitCharacter)」を参照してください。 + + .NET Framework は、文字クラスの減算式をサポートしています。これにより、ある文字クラスから別の文字クラスを除外した結果を文字のセットとして定義できます。 詳細については、「[文字クラス減算](#CharacterClassSubtraction)」を参照してください。 + + +## 文字グループの肯定: \[ \] + 文字グループの肯定では、いずれかが入力文字列に含まれると一致と見なされる文字の一覧を指定します。 この文字の一覧は、個別に指定されることも範囲として指定されることも、その両方であることもあります。 + + 個別の文字の一覧を指定する構文は次のとおりです。 + + \[*character\_group*\] + + ここで、 *character\_group* は、入力文字列に含まれるなら一致と見なされる個別の文字の一覧です。 *character\_group* は、リテラル文字、[エスケープ文字](../../../docs/standard/base-types/character-escapes-in-regular-expressions.md)、または文字クラスを 1 つ以上組み合わせて構成されます。 + + 文字の範囲を指定する構文は次のとおりです。 + +``` +[firstCharacter-lastCharacter] +``` + + ここで、*firstCharacter* は範囲の最初の文字で、*lastCharacter* は範囲の最後の文字です。 文字範囲は連続する一連の文字で、範囲の最初の文字、ハイフン \(\-\)、および範囲の最後の文字を指定することで定義されます。 2 つの文字の Unicode コード ポイントが隣接している場合、それらの文字は連続しています。 + + 文字クラスの肯定を含む一般的な正規表現パターンをいくつか次の表に示します。 + +|パターン|説明| +|----------|--------| +|`[aeiou]`|すべての母音と一致します。| +|`[\p{P}\d]`|すべての句読点および 10 進数字と一致します。| +|`[\s\p{P}]`|すべての空白および句読点と一致します。| + + 次の例では、"a" および "e" という文字を含む文字グループの肯定を定義し、入力文字列内で "grey" または "gray" という語の後に別の語が続くと一致と見なされるようにします。 + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/positivecharclasses.cs#1)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/positivecharclasses.vb#1)] + + 正規表現パターン `gr[ae]y\s\S+?[\s|\p{P}]` は、次のように定義されます。 + +|パターン|説明| +|----------|--------| +|`gr`|リテラル文字 "gr" と一致します。| +|`[ae]`|"a" または "e" と一致します。| +|`y\s`|リテラル文字 "y" の後に空白文字が続く語と一致します。| +|`\S+?`|1 つ以上 \(ただし、できるだけ少ない数\) の空白以外の文字と一致します。| +|`[\s\p{P}]`|空白文字または句読点と一致します。| + + 次の例は、大文字で始まる語と一致します。 部分式 `[A-Z]` を使用して、A から Z の範囲の大文字を表します。 + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/range.cs#3)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/range.vb#3)] + + 正規表現 `\b[A-Z]\w*\b` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`[A-Z]`|A から Z の任意の大文字と一致します。| +|`\w*`|0 個以上の単語に使用される文字に一致します。| +|`\b`|ワード境界に一致します。| + + [ページのトップへ](#Top) + + +## 文字グループの否定: \[^\] + 文字グループの否定では、入力文字列に含まれなければ一致と見なされる文字の一覧を指定します。 この文字の一覧は、個別に指定されることも範囲として指定されることも、その両方であることもあります。 + + 個別の文字の一覧を指定する構文は次のとおりです。 + + \[*^character\_group*\] + + ここで、*character\_group* は、入力文字列に含まれない場合に一致と見なされる個別の文字の一覧です。 *character\_group* は、リテラル文字、[エスケープ文字](../../../docs/standard/base-types/character-escapes-in-regular-expressions.md)、または文字クラスを 1 つ以上組み合わせて構成されます。 + + 文字の範囲を指定する構文は次のとおりです。 + + \[^*firstCharacter*\-*lastCharacter*\] + + ここで、*firstCharacter* は範囲の最初の文字で、*lastCharacter* は範囲の最後の文字です。 文字範囲は連続する一連の文字で、範囲の最初の文字、ハイフン \(\-\)、および範囲の最後の文字を指定することで定義されます。 2 つの文字の Unicode コード ポイントが隣接している場合、それらの文字は連続しています。 + + 複数の文字範囲を連結することもできます。 たとえば、"0" ~ "9" の範囲の 10 進数、"a" ~ "f" の範囲の小文字、および "A" ~ "F" の範囲の大文字を指定するには、`[0-9a-fA-F]` を使用します。 + + 文字グループの否定における先頭のキャレット文字 \(`^`\) は、文字グループが文字グループの肯定ではなく文字グループの否定であることを示し、省略できません。 + +> [!IMPORTANT] +> 大規模な正規表現パターンにおける文字グループの否定は、ゼロ幅アサーションではありません。 つまり、正規表現エンジンは、文字グループの否定を評価した後に、入力文字列内で 1 文字進みます。 + + 文字グループの否定を含む一般的な正規表現パターンをいくつか次の表に示します。 + +|パターン|説明| +|----------|--------| +|`[^aeiou]`|母音を除くすべての文字と一致します。| +|`[^\p{P}\d]`|句読点および 10 進数字を除くすべての文字と一致します。| + + 次の例は、"th" という文字で始まってその後に "o" が続かない語と一致します。 + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/negativecharclasses.cs#2)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/negativecharclasses.vb#2)] + + 正規表現 `\bth[^o]\w+\b` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`th`|リテラル文字 "th" と一致します。| +|`[^o]`|"o" 以外の任意の文字と一致します。| +|`\w+`|1 つ以上の単語文字に一致します。| +|`\b`|ワード境界で終了します。| + + [ページのトップへ](#Top) + + +## 任意の文字: . + ピリオド文字 \(.\) は、`\n` \(改行文字、\\u000A\) を除く任意の文字と一致しますが、次の 2 つの制限があります。 + +- 正規表現パターンが オプションで修飾されている場合、または `.` 文字クラスを含むパターンの一部が `s` オプションで修飾されている場合は、`.` は任意の文字と一致します。 詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」を参照してください。 + + `.` 文字クラスの既定の動作と オプションが指定されている場合の動作の違いの例を次に示します。 正規表現 `^.+` は文字列の先頭から開始し、すべての文字と一致します。 既定では、照合は 1 行目の末尾で終了します。正規表現パターンは復帰文字 `\r` \(\\u000D\) と一致しますが、`\n` とは一致しません。 オプションは入力文字列全体を単一行として解釈するので、`\n` を含む入力文字列内のすべての文字と一致します。 + + [!code-csharp[Conceptual.Regex.Language.CharacterClasses#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/any2.cs#5)] + [!code-vb[Conceptual.Regex.Language.CharacterClasses#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/any2.vb#5)] + +> [!NOTE] +> `.` 文字クラスは `\n` を除く任意の文字と一致するので、このクラスも `\r` \(復帰文字、\\u000D\) と一致します。 + +- 文字グループの肯定または文字グループの否定に含まれているピリオドは、文字クラスではなくリテラルのピリオド文字として扱われます。 詳細については、このトピックで前述した「[文字グループの肯定](#PositiveGroup)」および「[文字グループの否定](#NegativeGroup)」を参照してください。 ピリオド文字 \(`.`\) を文字クラスとしても文字グループの肯定のメンバーとしても含む正規表現を定義する例を次に示します。 正規表現 `\b.*[.?!;:](\s|\z)` はワード境界から開始し、ピリオドを含む 4 つの句読点のいずれかが検出されるまで任意の文字と一致し、空白文字または文字列の末尾と一致します。 + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/any1.cs#4)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/any1.vb#4)] + +> [!NOTE] +> `.` 言語要素は任意の文字と一致するので、正規表現パターンが任意の文字と複数回一致する場合に最短一致の量指定子と共によく使用されます。 詳細については、\[[限定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md)\] を参照してください: + + [ページのトップへ](#Top) + + +## Unicode カテゴリまたは Unicode ブロック: \\p{} + Unicode 規格では、各文字に一般カテゴリが割り当てられています。 たとえば、特定の文字は、英大文字 \(`Lu` カテゴリで表されます\)、10 進数 \(`Nd` カテゴリ\)、数学記号 \(`Sm` カテゴリ\)、または段落区切り記号 \(`Zl` カテゴリ\) に分類できます。 また、Unicode 規格の特定の文字セットは、特定の範囲またはブロックの連続したコード ポイントに対応します。 たとえば、基本的なラテン語文字セットは \\u0000 ~ \\u007F で、アラビア語文字セットは \\u0600 ~ \\u06FF です。 + + 正規表現の構成要素 + + `\p{` *name* `}` + + は、Unicode 一般カテゴリまたは名前付きブロックに属する任意の文字と一致します。ここで、*name* はカテゴリの省略形または名前付きブロックの名前です。 カテゴリの省略形の一覧については、このトピックで後述する「[サポートされている Unicode 一般カテゴリ](#SupportedUnicodeGeneralCategories)」を参照してください。 名前付きブロックの一覧については、このトピックで後述する「[サポートされている名前付きブロック](#SupportedNamedBlocks)」を参照してください。 + + `\p{` *name* `}` 構成要素を使用して Unicode 一般カテゴリ \(この場合は `Pd` \(Punctuation, Dash: 句読点、ダッシュ\) カテゴリ\) と名前付きブロック \(`IsGreek` 名前付きブロックおよび `IsBasicLatin` 名前付きブロック\) の両方を照合する例を次に示します。 + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/category1.cs#6)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/category1.vb#6)] + + 正規表現 `\b(\p{IsGreek}+(\s)?)+\p{Pd}\s(\p{IsBasicLatin}+(\s)?)+` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`\p{IsGreek}+`|1 つ以上のギリシャ文字と一致します。| +|`(\s)?`|0 個または 1 個の空白文字と一致します。| +|`(\p{IsGreek}+(\s)?)+`|1 つ以上のギリシャ文字の後に 0 個または 1 個の空白文字が 1 回以上続くパターンに一致します。| +|`\p{Pd}`|Punctuation, Dash \(句読点、ダッシュ\) 文字と一致します。| +|`\s`|空白文字と一致します。| +|`\p{IsBasicLatin}+`|1 つ以上の基本的なラテン文字と一致します。| +|`(\s)?`|0 個または 1 個の空白文字と一致します。| +|`(\p{IsBasicLatin}+(\s)?)+`|1 つ以上の基本的なラテン文字の後に 0 個または 1 個の空白文字が 1 回以上続くパターンに一致します。| + + [ページのトップへ](#Top) + + +## Unicode カテゴリまたは Unicode ブロックの否定: \\P{} + Unicode 規格では、各文字に一般カテゴリが割り当てられています。 たとえば、特定の文字は、英大文字 \(`Lu` カテゴリで表されます\)、10 進数 \(`Nd` カテゴリ\)、数学記号 \(`Sm` カテゴリ\)、または段落区切り記号 \(`Zl` カテゴリ\) に分類できます。 また、Unicode 規格の特定の文字セットは、特定の範囲またはブロックの連続したコード ポイントに対応します。 たとえば、基本的なラテン語文字セットは \\u0000 ~ \\u007F で、アラビア語文字セットは \\u0600 ~ \\u06FF です。 + + 正規表現の構成要素 + + `\P{` *name* `}` + + は、Unicode 一般カテゴリにも名前付きブロックにも属さない任意の文字と一致します。ここで、*name* はカテゴリの省略形または名前付きブロックの名前です。 カテゴリの省略形の一覧については、このトピックで後述する「[サポートされている Unicode 一般カテゴリ](#SupportedUnicodeGeneralCategories)」を参照してください。 名前付きブロックの一覧については、このトピックで後述する「[サポートされている名前付きブロック](#SupportedNamedBlocks)」を参照してください。 + + `\P{` *name* `}` 構成要素を使用して通貨記号 \(この場合は `Sc` \(Symbol, Currency: 記号、通貨\) カテゴリ\) を数値文字列から削除する例を次に示します。 + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/notcategory1.cs#7)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/notcategory1.vb#7)] + + 正規表現パターン `(\P{Sc})+` は、通貨記号以外の 1 つ以上の文字と一致し、実質的に結果文字列から通貨記号を削除します。 + + [ページのトップへ](#Top) + + +## 単語に使用される文字: \\w + `\w` は、単語に使用される任意の文字と一致します。 単語に使用される文字は、次の表に示す Unicode カテゴリのメンバーです。 + +|カテゴリ|説明| +|----------|--------| +|Ll|Letter, Lowercase \(字、小文字\)| +|Lu|Letter, Uppercase \(字、大文字\)| +|Lt|Letter, Titlecase \(字、タイトル文字\)| +|Lo|Letter, Other \(字、その他\)| +|Lm|Letter, Modifier \(字、修飾\)| +|Nd|Number, Decimal Digit \(数、10 進数字\)| +|Pc|Punctuation, Connector \(句読点、接続\)。 このカテゴリには 10 文字が含まれ、そのうち最もよく使用される文字は LOWLINE 文字 \(\_\)、u\+005F です。| + + ECMAScript 準拠の動作が指定された場合、`\w` は `[a-zA-Z_0-9]` と同じになります。 ECMAScript 正規表現の詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」の「ECMAScript 一致の動作」のセクションを参照してください。 + +> [!NOTE] +> `\w` 言語要素は単語に使用される任意の文字と一致するので、正規表現パターンが単語に使用される任意の文字の後に特定の単語に使用される文字が続く語と複数回一致する場合に最短一致の量指定子と共によく使用されます。 詳細については、\[[限定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md)\] を参照してください: + + `\w` 言語要素を使用して単語内の重複する文字を照合する例を次に示します。 この例では、次のように解釈できる正規表現パターン `(\w)\1` を定義しています。 + +|要素|説明| +|--------|--------| +|\(\\w\)|単語に使用される文字と一致します。 これが最初のキャプチャ グループです。| +|\\1|最初のキャプチャの値と一致します。| + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/wordchar1.cs#8)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/wordchar1.vb#8)] + + [ページのトップへ](#Top) + + +## 単語に使用されない文字: \\W + `\W` は、単語に使用される文字以外の任意の文字と一致します。 \\W 言語要素は、次の文字クラスと同じ結果をもたらします。 + +``` +[^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}] +``` + + つまり、次の表に示す文字を除く任意の文字と一致します。 + +|カテゴリ|説明| +|----------|--------| +|Ll|Letter, Lowercase \(字、小文字\)| +|Lu|Letter, Uppercase \(字、大文字\)| +|Lt|Letter, Titlecase \(字、タイトル文字\)| +|Lo|Letter, Other \(字、その他\)| +|Lm|Letter, Modifier \(字、修飾\)| +|Nd|Number, Decimal Digit \(数、10 進数字\)| +|Pc|Punctuation, Connector \(句読点、接続\)。 このカテゴリには 10 文字が含まれ、そのうち最もよく使用される文字は LOWLINE 文字 \(\_\)、u\+005F です。| + + ECMAScript 準拠の動作が指定された場合、`\W` は `[^a-zA-Z_0-9]` と同じになります。 ECMAScript 正規表現の詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」の「ECMAScript 一致の動作」のセクションを参照してください。 + +> [!NOTE] +> `\W` 言語要素は単語に使用されない任意の文字と一致するので、正規表現パターンが単語に使用されない任意の文字の後に特定の単語に使用されない文字が続く語と複数回一致する場合に最短一致の量指定子と共によく使用されます。 詳細については、\[[限定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md)\] を参照してください: + + `\W` 文字クラスの例を次に示します。 この例では、単語の後に 1 つまたは 2 つの単語に使用されない文字 \(空白や句読点など\) が続く場合に一致する正規表現パターン `\b(\w+)(\W){1,2}` を定義しています。 この正規表現の解釈を次の表に示します。 + +|要素|説明| +|--------|--------| +|\\b|ワード境界から照合を開始します。| +|\(\\w\+\)|1 つ以上の単語文字に一致します。 これが最初のキャプチャ グループです。| +|\(\\W\){1,2}|単語に使用されない文字と 1 回または 2 回一致します。 これが 2 番目のキャプチャ グループです。| + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/nonwordchar1.cs#9)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/nonwordchar1.vb#9)] + + 2 番目のキャプチャ グループの オブジェクトには、キャプチャされた単語に使用されない文字が 1 つだけ含まれるので、この例では、 プロパティによって返される オブジェクトから、キャプチャされたすべての単語に使用されない文字を取得します。 + + [ページのトップへ](#Top) + + +## 空白文字: \\s + `\s` は、空白文字と一致します。 次の表に示すエスケープ シーケンスおよび Unicode カテゴリと同じ結果をもたらします。 + +|カテゴリ|説明| +|----------|--------| +|`\f`|フォーム フィード文字 \(\\u000C\)。| +|`\n`|改行文字 \(\\u000A\)。| +|`\r`|復帰文字 \(\\u000D\)。| +|`\t`|タブ文字 \(\\u0009\)。| +|`\v`|垂直タブ文字 \(\\u000B\)。| +|`\x85`|省略記号または NEXT LINE \(NEL\) 文字 \(…\) \(\\u0085\)。| +|`\p{Z}`|任意の区切り記号と一致します。| + + ECMAScript 準拠の動作が指定された場合、`\s` は `[\f\n\r\t\v]` と同じになります。 ECMAScript 正規表現の詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」の「ECMAScript 一致の動作」のセクションを参照してください。 + + `\s` 文字クラスの例を次に示します。 この例では、"s" または "es" で終わる単語の後に空白文字または入力文字列の末尾が続く場合に一致する正規表現パターン `\b\w+(e)?s(\s|$)` を定義しています。 この正規表現の解釈を次の表に示します。 + +|要素|説明| +|--------|--------| +|\\b|ワード境界から照合を開始します。| +|\\w\+|1 つ以上の単語文字に一致します。| +|\(e\)?|"e" と 0 回または 1 回一致します。| +|s|"s" と一致します。| +|\(\\s|$\)|空白文字または入力文字列の末尾と一致します。| + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/whitespace1.cs#10)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/whitespace1.vb#10)] + + [ページのトップへ](#Top) + + +## 空白以外の文字: \\S + `\S` は、空白文字以外の任意の文字と一致します。 `[^\f\n\r\t\v\x85\p{Z}]` 正規表現パターン、または空白文字と一致する `\s` に相当する正規表現パターンの逆と同じ結果をもたらします。 詳細については、「[空白文字: \\s](#WhitespaceCharacter)」を参照してください。 + + ECMAScript 準拠の動作が指定された場合、`\S` は `[^ \f\n\r\t\v]` と同じになります。 ECMAScript 正規表現の詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」の「ECMAScript 一致の動作」のセクションを参照してください。 + + `\S` 言語要素の例を次に示します。 正規表現パターン `\b(\S+)\s?` は、空白文字で区切られた文字列と一致します。 一致部分の オブジェクトの 2 番目の要素に一致する文字列が含まれます。 この正規表現の解釈を次の表に示します。 + +|要素|説明| +|--------|--------| +|`\b`|ワード境界から照合を開始します。| +|`(\S+)`|1 つ以上の空白以外の文字と一致します。 これが最初のキャプチャ グループです。| +|`\s?`|0 個または 1 個の空白文字と一致します。| + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/nonwhitespace1.cs#11)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/nonwhitespace1.vb#11)] + + [ページのトップへ](#Top) + + +## 10 進数字: \\d + `\d` は、10 進数字と一致します。 標準の 10 進数 0 ~ 9 およびその他の各種文字セットの 10 進数を含む `\p{Nd}` 正規表現パターンと同じ結果をもたらします。 + + ECMAScript 準拠の動作が指定された場合、`\d` は `[0-9]` と同じになります。 ECMAScript 正規表現の詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」の「ECMAScript 一致の動作」のセクションを参照してください。 + + `\d` 言語要素の例を次に示します。 この例では、入力文字列が米国およびカナダの有効な電話番号を表すかどうかをテストします。 正規表現パターン `^(\(?\d{3}\)?[\s-])?\d{3}-\d{4}$` は、次の表に示すように定義されています。 + +|要素|説明| +|--------|--------| +|`^`|入力文字列の先頭から照合を開始します。| +|`\(?`|0 個または 1 個のリテラル "\(" 文字と一致します。| +|`\d{3}`|3 個の 10 進数と一致します。| +|`\)?`|0 個または 1 個のリテラル "\)" 文字と一致します。| +|`[\s-]`|ハイフンまたは空白文字と一致します。| +|`(\(? \d{3}\)?[\s-])?`|省略可能な左かっこの後に 3 個の 10 進数が続く部分、省略可能な右かっこ、および空白文字またはハイフンと 0 回または 1 回一致します。 これが最初のキャプチャ グループです。| +|`\d{3}-\d{4}`|3 個の 10 進数の後にハイフンおよび 4 個以上の 10 進数が続く場合に一致します。| +|`$`|入力文字列の末尾と一致します。| + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/digit1.cs#12)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/digit1.vb#12)] + + [ページのトップへ](#Top) + + +## 数字以外の文字: \\D + `\D` は、数字以外の文字と一致します。 `\P{Nd}` 正規表現パターンと同じ結果をもたらします。 + + ECMAScript 準拠の動作が指定された場合、`\D` は `[^0-9]` と同じになります。 ECMAScript 正規表現の詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」の「ECMAScript 一致の動作」のセクションを参照してください。 + + \\D 言語要素の例を次に示します。 部品番号などの文字列が 10 進数および 10 進数以外の文字を適切に組み合わせて構成されているかどうかをテストします。 正規表現パターン `^\D\d{1,5}\D*$` は、次の表に示すように定義されています。 + +|要素|説明| +|--------|--------| +|`^`|入力文字列の先頭から照合を開始します。| +|`\D`|数字以外の文字と一致します。| +|`\d{1,5}`|1 ~ 5 個の 10 進数と一致します。| +|`\D*`|0 個または 1 個以上の 10 進数以外の文字と一致します。| +|`$`|入力文字列の末尾と一致します。| + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#13](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/nondigit1.cs#13)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/nondigit1.vb#13)] + + [ページのトップへ](#Top) + + +## サポートされている Unicode 一般カテゴリ + Unicode は、次の表に示されている一般カテゴリを定義しています。 詳細については、「[Unicode Character Database \(Unicode 文字データベース\)](http://go.microsoft.com/fwlink/?LinkId=57650)」内の「UCD File Format \(UCD ファイル形式\)」および「General Category Values \(一般カテゴリの値\)」を参照してください。 + +|カテゴリ|説明| +|----------|--------| +|`Lu`|Letter, Uppercase \(字、大文字\)| +|`Ll`|Letter, Lowercase \(字、小文字\)| +|`Lt`|Letter, Titlecase \(字、タイトル文字\)| +|`Lm`|Letter, Modifier \(字、修飾\)| +|`Lo`|Letter, Other \(字、その他\)| +|`L`|すべてのアルファベット文字。 これには、`Lu`、`Ll`、`Lt`、`Lm`、および `Lo` の各文字が含まれます。| +|`Mn`|Mark, Nonspacing \(結合文字、幅なし\)| +|`Mc`|Mark, Spacing Combining \(結合文字、幅あり\)| +|`Me`|Mark, Enclosing \(結合文字、囲み\)| +|`M`|すべての分音記号。 これには、`Mn`、`Mc`、および `Me` の各カテゴリが含まれます。| +|`Nd`|Number, Decimal Digit \(数、10 進数字\)| +|`Nl`|Number, Letter \(数、字\)| +|`No`|Number, Other \(数、その他\)| +|`N`|すべての数。 これには、`Nd`、`Nl`、および `No` の各カテゴリが含まれます。| +|`Pc`|Punctuation, Connector \(句読点、接続\)| +|`Pd`|Punctuation, Dash \(句読点、ダッシュ\)| +|`Ps`|Punctuation, Open \(句読点、開き\)| +|`Pe`|Punctuation, Close \(句読点、閉じ\)| +|`Pi`|Punctuation, Initial quote \(句読点、開始引用符。使用状況に応じて Ps または Pe のように動作\)| +|`Pf`|Punctuation, Final quote \(句読点、終了引用符。使用状況に応じて Ps または Pe のように動作\)| +|`Po`|Punctuation, Other \(句読点、その他\)| +|`P`|すべての句読点。 これには、`Pc`、`Pd`、`Ps`、`Pe`、`Pi`、`Pf`、および `Po` の各カテゴリが含まれます。| +|`Sm`|Symbol, Math \(記号、数学\)| +|`Sc`|Symbol, Currency \(記号、通貨\)| +|`Sk`|Symbol, Modifier \(記号、修飾\)| +|`So`|Symbol, Other \(記号、その他\)| +|`S`|すべての記号。 これには、`Sm`、`Sc`、`Sk`、および `So` の各カテゴリが含まれます。| +|`Zs`|Separator, Space \(区切り、空白\)| +|`Zl`|Separator, Line \(区切り、行\)| +|`Zp`|Separator, Paragraph \(区切り、段落\)| +|`Z`|すべての区切り記号。 これには、`Zs`、`Zl`、および `Zp` の各カテゴリが含まれます。| +|`Cc`|Other, Control \(区切り、制御\)| +|`Cf`|Other, Format \(その他、書式\)| +|`Cs`|Other, Surrogate \(その他、サロゲート\)| +|`Co`|Other, Private Use \(その他、プライベート用途\)| +|`Cn`|Other, Not Assigned \(その他、未割り当て。このプロパティを持つ文字はありません\)| +|`C`|すべての制御文字。 これには、`Cc`、`Cf`、`Cs`、`Co`、および `Cn` の各カテゴリが含まれます。| + + 特定の文字の Unicode カテゴリを確認するには、その文字を メソッドに渡します。 メソッドを使用して、選択したラテン文字を含む配列の各要素のカテゴリを確認する例を次に示します。 + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#14](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/getunicodecategory1.cs#14)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/getunicodecategory1.vb#14)] + + [ページのトップへ](#Top) + + +## サポートされている名前付きブロック + .NET Framework には、次の表に示す名前付きブロックが用意されています。 サポートされている一連の名前付きブロックは、Unicode 4.0 および Perl 5.6 に基づいています。 + +|コード ポイント範囲|ブロック名| +|----------------|-----------| +|0000 ~ 007F|`IsBasicLatin`| +|0080 ~ 00FF|`IsLatin-1Supplement`| +|0100 ~ 017F|`IsLatinExtended-A`| +|0180 ~ 024F|`IsLatinExtended-B`| +|0250 ~ 02AF|`IsIPAExtensions`| +|02B0 ~ 02FF|`IsSpacingModifierLetters`| +|0300 ~ 036F|`IsCombiningDiacriticalMarks`| +|0370 ~ 03FF|`IsGreek`

または

`IsGreekandCoptic`| +|0400 ~ 04FF|`IsCyrillic`| +|0500 ~ 052F|`IsCyrillicSupplement`| +|0530 ~ 058F|`IsArmenian`| +|0590 ~ 05FF|`IsHebrew`| +|0600 ~ 06FF|`IsArabic`| +|0700 ~ 074F|`IsSyriac`| +|0780 ~ 07BF|`IsThaana`| +|0900 ~ 097F|`IsDevanagari`| +|0980 ~ 09FF|`IsBengali`| +|0A00 ~ 0A7F|`IsGurmukhi`| +|0A80 ~ 0AFF|`IsGujarati`| +|0B00 ~ 0B7F|`IsOriya`| +|0B80 ~ 0BFF|`IsTamil`| +|0C00 ~ 0C7F|`IsTelugu`| +|0C80 ~ 0CFF|`IsKannada`| +|0D00 ~ 0D7F|`IsMalayalam`| +|0D80 ~ 0DFF|`IsSinhala`| +|0E00 ~ 0E7F|`IsThai`| +|0E80 ~ 0EFF|`IsLao`| +|0F00 ~ 0FFF|`IsTibetan`| +|1000 ~ 109F|`IsMyanmar`| +|10A0 ~ 10FF|`IsGeorgian`| +|1100 ~ 11FF|`IsHangulJamo`| +|1200 ~ 137F|`IsEthiopic`| +|13A0 ~ 13FF|`IsCherokee`| +|1400 ~ 167F|`IsUnifiedCanadianAboriginalSyllabics`| +|1680 ~ 169F|`IsOgham`| +|16A0 ~ 16FF|`IsRunic`| +|1700 ~ 171F|`IsTagalog`| +|1720 ~ 173F|`IsHanunoo`| +|1740 ~ 175F|`IsBuhid`| +|1760 ~ 177F|`IsTagbanwa`| +|1780 ~ 17FF|`IsKhmer`| +|1800 ~ 18AF|`IsMongolian`| +|1900 ~ 194F|`IsLimbu`| +|1950 ~ 197F|`IsTaiLe`| +|19E0 ~ 19FF|`IsKhmerSymbols`| +|1D00 ~ 1D7F|`IsPhoneticExtensions`| +|1E00 ~ 1EFF|`IsLatinExtendedAdditional`| +|1F00 ~ 1FFF|`IsGreekExtended`| +|2000 ~ 206F|`IsGeneralPunctuation`| +|2070 ~ 209F|`IsSuperscriptsandSubscripts`| +|20A0 ~ 20CF|`IsCurrencySymbols`| +|20D0 ~ 20FF|`IsCombiningDiacriticalMarksforSymbols`

または

`IsCombiningMarksforSymbols`| +|2100 ~ 214F|`IsLetterlikeSymbols`| +|2150 ~ 218F|`IsNumberForms`| +|2190 ~ 21FF|`IsArrows`| +|2200 ~ 22FF|`IsMathematicalOperators`| +|2300 ~ 23FF|`IsMiscellaneousTechnical`| +|2400 ~ 243F|`IsControlPictures`| +|2440 ~ 245F|`IsOpticalCharacterRecognition`| +|2460 ~ 24FF|`IsEnclosedAlphanumerics`| +|2500 ~ 257F|`IsBoxDrawing`| +|2580 ~ 259F|`IsBlockElements`| +|25A0 ~ 25FF|`IsGeometricShapes`| +|2600 ~ 26FF|`IsMiscellaneousSymbols`| +|2700 ~ 27BF|`IsDingbats`| +|27C0 ~ 27EF|`IsMiscellaneousMathematicalSymbols-A`| +|27F0 ~ 27FF|`IsSupplementalArrows-A`| +|2800 ~ 28FF|`IsBraillePatterns`| +|2900 ~ 297F|`IsSupplementalArrows-B`| +|2980 ~ 29FF|`IsMiscellaneousMathematicalSymbols-B`| +|2A00 ~ 2AFF|`IsSupplementalMathematicalOperators`| +|2B00 ~ 2BFF|`IsMiscellaneousSymbolsandArrows`| +|2E80 ~ 2EFF|`IsCJKRadicalsSupplement`| +|2F00 ~ 2FDF|`IsKangxiRadicals`| +|2FF0 ~ 2FFF|`IsIdeographicDescriptionCharacters`| +|3000 ~ 303F|`IsCJKSymbolsandPunctuation`| +|3040 ~ 309F|`IsHiragana`| +|30A0 ~ 30FF|`IsKatakana`| +|3100 ~ 312F|`IsBopomofo`| +|3130 ~ 318F|`IsHangulCompatibilityJamo`| +|3190 ~ 319F|`IsKanbun`| +|31A0 ~ 31BF|`IsBopomofoExtended`| +|31F0 ~ 31FF|`IsKatakanaPhoneticExtensions`| +|3200 ~ 32FF|`IsEnclosedCJKLettersandMonths`| +|3300 ~ 33FF|`IsCJKCompatibility`| +|3400 ~ 4DBF|`IsCJKUnifiedIdeographsExtensionA`| +|4DC0 ~ 4DFF|`IsYijingHexagramSymbols`| +|4E00 ~ 9FFF|`IsCJKUnifiedIdeographs`| +|A000 ~ A48F|`IsYiSyllables`| +|A490 ~ A4CF|`IsYiRadicals`| +|AC00 ~ D7AF|`IsHangulSyllables`| +|D800 ~ DB7F|`IsHighSurrogates`| +|DB80 ~ DBFF|`IsHighPrivateUseSurrogates`| +|DC00 ~ DFFF|`IsLowSurrogates`| +|E000 ~ F8FF|`IsPrivateUse` または `IsPrivateUseArea`| +|F900 ~ FAFF|`IsCJKCompatibilityIdeographs`| +|FB00 ~ FB4F|`IsAlphabeticPresentationForms`| +|FB50 ~ FDFF|`IsArabicPresentationForms-A`| +|FE00 ~ FE0F|`IsVariationSelectors`| +|FE20 ~ FE2F|`IsCombiningHalfMarks`| +|FE30 ~ FE4F|`IsCJKCompatibilityForms`| +|FE50 ~ FE6F|`IsSmallFormVariants`| +|FE70 ~ FEFF|`IsArabicPresentationForms-B`| +|FF00 ~ FFEF|`IsHalfwidthandFullwidthForms`| +|FFF0 ~ FFFF|`IsSpecials`| + + [ページのトップへ](#Top) + + +## 文字クラスの減算: \[base\_group \- \[excluded\_group\]\] + 文字クラスは、文字のセットを定義します。 文字クラス減算によって、ある文字クラスから別の文字クラスの文字を除外した文字セットが生成されます。 + + 文字クラス減算式の形式は次のとおりです。 + + `[` *base\_group* `-[` *excluded\_group* `]]` + + 角かっこ \(`[]`\) とハイフン \(`-`\) は省略できません。 *base\_group* は、[文字グループの肯定](#PositiveGroup)または[文字グループの否定](#NegativeGroup)です。 *excluded\_group* は、別の文字グループの肯定または文字グループの否定、あるいは別の文字クラス減算式です \(つまり文字クラス減算式は入れ子にすることができます\)。 + + たとえば、"a" ~ "z" の文字範囲で構成される基本グループがあるとします。 "m" を除外した基本グループで構成される文字のセットを定義するには、`[a-z-[m]]` を使用します。 "d"、"j" および "p" の文字を除外した基本グループで構成される文字のセットを定義するには、`[a-z-[djp]]` を使用します。 "m" ~ "p" の文字範囲を除外した基本グループで構成される文字のセットを定義するには、`[a-z-[m-p]]` を使用します。 + + 入れ子になった文字クラス減算式 `[a-z-[d-w-[m-o]]]` について考えてみます。 この式は、最も内部の文字範囲から順に外側へと評価されます。 まず、"m" ~ "o" の文字範囲が "d" ~ "w" の文字範囲から減算されて、"d" ~ "l" および "p" ~ "w" の文字セットが生成されます。 さらにこのセットが "a" ~ "z" の文字範囲から減算されて、`[abcmnoxyz]` という文字セットが生成されます。 + + 文字クラス減算では、任意の文字クラスを使用できます。 \\u0000 ~ \\uFFFF の Unicode 文字から空白文字 \(`\s`\)、句読点一般カテゴリの文字 \(`\p{P}`\)、`IsGreek` 名前付きブロック内の文字 \(`\p{IsGreek}`\)、および Unicode NEXT LINE 制御文字 \(\\x85\) を除いた文字のセットを定義するには、`[\u0000-\uFFFF-[\s\p{P}\p{IsGreek}\x85]]` を使用します。 + + 有効な結果を生成する文字クラス減算式の文字クラスを選択します。 どの文字にも一致しない空の文字セットを生成する式、または元の基本グループと同じになる式は避けてください。 たとえば、`[\p{IsBasicLatin}-[\x00-\x7F]]` という式は、`IsBasicLatin` 一般カテゴリから `IsBasicLatin` 文字範囲のすべての文字を減算して空のセットを生成します。 同様に、`[a-z-[0-9]]` という式は元の基本グループと同じセットを生成します。 これは、"a" ~ "z" の文字範囲である基本グループに、"0" ~ "9" という 10 進数字の文字範囲から成る除外対象グループ内の文字が含まれないためです。 + + 入力文字列内の 0 および奇数と一致する正規表現 `^[0-9-[2468]]+$` を定義する例を次に示します。 この正規表現の解釈を次の表に示します。 + +|要素|説明| +|--------|--------| +|^|入力文字列の先頭から照合を開始します。| +|`[0-9-[2468]]+`|2、4、6、および 8 を除く 0 ~ 9 の文字の 1 回以上の出現と一致します。 つまり、0 または奇数の 1 回以上の出現と一致します。| +|$|入力文字列の末尾で照合を終了します。| + + [!code-csharp[Conceptual.RegEx.Language.CharacterClasses#15](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/classsubtraction1.cs#15)] + [!code-vb[Conceptual.RegEx.Language.CharacterClasses#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/classsubtraction1.vb#15)] + +## 参照 + + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) + [正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md) \ No newline at end of file diff --git a/docs/standard/base-types/character-encoding.md b/docs/standard/base-types/character-encoding.md index b87b2069c38..4818bacac6d 100644 --- a/docs/standard/base-types/character-encoding.md +++ b/docs/standard/base-types/character-encoding.md @@ -1,1506 +1,270 @@ --- -title: ".NET での文字エンコード" -description: ".NET での文字エンコード" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: bce54e41-e9dc-493a-8988-1cbadc340fe8 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: a8f42fa6a37f8de6f13186ea2ac17b2b2ced1601 -ms.lasthandoff: 03/02/2017 - ---- - -# .NET での文字エンコード - -文字は、さまざまな方法で表現できる抽象エンティティです。 文字エンコーディングとは、サポートされている文字セットの各文字を、その文字を表す値と組み合わせる体系です。 たとえばモールス符号は、ローマ字の各文字を、電信線での送信に適したドットとダッシュのパターンと組み合わせる文字エンコーディングです。 コンピューターの文字エンコーディングは、サポートされている文字セットの各文字を、その文字を表す数値と組み合わせます。 文字エンコーディングには、次の&2; つの異なるコンポーネントがあります。 - -* エンコーダー。文字シーケンスを数値 (バイト) シーケンスに変換します。 - -* デコーダー。バイト シーケンスを文字シーケンスに変換します。 - -文字エンコーディングは、エンコーダーとデコーダーの動作を決める規則を表します。 たとえば、[UTF8Encoding](xref:System.Text.UTF8Encoding) クラスは、1 ~ 4 バイトを使用して 1 つの Unicode 文字を表現する UTF-8 (8-bit Unicode Transformation Format) をエンコードおよびデコードするための規則を表します。 エンコードとデコードに検証を含めることもできます。 たとえば、[UnicodeEncoding](xref:System.Text.UnicodeEncoding) クラスは、すべてのサロゲートを検証して、有効なサロゲート ペアが構成されていることを確認します (サロゲート ペアは、U+D800 ~ U+DBFF の範囲のコード ポイントを持つ文字と、それに続く U+DC00 ~ U+DFFF の範囲のコード ポイントを持つ文字で構成されます)。エンコーダーが無効な文字を処理する方法や、デコーダーが無効なバイトを処理する方法は、フォールバック ストラテジによって決まります。 - +title: ".NET Framework における文字エンコーディング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "エンコーディング, 選択" + - "エンコーディング, フォールバック ストラテジ" + - "エンコーディング, 理解" +ms.assetid: bf6d9823-4c2d-48af-b280-919c5af66ae9 +caps.latest.revision: 33 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 33 +--- +# .NET Framework における文字エンコーディング +文字は、さまざまな方法で表現できる抽象エンティティです。 文字エンコーディングとは、サポートされている文字セットの各文字を、その文字を表す値と組み合わせる体系です。 たとえばモールス符号は、ローマ字の各文字を、電信線での送信に適したドットとダッシュのパターンと組み合わせる文字エンコーディングです。 コンピューターの文字エンコーディングは、サポートされている文字セットの各文字を、その文字を表す数値と組み合わせます。 文字エンコーディングには、次の 2 つの異なるコンポーネントがあります。 + +- エンコーダー。文字シーケンスを数値 \(バイト\) シーケンスに変換します。 + +- デコーダー。バイト シーケンスを文字シーケンスに変換します。 + + 文字エンコーディングは、エンコーダーとデコーダーの動作を決める規則を表します。 たとえば、 クラスは、1 ~ 4 バイトを使用して 1 つの Unicode 文字を表現する UTF\-8 \(8\-bit Unicode Transformation Format\) をエンコードおよびデコードするための規則を表します。 エンコードとデコードに検証を含めることもできます。 たとえば、 クラスは、すべてのサロゲートを検証して、有効なサロゲート ペアが構成されていることを確認します \(サロゲート ペアは、U\+D800 ~ U\+DBFF の範囲のコード ポイントを持つ文字と、それに続く U\+DC00 ~ U\+DFFF の範囲のコード ポイントを持つ文字で構成されます\)。 エンコーダーが無効な文字を処理する方法や、デコーダーが無効なバイトを処理する方法は、フォールバック ストラテジによって決まります。 + > [!WARNING] -> .NET のエンコーディング クラスは、文字データを格納および変換するためのものです。 バイナリ データを文字列形式で格納する目的では使用しないでください。 エンコーディング クラスを使用してバイナリ データを文字列形式に変換すると、使用されているエンコーディングによっては、予期しない動作が発生したり、不正確なデータや破損したデータが生成されたりする可能性があります。 バイナリ データを文字列形式に変換するには、[Convert.ToBase64String](xref:System.Convert.ToBase64String(System.Byte[])) メソッドを使用します。 - -.NET では ([UnicodeEncoding](xref:System.Text.UnicodeEncoding) クラスによって表される) UTF-16 エンコーディングを使用して、文字と文字列を表します。 共通言語ランタイムをターゲットとするアプリケーションは、エンコーダーを使用して、共通言語ランタイムによってサポートされている Unicode 文字表現を他のエンコーディング方式に変換し、 デコーダーを使用して、Unicode 以外のエンコーディングの文字を Unicode に変換します。 - -このトピックは、次のセクションで構成されています。 - -* [.NET でのエンコード](#encodings-in-net) - -* [エンコーディング クラスの選択](#selecting-an-encoding-class) - -* [エンコーディング オブジェクトの使用](#using-an-encoding-object) - -* [フォールバック ストラテジの選択](#choosing-a-fallback-strategy) - -* [カスタム フォールバック ストラテジの実装](#implementing-a-custom-fallback-strategy) - -## .NET でのエンコード - -.NET のすべての文字エンコーディング クラスは、すべての文字エンコーディングに共通の機能を定義する抽象クラスの [System.Text.Encoding](xref:System.Text.Encoding) クラスを継承します。 .NET に実装されている個々のエンコーディング オブジェクトにアクセスするには次の方法があります。 - -* [Encoding](xref:System.Text.Encoding) クラスの静的プロパティを使用します。これらのプロパティは、.NET で使用できる標準の文字エンコーディング (ASCII、UTF-7、UTF-8、UTF-16、および UTF-32) を表すオブジェクトを返します。 たとえば、[Encoding.Unicode](xref:System.Text.Encoding.Unicode) プロパティは [UnicodeEncoding](xref:System.Text.UnicodeEncoding) オブジェクトを返します。 各オブジェクトでは、エンコードできない文字列とデコードできないバイトを処理するために、置換フォールバックが使用されます (詳細については、「[置換フォールバック](#replacement-fallback)」を参照してください)。 - -* エンコーディングのクラス コンストラクターを呼び出します。 ASCII、UTF-7、UTF-8、UTF-16、および UTF-32 の各エンコーディングのオブジェクトは、この方法でインスタンス化できます。 既定では、各オブジェクトはエンコードできない文字列とデコードできないバイトを処理するために置換フォールバックを使用します。ただし、代わりに例外がスローされるように指定することもできます (詳細については、「[置換フォールバック](#replacement-fallback)」と「[例外フォールバック](#exception-fallback)」を参照してください)。 - -* [Encoding.Encoding(Int32)](xref:System.Text.Encoding.GetEncoding(System.Int32)) コンストラクターを呼び出して、エンコーディングを表す整数を渡します。 エンコードできない文字列とデコードできないバイトの処理には、標準エンコーディングのエンコーディング オブジェクトでは置換フォールバックが、コード ページ エンコーディングと&2; バイト文字セット (DBCS) エンコーディングのエンコーディング オブジェクトでは最適フォールバックが使用されます (詳細については、「[最適フォールバック](#best-fit-fallback)」を参照してください)。 - -* [Encoding.GetEncoding](xref:System.Text.Encoding.GetEncoding(System.Int32)) メソッドを呼び出します。このメソッドは、.NET で使用できる任意のエンコーディング (標準、コード ページ、または DBCS) を返します。 オーバーロードを使用すると、エンコーダーおよびデコーダーの両方のフォールバック オブジェクトを指定できます。 - -> [!NOTE] -> Unicode 規格では、サポートされるすべてのスクリプトについて、各文字にコード ポイント (数値) と名前を割り当てています。 たとえば、文字 "A" は U+0041 というコード ポイントと、"LATIN CAPITAL LETTER A" という名前で表されます。 UTF (Unicode Transformation Format) エンコーディングは、そのコード ポイントを&1; つ以上のバイトのシーケンスにエンコードする方法を定義します。 Unicode エンコーディング方式を使用すると、任意の文字セットの文字を&1; つのエンコーディング方式で表現できるため、国際対応アプリケーションの開発が簡素化されます。 これにより、アプリケーション開発者が、特定の言語または書記体系の文字を表すために使用されるエンコーディング方式を追跡する必要はなくなります。また、データを破損することなく、各国のシステム間でデータを共有できます。 -> -> .NET では、Unicode 規格によって定義されている UTF-8、UTF-16、および UTF-32 の&3; つのエンコーディングをサポートしています。 詳細については、[Unicode](http://www.unicode.org/) ホーム ページの Unicode 標準を参照してください。 - -.NET でサポートされている文字エンコーディング システムを次の表に示します。 - -エンコード | クラス | 説明 | 長所/短所 --------- | ----- | ----------- | ------------------------ -ASCII | [ASCIIEncoding](xref:System.Text.ASCIIEncoding) | バイトの下位&7; ビットを使用して、限られた範囲の文字をエンコードします。 | ASCII エンコーディングでは、U+0000 から U+007F までの文字値しかサポートされていないため、ほとんどの場合、国際対応アプリケーションでは ASCII エンコーディングの使用は不適切です。 -UTF-7 | [UTF7Encoding](xref:System.Text.UTF7Encoding) | 文字を 7 ビット ASCII 文字のシーケンスとして表します。 ASCII 以外の Unicode 文字は、ASCII 文字のエスケープ シーケンスによって表します。 | UTF-7 は、電子メールやニュースグループなどのプロトコルをサポートします。 ただし、UTF-7 は特に安全でも堅牢でもありません。 場合によっては、1 ビットの変更により、UTF-7 文字列全体の解釈が完全に変わる場合があります。 他の場合には、異なる UTF-7 文字列がエンコードによって同じテキストになる可能性もあります。 ASCII 以外の文字を含むシーケンスの場合、UTF-7 は UTF-8 よりも多くの空間を必要とし、エンコードとデコードに時間がかかります。 したがって、可能であれば、UTF-7 ではなく UTF-8 を使用してください。 -UTF-8 | [UTF8Encoding](xref:System.Text.UTF8Encoding) | 各 Unicode コード ポイントが、1 バイトから&4; バイトのシーケンスとして表現されます。 | UTF-8 では、8 ビット データ サイズがサポートされており、既存の多くのオペレーティング システムに対応できます。 ASCII 範囲の文字については、UTF-8 は ASCII エンコーディングと一致し、より広範な文字を提供します。 ただし、CJK (中国語、日本語、韓国語) スクリプトでは、UTF-8 の各文字に&3; バイトが必要となることがあり、データ サイズが UTF-16 より大きくなる可能性があります。 ただし、CJK 範囲によるサイズの増加が HTML タグなどの ASCII データのサイズによって相殺されることもあります。 -UTF-16 | [UnicodeEncoding](xref:System.Text.UnicodeEncoding) | 各 Unicode コード ポイントが、1 つまたは 2 つの 16 ビット整数のシーケンスとして表現されます。 ほとんどの一般的な Unicode 文字で必要とされる UTF-16 コード ポイントは&1; つだけです。ただし、Unicode の補助文字 (U+10000 以上) には&2; つの UTF-16 サロゲート コード ポイントが必要です。 リトル エンディアンとビッグ エンディアンの両方のバイト順をサポートしています。 | UTF-16 エンコーディングは、共通言語ランタイムでは Char および String の値を表現するために、Windows オペレーティング システムでは WCHAR の値を表現するために使用されています。 -UTF-32 | [UTF32Encoding](xref:System.Text.UTF32Encoding) | 各 Unicode コード ポイントが 32 ビット整数として表現されます。 リトル エンディアンとビッグ エンディアンの両方のバイト順をサポートしています。 | UTF-32 エンコーディングは、エンコードされた空白がきわめて重要な意味を持つオペレーティング システムで、アプリケーションが UTF-16 エンコーディングのサロゲート コード ポイント動作を回避する必要がある場合に使用します。 ディスプレイ上でレンダリングされる&1; つのグリフも複数の UTF-32 文字でエンコードされることがあります。 - -これらのエンコーディングを使用することにより、Unicode 文字だけでなく、レガシ アプリケーションで最もよく使用されているエンコーディングにも対応できます。 また、[Encoding](xref:System.Text.Encoding) から派生するクラスを定義し、そのメンバーをオーバーライドして、カスタム エンコーディングを作成することもできます。 - +> .NET Framework のエンコーディング クラスは、文字データを格納および変換するためのものです。 バイナリ データを文字列形式で格納する目的では使用しないでください。 エンコーディング クラスを使用してバイナリ データを文字列形式に変換すると、使用されているエンコーディングによっては、予期しない動作が発生したり、不正確なデータや破損したデータが生成されたりする可能性があります。 バイナリ データを文字列形式に変換するには、 メソッドを使用します。 + + .NET Framework では \( クラスによって表される\) UTF\-16 エンコーディングを使用して、文字と文字列を表します。 共通言語ランタイムをターゲットとするアプリケーションは、エンコーダーを使用して、共通言語ランタイムによってサポートされている Unicode 文字表現を他のエンコーディング方式に変換し、 デコーダーを使用して、Unicode 以外のエンコーディングの文字を Unicode に変換します。 + + このトピックは、次のセクションで構成されています。 + +- [.NET Framework のエンコーディング](../../../docs/standard/base-types/character-encoding.md#Encodings) + +- [エンコーディング クラスの選択](../../../docs/standard/base-types/character-encoding.md#Selecting) + +- [エンコーディング オブジェクトの使用](../../../docs/standard/base-types/character-encoding.md#Using) + +- [フォールバック ストラテジの選択](../../../docs/standard/base-types/character-encoding.md#FallbackStrategy) + +- [カスタム フォールバック ストラテジの実装](../../../docs/standard/base-types/character-encoding.md#Custom) + + +## .NET Framework のエンコーディング + .NET Framework のすべての文字エンコーディング クラスは、すべての文字エンコーディングに共通の機能を定義する抽象クラスの クラスを継承します。 .NET Framework に実装されている個々のエンコーディング オブジェクトにアクセスするには次の方法があります。 + +- クラスの静的プロパティを使用します。これらのプロパティは、.NET Framework で使用できる標準の文字エンコーディング \(ASCII、UTF\-7、UTF\-8、UTF\-16、および UTF\-32\) を表すオブジェクトを返します。 たとえば、 プロパティは オブジェクトを返します。 各オブジェクトでは、エンコードできない文字列とデコードできないバイトを処理するために、置換フォールバックが使用されます \(詳しくは、「[置換フォールバック](../../../docs/standard/base-types/character-encoding.md#Replacement)」セクションをご覧ください。\) + +- エンコーディングのクラス コンストラクターを呼び出します。 ASCII、UTF\-7、UTF\-8、UTF\-16、および UTF\-32 の各エンコーディングのオブジェクトは、この方法でインスタンス化できます。 既定では、各オブジェクトはエンコードできない文字列とデコードできないバイトを処理するために置換フォールバックを使用します。ただし、代わりに例外がスローされるように指定することもできます \(詳しくは、「[置換フォールバック](../../../docs/standard/base-types/character-encoding.md#Replacement)」セクションおよび「[例外フォールバック](../../../docs/standard/base-types/character-encoding.md#Exception)」セクションをご覧ください。\) + +- コンストラクターを呼び出して、エンコーディングを表す整数を渡します。 エンコードできない文字列とデコードできないバイトの処理には、標準エンコーディングのエンコーディング オブジェクトでは置換フォールバックが、コード ページ エンコーディングと 2 バイト文字セット \(DBCS\) エンコーディングのエンコーディング オブジェクトでは最適フォールバックが使用されます \(詳しくは、「[最適フォールバック](../../../docs/standard/base-types/character-encoding.md#BestFit)」セクションをご覧ください。\) + +- メソッドを呼び出します。このメソッドは、.NET Framework で使用できる任意のエンコーディング \(標準、コード ページ、または DBCS\) を返します。 オーバーロードを使用すると、エンコーダーおよびデコーダーの両方のフォールバック オブジェクトを指定できます。 + > [!NOTE] -> 既定で、.NET Core では、コード ページ 28591 以外のコード ページ エンコーディングや Unicode エンコーディング (UTF-8 や UTF-16 など) を使用できません。 ただし、使用するアプリに、.NET Framework を対象とする標準の Windows アプリに含まれているコード ページ エンコーディングを追加できます。 詳細については、「[EncodingProvider](xref:System.Text.EncodingProvider)」のトピックを参照してください。 - -## エンコーディング クラスの選択 - -アプリケーションで使用するエンコーディングを選択できる場合は、Unicode エンコーディング (できれば [UTF8Encoding](xref:System.Text.UTF8Encoding) または [UnicodeEncoding](xref:System.Text.UnicodeEncoding)) を使用するようにしてください (.NET でサポートされている Unicode エンコーディングには、そのほかに [UTF32Encoding](xref:System.Text.UTF32Encoding) もあります)。 - -ASCII エンコーディング ([ASCIIEncoding](xref:System.Text.ASCIIEncoding)) を使用しようとしている場合は、代わりに [UTF8Encoding](xref:System.Text.UTF8Encoding) を選択してください。 この&2; つのエンコーディングは、ASCII 文字セットに対する動作は変わりませんが、[UTF8Encoding](xref:System.Text.UTF8Encoding) には次のような利点があります。 - -* すべての Unicode 文字を表現できます ([ASCIIEncoding](xref:System.Text.ASCIIEncoding) でサポートされているのは U+0000 ~ U+007F の Unicode 文字値だけです)。 - -* エラー検出に対応しており、セキュリティも強化されます。 - -* できるだけ高速になるように調整されているため、他のエンコーディングよりも高速です。 全体が ASCII のコンテンツの場合でも、[UTF8Encoding](xref:System.Text.UTF8Encoding) で実行される演算は、[ASCIIEncoding](xref:System.Text.ASCIIEncoding) で実行される演算よりも高速になります。 - -[ASCIIEncoding](xref:System.Text.ASCIIEncoding) は、レガシ アプリケーションの場合にのみ使用を検討するようにしてください。 ただし、レガシ アプリケーションでも、次のような理由で [UTF8Encoding](xref:System.Text.UTF8Encoding) の方が適していることもあります (既定の設定の場合)。 - -* 厳密には ASCII でないコンテンツがアプリケーションに含まれている場合、それを [ASCIIEncoding](xref:System.Text.ASCIIEncoding) でエンコードすると、ASCII 以外の各文字は疑問符 (?) としてエンコードされます。 アプリケーションがこのデータをデコードすると、情報は失われます。 - - -* 厳密には ASCII でないコンテンツがアプリケーションに含まれている場合、それを [UTF8Encoding](xref:System.Text.UTF8Encoding) でエンコードすると、結果を ASCII として解釈しようとしても一見理解不能になります。 ただし、アプリケーションがこのデータを UTF-8 デコーダーを使用してデコードすると、データのラウンド トリップが正常に行われます。 - -Web アプリケーションでは、Web 要求への応答としてクライアントに送信される文字に、クライアントで使用されているエンコーディングが反映されるようにする必要があります。 ほとんどの場合は、ユーザーが期待するエンコーディングでテキストを表示するために、[HttpResponse.ContentEncoding](xref:System.Net.HttpResponseHeader.ContentEncoding) プロパティを [HttpRequestHeader.ContentEncoding](xref:System.Net.HttpRequestHeader.ContentEncoding) プロパティの戻り値に設定する必要があります。 - -## エンコーディング オブジェクトの使用 - -エンコーダーは、文字列 (通常は Unicode 文字) を対応する数値 (バイト) に変換します。 たとえば、ASCII エンコーダーを使用すると、Unicode 文字を ASCII に変換してコンソールに表示することができます。 この変換を実行するには、[Encoding.GetBytes](xref:System.Text.Encoding.GetBytes(System.Char[])) メソッドを呼び出します。 エンコードされた文字列を格納するために必要なバイト数をエンコードの実行前に確認するには、[GetByteCount](xref:System.Text.Encoding.GetByteCount(System.Char[])) メソッドを呼び出します。 - -次の例では、1 つのバイト配列を使用して、文字列を&2; つの個別の操作でエンコードしています。 バイト配列内の次の ASCII エンコード済みバイト セットの開始位置を示すインデックスが保持されています。 この例では、[ASCIIEncoding.GetByteCount(String)](xref:System.Text.ASCIIEncoding.GetByteCount(System.String)) メソッドを呼び出して、エンコードされた文字列を格納するために十分な大きさがバイト配列にあるかどうかを確認します。 次に、[ASCIIEncoding.GetBytes(String, Int32, Int32, Byte[], Int32)](xref:System.Text.ASCIIEncoding.GetBytes(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32)) メソッドを呼び出して、文字列内の文字をエンコードします。 - -```csharp -using System; -using System.Text; - -public class Example -{ - public static void Main() - { - string[] strings= { "This is the first sentence. ", - "This is the second sentence. " }; - Encoding asciiEncoding = Encoding.ASCII; - - // Create array of adequate size. - byte[] bytes = new byte[49]; - // Create index for current position of array. - int index = 0; - - Console.WriteLine("Strings to encode:"); - foreach (var stringValue in strings) { - Console.WriteLine(" {0}", stringValue); - - int count = asciiEncoding.GetByteCount(stringValue); - if (count + index >= bytes.Length) - Array.Resize(ref bytes, bytes.Length + 50); - - int written = asciiEncoding.GetBytes(stringValue, 0, - stringValue.Length, - bytes, index); - - index = index + written; - } - Console.WriteLine("\nEncoded bytes:"); - Console.WriteLine("{0}", ShowByteValues(bytes, index)); - Console.WriteLine(); - - // Decode Unicode byte array to a string. - string newString = asciiEncoding.GetString(bytes, 0, index); - Console.WriteLine("Decoded: {0}", newString); - } - - private static string ShowByteValues(byte[] bytes, int last ) - { - string returnString = " "; - for (int ctr = 0; ctr <= last - 1; ctr++) { - if (ctr % 20 == 0) - returnString += "\n "; - returnString += String.Format("{0:X2} ", bytes[ctr]); - } - return returnString; - } -} -// The example displays the following output: -// Strings to encode: -// This is the first sentence. -// This is the second sentence. -// -// Encoded bytes: -// -// 54 68 69 73 20 69 73 20 74 68 65 20 66 69 72 73 74 20 73 65 -// 6E 74 65 6E 63 65 2E 20 54 68 69 73 20 69 73 20 74 68 65 20 -// 73 65 63 6F 6E 64 20 73 65 6E 74 65 6E 63 65 2E 20 -// -// Decoded: This is the first sentence. This is the second sentence. -``` - -```vb -Imports System.Text - -Module Example - Public Sub Main() - Dim strings() As String = { "This is the first sentence. ", - "This is the second sentence. " } - Dim asciiEncoding As Encoding = Encoding.ASCII - - ' Create array of adequate size. - Dim bytes(50) As Byte - ' Create index for current position of array. - Dim index As Integer = 0 - - Console.WriteLine("Strings to encode:") - For Each stringValue In strings - Console.WriteLine(" {0}", stringValue) - - Dim count As Integer = asciiEncoding.GetByteCount(stringValue) - If count + index >= bytes.Length Then - Array.Resize(bytes, bytes.Length + 50) - End If - Dim written As Integer = asciiEncoding.GetBytes(stringValue, 0, - stringValue.Length, - bytes, index) - - index = index + written - Next - Console.WriteLine() - Console.WriteLine("Encoded bytes:") - Console.WriteLine("{0}", ShowByteValues(bytes, index)) - Console.WriteLine() - - ' Decode Unicode byte array to a string. - Dim newString As String = asciiEncoding.GetString(bytes, 0, index) - Console.WriteLine("Decoded: {0}", newString) - End Sub - - Private Function ShowByteValues(bytes As Byte(), last As Integer) As String - Dim returnString As String = " " - For ctr As Integer = 0 To last - 1 - If ctr Mod 20 = 0 Then returnString += vbCrLf + " " - returnString += String.Format("{0:X2} ", bytes(ctr)) - Next - Return returnString - End Function -End Module -' The example displays the following output: -' Strings to encode: -' This is the first sentence. -' This is the second sentence. -' -' Encoded bytes: -' -' 54 68 69 73 20 69 73 20 74 68 65 20 66 69 72 73 74 20 73 65 -' 6E 74 65 6E 63 65 2E 20 54 68 69 73 20 69 73 20 74 68 65 20 -' 73 65 63 6F 6E 64 20 73 65 6E 74 65 6E 63 65 2E 20 -' -' Decoded: This is the first sentence. This is the second sentence. -``` - -デコーダーは、特定の文字エンコーディングが反映されたバイト配列を、文字配列または文字列の一連の文字に変換します。 バイト配列を文字配列にデコードするには、[Encoding.GetChars](xref:System.Text.Encoding.GetChars(System.Byte[])) メソッドを呼び出します。 バイト配列を文字列にデコードするには、[GetString](xref:System.Text.Encoding.GetString(System.Byte[])) メソッドを呼び出します。 デコードされたバイトを格納するために必要な文字数をデコードの実行前に確認するには、[GetCharCount](xref:System.Text.Encoding.GetCharCount(System.Byte[])) メソッドを呼び出します。 - -次の例では、3 つの文字列をエンコードした後、1 つの文字配列にデコードしています。 文字配列内の次のデコード済み文字セットの開始位置を示すインデックスが保持されています。 この例では、[GetCharCount](xref:System.Text.Encoding.GetCharCount(System.Byte[])) メソッドを呼び出して、デコードされたすべての文字を格納するために十分な大きさが文字配列にあるかどうかを確認します。 次に、[ASCIIEncoding.GetChars(Byte[], Int32, Int32, Char[], Int32)](xref:System.Text.ASCIIEncoding.GetChars(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32)) メソッドを呼び出して、バイト配列をデコードします。 - -```csharp -using System; -using System.Text; - -public class Example -{ - public static void Main() - { - string[] strings = { "This is the first sentence. ", - "This is the second sentence. ", - "This is the third sentence. " }; - Encoding asciiEncoding = Encoding.ASCII; - // Array to hold encoded bytes. - byte[] bytes; - // Array to hold decoded characters. - char[] chars = new char[50]; - // Create index for current position of character array. - int index = 0; - - foreach (var stringValue in strings) { - Console.WriteLine("String to Encode: {0}", stringValue); - // Encode the string to a byte array. - bytes = asciiEncoding.GetBytes(stringValue); - // Display the encoded bytes. - Console.Write("Encoded bytes: "); - for (int ctr = 0; ctr < bytes.Length; ctr++) - Console.Write(" {0}{1:X2}", - ctr % 20 == 0 ? Environment.NewLine : "", - bytes[ctr]); - Console.WriteLine(); - - // Decode the bytes to a single character array. - int count = asciiEncoding.GetCharCount(bytes); - if (count + index >= chars.Length) - Array.Resize(ref chars, chars.Length + 50); - - int written = asciiEncoding.GetChars(bytes, 0, - bytes.Length, - chars, index); - index = index + written; - Console.WriteLine(); - } - - // Instantiate a single string containing the characters. - string decodedString = new string(chars, 0, index - 1); - Console.WriteLine("Decoded string: "); - Console.WriteLine(decodedString); - } -} -// The example displays the following output: -// String to Encode: This is the first sentence. -// Encoded bytes: -// 54 68 69 73 20 69 73 20 74 68 65 20 66 69 72 73 74 20 73 65 -// 6E 74 65 6E 63 65 2E 20 -// -// String to Encode: This is the second sentence. -// Encoded bytes: -// 54 68 69 73 20 69 73 20 74 68 65 20 73 65 63 6F 6E 64 20 73 -// 65 6E 74 65 6E 63 65 2E 20 -// -// String to Encode: This is the third sentence. -// Encoded bytes: -// 54 68 69 73 20 69 73 20 74 68 65 20 74 68 69 72 64 20 73 65 -// 6E 74 65 6E 63 65 2E 20 -// -// Decoded string: -// This is the first sentence. This is the second sentence. This is the third sentence. -``` - -```vb -Imports System.Text - -Module Example - Public Sub Main() - Dim strings() As String = { "This is the first sentence. ", - "This is the second sentence. ", - "This is the third sentence. " } - Dim asciiEncoding As Encoding = Encoding.ASCII - ' Array to hold encoded bytes. - Dim bytes() As Byte - ' Array to hold decoded characters. - Dim chars(50) As Char - ' Create index for current position of character array. - Dim index As Integer - - For Each stringValue In strings - Console.WriteLine("String to Encode: {0}", stringValue) - ' Encode the string to a byte array. - bytes = asciiEncoding.GetBytes(stringValue) - ' Display the encoded bytes. - Console.Write("Encoded bytes: ") - For ctr As Integer = 0 To bytes.Length - 1 - Console.Write(" {0}{1:X2}", If(ctr Mod 20 = 0, vbCrLf, ""), - bytes(ctr)) - Next - Console.WriteLine() - - ' Decode the bytes to a single character array. - Dim count As Integer = asciiEncoding.GetCharCount(bytes) - If count + index >= chars.Length Then - Array.Resize(chars, chars.Length + 50) - End If - Dim written As Integer = asciiEncoding.GetChars(bytes, 0, - bytes.Length, - chars, index) - index = index + written - Console.WriteLine() - Next - - ' Instantiate a single string containing the characters. - Dim decodedString As New String(chars, 0, index - 1) - Console.WriteLine("Decoded string: ") - Console.WriteLine(decodedString) - End Sub -End Module -' The example displays the following output: -' String to Encode: This is the first sentence. -' Encoded bytes: -' 54 68 69 73 20 69 73 20 74 68 65 20 66 69 72 73 74 20 73 65 -' 6E 74 65 6E 63 65 2E 20 -' -' String to Encode: This is the second sentence. -' Encoded bytes: -' 54 68 69 73 20 69 73 20 74 68 65 20 73 65 63 6F 6E 64 20 73 -' 65 6E 74 65 6E 63 65 2E 20 -' -' String to Encode: This is the third sentence. -' Encoded bytes: -' 54 68 69 73 20 69 73 20 74 68 65 20 74 68 69 72 64 20 73 65 -' 6E 74 65 6E 63 65 2E 20 -' -' Decoded string: -' This is the first sentence. This is the second sentence. This is the third sentence. -``` - -[Encoding](xref:System.Text.Encoding) から派生するクラスのエンコード メソッドとデコード メソッドは、データ全体を処理するように設計されています。つまり、エンコードまたはデコードするすべてのデータが&1; 回のメソッド呼び出しで渡されます。 ただし、場合によっては、データがストリームで提供され、エンコードまたはデコードするデータを複数の読み取り操作で取得しなければならないこともあります。 このような場合は、エンコード操作またはデコード操作で、前回の実行時に保存した状態を呼び出す必要があります。 [Encoder](xref:System.Text.Encoder) および [Decoder](xref:System.Text.Decoder) から派生するクラスのメソッドでは、複数のメソッド呼び出しにまたがるエンコード操作とデコード操作を処理できます。 - -特定のエンコーディングの [Encoder](xref:System.Text.Encoder) オブジェクトは、そのエンコーディングの [Encoding.GetEncoder](xref:System.Text.Encoding.GetEncoder) プロパティから取得できます。 特定のエンコーディングの [Decoder](xref:System.Text.Decoder) オブジェクトは、そのエンコーディングの [Encoding.GetDecoder](xref:System.Text.Encoding.GetDecoder) プロパティから取得できます。 デコード操作の場合、[Decoder](xref:System.Text.Decoder) から派生するクラスに含まれるのは [Decoder.GetChars](xref:System.Text.Decoder.GetChars(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32)) メソッドで、[Encoding.GetString](xref:System.Text.Encoding.GetString(System.Byte[])) に対応するメソッドはありません。 - -次の例は、Unicode のバイト配列のデコードに [Encoding.GetChars](xref:System.Text.Encoding.GetChars(System.Byte[])) メソッドを使用する場合と [Decoder.GetChars](xref:System.Text.Decoder.GetChars(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32)) メソッドを使用する場合の違いを示しています。 この例では、いくつかの Unicode 文字を含む文字列をファイルにエンコードした後、この&2; つのデコード メソッドを使用して一度に&10; バイトずつデコードしています。 10 番目と&11; 番目のバイトに出現するサロゲート ペアは、別のメソッド呼び出しでデコードされます。 出力を見るとわかるように、[Encoding.GetChars](xref:System.Text.Encoding.GetChars(System.Byte[])) メソッドではこれらのバイトが正しくデコードされず、U+FFFD (REPLACEMENT CHARACTER) に置き換えられます。 一方、[Decoder.GetChars](xref:System.Text.Decoder.GetChars(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32)) メソッドでは、このバイト配列が正しくデコードされて、元の文字列を取得できます。 - -```csharp -using System; -using System.IO; -using System.Text; - -public class Example -{ - public static void Main() - { - // Use default replacement fallback for invalid encoding. - UnicodeEncoding enc = new UnicodeEncoding(true, false, false); - - // Define a string with various Unicode characters. - string str1 = "AB YZ 19 \uD800\udc05 \u00e4"; - str1 += "Unicode characters. \u00a9 \u010C s \u0062\u0308"; - Console.WriteLine("Created original string...\n"); - - // Convert string to byte array. - byte[] bytes = enc.GetBytes(str1); - - FileStream fs = File.Create(@".\characters.bin"); - BinaryWriter bw = new BinaryWriter(fs); - bw.Write(bytes); - bw.Close(); - - // Read bytes from file. - FileStream fsIn = File.OpenRead(@".\characters.bin"); - BinaryReader br = new BinaryReader(fsIn); - - const int count = 10; // Number of bytes to read at a time. - byte[] bytesRead = new byte[10]; // Buffer (byte array). - int read; // Number of bytes actually read. - string str2 = String.Empty; // Decoded string. - - // Try using Encoding object for all operations. - do { - read = br.Read(bytesRead, 0, count); - str2 += enc.GetString(bytesRead, 0, read); - } while (read == count); - br.Close(); - Console.WriteLine("Decoded string using UnicodeEncoding.GetString()..."); - CompareForEquality(str1, str2); - Console.WriteLine(); - - // Use Decoder for all operations. - fsIn = File.OpenRead(@".\characters.bin"); - br = new BinaryReader(fsIn); - Decoder decoder = enc.GetDecoder(); - char[] chars = new char[50]; - int index = 0; // Next character to write in array. - int written = 0; // Number of chars written to array. - do { - read = br.Read(bytesRead, 0, count); - if (index + decoder.GetCharCount(bytesRead, 0, read) - 1 >= chars.Length) - Array.Resize(ref chars, chars.Length + 50); - - written = decoder.GetChars(bytesRead, 0, read, chars, index); - index += written; - } while (read == count); - br.Close(); - // Instantiate a string with the decoded characters. - string str3 = new String(chars, 0, index); - Console.WriteLine("Decoded string using UnicodeEncoding.Decoder.GetString()..."); - CompareForEquality(str1, str3); - } - - private static void CompareForEquality(string original, string decoded) - { - bool result = original.Equals(decoded); - Console.WriteLine("original = decoded: {0}", - original.Equals(decoded, StringComparison.Ordinal)); - if (! result) { - Console.WriteLine("Code points in original string:"); - foreach (var ch in original) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - Console.WriteLine(); - - Console.WriteLine("Code points in decoded string:"); - foreach (var ch in decoded) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - Console.WriteLine(); - } - } -} -// The example displays the following output: -// Created original string... -// -// Decoded string using UnicodeEncoding.GetString()... -// original = decoded: False -// Code points in original string: -// 0041 0042 0020 0059 005A 0020 0031 0039 0020 D800 DC05 0020 00E4 0055 006E 0069 0063 006F -// 0064 0065 0020 0063 0068 0061 0072 0061 0063 0074 0065 0072 0073 002E 0020 00A9 0020 010C -// 0020 0073 0020 0062 0308 -// Code points in decoded string: -// 0041 0042 0020 0059 005A 0020 0031 0039 0020 FFFD FFFD 0020 00E4 0055 006E 0069 0063 006F -// 0064 0065 0020 0063 0068 0061 0072 0061 0063 0074 0065 0072 0073 002E 0020 00A9 0020 010C -// 0020 0073 0020 0062 0308 -// -// Decoded string using UnicodeEncoding.Decoder.GetString()... -// original = decoded: True -``` - -```vb -Imports System.IO -Imports System.Text - -Module Example - Public Sub Main() - ' Use default replacement fallback for invalid encoding. - Dim enc As New UnicodeEncoding(True, False, False) - - ' Define a string with various Unicode characters. - Dim str1 As String = String.Format("AB YZ 19 {0}{1} {2}", - ChrW(&hD800), ChrW(&hDC05), ChrW(&h00e4)) - str1 += String.Format("Unicode characters. {0} {1} s {2}{3}", - ChrW(&h00a9), ChrW(&h010C), ChrW(&h0062), ChrW(&h0308)) - Console.WriteLine("Created original string...") - Console.WriteLine() - - ' Convert string to byte array. - Dim bytes() As Byte = enc.GetBytes(str1) - - Dim fs As FileStream = File.Create(".\characters.bin") - Dim bw As New BinaryWriter(fs) - bw.Write(bytes) - bw.Close() - - ' Read bytes from file. - Dim fsIn As FileStream = File.OpenRead(".\characters.bin") - Dim br As New BinaryReader(fsIn) - - Const count As Integer = 10 ' Number of bytes to read at a time. - Dim bytesRead(9) As Byte ' Buffer (byte array). - Dim read As Integer ' Number of bytes actually read. - Dim str2 As String = "" ' Decoded string. - - ' Try using Encoding object for all operations. - Do - read = br.Read(bytesRead, 0, count) - str2 += enc.GetString(bytesRead, 0, read) - Loop While read = count - br.Close() - Console.WriteLine("Decoded string using UnicodeEncoding.GetString()...") - CompareForEquality(str1, str2) - Console.WriteLine() - - ' Use Decoder for all operations. - fsIn = File.OpenRead(".\characters.bin") - br = New BinaryReader(fsIn) - Dim decoder As Decoder = enc.GetDecoder() - Dim chars(50) As Char - Dim index As Integer = 0 ' Next character to write in array. - Dim written As Integer = 0 ' Number of chars written to array. - Do - read = br.Read(bytesRead, 0, count) - If index + decoder.GetCharCount(bytesRead, 0, read) - 1 >= chars.Length Then - Array.Resize(chars, chars.Length + 50) - End If - written = decoder.GetChars(bytesRead, 0, read, chars, index) - index += written - Loop While read = count - br.Close() - ' Instantiate a string with the decoded characters. - Dim str3 As New String(chars, 0, index) - Console.WriteLine("Decoded string using UnicodeEncoding.Decoder.GetString()...") - CompareForEquality(str1, str3) - End Sub - - Private Sub CompareForEquality(original As String, decoded As String) - Dim result As Boolean = original.Equals(decoded) - Console.WriteLine("original = decoded: {0}", - original.Equals(decoded, StringComparison.Ordinal)) - If Not result Then - Console.WriteLine("Code points in original string:") - For Each ch In original - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - - Console.WriteLine("Code points in decoded string:") - For Each ch In decoded - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - End If - End Sub -End Module -' The example displays the following output: -' Created original string... -' -' Decoded string using UnicodeEncoding.GetString()... -' original = decoded: False -' Code points in original string: -' 0041 0042 0020 0059 005A 0020 0031 0039 0020 D800 DC05 0020 00E4 0055 006E 0069 0063 006F -' 0064 0065 0020 0063 0068 0061 0072 0061 0063 0074 0065 0072 0073 002E 0020 00A9 0020 010C -' 0020 0073 0020 0062 0308 -' Code points in decoded string: -' 0041 0042 0020 0059 005A 0020 0031 0039 0020 FFFD FFFD 0020 00E4 0055 006E 0069 0063 006F -' 0064 0065 0020 0063 0068 0061 0072 0061 0063 0074 0065 0072 0073 002E 0020 00A9 0020 010C -' 0020 0073 0020 0062 0308 -' -' Decoded string using UnicodeEncoding.Decoder.GetString()... -' original = decoded: True -``` - -## フォールバック ストラテジの選択 - -メソッドから文字のエンコードまたはデコードを行おうとしたときにマッピングが存在しない場合は、失敗したマッピングの処理方法を決めるフォールバック ストラテジを実装する必要があります。 次の&3; 種類のフォールバック ストラテジがあります。 - -* 最適フォールバック - -* 置換フォールバック - -* 例外フォールバック - +> Unicode 規格では、サポートされるすべてのスクリプトについて、各文字にコード ポイント \(数値\) と名前を割り当てています。 たとえば、文字 "A" は U\+0041 というコード ポイントと、"LATIN CAPITAL LETTER A" という名前で表されます。 UTF \(Unicode Transformation Format\) エンコーディングは、そのコード ポイントを 1 つ以上のバイトのシーケンスにエンコードする方法を定義します。 Unicode エンコーディング方式を使用すると、任意の文字セットの文字を 1 つのエンコーディング方式で表現できるため、国際対応アプリケーションの開発が簡素化されます。 これにより、アプリケーション開発者が、特定の言語または書記体系の文字を表すために使用されるエンコーディング方式を追跡する必要はなくなります。また、データを破損することなく、各国のシステム間でデータを共有できます。 +> +> .NET Framework では、Unicode 規格によって定義されている UTF\-8、UTF\-16、および UTF\-32 の 3 つのエンコーディングをサポートしています。 詳しくは、[Unicode ホーム ページ](http://go.microsoft.com/fwlink/?LinkId=37123)の Unicode 標準をご覧ください。 + + .NET Framework で使用できるすべてのエンコーディングに関する情報を取得するには、 メソッドを呼び出します。 .NET Framework でサポートされている文字エンコーディング システムを次の表に示します。 + +|エンコード|クラス|説明|長所\/短所| +|-----------|---------|--------|------------| +|ASCII||バイトの下位 7 ビットを使用して、限られた範囲の文字をエンコードします。|ASCII エンコーディングでは、U\+0000 から U\+007F までの文字値しかサポートされていないため、ほとんどの場合、国際対応アプリケーションでは ASCII エンコーディングの使用は不適切です。| +|UTF\-7||文字を 7 ビット ASCII 文字のシーケンスとして表します。 ASCII 以外の Unicode 文字は、ASCII 文字のエスケープ シーケンスによって表します。|UTF\-7 は、電子メールやニュースグループなどのプロトコルをサポートします。 ただし、UTF\-7 は特に安全でも堅牢でもありません。 場合によっては、1 ビットの変更により、UTF\-7 文字列全体の解釈が完全に変わる場合があります。 他の場合には、異なる UTF\-7 文字列がエンコードによって同じテキストになる可能性もあります。 ASCII 以外の文字を含むシーケンスの場合、UTF\-7 は UTF\-8 よりも多くの空間を必要とし、エンコードとデコードに時間がかかります。 したがって、可能であれば、UTF\-7 ではなく UTF\-8 を使用してください。| +|UTF\-8||各 Unicode コード ポイントが、1 バイトから 4 バイトのシーケンスとして表現されます。|UTF\-8 では、8 ビット データ サイズがサポートされており、既存の多くのオペレーティング システムに対応できます。 ASCII 範囲の文字については、UTF\-8 は ASCII エンコーディングと一致し、より広範な文字を提供します。 ただし、CJK \(中国語、日本語、韓国語\) スクリプトでは、UTF\-8 の各文字に 3 バイトが必要となることがあり、データ サイズが UTF\-16 より大きくなる可能性があります。 ただし、CJK 範囲によるサイズの増加が HTML タグなどの ASCII データのサイズによって相殺されることもあります。| +|UTF\-16||各 Unicode コード ポイントが、1 つまたは 2 つの 16 ビット整数のシーケンスとして表現されます。 ほとんどの一般的な Unicode 文字で必要とされる UTF\-16 コード ポイントは 1 つだけです。ただし、Unicode の補助文字 \(U\+10000 以上\) には 2 つの UTF\-16 サロゲート コード ポイントが必要です。 リトル エンディアンとビッグ エンディアンの両方のバイト順をサポートしています。|UTF\-16 エンコーディングは、共通言語ランタイムでは および の値を表現するために、Windows オペレーティング システムでは `WCHAR` の値を表現するために使用されています。| +|UTF\-32||各 Unicode コード ポイントが 32 ビット整数として表現されます。 リトル エンディアンとビッグ エンディアンの両方のバイト順をサポートしています。|UTF\-32 エンコーディングは、エンコードされた空白がきわめて重要な意味を持つオペレーティング システムで、アプリケーションが UTF\-16 エンコーディングのサロゲート コード ポイント動作を回避する必要がある場合に使用します。 ディスプレイ上でレンダリングされる 1 つのグリフも複数の UTF\-32 文字でエンコードされることがあります。| +|ANSI\/ISO エンコーディング||さまざまなコード ページがサポートされています。 Windows オペレーティング システムでは、特定の言語または言語グループをサポートするためにコード ページが使用されます。 .NET Framework でサポートされているコード ページの一覧表については、 クラスを参照してください。 特定のコード ページのエンコーディング オブジェクトを取得するには、 メソッドを呼び出します。|コード ページには、0 から始まる 256 個のコード ポイントが含まれています。 コード ポイント 0 ~ 127 は、ほとんどのコード ページで ASCII 文字セットを表しますが、コード ポイント 128 ~ 255 が表す文字は、コード ページによって異なります。 たとえば、コード ページ 1252 には、英語、ドイツ語、フランス語などのラテン語書記体系の文字を表す文字コードが含まれています。 このコード ページ 1252 の最後の 128 個のコード ポイントには、アクセント記号付き文字が含まれています。 また、コード ページ 1253 には、ギリシャ語書記体系で必要とされる文字コードが含まれています。 このコード ページ 1253 の最後の 128 個のコード ポイントには、ギリシャ文字が含まれています。 このため、ANSI コード ページに依存するアプリケーションでギリシャ語とドイツ語を同じテキスト ストリームに格納する場合には、参照先コード ページを示す識別子を含める必要があります。| +|2 バイト文字セット \(DBCS\) エンコーディング||中国語、日本語、韓国語など、256 個以上の文字から成る言語をサポートします。 DBCS では、コード ポイントのペア \(2 バイト\) が 1 つの文字を表します。 DBCS エンコーディングでは、 プロパティは `false` を返します。 特定の DBCS のエンコーディング オブジェクトを取得するには、 メソッドを呼び出します。|DBCS では、コード ポイントのペア \(2 バイト\) が 1 つの文字を表します。 アプリケーションで DBCS データを処理する場合、DBCS 文字の最初のバイト \(先頭バイト\) は、その後に続く後続バイトと組み合わせて処理されます。 このスキームでは、日本語や中国語など、2 種類の言語を組み合わせて同じデータ ストリームで使用することはできません。これは、2 バイト コード ポイントのペアが表す文字が、コード ページによって異なるためです。| + + これらのエンコーディングを使用することにより、Unicode 文字だけでなく、レガシ アプリケーションで最もよく使用されているエンコーディングにも対応できます。 また、 から派生するクラスを定義し、そのメンバーをオーバーライドして、カスタム エンコーディングを作成することもできます。 + +### プラットフォームに関する注意事項: [!INCLUDE[net_core](../../../includes/net-core-md.md)] + 既定で、[!INCLUDE[net_core](../../../includes/net-core-md.md)] では、コード ページ 28591 以外のコード ページ エンコーディングや Unicode エンコーディング \(UTF\-8 や UTF\-16 など\) を使用できません。 ただし、使用するアプリに、.NET Framework を対象とする標準の Windows アプリに含まれているコード ページ エンコーディングを追加できます。 詳細については、「」のトピックを参照してください。 + + +## エンコーディング クラスの選択 + アプリケーションで使用するエンコーディングを選択できる場合は、Unicode エンコーディング \(できれば または \) を使用するようにしてください \(.NET Framework でサポートされている Unicode エンコーディングには、そのほかに もあります\)。 + + ASCII エンコーディング \(\) を使用しようとしている場合は、代わりに を選択してください。 この 2 つのエンコーディングは、ASCII 文字セットに対する動作は変わりませんが、 には次のような利点があります。 + +- すべての Unicode 文字を表現できます \( でサポートされているのは U\+0000 ~ U\+007F の Unicode 文字値だけです\)。 + +- エラー検出に対応しており、セキュリティも強化されます。 + +- できるだけ高速になるように調整されているため、他のエンコーディングよりも高速です。 全体が ASCII のコンテンツの場合でも、 で実行される演算は、 で実行される演算よりも高速になります。 + + は、レガシ アプリケーションの場合にのみ使用を検討するようにしてください。 ただし、レガシ アプリケーションでも、次のような理由で の方が適していることもあります \(既定の設定の場合\)。 + +- 厳密には ASCII でないコンテンツがアプリケーションに含まれている場合、それを でエンコードすると、ASCII 以外の各文字は疑問符 \(?\) としてエンコードされます。 アプリケーションがこのデータをデコードすると、情報は失われます。 + +- 厳密には ASCII でないコンテンツがアプリケーションに含まれている場合、それを でエンコードすると、結果を ASCII として解釈しようとしても一見理解不能になります。 ただし、アプリケーションがこのデータを UTF\-8 デコーダーを使用してデコードすると、データのラウンド トリップが正常に行われます。 + + Web アプリケーションでは、Web 要求への応答としてクライアントに送信される文字に、クライアントで使用されているエンコーディングが反映されるようにする必要があります。 ほとんどの場合は、ユーザーが期待するエンコーディングでテキストを表示するために、 プロパティを プロパティの戻り値に設定する必要があります。 + + +## エンコーディング オブジェクトの使用 + エンコーダーは、文字列 \(通常は Unicode 文字\) を対応する数値 \(バイト\) に変換します。 たとえば、ASCII エンコーダーを使用すると、Unicode 文字を ASCII に変換してコンソールに表示することができます。 この変換を実行するには、 メソッドを呼び出します。 エンコードされた文字列を格納するために必要なバイト数をエンコードの実行前に確認するには、 メソッドを呼び出します。 + + 次の例では、1 つのバイト配列を使用して、文字列を 2 つの個別の操作でエンコードしています。 バイト配列内の次の ASCII エンコード済みバイト セットの開始位置を示すインデックスが保持されています。 この例では、 メソッドを呼び出して、エンコードされた文字列を格納するために十分な大きさがバイト配列にあるかどうかを確認します。 次に、[ASCIIEncoding.GetBytes\(String, Int32, Int32, Byte\ メソッドを呼び出して、文字列の文字をエンコードします。 + + [!code-csharp[Conceptual.Encoding#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/getbytes1.cs#8)] + [!code-vb[Conceptual.Encoding#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/getbytes1.vb#8)] + + デコーダーは、特定の文字エンコーディングが反映されたバイト配列を、文字配列または文字列の一連の文字に変換します。 バイト配列を文字配列にデコードするには、 メソッドを呼び出します。 バイト配列を文字列にデコードするには、 メソッドを呼び出します。 デコードされたバイトを格納するために必要な文字数をデコードの実行前に確認するには、 メソッドを呼び出します。 + + 次の例では、3 つの文字列をエンコードした後、1 つの文字配列にデコードしています。 文字配列内の次のデコード済み文字セットの開始位置を示すインデックスが保持されています。 この例では、 メソッドを呼び出して、デコードされたすべての文字を格納するために十分な大きさが文字配列にあるかどうかを確認します。 次に、[ASCIIEncoding.GetChars\(Byte\[\], Int32, Int32, Char\ メソッドを呼び出して、バイト配列をデコードします。 + + [!code-csharp[Conceptual.Encoding#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/getchars1.cs#9)] + [!code-vb[Conceptual.Encoding#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/getchars1.vb#9)] + + から派生するクラスのエンコード メソッドとデコード メソッドは、データ全体を処理するように設計されています。つまり、エンコードまたはデコードするすべてのデータが 1 回のメソッド呼び出しで渡されます。 ただし、場合によっては、データがストリームで提供され、エンコードまたはデコードするデータを複数の読み取り操作で取得しなければならないこともあります。 このような場合は、エンコード操作またはデコード操作で、前回の実行時に保存した状態を呼び出す必要があります。 および から派生するクラスのメソッドでは、複数のメソッド呼び出しにまたがるエンコード操作とデコード操作を処理できます。 + + 特定のエンコーディングの オブジェクトは、そのエンコーディングの プロパティから取得できます。 特定のエンコーディングの オブジェクトは、そのエンコーディングの プロパティから取得できます。 デコード操作の場合、 から派生するクラスに含まれるのは メソッドだけで、 に対応するメソッドはありません。 + + 次の例は、Unicode のバイト配列のデコードに メソッドを使用する場合と メソッドを使用する場合の違いを示しています。 この例では、いくつかの Unicode 文字を含む文字列をファイルにエンコードした後、この 2 つのデコード メソッドを使用して一度に 10 バイトずつデコードしています。 10 番目と 11 番目のバイトに出現するサロゲート ペアは、別のメソッド呼び出しでデコードされます。 出力を見るとわかるように、 メソッドではこれらのバイトが正しくデコードされず、U\+FFFD \(REPLACEMENT CHARACTER\) に置き換えられます。 一方、 メソッドでは、このバイト配列が正しくデコードされて、元の文字列を取得できます。 + + [!code-csharp[Conceptual.Encoding#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/stream1.cs#10)] + [!code-vb[Conceptual.Encoding#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/stream1.vb#10)] + + +## フォールバック ストラテジの選択 + メソッドから文字のエンコードまたはデコードを行おうとしたときにマッピングが存在しない場合は、失敗したマッピングの処理方法を決めるフォールバック ストラテジを実装する必要があります。 次の 3 種類のフォールバック ストラテジがあります。 + +- 最適フォールバック + +- 置換フォールバック + +- 例外フォールバック + > [!IMPORTANT] -> エンコード操作で最も一般的な問題は、Unicode 文字を特定のコード ページ エンコーディングにマップできない場合に発生します。 デコード操作で最も一般的な問題は、無効なバイト シーケンスを有効な Unicode 文字に変換できない場合に発生します。 そのため、個々のエンコーディング オブジェクトで使用されるフォールバック ストラテジを把握しておく必要があります。 エンコーディング オブジェクトをインスタンス化するときには、可能な限り、そのオブジェクトで使用されるフォールバック ストラテジを指定するようにしてください。 - -### 最適フォールバック - -ターゲット エンコード内に厳密な一致がない文字について、エンコーダーは類似した文字へのマッピングを試みることができます (最適フォールバックは主にエンコード時の問題であり、デコード時の問題ではありません。 Unicode に正常にマッピングできない文字を含むコード ページはほとんどありません)。最適フォールバックは、[Encoding.GetEncoding(Int32)](xref:System.Text.Encoding.GetEncoding(System.Int32)) および [Encoding.GetEncoding(String)](xref:System.Text.Encoding.GetEncoding(System.String)) の各オーバーロードによって取得されるコード ページ エンコーディングと&2; バイト文字セット エンコーディングの既定のフォールバック ストラテジです。 - +> エンコード操作で最も一般的な問題は、Unicode 文字を特定のコード ページ エンコーディングにマップできない場合に発生します。 デコード操作で最も一般的な問題は、無効なバイト シーケンスを有効な Unicode 文字に変換できない場合に発生します。 そのため、個々のエンコーディング オブジェクトで使用されるフォールバック ストラテジを把握しておく必要があります。 エンコーディング オブジェクトをインスタンス化するときには、可能な限り、そのオブジェクトで使用されるフォールバック ストラテジを指定するようにしてください。 + + +### 最適フォールバック + ターゲット エンコード内に厳密な一致がない文字について、エンコーダーは類似した文字へのマッピングを試みることができます \(最適フォールバックは主にエンコード時の問題であり、デコード時の問題ではありません。 Unicode に正常にマッピングできない文字を含むコード ページはほとんどありません\)。 最適フォールバックは、 および の各オーバーロードによって取得されるコード ページ エンコーディングと 2 バイト文字セット エンコーディングの既定のフォールバック ストラテジです。 + +> [!NOTE] +> .NET Framework の Unicode エンコーディング クラス \(、および \) では、理論上すべての文字セットのすべての文字がサポートされているため、これらのクラスを使用すると最適フォールバックの問題を解消できます。 + + 最適なストラテジはコード ページごとに異なるため、詳細には文書化されていません。 たとえば、全角のアルファベットがより一般的な半角のアルファベットにマッピングされるコード ページもあれば、 そのようなマッピングが行われないコード ページもあります。 積極的な最適ストラテジでも、一部のエンコーディングの一部の文字には可能な対応がない場合があります。 たとえば、中国語の漢字からコード ページ 1252 への適切なマッピングはありません。 その場合は、置換文字列が使用されます。 既定では、この文字列は単一の QUESTION MARK \(疑問符\) \(U\+003F\) です。 + + 次の例では、コード ページ 1252 \(西ヨーロッパ言語の Windows コード ページ\) を使用して、最適マッピングとその欠点を示しています。 まず、 メソッドを使用して、コード ページ 1252 のエンコーディング オブジェクトを取得します。 このエンコーディング オブジェクトは、サポートされていない Unicode 文字に対して既定で最適マッピングを使用します。 次に、スペースで区切られた 3 つの非 ASCII 文字 \(CIRCLED LATIN CAPITAL LETTER S \(U\+24C8\)、SUPERSCRIPT FIVE \(U\+2075\)、および INFINITY \(U\+221E\)\) を含む文字列をインスタンス化します。 出力を見るとわかるように、この文字列をエンコードすると、スペースを除く元の 3 つの文字が、QUESTION MARK \(U\+003F\)、DIGIT FIVE \(U\+0035\)、および DIGIT EIGHT \(U\+0038\) に置き換えられます。 DIGIT EIGHT は、サポートされていない INFINITY 文字の代替として最適とは言えません。QUESTION MARK は、元の文字に対応するマッピングがなかったことを示します。 + + [!code-csharp[Conceptual.Encoding#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/bestfit1.cs#1)] + [!code-vb[Conceptual.Encoding#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/bestfit1.vb#1)] + + 最適マッピングは、Unicode データをコード ページ データにエンコードする オブジェクトの既定の動作です。レガシ アプリケーションの中には、この動作に依存するものがあります。 ただし、ほとんどの新しいアプリケーションでは、セキュリティ上の理由から、最適動作の使用を避ける必要があります。 たとえば、アプリケーションで、最適エンコードを使用してドメイン名を付けないでください。 + > [!NOTE] -> .NET の Unicode エンコーディング クラス ([UTF8Encoding](xref:System.Text.UTF8Encoding)、[UnicodeEncoding](xref:System.Text.UnicodeEncoding)、および [UTF32Encoding](xref:System.Text.UTF32Encoding)) では、理論上すべての文字セットのすべての文字がサポートされているため、これらのクラスを使用すると最適フォールバックの問題を解消できます。 - - -最適なストラテジはコード ページごとに異なるため、詳細には文書化されていません。 たとえば、全角のアルファベットがより一般的な半角のアルファベットにマッピングされるコード ページもあれば、 そのようなマッピングが行われないコード ページもあります。 積極的な最適ストラテジでも、一部のエンコーディングの一部の文字には可能な対応がない場合があります。 たとえば、中国語の漢字からコード ページ 1252 への適切なマッピングはありません。 その場合は、置換文字列が使用されます。 既定では、この文字列は単一の QUESTION MARK (疑問符) (U+003F) です。 - -次の例では、コード ページ 1252 (西ヨーロッパ言語の Windows コード ページ) を使用して、最適マッピングとその欠点を示しています。 まず、[Encoding.GetEncoding(Int32](xref:System.Text.Encoding.GetEncoding(System.Int32)) メソッドを使用して、コード ページ 1252 のエンコーディング オブジェクトを取得します。 このエンコーディング オブジェクトは、サポートされていない Unicode 文字に対して既定で最適マッピングを使用します。 次に、スペースで区切られた&3; つの非 ASCII 文字 (CIRCLED LATIN CAPITAL LETTER S (U+24C8)、SUPERSCRIPT FIVE (U+2075)、および INFINITY (U+221E)) を含む文字列をインスタンス化します。 出力を見るとわかるように、この文字列をエンコードすると、スペースを除く元の&3; つの文字が、QUESTION MARK (U+003F)、DIGIT FIVE (U+0035)、および DIGIT EIGHT (U+0038) に置き換えられます。 DIGIT EIGHT は、サポートされていない INFINITY 文字の代替として最適とは言えません。QUESTION MARK は、元の文字に対応するマッピングがなかったことを示します。 - -```csharp -using System; -using System.Text; - -public class Example -{ - public static void Main() - { - // Get an encoding for code page 1252 (Western Europe character set). - Encoding cp1252 = Encoding.GetEncoding(1252); - - // Define and display a string. - string str = "\u24c8 \u2075 \u221e"; - Console.WriteLine("Original string: " + str); - Console.Write("Code points in string: "); - foreach (var ch in str) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - - Console.WriteLine("\n"); - - // Encode a Unicode string. - Byte[] bytes = cp1252.GetBytes(str); - Console.Write("Encoded bytes: "); - foreach (byte byt in bytes) - Console.Write("{0:X2} ", byt); - Console.WriteLine("\n"); - - // Decode the string. - string str2 = cp1252.GetString(bytes); - Console.WriteLine("String round-tripped: {0}", str.Equals(str2)); - if (! str.Equals(str2)) { - Console.WriteLine(str2); - foreach (var ch in str2) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - } - } -} -// The example displays the following output: -// Original string: Ⓢ ⁵ ∞ -// Code points in string: 24C8 0020 2075 0020 221E -// -// Encoded bytes: 3F 20 35 20 38 -// -// String round-tripped: False -// ? 5 8 -// 003F 0020 0035 0020 0038 -``` - -```vb -Imports System.Text - -Module Example - Public Sub Main() - ' Get an encoding for code page 1252 (Western Europe character set). - Dim cp1252 As Encoding = Encoding.GetEncoding(1252) - - ' Define and display a string. - Dim str As String = String.Format("{0} {1} {2}", ChrW(&h24c8), ChrW(&H2075), ChrW(&h221E)) - Console.WriteLine("Original string: " + str) - Console.Write("Code points in string: ") - For Each ch In str - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - Console.WriteLine() - - ' Encode a Unicode string. - Dim bytes() As Byte = cp1252.GetBytes(str) - Console.Write("Encoded bytes: ") - For Each byt In bytes - Console.Write("{0:X2} ", byt) - Next - Console.WriteLine() - Console.WriteLine() - - ' Decode the string. - Dim str2 As String = cp1252.GetString(bytes) - Console.WriteLine("String round-tripped: {0}", str.Equals(str2)) - If Not str.Equals(str2) Then - Console.WriteLine(str2) - For Each ch In str2 - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - End If - End Sub -End Module -' The example displays the following output: -' Original string: Ⓢ ⁵ ∞ -' Code points in string: 24C8 0020 2075 0020 221E -' -' Encoded bytes: 3F 20 35 20 38 -' -' String round-tripped: False -' ? 5 8 -' 003F 0020 0035 0020 0038 -``` - -最適マッピングは、Unicode データをコード ページ データにエンコードする [Encoding](xref:System.Text.Encoding) オブジェクトの既定の動作です。レガシ アプリケーションの中には、この動作に依存するものがあります。 ただし、ほとんどの新しいアプリケーションでは、セキュリティ上の理由から、最適動作の使用を避ける必要があります。 たとえば、アプリケーションで、最適エンコードを使用してドメイン名を付けないでください。 - -> [!Note] -> エンコーディングに対してカスタムの最適フォールバック マッピングを実装することもできます。 詳細については、「[カスタム フォールバック ストラテジの実装](#implementing-a-custom-fallback-strategy)」を参照してください。 - -エンコーディング オブジェクトの既定値が最適フォールバックである場合、[Encoding](xref:System.Text.Encoding) オブジェクトを取得するときに別のフォールバック ストラテジを選択することもできます。そのためには、[Encoding.GetEncoding(Int32, EncoderFallback, DecoderFallback)](xref:System.Text.Encoding.GetEncoding(System.Int32,System.Text.EncoderFallback,System.Text.DecoderFallback)) または [Encoding.GetEncoding(String, EncoderFallback, DecoderFallback)](xref:System.Text.Encoding.GetEncoding(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback)) のオーバーロードを呼び出します。 次のセクションでは、コード ページ 1252 にマップできない文字をアスタリスク (\*) に置き換える例を紹介します。 - -```csharp -using System; -using System.Text; - -public class Example -{ - public static void Main() - { - Encoding cp1252r = Encoding.GetEncoding(1252, - new EncoderReplacementFallback("*"), - new DecoderReplacementFallback("*")); - - string str1 = "\u24C8 \u2075 \u221E"; - Console.WriteLine(str1); - foreach (var ch in str1) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - - Console.WriteLine(); - - byte[] bytes = cp1252r.GetBytes(str1); - string str2 = cp1252r.GetString(bytes); - Console.WriteLine("Round-trip: {0}", str1.Equals(str2)); - if (! str1.Equals(str2)) { - Console.WriteLine(str2); - foreach (var ch in str2) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - - Console.WriteLine(); - } - } -} -// The example displays the following output: -// Ⓢ ⁵ ∞ -// 24C8 0020 2075 0020 221E -// Round-trip: False -// * * * -// 002A 0020 002A 0020 002A -``` - -```vb -Imports System.Text - -Module Example - Public Sub Main() - Dim cp1252r As Encoding = Encoding.GetEncoding(1252, - New EncoderReplacementFallback("*"), - New DecoderReplacementFallback("*")) - - Dim str1 As String = String.Format("{0} {1} {2}", ChrW(&h24C8), ChrW(&h2075), ChrW(&h221E)) - Console.WriteLine(str1) - For Each ch In str1 - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - - Dim bytes() As Byte = cp1252r.GetBytes(str1) - Dim str2 As String = cp1252r.GetString(bytes) - Console.WriteLine("Round-trip: {0}", str1.Equals(str2)) - If Not str1.Equals(str2) Then - Console.WriteLine(str2) - For Each ch In str2 - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - End If - End Sub -End Module -' The example displays the following output: -' Ⓢ ⁵ ∞ -' 24C8 0020 2075 0020 221E -' Round-trip: False -' * * * -' 002A 0020 002A 0020 002A -``` - -### 置換フォールバック - -ターゲット スキームに厳密な一致がなく、マップできる適切な文字もない文字について、アプリケーションで置換文字または置換文字列を指定することができます。 これは Unicode デコーダーの既定の動作です。Unicode デコーダーでは、デコードできない&2; バイトのシーケンスが REPLACEMENT_CHARACTER (U+FFFD) に置き換えられます。 また、[ASCIIEncoding](xref:System.Text.ASCIIEncoding) クラスの既定の動作でもあり、その場合はエンコードまたはデコードできない文字が疑問符に置き換えられます。 次の例は、前の例の Unicode 文字列に対する文字置換を示しています。 出力を見るとわかるように、ASCII バイト値にデコードできない文字は 0x3F (疑問符に対応する ASCII コード) に置き換えられます。 - -```csharp -using System; -using System.Text; - -public class Example -{ - public static void Main() - { - Encoding enc = Encoding.ASCII; - - string str1 = "\u24C8 \u2075 \u221E"; - Console.WriteLine(str1); - foreach (var ch in str1) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - - Console.WriteLine("\n"); - - // Encode the original string using the ASCII encoder. - byte[] bytes = enc.GetBytes(str1); - Console.Write("Encoded bytes: "); - foreach (var byt in bytes) - Console.Write("{0:X2} ", byt); - Console.WriteLine("\n"); - - // Decode the ASCII bytes. - string str2 = enc.GetString(bytes); - Console.WriteLine("Round-trip: {0}", str1.Equals(str2)); - if (! str1.Equals(str2)) { - Console.WriteLine(str2); - foreach (var ch in str2) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - - Console.WriteLine(); - } - } -} -// The example displays the following output: -// Ⓢ ⁵ ∞ -// 24C8 0020 2075 0020 221E -// -// Encoded bytes: 3F 20 3F 20 3F -// -// Round-trip: False -// ? ? ? -// 003F 0020 003F 0020 003F -``` - -```vb -Imports System.Text - -Module Example - Public Sub Main() - Dim enc As Encoding = Encoding.Ascii - - Dim str1 As String = String.Format("{0} {1} {2}", ChrW(&h24C8), ChrW(&h2075), ChrW(&h221E)) - Console.WriteLine(str1) - For Each ch In str1 - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - Console.WriteLine() - - ' Encode the original string using the ASCII encoder. - Dim bytes() As Byte = enc.GetBytes(str1) - Console.Write("Encoded bytes: ") - For Each byt In bytes - Console.Write("{0:X2} ", byt) - Next - Console.WriteLine() - Console.WriteLine() - - ' Decode the ASCII bytes. - Dim str2 As String = enc.GetString(bytes) - Console.WriteLine("Round-trip: {0}", str1.Equals(str2)) - If Not str1.Equals(str2) Then - Console.WriteLine(str2) - For Each ch In str2 - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - End If - End Sub -End Module -' The example displays the following output: -' Ⓢ ⁵ ∞ -' 24C8 0020 2075 0020 221E -' -' Encoded bytes: 3F 20 3F 20 3F -' -' Round-trip: False -' ? ? ? -' 003F 0020 003F 0020 003F -``` - -.NET には、エンコード操作またはデコード操作で正確にマップできない文字を置換文字列に置き換える [EncoderReplacementFallback](xref:System.Text.EncoderReplacementFallback) クラスと [DecoderReplacementFallback](xref:System.Text.DecoderReplacementFallback) クラスが含まれています。 この置換文字列は、既定では疑問符ですが、クラス コンストラクターのオーバーロードを呼び出して別の文字列を選択することもできます。 通常は単一の文字を使用しますが、単一でなくてもかまいません。 次の例では、置換文字列としてアスタリスク (\*) を使用する [EncoderReplacementFallback](xref:System.Text.EncoderReplacementFallback) オブジェクトをインスタンス化して、コード ページ 1252 のエンコーダーの動作を変更しています。 - -```csharp -using System; -using System.Text; - -public class Example -{ - public static void Main() - { - Encoding cp1252r = Encoding.GetEncoding(1252, - new EncoderReplacementFallback("*"), - new DecoderReplacementFallback("*")); - - string str1 = "\u24C8 \u2075 \u221E"; - Console.WriteLine(str1); - foreach (var ch in str1) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - - Console.WriteLine(); - - byte[] bytes = cp1252r.GetBytes(str1); - string str2 = cp1252r.GetString(bytes); - Console.WriteLine("Round-trip: {0}", str1.Equals(str2)); - if (! str1.Equals(str2)) { - Console.WriteLine(str2); - foreach (var ch in str2) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - - Console.WriteLine(); - } - } -} -// The example displays the following output: -// Ⓢ ⁵ ∞ -// 24C8 0020 2075 0020 221E -// Round-trip: False -// * * * -// 002A 0020 002A 0020 002A -``` - -```vb -Imports System.Text - -Module Example - Public Sub Main() - Dim cp1252r As Encoding = Encoding.GetEncoding(1252, - New EncoderReplacementFallback("*"), - New DecoderReplacementFallback("*")) - - Dim str1 As String = String.Format("{0} {1} {2}", ChrW(&h24C8), ChrW(&h2075), ChrW(&h221E)) - Console.WriteLine(str1) - For Each ch In str1 - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - - Dim bytes() As Byte = cp1252r.GetBytes(str1) - Dim str2 As String = cp1252r.GetString(bytes) - Console.WriteLine("Round-trip: {0}", str1.Equals(str2)) - If Not str1.Equals(str2) Then - Console.WriteLine(str2) - For Each ch In str2 - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - End If - End Sub -End Module -' The example displays the following output: -' Ⓢ ⁵ ∞ -' 24C8 0020 2075 0020 221E -' Round-trip: False -' * * * -' 002A 0020 002A 0020 002A -``` - +> エンコーディングに対してカスタムの最適フォールバック マッピングを実装することもできます。 詳しくは、「[カスタム フォールバック ストラテジの実装](../../../docs/standard/base-types/character-encoding.md#Custom)」セクションをご覧ください。 + + エンコーディング オブジェクトの既定のフォールバック ストラテジが最適フォールバックである場合、 オブジェクトを取得するときに別のフォールバック ストラテジを選択することもできます。そのためには、 または のオーバーロードを呼び出します。 次のセクションでは、コード ページ 1252 にマップできない文字をアスタリスク \(\*\) に置き換える例を紹介します。 + + [!code-csharp[Conceptual.Encoding#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/bestfit1a.cs#3)] + [!code-vb[Conceptual.Encoding#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/bestfit1a.vb#3)] + + +### 置換フォールバック + ターゲット スキームに厳密な一致がなく、マップできる適切な文字もない文字について、アプリケーションで置換文字または置換文字列を指定することができます。 これは Unicode デコーダーの既定の動作です。Unicode デコーダーでは、デコードできない 2 バイトのシーケンスが REPLACEMENT\_CHARACTER \(U\+FFFD\) に置き換えられます。 また、 クラスの既定の動作でもあり、その場合はエンコードまたはデコードできない文字が疑問符に置き換えられます。 次の例は、前の例の Unicode 文字列に対する文字置換を示しています。 出力を見るとわかるように、ASCII バイト値にデコードできない文字は 0x3F \(疑問符に対応する ASCII コード\) に置き換えられます。 + + [!code-csharp[Conceptual.Encoding#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/replacementascii.cs#2)] + [!code-vb[Conceptual.Encoding#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/replacementascii.vb#2)] + + .NET Framework には、エンコード操作またはデコード操作で正確にマップできない文字を置換文字列に置き換える クラスと クラスが含まれています。 この置換文字列は、既定では疑問符ですが、クラス コンストラクターのオーバーロードを呼び出して別の文字列を選択することもできます。 通常は単一の文字を使用しますが、単一でなくてもかまいません。 次の例では、置換文字列としてアスタリスク \(\*\) を使用する オブジェクトをインスタンス化して、コード ページ 1252 のエンコーダーの動作を変更しています。 + + [!code-csharp[Conceptual.Encoding#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/bestfit1a.cs#3)] + [!code-vb[Conceptual.Encoding#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/bestfit1a.vb#3)] + > [!NOTE] -> エンコーディング用の置換クラスを実装することもできます。 詳細については、「[カスタム フォールバック ストラテジの実装](#implementing-a-custom-fallback-strategy)」を参照してください。 - -置換文字列としては、QUESTION MARK (U+003F) のほか、特に Unicode 文字列に正しく変換できないバイト シーケンスをデコードする場合に、Unicode REPLACEMENT CHARACTER (U+FFFD) がよく使用されます。 ただし、置換文字列は自由に選択できます。置換文字列に複数の文字を含めることもできます。 - -### 例外フォールバック - -最適フォールバックや置換文字列を提供する代わりに、エンコーダーで一連の文字をエンコードできない場合に [EncoderFallbackException](xref:System.Text.EncoderFallbackException) をスローしたり、デコーダーでバイト配列をデコードできない場合に [DecoderFallbackException](xref:System.Text.DecoderFallbackException) をスローしたりすることもできます。 エンコードおよびデコード操作で例外をスローするには、[EncoderFallbackException](xref:System.Text.EncoderFallbackException) オブジェクトと [DecoderFallbackException](xref:System.Text.DecoderFallbackException) オブジェクトをそれぞれ [Encoding.GetEncoding(String, EncoderFallback, DecoderFallback)](xref:System.Text.Encoding.GetEncoding(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback)) メソッドに指定します。 次の例は、ASCIIEncoding クラスによる例外フォールバックを示しています。 - -```csharp -using System; -using System.Text; - -public class Example -{ - public static void Main() - { - Encoding enc = Encoding.GetEncoding("us-ascii", - new EncoderExceptionFallback(), - new DecoderExceptionFallback()); - - string str1 = "\u24C8 \u2075 \u221E"; - Console.WriteLine(str1); - foreach (var ch in str1) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - - Console.WriteLine("\n"); - - // Encode the original string using the ASCII encoder. - byte[] bytes = {}; - try { - bytes = enc.GetBytes(str1); - Console.Write("Encoded bytes: "); - foreach (var byt in bytes) - Console.Write("{0:X2} ", byt); - - Console.WriteLine(); - } - catch (EncoderFallbackException e) { - Console.Write("Exception: "); - if (e.IsUnknownSurrogate()) - Console.WriteLine("Unable to encode surrogate pair 0x{0:X4} 0x{1:X3} at index {2}.", - Convert.ToUInt16(e.CharUnknownHigh), - Convert.ToUInt16(e.CharUnknownLow), - e.Index); - else - Console.WriteLine("Unable to encode 0x{0:X4} at index {1}.", - Convert.ToUInt16(e.CharUnknown), - e.Index); - return; - } - Console.WriteLine(); - - // Decode the ASCII bytes. - try { - string str2 = enc.GetString(bytes); - Console.WriteLine("Round-trip: {0}", str1.Equals(str2)); - if (! str1.Equals(str2)) { - Console.WriteLine(str2); - foreach (var ch in str2) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - - Console.WriteLine(); - } - } - catch (DecoderFallbackException e) { - Console.Write("Unable to decode byte(s) "); - foreach (byte unknown in e.BytesUnknown) - Console.Write("0x{0:X2} "); - - Console.WriteLine("at index {0}", e.Index); - } - } -} -// The example displays the following output: -// Ⓢ ⁵ ∞ -// 24C8 0020 2075 0020 221E -// -// Exception: Unable to encode 0x24C8 at index 0. -``` - -```vb -Imports System.Text - -Module Example - Public Sub Main() - Dim enc As Encoding = Encoding.GetEncoding("us-ascii", - New EncoderExceptionFallback(), - New DecoderExceptionFallback()) - - Dim str1 As String = String.Format("{0} {1} {2}", ChrW(&h24C8), ChrW(&h2075), ChrW(&h221E)) - Console.WriteLine(str1) - For Each ch In str1 - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - Console.WriteLine() - - ' Encode the original string using the ASCII encoder. - Dim bytes() As Byte = {} - Try - bytes = enc.GetBytes(str1) - Console.Write("Encoded bytes: ") - For Each byt In bytes - Console.Write("{0:X2} ", byt) - Next - Console.WriteLine() - Catch e As EncoderFallbackException - Console.Write("Exception: ") - If e.IsUnknownSurrogate() Then - Console.WriteLine("Unable to encode surrogate pair 0x{0:X4} 0x{1:X3} at index {2}.", - Convert.ToUInt16(e.CharUnknownHigh), - Convert.ToUInt16(e.CharUnknownLow), - e.Index) - Else - Console.WriteLine("Unable to encode 0x{0:X4} at index {1}.", - Convert.ToUInt16(e.CharUnknown), - e.Index) - End If - Exit Sub - End Try - Console.WriteLine() - - ' Decode the ASCII bytes. - Try - Dim str2 As String = enc.GetString(bytes) - Console.WriteLine("Round-trip: {0}", str1.Equals(str2)) - If Not str1.Equals(str2) Then - Console.WriteLine(str2) - For Each ch In str2 - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - End If - Catch e As DecoderFallbackException - Console.Write("Unable to decode byte(s) ") - For Each unknown As Byte In e.BytesUnknown - Console.Write("0x{0:X2} ") - Next - Console.WriteLine("at index {0}", e.Index) - End Try - End Sub -End Module -' The example displays the following output: -' Ⓢ ⁵ ∞ -' 24C8 0020 2075 0020 221E -' -' Exception: Unable to encode 0x24C8 at index 0. -``` - +> エンコーディング用の置換クラスを実装することもできます。 詳しくは、「[カスタム フォールバック ストラテジの実装](../../../docs/standard/base-types/character-encoding.md#Custom)」セクションをご覧ください。 + + 置換文字列としては、QUESTION MARK \(U\+003F\) のほか、特に Unicode 文字列に正しく変換できないバイト シーケンスをデコードする場合に、Unicode REPLACEMENT CHARACTER \(U\+FFFD\) がよく使用されます。 ただし、置換文字列は自由に選択できます。置換文字列に複数の文字を含めることもできます。 + + +### 例外フォールバック + 最適フォールバックや置換文字列を提供する代わりに、エンコーダーで一連の文字をエンコードできない場合に をスローしたり、デコーダーでバイト配列をデコードできない場合に をスローしたりすることもできます。 エンコード操作およびデコード操作で例外をスローするには、 メソッドに オブジェクトおよび オブジェクトを渡します。 次の例は、 クラスによる例外フォールバックを示しています。 + + [!code-csharp[Conceptual.Encoding#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/exceptionascii.cs#4)] + [!code-vb[Conceptual.Encoding#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/exceptionascii.vb#4)] + > [!NOTE] -> エンコード操作用のカスタム例外ハンドラーを実装することもできます。 詳細については、「[カスタム フォールバック ストラテジの実装](#implementing-a-custom-fallback-strategy)」を参照してください。 - -[EncoderFallbackException](xref:System.Text.EncoderFallbackException) オブジェクトと [DecoderFallbackException](xref:System.Text.DecoderFallbackException) オブジェクトは、例外を引き起こした状況について以下の情報を提供します。 - -* [EncoderFallbackException](xref:System.Text.EncoderFallbackException) オブジェクトに含まれている [IsUnknownSurrogate](xref:System.Text.EncoderFallbackException.IsUnknownSurrogate) メソッドにより、エンコードできない文字が不明なサロゲート ペアか (この場合は `true` が返されます)、不明な単一文字か (この場合は `false` が返されます) が示されます。 サロゲート ペアの文字は、[EncoderFallbackException.CharUnknownHigh](xref:System.Text.EncoderFallbackException.CharUnknownHigh) プロパティと [EncoderFallbackException.CharUnknownLow](xref:System.Text.EncoderFallbackException.CharUnknownLow) プロパティから取得できます。 不明な単一文字は、[EncoderFallbackException.CharUnknown](xref:System.Text.EncoderFallbackException.CharUnknown) プロパティから取得できます。 また、[EncoderFallbackException.Index](xref:System.Text.EncoderFallbackException.Index) プロパティにより、エンコードできない最初の文字が見つかった文字列内の位置が示されます。 - -* [DecoderFallbackException](xref:System.Text.DecoderFallbackException) オブジェクトに含まれている [BytesUnknown](xref:System.Text.DecoderFallbackException.BytesUnknown) プロパティにより、デコードできないバイト配列が返されます。 また、[DecoderFallbackException.Index](xref:System.Text.DecoderFallbackException.Index) プロパティにより、不明なバイトの開始位置が示されます。 - -[EncoderFallbackException](xref:System.Text.EncoderFallbackException) オブジェクトと [DecoderFallbackException](xref:System.Text.DecoderFallbackException) オブジェクトでは、例外に関する診断情報は十分に入手できますが、エンコード バッファーやデコード バッファーにアクセスすることはできません。 したがって、エンコード メソッド内またはデコード メソッド内で無効なデータを置換したり修正したりすることはできません。 - -## カスタム フォールバック ストラテジの実装 - -.NET には、コード ページによって内部的に実装される最適マッピングに加えて、フォールバック ストラテジを実装するための次のクラスが含まれています。 - -* [EncoderReplacementFallback](xref:System.Text.EncoderReplacementFallback) および [EncoderFallbackBuffer](xref:System.Text.EncoderFallbackBuffer)。エンコード操作中に文字を置換します。 - -* [DecoderReplacementFallback](xref:System.Text.DecoderReplacementFallback) および [DecoderFallbackBuffer](xref:System.Text.DecoderFallbackBuffer)。デコード操作中に文字を置換します。 - -* [EncoderExceptionFallback](xref:System.Text.EncoderExceptionFallback) および [EncoderFallbackBuffer](xref:System.Text.EncoderFallbackBuffer)。文字をエンコードできない場合に [EncoderFallbackException](xref:System.Text.EncoderFallbackException) をスローします。 - -* [DecoderExceptionFallback](xref:System.Text.DecoderExceptionFallback) および [DecoderFallbackBuffer](xref:System.Text.DecoderFallbackBuffer)。文字をエンコードできない場合に [DecoderFallbackException](xref:System.Text.DecoderFallbackException) をスローします。 - -さらに、次の手順に従って、最適フォールバック、置換フォールバック、または例外フォールバックを使用するカスタム ソリューションを実装できます。 - -1. エンコード操作の場合は [EncoderFallback](xref:System.Text.EncoderFallback)、デコード操作の場合は [DecoderFallback](xref:System.Text.DecoderFallback) の派生クラスを作成します。 - -2. エンコード操作の場合は [EncoderFallbackBuffer](xref:System.Text.EncoderFallbackBuffer)、デコード操作の場合は [DecoderFallbackBuffer](xref:System.Text.DecoderFallbackBuffer) の派生クラスを作成します。 - -3. 例外フォールバックにおいて、あらかじめ定義されている [EncoderFallbackException](xref:System.Text.EncoderFallbackException) クラスと [DecoderFallbackException](xref:System.Text.DecoderFallbackException) クラスが目的に合わない場合は、[Exception](xref:System.Exception) や [ArgumentException](xref:System.ArgumentException) などの例外オブジェクトから派生クラスを作成します。 - -### EncoderFallback または DecoderFallback からの派生 - -カスタム フォールバック ソリューションを実装するには、エンコード操作の場合は [EncoderFallback](xref:System.Text.EncoderFallback)、デコード操作の場合は [DecoderFallback](xref:System.Text.DecoderFallback) を継承するクラスを作成する必要があります。 これらのクラスのインスタンスは [Encoding.GetEncoding(String, EncoderFallback, DecoderFallback)](xref:System.Text.Encoding.GetEncoding(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback)) メソッドに渡され、エンコーディング クラスとフォールバックの実装の仲介役として機能します。 - -エンコーダーまたはデコーダーのカスタム フォールバック ソリューションを作成するときには、次のメンバーを実装する必要があります。 - -* [EncoderFallback.MaxCharCount](xref:System.Text.EncoderFallback.MaxCharCount) プロパティまたは [DecoderFallback.MaxCharCount](xref:System.Text.DecoderFallback.MaxCharCount) プロパティ。最適、置換、例外の各フォールバックで単一の文字を置き換えるために返すことのできる文字の最大数を返します。 カスタム例外フォールバックの場合は&0; になります。 - -* [EncoderFallback.CreateFallbackBuffer](xref:System.Text.EncoderFallback.CreateFallbackBuffer) メソッドまたは [DecoderFallback.CreateFallbackBuffer](xref:System.Text.DecoderFallback.CreateFallbackBuffer) メソッド。[EncoderFallbackBuffer](xref:System.Text.EncoderFallbackBuffer) または [DecoderFallbackBuffer](xref:System.Text.DecoderFallbackBuffer) のカスタム実装を返します。 このメソッドは、エンコーダーで正しくエンコードできない文字が初めて検出されたとき、またはデコーダーで正しくデコードできないバイトが初めて検出されたときに呼び出されます。 - -### EncoderFallbackBuffer または DecoderFallbackBuffer からの派生 - -カスタム フォールバック ソリューションを実装するには、エンコード操作の場合は [EncoderFallbackBuffer](xref:System.Text.EncoderFallbackBuffer)、デコード操作の場合は [DecoderFallbackBuffer](xref:System.Text.DecoderFallbackBuffer) を継承するクラスも作成する必要があります。 これらのクラスのインスタンスは、[EncoderFallback](xref:System.Text.EncoderFallback) クラスおよび [DecoderFallback](xref:System.Text.DecoderFallback) クラスの `CreateFallbackBuffer` メソッドによって返されます。 [EncoderFallback.CreateFallbackBuffer](xref:System.Text.EncoderFallback.CreateFallbackBuffer) メソッドは、エンコーダーでエンコードできない文字が初めて検出されたときに呼び出され、[DecoderFallback.CreateFallbackBuffer](xref:System.Text.DecoderFallback.CreateFallbackBuffer) メソッドは、デコーダーでデコードできないバイトが検出されたときに呼び出されます。 [EncoderFallbackBuffer](xref:System.Text.EncoderFallbackBuffer) クラスと[DecoderFallbackBuffer](xref:System.Text.DecoderFallbackBuffer) クラスは、フォールバックの実装を提供します。 各インスタンスは、エンコードできない文字またはデコードできないバイト シーケンスを置き換えるフォールバック文字を含むバッファーを表します。 - -エンコーダーまたはデコーダーのカスタム フォールバック ソリューションを作成するときには、次のメンバーを実装する必要があります。 - -* [EncoderFallbackBuffer.Fallback](xref:System.Text.EncoderFallbackBuffer.%23ctor) メソッドまたは [DecoderFallbackBuffer.Fallback](xref:System.Text.DecoderFallbackBuffer.Fallback(System.Byte[],System.Int32)) メソッド。 [EncoderFallbackBuffer.Fallback](xref:System.Text.EncoderFallbackBuffer.Fallback(System.Char,System.Char,System.Int32)) は、エンコーダーによって呼び出され、エンコードできない文字に関する情報をフォールバック バッファーに提供します。 エンコードされる文字はサロゲート ペアである場合もあるため、このメソッドはオーバーロードされます。 最初のオーバーロードには、エンコードされる文字と、その文字列内のインデックスが渡されます。 2 番目のオーバーロードには、上位および下位のサロゲートと、その文字列内のインデックスが渡されます。 [DecoderFallbackBuffer.Fallback](xref:System.Text.DecoderFallbackBuffer.Fallback(System.Byte[],System.Int32)) メソッドは、デコーダーによって呼び出され、デコードできないバイトに関する情報をフォールバック バッファーに提供します。 このメソッドには、デコードできないバイト配列と、最初のバイトのインデックスが渡されます。 フォールバック メソッドは、フォールバック バッファーが最適な文字または置換文字を提供できる場合は `true`、それ以外の場合は `false` を返します。 例外フォールバックの場合は例外をスローします。 - -* [EncoderFallbackBuffer.GetNextChar](xref:System.Text.EncoderFallbackBuffer.GetNextChar) メソッドまたは [DecoderFallbackBuffer.GetNextChar](xref:System.Text.DecoderFallbackBuffer.GetNextChar) メソッド。フォールバック バッファーから次の文字を取得するために、エンコーダーまたはデコーダーによって繰り返し呼び出されます。 すべてのフォールバック文字を返し終わったら、このメソッドは U+0000 を返す必要があります。 - -* [EncoderFallbackBuffer.Remaining](xref:System.Text.EncoderFallbackBuffer.Remaining) プロパティまたは [DecoderFallbackBuffer.Remaining](xref:System.Text.DecoderFallbackBuffer.Remaining) プロパティ。フォールバック バッファー内の残りの文字数を返します。 - -* [EncoderFallbackBuffer.MovePrevious](xref:System.Text.EncoderFallbackBuffer.MovePrevious) メソッドまたは [DecoderFallbackBuffer.MovePrevious](xref:System.Text.DecoderFallbackBuffer.MovePrevious) メソッド。フォールバック バッファー内の現在の位置を前の文字に移動します。 - -* [EncoderFallbackBuffer.Reset](xref:System.Text.EncoderFallbackBuffer.Reset) メソッドまたは [DecoderFallbackBuffer.Reset](xref:System.Text.DecoderFallbackBuffer.Reset) メソッド。フォールバック バッファーを再初期化します。 - -フォールバックの実装が最適フォールバックまたは置換フォールバックの場合は、[EncoderFallbackBuffer](xref:System.Text.EncoderFallbackBuffer) と [DecoderFallbackBuffer](xref:System.Text.DecoderFallbackBuffer) の派生クラスで、2 つのプライベート インスタンス フィールド (バッファー内の正確な文字数と、次に返される文字のインデックス) も保持します。 - -### EncoderFallback の例 - -前の例では、置換フォールバックを使用して、対応する ASCII 文字がない Unicode 文字をアスタリスク (\*) に置き換えました。 次の例では、代わりに最適フォールバックのカスタム実装を使用して、非 ASCII 文字のマッピングを改善しています。 - -次のコードでは、[EncoderFallback](xref:System.Text.EncoderFallback) から派生する `CustomMapper` という名前のクラスを定義して、非 ASCII 文字の最適マッピングを処理します。 このクラスの `CreateFallbackBuffer` メソッドは、[EncoderFallbackBuffer](xref:System.Text.EncoderFallbackBuffer) の実装を提供する `CustomMapperFallbackBuffer` オブジェクトを返します。 `CustomMapper` クラスは、[Dictionary<TKey, TValue>](xref:System.Collections.Generic.Dictionary%602) オブジェクトを使用して、サポートされていない Unicode 文字 (キー値) と、それらに対応する 8 ビット文字とのマッピングを格納します (64 ビット整数の 2 つの連続するバイトに格納されます)。 このマッピングをフォールバック バッファーで使用できるようにするには、`CustomMapper` のインスタンスを `CustomMapperFallbackBuffer` のクラス コンストラクターにパラメーターとして渡します。 最も長いマッピングは Unicode 文字 U+221E に対応する文字列 "INF" なので、`MaxCharCount` プロパティは 3 を返します。 - -```csharp -public class CustomMapper : EncoderFallback -{ - public string DefaultString; - internal Dictionary mapping; - - public CustomMapper() : this("*") - { - } - - public CustomMapper(string defaultString) - { - this.DefaultString = defaultString; - - // Create table of mappings - mapping = new Dictionary(); - mapping.Add(0x24C8, 0x53); - mapping.Add(0x2075, 0x35); - mapping.Add(0x221E, 0x49004E0046); - } - - public override EncoderFallbackBuffer CreateFallbackBuffer() - { - return new CustomMapperFallbackBuffer(this); - } - - public override int MaxCharCount - { - get { return 3; } - } -} -``` - -```vb -Public Class CustomMapper : Inherits EncoderFallback - Public DefaultString As String - Friend mapping As Dictionary(Of UShort, ULong) - - Public Sub New() - Me.New("?") - End Sub - - Public Sub New(ByVal defaultString As String) - Me.DefaultString = defaultString - - ' Create table of mappings - mapping = New Dictionary(Of UShort, ULong) - mapping.Add(&H24C8, &H53) - mapping.Add(&H2075, &H35) - mapping.Add(&H221E, &H49004E0046) - End Sub - - Public Overrides Function CreateFallbackBuffer() As System.Text.EncoderFallbackBuffer - Return New CustomMapperFallbackBuffer(Me) - End Function - - Public Overrides ReadOnly Property MaxCharCount As Integer - Get - Return 3 - End Get - End Property -End Class -``` - -次のコードでは、[EncoderFallbackBuffer](xref:System.Text.EncoderFallbackBuffer) から派生する `CustomMapperFallbackBuffer` クラスを定義しています。 `CustomMapper` インスタンスで定義されている、最適マッピングを含むディクショナリは、クラス コンストラクターから取得できます。 このクラスの `Fallback` メソッドは、ASCII エンコーダーでエンコードできない Unicode 文字がマッピング ディクショナリで定義されている場合は `true` を返し、それ以外の場合は `false` を返します。 フォールバックのたびに、プライベート変数 `count` は返される残りの文字数を示し、プライベート変数 `index` は次に返される文字の文字列バッファー内 (`charsToReturn` 内) の位置を示します。 - -```csharp -public class CustomMapperFallbackBuffer : EncoderFallbackBuffer -{ - int count = -1; // Number of characters to return - int index = -1; // Index of character to return - CustomMapper fb; - string charsToReturn; - - public CustomMapperFallbackBuffer(CustomMapper fallback) - { - this.fb = fallback; - } - - public override bool Fallback(char charUnknownHigh, char charUnknownLow, int index) - { - // Do not try to map surrogates to ASCII. - return false; - } - - public override bool Fallback(char charUnknown, int index) - { - // Return false if there are already characters to map. - if (count >= 1) return false; - - // Determine number of characters to return. - charsToReturn = String.Empty; - - ushort key = Convert.ToUInt16(charUnknown); - if (fb.mapping.ContainsKey(key)) { - byte[] bytes = BitConverter.GetBytes(fb.mapping[key]); - int ctr = 0; - foreach (var byt in bytes) { - if (byt > 0) { - ctr++; - charsToReturn += (char) byt; - } - } - count = ctr; - } - else { - // Return default. - charsToReturn = fb.DefaultString; - count = 1; - } - this.index = charsToReturn.Length - 1; - - return true; - } - - public override char GetNextChar() - { - // We'll return a character if possible, so subtract from the count of chars to return. - count--; - // If count is less than zero, we've returned all characters. - if (count < 0) - return '\u0000'; - - this.index--; - return charsToReturn[this.index + 1]; - } - - public override bool MovePrevious() - { - // Original: if count >= -1 and pos >= 0 - if (count >= -1) { - count++; - return true; - } - else { - return false; - } - } - - public override int Remaining - { - get { return count < 0 ? 0 : count; } - } - - public override void Reset() - { - count = -1; - index = -1; - } -} -``` - -```vb -Public Class CustomMapperFallbackBuffer : Inherits EncoderFallbackBuffer - - Dim count As Integer = -1 ' Number of characters to return - Dim index As Integer = -1 ' Index of character to return - Dim fb As CustomMapper - Dim charsToReturn As String - - Public Sub New(ByVal fallback As CustomMapper) - MyBase.New() - Me.fb = fallback - End Sub - - Public Overloads Overrides Function Fallback(ByVal charUnknownHigh As Char, ByVal charUnknownLow As Char, ByVal index As Integer) As Boolean - ' Do not try to map surrogates to ASCII. - Return False - End Function - - Public Overloads Overrides Function Fallback(ByVal charUnknown As Char, ByVal index As Integer) As Boolean - ' Return false if there are already characters to map. - If count >= 1 Then Return False - - ' Determine number of characters to return. - charsToReturn = String.Empty - - Dim key As UShort = Convert.ToUInt16(charUnknown) - If fb.mapping.ContainsKey(key) Then - Dim bytes() As Byte = BitConverter.GetBytes(fb.mapping.Item(key)) - Dim ctr As Integer - For Each byt In bytes - If byt > 0 Then - ctr += 1 - charsToReturn += Chr(byt) - End If - Next - count = ctr - Else - ' Return default. - charsToReturn = fb.DefaultString - count = 1 - End If - Me.index = charsToReturn.Length - 1 - - Return True - End Function - - Public Overrides Function GetNextChar() As Char - ' We'll return a character if possible, so subtract from the count of chars to return. - count -= 1 - ' If count is less than zero, we've returned all characters. - If count < 0 Then Return ChrW(0) - - Me.index -= 1 - Return charsToReturn(Me.index + 1) - End Function - - Public Overrides Function MovePrevious() As Boolean - ' Original: if count >= -1 and pos >= 0 - If count >= -1 Then - count += 1 - Return True - Else - Return False - End If - End Function - - Public Overrides ReadOnly Property Remaining As Integer - Get - Return If(count < 0, 0, count) - End Get - End Property - - Public Overrides Sub Reset() - count = -1 - index = -1 - End Sub -End Class -``` - -次のコードでは、`CustomMapper` オブジェクトをインスタンス化して、そのインスタンスを [Encoding.GetEncoding(String, EncoderFallback, DecoderFallback)](xref:System.Text.Encoding.GetEncoding(System.String,System.Text.EncoderFallback,System.Text.DecoderFallback)) メソッドに渡しています。 出力を見るとわかるように、この最適フォールバックの実装では、元の文字列の&3; つの非 ASCII 文字が正しく処理されます。 - -```csharp -using System; -using System.Collections.Generic; -using System.Text; - -class Program -{ - static void Main() - { - Encoding enc = Encoding.GetEncoding("us-ascii", new CustomMapper(), new DecoderExceptionFallback()); - - string str1 = "\u24C8 \u2075 \u221E"; - Console.WriteLine(str1); - for (int ctr = 0; ctr <= str1.Length - 1; ctr++) { - Console.Write("{0} ", Convert.ToUInt16(str1[ctr]).ToString("X4")); - if (ctr == str1.Length - 1) - Console.WriteLine(); - } - Console.WriteLine(); - - // Encode the original string using the ASCII encoder. - byte[] bytes = enc.GetBytes(str1); - Console.Write("Encoded bytes: "); - foreach (var byt in bytes) - Console.Write("{0:X2} ", byt); - - Console.WriteLine("\n"); - - // Decode the ASCII bytes. - string str2 = enc.GetString(bytes); - Console.WriteLine("Round-trip: {0}", str1.Equals(str2)); - if (! str1.Equals(str2)) { - Console.WriteLine(str2); - foreach (var ch in str2) - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")); - - Console.WriteLine(); - } - } -} -``` - -```vb -Imports System.Text -Imports System.Collections.Generic - -Module Module1 - - Sub Main() - Dim enc As Encoding = Encoding.GetEncoding("us-ascii", New CustomMapper(), New DecoderExceptionFallback()) - - Dim str1 As String = String.Format("{0} {1} {2}", ChrW(&H24C8), ChrW(&H2075), ChrW(&H221E)) - Console.WriteLine(str1) - For ctr As Integer = 0 To str1.Length - 1 - Console.Write("{0} ", Convert.ToUInt16(str1(ctr)).ToString("X4")) - If ctr = str1.Length - 1 Then Console.WriteLine() - Next - Console.WriteLine() - - ' Encode the original string using the ASCII encoder. - Dim bytes() As Byte = enc.GetBytes(str1) - Console.Write("Encoded bytes: ") - For Each byt In bytes - Console.Write("{0:X2} ", byt) - Next - Console.WriteLine() - Console.WriteLine() - - ' Decode the ASCII bytes. - Dim str2 As String = enc.GetString(bytes) - Console.WriteLine("Round-trip: {0}", str1.Equals(str2)) - If Not str1.Equals(str2) Then - Console.WriteLine(str2) - For Each ch In str2 - Console.Write("{0} ", Convert.ToUInt16(ch).ToString("X4")) - Next - Console.WriteLine() - End If - End Sub -End Module -``` - -## 関連項目 - -[System.Text.Encoder](xref:System.Text.Encoder) - -[System.Text.EncoderFallback](xref:System.Text.EncoderFallback) - -[System.Text.Decoder](xref:System.Text.Decoder) - -[System.Text.DecoderFallback](xref:System.Text.DecoderFallback) - -[System.Text.Encoding](xref:System.Text.Encoding) - - - - - +> エンコード操作用のカスタム例外ハンドラーを実装することもできます。 詳しくは、「[カスタム フォールバック ストラテジの実装](../../../docs/standard/base-types/character-encoding.md#Custom)」セクションをご覧ください。 + + オブジェクトと オブジェクトは、例外を引き起こした状況について以下の情報を提供します。 + +- オブジェクトに含まれている メソッドにより、エンコードできない文字が不明なサロゲート ペアか \(この場合は `true` が返されます\)、不明な単一文字か \(この場合は `false` が返されます\) が示されます。 サロゲート ペアの文字は、 プロパティと プロパティから取得できます。 不明な単一文字は、 プロパティから取得できます。 また、 プロパティにより、エンコードできない最初の文字が見つかった文字列内の位置が示されます。 + +- オブジェクトに含まれている プロパティにより、デコードできないバイト配列が返されます。 また、 プロパティにより、不明なバイトの開始位置が示されます。 + + オブジェクトと オブジェクトでは、例外に関する診断情報は十分に入手できますが、エンコード バッファーやデコード バッファーにアクセスすることはできません。 したがって、エンコード メソッド内またはデコード メソッド内で無効なデータを置換したり修正したりすることはできません。 + + +## カスタム フォールバック ストラテジの実装 + .NET Framework には、コード ページによって内部的に実装される最適マッピングに加えて、フォールバック ストラテジを実装するための次のクラスが含まれています。 + +- および 。エンコード操作中に文字を置換します。 + +- および 。デコード操作中に文字を置換します。 + +- および 。文字をエンコードできない場合に をスローします。 + +- および 。文字をデコードできない場合に をスローします。 + + さらに、次の手順に従って、最適フォールバック、置換フォールバック、または例外フォールバックを使用するカスタム ソリューションを実装できます。 + +1. エンコード操作の場合は 、デコード操作の場合は の派生クラスを作成します。 + +2. エンコード操作の場合は 、デコード操作の場合は の派生クラスを作成します。 + +3. 例外フォールバックにおいて、あらかじめ定義されている クラスと クラスが目的に合わない場合は、 などの例外オブジェクトから派生クラスを作成します。 + +### EncoderFallback または DecoderFallback からの派生 + カスタム フォールバック ソリューションを実装するには、エンコード操作の場合は 、デコード操作の場合は を継承するクラスを作成する必要があります。 これらのクラスのインスタンスは メソッドに渡され、エンコーディング クラスとフォールバックの実装の仲介役として機能します。 + + エンコーダーまたはデコーダーのカスタム フォールバック ソリューションを作成するときには、次のメンバーを実装する必要があります。 + +- プロパティまたは プロパティ。最適、置換、例外の各フォールバックで単一の文字を置き換えるために返すことのできる文字の最大数を返します。 カスタム例外フォールバックの場合は 0 になります。 + +- メソッドまたは メソッド。 または のカスタム実装を返します。 このメソッドは、エンコーダーで正しくエンコードできない文字が初めて検出されたとき、またはデコーダーで正しくデコードできないバイトが初めて検出されたときに呼び出されます。 + +### EncoderFallbackBuffer または DecoderFallbackBuffer からの派生 + カスタム フォールバック ソリューションを実装するには、エンコード操作の場合は 、デコード操作の場合は を継承するクラスを作成する必要もあります。 これらのクラスのインスタンスは、 クラスおよび クラスの メソッドによって返されます。 メソッドは、エンコーダーでエンコードできない文字が初めて検出されたときに呼び出され、 メソッドは、デコーダーでデコードできないバイトが検出されたときに呼び出されます。 クラスと クラスは、フォールバックの実装を提供します。 各インスタンスは、エンコードできない文字またはデコードできないバイト シーケンスを置き換えるフォールバック文字を含むバッファーを表します。 + + エンコーダーまたはデコーダーのカスタム フォールバック ソリューションを作成するときには、次のメンバーを実装する必要があります。 + +- メソッドまたは メソッド。 は、エンコーダーによって呼び出され、エンコードできない文字に関する情報をフォールバック バッファーに提供します。 エンコードされる文字はサロゲート ペアである場合もあるため、このメソッドはオーバーロードされます。 最初のオーバーロードには、エンコードされる文字と、その文字列内のインデックスが渡されます。 2 番目のオーバーロードには、上位および下位のサロゲートと、その文字列内のインデックスが渡されます。 メソッドは、デコーダーによって呼び出され、デコードできないバイトに関する情報をフォールバック バッファーに提供します。 このメソッドには、デコードできないバイト配列と、最初のバイトのインデックスが渡されます。 フォールバック メソッドは、フォールバック バッファーが最適な文字または置換文字を提供できる場合は `true`、それ以外の場合は `false` を返します。 例外フォールバックの場合は例外をスローします。 + +- メソッドまたは メソッド。フォールバック バッファーから次の文字を取得するために、エンコーダーまたはデコーダーによって繰り返し呼び出されます。 すべてのフォールバック文字を返し終わったら、このメソッドは U\+0000 を返す必要があります。 + +- プロパティまたは プロパティ。フォールバック バッファー内の残りの文字数を返します。 + +- メソッドまたは メソッド。フォールバック バッファー内の現在の位置を前の文字に移動します。 + +- メソッドまたは メソッド。フォールバック バッファーを再初期化します。 + + フォールバックの実装が最適フォールバックまたは置換フォールバックの場合は、 の派生クラスで、2 つのプライベート インスタンス フィールド \(バッファー内の正確な文字数と、次に返される文字のインデックス\) も保持します。 + +### EncoderFallback の例 + 前の例では、置換フォールバックを使用して、対応する ASCII 文字がない Unicode 文字をアスタリスク \(\*\) に置き換えました。 次の例では、代わりに最適フォールバックのカスタム実装を使用して、非 ASCII 文字のマッピングを改善しています。 + + 次のコードでは、`CustomMapper` から派生する という名前のクラスを定義して、非 ASCII 文字の最適マッピングを処理します。 このクラスの `CreateFallbackBuffer` メソッドは、`CustomMapperFallbackBuffer` の実装を提供する オブジェクトを返します。`CustomMapper` クラスは、 オブジェクトを使用して、サポートされていない Unicode 文字 \(キー値\) と、それらに対応する 8 ビット文字とのマッピングを格納します \(64 ビット整数の 2 つの連続するバイトに格納されます\)。 このマッピングをフォールバック バッファーで使用できるようにするには、`CustomMapper` のインスタンスを `CustomMapperFallbackBuffer` のクラス コンストラクターにパラメーターとして渡します。 最も長いマッピングは Unicode 文字 U\+221E に対応する文字列 "INF" なので、`MaxCharCount` プロパティは 3 を返します。 + + [!code-csharp[Conceptual.Encoding#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/custom1.cs#5)] + [!code-vb[Conceptual.Encoding#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/custom1.vb#5)] + + 次のコードでは、`CustomMapperFallbackBuffer` から派生する クラスを定義しています。`CustomMapper` インスタンスで定義されている、最適マッピングを含むディクショナリは、クラス コンストラクターから取得できます。 このクラスの `Fallback` メソッドは、ASCII エンコーダーでエンコードできない Unicode 文字がマッピング ディクショナリで定義されている場合は `true` を返し、それ以外の場合は `false` を返します。 フォールバックのたびに、プライベート変数 `count` は返される残りの文字数を示し、プライベート変数 `index` は次に返される文字の文字列バッファー内 \(`charsToReturn` 内\) の位置を示します。 + + [!code-csharp[Conceptual.Encoding#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/custom1.cs#6)] + [!code-vb[Conceptual.Encoding#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/custom1.vb#6)] + + 次のコードでは、`CustomMapper` オブジェクトをインスタンス化して、そのインスタンスを メソッドに渡しています。 出力を見るとわかるように、この最適フォールバックの実装では、元の文字列の 3 つの非 ASCII 文字が正しく処理されます。 + + [!code-csharp[Conceptual.Encoding#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.encoding/cs/custom1.cs#7)] + [!code-vb[Conceptual.Encoding#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.encoding/vb/custom1.vb#7)] + +## 参照 + + + + + + [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) \ No newline at end of file diff --git a/docs/standard/base-types/character-escapes-in-regular-expressions.md b/docs/standard/base-types/character-escapes-in-regular-expressions.md new file mode 100644 index 00000000000..6c30a8200f9 --- /dev/null +++ b/docs/standard/base-types/character-escapes-in-regular-expressions.md @@ -0,0 +1,74 @@ +--- +title: "正規表現での文字のエスケープ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, 文字のエスケープ" + - "文字, エスケープ" + - "構成体, 文字のエスケープ" + - "エスケープ文字" + - "正規表現, 文字のエスケープ" + - "置換パターン" + - "エスケープされない文字" +ms.assetid: f49cc9cc-db7d-4058-8b8a-422bc08b29b0 +caps.latest.revision: 31 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 29 +--- +# 正規表現での文字のエスケープ +正規表現の円記号 \(\\\) は、次のいずれかを示します。 + +- 後に続く文字が、次のセクションの表に示す特殊文字であること。 たとえば、`\b` は、正規表現の一致がワード境界から開始する必要があることを示すアンカーであり、`\t` はタブを表します。`\x020` は空白を表します。 + +- エスケープされていない言語構成要素として解釈される文字は、文字どおりに解釈する必要があること。 たとえば、中かっこ \(`{`\) は量指定子の定義を開始しますが、円記号とそれに続く中かっこ \(`\{`\) は、正規表現エンジンで中かっこに一致させる必要があることを示します。 同様に、1 つの円記号はエスケープされた言語構成要素の開始を示しますが、2 つの円記号 \(`\\`\) は、正規表現エンジンで円記号に一致させる必要があることを示します。 + +> [!NOTE] +> 文字エスケープは、正規表現では認識されますが、置換パターンでは認識されません。 + +## .NET Framework の文字エスケープ + 次の表は、.NET Framework の正規表現でサポートされている文字エスケープの一覧です。 + +|文字または文字シーケンス|説明| +|------------------|--------| +|次の文字を除くすべての文字:

. $ ^ { \[ \( | \) \* \+ ? \\|**文字またはシーケンス**の列にリストされているもの以外の文字は、正規表現で特別な意味を持ちません。それらは、その文字自体と一致します。

**文字またはシーケンス**の列に含まれる文字は、特殊な正規表現言語要素です。 正規表現でそれらの文字と一致するためには、エスケープするか、[ppositive 文字グループ](../../../docs/standard/base-types/character-classes-in-regular-expressions.md)に含める必要があります。 たとえば、正規表現の `\$\d+` または `[$]\d+`は「$1200」と一致します。| +|`\a`|ビープ音 \(アラーム\) 文字の `\u0007`。| +|`\b`|`[` *character\_group* `]` 文字クラスでバックスペースの `\u0008` と一致します。 \(「[文字クラス](../../../docs/standard/base-types/character-classes-in-regular-expressions.md)」を参照してください。\) 文字クラスの外部では、`\b` はワード境界と一致するアンカーです \(「[アンカー](../../../docs/standard/base-types/anchors-in-regular-expressions.md)」を参照してください。\)| +|`\t`|タブの `\u0009`。| +|`\r`|キャリッジ リターンの `\u000D`。 `\r` の機能は `\n` という改行文字と同じではありません。| +|`\v`|垂直タブの `\u000B`。| +|`\f`|フォーム フィードの `\u000C`。| +|`\n`|改行文字の `\u000A`。| +|`\e`|エスケープ文字の `\u001B`。| +|`\` *nnn*|ASCII 文字と一致します。*nnn* は、8 進文字コードを表す 2 桁または 3 桁で構成されます。 たとえば、`\040` は、空白文字を表します。 この構成体は、1 桁のみの場合 \(`\2` など\)、またはキャプチャ グループの番号に対応する場合には前方参照として解釈されます。 \(「[前方参照構成体](../../../docs/standard/base-types/backreference-constructs-in-regular-expressions.md)」を参照してください。\)| +|`\x` *nn*|ASCII 文字と一致します。*nn* は 2 桁の 16 進文字コードです。| +|`\c` *X*|ASCII の制御文字と一致します。X は制御文字です。 たとえば、`\cC` は CTRL\-C です。| +|`\u` *nnnn*|値が *nnnn* の 16 進数である UTF\-16 コード単位と一致します。 **Note:** .NET Framework では、Unicode を指定するために使用する Perl5 の文字エスケープはサポートされません。 Perl 5 の文字エスケープは `\x{`*\#\#\#\#*`…}` の形式です。ここで、*\#\#\#\#*`…` は一連の 16 進数です。 代わりに、`\u`*nnnn* を使用します。| +|`\`|エスケープ文字として認識されない文字が後ろに付いている場合は、その文字と一致します。 たとえば、`\*` はアスタリスク \(\*\) と一致し、`\x2A` と同じです。| + +## 例 + 正規表現の文字エスケープの使用例を次に示します。 2009 年の世界最大規模の都市の名前と人口を含む文字列を解析します。 各都市名は、タブ \(`\t`\) または縦棒 \(| または `\u007c`\) で区切られます。 個々の都市とその人口は、復帰とライン フィードで互いに区切られています。 + + [!code-csharp[RegularExpressions.Language.Escapes#1](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.escapes/cs/escape1.cs#1)] + [!code-vb[RegularExpressions.Language.Escapes#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.escapes/vb/escape1.vb#1)] + + この正規表現 `\G(.+)[\t|\u007c](../../../amples/snippets/visualbasic/VS_Snippets_Wpf/DocumentStructure/visualbasic/spec_withstructure-xps/_rels/.rels)\r?\n` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\G`|最後の一致の終了位置から照合を開始します。| +|`(.+)`|任意の文字と 1 回以上、一致します。 これが最初のキャプチャ グループです。| +|`[\t\u007c]`|タブ \(`\t`\) または縦棒 \(|\) と一致します。| +|`(.+)`|任意の文字と 1 回以上、一致します。 これが 2 番目のキャプチャ グループです。| +|`\r? \n`|復帰とそれに続く改行に、0 回または 1 回一致します。| + +## 参照 + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) \ No newline at end of file diff --git a/docs/standard/base-types/common-type-system.md b/docs/standard/base-types/common-type-system.md index 5845cd01cb7..e11d902a7eb 100644 --- a/docs/standard/base-types/common-type-system.md +++ b/docs/standard/base-types/common-type-system.md @@ -1,535 +1,327 @@ --- -title: "共通型システムの詳細" -description: "共通型システムの詳細" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/20/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: b5482a1d-7bdc-40fe-aa45-10df930ceb5b -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 6be672acc84a76106e25b82574acad16beb4a8ac -ms.lasthandoff: 03/02/2017 - ---- - -# 共通型システムの詳細 - -このトピックには、共通型システムの詳細を説明する次のセクションが含まれています。 - -* [.NET の型](#types-in-net) - -* [型定義](#type-definitions) - -* [型のメンバー](#type-members) - -* [型のメンバーの特性](#characteristics-of-type-members) - - -## .NET の型 - -.NET に存在するすべての型は、値型と参照型のどちらかに区別されます。 - -値型は、オブジェクトがその実際の値で表されるデータ型です。 変数に値型のインスタンスが割り当てられると、その変数には値の新しいコピーが代入されます。 - -参照型は、オブジェクトがその実際の値を指す参照 (ポインターのようなもの) によって表されるデータ型です。 参照型が変数に割り当てられている場合、その変数は元の値を参照します (つまり、元の値を指します)。 コピーは作成されません。 - -.NET の共通型システムは、次の&5; つの型のカテゴリをサポートしています。 - -* [クラス](#classes) - -* [構造体](#structures) - -* [列挙型](#enumerations) - -* [インターフェイス](#interfaces) - -* [デリゲート](#delegates) - -### クラス - -クラスは参照型であり、他のクラスから直接派生させることも、[System.Object](xref:System.Object) から暗黙的に派生させることもできます。 クラスは、オブジェクト (クラスのインスタンス) が実行できる操作 (メソッド、イベント、またはプロパティ) およびオブジェクトが保持するデータ (フィールド) を定義するものです。 通常、クラスは、たとえば定義のみを持ち実装は持たないインターフェイスとは対照的に、定義と実装の両方を持ちます。しかし、実装を持たないメンバーが&1; つ以上存在するクラスもあります。 - -クラスが持つことのできる特性のいくつかを次の表で説明します。 ランタイムをサポートする言語にはそれぞれ、クラスまたはクラス メンバーに対し、こうした特性の&1; つ以上を指定する手段が用意されています。 ただし、.NET を対象とするすべてのプログラミング言語で、これらすべての特性を利用できるわけではありません。 - -特徴 | 説明 --------------- | ----------- -sealed | 型から別のクラスを派生できないことを示します。 -実装 | クラスが、インターフェイスのメンバーの実装を提供することによって、1 つ以上のインターフェイスを使用することを示します。 -abstract | クラスをインスタンス化できないことを示します。 クラスを使用するには、このクラスから別のクラスを派生させる必要があります。 -継承 | クラスのインスタンスを、基底クラスが指定されている任意の場所で使用できることを示します。 基底クラスから継承する派生クラスは、基底クラスによって提供されるすべてのパブリック メンバーの実装を使用できます。または、派生クラスは、パブリック メンバーの実装をその独自の実装でオーバーライドできます。 -exported または not exported | クラスが定義されているアセンブリの外部から、そのクラスを参照できるかどうかを示します。 この特性は、最上位のクラスにのみ適用され、入れ子にされたクラスには適用されません。 - -> [!NOTE] -> クラスは、親クラスまたは構造体で入れ子にすることもできます。 入れ子にされたクラスにも、メンバー特性を適用できます。 詳細については、「[入れ子にされた型](#nested-types)」を参照してください。 - -実装を持たないクラス メンバーは抽象メンバーです。 1 つ以上の抽象メンバーを持つクラスは、それ自体が抽象クラスとなり、新しいインスタンスを作成できません。 ランタイムに対応する言語の中には、抽象メンバーを持たないクラスも抽象クラスとしてマークできるものがあります。 抽象クラスは、派生クラスが必要に応じて継承したりオーバーライドしたりできる基本的な一連の機能をカプセル化する必要がある場合に使用できます。 抽象クラスでないクラスを具象クラスと呼びます。 - -クラスで実装できるインターフェイスの数に制限はありませんが、すべてのクラスが暗黙的に継承する [System.Object](xref:System.Object) を除き、継承できる基底クラスは&1; つだけです。 すべてのクラスには少なくとも&1; つのコンストラクターが必要で、このコンストラクターにより、各クラスの新しいインスタンスが初期化されます。 コンストラクターを明示的に定義しなかった場合、ほとんどのコンパイラでは、自動的に既定の (パラメーターなしの) コンストラクターが使用されます。 - -### 構造体 - -構造体は、[System.Object](xref:System.Object) から派生する [System.ValueType](xref:System.ValueType) から暗黙的に派生する値型です。 構造体は、メモリ要件が小さい値を表す場合や、厳密に型指定されたパラメーターを持つメソッドに対してパラメーターを値渡しする場合などに、非常に便利です。 .NET では、すべてのプリミティブ データ型 ([Boolean](xref:System.Boolean)、[Byte](xref:System.Byte)、[Char](xref:System.Char)、[DateTime](xref:System.DateTime)、[Decimal](xref:System.Decimal)、[Double](xref:System.Double)、[Int16](xref:System.Int16)、[Int32](xref:System.Int32)、[Int64](xref:System.Int64)、[SByte](xref:System.SByte)、[Single](xref:System.Single)、[UInt16](xref:System.UInt16)、[UInt32](xref:System.UInt32)、[UInt64](xref:System.UInt64)) が構造体として定義されています。 - -クラスと同様、構造体にもデータ (構造体のフィールド) と、そのデータに対して実行できる操作 (構造体のメソッド) が定義されます。 これは、[System.Object](xref:System.Object) クラスと [System.ValueType](xref:System.ValueType) クラスで定義されている仮想メソッドなどのメソッドと、値型そのものに定義されているすべてのメソッドを、構造体に対して呼び出すことができることを意味します。 言い換えれば、構造体には、静的メソッドと非静的メソッドに加え、フィールド、プロパティ、およびイベントを持たせることができます。 構造体のインスタンスを作成したり、構造体をパラメーターとして渡したりできるほか、構造体をローカル変数として格納することも、別の値型または参照型のフィールドに格納することもできます。 構造体でインターフェイスを実装することもできます。 - -ただし、値型は、いくつかの点でクラスとは異なります。 まず、値型は [System.ValueType](xref:System.ValueType) を暗黙的に継承しますが、他の型を直接継承することはできません。 同様に、すべての値型には、値型から他の型が派生できないことを示す sealed 属性が適用されます。 また、値型はコンストラクターを必要としません。 - -共通言語ランタイムは、それぞれの値型に対応するボックス化された型を提供します。ボックス化された型とは、値型と同じ状態および動作を備えたクラスのことです。 値型のインスタンスは、[System.Object](xref:System.Object) 型のパラメーターを受け入れるメソッドに渡されると、ボックス化されます。 参照渡しのパラメーターとして値型を受け入れるメソッドの呼び出しから制御が返されると、ボックス化が解除 (つまり、クラスのインスタンスから値型のインスタンスに変換) されます。 言語によっては、ボックス化された型が必要なときに特別な構文を使用する必要がありますが、ボックス化された型を必要に応じて自動的に使用する言語もあります。 値型を定義するときには、ボックス化された型とボックス化解除された型の両方を定義します。 - -### 列挙体 - -列挙型 (enum) は、[System.Enum](xref:System.Enum) から直接継承される値型で、基になるプリミティブ型の値に対して別名を割り当てます。 列挙型には名前、基になる型、および一連のフィールドが存在します。基になる型は、組み込みの符号付きまたは符号なし整数型 ([Byte](xref:System.Byte)、[Int32](xref:System.Int32)、[UInt64](xref:System.UInt64) など) であることが必要です。 フィールドは静的リテラル フィールドで、各フィールドが&1; つの定数を表します。 複数のフィールドに同じ値を割り当てることもできます。 その場合は、リフレクションや文字列変換を行うために、いずれかの値をプライマリ列挙値としてマークしておく必要があります。 - -基になる型の値を列挙型に割り当てることも、その逆も可能です (キャストは必要ありません)。 列挙型のインスタンスを作成し、[System.Enum](xref:System.Enum) のメソッドや、その列挙型の基となる型に定義されている任意のメソッドを呼び出すことができます。 しかし、言語によっては、基になる型のインスタンスが必要とされるときに、列挙型をパラメーターとして渡すことが許可されていない場合もあります (またはその逆)。 - -また、列挙型には次のような制限があります。 - -* 独自のメソッドは定義できません。 - -* インターフェイスを実装できません。 - -* プロパティまたはイベントを定義できません。 - -* 列挙型は、ジェネリック型に入れ子にされているという理由だけでジェネリックである場合を除き、ジェネリックにはなりません。 つまり、列挙型は、独自の型パラメーターを持つことができません。 - +title: "共通型システム | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アセンブリ [.NET Framework], 型" + - "共通型システム" + - "言語間の相互運用性" + - "名前空間 [.NET Framework], 型" + - "参照型" + - "型システム" + - "型, 型の概要" + - "値型" +ms.assetid: 53c57c96-83e1-4ee3-9543-9ac832671a89 +caps.latest.revision: 25 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 24 +--- +# 共通型システム +共通型システム \(CTS: Common Type System\) は、共通言語ランタイムにおける型の宣言、使用、および管理の方法を定義しており、ランタイムによる言語間統合のサポートにおいても重要な役割を果たします。 共通型システムには次のような機能があります。 + +- 言語間の統合、タイプ セーフ、およびパフォーマンスの高いコードの実行を可能にするフレームワークを確立します。 + +- さまざまなプログラミング言語の完全な実装をサポートするオブジェクト指向モデルを提供します。 + +- 異なる言語で記述されたオブジェクトが相互に対話できるように、各言語が準拠すべき規則を定義します。 + +- アプリケーション開発に使用されるプリミティブ データ型 \( など\) を含んだライブラリを提供します。 + + このトピックは、次のセクションで構成されています。 + +- [.NET Framework の型](#types_in_the_net_framework) + +- [型定義](#type_definitions) + +- [型のメンバー](#type_members) + +- [型のメンバーの特性](#characteristics_of_type_members) + + +## .NET Framework の型 + .NET Framework に存在するすべての型は、値型と参照型のどちらかに区別されます。 + + 値型は、オブジェクトがその実際の値で表されるデータ型です。 変数に値型のインスタンスが割り当てられると、その変数には値の新しいコピーが代入されます。 + + 参照型は、オブジェクトがその実際の値を指す参照 \(ポインターのようなもの\) によって表されるデータ型です。 参照型が変数に割り当てられている場合、その変数は元の値を参照します \(つまり、元の値を指します\)。 コピーは作成されません。 + + .NET Framework の共通型システムは、次の 5 つの型のカテゴリをサポートしています。 + +- [クラス](#Classes) + +- [構造体](#Structures) + +- [列挙](#Enumerations) + +- [インターフェイス](#Interfaces) + +- [デリゲート](#Delegates) + + +### クラス + クラスは参照型であり、他のクラスから直接派生させることも、 から暗黙的に派生させることもできます。 クラスは、オブジェクト \(クラスのインスタンス\) が実行できる操作 \(メソッド、イベント、またはプロパティ\) およびオブジェクトが保持するデータ \(フィールド\) を定義するものです。 通常、クラスは、たとえば定義のみを持ち実装は持たないインターフェイスとは対照的に、定義と実装の両方を持ちます。しかし、実装を持たないメンバーが 1 つ以上存在するクラスもあります。 + + クラスが持つことのできる特性のいくつかを次の表で説明します。 ランタイムをサポートする言語にはそれぞれ、クラスまたはクラス メンバーに対し、こうした特性の 1 つ以上を指定する手段が用意されています。 ただし、.NET Framework を対象とするすべてのプログラミング言語で、これらすべての特性を利用できるわけではありません。 + +|特徴|説明| +|--------|--------| +|sealed|型から別のクラスを派生できないことを示します。| +|実装|クラスが、インターフェイスのメンバーの実装を提供することによって、1 つ以上のインターフェイスを使用することを示します。| +|abstract|クラスをインスタンス化できないことを示します。 クラスを使用するには、このクラスから別のクラスを派生させる必要があります。| +|継承|クラスのインスタンスを、基底クラスが指定されている任意の場所で使用できることを示します。 基底クラスから継承する派生クラスは、基底クラスによって提供されるすべてのパブリック メンバーの実装を使用できます。または、派生クラスは、パブリック メンバーの実装をその独自の実装でオーバーライドできます。| +|exported または not exported|クラスが定義されているアセンブリの外部から、そのクラスを参照できるかどうかを示します。 この特性は、最上位のクラスにのみ適用され、入れ子にされたクラスには適用されません。| + > [!NOTE] -> C# で作成された入れ子にされた型 (列挙型を含む) は、それを囲むすべてのジェネリック型の型パラメーターを含むため、独自の型パラメーターは持ちませんが、ジェネリックです。 詳細については、[Type.MakeGenericType](xref:System.Type.MakeGenericType(System.Type[])) のリファレンス トピックを参照してください。 - -[FlagsAttribute](xref:System.FlagsAttribute) 属性は、ビット フィールドと呼ばれる特別な種類の列挙型を表します。 ランタイム自体は通常の列挙型とビット フィールドを区別しませんが、言語の中にはそれらを区別するものもあります。 列挙型とビット フィールドが区別される場合、ビット フィールドではビットごとの演算子を使用して名前のない値を生成できますが、列挙型ではビットごとの演算子は使用できません。 通常、列挙型は、曜日、国名、地域名などの一意の要素のリストに使用されます。 通常、ビット フィールドは、`Red And Big And Fast` のような、特性や数量を組み合わせて示すリストに使用されます。 - -ビット フィールドと通常の列挙型を両方とも使用する方法を次の例に示します。 - -```csharp -using System; -using System.Collections.Generic; - -// A traditional enumeration of some root vegetables. -public enum SomeRootVegetables -{ - HorseRadish, - Radish, - Turnip -} - -// A bit field or flag enumeration of harvesting seasons. -[Flags] -public enum Seasons -{ - None = 0, - Summer = 1, - Autumn = 2, - Winter = 4, - Spring = 8, - All = Summer | Autumn | Winter | Spring -} - -public class Example -{ - public static void Main() - { - // Hash table of when vegetables are available. - Dictionary AvailableIn = new Dictionary(); - - AvailableIn[SomeRootVegetables.HorseRadish] = Seasons.All; - AvailableIn[SomeRootVegetables.Radish] = Seasons.Spring; - AvailableIn[SomeRootVegetables.Turnip] = Seasons.Spring | - Seasons.Autumn; - - // Array of the seasons, using the enumeration. - Seasons[] theSeasons = new Seasons[] { Seasons.Summer, Seasons.Autumn, - Seasons.Winter, Seasons.Spring }; - - // Print information of what vegetables are available each season. - foreach (Seasons season in theSeasons) - { - Console.Write(String.Format( - "The following root vegetables are harvested in {0}:\n", - season.ToString("G"))); - foreach (KeyValuePair item in AvailableIn) - { - // A bitwise comparison. - if (((Seasons)item.Value & season) > 0) - Console.Write(String.Format(" {0:G}\n", - (SomeRootVegetables)item.Key)); - } - } - } -} -// The example displays the following output: -// The following root vegetables are harvested in Summer: -// HorseRadish -// The following root vegetables are harvested in Autumn: -// Turnip -// HorseRadish -// The following root vegetables are harvested in Winter: -// HorseRadish -// The following root vegetables are harvested in Spring: -// Turnip -// Radish -// HorseRadish -``` - -```vb -Imports System.Collections.Generic - -' A traditional enumeration of some root vegetables. -Public Enum SomeRootVegetables - HorseRadish - Radish - Turnip -End Enum - -' A bit field or flag enumeration of harvesting seasons. - Public Enum Seasons - None = 0 - Summer = 1 - Autumn = 2 - Winter = 4 - Spring = 8 - All = Summer Or Autumn Or Winter Or Spring -End Enum - -' Entry point. -Public Class Example - Public Shared Sub Main() - ' Hash table of when vegetables are available. - Dim AvailableIn As New Dictionary(Of SomeRootVegetables, Seasons)() - - AvailableIn(SomeRootVegetables.HorseRadish) = Seasons.All - AvailableIn(SomeRootVegetables.Radish) = Seasons.Spring - AvailableIn(SomeRootVegetables.Turnip) = Seasons.Spring Or _ - Seasons.Autumn - - ' Array of the seasons, using the enumeration. - Dim theSeasons() As Seasons = {Seasons.Summer, Seasons.Autumn, _ - Seasons.Winter, Seasons.Spring} - - ' Print information of what vegetables are available each season. - For Each season As Seasons In theSeasons - Console.WriteLine(String.Format( _ - "The following root vegetables are harvested in {0}:", _ - season.ToString("G"))) - For Each item As KeyValuePair(Of SomeRootVegetables, Seasons) In AvailableIn - ' A bitwise comparison. - If(CType(item.Value, Seasons) And season) > 0 Then - Console.WriteLine(" " + _ - CType(item.Key, SomeRootVegetables).ToString("G")) - End If - Next - Next - End Sub -End Class -' The example displays the following output: -' The following root vegetables are harvested in Summer: -' HorseRadish -' The following root vegetables are harvested in Autumn: -' Turnip -' HorseRadish -' The following root vegetables are harvested in Winter: -' HorseRadish -' The following root vegetables are harvested in Spring: -' Turnip -' Radish -' HorseRadish -``` - -### インターフェイス - -インターフェイスは、"can do" 関係または "has a" 関係を指定するコントラクトを定義します。 インターフェイスは、多くの場合、比較と並べ替え ([IComparable](xref:System.IComparable) インターフェイスや [IComparable<T>](xref:System.IComparable%601) インターフェイス)、等価テスト ( [IEquatable<T>](xref:System.IEquatable%601) インターフェイス)、コレクション内の項目の列挙 ([IEnumerable](xref:System.Collections.IEnumerable) インターフェイスや [IEnumerable<T>](xref:System.Collections.Generic.IEnumerable%601) インターフェイス) などの機能を実装するために使用されます。 インターフェイスには、プロパティ、メソッド、およびイベント (すべて抽象メンバー) を設定できます。つまり、インターフェイスは、メンバーとメンバーの署名を定義しますが、インターフェイス メンバーの機能を定義するインターフェイスを実装する型に依存します。 これは、インターフェイスを実装するクラスまたは構造体が、そのインターフェイスで宣言されている抽象メンバーの定義を提供する必要があることを意味します。 インターフェイスは、そのインターフェイスを実装するクラスまたは構造体に対して、1 つ以上の他のインターフェイスも同時に実装するように要求できます。 - -インターフェイスには、次のような制限があります。 - -* 任意のアクセシビリティを指定してインターフェイスを宣言できますが、そのすべてのメンバーのアクセシビリティは public であることが必要です。 - -* インターフェイスでコンストラクターを定義することはできません。 - -* インターフェイスでフィールドを定義することはできません。 - -* インターフェイスで定義できるのはインスタンスのメンバーだけです。 静的メンバーを定義することはできません。 - -各言語には、メンバーの実装をそのメンバーを要求するインターフェイスに割り当てるための規則があります。これは、複数のインターフェイスで同じシグネチャを持つメンバーを宣言でき、それらのメンバーが別個の実装を持つことができるためです。 - -### デリゲート - -デリゲートは、C++ の関数ポインターと類似の目的で使用される参照型です。 これらは、.NET のイベント ハンドラーとコールバック関数に使用されます。 関数ポインターとは異なり、デリゲートは安全で、検証可能で、タイプ セーフです。 デリゲート型は、互換性のあるシグネチャを持つすべてのインスタンス メソッドまたは静的メソッドを表すことができます。 - -デリゲートのパラメーターにメソッドのパラメーターよりも限定的な型が指定された場合、両者のパラメーター間に型の互換性があると見なされます。これによって、デリゲートに渡された引数が、メソッドに対して安全に渡されることが保証されます。 - -同様に、メソッドの戻り値の型の制限がデリゲートの戻り値の型より多いと、メソッドの戻り値がデリゲートの戻り値の型に安全にキャストされることが保証されるため、デリゲートの戻り値の型とメソッドの戻り値の型には互換性があります。 - -たとえば、[IEnumerable](xref:System.Collections.IEnumerable) 型のパラメーターおよび [Object](xref:System.Object) 型の戻り値を持つデリゲートは、[Object](xref:System.Object) 型のパラメーターおよび [IEnumerable](xref:System.Collections.IEnumerable) 型の戻り値を持ったメソッドを表すことができます。 - - よく "デリゲートは、それが表すメソッドにバインドされる" と言われます。 デリゲートは、メソッドにバインドされる以外にも、オブジェクトにバインドされる場合もあります。 オブジェクトはメソッドの第&1; パラメーターを表し、デリゲートが呼び出されるたびにメソッドに渡されます。 インスタンス メソッドの場合、バインドされたオブジェクトは、暗黙的な `this` パラメーター (Visual Basic では `Me`) として渡されます。静的メソッドの場合、オブジェクトは、メソッドの&1; つ目の仮パラメーターとして渡され、デリゲートのシグネチャは、その残りのパラメーターと完全に一致している必要があります。 - - すべてのデリゲートが [System.MulticastDelegate](xref:System.MulticastDelegate) を継承し、System.MulticastDelegate は [System.Delegate](xref:System.Delegate) を継承します。 C# および Visual Basic 言語では、これらの型からの継承は許可されていません。 代わりに、デリゲートを宣言するためのキーワードが用意されています。 - - デリゲートは [MulticastDelegate](xref:System.MulticastDelegate) を継承するため、デリゲートには呼び出しリストがあります。これは、デリゲートが表し、デリゲートが呼び出されたときに実行されるメソッドのリストです。 リストのすべてのメソッドは、デリゲートが呼び出されたときに指定される引数を受け取ります。 - +> クラスは、親クラスまたは構造体で入れ子にすることもできます。 入れ子にされたクラスにも、メンバー特性を適用できます。 詳細については、「[入れ子にされた型](#NestedTypes)」を参照してください。 + + 実装を持たないクラス メンバーは抽象メンバーです。 1 つ以上の抽象メンバーを持つクラスは、それ自体が抽象クラスとなり、新しいインスタンスを作成できません。 ランタイムに対応する言語の中には、抽象メンバーを持たないクラスも抽象クラスとしてマークできるものがあります。 抽象クラスは、派生クラスが必要に応じて継承したりオーバーライドしたりできる基本的な一連の機能をカプセル化する必要がある場合に使用できます。 抽象クラスでないクラスを具象クラスと呼びます。 + + クラスで実装できるインターフェイスの数に制限はありませんが、すべてのクラスが暗黙的に継承する を除き、継承できる基底クラスは 1 つだけです。 すべてのクラスには少なくとも 1 つのコンストラクターが必要で、このコンストラクターにより、各クラスの新しいインスタンスが初期化されます。 コンストラクターを明示的に定義しなかった場合、ほとんどのコンパイラでは、自動的に既定の \(パラメーターなしの\) コンストラクターが使用されます。 + + +### 構造体 + 構造体は、 から派生する から暗黙的に派生する値型です。 構造体は、メモリ要件が小さい値を表す場合や、厳密に型指定されたパラメーターを持つメソッドに対してパラメーターを値渡しする場合などに、非常に便利です。 .NET Framework クラス ライブラリでは、すべてのプリミティブ データ型 \(、および \) が構造体として定義されています。 + + クラスと同様、構造体にもデータ \(構造体のフィールド\) と、そのデータに対して実行できる操作 \(構造体のメソッド\) が定義されます。 これは、 クラスと クラスで定義されている仮想メソッドなどのメソッドと、値型そのものに定義されているすべてのメソッドを、構造体に対して呼び出すことができることを意味します。 言い換えれば、構造体には、静的メソッドと非静的メソッドに加え、フィールド、プロパティ、およびイベントを持たせることができます。 構造体のインスタンスを作成したり、構造体をパラメーターとして渡したりできるほか、構造体をローカル変数として格納することも、別の値型または参照型のフィールドに格納することもできます。 構造体でインターフェイスを実装することもできます。 + + ただし、値型は、いくつかの点でクラスとは異なります。 まず、値型は を暗黙的に継承しますが、他の型を直接継承することはできません。 同様に、すべての値型には、値型から他の型が派生できないことを示す sealed 属性が適用されます。 また、値型はコンストラクターを必要としません。 + + 共通言語ランタイムは、それぞれの値型に対応するボックス化された型を提供します。ボックス化された型とは、値型と同じ状態および動作を備えたクラスのことです。 値型のインスタンスは、 型のパラメーターを受け入れるメソッドに渡されると、ボックス化されます。 参照渡しのパラメーターとして値型を受け入れるメソッドの呼び出しから制御が返されると、ボックス化が解除 \(つまり、クラスのインスタンスから値型のインスタンスに変換\) されます。 言語によっては、ボックス化された型が必要なときに特別な構文を使用する必要がありますが、ボックス化された型を必要に応じて自動的に使用する言語もあります。 値型を定義するときには、ボックス化された型とボックス化解除された型の両方を定義します。 + + +### 列挙 + 列挙型 \(enum\) は、 から直接継承される値型で、基になるプリミティブ型の値に対して別名を割り当てます。 列挙型には名前、基になる型、および一連のフィールドが存在します。基になる型は、組み込みの符号付きまたは符号なし整数型 \( など\) であることが必要です。 フィールドは静的リテラル フィールドで、各フィールドが 1 つの定数を表します。 複数のフィールドに同じ値を割り当てることもできます。 その場合は、リフレクションや文字列変換を行うために、いずれかの値をプライマリ列挙値としてマークしておく必要があります。 + + 基になる型の値を列挙型に割り当てることも、その逆も可能です \(キャストは必要ありません\)。 列挙型のインスタンスを作成し、 のメソッドや、その列挙型の基となる型に定義されている任意のメソッドを呼び出すことができます。 しかし、言語によっては、基になる型のインスタンスが必要とされるときに、列挙型をパラメーターとして渡すことが許可されていない場合もあります \(またはその逆\)。 + + また、列挙型には次のような制限があります。 + +- 独自のメソッドは定義できません。 + +- インターフェイスを実装できません。 + +- プロパティまたはイベントを定義できません。 + +- 列挙型は、ジェネリック型に入れ子にされているという理由だけでジェネリックである場合を除き、ジェネリックにはなりません。 つまり、列挙型は、独自の型パラメーターを持つことができません。 + + > [!NOTE] + > Visual Basic、C\#、および C\+\+ で作成された入れ子にされた型 \(列挙型を含む\) は、それを囲むすべてのジェネリック型の型パラメーターを含むため、独自の型パラメーターは持ちませんが、ジェネリックです。 詳細については、「」のリファレンス トピックの「入れ子にされた型」を参照してください。 + + 属性は、ビット フィールドと呼ばれる特別な種類の列挙型を表します。 ランタイム自体は通常の列挙型とビット フィールドを区別しませんが、言語の中にはそれらを区別するものもあります。 列挙型とビット フィールドが区別される場合、ビット フィールドではビットごとの演算子を使用して名前のない値を生成できますが、列挙型ではビットごとの演算子は使用できません。 通常、列挙型は、曜日、国名、地域名などの一意の要素のリストに使用されます。 通常、ビット フィールドは、`Red And Big And Fast` のような、特性や数量を組み合わせて示すリストに使用されます。 + + ビット フィールドと通常の列挙型を両方とも使用する方法を次の例に示します。 + + [!code-csharp[Conceptual.Types.Enum#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.types.enum/cs/example.cs#1)] + [!code-vb[Conceptual.Types.Enum#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.types.enum/vb/example.vb#1)] + + +### インターフェイス + インターフェイスは、"can do" 関係または "has a" 関係を指定するコントラクトを定義します。 インターフェイスは、多くの場合、比較と並べ替え \( インターフェイスや インターフェイス\)、等価テスト \( インターフェイス\)、コレクション内の項目の列挙 \( インターフェイスや インターフェイス\) などの機能を実装するために使用されます。 インターフェイスには、プロパティ、メソッド、およびイベント \(すべて抽象メンバー\) を設定できます。つまり、インターフェイスは、メンバーとメンバーの署名を定義しますが、インターフェイス メンバーの機能を定義するインターフェイスを実装する型に依存します。 これは、インターフェイスを実装するクラスまたは構造体が、そのインターフェイスで宣言されている抽象メンバーの定義を提供する必要があることを意味します。 インターフェイスは、そのインターフェイスを実装するクラスまたは構造体に対して、1 つ以上の他のインターフェイスも同時に実装するように要求できます。 + + インターフェイスには、次のような制限があります。 + +- 任意のアクセシビリティを指定してインターフェイスを宣言できますが、そのすべてのメンバーのアクセシビリティは public であることが必要です。 + +- インターフェイスでコンストラクターを定義することはできません。 + +- インターフェイスでフィールドを定義することはできません。 + +- インターフェイスで定義できるのはインスタンスのメンバーだけです。 静的メンバーを定義することはできません。 + + 各言語には、メンバーの実装をそのメンバーを要求するインターフェイスに割り当てるための規則があります。これは、複数のインターフェイスで同じシグネチャを持つメンバーを宣言でき、それらのメンバーが別個の実装を持つことができるためです。 + + +### デリゲート + デリゲートは、C\+\+ の関数ポインターと類似の目的で使用される参照型です。 これらは、.NET Framework のイベント ハンドラーとコールバック関数に使用されます。 関数ポインターとは異なり、デリゲートは安全で、検証可能で、タイプ セーフです。 デリゲート型は、互換性のあるシグネチャを持つすべてのインスタンス メソッドまたは静的メソッドを表すことができます。 + + デリゲートのパラメーターにメソッドのパラメーターよりも限定的な型が指定された場合、両者のパラメーター間に型の互換性があると見なされます。これによって、デリゲートに渡された引数が、メソッドに対して安全に渡されることが保証されます。 + + 同様に、メソッドの戻り値の型の制限がデリゲートの戻り値の型より多いと、メソッドの戻り値がデリゲートの戻り値の型に安全にキャストされることが保証されるため、デリゲートの戻り値の型とメソッドの戻り値の型には互換性があります。 + + たとえば、 型のパラメーターおよび 型の戻り値を持つデリゲートは、 型のパラメーターおよび 型の戻り値を持ったメソッドを表すことができます。 詳細およびプログラム例については、「」を参照してください。 + + よく "デリゲートは、それが表すメソッドにバインドされる" と言われます。 デリゲートは、メソッドにバインドされる以外にも、オブジェクトにバインドされる場合もあります。 オブジェクトはメソッドの第 1 パラメーターを表し、デリゲートが呼び出されるたびにメソッドに渡されます。 インスタンス メソッドの場合、バインドされたオブジェクトは、暗黙的な `this` パラメーター \(Visual Basic では `Me`\) として渡されます。静的メソッドの場合、オブジェクトは、メソッドの 1 つ目の仮パラメーターとして渡され、デリゲートのシグネチャは、その残りのパラメーターと完全に一致している必要があります。 詳細およびプログラム例については、「」を参照してください。 + + すべてのデリゲートが を継承し、System.MulticastDelegate は を継承します。 C\#、Visual Basic、および C\+\+ 言語では、これらの型からの継承は許可されていません。 代わりに、デリゲートを宣言するためのキーワードが用意されています。 + + デリゲートは を継承するため、デリゲートには呼び出しリストがあります。これは、デリゲートが表し、デリゲートが呼び出されたときに実行されるメソッドのリストです。 リストのすべてのメソッドは、デリゲートが呼び出されたときに指定される引数を受け取ります。 + > [!NOTE] -> デリゲートに戻り値が含まれていても、呼び出しリストに複数のメソッドが含まれているデリゲートに対しては、戻り値は定義されません。 - -コールバック メソッドの場合のように、多くの場合、デリゲートは&1; つのメソッドのみを表すため、デリゲートを作成し、呼び出す以外の処理は必要ありません。 - -複数のメソッドを表すデリゲートの場合、.NET は [Delegate](xref:System.Delegate) と [MulticastDelegate](xref:System.MulticastDelegate) デリゲート クラスのメソッドを提供し、デリゲートの呼び出しリスト ([Delegate.Combine](xref:System.Delegate.Combine(System.Delegate,System.Delegate)) メソッド) にメソッドを追加したり、メソッド ([Delegate.Remove](xref:System.Delegate.Remove(System.Delegate,System.Delegate)) メソッド) を削除したり、呼び出しリスト ([Delegate.GetInvocationList](xref:System.Delegate.GetInvocationList) メソッド) を取得したりする操作をサポートしています。 - +> デリゲートに戻り値が含まれていても、呼び出しリストに複数のメソッドが含まれているデリゲートに対しては、戻り値は定義されません。 + + コールバック メソッドの場合のように、多くの場合、デリゲートは 1 つのメソッドのみを表すため、デリゲートを作成し、呼び出す以外の処理は必要ありません。 + + 複数のメソッドを表すデリゲートの場合、.NET Framework は デリゲート クラスのメソッドを提供し、デリゲートの呼び出しリスト \( メソッド\) にメソッドを追加したり、メソッド \( メソッド\) を削除したり、呼び出しリスト \(メソッド\) を取得したりする操作をサポートしています。 + > [!NOTE] -> C# または Visual Basic では、イベント ハンドラー デリゲートに対して、これらのメソッドを使用する必要はありません。これらの言語には、イベント ハンドラーの追加および削除に使用する構文が用意されているためです。 - -## 型定義 - -型定義には、次のものが含まれます。 - -* 型に対して定義される属性 - -* 型のアクセシビリティ (参照範囲) - -* 型の名前 - -* 型の基本型 - -* 型が実装するインターフェイス - -* 型の各メンバーの定義 - -### 属性 - -属性を使用して、ユーザー定義のメタデータを追加できます。 属性の最も一般的な用途は、型についての補足的な情報をそのアセンブリに保存したり、型のメンバーの動作をデザイン時または実行時環境で変更したりすることです。 - -属性は、それ自体が [System.Attribute](xref:System.Attribute) を継承するクラスです。 属性を使用できる言語にはそれぞれ、言語要素に属性を適用するための固有の構文があります。 属性はほぼすべての言語要素に適用できます。具体的にどの要素に属性を適用できるかは、その属性クラスに適用されている [AttributeUsageAttribute](xref:System.AttributeUsageAttribute) によって定義されます。 - -### 型のアクセシビリティ - -すべての型には、他の型からのアクセシビリティを制御する修飾子があります。 ランタイムによってサポートされる型のアクセシビリティについて次の表で説明します。 - -ユーザー補助 | 説明 -------------- | ----------- -public | すべてのアセンブリから型にアクセスできます。 -アセンブリ | 同じアセンブリ内からだけ型にアクセスできます。 - -入れ子にされた型のアクセシビリティは、その型のアクセシビリティ ドメインによって決まります。このアクセシビリティ ドメインは、そのメンバーに対して宣言されているアクセシビリティと、そのメンバーの直接のコンテナーである型のアクセシビリティ ドメインの両方によって決定されます。 ただし、入れ子にされた型のアクセシビリティ ドメインが、その型を含んでいる型のアクセシビリティ ドメインを上回ることはできません。 - -`P` というプログラム内の `T` という型で宣言された `M` という入れ子にされたメンバーのアクセシビリティ ドメインは、次のように定義されます (`M` 自体も型である可能性があります)。 - -* `M` に対して宣言されたアクセシビリティが `public` の場合、`M` のアクセシビリティ ドメインは `T` のアクセシビリティ ドメインになります。 - -* `M` に対して宣言されているアクセシビリティが `protected internal` の場合、`M` のアクセシビリティ ドメインは、`T` のアクセシビリティ ドメインと、`P` のプログラム テキストおよび `T` の外側で宣言された `P` から派生した任意の型のプログラム テキストとの積集合になります。 - -* `M` に対して宣言されているアクセシビリティが `protected` の場合、`M` のアクセシビリティ ドメインは、`T` のアクセシビリティ ドメインと、`T` のプログラム テキストおよび `T` から派生した任意の型との積集合になります。 - -* `M` に対して宣言されているアクセシビリティが `internal` の場合、`M` のアクセシビリティ ドメインは、`T` のアクセシビリティ ドメインと `P` のプログラム テキストとの積集合になります。 - -* `M` に対して宣言されているアクセシビリティが `private` の場合、`M` のアクセシビリティ ドメインは `T` のプログラム テキストになります。 - -### 型名 - -共通型システムでは、名前に関して適用される制限は次の&2; つだけです。 - -* すべての名前は Unicode (16 ビット) 文字列としてエンコードされます。 - -* 名前には、値 0x0000 (16 ビット) を埋め込むことはできません。 - -ただし、ほとんどの言語に型名に関する追加の制約が存在します。 すべての比較はバイト単位で行われるため、大文字と小文字を区別し、ロケールに依存しません。 - -型は、他のモジュールおよびアセンブリの型を参照する場合もありますが、1 つの .NET モジュール内で完全に定義されます (ただし、コンパイラがサポートしていれば、複数のソース コード ファイルに分割できる場合もあります)。型名は&1; つの名前空間内で一意である必要があります。 型が完全に識別されるようにするため、その型名は、その型の実装を含んでいる名前空間によって修飾される必要があります。 - -### 基本型とインターフェイス - -型は、別の型から値と動作を継承できます。 共通型システムでは、複数の基本型から継承する型を作成することはできません。 - -型は任意の数のインターフェイスを実装できます。 型にインターフェイスを実装するには、そのインターフェイスのすべての仮想メンバーをその型に実装する必要があります。 仮想メソッドは派生型によって実装でき、静的または動的に呼び出すことができます。 - -## 型のメンバー - -ランタイムでは、型の動作と状態を指定する型のメンバーを定義できます。 型のメンバーには、次のようなものがあります。 - -* [フィールド](#fields) - -* [プロパティ](#properties) - -* [メソッド](#methods) - -* [コンストラクター](#constructors) - -* [イベント](#events) - -* [入れ子にされた型](#nested-types) - -### フィールド - -フィールドは、型の状態の一部を表し、格納するものです。 フィールドは、ランタイムがサポートする任意の型にすることができます。 通常、フィールドは、同じクラスまたはその派生クラスからしかアクセスできないように、`private` または `protected` のいずれかに設定されます。 フィールドの値を型の外部から変更できるようにする場合は、プロパティの set アクセサーを使用するのが一般的です。 パブリックに公開されたフィールドは、通常、読み取り専用であり、次の&2; 種類に分けることができます。 - -* 定数。その値は、デザイン時に割り当てられます。 これらはクラスの静的メンバーですが、`static` (Visual Basic では `Shared`) キーワードを使用して定義されません。 - -* 読み取り専用の変数。その値は、クラスのコンストラクターで割り当てることができます。 - -次の例は、読み取り専用フィールドの&2; つの用法を示しています。 - -```csharp -using System; - -public class Constants -{ - public const double Pi = 3.1416; - public readonly DateTime BirthDate; - - public Constants(DateTime birthDate) - { - this.BirthDate = birthDate; - } -} - -public class Example -{ - public static void Main() - { - Constants con = new Constants(new DateTime(1974, 8, 18)); - Console.Write(Constants.Pi + "\n"); - Console.Write(con.BirthDate.ToString("d") + "\n"); - } -} -// The example displays the following output if run on a system whose current -// culture is en-US: -// 3.1417 -// 8/18/1974 -``` - -```vb -Public Class Constants - Public Const Pi As Double = 3.1416 - Public ReadOnly BirthDate As Date - - Public Sub New(birthDate As Date) - Me.BirthDate = birthDate - End Sub -End Class - -Public Module Example - Public Sub Main() - Dim con As New Constants(#8/18/1974#) - Console.WriteLine(Constants.Pi.ToString()) - Console.WriteLine(con.BirthDate.ToString("d")) - End Sub -End Module -' The example displays the following output if run on a system whose current -' culture is en-US: -' 3.1417 -' 8/18/1974 -``` - -### プロパティ - -プロパティは、型の値または状態に名前を付け、そのプロパティの値を取得または設定するためのメソッドを定義します。 プロパティは、プリミティブ型、プリミティブ型のコレクション、ユーザー定義型、ユーザー定義型のコレクションにすることができます。 多くの場合、プロパティは、型のパブリックなインターフェイスを、その型の個々の実装とは切り離すために使用されます。 これにより、クラスに直接格納されていない値をプロパティに反映させたり (プロパティが計算後の値を返す場合など)、プライベート フィールドに割り当てる値を事前に検証したりすることが可能です。 後者のパターンを説明する例を次に示します。 - -```csharp -using System; - -public class Person -{ - private int m_Age; - - public int Age - { - get { return m_Age; } - set { - if (value < 0 || value > 125) - { - throw new ArgumentOutOfRangeException("The value of the Age property must be between 0 and 125."); - } - else - { - m_Age = value; - } - } - } -} -``` - -```vb -Public Class Person - Private m_Age As Integer - - Public Property Age As Integer - Get - Return m_Age - End Get - Set - If value < 0 Or value > 125 Then - Throw New ArgumentOutOfRangeException("The value of the Age property must be between 0 and 125.") - Else - m_Age = value - End If - End Set - End Property -End Class -``` - -読み取り可能なプロパティを含んだ型の Microsoft Intermediate Language (MSIL) には、プロパティそのもののほかに、`get`*_propertyname* メソッドが含まれています。また、書き込み可能なプロパティを含んだ型の MSIL には、`set`*_propertyname* メソッドが含まれています。 - -### メソッド - -メソッドは、その型で利用できる操作を表します。 メソッドのシグネチャは、そのメソッドのパラメーターの型および戻り値の型として許可される型を示します。 - -ほとんどのメソッドでは、メソッド呼び出しに必要なパラメーターの厳密な個数が定義されていますが、いくつかのメソッドは可変個のパラメーターをサポートしています。 このようなメソッドで最後に宣言されるパラメーターには、[ParamArrayAttribute](xref:System.ParamArrayAttribute) 属性が適用されます。 通常、言語コンパイラには、C# の `params` や Visual Basic の `ParamArray` など、[ParamArrayAttribute](xref:System.ParamArrayAttribute) の明示的な使用を不要にするキーワードがあります。 - -### コンストラクター - -コンストラクターは、クラスまたは構造体の新しいインスタンスを作成する特殊なメソッドです。 他のメソッドと同様に、コンストラクターには、パラメーターを指定することができます。ただし、コンストラクターには戻り値はありません (つまり、`void` が返されます)。 - -クラスのソース コードに明示的にコンストラクターが定義されていない場合は、コンパイラによって既定の (パラメーターなしの) コンストラクターが追加されます。 ただし、パラメーター化されたコンストラクターのみがクラスのソース コードで定義されている場合は、C# のコンパイラが、パラメーターなしのコンストラクターを生成しません。 - -構造体のソース コードでコンストラクターが定義される場合は、それらのコンストラクターがパラメーター化されている必要があります。構造体では既定の (パラメーターなしの) コンストラクターを定義できず、コンパイラは、構造体および他の値型のいずれに対しても、パラメーターなしのコンストラクターを生成しません。 すべての値型には、暗黙の既定コンストラクターがあります。 このコンストラクターは、共通言語ランタイムによって実装され、構造体のすべてのフィールドを既定の値に初期化します。 - -### イベント - -イベントは、応答可能な事象 (イベント) を定義し、イベントへのサブスクライブ、イベントからのサブスクライブ解除、およびイベントの発生用のメソッドを定義します。 多くの場合、イベントは、他の型に対して状態の変更を通知するために使用されます。 - -### 入れ子にされた型 - -入れ子にされた型とは、他の型のメンバーである型です。 入れ子にされた型はその親の型と密に結合されているため、汎用型としては使用できません。 入れ子にされた型は、宣言型で、入れ子にされた型のインスタンスを使用したり作成したりする場合に便利で、入れ子にされた型の使用はパブリック メンバーに公開されません。 - -入れ子にされた型は、混乱を招くおそれがあるため、特別な理由がない限り、パブリックに参照可能にすることはお勧めできません。 適切にデザインされたライブラリでは、入れ子にされた型を使ってオブジェクトをインスタンス化したり、変数を宣言したりすることが必要になることはほとんどありません。 - -## 型のメンバーの特性 - -共通型システムでは、型のメンバーにさまざまな特性を適用できますが、各言語で、これらの特性がすべてサポートされている必要はありません。 メンバーの特性について次の表で説明します。 - -特徴 | 適用対象 | 説明 --------------- | ------------ | ----------- -abstract | メソッド、プロパティ、およびイベント | 型はメソッドの実装を提供しません。 抽象メソッドを継承または実装する型は、そのメソッドの実装を提供する必要があります。 唯一の例外は、派生型自体が抽象型である場合です。 すべての抽象メソッドは仮想メソッドです。 -private | すべて | メンバーが含まれているのと同じ型の内部、またはその型に入れ子にされた型の内部からだけアクセスできます。 -family | すべて | メンバーが含まれているのと同じ型の内部、およびその型を継承した派生型からアクセスできます。 -assemby | すべて | 型が定義されているアセンブリ内でだけアクセスできます。 -family and assembly | すべて | family アクセスと assembly アクセスの両特性を満たす型からだけアクセスできます。 -family または assemby | すべて | family アクセスまたは assembly アクセスのいずれかの特性を満たす型からだけアクセスできます。 -public | すべて | すべての型からアクセスできます。 -final | メソッド、プロパティ、およびイベント | その仮想メソッドを派生型ではオーバーライドできません。 -initialize-only | フィールド | 値を初期化することだけでき、初期化後の書き込みは実行できません。 -インスタンス | フィールド、メソッド、プロパティ、およびイベント | メンバーが `static` (C# )、`Shared` (Visual Basic)、`virtual` (C# )、または `Overridable` (Visual Basic) でマークされていない場合、それはインスタンス メンバーです (instance キーワードはありません)。 このようなメンバーについては、型を使用するオブジェクトと同数のコピーがメモリ内に格納されます。 -リテラル | フィールド | このフィールドには、組み込みの値型の、コンパイル時点の固定値が割り当てられます。 リテラル フィールドを定数と呼ぶこともあります。 -newslot または override | すべて | メンバーが、同じシグネチャを持つ継承メンバーとどのようにやり取りするかを定義します。`newslot` は、同じシグネチャを持つ継承されたメンバーを隠します。`override` は、継承された仮想メソッドの定義を置き換えます。 既定値は newslot です。 -静的 | フィールド、メソッド、プロパティ、およびイベント | メンバーは、型の特定のインスタンスではなく、そのメンバーが定義されている型に属します。つまり、メンバーは型がインスタンス化されていなくても存在し、その型のすべてのインスタンスによって共有されます。 -virtual | メソッド、プロパティ、およびイベント | メソッドは、派生型で実装でき、静的または動的に呼び出すことができます。 動的呼び出しが使用される場合は、実行時に呼び出しを行うインスタンスの型によって (コンパイル時に判明する型ではなく)、メソッドのどの実装が呼び出されるかが決定されます。 仮想メソッドを静的に呼び出すには、目的のバージョンのメソッドを使用する型に、変数をキャストする必要が生じる場合があります。 - -### オーバーロード - -型のメンバーには、それぞれ固有のシグネチャがあります。 メソッドのシグネチャは、メソッドの名前とパラメーター リスト (メソッドの引数の順序と型) で構成されます。 シグネチャが同じでなければ、同じ名前を持つ複数のメソッドを&1; つの型の中で定義できます。 同じ名前を持つ&2; つ以上のメソッドが定義されている場合、そのメソッドはオーバーロードされている、と言います。 たとえば、[System.Char](xref:System.Char) では、`IsDigit` メソッドがオーバーロードされています。 一方のメソッドは [Char](xref:System.Char) を受け取ります。 もう一方のメソッドは、[String](xref:System.String) および [Int32](xref:System.Int32) を受け取ります。 - +> C\#、C\+\+、および Visual Basic では、イベント ハンドラー デリゲートに対して、これらのメソッドを使用する必要はありません。これらの言語には、イベント ハンドラーの追加および削除に使用する構文が用意されているためです。 + + [ページのトップへ](#top) + + +## 型定義 + 型定義には、次のものが含まれます。 + +- 型に対して定義される属性 + +- 型のアクセシビリティ \(参照範囲\) + +- 型の名前 + +- 型の基本型 + +- 型が実装するインターフェイス + +- 型の各メンバーの定義 + +### 属性 + 属性を使用して、ユーザー定義のメタデータを追加できます。 属性の最も一般的な用途は、型についての補足的な情報をそのアセンブリに保存したり、型のメンバーの動作をデザイン時または実行時環境で変更したりすることです。 + + 属性は、それ自体が を継承するクラスです。 属性を使用できる言語にはそれぞれ、言語要素に属性を適用するための固有の構文があります。 属性はほぼすべての言語要素に適用できます。具体的にどの要素に属性を適用できるかは、その属性クラスに適用されている によって定義されます。 + +### 型のアクセシビリティ + すべての型には、他の型からのアクセシビリティを制御する修飾子があります。 ランタイムによってサポートされる型のアクセシビリティについて次の表で説明します。 + +|ユーザー補助|説明| +|------------|--------| +|public|すべてのアセンブリから型にアクセスできます。| +|アセンブリ|同じアセンブリ内からだけ型にアクセスできます。| + + 入れ子にされた型のアクセシビリティは、その型のアクセシビリティ ドメインによって決まります。このアクセシビリティ ドメインは、そのメンバーに対して宣言されているアクセシビリティと、そのメンバーの直接のコンテナーである型のアクセシビリティ ドメインの両方によって決定されます。 ただし、入れ子にされた型のアクセシビリティ ドメインが、その型を含んでいる型のアクセシビリティ ドメインを上回ることはできません。 + + `M` というプログラム内の `T` という型で宣言された `P` という入れ子にされたメンバーのアクセシビリティ ドメインは、次のように定義されます \(`M` 自体も型である可能性があります\)。 + +- `M` に対して宣言されたアクセシビリティが `public` の場合、`M` のアクセシビリティ ドメインは `T` のアクセシビリティ ドメインになります。 + +- `M` に対して宣言されているアクセシビリティが `protected internal` の場合、`M` のアクセシビリティ ドメインは、`T` のアクセシビリティ ドメインと、`P` のプログラム テキストおよび `T` の外側で宣言された `P` から派生した任意の型のプログラム テキストとの積集合になります。 + +- `M` に対して宣言されているアクセシビリティが `protected` の場合、`M` のアクセシビリティ ドメインは、`T` のアクセシビリティ ドメインと、`T` のプログラム テキストおよび `T` から派生した任意の型との積集合になります。 + +- `M` に対して宣言されているアクセシビリティが `internal` の場合、`M` のアクセシビリティ ドメインは、`T` のアクセシビリティ ドメインと `P` のプログラム テキストとの積集合になります。 + +- `M` に対して宣言されているアクセシビリティが `private` の場合、`M` のアクセシビリティ ドメインは `T` のプログラム テキストになります。 + +### 型名 + 共通型システムでは、名前に関して適用される制限は次の 2 つだけです。 + +- すべての名前は Unicode \(16 ビット\) 文字列としてエンコードされます。 + +- 名前には、値 0x0000 \(16 ビット\) を埋め込むことはできません。 + + ただし、ほとんどの言語に型名に関する追加の制約が存在します。 すべての比較はバイト単位で行われるため、大文字と小文字を区別し、ロケールに依存しません。 + + 型は、他のモジュールおよびアセンブリの型を参照する場合もありますが、1 つの .NET Framework モジュール内で完全に定義されます \(ただし、コンパイラがサポートしていれば、複数のソース コード ファイルに分割できる場合もあります\)。 型名は 1 つの名前空間内で一意である必要があります。 型が完全に識別されるようにするため、その型名は、その型の実装を含んでいる名前空間によって修飾される必要があります。 + +### 基本型とインターフェイス + 型は、別の型から値と動作を継承できます。 共通型システムでは、複数の基本型から継承する型を作成することはできません。 + + 型は任意の数のインターフェイスを実装できます。 型にインターフェイスを実装するには、そのインターフェイスのすべての仮想メンバーをその型に実装する必要があります。 仮想メソッドは派生型によって実装でき、静的または動的に呼び出すことができます。 + + [ページのトップへ](#top) + + +## 型のメンバー + ランタイムでは、型の動作と状態を指定する型のメンバーを定義できます。 型のメンバーには、次のようなものがあります。 + +- [フィールド](#Fields) + +- [プロパティ](#Properties) + +- [メソッド](#Methods) + +- [コンストラクター](#Constructors) + +- [イベント](#Events) + +- [入れ子にされた型](#NestedTypes) + + +### フィールド + フィールドは、型の状態の一部を表し、格納するものです。 フィールドは、ランタイムがサポートする任意の型にすることができます。 通常、フィールドは、同じクラスまたはその派生クラスからしかアクセスできないように、`private` または `protected` のいずれかに設定されます。 フィールドの値を型の外部から変更できるようにする場合は、プロパティの set アクセサーを使用するのが一般的です。 パブリックに公開されたフィールドは、通常、読み取り専用であり、次の 2 種類に分けることができます。 + +- 定数。その値は、デザイン時に割り当てられます。 これらはクラスの静的メンバーですが、`static` \(Visual Basic では `Shared`\) キーワードを使用して定義されません。 + +- 読み取り専用の変数。その値は、クラスのコンストラクターで割り当てることができます。 + + 次の例は、読み取り専用フィールドの 2 つの用法を示しています。 + + [!code-csharp[Conceptual.Types.Members.Fields#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.types.members.fields/cs/example.cs#1)] + [!code-vb[Conceptual.Types.Members.Fields#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.types.members.fields/vb/example.vb#1)] + + +### プロパティ + プロパティは、型の値または状態に名前を付け、そのプロパティの値を取得または設定するためのメソッドを定義します。 プロパティは、プリミティブ型、プリミティブ型のコレクション、ユーザー定義型、ユーザー定義型のコレクションにすることができます。 多くの場合、プロパティは、型のパブリックなインターフェイスを、その型の個々の実装とは切り離すために使用されます。 これにより、クラスに直接格納されていない値をプロパティに反映させたり \(プロパティが計算後の値を返す場合など\)、プライベート フィールドに割り当てる値を事前に検証したりすることが可能です。 後者のパターンを説明する例を次に示します。 + + [!code-csharp[Conceptual.Types.Members.Properties#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.types.members.properties/cs/example.cs#1)] + [!code-vb[Conceptual.Types.Members.Properties#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.types.members.properties/vb/example.vb#1)] + + 読み取り可能なプロパティを含んだ型の Microsoft Intermediate Language \(MSIL\) には、プロパティそのもののほかに、`get_`*propertyname* メソッドが含まれています。また、書き込み可能なプロパティを含んだ型の MSIL には、`set_`*propertyname* メソッドが含まれています。 + + +### メソッド + メソッドは、その型で利用できる操作を表します。 メソッドのシグネチャは、そのメソッドのパラメーターの型および戻り値の型として許可される型を示します。 + + ほとんどのメソッドでは、メソッド呼び出しに必要なパラメーターの厳密な個数が定義されていますが、いくつかのメソッドは可変個のパラメーターをサポートしています。 このようなメソッドで最後に宣言されるパラメーターには、 属性が適用されます。 通常、言語コンパイラには、C\# の `params` や Visual Basic の `ParamArray` など、 の明示的な使用を不要にするキーワードがあります。 + + +### コンストラクター + コンストラクターは、クラスまたは構造体の新しいインスタンスを作成する特殊なメソッドです。 他のメソッドと同様に、コンストラクターには、パラメーターを指定することができます。ただし、コンストラクターには戻り値はありません \(つまり、`void` が返されます\)。 + + クラスのソース コードに明示的にコンストラクターが定義されていない場合は、コンパイラによって既定の \(パラメーターなしの\) コンストラクターが追加されます。 ただし、パラメーター化されたコンストラクターのみがクラスのソース コードで定義されている場合は、Visual Basic および C\# のコンパイラが、パラメーターなしのコンストラクターを生成しません。 + + 構造体のソース コードでコンストラクターが定義される場合は、それらのコンストラクターがパラメーター化されている必要があります。構造体では既定の \(パラメーターなしの\) コンストラクターを定義できず、コンパイラは、構造体および他の値型のいずれに対しても、パラメーターなしのコンストラクターを生成しません。 すべての値型には、暗黙の既定コンストラクターがあります。 このコンストラクターは、共通言語ランタイムによって実装され、構造体のすべてのフィールドを既定の値に初期化します。 + + +### イベント + イベントは、応答可能な事象 \(イベント\) を定義し、イベントへのサブスクライブ、イベントからのサブスクライブ解除、およびイベントの発生用のメソッドを定義します。 多くの場合、イベントは、他の型に対して状態の変更を通知するために使用されます。 詳細については、「[イベント](../../../docs/standard/events/index.md)」を参照してください。 + + +### 入れ子にされた型 + 入れ子にされた型とは、他の型のメンバーである型です。 入れ子にされた型はその親の型と密に結合されているため、汎用型としては使用できません。 入れ子にされた型は、宣言型で、入れ子にされた型のインスタンスを使用したり作成したりする場合に便利で、入れ子にされた型の使用はパブリック メンバーに公開されません。 + + 入れ子にされた型は、混乱を招くおそれがあるため、特別な理由がない限り、パブリックに参照可能にすることはお勧めできません。 適切にデザインされたライブラリでは、入れ子にされた型を使ってオブジェクトをインスタンス化したり、変数を宣言したりすることが必要になることはほとんどありません。 + + [ページのトップへ](#top) + + +## 型のメンバーの特性 + 共通型システムでは、型のメンバーにさまざまな特性を適用できますが、各言語で、これらの特性がすべてサポートされている必要はありません。 メンバーの特性について次の表で説明します。 + +|特徴|適用対象|説明| +|--------|----------|--------| +|abstract|メソッド、プロパティ、およびイベント|型はメソッドの実装を提供しません。 抽象メソッドを継承または実装する型は、そのメソッドの実装を提供する必要があります。 唯一の例外は、派生型自体が抽象型である場合です。 すべての抽象メソッドは仮想メソッドです。| +|private、family、assembly、family and assembly、family or assembly、または public|すべて|メンバーのアクセシビリティを次のように定義します。

private
メンバーが含まれているのと同じ型の内部、またはその型に入れ子にされた型の内部からだけアクセスできます。

family
メンバーが含まれているのと同じ型の内部、およびその型を継承した派生型からアクセスできます。

アセンブリ
型が定義されているアセンブリ内でだけアクセスできます。

family and assembly
family アクセスと assembly アクセスの両特性を満たす型からだけアクセスできます。

family or assembly
family アクセスまたは assembly アクセスのいずれかの特性を満たす型からだけアクセスできます。

public
すべての型からアクセスできます。| +|final|メソッド、プロパティ、およびイベント|その仮想メソッドを派生型ではオーバーライドできません。| +|initialize\-only|フィールド|値を初期化することだけでき、初期化後の書き込みは実行できません。| +|インスタンス|フィールド、メソッド、プロパティ、およびイベント|メンバーが `static` \(C\# および C\+\+\)、`Shared` \(Visual Basic\)、`virtual` \(C\# および C\+\+\)、または `Overridable` \(Visual Basic\) でマークされていない場合、それはインスタンス メンバーです \(instance キーワードはありません\)。 このようなメンバーについては、型を使用するオブジェクトと同数のコピーがメモリ内に格納されます。| +|リテラル|フィールド|このフィールドには、組み込みの値型の、コンパイル時点の固定値が割り当てられます。 リテラル フィールドを定数と呼ぶこともあります。| +|newslot または override|すべて|メンバーが、同じシグネチャを持つ継承メンバーとどのようにやり取りするかを定義します。

newslot
同じシグネチャを持つ継承されたメンバーを隠ぺいします。

override
継承された仮想メソッドの定義を置き換えます。

既定値は newslot です。| +|静的|フィールド、メソッド、プロパティ、およびイベント|メンバーは、型の特定のインスタンスではなく、そのメンバーが定義されている型に属します。つまり、メンバーは型がインスタンス化されていなくても存在し、その型のすべてのインスタンスによって共有されます。| +|virtual|メソッド、プロパティ、およびイベント|メソッドは、派生型で実装でき、静的または動的に呼び出すことができます。 動的呼び出しが使用される場合は、実行時に呼び出しを行うインスタンスの型によって \(コンパイル時に判明する型ではなく\)、メソッドのどの実装が呼び出されるかが決定されます。 仮想メソッドを静的に呼び出すには、目的のバージョンのメソッドを使用する型に、変数をキャストする必要が生じる場合があります。| + +### オーバーロード + 型のメンバーには、それぞれ固有のシグネチャがあります。 メソッドのシグネチャは、メソッドの名前とパラメーター リスト \(メソッドの引数の順序と型\) で構成されます。 シグネチャが同じでなければ、同じ名前を持つ複数のメソッドを 1 つの型の中で定義できます。 同じ名前を持つ 2 つ以上のメソッドが定義されている場合、そのメソッドはオーバーロードされている、と言います。 たとえば、 では、 メソッドがオーバーロードされています。 一方のメソッドは を受け取ります。 もう一方のメソッドは、 および を受け取ります。 + > [!NOTE] -> 戻り値の型は、メソッドのシグネチャの一部として見なされません。 つまり、戻り値の型が異なっているだけでは、メソッドをオーバーロードすることはできません。 - -### メンバーの継承、オーバーライド、および隠ぺい - -派生型は、その基本型のすべてのメンバーを継承します。つまり、基本型のすべてのメンバーは、派生型に対しても定義されており、使用可能です。 継承されたメンバーの動作または特性は、次の&2; つの方法で変更できます。 - -* 派生型で、同じシグネチャを持つ新しいメンバーを定義することによって、継承されたメンバーを隠ぺいできます。 この方法は、public のメンバーを private に変更したり、`final` としてマークされている継承メソッドに新しい動作を定義したりするために使用します。 - -* 派生型で、継承された仮想メソッドをオーバーライドできます。 オーバーライドするメソッドでは、コンパイル時点の変数の型ではなく、実行時の値の型に基づいて呼び出される、メソッドの新しい定義を提供します。 メソッドが仮想メソッドをオーバーライドできるのは、その仮想メソッドが `final` としてマークされておらず、新しいメソッドのアクセシビリティがその仮想メソッドと少なくとも同じ場合に限られます。 - -## 関連項目 - -[.NET Framework における型変換](type-conversion.md) +> 戻り値の型は、メソッドのシグネチャの一部として見なされません。 つまり、戻り値の型が異なっているだけでは、メソッドをオーバーロードすることはできません。 + +### メンバーの継承、オーバーライド、および隠ぺい + 派生型は、その基本型のすべてのメンバーを継承します。つまり、基本型のすべてのメンバーは、派生型に対しても定義されており、使用可能です。 継承されたメンバーの動作または特性は、次の 2 つの方法で変更できます。 + +- 派生型で、同じシグネチャを持つ新しいメンバーを定義することによって、継承されたメンバーを隠ぺいできます。 この方法は、public のメンバーを private に変更したり、`final` としてマークされている継承メソッドに新しい動作を定義したりするために使用します。 + +- 派生型で、継承された仮想メソッドをオーバーライドできます。 オーバーライドするメソッドでは、コンパイル時点の変数の型ではなく、実行時の値の型に基づいて呼び出される、メソッドの新しい定義を提供します。 メソッドが仮想メソッドをオーバーライドできるのは、その仮想メソッドが `final` としてマークされておらず、新しいメソッドのアクセシビリティがその仮想メソッドと少なくとも同じ場合に限られます。 + +## 参照 + [.NET Framework クラス ライブラリ](http://go.microsoft.com/fwlink/?LinkID=217856) + [共通言語ランタイム](../../../docs/standard/clr.md) + [.NET Framework における型変換](../../../docs/standard/base-types/type-conversion.md) \ No newline at end of file diff --git a/docs/standard/base-types/comparing.md b/docs/standard/base-types/comparing.md index 2a79df8384f..91bfab5ab6b 100644 --- a/docs/standard/base-types/comparing.md +++ b/docs/standard/base-types/comparing.md @@ -1,221 +1,155 @@ --- -title: "文字列の比較" -description: "文字列の比較" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 920ee5e8-3d61-4941-b5af-fc50eaee427c -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 47ee37886fa2662a89730e9d52ee04987e37da2f -ms.lasthandoff: 03/02/2017 - ---- - -# 文字列の比較 - -.NET は、文字列の値を比較するためのメソッドをいくつか提供します。 これらの値の比較メソッドとその説明を次の表に示します。 - -メソッド名 | 使用 ------------ | --- -[String.Compare](xref:System.String.Compare(System.String,System.Int32,System.String,System.Int32,System.Int32)) | 2 つの文字列の値を比較します。 整数値を返します。 -[String.CompareOrdinal](xref:System.String.CompareOrdinal(System.String,System.Int32,System.String,System.Int32,System.Int32)) | ローカル カルチャに関係なく、2 つの文字列を比較します。 整数値を返します。 -[String.CompareTo](xref:System.String.CompareTo(System.String)) | 現在の文字列オブジェクトを別の文字列と比較します。 整数値を返します。 -[String.StartsWith](xref:System.String.StartsWith(System.String)) | 文字列が、渡された文字列で始まるかどうかを確認します。 Boolean 値を返します。 -[String.EndsWith](xref:System.String.CompareTo(System.String)) | 文字列が、渡された文字列で終わるかどうかを確認します。 Boolean 値を返します。 -[String.Equals](xref:System.String.CompareTo(System.String)) | 2 つの文字列が等しいかどうかを確認します。 Boolean 値を返します。 -[String.IndexOf](xref:System.String.IndexOf(System.Char)) | 検索対象文字列の先頭から開始して、特定の文字または文字列が見つかったインデックス位置を返します。 整数値を返します。 -[String.LastIndexOf](xref:System.String.LastIndexOf(System.Char)) | 検索対象文字列の末尾から開始して、特定の文字または文字列が見つかったインデックス位置を返します。 整数値を返します。 - -## 比較 - -静的な [String.Compare](xref:System.String.Compare(System.String,System.Int32,System.String,System.Int32,System.Int32)) メソッドは、2 つの文字列を詳細に比較する手段を提供します。 このメソッドはカルチャに対応しています。 この機能は、2 つの文字列、または&2; つの文字列の部分文字列を比較するために使用できます。 また、大文字と小文字の区別やカルチャの違いを考慮または無視するためのオーバーロードも用意されています。 このメソッドによって返される可能性のある&3; つの整数値を次の表に示します。 - -戻り値 | 条件 ------------- | --------- -負の整数 | 最初の文字列は、並べ替え順序が&2; 番目の文字列の前に置かれます。そうでない場合、最初の文字列は `null` です。 -0 | 最初の文字列と&2; 番目の文字列は等価です。そうでない場合、両方の文字列が `null` です。 -正の整数、または 1 | 最初の文字列は、並べ替え順序が&2; 番目の文字列の後に続きます。そうでない場合、2 番目の文字列は null です。 - +title: ".NET Framework における文字列の比較 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Compare メソッド" + - "CompareOrdinal メソッド" + - "CompareTo メソッド" + - "EndsWith メソッド" + - "Equals メソッド" + - "IndexOf メソッド" + - "LastIndexOf メソッド" + - "StartsWith メソッド" + - "文字列 [.NET Framework], 比較" + - "値比較 (文字列の)" +ms.assetid: 977dc094-fe19-4955-98ec-d2294d04a4ba +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# .NET Framework における文字列の比較 +.NET Framework は、文字列の値を比較するためのメソッドをいくつか提供します。 これらの値の比較メソッドとその説明を次の表に示します。 + +|メソッド名|用途| +|-----------|--------| +||2 つの文字列の値を比較します。 整数値を返します。| +||ローカル カルチャに関係なく、2 つの文字列を比較します。 整数値を返します。| +||現在の文字列オブジェクトを別の文字列と比較します。 整数値を返します。| +||文字列が、渡された文字列で始まるかどうかを確認します。 Boolean 値を返します。| +||文字列が、渡された文字列で終わるかどうかを確認します。 Boolean 値を返します。| +||2 つの文字列が等しいかどうかを確認します。 Boolean 値を返します。| +||検索対象文字列の先頭から開始して、特定の文字または文字列が見つかったインデックス位置を返します。 整数値を返します。| +||検索対象文字列の末尾から開始して、特定の文字または文字列が見つかったインデックス位置を返します。 整数値を返します。| + +## 比較 + 静的な メソッドは、2 つの文字列を詳細に比較する手段を提供します。 このメソッドはカルチャに対応しています。 この機能は、2 つの文字列、または 2 つの文字列の部分文字列を比較するために使用できます。 また、大文字と小文字の区別やカルチャの違いを考慮または無視するためのオーバーロードも用意されています。 このメソッドによって返される可能性のある 3 つの整数値を次の表に示します。 + +|戻り値|条件| +|---------|--------| +|負の整数|最初の文字列は、並べ替え順序が 2 番目の文字列の前に置かれます。

または

最初の文字列は `null` です。| +|0|最初の文字列と 2 番目の文字列は等価です。

または

両方の文字列が `null`です。| +|正の整数

または

1|最初の文字列は、並べ替え順序が 2 番目の文字列の後に続きます。

または

第 2 文字列は `null` です。| + > [!IMPORTANT] -> [String.Compare](xref:System.String.Compare(System.String,System.Int32,System.String,System.Int32,System.Int32)) メソッドは、主に文字列の並べ替えに使用するものです。 等価性をテストする (つまり、ある文字列が別の文字列より大きいか小さいかを問題にせずに戻り値 0 を明示的に検索する) 目的では、[String.Compare](xref:System.String.Compare(System.String,System.Int32,System.String,System.Int32,System.Int32)) メソッドを使用しないでください。 2 つの文字列が等価かどうかを判断するには、[String.Equals(String, String, StringComparison)](xref:System.String.Equals(System.String,System.String,System.StringComparison)) メソッドを使用してください。 - -[String.Compare](xref:System.String.Compare(System.String,System.Int32,System.String,System.Int32,System.Int32)) メソッドを使用して、2 つの文字列の相対値を確認する例を次に示します。 - -```csharp -string string1 = "Hello World!"; -Console.WriteLine(String.Compare(string1, "Hello World?")); -``` - -```vb -Dim string1 As String = "Hello World!" -Console.WriteLine(String.Compare(string1, "Hello World?")) -``` - -この例は、コンソールに `-1` と出力します。 - -## CompareOrdinal - -[String.CompareOrdinal](xref:System.String.CompareOrdinal(System.String,System.Int32,System.String,System.Int32,System.Int32)) メソッドは、ローカル カルチャを考慮せずに&2; つの文字列オブジェクトを比較します。 このメソッドの戻り値は、上の表で示した `Compare` メソッドによって返される値と同じです。 - +> メソッドは、主に文字列の並べ替えに使用するものです。 等価性をテストする \(つまり、ある文字列が別の文字列より大きいか小さいかを問題にせずに戻り値 0 を明示的に検索する\) 目的では、 メソッドを使用しないでください。 2 つの文字列が等価かどうかを判断するには、 メソッドを使用してください。 + + メソッドを使用して、2 つの文字列の相対値を確認する例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#6](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/compare.cpp#6)] + [!code-csharp[Conceptual.String.BasicOps#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/compare.cs#6)] + [!code-vb[Conceptual.String.BasicOps#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/compare.vb#6)] + + この例は、コンソールに `-1` と出力します。 + + 既定では、上の例はカルチャによって異なります。 カルチャに依存しない文字列操作を実行するには、*culture* パラメーターを指定することによって使用するカルチャを指定することを可能にする メソッドのオーバーロードを使用します。 メソッドを使用してカルチャに依存しない比較を実行する例については、「[カルチャを認識しない文字列比較の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md)」を参照してください。 + +## CompareOrdinal + メソッドは、ローカル カルチャを考慮せずに 2 つの文字列オブジェクトを比較します。 このメソッドの戻り値は、上の表で示した **Compare** メソッドによって返される値と同じです。 + > [!IMPORTANT] -> [String.CompareOrdinal](xref:System.String.CompareOrdinal(System.String,System.Int32,System.String,System.Int32,System.Int32)) メソッドは、主に文字列の並べ替えに使用するものです。 等価性をテストする (つまり、ある文字列が別の文字列より大きいか小さいかを問題にせずに戻り値 0 を明示的に検索する) 目的では、[String.CompareOrdinal](xref:System.String.CompareOrdinal(System.String,System.Int32,System.String,System.Int32,System.Int32)) メソッドを使用しないでください。 2 つの文字列が等価かどうかを判断するには、[String.Equals(String, String, StringComparison)](xref:System.String.Equals(System.String,System.String,System.StringComparison)) メソッドを使用してください。 - -`CompareOrdinal` メソッドを使用して、2 つの文字列の値を比較する例を次に示します。 - -```csharp -string string1 = "Hello World!"; -Console.WriteLine(String.CompareOrdinal(string1, "hello world!")); -``` - -```vb -Dim string1 As String = "Hello World!" -Console.WriteLine(String.CompareOrdinal(string1, "hello world!")) -``` - -この例は、コンソールに `-32` と出力します。 - -## CompareTo - -[String.CompareTo](xref:System.String.CompareTo(System.String)) メソッドは、現在の文字列オブジェクトがカプセル化している文字列を別の文字列またはオブジェクトと比較します。 このメソッドの戻り値は、上の表で示した `String.Compare` メソッドによって返される値と同じです。 - +> メソッドは、主に文字列の並べ替えに使用するものです。 等価性をテストする \(つまり、ある文字列が別の文字列より大きいか小さいかを問題にせずに戻り値 0 を明示的に検索する\) 目的では、 メソッドを使用しないでください。 2 つの文字列が等価かどうかを判断するには、 メソッドを使用してください。 + + **CompareOrdinal** メソッドを使用して、2 つの文字列の値を比較する例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#7](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/compare.cpp#7)] + [!code-csharp[Conceptual.String.BasicOps#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/compare.cs#7)] + [!code-vb[Conceptual.String.BasicOps#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/compare.vb#7)] + + この例は、コンソールに `-32` と出力します。 + +## CompareTo + メソッドは、現在の文字列オブジェクトがカプセル化している文字列を別の文字列またはオブジェクトと比較します。 このメソッドの戻り値は、上の表で示した メソッドによって返される値と同じです。 + > [!IMPORTANT] -> [String.CompareTo](xref:System.String.CompareTo(System.String)) メソッドは、主に文字列の並べ替えに使用するものです。 等価性をテストする (つまり、ある文字列が別の文字列より大きいか小さいかを問題にせずに戻り値 0 を明示的に検索する) 目的では、[String.CompareTo](xref:System.String.CompareTo(System.String)) メソッドを使用しないでください。 2 つの文字列が等価かどうかを判断するには、[String.Equals(String, String, StringComparison)](xref:System.String.Equals(System.String,System.String,System.StringComparison)) メソッドを使用してください。 - -`String.CompareTo` メソッドを使用して、`string1` オブジェクトを `string2` オブジェクトと比較する例を次に示します。 - -```csharp -string string1 = "Hello World"; -string string2 = "Hello World!"; -int MyInt = string1.CompareTo(string2); -Console.WriteLine( MyInt ); -``` - -```vb -Dim string1 As String = "Hello World" -Dim string2 As String = "Hello World!" -Dim MyInt As Integer = string1.CompareTo(string2) -Console.WriteLine(MyInt) -``` - -この例は、コンソールに `-1` と出力します。 - -## 次の値に等しい - -[String.Equals](xref:System.String.CompareTo(System.String)) メソッドを使用すると、2 つの文字列が等しいかどうかを簡単に確認できます。 このメソッドは大文字と小文字を区別し、`true` または `false` の Boolean 値を返します。 このメソッドは、次の例に示すように、既存のクラスで使用できます。 `Equals` メソッドを使用して、文字列オブジェクトに "Hello World" という語句が含まれているかどうかを確認する例を次に示します。 - -```csharp -string string1 = "Hello World"; -Console.WriteLine(string1.Equals("Hello World")); -``` - -```vb -Dim string1 As String = "Hello World" -Console.WriteLine(string1.Equals("Hello World")) -``` - -この例は、コンソールに `true` と出力します。 - -このメソッドは、静的メソッドとしても使用できます。 静的メソッドを使用して、2 つの文字列オブジェクトを比較する例を次に示します。 - -```csharp -string string1 = "Hello World"; -string string2 = "Hello World"; -Console.WriteLine(String.Equals(string1, string2)); -``` - -```vb -Dim string1 As String = "Hello World" -Dim string2 As String = "Hello World" -Console.WriteLine(String.Equals(string1, string2)) -``` - -この例は、コンソールに `true` と出力します。 - -## StartsWith と EndsWith - -[String.StartsWith](xref:System.String.StartsWith(System.String)) メソッドを使用すると、文字列オブジェクトが、別の文字列を構成している文字と同じ文字で始まっているかどうかを確認できます。 このメソッドは大文字と小文字を区別し、現在の文字列オブジェクトが、渡された文字列で始まる場合は `true`、それ以外の場合は `false` を返します。 このメソッドを使用して、文字列オブジェクトが "Hello" で始まるかどうかを確認する例を次に示します。 - -```csharp -string string1 = "Hello World"; -Console.WriteLine(string1.StartsWith("Hello")); -``` - -```vb -Dim string1 As String = "Hello World!" -Console.WriteLine(string1.StartsWith("Hello")) -``` - -この例は、コンソールに `true` と出力します。 - -[String.EndsWith](xref:System.String.CompareTo(System.String)) メソッドは、渡された文字列を現在の文字列オブジェクトの末尾にある文字列と比較します。 このメソッドも Boolean 値を返します。 `EndsWith` メソッドを使用して、文字列の末尾を確認する例を次に示します。 - -```csharp -string string1 = "Hello World"; -Console.WriteLine(string1.EndsWith("Hello")); -``` - -```vb -Dim string1 As String = "Hello World!" -Console.WriteLine(string1.EndsWith("Hello")) -``` - -この例は、コンソールに `false` と出力します。 - -## IndexOf と LastIndexOf - -[String.IndexOf](xref:System.String.IndexOf(System.Char)) メソッドを使用すると、特定の文字が文字列内で最初に出現する位置を確認できます。 このメソッドは大文字と小文字を区別し、文字列の先頭からカウントを開始し、0 から始まるインデックスを使用して、渡された文字が出現する位置を返します。 指定した文字が見つからない場合は、値 –1 を返します。 - -`IndexOf` メソッドを使用して、'`l`' という文字が文字列内で最初に出現する位置を検索する例を次に示します。 - -```csharp -string string1 = "Hello World"; -Console.WriteLine(string1.IndexOf('l')); -``` - -```vb -Dim string1 As String = "Hello World!" -Console.WriteLine(string1.IndexOf("l")) -``` - -この例は、コンソールに `2` と出力します。 - -[String.LastIndexOf](xref:System.String.LastIndexOf(System.Char)) メソッドは `String.IndexOf` メソッドに似ていますが、指定した文字列が文字列内で最後に出現する位置を返すという点が異なります。 このメソッドは大文字と小文字を区別し、0 から始まるインデックスを使用します。 - -`LastIndexOf` メソッドを使用して、'`l`' という文字が文字列内で最後に出現する位置を検索する例を次に示します。 - -```csharp -string string1 = "Hello World"; -Console.WriteLine(string1.LastIndexOf('l')); -``` - -```vb -Dim string1 As String = "Hello World!" -Console.WriteLine(string1.LastIndexOf("l")) -``` - -この例は、コンソールに `9` と出力します。 - -いずれのメソッドも、[String.Remove](xref:System.String.Remove(System.Int32)) メソッドと組み合わせて使用すると便利です。 `IndexOf` メソッドまたは `LastIndexOf` メソッドのいずれかを使用して文字の位置を取得し、その位置を `Remove method` メソッドに渡すことによって、その文字またはその文字で始まる単語を削除できます。 - -## 関連項目 - -[基本的な文字列操作](basic-string-operations.md) - - - - - - - - - - - - - +> メソッドは、主に文字列の並べ替えに使用するものです。 等価性をテストする \(つまり、ある文字列が別の文字列より大きいか小さいかを問題にせずに戻り値 0 を明示的に検索する\) 目的では、 メソッドを使用しないでください。 2 つの文字列が等価かどうかを判断するには、 メソッドを使用してください。 + + メソッドを使用して、`string1` オブジェクトを `string2` オブジェクトと比較する例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#8](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/compare.cpp#8)] + [!code-csharp[Conceptual.String.BasicOps#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/compare.cs#8)] + [!code-vb[Conceptual.String.BasicOps#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/compare.vb#8)] + + この例は、コンソールに `-1` と出力します。 + + メソッドのすべてのオーバーロードは、既定で、カルチャに依存して大文字小文字を区別する比較を実行します。 このメソッドのオーバーロードで、カルチャに依存しない比較を実行できるものはありません。 コードを理解しやすくするために、**String.Compare** メソッドを使用することをお勧めします。その際、カルチャに依存する操作には を指定し、カルチャに依存しない操作には を指定します。**String.Compare** メソッドを使用してカルチャに依存する比較とカルチャに依存しない比較の両方を実行する例については、「[カルチャを認識しない文字列比較の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md)」を参照してください。 + +## 次の値に等しい + **String.Equals** メソッドを使用すると、2 つの文字列が等しいかどうかを簡単に確認できます。 このメソッドは大文字と小文字を区別し、**True** または **False** の Boolean 値を返します。 このメソッドは、次の例に示すように、既存のクラスで使用できます。**Equals** メソッドを使用して、文字列オブジェクトに "Hello World" という語句が含まれているかどうかを確認する例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#9](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/compare.cpp#9)] + [!code-csharp[Conceptual.String.BasicOps#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/compare.cs#9)] + [!code-vb[Conceptual.String.BasicOps#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/compare.vb#9)] + + この例は、コンソールに `True` と出力します。 + + このメソッドは、静的メソッドとしても使用できます。 静的メソッドを使用して、2 つの文字列オブジェクトを比較する例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#10](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/compare.cpp#10)] + [!code-csharp[Conceptual.String.BasicOps#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/compare.cs#10)] + [!code-vb[Conceptual.String.BasicOps#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/compare.vb#10)] + + この例は、コンソールに `True` と出力します。 + +## StartsWith と EndsWith + **String.StartsWith** メソッドを使用すると、文字列オブジェクトが、別の文字列を構成している文字と同じ文字で始まっているかどうかを確認できます。 このメソッドは大文字と小文字を区別し、現在の文字列オブジェクトが、渡された文字列で始まる場合は **true**、それ以外の場合は **false** を返します。 このメソッドを使用して、文字列オブジェクトが "Hello" で始まるかどうかを確認する例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#11](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/compare.cpp#11)] + [!code-csharp[Conceptual.String.BasicOps#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/compare.cs#11)] + [!code-vb[Conceptual.String.BasicOps#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/compare.vb#11)] + + この例は、コンソールに `True` と出力します。 + + **String.EndsWith** メソッドは、渡された文字列を現在の文字列オブジェクトの末尾にある文字列と比較します。 このメソッドも Boolean 値を返します。**EndsWith** メソッドを使用して、文字列の末尾を確認する例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#12](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/compare.cpp#12)] + [!code-csharp[Conceptual.String.BasicOps#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/compare.cs#12)] + [!code-vb[Conceptual.String.BasicOps#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/compare.vb#12)] + + この例は、コンソールに `False` と出力します。 + +## IndexOf と LastIndexOf + **String.IndexOf** メソッドを使用すると、特定の文字が文字列内で最初に出現する位置を確認できます。 このメソッドは大文字と小文字を区別し、文字列の先頭からカウントを開始し、0 から始まるインデックスを使用して、渡された文字が出現する位置を返します。 指定した文字が見つからない場合は、値 –1 を返します。 + + **IndexOf** メソッドを使用して、'`l`' という文字が文字列内で最初に出現する位置を検索する例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#13](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/compare.cpp#13)] + [!code-csharp[Conceptual.String.BasicOps#13](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/compare.cs#13)] + [!code-vb[Conceptual.String.BasicOps#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/compare.vb#13)] + + この例は、コンソールに `2` と出力します。 + + **String.LastIndexOf** メソッドは **String.IndexOf** メソッドに似ていますが、指定した文字列が文字列内で最後に出現する位置を返すという点が異なります。 このメソッドは大文字と小文字を区別し、0 から始まるインデックスを使用します。 + + **LastIndexOf** メソッドを使用して、'`l`' という文字が文字列内で最後に出現する位置を検索する例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#14](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/compare.cpp#14)] + [!code-csharp[Conceptual.String.BasicOps#14](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/compare.cs#14)] + [!code-vb[Conceptual.String.BasicOps#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/compare.vb#14)] + + この例は、コンソールに `9` と出力します。 + + いずれのメソッドも、**String.Remove** メソッドと組み合わせて使用すると便利です。**IndexOf** メソッドまたは **LastIndexOf** メソッドのいずれかを使用して文字の位置を取得し、その位置を **Remove** メソッドに渡すことによって、その文字またはその文字で始まる単語を削除できます。 + +## 参照 + [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) + [カルチャを認識しない文字列操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md) \ No newline at end of file diff --git a/docs/standard/base-types/compilation-and-reuse-in-regular-expressions.md b/docs/standard/base-types/compilation-and-reuse-in-regular-expressions.md new file mode 100644 index 00000000000..303ddabd03f --- /dev/null +++ b/docs/standard/base-types/compilation-and-reuse-in-regular-expressions.md @@ -0,0 +1,57 @@ +--- +title: "正規表現におけるコンパイルと再利用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, コンパイル" + - ".NET Framework 正規表現, エンジン" + - "コンパイル, 正規表現" + - "解析 (正規表現を使用したテキストを), コンパイル" + - "パターン一致 (正規表現を使用した), コンパイル" + - "正規表現, コンパイル" + - "正規表現, エンジン" + - "検索 (正規表現を使用した), コンパイル" +ms.assetid: 182ec76d-5a01-4d73-996c-0b0d14fcea18 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 正規表現におけるコンパイルと再利用 +正規表現エンジンが表現をどのようにコンパイルするか、および正規表現がどのようにキャッシュされるかを理解すると、正規表現を多く使用するアプリケーションのパフォーマンスを最適化できます。 このトピックでは、コンパイルとキャッシュの両方について説明します。 + +## コンパイルされた正規表現 + 既定では、正規表現エンジンは正規表現をコンパイルして内部命令のシーケンスを生成します。これらは Microsoft Intermediate Language \(MSIL\) とは別の高水準コードです。 エンジンは正規表現を実行するときに、その内部コードを解釈します。 + + オブジェクトを構築するときに オプションを使用すると、正規表現エンジンは、高水準の正規表現内部命令ではなく、明示的な MSIL コードに正規表現をコンパイルします。 これにより、.NET Framework の JIT \(Just\-In\-Time\) コンパイラは、正規表現をネイティブな機械語コードに変換してパフォーマンスの向上を図ることができます。 + + ただし、生成された MSIL はアンロードできません。 コードをアンロードする唯一の方法は、アプリケーション ドメイン全体をアンロードする \(つまり、アプリケーションのコードをすべてアンロードする\) ことです。 実際、 オプションを使用して正規表現をコンパイルした場合は、その正規表現を作成した オブジェクト自体がガベージ コレクションで解放されたとしても、コンパイル済みの正規表現によって使用されるリソースを .NET Framework が解放することはありません。 + + このため、 オプションを使用してコンパイルする正規表現の数を制限することで、リソースの消費が過度にならないように注意する必要があります。 大量または無制限の正規表現をアプリケーションで使用する必要がある場合、**Options.Compiled** オプションを使用したコンパイルを行わないようにします。 ただし、少数の正規表現を繰り返して使用する場合は、パフォーマンスを向上させるために、 を使用して正規表現をコンパイルする必要があります。 別の方法として、プリコンパイル済みの正規表現を使用することもできます。 メソッドを使用すると、再利用できる DLL にすべての表現をコンパイルできます。 これにより、実行時にコンパイルする必要がなくなり、コンパイルされた正規表現の処理速度も維持されます。 + +## 正規表現キャッシュ + パフォーマンスを向上させるために、正規表現エンジンは、コンパイル済みの正規表現のキャッシュをアプリケーション全体で保持します。 このキャッシュには、静的メソッド呼び出しでのみ使用される正規表現パターンが格納されます \(インスタンス メソッドに渡される正規表現パターンはキャッシュされません\)。これにより、正規表現を使用するたびに解析し直して高水準のバイト コードを生成する必要がなくなります。 + + キャッシュされる正規表現の最大数は、`static` \(Visual Basic では `Shared`\) プロパティの値で決まります。 既定では、正規表現エンジンは最大で 15 個のコンパイル済み正規表現をキャッシュします。 コンパイル済み正規表現の数がキャッシュ サイズを超えると、最後に使用されてからの時間が最も長い正規表現が破棄され、新しい正規表現がキャッシュされます。 + +> [!IMPORTANT] +> .NET Framework Version 2.0 での正規表現のキャッシュ方法は、.NET Framework Version 1.0 および 1.1 とは大きく異なります。 .NET Framework 1.0 および 1.1 では、静的メソッド呼び出しとインスタンス メソッド呼び出しの両方で使用されるすべての正規表現がキャッシュされます。 このキャッシュは、新しい正規表現を格納するために自動的に拡張されます。 .NET Framework 2.0 では、静的メソッド呼び出しで使用された正規表現のみがキャッシュされます。 既定では最新の 15 個の正規表現だけがキャッシュされますが、キャッシュのサイズは プロパティの値を設定することで調整できます。 + + アプリケーションでは、次の 2 つの方法のいずれかにより、プリコンパイル済みの正規表現を利用できます。 + +- オブジェクトの静的メソッドを使用して、正規表現を定義します。 別の静的メソッド呼び出しで既に定義されている正規表現パターンを使用する場合、正規表現エンジンはその表現をキャッシュから取得します。 それ以外の場合、エンジンは正規表現をコンパイルしてキャッシュに追加します。 + +- 正規表現パターンが必要な場合に、既存の オブジェクトを再利用します。 + + オブジェクトのインスタンス化と正規表現のコンパイルによって生じるオーバーヘッドのため、多数の オブジェクトを作成してすぐに破棄するのは効率が良くありません。 多数の異なる正規表現を使用するアプリケーションでは、静的な `Regex` メソッドの呼び出しを使用することと、必要に応じて正規表現キャッシュのサイズを大きくすることで、パフォーマンスを最適化できます。 + +## 参照 + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) \ No newline at end of file diff --git a/docs/standard/base-types/composite-formatting.md b/docs/standard/base-types/composite-formatting.md new file mode 100644 index 00000000000..0cba2576c83 --- /dev/null +++ b/docs/standard/base-types/composite-formatting.md @@ -0,0 +1,170 @@ +--- +title: "複合書式指定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "複合書式設定" + - "書式指定子, 複合書式設定" + - "オブジェクト [.NET Framework], 書式設定 (複数のオブジェクトの)" + - "パラメーター指定子" + - "文字列 [.NET Framework], 配置" + - "文字列 [.NET Framework], 複合" +ms.assetid: 87b7d528-73f6-43c6-b71a-f23043039a49 +caps.latest.revision: 36 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 33 +--- +# 複合書式指定 +.NET Framework の複合書式指定機能は、オブジェクトのリストおよび複合書式指定文字列を入力として使用します。 複合書式指定文字列は、固定テキストに、書式指定項目と呼ばれるインデックス化されたプレースホルダーが混合されて構成されます。このプレースホルダーはリスト内のオブジェクトに対応します。 書式設定操作によって生成される結果の文字列は、元の固定テキストに文字列で表されたリスト内のオブジェクトが混合されて構成されます。 + + 複合書式指定機能をサポートするメソッドには、次のようなものがあります。 + +- 。書式設定された結果文字列を返します。 + +- 。書式設定された結果文字列を オブジェクトに追加します。 + +- メソッドの一部のオーバーロード。書式設定された結果文字列をコンソールに表示します。 + +- メソッドの一部のオーバーロード。書式設定された結果文字列をストリームまたはファイルに書き込みます。 から派生したクラス \( など\) も、この機能を共有します。 + +- [Debug.WriteLine\(String, Object\。書式設定されたメッセージをトレース リスナーに出力します。 + +- [Trace.TraceError\(String, Object\、[Trace.TraceInformation\(String, Object\、および [Trace.TraceWarning\(String, Object\ メソッド。書式設定されたメッセージをトレース リスナーに出力します。 + +- [TraceSource.TraceInformation\(String, Object\ メソッド。情報提供メソッドをトレース リスナーに書き込みます。 + +## 複合書式指定文字列 + 複合書式指定文字列とオブジェクト リストは、複合書式指定機能をサポートするメソッドの引数として使用されます。 複合書式指定文字列は、1 つ以上の書式指定項目が混合された 0 個以上の固定テキストで構成されます。 固定テキストはユーザーが任意に選択した文字列で、各書式指定項目はリスト内のオブジェクトまたはボックス化された構造体に対応します。 複合書式指定機能は、各書式指定項目がリスト内の対応するオブジェクトの文字列表現で置換された新しい文字列を返します。 + + 次の コードがあるとします。 + + [!code-csharp[Formatting.Composite#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Composite/cs/Composite1.cs#1)] + [!code-vb[Formatting.Composite#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/Composite1.vb#1)] + + 固定テキストは、"`Name =` " および "`, hours =` " です。 書式指定項目の 1 つは、インデックスが 0 である "`{0}`" であり、オブジェクト `myName` に対応します。もう 1 つはインデックスが 1 である "`{1:hh}`" であり、オブジェクト `DateTime.Now` に対応します。 + +## 書式指定項目の構文 + 各書式指定項目は、次の形式を使用し、次のコンポーネントで構成されます。 + + `{` *index*\[`,`*alignment*\]\[`:`*formatString*\]`}` + + 対になった中かっこ \("{" と "}"\) が必要です。 + +### Index コンポーネント + 必須の *index* コンポーネントは、パラメーター指定子とも呼ばれ、オブジェクトのリスト内で対応する項目を識別するための 0 から始まる数値です。 つまり、パラメーター指定子が 0 である書式指定項目はリスト内の最初のオブジェクトを書式設定し、パラメーター指定子が 1 である書式指定項目はリスト内の 2 番目のオブジェクトを書式設定します。 次の例には、10 未満の素数を表す 5 つのパラメーター指定子が含まれています。 + + [!code-csharp[Formatting.Composite#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Composite/cs/index1.cs#7)] + [!code-vb[Formatting.Composite#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/index1.vb#7)] + + 同じパラメーター指定子を指定することによって、複数の書式指定項目でオブジェクトのリスト内の同じ要素を参照できます。 たとえば、複合書式指定文字列で "0x{0:X} {0:E} {0:N}" のように指定することによって、1 つの数値を 16 進形式、指数形式、および数値形式で書式設定できます。以下に例を示します。 + + [!code-csharp[Formatting.Composite#10](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Composite/cs/index1.cs#10)] + [!code-vb[Formatting.Composite#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/index1.vb#10)] + + 各書式指定項目は、リスト内のどのオブジェクトでも参照できます。 たとえば、3 つのオブジェクトが存在する場合、2 番目、1 番目、3 番目のオブジェクトを書式設定するには、"{1} {0} {2}" のような複合書式指定文字列を指定します。 書式指定項目で参照されないオブジェクトは無視されます。 パラメーター指定子がオブジェクトのリストの範囲外の項目を指定する場合は、ランタイムに がスローされます。 + +### Alignment コンポーネント + 省略可能な *alignment* コンポーネントは、書式設定フィールドの幅を指定する符号付き整数です。 *alignment* の値が書式設定する文字列の長さよりも小さい場合、*alignment* は無視され、書式設定する文字列の長さがフィールドの幅として使用されます。 フィールド内の書式設定されたデータは、*alignment* が正の場合は右揃え、*alignment* が負の場合は左揃えされます。 埋め込みが必要な場合は、空白が使用されます。 *alignment* を指定する場合は、コンマが必要です。 + + 次の例では、2 つの配列を定義します。1 つの配列には従業員の名前が含まれていて、もう 1 つの配列には従業員が 2 週間にわたって作業した時間数が含まれています。 複合書式指定文字列では、名前が 20 文字のフィールドに左揃えに指定され、時間数が 5 文字のフィールドに右揃えに指定されます。 "N1" 標準書式指定文字列も、時間を 1 桁の小数部で書式設定するために使用されることに注意してください。 + + [!code-csharp[Formatting.Composite#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Composite/cs/alignment1.cs#8)] + [!code-vb[Formatting.Composite#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/alignment1.vb#8)] + +### Format String コンポーネント + オプションの *formatString* コンポーネントは、書式設定されるオブジェクトの種類に適した書式指定文字列です。 対応するオブジェクトが数値の場合は標準またはカスタムの数値書式指定文字列を指定し、対応するオブジェクトが オブジェクトの場合は標準またはカスタムの日時書式指定文字列を指定し、対応するオブジェクトが列挙値の場合は[列挙型書式指定文字列](../../../docs/standard/base-types/enumeration-format-strings.md)を指定します。 *formatString* が指定されない場合は、数値、日付と時刻、または列挙型の汎用 \("G"\) 書式指定子が使用されます。 *formatString* を指定する場合はコロンが必要です。 + + 次の表は、定義済みの一連の書式指定文字列をサポートする .NET Framework クラス ライブラリ内の型または型のカテゴリの一覧です。サポートされている書式指定文字列が示されているトピックへのリンクも含まれています。 文字列の書式設定とは拡張可能な機構で、既存のすべての型に対する新しい書式指定文字列を定義できるだけでなく、アプリケーション定義の型でサポートされる一連の書式指定文字列も定義できます。 詳しくは、 および のインターフェイスに関するトピックを参照してください。 + +|型または型のカテゴリ|参照トピック| +|----------------|------------| +|日付と時刻の型 \(\)|[標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)

[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)| +|列挙型 \( から派生したすべての型\)|[列挙型書式指定文字列](../../../docs/standard/base-types/enumeration-format-strings.md)| +|数値型 \(\)|[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)

[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)| +||| +||[標準の時間間隔書式指定文字列](../../../docs/standard/base-types/standard-timespan-format-strings.md)

[カスタム時間間隔書式指定文字列](../../../docs/standard/base-types/custom-timespan-format-strings.md)| + +### エスケープ中かっこ \({}\) + 左中かっこ \({\) および右中かっこ \(}\) は、書式指定項目の開始および終了として解釈されます。 したがって、左中かっこおよび右中かっこを文字として表示するためには、エスケープ シーケンスを使用する必要があります。 左中かっこを 1 つ \("{"\) 表示するには、左中かっこ 2 つ \("{{"\) を固定テキストに指定します。また、右中かっこを 1 つ \("}"\) 表示するには、右中かっこ 2 つ \("}}"\) を指定します。 書式指定項目に使用されている中かっこは、指定されている順序に従って解釈されます。 入れ子になった中かっこを解釈する機能はサポートされていません。 + + エスケープされた中かっこの解釈によっては、予測しない結果になる場合があります。 たとえば、"{{{0:D}}}" という書式指定項目について考えます。この書式指定項目は、左中かっこ、10 進数として書式設定された数値、および右中かっこを表示することを意図しています。 しかし、この書式指定項目は、実際には、次のように解釈されます。 + +1. 最初の 2 つの左中かっこ \("{{"\) がエスケープされ、左中かっこ 1 つが作成されます。 + +2. 次の 3 文字 \("{0:"\) は、書式指定項目の開始として解釈されます。 + +3. 次の文字 \("D"\) は、Decimal 標準数値書式指定子として解釈できますが、エスケープされた次の 2 つの右中かっこ \("}}"\) からは単一の中かっこが作成されます。 結果として作成される文字列 \("D}"\) は、標準数値書式指定子ではないため、リテラル文字列 "D}" の表示を意味するカスタム書式指定文字列として解釈されます。 + +4. 最後の中かっこ \("}"\) は、書式指定項目の終わりとして解釈されます。 + +5. 最終的には、"{D}" というリテラル文字列が表示されます。 書式設定対象だった数値は、表示されません。 + + エスケープした中かっこと書式指定項目とが誤って解釈されないコードを記述するためには、中かっこと書式指定項目を別々に書式設定するという方法があります。 つまり、最初の書式設定操作でリテラルの開く中かっこを表示し、次の書式設定操作で書式指定項目の結果を表示し、最後の操作でリテラルの閉じる中かっこを表示します。 このアプローチの例を次に示します。 + + [!code-csharp[Formatting.Composite#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Composite/cs/Escaping1.cs#2)] + [!code-vb[Formatting.Composite#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/Escaping1.vb#2)] + +### 処理の順序 + 複合書式指定メソッドの呼び出しに、値が でない `null` 引数が含まれている場合、ランタイムはその メソッドを呼び出して、 実装を要求します。 このメソッドが 実装を返すことができる場合、実装は後で使用できるようにキャッシュされます。 + + 書式指定項目に対応するパラメーター リストのそれぞれの値は、次の手順を実行することで文字列に変換されます。 最初の 3 つの手順の条件のいずれかに該当する場合は、その手順で値の文字列形式が返され、後続の手順は実行されません。 + +1. 書式設定する値が `null` の場合は、空の文字列 \(""\) が返されます。 + +2. 実装が利用できる場合、ランタイムはその メソッドを呼び出します。 メソッドには書式指定項目の *formatString* 値 \(ある場合\) または `null` \(ない場合\) と、 実装が渡されます。 + +3. 値が インターフェイスを実装している場合は、インターフェイスの メソッドが呼び出されます。 メソッドは、*formatString* 値 \(書式指定項目内に値がある場合\) または `null` \(ない場合\) を受け取ります。 引数は、次のように判断されます。 + + - 数値の場合、null 以外の 引数を持つ複合書式指定メソッドが呼び出されると、ランタイムは メソッドから オブジェクトを要求します。 オブジェクトを 1 つも取得できないか、引数の値が `null` であるか、または複合書式指定メソッドに パラメーターがない場合は、現在のスレッド カルチャの オブジェクトが使用されます。 + + - 日付と時刻の値の場合、null 以外の 引数を持つ複合書式指定メソッドが呼び出されると、ランタイムは メソッドから オブジェクトを要求します。 オブジェクトを 1 つも取得できないか、引数の値が `null` であるか、または複合書式指定メソッドに パラメーターがない場合は、現在のスレッド カルチャの オブジェクトが使用されます。 + + - 他の型のオブジェクトの場合、 引数を持つ複合書式指定が呼び出されると、その値 \(`null` オブジェクトが指定されない場合の を含む\) は 実装に直接渡されます。 それ以外の場合は、現在のスレッド カルチャを表す オブジェクトが 実装に渡されます。 + +4. `ToString` をオーバーライドするか、基底クラスの動作を継承する、型のパラメーターなしの メソッドが呼び出されます。 この場合、書式指定項目の *formatString* コンポーネントで指定されている書式指定文字列は、存在していても無視されます。 + + 前の手順が実行された後、アラインメントが適用されます。 + +## コード例 + 複合書式指定を使用して文字列を作成する方法と、オブジェクトの `ToString` メソッドを使用して文字列を作成する方法を示すコード例を次に示します。 この 2 つの書式設定方法では、等価の文字列が作成されます。 + + [!code-csharp[Formatting.Composite#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Composite/cs/Composite1.cs#3)] + [!code-vb[Formatting.Composite#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/Composite1.vb#3)] + + 現在の曜日が木曜日であり、月が 5 月であり、現在のカルチャが英語 \(U.S.\) の場合、上記のコード例で作成される 2 つの文字列の値はどちらも `Thursday May` です。 + + は、 と同じ機能を公開します。 これら 2 つのメソッドの唯一の違いは、 が結果を文字列で返すのに対し、 は、 オブジェクトに関連付けられた出力ストリームに結果を書き出す点です。 メソッドを使用して値 `MyInt` を通貨値として書式設定するコード例を次に示します。 + + [!code-csharp[Formatting.Composite#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Composite/cs/Composite1.cs#4)] + [!code-vb[Formatting.Composite#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/Composite1.vb#4)] + + 1 つのオブジェクトを 2 つの方法で書式設定する例を含め、複数のオブジェクトを書式設定する例を次に示します。 + + [!code-csharp[Formatting.Composite#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Composite/cs/Composite1.cs#5)] + [!code-vb[Formatting.Composite#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/Composite1.vb#5)] + + 書式設定でアラインメントを使用する方法を示す例を次に示します。 アラインメント結果を強調表示するため、書式が設定される引数を縦棒 \(|\) で囲んでいます。 + + [!code-csharp[Formatting.Composite#6](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Composite/cs/Composite1.cs#6)] + [!code-vb[Formatting.Composite#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Composite/vb/Composite1.vb#6)] + +## 参照 + + + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + [標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md) + [カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md) + [標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md) + [カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md) + [標準の時間間隔書式指定文字列](../../../docs/standard/base-types/standard-timespan-format-strings.md) + [カスタム時間間隔書式指定文字列](../../../docs/standard/base-types/custom-timespan-format-strings.md) + [列挙型書式指定文字列](../../../docs/standard/base-types/enumeration-format-strings.md) \ No newline at end of file diff --git a/docs/standard/base-types/conversion-tables.md b/docs/standard/base-types/conversion-tables.md index 66c7a52cbed..3a82ff95a43 100644 --- a/docs/standard/base-types/conversion-tables.md +++ b/docs/standard/base-types/conversion-tables.md @@ -1,77 +1,80 @@ --- -title: "型変換の表" -description: "型変換の表" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/22/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: d602f260-e7cf-49c8-a37f-731f40e4a538 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: a27f78bc3c0753a7c5bc752bb6391839bfc21e75 -ms.lasthandoff: 03/02/2017 - ---- - -# 型変換の表 - -拡大変換は、1 つの型の値が、サイズが同じかそれ以上の別の型に変換されるときに発生します。 縮小変換は、1 つの型の値が、サイズがより小さい別の型の値に変換されるときに発生します。 このトピックの表は、両方の種類の変換の動作を示しています。 - -## 拡大変換 - -型 | データ損失なしに次の型に変換可能 ----- | ------------------------------------- -[Byte](xref:System.Byte) | [UInt16](xref:System.UInt16)、[Int16](xref:System.Int16)、[UInt32](xref:System.UInt32)、[Int32](xref:System.Int32)、[UInt64](xref:System.UInt64)、[Int64](xref:System.Int64)、[Single](xref:System.Single)、[Double](xref:System.Double)、[Decimal](xref:System.Decimal) -[SByte](xref:System.SByte) | [Int16](xref:System.Int16)、[Int32](xref:System.Int32)、[Int64](xref:System.Int64)、[Single](xref:System.Single)、[Double](xref:System.Double)、[Decimal](xref:System.Decimal) -[Int16](xref:System.Int16) | [Int32](xref:System.Int32)、[Int64](xref:System.Int64)、[Single](xref:System.Single)、[Double](xref:System.Double)、[Decimal](xref:System.Decimal) -[UInt16](xref:System.UInt16) | [UInt32](xref:System.UInt32)、[Int32](xref:System.Int32)、[UInt64](xref:System.UInt64)、[Int64](xref:System.Int64)、[Single](xref:System.Single)、[Double](xref:System.Double)、[Decimal](xref:System.Decimal) -[Char](xref:System.Char) | [UInt16](xref:System.UInt16)、[UInt32](xref:System.UInt32)、[Int32](xref:System.Int32)、[UInt64](xref:System.UInt64)、[Int64](xref:System.Int64)、[Single](xref:System.Single)、[Double](xref:System.Double)、[Decimal](xref:System.Decimal) -[Int32](xref:System.Int32) | [Int64](xref:System.Int64)、[Double](xref:System.Double)、[Decimal](xref:System.Decimal) -[UInt32](xref:System.UInt32) | [Int64](xref:System.Int64)、[UInt64](xref:System.UInt64)、[Double](xref:System.Double)、[Decimal](xref:System.Decimal) -[Int64](xref:System.Int64) | [Decimal](xref:System.Decimal) -[UInt64](xref:System.UInt64) | [Decimal](xref:System.Decimal) -[Single](xref:System.Single) | [Double](xref:System.Double) - -一部の [Single](xref:System.Single) または [Double](xref:System.Double) への拡大変換では、精度が損なわれる可能性があります。 次の表は、情報が失われる可能性のある拡大変換を示しています。 - -型 | 次の型に変換可能 ----- | ------------------- -[Int32](xref:System.Int32) | [Single](xref:System.Single) -[UInt32](xref:System.UInt32) | [Single](xref:System.Single) -[Int64](xref:System.Int64) | [Single](xref:System.Single)、[Double](xref:System.Double) -[UInt64](xref:System.UInt64) | [Single](xref:System.Single)、[Double](xref:System.Double) -[Decimal](xref:System.Decimal) | [Single](xref:System.Single)、[Double](xref:System.Double) - -## 縮小変換 - -[Single](xref:System.Single) または [Double](xref:System.Double) への縮小変換では、情報が失われる可能性があります。 ターゲット型がソースの大きさを正確に表現できない場合、結果の型は定数 `PositiveInfinity` または `NegativeInfinity` に設定されます。 `PositiveInfinity` は、正の数を&0; で除算した結果であり、[Single](xref:System.Single) または [Double](xref:System.Double) の値が `MaxValue` フィールドの値を超える場合にも返されます。 `NegativeInfinity` は、負の数を&0; で除算した結果であり、[Single](xref:System.Single) または [Double](xref:System.Double) の値が `MinValue` フィールドの値を下回る場合にも返されます。 [Double](xref:System.Double) から [Single](xref:System.Single) への変換は、`PositiveInfinity` または `NegativeInfinity` になる場合があります。 - -その他のデータ型についても、縮小変換によって情報が失われる可能性があります。 ただし、変換される型の値が、ターゲット型の `MaxValue` フィールドと `MinValue` フィールドで指定された範囲外にある場合は、[OverflowException](xref:System.OverflowException) がスローされます。また、ターゲット型の値がその `MaxValue` または `MinValue` を超えないことを確認するために、ランタイムによって変換がチェックされます。 [System.Convert](xref:System.Convert) クラスを使用して実行される変換は、常にこの方法でチェックされます。 - -次の表は、[System.Convert](xref:System.Convert) を使用して [OverflowException](xref:System.OverflowException) をスローする変換、または、変換される型の値が結果の型の定義済みの範囲外にあるかどうかのチェックを行うすべての変換を示しています。 - -型 | 次の型に変換可能 ----- | ------------------- -[Byte](xref:System.Byte) | [SByte](xref:System.SByte) -[SByte](xref:System.SByte) | [Byte](xref:System.Byte)、[UInt16](xref:System.UInt16)、[UInt32](xref:System.UInt32)、[UInt64](xref:System.UInt64) -[Int16](xref:System.Int16) | [Byte](xref:System.Byte)、[SByte](xref:System.SByte)、[UInt16](xref:System.UInt16) -[UInt16](xref:System.UInt16) | [Byte](xref:System.Byte)、[SByte](xref:System.SByte)、[Int16](xref:System.Int16) -[Int32](xref:System.Int32) | [Byte](xref:System.Byte)、[SByte](xref:System.SByte)、[Int16](xref:System.Int16)、[UInt16](xref:System.UInt16)、[UInt32](xref:System.UInt32) -[UInt32](xref:System.UInt32) | [Byte](xref:System.Byte)、[SByte](xref:System.SByte)、[Int16](xref:System.Int16)、[UInt16](xref:System.UInt16)、[Int32](xref:System.Int32) -[Int64](xref:System.Int64) | [Byte](xref:System.Byte)、[SByte](xref:System.SByte)、[Int16](xref:System.Int16)、[UInt16](xref:System.UInt16)、[Int32](xref:System.Int32)、[UInt32](xref:System.UInt32)、[UInt64](xref:System.UInt64) -[UInt64](xref:System.UInt64) | [Byte](xref:System.Byte)、[SByte](xref:System.SByte)、[Int16](xref:System.Int16)、[UInt16](xref:System.UInt16)、[Int32](xref:System.Int32)、[UInt32](xref:System.UInt32)、[Int64](xref:System.Int64) -[Decimal](xref:System.Decimal) | [Byte](xref:System.Byte)、[SByte](xref:System.SByte)、[Int16](xref:System.Int16)、[UInt16](xref:System.UInt16)、[Int32](xref:System.Int32)、[UInt32](xref:System.UInt32)、[Int64](xref:System.Int64)、[UInt64](xref:System.UInt64) -[Single](xref:System.Single) | [Byte](xref:System.Byte)、[SByte](xref:System.SByte)、[Int16](xref:System.Int16)、[UInt16](xref:System.UInt16)、[Int32](xref:System.Int32)、[UInt32](xref:System.UInt32)、[Int64](xref:System.Int64)、[UInt64](xref:System.UInt64) -[Double](xref:System.Double) | [Byte](xref:System.Byte)、[SByte](xref:System.SByte)、[Int16](xref:System.Int16)、[UInt16](xref:System.UInt16)、[Int32](xref:System.Int32)、[UInt32](xref:System.UInt32)、[Int64](xref:System.Int64)、[UInt64](xref:System.UInt64) - -## 関連項目 - -[System.Convert](xref:System.Convert) - -[型変換](type-conversion.md) - - +title: ".NET Framework における型変換の表 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "拡大変換" + - "縮小変換" + - "型変換、表" + - "変換 (型を)、縮小変換" + - "変換 (型を)、拡大変換" + - "基本型、変換" + - "表 [.NET Framework]、型変換" + - "データ型 [.NET Framework]、変換" +ms.assetid: 0ea65c59-85eb-4a52-94ca-c36d3bd13058 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# .NET Framework における型変換の表 +拡大変換は、ある型の値をそれよりサイズが大きいかまたは等しい別の型に変換するときに実行されます。 縮小変換は、ある型の値をそれよりサイズが小さい別の型の値に変換するときに実行されます。 このトピックの表では、この 2 種類の変換の動作を示します。 + +## 拡大変換 + 情報を失わずに実行できる拡大変換について次の表にまとめます。 + +|型|データを失わない変換後の型| +|-------|-------------------| +||, , , , , , , , | +||, , , , , | +||, , , , | +||, , , , , , | +||, , , , , , , | +||, , | +||, , , | +||| +||| +||| + + または への拡大変換では、精度が失われることがあります。 情報が失われる可能性のある拡大変換について次の表にまとめます。 + +|型|変換後の型| +|-------|-----------| +||| +||| +||, | +||, | +||, | + +## 縮小変換 + または への縮小変換では、情報が失われることがあります。 変換先の型が変換元の絶対値を正確に表現できない場合、結果の型は定数 `PositiveInfinity` または `NegativeInfinity` に設定されます。 `PositiveInfinity` の値は、正の数を 0 で除算した結果であり、 または の値が `MaxValue` フィールドの値を上回った場合にも返されます。 `NegativeInfinity` の値は、負の数を 0 で除算した結果であり、 または の値が `MinValue` フィールドの値を下回った場合にも返されます。 から に変換すると、結果が `PositiveInfinity` または `NegativeInfinity` になります。 + + ほかのデータ型の縮小変換でも、情報が失われることがあります。 ただし、変換結果の型の値が、変換先の型の `MaxValue` フィールドおよび `MinValue` フィールドで指定されている範囲外になる場合は がスローされ、変換先の型の値が `MaxValue` または `MinValue` を超えないことを保証するためにランタイムによってその変換がチェックされます。 クラスを使用して実行される変換は、必ずこの方法でチェックされます。 + + を使用した変換や、チェックを伴うその他の変換で、変換結果の型の値が結果の型で定義されている範囲外の値になる場合に がスローされるケースを次の表にまとめます。 + +|型|変換後の型| +|-------|-----------| +||| +||, , , | +||, , | +||, , | +||, , , ,| +||, , , , | +||, , , , ,,| +||, , , , , , | +||, , , , , , , | +||, , , , , , , | +||, , , , , , , | + +## 参照 + + [.NET Framework における型変換](../../../docs/standard/base-types/type-conversion.md) \ No newline at end of file diff --git a/docs/standard/base-types/creating-new.md b/docs/standard/base-types/creating-new.md index 5efb19faea6..4cd998a79d4 100644 --- a/docs/standard/base-types/creating-new.md +++ b/docs/standard/base-types/creating-new.md @@ -1,167 +1,86 @@ --- -title: "新しい文字列の作成" -description: "新しい文字列の作成" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 639397c7-e694-43e0-845b-1681c62bd9fd -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 793b5bc4b26967104459fa2559c6127bb82f3a9d -ms.lasthandoff: 03/02/2017 - ---- - -# 新しい文字列の作成 - -.NET は、単純な割り当てを使用した文字列の作成をサポートしています。また、多数の異なるパラメーターを使用した文字列の作成をサポートするために、クラス コンストラクターをオーバーロードします。 また、.NET は、複数の文字列、文字列の配列、またはオブジェクトを組み合わせて新しい文字列オブジェクトを作成する、[System.String](xref:System.String) クラスの複数のメソッドを提供します。 - -## 割り当てを使用した文字列の作成 - -新しい [String](xref:System.String) オブジェクトを作成する最も簡単な方法としては、単に文字列リテラルを [String](xref:System.String) オブジェクトに割り当てます。 - -## クラス コンストラクターを使用した文字列の作成 - -[String](xref:System.String) クラス コンストラクターのオーバーロードを使用すると、文字配列から文字列を作成できます。 また、指定した回数だけ特定の文字を複製することで、新しい文字列を作成することもできます。 - -## 文字列を返すメソッド - -次の表は、新しい文字列オブジェクトを返すいくつかの便利なメソッドを示しています。 - -メソッド名 | 使用 ------------ | --- -[String.Format](xref:System.String.Format(System.String,System.Object)) | 入力オブジェクトのセットから、書式設定された文字列をビルドします。 -[String.Concat](xref:System.String.Concat(System.String,System.String)) | 2 つ以上の文字列から文字列をビルドします。 -[String.Join](xref:System.String.Join(System.String,System.String[])) |文字列の配列を組み合わせることで、新しい文字列をビルドします。 -[String.Insert](xref:System.String.Insert(System.Int32,System.String)) | 既存の文字列の指定のインデックスに文字列を挿入することで、新しい文字列をビルドします。 -[String.CopyTo](xref:System.String.CopyTo(System.Int32,System.Char[],System.Int32,System.Int32)) | 文字配列内の指定の位置に、文字列内の指定の文字をコピーします。 - -### 形式 - -`String.Format` メソッドを使用すると、書式設定された文字列を作成し、複数のオブジェクトを表す文字列を連結できます。 このメソッドは、渡されたすべてのオブジェクトを文字列に自動的に変換します。 たとえば、アプリケーションでユーザーに対して [Int32](xref:System.Int32) 値と [DateTime](xref:System.DateTime) 値を表示する必要がある場合、`Format` メソッドを使用して、これらの値を表す文字列を簡単に作成できます。 このメソッドで使用される書式設定規則については、[複合書式指定](composite-format.md)に関するセクションを参照してください。 - -次の例では、`Format` メソッドを使用して、整数型の変数を使用する文字列を作成します。 - -```csharp -int numberOfFleas = 12; -string miscInfo = String.Format("Your dog has {0} fleas. " + - "It is time to get a flea collar. " + - "The current universal date is: {1:u}.", - numberOfFleas, DateTime.Now); -Console.WriteLine(miscInfo); -// The example displays the following output: -// Your dog has 12 fleas. It is time to get a flea collar. -// The current universal date is: 2008-03-28 13:31:40Z. -``` - -```vb -Dim numberOfFleas As Integer = 12 -Dim miscInfo As String = String.Format("Your dog has {0} fleas. " & _ - "It is time to get a flea collar. " & _ - "The current universal date is: {1:u}.", _ - numberOfFleas, Date.Now) -Console.WriteLine(miscInfo) -' The example displays the following output: -' Your dog has 12 fleas. It is time to get a flea collar. -' The current universal date is: 2008-03-28 13:31:40Z. -``` - -この例では、[DateTime.Now](xref:System.DateTime.Now) は、現在のスレッドに関連付けられているカルチャで指定された方法で現在の日時を表示します。 - -### Concat - -`String.Concat` メソッドを使用すると、2 つ以上の既存のオブジェクトから新しい文字列オブジェクトを簡単に作成できます。 言語に依存せずに文字列を連結する方法を提供します。 このメソッドは、`System.Object` から派生したすべてのクラスを受け入れます。 次の例では、2 つの既存の文字列オブジェクトおよび区切り文字から文字列を作成します。 - -```csharp -string helloString1 = "Hello"; -string helloString2 = "World!"; -Console.WriteLine(String.Concat(helloString1, ' ', helloString2)); -// The example displays the following output: -// Hello World! -``` - -```vb -Dim helloString1 As String = "Hello" -Dim helloString2 As String = "World!" -Console.WriteLine(String.Concat(helloString1, " "c, helloString2)) -' The example displays the following output: -' Hello World! -``` - -### Join - -`String.Join` メソッドは、文字列の配列および区切り文字列から新しい文字列を作成します。 このメソッドは、複数の文字列を連結して、たとえばコンマで区切られたリストを作成する場合に便利です。 - -次の例では、スペースを使用して文字列の配列をバインドします。 - -```csharp -string[] words = {"Hello", "and", "welcome", "to", "my" , "world!"}; -Console.WriteLine(String.Join(" ", words)); -// The example displays the following output: -// Hello and welcome to my world! -``` - -```vb -Dim words() As String = {"Hello", "and", "welcome", "to", "my" , "world!"} -Console.WriteLine(String.Join(" ", words)) -' The example displays the following output: -' Hello and welcome to my world! -``` - -### 挿入 - -`String.Insert` メソッドは、別の文字列内の指定の位置に文字列を挿入することで、新しい文字列を作成します。 このメソッドは、0 から始まるインデックスを使用します。 次の例では、`MyString` の&5; 番目のインデックス位置に文字列を挿入し、この値を持つ新しい文字列を作成します。 - -```csharp -string sentence = "Once a time."; - Console.WriteLine(sentence.Insert(4, " upon")); - // The example displays the following output: - // Once upon a time. -``` - -```vb -Dim sentence As String = "Once a time." - Console.WriteLine(sentence.Insert(4, " upon")) - ' The example displays the -``` - -### CopyTo - -`String.CopyTo` メソッドは、文字配列に文字列の部分をコピーします。 文字列の開始インデックスと、コピーする文字数の両方を指定できます。 このメソッドは、ソース インデックス、文字配列、コピー先のインデックス、およびコピーする文字数を受け取ります。 すべてのインデックスは&0; から始まります。 - -次の例では、`CopyTo` メソッドを使用して、文字列オブジェクトから文字配列の最初のインデックス位置に、単語 "Hello" の文字をコピーします。 - -```csharp -string greeting = "Hello World!"; -char[] charArray = {'W','h','e','r','e'}; -Console.WriteLine("The original character array: {0}", new string(charArray)); -greeting.CopyTo(0, charArray,0 ,5); -Console.WriteLine("The new character array: {0}", new string(charArray)); -// The example displays the following output: -// The original character array: Where -// The new character array: Hello -``` - -```vb -Dim greeting As String = "Hello World!" -Dim charArray() As Char = {"W"c, "h"c, "e"c, "r"c, "e"c} -Console.WriteLine("The original character array: {0}", New String(charArray)) -greeting.CopyTo(0, charArray,0 ,5) -Console.WriteLine("The new character array: {0}", New String(charArray)) -' The example displays the following output: -' The original character array: Where -' The new character array: Hello -``` - -## 関連項目 - -[基本的な文字列操作](basic-string-operations.md) - -[複合書式指定](composite-format.md) - - +title: ".NET Framework における新しい文字列の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Concat メソッド" + - "CopyTo メソッド" + - "Format メソッド" + - "Insert メソッド" + - "Join メソッド" + - "文字列 [.NET Framework], 作成" +ms.assetid: 06fdf123-2fac-4459-8904-eb48ab908a30 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# .NET Framework における新しい文字列の作成 +[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では、簡単な代入を使用して文字列を作成できます。また、コンストラクターをオーバーロードして、多数のパラメーターを使用した文字列の作成をサポートすることもできます。 [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] にも、文字列、文字列配列、またはオブジェクトを結合して新しい文字列オブジェクトを作成するメソッドが クラスに用意されています。 + +## 代入を使用した文字列の作成 + 新しい オブジェクトを作成する最も簡単な方法は、単純にリテラル文字列を オブジェクトに割り当てることです。 + +## クラス コンストラクターを使用した文字列の作成 + クラス コンストラクターのオーバーロードを使用して、文字の配列から文字列を作成できます。 また、特定の文字を指定された数だけ複製して、新しい文字列を作成することもできます。 + +## 文字列を返すメソッド + 新しい文字列オブジェクトを返す、便利なメソッドの一覧を次の表に示します。 + +|メソッド名|使用方法| +|-----------|----------| +||一連の入力オブジェクトから、書式設定された文字列を作成します。| +||2 つ以上の文字列を連結して文字列を作成します。| +||文字列の配列を結合して新しい文字列を作成します。| +||既存の文字列内の指定したインデックス位置に文字列を挿入して、新しい文字列を作成します。| +||文字の配列内の指定した位置に、文字列内の指定した文字をコピーします。| + +### 書式 + **String.Format** メソッドを使用すると、書式指定された文字列を作成し、複数のオブジェクトを表す文字列を連結できます。 このメソッドは、渡された任意のオブジェクトを文字列に自動変換します。 たとえば、アプリケーションでユーザーに対して **Int32** 値と **DateTime** 値を表示する必要がある場合、これらの値を表す文字列を **Format** メソッドを使用して簡単に作成できます。 このメソッドで使用される書式指定規則の詳細については、[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)に関するセクションを参照してください。 + + **Format** メソッドを使用して、整数変数を使用する文字列を作成する例を次に示します。 + + [!code-csharp[Strings.Creating#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.Creating/cs/Example.cs#1)] + [!code-vb[Strings.Creating#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.Creating/vb/Example.vb#1)] + + この例では、 は現在のスレッドに関連付けられているカルチャで指定される形式で現在の日時を表示します。 + +### Concat + **String.Concat** メソッドを使用すると、2 つ以上の既存のオブジェクトを連結して新しい文字列オブジェクトを簡単に作成できます。 このメソッドは、言語に依存することなく文字列を連結します。 このメソッドは、**System.Object** クラスから派生したすべてのクラスを受け入れます。 既存の 2 つの文字列オブジェクトおよび区切り文字から文字列を作成する例を次に示します。 + + [!code-csharp[Strings.Creating#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.Creating/cs/Example.cs#2)] + [!code-vb[Strings.Creating#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.Creating/vb/Example.vb#2)] + +### Join + **String.Join** メソッドは、文字列の配列と区切り文字から新しい文字列を作成します。 このメソッドは、複数の文字列をコンマなどで区切って連結したリストを作成する場合に便利です。 + + 文字列の配列を空白で区切って連結する例を次に示します。 + + [!code-csharp[Strings.Creating#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.Creating/cs/Example.cs#3)] + [!code-vb[Strings.Creating#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.Creating/vb/Example.vb#3)] + +### 挿入 + **String.Insert** メソッドは、ある文字列を別の文字列内の指定した位置に挿入することによって新しい文字列を作成します。 このメソッドでは、0 から始まるインデックスが使用されます。 文字列を `MyString` 内の 5 番目のインデックス位置に挿入し、挿入した値を含む新しい文字列を作成する例を次に示します。 + + [!code-csharp[Strings.Creating#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.Creating/cs/Example.cs#4)] + [!code-vb[Strings.Creating#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.Creating/vb/Example.vb#4)] + +### CopyTo + **String.CopyTo** メソッドは、文字列の一部を文字配列にコピーします。 文字列のコピー開始位置を示すインデックスと、コピーする文字数の両方を指定できます。 このメソッドには、コピー元のインデックス、文字の配列、コピー先のインデックス、およびコピーする文字数を渡します。 すべてのインデックスは 0 から始まります。 + + **CopyTo** メソッドを使用して、文字列オブジェクトに含まれる単語 "Hello" を構成する文字を文字配列の 1 番目のインデックス位置にコピーする例を次に示します。 + + [!code-csharp[Strings.Creating#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Strings.Creating/cs/Example.cs#5)] + [!code-vb[Strings.Creating#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Strings.Creating/vb/Example.vb#5)] + +## 参照 + [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) + [複合書式指定](../../../docs/standard/base-types/composite-formatting.md) \ No newline at end of file diff --git a/docs/standard/base-types/custom-date-and-time-format-strings.md b/docs/standard/base-types/custom-date-and-time-format-strings.md new file mode 100644 index 00000000000..60846e42081 --- /dev/null +++ b/docs/standard/base-types/custom-date-and-time-format-strings.md @@ -0,0 +1,667 @@ +--- +title: "カスタム日時書式指定文字列 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "カスタムの日付と時刻の書式指定文字列" + - "カスタムの DateTime の書式指定文字列" + - "書式指定子, カスタムの日付と時刻" + - "書式指定文字列" + - "書式指定 [.NET Framework], 日付" + - "書式指定 [.NET Framework], 時間" +ms.assetid: 98b374e3-0cc2-4c78-ab44-efb671d71984 +caps.latest.revision: 79 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 77 +--- +# カスタム日時書式指定文字列 +日時書式指定文字列は、 値または 値の書式設定操作によって生成されるテキスト表現を定義します。 また、文字列を日時に正常に変換するために解析操作で必要となる日時値の表現も定義します。 カスタム書式指定文字列は、1 つ以上のカスタム日時書式指定子で構成されます。[標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)以外の文字列は、すべてカスタム日時書式指定文字列として解釈されます。 + + カスタム日時書式指定文字列は、 値で使用することも、 値で使用することもできます。 + +> [!TIP] +> [書式設定ユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Formatting-9c4dae8d)をダウンロードできます。このアプリケーションを使用すると、書式指定文字列を日付と時刻の値または数値に適用して、結果の文字列を表示できます。 + + 書式設定操作では、日時インスタンスの `ToString` メソッドまたは複合書式指定をサポートするメソッドで、カスタム日時書式指定文字列を使用できます。 両方の使用例を次に示します。 + + [!code-csharp[Formatting.DateAndTime.Custom#17](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/custandformatting1.cs#17)] + [!code-vb[Formatting.DateAndTime.Custom#17](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/custandformatting1.vb#17)] + + 解析操作では、、および の各メソッドで、カスタム日時書式指定文字列を使用できます。 これらのメソッドでは、解析操作が成功するための特定のパターンに入力文字列が完全に一致している必要があります。 日付に日、月、2 桁の年が含まれているかどうかを解析する メソッドを呼び出す例を次に示します。 + + [!code-csharp[Formatting.DateAndTime.Custom#18](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/custandparsing1.cs#18)] + [!code-vb[Formatting.DateAndTime.Custom#18](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/custandparsing1.vb#18)] + + 次の表に、カスタム日時書式指定子の説明および書式指定子ごとの書式設定後の文字列を示します。 既定では、結果の文字列は、en\-US カルチャの書式指定規則を反映します。 特定の書式指定子でローカライズされた文字列が書式設定後に生成される場合、例には書式設定後の文字列が適用されるカルチャも示されます。 カスタム日時書式指定文字列の使用方法については、「メモ」を参照してください。 + +|書式指定子|説明|例| +|-----------|--------|-------| +|"d"|月の日にち \(1 ~ 31\)。

詳細については、「["d" カスタム書式指定子](#dSpecifier)」を参照してください。|2009\-06\-01T13:45:30 \-\> 1

2009\-06\-15T13:45:30 \-\> 15| +|"dd"|月の日にち \(01 ~ 31\)。

詳細については、「["dd" カスタム書式指定子](#ddSpecifier)」を参照してください。|2009\-06\-01T13:45:30 \-\> 01

2009\-06\-15T13:45:30 \-\> 15| +|"ddd"|曜日の省略名。

詳細については、「["ddd" カスタム書式指定子](#dddSpecifier)」を参照してください。|2009\-06\-15T13:45:30 \-\> Mon \(en\-US\)

2009\-06\-15T13:45:30 \-\> Пн \(ru\-RU\)

2009\-06\-15T13:45:30 \-\> lun. \(fr\-FR\)| +|"dddd"|曜日の完全名。

詳細については、「["dddd" カスタム書式指定子](#ddddSpecifier)」を参照してください。|2009\-06\-15T13:45:30 \-\> Monday \(en\-US\)

2009\-06\-15T13:45:30 \-\> понедельник \(ru\-RU\)

2009\-06\-15T13:45:30 \-\> lundi \(fr\-FR\)| +|"f"|日時値の秒部分の 1\/10。

詳細については、「["f" カスタム書式指定子](#fSpecifier)」を参照してください。|2009\-06\-15T13:45:30.6170000 \-\> 6

2009\-06\-15T13:45:30.05 \-\> 0| +|"ff"|日時値の秒部分の 1\/100。

詳細については、「["ff" カスタム書式指定子](#ffSpecifier)」を参照してください。|2009\-06\-15T13:45:30.6170000 \-\> 61

2009\-06\-15T13:45:30.0050000 \-\> 00| +|"fff"|日時値の秒部分の 1\/1000。

詳細については、「["fff" カスタム書式指定子](#fffSpecifier)」を参照してください。|6\/15\/2009 13:45:30.617 \-\> 617

6\/15\/2009 13:45:30.0005 \-\> 000| +|"ffff"|日時値の秒部分の 1\/10000。

詳細については、「["ffff" カスタム書式指定子](#ffffSpecifier)」を参照してください。|2009\-06\-15T13:45:30.6175000 \-\> 6175

2009\-06\-15T13:45:30.0000500 \-\> 0000| +|"fffff"|日時値の秒部分の 1\/100000。

詳細については、「["fffff" カスタム書式指定子](#fffffSpecifier)」を参照してください。|2009\-06\-15T13:45:30.6175400 \-\> 61754

6\/15\/2009 13:45:30.000005 \-\> 00000| +|"ffffff"|日時値の秒部分の 1\/1000000。

詳細については、「["ffffff" カスタム書式指定子](#ffffffSpecifier)」を参照してください。|2009\-06\-15T13:45:30.6175420 \-\> 617542

2009\-06\-15T13:45:30.0000005 \-\> 000000| +|"fffffff"|日時値の秒部分の 1\/10000000。

詳細については、「["fffffff" カスタム書式指定子](#fffffffSpecifier)」を参照してください。|2009\-06\-15T13:45:30.6175425 \-\> 6175425

2009\-06\-15T13:45:30.0001150 \-\> 0001150| +|"F"|日時値の秒部分の 1\/10 \(0 以外の場合\)。

詳細については、「["F" カスタム書式指定子](#F_Specifier)」を参照してください。|2009\-06\-15T13:45:30.6170000 \-\> 6

2009\-06\-15T13:45:30.0500000 \-\> \(no output\)| +|"FF"|日時値の秒部分の 1\/100 \(0 以外の場合\)。

詳細については、「["FF" カスタム書式指定子](#FF_Specifier)」を参照してください。|2009\-06\-15T13:45:30.6170000 \-\> 61

2009\-06\-15T13:45:30.0050000 \-\> \(no output\)| +|"FFF"|日時値の秒部分の 1\/1000 \(0 以外の場合\)。

詳細については、「["FFF" カスタム書式指定子](#FFF_Specifier)」を参照してください。|2009\-06\-15T13:45:30.6170000 \-\> 617

2009\-06\-15T13:45:30.0005000 \-\> \(no output\)| +|"FFFF"|日時値の秒部分の 1\/10000 \(0 以外の場合\)。

詳細については、「["FFFF" カスタム書式指定子](#FFFF_Specifier)」を参照してください。|2009\-06\-15T13:45:30.5275000 \-\> 5275

2009\-06\-15T13:45:30.0000500 \-\> \(no output\)| +|"FFFFF"|日時値の秒部分の 1\/100000 \(0 以外の場合\)。

詳細については、「["FFFFF" カスタム書式指定子](#FFFFF_Specifier)」を参照してください。|2009\-06\-15T13:45:30.6175400 \-\> 61754

2009\-06\-15T13:45:30.0000050 \-\> \(no output\)| +|"FFFFFF"|日時値の秒部分の 1\/1000000 \(0 以外の場合\)。

詳細については、「["FFFFFF" カスタム書式指定子](#FFFFFF_Specifier)」を参照してください。|2009\-06\-15T13:45:30.6175420 \-\> 617542

2009\-06\-15T13:45:30.0000005 \-\> \(no output\)| +|"FFFFFFF"|日時値の秒部分の 1\/10000000 \(0 以外の場合\)。

詳細については、「["FFFFFFF" カスタム書式指定子](#FFFFFFF_Specifier)」を参照してください。|2009\-06\-15T13:45:30.6175425 \-\> 6175425

2009\-06\-15T13:45:30.0001150 \-\> 000115| +|"g"、"gg"|時期または時代 \(年号\)。

詳細については、「["g" または "gg" カスタム書式指定子](#gSpecifier)」を参照してください。|2009\-06\-15T13:45:30.6170000 \-\> A.D.| +|"h"|12 時間形式の時間 \(1 ~ 12\)。

詳細については、「["h" カスタム書式指定子](#hSpecifier)」を参照してください。|2009\-06\-15T01:45:30 \-\> 1

2009\-06\-15T13:45:30 \-\> 1| +|"hh"|12 時間形式の時間 \(01 ~ 12\)。

詳細については、「["hh" カスタム書式指定子](#hhSpecifier)」を参照してください。|2009\-06\-15T01:45:30 \-\> 01

2009\-06\-15T13:45:30 \-\> 01| +|"H"|24 時間形式の時間 \(0 ~ 23\)。

詳細については、「["H" カスタム書式指定子](#H_Specifier)」を参照してください。|2009\-06\-15T01:45:30 \-\> 1

2009\-06\-15T13:45:30 \-\> 13| +|"HH"|24 時間形式の時間 \(00 ~ 23\)。

詳細については、「["HH" カスタム書式指定子](#HH_Specifier)」を参照してください。|2009\-06\-15T01:45:30 \-\> 01

2009\-06\-15T13:45:30 \-\> 13| +|"K"|タイム ゾーン情報。

詳細については、「["K" カスタム書式指定子](#KSpecifier)」を参照してください。| 値の場合:

2009\-06\-15T13:45:30, Kind Unspecified \-\>

2009\-06\-15T13:45:30, Kind Utc \-\> Z

2009\-06\-15T13:45:30, Kind Local \-\> \-07:00 \(depends on local computer settings\)

値の場合:

2009\-06\-15T01:45:30\-07:00 \-\-\> \-07:00

2009\-06\-15T08:45:30\+00:00 \-\-\> \+00:00| +|"m"|分 \(0 ~ 59\)。

詳細については、「["m" カスタム書式指定子](#mSpecifier)」を参照してください。|2009\-06\-15T01:09:30 \-\> 9

2009\-06\-15T13:29:30 \-\> 29| +|"mm"|分 \(00 ~ 59\)。

詳細については、「["mm" カスタム書式指定子](#mmSpecifier)」を参照してください。|2009\-06\-15T01:09:30 \-\> 09

2009\-06\-15T01:45:30 \-\> 45| +|"M"|月 \(1 ~ 12\)。

詳細については、「["M" カスタム書式指定子](#M_Specifier)」を参照してください。|2009\-06\-15T13:45:30 \-\> 6| +|"MM"|月 \(01 ~ 12\)。

詳細については、「["MM" カスタム書式指定子](#MM_Specifier)」を参照してください。|2009\-06\-15T13:45:30 \-\> 06| +|"MMM"|月の省略名。

詳細については、「["MMM" カスタム書式指定子](#MMM_Specifier)」を参照してください。|2009\-06\-15T13:45:30 \-\> Jun \(en\-US\)

2009\-06\-15T13:45:30 \-\> juin \(fr\-FR\)

2009\-06\-15T13:45:30 \-\> Jun \(zu\-ZA\)| +|"MMMM"|月の完全名。

詳細については、「["MMMM" カスタム書式指定子](#MMMM_Specifier)」を参照してください。|2009\-06\-15T13:45:30 \-\> June \(en\-US\)

2009\-06\-15T13:45:30 \-\> juni \(da\-DK\)

2009\-06\-15T13:45:30 \-\> uJuni \(zu\-ZA\)| +|"s"|秒 \(0 ~ 59\)。

詳細については、「["s" カスタム書式指定子](#sSpecifier)」を参照してください。|2009\-06\-15T13:45:09 \-\> 9| +|"ss"|秒 \(00 ~ 59\)。

詳細については、「["ss" カスタム書式指定子](#ssSpecifier)」を参照してください。|2009\-06\-15T13:45:09 \-\> 09| +|"t"|AM\/PM 指定子の最初の文字。

詳細については、「["t" カスタム書式指定子](#tSpecifier)」を参照してください。|2009\-06\-15T13:45:30 \-\> P \(en\-US\)

2009\-06\-15T13:45:30 \-\> 午 \(ja\-JP\)

2009\-06\-15T13:45:30 \-\> \(fr\-FR\)| +|"tt"|AM\/PM 指定子。

詳細については、「["tt" カスタム書式指定子](#ttSpecifier)」を参照してください。|2009\-06\-15T13:45:30 \-\> PM \(en\-US\)

2009\-06\-15T13:45:30 \-\> 午後 \(ja\-JP\)

2009\-06\-15T13:45:30 \-\> \(fr\-FR\)| +|"y"|年 \(0 ~ 99\)。

詳細については、「["y" カスタム書式指定子](#ySpecifier)」を参照してください。|0001\-01\-01T00:00:00 \-\> 1

0900\-01\-01T00:00:00 \-\> 0

1900\-01\-01T00:00:00 \-\> 0

2009\-06\-15T13:45:30 \-\> 9

2019\-06\-15T13:45:30 \-\> 19| +|"yy"|年 \(00 ~ 99\)。

詳細については、「["yy" カスタム書式指定子](#yySpecifier)」を参照してください。|0001\-01\-01T00:00:00 \-\> 01

0900\-01\-01T00:00:00 \-\> 00

1900\-01\-01T00:00:00 \-\> 00

2019\-06\-15T13:45:30 \-\> 19| +|"yyy"|年 \(3 桁以上\)。

詳細については、「["yyy" カスタム書式指定子](#yyySpecifier)」を参照してください。|0001\-01\-01T00:00:00 \-\> 001

0900\-01\-01T00:00:00 \-\> 900

1900\-01\-01T00:00:00 \-\> 1900

2009\-06\-15T13:45:30 \-\> 2009| +|"yyyy"|年 \(4 桁の数値\)。

詳細については、「["yyyy" カスタム書式指定子](#yyyySpecifier)」を参照してください。|0001\-01\-01T00:00:00 \-\> 0001

0900\-01\-01T00:00:00 \-\> 0900

1900\-01\-01T00:00:00 \-\> 1900

2009\-06\-15T13:45:30 \-\> 2009| +|"yyyyy"|年 \(5 桁の数値\)。

詳細については、「["yyyyy" カスタム書式指定子](#yyyyySpecifier)」を参照してください。|0001\-01\-01T00:00:00 \-\> 00001

2009\-06\-15T13:45:30 \-\> 02009| +|"z"|UTC を基準とする時間単位のオフセット \(先行ゼロなし\)。

詳細については、「["z" カスタム書式指定子](#zSpecifier)」を参照してください。|2009\-06\-15T13:45:30\-07:00 \-\> \-7| +|"zz"|UTC を基準とする時間単位のオフセット \(先行ゼロ付きの 1 桁の値\)。

詳細については、「["zz" カスタム書式指定子](#zzSpecifier)」を参照してください。|2009\-06\-15T13:45:30\-07:00 \-\> \-07| +|"zzz"|UTC を基準とする時間および分単位のオフセット。

詳細については、「["zzz" カスタム書式指定子](#zzzSpecifier)」を参照してください。|2009\-06\-15T13:45:30\-07:00 \-\> \-07:00| +|":"|時刻の区切り記号。

詳細については、「[":" カスタム書式指定子](#timeSeparator)」を参照してください。|2009\-06\-15T13:45:30 \-\> : \(en\-US\)

2009\-06\-15T13:45:30 \-\> . \(it\-IT\)

2009\-06\-15T13:45:30 \-\> : \(ja\-JP\)| +|"\/"|日付の区切り記号。

詳細については、「["\/" カスタム書式指定子](#dateSeparator)」を参照してください。|2009\-06\-15T13:45:30 \-\> \/ \(en\-US\)

2009\-06\-15T13:45:30 \-\> \- \(ar\-DZ\)

2009\-06\-15T13:45:30 \-\> . \(tr\-TR\)| +|"*文字列*"

'*文字列*'|リテラル文字列の区切り記号。|2009\-06\-15T13:45:30 \("arr:" h:m t\) \-\> arr: 1:45 P

2009\-06\-15T13:45:30 \('arr:' h:m t\) \-\> arr: 1:45 P| +|%|後続の文字をカスタム書式指定子として定義します。

詳細については、「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。|2009\-06\-15T13:45:30 \(%h\) \-\> 1| +|\\|エスケープ文字。|2009\-06\-15T13:45:30 \(h \\h\) \-\> 1 h| +|その他の文字|文字が結果の文字列にそのままコピーされます。

詳細については、「[エスケープ文字の使用](#escape)」を参照してください。|2009\-06\-15T01:45:30 \(arr hh:mm t\) \-\> arr 01:45 A| + + 以降では、それぞれのカスタム日時書式指定子について詳しく説明します。 特に明記されない限り、各指定子は、 値で使用しても、 値で使用してもまったく同じ文字列形式を生成します。 + + +## "d" カスタム書式指定子 + "d" カスタム書式指定子は、月の日にちを 1 ~ 31 の数値として表します。 1 桁の日にちは、先行ゼロなしで書式設定されます。 + + "d" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"d" は標準の日時書式指定子として解釈されます。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、複数の書式指定文字列の中に "d" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#1)] + [!code-vb[Formatting.DateAndTime.Custom#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#1)] + + [表のトップへ](#table) + + +## "dd" カスタム書式指定子 + "dd" カスタム書式指定文字列は、月の日にちを 01 ~ 31 の数値として表します。 1 桁の日にちは、先行ゼロ付きで書式設定されます。 + + 次の例では、カスタム書式指定文字列の中に "dd" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#2)] + [!code-vb[Formatting.DateAndTime.Custom#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#2)] + + [表のトップへ](#table) + + +## "ddd" カスタム書式指定子 + "ddd" カスタム書式指定子は、曜日の省略名を表します。 曜日のローカライズされた省略名は、現在のカルチャまたは特定のカルチャの プロパティから取得されます。 + + 次の例では、カスタム書式指定文字列の中に "ddd" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#3)] + [!code-vb[Formatting.DateAndTime.Custom#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#3)] + + [表のトップへ](#table) + + +## "dddd" カスタム書式指定子 + "dddd" カスタム書式指定子 \(任意の数の "d" 指定子を追加可能\) は、曜日の完全名を表します。 曜日のローカライズされた名前は、現在のカルチャまたは特定のカルチャの プロパティから取得されます。 + + 次の例では、カスタム書式指定文字列の中に "dddd" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#4)] + [!code-vb[Formatting.DateAndTime.Custom#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#4)] + + [表のトップへ](#table) + + +## "f" カスタム書式指定子 + "f" カスタム書式指定子は、秒の端数の最上位桁 \(つまり、日時値の秒部分の 1\/10\) を表します。 + + "f" 書式指定子が単独で使用され、その他の書式指定子がない場合、"f" は標準の日時書式指定子として解釈されます。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + のいずれかのメソッドに渡す書式指定文字列の一部として "f" 書式指定子を使用する場合、"f" 書式指定子の数は、文字列を正しく解析するために、秒の端数の最上位桁数が何桁存在している必要があるかを表します。 + + 次の例では、カスタム書式指定文字列の中に "f" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#5)] + [!code-vb[Formatting.DateAndTime.Custom#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#5)] + + [表のトップへ](#table) + + +## "ff" カスタム書式指定子 + "ff" カスタム書式指定子は、秒の端数の最上位 2 桁 \(つまり、日時値の秒部分の 1\/100\) を表します。 + + 次の例では、カスタム書式指定文字列の中に "ff" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#5)] + [!code-vb[Formatting.DateAndTime.Custom#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#5)] + + [表のトップへ](#table) + + +## "fff" カスタム書式指定子 + "fff" カスタム書式指定子は、秒の端数の最上位 3 桁 \(つまり、日時値の秒部分の 1\/1000\) を表します。 + + 次の例では、カスタム書式指定文字列の中に "fff" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#5)] + [!code-vb[Formatting.DateAndTime.Custom#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#5)] + + [表のトップへ](#table) + + +## "ffff" カスタム書式指定子 + "ffff" カスタム書式指定子は、秒の端数の最上位 4 桁 \(つまり、日時値の秒部分の 1\/10000\) を表します。 + + 時刻値の 1\/10000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。 日付および時刻の値の精度は、システム クロックの分解能に依存します。 Windows NT Version 3.5 \(およびそれ以降\) および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。 + + [表のトップへ](#table) + + +## "fffff" カスタム書式指定子 + "fffff" カスタム書式指定子は、秒の端数の最上位 5 桁 \(つまり、日時値の秒部分の 1\/100000\) を表します。 + + 時刻値の 1\/100000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。 日付および時刻の値の精度は、システム クロックの分解能に依存します。 Windows NT 3.5 \(およびそれ以降\) および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。 + + [表のトップへ](#table) + + +## "ffffff" カスタム書式指定子 + "ffffff" カスタム書式指定子は、秒の端数の最上位 6 桁 \(つまり、日時値の秒部分の 1\/1000000\) を表します。 + + 時刻値の 1\/1000000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。 日付および時刻の値の精度は、システム クロックの分解能に依存します。 Windows NT 3.5 \(およびそれ以降\) および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。 + + [表のトップへ](#table) + + +## "fffffff" カスタム書式指定子 + "fffffff" カスタム書式指定子は、秒の端数の最上位 7 桁 \(つまり、日時値の秒部分の 1\/10000000\) を表します。 + + 時刻値の 1\/10000000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。 日付および時刻の値の精度は、システム クロックの分解能に依存します。 Windows NT 3.5 \(およびそれ以降\) および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。 + + [表のトップへ](#table) + + +## "F" カスタム書式指定子 + "F" カスタム書式指定子は、秒の端数の最上位桁 \(つまり、日時値の秒部分の 1\/10\) を表します。 その桁がゼロの場合には、何も表示されません。 + + "F" 書式指定子が単独で使用され、その他の書式指定子がない場合、"F" は標準の日時書式指定子として解釈されます。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + のいずれかのメソッドの引数として使用された場合、"F" 書式指定子の数は、文字列を正しく解析するために、秒の端数の最上位桁数が最大何桁存在している必要があるかを表します。 + + 次の例では、カスタム書式指定文字列の中に "F" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#5)] + [!code-vb[Formatting.DateAndTime.Custom#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#5)] + + [表のトップへ](#table) + + +## "FF" カスタム書式指定子 + "FF" カスタム書式指定子は、秒の端数の最上位 2 桁 \(つまり、日時値の秒部分の 1\/100\) を表します。 ただし、後続のゼロは表示されません。また、2 桁のゼロも表示されません。 + + 次の例では、カスタム書式指定文字列の中に "FF" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#5)] + [!code-vb[Formatting.DateAndTime.Custom#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#5)] + + [表のトップへ](#table) + + +## "FFF" カスタム書式指定子 + "FFF" カスタム書式指定子は、秒の端数の最上位 3 桁 \(つまり、日時値の秒部分の 1\/1000\) を表します。 ただし、後続のゼロは表示されません。また、3 桁のゼロも表示されません。 + + 次の例では、カスタム書式指定文字列の中に "FFF" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#5)] + [!code-vb[Formatting.DateAndTime.Custom#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#5)] + + [表のトップへ](#table) + + +## "FFFF" カスタム書式指定子 + "FFFF" カスタム書式指定子は、秒の端数の最上位 4 桁 \(つまり、日時値の秒部分の 1\/10000\) を表します。 ただし、後続のゼロは表示されません。また、4 桁のゼロも表示されません。 + + 時刻値の 1\/10000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。 日付および時刻の値の精度は、システム クロックの分解能に依存します。 Windows NT 3.5 \(およびそれ以降\) および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。 + + [表のトップへ](#table) + + +## "FFFFF" カスタム書式指定子 + "FFFFF" カスタム書式指定子は、秒の端数の最上位 5 桁 \(つまり、日時値の秒部分の 1\/100000\) を表します。 ただし、後続のゼロは表示されません。また、5 桁のゼロも表示されません。 + + 時刻値の 1\/100000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。 日付および時刻の値の精度は、システム クロックの分解能に依存します。 Windows NT 3.5 \(およびそれ以降\) および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。 + + [表のトップへ](#table) + + +## "FFFFFF" カスタム書式指定子 + "FFFFFF" カスタム書式指定子は、秒の端数の最上位 6 桁 \(つまり、日時値の秒部分の 1\/1000000\) を表します。 ただし、後続のゼロは表示されません。また、6 桁のゼロも表示されません。 + + 時刻値の 1\/1000000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。 日付および時刻の値の精度は、システム クロックの分解能に依存します。 Windows NT 3.5 \(およびそれ以降\) および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。 + + [表のトップへ](#table) + + +## "FFFFFFF" カスタム書式指定子 + "FFFFFFF" カスタム書式指定子は、秒の端数の最上位 7 桁 \(つまり、日時値の秒部分の 1\/10000000\) を表します。 ただし、後続のゼロは表示されません。また、7 桁のゼロも表示されません。 + + 時刻値の 1\/10000000 秒要素を表示することもできますが、このような値は意味を持たない場合があります。 日付および時刻の値の精度は、システム クロックの分解能に依存します。 Windows NT 3.5 \(およびそれ以降\) および Windows Vista オペレーティング システムでは、システム時計の解像力は約 10 ~ 15 ミリ秒です。 + + [表のトップへ](#table) + + +## "g" または "gg" カスタム書式指定子 + "g" または "gg" カスタム書式指定子 \(任意の数の "g" 指定子を追加可能\) は、A.D. などの時期または時代 \(年号\) を表します。書式設定される日付に時期または時代 \(年号\) の文字列が関連付けられていない場合、この指定子は無視されます。 + + "g" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"g" は標準の日時書式指定子として解釈されます。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、カスタム書式指定文字列の中に "g" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#6](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#6)] + [!code-vb[Formatting.DateAndTime.Custom#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#6)] + + [表のトップへ](#table) + + +## "h" カスタム書式指定子 + "h" カスタム書式指定子は、時間を 1 ~ 12 の数値として表します。つまり、午前 0 時と午後 0 時から時間をカウントする 12 時間制で時間が表されます。 午前 0 時からの特定の時間を、午後 0 時からの同じ時間と区別できません。 時間は丸められず、1 桁の時間は先行ゼロなしで書式設定されます。 たとえば、午前と午後の 5:43 という時間は、このカスタム書式指定子によって "5" と表示されます。 + + "h" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"h" は標準の日時書式指定子として解釈され、 をスローします。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、カスタム書式指定文字列の中に "h" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#7)] + [!code-vb[Formatting.DateAndTime.Custom#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#7)] + + [表のトップへ](#table) + + +## "hh" カスタム書式指定子 + "hh" カスタム書式指定子 \(任意の数の "h" 指定子を追加可能\) は、時間を 1 ~ 12 の数値として表します。つまり、午前 0 時と午後 0 時から時間をカウントする 12 時間制で時間が表されます。 午前 0 時からの特定の時間を、午後 0 時からの同じ時間と区別できません。 時間は丸められず、1 桁の時間は先行ゼロ付きで書式設定されます。 たとえば、午前と午後の 5:43 という時間は、この書式指定子によって "05" と表示されます。 + + 次の例では、カスタム書式指定文字列の中に "hh" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#8)] + [!code-vb[Formatting.DateAndTime.Custom#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#8)] + + [表のトップへ](#table) + + +## "H" カスタム書式指定子 + "H" カスタム書式指定子は、時間を 0 ~ 23 の数値として表します。つまり、午前 0 時から時間をカウントする 24 時間制で時間が表されます。 1 桁の時間は、先行ゼロなしで書式設定されます。 + + "H" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"H" は標準の日時書式指定子として解釈され、 をスローします。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、カスタム書式指定文字列の中に "H" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#9](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#9)] + [!code-vb[Formatting.DateAndTime.Custom#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#9)] + + [表のトップへ](#table) + + +## "HH" カスタム書式指定子 + "HH" カスタム書式指定子 \(任意の数の "H" 指定子を追加可能\) は、時間を 00 ~ 23 の数値として表します。つまり、午前 0 時から時間をカウントする 24 時間制で時間が表されます。 1 桁の時間は、先行ゼロ付きで書式設定されます。 + + 次の例では、カスタム書式指定文字列の中に "HH" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#10](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#10)] + [!code-vb[Formatting.DateAndTime.Custom#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#10)] + + [表のトップへ](#table) + + +## "K" カスタム書式指定子 + "K" カスタム書式指定子は、日付と時刻の値のタイム ゾーン情報を表します。 この書式指定子を 値で使用した場合、書式設定後の文字列は、 プロパティの値によって定義されます。 + +- ローカル タイム ゾーンの場合 \( プロパティ値 \= \)、この指定子は "zzz" 指定子に相当し、書式設定後の文字列には世界協定時刻 \(UTC: Coordinated Universal Time\) からのローカル オフセットが含まれます \("\-07:00" など\)。 + +- UTC 時刻の場合 \( プロパティ値 \= \)、書式設定後の文字列には UTC 日付を表す "Z" 文字が含まれます。 + +- タイム ゾーンが指定されていない時刻の場合 \( プロパティ \= \)、 と同じ結果になります。 + + "K" 書式指定子を 値で使用した場合、この指定子は "zz" 書式指定子に相当し、書式設定後の文字列には 値の UTC を基準としたオフセットが含まれます。 + + "K" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"K" は標準の日時書式指定子として解釈され、 をスローします。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、米国太平洋標準時タイム ゾーンのシステムで、"K" カスタム書式指定子と各種の 値および 値を組み合わせた結果の文字列を表示します。 + + [!code-csharp[Formatting.DateAndTime.Custom#12](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#12)] + [!code-vb[Formatting.DateAndTime.Custom#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#12)] + + [表のトップへ](#table) + + +## "m" カスタム書式指定子 + "m" カスタム書式指定子は、分を 0 ~ 59 の数値として表します。 この分は、直前の時間から経過した分数です。 1 桁の分は、先行ゼロなしで書式設定されます。 + + "m" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"m" は標準の日時書式指定子として解釈されます。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、カスタム書式指定文字列の中に "m" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#7)] + [!code-vb[Formatting.DateAndTime.Custom#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#7)] + + [表のトップへ](#table) + + +## "mm" カスタム書式指定子 + "mm" カスタム書式指定子 \(任意の数の "m" 指定子を追加可能\) は、分を 00 ~ 59 の数値として表します。 この分は、直前の時間から経過した分数です。 1 桁の分は、先行ゼロ付きで書式設定されます。 + + 次の例では、カスタム書式指定文字列の中に "mm" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#8)] + [!code-vb[Formatting.DateAndTime.Custom#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#8)] + + [表のトップへ](#table) + + +## "M" カスタム書式指定子 + "M" カスタム書式指定子は、月を 1 ~ 12 \(13 の月がある暦の場合は 1 ~ 13\) の数値として表します。 1 桁の月は、先行ゼロなしで書式設定されます。 + + "M" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"M" は標準の日時書式指定子として解釈されます。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、カスタム書式指定文字列の中に "M" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#11](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#11)] + [!code-vb[Formatting.DateAndTime.Custom#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#11)] + + [表のトップへ](#table) + + +## "MM" カスタム書式指定子 + "MM" カスタム書式指定子は、月を 01 ~ 12 \(13 の月がある暦の場合は 1 ~ 13\) の数値として表します。 1 桁の月は、先行ゼロ付きで書式設定されます。 + + 次の例では、カスタム書式指定文字列の中に "MM" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#2)] + [!code-vb[Formatting.DateAndTime.Custom#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#2)] + + [表のトップへ](#table) + + +## "MMM" カスタム書式指定子 + "MMM" カスタム書式指定子は、月の省略名を表します。 月のローカライズされた省略名は、現在のカルチャまたは特定のカルチャの プロパティから取得されます。 + + 次の例では、カスタム書式指定文字列の中に "MMM" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#3)] + [!code-vb[Formatting.DateAndTime.Custom#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#3)] + + [表のトップへ](#table) + + +## "MMMM" カスタム書式指定子 + "MMMM" カスタム書式指定子は、月の完全名を表します。 月のローカライズされた名前は、現在のカルチャまたは特定のカルチャの プロパティから取得されます。 + + 次の例では、カスタム書式指定文字列の中に "MMMM" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#4)] + [!code-vb[Formatting.DateAndTime.Custom#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#4)] + + [表のトップへ](#table) + + +## "s" カスタム書式指定子 + "s" カスタム書式指定子は、秒を 0 ~ 59 の数値として表します。 この秒は、直前の分から経過した秒数です。 1 桁の秒は、先行ゼロなしで書式設定されます。 + + "s" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"s" は標準の日時書式指定子として解釈されます。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、カスタム書式指定文字列の中に "s" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#7)] + [!code-vb[Formatting.DateAndTime.Custom#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#7)] + + [表のトップへ](#table) + + +## "ss" カスタム書式指定子 + "ss" カスタム書式指定子 \(任意の数の "s" 指定子を追加可能\) は、秒を 00 ~ 59 の数値として表します。 この秒は、直前の分から経過した秒数です。 1 桁の秒は、先行ゼロ付きで書式設定されます。 + + 次の例では、カスタム書式指定文字列の中に "ss" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#8)] + [!code-vb[Formatting.DateAndTime.Custom#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#8)] + + [表のトップへ](#table) + + +## "t" カスタム書式指定子 + "t" カスタム書式指定子は、AM\/PM 指定子の最初の文字を表します。 ローカライズされた適切な指定子は、現在のカルチャまたは特定のカルチャの プロパティまたは プロパティから取得されます。 AM 指定子は、0:00:00 \(午前 0 時\) から 11:59:59.999 までのすべての時刻に使用されます。 PM 指定子は、12:00:00 \(正午\) から 23:59:59.999 までのすべての時刻に使用されます。 + + "t" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"t" は標準の日時書式指定子として解釈されます。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、カスタム書式指定文字列の中に "t" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#7)] + [!code-vb[Formatting.DateAndTime.Custom#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#7)] + + [表のトップへ](#table) + + +## "tt" カスタム書式指定子 + "tt" カスタム書式指定子 \(任意の数の "t" 指定子を追加可能\) は、AM\/PM 指定子全体を表します。 ローカライズされた適切な指定子は、現在のカルチャまたは特定のカルチャの プロパティまたは プロパティから取得されます。 AM 指定子は、0:00:00 \(午前 0 時\) から 11:59:59.999 までのすべての時刻に使用されます。 PM 指定子は、12:00:00 \(正午\) から 23:59:59.999 までのすべての時刻に使用されます。 + + AM と PM を区別する必要のある言語の場合、必ず "tt" 指定子を使用する必要があります。 たとえば、日本語の場合、AM\/PM 指定子の 2 番目の文字は異なりますが、先頭文字は同じです。 + + 次の例では、カスタム書式指定文字列の中に "tt" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#8)] + [!code-vb[Formatting.DateAndTime.Custom#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#8)] + + [表のトップへ](#table) + + +## "y" カスタム書式指定子 + "y" カスタム書式指定子は、年を 1 桁または 2 桁の数値として表します。 年が 2 桁を超える場合は、下 2 桁のみが結果に表示されます。 2 桁の年の 1 桁目がゼロで始まる場合 \(2008 など\)、先行ゼロが省略されます。 + + "y" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"y" は標準の日時書式指定子として解釈されます。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、カスタム書式指定文字列の中に "y" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#13](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#13)] + [!code-vb[Formatting.DateAndTime.Custom#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#13)] + + [表のトップへ](#table) + + +## "yy" カスタム書式指定子 + "yy" カスタム書式指定子は、年を 2 桁の数値として表します。 年が 2 桁を超える場合は、下 2 桁のみが結果に表示されます。 年が 2 桁に満たない場合は、2 桁になるまで数値が先行ゼロで埋められます。 + + 解析操作では、"yy" カスタム形式指定子を使用した 2 桁の年は、書式プロバイダーの現在のカレンダーの プロパティに基づいて解釈されます。 次の例は、このケースでは現在のカルチャである en\-US カルチャの既定のグレゴリオ暦を使用して、2 桁の年を持つ日付の文字列形式を解析します。 次に、 プロパティが変更された オブジェクトが使用されるように、現在のカルチャの オブジェクトを変更します。 + + [!code-csharp[Formatting.DateAndTime.Custom#19](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/parseexact2digityear1.cs#19)] + [!code-vb[Formatting.DateAndTime.Custom#19](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/parseexact2digityear1.vb#19)] + + 次の例では、カスタム書式指定文字列の中に "yy" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#13](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#13)] + [!code-vb[Formatting.DateAndTime.Custom#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#13)] + + [表のトップへ](#table) + + +## "yyy" カスタム書式指定子 + "yyy" カスタム書式指定子は、年を 3 桁以上で表します。 年が 3 桁を超える場合は、それらの数字も結果に含まれます。 年が 3 桁に満たない場合は、3 桁になるまで数値が先行ゼロで埋められます。 + +> [!NOTE] +> 年が 5 桁になることがあるタイ仏暦については、この書式指定子ですべての有効桁が表示されます。 + + 次の例では、カスタム書式指定文字列の中に "yyy" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#13](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#13)] + [!code-vb[Formatting.DateAndTime.Custom#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#13)] + + [表のトップへ](#table) + + +## "yyyy" カスタム書式指定子 + "yyyy" カスタム書式指定子は、年を 4 桁以上で表します。 年が 4 桁を超える場合は、それらの数字も結果に含まれます。 年が 4 桁に満たない場合は、4 桁になるまで数値が先行ゼロで埋められます。 + +> [!NOTE] +> 年が 5 桁になることがあるタイ仏暦については、この書式指定子で 4 桁以上が表示されます。 + + 次の例では、カスタム書式指定文字列の中に "yyyy" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#13](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#13)] + [!code-vb[Formatting.DateAndTime.Custom#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#13)] + + [表のトップへ](#table) + + +## "yyyyy" カスタム書式指定子 + "yyyyy" カスタム書式指定子 \(任意の数の "y" 指定子を追加可能\) は、年を 5 桁以上で表します。 年が 5 桁を超える場合は、それらの数字も結果に含まれます。 年が 5 桁に満たない場合は、5 桁になるまで数値が先行ゼロで埋められます。 + + "y" 指定子を追加すると、"y" 指定子の数と同じ桁数になるまで数値が先行ゼロで埋められます。 + + 次の例では、カスタム書式指定文字列の中に "yyyyy" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#13](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#13)] + [!code-vb[Formatting.DateAndTime.Custom#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#13)] + + [表のトップへ](#table) + + +## "z" カスタム書式指定子 + 値で使用した場合、"z" カスタム書式指定子は、オペレーティング システムのローカル タイム ゾーンの、世界協定時刻 \(UTC\) を基準とした符号付きオフセット \(時間単位\) を表します。 インスタンスの プロパティの値は反映されません。 そのため、 値に対して "z" 書式指定子を使用することはお勧めできません。 + + 値で使用した場合、この書式指定子は、 値の、UTC を基準とするオフセット \(時間単位\) を表します。 + + このオフセットは、常に先頭の符号と共に表示されます。 正符号 \(\+\) は UTC より時間が進んでいることを示し、負符号 \(\-\) は UTC より時間が遅れていることを示します。 1 桁のオフセットは、先行ゼロなしで書式設定されます。 + + "z" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"z" は標準の日時書式指定子として解釈され、 をスローします。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + 次の例では、カスタム書式指定文字列の中に "z" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#14](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#14)] + [!code-vb[Formatting.DateAndTime.Custom#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#14)] + + [表のトップへ](#table) + + +## "zz" カスタム書式指定子 + 値で使用した場合、"zz" カスタム書式指定子は、オペレーティング システムのローカル タイム ゾーンの、UTC を基準とした符号付きオフセット \(時間単位\) を表します。 インスタンスの プロパティの値は反映されません。 そのため、 値に対して "zz" 書式指定子を使用することはお勧めできません。 + + 値で使用した場合、この書式指定子は、 値の、UTC を基準とするオフセット \(時間単位\) を表します。 + + このオフセットは、常に先頭の符号と共に表示されます。 正符号 \(\+\) は UTC より時間が進んでいることを示し、負符号 \(\-\) は UTC より時間が遅れていることを示します。 1 桁のオフセットは、先行ゼロ付きで書式設定されます。 + + 次の例では、カスタム書式指定文字列の中に "zz" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#14](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#14)] + [!code-vb[Formatting.DateAndTime.Custom#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#14)] + + [表のトップへ](#table) + + +## "zzz" カスタム書式指定子 + 値で使用した場合、"zzz" カスタム書式指定子は、オペレーティング システムのローカル タイム ゾーンの、UTC を基準とした符号付きオフセット \(時間および分単位\) を表します。 インスタンスの プロパティの値は反映されません。 そのため、 値に対して "zzz" 書式指定子を使用することはお勧めできません。 + + 値で使用した場合、この書式指定子は、 値の、UTC を基準とするオフセット \(時間および分単位\) を表します。 + + このオフセットは、常に先頭の符号と共に表示されます。 正符号 \(\+\) は UTC より時間が進んでいることを示し、負符号 \(\-\) は UTC より時間が遅れていることを示します。 1 桁のオフセットは、先行ゼロ付きで書式設定されます。 + + 次の例では、カスタム書式指定文字列の中に "zzz" カスタム書式指定子が含まれます。 + + [!code-csharp[Formatting.DateAndTime.Custom#14](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/Custom1.cs#14)] + [!code-vb[Formatting.DateAndTime.Custom#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/Custom1.vb#14)] + + [表のトップへ](#table) + + +## ":" カスタム書式指定子 + ":" カスタム書式指定子は、時、分、および秒を区別するための時刻の区切り記号を表します。 ローカライズされた適切な時刻の区切り記号は、現在のカルチャまたは特定のカルチャの プロパティから取得されます。 + +> [!NOTE] +> 特定の日付と時刻の文字列について時刻の区切り記号を変更するには、リテラル文字列の区切り記号内に区切り記号を指定します。 たとえば、カスタム書式指定文字列 `hh'_'dd'_'ss` は、常に時刻の区切り記号として "\_" \(アンダースコア\) が使用される結果文字列を生成します。 カルチャのすべての日付について時刻の区切り記号を変更するには、現在のカルチャの プロパティ値を変更するか、 オブジェクトのインスタンスを作成し、その プロパティに文字を割り当てて、 パラメーターを含む書式設定メソッドのオーバーロードを呼び出します。 + + ":" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、":" は標準の日時書式指定子として解釈され、 をスローします。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + [表のトップへ](#table) + + +## "\/" カスタム書式指定子 + "\/" カスタム書式指定子は、年、月、および日を区別するための日付の区切り記号を表します。 ローカライズされた適切な日付の区切り記号は、現在のカルチャまたは特定のカルチャの プロパティから取得されます。 + +> [!NOTE] +> 特定の日付と時刻の文字列について日付の区切り記号を変更するには、リテラル文字列の区切り記号内に区切り記号を指定します。 たとえば、カスタム書式指定文字列 `mm'/'dd'/'yyyy` は、常に日付の区切り記号として "\/" が使用される結果文字列を生成します。 カルチャのすべての日付について日付の区切り記号を変更するには、現在のカルチャの プロパティ値を変更するか、 オブジェクトのインスタンスを作成し、その プロパティに文字を割り当てて、 パラメーターを含む書式設定メソッドのオーバーロードを呼び出します。 + + "\/" 書式指定子が単独で使用され、その他のカスタム書式指定子がない場合、"\/" は標準の日時書式指定子として解釈され、 をスローします。 単一の書式指定子を使用する方法の詳細については、このトピックで後述する「[単一のカスタム書式指定子の使用](#UsingSingleSpecifiers)」を参照してください。 + + [表のトップへ](#table) + + +## ノート + + +### 単一のカスタム書式指定子の使用 + カスタム日時書式指定文字列は、複数の文字で構成されます。 日時書式指定メソッドでは、1 文字の文字列が標準の日時書式指定文字列として解釈されます。 文字が有効な書式指定子として認識されない場合は がスローされます。 たとえば、"h" 指定子のみで構成される書式指定文字列は、標準の日時書式指定文字列として解釈されます。 ただし、この場合では、"h"``という標準の日時書式指定子が存在しないため、例外がスローされます。 + + カスタム日時書式指定子のいずれかを書式指定文字列内の唯一の指定子として使用するには \(つまり、"d"、"f"、"F"、"g"、"h"、"H"、"K"、"m"、"M"、"s"、"t"、"y"、"z"、":"、"\/" のいずれかのカスタム書式指定子を単体で使用するには\)、指定子の前または後に空白を挿入するか、または単一のカスタム日時指定子の前にパーセント \("%"\) 書式指定子を挿入します。 + + たとえば、"`%h"` は、現在の日時値が表す時要素を表示するカスタム日時書式指定文字列として解釈されます。 また、" h" または "h " の各書式指定文字列も使用できますが、書式設定後の文字列に時間と共に空白が挿入されます。 これらの 3 つの書式指定文字列の例を次に示します。 + + [!code-csharp[Formatting.DateAndTime.Custom#16](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/literal1.cs#16)] + [!code-vb[Formatting.DateAndTime.Custom#16](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/literal1.vb#16)] + + +### エスケープ文字の使用 + 書式指定文字列内の "d"、"f"、"F"、"g"、"h"、"H"、"K"、"m"、"M"、"s"、"t"、"y"、"z"、":"、"\/" の各文字は、リテラル文字ではなくカスタム書式指定子として解釈されます。 文字が書式指定子として解釈されないようにするには、その文字の前に、エスケープ文字の円記号 \(\\\) を付けます。 エスケープ文字は、その後に続く文字が、そのまま結果の文字列に含める必要がある文字リテラルであることを示します。 + + 結果の文字列に円記号を含める場合は、円記号をもう 1 つ付加して、円記号自体をエスケープする必要があります \(`\\`\)。 + +> [!NOTE] +> C\+\+ コンパイラや C\# コンパイラなど、一部のコンパイラでは、同様に、1 つの円記号がエスケープ文字として解釈されることがあります。 書式設定時に文字列が正しく解釈されるようにするには、C\# では、逐語的文字列リテラル文字 \(@ 文字\) を文字列の前に使用します。また、C\# および C\+\+ では、円記号の前にもう 1 つ円記号を付ける方法もあります。 両方の方法を次の C\# の例に示します。 + + 次の例では、エスケープ文字を使用して、書式設定操作で "h" と "m" の各文字が書式指定子として解釈されないようにします。 + + [!code-csharp[Formatting.DateAndTime.Custom#15](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Custom/cs/escape1.cs#15)] + [!code-vb[Formatting.DateAndTime.Custom#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Custom/vb/escape1.vb#15)] + +### コントロール パネルの設定 + コントロール パネルの **\[地域と言語のオプション\]** の設定は、各種のカスタム日時書式指定子を使った書式設定操作によって生成される結果の文字列に影響します。 これらの設定は、書式設定の制御に使用される値を提供する現在のスレッド カルチャに関連付けられた オブジェクトを初期化するために使用されます。 コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。 + + また、 コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい オブジェクトをインスタンス化した場合、コントロール パネルの **\[地域と言語のオプション\]** 項目で設定されたカスタマイズが新しい オブジェクトに適用されます。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 + +### DateTimeFormatInfo のプロパティ + 書式設定は、現在の オブジェクトのプロパティの影響を受けます。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または書式設定を実行するメソッドの パラメーターによって明示的に指定されます。 パラメーターには、カルチャを表す オブジェクト、または オブジェクトを指定します。 + + 各種のカスタム日時書式指定子によって生成される書式設定後の文字列も、現在の オブジェクトのプロパティに依存します。 カスタム日時書式指定子によって生成される結果は、対応する プロパティを変更することによって変えることができます。 たとえば、"ddd" 書式指定子を使用した場合、書式設定後の文字列には、 文字列配列に指定されている曜日の省略名が追加されます。 同様に、"MMMM" 書式指定子を使用した場合、書式設定後の文字列には、 文字列配列に指定されている月の正式名が追加されます。 + +## 参照 + + + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + [標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md) + [サンプル: .NET Framework 4 の書式設定ユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Formatting-9c4dae8d) \ No newline at end of file diff --git a/docs/standard/base-types/custom-numeric-format-strings.md b/docs/standard/base-types/custom-numeric-format-strings.md new file mode 100644 index 00000000000..6a522b8a87e --- /dev/null +++ b/docs/standard/base-types/custom-numeric-format-strings.md @@ -0,0 +1,236 @@ +--- +title: "カスタム数値書式指定文字列 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "カスタム数値書式指定文字列" + - "書式指定子, カスタム数値書式指定文字列" + - "書式指定子, 数値" + - "書式指定文字列" + - "書式指定 [.NET Framework], 数" + - "書式指定 (数値の) [.NET Framework]" + - "数値 [.NET Framework], 書式指定" + - "数値書式指定文字列 [.NET Framework]" +ms.assetid: 6f74fd32-6c6b-48ed-8241-3c2b86dea5f4 +caps.latest.revision: 54 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 54 +--- +# カスタム数値書式指定文字列 +1 つ以上のカスタム数値指定子で構成されるカスタム数値書式指定文字列を作成して、数値データの書式設定方法を定義できます。 カスタム数値書式指定文字列は、[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)ではない任意の書式指定文字列です。 + + カスタム数値書式指定文字列は、すべての数値型の `ToString` メソッドの一部のオーバーロードでサポートされています。 たとえば、 型の メソッドおよび メソッドに数値書式指定文字列を指定できます。 カスタム数値書式指定文字列は、.NET Framework の[複合書式指定機能](../../../docs/standard/base-types/composite-formatting.md)でもサポートされています。この機能を使用するメソッドには、`Write` クラスおよび `WriteLine` クラスの一部の メソッドと メソッド、 メソッド、および メソッドがあります。 + +> [!TIP] +> [書式指定ユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Formatting-9c4dae8d)をダウンロードできます。このアプリケーションを使用すると、書式指定文字列を数値または日付と時刻の値に適用して、結果の文字列を表示できます。 + + 次の表に、カスタム数値書式指定子の説明および書式指定子ごとのサンプル出力を示します。 カスタム数値書式指定文字列の使用方法については、「[メモ](#NotesCustomFormatting)」を参照してください。それらを使用する包括的な例については、「[例](#example)」を参照してください。 + +|書式指定子|名前|説明|例| +|-----------|--------|--------|-------| +|"0"|ゼロ プレースホルダー|対応する数字でゼロを置き換えます。置き換えが行われるのは、対応する数字が存在する場合です。それ以外の場合は、結果の文字列にはゼロが表示されます。

詳細については、「["0" カスタム指定子](#Specifier0)」を参照してください。|1234.5678 \("00000"\) \-\> 01235

0.45678 \("0.00", en\-US\) \-\> 0.46

0.45678 \("0.00", fr\-FR\) \-\> 0,46| +|"\#"|桁プレースホルダー|対応する数字で "\#" 記号を置き換えます。置き換えが行われるのは、対応する数字が存在する場合です。それ以外の場合は、結果の文字列に数字は表示されません。

入力文字列の対応する数字が意味を持たない 0 の場合、結果の文字列に数字は表示されません。 たとえば、0003 \("\#\#\#\#"\) \-\> 3 です。

詳細については、「["\#" カスタム指定子](#SpecifierD)」を参照してください。|1234.5678 \("\#\#\#\#\#"\) \-\> 1235

0.45678 \("\#.\#\#", en\-US\) \-\> .46

0.45678 \("\#.\#\#", fr\-FR\) \-\> ,46| +|"."|小数点|結果の文字列の小数点位置を決定します。

詳細については、「["."カスタム指定子](#SpecifierPt)」を参照してください。|0.45678 \("0.00", en\-US\) \-\> 0.46

0.45678 \("0.00", fr\-FR\) \-\> 0,46| +|","|桁区切り記号および数値の位取り|桁区切り記号および数値位取り指定子の両方として機能します。 桁区切り記号としては、各グループの間に、ローカライズされた桁区切り記号文字を挿入します。 数値位取り指定子としては、指定されたコンマごとに、数値を 1000 で除算します。

詳細については、「["," カスタム指定子](#SpecifierTh)」を参照してください。|桁区切り記号:

2147483647 \("\#\#,\#", en\-US\) \-\> 2,147,483,647

2147483647 \("\#\#,\#", es\-ES\) \-\> 2.147.483.647

位取り指定子:

2147483647 \("\#,\#,,", en\-US\) \-\> 2,147

2147483647 \("\#,\#,,", es\-ES\) \-\> 2.147| +|"%"|パーセント プレースホルダー|数値に 100 を乗算し、結果の文字列に、ローカライズされたパーセント記号を挿入します。

詳細については、「["%" カスタム指定子](#SpecifierPct)」を参照してください。|0.3697 \("%\#0.00", en\-US\) \-\> %36.97

0.3697 \("%\#0.00", el\-GR\) \-\> %36,97

0.3697 \("\#\#.0 %", en\-US\) \-\> 37.0 %

0.3697 \("\#\#.0 %", el\-GR\) \-\> 37,0 %| +|"‰"|パーミル プレースホルダー|数値に 1000 を乗算し、結果の文字列にローカライズされたパーミル記号を挿入します。

詳細については、「["‰" カスタム指定子](#SpecifierPerMille)」を参照してください。|0.03697 \("\#0.00‰", en\-US\) \-\> 36.97‰

0.03697 \("\#0.00‰", ru\-RU\) \-\> 36,97‰| +|"E0"

"E\+0"

"E\-0"

"e0"

"e\+0"

"e\-0"|指数表記|後に 0 \(ゼロ\) が 1 つ以上続く場合に、指数表記を使用して結果の書式を設定します。 大文字 "E" と小文字 "e" は、結果の文字列の指数記号を大文字にするか小文字にするかを示します。 "E" 文字または "e" 文字の後に続くゼロの数によって、指数部の最小桁数が決まります。 正符号 \(\+\) は、符号文字が指数部の前に常に挿入されることを示します。 負符号 \(\-\) は、指数部が負の値の場合にだけその前に符号文字が挿入されることを示します。

詳細については、「["E" カスタム指定子と "e" カスタム指定子](#SpecifierExponent)」を参照してください。|987654 \("\#0.0e0"\) \-\> 98.8e4

1503.92311 \("0.0\#\#e\+00"\) \-\> 1.504e\+03

1.8901385E\-16 \("0.0e\+00"\) \-\> 1.9e\-16| +|\\|エスケープ文字|この文字の次の文字はカスタム書式指定子ではなくリテラルとして解釈されます。

詳細については、「["\\" エスケープ文字](#SpecifierEscape)」を参照してください。|987654 \("\\\#\#\#00\\\#"\) \-\> \#987654\#| +|'*文字列*'

"*文字列*"|リテラル文字列区切り記号|囲まれた文字列が結果の文字列にそのままコピーされることを示します。|68 \("\#' degrees'"\) \-\> 68 degrees

68 \("\#' degrees'"\) \-\> 68 degrees| +|;|セクション区切り記号|正の数値、負の数値、およびゼロの数値に対して、別々の書式指定文字列を使用してセクションを定義します。

詳細については、「[";" セクション区切り記号](#SectionSeparator)」を参照してください。|12.345 \("\#0.0\#;\(\#0.0\#\);\-\\0\-"\) \-\> 12.35

0 \("\#0.0\#;\(\#0.0\#\);\-\\0\-"\) \-\> \-0\-

\-12.345 \("\#0.0\#;\(\#0.0\#\);\-\\0\-"\) \-\> \(12.35\)

12.345 \("\#0.0\#;\(\#0.0\#\)"\) \-\> 12.35

0 \("\#0.0\#;\(\#0.0\#\)"\) \-\> 0.0

\-12.345 \("\#0.0\#;\(\#0.0\#\)"\) \-\> \(12.35\)| +|その他|上記以外のすべての文字|文字が結果の文字列にそのままコピーされます。|68 \("\# °"\) \-\> 68 °| + + 以降では、それぞれのカスタム数値書式指定子について詳しく説明します。 + + +## "0" カスタム指定子 + "0" カスタム書式指定子は、ゼロ プレースホルダー記号として機能します。 書式が設定される値で、書式指定文字列のゼロに対応する位置に数字がある場合には、この数字が結果の文字列にコピーされます。それ以外の場合は、結果の文字列にゼロが表示されます。 整数部の左端のゼロの位置と、小数部の右端のゼロの位置によって、常に結果の文字列に示される桁数が決まります。 + + 指定子が "00" の場合、値は一の位で丸められ、小数点以下のゼロは常に切り捨てられます。 たとえば、"00" を指定して 34.5 を書式設定すると、結果の値は 35 になります。 + + 次の例では、ゼロ プレースホルダーを含むカスタム書式指定文字列を使って書式設定された複数の値を表示します。 + + [!code-cpp[Formatting.Numeric.Custom#1](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/custom.cpp#1)] + [!code-csharp[Formatting.Numeric.Custom#1](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/custom.cs#1)] + [!code-vb[Formatting.Numeric.Custom#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/Custom.vb#1)] + + [表のトップへ](#table) + + +## "\#" カスタム指定子 + "\#" カスタム書式指定子は、桁プレースホルダー記号として機能します。 書式が指定される値で、書式指定文字列の "\#" 記号に対応する位置に数字がある場合には、この数字が結果の文字列にコピーされます。 それ以外の場合は、結果の文字列のこの位置には何も格納されません。 + + この指定子では、文字列の唯一の桁の値がゼロであっても、この桁が有効桁でない場合には、ゼロは表示されません。 表示される数値の有効桁である場合にのみゼロが表示されます。 + + 書式指定文字列が "\#\#" の場合は、値は一の位で丸められ、小数点以下のゼロは常に切り捨てられます。 たとえば、"\#\#" を指定して 34.5 を書式設定すると、結果の値は 35 になります。 + + 次の例では、桁プレースホルダーを含むカスタム書式指定文字列を使って書式設定された複数の値を表示します。 + + [!code-cpp[Formatting.Numeric.Custom#2](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/custom.cpp#2)] + [!code-csharp[Formatting.Numeric.Custom#2](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/custom.cs#2)] + [!code-vb[Formatting.Numeric.Custom#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/Custom.vb#2)] + + 欠落している数字や先頭のゼロをスペースに置き換える結果の文字列を戻すには、次の例に示すように、[複合書式指定機能](../../../docs/standard/base-types/composite-formatting.md)を使用して、フィールド幅を指定します。 + + [!code-cpp[Formatting.Numeric.Custom#12](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/SpaceOrDigit1.cpp#12)] + [!code-csharp[Formatting.Numeric.Custom#12](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/SpaceOrDigit1.cs#12)] + [!code-vb[Formatting.Numeric.Custom#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/SpaceOrDigit1.vb#12)] + + [表のトップへ](#table) + + +## "." カスタム指定子 + "." カスタム書式指定子は、ローカライズされた小数点を結果の文字列に挿入します。 書式指定文字列の 1 番目のピリオドによって、書式設定後の値での小数点の位置が決定します。指定されている他のピリオドは無視されます。 + + 結果の文字列の中で小数点として使用される文字は、ピリオドであるとは限りません。書式設定を制御する オブジェクトの プロパティによって決定されます。 + + 次の例では、結果として得られるさまざまな文字列の小数点位置を、"." 書式指定子を使って定義しています。 + + [!code-cpp[Formatting.Numeric.Custom#3](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/custom.cpp#3)] + [!code-csharp[Formatting.Numeric.Custom#3](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/custom.cs#3)] + [!code-vb[Formatting.Numeric.Custom#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/Custom.vb#3)] + + [表のトップへ](#table) + + +## "," カスタム指定子 + "," 文字は、桁区切り記号および数値位取り指定子の両方として機能します。 + +- 桁区切り記号: 数値の整数部の桁を書式設定する 2 つの桁プレースホルダー \(0 または \#\) の間に 1 つ以上のコンマが指定されている場合は、出力の整数部分で各数値グループの間に桁区切り記号文字が挿入されます。 + + 現在の オブジェクトの プロパティと プロパティによって、桁区切り記号として使用される文字および各数値グループのサイズが決まります。 たとえば、文字列 "\#,\#" およびインバリアント カルチャを使用して数値 1000 が書式設定される場合は、出力が "1,000" となります。 + +- 数値位取り指定子: 明示的または暗黙的な小数点のすぐ左側に 1 つ以上のコンマが指定されている場合は、コンマごとに書式設定対象の数値が 1000 で除算されます。 たとえば、"0,," 文字列を使用して数値 1 億が書式設定された場合、出力は "100" となります。 + + 桁区切り記号および数値位取り指定子は、同じ書式指定文字列で使用できます。 たとえば、"\#,0,," 文字列およびインバリアント カルチャを使用して 10 億の数値を書式設定した場合、出力は "1,000" となります。 + + 桁区切り記号としてコンマを使用する例を次に示します。 + + [!code-cpp[Formatting.Numeric.Custom#4](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/custom.cpp#4)] + [!code-csharp[Formatting.Numeric.Custom#4](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/custom.cs#4)] + [!code-vb[Formatting.Numeric.Custom#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/Custom.vb#4)] + + 数値の位取り指定子としてコンマを使用する例を次に示します。 + + [!code-cpp[Formatting.Numeric.Custom#5](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/custom.cpp#5)] + [!code-csharp[Formatting.Numeric.Custom#5](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/custom.cs#5)] + [!code-vb[Formatting.Numeric.Custom#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/Custom.vb#5)] + + [表のトップへ](#table) + + +## "%" カスタム指定子 + 書式指定文字列にパーセント記号 \(%\) があると、書式設定前に数値に 100 が乗算されます。 数値では、書式指定文字列の % に対応する位置にローカライズされたパーセント記号が挿入されます。 使用されるパーセント記号は、現在の オブジェクトの プロパティによって定義されます。 + + 次の例では、"%" カスタム指定子を含むさまざまなカスタム書式指定文字列を定義します。 + + [!code-cpp[Formatting.Numeric.Custom#6](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/custom.cpp#6)] + [!code-csharp[Formatting.Numeric.Custom#6](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/custom.cs#6)] + [!code-vb[Formatting.Numeric.Custom#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/Custom.vb#6)] + + [表のトップへ](#table) + + +## "‰" カスタム指定子 + 書式指定文字列にパーミル文字 \(‰ または \\u2030\) があると、書式設定前に数値に 1000 が乗算されます。 返される文字列では、書式指定文字列の ‰ に対応する位置に適切なパーミル記号が挿入されます。 使用されるパーミル文字は、カルチャ固有の書式設定情報を指定するオブジェクトの プロパティによって定義されます。 + + 次の例では、"‰" カスタム指定子を含むカスタム書式指定文字列を定義します。 + + [!code-cpp[Formatting.Numeric.Custom#9](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/custom.cpp#9)] + [!code-csharp[Formatting.Numeric.Custom#9](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/custom.cs#9)] + [!code-vb[Formatting.Numeric.Custom#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/Custom.vb#9)] + + [表のトップへ](#table) + + +## "E" カスタム指定子と "e" カスタム指定子 + 書式指定文字列に "E"、"E\+"、"E\-"、"e"、"e\+"、または "e\-" が含まれており、これらの文字の直後にゼロが 1 つ以上続く場合には、指数表記を使用して数値の書式が設定されます。また、数値と指数の間に "E" または "e" が挿入されます。 指数表記インジケーターの後に続くゼロの数によって、出力の指数部の最小桁数が決まります。 書式 "E\+" または "e\+" は、正符号または負符号が指数部の前に常に挿入されることを示します。 書式 "E"、"E\-"、"e"、または "e\-" は、指数部が負の値の場合にだけその前に符号文字が挿入されることを示します。 + + 次の例では、指数表記の指定子を使用して、さまざまな数値の書式を設定します。 + + [!code-cpp[Formatting.Numeric.Custom#7](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/custom.cpp#7)] + [!code-csharp[Formatting.Numeric.Custom#7](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/custom.cs#7)] + [!code-vb[Formatting.Numeric.Custom#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/Custom.vb#7)] + + [表のトップへ](#table) + + +## "\\" エスケープ文字 + 書式指定文字列内の "\#"、"0"、"."、","、"%"、"‰" の各記号は、リテラル文字ではなく書式指定子として解釈されます。 カスタム書式指定文字列内での位置によっては、大文字および小文字の "E"、および \+ 記号と \- 記号も書式指定子として解釈されます。 + + 文字が書式指定子として解釈されないようにするには、その文字の前に、エスケープ文字の円記号を付けます。 エスケープ文字は、その後に続く文字が、そのまま結果の文字列に含める必要がある文字リテラルであることを示します。 + + 結果の文字列に円記号を含める場合は、円記号をもう 1 つ付加して、円記号自体をエスケープする必要があります \(`\\`\)。 + +> [!NOTE] +> C\+\+ コンパイラや C\# コンパイラなど、一部のコンパイラでは、同様に、1 つの円記号がエスケープ文字として解釈されることがあります。 書式設定時に文字列が正しく解釈されるようにするには、C\# では、逐語的文字列リテラル文字 \(@ 文字\) を文字列の前に使用します。また、C\# および C\+\+ では、円記号の前にもう 1 つ円記号を付ける方法もあります。 両方の方法を次の C\# の例に示します。 + + 次の例では、エスケープ文字を使用して、書式設定操作で "\#"、"0"、"\\" の各文字がエスケープ文字としても書式指定子としても解釈されないようにします。 この C\# の例では、円記号をもう 1 つ付けて、円記号がリテラル文字として解釈されるようにしています。 + + [!code-cpp[Formatting.Numeric.Custom#11](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/escape1.cpp#11)] + [!code-csharp[Formatting.Numeric.Custom#11](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/escape1.cs#11)] + [!code-vb[Formatting.Numeric.Custom#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/escape1.vb#11)] + + [表のトップへ](#table) + + +## ";" セクション区切り記号 + セミコロン \(;\) は、値が正、負、ゼロのいずれであるかに応じて異なる書式設定を数値に適用する条件付き書式指定子です。 このように数値の内容によって適用する書式を変更するには、カスタム書式指定文字列に、セミコロンで区切ったセクションを最大 3 つまで作成します。 これらのセクションの説明を次に示します。 + +|セクションの数|説明| +|-------------|--------| +|1 つ|書式指定文字列はすべての値に適用されます。| +|2 つ|最初のセクションが正の値とゼロに適用され、2 番目のセクションが負の値に適用されます。

書式設定対象の数値が負の数値であるが、2 番目のセクションの書式指定に従って丸めた結果ゼロになる場合には、1 番目のセクションの書式に従ってこのゼロが書式設定されます。| +|3 つ|最初のセクションが正の値、2 番目のセクションが負の値、3 番目のセクションがゼロに適用されます。

ゼロ以外の値すべてに 1 番目のセクションが適用される場合には、2 番目のセクションが空になる \(セミコロンの間に何も表示されない\) ことがあります。

書式設定対象の数値がゼロ以外の負の数値であるが、1 番目または 2 番目のセクションの書式に従って丸めた結果ゼロになる場合には、3 番目のセクションの書式に従ってこのゼロが書式設定されます。| + + セクション区切り記号は、最後の値が書式設定されるときに、数値に関連付けられた既存の書式設定をすべて無視します。 たとえば、セクション区切り記号を使用する場合、負の値はマイナス記号を付けずに表示されます。 最終的に書式設定された値にマイナス記号を付ける場合は、カスタム書式指定子の中に明示的にマイナス記号を含める必要があります。 + + 次の例では、";" 書式指定子を使用して、正数、負数、ゼロの各部分に対し、それぞれ異なる書式を設定します。 + + [!code-cpp[Formatting.Numeric.Custom#8](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/custom.cpp#8)] + [!code-csharp[Formatting.Numeric.Custom#8](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/custom.cs#8)] + [!code-vb[Formatting.Numeric.Custom#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/Custom.vb#8)] + + [表のトップへ](#table) + + +## ノート + +### 浮動小数点の無限大値と NaN \(非数\) 値 + の浮動小数点型または の浮動小数点型が正の無限大、負の無限大、または NaN \(非数\) である場合は、書式指定文字列とは関係なく、現在適用可能な オブジェクトによって指定される 、または の各プロパティの値は、書式設定された文字列となります。 + +### コントロール パネルの設定 + コントロール パネルの **\[地域と言語のオプション\]** での設定は、書式設定操作によって生成される結果の文字列に影響します。 これらの設定は、現在のスレッド カルチャに関連付けられた オブジェクトを初期化するために使用され、現在のスレッド カルチャから書式設定の制御に使用される値が提供されます。 コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。 + + また、 コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい オブジェクトをインスタンス化した場合、コントロール パネルの **\[地域と言語のオプション\]** 項目で設定されたカスタマイズが新しい オブジェクトに適用されます。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 + +### 丸めと固定小数点の書式指定文字列 + 固定小数点の書式指定文字列 \(つまり指数表記の書式指定文字を含まない書式指定文字列\) の場合は、小数点以下の桁数が小数点の右側にある桁プレースホルダーの数と同じである数値に丸められます。 書式指定文字列に小数点が含まれていない場合には、最も近い整数に丸められます。 数値の桁数が、整数部の桁プレースホルダーの数よりも大きい場合には、桁プレースホルダーに収まらない桁が、結果の文字列の 1 番目の桁プレースホルダーの直前にコピーされます。 + + [表のトップへ](#table) + + +## 例 + 2 つのカスタム数値書式指定文字列の例を次に示します。 どちらの場合も、桁プレースホルダー \(`#`\) によって数値データが表示され、それ以外の文字はすべて結果の文字列にコピーされます。 + + [!code-cpp[Formatting.Numeric.Custom#10](../../../samples/snippets/cpp/VS_Snippets_CLR/formatting.numeric.custom/cpp/example1.cpp#10)] + [!code-csharp[Formatting.Numeric.Custom#10](../../../samples/snippets/csharp/VS_Snippets_CLR/formatting.numeric.custom/cs/example1.cs#10)] + [!code-vb[Formatting.Numeric.Custom#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/formatting.numeric.custom/vb/example1.vb#10)] + + [表のトップへ](#table) + +## 参照 + + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + [標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md) + [方法: 数値に先行するゼロを埋め込む](../../../docs/standard/base-types/how-to-pad-a-number-with-leading-zeros.md) + [サンプル: .NET Framework 4 の書式設定ユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Formatting-9c4dae8d) \ No newline at end of file diff --git a/docs/standard/base-types/custom-timespan-format-strings.md b/docs/standard/base-types/custom-timespan-format-strings.md new file mode 100644 index 00000000000..235903ee2eb --- /dev/null +++ b/docs/standard/base-types/custom-timespan-format-strings.md @@ -0,0 +1,398 @@ +--- +title: "カスタム時間間隔書式指定文字列 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "カスタム時間間隔書式指定文字列" + - "カスタムの TimeSpan 書式指定文字列" + - "書式指定子, カスタム時間間隔" + - "書式指定文字列" + - "書式指定 [.NET Framework], 時間" + - "書式指定 [.NET Framework], 時間間隔" +ms.assetid: a63ebf55-7269-416b-b4f5-286f6c03bf0e +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# カスタム時間間隔書式指定文字列 + 書式指定文字列は、書式設定操作によって生成される 値の文字列形式を定義します。 カスタム書式指定文字列は、1 つ以上のカスタム 書式指定子と任意の数のリテラル文字で構成されます。 [標準の時間間隔書式指定文字列](../../../docs/standard/base-types/standard-timespan-format-strings.md)以外の文字列は、すべてカスタム 書式指定文字列として解釈されます。 + +> [!IMPORTANT] +> カスタム 書式指定子には、日と時間、時間と分、または秒と秒の小数部を区切る記号などのプレースホルダー区切り記号は含まれません。 これらの記号は、カスタム書式指定文字列にリテラル文字列として含まれている必要があります。 たとえば、`"dd\.hh\:mm"` は、ピリオド \(.\) を日と時間の間の区切り記号として定義し、コロンを時間と分の間の区切り記号として定義します。 +> +> カスタム 書式指定子には、負と正の時間間隔の区別に使用できる符号も含まれていません。 符号を含めるには、条件ロジックを使用して書式指定文字列を構成する必要があります。 例については、「[その他の文字](#Other)」を参照してください。 + + 値の文字列形式は、 メソッドのオーバーロードの呼び出しと、 などの複合書式指定をサポートするメソッドによって生成されます。 詳細については、「[型の書式設定](../../../docs/standard/base-types/formatting-types.md)」および「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」を参照してください。 次のコード例では、書式設定操作でカスタム書式指定文字列を使用する方法を示しています。 + + [!code-csharp[Conceptual.TimeSpan.Custom#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customformatexample1.cs#1)] + [!code-vb[Conceptual.TimeSpan.Custom#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customformatexample1.vb#1)] + + カスタム 書式指定文字列は、解析操作に必要な入力文字列の書式を定義するために メソッドと メソッドでも使用されます \(解析では、特定の値の文字列形式が、その値に変換されます\)。次のコード例では、解析操作で標準書式指定文字列を使用する方法を示しています。 + + [!code-csharp[Conceptual.TimeSpan.Custom#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customparseexample1.cs#2)] + [!code-vb[Conceptual.TimeSpan.Custom#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customparseexample1.vb#2)] + + カスタム日時書式指定子を次の表に示します。 + +|書式指定子|説明|例| +|-----------|--------|-------| +|"d" または "%d"|時間間隔の日数。

詳細については、「["d" カスタム書式指定子](#dSpecifier)」を参照してください。|`new TimeSpan(6, 14, 32, 17, 685):`

`%d` \-\-\> "6"

`d\.hh\:mm` \-\-\> "6.14:32"| +|"dd" ~ "dddddddd"|必要に応じて先行ゼロで埋められた、時間間隔の日数。

詳細については、「["dd" ~ "dddddddd" カスタム書式指定子](#ddSpecifier)」を参照してください。|`new TimeSpan(6, 14, 32, 17, 685):`

`ddd` \-\-\> "006"

`dd\.hh\:mm` \-\-\> "06.14:32"| +|"h" または "%h"|日数の一部としてカウントされない、時間間隔の時間数。 1 桁の時間に先行ゼロは付きません。

詳細については、「["h" カスタム書式指定子](#hSpecifier)」を参照してください。|`new TimeSpan(6, 14, 32, 17, 685):`

`%h` \-\-\> "14"

`hh\:mm` \-\-\> "14:32"| +|"hh"|日数の一部としてカウントされない、時間間隔の時間数。 1 桁の時間には、先頭に 0 が付けられます。

詳細については、「["hh" カスタム書式指定子](#hhSpecifier)」を参照してください。|`new TimeSpan(6, 14, 32, 17, 685):`

`hh` \-\-\> "14"

`new TimeSpan(6, 8, 32, 17, 685):`

`hh` \-\-\> 08| +|"m" または "%m"|時間数および日数のいずれの一部としても含まれない、時間間隔の分数。 1 桁の分に先行ゼロは付きません。

詳細については、「["m" カスタム書式指定子](#mSpecifier)」を参照してください。|`new TimeSpan(6, 14, 8, 17, 685):`

`%m` \-\-\> "8"

`h\:m` \-\-\> "14:8"| +|"mm"|時間数および日数のいずれの一部としても含まれない、時間間隔の分数。 1 桁の分には、先頭に 0 が付きます。

詳細については、「["mm" カスタム書式指定子](#mmSpecifier)」を参照してください。|`new TimeSpan(6, 14, 8, 17, 685):`

`mm` \-\-\> "08"

`new TimeSpan(6, 8, 5, 17, 685):`

`d\.hh\:mm\:ss` \-\-\> 6.08:05:17| +|"s" または "%s"|時間数、日数、および分数のいずれの一部としても含まれない、時間間隔の秒数。 1 桁の秒に先行ゼロは付きません。

詳細については、「["s" カスタム書式指定子](#sSpecifier)」を参照してください。|`TimeSpan.FromSeconds(12.965)`:

`%s` \-\-\> 12

`s\.fff` \-\-\> 12.965| +|"ss"|時間数、日数、および分数のいずれの一部としても含まれない、時間間隔の秒数。1 桁の秒には、先頭に 0 が付きます。

詳細については、「["ss" カスタム書式指定子](#ssSpecifier)」を参照してください。|`TimeSpan.FromSeconds(6.965)`:

`ss` \-\-\> 06

`ss\.fff` \-\-\> 06.965| +|"f" または "%f"|時間間隔の秒部分の 1\/10。

詳細については、「["f" カスタム書式指定子](#fSpecifier)」を参照してください。|`TimeSpan.FromSeconds(6.895)`:

`f` \-\-\> 8

`ss\.f` \-\-\> 06.8| +|"ff"|時間間隔の秒部分の 1\/100。

詳細については、「["ff" カスタム書式指定子](#ffSpecifier)」を参照してください。|`TimeSpan.FromSeconds(6.895)`:

`ff` \-\-\> 89

`ss\.ff` \-\-\> 06.89| +|"fff"|時間間隔の秒部分の 1\/1000。

詳細については、「["fff" カスタム書式指定子](#f3Specifier)」を参照してください。|`TimeSpan.FromSeconds(6.895)`:

`fff` \-\-\> 895

`ss\.fff` \-\-\> 06.895| +|"ffff"|時間間隔の秒部分の 1\/10000。

詳細については、「["ffff" カスタム書式指定子](#f4Specifier)」を参照してください。|`TimeSpan.Parse("0:0:6.8954321")`:

`ffff` \-\-\> 8954

`ss\.ffff` \-\-\> 06.8954| +|"fffff"|時間間隔の秒部分の 1\/100000。

詳細については、「["fffff" カスタム書式指定子](#f5Specifier)」を参照してください。|`TimeSpan.Parse("0:0:6.8954321")`:

`fffff` \-\-\> 89543

`ss\.fffff` \-\-\> 06.89543| +|"ffffff"|時間間隔の秒部分の 1\/1000000。

詳細については、「["ffffff" カスタム書式指定子](#f6Specifier)」を参照してください。|`TimeSpan.Parse("0:0:6.8954321")`:

`ffffff` \-\-\> 895432

`ss\.ffffff` \-\-\> 06.895432| +|"fffffff"|時間間隔の秒部分の 1\/10000000 \(またはタイマー刻みの小数部\)。

詳細については、「["fffffff" カスタム書式指定子](#f7Specifier)」を参照してください。|`TimeSpan.Parse("0:0:6.8954321")`:

`fffffff` \-\-\> 8954321

`ss\.fffffff` \-\-\> 06.8954321| +|"F" または "%F"|時間間隔の秒部分の 1\/10。 その桁がゼロの場合には、何も表示されません。

詳細については、「["F" カスタム書式指定子](#F_Specifier)」を参照してください。|`TimeSpan.Parse("00:00:06.32")`:

`%F`: 3

`TimeSpan.Parse("0:0:3.091")`:

`ss\.F`: 03.| +|"FF"|時間間隔の秒部分の 1\/100。 小数の後続のゼロは表示されません。また、2 桁のゼロも含まれません。

詳細については、「["FF" カスタム書式指定子](#FF_Specifier)」を参照してください。|`TimeSpan.Parse("00:00:06.329")`:

`FF`: 32

`TimeSpan.Parse("0:0:3.101")`:

`ss\.FF`: 03.1| +|"FFF"|時間間隔の秒部分の 1\/1000。 小数の後続のゼロは含まれません。

詳細情報:|`TimeSpan.Parse("00:00:06.3291")`:

`FFF`: 329

`TimeSpan.Parse("0:0:3.1009")`:

`ss\.FFF`: 03.1| +|"FFFF"|時間間隔の秒部分の 1\/10000。 小数の後続のゼロは含まれません。

詳細については、「["FFFF" カスタム書式指定子](#F4_Specifier)」を参照してください。|`TimeSpan.Parse("00:00:06.32917")`:

`FFFFF`: 3291

`TimeSpan.Parse("0:0:3.10009")`:

`ss\.FFFF`: 03.1| +|"FFFFF"|時間間隔の秒部分の 1\/100000。 小数の後続のゼロは含まれません。

詳細については、「["FFFFF" カスタム書式指定子](#F5_Specifier)」を参照してください。|`TimeSpan.Parse("00:00:06.329179")`:

`FFFFF`: 32917

`TimeSpan.Parse("0:0:3.100009")`:

`ss\.FFFFF`: 03.1| +|"FFFFFF"|時間間隔の秒部分の 1\/1000000。 小数の後続のゼロは表示されません。

詳細については、「["FFFFFF" カスタム書式指定子](#F6_Specifier)」を参照してください。|`TimeSpan.Parse("00:00:06.3291791")`:

`FFFFFF`: 329179

`TimeSpan.Parse("0:0:3.1000009")`:

`ss\.FFFFFF`: 03.1| +|"FFFFFFF"|時間間隔の秒部分の 1\/10000000。 小数の後続のゼロは表示されません。また、7 桁のゼロも表示されません。

詳細については、「["FFFFFFF" カスタム書式指定子](#F7_Specifier)」を参照してください。|`TimeSpan.Parse("00:00:06.3291791")`:

`FFFFFF`: 3291791

`TimeSpan.Parse("0:0:3.1900000")`:

`ss\.FFFFFF`: 03.19| +|*'string*'|リテラル文字列の区切り記号。

詳細については、「[その他の文字](#Other)」を参照してください。|`new TimeSpan(14, 32, 17):`

`hh':'mm':'ss` \-\-\> "14:32:17"| +|\\|エスケープ文字。

詳細については、「[その他の文字](#Other)」を参照してください。|`new TimeSpan(14, 32, 17):`

`hh\:mm\:ss` \-\-\> "14:32:17"| +|その他の文字|エスケープされないその他の文字はすべて、カスタム書式指定子として解釈されます。

詳細については、「[その他の文字](#Other)」を参照してください。|`new TimeSpan(14, 32, 17):`

`hh\:mm\:ss` \-\-\> "14:32:17"| + + +## "d" カスタム書式指定子 + "d" カスタム書式指定子は、時間間隔の日数を表す プロパティの値を出力します。 値が 1 桁を超える場合でも、 値の完全な日数が出力されます。 プロパティの値が 0 の場合、指定子は "0" を出力します。 + + "d" カスタム書式指定子が単独で使用される場合は、間違って標準書式指定文字列として解釈されないように "%d" を指定します。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#3)] + [!code-vb[Conceptual.TimeSpan.Custom#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#3)] + + "d" カスタム書式指定子の使用例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#4)] + [!code-vb[Conceptual.TimeSpan.Custom#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#4)] + + [表のトップへ](#table) + + +## "dd" ~ "dddddddd" カスタム書式指定子 + "dd"、"ddd"、"dddd"、"ddddd"、"dddddd"、"ddddddd"、および "dddddddd" カスタム書式指定子は、時間間隔の日数を表す プロパティの値を出力します。 + + 出力文字列には、書式指定子の "d" 文字の数で指定される桁数以上が含まれ、必要に応じて、先行ゼロで埋められます。 日数の桁数が書式指定子の "d" 文字の数を超える場合は、結果文字列に完全な日数が出力されます。 + + 次の例では、これらの書式指定子を使用して、2 つの 値の文字列形式を表示します。 最初の時間間隔の日の部分の値は 0 です。2 番目の時間間隔の日の部分の値は 365 です。 + + [!code-csharp[Conceptual.TimeSpan.Custom#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#5)] + [!code-vb[Conceptual.TimeSpan.Custom#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#5)] + + [表のトップへ](#table) + + +## "h" カスタム書式指定子 + "h" カスタム書式指定子は、日の部分の一部としてカウントされない、時間間隔の時間数を表す プロパティの値を出力します。 プロパティの値が 0 ~ 9 の場合は 1 桁の文字列値を返し、 プロパティの値が 10 ~ 23 の場合は 2 桁の文字列値を返します。 + + "h" カスタム書式指定子が単独で使用される場合は、誤って標準書式指定文字列として解釈されないように "%h" を指定します。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#6)] + [!code-vb[Conceptual.TimeSpan.Custom#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#6)] + + 通常、解析操作では、1 つの数値のみを含む入力文字列は日数として解釈されます。 代わりに "%h" カスタム書式指定子を使用すると、数値文字列を時間数として解釈できます。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#8)] + [!code-vb[Conceptual.TimeSpan.Custom#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#8)] + + "h" カスタム書式指定子の使用例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#7)] + [!code-vb[Conceptual.TimeSpan.Custom#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#7)] + + [表のトップへ](#table) + + +## "hh" カスタム書式指定子 + "hh" カスタム書式指定子は、日の部分の一部としてカウントされない、時間間隔の時間数を表す プロパティの値を出力します。 0 ~ 9 の値の場合は、出力文字列に先行ゼロが含まれます。 + + 通常、解析操作では、1 つの数値のみを含む入力文字列は日数として解釈されます。 代わりに "hh" カスタム書式指定子を使用すると、数値文字列を時間数として解釈できます。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#9)] + [!code-vb[Conceptual.TimeSpan.Custom#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#9)] + + "hh" カスタム書式指定子の使用例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#10)] + [!code-vb[Conceptual.TimeSpan.Custom#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#10)] + + [表のトップへ](#table) + + +## "m" カスタム書式指定子 + "m" カスタム書式指定子は、日の部分の一部としてカウントされない、時間間隔の分数を表す プロパティの値を出力します。 プロパティの値が 0 ~ 9 の場合は 1 桁の文字列値を返し、 プロパティの値が 10 ~ 59 の場合は 2 桁の文字列値を返します。 + + "m" カスタム書式指定子が単独で使用される場合は、誤って標準書式指定文字列として解釈されないように "%m" を指定します。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#6)] + [!code-vb[Conceptual.TimeSpan.Custom#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#6)] + + 通常、解析操作では、1 つの数値のみを含む入力文字列は日数として解釈されます。 代わりに "%m" カスタム書式指定子を使用すると、数値文字列を分数として解釈できます。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#11)] + [!code-vb[Conceptual.TimeSpan.Custom#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#11)] + + "m" カスタム書式指定子の使用例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#12)] + [!code-vb[Conceptual.TimeSpan.Custom#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#12)] + + [表のトップへ](#table) + + +## "mm" カスタム書式指定子 + "mm" カスタム書式指定子は、時間または日の部分の一部として含まれない、時間間隔の分数を表す プロパティの値を出力します。 0 ~ 9 の値の場合は、出力文字列に先行ゼロが含まれます。 + + 通常、解析操作では、1 つの数値のみを含む入力文字列は日数として解釈されます。 代わりに "mm" カスタム書式指定子を使用すると、数値文字列を分数として解釈できます。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#13](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#13)] + [!code-vb[Conceptual.TimeSpan.Custom#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#13)] + + "mm" カスタム書式指定子の使用例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#14](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#14)] + [!code-vb[Conceptual.TimeSpan.Custom#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#14)] + + [表のトップへ](#table) + + +## "s" カスタム書式指定子 + "s" カスタム書式指定子は、時間、日、および分の部分のいずれの一部としても含まれない、時間間隔の秒数を表す プロパティの値を出力します。 プロパティの値が 0 ~ 9 の場合は 1 桁の文字列値を返し、 プロパティの値が 10 ~ 59 の場合は 2 桁の文字列値を返します。 + + "s" カスタム書式指定子が単独で使用される場合は、誤って標準書式指定文字列として解釈されないように "%s" を指定します。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#15](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#15)] + [!code-vb[Conceptual.TimeSpan.Custom#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#15)] + + 通常、解析操作では、1 つの数値のみを含む入力文字列は日数として解釈されます。 代わりに "%s" カスタム書式指定子を使用すると、数値文字列を秒数として解釈できます。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#17](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#17)] + [!code-vb[Conceptual.TimeSpan.Custom#17](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#17)] + + "s" カスタム書式指定子の使用例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#16](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#16)] + [!code-vb[Conceptual.TimeSpan.Custom#16](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#16)] + + [表のトップへ](#table) + + +## "ss" カスタム書式指定子 + "ss" カスタム書式指定子は、時間、日、および分の部分のいずれの一部としても含まれない、時間間隔の秒数を表す プロパティの値を出力します。 0 ~ 9 の値の場合は、出力文字列に先行ゼロが含まれます。 + + 通常、解析操作では、1 つの数値のみを含む入力文字列は日数として解釈されます。 代わりに "ss" カスタム書式指定子を使用すると、数値文字列を秒数として解釈できます。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#18](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#18)] + [!code-vb[Conceptual.TimeSpan.Custom#18](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#18)] + + "ss" カスタム書式指定子の使用例を次に示します。 + + [!code-csharp[Conceptual.TimeSpan.Custom#19](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/customexamples1.cs#19)] + [!code-vb[Conceptual.TimeSpan.Custom#19](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/customexamples1.vb#19)] + + [表のトップへ](#table) + + +## "f" カスタム書式指定子 + "f" カスタム書式指定子は、時間間隔の秒部分の 1\/10 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 メソッドまたは メソッドを呼び出す解析操作では、入力文字列に 1 桁の小数部が含まれている必要があります。 + + "f" カスタム書式指定子が単独で使用される場合は、誤って標準書式指定文字列として解釈されないように "%f" を指定します。 + + 次の例では、"f" カスタム書式指定子を使用して、 値の秒部分の 1\/10 を表示します。"f" は最初に唯一の書式指定子として使用されてから、カスタム書式指定文字列で "s" 指定子と結合されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs#20)] + [!code-vb[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/fspecifiers1.vb#20)] + + [表のトップへ](#table) + + +## "ff" カスタム書式指定子 + "ff" カスタム書式指定子は、時間間隔の秒部分の 1\/100 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 メソッドまたは メソッドを呼び出す解析操作では、入力文字列に 2 桁の小数部が含まれている必要があります。 + + 次の例では、"ff" カスタム書式指定子を使用して、 値の秒部分の 1\/100 を表示します。"ff" は最初に唯一の書式指定子として使用されてから、カスタム書式指定文字列で "s" 指定子と結合されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs#20)] + [!code-vb[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/fspecifiers1.vb#20)] + + [表のトップへ](#table) + + +## "fff" カスタム書式指定子 + "fff" カスタム書式指定子 \("f" 文字が 3 つ\) は、時間間隔の秒部分の 1\/1000 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 メソッドまたは メソッドを呼び出す解析操作では、入力文字列に 3 桁の小数部が含まれている必要があります。 + + 次の例では、"fff" カスタム書式指定子を使用して、 値の秒部分の 1\/1000 を表示します。"fff" は最初に唯一の書式指定子として使用されてから、カスタム書式指定文字列で "s" 指定子と結合されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs#20)] + [!code-vb[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/fspecifiers1.vb#20)] + + [表のトップへ](#table) + + +## "ffff" カスタム書式指定子 + "ffff" カスタム書式指定子 \("f" 文字が 4 つ\) は、時間間隔の秒部分の 1\/10000 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 メソッドまたは メソッドを呼び出す解析操作では、入力文字列に 4 桁の小数部が含まれている必要があります。 + + 次の例では、"ffff" カスタム書式指定子を使用して、 値の秒部分の 1\/10000 を表示します。"ffff" は最初に唯一の書式指定子として使用されてから、カスタム書式指定文字列で "s" 指定子と結合されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs#20)] + [!code-vb[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/fspecifiers1.vb#20)] + + [表のトップへ](#table) + + +## "fffff" カスタム書式指定子 + "fffff" カスタム書式指定子 \("f" 文字が 5 つ\) は、時間間隔の秒部分の 1\/100000 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 メソッドまたは メソッドを呼び出す解析操作では、入力文字列に 5 桁の小数部が含まれている必要があります。 + + 次の例では、"fffff" カスタム書式指定子を使用して、 値の秒部分の 1\/100000 を表示します。"fffff" は最初に、唯一の書式指定子として使用されてから、カスタム書式指定文字列で "s" 指定子と結合されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs#20)] + [!code-vb[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/fspecifiers1.vb#20)] + + [表のトップへ](#table) + + +## "ffffff" カスタム書式指定子 + "ffffff" カスタム書式指定子 \("f" 文字が 6 つ\) は、時間間隔の秒部分の 1\/1000000 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 メソッドまたは メソッドを呼び出す解析操作では、入力文字列に 6 桁の小数部が含まれている必要があります。 + + 次の例では、"ffffff" カスタム書式指定子を使用して、 値の秒部分の 1\/1000000 を表示します。 最初に唯一の書式指定子として使用されてから、カスタム書式指定文字列で "s" 指定子と結合されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs#20)] + [!code-vb[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/fspecifiers1.vb#20)] + + [表のトップへ](#table) + + +## "fffffff" カスタム書式指定子 + "fffffff" カスタム書式指定子 \("f" 文字が 7 つ\) は、時間間隔の秒部分の 1\/10000000 \(またはタイマー刻みの小数部\) を出力します。 メソッドまたは メソッドを呼び出す解析操作では、入力文字列に 7 桁の小数部が含まれている必要があります。 + + 次の例では、"fffffff" カスタム書式指定子を使用して、 値のタイマー刻みの小数部を表示します。 最初に唯一の書式指定子として使用されてから、カスタム書式指定文字列で "s" 指定子と結合されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/fspecifiers1.cs#20)] + [!code-vb[Conceptual.TimeSpan.Custom#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/fspecifiers1.vb#20)] + + [表のトップへ](#table) + + +## "F" カスタム書式指定子 + "F" カスタム書式指定子は、時間間隔の秒部分の 1\/10 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 時間間隔の秒部分の 1\/10 が 0 の場合、それは結果文字列に含まれません。 メソッドまたは メソッドを呼び出す解析操作では、秒の 1\/10 の桁を使用するかどうかはオプションです。 + + "F" カスタム書式指定子が単独で使用される場合は、誤って標準書式指定文字列として解釈されないように "%F" を指定します。 + + 次の例では、"F" カスタム書式指定子を使用して、 値の秒部分の 1\/10 を表示します。 このカスタム書式指定子は解析操作でも使用されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#21](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/f_specifiers1.cs#21)] + [!code-vb[Conceptual.TimeSpan.Custom#21](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/f_specifiers1.vb#21)] + + [表のトップへ](#table) + + +## "FF" カスタム書式指定子 + "FF" カスタム書式指定子は、時間間隔の秒部分の 1\/100 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 後続の小数のゼロがある場合、それらの数字は結果文字列に含まれません。 メソッドまたは メソッドを呼び出す解析操作では、秒の 1\/10 および 1\/100 の桁を使用するかどうかはオプションです。 + + 次の例では、"FF" カスタム書式指定子を使用して、 値の秒部分の 1\/100 を表示します。 このカスタム書式指定子は解析操作でも使用されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#22](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/f_specifiers1.cs#22)] + [!code-vb[Conceptual.TimeSpan.Custom#22](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/f_specifiers1.vb#22)] + + [表のトップへ](#table) + + +## "FFF" カスタム書式指定子 + "FFF" カスタム書式指定子 \("F" 文字が 3 つ\) は、時間間隔の秒部分の 1\/1000 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 後続の小数のゼロがある場合、それらの数字は結果文字列に含まれません。 メソッドまたは メソッドを呼び出す解析操作では、秒の 1\/10、1\/100、および 1\/1000 の桁を使用するかどうかはオプションです。 + + 次の例では、"FFF" カスタム書式指定子を使用して、 値の秒部分の 1\/1000 を表示します。 このカスタム書式指定子は解析操作でも使用されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#23](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/f_specifiers1.cs#23)] + [!code-vb[Conceptual.TimeSpan.Custom#23](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/f_specifiers1.vb#23)] + + [表のトップへ](#table) + + +## "FFFF" カスタム書式指定子 + "FFFF" カスタム書式指定子 \("F" 文字が 4 つ\) は、時間間隔の秒部分の 1\/10000 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 後続の小数のゼロがある場合、それらの数字は結果文字列に含まれません。 メソッドまたは メソッドを呼び出す解析操作では、秒の 1\/10、1\/100、1\/1000、および 1\/10000 の桁を使用するかどうかはオプションです。 + + 次の例では、"FFFF" カスタム書式指定子を使用して、 値の秒部分の 1\/10000 を表示します。 "FFFF" カスタム書式指定子は解析操作でも使用されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#24](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/f_specifiers1.cs#24)] + [!code-vb[Conceptual.TimeSpan.Custom#24](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/f_specifiers1.vb#24)] + + [表のトップへ](#table) + + +## "FFFFF" カスタム書式指定子 + "FFFFF" カスタム書式指定子 \("F" 文字が 5 つ\) は、時間間隔の秒部分の 1\/100000 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 後続の小数のゼロがある場合、それらの数字は結果文字列に含まれません。 メソッドまたは メソッドを呼び出す解析操作では、秒の 1\/10、1\/100、1\/1000、1\/10000、および 1\/100000 の桁を使用するかどうかはオプションです。 + + 次の例では、"FFFFF" カスタム書式指定子を使用して、 値の秒部分の 1\/100000 を表示します。 "FFFFF" カスタム書式指定子は解析操作でも使用されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#25](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/f_specifiers1.cs#25)] + [!code-vb[Conceptual.TimeSpan.Custom#25](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/f_specifiers1.vb#25)] + + [表のトップへ](#table) + + +## "FFFFFF" カスタム書式指定子 + "FFFFFF" カスタム書式指定子 \("F" 文字が 6 つ\) は、時間間隔の秒部分の 1\/1000000 を出力します。 書式指定操作では、これより下位の小数桁は切り捨てられます。 後続の小数のゼロがある場合、それらの数字は結果文字列に含まれません。 メソッドまたは メソッドを呼び出す解析操作では、秒の 1\/10、1\/100、1\/1000、1\/10000、1\/100000 および 1\/1000000 の桁を使用するかどうかはオプションです。 + + 次の例では、"FFFFFF" カスタム書式指定子を使用して、 値の秒部分の 1\/1000000 を表示します。 このカスタム書式指定子は解析操作でも使用されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#26](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/f_specifiers1.cs#26)] + [!code-vb[Conceptual.TimeSpan.Custom#26](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/f_specifiers1.vb#26)] + + [表のトップへ](#table) + + +## "FFFFFFF" カスタム書式指定子 + "FFFFFFF" カスタム書式指定子 \("F" 文字が 7 つ\) は、時間間隔の秒部分の 1\/10000000 \(またはタイマー刻みの小数部\) を出力します。 後続の小数のゼロがある場合、それらの数字は結果文字列に含まれません。 メソッドまたは メソッドを呼び出す解析操作では、入力文字列の 7 桁の小数部を使用するかどうかはオプションです。 + + 次の例では、"FFFFFFF" カスタム書式指定子を使用して、 値の秒部分の小数部を表示します。 このカスタム書式指定子は解析操作でも使用されます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#27](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/f_specifiers1.cs#27)] + [!code-vb[Conceptual.TimeSpan.Custom#27](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/f_specifiers1.vb#27)] + + [表のトップへ](#table) + + +## その他の文字 + 空白文字など、書式指定文字列内のエスケープされないその他の文字は、カスタム書式指定子として解釈されます。 ほとんどの場合、エスケープされないその他の文字が存在すると、 が発生します。 + + 書式指定文字列にリテラル文字を含める方法は 2 つあります。 + +- 単一引用符 \(リテラル文字列の区切り記号\) で囲みます。 + +- エスケープ文字として解釈される円記号 \("\\"\) を前に付けます。 このため、C\# では、書式指定文字列に @ を付けるか、リテラル文字の前に追加の円記号が指定されている必要があります。 + + 条件ロジックを使用してエスケープされたリテラルを書式指定文字列に含めることが必要になる場合もあります。 次の例では、条件ロジックを使用して負の時間間隔の符号を含めます。 + + [!code-csharp[Conceptual.TimeSpan.Custom#29](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/negativevalues1.cs#29)] + [!code-vb[Conceptual.TimeSpan.Custom#29](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/negativevalues1.vb#29)] + + .NET Framework では、時間間隔の区切り記号の文法が定義されていません。 そのため、日と時間、時間と分、分と秒、および秒と秒の小数部の間の区切り記号は、書式指定文字列ですべて文字リテラルとして扱う必要があります。 + + 次の例では、エスケープ文字と単一引用符の両方を使用して、出力文字列に "minutes" という単語を含むカスタム書式指定文字列を定義しています。 + + [!code-csharp[Conceptual.TimeSpan.Custom#28](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.custom/cs/literal1.cs#28)] + [!code-vb[Conceptual.TimeSpan.Custom#28](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.custom/vb/literal1.vb#28)] + + [表のトップへ](#table) + +## 参照 + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + [標準の時間間隔書式指定文字列](../../../docs/standard/base-types/standard-timespan-format-strings.md) \ No newline at end of file diff --git a/docs/standard/base-types/details-of-regular-expression-behavior.md b/docs/standard/base-types/details-of-regular-expression-behavior.md new file mode 100644 index 00000000000..1d123f985ea --- /dev/null +++ b/docs/standard/base-types/details-of-regular-expression-behavior.md @@ -0,0 +1,158 @@ +--- +title: "正規表現の動作の詳細 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "正規表現、動作" + - ".NET Framework 正規表現、動作" +ms.assetid: 0ee1a6b8-caac-41d2-917f-d35570021b10 +caps.latest.revision: 27 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 27 +--- +# 正規表現の動作の詳細 +.NET Framework の正規表現エンジンはバックトラッキング正規表現検索エンジンであり、Perl、Python、Emacs、および Tcl で使用されているのと同じ従来型の非決定性有限オートマトン \(NFA: Nondeterministic Finite Automaton\) エンジンを採用しています。 このエンジンは、awk、egrep、または lex に見られるような、高速であるが制限が多い、純粋な正規表現決定性有限オートマトン \(DFA: Deterministic Finite Automaton\) エンジンとは異なります。 また、標準化されているが低速な POSIX NFA とも異なります。 次のセクションでは、3 種類の正規表現エンジンについて説明し、.NET Framework の正規表現が従来型 NFA エンジンを使用して実装されている理由について説明します。 + +## NFA エンジンの利点 + DFA エンジンがパターン一致を実行する場合、その処理順序は入力文字列によって決定されます。 このエンジンは入力文字列の先頭で開始し、順番に進んで、次の文字が正規表現パターンと一致するかどうかを判断します。 このエンジンでは、想定され得る最長の文字列を確実に検索できます。 同じ文字が 2 回テストされることはないため、DFA エンジンはバックトラッキングをサポートしません。 しかし、DFA エンジンには限定された状態しか含まれないため、前方参照を使用してパターンを検索することはできません。また、明示的な展開形式が作成されないため、部分式をキャプチャできません。 + + DFA エンジンとは異なり、従来型 NFA エンジンがパターン一致を実行する場合、その処理順序は正規表現パターンによって決定されます。 特定の言語要素を処理するときに、エンジンは最長一致を使用します。つまり、できるだけ多くの入力文字列と一致します。 しかし、部分式の一致が見つかった後の状態も保存します。 一致が最終的に見つからなかった場合、エンジンは保存した状態に戻すことができるため、さらに照合を試行できます。 正規表現の後の言語要素も照合できるようにするための、この見つかった部分式の一致を破棄するプロセスを*バックトラッキング*と呼びます。 NFA エンジンは、バックトラッキングを使用して、ある正規表現から展開できるすべての形式を特定の順序でテストし、最初に一致した文字列を採用します。 NFA エンジンでは、見つかった文字列用にその正規表現固有の展開形式が作成されるため、部分式に一致する文字列、および一致する前方参照をキャプチャできます。 しかし、従来型 NFA ではバックトラックが行われるため、1 つの状態に到達する経路が複数ある場合には、同じ状態に何度も到達することがあり得ます。 その結果、最悪の場合には指数関数的に実行速度が遅くなることがあります。 従来型 NFA エンジンでは、最初に見つかった文字列が採用されるため、その他の \(おそらくはより長い\) 一致文字列が見つからないままになる場合もあります。 + + POSIX NFA エンジンは従来型 NFA エンジンと似ていますが、一致する最長の文字列が見つかるまでバックトラックが継続される点が異なります。 その結果、POSIX NFA エンジンは従来型 NFA エンジンよりも遅くなります。また、POSIX NFA エンジンを使用する場合は、バックトラッキング検索の順序を変更して、短い一致文字列を長い一致文字列よりも優先させることはできません。 + + 従来型 NFA エンジンは、DFA エンジンや POSIX NFA エンジンよりも文字列の一致をより厳密に制御するため、プログラマに人気があります。 NFA エンジンは、最悪の場合には実行速度が遅くなることもありますが、あいまいさを少なくし、バックトラッキングを制限するパターンを使用することで、一致する文字列を線形時間または多項式時間で見つけるように調整できます。 言い換えると、NFA エンジンはパフォーマンスと引き換えに能力と柔軟性を向上させますが、ほとんどの場合、正規表現が適切に記述されていれば十分に許容できるパフォーマンスを実現でき、バックトラッキングによってパフォーマンスが指数関数に低下する状況を回避します。 + +> [!NOTE] +> 過度なバックトラッキングによって発生するパフォーマンスの低下およびそのような問題を回避する正規表現の作成方法については、「[バックトラッキング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md)」を参照してください。 + +## .NET Framework エンジンの機能 + 従来型の NFA エンジンの長所を利用するために、.NET Framework 正規表現エンジンには、プログラマがバックトラッキング エンジンを調整できるようにするための構成体セットが組み込まれています。 それらの構成体を使用すると、高速検索を実行したり、他の展開形式よりも特定の展開形式を優先させたりできます。 + + .NET Framework の正規表現エンジンのその他の機能は、次のとおりです。 + +- 最短一致の量指定子: `??`、`*?`、`+?`、`{`*n*`,`*m*`}?`。 これらの構成体は、バックトラッキング エンジンに対し、繰り返しの回数が最も少ない文字列を最初に検索するように指示します。 逆に、通常の最長一致の量指定子は、繰り返し回数の最も多い文字列を最初に検索しようとします。 2 つの量指定子の動作の違いを次の例に示します。 正規表現は、数字で終わる文を照合し、キャプチャ グループはその数字を抽出します。 正規表現 `.+(\d+)\.` には、最長一致の量指定子 `.+` が含まれます。これにより、正規表現エンジンは、数字の最後の桁のみキャプチャします。 対照的に、正規表現 `.+?(\d+)\.` には、最短一致の量指定子 `.+?` が含まれます。これにより、正規表現エンジンは数字全体をキャプチャします。 + + [!code-csharp[Conceptual.RegularExpressions.Design#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/lazy1.cs#1)] + [!code-vb[Conceptual.RegularExpressions.Design#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/lazy1.vb#1)] + + この正規表現の最長一致バージョンと最短一致バージョンは、次の表に示すように定義されています。 + + |パターン|説明| + |----------|--------| + |`.+` \(最長一致の量指定子\)|任意の文字の 1 回以上の出現に一致します。 これにより、正規表現エンジンは文字列全体を照合してから、必要に応じてバックトラックし、パターンの残りの部分を照合します。| + |`.+?` \(最短一致の量指定子\)|任意の文字の 1 回以上の出現 \(ただし、可能な限り少ない回数\) に一致します。| + |`(\d+)`|1 文字以上の数字と一致し、その文字を 1 番目のキャプチャ グループに代入します。| + |`\.`|ピリオドと一致します。| + + 最短一致の量指定子の詳細については、「[限定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md)」を参照してください。 + +- 肯定先読み: `(?=`*subexpression*`)`。 この機能により、バックトラッキング エンジンは部分式と一致する文字列を見つけた後で、テキスト内の同じ位置に戻ることができます。 同じ位置から複数のパターンを確認しながらテキスト全体を検索する場合に便利です。 エンジンは、一致するテキストに部分文字列を含めずに、一致文字列の末尾に部分文字列が存在するかどうかも検証できます。 次の例では、肯定先読みを使用して、後に区切り記号が続かない文中の単語を抽出します。 + + [!code-csharp[Conceptual.RegularExpressions.Design#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/lookahead1.cs#2)] + [!code-vb[Conceptual.RegularExpressions.Design#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/lookahead1.vb#2)] + + 正規表現 `\b[A-Z]+\b(?=\P{P})` は、次の表に示すように定義されています。 + + |パターン|説明| + |----------|--------| + |`\b`|ワード境界から照合を開始します。| + |`[A-Z]+`|任意の英字と 1 回以上、一致します。 メソッドが オプションを使用して呼び出されているため、比較では大文字と小文字が区別されません。| + |`\b`|ワード境界で照合を終了します。| + |`(?=\P{P})`|先読みして次の文字が区切り記号かどうかを判定します。 区切り記号でない場合は一致と見なされます。| + + 肯定先読みアサーションの詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + +- 負のな先読み: `(?!`*subexpression*`)`。 この機能により、部分式に一致する文字列が見つからなかった場合だけ、式に一致できるようになります。 ある文字列を除外する表現の方が、含める表現よりも単純になることが多いため、この機能は検索を簡略化する場合に特に力を発揮します。 たとえば、"non" で始まらない単語を表す表現を記述するのは簡単ではありません。 次の例では、否定先読みを使用してこれらを除外します。 + + [!code-csharp[Conceptual.RegularExpressions.Design#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/lookahead2.cs#3)] + [!code-vb[Conceptual.RegularExpressions.Design#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/lookahead2.vb#3)] + + 正規表現パターン `\b(?!non)\w+\b` は、次の表に示すように定義されています。 + + |パターン|説明| + |----------|--------| + |`\b`|ワード境界から照合を開始します。| + |`(?!non)`|先読みして、現在の文字列が "non" で始まらないことを確認します。 "non" で始まる場合は、一致と見なされません。| + |`(\w+)`|1 つ以上の単語文字に一致します。| + |`\b`|ワード境界で照合を終了します。| + + 否定先読みアサーションの詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + +- 条件付き評価: `(?(`*expression*`)`*yes* `|` *no* `)` および `(?(`*name*`)`*yes* `|` *expression* は照合する部分式の*no*`)`は、*name* キャプチャ グループの名前です *expression* が一致しない場合、または *name* が空でない有効なキャプチャ グループの場合に *name* が空でない有効なキャプチャ グループと一致するか、*no* は照合する部分式で *expression* である場合 *yes* は一致する文字列です。 この機能により、エンジンは直前の部分式の一致結果またはゼロ幅アサーションの結果に従って、複数の代替パターンを使用した検索を実行できます。 そのため、より強力な前方参照が可能になります。たとえば、直前の部分式が一致したかどうかに基づいて部分式を照合できます。 次の例の正規表現は、パブリック使用と内部使用の両方を目的とした段落と一致します。 内部使用のみを目的とした段落は `` タグで始まります。 正規表現パターン `^(?\\s)?(?(Pvt)((\w+\p{P}?\s)+)|((\w+\p{P}?\s)+))\r?$` は、条件付き評価を使用して、パブリック使用と内部使用を目的とした段落の内容を別のキャプチャ グループに代入します。 これらの段落は、異なる方法で処理できます。 + + [!code-csharp[Conceptual.RegularExpressions.Design#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/conditional1.cs#4)] + [!code-vb[Conceptual.RegularExpressions.Design#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/conditional1.vb#4)] + + 正規表現パターンは、次の表に示すように定義されています。 + + |パターン|説明| + |----------|--------| + |`^`|行の先頭から照合を開始します。| + |`(?\\s)?`|文字列 `` の後に空白文字が続くパターンの 0 回以上の出現と一致します。 一致を `Pvt` という名前のキャプチャ グループに代入します。| + |`(?(Pvt)((\w+\p{P}?\s)+)`|`Pvt` キャプチャ グループが存在する場合は、1 個以上の単語文字の後に 0 個または 1 個の区切り記号と 1 つの空白文字が続くパターンの 1 回以上の出現と一致します。 部分文字列を最初のキャプチャ グループに代入します。| + |`|((\w+\p{P}?\s)+))`|`Pvt` キャプチャ グループが存在しない場合は、1 個以上の単語文字の後に 0 個または 1 個の区切り記号と 1 つの空白文字が続くパターンの 1 回以上の出現と一致します。 部分文字列を 3 番目のキャプチャ グループに代入します。| + |`\r?$`|行末または文字列の末尾と一致します。| + + 条件付き評価の詳細については、「[代替構成体](../../../docs/standard/base-types/alternation-constructs-in-regular-expressions.md)」を参照してください。 + +- グループ定義の均等化: `(?<`*name1*`-`*name2*`>`*subexpression*`)`。 この機能により、正規表現エンジンは、かっこや左右の角かっこなどの入れ子になった構成体を追跡できます。 例については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + +- 非バックトラッキング部分式 \(別名最長一致部分式\) : `(?>`*subexpression*`)`。 この機能により、バックトラッキング エンジンは、部分式と最初に一致した文字列だけを確実に検索できるようになります。この場合、表現は、部分式を含む表現とは関係ないように処理されます。 この構成体を使用しない場合は、より大きな正規表現によるバックトラッキング検索時に、部分式の動作が変化する可能性があります。 たとえば、正規表現 `(a+)\w` は 1 つ以上の "a" 文字を、一連の "a" 文字に続く単語文字と共に照合し、一連の "a" 文字を最初のキャプチャ グループに代入します。ただし、入力文字列の最後の文字も "a" の場合は、`\w` 言語要素によって照合し、キャプチャ グループには含められません。 + + [!code-csharp[Conceptual.RegularExpressions.Design#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/nonbacktracking2.cs#7)] + [!code-vb[Conceptual.RegularExpressions.Design#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/nonbacktracking2.vb#7)] + + 正規表現 `((?>a+))\w` ではこの動作は回避されます。 連続するすべての "a" 文字はバックトラッキングなしで照合されるため、最初のキャプチャ グループにはすべての連続する "a" 文字が含まれます。 "a" 文字の後に "a" 以外の文字が少なくとも 1 つ続かない場合は、一致と見なされません。 + + [!code-csharp[Conceptual.RegularExpressions.Design#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/nonbacktracking1.cs#8)] + [!code-vb[Conceptual.RegularExpressions.Design#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/nonbacktracking1.vb#8)] + + 非バックトラッキング部分式の詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + +- クラス コンストラクターまたは静的インスタンス一致メソッドに オプションを指定することで指定される右から左への一致。 この機能は、左から右ではなく右から左に向かって検索する場合や、パターンの左側ではなく右側で検索を開始した方が効果的な場合に便利です。 次の例に示すように、右から左への一致を使用すると、最長一致の量指定子の動作を変更できます。 例では、数字で終わる文に対して 2 つの検索を実行します。 最長一致の量指定子 `+` を使用する左から右への検索は、文中の 6 桁の 1 つと一致しますが、右から左への検索は 6 桁すべてと一致します。 正規表現パターンの説明については、このセクションで前に示した最短一致の量指定子の例を参照してください。 + + [!code-csharp[Conceptual.RegularExpressions.Design#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.design/cs/rtl1.cs#6)] + [!code-vb[Conceptual.RegularExpressions.Design#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.design/vb/rtl1.vb#6)] + + 右から左への一致の詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」を参照してください。 + +- 正の数値、負のな後読み: 正の後読みの `(?<=`*subexpression*`)`、負のな後読みの `(? \ No newline at end of file diff --git a/docs/standard/base-types/enumeration-format-strings.md b/docs/standard/base-types/enumeration-format-strings.md new file mode 100644 index 00000000000..5b38972a54f --- /dev/null +++ b/docs/standard/base-types/enumeration-format-strings.md @@ -0,0 +1,56 @@ +--- +title: "列挙型書式指定文字列 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "列挙型書式指定文字列" + - "書式指定子, 列挙型書式指定文字列" + - "書式指定 [.NET Framework], 列挙型" +ms.assetid: dd1ff672-1052-42cf-8666-4924fb6cd1a1 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 列挙型書式指定文字列 + メソッドを使用すると、列挙型のメンバーの数値、16 進数値、または文字列値を表す新しい文字列オブジェクトを作成できます。 `ToString` メソッドでは、返す値を指定するために列挙型書式指定文字列が使用されます。 + + 列挙型書式指定文字列と、各書式指定文字列が返す値の一覧を次の表に示します。 列挙型書式指定子では、大文字と小文字は区別されません。 + +|書式指定文字列|結果| +|-------------|--------| +|G または g|列挙型エントリを文字列値として表示できる場合は、文字列値として表示されます。文字列値として表示できない場合には、現在のインスタンスの整数値が表示されます。 **Flags** 属性が設定されており、これによって列挙型が定義されている場合には、有効な各エントリの文字列値がコンマで区切られた形式で連結されます。 **Flags** 属性が設定されていない場合には、無効な値が数値エントリとして表示されます。 G 書式指定子の例を次に示します。

[!code-csharp[Formatting.Enum#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Enum/cs/enum1.cs#1)] + [!code-vb[Formatting.Enum#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Enum/vb/enum1.vb#1)]| +|F または f|列挙エントリを文字列値として表示できる場合には、文字列値として表示されます。 **Flags** 属性がない場合でも、列挙値の各エントリの合計値として値を完全に表示できる場合には、有効な各エントリの文字列値が、コンマで区切った形式で連結されます。 列挙エントリによって値を完全に決定できない場合は、この値は整数値として書式指定されます。 F 書式指定子の例を次に示します。

[!code-csharp[Formatting.Enum#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Enum/cs/enum1.cs#2)] + [!code-vb[Formatting.Enum#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Enum/vb/enum1.vb#2)]| +|D または d|列挙エントリが、表現可能な最も短い整数値として表示されます。 D 書式指定子の例を次に示します。

[!code-csharp[Formatting.Enum#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Enum/cs/enum1.cs#3)] + [!code-vb[Formatting.Enum#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Enum/vb/enum1.vb#3)]| +|X または x|列挙エントリが 16 進数値として表示されます。 最小桁数である 8 桁で値を表示するため、必要に応じて先行ゼロが埋め込まれます。 X 書式指定子の例を次に示します。

[!code-csharp[Formatting.Enum#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Enum/cs/enum1.cs#4)] + [!code-vb[Formatting.Enum#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Enum/vb/enum1.vb#4)]| + +## 例 + `Red`、`Blue`、および `Green` の 3 つのエントリから成る `Colors` という列挙型を定義する例を次に示します。 + + [!code-csharp[Formatting.Enum#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Enum/cs/enum1.cs#5)] + [!code-vb[Formatting.Enum#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Enum/vb/enum1.vb#5)] + + 列挙値の定義が完了したら、次の方法でインスタンスを宣言できます。 + + [!code-csharp[Formatting.Enum#6](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Enum/cs/enum1.cs#6)] + [!code-vb[Formatting.Enum#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Enum/vb/enum1.vb#6)] + + その後、`Color.ToString(System.String)` メソッドを使用して、それに渡される書式指定子に応じてさまざまな方法で列挙値を表示できます。 + + [!code-csharp[Formatting.Enum#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Enum/cs/enum1.cs#7)] + [!code-vb[Formatting.Enum#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Enum/vb/enum1.vb#7)] + +## 参照 + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) \ No newline at end of file diff --git a/docs/standard/base-types/formatting-types.md b/docs/standard/base-types/formatting-types.md index a3c9369fa51..351b434e000 100644 --- a/docs/standard/base-types/formatting-types.md +++ b/docs/standard/base-types/formatting-types.md @@ -1,1404 +1,428 @@ --- -title: "型の書式設定" -description: "型の書式設定" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/20/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: cf497639-9f91-45cb-836f-998d1cea2f43 -translationtype: Human Translation -ms.sourcegitcommit: b967d8e55347f44a012e4ad8e916440ae228c8ec -ms.openlocfilehash: e9b8ad13a48dd43236769b130d6f8a75b7b023ca -ms.lasthandoff: 03/10/2017 - ---- - -# 型の書式設定 - -書式設定とはクラス、構造体、または列挙値のインスタンスを文字列形式に変換するプロセスのことで、多くの場合、変換した文字列をユーザーに表示したり、逆シリアル化して元のデータ型を復元したりするために行います。 この変換には次のような問題がある場合があります。 - -* 値の内部での格納方法に、ユーザーが望む表示方法が反映されない場合がある。 たとえば、電話番号が **8009999999** という形式で格納されることがあります。これではユーザーにはわかりにくいため、 代わりに **800-999-9999** と表示する必要があります。 数値をこのように書式指定する例については、「[カスタム書式指定文字列](#custom-format-strings)」を参照してください。 - -* オブジェクトから文字列形式への変換が直観的に理解しづらい場合がある。 たとえば、**Temperature** オブジェクトや **Person** オブジェクトの文字列形式がどのようになるのか、明確ではありません。 **Temperature** オブジェクトをさまざまな方法で書式指定する例については、「[標準書式指定文字列](#standard-format-strings)」を参照してください。 - -* 通常、カルチャ依存の書式指定が必要になる。 たとえば、通貨値を数字で表すアプリケーションでは、数値文字列にカルチャ別の通貨記号、桁区切り記号 (ほとんどのカルチャでは 1000 単位)、および小数点を含める必要があります。 例については、「[書式プロバイダーと IFormatProvider インターフェイスによるカルチャに依存した書式指定](#culture-sensitive-formatting-with-format-providers-and-the-iformatprovider-interface)」を参照してください。 - -* アプリケーションによっては、同じ値をさまざまな方法で表示する必要がある。 たとえば、列挙型のメンバーを表すために、その名前の文字列形式を表示する場合や、基になる値を表示する場合が考えられます。 [DayOfWeek](xref:System.DayOfWeek) 列挙体のメンバーをさまざまな方法で書式指定する例については、「[標準書式指定文字列](#standard-format-strings)」を参照してください。 - -.NET は書式設定機能が充実しているため、開発者はこうした要件を満たすことができます。 - +title: ".NET Framework における型の書式設定 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データの書式設定 [.NET Framework]" + - "日付 [.NET Framework]、書式設定" + - "日付の書式設定 [.NET Framework]" + - "数値の書式指定 [.NET Framework]" + - "ToString メソッド" + - "カスタム カルチャ文字列 [.NET Framework]" + - "数値 [.NET Framework]、書式設定" + - "書式指定 (文字列の) [.NET Framework]" + - "時刻 [.NET Framework]、書式設定" + - "通貨 [.NET Framework]、書式設定" + - "型 [.NET Framework]、書式設定" + - "書式指定子 [.NET Framework]" + - "時刻 [.NET Framework]、書式設定" + - "カルチャ [.NET Framework]、書式設定" + - "書式指定 [.NET Framework]、サポートされる型" + - "基本型 [.NET Framework]、書式設定" + - "カスタム書式指定 [.NET Framework]" + - "文字列 [.NET Framework]、書式設定" +ms.assetid: 0d1364da-5b30-4d42-8e6b-03378343343f +caps.latest.revision: 43 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 43 +--- +# .NET Framework における型の書式設定 + 書式設定とはクラス、構造体、または列挙値のインスタンスを文字列形式に変換するプロセスのことで、多くの場合、変換した文字列をユーザーに表示したり、逆シリアル化して元のデータ型を復元したりするために行います。 この変換には次のような問題がある場合があります。 + +- 値の内部での格納方法に、ユーザーが望む表示方法が反映されない場合がある。 たとえば、電話番号が 8009999999 という形式で格納されることがあります。これではユーザーにはわかりにくいため、 代わりに 800\-999\-9999 と表示する必要があります。 数値をこのように書式指定する例については、「[カスタム書式指定文字列](#customStrings)」を参照してください。 + +- オブジェクトから文字列形式への変換が直観的に理解しづらい場合がある。 たとえば、Temperature オブジェクトや Person オブジェクトの文字列形式がどのようになるのか、明確ではありません。 Temperature オブジェクトをさまざまな方法で書式指定する例については、「[標準書式指定文字列](#standardStrings)」を参照してください。 + +- 通常、カルチャ依存の書式指定が必要になる。 たとえば、通貨値を数字で表すアプリケーションでは、数値文字列にカルチャ別の通貨記号、桁区切り記号 \(ほとんどのカルチャでは 1000 単位\)、および小数点を含める必要があります。 例については、「[書式プロバイダーと IFormatProvider インターフェイスによるカルチャに依存した書式指定](#FormatProviders)」を参照してください。 + +- アプリケーションによっては、同じ値をさまざまな方法で表示する必要がある。 たとえば、列挙型のメンバーを表すために、その名前の文字列形式を表示する場合や、基になる値を表示する場合が考えられます。 列挙体のメンバーをさまざまな方法で書式指定する例については、「[標準書式指定文字列](#standardStrings)」を参照してください。 + > [!NOTE] -> 書式設定は型の値を文字列形式に変換します。 解析は書式設定の逆の操作で、 文字列形式からデータ型のインスタンスを作成します。 他のデータ型への文字列の変換については、「[文字列の解析](parsing-strings.md)」を参照してください。 - -この概要は、次のセクションで構成されています。 - -* [.NET での書式設定](#formatting-in-net) - -* [ToString メソッドを使用した既定の書式設定](#default-formatting-using-the-tostring-method) - -* [ToString メソッドのオーバーライド](#overriding-the-tostring-method) - -* [ToString メソッドと書式指定文字列](#the-tostring-method-and-format-strings) - - * [標準の書式指定文字列](#standard-format-strings) - - * [カスタム書式指定文字列](#custom-format-strings) - - * [書式指定文字列と .NET 型](#format-strings-and-net-types) - -* [書式プロバイダーと IFormatProvider インターフェイスによるカルチャに依存した書式指定](#culture-sensitive-formatting-with-format-providers-and-the-iformatprovider-interface) - - * [数値のカルチャに依存した書式設定](#culture-sensitive-formatting-of-numeric-values) - - * [日付と時刻の値のカルチャに依存した書式設定](#culture-sensitive-formatting-of-date-and-time-values) - -* [IFormattable インターフェイス](#the-iformattable-interface) - -* [複合書式指定](#composite-formatting) - -* [ICustomFormatter を使用したカスタム書式設定](#custom-formatting-with-icustomformatter) - -* [関連トピック](#related-topics) - -* [参照](#reference) - -## .NET での書式設定 - -基本的な書式設定の方式は、[Object.ToString](xref:System.Object.ToString) メソッドによって既定として実装されます。このメソッドについては、このトピックの「[ToString メソッドを使用した既定の書式設定](#default-formatting-using-the-tostring-method)」のセクションを参照してください。 ただし、.NET には、この既定の書式設定機能を変更および拡張する方法がいくつかあります。 次に例を示します。 - -* [Object.ToString](xref:System.Object.ToString) メソッドをオーバーライドして、オブジェクトの値のカスタム文字列形式を定義する方法。 詳細については、このトピックの「[ToString メソッドのオーバーライド](#overriding-the-tostring-method)」のセクションを参照してください。 - -* オブジェクトの値の文字列形式に複数の形式を持たせる書式指定子を定義する方法。 たとえば、次のステートメントでは "X" 書式指定子を使用して整数を 16 進値の文字列形式に変換します。 - - ```csharp - int integerValue = 60312; - Console.WriteLine(integerValue.ToString("X")); // Displays EB98. - ``` - - ```vb - Dim integerValue As Integer = 60312 - Console.WriteLine(integerValue.ToString("X")) ' Displays EB98. - ``` - - 書式指定子の詳細については、「[ToString メソッドと書式指定文字列](#the-tostring-method-and-format-strings)」のセクションを参照してください。 - -* 書式プロバイダーを使用して、特定のカルチャの書式指定規則を利用する方法。 たとえば、次のステートメントでは en-US カルチャの書式指定規則を使用して通貨値を表示します。 - - ```csharp - double cost = 1632.54; - Console.WriteLine(cost.ToString("C", - new System.Globalization.CultureInfo("en-US"))); - // The example displays the following output: - // $1,632.54 - ``` - - ```vb - Dim cost As Double = 1632.54 - Console.WriteLine(cost.ToString("C", New System.Globalization.CultureInfo("en-US"))) - ' The example displays the following output: - ' $1,632.54 - ``` - - 書式プロバイダーを使用した書式設定の詳細については、「[書式プロバイダーと IFormatProvider インターフェイスによるカルチャに依存した書式指定](#culture-sensitive-formatting-with-format-providers-and-the-iformatprovider-interface)」のセクションを参照してください。 - -* [IFormattable](xref:System.IFormattable) インターフェイスを実装して、[Convert](xref:System.Convert) クラスによる文字列変換と複合書式指定の両方をサポートする方法。 詳細については、「[IFormattable インターフェイス](#the-iformattable-interface)」のセクションを参照してください。 - -* 複合書式指定を使用して、値の文字列形式を大きな文字列に埋め込む方法。 詳細については、「[複合書式指定](#composite-formatting)」のセクションを参照してください。 - -* [ICustomFormatter](xref:System.ICustomFormatter) および [IFormatProvider](xref:System.IFormatProvider) を実装して、完全なカスタム書式設定ソリューションを提供する方法。 詳細については、「[ICustomFormatter を使用したカスタム書式設定](#custom-formatting-with-icustomformatter)」のセクションを参照してください。 - -以降のセクションでは、オブジェクトを文字列形式に変換するこれらの方法について説明します。 - -## ToString メソッドを使用した既定の書式設定 - -[System.Object](xref:System.Object) から派生したすべての型は、既定で型の名前を返す、パラメーターなしの [ToString](xref:System.Object.ToString) メソッドを自動的に継承します。 既定の [ToString](xref:System.Object.ToString) メソッドの例を次に示します。 このコード例では、実装を持たない `Automobile` という名前のクラスを定義します。 このクラスがインスタンス化され、[ToString](xref:System.Object.ToString) メソッドが呼び出されると、その型の名前が表示されます。 サンプルでは、[ToString](xref:System.Object.ToString) メソッドが明示的に呼び出されないことに注意してください。 [Console.WriteLine(Object)](xref:System.Console.WriteLine(System.Object)) メソッドは引数として渡されたオブジェクトの [ToString](xref:System.Object.ToString) メソッドを暗黙的に呼び出します。 - -```csharp -using System; - -public class Automobile -{ - // No implementation. All members are inherited from Object. -} - -public class Example -{ - public static void Main() - { - Automobile firstAuto = new Automobile(); - Console.WriteLine(firstAuto); - } -} -// The example displays the following output: -// Automobile -``` - -```vb -Public Class Automobile - ' No implementation. All members are inherited from Object. -End Class - -Module Example - Public Sub Main() - Dim firstAuto As New Automobile() - Console.WriteLine(firstAuto) - End Sub -End Module -' The example displays the following output: -' Automobile -``` - -インターフェイス以外の型はすべて [Object](xref:System.Object) から派生するため、この機能はカスタムのクラスまたは構造体に自動的に提供されます。 ただし、既定の [ToString](xref:System.Object.ToString) メソッドによって提供される機能には制限があり、型の識別は行いますが、型のインスタンスに関する情報は提供しません。 それ自体に関する情報を提供するオブジェクトの文字列形式を提供するには、[ToString](xref:System.Object.ToString) メソッドをオーバーライドする必要があります。 - +> 書式設定は型の値を文字列形式に変換します。 解析は書式設定の逆の操作で、 文字列形式からデータ型のインスタンスを作成します。 他のデータ型への文字列の変換については、「[文字列の解析](../../../docs/standard/base-types/parsing-strings.md)」を参照してください。 + + .NET Framework は書式設定機能が充実しているため、開発者はこうした要件を満たすことができます。 + + この概要は、次のセクションで構成されています。 + +- [.NET Framework における書式設定](#NetFormatting) + +- [ToString メソッドを使用した既定の書式設定](#DefaultToString) + +- [ToString メソッドのオーバーライド](#OverrideToString) + +- [ToString メソッドと書式指定文字列](#FormatStrings) + + - [標準書式指定文字列](#standardStrings) + + - [カスタム書式指定文字列](#customStrings) + + - [書式指定文字列と .NET Framework クラス ライブラリ型](#stringRef) + +- [書式プロバイダーと IFormatProvider インターフェイスによるカルチャに依存した書式指定](#FormatProviders) + + - [数値のカルチャに依存した書式設定](#numericCulture) + + - [日付と時刻の値のカルチャに依存した書式設定](#dateCulture) + +- [IFormattable インターフェイス](#IFormattable) + +- [複合書式指定](#CompositeFormatting) + +- [ICustomFormatter を使用したカスタム書式設定](#Custom) + +- [関連トピック](#RelatedTopics) + +- [参照](#Reference) + + +## .NET Framework における書式設定 + 基本的な書式設定の方式は、 メソッドによって既定として実装されます。このメソッドについては、このトピックの「[ToString メソッドを使用した既定の書式設定](#DefaultToString)」のセクションを参照してください。 ただし、.NET Framework には、この既定の書式設定機能を変更および拡張する方法がいくつかあります。 次に例を示します。 + +- メソッドをオーバーライドして、オブジェクトの値のカスタム文字列形式を定義する方法。 詳細については、このトピックの「[ToString メソッドのオーバーライド](#OverrideToString)」のセクションを参照してください。 + +- オブジェクトの値の文字列形式に複数の形式を持たせる書式指定子を定義する方法。 たとえば、次のステートメントでは "X" 書式指定子を使用して整数を 16 進値の文字列形式に変換します。 + + [!code-csharp[Conceptual.Formatting.Overview#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/specifier1.cs#3)] + [!code-vb[Conceptual.Formatting.Overview#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/specifier1.vb#3)] + + 書式指定子の詳細については、「[ToString メソッドと書式指定文字列](#FormatStrings)」のセクションを参照してください。 + +- 書式プロバイダーを使用して、特定のカルチャの書式指定規則を利用する方法。 たとえば、次のステートメントでは en\-US カルチャの書式指定規則を使用して通貨値を表示します。 + + [!code-csharp[Conceptual.Formatting.Overview#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/specifier1.cs#10)] + [!code-vb[Conceptual.Formatting.Overview#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/specifier1.vb#10)] + + 書式プロバイダーを使用した書式設定の詳細については、「[書式プロバイダーおよび IFormatProvider インターフェイス](#FormatProviders)」のセクションを参照してください。 + +- インターフェイスを実装して、 クラスによる文字列変換と複合書式指定の両方をサポートする方法。 詳細については、「[IFormattable インターフェイス](#IFormattable)」のセクションを参照してください。 + +- 複合書式指定を使用して、値の文字列形式を大きな文字列に埋め込む方法。 詳細については、「[複合書式指定](#CompositeFormatting)」のセクションを参照してください。 + +- および を実装して、完全なカスタム書式設定ソリューションを提供する方法。 詳細については、「[ICustomFormatter を使用したカスタム書式設定](#Custom)」のセクションを参照してください。 + + 以降のセクションでは、オブジェクトを文字列形式に変換するこれらの方法について説明します。 + + [ページのトップへ](#Introduction) + + +## ToString メソッドを使用した既定の書式設定 + から派生したすべての型は、既定で型の名前を返す、パラメーターなしの `ToString` メソッドを自動的に継承します。 既定の `ToString` メソッドの例を次に示します。 このコード例では、実装を持たない `Automobile` という名前のクラスを定義します。 このクラスがインスタンス化され、`ToString` メソッドが呼び出されると、その型の名前が表示されます。 サンプルでは、`ToString` メソッドが明示的に呼び出されないことに注意してください。 メソッドは引数として渡されたオブジェクトの `ToString` メソッドを暗黙的に呼び出します。 + + [!code-csharp[Conceptual.Formatting.Overview#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/default1.cs#1)] + [!code-vb[Conceptual.Formatting.Overview#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/default1.vb#1)] + +> [!WARNING] +> [!INCLUDE[win81](../../../includes/win81-md.md)] 以降、[!INCLUDE[wrt](../../../includes/wrt-md.md)]には、既定の書式指定をサポートする単一のメソッド [IStringable.ToString](http://msdn.microsoft.com/library/windows/apps/windows.foundation.istringable.tostring.aspx) を備えた [IStringable](http://msdn.microsoft.com/library/windows/apps/windows.foundation.istringable.aspx) インターフェイスが含まれています。 ただし、マネージ型では `IStringable` インターフェイスを実装しないことをお勧めします。 詳細については、[!INCLUDE[wrt](../../../includes/wrt-md.md)] リファレンス ページの「The `IStringable` and the Interface \(Windows ランタイムと IStringable インターフェイス\)」を参照してください。 + + インターフェイス以外の型はすべて から派生するため、この機能はカスタムのクラスまたは構造体に自動的に提供されます。 ただし、既定の `ToString` メソッドによって提供される機能には制限があり、型の識別は行いますが、型のインスタンスに関する情報は提供しません。 それ自体に関する情報を提供するオブジェクトの文字列形式を提供するには、`ToString` メソッドをオーバーライドする必要があります。 + > [!NOTE] -> 構造体は、[Object](xref:System.Object) から派生した [ValueType](xref:System.ValueType) を継承します。 [ValueType](xref:System.ValueType) は [Object.ToString](xref:System.Object.ToString) をオーバーライドしますが、その実装は同じです。 - -## ToString メソッドのオーバーライド - -型の名前の表示は用途が限定され、型のコンシューマー側でインスタンスを別のインスタンスと区別することはできません。 ただし、[ToString](xref:System.Object.ToString) メソッドをオーバーライドして、より役に立つオブジェクトの値の形式を作成することができます。 次の例では `Temperature` オブジェクトを定義し、その [ToString](xref:System.Object.ToString) メソッドをオーバーライドして、温度を摂氏で表示します。 - -```csharp -using System; - -public class Temperature -{ - private decimal temp; - - public Temperature(decimal temperature) - { - this.temp = temperature; - } - - public override string ToString() - { - return this.temp.ToString("N1") + "°C"; - } -} - -public class Example -{ - public static void Main() - { - Temperature currentTemperature = new Temperature(23.6m); - Console.WriteLine("The current temperature is " + - currentTemperature.ToString()); - } -} -// The example displays the following output: -// The current temperature is 23.6°C. -``` - -```vb -Public Class Temperature - Private temp As Decimal - - Public Sub New(temperature As Decimal) - Me.temp = temperature - End Sub - - Public Overrides Function ToString() As String - Return Me.temp.ToString("N1") + "°C" - End Function -End Class - -Module Example - Public Sub Main() - Dim currentTemperature As New Temperature(23.6d) - Console.WriteLine("The current temperature is " + - currentTemperature.ToString()) - End Sub -End Module -' The example displays the following output: -' The current temperature is 23.6°C. -``` - -.NET では、各プリミティブ値型の [ToString](xref:System.Object.ToString) メソッドは名前の代わりにオブジェクトの値を表示するようにオーバーライドされています。 各プリミティブ型のオーバーライドを次の表に示します。 オーバーライドされているメソッドのほとんどは [ToString](xref:System.Object.ToString) メソッドの別のオーバーロードを呼び出し、それにその型の一般書式を定義する "G" 書式指定子と、現在のカルチャを表す [IFormatProvider](xref:System.IFormatProvider) オブジェクトを渡します。 - -型 | ToString のオーバーライド ----- | ----------------- -[Boolean](xref:System.Boolean) | [Boolean.TrueString](xref:System.Boolean.TrueString) または [Boolean.FalseString](xref:System.Boolean.FalseString) のいずれかを返します。 -[Byte](xref:System.Byte) | `Byte.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて [Byte](xref:System.Byte) 値の書式設定をします。 -[Char](xref:System.Char) | 文字を文字列として返します。 -[DateTime](xref:System.DateTime) | `DateTime.ToString("G", DatetimeFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて日付と時刻の値の書式設定をします。 -[Decimal](xref:System.Decimal) | `Decimal.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて [Decimal](xref:System.Decimal) 値の書式設定をします。 -[Double](xref:System.Double) | `Double.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて [Double](xref:System.Double) 値の書式設定をします。 -[Int16](xref:System.Int16) | `Int16.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて [Int16](xref:System.Int16) 値の書式設定をします。 -[Int32](xref:System.Int32) | `Int16.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて [Int32](xref:System.Int32) 値の書式設定をします。 -[Int64](xref:System.Int64) | `Int16.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて [Int64](xref:System.Int64) 値の書式設定をします。 -[SByte](xref:System.SByte) | `Int16.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて[SByte](xref:System.SByte) 値の | 書式設定をします。 -[Single](xref:System.Single) | `Int16.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて [Single](xref:System.Single) 値の書式設定をします。 -[UInt32](xref:System.UInt32) | `Int16.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて [UInt32](xref:System.UInt32) 値の書式設定をします。 -[UInt32](xref:System.UInt32) | `Int16.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて [UInt32](xref:System.UInt32) 値の書式設定をします。 -[UInt64](xref:System.UInt64) | `Int16.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて [UInt64](xref:System.UInt64) 値の書式設定をします。 - -## ToString メソッドと書式指定文字列 - -既定の [ToString](xref:System.Object.ToString) メソッドや [ToString](xref:System.Object.ToString) のオーバーライドの使用は、オブジェクトの文字列形式が 1 つの場合に適しています。 しかし、多くの場合オブジェクトの値には複数の形式があります。 たとえば、温度は華氏、摂氏、またはケルビンで表現できます。 また、整数値 10 は 10、10.0、1.0e01、$10.00 などの多くの方法で表すことができます。 - -.NET では、書式指定文字列を使用することで、1 つの値に複数の文字列形式を持たせることができます。 書式指定文字列とは定義済みの書式指定子を 1 つ以上含む文字列です。書式指定子とは、[ToString](xref:System.Object.ToString) メソッドによるその出力の書式設定方法を定義する 1 文字または文字グループです。 書式指定文字列はパラメーターとしてオブジェクトの [ToString](xref:System.Object.ToString) メソッドに渡され、オブジェクトの値の文字列形式の表示方法を決定します。 - -.NET では、すべての数値型、日付/時刻型、および列挙型で、定義済みの一連の書式指定子をサポートしています。 書式指定文字列を使用して、アプリケーションで定義されたデータ型の文字列形式を複数定義することもできます。 - -### 標準の書式指定文字列 - -標準書式指定文字列には、適用先のオブジェクトの文字列形式を定義する英字の単一の書式指定子と、結果文字列に表示される桁数に影響するオプションの精度指定子が含まれます。 精度指定子が省略されるかサポートされていない場合、標準書式指定子は標準書式指定文字列と同じになります。 - -.NET では、すべての数値型、すべての日付/時刻型、およびすべての列挙型に対して一連の標準書式指定子が定義されています。 たとえば、それらのカテゴリごとに、対応する型の値の一般的な文字列形式を定義する "G" 標準書式指定子がサポートされています。 - -列挙型の標準書式指定文字列は、値の文字列形式を直接制御します。 列挙値の [ToString](xref:System.Object.ToString) メソッドに渡された書式指定文字列によって、文字列名 ("G" 書式指定子および "F" 書式指定子)、基になる整数値 ("D" 書式指定子)、または 16 進値 ("X" 書式指定子) のどの形式で値を表示するかが決定します。 次のコード例では、標準書式指定文字列を使用して、[DayOfWeek](xref:System.DayOfWeek) 列挙値の書式を設定する方法を示しています。 - -```csharp -DayOfWeek thisDay = DayOfWeek.Monday; -string[] formatStrings = {"G", "F", "D", "X"}; - -foreach (string formatString in formatStrings) - Console.WriteLine(thisDay.ToString(formatString)); -// The example displays the following output: -// Monday -// Monday -// 1 -// 00000001 -``` - -```vb -Dim thisDay As DayOfWeek = DayOfWeek.Monday -Dim formatStrings() As String = {"G", "F", "D", "X"} - -For Each formatString As String In formatStrings - Console.WriteLine(thisDay.ToString(formatString)) -Next -' The example displays the following output: -' Monday -' Monday -' 1 -' 00000001 -``` - -列挙型書式指定文字列については、「[列挙型書式指定文字列](enumeration-format.md)」を参照してください。 - -数値型の標準書式指定文字列は、通常、表示される桁数が 1 つ以上のプロパティ値によって制御される結果文字列を定義します。 たとえば、"C" 書式指定子は数字を通貨値として書式設定します。 唯一のパラメーターとして "C" 書式指定子を渡して [ToString](xref:System.Object.ToString) メソッドを呼び出した場合、現在のカルチャの [NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) オブジェクトの次のプロパティ値を使用して数値の文字列形式を定義します。 - -* [CurrencySymbol](xref:System.Globalization.NumberFormatInfo.CurrencySymbol) プロパティ。現在のカルチャの通貨記号を指定します。 - -* [CurrencyNegativePattern](xref:System.Globalization.NumberFormatInfo.CurrencyNegativePattern) プロパティまたは [CurrencyPositivePattern](xref:System.Globalization.NumberFormatInfo.CurrencyPositivePattern) プロパティ。次の情報を特定する整数を返します。 - - * 通貨記号の位置。 - - * 負の値を表すために、先頭の負の符号、末尾の負の符号、またはかっこのどれを使用するか。 - - * 数値と通貨記号の間にスペース文字を表示するかどうか。 - -* [CurrencyDecimalDigits](xref:System.Globalization.NumberFormatInfo.CurrencyDecimalDigits) プロパティ。結果文字列の小数点以下の桁数を定義します。 - -* [CurrencyDecimalSeparator](xref:System.Globalization.NumberFormatInfo.CurrencyDecimalSeparator) プロパティ。結果文字列の小数点の記号を定義します。 - -* [CurrencyGroupSeparator](xref:System.Globalization.NumberFormatInfo.CurrencyGroupSeparator) プロパティ。桁区切り記号を定義します。 - -* [CurrencyGroupSizes](xref:System.Globalization.NumberFormatInfo.CurrencyGroupSizes) プロパティ。整数部の各グループの桁数を定義します。 - -* [NegativeSign](xref:System.Globalization.NumberFormatInfo.NegativeSign) プロパティ。かっこを使用せずに負の値を表す場合に結果文字列で使用する負の符号を決定します。 - -さらに、数値書式指定文字列には、精度指定子が含まれる場合があります。 この指定子の意味は一緒に使用される書式指定文字列によって異なりますが、通常は、結果文字列に表示される合計桁数か小数点以下の桁数を示します。 たとえば、次の例では、"X4" の標準数値文字列と精度指定子を使用して、4 桁の 16 進数から成る文字列値を作成します。 - -```csharp -byte[] byteValues = { 12, 163, 255 }; -foreach (byte byteValue in byteValues) - Console.WriteLine(byteValue.ToString("X4")); -// The example displays the following output: -// 000C -// 00A3 -// 00FF -``` - -```vb -Dim byteValues() As Byte = { 12, 163, 255 } -For Each byteValue As Byte In byteValues - Console.WriteLine(byteValue.ToString("X4")) -Next -' The example displays the following output: -' 000C -' 00A3 -' 00FF -``` - -標準の数値書式指定文字列の詳細については、「[標準の数値書式指定文字列](standard-numeric.md)」を参照してください。 - -日付と時刻の値の標準書式指定文字列は、特定の [DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) クラスに格納されているカスタム書式指定文字列のエイリアスです。 たとえば、"D" 書式指定子を渡して日付と時刻の値の [ToString](xref:System.Object.ToString) メソッドを呼び出すと、現在のカルチャの [DateTimeFormatInfo.LongDatePattern](xref:System.Globalization.DateTimeFormatInfo.LongDatePattern) プロパティに格納されているカスタム書式指定文字列を使用して日付と時刻が表示されます (カスタム書式指定文字列の詳細については、「[カスタム書式指定文字列](#custom-format-strings)」のセクションを参照してください)。この関係を次の例に示します。 - -```csharp -using System; -using System.Globalization; - -public class Example -{ - public static void Main() - { - DateTime date1 = new DateTime(2017, 6, 30); - Console.WriteLine("D Format Specifier: {0:D}", date1); - string longPattern = CultureInfo.CurrentCulture.DateTimeFormat.LongDatePattern; - Console.WriteLine("'{0}' custom format string: {1}", - longPattern, date1.ToString(longPattern)); - } -} -// The example displays the following output when run on a system whose -// current culture is en-US: -// D Format Specifier: Tuesday, June 30, 2017 -// 'dddd, MMMM dd, yyyy' custom format string: Tuesday, June 30, 2017 -``` - -```vb -Imports System.Globalization - -Module Example - Public Sub Main() - Dim date1 As Date = #6/30/2009# - Console.WriteLine("D Format Specifier: {0:D}", date1) - Dim longPattern As String = CultureInfo.CurrentCulture.DateTimeFormat.LongDatePattern - Console.WriteLine("'{0}' custom format string: {1}", _ - longPattern, date1.ToString(longPattern)) - End Sub -End Module -' The example displays the following output when run on a system whose -' current culture is en-US: -' D Format Specifier: Tuesday, June 30, 2009 -' 'dddd, MMMM dd, yyyy' custom format string: Tuesday, June 30, 2009 -``` - -標準の日時書式指定文字列の詳細については、「[標準の日時書式指定文字列](standard-datetime.md)」を参照してください。 - -また、標準書式指定文字列を使用して、オブジェクトの `ToString(String)` メソッドによって生成された、アプリケーション定義のオブジェクトの文字列形式を定義することもできます。 オブジェクトでサポートする特定の標準書式指定子を定義したり、それらで大文字と小文字を区別するかしないかを決定したりすることができます。 `ToString(String)` メソッドの実装で、以下がサポートされます。 - -* オブジェクトの一般的な書式または共通の書式を表す "G" 書式指定子。 オブジェクトの `ToString` メソッドのパラメーターなしのオーバーロードで、その `ToString(String)` オーバーロードを呼び出し、それに "G" 標準書式指定文字列を渡します。 - -* null 参照に相当する書式指定子。 null 参照に相当する書式指定子は "G" 書式指定子と同等に扱う必要があります。 - -たとえば、`Temperature` クラスの場合、内部的には温度を摂氏で格納し、書式指定子を使用して `Temperature` オブジェクトの値を摂氏、華氏、およびケルビンで表すことができます。 具体的な例を次に示します。 - -```csharp -using System; - -public class Temperature -{ - private decimal m_Temp; - - public Temperature(decimal temperature) - { - this.m_Temp = temperature; - } - - public decimal Celsius - { - get { return this.m_Temp; } - } - - public decimal Kelvin - { - get { return this.m_Temp + 273.15m; } - } - - public decimal Fahrenheit - { - get { return Math.Round(((decimal) (this.m_Temp * 9 / 5 + 32)), 2); } - } - - public override string ToString() - { - return this.ToString("C"); - } - - public string ToString(string format) - { - // Handle null or empty string. - if (String.IsNullOrEmpty(format)) format = "C"; - // Remove spaces and convert to uppercase. - format = format.Trim().ToUpperInvariant(); - - // Convert temperature to Fahrenheit and return string. - switch (format) - { - // Convert temperature to Fahrenheit and return string. - case "F": - return this.Fahrenheit.ToString("N2") + " °F"; - // Convert temperature to Kelvin and return string. - case "K": - return this.Kelvin.ToString("N2") + " K"; - // return temperature in Celsius. - case "G": - case "C": - return this.Celsius.ToString("N2") + " °C"; - default: - throw new FormatException(String.Format("The '{0}' format string is not supported.", format)); - } - } -} - -public class Example -{ - public static void Main() - { - Temperature temp1 = new Temperature(0m); - Console.WriteLine(temp1.ToString()); - Console.WriteLine(temp1.ToString("G")); - Console.WriteLine(temp1.ToString("C")); - Console.WriteLine(temp1.ToString("F")); - Console.WriteLine(temp1.ToString("K")); - - Temperature temp2 = new Temperature(-40m); - Console.WriteLine(temp2.ToString()); - Console.WriteLine(temp2.ToString("G")); - Console.WriteLine(temp2.ToString("C")); - Console.WriteLine(temp2.ToString("F")); - Console.WriteLine(temp2.ToString("K")); - - Temperature temp3 = new Temperature(16m); - Console.WriteLine(temp3.ToString()); - Console.WriteLine(temp3.ToString("G")); - Console.WriteLine(temp3.ToString("C")); - Console.WriteLine(temp3.ToString("F")); - Console.WriteLine(temp3.ToString("K")); - - Console.WriteLine(String.Format("The temperature is now {0:F}.", temp3)); - } -} -// The example displays the following output: -// 0.00 °C -// 0.00 °C -// 0.00 °C -// 32.00 °F -// 273.15 K -// -40.00 °C -// -40.00 °C -// -40.00 °C -// -40.00 °F -// 233.15 K -// 16.00 °C -// 16.00 °C -// 16.00 °C -// 60.80 °F -// 289.15 K -// The temperature is now 16.00 °C. -``` - -```vb -Public Class Temperature - Private m_Temp As Decimal - - Public Sub New(temperature As Decimal) - Me.m_Temp = temperature - End Sub - - Public ReadOnly Property Celsius() As Decimal - Get - Return Me.m_Temp - End Get - End Property - - Public ReadOnly Property Kelvin() As Decimal - Get - Return Me.m_Temp + 273.15d - End Get - End Property - - Public ReadOnly Property Fahrenheit() As Decimal - Get - Return Math.Round(CDec(Me.m_Temp * 9 / 5 + 32), 2) - End Get - End Property - - Public Overrides Function ToString() As String - Return Me.ToString("C") - End Function - - Public Overloads Function ToString(format As String) As String - ' Handle null or empty string. - If String.IsNullOrEmpty(format) Then format = "C" - ' Remove spaces and convert to uppercase. - format = format.Trim().ToUpperInvariant() - - Select Case format - Case "F" - ' Convert temperature to Fahrenheit and return string. - Return Me.Fahrenheit.ToString("N2") & " °F" - Case "K" - ' Convert temperature to Kelvin and return string. - Return Me.Kelvin.ToString("N2") & " K" - Case "C", "G" - ' Return temperature in Celsius. - Return Me.Celsius.ToString("N2") & " °C" - Case Else - Throw New FormatException(String.Format("The '{0}' format string is not supported.", format)) - End Select - End Function -End Class - -Public Module Example - Public Sub Main() - Dim temp1 As New Temperature(0d) - Console.WriteLine(temp1.ToString()) - Console.WriteLine(temp1.ToString("G")) - Console.WriteLine(temp1.ToString("C")) - Console.WriteLine(temp1.ToString("F")) - Console.WriteLine(temp1.ToString("K")) - - Dim temp2 As New Temperature(-40d) - Console.WriteLine(temp2.ToString()) - Console.WriteLine(temp2.ToString("G")) - Console.WriteLine(temp2.ToString("C")) - Console.WriteLine(temp2.ToString("F")) - Console.WriteLine(temp2.ToString("K")) - - Dim temp3 As New Temperature(16d) - Console.WriteLine(temp3.ToString()) - Console.WriteLine(temp3.ToString("G")) - Console.WriteLine(temp3.ToString("C")) - Console.WriteLine(temp3.ToString("F")) - Console.WriteLine(temp3.ToString("K")) - - Console.WriteLine(String.Format("The temperature is now {0:F}.", temp3)) - End Sub -End Module -' The example displays the following output: -' 0.00 °C -' 0.00 °C -' 0.00 °C -' 32.00 °F -' 273.15 K -' -40.00 °C -' -40.00 °C -' -40.00 °C -' -40.00 °F -' 233.15 K -' 16.00 °C -' 16.00 °C -' 16.00 °C -' 60.80 °F -' 289.15 K -' The temperature is now 16.00 °C. -``` - -### カスタム書式指定文字列 - -.NET では、標準書式指定文字列のほかに、数値および日付と時刻の値の両方のカスタム書式指定文字列が定義されています。 カスタム書式指定文字列は、値の文字列形式を定義する 1 つ以上のカスタム書式指定子で構成されます。 たとえば、"yyyy/mm/dd hh:mm:ss.ffff t zzz" というカスタム日時書式指定文字列の場合、en-US カルチャでは日付が "2008/11/15 07:45:00.0000 P -08:00" という文字列形式に変換されます。 また、"0000" というカスタム書式指定文字列の場合、整数値 12 は "0012" に変換されます。 カスタム書式指定文字列の一覧については、「[カスタム日時書式指定文字列](custom-datetime.md)」および「[カスタム数値書式指定文字列](custom-numeric.md)」を参照してください。 - -書式指定文字列が単一のカスタム書式指定子で構成される場合は、標準書式指定子と混同しないように、書式指定子の前にパーセント (%) 記号を付ける必要があります。 次の例では、"M" カスタム書式指定子を使用して、特定の日付の月を表す 1 桁または 2 桁の数値を表示します。 - -```csharp -DateTime date1 = new DateTime(2009, 9, 8); -Console.WriteLine(date1.ToString("%M")); -// Displays 9 -``` - -```vb -Dim date1 As Date = #09/08/2009# -Console.WriteLine(date1.ToString("%M")) ' Displays 9 -``` - -日付および時刻の値の標準書式指定文字列の多くは、[DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) オブジェクトのプロパティによって定義されているカスタム書式指定文字列のエイリアスです。 また、カスタム書式指定文字列を使用することで、数値または日付と時刻の値に対して、柔軟にアプリケーション定義の書式を指定できます。 複数のカスタム書式指定子を 1 つのカスタム書式指定文字列に結合することによって、数値および日付と時刻の値の両方に対するカスタムの結果文字列を独自に定義することができます。 次の例では、月の名前、日付、および年の後に、かっこで囲んで曜日を表示するカスタム書式指定文字列を定義しています。 - -```csharp -string customFormat = "MMMM dd, yyyy (dddd)"; -DateTime date1 = new DateTime(2009, 8, 28); -Console.WriteLine(date1.ToString(customFormat)); -// The example displays the following output if run on a system -// whose language is English: -// August 28, 2009 (Friday) -``` - -```vb -Dim customFormat As String = "MMMM dd, yyyy (dddd)" -Dim date1 As Date = #8/28/2009# -Console.WriteLine(date1.ToString(customFormat)) -' The example displays the following output if run on a system -' whose language is English: -' August 28, 2009 (Friday) -``` - -次の例では、[Int64](xref:System.Int64) 値を米国で標準的な 7 桁の電話番号を市外局番と共に表示するカスタム書式指定文字列を定義します。 - -```csharp -using System; - -public class Example -{ - public static void Main() - { - long number = 8009999999; - string fmt = "000-000-0000"; - Console.WriteLine(number.ToString(fmt)); - } -} -// The example displays the following output: -// 800-999-9999 -``` - -```vb -Module Example - Public Sub Main() - Dim number As Long = 8009999999 - Dim fmt As String = "000-000-0000" - Console.WriteLine(number.ToString(fmt)) - End Sub -End Module -' The example displays the following output: - -' The example displays the following output: -' 800-999-9999 -``` - -一般には、アプリケーション定義の型に対する書式設定のほとんどのニーズに標準書式指定文字列を使用して対応できますが、カスタム書式指定子を定義して型の書式を設定することもできます。 - -### 書式指定文字列と .NET 型 - -すべての数値型 (つまり、[Byte](xref:System.Byte)、[Decimal](xref:System.Decimal)、[Double](xref:System.Double)、[Int16](xref:System.Int16)、[Int32](xref:System.Int32)、[Int64](xref:System.Int64)、[SByte](xref:System.SByte)、[Single](xref:System.Single)、[UInt16](xref:System.UInt16)、[UInt32](xref:System.UInt32)、[UInt64](xref:System.UInt64)、[BigInteger](xref:System.Numerics.BigInteger) 型)、および [DateTime](xref:System.DateTime)、[DateTimeOffset](xref:System.DateTimeOffset)、[TimeSpan](xref:System.TimeSpan)、[Guid](xref:System.Guid) と、すべての列挙型が書式指定文字列による書式設定に対応しています。 各型でサポートされている特定の書式指定文字列については、次のトピックを参照してください。 - -タイトル | 定義 ------ | ---------- -[標準の数値書式指定文字列](standard-numeric.md) | 数値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。 -[カスタム数値書式指定文字列](custom-numeric.md) | 数値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。 -[標準の日時書式指定文字列](standard-datetime.md) | [DateTime](xref:System.DateTime) 値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。 -[カスタム日時書式指定文字列](custom-datetime.md) | [DateTime](xref:System.DateTime) 値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。 -[標準 TimeSpan 書式指定文字列](standard-timespan.md) | 時間間隔に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。 -[カスタム TimeSpan 書式指定文字列](custom-timespan.md) | 時間間隔に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。 -[列挙型書式指定文字列](enumeration-format.md) | 列挙型の文字列形式を作成するために使用される標準書式指定文字列について説明します。 -[Guid.ToString(String)](xref:System.Guid.ToString(System.String)) | [Guid](xref:System.Guid) 値の標準的書式指定文字列について説明します。 - -## 書式プロバイダーと IFormatProvider インターフェイスによるカルチャに依存した書式指定 - -書式指定子を利用することでオブジェクトの書式をカスタマイズできますが、多くの場合、意味のあるオブジェクトの文字列形式を生成するには追加の書式設定情報が必要です。 たとえば、"C" 標準書式指定文字列または "$ #,#.00" などのカスタム書式指定文字列を使用して数字を通貨値として書式設定する場合、少なくとも、正しい通貨記号、桁区切り記号、および小数点記号についての情報を書式設定された文字列に含めることができる必要があります。 .NET では、[IFormatProvider](xref:System.IFormatProvider) インターフェイスによって、この追加の書式設定情報を利用できるようにします。このインターフェイスは、数値型および日付/時刻型の `ToString` メソッドの 1 つ以上のオーバーロードに対するパラメーターとして提供されます。 [IFormatProvider](xref:System.IFormatProvider) の実装は .NET で使用され、カルチャ固有の書式指定をサポートします。 それぞれ異なるカルチャを示す 3 つの [IFormatProvider](xref:System.IFormatProvider) オブジェクトを使用してオブジェクトの書式を設定した場合に、その文字列形式がどのように変化するかを次の例に示します。 - -```csharp -using System; -using System.Globalization; - -public class Example -{ - public static void Main() - { - decimal value = 1603.42m; - Console.WriteLine(value.ToString("C3", new CultureInfo("en-US"))); - Console.WriteLine(value.ToString("C3", new CultureInfo("fr-FR"))); - Console.WriteLine(value.ToString("C3", new CultureInfo("de-DE"))); - } -} -// The example displays the following output: -// $1,603.420 -// 1 603,420 € -// 1.603,420 € -``` - -```vb -Imports System.Globalization - -Public Module Example - Public Sub Main() - Dim value As Decimal = 1603.42d - Console.WriteLine(value.ToString("C3", New CultureInfo("en-US"))) - Console.WriteLine(value.ToString("C3", New CultureInfo("fr-FR"))) - Console.WriteLine(value.ToString("C3", New CultureInfo("de-DE"))) - End Sub -End Module -' The example displays the following output: -' $1,603.420 -' 1 603,420 € -' 1.603,420 € -``` - -[IFormatProvider](xref:System.IFormatProvider) インターフェイスには、[GetFormat(Type)](xref:System.IFormatProvider.GetFormat(System.Type)) という 1 つのメソッドが含まれています。このメソッドには、書式設定情報を提供するオブジェクトの型を指定する 1 つのパラメーターがあります。 このメソッドがその型のオブジェクトを提供できる場合は、それが返されます。 それ以外の場合は、null 参照を返します。 - -[IFormatProvider.GetFormat](xref:System.IFormatProvider.GetFormat(System.Type)) はコールバック メソッドです。 [IFormatProvider](xref:System.IFormatProvider) パラメーターを含む `ToString` メソッド オーバーロードを呼び出すと、その [IFormatProvider](xref:System.IFormatProvider) オブジェクトの [GetFormat](xref:System.IFormatProvider.GetFormat(System.Type)) メソッドが呼び出されます。 [GetFormat](xref:System.IFormatProvider.GetFormat(System.Type)) メソッドは、*formatType* パラメーターで指定された、必要な書式設定情報を提供するオブジェクトを `ToString` メソッドに返します。 - -数多くの書式指定メソッドや文字列変換メソッドに [IFormatProvider](xref:System.IFormatProvider) 型のパラメーターが含まれていますが、多くの場合、メソッドを呼び出すときはパラメーターの値は無視されます。 [IFormatProvider.GetFormat](xref:System.IFormatProvider.GetFormat(System.Type)) メソッドに渡される [Type](xref:System.Type) オブジェクトのパラメーターと型を使用する書式指定メソッドの一部を次の表に示します。 - -メソッド | *formatType* パラメーターの型 ------- | ------------------------------ -数値型の `ToString` メソッド | [System.Globalization.NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) -日付/時刻型の `ToString` メソッド | [System.Globalization.DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) -[String.Format](xref:System.String.Format(System.IFormatProvider,System.String,System.Object)) | [System.ICustomFormatter](xref:System.ICustomFormatter) -[StringBuilder.AppendFormat](xref:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object)) | [System.ICustomFormatter](xref:System.ICustomFormatter) - -.NET には、[IFormatProvider](xref:System.IFormatProvider) を実装する次の 3 つのクラスが用意されています。 - -* [DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo)。このクラスは、特定のカルチャの日付と時刻の値に対する書式設定情報を提供します。 対応する [IFormatProvider.GetFormat](xref:System.IFormatProvider.GetFormat(System.Type)) の実装では、それ自身のインスタンスが返されます。 - -* [NumberFormatInfo](xref:System.Globalization.NumberFormatInfo)。このクラスは、特定のカルチャの数値に対する書式設定情報を提供します。 対応する [IFormatProvider.GetFormat](xref:System.IFormatProvider.GetFormat(System.Type)) の実装では、それ自身のインスタンスが返されます。 - -* [CultureInfo](xref:System.Globalization.CultureInfo)。 対応する [IFormatProvider.GetFormat](xref:System.IFormatProvider.GetFormat(System.Type)) の実装では、数値に対する書式設定情報を提供する [NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) オブジェクトか、日付と時刻の値に対する書式設定情報を提供する [DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) オブジェクトのいずれかが返されます。 - -また、これらのクラスのうちのいずれかを置き換える独自の書式プロバイダーを実装できます。 ただし、実装の `GetFormat` メソッドは、書式設定情報を `ToString` メソッドに渡す場合、前の表に示した型のオブジェクトを返す必要があります。 - -### 数値のカルチャに依存した書式設定 - -既定では、数値の書式指定はカルチャに依存します。 書式指定メソッドを呼び出すときにカルチャを指定しない場合は、現在のスレッド カルチャの書式指定規則が使用されます。 次に示す例では、現在のスレッド カルチャを 4 回変更した後に、[Decimal.ToString(String)](xref:System.Decimal.ToString(System.String)) メソッドを呼び出します。 各ケースでは、結果の文字列は、現在のカルチャの書式指定規則を反映します。 これは、各数値型の `ToString` メソッドへの呼び出しを、`ToString(String)` メソッドと `ToString(String, IFormatProvider)` メソッドがラップするためです。 - -```csharp -using System; -using System.Globalization; -using System.Threading; - -public class Example -{ - public static void Main() - { - string[] cultureNames = { "en-US", "fr-FR", "es-MX", "de-DE" }; - Decimal value = 1043.17m; - - foreach (var cultureName in cultureNames) { - // Change the current thread culture. - Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName); - Console.WriteLine("The current culture is {0}", - Thread.CurrentThread.CurrentCulture.Name); - Console.WriteLine(value.ToString("C2")); - Console.WriteLine(); - } - } -} -// The example displays the following output: -// The current culture is en-US -// $1,043.17 -// -// The current culture is fr-FR -// 1 043,17 € -// -// The current culture is es-MX -// $1,043.17 -// -// The current culture is de-DE -// 1.043,17 € -``` - -```vb -Imports System.Globalization -Imports System.Threading - -Module Example - Public Sub Main() - Dim cultureNames() As String = { "en-US", "fr-FR", "es-MX", "de-DE" } - Dim value As Decimal = 1043.17d - - For Each cultureName In cultureNames - ' Change the current thread culture. - Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName) - Console.WriteLine("The current culture is {0}", - Thread.CurrentThread.CurrentCulture.Name) - Console.WriteLine(value.ToString("C2")) - Console.WriteLine() - Next - End Sub -End Module -' The example displays the following output: -' The current culture is en-US -' $1,043.17 -' -' The current culture is fr-FR -' 1 043,17 € -' -' The current culture is es-MX -' $1,043.17 -' -' The current culture is de-DE -' 1.043,17 € -``` - -また、*provider* パラメーターを持つ `ToString` オーバーロードを呼び出して、次のどちらかを渡すことにより、特定カルチャの数値を書式指定することもできます。 - -* 使用される書式指定規則のカルチャを表す [CultureInfo](xref:System.Globalization.CultureInfo) オブジェクト。 その [CultureInfo.GetFormat](xref:System.Globalization.CultureInfo.GetFormat(System.Type)) メソッドは、[CultureInfo.NumberFormat](xref:System.Globalization.CultureInfo.NumberFormat) プロパティの値を返します。このプロパティは、数値にカルチャ固有の書式指定情報を提供する [NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) オブジェクトです。 - -* 使用されるカルチャ固有の書式指定規則を定義する [NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) オブジェクト。 その [GetFormat](xref:System.Globalization.NumberFormatInfo.GetFormat(System.Type)) メソッドでは、それ自身のインスタンスが返されます。 - -次の例では、浮動小数点数を書式指定する際に、英語 (米国) と英語 (英国) のカルチャおよびフランス語とロシア語のニュートラル カルチャを表す [NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) オブジェクトを使用します。 - -```csharp -using System; -using System.Globalization; - -public class Example -{ - public static void Main() - { - Double value = 1043.62957; - string[] cultureNames = { "en-US", "en-GB", "ru", "fr" }; - - foreach (var name in cultureNames) { - NumberFormatInfo nfi = CultureInfo.CreateSpecificCulture(name).NumberFormat; - Console.WriteLine("{0,-6} {1}", name + ":", value.ToString("N3", nfi)); - } - } -} -// The example displays the following output: -// en-US: 1,043.630 -// en-GB: 1,043.630 -// ru: 1 043,630 -// fr: 1 043,630 -``` - -```vb -Imports System.Globalization - -Module Example - Public Sub Main() - Dim value As Double = 1043.62957 - Dim cultureNames() As String = { "en-US", "en-GB", "ru", "fr" } - - For Each name In cultureNames - Dim nfi As NumberFormatInfo = CultureInfo.CreateSpecificCulture(name).NumberFormat - Console.WriteLine("{0,-6} {1}", name + ":", value.ToString("N3", nfi)) - Next - End Sub -End Module -' The example displays the following output: -' en-US: 1,043.630 -' en-GB: 1,043.630 -' ru: 1 043,630 -' fr: 1 043,630 -``` - -### 日付と時刻の値のカルチャに依存した書式設定 - -既定では、日時の値の書式指定はカルチャに依存します。 書式指定メソッドを呼び出すときにカルチャを指定しない場合は、現在のスレッド カルチャの書式指定規則が使用されます。 次に示す例では、現在のスレッド カルチャを 4 回変更した後に、[DateTime.ToString(String)](xref:System.DateTime.ToString(System.String)) メソッドを呼び出します。 各ケースでは、結果の文字列は、現在のカルチャの書式指定規則を反映します。 これは、[DateTime.ToString()](xref:System.DateTime.ToString)、[DateTime.ToString(String)](xref:System.DateTime.ToString(System.String))、[DateTimeOffset.ToString()](xref:System.DateTimeOffset.ToString(System.String))、[DateTimeOffset.ToString(String)](xref:System.DateTimeOffset.ToString(System.String)) の各メソッドが、[DateTime.ToString(String, IFormatProvider)](xref:System.DateTime.ToString(System.String,System.IFormatProvider)) メソッドおよび [DateTimeOffset.ToString(String, IFormatProvider)](xref:System.DateTimeOffset.ToString(System.String,System.IFormatProvider)) メソッドへの呼び出しをラップするためです。 - -```csharp -using System; -using System.Globalization; -using System.Threading; - -public class Example -{ - public static void Main() - { - string[] cultureNames = { "en-US", "fr-FR", "es-MX", "de-DE" }; - DateTime dateToFormat = new DateTime(2012, 5, 28, 11, 30, 0); - - foreach (var cultureName in cultureNames) { - // Change the current thread culture. - Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName); - Console.WriteLine("The current culture is {0}", - Thread.CurrentThread.CurrentCulture.Name); - Console.WriteLine(dateToFormat.ToString("F")); - Console.WriteLine(); - } - } -} -// The example displays the following output: -// The current culture is en-US -// Monday, May 28, 2012 11:30:00 AM -// -// The current culture is fr-FR -// lundi 28 mai 2012 11:30:00 -// -// The current culture is es-MX -// lunes, 28 de mayo de 2012 11:30:00 a.m. -// -// The current culture is de-DE -// Montag, 28. Mai 2012 11:30:00 -``` - -```vb -Imports System.Globalization -Imports System.Threading - -Module Example - Public Sub Main() - Dim cultureNames() As String = { "en-US", "fr-FR", "es-MX", "de-DE" } - Dim dateToFormat As Date = #5/28/2012 11:30AM# - - For Each cultureName In cultureNames - ' Change the current thread culture. - Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(cultureName) - Console.WriteLine("The current culture is {0}", - Thread.CurrentThread.CurrentCulture.Name) - Console.WriteLine(dateToFormat.ToString("F")) - Console.WriteLine() - Next - End Sub -End Module -' The example displays the following output: -' The current culture is en-US -' Monday, May 28, 2012 11:30:00 AM -' -' The current culture is fr-FR -' lundi 28 mai 2012 11:30:00 -' -' The current culture is es-MX -' lunes, 28 de mayo de 2012 11:30:00 a.m. -' -' The current culture is de-DE -' Montag, 28. Mai 2012 11:30:00 -``` - -provider パラメーターを持つ [DateTime.ToString](xref:System.DateTime.ToString(System.String,System.IFormatProvider)) または [DateTimeOffset.ToString](xref:System.DateTimeOffset.ToString(System.String,System.IFormatProvider)) オーバーロードを呼び出して、次のどちらかを渡すことにより、特定カルチャの日時の値を書式指定することもできます。 - -* 使用される書式指定規則のカルチャを表す [CultureInfo](xref:System.Globalization.CultureInfo) オブジェクト。 その [CultureInfo.GetFormat](xref:System.Globalization.CultureInfo.GetFormat(System.Type)) メソッドは、[CultureInfo.NumberFormat](xref:System.Globalization.CultureInfo.NumberFormat) プロパティの値を返します。このプロパティは、数値にカルチャ固有の書式指定情報を提供する [DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) オブジェクトです。 - -* 使用されるカルチャ固有の書式指定規則を定義する [DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) オブジェクト。 その [GetFormat](xref:System.Globalization.DateTimeFormatInfo.GetFormat(System.Type)) メソッドでは、それ自身のインスタンスが返されます。 - -次の例では、日付を書式指定する際に、英語 (米国) と英語 (英国) のカルチャおよびフランス語とロシア語のニュートラル カルチャを表す [DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) オブジェクトを使用します。 - -```csharp -using System; -using System.Globalization; - -public class Example -{ - public static void Main() - { - DateTime dat1 = new DateTime(2012, 5, 28, 11, 30, 0); - string[] cultureNames = { "en-US", "en-GB", "ru", "fr" }; - - foreach (var name in cultureNames) { - DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture(name).DateTimeFormat; - Console.WriteLine("{0}: {1}", name, dat1.ToString(dtfi)); - } - } -} -// The example displays the following output: -// en-US: 5/28/2012 11:30:00 AM -// en-GB: 28/05/2012 11:30:00 -// ru: 28.05.2012 11:30:00 -// fr: 28/05/2012 11:30:00 -``` - -```vb -Imports System.Globalization - -Module Example - Public Sub Main() - Dim dat1 As Date = #5/28/2012 11:30AM# - Dim cultureNames() As String = { "en-US", "en-GB", "ru", "fr" } - - For Each name In cultureNames - Dim dtfi As DateTimeFormatInfo = CultureInfo.CreateSpecificCulture(name).DateTimeFormat - Console.WriteLine("{0}: {1}", name, dat1.ToString(dtfi)) - Next - End Sub -End Module -' The example displays the following output: -' en-US: 5/28/2012 11:30:00 AM -' en-GB: 28/05/2012 11:30:00 -' ru: 28.05.2012 11:30:00 -' fr: 28/05/2012 11:30:00 -``` - -## IFormattable インターフェイス - -通常、書式指定文字列および [IFormatProvider](xref:System.IFormatProvider) パラメーターを使用して `ToString` メソッドをオーバーロードする型は、[IFormattable](xref:System.IFormattable) インターフェイスも実装します。 このインターフェイスには、[IFormattable.ToString(String, IFormatProvider)](xref:System.IFormattable.ToString(System.String,System.IFormatProvider)) という単一のメンバーがあります。このメンバーには、パラメーターとして書式指定文字列と書式プロバイダーの両方が含まれています。 - -アプリケーション定義のクラスに [IFormattable](xref:System.IFormattable) インターフェイスを実装した場合、2 つの利点があります。 - -* [Convert](xref:System.Convert) クラスによる文字列変換がサポートされます。 [Convert.ToString(Object)](xref:System.Convert.ToString(System.Object)) メソッドおよび [Convert.ToString(Object, IFormatProvider)](xref:System.Convert.ToString(System.Object,System.IFormatProvider)) メソッドを呼び出すと、自動的に [IFormattable](xref:System.IFormattable) の実装が呼び出されます。 - -* 複合書式指定がサポートされます。 書式指定文字列を含む書式指定項目を使用してカスタムの型の書式を設定する場合に、共通言語ランタイムによって自動的に [IFormattable](xref:System.IFormattable) の実装が呼び出され、それに書式指定文字列が渡されます。 `String.Format` メソッドや `Console.WriteLine` メソッドを使用した複合書式指定の詳細については、「[複合書式指定](#composite-formatting)」のセクションを参照してください。 - -次の例では、[IFormattable](xref:System.IFormattable) インターフェイスを実装する `Temperature` クラスを定義しています。 このクラスでは、温度を摂氏で表示するために "C" 書式指定子または "G" 書式指定子、華氏で表示するために "F" 書式指定子、ケルビンで表示するために "K" 書式指定子をそれぞれサポートしています。 - -```csharp -using System; -using System.Globalization; - -public class Temperature : IFormattable -{ - private decimal m_Temp; - - public Temperature(decimal temperature) - { - this.m_Temp = temperature; - } - - public decimal Celsius - { - get { return this.m_Temp; } - } - - public decimal Kelvin - { - get { return this.m_Temp + 273.15m; } - } - - public decimal Fahrenheit - { - get { return Math.Round((decimal) this.m_Temp * 9 / 5 + 32, 2); } - } - - public override string ToString() - { - return this.ToString("G", null); - } - - public string ToString(string format) - { - return this.ToString(format, null); - } - - public string ToString(string format, IFormatProvider provider) - { - // Handle null or empty arguments. - if (String.IsNullOrEmpty(format)) format = "G"; - // Remove any white space and convert to uppercase. - format = format.Trim().ToUpperInvariant(); - - if (provider == null) provider = NumberFormatInfo.CurrentInfo; - - switch (format) - { - // Convert temperature to Fahrenheit and return string. - case "F": - return this.Fahrenheit.ToString("N2", provider) + "°F"; - // Convert temperature to Kelvin and return string. - case "K": - return this.Kelvin.ToString("N2", provider) + "K"; - // Return temperature in Celsius. - case "C": - case "G": - return this.Celsius.ToString("N2", provider) + "°C"; - default: - throw new FormatException(String.Format("The '{0}' format string is not supported.", format)); - } - } -} -``` - -```vb -Imports System.Globalization - -Public Class Temperature : Implements IFormattable - Private m_Temp As Decimal - - Public Sub New(temperature As Decimal) - Me.m_Temp = temperature - End Sub - - Public ReadOnly Property Celsius() As Decimal - Get - Return Me.m_Temp - End Get - End Property - - Public ReadOnly Property Kelvin() As Decimal - Get - Return Me.m_Temp + 273.15d - End Get - End Property - - Public ReadOnly Property Fahrenheit() As Decimal - Get - Return Math.Round(CDec(Me.m_Temp * 9 / 5 + 32), 2) - End Get - End Property - - Public Overrides Function ToString() As String - Return Me.ToString("G", Nothing) - End Function - - Public Overloads Function ToString(format As String) As String - Return Me.ToString(format, Nothing) - End Function - - Public Overloads Function ToString(format As String, provider As IFormatProvider) As String _ - Implements IFormattable.ToString - - ' Handle null or empty arguments. - If String.IsNullOrEmpty(format) Then format = "G" - ' Remove any white space and convert to uppercase. - format = format.Trim().ToUpperInvariant() - - If provider Is Nothing Then provider = NumberFormatInfo.CurrentInfo - - Select Case format - ' Convert temperature to Fahrenheit and return string. - Case "F" - Return Me.Fahrenheit.ToString("N2", provider) & "°F" - ' Convert temperature to Kelvin and return string. - Case "K" - Return Me.Kelvin.ToString("N2", provider) & "K" - ' Return temperature in Celsius. - Case "C", "G" - Return Me.Celsius.ToString("N2", provider) & "°C" - Case Else - Throw New FormatException(String.Format("The '{0}' format string is not supported.", format)) - End Select - End Function -End Class -``` - -次の例では、`Temperature` オブジェクトをインスタンス化しています。 その後、[ToString](xref:System.Convert.ToString(System.Object,System.IFormatProvider)) メソッドを呼び出し、いくつかの複合書式指定文字列を使用して `Temperature` オブジェクトのさまざまな文字列形式を取得します。 さらに、それらの各メソッド呼び出しで、`Temperature` クラスの [IFormattable](xref:System.IFormattable) 実装を呼び出しています。 - -```csharp -public class Example -{ - public static void Main() - { - Temperature temp1 = new Temperature(22m); - Console.WriteLine(Convert.ToString(temp1, new CultureInfo("ja-JP"))); - Console.WriteLine("Temperature: {0:K}", temp1); - Console.WriteLine("Temperature: {0:F}", temp1); - Console.WriteLine(String.Format(new CultureInfo("fr-FR"), "Temperature: {0:F}", temp1)); - } -} -// The example displays the following output: -// 22.00°C -// Temperature: 295.15°K -// Temperature: 71.60°F -// Temperature: 71,60°F -``` - -```vb -Public Module Example - Public Sub Main() - Dim temp1 As New Temperature(22d) - Console.WriteLine(Convert.ToString(temp1, New CultureInfo("ja-JP"))) - Console.WriteLine("Temperature: {0:K}", temp1) - Console.WriteLine("Temperature: {0:F}", temp1) - Console.WriteLine(String.Format(New CultureInfo("fr-FR"), "Temperature: {0:F}", temp1)) - End Sub -End Module -' The example displays the following output: -' 22.00°C -' Temperature: 295.15°K -' Temperature: 71.60°F -' Temperature: 71,60°F -``` - -## 複合書式指定 - -`String.Format` や `StringBuilder.AppendFormat` などの一部のメソッドでは、複合書式指定がサポートされます。 複合書式指定文字列は一種のテンプレートで、0 個以上のオブジェクトの文字列形式が組み込まれた単一の文字列を返します。 各オブジェクトは、インデックス付きの書式指定項目によって、複合書式指定文字列で表現されます。 書式指定項目のインデックスは、それが表すオブジェクトのメソッドのパラメーター リスト内の位置と対応しています。 インデックスは 0 から始まります。 たとえば、`String.Format` メソッドの次のメソッド呼び出しでは、最初の書式指定項目 `{0:D}` は `thatDate` の文字列形式に、2 番目の書式指定項目 `{1}` は `item1` の文字列形式に、3 番目の書式指定項目 `{2:C2}` は `item1.Value` の文字列形式に置き換えられます。 - -```csharp -result = String.Format("On {0:d}, the inventory of {1} was worth {2:C2}.", - thatDate, item1, item1.Value); -Console.WriteLine(result); -// The example displays output like the following if run on a system -// whose current culture is en-US: -// On 5/1/2009, the inventory of WidgetA was worth $107.44. -``` - -```vb -result = String.Format("On {0:d}, the inventory of {1} was worth {2:C2}.", _ - thatDate, item1, item1.Value) -Console.WriteLine(result) -' The example displays output like the following if run on a system -' whose current culture is en-US: -' On 5/1/2009, the inventory of WidgetA was worth $107.44. -``` - -書式項目をそれに対応するオブジェクトの文字列形式に置換することに加えて、書式項目は以下を制御することもできます。 - -* オブジェクトを文字列として表現する特定の方法 (オブジェクトが [IFormattable](xref:System.IFormattable) インターフェイスを実装し、書式文字列をサポートする場合)。 これは、: (コロン) 付きの書式項目のインデックスに、有効な書式文字列を続けることによります。 前の例では、日付の値を "d" (短い日付のパターン) 書式文字列 (`{0:d}` など) を書式設定し、数値を "C2" 書式文字列 (`{2:C2}` など) で書式設定して数値を 2 桁の小数部を含む 10 進数を持つ通貨値で表していました。 - -* オブジェクトの文字列形式を含むフィールドの幅、およびそのフィールドの文字列形式の配置。 これは、, (コンマ) 付きの書式項目のインデックスに、フィールドの幅を続けることによります。 フィールドの幅が正の値の場合、文字列はフィールドで右揃えにし、フィールドの幅が負の値の場合、左揃えにします。 次の例では、20 文字のフィールドで日付の値を左揃えにし、11 文字のフィールドで、1 桁の小数部を含む 10 進数値を右揃えにします。 - -```csharp -DateTime startDate = new DateTime(2015, 8, 28, 6, 0, 0); -decimal[] temps = { 73.452m, 68.98m, 72.6m, 69.24563m, - 74.1m, 72.156m, 72.228m }; -Console.WriteLine("{0,-20} {1,11}\n", "Date", "Temperature"); -for (int ctr = 0; ctr < temps.Length; ctr++) - Console.WriteLine("{0,-20:g} {1,11:N1}", startDate.AddDays(ctr), temps[ctr]); - -// The example displays the following output: -// Date Temperature -// -// 8/28/2015 6:00 AM 73.5 -// 8/29/2015 6:00 AM 69.0 -// 8/30/2015 6:00 AM 72.6 -// 8/31/2015 6:00 AM 69.2 -// 9/1/2015 6:00 AM 74.1 -// 9/2/2015 6:00 AM 72.2 -// 9/3/2015 6:00 AM 72.2 -``` - -```vb -Dim startDate As New Date(2015, 8, 28, 6, 0, 0) -Dim temps() As Decimal = { 73.452, 68.98, 72.6, 69.24563, - 74.1, 72.156, 72.228 } -Console.WriteLine("{0,-20} {1,11}", "Date", "Temperature") -Console.WriteLine() -For ctr As Integer = 0 To temps.Length - 1 - Console.WriteLine("{0,-20:g} {1,11:N1}", startDate.AddDays(ctr), temps(ctr)) -Next -' The example displays the following output: -' Date Temperature -' -' 8/28/2015 6:00 AM 73.5 -' 8/29/2015 6:00 AM 69.0 -' 8/30/2015 6:00 AM 72.6 -' 8/31/2015 6:00 AM 69.2 -' 9/1/2015 6:00 AM 74.1 -' 9/2/2015 6:00 AM 72.2 -' 9/3/2015 6:00 AM 72.2 -``` - -配置文字列コンポーネントと書式文字列コンポーネントの両方が存在する場合、前者は後者の前にきます (たとえば `{0,-20:g}`)。 - -複合書式指定の詳細については、「[複合書式指定](composite-format.md)」を参照してください。 - -## ICustomFormatter を使用したカスタム書式設定 - -[String.Format(IFormatProvider, String, Object[])](xref:System.String.Format(System.IFormatProvider,System.String,System.Object[])) および [StringBuilder.AppendFormat(IFormatProvider, String, Object[])](xref:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object)) の 2 つの複合書式指定メソッドには、カスタム書式設定をサポートしている書式プロバイダー パラメーターが含まれています。 これらの書式指定メソッドのいずれかを呼び出すと、書式プロバイダーの `GetFormat` メソッドに [ICustomFormatter](xref:System.ICustomFormatter) インターフェイスを表す [Type](xref:System.Type) オブジェクトが渡されます。 次に、`GetFormat` メソッドによって、カスタム書式設定を提供する [ICustomFormatter](xref:System.ICustomFormatter) の実装が返されます。 - -[ICustomFormatter](xref:System.ICustomFormatter) インターフェイスには、[Format(String, Object, IFormatProvider)](xref:System.ICustomFormatter.Format(System.String,System.Object,System.IFormatProvider)) という単一のメソッドがあります。このメソッドは、複合書式指定文字列の書式指定項目ごとに 1 回、複合書式指定メソッドによって自動的に呼び出されます。 [Format(String, Object, IFormatProvider)](xref:System.ICustomFormatter.Format(System.String,System.Object,System.IFormatProvider)) メソッドには、3 つのパラメーターがあります。書式指定項目の *formatString* 引数を表す書式指定文字列、書式を設定するオブジェクト、および書式指定サービスを提供する [IFormatProvider](xref:System.IFormatProvider) オブジェクトの 3 つです。 通常は、[ICustomFormatter](xref:System.ICustomFormatter) を実装するクラスでは [IFormatProvider](xref:System.IFormatProvider) も実装するため、この最後のパラメーターはカスタム書式指定クラス自体への参照になります。 このメソッドは、書式を設定するオブジェクトのカスタム書式の文字列形式を返します。 オブジェクトの書式を設定できない場合は、null 参照を返します。 - -整数値を 2 桁の 16 進値とそれに続く 1 つの空白のシーケンスとして表示する、`ByteByByteFormatter` という名前の [ICustomFormatter](xref:System.ICustomFormatter) の実装の例を次に示します。 - -```csharp -public class ByteByByteFormatter : IFormatProvider, ICustomFormatter -{ - public object GetFormat(Type formatType) - { - if (formatType == typeof(ICustomFormatter)) - return this; - else - return null; - } - - public string Format(string format, object arg, - IFormatProvider formatProvider) - { - if (! formatProvider.Equals(this)) return null; - - // Handle only hexadecimal format string. - if (! format.StartsWith("X")) return null; - - byte[] bytes; - string output = null; - - // Handle only integral types. - if (arg is Byte) - bytes = BitConverter.GetBytes((Byte) arg); - else if (arg is Int16) - bytes = BitConverter.GetBytes((Int16) arg); - else if (arg is Int32) - bytes = BitConverter.GetBytes((Int32) arg); - else if (arg is Int64) - bytes = BitConverter.GetBytes((Int64) arg); - else if (arg is SByte) - bytes = BitConverter.GetBytes((SByte) arg); - else if (arg is UInt16) - bytes = BitConverter.GetBytes((UInt16) arg); - else if (arg is UInt32) - bytes = BitConverter.GetBytes((UInt32) arg); - else if (arg is UInt64) - bytes = BitConverter.GetBytes((UInt64) arg); - else - return null; - - for (int ctr = bytes.Length - 1; ctr >= 0; ctr--) - output += String.Format("{0:X2} ", bytes[ctr]); - - return output.Trim(); - } -} -``` - -```vb -Public Class ByteByByteFormatter : Implements IFormatProvider, ICustomFormatter - Public Function GetFormat(formatType As Type) As Object _ - Implements IFormatProvider.GetFormat - If formatType Is GetType(ICustomFormatter) Then - Return Me - Else - Return Nothing - End If - End Function - - Public Function Format(fmt As String, arg As Object, - formatProvider As IFormatProvider) As String _ - Implements ICustomFormatter.Format - - If Not formatProvider.Equals(Me) Then Return Nothing - - ' Handle only hexadecimal format string. - If Not fmt.StartsWith("X") Then - Return Nothing - End If - - ' Handle only integral types. - If Not typeof arg Is Byte AndAlso - Not typeof arg Is Int16 AndAlso - Not typeof arg Is Int32 AndAlso - Not typeof arg Is Int64 AndAlso - Not typeof arg Is SByte AndAlso - Not typeof arg Is UInt16 AndAlso - Not typeof arg Is UInt32 AndAlso - Not typeof arg Is UInt64 Then _ - Return Nothing - - Dim bytes() As Byte = BitConverter.GetBytes(arg) - Dim output As String = Nothing - - For ctr As Integer = bytes.Length - 1 To 0 Step -1 - output += String.Format("{0:X2} ", bytes(ctr)) - Next - - Return output.Trim() - End Function -End Class -``` - -`ByteByByteFormatter` クラスを使用して整数値の書式を設定する例を次に示します。 [ICustomFormatter.Format](xref:System.ICustomFormatter.Format(System.String,System.Object,System.IFormatProvider)) メソッドが 2 回目の [String.Format(IFormatProvider, String, Object[])](xref:System.ICustomFormatter.Format(System.String,System.Object,System.IFormatProvider)) メソッド呼び出しで複数回呼び出されることに注意してください。また、`.ByteByByteFormatter.Format` メソッドが "N0" 書式指定文字列を認識せず、null 参照を返すため、3 回目のメソッド呼び出しでは既定の [NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) プロバイダーが使用されていることに注意してください。 - -```csharp -public class Example -{ - public static void Main() - { - long value = 3210662321; - byte value1 = 214; - byte value2 = 19; - - Console.WriteLine(String.Format(new ByteByByteFormatter(), "{0:X}", value)); - Console.WriteLine(String.Format(new ByteByByteFormatter(), "{0:X} And {1:X} = {2:X} ({2:000})", - value1, value2, value1 & value2)); - Console.WriteLine(String.Format(new ByteByByteFormatter(), "{0,10:N0}", value)); - } -} -// The example displays the following output: -// 00 00 00 00 BF 5E D1 B1 -// 00 D6 And 00 13 = 00 12 (018) -// 3,210,662,321 -``` - -```vb -Public Module Example - Public Sub Main() - Dim value As Long = 3210662321 - Dim value1 As Byte = 214 - Dim value2 As Byte = 19 - - Console.WriteLine((String.Format(New ByteByByteFormatter(), "{0:X}", value))) - Console.WriteLine((String.Format(New ByteByByteFormatter(), "{0:X} And {1:X} = {2:X} ({2:000})", - value1, value2, value1 And value2))) - Console.WriteLine(String.Format(New ByteByByteFormatter(), "{0,10:N0}", value)) - End Sub -End Module -' The example displays the following output: -' 00 00 00 00 BF 5E D1 B1 -' 00 D6 And 00 13 = 00 12 (018) -' 3,210,662,321 -``` - -## 関連トピック - -タイトル | 定義 ------ | ---------- -[標準の数値書式指定文字列](standard-numeric.md) | 数値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。 -[カスタム数値書式指定文字列](custom-numeric.md) | 数値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。 -[標準の日時書式指定文字列](standard-datetime.md) | [DateTime](xref:System.DateTime) 値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。 -[カスタム日時書式指定文字列](custom-datetime.md) | [DateTime](xref:System.DateTime) 値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。 -[標準 TimeSpan 書式指定文字列](standard-timespan.md) | 時間間隔に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。 -[カスタム TimeSpan 書式指定文字列](custom-timespan.md) | 時間間隔に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。 -[列挙型書式指定文字列](enumeration-format.md) | 列挙型の文字列形式を作成するために使用される標準書式指定文字列について説明します。 -[複合書式指定](composite-format.md) | 文字列に 1 つ以上の書式指定された値を埋め込む方法について説明します。 この文字列は、コンソールに表示したり、ストリームに書き込んだりできます。 -[書式設定操作の実行](performing-formatting-operations.md) | 特定の書式設定操作を行うための手順を説明するトピックの一覧を示します。 -[文字列の解析](parsing-strings.md) | オブジェクトの文字列表現によって指定された値にオブジェクトを初期化する方法について説明します。 解析は書式設定の逆の操作です。 - -## 参照 - -[System.IFormattable](xref:System.IFormattable) - -[System.IFormatProvider](xref:System.IFormatProvider) - -[System.ICustomFormatter](xref:System.ICustomFormatter) - +> 構造体は、 から派生した を継承します。 をオーバーライドしますが、その実装は同じです。 + + [ページのトップへ](#Introduction) + + +## ToString メソッドのオーバーライド + 型の名前の表示は用途が限定され、型のコンシューマー側でインスタンスを別のインスタンスと区別することはできません。 ただし、`ToString` メソッドをオーバーライドして、もっと役に立つオブジェクトの値の形式を作成することができます。 次の例では `Temperature` オブジェクトを定義し、その `ToString` メソッドをオーバーライドして、温度を摂氏で表示します。 + + [!code-csharp[Conceptual.Formatting.Overview#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/overrides1.cs#2)] + [!code-vb[Conceptual.Formatting.Overview#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/overrides1.vb#2)] + + .NET Framework では、各プリミティブ値型の `ToString` メソッドは名前の代わりにオブジェクトの値を表示するようにオーバーライドされています。 各プリミティブ型のオーバーライドを次の表に示します。 オーバーライドされているメソッドのほとんどは `ToString` メソッドの別のオーバーロードを呼び出し、それにその型の一般書式を定義する "G" 書式指定子と、現在のカルチャを表す オブジェクトを渡します。 + +|型|ToString のオーバーライド| +|-------|-----------------------| +|| または を返します。| +||`Byte.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| +||文字を文字列として返します。| +||`DateTime.ToString("G", DatetimeFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて日付と時刻の値の書式設定をします。| +||`Decimal.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| +||`Double.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| +||`Int16.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| +||`Int32.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| +||`Int64.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| +||`SByte.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| +||`Single.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| +||`UInt16.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| +||`UInt32.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| +||`UInt64.ToString("G", NumberFormatInfo.CurrentInfo)` を呼び出して、現在のカルチャに合わせて 値の書式設定をします。| + + [ページのトップへ](#Introduction) + + +## ToString メソッドと書式指定文字列 + 既定の `ToString` メソッドや `ToString` のオーバーライドの使用は、オブジェクトの文字列形式が 1 つの場合に適しています。 しかし、多くの場合オブジェクトの値には複数の形式があります。 たとえば、温度は華氏、摂氏、またはケルビンで表現できます。 また、整数値 10 は 10、10.0、1.0e01、$10.00 などの多くの方法で表すことができます。 + + .NET Framework では、書式指定文字列を使用することで、1 つの値に複数の文字列形式を持たせることができます。 書式指定文字列とは定義済みの書式指定子を 1 つ以上含む文字列です。書式指定子とは、`ToString` メソッドによるその出力の書式設定方法を定義する 1 文字または文字グループです。 書式指定文字列はパラメーターとしてオブジェクトの `ToString` メソッドに渡され、オブジェクトの値の文字列形式の表示方法を決定します。 + + .NET Framework では、すべての数値型、日付\/時刻型、および列挙型で、定義済みの一連の書式指定子をサポートしています。 書式指定文字列を使用して、アプリケーションで定義されたデータ型の文字列形式を複数定義することもできます。 + + +### 標準書式指定文字列 + 標準書式指定文字列には、適用先のオブジェクトの文字列形式を定義する英字の単一の書式指定子と、結果文字列に表示される桁数に影響するオプションの精度指定子が含まれます。 精度指定子が省略されるかサポートされていない場合、標準書式指定子は標準書式指定文字列と同じになります。 + + .NET Framework では、すべての数値型、すべての日付\/時刻型、およびすべての列挙型に対して一連の標準書式指定子が定義されています。 たとえば、それらのカテゴリごとに、対応する型の値の一般的な文字列形式を定義する "G" 標準書式指定子がサポートされています。 + + 列挙型の標準書式指定文字列は、値の文字列形式を直接制御します。 列挙値の `ToString` メソッドに渡された書式指定文字列によって、文字列名 \("G" 書式指定子および "F" 書式指定子\)、基になる整数値 \("D" 書式指定子\)、または 16 進値 \("X" 書式指定子\) のどの形式で値を表示するかが決定します。 次のコード例では、標準書式指定文字列を使用して、 列挙値の書式を設定する方法を示しています。 + + [!code-csharp[Conceptual.Formatting.Overview#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/standard1.cs#4)] + [!code-vb[Conceptual.Formatting.Overview#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/standard1.vb#4)] + + 列挙型書式指定文字列については、「[列挙型書式指定文字列](../../../docs/standard/base-types/enumeration-format-strings.md)」を参照してください。 + + 数値型の標準書式指定文字列は、通常、表示される桁数が 1 つ以上のプロパティ値によって制御される結果文字列を定義します。 たとえば、"C" 書式指定子は数字を通貨値として書式設定します。 唯一のパラメーターとして "C" 書式指定子を渡して `ToString` メソッドを呼び出した場合、現在のカルチャの オブジェクトの次のプロパティ値を使用して数値の文字列形式を定義します。 + +- プロパティ。現在のカルチャの通貨記号を指定します。 + +- プロパティまたは プロパティ。次の情報を特定する整数を返します。 + + - 通貨記号の位置。 + + - 負の値を表すために、先頭の負の符号、末尾の負の符号、またはかっこのどれを使用するか。 + + - 数値と通貨記号の間にスペース文字を表示するかどうか。 + +- プロパティ。結果文字列の小数点以下の桁数を定義します。 + +- プロパティ。結果文字列の小数点の記号を定義します。 + +- プロパティ。桁区切り記号を定義します。 + +- プロパティ。整数部の各グループの桁数を定義します。 + +- プロパティ。かっこを使用せずに負の値を表す場合に結果文字列で使用する負の符号を決定します。 + + さらに、数値書式指定文字列には、精度指定子が含まれる場合があります。 この指定子の意味は一緒に使用される書式指定文字列によって異なりますが、通常は、結果文字列に表示される合計桁数か小数点以下の桁数を示します。 たとえば、次の例では、"X4" の標準数値文字列と精度指定子を使用して、4 桁の 16 進数から成る文字列値を作成します。 + + [!code-csharp[Conceptual.Formatting.Overview#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/precisionspecifier1.cs#6)] + [!code-vb[Conceptual.Formatting.Overview#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/precisionspecifier1.vb#6)] + + 標準の数値書式指定文字列の詳細については、「[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)」を参照してください。 + + 日付と時刻の値の標準書式指定文字列は、特定の プロパティに格納されているカスタム書式指定文字列のエイリアスです。 たとえば、"D" 書式指定子を渡して日付と時刻の値の `ToString` メソッドを呼び出すと、現在のカルチャの プロパティに格納されているカスタム書式指定文字列を使用して日付と時刻が表示されます \(カスタム書式指定文字列の詳細については、[次のセクション](#customStrings)を参照してください\)。 この関係を次の例に示します。 + + [!code-csharp[Conceptual.Formatting.Overview#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/alias1.cs#5)] + [!code-vb[Conceptual.Formatting.Overview#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/alias1.vb#5)] + + 標準の日時書式指定文字列の詳細については、「[標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)」を参照してください。 + + また、標準書式指定文字列を使用して、オブジェクトの `ToString(String)` メソッドによって生成された、アプリケーション定義のオブジェクトの文字列形式を定義することもできます。 オブジェクトでサポートする特定の標準書式指定子を定義したり、それらで大文字と小文字を区別するかしないかを決定したりすることができます。`ToString(String)` メソッドの実装で、以下がサポートされます。 + +- オブジェクトの一般的な書式または共通の書式を表す "G" 書式指定子。 オブジェクトの `ToString` メソッドのパラメーターなしのオーバーロードで、その `ToString(String)` オーバーロードを呼び出し、それに "G" 標準書式指定文字列を渡します。 + +- null 参照 \(Visual Basic の場合は `Nothing`\) に相当する書式指定子。 null 参照に相当する書式指定子は "G" 書式指定子と同等に扱う必要があります。 + + たとえば、`Temperature` クラスの場合、内部的には温度を摂氏で格納し、書式指定子を使用して `Temperature` オブジェクトの値を摂氏、華氏、およびケルビンで表すことができます。 具体的な例を次に示します。 + + [!code-csharp[Conceptual.Formatting.Overview#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/appstandard1.cs#7)] + [!code-vb[Conceptual.Formatting.Overview#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/appstandard1.vb#7)] + + [ページのトップへ](#Introduction) + + +### カスタム書式指定文字列 + .NET Framework では、標準書式指定文字列のほかに、数値および日付と時刻の値の両方のカスタム書式指定文字列が定義されています。 カスタム書式指定文字列は、値の文字列形式を定義する 1 つ以上のカスタム書式指定子で構成されます。 たとえば、"yyyy\/mm\/dd hh:mm:ss.ffff t zzz" というカスタム日時書式指定文字列の場合、en\-US カルチャでは日付が "2008\/11\/15 07:45:00.0000 P \-08:00" という文字列形式に変換されます。 また、"0000" というカスタム書式指定文字列の場合、整数値 12 は "0012" に変換されます。 カスタム書式指定文字列の一覧については、「[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)」および「[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)」を参照してください。 + + 書式指定文字列が単一のカスタム書式指定子で構成される場合は、標準書式指定子と混同しないように、書式指定子の前にパーセント \(%\) 記号を付ける必要があります。 次の例では、"M" カスタム書式指定子を使用して、特定の日付の月を表す 1 桁または 2 桁の数値を表示します。 + + [!code-csharp[Conceptual.Formatting.Overview#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/singlecustom1.cs#8)] + [!code-vb[Conceptual.Formatting.Overview#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/singlecustom1.vb#8)] + + 日付および時刻の値の標準書式指定文字列の多くは、 オブジェクトのプロパティによって定義されているカスタム書式指定文字列のエイリアスです。 また、カスタム書式指定文字列を使用することで、数値または日付と時刻の値に対して、柔軟にアプリケーション定義の書式を指定できます。 複数のカスタム書式指定子を 1 つのカスタム書式指定文字列に結合することによって、数値および日付と時刻の値の両方に対するカスタムの結果文字列を独自に定義することができます。 次の例では、月の名前、日付、および年の後に、かっこで囲んで曜日を表示するカスタム書式指定文字列を定義しています。 + + [!code-csharp[Conceptual.Formatting.Overview#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/custom1.cs#9)] + [!code-vb[Conceptual.Formatting.Overview#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/custom1.vb#9)] + + 次の例では、 値を米国で標準的な 7 桁の電話番号を市外局番と共に表示するカスタム書式指定文字列を定義します。 + + [!code-csharp[Conceptual.Formatting.Overview#21](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/telnumber1.cs#21)] + [!code-vb[Conceptual.Formatting.Overview#21](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/telnumber1.vb#21)] + + 一般には、アプリケーション定義の型に対する書式設定のほとんどのニーズに標準書式指定文字列を使用して対応できますが、カスタム書式指定子を定義して型の書式を設定することもできます。 + + [ページのトップへ](#Introduction) + + +### 書式指定文字列と .NET Framework クラス ライブラリ型 + すべての数値型 \(つまり、 型\) + + 、、すべての列挙型が書式指定文字列による書式設定に対応しています。 各型でサポートされている特定の書式指定文字列については、次のトピックを参照してください + +|タイトル|定義| +|----------|--------| +|[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)|数値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| +|[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)|数値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| +|[標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)| 値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| +|[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)| 値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| +|[標準の時間間隔書式指定文字列](../../../docs/standard/base-types/standard-timespan-format-strings.md)|時間間隔に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| +|[カスタム時間間隔書式指定文字列](../../../docs/standard/base-types/custom-timespan-format-strings.md)|時間間隔に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| +|[列挙型書式指定文字列](../../../docs/standard/base-types/enumeration-format-strings.md)|列挙型の文字列形式を作成するために使用される標準書式指定文字列について説明します。| +|| 値の標準的書式指定文字列について説明します。| + + +## 書式プロバイダーと IFormatProvider インターフェイスによるカルチャに依存した書式指定 + 書式指定子を利用することでオブジェクトの書式をカスタマイズできますが、多くの場合、意味のあるオブジェクトの文字列形式を生成するには追加の書式設定情報が必要です。 たとえば、"C" 標準書式指定文字列または "$ \#,\#.00" などのカスタム書式指定文字列を使用して数字を通貨値として書式設定する場合、少なくとも、正しい通貨記号、桁区切り記号、および小数点記号についての情報を書式設定された文字列に含めることができる必要があります。 .NET Framework では、 インターフェイスによって、この追加の書式設定情報を利用できるようにします。このインターフェイスは、数値型および日付\/時刻型の `ToString` メソッドの 1 つ以上のオーバーロードに対するパラメーターとして提供されます。 の実装は .NET Framework で使用され、カルチャ固有の書式指定をサポートします。 それぞれ異なるカルチャを示す 3 つの オブジェクトを使用してオブジェクトの書式を設定した場合に、その文字列形式がどのように変化するかを次の例に示します。 + + [!code-csharp[Conceptual.Formatting.Overview#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/iformatprovider1.cs#11)] + [!code-vb[Conceptual.Formatting.Overview#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/iformatprovider1.vb#11)] + + インターフェイスには、 という 1 つのメソッドが含まれています。このメソッドには、書式設定情報を提供するオブジェクトの型を指定する 1 つのパラメーターがあります。 このメソッドがその型のオブジェクトを提供できる場合は、それが返されます。 それ以外の場合は、null 参照 \(Visual Basic の場合は `Nothing`\) が返されます。 + + はコールバック メソッドです。`ToString` パラメーターを含む メソッド オーバーロードを呼び出すと、その オブジェクトの メソッドが呼び出されます。 メソッドは、`formatType` パラメーターで指定された、必要な書式設定情報を提供するオブジェクトを `ToString` メソッドに返します。 + + 数多くの書式指定メソッドや文字列変換メソッドに 型のパラメーターが含まれていますが、多くの場合、メソッドを呼び出すときはパラメーターの値は無視されます。 メソッドに渡される オブジェクトのパラメーターと型を使用する書式指定メソッドの一部を次の表に示します。 + +|メソッド|`formatType` パラメーターの型| +|----------|---------------------------| +|数値型の `ToString` メソッド|| +|日付\/時刻型の `ToString` メソッド|| +||| +||| + +> [!NOTE] +> 数値型および日付\/時刻型の `ToString` メソッドはオーバーロードされますが、 パラメーターが含まれるのはそのうちの一部のオーバーロードだけです。 メソッドに 型のパラメーターがない場合は、代わりに プロパティによって返されるオブジェクトが渡されます。 たとえば、既定の メソッドの呼び出しの場合は、最終的には `Int32.ToString("G", System.Globalization.CultureInfo.CurrentCulture)` のようなメソッド呼び出しになります。 + + .NET Framework には、 を実装する次の 3 つのクラスが用意されています。 + +- 。このクラスは、特定のカルチャの日付と時刻の値に対する書式設定情報を提供します。 対応する の実装では、単にそれ自身のインスタンスが返されます。 + +- 。このクラスは、特定のカルチャの数値に対する書式設定情報を提供します。 対応する の実装では、単にそれ自身のインスタンスが返されます。 + +- . 対応する の実装では、数値に対する書式設定情報を提供する オブジェクトか、日付と時刻の値に対する書式設定情報を提供する オブジェクトのいずれかが返されます。 + + また、これらのクラスのうちのいずれかを置き換える独自の書式プロバイダーを実装できます。 ただし、実装の メソッドは、書式設定情報を `ToString` メソッドに渡す場合、前の表に示した型のオブジェクトを返す必要があります。 + + [ページのトップへ](#Introduction) + + +### 数値のカルチャに依存した書式設定 + 既定では、数値の書式指定はカルチャに依存します。 書式指定メソッドを呼び出すときにカルチャを指定しない場合は、現在のスレッド カルチャの書式指定規則が使用されます。 次に示す例では、現在のスレッド カルチャを 4 回変更した後に、 メソッドを呼び出します。 各ケースでは、結果の文字列は、現在のカルチャの書式指定規則を反映します。 これは、各数値型の `ToString` メソッドへの呼び出しを、`ToString(String)` メソッドと `ToString(String, IFormatProvider)` メソッドがラップするためです。 + + [!code-csharp[Conceptual.Formatting.Overview#19](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/culturespecific3.cs#19)] + [!code-vb[Conceptual.Formatting.Overview#19](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/culturespecific3.vb#19)] + + また、`ToString` パラメーターを持つ `provider` オーバーロードを呼び出して、次のどちらかを渡すことにより、特定カルチャの数値を書式指定することもできます。 + +- 使用される書式指定規則のカルチャを表す オブジェクト。 その メソッドは、 プロパティの値を返します。このプロパティは、数値にカルチャ固有の書式指定情報を提供する オブジェクトです。 + +- 使用されるカルチャ固有の書式指定規則を定義する オブジェクト。 その メソッドでは、それ自身のインスタンスが返されます。 + + 次の例では、浮動小数点数を書式指定する際に、英語 \(米国\) と英語 \(英国\) のカルチャおよびフランス語とロシア語のニュートラル カルチャを表す オブジェクトを使用します。 + + [!code-csharp[Conceptual.Formatting.Overview#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/culturespecific4.cs#20)] + [!code-vb[Conceptual.Formatting.Overview#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/culturespecific4.vb#20)] + + +### 日付と時刻の値のカルチャに依存した書式設定 + 既定では、日時の値の書式指定はカルチャに依存します。 書式指定メソッドを呼び出すときにカルチャを指定しない場合は、現在のスレッド カルチャの書式指定規則が使用されます。 次に示す例では、現在のスレッド カルチャを 4 回変更した後に、 メソッドを呼び出します。 各ケースでは、結果の文字列は、現在のカルチャの書式指定規則を反映します。 これは、 の各メソッドが、 メソッドおよび メソッドへの呼び出しをラップするためです。 + + [!code-csharp[Conceptual.Formatting.Overview#17](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/culturespecific1.cs#17)] + [!code-vb[Conceptual.Formatting.Overview#17](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/culturespecific1.vb#17)] + + パラメーターを持つ または `provider` オーバーロードを呼び出して、次のどちらかを渡すことにより、特定カルチャの日時の値を書式指定することもできます。 + +- 使用される書式指定規則のカルチャを表す オブジェクト。 その メソッドは、 プロパティの値を返します。このプロパティは、日時の値にカルチャ固有の書式指定情報を提供する オブジェクトです。 + +- 使用されるカルチャ固有の書式指定規則を定義する オブジェクト。 その メソッドでは、それ自身のインスタンスが返されます。 + + 次の例では、日付を書式指定する際に、英語 \(米国\) と英語 \(英国\) のカルチャおよびフランス語とロシア語のニュートラル カルチャを表す オブジェクトを使用します。 + + [!code-csharp[Conceptual.Formatting.Overview#18](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/culturespecific2.cs#18)] + [!code-vb[Conceptual.Formatting.Overview#18](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/culturespecific2.vb#18)] + + +## IFormattable インターフェイス + 通常、書式指定文字列および `ToString` パラメーターを使用して メソッドをオーバーロードする型は、 インターフェイスも実装します。 このインターフェイスには、 という単一のメンバーがあります。このメンバーには、パラメーターとして書式指定文字列と書式プロバイダーの両方が含まれています。 + + アプリケーション定義のクラスに インターフェイスを実装した場合、2 つの利点があります。 + +- クラスによる文字列変換がサポートされます。 メソッドおよび メソッドを呼び出すと、自動的に の実装が呼び出されます。 + +- 複合書式指定がサポートされます。 書式指定文字列を含む書式指定項目を使用してカスタムの型の書式を設定する場合に、共通言語ランタイムによって自動的に の実装が呼び出され、それに書式指定文字列が渡されます。 メソッドや メソッドを使用した複合書式指定の詳細については、「[複合書式指定](#CompositeFormatting)」のセクションを参照してください。 + + 次の例では、`Temperature` インターフェイスを実装する クラスを定義しています。 このクラスでは、温度を摂氏で表示するために "C" 書式指定子または "G" 書式指定子、華氏で表示するために "F" 書式指定子、ケルビンで表示するために "K" 書式指定子をそれぞれサポートしています。 + + [!code-csharp[Conceptual.Formatting.Overview#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/iformattable.cs#12)] + [!code-vb[Conceptual.Formatting.Overview#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/iformattable.vb#12)] + + 次の例では、`Temperature` オブジェクトをインスタンス化しています。 その後、 メソッドを呼び出し、いくつかの複合書式指定文字列を使用して `Temperature` オブジェクトのさまざまな文字列形式を取得します。 さらに、それらの各メソッド呼び出しで、 クラスの `Temperature` 実装を呼び出しています。 + + [!code-csharp[Conceptual.Formatting.Overview#13](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/iformattable.cs#13)] + [!code-vb[Conceptual.Formatting.Overview#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/iformattable.vb#13)] + + [ページのトップへ](#Introduction) + + +## 複合書式指定 + などの一部のメソッドでは、複合書式指定がサポートされます。 複合書式指定文字列は一種のテンプレートで、0 個以上のオブジェクトの文字列形式が組み込まれた単一の文字列を返します。 各オブジェクトは、インデックス付きの書式指定項目によって、複合書式指定文字列で表現されます。 書式指定項目のインデックスは、それが表すオブジェクトのメソッドのパラメーター リスト内の位置と対応しています。 インデックスは 0 から始まります。 たとえば、 メソッドの次のメソッド呼び出しでは、最初の書式指定項目 `{0:D}` は `thatDate` の文字列形式に、2 番目の書式指定項目 `{1}` は `item1` の文字列形式に、3 番目の書式指定項目 `{2:C2}` は `item1.Value` の文字列形式に置き換えられます。 + + [!code-csharp[Conceptual.Formatting.Overview#14](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/composite1.cs#14)] + [!code-vb[Conceptual.Formatting.Overview#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/composite1.vb#14)] + + 書式項目をそれに対応するオブジェクトの文字列形式に置換することに加えて、書式項目は以下を制御することもできます。 + +- オブジェクトを文字列として表現する特定の方法 \(オブジェクトが インターフェイスを実装し、書式文字列をサポートする場合\)。 これは、`:` \(コロン\) 付きの書式項目のインデックスに、有効な書式文字列を続けることによります。 前の例では、日付の値を "d" \(短い日付のパターン\) 書式文字列 \(`{0:d}` など\) を書式設定し、数値を "C2" 書式文字列 \(`{2:C2}` など\) で書式設定して数値を 2 桁の小数部を含む 10 進数を持つ通貨値で表していました。 + +- オブジェクトの文字列形式を含むフィールドの幅、およびそのフィールドの文字列形式の配置。 これは、`,` \(コンマ\) 付きの書式項目のインデックスに、フィールドの幅を続けることによります。 フィールドの幅が正の値の場合、文字列はフィールドで右揃えにし、フィールドの幅が負の値の場合、左揃えにします。 次の例では、20 文字のフィールドで日付の値を左揃えにし、11 文字のフィールドで、1 桁の小数部を含む 10 進数値を右揃えにします。 + + [!code-csharp[Conceptual.Formatting.Overview#22](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/composite2.cs#22)] + [!code-vb[Conceptual.Formatting.Overview#22](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/composite2.vb#22)] + + 配置文字列コンポーネントと書式文字列コンポーネントの両方が存在する場合、前者は後者の前にきます \(たとえば `{0,-20:g}`\)。 + + 複合書式指定の詳細については、「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」を参照してください。 + + [ページのトップへ](#Introduction) + + +## ICustomFormatter を使用したカスタム書式設定 + [String.Format\(IFormatProvider, String, Object\ および [StringBuilder.AppendFormat\(IFormatProvider, String, Object\ の 2 つの複合書式指定メソッドには、カスタム書式設定をサポートしている書式プロバイダー パラメーターが含まれています。 これらの書式指定メソッドのいずれかを呼び出すと、書式プロバイダーの メソッドに インターフェイスを表す オブジェクトが渡されます。 次に、 メソッドによって、カスタム書式設定を提供する の実装が返されます。 + + インターフェイスには、 という単一のメソッドがあります。このメソッドは、複合書式指定文字列の書式指定項目ごとに 1 回、複合書式指定メソッドによって自動的に呼び出されます。 メソッドには、3 つのパラメーターがあります。書式指定項目の `formatString` 引数を表す書式指定文字列、書式を設定するオブジェクト、および書式指定サービスを提供する オブジェクトの 3 つです。 通常は、 を実装するクラスでは も実装するため、この最後のパラメーターはカスタム書式指定クラス自体への参照になります。 このメソッドは、書式を設定するオブジェクトのカスタム書式の文字列形式を返します。 オブジェクトの書式を設定できない場合は、null 参照 \(Visual Basic の場合は `Nothing`\) を返します。 + + 整数値を 2 桁の 16 進値とそれに続く 1 つの空白のシーケンスとして表示する、 という名前の `ByteByByteFormatter` の実装の例を次に示します。 + + [!code-csharp[Conceptual.Formatting.Overview#15](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/icustomformatter1.cs#15)] + [!code-vb[Conceptual.Formatting.Overview#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/icustomformatter1.vb#15)] + + `ByteByByteFormatter` クラスを使用して整数値の書式を設定する例を次に示します。 メソッドが 2 回目の [String.Format\(IFormatProvider, String, Object\ メソッド呼び出しで複数回呼び出されることに注意してください。また、 メソッドが "N0" 書式指定文字列を認識せず、null 参照 \(Visual Basic の場合は `ByteByByteFormatter.Format`\) を返すため、3 回目のメソッド呼び出しでは既定の `Nothing` プロバイダーが使用されていることに注意してください。 + + [!code-csharp[Conceptual.Formatting.Overview#16](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.formatting.overview/cs/icustomformatter1.cs#16)] + [!code-vb[Conceptual.Formatting.Overview#16](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.formatting.overview/vb/icustomformatter1.vb#16)] + + [ページのトップへ](#Introduction) + + +## 関連トピック + +|タイトル|定義| +|----------|--------| +|[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)|数値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| +|[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)|数値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| +|[標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)| 値に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| +|[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)| 値に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| +|[標準の時間間隔書式指定文字列](../../../docs/standard/base-types/standard-timespan-format-strings.md)|時間間隔に対して一般的に使用される文字列形式を作成する標準書式指定文字列について説明します。| +|[カスタム時間間隔書式指定文字列](../../../docs/standard/base-types/custom-timespan-format-strings.md)|時間間隔に対するアプリケーション固有の文字列形式を作成するカスタム書式指定文字列について説明します。| +|[列挙型書式指定文字列](../../../docs/standard/base-types/enumeration-format-strings.md)|列挙型の文字列形式を作成するために使用される標準書式指定文字列について説明します。| +|[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)|文字列に 1 つ以上の書式指定された値を埋め込む方法について説明します。 この文字列は、コンソールに表示したり、ストリームに書き込んだりできます。| +|[書式設定操作の実行](../../../docs/standard/base-types/performing-formatting-operations.md)|特定の書式設定操作を行うための手順を説明するトピックの一覧を示します。| +|[文字列の解析](../../../docs/standard/base-types/parsing-strings.md)|オブジェクトの文字列表現によって指定された値にオブジェクトを初期化する方法について説明します。 解析は書式設定の逆の操作です。| + + [ページのトップへ](#Introduction) + + +## 参照 + + + + + \ No newline at end of file diff --git a/docs/standard/base-types/grouping-constructs-in-regular-expressions.md b/docs/standard/base-types/grouping-constructs-in-regular-expressions.md new file mode 100644 index 00000000000..aed514dfcd8 --- /dev/null +++ b/docs/standard/base-types/grouping-constructs-in-regular-expressions.md @@ -0,0 +1,476 @@ +--- +title: "正規表現でのグループ化構成体 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, グループ化構成体" + - "構成体, グループ化" + - "グループ化構成体" + - "先読み" + - "後読み" + - "正規表現, グループ化構成体" +ms.assetid: 0fc18634-f590-4062-8d5c-f0b71abe405b +caps.latest.revision: 33 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 33 +--- +# 正規表現でのグループ化構成体 +グループ化構成体は、正規表現の部分式を表し、入力文字列の部分文字列をキャプチャします。 グループ化構成体を使用して、以下を実行できます。 + +- 入力文字列で繰り返し使用されている部分式を照合する。 + +- 複数の正規表現言語要素を含む部分式に量指定子を適用する。 量指定子について詳しくは、「[限定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md)」をご覧ください。 + +- メソッドおよび メソッドによって返される文字列に部分式を含める。 + +- プロパティから個々の部分式を取得し、一致したテキスト全体とは別に処理する。 + + 次の表に、.NET Framework 正規表現エンジンでサポートされているグループ化構成体と、これらの構成体がキャプチャまたは非キャプチャのいずれであるかを示します。 + +|グループ化構成体|キャプチャまたは非キャプチャ| +|--------------|--------------------| +|[一致した部分式](#matched_subexpression)|キャプチャ| +|[一致した名前付き部分式](#named_matched_subexpression)|キャプチャ| +|[グループ定義の均等化](#balancing_group_definition)|キャプチャ| +|[非キャプチャ グループ](#noncapturing_group)|非キャプチャ| +|[グループ オプション](#group_options)|非キャプチャ| +|[ゼロ幅の肯定先読みアサーション](#zerowidth_positive_lookahead_assertion)|非キャプチャ| +|[ゼロ幅の否定先読みアサーション](#zerowidth_negative_lookahead_assertion)|非キャプチャ| +|[ゼロ幅の正の後読みアサーション](#zerowidth_positive_lookbehind_assertion)|非キャプチャ| +|[ゼロ幅の負の後読みアサーション](#zerowidth_negative_lookbehind_assertion)|非キャプチャ| +|[非バックトラッキング部分式](#nonbacktracking_subexpression)|非キャプチャ| + + グループと正規表現オブジェクト モデルの詳細については、「[グループ化構成体および正規表現オブジェクト](#Objects)」を参照してください。 + + +## 一致した部分式 + 次のグループ化構成体は、一致した部分式をキャプチャします。 + + `(` *subexpression* `)` + + ここで、*subexpression* は有効な正規表現パターンです。 かっこを使用するキャプチャには、正規表現の左かっこの順番に基づいて、左から右に自動的に 1 から始まる番号が付けられます。 番号が 0 になるキャプチャは、正規表現パターン全体と一致するテキストです。 + +> [!NOTE] +> 既定では、`(`*subexpression*`)` 言語要素が、一致する部分式をキャプチャします。 ただし、正規表現パターン一致メソッドの パラメーターに フラグが含まれる場合や、`n` オプションがこの部分式に適用される場合は \(このトピックで後述する「[グループ オプション](#group_options)」を参照\)、一致した部分式はキャプチャされません。 + + キャプチャされたグループにアクセスする方法は 4 つあります。 + +- 正規表現内で前方参照構成体を使用する。`\`*number* という構文を使うと、一致した部分式が同じ正規表現内で参照されます。ここで、*number* はキャプチャされた部分式の序数です。 + +- 正規表現内で名前付き前方参照構成体を使用する。`\k<`*name*`>` \(*name* はキャプチャ グループの名前\) や、`\k<`*number*`>` \(*number* はキャプチャ グループの序数\) という構文を使うと、一致した部分式が同じ正規表現内で参照されます。 キャプチャ グループには、その序数と同じ既定の名前が付いています。 詳細については、このトピックで後述する「[一致した名前付き部分式](#named_matched_subexpression)」を参照してください。 + +- `$` *number* 置換シーケンスを メソッドや メソッドの呼び出しで使用する。ここで、*number* はキャプチャされた部分式の序数です。 + +- プログラムで プロパティによって返される オブジェクトを使用する。 コレクション内の位置 0 にあるメンバーは、正規表現に一致した文字列全体を表します。 後続の各メンバーは、一致した部分式を表します。 詳しくは、「[グループ化構成体および正規表現オブジェクト](#Objects)」セクションをご覧ください。 + + 次の例は、テキスト内で重複している単語を識別する正規表現を示しています。 正規表現パターンの 2 つのキャプチャ グループは、2 つの重複する単語を表します。 2 番目の単語は、入力文字列内の開始位置を報告するためにキャプチャされます。 + + [!code-csharp[RegularExpressions.Language.Grouping#1](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/grouping1.cs#1)] + [!code-vb[RegularExpressions.Language.Grouping#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/grouping1.vb#1)] + + 正規表現パターンは次のとおりです。 + +``` +(\w+)\s(\1)\W +``` + + 次の表に、正規表現パターンがどのように解釈されるかを示します。 + +|パターン|説明| +|----------|--------| +|`(\w+)`|1 つ以上の単語文字に一致します。 これが最初のキャプチャ グループです。| +|`\s`|空白文字と一致します。| +|`(\1)`|最初のキャプチャ グループの文字列と一致します。 これが 2 番目のキャプチャ グループです。 例では、これをキャプチャ グループに割り当てて、重複する単語の開始位置を `Match.Index` プロパティから取得できるようにしています。| +|`\W`|空白や句読点などの単語文字以外の文字と一致します。 これにより、正規表現パターンが、最初のキャプチャ グループの単語で始まる単語と一致しなくなります。| + + +## 一致した名前付き部分式 + 次のグループ化構成体は、一致した部分式をキャプチャし、その部分式に名前または番号でアクセスできるようにします。 + +``` +(?subexpression) +``` + + または + +``` +(?'name'subexpression) +``` + + ここで、*name* は有効なグループ名、*subexpression* は有効な正規表現パターンです。*name* は区切り記号を含まず、先頭が数字以外である必要があります。 + +> [!NOTE] +> 正規表現パターン一致メソッドの パラメーターに フラグが含まれる場合や、`n` オプションがこの部分式に適用される場合 \(このトピックで後述する「[グループ オプション](#group_options)」を参照\)、部分式をキャプチャする唯一の方法は、キャプチャ グループの名前を明示的に指定することです。 + + キャプチャされた名前付きグループには次の方法でアクセスできます。 + +- 正規表現内で名前付き前方参照構成体を使用する。`\k<`*name*`>` という構文を使うと、一致した部分式が同じ正規表現内で参照されます。ここで、*name* はキャプチャされた部分式の名前です。 + +- 正規表現内で前方参照構成体を使用する。`\`*number* という構文を使うと、一致した部分式が同じ正規表現内で参照されます。ここで、*number* はキャプチャされた部分式の序数です。 一致した名前付き部分式には、一致した部分式の後、左から右に連続した番号が付けられます。 + +- `${` *name* `}` 置換シーケンスを、 メソッドや メソッドの呼び出しで使用する。ここで、*name* はキャプチャされた部分式の名前です。 + +- `$` *number* 置換シーケンスを メソッドや メソッドの呼び出しで使用する。ここで、*number* はキャプチャされた部分式の序数です。 + +- プログラムで プロパティによって返される オブジェクトを使用する。 コレクション内の位置 0 にあるメンバーは、正規表現に一致した文字列全体を表します。 後続の各メンバーは、一致した部分式を表します。 キャプチャされた名前付きグループは、キャプチャされた番号付きグループの後にコレクションに格納されます。 + +- プログラムで オブジェクトのインデクサー \(C\# の場合\) またはその プロパティ \(Visual Basic の場合\) に部分式名を指定する。 + + 簡単な正規表現パターンで、プログラムまたは正規表現言語構文を使用して番号付き \(名前のない\) グループおよび名前付きグループをどのように参照できるかを示します。 正規表現 `((?abc)\d+)?(?xyz)(.*)` からは、次のように番号と名前の付いたキャプチャ グループが作成されます。 最初のキャプチャ グループ \(番号 0\) は、常にパターン全体を指します。 + +|Number|名前|パターン| +|------------|--------|----------| +|0|0 \(既定名\)|`((?abc)\d+)?(?xyz)(.*)`| +|1|1 \(既定名\)|`((?abc)\d+)`| +|2|2 \(既定名\)|`(.*)`| +|3|1|`(?abc)`| +|4|2|`(?xyz)`| + + 次の例は、重複している単語、および重複している各単語の直後にある単語を識別する正規表現を示しています。 この正規表現パターンでは、重複している単語を表す `duplicateWord` と重複している単語の後にある単語を表す `nextWord` の 2 つの名前付き部分式を定義しています。 + + [!code-csharp[RegularExpressions.Language.Grouping#2](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/grouping2.cs#2)] + [!code-vb[RegularExpressions.Language.Grouping#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/grouping2.vb#2)] + + 正規表現パターンは次のとおりです。 + +``` +(?\w+)\s\k\W(?\w+) +``` + + 次の表に、正規表現がどのように解釈されるかを示します。 + +|パターン|説明| +|----------|--------| +|`(?\w+)`|1 つ以上の単語文字に一致します。 このキャプチャ グループに `duplicateWord` という名前を付けます。| +|`\s`|空白文字と一致します。| +|`\k`|`duplicateWord` という名前のキャプチャ済みグループの文字列と一致します。| +|`\W`|空白や句読点などの単語文字以外の文字と一致します。 これにより、正規表現パターンが、最初のキャプチャ グループの単語で始まる単語と一致しなくなります。| +|`(?\w+)`|1 つ以上の単語文字に一致します。 このキャプチャ グループに `nextWord` という名前を付けます。| + + グループ名は、正規表現で繰り返し使用できます。 たとえば、次の例が示すように、複数のグループに `digit` という名前を付けることができます。 名前が重複する場合、 オブジェクトの値は、入力文字列の最後の正常なキャプチャによって決定されます。 さらに、グループ名が重複されない場合と同じように、各キャプチャについての情報が 格納されます。 + + 次の例では、正規表現 `\D+(?\d+)\D+(?\d+)?` に `digit` という名前のグループの 2 回の出現が含まれています。 最初の `digit` という名前のグループは、1 桁以上の数字をキャプチャします。 2 番目の `digit` という名前のグループは、1 桁以上の数字の 0 回か 1 回の出現をキャプチャします。 例の出力が示すように、2 番目のキャプチャ グループがテキストと正常に一致する場合、そのテキストの値は オブジェクトの値を定義します。 2 番目のキャプチャ グループが入力文字列と一致しない場合、最後に成功した一致の値によって オブジェクトの値が定義されます。 + + [!code-csharp[RegularExpressions.Language.Grouping#12](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/duplicate1.cs#12)] + [!code-vb[RegularExpressions.Language.Grouping#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/duplicate1.vb#12)] + + 次の表に、正規表現がどのように解釈されるかを示します。 + +|パターン|説明| +|----------|--------| +|`\D+`|1 個以上の 10 進数以外の文字と一致します。| +|`(?\d+)`|1 個以上の 10 進数の文字と一致します。 一致を `digit` という名前のグループに割り当てます。| +|\\D\+|1 個以上の 10 進数以外の文字と一致します。| +|`(?\d+)?`|1 つ以上の 10 進数の文字の 0 回または 1 回の出現と一致します。 一致を `digit` という名前のグループに割り当てます。| + + +## グループ定義の均等化 + グループ定義の均等化では、既に定義されていたグループの定義を削除し、既に定義されていたグループと現在のグループの間隔を現在のグループに格納します。 このグループ化構成体の形式は次のとおりです。 + +``` +(?subexpression) +``` + + または + +``` +(?'name1-name2' subexpression) +``` + + ここで、*name1* は現在のグループ \(省略可能\) で、*name2* は既に定義されていたグループで、*subexpression* は有効な正規表現パターンです。 グループ定義の均等化では、*name2* の定義を削除し、*name2* と *name1* の間隔を *name1* に格納します。*name2* グループが定義されていない場合、一致はバックトラックされます。*name2* の最後の定義を削除すると、*name2* の以前の定義がわかるため、この構成体によって、かっこや左右の角かっこなど入れ子になった構成体を追跡するカウンターとして *name2* グループのキャプチャのスタックを使用できます。 + + グループ定義の均等化では、*name2* をスタックとして使用します。 入れ子になった各構成体の開始文字が、グループとその コレクションに配置されます。 終了文字が一致すると、対応する開始文字がグループから削除され、 コレクションが 1 つ減らされます。 入れ子になったすべての構成体の開始文字と終了文字が一致したら、*name1* は空になります。 + +> [!NOTE] +> 入れ子になった構成体の適切な開始文字と終了文字を使用するように次の例の正規表現を変更すると、その正規表現を使用して、複数の入れ子になったメソッド呼び出しを含む数式やプログラム コード行などのほとんどの入れ子になった構成体を処理できるようになります。 + + 次の例では、グループ定義の均等化を使用して、入力文字列内の左と右の山かっこ \(\<\>\) を一致させています。 この例では、一致する山かっこのペアを追跡するスタックのように使用される `Open` および `Close` という 2 つの名前付きグループを定義しています。 キャプチャされた各左山かっこは `Open` グループのキャプチャ コレクションに挿入され、キャプチャされた各右山かっこは `Close` グループのキャプチャ コレクションに挿入されます。 グループ定義の均等化によって、各左山かっこに一致する右山かっこが存在することが確認されます。 存在しない場合、最後のサブパターンの `(?(Open)(?!))` は、`Open` グループが空でない場合 \(したがって、いくつかの入れ子になった構成体に右山かっこがない場合\) にのみ評価されます。 最後のサブパターンが評価されると、`(?!)` サブパターンが必ず失敗するゼロ幅の否定先読みアサーションであるため、照合は失敗します。 + + [!code-csharp[RegularExpressions.Language.Grouping#3](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/grouping3.cs#3)] + [!code-vb[RegularExpressions.Language.Grouping#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/grouping3.vb#3)] + + 正規表現パターンは次のとおりです。 + +``` +^[^<>]*(((?'Open'<)[^<>]*)+((?'Close-Open'>)[^<>]*)+)*(?(Open)(?!))$ +``` + + この正規表現パターンは、次のように解釈されます。 + +|パターン|説明| +|----------|--------| +|`^`|文字列の先頭から始まります。| +|`[^<>]*`|左または右の山かっこではない 0 個以上の文字と一致します。| +|`(?'Open'<)`|左山かっこと一致し、そのかっこを `Open` という名前のグループに代入します。| +|`[^<>]*`|左または右の山かっこではない 0 個以上の文字と一致します。| +|`((?'Open'<)[^<>]*) +`|左山かっこの後に左または右の山かっこではない 0 個以上の文字が続くパターンの 1 回以上の出現と一致します。 これが 2 番目のキャプチャ グループです。| +|`(?'Close-Open'>)`|右山かっこと一致し、`Open` グループと現在のグループの間の部分文字列を `Close` グループに代入して、`Open` グループの定義を削除します。| +|`[^<>]*`|左または右の山かっこではない任意の文字の 0 回以上の出現と一致します。| +|`((?'Close-Open'>)[^<>]*)+`|右山かっこの後に左または右の山かっこではない任意の文字の 0 回以上の出現が続くパターンの 1 回以上の出現と一致します。 右山かっこと一致したときに、`Open` グループと現在のグループの間の部分文字列を `Close` グループに代入して、`Open` グループの定義を削除します。 これが 3 番目のキャプチャ グループです。| +|`(((?'Open'<)[^<>]*)+((?'Close-Open'>)[^<>]*)+)*`|左山かっこの 1 回以上の出現の後に山かっこではない 0 個以上の文字が続き、その後に右山かっこの 1 回以上の出現が続き、その後に山かっこ以外の 0 回以上の出現が続くパターンの 0 回以上の出現と一致します。 右山かっこと一致したときに、`Open` グループの定義を削除して、`Open` グループと現在のグループの間の部分文字列を `Close` グループに代入します。 これが最初のキャプチャ グループです。| +|`(?(Open)(?!))`|`Open` グループが存在し、空の文字列が一致する場合、照合を破棄してください。ただし、文字列内での正規表現エンジンの位置は進めないでください。 これはゼロ幅の否定先読みアサーションです。 空の文字列が常に入力文字列に暗黙的に存在するため、この照合は必ず失敗します。 この照合の失敗は、山かっこの数が一致していないことを示します。| +|`$`|入力文字列の末尾と一致します。| + + 最後の部分式の `(?(Open)(?!))` は、入力文字列内の入れ子の構成体の数が一致しているかどうかを示します \(各左山かっこに一致する右山かっこが存在するかどうかなど\)。 有効なキャプチャ グループに基づく条件一致を使います。詳しくは、「[代替構成体](../../../docs/standard/base-types/alternation-constructs-in-regular-expressions.md)」をご覧ください。`Open` グループが定義されている場合は、正規表現エンジンによって、入力文字列内で部分式 `(?!)` の照合が試行されます。`Open` グループは、入れ子の構成体の数が一致していない場合にのみ定義する必要があります。 したがって、入力文字列で照合されるパターンでは、照合は常に失敗します。 この場合、`(?!)` は、常に失敗するゼロ幅の否定先読みアサーションです。入力文字列内の次の位置に、必ず空の文字列が暗黙的に存在するためです。 + + この例では、正規表現エンジンによって、次の表に示すように入力文字列 "\\\>" が評価されます。 + +|手順|パターン|結果| +|--------|----------|--------| +|1|`^`|入力文字列の先頭から照合を開始します。| +|2|`[^<>]*`|左山かっこの前にある山かっこではない文字を検索します。一致する項目は見つかりません。| +|3|`(((?'Open'<)`|"\" の左山かっこと一致し、そのかっこを `Open` グループに代入します。| +|4|`[^<>]*`|"abc" と一致します。| +|5|`)+`|"\
入力文字列内の次の文字は左山かっこではないので、正規表現エンジンは `(?'Open'<)[^<>]*)` サブパターンに戻りません。| +|6|`((?'Close-Open'>)`|"\" の右山かっこと一致し、`Open` グループと右山かっこの間の部分文字列である "abc" を `Close` グループに代入して、`Open` グループの現在の値 \("\<"\) を削除してグループを空にします。| +|7|`[^<>]*`|右山かっこの後にある山かっこではない文字を検索します。一致する項目は見つかりません。| +|8|`)+`|3 番目のキャプチャ グループの値は "\>" です。

入力文字列内の次の文字は右山かっこではないので、正規表現エンジンは `((?'Close-Open'>)[^<>]*)` サブパターンに戻りません。| +|9|`)*`|最初のキャプチャ グループの値は "\" です。

入力文字列内の次の文字は左山かっこなので、正規表現エンジンは `(((?'Open'<)` サブパターンに戻ります。| +|10|`(((?'Open'<)`|"\" の左山かっこと一致し、そのかっこを `Open` グループに代入します。 その コレクションには、現在、単一の値 "\<" が含まれています。| +|11|`[^<>]*`|"mno" と一致します。| +|12|`)+`|"\
入力文字列内の次の文字は左山かっこなので、正規表現エンジンは `(?'Open'<)[^<>]*)` サブパターンに戻ります。| +|13|`(((?'Open'<)`|"\" の左山かっこと一致し、そのかっこを `Open` グループに代入します。 グループの `Open` コレクションには、現在、"\" の左山かっこと "\" の左山かっこの 2 つのキャプチャが含まれています。| +|14|`[^<>]*`|"xyz" と一致します。| +|15|`)+`|"\
入力文字列内の次の文字は左山かっこではないので、正規表現エンジンは `(?'Open'<)[^<>]*)` サブパターンに戻りません。| +|16|`((?'Close-Open'>)`|"\" の右山かっこと一致します。 "xyz" は `Open` グループと右山かっこの間の部分文字列を `Close` グループに代入して、`Open` グループの現在の値を削除します。 前のキャプチャの値 \("\" の左山かっこ\) が `Open` グループの現在の値になります。 グループの `Open` コレクションには、現在、単一のキャプチャ \("\" の左山かっこ\) が含まれています。| +|17|`[^<>]*`|山かっこではない文字を検索します。一致する項目は見つかりません。| +|18|`)+`|3 番目のキャプチャ グループの値は "\>" です。

入力文字列内の次の文字は右山かっこなので、正規表現エンジンは `((?'Close-Open'>)[^<>]*)` サブパターンに戻ります。| +|19|`((?'Close-Open'>)`|"xyz\>\>" の最後の右山かっこと一致し、"mno\" \(`Open` グループと右山かっこの間の部分文字列\) を `Close` グループに代入して、`Open` グループの現在の値を削除します。`Open` グループは空になります。| +|20|`[^<>]*`|山かっこではない文字を検索します。一致する項目は見つかりません。| +|21|`)+`|3 番目のキャプチャ グループの値は "\>" です。

入力文字列内の次の文字は右山かっこではないので、正規表現エンジンは `((?'Close-Open'>)[^<>]*)` サブパターンに戻りません。| +|22|`)*`|最初のキャプチャ グループの値は "\\>" です。

入力文字列内の次の文字は左山かっこではないので、正規表現エンジンは `(((?'Open'<)` サブパターンに戻りません。| +|23|`(?(Open)(?!))`|`Open` グループは定義されていないので、照合は試行されません。| +|24|`$`|入力文字列の末尾と一致します。| + + +## 非キャプチャ グループ + 次のグループ化構成体は、部分式と一致した部分文字列をキャプチャしません。 + +``` +(?:subexpression) +``` + + ここで、*subexpression* は有効な正規表現パターンです。 非キャプチャ グループ構成体は、通常、量指定子がグループに適用されるがグループによってキャプチャされた部分文字列は対象にならない場合に使用されます。 + +> [!NOTE] +> 正規表現に入れ子になったグループ化構成体が含まれる場合、外側の非キャプチャ グループ構成体は内側の入れ子になったグループ構成体には適用されません。 + + 次の例は、非キャプチャ グループを含む正規表現を示しています。 出力には、キャプチャされたグループは含まれません。 + + [!code-csharp[RegularExpressions.Language.Grouping#5](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/noncapture1.cs#5)] + [!code-vb[RegularExpressions.Language.Grouping#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/noncapture1.vb#5)] + + 正規表現 `(?:\b(?:\w+)\W*)+\.` は、ピリオドで終了する文と一致します。 この正規表現は個々の単語ではなく文に焦点を合わせているので、グループ化構成体は量指定子としてのみ使用されます。 この正規表現パターンの解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`(?:\w+)`|1 つ以上の単語文字に一致します。 一致したテキストをキャプチャされたグループに代入しません。| +|`\W*`|0 個以上の単語文字に使用されない文字と一致します。| +|`(?:\b(?:\w+)\W*)+`|ワード境界から始まる 1 個以上の単語文字、および 0 個以上の単語文字に使用されない文字が 1 回以上続くパターンと一致します。 一致したテキストをキャプチャされたグループに代入しません。| +|`\.`|ピリオドと一致します。| + + +## グループ オプション + 次のグループ化構成体は、指定したオプションを部分式に適用または無効にします。 + + `(?imnsx-imnsx:` *subexpression* `)` + + ここで、*subexpression* は有効な正規表現パターンです。 たとえば、`(?i-s:)` によって、大文字小文字の区別が有効になり単一行モードが無効になります。 指定できるインライン オプションの詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」を参照してください。 + +> [!NOTE] +> クラス コンストラクターまたは静的メソッドを使用すると、部分式ではなく正規表現全体に適用されるオプションを指定できます。 また、`(?imnsx-imnsx)` 言語コンストラクトを使うと、正規表現内の特定の位置より後に適用されるインライン オプションを指定できます。 + + グループ オプション構成体はキャプチャ グループではありません。 つまり、*subexpression* によってキャプチャされる文字列の一部は一致に含まれますが、キャプチャ グループに含まれることも オブジェクトにデータを設定するために使用されることもありません。 + + たとえば、次の例の正規表現 `\b(?ix: d \w+)\s` では、グループ化構成体のインライン オプションを使用して、文字 "d" で始まるすべての単語を識別するときに、大文字と小文字を区別しない一致を有効にすると同時に、パターンの空白を無視します。 正規表現は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`(?ix: d \w+)`|大文字と小文字を区別しない一致を使用してこのパターンの空白を無視し、"d" の後に単語文字に使用される文字が 1 個以上続くパターンと一致します。| +|`\s`|空白文字と一致します。| + + [!code-csharp[Conceptual.Regex.Language.Options#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/example1.cs#8)] + [!code-vb[Conceptual.Regex.Language.Options#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/example1.vb#8)] + + +## ゼロ幅の肯定先読みアサーション + 次のグループ化構成体は、ゼロ幅の肯定先読みアサーションを定義します。 + + `(?=` *subexpression* `)` + + ここで、*subexpression* は正規表現パターンです。 一致と見なされるためには、入力文字列が *subexpression* の正規表現パターンと一致する必要がありますが、一致した部分文字列は一致結果には含まれません。 ゼロ幅の肯定先読みアサーションはバックトラックしません。 + + 通常、ゼロ幅の肯定先読みアサーションは正規表現パターンの末尾にあります。 一致と見なされるには文字列の末尾にある必要がありますが、一致には含まれない部分文字列を定義します。 これは、過度なバックトラッキングを防ぐためにも役立ちます。 ゼロ幅の肯定先読みアサーションを使用して、特定のキャプチャされたグループの先頭テキストが、そのキャプチャされたグループに対して定義されたパターンのサブセットと一致するテキストになるようにすることができます。 たとえば、キャプチャ グループが連続する単語文字と一致する場合に、ゼロ幅の肯定先読みアサーションを使用して、先頭の文字がアルファベット大文字になるように要求できます。 + + 次の例では、ゼロ幅の肯定先読みアサーションを使用して、入力文字列内の動詞 "is" の前にある単語を照合します。 + + [!code-csharp[RegularExpressions.Language.Grouping#6](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/lookahead1.cs#6)] + [!code-vb[RegularExpressions.Language.Grouping#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/lookahead1.vb#6)] + + この正規表現 `\b\w+(?=\sis\b)` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`\w+`|1 つ以上の単語文字に一致します。| +|`(?=\sis\b)`|単語文字に使用される文字の後に、空白文字とワード境界で終了する文字列 "is" が続くかどうかを確認します。 該当する場合は一致と見なされます。| + + +## ゼロ幅の否定先読みアサーション + 次のグループ化構成体は、ゼロ幅の否定先読みアサーションを定義します。 + + `(?!` *subexpression* `)` + + ここで、*subexpression* は正規表現パターンです。 一致と見なされるためには、入力文字列が *subexpression* の正規表現パターンと一致しない必要がありますが、一致した文字列は一致結果には含まれません。 + + 通常、ゼロ幅の否定先読みアサーションは正規表現の先頭または末尾で使用されます。 正規表現の先頭の場合は、類似してもより一般的なパターンを照合するように正規表現の先頭で定義されているときに、一致しない必要がある特定のパターンを定義できます。 この場合は、バックトラッキングを制限するためによく使用されます。 正規表現の末尾の場合は、一致の末尾に出現できない部分式を定義できます。 + + 次の例では、正規表現の先頭でゼロ幅の先読みアサーションを使用して、"un" で始まらない単語を照合する正規表現を定義します。 + + [!code-csharp[RegularExpressions.Language.Grouping#7](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/negativelookahead1.cs#7)] + [!code-vb[RegularExpressions.Language.Grouping#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/negativelookahead1.vb#7)] + + この正規表現 `\b(?!un)\w+\b` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`(?!un)`|次の 2 文字が "un" であるかどうかを確認します。 該当しない場合は一致と考えられます。| +|`\w+`|1 つ以上の単語文字に一致します。| +|`\b`|ワード境界で照合を終了します。| + + 次の例では、正規表現の末尾でゼロ幅の先読みアサーションを使用して、区切り文字で終わらない単語を照合する正規表現を定義します。 + + [!code-csharp[RegularExpressions.Language.Grouping#8](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/negativelookahead2.cs#8)] + [!code-vb[RegularExpressions.Language.Grouping#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/negativelookahead2.vb#8)] + + この正規表現 `\b\w+\b(?!\p{P})` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`\w+`|1 つ以上の単語文字に一致します。| +|`\b`|ワード境界で照合を終了します。| +|`\p{P})`|次の文字が区切り記号 \(ピリオドやコンマなど\) ではない場合は一致と見なされます。| + + +## ゼロ幅の正の後読みアサーション + 次のグループ化構成体は、ゼロ幅の正の後読みアサーションを定義します。 + + `(?<=` *subexpression* `)` + + ここで、*subexpression* は正規表現パターンです。 一致と見なされるためには、*subexpression* が入力文字列の現在の位置の左側に出現する必要がありますが、`subexpression` は一致結果には含まれません。 ゼロ幅の正の後読みアサーションはバックトラックしません。 + + 通常、ゼロ幅の正の後読みアサーションは正規表現の先頭で使用されます。 定義されるパターンは一致の事前条件ですが、一致結果には含まれません。 + + たとえば、次の例では、21 世紀の西暦下 2 桁を照合します \(つまり、一致する文字列の前に数字 "20" がある必要があります\)。 + + [!code-csharp[RegularExpressions.Language.Grouping#9](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/lookbehind1.cs#9)] + [!code-vb[RegularExpressions.Language.Grouping#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/lookbehind1.vb#9)] + + この正規表現パターン `(?<=\b20)\d{2}\b` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\d{2}`|2 桁の 10 進数と一致します。| +|`{?<=\b20)`|ワード境界で 2 桁の 10 進数の前に 10 進数 "20" がある場合は照合を続行します。| +|`\b`|ワード境界で照合を終了します。| + + ゼロ幅の正の後読みアサーションは、キャプチャされたグループの最後の文字がそのグループの正規表現パターンと一致する文字のサブセットになる必要がある場合に、バックトラッキングを制限するためにも使用されます。 たとえば、グループが連続するすべての単語文字をキャプチャする場合に、ゼロ幅の正の後読みアサーションを使用して、最後の文字がアルファベットになるように要求できます。 + + +## ゼロ幅の負の後読みアサーション + 次のグループ化構成体は、ゼロ幅の負の後読みアサーションを定義します。 + + `(? +## 非バックトラッキング部分式 + 次のグループ化構成体は、非バックトラッキング部分式を表します。"最長" 部分式とも呼ばれます。 + + `(?>` *subexpression* `)` + + ここで、*subexpression* は正規表現パターンです。 + + 通常、正規表現にオプションまたは代替の一致パターンが含まれる場合に一致する文字列が見つからなかったときは、正規表現エンジンは複数の方向に分岐することで入力文字列とパターンを照合できます。 最初の分岐で一致する文字列が見つからなかった場合、正規表現エンジンは最初に一致した時点まで戻り \(バックトラック\)、2 番目の分岐を使用して照合を試みることができます。 すべての分岐が試されるまでこの処理を続行できます。 + + `(?>` *subexpression* `)` 言語コンストラクトでは、バックトラッキングが無効になります。 正規表現エンジンは、入力文字列内の文字をできるだけ多く照合します。 一致する文字列が見つからなくなっても、バックトラックして代替パターン一致を試みることはありません。 つまり、部分式はその部分式単体と一致する文字列のみと一致します。部分式とその後続の部分式に基づく文字列の照合は試行しません。 + + バックトラッキングが成功しないことがわかっている場合は、このオプションを使用することをお勧めします。 正規表現エンジンで不要な検索が実行されないようにすることで、パフォーマンスが向上します。 + + 次の例は、非バックトラッキング部分式によってパターン一致の結果がどのように変わるかを示しています。 バックトラッキング正規表現は、ワード境界で一連の文字の繰り返しの後に同じ文字がもう一度出現するパターンと一致しますが、非バックトラッキング正規表現は一致しません。 + + [!code-csharp[RegularExpressions.Language.Grouping#11](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/nonbacktracking1.cs#11)] + [!code-vb[RegularExpressions.Language.Grouping#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/nonbacktracking1.vb#11)] + + 非バックトラッキング正規表現 `(?>(\w)\1+).\b` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`(\w)`|単語文字に使用される 1 文字と一致し、その文字を 1 番目のキャプチャ グループに代入します。| +|`\1+`|最初にキャプチャされた部分文字列の値と 1 回以上一致します。| +|`.`|任意の文字と一致します。| +|`\b`|ワード境界で照合を終了します。| +|`(?>(\w)\1+)`|重複する単語文字の 1 回以上の出現と一致しますが、バックトラックしてワード境界の最後の文字と一致することはありません。| + + +## グループ化構成体および正規表現オブジェクト + 正規表現キャプチャ グループと一致する部分文字列は、 オブジェクトで表されます。このオブジェクトは、 プロパティによって返される オブジェクトから取得できます。 オブジェクトの値は次のように設定されます。 + +- コレクション内の最初の オブジェクト \(インデックス 0 の位置にあるオブジェクト\) は、一致した文字列全体を表します。 + +- 次の オブジェクト セットは、名前のない \(番号付き\) キャプチャ グループを表します。 正規表現で定義されている順序で左から右に並びます。 これらのグループのインデックス値の範囲は、1 からコレクション内の名前のないキャプチャ グループの数までです。 \(特定のグループのインデックスは、その番号付き前方参照と同等です。 前方参照について詳しくは、「[前方参照構成体](../../../docs/standard/base-types/backreference-constructs-in-regular-expressions.md)」をご覧ください。\) + +- 最後の オブジェクト セットは、名前付きキャプチャ グループを表します。 正規表現で定義されている順序で左から右に並びます。 最初の名前付きキャプチャ グループのインデックス値は、最後の名前のないキャプチャ グループのインデックスよりも 1 大きい数値になります。 正規表現に名前のないキャプチャ グループがない場合、最初の名前付きキャプチャ グループのインデックス値は 1 になります。 + + 量指定子をキャプチャ グループに適用する場合、対応する オブジェクトの 、および の各プロパティには、キャプチャ グループによってキャプチャされた最後の部分文字列が反映されます。 量指定子を持つグループによってキャプチャされたすべての部分文字列は、 プロパティによって返される オブジェクトから取得できます。 + + 次の例では、 オブジェクトと オブジェクトの関係を明確にします。 + + [!code-csharp[RegularExpressions.Language.Grouping#4](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.grouping/cs/objectmodel1.cs#4)] + [!code-vb[RegularExpressions.Language.Grouping#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.grouping/vb/objectmodel1.vb#4)] + + 正規表現パターン `\b(\w+)\W+)+` は、文字列から単語を個別に抽出します。 このパターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`(\w+)`|1 つ以上の単語文字に一致します。 これらの文字が集まって、単語を形成します これが 2 番目のキャプチャ グループです。| +|`\W+`|1 個以上の単語文字に使用されない文字と一致します。| +|`(\w+)\W+)+`|1 個以上の単語文字、および 1 個以上の単語文字に使用されない文字が 1 回以上続くパターンと一致します。 これが最初のキャプチャ グループです。| + + 最初のキャプチャ グループは、文の各単語と一致します。 2 番目のキャプチャ グループは、各単語およびその単語に続く句読点や空白と一致します。 インデックスが 2 の オブジェクトは、2 番目のキャプチャ グループと一致したテキストの情報を保持します。 キャプチャ グループによってキャプチャされたすべての単語は、 プロパティによって返される オブジェクトから取得できます。 + +## 参照 + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) + [バックトラッキング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-convert-numeric-user-input-in-web-controls-to-numbers.md b/docs/standard/base-types/how-to-convert-numeric-user-input-in-web-controls-to-numbers.md new file mode 100644 index 00000000000..01251415cbd --- /dev/null +++ b/docs/standard/base-types/how-to-convert-numeric-user-input-in-web-controls-to-numbers.md @@ -0,0 +1,77 @@ +--- +title: "方法 : Web コントロールでの数値のユーザー入力を数値に変換する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "変換 (数字のユーザー入力を数値に)" + - "書式指定 [.NET Framework], 数" + - "数値の書式指定 [.NET Framework]" + - "数値 [.NET Framework], 変換 (数字のユーザー入力を数値に)" + - "数値書式指定文字列 [.NET Framework]" + - "解析 (文字列を) [.NET Framework], 数値文字列" +ms.assetid: f27ddfb8-7479-4b79-8879-02a3bd8402d4 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法 : Web コントロールでの数値のユーザー入力を数値に変換する +Web ページは世界中どこでも表示可能なため、ユーザーは コントロールの中に多種多様な形式で数値データを入力する可能性があります。 このため、Web ページのユーザーのロケールとカルチャを判別することは非常に重要です。 ユーザー入力を解析するとき、ユーザーのロケールとカルチャによって定義された書式指定規則を適用できます。 + +### Web TextBox コントロールでの数値入力を数値に変換するには + +1. プロパティによって返された文字列配列にデータが含まれているかどうかを判別します。 含まれない場合は、手順 6. に進みます。 + +2. プロパティによって返された文字列配列にデータが含まれる場合は、その最初の要素を取得します。 最初の要素は、ユーザーの既定の言語と地域、または優先される言語と地域を表します。 + +3. コンストラクターを呼び出すことにより、ユーザーが選択したカルチャを表す オブジェクトをインスタンス化します。 + +4. ユーザー入力の変換先となる数値型の `TryParse` メソッドまたは `Parse` メソッドを呼び出します。 `TryParse` メソッドまたは `Parse` メソッドの `provider` パラメーターを指定するオーバーロードを使用して、次のいずれかを渡します。 + + - 手順 3. で作成した オブジェクト。 + + - 手順 3. で作成した オブジェクトの プロパティによって返される オブジェクト。 + +5. 変換が失敗した場合、 プロパティによって返される文字列配列内の他の要素ごとに手順 2. から 4. を繰り返します。 + +6. 変換が引き続き失敗する場合、または プロパティによって返された文字列配列が空の場合には、 プロパティによって返されるインバリアント カルチャを使って文字列を解析します。 + +## 使用例 + 次の例は、 コントロールに数値を入力するようユーザーに要求して、それを数値に変換する Web フォームの完全な分離コード ページです。 その後、その数値を 2 倍にして、元の入力と同じ書式指定規則を使って表示します。 + + [!code-csharp[Formatting.HowTo.ParseNumericInput#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.ParseNumericInput/cs/NumericUserInput1.aspx.cs#1)] + [!code-vb[Formatting.HowTo.ParseNumericInput#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.ParseNumericInput/vb/NumericUserInput1.aspx.vb#1)] + + プロパティには、HTTP 要求の `Accept-Language` ヘッダーに含まれるカルチャ名からデータが入ります。 ただし、すべてのブラウザーの要求に `Accept-Language` ヘッダーが含まれるとは限りません。ユーザーがヘッダーを完全に禁止する場合もあります。 このため、ユーザー入力を解析する際にはフォールバック カルチャが重要になります。 通常、フォールバック カルチャは、 によって返されるインバリアント カルチャです。 また、テキスト ボックスへの入力によってユーザーがカルチャ名を Internet Explorer に提供する場合もありますが、無効なカルチャ名が指定される可能性があります。 このため、 オブジェクトをインスタンス化する際には、例外処理が重要になります。 + + Internet Explorer によって送信された HTTP 要求から取得される 配列には、ユーザー側の優先度設定の順序でデータが入ります。 配列の先頭の要素には、ユーザーの最優先カルチャ\/地域の名前が格納されます。 何らかの追加項目が配列に含まれる場合、Internet Explorer はそれらに任意のクオリティ識別子を割り当てます。この識別子はセミコロンによってカルチャから区切られます。 たとえば、fr\-FR カルチャの項目は `fr-FR;q=0.7` という形式になります。 + + この例では、`useUserOverride` パラメーターを `false` に設定して コンストラクターを呼び出し、新しい オブジェクトを作成します。 これによって、カルチャ名がサーバー上の既定のカルチャ名である場合、クラス コンストラクターによって作成される新しい オブジェクトにはカルチャの既定の設定が含まれ、サーバーの **\[地域と言語のオプション\]** アプリケーションを使ってオーバーライドされた設定は反映されません。 通常、サーバーでオーバーライドされた設定値はユーザーのシステムに存在せず、ユーザー入力に反映されることもありません。 + + ユーザー入力の変換先となる数値型の `Parse` メソッドまたは `TryParse` メソッドをコードで呼び出すことができます。 1 つの解析操作で解析メソッドを繰り返し呼び出す必要が生じる場合があります。 したがって、解析操作が失敗した場合に `false` を返す `TryParse` メソッドの方が適切です。 これに対して、`Parse` メソッドによって繰り返しスローされる例外を Web アプリケーションで処理する場合、コストが非常に大きくなる可能性があります。 + +## コードのコンパイル + コードをコンパイルするには、既存のすべてのコードに置き換える形で、このコードを [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] 分離コード ページの中にコピーします。 [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] Web ページには、次のコントロールを含める必要があります。 + +- コード内で参照されない コントロール。 その プロパティを "Enter a Number:" に設定します。 + +- `NumericString` という名前の コントロール。 + +- `OKButton` という名前の コントロール。 その プロパティを "OK" に設定します。 + + クラスの名前を、`NumericUserInput` から、[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] ページの `Page` ディレクティブの `Inherits` 属性で定義されるクラス名に変更します。 `NumericInput` オブジェクト参照の名前を、[!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] ページの `form` タグの `id` 属性で定義される名前に変更します。 + +## .NET Framework セキュリティ + ユーザーが HTML ストリーム内にスクリプトを挿入するのを防ぐために、サーバー応答の中でユーザー入力を直接エコー バックしないでください。 そうする代わりに、 メソッドを使ってこれをエンコードする必要があります。 + +## 参照 + [書式設定操作の実行](../../../docs/standard/base-types/performing-formatting-operations.md) + [数値文字列の解析](../../../docs/standard/base-types/parsing-numeric.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-define-and-use-custom-numeric-format-providers.md b/docs/standard/base-types/how-to-define-and-use-custom-numeric-format-providers.md new file mode 100644 index 00000000000..2fd12430e08 --- /dev/null +++ b/docs/standard/base-types/how-to-define-and-use-custom-numeric-format-providers.md @@ -0,0 +1,96 @@ +--- +title: "方法 : カスタム数値書式プロバイダーを定義して使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "カスタム書式指定文字列" + - "カスタム数値書式指定文字列" + - "表示 (日付と時刻のデータを)" + - "書式プロバイダー [.NET Framework]" + - "書式指定 [.NET Framework], 数" + - "数値の書式指定 [.NET Framework]" + - "数値 [.NET Framework], カスタム数値書式指定文字列" + - "数値書式指定文字列 [.NET Framework]" +ms.assetid: a281bfbf-6596-45ed-a2d6-3782d535ada2 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 方法 : カスタム数値書式プロバイダーを定義して使用する +[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では、数値の文字列表現を広範に制御することができます。 数値の書式をカスタマイズするための、次のような機能がサポートされています。 + +- 標準の数値書式指定文字列。これは、数値を文字列形式に変換するための定義済み形式のセットです。 `format` パラメーターを持つ、 などの任意の数値書式指定メソッドでこれらを使用できます。 詳細については、「[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)」を参照してください。 + +- カスタム数値書式指定文字列。これはシンボルのセットで、これらのシンボルを組み合わせてカスタム数値書式指定子を定義できます。 これらもまた、 などの、`format` パラメーターを持つ任意の数値書式指定メソッドで使用できます。 詳細については、「[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)」を参照してください。 + +- カスタム または オブジェクト。これらは、数値の文字列表現の表示で使用されるシンボルと書式パターンを定義します。 `provider` パラメーターを持つ、 などの任意の数値書式指定メソッドでこれらを使用できます。 通常は、カルチャ固有の書式設定を指定するために `provider` パラメーターを使用します。 + + これら 3 つの技法が不適切な場合もあります。書式設定されたアカウント番号、識別番号、または郵便番号をアプリケーションで表示する必要がある場合などです。 [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では、数値の書式を決定するために、 オブジェクトでも オブジェクトでもない書式設定オブジェクトを定義することもできます。 ここでは、そのようなオブジェクトの実装方法を手順を追って説明し、電話番号の書式を設定する例を示します。 + +### カスタム書式プロバイダーを定義するには + +1. インターフェイスと インターフェイスを実装するクラスを定義します。 + +2. メソッドを実装します。 はコールバック メソッドで、カスタム書式指定を実際に行うオブジェクトを取得するために \([String.Format\(IFormatProvider, String, Object\ メソッドなどの\) 書式指定メソッドによって呼び出されます。 通常、 の実装は次のような操作を実行します。 + + 1. メソッド パラメーターとして渡される オブジェクトが インターフェイスを表すかどうかを判断します。 + + 2. パラメーターが インターフェイスを表す場合、 は、カスタム書式指定を行う インターフェイスを実装するオブジェクトを返します。 通常は、カスタム書式指定オブジェクト自身が返されます。 + + 3. パラメーターが インターフェイスを表さない場合、 は `null` を返します。 + +3. メソッドを実装します。 このメソッドは [String.Format\(IFormatProvider, String, Object\ メソッドによって呼び出され、数値の文字列表現を返します。 このメソッドを実装する場合には、通常、次のような操作を行う必要があります。 + + 1. 必要に応じて、`provider` パラメーターを検査することにより、このメソッドが適切な書式設定サービスを提供することを確認します。 の両方を実装する書式設定オブジェクトの場合、現在の書式設定オブジェクトと等しいかどうか `provider` パラメーターを検査する必要があります。 + + 2. 書式設定オブジェクトがカスタム書式指定子をサポートするかどうかを判断します。\(たとえば、「N」書式指定子は ITU\-T の推奨 E.123 形式で出力を示す場合があります。"」米国の電話番号が NANP 形式で「出力する必要があることを示すことがあります。\) 書式指定子が使用される場合、メソッドで特定の書式指定子を処理する必要があります。 これは `format` パラメーターでメソッドに渡されます。 指定子が存在しない場合、`format` パラメーターの値は です。 + + 3. `arg` パラメーターとしてメソッドに渡される数値を取得します。 それを文字列形式に変換するために必要な操作をすべて実行します。 + + 4. `arg` パラメーターの文字列表現を返します。 + +### カスタム数値書式設定オブジェクトを使用するには + +1. カスタム書式設定クラスの新しいインスタンスを作成します。 + +2. 書式指定メソッド [String.Format\(IFormatProvider, String, Object\ を呼び出します。その際、カスタム書式設定オブジェクト、書式指定子 \(使用しない場合は \)、および書式設定の対象となる数値を渡します。 + +## 使用例 + 次の例では `TelephoneFormatter` という NANP または E.123 形式に米国の電話番号を表す数値を変換するカスタム数値書式のプロバイダーを定義します。 このメソッドは、"N" \(NANP 形式を出力\) および "I" \(国際 E.123 形式を出力\) の 2 つの書式指定子を処理します。 + + [!code-csharp[Formatting.HowTo.NumericValue#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.NumericValue/cs/Telephone1.cs#1)] + [!code-vb[Formatting.HowTo.NumericValue#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.NumericValue/vb/Telephone1.vb#1)] + + このカスタム数値書式プロバイダーは、[String.Format\(IFormatProvider, String, Object\ メソッドでのみ使用可能です。 型のパラメーターを持つ数値書式指定メソッドの他のすべてのオーバーロード \(たとえば `ToString`\) は、 型を表す オブジェクトを 実装に渡します。 これらは、メソッドから オブジェクトが返されることを期待します。 これが返されない場合、カスタム数値書式プロバイダーは無視され、現在のカルチャの オブジェクトが代わりに使用されます。 この例の `TelephoneFormatter.GetFormat` メソッドは、数値書式指定メソッドに渡されるものが適切でない場合に備えて、メソッド パラメーターを検査し、それが 以外の型を表す場合には `null` を返します。 + + カスタム数値書式プロバイダーで書式指定子のセットをサポートする場合には、[String.Format\(IFormatProvider, String, Object\ メソッド呼び出しの書式指定項目に書式指定子が含まれない場合の既定の動作を必ず実装してください。 この例では、"N" が既定の書式指定子です。 こうして書式指定子を明示的に指定することで、数値を書式設定された電話番号に変換できます。 次の例は、このようなメソッド呼び出しを示しています。 + + [!code-csharp[Formatting.HowTo.NumericValue#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.NumericValue/cs/Telephone1.cs#2)] + [!code-vb[Formatting.HowTo.NumericValue#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.NumericValue/vb/Telephone1.vb#2)] + + 加えて、書式指定子が存在しない場合にも変換が可能です。 次の例は、このようなメソッド呼び出しを示しています。 + + [!code-csharp[Formatting.HowTo.NumericValue#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.NumericValue/cs/Telephone1.cs#3)] + [!code-vb[Formatting.HowTo.NumericValue#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.NumericValue/vb/Telephone1.vb#3)] + + 既定の書式指定子が定義されない場合、コードがサポートしない書式設定を .NET Framework で提供できるように、 メソッドの実装に次のようなコードを含める必要があります。 + + [!code-csharp[System.ICustomFormatter.Format#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.ICustomFormatter.Format/cs/format.cs#1)] + [!code-vb[System.ICustomFormatter.Format#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.ICustomFormatter.Format/vb/Format.vb#1)] + + この例では、 を実装するメソッドが [String.Format\(IFormatProvider, String, Object\ メソッドのコールバック メソッドとして機能するようになっています。 このため、このメソッドは `formatProvider` パラメーターを検査して、現在の `TelephoneFormatter` オブジェクトへの参照が含まれるかどうかを判別します。 また、コードからこのメソッドを直接呼び出すこともできます。 その場合には、カルチャ固有の書式設定情報を指定する オブジェクトまたは オブジェクトを提供するために `formatProvider` パラメーターを使用できます。 + +## コードのコンパイル + コマンド ラインで csc.exe または vb.exe を使用してコードをコンパイルします。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でコードをコンパイルするには、コンソール アプリケーション プロジェクト テンプレートの中にコードを配置します。 + +## 参照 + [書式設定操作の実行](../../../docs/standard/base-types/performing-formatting-operations.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-display-dates-in-non-gregorian-calendars.md b/docs/standard/base-types/how-to-display-dates-in-non-gregorian-calendars.md new file mode 100644 index 00000000000..f609494fcfa --- /dev/null +++ b/docs/standard/base-types/how-to-display-dates-in-non-gregorian-calendars.md @@ -0,0 +1,95 @@ +--- +title: "方法 : グレゴリオ暦以外の暦の日付を表示する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "書式指定 [.NET Framework]、日付" + - "日付 [.NET Framework]、書式設定" + - "暦 [.NET Framework]、表示 (日付を)" + - "表示 (日付と時刻のデータを)" +ms.assetid: ed324eff-4aff-4a76-b6c0-04e6c0d8f5a9 +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# 方法 : グレゴリオ暦以外の暦の日付を表示する + 型と 型は、既定の暦としてグレゴリオ暦を使用します。 つまり、日付および時刻の値の `ToString` メソッドを呼び出すと、その日付および時刻が別の暦を使って作成された場合でも、グレゴリオ暦でその日付および時刻を表した文字列表現が表示されます。 この動作を次のコード例に示します。ここでは、2 つの異なる方法でペルシャ暦の日付および時刻の値を作成しますが、 メソッドを呼び出すときにはグレゴリオ暦で日付および時刻の値を表示します。 この例の 2 つの技法はよく使用されますが、特定の暦で日付を表示する方法としては適切ではありません。 + + [!code-csharp[Formatting.HowTo.Calendar#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.Calendar/cs/Calendar1.cs#1)] + [!code-vb[Formatting.HowTo.Calendar#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.Calendar/vb/Calendar1.vb#1)] + + 特定の暦で日付を表示するために 2 つの異なる技法を使用できます。 最初の方法では、暦は特定のカルチャの既定の暦である必要があります。 2 番目の方法は、任意の暦で使用できます。 + +### カルチャの既定の暦で日付を表示するには + +1. 使用する暦 \(カレンダー\) を表す、 クラスから派生したカレンダー オブジェクトをインスタンス化します。 + +2. 日付の表示に使われる書式設定が属するカルチャを表す オブジェクトをインスタンス化します。 + +3. メソッドを呼び出すことにより、カレンダー オブジェクトが プロパティによって返される配列のメンバーかどうかを判別します。 これは、そのカレンダー \(暦\) を オブジェクトの既定の暦に指定できることを示します。 配列のメンバーでない場合には、「任意の暦で日付を表示するには」の説明に従ってください。 + +4. カレンダー オブジェクトを、 プロパティによって返される オブジェクトの プロパティに割り当てます。 + + > [!NOTE] + > クラスには、 プロパティもあります。 ただし、これは読み取り専用の定数であるため、 プロパティに割り当てられた新しい既定の暦を表すようには変更されません。 + +5. メソッドまたは メソッドを呼び出して、前の手順で既定の暦が変更された オブジェクトをそれに渡します。 + +### 任意の暦で日付を表示するには + +1. 使用する暦 \(カレンダー\) を表す、 クラスから派生したカレンダー オブジェクトをインスタンス化します。 + +2. 日付および時刻の値の文字列表現にどの日付および時刻要素を表示させるかを決定します。 + +3. 表示させるそれぞれの日付および時刻要素ごとに、カレンダー オブジェクトの `Get`… メソッドを呼び出します。 次のメソッドを使用できます。 + + - は、適切な暦の年を表示します。 + + - は、適切な暦の月を表示します。 + + - は、適切な暦の月の日付を表示します。 + + - は、適切な暦の日付の時間を表示します。 + + - は、適切な暦の時刻の分を表示します。 + + - は、適切な暦の時刻の秒を表示します。 + + - は、適切な暦の時刻のミリ秒を表示します。 + +## 使用例 + この例では、2 つの異なる暦を使って日付を表示します。 ar\-JO カルチャの既定の暦としてヒジュラ暦を定義した後、日付を表示します。さらに、fa\-IR カルチャのオプションの暦としてサポートされないペルシャ暦を使って日付を表示します。 + + [!code-csharp[Formatting.HowTo.Calendar#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.Calendar/cs/Calendar1.cs#2)] + [!code-vb[Formatting.HowTo.Calendar#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.Calendar/vb/Calendar1.vb#2)] + + それぞれの オブジェクトは、 プロパティによって示される暦を 1 つ以上サポートすることができます。 このうち 1 つがカルチャの既定の暦として指定され、読み取り専用の プロパティによって返されます。 オプションの暦の 1 つを既定として指定するには、その暦を表す オブジェクトを、 プロパティによって返される プロパティに割り当てます。 ただし、\( クラスによって表されるペルシャ暦のような\) いくつかの暦は、どのカルチャのオプションの暦としても機能しません。 + + この例では、特定の暦を使って日付の文字列表現を生成する際の多くの詳細な処理を行うために、再利用可能なカレンダー ユーティリティ クラス `CalendarUtility` を定義します。 `CalendarUtility` クラスには、次のメンバーがあります。 + +- パラメーター化されたコンストラクター。その単一のパラメーターは、日付を表す際に使用される オブジェクトです。 クラスのプライベート フィールドにこれが割り当てられます。 + +- プライベート メソッド `CalendarExists`。これは、`CalendarUtility` オブジェクトによって表される暦が、パラメーターとしてメソッドに渡される オブジェクトでサポートされるかどうかを示すブール値を返します。 このメソッドは、 メソッドへの呼び出しをラップし、 配列をこのメソッドに渡します。 + +- プライベート メソッド `HasSameName`。これは、 メソッドにパラメーターとして渡される デリゲートに割り当てられます。 メソッドが `true` を返すまで、配列の各メンバーがメソッドに渡されます。 このメソッドは、オプションの暦の名前が、`CalendarUtility` オブジェクトによって表される暦と同じかどうかを判断します。 + +- オーバーロードされたパブリック メソッド `DisplayDate`。これに渡されるパラメーターは、`CalendarUtility` オブジェクトによって表される暦で表示する または 値と、使用する書式指定規則が属するカルチャの 2 つです。 日付の文字列表現を返す際の動作は、使用する書式指定規則が属するカルチャにおいて、対象となる暦がサポートされるかどうかに依存します。 + + この例の または 値を作成するのにどんな暦が使われたかにかかわらず、この値は通常、グレゴリオ暦の日付で表現されます。 これは、暦の情報が 型と 型に保持されないためです。 内部的には、これは 0001 年 1 月 1 日の真夜中から数えたタイマー刻みの回数として表されます。 この回数の解釈は、暦によって異なります。 ほとんどのカルチャでは、既定の暦はグレゴリオ暦です。 + +## コードのコンパイル + この例では System.Core.dll を参照する必要があります。 + + コマンド ラインで csc.exe または vb.exe を使用してコードをコンパイルします。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でコードをコンパイルするには、コンソール アプリケーション プロジェクト テンプレートの中にコードを配置します。 + +## 参照 + [書式設定操作の実行](../../../docs/standard/base-types/performing-formatting-operations.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-display-localized-date-and-time-information-to-web-users.md b/docs/standard/base-types/how-to-display-localized-date-and-time-information-to-web-users.md new file mode 100644 index 00000000000..561b36379d1 --- /dev/null +++ b/docs/standard/base-types/how-to-display-localized-date-and-time-information-to-web-users.md @@ -0,0 +1,119 @@ +--- +title: "方法 : ローカライズされた日付/時刻情報を Web ユーザーに表示する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "表示 (日付と時刻のデータを)" + - "書式指定 [.NET Framework], 日付" + - "書式指定 [.NET Framework], ローカライズされたデータ" + - "ローカリゼーション [.NET Framework], 日付と時刻の表示" + - "ローカライズされた日付の表示 [.NET Framework]" + - "解析 (文字列を) [.NET Framework], 日付と時刻文字列" +ms.assetid: 377fe93c-32be-421a-a30a-be639a46ede8 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法 : ローカライズされた日付/時刻情報を Web ユーザーに表示する +Web ページは世界中どこでも表示可能なため、日付\/時刻値を解析して書式設定する操作では、ユーザーと対話する際に既定の書式 \(ほとんどの場合、Web サーバーのローカル カルチャの書式\) に依存するのは不適切です。 ユーザー入力された日付\/時刻文字列を扱う Web フォームは、ユーザーの選んだカルチャを使用して文字列を解析する必要があります。 同様に、ユーザーのカルチャに適合した書式で、日付\/時刻データをユーザーに表示する必要があります。 このトピックでは、これらを行う方法について示します。 + +### ユーザー入力による日付\/時刻文字列を解析するには + +1. プロパティによって返された文字列配列にデータが含まれているかどうかを判別します。 含まれない場合は、手順 6. に進みます。 + +2. プロパティによって返された文字列配列にデータが含まれる場合は、その最初の要素を取得します。 最初の要素は、ユーザーの既定の言語と地域、または優先される言語と地域を表します。 + +3. コンストラクターを呼び出すことにより、ユーザーが選択したカルチャを表す オブジェクトをインスタンス化します。 + +4. 型または 型の `TryParse` メソッドまたは `Parse` メソッドを呼び出して、変換を試みます。 `TryParse` メソッドまたは `Parse` メソッドの `provider` パラメーターを指定するオーバーロードを使用して、次のいずれかを渡します。 + + - 手順 3. で作成した オブジェクト。 + + - 手順 3. で作成した オブジェクトの プロパティによって返される オブジェクト。 + +5. 変換が失敗した場合、 プロパティによって返される文字列配列内の他の要素ごとに手順 2. から 4. を繰り返します。 + +6. 変換が引き続き失敗する場合、または プロパティによって返された文字列配列が空の場合には、 プロパティによって返されるインバリアント カルチャを使って文字列を解析します。 + +### ユーザーが要求したローカル日付\/時刻を解析するには + +1. コントロールを Web フォームに追加します。 + +2. 現在の日付\/時刻、および世界協定時刻 \(UTC\) からのローカル タイム ゾーンのオフセットを プロパティに書き込むことによって、`Submit` ボタンの `onClick` イベントを処理する JavaScript 関数を作成します。 文字列の 2 つの構成要素を分けるために、区切り記号 \(たとえばセミコロン\) を使用します。 + +3. スクリプトのテキストを メソッドに渡すことにより、Web フォームの イベントを使用して HTML 出力ストリームの中に関数を挿入します。 + +4. JavaScript 関数の名前を `Submit` ボタンの `OnClientClick` 属性に渡すことにより、イベント ハンドラーを `Submit` ボタンの `onClick` イベントに接続します。 + +5. `Submit` ボタンの イベントのハンドラーを作成します。 + +6. イベント ハンドラー内で、 プロパティによって返される文字列配列にデータが入っているかどうかを判別します。 入っていない場合は、手順 14. に進みます。 + +7. プロパティによって返された文字列配列にデータが含まれる場合は、その最初の要素を取得します。 最初の要素は、ユーザーの既定の言語と地域、または優先される言語と地域を表します。 + +8. コンストラクターを呼び出すことにより、ユーザーが選択したカルチャを表す オブジェクトをインスタンス化します。 + +9. ユーザーのローカル日付\/時刻の文字列表現、およびユーザーのローカル タイム ゾーン オフセットの文字列表現を別々の配列要素に保存するために、 プロパティに割り当てられた文字列を メソッドに渡します。 + +10. ユーザー側の日付\/時刻を 値に変換するために、 メソッドまたは メソッドを呼び出します。 メソッドのオーバーロードを使用し、`provider` パラメーターを指定して、次のいずれかを渡します。 + + - 手順 8. で作成した オブジェクト。 + + - 手順 8. で作成した オブジェクトの プロパティによって返される オブジェクト。 + +11. 手順 10. の解析操作が失敗する場合は、手順 13. に進みます。 それ以外の場合は、ユーザーのタイム ゾーン オフセットの文字列形式を整数に変換するために、 メソッドを呼び出します。 + +12. コンストラクターを呼び出すことにより、ユーザーのローカル時間を表す をインスタンス化します。 + +13. 手順 10. の変換が失敗した場合、 プロパティによって返される文字列配列内の他の要素ごとに手順 7. から 12. を繰り返します。 + +14. 変換が引き続き失敗する場合、または プロパティによって返された文字列配列が空の場合には、 プロパティによって返されるインバリアント カルチャを使って文字列を解析します。 その後、手順 7. から 12. を繰り返します。 + + 結果として、Web ページのユーザー側のローカル時間を表す オブジェクトが生成されます。 その後、 メソッドを呼び出すことで、対応する UTC を判別できます。 また、 メソッドを呼び出し、時間の変換先のタイム ゾーンとして の値を渡すことによって、Web サーバー側の対応する日付\/時刻を判別することもできます。 + +## 使用例 + 次の例は、日付\/時刻値の入力をユーザーに求める ASP.NET Web フォームの HTML ソースとコードの両方を含んでいます。 また、クライアント側スクリプトは、ユーザー側のローカル日付\/時刻に関する情報、およびユーザーのタイム ゾーンと UTC とのオフセットに関する情報を隠しフィールドに書き込みます。 その後、この情報はサーバーによって解析され、ユーザー入力を表示する Web ページが返されます。 さらに、ユーザーのローカル時間、サーバーの時間、および UTC を使用して、ユーザー側の日付\/時刻も表示されます。 + + [!code-csharp[Formatting.HowTo.ParseDateInput#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.ParseDateInput/cs/GetDateInfo.aspx#1)] + [!code-vb[Formatting.HowTo.ParseDateInput#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.ParseDateInput/vb/GetDateInfo.aspx#1)] + + クライアント側スクリプトは、JavaScript `toLocaleString` メソッドを呼び出します。 これにより、サーバー上で正常に解析される可能性がより高い、ユーザー ロケールの書式指定規則に従う文字列が生成されます。 + + プロパティには、HTTP 要求の `Accept-Language` ヘッダーに含まれるカルチャ名からデータが入ります。 ただし、すべてのブラウザーの要求に `Accept-Language` ヘッダーが含まれるとは限りません。ユーザーがヘッダーを完全に禁止する場合もあります。 このため、ユーザー入力を解析する際にはフォールバック カルチャが重要になります。 通常、フォールバック カルチャは、 によって返されるインバリアント カルチャです。 また、テキスト ボックスへの入力によってユーザーがカルチャ名を Internet Explorer に提供する場合もありますが、無効なカルチャ名が指定される可能性があります。 このため、 オブジェクトをインスタンス化する際には、例外処理が重要になります。 + + Internet Explorer によって送信された HTTP 要求から取得される 配列には、ユーザー側の優先度設定の順序でデータが入ります。 配列の先頭の要素には、ユーザーの最優先カルチャ\/地域の名前が格納されます。 何らかの追加項目が配列に含まれる場合、Internet Explorer はそれらに任意のクオリティ識別子を割り当てます。この識別子はセミコロンによってカルチャから区切られます。 たとえば、fr\-FR カルチャの項目は `fr-FR;q=0.7` という形式になります。 + + この例では、`useUserOverride` パラメーターを `false` に設定して コンストラクターを呼び出し、新しい オブジェクトを作成します。 これによって、カルチャ名がサーバー上の既定のカルチャ名である場合、クラス コンストラクターによって作成される新しい オブジェクトにはカルチャの既定の設定が含まれ、サーバーの **\[地域と言語のオプション\]** アプリケーションを使ってオーバーライドされた設定は反映されません。 通常、サーバーでオーバーライドされた設定値はユーザーのシステムに存在せず、ユーザー入力に反映されることもありません。 + + この例では 1 つの日付\/時刻の 2 つの文字列表現 \(1 つはユーザー入力、もう 1 つは隠しフィールドに格納されたもの\) を解析するため、必要になる可能性のある オブジェクトが事前に定義されます。 プロパティによって返される要素数より 1 つ多い オブジェクトから成る配列が作成されます。 その後、それぞれの言語\/地域文字列ごとに 1 つの オブジェクトがインスタンス化され、 を表す オブジェクトもインスタンス化されます。 + + ユーザーの日付\/時刻の文字列表現を 値に変換するために、コードの中で メソッドまたは メソッドのどちらでも呼び出すことができます。 1 つの解析操作で解析メソッドを繰り返し呼び出す必要が生じる場合があります。 このため、解析操作が失敗した場合に `false` を返す メソッドを使用する方が適切です。 これに対して、 メソッドによって繰り返しスローされる例外を Web アプリケーションで処理する場合、コストが非常に大きくなる可能性があります。 + +## コードのコンパイル + コードをコンパイルするには、分離コードのない [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] Web ページを作成します。 その後、この例を Web ページ内にコピーして、既存のすべてのコードを置き換えます。 [!INCLUDE[vstecasp](../../../includes/vstecasp-md.md)] Web ページには、次のコントロールを含める必要があります。 + +- コード内で参照されない コントロール。 その プロパティを "Enter a Number:" に設定します。 + +- `DateString` という名前の コントロール。 + +- `OKButton` という名前の コントロール。 その プロパティを "OK" に設定します。 + +- `DateInfo` という名前の コントロール。 + +## .NET Framework セキュリティ + ユーザーが HTML ストリーム内にスクリプトを挿入するのを防ぐために、サーバー応答の中でユーザー入力を直接エコー バックしないでください。 そうする代わりに、 メソッドを使ってこれをエンコードする必要があります。 + +## 参照 + [書式設定操作の実行](../../../docs/standard/base-types/performing-formatting-operations.md) + [標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md) + [カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md) + [日付と時刻文字列の解析](../../../docs/standard/base-types/parsing-datetime.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-display-milliseconds-in-date-and-time-values.md b/docs/standard/base-types/how-to-display-milliseconds-in-date-and-time-values.md new file mode 100644 index 00000000000..4d589bd906f --- /dev/null +++ b/docs/standard/base-types/how-to-display-milliseconds-in-date-and-time-values.md @@ -0,0 +1,60 @@ +--- +title: "方法: 日付および時刻の値のミリ秒部分を表示する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "日付 [.NET Framework], ミリ秒" + - "DateTime.ToString メソッド" + - "表示 (日付と時刻のデータを)" + - "ミリ秒 [.NET Framework]" + - "時刻 [.NET Framework], ミリ秒" +ms.assetid: ae1a0610-90b9-4877-8eb6-4e30bc5e00cf +caps.latest.revision: 6 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 6 +--- +# 方法: 日付および時刻の値のミリ秒部分を表示する + などの既定の日付および時刻書式指定メソッドは時刻値の時間、分、秒を含めますが、ミリ秒の部分は含めません。 ここでは、書式設定された日付および時刻文字列の中にミリ秒部分を含める方法について説明します。 + +### DateTime 値のミリ秒部分を表示するには + +1. 日付を表す文字列形式を処理している場合には、静的 または メソッドを使用して、それを 値または 値に変換します。 + +2. 時刻のミリ秒部分の文字列表現を抽出するには、日付および時刻の値の メソッドまたは メソッドを呼び出して、カスタム書式パターン `fff` または `FFF` を単独で、あるいは他のカスタム書式指定子と共に `format` パラメーターとして渡します。 + +## 使用例 + この例では、 および 値のミリ秒の部分をコンソールに表示します。単独で表示する場合と、より長い日付および時刻文字列に含める場合の両方を示します。 + + [!code-csharp[Formatting.HowTo.Millisecond#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.Millisecond/cs/Millisecond.cs#1)] + [!code-vb[Formatting.HowTo.Millisecond#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.Millisecond/vb/Millisecond.vb#1)] + + `fff` 書式パターンを使うと、ミリ秒値に後続のゼロがあればこれは含められます。 `FFF` 書式パターンでは、これが除外されます。 この違いを次の例に示します。 + + [!code-csharp[Formatting.HowTo.Millisecond#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.Millisecond/cs/Millisecond.cs#2)] + [!code-vb[Formatting.HowTo.Millisecond#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.Millisecond/vb/Millisecond.vb#2)] + + 日付および時刻のミリ秒部分を含む完全なカスタム書式指定子を定義する場合、アプリケーションの現在のカルチャの時間要素の取り決めに対応しない可能性のあるハードコーディングされた書式を定義するという問題が生じます。 これに代わるより良い方法は、現在のカルチャの オブジェクトで定義されているいずれかの日付および時刻表示パターンを取得して、ミリ秒を含むようにそれを修正することです。 この例では、この方法も示されています。 現在のカルチャの完全な日付および時刻パターンを プロパティから取得した後、その秒パターンの後にカスタム パターン `.ffff` を挿入します。 この例では、1 つのメソッド呼び出しでこの操作を実行するために正規表現が使われていることに注意してください。 + + また、カスタム書式指定子を使用して、ミリ秒以外の秒の端数を表示することもできます。 たとえば、カスタム書式指定子 `f` または `F` は 1\/10 秒を表示し、カスタム書式指定子 `ff` または `FF` は 1\/100 秒、カスタム書式指定子 `ffff` または `FFFF` は 1\/10000 秒をそれぞれ表示します。 返される文字列内では、ミリ秒の端数は丸められるのではなく、切り捨てられます。 次の例では、これらの書式指定子が使用されています。 + + [!code-csharp[Formatting.HowTo.Millisecond#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.Millisecond/cs/Millisecond.cs#3)] + [!code-vb[Formatting.HowTo.Millisecond#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.Millisecond/vb/Millisecond.vb#3)] + +> [!NOTE] +> 1\/10000 秒、1\/100000 秒などの非常に小さな端数単位を表示することが可能です。 ただし、このような値を表示してもあまり意味がない可能性があります。 日付および時刻の値の精度は、システム クロックの分解能に依存します。 Windows NT 3.5 以降および [!INCLUDE[windowsver](../../../includes/windowsver-md.md)] オペレーティング システムでは、クロックの分解能は約 10 ~ 15 ミリ秒です。 + +## コードのコンパイル + コマンド ラインで csc.exe または vb.exe を使用してコードをコンパイルします。 [!INCLUDE[vsprvs](../../../includes/vsprvs-md.md)] でコードをコンパイルするには、コンソール アプリケーション プロジェクト テンプレートの中にコードを配置します。 + +## 参照 + + [カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-extract-a-protocol-and-port-number-from-a-url.md b/docs/standard/base-types/how-to-extract-a-protocol-and-port-number-from-a-url.md new file mode 100644 index 00000000000..a6a74efffbd --- /dev/null +++ b/docs/standard/base-types/how-to-extract-a-protocol-and-port-number-from-a-url.md @@ -0,0 +1,54 @@ +--- +title: "方法 : URL からプロトコルとポート番号を抽出する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, 例" + - "解析 (正規表現を使用したテキストを), 例" + - "パターン一致 (正規表現を使用した), 例" + - "正規表現 [.NET Framework], 例" + - "正規表現, 例" + - "検索 (正規表現を使用した), 例" +ms.assetid: ab7f62b3-6d2c-4efb-8ac6-28600df5fd5c +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法 : URL からプロトコルとポート番号を抽出する +URL からプロトコルとポート番号を抽出する例を次に示します。 + +## 使用例 + この例では、 メソッドを使用して、プロトコルとそれに続くコロンおよびポート番号を返します。 + + [!code-csharp[RegularExpressions.Examples.Protocol#1](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Examples.Protocol/cs/Example.cs#1)] + [!code-vb[RegularExpressions.Examples.Protocol#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Examples.Protocol/vb/Example.vb#1)] + + 正規表現パターン `^(?\w+)://[^/]+?(?:\d+)?/` は、次の表に示すように解釈できます。 + +|パターン|説明| +|----------|--------| +|`^`|文字列の先頭から照合を開始します。| +|`(?\w+)`|1 つ以上の単語文字に一致します。 このグループに `proto` という名前を付けます。| +|`://`|コロンとそれに続く 2 つのスラッシュ記号に一致します。| +|`[^/]+?`|スラッシュ記号以外の任意の文字の 1 回以上の出現 \(ただし、可能な限り少ない回数\) に一致します。| +|`(?:\d+)?`|コロンとそれに続く 1 つ以上の 10 進数字の 0 回以上の出現に一致します。 このグループに `port` という名前を付けます。| +|`/`|スラッシュ記号に一致します。| + + メソッドは、正規表現パターンでキャプチャされた 2 つの名前付きグループを連結する `${proto}${port}` 置換シーケンスを展開します。 これは、 プロパティによって返されたコレクション オブジェクトから取得された文字列を明示的に連結する便利な代替方法です。 + + 例では、`${proto}` と `${port}` の 2 つの置換がある メソッドを使用して、キャプチャされたグループを出力文字列に含めています。 次のコードに示すように、一致部分の オブジェクトから、キャプチャされたグループを取得できます。 + + [!code-csharp[RegularExpressions.Examples.Protocol#2](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Examples.Protocol/cs/example2.cs#2)] + [!code-vb[RegularExpressions.Examples.Protocol#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Examples.Protocol/vb/example2.vb#2)] + +## 参照 + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-extract-the-day-of-the-week-from-a-specific-date.md b/docs/standard/base-types/how-to-extract-the-day-of-the-week-from-a-specific-date.md new file mode 100644 index 00000000000..149f470ec1d --- /dev/null +++ b/docs/standard/base-types/how-to-extract-the-day-of-the-week-from-a-specific-date.md @@ -0,0 +1,107 @@ +--- +title: "方法 : 特定の日付から曜日を抽出する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "書式指定 [.NET Framework]、日付" + - "DateTime.DayOfWeek プロパティ" + - "DateTime.ToString メソッド" + - "日付 [.NET Framework], 週の情報を取得する" + - "DateTimeOffset.DayOfWeek プロパティ" + - "日付 [.NET Framework], 曜日" + - "Weekday 関数" + - "曜日 [.NET Framework]" + - "抽出 (曜日を)" + - "曜日の名前" + - "WeekdayName 関数" + - "数値 [.NET Framework], 曜日" + - "書式指定 [.NET Framework], 時刻" + - "DateTimeOffset.ToString メソッド" + - "曜日の正式名" +ms.assetid: 1c9bef76-5634-46cf-b91c-9b9eb72091d7 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : 特定の日付から曜日を抽出する +.NET Framework では、特定の日付が週の何日目であるかを容易に判別でき、また特定の日付のローカライズされた曜日名を表示できます。 特定の日付に対応する曜日を示す列挙値は、 または プロパティから取得できます。 対照的に、曜日名の取得は、書式指定メソッド (日付と時刻の値の `ToString` メソッドや メソッドなど) を呼び出して実行できる書式指定操作です。 このトピックでは、このような書式指定操作を実行する方法について説明します。 + +### 特定の日付から曜日を示す番号を抽出するには + +1. 文字列形式の日付を処理している場合には、静的 または メソッドを使用して、その日付を 値または 値に変換します。 + +2. プロパティまたは プロパティを使用して、曜日を示す 値を取得します。 + +3. 必要に応じて、 値を整数にキャスト (C\#) または変換 (Visual Basic) します。 + + 次の例は、特定の日付の曜日を表す整数を表示します。 + + [!code-csharp[Formatting.Howto.WeekdayName#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/cs/weekdaynumber7.cs#7)] + [!code-vb[Formatting.Howto.WeekdayName#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/vb/weekdaynumber7.vb#7)] + +### 特定の日付から曜日の省略名を抽出するには + +1. 文字列形式の日付を処理している場合には、静的 または メソッドを使用して、その日付を 値または 値に変換します。 + +2. 次の手順で現在のカルチャまたは特定のカルチャの曜日の省略名を抽出できます。 + + 1. 現在のカルチャの曜日の省略名を抽出するには、日付と時刻の値の インスタンス メソッドまたは インスタンス メソッドを呼び出し、`format` パラメーターとして文字列 "ddd" を渡します。 次の例に、 メソッドの呼び出しを示します。 + + [!code-csharp[Formatting.Howto.WeekdayName#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/cs/abbrname1.cs#1)] + [!code-vb[Formatting.Howto.WeekdayName#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/vb/abbrname1.vb#1)] + + 2. 特定のカルチャの曜日の省略名を抽出するには、日付と時刻の値の インスタンス メソッドまたは インスタンス メソッドを呼び出します。`format` パラメーターとして文字列 "ddd" を渡します。 曜日名を取得するカルチャを表す または オブジェクトのいずれかを`provider` パラメーターとして渡します。 次のコードは、fr\-FR カルチャを表す オブジェクトを使用した メソッドの呼び出しを示します。 + + [!code-csharp[Formatting.Howto.WeekdayName#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/cs/abbrname2.cs#2)] + [!code-vb[Formatting.Howto.WeekdayName#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/vb/abbrname2.vb#2)] + +### 特定の日付から曜日の正式な名前を抽出するには + +1. 文字列形式の日付を処理している場合には、静的 または メソッドを使用して、その日付を 値または 値に変換します。 + +2. 現在のカルチャまたは特定のカルチャでの曜日の正式な名前を抽出できます。 + + 1. 現在のカルチャの曜日名を抽出するには、日付と時刻の値の インスタンス メソッドまたは インスタンス メソッドを呼び出し、`format` パラメーターとして文字列 "dddd" を渡します。 次の例に、 メソッドの呼び出しを示します。 + + [!code-csharp[Formatting.Howto.WeekdayName#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/cs/fullname4.cs#4)] + [!code-vb[Formatting.Howto.WeekdayName#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/vb/fullname4.vb#4)] + + 2. 特定のカルチャの曜日名を抽出するには、日付と時刻の値の インスタンス メソッドまたは インスタンス メソッドを呼び出します。`format` パラメーターとして文字列 "dddd" を渡します。 曜日名を取得するカルチャを表す または オブジェクトのいずれかを`provider` パラメーターとして渡します。 次のコードは、es\-ES カルチャを表す オブジェクトを使用した メソッドの呼び出しを示します。 + + [!code-csharp[Formatting.Howto.WeekdayName#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/cs/fullname5.cs#5)] + [!code-vb[Formatting.Howto.WeekdayName#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/vb/fullname5.vb#5)] + +## 使用例 + この例は、 プロパティと プロパティ、および メソッドと メソッドを呼び出し、特定の日付の曜日を表す番号、曜日の省略名、および正式な名前を取得します。 + + [!code-csharp[Formatting.Howto.WeekdayName#6](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/cs/example6.cs#6)] + [!code-vb[Formatting.Howto.WeekdayName#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/vb/example6.vb#6)] + + それぞれの言語には、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] の機能と重複する機能または補足する機能が存在していることがあります。 たとえば Visual Basic には次の 2 つの関数があります。 + +- `Weekday`: 特定の日付の曜日を示す番号を返します。 この関数では週の初日の序数値が 1 ですが、 プロパティでは週の初日の序数値はゼロです。 + +- `WeekdayName`: 現在のカルチャで、特定の曜日番号に対応する曜日名を返します。 + + 次の例は、Visual Basic の `Weekday` 関数と `WeekdayName` 関数の使い方を示します。 + + [!code-vb[Formatting.HowTo.WeekdayName#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/vb/example9.vb#9)] + + また、特定の日付の曜日名を取得するには プロパティから返される値も使用できます。 このためには、プロパティから返された 値に対して メソッドを呼び出す操作だけが必要です。 ただしこの手法では、次の例に示すように、現在のカルチャでのローカライズされた曜日名は作成されません。 + + [!code-csharp[Formatting.HowTo.WeekdayName#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/cs/Howto1.cs#8)] + [!code-vb[Formatting.HowTo.WeekdayName#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.WeekdayName/vb/Howto1.vb#8)] + +## 参照 + [書式設定操作の実行](../../../docs/standard/base-types/performing-formatting-operations.md) + [標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md) + [カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-pad-a-number-with-leading-zeros.md b/docs/standard/base-types/how-to-pad-a-number-with-leading-zeros.md new file mode 100644 index 00000000000..bf48191df31 --- /dev/null +++ b/docs/standard/base-types/how-to-pad-a-number-with-leading-zeros.md @@ -0,0 +1,100 @@ +--- +title: "方法: 数値に先行するゼロを埋め込む | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "書式指定 [.NET Framework], 数" + - "数値の書式指定 [.NET Framework]" + - "数値 [.NET Framework], 書式指定文字列" + - "数値書式指定文字列 [.NET Framework]" +ms.assetid: 0b2c2cb5-c580-4891-8d81-cb632f5ec384 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法: 数値に先行するゼロを埋め込む +整数値に先行ゼロを追加するには、精度指定子と[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md) "D" を使用します。 整数値と浮動小数点数値の両方に先行ゼロを追加するには、[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)を使用します。 このトピックでは、この両方の方法で数値に先行ゼロを埋め込む方法を説明します。 + +### 特定の長さになるまで整数値に先行ゼロを埋め込むには + +1. 整数値を表示する際の最小桁数を決定します。 この数には先行桁数も含みます。 + +2. 整数値を 10 進数値と 16 進数値のどちらで表示するかを決定します。 + + - 整数値を 10 進数値として表示するには、`ToString(String)` メソッドを呼び出し、パラメーターの値として文字列 "D*n*"`format` を渡します。この*n* は、文字列の最小長を表します。 + + - 整数値を 16 進数値として表示するには、`ToString(String)` メソッドを呼び出し、パラメーターの値として文字列 "X`format` *n*" を渡します。この*n* は、文字列の最小長を表します。 + + また、 など、[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)を使用するメソッドでもこの書式指定文字列を使用できます。 + + 次の例は、書式指定された数値全体の長さが 8 文字以上になるように、先行ゼロを使用してさまざまな数値を書式指定します。 + + [!code-csharp[Formatting.HowTo.PadNumber#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.PadNumber/cs/Pad1.cs#1)] + [!code-vb[Formatting.HowTo.PadNumber#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.PadNumber/vb/Pad1.vb#1)] + +### 特定の数の先行ゼロを整数値に埋め込むには + +1. 整数値に表示する先行ゼロの数を決定します。 + +2. 整数値を 10 進数値と 16 進数値のどちらで表示するかを決定します。 10 進数値として書式指定する場合には標準書式指定子 "D" を使用する必要があります。16 進数値として書式指定する場合には標準書式指定子 "X" を使用する必要があります。 + +3. 整数値の `ToString("D").Length` メソッドまたは `ToString("X").Length` メソッドを使用して、先行ゼロが埋め込まれていない数値文字列の長さを決定します。 + +4. 書式指定した文字列に埋め込む先行ゼロの数を、埋め込まれていない数値の文字列の長さに加算します。 これにより、埋め込み文字列全体の長さが定義されます。 + +5. 整数値の `ToString(String)` メソッドを呼び出し、10 進数値文字列の場合は "D*n*"、16 進数値の場合は "X*n*" を渡します。*n* は埋め込み文字列全体の長さを表します。 書式指定文字列 "D*n*" または "X*n*"は、複合書式指定をサポートするメソッドでも使用できます。 + + 次の例は、整数値に 5 つの先行ゼロを埋め込みます。 + + [!code-csharp[Formatting.HowTo.PadNumber#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.PadNumber/cs/Pad1.cs#2)] + [!code-vb[Formatting.HowTo.PadNumber#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.PadNumber/vb/Pad1.vb#2)] + +### 特定の長さになるまで数値に先行ゼロを埋め込むには + +1. 文字列形式の数値の整数部分の桁数を決定します。 合計桁数には先行ゼロも含みます。 + +2. ゼロの最小数を表すゼロ プレースホルダー \("0"\) を使用するカスタム数値書式指定文字列を定義します。 + +3. 数値の `ToString(String)` メソッドを呼び出し、カスタム書式指定文字列を渡します。 カスタム書式指定文字列は、複合書式指定をサポートしているメソッドでも使用できます。 + + 次の例は、書式指定された数値全体の長さが 8 文字以上の整数になるように、先行ゼロを使用してさまざまな数値を書式指定します。 + + [!code-csharp[Formatting.HowTo.PadNumber#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.PadNumber/cs/Pad1.cs#3)] + [!code-vb[Formatting.HowTo.PadNumber#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.PadNumber/vb/Pad1.vb#3)] + +### 特定の数の先行ゼロを数値に埋め込むには + +1. 数値に埋め込む先行ゼロの数を決定します。 + +2. 埋め込みのない数値文字列での整数部の桁数を決定します。 この操作を行うには、次の手順を実行します。 + + 1. 文字列形式の数値に小数点が含まれるかどうかを決定します。 + + 2. 小数点記号を含める場合は、整数部分の文字数を決定します。 + + または + + 小数点記号を含めない場合は、文字列の長さを決定します。 + +3. 文字列に表示する各先行ゼロの位置にゼロ プレースホルダー \("0"\) を使用し、既定の文字列の各桁の位置にゼロ プレースホルダーまたは桁プレースホルダー \("\#"\) を使用するカスタム書式指定文字列を作成します。 + +4. 数値の `ToString(String)` メソッド、または複合書式指定をサポートするメソッドのパラメーターとして、カスタム書式指定文字列を指定します。 + + 次の例は、2 つの 値を 5 つの先行ゼロで埋め込みます。 + + [!code-csharp[Formatting.HowTo.PadNumber#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.PadNumber/cs/Pad1.cs#4)] + [!code-vb[Formatting.HowTo.PadNumber#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.PadNumber/vb/Pad1.vb#4)] + +## 参照 + [カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md) + [標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md) + [複合書式指定](../../../docs/standard/base-types/composite-formatting.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-round-trip-date-and-time-values.md b/docs/standard/base-types/how-to-round-trip-date-and-time-values.md new file mode 100644 index 00000000000..e59abe256bd --- /dev/null +++ b/docs/standard/base-types/how-to-round-trip-date-and-time-values.md @@ -0,0 +1,106 @@ +--- +title: "方法 : 日付と時刻の値をラウンドトリップさせる | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ラウンドトリップ (日付と時刻の値を)" + - "日付 [.NET Framework]、ラウンドトリップ (値を)" + - "タイム ゾーン [.NET Framework]、ラウンドトリップ (日付と時刻の値を)" + - "時刻 [.NET Framework]、ラウンドトリップ (値を)" + - "書式指定 (文字列の) [.NET Framework]、ラウンドトリップ (値を)" +ms.assetid: b609b277-edc6-4c74-b03e-ea73324ecbdb +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : 日付と時刻の値をラウンドトリップさせる +ある特定の時点を明確に表すように日付と時刻の値を保つことは、多くのアプリケーションに共通する要件です。 このトピックでは、 値、 値、およびタイム ゾーン情報を持った日時値を保存する方法、および、保存した日時とまったく同じ時点を表すように復元する方法について説明します。 + +### DateTime 値をラウンドトリップさせるには + +1. メソッドと "o" 書式指定子を使用して、 値を対応する文字列形式に変換します。 + +2. 値の文字列形式をファイルに保存するか、プロセス、アプリケーション ドメイン、またはマシン境界に渡します。 + +3. 値を表す文字列を取得します。 + +4. メソッドを呼び出し、`styles` パラメーターの値として を渡します。 + + の値をラウンドトリップさせる方法を次の例に示します。 + + [!code-csharp[Formatting.HowTo.RoundTrip#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/cs/RoundTrip.cs#1)] + [!code-vb[Formatting.HowTo.RoundTrip#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/vb/RoundTrip.vb#1)] + + の値をラウンドトリップさせる場合、この方法により、あらゆる現地時刻と協定世界時刻を適切に保存できます。 たとえば、 ローカル値は米国の太平洋標準時タイム ゾーンのシステムに格納され、米国の中部標準時ゾーンのシステムで保存した場合、元の時刻は 2 個のタイム ゾーン間の時差を反映し、元の時刻より後の 2 時間です。 ただし、タイム ゾーンが指定されていない時刻の場合、この方法では必ずしも正確な結果を得ることができません。 プロパティが である 値はすべて現地時刻として扱われます。 現地時刻以外では、 が間違った時点を示すことになります。 この制限は、日付と時刻の値に、該当するタイム ゾーンを確実に関連付けた上で、保存操作と復元操作を行うことによって回避できます。 + +### DateTimeOffset 値をラウンドトリップさせるには + +1. メソッドと "o" 書式指定子を使用して、 値を対応する文字列形式に変換します。 + +2. 値の文字列形式をファイルに保存するか、プロセス、アプリケーション ドメイン、またはマシン境界に渡します。 + +3. 値を表す文字列を取得します。 + +4. メソッドを呼び出し、`styles` パラメーターの値として を渡します。 + + の値をラウンドトリップさせる方法を次の例に示します。 + + [!code-csharp[Formatting.HowTo.RoundTrip#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/cs/RoundTrip.cs#2)] + [!code-vb[Formatting.HowTo.RoundTrip#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/vb/RoundTrip.vb#2)] + + この方法により、 の値が、常にある特定の時点として明確に識別されます。 その後、 メソッドを呼び出すことによって、この値を世界協定時刻 \(UTC\) に変換できます。また、 メソッドまたは メソッドを呼び出すことによって、特定のタイム ゾーンの時刻に変換することもできます。 この方法には、特定のタイム ゾーンの時刻を表す の値に対して日付と時刻の演算を行った場合、そのタイム ゾーンにおける正確な結果を得ることができないという重要な制限があります。 これは、 の値をインスタンス化すると、対応するタイム ゾーンとの関連付けが解除されるためです。 したがって、日付と時刻の計算を実行した場合、タイム ゾーンの調整規則は適用されません。 この問題は、日付値と時刻値、および付随するタイム ゾーンを保持するカスタム型を定義することによって回避できます。 + +### 対応するタイム ゾーンと共に日付と時刻の値をラウンドトリップさせるには + +1. 2 つのフィールドを持ったクラスまたは構造体を定義します。 1 つ目のフィールドは オブジェクトまたは オブジェクトに、2 つ目のフィールドは オブジェクトにします。 これを踏まえた単純な型の例を次に示します。 + + [!code-csharp[Formatting.HowTo.RoundTrip#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/cs/RoundTrip.cs#3)] + [!code-vb[Formatting.HowTo.RoundTrip#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/vb/RoundTrip.vb#3)] + +2. このクラスに 属性を適用します。 + +3. メソッドを使用してオブジェクトをシリアル化します。 + +4. メソッドを使用してオブジェクトを復元します。 + +5. 逆シリアル化したオブジェクトを適切な型のオブジェクトにキャスト \(C\# の場合\) または変換 \(Visual Basic の場合\) します。 + + 日付値と時刻値およびタイム ゾーン情報が格納されたオブジェクトをラウンドトリップさせる方法を次の例に示します。 + + [!code-csharp[Formatting.HowTo.RoundTrip#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/cs/RoundTrip.cs#4)] + [!code-vb[Formatting.HowTo.RoundTrip#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.HowTo.RoundTrip/vb/RoundTrip.vb#4)] + + この方法では、日付、時刻、およびタイム ゾーンの組み合わせを保持するオブジェクトが、日付値とタイム ゾーン値を確実に同期するように実装されている場合、保存と復元の前後で正確な時点が常に明確に反映されます。 + +## コードのコンパイル + これらの例では、次の項目が必要です。 + +- C\# の `using` ステートメントまたは [!INCLUDE[vbprvb](../../../includes/vbprvb-md.md)] の `Imports` ステートメントで次の名前空間がインポートされていること。 + + - \(C\# のみ\)。 + + - . + + - . + + - . + + - . + +- System.Core.dll が参照設定されていること。 + +- `DateInTimeZone` クラス以外のすべてのコード例は、クラスまたは Visual Basic のモジュールのメソッドとして記述し、`Main` メソッドから呼び出すこと。 + +## 参照 + [書式設定操作の実行](../../../docs/standard/base-types/performing-formatting-operations.md) + [DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け](../../../docs/standard/datetime/choosing-between-datetime.md) + [標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-strip-invalid-characters-from-a-string.md b/docs/standard/base-types/how-to-strip-invalid-characters-from-a-string.md new file mode 100644 index 00000000000..e6b45f160a0 --- /dev/null +++ b/docs/standard/base-types/how-to-strip-invalid-characters-from-a-string.md @@ -0,0 +1,41 @@ +--- +title: "方法 : 文字列から無効な文字を取り除く | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "正規表現、例" + - "整形 (入力の)" + - "ユーザー入力、例" + - ".NET Framework 正規表現、例" + - "正規表現 [.NET Framework]、例" + - "Regex.Replace メソッド" + - "削除 (無効な文字列を)" + - "Replace メソッド" + - "検証 (ユーザー入力の)" +ms.assetid: b4319c8a-9032-4129-a9d5-6f6fc28e7f32 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法 : 文字列から無効な文字を取り除く +静的な メソッドを使用して、文字列から無効な文字を取り除く例を次に示します。 + +## 使用例 + この例で定義した `CleanInput` メソッドを使用すると、ユーザーがテキスト フィールドで入力した文字列の中から、潜在的な危険性がある文字を取り除くことができます。 この場合、`CleanInput` は、ピリオド \(.\)、アット マーク \(@\)、およびハイフン \(\-\) 以外のすべての非英数文字を取り除き、残りの文字列を返します。 ただし、入力文字列に含めてはいけないすべての文字を取り除くように正規表現パターンを変更することができます。 + + [!code-csharp[RegularExpressions.Examples.StripChars#1](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Examples.StripChars/cs/Example.cs#1)] + [!code-vb[RegularExpressions.Examples.StripChars#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Examples.StripChars/vb/Example.vb#1)] + + 正規表現パターン `[^\w\.@-]` は、単語に使用される文字、ピリオド、@ 記号、またはハイフン以外の任意の文字と一致します。 単語に使用される文字は、任意の文字、10 進数字、またはアンダースコアなどのコネクタ区切り記号です。 このパターンに一致する文字は、置換パターンで定義された文字列である に置き換えられます。 ユーザー入力でその他の文字を許可するには、それらの文字を正規表現パターンの文字クラスに追加します。 たとえば、正規表現パターン `[^\w\.@-\\%]` は、入力文字列でパーセント記号と円記号も許可します。 + +## 参照 + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) \ No newline at end of file diff --git a/docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md b/docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md new file mode 100644 index 00000000000..d5df8ade53b --- /dev/null +++ b/docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md @@ -0,0 +1,111 @@ +--- +title: "方法 : 文字列が有効な電子メール形式であるかどうかを検証する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "正規表現、例" + - "ユーザー入力、例" + - "Regex.IsMatch メソッド" + - "正規表現 [.NET Framework]、例" + - "例 [Visual Basic]、文字列" + - "IsValidEmail" + - "検証、電子メールの文字列" + - "入力、確認" + - "文字列 [.NET Framework]、例 [Visual Basic]" + - "電子メール [.NET Framework]、検証" + - "IsMatch メソッド" +ms.assetid: 7536af08-4e86-4953-98a1-a8298623df92 +caps.latest.revision: 30 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 30 +--- +# 方法 : 文字列が有効な電子メール形式であるかどうかを検証する +正規表現を使用して文字列の形式が有効な電子メール形式であるかどうかを検証する例を次に示します。 + +## 使用例 + 次の例では、`IsValidEmail` メソッドを定義します。このメソッドは、文字列に有効な電子メール アドレスが含まれている場合に `true` を返し、含まれていない場合に `false` を返します。それ以外の動作は行いません。 + + 電子メール アドレスが有効であることを確認するため、`IsValidEmail` メソッドは メソッドを呼び出し、`(@)(.+)$` の正規表現パターンを指定して、電子メール アドレスからドメイン名を切り離します。 3 番目のパラメーターは、一致したテキストを操作また置換するメソッドを表す デリゲートです。 正規表現パターンは次のように解釈されます。 + +|パターン|説明| +|----------|--------| +|`(@)`|@ 文字と一致します。 これが最初のキャプチャ グループです。| +|`(.+)`|任意の文字の 1 回以上の出現に一致します。 これが 2 番目のキャプチャ グループです。| +|`$`|入力文字列の末尾で照合を終了します。| + + ドメイン名は @ 文字と合わせて `DomainMapper` メソッドに渡されます。このメソッドは クラスを使用して、US\-ASCII 文字の範囲に含まれない Unicode 文字を Punycode に変換します。 また、このメソッドは、`invalid` メソッドがドメイン名に無効な文字を検出すると、`True` フラグを に設定します。 このメソッドは、Punycode ドメイン名の前に @ 記号を付けて、これを `IsValidEmail` メソッドに返します。 + + 次に、`IsValidEmail` メソッドは メソッドを呼び出して、電子メール アドレスが正規表現パターンに準拠するかどうかを確認します。 + + `IsValidEmail` メソッドは、認証によって電子メール アドレスを検証するわけではありません。 電子メール アドレスの形式として有効かどうかを判断しているだけです。 さらに、`IsValidEmail` メソッドは、最上位ドメイン名が [IANA ルート ゾーン データベース](https://www.iana.org/domains/root/db)に掲載されている有効なドメイン名であることを確認しません \(これには検索操作が必要です\)。 代わりに、正規表現によって単に最上位ドメイン名が 2 ~ 24 文字の ASCII 英数字で構成されており、最初の文字と末尾の文字は英数字、その他の文字は英数字またはハイフン \(\-\) であることを確認します。 + + [!code-csharp[RegularExpressions.Examples.Email#7](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Examples.Email/cs/example4.cs#7)] + [!code-vb[RegularExpressions.Examples.Email#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Examples.Email/vb/example4.vb#7)] + + この例の正規表現パターン `^(?(")(".+?(? フラグが使用されることに注意してください。 + +|パターン|説明| +|----------|--------| +|`^`|文字列の先頭から照合を開始します。| +|`(?(")`|最初の文字が引用符であるかどうかを確認します。`(?(")` は代替構成体の開始位置です。| +|`(?("")("".+?(? [!NOTE] +> 電子メール アドレスの検証に正規表現を使用する代わりに、 クラスを使用できます。 電子メール アドレスが有効であるかどうかを判別するには、電子メール アドレスを クラス コンストラクターに渡します。 + +## コードのコンパイル + `IsValidEmail` メソッドと `DomainMapper` メソッドは、正規表現ユーティリティ メソッドのライブラリに含めることができるほか、アプリケーション クラス内のプライベートな静的メソッドやインスタンス メソッドとして含めることもできます。 + + これらを正規表現ライブラリに含めるには、Visual Studio のクラス ライブラリ プロジェクトにコードをコピーして貼り付けるか、コードをテキスト ファイルにコピーして貼り付けて、次のようなコマンドでコマンド ラインからコンパイルします \(ソース コード ファイルの名前を RegexUtilities.cs または RegexUtilities.vb と仮定しています\)。 + +```csharp +csc /t:library RegexUtilities.cs +``` + +```vb +vbc /t:library RegexUtilities.vb +``` + + また、 メソッドを使用して、この正規表現を正規表現ライブラリに追加できます。 + + 正規表現ライブラリ内で使用した場合は、次のようなコードを使用して呼び出すことができます。 + + [!code-csharp[RegularExpressions.Examples.Email#8](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Examples.Email/cs/example4.cs#8)] + [!code-vb[RegularExpressions.Examples.Email#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Examples.Email/vb/example4.vb#8)] + + 電子メール検証の正規表現を含む RegexUtilities.dll という名前のクラス ライブラリを作成してあると仮定した場合、この例は次の方法のいずれかでコンパイルできます。 + +- Visual Studio では、コンソール アプリケーションを作成して、RegexUtilities.dll への参照をプロジェクトに追加します。 + +- コマンド ラインからは、ソース コードをテキスト ファイルにコピーして貼り付け、次のようなコマンドでコンパイルします \(ソース コード ファイルの名前を Example.cs または Example.vb と仮定しています\)。 + + ```csharp + csc Example.cs /r:RegexUtilities.dll + ``` + + ```vb + vbc Example.vb /r:RegexUtilities.dll + ``` + +## 参照 + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) \ No newline at end of file diff --git a/docs/standard/base-types/index.md b/docs/standard/base-types/index.md index 8245ab72770..a060bb53e33 100644 --- a/docs/standard/base-types/index.md +++ b/docs/standard/base-types/index.md @@ -1,35 +1,44 @@ --- -title: "基本型の操作" -description: "基本型の操作" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/22/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: e53e414f-e0b6-4076-a6ab-189ba93e23cd -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 2be90e0a3e6627152532ff607768dbbb333045d7 -ms.lasthandoff: 04/05/2017 - ---- - -# 基本型の操作 - -このセクションでは、書式設定、変換、および一般的な操作を含む、.NET 基本型の操作について説明します。 - -## このセクションの内容 - -[型変換](type-conversion.md) - 型を変換する方法について説明します。 - -[型の書式設定](formatting-types.md) - 文字列の書式指定子を使用して文字列の書式を設定する方法について説明します。 - -[文字列の操作](manipulating-strings.md) - 文字列を操作し、書式設定する方法について説明します。 - -[文字列の解析](parsing-strings.md) - 文字列を型に変換する方法について説明します。 - -[共通型システム](common-type-system.md) - .NET で使用される型について説明します。 - +title: ".NET Framework における基本型の作業 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "型、基本" + - "基本型" + - "型システム、基本型" +ms.assetid: 028d0ce8-ebc2-4a88-a16f-17508f6d0bd6 +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# .NET Framework における基本型の作業 +ここでは、.NET Framework の基本型の操作 \(書式指定、変換、一般的な操作など\) について説明します。 + +## このセクションの内容 + [.NET Framework における型変換](../../../docs/standard/base-types/type-conversion.md) + 型を別の型に変換する方法について説明します。 + + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + 文字列書式指定子を使用して文字列の書式を指定する方法について説明します。 + + [文字列の操作](../../../docs/standard/base-types/manipulating-strings.md) + 文字列の操作と書式指定の方法について説明します。 + + [文字列の解析](../../../docs/standard/base-types/parsing-strings.md) + 文字列を .NET Framework の型に変換する方法について説明します。 + +## 関連項目 + [共通型システム](../../../docs/standard/base-types/common-type-system.md) + .NET Framework で使用される型について説明します。 + + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + タイム ゾーン対応のアプリケーションでのタイム ゾーンの処理方法とタイム ゾーンの変換について説明します。 \ No newline at end of file diff --git a/docs/standard/base-types/manipulating-strings.md b/docs/standard/base-types/manipulating-strings.md index 9315946bb0c..084c7317bd4 100644 --- a/docs/standard/base-types/manipulating-strings.md +++ b/docs/standard/base-types/manipulating-strings.md @@ -1,40 +1,43 @@ --- -title: "文字列の操作" -description: "文字列の操作" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/22/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: da3c277e-b06e-48bd-ae1f-1e7e4240b93e -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 0ad6a7ef456e7967b3c23e58cd7afa97a4b786de -ms.lasthandoff: 03/02/2017 - ---- - -# 文字列の操作 - -.NET では、文字列を効率的に作成、比較、変更できるだけでなく、検索、削除、およびテキスト パターンを置換するために、大量のテキストとデータをすばやく解析できる広範囲のルーチンのセットを提供しています。 - -## このセクションの内容 - -[文字列の使用のベスト プラクティス](best-practices-strings.md) - .NET での文字列の並べ替え、比較、および大文字小文字の区別の方法を調査し、文字列処理方法を選択する場合の推奨事項を示します。 - -[正規表現](regular-expressions.md) -言語要素、正規表現の動作、例などの .NET の正規表現の詳細について説明します。 - -[基本的な文字列操作](basic-string-operations.md) - バイト配列からの新しい文字列の作成、文字列値の比較、既存の文字列の変更など、@System.String および @System.Text.StringBuilder クラスによって提供される文字列の操作について説明します。 - -[.NET での文字エンコード](character-encoding.md) - Unicode などの文字形式をエンコードおよびデコードする方法について説明します。 - -[型変換](type-conversion.md) - 型を変換する方法について説明します。 - -[型の書式設定](formatting-types.md) - 文字列の書式指定子を使用して文字列の書式を設定する方法について説明します。 - -[文字列の解析](parsing-strings.md) - 文字列を型に変換する方法について説明します。 - - +title: ".NET Framework における文字列の操作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "操作 (文字列を)" + - "文字列 [.NET Framework], 操作" +ms.assetid: d4568ff3-9f83-4549-acd8-47aec2194ac0 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# .NET Framework における文字列の操作 +.NET Framework は広範囲にわたるルーチン セットを提供しており、それらを使用することで効率的に文字列を作成、比較、修正したり、大量のテキストおよびデータをすばやく解析して検索、削除したり、テキスト パターンと置換したりできます。 + +## このセクションの内容 + [文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md) + .NET Framework の文字列の並べ替え、比較、および大文字と小文字の区別のメソッドについて検討し、文字列処理メソッドを選択するための推奨事項を示します。 + + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) + 言語要素、正規表現の動作、例など、.NET Framework 正規表現について詳しく説明します。 + + [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) + バイト配列から新しい文字列を作成する、文字列の値を比較する、既存の文字列を変更するなど、 クラスと クラスに用意されている文字列操作について説明します。 + +## 関連項目 + [.NET Framework における型変換](../../../docs/standard/base-types/type-conversion.md) + .NET Framework を使用した型の変換で使用される手法と規則について説明します。 + + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + 基本クラス ライブラリによる書式指定機能の実装方法、数値型の書式指定方法、文字列型の書式指定方法、特定のカルチャでの書式指定方法について説明します。 + + [文字列の解析](../../../docs/standard/base-types/parsing-strings.md) + オブジェクトの文字列表現によって指定された値にオブジェクトを初期化する方法について説明します。 解析は書式設定の逆の操作です。 \ No newline at end of file diff --git a/docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md b/docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md new file mode 100644 index 00000000000..15cc051f6a2 --- /dev/null +++ b/docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md @@ -0,0 +1,107 @@ +--- +title: "正規表現でのその他の構成体 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, その他の構成体" + - "構成体, その他" + - "正規表現, その他の構成体" +ms.assetid: 7d10d11f-680f-4721-b047-fb136316b4cd +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 正規表現でのその他の構成体 +.NET Framework の正規表現には、その他の言語構成要素が 3 つ含まれています。 そのうちの 1 つを使用すると、正規表現パターンの途中で特定の一致オプションを有効または無効にできます。 残りの 2 つを使用すると、正規表現にコメントを含めることができます。 + +## インライン オプション + 次の構文を使用すると、正規表現の一部に対して、特定のパターン一致オプションを設定したり、無効にしたりできます。 + +``` +(?imnsx-imnsx) +``` + + 有効にするオプションは疑問符の後に、無効にするオプションはマイナス記号の後に指定します。 各オプションの説明を次の表に示します。 各オプションの詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」を参照してください。 + +|オプション|説明| +|-----------|--------| +|`i`|大文字と小文字を区別しない一致を指定します。| +|`m`|複数行モードを指定します。| +|`n`|明示的なキャプチャのみを指定します。かっこはキャプチャ グループとして機能しません。| +|`s`|単一行モードを指定します。| +|`x`|エスケープされない空白を無視し、x モード コメントを許可します。| + + `(?imnsx-imnsx)` 構成体で定義した正規表現オプションの変更は、包含するグループの末尾まで有効です。 + +> [!NOTE] +> `(?imnsx-imnsx:` *subexpression* `)` のグループ化構成体は、部分式と同じ機能を提供します。 詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + + 次の例では、`i`、`n`、および `x` の各オプションを使用して、正規表現の途中で、大文字と小文字を区別しないようにし、明示的なキャプチャを有効にし、正規表現パターン内の空白を無視するようにしています。 + + [!code-csharp[RegularExpressions.Language.Miscellaneous#1](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.miscellaneous/cs/miscellaneous1.cs#1)] + [!code-vb[RegularExpressions.Language.Miscellaneous#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.miscellaneous/vb/miscellaneous1.vb#1)] + + この例では、2 つの正規表現を定義しています。 最初の `\b(D\w+)\s(d\w+)\b` は、大文字の "D" と小文字の "d" で始まる連続する 2 語に一致します。 2 番目の正規表現 `\b(D\w+)(?ixn) \s (d\w+) \b` は、インライン オプションを使用して、このパターンを次の表に示すように変更しています。 結果の比較により、`(?ixn)` 構成要素の効果が確認できます。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`(D\w+)`|大文字の "D" の後に単語に使用される文字が 1 個以上続くパターンに一致します。 これが最初のキャプチャ グループです。| +|`(?ixn)`|これ以降、比較で大文字と小文字を区別しないようにし、明示的なキャプチャのみを行い、正規表現パターン内の空白を無視します。| +|`\s`|空白文字と一致します。| +|`(d\w+)`|大文字または小文字の "d" の後に単語に使用される文字が 1 個以上続くパターンに一致します。 `n` \(明示的なキャプチャ\) オプションが有効になっているため、このグループはキャプチャされません。| +|`\b`|ワード境界に一致します。| + +## インライン コメント + `(?#` *comment* `)` 構造体が正規表現にインライン コメントを含めることができます。 コメントのいずれの部分も、正規表現エンジンによるパターン一致に使用されません。ただし、 メソッドで返される文字列には、コメントが含まれます。 コメントは、最初の閉じかっこで終了します。 + + 次の例では、前のセクションの例のうち、最初の正規表現パターンを使用しています。 正規表現に 2 つのインライン コメントを追加して、比較で大文字と小文字を区別するかどうかを示しています。 正規表現パターン `\b((?# case-sensitive comparison)D\w+)\s((?#case-insensitive comparison)d\w+)\b` は、次のように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`(?# case-sensitive comparison)`|コメント。 これは、パターン一致動作に影響しません。| +|`(D\w+)`|大文字の "D" の後に単語に使用される文字が 1 個以上続くパターンに一致します。 これが最初のキャプチャ グループです。| +|`\s`|空白文字と一致します。| +|`(?ixn)`|これ以降、比較で大文字と小文字を区別しないようにし、明示的なキャプチャのみを行い、正規表現パターン内の空白を無視します。| +|`(?#case-insensitive comparison)`|コメント。 これは、パターン一致動作に影響しません。| +|`(d\w+)`|大文字または小文字の "d" の後に単語に使用される文字が 1 個以上続くパターンに一致します。 これが 2 番目のキャプチャ グループです。| +|`\b`|ワード境界に一致します。| + + [!code-csharp[RegularExpressions.Language.Miscellaneous#2](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.miscellaneous/cs/miscellaneous2.cs#2)] + [!code-vb[RegularExpressions.Language.Miscellaneous#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.miscellaneous/vb/miscellaneous2.vb#2)] + +## 行末コメント + シャープ記号 \(`#`\) は x モード コメントを示します。このコメントは、正規表現パターンの末尾にあるエスケープされない \# 文字から行末までです。 この構成体を使用するには、`x` オプションを \(インライン オプションで\) 有効にするか、 オブジェクトのインスタンス化時または 静的メソッドの呼び出し時に 値を `option` パラメーターに指定する必要があります。 + + 行末コメント構成体を次の例に示します。 この例では、文字列が、1 つ以上の書式指定項目を含む複合書式指定文字列であるかどうかを判断しています。 正規表現パターンの構成要素の説明を次の表に示します。 + + `\{\d+(,-*\d+)*(\:\w{1,4}?)*\}(?x) # Looks for a composite format item.` + +|パターン|説明| +|----------|--------| +|`\{`|左中かっこ \({\) に一致します。| +|`\d+`|1 個以上の 10 進数と一致します。| +|`(,-*\d+)*`|コンマの後に省略可能なマイナス記号、その後に 1 個以上の 10 進数が続くパターンに 0 回または 1 回一致します。| +|`(\:\w{1,4}?)*`|コロンの後に 1 ~ 4 個の \(できるだけ少ない\) 空白文字が続くパターンに 0 回または 1 回一致します。| +|`(?#case insensitive comparison)`|インライン コメントです。 これは、パターン一致動作に影響しません。| +|`\}`|右中かっこ \(}\) に一致します。| +|`(?x)`|行末コメントが認識されるように、パターンの空白を無視するオプションを有効にします。| +|`# Looks for a composite format item.`|行末コメントです。| + + [!code-csharp[RegularExpressions.Language.Miscellaneous#3](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.language.miscellaneous/cs/miscellaneous3.cs#3)] + [!code-vb[RegularExpressions.Language.Miscellaneous#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.language.miscellaneous/vb/miscellaneous3.vb#3)] + + 正規表現に `(?x)` 構成要素を指定する代わりに、 メソッドを呼び出して 列挙値を渡すことによっても、コメントを認識されるようにすることができます。 + +## 参照 + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) \ No newline at end of file diff --git a/docs/standard/base-types/padding.md b/docs/standard/base-types/padding.md index 8ea444a5dcd..d3a6aec0999 100644 --- a/docs/standard/base-types/padding.md +++ b/docs/standard/base-types/padding.md @@ -1,65 +1,52 @@ --- -title: "文字列の埋め込み" -description: "文字列の埋め込み" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 1c8b3b44-d370-49e1-90b5-64ac81c02ae91c8b3b44-d370-49e1-90b5-64ac81c02ae9 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: bc3cc9028b232cc2ba6ca3130c4bdb261c4a0a42 -ms.lasthandoff: 03/02/2017 - ---- - -# 文字列の埋め込み - -ある文字の先頭または末尾に文字を埋め込み、合計を指定の長さにするとき、元の文字列で構成される新しい文字列を次の [System.String](xref:System.String) メソッドの&1; つを利用して作成します。 埋め込み文字にはスペースや指定した文字を利用できます。結果的に、右揃えまたは左揃えのように見えます。 - -メソッド名 | 使用 ------------ | --- -[String.PadLeft](xref:System.String.PadLeft(System.Int32)) | 文字列の先頭に文字を埋め込み、合計を指定の長さにします。 -[String.PadRight](xref:System.String.PadRight(System.Int32)) | 文字列の末尾に文字を埋め込み、合計を指定の長さにします。 - -## PadLeft - -[String.PadLeft](xref:System.String.PadLeft(System.Int32)) メソッドでは、元の文字列の先頭に埋め込み文字をつなげ、合計を指定の長さにすることで新しい文字列を作成します。 [String.PadLeft(Int32)](xref:System.String.PadLeft(System.Int32)) メソッドでは、空白文字が埋め込み文字として利用されます。[String.PadLeft(Int32, Char)](xref:System.String.PadLeft(System.Int32,System.Char)) メソッドでは、独自の埋め込み文字を指定できます。 - -次のコード例では、[PadLeft(Int32, Char)](xref:System.String.PadLeft(System.Int32,System.Char)) メソッドを利用し、長さが&20; 文字の新しい文字列を作成します。 この例は、コンソールに "`--------Hello World!`" と出力します。 - -```csharp -string MyString = "Hello World!"; -Console.WriteLine(MyString.PadLeft(20, '-')); -``` - -```vb -Dim MyString As String = "Hello World!" -Console.WriteLine(MyString.PadLeft(20, "-"c)) -``` - -## PadRight - -[String.PadRight](xref:System.String.PadRight(System.Int32)) メソッドでは、元の文字列の末尾に埋め込み文字をつなげ、合計を指定の長さにすることで新しい文字列を作成します。 [String.PadRight(Int32)](xref:System.String.PadRight(System.Int32)) メソッドでは、空白文字が埋め込み文字として利用されます。[String.PadRight(Int32, Char)](xref:System.String.PadRight(System.Int32,System.Char)) メソッドでは、独自の埋め込み文字を指定できます。 - -次のコード例では、[PadRight(Int32, Char)](xref:System.String.PadRight(System.Int32,System.Char)) メソッドを利用し、長さが&20; 文字の新しい文字列を作成します。 この例は、コンソールに "`Hello World!--------`" と出力します。 - -```csharp -string MyString = "Hello World!"; -Console.WriteLine(MyString.PadRight(20, '-')); -``` - -```vb -Dim MyString As String = "Hello World!" -Console.WriteLine(MyString.PadRight(20, "-"c)) -``` - -## 関連項目 - -[基本的な文字列操作](basic-string-operations.md) - - +title: ".NET Framework における文字列の埋め込み | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "埋め込み (文字列の)" + - "PadLeft メソッド" + - "PadRight メソッド" + - "文字列 [.NET Framework], 埋め込み" + - "空白" +ms.assetid: 84a9f142-3244-4c90-ba02-21af9bbaff71 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# .NET Framework における文字列の埋め込み +次の メソッドのいずれかを使用すると、元の文字列の先頭または末尾に指定した合計長になるまで文字が埋め込まれた新しい文字列が作成されます。 埋め込む文字には空白または指定の文字のいずれかが使用され、結果的にそれらの文字は右寄せまたは左寄せで表示されます。 + +|メソッド名|使用方法| +|-----------|----------| +||指定された合計長になるまで文字列の先頭に文字を埋めます。| +||指定された合計長になるまで文字列の末尾に文字を埋めます。| + +## PadLeft + メソッドは、指定された合計長に達するように元の文字列に先頭の埋め込み文字を連結することで、新しい文字列を作成します。 メソッドでは空白が埋め込み文字として使用され、 メソッドでは独自の埋め込み文字を指定できます。 + + メソッドを使用して全長が 20 文字の新しい文字列を作成する例を次に示します。 この例は、コンソールに `--------Hello World!` と出力します。 + + [!code-cpp[Conceptual.String.BasicOps#3](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/padding.cpp#3)] + [!code-csharp[Conceptual.String.BasicOps#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/padding.cs#3)] + [!code-vb[Conceptual.String.BasicOps#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/padding.vb#3)] + +## PadRight + メソッドは、指定された合計長に達するように元の文字列に末尾の埋め込み文字を連結することで、新しい文字列を作成します。 メソッドでは空白が埋め込み文字として使用され、 メソッドでは独自の埋め込み文字を指定できます。 + + メソッドを使用して全長が 20 文字の新しい文字列を作成する例を次に示します。 この例は、コンソールに `Hello World!--------` と出力します。 + + [!code-cpp[Conceptual.String.BasicOps#4](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/padding.cpp#4)] + [!code-csharp[Conceptual.String.BasicOps#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/padding.cs#4)] + [!code-vb[Conceptual.String.BasicOps#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/padding.vb#4)] + +## 参照 + [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) \ No newline at end of file diff --git a/docs/standard/base-types/parsing-datetime.md b/docs/standard/base-types/parsing-datetime.md index 6886b6b73ba..b65013481db 100644 --- a/docs/standard/base-types/parsing-datetime.md +++ b/docs/standard/base-types/parsing-datetime.md @@ -1,193 +1,71 @@ --- -title: ".NET での日付と時刻文字列の解析" -description: ".NET での日付と時刻文字列の解析" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/29/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: e61514cd-5329-4eb8-b122-482fffb54ab7 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: f0131baa0874880b6697458426da5ae9ce1705b7 -ms.lasthandoff: 03/02/2017 - ---- - -# .NET での日付と時刻文字列の解析 - -解析メソッドは、日付と時刻の文字列形式を等価の [DateTime](xref:System.DateTime) オブジェクトに変換します。 [Parse](xref:System.DateTime.Parse(System.String)) と [TryParse](xref:System.DateTime.TryParse(System.String,System.DateTime@)) メソッドでは、日付と時刻のいくつかの共通表現のいずれかを変換します。 [ParseExact](xref:System.DateTime.ParseExact(System.String,System.String,System.IFormatProvider)) と [TryParseExact](xref:System.DateTime.TryParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateTime@)) メソッドでは、日付と時刻の書式指定文字列で指定されたパターンに適合する文字列形式を変換します。 ([標準の日付と時刻の書式指定文字列](standard-datetime.md)と[カスタムの日付と時刻の書式指定文字列](custom-datetime.md)に関するトピックをご覧ください)。 - -解析は、日付と時刻の区切り記号、および月、日、および年号の名前に使用される文字列などの情報を提供する書式プロバイダーのプロパティの影響を受けます。 書式プロバイダーは、現在の [DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) オブジェクトです。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または解析するメソッドの [IFormatProvider](xref:System.IFormatProvider) パラメーターによって明示的に指定されます。 [IFormatProvider](xref:System.IFormatProvider) パラメーターには、カルチャ ([DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) オブジェクト) を表す [CultureInfo](xref:System.Globalization.CultureInfo) オブジェクトを指定します。 - -解析される日付の文字列形式には、月と、少なくとも日付または年を含める必要があります。 時刻の文字列形式は、時間と、少なくとも分または AM/PM 指定子を含める必要があります。 ただし、可能な場合は、解析により省略されたコンポーネントに既定値が指定されます。 欠落している日付には現在の日付が規定で設定され、欠落している年には現在の年が規定で設定され、欠落している月の日付には月の最初の日が規定で設定され、欠落している時刻には午前&0; 時が規定で設定されます。 - -文字列形式で時刻のみを指定する場合、解析は、[Today](xref:System.DateTime.Today) プロパティの対応する値に、その [Year](xref:System.DateTime.Year)、[Month](xref:System.DateTime.Month)、および [Day](xref:System.DateTime.Day) プロパティを設定した [DateTime](xref:System.DateTime) オブジェクトを返します。 ただし、[DateTimeStyles.NoCurrentDateDefault](xref:System.Globalization.DateTimeStyles.NoCurrentDateDefault) 定数が解析メソッドで指定されている場合、結果の年、月、日付のプロパティの値は 1 に設定されます。 - -日付と時刻のコンポーネントだけでなく、日付と時刻の文字列形式には、世界協定時刻 (UTC) と何時間異なるかを示すオフセットを含めることができます。 たとえば、文字列 "2/14/2007 5:32:00 -7:00" は、UTC より 7 時間早い時刻を定義します。 オフセットが時刻の文字列形式から省略される場合、解析では、その [Kind](xref:System.DateTime.Kind) プロパティに [DateTimeKind.Unspecified](xref:System.DateTimeKind.Unspecified) を設定して、[DateTime](xref:System.DateTime) オブジェクトを返します。 オフセットが指定されている場合、解析では、その [Kind](xref:System.DateTime.Kind) プロパティに [Local](xref:System.DateTimeKind.Local) を設定した [DateTime](xref:System.DateTime) オブジェクトと、使用しているマシンのローカル タイム ゾーンに調整された値を返します。 解析メソッドで [DateTimeStyles](xref:System.Globalization.DateTimeStyles) 定数を使用して、この動作を変更できます。 - -書式プロバイダーは、あいまいな数値の日付を解釈するためにも使用されます。 たとえば、文字列 "02/03/04" で示された日付は、どのコンポーネントが月、日、年であるのかが明確ではありません。 この場合、コンポーネントは、書式プロバイダーの日付形式と同様の順序で解釈されます。 - -## Parse - -次のコード例では、文字列を `DateTime` に変換するために、`Parse` メソッドを使用する方法を示します。 この例では、現在のスレッドに関連付けられているカルチャを使用して、解析が実行されます。 現在のカルチャに関連付けられている [CultureInfo](xref:System.Globalization.CultureInfo) で入力文字列を解析できない場合は、[FormatException](xref:System.FormatException) がスローされます。 - -```csharp -string MyString = "Jan 1, 2009"; -DateTime MyDateTime = DateTime.Parse(MyString); -Console.WriteLine(MyDateTime); -// Displays the following output on a system whose culture is en-US: -// 1/1/2009 12:00:00 AM -``` - -```vb -Dim MyString As String = "Jan 1, 2009" -Dim MyDateTime As DateTime = DateTime.Parse(MyString) -Console.WriteLine(MyDateTime) -' Displays the following output on a system whose culture is en-US: -' 1/1/2009 12:00:00 AM -``` - -また、そのオブジェクトで定義されているカルチャのいずれかに設定される `CultureInfo` を指定するか、または [CultureInfo.DateTimeFormat](xref:System.Globalization.CultureInfo.DateTimeFormat) プロパティによって返される標準の [DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) オブジェクトのいずれかを指定することもできます。 次のコード例は、書式プロバイダーを使用して、ドイツ語の文字列を `DateTime` に解析します。 この特定の文字列を正常に解析できるように、de-DE カルチャを示す `CultureInfo` が定義され、解析されている文字列と共に渡されます。 これによって、`CurrentThread` の `CurrentCulture` がどのように設定されていても除外されます。 - -```csharp -using System; -using System.Globalization; - -public class Example -{ - public static void Main() - { - CultureInfo MyCultureInfo = new CultureInfo("de-DE"); - string MyString = "12 Juni 2008"; - DateTime MyDateTime = DateTime.Parse(MyString, MyCultureInfo); - Console.WriteLine(MyDateTime); - } -} -// The example displays the following output: -// 6/12/2008 12:00:00 AM -``` - -```vb -Imports System.Globalization - -Module Example - Public Sub Main() - Dim MyCultureInfo As CultureInfo = new CultureInfo("de-DE") - Dim MyString As String = "12 Juni 2008" - Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo) - Console.WriteLine(MyDateTime) - End Sub -End Module -' The example displays the following output: -' 6/12/2008 12:00:00 AM -``` - -ただし、[Parse](xref:System.DateTime.Parse(System.String)) メソッドのオーバーロードを使用して、カスタム書式プロバイダーを指定することができますが、このメソッドでは非標準の書式プロバイダーの使用をサポートしていません。 非標準の書式設定で示された日付と時刻を解析するには、代わりに [ParseExact](xref:System.DateTime.ParseExact(System.String,System.String,System.IFormatProvider)) メソッドを使用します。 - -次のコード例では、[DateTimeStyles](xref:System.Globalization.DateTimeStyles) 列挙体を使用して、現在の日付と時刻の情報を、文字列で定義しないフィールドの `DateTime` に追加しないことを指定します。 - -```csharp -using System; -using System.Globalization; - -public class Example -{ - public static void Main() - { - CultureInfo MyCultureInfo = new CultureInfo("de-DE"); - string MyString = "12 Juni 2008"; - DateTime MyDateTime = DateTime.Parse(MyString, MyCultureInfo, - DateTimeStyles.NoCurrentDateDefault); - Console.WriteLine(MyDateTime); - } -} -// The example displays the following output if the current culture is en-US: -// 6/12/2008 12:00:00 AM -``` - -```vb -Imports System.Globalization - -Module Example - Public Sub Main() - Dim MyCultureInfo As CultureInfo = new CultureInfo("de-DE") - Dim MyString As String = "12 Juni 2008" - Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo) - Console.WriteLine(MyDateTime) - End Sub -End Module -' The example displays the following output: -' 6/12/2008 12:00:00 AM -``` - -## ParseExact - -[DateTime.ParseExact]((xref:System.DateTime.ParseExact(System.String,System.String,System.IFormatProvider)) メソッドは、指定された文字列パターンに適合する文字列を `DateTime` オブジェクトに変換します。 指定された形式ではない文字列がこのメソッドに渡された場合、[FormatException](xref:System.FormatException) がスローされます。 標準の日付と時刻の書式指定子のいずれか、またはカスタムの日付と時刻の書式指定子の制限された組み合わせを指定することができます。 カスタムの書式指定子を使用すると、カスタムの認識文字列を構成することができます。 (指定子の詳細については、[標準の日付と時刻の書式指定文字列](standard-datetime.md)と[カスタムの日付と時刻の書式指定文字列](custom-datetime.md)に関するトピックをご覧ください)。 - -[ParseExact](xref:System.DateTime.ParseExact(System.String,System.String,System.IFormatProvider)) メソッドのオーバーロードごとに、通常は文字列の書式設定に関するカルチャ固有の情報を指定する [IFormatProvider](xref:System.IFormatProvider) パラメーターもあります。 通常、この [IFormatProvider](xref:System.IFormatProvider) オブジェクトは、標準カルチャを表す [CultureInfo](xref:System.Globalization.CultureInfo) オブジェクト、または [CultureInfo.DateTimeFormat](xref:System.Globalization.CultureInfo.DateTimeFormat) プロパティによって返される [DateTimeFormatInfo](xref:System.Globalization.DateTimeFormatInfo) オブジェクトです。 ただし、その他の日付と時刻の解析関数とは異なり、このメソッドでは、非標準の日付と時刻の書式を定義する [IFormatProvider](xref:System.IFormatProvider) もサポートしています。 - -次のコード例では、`ParseExact` メソッドに解析する文字列オブジェクト、書式指定子、`CultureInfo` オブジェクトが順に渡されます。 この `ParseExact` メソッドでは、en-US カルチャで長い形式の日付パターンを示す文字列のみを解析できます。 - -```csharp -using System; -using System.Globalization; - -public class Example -{ - public static void Main() - { - CultureInfo MyCultureInfo = new CultureInfo("en-US"); - string[] MyString = {" Friday, April 10, 2009", "Friday, April 10, 2009"}; - foreach (string dateString in MyString) - { - try { - DateTime MyDateTime = DateTime.ParseExact(dateString, "D", MyCultureInfo); - Console.WriteLine(MyDateTime); - } - catch (FormatException) { - Console.WriteLine("Unable to parse '{0}'", dateString); - } - } - } -} -// The example displays the following output: -// Unable to parse ' Friday, April 10, 2009' -// 4/10/2009 12:00:00 AM -``` - -```vb -Imports System.Globalization - -Module Example - Public Sub Main() - Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US") - Dim MyString() As String = {" Friday, April 10, 2009", "Friday, April 10, 2009"} - For Each dateString As String In MyString - Try - Dim MyDateTime As DateTime = DateTime.ParseExact(dateString, "D", _ - MyCultureInfo) - Console.WriteLine(MyDateTime) - Catch e As FormatException - Console.WriteLine("Unable to parse '{0}'", dateString) - End Try - Next - End Sub -End Module -' The example displays the following output: -' Unable to parse ' Friday, April 10, 2009' -' 4/10/2009 12:00:00 AM -``` - -## 関連項目 - -[.NET での文字列の解析](parsing-strings.md) - -[.NET での型の書式設定](formatting-types.md) - -[.NET での型変換](type-conversion.md) - - +title: ".NET Framework における日付と時刻文字列の解析の解析 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "基本型, 解析 (文字列を)" + - "日付と時刻文字列" + - "DateTime オブジェクト" + - "列挙型 [.NET Framework], 解析 (文字列を)" + - "ParseExact メソッド" + - "解析 (文字列を), 日付と時刻文字列" + - "時間の文字列" +ms.assetid: 43bae51e-9b1d-41a6-a187-772c0d096d90 +caps.latest.revision: 24 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 24 +--- +# .NET Framework における日付と時刻文字列の解析の解析 +解析メソッドは、日付と時刻の文字列形式を、等価の オブジェクトに変換します。 メソッドと メソッドは、複数ある日付と時刻の共通形式をどれでも変換します。 メソッドと メソッドは、日時書式指定文字列で指定されるパターンに準拠する文字列形式を変換します \([標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)および[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)に関するトピックを参照してください\)。 + + 解析は、日付と時刻の区切り記号に使用される文字列または月、日、年号の名前などの情報を提供する書式プロバイダーのプロパティに影響されます。 書式プロバイダーは、現在の オブジェクトであり、現在のスレッド カルチャによって暗黙的に指定されるか、または解析メソッドの パラメーターによって明示的に指定されます。 パラメーターには、カルチャを表す オブジェクト、または オブジェクトを指定します。 + + 解析される日付の文字列形式には、月と、日または年の少なくともどちらかが含まれている必要があります。 時刻の文字列形式には、時間と、分または AM\/PM 指定子の少なくともどちらかが含まれている必要があります。 ただし可能であれば、省略された構成要素に対して解析が既定値を使用します。 日付がない場合は現在の日付、年がない場合は現在の年、月の日付がない場合はその月の初日、時刻がない場合は午前 0 時が、それぞれ既定で設定されます。 + + 文字列形式が時刻のみを指定している場合は、解析が オブジェクトの 、および の各プロパティを プロパティの対応する値に設定して、このオブジェクトを返します。 ただし、解析メソッドに 定数が指定された場合は、結果の年、月、および日の各プロパティが値 `1` に設定されます。 + + 日付と時刻の文字列形式には、日付と時刻の構成要素に加えて、世界協定時刻 \(UTC: Coordinated Universal Time\) との時間の差を示すオフセットを含めることができます。 たとえば、"2\/14\/2007 5:32:00 \-7:00" という文字列は、UTC より 7 時間早い時刻を定義します。 時刻の文字列形式でオフセットが省略されている場合、解析は オブジェクトの プロパティを に設定して返します。 オフセットが指定されている場合、解析は オブジェクトの プロパティを に設定し、値をコンピューターのローカル タイム ゾーンに調整して返します。 この動作は、解析メソッドに 定数を使用することで変更できます。 + + 書式プロバイダーは、あいまいな数値の日付を解釈する際にも使用されます。 たとえば、文字列 "02\/03\/04" で表された日付は、どの構成要素が月、日、年であるかが明確ではありません。 この場合は、書式プロバイダーの類似する日付形式の順序に従って構成要素が解釈されます。 + +## Parse + **Parse** メソッドを使用して文字列を **DateTime** に変換するコード例を次に示します。 この例では、現在のスレッドに関連付けられているカルチャを使用して解析が実行されます。 現在のカルチャに関連付けられている で入力文字列を解析できない場合は、 がスローされます。 + + [!code-csharp[Parsing.DateAndTime#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Parsing.DateAndTime/cs/Example.cs#1)] + [!code-vb[Parsing.DateAndTime#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Parsing.DateAndTime/vb/Example.vb#1)] + + カルチャの 1 つを定義するように **CultureInfo** を設定して、そのオブジェクトを指定するか、 プロパティによって返される標準の オブジェクトの 1 つを指定することもできます。 書式プロバイダーを使用してドイツ語文字列を **DateTime** に変換するコード例を次に示します。 この文字列を正しく解析するには、de\-DE \(ドイツのドイツ語\) カルチャを表す **CultureInfo** を定義し、解析する文字列と共に渡します。 これにより、**CurrentThread** の **CurrentCulture** の設定が無視されます。 + + [!code-csharp[Parsing.DateAndTime#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Parsing.DateAndTime/cs/Example2.cs#2)] + [!code-vb[Parsing.DateAndTime#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Parsing.DateAndTime/vb/Example2.vb#2)] + + ただし、 メソッドのオーバーロードを使用するとカスタム書式プロバイダーを指定できますが、このメソッド自体は標準以外の書式プロバイダーの使用をサポートしていません。 標準以外の形式で表された日付と時刻を解析するには、代わりに メソッドを使用します。 + + 列挙体を使用して、文字列で定義されていないフィールドについて、現在の日付と時刻の情報を **DateTime** に追加しないように指定するコード例を次に示します。 + + [!code-csharp[Parsing.DateAndTime#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Parsing.DateAndTime/cs/Example3.cs#3)] + [!code-vb[Parsing.DateAndTime#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Parsing.DateAndTime/vb/Example3.vb#3)] + +## ParseExact + メソッドは、指定した文字列パターンに準拠する文字列を **DateTime** オブジェクトに変換します。 指定された書式に従っていない文字列をこのメソッドに渡すと、 がスローされます。 標準の日付と時刻書式指定子のいずれかを指定するか、またはカスタムの日付と時刻書式指定子の限定された組み合わせを指定できます。 カスタムの書式指定子を使用すると、カスタムの認識文字列を生成できます。 指定子の説明については、[標準の日時書式指定文字列](../../../docs/standard/base-types/standard-date-and-time-format-strings.md)および[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)に関するトピックを参照してください。 + + メソッドの各オーバーロードは、 パラメーターも受け取ります。このパラメーターは、通常、文字列の書式に関するカルチャ固有の情報を指定します。 多くの場合、この オブジェクトは、標準のカルチャを表す オブジェクトか、または プロパティによって返される オブジェクトです。 ただし、日付と時刻を解析する他の関数とは異なり、このメソッドは標準以外の日付と時刻の形式を定義する もサポートします。 + + 次のコード例では、解析する文字列オブジェクト、書式指定子、および **CultureInfo** オブジェクトを **ParseExact** メソッドに渡しています。 この **ParseExact** メソッドは、en\-US カルチャの Long Date パターンを表す文字列だけを解析できます。 + + [!code-csharp[Parsing.DateAndTime#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Parsing.DateAndTime/cs/Example4.cs#4)] + [!code-vb[Parsing.DateAndTime#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Parsing.DateAndTime/vb/Example4.vb#4)] + +## 参照 + [文字列の解析](../../../docs/standard/base-types/parsing-strings.md) + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + [.NET Framework における型変換](../../../docs/standard/base-types/type-conversion.md) \ No newline at end of file diff --git a/docs/standard/base-types/parsing-numeric.md b/docs/standard/base-types/parsing-numeric.md index 6f47e2a6c9e..a676defffea 100644 --- a/docs/standard/base-types/parsing-numeric.md +++ b/docs/standard/base-types/parsing-numeric.md @@ -1,329 +1,90 @@ --- -title: ".NET での数値文字列の解析" -description: ".NET での数値文字列の解析" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/29/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: e393430a-731a-49fa-83de-ff7ed52d5704 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 85cd57d33b03f7a2105ee3f770b2f8bcc0a57ee4 -ms.lasthandoff: 03/02/2017 - ---- - -# .NET での数値文字列の解析 - -すべての数値型には、2 つの静的解析メソッド (`Parse` と `TryParse`) があり、数字の文字列形式を数値型に変換するために使用できます。 これらのメソッドでは、[標準の数値書式指定文字列](standard-numeric.md)と[カスタム数値書式指定文字列](custom-numeric.md)で記述されている書式指定文字列を使用して、生成された文字列を解析できます。 既定では、`Parse` と `TryParse` メソッドは、10 進数の整数を含む文字列を整数値のみに正常に変換することができます。 これらのメソッドは、整数部と小数部、グループ区切り、および小数点記号を含む文字列を浮動小数点値に正常に変換できます。 `TryParse` メソッドが `false` を返すのに対して、`Parse` メソッドは操作が失敗した場合に例外をスローします。 - -## 解析と書式プロバイダー - -通常、数値の文字列形式はカルチャによって異なります。 通貨記号、グループ (または千単位) 区切り、および小数点記号などの数値文字列の要素は、カルチャによって大きく異なります。 暗黙的または明示的のいずれかの解析メソッドでは、これらのカルチャ固有のバリエーションを認識する書式プロバイダーを使用します。 書式プロバイダーが `Parse` または `TryParse` メソッドの呼び出しで指定されない場合、現在のスレッド カルチャ ([NumberFormatInfo.CurrentInfo](xref:System.Globalization.NumberFormatInfo.CurrentInfo) プロパティで返された [NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) オブジェクト) と関連付けられた書式プロバイダーが使用されます。 - -書式プロバイダーは、[IFormatProvider](xref:System.Globalization.NumberFormatInfo.CurrentInfo) 実装によって示されます。 このインターフェイスには、1 つのメンバー ([GetFormat](xref:System.IFormatProvider.GetFormat(System.Type)) メソッド) があり、その&1; つのパラメーターは、書式設定される型を示す [Type](xref:System.Type) オブジェクトです。 このメソッドは、書式情報を示すオブジェクトを返します。 .NET では、数値文字列を解析するために、次の&2; つの [IFormatProvider](xref:System.Globalization.NumberFormatInfo.CurrentInfo) の実装をサポートします。 - -* [CultureInfo.GetFormat](xref:System.Globalization.CultureInfo.GetFormat(System.Type)) メソッドが、カルチャ固有の書式情報を提供する [NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) オブジェクトを返す、[CultureInfo](xref:System.Globalization.CultureInfo) オブジェクト。 - -* [NumberFormatInfo.GetFormat](xref:System.Globalization.NumberFormatInfo.GetFormat(System.Type)) メソッドがそれ自体を返す、[NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) オブジェクト。 - -次の例では、配列内の各文字列を [Double](xref:System.Double) 値に変換しようとします。 最初に、英語 (米国) カルチャの規則を反映する書式プロバイダーを使用して、文字列を解析しようとします。 この操作が [FormatException](xref:System.FormatException) をスローする場合、フランス語 (フランス) カルチャの規則を反映する書式プロバイダーを使用して、文字列を解析しようとしています。 - -```csharp -using System; -using System.Globalization; - -public class Example -{ - public static void Main() - { - string[] values = { "1,304.16", "$1,456.78", "1,094", "152", - "123,45 €", "1 304,16", "Ae9f" }; - double number; - CultureInfo culture = null; - - foreach (string value in values) { - try { - culture = CultureInfo.CreateSpecificCulture("en-US"); - number = Double.Parse(value, culture); - Console.WriteLine("{0}: {1} --> {2}", culture.Name, value, number); - } - catch (FormatException) { - Console.WriteLine("{0}: Unable to parse '{1}'.", - culture.Name, value); - culture = CultureInfo.CreateSpecificCulture("fr-FR"); - try { - number = Double.Parse(value, culture); - Console.WriteLine("{0}: {1} --> {2}", culture.Name, value, number); - } - catch (FormatException) { - Console.WriteLine("{0}: Unable to parse '{1}'.", - culture.Name, value); - } - } - Console.WriteLine(); - } - } -} -// The example displays the following output: -// en-US: 1,304.16 --> 1304.16 -// -// en-US: Unable to parse '$1,456.78'. -// fr-FR: Unable to parse '$1,456.78'. -// -// en-US: 1,094 --> 1094 -// -// en-US: 152 --> 152 -// -// en-US: Unable to parse '123,45 €'. -// fr-FR: Unable to parse '123,45 €'. -// -// en-US: Unable to parse '1 304,16'. -// fr-FR: 1 304,16 --> 1304.16 -// -// en-US: Unable to parse 'Ae9f'. -// fr-FR: Unable to parse 'Ae9f'. -``` - -```vb -Imports System.Globalization - -Module Example - Public Sub Main() - Dim values() As String = { "1,304.16", "$1,456.78", "1,094", "152", - "123,45 €", "1 304,16", "Ae9f" } - Dim number As Double - Dim culture As CultureInfo = Nothing - - For Each value As String In values - Try - culture = CultureInfo.CreateSpecificCulture("en-US") - number = Double.Parse(value, culture) - Console.WriteLine("{0}: {1} --> {2}", culture.Name, value, number) - Catch e As FormatException - Console.WriteLine("{0}: Unable to parse '{1}'.", - culture.Name, value) - culture = CultureInfo.CreateSpecificCulture("fr-FR") - Try - number = Double.Parse(value, culture) - Console.WriteLine("{0}: {1} --> {2}", culture.Name, value, number) - Catch ex As FormatException - Console.WriteLine("{0}: Unable to parse '{1}'.", - culture.Name, value) - End Try - End Try - Console.WriteLine() - Next - End Sub -End Module -' The example displays the following output: -' en-US: 1,304.16 --> 1304.16 -' -' en-US: Unable to parse '$1,456.78'. -' fr-FR: Unable to parse '$1,456.78'. -' -' en-US: 1,094 --> 1094 -' -' en-US: 152 --> 152 -' -' en-US: Unable to parse '123,45 €'. -' fr-FR: Unable to parse '123,45 €'. -' -' en-US: Unable to parse '1 304,16'. -' fr-FR: 1 304,16 --> 1304.16 -' -' en-US: Unable to parse 'Ae9f'. -' fr-FR: Unable to parse 'Ae9f'. -``` - -## 解析と NumberStyles 値 - -解析操作が処理できるスタイル要素 (空白文字、グループ区切り、小数点の記号など) は、[NumberStyles](xref:System.Globalization.NumberStyles) 列挙値によって定義されます。 既定では、整数値を表す文字列は、[NumberStyles.Integer](xref:System.Globalization.NumberStyles.Integer) 値を使用して解析されます。これは、数値、先頭と末尾の空白、および先頭の符号のみを許可します。 浮動小数点値を表す文字列は、[NumberStyles.Float](xref:System.Globalization.NumberStyles.Float) と [NumberStyles.AllowThousands](xref:System.Globalization.NumberStyles.AllowThousands) 値の組み合わせを使用して解析されます。この複合スタイルは、先頭と末尾の空白、先頭の符号、小数点記号、グループ区切り、および指数と共に&10; 進数を許可します。 [NumberStyles](xref:System.Globalization.NumberStyles) 型のパラメーターを含む、`Parse` または `TryParse` メソッドのオーバーロードを呼び出し、1 つ以上の [NumberStyles](xref:System.Globalization.NumberStyles) フラグを設定すると、解析操作が成功するように、文字列で示すことができるスタイル要素を制御することができます。 - -たとえば、グループ区切りを含む文字列は、[Int32.Parse(String)](xref:System.Int32.Parse(System.String)) メソッドを使用して、[Int32](xref:System.Int32) 値に変換することはできません。 ただし、次の例に示すように、[NumberStyles.AllowThousands](xref:System.Globalization.NumberStyles.AllowThousands) フラグを使用した場合、この変換は成功します。 - -```csharp -using System; -using System.Globalization; - -public class Example -{ - public static void Main() - { - string value = "1,304"; - int number; - IFormatProvider provider = CultureInfo.CreateSpecificCulture("en-US"); - if (Int32.TryParse(value, out number)) - Console.WriteLine("{0} --> {1}", value, number); - else - Console.WriteLine("Unable to convert '{0}'", value); - - if (Int32.TryParse(value, NumberStyles.Integer | NumberStyles.AllowThousands, - provider, out number)) - Console.WriteLine("{0} --> {1}", value, number); - else - Console.WriteLine("Unable to convert '{0}'", value); - } -} -// The example displays the following output: -// Unable to convert '1,304' -// 1,304 --> 1304 -``` - -```vb -Imports System.Globalization - -Module Example - Public Sub Main() - Dim value As String = "1,304" - Dim number As Integer - Dim provider As IFormatProvider = CultureInfo.CreateSpecificCulture("en-US") - If Int32.TryParse(value, number) Then - Console.WriteLine("{0} --> {1}", value, number) - Else - Console.WriteLine("Unable to convert '{0}'", value) - End If - - If Int32.TryParse(value, NumberStyles.Integer Or NumberStyles.AllowThousands, - provider, number) Then - Console.WriteLine("{0} --> {1}", value, number) - Else - Console.WriteLine("Unable to convert '{0}'", value) - End If - End Sub -End Module -' The example displays the following output: -' Unable to convert '1,304' -' 1,304 --> 1304 -``` - -> **警告** -> -> 解析操作は、常に特定のカルチャの書式規則を使用します。 [CultureInfo](xref:System.Globalization.CultureInfo) または [NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) オブジェクトを渡してカルチャを指定しない場合、現在のスレッドに関連付けられているカルチャが使用されます。 - -次の表では、[NumberStyles](xref:System.Globalization.NumberStyles) 列挙体のメンバーを一覧し、そのメンバーが解析操作に与える影響について説明します。 - -NumberStyles 値 | 解析する文字列への影響 ------------------- | --------------------------------- -[NumberStyles.None](xref:System.Globalization.NumberStyles.None) | 数字のみが許可されます。 -[NumberStyles.AllowDecimalPoint](xref:System.Globalization.NumberStyles.AllowDecimalPoint) | 小数点の記号と桁数が許可されます。 整数値の場合、0 のみが小数点の桁数として許可されます。 有効な小数点記号は、[NumberFormatInfo.NumberDecimalSeparator](xref:System.Globalization.NumberFormatInfo.NumberDecimalSeparator) または [NumberFormatInfo.CurrencyDecimalSeparator](xref:System.Globalization.NumberFormatInfo.CurrencyDecimalSeparator) プロパティによって決定されます。 -[NumberStyles.AllowExponent](xref:System.Globalization.NumberStyles.AllowExponent) | "e" または "E" の文字は、指数表記を示すために使用できます。 -[NumberStyles.AllowLeadingWhite](xref:System.Globalization.NumberStyles.AllowLeadingWhite) | 先頭の空白が許可されます。 -[NumberStyles.AllowTrailingWhite](xref:System.Globalization.NumberStyles.AllowTrailingWhite) | 末尾の空白が許可されます。 -[NumberStyles.AllowLeadingSign](xref:System.Globalization.NumberStyles.AllowLeadingSign) | 正または負の符号には、数字の先頭に追加できます。 -[NumberStyles.AllowTrailingSign](xref:System.Globalization.NumberStyles.AllowTrailingSign) | 正または負の符号は、数字の後に続けることができます。 -[NumberStyles.AllowParentheses](xref:System.Globalization.NumberStyles.AllowParentheses) | かっこは、負の符号を示すために使用できます。 -[NumberStyles.AllowThousands](xref:System.Globalization.NumberStyles.AllowThousands) | グループ区切りが許可されます。 グループ区切りは、[NumberFormatInfo.NumberGroupSeparator](xref:System.Globalization.NumberFormatInfo.NumberGroupSeparator) または [NumberFormatInfo.CurrencyGroupSeparator](xref:System.Globalization.NumberFormatInfo.CurrencyGroupSeparator) プロパティによって決定されます。 -[NumberStyles.AllowCurrencySymbol](xref:System.Globalization.NumberStyles.AllowCurrencySymbol) | 通貨記号が許可されます。 通貨記号は、[NumberFormatInfo.CurrencySymbol](xref:System.Globalization.NumberFormatInfo.CurrencySymbol) プロパティによって定義されます。 -[NumberStyles.AllowHexSpecifier](xref:System.Globalization.NumberStyles.AllowHexSpecifier) | 解析する文字列は、16 進数として解釈されます。 これには、16 進数の値の 0 ~ 9、A ~ F、a ~ f を含めることができます。 このフラグは、整数値を解析するためにだけに使用できます。 - -さらに、[NumberStyles](xref:System.Globalization.NumberStyles) 列挙体は、複数の [NumberStyles](xref:System.Globalization.NumberStyles) フラグを含む、次の複合スタイルを指定します。 - -複合 NumberStyles 値 | 数値を含む ----------------------------- | ---------------- -[NumberStyles.Integer](xref:System.Globalization.NumberStyles.Integer) | [NumberStyles.AllowLeadingWhite](xref:System.Globalization.NumberStyles.AllowLeadingWhite)、[NumberStyles.AllowTrailingWhite](xref:System.Globalization.NumberStyles.AllowTrailingWhite)、および [NumberStyles.AllowLeadingSign](xref:System.Globalization.NumberStyles.AllowLeadingSign) のスタイルを含みます。 これは、整数値を解析するために使用される既定のスタイルです。 -[NumberStyles.Number](xref:System.Globalization.NumberStyles.Number) | [NumberStyles.AllowLeadingWhite](xref:System.Globalization.NumberStyles.AllowLeadingWhite)、[NumberStyles.AllowTrailingWhite](xref:System.Globalization.NumberStyles.AllowTrailingWhite)、[NumberStyles.AllowLeadingSign](xref:System.Globalization.NumberStyles.AllowLeadingSign)、[NumberStyles.AllowTrailingSign](xref:System.Globalization.NumberStyles.AllowTrailingSign)、[NumberStyles.AllowDecimalPoint](xref:System.Globalization.NumberStyles.AllowDecimalPoint)、および [NumberStyles.AllowThousands](xref:System.Globalization.NumberStyles.AllowThousands) のスタイルを含みます。 -[NumberStyles.Float](xref:System.Globalization.NumberStyles.Float) | [NumberStyles.AllowLeadingWhite](xref:System.Globalization.NumberStyles.AllowLeadingWhite)、[NumberStyles.AllowTrailingWhite](xref:System.Globalization.NumberStyles.AllowTrailingWhite)、[NumberStyles.AllowLeadingSign](xref:System.Globalization.NumberStyles.AllowLeadingSign)、[NumberStyles.AllowDecimalPoint](xref:System.Globalization.NumberStyles.AllowDecimalPoint)、および [NumberStyles.AllowExponent](xref:System.Globalization.NumberStyles.AllowExponent) のスタイルを含みます。 -[NumberStyles.Currency](xref:System.Globalization.NumberStyles.Currency) | [NumberStyles.AllowExponent](xref:System.Globalization.NumberStyles.AllowExponent) および [NumberStyles.AllowHexSpecifier](xref:System.Globalization.NumberStyles.AllowHexSpecifier) を除く、すべてのスタイルを含みます。 -[NumberStyles.Any](xref:System.Globalization.NumberStyles.Any) | [NumberStyles.AllowHexSpecifier](xref:System.Globalization.NumberStyles.AllowHexSpecifier) を除く、すべてのスタイルを含みます。 -[NumberStyles.HexNumber](xref:System.Globalization.NumberStyles.HexNumber) | [NumberStyles.AllowLeadingWhite](xref:System.Globalization.NumberStyles.AllowLeadingWhite)、[NumberStyles.AllowTrailingWhite](xref:System.Globalization.NumberStyles.AllowTrailingWhite)、および [NumberStyles.AllowHexSpecifier](xref:System.Globalization.NumberStyles.AllowHexSpecifier) のスタイルを含みます。 - -## 解析と Unicode 数字 - -Unicode 標準では、さまざまな書記体系で数字のコード ポイントを定義します。 たとえば、U+0030 ~ U+0039 のコード ポイントは、0 ~ 9 の基本ラテンの数字を示し、U+09E6 ~ U+09EF のコード ポイントは、0 ~ 9 の数字のバングラ語の数字を示し、U+FF10 ~ U+FF19 のコード ポイントは、0 ~ 9 の全角の数字を示します。 ただし、解析メソッドで認識される数字は、U+0030 ~ U+0039 のコード ポイントの基本ラテンの数字 0 ~ 9 のみです。 数値解析メソッドがその他の数字を含む文字列を渡す場合、メソッドは [FormatException](xref:System.FormatException) をスローします。 - -次の例では、[Int32.Parse](xref:System.Int32.Parse(System.String)) メソッドを使用して、異なる書記体系の数字で構成される文字列を解析します。 例の出力に示されているように、基本ラテンの数字を解析する試行は成功しますが、全角、アラビア インド、バングラ語の数字を解析する試行は失敗します。 - -```csharp -using System; - -public class Example -{ - public static void Main() - { - string value; - // Define a string of basic Latin digits 1-5. - value = "\u0031\u0032\u0033\u0034\u0035"; - ParseDigits(value); - - // Define a string of Fullwidth digits 1-5. - value = "\uFF11\uFF12\uFF13\uFF14\uFF15"; - ParseDigits(value); - - // Define a string of Arabic-Indic digits 1-5. - value = "\u0661\u0662\u0663\u0664\u0665"; - ParseDigits(value); - - // Define a string of Bangla digits 1-5. - value = "\u09e7\u09e8\u09e9\u09ea\u09eb"; - ParseDigits(value); - } - - static void ParseDigits(string value) - { - try { - int number = Int32.Parse(value); - Console.WriteLine("'{0}' --> {1}", value, number); - } - catch (FormatException) { - Console.WriteLine("Unable to parse '{0}'.", value); - } - } -} -// The example displays the following output: -// '12345' --> 12345 -// Unable to parse '12345'. -// Unable to parse '١٢٣٤٥'. -// Unable to parse '১২৩৪৫'. -``` - -```vb -Module Example - Public Sub Main() - Dim value As String - ' Define a string of basic Latin digits 1-5. - value = ChrW(&h31) + ChrW(&h32) + ChrW(&h33) + ChrW(&h34) + ChrW(&h35) - ParseDigits(value) - - ' Define a string of Fullwidth digits 1-5. - value = ChrW(&hff11) + ChrW(&hff12) + ChrW(&hff13) + ChrW(&hff14) + ChrW(&hff15) - ParseDigits(value) - - ' Define a string of Arabic-Indic digits 1-5. - value = ChrW(&h661) + ChrW(&h662) + ChrW(&h663) + ChrW(&h664) + ChrW(&h665) - ParseDigits(value) - - ' Define a string of Bangla digits 1-5. - value = ChrW(&h09e7) + ChrW(&h09e8) + ChrW(&h09e9) + ChrW(&h09ea) + ChrW(&h09eb) - ParseDigits(value) - End Sub - - Sub ParseDigits(value As String) - Try - Dim number As Integer = Int32.Parse(value) - Console.WriteLine("'{0}' --> {1}", value, number) - Catch e As FormatException - Console.WriteLine("Unable to parse '{0}'.", value) - End Try - End Sub -End Module -' The example displays the following output: -' '12345' --> 12345 -' Unable to parse '12345'. -' Unable to parse '١٢٣٤٥'. -' Unable to parse '১২৩৪৫'. -``` - -## 関連項目 - -[System.Globalization.NumberStyles](xref:System.Globalization.NumberStyles) - -[.NET での文字列の解析](parsing-strings.md) - -[.NET での型の書式設定](formatting-types.md) - - +title: ".NET Framework における数値文字列の解析 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "解析 (文字列を)、数値文字列" + - "数値文字列" + - "列挙体 [.NET Framework]、解析 (文字列を)" + - "基本型、解析 (文字列を)" +ms.assetid: e39324ee-72e5-42d4-a80d-bf3ee7fc6c59 +caps.latest.revision: 20 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 20 +--- +# .NET Framework における数値文字列の解析 +すべての数値型には、その数値の文字列形式を数値型に変換するための静的な解析メソッドとして、`Parse` および `TryParse` という 2 つのメソッドがあります。 これらのメソッドを使用すると、「[標準の数値書式指定文字列](../../../docs/standard/base-types/standard-numeric-format-strings.md)」および「[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)」で説明する書式指定文字列を使用して作成した文字列を解析できます。 `Parse` メソッドと `TryParse` メソッドは、既定で、整数部のみを含む文字列を整数値に正しく変換できます。 また、整数部と小数部、桁区切り記号、および小数点記号を含む文字列を浮動小数点値に正しく変換できます。 操作が失敗すると、`Parse` メソッドからは例外がスローされ、`TryParse` メソッドからは `false` が返されます。 + +## 解析と書式プロバイダー + 通常、数値の文字列形式はカルチャごとに異なります。 通貨記号、桁区切り記号、および小数点記号すべてなどの数値文字列の要素はカルチャによって異なります。 解析メソッドは、明示的または暗黙的に、それらのカルチャによる違いを認識する書式プロバイダーを使用します。 `Parse` メソッドまたは `TryParse` メソッドの呼び出しで書式プロバイダーが指定されていない場合は、現在のスレッドのカルチャ \( プロパティによって返される オブジェクト\) に関連付けられている書式プロバイダーが使用されます。 + + 書式プロバイダーは の実装で表されます。 このインターフェイスには、 メソッドという単一のメンバーがあります。このメソッドの単一のパラメーターは、書式を指定する型を表す オブジェクトです。 このメソッドが、書式情報を提供するオブジェクトを返します。 .NET Framework では、数値文字列を解析するために、次の 2 つの の実装がサポートされています。 + +- オブジェクト。このオブジェクトの メソッドは、カルチャ固有の書式情報を提供する オブジェクトを返します。 + +- オブジェクト。このオブジェクトの メソッドは、このオブジェクト自体を返します。 + + 次の例では、配列の各文字列を 値に変換しようとしています。 まず、英語 \(米国\) カルチャの規則を反映する書式プロバイダーを使用して文字列の解析を試みます。 この操作で がスローされると、フランス語 \(フランス\) カルチャの規則を反映する書式プロバイダーを使用して文字列の解析を試みます。 + + [!code-csharp[Parsing.Numbers#1](../../../samples/snippets/csharp/VS_Snippets_CLR/parsing.numbers/cs/formatproviders1.cs#1)] + [!code-vb[Parsing.Numbers#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/parsing.numbers/vb/formatproviders1.vb#1)] + +## 解析と NumberStyles の値 + 解析操作で処理できるスタイル要素 \(空白文字、桁区切り記号、小数点記号など\) は、 列挙値で定義されます。 既定では、整数値を表す文字列は、 値を使用して解析されます。このスタイルでは、数字、先頭と末尾の空白文字、および先頭の符号だけを使用できます。 浮動小数点値を表す文字列は、 値と 値の組み合わせで解析されます。この複合スタイルでは、10 進数の数字に加え、先頭と末尾の空白文字、先頭の符号、小数点記号、桁区切り記号、および指数を使用できます。 型のパラメーターを含む `Parse` メソッドまたは `TryParse` メソッドのオーバーロードを呼び出し、 フラグを 1 つ以上設定することで、解析操作を成功させるために文字列で使用できるスタイル要素を制御することができます。 + + たとえば、桁区切り記号を含む文字列を 値に のメソッドを使用して変換できません。 ただし、次の例に示すよう フラグを使用すると、呼び出しが成功します。 + + [!code-csharp[Parsing.Numbers#2](../../../samples/snippets/csharp/VS_Snippets_CLR/parsing.numbers/cs/styles1.cs#2)] + [!code-vb[Parsing.Numbers#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/parsing.numbers/vb/styles1.vb#2)] + +> [!WARNING] +> 解析操作では、常に特定のカルチャの書式指定規則が使用されます。 オブジェクトまたは オブジェクトを渡すことによってカルチャを指定していない場合は、現在のスレッドに関連付けられているカルチャが使用されます。 + + 次の表に、 列挙体のメンバーと、それらによる解析操作への影響を示します。 + +|NumberStyles の値|解析対象の文字列に対する影響| +|---------------------|--------------------| +||数字だけを使用できます。| +||小数点記号と小数を使用できます。 整数値については、小数部の数値として 0 だけを使用できます。 有効な小数点記号は、 プロパティまたは プロパティによって決まります。| +||"e" または "E" という文字を使用して指数表記を示すことができます。 詳細については、「」を参照してください。| +||先頭の空白文字を使用できます。| +||末尾の空白文字を使用できます。| +||数字の前に正または負の符号を使用できます。| +||数字の後に正または負の符号を使用できます。| +||かっこを使用して負の値を示すことができます。| +||桁区切り記号を使用できます。 桁区切り記号文字は、 プロパティまたは プロパティによって決まります。| +||通貨記号を使用できます。 通貨記号は プロパティで定義されます。| +||解析対象の文字列が 16 進数と解釈されます。 16 進数の数字を表す 0 ~ 9、A ~ F、および a ~ f を使用できます。 このフラグは、整数値の解析でのみ使用できます。| + + さらに、 列挙体には、複数の フラグで構成される次の複合スタイルも用意されています。 + +|NumberStyles の複合値|含まれるメンバー| +|-----------------------|--------------| +||、および の各スタイルが含まれます。 整数値の解析には、既定ではこのスタイルが使用されます。| +||、および の各スタイルが含まれます。| +||、および の各スタイルが含まれます。| +|| を除くすべてのスタイルが含まれます。| +|| を除くすべてのスタイルが含まれます。| +||、および の各スタイルが含まれます。| + +## 解析と Unicode の数字 + Unicode 規格では、さまざまな書記体系での数字に対応するコード ポイントが定義されています。 たとえば、U\+0030 ~ U\+0039 のコード ポイントは基本ラテン数字の 0 ~ 9 を表し、U\+09E6 ~ U\+09EF のコード ポイントは Bangla の数字 0 ~ 9 を表し、U\+FF10 から U\+FF19 のコード ポイントはフル幅の数字 0 ~ 9.を表します。 ただし、解析メソッドで認識される数字は、コード ポイントが U\+0030 ~ U\+0039 の基本ラテン数字の 0 ~ 9 だけです。 それ以外の数字を含む文字列を数値解析メソッドに渡した場合、メソッドから がスローされます。 + + メソッドを使用して、複数の書記体系の数字で構成された文字列を解析する例を次に示します。 この例の出力結果が示すように、基本ラテン数字の解析は成功しますが、フル幅、アラブインド言語と Bangla 数字の解析は失敗します。 + + [!code-csharp[Parsing.Numbers#3](../../../samples/snippets/csharp/VS_Snippets_CLR/parsing.numbers/cs/unicode1.cs#3)] + [!code-vb[Parsing.Numbers#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/parsing.numbers/vb/unicode1.vb#3)] + +## 参照 + + [文字列の解析](../../../docs/standard/base-types/parsing-strings.md) + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) \ No newline at end of file diff --git a/docs/standard/base-types/parsing-other.md b/docs/standard/base-types/parsing-other.md index 9d0224ef3b8..b0dcc9488cc 100644 --- a/docs/standard/base-types/parsing-other.md +++ b/docs/standard/base-types/parsing-other.md @@ -1,86 +1,56 @@ --- -title: ".NET でのその他の文字列の解析" -description: ".NET でのその他の文字列の解析" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/29/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 67670b10-3df4-45ea-8908-5ba3f056887c -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: db80cc5f37e814f224ff76b14a906bb4d41064fb -ms.lasthandoff: 03/02/2017 - ---- - -# .NET でのその他の文字列の解析 - -数値および [DateTime](xref:System.DateTime) 文字列だけでなく、[Char](xref:System.Char)、[Boolean](xref:System.Boolean)、および [Enum](xref:System.Enum) 型を表す文字列をデータ型に解析することもできます。 - -## Char - -[Char](xref:System.Char) データ型に関連付けられている静的解析メソッドは、1 つの文字を含む文字列をUnicode 値に変換するのに便利です。 次のコードの例では、文字列を Unicode 文字に解析します。 - -```csharp -string MyString1 = "A"; -char MyChar = Char.Parse(MyString1); -// MyChar now contains a Unicode "A" character. -``` - -```vb -Dim MyString1 As String = "A" -Dim MyChar As Char = Char.Parse(MyString1) -' MyChar now contains a Unicode "A" character. -``` - -## ブール型 - -[Boolean](xref:System.Boolean) データ型には、[Parse](xref:System.Boolean.Parse(System.String)) メソッドが含まれ、`Boolean` 値を示す文字列を実際の `Boolean` 型に変換するために使用できます。 このメソッドは大文字と小文字を区別しません。また、"True" または "False" を含む文字列を正常に解析することができます。 `Boolean` 型に関連付けられる `Parse` メソッドは、空白で囲まれた文字列を解析することもできます。 その他の文字列が渡された場合、[FormatException](xref:System.FormatException) がスローされます。 - -次のコードの例では、`Parse` メソッドを使用して、文字列を `Boolean` 値に変換します。 - -```csharp -string MyString2 = "True"; -bool MyBool = bool.Parse(MyString2); -// MyBool now contains a True Boolean value. -``` - -```vb -Dim MyString1 As String = "A" -Dim MyChar As Char = Char.Parse(MyString1) -' MyChar now contains a Unicode "A" character. -``` - -## 列挙 - -静的 [Parse](xref:System.Enum.Parse(System.Type,System.String)) メソッドを使用して、列挙型を文字列の値に初期化できます。 このメソッドでは、解析している列挙型、解析する文字列、および解析が大文字小文字を区別するかどうかを示す省略可能な `Boolean` フラグを受け入れます。 解析している文字列は、コンマで区切られた複数の値を含めることができます。これは、1 つ以上の空の領域 (空白とも呼ばれます) が前後にある場合があります。 文字列に複数の値がある場合、返されたオブジェクトの値は、ビット演算 OR 演算と組み合わされたすべての指定された値の値です。 - -次の例では、`Parse` メソッドを使用して、文字列形式を列挙値に変換します。 [DayOfWeek](xref:System.DayOfWeek) 列挙体は、文字列から Thursday に初期化されます。 - -```csharp -string MyString3 = "Thursday"; -DayOfWeek MyDays = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), MyString3); -Console.WriteLine(MyDays); -// The result is Thursday. -``` - -```vb -Dim MyString3 As String = "Thursday" -Dim MyDays As DayOfWeek = CType([Enum].Parse(GetType(DayOfWeek), MyString3), DayOfWeek) -Console.WriteLine("{0:G}", MyDays) -' The result is Thursday. -``` - -## 関連項目 - -[.NET での文字列の解析](parsing-strings.md) - -[.NET での型の書式設定](formatting-types.md) - -[.NET での型変換](type-conversion.md) - - +title: ".NET Framework におけるその他の文字列の解析 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Char データ型、解析 (文字列を)" + - "列挙体 [.NET Framework]、解析 (文字列を)" + - "基本型、解析 (文字列を)" + - "解析 (文字列を)、その他の文字列" + - "Boolean データ型、解析 (文字列を)" +ms.assetid: d139bc00-3c4e-4d78-ac9a-5c951b258d28 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# .NET Framework におけるその他の文字列の解析 +数値文字列や 文字列のほかに、 型、 型、および 型を表す文字列もデータ型に変換できます。 + +## Char + **Char** データ型に関連付けられている静的な解析メソッドは、単一の文字を含む文字列を Unicode 値に変換するときに便利です。 文字列を Unicode 文字に変換するコード例を次に示します。 + + [!code-cpp[Conceptual.String.Parse#2](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.parse/cpp/parse.cpp#2)] + [!code-csharp[Conceptual.String.Parse#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.parse/cs/parse.cs#2)] + [!code-vb[Conceptual.String.Parse#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.parse/vb/parse.vb#2)] + +## Boolean + **Boolean** データ型には、Boolean 値を表す文字列を実際の **Boolean** 型に変換するために使用できる **Parse** メソッドがあります。 このメソッドは、大文字と小文字を区別せず、"True" または "False" を含む文字列を正しく解析します。**Boolean** 型に関連付けられた **Parse** メソッドは、空白で囲まれた文字列も解析できます。 それ以外の文字列を渡すと、 がスローされます。 + + **Parse** メソッドを使用して文字列を Boolean 値に変換するコード例を次に示します。 + + [!code-cpp[Conceptual.String.Parse#3](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.parse/cpp/parse.cpp#3)] + [!code-csharp[Conceptual.String.Parse#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.parse/cs/parse.cs#3)] + [!code-vb[Conceptual.String.Parse#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.parse/vb/parse.vb#3)] + +## 列挙型 + 静的な **Parse** メソッドを使用して、列挙型を文字列の値に初期化できます。 このメソッドは、解析する列挙型、解析する文字列、および解析で大文字小文字を区別するかどうかを示すオプションの Boolean フラグを受け入れます。 解析する文字列には、コンマで区切った複数の数値を含めることができます。コンマの前後に 1 つ以上の空白があってもかまいません。 文字列に複数の値が含まれている場合、返されるオブジェクトの値は、指定したすべての値をビットごとの OR 演算で組み合わせた値になります。 + + **Parse** メソッドを使用して、文字列形式を列挙値に変換するコード例を次に示します。 列挙体が、文字列から **Thursday** に初期化されます。 + + [!code-cpp[Conceptual.String.Parse#4](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.parse/cpp/parse.cpp#4)] + [!code-csharp[Conceptual.String.Parse#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.parse/cs/parse.cs#4)] + [!code-vb[Conceptual.String.Parse#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.parse/vb/parse.vb#4)] + +## 参照 + [文字列の解析](../../../docs/standard/base-types/parsing-strings.md) + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + [.NET Framework における型変換](../../../docs/standard/base-types/type-conversion.md) \ No newline at end of file diff --git a/docs/standard/base-types/parsing-strings.md b/docs/standard/base-types/parsing-strings.md index 07d46f6f6fc..c3bdc157737 100644 --- a/docs/standard/base-types/parsing-strings.md +++ b/docs/standard/base-types/parsing-strings.md @@ -1,38 +1,46 @@ --- -title: ".NET での文字列の解析" -description: ".NET での文字列の解析" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/22/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 8103c0a6-61d3-40dd-a3e9-2a32ba6a4c05 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: c741ae793d491f691a355df6ad064b81d609c7e5 -ms.lasthandoff: 03/03/2017 - ---- - -# .NET での文字列の解析 - -解析操作では、.NET の基本データ型を表す文字列をその基本データ型に変換します。 たとえば解析操作は、文字列を浮動小数点数や日付と時刻の値に変換するために使用します。 解析操作を実行するには、`Parse` メソッドがよく使用されます。 解析は書式設定の逆の操作 (基本データ型のその文字列形式への変換を含む) であるため、多くの同じ規則が適用されます。 カルチャに依存する書式情報を指定するために、書式設定で [IFormatProvider](xref:System.IFormatProvider) インターフェイスを実装するオブジェクトを使用するのと同じように、解析でも [IFormatProvider](xref:System.IFormatProvider) インターフェイスを実装するオブジェクトを使用し、文字列形式を解釈する方法を決定します。 詳細については、「[.NET での型の書式設定](formatting-types.md)」をご覧ください。 - -## このセクションの内容 - -[.NET での数値文字列の解析](parsing-numeric.md) - 文字列を .NET の数値文字列に変換する方法について説明します。 - -[.NET での日付と時刻文字列の解析](parsing-datetime.md) - 文字列を .NET の `DateTime` 型に変換する方法について説明します。 - -[.NET でのその他の文字列の解析](parsing-other.md) - 文字列を [Char](xref:System.Char)、[Boolean](xref:System.Boolean)、および [Enum](xref:System.Enum) 型に変換する方法について説明します。 - -[.NET での型の書式設定](formatting-types.md) - 書式指定子および書式プロバイダーなどの基本書式の概念について説明します。 - -[.NET での型変換](type-conversion.md) - 型を変換する方法について説明します。 - -[.NET での基本データ型の操作](index.md) - .NET の基本データ型で実行できる一般的な操作について説明します。 - - +title: ".NET Framework における文字列の解析 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "解析 (文字列を)、文字列の解析の概要" + - "IFormatProvider インターフェイス、解析 (文字列を)" + - "基本型、解析 (文字列を)" + - "Parse メソッド" + - "解析 (文字列を)" +ms.assetid: 5e758b41-db93-456b-8999-99b7304b090d +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# .NET Framework における文字列の解析 +解析操作では、.NET Framework の基本型を表す文字列を .NET Framework 基本型に変換します。 たとえば、解析操作は、文字列を浮動小数点値または日付と時刻の値に変換するために使用されます。 解析操作に使用される最も一般的なメソッドは `Parse` メソッドです。 解析は、基本型をその文字列形式に変換する書式指定の逆の操作であるため、書式指定時の規則の多くが解析にも適用されます。 書式指定で インターフェイスを実装するオブジェクトを使用してカルチャに依存した書式指定情報を提供するのと同じように、解析でも インターフェイスを実装するオブジェクトを使用して、文字列形式の解釈方法が決定されます。 詳細については、「[型の書式設定](../../../docs/standard/base-types/formatting-types.md)」を参照してください。 + +## このセクションの内容 + [数値文字列の解析](../../../docs/standard/base-types/parsing-numeric.md) + 文字列を .NET Framework の数値型に変換する方法について説明します。 + + [日付と時刻文字列の解析](../../../docs/standard/base-types/parsing-datetime.md) + 文字列を .NET Framework の **DateTime** 型に変換する方法について説明します。 + + [その他の文字列の解析](../../../docs/standard/base-types/parsing-other.md) + 文字列を **Char** 型、**Boolean** 型、および **Enum** 型に変換する方法について説明します。 + +## 関連項目 + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + 書式指定子や書式プロバイダーなど、基本的な書式指定の概念について説明します。 + + [.NET Framework における型変換](../../../docs/standard/base-types/type-conversion.md) + 型の変換方法について説明します。 + + [基本型](../../../docs/standard/base-types/index.md) + .NET Framework の基本型に対して実行できる一般的な操作について説明します。 \ No newline at end of file diff --git a/docs/standard/base-types/performing-formatting-operations.md b/docs/standard/base-types/performing-formatting-operations.md index 518f6f9b81f..6880d7811fb 100644 --- a/docs/standard/base-types/performing-formatting-operations.md +++ b/docs/standard/base-types/performing-formatting-operations.md @@ -1,39 +1,46 @@ --- -title: "書式設定操作の実行" -description: "書式設定操作の実行" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/25/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 982f0b64-7e69-4bbe-a688-0117f86a603c -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: e464c4014ce315c88d5c281f6fd0d0299b640716 -ms.lasthandoff: 03/02/2017 - ---- - -# 書式設定操作の実行 - -次のトピックで、特定の書式設定操作を行うための手順を説明します。 - -* [方法: 先行するゼロを数値に埋め込む](pad-number.md) - -* [方法: カスタム数値書式プロバイダーを定義して使用する](define-custom.md) - -* [方法: 特定の日付から曜日を抽出する](extract-day.md) - -* [方法: 日付と時刻の値をラウンドトリップさせる](roundtrip.md) - -* [方法: 日付および時刻の値のミリ秒部分を表示する](display-milliseconds.md) - -* [方法: グレゴリオ暦以外の暦の日付を表示する](display-dates.md) - -## 関連項目 - -[型の書式設定](formatting-types.md) - +title: "書式設定操作の実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "日付の書式設定 [.NET Framework]" + - "書式指定 [.NET Framework], 基本型" + - "書式指定 [.NET Framework], 方法トピック" + - "書式指定 (文字列の) [.NET Framework], 方法トピック" + - "文字列 [.NET Framework], 書式指定" + - "時刻の書式設定 [.NET Framework]" +ms.assetid: 36e7e096-4e6c-4cf2-9ab6-68073026ea0e +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# 書式設定操作の実行 +次の各トピックでは、特定の書式設定操作を行うための手順を説明しています。 + +- [方法: 数値に先行するゼロを埋め込む](../../../docs/standard/base-types/how-to-pad-a-number-with-leading-zeros.md) + +- [方法 : カスタム数値書式プロバイダーを定義して使用する](../../../docs/standard/base-types/how-to-define-and-use-custom-numeric-format-providers.md) + +- [方法 : Web コントロールでの数値のユーザー入力を数値に変換する](../../../docs/standard/base-types/how-to-convert-numeric-user-input-in-web-controls-to-numbers.md) + +- [方法 : 特定の日付から曜日を抽出する](../../../docs/standard/base-types/how-to-extract-the-day-of-the-week-from-a-specific-date.md). + +- [方法 : 日付と時刻の値をラウンドトリップさせる](../../../docs/standard/base-types/how-to-round-trip-date-and-time-values.md) + +- [方法 : ローカライズされた日付\/時刻情報を Web ユーザーに表示する](../../../docs/standard/base-types/how-to-display-localized-date-and-time-information-to-web-users.md) + +- [方法: 日付および時刻の値のミリ秒部分を表示する](../../../docs/standard/base-types/how-to-display-milliseconds-in-date-and-time-values.md) + +- [方法 : グレゴリオ暦以外の暦の日付を表示する](../../../docs/standard/base-types/how-to-display-dates-in-non-gregorian-calendars.md) + +## 参照 + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) \ No newline at end of file diff --git a/docs/standard/base-types/quantifiers-in-regular-expressions.md b/docs/standard/base-types/quantifiers-in-regular-expressions.md new file mode 100644 index 00000000000..18e4d6db8bc --- /dev/null +++ b/docs/standard/base-types/quantifiers-in-regular-expressions.md @@ -0,0 +1,277 @@ +--- +title: "正規表現での量指定子 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "正規表現、量指定子" + - "メタ文字、量指定子" + - "最小一致の量指定子" + - "量指定子 (正規表現)" + - ".NET Framework 正規表現、量指定子" + - "量指定子" + - "最短一致の量指定子" +ms.assetid: 36b81212-6511-49ed-a8f1-ff080415312f +caps.latest.revision: 22 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 22 +--- +# 正規表現での量指定子 +量指定子は、一致と見なすために、入力中に文字、グループ、または文字クラスがいくつ存在しなければならないかを指定します。.NET Framework でサポートされている量指定子を次の表に示します。 + +|最長一致の量指定子|最短一致の量指定子|説明| +|---------------|---------------|--------| +|`*`|`*?`|0 回以上の繰り返しに一致します。| +|`+`|`+?`|1 回以上の繰り返しに一致します。| +|`?`|`??`|0 回または 1 回の繰り返しに一致します。| +|`{` *n* `}`|`{` *n* `}?`|*n* の繰り返しに一致します。| +|`{` *n* `,}`|`{` *n* `,}?`|少なくとも *n* の繰り返しに一致します。| +|`{` *n* `,` *m* `}`|`{` *n* `,` *m* `}?`|*n* から *m* の繰り返しに一致します。| + + 量 `n` および `m` は、整数定数です。 通常、量指定子は最長一致です。最長一致の場合、正規表現エンジンでは、特定のパターンの繰り返しができるだけ多くなるように照合が行われます。 量指定子に `?` 文字を付けると最短一致になります。最短一致の場合は、繰り返しができるだけ少なくなるように照合が行われます。 最長一致の量指定子と最短一致の量指定子の違いの詳細については、このトピックの「[最長一致の量指定子と最短一致の量指定子](#Greedy)」のセクションを参照してください。 + +> [!IMPORTANT] +> 量指定子を入れ子にすると \(正規表現パターン `(a*)*` などの場合\)、入力文字列の文字数に応じて指数関数的に、正規表現エンジンで実行する必要がある比較の回数が増加する可能性があります。 この動作と回避方法の詳細については、「[バックトラッキング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md)」を参照してください。 + +## 正規表現の量指定子 + 以降のセクションでは、.NET Framework の正規表現でサポートされている量指定子について説明します。 + +> [!NOTE] +> 正規表現エンジンでは、正規表現パターンで \*、\+、?、{、および } の各文字を検出すると、[文字クラス](../../../docs/standard/base-types/character-classes-in-regular-expressions.md)に含まれているもの以外は量指定子または量指定子構造の一部として解釈します。 文字クラスの外側でこれらをリテラル文字として解釈するには、文字の前に円記号を付けてエスケープする必要があります。 たとえば、正規表現パターン内の `\*` という文字列は、リテラルのアスタリスク \("\*"\) 文字と解釈されます。 + +### 0 回以上の繰り返しに一致: \* + `*` 量指定子は、直前の要素の 0 回以上の繰り返しに一致します。 これは `{0,}` 指定子と同じです。 `*` は最長一致の量指定子であり、最短一致でこれに対応するのは `*?` です。 + + 以下の例はこの正規表現を示しています。 入力文字列の 9 つの数字のうち、5 つがパターンに一致し、4 つ \(`95`、`929`、`9129`、および `9919`\) が一致しません。 + + [!code-csharp[RegularExpressions.Quantifiers#1](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#1)] + [!code-vb[RegularExpressions.Quantifiers#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#1)] + + 正規表現パターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`91*`|"9" の後に文字 "1" が 0 個以上続くパターンに一致します。| +|`9*`|0 個以上の文字 "9" に一致します。| +|`\b`|ワード境界で終了します。| + +### 1 回以上の繰り返しに一致: \+ + `+` 量指定子は、直前の要素の 1 回以上の繰り返しに一致します。 これは `{1,}` と同じです。 `+` は最長一致の量指定子であり、最短一致でこれに対応するのは `+?` です。 + + たとえば、正規表現 `\ban+\w*?\b` は、文字 `a` で始まり、文字 `n` が 1 回以上繰り返されるすべての単語に一致を試みます。 以下の例はこの正規表現を示しています。 この正規表現は、単語 `an`、`annual`、`announcement`、および `antique` に一致し、`autumn` と `all` では正しく不一致となります。 + + [!code-csharp[RegularExpressions.Quantifiers#2](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#2)] + [!code-vb[RegularExpressions.Quantifiers#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#2)] + + 正規表現パターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`an+`|"a" の後に文字 "n" が 1 個以上続くパターンに一致します。| +|`\w*?`|単語に使用される文字の 0 回以上の繰り返しに一致しますが、できるだけ少ない繰り返しを探します。| +|`\b`|ワード境界で終了します。| + +### 0 回または 1 回の繰り返しに一致: ? + `?` 量指定子は、直前の要素の 0 回または 1 回の繰り返しに一致します。 これは `{0,1}` と同じです。 `?` は最長一致の量指定子であり、最短一致でこれに対応するのは `??` です。 + + たとえば、正規表現 `\ban?\b` は、文字 `a` で始まり、文字 `n` が 0 回または 1 回繰り返されるすべての単語に一致を試みます。 つまり、単語 `a` と `an` に一致を試みます。 以下の例はこの正規表現を示しています。 + + [!code-csharp[RegularExpressions.Quantifiers#3](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#3)] + [!code-vb[RegularExpressions.Quantifiers#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#3)] + + 正規表現パターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`an?`|"a" の後に文字 "n" が 0 個または 1 個続くパターンに一致します。| +|`\b`|ワード境界で終了します。| + +### ちょうど n 回の繰り返しに一致: {n} + `{` *n* `}` の量指定子は *n* が整数である要素の *n* の前の場合に一致します。 `{`*n*`}` は 遅延が等価 `{`*n*`}?`の最長一致の量指定子です。 + + たとえば、正規表現 `\b\d+\,\d{3}\b` は、ワード境界、1 つ以上の数字、3 つの数字、ワード境界の順に続く文字列に一致を試みます。 以下の例はこの正規表現を示しています。 + + [!code-csharp[RegularExpressions.Quantifiers#4](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#4)] + [!code-vb[RegularExpressions.Quantifiers#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#4)] + + 正規表現パターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`\d+`|1 個以上の 10 進数と一致します。| +|`\,`|コンマ文字と一致します。| +|`\d{3}`|3 個の 10 進数と一致します。| +|`\b`|ワード境界で終了します。| + +### n 回以上の繰り返しに一致: {n,} + `{` *n* `,}` の量指定子は、要素の *n* が整数である一つ以上 *n* に先行する時に一致します。 `{`*n*`,}` は 遅延が等価 `{`*n*`}?`の最長一致の量指定子です。 + + たとえば、正規表現 `\b\d{2,}\b\D+` は、ワード境界、2 つ以上の数字、ワード境界、数字以外の文字の順に続く文字列に一致を試みます。 以下の例はこの正規表現を示しています。 この正規表現は、`"7 days"` という語句に一致しません。これは、10 進数字が 1 つしか含まれていないためです。しかし、`"10 weeks and 300 years"` という語句には正常に一致します。 + + [!code-csharp[RegularExpressions.Quantifiers#5](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#5)] + [!code-vb[RegularExpressions.Quantifiers#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#5)] + + 正規表現パターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`\d{2,}`|2 個以上の 10 進数と一致します。| +|`\b`|ワード境界に一致します。| +|`\D+`|1 個以上の 10 進数以外の文字と一致します。| + +### n 回以上 m 回以下の繰り返しに一致: {n,m} + `{` *n* `,` *m* `}` の量指定子は、要素の少なくとも *n* の先行するときに、*n* と *m* が整数である *m* 時間よりも一致しませんが。 `{`*n*`,`*m*`}` は遅延 が等価 `{`*n*`,`*m*`}?`の最長一致の量指定子です。 + + 次の例では、正規表現 `(00\s){2,4}` は、2 つの 0 とスペースが、2 回以上 4 回以下だけ現れる文字列に一致を試みます。 入力文字列の最後の部分には、このパターンが最大の 4 回ではなく 5 回含まれていることに注意してください。 しかし、この部分文字列の最初の部分 \(5 つ目の 0 のペアの前のスペースまで\) だけが、正規表現パターンに一致します。 + + [!code-csharp[RegularExpressions.Quantifiers#6](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#6)] + [!code-vb[RegularExpressions.Quantifiers#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#6)] + +### 0 回以上の繰り返しに一致 \(最短一致\): \*? + `*?` 量指定子は、直前の要素の 0 回以上の繰り返しに一致しますが、できるだけ少ない繰り返しを探します。 これは、最長一致の量指定子 `*` に対応する、最短一致の量指定子です。 + + 次の例では、正規表現 `\b\w*?oo\w*?\b` は、文字列 `oo` を含むすべての単語に一致します。 + + [!code-csharp[RegularExpressions.Quantifiers#7](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#7)] + [!code-vb[RegularExpressions.Quantifiers#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#7)] + + 正規表現パターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`\w*?`|0 個以上の単語に使用される文字と一致しますが、できるだけ少ない繰り返しを探します。| +|`oo`|文字列 "oo" と一致します。| +|`\w*?`|0 個以上の単語に使用される文字と一致しますが、できるだけ少ない繰り返しを探します。| +|`\b`|ワード境界で終了します。| + +### 1 回以上の繰り返しに一致 \(最短一致\): \+? + `+?` 量指定子は、直前の要素の 1 回以上の繰り返しに一致しますが、できるだけ少ない繰り返しを探します。 これは、最長一致の量指定子 `+` に対応する、最短一致の量指定子です。 + + たとえば、正規表現 `\b\w+?\b` は、ワード境界で区切られた 1 つ以上の文字に一致します。 以下の例はこの正規表現を示しています。 + + [!code-csharp[RegularExpressions.Quantifiers#8](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#8)] + [!code-vb[RegularExpressions.Quantifiers#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#8)] + +### 0 回または 1 回の繰り返しに一致 \(最短一致\): ?? + `??` 量指定子は、直前の要素の 0 回または 1 回の繰り返しに一致しますが、できるだけ少ない繰り返しを探します。 これは、最長一致の量指定子 `?` に対応する、最短一致の量指定子です。 + + たとえば、正規表現 `^\s*(System.)??Console.Write(Line)??\(??` は、文字列 "Console.Write" または "Console.WriteLine" に一致します。 この文字列には、"Console" の前に "System." が含まれていてもよく、最後に左かっこがあってもかまいません。 文字列は行の先頭にある必要がありますが、その前に空白があってもかまいません。 以下の例はこの正規表現を示しています。 + + [!code-csharp[RegularExpressions.Quantifiers#9](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#9)] + [!code-vb[RegularExpressions.Quantifiers#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#9)] + + 正規表現パターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`^`|入力ストリームの先頭と一致します。| +|`\s*`|0 個以上の空白文字と一致します。| +|`(System.)??`|文字列 "System." の 0 回または 1 回の繰り返しに一致します。| +|`Console.Write`|文字列 "Console.Write" と一致します。| +|`(Line)??`|文字列 "Line" の 0 回または 1 回の繰り返しに一致します。| +|`\(??`|左かっこの 0 回または 1 回の繰り返しに一致します。| + +### ちょうど n 回の繰り返しに一致 \(最短一致\): {n}? + `{` *n* `}?` の量指定子は *n* が整数である要素の `n` の前の場合に一致します。 これは、最長一致の量指定子 `{`*n*`}+`のこれに相当します。 + + 次の例では、正規表現 `\b(\w{3,}?\.){2}?\w{3,}?\b` を使用して Web サイトのアドレスを識別します。 "www.microsoft.com" と "msdn.microsoft.com" には一致しますが、"mywebsite" や "mycompany.com" には一致しない点に注意してください。 + + [!code-csharp[RegularExpressions.Quantifiers#10](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#10)] + [!code-vb[RegularExpressions.Quantifiers#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#10)] + + 正規表現パターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`(\w{3,}?\.)`|3 個以上の単語に使用される文字の後にドット \(ピリオド\) 文字が続くパターンに一致しますが、できるだけ少ない繰り返しを探します。 これが最初のキャプチャ グループです。| +|`(\w{3,}?\.){2}?`|最初のグループのパターンの 2 回の繰り返しに一致しますが、できるだけ少ない繰り返しを探します。| +|`\b`|ワード境界で照合を終了します。| + +### n 回以上の繰り返しに一致 \(最短一致\): {n,}? + `{` *n* `,}?` の量指定子は、一致します要素の *n* が整数\)、できるだけ少ないと一致します `n` 少なくともに先行する時に。 これは、最長一致の量指定子 `{`*n*`,}`のこれに相当します。 + + 図の前のセクションで `{`*n*`}?` の量指定子の例を参照してください。 この例の正規表現はピリオドが続く少なくとも 3 文字が続く文字列に一致させるために `{`*n*`,}` の量指定子を使用します。 + +### n 回以上 m 回以下の繰り返しに一致 \(最短一致\): {n,m}? + `{` *n* `,` *m* `}?` の量指定子は `n` と *n* と *m* は整数ですが、できるだけ少ない回数\) して直前の要素にも一致します `m` の時間 \(。 これは、最長一致の量指定子 `{`*n*`,`*m*`}`のこれに相当します。 + + 次の例では、正規表現 `\b[A-Z](../../../amples/snippets/visualbasic/VS_Snippets_Remoting/SoapAttributes1/VB/s.vb){1,10}?[.!?]` は、1 個以上 10 個以下の単語を含んだ文に一致します。 これは、18 個の単語が含まれている 1 つの文を除き、入力文字列中のすべての文に一致します。 + + [!code-csharp[RegularExpressions.Quantifiers#12](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers/cs/Quantifiers1.cs#12)] + [!code-vb[RegularExpressions.Quantifiers#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers/vb/Quantifiers1.vb#12)] + + 正規表現パターンは、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から開始します。| +|`[A-Z]`|A から Z の大文字と一致します。| +|`(\w*\s+)`|0 個以上の単語に使用される文字の後に空白文字が 1 個以上続くパターンに一致します。 これが最初のキャプチャ グループです。| +|`{1,10}?`|最初のパターンの 1 回以上 10 回以下の繰り返しに一致しますが、できるだけ少ない繰り返しを探します。| +|`[.!?]`|区切り文字 "."、"\!"、"?" のいずれか 1 文字と一致します。| + + +## 最長一致の量指定子と最短一致の量指定子 + いくつかの量指定子には以下の 2 つのバージョンがあります。 + +- 最長一致バージョン + + 最長一致の量指定子は、要素をできるだけ多く一致させようとします。 + +- 最短一致バージョン + + 最短一致の量指定子は、要素をできるだけ少なく一致させようとします。 最長一致の量指定子に `?` を追加するだけで最短一致の量指定子にすることができます。 + + クレジット カード番号などの数値の列から最後の 4 つの数字を取り出す、単純な正規表現について考えてみます。 最長一致の量指定子 `*` を使用するバージョンの正規表現は、`\b.*([0-9]{4})\b` です。 しかし、2 つの数値が含まれている文字列の場合、この正規表現は、以下の例に示すように 2 番目の数値の最後の 4 つの数字だけに一致します。 + + [!code-csharp[RegularExpressions.Quantifiers.Greedy#1](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers.Greedy/cs/Greedy.cs#1)] + [!code-vb[RegularExpressions.Quantifiers.Greedy#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers.Greedy/vb/Greedy.vb#1)] + + この正規表現は最初の数値の一致に失敗します。量指定子 `*` では、直前の要素をできるだけ頻繁に文字列全体に一致させようとし、文字列の最後まで一致と見なされるためです。 + + これは期待した動作ではありません。 この場合は、以下の例に示すように、代わりに最短一致の `*?` `` 量指定子を使用すると、両方の数値から数字を抽出できます。 + + [!code-csharp[RegularExpressions.Quantifiers.Greedy#2](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Quantifiers.Greedy/cs/Greedy.cs#2)] + [!code-vb[RegularExpressions.Quantifiers.Greedy#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Quantifiers.Greedy/vb/Greedy.vb#2)] + + 多くの場合、最長一致と最短一致の量指定子を使用した正規表現は、同じ一致結果を返します。 異なる結果を返すことが最も多いのは、どの文字にも一致するメタ文字のワイルドカード \(`.`\) を使用した場合です。 + +## 量指定子と空一致 + キャプチャの最小数は量指定子 `*`、`+`と `{`*n*`,`*m*`}` とこれに対応するメソッドは空一致の後には繰り返されません。 この規則により、可能なグループ キャプチャの最大回数が無限またはほぼ無限のときに、量指定子が空の部分式一致の無限ループに入ることを回避できます。 + + たとえば、次のコードは、0 個以上の文字 "a" と 0 回以上一致する正規表現パターン `(a?)*` を指定して メソッドを呼び出した結果を表示します。 単一のキャプチャ グループによって各 "a" および がキャプチャされますが、2 番目の空一致はないことに注意してください。これは、最初の空一致により量指定子が繰り返しを停止するためです。 + + [!code-csharp[RegularExpressions.Quantifiers.EmptyMatch#1](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.quantifiers.emptymatch/cs/emptymatch1.cs#1)] + [!code-vb[RegularExpressions.Quantifiers.EmptyMatch#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.quantifiers.emptymatch/vb/emptymatch1.vb#1)] + + キャプチャの最大回数および最小回数を定義するキャプチャ グループとキャプチャの固定回数を定義するキャプチャ グループとの実際の違いを確認するために、正規表現パターンの `(a\1|(?(1)\1)){0,2}` と `(a\1|(?(1)\1)){2}` について検討します。 どちらの正規表現も、次の表に示すように定義される単一のキャプチャ グループで構成されています。 + +|パターン|説明| +|----------|--------| +|`(a\1`|"a" と最初のキャプチャ グループの値に一致します。| +|`|(?(1)`|または、最初のキャプチャ グループが定義されているかどうかをテストします\(`(?(1)` 構成要素ではキャプチャ グループは定義されないことに注意してください\)。| +|`\1))`|最初のキャプチャ グループが存在する場合、その値と一致します。 グループが存在しない場合、そのグループは と一致します。| + + 最初の正規表現では、0 ~ 2 回、このパターンとの照合が行われます。2 番目の正規表現では、厳密に 2 回です。 最初のパターンは の最初のキャプチャでキャプチャの最小回数に達するため、`a\1` との照合は繰り返されません。`{0,2}` 量指定子では、最後の反復処理の空一致だけが許可されます。 一方、2 番目の正規表現では、2 回目の `a\1` が評価されるため、"a" に一致します。反復の最小回数は 2 で、空一致の後でエンジンが繰り返さなければならない回数になります。 + + [!code-csharp[RegularExpressions.Quantifiers.EmptyMatch#2](../../../samples/snippets/csharp/VS_Snippets_CLR/regularexpressions.quantifiers.emptymatch/cs/emptymatch4.cs#2)] + [!code-vb[RegularExpressions.Quantifiers.EmptyMatch#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/regularexpressions.quantifiers.emptymatch/vb/emptymatch4.vb#2)] + +## 参照 + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) + [バックトラッキング](../../../docs/standard/base-types/backtracking-in-regular-expressions.md) \ No newline at end of file diff --git a/docs/standard/base-types/regular-expression-example-changing-date-formats.md b/docs/standard/base-types/regular-expression-example-changing-date-formats.md new file mode 100644 index 00000000000..e959c10aac3 --- /dev/null +++ b/docs/standard/base-types/regular-expression-example-changing-date-formats.md @@ -0,0 +1,62 @@ +--- +title: "正規表現の例: 日付形式の変更 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "検索 (正規表現を使用した)、例" + - "テキストの解析 (正規表現を使用した)、例" + - "正規表現、例" + - ".NET Framework 正規表現、例" + - "正規表現 [.NET Framework]、例" + - "パターン マッチング (正規表現を使用した)、例" +ms.assetid: 5fcc75a5-09d7-45ae-a4c0-9ad6085ac83d +caps.latest.revision: 19 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 19 +--- +# 正規表現の例: 日付形式の変更 +次のコード例はフォーム *dd*\-*mm*\-*yy*の日付でフォーム *mm*\/*dd*\/*yy* の日付を置き換えるに のメソッドを使用します。 + +## 例 + [!code-csharp[RegularExpressions.Examples.ChangeDateFormats#1](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Examples.ChangeDateFormats/cs/Example_ChangeDateFormats1.cs#1)] + [!code-vb[RegularExpressions.Examples.ChangeDateFormats#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Examples.ChangeDateFormats/vb/Example_ChangeDateFormats1.vb#1)] + + 次のコードは、アプリケーションの中で `MDYToDMY` メソッドを呼び出す方法を示しています。 + + [!code-csharp[RegularExpressions.Examples.ChangeDateFormats#2](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Examples.ChangeDateFormats/cs/Example_ChangeDateFormats1.cs#2)] + [!code-vb[RegularExpressions.Examples.ChangeDateFormats#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Examples.ChangeDateFormats/vb/Example_ChangeDateFormats1.vb#2)] + +## コメント + 正規表現パターン `\b(?\d{1,2})/(?\d{1,2})/(?\d{2,4})\b` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`(?\d{1,2})`|1 桁または 2 桁の 10 進数と一致します。 これが `month` キャプチャ グループです。| +|`/`|スラッシュ記号に一致します。| +|`(?\d{1,2})`|1 桁または 2 桁の 10 進数と一致します。 これが `day` キャプチャ グループです。| +|`/`|スラッシュ記号に一致します。| +|`(?\d{2,4})`|2 ~ 4 個の 10 進数と一致します。 これが `year` キャプチャ グループです。| +|`\b`|ワード境界で照合を終了します。| + + パターン `${day}-${month}-${year}` による置換文字列の定義を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`$(day)`|`day` キャプチャ グループによってキャプチャされた文字列を追加します。| +|`-`|ハイフンを追加します。| +|`$(month)`|`month` キャプチャ グループによってキャプチャされた文字列を追加します。| +|`-`|ハイフンを追加します。| +|`$(year)`|`year` キャプチャ グループによってキャプチャされた文字列を追加します。| + +## 参照 + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) \ No newline at end of file diff --git a/docs/standard/base-types/regular-expression-example-scanning-for-hrefs.md b/docs/standard/base-types/regular-expression-example-scanning-for-hrefs.md new file mode 100644 index 00000000000..548a4e0dcff --- /dev/null +++ b/docs/standard/base-types/regular-expression-example-scanning-for-hrefs.md @@ -0,0 +1,61 @@ +--- +title: "正規表現の例: HREFS のスキャン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "検索 (正規表現を使用した)、例" + - "解析 (テキストを正規表現で)、例" + - "正規表現、例" + - ".NET Framework 正規表現、例" + - "正規表現 [.NET Framework]、例" + - "パターン一致 (正規表現を使用した)、例" +ms.assetid: fae2c15b-7adf-4b15-b118-58eb3906994f +caps.latest.revision: 24 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 24 +--- +# 正規表現の例: HREFS のスキャン +次の例では、入力文字列を検索して、表示されるすべての href\=」…」 文字列の値と場所。 + +## Regex オブジェクト + `DumpHRefs` メソッドは、ユーザー コードから複数回呼び出される可能性があるため、`static` \(Visual Basic では `Shared`\) メソッドを使用します。 これにより、正規表現エンジンが正規表現をキャッシュできるようになり、メソッドを呼び出すたびに新しい オブジェクトをインスタンス化するオーバーヘッドを回避できます。 オブジェクトは、文字列内のすべての一致を反復処理するために使用されます。 + + [!code-csharp[RegularExpressions.Examples.HREF#1](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Examples.HREF/cs/example.cs#1)] + [!code-vb[RegularExpressions.Examples.HREF#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Examples.HREF/vb/example.vb#1)] + + `DumpHRefs` メソッドを呼び出す例を次に示します。 + + [!code-csharp[RegularExpressions.Examples.HREF#2](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Examples.HREF/cs/example.cs#2)] + [!code-vb[RegularExpressions.Examples.HREF#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Examples.HREF/vb/example.vb#2)] + + 正規表現パターン `href\s*=\s*(?:["'](?<1>[^"']*)["']|(?<1>\S+))` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`href`|リテラル文字列 "href" と一致します。 一致では、大文字と小文字を区別しません。| +|`\s*`|0 個以上の空白文字と一致します。| +|`=`|等号と一致します。| +|`\s*`|0 個以上の空白文字と一致します。| +|`(?:["'](?<1>[^"']*)"|(?<1>\S+))`|次のいずれかと一致し、結果をキャプチャされたグループに代入しません。

- 引用符または二重引用符またはアポストロフィ以外の任意の文字のゼロ以上の後に続くアポストロフィ引用符またはアポストロフィしています。 このパターンには `1` という名前のグループが含まれています。
- 1 つ以上の空白以外の文字。 このパターンには `1` という名前のグループが含まれています。| +|`(?<1>[^"']*)`|引用符以外の文字または `1`という名前のキャプチャ グループに代入アポストロフィのゼロ以上の繰り返しを検索します。| +|`"(?<1>\S+)`|空白以外の 1 個以上の文字を、`1` という名前のキャプチャ グループに代入します。| + +## Match 結果クラス + 検索結果は クラス内に格納されます。これにより、検索処理によって抽出されたすべての部分文字列にアクセスできます。 このクラスは、検索対象となった文字列や、使用された正規表現も記憶しているため、最後に検索が実行された位置から別の検索を実行するときに、 メソッドを呼び出すことができます。 + +## 明示的に指定したキャプチャ + 従来の正規表現では、キャプチャするためのかっこに自動的に連番が割り当てられます。 その結果、2 つの問題が発生します。 1 つ目の問題は、かっこのペアの挿入や削除により、ある正規表現が修正されると、新しい番号を反映するために、番号付きのキャプチャを参照するコードをすべて書き直す必要があることです。 2 つ目の問題は、ある文字列の検索用に 2 つの代替表現を用意するにあたって、さまざまなかっこを使用することがあるため、実際にどちらの代替表現から結果が返されたのかを判断するのが難しくなる可能性があることです。 + + これらの問題に対処するために、 クラスは指定されたスロットに一致文字列をキャプチャするための構文 `(?…)` をサポートしています。このスロットには、文字列または整数の名前を付けることができます。整数の名前を付けた方が、よりすばやく再呼び出しできます。 この方法により、同一文字列に対する代替表現に一致した文字列をすべて同じスロットにキャプチャできます。 競合が発生する場合は、スロットに最後にキャプチャされた一致文字列が、正当な一致文字列と見なされます。\(しかし、1 つのスロットに対して複数の一致対象の完全なリストを使用できます。 詳細については、 コレクションを参照してください。\) + +## 参照 + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) \ No newline at end of file diff --git a/docs/standard/base-types/regular-expression-examples.md b/docs/standard/base-types/regular-expression-examples.md new file mode 100644 index 00000000000..6e2b0cf56c7 --- /dev/null +++ b/docs/standard/base-types/regular-expression-examples.md @@ -0,0 +1,60 @@ +--- +title: "正規表現の例 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "正規表現 [.NET Framework]、例" + - "正規表現 [.NET Framework]" + - "文字列 [.NET Framework]、正規表現" +ms.assetid: e9fd53f2-ed56-4b09-b2ea-e9bc9d65e6d6 +caps.latest.revision: 17 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 17 +--- +# 正規表現の例 +このセクションでは、一般的なアプリケーションで正規表現を使用するときのコード例を示します。 + +> [!NOTE] +> 名前空間には、HTML、XML、および ASP.NET ドキュメントの文字列を解析するための定義済み正規表現パターンを実装する多数の正規表現オブジェクトがあります。 たとえば、 クラスは文字列内の開始タグを識別し、 クラスは文字列内の ASP.NET コメントを識別します。 + +## このセクションの内容 + [例 : HREFS のスキャン](../../../docs/standard/base-types/regular-expression-example-scanning-for-hrefs.md) + 入力文字列を検索して、文字列内のすべての href\="..." の値と位置を出力する例を示します。 + + [例 : 日付形式の変更](../../../docs/standard/base-types/regular-expression-example-changing-date-formats.md) + mm\/dd\/yy 形式の日付を dd\-mm\-yy 形式の日付に置換する例を示します。 + + [方法 : URL からプロトコルとポート番号を抽出する](../../../docs/standard/base-types/how-to-extract-a-protocol-and-port-number-from-a-url.md) + URL を含む文字列からプロトコルとポート番号を抽出する例を示します。 たとえば、"http:\/\/www.contoso.com:8080\/letters\/readme.html" の場合は "http:8080" が返されます。 + + [方法 : 文字列から無効な文字を取り除く](../../../docs/standard/base-types/how-to-strip-invalid-characters-from-a-string.md) + 文字列から無効な非英数文字を取り除く例を示します。 + + [方法 : 文字列が有効な電子メール形式であるかどうかを検証する](../../../docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md) + 文字列が有効な電子メール形式であることを確認するために使用できる例を示します。 + +## 関連項目 + + .NET Framework **System.Text.RegularExpressions** 名前空間のクラス ライブラリ リファレンス情報が用意されています。 + +## 関連項目 + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) + 正規表現のプログラミング言語的な面の概要について説明します。 + + [正規表現のオブジェクト モデル](../../../docs/standard/base-types/the-regular-expression-object-model.md) + `System.Text.RegularExpression` 名前空間に含まれている正規表現クラスについて説明し、その使用方法の例を示します。 + + [正規表現の動作の詳細](../../../docs/standard/base-types/details-of-regular-expression-behavior.md) + .NET Framework 正規表現の機能と動作について説明します。 + + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) + 正規表現を定義するために使う一連の文字、演算子、および構成体について説明します。 \ No newline at end of file diff --git a/docs/standard/base-types/regular-expression-language-quick-reference.md b/docs/standard/base-types/regular-expression-language-quick-reference.md new file mode 100644 index 00000000000..1652bc97bc9 --- /dev/null +++ b/docs/standard/base-types/regular-expression-language-quick-reference.md @@ -0,0 +1,230 @@ +--- +title: "正規表現言語 - クイック リファレンス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +f1_keywords: + - "VS.RegularExpressionBuilder" +helpviewer_keywords: + - ".NET Framework 正規表現, 言語要素" + - "カンニング ペーパー" + - "解析 (正規表現を使用したテキストを), 言語要素" + - "パターン一致 (正規表現を使用した), 言語要素" + - "regex カンニング ペーパー" + - "正規表現 [.NET Framework]" + - "正規表現, 言語要素" + - "検索 (正規表現を使用した), 言語要素" +ms.assetid: 930653a6-95d2-4697-9d5a-52d11bb6fd4c +caps.latest.revision: 56 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 56 +--- +# 正規表現言語 - クイック リファレンス + 正規表現とは、入力テキスト内で正規表現エンジンによる照合が試行されるパターンです。 パターンは、1 個以上の文字リテラル、演算子、または構成体で構成されます。 簡単な紹介については、「[.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md)」を参照してください。 + + このクイック リファレンスの各セクションでは、正規表現の定義に使用できる特定カテゴリの文字、演算子、および構成体を一覧表示します。 + + [文字のエスケープ](#character_escapes) + [文字クラス](#character_classes) + [アンカー](#atomic_zerowidth_assertions) + [グループ化構成体](#grouping_constructs) + [量指定子](#quantifiers) + [前方参照構成体](#backreference_constructs) + [代替構成体](#alternation_constructs) + [置換](#substitutions) + [正規表現のオプション](#options) + [その他の構成体](#miscellaneous_constructs) + + また、ダウンロードして印刷し、簡単に参照できるように、この情報を 2 種類の形式で提供します + + [Word \(.docx\) 形式でダウンロード](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.docx) +[PDF \(.pdf\) 形式でダウンロード](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.pdf) + + +## 文字のエスケープ + 正規表現内の円記号 \(\\\) は、直後の文字が特殊文字 \(次の表を参照\) であるか、文字どおりに解釈する必要があることを示します。 詳細については、「[文字のエスケープ](../../../docs/standard/base-types/character-escapes-in-regular-expressions.md)」を参照してください。 + +|エスケープ文字|説明|パターン|一致件数| +|-------------|--------|----------|----------| +|`\a`|ビープ音文字の \\u0007 と一致します。|`\a`|"Error\!" \+ '\\u0007' の "\\u0007"| +|`\b`|文字クラスでバックスペースの \\u0008 と一致します。|`[\b]{3,}`|"\\b\\b\\b\\b" の "\\b\\b\\b\\b"| +|`\t`|タブの \\u0009 と一致します。|`(\w+)\t`|"item1\\titem2\\t" の "item1\\t"、"item2\\t"| +|`\r`|キャリッジ リターンの \\u000D と一致します。 \(`\r` は改行文字 `\n` とは異なります。\)|`\r\n(\w+)`|"\\r\\nThese are\\ntwo lines." の "\\r\\nThese"| +|`\v`|垂直タブの \\u000B と一致します。|`[\v]{2,}`|"\\v\\v\\v" の "\\v\\v\\v"| +|`\f`|フォーム フィードの \\u000C と一致します。|`[\f]{2,}`|"\\f\\f\\f" の "\\f\\f\\f"| +|`\n`|改行文字の \\u000A と一致します。|`\r\n(\w+)`|"\\r\\nThese are\\ntwo lines." の "\\r\\nThese"| +|`\e`|エスケープ文字の \\u001B と一致します。|`\e`|"\\x001B" の "\\x001B"| +|`\` *nnn*|8 進数表現で文字を指定します \(*nnn* は 2 桁または 3 桁で構成されます\)。|`\w\040\w`|"a bc d" の

"a b"、"c d"| +|`\x` *nn*|16 進数表現で文字を指定します \(*nn* は 2 桁で構成されます\)。|`\w\x20\w`|"a bc d" の

"a b"、"c d"| +|`\c` *X*

`\c` *x*|*X* または *x* で指定された ASCII の制御文字と一致します。*X* または *x* は制御文字です。|`\cC`|"\\x0003" \(Ctrl\-C\) の "\\x0003"| +|`\u` *nnnn*|16 進数形式で表される Unicode 文字 \(*nnnn* で表される 4 桁の数字\) と一致します。|`\w\u0020\w`|"a bc d" の

"a b"、"c d"| +|`\`|このトピック内の表に示されているエスケープ文字として認識されない文字が後ろに付いている場合は、その文字と一致します。 たとえば、`\*` は `\x2A` と同じであり、`\.` は `\x2E` と同じです。 これを使用すると、正規表現エンジンによって言語要素 \(\* や ? など\) と文字リテラル \( や で表されたもの\) のあいまいさが解消されます。|`\d+[\+-x\*]\d+`|"\(2\+2\) \* 3\*9" の "2\+2" および "3\*9"| + + [ページのトップへ](#top) + + +## 文字クラス + 文字クラスは、文字セットのいずれかと一致します。 文字クラスに含まれる言語要素を次の表に示します。 詳細については、「[文字クラス](../../../docs/standard/base-types/character-classes-in-regular-expressions.md)」を参照してください。 + +|文字クラス|説明|パターン|一致件数| +|-----------|--------|----------|----------| +|`[` *character\_group* `]`|*character\_group* 内の任意の 1 文字と一致します。 既定では、大文字と小文字が区別されます。|`[ae]`|"gray" の "a"

"lane" の "a"、"e"| +|`[^` *character\_group* `]`|否定: *character\_group* 内にない任意の 1 文字と一致します。 既定では、*character\_group* の文字について、大文字と小文字が区別されます。|`[^aei]`|"reign" の "r"、"g"、"n"| +|`[` *先頭* `-` *last* `]`|文字範囲: *first* から *last* までの範囲にある任意の 1 文字と一致します。|`[A-Z]`|"AB123" の "A"、"B"| +|`.`|ワイルドカード: \\n を除く任意の 1 文字と一致します。

リテラルのピリオド文字 \(. または `\u002E`\) と一致させるには、この文字の前にエスケープ文字 \(`\.`\) を指定します。|`a.e`|"nave" の "ave"

"water" の "ate"| +|`\p{` *name* `}`|*name* で指定された名前付きブロックまたは Unicode 一般カテゴリ内の任意の 1 文字と一致します。|`\p{Lu}`

`\p{IsCyrillic}`|"City Lights" の "C"、"L"

"ДЖem" の "Д"、"Ж"| +|`\P{` *name* `}`|*name* で指定された名前付きブロックまたは Unicode 一般カテゴリにない任意の 1 文字と一致します。|`\P{Lu}`

`\P{IsCyrillic}`|"City" の "i"、"t"、"y"

"ДЖem" の "e"、"m"| +|`\w`|単語に使用される任意の文字と一致します。|`\w`|"ID A1.3" の "I"、"D"、"A"、"1"、"3"| +|`\W`|単語に使用される文字以外の任意の文字と一致します。|`\W`|"ID A1.3" の " "、"."| +|`\s`|空白文字と一致します。|`\w\s`|"ID A1.3" の "D "| +|`\S`|空白以外の文字と一致します。|`\s\S`|"int \_\_ctr" の " \_"| +|`\d`|10 進数字と一致します。|`\d`|"4 \= IV" の "4"| +|`\D`|10 進数以外の任意の文字と一致します。|`\D`|"4 \= IV" の " "、"\="、" "、"I"、"V"| + + [ページのトップへ](#top) + + +## アンカー + アンカー \(アトミック ゼロ幅アサーション\) を使用すると、文字列内での現在位置によって一致するかどうかが決まります。しかし、エンジンで後方の文字列が読み込まれたり、複数の文字と一致したりすることはありません。 アンカーであるメタ文字を次の表に示します。 詳細については、「[アンカー](../../../docs/standard/base-types/anchors-in-regular-expressions.md)」を参照してください。 + +|アサーション|説明|パターン|一致件数| +|------------|--------|----------|----------| +|`^`|文字列または行の先頭で一致する必要があります。|`^\d{3}`|"901"

\("901\-333\-" の\)| +|`$`|文字列の末尾で一致するか、行または文字列の末尾にある `\n` の前で一致する必要があります。|`-\d{3}$`|"\-333"

\("\-901\-333" の\)| +|`\A`|文字列の先頭で一致する必要があります。|`\A\d{3}`|"901"

\("901\-333\-" の\)| +|`\Z`|文字列の末尾で一致するか、文字列の末尾にある `\n` の前で一致する必要があります。|`-\d{3}\Z`|"\-333"

\("\-901\-333" の\)| +|`\z`|文字列の末尾で一致する必要があります。|`-\d{3}\z`|"\-333"

\("\-901\-333" の\)| +|`\G`|前回の一致が終了した位置で一致する必要があります。|`\G\(\d\)`|"\(1\)\(3\)\(5\)\[7\]\(9\)" の "\(1\)"、"\(3\)"、"\(5\)"| +|`\b`|`\w` \(英数字\) と `\W` \(英数字以外\) 文字の境界位置で一致する必要があります。|`\b\w+\s\w+\b`|"them theme them them" の "them theme"| +|`\B`|`\b` 境界以外で一致する必要があります。|`\Bend\w*\b`|"end sends endure lender" の "ends"、"ender"| + + [ページのトップへ](#top) + + +## グループ化構成体 + グループ化構成体は、正規表現の部分式を表し、通常は入力文字列の部分文字列をキャプチャします。 グループ化構成体に含まれる言語要素を次の表に示します。 詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + +|グループ化構成体|説明|パターン|一致件数| +|--------------|--------|----------|----------| +|`(` *subexpression* `)`|一致した部分式をキャプチャして、1 から始まる序数を代入します。|`(\w)\1`|"deep" の "ee"| +|`(?<` *name* `>` *subexpression*`)`|一致した部分式を名前付きグループにキャプチャします。|`(?\w)\k`|"deep" の "ee"| +|`(?<` *name1* `-` *name2* `>` *subexpression*`)`|グループ定義の均等化を定義します。 詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」の「グループ定義の均等化」を参照してください。|`(((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$`|"3\+2^\(\(1\-3\)\*\(3\-1\)\)" の "\(\(1\-3\)\*\(3\-1\)\)"| +|`(?:` *subexpression*`)`|非キャプチャ グループを定義します。|`Write(?:Line)?`|"Console.WriteLine\(\)" の "WriteLine"

"Console.Write\(value\)" の "Write"| +|`(?imnsx-imnsx:` *subexpression*`)`|指定したオプションを *subexpression* に適用するか、または無効にします。 詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」を参照してください。|`A\d{2}(?i:\w+)\b`|"A12xl A12XL a12xl" の "A12xl"、"A12XL"| +|`(?=` *subexpression*`)`|ゼロ幅の肯定先読みアサーションです。|`\w+(?=\.)`|"He is. The dog ran. The sun is out." の "is"、"ran"、および "out"| +|`(?!` *subexpression*`)`|ゼロ幅の否定先読みアサーションです。|`\b(?!un)\w+\b`|"unsure sure unity used" の "sure"、"used"| +|`(?<=` *subexpression*`)`|ゼロ幅の正の後読みアサーションです。|`(?<=19)\d{2}\b`|"1851 1999 1950 1905 2003" の "99"、"50"、"05"| +|`(?` *subexpression*`)`|非バックトラッキング \("最長"\) 部分式です。|`[13579](?>A+B+)`|"1ABB 3ABBC 5AB 5AC" の "1ABB"、"3ABB"、および "5AB"| + + [ページのトップへ](#top) + + +## 限定子 + 量指定子は、一致するために、入力文字列中に直前の要素 \(文字、グループ、または文字クラス\) がいくつ存在しなければならないかを指定します。 量指定子に含まれる言語要素を次の表に示します。 詳細については、「[限定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md)」を参照してください。 + +|量指定子|説明|パターン|一致件数| +|----------|--------|----------|----------| +|`*`|直前の要素と 0 回以上一致します。|`\d*\.\d`|".0"、"19.9"、"219.9"| +|`+`|直前の要素と 1 回以上一致します。|`"be+"`|"been" の "bee"、"bent" の "be"| +|`?`|直前の要素と 0 回または 1 回一致します。|`"rai?n"`|"ran"、"rain"| +|`{` *n* `}`|直前の要素とちょうど *n* 回一致します。|`",\d{3}"`|"1,043.6" の ",043"、"9,876,543,210" の ",876"、",543"、および ",210"| +|`{` *n* `,}`|直前の要素と *n* 回以上一致します。|`"\d{2,}"`|"166"、"29"、"1930"| +|`{` *n* `,` *分* `}`|直前の要素と *n* 回以上 *m* 回以下で一致します。|`"\d{3,5}"`|"166"、"17668"

"193024" の "19302"| +|`*?`|直前の要素と 0 回以上 \(ただし、できるだけ少ない回数\) 一致します。|`\d*?\.\d`|".0"、"19.9"、"219.9"| +|`+?`|直前の要素と 1 回以上 \(ただし、できるだけ少ない回数\) 一致します。|`"be+?"`|"been" の "be"、"bent" の "be"| +|`??`|直前の要素と 0 回または 1 回 \(ただし、できるだけ少ない回数\) 一致します。|`"rai??n"`|"ran"、"rain"| +|`{` *n* `}?`|直前の要素とちょうど *n* 回一致します。|`",\d{3}?"`|"1,043.6" の ",043"、"9,876,543,210" の ",876"、",543"、および ",210"| +|`{` *n* `,}?`|直前の要素と *n* 回以上 \(ただし、できるだけ少ない回数\) 一致します。|`"\d{2,}?"`|"166"、"29"、"1930"| +|`{` *n* `,` *分* `}?`|直前の要素と *n* 回以上 *m* 回以下 \(ただし、できるだけ少ない回数\) 一致します。|`"\d{3,5}?"`|"166"、"17668"

"193024" の "193"、"024"| + + [ページのトップへ](#top) + + +## 前方参照構成体 + 前方参照を使用すると、以前に一致した部分式を、同じ正規表現内で引き続き識別できます。 .NET Framework の正規表現でサポートされている前方参照構成体を、次の表に示します。 詳細については、「[前方参照構成体](../../../docs/standard/base-types/backreference-constructs-in-regular-expressions.md)」を参照してください。 + +|前方参照構成体|説明|パターン|一致件数| +|-------------|--------|----------|----------| +|`\` *number*|前方参照。 番号付き部分式の値に一致します。|`(\w)\1`|"seek" の "ee"| +|`\k<` *name* `>`|名前付き前方参照。 名前付きの式の値に一致します。|`(?\w)\k`|"seek" の "ee"| + + [ページのトップへ](#top) + + +## 代替構成体 + 代替構成体は、OR 一致を有効にするように正規表現を変更します。 これらの構成体に含まれる言語要素を次の表に示します。 詳細については、「[代替構成体](../../../docs/standard/base-types/alternation-constructs-in-regular-expressions.md)」を参照してください。 + +|代替構成体|説明|パターン|一致件数| +|-----------|--------|----------|----------| +|`|`|縦棒 \(|\) 文字で区切られた要素のいずれかと一致します。|`th(e|is|at)`|"this is the day." の "the"、"this "| +|`(?(` *式* `)` *可* `|` *no* `)`|*expression* で指定される正規表現パターンが一致する場合は *yes* と一致します。それ以外の場合は、*no* \(省略可能\) 部分と一致します。*expression* はゼロ幅アサーションとして解釈されます。|`(?(A)A\d{2}\b|\b\d{3}\b)`|"A10 C103 910" の "A10"、"910"| +|`(?(` *name* `)` *可* `|` *no* `)`|名前付きまたは番号付きのキャプチャ グループ *name* に一致が見つかった場合は *yes* と一致します。それ以外の場合は *no* \(省略可能\) と一致します。|`(?")?(?(quoted).+?"|\S+\s)`|"Dogs.jpg "Yiska playing.jpg"" の Dogs.jpg、"Yiska playing.jpg"| + + [ページのトップへ](#top) + + +## 置換 + 置換は、置換パターンでサポートされる正規表現言語要素です。 詳細については、「[置換](../../../docs/standard/base-types/substitutions-in-regular-expressions.md)」を参照してください。 アトミック ゼロ幅アサーションであるメタ文字を次の表に示します。 + +|文字|説明|パターン|置換パターン|入力文字列|結果文字列| +|--------|--------|----------|------------|-----------|-----------| +|`$` *number*|グループの *number* と一致した部分文字列に置換されます。|`\b(\w+)(\s)(\w+)\b`|`$3$2$1`|"one two"|"two one"| +|`${` *name* `}`|名前付きグループの *name* と一致した部分文字列に置換されます。|`\b(?\w+)(\s)(?\w+)\b`|`${word2} ${word1}`|"one two"|"two one"| +|`$$`|"$" リテラルに置換されます。|`\b(\d+)\s?USD`|`$$$1`|"103 USD"|"$103"| +|`$&`|一致したパターン全体と同じパターンに置換されます。|`\$?\d*\.?\d+`|`**$&**`|"$1.30"|"\*\*$1.30\*\*"| +|`$``|一致した場所より前にある入力文字列のすべてに置換されます。|`B+`|`$``|"AABBCC"|"AAAACC"| +|`$'`|一致した場所より後にある入力文字列のすべてに置換されます。|`B+`|`$'`|"AABBCC"|"AACCCC"| +|`$+`|キャプチャされた最後のグループに置換されます。|`B+(C+)`|`$+`|"AABBCCDD"|AACCDD| +|`$_`|入力文字列全体に置換されます。|`B+`|`$_`|"AABBCC"|"AAAABBCCCC"| + + [ページのトップへ](#top) + + +## 正規表現のオプション + 正規表現エンジンで正規表現パターンを解釈する方法を制御するオプションを指定できます。 これらのオプションの多くは、インラインで \(正規表現パターンで\) 指定することも、1 つ以上の 定数として指定することもできます。 このクイック リファレンスでは、インライン オプションのみを示しています。 インライン オプションと オプションの詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」を参照してください。 + + インライン オプションは、次の 2 種類の方法で指定できます。 + +- [その他の構成体](../../../docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md) `(?imnsx-imnsx)` の使用。オプションまたはオプション セットの前に負符号 \(\-\) がある場合、そのオプションが無効になります。 たとえば、`(?i-mn)` では、大文字と小文字を区別しない一致 \(`i`\) がオン、複数行モード \(`m`\) がオフ、名前のないグループ キャプチャ \(`n`\) がオフになります。 このオプションは、このオプションが定義されている位置から正規表現パターンに適用され、パターンの末尾まで、または別の構成体によってオプションが反転する位置まで有効になります。 + +- [グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md) `(?imnsx-imnsx:`*subexpression*`)` の使用。これは、指定されたグループのみに対するオプションを定義します。 + + .NET Framework 正規表現エンジンでは、次のインライン オプションがサポートされます。 + +|オプション|説明|パターン|一致件数| +|-----------|--------|----------|----------| +|`i`|大文字と小文字を区別しない一致を使用します。|`\b(?i)a(?-i)a\w+\b`|"aardvark AAAuto aaaAuto Adam breakfast" の "aardvark"、"aaaAuto"| +|`m`|複数行モードを使用します。`^` と `$` は、\(入力文字列の先頭および末尾ではなく\) 各行の先頭および末尾と一致します。|例については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」の「複数行モード」を参照してください。|| +|`n`|名前のないグループをキャプチャしません。|例については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」の「明示的なキャプチャのみ」を参照してください。|| +|`s`|単一行モードを使用します。|例については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」の「単一行モード」を参照してください。|| +|`x`|正規表現パターンでエスケープされていない空白を無視します。|`\b(?x) \d+ \s \w+`|"1 aardvark 2 cats IV centurions" の "1 aardvark"、"2 cats"| + + [ページのトップへ](#top) + + +## その他の構成体 + その他の構成体は、正規表現パターンを変更するか、それに関する情報を指定します。 .NET Framework でサポートされているその他の構成体を、次の表に示します。 詳細については、「[その他の構成体](../../../docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md)」を参照してください。 + +|構成体|定義|例| +|---------|--------|-------| +|`(?imnsx-imnsx)`|パターンの途中で、大文字と小文字の区別などのオプションを設定または無効化します。 詳細については、「[正規表現のオプション](../../../docs/standard/base-types/regular-expression-options.md)」を参照してください。|`\bA(?i)b\w+\b` は、"ABA Able Act" の "ABA"、"Able" に一致します。| +|`(?#` *comment*`)`|インライン コメントです。 コメントは、最初の閉じかっこで終了します。|`\bA(?#Matches words starting with A)\w+\b`| +|`#` \[to end of line\]|X モード コメントです。 コメントの先頭はエスケープされない `#` で、コメントは行末まで継続します。|`(?x)\bA\w+\b#Matches words starting with A`| + +## 参照 + + + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) + [正規表現クラス](../../../docs/standard/base-types/the-regular-expression-object-model.md) + [正規表現の例](../../../docs/standard/base-types/regular-expression-examples.md) + [正規表現 \- クイック リファレンス \(Word 形式でダウンロード\)](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.docx) + [正規表現 \- クイック リファレンス \(PDF 形式でダウンロード\)](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.pdf) \ No newline at end of file diff --git a/docs/standard/base-types/regular-expression-options.md b/docs/standard/base-types/regular-expression-options.md new file mode 100644 index 00000000000..bbc5467ccbe --- /dev/null +++ b/docs/standard/base-types/regular-expression-options.md @@ -0,0 +1,399 @@ +--- +title: "正規表現のオプション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "正規表現のオプション" + - "オプションは、コンス トラクター" + - ".NET framework 正規表現のオプション" + - "インライン オプション構成体" + - "options パラメーター" +ms.assetid: c82dc689-7e82-4767-a18d-cd24ce5f05e9 +caps.latest.revision: 27 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 27 +--- +# 正規表現のオプション +既定では、正規表現パターンにリテラル文字を含む入力文字列の比較では大文字小文字を区別、正規表現パターン内の空白はリテラルの空白文字として解釈されますおよび正規表現のキャプチャ グループは、明示的にも暗黙的にという名前です。 正規表現のオプションを指定することで、これらの正規表現の既定の動作とそのいくつかの側面を変更できます。 次の表に示す各オプションは、正規表現パターンの一部としてインラインで記述することも、 クラス コンストラクターまたは静的パターン一致メソッドに 列挙値として渡すこともできます。 + +|RegexOptions のメンバー|インライン文字|効果| +|-------------------------|----------------------|------------| +||使用できません|既定の動作を使用します。 詳細については、「[既定のオプション](#Default)」を参照してください。| +||`i`|大文字と小文字を区別しない一致を使用します。 詳細については、「[大文字と小文字を区別しない一致](#Case)」を参照してください。| +||`m`|複数行モードを使用します。`^` と `$` は、(入力文字列の先頭および末尾ではなく) 各行の先頭および末尾と一致します。 詳細については、「[複数行モード](#Multiline)」を参照してください。| +||`s`|単一行モードを使用します。このモードでは、ピリオド (.) は任意の&1; 文字と一致します (`\n` を除くすべての文字の代用)。 詳細については、「[単一行モード](#Singleline)」を参照してください。| +||`n`|名前のないグループをキャプチャしません。 唯一の有効なキャプチャを明示的に名前または形式のグループを示す番号付き`(?<`*名*`>` *subexpression*`)`します。 詳細については、「[明示的なキャプチャのみ](#Explicit)」を参照してください。| +||使用できません|正規表現をアセンブリにコンパイルします。 詳細については、「[コンパイルされた正規表現](#Compiled)」を参照してください。| +||`x`|エスケープされていない空白をパターンから除外し、シャープ記号 (`#`) の後ろのコメントを有効にします。 詳細については、「[空白を無視](#Whitespace)」を参照してください。| +||使用できません|検索の方向を変更します。 左から右ではなく、右から左に検索します。 詳細については、「[右から左モード](#RightToLeft)」を参照してください。| +||使用できません|式の ECMAScript 準拠の動作を有効にします。 詳細については、「[ECMAScript 一致の動作](#ECMAScript)」を参照してください。| +||使用できません|言語のカルチャの違いを無視します。 詳細については、「[インバリアント カルチャを使用した比較](#Invariant)」を参照してください。| + +## オプションの指定 + 正規表現のオプションは、次の&3; 種類の方法のいずれかで指定できます。 + +- `options`のパラメーター、 クラスのコンス トラクターまたは静的な (`Shared` Visual Basic で)、パターン一致メソッドなど、 またはします。 `options`パラメーターは、ビットごとの OR の組み合わせ列挙値。 + + オプションを指定すると、 インスタンスを使用して、`options`クラスのコンス トラクターのパラメーターには、オプションに割り当てられている、 プロパティです。 ただし、 プロパティは、正規表現パターン自体でのインライン オプションを反映しません。 + + 具体的な例を次に示します。 使用して、`options`のパラメーター、 小文字を区別しない一致を有効にして、文字"d"で始まる単語を識別するときに、パターンの空白を無視する方法です。 + + [!code-csharp[Conceptual.Regex.Language.Options#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/example1.cs#6)] + [!code-vb[Conceptual.Regex.Language.Options#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/example1.vb#6)] + +- `(?imnsx-imnsx)` という構文で、インライン オプションを正規表現パターンに適用します。 この場合、オプションが定義されているパターンの先頭から、パターンの末尾を含むポイントまで、または別のインライン オプションでオプションが定義されていないポイントまでを範囲として、オプションがパターンに適用されます。 インスタンスの プロパティはこれらのインライン オプションを反映しないことに注意してください。 詳細については、次を参照してください。、 [(その他) を構築](../../../docs/standard/base-types/miscellaneous-constructs-in-regular-expressions.md)トピックです。 + + 具体的な例を次に示します。 インライン オプションを使用して、文字 "d" で始まる単語を識別するときに、大文字と小文字を区別しない一致を有効にすると同時に、パターンの空白を無視します。 + + [!code-csharp[Conceptual.Regex.Language.Options#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/example1.cs#7)] + [!code-vb[Conceptual.Regex.Language.Options#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/example1.vb#7)] + +- 特定のグループ化でのインライン オプションを適用することによって構成体構文を使用して正規表現パターンに`(?imnsx-imnsx:` *subexpression*`)`します。 オプション セットの前にマイナス記号を付けないとそのオプション セットはオンになり、マイナス記号を付けるとオフになります (`?` は言語構成要素の構文の固定部分であり、オプションが有効であるか無効であるかにかかわらず、必要になります)。オプションは、そのグループに対してのみ適用されます。 詳細については、次を参照してください。[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)します。 + + 具体的な例を次に示します。 グループ化構成体のインライン オプションを使用して、文字 "d" で始まる単語を識別するときに、大文字と小文字を区別しない一致を有効にすると同時に、パターンの空白を無視します。 + + [!code-csharp[Conceptual.Regex.Language.Options#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/example1.cs#8)] + [!code-vb[Conceptual.Regex.Language.Options#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/example1.vb#8)] + + オプションをインラインで指定した場合は、オプションまたはオプション セットの前にマイナス記号 (`-`) を付けると、そのオプションはオフになります。 たとえば、インライン構成体`(?ix-ms)`電源をオン、 オプションで、オフに、 オプション。 既定では、すべての正規表現のオプションがオフです。 + +> [!NOTE] +> コンストラクターまたはメソッド呼び出しの `options` パラメーターで指定した正規表現オプションが正規表現パターンのインラインで指定したオプションと競合した場合は、インラインで指定したオプションが使用されます。 + + 次に示す&5; 種類の正規表現オプションは、options パラメーターとインラインの両方で設定できます。 + +- + +- + +- + +- + +- + + 次に示す&5; 種類の正規表現オプションは `options` パラメーターを使用して設定することはできますが、インラインで設定することはできません。 + +- + +- + +- + +- + +- + +## オプションの確認 + インスタンス化されたときに オブジェクトに渡されたオプションの種類を確認するには、読み取り専用の プロパティの値を取得します。 によって作成されたコンパイル済みの正規表現で定義されているオプションを確認する場合に特に、このプロパティは、 メソッドです。 + + を除くオプションが存在するかどうかをテストするには、目的の プロパティの値と の値を使用して AND 演算を実行します。 次に、この結果が の値と等しいかどうかをテストします。 次の例は、 オプションが設定されているかどうかをテストします。 + + [!code-csharp[Conceptual.Regex.Language.Options#19](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/determine1.cs#19)] + [!code-vb[Conceptual.Regex.Language.Options#19](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/determine1.vb#19)] + + テストするを決定するかどうかの値、 プロパティに等しい次の例に示すようにします。 + + [!code-csharp[Conceptual.Regex.Language.Options#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/determine1.cs#20)] + [!code-vb[Conceptual.Regex.Language.Options#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/determine1.vb#20)] + + 以降のセクションでは、.NET Framework の正規表現でサポートされているオプションについて説明します。 + + +## 既定のオプション + オプションは、オプションが指定されていないことを示します。正規表現エンジンは、このオプションの既定の動作を使用します。 次に例を示します。 + +- このパターンは、ECMAScript 正規表現ではなく、標準の形式として解釈されます。 + +- 正規表現パターンは、左から右に入力文字列と照合されます。 + +- 比較では大文字と小文字が区別されます。 + +- `^` 言語要素および `$` 言語要素は、入力文字列の先頭および末尾と一致します。 + +- `.` 言語要素は、`\n` を除く任意の&1; 文字と一致します。 + +- 正規表現パターンに含まれる空白は、リテラルの空白文字として解釈されます。 + +- パターンを入力文字列と比較するときに、現在のカルチャの規則が使用されます。 + +- 正規表現パターンのキャプチャ グループは、暗黙的に指定される場合と明示的に指定される場合があります。 + +> [!NOTE] +> オプションには、等価なインライン オプションは存在しません。 正規表現オプションがインラインで適用されたときに、特定のオプションをオフにすると、既定の動作がオプションごとに復元されます。 たとえば、`(?i)` は大文字と小文字を区別しない比較をオンにし、`(?-i)` は既定の動作 (大文字と小文字を区別する比較) を復元します。 + + オプションは正規表現エンジンの既定の動作を表しているので、メソッド呼び出しで明示的に指定されることはほとんどありません。 代わりに、`options` パラメーターを使用せずにコンストラクターまたは静的パターン一致メソッドが呼び出されます。 + + [ページのトップへ](#Top) + + +## 大文字と小文字を区別しない一致 + オプション、または`i`インライン オプションは小文字を区別しない一致を実行します。 既定では、現在のカルチャの大文字と小文字の表記規則が使用されます。 + + 次の例では、"the" で始まるすべての単語と一致する正規表現パターン `\bthe\w*\b` を定義します。 最初の呼び出しのため、メソッドは、既定の大文字小文字を区別比較を使用して、出力は、"The"を文の開始文字列が一致しないことを示します。 これが一致として処理されるのは、オプションを に設定して メソッドが呼び出された場合です。 + + [!code-csharp[Conceptual.Regex.Language.Options#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/case1.cs#1)] + [!code-vb[Conceptual.Regex.Language.Options#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/case1.vb#1)] + + 次の例では、前の例の正規表現パターンを変更し、`options` パラメーターを使用する代わりに、インライン オプションを使用して、大文字と小文字を区別しない比較を行っています。 最初のパターンでは、文字列 "the" の文字 "t" のみに適用されるよう、グループ化構成体の大文字と小文字を区別しないオプションを定義しています。 オプションの構成体がパターンの先頭にあるので、2 番目のパターンでは、大文字と小文字を区別しないオプションが正規表現全体に適用されています。 + + [!code-csharp[Conceptual.Regex.Language.Options#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/case2.cs#2)] + [!code-vb[Conceptual.Regex.Language.Options#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/case2.vb#2)] + + [ページのトップへ](#Top) + + +## 複数行モード + オプション、または`m`正規表現エンジンは、複数の行で構成される入力文字列の処理により、インライン オプションを指定します。 具体的には、`^` 言語要素および `$` 言語要素の解釈を変更して、入力文字列の先頭および末尾ではなく、行の先頭および末尾に一致するものとします。 + + 既定では、`$` は入力文字列の末尾とのみ一致します。 指定した場合、 オプション、改行文字と一致する (`\n`) または入力文字列の末尾。 ただし、復帰とライン フィード文字の組み合わせとは一致しません。 この組み合わせと正常に一致させるには、`\r?$` を単独で使用する代わりに、部分式 `$` を使用します。 + + 次の例は、ボウリング参加者の名前とスコアを抽出しに追加、 それらを降順に並べ替えるコレクション。 メソッドは&2; 回呼び出されています。 最初のメソッド呼び出しでは、`^(\w+)\s(\d+)$` という正規表現が使用され、オプションは設定されていません。 出力結果が示すように、正規表現エンジンは入力パターンを入力文字列の先頭および末尾と一致させることができないので、一致は検出されません。 2 番目のメソッド呼び出しでは、正規表現は `^(\w+)\s(\d+)\r?$` に変更されており、オプションは に設定されています。 出力結果が示すように、名前とスコアの照合は正常に行われ、スコアは降順で表示されています。 + + [!code-csharp[Conceptual.Regex.Language.Options#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/multiline1.cs#3)] + [!code-vb[Conceptual.Regex.Language.Options#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/multiline1.vb#3)] + + 正規表現パターン `^(\w+)\s(\d+)\r*$` は、次の表に示すように定義されています。 + +|パターン|説明| +|-------------|-----------------| +|`^`|行の先頭から始まります。| +|`(\w+)`|1 つ以上の単語文字に一致します。 これが最初のキャプチャ グループです。| +|`\s`|空白文字と一致します。| +|`(\d+)`|1 個以上の&10; 進数と一致します。 これが&2; 番目のキャプチャ グループです。| +|`\r?`|0 個または&1; 個の復帰文字と一致します。| +|`$`|行の末尾で終了します。| + + 次の例は、前の例と等価ですが、インライン オプション `(?m)` を使用して複数行オプションを設定している点が異なります。 + + [!code-csharp[Conceptual.Regex.Language.Options#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/multiline2.cs#4)] + [!code-vb[Conceptual.Regex.Language.Options#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/multiline2.vb#4)] + + [ページのトップへ](#Top) + + +## 単一行モード + オプション、または`s`と、単一行で構成されていますかのように入力の文字列を処理する正規表現エンジンのインライン オプションを指定します。 具体的には、ピリオド (`.`) 言語要素の動作を変更して、改行文字 (`\n` または \u000A) を除く任意の文字ではなく、改行文字を含む任意の&1; 文字と一致するようにします。 + + 次の例に示す方法の動作、`.`言語要素を変更するときに、 オプション。 正規表現 `^.+` は文字列の先頭から開始し、すべての文字と一致します。 既定では、照合は&1; 行目の末尾で終了します。正規表現パターンは復帰文字 `\r` (\u000D) と一致しますが、`\n` とは一致しません。 オプションが入力文字列全体を単一行として解釈し、入力文字列内のすべての文字と一致を含む`\n`します。 + + [!code-csharp[Conceptual.Regex.Language.CharacterClasses#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.characterclasses/cs/any2.cs#5)] + [!code-vb[Conceptual.Regex.Language.CharacterClasses#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.characterclasses/vb/any2.vb#5)] + + 次の例は、前の例と等価ですが、インライン オプション `(?s)` を使用して単一行モードを有効にしている点が異なります。 + + [!code-csharp[Conceptual.Regex.Language.Options#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/singleline1.cs#5)] + [!code-vb[Conceptual.Regex.Language.Options#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/singleline1.vb#5)] + + [ページのトップへ](#Top) + + +## 明示的なキャプチャのみ + 既定では、キャプチャ グループは正規表現パターンでかっこを使用することで定義されます。 名前付きグループは、名前を割り当てられたか、または番号を`(?<`*名*`>`*subexpression* `)`言語のオプション、名前のないグループはインデックスでアクセスします。 オブジェクトでは、名前のないグループが名前付きのグループよりも優先されます。 + + グループ化構成体は通常、複数の言語要素に量指定子を適用する場合にのみ使用され、キャプチャされた部分文字列は対象になりません。 たとえば、次の正規表現について考えます。 + +``` +\b\(?((\w+),?\s?)+[\.!?]\)? +``` + + この正規表現は、ドキュメントから文末がピリオド、感嘆符、または疑問符である文を抽出することのみを目的とし、結果の文 ( オブジェクトで表される) のみを対象としています。 コレクション内の個々の単語は対象ではありません。 + + 正規表現エンジンで コレクション オブジェクトと コレクション オブジェクトの両方を設定する必要があるので、キャプチャ グループが以後、使用されない場合は、この設定の処理が無駄になる可能性があります。 別の方法として、いずれかを使用できます、 オプションまたは`n`インライン オプションのみを有効なキャプチャが明示的に名前または番号で指定されていることを指定する、 `(?<`*名*`>` *部分式*`)`を構築します。 + + 次の例は、`\b\(?((\w+),?\s?)+[\.!?]\)?` 正規表現パターンによって返された一致に関する情報を示しています ( メソッドが オプションを使用して呼び出された場合、および使用せずに呼び出された場合)。 最初のメソッド呼び出しの出力結果が示すように、正規表現エンジンでは、キャプチャした部分文字列に関する情報に基づいて、 コレクション オブジェクトおよび コレクション オブジェクトが完全に設定されています。 2 番目のメソッドが呼び出されたため`options`設定、グループに関する情報をキャプチャしません。 + + [!code-csharp[Conceptual.Regex.Language.Options#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/explicit1.cs#9)] + [!code-vb[Conceptual.Regex.Language.Options#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/explicit1.vb#9)] + + 正規表現パターン`\b\(?((?>\w+),?\s?)+[\.!?]\)?`の次の表に示すように定義します。 + +|パターン|説明| +|-------------|-----------------| +|`\b`|ワード境界から始まります。| +|`\(?`|左かっこ ("(") の&0; 回または&1; 回の繰り返しと一致します。| +|`(?>\w+),?`|1 個以上の単語文字の後に&0; 個または&1; 個のコンマが続くパターンと一致します。 単語文字の照合中にバックトラックは実行されません。| +|`\s?`|0 個または&1; 個の空白文字と一致します。| +|`((\w+),?\s?)+`|1 個以上の単語文字、0 個または&1; 個のコンマ、および&0; 個または&1; 個の空白文字が&1; 回以上続くパターンと一致します。| +|`[\.!?]\)?`|3 種類の区切り記号のいずれかの後に&0; 個または&1; 個の右かっこ (")") が続くパターンと一致します。| + + `(?n)` インライン要素を使用して、自動的なキャプチャを抑制することもできます。 次の例では、前の正規表現パターンを使用する、`(?n)`インライン要素の代わりに、 オプション。 + + [!code-csharp[Conceptual.Regex.Language.Options#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/explicit2.cs#10)] + [!code-vb[Conceptual.Regex.Language.Options#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/explicit2.vb#10)] + + 最後に、`(?n:)` インライン グループ要素を使用して、グループごとに自動的なキャプチャを抑制することもできます。 次の例では、前のパターンを変更して、外部グループ `((?>\w+),?\s?)` で名前のないキャプチャを抑制しています。 この処理では、内部グループでの名前のないキャプチャも抑制されることに注意してください。 + + [!code-csharp[Conceptual.Regex.Language.Options#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/explicit3.cs#11)] + [!code-vb[Conceptual.Regex.Language.Options#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/explicit3.vb#11)] + + [ページのトップへ](#Top) + + +## コンパイルされた正規表現 + 既定では、.NET Framework の正規表現は解釈の対象になります。 オブジェクトがインスタンス化されるか、静的 メソッドが呼び出されたときに、正規表現パターンはカスタム オペコードのセットに解析され、インタープリターがこのオペコードに基づいて正規表現を実行します。 この場合、正規表現エンジンの初期化処理を優先すると、実行時のパフォーマンスが低下するというトレードオフが伴います。 + + 正規表現を逐次解釈する代わりに、 オプションを使用してコンパイルされた正規表現を使用できます。 この場合、パターンは正規表現エンジンに渡され、オペコードのセットに解析されてから、Microsoft Intermediate Language (MSIL) に変換されます。変換されたコードは、共通言語ランタイムに直接渡すことができます。 コンパイルされた正規表現を使用すると、初期化処理に時間を要しますが、実行時のパフォーマンスは向上します。 + +> [!NOTE] +> 正規表現を指定することをコンパイルすることができます、 値を`options`のパラメーター、 クラス コンス トラクターまたは静的パターン一致メソッドです。 インライン オプションとしては使用できません。 + + コンパイルされた正規表現は、静的正規表現とインスタンス正規表現の両方の呼び出しに使用できます。 静的正規表現で、 にオプションが渡される、`options`正規表現パターン一致メソッドのパラメーターです。 渡されるインスタンスの正規表現、`options`のパラメーター、 クラスのコンス トラクターです。 どちらの場合も、パフォーマンスが向上します。 + + ただし、パフォーマンスが向上するのは、次の条件を満たしている場合に限定されます。 + +- 特定の正規表現を表す オブジェクトが正規表現パターン一致メソッドの複数の呼び出しで使用されている。 + +- オブジェクトがスコープの外に出ることが許可されておらず、再利用できる。 + +- 静的正規表現が正規表現パターン一致メソッドの複数の呼び出しで使用されている (静的メソッド呼び出しで使用した正規表現は正規表現エンジンによってキャッシュされるので、パフォーマンスの向上が可能になります)。 + +> [!NOTE] +> オプションのとは無関係に、 メソッドで、定義済みのコンパイルされた正規表現を含む特殊な目的のアセンブリを作成します。 + + [ページのトップへ](#Top) + + +## 空白を無視 + 既定では、正規表現パターンに含まれる空白には重要な意味があり、正規表現エンジンでは、入力文字列内の空白文字との照合が強制されます。 このため、正規表現"`\b\w+\s`「と」`\b\w+` "とほぼ同等の正規表現。 さらに、シャープ記号 (#) が正規表現パターンに含まれている場合は、照合する対象のリテラル文字として解釈されます。 + + オプション、または`x`インライン オプションは、この既定の動作を次のように変更します。 + +- 正規表現パターンでエスケープされていない空白は無視されます。 正規表現パターンの一部にするには、空白文字をエスケープする必要があります (たとえば、として`\s`または"`\` ") です。 + +- シャープ記号 (#) は、リテラル文字ではなく、コメントの先頭として解釈されます。 # 記号から文字列の末尾まで、正規表現パターンに含まれるすべてのテキストは、コメントとして解釈されます。 + + ただし次に説明する状況では、 オプションを使用している場合でも、正規表現の空白文字は無視されません。 + +- 文字クラス内の空白は常に、空白として解釈されます。 たとえば、正規表現パターン `[ .,;:]` は、空白文字、ピリオド、コンマ、セミコロン、またはコロンの任意の&1; 文字と一致します。 + +- White space isn't allowed within a bracketed quantifier, such as `{`*n*`}`, `{`*n*`,}`, and `{`*n*`,`*m*`}`. たとえば、正規表現パターン `\d{1. 3}` は、空白文字が含まれているため、1 ~ 3 桁の数値のどのシーケンスにも一致しません。 + +- 言語要素を導入する文字シーケンス内では空白を使用できません。 例: + + - 言語要素`(?:`*部分式*`)`は非キャプチャ グループを表し、`(?:`要素の部分は空白を埋め込むことはできませんがします。 パターン`(? :`*部分式*`)`スロー、 実行時に、正規表現エンジンは、パターン、およびパターンを解析できないため`( ?:`*部分式*`)`にも一致しません*subexpression*します。 + + - 言語要素`\p{`*名*`}`、Unicode カテゴリを表すまたは名前付きブロックに埋め込まれたスペースを含めることはできません、`\p{`要素の部分です。 空白を追加すると、この要素は実行時に をスローします。 + + このオプションを有効にすると、多くの場合、解析や理解が困難な正規表現を簡略化できます。 正規表現が読みやすくなり、説明も記述できます。 + + 次の例では、正規表現パターンを定義しています。 + + `\b \(? ( (?>\w+) ,?\s? )+ [\.!?] \)? # Matches an entire sentence.` + + このパターンは、「[明示的なキャプチャのみ](#Explicit)」セクションで定義したパターンと似ています。ただし、 オプションを使用して、パターンの空白を無視している点が異なります。 + + [!code-csharp[Conceptual.Regex.Language.Options#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/whitespace1.cs#12)] + [!code-vb[Conceptual.Regex.Language.Options#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/whitespace1.vb#12)] + + 次の例では、`(?x)` インライン オプションを使用して、パターンの空白を無視しています。 + + [!code-csharp[Conceptual.Regex.Language.Options#13](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/whitespace2.cs#13)] + [!code-vb[Conceptual.Regex.Language.Options#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/whitespace2.vb#13)] + + [ページのトップへ](#Top) + + +## 右から左モード + 既定では、正規表現エンジンは左から右の方向に検索します。 この検索の方向を反転するには、 オプションを使用します。 検索は、文字列の最後の文字位置から自動的に開始されます。 など、開始位置のパラメーターを含むパターン一致メソッドの場合は、検索の開始位置である右端の文字位置のインデックスが開始位置になります。 + +> [!NOTE] +> 右から左へのパターンのモードは、指定することによってのみ使用可能な値を`options`のパラメーター、 クラスのコンス トラクターまたは静的パターン一致メソッドです。 インライン オプションとしては使用できません。 + + オプションは、検索の方向のみを変更します。このオプションを指定すると、正規表現パターンが右から左に解釈されるわけではありません。 たとえば、正規表現 `\bb\w+\s` は、文字 "b" で始まる単語とそれに続く空白文字と一致します。 次の例では、入力文字列は、1 文字以上の "b" を含む&3; つの単語で構成されています。 最初の単語は "b" で始まり、2 番目の単語は "b" で終わり、3 番目の単語は語内に&2; 文字の "b" を含んでいます。 この例の出力結果が示すように、最初の単語のみが正規表現パターンと一致しています。 + + [!code-csharp[Conceptual.Regex.Language.Options#17](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/righttoleft1.cs#17)] + [!code-vb[Conceptual.Regex.Language.Options#17](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/righttoleft1.vb#17)] + + また先読みアサーション (、 `(?=`*部分式*`)`言語要素) と後読みアサーション (、 `(?<=`*部分式*`)`言語要素) 方向が変更されません。 先読みアサーションでは右方向へ、後読みアサーションでは左方向へ参照が行われます。 たとえば、正規表現 `(?<=\d{1,2}\s)\w+,?\s\d{4}` は後読みアサーションを使用して、月の名前の前にある日付をテストします。 次に、この正規表現は、月と年を照合しています。 詳細については、先読みアサーションと後読みアサーションは、次を参照してください。[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)します。 + + [!code-csharp[Conceptual.Regex.Language.Options#18](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/righttoleft2.cs#18)] + [!code-vb[Conceptual.Regex.Language.Options#18](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/righttoleft2.vb#18)] + + 正規表現パターンは、次の表に示すように定義されています。 + +|パターン|説明| +|-------------|-----------------| +|`(?<=\d{1,2}\s)`|一致の先頭の前には、1 桁または&2; 桁の&10; 進数とそれに続く空白が必要です。| +|`\w+`|1 つ以上の単語文字に一致します。| +|`,?`|0 個または&1; 個のコンマと一致します。| +|`\s`|空白文字と一致します。| +|`\d{4}`|4 桁の&10; 進数と一致します。| + + [ページのトップへ](#Top) + + +## ECMAScript 一致の動作 + 既定では、正規表現パターンを入力テキストに照合するときに、正規表現エンジンは標準の動作を使用します。 ただし、 オプションを使用することで、ECMAScript 一致の動作を使用するように正規表現エンジンに指示できます。 + +> [!NOTE] +> ECMAScript 準拠の動作を指定することによってのみ使用できる、 値を`options`のパラメーター、 クラスのコンス トラクターまたは静的パターン一致メソッドです。 インライン オプションとしては使用できません。 + + オプションは、 オプションか オプションとのみ組み合わせることができます。 これ以外のオプションと同時に正規表現で使用すると、 が発生します。 + + ECMAScript と標準正規表現は、文字クラスの構文、自己参照キャプチャ グループ、および&8; 進数と前方参照の解釈という&3; つの点で動作が異なります。 + +- 文字クラスの構文。 標準正規表現が Unicode をサポートしているのに対して、ECMAScript は Unicode をサポートしていないので、ECMAScript の文字クラスの構文には制限が多く、文字クラスの言語要素によっては意味が異なります。 たとえば ECMAScript は、Unicode カテゴリやブロック要素 (`\p` および `\P`) などの言語要素をサポートしていません。 同様に、単語文字と一致する `\w` 要素は、ECMAScript を使用した場合は `[a-zA-Z_0-9]` 文字クラスと等価になり、標準の動作を使用した場合は `[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]` と等価になります。 詳細については、次を参照してください。[文字クラス](../../../docs/standard/base-types/character-classes-in-regular-expressions.md)します。 + + 次の例は、標準パターン一致と ECMAScript パターン一致の違いを示しています。 この例では、単語とそれに続く空白文字と一致する正規表現 `\b(\w+\s*)+` を定義しています。 入力は&2; つの文字列で構成され、一方の文字列ではラテン語文字セットが使用され、もう一方の文字列ではキリル文字セットが使用されています。 出力結果が示すように、ECMAScript 一致を使用した メソッドの呼び出しではキリル文字の単語が照合されないのに対して、標準一致を使用したメソッドの呼び出しではキリル文字の単語が照合されています。 + + [!code-csharp[Conceptual.Regex.Language.Options#16](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/ecmascript1.cs#16)] + [!code-vb[Conceptual.Regex.Language.Options#16](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/ecmascript1.vb#16)] + +- 自己参照キャプチャ グループ。 正規表現キャプチャ クラスが、それ自体への前方参照を持っている場合は、キャプチャの反復処理のたびに更新する必要があります。 次の例に示すように、この機能では、正規表現 `((a+)(\1) ?)+` による入力文字列 " aa aaaa aaaaaa "との照合は、ECMAScript を使用した場合は有効になり、標準一致を使用した場合は無効になります。 + + [!code-csharp[Conceptual.Regex.Language.Options#21](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/ecmascript2.cs#21)] + [!code-vb[Conceptual.Regex.Language.Options#21](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/ecmascript2.vb#21)] + + 正規表現は、次の表に示すように定義されています。 + + |パターン|説明| + |-------------|-----------------| + |(a+)|文字 "a" と&1; 回以上一致します。 これが&2; 番目のキャプチャ グループです。| + |(\1)|最初のキャプチャ グループによってキャプチャされた部分文字列と一致します。 これが&3; 番目のキャプチャ グループです。| + |?|0 個または&1; 個の空白文字と一致します。| + |((a+)(\1) ?)+|1 文字以上の "a"、最初のキャプチャ グループと一致する文字列、および&0; 個または&1; 個の空白文字が&1; 回以上続くパターンと一致します。 これが最初のキャプチャ グループです。| + +- 8 進数エスケープと前方参照のあいまいさの解決方法。 標準正規表現と ECMAScript 正規表現による&8; 進数と前方参照の解釈の違いの概要を次の表に示します。 + + |正規表現|標準の動作|ECMAScript の動作| + |------------------------|------------------------|-------------------------| + |`\0` の後に 0 ~ 2 桁の 8 進数字が続く場合|8 進数として解釈されます。 たとえば、`\044` は常に&8; 進数値として解釈され、"$" を意味します。|同じ動作です。| + |`\` の後に 1 ~ 9 の数字が続き、その後に 10 進数字が続かない場合|前方参照として解釈されます。 たとえば、9 番目のキャプチャ グループが存在しない場合でも、`\9` は常に前方参照 9 です。 キャプチャ グループが存在しない場合、正規表現パーサーをスローするします。|単一の&10; 進数字のキャプチャ グループが存在する場合は、その数字への前方参照です。 それ以外の場合は、値はリテラルとして解釈されます。| + |`\` の後に 1 ~ 9 の数字が続き、その後に 10 進数字が続く場合|数字は&10; 進数値として解釈されます。 そのキャプチャ グループが存在する場合は、式は前方参照として解釈されます。

それ以外の場合は、先行する数字が 377 までの範囲で 8 進数として解釈されます。つまり、値の下位 8 ビットのみが処理の対象になります。 残りの数字はリテラルとして解釈されます。 たとえば、式 `\3000` では、キャプチャ グループ 300 が存在する場合は前方参照 300 として解釈されます。キャプチャ グループ 300 が存在しない場合は 8 進数 300 とそれに続く 0 として解釈されます。|キャプチャを参照できる範囲で、できるだけ多くの桁数が&10; 進値に変換され、前方参照として解釈されます。 変換できる数字がない場合は、先行する数字が 377 までの範囲で 8 進数として解釈され、残りの数字はリテラルとして解釈されます。| + + [ページのトップへ](#Top) + + +## インバリアント カルチャを使用した比較 + 既定では、大文字と小文字を区別しない比較を実行するときに、正規表現エンジンは現在のカルチャの大文字と小文字の表記規則を使用して、等価な大文字および小文字を決定します。 + + ただし、この動作は、比較の種類によっては望ましくない場合があります。具体的な例としては、ユーザー入力と、パスワード、ファイル、URL など、システム リソースの名前を比較する場合が挙げられます。 この場合に該当する例を次に示します。 このコードは、URL の先頭を任意のリソースへのアクセスをブロックする、 **FILE://**します。 `$FILE://` という正規表現を使用して、文字列に対する大文字と小文字を区別しない一致が試みられます。 ただし、現在のシステム カルチャが tr-TR (トルコ語 (トルコ)) である場合、"I" は "i" の大文字表現には該当しません。 呼び出しの結果として、 メソッドを返します。 `false`、およびファイルへのアクセスを許可します。 + + [!code-csharp[Conceptual.Regex.Language.Options#14](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/culture1.cs#14)] + [!code-vb[Conceptual.Regex.Language.Options#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/culture1.vb#14)] + +> [!NOTE] +> 大文字と小文字を区別する文字列比較とインバリアント カルチャを使用する文字列比較の詳細については、「[文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md)」を参照してください。 + + 現在のカルチャで大文字と小文字を区別しない比較を行う代わりに、 オプションを指定すると、言語のカルチャの違いを無視して、インバリアント カルチャの規則を使用できます。 + +> [!NOTE] +> インバリアント カルチャを使用して、比較は、指定することによってのみ使用可能な値を`options`のパラメーター、 クラスのコンス トラクターまたは静的パターン一致メソッドです。 インライン オプションとしては使用できません。 + + 次の例は前の例と同じものですが、 を含むオプションを指定して、静的メソッド が呼び出されている点が異なります。 現在のカルチャがトルコ語 (トルコ) に設定されている場合でも、正規表現エンジンでは "FILE" と "file" が正常に一致し、ファイル リソースへのアクセスが拒否されます。 + + [!code-csharp[Conceptual.Regex.Language.Options#15](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.options/cs/culture1.cs#15)] + [!code-vb[Conceptual.Regex.Language.Options#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.options/vb/culture1.vb#15)] + +## 関連項目 + [正規表現言語 - クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) \ No newline at end of file diff --git a/docs/standard/base-types/regular-expressions.md b/docs/standard/base-types/regular-expressions.md index 9f17ea3cafc..a679d4c9154 100644 --- a/docs/standard/base-types/regular-expressions.md +++ b/docs/standard/base-types/regular-expressions.md @@ -1,314 +1,126 @@ --- -title: ".NET の正規表現" -description: ".NET の正規表現" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: d1a640cf-09ca-48f7-800c-a627a6d549c9 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: ac26821819b22aa3ea47e6945bb5c8575dcd9807 -ms.lasthandoff: 03/02/2017 - ---- - -# .NET の正規表現 - -正規表現を使用すると、強力、柔軟、そして効率的な方法でテキストを処理できます。 正規表現の広範なパターン一致表記法を使用することで、大量のテキストをすばやく解析して特定の文字パターンを検索したり、決められたパターン (電子メール アドレスなど) と照らしてテキストを検証したりできるほか、テキストの部分文字列を抽出、編集、置換、または削除したり、抽出した文字列をコレクションに追加してレポートを生成したりすることもできます。 文字列処理や大量のテキストを解析する多くのアプリケーションにとって、正規表現は欠くことのできないツールです。 - -## 正規表現の動作 - -正規表現を使ったテキスト処理の最も重要な部分は、.NET の [System.Text.RegularExpressions.Regex](xref:System.Text.RegularExpressions.Regex) オブジェクトによって表される正規表現エンジンです。 正規表現を使ったテキスト処理では、正規表現エンジンに対し、最低でも次の&2; つの情報を与える必要があります。 - -* テキストを識別する正規表現パターン。 +title: ".NET Framework の正規表現 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現" + - ".NET Framework 正規表現, 概要" + - "文字 [.NET Framework], 正規表現" + - "解析 (正規表現を使用したテキストを)" + - "解析 (正規表現を使用したテキストを), 概要" + - "パターン一致 (正規表現を使用した)" + - "パターン一致 (正規表現を使用した), パターン一致の概要" + - "正規表現 [.NET Framework]" + - "正規表現 [.NET Framework], 正規表現の概要" + - "検索 (正規表現を使用した)" + - "検索 (正規表現を使用した), 正規表現の概要" + - "文字列 [.NET Framework], 正規表現" + - "部分文字列" +ms.assetid: 521b3f6d-f869-42e1-93e5-158c54a6895d +caps.latest.revision: 24 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 24 +--- +# .NET Framework の正規表現 +正規表現を使用すると、強力、柔軟、そして効率的な方法でテキストを処理できます。 正規表現の広範なパターン一致表記法を使用することで、大量のテキストをすばやく解析して特定の文字パターンを検索したり、決められたパターン \(電子メール アドレスなど\) と照らしてテキストを検証したりできるほか、テキストの部分文字列を抽出、編集、置換、または削除したり、抽出した文字列をコレクションに追加してレポートを生成したりすることもできます。 文字列処理や大量のテキストを解析する多くのアプリケーションにとって、正規表現は欠くことのできないツールです。 + +## 正規表現の動作 + 正規表現を使ったテキスト処理の最も重要な部分は、.NET Framework の オブジェクトによって表される正規表現エンジンです。 正規表現を使ったテキスト処理では、正規表現エンジンに対し、最低でも次の 2 つの情報を与える必要があります。 + +- テキストを識別する正規表現パターン。 + + .NET Framework では、正規表現のパターンが特殊な構文または言語で定義されます。この構文または言語には、Perl 5 の正規表現と互換性があるほか、右から左への一致処理など、いくつかの機能が追加されています。 詳細については、「[正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md)」を参照してください。 + +- 正規表現パターンの解析対象となるテキスト。 + + クラスのメソッドを使用すると、次のような処理を実行できます。 + +- 入力されたテキストに特定の正規表現パターンが出現するかどうかを調べるには、 メソッドを呼び出します。 テキストを検証するために メソッドを使用する例については、「[方法 : 文字列が有効な電子メール形式であるかどうかを検証する](../../../docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md)」を参照してください。 + +- 正規表現パターンと一致したテキストを 1 つまたは全部取得するには、 メソッドまたは メソッドを呼び出します。 前者は、一致したテキストの情報を保持する オブジェクトを返します。 後者は、解析対象のテキストに見つかった各一致につき 1 つの オブジェクトを含む オブジェクトを返します。 + +- 正規表現パターンと一致したテキストを置換するには、 メソッドを呼び出します。 メソッドを使用して日付形式を変更したり文字列から無効な文字を削除したりする例については、「[方法 : 文字列から無効な文字を取り除く](../../../docs/standard/base-types/how-to-strip-invalid-characters-from-a-string.md)」および「[例 : 日付形式の変更](../../../docs/standard/base-types/regular-expression-example-changing-date-formats.md)」を参照してください。 + + 正規表現のオブジェクト モデルの概要については、「[正規表現のオブジェクト モデル](../../../docs/standard/base-types/the-regular-expression-object-model.md)」を参照してください。 + + 正規表現の言語の詳細については、「[正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md)」を参照するか、次の資料のいずれかをダウンロードして印刷してください。 + + [Quick Reference: Word \(.docx\) 形式](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.docx) + [Quick Reference: PDF \(.pdf\) 形式](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.pdf) + +## 正規表現の例 + クラスには、文字列内のリテラル文字列を検索する際に使用できる文字列の検索メソッドと置換メソッドが数多く含まれています。 正規表現は、次の例に示すように、文字列内の部分文字列のいずれかを検索する場合、または文字列内のパターンを識別する場合に最も役立ちます。 + +### 例 1: 部分文字列の置換 + 氏名に敬称 \(Mr.、Mrs.、Miss、または Ms.\) が付いている場合がある名前が、宛先リストに含まれるとします。 そのリストから封筒のラベルを生成する場合に敬称が含まれないようにするには、次の例に示すように、正規表現を使用して敬称を削除します。 + + [!code-csharp[Conceptual.Regex#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex/cs/example1.cs#2)] + [!code-vb[Conceptual.Regex#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex/vb/example1.vb#2)] + + 正規表現パターン `(Mr\.? |Mrs\.? |Miss |Ms\.? )` は、"Mr "、"Mr." 、"Mrs "、"Mrs. "、"Miss "、"Ms"、または "Ms." の出現と一致します。 からドラッグします。 メソッドを呼び出すと、一致する文字列が に置き換えられます。つまり、元の文字列から削除されます。 + +### 例 2: 重複する単語の識別 + 記述者が単語を誤って重複入力するというエラーがよくあります。 次の例に示すように、正規表現を使用して重複する単語を識別できます。 + + [!code-csharp[Conceptual.Regex#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex/cs/example2.cs#3)] + [!code-vb[Conceptual.Regex#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex/vb/example2.vb#3)] + + 正規表現パターン `\b(\w+?)\s\1\b` は、次のように解釈できます。 + +||| +|-|-| +|`\b`|ワード境界から開始します。| +|\(\\w\+?\)|1 つ以上 \(ただし、できるだけ少ない文字数\) の単語文字と一致します。 同時に、`\1` というグループを形成します。| +|`\s`|空白文字と一致します。| +|`\1`|`\1` という名前のグループと等しい部分文字列と一致します。| +|`\b`|ワード境界に一致します。| + + メソッドは、正規表現オプションを に設定して呼び出されます。 したがって、照合操作では大文字と小文字が区別されず、この例では部分文字列 "This this" が重複として識別されます。 + + 入力文字列には部分文字列 "this? This" が含まれています。 ただし、句読点が介在するので、重複として識別されません。 + +### 例 3: カルチャに依存した正規表現の動的な構築 + ここでは、正規表現による強力なテキスト処理と、.NET Framework の柔軟なグローバリゼーション機能とを組み合わせて使用する例を紹介します。 この例では、システムの現在のカルチャで用いられている通貨値の形式を調べるために、 オブジェクトが使用されています。 さらに、その情報を基に、テキストから通貨値を抽出する正規表現を動的に構築します。 検出された一致ごとに、数値文字列のみを含んだサブグループを抽出し、 値に変換して、通算の合計を計算します。 + + [!code-csharp[Conceptual.Regex#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex/cs/example.cs#1)] + [!code-vb[Conceptual.Regex#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex/vb/example.vb#1)] + + 現在 "英語 \- 米国" \(en\-US\) カルチャが使用されているコンピューターでは、`\$\s*[-+]?([0-9]{0,3}(,[0-9]{3})*(\.[0-9]+)?)` という正規表現が動的に作成されます。 この正規表現パターンは、次のように解釈できます。 + +||| +|-|-| +|`\$`|入力文字列に含まれる単一のドル記号 \($\) を検索します。 この正規表現パターン文字列に使用されている円記号は、ドル記号を正規表現のアンカーではなく、文字として扱うことを意味します。 ドル記号 \($\) を単独で指定した場合、正規表現エンジンは、比較の開始位置を文字列の終端に設定します。 現在のカルチャの通貨記号が正規表現記号として解釈されるのを防ぐため、この例では、 メソッドを呼び出して文字をエスケープしています。| +|`\s*`|空白文字の 0 回以上の繰り返しを検索します。| +|`[-+]?`|正の符号または負の符号の 0 回または 1 回の繰り返しを検索します。| +|`([0-9]{0,3}(,[0-9]{3})*(\.[0-9]+)?)`|外側の丸かっこで囲まれている表現は、キャプチャ グループまたは部分式として定義されます。 一致が見つかった場合、その一致した文字列の、この部分に関する情報が、 プロパティから返された オブジェクトの 2 つ目の オブジェクトから取得できます \(コレクションの 1 つ目の要素は、一致した文字列全体を表します\)。| +|`[0-9]{0,3}`|10 進数字 \(0 ~ 9\) の 0 回以上、3 回以下の繰り返しを検索します。| +|`(,[0-9]{3})*`|桁区切り記号と 3 桁の 10 進数字の 0 回以上の繰り返しを検索します。| +|`\.`|単一の小数点を検索します。| +|`[0-9]+`|10 進数字の 1 回以上の繰り返しを検索します。| +|`(\.[0-9]+)?`|小数点と 1 桁以上の数字の 0 回または 1 回の繰り返しを検索します。| + + 以上の各サブパターンが入力文字列内に見つかると一致と判断され、その一致に関する情報を含んだ オブジェクトが オブジェクトに追加されます。 + +## 関連トピック - .NET では、正規表現のパターンが特殊な構文または言語で定義されます。この構文または言語には、Perl 5 の正規表現と互換性があるほか、右から左への一致処理など、いくつかの機能が追加されています。 詳細については、「[正規表現言語 - クイック リファレンス](quick-ref.md)」をご覧ください。 +|タイトル|説明| +|----------|--------| +|[正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md)|正規表現を定義するために使う一連の文字、演算子、および構成体について説明します。| +|[正規表現のオブジェクト モデル](../../../docs/standard/base-types/the-regular-expression-object-model.md)|正規表現クラスの使用方法について詳しく説明し、コード例を示します。| +|[正規表現の動作の詳細](../../../docs/standard/base-types/details-of-regular-expression-behavior.md)|.NET Framework 正規表現の機能と動作について説明します。| +|[正規表現の例](../../../docs/standard/base-types/regular-expression-examples.md)|正規表現の一般的な使用方法を示すコード例が用意されています。| -* 正規表現パターンの解析対象となるテキスト。 - -[Regex](xref:System.Text.RegularExpressions.Regex) クラスのメソッドを使用すると、次のような処理を実行できます。 - -* 入力されたテキストに特定の正規表現パターンが出現するかどうかを調べるには、[Regex.IsMatch](xref:System.Text.RegularExpressions.Regex.IsMatch(System.String)) メソッドを呼び出します。 テキストを検証するために [IsMatch](xref:System.Text.RegularExpressions.Regex.IsMatch(System.String)) メソッドを使用する例については、「[方法: 文字列が有効な電子メール形式であるかどうかを検証する](verify-format.md)」をご覧ください。 - -* 正規表現パターンと一致したテキストを&1; つまたはすべて取得するには、[Regex.Match](xref:System.Text.RegularExpressions.Regex.Match(System.String)) メソッドまたは [Regex.Matches](xref:System.Text.RegularExpressions.Regex.Matches(System.String)) メソッドを呼び出します。 前者は、一致したテキストの情報を保持する [System.Text.RegularExpressions.Match](xref:System.Text.RegularExpressions.Match) オブジェクトを返します。 後者は、解析対象のテキストに見つかった各一致につき&1; つの [System.Text.RegularExpressions.Match](xref:System.Text.RegularExpressions.Match) オブジェクトを含む [MatchCollection](xref:System.Text.RegularExpressions.MatchCollection) オブジェクトを返します。 - -* 正規表現パターンと一致したテキストを置換するには、[Regex.Replace](xref:System.Text.RegularExpressions.Regex.Replace(System.String,System.String)) メソッドを呼び出します。 [Replace](xref:System.Text.RegularExpressions.Regex.Replace(System.String,System.String)) メソッドを使用して日付形式を変更したり文字列から無効な文字を削除したりする例については、「[方法: 文字列から無効な文字を取り除く](strip-characters.md)」および「[正規表現の例: 日付形式の変更](changing-formats.md)」をご覧ください。 - -正規表現のオブジェクト モデルの概要については、「[正規表現のオブジェクト モデル](object-model.md)」をご覧ください。 - -正規表現言語の詳細については、「[正規表現言語 - クイック リファレンス](quick-ref.md)」をご覧ください。 - -## 正規表現の例 - -[String](xref:System.String) クラスには、より大きな文字列内のリテラル文字列を検索する際に使用できる文字列の検索メソッドと置換メソッドが数多く含まれています。 正規表現は、次の例に示すように、文字列内の部分文字列のいずれかを検索する場合、または文字列内のパターンを識別する場合に最も役立ちます。 - -### 例 1: 部分文字列の置換 - -氏名に敬称 (Mr.、Mrs.、Miss、または Ms.) が付いている場合がある名前が、宛先リストに含まれるとします。 そのリストから封筒のラベルを生成する場合に敬称が含まれないようにするには、次の例に示すように、正規表現を使用して敬称を削除します。 - -```csharp -using System; -using System.Text.RegularExpressions; - -public class Example -{ - public static void Main() - { - string pattern = "(Mr\\.? |Mrs\\.? |Miss |Ms\\.? )"; - string[] names = { "Mr. Henry Hunt", "Ms. Sara Samuels", - "Abraham Adams", "Ms. Nicole Norris" }; - foreach (string name in names) - Console.WriteLine(Regex.Replace(name, pattern, String.Empty)); - } -} -// The example displays the following output: -// Henry Hunt -// Sara Samuels -// Abraham Adams -// Nicole Norris -``` - -```vb -Imports System.Text.RegularExpressions - -Module Example - Public Sub Main() - Dim pattern As String = "(Mr\.? |Mrs\.? |Miss |Ms\.? )" - Dim names() As String = { "Mr. Henry Hunt", "Ms. Sara Samuels", _ - "Abraham Adams", "Ms. Nicole Norris" } - For Each name As String In names - Console.WriteLine(Regex.Replace(name, pattern, String.Empty)) - Next - End Sub -End Module -' The example displays the following output: -' Henry Hunt -' Sara Samuels -' Abraham Adams -' Nicole Norris -``` - -正規表現パターン `(Mr\.? |Mrs\.? |Miss |Ms\.? )` は、"Mr "、"Mr. "、"Mrs "、"Mrs. "、"Miss "、"Ms"、または "Ms. " の出現と一致します。 [Regex.Replace](xref:System.Text.RegularExpressions.Regex.Replace(System.String,System.String)) メソッドを呼び出すと、一致する文字列が [String.Empty](xref:System.String.Empty) に置き換えられます。つまり、元の文字列から削除されます。 - -### 例 2: 重複する単語の識別 - -記述者が単語を誤って重複入力するというエラーがよくあります。 次の例に示すように、正規表現を使用して重複する単語を識別できます。 - -```csharp -using System; -using System.Text.RegularExpressions; - -public class Class1 -{ - public static void Main() - { - string pattern = @"\b(\w+?)\s\1\b"; - string input = "This this is a nice day. What about this? This tastes good. I saw a a dog."; - foreach (Match match in Regex.Matches(input, pattern, RegexOptions.IgnoreCase)) - Console.WriteLine("{0} (duplicates '{1}') at position {2}", - match.Value, match.Groups[1].Value, match.Index); - } -} -// The example displays the following output: -// This this (duplicates 'This)' at position 0 -// a a (duplicates 'a)' at position 66 -``` - -```vb -Imports System.Text.RegularExpressions - -Module modMain - Public Sub Main() - Dim pattern As String = "\b(\w+?)\s\1\b" - Dim input As String = "This this is a nice day. What about this? This tastes good. I saw a a dog." - For Each match As Match In Regex.Matches(input, pattern, RegexOptions.IgnoreCase) - Console.WriteLine("{0} (duplicates '{1}') at position {2}", _ - match.Value, match.Groups(1).Value, match.Index) - Next - End Sub -End Module -' The example displays the following output: -' This this (duplicates 'This)' at position 0 -' a a (duplicates 'a)' at position 66 -``` - -正規表現パターン `\b(\w+?)\s\1\b` は、次のように解釈できます。 - -構文 | 説明 ------- | ------- -`\b` | ワード境界から開始します。 -`(\w+?)` | 1 つ以上 (ただし、できるだけ少ない文字数) の単語文字と一致します。 同時に、`\1` というグループを形成します。 -`\s` | 空白文字と一致します。 -`\1` | `\1` という名前のグループと等しい部分文字列と一致します。 -`\b` | ワード境界に一致します。 - -[Regex.Matches](xref:System.Text.RegularExpressions.Regex.Matches(System.String,System.String,System.Text.RegularExpressions.RegexOptions)) メソッドは、正規表現オプションを [RegexOptions.IgnoreCase](xref:System.Text.RegularExpressions.RegexOptions.IgnoreCase) に設定して呼び出されます。 したがって、照合操作では大文字と小文字が区別されず、この例では部分文字列 "This this" が重複として識別されます。 - -入力文字列には部分文字列 "this? This" が含まれています。 ただし、句読点が介在するので、重複として識別されません。 - -### 例 3: カルチャに依存した正規表現の動的な構築 - -ここでは、正規表現による強力なテキスト処理と、.NET の柔軟なグローバリゼーション機能を組み合わせて使用する例を紹介します。 この例では、システムの現在のカルチャで用いられている通貨値の形式を調べるために、[NumberFormatInfo](xref:System.Globalization.NumberFormatInfo) オブジェクトが使用されています。 さらに、その情報を基に、テキストから通貨値を抽出する正規表現を動的に構築します。 検出された一致ごとに、数値文字列のみを含んだサブグループを抽出し、[Decimal](xref:System.Decimal) 値に変換して、通算の合計を計算します。 - -```csharp -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Text.RegularExpressions; - -public class Example -{ - public static void Main() - { - // Define text to be parsed. - string input = "Office expenses on 2/13/2008:\n" + - "Paper (500 sheets) $3.95\n" + - "Pencils (box of 10) $1.00\n" + - "Pens (box of 10) $4.49\n" + - "Erasers $2.19\n" + - "Ink jet printer $69.95\n\n" + - "Total Expenses $ 81.58\n"; - - // Get current culture's NumberFormatInfo object. - NumberFormatInfo nfi = CultureInfo.CurrentCulture.NumberFormat; - // Assign needed property values to variables. - string currencySymbol = nfi.CurrencySymbol; - bool symbolPrecedesIfPositive = nfi.CurrencyPositivePattern % 2 == 0; - string groupSeparator = nfi.CurrencyGroupSeparator; - string decimalSeparator = nfi.CurrencyDecimalSeparator; - - // Form regular expression pattern. - string pattern = Regex.Escape( symbolPrecedesIfPositive ? currencySymbol : "") + - @"\s*[-+]?" + "([0-9]{0,3}(" + groupSeparator + "[0-9]{3})*(" + - Regex.Escape(decimalSeparator) + "[0-9]+)?)" + - (! symbolPrecedesIfPositive ? currencySymbol : ""); - Console.WriteLine( "The regular expression pattern is:"); - Console.WriteLine(" " + pattern); - - // Get text that matches regular expression pattern. - MatchCollection matches = Regex.Matches(input, pattern, - RegexOptions.IgnorePatternWhitespace); - Console.WriteLine("Found {0} matches.", matches.Count); - - // Get numeric string, convert it to a value, and add it to List object. - List expenses = new List(); - - foreach (Match match in matches) - expenses.Add(Decimal.Parse(match.Groups[1].Value)); - - // Determine whether total is present and if present, whether it is correct. - decimal total = 0; - foreach (decimal value in expenses) - total += value; - - if (total / 2 == expenses[expenses.Count - 1]) - Console.WriteLine("The expenses total {0:C2}.", expenses[expenses.Count - 1]); - else - Console.WriteLine("The expenses total {0:C2}.", total); - } -} -// The example displays the following output: -// The regular expression pattern is: -// \$\s*[-+]?([0-9]{0,3}(,[0-9]{3})*(\.[0-9]+)?) -// Found 6 matches. -// The expenses total $81.58. -``` - -```vb -Imports System.Collections.Generic -Imports System.Globalization -Imports System.Text.RegularExpressions - -Public Module Example - Public Sub Main() - ' Define text to be parsed. - Dim input As String = "Office expenses on 2/13/2008:" + vbCrLf + _ - "Paper (500 sheets) $3.95" + vbCrLf + _ - "Pencils (box of 10) $1.00" + vbCrLf + _ - "Pens (box of 10) $4.49" + vbCrLf + _ - "Erasers $2.19" + vbCrLf + _ - "Ink jet printer $69.95" + vbCrLf + vbCrLf + _ - "Total Expenses $ 81.58" + vbCrLf - ' Get current culture's NumberFormatInfo object. - Dim nfi As NumberFormatInfo = CultureInfo.CurrentCulture.NumberFormat - ' Assign needed property values to variables. - Dim currencySymbol As String = nfi.CurrencySymbol - Dim symbolPrecedesIfPositive As Boolean = CBool(nfi.CurrencyPositivePattern Mod 2 = 0) - Dim groupSeparator As String = nfi.CurrencyGroupSeparator - Dim decimalSeparator As String = nfi.CurrencyDecimalSeparator - - ' Form regular expression pattern. - Dim pattern As String = Regex.Escape(CStr(IIf(symbolPrecedesIfPositive, currencySymbol, ""))) + _ - "\s*[-+]?" + "([0-9]{0,3}(" + groupSeparator + "[0-9]{3})*(" + _ - Regex.Escape(decimalSeparator) + "[0-9]+)?)" + _ - CStr(IIf(Not symbolPrecedesIfPositive, currencySymbol, "")) - Console.WriteLine("The regular expression pattern is: ") - Console.WriteLine(" " + pattern) - - ' Get text that matches regular expression pattern. - Dim matches As MatchCollection = Regex.Matches(input, pattern, RegexOptions.IgnorePatternWhitespace) - Console.WriteLine("Found {0} matches. ", matches.Count) - - ' Get numeric string, convert it to a value, and add it to List object. - Dim expenses As New List(Of Decimal) - - For Each match As Match In matches - expenses.Add(Decimal.Parse(match.Groups.Item(1).Value)) - Next - - ' Determine whether total is present and if present, whether it is correct. - Dim total As Decimal - For Each value As Decimal In expenses - total += value - Next - - If total / 2 = expenses(expenses.Count - 1) Then - Console.WriteLine("The expenses total {0:C2}.", expenses(expenses.Count - 1)) - Else - Console.WriteLine("The expenses total {0:C2}.", total) - End If - End Sub -End Module -' The example displays the following output: -' The regular expression pattern is: -' \$\s*[-+]?([0-9]{0,3}(,[0-9]{3})*(\.[0-9]+)?) -' Found 6 matches. -' The expenses total $81.58. -``` - -現在 "英語 - 米国" (en-US) カルチャが使用されているコンピューターでは、`\$\s*[-+]?([0-9]{0,3}(,[0-9]{3})*(\.[0-9]+)?)` という正規表現が動的に作成されます。 この正規表現パターンは、次のように解釈できます。 - -構文 | 説明 ------- | ------- -`\$` | 入力文字列に含まれる単一のドル記号 ($) を検索します。 この正規表現パターン文字列に使用されている円記号は、ドル記号を正規表現のアンカーではなく、文字として扱うことを意味します。 ドル記号 ($) を単独で指定した場合、正規表現エンジンは、比較の開始位置を文字列の終端に設定します。現在のカルチャの通貨記号が正規表現記号として解釈されるのを防ぐため、この例では、[Escape](xref:System.Text.RegularExpressions.Regex.Escape(System.String)) メソッドを呼び出して文字をエスケープしています。 -`\s*` | 空白文字の&0; 回以上の繰り返しを検索します。 -`[-+]?` | 正の符号または負の符号の&0; 回または&1; 回の繰り返しを検索します。 -`([0-9]{0,3}(,[0-9]{3})*(\.[0-9]+)?)` | 外側の丸かっこで囲まれている表現は、キャプチャ グループまたは部分式として定義されます。 一致が見つかった場合、一致文字列のその部分に関する情報を、[Match.Groups](xref:System.Text.RegularExpressions.Match.Groups) プロパティから返された [GroupCollection](xref:System.Text.RegularExpressions.GroupCollection) オブジェクトの&2; つ目の [Group](xref:System.Text.RegularExpressions.Group) オブジェクトから取得できます。 (コレクションの&1; つ目の要素は、一致した文字列全体を表します)。 -`[0-9]{0,3}` | 10 進数字 (0 ~ 9) の 0 回以上、3 回以下の繰り返しを検索します。 -`(,[0-9]{3})*` | 桁区切り記号と&3; 桁の&10; 進数字の&0; 回以上の繰り返しを検索します。 -`\.` | 単一の小数点を検索します。 -`[0-9]+` | 10 進数字の&1; 回以上の繰り返しを検索します。 -`(\.[0-9]+)?` | 小数点と&1; 桁以上の数字の&0; 回または&1; 回の繰り返しを検索します。 - -## 関連トピック - -タイトル | 説明 ------ | ----------- -[正規表現言語 - クイック リファレンス](quick-ref.md) | 正規表現を定義するために使う一連の文字、演算子、および構成体について説明します。 -[正規表現のオブジェクト モデル](object-model.md) | 正規表現クラスの使用方法について詳しく説明し、コード例を示します。 -[正規表現の動作の詳細](regex-behavior.md) | .NET の正規表現の機能と動作について説明します。 -[正規表現の例](regex-examples.md) | 正規表現の一般的な使用方法を示すコード例が用意されています。 - - -## 参照 - -[System.Text.RegularExpressions](xref:System.Text.RegularExpressions) - -[System.Text.RegularExpressions.Regex](xref:System.Text.RegularExpressions.Regex) - - +## 参照 + + + [Regular Expressions \- Quick Reference \(Word 形式でダウンロード\)](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.docx) + [Regular Expressions \- Quick Reference \(PDF 形式でダウンロード\)](http://download.microsoft.com/download/D/2/4/D240EBF6-A9BA-4E4F-A63F-AEB6DA0B921C/Regular%20expressions%20quick%20reference.pdf) \ No newline at end of file diff --git a/docs/standard/base-types/standard-date-and-time-format-strings.md b/docs/standard/base-types/standard-date-and-time-format-strings.md new file mode 100644 index 00000000000..f8065ed0f6a --- /dev/null +++ b/docs/standard/base-types/standard-date-and-time-format-strings.md @@ -0,0 +1,421 @@ +--- +title: "標準の日時書式指定文字列 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "日付 [.NET Framework], 書式指定" + - "書式指定子, 日付と時刻" + - "書式指定子, 標準の日付と時刻" + - "書式指定文字列" + - "書式指定 [.NET Framework], 日付" + - "書式指定 [.NET Framework], 時間" + - "標準の日付と時刻の書式指定文字列" + - "標準の DateTime の書式指定文字列" + - "標準の書式指定文字列, 日付と時刻" + - "時刻 [.NET Framework], 書式指定" +ms.assetid: bb79761a-ca08-44ee-b142-b06b3e2fc22b +caps.latest.revision: 92 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 90 +--- +# 標準の日時書式指定文字列 +標準の日時書式指定文字列は、単一の書式指定子を使用して日付と時刻の値のテキスト表現を定義します。 空白を含む複数の文字で構成される日時書式文字列は、カスタム日時書式文字列として解釈されます。詳しくは、「[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)」をご覧ください。 標準またはカスタムの書式指定文字列には、次の 2 とおりの使用方法があります。 + +- 書式設定操作によって生成される文字列を定義する。 + +- 解析操作によって 値または 値に変換できる日付と時刻の値のテキスト表現を定義する。 + + 標準の日時書式指定文字列は、 値で使用することも、 値で使用することもできます。 + +> [!TIP] +> [書式指定ユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Formatting-9c4dae8d)をダウンロードできます。このアプリケーションを使用すると、書式指定文字列を数値または日付と時刻の値に適用して、結果の文字列を表示できます。 + + 標準日時書式指定子を次の表に示します。 特に明記されない限り、特定の標準日時書式指定子は、 値で使用しても、 値で使用してもまったく同じ文字列形式を生成します。 標準の日時書式指定文字列の使用方法については、「[メモ](#Notes)」を参照してください。 + +|書式指定子|説明|例| +|-----------|--------|-------| +|"d"|短い形式の日付パターン。

詳細については、「[短い形式の日付 \("d"\) 書式指定子](#ShortDate)」を参照してください。|2009\-06\-15T13:45:30 \-\> 6\/15\/2009 \(en\-US\)

2009\-06\-15T13:45:30 \-\> 15\/06\/2009 \(fr\-FR\)

2009\-06\-15T13:45:30 \-\> 2009\/06\/15 \(ja\-JP\)| +|"D"|長い形式の日付パターン。

詳細については、「[長い形式の日付 \("D"\) 書式指定子](#LongDate)」を参照してください。|2009\-06\-15T13:45:30 \-\> Monday, June 15, 2009 \(en\-US\)

2009\-06\-15T13:45:30 \-\> 15 июня 2009 г. \(ru\-RU\)

2009\-06\-15T13:45:30 \-\> Montag, 15. Juni 2009 \(de\-DE\)| +|"f"|完全な日付と時刻のパターン \(短い形式の時刻\)。

詳細については、「[完全な日付と短い形式の時刻 \("f"\) 書式指定子](#FullDateShortTime)」を参照してください。|2009\-06\-15T13:45:30 \-\> Monday, June 15, 2009 1:45 PM \(en\-US\)

2009\-06\-15T13:45:30 \-\> den 15 juni 2009 13:45 \(sv\-SE\)

2009\-06\-15T13:45:30 \-\> Δευτέρα, 15 Ιουνίου 2009 1:45 μμ \(el\-GR\)| +|"F"|完全な日付と時刻のパターン \(長い形式の時刻\)。

詳細については、「[完全な日付と長い形式の時刻 \("F"\) 書式指定子](#FullDateLongTime)」を参照してください。|2009\-06\-15T13:45:30 \-\> Monday, June 15, 2009 1:45:30 PM \(en\-US\)

2009\-06\-15T13:45:30 \-\> den 15 juni 2009 13:45:30 \(sv\-SE\)

2009\-06\-15T13:45:30 \-\> Δευτέρα, 15 Ιουνίου 2009 1:45:30 μμ \(el\-GR\)| +|"g"|一般の日付と時刻のパターン \(短い形式の時刻\)。

詳細については、「[一般の日付と短い形式の時刻 \("g"\) 書式指定子](#GeneralDateShortTime)」を参照してください。|2009\-06\-15T13:45:30 \-\> 6\/15\/2009 1:45 PM \(en\-US\)

2009\-06\-15T13:45:30 \-\> 15\/06\/2009 13:45 \(es\-ES\)

2009\-06\-15T13:45:30 \-\> 2009\/6\/15 13:45 \(zh\-CN\)| +|"G"|一般の日付と時刻のパターン \(長い形式の時刻\)。

詳細については、「[一般の日付と長い形式の時刻 \("G"\) 書式指定子](#GeneralDateLongTime)」を参照してください。|2009\-06\-15T13:45:30 \-\> 6\/15\/2009 1:45:30 PM \(en\-US\)

2009\-06\-15T13:45:30 \-\> 15\/06\/2009 13:45:30 \(es\-ES\)

2009\-06\-15T13:45:30 \-\> 2009\/6\/15 13:45:30 \(zh\-CN\)| +|"M"、"m"|月日パターン。

詳細については、「[月 \("M"、"m"\) 書式指定子](#MonthDay)」を参照してください。|2009\-06\-15T13:45:30 \-\> June 15 \(en\-US\)

2009\-06\-15T13:45:30 \-\> 15. juni \(da\-DK\)

2009\-06\-15T13:45:30 \-\> 15 Juni \(id\-ID\)| +|"O"、"o"|ラウンドトリップする日付と時刻のパターン。

詳細については、「[ラウンドトリップ \("O"、"o"\) 書式指定子](#Roundtrip)」を参照してください。| の値:

2009\-06\-15T13:45:30 \(DateTimeKind.Local\) \-\-\> 2009\-06\-15T13:45:30.0000000\-07:00

2009\-06\-15T13:45:30 \(DateTimeKind.Utc\) \-\-\> 2009\-06\-15T13:45:30.0000000Z

2009\-06\-15T13:45:30 \(DateTimeKind.Unspecified\) \-\-\> 2009\-06\-15T13:45:30.0000000

の値:

2009\-06\-15T13:45:30\-07:00 \-\-\> 2009\-06\-15T13:45:30.0000000\-07:00| +|"R"、"r"|RFC1123 パターン。

詳細については、「[RFC1123 \("R"、"r"\) 書式指定子](#RFC1123)」を参照してください。|2009\-06\-15T13:45:30 \-\> Mon, 15 Jun 2009 20:45:30 GMT| +|"s"|並べ替え可能な日付と時刻のパターン。

詳細については、「[並べ替え可能な日付と時刻 \("s"\) 書式指定子](#Sortable)」を参照してください。|2009\-06\-15T13:45:30 \(DateTimeKind.Local\) \-\> 2009\-06\-15T13:45:30

2009\-06\-15T13:45:30 \(DateTimeKind.Utc\) \-\> 2009\-06\-15T13:45:30| +|"t"|短い形式の時刻パターン。

詳細については、「[短い形式の時刻 \("t"\) 書式指定子](#ShortTime)」を参照してください。|2009\-06\-15T13:45:30 \-\> 1:45 PM \(en\-US\)

2009\-06\-15T13:45:30 \-\> 13:45 \(hr\-HR\)

2009\-06\-15T13:45:30 \-\> 01:45 م \(ar\-EG\)| +|"T"|長い形式の時刻パターン。

詳細については、「[長い形式の時刻 \("T"\) 書式指定子](#LongTime)」を参照してください。|2009\-06\-15T13:45:30 \-\> 1:45:30 PM \(en\-US\)

2009\-06\-15T13:45:30 \-\> 13:45:30 \(hr\-HR\)

2009\-06\-15T13:45:30 \-\> 01:45:30 م \(ar\-EG\)| +|"u"|並べ替え可能な日付と時刻のパターン \(世界時刻\)。

詳細については、「[世界共通の並べ替え可能な日付と時刻 \("u"\) 書式指定子](#UniversalSortable)」を参照してください。| 値の場合: 2009\-06\-15T13:45:30 \-\> 2009\-06\-15 13:45:30Z

値の場合: 2009\-06\-15T13:45:30 \-\> 2009\-06\-15 20:45:30Z| +|"U"|完全な日付と時刻のパターン \(世界時刻\)。

詳細については、「[世界共通の完全な日付と時刻 \("U"\) 書式指定子](#UniversalFull)」を参照してください。|2009\-06\-15T13:45:30 \-\> Monday, June 15, 2009 8:45:30 PM \(en\-US\)

2009\-06\-15T13:45:30 \-\> den 15 juni 2009 20:45:30 \(sv\-SE\)

2009\-06\-15T13:45:30 \-\> Δευτέρα, 15 Ιουνίου 2009 8:45:30 μμ \(el\-GR\)| +|"Y"、"y"|年月パターン。

詳細については、「[年月 \("Y"\) 書式指定子](#YearMonth)」を参照してください。|2009\-06\-15T13:45:30 \-\> June, 2009 \(en\-US\)

2009\-06\-15T13:45:30 \-\> juni 2009 \(da\-DK\)

2009\-06\-15T13:45:30 \-\> Juni 2009 \(id\-ID\)| +|その他の 1 文字|未定義の指定子。|ランタイム をスローします。| + +## 標準書式指定文字列の動作 + 書式設定操作では、標準書式指定文字列はカスタム書式指定文字列のエイリアスにすぎません。 エイリアスを使ってカスタム書式指定文字列を表すことの利点は、カスタム書式指定文字列はそれ自体が変化する場合があるのに対し、エイリアスは不変であるという点です。 通常、日付と時刻の値の文字列形式はカルチャによって変わるため、この点は重要です。 たとえば、"d" 標準書式指定文字列は、日付と時刻の値を短い日付形式のパターンで表示することを意味します。 インバリアント カルチャでは、このパターンは "MM\/dd\/yyyy" になります。 fr\-FR カルチャでは、これが "dd\/MM\/yyyy" になります。 ja\-JP カルチャでは、これが "yyyy\/MM\/dd" になります。 + + 書式設定操作の標準書式指定文字列が特定のカルチャのカスタム書式指定文字列に対応付けられている場合は、使用するカスタム書式指定文字列に該当するカルチャを次のいずれかの方法で定義できます。 + +- 既定の \(現在の\) カルチャを使用できます。 次の例では、現在のカルチャの短い日付形式を使って日付を表示します。 この場合、現在のカルチャは en\-US です。 + + [!code-csharp[System.DateTime.Conceptual.Formatting#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTime.Conceptual.Formatting/cs/StandardFormats1.cs#1)] + [!code-vb[System.DateTime.Conceptual.Formatting#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTime.Conceptual.Formatting/vb/StandardFormats1.vb#1)] + +- 使用する書式のカルチャを表す オブジェクトを、 パラメーターを持つメソッドに渡すことができます。 次の例では、pt\-BR カルチャの短い日付形式を使って日付を表示します。 + + [!code-csharp[System.DateTime.Conceptual.Formatting#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTime.Conceptual.Formatting/cs/StandardFormats1.cs#2)] + [!code-vb[System.DateTime.Conceptual.Formatting#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTime.Conceptual.Formatting/vb/StandardFormats1.vb#2)] + +- 書式情報を提供する オブジェクトを、 パラメーターを持つメソッドに渡すことができます。 次の例では、hr\-HR カルチャの オブジェクトに基づく短い日付形式で日付を表示します。 + + [!code-csharp[System.DateTime.Conceptual.Formatting#3](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTime.Conceptual.Formatting/cs/StandardFormats1.cs#3)] + [!code-vb[System.DateTime.Conceptual.Formatting#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTime.Conceptual.Formatting/vb/StandardFormats1.vb#3)] + +> [!NOTE] +> 日付と時刻の値の書式設定に使用するパターンまたは文字列のカスタマイズの詳細については、 クラスに関するトピックを参照してください。 + + 標準書式指定文字列には、長いカスタム書式指定文字列に代わる、不変の省略形としての利用価値もあります。 このカテゴリに該当する標準書式指定文字列は、"O" \(または "o"\)、"R" \(または "r"\)、"s"、"u" の 4 つです。 これらの文字列は、インバリアント カルチャで定義されたカスタム書式指定文字列に対応します。 これらの書式指定文字列によって生成される日時値の文字列形式は、カルチャに関係なく一定です。 次の表で、この 4 つの標準日時書式指定文字列について説明します。 + +|標準書式指定文字列|DateTimeFormatInfo.InvariantInfo プロパティによる定義|カスタム書式指定文字列| +|---------------|-------------------------------------------------|-----------------| +|"O" または "o"|なし|yyyy'\-'MM'\-'dd'T'HH':'mm':'ss'.'fffffffzz| +|"R" または "r"||ddd, dd MMM yyyy HH':'mm':'ss 'GMT'| +|"s"||yyyy'\-'MM'\-'dd'T'HH':'mm':'ss| +|"u"||yyyy'\-'MM'\-'dd HH':'mm':'ss'Z'| + + 標準書式指定文字列は、解析操作の メソッドまたは メソッドで使用することもできます。これらのメソッドでは、解析操作が成功するための特定のパターンに入力文字列が完全に一致している必要があります。 標準書式指定文字列の多くは複数のカスタム書式指定文字列に対応付けられるため、日付と時刻の値はさまざまな書式で表されることがありますが、解析操作は成功します。 メソッドを呼び出すことにより、標準書式指定文字列に対応する 1 つまたは複数のカスタム書式指定文字列を確認できます。 次の例では、"d" \(短い日付形式のパターン\) 標準書式指定文字列に対応付けられているカスタム書式指定文字列を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#17](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/stdandparsing1.cs#17)] + [!code-vb[Formatting.DateAndTime.Standard#17](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/stdandparsing1.vb#17)] + + 以降では、 値および 値の標準書式指定子について説明します。 + + +## 短い形式の日付 \("d"\) 書式指定子 + "d" 標準書式指定子は、特定のカルチャの プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャの プロパティによって返されるカスタム書式指定文字列は "MM\/dd\/yyyy" です。 + + 返される文字列の書式を制御する オブジェクト プロパティの一覧を次の表に示します。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の全体的な書式を定義します。| +||日付の構成要素、つまり年、月、および日を区切る文字列を定義します。| + + 次の例では、"d" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#1)] + [!code-vb[Formatting.DateAndTime.Standard#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#1)] + + [表のトップへ](#table) + + +## 長い形式の日付 \("D"\) 書式指定子 + "D" 標準書式指定子は、現在の プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "dddd, dd MMMM yyyy" です。 + + 返される文字列の書式を制御する オブジェクト プロパティの一覧を次の表に示します。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の全体的な書式を定義します。| +||結果文字列に含まれるローカライズされた日付の名前を定義します。| +||結果文字列に含まれるローカライズされた月の名前を定義します。| + + 次の例では、"D" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#2)] + [!code-vb[Formatting.DateAndTime.Standard#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#2)] + + [表のトップへ](#table) + + +## 完全な日付と短い形式の時刻 \("f"\) 書式指定子 + "f" 標準書式指定子は、長い形式の日付 \("D"\) パターンと短い形式の時刻 \("t"\) パターンを空白で区切って組み合わせて表します。 + + 結果文字列は、特定の オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの プロパティおよび プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の日付要素の書式を定義します。| +||結果文字列の時刻要素の書式を定義します。| +||結果文字列に含まれるローカライズされた日付の名前を定義します。| +||結果文字列に含まれるローカライズされた月の名前を定義します。| +||時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。| +||午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。| +||正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。| + + 次の例では、"f" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#3)] + [!code-vb[Formatting.DateAndTime.Standard#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#3)] + + [表のトップへ](#table) + + +## 完全な日付と長い形式の時刻 \("F"\) 書式指定子 + "F" 標準書式指定子は、現在の プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "dddd, dd MMMM yyyy HH:mm:ss" です。 + + 返される文字列の書式を制御できる オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の全体的な書式を定義します。| +||結果文字列に含まれるローカライズされた日付の名前を定義します。| +||結果文字列に含まれるローカライズされた月の名前を定義します。| +||時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。| +||午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。| +||正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。| + + 次の例では、"F" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#4)] + [!code-vb[Formatting.DateAndTime.Standard#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#4)] + + [表のトップへ](#table) + + +## 一般の日付と短い形式の時刻 \("g"\) 書式指定子 + "g" 標準書式指定子は、短い形式の日付 \("d"\) パターンと短い形式の時刻 \("t"\) パターンを空白で区切って組み合わせて表します。 + + 結果文字列は、特定の オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの プロパティおよび プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の日付要素の書式を定義します。| +||結果文字列の時刻要素の書式を定義します。| +||日付の構成要素、つまり年、月、および日を区切る文字列を定義します。| +||時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。| +||午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。| +||正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。| + + 次の例では、"g" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#5)] + [!code-vb[Formatting.DateAndTime.Standard#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#5)] + + [表のトップへ](#table) + + +## 一般の日付と長い形式の時刻 \("G"\) 書式指定子 + "G" 標準書式指定子は、短い形式の日付 \("d"\) パターンと長い形式の時刻 \("T"\) パターンを空白で区切って組み合わせて表します。 + + 結果文字列は、特定の オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの プロパティおよび プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の日付要素の書式を定義します。| +||結果文字列の時刻要素の書式を定義します。| +||日付の構成要素、つまり年、月、および日を区切る文字列を定義します。| +||時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。| +||午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。| +||正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。| + + 次の例では、"G" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#6](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#6)] + [!code-vb[Formatting.DateAndTime.Standard#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#6)] + + [表のトップへ](#table) + + +## 月 \("M"、"m"\) 書式指定子 + "M" または "m" 標準書式指定子は、現在の プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "MMMM dd" です。 + + 返される文字列の書式を制御する オブジェクト プロパティの一覧を次の表に示します。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の全体的な書式を定義します。| +||結果文字列に含まれるローカライズされた月の名前を定義します。| + + 次の例では、"m" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#7)] + [!code-vb[Formatting.DateAndTime.Standard#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#7)] + + [表のトップへ](#table) + + +## ラウンドトリップ \("O"、"o"\) 書式指定子 + "O" または "o" 標準書式指定子は、タイム ゾーン情報を保持するパターンを使用するカスタム日時書式指定文字列を表し、ISO 8601 に準拠する結果文字列を生成します。 この書式指定子は、 値の日付と時刻の値を、 プロパティと共にテキストとして保持できるように設計されています。 パラメーターが に設定されている場合は、`styles` メソッドまたは メソッドを使用して、書式設定された文字列を変換前の文字列に戻すことができます。 + + "O" または "o" 標準書式指定子は、 値の "yyyy'\-'MM'\-'dd'T'HH':'mm':'ss'.'fffffffK" カスタム書式指定文字列と 値の "yyyy'\-'MM'\-'dd'T'HH':'mm':'ss'.'fffffffzzz" カスタム書式指定文字列に対応します。 この文字列の中で、個々の文字 \(ハイフン、コロン、アルファベットの "T" など\) を区切る一対の単一引用符は、各文字がリテラルであって変更できないことを示します。 アポストロフィは、出力された文字列には現れません。 + + "O" または "o" 標準書式指定子 \(および "yyyy'\-'MM'\-'dd'T'HH':'mm':'ss'.'fffffffK" カスタム書式指定文字列\) は、 値の プロパティを保持するため、ISO 8601 の 3 種類のタイム ゾーン情報表記形式を利用します。 + +- 日時値のタイム ゾーン コンポーネントは、UTC からのオフセットです \(例:\+01:00、\-07:00\)。 のすべての値もこの形式で表記されます。 + +- 日時値のタイム ゾーン コンポーネントは、"Z" \(ゼロ オフセットを示す\) を使用して UTC を表記します。 + +- 日時値にはタイム ゾーン情報はありません。 + + "O" または "o" 標準書式指定子は国際基準に準拠しているため、この指定子を使用する書式設定操作または解析操作では常に、インバリアント カルチャとグレゴリオ暦が使用されます。 + + の `Parse` メソッド、`TryParse` メソッド、`ParseExact` メソッド、`TryParseExact` メソッドに渡される文字列が、これらのいずれかの書式である場合、書式指定子 "O" や "o" を使用して解析できます。 オブジェクトの場合、呼び出す解析オーバーロードの `styles` パラメーターに値 が指定されている必要があります。 "O" または "o" 書式指定子に対応するカスタム書式文字列を使用して解析メソッドを呼び出した結果は、"O" または "o" を使用した場合の結果と同じではないことに注意してください。 これは、カスタム書式文字列を使用する解析メソッドでは、タイム ゾーン コンポーネントがない日時値または "Z" を使用して UTC を示している日時値の文字列形式を解析できないためです。 + + 次の例では、米国太平洋標準時タイム ゾーンのシステム上で "o" 書式指定子を使用して、一連の 値および 値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/o1.cs#8)] + [!code-vb[Formatting.DateAndTime.Standard#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/o1.vb#8)] + + 次の例では、"o" 書式指定子を使用して書式設定された文字列を作成し、日付と時刻の `Parse` メソッドを呼び出して元の日付と時刻の値を復元します。 + + [!code-csharp[Formatting.DateandTime.Standard#16](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Roundtrip1.cs#16)] + [!code-vb[Formatting.DateandTime.Standard#16](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/RoundTrip1.vb#16)] + + [表のトップへ](#table) + + +## RFC1123 \("R"、"r"\) 書式指定子 + "R" または "r" 標準書式指定子は、 プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは定義済みの標準を反映し、プロパティは読み取り専用です。 したがって、使用されるカルチャまたは指定された書式プロバイダーに関係なく、常に同じです。 カスタム書式指定文字列は、"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'" です。 この標準書式指定子を使用した場合、書式設定操作または解析操作で常にインバリアント カルチャが使用されます。 + + 結果文字列は、インバリアント カルチャを表す プロパティによって返される オブジェクトの次のプロパティに影響されます。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の書式を定義します。| +||結果文字列に含まれる日付の省略名を定義します。| +||結果文字列に含まれる月の省略名を定義します。| + + RFC 1123 標準では、時刻は世界協定時刻 \(UTC: Coordinated Universal Time\) で表されますが、書式設定操作では、書式設定される オブジェクトの値は変更されません。 そのため、書式設定操作を行う前に メソッドを呼び出して、 値を UTC に変換する必要があります。 一方、 値では、この変換が自動的に行われます。書式設定操作の前に メソッドを呼び出す必要はありません。 + + 次の例では、米国太平洋標準時タイム ゾーンのシステム上で "r" 書式指定子を使用して、 値および 値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#9](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#9)] + [!code-vb[Formatting.DateAndTime.Standard#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#9)] + + [表のトップへ](#table) + + +## 並べ替え可能な日付と時刻 \("s"\) 書式指定子 + "s" 標準書式指定子は、 プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは定義済みの標準 \(ISO 8601\) を反映し、プロパティは読み取り専用です。 したがって、使用されるカルチャまたは指定された書式プロバイダーに関係なく、常に同じです。 カスタム書式指定文字列は、"yyyy'\-'MM'\-'dd'T'HH':'mm':'ss" です。 + + "s" 書式指定子の目的は、日付と時刻の値に基づいて、一貫して昇順または降順で並べ替える結果の文字列を作成することです。 そのため、"s" 標準書式指定子は一貫性のある形式での日付と時刻の値を表していますが、書式設定操作によって、書式設定の対象となる日付と時刻のオブジェクトの値が プロパティやその 値を反映するように変更されることはありません。 たとえば、日付と時刻値の 2014\-11\-15T18:32:17\+00:00 と 2014\-11\-15T18:32:17\+08:00 を書式設定することで生成される結果文字列は同じになります。 + + この標準書式指定子を使用した場合、書式設定操作または解析操作で常にインバリアント カルチャが使用されます。 + + 次の例では、米国太平洋標準時タイム ゾーンのシステム上で "s" 書式指定子を使用して、 値および 値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#10](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#10)] + [!code-vb[Formatting.DateAndTime.Standard#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#10)] + + [表のトップへ](#table) + + +## 短い形式の時刻 \("t"\) 書式指定子 + "t" 標準書式指定子は、現在の プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "HH:mm" です。 + + 結果文字列は、特定の オブジェクトの書式情報に影響されます。 返される文字列の書式を制御できる オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の時刻要素の書式を定義します。| +||時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。| +||午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。| +||正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。| + + 次の例では、"t" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#11](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#11)] + [!code-vb[Formatting.DateAndTime.Standard#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#11)] + + [表のトップへ](#table) + + +## 長い形式の時刻 \("T"\) 書式指定子 + "T" 標準書式指定子は、特定のカルチャの プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "HH:mm:ss" です。 + + 返される文字列の書式を制御できる オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の時刻要素の書式を定義します。| +||時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。| +||午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。| +||正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。| + + 次の例では、"T" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#12](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#12)] + [!code-vb[Formatting.DateAndTime.Standard#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#12)] + + [表のトップへ](#table) + + +## 世界共通の並べ替え可能な日付と時刻 \("u"\) 書式指定子 + "u" 標準書式指定子は、 プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは定義済みの標準を反映し、プロパティは読み取り専用です。 したがって、使用されるカルチャまたは指定された書式プロバイダーに関係なく、常に同じです。 カスタム書式指定文字列は、"yyyy'\-'MM'\-'dd HH':'mm':'ss'Z'" です。 この標準書式指定子を使用した場合、書式設定操作または解析操作で常にインバリアント カルチャが使用されます。 + + 結果文字列では、時刻は世界協定時刻 \(UTC\) で表される必要がありますが、書式設定操作では、元の 値の変換は実行されません。 そのため、書式設定する前に メソッドを呼び出して、 値を UTC に変換する必要があります。 一方、 値では、この変換が自動的に行われます。書式設定操作の前に メソッドを呼び出す必要はありません。 + + 次の例では、"u" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#13](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#13)] + [!code-vb[Formatting.DateAndTime.Standard#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#13)] + + [表のトップへ](#table) + + +## 世界共通の完全な日付と時刻 \("U"\) 書式指定子 + "U" 標準書式指定子は、特定のカルチャの プロパティで定義されるカスタム日時書式指定文字列を表します。 このパターンは、"F" パターンと同じです。 ただし、 値は、書式設定される前に、自動的に UTC に変換されます。 + + 返される文字列の書式を制御できる オブジェクト プロパティの一覧を次の表に示します。 一部のカルチャの プロパティによって返されるカスタム書式指定子では、一部のプロパティが使用されない場合があります。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の全体的な書式を定義します。| +||結果文字列に含まれるローカライズされた日付の名前を定義します。| +||結果文字列に含まれるローカライズされた月の名前を定義します。| +||時刻の構成要素、つまり時間、分、および秒を区切る文字列を定義します。| +||午前 0 時から正午前までの時刻を 12 時間形式で示す文字列を定義します。| +||正午から午前 0 時前までの時刻を 12 時間形式で示す文字列を定義します。| + + "U" 書式指定子は、 型ではサポートされません。この書式指定子を使って 値の書式を設定しようとすると、 がスローされます。 + + 次の例では、"U" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#14](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#14)] + [!code-vb[Formatting.DateAndTime.Standard#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#14)] + + [表のトップへ](#table) + + +## 年月 \("Y"、"y"\) 書式指定子 + "Y" または "y" 標準書式指定子は、特定のカルチャの プロパティで定義されるカスタム日時書式指定文字列を表します。 たとえば、インバリアント カルチャのカスタム書式指定文字列は "yyyy MMMM" です。 + + 返される文字列の書式を制御する オブジェクト プロパティの一覧を次の表に示します。 + +|プロパティ|説明| +|-----------|--------| +||結果文字列の全体的な書式を定義します。| +||結果文字列に含まれるローカライズされた月の名前を定義します。| + + 次の例では、"y" 書式指定子を使用して、日付と時刻の値を表示します。 + + [!code-csharp[Formatting.DateAndTime.Standard#15](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.DateAndTime.Standard/cs/Standard1.cs#15)] + [!code-vb[Formatting.DateAndTime.Standard#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.DateAndTime.Standard/vb/Standard1.vb#15)] + + [表のトップへ](#table) + + +## ノート + +### コントロール パネルの設定 + コントロール パネルの **\[地域と言語のオプション\]** での設定は、書式設定操作によって生成される結果の文字列に影響します。 これらの設定は、書式設定の制御に使用される値を提供する現在のスレッド カルチャに関連付けられた オブジェクトを初期化するために使用されます。 コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。 + + また、 コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい オブジェクトをインスタンス化した場合、コントロール パネルの **\[地域と言語のオプション\]** 項目で設定されたカスタマイズが新しい オブジェクトに適用されます。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 + +### DateTimeFormatInfo のプロパティ + 書式設定は、現在の オブジェクトのプロパティの影響を受けます。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または書式設定を実行するメソッドの パラメーターによって明示的に指定されます。 パラメーターには、カルチャを表す オブジェクトを指定するか、特定のカルチャの日時書式設定規則を表す オブジェクトを指定する必要があります。 標準日時書式指定子の多くは、現在の オブジェクトのプロパティによって定義されている書式設定パターンのエイリアスです。 標準日時書式指定子によって生成される結果は、対応する プロパティの、対応する日時形式パターンを変更することによって変えることができます。 + +## 参照 + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + [カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md) + [サンプル: .NET Framework 4 の書式設定ユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Formatting-9c4dae8d) \ No newline at end of file diff --git a/docs/standard/base-types/standard-numeric-format-strings.md b/docs/standard/base-types/standard-numeric-format-strings.md new file mode 100644 index 00000000000..fe75a886ee9 --- /dev/null +++ b/docs/standard/base-types/standard-numeric-format-strings.md @@ -0,0 +1,342 @@ +--- +title: "標準の数値書式指定文字列 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "書式指定子, 数値" + - "書式指定子, 標準の数値書式指定文字列" + - "書式指定文字列" + - "書式指定 [.NET Framework], 数" + - "書式指定 (数値の) [.NET Framework]" + - "数値 [.NET Framework], 書式指定" + - "数値書式指定文字列 [.NET Framework]" + - "標準の書式指定文字列, 数値" + - "標準の数値書式指定文字列" +ms.assetid: 580e57eb-ac47-4ffd-bccd-3a1637c2f467 +caps.latest.revision: 99 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 95 +--- +# 標準の数値書式指定文字列 +一般的な数値型を書式設定するには、標準の数値書式指定文字列を使用します。 標準の数値書式指定文字列の形式は `Axx` です。 + +- `A` は *書式指定子* です。これは 1 文字の英文字です。 空白を含む複数の英文字で構成される数値書式指定文字列は、カスタム数値書式指定文字列として解釈されます。 詳細については、「[カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md)」を参照してください。 + +- `xx` は *精度指定子* です。これは省略可能な整数値です。 精度指定子は 0 ~ 99 の範囲で指定され、結果の桁数に影響します。 精度指定子は、文字列形式の数値の桁数を制御することに注意してください。 精度指定子では、数値を丸めません。 丸め操作を実行するには、、または の各メソッドを使用します。 + + *精度指定子*が結果文字列内の小数部の桁数を制御する際、結果文字列は、ゼロから離れる方向に丸められる数を反映します \(つまり、 を使用します\)。 + + 標準の数値書式指定文字列は、すべての数値型の `ToString` メソッドの一部のオーバーロードでサポートされています。 たとえば、 型の メソッドおよび メソッドに数値書式指定文字列を指定できます。 標準の数値書式指定文字列は、.NET Framework の[複合書式指定機能](../../../docs/standard/base-types/composite-formatting.md)でもサポートされています。この機能を使用するメソッドには、`Write` クラスおよび `WriteLine` クラスの一部の メソッドと メソッド、 メソッド、および メソッドがあります。 複合書式指定機能により、複数のデータ項目の文字列表現を 1 つの文字列にまとめ、フィールド幅を指定し、フィールドの数値の位置を揃えることができます。 詳細については、「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」を参照してください。 + +> [!TIP] +> [書式指定ユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Formatting-9c4dae8d)をダウンロードできます。このアプリケーションを使用すると、書式指定文字列を数値または日付と時刻の値に適用して、結果の文字列を表示できます。 + + 次の表に、標準数値書式指定子の説明および書式指定子ごとのサンプル出力を示します。 標準の数値書式指定文字列の使用方法については、「[メモ](#NotesStandardFormatting)」を参照してください。それらを使用する包括的な例については、「[例](#example)」を参照してください。 + +|書式指定子|名前|説明|例| +|-----------|--------|--------|-------| +|"C" または "c"|通貨|結果: 通貨値。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: によって定義されます。

詳細については、「[通貨 \("C"\) 書式指定子](#CFormatString)」を参照してください。|123.456 \("C", en\-US\) \-\> $123.46

123.456 \("C", fr\-FR\) \-\> 123,46 €

123.456 \("C", ja\-JP\) \-\> ¥123

\-123.456 \("C3", en\-US\) \-\> \($123.456\)

\-123.456 \("C3", fr\-FR\) \-\> \-123,456 €

\-123.456 \("C3", ja\-JP\) \-\> \-¥123.456| +|"D" または "d"|Decimal \(10 進数型\)|結果: 必要に応じて負の符号が付く整数。

サポート: 整数型のみ。

精度指定子: 最小桁数。

既定の精度指定子: 必要な最小桁数。

詳細については、「[10 進数 \("D"\) 書式指定子](#DFormatString)」を参照してください。|1234 \("D"\) \-\> 1234

\-1234 \("D6"\) \-\> \-001234| +|"E" または "e"|指数|結果: 指数表記。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: 6。

詳細については、「[指数 \("E"\) 書式指定子](#EFormatString)」を参照してください。|1052.0329112756 \("E", en\-US\) \-\> 1.052033E\+003

1052.0329112756 \("e", fr\-FR\) \-\> 1,052033e\+003

\-1052.0329112756 \("e2", en\-US\) \-\> \-1.05e\+003

\-1052.0329112756 \("E2", fr\_FR\) \-\> \-1,05E\+003| +|"F" または "f"|固定小数点|結果: 必要に応じて負の符号が付く整数と小数。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: によって定義されます。

詳細については、「[固定小数点 \("F"\) 書式指定子](#FFormatString)」を参照してください。|1234.567 \("F", en\-US\) \-\> 1234.57

1234.567 \("F", de\-DE\) \-\> 1234,57

1234 \("F1", en\-US\) \-\> 1234.0

1234 \("F1", de\-DE\) \-\> 1234,0

\-1234.56 \("F4", en\-US\) \-\> \-1234.5600

\-1234.56 \("F4", de\-DE\) \-\> \-1234,5600| +|"G" または "g"|全般|結果: 固定小数点表記または指数表記のいずれかの最も簡潔な形式。

サポート: すべての数値型。

精度指定子: 有効桁数。

既定の精度指定子: 数値型によって異なります。

詳細については、「[一般 \("G"\) 書式指定子](#GFormatString)」を参照してください。|\-123.456 \("G", en\-US\) \-\> \-123.456

\-123.456 \("G", sv\-SE\) \-\> \-123,456

123.4546 \("G4", en\-US\) \-\> 123.5

123.4546 \("G4", sv\-SE\) \-\> 123,5

\-1.234567890e\-25 \("G", en\-US\) \-\> \-1.23456789E\-25

\-1.234567890e\-25 \("G", sv\-SE\) \-\> \-1,23456789E\-25| +|"N" または "n"|Number|結果: 必要に応じて負の符号が付く整数と小数、桁区切り記号、および小数点記号。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: によって定義されます。

詳細については、「[数値 \("N"\) 書式指定子](#NFormatString)」を参照してください。|1234.567 \("N", en\-US\) \-\> 1,234.57

1234.567 \("N", ru\-RU\) \-\> 1 234,57

1234 \("N1", en\-US\) \-\> 1,234.0

1234 \("N1", ru\-RU\) \-\> 1 234,0

\-1234.56 \("N3", en\-US\) \-\> \-1,234.560

\-1234.56 \("N3", ru\-RU\) \-\> \-1 234,560| +|"P" または "p"|パーセント|結果: 数値に 100 を掛けて、パーセント記号を付けて表示します。

サポート: すべての数値型。

精度指定子: 小数部の桁数。

既定の精度指定子: によって定義されます。

詳細については、「[パーセント \("P"\) 書式指定子](#PFormatString)」を参照してください。|1 \("P", en\-US\) \-\> 100.00 %

1 \("P", fr\-FR\) \-\> 100,00 %

\-0.39678 \("P1", en\-US\) \-\> \-39.7 %

\-0.39678 \("P1", fr\-FR\) \-\> \-39,7 %| +|"R" または "r"|ラウンドトリップ|結果: 同じ数値にラウンドトリップできる文字列。

サポート: 、および

精度指定子: 無視されます。

詳細については、「[ラウンドトリップ \("R"\) 書式指定子](#RFormatString)」を参照してください。|123456789.12345678 \("R"\) \-\> 123456789.12345678

\-1234567890.12345678 \("R"\) \-\> \-1234567890.1234567| +|"X" または "x"|16 進数|結果: 16 進数文字列。

サポート: 整数型のみ。

精度指定子: 結果文字列の桁数。

詳細については、「[16 進数 \("X"\) 書式指定子](#XFormatString)」を参照してください。|255 \("X"\) \-\> FF

\-1 \("x"\) \-\> ff

255 \("x4"\) \-\> 00ff

\-1 \("X4"\) \-\> 00FF| +|その他の 1 文字|未定義の指定子|結果: 実行時に をスローします。|| + + +## 標準の数値書式指定文字列の使用 + 標準の数値書式指定文字列を使用すると、次のいずれかの方法で数値の書式を定義できます。 + +- `ToString` パラメーターを持つ `format` メソッドのオーバーロードに渡す。 次の例では、数値の書式を現在のカルチャ \(ここでは en\-US\) の通貨文字列に設定しています。 + + [!code-cpp[Formatting.Numeric.Standard#10](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/standardusage1.cpp#10)] + [!code-csharp[Formatting.Numeric.Standard#10](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/standardusage1.cs#10)] + [!code-vb[Formatting.Numeric.Standard#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/standardusage1.vb#10)] + +- などのメソッドで使用される書式指定項目の `formatString` 引数として渡す。 詳細については、「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」を参照してください。 次の例では、書式指定項目を使用して文字列に通貨値を挿入しています。 + + [!code-cpp[Formatting.Numeric.Standard#11](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/standardusage1.cpp#11)] + [!code-csharp[Formatting.Numeric.Standard#11](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/standardusage1.cs#11)] + [!code-vb[Formatting.Numeric.Standard#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/standardusage1.vb#11)] + + オプションで、`alignment` 引数を渡して数値フィールドの幅と、その値を右揃えまたは左揃えにするかどうかを指定します。 次の例では、通貨の値が 28 文字フィールドでは左揃えになっており、14 文字フィールドでは右揃えになっています。 + + [!code-cpp[Formatting.Numeric.Standard#12](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/standardusage1.cpp#12)] + [!code-csharp[Formatting.Numeric.Standard#12](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/standardusage1.cs#12)] + [!code-vb[Formatting.Numeric.Standard#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/standardusage1.vb#12)] + + 以降では、それぞれの標準の数値書式指定文字列について詳しく説明します。 + + +## 通貨 \("C"\) 書式指定子 + "C" \(通貨\) 書式指定子は、金額を表す文字列に数値を変換します。 精度指定子は、結果文字列の小数部の桁数を示します。 精度指定子を省略すると、 プロパティによって既定の桁数が定義されます。 + + 書式指定される値が指定または既定の小数部の桁数を超えている場合、小数値は結果文字列で丸められます。 指定した小数部の桁数の右側にある値が 5 以上の場合、結果文字列の最後の桁はゼロから離れる方向に丸められます。 + + 結果文字列は、現在の オブジェクトの書式情報に影響されます。 返される文字列の書式を制御する のプロパティの一覧を次の表に示します。 + +|NumberFormatInfo のプロパティ|説明| +|-----------------------------|--------| +||正の値の通貨記号の位置を定義します。| +||負の値の通貨記号の位置を定義し、かっこと プロパティのどちらによって負の符号が表されるかを指定します。| +|| でかっこを使用しないように示されている場合に使用される負の符号を定義します。| +||通貨記号を定義します。| +||通貨値の既定の小数点以下桁数を定義します。 この値は、精度指定子を使用してオーバーライドできます。| +||整数部と小数部を区切る文字列を定義します。| +||整数の桁を区切る文字列を定義します。| +||桁を何桁ごとに区切るかを定義します。| + + 次の例では、通貨書式指定子を使って 値の書式を設定します。 + + [!code-cpp[Formatting.Numeric.Standard#1](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/Standard.cpp#1)] + [!code-csharp[Formatting.Numeric.Standard#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/Standard.cs#1)] + [!code-vb[Formatting.Numeric.Standard#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/Standard.vb#1)] + + [表のトップへ](#table) + + +## 10 進数 \("D"\) 書式指定子 + "D" \(10 進数\) 書式指定子は、0 ~ 9 の数字から成る文字列に数値を変換します。負の数値の場合は、文字列の先頭にマイナス記号が挿入されます。 この書式指定は整数型でだけサポートされています。 + + 精度指定子は、変換後の文字列の最小桁数を示します。 必要に応じて、精度指定子によって指定された桁数に達するまで、数値の左側にゼロが埋め込まれます。 精度指定子が指定されていない場合の既定値は、先行するゼロを含めずに整数を表すために必要な最小値です。 + + 結果文字列は、現在の オブジェクトの書式情報に影響されます。 次の表に示すように、結果文字列の書式に影響を与えるプロパティは 1 つです。 + +|NumberFormatInfo のプロパティ|説明| +|-----------------------------|--------| +||数値が負であることを示す文字列を定義します。| + + 次の例では、10 進数の書式指定子を使って 値の書式を設定します。 + + [!code-cpp[Formatting.Numeric.Standard#2](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/Standard.cpp#2)] + [!code-csharp[Formatting.Numeric.Standard#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/Standard.cs#2)] + [!code-vb[Formatting.Numeric.Standard#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/Standard.vb#2)] + + [表のトップへ](#table) + + +## 指数 \("E"\) 書式指定子 + 指数 \("E"\) 書式指定子は、"\-d.ddd…E\+ddd" または "\-d.ddd…e\+ddd" という形式の文字列に数値を変換します。この "d" は 0 ~ 9 の 1 桁の数字を示します。 負の数値の場合、変換後の文字列の先頭にマイナス記号が挿入されます。 小数点の前には 1 桁の数字が必ず示されます。 + + 精度指定子は、小数部の桁数を示します。 精度指定子を省略すると、小数部の桁数として既定の 6 桁が使用されます。 + + 書式指定子が大文字の場合は指数部の前に "E" が挿入され、小文字の場合は "e" が挿入されます。 指数部は常に、プラス記号またはマイナス記号のいずれかと、3 桁以上の桁で構成されます。 指数部の桁数が最小桁数の 3 桁よりも少ない場合には、3 桁になるようにゼロが埋め込まれます。 + + 結果文字列は、現在の オブジェクトの書式情報に影響されます。 返される文字列の書式を制御する のプロパティの一覧を次の表に示します。 + +|NumberFormatInfo のプロパティ|説明| +|-----------------------------|--------| +||係数と指数部の両方で数値が負であることを示す文字列を定義します。| +||係数の整数部と小数部を区切る文字列を定義します。| +||指数部が正であることを示す文字列を定義します。| + + 次の例では、指数書式指定子を使って 値の書式を設定します。 + + [!code-cpp[Formatting.Numeric.Standard#3](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/Standard.cpp#3)] + [!code-csharp[Formatting.Numeric.Standard#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/Standard.cs#3)] + [!code-vb[Formatting.Numeric.Standard#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/Standard.vb#3)] + + [表のトップへ](#table) + + +## 固定小数点 \("F"\) 書式指定子 + 固定小数点 \("F\) 書式指定子は、"\-ddd.ddd…" という形式の文字列に数値を変換します。 この "d" は 0 ~ 9 の 1 桁の数字を示します。 負の数値の場合、変換後の文字列の先頭にマイナス記号が挿入されます。 + + 精度指定子は、小数部の桁数を示します。 精度指定子を省略すると、現在の プロパティによって桁数が指定されます。 + + 結果文字列は、現在の オブジェクトの書式情報に影響されます。 結果文字列の書式を制御する オブジェクトのプロパティの一覧を次の表に示します。 + +|NumberFormatInfo のプロパティ|説明| +|-----------------------------|--------| +||数値が負であることを示す文字列を定義します。| +||整数部と小数部を区切る文字列を定義します。| +||既定の小数点以下桁数を定義します。 この値は、精度指定子を使用してオーバーライドできます。| + + 次の例では、固定小数点の書式指定子を使って および 値の書式を設定します。 + + [!code-cpp[Formatting.Numeric.Standard#4](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/Standard.cpp#4)] + [!code-csharp[Formatting.Numeric.Standard#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/Standard.cs#4)] + [!code-vb[Formatting.Numeric.Standard#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/Standard.vb#4)] + + [表のトップへ](#table) + + +## 一般 \("G"\) 書式指定子 + 一般 \("G"\) 書式指定子は、数値の型や、精度指定子が指定されているかどうかに応じて、固定小数点表記または指数表記のいずれかの最も簡潔な形式に数値を変換します。 精度指定子は、結果文字列の有効桁数の最大値を定義します。 精度指定子が省略されている場合や、0 である場合は、次の表に示すように、数値の型によって既定の精度が決定されます。 + +|数値型|既定の精度| +|---------|-----------| +| または |3 桁| +| または |5 桁| +| または |10 桁| +||19 桁| +||20 桁| +||50 桁| +||7 桁| +||15 桁| +||29 桁| + + 数値を指数表記で表した結果の指数部が \-5 よりも大きく、精度指定子よりも小さい場合は、固定小数点表記が使用されます。それ以外の場合は、指数表記が使用されます。 結果には必要に応じて小数点が含まれ、小数点の後続のゼロは省略されます。 精度指定子が存在し、指定された精度を結果の有効桁数が超える場合は、超過した桁は丸められ削除されます。 + + ただし、数値が で、精度指定子が省略されている場合は、常に固定小数点表記が使用され、後続のゼロは保持されます。 + + 指数表記が使用される場合、結果の指数部には、書式指定子が "G" のときには "E"、書式指定子が "g" のときには "e" というプレフィックスが付きます。 指数部には少なくとも 2 桁が含まれます。 これは、指数部に少なくとも 3 桁が含まれる、指数書式指定子によって生成される指数表記の書式とは異なります。 + + 結果文字列は、現在の オブジェクトの書式情報に影響されます。 結果文字列の書式を制御する のプロパティの一覧を次の表に示します。 + +|NumberFormatInfo のプロパティ|説明| +|-----------------------------|--------| +||数値が負であることを示す文字列を定義します。| +||整数部と小数部を区切る文字列を定義します。| +||指数部が正であることを示す文字列を定義します。| + + 次の例では、一般書式指定子を使って、さまざまな浮動小数点値の書式を設定します。 + + [!code-cpp[Formatting.Numeric.Standard#5](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/Standard.cpp#5)] + [!code-csharp[Formatting.Numeric.Standard#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/Standard.cs#5)] + [!code-vb[Formatting.Numeric.Standard#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/Standard.vb#5)] + + [表のトップへ](#table) + + +## 数値 \("N"\) 書式指定子 + "N" \(Numeric: 数値\) は、数値を "\-d,ddd,ddd.ddd…" という形式の文字列に変換する書式指定子です。"\-" は負数記号を示し \(必要な場合\)、"d" は数字 \(0 ~ 9\) を示し、"," は桁区切り記号を示し、"." は小数点記号を示します。 精度指定子は、小数部の桁数を示します。 精度指定子を省略すると、現在の プロパティによって小数部の桁数が定義されます。 + + 結果文字列は、現在の オブジェクトの書式情報に影響されます。 結果文字列の書式を制御する のプロパティの一覧を次の表に示します。 + +|NumberFormatInfo のプロパティ|説明| +|-----------------------------|--------| +||数値が負であることを示す文字列を定義します。| +||負の値の書式を定義し、かっこと プロパティのどちらによって負の符号が表されるかを指定します。| +||桁区切り記号の間の桁数を定義します。| +||整数の桁を区切る文字列を定義します。| +||整数部と小数部を区切る文字列を定義します。| +||既定の小数点以下桁数を定義します。 この値は、精度指定子を使用してオーバーライドできます。| + + 次の例では、数値書式指定子を使って、さまざまな浮動小数点値の書式を設定します。 + + [!code-cpp[Formatting.Numeric.Standard#6](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/Standard.cpp#6)] + [!code-csharp[Formatting.Numeric.Standard#6](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/Standard.cs#6)] + [!code-vb[Formatting.Numeric.Standard#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/Standard.vb#6)] + + [表のトップへ](#table) + + +## パーセント \("P"\) 書式指定子 + パーセント \("P"\) 書式指定子は、数値に 100 を掛けて、パーセントを表す文字列に変換します。 精度指定子は、小数部の桁数を示します。 精度指定子を省略すると、現在の プロパティによって指定される既定の桁数が使用されます。 + + 返される文字列の書式を制御する のプロパティの一覧を次の表に示します。 + +|NumberFormatInfo のプロパティ|説明| +|-----------------------------|--------| +||正の値のパーセント記号の位置を定義します。| +||負の値のパーセント記号と負の符号の位置を定義します。| +||数値が負であることを示す文字列を定義します。| +||パーセント記号を定義します。| +||パーセント値の既定の小数点以下桁数を定義します。 この値は、精度指定子を使用してオーバーライドできます。| +||整数部と小数部を区切る文字列を定義します。| +||整数の桁を区切る文字列を定義します。| +||桁を何桁ごとに区切るかを定義します。| + + 次の例では、パーセント書式指定子を使って、浮動小数点値の書式を設定します。 + + [!code-cpp[Formatting.Numeric.Standard#7](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/Standard.cpp#7)] + [!code-csharp[Formatting.Numeric.Standard#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/Standard.cs#7)] + [!code-vb[Formatting.Numeric.Standard#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/Standard.vb#7)] + + [表のトップへ](#table) + + +## ラウンドトリップ \("R"\) 書式指定子 + ラウンドトリップ \("R"\) 書式指定子は、数値の変換後の文字列が、変換前と同じ数値へ戻るように解析されること確認するために使用されます。 この書式指定は、 型、 型、および 型でだけサポートされています。 + + この指定子を使用して 値の書式を設定すると、その文字列形式に 値の有効桁数がすべて含まれます。 この指定子を使用して 値または 値の書式を設定すると、最初に一般書式を使用して数値がテストされます。このとき、 の場合は 15 桁、 の場合は 7 桁の有効桁数が使用されます。 変換後の文字列を解析して変換前の数値へ戻った場合には、一般書式指定子を使用してこの数値の書式が設定されます。 変換後の文字列が解析によって変換前の数値に戻らなかった場合、 は 17 桁、 は 9 桁の有効桁数でこの値の形式が設定されます。 + + 精度指定子は、指定できますが無視されます。 ラウンドトリップ指定子と精度指定子の両方を指定すると、ラウンドトリップ指定子が優先されます。 + + 結果文字列は、現在の オブジェクトの書式情報に影響されます。 結果文字列の書式を制御する のプロパティの一覧を次の表に示します。 + +|NumberFormatInfo のプロパティ|説明| +|-----------------------------|--------| +||数値が負であることを示す文字列を定義します。| +||整数部と小数部を区切る文字列を定義します。| +||指数部が正であることを示す文字列を定義します。| + + 次の例では、ラウンドトリップ書式指定子を使って 値の書式を設定します。 + + [!code-cpp[Formatting.Numeric.Standard#8](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/Standard.cpp#8)] + [!code-csharp[Formatting.Numeric.Standard#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/Standard.cs#8)] + [!code-vb[Formatting.Numeric.Standard#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/Standard.vb#8)] + +> [!IMPORTANT] +> 場合によっては、`/platform:x64` スイッチまたは `/platform:anycpu` スイッチを使用してコンパイルして 64 ビット システムで実行すると、"R" 標準の数値書式指定文字列で書式設定される 値のラウンドトリップに失敗することがあります。 詳細については、次の段落を参照してください。 + + `/platform:x64` スイッチまたは `/platform:anycpu` スイッチを使用してコンパイルして 64 ビット システムで実行すると、「R」標準の数値書式指定文字列を使用して書式設定される 値のラウンドトリップが失敗するという問題を回避するために、 値を「G17」標準の数値書式指定文字列を使用して書式設定することができます。 次の例では、ラウンドトリップに失敗する 値を持つ "R" 書式指定文字列を使用しています。元の値のラウンドトリップに成功する "G17" 書式指定文字列も使用しています。 + + [!code-csharp[System.Double.ToString#5](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.Double.ToString/cs/roundtripex1.cs#5)] + [!code-vb[System.Double.ToString#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.Double.ToString/vb/roundtripex1.vb#5)] + + [表のトップへ](#table) + + +## 16 進数 \("X"\) 書式指定子 + 16 進数 \("X"\) 書式指定子は、16 進数文字列に数値を変換します。 書式指定子の大文字と小文字によって、9 よりも大きい 16 進数値を示すアルファベット文字が大文字と小文字のどちらで表示されるかが決まります。 たとえば、"X" を指定すると "ABCDEF" となり、"x" を指定すると "abcdef" となります。 この書式指定は整数型でだけサポートされています。 + + 精度指定子は、変換後の文字列の最小桁数を示します。 必要に応じて、精度指定子によって指定された桁数に達するまで、数値の左側にゼロが埋め込まれます。 + + 結果文字列は、現在の オブジェクトの書式情報に影響されません。 + + 次の例では、16 進数の書式指定子を使って 値の書式を設定します。 + + [!code-cpp[Formatting.Numeric.Standard#9](../../../samples/snippets/cpp/VS_Snippets_CLR/Formatting.Numeric.Standard/cpp/Standard.cpp#9)] + [!code-csharp[Formatting.Numeric.Standard#9](../../../samples/snippets/csharp/VS_Snippets_CLR/Formatting.Numeric.Standard/cs/Standard.cs#9)] + [!code-vb[Formatting.Numeric.Standard#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Formatting.Numeric.Standard/vb/Standard.vb#9)] + + [表のトップへ](#table) + + +## ノート + +### コントロール パネルの設定 + コントロール パネルの **\[地域と言語のオプション\]** での設定は、書式設定操作によって生成される結果の文字列に影響します。 これらの設定は、書式設定の制御に使用される値を提供する現在のスレッド カルチャに関連付けられた オブジェクトを初期化するために使用されます。 コンピューターで使用する設定が異なる場合は、生成される文字列も異なります。 + + また、 コンストラクターを使用して、現在のシステム カルチャと同じカルチャを表す新しい オブジェクトをインスタンス化した場合、コントロール パネルの **\[地域と言語のオプション\]** 項目で設定されたカスタマイズが新しい オブジェクトに適用されます。 コンストラクターを使用すると、システムに対するカスタマイズが反映されない オブジェクトを作成できます。 + +### NumberFormatInfo のプロパティ + 書式設定は、現在の オブジェクトのプロパティの影響を受けます。このオブジェクトは、現在のスレッド カルチャによって暗黙的に指定されるか、または書式設定を実行するメソッドの パラメーターによって明示的に指定されます。 このパラメーターには、 オブジェクトまたは オブジェクトを指定してください。 + +> [!NOTE] +> 数値の書式設定に使用するパターンまたは文字列のカスタマイズの詳細については、 クラスに関するトピックを参照してください。 + +### 整数数値型と浮動小数点数値型 + 標準の数値書式指定子の記述で、整数数値型または浮動小数点数値型が参照されている場合があります。 整数数値型には、、および があります。 浮動小数点数値型には、、および があります。 + +### 浮動小数点の無限大値と NaN \(非数\) 値 + の浮動小数点型または の浮動小数点型が正の無限大、負の無限大、または NaN \(非数\) である場合は、書式指定文字列とは関係なく、現在適用可能な オブジェクトによって指定される 、または の各プロパティの値は、書式設定された文字列となります。 + + +## 例 + 次の例では、en\-US カルチャおよびすべての標準数値書式指定子を使用して、整数値と浮動小数点数値を書式設定します。 この例では 2 つの特定の数値型 \( および \) を使用していますが、他の数値基本型 \(、および \) でも類似した結果が得られます。 + + [!code-csharp[system.x.tostring-and-culture#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.X.ToString-and-Culture/cs/xts.cs#1)] + [!code-vb[system.x.tostring-and-culture#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.X.ToString-and-Culture/vb/xts.vb#1)] + +## 参照 + + [カスタム数値書式指定文字列](../../../docs/standard/base-types/custom-numeric-format-strings.md) + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + [方法: 数値に先行するゼロを埋め込む](../../../docs/standard/base-types/how-to-pad-a-number-with-leading-zeros.md) + [サンプル: .NET Framework 4 の書式設定ユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Formatting-9c4dae8d) + [複合書式指定](../../../docs/standard/base-types/composite-formatting.md) \ No newline at end of file diff --git a/docs/standard/base-types/standard-timespan-format-strings.md b/docs/standard/base-types/standard-timespan-format-strings.md new file mode 100644 index 00000000000..616d784d71c --- /dev/null +++ b/docs/standard/base-types/standard-timespan-format-strings.md @@ -0,0 +1,137 @@ +--- +title: "標準の時間間隔書式指定文字列 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "書式指定子, 標準時間間隔" + - "書式指定子, 時間間隔" + - "書式指定文字列" + - "書式指定 [.NET Framework], 時間" + - "書式指定 [.NET Framework], 時間間隔" + - "標準の書式指定文字列, 時間間隔" + - "標準時間間隔書式指定文字列" + - "標準の TimeSpan 書式指定文字列" + - "時刻 [.NET Framework], 書式指定" + - "時間間隔 [.NET Framework], 書式指定" +ms.assetid: 9f6c95eb-63ae-4dcc-9c32-f81985c75794 +caps.latest.revision: 16 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 標準の時間間隔書式指定文字列 +標準の 書式指定文字列は、単一の書式指定子を使用して、書式設定操作によって生成される 値のテキスト表現を定義します。 空白を含む複数の文字で構成される書式指定文字列は、カスタムの 書式指定文字列として解釈されます。 詳細については、「[カスタム時間間隔書式指定文字列](../../../docs/standard/base-types/custom-timespan-format-strings.md)」を参照してください。 + + 値の文字列形式は、 メソッドのオーバーロードの呼び出しと、 などの複合書式指定をサポートするメソッドによって生成されます。 詳細については、「[型の書式設定](../../../docs/standard/base-types/formatting-types.md)」および「[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)」を参照してください。 次の例では、書式設定操作で標準書式指定文字列を使用する方法を示しています。 + + [!code-csharp[Conceptual.TimeSpan.Standard#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.standard/cs/formatexample1.cs#2)] + [!code-vb[Conceptual.TimeSpan.Standard#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.standard/vb/formatexample1.vb#2)] + + 標準の 書式指定文字列は、解析操作に必要な入力文字列の書式を定義するために メソッドと メソッドでも使用されます \(解析では、特定の値の文字列形式が、その値に変換されます\)。次のコード例では、解析操作で標準書式指定文字列を使用する方法を示しています。 + + [!code-csharp[Conceptual.TimeSpan.Standard#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.standard/cs/parseexample1.cs#3)] + [!code-vb[Conceptual.TimeSpan.Standard#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.standard/vb/parseexample1.vb#3)] + + 標準の時間間隔書式指定子を次の表に示します。 + +|書式指定子|名前|説明|例| +|-----------|--------|--------|-------| +|"c"|固定 \(不変\) 書式|この指定子はカルチャに依存しません。 `[-][d’.’]hh’:’mm’:’ss[‘.’fffffff]` の書式を使用します。

\("t" と "T" の各書式指定文字列によって生成される結果は同じになります。\)

詳細については、「[固定の \("c"\) 書式指定子](#Constant)」を参照してください。|`TimeSpan.Zero` \-\> 00:00:00

`New TimeSpan(0, 0, 30, 0)` \-\> 00:30:00

`New TimeSpan(3, 17, 25, 30, 500)` \-\> 3.17:25:30.5000000| +|"g"|一般の短い書式|この指定子は必要なものだけを出力します。 カルチャに依存し、`[-][d’:’]h’:’mm’:’ss[.FFFFFFF]` の書式になります。

詳細については、「[一般の短い \("g"\) 書式指定子](#GeneralShort)」を参照してください。|`New TimeSpan(1, 3, 16, 50, 500)` \-\> 1:3:16:50.5 \(en\-US\)

`New TimeSpan(1, 3, 16, 50, 500)` \-\> 1:3:16:50,5 \(fr\-FR\)

`New TimeSpan(1, 3, 16, 50, 599)` \-\> 1:3:16:50.599 \(en\-US\)

`New TimeSpan(1, 3, 16, 50, 599)` \-\> 1:3:16:50,599 \(fr\-FR\)| +|"G"|一般の長い書式|この指定子は、常に日数と 7 桁の小数部を出力します。 カルチャに依存し、`[-]d’:’hh’:’mm’:’ss.fffffff` の書式になります。

詳細については、「[一般の長い \("G"\) 書式指定子](#GeneralLong)」を参照してください。|`New TimeSpan(18, 30, 0)` \-\> 0:18:30:00.0000000 \(en\-US\)

`New TimeSpan(18, 30, 0)` \-\> 0:18:30:00,0000000 \(fr\-FR\)| + + +## 固定の \("c"\) 書式指定子 + "c" 書式指定子は、次の書式で 値の文字列形式を返します。 + + \[\-\]\[*d*.\]*hh*:*mm*:*ss*\[.*fffffff*\] + + 角かっこ \(\[ および \]\) 内の要素は省略可能です。 コロン \(:\) とピリオド \(.\) は、リテラル文字です。 残りの要素について次の表で説明します。 + +|要素|説明| +|--------|--------| +|*\-*|負の時間間隔を示す、省略可能なマイナス記号。| +|*d*|先行ゼロを付けない、省略可能な日数。| +|*hh*|"00" ~ "23" の範囲の時間数。| +|*mm*|"00" ~ "59" の範囲の分数。| +|*ss*|"0" ~ "59" の範囲の秒数。| +|*fffffff*|省略可能な秒の小数部。 "0000001" \(1 ティック、つまり 1,000 万分の 1 秒\) ~ "9999999" \(1,000 万分の 9,999,999 秒、つまり 1 秒より 1 ティック少ない\) までの範囲の値が可能です。| + + "g" および "G" 書式指定子とは異なり、"c" 書式指定子はカルチャに依存しません。 不変で、かつ [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] より前のすべての .NET Framework バージョンに共通する、 値の文字列形式を生成します。" c" は、既定の 書式文字列です。 メソッドは、"c" 書式指定文字列を使用して時間間隔値の書式を設定します。 + +> [!NOTE] +> では、動作が "c" 標準書式指定文字列と同じである "t" と "T" の標準書式指定文字列もサポートされます。 + + 次の例では、2 つの オブジェクトのインスタンスを作成し、これらを使用して算術演算を実行し、結果を表示します。 いずれの場合も、複合書式指定を使用し、"c" 書式指定子を使用して 値を表示します。 + + [!code-csharp[Conceptual.TimeSpan.Standard#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.standard/cs/standardc1.cs#1)] + [!code-vb[Conceptual.TimeSpan.Standard#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.standard/vb/standardc1.vb#1)] + + [表のトップへ](#Top) + + +## 一般の短い \("g"\) 書式指定子 + "g" 書式指定子は、必要な要素のみを含めることによって、コンパクトな形式で 値の文字列形式を返します。 次の書式を使用します。 + + \[\-\]\[*d*:\]*h*:*mm*:*ss*\[.*FFFFFFF*\] + + 角かっこ \(\[ および \]\) 内の要素は省略可能です。 コロン \(:\) は、リテラル文字です。 残りの要素について次の表で説明します。 + +|要素|説明| +|--------|--------| +|*\-*|負の時間間隔を示す、省略可能なマイナス記号。| +|*d*|先行ゼロを付けない、省略可能な日数。| +|*h*|先行ゼロを付けない、"0" ~ "23" の範囲の時間数。| +|*mm*|"00" ~ "59" の範囲の分数。| +|*ss*|"00" ~ "59" の範囲の秒数。| +|*.*|秒の小数部の区切り記号。 ユーザー オーバーライドなしで指定されているカルチャの プロパティと同等です。| +|*FFFFFFF*|秒の小数部。 可能な限り少ない桁数が表示されます。| + + "G" 書式指定子と同様に、"g" 書式指定子はローカライズされます。 その秒の小数部の区切り記号は、現在のカルチャまたは指定されているカルチャの プロパティに基づきます。 + + 次の例では、2 つの オブジェクトのインスタンスを作成し、これらを使用して算術演算を実行し、結果を表示します。 いずれの場合も、複合書式指定を使用し、"g" 書式指定子を使用して 値を表示します。 また、現在のシステム カルチャ \(この場合は、英語 \- 米国 \(en\-US\)\) とフランス語 \- フランス \(fr\-FR\) カルチャの書式指定規則を使用して、 値の書式を設定します。 + + [!code-csharp[Conceptual.TimeSpan.Standard#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.standard/cs/standardshort1.cs#4)] + [!code-vb[Conceptual.TimeSpan.Standard#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.standard/vb/standardshort1.vb#4)] + + [表のトップへ](#Top) + + +## 一般の長い \("G"\) 書式指定子 + "G" 書式指定子は、常に日数と秒の小数部の両方を含む長い形式で、 値の文字列形式を返します。 "G" 標準書式指定子によって生成される文字列は、次の書式になります。 + + \[\-\]*d*:*hh*:*mm*:*ss*.*fffffff* + + 角かっこ \(\[ および \]\) 内の要素は省略可能です。 コロン \(:\) は、リテラル文字です。 残りの要素について次の表で説明します。 + +|要素|説明| +|--------|--------| +|*\-*|負の時間間隔を示す、省略可能なマイナス記号。| +|*d*|先行ゼロを付けない日数。| +|*hh*|"00" ~ "23" の範囲の時間数。| +|*mm*|"00" ~ "59" の範囲の分数。| +|*ss*|"00" ~ "59" の範囲の秒数。| +|*.*|秒の小数部の区切り記号。 ユーザー オーバーライドなしで指定されているカルチャの プロパティと同等です。| +|*fffffff*|秒の小数部。| + + "G" 書式指定子と同様に、"g" 書式指定子はローカライズされます。 その秒の小数部の区切り記号は、現在のカルチャまたは指定されているカルチャの プロパティに基づきます。 + + 次の例では、2 つの オブジェクトのインスタンスを作成し、これらを使用して算術演算を実行し、結果を表示します。 いずれの場合も、複合書式指定を使用し、"G" 書式指定子を使用して 値を表示します。 また、現在のシステム カルチャ \(この場合は、英語 \- 米国 \(en\-US\)\) とフランス語 \- フランス \(fr\-FR\) カルチャの書式指定規則を使用して、 値の書式を設定します。 + + [!code-csharp[Conceptual.TimeSpan.Standard#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.timespan.standard/cs/standardlong1.cs#5)] + [!code-vb[Conceptual.TimeSpan.Standard#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.timespan.standard/vb/standardlong1.vb#5)] + + [表のトップへ](#Top) + +## 参照 + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) + [カスタム時間間隔書式指定文字列](../../../docs/standard/base-types/custom-timespan-format-strings.md) + [文字列の解析](../../../docs/standard/base-types/parsing-strings.md) \ No newline at end of file diff --git a/docs/standard/base-types/stringbuilder.md b/docs/standard/base-types/stringbuilder.md index ea83cbb97e0..378388e062e 100644 --- a/docs/standard/base-types/stringbuilder.md +++ b/docs/standard/base-types/stringbuilder.md @@ -1,255 +1,117 @@ --- -title: "StringBuilder クラスの使用" -description: "StringBuilder クラスの使用" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: f4f5d1c7-d84d-4867-810f-2708cd6de0da -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 076e10e095b50cc96187f2ec13ade2365d83dad3 -ms.lasthandoff: 03/02/2017 - ---- - -# StringBuilder クラスの使用 - -[String](xref:System.String) オブジェクトは、変更できません。 [System.String](xref:System.String) クラスのメソッドのいずれかを使用するたびに、新しい文字列オブジェクトをメモリ内に作成します。その際、その新しいオブジェクトに対して領域を新たに割り当てる必要があります。 文字列に対して何度も変更を実行する必要がある場合、新しい [String](xref:System.String) オブジェクトの作成に関連したオーバーヘッドが高コストになる可能性があります。 新しいオブジェクトを作成せずに文字列を変更したい場合は、[System.Text.StringBuilder](xref:System.Text.StringBuilder) クラスを使用することができます。 たとえば、ループで多数の文字列を連結する場合に、[StringBuilder](xref:System.Text.StringBuilder) クラスを使用してパフォーマンスを向上させることができます。 - -## System.Text 名前空間のインポート - -[StringBuilder](xref:System.Text.StringBuilder) は [System.Text](xref:System.Text) 名前空間にあります。 完全修飾型名をコードに指定しなくてもすむように、[System.Text](xref:System.Text) 名前空間をインポートすることができます。 - -```csharp -using System; -using System.Text; -``` - -```vb -Imports System.Text -``` - -## StringBuilder オブジェクトのインスタンス化 - -以下の例に示すように、オーバーロードされたコンストラクター メソッドの&1; つで変数を初期化することにより、[StringBuilder](xref:System.Text.StringBuilder) クラスの新しいインスタンスを作成することができます。 - -```csharp -StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); -``` - -```vb -Dim MyStringBuilder As New StringBuilder("Hello World!") -``` - -## 容量と長さの設定 - -[StringBuilder](xref:System.Text.StringBuilder) は、カプセル化する文字列内の文字数を拡張できるようにする動的オブジェクトですが、保持可能な最大文字数の値を指定することができます。 この値を、オブジェクトの容量と呼びます。これを現行の [StringBuilder](xref:System.Text.StringBuilder) が保持する文字列の長さと混同すべきではありません。 たとえば、"Hello" という長さ 5 の文字列を持つ [StringBuilder](xref:System.Text.StringBuilder) クラスの新しいインスタンスを作成するときに、オブジェクトの最大容量として 25 を指定することができます。 [StringBuilder](xref:System.Text.StringBuilder) を変更する際、容量に達するまでは、自動再割り当ては発生しません。 容量に達すると、新しい領域が自動的に割り当てられ、容量が&2; 倍になります。 オーバーロードされたコンストラクターのいずれかを使用して、[StringBuilder](xref:System.Text.StringBuilder) クラスの容量を指定することができます。 次の例は、`MyStringBuilder` オブジェクトを最大 25 の領域に拡張できることを示しています。 - -```csharp -StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25); -``` - -```vb -Dim MyStringBuilder As New StringBuilder("Hello World!", 25) -``` - -また、[Capacity](xref:System.Text.StringBuilder.Capacity) の読み取り/書き込みプロパティを使用して、オブジェクトの最大長を設定することができます。 次の例では、[Capacity](xref:System.Text.StringBuilder.Capacity) プロパティを使用して、オブジェクトの最大長を定義しています。 - -```csharp -MyStringBuilder.Capacity = 25; -``` - -```vb -MyStringBuilder.Capacity = 25 -``` - -[EnsureCapacity](xref:System.Text.StringBuilder.EnsureCapacity(System.Int32)) メソッドを使用して、現行 [StringBuilder](xref:System.Text.StringBuilder) の容量を確認することができます。 容量が渡された値よりも大きい場合、変更は行われません。しかし、容量が渡された値より小さい場合は、渡された値と一致するよう現行の容量が変更されます。 - -[Length](xref:System.Text.StringBuilder.Length) プロパティを表示または設定することもできます。 [Length](xref:System.Text.StringBuilder.Length) プロパティを、[Capacity](xref:System.Text.StringBuilder.Capacity) プロパティより大きな値に設定する場合、[Capacity](xref:System.Text.StringBuilder.Capacity) プロパティは [Length](xref:System.Text.StringBuilder.Length) プロパティと同じ値に自動的に変更されます。 [Length](xref:System.Text.StringBuilder.Length) プロパティを、現行の [StringBuilder](xref:System.Text.StringBuilder) 内の文字列の長さより小さい値に設定すると、文字列は短縮されます。 - -## StringBuilder 文字列の変更 - -[StringBuilder](xref:System.Text.StringBuilder) の内容の変更に使用できるメソッドを次の表に一覧表示します。 - -メソッド名 | 使用 ------------ | --- -[StringBuilder.Append](xref:System.Text.StringBuilder.Append(System.Char)) | 現行の [StringBuilder](xref:System.Text.StringBuilder) の末尾に情報を追加します。 -[StringBuilder.AppendFormat](xref:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object)) | 文字列に渡される書式指定子を、書式設定されたテキスト文字列で置き換えます。 -[StringBuilder.Insert](xref:System.Text.StringBuilder.Insert(System.Int32,System.Char)) | 現行の [StringBuilder](xref:System.Text.StringBuilder) の指定されたインデックスに、文字列またはオブジェクトを挿入します。 -[StringBuilder.Remove](xref:System.Text.StringBuilder.Remove(System.Int32,System.Int32)) | 現行の [StringBuilder](xref:System.Text.StringBuilder) から、指定された文字数を削除します。 -[StringBuilder.Replace](xref:System.Text.StringBuilder.Replace(System.Char,System.Char)) | 指定されたインデックスで、指定された文字を置き換えます。 - -### 追加 - -[StringBuilder.Append](xref:System.Text.StringBuilder.Append(System.Char)) メソッドを使用して、現行 [StringBuilder](xref:System.Text.StringBuilder) によって表される文字列の末尾にオブジェクトのテキストまたは文字列形式を追加することができます。 次の例では、[StringBuilder](xref:System.Text.StringBuilder) を "Hello World" に初期設定し、テキストをオブジェクトの末尾に追加しています。 領域は、必要に応じて自動的に割り当てられます。 - -```csharp -StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); -MyStringBuilder.Append(" What a beautiful day."); -Console.WriteLine(MyStringBuilder); -// The example displays the following output: -// Hello World! What a beautiful day. -``` - -```vb -Dim MyStringBuilder As New StringBuilder("Hello World!") -MyStringBuilder.Append(" What a beautiful day.") -Console.WriteLine(MyStringBuilder) -' The example displays the following output: -' Hello World! What a beautiful day. -``` - -### AppendFormat - -[StringBuilder.AppendFormat](xref:System.Text.StringBuilder.AppendFormat(System.IFormatProvider,System.String,System.Object)) メソッドは、[StringBuilder](xref:System.Text.StringBuilder) オブジェクトの末尾にテキストを追加します。 これは、書式設定される&1; つ以上のオブジェクトの [IFormattable](xref:System.IFormattable) 実装を呼び出すことにより、複合書式機能をサポートしています (詳細については、[Composite Formatting](composite-format.md) を参照してください)。 そのため、数値、日時、および列挙の値に対して標準書式文字列を受け取り、数値と日時の値、およびカスタム型に定義されている書式文字列に対してカスタム書式文字列を受け取ります。 (書式設定については、「[型の書式設定](formatting-types.md)」を参照してください。)このメソッドを使用して、変数の書式をカスタマイズし、その値を [StringBuilder](xref:System.Text.StringBuilder) に追加することができます。 次の例では、AppendFormat メソッドを使用して、[StringBuilder](xref:System.Text.StringBuilder) オブジェクトの末尾に、通貨値として書式設定されている整数値を挿入しています。 - -```csharp -int MyInt = 25; -StringBuilder MyStringBuilder = new StringBuilder("Your total is "); -MyStringBuilder.AppendFormat("{0:C} ", MyInt); -Console.WriteLine(MyStringBuilder); -// The example displays the following output: -// Your total is $25.00 -``` - -```vb -Dim MyInt As Integer = 25 -Dim MyStringBuilder As New StringBuilder("Your total is ") -MyStringBuilder.AppendFormat("{0:C} ", MyInt) -Console.WriteLine(MyStringBuilder) -' The example displays the following output: -' Your total is $25.00 -``` - -### 挿入 - -[StringBuilder.Insert](xref:System.Text.StringBuilder.Insert(System.Int32,System.Char)) メソッドは、現行の [StringBuilder](xref:System.Text.StringBuilder) オブジェクトの指定された位置に、文字列またはオブジェクトを追加します。 次の例では、このメソッドを使用して、[StringBuilder](xref:System.Text.StringBuilder) オブジェクトの&6; 番目の位置に単語を挿入しています。 - -```csharp -StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); -MyStringBuilder.Insert(6,"Beautiful "); -Console.WriteLine(MyStringBuilder); -// The example displays the following output: -// Hello Beautiful World! -``` - -```vb -Dim MyStringBuilder As New StringBuilder("Hello World!") -MyStringBuilder.Insert(6, "Beautiful ") -Console.WriteLine(MyStringBuilder) -' The example displays the following output: -' Hello Beautiful World! -``` - -### 削除 - -[StringBuilder.Remove](xref:System.Text.StringBuilder.Remove(System.Int32,System.Int32)) メソッドを使用して、現行の [StringBuilder](xref:System.Text.StringBuilder) オブジェクトから指定された文字数を削除します (0 から始まる指定されたインデックスで開始します)。 次の例では、[Remove](xref:System.Text.StringBuilder.Remove(System.Int32,System.Int32)) メソッドを使用して、[StringBuilder](xref:System.Text.StringBuilder) オブジェクトを短縮しています。 - -```csharp -StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); -MyStringBuilder.Remove(5,7); -Console.WriteLine(MyStringBuilder); -// The example displays the following output: -// Hello -``` - -```vb -Dim MyStringBuilder As New StringBuilder("Hello World!") -MyStringBuilder.Remove(5, 7) -Console.WriteLine(MyStringBuilder) -' The example displays the following output: -' Hello -``` - -### 置換 - -[StringBuilder.Replace](xref:System.Text.StringBuilder.Replace(System.Char,System.Char)) | 指定されたインデックスで、指定された文字を置き換えます。 -メソッドを使用して、[StringBuilder](xref:System.Text.StringBuilder) オブジェクト内の文字を、指定された別の文字で置き換えることができます。 次の例では、[Replace](xref:System.Text.StringBuilder.Replace(System.Char,System.Char)) | 指定されたインデックスで、指定された文字を置き換えます。 -メソッドを使用して、感嘆符 (!) のすべてのインスタンスを求めて [StringBuilder](xref:System.Text.StringBuilder) オブジェクトを検索し、疑問符 (?) で置き換えています。 - - ```csharp - StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); -MyStringBuilder.Replace('!', '?'); -Console.WriteLine(MyStringBuilder); -// The example displays the following output: -// Hello World? -``` - -```vb -Dim MyStringBuilder As New StringBuilder("Hello World!") -MyStringBuilder.Replace("!"c, "?"c) -Console.WriteLine(MyStringBuilder) -' The example displays the following output: -' Hello World? -``` - -## 文字列への StringBuilder オブジェクトの変換 - -[StringBuilder](xref:System.Text.StringBuilder) オブジェクトで表される文字列を [String](xref:System.String) パラメーターを持つメソッドに渡すかそれをユーザー インターフェイスに表示するには、事前に [StringBuilder](xref:System.Text.StringBuilder) オブジェクトを [String](xref:System.String) オブジェクトに変換する必要があります。 この変換は、[StringBuilder.ToString](xref:System.Text.StringBuilder.ToString) メソッドを呼び出すことによって行います。 次の例では、いくつかの [StringBuilder](xref:System.Text.StringBuilder) メソッドを呼び出し、その後、[StringBuilder.ToString](xref:System.Text.StringBuilder.ToString) メソッドを呼び出して文字列を表示しています。 - -```csharp -using System; -using System.Text; - -public class Example -{ - public static void Main() - { - StringBuilder sb = new StringBuilder(); - bool flag = true; - string[] spellings = { "recieve", "receeve", "receive" }; - sb.AppendFormat("Which of the following spellings is {0}:", flag); - sb.AppendLine(); - for (int ctr = 0; ctr <= spellings.GetUpperBound(0); ctr++) { - sb.AppendFormat(" {0}. {1}", ctr, spellings[ctr]); - sb.AppendLine(); - } - sb.AppendLine(); - Console.WriteLine(sb.ToString()); - } -} -// The example displays the following output: -// Which of the following spellings is True: -// 0. recieve -// 1. receeve -// 2. receive -``` - -```vb -Imports System.Text - -Module Example - Public Sub Main() - Dim sb As New StringBuilder() - Dim flag As Boolean = True - Dim spellings() As String = { "recieve", "receeve", "receive" } - sb.AppendFormat("Which of the following spellings is {0}:", flag) - sb.AppendLine() - For ctr As Integer = 0 To spellings.GetUpperBound(0) - sb.AppendFormat(" {0}. {1}", ctr, spellings(ctr)) - sb.AppendLine() - Next - sb.AppendLine() - Console.WriteLine(sb.ToString()) - End Sub -End Module -' The example displays the following output: -' Which of the following spellings is True: -' 0. recieve -' 1. receeve -' 2. receive -``` - -## 関連項目 - -[System.Text.StringBuilder](xref:System.Text.StringBuilder) - -[基本的な文字列操作](basic-string-operations.md) - -[型の書式設定](formatting-types.md) - +title: ".NET Framework における StringBuilder クラスの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Remove メソッド" + - "文字列 [.NET Framework]、容量" + - "StringBuilder オブジェクト" + - "Replace メソッド" + - "AppendFormat メソッド" + - "Append メソッド" + - "Insert メソッド" + - "文字列 [.NET Framework]、StringBuilder オブジェクト" +ms.assetid: 5c14867c-9a99-45bc-ae7f-2686700d377a +caps.latest.revision: 21 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 19 +--- +# .NET Framework における StringBuilder クラスの使用 + オブジェクトは、変更できません。 クラスのメソッドのいずれかを使用するたびに、新しい文字列オブジェクトをメモリ内に作成します。その際、その新しいオブジェクトに対して領域を新たに割り当てる必要があります。 文字列に対して何度も変更を実行する必要がある場合、新しい オブジェクトの作成に関連したオーバーヘッドが高コストになる可能性があります。 新しいオブジェクトを作成せずに文字列を変更したい場合は、 クラスを使用することができます。 たとえば、ループで多数の文字列を連結する場合に、 クラスを使用してパフォーマンスを向上させることができます。 + +## System.Type 名前空間のインポート + クラスは、 名前空間にあります。 完全修飾型名をコードに指定しなくてもすむように、 名前空間をインポートすることができます。 + + [!code-cpp[Conceptual.StringBuilder#11](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#11)] + [!code-csharp[Conceptual.StringBuilder#11](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#11)] + [!code-vb[Conceptual.StringBuilder#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#11)] + +## StringBuilder オブジェクトのインスタンス化 + 以下の例に示すように、オーバーロードされたコンストラクター メソッドの 1 つで変数を初期化することにより、 クラスの新しいインスタンスを作成することができます。 + + [!code-cpp[Conceptual.StringBuilder#1](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#1)] + [!code-csharp[Conceptual.StringBuilder#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#1)] + [!code-vb[Conceptual.StringBuilder#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#1)] + +## 容量と長さの設定 + は、カプセル化する文字列内の文字数を拡張できるようにする動的オブジェクトですが、保持可能な最大文字数の値を指定することができます。 この値を、オブジェクトの容量と呼びます。これを現行の が保持する文字列の長さと混同すべきではありません。 たとえば、"Hello" という長さ 5 の文字列を持つ クラスの新しいインスタンスを作成するときに、オブジェクトの最大容量として 25 を指定することができます。 を変更する際、容量に達するまでは、自動再割り当ては発生しません。 容量に達すると、新しい領域が自動的に割り当てられ、容量が 2 倍になります。 オーバーロードされたコンストラクターのいずれかを使用して、 クラスの容量を指定することができます。 次の例は、`MyStringBuilder` オブジェクトを最大 25 の領域に拡張できることを示しています。 + + [!code-cpp[Conceptual.StringBuilder#2](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#2)] + [!code-csharp[Conceptual.StringBuilder#2](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#2)] + [!code-vb[Conceptual.StringBuilder#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#2)] + + また、 の読み取り\/書き込みプロパティを使用して、オブジェクトの最大長を設定することができます。 次の例では、**Capacity** プロパティを使用して、オブジェクトの最大長を定義しています。 + + [!code-cpp[Conceptual.StringBuilder#3](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#3)] + [!code-csharp[Conceptual.StringBuilder#3](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#3)] + [!code-vb[Conceptual.StringBuilder#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#3)] + + メソッドを使用して、現行 **StringBuilder** の容量を確認することができます。 容量が渡された値よりも大きい場合、変更は行われません。しかし、容量が渡された値より小さい場合は、渡された値と一致するよう現行の容量が変更されます。 + + プロパティを表示または設定することもできます。**Length** プロパティを、**Capacity** プロパティより大きな値に設定する場合、**Capacity** プロパティは **Length** プロパティと同じ値に自動的に変更されます。**Length** プロパティを、現行の **StringBuilder** 内の文字列の長さより小さい値に設定すると、文字列は短縮されます。 + +## StringBuilder 文字列の変更 + **StringBuilder** の内容の変更に使用できるメソッドを次の表に一覧表示します。 + +|メソッド名|使用| +|-----------|--------| +||現行の **StringBuilder** の末尾に情報を追加します。| +||文字列に渡される書式指定子を、書式設定されたテキスト文字列で置き換えます。| +||現行の **StringBuilder** の指定されたインデックスに、文字列またはオブジェクトを挿入します。| +||現行の **StringBuilder** から、指定された文字数を削除します。| +||指定されたインデックスで、指定された文字を置き換えます。| + +### 追加 + **Append** メソッドを使用して、現行 **StringBuilder** によって表される文字列の末尾にオブジェクトのテキストまたは文字列形式を追加することができます。 次の例では、**StringBuilder** を "Hello World" に初期設定し、テキストをオブジェクトの末尾に追加しています。 領域は、必要に応じて自動的に割り当てられます。 + + [!code-cpp[Conceptual.StringBuilder#4](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#4)] + [!code-csharp[Conceptual.StringBuilder#4](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#4)] + [!code-vb[Conceptual.StringBuilder#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#4)] + +### AppendFormat + メソッドは、 オブジェクトの末尾にテキストを追加します。 これは、書式設定される 1 つ以上のオブジェクトの 実装を呼び出すことにより、複合書式機能をサポートしています \(詳細については、[複合書式指定](../../../docs/standard/base-types/composite-formatting.md) を参照してください\)。 そのため、数値、日時、および列挙の値に対して標準書式文字列を受け取り、数値と日時の値、およびカスタム型に定義されている書式文字列に対してカスタム書式文字列を受け取ります。 \(書式設定については、[型の書式設定](../../../docs/standard/base-types/formatting-types.md) を参照してください。\) このメソッドを使用して、変数の書式をカスタマイズし、その値を に追加することができます。 次の例では、 メソッドを使用して、 オブジェクトの末尾に、通貨値として書式設定されている整数値を挿入しています。 + + [!code-cpp[Conceptual.StringBuilder#5](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#5)] + [!code-csharp[Conceptual.StringBuilder#5](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#5)] + [!code-vb[Conceptual.StringBuilder#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#5)] + +### 挿入 + メソッドは、現行の オブジェクトの指定された位置に、文字列またはオブジェクトを追加します。 次の例では、このメソッドを使用して、 オブジェクトの 6 番目の位置に単語を挿入しています。 + + [!code-cpp[Conceptual.StringBuilder#6](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#6)] + [!code-csharp[Conceptual.StringBuilder#6](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#6)] + [!code-vb[Conceptual.StringBuilder#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#6)] + +### 削除 + **Remove** メソッドを使用して、現行の オブジェクトから指定された文字数を削除します \(0 から始まる指定されたインデックスで開始します\)。 次の例では、**Remove** メソッドを使用して、 オブジェクトを短縮しています。 + + [!code-cpp[Conceptual.StringBuilder#7](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#7)] + [!code-csharp[Conceptual.StringBuilder#7](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#7)] + [!code-vb[Conceptual.StringBuilder#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#7)] + +### 以前の型 + **Replace** メソッドを使用して、 オブジェクト内の文字を、指定された別の文字で置き換えることができます。 次の例では、**Replace** メソッドを使用して、感嘆符 \(\!\) のすべてのインスタンスを求めて オブジェクトを検索し、疑問符 \(?\) で置き換えています。 + + [!code-cpp[Conceptual.StringBuilder#8](../../../samples/snippets/cpp/VS_Snippets_CLR/Conceptual.StringBuilder/cpp/example.cpp#8)] + [!code-csharp[Conceptual.StringBuilder#8](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/Example.cs#8)] + [!code-vb[Conceptual.StringBuilder#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/Example.vb#8)] + +## 文字列への StringBuilder オブジェクトの変換 + オブジェクトで表される文字列を パラメーターを持つメソッドに渡すかそれをユーザー インターフェイスに表示するには、事前に オブジェクトを オブジェクトに変換する必要があります。 この変換は、 メソッドを呼び出すことによって行います。 次の例では、いくつかの メソッドを呼び出し、その後、 メソッドを呼び出して文字列を表示しています。 + + [!code-csharp[Conceptual.StringBuilder#10](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/tostringexample1.cs#10)] + [!code-vb[Conceptual.StringBuilder#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/tostringexample1.vb#10)] + +## 参照 + + [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) + [型の書式設定](../../../docs/standard/base-types/formatting-types.md) \ No newline at end of file diff --git a/docs/standard/base-types/substitutions-in-regular-expressions.md b/docs/standard/base-types/substitutions-in-regular-expressions.md new file mode 100644 index 00000000000..1a717444723 --- /dev/null +++ b/docs/standard/base-types/substitutions-in-regular-expressions.md @@ -0,0 +1,224 @@ +--- +title: "正規表現での置換 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, 置換" + - "構成体, 置換" + - "メタ文字, 置換" + - "正規表現, 置換" + - "置換パターン" + - "置換" +ms.assetid: d1f52431-1c7d-4dc6-8792-6b988256892e +caps.latest.revision: 20 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 20 +--- +# 正規表現での置換 + 置換は、置換パターン内でのみ認識される言語要素です。 置換では、正規表現パターンを使用して、入力文字列内の一致するテキストを置換するテキストの全体または一部を定義します。 置換パターンは、1 個以上の置換と、リテラル文字で構成されます。 置換パターンは、 パラメーターを持つ `replacement` メソッドのオーバーロードおよび メソッドに対して用意されています。 メソッドは、一致するパターンを、`replacement` パラメーターで定義されているパターンで置換します。 + + .NET Framework では、次の表に示す置換要素が定義されています。 + +|代入|説明| +|--------|--------| +|`$` *number*|*number* で識別されるキャプチャ グループに一致する最後の部分文字列を置換文字列に含めます。*number* は 10 進値です。 詳細については、「[番号付きグループの置換](#Numbered)」を参照してください。| +|`${` *name* `}`|`(?<` *name* `> )` で指定された名前付きグループに一致する最後の部分文字列を置換文字列に含めます。 詳細については、「[名前付きグループの置換](#Named)」を参照してください。| +|`$$`|置換文字列に 1 つの "$" リテラルを含めます。 詳細については、「["$" 文字の置換](#DollarSign)」を参照してください。| +|`$&`|一致した文字列全体のコピーを置換文字列に含めます。 詳細については、「[一致した文字列全体の置換](#EntireMatch)」を参照してください。| +|`$``|一致した場所より前にある入力文字列のテキストすべてを置換文字列に含めます。 詳細については、「[一致した文字列より前にあるテキストの置換](#BeforeMatch)」を参照してください。| +|`$'`|一致した場所より後にある入力文字列のテキストすべてを置換文字列に含めます。 詳細については、「[一致した文字列より後にあるテキストの置換](#AfterMatch)」を参照してください。| +|`$+`|最後にキャプチャされたグループを置換文字列に含めます。 詳細については、「[キャプチャされた最後のグループの置換](#LastGroup)」を参照してください。| +|`$_`|入力文字列全体を置換文字列に含めます。 詳細については、「[入力文字列全体の置換](#EntireString)」を参照してください。| + +## 置換要素と置換パターン + 置換構成体は、置換パターンで認識される特殊な構成体です。 文字エスケープやピリオド \(`.`\) など、任意の文字に一致する他の正規表現言語要素はいずれもサポートされていません。 同様に、置換言語要素は置換パターン内でのみ認識され、正規表現パターン内では有効ではありません。 + + 正規表現パターンと置換の両方に使用できる文字は `$` 文字だけですが、この文字の意味はコンテキストによって異なります。 正規表現パターンでは、`$` は文字列の末尾に一致するアンカーです。 置換パターンでは、`$` は置換の先頭を示します。 + +> [!NOTE] +> 正規表現の中で置換パターンに似た機能を利用するには、前方参照を使用します。 前方参照の詳細については、「[前方参照構成体](../../../docs/standard/base-types/backreference-constructs-in-regular-expressions.md)」を参照してください。 + + +## 番号付きグループの置換 + `$` *number* 言語要素は、*number* キャプチャ グループに一致する最後の部分文字列を置換文字列に含めます。*number* は、キャプチャ グループのインデックスです。 たとえば、置換パターン `$1` は、一致した部分文字列がキャプチャされた最初のグループに置き換えられることを示します。 番号付きキャプチャ グループの詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + + `$` 以降のすべての数字が、*number* グループに所属すると解釈されます。 そうしたくない場合は、代わりに名前付きグループを使用できます。 たとえば、`${1}1` の代わりに、置換文字列 `$11` を使用して、最初のキャプチャ グループの値と数字 "1" を置換文字列として定義できます。 詳細については、「[名前付きグループの置換](#Named)」を参照してください。 + + `(?<` *name* `>)` 構文を使用して名前が明示的に割り当てられていないキャプチャ グループには、1 から開始する番号が左から右の順に割り当てられます。 名前付きグループにも、最後の名前のないグループのインデックスよりも 1 つ大きい数値から開始する番号が、左から右へと順に割り当てられます。 たとえば、正規表現 `(\w)(?\d)` では、`digit` という名前付きグループのインデックスは 2 です。 + + *number* が、正規表現パターンで定義される有効なキャプチャ グループを指定していない場合は、`$`*number* が、一致した各文字列の置換に使用されるリテラル文字列シーケンスとして解釈されます。 + + 次の例では、`$`*number* の置換を使用して、10 進値から通貨記号を削除しています。 通貨値の先頭または末尾に見つかった通貨記号を削除し、最も一般的な 2 つの桁区切り記号 \("." および ","\) を認識します。 + + [!code-csharp[Conceptual.RegEx.Language.Substitutions#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.substitutions/cs/numberedgroup1.cs#1)] + [!code-vb[Conceptual.RegEx.Language.Substitutions#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.substitutions/vb/numberedgroup1.vb#1)] + + 正規表現パターン `\p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}*` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\p{Sc}*`|0 個以上の通貨記号文字と一致します。| +|`\s?`|0 個または 1 個の空白文字と一致します。| +|`\d+`|1 個以上の 10 進数と一致します。| +|`[.,]?`|0 個または 1 個のピリオドまたはコンマと一致します。| +|`\d*`|0 個以上の 10 進数と一致します。| +|`(\s?\d+[.,]?\d*)`|空白の後に 1 つ以上の 10 進数、0 個または 1 個のピリオドまたはコンマ、さらに 0 個以上の 10 進数が続くパターンに一致します。 これが最初のキャプチャ グループです。 置換パターンは `$1` であるため、 メソッドを呼び出すと、一致する部分文字列全体がこのキャプチャされたグループに置き換えられます。| + + [ページのトップへ](#Top) + + +## 名前付きのグループの置換 + `${` *name* `}` 言語要素は、*name* キャプチャ グループに一致する最後の部分文字列を置換します。ここで、*name* は `(?<`*name*`>)` 言語要素で定義されているキャプチャ グループの名前です。 名前付きキャプチャ グループの詳細については、「[グループ化構成体](../../../docs/standard/base-types/grouping-constructs-in-regular-expressions.md)」を参照してください。 + + *name* が正規表現パターンで定義されている有効な名前付きキャプチャ グループを指定していないものの、数字で構成されている場合、`${`*name*`}` は番号付きグループとして解釈されます。 + + *name* が、正規表現パターンで定義されている有効な名前付きキャプチャ グループも有効な番号付きキャプチャ グループも指定していない場合、`${`*name*`}` は、一致した各文字列の置換に使用されるリテラル文字列シーケンスとして解釈されます。 + + 次の例では、`${`*name*`}` の置換を使用して、10 進値から通貨記号を削除しています。 通貨値の先頭または末尾に見つかった通貨記号を削除し、最も一般的な 2 つの桁区切り記号 \("." および ","\) を認識します。 + + [!code-csharp[Conceptual.RegEx.Language.Substitutions#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.substitutions/cs/namedgroup1.cs#2)] + [!code-vb[Conceptual.RegEx.Language.Substitutions#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.substitutions/vb/namedgroup1.vb#2)] + + 正規表現パターン `\p{Sc}*(?\s?\d[.,]?\d*)\p{Sc}*` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\p{Sc}*`|0 個以上の通貨記号文字と一致します。| +|`\s?`|0 個または 1 個の空白文字と一致します。| +|`\d+`|1 個以上の 10 進数と一致します。| +|`[.,]?`|0 個または 1 個のピリオドまたはコンマと一致します。| +|`\d*`|0 個以上の 10 進数と一致します。| +|`(?\s?\d[.,]?\d*)`|空白の後に 1 つ以上の 10 進数、0 個または 1 個のピリオドまたはコンマ、さらに 0 個以上の 10 進数が続くパターンに一致します。 これは、`amount` という名前のキャプチャ グループです。 置換パターンは `${amount}` であるため、 メソッドを呼び出すと、一致する部分文字列全体がこのキャプチャされたグループに置き換えられます。| + + [ページのトップへ](#Top) + + +## "$" 文字の置換 + `$$` の置換は、リテラル文字 "$" を置換文字列に挿入します。 + + 次の例では、 オブジェクトを使用して、現在のカルチャの通貨記号と、通貨文字列内でのその配置を決定します。 次に、正規表現パターンと置換パターンの両方を動的に構築します。 現在 en\-US カルチャが使用されているコンピューターでこの例を実行すると、`\b(\d+)(\.(\d+))?` という正規表現パターンと `$$ $1$2` という置換パターンが生成されます。 置換パターンは、一致するテキストを、通貨記号と空白に続いて、キャプチャされた最初および 2 番目のグループで置換します。 + + [!code-csharp[Conceptual.Regex.Language.Substitutions#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.substitutions/cs/dollarsign1.cs#8)] + [!code-vb[Conceptual.Regex.Language.Substitutions#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.substitutions/vb/dollarsign1.vb#8)] + + 正規表現パターン `\b(\d+)(\.(\d+))?` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界の先頭から照合を開始します。| +|`(\d+)`|1 個以上の 10 進数と一致します。 これが最初のキャプチャ グループです。| +|`\.`|ピリオド \(桁区切り記号\) と一致します。| +|`(\d+)`|1 個以上の 10 進数と一致します。 これが 3 番目のキャプチャ グループです。| +|`(\.(\d+))?`|ピリオドの後に 1 つ以上の 10 進数が続くパターンの 0 回または 1 回の出現と一致します。 これが 2 番目のキャプチャ グループです。| + + +## 一致した文字列全体の置換 + `$&` の置換は、一致した文字列全体を置換文字列に含めます。 通常は、一致した文字列の先頭または末尾に部分文字列を追加するために使用されます。 たとえば、`($&)` という置換パターンは、一致した各文字列の先頭と末尾にかっこを追加します。 一致する文字列がない場合、`$&` の置換は無効です。 + + `$&` の置換を使用して、文字列配列に格納されている書籍タイトルの先頭と末尾に引用符を追加する例を次に示します。 + + [!code-csharp[Conceptual.RegEx.Language.Substitutions#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.substitutions/cs/entirematch1.cs#3)] + [!code-vb[Conceptual.RegEx.Language.Substitutions#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.substitutions/vb/entirematch1.vb#3)] + + 正規表現パターン `^(\w+\s?)+$` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`^`|入力文字列の先頭から照合を開始します。| +|`(\w+\s?)+`|1 つ以上の単語文字の後に 0 個または 1 個の空白文字が 1 回以上続くパターンに一致します。| +|`$`|入力文字列の末尾と一致します。| + + `"$&"` という置換パターンは、各一致文字列の先頭と末尾にリテラルの一重引用符を追加します。 + + [ページのトップへ](#Top) + + +## 一致した文字列より前にあるテキストの置換 + `$`` の置換は、一致した場所より前にある入力文字列全体で一致した文字列を置換します。 つまり、一致した場所までの入力文字列を複製し、一致したテキストを削除します。 結果文字列では、一致したテキストに続くテキストは変更されません。 入力文字列に複数の一致文字列がある場合、置換テキストは、テキストが前の一致で置換された文字列からではなく、元の入力文字列から派生します \(具体的な例を次に示します\)。 一致する文字列がない場合、`$`` の置換は無効です。 + + 次の例では、正規表現パターン `\d+` を使用して、入力文字列内の 1 つ以上の 10 進数のシーケンスを照合します。 置換文字列 `$`` は、これらの数字を、一致文字列より前にあるテキストで置換します。 + + [!code-csharp[Conceptual.Regex.Language.Substitutions#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.substitutions/cs/before1.cs#4)] + [!code-vb[Conceptual.Regex.Language.Substitutions#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.substitutions/vb/before1.vb#4)] + + この例では、入力文字列 `"aa1bb2cc3dd4ee5"` に 5 つの一致が含まれています。`$`` の置換によって、正規表現エンジンが入力文字列の各一致文字列をどのように置換するかを、次の表に示します。 挿入されたテキストは結果列に太字で示されています。 + +|一致したもの|位置|一致した場所より前にある文字列|結果文字列| +|------------|--------|---------------------|-----------| +|1|2|aa|aa`aa`bb2cc3dd4ee5| +|2|5|aa1bb|aaaabb`aa1bb`cc3dd4ee5| +|3|8|aa1bb2cc|aaaabbaa1bbcc`aa1bb2cc`dd4ee5| +|4|11|aa1bb2cc3dd|aaaabbaa1bbccaa1bb2ccdd`aa1bb2cc3dd`ee5| +|5|14|aa1bb2cc3dd4ee|aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddee `aa1bb2cc3dd4ee`| + + [ページのトップへ](#Top) + + +## 一致した文字列より後にあるテキストの置換 + `$'` の置換は、一致した場所より後にある入力文字列全体で一致した文字列を置換します。 つまり、一致した場所より後にある入力文字列を複製し、一致したテキストを削除します。 結果文字列では、一致したテキストより前にあるテキストは変更されません。 一致する文字列がない場合、`$'` の置換は無効です。 + + 次の例では、正規表現パターン `\d+` を使用して、入力文字列内の 1 つ以上の 10 進数のシーケンスを照合します。 置換文字列 `$'` は、これらの数字を、一致文字列に続くテキストで置換します。 + + [!code-csharp[Conceptual.Regex.Language.Substitutions#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.substitutions/cs/after1.cs#5)] + [!code-vb[Conceptual.Regex.Language.Substitutions#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.substitutions/vb/after1.vb#5)] + + この例では、入力文字列 `"aa1bb2cc3dd4ee5"` に 5 つの一致が含まれています。`$'` の置換によって、正規表現エンジンが入力文字列の各一致文字列をどのように置換するかを、次の表に示します。 挿入されたテキストは結果列に太字で示されています。 + +|一致したもの|位置|一致した場所より後にある文字列|結果文字列| +|------------|--------|---------------------|-----------| +|1|2|bb2cc3dd4ee5|aa`bb2cc3dd4ee5`bb2cc3dd4ee5| +|2|5|cc3dd4ee5|aabb2cc3dd4ee5bb`cc3dd4ee5`cc3dd4ee5| +|3|8|dd4ee5|aabb2cc3dd4ee5bbcc3dd4ee5cc`dd4ee5`dd4ee5| +|4|11|ee5|aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5dd`ee5`ee5| +|5|14||aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5ddee5ee| + + [ページのトップへ](#Top) + + +## キャプチャされた最後のグループの置換 + `$+` の置換は、キャプチャされた最後のグループで一致した文字列を置換します。 キャプチャされたグループがない場合、またはキャプチャされた最後のグループの値が の場合、`$+` の置換は無効です。 + + 次の例では、文字列内の重複する単語を識別し、`$+` の置換を使用して、これらの単語をその単語 1 つに置換します。 オプションを使用すると、大文字と小文字の違いを除いて同一である単語が重複と見なされるようになります。 + + [!code-csharp[Conceptual.Regex.Language.Substitutions#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.substitutions/cs/lastmatch1.cs#6)] + [!code-vb[Conceptual.Regex.Language.Substitutions#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.substitutions/vb/lastmatch1.vb#6)] + + 正規表現パターン `\b(\w+)\s\1\b` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`(\w+)`|1 つ以上の単語文字に一致します。 これが最初のキャプチャ グループです。| +|`\s`|空白文字と一致します。| +|`\1`|キャプチャされた最初のグループと一致します。| +|`\b`|ワード境界で照合を終了します。| + + [ページのトップへ](#Top) + + +## 入力文字列全体の置換 + `$_` の置換は、一致した文字列を入力文字列全体で置換します。 つまり、一致したテキストを削除し、一致したテキストを含む文字列全体でそのテキストを置換します。 + + 次の例では、入力文字列の 1 つ以上の 10 進数を照合します。`$_` の置換を使用して、これらを入力文字列全体で置換します。 + + [!code-csharp[Conceptual.Regex.Language.Substitutions#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regex.language.substitutions/cs/entire1.cs#7)] + [!code-vb[Conceptual.Regex.Language.Substitutions#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regex.language.substitutions/vb/entire1.vb#7)] + + この例では、入力文字列 `"ABC123DEF456"` に 2 つの一致が含まれています。`$_` の置換によって、正規表現エンジンが入力文字列の各一致文字列をどのように置換するかを、次の表に示します。 挿入されたテキストは結果列に太字で示されています。 + +|一致したもの|位置|一致したもの|結果文字列| +|------------|--------|------------|-----------| +|1|3|123|ABC`ABC123DEF456`DEF456| +|2|5|456|ABCABC123DEF456DEF`ABC123DEF456`| + +## 参照 + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) \ No newline at end of file diff --git a/docs/standard/base-types/the-regular-expression-object-model.md b/docs/standard/base-types/the-regular-expression-object-model.md new file mode 100644 index 00000000000..d85efa735dd --- /dev/null +++ b/docs/standard/base-types/the-regular-expression-object-model.md @@ -0,0 +1,358 @@ +--- +title: "正規表現のオブジェクト モデル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, 逆参照" + - ".NET Framework 正規表現, クラス" + - "逆参照" + - "Capture クラス" + - "CaptureCollection クラス" + - "文字 [.NET Framework], 逆参照" + - "文字 [.NET Framework], メタ文字" + - "文字 [.NET Framework], 正規表現" + - "クラス [.NET Framework], 正規表現" + - "Group クラス" + - "GroupCollection クラス" + - "Match クラス" + - "MatchCollection クラス" + - "メタ文字, 逆参照" + - "メタ文字, 正規表現クラス" + - "解析 (正規表現を使用したテキストを), 逆参照" + - "解析 (正規表現を使用したテキストを), クラス" + - "パターン一致 (正規表現を使用した), 逆参照" + - "パターン一致 (正規表現を使用した), クラス" + - "Regex クラス" + - "正規表現 [.NET Framework]" + - "正規表現 [.NET Framework], 逆参照" + - "正規表現 [.NET Framework], クラス" + - "繰り返し出現する文字グループ" + - "検索 (正規表現を使用した), 逆参照" + - "検索 (正規表現を使用した), クラス" + - "文字列 [.NET Framework], 正規表現" + - "部分文字列" +ms.assetid: 49a21470-64ca-4b5a-a889-8e24e3c0af7e +caps.latest.revision: 26 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 26 +--- +# 正規表現のオブジェクト モデル + ここでは、.NET Framework の正規表現を扱うときに使用するオブジェクト モデルについて説明します。 このチュートリアルは、次のセクションで構成されています。 + +- [正規表現エンジン](#Engine) + +- [MatchCollection オブジェクトと Match オブジェクト](#Match_and_MCollection) + +- [GroupCollection](#GroupCollection) + +- [キャプチャ グループ](#the_captured_group) + +- [CaptureCollection](#CaptureCollection) + +- [個々のキャプチャ](#the_individual_capture) + + +## 正規表現エンジン + .NET Framework の正規表現エンジンは、 クラスによって表されます。 正規表現エンジンは、正規表現の解析とコンパイル、および正規表現パターンと入力文字列を照合する操作を実行します。 エンジンは、.NET Framework 正規表現のオブジェクト モデルの中核となるコンポーネントです。 + + 正規表現エンジンは、次のいずれかの方法で使用できます。 + +- クラスの静的メソッドを呼び出す。 メソッドのパラメーターには、入力文字列と正規表現パターンが含まれます。 静的メソッド呼び出しで使用した正規表現は、正規表現エンジンによってキャッシュされるので、同じ正規表現を使用する静的正規表現メソッドを繰り返し呼び出す場合、パフォーマンスが比較的向上します。 + +- 正規表現をクラス コンストラクターに渡して オブジェクトをインスタンス化する。 この場合、 オブジェクトは変更不可 \(読み取り専用\) で、単一の正規表現と密に結合された正規表現エンジンを表します。 インスタンスによって使用される正規表現はキャッシュされないので、同じ正規表現で オブジェクトを複数回インスタンス化しないでください。 + + クラスのメソッドを呼び出すと、次のような処理を実行できます。 + +- 文字列が正規表現パターンと一致するかどうかを確認する。 + +- 単一の一致または最初の一致を抽出する。 + +- すべての一致を抽出する。 + +- 一致した部分文字列を置換する。 + +- 単一の文字列を文字列配列に分割する。 + + ここでは、これらの操作について説明します。 + +### 正規表現パターンの照合 + メソッドは、文字列がパターンと一致する場合は `true` を返し、一致しない場合は `false` を返します。 メソッドは、文字列入力を検証する場合によく使用されます。 たとえば、次のコードでは、文字列は米国の有効な社会保障番号と一致します。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/validate1.cs#1)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/validate1.vb#1)] + + この正規表現パターン `^\d{3}-\d{2}-\d{4}$` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`^`|入力文字列の先頭と一致します。| +|`\d{3}`|3 個の 10 進数と一致します。| +|`-`|ハイフンと一致します。| +|`\d{2}`|2 桁の 10 進数と一致します。| +|`-`|ハイフンと一致します。| +|`\d{4}`|4 桁の 10 進数と一致します。| +|`$`|入力文字列の末尾と一致します。| + +### 単一の一致または最初の一致の抽出 + メソッドは、正規表現パターンに一致する最初の部分文字列の情報を含む オブジェクトを返します。`Match.Success` プロパティが `true` \(一致する文字列が見つかったことを示す\) を返す場合は、 メソッドを呼び出すと後続の一致する文字列の情報を取得できます。 これらのメソッド呼び出しは、`Match.Success` プロパティによって `false` が返されるまで続行できます。 たとえば、次のコードでは、 メソッドを使用して、重複する単語が文字列内で最初に出現する位置を検索します。 次に、 メソッドを呼び出してその他の出現位置を検索します。 この例では、メソッドを呼び出すごとに `Match.Success` プロパティを調べ、現在の一致が成功したかどうか、および続けて メソッドを呼び出す必要があるかどうかを確認します。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/match1.cs#2)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/match1.vb#2)] + + この正規表現パターン `\b(\w+)\W+(\1)\b` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`(\w+)`|1 つ以上の単語文字に一致します。 これが最初のキャプチャ グループです。| +|`\W+`|1 個以上の単語文字に使用されない文字と一致します。| +|`(\1)`|最初にキャプチャされた文字列と一致します。 これが 2 番目のキャプチャ グループです。| +|`\b`|ワード境界で照合を終了します。| + +### すべての一致の抽出 + メソッドは、入力文字列で正規表現エンジンによって検出されたすべての一致文字列の情報を含む オブジェクトを返します。 たとえば、前の例を書き換えて、 メソッドと メソッドではなく メソッドを呼び出すことができます。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/matches1.cs#3)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/matches1.vb#3)] + +### 一致した部分文字列の置換 + メソッドは、正規表現パターンに一致した各部分文字列を指定された文字列または正規表現パターンに置き換えて、置換が適用された入力文字列全体を返します。 たとえば、次のコードでは、文字列内の 10 進数の前に米国の通貨記号が追加されます。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/replace1.cs#4)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/replace1.vb#4)] + + この正規表現パターン `\b\d+\.\d{2}\b` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`\d+`|1 個以上の 10 進数と一致します。| +|`\.`|ピリオドと一致します。| +|`\d{2}`|2 桁の 10 進数と一致します。| +|`\b`|ワード境界で照合を終了します。| + + 置換パターン `$$$&` の解釈を次の表に示します。 + +|パターン|置換文字列| +|----------|-----------| +|`$$`|ドル記号 \($\) 文字。| +|`$&`|一致した部分文字列全体。| + +### 単一の文字列の文字列配列への分割 + メソッドは、正規表現によって定義されている位置で、入力文字列を分割します。 たとえば、次のコードでは、番号付きリストの項目を文字列配列に配置します。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/split1.cs#5)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/split1.vb#5)] + + この正規表現パターン `\b\d{1,2}\.\s` の解釈を次の表に示します。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`\d{1,2}`|1 桁または 2 桁の 10 進数と一致します。| +|`\.`|ピリオドと一致します。| +|`\s`|空白文字と一致します。| + + +## MatchCollection オブジェクトと Match オブジェクト + Regex メソッドは、正規表現のオブジェクト モデルに含まれる の 2 つのオブジェクトを返します。 + + +### MatchCollection + メソッドは、正規表現エンジンによって検出されたすべての一致文字列を入力文字列に出現する順序で表す オブジェクトを含む オブジェクトを返します。 一致文字列がない場合、このメソッドはメンバーを持たない オブジェクトを返します。 プロパティを使用すると、コレクションの個々のメンバーに、0 から プロパティの値より 1 小さい値までの範囲のインデックスでアクセスできます。 は、コレクションのインデクサー \(C\# の場合\) および既定のプロパティ \(Visual Basic の場合\) です。 + + 既定では、 メソッドを呼び出すと、遅延評価を使用して オブジェクトに値が設定されます。 値の設定が完了しているコレクションを必要とするプロパティ \( プロパティや プロパティなど\) にアクセスする場合は、パフォーマンスが低下する可能性があります。 そのため、 メソッドによって返される オブジェクトを使用してコレクションにアクセスすることをお勧めします。 個々の言語には、コレクションの `For` インターフェイスをラップする構成体 \(Visual Basic の `Each``foreach` や C\# の など\) が用意されています。 + + 次の例では、 メソッドを使用して、入力文字列の中で見つかったすべての一致を オブジェクトに設定します。 この例では、コレクションを列挙して一致文字列を文字列配列にコピーし、文字位置を整数配列に記録します。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/matchcollection1.cs#6)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/matchcollection1.vb#6)] + + +### Match + クラスは、1 回の正規表現検索に一致した結果を表します。 オブジェクトには 2 つの方法でアクセスできます。 + +- メソッドから返される オブジェクトから取得する。 個々の オブジェクトを取得するには、`foreach` 構成体 \(C\# の場合\) または `For Each`...`Next` 構成体 \(Visual Basic の場合\) を使用してコレクションを反復処理するか、 プロパティを使用してインデックスまたは名前で特定の オブジェクトを取得します。 また、0 からコレクションのオブジェクト数より 1 小さい値までの範囲のインデックスでコレクションを反復処理して、コレクションから個々の オブジェクトを取得することもできます。 ただし、このメソッドは プロパティにアクセスするので、遅延評価を活用できません。 + + 次の例では、 構成体または ...`foreach` 構成体を使用してコレクションを反復処理することで、個々の `For Each` オブジェクトを `Next` オブジェクトから取得します。 この正規表現は、単純に入力文字列内の文字列 "abc" と一致します。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/match2.cs#7)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/match2.vb#7)] + +- 文字列または文字列の一部で最初に一致する文字列を表す オブジェクトを返す メソッドを呼び出す。`Match.Success` プロパティの値を取得すると、一致文字列が見つかったかどうかを確認できます。 後続の一致する文字列を表す オブジェクトを取得するには、返された オブジェクトの `Success` プロパティが になるまで `false` メソッドを繰り返し呼び出します。 + + 次の例では、入力文字列内の文字列 "abc" と一致する メソッドと メソッドを使用します。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/match3.cs#8)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/match3.vb#8)] + + クラスの 2 つのプロパティによってコレクション オブジェクトが返されます。 + +- プロパティは、正規表現パターンのキャプチャ グループに一致する部分文字列の情報を含む オブジェクトを返します。 + +- `Match.Captures` プロパティは、用途が限定された オブジェクトを返します。 オブジェクトの `Success` プロパティが `false` の場合、コレクションに値は設定されません。 それ以外の場合は、 オブジェクトと同じ情報を含む単一の オブジェクトが格納されます。 + + これらのオブジェクトの詳細については、このトピックで後述する「[GroupCollection](#GroupCollection)」および「[CaptureCollection](#CaptureCollection)」を参照してください。 + + クラスの 2 つの追加プロパティに、一致文字列の情報が保持されます。`Match.Value` プロパティは、正規表現パターンに一致する入力文字列内の部分文字列を返します。`Match.Index` プロパティは、入力文字列内の一致する文字列の 0 から始まる開始位置を返します。 + + クラスには、2 つのパターン一致メソッドもあります。 + +- メソッドは、現在の オブジェクトで表される一致文字列の後の一致文字列を検索し、その一致文字列を表す オブジェクトを返します。 + +- メソッドは、一致した文字列に対して指定された置換操作を実行し、その結果を返します。 + + 次の例では、 メソッドを使用して、2 桁の小数部を含むすべての数値の前に $ 記号および空白を付加します。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/result1.cs#9)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/result1.vb#9)] + + 正規表現パターン `\b\d+(,\d{3})*\.\d{2}\b` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`\d+`|1 個以上の 10 進数と一致します。| +|`(,\d{3})*`|コンマの後に 3 桁の 10 進数字が続くパターンの 0 回以上の出現と一致します。| +|`\.`|小数点文字と一致します。| +|`\d{2}`|2 桁の 10 進数と一致します。| +|`\b`|ワード境界で照合を終了します。| + + 置換パターン `$$ $&` は、一致した部分文字列がドル記号 \($\) \(`$$` パターン\)、空白、および一致文字列の値 \(`$&` パターン\) に置き換えられることを示します。 + + [ページのトップへ](#introduction) + + +## GroupCollection + プロパティは、単一の一致でキャプチャされたグループを表す オブジェクトを含む オブジェクトを返します。 コレクション内の最初の オブジェクト \(インデックス 0 の位置にあるオブジェクト\) は、一致した文字列全体を表します。 後続の各オブジェクトは、1 つのキャプチャ グループによるキャプチャの結果を表します。 + + コレクション内の個々の オブジェクトを取得するには、 プロパティを使用します。 名前のないグループはコレクション内の順序位置で取得でき、名前付きグループは名前または順序位置で取得できます。 名前のないキャプチャはコレクションの最初に位置し、正規表現パターンで定義されている順序で左から右にインデックスが付けられます。 名前付きキャプチャは、名前のないキャプチャの後に、正規表現パターンで定義されている順序で左から右にインデックスが付けられます。 特定の正規表現一致メソッドで返されたコレクションで使用可能な番号付きグループを判別するには、インスタンス メソッドを呼び出すことができます。 コレクションで使用可能な名前付きグループを判別するには、インスタンス メソッドを呼び出すことができます。 どちらのメソッドも、正規表現によって検出された一致を分析する汎用ルーチンで特に役立ちます。 + + プロパティは、コレクションのインデクサー \(C\# の場合\) およびコレクション オブジェクトの既定のプロパティ \(Visual Basic の場合\) です。 つまり、個々の オブジェクトには、次のようにインデックスで \(または名前付きグループの場合は名前で\) アクセスできます。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#13](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/groupsyntax1.cs#13)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/groupsyntax1.vb#13)] + + 次の例では、グループ化構成体を使用して日付の月、日、および年をキャプチャする正規表現を定義します。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/groupcollection1.cs#10)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/groupcollection1.vb#10)] + + 正規表現パターン `\b(\w+)\s(\d{1,2}),\s(\d{4})\b` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\b`|ワード境界から照合を開始します。| +|`(\w+)`|1 つ以上の単語文字に一致します。 これが最初のキャプチャ グループです。| +|`\s`|空白文字と一致します。| +|`(\d{1,2})`|1 桁または 2 桁の 10 進数と一致します。 これが 2 番目のキャプチャ グループです。| +|`,`|コンマに一致します。| +|`\s`|空白文字と一致します。| +|`(\d{4})`|4 桁の 10 進数と一致します。 これが 3 番目のキャプチャ グループです。| +|`\b`|ワード境界で照合を終了します。| + + [ページのトップへ](#introduction) + + +## キャプチャ グループ + クラスは、1 つのキャプチャ グループによるキャプチャの結果を表します。 正規表現で定義されているキャプチャ グループを表すグループ オブジェクトは、 プロパティによって返される オブジェクトの プロパティによって返されます。 プロパティは、 クラスのインデクサー \(C\# の場合\) および既定のプロパティ \(Visual Basic の場合\) です。`foreach` 構成体または `For``Each` 構成体を使用してコレクションを反復処理することで、個々のメンバーを取得することもできます。 例については、前のセクションを参照してください。 + + 次の例では、入れ子にしたグループ化構成体を使用して部分文字列をキャプチャし、グループ化します。 正規表現パターン `(a(b))c` は、文字列 "abc" と一致します。 部分文字列 "ab" を最初のキャプチャ グループに代入し、部分文字列 "b" を 2 番目のキャプチャ グループに代入します。 + + [!code-csharp[RegularExpressions.Classes#6](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Classes/cs/Example.cs#6)] + [!code-vb[RegularExpressions.Classes#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Classes/vb/Example.vb#6)] + + 次の例では、名前付きグループ化構成体を使用して、"DATANAME:VALUE" 形式のデータを含む文字列から部分文字列をキャプチャします。この正規表現は、コロン \(:\) でデータを分割します。 + + [!code-csharp[RegularExpressions.Classes#8](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Classes/cs/Example.cs#8)] + [!code-vb[RegularExpressions.Classes#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Classes/vb/Example.vb#8)] + + 正規表現パターン `^(?\w+):(?\w+)` は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`^`|入力文字列の先頭から照合を開始します。| +|`(?\w+)`|1 つ以上の単語文字に一致します。 このキャプチャ グループの名前は `name` です。| +|`:`|コロンと一致します。| +|`(?\w+)`|1 つ以上の単語文字に一致します。 このキャプチャ グループの名前は `value` です。| + + クラスのプロパティには、キャプチャ グループの情報が保持されます。キャプチャされた部分文字列が `Group.Value` プロパティに含まれ、キャプチャ グループの入力テキスト内での開始位置が `Group.Index` プロパティによって示され、キャプチャされたテキストの長さが `Group.Length` プロパティに含まれ、部分文字列がキャプチャ グループによって定義されたパターンと一致したかどうかが `Group.Success` プロパティによって示されます。 + + 量指定子をグループに適用する場合 \(詳細については、「[限定子](../../../docs/standard/base-types/quantifiers-in-regular-expressions.md)」を参照\)、キャプチャ グループごとに 1 つのキャプチャという関係が 2 つの方法で変更されます。 + +- `*` 量指定子または `*?` 量指定子 \(0 回以上の一致を指定する\) をグループに適用した場合、キャプチャ グループには入力文字列で一致した文字列が含まれない可能性があります。 キャプチャされたテキストがない場合、 オブジェクトのプロパティは次の表に示すように設定されます。 + + |Group プロパティ|値| + |-----------------|-------| + |`Success`|`false`| + |`Value`|| + |`Length`|0| + + 具体的な例を次に示します。 正規表現パターン `aaa(bbb)*ccc` では、最初のキャプチャ グループ \(部分文字列 "bbb"\) は 0 回以上一致できます。 入力文字列 "aaaccc" はパターンに一致するので、キャプチャ グループには一致文字列が含まれません。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/nocapture1.cs#11)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/nocapture1.vb#11)] + +- 量指定子は、キャプチャ グループによって定義されたパターンの複数回の出現と一致できます。 この場合、`Value` オブジェクトの `Length` プロパティと プロパティには、最後にキャプチャされた部分文字列の情報のみが保持されます。 たとえば、次の正規表現は、ピリオドで終わる 1 文と一致します。 この正規表現では 2 つのグループ化構成体が使用されています。最初のグループ化構成体は個々の単語および空白文字をキャプチャし、2 番目のグループ化構成体は個々の単語をキャプチャします。 この例の出力結果が示すように、正規表現では文全体が正常にキャプチャされますが、2 番目のキャプチャ グループでは最後の単語のみがキャプチャされます。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/lastcapture1.cs#12)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/lastcapture1.vb#12)] + + [ページのトップへ](#introduction) + + +## CaptureCollection + オブジェクトには、最後のキャプチャの情報のみが格納されます。 ただし、キャプチャ グループによって行われたキャプチャのセット全体は、 プロパティによって返される オブジェクトから取得できます。 コレクションの各メンバーは、キャプチャ グループによって行われたキャプチャを表す オブジェクトです。キャプチャされた順序 \(したがって、キャプチャされた文字列が左から右に入力文字列と照合された順序\) で並びます。 コレクション内の個々の オブジェクトは、次のいずれかの方法で取得できます。 + +- `foreach` \(C\# の場合\) や `For``Each` \(Visual Basic の場合\) などの構成体を使用してコレクションを反復処理する。 + +- プロパティを使用して特定のオブジェクトをインデックスで取得する。 プロパティは、 オブジェクトの既定のプロパティ \(Visual Basic の場合\) またはインデクサー \(C\# の場合\) です。 + + 量指定子がキャプチャ グループに適用されない場合、 オブジェクトには オブジェクトと同じ一致文字列の情報が保持されるので、関心の低い単一の オブジェクトが含まれます。 量指定子がキャプチャ グループに適用される場合、 オブジェクトにはキャプチャ グループによって行われたすべてのキャプチャが含まれ、コレクションの最後のメンバーは オブジェクトと同じキャプチャを表します。 + + たとえば、正規表現パターン `((a(b))c)+` \(量指定子 \+ は 1 つ以上の文字列が一致することを指定\) を使用して文字列 "abcabcabc" から一致する文字列をキャプチャする場合、各 オブジェクトの オブジェクトには、3 個のメンバーが含まれることになります。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#14](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/capturecollection1.cs#14)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/capturecollection1.vb#14)] + + 次の例では、正規表現 `(Abc)+` を使用して、文字列 "XYZAbcAbcAbcXYZAbcAb" の中から文字列 "Abc" の連続した出現を 1 つ以上検索します。 この例は、 プロパティを使用して、キャプチャした部分文字列の複数のグループを返す方法を示しています。 + + [!code-csharp[RegularExpressions.Classes#5](../../../samples/snippets/csharp/VS_Snippets_CLR/RegularExpressions.Classes/cs/Example.cs#5)] + [!code-vb[RegularExpressions.Classes#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/RegularExpressions.Classes/vb/Example.vb#5)] + + [ページのトップへ](#introduction) + + +## 個々のキャプチャ + クラスには、単一の部分式キャプチャの結果が含まれます。 一致したテキストが プロパティに含まれ、一致した部分文字列の入力文字列内での開始位置 \(起点を 0 とする\) が プロパティによって示されます。 + + 次の例では、選択した都市の気温の入力文字列を解析します。 都市とその気温を区切るためにコンマ \(","\) が使用され、各都市のデータを区切るためにセミコロン \(";"\) が使用されています。 入力文字列全体が単一の一致を表します。 文字列の解析に使用される正規表現パターン `((\w+(\s\w+)*),(\d+);)+` では、都市名が 2 番目のキャプチャ グループに代入され、気温が 4 番目のキャプチャ グループに代入されます。 + + [!code-csharp[Conceptual.RegularExpressions.ObjectModel#16](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/cs/capture1.cs#16)] + [!code-vb[Conceptual.RegularExpressions.ObjectModel#16](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.regularexpressions.objectmodel/vb/capture1.vb#16)] + + 正規表現は、次の表に示すように定義されています。 + +|パターン|説明| +|----------|--------| +|`\w+`|1 つ以上の単語文字に一致します。| +|`(\s\w+)*`|空白文字の後に 1 個以上の単語文字が続くパターンの 0 回以上の出現と一致します。 このパターンは、複数の単語で構成される都市名と一致します。 これが 3 番目のキャプチャ グループです。| +|`(\w+(\s\w+)*)`|1 個以上の単語文字の後に空白文字および 1 個以上の単語文字の 0 回以上の出現が続くパターンと一致します。 これが 2 番目のキャプチャ グループです。| +|`,`|コンマに一致します。| +|`(\d+)`|1 桁以上の数字と一致します。 これが 4 番目のキャプチャ グループです。| +|`;`|セミコロンと一致します。| +|`((\w+(\s\w+)*),(\d+);)+`|単語、追加の単語、コンマ、1 桁以上の数字、およびセミコロンが 1 回以上続くパターンと一致します。 これが最初のキャプチャ グループです。| + +## 参照 + + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) + [正規表現言語 \- クイック リファレンス](../../../docs/standard/base-types/regular-expression-language-quick-reference.md) \ No newline at end of file diff --git a/docs/standard/base-types/thread-safety-in-regular-expressions.md b/docs/standard/base-types/thread-safety-in-regular-expressions.md new file mode 100644 index 00000000000..256749a70dd --- /dev/null +++ b/docs/standard/base-types/thread-safety-in-regular-expressions.md @@ -0,0 +1,35 @@ +--- +title: "正規表現におけるスレッド セーフ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework 正規表現, スレッド" + - "解析 (正規表現を使用したテキストを), スレッド" + - "パターン一致 (正規表現を使用した), スレッド" + - "正規表現, スレッド" + - "検索 (正規表現を使用した), スレッド" +ms.assetid: 7c4a167b-5236-4cde-a2ca-58646230730f +caps.latest.revision: 7 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 7 +--- +# 正規表現におけるスレッド セーフ + クラス自体はスレッド セーフであり、変更不可 \(読み込み専用\) です。 つまり、任意のスレッドで **Regex** オブジェクトを作成し、それを複数スレッドで共有できます。一致メソッドは任意のスレッドから呼び出すことができますが、グローバルな状態を変更することはありません。 + + ただし、**Regex** から返される結果オブジェクト \(**Match** および **MatchCollection**\) は、シングル スレッドで使用する必要があります。 そのようなオブジェクトの多くは論理的には変更できません。ただし、それらの実装では、いくつかの結果の計算を遅らせることで、パフォーマンスの向上を図る場合があります。このため、それらのオブジェクトへのアクセスを、呼び出し元でシリアル化する必要が生じます。 + + **Regex** の結果オブジェクトを複数スレッドで共有する必要がある場合は、同期化されたメソッドを呼び出すことによって、それらのオブジェクトをスレッド セーフなインスタンスに変換できます。 列挙子を例外として、すべての正規表現クラスはスレッド セーフであるか、または同期化されたメソッドによってスレッド セーフなオブジェクトに変換できます。 + + 列挙子は唯一の例外です。 アプリケーションは、コレクション列挙子への呼び出しをシリアル化する必要があります。 あるコレクションを複数のスレッドで同時に列挙できる場合は、列挙子の対象となるコレクションのルート オブジェクトで、列挙子メソッドを同期させる必要があるという決まりがあります。 + +## 参照 + [.NET Framework の正規表現](../../../docs/standard/base-types/regular-expressions.md) \ No newline at end of file diff --git a/docs/standard/base-types/trimming.md b/docs/standard/base-types/trimming.md index 6187f4eb2fe..ae784a70780 100644 --- a/docs/standard/base-types/trimming.md +++ b/docs/standard/base-types/trimming.md @@ -1,212 +1,94 @@ --- -title: "文字列からの文字のトリムと削除" -description: "文字列からの文字のトリムと削除" -keywords: .NET, .NET Core -author: stevehoag -manager: wpickett -ms.date: 07/26/2016 -ms.topic: article -ms.prod: .net-core -ms.technology: .net-core-technologies -ms.devlang: dotnet -ms.assetid: 95d818bc-2661-43f6-adb8-13b53abf9682 -translationtype: Human Translation -ms.sourcegitcommit: fb00da6505c9edb6a49d2003ae9bcb8e74c11d6c -ms.openlocfilehash: 96cf08c0de8ba73d931d561187369ccf8b091651 - ---- - -# 文字列からの文字のトリムと削除 - -文章を個々の単語に分割すると、単語の先頭または末尾に空白が残る場合があります。 そのような場合は、[System.String](https://docs.microsoft.com/dotnet/core/api/System.String) クラスのトリム メソッドのいずれかを使用して、文字列内の指定した位置から任意の数の空白またはその他の文字を削除できます。 使用できるトリム メソッドとその説明を次の表に示します。 - -メソッド名 | 使用 ------------ | --- -[String.Trim](https://docs.microsoft.com/dotnet/core/api/System.String.Trim) | 文字列の先頭と末尾から、空白または文字配列で指定した文字を削除します。 -[String.TrimEnd](https://docs.microsoft.com/dotnet/core/api/System.String.TrimEnd(System.Char[])) | 文字列の末尾から、文字配列で指定した文字を削除します。 -[String.TrimStart](https://docs.microsoft.com/dotnet/core/api/System.String.TrimStart(System.Char[])) | 文字列の先頭から、文字配列で指定した文字を削除します。 -[String.Remove](https://docs.microsoft.com/dotnet/core/api/System.String.Remove(System.Int32)) | 文字列内の指定したインデックス位置から、指定した数の文字を削除します。 - - -## Trim - -[String.Trim](https://docs.microsoft.com/dotnet/core/api/System.String.Trim) メソッドを使用すると、文字列の両端から空白を簡単に削除できます。メソッドの使用例を次に示します。 - -```csharp -string MyString = " Big "; -Console.WriteLine("Hello{0}World!", MyString); -string TrimString = MyString.Trim(); -Console.WriteLine("Hello{0}World!", TrimString); -// The example displays the following output: -// Hello Big World! -// HelloBigWorld! -``` - -```vb -Dim MyString As String = " Big " -Console.WriteLine("Hello{0}World!", MyString) -Dim TrimString As String = MyString.Trim() -Console.WriteLine("Hello{0}World!", TrimString) -' The example displays the following output: -' Hello Big World! -' HelloBigWorld! -``` - -文字列の先頭と末尾から、文字配列で指定した文字を削除することもできます。 次に、空白文字、ピリオド、およびアスタリスクを削除する例を示します。 - -```csharp -using System; - -public class Example -{ - public static void Main() - { - String header = "* A Short String. *"; - Console.WriteLine(header); - Console.WriteLine(header.Trim( new Char[] { ' ', '*', '.' } )); - } -} -// The example displays the following output: -// * A Short String. * -// A Short String -``` - -```vb -Module Example - Public Sub Main() - Dim header As String = "* A Short String. *" - Console.WriteLine(header) - Console.WriteLine(header.Trim( { " "c, "*"c, "."c } )) - End Sub -End Module -' The example displays the following output: -' * A Short String. * -' A Short String -``` - -## TrimEnd - -[String.TrimEnd](https://docs.microsoft.com/dotnet/core/api/System.String.TrimEnd(System.Char[])) メソッドは、文字列の末尾から文字を削除して新しい文字列オブジェクトを作成します。 このメソッドには、削除する文字を指定する文字配列が渡されます。 文字配列内での要素の順序は、トリム操作に影響しません。 トリム操作は、文字配列で指定された文字が見つからなくなった時点で停止します。 - -TrimEnd メソッドを使用して文字列の末尾の数文字を削除する例を次に示します。 この例では、文字配列内の文字の順序が操作に影響しないことを示すために、`'r'` という文字と `'W'` という文字の順序を逆にしてあります。 このコードは、`MyString` の最後の単語だけでなく、最初の単語の一部も削除します。 - -```csharp -string MyString = "Hello World!"; -char[] MyChar = {'r','o','W','l','d','!',' '}; -string NewString = MyString.TrimEnd(MyChar); -Console.WriteLine(NewString); -``` - -```vb -Dim MyString As String = "Hello World!" -Dim MyChar() As Char = {"r","o","W","l","d","!"," "} -Dim NewString As String = MyString.TrimEnd(MyChar) -Console.WriteLine(NewString) -``` - -このコードは、コンソールに `He` と出力します。 - -[TrimEnd](https://docs.microsoft.com/dotnet/core/api/System.String.TrimEnd(System.Char[])) メソッドを使用して、文字列の最後の単語を削除する例を次に示します。 このコードでは、`Hello` という単語の後にコンマがありますが、削除する文字の配列にコンマは指定されていないため、コンマの位置でトリムが停止します。 - -```csharp -string MyString = "Hello, World!"; -char[] MyChar = {'r','o','W','l','d','!',' '}; -string NewString = MyString.TrimEnd(MyChar); -Console.WriteLine(NewString); -``` - -```vb -Dim MyString As String = "Hello, World!" -Dim MyChar() As Char = {"r","o","W","l","d","!"," "} -Dim NewString As String = MyString.TrimEnd(MyChar) -Console.WriteLine(NewString) -``` - -このコードは、コンソールに `Hello,` と出力します。 - -## TrimStart - -[String.TrimStart](https://docs.microsoft.com/dotnet/core/api/System.String.TrimStart(System.Char[])) メソッドは [String.TrimEnd](https://docs.microsoft.com/dotnet/core/api/System.String.TrimEnd(System.Char[])) メソッドと似ていますが、既存の文字列オブジェクトの先頭から文字を削除して新しい文字列を作成する点が異なります。 [TrimStart](https://docs.microsoft.com/dotnet/core/api/System.String.TrimStart(System.Char[])) メソッドには、削除する文字を指定する文字配列が渡されます。 [TrimEnd](https://docs.microsoft.com/dotnet/core/api/System.String.TrimEnd(System.Char[])) メソッドの場合と同様に、文字配列内での要素の順序はトリム操作に影響しません。 トリム操作は、文字配列で指定された文字が見つからなくなった時点で停止します。 - -文字列の最初の単語を削除する例を次に示します。 この例では、文字配列内の文字の順序が操作に影響しないことを示すために、`'l'` という文字と `'H'` という文字の順序を逆にしてあります。 - -```csharp -string MyString = "Hello World!"; -char[] MyChar = {'e', 'H','l','o',' ' }; -string NewString = MyString.TrimStart(MyChar); -Console.WriteLine(NewString); -``` - -```vb -Dim MyString As String = "Hello World!" -Dim MyChar() As Char = {"e","H","l","o"," " } -Dim NewString As String = MyString.TrimStart(MyChar) -Console.WriteLine(NewString) -``` - -このコードは、コンソールに `World!` と出力します。 - -## 削除 - -[String.Remove](https://docs.microsoft.com/dotnet/core/api/System.String.Remove(System.Int32)) メソッドは、既存の文字列内の指定した位置を開始位置として、指定した数の文字を削除します。 このメソッドは、インデックスが 0 から始まっていることを前提としています。 - -文字列の 0 から始まる 5 番目のインデックスを開始位置として、10 文字を削除する例を次に示します。 - -```csharp -string MyString = "Hello Beautiful World!"; -Console.WriteLine(MyString.Remove(5,10)); -// The example displays the following output: -// Hello World! -``` - -```vb -Dim MyString As String = "Hello Beautiful World!" -Console.WriteLine(MyString.Remove(5,10)) -' The example displays the following output: -' Hello World! -``` - -また、[String.Replace(String, String)](https://docs.microsoft.com/dotnet/core/api/System.String.Replace(System.String,System.String)) メソッドを呼び出し、置換対象として空の文字列 ([String.Empty](https://docs.microsoft.com/dotnet/core/api/System.String.Empty)) を指定することで、文字列から指定した文字または部分文字列を削除することもできます。 文字列からすべてのコンマを削除する例を次に示します。 - -```csharp -using System; - -public class Example -{ - public static void Main() - { - String phrase = "a cold, dark night"; - Console.WriteLine("Before: {0}", phrase); - phrase = phrase.Replace(",", ""); - Console.WriteLine("After: {0}", phrase); - } -} -// The example displays the following output: -// Before: a cold, dark night -// After: a cold dark night -``` - -```vb -Module Example - Public Sub Main() - Dim phrase As String = "a cold, dark night" - Console.WriteLine("Before: {0}", phrase) - phrase = phrase.Replace(",", "") - Console.WriteLine("After: {0}", phrase) - End Sub -End Module -' The example displays the following output: -' Before: a cold, dark night -' After: a cold dark night -``` - -## 関連項目 - -[基本的な文字列操作](basic-string-operations.md) - - - - - - - +title: ".NET Framework における文字列からの文字のトリムと削除 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Remove メソッド" + - "削除 (文字を)" + - "文字列 [.NET Framework], 削除 (文字を)" + - "Trim メソッド" + - "TrimEnd メソッド" + - "トリム (文字の)" + - "TrimStart メソッド" +ms.assetid: ab248dab-70d4-4413-81c6-542d153fd195 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# .NET Framework における文字列からの文字のトリムと削除 +文章を個々の単語に分割すると、単語の先頭または末尾に空白が残る場合があります。 そのような場合は、**System.String** クラスのトリム メソッドのいずれかを使用して、文字列内の指定した位置から任意の数の空白またはその他の文字を削除できます。 使用できるトリム メソッドとその説明を次の表に示します。 + +|メソッド名|使用方法| +|-----------|----------| +||文字列の先頭と末尾から、空白または文字配列で指定した文字を削除します。| +||文字列の末尾から、文字配列で指定した文字を削除します。| +||文字列の先頭から、文字配列で指定した文字を削除します。| +||文字列内の指定したインデックス位置から、指定した数の文字を削除します。| + +## Trim + メソッドを使用すると、文字列の両端から空白を簡単に削除できます。メソッドの使用例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#17](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/trimming.cpp#17)] + [!code-csharp[Conceptual.String.BasicOps#17](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/trimming.cs#17)] + [!code-vb[Conceptual.String.BasicOps#17](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/trimming.vb#17)] + + 文字列の先頭と末尾から、文字配列で指定した文字を削除することもできます。 次に、空白文字、ピリオド、およびアスタリスクを削除する例を示します。 + + [!code-csharp[Conceptual.String.BasicOps#22](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/trim2.cs#22)] + [!code-vb[Conceptual.String.BasicOps#22](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/trim2.vb#22)] + +## TrimEnd + **String.TrimEnd** メソッドは、文字列の末尾から文字を削除して新しい文字列オブジェクトを作成します。 このメソッドには、削除する文字を指定する文字配列が渡されます。 文字配列内での要素の順序は、トリム操作に影響しません。 トリム操作は、文字配列で指定された文字が見つからなくなった時点で停止します。 + + **TrimEnd** メソッドを使用して文字列の末尾の数文字を削除する例を次に示します。 この例では、文字配列内の文字の順序が操作に影響しないことを示すために、`'r'` という文字と `'W'` という文字の順序を逆にしてあります。 このコードは、`MyString` の最後の単語だけでなく、最初の単語の一部も削除します。 + + [!code-cpp[Conceptual.String.BasicOps#18](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/trimming.cpp#18)] + [!code-csharp[Conceptual.String.BasicOps#18](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/trimming.cs#18)] + [!code-vb[Conceptual.String.BasicOps#18](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/trimming.vb#18)] + + このコードは、コンソールに `He` と出力します。 + + **TrimEnd** メソッドを使用して、文字列の最後の単語を削除する例を次に示します。 このコードでは、`Hello` という単語の後にコンマがありますが、削除する文字の配列にコンマは指定されていないため、コンマの位置でトリムが停止します。 + + [!code-cpp[Conceptual.String.BasicOps#19](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/trimming.cpp#19)] + [!code-csharp[Conceptual.String.BasicOps#19](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/trimming.cs#19)] + [!code-vb[Conceptual.String.BasicOps#19](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/trimming.vb#19)] + + このコードは、コンソールに `Hello,` と出力します。 + +## TrimStart + **String.TrimStart** メソッドは **String.TrimEnd** メソッドと似ていますが、既存の文字列オブジェクトの先頭から文字を削除して新しい文字列を作成する点が異なります。 **TrimStart** メソッドには、削除する文字を指定する文字配列が渡されます。 **TrimEnd** メソッドの場合と同様に、文字配列内での要素の順序はトリム操作に影響しません。 トリム操作は、文字配列で指定された文字が見つからなくなった時点で停止します。 + + 文字列の最初の単語を削除する例を次に示します。 この例では、文字配列内の文字の順序が操作に影響しないことを示すために、`'l'` という文字と `'H'` という文字の順序を逆にしてあります。 + + [!code-cpp[Conceptual.String.BasicOps#20](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/trimming.cpp#20)] + [!code-csharp[Conceptual.String.BasicOps#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/trimming.cs#20)] + [!code-vb[Conceptual.String.BasicOps#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/trimming.vb#20)] + + このコードは、コンソールに `World!` と出力します。 + +## 削除 + メソッドは、既存の文字列内の指定した位置を開始位置として、指定した数の文字を削除します。 このメソッドは、インデックスが 0 から始まっていることを前提としています。 + + 文字列の 0 から始まる 5 番目のインデックスを開始位置として、10 文字を削除する例を次に示します。 + + [!code-cpp[Conceptual.String.BasicOps#21](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.string.basicops/cpp/trimming.cpp#21)] + [!code-csharp[Conceptual.String.BasicOps#21](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/trimming.cs#21)] + [!code-vb[Conceptual.String.BasicOps#21](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/trimming.vb#21)] + + また、 メソッドを呼び出し、置換対象として空の文字列 \(\) を指定することで、文字列から指定した文字または部分文字列を削除することもできます。 文字列からすべてのコンマを削除する例を次に示します。 + + [!code-csharp[Conceptual.String.BasicOps#23](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.string.basicops/cs/replace1.cs#23)] + [!code-vb[Conceptual.String.BasicOps#23](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.string.basicops/vb/replace1.vb#23)] + +## 参照 + [基本的な文字列操作](../../../docs/standard/base-types/basic-string-operations.md) \ No newline at end of file diff --git a/docs/standard/building-console-apps.md b/docs/standard/building-console-apps.md new file mode 100644 index 00000000000..047775f59a0 --- /dev/null +++ b/docs/standard/building-console-apps.md @@ -0,0 +1,41 @@ +--- +title: ".NET Framework におけるコンソール アプリケーションの構築 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework, ビルド (コンソール アプリケーションを)" + - "アプリケーション開発 [.NET Framework], コンソール" + - "コンソール アプリケーション" +ms.assetid: c21fb997-9f0e-40a5-8741-f73bba376bd8 +caps.latest.revision: 16 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 16 +--- +# .NET Framework におけるコンソール アプリケーションの構築 +.NET Framework のアプリケーションは、 クラスを使用して、コンソールから文字を読み取り、コンソールに文字を書き込みます。 コンソールからのデータは標準入力ストリームから読み取られ、コンソールへのデータは標準出力ストリームに書き込まれ、コンソールへのエラー データは標準エラー出力ストリームに書き込まれます。 これらのストリームは、アプリケーションの起動時に自動的にコンソールに関連付けられ、それぞれ プロパティ、 プロパティ、および プロパティとして示されます。 + + プロパティの値が オブジェクトであるのに対し、 および プロパティの値は オブジェクトです。 これらのプロパティを、コンソールを表さないストリームに関連付けることがができます。これにより、ストリームの出力先または入力元として異なる位置を指定できます。 たとえば、 プロパティを メソッドで をカプセル化する に設定することにより、出力をファイルにリダイレクトできます。 プロパティと プロパティとが同じストリームを参照する必要はありません。 + +> [!NOTE] +> コンソール アプリケーション \(C\#、Visual Basic、および C\+\+ の例を含む\) をビルドする方法の詳細については クラスのドキュメントを参照してください。 + + Windows ベースのアプリケーションなどでコンソールが存在しない場合には、情報を書き込む先のコンソールがないため、標準出力ストリームに書き込まれた出力を参照できません。 アクセスできないコンソールに情報を書き込んでも、例外は発生しません。 + + Visual Studio を使用して開発した Windows ベースのアプリケーション内で読み取りおよび書き込み用のコンソールを有効にするには、プロジェクトの **\[プロパティ\]** ダイアログ ボックスを開き、**\[アプリケーション\]** タブをクリックして、**\[アプリケーションの種類\]** を **\[コンソール アプリケーション\]** に設定します。 + + コンソール アプリケーションには、既定で起動されるメッセージ ポンプがありません。 したがって、コンソールが Microsoft Win32 タイマーを呼び出すと、失敗する場合があります。 + + **System.Console** クラスには、コンソールから個々の文字または行全体を読み取ることができるメソッドがあります。 その他のメソッドは、まずデータと書式指定文字列を変換してから、書式設定された文字列をコンソールに書き込みます。 書式指定文字列の詳細については、「[型の書式設定](../../docs/standard/base-types/formatting-types.md)」を参照してください。 + +## 参照 + + [型の書式設定](../../docs/standard/base-types/formatting-types.md) \ No newline at end of file diff --git a/docs/standard/class-library-overview.md b/docs/standard/class-library-overview.md new file mode 100644 index 00000000000..58f3d45c5af --- /dev/null +++ b/docs/standard/class-library-overview.md @@ -0,0 +1,115 @@ +--- +title: ".NET Framework クラス ライブラリの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework クラス ライブラリ, 概要" + - ".NET Framework, クラス ライブラリ" + - "基本型, クラス ライブラリ" + - "組み込み型" + - "クラス ライブラリ [.NET Framework]" + - "クラス オブジェクト値型" + - "クラス [.NET Framework], ライブラリ概要" + - "CLS" + - "共通言語仕様" + - "データ型 [.NET Framework]" + - "データ型 [.NET Framework], C#" + - "データ型 [.NET Framework], C++" + - "データ型 [.NET Framework], JScript" + - "データ型 [.NET Framework], Visual Basic" + - "浮動小数点値型" + - "整数値型" + - "JScript, データ型" + - "ライブラリ, .NET Framework クラス ライブラリ" + - "論理値型" + - "メンバー [.NET Framework], 型" + - "名前空間 [.NET Framework]" + - "名前空間 [.NET Framework], 名前空間の概要" + - "名前付け規則 [.NET Framework]" + - "System 名前空間" + - "型システム [.NET Framework]" + - "型, .NET Framework" + - "ユーザー定義型" + - "値型" + - "Visual Basic, データ型" + - "Visual C#, データ型" + - "Visual C++, データ型" +ms.assetid: 7e4c5921-955d-4b06-8709-101873acf157 +caps.latest.revision: 19 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 19 +--- +# .NET Framework クラス ライブラリの概要 +[!INCLUDE[dnprdnshort](../../includes/dnprdnshort-md.md)] には、開発プロセスを高速化および最適化し、システム機能へのアクセスを提供する、クラス、インターフェイス、および値型があります。 言語間での相互運用性を確保するために、.NET Framework のほとんどの型は共通言語仕様 \(CLS: Common Language Specification\) に準拠しています。このため、コンパイラが CLS に準拠しているすべてのプログラミング言語でこれらの型を使用できます。 + + .NET Framework の型は、.NET アプリケーション、.NET コンポーネント、および .NET コントロールを構築するときの基礎となります。 [!INCLUDE[dnprdnshort](../../includes/dnprdnshort-md.md)] には、次の機能を実行する型が用意されています。 + +- 基本データ型と例外を表す。 + +- データ構造をカプセル化する。 + +- 入出力を実行する。 + +- 読み込まれた型についての情報にアクセスする。 + +- .NET Framework セキュリティ チェックを呼び出す。 + +- データ アクセス、豊富なクライアント側 GUI、およびサーバー制御式のクライアント側 GUI を提供する。 + + [!INCLUDE[dnprdnshort](../../includes/dnprdnshort-md.md)] には、豊富なインターフェイスのセットに加えて、抽象クラスと具象 \(抽象ではない\) クラスが用意されています。 具象クラスはそのまま使用できますが、多くの場合は、具象クラスから独自のクラスを派生させます。 インターフェイスの機能を使用するには、インターフェイスを実装するクラスを作成するか、またはインターフェイスを実装する .NET Framework クラスの 1 つからクラスを派生させます。 + +## 名前付け規則 + .NET Framework の型では、階層構造を伴うドット構文の名前付け方法が使われます。 この方法では、関連する型が名前空間にグループ化されるため、検索と参照を簡単に行うことができます。 フルネームのうち右端のドットまでの最初の部分は、名前空間の名前です。 名前の最後の部分は型名です。 たとえば、**System.Collections.ArrayList** は **ArrayList** 型であり、名前空間 **System.Collections** に属します。 **System.Collections** 内の型を使用することで、オブジェクトのコレクションを操作できます。 + + この名前付け方法によって、[!INCLUDE[dnprdnshort](../../includes/dnprdnshort-md.md)] を拡張するライブラリ開発者は、型の階層構造のグループを簡単に作成し、一貫性のあるわかりやすい名前を付けることができます。 また、型の完全名 \(つまり名前空間と型名\) によって型を明確に特定できるため、型名の競合を防ぐことができます。 ライブラリ開発者は、次の規則に従って名前空間の名前を付けてください。 + + *CompanyName*.*TechnologyName* + + たとえば、名前空間 Microsoft.Word はこのガイドラインに従っています。 + + 名前付けパターンを使用して関連する型を名前空間にグループ化する方法は、クラス ライブラリを構築および文書化するのに便利です。 ただし、この名前付け方法は、参照可能範囲、メンバー アクセス、継承、セキュリティ、バインディングには影響しません。 名前空間は複数のアセンブリにまたがって分割でき、また 1 つのアセンブリに複数の名前空間からの型を含めることができます。 アセンブリは、共通言語ランタイムにおけるバージョン管理、配置、セキュリティ、読み込み、および参照可能範囲のための構造を提供します。 + + 名前空間と型の名前の詳細については、「[共通型システム](../../docs/standard/base-types/common-type-system.md)」を参照してください。 + +## 名前空間 System + 名前空間は、[!INCLUDE[dnprdnshort](../../includes/dnprdnshort-md.md)] における基本的な型のルート名前空間です。 この名前空間には、 \(継承階層構造のルート\)、 など、すべてのアプリケーションで使用される基本データ型を表すクラスが含まれます。 これらの型の多くは、プログラミング言語で使われるプリミティブなデータ型に対応します。 .NET Framework の型を使用してコードを記述するときには、.NET Framework の基本データ型が使用されるところに、プログラミング言語側の対応するキーワードを使用できます。 + + 次の表では、[!INCLUDE[dnprdnshort](../../includes/dnprdnshort-md.md)] に用意されているそれぞれの基本型の一覧を示し、各型について簡単に説明し、Visual Basic、C\#、C\+\+、JScript での対応する型を示します。 + +|カテゴリ|クラス名|説明|Visual Basic のデータ型|C\# のデータ型|C\+\+ データ型|JScript のデータ型| +|----------|----------|--------|------------------------|---------------|----------------|-------------------| +|整数||8 ビット符号なし整数。|**Byte**|**byte**|**unsigned char**|**Byte**| +|||8 ビット符号付き整数。

非 CLS 準拠|**SByte**|**sbyte**|**char**

または

**signed** **char**|**SByte**| +|||16 ビット符号付き整数。|**Short**|**short**|**short**|**short**| +|||32 ビット符号付き整数。|**整数**|**int**|**int**

または

**long**|**int**| +|||64 ビット符号付き整数|**Long**|**long**|**\_\_int64**|**long**| +|||16 ビット符号なし整数。

非 CLS 準拠|**UShort**|**ushort**|**unsigned short**|**UInt16**| +|||32 ビット符号なし整数。

非 CLS 準拠|**UInteger**|**uint**|**unsigned int**

または

**unsigned long**|**UInt32**| +|||64 ビット符号なし整数。

非 CLS 準拠|**ULong**|**ulong**|**unsigned \_\_int64**|**UInt64**| +|浮動小数点数||単精度 \(32 ビット\) 浮動小数点数|**Single**|**float**|**float**|**float**| +|||倍精度 \(64 ビット\) 浮動小数点数|**Double \(倍精度浮動小数点型\)**|**double**|**double**|**double**| +|論理||ブール値 \(true または false\)|**Boolean**|**bool**|**bool**|**bool**| +|その他||Unicode \(16 ビット\) 文字|**Char**|**char**|**wchar\_t**|**char**| +|||十進数 \(128 ビット\) の値です。|**Decimal \(10 進数型\)**|**decimal**|**Decimal \(10 進数型\)**|**Decimal \(10 進数型\)**| +|||基になるプラットフォームによってサイズが決まる符号付き整数 \(32 ビットのプラットフォームでは 32 ビット値、64 ビットのプラットフォームでは 64 ビット値\)|**IntPtr**

非組み込み型|**IntPtr**

非組み込み型|**IntPtr**

非組み込み型|**IntPtr**| +|||基になるプラットフォームによってサイズが決まる符号なし整数 \(32 ビットのプラットフォームでは 32 ビット値、64 ビットのプラットフォームでは 64 ビット値\)

非 CLS 準拠|**UIntPtr**

非組み込み型|**UIntPtr**

非組み込み型|**UIntPtr**

非組み込み型|**UIntPtr**| +|クラス オブジェクト||オブジェクト階層構造のルート|**Object**|**object**|**Object\***|**Object**| +|||Unicode 文字の不変固定長文字列|**String**|**string**|**String\***|**String**| + + 基本データ型に加えて、 名前空間には、例外を処理するクラスから、核となるランタイム概念 \(アプリケーション ドメインやガベージ コレクターなど\) を扱うクラスまで、100 以上のクラスが含まれます。 名前空間には、2 次レベルの名前空間も数多く含まれています。 + + 名前空間の詳細については、「[.NET Framework クラス ライブラリ](http://go.microsoft.com/fwlink/?LinkID=227195)」を参照してください。 参照ドキュメントには、各名前空間の簡単な概要と、各型とそのメンバーについての説明が記載されています。 + +## 参照 + [共通型システム](../../docs/standard/base-types/common-type-system.md) + [.NET Framework クラス ライブラリ](http://go.microsoft.com/fwlink/?LinkID=227195) + [概要](../../docs/framework/get-started/overview.md) \ No newline at end of file diff --git a/docs/standard/clr.md b/docs/standard/clr.md index 96f6c0e6afc..dd15ef2de1a 100644 --- a/docs/standard/clr.md +++ b/docs/standard/clr.md @@ -1,76 +1,90 @@ --- -title: "共通言語ランタイム (CLR)" -description: "共通言語ランタイム (CLR)" -keywords: .NET, .NET Core -author: rpetrusha -ms.author: ronpet -ms.date: 06/20/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 7704d9c9-e5fa-4969-a423-081cce0e21e6 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: b789ed861a5df583162f901c1c5bc765c55f7b30 -ms.lasthandoff: 03/02/2017 - ---- - -# 共通言語ランタイム (CLR) - -.NET Framework には、共通言語ランタイムと呼ばれるランタイム環境が用意されています。共通言語ランタイムは、コードを実行し、開発プロセスを支援するサービスを提供します。 - -コンパイラとツールにより、共通言語ランタイムの機能が公開されることによって、このマネージ実行環境の利点を活用するコードを記述できるようになります。 このような共通言語ランタイムに対応した言語コンパイラを使用して作成したコードはマネージ コードと呼ばれます。マネージ コードは、言語間の統合、言語間の例外処理、強化されたセキュリティ、バージョン管理と配置のサポート、コンポーネント間の対話の簡易モデル、デバッグ サービスとプロファイル サービスなど、さまざまな機能を利用できます。 - -> [!NOTE] -> 型システム、メタデータの書式、およびランタイム環境 (仮想実行システム) はすべて公的な標準規格の ECMA 共通言語基盤仕様により定義されているため、コンパイラおよびツールは共通言語ランタイムが使用できる出力を生成できます。 詳細については、「[ECMA C# and Common Language Infrastructure Specifications (ECMA C# および共通言語基盤の仕様)](https://www.visualstudio.com/en-us/mt639507)」を参照してください。 - -マネージ コードが共通言語ランタイムからサービスを受けられるようにするために、言語コンパイラは、そのコード内の型、メンバー、および参照を記述したメタデータを生成する必要があります。 メタデータはコード内に格納されます。つまり、共通言語ランタイムの読み込み可能なすべてのポータブル実行可能 (PE) ファイルには、メタデータが含まれていることになります。 共通言語ランタイムは、クラスの検索と読み込み、メモリ内でのインスタンスのレイアウト、メソッドの呼び出しの解決、ネイティブ コードの生成、セキュリティの強化、およびランタイムのコンテキスト境界の設定にメタデータを使用します。 - -共通言語ランタイムはオブジェクトのレイアウトを自動的に処理し、それらのオブジェクトへの参照を管理し、不要になったオブジェクトを解放します。 このような方法で有効期間を管理されるオブジェクトをマネージ データと呼びます。 ガベージ コレクションによって、一般的なプログラミング エラーだけでなくメモリ リークもなくなります。 コードがマネージ コードの場合、作成する .NET Framework アプリケーションではマネージ データ、アンマネージ データ、またはマネージ データとアンマネージ データの両方を使用できます。 プリミティブ型などのデータ型は言語コンパイラが独自に提供しているため、データがマネージ データかどうかが不明な (または把握する必要がない) 場合もあります。 - -共通言語ランタイムでは、複数の言語間で対話できるオブジェクトを含むコンポーネントやアプリケーションを簡単にデザインできます。 異なる言語で記述されたオブジェクトが相互に対話でき、それらのオブジェクトの動作が緊密に統合されます。 たとえば、あるクラスを定義してから、そのクラスの派生クラスを別の言語で作成したり、そのクラスに対して別の言語で記述したメソッドを呼び出したりできます。 また、あるクラスのインスタンスを別の言語で記述されたクラスのメソッドに渡すこともできます。 このような言語間の統合を実現できるのは、共通言語ランタイムに対応した言語コンパイラとツールが、共通言語ランタイムによって定義されている共通型システムを採用し、型の作成、使用、永続化、型へのバインディング、および新しい型の定義に関する共通言語ランタイムの規則に従っているためです。 - -すべてのマネージ コンポーネントは、関連するコンポーネントとリソースについての情報をメタデータの一部として保持しています。 共通言語ランタイムはこの情報を使用して、作成したコンポーネントまたはアプリケーションが必要とする特定バージョンのコンポーネントやリソースがあることを確認します。これにより、不明な依存関係によってコードが中断される確率が低くなります。 定義した型 (およびその依存関係) に関する情報はコードと共にメタデータとして保存されます。これによって、コンポーネントのレプリケーションと削除のタスクがより簡単に実行できるようになります。 - -言語コンパイラおよびツールは、開発者にとってわかりやすく役に立つ方法で共通言語ランタイムの機能を公開します。 つまり、ある環境では重視されている共通言語ランタイムの機能が、別の環境ではそれほど重視されていないという場合もあります。 共通言語ランタイムがどのような利点をもたらすかは、使用するコンパイラやツールによって異なります。 ランタイムの利点は次のとおりです。 - -* 異なる言語で開発されたコンポーネントを簡単に利用可能。 - -* クラス ライブラリによって提供される拡張性のある型。 - -* 継承、インターフェイス、オーバーロードなどのオブジェクト指向プログラミングの言語機能。 - -* マルチスレッドでスケーラブルなアプリケーションの作成を可能にする明示的なフリー スレッドのサポート。 - -* 構造化例外処理のサポート。 - -* カスタム属性のサポート。 - -* ガベージ コレクション。 - -* タイプ セーフとセキュリティを強化するために関数ポインターではなくデリゲートを使用。 - -## 共通言語ランタイムのバージョン - -.NET Framework のバージョン番号はそれに含まれている CLR のバージョン番号には必ずしも対応しません。 2 つのバージョン番号がどのように対応しているかを次の表に示します。 - -.NET Framework のバージョン | 含まれている CLR のバージョン ----------------------- | -------------------- -1.0 | 1.0 -1.1 | 1.1 -2.0 | 2.0 -3.0 | 2.0 -3.5 | 2.0 -4 | 4 -4.5 (4.5.1 および 4.5.2 を含む) | 4 -4.6 (4.6.1 と 4.6.2 を含む) | 4 - -## 関連項目 - -[自動メモリ管理](garbagecollection/index.md) - - - - +title: "共通言語ランタイム (CLR) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - ".NET Framework, 共通言語ランタイム" + - "コード, 実行" + - "コード, ランタイム機能" + - "共通言語ランタイム" + - "コンパイル (ソース コードを), ランタイム機能" + - "言語コンパイラ" + - "マネージ コード" + - "マネージ データ" + - "メタデータ, ランタイム機能" + - "ランタイム" + - "ソース コード実行" +ms.assetid: 059a624e-f7db-4134-ba9f-08b676050482 +caps.latest.revision: 24 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 18 +--- +# 共通言語ランタイム (CLR) +.NET Framework には、共通言語ランタイムと呼ばれるランタイム環境が用意されています。共通言語ランタイムは、コードを実行し、開発プロセスを支援するサービスを提供します。 + + コンパイラとツールにより、共通言語ランタイムの機能が公開されることによって、このマネージ実行環境の利点を活用するコードを記述できるようになります。 このような共通言語ランタイムに対応した言語コンパイラを使用して作成したコードはマネージ コードと呼ばれます。マネージ コードは、言語間の統合、言語間の例外処理、強化されたセキュリティ、バージョン管理と配置のサポート、コンポーネント間の対話の簡易モデル、デバッグ サービスとプロファイル サービスなど、さまざまな機能を利用できます。 + +> [!WARNING] +> 型システム、メタデータの書式、およびランタイム環境 \(仮想実行システム\) はすべて公的な標準規格の ECMA 共通言語基盤仕様により定義されているため、コンパイラおよびツールは共通言語ランタイムが使用できる出力を生成できます。 詳細については、「[ECMA C\# and Common Language Infrastructure Specifications \(ECMA C\# および共通言語基盤の仕様\)](http://go.microsoft.com/fwlink/?LinkId=99212)」を参照してください。 + + マネージ コードが共通言語ランタイムからサービスを受けられるようにするために、言語コンパイラは、そのコード内の型、メンバー、および参照を記述したメタデータを生成する必要があります。 メタデータはコード内に格納されます。つまり、共通言語ランタイムの読み込み可能なすべてのポータブル実行可能 \(PE\) ファイルには、メタデータが含まれていることになります。 共通言語ランタイムは、クラスの検索と読み込み、メモリ内でのインスタンスのレイアウト、メソッドの呼び出しの解決、ネイティブ コードの生成、セキュリティの強化、およびランタイムのコンテキスト境界の設定にメタデータを使用します。 + + 共通言語ランタイムはオブジェクトのレイアウトを自動的に処理し、それらのオブジェクトへの参照を管理し、不要になったオブジェクトを解放します。 このような方法で有効期間を管理されるオブジェクトをマネージ データと呼びます。 ガベージ コレクションによって、一般的なプログラミング エラーだけでなくメモリ リークもなくなります。 コードがマネージ コードの場合、作成する .NET Framework アプリケーションではマネージ データ、アンマネージ データ、またはマネージ データとアンマネージ データの両方を使用できます。 プリミティブ型などのデータ型は言語コンパイラが独自に提供しているため、データがマネージ データかどうかが不明な \(または把握する必要がない\) 場合もあります。 + + 共通言語ランタイムでは、複数の言語間で対話できるオブジェクトを含むコンポーネントやアプリケーションを簡単にデザインできます。 異なる言語で記述されたオブジェクトが相互に対話でき、それらのオブジェクトの動作が緊密に統合されます。 たとえば、あるクラスを定義してから、そのクラスの派生クラスを別の言語で作成したり、そのクラスに対して別の言語で記述したメソッドを呼び出したりできます。 また、あるクラスのインスタンスを別の言語で記述されたクラスのメソッドに渡すこともできます。 このような言語間の統合を実現できるのは、共通言語ランタイムに対応した言語コンパイラとツールが、共通言語ランタイムによって定義されている共通型システムを採用し、型の作成、使用、永続化、型へのバインディング、および新しい型の定義に関する共通言語ランタイムの規則に従っているためです。 + + すべてのマネージ コンポーネントは、関連するコンポーネントとリソースについての情報をメタデータの一部として保持しています。 共通言語ランタイムはこの情報を使用して、作成したコンポーネントまたはアプリケーションが必要とする特定バージョンのコンポーネントやリソースがあることを確認します。これにより、不明な依存関係によってコードが中断される確率が低くなります。 登録情報や状態データはレジストリ内では設定や保守が難しくなるため、レジストリには格納されなくなりました。 代わりに、定義した型 \(およびその依存関係\) に関する情報はコードと共にメタデータとして保存されます。これによって、コンポーネントのレプリケーションと削除がより簡単に実行できるようになります。 + + 言語コンパイラおよびツールは、開発者にとってわかりやすく役に立つ方法で共通言語ランタイムの機能を公開します。 つまり、ある環境では重視されている共通言語ランタイムの機能が、別の環境ではそれほど重視されていないという場合もあります。 共通言語ランタイムがどのような利点をもたらすかは、使用するコンパイラやツールによって異なります。 たとえば、Visual Basic の開発者が共通言語ランタイムを使用した場合は、Visual Basic 言語のオブジェクト指向機能が強化されたと感じるでしょう。 ランタイムの利点は次のとおりです。 + +- パフォーマンスの向上。 + +- 異なる言語で開発されたコンポーネントを簡単に利用可能。 + +- クラス ライブラリによって提供される拡張性のある型。 + +- 継承、インターフェイス、オーバーロードなどのオブジェクト指向プログラミングの言語機能。 + +- マルチスレッドでスケーラブルなアプリケーションの作成を可能にする明示的なフリー スレッドのサポート。 + +- 構造化例外処理のサポート。 + +- カスタム属性のサポート。 + +- ガベージ コレクション。 + +- タイプ セーフとセキュリティを強化するために関数ポインターではなくデリゲートを使用。 デリゲートの詳細については、「[共通型システム](../../docs/standard/base-types/common-type-system.md)」を参照してください。 + +## 共通言語ランタイムのバージョン + .NET Framework のバージョン番号はそれに含まれている CLR のバージョン番号には必ずしも対応しません。 2 つのバージョン番号がどのように対応しているかを次の表に示します。 + +|.NET Framework のバージョン|含まれている CLR のバージョン| +|---------------------------|-----------------------| +|1.0|1.0| +|1.1|1.1| +|2.0|2.0| +|3.0|2.0| +|3.5|2.0| +|4|4| +|4.5 \(4.5.1 および 4.5.2 を含む\)|4| + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[マネージ実行プロセス](../../docs/standard/managed-execution-process.md)|共通言語ランタイム利用するために必要な手順について説明します。| +|[自動メモリ管理](../../docs/standard/automatic-memory-management.md)|ガベージ コレクターによるメモリの割り当て方法および解放方法について説明します。| +|[NIB: Overview of the .NET Framework](http://msdn.microsoft.com/ja-jp/ea38ac1e-92af-4d1b-8db1-e8a5ea10ed85)|共通型システム、言語間での相互運用性、マネージ実行、アプリケーション ドメイン、アセンブリなどの .NET Framework の主要な概念について説明します。| +|[共通型システム](../../docs/standard/base-types/common-type-system.md)|言語間の統合をサポートするために共通言語ランタイムで型を宣言、使用、および管理する方法について説明します。| + +## 参照 + [バージョンおよび依存関係](../../docs/framework/migration-guide/versions-and-dependencies.md) \ No newline at end of file diff --git a/docs/standard/collections/commonly-used-collection-types.md b/docs/standard/collections/commonly-used-collection-types.md index 166b9133947..a5adabe154a 100644 --- a/docs/standard/collections/commonly-used-collection-types.md +++ b/docs/standard/collections/commonly-used-collection-types.md @@ -1,59 +1,63 @@ --- -title: "一般的に使用されるコレクション型" -description: "一般的に使用されるコレクション型" -keywords: .NET, .NET Core -author: mairaw -ms.author: mairaw -ms.date: 06/20/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 55861611-1e40-4cc2-9ec5-0b2df4ba6c0c -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: f44b8a87bf263032b991fc1bbc70712136910106 -ms.lasthandoff: 03/02/2017 - ---- - -# 一般的に使用されるコレクション型 - -コレクション型は、ハッシュ テーブル、キュー、スタック、バッグ、ディクショナリ、リストなど、一般的な種類のデータ コレクションです。 - -コレクションは、[`ICollection`](https://docs.microsoft.com/dotnet/core/api/System.Collections.ICollection) インターフェイス、[`IList`](https://docs.microsoft.com/dotnet/core/api/System.Collections.IList) インターフェイス、[`IDictionary`](https://docs.microsoft.com/dotnet/core/api/System.Collections.IDictionary) インターフェイス、または対応するジェネリックに基づきます。 `IList` インターフェイスと `IDictionary` インターフェイスはどちらも `ICollection` インターフェイスから派生したインターフェイスです。したがって、すべてのコレクションが直接または間接的に `ICollection` インターフェイスに基づきます。 `IList` インターフェイスに基づくコレクション ([`Array`](https://docs.microsoft.com/dotnet/core/api/System.Array)、[`ArrayList`](https://docs.microsoft.com/dotnet/core/api/System.Collections.ArrayList), or [`List)`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.List-1) など) または `ICollection` インターフェイスに直接基づくコレクション ([`Queue`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Queue)、[`ConcurrentQueue`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentQueue-1)、[`Stack`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Stack)、[`ConcurrentStack`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentStack-1)、[`LinkedList`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.LinkedList-1) など) では、すべての要素に値のみが含まれます。 `IDictionary` インターフェイスに基づくコレクション ([`Hashtable`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Hashtable) クラスと [`SortedList`](https://docs.microsoft.com/dotnet/core/api/System.Collections.SortedList) クラス、[`Dictionary`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Dictionary-2) ジェネリック クラスと [`SortedList`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedList-2) ジェネリック クラスなど)、または [`ConcurrentDictionary`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentDictionary-2) クラスでは、すべての要素にキーと値の両方が含まれます。 [`KeyedCollection`](https://docs.microsoft.com/dotnet/core/api/System.Collections.ObjectModel.KeyedCollection-2) クラスは、キーが値に埋め込まれている値リストであるために独特で、そのために、リストのようにもディクショナリのようにも動作します。 - -ジェネリック コレクションは、厳密な型指定に対する最適なソリューションです。 ただし、使用する言語でジェネリックがサポートされていない場合、[`System.Collections`](https://docs.microsoft.com/dotnet/core/api/System.Collections) 名前空間には [`CollectionBase`](https://docs.microsoft.com/dotnet/core/api/System.Collections.CollectionBase)、[`ReadOnlyCollectionBase`](https://docs.microsoft.com/dotnet/core/api/System.Collections.ReadOnlyCollectionBase)、[`DictionaryBase`](https://docs.microsoft.com/dotnet/core/api/System.Collections.DictionaryBase) などの基本コレクションが含まれており、これらは抽象基本クラスで、厳密に型指定されたコレクション クラスを作成するために拡張できます。 効率的なマルチスレッド コレクション アクセスが必要な場合は、[`System.Collections.Concurrent`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent) 名前空間のジェネリック コレクションを使用します。 - -コレクションは、要素の格納方法、要素の並べ替え方法、検索の実行方法、および比較の実行方法によって異なります。 [`Queue`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Queue) クラスと [`Queue`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Queue-1) ジェネリック クラスは先入れ先出しのリストを提供しますが、[`Stack`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Stack) クラスと [`Stack`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Stack-1) ジェネリック クラスは後入れ先出しのリストを提供します。 [`SortedList`](https://docs.microsoft.com/dotnet/core/api/System.Collections.SortedList) クラスと [`SortedList`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedList-2) ジェネリック クラスは、[`Hashtable`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Hashtable) クラスと [`Dictionary`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Dictionary-2) ジェネリック クラスの並べ替えバージョンを提供します。 `Hashtable` または `Dictionary` の要素は、要素のキーによってのみアクセスできますが、`SortedList` または [`KeyedCollection`](https://docs.microsoft.com/dotnet/core/api/System.Collections.ObjectModel.KeyedCollection-2) の要素は、キーまたは要素のインデックスによってアクセスできます。 すべてのコレクションのインデックスがゼロから始まりますが、[`Array`](https://docs.microsoft.com/dotnet/core/api/System.Array) は例外で、ゼロから始まらない配列を使用できます。 - -LINQ to Objects 機能では、オブジェクト型で [`IEnumerable`](https://docs.microsoft.com/dotnet/core/api/System.Collections.IEnumerable) または [`IEnumerable`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IEnumerable-1) を実装している限り、LINQ クエリを使用してメモリ内オブジェクトにアクセスできます。 LINQ クエリはデータ アクセス用の一般的なパターンです。通常、これは標準の foreach ループよりも簡潔で読みやすく、フィルター処理、並べ替え、およびグループ化の機能を備えています。 さらに、LINQ クエリによってパフォーマンスを向上させることができます。 - -## 関連トピック - -タイトル | 説明 ------ | ----------- -[`Collections and Data Structures`](index.md) | .NET Framework で利用できるスタック、キュー、リスト、配列、ディクショナリなどのさまざまなコレクション型について説明します。 -[`Hashtable and Dictionary Collection Types`](hashtable-and-dictionary-collection-types.md) | ジェネリックと非ジェネリックのハッシュをベースにしたディクショナリ型の機能について説明します。 -[`Sorted Collection Types`](sorted-collection-types.md) | 並べ替えられたコレクションのパフォーマンスと特性について説明します。 - -## 参照 - -[`System.Collections`](https://docs.microsoft.com/dotnet/core/api/System.Collections) - -[`System.Collections.Generic`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic) - -[`System.Collections.ICollection`](https://docs.microsoft.com/dotnet/core/api/System.Collections.ICollection) - -[`System.Collections.Generic.ICollection`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.ICollection-1) - -[`System.Collections.IList`](https://docs.microsoft.com/dotnet/core/api/System.Collections.IList) - -[`System.Collections.Generic.IList`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IList-1) - -[`System.Collections.IDictionary`](https://docs.microsoft.com/dotnet/core/api/System.Collections.IDictionary) - -[`System.Collections.Generic.IDictionary`](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IDictionary-2) - -[`System.Linq`](https://docs.microsoft.com/dotnet/core/api/System.Linq) - +title: "一般的に使用されるコレクション型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コレクション [.NET Framework], 汎用" + - "Collections クラス" + - "ジェネリック コレクション" + - "ジェネリック [.NET Framework], コレクション" + - "グループ化 (コレクションによるデータの), ジェネリック コレクション型" + - "IDictionary インターフェイス, グループ化 (コレクションによるデータの)" + - "IList インターフェイス, グループ化 (コレクションによるデータの)" + - "オブジェクト [.NET Framework], グループ化 (コレクションによる)" +ms.assetid: f5d4c6a4-0d7b-4944-a9fb-3b12d9ebfd55 +caps.latest.revision: 29 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 29 +--- +# 一般的に使用されるコレクション型 +コレクション型は、ハッシュ テーブル、キュー、スタック、バッグ、ディクショナリ、リストなど、一般的な種類のデータ コレクションです。 + + コレクションは、 インターフェイス、 インターフェイス、 インターフェイス、または対応するジェネリックに基づきます。 インターフェイスと インターフェイスはどちらも インターフェイスから派生したインターフェイスです。したがって、すべてのコレクションが直接または間接的に インターフェイスに基づきます。 インターフェイスに基づくコレクション \(、または など\) または インターフェイスに直接基づくコレクション \(、または など\) では、すべての要素に値のみが含まれます。 インターフェイスに基づくコレクション \( クラスと クラス、 ジェネリック クラスと ジェネリック クラスなど\)、または クラスでは、すべての要素にキーと値の両方が含まれます。 クラスは、キーが値に埋め込まれている値リストであるために独特で、そのために、リストのようにもディクショナリのようにも動作します。 + + ジェネリック コレクションは、厳密な型指定に対する最適なソリューションです。 ただし、使用する言語でジェネリックがサポートされていない場合、 名前空間には などの基本コレクションが含まれており、これらは抽象基本クラスで、厳密に型指定されたコレクション クラスを作成するために拡張できます。 効率的なマルチスレッド コレクション アクセスが必要な場合は、 名前空間のジェネリック コレクションを使用します。 + + コレクションは、要素の格納方法、要素の並べ替え方法、検索の実行方法、および比較の実行方法によって異なります。 クラスと ジェネリック クラスは先入れ先出しのリストを提供しますが、 クラスと ジェネリック クラスは後入れ先出しのリストを提供します。 クラスと ジェネリック クラスは、 クラスと ジェネリック クラスの並べ替えバージョンを提供します。 または の要素は、要素のキーによってのみアクセスできますが、 または の要素は、キーまたは要素のインデックスによってアクセスできます。 すべてのコレクションのインデックスがゼロから始まりますが、 は例外で、ゼロから始まらない配列を使用できます。 + + LINQ to Objects 機能では、オブジェクト型で または を実装している限り、LINQ クエリを使用してメモリ内オブジェクトにアクセスできます。 LINQ クエリはデータ アクセス用の一般的なパターンです。通常、これは標準の `foreach` ループよりも簡潔で読みやすく、フィルター処理、並べ替え、およびグループ化機能を備えています。 さらに、LINQ クエリによってパフォーマンスを向上させることができます。 詳しくは、「[LINQ to Objects](../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-objects.md)」および「[Parallel LINQ \(PLINQ\)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md)」を参照してください。 + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[コレクションとデータ構造体](../../../docs/standard/collections/index.md)|スタック、キュー、リスト、配列、ディクショナリなど、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] で利用できるさまざまなコレクション型について説明します。| +|[Hashtable コレクション型と Dictionary コレクション型](../../../docs/standard/collections/hashtable-and-dictionary-collection-types.md)|ジェネリックと非ジェネリックのハッシュ ベースのディクショナリ型の機能について説明します。| +|[Sorted コレクション型](../../../docs/standard/collections/sorted-collection-types.md)|リストとセットの並べ替え機能を提供するクラスについて説明します。| +|[ジェネリック](../../../docs/standard/generics/index.md)|ジェネリック コレクション、汎用デリゲート、ジェネリック インターフェイスなど、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] に用意されているジェネリック機能について説明します。 C\#、Visual Basic、および Visual C\+\+ の機能についてのドキュメント、およびリフレクションなどのサポート テクノロジへのリンクを示します。| + +## 参照 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/standard/collections/comparisons-and-sorts-within-collections.md b/docs/standard/collections/comparisons-and-sorts-within-collections.md index 370fc4b38f5..2bb8d0eb56e 100644 --- a/docs/standard/collections/comparisons-and-sorts-within-collections.md +++ b/docs/standard/collections/comparisons-and-sorts-within-collections.md @@ -1,204 +1,68 @@ --- -title: "コレクション内での比較と並べ替え" -description: "コレクション内での比較と並べ替え" -keywords: .NET, .NET Core -author: mairaw -ms.author: mairaw -ms.date: 06/20/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: c7b7c005-628d-427a-91ad-af0c3958c00e -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 6826c0c2e86d0a1add1f88b001c13143ee098634 -ms.lasthandoff: 03/02/2017 - ---- - -# コレクション内での比較と並べ替え - -[System.Collections](https://docs.microsoft.com/dotnet/core/api/System.Collections) クラスは、削除する要素を検索するか、キーと値のペアの値を返すかに関係なく、コレクションの管理に関連するほぼすべての処理において比較を実行します。 - -通常、コレクションは等値比較子か順序比較子、またはその両方を使用します。 比較には&2; つのコンストラクターが使用されます。 - -## 等価性のチェック - -`Contains`、`IndexOf`、`LastIndexOf`、`Remove` などのメソッドは、コレクション要素に対して等値比較子を使用します。 コレクションがジェネリックの場合、次のガイドラインに従ってアイテムの等価性が比較されます。 - -* T 型で [IEquatable<T>](https://docs.microsoft.com/dotnet/core/api/System.IEquatable-1) ジェネリック インターフェイスが実装されている場合、等値比較子はそのインターフェイスの `Equals` メソッドです。 - -* T 型で `IEquatable` が実装されていない場合、`Object.Equals` が使用されます。 - -また、ディクショナリ コレクションの一部のコンストラクター オーバーロードでは、[IEqualityComparer<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IEqualityComparer-1) 実装が受け取られ、これを使用してキーの等価性が比較されます。 - -## 並べ替え順序の決定 - -`BinarySearch`、`Sort` などのメソッドは、コレクション要素に対して順序比較子を使用します。 コレクションの要素間または要素と指定された値との間で比較を実行できます。 オブジェクトの比較には、既定の比較子と明示的な比較子の概念が適用されます。 - -既定の比較子は、比較される&1; つ以上のオブジェクトに依存して `IComparable` インターフェイスを実装します。 リスト コレクションの値として使用されるか、またはディクショナリ コレクションのキーとして使用されるすべてのクラスで、`IComparable` を実装することをお勧めします。 ジェネリック コレクションの場合、等価比較は次の基準に従って決定されます。 - -* T 型で [System.IComparable<T>](https://docs.microsoft.com/dotnet/core/api/System.IComparable-1) ジェネリック インターフェイスが実装されている場合、既定の比較子はそのインターフェイスの `CompareTo(T)` メソッドです。 - -* T 型で非ジェネリックの [System.IComparable](https://docs.microsoft.com/dotnet/core/api/System.IComparable) インターフェイスが実装されている場合、既定の比較子はそのインターフェイスの `CompareTo`(Object) メソッドです。 - -* T 型でいずれのインターフェイスも実装されていない場合、既定の比較子は存在せず、比較子または比較デリゲートを明示的に指定する必要があります。 - -明示的な比較を指定するために、一部のメソッドではパラメーターとして `IComparer` 実装を受け取ります。 たとえば、`List.Sort` メソッドは [System.Collections.Generic.IComparer<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IComparer-1) 実装を受け取ります。 - -## 等価性と並べ替えの例 - -次のコードは、単純なビジネス オブジェクトでの [IEquatable<T>](https://docs.microsoft.com/dotnet/core/api/System.IEquatable-1) と [IComparable<T>](https://docs.microsoft.com/dotnet/core/api/System.IComparable-1) の実装を示しています。 また、オブジェクトがリストに格納され、並べ替えられている場合、`Sort()` メソッドを呼び出すと、結果的に 'Part' 型の既定の比較子と、匿名メソッドを使用して実装された `Sort(Comparison)` メソッドを使用することになります。 - -C# - -```csharp -using System; -using System.Collections.Generic; -// Simple business object. A PartId is used to identify the type of part -// but the part name can change. -public class Part : IEquatable , IComparable -{ - public string PartName { get; set; } - - public int PartId { get; set; } - - public override string ToString() - { - return "ID: " + PartId + " Name: " + PartName; - } - public override bool Equals(object obj) - { - if (obj == null) return false; - Part objAsPart = obj as Part; - if (objAsPart == null) return false; - else return Equals(objAsPart); - } - public int SortByNameAscending(string name1, string name2) - { - - return name1.CompareTo(name2); - } - - // Default comparer for Part type. - public int CompareTo(Part comparePart) - { - // A null value means that this object is greater. - if (comparePart == null) - return 1; - - else - return this.PartId.CompareTo(comparePart.PartId); - } - public override int GetHashCode() - { - return PartId; - } - public bool Equals(Part other) - { - if (other == null) return false; - return (this.PartId.Equals(other.PartId)); - } - // Should also override == and != operators. - -} -public class Example -{ - public static void Main() - { - // Create a list of parts. - List parts = new List(); - - // Add parts to the list. - parts.Add(new Part() { PartName = "regular seat", PartId = 1434 }); - parts.Add(new Part() { PartName= "crank arm", PartId = 1234 }); - parts.Add(new Part() { PartName = "shift lever", PartId = 1634 }); ; - // Name intentionally left null. - parts.Add(new Part() { PartId = 1334 }); - parts.Add(new Part() { PartName = "banana seat", PartId = 1444 }); - parts.Add(new Part() { PartName = "cassette", PartId = 1534 }); - - - // Write out the parts in the list. This will call the overridden - // ToString method in the Part class. - Console.WriteLine("\nBefore sort:"); - foreach (Part aPart in parts) - { - Console.WriteLine(aPart); - } - - - // Call Sort on the list. This will use the - // default comparer, which is the Compare method - // implemented on Part. - parts.Sort(); - - - Console.WriteLine("\nAfter sort by part number:"); - foreach (Part aPart in parts) - { - Console.WriteLine(aPart); - } - - // This shows calling the Sort(Comparison(T) overload using - // an anonymous method for the Comparison delegate. - // This method treats null as the lesser of two values. - parts.Sort(delegate(Part x, Part y) - { - if (x.PartName == null && y.PartName == null) return 0; - else if (x.PartName == null) return -1; - else if (y.PartName == null) return 1; - else return x.PartName.CompareTo(y.PartName); - }); - - Console.WriteLine("\nAfter sort by name:"); - foreach (Part aPart in parts) - { - Console.WriteLine(aPart); - } - - /* - - Before sort: - ID: 1434 Name: regular seat - ID: 1234 Name: crank arm - ID: 1634 Name: shift lever - ID: 1334 Name: - ID: 1444 Name: banana seat - ID: 1534 Name: cassette - - After sort by part number: - ID: 1234 Name: crank arm - ID: 1334 Name: - ID: 1434 Name: regular seat - ID: 1444 Name: banana seat - ID: 1534 Name: cassette - ID: 1634 Name: shift lever - - After sort by name: - ID: 1334 Name: - ID: 1444 Name: banana seat - ID: 1534 Name: cassette - ID: 1234 Name: crank arm - ID: 1434 Name: regular seat - ID: 1634 Name: shift lever - - */ - - } -} -``` - -## 関連項目 - -[IComparer](https://docs.microsoft.com/dotnet/core/api/System.Collections.IComparer) - -[IEquatable<T>](https://docs.microsoft.com/dotnet/core/api/System.IEquatable-1) - -[IComparer<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IComparer-1) - -[IComparable](https://docs.microsoft.com/dotnet/core/api/System.IComparable) - -[IComparable<T>](https://docs.microsoft.com/dotnet/core/api/System.IComparable-1) - +title: "コレクション内での比較と並べ替え | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コレクション [.NET Framework], 比較" + - "Collections クラス" + - "Equals メソッド" + - "IComparable.CompareTo メソッド" + - "並べ替え (データの), コレクション" +ms.assetid: 5e4d3b45-97f0-423c-a65f-c492ed40e73b +caps.latest.revision: 11 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 11 +--- +# コレクション内での比較と並べ替え + クラスは、削除する要素を検索するか、キーと値のペアの値を返すかに関係なく、コレクションの管理に関連するほぼすべての処理において比較を実行します。 + + 通常、コレクションは等値比較子か順序比較子、またはその両方を使用します。 比較には 2 つのコンストラクターが使用されます。 + + +## 等価性のチェック + `Contains`、、`Remove` などのメソッドは、コレクション要素に対して等値比較子を使用します。 コレクションがジェネリックの場合、次のガイドラインに従ってアイテムの等価性が比較されます。 + +- T 型で ジェネリック インターフェイスが実装されている場合、等値比較子はそのインターフェイスの メソッドです。 + +- T 型で が実装されていない場合、 が使用されます。 + + また、ディクショナリ コレクションの一部のコンストラクター オーバーロードでは、 実装が受け取られ、これを使用してキーの等価性が比較されます。 例については、 コンストラクターに関する説明を参照してください。 + + +## 並べ替え順序の決定 + `BinarySearch`、`Sort` などのメソッドは、コレクション要素に対して順序比較子を使用します。 コレクションの要素間または要素と指定された値との間で比較を実行できます。 オブジェクトの比較には、`default comparer`と`explicit comparer`の概念が適用されます。 + + 既定の比較子は、比較される 1 つ以上のオブジェクトに依存して **IComparable** インターフェイスを実装します。 リスト コレクションの値として使用されるか、またはディクショナリ コレクションのキーとして使用されるすべてのクラスで、**IComparable** を実装することをお勧めします。 ジェネリック コレクションの場合、等価比較は次の基準に従って決定されます。 + +- T 型で ジェネリック インターフェイスが実装されている場合、既定の比較子はそのインターフェイスの メソッドです。 + +- T 型で非ジェネリックの インターフェイスが実装されている場合、既定の比較子はそのインターフェイスの メソッドです。 + +- T 型でいずれのインターフェイスも実装されていない場合、既定の比較子は存在せず、比較子または比較デリゲートを明示的に指定する必要があります。 + + 明示的な比較を指定するために、一部のメソッドではパラメーターとして **IComparer** 実装を受け取ります。 たとえば、 メソッドは 実装を受け取ります。 + + システムの現在のカルチャ設定は、コレクション内の比較と並べ替えに影響を与える可能性があります。 既定では、**Collections** クラスの比較と並べ替えはカルチャに依存します。 カルチャ設定を無視して一貫した比較と並べ替えの結果を得るには、 を受け取るメンバー オーバーロードと共に を使用します。 詳細については、次のトピックを参照してください。[カルチャを認識しないコレクションの操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md) および[カルチャを認識しない配列の操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-arrays.md). + + +## 等価性と並べ替えの例 + 次のコードは、単純なビジネス オブジェクトでの の実装を示しています。 また、オブジェクトがリストに格納され、並べ替えられている場合、 メソッドを呼び出すと、結果的に `Part` 型の既定の比較子と、匿名メソッドを使用して実装された メソッドを使用することになります。 + + [!code-csharp[System.Collections.Generic.List.Sort#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.collections.generic.list.sort/cs/program.cs#1)] + [!code-vb[System.Collections.Generic.List.Sort#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.collections.generic.list.sort/vb/module1.vb#1)] + +## 参照 + + + + + \ No newline at end of file diff --git a/docs/standard/collections/hashtable-and-dictionary-collection-types.md b/docs/standard/collections/hashtable-and-dictionary-collection-types.md index af3d6990a10..1c5bfe8a377 100644 --- a/docs/standard/collections/hashtable-and-dictionary-collection-types.md +++ b/docs/standard/collections/hashtable-and-dictionary-collection-types.md @@ -1,52 +1,50 @@ --- -title: "Hashtable コレクション型と Dictionary コレクション型" -description: "Hashtable コレクション型と Dictionary コレクション型" -keywords: .NET, .NET Core -author: mairaw -ms.author: mairaw -ms.date: 06/20/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 0f18fac7-fd0d-4f25-a046-1d3d51de062e -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 58c87f9e86b5b97feb654e92a56f81940c201a6a -ms.lasthandoff: 03/02/2017 - ---- - -# Hashtable コレクション型と Dictionary コレクション型 - -[System.Collections.Hashtable](https://docs.microsoft.com/dotnet/core/api/System.Collections.Hashtable) クラスと、[System.Collections.Generic.Dictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Dictionary-2) および [System.Collections.Concurrent.ConcurrentDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentDictionary-2) ジェネリック クラスは、[System.Collections.IDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.IDictionary) インターフェイスを実装します。 `Dictionary` ジェネリック クラスも、[IDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IDictionary-2) ジェネリック インターフェイスを実装します。 そのため、これらのコレクション内の各要素は、キーと値のペアになります。 - -`Hashtable` オブジェクトは、コレクションの要素を含むバケットので構成されます。 バケットは`Hashtable` に含まれる要素の仮想サブグループで、これを使用することにより、ほとんどのコレクションで検索と取得がより簡単で高速になります。 各バケットは、ハッシュ関数を使用して生成され、要素のキーに基づいている、ハッシュ コードに関連付けられています。 - -ジェネリック [HashSet<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.HashSet-1) クラスは、一意の要素を格納するための順序付けられていないコレクションです。 - -ハッシュ関数は、キーに基づく数値のハッシュ コードを返すアルゴリズムです。 キーは、格納されているオブジェクトのいくつかのプロパティの値です。 ハッシュ関数は、同じキーに対して常に同じハッシュ コードを返す必要があります。 ハッシュ関数によって&2; つの異なるキーを持つ同一のハッシュ コードを生成することも可能ですが、一意のキーごとに一意のハッシュ コードを生成するハッシュ関数のほうが、ハッシュ テーブルから要素を取得する際により優れたパフォーマンスを実現します。 - -`Hashtable` で要素として使用されている各オブジェクトは、`GetHashCode` メソッドの実装を使用して、それ自体のハッシュ コードを生成できる必要があります。 - -オブジェクトは、`Hashtable` に追加されるとき、そのオブジェクトのハッシュ コードと一致するハッシュ コードに関連付けられたバケットに格納されます。 値が `Hashtable` 内で検索されるとき、その値のハッシュ コードが生成されて、そのハッシュ コードに関連付けられたバケットが検索されます。 - -たとえば、文字列のハッシュ関数は、文字列内の各文字の ASCII コードを取得し、それらを加え合わせて&1; つのハッシュ コードを生成することができます。 その場合、文字列「picnic」のハッシュ コードは文字列「basket」のハッシュ コードと異なるので、文字列「picnic」と「basket」は異なるバケットに格納されます。 それに対して、「stressed」と「desserts」は同じハッシュ コードを持つので、同じバケットに格納されます。 - -`Dictionary` および `ConcurrentDictionary` クラスには、`Hashtable` クラスと同じ機能があります。 特定の型 (`Object` を除く) の`Dictionary` は、値型の `Hashtable` よりも優れたパフォーマンスを実現します。 これは、`Hashtable` の要素の型が `Object` であるため、値型を格納したり取得したりすると、ボックス化とボックス化解除が通常発生するためです。 複数のスレッドが同時にコレクションにアクセスするときには、`ConcurrentDictionary` クラスを使用する必要があります。 - -## 関連項目 - -[Hashtable](https://docs.microsoft.com/dotnet/core/api/System.Collections.Hashtable) - -[IDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.IDictionary) - -[Dictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Dictionary-2) - -[System.Collections.Generic.IDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IDictionary-2) - -[System.Collections.Concurrent.ConcurrentDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentDictionary-2) - -[一般的に使用されるコレクション型](commonly-used-collection-types.md) - - +title: "Hashtable コレクション型と Dictionary コレクション型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コレクション [.NET Framework], Hashtable コレクション型" + - "グループ化 (コレクションによるデータの), Hashtable コレクション型" + - "hash 関数" + - "ハッシュ テーブル" + - "Hashtable クラス, グループ化 (コレクションによるデータの)" + - "Hashtable コレクション型" +ms.assetid: bfc20837-3d02-4fc7-8a8f-c5215b6b7913 +caps.latest.revision: 16 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 16 +--- +# Hashtable コレクション型と Dictionary コレクション型 + クラス、および ジェネリック クラスは、 インターフェイスを実装します。 ジェネリック クラスも ジェネリック インターフェイスを実装します。 そのため、これらのコレクション内の各要素は、キーと値のペアになります。 + + オブジェクトは、コレクションの要素を含むバケットので構成されます。 バケットは に含まれる要素の仮想サブグループで、これを使用することにより、ほとんどのコレクションで検索と取得がより簡単で高速になります。 各バケットは、ハッシュ関数を使用して生成され、要素のキーに基づいている、ハッシュ コードに関連付けられています。 + + ジェネリック クラスは、一意の要素を格納するための順序付けられていないコレクションです。 + + ハッシュ関数は、キーに基づく数値のハッシュ コードを返すアルゴリズムです。 キーは、格納されているオブジェクトのいくつかのプロパティの値です。 ハッシュ関数は、同じキーに対して常に同じハッシュ コードを返す必要があります。 ハッシュ関数によって 2 つの異なるキーを持つ同一のハッシュ コードを生成することも可能ですが、一意のキーごとに一意のハッシュ コードを生成するハッシュ関数のほうが、ハッシュ テーブルから要素を取得する際により優れたパフォーマンスを実現します。 + + で要素として使用されている各オブジェクトは、 メソッドの実装を使用して、それ自体のハッシュ コードを生成できる必要があります。 ただし、 実装をパラメーターの 1 つとして受け入れる コンストラクターを使用して、 のすべての要素のハッシュ関数を指定することもできます。 + + オブジェクトは、 に追加されるとき、そのオブジェクトのハッシュ コードと一致するハッシュ コードに関連付けられたバケットに格納されます。 値が 内で検索されるとき、その値のハッシュ コードが生成されて、そのハッシュ コードに関連付けられたバケットが検索されます。 + + たとえば、文字列のハッシュ関数は、文字列内の各文字の ASCII コードを取得し、それらを加え合わせて 1 つのハッシュ コードを生成することができます。 その場合、文字列「picnic」のハッシュ コードは文字列「basket」のハッシュ コードと異なるので、文字列「picnic」と「basket」は異なるバケットに格納されます。 それに対して、「stressed」と「desserts」は同じハッシュ コードを持つので、同じバケットに格納されます。 + + `` クラスには、 クラスと同じ機能があります。 特定の型 \( を除く\) の は、値型の よりも優れたパフォーマンスを実現します。 これは、 の要素の型が であるため、値型を格納したり取得したりすると、ボックス化とボックス化解除が通常発生するためです。 複数のスレッドが同時にコレクションにアクセスするときには、 `` クラスを使用する必要があります。 + +## 参照 + + + + + + + [一般的に使用されるコレクション型](../../../docs/standard/collections/commonly-used-collection-types.md) \ No newline at end of file diff --git a/docs/standard/collections/index.md b/docs/standard/collections/index.md index e1309132966..2da97e454ef 100644 --- a/docs/standard/collections/index.md +++ b/docs/standard/collections/index.md @@ -1,99 +1,109 @@ --- -title: "コレクションとデータ構造体" -description: "コレクションとデータ構造体" -keywords: .NET, .NET Core -author: mairaw -ms.author: mairaw -ms.date: 06/20/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 9e70255a-c02a-4046-86b7-10c84bab2d38 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 30e53c38bd58e15668e01f2af79defb0a0918192 -ms.lasthandoff: 04/05/2017 - ---- - -# コレクションとデータ構造体 - -多くの場合、類似するデータはコレクションとして格納および操作すると、より効率的に処理できます。 [System.Array](https://docs.microsoft.com/dotnet/core/api/System.Array) クラス、または [System.Collections](https://docs.microsoft.com/dotnet/core/api/System.Collections)、 [System.Collections.Generic](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic)、[System.Collections.Concurrent](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent) の各名前空間のクラスを使用して、コレクションの個々の要素または一定の範囲の要素を追加、削除、または変更することができます。 - -主要なコレクションの型として、ジェネリック コレクションと非ジェネリック コレクションの&2; つがあります。 ジェネリック コレクションはコンパイル時にタイプ セーフです。 このため、通常、ジェネリック コレクションの方がパフォーマンスが高くなります。 ジェネリック コレクションは構築時に型パラメーターを受け取りますが、項目をコレクションに追加またはコレクションから削除するときに [Object](https://docs.microsoft.com/dotnet/core/api/System.Object) 型との間でキャストする必要はありません。 非ジェネリック コレクションでは、項目が [Object](https://docs.microsoft.com/dotnet/core/api/System.Object) として項目が保存され、キャストが必要です。 以前のコードには非ジェネリック コレクションが含まれている場合があります。 - -[System.Collections.Concurrent](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent) 名前空間のコレクションによって、複数のスレッドからコレクション項目にアクセスするための効率的なスレッド セーフ操作が可能になります。 - -## 一般的なコレクションの機能 - -すべてのコレクションに、コレクション内の項目を追加、削除、または検索するためのメソッドが用意されています。 また、[ICollection](https://docs.microsoft.com/dotnet/core/api/System.Collections.ICollection) インターフェイスまたは [ICollection<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.ICollection-1) インターフェイスを直接または間接的に実装するすべてのコレクションで、次の機能を共有しています。 - -* **コレクションを列挙する機能** - - .NET Framework コレクションは [System.Collections.IEnumerable](https://docs.microsoft.com/dotnet/core/api/System.Collections.IEnumerable) または [System.Collections.Generic.IEnumerable<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IEnumerable-1) のどちらかを実装して、コレクションの反復を可能にします。 列挙子は、コレクション内の任意の要素への移動可能なポインターと考えることができます。 `foreach, in` ステートメント (C#) では、`GetEnumerator` メソッドによって公開される列挙子を使用して、列挙子の操作の複雑さを隠しています。 また、[System.Collections.Generic.IEnumerable<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IEnumerable-1) を実装するコレクションはいずれもクエリ可能型と見なされ、LINQ で照会できます。 LINQ クエリでは、データにアクセスするための共通パターンが提供されます。 通常、これらは、標準のループよりも簡潔で読みやすく、フィルター処理、並べ替え、およびグループ化の機能を利用できます。 さらに、LINQ クエリによってパフォーマンスを向上させることができます。 - -* **コレクションの内容を配列にコピーする機能** - - `CopyTo` メソッドを使用してすべてのコレクションを配列にコピーできます。ただし、新しい配列の要素の順序は、列挙子が返す順序に基づきます。 結果の配列は、常に下限がゼロの&1; 次元です。 - -また、多くのコレクション クラスに次の機能が含まれています。 - -* **容量とカウントのプロパティ** - - コレクションの容量とは、そこに含むことのできる要素の数です。 コレクションのカウントとは、実際に含まれている要素の数です。 コレクションによっては、容量またはカウント、あるいはその両方を内部で処理する場合があります。 - - ほとんどのコレクションで、現在の容量に達すると自動的に容量が拡張されます。 メモリが再割り当てされ、要素は古いコレクションから新しいコレクションにコピーされます。 これにより、コレクションを使用するために必要なコードが削減されます。ただし、コレクションのパフォーマンスに悪影響を及ぼす可能性があります。 たとえば、[List<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.List-1) では、`Count` が `Capacity` 未満の場合、項目の追加は O(1) 操作になります。 容量を増やして新しい要素を格納する必要がある場合、項目の追加は O(n) 操作になります。ここで、n は `Count` です。 複数の再割り当てによるパフォーマンスの低下を回避するには、初期容量をコレクションの見積もりサイズに設定しておくことが最善の方法です。 - - [BitArray](https://docs.microsoft.com/dotnet/core/api/System.Collections.BitArray) は特殊なケースで、その容量はその長さと同じで、長さはそのカウントと同じです。 - -* **一貫した下限** - - コレクションの下限とは、最初の要素のインデックスです。 [System.Collections](https://docs.microsoft.com/dotnet/core/api/System.Collections) 名前空間のすべてのインデックス付きコレクションの下限がゼロです。つまり、インデックスがゼロから始まります。 [Array](https://docs.microsoft.com/dotnet/core/api/System.Array) の下限は既定でゼロですが、`Array.CreateInstance` を使用して `Array` クラスのインスタンスを作成する場合には、別の下限を定義できます。 - -* **複数のスレッドからのアクセスの同期** ([System.Collections](https://docs.microsoft.com/dotnet/core/api/System.Collections) クラスのみ)。 - - [System.Collections](https://docs.microsoft.com/dotnet/core/api/System.Collections) 名前空間の非ジェネリック コレクション型では、同期によるスレッド セーフが提供され、通常、`SyncRoot` メンバーと `IsSynchronized` メンバーを介して公開されます。 既定では、これらのコレクションはスレッド セーフではありません。 拡張性が高く効率的な、コレクションへのマルチスレッド アクセスが必要な場合は、[System.Collections.Concurrent](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent) 名前空間のいずれかのクラスを使用するか、変更できないコレクションを使用することを検討します。 詳しくは、「[スレッド セーフなコレクション](threadsafe/index.md)」を参照してください。 - -## コレクションの選択 - -通常は、ジェネリック コレクションを使用します。 次の表では、一般的なコレクションのシナリオとこれらのシナリオに使用できるコレクション クラスについて説明します。 ジェネリック コレクションに対する知識がない場合、このテーブルは、タスクに最適なジェネリック コレクションを選択するのに役立ちます。 - -やりたいこと | ジェネリック コレクションのオプション | 非ジェネリック コレクションのオプション ----------- | ---------------------------- | -------------------------------- -キーによるクイック検索用のキー/値のペアとして項目を保存する | [System.Collections.Generic.Dictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Dictionary-2) | [Hashtable](https://docs.microsoft.com/dotnet/core/api/System.Collections.Hashtable) -インデックスで項目にアクセスする | [System.Collections.Generic.List<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.List-1) | [System.Array](https://docs.microsoft.com/dotnet/core/api/System.Array), [System.Collections.ArrayList](https://docs.microsoft.com/dotnet/core/api/System.Collections.ArrayList) -先入れ先出し (FIFO) で項目を使用する | [System.Collections.Generic.Queue<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Queue-1) | [System.Collections.Queue](https://docs.microsoft.com/dotnet/core/api/System.Collections.Queue) -後入れ先出し (LIFO) でデータを使用する | [System.Collections.Generic.Stack<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Stack-1) | [System.Collections.Stack](https://docs.microsoft.com/dotnet/core/api/System.Collections.Stack) -項目に順次アクセスする | [System.Collections.Generic.LinkedList<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.LinkedList-1) | 推奨しません -項目がコレクションから削除またはコレクションに追加されるときに通知を受け取る。 ([INotifyPropertyChanged](https://docs.microsoft.com/dotnet/core/api/System.ComponentModel.INotifyPropertyChanged) および [INotifyCollectionChanged](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized.INotifyCollectionChanged) を実装) | [System.Collections.ObjectModel.ObservableCollection<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.ObjectModel.ObservableCollection-1) | 推奨しません -Sorted コレクションを使用する | [System.Collections.Generic.SortedList<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedList-2) | [System.Collections.SortedList](https://docs.microsoft.com/dotnet/core/api/System.Collections.SortedList) -一意の要素の効率的な格納とアクセスを管理する | [System.Collections.Generic.HashSet<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.HashSet-1), [System.Collections.Generic.SortedSet<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedSet-1) | 推奨しません - -## 関連トピック - -タイトル | 説明 ------ | ----------- -[コレクション クラスの選択](selecting-a-collection-class.md) | さまざまなコレクションについて説明し、いずれかのシナリオを選択できるよう支援します。 -[一般的に使用されるコレクション型](commonly-used-collection-types.md) | [System.Array](https://docs.microsoft.com/dotnet/core/api/System.Array)、[System.Collections.Generic.List<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.List-1)、[System.Collections.Generic.Dictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Dictionary-2) などの、一般的に使用されるジェネリックおよび非ジェネリックのコレクション型について説明します。 -[ジェネリック コレクションの使用に適した状況](when-to-use-generic-collections.md) | ジェネリック コレクション型の使用について説明します。 -[コレクション内での比較と並べ替え](comparisons-and-sorts-within-collections.md) | コレクションでの等価比較と並べ替え比較の使用について説明します。 -[Sorted コレクション型](sorted-collection-types.md) | 並べ替えられたコレクションのパフォーマンスと特性について説明します。 -[Hashtable コレクション型と Dictionary コレクション型](hashtable-and-dictionary-collection-types.md) | ジェネリックと非ジェネリックのハッシュをベースにしたディクショナリ型の機能について説明します。 -[スレッドセーフなコレクション](threadsafe/index.md) | 複数のスレッドからの安全で効率的な同時アクセスをサポートする [System.Collections.Concurrent.BlockingCollection<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.BlockingCollection-1) や [System.Collections.Concurrent.ConcurrentBag<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentBag-1) などのコレクション型について説明します。 - -## 参照 - -[System.Array](https://docs.microsoft.com/dotnet/core/api/System.Array) - -[System.Collections](https://docs.microsoft.com/dotnet/core/api/System.Collections) - -[System.Collections.Concurrent](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent) - -[System.Collections.Generic](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic) - -[System.Collections.Specialized](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized) - -[System.Linq](https://docs.microsoft.com/dotnet/core/api/System.Linq) - - +title: "コレクションとデータ構造体 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "グループ化 (コレクションによるデータの)" + - "オブジェクト [.NET Framework], コレクションでのグループ化" + - "Array クラス, コレクションでのデータのグループ化" + - "スレッド処理 [.NET Framework], 安全性" + - "Collections クラス" + - "コレクション [.NET Framework]" +ms.assetid: 60cc581f-1db5-445b-ba04-a173396bf872 +caps.latest.revision: 36 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 35 +--- +# コレクションとデータ構造体 +多くの場合、類似するデータはコレクションとして格納および操作すると、より効率的に処理できます。 使用することができます、 クラスまたはクラスに、 System.Collections.Immutable の名前空間を追加するには、削除、および、個々 の要素またはコレクション内の要素の範囲を変更します。 + + 主要なコレクションの型として、ジェネリック コレクションと非ジェネリック コレクションの&2; つがあります。 ジェネリック コレクションは .NET Framework 2.0 で追加されたもので、コンパイル時にタイプ セーフなコレクションを提供します。 このため、通常、ジェネリック コレクションの方がパフォーマンスが高くなります。 ジェネリック コレクションは構築時に型パラメーターを受け取りますが、項目をコレクションに追加またはコレクションから削除するときに 型との間でキャストする必要はありません。 また、ほとんどのジェネリック コレクションが [!INCLUDE[win8_appstore_long](../../../includes/win8-appstore-long-md.md)] アプリでサポートされています。 非ジェネリック コレクションの項目を格納するキャストが必要で、ほとんどはサポートされていません[!INCLUDE[win8_appstore_long](../../../includes/win8-appstore-long-md.md)]アプリ開発します。 ただし、以前のコードに非ジェネリック コレクションが含まれている場合があります。 + + 以降で、 [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)]、内のコレクション、 名前空間は、複数のスレッドからコレクション項目にアクセスするための効率的なスレッド セーフな操作を提供します。 System.Collections.Immutable 名前空間の変更できないコレクション クラス ([NuGet パッケージ](https://www.nuget.org/packages/System.Collections.Immutable)) は、元のコレクションのコピーで操作が実行され、元のコレクションを変更できないために、本質的にスレッド セーフです。 + + [!INCLUDE[autoOutline](../Token/autoOutline_md.md)] + + +## 一般的なコレクションの機能 + すべてのコレクションに、コレクション内の項目を追加、削除、または検索するためのメソッドが用意されています。 さらに、すべてのコレクションを直接または間接的に実装、 インターフェイスまたはインターフェイスは、これらの機能を共有します。 + +- **コレクションを列挙する機能** + + .NET framework のコレクションを実装するかまたはを反復収集を有効にします。 列挙子は、コレクション内の任意の要素への移動可能なポインターと考えることができます。 [Foreach で、](../Topic/foreach,%20in%20\(C%23%20Reference\).md)ステートメントおよび[ごとにしています.次のステートメントの](../Topic/For%20Each...Next%20Statement%20\(Visual%20Basic\).md)によって公開されている列挙子を使用して、 メソッドと非表示にする列挙子の操作の複雑さです。 さらに、すべてのコレクションを実装すると見なされますが、*クエリ可能型*し、LINQ で照会できます。 LINQ クエリでは、データにアクセスするための共通パターンが提供されます。 通常、これらは、標準の `foreach` ループよりも簡潔で読みやすく、フィルター処理、並べ替え、およびグループ化の機能を利用できます。 さらに、LINQ クエリによってパフォーマンスを向上させることができます。 詳細については、次を参照してください。 [LINQ to Objects](../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-objects.md)、 [Parallel LINQ (PLINQ)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md)と[LINQ クエリ (c#) の概要](../Topic/Introduction%20to%20LINQ%20Queries%20\(C%23\).md)します。 + +- **コレクションの内容を配列にコピーする機能** + + すべてのコレクションを使用して、配列にコピーできます、 **CopyTo**メソッドです。 ただし、新しい配列内の要素の順序をベースに、列挙子が返す順序にします。 結果の配列は、常に下限がゼロの&1; 次元です。 + + また、多くのコレクション クラスに次の機能が含まれています。 + +- **容量とカウントのプロパティ** + + コレクションの容量とは、そこに含むことのできる要素の数です。 コレクションのカウントとは、実際に含まれている要素の数です。 コレクションによっては、容量またはカウント、あるいはその両方を内部で処理する場合があります。 + + ほとんどのコレクションで、現在の容量に達すると自動的に容量が拡張されます。 メモリが再割り当てされ、要素は古いコレクションから新しいコレクションにコピーされます。 これにより、コレクションを使用するために必要なコードが削減されます。ただし、コレクションのパフォーマンスに悪影響を及ぼす可能性があります。 たとえば、場合は、がより小さい、o (1) 操作は、アイテムを追加します。 ここで n は o (n) 操作になりますアイテムを追加する場合は、容量は、新しい要素を格納するために必要がある、します。 複数の再割り当てによるパフォーマンスの低下を回避するには、初期容量をコレクションの見積もりサイズに設定しておくことが最善の方法です。 + + は特殊なケースで、その容量はその長さと同じで、長さはそのカウントと同じです。 + +- **一貫した下限** + + コレクションの下限とは、最初の要素のインデックスです。 名前空間のすべてのインデックス付きコレクションの下限がゼロです。つまり、インデックスがゼロから始まります。 下限は既定では、0 のインスタンスを作成するときに、別の下限を定義することができますが、**配列**クラスを使用してします。 + +- **複数のスレッドからのアクセスの同期** ( クラスのみ)。 + + 非ジェネリック コレクション型で、 名前空間は、同期によるスレッド セーフが提供; を通じて公開される通常のメンバーです。 既定では、これらのコレクションはスレッド セーフではありません。 拡張性が高く効率的な、コレクションへのマルチスレッド アクセスが必要な場合は、 名前空間のいずれかのクラスを使用するか、変更できないコレクションを使用することを検討します。 詳しくは、「[スレッド セーフなコレクション](../../../docs/standard/collections/thread-safe/index.md)」を参照してください。 + + +## コレクションの選択 + 通常は、ジェネリック コレクションを使用します。 次の表では、一般的なコレクションのシナリオとこれらのシナリオに使用できるコレクション クラスについて説明します。 ジェネリック コレクションに対する知識がない場合、このテーブルは、タスクに最適なジェネリック コレクションを選択するのに役立ちます。 + +||||| +|-|-|-|-| +|やりたいこと|ジェネリック コレクションのオプション|非ジェネリック コレクションのオプション|スレッド セーフまたは変更できないコレクションのオプション| +|キーによるクイック検索用のキー/値のペアとして項目を保存する||

(キーのハッシュ コードに基づいて編成された、キーと値のペアのコレクション。)|\

\

[ImmutableDictionary (TKey, TValue) クラス](../Topic/ImmutableDictionary\(TKey,%20TValue\)%20Class.md)| +|インデックスで項目にアクセスする||

|[ImmutableList(T) クラス](../Topic/ImmutableList\(T\)%20Class.md)

[ImmutableArray クラス](../Topic/ImmutableArray%20Class.md)| +|先入れ先出し (FIFO) で項目を使用する|||

[ImmutableQueue(T) クラス](../Topic/ImmutableQueue\(T\)%20Class.md)| +|後入れ先出し (LIFO) でデータを使用する|||

[ImmutableStack(T) クラス](../Topic/ImmutableStack\(T\)%20Class.md)| +|項目に順次アクセスする||推奨しません|推奨しません| +|項目がコレクションから削除またはコレクションに追加されるときに通知を受け取る。 (実装)||推奨しません|推奨しません| +|並べ替えられたコレクション|\||[ImmutableSortedDictionary (TKey, TValue) クラス](../Topic/ImmutableSortedDictionary\(TKey,%20TValue\)%20Class.md)

[ImmutableSortedSet(T) クラス](../Topic/ImmutableSortedSet\(T\)%20Class.md)| +|数学関数のセット|

|推奨しません|[ImmutableHashSet(T) クラス](../Topic/ImmutableHashSet\(T\)%20Class.md)

[ImmutableSortedSet(T) クラス](../Topic/ImmutableSortedSet\(T\)%20Class.md)| + + +## 関連トピック + +|タイトル|説明| +|-----------|-----------------| +|[コレクション クラスの選択](../../../docs/standard/collections/selecting-a-collection-class.md)|さまざまなコレクションについて説明し、いずれかのシナリオを選択できるよう支援します。| +|[ 一般的に使用されるコレクション型](../../../docs/standard/collections/commonly-used-collection-types.md)|などの一般的に使用されるジェネリックと非ジェネリック コレクション型について説明、および.\| +|[ジェネリック コレクションを使用する状況](../../../docs/standard/collections/when-to-use-generic-collections.md)|ジェネリック コレクション型の使用について説明します。| +|[コレクション内での比較と並べ替え](../../../docs/standard/collections/comparisons-and-sorts-within-collections.md)|コレクションでの等価比較と並べ替え比較の使用について説明します。| +|[Sorted コレクション型](../../../docs/standard/collections/sorted-collection-types.md)|並べ替えられたコレクションのパフォーマンスと特性について説明します| +|[Hashtable コレクション型と Dictionary コレクション型](../../../docs/standard/collections/hashtable-and-dictionary-collection-types.md)|ジェネリックと非ジェネリックのハッシュをベースにしたディクショナリ型の機能について説明します。| +|[スレッドセーフなコレクション](../../../docs/standard/collections/thread-safe/index.md)|などのコレクション型について説明複数のスレッドから同時アクセスを安全で効率的なサポートします。| +|System.Collections.Immutable|変更できないコレクションを導入し、コレクション型へのリンクを提供します。| + + +## 参照 + + + + + + + + + + + + + System.Collections.Immutable \ No newline at end of file diff --git a/docs/standard/collections/selecting-a-collection-class.md b/docs/standard/collections/selecting-a-collection-class.md index f81408b1456..5b3b52bc821 100644 --- a/docs/standard/collections/selecting-a-collection-class.md +++ b/docs/standard/collections/selecting-a-collection-class.md @@ -1,85 +1,90 @@ --- -title: "コレクション クラスの選択" -description: "コレクション クラスの選択" -keywords: .NET, .NET Core -author: mairaw -ms.author: mairaw -ms.date: 06/20/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 0a60fca7-e082-48d4-9dda-30b0d3e67ec7 -translationtype: Human Translation -ms.sourcegitcommit: 763433b00ae7d01cfa0c7fa250f51d23a95f6f15 -ms.openlocfilehash: d174d0cb910035340fb317521f3ad930d16853c2 -ms.lasthandoff: 01/18/2017 - ---- - -# コレクション クラスの選択 - -コレクション クラスは慎重に選択してください。 間違った型を使用すると、コレクションの使用が制限されることがあります。 タイプ セーフの強化や他の改善があるため、コレクションの汎用および同時実行バージョンをお勧めします。 一般に、.NET Framework バージョン 1.1 を特に対象としている場合を除いて、System.Collections 名前空間にある型は使用しないでください。 - -以下の質問を検討します。 - -* 値が取得された後に要素が通常は破棄されるシーケンシャル リストが必要ですか。 - - * 「はい」の場合、先入れ先出し (FIFO) の動作が必要であれば、[System.Collections.Generic.Queue<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Queue-1) ジェネリック クラスの使用を検討してください。 後入れ先出し (LIFO) の動作が必要であれば、[System.Collections.Generic.Stack<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Stack-1) ジェネリック クラスの使用を検討します。 複数のスレッドから安全にアクセスできるように、同時実行バージョンの [System.Collections.Concurrent.ConcurrentQueue<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentQueue-1) と [System.Collections.Concurrent.ConcurrentStack<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentStack-1) を使用します。 - - * それ以外の場合は、その他のコレクションの使用を検討してください。 - -* FIFO や LIFO など特定の順序で要素にアクセスする必要がありますか。またはランダムにアクセスできますか。 - - * [System.Collections.Generic.Queue<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Queue-1) または [System.Collections.Concurrent.ConcurrentQueue<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentQueue-1) ジェネリック クラスは、FIFO アクセスを提供します。 詳細については、「[スレッド セーフなコレクションを使用する状況](threadsafe/when-to-use-a-thread-safe-collection.md)」をご覧ください。 - - * [System.Collections.Generic.Stack<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Stack-1) または [System.Collections.Concurrent.ConcurrentStack<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentStack-1) ジェネリック クラスは、LIFO アクセスを提供します。 詳細については、「[スレッド セーフなコレクションを使用する状況](threadsafe/when-to-use-a-thread-safe-collection.md)」をご覧ください。 - - * [System.Collections.Generic.LinkedList<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.LinkedList-1) ジェネリック クラスは、先頭から末尾または末尾から先頭へのシーケンシャル アクセスを可能にします。 - -* インデックスで各要素にアクセスする必要があるでしょうか。 - - * [System.Collections.Specialized.StringCollection](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized.StringCollection) クラス、および [System.Collections.Generic.List<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.List-1) ジェネリック クラスは、要素の 0 から始まるインデックスによってその要素へのアクセスを提供します。 - - * [System.Collections.Specialized.ListDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized.ListDictionary) および [System.Collections.Specialized.StringDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized.StringDictionary) クラス、さらに [System.Collections.Generic.Dictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Dictionary-2) および [System.Collections.Generic.SortedDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedDictionary-2) ジェネリック クラスは、要素のキーによってその要素へのアクセスを提供します。 - - * [System.Collections.Specialized.NameObjectCollectionBase](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized.NameObjectCollectionBase) および [System.Collections.Specialized.NameValueCollection](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized.NameValueCollection) クラス、さらに [System.Collections.ObjectModel.KeyedCollection<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.ObjectModel.KeyedCollection-2) および [System.Collections.Generic.SortedList<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedList-2) ジェネリック クラスは、要素の 0 から始まるインデックスまたは要素のキーのいずれかによって、その要素へのアクセスを提供します。 - -* 各要素に含まれることになるのは、1 つの値、1 つのキーと 1 つの値の組み合わせ、または 1 つのキーと複数の値の組み合わせのどれですか。 - - * 1 つの値: [System.Collections.Generic.IList<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IList-1) ジェネリック インターフェイスに基づくいずれかのコレクションを使用します。 - - * 1 つのキーと 1 つの値: [System.Collections.Generic.IDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IDictionary-2) ジェネリック インターフェイスに基づくいずれかのコレクションを使用します。 - - * 埋め込みのキーを持つ 1 つの値: [System.Collections.ObjectModel.KeyedCollection<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.ObjectModel.KeyedCollection-2) ジェネリック クラスを使用します。 - - * 複数の値を持つ 1 つのキー: [System.Collections.Specialized.NameValueCollection](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized.NameValueCollection) クラスを使用します。 - -* 要素を入力されたときとは異なる方法で並べ替える必要がありますか。 - - * [System.Collections.Hashtable](https://docs.microsoft.com/dotnet/core/api/System.Collections.Hashtable) クラスは、ハッシュ コードによってその要素を並べ替えます。 - - * [System.Collections.Generic.SortedDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedDictionary-2) および [System.Collections.Generic.SortedList<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedList-2) ジェネリック クラスは、[System.Collections.IComparer](https://docs.microsoft.com/dotnet/core/api/System.Collections.IComparer) インターフェイスと [System.Collections.Generic.IComparer<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IComparer-1) ジェネリック インターフェイスの実装に基づき、キーによってその要素を並べ替えます。 - - * [System.Collections.Generic.List<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.List-1) ジェネリック クラスは、`IComparer` ジェネリック インターフェイスの実装をパラメーターとして受け取る `Sort` メソッドを提供します。 - -* 文字列だけを受け入れるコレクションは必要ですか。 - - * [StringCollection](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized.StringCollection) ([System.Collections.IList](https://docs.microsoft.com/dotnet/core/api/System.Collections.IList) に基づく) および [StringDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized.StringDictionary) ([System.Collections.IDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.IDictionary) に基づく) は、[System.Collections.Specialized](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized) 名前空間にあります。 - - * さらに、ジェネリック型の引数に `String` クラスを指定して、[System.Collections.Generic](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic) 名前空間にある任意のジェネリック コレクション クラスを厳密に型指定された文字列コレクションとして使用できます。 - -## LINQ to Objects - -LINQ to Objects を使用すると、開発者は、オブジェクト型で [System.Collections.IEnumerable](https://docs.microsoft.com/dotnet/core/api/System.Collections.IEnumerable) または [System.Collections.Generic.IEnumerable<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IEnumerable-1) を実装している場合に、LINQ クエリを使用してインメモリ オブジェクトにアクセスできます。 LINQ クエリはデータ アクセス用の一般的なパターンです。通常、これは標準の foreach ループよりも簡潔で読みやすく、フィルター処理、並べ替え、およびグループ化の機能を備えています。 詳細については、「[統合言語クエリ (LINQ)](../../csharp/linq/index.md)」をご覧ください。 - -## 関連項目 - -[System.Collections](https://docs.microsoft.com/dotnet/core/api/System.Collections) - -[System.Collections.Specialized](https://docs.microsoft.com/dotnet/core/api/System.Collections.Specialized) - -[System.Collections.Generic](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic) - -[スレッドセーフなコレクション](threadsafe/index.md) - +title: "コレクション クラスの選択 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コレクション [.NET Framework], コレクション クラスの選択" + - "Collections クラス" + - "先入れ先出しのコレクション" + - "グループ化 (コレクションによるデータの), コレクション クラスの選択" + - "インデックス付きコレクション" + - "後入れ先出しのコレクション" +ms.assetid: ba049f9a-ce87-4cc4-b319-3f75c8ddac8a +caps.latest.revision: 20 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 20 +--- +# コレクション クラスの選択 +コレクション クラスは慎重に選択してください。 間違った型を使用すると、コレクションの使用が制限されることがあります。 一般に、.NET Framework バージョン 1.1 を特に対象としている場合を除いて、 名前空間にある型は使用しないでください。 タイプ セーフの強化や他の改善があるため、コレクションの汎用および同時実行バージョンをお勧めします。 + + 以下の質問を検討します。 + +- 値が取得された後に要素が通常は破棄されるシーケンシャル リストが必要ですか。 + + - そうである場合は、先入れ先出し \(FIFO\) の動作が必要であれば、 クラスまたは ジェネリック クラスの使用を検討してください。 後入れ先出し \(LIFO\) の動作が必要であれば、 クラスまたは ジェネリック クラスの使用を検討します。 複数のスレッドから安全にアクセスできるように、同時実行バージョンの を使用します。 + + - それ以外の場合は、その他のコレクションの使用を検討してください。 + +- FIFO や LIFO など特定の順序で要素にアクセスする必要がありますか。またはランダムにアクセスできますか。 + + - クラスおよび または ジェネリック クラスは、FIFO アクセスを提供します。 詳しくは、「[スレッド セーフなコレクションを使用する状況](../../../docs/standard/collections/thread-safe/when-to-use-a-thread-safe-collection.md)」を参照してください。 + + - クラスおよび または ジェネリック クラスは、LIFO アクセスを提供します。 詳しくは、「[スレッド セーフなコレクションを使用する状況](../../../docs/standard/collections/thread-safe/when-to-use-a-thread-safe-collection.md)」を参照してください。 + + - ジェネリック クラスは、先頭から末尾または末尾から先頭への順次アクセスを可能にします。 + +- インデックスで各要素にアクセスする必要があるでしょうか。 + + - クラス、および ジェネリック クラスは、要素の 0 から始まるインデックスによってその要素へのアクセスを提供します。 + + - クラス、および ジェネリック クラスは、要素のキーによってその要素へのアクセスを提供します。 + + - クラス、および ジェネリック クラスは、要素の 0 から始まるインデックスまたはキーのいずれかによって、その要素へのアクセスを提供します。 + +- 各要素に含まれることになるのは、1 つの値、1 つのキーと 1 つの値の組み合わせ、または 1 つのキーと複数の値の組み合わせのどれですか。 + + - 1 つの値: インターフェイスまたは ジェネリック インターフェイスに基づくいずれかのコレクションを使用します。 + + - 1 つのキーと 1 つの値: インターフェイスまたは ジェネリック インターフェイスに基づくいずれかのコレクションを使用します。 + + - 埋め込みのキーを持つ 1 つの値: ジェネリック クラスを使用します。 + + - 複数の値を持つ 1 つのキー: クラスを使用します。 + +- 要素を入力されたときとは異なる方法で並べ替える必要がありますか。 + + - クラスは、ハッシュ コードによってその要素を並べ替えます。 + + - クラスおよび ジェネリック クラスは、 インターフェイスおよび ジェネリック インターフェイスの実装に基づいて、キーによってその要素を並べ替えます。 + + - は、 実装をパラメーターとして受け取る、 メソッドを提供します。 それに対応するジェネリックである ジェネリック クラスは、 ジェネリック インターフェイスの実装をパラメーターとして受け取る、 メソッドを提供します。 + +- 高速な検索と情報の取得が必要ですか。 + + - は、小規模なコレクション \(10 個以下のアイテム\) では より高速です。 ジェネリック クラスは、 ジェネリック クラスよりも高速の参照を提供します。 マルチスレッドの実装は です。 は、順序指定されていないデータのために、高速なマルチスレッドの挿入を提供します。 両方の種類のマルチスレッドについて詳しくは、「[スレッド セーフなコレクションを使用する状況](../../../docs/standard/collections/thread-safe/when-to-use-a-thread-safe-collection.md)」を参照してください。 + +- 文字列だけを受け入れるコレクションは必要ですか。 + + - \( に基づく\) および \( に基づく\) は、 名前空間にあります。 + + - さらに、ジェネリック型の引数として クラスを指定することにより、 名前空間にある任意のジェネリック コレクション クラスを厳密に型指定された文字列コレクションとして使用できます。 + +## LINQ to Objects および PLINQ + LINQ to Objects により、開発者は、オブジェクト型で または を実装している限り、LINQ クエリを使用してインメモリ オブジェクトにアクセスできます。 LINQ クエリはデータ アクセス用の一般的なパターンです。通常、これは標準の `foreach` ループよりも簡潔で読みやすく、フィルター処理、並べ替え、およびグループ化機能を備えています。 詳細については、「[LINQ to Objects](../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-objects.md)」を参照してください。 + + PLINQ は、マルチコア コンピューターをより効率的に使用することにより、多くのシナリオでより高速にクエリを実行できる LINQ to Objects の並列実装を提供します。 詳細については、「[Parallel LINQ \(PLINQ\)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md)」を参照してください。 + +## 参照 + + + + [スレッド セーフなコレクション](../../../docs/standard/collections/thread-safe/index.md) \ No newline at end of file diff --git a/docs/standard/collections/sorted-collection-types.md b/docs/standard/collections/sorted-collection-types.md index ad7a474c164..fc11f4c3ee1 100644 --- a/docs/standard/collections/sorted-collection-types.md +++ b/docs/standard/collections/sorted-collection-types.md @@ -1,60 +1,59 @@ --- -title: "Sorted コレクション型" -description: "Sorted コレクション型" -keywords: .NET, .NET Core -author: mairaw -ms.author: mairaw -ms.date: 06/20/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: bdc9c13e-e56a-433b-a293-c92364f6e9cb -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 28d5024f759b3a7474aef1fa344d39f9933b6322 -ms.lasthandoff: 03/02/2017 - ---- - -# Sorted コレクション型 - - [System.Collections.SortedList](https://docs.microsoft.com/dotnet/core/api/System.Collections.SortedList) クラス、[System.Collections.Generic.SortedList<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedList-2) ジェネリック クラス、および [System.Collections.Generic.SortedDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedDictionary-2) ジェネリック クラスは、[IDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.IDictionary) インターフェイスを実装する点において [Hashtable](https://docs.microsoft.com/dotnet/core/api/System.Collections.Hashtable) クラスと [Dictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Dictionary-2) ジェネリック クラスに似ていますが、キーによる並べ替え順序で自身の要素を維持し、ハッシュ テーブルの O(1) 挿入と取得の特性を備えていません。 これら&3; つのクラスには、次のような共通の特徴があります。 - - * 3 つのすべてのクラスは、[System.Collections.IDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.IDictionary) インターフェイスを実装します。 2 つのジェネリック クラスは、[System.Collections.Generic.IDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IDictionary-2) ジェネリック インターフェイスも実装します。 - - * 各要素は、列挙で使用できるようにキーと値のペアになっています。 - -> [!NOTE] -> [SortedList](https://docs.microsoft.com/dotnet/core/api/System.Collections.SortedList) 非ジェネリック クラスは列挙されると [DictionaryEntry](https://docs.microsoft.com/dotnet/core/api/System.Collections.DictionaryEntry) オブジェクトを返しますが、2 つのジェネリック型のクラスは [KeyValuePair<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.KeyValuePair-2) オブジェクトを返します。 - -* 要素の並べ替えは、[System.Collections.IComparer](https://docs.microsoft.com/dotnet/core/api/System.Collections.IComparer) 実装 (非ジェネリック クラス `SortedList` の場合) または [System.Collections.Generic.IComparer<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IComparer-1) 実装 (2 つのジェネリック クラスの場合) に基づいて実行されます。 - - * 各クラスが提供するプロパティは、キーのみまたは値のみを含むコレクションを返します。 - -次の表に、2 つの並べ替えられたリスト クラスと [SortedDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedDictionary-2) クラスの違いをいくつか示します。 - - `SortedList`非ジェネリック クラスと `SortedList` ジェネリック クラス | `SortedDictionary` ジェネリック クラス - --------------------------------------------------------------------------------- | ------------------------------ - キーと値を返すプロパティにはインデックスが付けられるため、インデックスを使用して効率的に取得できます。 | インデックスを使用して取得することはできません。 - 取得は O(log n) です。 | 取得は O(log n) です。 - 挿入と削除は一般に O(n) ですが、既に並べ替えられているデータの挿入は O(1) であるため、各要素はリストの最後に追加されます。 (これは、サイズの変更が不要であることを前提としています。) | 挿入と削除は O(log n) です。 - 使用するメモリは `SortedDictionary` より少なくなります。 | `SortedList` 非ジェネリック クラスと `SortedList` ジェネリック クラスより多くのメモリを使用します。 - - 並べ替えられたリストや辞書に複数のスレッドから同時にアクセスできる必要がある場合、[ConcurrentDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentDictionary-2) から派生するクラスに並べ替えロジックを追加できます。 - - > [!NOTE] - > 独自のキーを含む値 (従業員 ID 番号を含む従業員レコードなど) では、[KeyedCollection<TKey, TItem>]() ジェネリック クラスから派生することによってリストの特性と辞書の特性を合わせ持つキー付きのコレクションを作成できます。 - - [SortedSet<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedSet-1) クラスは、挿入、削除、および検索の操作後に並べ替えられた順序でデータを保持する自己平衡ツリーを提供します。 このクラスと [HashSet<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.HashSet-1) クラスは、[ISet<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.ISet-1) インターフェイスを実装します。 - -## 関連項目 - -[System.Collections.IDictionary](https://docs.microsoft.com/dotnet/core/api/System.Collections.IDictionary) - -[System.Collections.Generic.IDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IDictionary-2) - -[ConcurrentDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentDictionary-2) - -[一般的に使用されるコレクション型](commonly-used-collection-types.md) - +title: "Sorted コレクション型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コレクション [.NET Framework], SortedList コレクション型" + - "グループ化 (コレクションによるデータの), SortedList コレクション型" + - "SortedDictionary コレクション型" + - "SortedList クラス, グループ化 (コレクションによるデータの)" + - "SortedList コレクション型" +ms.assetid: 3db965b2-36a6-4b12-b76e-7f074ff7275a +caps.latest.revision: 16 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 16 +--- +# Sorted コレクション型 + クラス、 ジェネリック クラス、および ジェネリック クラスは、 インターフェイスを実装する点において クラスと ジェネリック クラスに似ていますが、キーによる並べ替え順序で自身の要素を維持し、ハッシュ テーブルの O\(1\) 挿入と取得の特性はありません。 この 3 つのクラスには、次のような共通の特徴があります。 + +- 3 つのすべてのクラスは、 インターフェイスを実装します。 2 つのジェネリック クラスは、 ジェネリック インターフェイスも実装します。 + +- 各要素は、列挙で使用できるようにキーと値の組み合わせになっています。 + + > [!NOTE] + > 非ジェネリック クラスは列挙されると オブジェクトを返しますが、2 つのジェネリック型のクラスは オブジェクトを返します。 + +- 要素は の実装 \(非ジェネリック クラスの \) または 実装 \(2 つのジェネリック クラス\) に基づいて並べ替えられます。 + +- 各クラスは、キーのみまたは値のみを含むコレクションを返すプロパティを提供します。 + + 次の表に、2 つの並べ替えリスト クラスと クラスの違いを示します。 + +| 非ジェネリック クラスと ジェネリック クラス| ジェネリック クラス| +|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------| +|キーと値を返すプロパティにはインデックスが付けられるため、インデックスを使用して効率的に取得できます。|インデックスを使用して取得することはできません。| +|取得は O\(log `n`\) です。|取得は O\(log `n`\) です。| +|挿入と削除は一般に O\(`n`\) ですが、既に並べ替えられているデータの挿入は O\(1\) のため、各要素はリストの最後に追加されます。これは、サイズを変更する必要がないことを前提にしています。|挿入と削除は O\(log `n`\) です。| +| より使用するメモリが少なくなります。| 非ジェネリック クラスと ジェネリック クラスより多くのメモリを使用します。| + + 複数のスレッドから同時にアクセスできる必要がある並べ替えリストまたは辞書の場合、 から派生するクラスに並べ替えロジックを追加できます。 + +> [!NOTE] +> 対応するキーを含む値 \(従業員 ID 番号を含む従業員レコードなど\) に対しては、 ジェネリック クラスから派生することによってリストの特性と辞書の特性を合わせ持つキー付きのコレクションを作成できます。 + + [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、 クラスは、データを挿入、削除、および検索した後にデータの並べ替え順序を保持する自動調整ツリーを提供します。 このクラスおよび クラスは、 インターフェイスを実装します。 + +## 参照 + + + + [一般的に使用されるコレクション型](../../../docs/standard/collections/commonly-used-collection-types.md) \ No newline at end of file diff --git a/docs/standard/collections/thread-safe/blockingcollection-overview.md b/docs/standard/collections/thread-safe/blockingcollection-overview.md new file mode 100644 index 00000000000..d8e7b267718 --- /dev/null +++ b/docs/standard/collections/thread-safe/blockingcollection-overview.md @@ -0,0 +1,87 @@ +--- +title: "BlockingCollection の概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "BlockingCollection、概要" +ms.assetid: 987ea3d7-0ad5-4238-8b64-331ce4eb3f0b +caps.latest.revision: 12 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 12 +--- +# BlockingCollection の概要 + は、次のような機能を提供するスレッド セーフなコレクション クラスです。 + +- プロデューサー\/コンシューマー パターンの実装。 + +- 複数のスレッドからの項目の同時追加と同時取得。 + +- 最大容量 \(オプション\)。 + +- コレクションが空またはいっぱいになったときにブロックする挿入操作と削除操作。 + +- ブロックせずに実行されるか、指定された時間が経過するまでブロックする、挿入および削除の "試行" 操作。 + +- を実装する任意のコレクション型のカプセル化。 + +- キャンセル トークンを使用したキャンセル。 + +- `foreach` \(Visual Basic では `For Each`\) を使用した 2 種類の列挙。 + + 1. 読み取り専用の列挙。 + + 2. 列挙された項目を削除する列挙。 + +## 境界とブロッキングのサポート + は境界とブロッキングをサポートします。 境界は、コレクションの最大容量を設定できることを意味します。 境界を使用すると、メモリ内のコレクションの最大サイズを制御し、producer スレッドが consumer スレッドよりも先に進行しすぎるのを防ぐことができます。これは、特定のシナリオで重要になります。 + + コレクションには、複数のスレッドやタスクが同時に項目を追加できます。コレクションが指定された最大容量に達すると、producer スレッドは項目が削除されるまでブロックします。 複数の cosumer が同時に項目を削除できます。コレクションが空になった場合、consumer スレッドは、producer が項目を追加するまでブロックします。 producer スレッドでは、それ以上項目が追加されないことを示すために、 を呼び出すことができます。 consumer では、 プロパティを監視して、コレクションが空になったときや、それ以上の項目は追加されないことになったときを把握できます。 次の例は、容量の上限が 100 に設定された単純な BlockingCollection を示しています。 いくつかの外部条件が true である間、producer タスクはコレクションに項目を追加し、 を呼び出します。 consumer タスクは、 プロパティが true になるまで項目を取得します。 + + [!code-csharp[CDS_BlockingCollection#04](../../../../samples/snippets/csharp/VS_Snippets_Misc/cds_blockingcollection/cs/blockingcollection.cs#04)] + [!code-vb[CDS_BlockingCollection#04](../../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_blockingcollection/vb/introsnippetsbc.vb#04)] + + コード例全体については、「[方法: BlockingCollection の項目を個別に追加および取得する](../../../../docs/standard/collections/thread-safe/how-to-add-and-take-items.md)」を参照してください。 + +## 時間制限付きのブロッキング操作 + 境界のあるコレクションにおける時間制限付きの 操作および 操作では、メソッドは項目を追加または取得しようと試みます。 項目を使用できる場合、その項目は参照渡しで渡された変数に格納され、メソッドは true を返します。 指定されたタイムアウト期間を経過しても項目が取得されない場合、メソッドは false を返します。 その後、再びコレクションへのアクセスを試みる前に、他の必要な処理をスレッドで自由に実行できます。 時間制限付きのブロッキング アクセスの例については、「[方法: BlockingCollection の項目を個別に追加および取得する](../../../../docs/standard/collections/thread-safe/how-to-add-and-take-items.md)」の 2 番目の例を参照してください。 + +## 追加操作と取得操作の取り消し + 追加操作と取得操作は、通常、ループ内で実行されます。 メソッドまたは メソッドに を渡し、各イテレーションでトークンの プロパティの値を確認するようにすると、ループを取り消すことができます。 値が true である場合は、キャンセル要求に応答するかどうかを決定できます。応答するには、リソースをクリーンアップし、ループを終了します。 次の例は、キャンセル トークンを受け取る のオーバーロードと、それを使用するコードを示しています。 + + [!code-csharp[CDS_BlockingCollection#05](../../../../samples/snippets/csharp/VS_Snippets_Misc/cds_blockingcollection/cs/blockingcollection.cs#05)] + [!code-vb[CDS_BlockingCollection#05](../../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_blockingcollection/vb/introsnippetsbc.vb#05)] + + キャンセルのサポートを追加する方法の例については、「[方法: BlockingCollection の項目を個別に追加および取得する](../../../../docs/standard/collections/thread-safe/how-to-add-and-take-items.md)」の 2 番目の例を参照してください。 + +## コレクション型の指定 + の作成時には、容量の上限だけでなく、使用するコレクションの型も指定できます。 たとえば、先入れ先出し方式 \(FIFO\) の動作には を、後入れ先出し方式 \(LIFO\) の動作には を指定できます。 インターフェイスを実装する任意のコレクション クラスを使用できます。 の既定のコレクション型は です。 1000 の容量があり、を使用して次のコード例は文字列の を作成する方法の設定: + +```vb +Dim bc = New BlockingCollection(Of String)(New ConcurrentBag(Of String()), 1000) +``` + +```csharp +BlockingCollection bc = new BlockingCollection(new ConcurrentBag(), 1000 ); +``` + + 詳細については、「[方法: 境界ブロッキング機能をコレクションに追加する](../../../../docs/standard/collections/thread-safe/how-to-add-bounding-and-blocking.md)」を参照してください。 + +## IEnumerable のサポート + は、 メソッドを提供します。これにより、consumer は `foreach` \([!INCLUDE[vbprvb](../../../../includes/vbprvb-md.md)] では `For Each`\) を使用して、コレクションが完成するまで \(コレクションが空になり、それ以上項目が追加されなくなるまで\) 項目を削除できます。 詳細については、「[方法: ForEach を使用して BlockingCollection 内の項目を削除する](../../../../docs/standard/collections/thread-safe/how-to-use-foreach-to-remove.md)」を参照してください。 + +## 多数の BlockingCollection を 1 つとして使用 + consumer が複数のコレクションから同時に項目を取得する必要のあるシナリオでは、 の配列を作成し、 などの静的メソッドを使用できます。これらのメソッドでは、配列内の任意のコレクションを対象に追加または取得の操作を実行できます。 いずれかのコレクションがブロックしている場合、メソッドはすぐに別のコレクションを試します。これは、操作を実行できるコレクションが見つかるまで続行されます。 詳細については、「[方法: パイプラインでブロッキング コレクションの配列を使用する](../../../../docs/standard/collections/thread-safe/how-to-use-arrays-of-blockingcollections.md)」を参照してください。 + +## 参照 + + [コレクションとデータ構造体](../../../../docs/standard/collections/index.md) + [スレッド セーフなコレクション](../../../../docs/standard/collections/thread-safe/index.md) \ No newline at end of file diff --git a/docs/standard/collections/thread-safe/how-to-add-and-remove-items.md b/docs/standard/collections/thread-safe/how-to-add-and-remove-items.md new file mode 100644 index 00000000000..a090215e5d5 --- /dev/null +++ b/docs/standard/collections/thread-safe/how-to-add-and-remove-items.md @@ -0,0 +1,54 @@ +--- +title: "方法: ConcurrentDictionary の項目を追加および削除する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "スレッドセーフなコレクション、同時実行ディクショナリ" +ms.assetid: 81b64b95-13f7-4532-9249-ab532f629598 +caps.latest.revision: 13 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法: ConcurrentDictionary の項目を追加および削除する +この例では、 の項目を追加、取得、更新、および削除する方法を示します。 このコレクション クラスはスレッド セーフな実装です。 複数のスレッドが要素に同時にアクセスしようとする可能性がある場合は、このクラスを使用することをお勧めします。 + + には、コードでデータの追加または削除を試行する前に、まずキーが存在するかどうかをチェックする必要がなくなる便利なメソッドがいくつか用意されています。 これらの便利なメソッドとそのメソッドを使用する状況を次の表に示します。 + +|方法|使用する状況| +|--------|------------| +||指定したキーの新しい値を追加する。キーが既に存在する場合は、その値を置き換える。| +||指定したキーの既存の値を取得する。キーが存在しない場合は、キーと値のペアを指定する。| +|, , , |キーと値のペアを追加、取得、更新、または削除する。キーが既に存在する場合、または他の何らかの理由で試行が失敗した場合は、代わりの操作を実行する。| + +## 使用例 + 次の例では、2 つの インスタンスを使用していくつかの要素を に同時に追加し、すべての内容を出力して要素が正常に追加されたことを示します。 この例では、とコレクションの項目を追加、更新したり、取得するために のメソッドを使用する方法を示します。 + + [!code-csharp[CDS#16](../../../../samples/snippets/csharp/VS_Snippets_Misc/cds/cs/cds_dictionaryhowto.cs#16)] + [!code-vb[CDS#16](../../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds/vb/cds_concdict.vb#16)] + + は、マルチスレッドのシナリオ用に設計されています。 コレクションの項目を追加または削除するためにコードでロックを使用する必要はありません。 ただし、あるスレッドが値を取得し、別のスレッドが同じキーに新しい値を指定してコレクションをすぐに更新できます。 + + また、 のメソッドはすべてスレッド セーフですが、すべてのメソッドが分割不可能というわけではありません。具体的には、 は分割できます。 それらのメソッドに渡されるユーザー デリゲートは、ディクショナリの内部ロックの外で呼び出されます \(不明なコードによってすべてのスレッドがブロックされるのを防止するためです\)。そのため、次の一連のイベントが発生する可能性があります。 + + 1\) threadA が を呼び出します。項目が見つからないため、valueFactory デリゲートを呼び出して、追加する新しい項目を作成します。 + + 2\) 同時に threadB も を呼び出します。valueFactory デリゲートが呼び出され、threadA よりも先に内部ロックに到達するため、新しいキーと値のペアがディクショナリに追加されます。 + + 3\) threadA のユーザー デリゲートが完了し、スレッドがロックに到達しますが、この時点で既に項目は存在しています。 + + 4\) threadA は "Get" を実行し、threadB で先に作成されたデータを返します。 + + したがって、 から返されるデータが、スレッドの valueFactory によって作成されたデータと同じになるとは限りません。 を呼び出す場合にも、これと同様の一連のイベントが発生する可能性があります。 + +## 参照 + + [スレッド セーフなコレクション](../../../../docs/standard/collections/thread-safe/index.md) \ No newline at end of file diff --git a/docs/standard/collections/thread-safe/how-to-add-and-take-items.md b/docs/standard/collections/thread-safe/how-to-add-and-take-items.md new file mode 100644 index 00000000000..1482f9cddbe --- /dev/null +++ b/docs/standard/collections/thread-safe/how-to-add-and-take-items.md @@ -0,0 +1,40 @@ +--- +title: "方法: BlockingCollection の項目を個別に追加および取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "スレッドセーフなコレクション、ブロッキング ディクショナリ" +ms.assetid: 38f2f3d8-15e5-4bf4-9c83-2b5b6f22bad1 +caps.latest.revision: 7 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 7 +--- +# 方法: BlockingCollection の項目を個別に追加および取得する +この例では、ブロッキングと非ブロッキングの 2 つの方法で の項目を追加、削除する方法を示します。 の詳細については、「[BlockingCollection の概要](../../../../docs/standard/collections/thread-safe/blockingcollection-overview.md)」を参照してください。 + + 空になって追加する要素がなくなるまで を列挙する方法の例については、「[方法: ForEach を使用して BlockingCollection 内の項目を削除する](../../../../docs/standard/collections/thread-safe/how-to-use-foreach-to-remove.md)」を参照してください。 + +## 使用例 + この最初の例では、コレクションが一時的に空 \(取得時\) または最大容量 \(追加時\) になるか、指定されたタイムアウト期間が経過したときに、操作をブロックするように、項目を追加および取得する方法を示します。 最大容量のブロックは、BlockingCollection が、コンストラクターで指定された最大容量で作成された場合にのみ有効になることに注意してください。 + + [!code-csharp[CDS_BlockingCollection#01](../../../../samples/snippets/csharp/VS_Snippets_Misc/cds_blockingcollection/cs/example01.cs#01)] + [!code-vb[CDS_BlockingCollection#01](../../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_blockingcollection/vb/simpleblocking.vb#01)] + +## 使用例 + この 2 番目の例では、操作をブロックしないように、項目を追加および取得する方法を示します。 項目が存在しない場合、サイズ制限のあるコレクションの最大容量に達した場合、またはタイムアウト期間が経過した場合、 または 操作は false を返します。 これによりスレッドはしばらくの間、他の何らかの有益な処理を行い、後からもう一度新しいアイテムを取得するか、以前に追加できなかった項目を追加しようとします。 このプログラムはまた、 へのアクセス時にキャンセルを実装する方法も示しています。 + + [!code-csharp[CDS_BlockingCollection#02](../../../../samples/snippets/csharp/VS_Snippets_Misc/cds_blockingcollection/cs/example02.cs#02)] + [!code-vb[CDS_BlockingCollection#02](../../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_blockingcollection/vb/nonblockingbc.vb#02)] + +## 参照 + + [BlockingCollection の概要](../../../../docs/standard/collections/thread-safe/blockingcollection-overview.md) \ No newline at end of file diff --git a/docs/standard/collections/thread-safe/how-to-add-bounding-and-blocking.md b/docs/standard/collections/thread-safe/how-to-add-bounding-and-blocking.md new file mode 100644 index 00000000000..0d97de20e81 --- /dev/null +++ b/docs/standard/collections/thread-safe/how-to-add-bounding-and-blocking.md @@ -0,0 +1,36 @@ +--- +title: "方法: 境界ブロッキング機能をコレクションに追加する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "スレッドセーフなコレクション、カスタム ブロッキング コレクション" +ms.assetid: 4c2492de-3876-4873-b5a1-000bb404d770 +caps.latest.revision: 13 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法: 境界ブロッキング機能をコレクションに追加する +この例では、境界ブロッキング機能をカスタム コレクション クラスに追加する方法を示します。この機能を追加するには、 インターフェイスをそのクラスで実装し、クラス インスタンスを の内部ストレージ機構として使用します。 境界ブロッキングの詳細については、「[BlockingCollection の概要](../../../../docs/standard/collections/thread-safe/blockingcollection-overview.md)」を参照してください。 + +## 使用例 + カスタム コレクション クラスは、優先順位が オブジェクトの配列として表される基本の優先順位キューです。 各キュー内で追加の順序付けは実行されません。 + + クライアント コードで、3 つのタスクが開始されます。 最初のタスクは、キーボード入力をポーリングして、実行時にいつでも取り消すことができるようにします。 2 番目のタスクは producer スレッドです。新しい項目をブロッキング コレクションに追加し、乱数値に基づいて各項目の優先順位を指定します。 3 番目のタスクは、使用できるようになった項目をコレクションから削除します。 + + いずれかのスレッドの実行速度を他のスレッドよりも速くすることで、アプリケーションの動作を調整できます。 プロデューサーの実行速度が速い場合は、コンストラクターで指定された項目数が既に含まれているとブロッキング コレクションで項目が追加されなくなるので、境界機能になります。 コンシューマーの実行速度が速い場合は、コンシューマーが新しい項目の追加を待機するので、ブロッキング機能になります。 + + [!code-csharp[CDS_BlockingCollection#06](../../../../samples/snippets/csharp/VS_Snippets_Misc/cds_blockingcollection/cs/prodcon.cs#06)] + + 既定では、 のストレージは になります。 + +## 参照 + [スレッド セーフなコレクション](../../../../docs/standard/collections/thread-safe/index.md) \ No newline at end of file diff --git a/docs/standard/collections/thread-safe/how-to-create-an-object-pool.md b/docs/standard/collections/thread-safe/how-to-create-an-object-pool.md new file mode 100644 index 00000000000..19b76f7427c --- /dev/null +++ b/docs/standard/collections/thread-safe/how-to-create-an-object-pool.md @@ -0,0 +1,31 @@ +--- +title: "方法: ConcurrentBag を使用してオブジェクト プールを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "オブジェクト プール、.NET Framework での" +ms.assetid: 0480e7ff-b6f9-480e-a889-2ed4264d8372 +caps.latest.revision: 5 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 5 +--- +# 方法: ConcurrentBag を使用してオブジェクト プールを作成する +この例では、同時実行バッグを使用してオブジェクト プールを実装する方法を示します。 オブジェクト プールを実装すると、クラスの複数のインスタンスが必要で、クラスの作成時または破棄時の負荷が高い場合に、アプリケーションのパフォーマンスを向上できます。 クライアント プログラムによって新しいオブジェクトが要求されると、オブジェクト プールはまず、既に作成されてプールに返されているオブジェクトを提供しようとします。 オブジェクトが存在しない場合にのみ、新しいオブジェクトが作成されます。 + + は高速な挿入と削除をサポートするので、オブジェクトの格納に使用されます。特に、同じスレッドが項目の追加と削除の両方を行っている場合に役立ちます。 この例は、 および と同様に、バッグ データ構造によって実装される を中心に構築してさらに強化することができます。 + +## 使用例 + [!code-csharp[CDS#04](../../../../samples/snippets/csharp/VS_Snippets_Misc/cds/cs/objectpool.cs#04)] + [!code-vb[CDS#04](../../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds/vb/objectpool04.vb#04)] + +## 参照 + [スレッド セーフなコレクション](../../../../docs/standard/collections/thread-safe/index.md) \ No newline at end of file diff --git a/docs/standard/collections/thread-safe/how-to-use-arrays-of-blockingcollections.md b/docs/standard/collections/thread-safe/how-to-use-arrays-of-blockingcollections.md new file mode 100644 index 00000000000..f8eebb7db6a --- /dev/null +++ b/docs/standard/collections/thread-safe/how-to-use-arrays-of-blockingcollections.md @@ -0,0 +1,32 @@ +--- +title: "方法: パイプラインでブロッキング コレクションの配列を使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "スレッドセーフなコレクション、ブロッキング コレクション (パイプラインの)" +ms.assetid: a39c7ec3-3ad7-4f4d-8fe4-b3e9dbabe2ed +caps.latest.revision: 8 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法: パイプラインでブロッキング コレクションの配列を使用する +次の例は、 オブジェクトの配列を などの静的メソッドと共に使用して、コンポーネント間の高速で柔軟性のあるデータ転送を実装する方法を示しています。 + +## 使用例 + 次の例は、各オブジェクトが入力コレクションからデータを同時に取得して変換し、出力コレクションに渡す基本的なパイプラインの実装を示しています。 + + [!code-csharp[CDS_BlockingCollection#07](../../../../samples/snippets/csharp/VS_Snippets_Misc/cds_blockingcollection/cs/example07.cs#07)] + [!code-vb[CDS_BlockingCollection#07](../../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_blockingcollection/vb/bcpipeline.vb#07)] + +## 参照 + + [スレッド セーフなコレクション](../../../../docs/standard/collections/thread-safe/index.md) \ No newline at end of file diff --git a/docs/standard/collections/thread-safe/how-to-use-foreach-to-remove.md b/docs/standard/collections/thread-safe/how-to-use-foreach-to-remove.md new file mode 100644 index 00000000000..b9d2e7f4f57 --- /dev/null +++ b/docs/standard/collections/thread-safe/how-to-use-foreach-to-remove.md @@ -0,0 +1,38 @@ +--- +title: "方法: ForEach を使用して BlockingCollection 内の項目を削除する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "スレッドセーフなコレクション、方法 (ブロッキング コレクションを列挙する)" +ms.assetid: 2096103c-22f7-420d-b631-f102bc33a6dd +caps.latest.revision: 13 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法: ForEach を使用して BlockingCollection 内の項目を削除する + メソッドおよび メソッドを使用して からアイテムを取得するだけでなく、[foreach](../Topic/foreach,%20in%20\(C%23%20Reference\).md) \(Visual Basic では [For Each](../Topic/For%20Each...Next%20Statement%20\(Visual%20Basic\).md)\) を使用して、追加が完了してコレクションが空になるまで、アイテムを削除することもできます。 これは、*列挙の変更*または*列挙の消費*と呼ばれます。この列挙子は、通常の `foreach` \(`For Each`\) ループとは異なり、アイテムを削除することでソース コレクションを変更するためです。 + +## 使用例 + `foreach` \(`For Each`\) ループを使用して 内のすべてのアイテムを削除する方法を次の例に示します。 + + [!code-csharp[CDS_BlockingCollection#03](../../../../samples/snippets/csharp/VS_Snippets_Misc/cds_blockingcollection/cs/example03.cs#03)] + [!code-vb[CDS_BlockingCollection#03](../../../../samples/snippets/visualbasic/VS_Snippets_Misc/cds_blockingcollection/vb/enumeratebc.vb#03)] + + この例では、consumer スレッドの メソッドで `foreach` ループを使用します。これにより、各アイテムは、列挙されるときにコレクションから削除されます。 では常に、コレクションに含まれるアイテムの最大数が制限されます。 この方法でコレクションを列挙すると、使用できるアイテムがない場合、またはコレクションが空の場合に、consumer スレッドがブロックされます。 この例では、producer スレッドによるアイテムの追加が、アイテムの使用よりも迅速に行われるため、ブロックは問題にはなりません。 + + producer スレッドによって追加されたときの順序と同じ順序でアイテムが列挙されるという保証はありません。 + + コレクションを変更せずに列挙するには、 メソッドを使用せずに `foreach` \(`For Each`\) を使用します。 ただし、この種の列挙が表しているのは、ある特定の時点のコレクションのスナップショットであることを理解する必要があります。 ループの実行中に他のスレッドがアイテムを同時に追加または削除した場合は、ループがコレクションの実際の状態を表していないことがあります。 + +## 参照 + + [Parallel Programming](../../../../docs/standard/parallel-programming/index.md) \ No newline at end of file diff --git a/docs/standard/collections/thread-safe/index.md b/docs/standard/collections/thread-safe/index.md new file mode 100644 index 00000000000..8c14c1738e2 --- /dev/null +++ b/docs/standard/collections/thread-safe/index.md @@ -0,0 +1,63 @@ +--- +title: "スレッド セーフなコレクション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "スレッドセーフなコレクション、概要" +ms.assetid: 2e7ca21f-786c-4367-96be-0cf3f3dcc6bd +caps.latest.revision: 24 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 24 +--- +# スレッド セーフなコレクション +[!INCLUDE[net_v40_short](../../../../includes/net-v40-short-md.md)] では、スレッド セーフかつスケーラブルなコレクション クラスをいくつか含む 名前空間が導入されています。 ユーザー コードで同期を追加することなく、複数のスレッドでこのようなコレクションの項目を安全かつ効率的に追加または削除できます。 新しいコードを記述するときに、コレクションが複数のスレッドに同時に書き込みを行う場合は、常に同時実行コレクション クラスを使用します。 共有コレクションの読み取りのみを行う場合は、 名前空間のクラスを使用できます。 .NET Framework 1.1 以前のランタイムを対象にする必要がない場合は、1.0 コレクション クラスを使用しないことをお勧めします。 + +## .NET Framework 1.0 と 2.0 のコレクションのスレッドの同期 + .NET Framework 1.0 で導入されたコレクションは、 名前空間にあります。 一般的に使用される を含むこのコレクションは、コレクションのスレッド セーフ ラッパーを返す `Synchronized` プロパティを通じてスレッド セーフを確保します。 このラッパーは、すべての追加操作または削除操作でコレクション全体をロックすることで機能します。 したがって、コレクションにアクセスしようとする各スレッドは、ロックを取得する順番を待機する必要があります。 これはスケーラブルではなく、大規模なコレクションの場合はパフォーマンスが大幅に低下するおそれがあります。 また、競合状態を完全に防ぐことはできません。 詳細については、MSDN Web サイトの「[Synchronization in Generic Collections \(ジェネリック コレクションでの同期\)](http://go.microsoft.com/fwlink/?LinkID=161130)」を参照してください。 + + .NET Framework 2.0 で導入されたコレクション クラスは、 名前空間にあります。 これには、 などがあります。 これらのクラスを使用すると、.NET Framework 1.0 クラスと比較して、タイプ セーフおよびパフォーマンスが向上します。 ただし、.NET Framework 2.0 コレクション クラスではスレッドの同期は行われません。複数のスレッドで同時に項目を追加または削除する場合は、ユーザー コードですべての同期を行う必要があります。 + + [!INCLUDE[net_v40_short](../../../../includes/net-v40-short-md.md)] の同時実行コレクション クラスを使用することをお勧めします。このクラスは、.NET Framework 2.0 コレクション クラスのタイプ セーフを確保するだけでなく、[!INCLUDE[net_v10_short](../../../../includes/net-v10-short-md.md)] コレクションよりも効率的で完全なスレッド セーフも確保します。 + +## 粒度の細かいロック機構とロック制御の不要な機構 + 同時実行コレクション型には、[!INCLUDE[net_v40_short](../../../../includes/net-v40-short-md.md)] の新機能である などの軽量な同期機構を使用するものもあります。 これらの同期型では、通常、スレッドを実際の待機状態にする前の短期間に*ビジー スピン*が使用されます。 待機時間が非常に短くなると予測される場合は、スピンを使用すると、負荷がかかるカーネル遷移を伴う待機を行うよりも負荷が格段に小さくなります。 スピンを使用するコレクション クラスでは、この効率性は、複数のスレッドで項目を高速で追加および削除できることを意味します。 スピンとブロッキングの詳細については、「[SpinLock](../../../../docs/standard/threading/spinlock.md)」および「[SpinWait](../../../../docs/standard/threading/spinwait.md)」を参照してください。 + + クラスと クラスでは、ロックは使用されません。 代わりに、 操作によってスレッド セーフを確保します。 + +> [!NOTE] +> 同時実行コレクション クラスでは がサポートされるので、 プロパティと プロパティの実装が、これらのプロパティが無関係の場合でも提供されます。 `IsSynchronized` は常に `false` を返し、`SyncRoot` は常に `null` \(Visual Basic の場合は `Nothing`\) になります。 + + 名前空間に属するコレクション型を次の表に示します。 + +|型|説明| +|-------|--------| +|| を実装する任意の型の境界ブロッキング機能を提供します。 詳細については、「[BlockingCollection の概要](../../../../docs/standard/collections/thread-safe/blockingcollection-overview.md)」を参照してください。| +||キーと値のペアのディクショナリのスレッド セーフな実装。| +||先入れ先出し \(FIFO: First In First Out\) キューのスレッド セーフな実装。| +||後入れ先出し \(LIFO: Last In First Out\) スタックのスレッド セーフな実装。| +||要素の順序付けられていないコレクションのスレッド セーフな実装。| +||`BlockingCollection` で使用するために型が実装する必要があるインターフェイス。| + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[BlockingCollection の概要](../../../../docs/standard/collections/thread-safe/blockingcollection-overview.md)| 型で提供される機能について説明します。| +|[方法: ConcurrentDictionary の項目を追加および削除する](../../../../docs/standard/collections/thread-safe/how-to-add-and-remove-items.md)| の要素を追加および削除する方法について説明します。| +|[方法: BlockingCollection の項目を個別に追加および取得する](../../../../docs/standard/collections/thread-safe/how-to-add-and-take-items.md)|読み取り専用の列挙子を使用せずにブロッキング コレクションの項目を追加および取得する方法について説明します。| +|[方法: 境界ブロッキング機能をコレクションに追加する](../../../../docs/standard/collections/thread-safe/how-to-add-bounding-and-blocking.md)|任意のコレクション クラスを コレクションの基になるストレージ機構として使用する方法について説明します。| +|[方法: ForEach を使用して BlockingCollection 内の項目を削除する](../../../../docs/standard/collections/thread-safe/how-to-use-foreach-to-remove.md)|`foreach` \(Visual Basic の場合は `For Each`\) を使用してブロッキング コレクションのすべての項目を削除する方法について説明します。| +|[方法: パイプラインでブロッキング コレクションの配列を使用する](../../../../docs/standard/collections/thread-safe/how-to-use-arrays-of-blockingcollections.md)|複数のブロッキング コレクションを同時に使用してパイプラインを実装する方法について説明します。| +|[方法: ConcurrentBag を使用してオブジェクト プールを作成する](../../../../docs/standard/collections/thread-safe/how-to-create-an-object-pool.md)|新しいオブジェクトを頻繁に作成する代わりにオブジェクトを再利用できるシナリオで、同時実行バッグを使用してパフォーマンスを向上させる方法について説明します。| + +## 参照 + \ No newline at end of file diff --git a/docs/standard/collections/thread-safe/toc.md b/docs/standard/collections/thread-safe/toc.md index ff3b3ad78d3..aa6bb531f0f 100644 --- a/docs/standard/collections/thread-safe/toc.md +++ b/docs/standard/collections/thread-safe/toc.md @@ -1,9 +1,9 @@ -# [スレッドセーフなコレクション](index.md) -## [BlockingCollection の概要](blockingcollection-overview.md) -## [スレッドセーフなコレクションを使用する状況](when-to-use-a-thread-safe-collection.md) -## [方法: BlockingCollection の項目を個別に追加および取得する](how-to-add-and-take-items.md) -## [方法: ForEach を使用して BlockingCollection 内の項目を削除する](how-to-use-foreach-to-remove.md) -## [方法: ConcurrentDictionary の項目を追加および削除する](how-to-add-and-remove-items.md) -## [方法: 境界ブロッキング機能をコレクションに追加する](how-to-add-bounding-and-blocking.md) -## [方法: パイプラインでブロッキング コレクションの配列を使用する](how-to-use-arrays-of-blockingcollections.md) -## [方法: ConcurrentBag を使用してオブジェクト プールを作成する](how-to-create-an-object-pool.md) +# [スレッド セーフなコレクションを使用する状況](when-to-use-a-thread-safe-collection.md) +# [方法: パイプラインでブロッキング コレクションの配列を使用する](how-to-use-arrays-of-blockingcollections.md) +# [BlockingCollection の概要](blockingcollection-overview.md) +# [方法: ConcurrentDictionary の項目を追加および削除する](how-to-add-and-remove-items.md) +# [方法: 境界ブロッキング機能をコレクションに追加する](how-to-add-bounding-and-blocking.md) +# [方法: BlockingCollection の項目を個別に追加および取得する](how-to-add-and-take-items.md) +# [スレッド セーフなコレクション](index.md) +# [方法: ForEach を使用して BlockingCollection 内の項目を削除する](how-to-use-foreach-to-remove.md) +# [方法: ConcurrentBag を使用してオブジェクト プールを作成する](how-to-create-an-object-pool.md) diff --git a/docs/standard/collections/thread-safe/when-to-use-a-thread-safe-collection.md b/docs/standard/collections/thread-safe/when-to-use-a-thread-safe-collection.md new file mode 100644 index 00000000000..6284af7ca54 --- /dev/null +++ b/docs/standard/collections/thread-safe/when-to-use-a-thread-safe-collection.md @@ -0,0 +1,72 @@ +--- +title: "スレッド セーフなコレクションを使用する状況 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "スレッドセーフなコレクション、アップグレードするタイミング" +ms.assetid: a9babe97-e457-4ff3-b528-a1bc940d5320 +caps.latest.revision: 9 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 9 +--- +# スレッド セーフなコレクションを使用する状況 +[!INCLUDE[net_v40_long](../../../../includes/net-v40-long-md.md)] では、マルチスレッドの追加操作と削除操作をサポートするために特別に設計された 5 つの新しいコレクション型が導入されています。 スレッド セーフを確保するために、これらの新しい型では、さまざまな種類の効率的なロック同期機構とロック制御の不要な同期機構が使用されます。 同期を行うと操作にオーバーヘッドが追加されます。 オーバーヘッドの量は、使用する同期の種類、実行する操作の種類、およびその他の要因 \(コレクションに同時にアクセスしようとするスレッドの数など\) によって異なります。 + + 場合によっては、同期のオーバーヘッドがほとんどなく、外部ロックで保護されるスレッド セーフでない同等の型よりもマルチスレッド型の方が、パフォーマンスとスケーラビリティが大幅に向上することがあります。 また、オーバーヘッドが原因で、スレッド セーフな型のパフォーマンスとスケーラビリティが、外部からロックされるスレッド セーフでないバージョンの型と同等かそれ以下になることもあります。 + + 以降では、スレッド セーフなコレクションと、読み取り操作および書き込み操作でユーザー指定のロックを使用するスレッド セーフでない同等のコレクションの使い分けに関する一般的なガイダンスを示します。 パフォーマンスはさまざまな要因に左右されるので、このガイダンスは特定の状況には沿っておらず、すべての状況で有効であるとは限りません。 パフォーマンスが非常に重要な場合、使用するコレクション型を判断する最適な方法は、典型的なコンピューター構成および負荷に基づいてパフォーマンスを計測することです。 このドキュメントでは、次の用語が使用されています。 + + *純粋なプロデューサー\/コンシューマー シナリオ* + 任意のスレッドで要素の追加と削除のどちらか一方のみが実行されます。 + + *混合プロデューサー\/コンシューマー シナリオ* + 任意のスレッドで要素の追加と削除の両方が実行されます。 + + *高速化* + 同じシナリオで別の型と比較してアルゴリズムのパフォーマンスが向上すること。 + + *スケーラビリティ* + コンピューターのコア数に比例したパフォーマンスの向上。 スケーリングするアルゴリズムのパフォーマンスは、コア数が 2 の場合よりも 8 の場合の方が向上します。 + +## ConcurrentQueue \(T\) とキュー \(T\) + 純粋なプロデューサー\/コンシューマー シナリオでは、各要素の処理時間が非常に短い \(命令が少ない\) 場合、 のパフォーマンスは外部ロックを使用する よりも若干優れる程度です。 このシナリオでは、 は、キューへの配置とキューからの取り出しをそれぞれ専用のスレッドが実行している場合に最大のパフォーマンスを発揮します。 この規則を適用しない場合、複数のコアを備えたコンピューターでは、 の方が よりもパフォーマンスが若干向上する可能性があります。 + + 処理時間が 500 FLOPS \(浮動小数点演算\) 以上の場合、2 つのスレッドを使用する規則は に適用されません。この型で非常に優れたスケーラビリティが実現します。 このシナリオでは、 はスケーラビリティの点で劣ります。 + + 混合プロデューサー\/コンシューマー シナリオでは、処理時間が非常に短い場合、外部ロックを使用する のスケーラビリティは よりも優れています。 ただし、処理時間が 500 FLOPS 以上の場合は、 の方がスケーラビリティに優れます。 + +## ConcurrentStack とスタック + 純粋なプロデューサー\/コンシューマー シナリオでは、処理時間が非常に短い場合、プッシュとポップをそれぞれ専用のスレッドが実行しているときは、 および外部ロックを使用する のパフォーマンスはほぼ同じであると考えられます。 ただし、スレッド数が増えると、競合が増えることで両方の型のパフォーマンスが低下し、 の方が よりも優れたパフォーマンスを示すことがあります。 処理時間が 500 FLOPS 以上の場合は、両方の型がほぼ同じスケーラビリティを示します。 + + 混合プロデューサー\/コンシューマー シナリオでは、作業負荷の大小にかかわらず、 の方が高速です。 + + の使用と 、アクセス時間が大幅に短縮される可能性があります。 + +## ConcurrentDictionary と辞書 + 一般に、複数のスレッドから同時にキーまたは値を追加および更新するシナリオでは、 を使用します。 更新を頻繁に行い、読み取りは比較的少ないシナリオでは、通常、 には大きな利点はありません。 読み取りも更新も多いシナリオでは、通常、コンピューターに任意の数のコアを備えられる場合は の方が大幅に高速です。 + + 更新を頻繁に行うシナリオでは、 で同時実行の程度を上げて、コンピューターのコア数が多いほどパフォーマンスが向上するかどうかを計測できます。 同時実行レベルを変更する場合、グローバル操作はできるだけ避けてください。 + + キーまたは値の読み取りのみを行う場合、ディクショナリがスレッドによって変更されないときは同期が不要なので、 の方が高速です。 + +## ConcurrentBag + 純粋なプロデューサー\/コンシューマー シナリオでは、 は他の同時実行コレクション型よりもパフォーマンスの点で劣ると考えられます。 + + 混合プロデューサー\/コンシューマー シナリオでは、通常、作業負荷の大小にかかわらず、 は他の同時実行コレクション型よりもはるかに高速でスケーラビリティに優れます。 + +## BlockingCollection + 境界ブロッキング セマンティクスが必要な場合は、 の方がカスタム実装よりもパフォーマンスの点で優れると考えられます。 この型では、高度なキャンセル、列挙、および例外処理もサポートされます。 + +## 参照 + + [スレッド セーフなコレクション](../../../../docs/standard/collections/thread-safe/index.md) + [Parallel Programming](../../../../docs/standard/parallel-programming/index.md) \ No newline at end of file diff --git a/docs/standard/collections/toc.md b/docs/standard/collections/toc.md index ffbd3ab0136..8c1f2cb01c3 100644 --- a/docs/standard/collections/toc.md +++ b/docs/standard/collections/toc.md @@ -1,8 +1,7 @@ -# [コレクションとデータ構造体](index.md) -# [コレクション クラスの選択](selecting-a-collection-class.md) -# [ 一般的に使用されるコレクション型](commonly-used-collection-types.md) -# [ジェネリック コレクションを使用する状況](when-to-use-generic-collections.md) -# [コレクション内での比較と並べ替え](comparisons-and-sorts-within-collections.md) -# [Sorted コレクション型](sorted-collection-types.md) -# [Hashtable コレクション型と Dictionary コレクション型](hashtable-and-dictionary-collection-types.md) -# [スレッドセーフなコレクション](thread-safe/) \ No newline at end of file +# [一般的に使用されるコレクション型](commonly-used-collection-types.md) +# [ジェネリック コレクションを使用する状況](when-to-use-generic-collections.md) +# [Hashtable コレクション型と Dictionary コレクション型](hashtable-and-dictionary-collection-types.md) +# [コレクション クラスの選択](selecting-a-collection-class.md) +# [コレクションとデータ構造体](index.md) +# [コレクション内での比較と並べ替え](comparisons-and-sorts-within-collections.md) +# [Sorted コレクション型](sorted-collection-types.md) diff --git a/docs/standard/collections/when-to-use-generic-collections.md b/docs/standard/collections/when-to-use-generic-collections.md index cc415fc7025..46fd81b111a 100644 --- a/docs/standard/collections/when-to-use-generic-collections.md +++ b/docs/standard/collections/when-to-use-generic-collections.md @@ -1,67 +1,63 @@ --- -title: "ジェネリック コレクションを使用する状況" -description: "ジェネリック コレクションを使用する状況" -keywords: .NET, .NET Core -author: mairaw -ms.author: mairaw -ms.date: 06/20/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 971e08bd-b63f-4832-9e61-9f65cbedd352 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: bde317c165981775330e1d0d8261d355e2401bc9 -ms.lasthandoff: 03/03/2017 - ---- - -# ジェネリック コレクションを使用する状況 - -通常は、ジェネリック コレクションを使用することをお勧めします。これは、基本コレクション型から派生して型固有のメンバーを実装することなく、タイプ セーフの利点を即座に得ることができるためです。 また、ジェネリックでは要素をボックス化する必要がないため、コレクションの要素が値型である場合、一般的に、ジェネリック コレクション型は、対応する非ジェネリック コレクション型 (および、非ジェネリックの基本コレクション型から派生した型) よりもパフォーマンスに優れています。 - -複数のスレッドで同時に項目をコレクションに追加またはコレクションから削除する可能性がある場合は、[System.Collections.Concurrent](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent) 名前空間のジェネリック コレクション クラスを使用する必要があります。 - -次のジェネリック型は、既存のコレクション型に対応しています。 - -* [List<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.List-1) は、[ArrayList](https://docs.microsoft.com/dotnet/core/api/System.Collections.ArrayList) に対応するジェネリック クラスです。 - -* [Dictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Dictionary-2) と [ConcurrentDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentDictionary-2) は、[Hashtable](https://docs.microsoft.com/dotnet/core/api/System.Collections.Hashtable) に対応するジェネリック クラスです。 - -* [Collection<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.ObjectModel.Collection-1) は、[CollectionBase](https://docs.microsoft.com/dotnet/core/api/System.Collections.CollectionBase) に対応するジェネリック クラスです。 `Collection` は基本クラスとして使用できますが、`CollectionBase` とは異なり、抽象クラスではありません。 そのため、より簡単に使用できます。 - -* [ReadOnlyCollection<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.ObjectModel.ReadOnlyCollection-1) は、[ReadOnlyCollectionBase](https://docs.microsoft.com/dotnet/core/api/System.Collections.ReadOnlyCollectionBase) に対応するジェネリック クラスです。 `ReadOnlyCollection` は抽象クラスではなく、既存の [List<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.List-1) を読み取り専用のコレクションとして簡単に公開できるようにするコンストラクターを含んでいます。 - -* [Queue<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Queue-1)、[ConcurrentQueue<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentQueue-1)、[Stack<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Stack-1)、[ConcurrentStack<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentStack-1)、および [SortedList<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedList-2) ジェネリック クラスは、同じ名前を持つそれぞれの非ジェネリック クラスに対応しています。 - -## その他の型 - -いくつかのジェネリック コレクション型には、対応する非ジェネリック型がありません。 次に例を示します。 - -* [LinkedList<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.LinkedList-1) は、挿入と削除の O(1) 操作を提供する汎用のリンク リストです。 - -* [SortedDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedDictionary-2) は、挿入と取得の O(log n) 操作で並べ替えられたディクショナリで、[SortedList<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedList-2) の代替として役立ちます。 - -* [KeyedCollection<TKey, TItem>](https://docs.microsoft.com/dotnet/core/api/System.Collections.ObjectModel.KeyedCollection-2) は、リストとディクショナリを組み合わせたもので、独自のキーを含むオブジェクトの格納方法を提供します。 - -* [BlockingCollection<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.BlockingCollection-1) は、境界ブロッキング機能を備えたコレクション クラスを実装します。 - -* [ConcurrentBag<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Concurrent.ConcurrentBag-1) は、順序のない要素の高速な挿入および削除を提供します。 - -## LINQ to Objects - -LINQ to Objects 機能では、オブジェクト型が [System.Collections.IEnumerable](https://docs.microsoft.com/dotnet/core/api/System.Collections.IEnumerable) または [System.Collections.Generic.IEnumerable<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IEnumerable-1) インターフェイスを実装している限り、LINQ クエリを使用してメモリ内オブジェクトにアクセスできます。 LINQ クエリはデータ アクセス用の一般的なパターンです。通常、これは標準の `foreach` ループよりも簡潔で読みやすく、フィルター処理、並べ替え、およびグループ化機能を備えています。 さらに、LINQ クエリによってパフォーマンスを向上させることができます。 - -## その他の機能 - -一部のジェネリック型には、非ジェネリック コレクション型にはない機能があります。 たとえば、非ジェネリックの [ArrayList](https://docs.microsoft.com/dotnet/core/api/System.Collections.ArrayList) クラスに対応する [List<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.List-1) クラスには、リストを検索するメソッドを指定できる [Predicate<T>](https://docs.microsoft.com/dotnet/core/api/System.Predicate-1) デリゲートや、リストの各要素に作用するメソッドを表す [Action<T>](https://docs.microsoft.com/dotnet/core/api/System.Action-1) デリゲートなどの、汎用デリゲートを受け取るメソッドが多数あります。 - -[List<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.List-1) クラスを使用すると、リストの並べ替えと検索を行う独自の [IComparer<T>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.IComparer-1) ジェネリック インターフェイス実装を指定できます。 [SortedDictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedDictionary-2) と [SortedList<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.SortedList-2) クラスにもこの機能があります。 また、これらのクラスを使用すると、コレクションの作成時に比較演算子を指定できます。 同様に、[Dictionary<TKey, TValue>](https://docs.microsoft.com/dotnet/core/api/System.Collections.Generic.Dictionary-2) と [KeyedCollection<TKey, TItem>](https://docs.microsoft.com/dotnet/core/api/System.Collections.ObjectModel.KeyedCollection-2) クラスでも独自の等値比較子を指定できます。 - -## 関連項目 - -[コレクションとデータ構造体](index.md) - -[一般的に使用されるコレクション型](commonly-used-collection-types.md) - +title: "ジェネリック コレクションを使用する状況 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コレクション [.NET Framework], ジェネリック" + - "ジェネリック コレクション [.NET Framework]" +ms.assetid: e7b868b1-11fe-4ac5-bed3-de68aca47739 +caps.latest.revision: 17 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 17 +--- +# ジェネリック コレクションを使用する状況 +通常は、ジェネリック コレクションを使用することをお勧めします。これは、基本コレクション型から派生して型固有のメンバーを実装することなく、タイプ セーフの利点を即座に得ることができるためです。 また、ジェネリックでは要素をボックス化する必要がないため、コレクションの要素が値型である場合、一般的に、ジェネリック コレクション型は、対応する非ジェネリック コレクション型 \(および、非ジェネリックの基本コレクション型から派生した型\) よりもパフォーマンスに優れています。 + + [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降を対象にしたプログラムで、複数のスレッドで同時に項目をコレクションに追加またはコレクションから削除する可能性がある場合は、 名前空間のジェネリック コレクション クラスを使用する必要があります。 + + 次のジェネリック型は、既存のコレクション型に対応しています。 + +- は、 に対応するジェネリック クラスです。 + +- および は、 に対応するジェネリック クラスです。 + +- は、 に対応するジェネリック クラスです。 は基本クラスとして使用できますが、 とは異なり、抽象クラスではありません。 そのため、より簡単に使用できます。 + +- は、 に対応するジェネリック クラスです。 は抽象クラスではなく、既存の を読み取り専用のコレクションとして簡単に公開できるようにするコンストラクターを含んでいます。 + +- 、および ジェネリック クラスは、同じ名前を持つそれぞれの非ジェネリック クラスに対応しています。 + +## その他の型 + いくつかのジェネリック コレクション型には、対応する非ジェネリック型がありません。 次に例を示します。 + +- は、挿入と削除の O\(1\) 操作を提供する汎用のリンク リストです。 + +- は、挿入と取得の O\(log `n`\) 操作で並べ替えられたディクショナリで、 の代替として役立ちます。 + +- は、リストとディクショナリを組み合わせたもので、独自のキーを含むオブジェクトの格納方法を提供します。 + +- は、境界ブロッキング機能を備えたコレクション クラスを実装します。 + +- は、順序のない要素の高速な挿入および削除を提供します。 + +## LINQ to Objects + LINQ to Objects 機能では、オブジェクト型が インターフェイスまたは インターフェイスを実装している限り、LINQ クエリを使用してメモリ内オブジェクトにアクセスできます。 LINQ クエリはデータ アクセス用の一般的なパターンです。通常、これは標準の `foreach` ループよりも簡潔で読みやすく、フィルター処理、並べ替え、およびグループ化機能を備えています。 さらに、LINQ クエリによってパフォーマンスを向上させることができます。 詳細については、[LINQ to Objects](../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-objects.md) および [Parallel LINQ \(PLINQ\)](../../../docs/standard/parallel-programming/parallel-linq-plinq.md) を参照してください。 + +## その他の機能 + 一部のジェネリック型には、非ジェネリック コレクション型にはない機能があります。 たとえば、非ジェネリックの クラスに対応する クラスには、リストを検索するメソッドを指定できる デリゲートや、リストの各要素に作用するメソッドを表す デリゲートや、型間の変換を定義できるようにする デリゲートなどの、汎用デリゲートを受け取るメソッドが多数あります。 + + クラスを使用すると、リストの並べ替えと検索を行う独自の ジェネリック インターフェイス実装を指定できます。 クラスと クラスにもこの機能があります。 また、これらのクラスを使用すると、コレクションの作成時に比較演算子を指定できます。 同様に、 クラスと クラスを使用すると、独自の等値比較子を指定できます。 + +## 参照 + [コレクションとデータ構造体](../../../docs/standard/collections/index.md) + [一般的に使用されるコレクション型](../../../docs/standard/collections/commonly-used-collection-types.md) + [ジェネリック](../../../docs/standard/generics/index.md) \ No newline at end of file diff --git a/docs/standard/cross-platform/TOC.md b/docs/standard/cross-platform/TOC.md new file mode 100644 index 00000000000..2645e2f773a --- /dev/null +++ b/docs/standard/cross-platform/TOC.md @@ -0,0 +1,7 @@ +# [WindowsRuntimeStreamExtensions.AsRandomAccessStream(System.IO.Stream) メソッド](windowsruntimestreamextensions-asrandomaccessstream-method.md) +# [ポータブル クラス ライブラリ](cross-platform-development-with-the-portable-class-library.md) +# [複数のプラットフォームの開発](index.md) +# [複数のプラットフォームを対象とするライブラリのアプリケーション リソース](app-resources-for-libraries-that-target-multiple-platforms.md) +# [Windows ストア アプリおよび Windows ランタイムのための .NET Framework サポート](support-for-windows-store-apps-and-windows-runtime.md) +# [MVVM を利用した汎用性のあるクラス ライブラリの使用](using-portable-class-library-with-model-view-view-model.md) +# [Windows ランタイムへの URI の引き渡し](passing-a-uri-to-the-windows-runtime.md) diff --git a/docs/standard/cross-platform/app-resources-for-libraries-that-target-multiple-platforms.md b/docs/standard/cross-platform/app-resources-for-libraries-that-target-multiple-platforms.md new file mode 100644 index 00000000000..cacbbf4ace0 --- /dev/null +++ b/docs/standard/cross-platform/app-resources-for-libraries-that-target-multiple-platforms.md @@ -0,0 +1,114 @@ +--- +title: "複数のプラットフォームを対象とするライブラリのアプリケーション リソース | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ".NET Framework, 複数のプラットフォームを対象とする場合のリソース" + - "複数のプラットフォーム, リソース" + - "リソース [.NET Framework]" + - "リソース, 複数のプラットフォーム" + - "複数のプラットフォームを対象とする, リソース" +ms.assetid: 72c76f0b-7255-4576-9261-3587f949669c +caps.latest.revision: 20 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 20 +--- +# 複数のプラットフォームを対象とするライブラリのアプリケーション リソース +.NET Framework の[ポータブル クラス ライブラリ](../../../docs/standard/cross-platform/cross-platform-development-with-the-portable-class-library.md) プロジェクトの種類を使用すると、複数のプラットフォームからクラス ライブラリのリソースにアクセスできることを保証できます。 このプロジェクトの種類は [!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)] で利用でき、.NET Framework クラス ライブラリの移植性の高いサブセットを対象としています。 [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] を使用すると、デスクトップ アプリケーション、Silverlight アプリケーション、Windows Phone アプリケーション、および [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリケーションからライブラリにアクセスできます。 + + [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクトでは、アプリケーションで使用できるのは 名前空間内の非常に限られた型のサブセットのみですが、 クラスを使用してリソースを取得することはできます。 ただし、Visual Studio を使用してアプリケーションを作成する場合は、 クラス ライブラリを使用するのではなく、Visual Studio によって作成された厳密に型指定されたラッパーを使用する必要があります。 + + Visual Studio で厳密に型指定されたラッパーを作成するには、Visual Studio リソース デザイナーでメイン リソース ファイルの **\[アクセス修飾子\]** を **\[パブリック\]** に設定します。 これにより、厳密に型指定された ResourceManager ラッパーを含む \[resourceFileName\].designer.cs または \[resourceFileName\].designer.vb ファイルが作成されます。 厳密に型指定されたリソース ラッパーの使用方法の詳細については、トピック「[Resgen.exe \(リソース ファイル ジェネレーター\)](../../../docs/framework/tools/resgen-exe-resource-file-generator.md)」の「厳密に型指定されたリソース クラスの生成」を参照してください。 + +## [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] のリソース マネージャー + [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクトでは、リソースへのすべてのアクセスは クラスによって処理されます。 などの 名前空間の型には [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクトからアクセスできないため、これらはリソースへのアクセスには使用できません。 + + [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクトには、以下の表に示す 4 つの メンバーが含まれています。 これらのコンストラクターおよびメソッドを使用すると、 オブジェクトをインスタンス化して文字列リソースを取得できます。 + +|`ResourceManager` のメンバー|説明| +|-----------------------------|--------| +|| インスタンスを作成し、指定されたアセンブリ内にある、名前の指定されたリソース ファイルにアクセスします。| +||指定された型に対応する インスタンスを作成します。| +||現在のカルチャに対する、名前の指定されたリソースを取得します。| +||指定されたカルチャに属する、名前の指定されたリソースを取得します。| + + の他の [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] メンバーを除外すると、シリアル化されたオブジェクト、文字列以外のデータ、およびイメージはリソース ファイルから取得できなくなります。 [!INCLUDE[net_portable](../../../includes/net-portable-md.md)]からリソースを使用するには、すべてのオブジェクト データを文字列形式で格納する必要があります。 たとえば、数値を文字列に変換してリソース ファイルに格納し、これらを取得して、数値データ型の `Parse` メソッドまたは `TryParse` メソッドを使用して数値に戻すことができます。 イメージや他のバイナリ データを文字列形式に変換するには メソッドを呼び出し、バイト配列に戻すには メソッドを呼び出します。 + +## [!INCLUDE[net_portable](../../../includes/net-portable-md.md)]と Windows ストア アプリ + [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクトでは、リソースを .resx ファイルに格納します。これらのファイルはその後 .resources ファイルにコンパイルされ、コンパイル時にメイン アセンブリまたはサテライト アセンブリに埋め込まれます。 一方、[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリケーションではリソースを .resw ファイルに格納する必要があります。このファイルはその後、単一のパッケージ リソース インデックス \(PRI\) ファイルにコンパイルされます。 ただし、ファイル形式に互換性がないにもかかわらず、[!INCLUDE[net_portable](../../../includes/net-portable-md.md)] は [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリケーションで機能します。 + + クラス ライブラリを [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリケーションで使用するには、Windows ストア アプリケーション プロジェクトでその参照を追加します。 Visual Studio ではアセンブリのリソースを .resw ファイルに透過的に抽出し、それを使用して PRI ファイルを生成して、そこから [!INCLUDE[wrt](../../../includes/wrt-md.md)] がリソースを抽出できるようにします。 実行時に [!INCLUDE[wrt](../../../includes/wrt-md.md)] は [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] 内のコードを実行しますが、汎用性のあるクラス ライブラリのリソースは PRI ファイルから取得します。 + + ローカライズされたリソースが [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクトに含まれている場合は、デスクトップ アプリケーション内のライブラリの場合と同様に、ハブ アンド スポーク モデルを使用してこれらを配置します。 メイン リソース ファイルおよびローカライズされたリソース ファイルを [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリケーションで使用するには、参照をメイン アセンブリに追加します。 コンパイル時に、Visual Studio はメイン リソース ファイルとローカライズされているリソース ファイルからリソースを個別の .resw ファイルに抽出します。 次に、実行時に [!INCLUDE[wrt](../../../includes/wrt-md.md)] によってアクセスされる単一の PRI ファイルに .resw ファイルをコンパイルします。 + + +## 例: ローカライズされていない [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] + 以下の単純なローカライズされていない [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] の例では、リソースを使用して列名を格納し、表形式データ用に予約する文字数を決定します。 この例では LibResources.resx という名前のファイルを使用して、次の表に示す文字列リソースを格納します。 + +|リソース名|リソースの値| +|-----------|------------| +|Born|Birthdate| +|BornLength|12| +|Hired|Hire Date| +|HiredLength|12| +|ID|ID| +|ID.Length|12| +|名前|名前| +|NameLength|25| +|タイトル|従業員データベース| + + 次のコードは、ファイルの `UILibrary`**\[アクセス修飾子\]** を `resources`**\[パブリック\]** に変更したときに Visual Studio によって生成された という名前のリソース マネージャーのラッパーを使用する クラスを定義します。 UILibrary クラスは必要に応じて文字列データを解析します。 . このクラスは `MyCompany.Employees` 名前空間にあることに注意してください。 + + [!code-csharp[Conceptual.Resources.Portable#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.resources.portable/cs/uilibrary.cs#1)] + [!code-vb[Conceptual.Resources.Portable#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.resources.portable/vb/uilibrary.vb#1)] + + 次のコードは、`UILibrary` クラスとそのリソースをコンソールモード アプリケーションからアクセスする方法を示します。 コンソール アプリケーションのプロジェクトに追加するには UILIbrary.dll への参照が必要です。 + + [!code-csharp[Conceptual.Resources.Portable#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.resources.portable/cs/program.cs#2)] + [!code-vb[Conceptual.Resources.Portable#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.resources.portable/vb/module1.vb#2)] + + 次のコードは、`UILibrary` クラスとそのリソースを [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリケーションからアクセスする方法を示します。 Windows ストア アプリケーション プロジェクトに追加するには UILIbrary.dll への参照が必要です。 + + [!code-csharp[Conceptual.Resources.PortableMetro#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.resources.portablemetro/cs/blankpage.xaml.cs#1)] + +## 例: ローカライズされている [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] + 以下のローカライズされている [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] の例には、フランス語 \(フランス\) と英語 \(米国\) のカルチャのリソースが含まれています。 英語 \(米国\) のカルチャはアプリケーションの既定のカルチャです。そのリソースは[前のセクション](../../../docs/standard/cross-platform/app-resources-for-libraries-that-target-multiple-platforms.md#NonLoc)の表に示されています。 フランス語 \(フランス\) のカルチャのリソース ファイルは LibResources.fr\-FR.resx という名前で、以下の表に示す文字列リソースで構成されています。 `UILibrary` クラスのソース コードは前のセクションに示すものと同じです。 + +|リソース名|リソースの値| +|-----------|------------| +|Born|Date de naissance| +|BornLength|20| +|Hired|Date embauché| +|HiredLength|16| +|ID|ID| +|名前|Nom| +|タイトル|Base de données des employés| + + 次のコードは、`UILibrary` クラスとそのリソースをコンソールモード アプリケーションからアクセスする方法を示します。 コンソール アプリケーションのプロジェクトに追加するには UILIbrary.dll への参照が必要です。 + + [!code-csharp[Conceptual.Resources.Portable#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.resources.portable/cs/program2.cs#3)] + [!code-vb[Conceptual.Resources.Portable#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.resources.portable/vb/module2.vb#3)] + + 次のコードは、`UILibrary` クラスとそのリソースを [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリケーションからアクセスする方法を示します。 Windows ストア アプリケーション プロジェクトに追加するには UILIbrary.dll への参照が必要です。 静的な `ApplicationLanguages.PrimaryLanguageOverride` プロパティを使用してアプリケーションの優先言語をフランス語に設定します。 + + [!code-csharp[Conceptual.Resources.PortableMetroLoc#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.resources.portablemetroloc/cs/blankpage.xaml.cs#1)] + [!code-vb[Conceptual.Resources.PortableMetroLoc#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.resources.portablemetroloc/vb/blankpage.xaml.vb#1)] + +## 参照 + + [デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md) + [リソースのパッケージ化と配置](../../../docs/framework/resources/packaging-and-deploying-resources-in-desktop-apps.md) \ No newline at end of file diff --git a/docs/standard/cross-platform/cross-platform-development-with-the-portable-class-library.md b/docs/standard/cross-platform/cross-platform-development-with-the-portable-class-library.md new file mode 100644 index 00000000000..e592aae4e7b --- /dev/null +++ b/docs/standard/cross-platform/cross-platform-development-with-the-portable-class-library.md @@ -0,0 +1,238 @@ +--- +title: "汎用性のあるクラス ライブラリを使用したプラットフォーム間の開発 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "汎用性のあるクラス ライブラリ [.NET Framework]" + - "複数のプラットフォームを対象とする" + - "対象とする複数のプラットフォーム" +ms.assetid: c31e1663-c164-4e65-b66d-d3aa8750a154 +caps.latest.revision: 95 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 95 +--- +# 汎用性のあるクラス ライブラリを使用したプラットフォーム間の開発 +Visual Studio の .NET Framework ポータブル クラス ライブラリ プロジェクト タイプにより、Microsoft プラットフォームを対象としたクロスプラットフォーム アプリとライブラリをすばやく簡単に開発できます。 + + ポータブル クラス ライブラリにより、コードの開発とテストにかかる時間とコストを削減できます。 このプロジェクト タイプを使用してポータブル .NET Framework アセンブリを記述およびビルドし、Windows や Windows Phone など複数のプラットフォームを対象としたアプリから、これらのアセンブリを参照します。 + + Visual Studio でポータブル クラス ライブラリ プロジェクトを作成し、プロジェクトの開発を開始した後でも、ターゲット プラットフォームを変更できます。 Visual Studio は新しいアセンブリを使用してライブラリをコンパイルするので、コードに対して行う必要がある変更を確認できます。 + + この記事では、Visual Studio でのアプリの開発について説明します。しかし、Microsoft は、Xamarin などのほかのツールを使用してアプリとライブラリを開発するときに使用できるポータブル クラス ライブラリ参照アセンブリも提供します。 このようなアプリとライブラリは、Microsoft 以外のプラットフォーム上で .NET Framework ベースのランタイムで使用できます。 参照アセンブリに関する詳細については、ブログ記事を参照してください。[ポータブル クラス ライブラリ (PCL)、すべてのプラットフォームで使用可能](http://blogs.msdn.com/b/dotnet/archive/2013/10/14/portable-class-library-pcl-now-available-on-all-platforms.aspx)します。 アセンブリをダウンロードするには、「 [Microsoft .NET ポータブル ライブラリ参照アセンブリ](http://www.microsoft.com/download/details.aspx?id=40727)Microsoft ダウンロード センターからです。 Xamarin でのアセンブリを使用する方法の詳細については、ブログ記事を参照してください。 [PCL および .NET NuGet ライブラリの Xamarin のようになりました](http://blogs.msdn.com/b/dotnet/archive/2013/11/13/pcl-and-net-nuget-libraries-are-now-enabled-for-xamarin.aspx)します。 + + Visual Studio には、ポータブル クラス ライブラリの開発に役立つテンプレートがあります。 使用している Visual Studio のバージョンによっては、使用可能なテンプレートやメニューはこの記事で説明するものとは異なることがあります。 + +> [!WARNING] +> [Visual Studio 2013 Update 2](http://go.microsoft.com/fwlink/p/?LinkId=393658)にポータブル クラス ライブラリ テンプレートの更新が含まれています。 以前のバージョンの Visual Studio と同じコンピューターにインストールされている Visual Studio 2013 があるし、更新プログラム 2、変更をインストールする場合、**ターゲット フレームワーク**の選択肢は、Visual Studio の両方のバージョンに適用されます。 + + このトピックの内容 + + [Visual Studio のサポート](#vs_support) + [ポータブル クラス ライブラリ プロジェクトを作成します。](#create_pcl) + [ターゲット オプション](#platforms) + [ターゲットの変更](#change_targets) + [サポートされている機能](#features) + [サポートされている型とメンバー](#members) + [ポータブル クラス ライブラリ API の相違点](#API_diff) + [ポータブル クラス ライブラリを使用します。](#using) + + +## Visual Studio のサポート + Visual Studio のポータブル クラス ライブラリのサポートは、ご使用の Visual Studio のバージョンで異なります。 次の表に示すように、必要なアイテムがすべて揃っている場合と、追加のアイテムをインストールする必要がある場合があります。 + +|Visual Studio SKU|ポータブル クラス ライブラリ プロジェクト作成のサポート| +|-----------------------|---------------------------------------------------| +|Visual Studio 2010、Professional、Premium、または Ultimate|[はい] をインストールするときに、[ポータブル ライブラリ ツール](http://go.microsoft.com/fwlink/?LinkId=210823)します。| +|Visual Studio Express 2010 の各バージョン|いいえ。| +|Visual Studio 2012、Professional、Premium、または Ultimate|はい。 電話サポートをインストール、 [Windows Phone SDK 8.0](http://go.microsoft.com/fwlink/?LinkId=265772)します。| +|Visual Studio Express 2012 の各バージョン|いいえ。| +|Visual Studio 2013、Professional、Premium、または Ultimate|はい。 Windows Phone 8.1 をサポートする、インストール[Visual Studio 2013 Update 2](http://go.microsoft.com/fwlink/p/?LinkId=393658)します。| +|Visual Studio Express 2013 for Windows|[はい] をインストールするときに、[最新バージョンの Visual Studio Express](http://go.microsoft.com/fwlink/p/?LinkId=394629)、更新プログラム 2 が含まれていますが、または追加[Visual Studio 2013 Update 2](http://go.microsoft.com/fwlink/p/?LinkId=393658)します。| + + +## ポータブル クラス ライブラリ プロジェクトの作成 + ポータブル クラス ライブラリを作成するには、Visual Studio に用意されているテンプレートのいずれかを使用してください。 新しいプロジェクトを作成し、、**新しいプロジェクト**ダイアログ ボックスで、**テンプレート**(c# または Visual Basic) で、目的の言語を選択して、対象となるプラットフォームのいずれかを選択します。 次のステップで追加のプラットフォームを選択できます。 + + Visual Studio 2013 Update 2 で選択できます、**クラス ライブラリ (ポータブル)**選択した言語とポータブル クラス ライブラリを作成するためのプラットフォーム用のテンプレートです。 このテンプレートは次のプラットフォームで表示されます。 + +- ストア アプリ + +- Windows デスクトップ + +- Silverlight + + または Windows 8.1 を対象 Windows Phone 8.1 にライブラリを c# で作成する場合は、選択**ストア アプリ**、にして**クラス ライブラリ (ユニバーサル アプリ用ポータブル)**します。 + + ![ストア アプリ用ポータブル クラス ライブラリ](../../../docs/standard/cross-platform/media/storeuniversalpcl.png "StoreUniversalPCL") + + このテンプレートでは、ターゲットとして Windows 8.1 と Windows Phone 8.1 が自動的に選択されます。 Windows 8.1 と Windows Phone 8.1 のみをターゲットとするライブラリを作成する場合は、後でターゲット プラットフォームを変更したり、プラットフォームを追加したりできます。 + + Visual Studio 2012 または更新プログラム 2 なしの Visual Studio 2013 を使用している場合、新しいプロジェクトを作成し、選択、**ポータブル クラス ライブラリ**Visual c# または Visual Basic でのテンプレートです。 + + ![選択されたポータブル ライブラリ プロジェクト](../../../docs/standard/cross-platform/media/portablelibrary-start.png "PortableLibrary_start") + + **ポータブル クラス ライブラリの追加** ダイアログ ボックスが表示され、追加のプラットフォームを選択することができます。 このダイアログ ボックスに、選択したターゲットに基づいて互換性に関する警告が表示されます。 + + ![VS2013 の [ターゲット フレームワーク] ダイアログを変更します。](../Image/CLR_PCL_ChangeFrameworks.png "CLR_PCL_ChangeFrameworks") +Visual Studio 2013 更新プログラム 2 の [ポータブル クラス ライブラリの追加] ダイアログ ボックス + + Visual Studio 2012 と Visual Studio 2013 のどちらを使用している場合でも、ポータブル クラス ライブラリ プロジェクトを作成するときにプラットフォームを選択できます。また、プロジェクトの作成後にプロジェクトのプロパティを使用してターゲット プラットフォームを変更できます。 + + +## ターゲット オプション + ポータブル クラス ライブラリ プロジェクトを作成するときに、ターゲットにするオペレーティング システムと .NET Framework バージョンを選択できます。 Visual Studio 2013 を使用するいるし、更新プログラム 2 をインストールした後で、選択した場合、**クラス ライブラリ (ユニバーサル アプリ用ポータブル)** Windows 8.1 と Windows Phone 8.1 を対象とするポータブル クラス ライブラリを作成するテンプレートです。 Visual Studio のバージョン別に選択可能なターゲットを次の表に示します。 + +||||| +|-|-|-|-| +|ターゲット オプション|Visual Studio 2012|Visual Studio 2013|Visual Studio 2013 Update 2 以降| +|.NET Framework|.NET framework 4 以降

.NET framework 4.0.3 以上

.NET framework 4.5|.NET framework 4 以降

.NET framework 4.0.3 以上

.NET framework 4.5 以上

.NET framework 4.5.1|.NET framework 4

.NET framework 4.0.3

.NET framework 4.5

.NET framework 4.5.1| +|Windows Phone|-Windows Phone 7 以降

-Windows Phone 7.5 以上

-Windows Phone 8|-Windows Phone 8|-Windows Phone Silverlight 8

-Windows Phone Silverlight 8.1

Windows ランタイムと XAML をサポートするには、次を選択してください。

-Windows Phone 8.1| +|Windows ストア|Windows ストア アプリ用 .NET|Windows ストア アプリ (Windows 8) 以降

Windows ストア アプリ (Windows 8.1)|Windows 8

Windows 8.1| +|Silverlight|Silverlight 4 以上

Silverlight 5|Silverlight 5|Silverlight 5| +|Xbox|Xbox 360|N/A|N/A| + + +## ターゲットの変更 + ポータブル クラス ライブラリ テンプレートを選択すると、既定のプラットフォームが自動的に選択されます。ただしこの既定値は、インストールされている Visual Studio のバージョンと、以前に選択したターゲットに応じて異なります。 ポータブル クラス ライブラリの作成時、またはポータブル クラス ライブラリの開発開始後、プラットフォームを変更できます。 + + プロジェクトを作成した後のターゲットを変更する場合は、**ソリューション エクスプ ローラー**(ソリューションではありません)、ポータブル クラス ライブラリ プロジェクトのショートカット メニューを開きを選択し、**プロパティ**します。 [プロジェクトのプロパティ] ページで、**ライブラリ**タブは、プロジェクトが現在ターゲット プラットフォームを表示します。 + + ![プロジェクトのプロパティ](../../../docs/standard/cross-platform/media/portablelibrary-projectproperties.png "PortableLibrary_ProjectProperties") +Visual Studio 2013 更新プログラム 2 のポータブル クラス ライブラリ プロパティ ページ + + 追加またはターゲットを削除、選択、**変更** ボタンをクリックし、続いてを選択し、該当するチェック ボックスをオフにします。 + + ターゲットを変更すると、変更後のターゲットに合わせて、プロジェクトの開発に使用できる API が変更されます。 Visual Studio は、ターゲットを変更したことで発生する可能性があるエラーと警告を報告します。 + + Visual Studio での変更を行う前にアセンブリの移植性を評価する場合は、使用することができます、 [.NET Portability Analyzer](http://visualstudiogallery.msdn.microsoft.com/1177943e-cfb7-4822-a8a6-e56c7905292b)します。 + + メニュー オプションは、ご使用の Visual Studio のバージョンによって異なります。 + + ![ターゲットの変更](../../../docs/standard/cross-platform/media/portablelibrary.png "PortableLibrary_") +Visual Studio 2012 の [ターゲットの変更] ダイアログ ボックス + + +## サポートされている機能 + 次の表に、各プラットフォームでサポートされている機能とバージョンを示します。 中には Microsoft がNuGet パッケージのリリースのサポートを追加しているものがありますが、その場合は注記が付されています。 .NET Framework の NuGet パッケージの詳細については、次を参照してください。 [.NET Framework および特別のリリース](../../../docs/framework/get-started/the-net-framework-and-out-of-band-releases.md)します。 + +|機能|.NET Framework|.NET Framework|.NET Framework|Windows ストア|Windows ストア|Windows Phone ストア|Windows Phone Silverlight|Windows Phone Silverlight|Windows Phone Silverlight|Silverlight|Silverlight|Xbox 360| +|-------------|--------------------|--------------------|--------------------|-------------------|-------------------|-------------------------|-------------------------------|-------------------------------|-------------------------------|-----------------|-----------------|--------------| +||**4**|**4.0.3**|**4.5**|**8**|**8.1**|**8.1**|**7.5**|**8**|**8.1**|**4**|**5**|| +|コア ライブラリ|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓| +|非同期サポート|➊|➊|✓|✓|✓|✓|➊|➊|✓|➊|➊|| +|[圧縮]|||✓|✓|✓|✓||➋|➋|||| +|データの注釈||✓|✓|✓|✓|||||✓|✓|| +|Dynamic キーワード|✓|✓|✓|✓|✓|||||✓|✓|| +|HTTPClient|➌|➌|✓|✓|✓|✓|➌|➌|➌|➌|➌|| +|IQueryable|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|| +|統合言語クエリ (LINQ)|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|| +|Managed Extensibility Network (MEF)|✓|✓|✓|✓|✓|||||✓|✓|| +|Network Class Library (NCL)|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|| +|シリアル化 (データ コントラクト、XML、JSON)|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|| +|System.Numerics|✓|✓|✓|✓|✓|||||✓|✓|| +|ビュー モデル (MVVM)|||✓|✓|✓|✓|✓|✓|✓|✓|✓|| +|Windows Communication Foundation (WCF)|✓|✓|✓|✓|✓||✓|✓|✓|✓|✓|| +|Windows ランタイム API|||||✓|✓||||||| +|Windows.UI.XAML|||||✓|✓||||||| +|XLINQ||✓|✓|✓|✓|✓|✓|✓|✓|✓|✓|✓| + + ➊ 必要[Microsoft Async](https://www.nuget.org/packages/Microsoft.Bcl.Async/)パッケージ + ➋ 必要[Microsoft Compression](https://www.nuget.org/packages/Microsoft.Bcl.Compression)パッケージ + ➌ 必要[Microsoft HTTP Client Libraries](http://www.nuget.org/packages/Microsoft.Net.Http)パッケージ + +> [!WARNING] +> 参照するときにエラーが発生する可能性があります、 [Microsoft Compression](https://www.nuget.org/packages/Microsoft.Bcl.Compression)と[Microsoft HTTP Client Libraries](http://www.nuget.org/packages/Microsoft.Net.Http) Windows Phone Silverlight 8.1 アプリで使用するポータブル ライブラリからのパッケージです。 詳細については、次を参照してください。[プラットフォームの互換性と最新の Windows Phone Silverlight 8.1 アプリの変更](http://go.microsoft.com/fwlink/p/?LinkId=394744)します。 + + +## サポートされている型とメンバー + ポータブル クラス ライブラリのプロジェクトで使用できる型とメンバーは、互換性に関するいくつかの要因による制約を受けます。 + +- 選択したターゲット間で共有される必要があります。 + +- それらのターゲット間で同様に動作する必要があります。 + +- 廃止候補であってはなりません。 + +- 特にサポートしているメンバーがポータブルでない場合は、ポータブルな環境に意味がある必要があります。 + + たとえば、ターゲットが Windows 8.1 と Windows Phone 8.1 の場合、ポータブル クラス ライブラリには UI 関連の型のみが含まれます。 また、ポータブル クラス ライブラリが導入される前にリリースされたプラットフォーム (Xbox、.NET Framework 4、Windows Phone 7 など) を対象とする場合、制限が課せられる可能性があります。 .NET Framework は NuGet でパッケージをリリースしています。これにより、このような古いプラットフォームの一部でのポータブル クラス ライブラリのサポートが向上します。 NuGet パッケージの一覧および詳細については、次を参照してください。 [.NET Framework および特別のリリース](../../../docs/framework/get-started/the-net-framework-and-out-of-band-releases.md)します。 + + メンバーがポータブル クラス ライブラリでサポートされており、選択したターゲットのメンバーである場合、IntelliSense でプロジェクトにこのメンバーが表示されます。 さらに、ポータブル クラス ライブラリ アイコン![ポータブル ライブラリでサポートされている](../../../docs/standard/cross-platform/media/portablelibrary-referenceicon.png "PortableLibrary_ReferenceIcon")のメンバー テーブルに表示、 [.NET Framework クラス ライブラリ](http://go.microsoft.com/fwlink/?LinkId=211358) の隣にメンバーをサポートします。 例を次のメンバー テーブルを示します、 内のプロパティ、クラスは、ポータブル クラス ライブラリのサポートします。 + + ![[サポートされているメンバー] アイコン](../Image/PlibSupportedMemberList.png "PlibSupportedMemberList") +ポータブル クラス ライブラリのアイコン + + 検索することも、**バージョン情報**型またはメンバーがポータブル クラス ライブラリ プロジェクトでサポートされていることを示す注を参照トピックのセクション。 + + ![ポータブル ライブラリのバージョン情報](../../../docs/standard/cross-platform/media/plibversioninformation.png "PlibVersionInformation") +バージョン情報の例 + + ただし、API がポータブル クラス ライブラリでサポートされている可能性があります。API を使用できるかどうかは、選択したターゲットによって異なります。 + + +## ポータブル クラス ライブラリでの API の相違点 + サポートされるすべてのプラットフォームでポータブル クラス ライブラリ アセンブリの互換性を確保するために、ポータブル クラス ライブラリでは一部のメンバーが若干変更されています。 + + +## ポータブル クラス ライブラリの使用 + ポータブル クラス ライブラリ プロジェクトをビルドしたら、他のプロジェクトからそのプロジェクトを参照します。 プロジェクトを参照することも、アクセスする必要のあるクラスを含む特定のアセンブリを参照することもできます。 + + ポータブル クラス ライブラリ アセンブリを参照するアプリを実行するには、ターゲット プラットフォームの必要なバージョン (またはそれ以上のバージョン) がコンピューターにインストールされている必要があります。 Visual Studio には必要なすべてのフレームワークが含まれるため、さらに変更を加えることなく、アプリケーションの開発に使用したコンピューターでアプリケーションを実行できます。 + +### Windows Store アプリまたは Windows Phone アプリの配置 + ポータブル クラス ライブラリ アセンブリを参照する Windows ストア アプリまたは Windows Phone アプリを作成する場合、そのアプリを配置するために必要なすべての機能はアプリ パッケージに含まれており、追加の作業は不要です。 + +### .NET Framework アプリの配置 + ポータブル クラス ライブラリ アセンブリを参照する .NET Framework アプリを配置するときは、.NET Framework の正しいバージョンに対する依存関係を指定する必要があります。 この依存関係を指定することで、必要なバージョンがアプリケーションと共に確実にインストールされます。 対象とする .NET Framework 4 または .NET Framework 4 とする、コンピューターが、後で必要である場合、[更新](http://go.microsoft.com/fwlink/?LinkId=210824)の更新プログラム 4.0.3、.NET Framework 4 または .NET Framework 4.5 がインストールされています。 + +- ClickOnce 配置で依存関係を作成する: で**ソリューション エクスプ ローラー**、発行するプロジェクトのプロジェクト ノードを選択します。 (これは、ポータブル クラス ライブラリ プロジェクトを参照するプロジェクトです。)メニュー バー**プロジェクト**、**プロパティ**を選択し、**発行** タブをクリックします。 **発行**ページで、選択**の前提条件**します。 必須コンポーネントとして、必要な .NET Framework のバージョン (または .NET Framework 4 の更新プログラム) を選択します。 + +- セットアップ プロジェクトで依存関係を作成する: で**ソリューション エクスプ ローラー**、セットアップ プロジェクトを選択します。 メニュー バー**プロジェクト**、**プロパティ**、**の前提条件**します。 必須コンポーネントとして、必要な .NET Framework のバージョンを選択します。 + + .NET Framework アプリの展開に関する詳細については、次を参照してください。[開発者向け配置ガイド](../../../docs/framework/deployment/deployment-guide-for-developers.md)します。 + +### Silverlight ベースのアプリの配置 + ポータブル クラス ライブラリ アセンブリを参照する Silverlight ベースのアプリを配置するときは、アプリに必要な最小ランタイム バージョンが、対象とするバージョンに対応していることを確認する必要があります。 Silverlight 4 を対象とする場合は、バージョンは 4.0.60129.0 以降である必要があります。 Silverlight ベースのアプリケーションをホストする Web ページに `` を含めることでバージョンを設定します。 + +```xaml +
+ + + + + + + + Get Microsoft Silverlight + + + +
+ +``` + +## 関連項目 + [MVVM でポータブル クラス ライブラリの使用](../../../docs/standard/cross-platform/using-portable-class-library-with-model-view-view-model.md) + [複数のプラットフォームを対象とするライブラリのアプリケーション リソース](../../../docs/standard/cross-platform/app-resources-for-libraries-that-target-multiple-platforms.md) + [.NET portability Analyzer](http://visualstudiogallery.msdn.microsoft.com/1177943e-cfb7-4822-a8a6-e56c7905292b) + [Windows ストア アプリおよび Windows Runtime 用 .NET framework のサポート](../../../docs/standard/cross-platform/support-for-windows-store-apps-and-windows-runtime.md) + [展開](../../../docs/framework/deployment/net-framework-and-applications.md) \ No newline at end of file diff --git a/docs/standard/cross-platform/index.md b/docs/standard/cross-platform/index.md new file mode 100644 index 00000000000..f70e56f598f --- /dev/null +++ b/docs/standard/cross-platform/index.md @@ -0,0 +1,37 @@ +--- +title: ".NET Framework による複数のプラットフォームの開発 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: b153baaa-130c-4169-860b-e580591de91e +caps.latest.revision: 13 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 13 +--- +# .NET Framework による複数のプラットフォームの開発 +.NET Framework と Visual Studio を使用して、Microsoft プラットフォームと Microsoft 以外のプラットフォームの両方を対象としたアプリを開発できます。 + +## クロスプラットフォーム開発のオプション + 複数プラットフォームを対象として開発する場合は、ソース コードやバイナリを共有し、.NET Framework コードと Windows ランタイム API の間で呼び出しを実行できます。 + +|目的|用途| +|--------|--------| +|Windows Phone 8.1 アプリと Windows 8.1 アプリの間でソース コードを共有する|**共有プロジェクト** \(Visual Studio 2013 更新プログラム 2 のユニバーサル アプリ テンプレート\).

- Visual Basic は現在サポートされていません。
- \#`if` ステートメントを使用してプラットフォーム固有のコードを分離できます。

詳細については、以下の資料を参照してください。

- [Visual Studio を使用した Windows と Windows Phone を対象とするアプリの構築](http://msdn.microsoft.com/library/windows/apps/dn609832.aspx) \(MSDN 文書\)
- [Using Visual Studio to build Universal XAML Apps \(Visual Studio を使用したユニバーサル XAML アプリの開発\)](http://blogs.msdn.com/b/visualstudio/archive/2014/04/14/using-visual-studio-to-build-universal-xaml-apps.aspx) \(ブログの投稿\)
- [Using Visual Studio to Build XAML Converged Apps \(Visual Studio を使用した XAML コンバージド アプリの開発\)](http://channel9.msdn.com/Events/Build/2014/3-591) \(ビデオ\)| +|異なるプラットフォームを対象とするアプリ間でバイナリを共有する|プラットフォームに依存しないコードの**ポータブル クラス ライブラリ プロジェクト**。

- この方法は通常、ビジネス ロジックを実装するコードに使用されます。
- Visual Basic または Visual C\# を使用できます。
- API のサポートはプラットフォームによって異なります。
- Windows 8.1 および Windows Phone 8.1 を対象としたポータブル クラス ライブラリのプロジェクトでは、Windows ランタイム API と XAML がサポートされます。 これらの機能は、古いバージョンのポータブル クラス ライブラリでは使用できません。
- 必要に応じて、インターフェイスまたは抽象クラスを使用してプラットフォーム固有のコードを抽象化できます。

詳細については、以下の資料を参照してください。

- [汎用性のあるクラス ライブラリ](../../../docs/standard/cross-platform/cross-platform-development-with-the-portable-class-library.md) \(MSDN 記事\)
- [How to Make Portable Class Libraries Work for You \(ポータブル クラス ライブラリを活用する方法\)](http://blogs.msdn.com/b/dsplaisted/archive/2012/08/27/how-to-make-portable-class-libraries-work-for-you.aspx) \(ブログ記事\)
- [MVVM を利用した汎用性のあるクラス ライブラリの使用](../../../docs/standard/cross-platform/using-portable-class-library-with-model-view-view-model.md) \(MSDN 記事\)
- [複数のプラットフォームを対象とするライブラリのアプリケーション リソース](../../../docs/standard/cross-platform/app-resources-for-libraries-that-target-multiple-platforms.md) \(MSDN 記事\)
- [.NET 移植性アナライザー](http://visualstudiogallery.msdn.microsoft.com/1177943e-cfb7-4822-a8a6-e56c7905292b) \(Visual Studio の拡張機能\)| +|Windows 8.1 および Windows Phone 8.1 以外のプラットフォームを対象としたアプリの間でソース コードを共有する|**\[リンクとして追加\]** 機能。

- この方法は、両方のアプリに共通しているが、何らかの理由で移植できないアプリ ロジックに適しています。 この機能は Visual Basic または Visual C\# のコードに使用できます。
たとえば Windows Phone 8 と Windows 8 は Windows ランタイム API を共有しますが、ポータブル クラス ライブラリはこれらのプラットフォームでは Windows ランタイムをサポートしていません。 Windows Phone 8 アプリと、Windows 8 を対象とした Windows ストア アプリの間で共通する Windows ランタイム コードを共有するには、`Add as link` を使用できます。

詳細については、以下の資料を参照してください。

- [\[リンクとして追加\] を使用してコードを共有する](http://msdn.microsoft.com/library/windowsphone/develop/jj714082\(v=vs.105\).aspx) \(MSDN article\)
- [方法 : プロジェクトに既存の項目を追加する](http://msdn.microsoft.com/library/vstudio/9f4t9t92\(v=vs.100\).aspx) \(MSDN 文書\)| +|.NET Framework を使用して Windows ストア アプリを作成するか、または .NET Framework コードから Windows ランタイム API を呼び出します。|.NET Framework C\# または Visual Basic コードの **Windows ランタイム API**。.NET Framework を使用して Windows ストア アプリを作成します。 2 つのプラットフォーム間の API の違いについて注意してください。 ただし、これらの違いに対処するためのクラスがあります。

詳細については、以下の資料を参照してください。

- [Windows ストア アプリおよび Windows ランタイムのための .NET Framework サポート](../../../docs/standard/cross-platform/support-for-windows-store-apps-and-windows-runtime.md) \(MSDN 記事\)
- [Windows ランタイムへの URI の引き渡し](../../../docs/standard/cross-platform/passing-a-uri-to-the-windows-runtime.md) \(MSDN 記事\)
- \(MSDN API リファレンス ページ\)
- \(MSDN API リファレンス ページ\)| +|Microsoft 以外のプラットフォームに対応した .NET Framework アプリの開発|.NET Framework, の **ポータブル クラス ライブラリの参照アセンブリ**と、Visual Studio 拡張機能またはサードパーティ ツール \(Xamarin など\)。

詳細については、以下の資料を参照してください。

- [Portable Class Library now available on all platforms \(ポータブル クラス ライブラリ、全プラットフォームで使用可能に\)](http://blogs.msdn.com/b/dotnet/archive/2013/10/14/portable-class-library-pcl-now-available-on-all-platforms.aspx) \(ブログの投稿\)
- [Xamarin](http://xamarin.com/visual-studio) \(Xamarin Web サイト\)| +|JavaScript および HTML を使用したクロスプラットフォーム開発|Visual Studio 2013 更新プログラム 2 の**ユニバーサル アプリ テンプレート**。このテンプレートを使用して、Windows 8.1 と Windows Phone 8.1 の Windows ランタイム API に対する開発を行います。 現在、クロスプラットフォーム アプリを開発するときに .NET Framework API で JavaScript と HTML を使用することはできません。

詳細については、以下の資料を参照してください。

- [JavaScript プロジェクト テンプレート](http://msdn.microsoft.com/library/windows/apps/hh758331.aspx)
- [JavaScript を使った Windows ランタイム アプリを Windows Phone に移植する方法](http://msdn.microsoft.com/library/windows/apps/dn636144.aspx)| \ No newline at end of file diff --git a/docs/standard/cross-platform/media/plibversioninformation.png b/docs/standard/cross-platform/media/plibversioninformation.png new file mode 100644 index 00000000000..343e48ee761 Binary files /dev/null and b/docs/standard/cross-platform/media/plibversioninformation.png differ diff --git a/docs/standard/cross-platform/media/portablelibrary-projectproperties.png b/docs/standard/cross-platform/media/portablelibrary-projectproperties.png new file mode 100644 index 00000000000..9664aa4171d Binary files /dev/null and b/docs/standard/cross-platform/media/portablelibrary-projectproperties.png differ diff --git a/docs/standard/cross-platform/media/portablelibrary-start.png b/docs/standard/cross-platform/media/portablelibrary-start.png new file mode 100644 index 00000000000..b03d6b94e83 Binary files /dev/null and b/docs/standard/cross-platform/media/portablelibrary-start.png differ diff --git a/docs/standard/cross-platform/media/portablelibrary.png b/docs/standard/cross-platform/media/portablelibrary.png new file mode 100644 index 00000000000..9ae3537afaf Binary files /dev/null and b/docs/standard/cross-platform/media/portablelibrary.png differ diff --git a/docs/standard/cross-platform/media/portablemvvmdiagram.png b/docs/standard/cross-platform/media/portablemvvmdiagram.png new file mode 100644 index 00000000000..1db299aaeec Binary files /dev/null and b/docs/standard/cross-platform/media/portablemvvmdiagram.png differ diff --git a/docs/standard/cross-platform/media/storeuniversalpcl.png b/docs/standard/cross-platform/media/storeuniversalpcl.png new file mode 100644 index 00000000000..f3e0d593455 Binary files /dev/null and b/docs/standard/cross-platform/media/storeuniversalpcl.png differ diff --git a/docs/standard/cross-platform/passing-a-uri-to-the-windows-runtime.md b/docs/standard/cross-platform/passing-a-uri-to-the-windows-runtime.md new file mode 100644 index 00000000000..935352faa62 --- /dev/null +++ b/docs/standard/cross-platform/passing-a-uri-to-the-windows-runtime.md @@ -0,0 +1,47 @@ +--- +title: "Windows ランタイムへの URI の引き渡し | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "Windows ランタイム、.NET Framework のサポート" + - "Windows ランタイム, URL を渡す" +ms.assetid: 3eb5ce6f-f304-4f87-8e81-0f25092f5ad4 +caps.latest.revision: 10 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 10 +--- +# Windows ランタイムへの URI の引き渡し +Windows ランタイムのメソッドは絶対 URI だけを受け取ります。[!INCLUDE[wrt](../../../includes/wrt-md.md)] メソッドに相対 URI を渡すと、 例外がスローされます。 これは、.NET Framework コードで [!INCLUDE[wrt](../../../includes/wrt-md.md)] を使用する場合、[Windows.Foundation.Uri](http://go.microsoft.com/fwlink/p/?LinkId=238376) クラスは Intellisense では として示されるためです。 クラスでは相対 URI を使用できますが、[Windows.Foundation.Uri](http://go.microsoft.com/fwlink/p/?LinkId=238376) クラスでは相対 URI は使用できません。[!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントで公開するメソッドでも同様です。 URI を受け取るメソッドをコンポーネントで公開する場合、コードのシグネチャには が含まれます。 ただし、コンポーネントのユーザーに対しては、シグネチャに [Windows.Foundation.Uri](http://go.microsoft.com/fwlink/p/?LinkId=238376) が含まれます。 コンポーネントに渡す URI は、絶対 URI でなければなりません。 + + このトピックでは、絶対 URI を検出する方法と、アプリ パッケージ内のリソースを参照するときに絶対 URI を作成する方法を説明します。 + +## 絶対 URI の検出と使用 + URI を に渡す前にそれが絶対 URI であることを確認するには、[!INCLUDE[wrt](../../../includes/wrt-md.md)] プロパティを使用します。 このプロパティを使用する方が、 例外をキャッチして処理するより効率的です。 + +## アプリ パッケージのリソースに対する絶対 URI の使用 + アプリのパッケージに含まれるリソースに対して URI を指定するには、`ms-appx` スキームまたは `ms-appx-web` スキームを使用して絶対 URI を作成します。 + + 次の例に、XAML とコードの両方を使用して、Pages という名前のフォルダーに含まれるリソースに、[WebView](http://msdn.microsoft.com/library/windows/apps/xaml/windows.ui.xaml.controls.webview.aspx) コントロールの [Source](http://msdn.microsoft.com/library/windows/apps/xaml/windows.ui.xaml.controls.webview.source.aspx) プロパティと [Image](http://msdn.microsoft.com/library/windows/apps/br242752.aspx) コントロールの [Source](http://msdn.microsoft.com/library/windows/apps/windows.ui.xaml.controls.image.source.aspx) プロパティを設定する方法を示します。 + + [!code-xml[System.URIToWindowsURI#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.uritowindowsuri/cs/mainpage.xaml#1)] +[!code-csharp[System.URIToWindowsURI#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.uritowindowsuri/cs/mainpage.xaml.cs#2)] +[!code-vb[System.URIToWindowsURI#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.uritowindowsuri/vb/mainpage.xaml.vb#2)] + + これらのスキームの詳細については、Windows デベロッパー センターの「[URI スキーム](http://msdn.microsoft.com/library/windows/apps/jj655406.aspx)」を参照してください。 + +## 参照 + [Windows ストア アプリおよび Windows ランタイムのための .NET Framework サポート](../../../docs/standard/cross-platform/support-for-windows-store-apps-and-windows-runtime.md) \ No newline at end of file diff --git a/docs/standard/cross-platform/support-for-windows-store-apps-and-windows-runtime.md b/docs/standard/cross-platform/support-for-windows-store-apps-and-windows-runtime.md new file mode 100644 index 00000000000..c17441fd7f6 --- /dev/null +++ b/docs/standard/cross-platform/support-for-windows-store-apps-and-windows-runtime.md @@ -0,0 +1,163 @@ +--- +title: "Windows ストア アプリおよび Windows ランタイムのための .NET Framework サポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "Windows ストア アプリ、.NET Framework のサポート" + - "Windows ランタイム、.NET Framework のサポート" + - "Windows ストア アプリ用 .NET" + - ".NET Framework、Windows ストア アプリ" + - ".NET Framework、Windows ランタイム" +ms.assetid: 6fa7d044-ae12-4c54-b8ee-50915607a565 +caps.latest.revision: 20 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 20 +--- +# Windows ストア アプリおよび Windows ランタイムのための .NET Framework サポート +[!INCLUDE[net_v45](../../../includes/net-v45-md.md)] は [!INCLUDE[wrt](../../../includes/wrt-md.md)]のさまざまなソフトウェア開発シナリオをサポートします。 これらのシナリオは次の&3; つのカテゴリに分類されます。 + +- 開発[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)]」の説明に従って、XAML コントロールにアプリ[Windows ストア アプリのロードマップ c# または Visual Basic を使用して](http://go.microsoft.com/fwlink/p/?LinkID=242212)、 [Windows ストア アプリの開発 (VB/c#/+ と XAML)](http://go.microsoft.com/fwlink/p/?LinkId=238311)、および[.NET Windows ストア アプリの概要](http://go.microsoft.com/fwlink/p/?LinkId=238312)Windows デベロッパー センターでします。 + +- .NET Framework で作成する [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリで使用するクラス ライブラリを開発する。 + +- .WinMD ファイルにパッケージ化され、[!INCLUDE[wrt](../../../includes/wrt-md.md)]をサポートするすべてのプログラミング言語で使用できる、[!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントを開発する。 たとえばを参照してください[c# および Visual Basic での Windows ランタイム コンポーネントの作成](http://go.microsoft.com/fwlink/p/?LinkId=238313)Windows デベロッパー センターにします。 + + このトピックでは、3 つのカテゴリすべてに対して .NET Framework が提供するサポートの概略と、[!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネント用シナリオについて説明します。 最初のセクションでは、.NET Framework と [!INCLUDE[wrt](../../../includes/wrt-md.md)]の関係についての基本情報と、ヘルプ システムや IDE で見られる可能性がある特異な状況について説明します。 [2 番目のセクション](#WindowsRuntimeComponents)を開発するためのシナリオについて説明[!INCLUDE[wrt](../../../includes/wrt-md.md)]コンポーネントです。 + +## 基本事項 + .NET Framework は、[!INCLUDE[net_win8_profile](../../../includes/net-win8-profile-md.md)] を提供することと [!INCLUDE[wrt](../../../includes/wrt-md.md)]自体をサポートすることによって、前述の&3; つの開発シナリオをサポートします。 + +- [Windows ストア アプリ用 .NET](http://go.microsoft.com/fwlink/p/?LinkId=247912) .NET Framework クラス ライブラリの効率化されたビューを提供し、型と作成に使用できるメンバーのみを含める[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)]アプリと[!INCLUDE[wrt](../../../includes/wrt-md.md)]コンポーネントです。 + + - [!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)] アプリまたは [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] コンポーネントの開発に Visual Studio ([!INCLUDE[wrt](../../../includes/wrt-md.md)] 以降) を使用すると、参照アセンブリのセットでは、関連する型およびメンバーのみが表示されます。 + + - この簡素化された API セットは、.NET Framework 内で重複した機能、または [!INCLUDE[wrt](../../../includes/wrt-md.md)]の機能と重複した機能を削除すると、さらに単純化できます。 たとえば、簡素化された API セットにはコレクション型のジェネリック バージョンのみが含まれ、XML ドキュメント オブジェクト モデルは削除されて、代わりに [!INCLUDE[wrt](../../../includes/wrt-md.md)] XML API セットが使用されます。 + + - オペレーティング システムの API をラップするだけの機能も削除されます。これは、[!INCLUDE[wrt](../../../includes/wrt-md.md)] をマネージ コードから簡単に呼び出すことができるためです。 + + 詳細について、[!INCLUDE[net_win8_profile](../../../includes/net-win8-profile-md.md)]を参照してください、 [.NET Windows ストア アプリの概要](http://go.microsoft.com/fwlink/p/?LinkId=238312)API 選択プロセスについて説明する Windows デベロッパー センターを参照してください、 [Windows ストア アプリ用 .NET](http://go.microsoft.com/fwlink/p/?LinkId=251061) .NET ブログ エントリです。 + +- [Windows ランタイム](http://go.microsoft.com/fwlink/p/?LinkId=238319)を構築するため、ユーザー インターフェイス要素を提供[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)]アプリ、およびオペレーティング システム機能へのアクセスを提供します。 .NET Framework と同様、[!INCLUDE[wrt](../../../includes/wrt-md.md)]には、C# や Visual Basic のコンパイラが .NET Framework クラス ライブラリを使用するのと同じ方法で [!INCLUDE[wrt](../../../includes/wrt-md.md)]を使用するためのメタデータが含まれています。 .NET Framework では、一部の相違点を非表示にすることで [!INCLUDE[wrt](../../../includes/wrt-md.md)]が使いやすくなっています。 + + - .NET Framework と [!INCLUDE[wrt](../../../includes/wrt-md.md)]間のプログラミング パターン (イベント ハンドラーを追加および削除するパターンなど) の違いの一部が非表示になります。 ユーザーは .NET Framework のパターンを使用するとよいだけです。 + + - よく使用される型 (たとえばプリミティブ型やコレクション) の違いの一部が非表示になります。 説明したように単純に、.NET Framework の型を使用する[表示相違点は、IDE で](#DifferencesVisibleInIDE)、この記事で後述します。 + + ほとんどの場合、[!INCLUDE[wrt](../../../includes/wrt-md.md)]の .NET Framework サポートは透過的です。 次のセクションでは、マネージ コードと [!INCLUDE[wrt](../../../includes/wrt-md.md)]との明確な違いのいくつかについて説明します。 + + +### .NET Framework と [!INCLUDE[wrt](../../../includes/wrt-md.md)]のリファレンス ドキュメント + Windows と .NET Framework では、ドキュメント セットがそれぞれ別になっています。 型またはメンバーに関するヘルプを表示するために F1 キーを押すと、該当するセットのリファレンス ドキュメントが表示されます。 ただしを参照する場合、 [Windows ランタイム リファレンス](http://go.microsoft.com/fwlink/p/?LinkId=238319)に理解しにくいと思われる例が発生する可能性があります。 + +- 」などのトピック、 [IIterable インターフェイス](http://go.microsoft.com/fwlink/p/?LinkId=238321)Visual Basic または c# の宣言の構文はありません。 代わりに、メモの上側に「構文」セクション (この場合は、".NET: このインターフェイスは、配列として表示されます<>\>") です。 これは、.NET Framework と [!INCLUDE[wrt](../../../includes/wrt-md.md)]で、同様の機能が異なるインターフェイスにより用意されているためです。 さらに、動作の違いがある:`IIterable`が、`First`メソッドの代わりに、 列挙子を返します。 .NET Framework では、一般的なタスクを実行する別の方法をユーザーが学習する必要はなく、使い慣れた型を使用できるようマネージ コードを表示して [!INCLUDE[wrt](../../../includes/wrt-md.md)]をサポートします。 IDE では `IIterable` インターフェイスを使用しないため、[!INCLUDE[wrt](../../../includes/wrt-md.md)]のリファレンス ドキュメントでこのインターフェイスを目にするのは、ドキュメントを直接参照する場合のみです。 + +- [SyndicationFeed コンス トラクター](http://go.microsoft.com/fwlink/p/?LinkId=238322)ドキュメントが密接に関連する問題を示しています。 別の言語によって異なるそのパラメーターの型が表示されます。 C# および Visual Basic の場合は、パラメーターの型はします。 これもやはり、.NET Framework で独自の `String` 型と `Uri` 型が使われるためであり、このようなよく使用される型について、.NET Framework ユーザーが処理を実行する別の方法を学習しても意味はありません。 IDE では、これに対応する [!INCLUDE[wrt](../../../includes/wrt-md.md)]の型が .NET Framework によって非表示にされます。 + +- いくつかの場合など、 [Windows.UI.Xaml.GridLength](http://go.microsoft.com/fwlink/p/?LinkId=251059)構造、.NET Framework は多くの機能は、同じ名前を持つ型を提供します。 たとえば、一連のコンストラクターとプロパティのトピックは `GridLength` に関連付けられますが、メンバーがマネージ コードでのみ使用可能であるために、Visual Basic と C# に関してのみ構文ブロックの機能を備えています。 [!INCLUDE[wrt](../../../includes/wrt-md.md)]では、構造体にフィールドがあるだけです。 [!INCLUDE[wrt](../../../includes/wrt-md.md)]構造はヘルパー クラスを必要と[Windows.UI.Xaml.GridLengthHelper](http://go.microsoft.com/fwlink/p/?LinkId=251060)、同等の機能を提供します。 このヘルパー クラスは、マネージ コードを記述している間は IDE に表示されません。 + +- IDE では、[!INCLUDE[wrt](../../../includes/wrt-md.md)]型から派生に表示されるします。 継承されたメンバーが表示されるなどします。 これらのメンバーが、型が実際にから継承されたかのように動作、および[!INCLUDE[wrt](../../../includes/wrt-md.md)]型にキャストすることができますします。 この機能は、.NET Framework が [!INCLUDE[wrt](../../../includes/wrt-md.md)]用に用意しているサポートの一部です。 ただし、[!INCLUDE[wrt](../../../includes/wrt-md.md)]のリファレンス ドキュメントで型を表示しても、このようなメンバーは表示されません。 提供すると、これらの見かけ上の継承されたメンバーのドキュメント、 のドキュメントを参照します。 + + +### IDE で表示される相違点 + より高度なプログラミング シナリオ (例: C# で記述された [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントを使い、JavaScript を使用して Windows 用にビルドされた [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリのアプリケーション ロジックを提供する) では、ドキュメントと同様 IDE でもこのような相違点が表示されます。 コンポーネントから JavaScript に `IDictionary` が返され、それを JavaScript デバッガーで調べると、JavaScript が `IMap`の型を使用するので、[!INCLUDE[wrt](../../../includes/wrt-md.md)] のメソッドが表示されます。 よく使用されるコレクション型のうち、この&2; 言語で表示が異なる型の一部を次の表に示します。 + +|[!INCLUDE[wrt](../../../includes/wrt-md.md)] 型|対応する .NET Framework の型| +|--------------------------------------------------------------|---------------------------------------| +|`IIterable`|`IEnumerable`| +|`IIterator`|`IEnumerator`| +|`IVector`|`IList`| +|`IVectorView`|`IReadOnlyList`| +|`IMap`|`IDictionary`| +|`IMapView`|`IReadOnlyDictionary`| +|`IBindableIterable`|`IEnumerable`| +|`IBindableVector`|`IList`| +|`Windows.UI.Xaml.Data.INotifyPropertyChanged`|`System.ComponentModel.INotifyPropertyChanged`| +|`Windows.UI.Xaml.Data.PropertyChangedEventHandler`|`System.ComponentModel.PropertyChangedEventHandler`| +|`Windows.UI.Xaml.Data.PropertyChangedEventArgs`|`System.ComponentModel.PropertyChangedEventArgs`| + + [!INCLUDE[wrt](../../../includes/wrt-md.md)]では、`IMap` と `IMapView` は `IKeyValuePair` を使用して反復されます。 これらをマネージ コードに渡すと、`IDictionary` および `IReadOnlyDictionary` として表示されるため、これを列挙するには必然的に `System.Collections.Generic.KeyValuePair` を使用します。 + + インターフェイスがマネージ コード内に表示される方法によって、これらのインターフェイスを実装する型の表示方法が決まります。 たとえば、`PropertySet` クラスは `IMap` を実装しますが、これはマネージ コードでは `IDictionary` として表示されます。 `PropertySet` では、`IMap` ではなく `IDictionary` が実装されたように見えるため、マネージ コードでは .NET Framework ディクショナリの `Add` メソッドのように動作する `Add` メソッドがあるように表示されます。 `Insert` メソッドがないように見えます。 + + .NET Framework を使用して作成する方法について、[!INCLUDE[wrt](../../../includes/wrt-md.md)]コンポーネント、および、このようなコンポーネントを JavaScript を使用する方法を説明したチュートリアルを参照してください。 [c# および Visual Basic での Windows ランタイム コンポーネントの作成](http://go.microsoft.com/fwlink/p/?LinkId=238313)Windows デベロッパー センターにします。 + +### プリミティブ型 + マネージ コードで [!INCLUDE[wrt](../../../includes/wrt-md.md)]のナチュラルな使用を有効にすると、[!INCLUDE[wrt](../../../includes/wrt-md.md)]のプリミティブ型ではなく .NET Framework のプリミティブ型がコードに表示されます。 .NET Framework では、`Int32` 構造体などのプリミティブ型には、`Int32.TryParse` メソッドなどの便利なプロパティとメソッドが多くあります。 一方、[!INCLUDE[wrt](../../../includes/wrt-md.md)]のプリミティブ型と構造体にはフィールドしかありません。 マネージ コードでプリミティブを使用すると、.NET Framework の型のように表示され、通常どおりに .NET Framework 型のプロパティとメソッドを使用できます。 要約すると、次のようになります。 + +- [!INCLUDE[wrt](../../../includes/wrt-md.md)]のプリミティブ `Int32`、`Int64`、`Single`、`Double`、`Boolean`、`String` (Unicode 文字の変更できないコレクション)、`Enum`、`UInt32`、`UInt64`、および `Guid` では、`System` 名前空間内の同じ名前の型を使用します。 + +- `UInt8` では、`System.Byte` を使用します。 + +- `Char16` では、`System.Char` を使用します。 + +- `IInspectable` インターフェイスでは、`System.Object` を使用します。 + +- `HRESULT` では、`System.Int32` のメンバーを&1; つ含む構造体を使用します。 + + インターフェイス型の場合と同様、この表示の証拠が表示されるのは、.NET Framework プロジェクトが、JavaScript を使用してビルドされた [!INCLUDE[wrt](../../../includes/wrt-md.md)] アプリで使用される [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] コンポーネントである場合に限られます。 + + よく使用されるその他の基本的[!INCLUDE[wrt](../../../includes/wrt-md.md)]、.NET Framework の同等が含まれるのでに表示される型のマネージ コード、`Windows.Foundation.DateTime`としてマネージ コードに表示される構造体、 構造体、および`Windows.Foundation.TimeSpan`として表示される構造体、 構造体。 + +### その他の相違点 + コードで [!INCLUDE[wrt](../../../includes/wrt-md.md)]の型ではなく .NET Framework の型が表示されるために、ユーザー側のアクションが必要になる場合があります。 たとえば、 [Windows.Foundation.Uri](http://go.microsoft.com/fwlink/p/?LinkId=238376)クラスとして位置付け .NET Framework コードでします。 により、相対 URI が、 [Windows.Foundation.Uri](http://go.microsoft.com/fwlink/p/?LinkId=238376)絶対 URI が必要です。 したがって、[!INCLUDE[wrt](../../../includes/wrt-md.md)] メソッドに URI を渡すときには、絶対 URI にする必要があります。 (参照[Windows ランタイムへの URI の引き渡し](../../../docs/standard/cross-platform/passing-a-uri-to-the-windows-runtime.md))。 + + +## Windows ランタイム コンポーネントの開発シナリオ + [!INCLUDE[wrt](../../../includes/wrt-md.md)]のマネージ コンポーネントでサポートされるシナリオは、次の原則に依存します。 + +- .NET Framework を使用してビルドされる [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントとその他の [!INCLUDE[wrt](../../../includes/wrt-md.md)] ライブラリの間に、明確な違いはありません。 たとえば、マネージ コードを使用して [!INCLUDE[wrt](../../../includes/wrt-md.md)]のネイティブ コンポーネントを再実装する場合、この&2; つのコンポーネントは外部から見て区別が付きません。 コンポーネントがマネージ コードで記述されているという事実は、そのコード自体がマネージ コードであったとしても、そのコンポーネントを使用するコードには表示されません。 ただし内部的には、そのコンポーネントは真のマネージ コードであり、共通言語ランタイム (CLR) 上で実行されます。 + +- コンポーネントには、アプリケーション ロジック、[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] UI コントロール、またはその両方を実装する型を含めることができます。 + + > [!NOTE] + > アプリケーション ロジックから UI 要素を分離することをお勧めします。 また、JavaScript や HTML を使用して Windows 用にビルドされた [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリでは、[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] UI コントロールを使用できません。 + +- コンポーネントは、[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリ用 Visual Studio ソリューション内のプロジェクトの場合もあれば、複数のソリューションに追加できる再利用可能なコンポーネントの場合もあります。 + + > [!NOTE] + > コンポーネントが C# または Visual Basic でのみ使用される場合は、それを [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントにする必要はありません。 代わりにそれを通常の .NET Framework クラス ライブラリにすると、そのパブリック API サーフェイスを [!INCLUDE[wrt](../../../includes/wrt-md.md)]の型に制限する必要はありません。 + +- 使用して再利用可能なコンポーネントのバージョンをリリースできます、 [!INCLUDE[wrt](../../../includes/wrt-md.md)] [VersionAttribute](http://go.microsoft.com/fwlink/p/?LinkId=238563)さまざまなバージョンで追加された属性をどの型 (および型のメンバー) を指定します。 + +- コンポーネントの型は [!INCLUDE[wrt](../../../includes/wrt-md.md)]の型から派生できます。 コントロールがのプリミティブ コントロール型から派生させることができます、 [Windows.UI.Xaml.Controls.Primitives](http://go.microsoft.com/fwlink/p/?LinkId=238564)名前空間または終了コントロールなどの詳細から[ボタン](http://go.microsoft.com/fwlink/p/?LinkId=238565)します。 + + > [!IMPORTANT] + > [!INCLUDE[win8](../../../includes/win8-md.md)] および [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] 以降では、[!INCLUDE[wrt](../../../includes/wrt-md.md)] マネージ コンポーネントのすべてのパブリック型をシールする必要があります。 別の [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネント内の型はそこから派生できません。 コンポーネントでポリモーフィックな動作を提供するには、インターフェイスを作成し、そのインターフェイスをポリモーフィックな型に実装します。 + +- コンポーネント内のパブリック型で指定されるすべてのパラメーターと戻り値の型は、[!INCLUDE[wrt](../../../includes/wrt-md.md)]の型 (コンポーネントで定義する [!INCLUDE[wrt](../../../includes/wrt-md.md)]の型を含む) である必要があります。 + + 次のセクションでは、一般的なシナリオの例を示します。 + +### JavaScript による [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリ用アプリケーション ロジック + JavaScript を使用して Windows の [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリを開発する場合、アプリケーション ロジックの一部が、他の部分に比べてマネージ コードでより適切に機能したり、開発が容易であったりすることがあります。 JavaScript では .NET Framework クラス ライブラリを直接使用できませんが、クラス ライブラリを .WinMD ファイルにすることができます。 このシナリオでは、[!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントがアプリに不可欠な部分であるため、バージョン属性を提供する意味がありません。 + +### 再利用可能な [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] UI コントロール + 関連する UI コントロールのセットを再利用可能な [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントにパッケージ化できます。 コンポーネントは、単独で商品化することも、作成するアプリの要素として使用することもできます。 このシナリオは、使用する、 [!INCLUDE[wrt](../../../includes/wrt-md.md)] [VersionAttribute](http://go.microsoft.com/fwlink/p/?LinkId=238563)互換性を向上させる属性です。 + +### 既存の .NET Framework アプリからの再利用可能なアプリケーション ロジック + 既存のデスクトップ アプリからマネージ コードをスタンドアロンの [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントとしてパッケージ化できます。 これによって、C# または Visual Basic を使用してビルドされる [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリに加えて、C++ または JavaScript を使用してビルドされる [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリでも、コンポーネントを使用できるようになります。 コードに再利用シナリオが複数ある場合、バージョン管理はオプションです。 + +## 関連トピック + +|タイトル|説明| +|-----------|-----------------| +|[.NET Windows ストア アプリの概要](http://go.microsoft.com/fwlink/p/?LinkId=238312)|[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリと [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントの作成に使用できる .NET Framework の型およびメンバーについて説明します (Windows デベロッパー センター内)。| +|[C# または Visual Basic を使った Windows ストア アプリのロードマップ](http://go.microsoft.com/fwlink/p/?LinkId=242212)|C# または Visual Basic を使用して [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリの開発を開始するときに役立つ主要リソース (各種のクイック スタート トピック、ガイドライン、ベスト プラクティスなど) が用意されています (Windows デベロッパー センター内)。| +|[Windows ストア アプリの開発 (VB/c# または C++ と XAML)](http://go.microsoft.com/fwlink/p/?LinkId=238311)|C# または Visual Basic を使用して [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリの開発を開始するときに役立つ主要リソース (各種のクイック スタート トピック、ガイドライン、ベスト プラクティスなど) が用意されています (Windows デベロッパー センター内)。| +|[C# および Visual Basic での Windows ランタイム コンポーネントの作成](http://go.microsoft.com/fwlink/p/?LinkId=238313)|.NET Framework を使用して [!INCLUDE[wrt](../../../includes/wrt-md.md)] コンポーネントを作成する方法、JavaScript を使用して Windows 用にビルドされた [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリの一部としてそのコンポーネントを使用する方法、Visual Studio との組み合わせをデバッグする方法について説明します (Windows デベロッパー センター内)。| +|[Windows ランタイムのリファレンス](http://go.microsoft.com/fwlink/?LinkId=238319)|[!INCLUDE[wrt](../../../includes/wrt-md.md)]のリファレンス ドキュメント (Windows デベロッパー センター内)。| +|[Windows ランタイムへの URI の引き渡し](../../../docs/standard/cross-platform/passing-a-uri-to-the-windows-runtime.md)|マネージ コードから [!INCLUDE[wrt](../../../includes/wrt-md.md)]に URI を渡すときに発生する可能性がある問題と、その回避方法について説明します。| \ No newline at end of file diff --git a/docs/standard/cross-platform/using-portable-class-library-with-model-view-view-model.md b/docs/standard/cross-platform/using-portable-class-library-with-model-view-view-model.md new file mode 100644 index 00000000000..ba82221b021 --- /dev/null +++ b/docs/standard/cross-platform/using-portable-class-library-with-model-view-view-model.md @@ -0,0 +1,99 @@ +--- +title: "Model-View-View Model を利用した汎用性のあるクラス ライブラリの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "汎用性のあるクラス ライブラリ [.NET Framework]、および MVVM" + - "MVVM、および汎用性のあるクラス ライブラリ" +ms.assetid: 41a0b9f8-15a2-431a-bc35-e310b2953b03 +caps.latest.revision: 17 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 17 +--- +# Model-View-View Model を利用した汎用性のあるクラス ライブラリの使用 +Model\-View\-View Model \(MVVM\) パターンを実装し、複数のプラットフォーム間でアセンブリを共有するには、.NET Framework [ポータブル クラス ライブラリ](../../../docs/standard/cross-platform/cross-platform-development-with-the-portable-class-library.md) を使用できます。 + + MVVM は、基になるビジネス ロジックからのユーザー インターフェイスを分離するアプリケーション パターンです。 [!INCLUDE[vs_dev11_long](../../../includes/vs-dev11-long-md.md)]の [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] のプロジェクトのモデルおよびビュー モデル クラスを実装し、異なるプラットフォーム用にカスタマイズされたビューを作成します。 この方法は一度だけデータ モデルおよびビジネス ロジックを記述できるようになり、次の図に示すように、.NET Framework、Silverlight、Windows Phone、および [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] のアプリケーションからのコードを使用します。 + + ![MVVM を使用したポータブルのダイアグラム](../../../docs/standard/cross-platform/media/portablemvvmdiagram.png "PortableMVVMdiagram") + + このトピックには MVVM パターンに関する一般的な情報は含まれていません。 [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] を使用して MVVM を実装する方法についてのみ説明します。 MVVM の詳細については、MSDN [MVVM Quickstart](http://go.microsoft.com/fwlink/?LinkId=234934) ライブラリを参照します。 + +## MVVM をサポートしているクラス + [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクトに対し、[!INCLUDE[net_v45](../../../includes/net-v45-md.md)]、[!INCLUDE[net_win8_profile](../../../includes/net-win8-profile-md.md)]、Silverlight、または Windows Phone 7.5 を対象とする場合は、MVVM パターンの実装に次のクラスを使用できます。 + +- クラス + +- クラス + +- クラス + +- クラス + +- クラス + +- クラス + +- クラス + +- クラス + +- クラス + +- クラス + +- 名前空間のすべてのクラス + +## MVVM の実装 + MVVM を実装するには、通常はモデルとビュー モデルの両方を [!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクト内に作成します。[!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクトは非移植性のプロジェクトを参照できないためです。 モデルおよびビュー モデルは、同じプロジェクトに含めることも、個別のプロジェクトに含めることもできます。 異なるプロジェクトを使用する場合は、ビュー モデル プロジェクトからの参照をモデル プロジェクトに追加します。 + + モデルおよびビュー モデルのプロジェクトをコンパイルした後は、ビューを含むアプリケーションでこれらのアセンブリを参照します。 ビューがビュー モデルのみと対話する場合は、ビュー モデルを含むアセンブリを参照するだけで済みます。 + +### モデル + 次の例は、[!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクトに含めることのできる簡易モデル クラスを示しています。 + + [!code-csharp[PortableClassLibraryMVVM#1](../../../samples/snippets/csharp/VS_Snippets_CLR/portableclasslibrarymvvm/cs/customer.cs#1)] + [!code-vb[PortableClassLibraryMVVM#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/portableclasslibrarymvvm/vb/customer.vb#1)] + + 以下に、[!INCLUDE[net_portable](../../../includes/net-portable-md.md)] プロジェクトでのデータの挿入、取得、および更新の簡単な方法例を示します。 実際のアプリケーションでは、データは Windows Communication Foundation \(WCF\) サービスなどのソースから取得します。 + + [!code-csharp[PortableClassLibraryMVVM#2](../../../samples/snippets/csharp/VS_Snippets_CLR/portableclasslibrarymvvm/cs/customerrepository.cs#2)] + [!code-vb[PortableClassLibraryMVVM#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/portableclasslibrarymvvm/vb/customerrepository.vb#2)] + +### ビュー モデル + ビュー モデルの基本クラスは MVVM パターンの実装時に追加されることがよくあります。 基本クラスの例を次に示します。 + + [!code-csharp[PortableClassLibraryMVVM#3](../../../samples/snippets/csharp/VS_Snippets_CLR/portableclasslibrarymvvm/cs/viewmodelbase.cs#3)] + [!code-vb[PortableClassLibraryMVVM#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/portableclasslibrarymvvm/vb/viewmodelbase.vb#3)] + + MVVM パターンでは インターフェイスの実装がよく使用されます。 インターフェイスを実装する例を次に示します。 + + [!code-csharp[PortableClassLibraryMVVM#4](../../../samples/snippets/csharp/VS_Snippets_CLR/portableclasslibrarymvvm/cs/relaycommand.cs#4)] + [!code-vb[PortableClassLibraryMVVM#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/portableclasslibrarymvvm/vb/relaycommand.vb#4)] + + 簡易ビュー モデルの例を次に示します。 + + [!code-csharp[PortableClassLibraryMVVM#5](../../../samples/snippets/csharp/VS_Snippets_CLR/portableclasslibrarymvvm/cs/mainpageviewmodel.cs#5)] + [!code-vb[PortableClassLibraryMVVM#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/portableclasslibrarymvvm/vb/customerviewmodel.vb#5)] + +### ビュー + [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] アプリケーション、[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリケーション、Silverlight ベースのアプリケーション、または Windows Phone 7.5 アプリケーションでは、モデルおよびビュー モデルのプロジェクトを含むアセンブリを参照できます。次に、ビュー モデルと対話するビューを作成します。 次の例では、ビュー モデルからデータを取得し、更新する簡易 Windows Presentation Foundation \(WPF\) アプリケーションを示します。 似たようなビューは Silverlight、Windows Phone、または [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリケーションでも作成できます。 + + [!code-xml[PortableClassLibraryMVVM#6](../../../samples/snippets/csharp/VS_Snippets_CLR/portableclasslibrarymvvm/cs/mainwindow.xaml#6)] + +## 参照 + [汎用性のあるクラス ライブラリ](../../../docs/standard/cross-platform/cross-platform-development-with-the-portable-class-library.md) \ No newline at end of file diff --git a/docs/standard/cross-platform/windowsruntimestreamextensions-asrandomaccessstream-method.md b/docs/standard/cross-platform/windowsruntimestreamextensions-asrandomaccessstream-method.md new file mode 100644 index 00000000000..56f6e000037 --- /dev/null +++ b/docs/standard/cross-platform/windowsruntimestreamextensions-asrandomaccessstream-method.md @@ -0,0 +1,75 @@ +--- +title: "WindowsRuntimeStreamExtensions.AsRandomAccessStream(System.IO.Stream) メソッド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +apiname: + - "System.IO.WindowsRuntimeStreamExtensions.AsRandomAccessStream" +apilocation: + - "System.Runtime.WindowsRuntime.dll" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: dcc72283-caed-49ee-b45d-ccaf94e97129 +caps.latest.revision: 12 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 12 +--- +# WindowsRuntimeStreamExtensions.AsRandomAccessStream(System.IO.Stream) メソッド +\[.NET Framework 4.5.1 以上でサポート\] + + 特定のストリームをランダム アクセス ストリームに変換します。 + + **名前空間**: + **アセンブリ**: System.Runtime.WindowsRuntime \(System.Runtime.WindowsRuntime.dll 内\) + +## 構文 + +```csharp +[CLSCompliantAttribute(false)] public static  IRandomAccessStream AsRandomAccessStream(Stream stream) +``` + +```vb +'Declaration _ _ Public Shared Function AsRandomAccessStream ( _ stream As Stream) As IRandomAccessStream +``` + +#### パラメーター + `stream` + + 型: + 変換するストリーム。 + +## 戻り値 + 型: [Windows.Storage.Streams.RandomAccessStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.randomaccessstream.aspx) + 変換されたストリームを表す [!INCLUDE[wrt](../../../includes/wrt-md.md)] ランダム アクセス、ストリーム。 + +## 例外 + +|例外|状態| +|--------|--------| +||変換するストリームがシークをサポートしていません。| + +## 解説 + この拡張メソッドは、Windows ストア アプリを開発する場合のみに使用できます。 このメソッドは、Windows ストア アプリのストリームを使用する便利な方法を提供します。 変換する .NET Framework ストリームはシークをサポートする必要があります。 詳細については、 メソッドを参照してください。 + +> [!IMPORTANT] +> この API は .NET Framework 4.5.1 以上ではサポートされますが、Version 4.5 ではサポートされません。 + +## バージョン情報 + **Windows ストア アプリ用 .NET** + + Windows 8.1 でサポート + +## 参照 + + [方法: .NET Framework ストリームと Windows ランタイム ストリームの間で変換を行う](../../../docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md) \ No newline at end of file diff --git a/docs/standard/data/xml/TOC.md b/docs/standard/data/xml/TOC.md new file mode 100644 index 00000000000..50b4206ca9e --- /dev/null +++ b/docs/standard/data/xml/TOC.md @@ -0,0 +1,126 @@ +# [保持されずに展開されるエンティティ参照](entity-references-are-expanded-and-not-preserved.md) +# [XSLT のセキュリティに関する考慮事項](xslt-security-considerations.md) +# [XSLT パラメーター](xslt-parameters.md) +# [XML スキーマのインクルードまたはインポート](including-or-importing-xml-schemas.md) +# [msxsl:script を使用したスクリプト ブロック](script-blocks-using-msxsl-script.md) +# [XML スキーマの編集](editing-xml-schemas.md) +# [XslCompiledTransform クラスの使用](using-the-xslcompiledtransform-class.md) +# [XML とリレーショナル データおよび ADO.NET との統合](xml-integration-with-relational-data-and-adonet.md) +# [XML ドキュメントからのスキーマの推論](inferring-schemas-from-xml-documents.md) +# [DOM における名前空間のサポート](namespace-support-in-the-dom.md) +# [XPath クエリおよび名前空間](xpath-queries-and-namespaces.md) +# [XML ドキュメントと XML データ](index.md) +# [XPathNavigator によるノードの一致](matching-nodes-using-xpathnavigator.md) +# [コンパイルされた XPath 式](compiled-xpath-expressions.md) +# [XSLT スタイル シートの拡張](extending-xslt-style-sheets.md) +# [変換での結果ツリー フラグメントの処理](result-tree-fragment-in-transformations.md) +# [スタイル シート パラメーターと拡張オブジェクト用の XsltArgumentList](xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md) +# [DOM の要素に対する新しい属性の作成](creating-new-attributes-for-elements-in-the-dom.md) +# [.NET Framework 型の文字列への変換](converting-dotnet-types-to-strings.md) +# [XML ドキュメントからのノード、コンテンツ、値の削除](removing-nodes-content-and-values-from-an-xml-document.md) +# [ドキュメントに埋め込まれたスタイル シート ディレクティブ](style-sheet-directives-embedded-in-a-document.md) +# [スキーマのノード型および構造を推論するときの規則](rules-for-inferring-schema-node-types-and-structure.md) +# [名前空間プレフィックス プロパティの変更](changing-namespace-prefix-properties.md) +# [XslTransform クラスの随意動作の実装](implementation-of-discretionary-behaviors-in-the-xsltransform-class.md) +# [msxsl:node-set() 関数のサポート](support-for-the-msxsl-node-set-function.md) +# [ドキュメント フラグメントのコピー](copying-document-fragments.md) +# [DOM の属性へのアクセス](accessing-attributes-in-the-dom.md) +# [XML スキーマの走査](traversing-xml-schemas.md) +# [XML データ型から CLR 型へのマッピング](mapping-xml-data-types-to-clr-types.md) +# [XPathNavigator による XML データへのアクセス](accessing-xml-data-using-xpathnavigator.md) +# [XPathNavigator を使用した XML データの選択](select-xml-data-using-xpathnavigator.md) +# [XML スキーマの使用](working-with-xml-schemas.md) +# [XML ドキュメント オブジェクト モデル (DOM)](xml-document-object-model-dom.md) +# [XML スキーマの読み取りと書き込み](reading-and-writing-xml-schemas.md) +# [DOM の拡張](extending-the-dom.md) +# [新しいノードの作成時における XML 要素名および属性名の検証](xml-element-and-attribute-name-verification-when-creating-new-nodes.md) +# [XPathNavigator による XML データの編集](editing-xml-data-using-xpathnavigator.md) +# [XML スキーマの推論](inferring-an-xml-schema.md) +# [外部リソースの解決](resolving-external-resources.md) +# [XmlSchemaCollection を使用した XML スキーマ (XSD) 検証](xml-schema-xsd-validation-with-xmlschemacollection.md) +# [変換におけるノード セット](node-sets-in-transformations.md) +# [XML スキーマ オブジェクト モデル (SOM)](xml-schema-object-model-som.md) +# [XML ドキュメントの DOM への読み取り](reading-an-xml-document-into-the-dom.md) +# [XSLT 拡張オブジェクト](xslt-extension-objects.md) +# [新しいエンティティ参照の作成](creating-new-entity-references.md) +# [XML データ型の変換](conversion-of-xml-data-types.md) +# [XML ドキュメントの名前空間宣言の変更](changing-namespace-declarations-in-an-xml-document.md) +# [XslTransform への XmlDataDocument の入力](xmldatadocument-input-to-xsltransform.md) +# [XPathNavigator による XML データの削除](remove-xml-data-using-xpathnavigator.md) +# [XML ドキュメント オブジェクト モデル (DOM) の階層構造](xml-document-object-model-dom-hierarchy.md) +# [XslTransform への XmlDocument の入力](xmldocument-input-to-xsltransform.md) +# [XslTransform クラスからの移行](migrating-from-the-xsltransform-class.md) +# [外部の XSLT スタイル シートとドキュメントの解決](resolving-external-xslt-style-sheets-and-documents.md) +# [XslCompiledTransform クラスの出力オプション](output-options-on-the-xslcompiledtransform-class.md) +# [XmlSchemaValidator のプッシュ ベースの検証](xmlschemavalidator-push-based-validation.md) +# [方法 : XslTransform コードを移行する](how-to-migrate-your-xsltransform-code.md) +# [XPath ナビゲーションによるノードの選択](select-nodes-using-xpath-navigation.md) +# [XslTransform からの出力](outputs-from-an-xsltransform.md) +# [XmlNameTable によるオブジェクトの比較](object-comparison-using-xmlnametable.md) +# [XML スキーマの作成](building-xml-schemas.md) +# [厳密に型指定された XML データへの XPathNavigator を使用したアクセス](accessing-strongly-typed-xml-data-using-xpathnavigator.md) +# [XML スキーマ オブジェクト モデルの概要](xml-schema-object-model-overview.md) +# [XML ドキュメントへのノードの挿入](inserting-nodes-into-an-xml-document.md) +# [XML ドキュメントの作成](xml-document-creation.md) +# [エンティティ宣言とエンティティ参照の DOM への読み込み](reading-entity-declarations-and-entity-references-into-the-dom.md) +# [XslCompiledTransform クラスへの入力](inputs-to-the-xslcompiledtransform-class.md) +# [XPathNavigator を使用したスキーマ検証](schema-validation-using-xpathnavigator.md) +# [スキーマのコンパイル後の情報セット](post-schema-compilation-infoset.md) +# [DOM の要素ノードからの属性の削除](removing-attributes-from-an-element-node-in-the-dom.md) +# [リーダーからのデータの読み込み](load-data-from-a-reader.md) +# [XslTransform への XPathDocument の入力](xpathdocument-input-to-xsltransform.md) +# [XmlSchemaCollection スキーマのコンパイル](xmlschemacollection-schema-compilation.md) +# [方法 : アセンブリを使用して XSLT 変換を実行する](how-to-perform-an-xslt-transformation-by-using-an-assembly.md) +# [NodeLists および NamedNodeMaps の動的更新](dynamic-updates-to-nodelists-and-namednodemaps.md) +# [XML ドキュメントのノード、コンテンツ、値の変更](modifying-nodes-content-and-values-in-an-xml-document.md) +# [方法 : ノード フラグメントを変換する](how-to-transform-a-node-fragment.md) +# [XML ノードの種類](types-of-xml-nodes.md) +# [DOM への新しいノードの作成](create-new-nodes-in-the-dom.md) +# [XML ドキュメントでの名前空間の管理](managing-namespaces-in-an-xml-document.md) +# [XSLT コンパイラ (xsltc.exe)](xslt-compiler-xsltc-exe.md) +# [文字列の .NET Framework データ型への変換](converting-strings-to-dotnet-data-types.md) +# [要素と属性を含む新しいノードでのエンティティ参照の展開に対する名前空間の影響](namespace-affect-on-entity-ref-expansion-for-new-nodes.md) +# [System.Xml クラスでの型のサポート](type-support-in-the-system-xml-classes.md) +# [DOM のノード コンテンツの削除](removing-node-content-in-the-dom.md) +# [ を使用した XSLT スタイルシートのスクリプト](xslt-stylesheet-scripting-using-msxsl-script.md) +# [XPathDocument および XmlDocument を使用した XML データの読み取り](reading-xml-data-using-xpathdocument-and-xmldocument.md) +# [DOM モデルを使用した XML データの処理](process-xml-data-using-the-dom-model.md) +# [スキーマをコンパイルするための XmlSchemaSet](xmlschemaset-for-schema-compilation.md) +# [インデックスによる順序付けられたノードの取得](ordered-node-retrieval-by-index.md) +# [XPath データ モデルを使用した XML データの処理](process-xml-data-using-the-xpath-data-model.md) +# [XslTransform クラスを使用した XSLT 変換](xslt-transformations-with-the-xsltransform-class.md) +# [XSLT エラーの解決](recoverable-xslt-errors.md) +# [ユーザー定義の関数と変数](user-defined-functions-and-variables.md) +# [XPathNavigator を使用した XML データの選択、評価、および照合](selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md) +# [オブジェクト階層の XML データへのマップ](mapping-the-object-hierarchy-to-xml-data.md) +# [ドキュメント間での既存のノードのコピー](copying-existing-nodes-from-one-document-to-another.md) +# [XSLT 処理中の外部リソースの解決](resolving-external-resources-during-xslt-processing.md) +# [単純型を推論するときの規則](rules-for-inferring-simple-types.md) +# [異なるストアでの XSLT 変換](xslt-transformations-over-different-stores.md) +# [XmlSchemaSet による XML スキーマ (XSD) 検証](xml-schema-xsd-validation-with-xmlschemaset.md) +# [XML の処理オプション](xml-processing-options.md) +# [XPathNavigator による XML データの挿入](insert-xml-data-using-xpathnavigator.md) +# [DOM における XML ドキュメントの検証](validating-an-xml-document-in-the-dom.md) +# [変換における XPathNodeIterator](xpathnodeiterator-in-transformations.md) +# [既存のノードのコピー](copy-existing-nodes.md) +# [XPathNavigator による Xpath 式の評価](evaluate-xpath-expressions-using-xpathnavigator.md) +# [XML 型サポートの実装に関するメモ](xml-type-support-implementation-notes.md) +# [XPathNavigator を使用する属性と名前空間のナビゲーション](attribute-and-namespace-node-navigation-using-xpathnavigator.md) +# [名前またはインデックスによる順序付けられていないノードの取得](unordered-node-retrieval-by-name-or-index.md) +# [XSLT 変換](xslt-transformations.md) +# [DOM における名前空間と DTD](namespaces-and-dtds-in-the-dom.md) +# [XPath クエリで認識されるノード型](node-types-recognized-with-xpath-queries.md) +# [メモリ内の XML データの処理](processing-xml-data-in-memory.md) +# [DOM を読み込むときの空白および有意の空白の処理](white-space-and-significant-white-space-handling-when-loading-the-dom.md) +# [XPathNavigator を使用するノード セットのナビゲーション](node-set-navigation-using-xpathnavigator.md) +# [変換における XPathNavigator](xpathnavigator-in-transformations.md) +# [XmlNodeChangedEventArgs による XML ドキュメントのイベント処理](event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md) +# [DOM からのノードの削除](removing-nodes-from-the-dom.md) +# [ドキュメントの保存と書き込み](saving-and-writing-a-document.md) +# [XpathNavigator を使用した XML データの抽出](extract-xml-data-using-xpathnavigator.md) +# [XPath 名前空間のナビゲーション](xpath-namespace-navigation.md) +# [LINQ to XML を使用した XML データの処理](process-xml-data-using-linq-to-xml.md) +# [XpathNavigator による XML データの変更](modify-xml-data-using-xpathnavigator.md) +# [NamedNodeMaps と NodeLists のノード コレクション](node-collections-in-namednodemaps-and-nodelists.md) +# [XmlSchemaCollection を使用した XDR 検証](xdr-validation-with-xmlschemacollection.md) +# [保持されるエンティティ参照](entity-references-are-preserved.md) diff --git a/docs/standard/data/xml/accessing-attributes-in-the-dom.md b/docs/standard/data/xml/accessing-attributes-in-the-dom.md new file mode 100644 index 00000000000..0455fa02e4f --- /dev/null +++ b/docs/standard/data/xml/accessing-attributes-in-the-dom.md @@ -0,0 +1,270 @@ +--- +title: "DOM の属性へのアクセス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: ce2df341-a1a4-4e97-8e1b-cd45b8e3e71e +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# DOM の属性へのアクセス +属性は要素のプロパティであり、要素の子ではありません。 この区別は、XML ドキュメント オブジェクト モデル \(DOM\) の兄弟ノード、親ノード、および子ノードの間の移動に使用するメソッドで重要な意味を持ちます。 たとえば、**PreviousSibling** メソッドと **NextSibling** メソッドは、要素から属性への移動や属性間の移動には使われません。 属性は要素のプロパティであり、要素によって所有されているため、**OwnerElement** プロパティを持ちますが、**parentNode** プロパティはありません。また、移動には専用のメソッドを使います。 + + 現在のノードが要素のとき、その要素に関連付けられている属性があるかどうかを調べるには、**HasAttribute** メソッドを使用します。 要素に属性がある場合は、各種のメソッドで属性にアクセスできます。 **XmlElement** の **GetAttribute** メソッドと **GetAttributeNode** メソッドを使用して要素から 1 つの属性を取得するか、すべての属性をコレクションとして取得することができます。 コレクションに対して反復処理を行う必要がある場合は、コレクションを取得すると便利です。 要素のすべての属性が必要な場合は、要素の **Attributes** プロパティを使用して、すべての属性をコレクションに取得できます。 + +## コレクションへのすべての属性の取得 + 要素ノードのすべての属性をコレクションに取得するには、**XmlElement.Attributes** プロパティを呼び出します。 **XmlElement.Attributes** プロパティにより、要素のすべての属性を含む **XmlAttributeCollection** を取得できます。 **XmlAttributeCollection** クラスは **XmlNamedNode** マップから継承されます。 このため、コレクションで使用できるメソッドとプロパティには、**ItemOf** プロパティや **Append** メソッドのような **XmlAttributeCollection** クラスに固有のメソッドやプロパティだけでなく、名前付きノード マップで使用できるメソッドとプロパティも含まれます。 属性コレクション内の各項目は、**XmlAttribute** ノードを表します。 要素の属性の数を調べるには、**XmlAttributeCollection** を取得し、**Count** プロパティを使用して、そのコレクションに含まれる **XmlAttribute** ノードの数を調べます。 + + 属性コレクションを取得し、**Count** メソッドをループ インデックスとして使用して、コレクションに対して反復処理を行うコード サンプルを次に示します。 このコードは、その後、コレクションから属性を 1 つ取得して、その値を表示します。 + +```vb +Imports System +Imports System.IO +Imports System.Xml + +Public Class Sample + + Public Shared Sub Main() + + Dim doc As XmlDocument = New XmlDocument() + doc.LoadXml("" & _ + "The Handmaid's Tale" & _ + "14.95" & _ + "") + + ' Move to an element. + Dim myElement As XmlElement = doc.DocumentElement + + ' Create an attribute collection from the element. + Dim attrColl As XmlAttributeCollection = myElement.Attributes + + ' Show the collection by iterating over it. + Console.WriteLine("Display all the attributes in the collection...") + Dim i As Integer + For i = 0 To attrColl.Count - 1 + Console.Write("{0} = ", attrColl.ItemOf(i).Name) + Console.Write("{0}", attrColl.ItemOf(i).Value) + Console.WriteLine() + Next + + ' Retrieve a single attribute from the collection; specifically, the + ' attribute with the name "misc". + Dim attr As XmlAttribute = attrColl("misc") + + ' Retrieve the value from that attribute. + Dim miscValue As String = attr.InnerXml + + Console.WriteLine("Display the attribute information.") + Console.WriteLine(miscValue) + + End Sub +End Class +``` + +```csharp +using System; +using System.IO; +using System.Xml; + +public class Sample +{ + + public static void Main() + { + XmlDocument doc = new XmlDocument(); + doc.LoadXml("" + + "The Handmaid's Tale" + + "14.95" + + ""); + + // Move to an element. + XmlElement myElement = doc.DocumentElement; + + // Create an attribute collection from the element. + XmlAttributeCollection attrColl = myElement.Attributes; + + // Show the collection by iterating over it. + Console.WriteLine("Display all the attributes in the collection..."); + for (int i = 0; i < attrColl.Count; i++) + { + Console.Write("{0} = ", attrColl[i].Name); + Console.Write("{0}", attrColl[i].Value); + Console.WriteLine(); + } + + // Retrieve a single attribute from the collection; specifically, the + // attribute with the name "misc". + XmlAttribute attr = attrColl["misc"]; + + // Retrieve the value from that attribute. + String miscValue = attr.InnerXml; + + Console.WriteLine("Display the attribute information."); + Console.WriteLine(miscValue); + + } +} +``` + + この例を実行すると、次の出力が表示されます。 + + **出力** + + コレクション内のすべての属性を表示します。 + +``` +genre = novel +ISBN = 1-861001-57-5 +misc = sale item +Display the attribute information. +sale item +``` + + 属性コレクションの情報は、名前またはインデックス番号によって取得できます。 上の例では、名前を指定してデータを取得しています。 次の例では、インデックス番号を指定してデータを取得します。 + + **XmlAttributeCollection** はコレクションであり、名前またはインデックスを使って反復処理ができるため、次の例では、ゼロベースのインデックスを使用してコレクションの最初の属性を選択しています。入力には、**baseuri.xml** というファイルを使用しています。 + +### 入力 + +``` + + + Pride And Prejudice + +``` + +```vb +Option Explicit On +Option Strict On + +Imports System +Imports System.IO +Imports System.Xml + +Public Class Sample + + Public Shared Sub Main() + ' Create the XmlDocument. + Dim doc As New XmlDocument() + doc.Load("http://localhost/baseuri.xml") + + ' Display information on the attribute node. The value + ' returned for BaseURI is 'http://localhost/baseuri.xml'. + Dim attr As XmlAttribute = doc.DocumentElement.Attributes(0) + Console.WriteLine("Name of the attribute: {0}", attr.Name) + Console.WriteLine("Base URI of the attribute: {0}", attr.BaseURI) + Console.WriteLine("The value of the attribtue: {0}", attr.InnerText) + End Sub 'Main +End Class 'Sample +``` + +```csharp +using System; +using System.IO; +using System.Xml; + +public class Sample +{ + public static void Main() + { + // Create the XmlDocument. + XmlDocument doc = new XmlDocument(); + + doc.Load("http://localhost/baseuri.xml"); + + // Display information on the attribute node. The value + // returned for BaseURI is 'http://localhost/baseuri.xml'. + XmlAttribute attr = doc.DocumentElement.Attributes[0]; + Console.WriteLine("Name of the attribute: {0}", attr.Name); + Console.WriteLine("Base URI of the attribute: {0}", attr.BaseURI); + Console.WriteLine("The value of the attribtue: {0}", attr.InnerText); + } +} +``` + +## 個別の属性ノードの取得 + 要素から属性ノードを 1 つ取得するには、 メソッドを使用します。 このメソッドは、**XmlAttribute** 型のオブジェクトを返します。 **XmlAttribute** の取得後は、[XmlAttribute](frlrfsystemxmlxmlattributeclasstopic) クラスのすべてのメソッドとプロパティを使用できます。たとえば、**OwnerElement** で、どの要素に所属しているかを調べることができます。 + +```vb +Imports System +Imports System.IO +Imports System.Xml + +Public Class Sample + + Public Shared Sub Main() + + Dim doc As XmlDocument = New XmlDocument() + doc.LoadXml("" & _ + "The Handmaid's Tale" & _ + "14.95" & _ + "") + + ' Move to an element. + Dim root As XmlElement + root = doc.DocumentElement + + ' Get an attribute. + Dim attr As XmlAttribute + attr = root.GetAttributeNode("ISBN") + + ' Display the value of the attribute. + Dim attrValue As String + attrValue = attr.InnerXml + Console.WriteLine(attrValue) + + End Sub +End Class +``` + +```csharp +using System; +using System.IO; +using System.Xml; + + public class Sample + { + public static void Main() + { + XmlDocument doc = new XmlDocument(); + doc.LoadXml("" + + "The Handmaid's Tale" + + "14.95" + + ""); + + // Move to an element. + XmlElement root = doc.DocumentElement; + + // Get an attribute. + XmlAttribute attr = root.GetAttributeNode("ISBN"); + + // Display the value of the attribute. + String attrValue = attr.InnerXml; + Console.WriteLine(attrValue); + + } +} +``` + + 前の例で示したように、属性コレクションから 1 つの属性ノードを取得することもできます。 インデックス番号を指定して、XML ドキュメント ツリーのルートから 1 つの属性を取得する処理を 1 行で記述したコード サンプルを次に示します。**DocumentElement** プロパティを使用します。 + +``` +XmlAttribute attr = doc.DocumentElement.Attributes[0]; +``` + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md new file mode 100644 index 00000000000..a07f7ec851a --- /dev/null +++ b/docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md @@ -0,0 +1,202 @@ +--- +title: "厳密に型指定された XML データへの XPathNavigator を使用したアクセス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 898e0f52-8a7c-4d1f-afcd-6ffb28b050b4 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# 厳密に型指定された XML データへの XPathNavigator を使用したアクセス +XPath 2.0 データ モデルの一例として、 クラスは、共通言語ランタイム \(CLR\) 型に対応した厳密に型指定されたデータを含むことができます。 XPath 2.0 のデータ モデルに従い、要素と属性のみが厳密に型指定されたデータを含むことができます。 クラスは、データ型を変換する機構に加えて、厳密に型指定されたデータとして または オブジェクト内のデータにアクセスする機構を提供します。 + +## XPathNavigator が公開する型情報 + DTD、XML スキーマ定義言語 \(XSD\) のスキーマ、または他の機構を使用して処理しない限り、XML 1.0 データに型はありません。 XML 要素や属性と関連付けられる型情報のカテゴリは多数あります。 + +- 単純 CLR 型 : XML スキーマ言語で共通言語ランタイム \(CLR\) 型を直接サポートするものはありません。 要素や属性の単純コンテンツを最適な CLR 型として見ることができると便利なので、コンテンツをさらに適切な型に細分化する追加のスキーマ情報がない場合、すべての単純コンテンツは として型指定できます。 プロパティを使用することにより、要素と属性の単純コンテンツに最も一致する CLR 型を見つけることができます。 スキーマの組み込み型から CLR 型への対応の詳細については、「[System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)」を参照してください。 + +- 単純 \(CLR\) 型のリスト : 単純コンテンツを持つ要素と属性には、空白で区切られた値のリストを含めることができます。 値は XML スキーマで "リスト型" として指定します。XML スキーマがない場合、こうした単純型は 1 つのテキスト ノードとして取り扱われます。 XML スキーマが使用可能な場合、この単純コンテンツは、各項が CLR オブジェクトの 1 つのコレクションに対応した単純型を持つ、これ以上分割不可能な一連の値として取り扱うことができます。 スキーマの組み込み型から CLR 型への対応の詳細については、「[System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)」を参照してください。 + +- 型指定された値 : スキーマにより検証された単純型の属性と要素は、型指定された値を持ちます。 この値は、数値型、文字列型、または日付型などのプリミティブ型です。 XSD のすべての組み込みの単純型は、単に としてでなく、さらに適当な型としてノードの値にアクセスできる CLR 型と対応をとることができます。 属性や子要素を持つ要素は複合型と考えられます。 単純コンテンツ \(子としてテキスト ノードのみ\) を持つ複合型の型指定された値は、そのコンテンツの単純型のそれと同じです。 複合コンテンツ \(1 つ以上の子要素\) を持つ複合型の型指定された値は、 として返されたすべての子テキスト ノードの連結された文字列値です。 スキーマの組み込み型から CLR 型への対応の詳細については、「[System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)」を参照してください。 + +- スキーマ言語固有の型名 : 多くの場合、ノードの値へのアクセスに使用されるのは \(外部スキーマを適用したため設定された\) CLR 型です。 しかし、XML ドキュメントに適用された特定のスキーマに関連付けられた型を調べる必要がある場合もあります。 たとえば、XML ドキュメントを検索して、添付されたスキーマに従って "PurchaseOrder" 型の内容を持つすべての要素を抽出したいが場合があります。 このような型情報はスキーマ検証の結果としてのみ設定され、この情報には クラスの プロパティと プロパティを通じてアクセスできます。 詳細については、下の「スキーマ検証後の情報セット \(PSVI\)」のセクションを参照してください。 + +- スキーマ言語固有の型のリフレクション : また、XML ドキュメントに適用されたスキーマ固有の型の詳細をさらに取得する必要が生じる場合があります。 たとえば、何か特別な計算をするために、XML ファイルの読み込み中に XML ドキュメント中の有効な各ノードについて `maxOccurs` 属性を抽出する必要がある場合があります。 この情報はスキーマ検証を通じてのみ設定されるので、 クラスの プロパティを通じてアクセスされます。 詳細については、下の「スキーマ検証後の情報セット \(PSVI\)」のセクションを参照してください。 + +## XPathNavigator の型指定されたアクセサー + 次の表に、ノードの型情報へのアクセスに使用できる クラスの各種プロパティとメソッドを示します。 + +|プロパティ|説明| +|-----------|--------| +||有効な場合、ノードの XML スキーマ型の情報を含みます。| +||検証後に追加されたノードのスキーマ検証後の情報セットを含みます。 これには、検証情報に加えて、XML スキーマ型情報も含まれます。| +||ノードの型指定された値の CLR 型。| +||型がノードの XML スキーマ型に最も一致する 1 つ以上の CLR 値としてのノードの内容。| +||XPath 2.0 の `xs:boolean` のキャスト規則に従って、 値にキャストされた現在のノードの 値。| +||XPath 2.0 の `xs:datetime` のキャスト規則に従って、 値にキャストされた現在のノードの 値。| +||XPath 2.0 の `xsd:double` のキャスト規則に従って、 値にキャストされた現在のノードの 値。| +||XPath 2.0 の `xs:integer` のキャスト規則に従って、 値にキャストされた現在のノードの 値。| +||XPath 2.0 の `xs:integer` のキャスト規則に従って、 値にキャストされた現在のノードの 値。| +||XPath 2.0 のキャスト規則に従って、変換先の型にキャストされたノードのコンテンツ。| + + スキーマの組み込み型から CLR 型への対応の詳細については、「[System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)」を参照してください。 + +## スキーマ検証後の情報セット \(PSVI\) + XML スキーマ プロセッサは、XML 情報セットを入力として受け入れ、それをスキーマ検証後の情報セット \(PSVI\) に変換します。 PSVI は、元の入力 XML 情報セットに新しい情報項目を追加し、新しいプロパティを追加したものです。 によって公開される PSVI 中の XML 情報セットに追加される情報には 3 つの広範なクラスがあります。 + +1. 検証結果 : 要素または属性が問題なく検証されたかどうかの情報。 これは、 クラスの プロパティの プロパティによって公開されます。 + +2. 既定の情報 : 要素または属性の値が、スキーマに定義された既定値により得られたものかどうかを示します。 これは、 クラスの プロパティの プロパティによって公開されます。 + +3. 型のコメント : スキーマ コンポーネントへの参照。これは型の定義や、要素と属性の宣言である場合があります。 ノードが有効な場合、 プロパティは、ノード固有の型情報を含みます。 検証された後に編集されているときなど、ノードの有効性が不明な場合は、 プロパティが `null` に設定されますが、この場合でも、 クラスの プロパティの各種プロパティから型情報を入手できます。 + + 次の例は、 によって公開されるスキーマ検証後の情報セット内の情報の使用方法を示します。 + +```vb +Dim settings As XmlReaderSettings = New XmlReaderSettings() +settings.Schemas.Add("http://www.contoso.com/books", "books.xsd") +settings.ValidationType = ValidationType.Schema + +Dim reader As XmlReader = XmlReader.Create("books.xml", settings) + +Dim document As XmlDocument = New XmlDocument() +document.Load(reader) +Dim navigator As XPathNavigator = document.CreateNavigator() +navigator.MoveToChild("books", "http://www.contoso.com/books") +navigator.MoveToChild("book", "http://www.contoso.com/books") +navigator.MoveToChild("published", "http://www.contoso.com/books") + +Console.WriteLine(navigator.SchemaInfo.SchemaType.Name) +Console.WriteLine(navigator.SchemaInfo.Validity) +Console.WriteLine(navigator.SchemaInfo.SchemaElement.MinOccurs) +``` + +```csharp +XmlReaderSettings settings = new XmlReaderSettings(); +settings.Schemas.Add("http://www.contoso.com/books", "books.xsd"); +settings.ValidationType = ValidationType.Schema; + +XmlReader reader = XmlReader.Create("books.xml", settings); + +XmlDocument document = new XmlDocument(); +document.Load(reader); +XPathNavigator navigator = document.CreateNavigator(); +navigator.MoveToChild("books", "http://www.contoso.com/books"); +navigator.MoveToChild("book", "http://www.contoso.com/books"); +navigator.MoveToChild("published", "http://www.contoso.com/books"); + +Console.WriteLine(navigator.SchemaInfo.SchemaType.Name); +Console.WriteLine(navigator.SchemaInfo.Validity); +Console.WriteLine(navigator.SchemaInfo.SchemaElement.MinOccurs); +``` + + この例は、`books.xml` ファイルを入力として使用します。 + +``` + + + Title + 10.00 + 2003-12-31 + + +``` + + また、`books.xsd` スキーマも入力として使用します。 + +``` + + + + + + + + + + + + + + + + + + + + + +``` + +## ValueAs プロパティによる型指定された値の取得 + ノードの型指定された値は、 プロパティにアクセスして取得することができます。 場合により、ノードの型指定された値を別の型に変換する必要がある場合があります。 一般的な例として、XML ノードから数値を取得する場合があります。 たとえば、次のような未検証で型指定されていない XML ドキュメントがあるとします。 + +``` + + + Title + 10.00 + 2003-12-31 + + +``` + + が `price` 要素上に位置している場合、 プロパティは `null` となり、 プロパティは であり、 プロパティは文字列 `10.00` です。 + + しかし、、または のメソッドとプロパティを使用して、値を数値として抽出することは可能です。 次の例では、 メソッドを使用してキャストを実行します。 + +```vb +Dim document As New XmlDocument() +document.Load("books.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() +navigator.MoveToChild("books", "") +navigator.MoveToChild("book", "") +navigator.MoveToChild("price", "") + +Dim price = navigator.ValueAs(GetType(Decimal)) +Dim discount As Decimal = 0.2 + +Console.WriteLine("The price of the book has been dropped 20% from {0:C} to {1:C}", navigator.Value, (price - price * discount)) +``` + +```csharp +XmlDocument document = new XmlDocument(); +document.Load("books.xml"); +XPathNavigator navigator = document.CreateNavigator(); +navigator.MoveToChild("books", ""); +navigator.MoveToChild("book", ""); +navigator.MoveToChild("price", ""); + +Decimal price = (decimal)navigator.ValueAs(typeof(decimal)); + +Console.WriteLine("The price of the book has been dropped 20% from {0:C} to {1:C}", navigator.Value, (price - price * (decimal)0.20)); +``` + + スキーマの組み込み型から CLR 型への対応の詳細については、「[System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md)」を参照してください。 + +## 参照 + + + + [System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md) + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md) + [XPathNavigator を使用する属性と名前空間のナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md) + [XpathNavigator を使用した XML データの抽出](../../../../docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md new file mode 100644 index 00000000000..99523338eda --- /dev/null +++ b/docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md @@ -0,0 +1,51 @@ +--- +title: "XPathNavigator による XML データへのアクセス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: c57b46e6-5c77-408f-bc4e-67a5dcc9cc05 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathNavigator による XML データへのアクセス + クラスは、 オブジェクトまたは オブジェクト内でのノード間の移動、XML データの抽出、および厳密に型指定された XML データにアクセスするメソッドを提供します。 + +## このセクションの内容 + [XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md) + オブジェクトまたは オブジェクト内で、ノードの移動に使用される クラスでのノード セットの移動メソッドについて説明します。 + + [XPathNavigator を使用する属性と名前空間のナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md) + クラスにおける属性ノードと名前空間ノードの移動メソッドについて説明します。 + + [XpathNavigator を使用した XML データの抽出](../../../../docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md) + オブジェクトまたは オブジェクトから XML データを抽出する各種のメソッドについて説明します。 + + [厳密に型指定された XML データへの XPathNavigator を使用したアクセス](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) + オブジェクトまたは オブジェクト内で クラスを使用して、厳密に型指定された XML データにアクセスする方法について説明します。 + + [ユーザー定義の関数と変数](../../../../docs/standard/data/xml/user-defined-functions-and-variables.md) + カスタム クラス を、拡張関数および変数をサポートする インターフェイスおよび インターフェイスと共に実装する方法について説明します。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md) + [XPathNavigator を使用した XML データの選択、評価、および照合](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データの編集](../../../../docs/standard/data/xml/editing-xml-data-using-xpathnavigator.md) + [XPathNavigator を使用したスキーマ検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md b/docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md new file mode 100644 index 00000000000..8c883fa44dd --- /dev/null +++ b/docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md @@ -0,0 +1,115 @@ +--- +title: "XPathNavigator を使用する属性と名前空間のナビゲーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 23975f88-e0af-4b88-93de-9e20e11880ad +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathNavigator を使用する属性と名前空間のナビゲーション + クラスは、2 セットの移動メソッドを提供します。「[XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)」に記載されている最初のセットは または オブジェクト内のノード セットの移動に使用されます。 ここに記載されている 2 つ目のセットは、 または オブジェクト内の属性ノードおよび名前空間ノードの移動に使用されます。 + +## 属性ノードの移動 + 属性は要素のプロパティであり、要素の子ではありません。 兄弟ノード、親ノード、および子ノードの移動には クラスのメソッドが使用されるため、この区別が重要になります。 + + たとえば、 メソッドは、要素から属性への移動や属性間の移動には使われません。 代わりに、属性には異なる移動メソッドがあります。 + + 以下は、 クラスの属性移動メソッドです。 + +- + +- + +- + + 現在のノードが要素のとき、その要素に関連付けられている属性があるかどうかを調べるには、 プロパティを使用できます。 要素に属性がある場合は、各種のメソッドで属性にアクセスできます。 要素から 1 つの属性を取り出すには、 メソッドを使用します。 を特定の属性に移動するには、 メソッドを使用します。 メソッドに続けて複数の メソッド呼び出しを使用し、要素の各属性について繰り返すこともできます。 + +> [!NOTE] +> オブジェクトが属性ノードまたは名前空間ノードの位置にある場合、、および メソッドは常に `false` を返し、 の位置には影響を与えません。 この例外は、、および メソッドです。 + +## 名前空間ノードの移動 + 各要素は関連する名前空間ノードの集合を持ちます。名前空間ノードは、要素のスコープ内にある名前空間 URI に関連付けられた異なる名前空間プレフィックス \(`http://www.w3.org/XML/1998/namespace` に関連付けられた XML プレフィックスを含みます。XML プレフィックスはすべての XML ドキュメントで暗黙に宣言されます\) それぞれについて 1 つ、さらに要素のスコープ内に既定の名前空間がある場合は、それに 1 つあります。 要素はこれら名前空間ノードの親です。ただし、名前空間ノードはその親要素の子ではありません。 + + 属性の場合と同様に、 および メソッドは、要素から名前空間ノードへの移動や名前空間ノード間の移動には使われません。 代わりに、名前空間ノードには異なる移動メソッドがあります。 + + 以下は、 クラスの名前空間移動メソッドです。 + +- + +- + +- + + XML ドキュメント内のすべての要素には常に少なくとも 1 つの名前空間ノードがあります。 これは、プレフィックス `xml` および名前空間 URI `http://www.w3.org/XML/1998/namespace` を持つ名前空間ノードです。 特定のプレフィックスを指定してスコープ内の名前空間 URI を取り出すには、 メソッドを使用します。 オブジェクトを特定の名前空間ノードに移動するには、 メソッドを使用します。 メソッドに続けて複数の メソッド呼び出しを使用し、要素のスコープ内の各名前空間ノードについて繰り返すこともできます。 + +> [!NOTE] +> オブジェクトが属性ノードまたは名前空間ノードの位置にある場合、、および メソッドは常に `false` を返し、 の位置には影響を与えません。 この例外は、、および メソッドです。 + +### XPathNamespaceScope 列挙体 + 名前空間ノードの移動時には、 および メソッドを パラメーターを使用して呼び出すことができます。 これらのメソッドは、パラメーターなしで呼び出された場合と異なる動作をします。 列挙体には、、または の値があります。 + + 次の例は、XML ドキュメント内のさまざまなスコープで および メソッドによって返される値を表示します。 + +``` + + + + + +``` + + 名前空間の順序 \( メソッドとそれに続く一連の メソッド呼び出し後に が位置する名前空間\) は次のとおりです。 + +- `element2` の位置にある場合 : `xmlns:books="http://www.contoso.com/books"`、`xmlns="http://www.contoso.com"`、`xmlns:xml="http://www.w3.org/XML/1998/namespace"`。 + +- `element1` の位置にある場合 : `xmlns:books="http://www.contoso.com/books"`、`xmlns="http://www.contoso.com"`、`xmlns:xml="http://www.w3.org/XML/1998/namespace"`。 + +- `root` の位置にある場合 : `xmlns:xml="http://www.w3.org/XML/1998/namespace".` + +> [!NOTE] +> クラスは、ドキュメントの逆順で名前空間ノードを返します。 したがって、 は原則的に、現在のスコープ内の最後の名前空間ノードに移動します。 + + 次の例は、XML ドキュメント内のさまざまなスコープで、 列挙体が指定された および メソッドによって返される値を示します。 + +``` + + + + + +``` + + `child2` の位置にある場合、名前空間の順序 \( メソッドとそれに続く一連の メソッド呼び出し後に が位置する名前空間\) は次のとおりです。 + +- : `xmlns:c="urn:c"`、`xmlns:a="urn:a"`、`xmlns=""`、`xmlns:b="http://www.contoso.com/b"`、`xmlns:a="http://www.contoso.com/a"`、`xmlns="http://www.contoso.com"`、および `xmlns:xml="http://www.w3.org/XML/1998/namespace"`。 + +- : `xmlns:c="urn:c"`、`xmlns:a="urn:a"`、`xmlns=""`、`xmlns:b="http://www.contoso.com/b"`、`xmlns:a="http://www.contoso.com/a"`、および `xmlns="http://www.contoso.com"`。 + +- : `xmlns:c="urn:c"`. + +> [!NOTE] +> クラスは、ドキュメントの逆順で名前空間ノードを返します。 したがって、 は原則的に、現在のスコープ内の最後の名前空間ノードに移動します。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md) + [XpathNavigator を使用した XML データの抽出](../../../../docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md) + [厳密に型指定された XML データへの XPathNavigator を使用したアクセス](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/building-xml-schemas.md b/docs/standard/data/xml/building-xml-schemas.md new file mode 100644 index 00000000000..ec347804029 --- /dev/null +++ b/docs/standard/data/xml/building-xml-schemas.md @@ -0,0 +1,103 @@ +--- +title: "XML スキーマの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 8a5ea56c-0140-4b51-8997-875ae6a8e0cb +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XML スキーマの作成 + 名前空間のクラスは、W3C \(World Wide Web Consortium\) 勧告『XML Schema』で定義された構造に割り当てられ、メモリ内に XML スキーマを作成する場合に使用できます。 + +## XML スキーマの作成 + 以下のコード サンプルでは、SOM API を使用してカスタム XML スキーマをメモリ内に作成します。 + +### 要素と属性の作成 + このコード サンプルでは、カスタム スキーマを最初から作成するため、子要素、属性、およびそれらに対応する型を作成した後で最上位要素を作成します。 + + 以下のコード サンプルでは、SOM の クラスおよび クラスを使用して、カスタム スキーマの `CustomerId` 属性に加え、`FirstName` 要素および `LastName` 要素を作成します。 XML スキーマの `` 要素および `` 要素の name 属性に対応する クラスおよび クラスの プロパティを除いて、このスキーマで使用できる他のすべての属性 \(`defaultValue`、`fixedValue`、`form` など\) には、 クラスおよび クラスに対応するプロパティが存在します。 + + [!code-cpp[XmlSchemaCreateExample#2](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaCreateExample/CPP/XmlSchemaCreateExample.cpp#2)] + [!code-csharp[XmlSchemaCreateExample#2](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaCreateExample/CS/XmlSchemaCreateExample.cs#2)] + [!code-vb[XmlSchemaCreateExample#2](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaCreateExample/VB/XmlSchemaCreateExample.vb#2)] + +### スキーマの型の作成 + 要素および属性のコンテンツは、その型によって定義されます。 組み込みのスキーマの型を持つ要素と属性を作成するには、 クラスを使用する組み込みの修飾名を使用して、 クラスまたは クラスの プロパティを設定します。 要素と属性のユーザー定義型を作成するには、 または クラスを使用して単純型または複合型を新しく作成します。 + +> [!NOTE] +> 要素または属性の匿名の子である名前のない単純型または複合型 \(属性に適用されるのは単純型のみ\) を作成するには、 クラスまたは クラスの プロパティではなく、 クラスまたは クラスの プロパティを設定します。 + + XML スキーマを使用すると、匿名の単純型と名前付きの単純型の両方を、他の単純型 \(組み込み型またはユーザー定義型\) から制限付きで派生させるか、または、他の単純型のリストまたは和集合として作成することができます。 クラスを使用して単純型を作成する場合には、組み込みの `xs:string` 型を制限します。 また、 または クラスを使用すると、リストまたは和集合の型を作成できます。 プロパティは、単純型の制限、リスト、または和集合を表します。 + + 以下のコード サンプルでは、`FirstName` 要素の型は組み込み型の `xs:string`、`LastName` 要素の型は組み込み型 `xs:string` の制限となる名前付き単純型 \(`MaxLength` ファセット値 20\)、`CustomerId` 属性の型は組み込み型 `xs:positiveInteger` です。 `Customer` 要素は匿名の複合型で、そのパーティクルは `FirstName` 要素および `LastName` 要素のシーケンスとなり、その属性には `CustomerId` 属性が含まれます。 + +> [!NOTE] +> また、複合型のパーティクルとして クラスまたは クラスを使用して、`` または `` セマンティクスをレプリケートすることもできます。 + + [!code-cpp[XmlSchemaCreateExample#3](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaCreateExample/CPP/XmlSchemaCreateExample.cpp#3)] + [!code-csharp[XmlSchemaCreateExample#3](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaCreateExample/CS/XmlSchemaCreateExample.cs#3)] + [!code-vb[XmlSchemaCreateExample#3](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaCreateExample/VB/XmlSchemaCreateExample.vb#3)] + +### スキーマの作成とコンパイル + この時点で、子要素と属性 \(それらに対応する型\) および最上位の `Customer` 要素が SOM API を使用してメモリ内に作成されています。 以下のコード サンプルでは、 クラスを使用してスキーマ要素が作成され、 プロパティを使用して最上位の要素と型が追加されます。また、 クラスを使用して完全なスキーマがコンパイルされて、コンソールに出力されます。 + + [!code-cpp[XmlSchemaCreateExample#4](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaCreateExample/CPP/XmlSchemaCreateExample.cpp#4)] + [!code-csharp[XmlSchemaCreateExample#4](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaCreateExample/CS/XmlSchemaCreateExample.cs#4)] + [!code-vb[XmlSchemaCreateExample#4](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaCreateExample/VB/XmlSchemaCreateExample.vb#4)] + + メソッドは、XML スキーマの規則を基準としてカスタム スキーマを検証し、スキーマ コンパイル後のプロパティを使用できるようにします。 + +> [!NOTE] +> SOM API のスキーマ コンパイル後のプロパティは、スキーマ検証後の情報セットとは異なります。 + + に追加される は、コールバック メソッド `ValidationCallback` を呼び出してスキーマ検証時の警告およびエラーを処理するデリゲートになります。 + + 以下に、完全なコード サンプルおよびコンソールに出力されるカスタム スキーマを示します。 + + [!code-cpp[XmlSchemaCreateExample#1](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaCreateExample/CPP/XmlSchemaCreateExample.cpp#1)] + [!code-csharp[XmlSchemaCreateExample#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaCreateExample/CS/XmlSchemaCreateExample.cs#1)] + [!code-vb[XmlSchemaCreateExample#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaCreateExample/VB/XmlSchemaCreateExample.vb#1)] + +``` + + + + + + + + + + + + + + + + + +``` + +## 参照 + [XML スキーマ オブジェクト モデルの概要](../../../../docs/standard/data/xml/xml-schema-object-model-overview.md) + [XML スキーマの読み取りと書き込み](../../../../docs/standard/data/xml/reading-and-writing-xml-schemas.md) + [XML スキーマの走査](../../../../docs/standard/data/xml/traversing-xml-schemas.md) + [XML スキーマの編集](../../../../docs/standard/data/xml/editing-xml-schemas.md) + [XML スキーマのインクルードまたはインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマのコンパイル後の情報セット](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) \ No newline at end of file diff --git a/docs/standard/data/xml/changing-namespace-declarations-in-an-xml-document.md b/docs/standard/data/xml/changing-namespace-declarations-in-an-xml-document.md new file mode 100644 index 00000000000..14fe2c4d617 --- /dev/null +++ b/docs/standard/data/xml/changing-namespace-declarations-in-an-xml-document.md @@ -0,0 +1,54 @@ +--- +title: "XML ドキュメントの名前空間宣言の変更 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: a2758f40-e497-4964-8d8d-1bb68af14dcd +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XML ドキュメントの名前空間宣言の変更 +**XmlDocument** は、名前空間宣言と **xmlns** 属性をドキュメント オブジェクト モデルの一部として公開します。 名前空間宣言と **xmlns** 属性は **XmlDocument** に格納されるため、ドキュメントの保存時にはこれらの属性の場所を保持できます。 これらの属性を変更しても、ツリーに既に存在する別のノードの **Name**、**NamespaceURI**、および **Prefix** プロパティは影響を受けません。 たとえば、次のドキュメントを読み込むと、`test` 要素の **NamespaceURI** は `123.` になります。 + +``` + +``` + + その後、次のように `xmlns` 要素を削除しても、`test` 要素の **NamespaceURI** は `123` のまま変わりません。 + +```vb +doc.documentElement.RemoveAttribute("xmlns") +``` + +```csharp +doc.documentElement.RemoveAttribute("xmlns"); +``` + + 同様に、次のように別の `xmlns` 属性を `doc` 要素に追加しても、`test` 要素の **NamespaceURI** は `123` のまま変わりません。 + +```vb +doc.documentElement.SetAttribute("xmlns","456"); +``` + +```csharp +doc.documentElement.SetAttribute("xmlns","456"); +``` + + つまり、`xmlns` 属性を変更しても、**XmlDocument** オブジェクトを保存して再び読み込むまで、プロパティは影響を受けません。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/changing-namespace-prefix-properties.md b/docs/standard/data/xml/changing-namespace-prefix-properties.md new file mode 100644 index 00000000000..1247c0b4f70 --- /dev/null +++ b/docs/standard/data/xml/changing-namespace-prefix-properties.md @@ -0,0 +1,76 @@ +--- +title: "名前空間プレフィックス プロパティの変更 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: d5c87cbe-4d69-429f-aad5-3103c2ca2770 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 名前空間プレフィックス プロパティの変更 +**XmlNode** クラスを使用すると、特定のノードに関連付けられた名前空間プレフィックスを変更できます。 たとえば、要素のプレフィックスを変更するコードを次に示します。 + +```vb +Dim doc as XmlDocument = new XmlDocument() +doc.LoadXml("") +Dim e as XmlElement = doc.DocumentElement +e.Prefix = "b" +Console.WriteLine(doc.InnerXml) +``` + +```csharp +XmlDocument doc = new XmlDocument(); +doc.LoadXml(""); +XmlElement e = doc.DocumentElement; +e.Prefix = "b"; +Console.WriteLine(doc.InnerXml); +``` + + **出力** + +``` + +``` + + ノードのプレフィックスを変更しても、名前空間は変更されません。 名前空間を設定できるのは、ノードを作成するときだけです。 ツリーを永続化するときには、設定したプレフィックスに適合するように新しい名前空間の属性も永続化されます。 新しい名前空間を作成できない場合は、プレフィックスが変更され、ノードにはそのローカル名と名前空間が保持されます。 名前空間の属性を追加する例を次に示します。 + +```vb +Dim doc as XmlDocument = new XmlDocument() +doc.LoadXml("") +Dim e as XmlElement = doc.DocumentElement +e.Prefix = "a" +Console.WriteLine(doc.InnerXml) +``` + +```csharp +XmlDocument doc = new XmlDocument(); +doc.LoadXml(""); +XmlElement e = doc.DocumentElement; +e.Prefix = "a"; +Console.WriteLine(doc.InnerXml); +``` + + **出力** + +``` + +``` + + **doc.InnerXml** の呼び出しの結果としてツリーが文字列に永続化されるとき、`test` 要素の名前空間を保持するために `xmlns:a='123'` という属性が追加されます。 `xmlns:a` の元の値は `'123'` だったので、そのまま `'123'` として残ります。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/compiled-xpath-expressions.md b/docs/standard/data/xml/compiled-xpath-expressions.md new file mode 100644 index 00000000000..42500f4ac69 --- /dev/null +++ b/docs/standard/data/xml/compiled-xpath-expressions.md @@ -0,0 +1,137 @@ +--- +title: "コンパイルされた XPath 式 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: e25dd95f-b64c-4d8b-a3a4-379e1aa0ad55 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# コンパイルされた XPath 式 + オブジェクトは、 クラスの静的 メソッドまたは クラスの メソッドから返されるコンパイル済み XPath クエリを表します。 + +## XPathExpression クラス + オブジェクトにより表されるコンパイル済み XPath クエリは、同じ XPath クエリが複数回使用されるときに有用です。 + + たとえば、 メソッドを複数回呼び出すとき、毎回 XPath クエリを表す文字列を使用する代わりに、再使用とパフォーマンスの向上のために、 クラスの メソッド、または クラスの メソッドを使用して、XPath クエリを オブジェクトにコンパイルしてキャッシュします。 + + いったんコンパイルされると、 オブジェクトは、XPath クエリから返される型に応じて、次の クラス メソッドの入力として使用することができます。 + +- + +- + +- + +- + +- + + 次の表では、W3C XPath の戻り型、それに等価の Microsoft .NET Framework 型、および戻り型に応じて オブジェクトで使用できるメソッドについて説明します。 + +|W3C XPath の戻り型|.NET Framework の等価の型|説明|メソッド| +|--------------------|--------------------------|--------|----------| +|`Node set`||重複がなく順序付けされていない、ドキュメント順に作成されたノードのコレクション。| または| +|`Boolean`||`true` または `false` の値。| または

| +|`Number`||浮動小数点数。|| +|`String`||UCS 文字のシーケンス。|| + +> [!NOTE] +> メソッドは、XPath 式をパラメーターとして受け取ります。 メソッドは W3C XPath の戻り型の 1 つではなく、1 つの オブジェクトを返します。 + +### 戻り型のプロパティ + XPath クエリが オブジェクトにコンパイルされた後、 オブジェクトの プロパティを使用して、XPath クエリで何が返されるかを知ることができます。 + + プロパティは、W3C XPath 戻り値を表す、次の 列挙値の 1 つを返します。 + +- + +- + +- + +- + +- + +- + +- + + 次の例は、 オブジェクトを使用して、`books.xml` ファイルから 1 つの数値とノード セットを返します。 各 オブジェクトの プロパティと共に、 および メソッドからの結果がコンソールに出力されます。 + +```vb +Dim document As XPathDocument = New XPathDocument("books.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() + +' Returns a number. +Dim query1 As XPathExpression = navigator.Compile("bookstore/book/price/text()*10") +Console.WriteLine(query1.ReturnType) + +Dim number As Double = CType(navigator.Evaluate(query1), Double) +Console.WriteLine(number) + +' Returns a node set. +Dim query2 As XPathExpression = navigator.Compile("bookstore/book/price") +Console.WriteLine(query2.ReturnType) + +Dim nodes As XPathNodeIterator = navigator.Select(query2) +nodes.MoveNext() +Console.WriteLine(nodes.Current.Value) +``` + +```csharp +XPathDocument document = new XPathDocument("books.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +// Returns a number. +XPathExpression query1 = navigator.Compile("bookstore/book/price/text()*10"); +Console.WriteLine(query1.ReturnType); + +Double number = (Double)navigator.Evaluate(query1); +Console.WriteLine(number); + +// Returns a node set. +XPathExpression query2 = navigator.Compile("bookstore/book/price"); +Console.WriteLine(query2.ReturnType); + +XPathNodeIterator nodes = navigator.Select(query2); +nodes.MoveNext(); +Console.WriteLine(nodes.Current.Value); +``` + + この例は、`books.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#1](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/books.xml#1)] + +### XPath 式のパフォーマンスの向上 + パフォーマンスを向上させるには、クエリで可能な限り特定した XPath 式を使用します。 たとえば、`book` が `bookstore` ノードの子ノードであり `bookstore` ノードが XML ドキュメントで最上位のノードの場合は、XPath 式 `/bookstore/book` を使用すると `//book` を使用した場合より高速です。 `//book` XPath 式は、XML ツリーのすべてのノードをスキャンしてノードとの一致を調べます。 + + さらに、選択基準が単純な場合は クラスが提供するノード セット ナビゲーション メソッドは、 クラスが提供する選択メソッドに比べてパフォーマンスが高いことがあります。 たとえば、現在のノードの最初の子を選択する場合、 メソッドを使用した方が `child::*[1]` XPath 式と メソッドを使用するよりも高速です。 + + クラスのノード セット ナビゲーション メソッドの詳細については「[XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)」を参照してください。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator を使用した XML データの選択](../../../../docs/standard/data/xml/select-xml-data-using-xpathnavigator.md) + [XPathNavigator による Xpath 式の評価](../../../../docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md) + [XPathNavigator によるノードの一致](../../../../docs/standard/data/xml/matching-nodes-using-xpathnavigator.md) + [XPath クエリで認識されるノード型](../../../../docs/standard/data/xml/node-types-recognized-with-xpath-queries.md) + [XPath クエリおよび名前空間](../../../../docs/standard/data/xml/xpath-queries-and-namespaces.md) \ No newline at end of file diff --git a/docs/standard/data/xml/conversion-of-xml-data-types.md b/docs/standard/data/xml/conversion-of-xml-data-types.md new file mode 100644 index 00000000000..d0e54a8eba4 --- /dev/null +++ b/docs/standard/data/xml/conversion-of-xml-data-types.md @@ -0,0 +1,79 @@ +--- +title: "XML データ型の変換 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: a2aa99ba-8239-4818-9281-f1d72ee40bde +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XML データ型の変換 +**XmlConvert** クラスのメソッドのほとんどは、文字列と厳密に型指定された形式との間のデータ変換に使われます。 これらのメソッドはロケールに依存しません。 つまり、変換の実行時にはロケールの設定は考慮されません。 + +## 文字列を型として読み込む + 文字列を読み込んで **DateTime** 型に変換するサンプルを次に示します。 + + 入力として次の XML を使用します。 + + **入力** + +``` +2001-02-27T11:13:23 +``` + + 次のコードは、文字列を **DateTime** 形式に変換します。 + +```vb +reader.ReadStartElement() +Dim vDateTime As DateTime = XmlConvert.ToDateTime(reader.ReadString()) +Console.WriteLine(vDateTime) + +``` + +```csharp +reader.ReadStartElement(); +DateTime vDateTime = XmlConvert.ToDateTime(reader.ReadString()); +Console.WriteLine(vDateTime); +``` + +## 文字列を型として書き込む + **Int32** を読み込んで文字列に変換するサンプルを次に示します。 + + 入力として次の XML を使用します。 + + **入力** + +``` +-2147483648 +``` + + 次のコードは、**Int32** を **String** に変換します。 + +```vb +Dim vInt32 As Int32 = -2147483648 +writer.WriteElementString("TestInt32", XmlConvert.ToString(vInt32)) + +``` + +```csharp +Int32 vInt32=-2147483648; +writer.WriteElementString("TestInt32",XmlConvert.ToString(vInt32)); +``` + +## 参照 + [文字列の .NET Framework データ型への変換](../../../../docs/standard/data/xml/converting-strings-to-dotnet-data-types.md) + [.NET Framework 型の文字列への変換](../../../../docs/standard/data/xml/converting-dotnet-types-to-strings.md) \ No newline at end of file diff --git a/docs/standard/data/xml/converting-dotnet-types-to-strings.md b/docs/standard/data/xml/converting-dotnet-types-to-strings.md new file mode 100644 index 00000000000..d3bba1c2a9f --- /dev/null +++ b/docs/standard/data/xml/converting-dotnet-types-to-strings.md @@ -0,0 +1,39 @@ +--- +title: ".NET Framework 型の文字列への変換 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: dc2e2b65-f623-4dc3-938b-d2a054d6832c +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# .NET Framework 型の文字列への変換 +.NET Framework 型を文字列に変換するには、**ToString** メソッドを使用します。 **ToString** メソッドは、渡された型の文字列表現を返します。 XML スキーマ \(XSD\) 仕様に対応する形式で文字列を返す .NET Framework 型を、次の表に示します。 + +|.NET Framework 型|返される文字列型| +|----------------------|--------------| +|Boolean|"true"、"false"| +|Single.PositiveInfinity|"INF"| +|Single.NegativeInfinity|"\-INF"| +|Double.PositiveInfinity|"INF"| +|Double.NegativeInfinity|"\-INF"| +|DateTime|形式は、yyyy\-MM\-ddTHH:mm:sszzzzzz およびそのサブセットです。| +|Timespan|PnYnMnTnHnMnS の形式。たとえば、`P2Y10M15DT10H30M20S` は 2 年 10 か月 15 日 10 時間 30 分 20 秒の期間です。| + +## 参照 + [XML データ型の変換](../../../../docs/standard/data/xml/conversion-of-xml-data-types.md) + [文字列の .NET Framework データ型への変換](../../../../docs/standard/data/xml/converting-strings-to-dotnet-data-types.md) \ No newline at end of file diff --git a/docs/standard/data/xml/converting-strings-to-dotnet-data-types.md b/docs/standard/data/xml/converting-strings-to-dotnet-data-types.md new file mode 100644 index 00000000000..4a5ec8c514e --- /dev/null +++ b/docs/standard/data/xml/converting-strings-to-dotnet-data-types.md @@ -0,0 +1,148 @@ +--- +title: "文字列の .NET Framework データ型への変換 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 65455ef3-9120-412c-819b-d0f59f88ac09 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 文字列の .NET Framework データ型への変換 +文字列を .NET Framework データ型に変換するには、アプリケーションの要件に適合する **XmlConvert** メソッドを使用します。 **XmlConvert** クラスで利用可能なすべての変換メソッドの一覧については、「[XmlConvert メンバー](frlrfSystemXmlXmlConvertMembersTopic)」を参照してください。 + + **ToString** メソッドから返される文字列は、渡したデータを文字列に変換したものです。 変換に **XmlConvert** クラスを使用する .NET Framework 型の中には、**System.Convert** クラスのメソッドを使用しないものがいくつかあります。 **XmlConvert** クラスは XML Schema \(XSD\) のデータ型に準拠しており、**XmlConvert** によって変換できるデータ型は決まっています。 + + 次の表は、.NET Framework データ型の一覧と、XML スキーマ \(XSD\) のデータ型マップを使用した場合に返される文字列を示しています。 これらの .NET Framework 型は、**System.Convert** で処理することはできません。 + +|.NET Framework 型|返される文字列| +|----------------------|-------------| +|Boolean|"true"、"false"| +|Single.PositiveInfinity|"INF"| +|Single.NegativeInfinity|"\-INF"| +|Double.PositiveInfinity|"INF"| +|Double.NegativeInfinity|"\-INF"| +|DateTime|形式は、yyyy\-MM\-ddTHH:mm:sszzzzzz およびそのサブセットです。| +|Timespan|PnYnMnTnHnMnS の形式。つまり、`P2Y10M15DT10H30M20S` は 2 年 10 か月 15 日 10 時間 30 分 20 秒の期間です。| + +> [!NOTE] +> 表中の .NET Framework 型を **ToString** メソッドを使用して文字列に変換したときに返される文字列は基本型ではなく、XML スキーマ \(XSD\) 文字列型です。 + + **DateTime** 値型と **Timespan** 値型の違いは、**DateTime** が瞬間を表すのに対して、**TimeSpan** が時間間隔を表すことです。 **DateTime** および **Timespan** の形式は、XML スキーマ \(XSD\) のデータ型仕様で指定されています。 次に例を示します。 + +```vb +Dim writer As New XmlTextWriter("myfile.xml", Nothing) +Dim [date] As New DateTime(2001, 8, 4) +writer.WriteElementString("Date", XmlConvert.ToString([date])) + +``` + +```csharp +XmlTextWriter writer = new XmlTextWriter("myfile.xml", null); +DateTime date = new DateTime (2001, 08, 04); +writer.WriteElementString("Date", XmlConvert.ToString(date)); +``` + + **出力** + + `2001-08-04T00:00:00`. + + 整数を文字列に変換するコードを次に示します。 + +```vb +Dim writer As New XmlTextWriter("myfile.xml", Nothing) +Dim value As Int32 = 200 +writer.WriteElementString("Number", XmlConvert.ToString(value)) + +``` + +```csharp +XmlTextWriter writer = new XmlTextWriter("myfile.xml", null); +Int32 value = 200; +writer.WriteElementString("Number", XmlConvert.ToString(value)); +``` + + **出力** + + `200` + + ただし、文字列を **Boolean**、**Single**、または **Double** に変換する場合、返される .NET Framework 型は、**System.Convert** クラスを使用したときに返される型とは異なります。 + +## String から Boolean + **ToBoolean** メソッドを使用して文字列を **Boolean** に変換するときの入力文字列と生成される型の対応を次の表に示します。 + +|有効な文字列入力パラメーター|出力される .NET Framework 型| +|--------------------|----------------------------| +|"true"|Boolean.True| +|"1"|Boolean.True| +|"false"|Boolean.False| +|"0"|Boolean.False| + + たとえば、次のような XML があるとします。 + + **入力** + +``` +true +1 +``` + + いずれも次のコードによって解釈することができ、**bvalue** は **System.Boolean.True** になります。 + +```vb +Dim bvalue As Boolean = _ + XmlConvert.ToBoolean(reader.ReadElementString()) +Console.WriteLine(bvalue) + +``` + +```csharp +Boolean bvalue = XmlConvert.ToBoolean(reader.ReadElementString()); +Console.WriteLine(bvalue); +``` + +## String から Single + **ToSingle** メソッドを使用して文字列を **Single** に変換するときの入力文字列と生成される型の対応を次の表に示します。 + +|有効な文字列入力パラメーター|出力される .NET Framework 型| +|--------------------|----------------------------| +|"INF"|Single.PositiveInfinity| +|"\-INF"|Single.NegativeInfinity| + +## String から Double + **ToDouble** メソッドを使用して文字列を **Double** に変換するときの入力文字列と生成される型の対応を次の表に示します。 + +|有効な文字列入力パラメーター|出力される .NET Framework 型| +|--------------------|----------------------------| +|"INF"|Double.PositiveInfinity| +|"\-INF"|Double.NegativeInfinity| + + 次のコードは、`INF` を書き込みます。 + +```vb +Dim value As Double = Double.PositiveInfinity +writer.WriteElementString("Infinity", XmlConvert.ToString(value)) + +``` + +```csharp +Double value = Double.PositiveInfinity; +writer.WriteElementString("Infinity", XmlConvert.ToString(value)); +``` + +## 参照 + [XML データ型の変換](../../../../docs/standard/data/xml/conversion-of-xml-data-types.md) + [.NET Framework 型の文字列への変換](../../../../docs/standard/data/xml/converting-dotnet-types-to-strings.md) \ No newline at end of file diff --git a/docs/standard/data/xml/copy-existing-nodes.md b/docs/standard/data/xml/copy-existing-nodes.md new file mode 100644 index 00000000000..0fdfdf27b3b --- /dev/null +++ b/docs/standard/data/xml/copy-existing-nodes.md @@ -0,0 +1,28 @@ +--- +title: "既存のノードのコピー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 2aa8f65c-cc62-4638-9c46-129dc15be786 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 既存のノードのコピー +XML ドキュメント オブジェクト モデル \(DOM\) には、**SelectSingleNode**、**ChildNodes\[int i\]**、**Attributes\[int i\]** など、ノードの選択に使用できるメソッドとプロパティが多数用意されています。 ノードを選択すると、その特定のノード型で利用できる挿入メソッドを使用してツリーに挿入できます。 ノードをツリーに挿入するときの唯一の制約は、ノードを挿入した後もドキュメントが整形式になっていなければならないことです。 既存のノードを DOM ツリーに挿入すると、そのノードは元の位置から削除され、挿入先の位置に追加されます。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/copying-document-fragments.md b/docs/standard/data/xml/copying-document-fragments.md new file mode 100644 index 00000000000..1f9bca5a884 --- /dev/null +++ b/docs/standard/data/xml/copying-document-fragments.md @@ -0,0 +1,28 @@ +--- +title: "ドキュメント フラグメントのコピー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: cf424bbe-81b7-40d2-9978-9b727da94d80 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# ドキュメント フラグメントのコピー +**XmlDocumentFragment** ノードを作成し、その下にノードを追加できます。 **InsertNode** メソッドを使って **XmlDocumentFragment** を挿入する場合、**XmlDocumentFragment** ノードはコピーされず、その子ノードが XML ドキュメント オブジェクト モデル \(DOM\) に挿入されます。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/copying-existing-nodes-from-one-document-to-another.md b/docs/standard/data/xml/copying-existing-nodes-from-one-document-to-another.md new file mode 100644 index 00000000000..316ada04629 --- /dev/null +++ b/docs/standard/data/xml/copying-existing-nodes-from-one-document-to-another.md @@ -0,0 +1,53 @@ +--- +title: "ドキュメント間での既存のノードのコピー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 3caa78c1-3448-4b7b-b83c-228ee857635e +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# ドキュメント間での既存のノードのコピー +**ImportNode** メソッドを使用すると、ある **XmlDocument** から別の **XmlDocument** へ、ノードまたはノードのサブツリー全体をコピーできます。 呼び出しから返されるノードは、ソース ドキュメントのノードのコピーであり、そこには属性値、ノード名、ノード型が含まれます。さらに、プレフィックス、ローカル名、名前空間 URI \(Uniform Resource Identifier\) など、名前空間に関連するすべての属性も含まれます。 ソース ドキュメントは変更されません。 インポートしたノードは、ノードを挿入するメソッドの 1 つを使用してツリーに追加する必要があります。 + + 新しいドキュメントにノードを追加すると、その新しいドキュメントがそのノードを所有します。 これは、ノードが別のドキュメント フラグメントに作成される場合でも、各ノードの作成時には所有元のドキュメントが設定されるためです。 これは XML ドキュメント オブジェクト モデル \(DOM\) の要件であり、**XmlDocument** クラスの設計仕様です。 たとえば、**CreateElement** は、新しいノードを作成する唯一の手段です。 + + インポートされたノード型と *deep* パラメーターの値によって、必要に応じて追加情報がコピーされます。 XML では、あるドキュメントから別のドキュメントへ XML ソースまたは HTML ソースのフラグメントをコピーしたときに 2 つのドキュメントのドキュメント型定義 \(DTD\) が別々になることがありますが、このメソッドでは、その動作を再現しようとします。 + + インポートできるノードの型について、それぞれに固有の動作を次の表に示します。 + +|ノード型|*deep* パラメーターが true|*deep* パラメーターが false| +|----------|-------------------------|--------------------------| +|XmlAttribute|XmlAttribute では、[XmlAttribute.Specified プロパティ](frlrfSystemXmlXmlAttributeClassSpecifiedTopic)が **true** に設定されます。 ソース **XmlAttribute** の子孫は再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。|**XmlAttribute** ノードは常に子ノードと共にインポートされるため、**XmlAttribute** ノードには *deep* パラメーターは適用されません。| +|XmlCDataSection|ノードをそのデータと共にコピーします。|ノードをそのデータと共にコピーします。| +|XmlComment|ノードをそのデータと共にコピーします。|ノードをそのデータと共にコピーします。| +|XmlDocumentFragment|ソース ノードの子孫が再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。|空の **XmlDocumentFragment** が作成されます。| +|XmlDocumentType|ノードがデータと共にコピーされます。\*|ノードがデータと共にコピーされます。\*| +|XmlElement|ソース要素の子孫が再帰的にインポートされます。結果として得られるノードは再アセンブルされ、対応するサブツリーが形成されます。 **Note:** 既存の属性はコピーされません。 インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。|指定された属性ノードがソース要素からインポートされ、生成された **XmlAttribute** ノードが新しい要素に追加されます。 子孫ノードはコピーされません。 **Note:** 既存の属性はコピーされません。 インポートされるドキュメントでこの要素名に対する既定の属性が定義されている場合は、それらが割り当てられます。| +|XmlEntityReference|ソース ドキュメントとターゲット ドキュメントではエンティティの定義が異なる可能性があるため、このメソッドは **XmlEntityReference** ノードだけをコピーします。 置換テキストは含まれません。 インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。|ソース ドキュメントとターゲット ドキュメントではエンティティの定義が異なる可能性があるため、このメソッドは **XmlEntityReference** ノードだけをコピーします。 置換テキストは含まれません。 インポート先のドキュメントに同じエンティティが定義されている場合は、その値が割り当てられます。| +|XmlProcessingInstruction|インポートされたノードから、ターゲットおよびデータの値がコピーされます。|インポートされたノードから、ターゲットおよびデータの値がコピーされます。| +|XmlText|ノードをそのデータと共にコピーします。|ノードをそのデータと共にコピーします。| +|XmlSignificantWhitespace|ノードをそのデータと共にコピーします。|ノードをそのデータと共にコピーします。| +|XmlWhitespace|ノードをそのデータと共にコピーします。|ノードをそのデータと共にコピーします。| +|XmlDeclaration|インポートされたノードから、ターゲットおよびデータの値がコピーされます。|インポートされたノードから、ターゲットおよびデータの値がコピーされます。| +|その他のすべてのノード型|これらのノード型はインポートできません。|これらのノード型はインポートできません。| + +> [!NOTE] +> DocumentType ノードはインポートできますが、1 つのドキュメントは 1 つの DocumentType しか持てません。 したがって、ドキュメント型をインポートした場合は、それをツリーに挿入する前に、ドキュメント内にドキュメント型がないことを確認する必要があります。 ノードの削除については、「[XML ドキュメントからのノード、コンテンツ、値の削除](../../../../docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/create-new-nodes-in-the-dom.md b/docs/standard/data/xml/create-new-nodes-in-the-dom.md new file mode 100644 index 00000000000..6a18c9bf3ae --- /dev/null +++ b/docs/standard/data/xml/create-new-nodes-in-the-dom.md @@ -0,0 +1,64 @@ +--- +title: "DOM への新しいノードの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 6c2b9789-b61a-49f9-b33f-db01a945edf2 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# DOM への新しいノードの作成 +のすべてのノードの種類を作成するメソッドがあります。 このメソッドに、名前が必要な場合は名前を渡し、コンテンツを持つノードではコンテンツやその他のパラメーターを指定すると、そのノードが作成されます。コンテンツを持つノードには、たとえばテキスト ノードがあります。 次のメソッドは、ノードを適切に作成するために、名前といくつかのパラメーターの指定が必要なメソッドです。 + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + + その他のノード型では、パラメーターにデータを与えるだけでなく、他の要件を満たす必要もあります。 + + 属性については、次を参照してください。 [DOM の要素の新しい属性の作成](../../../../docs/standard/data/xml/creating-new-attributes-for-elements-in-the-dom.md)します。 要素と属性名の検証方法については、次を参照してください。 [XML 要素と属性名の検証を作成するときに新しいノード](../../../../docs/standard/data/xml/xml-element-and-attribute-name-verification-when-creating-new-nodes.md)します。 エンティティ参照を作成するには、次を参照してください。[新しいエンティティ参照の作成](../../../../docs/standard/data/xml/creating-new-entity-references.md)します。 エンティティ参照の展開の名前空間の影響については、次を参照してください。 [Namespace に影響を及ぼす新しいノードを含む要素と属性のエンティティ参照の展開](../../../../docs/standard/data/xml/namespace-affect-on-entity-ref-expansion-for-new-nodes.md)します。 + + 新しく作成したノードをツリーに挿入するには、いくつかのメソッドを使用できます。 使用できるメソッドと、そのメソッドによって DOM のどこに新しいノードが作成されるかの説明を次の表に示します。 + +|メソッド|ノードの位置| +|------------|--------------------| +||参照ノードの前に挿入されます。 たとえば、5 番目の位置に新しいノードを挿入するには、次のようにします。

`Dim refChild As XmlNode = node.ChildNodes(4) 'The reference is zero-based.node.InsertBefore(newChild, refChild);`

`XmlNode refChild = node.ChildNodes[4]; //The reference is zero-based. node.InsertBefore(newChild, refChild);`

詳細については、次を参照してください。、 メソッドです。| +||参照ノードの後に挿入されます。 例:

`node.InsertAfter(newChild, refChild)`

`node.InsertAfter(newChild, refChild);`

詳細については、次を参照してください。、 メソッドです。| +||当該ノードの子ノードのリストの末尾にノードを追加します。 追加するノードが場合、 、ドキュメント フラグメントの内容全体がこのノードの子リストに移動されます。 詳細については、次を参照してください。、 メソッドです。| +||当該ノードの子ノードのリストの先頭にノードを追加します。 追加するノードが場合、 、ドキュメント フラグメントの内容全体がこのノードの子リストに移動されます。 詳細については、次を参照してください。、 メソッドです。| +||追加、 要素に関連付けられている属性のコレクションの末尾にノードです。 詳細については、次を参照してください。、 メソッドです。| + +## 関連項目 + [XML ドキュメント オブジェクト モデル (DOM)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/creating-new-attributes-for-elements-in-the-dom.md b/docs/standard/data/xml/creating-new-attributes-for-elements-in-the-dom.md new file mode 100644 index 00000000000..0572073f9b1 --- /dev/null +++ b/docs/standard/data/xml/creating-new-attributes-for-elements-in-the-dom.md @@ -0,0 +1,134 @@ +--- +title: "DOM の要素に対する新しい属性の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: dd6dc920-b011-418a-b3db-f1580a7d9251 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# DOM の要素に対する新しい属性の作成 +属性はノードではなく、要素ノードのプロパティであり、要素に関連付けられた **XmlAttributeCollection** に格納されるため、新しい属性を作成する方法は、他のノード型を作成する方法と異なります。 属性を作成して要素に追加するには、次の 2 つの方法があります。 + +- 要素ノードを取得し、**SetAttribute** を使用してその要素の属性コレクションに属性を追加します。 + +- **CreateAttribute** メソッドを使用して **XmlAttribute** ノードを作成します。要素ノードを取得し、**SetAttributeNode** を使用してその要素の属性コレクションにノードを追加します。 + + **SetAttribute** メソッドを使用して属性を要素に追加する方法を次の例に示します。 + +```vb +Imports System +Imports System.IO +Imports System.Xml + +public class Sample + + public shared sub Main() + + Dim doc as XmlDocument = new XmlDocument() + doc.LoadXml("" & _ + "Pride And Prejudice" & _ + "") + Dim root as XmlElement = doc.DocumentElement + + 'Add a new attribute. + root.SetAttribute("genre", "urn:samples", "novel") + + Console.WriteLine("Display the modified XML...") + Console.WriteLine(doc.InnerXml) + + end sub +end class +``` + +```csharp +using System; +using System.IO; +using System.Xml; + +public class Sample +{ + public static void Main() + { + XmlDocument doc = new XmlDocument(); + doc.LoadXml("" + + "Pride And Prejudice" + + ""); + XmlElement root = doc.DocumentElement; + + // Add a new attribute. + root.SetAttribute("genre", "urn:samples", "novel"); + + Console.WriteLine("Display the modified XML..."); + Console.WriteLine(doc.InnerXml); + } +``` + + **CreateAttribute** メソッドを使用して新しい属性を作成する例を次に示します。 属性の作成後、**SetAttributeNode** メソッドを使用して、その属性を **book** 要素の属性コレクションに追加します。 + + 次の XML を使用します。 + +``` + +Pride And Prejudice + +``` + + 新しい属性を作成し、その属性の値を設定します。 + +```vb +Dim attr As XmlAttribute = doc.CreateAttribute("publisher") + attr.Value = "WorldWide Publishing" +``` + +```csharp +XmlAttribute attr = doc.CreateAttribute("publisher"); +attr.Value = "WorldWide Publishing"; +``` + + 作成した属性を要素に追加します。 + +```vb +doc.DocumentElement.SetAttributeNode(attr) +``` + +```csharp +doc.DocumentElement.SetAttributeNode(attr); +``` + + **出力** + +``` + +Pride And Prejudice + +``` + + 完全なコード サンプルは、[XmlDocument.CreateAttribute メソッド](frlrfSystemXmlXmlDocumentClassCreateAttributeTopic)のトピックにあります。 + + **XmlAttribute** ノードを作成した後、**InsertBefore** メソッドまたは **InsertAfter** メソッドを使用して、コレクション内の適切な位置にそのノードを配置することもできます。 同じ名前の属性が属性コレクションに既に含まれている場合、既存の **XmlAttribute** ノードはコレクションから削除され、新しい **XmlAttribute** ノードが挿入されます。 これは、**SetAttribute** メソッドで行われる処理と同じです。 これらのメソッドは、**InsertBefore** や **InsertAfter** を実行するときに、参照ポイントとなる既存のノードをパラメーターとして受け取ります。 新しいノードの挿入位置を示す参照ノードが指定されていないと、**InsertAfter** メソッドは、既定でコレクションの先頭に新しいノードを挿入します。 参照ノードが指定されなかった場合の **InsertBefore** の既定の挿入位置は、コレクションの末尾です。 + + 属性の **XmlNamedNodeMap** を作成し、[SetNamedItem メソッド](frlrfSystemXmlXmlNamedNodeMapClassSetNamedItemTopic)を使用すると、名前を指定して属性を追加できます。 詳細については、「[NamedNodeMaps と NodeLists のノード コレクション](../../../../docs/standard/data/xml/node-collections-in-namednodemaps-and-nodelists.md)」を参照してください。 + +## 既定の属性 + 既定の属性を持つと宣言された要素を作成すると、既定値を持つ新しい既定の属性が XML ドキュメント オブジェクト モデル \(DOM\) によって作成され、その要素に割り当てられます。 既定の属性の子ノードも同時に作成されます。 + +## 属性の子ノード + 属性ノードの値は、その属性の子ノードになります。 有効な子ノードの型は **XmlText** ノードと **XmlEntityReference** ノードの 2 つだけです。 これらのノードは、**FirstChild** や **LastChild** のようなメソッドが子ノードとして処理するという意味で、子ノードと見なされます。 属性が子ノードを持つという点は、属性または属性の子ノードを削除するときに重要になります。 詳細については、「[DOM の要素ノードからの属性の削除](../../../../docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/creating-new-entity-references.md b/docs/standard/data/xml/creating-new-entity-references.md new file mode 100644 index 00000000000..442ac92da9a --- /dev/null +++ b/docs/standard/data/xml/creating-new-entity-references.md @@ -0,0 +1,35 @@ +--- +title: "新しいエンティティ参照の作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: a42f81b3-0403-4e34-b346-7d2129804e54 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 新しいエンティティ参照の作成 +**CreateEntityReference** メソッドによって新しい **XmlEntityReference** ノードを作成できます。 XML ドキュメント オブジェクト モデル \(DOM\) は、参照されているエンティティ名が既に宣言されているかどうかを確認します。 宣言されている場合は、エンティティ宣言ノードから **XmlEntityReference** ノードの子ノードがコピーされます。 一致するエンティティ宣言がない場合、エンティティ参照ノードには、唯一の子として空のテキスト ノードが追加されます。 **XmlEntityReference** ノードの子ノードは別のノードのコピーなので、これらの子ノードは読み取り専用になり、変更はできません。 + + ノードがコピーされるとき、そのエンティティ参照が存在する位置のスコープに、名前空間が適用されていることがあります。 生成される要素ノードまたは属性ノードの構成は、この名前空間の影響を受けます。 + +> [!NOTE] +> DOM は、ドキュメントに **EntityReference** ノードが挿入されたときだけ **EntityReference** に子ノードを追加します。 新しく作成された **EntityReference** ノードには、子ノードはありません。 + + **XmlDataDocument** は **XmlDocument** の派生クラスですが、**XmlDataDocument** はエンティティ参照の作成をサポートしていません。 **EntityReference** の子が読み取り専用であるためです。 **EntityReference** ノードの子の範囲は、複数の領域にまたがることができます。 この場合は、**EntityReference** の一部を含む領域と関連付けられている行の部分が読み取り専用になります。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/dynamic-updates-to-nodelists-and-namednodemaps.md b/docs/standard/data/xml/dynamic-updates-to-nodelists-and-namednodemaps.md new file mode 100644 index 00000000000..f14f770a138 --- /dev/null +++ b/docs/standard/data/xml/dynamic-updates-to-nodelists-and-namednodemaps.md @@ -0,0 +1,28 @@ +--- +title: "NodeLists および NamedNodeMaps の動的更新 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 76c511fd-6704-4ca4-8078-860a68d898ad +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# NodeLists および NamedNodeMaps の動的更新 +**XmlNodeList** と **XmlNamedNodeMap** にはノード セットが格納されますが、XML ドキュメントはメモリに読み込まれ、変更されるため、W3C \(World Wide Web Consortium\) では、ノード セットが格納されるこれらのオブジェクトは動的でなければならないと規定しています。 つまり、基になっているドキュメントが変更されたら、これら 2 つのオブジェクトも変更される必要があります。 したがって、特定の要素 \(たとえば要素 X\) のすべての子要素が **XmlNodeList** に格納されている場合、別の要素である要素 Q は、要素 X の下のドキュメントに追加されます。 **XmlNodeList** のコレクションにも、その新しい要素 Q を追加する必要があります。 逆の場合も同様です。 **XmlNodeList** にノードが追加された場合は、基になっているドキュメントも同様に更新されます。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/editing-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/editing-xml-data-using-xpathnavigator.md new file mode 100644 index 00000000000..a93868406e3 --- /dev/null +++ b/docs/standard/data/xml/editing-xml-data-using-xpathnavigator.md @@ -0,0 +1,45 @@ +--- +title: "XPathNavigator による XML データの編集 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: b1f91616-3115-4264-9821-c66589d11d11 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathNavigator による XML データの編集 + クラスは、 オブジェクトに含まれる XML ドキュメントでノードと値の挿入、変更、および削除を行うメソッドを提供します。 ノードと値の挿入、変更、および削除を行うこれらのメソッドを使用するには、 オブジェクトが編集可能である必要があります。つまり、その プロパティを true にする必要があります。 + +## このセクションの内容 + [XPathNavigator による XML データの挿入](../../../../docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md) + クラスを使用して オブジェクトに兄弟、子、および属性のノードと値を挿入する方法について説明します。 + + [XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md) + クラスを使用して オブジェクトのノードと値を変更する方法について説明します。 + + [XPathNavigator による XML データの削除](../../../../docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md) + クラスを使用して オブジェクトからノードと値を削除する方法について説明します。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md) + [XPathNavigator を使用した XML データの選択、評価、および照合](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データへのアクセス](../../../../docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md) + [XPathNavigator を使用したスキーマ検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/editing-xml-schemas.md b/docs/standard/data/xml/editing-xml-schemas.md new file mode 100644 index 00000000000..8cbe518d909 --- /dev/null +++ b/docs/standard/data/xml/editing-xml-schemas.md @@ -0,0 +1,162 @@ +--- +title: "XML スキーマの編集 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: fa09c8e5-c2b9-49d2-bb0d-40330cd13e4d +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XML スキーマの編集 +XML スキーマの編集は、スキーマ オブジェクト モデル \(SOM\) の最も重要な機能の 1 つです。 XML スキーマの既存の値を変更する場合、SOM のスキーマ コンパイル前のすべてのプロパティを使用できます。 その後、XML スキーマを再コンパイルすると、変更が反映されます。 + + SOM に読み込まれたスキーマを編集する場合、最初にスキーマの走査を行います。 スキーマを編集する際には、事前に SOM API を使用したスキーマの走査をよく理解しておく必要があります。 また、スキーマのコンパイル後の情報セット \(PSCI\) のうち、スキーマのコンパイル前のプロパティとコンパイル後のプロパティについてもよく理解しておく必要があります。 + +## XML スキーマの編集 + このセクションには、2 種類のコード サンプルが用意されています。これらはいずれも「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」で作成したカスタム スキーマを編集します。 最初のコード サンプルは、`Customer` 要素に新しい `PhoneNumber` 要素を追加します。2 番目のコード サンプルは、`FirstName` 要素に新しい `Title` 属性を追加します。 また、最初のサンプルは、スキーマのコンパイル前の コレクションをカスタム スキーマを走査する手段として使用しますが、2 番目のコード サンプルはスキーマのコンパイル後の コレクションを使用します。 + +### PhoneNumber 要素の例 + この最初のコード サンプルでは、カスタム スキーマの `Customer` 要素に新しい `PhoneNumber` 要素を追加します。 このコード サンプルでは、次の手順でカスタム スキーマの編集を行います。 + +1. カスタム スキーマを新しい オブジェクトに追加し、コンパイルします。 スキーマの読み取りまたはコンパイル時に発生するスキーマ検証に関する警告とエラーは、 デリゲートで処理されます。 + +2. プロパティを反復処理して、 からコンパイルされた オブジェクトを取得します。 スキーマはコンパイルされているため、スキーマのコンパイル後の情報セット \(PSCI\) プロパティにアクセスできます。 + +3. クラスを使用する `PhoneNumber` 要素を作成し、 クラスおよび クラスを使用する `xs:string` 単純型の制限を作成し、制限の プロパティに pattern ファセットを追加し、単純型の プロパティに制限を追加して、`PhoneNumber` 要素の に単純型を追加します。 + +4. スキーマ コンパイル後の コレクションの コレクションで、それぞれの を反復処理します。 + +5. 要素の が `"Customer"` である場合、 クラスを使用する複合型の `Customer` 要素と クラスを使用する複合型の sequence のパーティクルを取得します。 + +6. シーケンスのスキーマ コンパイル前の コレクションを使用する既存の `FirstName` 要素および `LastName` 要素を格納するシーケンスに、新しい `PhoneNumber` 要素を追加します。 + +7. 最後に、 クラスの および メソッドを使用して、変更された オブジェクトの再処理とコンパイルを行って、コンソールに出力します。 + + 完全なコード サンプルを次に示します。 + + [!code-cpp[XmlSchemaEditExample1#1](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaEditExample1/CPP/XmlSchemaEditExample1.cpp#1)] + [!code-csharp[XmlSchemaEditExample1#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaEditExample1/CS/XmlSchemaEditExample1.cs#1)] + [!code-vb[XmlSchemaEditExample1#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaEditExample1/VB/XmlSchemaEditExample1.vb#1)] + + 変更後のカスタム スキーマ \(「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」で作成\) を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### Title 属性の例 + この 2 番目のコード サンプルでは、カスタム スキーマの `FirstName` 要素に新しい `Title` 属性を追加します。 最初のコード サンプルでは、`FirstName` 要素の型が `xs:string` になっています。 `FirstName` 要素が文字列のコンテンツと同時に属性を持つには、単純なコンテンツの拡張コンテンツ モデルを使用してこの要素の型を複合型に変更する必要があります。 + + このコード サンプルでは、次の手順でカスタム スキーマの編集を行います。 + +1. カスタム スキーマを新しい オブジェクトに追加し、コンパイルします。 スキーマの読み取りまたはコンパイル時に発生するスキーマ検証に関する警告とエラーは、 デリゲートで処理されます。 + +2. プロパティを反復処理して、 からコンパイルされた オブジェクトを取得します。 スキーマはコンパイルされているため、スキーマのコンパイル後の情報セット \(PSCI\) プロパティにアクセスできます。 + +3. クラスを使用して `FirstName` 要素に対する複合型を新しく作成します。 + +4. および クラスを使用して、`xs:string` の基本型を使った単純なコンテンツの拡張型を新しく作成します。 + +5. `xs:string` の を使用して、 クラスを使用する `Title` 属性を新しく作成し、その属性を単純なコンテンツの拡張型に追加します。 + +6. 単純なコンテンツのコンテンツ モデルを単純なコンテンツの拡張型に設定し、複合型のコンテンツ モデルを単純なコンテンツに設定します。 + +7. スキーマ コンパイル前の コレクションに、新しい複合型を追加します。 + +8. スキーマのコンパイル前の コレクションで、それぞれの を反復処理します。 + +> [!NOTE] +> `FirstName` 要素はスキーマのグローバル要素ではないため、 または コレクションでは使用できません。 コード サンプルでは、`FirstName` 要素を検索するために、最初に `Customer` 要素の検索を行います。 +> +> 最初のコード サンプルでは、スキーマ コンパイル後の コレクションを使用してスキーマを走査しました。 このサンプルでは、スキーマ コンパイル前の コレクションを使用してスキーマを走査します。 どちらのコレクションでもスキーマのグローバル要素にアクセスできますが、 コレクションで反復処理を行う場合、スキーマ内のすべてのグローバル要素に対して反復処理を行う必要があり、スキーマに PSCI プロパティが存在しないため、処理時間が長くなります。 PSCI コレクション \( など\) では、グローバルな要素、属性、型、および PSCI プロパティに直接アクセスできます。 + +1. が要素 \(その が `"Customer"`\) である場合、 クラスを使用する複合型の `Customer` 要素と クラスを使用する複合型の sequence のパーティクルを取得します。 + +2. スキーマのコンパイル前の コレクションで、それぞれの を反復処理します。 + +3. が要素 \(その が `"FirstName"`\) である場合、`FirstName` 要素の を新しい `FirstName` 複合型に設定します。 + +4. 最後に、 クラスの および メソッドを使用して、変更された オブジェクトの再処理とコンパイルを行って、コンソールに出力します。 + + 完全なコード サンプルを次に示します。 + + [!code-cpp[XmlSchemaEditExample2#1](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaEditExample2/CPP/XmlSchemaEditExample2.cpp#1)] + [!code-csharp[XmlSchemaEditExample2#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaEditExample2/CS/XmlSchemaEditExample2.cs#1)] + [!code-vb[XmlSchemaEditExample2#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaEditExample2/VB/XmlSchemaEditExample2.vb#1)] + + 変更後のカスタム スキーマ \(「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」で作成\) を次に示します。 + +``` + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参照 + [XML スキーマ オブジェクト モデルの概要](../../../../docs/standard/data/xml/xml-schema-object-model-overview.md) + [XML スキーマの読み取りと書き込み](../../../../docs/standard/data/xml/reading-and-writing-xml-schemas.md) + [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) + [XML スキーマの走査](../../../../docs/standard/data/xml/traversing-xml-schemas.md) + [XML スキーマのインクルードまたはインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマのコンパイル後の情報セット](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) \ No newline at end of file diff --git a/docs/standard/data/xml/entity-references-are-expanded-and-not-preserved.md b/docs/standard/data/xml/entity-references-are-expanded-and-not-preserved.md new file mode 100644 index 00000000000..5a646693454 --- /dev/null +++ b/docs/standard/data/xml/entity-references-are-expanded-and-not-preserved.md @@ -0,0 +1,53 @@ +--- +title: "保持されずに展開されるエンティティ参照 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: ffd97806-ab43-4538-8de2-5828bfbbde57 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 保持されずに展開されるエンティティ参照 +エンティティ参照が展開され、それが表すテキストに置き換えられる場合には、**XmlEntityReference** ノードは作成されません。 この場合はエンティティ宣言が解析され、宣言のコンテンツから作成されたノードが **XmlEntityReference** の代わりにコピーされます。 したがって、`&publisher;` の例では、`&publisher;` は保存されず、代わりに **XmlText** ノードが作成されます。 + + ![展開されたツリー構造](../../../../docs/standard/data/xml/media/xmlentityref-expanded-nodes.png "xmlentityref\_expanded\_nodes") +エンティティ参照が展開される場合のツリー構造 + + `B` や `<` などの文字エンティティは保持されません。 文字エンティティは常に展開され、テキスト ノードとして表されます。 + + **XmlEntityReference** ノードと、それに付随するエンティティ参照の子ノードを保持するには、**EntityHandling** フラグを **ExpandCharEntities** に設定します。 それ以外の場合は、**EntityHandling** フラグを既定の **ExpandEntities** のままにしておきます。 その場合、DOM ではエンティティ参照ノードが認識されません。 エンティティ参照ノードは、エンティティ宣言の子ノードのコピーに置き換えられます。 + + エンティティ参照を保持しない場合の副作用の 1 つとして、そのドキュメントを保存して別のアプリケーションに渡したとき、受け取る側のアプリケーションでは、エンティティ参照によってノードが生成されたことを識別できないという点があります。 しかし、エンティティ参照を保持する場合は、受け取り側アプリケーションがエンティティ参照を認識し、子ノードを読み取ります。 子ノードが、エンティティ宣言に含まれていた情報を表していることは明らかです。 たとえば、エンティティ参照が保持される場合、DOM の構造は理論的に次のようになります。 + + XmlElement: publisher + + XmlEntityReference: `&publisher;` + + XmlText: Microsoft Press + + DOM でエンティティ参照が展開される場合は、次のようなツリー構造になります。既定のメソッドでは、エンティティ参照が展開されます。 + + XmlElement: publisher + + XmlText: Microsoft Press + + エンティティ参照がないため、受け取る側のアプリケーションでは、"Microsoft Press" を含む **XmlText** ノードがエンティティ宣言から作成されたことを識別できません。 + + エンティティを解決できないリーダーを使用すると、**Load** メソッドは、エンティティ参照を見つけたときに例外をスローします。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/entity-references-are-preserved.md b/docs/standard/data/xml/entity-references-are-preserved.md new file mode 100644 index 00000000000..2c70060a01c --- /dev/null +++ b/docs/standard/data/xml/entity-references-are-preserved.md @@ -0,0 +1,47 @@ +--- +title: "保持されるエンティティ参照 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 000a6cae-5972-40d6-bd6c-a9b7d9649b3c +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 保持されるエンティティ参照 +エンティティ参照を展開せずに保持する場合、XML ドキュメント オブジェクト モデル \(DOM\) は、エンティティ参照を検出すると **XmlEntityReference** ノードを構築します。 + + たとえば、次の XML を使用します。 + +``` +Fred +Published by &publisher; +``` + + DOM は、`&publisher;` 参照を検出すると **XmlEntityReference** ノードを構築します。 **XmlEntityReference** には、エンティティ宣言のコンテンツからコピーされた子ノードが格納されます。 上記のコード サンプルでは、エンティティ宣言にテキストが含まれているため、エンティティ参照ノードの子ノードとして **XmlText** ノードが作成されます。 + + ![保持されているエンティティ参照のツリー構造](../../../../docs/standard/data/xml/media/xmlentityref-notexpanded-nodes.gif "xmlentityref\_notexpanded\_nodes") +エンティティ参照が保持される場合のツリー構造 + + **XmlEntityReference** の子ノードは、エンティティ宣言が検出されたときに **XmlEntity** ノードから作成されたすべての子ノードのコピーです。 + +> [!NOTE] +> **XmlEntity** からコピーされたノードは、エンティティ参照ノードの下に配置されると、必ずしも元のノードの完全なコピーにはなりません。 エンティティ参照ノードが現れた位置のスコープに名前空間が適用されていると、それが子ノードの最終的な構成に影響する可能性があります。 + + 既定では、`&abc;` のような一般エンティティは保持され、常に **XmlEntityReference** ノードが作成されます。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md b/docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md new file mode 100644 index 00000000000..4eb14d86e9f --- /dev/null +++ b/docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md @@ -0,0 +1,64 @@ +--- +title: "XPathNavigator による Xpath 式の評価 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 2913ccf3-f932-4363-8028-9e2d22ce6093 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathNavigator による Xpath 式の評価 + クラスは、XPath 式を評価する メソッドを提供します。 メソッドは XPath 式を受け取って評価し、XPath 式の結果に基づいて W3C XPath 型のブール値、数字、文字列、またはノード セットを返します。 + +## Evaluate メソッド + メソッドは XPath 式を受け取って評価し、XPath 式の結果に基づいて W3C XPath 型のブール値 \(\)、数字 \(\)、文字列 \(\)、またはノード セット \(\) を返します。 たとえば、 メソッドは数値演算メソッドで使用できます。 次のサンプル コードは、`books.xml` ファイル内の本すべての総額を計算します。 + +```vb +Dim document As XPathDocument = New XPathDocument("books.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() + +Dim query As XPathExpression = navigator.Compile("sum(//price/text())") +Dim total As Double = CType(navigator.Evaluate(query), Double) +Console.WriteLine(total) +``` + +```csharp +XPathDocument document = new XPathDocument("books.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +XPathExpression query = navigator.Compile("sum(//price/text())"); +Double total = (Double)navigator.Evaluate(query); +Console.WriteLine(total); +``` + + この例は、`books.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#1](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/books.xml#1)] + +### position 関数と last 関数 + メソッドはオーバーロードされます。 メソッドの 1 つは、パラメーターとして オブジェクトを受け取ります。 この特定の メソッドは、現在の評価対象コンテキストを指定するノード セット引数を許可することを除き、パラメーターとして オブジェクトだけを受け取る メソッドと同じです。 XPath の `position()` 関数および `last()` 関数は現在のコンテキスト ノードに相対的であるため、これらの関数ではコンテキストが必須です。 ロケーション ステップで述語として使用される場合を除き、XPath の `position()` 関数および `last()` 関数では、ノード セットへの参照が評価のために必須です。ノード セットへの参照がない場合、`position` 関数および `last` 関数は `0` を返します。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator を使用した XML データの選択](../../../../docs/standard/data/xml/select-xml-data-using-xpathnavigator.md) + [XPathNavigator によるノードの一致](../../../../docs/standard/data/xml/matching-nodes-using-xpathnavigator.md) + [XPath クエリで認識されるノード型](../../../../docs/standard/data/xml/node-types-recognized-with-xpath-queries.md) + [XPath クエリおよび名前空間](../../../../docs/standard/data/xml/xpath-queries-and-namespaces.md) + [コンパイルされた XPath 式](../../../../docs/standard/data/xml/compiled-xpath-expressions.md) \ No newline at end of file diff --git a/docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md b/docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md new file mode 100644 index 00000000000..fc773c0b934 --- /dev/null +++ b/docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md @@ -0,0 +1,218 @@ +--- +title: "XmlNodeChangedEventArgs による XML ドキュメントのイベント処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 0fe844e3-5b6f-4fe7-ad15-22459501738b +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XmlNodeChangedEventArgs による XML ドキュメントのイベント処理 +イベント処理のために **XmlDocument** オブジェクトに登録されたイベント ハンドラーでは、渡された引数が **XmlNodeChangedEventArgs** によってカプセル化されます。 各イベントとその発生するタイミングを次の表に示します。 + +|Event|発生するタイミング| +|-----------|---------------| +||現在のドキュメントに属するノードが別のノードに挿入されるとき。| +||現在のドキュメントに属するノードが別のノードに挿入されたとき。| +||このドキュメントに属するノードがドキュメントから削除されるとき。| +||このドキュメントに属するノードがその親から削除されたとき。| +||ノードの値が変更されるとき。| +||ノードの値が変更されたとき。| + +> [!NOTE] +> **XmlDataDocument** のメモリの用途が **DataSet** ストレージの利用に完全に最適化されている場合は、基になる **DataSet** が変更された場合でも、上に示したどのイベントも発生しない場合があります。 これらのイベントが必要な場合は、**XmlDocument** 全体を 1 回走査して、メモリ使用の最適化が完全でない状態にします。 + + イベント ハンドラーを定義する方法、およびイベント ハンドラーをイベントに追加する方法を次のコード サンプルに示します。 + +```vb +' Attach the event handler, NodeInsertedHandler, to the NodeInserted +' event. +Dim doc as XmlDocument = new XmlDocument() +Dim XmlNodeChgEHdlr as XmlNodeChangedEventHandler = new XmlNodeChangedEventHandler(addressof MyNodeChangedEvent) +AddHandler doc.NodeInserted, XmlNodeChgEHdlr + +Dim n as XmlNode = doc.CreateElement( "element" ) +Console.WriteLine( "Before Event Inserting" ) + +' This is the point where the new node is being inserted in the tree, +' and this is the point where the NodeInserted event is raised. +doc.AppendChild( n ) +Console.WriteLine( "After Event Inserting" ) + +' Define the event handler that handles the NodeInserted event. +sub NodeInsertedHandler(src as Object, args as XmlNodeChangedEventArgs) + Console.WriteLine("Node " + args.Node.Name + " inserted!!") +end sub +``` + +```csharp +// Attach the event handler, NodeInsertedHandler, to the NodeInserted +// event. +XmlDocument doc = new XmlDocument(); +doc.NodeInserted += new XmlNodeChangedEventHandler(NodeInsertedHandler); +XmlNode n = doc.CreateElement( "element" ); +Console.WriteLine( "Before Event Inserting" ); + +// This is the point where the new node is being inserted in the tree, +// and this is the point where the NodeInserted event is raised. +doc.AppendChild( n ); +Console.WriteLine( "After Event Inserting" ); + +// Define the event handler that handles the NodeInserted event. +void NodeInsertedHandler(Object src, XmlNodeChangedEventArgs args) +{ + Console.WriteLine("Node " + args.Node.Name + " inserted!!"); +} +``` + + XML ドキュメント オブジェクト モデル \(DOM\) の操作の中には、複数のイベントが発生する複合操作があります。 たとえば **AppendChild** では、追加されるノードを以前の親から削除する必要が生じることがあります。 この場合は、最初に **NodeRemoved** イベントが発生し、次に **NodeInserted** イベントが発生します。 **InnerXml** を設定する操作なども、複数のイベントが発生する結果になります。 + + イベント ハンドラーを作成する方法および **NodeInserted** イベントを処理する方法を次のコード サンプルに示します。 + +```vb +Imports System +Imports System.IO +Imports System.Xml +Imports Microsoft.VisualBasic + +Public Class Sample + + Private Const filename As String = "books.xml" + + Shared Sub Main() + Dim mySample As Sample = New Sample() + mySample.Run(filename) + End Sub + + Public Sub Run(ByVal args As String) + ' Create and load the XML document. + Console.WriteLine("Loading file 0 ...", args) + Dim doc As XmlDocument = New XmlDocument() + doc.Load(args) + + ' Create the event handlers. + Dim XmlNodeChgEHdlr As XmlNodeChangedEventHandler = New XmlNodeChangedEventHandler(AddressOf MyNodeChangedEvent) + Dim XmlNodeInsrtEHdlr As XmlNodeChangedEventHandler = New XmlNodeChangedEventHandler(AddressOf MyNodeInsertedEvent) + AddHandler doc.NodeChanged, XmlNodeChgEHdlr + AddHandler doc.NodeInserted, XmlNodeInsrtEHdlr + + ' Change the book price. + doc.DocumentElement.LastChild.InnerText = "5.95" + + ' Add a new element. + Dim newElem As XmlElement = doc.CreateElement("style") + newElem.InnerText = "hardcover" + doc.DocumentElement.AppendChild(newElem) + + Console.WriteLine(Chr(13) + Chr(10) + "Display the modified XML...") + Console.WriteLine(doc.OuterXml) + End Sub + + ' Handle the NodeChanged event. + Public Sub MyNodeChangedEvent(ByVal src As Object, ByVal args As XmlNodeChangedEventArgs) + Console.Write("Node Changed Event: <0> changed", args.Node.Name) + If Not (args.Node.Value Is Nothing) Then + Console.WriteLine(" with value 0", args.Node.Value) + Else + Console.WriteLine("") + End If + End Sub + + ' Handle the NodeInserted event. + Public Sub MyNodeInsertedEvent(ByVal src As Object, ByVal args As XmlNodeChangedEventArgs) + Console.Write("Node Inserted Event: <0> inserted", args.Node.Name) + If Not (args.Node.Value Is Nothing) Then + Console.WriteLine(" with value 0", args.Node.Value) + Else + Console.WriteLine("") + End If + End Sub + +End Class ' End class +``` + +```csharp +using System; +using System.IO; +using System.Xml; + +public class Sample +{ + private const String filename = "books.xml"; + + public static void Main() + { + Sample mySample = new Sample(); + mySample.Run(filename); + } + + public void Run(String args) + { + + // Create and load the XML document. + Console.WriteLine ("Loading file {0} ...", args); + XmlDocument doc = new XmlDocument(); + doc.Load (args); + + // Create the event handlers. + doc.NodeChanged += new XmlNodeChangedEventHandler(this.MyNodeChangedEvent); + doc.NodeInserted += new XmlNodeChangedEventHandler(this.MyNodeInsertedEvent); + + // Change the book price. + doc.DocumentElement.LastChild.InnerText = "5.95"; + + // Add a new element. + XmlElement newElem = doc.CreateElement("style"); + newElem.InnerText = "hardcover"; + doc.DocumentElement.AppendChild(newElem); + + Console.WriteLine("\r\nDisplay the modified XML..."); + Console.WriteLine(doc.OuterXml); + + } + + // Handle the NodeChanged event. + public void MyNodeChangedEvent(Object src, XmlNodeChangedEventArgs args) + { + Console.Write("Node Changed Event: <{0}> changed", args.Node.Name); + if (args.Node.Value != null) + { + Console.WriteLine(" with value {0}", args.Node.Value); + } + else + Console.WriteLine(""); + } + + // Handle the NodeInserted event. + public void MyNodeInsertedEvent(Object src, XmlNodeChangedEventArgs args) + { + Console.Write("Node Inserted Event: <{0}> inserted", args.Node.Name); + if (args.Node.Value != null) + { + Console.WriteLine(" with value {0}", args.Node.Value); + } + else + Console.WriteLine(""); + } + +} // End class +``` + + 詳細については、「[XmlNodeChangedEventArgs メンバー](frlrfSystemXmlXmlNodeChangedEventArgsMembersTopic)」および「[XmlNodeChangedEventHandler デリゲート](frlrfSystemXmlXmlNodeChangedEventHandlerClassTopic)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/extending-the-dom.md b/docs/standard/data/xml/extending-the-dom.md new file mode 100644 index 00000000000..7d15d11b512 --- /dev/null +++ b/docs/standard/data/xml/extending-the-dom.md @@ -0,0 +1,258 @@ +--- +title: "DOM の拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: b5489c96-4afd-439a-a25d-fc82eb4a148d +caps.latest.revision: 5 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# DOM の拡張 +Microsoft .NET Framework は、XML ドキュメント オブジェクト モデル \(DOM\) の実装を提供するクラスの基本セットを備えています。 およびその派生クラスのメソッドとプロパティを利用して、XML ドキュメントの内容および構造の中で移動し、それらに対してクエリを実行し、それらを変更することができます。 + + DOM を使用して XML コンテンツをメモリに読み込むと、作成されたノードには、ノード名やノード型などの情報が格納されます。 場合によっては、基本クラスによっては提供されない特定のノード情報が必要になることもあります。 たとえば、ノードの行番号と位置が必要な場合です。 このような場合は、既存の DOM クラスから新しいクラスを派生させ、追加機能を持たせることができます。 + + 新しいクラスを派生させるときの一般的なガイドラインは、次の 2 つです。 + +- クラスからはクラスを派生させないことをお勧めします。 その代わりに、目的とするノード型に対応するクラスからクラスを派生させることをお勧めします。 たとえば、属性ノードの追加情報を返すようにする場合は、 クラスからクラスを派生させます。 + +- ノード作成メソッド以外の関数をオーバーライドするときは、常にその関数の基本バージョンを呼び出してから、他の処理を追加することをお勧めします。 + +## 独自のノード インスタンスの作成 + クラスは、ノード作成メソッドを持っています。 XML ファイルが読み込まれると、ノード作成メソッドが呼び出され、ノードが作成されます。 これらのメソッドをオーバーライドすると、ドキュメントが読み込まれるときに独自のノード インスタンスを作成できます。 たとえば、 クラスを拡張すると、 クラスが継承され、 メソッドがオーバーライドされます。 + + メソッドをオーバーライドし、 クラスの独自の実装を返す方法を次の例に示します。 + +```vb +Class LineInfoDocument + Inherits XmlDocument + Public Overrides Function CreateElement(prefix As String, localname As String, nsURI As String) As XmlElement + Dim elem As New LineInfoElement(prefix, localname, nsURI, Me) + Return elem + End Function 'CreateElement +End Class 'LineInfoDocument +``` + +```csharp +class LineInfoDocument : XmlDocument { + public override XmlElement CreateElement(string prefix, string localname, string nsURI) { + LineInfoElement elem = new LineInfoElement(prefix, localname, nsURI, this); + return elem; + } +``` + +## クラスの拡張 + クラスを拡張するには、既存の DOM クラスの 1 つから独自のクラスを派生させます。 その後、基本クラスの仮想メソッドやプロパティをオーバーライドしたり、独自のメソッドやプロパティを追加します。 + + 次の例では、 クラスと インターフェイスを実装する新しいクラスを作成しています。 行番号を収集できるようにする追加のメソッドとプロパティが定義されます。 + +```vb +Class LineInfoElement + Inherits XmlElement + Implements IXmlLineInfo + Private lineNumber As Integer = 0 + Private linePosition As Integer = 0 + + Friend Sub New(prefix As String, localname As String, nsURI As String, doc As XmlDocument) + MyBase.New(prefix, localname, nsURI, doc) + CType(doc, LineInfoDocument).IncrementElementCount() + End Sub 'New + + Public Sub SetLineInfo(linenum As Integer, linepos As Integer) + lineNumber = linenum + linePosition = linepos + End Sub 'SetLineInfo + + Public ReadOnly Property LineNumber() As Integer + Get + Return lineNumber + End Get + End Property + + Public ReadOnly Property LinePosition() As Integer + Get + Return linePosition + End Get + End Property + + Public Function HasLineInfo() As Boolean + Return True + End Function 'HasLineInfo +End Class 'LineInfoElement ' End LineInfoElement class. +``` + +```csharp +class LineInfoElement : XmlElement, IXmlLineInfo { + int lineNumber = 0; + int linePosition = 0; + internal LineInfoElement( string prefix, string localname, string nsURI, XmlDocument doc ) : base( prefix, localname, nsURI, doc ) { + ( (LineInfoDocument)doc ).IncrementElementCount(); + } + public void SetLineInfo( int linenum, int linepos ) { + lineNumber = linenum; + linePosition = linepos; + } + public int LineNumber { + get { + return lineNumber; + } + } + public int LinePosition { + get { + return linePosition; + } + } + public bool HasLineInfo() { + return true; + } +} // End LineInfoElement class. +``` + +### 例 + XML ドキュメントの要素数を数える例を次に示します。 + +```vb +Imports System +Imports System.Xml +Imports System.IO + + _ + +Class LineInfoDocument + Inherits XmlDocument + + Private elementCount As Integer + + Friend Sub New() + elementCount = 0 + End Sub 'New + + Public Overrides Function CreateElement(prefix As String, localname As String, nsURI As String) As XmlElement + Dim elem As New LineInfoElement(prefix, localname, nsURI, Me) + Return elem + End Function 'CreateElement + + Public Sub IncrementElementCount() + elementCount += 1 + End Sub 'IncrementElementCount + + Public Function GetCount() As Integer + Return elementCount + End Function 'GetCount +End Class 'LineInfoDocument + _ 'End LineInfoDocument class. + +Class LineInfoElement + Inherits XmlElement + + Friend Sub New(prefix As String, localname As String, nsURI As String, doc As XmlDocument) + MyBase.New(prefix, localname, nsURI, doc) + CType(doc, LineInfoDocument).IncrementElementCount() + End Sub 'New +End Class 'LineInfoElement + _ 'End LineInfoElement class. + +Public Class Test + + Private filename As [String] = "book.xml" + + Public Shared Sub Main() + + Dim doc As New LineInfoDocument() + doc.Load(filename) + Console.WriteLine("Number of elements in {0}: {1}", filename, doc.GetCount()) + End Sub 'Main +End Class 'Test +``` + +```csharp +using System; +using System.Xml; +using System.IO; + +class LineInfoDocument : XmlDocument { + + int elementCount; + internal LineInfoDocument():base() { + elementCount = 0; + } + + public override XmlElement CreateElement( string prefix, string localname, string nsURI) { + LineInfoElement elem = new LineInfoElement(prefix, localname, nsURI, this ); + return elem; + } + + public void IncrementElementCount() { + elementCount++; + } + + public int GetCount() { + return elementCount; + } +} // End LineInfoDocument class. + +class LineInfoElement:XmlElement { + + internal LineInfoElement( string prefix, string localname, string nsURI, XmlDocument doc ):base( prefix,localname,nsURI, doc ){ + ((LineInfoDocument)doc).IncrementElementCount(); + } +} // End LineInfoElement class. + +public class Test { + + const String filename = "book.xml"; + public static void Main() { + + LineInfoDocument doc =new LineInfoDocument(); + doc.Load(filename); + Console.WriteLine("Number of elements in {0}: {1}", filename, doc.GetCount()); + + } +} +``` + +##### 入力 + book.xml + +``` + + + The Handmaid's Tale + 14.95 + +``` + +##### 出力 + +``` +Number of elements in book.xml: 3 +``` + + XML DOM クラス \(System.Xml\) を拡張する方法の例については、www.gotdotnet.com\/userfiles\/XMLDom\/extendDOM.zip を参照してください。 + +## ノード イベント ハンドラー + .NET Framework による DOM の実装には、XML ドキュメントのノードが変更されたときにイベントを受け取って処理できるようにする、イベント システムも含まれています。 クラスと クラスを使用して、`NodeChanged` イベント、`NodeChanging` イベント、`NodeInserted` イベント、`NodeInserting` イベント、`NodeRemoved` イベント、および `NodeRemoving` イベントをキャプチャできます。 + + イベント処理プロセスは、派生クラスでも、元の DOM クラスとまったく同じように動作します。 + + ノード イベント処理の詳細については、「[イベント](../../../../docs/standard/events/index.md)」および「[XmlNodeChangedEventHandler デリゲート](frlrfSystemXmlXmlNodeChangedEventHandlerClassTopic)」を参照してください。 + +## 既定の属性と CreateElement メソッド + 派生クラスの メソッドをオーバーライドした場合は、ドキュメントの編集中に新しい要素を作成しても、既定の属性は追加されません。 これは編集中だけの問題です。 メソッドが既定の属性を に追加する機能を実行するため、この機能は メソッドにコーディングする必要があります。 既定の属性が含まれた を読み込めば、既定の属性が正しく処理されます。 既定の属性の詳細については、「[DOM の要素に対する新しい属性の作成](../../../../docs/standard/data/xml/creating-new-attributes-for-elements-in-the-dom.md)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/extending-xslt-style-sheets.md b/docs/standard/data/xml/extending-xslt-style-sheets.md new file mode 100644 index 00000000000..e0fa9e237cc --- /dev/null +++ b/docs/standard/data/xml/extending-xslt-style-sheets.md @@ -0,0 +1,38 @@ +--- +title: "XSLT スタイル シートの拡張 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: df4ba2bf-a99e-4d22-bbf3-04fc67669dbc +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XSLT スタイル シートの拡張 +このセクションでは、XSLT の機能を拡張するさまざまな方法について説明します。 拡張オブジェクトまたはパラメーターは、 クラスを使用して追加できます。 その後、スタイル シートから拡張オブジェクトまたはパラメーターを呼び出すことができます。 また、`msxsl:script` 要素を使用すると、スタイル シートにスクリプト ブロックを埋め込むことができます。 + +## このセクションの内容 + [XSLT 拡張オブジェクト](../../../../docs/standard/data/xml/xslt-extension-objects.md) + クラスを使用して XSLT 拡張オブジェクトを処理する方法を説明します。 + + [XSLT パラメーター](../../../../docs/standard/data/xml/xslt-parameters.md) + クラスを使用して XSLT パラメーターを処理する方法を説明します。 + + [msxsl:script を使用したスクリプト ブロック](../../../../docs/standard/data/xml/script-blocks-using-msxsl-script.md) + `msxsl:script` 要素の使い方を説明します。 + +## 関連項目 + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) \ No newline at end of file diff --git a/docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md new file mode 100644 index 00000000000..870adf9ac48 --- /dev/null +++ b/docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md @@ -0,0 +1,178 @@ +--- +title: "XpathNavigator を使用した XML データの抽出 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 095b0987-ee4b-4595-a160-da1c956ad576 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XpathNavigator を使用した XML データの抽出 +Microsoft .NET Framework において XML ドキュメントを表現する方法はいくつかあります。 これには、 を使用する方法、または クラスを使用する方法があります。 XML ドキュメントの異なる表現の間での移行を容易にするため、 クラスは、, オブジェクトまたは オブジェクトとして XML を抽出するためのメソッドおよびプロパティを多数提供しています。 + +## XPathNavigator から文字列への変換 + クラスの プロパティは、XML ドキュメント全体のマークアップ、または 1 つのノードとその子ノードのマークアップだけを取得するために使用されます。 + +> [!NOTE] +> プロパティは、ノードの子ノードのマークアップだけを取得します。 + + 以下は、1 つのノードとその子ノードを保存する方法と、 オブジェクトに含まれる XML ドキュメント全体を として保存する方法について説明するサンプル コードです。 + +```vb +Dim document As XPathDocument = New XPathDocument("input.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() + +' Save the entire input.xml document to a string. +Dim xml As String = navigator.OuterXml + +' Now save the Root element and its child nodes to a string. +navigator.MoveToChild(XPathNodeType.Element) +Dim root As String = navigator.OuterXml +``` + +```csharp +XPathDocument document = new XPathDocument("input.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +// Save the entire input.xml document to a string. +string xml = navigator.OuterXml; + +// Now save the Root element and its child nodes to a string. +navigator.MoveToChild(XPathNodeType.Element); +string root = navigator.OuterXml; +``` + +## XPathNavigator から XmlReader への変換 + メソッドは、XML ドキュメントのコンテンツ全体、または 1 つのノードとその子ノードを オブジェクトにストリーム出力するために使用されます。 + + オブジェクトが現在のノードとその子で作成されている場合、 オブジェクトの プロパティは に設定されます。 オブジェクトの メソッドが初めて呼び出されたときに、 の現在のノードに移動されます。 新しい オブジェクトは、XML ツリーの末尾に到達するまで読み取りを継続します。 この時点で、 メソッドは `false` を返し、 オブジェクトの プロパティは に設定されます。 + + オブジェクトの位置は、 オブジェクトの作成または移動によって変更されことはありません。 メソッドは、要素ノードまたはルート ノードに位置している場合にだけ有効です。 + + 1 つのノードとその子ノードを取得する方法と、 オブジェクト内の XML ドキュメント全体を含む オブジェクトを取得する方法の例を次に示します。 + +```vb +Dim document As XPathDocument = New XPathDocument("books.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() + +' Stream the entire XML document to the XmlReader. +Dim xml As XmlReader = navigator.ReadSubtree() + +While xml.Read() + Console.WriteLine(xml.ReadInnerXml()) +End While + +xml.Close() + +' Stream the book element and its child nodes to the XmlReader. +navigator.MoveToChild("bookstore", "") +navigator.MoveToChild("book", "") + +Dim book As XmlReader = navigator.ReadSubtree() + +While book.Read() + Console.WriteLine(book.ReadInnerXml()) +End While + +book.Close() +``` + +```csharp +XPathDocument document = new XPathDocument("books.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +// Stream the entire XML document to the XmlReader. +XmlReader xml = navigator.ReadSubtree(); + +while (xml.Read()) +{ + Console.WriteLine(xml.ReadInnerXml()); +} + +xml.Close(); + +// Stream the book element and its child nodes to the XmlReader. +navigator.MoveToChild("bookstore", ""); +navigator.MoveToChild("book", ""); + +XmlReader book = navigator.ReadSubtree(); + +while (book.Read()) +{ + Console.WriteLine(book.ReadInnerXml()); +} + +book.Close(); +``` + + この例は、`books.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#1](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/books.xml#1)] + +## XPathNavigator から XmlWriter への変換 + メソッドは、XML ドキュメントのコンテンツ全体、または 1 つのノードとその子ノードを オブジェクトにストリーム出力するために使用されます。 + + オブジェクトの位置は、 オブジェクトの作成によって変更されことはありません。 + + 1 つのノードとその子ノードを取得する方法と、 オブジェクト内の XML ドキュメント全体を含む オブジェクトを取得する方法の例を次に示します。 + +```vb +Dim document As XPathDocument = New XPathDocument("books.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() + +' Stream the entire XML document to the XmlWriter. +Dim xml As XmlWriter = XmlWriter.Create("newbooks.xml") +navigator.WriteSubtree(xml) +xml.Close() + +' Stream the book element and its child nodes to the XmlWriter. +navigator.MoveToChild("bookstore", "") +navigator.MoveToChild("book", "") + +Dim book As XmlWriter = XmlWriter.Create("book.xml") +navigator.WriteSubtree(book) +book.Close() +``` + +```csharp +XPathDocument document = new XPathDocument("books.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +// Stream the entire XML document to the XmlWriter. +XmlWriter xml = XmlWriter.Create("newbooks.xml"); +navigator.WriteSubtree(xml); +xml.Close(); + +// Stream the book element and its child nodes to the XmlWriter. +navigator.MoveToChild("bookstore", ""); +navigator.MoveToChild("book", ""); + +XmlWriter book = XmlWriter.Create("book.xml"); +navigator.WriteSubtree(book); +book.Close(); +``` + + この例は、このトピックの前の方にある `books.xml` ファイルを入力として使用します。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md) + [XPathNavigator を使用する属性と名前空間のナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md) + [厳密に型指定された XML データへの XPathNavigator を使用したアクセス](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/how-to-migrate-your-xsltransform-code.md b/docs/standard/data/xml/how-to-migrate-your-xsltransform-code.md new file mode 100644 index 00000000000..3b8ce50cedc --- /dev/null +++ b/docs/standard/data/xml/how-to-migrate-your-xsltransform-code.md @@ -0,0 +1,104 @@ +--- +title: "方法 : XslTransform コードを移行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 910beb2f-cfb3-4e8e-9936-f7e0c5f4064a +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# 方法 : XslTransform コードを移行する +新しい XSLT クラスは、従来のクラスに非常に近いものとなるように設計されています。 クラスは クラスを置き換えます。 スタイル シートは メソッドを使用してコンパイルされます。 変換は メソッドを使用して行われます。 次の手順では、一般的な XSLT 作業を挙げ、 クラスと クラスを使用したコードを比較します。 + +### ファイルを変換して URI に出力するには + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#9](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#9)] + [!code-vb[XML_Migration#9](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#9)] + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#10](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#10)] + [!code-vb[XML_Migration#10](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#10)] + +### スタイル シートをコンパイルして、既定の資格情報でリゾルバーを使用するには + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#11](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#11)] + [!code-vb[XML_Migration#11](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#11)] + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#12](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#12)] + [!code-vb[XML_Migration#12](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#12)] + +### XSLT パラメーターを使用するために必要な処理 + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#13](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#13)] + [!code-vb[XML_Migration#13](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#13)] + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#14](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#14)] + [!code-vb[XML_Migration#14](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#14)] + +### XSLT スクリプトを有効にするには + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#15](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#15)] + [!code-vb[XML_Migration#15](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#15)] + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#16](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#16)] + [!code-vb[XML_Migration#16](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#16)] + +### 結果を DOM オブジェクトに読み込むには + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#19](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#19)] + [!code-vb[XML_Migration#19](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#19)] + +- クラスを使用したコード。 + + > [!NOTE] + > クラスには、XSLT 変換結果を オブジェクトとして返すメソッドはありません。 しかし、XML ファイルに出力して、その XML ファイルを別のオブジェクトに読み込むことができます。 + + [!code-csharp[XML_Migration#20](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#20)] + [!code-vb[XML_Migration#20](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#20)] + +### 結果を別のデータ ストアにストリーム出力するには + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#17](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#17)] + [!code-vb[XML_Migration#17](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#17)] + +- クラスを使用したコード。 + + [!code-csharp[XML_Migration#18](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#18)] + [!code-vb[XML_Migration#18](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#18)] + +## 参照 + [XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md) + [XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md) \ No newline at end of file diff --git a/docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md b/docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md new file mode 100644 index 00000000000..030325a3290 --- /dev/null +++ b/docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md @@ -0,0 +1,194 @@ +--- +title: "方法 : アセンブリを使用して XSLT 変換を実行する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 76ee440b-d134-4f8f-8262-b917ad6dcbf6 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# 方法 : アセンブリを使用して XSLT 変換を実行する +XSLT コンパイラ \(xsltc.exe\) は、XSLT スタイル シートをコンパイルしてアセンブリを生成します。 このアセンブリを メソッドに直接渡すことができます。 + +### XML ファイルと XSLT ファイルをローカル コンピューターにコピーするには + +- XSLT ファイルをローカル コンピューターにコピーし、Transform.xsl という名前を付けます。 + + ``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TitleAuthorGenrePublish DatePrice
+ + + + + + + + + + + +
+ + +
+
+ ``` + +- XML ファイルをローカル コンピューターにコピーし、`books.xml` という名前を付けます。 + + ``` + + + + Gambardella, Matthew + XML Developer's Guide + Computer + $44.95 + 2000-10-01 + + + Ralls, Kim + Midnight Rain + Fantasy + $5.95 + 2000-12-16 + + + Corets, Eva + Maeve Ascendant + Fantasy + $5.95 + 2000-11-17 + + + Randall, Cynthia + Lover Birds + Romance + $4.95 + 2000-09-02 + + + Thurman, Paula + Splish Splash + Romance + $4.95 + 2000-11-02 + + + ``` + +### スクリプトを有効にしてスタイル シートをコンパイルするには + +1. コマンド ラインで次のコマンドを実行すると、`Transform.dll` および `Transform_Script1.dll` という名前で 2 つのアセンブリが作成されます \(これが既定の動作です。 他に指定しなければ、既定のクラス名とアセンブリ名はメインのスタイル シートの名前になります\)。 + + ``` + xsltc /settings:script+ Transform.xsl + ``` + + 次のコマンドを実行すると、クラス名が明示的に Transform に設定されます。 + +``` +xsltc /settings:script+ /class:Transform Transform.xsl +``` + +### コードをコンパイルするときにコンパイル済みアセンブリを参照として含めるには + +1. ソリューション エクスプローラーまたはコマンド ラインで参照を追加することで、Visual Studio にアセンブリを含めることができます。 + +2. コマンド ラインで C\# を使用する場合、次のように入力します。 + + ``` + csc myCode.cs /r:system.dll;system.xml.dll;Transform.dll + ``` + +3. コマンド ラインで Visual Basic を使用する場合、次のように入力します。 + + ``` + vbc myCode.vb /r:system.dll;system.xml.dll;Transform.dll + ``` + +### コンパイル済みアセンブリをコードで使用するには + +1. コンパイルしたスタイル シートを使用して XSLT 変換を実行する方法を次の例に示します。 + + [!code-csharp[XslTransform_XSLTC#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XslTransform_XSLTC/CS/XslTransform_XSLTC.cs#1)] + [!code-vb[XslTransform_XSLTC#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XslTransform_XSLTC/VB/XslTransform_XSLTC.vb#1)] + + 上記の例で、コンパイル済みアセンブリへのダイナミック リンクを作成するには、 + +``` +xslt.Load(typeof(Transform)) +``` + + with + +``` +xslt.Load(System.Reflection.Assembly.Load("Transform").GetType("Transform")) +``` + + に置き換えます。 Assembly.Load メソッドの詳細については、「」を参照してください。 + +## 参照 + + [XSLT コンパイラ \(xsltc.exe\)](../../../../docs/standard/data/xml/xslt-compiler-xsltc-exe.md) + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) + [csc.exe を使用したコマンド ラインからのビルド](../../../../ocs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md) \ No newline at end of file diff --git a/docs/standard/data/xml/how-to-transform-a-node-fragment.md b/docs/standard/data/xml/how-to-transform-a-node-fragment.md new file mode 100644 index 00000000000..907409190a8 --- /dev/null +++ b/docs/standard/data/xml/how-to-transform-a-node-fragment.md @@ -0,0 +1,57 @@ +--- +title: "方法 : ノード フラグメントを変換する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 73a6c582-b9d7-4fa7-9a05-6d931e1f3de8 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# 方法 : ノード フラグメントを変換する + オブジェクトまたは オブジェクトに含まれるデータを変換すると、XSLT 変換はドキュメント全体に適用されます。 つまり、ドキュメント ルート ノード以外のノードを指定しても、変換処理では、読み込んだドキュメントのすべてのノードがアクセスされます。 1 つのノード フラグメントを変換するには、ノード フラグメントだけを含むオブジェクトを別に作成し、そのオブジェクトを メソッドに渡します。 + +## 手順 + +#### 1 つのノード フラグメントを変換するには + +1. ソース ドキュメントを含むオブジェクトを作成します。 + +2. 変換するノード フラグメントを見つけます。 + +3. そのノード フラグメントだけの別のオブジェクトを作成します。 + +4. ノード フラグメントを メソッドに渡します。 + +## 例 + 次の例は、1 つのノード フラグメントを変換して、結果をコンソールに出力します。 + + [!code-csharp[XSLT_NodeFrag#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XSLT_NodeFrag/CS/xslt_frag.cs#1)] + [!code-vb[XSLT_NodeFrag#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XSLT_NodeFrag/VB/xslt_frag.vb#1)] + +### 入力 + +##### books.xml + [!code-xml[XML_Core_Files#1](../../../../samples/snippets/xml/VS_Snippets_Data/XML_Core_Files/XML/books.xml#1)] + +##### single.xsl + [!code-xml[XSLT_NodeFrag#2](../../../../samples/snippets/xml/VS_Snippets_Data/XSLT_NodeFrag/XML/single.xsl#2)] + +### 出力 + Book title is The Confidence Man. + +## 参照 + [XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md) \ No newline at end of file diff --git a/docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md b/docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md new file mode 100644 index 00000000000..64f3e940a55 --- /dev/null +++ b/docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md @@ -0,0 +1,95 @@ +--- +title: "XslTransform クラスの随意動作の実装 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: d2758ea1-03f6-47bd-88d2-0fb7ccdb2fab +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# XslTransform クラスの随意動作の実装 +> [!NOTE] +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + 随意動作とは、W3C \(World Wide Web Consortium\) 勧告『XSL Transformations \(XSLT\) Version 1.0』\(www.w3.org\/TR\/xslt\) で列挙されている動作で、ある状況に対処する手段として、実装プロバイダーが複数のオプションから 1 つ選択するものです。 たとえば、W3C Recommendation は、セクション 7.3「Creating Processing Instructions」で、`xsl:processing-instruction` の内容をインスタンス化したときに、テキスト ノード以外のノードが作成されるのはエラーであるとしています。 いくつかの問題に関しては、プロセッサがエラー状態から回復するときにどのような対処をするべきかを、W3C が規定しています。 セクション 7.3 に記述されている問題に関しては、W3C では、作成されたノードとその内容を無視することで、このエラーから回復できるとしています。 + + W3C で許可されている随意動作について、[!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の クラスに実装されている随意動作と、その問題について記述している W3C 勧告『XSLT 1.0』のセクションを次の表に示します。 + +|問題|動作|セクション| +|--------|--------|-----------| +|テキスト ノードが `xsl:strip-space` と `xsl:preserve-space` の両方に適合している。|復元|3.4| +|ソース ノードが複数のテンプレート規則に適合している。|復元|5.5| +|1 つの名前空間 URI \(Uniform Resource Identifier\) が同じインポート優先順位を持つ複数の名前空間 URI のエイリアスとして宣言されている。|復元|7.1.1| +|属性値テンプレートから生成された `xsl:attribute` と `xsl:element` 内の名前属性が有効な QName \(修飾名\) ではない。|例外をスロー|7.1.2 および 7.1.3| +|要素ノードに子ノードが既に追加されているにもかかわらず、その要素に属性が追加される。|復元|7.1.3| +|要素ノード以外のノードに属性が追加される。|復元|7.1.3| +|`xsl:attribute` 要素のコンテンツをインスタンス化してもテキスト ノードが作成されない。|復元|7.1.3| +|2 つの属性セットが同じインポート優先順位と展開名を持っている。 両方が同じ属性を持っており、同じ名前を持ち、より重要度の高い共通の属性が含まれた属性セットが他にない。|復元|7.1.4| +|`xsl:processing-instruction` 名前属性が NCName \(コロンが含まれていない名前\) も処理命令ターゲットも生成しない。|復元|7.3| +|`xsl:processing-instruction` の内容をインスタンス化すると、テキスト ノード以外のノードが作成される。|復元|7.3| +|`xsl:processing-instruction` の内容をインスタンス化した結果に文字列 "`?>`" が含まれている。|復元|7.3| +|`xsl:comment` の内容をインスタンス化した結果に文字列 "\-\-" が含まれているか、結果が "\-" で終了している。|復元|7.4| +|`xsl:comment` の内容をインスタンス化した結果、テキスト ノード以外のノードが作成される。|復元|7.4| +|変数バインディング要素内のテンプレートが属性ノードまたは名前空間ノードを返す。|復元|11.2| +|document 関数に渡された URI からのリソースの取得時にエラーが発生する。|例外をスロー|12.1| +|document 関数内の URI 参照にフラグメント ID が含まれており、その ID を処理するとエラーが発生する。|例外をスロー|12.1| +|同じ名前 \(`cdata-section-elements` の `xls:output` 以外\) を持つ複数の属性があり、これらの属性が同じインポート優先順位を持つ。|復元|16| +|プロセッサが `encoding` 要素の `xsl:output` 属性で指定されている文字エンコード値をサポートしない。|復元|16.1| +|`disable-output-escaping` がテキスト ノードに使用されており、そのテキスト ノードを使用して、結果ツリーにテキスト ノード以外のものが作成されている。|`disable-output-escaping` 属性を無視|16.4| +|出力エスケープが有効に設定されているテキスト ノードが結果ツリー フラグメントに含まれている場合に、そのフラグメントが数値や文字列に変換される。|無視|16.4| +|XSLT プロセッサが出力に使用しているエンコーディングで表すことができない文字に対して、出力エスケープが無効に設定される。|無視|16.4| +|要素に子または属性が追加された後で、その要素に名前空間ノードが追加される。|復元|正誤表 e25| +|`xsl:number` が NaN、無限、または 0.5 未満である。|復元|正誤表 e24| +|document 関数への 2 番目の引数ノード セットが空であり、URI 参照が相対 URI 参照である。|復元|正誤表 e14| + + 正誤表は、W3C \(World Wide Web Consortium\) の『XSL Transformations \(XSLT\) Version 1.0 Specification Errata』\(www.w3.org\/1999\/11\/REC\-xslt\-19991116\-errata\/\) にあります。 + +## カスタム定義の動作の実装 + クラスの実装には固有の動作があります。 このセクションでは、`xsl:sort` のプロバイダー固有の実装と、 クラスでサポートされているオプション機能について説明します。 + +## xsl:sort + W3C 勧告『XSLT 1.0』には、変換を使用した並べ替えに関する留意事項の記述があります。 それらは次のとおりです。 + +- 2 つの XSLT プロセッサの両方が勧告に準拠している場合でも、それらの並べ替え動作は異なることがあります。 + +- すべての XSLT プロセッサが同じ言語をサポートするわけではありません。 + +- 言語については、`xsl:sort.` で指定されていない特定の言語での並べ替え動作がプロセッサによって異なる場合があります。 + + を使用した変換の .NET Framework の実装で各データ型に対して実装されている並べ替え動作を次の表に示します。 + +|データ型|並べ替え動作| +|----------|------------| +|Text|データは、共通言語ランタイム \(CLR: Common Language Runtime\) の String.Compare メソッドとカルチャ ロケールを使用して並べ替えられます。 データ型が "テキスト" である場合、 クラスの並べ替え動作は、CLR の文字列比較動作と同じです。| +|Number|数値は、XPath \(XML Path Language\) 数値として処理され、W3C 勧告『XML Path Language \(XPath\) Version 1.0』のセクション 3.5 \(www.w3.org\/TR\/xpath.html\#numbers\) に記述されている方法に従って並べ替えられます。| + +## サポートされているオプション機能 + XSLT プロセッサがオプションで実装する機能を次に示します。これらの機能は、 クラスに実装されます。 + +|機能|参照先|メモ| +|--------|---------|--------| +|`disable-output-escaping` タグと `` タグの `` 属性|W3C 勧告『XSLT 1.0』

セクション 16.4|`disable-output-escaping` 要素または `xsl:text` 要素が `xsl:value-of`、`xsl:comment`、または `xsl:processing-instruction` のいずれかの要素で使用される場合、`xsl:attribute` 属性は無視されます。

テキストが含まれた結果ツリー フラグメントおよびエスケープされたテキスト出力はサポートされません。

オブジェクトまたは オブジェクトへの変換時には、disable\-output\-escaping 属性が無視されます。| + +## 参照 + + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [変換における XPathNavigator](../../../../docs/standard/data/xml/xpathnavigator-in-transformations.md) + [変換における XPathNodeIterator](../../../../docs/standard/data/xml/xpathnodeiterator-in-transformations.md) + [XslTransform への XPathDocument の入力](../../../../docs/standard/data/xml/xpathdocument-input-to-xsltransform.md) + [XslTransform への XmlDataDocument の入力](../../../../docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md) + [XslTransform への XmlDocument の入力](../../../../docs/standard/data/xml/xmldocument-input-to-xsltransform.md) \ No newline at end of file diff --git a/docs/standard/data/xml/including-or-importing-xml-schemas.md b/docs/standard/data/xml/including-or-importing-xml-schemas.md new file mode 100644 index 00000000000..871ee1c6c6a --- /dev/null +++ b/docs/standard/data/xml/including-or-importing-xml-schemas.md @@ -0,0 +1,114 @@ +--- +title: "XML スキーマのインクルードまたはインポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: fe1b4a11-37f4-4e1a-93c9-239f4fe736c0 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XML スキーマのインクルードまたはインポート +XML スキーマには、`` 要素、`` 要素、および `` 要素を含めることができます。 これらのスキーマ要素は、インクルードまたはインポートするスキーマの構造を補足するために使用できる他の XML スキーマを参照します。 クラス、 クラス、および クラスは、スキーマ オブジェクト モデル \(SOM\) API でこれらの要素にマップされます。 + +## XML スキーマのインクルードまたはインポート + 次のコード サンプルは、アドレス スキーマを使用して「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」で作成したカスタム スキーマを補足します。 アドレス スキーマを使用してカスタム スキーマを補足すると、カスタム スキーマでアドレス型が使用できるようになります。 + + アドレス スキーマを統合するには、`` 要素または `` 要素を使用して、アドレス スキーマのコンポーネントをそのまま使用するか、または `` 要素を使用して、カスタム スキーマのニーズに合わせてコンポーネントを変更します。 アドレス スキーマの `targetNamespace` はカスタム スキーマのものとは異なっているため、`` 要素 \(インポートのセマンティクス\) が使用されます。 + + このコード サンプルでは、アドレス スキーマのインクルードを次の手順で行います。 + +1. カスタム スキーマとアドレス スキーマを新しい オブジェクトに追加し、コンパイルします。 スキーマの読み込みまたはコンパイル時に発生するスキーマ検証に関する警告とエラーは、 デリゲートによって処理されます。 + +2. プロパティを反復処理して、 からカスタム スキーマとアドレス スキーマの両方に対するコンパイルされた オブジェクトを取得します。 これらのスキーマはコンパイルされているため、スキーマのコンパイル後の情報セット \(PSCI\) プロパティにアクセスできます。 + +3. オブジェクトを作成し、インポートの プロパティをアドレス スキーマの名前空間に設定し、インポートの プロパティをアドレス スキーマの オブジェクトに設定して、カスタム スキーマの プロパティにインポートを追加します。 + +4. クラスの メソッドおよび メソッドを使用して、カスタム スキーマの変更された オブジェクトの再処理とコンパイルを行って、コンソールに出力します。 + +5. 最後に、カスタム スキーマの プロパティを使用して、カスタム スキーマにインポートされたすべてのスキーマを再帰的にコンソールに出力します。 プロパティを使用すると、スキーマに追加されたすべてのインクルード、インポート、および再定義にアクセスできます。 + + 以下に、完全なコード サンプルおよびコンソールに出力されるカスタム スキーマとアドレス スキーマを示します。 + + [!code-cpp[XmlSchemaImportExample#1](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaImportExample/CPP/XmlSchemaImportExample.cpp#1)] + [!code-csharp[XmlSchemaImportExample#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaImportExample/CS/XmlSchemaImportExample.cs#1)] + [!code-vb[XmlSchemaImportExample#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaImportExample/VB/XmlSchemaImportExample.vb#1)] + +``` + + + + + + + + + + + + + + + + + + + + + + Addresses for International Purchase order schema + Copyright 2000 Example.com. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + `` 要素、`` 要素、`` 要素、および クラス、 クラス、 クラスの詳細については、「[W3C XML スキーマ](http://go.microsoft.com/fwlink/?LinkId=45242)」および 名前空間クラスのリファレンス ドキュメントを参照してください。 + +## 参照 + [XML スキーマ オブジェクト モデルの概要](../../../../docs/standard/data/xml/xml-schema-object-model-overview.md) + [XML スキーマの読み取りと書き込み](../../../../docs/standard/data/xml/reading-and-writing-xml-schemas.md) + [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) + [XML スキーマの走査](../../../../docs/standard/data/xml/traversing-xml-schemas.md) + [XML スキーマの編集](../../../../docs/standard/data/xml/editing-xml-schemas.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) \ No newline at end of file diff --git a/docs/standard/data/xml/index.md b/docs/standard/data/xml/index.md new file mode 100644 index 00000000000..e0b11ec0d9e --- /dev/null +++ b/docs/standard/data/xml/index.md @@ -0,0 +1,99 @@ +--- +title: "XML ドキュメントと XML データ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: e695047f-3c0f-4045-8708-5baea91cc380 +caps.latest.revision: 9 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 9 +--- +# XML ドキュメントと XML データ +.NET Framework には、XML 対応アプリを容易に構築するための、包括的で統合された一連のクラスが用意されています。 次の名前空間のクラスでは、XML の解析と書き込み、メモリ内での XML データの編集、データの検証、および XSLT 変換がサポートされます。 + +- + +- + +- + +- + +- + + 一覧については、「[System.Xml 名前空間](http://msdn.microsoft.com/library/gg145036.aspx)」Web ページを参照してください。 + + 次の名前空間のクラスでは、World Wide Web Consortium \(W3C\) 勧告がサポートされます。 次に例を示します。 + +- クラスは、[W3C ドキュメント オブジェクト モデル \(DOM\) 勧告の DOM Level 1 Core](http://www.w3.org/TR/REC-DOM-Level-1/) および [DOM Level 2 Core](http://www.w3.org/TR/DOM-Level-2-Core/) を実装しています。 + +- クラスと クラスは、W3C 勧告『[XML 1.0](http://www.w3.org/TR/2006/REC-xml-20060816/)』および『[Namespaces in XML](http://www.w3.org/TR/REC-xml-names/)』をサポートしています。 + +- クラスのスキーマは、W3C 勧告『[XML Schema Part 1: Structures](http://www.w3.org/TR/xmlschema-1/)』および『[XML Schema Part 2: Datatypes](http://www.w3.org/TR/xmlschema-2/)』をサポートしています。 + +- 名前空間のクラスは、W3C 勧告『[XSLT 1.0](http://www.w3.org/TR/xslt)』に準拠する XSLT 変換をサポートしています。 + + .NET Framework の XML クラスの利点を次に示します。 + +- **生産性。** [LINQ to XML](../../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-xml.md) により XML でのプログラミングがさらに容易になるほか、SQL と同じようにクエリを利用できます。 + +- **機能拡張。**.NET Framework の XML クラスは、抽象基本クラスと仮想メソッドを使用することによって拡張できます。 たとえば、キャッシュ ストリームをローカルのディスクに格納する クラスの派生クラスを作成できます。 + +- **プラグ可能なアーキテクチャ。**.NET Framework が提供するアーキテクチャでは、コンポーネントが相互に利用できます。また、コンポーネント間でデータをストリーム転送できます。 たとえば、 オブジェクト、 オブジェクトなどのデータ ストアは、 クラスを使って変換でき、その出力は、別のストアにストリーム転送することも、Web サービスからのストリームとして返すこともできます。 + +- **パフォーマンス。**アプリのパフォーマンスを高めるために、.NET Framework の一部の XML クラスはストリーム ベースのモデルをサポートし、次の特性を備えています。 + + - キャッシング処理を最小限に抑える前方参照専用のプル モデル解析 \(\)。 + + - 前方参照専用の検証 \(\)。 + + - 作成するノードを単一の仮想ノードに抑えながら、ドキュメントへのランダム アクセスを可能にする、カーソル スタイルのナビゲーション \(\)。 + + XSLT 処理が必要になるときのパフォーマンスを常に高めるために、 クラスを使用できます。このクラスは、 クラスと効率よく連携するように設計された、XPath クエリ用の最適化された読み取り専用ストアです。 + +- **ADO.NET との統合。**XML クラスと [ADO.NET](../../../../docs/framework/data/adonet/index.md) が緊密に統合されることで、リレーショナル データと XML が結合されます。 クラスは、データベースから取得されたデータのメモリ内キャッシュです。 クラスは、 クラスと クラスを使用して XML を読み書きする機能、内部リレーショナル スキーマ構造を XML スキーマ \(XSD\) として永続化する機能、および XML ドキュメントからスキーマ構造を推論する機能を備えています。 + +## このセクションの内容 + [XML の処理オプション](../../../../docs/standard/data/xml/xml-processing-options.md) + XML データの処理に関するオプションについて説明します。 + + [メモリ内の XML データの処理](../../../../docs/standard/data/xml/processing-xml-data-in-memory.md) + XML データをメモリ内で処理する 3 つの方法について説明します。 [LINQ to XML](../../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-xml.md)、 クラス \(W3C ドキュメント オブジェクト モデルに基づく\)、および クラス \(XPath データ モデルに基づく\)。 + + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) + XSLT プロセッサの使い方について説明します。 + + [XML スキーマ オブジェクト モデル \(SOM\)](../../../../docs/standard/data/xml/xml-schema-object-model-som.md) + スキーマの読み込みと編集のための クラスを提供することで、XML スキーマ \(XSD\) の作成と操作に使用されるクラスについて説明します。 + + [XML とリレーショナル データおよび ADO.NET との統合](../../../../docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md) + .NET Framework が オブジェクトと オブジェクトを介して、データのリレーショナル表現および階層表現の両方に対するリアルタイムの同期アクセスを実現するしくみついて説明します。 + + [XML ドキュメントでの名前空間の管理](../../../../docs/standard/data/xml/managing-namespaces-in-an-xml-document.md) + クラスを使用して、名前空間情報を格納および保持する方法について説明します。 + + [System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md) + XML データ型を CLR 型にマップする方法、XML データ型を変換する方法、および クラスのその他の型サポート機能について説明します。 + +## 関連項目 + [ADO.NET](../../../../docs/framework/data/adonet/index.md) + ADO.NET を使用してデータにアクセスする方法について説明します。 + + [セキュリティ](../../../../docs/standard/security/index.md) + .NET Framework セキュリティ システムの概要を説明します。 + + [XML デベロッパー センター](http://go.microsoft.com/fwlink/?linkid=42458) + 追加の技術情報、ダウンロード、ニュースグループ、および XML 開発者向けのその他のリソースを提供します。 \ No newline at end of file diff --git a/docs/standard/data/xml/inferring-an-xml-schema.md b/docs/standard/data/xml/inferring-an-xml-schema.md new file mode 100644 index 00000000000..57fbd88635a --- /dev/null +++ b/docs/standard/data/xml/inferring-an-xml-schema.md @@ -0,0 +1,42 @@ +--- +title: "XML スキーマの推論 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: b18e7ffd-3c04-482d-9934-ba2f6a59b2c9 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XML スキーマの推論 +スキーマ オブジェクト モデル \(SOM\) クラスを使用して、XML ドキュメントの構造から XML スキーマ定義言語 \(XSD\) スキーマを推論する方法を説明します。 + + 名前空間内のスキーマ オブジェクト モデル \(SOM\) クラスを使用すれば、XML ドキュメントの構造から XML スキーマ定義言語 \(XSD\) スキーマを推論できます。 クラスは XML ドキュメントの検証に使える XML スキーマを出力します。 + +## このセクションの内容 + [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md) + クラスを使用して XML ドキュメントの構造からスキーマを推論する方法を説明します。 + + [スキーマのノード型および構造を推論するときの規則](../../../../docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md) + XML ドキュメントで検出されたノード型をスキーマ構造に変換する推論のプロセスを説明します。 + + [単純型を推論するときの規則](../../../../docs/standard/data/xml/rules-for-inferring-simple-types.md) + クラスが属性と要素のデータ型を推論する方法を説明します。 + +## 参照 + [XML スキーマ オブジェクト モデル \(SOM\)](../../../../docs/standard/data/xml/xml-schema-object-model-som.md) + [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md) + [スキーマのノード型および構造を推論するときの規則](../../../../docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md) \ No newline at end of file diff --git a/docs/standard/data/xml/inferring-schemas-from-xml-documents.md b/docs/standard/data/xml/inferring-schemas-from-xml-documents.md new file mode 100644 index 00000000000..2b322eb7e54 --- /dev/null +++ b/docs/standard/data/xml/inferring-schemas-from-xml-documents.md @@ -0,0 +1,95 @@ +--- +title: "XML ドキュメントからのスキーマの推論 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: f3d97d53-614d-4a04-a174-87965b7405f6 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XML ドキュメントからのスキーマの推論 +このトピックでは、 クラスを使用して、XML ドキュメントの構造から XML スキーマ定義言語 \(XSD\) スキーマを推論する方法を説明します。 + +## スキーマの推論プロセス + 名前空間の クラスを使用して、XML ドキュメントの構造から 1 つ以上の XML スキーマ定義言語 \(XSD\) スキーマを生成できます。 生成されるスキーマは、元の XML ドキュメントの検証に使用できます。 + + XML ドキュメントは クラスによって処理されます。 クラスは、XML ドキュメント上の要素と属性を定義するスキーマ コンポーネントに関する推測を行います。 クラスは、特定の要素または属性について最も限定的な型を推論することにより、制限された方法でスキーマ コンポーネントを推論します。 XML ドキュメントに関する情報の蓄積が進むほど、より限定度の低い型が推論されることで、制約が緩和されます。 最も限定度が低い推論可能な型は `xs:string` です。 + + たとえば、次の XML ドキュメントを見てみましょう。 + +``` + + One + Two + + +``` + + 上の例で `attribute1` 属性の値 `6` が プロセスによって検出されると、この属性は `xs:unsignedByte` 型であると想定されます。 2 番目の `parent` 要素が プロセスによって検出されると、`attribute1` 属性の値が `A` であるため、型が `xs:string` に変更され、制限が緩和されます。 同様に、2 番目の親要素が子要素を持っていないため、スキーマで推論されるすべての `child` 要素の `minOccurs` 属性が `minOccurs="0"` に緩和されます。 + +## XML ドキュメントからのスキーマの推論 + クラスでは、2 つのオーバーロードされた メソッドを使用して XML ドキュメントからスキーマを推論します。 + + 最初の メソッドは、XML ドキュメントに基づくスキーマの作成に使用されます。 2 番目の メソッドは、複数の XML ドキュメントを記述するスキーマの推論に使用されます。 たとえば、複数の XML ドキュメントを 1 つずつ メソッドに渡すことで、XML ドキュメントのセット全体を記述する 1 つのスキーマを生成できます。 + + 最初の メソッドは、 オブジェクトに含まれている XML ドキュメントからスキーマを推論し、推論されたスキーマが含まれる オブジェクトを返します。 2 番目の メソッドは、 オブジェクトを対象として、 オブジェクトに含まれている XML ドキュメントと同じ対象の名前空間を持つスキーマを検索し、既存のスキーマを限定し、推論されたスキーマが含まれる オブジェクトを返します。 + + 限定されたスキーマに加えられた変更は、XML ドキュメントで検出された新しい構造に基づいています。 たとえば、XML ドキュメントが詳細に検討されるときは、検出されるデータ型が想定され、その想定に基づいてスキーマが作成されます。 しかし、2 回目の推論で検出されたデータが最初の想定と異なっている場合は、スキーマが限定されます。 次の例は限定のプロセスを示しています。 + + [!code-cpp[XmlSchemaInferenceExamples#4](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaInferenceExamples/CPP/XmlSchemaInferenceExamples.cpp#4)] + [!code-csharp[XmlSchemaInferenceExamples#4](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaInferenceExamples/CS/XmlSchemaInferenceExamples.cs#4)] + [!code-vb[XmlSchemaInferenceExamples#4](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaInferenceExamples/VB/XmlSchemaInferenceExamples.vb#4)] + + この例では、次に示す `item1.xml` というファイルを最初の入力として受け取ります。 + + [!code-xml[XmlSchemaInferenceExamples#13](../../../../samples/snippets/xml/VS_Snippets_Data/XmlSchemaInferenceExamples/XML/item1.xml#13)] + + この例では、さらに `item2.xml` というファイルを 2 番目の入力として受け取ります。 + + [!code-xml[XmlSchemaInferenceExamples#14](../../../../samples/snippets/xml/VS_Snippets_Data/XmlSchemaInferenceExamples/XML/item2.xml#14)] + + 最初の XML ドキュメントで `productID` 属性が検出されると、値 `123456789` は `xs:unsignedInt` 型であると想定されます。 しかし、2 番目の XML ドキュメントが読み取られ、値 `A53-246` が検出されると、`xs:unsignedInt` 型だとは想定できなくなります。 そこで、スキーマは限定され、`productID` の型が `xs:string` に変更されます。 さらに、2 番目の XML ドキュメントに `supplierID` 要素が含まれていないため、`supplierID` 要素の `minOccurs` 属性が `0` に設定されます。 + + 次に示すのは、最初の XML ドキュメントから推論されたスキーマです。 + + [!code-xml[XmlSchemaInferenceExamples#15](../../../../samples/snippets/xml/VS_Snippets_Data/XmlSchemaInferenceExamples/XML/InferSchema1.xml#15)] + + 次に示すのは、最初の XML ドキュメントから推論され、2 番目の XML ドキュメントによって限定されたスキーマです。 + + [!code-xml[XmlSchemaInferenceExamples#16](../../../../samples/snippets/xml/VS_Snippets_Data/XmlSchemaInferenceExamples/XML/InferSchema2.xml#16)] + +## インライン スキーマ + プロセスの実行中にインライン XML スキーマ定義言語 \(XSD\) スキーマが検出されると、 がスローされます。 たとえば、次のインライン スキーマが検出されると、 がスローされます。 + +``` + + + + + Test + +``` + +## 限定できないスキーマ + 限定を目的として型を渡されたときに、XML スキーマ定義言語 \(XSD\) スキーマの プロセスが処理できず、例外をスローする W3C XML スキーマ構造があります。 最上位のコンポジターがシーケンス以外のものである複合型がその例です。 スキーマ オブジェクト モデル \(SOM\) では、 プロパティが のインスタンスでない がそれに相当します。 + +## 参照 + + [XML スキーマ オブジェクト モデル \(SOM\)](../../../../docs/standard/data/xml/xml-schema-object-model-som.md) + [XML スキーマの推論](../../../../docs/standard/data/xml/inferring-an-xml-schema.md) + [スキーマのノード型および構造を推論するときの規則](../../../../docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md) + [単純型を推論するときの規則](../../../../docs/standard/data/xml/rules-for-inferring-simple-types.md) \ No newline at end of file diff --git a/docs/standard/data/xml/inputs-to-the-xslcompiledtransform-class.md b/docs/standard/data/xml/inputs-to-the-xslcompiledtransform-class.md new file mode 100644 index 00000000000..61e74518ddc --- /dev/null +++ b/docs/standard/data/xml/inputs-to-the-xslcompiledtransform-class.md @@ -0,0 +1,64 @@ +--- +title: "XslCompiledTransform クラスへの入力 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 834049f1-ab41-449e-9f10-4a1d0701bc48 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XslCompiledTransform クラスへの入力 + メソッドには、 インターフェイスを実装するオブジェクト、ソース ドキュメントを読み取る オブジェクト、文字列 URI という 3 種類のソース ドキュメントを入力できます。 + +> [!NOTE] +> クラスは既定で空白を維持します。 このことは、W3C XSLT 1.0 勧告 \(セクション 3.4、http:\/\/www.w3.org\/TR\/xslt.html\#strip\) のセクション 3.4 に準拠しています。 + +## IXPathNavigable インターフェイス + インターフェイスは、 および クラスに実装されています。 これらのクラスは XML データのメモリ内のキャッシュを表します。 + +- クラスは W3C ドキュメント オブジェクト モデル \(DOM\) を基礎とし、編集機能も含んでいます。 + +- クラスは、XPath データ モデルに基づいた読み取り専用のデータ ストアです。 は、XSLT 処理に推奨されるクラスです。 これは、 クラスと比較して、より高速なパフォーマンスを提供します。 + +> [!NOTE] +> 変換はドキュメント全体に対して行われます。 つまり、ドキュメント ルート ノード以外のノードを指定しても、変換処理では、読み込んだドキュメントのすべてのノードがアクセスされます。 ノード フラグメントを変換するには、ノード フラグメントだけを含むオブジェクトを作成し、そのオブジェクトを メソッドに渡します。 詳細については、「[方法 : ノード フラグメントを変換する](../../../../docs/standard/data/xml/how-to-transform-a-node-fragment.md)」を参照してください。 + + 次の例では、 メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 books.xml ファイルおよび transform.xsl ファイルについては、「[方法 : アセンブリを使用して XSLT 変換を実行する](../../../../docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md)」を参照してください。 + + [!code-csharp[XslCompiledTransform.Transform2#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XslCompiledTransform.Transform2/CS/Program.cs#1)] + [!code-vb[XslCompiledTransform.Transform2#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XslCompiledTransform.Transform2/VB/Module1.vb#1)] + +## XmlReader オブジェクト + メソッドは、 の現在のノードから、そのすべての子を通して読み込みます。 これにより、ドキュメントの一部をコンテキスト ドキュメントとして使用することができます。 メソッドから帰った後、 は、コンテキスト ドキュメントの終了後の次のノード上に位置します。 ドキュメントの末尾に到達すると、 はファイルの末尾 \(EOF\) に位置します。 + + 次の例では、 メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 books.xml ファイルおよび transform.xsl ファイルについては、「[方法 : アセンブリを使用して XSLT 変換を実行する](../../../../docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md)」を参照してください。 + + [!code-csharp[XslCompiledTransform.Transform2#2](../../../../samples/snippets/csharp/VS_Snippets_Data/XslCompiledTransform.Transform2/CS/Program.cs#2)] + [!code-vb[XslCompiledTransform.Transform2#2](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XslCompiledTransform.Transform2/VB/Module1.vb#2)] + +## 文字列 URI + XSLT の入力としてソース ドキュメントの URI を指定することもできます。 URI の解決には が使用されます。 メソッドに渡して、使用するリゾルバーを指定することができます。 が指定されていない場合、 メソッドは既定の を資格情報なしで使用します。 + + 次の例では、 メソッドにより、transform.xsl スタイル シートを使用して books.xml ファイルを books.html ファイルに変換しています。 books.xml ファイルおよび transform.xsl ファイルについては、「[方法 : アセンブリを使用して XSLT 変換を実行する](../../../../docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md)」を参照してください。 + + [!code-csharp[XslCompiledTransform.Transform2#3](../../../../samples/snippets/csharp/VS_Snippets_Data/XslCompiledTransform.Transform2/CS/Program.cs#3)] + [!code-vb[XslCompiledTransform.Transform2#3](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XslCompiledTransform.Transform2/VB/Module1.vb#3)] + + 詳細については、「[XSLT 処理中の外部リソースの解決](../../../../docs/standard/data/xml/resolving-external-resources-during-xslt-processing.md)」を参照してください。 + +## 参照 + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) \ No newline at end of file diff --git a/docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md new file mode 100644 index 00000000000..557bcea3f78 --- /dev/null +++ b/docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md @@ -0,0 +1,344 @@ +--- +title: "XPathNavigator による XML データの挿入 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 2ed8c28b-b88d-4be7-9c87-92df01f0821f +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathNavigator による XML データの挿入 + クラスは、XML ドキュメント内に兄弟ノード、子ノード、および属性ノードを挿入するためのメソッドのセットを提供します。 これらのメソッドを使用するには、 オブジェクトが編集可能である必要があります。つまり、その プロパティを `true` にする必要があります。 + + XML ドキュメントを編集できる オブジェクトは、 クラスの メソッドによって作成されます。 クラスによって作成される オブジェクトは読み取り専用であり、 オブジェクトによって作成される オブジェクトの編集メソッドを使用しようとすると、 が発生します。 + + 編集可能な オブジェクトの作成に関する詳細については、「[XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)」を参照してください。 + +## ノードの挿入 + クラスは、XML ドキュメント内に兄弟ノード、子ノード、および属性ノードを挿入するためのメソッドを提供します。 これらのメソッドによって、 オブジェクトの現在位置に関連した異なる場所にノードまたは属性を挿入できます。これらのメソッドについて以下に説明します。 + +### 兄弟ノードの挿入 + クラスは、兄弟ノードを挿入する次のメソッドを提供します。 + +- + +- + +- + +- + + これらのメソッドは オブジェクトの現在位置にあるノードの前と後に兄弟ノードを挿入します。 + + および メソッドは、オーバーロードされ、`string`、 オブジェクト、または追加する兄弟ノードをパラメーターとして含む オブジェクトを受け取ります。 両方のメソッドは、兄弟ノードの挿入に使用される オブジェクトも返します。 + + および メソッドは、パラメーターとして指定された名前空間プレフィックス、ローカル名、名前空間 URI、および値を使用して オブジェクトの現在位置にあるノードの前と後に、1 つの兄弟ノードを挿入します。 + + 次の例では、新しい `pages` 要素が `contosoBooks.xml` ファイル内の最初の `book` 要素の `price` 子要素の前に挿入されます。 + + [!code-cpp[XPathNavigatorMethods#19](../../../../samples/snippets/cpp/VS_Snippets_Data/XPathNavigatorMethods/CPP/xpathnavigatormethods.cpp#19)] + [!code-csharp[XPathNavigatorMethods#19](../../../../samples/snippets/csharp/VS_Snippets_Data/XPathNavigatorMethods/CS/xpathnavigatormethods.cs#19)] + [!code-vb[XPathNavigatorMethods#19](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XPathNavigatorMethods/VB/xpathnavigatormethods.vb#19)] + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + + 、および メソッドの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +### 子ノードの挿入 + クラスは、子ノードを挿入する次のメソッドを提供します。 + +- + +- + +- + +- + + これらのメソッドは、 オブジェクトの現在位置にあるノードの一連の子ノードの最後と最初に、子ノードを追加します。 + + 「兄弟ノードの挿入」のメソッドと同様、 および メソッドは、`string`、 オブジェクト、または追加する子ノードをパラメーターとして含む オブジェクトを受け取ります。 両方のメソッドは、子ノードの挿入に使用される オブジェクトも返します。 + + また、「兄弟ノードの挿入」のメソッドと同様、 および メソッドは、パラメーターとして指定された名前空間プレフィックス、ローカル名、名前空間 URI、および値を使用して オブジェクトの現在位置にあるノードの一連の子ノードの最初と最後に 1 つの子ノードを追加します。 + + 次の例では、新しい `pages` 子要素が `contosoBooks.xml` ファイル内の最初の `book` 要素の一連の子要素に追加されます。 + + [!code-cpp[XPathNavigatorMethods#2](../../../../samples/snippets/cpp/VS_Snippets_Data/XPathNavigatorMethods/CPP/xpathnavigatormethods.cpp#2)] + [!code-csharp[XPathNavigatorMethods#2](../../../../samples/snippets/csharp/VS_Snippets_Data/XPathNavigatorMethods/CS/xpathnavigatormethods.cs#2)] + [!code-vb[XPathNavigatorMethods#2](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XPathNavigatorMethods/VB/xpathnavigatormethods.vb#2)] + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + + 、および メソッドの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +### 属性ノードの挿入 + クラスは、属性ノードを挿入する次のメソッドを提供します。 + +- + +- + + これらのメソッドは オブジェクトの現在位置にある要素ノードに属性ノードを挿入します。 メソッドは、パラメーターとして指定された名前空間プレフィックス、ローカル名、名前空間 URI、および値を使用して オブジェクトの現在位置にある要素ノードに、属性ノードを作成します。 メソッドは、属性ノードの挿入に使用される オブジェクトも返します。 + + 次の例では、 メソッドから返された オブジェクトを使用して、新しい `discount` および `currency` 属性が `contosoBooks.xml` ファイル内の最初の `book` 要素の `price` 子要素に作成されます。 + + [!code-cpp[XPathNavigatorMethods#8](../../../../samples/snippets/cpp/VS_Snippets_Data/XPathNavigatorMethods/CPP/xpathnavigatormethods.cpp#8)] + [!code-csharp[XPathNavigatorMethods#8](../../../../samples/snippets/csharp/VS_Snippets_Data/XPathNavigatorMethods/CS/xpathnavigatormethods.cs#8)] + [!code-vb[XPathNavigatorMethods#8](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XPathNavigatorMethods/VB/xpathnavigatormethods.vb#8)] + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + + および メソッドの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +## ノードのコピー + 別の XML ドキュメントの内容を使用して XML ドキュメントを作成する場合があります。 クラスおよび クラスは、既存の オブジェクトまたは オブジェクトから オブジェクトへノードをコピーできます。 + + クラスの 、および メソッドにはすべて、パラメーターとして オブジェクトまたは オブジェクトの受け取りが可能なオーバーロードがあります。 + + クラスの メソッドには、、または オブジェクトの受け取りが可能なオーバーロードがあります。 + + 次の例では、あるドキュメントからすべての `book` 要素を別のドキュメントにコピーします。 + +```vb +Dim document As XmlDocument = New XmlDocument() +document.Load("books.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() + +navigator.MoveToChild("bookstore", String.Empty) + +Dim newBooks As XPathDocument = New XPathDocument("newBooks.xml") +Dim newBooksNavigator As XPathNavigator = newBooks.CreateNavigator() + +Dim nav As XPathNavigator +For Each nav in newBooksNavigator.SelectDescendants("book", "", false) + navigator.AppendChild(nav) +Next + +document.Save("newBooks.xml"); +``` + +```csharp +XmlDocument document = new XmlDocument(); +document.Load("books.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +navigator.MoveToChild("bookstore", String.Empty); + +XPathDocument newBooks = new XPathDocument("newBooks.xml"); +XPathNavigator newBooksNavigator = newBooks.CreateNavigator(); + +foreach (XPathNavigator nav in newBooksNavigator.SelectDescendants("book", "", false)) +{ + navigator.AppendChild(nav); +} + +document.Save("newBooks.xml"); +``` + +## 値の挿入 + クラスは、 オブジェクトにノードの値を挿入する および メソッドを提供しています。 + +### 型指定されていない値の挿入 + メソッドは、パラメーターとして渡された型指定されていない `string` 値を挿入するだけです。このパラメーターは、 オブジェクトの現在位置にあるノードの値です。 値に型は設定されず、スキーマ情報が使用可能な場合でも、ノードの型に対して新しい値が有効どうかを検証せずに挿入されます。 + + メソッドを使用して `contosoBooks.xml` フィァイル内のすべての `price` 要素を更新する例を次に示します。 + + [!code-cpp[XPathNavigatorMethods#47](../../../../samples/snippets/cpp/VS_Snippets_Data/XPathNavigatorMethods/CPP/xpathnavigatormethods.cpp#47)] + [!code-csharp[XPathNavigatorMethods#47](../../../../samples/snippets/csharp/VS_Snippets_Data/XPathNavigatorMethods/CS/xpathnavigatormethods.cs#47)] + [!code-vb[XPathNavigatorMethods#47](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XPathNavigatorMethods/VB/xpathnavigatormethods.vb#47)] + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + +### 型指定された値の挿入 + ノードの型が W3C XML スキーマの単純型の場合、 メソッドによって挿入される新しい値は、値の設定前に、単純型のファセットに対してチェックされます。 新しい値がノードの型に対して無効な場合 \(たとえば、型が `xs:positiveInteger` の要素に、値 `-1` を設定するような場合\)、例外が返されます。 + + 次の例では、`contosoBooks.xml` ファイル内の最初の `book` 要素の `price` 要素の値を 値に変更しようとしています。 `price` 要素の XML スキーマ型は、`contosoBooks.xsd` ファイル内で `xs:decimal` として定義されているため、結果は例外になります。 + +```vb +Dim settings As XmlReaderSettings = New XmlReaderSettings() +settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd") +settings.ValidationType = ValidationType.Schema + +Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings) + +Dim document As XmlDocument = New XmlDocument() +document.Load(reader) +Dim navigator As XPathNavigator = document.CreateNavigator() + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books") +navigator.MoveToChild("book", "http://www.contoso.com/books") +navigator.MoveToChild("price", "http://www.contoso.com/books") + +navigator.SetTypedValue(DateTime.Now) +``` + +```csharp +XmlReaderSettings settings = new XmlReaderSettings(); +settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd"); +settings.ValidationType = ValidationType.Schema; + +XmlReader reader = XmlReader.Create("contosoBooks.xml", settings); + +XmlDocument document = new XmlDocument(); +document.Load(reader); +XPathNavigator navigator = document.CreateNavigator(); + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books"); +navigator.MoveToChild("book", "http://www.contoso.com/books"); +navigator.MoveToChild("price", "http://www.contoso.com/books"); + +navigator.SetTypedValue(DateTime.Now); +``` + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + + また、`contosoBooks.xsd` ファイルも入力として使用します。 + + [!code-xml[XPathXMLExamples#3](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xsd#3)] + +## InnerXml および OuterXml プロパティ + クラスの および プロパティは、 オブジェクトの現在位置にある XML マークアップを変更します。 + + プロパティは、与えられた XML `string` の解析済みの内容を使用して オブジェクトの現在位置にある子ノードの XML マークアップを変更します。 同様に、 プロパティは、 オブジェクトの現在位置にある子ノードと現在のノード自体の XML マークアップを変更します。 + + このトピックで説明したメソッドに加えて、 プロパティと プロパティは、XML ドキュメントからノードに値を挿入するために使用できます。 プロパティと プロパティを使用してノードと値を挿入する方法の詳細については「[XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md)」を参照してください。 + +## 名前空間と xml:lang の競合 + パラメーターとして オブジェクトを受け取る クラスの 、および メソッドを使用して XML データを挿入する場合、名前空間のスコープと `xml:lang` 宣言に関連する競合が発生する可能性があります。 + + 発生する可能性のある名前空間の競合は次のとおりです。 + +- オブジェクトのコンテキスト内のスコープに名前空間があり、プレフィックスから名前空間 URI へのマッピングが オブジェクトのコンテキスト内にない場合、新たに挿入されたノードに関する新しい名前空間宣言が追加されます。 + +- オブジェクトのコンテキスト内と オブジェクトのコンテキスト内の両方のスコープに同じ名前空間 URI があるが、両方のコンテキスト内で別のプレフィックスにマップされている場合、 オブジェクトからのプレフィックスと名前空間 URI を使用して、新たに挿入されたノードに対する新しい名前空間宣言が追加されます。 + +- オブジェクトのコンテキスト内と オブジェクトのコンテキスト内の両方のスコープに同じ名前空間プレフィックスがあるが、両方のコンテキスト内で別の名前空間 URI にマップされている場合、新たに挿入されたノードに対する新しい名前空間宣言が追加され、 オブジェクトからの名前空間 URI を使用してそのプレフィックスを再宣言します。 + +- オブジェクトのコンテキスト内と オブジェクトのコンテキスト内の両方で、プレフィックスと名前空間 URI が同じ場合、新たに挿入されたノードに対する新しい名前空間宣言は追加されません。 + +> [!NOTE] +> 上記の説明は、プレフィックスとして空の `string` \(たとえば、既定の名前空間宣言\) を使用した名前空間宣言にも適用されます。 + + 発生する可能性のある `xml:lang` の競合は次のとおりです。 + +- `xml:lang` 属性が オブジェクトのコンテキスト内のスコープにあるが、 オブジェクトのコンテキスト内にはない場合、 オブジェクトから受け取った値を持つ `xml:lang` 属性が、新たに挿入されたノードに対して追加されます。 + +- `xml:lang` 属性が オブジェクトのコンテキスト内と オブジェクトのコンテキスト内の両方のスコープにあるが、それぞれの値が異なる場合、 オブジェクトから受け取った値を持つ `xml:lang` 属性が、新たに挿入されたノードに対して追加されます。 + +- `xml:lang` 属性が オブジェクトのコンテキスト内と オブジェクトのコンテキスト内の両方のスコープにあるが、それぞれの値が同じ場合、新たに挿入されたノードに対して新しい `xml:lang` 属性は追加されません。 + +- `xml:lang` 属性が オブジェクトのコンテキスト内のスコープにあるが、 オブジェクトのコンテキスト内にはない場合、新たに挿入されたノードに対して `xml:lang` 属性は追加されません。 + +## XmlWriter によるノードの挿入 + 「ノードと値の挿入」に記載されている兄弟ノード、子ノード、および属性ノードの挿入に使用されるメソッドはオーバーロードされます。 クラスの 、および メソッドは、ノードの挿入に使用される オブジェクトを返します。 + +### サポートされていない XmlWriter メソッド + XPath データ モデルとドキュメント オブジェクト モデル \(DOM\) には相違点があるため、 クラスによる XML ドキュメントへの情報の書き込みで使用されるメソッドのすべてが クラスによってサポートされているわけではありません。 + + クラスによってサポートされない クラス メソッドについて次の表で説明します。 + +|メソッド|説明| +|----------|--------| +|| 例外をスローします。| +||ルート レベルでは無視され、XML ドキュメント内の他のレベルで呼び出された場合は、 例外をスローします。| +||同じ文字または文字列についての メソッドの呼び出しとして扱われます。| +||同じ文字または文字列についての メソッドの呼び出しとして扱われます。| +||同じ文字または文字列についての メソッドの呼び出しとして扱われます。| + + クラスに関する詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +### 複数の XmlWriter オブジェクト + 1 つ以上の開いた オブジェクトを使用して、XML ドキュメントの異なる部分を指す複数の オブジェクトを持つことができます。 複数の オブジェクトは、単一スレッドのシナリオで許可されサポートされます。 + + 以下は、複数の オブジェクト使用時の重要な注意事項です。 + +- それぞれの オブジェクトの メソッドが呼び出されるときに、 オブジェクトによって書き込まれる XML フラグメントが XML ドキュメントに追加されます。 その時点まで、 オブジェクトは、まとまっていないフラグメントを書き込んでいます。 XML ドキュメントに対する操作が実行される場合、 の呼び出し前に オブジェクトによって書き込まれているフラグメントは影響を受けません。 + +- 特定の XML サブツリー上に、開いた オブジェクトがあり、そのサブツリーが削除された場合、 オブジェクトが引き続きそのサブツリーに追加する可能性があります。 サブツリーは単に削除済みフラグメントになります。 + +- XML ドキュメント内の同じ位置で、複数の オブジェクトが開かれた場合、 オブジェクトが開かれた順序ではなく、それらが閉じられる順序で XML ドキュメントにそれらが追加されます。 + + 次の例では、 オブジェクトを作成し、 オブジェクトを作成した後、 メソッドによって返される オブジェクトを使用して、`books.xml` ファイル内に最初の book 構造体を作成します。 この例は、それを `book.xml` ファイルとして保存します。 + +```vb +Dim document As XmlDocument = New XmlDocument() +Dim navigator As XPathNavigator = document.CreateNavigator() + +Using writer As XmlWriter = navigator.PrependChild() + + writer.WriteStartElement("bookstore") + writer.WriteStartElement("book") + writer.WriteAttributeString("genre", "autobiography") + writer.WriteAttributeString("publicationdate", "1981-03-22") + writer.WriteAttributeString("ISBN", "1-861003-11-0") + writer.WriteElementString("title", "The Autobiography of Benjamin Franklin") + writer.WriteStartElement("author") + writer.WriteElementString("first-name", "Benjamin") + writer.WriteElementString("last-name", "Franklin") + writer.WriteElementString("price", "8.99") + writer.WriteEndElement() + writer.WriteEndElement() + writer.WriteEndElement() + +End Using + +document.Save("book.xml") +``` + +```csharp +XmlDocument document = new XmlDocument(); +XPathNavigator navigator = document.CreateNavigator(); + +using (XmlWriter writer = navigator.PrependChild()) +{ + writer.WriteStartElement("bookstore"); + writer.WriteStartElement("book"); + writer.WriteAttributeString("genre", "autobiography"); + writer.WriteAttributeString("publicationdate", "1981-03-22"); + writer.WriteAttributeString("ISBN", "1-861003-11-0"); + writer.WriteElementString("title", "The Autobiography of Benjamin Franklin"); + writer.WriteStartElement("author"); + writer.WriteElementString("first-name", "Benjamin"); + writer.WriteElementString("last-name", "Franklin"); + writer.WriteElementString("price", "8.99"); + writer.WriteEndElement(); + writer.WriteEndElement(); + writer.WriteEndElement(); +} +document.Save("book.xml"); +``` + +## XML ドキュメントの保存 + ここに記載されているメソッドによる オブジェクトに対する変更の保存は、 クラスのメソッドを使用して実行されます。 オブジェクトに対する変更の保存に関する詳細については、「[ドキュメントの保存と書き込み](../../../../docs/standard/data/xml/saving-and-writing-a-document.md)」を参照してください。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データの削除](../../../../docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/inserting-nodes-into-an-xml-document.md b/docs/standard/data/xml/inserting-nodes-into-an-xml-document.md new file mode 100644 index 00000000000..780519ff0d7 --- /dev/null +++ b/docs/standard/data/xml/inserting-nodes-into-an-xml-document.md @@ -0,0 +1,28 @@ +--- +title: "XML ドキュメントへのノードの挿入 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 891e54f5-54f6-4bb4-b624-9d1b6a1f1216 +caps.latest.revision: 3 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XML ドキュメントへのノードの挿入 +新しいノードを挿入してドキュメントを変更できます。 ノードは、新しく作成したり、同じドキュメントの既存のノードから作成したり、別のドキュメントからインポートしたりできます。 新しいノードを作成する方法の詳細については、「[DOM への新しいノードの作成](../../../../docs/standard/data/xml/create-new-nodes-in-the-dom.md)」を参照してください。 既存のノードをコピーする方法の詳細については、「[既存のノードのコピー](../../../../docs/standard/data/xml/copy-existing-nodes.md)」、「[ドキュメント間での既存のノードのコピー](../../../../docs/standard/data/xml/copying-existing-nodes-from-one-document-to-another.md)」、または「[ドキュメント フラグメントのコピー](../../../../docs/standard/data/xml/copying-document-fragments.md)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/load-data-from-a-reader.md b/docs/standard/data/xml/load-data-from-a-reader.md new file mode 100644 index 00000000000..bb29b2ccdb9 --- /dev/null +++ b/docs/standard/data/xml/load-data-from-a-reader.md @@ -0,0 +1,42 @@ +--- +title: "リーダーからのデータの読み込み | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 7e74918c-bc72-4977-a49b-e1520a6d8f60 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# リーダーからのデータの読み込み + メソッドに パラメーターを渡して XML ドキュメントを読み込むと、他の形式からデータを読み込む場合と比較して、その動作に違いがあります。 リーダーが初期状態のとき、 メソッドは、リーダーからのコンテンツ全体を使用して、リーダー内のすべてのデータから XML ドキュメント オブジェクト モデル \(DOM\) を構築します。 + + 既にリーダーがドキュメント内のあるノード上に位置している場合、リーダーが メソッドに渡されると、 は現在のノードと、現在の深さを閉じる終了タグまで、その兄弟すべてをメモリに読み込もうとします。 はリーダーからの XML が整形式かどうかを検証するので、 が成功するかどうかは、読み込みを試みた時点でリーダーが位置していたノードに依存します。 XML が整形式でない場合、 は例外をスローします。 たとえば、次のノード セットは、ルート レベルの要素が 2 つ含まれ、XML が整形式ではないため、 は例外をスローします。 + +- Comment ノード、Element ノード、Element ノード、EndElement ノードの順序のノード セット + + 次のノード セットは、ルート レベルの要素が存在しないため、不完全な DOM が作成されます。 + +- Comment ノード、ProcessingInstruction ノード、Comment ノード、EndElement ノードの順序のノード セット + + この場合、例外はスローされず、データが読み込まれます。 これらのノードの最上位にルート要素を追加すると、エラーなしで保存できる整形式の XML を作成できます。 + + ドキュメントのルート レベルとしては無効なリーフ ノード \(たとえば空白ノードや属性ノード\) にリーダーが位置している場合、リーダーはルートとして使用できるノードに移動するまで読み込みを続行します。 ドキュメントの読み込みは、この位置から開始されます。 + + 既定では、 は、ドキュメント型定義 \(DTD\) またはスキーマ検証を使用して、XML が有効かどうかを検証しません。 チェックするのは、XML が整形式かどうかだけです。 検証を行うには、 クラスを使用して を作成する必要があります。 クラスは、DTD またはスキーマ定義言語 \(XSD\) のスキーマを使用して検証を強制できます。 クラスの プロパティによって、 インスタンスが検証を強制するかどうかが決まります。 XML データの検証の詳細については、 のリファレンス ページの「解説」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/managing-namespaces-in-an-xml-document.md b/docs/standard/data/xml/managing-namespaces-in-an-xml-document.md new file mode 100644 index 00000000000..aa6ba9adf7d --- /dev/null +++ b/docs/standard/data/xml/managing-namespaces-in-an-xml-document.md @@ -0,0 +1,93 @@ +--- +title: "XML ドキュメントでの名前空間の管理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 682643fc-b848-4e42-8c0d-50deeaeb5f2a +caps.latest.revision: 5 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 5 +--- +# XML ドキュメントでの名前空間の管理 +XML 名前空間は、XML ドキュメントの要素名と属性名をカスタムの定義済み URI に関連付けます。 この関係を作成するには、名前空間 URI のプレフィックスを定義し、そのプレフィックスを使用して XML データ内の要素名と属性名を修飾します。 名前空間は要素名や属性名の競合を防ぎ、同じ名前の要素や属性を個別に処理および評価できるようにします。 + + +## 名前空間の宣言 + 要素で名前空間を宣言するには、`xmlns:` 属性を使用します。 + + `xmlns:=<"uri">` + + ここで、`` は名前空間プレフィックスで、`<"uri">` は名前空間を識別する URI です。 プレフィックスを宣言したら、そのプレフィックスを使用して XML ドキュメント内の要素と属性を修飾し、名前空間 URI と関連付けることができます。 名前空間プレフィックスはドキュメント全体を通じて使用されるため、短くする必要があります。 + + この例では、2 つの `BOOK` 要素を定義しています。 1 つ目の要素はプレフィックス `mybook` で修飾され、2 つ目の要素はプレフィックス `bb` で修飾されています。 プレフィックスはそれぞれ、異なる名前空間 URI に関連付けられています。 + +``` + + +``` + + ある要素が特定の名前空間の一部であることを指定するには、名前空間プレフィックスをその要素に追加します。 たとえば、`Author` 要素が `mybook` 名前空間に属する場合は、`` として宣言されます。 + + +## 宣言のスコープ + 名前空間の有効な範囲は、宣言された位置から、宣言された要素の最後までです。 この例では、`BOOK` 要素で定義されている名前空間は、`Publisher` 要素など、`BOOK` 要素の外側にある要素には適用されません。 + +``` +Joe Smith + + My Wonderful Day + $3.95 + + + MSPress + +``` + + 名前空間は使用する前に宣言されている必要がありますが、必ずしも XML ドキュメントの先頭に示されている必要はありません。 + + 1 つの XML ドキュメントで複数の名前空間を使用する場合は、そのうちの 1 つを既定の名前空間として定義することで、ドキュメントの外観を見やすくできます。 既定の名前空間はルート要素で宣言され、ドキュメント内の修飾されていないすべての要素に適用されます。 既定の名前空間は要素にのみ適用されます。属性には適用されません。 + + 既定の名前空間を使用するには、要素の宣言でプレフィックスとコロンを省略します。 + +``` + +``` + +## 名前空間の管理 + クラスには、名前空間 URI とそのプレフィックスのコレクションが格納されます。このクラスを使用すると、コレクションで名前空間を検索、追加、および削除できます。 このクラスは、特定のコンテキストで、XML の処理のパフォーマンスを向上させるために必要です。 たとえば、XPath をサポートするには、 クラスで を使用します。 + + 名前空間マネージャーでは名前空間の検証は一切実行されません。このマネージャーでは、プレフィックスと名前空間が既に確認され、[W3C 名前空間](http://www.w3.org/TR/REC-xml-names/)仕様に準拠していることが前提となっています。 + +> [!NOTE] +> [LINQ to XML](../../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-xml.md) では、名前空間の管理に が使用されません。 LINQ to XML を使用する場合の名前空間の管理については、LINQ ドキュメントの「[Working with XML Namespaces](../../../../ocs/visual-basic/programming-guide/concepts/linq/working-with-xml-namespaces.md)」を参照してください。 + + クラスを使用して実行できる管理タスクと検索タスクをいくつか次に示します。 使用例を含む詳細については、各メソッドまたはプロパティのリファレンス ページへのリンクをクリックしてください。 + +|目的|用途| +|--------|--------| +|名前空間を追加する| メソッド| +|名前空間を削除する| メソッド| +|既定の名前空間の URI を検索する| プロパティ| +|名前空間プレフィックスの URI を検索する| メソッド| +|名前空間 URI のプレフィックスを検索する| メソッド| +|現在のノードの名前空間の一覧を取得する| メソッド| +|名前空間のスコープを指定する| メソッドおよび メソッド| +|現在のスコープ内にプレフィックスが定義されているかどうかを確認する| メソッド| +|プレフィックスおよび URI を検索するときに使用する名前テーブルを取得する| プロパティ| + +## 参照 + + [XML ドキュメントと XML データ](../../../../docs/standard/data/xml/index.md) \ No newline at end of file diff --git a/docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md b/docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md new file mode 100644 index 00000000000..516ebf9f809 --- /dev/null +++ b/docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md @@ -0,0 +1,231 @@ +--- +title: "オブジェクト階層の XML データへのマップ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 450e350b-6a68-4634-a2a5-33f4dc33baf0 +caps.latest.revision: 5 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 4 +--- +# オブジェクト階層の XML データへのマップ +メモリに読み込まれた XML ドキュメントは、ツリーという概念で表現されます。 プログラミングでは、オブジェクト階層を利用してツリーのノードにアクセスします。 XML コンテンツがどのようにノードに変換されるかを次の例に示します。 + + XML が XML ドキュメント オブジェクト モデル \(DOM\) に読み込まれると、各部がノードに変換されます。これらのノードは、ノード型や値など、ノード自身に関する付加的なメタデータを保持しています。 ノード型はノードのオブジェクトであり、ノード型によって実行可能なアクションおよび設定や取得が可能なプロパティが決まります。 + + 次のような簡単な XML があるとします。 + + **入力** + +``` + + The Handmaid's Tale + +``` + + この入力は、メモリ上で次のようなノード ツリーとして表現され、ノード型プロパティが割り当てられます。 + + ![サンプル ノード ツリー](../../../../docs/standard/data/xml/media/simple-xml.gif "Simple\_XML") +book と title のノード ツリー表現 + + `book` 要素と **要素は `title`XmlElement** になり、要素コンテンツは **XmlText** オブジェクトになります。 **XmlElement** のメソッドとプロパティは、**XmlText** オブジェクトで使用できるメソッドとプロパティとは異なります。 実行可能なアクションはノード型によって決定されるため、XML マークアップがどのノード型になるかを理解することがきわめて重要です。 + + XML データを読み込み、ノード型に応じて異なるテキストを書き出す例を次に示します。 入力として、次の **items.xml** という XML データ ファイルを使用します。 + + **入力** + +``` + + +]> + + Test with an entity: &number; + test with a child element stuff + test with a CDATA section ]]> def + Test with a char entity: A + + 1234567890ABCD + +``` + + **items.xml** ファイルを読み込み、それぞれのノード型の情報を表示するコード サンプルを次に示します。 + +```vb +Imports System +Imports System.IO +Imports System.Xml + +Public Class Sample + Private Const filename As String = "items.xml" + + Public Shared Sub Main() + + Dim reader As XmlTextReader = Nothing + + Try + ' Load the reader with the data file and + 'ignore all white space nodes. + reader = New XmlTextReader(filename) + reader.WhitespaceHandling = WhitespaceHandling.None + + ' Parse the file and display each of the nodes. + While reader.Read() + Select Case reader.NodeType + Case XmlNodeType.Element + Console.Write("<{0}>", reader.Name) + Case XmlNodeType.Text + Console.Write(reader.Value) + Case XmlNodeType.CDATA + Console.Write("", reader.Value) + Case XmlNodeType.ProcessingInstruction + Console.Write("", reader.Name, reader.Value) + Case XmlNodeType.Comment + Console.Write("", reader.Value) + Case XmlNodeType.XmlDeclaration + Console.Write("") + Case XmlNodeType.Document + Case XmlNodeType.DocumentType + Console.Write("", reader.Name) + End Select + End While + + Finally + If Not (reader Is Nothing) Then + reader.Close() + End If + End Try + End Sub 'Main ' End class +End Class 'Sample +``` + +```csharp +using System; +using System.IO; +using System.Xml; + +public class Sample +{ + private const String filename = "items.xml"; + + public static void Main() + { + XmlTextReader reader = null; + + try + { + // Load the reader with the data file and ignore + // all white space nodes. + reader = new XmlTextReader(filename); + reader.WhitespaceHandling = WhitespaceHandling.None; + + // Parse the file and display each of the nodes. + while (reader.Read()) + { + switch (reader.NodeType) + { + case XmlNodeType.Element: + Console.Write("<{0}>", reader.Name); + break; + case XmlNodeType.Text: + Console.Write(reader.Value); + break; + case XmlNodeType.CDATA: + Console.Write("", reader.Value); + break; + case XmlNodeType.ProcessingInstruction: + Console.Write("", reader.Name, reader.Value); + break; + case XmlNodeType.Comment: + Console.Write("", reader.Value); + break; + case XmlNodeType.XmlDeclaration: + Console.Write(""); + break; + case XmlNodeType.Document: + break; + case XmlNodeType.DocumentType: + Console.Write("", reader.Name); + break; + } + } + } + + finally + { + if (reader != null) + reader.Close(); + } + } +} // End class +``` + + この例の出力を確認すると、データからノード型へのマップがわかります。 + + **出力** + +``` + +]Test with an entity: 123test with a child element stufftest with a CDATA section ]]> defTest with a char entity: A<--Fourteen chars in this element.-->1234567890ABCD +``` + + 入力と、コードから生成された出力を 1 行ずつ対比させた以下の表を見れば、どのノード テストによってどの出力行が生成されたのかを分析でき、どの XML データがどのノード型になったかがわかります。 + +|入力|出力|ノード型のテスト| +|--------|--------|--------------| +|\|\|XmlNodeType.XmlDeclaration| +|\<\!\-\- This is a sample XML document \-\-\>|\<\!\-\-This is a sample XML document \-\-\>|XmlNodeType.Comment| +|\<\!DOCTYPE Items \[\<\!ENTITY number "123"\>\]\>|\<\!DOCTYPE Items \[\<\!ENTITY number "123"\>\]|XmlNodeType.DocumentType| +|\|\|XmlNodeType.Element| +|\|\|XmlNodeType.Element| +|Test with an entity: &number;|Test with an entity:|XmlNodeType.Text| +|\<\/Item\>|\<\/Item\>|XmlNodeType.EndElement| +|\|\|XmNodeType.Element| +|test with a child element|test with a child element|XmlNodeType.Text| +|\|\|XmlNodeType.Element| +|stuff|stuff|XmlNodeType.Text| +|\<\/Item\>|\<\/Item\>|XmlNodeType.EndElement| +|\|\|XmlNodeType.Element| +|test with a CDATA section|test with a CDATA section|XmlTest.Text| +|\<\!\[CDATA\[\<456\>\]\]\>|\<\!\[CDATA\[\<456\>\]\]\>|XmlTest.CDATA| +|def|def|XmlNodeType.Text| +|\<\/Item\>|\<\/Item\>|XmlNodeType.EndElement| +|\|\|XmlNodeType.Element| +|Test with a char entity: &\#65;|Test with a char entity: A|XmlNodeType.Text| +|\<\/Item\>|\<\/Item\>|XmlNodeType.EndElement| +|\<\!\-\- Fourteen chars in this element.\-\-\>|\<\-\-Fourteen chars in this element.\-\-\>|XmlNodeType.Comment| +|\|\|XmlNodeType.Element| +|1234567890ABCD|1234567890ABCD|XmlNodeType.Text| +|\<\/Item\>|\<\/Item\>|XmlNodeType.EndElement| +|\<\/Items\>|\<\/Items\>|XmlNodeType.EndElement| + + 有効なアクションの種類と設定および取得できるプロパティの種類はノード型によって決まるため、割り当てられているノード型を知っておく必要があります。 + + 空白ノードの作成は、データが DOM に読み込まれるときに **PreserveWhitespace** フラグによって制御されます。 詳細については、「[DOM を読み込むときの空白および有意の空白の処理](../../../../docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md)」を参照してください。 + + DOM に新しいノードを追加するには、「[XML ドキュメントへのノードの挿入](../../../../docs/standard/data/xml/inserting-nodes-into-an-xml-document.md)」を参照してください。 DOM からノードを削除するには、「[XML ドキュメントからのノード、コンテンツ、値の削除](../../../../docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md)」を参照してください。 DOM のノードのコンテンツを編集するには、「[XML ドキュメントのノード、コンテンツ、値の変更](../../../../docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/mapping-xml-data-types-to-clr-types.md b/docs/standard/data/xml/mapping-xml-data-types-to-clr-types.md new file mode 100644 index 00000000000..af9a950874d --- /dev/null +++ b/docs/standard/data/xml/mapping-xml-data-types-to-clr-types.md @@ -0,0 +1,92 @@ +--- +title: "XML データ型から CLR 型へのマッピング | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: cabdfcad-f359-479b-b71c-8b2fad42ca49 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XML データ型から CLR 型へのマッピング +XML データ型と共通言語ランタイム \(CLR\) 型の既定のマッピングを次の表に示します。 + +## 次の表は、XML データ型から CLR 型への既定のマッピングを示しています。 + +> [!NOTE] +> `xs` および `xdt` のプレフィックスは、それぞれ http:\/\/www.w3.org\/2001\/XMLSchema および http:\/\/www.w3.org\/2003\/05\/xpath\-datatypes 名前空間 URI に対応します。 + +|XML 型|CLR 型| +|-----------|-----------| +|`xs:anyURI`|| +|`xs:base64Binary`|`Byte[]`| +|`xs:boolean`|| +|`xs:byte`|| +|`xs:date`|| +|`xs:dateTime`|| +|`xs:decimal`|| +|`xs:double`|| +|`xs:duration`|| +|`xs:ENTITIES`|`String[]`| +|`xs:ENTITY`|| +|`xs:float`|| +|`xs:gDay`|| +|`xs:gMonthDay`|| +|`xs:gYear`|| +|`xs:gYearMonth`|| +|`xs:hexBinary`|`Byte[]`| +|`xs:ID`|| +|`xs:IDREF`|| +|`xs:IDREFS`|`String[]`| +|`xs:int`|| +|`xs:integer`|| +|`xs:language`|| +|`xs:long`|| +|`xs:gMmonth`|| +|`xs:Name`|| +|`xs:NCName`|| +|`xs:negativeInteger`|| +|`xs:NMTOKEN`|| +|`xs:NMTOKENS`|`String[]`| +|`xs:nonNegativeInteger`|| +|`xs:nonPositiveInteger`|| +|`xs:normalizedString`|| +|`xs:NOTATION`|| +|`xs:positiveInteger`|| +|`xs:QName`|| +|`xs:short`|| +|`xs:string`|| +|`xs:time`|| +|`xs:token`|| +|`xs:unsignedByte`|| +|`xs:unsignedInt`|| +|`xs:unsignedLong`|| +|`xs:unsignedShort`|| +|`xdt:dayTimeDuration`|| +|`xdt:yearMonthDuration`|| +|`xdt:untypedAtomic`|| +|`xdt:anyAtomicType`|| +|`xs:anySimpleType`|| +|\[ドキュメント\] ノード|| +|要素ノード|| +|属性ノード|| +|名前空間ノード|| +|テキスト ノード|| +|コメント ノード|| +|処理命令ノード|| + +## 参照 + [System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md) \ No newline at end of file diff --git a/docs/standard/data/xml/matching-nodes-using-xpathnavigator.md b/docs/standard/data/xml/matching-nodes-using-xpathnavigator.md new file mode 100644 index 00000000000..e643da6040a --- /dev/null +++ b/docs/standard/data/xml/matching-nodes-using-xpathnavigator.md @@ -0,0 +1,56 @@ +--- +title: "XPathNavigator によるノードの一致 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: e6848c47-ee5d-401a-89a5-50b5eed40f30 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathNavigator によるノードの一致 + クラスは、ノードが XPath 式に一致するかどうかを調べる メソッドを提供します。 メソッドは XPath 式を入力として取り、現在のノードが与えられた XPath 式またはコンパイル済み オブジェクトと一致するかどうかを示す を返します。 + +## ノードの一致 + メソッドは、現在のノードが指定した XPath 式と一致すると `true` を返します。 たとえば次のコード サンプルで、 メソッドは、現在のノードが要素 `b` であり、要素 `b` が属性 `c` を持つ場合に `true` を返します。 + +> [!NOTE] +> メソッドは の状態を変えません。 + +```vb +Dim document as XPathDocument = New XPathDocument("input.xml") +Dim navigator as XPathNavigator = document.CreateNavigator() + +navigator.Matches("b[@c]") +``` + +```csharp +XPathDocument document = new XPathDocument("input.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +navigator.Matches("b[@c]"); +``` + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator を使用した XML データの選択](../../../../docs/standard/data/xml/select-xml-data-using-xpathnavigator.md) + [XPathNavigator による Xpath 式の評価](../../../../docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md) + [XPath クエリで認識されるノード型](../../../../docs/standard/data/xml/node-types-recognized-with-xpath-queries.md) + [XPath クエリおよび名前空間](../../../../docs/standard/data/xml/xpath-queries-and-namespaces.md) + [コンパイルされた XPath 式](../../../../docs/standard/data/xml/compiled-xpath-expressions.md) \ No newline at end of file diff --git a/docs/standard/data/xml/media/dom-class-hierarchy.gif b/docs/standard/data/xml/media/dom-class-hierarchy.gif new file mode 100644 index 00000000000..f54841c2194 Binary files /dev/null and b/docs/standard/data/xml/media/dom-class-hierarchy.gif differ diff --git a/docs/standard/data/xml/media/entity-hierarchy.gif b/docs/standard/data/xml/media/entity-hierarchy.gif new file mode 100644 index 00000000000..8cb031de9ba Binary files /dev/null and b/docs/standard/data/xml/media/entity-hierarchy.gif differ diff --git a/docs/standard/data/xml/media/simple-xml.gif b/docs/standard/data/xml/media/simple-xml.gif new file mode 100644 index 00000000000..a91802e4e9a Binary files /dev/null and b/docs/standard/data/xml/media/simple-xml.gif differ diff --git a/docs/standard/data/xml/media/xml-entitydeclaration-node2.png b/docs/standard/data/xml/media/xml-entitydeclaration-node2.png new file mode 100644 index 00000000000..3fe2ac00aa2 Binary files /dev/null and b/docs/standard/data/xml/media/xml-entitydeclaration-node2.png differ diff --git a/docs/standard/data/xml/media/xml-to-domtree.gif b/docs/standard/data/xml/media/xml-to-domtree.gif new file mode 100644 index 00000000000..2907a2f0920 Binary files /dev/null and b/docs/standard/data/xml/media/xml-to-domtree.gif differ diff --git a/docs/standard/data/xml/media/xmlentityref-notexpanded-nodes.gif b/docs/standard/data/xml/media/xmlentityref-notexpanded-nodes.gif new file mode 100644 index 00000000000..1cd3d13dc5a Binary files /dev/null and b/docs/standard/data/xml/media/xmlentityref-notexpanded-nodes.gif differ diff --git a/docs/standard/data/xml/media/xmlintegrationwithrelationaldataandadodotnet.gif b/docs/standard/data/xml/media/xmlintegrationwithrelationaldataandadodotnet.gif new file mode 100644 index 00000000000..06a35799ec7 Binary files /dev/null and b/docs/standard/data/xml/media/xmlintegrationwithrelationaldataandadodotnet.gif differ diff --git a/docs/standard/data/xml/media/xslttransformationswithxsltransformclass.gif b/docs/standard/data/xml/media/xslttransformationswithxsltransformclass.gif new file mode 100644 index 00000000000..3c27c145c78 Binary files /dev/null and b/docs/standard/data/xml/media/xslttransformationswithxsltransformclass.gif differ diff --git a/docs/standard/data/xml/migrating-from-the-xsltransform-class.md b/docs/standard/data/xml/migrating-from-the-xsltransform-class.md new file mode 100644 index 00000000000..d13b77cb400 --- /dev/null +++ b/docs/standard/data/xml/migrating-from-the-xsltransform-class.md @@ -0,0 +1,128 @@ +--- +title: "XslTransform クラスからの移行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 9404d758-679f-4ffb-995d-3d07d817659e +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XslTransform クラスからの移行 +XSLT アーキテクチャは、[!INCLUDE[vsprvslong](../../../../includes/vsprvslong-md.md)] リリースで設計が変更されました。 クラスは クラスで置き換えられています。 + + 以降では、 クラスと クラスの主な相違点について説明します。 + +## パフォーマンス テスト + クラスでは多くのパフォーマンスの向上が図られています。 新しい XSLT プロセッサは XSLT スタイル シートを、共通言語ランタイム \(CLR\) が他のプログラム言語で行うのと同様に、共通の中間形式にコンパイルします。 いったんスタイル シートがコンパイルされると、それをキャッシュして再利用することができます。 + + クラスには、このクラスを クラスよりも大幅に高速化する他の最適化も含まれています。 + +> [!NOTE] +> 全体的なパフォーマンスは クラスの方が クラスより優れていますが、 クラスの メソッドが変換で初めて呼び出されたときは、 クラスの メソッドよりパフォーマンスが劣る場合があります。 これは、XSLT ファイルを読み込む前にコンパイルする必要があるためです。 詳細については、ブログの投稿「[XslCompiledTransform は XslTransform より遅い?](http://go.microsoft.com/fwlink/?LinkId=130590)」を参照してください。 + +## セキュリティ + 既定で、 クラスでは XSLT `document()` 関数と埋め込みスクリプトのサポートが無効になっています。 これらの機能を有効にするには、機能が有効になっている オブジェクトを作成し、それを メソッドに渡します。 スクリプト作成を有効にして XSLT 変換を実行する方法を次の例に示します。 + + [!code-csharp[XML_Migration#16](../../../../samples/snippets/csharp/VS_Snippets_Data/XML_Migration/CS/migration.cs#16)] + [!code-vb[XML_Migration#16](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XML_Migration/VB/migration.vb#16)] + + 詳細については、「[XSLT のセキュリティに関する考慮事項](../../../../docs/standard/data/xml/xslt-security-considerations.md)」を参照してください。 + +## 新機能 + +### 一時テーブル + XSLT の処理中に一時ファイルが生成されることがあります。 スタイル シートにスクリプト ブロックが含まれる場合、またはデバッグ設定を true に設定してスタイル シートをコンパイルした場合、%TEMP% フォルダーに一時ファイルが作成されます。 タイミングの問題で、一部の一時ファイルが削除されない場合があります。 たとえば、一時ファイルが現在の AppDomain やデバッガーにより使用されると、 オブジェクトの終了処理でそのファイルを削除できなくなります。 + + クライアントのすべての一時ファイルが削除されるように、 プロパティを使用して追加のクリーンアップを実行することができます。 + +### xsl:output 要素と XmlWriter のサポート + 変換出力が オブジェクトに送られる場合、 クラスでは `xsl:output` の設定が無視されていました。 クラスには、スタイル シートの `xsl:output` 要素から取得された出力情報を含む オブジェクトを返す プロパティがあります。 オブジェクトを使用して、適切に設定された オブジェクトを作成し、それを メソッドに渡すことができます。 次の C\# コードに、この処理を示します。 + +``` +// Create the XslTransform object and load the style sheet. +XslCompiledTransform xslt = new XslCompiledTransform(); +xslt.Load(stylesheet); + +// Load the file to transform. +XPathDocument doc = new XPathDocument(filename); + +// Create the writer. +XmlWriter writer = XmlWriter.Create(Console.Out, xslt.OutputSettings); + +// Transform the file and send the output to the console. +xslt.Transform(doc, writer); +writer.Close(); +``` + +### デバッグ オプション + クラスによりデバッグ情報を生成できます。この機能を利用して、Microsoft [!INCLUDE[vsprvs](../../../../includes/vsprvs-md.md)] デバッガーを使用してスタイル シートをデバッグすることができます。 詳細については、「」を参照してください。 + +## 動作の違い + +### XmlReader への変換 + クラスには、変換結果を オブジェクトとして返す Transform オーバーロードが数種類あります。 このオーバーロードを使用することで、生成される XML ツリーのシリアル化と逆シリアル化によるオーバーヘッドを生じることなく、変換結果をメモり内表現 \( または \) に読み込むことができます。 次の C\# コード例で、 オブジェクトに変換結果を読み込む方法を示します。 + +``` +// Load the style sheet +XslTransform xslt = new XslTransform(); +xslt.Load("MyStylesheet.xsl"); + +// Transform input document to XmlDocument for additional processing +XmlDocument doc = new XmlDocument(); +doc.Load(xslt.Transform(input, (XsltArgumentList)null)); +``` + + クラスでは、 オブジェクトへの変換がサポートされません。 ただし、 メソッドを使用して、生成される XML ツリーを から直接読み込むことはできます。 次の C\# コード例では、同じ操作を を使用して行う方法を示します。 + +``` +// Transform input document to XmlDocument for additional processing +XmlDocument doc = new XmlDocument(); +using (XmlWriter writer = doc.CreateNavigator().AppendChild()) { + xslt.Transform(input, (XsltArgumentList)null, writer); +} +``` + +### 随意動作 + W3C 勧告『XSL Transformations \(XSLT\) Version 1.0』には、対処方法を実装者が決定できる事項があります。 このような事項は、随意動作と見なされています。 事項によっては、 クラスと クラスで動作が異なります。 詳細については、「[XSLT エラーの解決](../../../../docs/standard/data/xml/recoverable-xslt-errors.md)」を参照してください。 + +### 拡張オブジェクトとスクリプト関数 + では、スクリプト関数の使用に関して新たに 2 つの制限が加えられています。 + +- XPath 式からはパブリック メソッドのみを呼び出すことができる。 + +- オーバーロードは引数の数に基づいて区別される。 引数の数が同じオーバーロードが複数存在する場合、例外が発生します。 + + では、スクリプト関数へのバインド \(メソッド名参照\) がコンパイル時に実行されます。XslTranform を利用するスタイル シートを によって読み込むと、例外が発生する場合があります。 + + では、`msxsl:script` 要素内に子要素として `msxsl:using` および `msxsl:assembly` を含めることがサポートされます。 `msxsl:using` 要素と `msxsl:assembly` 要素を使用して、スクリプト ブロックで使用する追加の名前空間とアセンブリを宣言できます。 詳細については、「[msxsl:script を使用したスクリプト ブロック](../../../../docs/standard/data/xml/script-blocks-using-msxsl-script.md)」を参照してください。 + + では、複数のオーバーロードおよびそれと同数の引数を含む拡張オブジェクトは使用できません。 + +### MSXML 関数 + クラスでは、新しい MSXML 関数のサポートが追加されました。 新しい関数または強化された関数は次のとおりです。 + +- msxsl:node\-set : では、[node\-set 関数](http://msdn.microsoft.com/ja-jp/87b6b3f4-16f4-4fa3-8103-d62a679ac2a7) 関数の引数を結果ツリー フラグメントにする必要がありました。 クラスでは、この要件がありません。 + +- msxsl:version : この関数は、 でサポートされます。 + +- XPath 拡張関数 : [ms:string\-compare 関数](http://msdn.microsoft.com/ja-jp/20616b82-9e27-444c-b714-4f1e09b73aee)、[ms:utc 関数](http://msdn.microsoft.com/ja-jp/ef26fc88-84c6-4fb9-9c3b-f2f5264b864f)、[ms:namespace\-uri 関数](http://msdn.microsoft.com/ja-jp/91f9cabf-ab93-4dbe-9c12-e6a75214f4c7)、[ms:local\-name 関数](http://msdn.microsoft.com/ja-jp/10ed60a1-17a9-4d74-8b98-7940ac97c0b5)、[ms:number 関数](http://msdn.microsoft.com/ja-jp/b94fc08e-1f31-4f48-b1a8-6d78c1b5d954)、[ms:format\-date 関数](http://msdn.microsoft.com/ja-jp/51f35609-89a9-4098-a166-88bf01300bf5)、および [ms:format\-time 関数](http://msdn.microsoft.com/ja-jp/e5c2df2d-e8fb-4a8f-bfc0-db84ea12a5d5) の各関数が新たにサポートされました。 + +- スキーマ関連の XPath 拡張関数 : これは、 ではネイティブでサポートされません。 ただし、拡張関数として実装することはできます。 + +## 参照 + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) + [XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md) \ No newline at end of file diff --git a/docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md new file mode 100644 index 00000000000..0570f403b06 --- /dev/null +++ b/docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md @@ -0,0 +1,262 @@ +--- +title: "XpathNavigator による XML データの変更 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 03a7c5a1-b296-4af4-b209-043c958dc0a5 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XpathNavigator による XML データの変更 + クラスは、XML ドキュメント内のノードを変更するためのメソッドのセットを提供します。 これらのメソッドを使用するには、 オブジェクトが編集可能である必要があります。つまり、その プロパティを `true` にする必要があります。 + + XML ドキュメントを編集できる オブジェクトは、 クラスの メソッドによって作成されます。 クラスによって作成される オブジェクトは読み取り専用で、 オブジェクトによって作成される オブジェクトの編集メソッドを使用しようとすると、 が発生します。 + + 編集可能な オブジェクトの作成に関する詳細については、「[XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)」を参照してください。 + +## ノードの変更 + ノードの値を簡単に変更するには、 クラスの メソッドを使用します。 + + 次の表は、異なるノード型に対するこれらメソッドの効果の一覧です。 + +||変更されるデータ。| +|---------------------------------------------------------------------------------------------------------------------------------------------|---------------| +||サポートされていません。| +||要素のコンテンツ。| +||属性の値。| +||テキスト コンテンツ。| +||ターゲットを除くコンテンツ。| +||コメントの内容。| +||サポート範囲外。| + +> [!NOTE] +> ノードまたは ノードの編集はサポートされません。 + + クラスは、ノードの挿入および削除に使用されるメソッドのセットも提供しています。 XML ドキュメントのノードの挿入および削除に関する詳細については、「[XPathNavigator による XML データの挿入](../../../../docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md)」および「[XPathNavigator による XML データの削除](../../../../docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md)」を参照してください。 + +### 型指定されていない値の変更 + メソッドは、パラメーターとして渡された型指定されていない `string` 値を挿入するだけです。このパラメーターは、 オブジェクトの現在位置にあるノードの値です。 値に型は設定されず、スキーマ情報が使用可能な場合でも、ノードの型に対して新しい値が有効どうかを検証せずに挿入されます。 + + メソッドを使用して `contosoBooks.xml` フィァイル内のすべての `price` 要素を更新する例を次に示します。 + + [!code-cpp[XPathNavigatorMethods#47](../../../../samples/snippets/cpp/VS_Snippets_Data/XPathNavigatorMethods/CPP/xpathnavigatormethods.cpp#47)] + [!code-csharp[XPathNavigatorMethods#47](../../../../samples/snippets/csharp/VS_Snippets_Data/XPathNavigatorMethods/CS/xpathnavigatormethods.cs#47)] + [!code-vb[XPathNavigatorMethods#47](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XPathNavigatorMethods/VB/xpathnavigatormethods.vb#47)] + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + +### 型指定された値の変更 + ノードの型が W3C XML スキーマの単純型の場合、 メソッドによって挿入される新しい値は、値の設定前に、単純型のファセットに対してチェックされます。 新しい値がノードの型に対して無効な場合 \(たとえば、型が `xs:positiveInteger` の要素に、値 `-1` を設定するような場合\)、例外が返されます。 + + 次の例では、`contosoBooks.xml` ファイル内の最初の `book` 要素の `price` 要素の値を 値に変更しようとしています。 `price` 要素の XML スキーマ型は、`contosoBooks.xsd` ファイル内で `xs:decimal` として定義されているため、結果は例外になります。 + +```vb +Dim settings As XmlReaderSettings = New XmlReaderSettings() +settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd") +settings.ValidationType = ValidationType.Schema + +Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings) + +Dim document As XmlDocument = New XmlDocument() +document.Load(reader) +Dim navigator As XPathNavigator = document.CreateNavigator() + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books") +navigator.MoveToChild("book", "http://www.contoso.com/books") +navigator.MoveToChild("price", "http://www.contoso.com/books") + +navigator.SetTypedValue(DateTime.Now) +``` + +```csharp +XmlReaderSettings settings = new XmlReaderSettings(); +settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd"); +settings.ValidationType = ValidationType.Schema; + +XmlReader reader = XmlReader.Create("contosoBooks.xml", settings); + +XmlDocument document = new XmlDocument(); +document.Load(reader); +XPathNavigator navigator = document.CreateNavigator(); + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books"); +navigator.MoveToChild("book", "http://www.contoso.com/books"); +navigator.MoveToChild("price", "http://www.contoso.com/books"); + +navigator.SetTypedValue(DateTime.Now); +``` + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + + また、`contosoBooks.xsd` ファイルも入力として使用します。 + + [!code-xml[XPathXMLExamples#3](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xsd#3)] + +#### 厳密に型指定された XML データの効果 + クラスは、厳密に型指定された XML の記述の基本に W3C XML スキーマを使用します。 要素および属性には、W3C XML スキーマ ドキュメントに対する検証に基づいて、型情報を使用して注釈を付けることができます。 他の要素または属性を含めることができる要素は、複合型と呼ばれ、テキストの内容だけを含めることのできる要素は単純型と呼ばれます。 + +> [!NOTE] +> 属性には単純型しかありません。 + + 要素または属性は、その型定義に固有のすべての規則に準拠している場合、スキーマ有効と見なされます。 単純型の要素 `xs:int` がスキーマ有効であるためには、\-2,147,483,648 ~ 2,147,483,647 の数値を含む必要があります。 複合型の場合、要素のスキーマ有効性は、その子の要素および属性のスキーマ有効性に依存します。 したがって、要素が複合型定義に対して有効な場合、その子の要素および属性はすべて、それらの型定義に対して有効です。 同様に、要素の子の要素または属性のうち 1 つでもその型定義に対して無効か有効性が不明な場合、その要素も無効か有効性が不明になります。 + + 要素の有効性がその子の要素および属性の有効性に依存することを考えると、要素が以前有効だった場合、どちらを変更しても要素の有効性が変わる結果になります。 具体的には、要素の子要素または属性が挿入、更新または削除されると、その要素の有効性は不明になります。 これは、要素の プロパティの プロパティが に設定されることによって表されます。 さらに、要素の親要素 \(およびその親、そのまた親と続く\) の有効性も不明になるため、この効果は、XML ドキュメント全体で再帰的に上方向にカスケードされます。 + + スキーマ検証および の詳細については、「[XPathNavigator を使用したスキーマ検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md)」を参照してください。 + +### 属性の変更 + および メソッドは、型指定されていない属性ノードと型指定された属性ノード、および「ノードの変更」に記載されているその他のノード型の変更に使用できます。 + + 次の例では、`books.xml` ファイル内の最初の `book` 要素の `genre` 属性の値を変更しています。 + +```vb +Dim document As XmlDocument = New XmlDocument() +document.Load("books.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() + +navigator.MoveToChild("bookstore", String.Empty) +navigator.MoveToChild("book", String.Empty) +navigator.MoveToAttribute("genre", String.Empty) + +navigator.SetValue("non-fiction") + +navigator.MoveToRoot() +Console.WriteLine(navigator.OuterXml) +``` + +```csharp +XmlDocument document = new XmlDocument(); +document.Load("books.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +navigator.MoveToChild("bookstore", String.Empty); +navigator.MoveToChild("book", String.Empty); +navigator.MoveToAttribute("genre", String.Empty); + +navigator.SetValue("non-fiction"); + +navigator.MoveToRoot(); +Console.WriteLine(navigator.OuterXml); +``` + + および メソッドに関する詳細については、「型指定されていない値の変更」および「型指定された値の変更」を参照してください。 + +## InnerXml および OuterXml プロパティ + クラスの および プロパティは、 オブジェクトの現在位置にある XML マークアップを変更します。 + + プロパティは、与えられた XML `string` の解析済みの内容を使用して オブジェクトの現在位置にある子ノードの XML マークアップを変更します。 同様に、 プロパティは、 オブジェクトの現在位置にある子ノードと現在のノード自体の XML マークアップを変更します。 + + 次の例では、 プロパティを使用して、`contosoBooks.xml` ファイル内の最初の `book` 要素に対して `price` 要素の値を変更し、新しい `discount` 属性を挿入しています。 + +```vb +Dim document As XmlDocument = New XmlDocument() +document.Load("contosoBooks.xml"); +Dim navigator As XPathNavigator = document.CreateNavigator() + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books") +navigator.MoveToChild("book", "http://www.contoso.com/books") +navigator.MoveToChild("price", "http://www.contoso.com/books") + +navigator.OuterXml = "10.99" + +navigator.MoveToRoot() +Console.WriteLine(navigator.OuterXml) +``` + +```csharp +XmlDocument document = new XmlDocument(); +document.Load("contosoBooks.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books"); +navigator.MoveToChild("book", "http://www.contoso.com/books"); +navigator.MoveToChild("price", "http://www.contoso.com/books"); + +navigator.OuterXml = "10.99"; + +navigator.MoveToRoot(); +Console.WriteLine(navigator.OuterXml); +``` + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + +## 名前空間ノードの変更 + ドキュメント オブジェクト モデル \(DOM\) で、名前空間宣言は挿入、更新、および削除が可能な普通の属性のように扱われます。 クラスでは、名前空間ノードに対してそのような操作は許可されません。これは、次の例で説明されているように、名前空間ノードの値を変更すると、名前空間ノードのスコープ内の要素および属性の ID が変更される可能性があるためです。 + +``` + + + +``` + + 上記の XML 例を次のように変更すると、各要素の名前空間 URI が変更されるため、事実上、ドキュメント内のすべての要素の名前が変更されます。 + +``` + + + +``` + + 挿入先のスコープでの名前空間宣言と競合しない名前空間の挿入は、 クラスによって許可されます。 この場合、次の例で説明されているように、名前空間宣言は XML ドキュメント内の下位のスコープで宣言されず、名前の変更が発生しません。 + +``` + + + + + +``` + + 上記の XML 例を次のように変更すると、名前空間宣言が XML ドキュメント全体で他の名前空間宣言のスコープより下位に正しく反映されます。 + +``` + + + + + +``` + + 上記の XML の例では、属性 `a:parent-id` が `http://www.contoso.com/parent-id` 名前空間名の `parent` 要素に挿入されます。 メソッドは、`parent` 要素上に位置しているときの属性の挿入に使用されます。 XML ドキュメントの残りの部分の一貫性を保持するために、`http://www.contoso.com` 名前空間宣言が クラスによって自動的に挿入されます。 + +## エンティティ参照ノードの変更 + オブジェクト内のエンティティ参照ノードは、読み取り専用で、 または クラスのどちらを使用しても編集できません。 エンティティ参照ノードを変更しようとすると、 が発生します。 + +## xsi:nil ノードの変更 + W3C XML スキーマ勧告では、nillable 状態の要素という概念が導入されました。 要素が nillable の場合、要素は内容を持たなくても有効になります。 nillable 状態の要素という概念は、`null` 状態のオブジェクトという概念に似ています。 主な相違点は、`null` オブジェクトにはアクセスできないのに対して、`xsi:nil` 要素には、内容 \(子要素またはテキスト\) はなくとも、アクセスできる属性などのプロパティがあることです。 XML ドキュメント内では、要素に内容がないことを示すために、要素に `true` の値を持つ `xsi:nil` 属性が使用されます。 + + オブジェクトを使用して、`true` の値の `xsi:nil` 属性を持つ有効な要素に内容を追加すると、その `xsi:nil` 属性の値は `false` に設定されます。 + +> [!NOTE] +> `xsi:nil` 属性が `false` に設定された要素のコンテンツが削除されても、その属性の値は `true` に変更されません。 + +## XML ドキュメントの保存 + ここに記載されている編集メソッドによる オブジェクトに対する変更の保存は、 クラスのメソッドを使用して実行されます。 オブジェクトに対する変更の保存に関する詳細については、「[ドキュメントの保存と書き込み](../../../../docs/standard/data/xml/saving-and-writing-a-document.md)」を参照してください。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator による XML データの挿入](../../../../docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データの削除](../../../../docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md b/docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md new file mode 100644 index 00000000000..2ab18fbaa2a --- /dev/null +++ b/docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md @@ -0,0 +1,59 @@ +--- +title: "XML ドキュメントのノード、コンテンツ、値の変更 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 761773e0-db72-4986-b9f5-a522213d8397 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XML ドキュメントのノード、コンテンツ、値の変更 +ドキュメントのノードおよびコンテンツを変更するには、さまざまな方法があります。 次の操作を行うことができます。 + +- プロパティを使用してノードの値を変更する。 + +- ノードを新しいノードに置き換えることにより、ノード セット全体を変更します。 これは プロパティを使用して実行できます。 + +- メソッドを使用して既存のノードを新しいノードに置き換える。 + +- 、または メソッドを使用して クラスから継承した追加の文字をノードに追加する。 + +- から継承したノード型に対し、 メソッドを使用することにより、文字範囲を削除してコンテンツを変更する。 + + ノードの値を簡単に変更するには、`node.Value = "new value";` を使用します。 この 1 行のコードを実行できるノード型と、そのノード型で変更されるデータを次の表に示します。 + +|ノード型|変更されるデータ| +|----------|--------------| +|属性|属性の値。| +|CDATASection|CDATASection のコンテンツ。| +|コメント|コメントの内容。| +|ProcessingInstruction|ターゲットを除くコンテンツ。| +|Text|テキストのコンテンツ。| +|XmlDeclaration|`` のマークアップを除く、宣言のコンテンツ。| +|Whitespace|空白の値。 この値は、スペース、タブ、CR、LF という 4 つの認識可能 XML 空白文字のいずれかに設定できます。| +|SignificantWhitespace|有意の空白の値。 この値は、スペース、タブ、CR、LF という 4 つの認識可能 XML 空白文字のいずれかに設定できます。| + + この表に記載されていないノード型は、値を設定できるノード型ではありません。 これら以外のノード型に値を設定すると、 がスローされます。 + + プロパティによって、現在のノードの子ノードのマークアップを変更できます。 このプロパティを設定すると、指定した文字列から解析されたコンテンツで子ノードが置き換えられます。 文字列の解析は、現在の名前空間コンテキストで実行されます。 さらに、 は冗長な名前空間宣言を削除します。 この結果、カット アンド ペースト操作を何度も実行しても、冗長な名前空間宣言によってドキュメント サイズが増加することはありません。 の操作における名前空間の影響を示すコード サンプルについては、「」を参照してください。 + + メソッドと メソッドを使用すると、これらのメソッドによって置換または削除されたノードが返されます。 このノードは XML ドキュメント オブジェクト モデル \(DOM\) のどこかに再度挿入することができます。 メソッドは、ドキュメントに挿入されるノードに対し、2 種類の検証チェックを実行します。 最初のチェックでは、そのノードの親となるノードが、挿入されるノード型の子ノードを持つことができるかどうかを確認します。 2 番目のチェックでは、挿入されるノードが、その親となるノードの祖先でないことを確認します。 これらの条件のいずれかに違反すると、 がスローされます。 + + 編集可能なノードに読み取り専用の子を追加したり、削除したりするのは有効な操作です。 しかし、読み取り専用のノードそのものを変更しようとすると、 がスローされます。 この一例として、 ノードの子を変更しようとした場合が当てはまります。 このノードの子は読み取り専用であり、変更できません。 それらを変更しようとすると、 がスローされます。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/namespace-affect-on-entity-ref-expansion-for-new-nodes.md b/docs/standard/data/xml/namespace-affect-on-entity-ref-expansion-for-new-nodes.md new file mode 100644 index 00000000000..9579b220ec3 --- /dev/null +++ b/docs/standard/data/xml/namespace-affect-on-entity-ref-expansion-for-new-nodes.md @@ -0,0 +1,33 @@ +--- +title: "要素と属性を含む新しいノードでのエンティティ参照の展開に対する名前空間の影響 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 64359aee-aab0-4042-9a32-d19789af6ca7 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 要素と属性を含む新しいノードでのエンティティ参照の展開に対する名前空間の影響 +エンティティ宣言には、原則として任意のコンテンツを含めることができるため、`test">` のような要素が含まれている可能性もあります。 + + `&aname;` の置換コンテンツへの展開は、XML の解析時に行われるのではありません。 ノードがドキュメントに配置されるまでは、要素に対する名前空間を解決できないため、XML の展開は実行されません。 スコープ内の名前空間が判明するのは、ノードが配置された後になります。 ノードがドキュメントに配置されると、名前空間の解決が行われ、結果として得られたエンティティ コンテンツが適切なノードに解析されます。 + +> [!NOTE] +> 新しく作成されたエンティティ参照ノードがいったん展開された後、再び展開されることはありません。 したがって、要素の置換テキストで使われる名前空間は、親ノードの設定時にバインドされます。 ただし、既存のエンティティ参照ノードを削除して別の場所に挿入すると、そのノードに対する名前空間が変更される可能性があります。また、**CloneNode** メソッドで複製されたエンティティ参照ノードにおいても、名前空間が変わる可能性があります。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/namespace-support-in-the-dom.md b/docs/standard/data/xml/namespace-support-in-the-dom.md new file mode 100644 index 00000000000..7ea59e7455f --- /dev/null +++ b/docs/standard/data/xml/namespace-support-in-the-dom.md @@ -0,0 +1,38 @@ +--- +title: "DOM における名前空間のサポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: f0548ead-0fed-41ee-b33e-117ba900d3bc +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# DOM における名前空間のサポート +XML ドキュメント オブジェクト モデル \(DOM\) は名前空間に完全に対応しています。 名前空間に対応している XML ドキュメントだけがサポートされます。 W3C \(World Wide Web Consortium\) の仕様によれば、DOM Level 1 を実装する DOM アプリケーションは名前空間に対応していなくてもかまいませんが、DOM Level 2 の機能は名前空間に対応しています。 ただし、メソッドが DOM 勧告の Level 1 または Level 2 のどちらに準拠しているかに関係なく、XML DOM のすべての機能は名前空間に対応しています。 + + たとえば、名前空間に対応していない環境では、DOM Level 1 勧告の規定に従って `setAttribute("A:b", "123")` を呼び出しても、プレフィックス `A` とローカル名 `b` を持つ属性は設定されません。 この結果は、`A:b` という値の属性になります。 + + 名前空間に対応している環境では、DOM Level 2 の `setAttribute("A:b", "123")` を呼び出すと、属性のプレフィックスが `A` になり、ローカル名が `b` になります。 これが Microsoft .NET DOM の動作です。 + + したがって、名前パラメーターを受け取るすべてのメソッドは、名前を修飾するプレフィックスも受け取ります。 DOM Level 1 の **setAttribute** メソッドの `A:b` のような名前パラメーターは、次のように解析されます。 + +- コロン \(:\) が含まれない場合は、ローカル名が `name` パラメーターに設定され、プレフィックスと名前空間 URI は空の文字列になります。 + +- コロンが見つかると、最初のコロンの位置に基づいて名前が 2 つの部分に分割されます。 プレフィックスはコロンより前の文字列に設定され、ローカル名はコロンより後の文字列に設定されます。 名前空間 URI の値をとらないメソッドでは、名前空間 URI は解決されず、空の文字列のままになります。 それ以外の場合は、メソッドに渡された文字列が名前空間 URI として設定されます。 プレフィックスが定義されていない場合、**Save** メソッド、**InnerXml** プロパティ、および **OuterXml** プロパティは失敗します。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/namespaces-and-dtds-in-the-dom.md b/docs/standard/data/xml/namespaces-and-dtds-in-the-dom.md new file mode 100644 index 00000000000..fe85769749b --- /dev/null +++ b/docs/standard/data/xml/namespaces-and-dtds-in-the-dom.md @@ -0,0 +1,46 @@ +--- +title: "DOM における名前空間と DTD | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 1e9b55c4-76ad-4f54-8d96-7ce4b4cf1e05 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# DOM における名前空間と DTD +ドキュメント型定義 \(DTD\) によって名前空間のサポートは複雑になります。 たとえば、次の XML では、既定の属性の名前にコロンが含まれています。 + +``` + +``` + + この構造が許容される場合は、次のように解決される可能性があります。 + +- `x:` は名前空間プレフィックスとして扱われますが、このプレフィックスは `xmlns:x` という名前空間宣言によって解決されなければならないため、名前空間宣言を DTD のどこかに記述する必要があります。 このプレフィックスをインスタンス ドキュメント内の別の対象に割り当てるとエラーになります。 + +- `x:` は名前空間プレフィックスとして扱われますが、このプレフィックスは常にインスタンス要素のコンテキストで解決されます。 つまり、`item` 要素が現れる名前空間スコープに応じて、プレフィックスが別々の名前空間 URI \(Uniform Resource Identifier\) に割り当てられる可能性があります。 これは上記の解決よりも予測しやすい動作ですが、既定の属性を実体化する必要があるため、別の複雑な問題が発生します。 + +- コロンは DTD 内にあるために無視され、属性の名前はプレフィックスと名前空間 URI のない `x:y` になります。 + +- 既定の属性にコロンが含まれているため、DTD 内の名前でコロンを使用することはサポートされていないことを示す例外がスローされます。 これは予測可能な動作ですが、W3C \(World Wide Web Consortium\) が公開している DTD の多くは読み込めないことになります。 + +- ユーザーが DTD 検証を要求すると、ドキュメント全体に対する名前空間のサポートがオフになります。 これによって W3C DTD の読み込みが可能になり、結果は予測可能な動作になります。 + + Microsoft .NET Framework の XML には、W3C との互換性を最大限に保つための第 2 のオプションが実装されています。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/node-collections-in-namednodemaps-and-nodelists.md b/docs/standard/data/xml/node-collections-in-namednodemaps-and-nodelists.md new file mode 100644 index 00000000000..382301d4a03 --- /dev/null +++ b/docs/standard/data/xml/node-collections-in-namednodemaps-and-nodelists.md @@ -0,0 +1,30 @@ +--- +title: "NamedNodeMaps と NodeLists のノード コレクション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 025954b8-7aa8-47c5-a1c1-f81064fb4d65 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# NamedNodeMaps と NodeLists のノード コレクション +ノードのセットを取得し、順序付けられた、または順序付けられていないコレクションに格納できます。 ノード セットが格納された順序付けられていないコレクションは、W3C \(World Wide Web Consortium\) では NamedNodeMap と呼ばれています。このタイプのコレクションからは、名前またはインデックスによってデータを取得できます。 ノード セットが格納された順序付けられたコレクションは、W3C では NodeList と呼ばれています。このコレクションのデータは、0 から始まるインデックスによって取得できます。 NamedNodeMaps および NodeLists は、W3C で規定されています。 Microsoft .NET Framework での NamedNodeMap の実装は **XmlNamedNodeMap** であり、NodeList の実装は **XmlNodeList** です。 + + 順序付けられていないコレクションについては、「[名前またはインデックスによる順序付けられていないノードの取得](../../../../docs/standard/data/xml/unordered-node-retrieval-by-name-or-index.md)」を参照してください。 順序付けられたコレクションについては、「[インデックスによる順序付けられたノードの取得](../../../../docs/standard/data/xml/ordered-node-retrieval-by-index.md)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md b/docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md new file mode 100644 index 00000000000..543fab0625c --- /dev/null +++ b/docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md @@ -0,0 +1,71 @@ +--- +title: "XPathNavigator を使用するノード セットのナビゲーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 1a954b41-7173-40bc-8544-d430f209b1e5 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathNavigator を使用するノード セットのナビゲーション + クラスのノード セット ナビゲーション メソッドを使用して、 または オブジェクト内のノード間を移動できます。 すべてのノード間の移動、または クラスの選択メソッドによって返される選択されたノード セット間を移動できます。 + +## 要素ノード セットのナビゲーション + クラスは、要素ノードの移動に使用されるいくつかのメソッドを提供します。 利用可能なナビゲーション メソッドおよびその移動方法を次の表に示します。これには、属性および名前空間のノードのナビゲートに使用されるメソッドは含まれません。 + + オブジェクトでのノードの選択に関する詳細については、「[XPathNavigator を使用した XML データの選択、評価、および照合](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md)」を参照してください。 属性および名前空間の移動に関する詳細については、「[XPathNavigator を使用する属性と名前空間のナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md)」を参照してださい。 + +|メソッド|説明| +|----------|--------| +|| を指定された と同じ位置に移動します。| +|| を現在のノードの子ノードに移動します。| +|| を現在のノードの最初の兄弟ノードに移動します。| +|| を現在のノードの最初の子ノードに移動します。| +|| をドキュメント順で指定された要素に移動します。| +|| を、与えられた に一致する値の `ID` 型の属性を持つノードに移動します。| +|| を現在のノードの次の兄弟ノードに移動します。| +|| を現在のノードの親ノードに移動します。| +|| を現在のノードの前の兄弟ノードに移動します。| +|| を XML ドキュメントのルート ノードに移動します。| + +## コメントおよび処理命令ノードのナビゲーション + 次の クラスのメソッドは XML ドキュメント内の他のノードからコメントまたは処理命令に移動するのに有効です。 + +- + +- + +- + +- + +- + +- + +- + +- + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator を使用する属性と名前空間のナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md) + [XpathNavigator を使用した XML データの抽出](../../../../docs/standard/data/xml/extract-xml-data-using-xpathnavigator.md) + [厳密に型指定された XML データへの XPathNavigator を使用したアクセス](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/node-sets-in-transformations.md b/docs/standard/data/xml/node-sets-in-transformations.md new file mode 100644 index 00000000000..9822847f8dc --- /dev/null +++ b/docs/standard/data/xml/node-sets-in-transformations.md @@ -0,0 +1,89 @@ +--- +title: "変換におけるノード セット | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: ad034f0e-ff8b-4a71-9a4c-528c754263c4 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# 変換におけるノード セット +ノード セットは、XPath \(XML Path Language\) 式が返す 4 つの基本データ型のうちの 1 つです。 ノード セットは、ドキュメントの順番で作成された、重複がなくソートされていないノードのコレクションであり、スタイル シートの変数に割り当てることができます。 + +> [!NOTE] +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + ノード セットは、XPath 式が返す 4 つの基本データ型のうちの 1 つです。 ノード セットは、ドキュメントの順番で作成された、重複がなくソートされていないノードのコレクションであり、スタイル シートの変数に割り当てることができます。 変換の `select` 属性で使用される XPath 式の結果であるこのノード セットは、XML ドキュメント オブジェクト モデル \(DOM\) のノード セットと同じ動作をします。 移動に [XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md) を使用する結果ツリー フラグメントと異なり、ノード セットの場合は「」で説明している各種のメソッドを使用してノード セット間を移動します。 + + スタイル シートの `variable` 要素または `parameter` 要素がノード セットとして評価される場合のノード セットに対する反復処理を、次のコード サンプルに示します。 + +## スタイル シート + +``` + + + + + + + ****** + + ****** + + + + +``` + +## 入力 + +``` + + + Seven Years in Trenton + + + + Seven Years in Trenton2 + + + + History of Trenton Vol 3 + + +``` + +## 出力 + +``` +****** +Seven Years in Trenton +****** + +****** +Seven Years in Trenton2 +****** + +****** +History of Trenton Vol 3 +****** +``` + +## 参照 + + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) \ No newline at end of file diff --git a/docs/standard/data/xml/node-types-recognized-with-xpath-queries.md b/docs/standard/data/xml/node-types-recognized-with-xpath-queries.md new file mode 100644 index 00000000000..37500438d7a --- /dev/null +++ b/docs/standard/data/xml/node-types-recognized-with-xpath-queries.md @@ -0,0 +1,67 @@ +--- +title: "XPath クエリで認識されるノード型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 1d33e22d-18e5-43f8-a466-2e3d0a8dd094 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPath クエリで認識されるノード型 +XPath クエリで認識されるノードの型は、ドキュメント オブジェクト モデル \(DOM\) のノード型と同じではありません。 + +## W3C XPath のノード型 + XPath クエリで認識されるノードの型は、ドキュメント オブジェクト モデル \(DOM\) のノード型ではありません。 以下は、 列挙体によって表される XPath のノード型です。 + +- + +- + +- + +- + +- + +- + +- + +- + +- + +- + + これらのノード型は、XPath データ モデルに基づいており、ノードは XML 情報セットから派生しています。 および ノード型は、XPath データ モデルに記載されている基本のノード型に対する Microsoft .NET Framework の拡張です。 + + XPath における属性ノード型の使用法は DOM と異なります。 XPath データ モデルでは、要素ノードには関連する属性ノードのセットがあり、要素ノードはそれぞれの属性ノードの親になっています。 しかし、DOM では要素ノードは所有者であり、親ではありません。 いずれのモデルにおいても、属性ノードと名前空間ノードは要素ノードの子ノードとは見なされません。 + + 名前空間ノード型は XPath データ モデルに追加されたノード型であり、DOM で認識されるノード型ではありません。 + + 要素ノード、属性ノードおよび名前空間ノードの移動に関する詳細については、「[XPathNavigator を使用するノード セットのナビゲーション](../../../../docs/standard/data/xml/node-set-navigation-using-xpathnavigator.md)」と「[XPathNavigator を使用する属性と名前空間のナビゲーション](../../../../docs/standard/data/xml/attribute-and-namespace-node-navigation-using-xpathnavigator.md)」を参照してださい。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator を使用した XML データの選択](../../../../docs/standard/data/xml/select-xml-data-using-xpathnavigator.md) + [XPathNavigator による Xpath 式の評価](../../../../docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md) + [XPathNavigator によるノードの一致](../../../../docs/standard/data/xml/matching-nodes-using-xpathnavigator.md) + [XPath クエリおよび名前空間](../../../../docs/standard/data/xml/xpath-queries-and-namespaces.md) + [コンパイルされた XPath 式](../../../../docs/standard/data/xml/compiled-xpath-expressions.md) \ No newline at end of file diff --git a/docs/standard/data/xml/object-comparison-using-xmlnametable.md b/docs/standard/data/xml/object-comparison-using-xmlnametable.md new file mode 100644 index 00000000000..1e84008f52c --- /dev/null +++ b/docs/standard/data/xml/object-comparison-using-xmlnametable.md @@ -0,0 +1,63 @@ +--- +title: "XmlNameTable によるオブジェクトの比較 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 8d94e041-d340-4ddf-9a2c-d7319e3f4f86 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XmlNameTable によるオブジェクトの比較 +**XmlDocuments** の作成時には、そのドキュメント用の名前テーブルが作成されます。 XML がドキュメントに読み込まれるか、新しい要素または属性が作成されると、その属性名と要素名が **XmlNameTable** に格納されます。 別のドキュメントからの既存の **NameTable** を使用して **XmlDocument** を作成することもできます。 **XmlNameTable** パラメーターをとるコンストラクターを使用して **XmlDocuments** を作成すると、ドキュメントは、その **XmlNameTable** に既に保存されているノード名、名前空間、プレフィックスにアクセスするようになります。 どのような方法で名前テーブルと名前が読み込まれたとしても、いったんテーブルに名前が格納されると、文字列比較によってではなく、オブジェクト比較を利用して高速に名前を比較できます。 [NameTable.Add メソッド](frlrfSystemXmlNameTableClassAddTopic)を使用して、名前テーブルに文字列を追加することもできます。 名前テーブルを作成し、そのテーブルに **MyString** という文字列を追加するコード サンプルを次に示します。 その後、そのテーブルを使用して **XmlDocument** を作成し、**Myfile.xml** の要素名と属性名を既存の名前テーブルに追加します。 + +```vb +Dim nt As New NameTable() +nt.Add("MyString") +Dim doc As New XmlDocument(nt) +doc.Load("Myfile.xml") +``` + +```csharp +NameTable nt = new NameTable(); +nt.Add("MyString"); +XmlDocument doc = new XmlDocument(nt); +doc.Load("Myfile.xml"); +``` + + ドキュメントを作成し、ドキュメントに 2 つの新しい要素を追加し、それらの要素をドキュメントの名前テーブルにも追加して、名前のオブジェクト比較を実行するコード サンプルを次に示します。 + +```vb +Dim doc1 As XmlDocument = imp.CreateDocument() +Dim node1 As XmlElement = doc.CreateElement("node1") +Dim doc2 As XmlDocument = imp.CreateDocument() +Dim node2 As XmlElement = doc.CreateElement("node2") +if (CType(node1.Name, object) = CType(node2.Name, object)) +``` + +```csharp +XmlDocument doc1 = imp.CreateDocument(); +node1 = doc1.CreateElement ("node1"); +XmlDocument doc2 = imp.CreateDocument(); +node2 = doc2.CreateElement ("node1"); +if (((object)node1.Name) == ((object)node2.Name)) +{ ... +``` + + 上記のように 2 つのドキュメント間で名前テーブルが渡される状況は、同じタイプのドキュメントを繰り返し処理する場合によく発生します。たとえば、XML スキーマ定義言語 \(XSD\) スキーマまたはドキュメント型定義 \(DTD\) に準拠し、同じ文字列が繰り返し使われる発注ドキュメントを e コマース サイトで処理する場合などです。 このような場合は、同じ要素名が複数のドキュメントに現れるため、同じ名前テーブルを使用することによってパフォーマンスが向上します。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/ordered-node-retrieval-by-index.md b/docs/standard/data/xml/ordered-node-retrieval-by-index.md new file mode 100644 index 00000000000..a25d9809bc2 --- /dev/null +++ b/docs/standard/data/xml/ordered-node-retrieval-by-index.md @@ -0,0 +1,105 @@ +--- +title: "インデックスによる順序付けられたノードの取得 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 5412c90f-2703-4aa8-a9c4-1b8a35183c37 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# インデックスによる順序付けられたノードの取得 +W3C \(World Wide Web Consortium\) の XML ドキュメント オブジェクト モデル \(DOM\) では、**XmlNamedNodeMap** によって処理される順序付けられていないノード セットとは対照的に、順序付けられたノードのリストを処理する機能を持った NodeList も定義しています。 Microsoft .NET Framework の NodeList は **XmlNodeList** と呼ばれています。 **XmlNodeList** を返すメソッドとプロパティは次のとおりです。 + +- XmlNode.ChildNodes + +- XmlDocument.GetElementsByTagName + +- XmlElement.GetElementsByTagName + +- XmlNode.SelectNodes + + **XmlNodeList** には **Count** プロパティがあり、次のコード サンプルに示すように、ループを記述して **XmlNodeList** のノードを反復処理するために使用できます。 + +```vb +Dim doc as XmlDocument = new XmlDocument() + doc.Load("books.xml") + + ' Retrieve all book titles. + Dim root as XmlElement = doc.DocumentElement + Dim elemList as XmlNodeList = root.GetElementsByTagName("title") + Dim i as integer + for i=0 to elemList.Count-1 + ' Display all book titles in the Node List. + Console.WriteLine(elemList.ItemOf(i).InnerXml) + next + +``` + +```csharp +XmlDocument doc = new XmlDocument(); +doc.Load("books.xml"); +// Retrieve all book titles. +XmlElement root = doc.DocumentElement; +XmlNodeList elemList = root.GetElementsByTagName("title"); +for (int i=0; i < elemList.Count; i++) +{ + // Display all book titles in the Node List. + Console.WriteLine(elemList[i].InnerXml); +} +``` + + **Count** プロパティの他に、**XmlNodeList** 内のノード コレクションに対して `foreach` スタイルの反復処理を実行する **GetEnumerator** メソッドがあります。 `foreach` ステートメントの使用方法を次のコード サンプルに示します。 + +```vb +Dim doc As New XmlDocument() +doc.Load("books.xml") + +' Get book titles. +Dim root As XmlElement = doc.DocumentElement +Dim elemList As XmlNodeList = root.GetElementsByTagName("title") +Dim ienum As IEnumerator = elemList.GetEnumerator() +' Loop over the XmlNodeList using the enumerator ienum +While ienum.MoveNext() + ' Display the book title. + Dim title As XmlNode = CType(ienum.Current, XmlNode) + Console.WriteLine(title.InnerText) +End While +``` + +```csharp +{ + XmlDocument doc = new XmlDocument(); + doc.Load("books.xml"); + + // Get book titles. + XmlElement root = doc.DocumentElement; + XmlNodeList elemList = root.GetElementsByTagName("title"); + IEnumerator ienum = elemList.GetEnumerator(); + // Loop over the XmlNodeList using the enumerator ienum + while (ienum.MoveNext()) + { + // Display the book title. + XmlNode title = (XmlNode) ienum.Current; + Console.WriteLine(title.InnerText); + } + } +``` + + **XmlNodeList** で利用可能なメソッドとプロパティの詳細については、「[XmlNodeList メンバー](frlrfSystemXmlXmlNodeListMembersTopic)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/output-options-on-the-xslcompiledtransform-class.md b/docs/standard/data/xml/output-options-on-the-xslcompiledtransform-class.md new file mode 100644 index 00000000000..40e5252356f --- /dev/null +++ b/docs/standard/data/xml/output-options-on-the-xslcompiledtransform-class.md @@ -0,0 +1,70 @@ +--- +title: "XslCompiledTransform クラスの出力オプション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 91ce8cba-386c-411e-bb38-0891a0393c0a +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XslCompiledTransform クラスの出力オプション +このトピックでは、XSLT で使用できる出力オプションについて説明します。 出力オプションは、スタイル シート内で、または メソッドで指定できます。 + +## xsl:output 要素 + `xsl:output` 要素は出力のオプションを指定します。 メソッドで指定する出力の種類により、`xsl:output` オプションの動作が決定されます。 + + 次の表では、出力の種類がストリームか の場合に `xsl:output` 要素で使用できる各属性の動作について説明します。 + +|属性名|動作| +|---------|--------| +|メソッド|サポートされています。| +|version|無視されます。 バージョンは常に XML では 1.0、そして HTML では 4.0 です。| +|encoding| への出力時には無視されます。 プロパティが代わりに使用されます。| +|omit\-xml\-declaration|サポートされています。| +|スタンドアロン|サポートされています。| +|doctype\-public|サポートされています。| +|doctype\-system|サポートされています。| +|cdata\-section\-elements|サポートされています。| +|indent|サポートされています。| +|media\-type|サポートされています。| + +#### XmlWriter への出力の送出 + スタイル シートで `xsl:output` 要素が使用され、出力の種類が オブジェクトの場合は、 オブジェクトを作成する際に プロパティを使用します。 プロパティは、コンパイル済みスタイル シートの `xsl:output` 要素から派生した情報を含む オブジェクトを返します。 この オブジェクトを メソッドに渡して、正しい設定の オブジェクトを作成することができます。 + +## 出力の種類 + 次の一覧では、 コマンドで使用できる出力の種類について説明します。 + +#### XmlWriter + クラスは XML ストリームまたはファイルを書き出します。 クラスを使用して、出力オプションも含め、 オブジェクトでサポートする機能を指定できます。 クラスは フレームワークの重要な一部分です。 出力結果を別の XML プロセスにパイプラインして送るには、この出力を使用します。 + +#### String + 出力ファイルの URI を指定するには、この出力を使用します。 + +#### ストリーム + ストリームとは、ファイル、入出力デバイス、プロセス間通信のパイプ、または TCP\/IP ソケットなどのバイト シーケンスを抽象化したものです。 クラスとその派生クラスは、これら各種の入出力にジェネリックな視点を提供し、プログラマがオペレーティング システムや下位のデバイスに固有の詳細を考慮する必要をなくします。 + + 、または出力ストリーム \(`Response.OutputStream`\) にデータを送るには、この出力の種類を使用します。 + +#### TextWriter + は、文字シーケンスを書き出します。 これは クラスおよび クラスに実装され、それぞれ文字を文字列に、またはストリームに書き出します。 文字列に出力する場合は、この出力の種類を使用します。 + +## メモ + +- 空要素タグを書き出すとき、要素名の最後の文字とバック主ラッシュとの間に 1 つのスペースが書かれます。たとえば `` です。 これにより、生成された HTML ページが古いブラウザーで正しく表示されます。 + +## 参照 + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) \ No newline at end of file diff --git a/docs/standard/data/xml/outputs-from-an-xsltransform.md b/docs/standard/data/xml/outputs-from-an-xsltransform.md new file mode 100644 index 00000000000..01e3f7a94de --- /dev/null +++ b/docs/standard/data/xml/outputs-from-an-xsltransform.md @@ -0,0 +1,70 @@ +--- +title: "XslTransform からの出力 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 8e149d32-4b2f-493f-9e4b-d0d93475acde +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XslTransform からの出力 +スタイル シートは、`` ステートメントと `method` 属性を使って出力形式を決定できます。次の表では、 メソッドを使用して出力を書き出し、出力形式を または として宣言した場合に出力形式がどうなるかを説明します。 + +> [!NOTE] +> [!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] では、 クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + スタイル シートは、`` ステートメントと `method` 属性を使って出力形式を決定できます。次の表では、 メソッドを使用して出力を書き出し、出力形式を または として宣言した場合に出力形式がどうなるかを説明します。 メソッドを `` ステートメントと共に使用して出力の種類を宣言した場合に得られる結果を次の表に示します。 + +|\ attribute|結果の形式| +|-----------------------------------------|-----------| +|method\="xml"|XML| +|method\="html"|HTML| +|method\="text"|Text| + +> [!NOTE] +> メモ: メソッドの出力が または である場合、`` ステートメントは無視されます。 + + メソッドの出力が または である場合は、次の属性がサポートされます。 + +- encoding\* + +- omit\-xml\-declaration + +- スタンドアロン + +- doctype\-public + +- doctype\-system + +- cdata\-section\-elements + +- indent + + > [!NOTE] + > \* メソッドが出力を に送信する場合、encoding 属性は無視されます。 その場合は、encoding 属性の代わりに の encoding プロパティが使用されます。 + + メソッドの出力が の場合、次の属性は無視されます。 + +- version : バージョンは常に 1.0 です。 + +- media\-type : メディア タイプです。 + +## 特殊文字のエスケープ + `"<"` 記号の代わりに `<<>` を使用するなど、特殊文字を XML 形式にエスケープする必要があるかどうかを示すには、`` タグを使用します。 オブジェクトまたは オブジェクトへの変換では `disable-output-escaping` 属性が無視されるため、特殊文字はこのタグの影響を受けません。 + +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) \ No newline at end of file diff --git a/docs/standard/data/xml/post-schema-compilation-infoset.md b/docs/standard/data/xml/post-schema-compilation-infoset.md new file mode 100644 index 00000000000..842af722b14 --- /dev/null +++ b/docs/standard/data/xml/post-schema-compilation-infoset.md @@ -0,0 +1,49 @@ +--- +title: "スキーマのコンパイル後の情報セット | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 7f1bc7f4-401b-459f-9078-f099cc711fde +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# スキーマのコンパイル後の情報セット +W3C 勧告『[XML Schema](http://go.microsoft.com/fwlink/?linkid=45242)』では、スキーマ検証前とスキーマ コンパイル後に必ず公開する情報セットについて解説されています。 XML スキーマ オブジェクト モデル \(SOM\) は、 メソッドが呼び出される前と後について、この公開内容を調べます。 + + スキーマの検証前の情報セットは、スキーマの編集時に作成されます。 スキーマ コンパイル後の情報セットは、 メソッドが呼び出された後、スキーマのコンパイル時に生成され、プロパティとして公開されます。 + + SOM はスキーマ検証前とスキーマ コンパイル後の情報セットを表すオブジェクト モデルです。これは 名前空間内のクラスで構成されます。 名前空間内のクラスの読み書き可能なプロパティは、すべてスキーマ検証前の情報セットに属し、一方 名前空間のクラスの読み取り専用プロパティは、すべてスキーマ コンパイル後の情報セットに属します。 この規則の例外は、スキーマ検証前の情報セットとスキーマ コンパイル後の情報セットの両方のプロパティである、次のプロパティです。 + +|クラス|プロパティ| +|---------|-----------| +||| +||, , , , | +||| +||| +||, | +||| + + たとえば、 クラスと クラスには `BlockResolved` プロパティと `FinalResolved` プロパティがあります。 これらのプロパティは、スキーマがコンパイルおよび検証された後に、`Block` プロパティと `Final` プロパティの値を格納するために使用されます。 `BlockResolved` プロパティと `FinalResolved` プロパティは、スキーマ コンパイル後の情報セットの一部であり、読み取り専用のプロパティです。 + + スキーマの検証後に設定される クラスの プロパティを次の例に示します。 検証の前の時点では、このプロパティには `null` 参照が含まれており、 には問題の型の名前が設定されています。 検証後、 は有効な型に解決され、型オブジェクトは プロパティを通じて利用できます。 + + [!code-cpp[PsciSample#1](../../../../samples/snippets/cpp/VS_Snippets_Data/PsciSample/CPP/PsciSample.cpp#1)] + [!code-csharp[PsciSample#1](../../../../samples/snippets/csharp/VS_Snippets_Data/PsciSample/CS/PsciSample.cs#1)] + [!code-vb[PsciSample#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/PsciSample/VB/PsciSample.vb#1)] + +## 参照 + [XML スキーマ オブジェクト モデル \(SOM\)](../../../../docs/standard/data/xml/xml-schema-object-model-som.md) \ No newline at end of file diff --git a/docs/standard/data/xml/process-xml-data-using-linq-to-xml.md b/docs/standard/data/xml/process-xml-data-using-linq-to-xml.md new file mode 100644 index 00000000000..9ec488c70b4 --- /dev/null +++ b/docs/standard/data/xml/process-xml-data-using-linq-to-xml.md @@ -0,0 +1,37 @@ +--- +title: "LINQ to XML を使用した XML データの処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 059d6b9d-63f7-4011-9ba8-8406f0bbae7d +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# LINQ to XML を使用した XML データの処理 +LINQ to XML は、XML データの処理を目的とした Microsoft .NET Framework version 3.5 の新しいモデルです。 LINQ to XML を使用することで、XML ドキュメントのクエリ、変更、作成、保存、シリアル化など、XML データを扱う際に必要な処理をすべて実行できます。 特に、クエリと作成の機能が役立ちます。 + + LINQ to XML のクエリでは、XPath や XQuery よりも SQL に類似した構文が使用され、簡潔で表現力に優れています。 クエリの結果を要素や属性のコレクションとして返すことができ、XElement オブジェクトのパラメーターとして使用できるため、XML ツリーの形を簡単に変換することができます。 + + LINQ to XML では、.NET Framework version 3.5 の統合言語クエリ \(LINQ\) テクノロジを利用しています。 LINQ は C\# および Visual Basic の言語構文を拡張したもので、潜在的には任意のデータ ストアまで拡張できる強力なクエリ機能を備えています。 + + LINQ の詳細な使用方法については、「[LINQ to XML](../../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-xml.md)」を参照してください。LINQ フレームワークの概要については、「[LINQ \(Language\-Integrated Query\)](../Topic/LINQ%20\(Language-Integrated%20Query\).md)」を参照してください。 + +## 参照 + + + [LINQ to XML vs. DOM](../../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-xml-vs-dom.md) + [LINQ to XML vs. Other XML Technologies](../Topic/LINQ%20to%20XML%20vs.%20Other%20XML%20Technologies1.md) \ No newline at end of file diff --git a/docs/standard/data/xml/process-xml-data-using-the-dom-model.md b/docs/standard/data/xml/process-xml-data-using-the-dom-model.md new file mode 100644 index 00000000000..fb8ae4bc6c0 --- /dev/null +++ b/docs/standard/data/xml/process-xml-data-using-the-dom-model.md @@ -0,0 +1,71 @@ +--- +title: "DOM モデルを使用した XML データの処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 56b6e9c7-ed82-4a65-a647-7be32c83bcc8 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# DOM モデルを使用した XML データの処理 +XML ドキュメント オブジェクト モデル \(DOM\) は、XML データをメモリ内で処理するために使用され、XML データを標準の一連のオブジェクトとして取り扱います。 `System.Xml` 名前空間は、XML ドキュメント、フラグメント、ノード、またはノードセットのプログラム表現を提供します。 これは、W3C \(World Wide Web Consortium\) の DOM Level 1 Core および DOM Level 2 Core 勧告に基づいています。 + + クラスは、XML ドキュメントを表します。 これには、他のすべての XML オブジェクトの取り出しと作成のためのメンバーが含まれます。 およびその関連クラスを使用して、XML ドキュメントの作成、データの読み込みとアクセス、データの変更、および変更の保存が可能です。 + +## このセクションの内容 + +- [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) + +- [XML ノードの種類](../../../../docs/standard/data/xml/types-of-xml-nodes.md) + +- [XML ドキュメント オブジェクト モデル \(DOM\) の階層構造](../../../../docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md) + +- [オブジェクト階層の XML データへのマップ](../../../../docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md) + +- [XML ドキュメントの作成](../../../../docs/standard/data/xml/xml-document-creation.md) + +- [XML ドキュメントの DOM への読み取り](../../../../docs/standard/data/xml/reading-an-xml-document-into-the-dom.md) + +- [XML ドキュメントへのノードの挿入](../../../../docs/standard/data/xml/inserting-nodes-into-an-xml-document.md) + +- [XML ドキュメントからのノード、コンテンツ、値の削除](../../../../docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md) + +- [XML ドキュメントのノード、コンテンツ、値の変更](../../../../docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md) + +- [DOM における XML ドキュメントの検証](../../../../docs/standard/data/xml/validating-an-xml-document-in-the-dom.md) + +- [ドキュメントの保存と書き込み](../../../../docs/standard/data/xml/saving-and-writing-a-document.md) + +- [XPath ナビゲーションによるノードの選択](../../../../docs/standard/data/xml/select-nodes-using-xpath-navigation.md) + +- [外部リソースの解決](../../../../docs/standard/data/xml/resolving-external-resources.md) + +- [XmlNameTable によるオブジェクトの比較](../../../../docs/standard/data/xml/object-comparison-using-xmlnametable.md) + +- [NamedNodeMaps と NodeLists のノード コレクション](../../../../docs/standard/data/xml/node-collections-in-namednodemaps-and-nodelists.md) + +- [NodeLists および NamedNodeMaps の動的更新](../../../../docs/standard/data/xml/dynamic-updates-to-nodelists-and-namednodemaps.md) + +- [DOM における名前空間のサポート](../../../../docs/standard/data/xml/namespace-support-in-the-dom.md) + +- [XmlNodeChangedEventArgs による XML ドキュメントのイベント処理](../../../../docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md) + +- [DOM の拡張](../../../../docs/standard/data/xml/extending-the-dom.md) + +## 関連項目 + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + クラスによる XML の処理について説明します。 \ No newline at end of file diff --git a/docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md b/docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md new file mode 100644 index 00000000000..40d1f62773f --- /dev/null +++ b/docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md @@ -0,0 +1,51 @@ +--- +title: "XPath データ モデルを使用した XML データの処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 536c6fce-1453-4654-9c72-bca54d47e081 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPath データ モデルを使用した XML データの処理 + 名前空間は、 または クラスを使用して、メモリ内の XML ドキュメント、フラグメント、ノード、またはノードセットのプログラム表現を提供します。 + + クラスは、XPath データ モデルによる XML ドキュメントの高速、読み取り専用のメモリ内表現を提供します。 クラスは、W3C ドキュメント オブジェクト モデル \(DOM\) の DOM Level 1 Core および DOM Level 2 Core を実装する XML ドキュメントの編集可能なメモリ内表現です。 どちらのクラスも インターフェイスを実装し、基になる XML データの選択、評価、移動、および \(場合によっては\) 編集に使用される オブジェクトを返します。 + + 以下では、 クラスの機能を、それを返すクラスに基づいて説明します。 + +## このセクションの内容 + [XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md) + XML ドキュメントを読むために読み取り専用の クラス オブジェクトを作成する方法、および XML ドキュメントを読み込んで編集するために編集可能な クラス オブジェクトを作成する方法について説明します。 このトピックでは、各クラスから オブジェクトを返して、XML ドキュメント内を移動して編集する方法について説明します。 + + [XPathNavigator を使用した XML データの選択、評価、および照合](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md) + XPath クエリによる または オブジェクト内のノードの選択、XPath 式の結果の評価と検査、および XML ドキュメントのノードが指定された XPath 式に一致するかどうかの判定に使用される クラスのメソッドについて説明します。 + + [XPathNavigator による XML データへのアクセス](../../../../docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md) + オブジェクトまたは オブジェクト内で、ノード間の移動、XML データの抽出、および厳密に型指定された XML データへのアクセスに使用される クラスのメソッドについて説明します。 + + [XPathNavigator による XML データの編集](../../../../docs/standard/data/xml/editing-xml-data-using-xpathnavigator.md) + オブジェクトに含まれる XML ドキュメントでノードと値の挿入、変更、および削除に使用される クラスのメソッドについて説明します。 + + [XPathNavigator を使用したスキーマ検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md) + または オブジェクトに含まれる XML コンテンツの検証方法について説明します。 + +## 参照 + + + + [DOM モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-dom-model.md) \ No newline at end of file diff --git a/docs/standard/data/xml/processing-xml-data-in-memory.md b/docs/standard/data/xml/processing-xml-data-in-memory.md new file mode 100644 index 00000000000..43672f857d1 --- /dev/null +++ b/docs/standard/data/xml/processing-xml-data-in-memory.md @@ -0,0 +1,44 @@ +--- +title: "メモリ内の XML データの処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 1bbb4d05-ead7-4bda-8ece-f86d35c57ad4 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# メモリ内の XML データの処理 +Microsoft .NET Framework には、XML データを処理するためのモデルとして、 クラス、 クラス、[LINQ to XML](../../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-xml.md) の 3 つが用意されています。 + + クラスは、W3C ドキュメント オブジェクト モデル \(DOM\) 勧告の DOM Level 1 Core および DOM Level 2 Core を実装しています。 DOM は XML ドキュメントのメモリ内 \(キャッシュ\) ツリー表現です。 およびその関連クラスを使用すると、XML ドキュメントの作成、データの読み込みとアクセス、データの変更、および変更の保存が可能です。 + + クラスは、XPath データ モデルに基づく、読み取り専用のメモリ内データ ストアです。 クラスは、読み取り専用の クラスと クラス内の XML ドキュメント全体にカーソル モデルを使用して、いくつかの編集オプションとナビゲーション機能を提供します。 + + [LINQ to XML](../../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-xml.md) は、XML データの処理を目的とした Microsoft .NET Framework version 3.5 の新しいモデルです。 これは [LINQ \(Language\-Integrated Query\)](../Topic/LINQ%20\(Language-Integrated%20Query\).md) を利用したメモリ内モデルです。 LINQ では C\# および Visual Basic の言語構文を拡張することで、新しいクエリ機能を実現しています。 + +## このセクションの内容 + [DOM モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-dom-model.md) + とその関連クラスを使用した XML データの処理について説明します。 + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + 、および クラスを使用した XML データの処理について説明します。 + + [LINQ to XML を使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-linq-to-xml.md) + LINQ to XML の概要を簡単に説明し、LINQ to XML に関する参照先のリンクを示します。 + +## 関連項目 + [XML ドキュメントと XML データ](../../../../docs/standard/data/xml/index.md) \ No newline at end of file diff --git a/docs/standard/data/xml/reading-an-xml-document-into-the-dom.md b/docs/standard/data/xml/reading-an-xml-document-into-the-dom.md new file mode 100644 index 00000000000..200deca51f8 --- /dev/null +++ b/docs/standard/data/xml/reading-an-xml-document-into-the-dom.md @@ -0,0 +1,80 @@ +--- +title: "XML ドキュメントの DOM への読み取り | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: a4fb291f-5630-49ba-a49a-5b66c3b71e49 +caps.latest.revision: 3 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XML ドキュメントの DOM への読み取り +XML 情報は、さまざまな形式からメモリに読み取られます。 XML 情報は、文字列、ストリーム、URL、テキスト リーダー、および から派生したクラスから読み取ることができます。 + + ドキュメントをメモリに読み取る メソッドには、オーバーロードされたメソッドが用意されており、異なる形式からデータを取得するために使用できます。 また、文字列から XML を読み取る メソッドもあります。 + + 各 メソッドによって、XML ドキュメント オブジェクト モデル \(DOM\) が読み込まれるときに作成されるノードは異なります。 各種の メソッド間の違いと、それについて説明しているトピックを次の表に示します。 + +|Subject|トピック| +|-------------|----------| +|空白ノードの作成|DOM を読み込むために使用したオブジェクトに応じて、DOM で生成される空白ノードと有意の空白ノードの処理が異なります。 詳細については、「[DOM を読み込むときの空白および有意の空白の処理](../../../../docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md)」を参照してください。| +|特定ノード以降の XML の読み込み、または XML ドキュメント全体の読み込み| メソッドを使用して、データを特定のノードから DOM に読み込むことができます。 詳細については、「[リーダーからのデータの読み込み](../../../../docs/standard/data/xml/load-data-from-a-reader.md)」を参照してください。| +|XML の読み込み時の検証|DOM に読み込む XML データは、読み込みながら検証することができます。 これは検証型の を使用して行えます。 XML の検証の詳細については、「[DOM における XML ドキュメントの検証](../../../../docs/standard/data/xml/validating-an-xml-document-in-the-dom.md)」を参照してください。| + + メソッドによって XML を読み込む例を次に示します。読み込まれたデータは、`data.xml` というテキスト ファイルに保存されます。 + +```vb +Imports System +Imports System.IO +Imports System.Xml + +Public Class Sample + + Public Shared Sub Main() + ' Create the XmlDocument. + Dim doc As New XmlDocument() + doc.LoadXml(("" & _ + "Pride And Prejudice" & _ + "")) + ' Save the document to a file. + doc.Save("data.xml") + End Sub 'Main +End Class 'Sample +``` + +```csharp +using System; +using System.IO; +using System.Xml; + +public class Sample +{ + public static void Main() + { + // Create the XmlDocument. + XmlDocument doc = new XmlDocument(); + doc.LoadXml("" + + "Pride And Prejudice" + + ""); + + // Save the document to a file. + doc.Save("data.xml"); + } +} +``` + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/reading-and-writing-xml-schemas.md b/docs/standard/data/xml/reading-and-writing-xml-schemas.md new file mode 100644 index 00000000000..54c905093ac --- /dev/null +++ b/docs/standard/data/xml/reading-and-writing-xml-schemas.md @@ -0,0 +1,63 @@ +--- +title: "XML スキーマの読み取りと書き込み | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: b5757c4a-ea59-467e-ac62-be2bfe24eb77 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XML スキーマの読み取りと書き込み +スキーマ オブジェクト モデル \(SOM\) API を使用すると、ファイルまたは他のソースから XML スキーマ定義言語 \(XSD\) スキーマを読み取ったり、書き込んだりできます。また、W3C \(World Wide Web Consortium\) 勧告『XML Schema』で定義された構造に割り当てられた 名前空間のクラスを使用してメモリ内に XML スキーマを作成することもできます。 + +## XML スキーマの読み取りと書き込み + クラスでは、 メソッドおよび メソッドを利用して XML スキーマの読み取りと書き込みを行うことができます。 メソッドは XML スキーマを表す オブジェクトを返し、オプションの をパラメーターとして受け取って XML スキーマの読み取り時に発生するスキーマ検証に関する警告とエラーを処理します。 + + メソッドは および オブジェクトに XML スキーマを書き込んで、オプションで オブジェクトをパラメーターとして受け取ることができます。 は、XML スキーマ内で検出される名前空間の処理に使用されます。 クラスの詳細については、「[XML ドキュメントでの名前空間の管理](../../../../docs/standard/data/xml/managing-namespaces-in-an-xml-document.md)」を参照してください。 + + 次のコード サンプルでは、XML スキーマのファイルからの読み込みとファイルへの書き込みを説明します。 このコード サンプルは、`static` メソッドを使用して オブジェクトに `example.xsd` ファイルを読み込み、その後、このファイルをコンソールに出力して新しい `new.xsd` ファイルに書き込みます。 また、このコード サンプルでは、`static` メソッドに をパラメーターとして指定して、XML スキーマを読み込む際に検出されるスキーマ検証時の警告やエラーの処理を行います。 を指定しないと \(`null`\)、警告やエラーは報告されません。 + + [!code-cpp[XmlSchemaReadWriteExample#1](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaReadWriteExample/CPP/XmlSchemaReadWriteExample.cpp#1)] + [!code-csharp[XmlSchemaReadWriteExample#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaReadWriteExample/CS/XmlSchemaReadWriteExample.cs#1)] + [!code-vb[XmlSchemaReadWriteExample#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaReadWriteExample/VB/XmlSchemaReadWriteExample.vb#1)] + + この例は、入力として `example.xsd` を使用します。 + +``` + + + + + + + + + + + + +``` + +## 参照 + [XML スキーマ オブジェクト モデルの概要](../../../../docs/standard/data/xml/xml-schema-object-model-overview.md) + [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) + [XML スキーマの走査](../../../../docs/standard/data/xml/traversing-xml-schemas.md) + [XML スキーマの編集](../../../../docs/standard/data/xml/editing-xml-schemas.md) + [XML スキーマのインクルードまたはインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマのコンパイル後の情報セット](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) + [XML ドキュメントでの名前空間の管理](../../../../docs/standard/data/xml/managing-namespaces-in-an-xml-document.md) \ No newline at end of file diff --git a/docs/standard/data/xml/reading-entity-declarations-and-entity-references-into-the-dom.md b/docs/standard/data/xml/reading-entity-declarations-and-entity-references-into-the-dom.md new file mode 100644 index 00000000000..c754b4b4a0e --- /dev/null +++ b/docs/standard/data/xml/reading-entity-declarations-and-entity-references-into-the-dom.md @@ -0,0 +1,67 @@ +--- +title: "エンティティ宣言とエンティティ参照の DOM への読み込み | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 86dba977-5cc4-4567-964f-027ffabc47b2 +caps.latest.revision: 5 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 5 +--- +# エンティティ宣言とエンティティ参照の DOM への読み込み +エンティティとは、コンテンツやマークアップの代わりに XML で使われる名前を指定する宣言です。 エンティティを使用するには、2 つの手順が必要です。 まず、エンティティ宣言を使用して、置換するコンテンツに名前を結び付ける必要があります。 エンティティ宣言は、ドキュメント型定義 \(DTD\) または XML スキーマの中で、`` 構文を使って作成します。 次に、エンティティ宣言で定義した名前を XML で使用します。 XML で使用するときは、エンティティ参照と呼ばれます。 たとえば、次のエンティティ宣言は、`publisher` という名前のエンティティを宣言し、それを "Microsoft Press" というコンテンツに関連付けます。 + +``` + +``` + + このエンティティ宣言を、XML でエンティティ参照として使用する例を次に示します。 + +``` +Fred +Published by &publisher; +``` + + パーサーの中には、ドキュメントをメモリに読み込むとき、エンティティを自動的に展開するものがあります。 この場合は、XML がメモリに読み込まれるときに、エンティティ宣言が記憶されて保存されます。 その後、一般エンティティ参照を識別する `&;` 文字を検出すると、パーサーはその名前をエンティティ宣言テーブルで検索します。 `&publisher;` という参照は、それが表すコンテンツに置き換えられます。 たとえば、次の XML を使用します。 + +``` +Fred +Published by &publisher; +``` + + エンティティ参照は展開され、`&publisher;` が Microsoft Press というコンテンツに置き換えられます。展開された XML は次のようになります。 + + **出力** + +``` +Fred +Published by Microsoft Press +``` + + エンティティには多くの種類があります。 エンティティの分類と用語を次の図に示します。 + + ![エンティティ型階層のフロー チャート](../../../../docs/standard/data/xml/media/entity-hierarchy.gif "Entity\_hierarchy") + + XML ドキュメント オブジェクト モデル \(DOM\) の Microsoft .NET Framework の実装では、XML の読み込み時に既定でエンティティ参照を保持し、エンティティを展開しません。 つまり、ドキュメントが DOM に読み込まれるときには、 **という参照変数を含む `&publisher;`XmlEntityReference** ノードが作成され、その子ノードとして、DTD に宣言されたエンティティのコンテンツを表すノードが作成されます。 + + `` というエンティティ宣言を使用した場合に、この宣言によって作成される **XmlEntity** ノードと **XmlText** ノードを次の図に示します。 + + ![エンティティ宣言により作成されたノード](../../../../docs/standard/data/xml/media/xml-entitydeclaration-node2.png "xml\_entitydeclaration\_node2") + + エンティティ参照が展開されるかどうかによって、メモリの DOM ツリーに生成されるノードが変わります。 生成されるノードの違いについては、「[保持されるエンティティ参照](../../../../docs/standard/data/xml/entity-references-are-preserved.md)」と「[保持されずに展開されるエンティティ参照](../../../../docs/standard/data/xml/entity-references-are-expanded-and-not-preserved.md)」で説明しています。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md b/docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md new file mode 100644 index 00000000000..350ad721ff8 --- /dev/null +++ b/docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md @@ -0,0 +1,88 @@ +--- +title: "XPathDocument および XmlDocument を使用した XML データの読み取り | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 5711b225-6aa2-4e4f-9898-19f2d518ad1a +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathDocument および XmlDocument を使用した XML データの読み取り + 名前空間で XML ドキュメントを読み取る方法は 2 つあります。 1 つは読み取り専用の クラスを使用して XML ドキュメントを読み取る方法で、もう 1 つは、 名前空間で編集可能な クラスを使用して XML ドキュメントを読み取る方法です。 + +## XPathDocument クラスを使用した XML ドキュメントの読み取り + クラスは、XPath データ モデルによる XML ドキュメントの高速、読み取り専用のメモリ内表現を提供します。 クラスのインスタンスは、その 6 つのコンストラクターの 1 つを使用して作成されます。 これらのコンストラクターでは、、または オブジェクトを使用して XML ドキュメントを読み取ることも、XML ファイルへの `string` パスを使用して XML ドキュメントを読み取ることもできます。 + + 以下は、 クラスの `string` コンストラクターを使用して XML ドキュメントを読み取る例です。 + +```vb +Dim document As XPathDocument = New XPathDocument("books.xml") +``` + +```csharp +XPathDocument document = new XPathDocument("books.xml"); +``` + +## XmlDocument クラスを使用した XML ドキュメントの読み取り + クラスは、W3C ドキュメント オブジェクト モデル \(DOM\) の DOM Level 1 Core および DOM Level 2 Core を実装する XML ドキュメントの編集可能なメモリ内表現です。 クラスのインスタンスは、その 3 つのコンストラクターの 1 つを使用して作成されます。 クラス コンストラクターをパラメーターなしで呼び出すことによって、新しい空の オブジェクトを作成できます。 コンストラクターの呼び出し後、 メソッドを使用するか、XML ファイルへの `string` パスを使用して、、または オブジェクトから新しい オブジェクトに XML データを読み込みます。 + + 以下は、パラメーターなしの クラス コンストラクターと メソッドを使用して XML ドキュメントを読み込む例です。 + +```vb +Dim document As XmlDocument = New XmlDocument() +document.Load("books.xml") +``` + +```csharp +XmlDocument document = new XmlDocument(); +document.Load("books.xml"); +``` + +## XML ドキュメントのエンコーディングの判定 + 前に示されているように、 オブジェクトを使用して XML ドキュメントを読み取り、 および オブジェクトを作成できます。 ただし、 オブジェクトは、エンコードされていないデータを読み取り、その結果、エンコード情報を提供しない場合があります。 + + クラスは、 クラスを継承し、その プロパティを使用してエンコード情報を提供します。また、このクラスは、 オブジェクトまたは オブジェクトの作成に使用できます。 + + クラスよって提供されるエンコード情報に関する詳細については、 クラスのリファレンス ドキュメントの「」プロパティを参照してください。 + +## XPathNavigator オブジェクトの作成 + または オブジェクトのどちらからに XML ドキュメントを読み込んだ後、 オブジェクト作成して、基になる XML データを選択、評価、移動、および \(一部の状況で\) 編集できます。 + + クラスに加えて、 および クラスは両方とも、 名前空間の インターフェイスを実装しています。 結果として、3 つのクラスはすべて オブジェクトを返す メソッドを提供します。 + +### XPathNavigator クラスによる XML ドキュメントの編集 + XML データの選択、評価、および移動に加えて、 クラスは、作成元のオブジェクトに基づき、一部の状況で XML ドキュメントの編集に使用できます。 + + クラスは読み取り専用ですが、 クラスは編集可能です。その結果、 オブジェクトから作成された オブジェクトは XML ドキュメントの編集に使用できませんが、 オブジェクトから作成された場合は編集に使用できます。 クラスは XML ドキュメントの読み取りだけに使用する必要があります。 XML ドキュメントを編集する必要がある場合、またはイベント処理など クラスによって提供される追加の機能が必要な場合は、 クラスを使用する必要があります。 + + クラスの プロパテイは、 オブジェクトが XML データを編集できるかどうかを指定します。 + + 各クラスの プロパティ値についての説明を次に示します。 + +| 実装| 値| +|--------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| +||`false`| +||`true`| + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator による XML データへのアクセス](../../../../docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データの編集](../../../../docs/standard/data/xml/editing-xml-data-using-xpathnavigator.md) + [XPathNavigator を使用したスキーマ検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/recoverable-xslt-errors.md b/docs/standard/data/xml/recoverable-xslt-errors.md new file mode 100644 index 00000000000..a5fe0c33d7e --- /dev/null +++ b/docs/standard/data/xml/recoverable-xslt-errors.md @@ -0,0 +1,67 @@ +--- +title: "XSLT エラーの解決 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 484929b0-fefb-4629-87ee-ebdde70ff1f8 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XSLT エラーの解決 +W3C 勧告『XSL Transformations \(XSLT\) Version 1.0』には、対処方法を実装者が決定できる事項があります。 このような事項は、随意動作と見なされています。 たとえば、XSLT 1.0 Recommendation は、セクション 7.3「Creating Processing Instructions」で、`xsl:processing-instruction` の内容をインスタンス化したときに、テキスト ノード以外のノードが作成されるのはエラーであるとしています。 いくつかの問題に関しては、プロセッサがエラー状態から回復するときにどのような対処をするべきかを、XSLT 1.0 Recommendation が規定しています。 セクション 7.3 に記述されている問題に関しては、W3C では、作成されたノードとその内容を無視することで、このエラーから回復できるとしています。 + +## 随意動作 + XSLT 1.0 Recommendation で許可されている随意動作と クラスによるこれらの動作の処理方法を次の表に示します。 + +- 復元は、 クラスがこのエラーから回復することを示しています。 イベントを使用すると、XSLT プロセッサのすべてのイベントを通知できます。 + +- エラーは、この状態に対する例外が発生したことを示します。 + +- 詳細については、W3C 勧告『[XSL Transformations \(XSLT\) Version 1.0 Recommendation](http://go.microsoft.com/fwlink/?LinkId=49919)』および『[XSL Transformations \(XSLT\) Version 1.0 Specification Errata](http://go.microsoft.com/fwlink/?LinkId=49917)』を参照してください。 + +|XSLT の状態|セクション|XslCompiledTransform の動作| +|--------------|-----------|------------------------------| +|テキスト ノードが `xsl:strip-space` と `xsl:preserve-space` の両方に適合している。|3.4|復元| +|ソース ノードが複数のテンプレート規則に適合している。|5.5|復元| +|1 つの名前空間 URI が同じインポート優先順位を持つ複数の名前空間 URI のエイリアスとして宣言されている。|7.1.1|復元| +|属性値から生成された `xsl:attribute` と `xsl:element` 内の `name` 属性が QName ではない。|7.1.2, 7.1.3|エラー\*| +|同じインポートおよび展開名を持つ 2 つの属性セットに共通の属性が含まれており、これらの属性セット以外に、同じ名前で優先順位の高い共通属性を含む属性セットがない。|7.1.4|復元| +|要素に子が既に追加されているにもかかわらず、その要素に属性が追加される。|7.1.3|エラー\*| +|'xmlns' という名前を持つ属性が作成される。|7.1.3|エラー\*| +|要素ではないノードに属性が追加される。|7.1.3|エラー\*| +|`xsl:attribute` 属性の内容をインスタンス化する際にテキスト ノード以外のノードが作成される。|7.1.3|エラー\*| +|`xsl:processing-instruction` の `name` 属性が NCName と処理命令ターゲットのどちらも生成しない。|7.3|エラー\*| +|`xsl:processing-instruction` の内容をインスタンス化すると、テキスト ノード以外のノードが作成される。|7.3|エラー\*| +|`xsl:processing-instruction` の内容をインスタンス化した結果に文字列 "?\>" が含まれている。|7.3|復元| +|`xsl:processing-instruction` の内容をインスタンス化した結果に文字列 "\-\-" が含まれているか、または "\-" で終了している。|7.4|復元| +|`xsl:comment` の内容をインスタンス化した結果、テキスト ノード以外のノードが作成される。|7.4|エラー\*| +|変数バインディング要素内のテンプレートが属性ノードまたは名前空間ノードを返す。|11.2|エラー\*| +|document 関数に渡された URI からのリソースの取得時にエラーが発生する。|12.1|Error| +|document 関数内の URI 参照にフラグメント ID が含まれており、その ID を処理するとエラーが発生する。|12.1|復元\*| +|同じ名前とさまざまな値を持つ複数の属性があり、これらの属性が同じインポート優先順位を持つ `xsl:output` の名前付き cdata\-section 要素にならない。|16|復元| +|プロセッサが `xsl:output` の encoding 属性のエンコーディングをサポートしない。|16.1|復元| +|テキスト ノードの出力エスケープが無効で、そのテキスト ノードが結果ツリーのテキスト ノード以外のもののために使用されている。|16.4|復元\*| +|出力エスケープが有効に設定されているテキスト ノードが結果ツリー フラグメントに含まれている場合に、そのフラグメントが数値や文字列に変換される。|16.4|復元\*| +|XSLT プロセッサが出力に使用しているエンコーディングで表すことができない文字に対して、出力エスケープが無効に設定される。|16.4|復元\*| +|要素に子または属性が追加された後で、その要素に名前空間ノードが追加される。|errata 25|エラー\*| +|`xsl:number` の `value` 属性が NAN、無限、または 0.5 未満である。|errata 24|復元| +|document 関数への 2 番目の引数ノード セットが空であり、URI 参照が相対 URI 参照である。|errata 14|復元| + + * この動作は、 クラスの動作とは異なります。 詳細については、「[XslTransform クラスの随意動作の実装](../../../../docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md)」を参照してください。 + +## 参照 + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) \ No newline at end of file diff --git a/docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md new file mode 100644 index 00000000000..bdb66773626 --- /dev/null +++ b/docs/standard/data/xml/remove-xml-data-using-xpathnavigator.md @@ -0,0 +1,196 @@ +--- +title: "XPathNavigator による XML データの削除 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 9f436bca-1b96-494b-a6d2-e102c7551752 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathNavigator による XML データの削除 + クラスは、XML ドキュメントからノードを削除するためのメソッドのセットを提供します。 これらのメソッドを使用するには、 オブジェクトが編集可能である必要があります。つまり、その プロパティを `true` にする必要があります。 + + XML ドキュメントを編集できる オブジェクトは、 クラスの メソッドによって作成されます。 クラスによって作成される オブジェクトは読み取り専用であり、 オブジェクトによって作成される オブジェクトの編集メソッドを使用しようとすると、 が発生します。 + + 編集可能な オブジェクトの作成に関する詳細については、「[XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)」を参照してください。 + +## ノードの削除 + クラスは、XML ドキュメントからノードを削除する メソッドを提供します。 + +### 1 つのノードの削除 + クラスは、XML ドキュメントから、 オブジェクトが現在位置している現在のノードを削除する メソッドを提供します。 + + メソッドを使用してノードを削除した後は、 オブジェクトのルートからそのノードに到達することはできません。 ノードの削除後、 は削除されたノードの親ノード上に位置します。 + + 削除操作により、削除されたノード上に位置していた オブジェクトの位置に影響はありません。 これらの オブジェクトは削除されたサブツリー内を移動できるという点で有効ですが、 クラスの通常のノード セットの移動メソッドを使用して、主ノード ツリーには移動できません。 + +> [!NOTE] +> クラスの メソッドは、これらの オブジェクトを主ノード ツリーに戻したり、主ノード ツリーから削除されたサブツリーに移動したりするために使用できます。 + + 次の例では、`contosoBooks.xml` ファイルの最初の `book` 要素の `price` 要素を、 メソッドを使用して削除します。 `price` 要素が削除された後の オブジェクトの位置は、親の `book` 要素上です。 + +```vb +Dim document As XmlDocument = New XmlDocument() +document.Load("contosoBooks.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books") +navigator.MoveToChild("book", "http://www.contoso.com/books") +navigator.MoveToChild("price", "http://www.contoso.com/books") + +navigator.DeleteSelf() + +Console.WriteLine("Position after delete: {0}", navigator.Name) +Console.WriteLine(navigator.OuterXml) +``` + +```csharp +XmlDocument document = new XmlDocument(); +document.Load("contosoBooks.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books"); +navigator.MoveToChild("book", "http://www.contoso.com/books"); +navigator.MoveToChild("price", "http://www.contoso.com/books"); + +navigator.DeleteSelf(); + +Console.WriteLine("Position after delete: {0}", navigator.Name); +Console.WriteLine(navigator.OuterXml); +``` + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + +### 属性ノードの削除 + 属性ノードは メソッドを使用して XML ドキュメントから削除します。 + + 削除後、 オブジェクトのルート ノードから属性ノードには到達できません。 オブジェクトの位置は親要素上になります。 + +#### 既定の属性 + XML ドキュメントの既定の属性として、DTD または XML スキーマに定義されている属性を削除するときは、使用するメソッドにかかわらず、特別な制限が適用されます。 既定の属性は、その属性が含まれている要素も削除しない限り削除できません。 既定の属性が宣言されている要素に既定の属性は常に存在します。その結果、既定の属性を削除すると、その要素に代替の属性が挿入され、宣言された既定の値に初期化されます。 + +## 値の削除 + クラスには、XML ドキュメントから型指定された値と型指定されていない値を削除する メソッドと メソッドがあります。 + +### 型指定されていない値の削除 + メソッドは、パラメーターとして渡された型指定されていない `string` 値を挿入するだけです。このパラメーターは、 オブジェクトの現在位置にあるノードの値です。 メソッドに空の文字列を渡すと、現在のノードの値が削除されます。 + + 次の例では、 メソッドを使用して、`contosoBooks.xml` ファイル内の最初の `book` 要素の `price` 要素の値を削除します。 + +```vb +Dim document As XmlDocument = New XmlDocument() +document.Load("contosoBooks.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books") +navigator.MoveToChild("book", "http://www.contoso.com/books") +navigator.MoveToChild("price", "http://www.contoso.com/books") + +navigator.SetValue("") + +navigator.MoveToRoot() +Console.WriteLine(navigator.OuterXml) +``` + +```csharp +XmlDocument document = new XmlDocument(); +document.Load("contosoBooks.xml"); +XPathNavigator navigator = document.CreateNavigator(); + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books"); +navigator.MoveToChild("book", "http://www.contoso.com/books"); +navigator.MoveToChild("price", "http://www.contoso.com/books"); + +navigator.SetValue(""); + +navigator.MoveToRoot(); +Console.WriteLine(navigator.OuterXml); +``` + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + +### 型指定された値の削除 + ノードの型が W3C XML スキーマの単純型の場合、 メソッドによって挿入される新しい値は、値の設定前に、単純型のファセットに対してチェックされます。 新しい値がノードの型に対して無効な場合 \(たとえば、型が `xs:positiveInteger` の要素に、値 `-1` を設定するような場合\)、例外が返されます。 メソッドにもパラメーターとして `null` を渡すことはできません。 結果として、型指定されたノードの値の削除は、ノードのスキーマの型に従う必要があります。 + + 次の例では、 メソッドを使用して、値を `0` に設定することにより、`contosoBooks.xml` ファイル内の最初の `book` 要素の `price` 要素の値を削除します。 ノードの値は削除されませんが、本の価格はそのデータ型 `xs:decimal` に従って削除されました。 + +```vb +Dim settings As XmlReaderSettings = New XmlReaderSettings() +settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd") +settings.ValidationType = ValidationType.Schema + +Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings) + +Dim document As XmlDocument = New XmlDocument() +document.Load(reader) +Dim navigator As XPathNavigator = document.CreateNavigator() + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books") +navigator.MoveToChild("book", "http://www.contoso.com/books") +navigator.MoveToChild("price", "http://www.contoso.com/books") + +navigator.SetTypedValue(0) + +navigator.MoveToRoot() +Console.WriteLine(navigator.OuterXml) +``` + +```csharp +XmlReaderSettings settings = new XmlReaderSettings(); +settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd"); +settings.ValidationType = ValidationType.Schema; + +XmlReader reader = XmlReader.Create("contosoBooks.xml", settings); + +XmlDocument document = new XmlDocument(); +document.Load(reader); +XPathNavigator navigator = document.CreateNavigator(); + +navigator.MoveToChild("bookstore", "http://www.contoso.com/books"); +navigator.MoveToChild("book", "http://www.contoso.com/books"); +navigator.MoveToChild("price", "http://www.contoso.com/books"); + +navigator.SetTypedValue(0); + +navigator.MoveToRoot(); +Console.WriteLine(navigator.OuterXml); +``` + +## 名前空間ノード + 名前空間ノードは オブジェクトから削除できません。 メソッドを使用して名前空間ノードを削除しようとすると、例外が発生します。 + +## InnerXml および OuterXml プロパティ + クラスの および プロパティは、 オブジェクトの現在位置にある XML マークアップを変更します。 + + プロパティは、与えられた XML `string` の解析済みの内容を使用して オブジェクトの現在位置にある子ノードの XML マークアップを変更します。 同様に、 プロパティは、 オブジェクトの現在位置にある子ノードと現在のノード自体の XML マークアップを変更します。 + + このトピックで説明したメソッドに加えて、 プロパティと プロパティは、XML ドキュメントからノードと値を削除するために使用できます。 プロパティと プロパティを使用してノードを変更する方法の詳細については「[XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md)」を参照してください。 + +## XML ドキュメントの保存 + ここに記載されているメソッドによる オブジェクトに対する変更の保存は、 クラスのメソッドを使用して実行されます。 オブジェクトに対する変更の保存に関する詳細については、「[ドキュメントの保存と書き込み](../../../../docs/standard/data/xml/saving-and-writing-a-document.md)」を参照してください。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator による XML データの挿入](../../../../docs/standard/data/xml/insert-xml-data-using-xpathnavigator.md) + [XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md b/docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md new file mode 100644 index 00000000000..2121a1513b1 --- /dev/null +++ b/docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md @@ -0,0 +1,52 @@ +--- +title: "DOM の要素ノードからの属性の削除 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 7ede6f9e-a3ac-49a4-8488-ab8360a44aa4 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# DOM の要素ノードからの属性の削除 +属性を削除するには、さまざまな方法があります。 その 1 つとして、属性コレクションから属性を削除する方法があります。 属性コレクションから属性を削除するには、次の手順を実行します。 + +1. `XmlAttributeCollection attrs = elem.Attributes;` を使用して要素から属性コレクションを取得します。 + +2. 属性コレクションから属性を削除するには、次の 3 つのメソッドのいずれかを使用します。 + + - メソッドを使用して、特定の属性を削除する。 + + - メソッドを使用して、コレクションからずべての属性を削除し、属性のない要素を残す。 + + - メソッドを使用して、コレクションのインデックス番号を使用して 1 つの属性を属性コレクションから削除する。 + + 要素ノードから属性を削除するには、次のメソッドを使用します。 + +- メソッドを使用して、属性のコレクションを削除する。 + +- メソッドを使用して、名前を指定して単一の属性をコレクションから削除する。 + +- メソッドを使用して、インデックス番号を指定して単一の属性をコレクションから削除する。 + + もう 1 つの方法として、要素を取得し、属性コレクションから属性を取得して、属性ノードを直接削除する方法もあります。 属性コレクションから属性を取得するには、名前 \(`XmlAttribute attr = attrs["attr_name"];`\)、インデックス \(`XmlAttribute attr = attrs[0];`\)、または名前空間を指定した完全修飾名 \(`XmlAttribute attr = attrs["attr_localName", "attr_namespace"]`\) を使用できます。 + + 既定の属性としてドキュメント型定義 \(DTD\) に定義されている属性を削除するときは、使用するメソッドにかかわらず、特別な制限が適用されます。 既定の属性は、その属性が含まれている要素を削除しない限り削除できません。 既定の属性が宣言されている要素には、常に既定の属性が存在します。 または から既定の属性を削除すると、代わりの属性が要素の に挿入され、宣言されている既定値に初期化されます。 たとえば、`` として定義された要素がある場合、`book` 要素には、宣言された 3 つの既定の属性が設定されます。 XML ドキュメント オブジェクト モデル \(DOM\) の実装によって、この `book` 要素が存在する限り、`att1`、`att2`、および `att3` という 3 つの既定の属性が存在することが保証されます。 + + を呼び出した場合、 メソッドにより、属性の値が String.Empty に設定されます。これは、値のない属性が存在できないためです。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/removing-node-content-in-the-dom.md b/docs/standard/data/xml/removing-node-content-in-the-dom.md new file mode 100644 index 00000000000..136e7835340 --- /dev/null +++ b/docs/standard/data/xml/removing-node-content-in-the-dom.md @@ -0,0 +1,28 @@ +--- +title: "DOM のノード コンテンツの削除 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 615d81a7-f44f-416c-a9ab-bfe03f85e6e4 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# DOM のノード コンテンツの削除 + を継承するノード型、つまり 、および ノード型では、ノードから文字範囲を削除する メソッドを使用して文字を削除できます。 コンテンツを完全に削除するには、そのコンテンツが含まれているノードを削除します。 ノードを保持する必要があり、コンテンツが正しくない場合は、そのコンテンツを変更します。 ノードのコンテンツを変更する方法については、「[XML ドキュメントのノード、コンテンツ、値の変更](../../../../docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md b/docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md new file mode 100644 index 00000000000..db058503c7f --- /dev/null +++ b/docs/standard/data/xml/removing-nodes-content-and-values-from-an-xml-document.md @@ -0,0 +1,30 @@ +--- +title: "XML ドキュメントからのノード、コンテンツ、値の削除 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: d818a29a-6ee5-4725-97c4-78cf60a156b6 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XML ドキュメントからのノード、コンテンツ、値の削除 +XML ドキュメント オブジェクト モデル \(DOM\) がメモリに読み込まれたら、ツリーからノードを削除したり、特定のノード型からコンテンツや値を削除したりできます。 ドキュメントから葉ノードまたはノード サブツリー全体を削除する方法については、「[DOM からのノードの削除](../../../../docs/standard/data/xml/removing-nodes-from-the-dom.md)」を参照してください。 要素の属性を削除する方法については、「[DOM の要素ノードからの属性の削除](../../../../docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md)」を参照してください。 ノードのコンテンツだけを削除してツリーにノードを残す方法については、「[DOM のノード コンテンツの削除](../../../../docs/standard/data/xml/removing-node-content-in-the-dom.md)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) + [XML ドキュメントへのノードの挿入](../../../../docs/standard/data/xml/inserting-nodes-into-an-xml-document.md) + [XML ドキュメントのノード、コンテンツ、値の変更](../../../../docs/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.md) \ No newline at end of file diff --git a/docs/standard/data/xml/removing-nodes-from-the-dom.md b/docs/standard/data/xml/removing-nodes-from-the-dom.md new file mode 100644 index 00000000000..3a0225d733a --- /dev/null +++ b/docs/standard/data/xml/removing-nodes-from-the-dom.md @@ -0,0 +1,34 @@ +--- +title: "DOM からのノードの削除 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 0a98e0ca-0555-45c1-ab69-0d8d20ca1abd +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# DOM からのノードの削除 +XML ドキュメント オブジェクト モデル \(DOM\) からノードを削除するには、 メソッドを使用して特定のノードを削除します。 ノードを削除すると、削除しようとしたノードがリーフ ノードでない場合は、そのノードに含まれるサブツリーも削除されます。 + + DOM から複数のノードを削除するには、 メソッドを使用します。現在のノードに子や属性があれば、それらがすべて削除されます。 + + を使用している場合は、 メソッドを使用してノードを削除できます。 + + 属性を削除するには、「[DOM の要素ノードからの属性の削除](../../../../docs/standard/data/xml/removing-attributes-from-an-element-node-in-the-dom.md)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/resolving-external-resources-during-xslt-processing.md b/docs/standard/data/xml/resolving-external-resources-during-xslt-processing.md new file mode 100644 index 00000000000..8d3aef43271 --- /dev/null +++ b/docs/standard/data/xml/resolving-external-resources-during-xslt-processing.md @@ -0,0 +1,56 @@ +--- +title: "XSLT 処理中の外部リソースの解決 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 3a59d31c-0ec5-4de6-a2a9-558531c8116e +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XSLT 処理中の外部リソースの解決 +XSLT 変換中には、外部リソースの解決が必要になる場合があります。 + +## XmlResolver クラスの使い方 + 外部リソースを解決するには、 クラスを使用します。 XSLT 処理中に が使用される場合を次の表に示します。 + +|XSLT タスク|XmlResolver が使用される場合| +|--------------|--------------------------| +|スタイル シートのコンパイル。|スタイル シートの URI の解決。

および

`xsl:import` 要素または `xsl:include` 要素の URI リファレンスの解決。| +|スタイル シートの実行。|コンテキスト ドキュメントの URI の解決。

および

XSLT の `document()` 関数での URI リファレンスの解決。| + + メソッドおよび メソッドには、 オブジェクトを引数の 1 つとして受け取るオーバーロードが含まれます。 を指定しない場合は、資格情報を持たない既定の が使用されます。 + + オブジェクトを使用する場合の説明を次の一覧に示します。 + +- XSLT 処理で認証が必要なネットワーク リソースにアクセスする必要がある場合、必要な資格情報に対して を使用します。 + +- XSLT 処理がアクセスできるリソースを制限する場合、適切なアクセス許可セットに対して を使用します。 制御対象外の \(信頼できない\) リソースを開く場合には、 クラスを使用します。 + +- 動作をカスタマイズする場合は、独自の クラスを実装し、これを使用してリソースを解決することができます。 + +- 外部リソースにアクセスできないようにする場合は、 の引数に `null` を指定します。 + +## 例 + ネットワーク リソースに格納されているスタイル シートをコンパイルする例を次に示します。 オブジェクトには、スタイル シートにアクセスするのに必要な資格情報を指定します。 + + [!code-csharp[XslCompiledTransform.Load#11](../../../../samples/snippets/csharp/VS_Snippets_Data/XslCompiledTransform.Load/CS/Xslt_Load_v2.cs#11)] + [!code-vb[XslCompiledTransform.Load#11](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XslCompiledTransform.Load/VB/Xslt_Load_v2.vb#11)] + +## 参照 + + + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) \ No newline at end of file diff --git a/docs/standard/data/xml/resolving-external-resources.md b/docs/standard/data/xml/resolving-external-resources.md new file mode 100644 index 00000000000..be038476c4c --- /dev/null +++ b/docs/standard/data/xml/resolving-external-resources.md @@ -0,0 +1,65 @@ +--- +title: "外部リソースの解決 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: ad3fa320-4b8f-4e5c-b549-01157591007a +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# 外部リソースの解決 +**XmlDocument** クラスでは、外部のドキュメント型定義 \(DTD\)、エンティティ、スキーマなど、XML データのインラインでないリソースを検索するときに **XmlDocument** の **XmlResolver** プロパティを使用します。 これらのリソースは、ネットワーク上やローカル ドライブ上にあり、URI \(Uniform Resource Identifier\) で識別できます。 そのため、**XmlDocument** は、ドキュメント内にある **EntityReference** ノードを解決し、外部の DTD またはスキーマに基づいてドキュメントを検証することができます。 + +## 完全に信頼されている XmlDocument + **XmlResolver** プロパティは、**XmlDocument.Load** メソッドの機能に影響を与えることがあります。 **XmlDocument** オブジェクトが完全に信頼されている場合の **XmlDocument.XmlResolver** プロパティの動作を次の表に示します。 Load への入力が **TextReader**、**String**、**Stream**、または **URI** である場合の **XmlDocument.Load** メソッドが対象です。 **XmlDocument** が **XmlReader** から読み込まれた場合の **Load** メソッドは対象外です。 + +|XmlResolver プロパティ|関数|メモ| +|-----------------------|--------|--------| +|プロパティが、以前作成され、ユーザーの設定したプロパティを持っている **XmlResolver** クラスに設定されている。|**XmlDocument** は、ファイル名を解決するために指定された **XmlResolver** を使用し、DTD、エンティティ、スキーマなどの外部リソースへの参照を解決します。

**XmlResolver** は、**XmlDocument** のノードの追加や編集に必要な外部リソースを解決するときにも使用されます。|**XmlDocument** に指定された **XmlResolver** は、外部リソースの検索と解決が必要な場合に常に使用されるリゾルバーです。| +|プロパティが **null** \(Microsoft Visual Basic .NET では **Nothing**\) に設定されている。|外部のスキーマや DTD の検索など、外部リソースを必要とする機能はサポートされていません。 外部エンティティの解決も行われず、解決が必要なエンティティ ノードの挿入などの編集機能もサポートされません。|**XmlDocument** は、ファイルを匿名で読み込みます。他のリソースを解決しようとはしません。| +|プロパティが設定されておらず、既定状態のままである。|ファイル名を解決したり、外部の DTD、エンティティ、スキーマを検索するときは、NULL 資格情報を持つ **XmlUrlResolver** のインスタンスが作成され、**XmlDocument** によって使用されます。ノードを編集するときは、**null** 資格情報が使用されます。|| + + **Load** への入力が **XmlReader** であり、**XmlDocument** が完全に信頼されている場合の **XmlDocument.Load** メソッドを次の表に示します。 + +|XmlResolver プロパティ|関数|メモ| +|-----------------------|--------|--------| +|**XmlDocument** で使用される **XmlResolver** クラスが、**XmlReader** で使用されるクラスと同じである。|**XmlDocument** は、**XmlReader** に割り当てられた **XmlResolver** を使用します。

**XmlDocument** は **XmlReader** から **XmlResolver** を取得しているため、**XmlDocument** の信頼レベルにかかわらず、**XmlDocument.Resolver** プロパティは設定できません。 **XmlDocument** の **XmlResolver** プロパティを設定することによって **XmlReaders** の **XmlResolver** の設定をオーバーライドすることはできません。|**XmlReader** は、**XmlTextReader**、**XmlValidatingReader**、または独自に作成したリーダーにすることができます。 使用するリーダーでエンティティ解決がサポートされている場合は、外部エンティティが解決されます。 渡されたリーダーでエンティティ参照がサポートされていない場合は、エンティティ参照は解決されません。| + +## 信頼性の高くない XmlDocument + オブジェクトの信頼性が高くない場合の **XmlDocument.XmlResolver** プロパティの動作を次の表に示します。 Load への入力が **TextReader**、**String**、**Stream**、または **URI** である場合の **XmlDocument.Load** メソッドが対象です。 **XmlDocument** が **XmlReader** から読み込まれた場合の **Load** メソッドは対象外です。 + +|XmlResolver プロパティ|関数|メモ| +|-----------------------|--------|--------| +|信頼性が高くないシナリオでは、**XmlResolver** プロパティは null 以外に設定できない。|ファイル名を解決したり、外部の DTD、エンティティ、スキーマを検索するときは、**null** 資格情報を持つ **XmlUrlResolver** のインスタンスが作成され、**XmlDocument** によって使用されます。ノードを編集するときは、**null** 資格情報が使用されます。|この動作は、**XmlResolver** プロパティが設定されておらず、既定状態のままである場合と同じ動作になります。

**XmlDocument** では、すべての処理で、匿名のアクセス許可を使用します。| +|プロパティが **null** \(Microsoft Visual Basic .NET では **Nothing**\) に設定されている。|外部のスキーマや DTD の検索など、外部リソースを必要とする機能はサポートされていません。 外部エンティティの解決も行われず、解決が必要なエンティティ ノードの挿入などの編集機能もサポートされません。|プロパティが **null** の場合の動作は、**XmlDocument** の信頼性の高低に関係なく、同じです。| +|プロパティが設定されておらず、既定状態のままである。|ファイル名を解決したり、外部の DTD、エンティティ、スキーマを検索するときは、**null** 資格情報を持つ **XmlUrlResolver** のインスタンスが作成され、**XmlDocument** によって使用されます。ノードを編集するときは、**null** 資格情報が使用されます。|**XmlDocument** では、すべての処理で、匿名のアクセス許可を使用します。| + + **Load** への入力が **XmlReader** であり、**XmlDocument** の信頼性が高くない場合の **XmlDocument.Load** メソッドを次の表に示します。 + +|XmlResolver プロパティ|関数|メモ| +|-----------------------|--------|--------| +|**XmlDocument** で使用される **XmlResolver** クラスが、**XmlReader** で使用されるクラスと同じである。|**XmlDocument** は、**XmlReader** に割り当てられた **XmlResolver** を使用します。

**XmlDocument** は **XmlReader** から **XmlResolver** を取得しているため、**XmlDocument** の信頼レベルにかかわらず、**XmlDocument.Resolver** プロパティは設定できません。 **XmlDocument** の **XmlResolver** プロパティを設定することによって **XmlReaders** の **XmlResolver** の設定をオーバーライドすることはできません。|**XmlTextReader**、検証用の 、または独自に作成したリーダーを **XmlReader** として使用できます。 使用するリーダーでエンティティ解決がサポートされている場合は、外部エンティティが解決されます。 渡されたリーダーでエンティティ参照がサポートされていない場合は、エンティティ参照は解決されません。| + + XmlResolver が正しい資格情報を持つように設定すれば、外部リソースにアクセスできます。 + +> [!NOTE] +> **XmlResolver** プロパティを取得する方法はありません。 これは、資格情報が設定されている **XmlResolver** をユーザーが再利用するのを防ぐためです。 また、**XmlTextReader** または検証用の を使用して、リゾルバーが設定されている **XmlDocument** を読み込んだ場合、**XmlDocument** は、セキュリティ リスクを回避するために、**Load** フェーズの後、これらのリーダーのリゾルバーをキャッシュしません。 + + 詳細については、 のリファレンス ページの「解説」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/resolving-external-xslt-style-sheets-and-documents.md b/docs/standard/data/xml/resolving-external-xslt-style-sheets-and-documents.md new file mode 100644 index 00000000000..8e4ed703279 --- /dev/null +++ b/docs/standard/data/xml/resolving-external-xslt-style-sheets-and-documents.md @@ -0,0 +1,67 @@ +--- +title: "外部の XSLT スタイル シートとドキュメントの解決 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 920cfe3b-d525-4bb2-abf6-9431651f9cf9 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# 外部の XSLT スタイル シートとドキュメントの解決 +変換中には、外部リソースの解決が必要になるときがあります。 + +> [!NOTE] +> [!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] では、 クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 + + 変換中には、外部リソースの解決が必要になるときがあります。 + +- メソッドの実行時における外部スタイル シートの検索。 + +- メソッドの実行時におけるスタイル シート内の `` 要素または `` 要素の解決。 + +- メソッドの実行時におけるすべての `document()` 関数の解決。 + +## XmlResolver クラスの使い方 + ネットワーク リソースにアクセスするのに認証が必要な場合は、 パラメーターを持っている メソッドを使用して、必要な資格情報プロパティが設定された オブジェクトを渡します。 + + 独自の を使用する場合や、異なる資格情報を指定する必要がある場合は、次の表に示すように、解決する必要のある外部リソースの処理に応じて、適切な作業を実行する必要があります。 + +|解決する必要のある処理|必要な作業タスク| +|-----------------|--------------| +| メソッドの実行時におけるスタイル シートの検索。|スタイル シートが資格情報を必要とするリソース上にある場合は、 をパラメーターとして受け取るオーバーロードされた メソッドを指定します。| +| メソッドの実行時における `` または `` の解決。| をパラメーターとして受け取るオーバーロードされた メソッドを指定します。 を使用して、`import` ステートメントまたは `include` ステートメントが参照しているスタイル シートを読み込みます。 `null` を渡すと、外部リソースは解決されません。| +|変換中のすべての `document()` 関数の解決。| 引数を受け取る メソッドを使用して、変換中に を指定します。| + + `document()` 関数は、入力ストリームで提供される XML 初期データの他に、スタイル シートから別の XML リソースを取得します。 この関数には別の場所にある XML データを含めることができるため、`null` 値が設定された メソッドに渡すと、`document()` 関数は実行されません。 `document()` 関数を使用する場合は、適切なアクセス許可セットを取得したうえで、 をパラメーターとして受け取る メソッドを使用します。 + + メソッドと、このメソッドでの の使い方の詳細については、「」を参照してください。 + + メソッドを呼び出すと、読み込み時に指定された証拠に基づいてアクセス許可が計算され、そのアクセス許可セットが変換処理全体に割り当てられます。 `document()` 関数で、アクセス許可セットにないアクセス許可を必要とする処理を実行しようとすると、例外がスローされます。 + +## 参照 + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [XslTransform からの出力](../../../../docs/standard/data/xml/outputs-from-an-xsltransform.md) + [異なるストアでの XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-over-different-stores.md) + [スタイル シート パラメーターと拡張オブジェクト用の XsltArgumentList](../../../../docs/standard/data/xml/xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md) + [\ を使用した XSLT スタイルシートのスクリプト](../../../../docs/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script.md) + [msxsl:node\-set\(\) 関数のサポート](../../../../docs/standard/data/xml/support-for-the-msxsl-node-set-function.md) + [変換における XPathNavigator](../../../../docs/standard/data/xml/xpathnavigator-in-transformations.md) + [変換における XPathNodeIterator](../../../../docs/standard/data/xml/xpathnodeiterator-in-transformations.md) + [XslTransform への XPathDocument の入力](../../../../docs/standard/data/xml/xpathdocument-input-to-xsltransform.md) + [XslTransform への XmlDataDocument の入力](../../../../docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md) + [XslTransform への XmlDocument の入力](../../../../docs/standard/data/xml/xmldocument-input-to-xsltransform.md) \ No newline at end of file diff --git a/docs/standard/data/xml/result-tree-fragment-in-transformations.md b/docs/standard/data/xml/result-tree-fragment-in-transformations.md new file mode 100644 index 00000000000..9a8615dcf43 --- /dev/null +++ b/docs/standard/data/xml/result-tree-fragment-in-transformations.md @@ -0,0 +1,207 @@ +--- +title: "変換での結果ツリー フラグメントの処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: df363480-ba02-4233-9ddf-8434e421c4f1 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 変換での結果ツリー フラグメントの処理 +> [!NOTE] +> [!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] では、 クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + 結果ツリー フラグメントは、ノード セットの特殊な型にすぎません。 ノード フラグメントでは、ノード セットで実行できる任意の関数を実行できます。 `node-set()` 関数を使用して結果ツリー フラグメントをノード セットに変換し、ノード セットを使用できる任意の場所でそれを使用することもできます。 + + 結果ツリー フラグメントは、スタイル シートで `` 要素または `` 要素を特定の方法で使用した結果として作成されます。 `variable` 要素と `parameter` 要素の構文は次のとおりです。 + +``` + + template body + + + + template body + +``` + + `parameter` 要素では、いくつかの方法で修飾名 \(`Qname`\) に値を割り当てます。 パラメーターに既定値を割り当てるには、`select` 属性の XPath \(XML Path Language\) 式から内容を返すか、テンプレート本体の内容をパラメーターに割り当てます。 + + `variable` 要素でも、いくつかの方法で値が割り当てられます。 `select` 属性の XPath 式から内容を返すか、テンプレート本体の内容を割り当てることができます。 + + `parameter` 要素でも `variable` 要素でも、XPath 式で値を割り当てた場合は、4 つの基本 XPath 型であるブール値、文字列、数値、ノード セットのうちのいずれかが返されます。 テンプレート本体で値を指定した場合は、XPath 型でないデータ型である結果ツリー フラグメントが返されます。 + + 変数が、4 つの基本 XPath データ型のうちの 1 つではなく、結果ツリー フラグメントに関連付けられたときにだけ、XPath クエリからは 4 つの基本 XPath オブジェクト型以外の型が返されます。 結果ツリー フラグメントとその動作については、W3C \(World Wide Web Consortium\) 仕様 \(http:\/\/www.w3.org\/XSLT\) のセクション 11.1「Result Tree Fragments」からセクション 11.6「Passing Parameters to Templates」に記述されています。 セクション 1「Introduction」でも、結果ツリー フラグメントを返したり結果ツリー フラグメントを作成したりする XSLT 名前空間の要素をテンプレートに含める方法について説明しています。 + + 結果ツリー フラグメントは、概念的には、1 つのルート ノードだけを持つノード セットと同じ動作をします。 ただし、返されるその他のノードは子ノードになります。 プログラムで子ノードを参照するには、`` 要素を使用して結果ツリー フラグメントを結果ツリーにコピーします。 copy\-of を実行すると、すべての子ノードも結果ツリーに順番にコピーされます。 `copy` または `copy-of` を使用するまで、結果ツリー フラグメントは、結果ツリーの一部や変換の出力の一部にはなりません。 + + 結果ツリー フラグメントの返されたノードを反復処理するには、 を使用します。 XML を含む `fragment` パラメーターを指定して関数を呼び出すことにより、スタイル シート内で結果ツリー フラグメントを作成するコード サンプルを次に示します。 + +``` + + + + + + + + + function NodeFragment(XPathNavigator nav) + { + if (nav.HasSelection == false) + XPathNavigator.MoveToNext(); + return; + } + + + + + + +``` + + 結果ツリー フラグメントの一種である RTF \(Rich Text Format\) 形式の変数がノード セットに変換されない例を次に示します。 この場合、変数はスクリプト関数に渡され、ノード間の移動には が使用されます。 + +``` + + + + + + Book1 + Book2 + Book3 + Book4 + + + + + + + + + + + + + + + +``` + + このスタイル シートを使用して XML を変換した結果を次に示します。 + +## 出力 + +``` +Book1 +``` + + 上で説明したように、`node-set` 関数を使用すると、結果ツリー フラグメントをノード セットに変換できます。 結果として得られるノードには、ツリーのルート ノードである単一のノードが常に含まれます。 結果ツリー フラグメントから変換したノード セットは、for\-each ステートメントや `select` 属性の値など、標準ノード セットを使用できる任意の場所で使用できます。 フラグメントをノード セットに変換し、ノード セットとして使用するコードを次に示します。 + + `` + + `` + + フラグメントをノード セットに変換した後は、ノード間の移動に を使用しません。 ノード セットでは、 を使用します。 + + `$var` という変数がスタイル シート内のノード ツリーである例を次に示します。 for\-each ステートメントを `node-set` 関数と組み合わせて使用すると、このツリーをノード セットとして反復処理できます。 + +``` + + + AL + CA + CO + WA + + + + + + +``` + + 次の例も、結果ツリー フラグメントの一種である RTF 形式の変数ですが、この場合は、変数をノード セットに変換した後、XPathNodeIterator としてスクリプト関数に渡しています。 + +``` + + + + + + Book1 + Book2 + Book3 + Book4 + + + + + + + + + + + + + + +``` + + このスタイル シートを使用して XML を変換した結果を次に示します。 + +``` +Book1Book2Book3Book4 +``` + +## 参照 + + + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) \ No newline at end of file diff --git a/docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md b/docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md new file mode 100644 index 00000000000..4b697063bc7 --- /dev/null +++ b/docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md @@ -0,0 +1,163 @@ +--- +title: "スキーマのノード型および構造を推論するときの規則 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: d74ce896-717d-4871-8fd9-b070e2f53cb0 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# スキーマのノード型および構造を推論するときの規則 +このトピックでは、スキーマ推論プロセスで、XML ドキュメント内のノード型を XML スキーマ定義言語 \(XSD\) 構造に変換する方法を説明します。 + +## 要素を推論するときの規則 + このセクションでは、要素宣言を推論するときの規則を説明します。 推論される要素宣言には 8 つの構造があります。 + +1. 単純型の要素 + +2. 空要素 + +3. 属性を持つ空要素 + +4. 属性と単純内容を持つ要素 + +5. 子要素のシーケンスを持つ要素 + +6. 子要素のシーケンスと属性を持つ要素 + +7. 子要素のシーケンスと choice を持つ要素 + +8. 子要素のシーケンスと choice を持つ要素 + +> [!NOTE] +> すべての `complexType` 宣言は匿名型として推論されます。 推論されるグローバル要素はルート要素だけであり、その他すべての要素はローカル要素です。 + + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 + +### 単純型要素 + メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、単純型要素から推論されるスキーマです。 + + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 + +|XML|Schema| +|---------|------------| +|``

`text`|``

`
`ns:xs="http://www.w3.org/2001/XMLSchema">`

`` `\`

`\
`| + +### 空の要素 + メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、空要素から推論されるスキーマです。 + + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 + +|XML|Schema| +|---------|------------| +|``

``|``

`
`ns:xs="http://www.w3.org/2001/XMLSchema">`

`` `\`

`\
`| + +### 属性を持つ空要素 + メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、属性を持つ空要素から推論されるスキーマです。 + + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 + +|XML|Schema| +|---------|------------| +|``

``|``

`
`ns:xs="http://www.w3.org/2001/XMLSchema">`

`` `\`

`\`

`\`

`\
`

`\
`

`\
`| + +### 属性と単純内容を持つ要素 + メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、属性と単純内容を持つ要素から推論されるスキーマです。 + + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 + +|XML|Schema| +|---------|------------| +|``

`value`|``

`
`ns:xs="http://www.w3.org/2001/XMLSchema">`

`` `\`

`\`

`\`

`\`

`\`

`\
`

`\
`

`\
`

`\
`

`\
`| + +### 子要素のシーケンスを持つ要素 + メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、子要素のシーケンスを持つ要素から推論されるスキーマです。 + +> [!NOTE] +> 要素が子要素を 1 つしか持っていない場合でも、子要素はシーケンスとして扱われます。 + + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 + +|XML|Schema| +|---------|------------| +|``

``

``

`
`|``

`
`ns:xs="http://www.w3.org/2001/XMLSchema">`

`` `\`

`\`

`\`

`\`

`\
`

`\
`

`\
`

`\
`| + +### 子要素のシーケンスと属性を持つ要素 + メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、子要素のシーケンスと属性を持つ要素から推論されるスキーマです。 + +> [!NOTE] +> 要素が子要素を 1 つしか持っていない場合でも、子要素はシーケンスとして扱われます。 + + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 + +|XML|Schema| +|---------|------------| +|``

``

``

``

`
`|``

`
`ns:xs="http://www.w3.org/2001/XMLSchema">`

`` `\`

`\`

`\`

`\`

`\`

`\
`

`\`

`\
`

`\
`

`\
`| + +### 子要素のシーケンスと choice を持つ要素 + メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっているスキーマは、子要素のシーケンスと choice を持つ要素から推論されるスキーマです。 + +> [!NOTE] +> `xs:choice` 要素の `maxOccurs` 属性は、推論されるスキーマでは `"unbounded"` に設定されます。 + + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 + +|XML|Schema| +|---------|------------| +|``

``

``

``

``

`
`|``

`
`ns:xs="http://www.w3.org/2001/XMLSchema">`

`` `\`

`\`

`\`

`\`

`\`

`\`

`\
`

`\
`

`\
`

`\
`

`\
`| + +### 子要素のシーケンスと choice および属性を持つ要素 + メソッドへの XML 入力と、生成される XML スキーマを次の表に示します。 太字になっている要素は、子要素のシーケンスと choice および属性を持つ要素から推論されるスキーマです。 + +> [!NOTE] +> `xs:choice` 要素の `maxOccurs` 属性は、推論されるスキーマでは `"unbounded"` に設定されます。 + + スキーマ推論プロセスの詳細については、「[XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md)」を参照してください。 + +|XML|Schema| +|---------|------------| +|``

``

``

``

``

`
`|``

`
`ns:xs="http://www.w3.org/2001/XMLSchema">`

`` `\`

`\`

`\`

`\`

`\`

`\`

`\
`

`\
`

`\`

`\
`

`\
`

`\
`| + +### 属性の処理 + ノード内で新しい属性が検出されるたびに、その属性は推論されるノードの定義に `use="required"` として追加されます。 そのインスタンスで同じノードが再び検出されると、推論プロセスでは、現在のインスタンスの属性と、既に推論されている属性を比較します。 既に推論されている属性の一部がインスタンスにない場合は、属性の定義に `use="optional"` が追加されます。 新しい属性は、既存の宣言に `use="optional"` として追加されます。 + +### 出現回数に関する制約 + スキーマ推論プロセスでは、推論されるスキーマのコンポーネントに対して、値が `"0"` または `"1"` の `minOccurs` 属性と、値が `"1"` または `"unbounded"` の `maxOccurs` 属性が生成されます。 値 `"1"` および `"unbounded"` は、値 `"0"` および `"1"` では XML ドキュメントを検証できない場合にのみ使われます \(たとえば、`MinOccurs="0"` では要素を正確に記述できない場合は、`minOccurs="1"` が使われます\)。 + +### 混合コンテンツ + テキストに要素が混じっているなど、要素に混合コンテンツが含まれている場合は、推論される複合型の定義に対して `mixed="true"` 属性が生成されます。 + +## その他のノードの型推論規則 + 処理命令、コメント、エンティティ参照、CDATA、ドキュメント型、名前空間の各ノード型に関する推論の規則を次の表に示します。 + +|ノード型|変換| +|----------|--------| +|処理命令|無視されます。| +|コメント|無視されます。| +|エンティティ参照| クラスではエンティティ参照を処理しません。 XML ドキュメントにエンティティ参照が含まれている場合は、エンティティを展開するリーダーを使用する必要があります。 たとえば、 プロパティを に設定した をパラメーターとして渡すことができます。 エンティティ参照が検出されたにもかかわらず、リーダーがエンティティを展開しない場合は、例外がスローされます。| +|CDATA|XML ドキュメント内のすべての ` + [XML スキーマ オブジェクト モデル \(SOM\)](../../../../docs/standard/data/xml/xml-schema-object-model-som.md) + [XML スキーマの推論](../../../../docs/standard/data/xml/inferring-an-xml-schema.md) + [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md) + [単純型を推論するときの規則](../../../../docs/standard/data/xml/rules-for-inferring-simple-types.md) \ No newline at end of file diff --git a/docs/standard/data/xml/rules-for-inferring-simple-types.md b/docs/standard/data/xml/rules-for-inferring-simple-types.md new file mode 100644 index 00000000000..0f8df93d8d8 --- /dev/null +++ b/docs/standard/data/xml/rules-for-inferring-simple-types.md @@ -0,0 +1,90 @@ +--- +title: "単純型を推論するときの規則 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 394624d6-4da0-430a-8a88-46efe40f14de +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 単純型を推論するときの規則 +Describes how the class infers the data type for attributes and elements. + + クラスは、属性と要素のデータ型を単純型として推論します。 このセクションでは、推論される可能性がある型、複数の異なる値を 1 つの型に調整する方法、スキーマ定義 `xsi` 属性の取り扱いについて説明します。 + +## 推論型 + クラスは、要素値と属性値を単純型として推論し、生成されるスキーマに型属性をインクルードします。 推論型はすべて単純型です。 生成されるスキーマの一部として基本型またはファセットがインクルードされることはありません。 + + XML ドキュメントで値が検出されるたびに、その値が個別に調べられます。 値が調べられるときに、その値の型が推論されます。 属性または要素の型が既に推論されており、その属性または要素に対して新たに検出された値が現在推論されている型と一致しない場合、 クラスは、一定の規則に基づいてその型を昇格させます。 型を昇格させるときの規則については、このトピックの「型の昇格」のセクションで説明します。 + + 生成されるスキーマに含まれる可能性がある推論型を次の表に示します。 + +|単純型|説明| +|---------|--------| +|boolean|true、false、0、1| +|byte|\-128 ~ 127 の整数| +|unsignedByte|0 ~ 255 の整数| +|short|\-32768 ~ 32767 の整数| +|unsignedShort|0 ~ 65535 の整数| +|int|\-2147483648 ~ 2147483647 の整数| +|unsignedInt|0 ~ 4294967295 の整数| +|long|\-9223372036854775808 ~ 9223372036854775807 の整数| +|unsignedLong|0 ~ 18446744073709551615 の整数| +|整数|先頭に "\-" 記号が付く可能性がある有限桁の数値。| +|decimal|精度が 0 ~ 28 桁の数値。| +|float|小数点数。指数を表す整数値を伴った、省略可能な "E" または "e" を付ける表記法もあります。 仮数部の範囲は \-16777216 ~ 16777216 です。 指数部の範囲は \-149 ~ 104 です。

float では、無限大および非数を表す特殊値が使用可能です。 float の特殊値は、0、\-0、INF、\-INF、NaN です。| +|double|仮数部の範囲が \-9007199254740992 ~ 9007199254740992 で、指数部の範囲が \-1075 ~ 970 である点を除いて、float と同じです。

double では、無限大および非数を表す特殊値が使えます。 float の特殊値は、0、\-0、INF、\-INF、NaN です。| +|duration|W3C の持続時間形式| +|dateTime|W3C の日付時刻形式| +|時間|W3C の時刻形式| +|date|年に使用できる値は 0001 ~ 9999 に制限されています。| +|gYearMonth|W3C のグレゴリオ暦の年月形式| +|string|1 つ以上の Unicode 文字| + +## 型の上位変換 + クラスは属性値と要素値を 1 つずつ調べます。 値が検出されると、最も制限の厳しい、符号なし型が推論されます。 属性または要素の型が推論されている状態で、現在推論されている型と一致しない新しい値が検出されると、推論型が現在の推論型と新しい値の両方に当てはまる新しい型に昇格します。 クラスは、推論型を昇格させるときに前の値を考慮します。 + + たとえば、2 つの XML ドキュメントから取得された次の XML フラグメントを見てみましょう。 + + `` + + `` + + 最初に `attr1` の値が検出されると、`attr1` の型は、値 `unsignedByte` に基づいて `12` と推論されます。 `attr1` の 2 番目の値が検出されると、現在推論されている型 `unsignedShort` と現在の値 `unsignedByte` に基づいて、型が `52344` に昇格します。 + + 次に、2 つの XML ドキュメントから取得された次の XML を見てみましょう。 + + `` + + `` + + 最初に `attr2` の値が検出されると、`attr2` の型は、値 `unsignedByte` に基づいて `0` と推論されます。 `attr2` の 2 番目の値が検出されると、現在推論されている型 `string` と現在の値 `unsignedByte` に基づいて、型が `true` に昇格します。これは、 クラスが推論型を昇格させるときに前の値を考慮するためです。 ただし、`attr2` の 2 つのインスタンスが、上記の説明のように 2 つの別々の XML ドキュメントで検出されたのではなく、同じ XML ドキュメントで検出された場合、`attr2` は `boolean` と推論されます。 + +### 無視される http:\/\/www.w3.org\/2001\/XMLSchema\-instance 名前空間の属性 + スキーマの推論で無視されるスキーマ定義属性を次に示します。 + +|属性|説明| +|--------|--------| +|`xsi:type`|`xsi:type` が指定されている要素が検出された場合、`xsi:type` は無視されます。| +|`xsi:nil`|`xsi:nil` 属性を持った要素が検出されると、推論されるスキーマ内の要素宣言の値が `nillable="true"` に設定されます。 `xsi:nil` 属性が `true` に設定された要素は子要素を持つことができません。| +|`xsi:schemaLocation`|`xsi:schemaLocation` は検出されても無視されます。| +|`xsi:noNamespaceSchemaLocation`|`xsi:noNamespaceSchemaLocation` は検出されても無視されます。| + +## 参照 + [XML スキーマ オブジェクト モデル \(SOM\)](../../../../docs/standard/data/xml/xml-schema-object-model-som.md) + [XML ドキュメントからのスキーマの推論](../../../../docs/standard/data/xml/inferring-schemas-from-xml-documents.md) + [スキーマのノード型および構造を推論するときの規則](../../../../docs/standard/data/xml/rules-for-inferring-schema-node-types-and-structure.md) \ No newline at end of file diff --git a/docs/standard/data/xml/saving-and-writing-a-document.md b/docs/standard/data/xml/saving-and-writing-a-document.md new file mode 100644 index 00000000000..f8590711989 --- /dev/null +++ b/docs/standard/data/xml/saving-and-writing-a-document.md @@ -0,0 +1,100 @@ +--- +title: "ドキュメントの保存と書き込み | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 097b0cb1-5743-4c3a-86ef-caf5cbe6750d +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# ドキュメントの保存と書き込み + を読み込んで保存した場合、保存されたドキュメントは、元のドキュメントとは次のように異なる可能性があります。 + +- メソッドを呼び出す前に プロパティが `true` に設定されている場合は、ドキュメント内の空白が出力でも保持されますが、`false` に設定されている場合は、 が出力を自動的にインデントします。 + +- 属性間のすべての空白は 1 つの空白文字になります。 + +- 要素間の空白が変更されます。 有意の空白は保持され、意味のない空白は保持されません。 しかし、ドキュメントの保存時には、出力が読みやすくなるように、既定で のインデント モードが使用されます。 + +- 属性値を囲む引用符は、既定で二重引用符に変更されます。 プロパティを使用すると、引用符を二重引用符または一重引用符のいずれかに設定できます。 + +- 既定では、`{` のような数値エンティティは展開されます。 + +- 入力ドキュメントのバイト順マークは保持されません。 別のエンコーディングを指定する XML 宣言を明示的に作成しない限り、UCS\-2 は UTF\-8 として保存されます。 + +- をファイルまたはストリームに書き出す場合、書き出される出力はドキュメントのコンテンツと同じになります。 つまり、 が書き出されるのは、ドキュメントに が 1 つ含まれていて、ドキュメントの出力時に使われるエンコーディングが宣言ノードで指定されたエンコーディングと同じ場合だけです。 + +## XmlDeclaration の書き込み + および メソッドに加えて、、および および メンバーは XML 宣言を作成します。 + + プロパティ、 メソッド、および メソッドについて、XML 宣言に書き出されるエンコーディングは ノードから取り出されます。 ノードが存在しない場合、 は書き出されません。 ノードにエンコーディングが含まれていない場合、エンコーディングは XML 宣言に書き出されません。 + + および メソッドは、常に を書き出します。 これらのメソッドは、書き込みを行っているライターからエンコーディングを取得します。 つまり、ライターのエンコーディングの値によって、ドキュメントと オブジェクトのエンコーディングがオーバーライドされます。 たとえば、次のコードでは、出力ファイル `out.xml` の XML 宣言にはエンコーディングは書き込まれません。 + +```vb +Dim doc As New XmlDocument() +Dim tw As XmlTextWriter = New XmlTextWriter("out.xml", Nothing) +doc.Load("text.xml") +doc.Save(tw) +``` + +```csharp +XmlDocument doc = new XmlDocument(); +XmlTextWriter tw = new XmlTextWriter("out.xml", null); +doc.Load("text.xml"); +doc.Save(tw); +``` + + メソッドでは、 クラスの メソッドを使用して XML 宣言が書き出されます。 そのため、 メソッドをオーバーライドすると、ドキュメントの先頭部分の出力方法が変わります。 + + 、および メンバーについて、 プロパティが設定されていないと、エンコーディングは書き出されません。 それ以外の場合は、 プロパティのエンコーディングと同じエンコーディングが XML 宣言に書き出されます。 + +## OuterXml プロパティを使用したドキュメント内容の書き込み + プロパティは、W3C XML ドキュメント オブジェクト モデル \(DOM\) 標準に対するマイクロソフトの拡張機能です。 プロパティは、XML ドキュメント全体のマークアップ、または 1 つのノードとその子ノードのマークアップだけを取得するために使用されます。 は、指定されたノードとそのすべての子ノードを表すマークアップを返します。 + + ドキュメント全体を文字列として保存するコード サンプルを次に示します。 + +```vb +Dim mydoc As New XmlDocument() +' Perform application needs here, like mydoc.Load("myfile"); +' Now save the entire document to a string variable called "xml". +Dim xml As String = mydoc.OuterXml +``` + +```csharp +XmlDocument mydoc = new XmlDocument(); +// Perform application needs here, like mydoc.Load("myfile"); +// Now save the entire document to a string variable called "xml". +string xml = mydoc.OuterXml; +``` + + ドキュメント要素だけを保存するコード サンプルを次に示します。 + +```vb +' For the content of the Document Element only. +Dim xml As String = mydoc.DocumentElement.OuterXml +``` + +```csharp +// For the content of the Document Element only. +string xml = mydoc.DocumentElement.OuterXml; +``` + + 一方、子ノードの内容が必要な場合は、 プロパティを使用します。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/schema-validation-using-xpathnavigator.md b/docs/standard/data/xml/schema-validation-using-xpathnavigator.md new file mode 100644 index 00000000000..e7c313ea5c3 --- /dev/null +++ b/docs/standard/data/xml/schema-validation-using-xpathnavigator.md @@ -0,0 +1,376 @@ +--- +title: "XPathNavigator を使用したスキーマ検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 81fa0e41-d9c9-46f0-b22b-50da839c77f5 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XPathNavigator を使用したスキーマ検証 + クラスを使用して、 オブジェクトに含まれる XML コンテンツを 2 つの方法で検証することができます。 最初の方法は、検証型 オブジェクトを使用して XML コンテンツを検証する方法で、2 番目の方法は、 クラスの メソッドを使用する方法です。 クラスを使用して XML コンテンツの読み取り専用の検証を行うこともできます。 + +## XML データの検証 + クラスは、既定では DTD または XML スキーマ定義言語 \(XSD\) のスキーマ検証を使用した XML ドキュメントの検証は行いません。 XML ドキュメントが整形式であることを確認するだけです。 + + XML ドキュメントを検証する最初の方法は、検証型の オブジェクトを使用して、ドキュメントが オブジェクトに読み込まれる際に検証する方法です。 2 番目の方法は、 クラスの メソッドを使用して、以前に型指定されていない XML ドキュメントを検証する方法です。 いずれの場合も、検証済みの XML ドキュメントに対して行った変更は、 クラスの メソッドを使用して再度検証することができます。 + +### 読み込み時のドキュメントの検証 + 検証型 オブジェクトは、 オブジェクトをパラメーターとして受け取る クラスの メソッドに オブジェクトを渡すことで作成できます。 パラメーターとして渡された オブジェクトには、[Schema](assetId:///Schema?qualifyHint=False&autoUpgrade=True) が設定された `P:System.Xml.XmlReaderSettings.ValidationType` プロパティがあり、 オブジェクトに含まれる XML ドキュメントの XML スキーマが プロパティに追加されています。 検証型 オブジェクトは、次に オブジェクトを作成するために使用されます。 + + 次の例では、検証型 オブジェクトを使用して、 オブジェクトを作成することにより、`contosoBooks.xml` ファイルを オブジェクトに読み込む際に検証を行います。 この XML ドキュメントはそのスキーマに照らして有効なので、スキーマの検証エラーや警告は何も生成されません。 + +```vb +Imports System +Imports System.Xml +Imports System.Xml.Schema +Imports System.Xml.XPath + +Class ValidatingReaderExample + + Shared Sub Main(ByVal args() As String) + + Try + Dim settings As XmlReaderSettings = New XmlReaderSettings() + settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd") + settings.ValidationType = ValidationType.Schema + + Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings) + + Dim document As XmlDocument = New XmlDocument() + document.Load(reader) + Dim navigator As XPathNavigator = document.CreateNavigator() + + Catch e As Exception + Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message) + End Try + + End Sub + + Shared Sub SchemaValidationHandler(ByVal sender As Object, ByVal e As ValidationEventArgs) + + Select Case e.Severity + Case XmlSeverityType.Error + Console.WriteLine("Schema Validation Error: {0}", e.Message) + Exit Sub + Case XmlSeverityType.Warning + Console.WriteLine("Schema Validation Warning: {0}", e.Message) + Exit Sub + End Select + + End Sub + +End Class +``` + +```csharp +using System; +using System.Xml; +using System.Xml.Schema; +using System.Xml.XPath; + +class ValidatingReaderExample +{ + static void Main(string[] args) + { + try + { + XmlReaderSettings settings = new XmlReaderSettings(); + settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd"); + settings.ValidationType = ValidationType.Schema; + + XmlReader reader = XmlReader.Create("contosoBooks.xml", settings); + + XmlDocument document = new XmlDocument(); + document.Load(reader); + XPathNavigator navigator = document.CreateNavigator(); + } + catch (Exception e) + { + Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message); + } + } + + static void SchemaValidationHandler(object sender, ValidationEventArgs e) + { + switch (e.Severity) + { + case XmlSeverityType.Error: + Console.WriteLine("Schema Validation Error: {0}", e.Message); + break; + case XmlSeverityType.Warning: + Console.WriteLine("Schema Validation Warning: {0}", e.Message); + break; + } + } +} +``` + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + + また、`contosoBooks.xsd` ファイルも入力として使用します。 + + [!code-xml[XPathXMLExamples#3](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xsd#3)] + + 上記の例では、 を呼び出したときに属性や要素の型が検証スキーマで指定されている型と一致しなかった場合、 がスローされます。 検証を行う が設定されている場合、無効な型が検出されるたびに が呼び出されます。 + + が `invalid` に設定されている属性または要素が によりアクセスされると、 がスローされます。 + + を使用して属性または要素にアクセスするとき、 プロパティを使用して、個々の属性または要素が有効かどうかを判断できます。 + +> [!NOTE] +> XML ドキュメントが既定値を定義した関連付けられたスキーマと共に オブジェクトに読み込まれる場合、 オブジェクトは、これらの既定値があたかも XML ドキュメント内にあるかのように扱います。 これは、XML ドキュメントで空要素として書かれていても、スキーマから既定値を得た要素に対して プロパティは常に `false` を返すことを意味します。 + +### Validate メソッドを使用したドキュメントの検証 + クラスの メソッドは、 オブジェクトの プロパティで指定されたスキーマに対して、 オブジェクトに含まれる XML ドキュメントを検証し、情報セットの拡大を実施します。 結果として、 オブジェクト中の以前は型指定されていない XML ドキュメントは型指定されたドキュメントに置き換わります。 + + オブジェクトは、 メソッドへのパラメーターとして渡された デリゲートを使用してスキーマ検証のエラーと警告を報告します。 + + 次の例では、 オブジェクトの プロパティに含まれる `contosoBooks.xsd` スキーマに対して、 オブジェクトに含まれる `contosoBooks.xml` ファイルを検証します。 + +```vb +Imports System +Imports System.Xml +Imports System.Xml.Schema +Imports System.Xml.XPath + +Class ValidateExample + + Shared Sub Main(ByVal args() As String) + + Dim document As XmlDocument = New XmlDocument() + document.Load("contosoBooks.xml") + Dim navigator As XPathNavigator = document.CreateNavigator() + + document.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd") + Dim validation As ValidationEventHandler = New ValidationEventHandler(AddressOf SchemaValidationHandler) + + document.Validate(validation) + + End Sub + + Shared Sub SchemaValidationHandler(ByVal sender As Object, ByVal e As ValidationEventArgs) + + Select Case e.Severity + Case XmlSeverityType.Error + Console.WriteLine("Schema Validation Error: {0}", e.Message) + Exit Sub + Case XmlSeverityType.Warning + Console.WriteLine("Schema Validation Warning: {0}", e.Message) + Exit Sub + End Select + + End Sub + +End Class +``` + +```csharp +using System; +using System.Xml; +using System.Xml.Schema; +using System.Xml.XPath; + +class ValidateExample +{ + static void Main(string[] args) + { + XmlDocument document = new XmlDocument(); + document.Load("contosoBooks.xml"); + XPathNavigator navigator = document.CreateNavigator(); + + document.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd"); + ValidationEventHandler validation = new ValidationEventHandler(SchemaValidationHandler); + + document.Validate(validation); + } + + static void SchemaValidationHandler(object sender, ValidationEventArgs e) + { + switch (e.Severity) + { + case XmlSeverityType.Error: + Console.WriteLine("Schema Validation Error: {0}", e.Message); + break; + case XmlSeverityType.Warning: + Console.WriteLine("Schema Validation Warning: {0}", e.Message); + break; + } + } +} +``` + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + + また、`contosoBooks.xsd` ファイルも入力として使用します。 + + [!code-xml[XPathXMLExamples#3](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xsd#3)] + +### 変更点の検証 + XML ドキュメントに変更が施された後、 クラスの メソッドを使用して、変更点を XML ドキュメントのスキーマに対して検証できます。 + + 次の例では、検証型 オブジェクトを使用して、 オブジェクトを作成することにより、`contosoBooks.xml` ファイルを オブジェクトに読み込む際に検証を行います。 XML ドキュメントは、スキーマ検証のエラーや警告を生成せずに、読み込み時に問題なく検証されます。 次に、この例で `contosoBooks.xsd` スキーマに従うと無効な 2 つの変更が XML ドキュメントに施されます。 最初の変更点は、無効な子要素を挿入してスキーマ検証エラーを引き起こします。2 番目の変更点は、型指定されたノードにノードの型に反して無効な値を設定し、例外が発生します。 + +```vb +Imports System +Imports System.Xml +Imports System.Xml.Schema +Imports System.Xml.XPath + +Class ValidatingReaderExample + + Shared Sub Main(ByVal args() As String) + + Try + Dim settings As XmlReaderSettings = New XmlReaderSettings() + settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd") + settings.ValidationType = ValidationType.Schema + + Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings) + + Dim document As XmlDocument = New XmlDocument() + document.Load(reader) + Dim navigator As XPathNavigator = document.CreateNavigator() + + Dim validation As ValidationEventHandler = New ValidationEventHandler(AddressOf SchemaValidationHandler) + + navigator.MoveToChild("bookstore", "http://www.contoso.com/books") + navigator.MoveToChild("book", "http://www.contoso.com/books") + navigator.MoveToChild("author", "http://www.contoso.com/books") + + navigator.AppendChild("Book Title") + + document.Validate(validation) + + navigator.MoveToParent() + navigator.MoveToChild("price", "http://www.contoso.com/books") + navigator.SetTypedValue(DateTime.Now) + Catch e As Exception + Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message) + End Try + + End Sub + + Shared Sub SchemaValidationHandler(ByVal sender As Object, ByVal e As ValidationEventArgs) + + Select Case e.Severity + Case XmlSeverityType.Error + Console.WriteLine("Schema Validation Error: {0}", e.Message) + Exit Sub + Case XmlSeverityType.Warning + Console.WriteLine("Schema Validation Warning: {0}", e.Message) + Exit Sub + End Select + + End Sub + +End Class +``` + +```csharp +using System; +using System.Xml; +using System.Xml.Schema; +using System.Xml.XPath; + +class ValidatingReaderExample +{ + static void Main(string[] args) + { + try + { + XmlReaderSettings settings = new XmlReaderSettings(); + settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd"); + settings.ValidationType = ValidationType.Schema; + + XmlReader reader = XmlReader.Create("contosoBooks.xml", settings); + + XmlDocument document = new XmlDocument(); + document.Load(reader); + XPathNavigator navigator = document.CreateNavigator(); + + ValidationEventHandler validation = new ValidationEventHandler(SchemaValidationHandler); + + navigator.MoveToChild("bookstore", "http://www.contoso.com/books"); + navigator.MoveToChild("book", "http://www.contoso.com/books"); + navigator.MoveToChild("author", "http://www.contoso.com/books"); + + navigator.AppendChild("Book Title"); + + document.Validate(validation); + + navigator.MoveToParent(); + navigator.MoveToChild("price", "http://www.contoso.com/books"); + navigator.SetTypedValue(DateTime.Now); + } + catch (Exception e) + { + Console.WriteLine("ValidatingReaderExample.Exception: {0}", e.Message); + } + } + + static void SchemaValidationHandler(object sender, ValidationEventArgs e) + { + switch (e.Severity) + { + case XmlSeverityType.Error: + Console.WriteLine("Schema Validation Error: {0}", e.Message); + break; + case XmlSeverityType.Warning: + Console.WriteLine("Schema Validation Warning: {0}", e.Message); + break; + } + } +} +``` + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + + また、`contosoBooks.xsd` ファイルも入力として使用します。 + + [!code-xml[XPathXMLExamples#3](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xsd#3)] + + 上の例では、 オブジェクトに含まれる XML ドキュメントに 2 つの変更が施されます。 XML ドキュメントが読み込まれるに従い、発見されたスキーマ検証エラーは検証イベント ハンドラー メソッドで処理され、コンソールに書き出されました。 + + この例では、XML ドキュメントが読み込まれた後に検証エラーが挿入され、 クラスの メソッドを使用して発見されました。 + + クラスの メソッドを使用して行われた変更は、新しい値がノードのスキーマ型に照らして無効だったので、 が発生しました。 + + メソッドを使用した値の変更の詳細については、「[XpathNavigator による XML データの変更](../../../../docs/standard/data/xml/modify-xml-data-using-xpathnavigator.md)」のトピックを参照してください。 + +### 読み取り専用の検証 + クラスは、XML ドキュメントの読み取り専用のメモリ内表現です。 クラスと クラスは両方とも、XML ドキュメントを編集しナビゲートするために オブジェクトを作成します。 クラスは読み取り専用のクラスなので、 オブジェクトから返された オブジェクトは オブジェクトに含まれる XML ドキュメントを編集できません。 + + このトピックで前述したように、検証の場合は、検証型 オブジェクトを使用して オブジェクトを作成したのと同様にして、 オブジェクトを作成できます。 オブジェクトは読み込みの際に XML ドキュメントを検証しますが、 オブジェクト内の XML データは編集できないので、XML ドキュメントの再検証はできません。 + + 読み取り専用と編集可能な オブジェクトの詳細については、「[XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md)」のトピックを参照してください。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md) + [XPathNavigator を使用した XML データの選択、評価、および照合](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データへのアクセス](../../../../docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データの編集](../../../../docs/standard/data/xml/editing-xml-data-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/script-blocks-using-msxsl-script.md b/docs/standard/data/xml/script-blocks-using-msxsl-script.md new file mode 100644 index 00000000000..0d866dd48b2 --- /dev/null +++ b/docs/standard/data/xml/script-blocks-using-msxsl-script.md @@ -0,0 +1,159 @@ +--- +title: "msxsl:script を使用したスクリプト ブロック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: fde6f43f-c594-486f-abcb-2211197fae20 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# msxsl:script を使用したスクリプト ブロック + クラスは、`msxsl:script` 要素を使用した埋め込みスクリプトをサポートしています。 スタイル シートが読み込まれると、定義されているすべての関数はコード ドキュメント オブジェクト モデル \(CodeDOM\) によって Microsoft intermediate language \(MSIL\) にコンパイルされ、実行時に実行されます。 埋め込みのスクリプト ブロックから生成されたアセンブリは、スタイル シートに対して生成されるアセンブリとは区別されます。 + +## XSLT スクリプトの有効化 + 埋め込みスクリプトのサポートは、 クラスではオプションの XSLT 設定です。 スクリプトのサポートは既定で無効になっています。 スクリプトのサポートを有効にするには、 プロパティを `true` に設定して オブジェクトを作成し、そのオブジェクトを メソッドに渡します。 + +> [!NOTE] +> XSLT スクリプトは、スクリプトのサポートが必要であり、完全に信頼された環境で作業している場合のみ有効にします。 + +## msxsl:script 要素の定義 + `msxsl:script` 要素は XSLT 1.0 勧告に対するマイクロソフトの拡張機能であり、次のように定義されます。 + +``` + +``` + + `msxsl` プレフィックスは `urn:schemas-microsoft-com:xslt` 名前空間 URI に関連付けられています。 スタイル シートには `xmlns:msxsl=urn:schemas-microsoft-com:xslt` という名前空間の宣言が必要です。 + + `language` 属性は省略できます。 その値は、埋め込みコード ブロックのコード言語です。 言語は メソッドを使用して、適切な CodeDOM コンパイラに対応付けられます。 クラスは、適切なプロバイダーがコンピューターにインストールされ、machine.config ファイルの system.codedom セクションに登録されている限り、任意の Microsoft .NET 言語をサポートできます。 `language` 属性を指定しない場合、既定の言語は JScript です。 言語名では大文字小文字が区別されないため、"JavaScript" と "javascript" は同じと見なされます。 + + `implements-prefix` 属性は必須です。 この属性は、名前空間を宣言し、それをスクリプト ブロックに関連付けるために使用されます。 この属性の値は、名前空間を表すプレフィックスです。 このプレフィックスは、スタイル シート内の任意の場所で定義できます。 + +> [!NOTE] +> `msxsl:script` 要素を使用するときは、どの言語でも、スクリプトを CDATA セクション内に配置することをお勧めします。 スクリプトは、その言語で使用する演算子、識別子、または区切り記号を含むことがあり、CDATA セクション内に配置しないと、誤って XML として解釈される可能性があります。 次の XML は、コードを配置できる CDATA セクションのテンプレートです。 + +``` + + + +``` + +## スクリプト関数 + 関数は、`msxsl:script` 要素内で宣言できます。 関数が宣言されると、その関数はスクリプト ブロックに含まれます。 スタイル シートには、相互に独立して機能する複数のスクリプト ブロックを含めることができます。 このため、1 つのスクリプト ブロック内で実行しているときに、別のスクリプト ブロックで定義した関数を呼び出すことはできません。ただし、そのブロックが同じ名前空間とスクリプト言語を持つように宣言されている場合は例外です。 各スクリプト ブロックは独自の言語で記述でき、ブロックはその言語に対応するパーサーの文法規則に従って解析されるため、使われている言語の正しい構文を使用することを推奨します。 たとえば、Microsoft C\# スクリプト内では C\# のコメント構文を使用します。 + + 関数に渡される引数と戻り値の型は任意です。 W3C XPath 型は共通言語ランタイム \(CLR\) 型のサブセットなので、XPath 型とは考えられない型については型変換が行われます。 W3C 型と等価な CLR 型を次の表に示します。 + +|W3C 型|CLR 型| +|-----------|-----------| +|`String`|| +|`Boolean`|| +|`Number`|| +|`Result Tree Fragment`|| +|`Node Set`|| + + CLR 数値型は に変換されます。 型は に変換されます。 型は に変換されます。 **XPathNavigator\[\]** は に変換されます。 + + その他の型はエラーになります。 + +### 名前空間とアセンブリのインポート + クラスには、既定で `msxsl:script` 要素がサポートする一連のアセンブリと名前空間が事前定義されています。 しかし、アセンブリと名前空間を `msxsl:script` ブロックにインポートすることにより、事前定義の一覧にない 1 つの名前空間に属するクラスとメンバーを使用することができます。 + +#### アセンブリ + 次の 2 つのアセンブリは既定で参照されます。 + +- System.dll + +- System.Xml.dll + +- Microsoft.VisualBasic.dll \(スクリプト言語が VB の場合\) + + `msxsl:assembly` 要素を使用して、追加のアセンブリをインポートすることができます。 これには、スタイル シートがコンパイルされたときのアセンブリも含まれます。 `msxsl:assembly` 要素は、次のように定義されます。 + +``` + + + + + +``` + + `name` 属性にはアセンブリの名前が含まれ、`href` 属性にはアセンブリへのパスが含まれます。 アセンブリの名前は "System.Data, Version\=2.0.3600.0, Culture\=neutral, PublicKeyToken\=b77a5c561934e089" などの完全な名前でも、"System.Web" などの短い名前でもかまいません。 + +#### 名前空間 + 次の名前空間は既定で含まれます。 + +- システム + +- System.Collection + +- System.Text + +- System.Text.RegularExpressions + +- System.Xml + +- System.Xml.Xsl + +- System.Xml.XPath + +- Microsoft.VisualBasic \(スクリプト言語が VB の場合\) + + `namespace` 属性を使用して、追加の名前空間のサポートを追加することができます。 属性値は名前空間の名前です。 + +``` + + + + +``` + +## 例 + 埋め込みスクリプトを使用して、半径が指定された円の円周を算出する例を次に示します。 + + [!code-csharp[XSLT_Script#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XSLT_Script/CS/xslt_script.cs#1)] + [!code-vb[XSLT_Script#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XSLT_Script/VB/xslt_script.vb#1)] + +#### number.xml + [!code-xml[XSLT_Script#2](../../../../samples/snippets/xml/VS_Snippets_Data/XSLT_Script/XML/number.xml#2)] + +#### calc.xsl + [!code-xml[XSLT_Script#3](../../../../samples/snippets/xml/VS_Snippets_Data/XSLT_Script/XML/calc.xsl#3)] + +### 出力 + +``` + + + 12 + 75.36 + + + 37.5 + 235.5 + + +``` + +## 参照 + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) + [動的なソース コードの生成とコンパイル](../../../../docs/framework/reflection-and-codedom/dynamic-source-code-generation-and-compilation.md) \ No newline at end of file diff --git a/docs/standard/data/xml/select-nodes-using-xpath-navigation.md b/docs/standard/data/xml/select-nodes-using-xpath-navigation.md new file mode 100644 index 00000000000..e34e946d2e7 --- /dev/null +++ b/docs/standard/data/xml/select-nodes-using-xpath-navigation.md @@ -0,0 +1,172 @@ +--- +title: "XPath ナビゲーションによるノードの選択 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 8e4450dc-56b3-472b-b467-32f5694f83ad +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# XPath ナビゲーションによるノードの選択 +XML ドキュメント オブジェクト モデル \(DOM\) には、DOM 内の情報を照会するための XPath \(XML Path Language\) ナビゲーションに使用できるメソッドが含まれています。 XPath を使用すると、特定の単一ノードを見つけたり、条件に一致するすべてのノードを検索したりできます。 + +## XPath の選択メソッド + DOM クラスは、XPath による選択に、 および という 2 つのメソッドを提供します。 メソッドは、選択基準に一致した最初のノードを返します。 メソッドは、一致したノードを含む を返します。 + + 次の例では、 メソッドを使用して、著者の姓が指定した条件と一致する最初の `book` ノードを選択しています。 bookstore.xml ファイル \(このトピックの最後にあります\) を入力ファイルとして使用します。 + +```vb +Dim doc As New XmlDocument() +doc.Load("bookstore.xml") +Dim root As XmlNode = doc.DocumentElement + +' Add the namespace. +Dim nsmgr As New XmlNamespaceManager(doc.NameTable) +nsmgr.AddNamespace("bk", "urn:newbooks-schema") + +' Select and display the first node in which the author's +' last name is Kingsolver. +Dim node As XmlNode = root.SelectSingleNode( _ + "descendant::bk:book[bk:author/bk:last-name='Kingsolver']", nsmgr) +Console.WriteLine(node.InnerXml) +``` + +```csharp +// Load the document and set the root element. +XmlDocument doc = new XmlDocument(); +doc.Load("bookstore.xml"); +XmlNode root = doc.DocumentElement; + +// Add the namespace. +XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); +nsmgr.AddNamespace("bk", "urn:newbooks-schema"); + +// Select and display the first node in which the author's +// last name is Kingsolver. +XmlNode node = root.SelectSingleNode( + "descendant::bk:book[bk:author/bk:last-name='Kingsolver']", nsmgr); +Console.WriteLine(node.InnerXml); +``` + + 次の例では、 メソッドを使用して、指定した値より高い価格の book ノードをすべて選択しています。 その後、選択されたリストに含まれる各書籍の価格を、プログラムで 10% 安くしています。 最後に、更新したファイルをコンソールに書き出します。 bookstore.xml ファイル \(このトピックの最後にあります\) を入力ファイルとして使用します。 + +```vb +' Load the document and set the root element. +Dim doc As New XmlDocument() +doc.Load("bookstore.xml") +Dim root As XmlNode = doc.DocumentElement + +' Add the namespace. +Dim nsmgr As New XmlNamespaceManager(doc.NameTable) +nsmgr.AddNamespace("bk", "urn:newbooks-schema") + +' Select all nodes where the book price is greater than 10.00. +Dim nodeList As XmlNodeList = root.SelectNodes( _ + "descendant::bk:book[bk:price>10.00]", nsmgr) +For Each book As XmlNode In nodeList + Dim price As Double + price = Math.Round(Convert.ToSingle( _ + book.LastChild.InnerText) * 0.9, 2) + book.LastChild.InnerText = price.ToString() +Next + +' Display the updated document. +doc.Save(Console.Out) +``` + +```csharp +// Load the document and set the root element. +XmlDocument doc = new XmlDocument(); +doc.Load("bookstore.xml"); +XmlNode root = doc.DocumentElement; + +// Add the namespace. +XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); +nsmgr.AddNamespace("bk", "urn:newbooks-schema"); + +// Select all nodes where the book price is greater than 10.00. +XmlNodeList nodeList = root.SelectNodes( + "descendant::bk:book[bk:price>10.00]", nsmgr); +foreach (XmlNode book in nodeList) +{ + // Discount prices by 10%. + double price; + price = Math.Round(Convert.ToSingle( + book.LastChild.InnerText) * 0.9, 2); + book.LastChild.InnerText = price.ToString(); +} + +// Display the updated document. +doc.Save(Console.Out); +``` + + 上の例で、XPath クエリはドキュメント要素から開始されます。 XPath クエリの始点を設定すると、コンテキスト ノードが設定され、XPath クエリの開始点になります。 ドキュメント要素からではなく、ドキュメント要素の最初の子から開始するには、次のように選択ステートメントを記述します。 + +```vb +doc.DocumentElement.FirstChild.SelectNodes(. . . ) +``` + +```csharp +this doc.DocumentElement.FirstChild.SelectNodes(. . .); +``` + + すべての オブジェクトは、元のドキュメントに同期されます。 そのため、ノード リストを反復処理してノードの値を変更すると、そのノードは元のドキュメントにおいても更新されます。 前の例で、選択した でノードが変更されると、基になっているドキュメントも変更されることに注意してください。 + +> [!NOTE] +> 元のドキュメントが変更された場合は、選択を再実行するのが適切です。 変更されたノードが、以前はノード リストに含まれておらず、ノード リストに追加されるものであったり、ノード リストから削除されるものであったりした場合は、ノード リストの正確さは保証されなくなります。 + +## XPath 式の名前空間 + XPath 式は名前空間を含むことができます。 名前空間の解決は を使用してサポートされます。 XPath 式にプレフィックスが含まれる場合は、プレフィックスと名前空間 URI のペアを に追加して、 メソッド、または メソッドに渡す必要があります。 前のコード例では、 を使用して bookstore.xml ドキュメントの名前空間を解決しています。 + +> [!NOTE] +> XPath 式にプレフィックスが含まれない場合は、名前空間 URI は空の名前空間であると仮定されます。 XML に既定の名前空間が含まれる場合でも、プレフィックスと名前空間 URI を に追加する必要があります。そうしないと、ノードは選択されません。 + +#### 入力ファイル + 次に示すのは、このトピックの例で入力ファイルとして使用している bookstore.xml ファイルです。 + +``` + + + + The Handmaid's Tale + + Margaret + Atwood + + 19.95 + + + The Poisonwood Bible + + Barbara + Kingsolver + + 11.99 + + + The Bean Trees + + Barbara + Kingsolver + + 5.99 + + +``` + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/select-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/select-xml-data-using-xpathnavigator.md new file mode 100644 index 00000000000..5bdb45a7b60 --- /dev/null +++ b/docs/standard/data/xml/select-xml-data-using-xpathnavigator.md @@ -0,0 +1,80 @@ +--- +title: "XPathNavigator を使用した XML データの選択 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: c268c49e-32b9-4171-b782-dcb7b065fa73 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathNavigator を使用した XML データの選択 + クラスは、 オブジェクトまたは オブジェクト内で XPath 式を使用してノード セットを選択するための一連のメソッドを提供します。 選択した後、選択されたノード セットに対して反復して処理を行うことができます。 + +## XPathNavigator の選択メソッド + クラスは、 オブジェクトまたは オブジェクト内で XPath 式を使用してノード セットを選択するための一連のメソッドを提供します。 クラスは、祖先、子、および子孫のノードを、XPath 式を使用するよりも高速に選択できる最適化された一連のメソッドも提供します。 選択されたノード セットは、 オブジェクトまたは、選択されたノードが単一の場合は オブジェクトとして返されます。 + +### XPath 式によるノードの選択 + XPath 式を使用して 1 つのノード セットを選択するには、次のいずれかの選択メソッドを使用します。 + +- + +- + + 呼び出されると、これらのメソッドは オブジェクト、または選択が単一ノードの場合は オブジェクトを使用して、自由に移動できる 1 つのノード セットを返します。 + + オブジェクトを使用して移動しても、その作成に使用された オブジェクトの位置に影響ありません。 メソッドから返された オブジェクトは、返された単一ノード上に位置し、この場合もその作成に使用された オブジェクトの位置には影響しません。 + + 次の例は、 オブジェクトからの オブジェクトの作成、 メソッドを使用した オブジェクト内のノードの選択、および オブジェクトを使用した選択ノード上の繰り返し処理について示しています。 + +```vb +Dim document As XPathDocument = New XPathDocument("books.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() +Dim nodes As XPathNodeIterator = navigator.Select("/bookstore/book") + +While nodes.MoveNext() + Console.WriteLine(nodes.Current.Name) +End While +``` + +```csharp +XPathDocument document = new XPathDocument("books.xml"); +XPathNavigator navigator = document.CreateNavigator(); +XPathNodeIterator nodes = navigator.Select("/bookstore/book"); + +while(nodes.MoveNext()) +{ + Console.WriteLine(nodes.Current.Name); +} +``` + + この例は、`books.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#1](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/books.xml#1)] + +### 最適化された選択メソッド + クラスの 、および メソッドは、子、子孫、および祖先のノードにアクセスする一般的な XPath 式に相当します。 これらのメソッドのパフォーマンスは最適化されており、対応する XPath 式よりも高速です。 、および メソッドは、 値または選択するノードのローカル名と名前空間 URI を基にして祖先、子、および子孫のノードを選択します。 選択された祖先、子、および子孫のノードは オブジェクトとして返されます。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator による Xpath 式の評価](../../../../docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md) + [XPathNavigator によるノードの一致](../../../../docs/standard/data/xml/matching-nodes-using-xpathnavigator.md) + [XPath クエリで認識されるノード型](../../../../docs/standard/data/xml/node-types-recognized-with-xpath-queries.md) + [XPath クエリおよび名前空間](../../../../docs/standard/data/xml/xpath-queries-and-namespaces.md) + [コンパイルされた XPath 式](../../../../docs/standard/data/xml/compiled-xpath-expressions.md) \ No newline at end of file diff --git a/docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md b/docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md new file mode 100644 index 00000000000..c5771ed6c40 --- /dev/null +++ b/docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md @@ -0,0 +1,54 @@ +--- +title: "XPathNavigator を使用した XML データの選択、評価、および照合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 46e059f8-4dc8-4185-9236-784be95228ed +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPathNavigator を使用した XML データの選択、評価、および照合 + クラスは、XPath クエリによる または オブジェクト内のノードの選択、XPath 式の結果の評価と検査、および または オブジェクト内のノードが指定された XPath 式に一致するかどうかの判定のためのメソッドを提供します。 以下のトピックでは、これらの概念および または オブジェクト内のノードの選択、評価、および照合に関連する他の概念について説明します。 + +## このセクションの内容 + [XPathNavigator を使用した XML データの選択](../../../../docs/standard/data/xml/select-xml-data-using-xpathnavigator.md) + オブジェクトまたは オブジェクト内で XPath 式を使用してノード セットを選択するために使用される クラスの一連のメソッドについて説明します。 + + [XPathNavigator による Xpath 式の評価](../../../../docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md) + XPath 式の評価に使用される クラスの メソッドについて説明します。 + + [XPathNavigator によるノードの一致](../../../../docs/standard/data/xml/matching-nodes-using-xpathnavigator.md) + ノードが XPath 式に一致するかどうかを判定するために使用される クラスの メソッドについて説明します。 + + [XPath クエリで認識されるノード型](../../../../docs/standard/data/xml/node-types-recognized-with-xpath-queries.md) + XPath クエリで認識されるノードの型について説明します。 + + [XPath クエリおよび名前空間](../../../../docs/standard/data/xml/xpath-queries-and-namespaces.md) + XPath クエリでの名前空間の使用について説明します。 + + [コンパイルされた XPath 式](../../../../docs/standard/data/xml/compiled-xpath-expressions.md) + コンパイル済みの XPath クエリを表す クラスについて説明します。 + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathDocument および XmlDocument を使用した XML データの読み取り](../../../../docs/standard/data/xml/reading-xml-data-using-xpathdocument-and-xmldocument.md) + [XPathNavigator による XML データへのアクセス](../../../../docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md) + [XPathNavigator による XML データの編集](../../../../docs/standard/data/xml/editing-xml-data-using-xpathnavigator.md) + [XPathNavigator を使用したスキーマ検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/style-sheet-directives-embedded-in-a-document.md b/docs/standard/data/xml/style-sheet-directives-embedded-in-a-document.md new file mode 100644 index 00000000000..edaa7108f38 --- /dev/null +++ b/docs/standard/data/xml/style-sheet-directives-embedded-in-a-document.md @@ -0,0 +1,49 @@ +--- +title: "ドキュメントに埋め込まれたスタイル シート ディレクティブ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: d79fb295-ebc7-438d-ba1b-05be7d534834 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# ドキュメントに埋め込まれたスタイル シート ディレクティブ +既存の XML に `` というスタイル シート ディレクティブが含まれていることがあります。 Microsoft Internet Explorer は、これを `` 構文に代わるものとして受け入れます。 次のように `` ディレクティブが含まれている XML データを XML ドキュメント オブジェクト モデル \(DOM\) に読み込もうとすると、例外がスローされます。 + +``` + + + + Node 1 + Node 2 + +``` + + 例外が発生するのは、`` が DOM に対する無効な **ProcessingInstruction** と見なされるからです。 『Namespaces in XML』仕様によれば、**ProcessingInstruction** は、QNames \(修飾名\) ではなく、NCNames \(コロンが含まれない名前\) にする必要があります。 + + 『Namespaces in XML』仕様書のセクション 6 によると、**Load** メソッドと **LoadXml** メソッドをこの仕様に準拠させた場合の影響として、ドキュメントには次の規則が適用されることになります。 + +- すべての要素型と属性名は、0 個または 1 個のコロンを含みます。 + +- エンティティ名、処理命令ターゲット、記法名は、いずれもコロンを含みません。 + + コロンが含まれた `` は、2 番目の規則に違反します。 + + www.w3.org\/TR\/xml\-stylesheet で公開されている W3C \(World Wide Web Consortium\) 勧告『Associating Style Sheets with XML documents Version 1.0』によれば、XSLT スタイル シートを XML ドキュメントに関連付ける処理命令は、コロンをダッシュに置き換えた `` です。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/support-for-the-msxsl-node-set-function.md b/docs/standard/data/xml/support-for-the-msxsl-node-set-function.md new file mode 100644 index 00000000000..f5ca9ff01d0 --- /dev/null +++ b/docs/standard/data/xml/support-for-the-msxsl-node-set-function.md @@ -0,0 +1,66 @@ +--- +title: "msxsl:node-set() 関数のサポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: d0cbf517-d9f6-4097-9851-4fa62903decd +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# msxsl:node-set() 関数のサポート +`msxsl:node-set` 関数を使用すると、結果ツリー フラグメントをノード セットに変換できます。 結果として得られるノード セットには、常に単一のノードが含まれています。また、このノード セットは、常にそのツリーのルート ノードです。 + +> [!NOTE] +> [!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] では、 クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + `msxsl:node-set` 関数を使用すると、結果ツリー フラグメントをノード セットに変換できます。 結果として得られるノード セットには、常に単一のノードが含まれています。また、このノード セットは、常にそのツリーのルート ノードです。 + +## 例 + `$var` という変数がスタイル シート内のノード ツリーである例を次に示します。 for\-each ステートメントを `node-set` 関数と組み合わせて使用すれば、このノード ツリーをノード セットとして反復処理できます。 + +## nodeset.xsl + +``` + + + Writing Secure Code + XSLT Reference + + + + + + + + + + +``` + +## 出力 + 変換による出力は次のとおりです。 + +``` + +Michael HowardMichael Kay +``` + +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) \ No newline at end of file diff --git a/docs/standard/data/xml/traversing-xml-schemas.md b/docs/standard/data/xml/traversing-xml-schemas.md new file mode 100644 index 00000000000..1492c78661b --- /dev/null +++ b/docs/standard/data/xml/traversing-xml-schemas.md @@ -0,0 +1,82 @@ +--- +title: "XML スキーマの走査 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: cce69574-5861-4a30-b730-2e18d915d8ee +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XML スキーマの走査 +スキーマ オブジェクト モデル \(SOM\) API を使用して XML スキーマを走査すると、SOM に格納されている要素、属性、および型にアクセスできます。 また、SOM API を使用して XML スキーマを編集する際には、最初に SOM に読み込まれた XML スキーマを走査します。 + +## XML スキーマの走査 + クラスの次のプロパティを使用すると、XML スキーマに追加されたすべてのグローバル要素のコレクションにアクセスできます。 + +|プロパティ|コレクションまたは配列に格納されているオブジェクトの型| +|-----------|---------------------------------| +||| +||| +||| +||| +||、または | +|| \(グローバル レベルのすべての要素、属性、および型にアクセスできる\)| +||| +||, , | +|| \(スキーマの名前空間に属さない属性にアクセスできる\)| + +> [!NOTE] +> 上記の表に記載されているすべてのプロパティ \( プロパティを除く\) は、スキーマのコンパイル後の情報セット \(PSCI\) プロパティで、スキーマがコンパイルされるまで使用できません。 プロパティは、スキーマのコンパイル前のプロパティで、スキーマがコンパイルされる前に使用できます。このプロパティを使用すると、グローバル レベルのすべての要素、属性、および型にアクセスできます。 +> +> プロパティを使用すると、スキーマの名前空間に属さないすべての属性にアクセスできます。 これらの属性はスキーマ プロセッサで処理されません。 + + 以下のコード サンプルでは、「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」で作成されたカスタム スキーマの走査の例を示します。 このコード サンプルは、上記のコレクションを使用してスキーマを走査し、スキーマのすべての要素と属性をコンソールに出力する例を示します。 + + このサンプルでは、次の手順でカスタム スキーマの走査を行います。 + +1. カスタム スキーマを新しい オブジェクトに追加し、コンパイルします。 スキーマの読み取りまたはコンパイル時に発生するスキーマ検証に関する警告とエラーは、 デリゲートで処理されます。 + +2. プロパティを反復処理して、 からコンパイルされた オブジェクトを取得します。 スキーマはコンパイルされているため、スキーマのコンパイル後の情報セット \(PSCI\) プロパティにアクセスできます。 + +3. 各要素の名前をコンソールに出力するスキーマ コンパイル後の コレクションの コレクションで、各 を反復処理します。 + +4. クラスを使用して `Customer` 要素の複合型を取得します。 + +5. 複合型に何らかの属性がある場合、それぞれの を列挙する を取得して、その名前をコンソールに出力します。 + +6. クラスを使用して、複合型の sequence のパーティクルを取得します。 + +7. 各子要素の名前をコンソールに出力する コレクション内で、それぞれの を反復処理します。 + + 完全なコード サンプルを次に示します。 + + [!code-cpp[XmlSchemaTraverseExample#1](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaTraverseExample/CPP/XmlSchemaTraverseExample.cpp#1)] + [!code-csharp[XmlSchemaTraverseExample#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaTraverseExample/CS/XmlSchemaTraverseExample.cs#1)] + [!code-vb[XmlSchemaTraverseExample#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaTraverseExample/VB/XmlSchemaTraverseExample.vb#1)] + + プロパティには、 \(ユーザー定義の単純型または複合型の場合は \) を使用できます。 また、W3C 勧告『XML Schema』で定義されている組み込みデータ型の場合には、 を使用することもできます。 カスタム スキーマの場合、`Customer` 要素の で、`FirstName` 要素および `LastName` 要素は です。 + + 「[XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md)」のコード サンプルでは、 コレクションを使用して、`Customer` 要素に属性 `CustomerId` を追加しました。 これは、スキーマのコンパイル前のプロパティです。 対応するスキーマのコンパイル後の情報セット プロパティは、 コレクションで、複合型のすべての属性 \(型の派生を通じて継承される属性を含む\) を持っています。 + +## 参照 + [XML スキーマ オブジェクト モデルの概要](../../../../docs/standard/data/xml/xml-schema-object-model-overview.md) + [XML スキーマの読み取りと書き込み](../../../../docs/standard/data/xml/reading-and-writing-xml-schemas.md) + [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) + [XML スキーマの編集](../../../../docs/standard/data/xml/editing-xml-schemas.md) + [XML スキーマのインクルードまたはインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマのコンパイル後の情報セット](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) \ No newline at end of file diff --git a/docs/standard/data/xml/type-support-in-the-system-xml-classes.md b/docs/standard/data/xml/type-support-in-the-system-xml-classes.md new file mode 100644 index 00000000000..a16b4006916 --- /dev/null +++ b/docs/standard/data/xml/type-support-in-the-system-xml-classes.md @@ -0,0 +1,51 @@ +--- +title: "System.Xml クラスでの型のサポート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 63570538-06e3-4401-ad4d-ac50be90c7bf +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# System.Xml クラスでの型のサポート +.NET Framework Version 2.0 では、コアの XML クラスが強化され、型サポート機能が追加されています。 、および クラスには、XML スキーマ型と共通言語ランタイム \(CLR\) 型の間の変換機能を含む型サポート機能が含まれています。 + + .NET Framework Version 2.0 では、、および クラスが強化され、型サポート機能が追加されています。 + +- および クラスにはそれぞれ、ノードのスキーマ情報を返す **SchemaInfo** プロパティが含まれています。 + +- クラスの **ReadContentAs** と **ReadElementContentAs** メソッドは、1 回のメソッド呼び出しでテキスト値を読み取り、それを CLR 値に変換します。 + +- クラスの メソッドは、XML の書き出し時に、CLR 型を XML スキーマ型に変換します。 + +- クラスの **ValueAs** および プロパティは、1 回のメソッド呼び出しでノード値を返し、それを CLR 値に変換します。 + +> [!NOTE] +> .NET Framework Version 1.0 では、XML スキーマ型と CLR 型の間の変換に クラスが必要でした。 + +## このセクションの内容 + [XML データ型から CLR 型へのマッピング](../../../../docs/standard/data/xml/mapping-xml-data-types-to-clr-types.md) + XML データ型から CLR 型への既定のマッピングについて説明します。 + + [XML 型サポートの実装に関するメモ](../../../../docs/standard/data/xml/xml-type-support-implementation-notes.md) + 型サポート実装の詳細のいくつかについて説明します。 + + [XML データ型の変換](../../../../docs/standard/data/xml/conversion-of-xml-data-types.md) + XML スキーマ型と CLR 型の間の変換に クラスを使用する方法について説明します。 + +## 関連項目 + [厳密に型指定された XML データへの XPathNavigator を使用したアクセス](../../../../docs/standard/data/xml/accessing-strongly-typed-xml-data-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/types-of-xml-nodes.md b/docs/standard/data/xml/types-of-xml-nodes.md new file mode 100644 index 00000000000..222ef3d9111 --- /dev/null +++ b/docs/standard/data/xml/types-of-xml-nodes.md @@ -0,0 +1,59 @@ +--- +title: "XML ノードの種類 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 71d03b78-6898-4ce7-b0fc-1282573f31f7 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XML ノードの種類 +XML ドキュメントがノードのツリーとしてメモリに読み込まれると、ノードの作成時にノード型が決まります。 XML ドキュメント オブジェクト モデル \(DOM\) では複数のノード型が定義されています。これらのノード型は W3C \(World Wide Web Consortium\) で規定されているもので、セクション 1.1.1「The DOM Structure Model」に記載されています。 ノード型、ノード型に割り当てられるオブジェクト、およびそれぞれの簡単な説明を次の表に示します。 + +|DOM ノード型|Object|説明| +|--------------|------------|--------| +|Document|[XmlDocument クラス](frlrfSystemXmlXmlDocumentClassTopic)|ツリー内のすべてのノードのコンテナーです。 ドキュメントのルートとも呼ばれますが、常にルート要素と一致するとは限りません。| +|DocumentFragment|[XmlDocumentFragment クラス](frlrfSystemXmlXmlDocumentFragmentClassTopic)|1 つ以上のノードを非ツリー構造で格納する一時的なバッグです。| +|DocumentType|[XmlDocumentType クラス](frlrfSystemXmlXmlDocumentTypeClassTopic)|`` ノードを表します。| +|EntityReference|[XmlEntityReference クラス](frlrfSystemXmlXmlEntityReferenceClassTopic)|展開されていないエンティティ参照テキストを表します。| +|要素|[XmlElement クラス](frlrfSystemXmlXmlElementClassTopic)|要素ノードを表します。| +|Attr|[XmlAttribute クラス](frlrfSystemXmlXmlAttributeClassTopic)|要素の属性です。| +|ProcessingInstruction|[XmlProcessingInstruction クラス](frlrfSystemXmlXmlProcessingInstructionClassTopic)|処理命令ノードです。| +|コメント|[XmlComment クラス](frlrfSystemXmlXmlCommentClassTopic)|コメント ノードです。| +|Text|[XmlText クラス](frlrfSystemXmlXmlTextClassTopic)|要素または属性に含まれるテキストです。| +|CDATASection|[XmlCDataSection クラス](frlrfSystemXmlXmlCDataSectionClassTopic)|CDATA を表します。| +|Entity|[XmlEntity クラス](frlrfSystemXmlXmlEntityClassTopic)|内部ドキュメント型定義 \(DTD\) のサブセットまたは外部 DTD とパラメーター エンティティから取得され、XML ドキュメントに含まれている `` 宣言を表します。| +|Notation|[XmlNotation クラス](frlrfSystemXmlXmlNotationClassTopic)|DTD で宣言された記法を表します。| + + 属性 \(*attr*\) は、W3C DOM Level 1 のセクション 1.2「Fundamental Interfaces」ではノードとして記載されていますが、どの要素ノードの子とも見なされません。 + + W3C では定義されていない追加のノード型を次の表に示します。ただし、これらのノード型は **XmlNodeType** 列挙値としてのみ Microsoft .NET Framework オブジェクト モデルで使用できます。 そのため、これらのノード型に対応する DOM ノード型の列はありません。 + +|ノード型|説明| +|----------|--------| +||宣言ノード `` を表します。| +||有意の空白を表します。これは混合コンテンツの空白です。| +||要素コンテンツ内の空白を表します。| +|EndElement|**XmlReader** が要素の末尾に達したときに返されます。

XML サンプル: **\<\/item\>**

詳細については、「[XmlNodeType 列挙体](frlrfSystemXmlXmlNodeTypeClassTopic)」を参照してください。| +|EndEntity| を呼び出した後、置換するエンティティの末尾に **XmlReader** が達したときに返されます。 詳細については、「[XmlNodeType 列挙体](frlrfSystemXmlXmlNodeTypeClassTopic)」を参照してください。| + + XML を読み込み、case 構成体を使用してノード型を判定し、ノードとその内容についての情報を出力するコード サンプルについては、「[NodeType プロパティ](frlrfSystemXmlXmlSignificantWhitespaceClassNodeTypeTopic)」を参照してください。 + + ノード型のオブジェクト階層構造とそれぞれに対応するオブジェクト名の詳細については、「[XML ドキュメント オブジェクト モデル \(DOM\) の階層構造](../../../../docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md)」を参照してください。 ノード ツリーで作成したオブジェクトの詳細については、「[オブジェクト階層の XML データへのマップ](../../../../docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/unordered-node-retrieval-by-name-or-index.md b/docs/standard/data/xml/unordered-node-retrieval-by-name-or-index.md new file mode 100644 index 00000000000..149687c7fc6 --- /dev/null +++ b/docs/standard/data/xml/unordered-node-retrieval-by-name-or-index.md @@ -0,0 +1,129 @@ +--- +title: "名前またはインデックスによる順序付けられていないノードの取得 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 2038a90b-92af-4a0a-baaa-08e688d95194 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 名前またはインデックスによる順序付けられていないノードの取得 +W3C \(World Wide Web Consortium\) 仕様で NamedNodeMap として定義されている **XmlNamedNodeMap** は、名前またはインデックスでノードを参照する機能を持っており、順序付けられていないノード セットを処理する必要があります。 **XmlNamedNodeMap** にアクセスできるのは、メソッドまたはプロパティから **XmlNamedNodeMap** が返されたときだけです。 **XmlNamedNodeMap** を返すメソッドやプロパティには、次の 3 つがあります。 + +- XmlElement.Attributes + +- XmlDocumentType.Entities + +- XmlDocumentType.Notations + + たとえば、**XmlDocumentType.Entities** プロパティは、ドキュメント型宣言で宣言された **XmlEntity** ノードのコレクションを取得します。 このコレクションは **XmlNamedNodeMap** として返され、**Count** プロパティを使用してコレクションを反復処理し、エンティティ情報を表示できます。 **XmlNamedNodeMap** の反復処理の例については、「[XmlDocumentType.Entities プロパティ](frlrfSystemXmlXmlDocumentTypeClassEntitiesTopic)」を参照してください。 + + **XmlAttributeCollection** は **XmlNamedNodeMap** から派生しており、属性だけは変更できますが、記法とエンティティは読み取り専用です。 属性に対して **XmlNamedNodeMap** を使用すると、XML 名に基づいて属性のノードを取得できます。 これは、要素ノードの属性コレクションを操作する簡単な方法です。 **XmlNodeList** にも **IEnumerable** インターフェイスが実装されていますが、文字列ではなくインデックス アクセサーを使用するという点で **XmlNamedNodeMap** とは異なります。 **RemoveNamedItem** メソッドと **SetNamedItem** メソッドは **XmlAttributeCollection** に対してだけ使用します。 属性コレクションに追加したり、属性コレクションから削除すると、**AttributeCollection** または **XmlNamedNodeMap** のどちらの実装を使用した場合でも、要素の属性コレクションが変更されます。 属性を移動する方法と新しい属性を作成する方法を次のコード サンプルに示します。 + +```vb +Imports System +Imports System.Xml + +Class test + + Public Shared Sub Main() + Dim doc As New XmlDocument() + doc.LoadXml(" text1 text2 ") + + ' Get the attributes of node "child2 " + Dim ac As XmlAttributeCollection = doc.DocumentElement.ChildNodes(1).Attributes + + ' Print out the number of attributes and their names. + Console.WriteLine(("Number of Attributes: " + ac.Count)) + Dim i As Integer + For i = 0 To ac.Count - 1 + Console.WriteLine((i + 1 + ". Attribute Name: '" + ac(i).Name + "' Attribute Value: '" + ac(i).Value + "'")) + Next i + ' Get the 'attr1' from child1. + Dim attr As XmlAttribute = doc.DocumentElement.ChildNodes(0).Attributes(0) + + ' Add this attribute to the attributecollection "ac". + ac.SetNamedItem(attr) + + ''attr1' will be removed from 'child1' and added to 'child2'. + ' Print out the number of attributes and their names. + Console.WriteLine(("Number of Attributes: " + ac.Count)) + + For i = 0 To ac.Count - 1 + Console.WriteLine((i + 1 + ". Attribute Name: '" + ac(i).Name + "' Attribute Value: '" + ac(i).Value + "'")) + Next i + ' Create a new attribute and add to the collection. + Dim attr2 As XmlAttribute = doc.CreateAttribute("attr4") + attr2.Value = "val4" + ac.SetNamedItem(attr2) + + ' Print out the number of attributes and their names. + Console.WriteLine(("Number of Attributes: " + ac.Count)) + + For i = 0 To ac.Count - 1 + Console.WriteLine((i + 1 + ". Attribute Name: '" + ac(i).Name + "' Attribute Value: '" + ac(i).Value + "'")) + Next i + End Sub 'Main +End Class 'test +``` + +```csharp +using System; +using System.Xml; +class test { + public static void Main() { + XmlDocument doc = new XmlDocument(); + doc.LoadXml( " text1 text2 " ); + + // Get the attributes of node "child2" + XmlAttributeCollection ac = doc.DocumentElement.ChildNodes[1].Attributes; + + // Print out the number of attributes and their names. + Console.WriteLine( "Number of Attributes: "+ac.Count ); + for( int i = 0; i < ac.Count; i++ ) + Console.WriteLine( (i+1) + ". Attribute Name: '" +ac[i].Name+ "' Attribute Value: '"+ ac[i].Value +"'" ); + + // Get the 'attr1' from child1. + XmlAttribute attr = doc.DocumentElement.ChildNodes[0].Attributes[0]; + + // Add this attribute to the attributecollection "ac". + ac.SetNamedItem( attr ); + + // 'attr1' will be removed from 'child1' and added to 'child2'. + // Print out the number of attributes and their names. + Console.WriteLine( "Number of Attributes: "+ac.Count ); + for( int i = 0; i < ac.Count; i++ ) + Console.WriteLine( (i+1) + ". Attribute Name: '" +ac[i].Name+ "' Attribute Value: '"+ ac[i].Value +"'" ); + + // Create a new attribute and add to the collection. + XmlAttribute attr2 = doc.CreateAttribute( "attr4" ); + attr2.Value = "val4"; + ac.SetNamedItem( attr2 ); + + // Print out the number of attributes and their names. + Console.WriteLine( "Number of Attributes: "+ac.Count ); + for( int i = 0; i < ac.Count; i++ ) + Console.WriteLine( (i+1) + ". Attribute Name: '" +ac[i].Name+ "' Attribute Value: '"+ ac[i].Value +"'" ); + + } +} +``` + + **AttributeCollection** から属性を削除するコード サンプルについては、「[XmlNamedNodeMap.RemoveNamedItem メソッド](frlrfSystemXmlXmlNamedNodeMapClassRemoveNamedItemTopic)」を参照してください。 メソッドとプロパティの詳細については、「[XmlNamedNodeMap メンバー](frlrfSystemXmlXmlNamedNodeMapMembersTopic)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/user-defined-functions-and-variables.md b/docs/standard/data/xml/user-defined-functions-and-variables.md new file mode 100644 index 00000000000..b138d55d64b --- /dev/null +++ b/docs/standard/data/xml/user-defined-functions-and-variables.md @@ -0,0 +1,59 @@ +--- +title: "ユーザー定義の関数と変数 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 4772f20e-1e7f-496e-93c2-1484473be555 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# ユーザー定義の関数と変数 + クラスは、 データの操作に使用されるメソッドのセットを提供します。 XPath クエリ式で使用する拡張関数および変数を実装することで、標準の XPath 関数を補完できます。 メソッドは、 から派生した、ユーザー定義のコンテキストを受け取ることができます。 ユーザー定義の関数は、カスタム コンテキストで解決されます。 + + 拡張関数および変数は、XML インジェクション攻撃を防止するのに役立ちます。 このようなシナリオでは、処理命令と連結された生の入力としてではなく、ユーザー入力がカスタム変数に割り当てられ、拡張関数で処理されます。 拡張関数および変数にユーザー入力が含まれて、設計者が意図したように、XML データに対してだけ機能します。 + + 拡張関数および変数を使用するには、カスタム クラス を、拡張関数および変数をサポートする インターフェイスおよび インターフェイスと共に実装します。 は、ユーザー入力をその と共にカスタム に追加します。 + + は、式で識別されるノードを見つけて処理するのに が使用する、コンパイル済みクエリを表します。 + + から派生したカスタム コンテキスト クラスの実装を次の例に示します。 コード コメントは、クラスのメンバーと、カスタム関数でのそれらのメンバーの使用法を説明しています。 このコードの後に、関数および変数の実装と、それらの実装を使用するサンプル アプリケーションがあります。 + + [!code-csharp[XPathExtensionFunctions#2](../../../../samples/snippets/csharp/VS_Snippets_Data/xpathextensionfunctions/cs/xpathextensionfunctions.cs#2)] + [!code-vb[XPathExtensionFunctions#2](../../../../samples/snippets/visualbasic/VS_Snippets_Data/xpathextensionfunctions/vb/xpathextensionfunctions.vb#2)] + + 次のコードでは を実装します。 を実装するクラスは、ユーザー定義の関数を解決し、実行します。 この例では、宣言 `private int CountChar(string title, char charTocount)` で識別される関数を使用します。 + + コード コメントでは、クラスのメンバーを示しています。 + + [!code-csharp[XPathExtensionFunctions#3](../../../../samples/snippets/csharp/VS_Snippets_Data/xpathextensionfunctions/cs/xpathextensionfunctions.cs#3)] + [!code-vb[XPathExtensionFunctions#3](../../../../samples/snippets/visualbasic/VS_Snippets_Data/xpathextensionfunctions/vb/xpathextensionfunctions.vb#3)] + + 次のコードでは を実装します。 このクラスは、実行時に XPath クエリ式内のユーザー定義変数への参照を解決します。 このクラスのインスタンスは、カスタム クラス の、オーバーライドされた メソッドによって作成され、返されます。 + + コード コメントでは、クラスのメンバーを示しています。 + + [!code-csharp[XPathExtensionFunctions#4](../../../../samples/snippets/csharp/VS_Snippets_Data/xpathextensionfunctions/cs/xpathextensionfunctions.cs#4)] + [!code-vb[XPathExtensionFunctions#4](../../../../samples/snippets/visualbasic/VS_Snippets_Data/xpathextensionfunctions/vb/xpathextensionfunctions.vb#4)] + + 前のクラス定義がスコープ内にある次のコードでは、カスタム関数を使用して `Tasks.xml` ドキュメントの要素内の文字をカウントします。 コード コメントでは、カスタム関数をコンパイルし、それを `Tasks.xml` ドキュメントに対して実行するコードについて説明しています。 + + [!code-csharp[XPathExtensionFunctions#1](../../../../samples/snippets/csharp/VS_Snippets_Data/xpathextensionfunctions/cs/xpathextensionfunctions.cs#1)] + [!code-vb[XPathExtensionFunctions#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/xpathextensionfunctions/vb/xpathextensionfunctions.vb#1)] + + この例では、次の XML データを使用しています。 + + [!code-xml[XPathExtensionFunctions#5](../../../../samples/snippets/xml/VS_Snippets_Data/xpathextensionfunctions/XML/tasks.xml#5)] \ No newline at end of file diff --git a/docs/standard/data/xml/using-the-xslcompiledtransform-class.md b/docs/standard/data/xml/using-the-xslcompiledtransform-class.md new file mode 100644 index 00000000000..ee60d6239e4 --- /dev/null +++ b/docs/standard/data/xml/using-the-xslcompiledtransform-class.md @@ -0,0 +1,54 @@ +--- +title: "XslCompiledTransform クラスの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: f9b074f6-d6f4-49dd-a093-df510bf0cf7b +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XslCompiledTransform クラスの使用 + クラスは Microsoft .NET Framework XSLT プロセッサです。 このクラスは、スタイル シートをコンパイルし、XSLT 変換を実行するために使用されます。 + +> [!NOTE] +> 全体的なパフォーマンスは クラスの方が クラスより優れていますが、 クラスの メソッドが変換で初めて呼び出されたときは、 クラスの メソッドよりパフォーマンスが劣る場合があります。 これは、XSLT ファイルを読み込む前にコンパイルする必要があるためです。 詳細については、ブログの投稿「[XslCompiledTransform は XslTransform より遅い?](http://go.microsoft.com/fwlink/?LinkId=130590)」を参照してください。 + +## このセクションの内容 + [XslCompiledTransform クラスへの入力](../../../../docs/standard/data/xml/inputs-to-the-xslcompiledtransform-class.md) + 使用可能な XSLT 入力オプションについて説明します。 + + [XslCompiledTransform クラスの出力オプション](../../../../docs/standard/data/xml/output-options-on-the-xslcompiledtransform-class.md) + 使用可能な XSLT 出力オプションについて説明します。 + + [XSLT 処理中の外部リソースの解決](../../../../docs/standard/data/xml/resolving-external-resources-during-xslt-processing.md) + 外部リソースを解決するための クラスの使用について説明します。 + + [XSLT スタイル シートの拡張](../../../../docs/standard/data/xml/extending-xslt-style-sheets.md) + XSLT の拡張機能のサポートについて説明します。 + +||| +|-|-| +|[XSLT エラーの解決](../../../../docs/standard/data/xml/recoverable-xslt-errors.md)|W3C \(World Wide Web Consortium\) 勧告『XSLT 1.0』で許可されている随意動作を示し、 クラスによるこれらの動作の処理方法を説明します。| +|[方法 : ノード フラグメントを変換する](../../../../docs/standard/data/xml/how-to-transform-a-node-fragment.md)|ノード フラグメントの変換方法を説明します。| + +## 関連項目 + [XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md) + クラスからコードを移行する方法について説明します。 + +## 参照 + + \ No newline at end of file diff --git a/docs/standard/data/xml/validating-an-xml-document-in-the-dom.md b/docs/standard/data/xml/validating-an-xml-document-in-the-dom.md new file mode 100644 index 00000000000..bfd54482576 --- /dev/null +++ b/docs/standard/data/xml/validating-an-xml-document-in-the-dom.md @@ -0,0 +1,96 @@ +--- +title: "DOM における XML ドキュメントの検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 2c61c920-d0f8-4c72-bfcc-6524570f3060 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# DOM における XML ドキュメントの検証 +既定では、 クラスは、ドキュメント オブジェクト モデル \(DOM\) 内の XML ドキュメントを XML スキーマ定義言語 \(XSD\) スキーマまたはドキュメント型定義 \(DTD\) に対して検証しません。XML が整形式であることだけが検証されます。 + + DOM 内の XML を検証するには、スキーマ検証型 クラスの メソッドに渡して、DOM への読み込み時に XML を検証するか、 クラスの メソッドを使用して、まだ未検証の DOM 内の XML ドキュメントを検証することができます。 + +## DOM への読み込み時の XML ドキュメントの検証 + 検証型 クラスの メソッドに渡されると、 クラスは DOM への読み込み時に XML データを検証します。 + + 検証が正常に終了すると、スキーマの既定値が適用され、必要に応じてテキスト値がアトミック値に変換され、型情報が検証済みの情報項目に関連付けられます。 その結果、以前の型指定されていない XML データは、型指定された XML データに置き換わります。 + +### XML スキーマ検証型 XmlReader の作成 + XML スキーマ検証型 を作成するには、次の手順を実行します。 + +1. 新しい インスタンスを作成します。 + +2. XML スキーマを インスタンスの プロパティに追加します。 + +3. `Schema` を として指定します。 + +4. オプションとして、検証中に検出したスキーマ検証エラーおよび警告を処理する を指定します。 + +5. 最後に、 オブジェクトを、スキーマ検証型 を作成する クラスの メソッドに、XML ドキュメントと共に渡します。 + +### 例 + 次のコード サンプルでは、スキーマ検証型 が DOM に読み込まれた XML データを検証します。 無効な変更を加えられた後、XML ドキュメントが再検証され、スキーマ検証エラーが発生します。 最後に、エラーの 1 つが修正された後、XML ドキュメントの一部が部分的に検証されます。 + + [!code-cpp[XmlDocumentValidation.Load#1](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlDocumentValidation.Load/CPP/XmlDocumentValidationExample.cpp#1)] + [!code-csharp[XmlDocumentValidation.Load#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlDocumentValidation.Load/CS/XmlDocumentValidationExample.cs#1)] + [!code-vb[XmlDocumentValidation.Load#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlDocumentValidation.Load/VB/XmlDocumentValidationExample.vb#1)] + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + + また、`contosoBooks.xsd` ファイルも入力として使用します。 + + [!code-xml[XPathXMLExamples#3](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xsd#3)] + + DOM への読み込み時に XML データを検証する場合は、以下を検討します。 + +- 上の例では、無効な型が見つかるたびに が呼び出されます。 検証を行う を設定しなかった場合は、 を呼び出したときに属性や要素の型が検証スキーマで指定されている型と一致しないと、 がスローされます。 + +- XML ドキュメントが既定値を定義した関連付けられたスキーマと共に オブジェクトに読み込まれる場合、 は、これらの既定値があたかも XML ドキュメント内にあるかのように扱います。 これは、スキーマから既定値を得た要素に対して プロパティは常に `false` を返すことを意味します。 XML ドキュメント内で空要素として書かれている場合も同様です。 + +## DOM における XML ドキュメントの検証 + クラスの メソッドは、DOM に読み込まれた XML データを オブジェクトの プロパティに対して検証します。 検証が正常に終了すると、スキーマの既定値が適用され、必要に応じてテキスト値がアトミック値に変換され、型情報が検証済みの情報項目に関連付けられます。 その結果、以前の型指定されていない XML データは、型指定された XML データに置き換わります。 + + 以下の例は、上記の「DOM への読み込み時の XML ドキュメントの検証」の例に似ています。 この例では、XML ドキュメントは DOM への読み込み時には検証されませんが、DOM への読み込み後に、 クラスの メソッドを使用して検証されます。 メソッドは XML ドキュメントを プロパティに含まれている XML スキーマに対して検証します。 その後、無効な変更を加えられた後、XML ドキュメントが再検証され、スキーマ検証エラーが発生します。 最後に、エラーの 1 つが修正された後、XML ドキュメントの一部が部分的に検証されます。 + + [!code-csharp[XmlDocumentValidation.Validate#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlDocumentValidation.Validate/CS/XmlDocumentValidationExample.cs#1)] + [!code-vb[XmlDocumentValidation.Validate#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlDocumentValidation.Validate/VB/XmlDocumentValidationExample.vb#1)] + + この例は入力として、上記の「DOM への読み込み時の XML ドキュメントの検証」で参照されている `contosoBooks.xml` ファイルと `contosoBooks.xsd` ファイルを使用します。 + +## 検証エラーおよび警告の処理 + XML スキーマ検証エラーは、DOM に読み込まれる XML データの検証時に報告されます。 XML データ読み込み時の検証中またはまだ未検証の XML ドキュメントの検証時に検出されたスキーマ検証エラーのすべてについて通知されます。 + + 検証エラーは によって処理されます。 インスタンスに割り当てられているか、 クラスの メソッドに渡されている場合、 がスキーマ検証エラーを処理します。それ以外の場合は、スキーマ検証エラーの検出時に が発生します。 + +> [!NOTE] +> がプロセスを停止する例外を生成しない限り、スキーマ検証エラーが発生しても XML データは DOM に読み込まれます。 +> +> フラグが オブジェクトに指定されていない場合、スキーマ検証警告は報告されません。 + + を説明する例については、上記の「DOM への読み込み時の XML ドキュメントの検証」と「DOM における XML ドキュメントの検証」を参照してください。 + +## 参照 + + + + + [DOM モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-dom-model.md) + [XML スキーマの使用](../../../../docs/standard/data/xml/working-with-xml-schemas.md) \ No newline at end of file diff --git a/docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md b/docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md new file mode 100644 index 00000000000..acd5039d0b7 --- /dev/null +++ b/docs/standard/data/xml/white-space-and-significant-white-space-handling-when-loading-the-dom.md @@ -0,0 +1,30 @@ +--- +title: "DOM を読み込むときの空白および有意の空白の処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 1b141a0a-50d8-4ebd-83cd-a84449bb22b2 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# DOM を読み込むときの空白および有意の空白の処理 +ドキュメントを読み込むときには、空白を保持するオプションを設定して、ドキュメント ツリーに **XmlWhitespace** ノードを作成できます。 空白ノードを作成するには、**PreserveWhitespace** プロパティを true に設定します。 このプロパティが既定の **false** に設定されている場合、空白ノードは作成されません。 **PreserveWhitespace** フラグの設定に関係なく、有意の空白ノードは常に保持され、そのデータを表す **XmlSignificantWhitespace** ノードが常にメモリ内に作成されます。 + + ドキュメントがリーダーから読み込まれた場合は、**XmlTextReader** の **WhitespaceHandling** プロパティが **WhitespaceHandling.None** に設定されていない場合にのみ、**XmlDocument** クラスの **PreserveWhitespace** フラグ プロパティの設定が **XmlWhitespace** ノードの作成に影響を及ぼします。 リーダーの **WhitespaceHandling** プロパティの値の方が **XmlDocument** のこのフラグの設定より優先されます。 **XmlSignificantWhitespace** の詳細については、「[XmlSignificantWhitespace クラス](frlrfSystemXmlXmlSignificantWhitespaceClassTopic)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/working-with-xml-schemas.md b/docs/standard/data/xml/working-with-xml-schemas.md new file mode 100644 index 00000000000..f741e873fca --- /dev/null +++ b/docs/standard/data/xml/working-with-xml-schemas.md @@ -0,0 +1,50 @@ +--- +title: "XML スキーマの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: bbbcc70c-bf9a-4f6a-af72-1bab5384a187 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XML スキーマの使用 +XML ドキュメントの構造、その要素間のリレーションシップ、データ型、および内容の制約を定義するには、ドキュメント型定義 \(DTD: Document Type Definition\) または XML スキーマ定義言語 \(XSD\) スキーマを使用します。 XML ドキュメントは、W3C \(World Wide Web Consortium\) 勧告『Extensible Markup Language \(XML\) 1.0』で定義されている構文要件をすべて満たしている場合には整形式と見なされますが、整形式であると同時に DTD またはスキーマに定義されている制約に準拠していなければ有効とは見なされません。 したがって、有効な XML ドキュメントはすべて整形式ですが、整形式の XML ドキュメントがすべて有効であるとは限りません。 + + XML の詳細については、W3C 勧告『[XML 1.0](http://go.microsoft.com/fwlink/?linkid=7269)』を参照してください。 XML スキーマの詳細については、W3C 勧告『[XML Schema Part 1: Structures](http://go.microsoft.com/fwlink/?linkid=48881)』および W3C 勧告『[XML Schema Part 2: Datatypes](http://go.microsoft.com/fwlink/?linkid=17392)』を参照してください。 + +## このセクションの内容 + [XML スキーマ オブジェクト モデル \(SOM\)](../../../../docs/standard/data/xml/xml-schema-object-model-som.md) + 名前空間のスキーマ オブジェクト モデル \(SOM\) について説明します。SOM は、ファイルからスキーマ定義言語 \(XSD\) スキーマを読み取ったり、プログラムを使用してメモリ内にスキーマを作成したりできる一連のクラスを提供します。 + + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + クラスについて説明します。このクラスは、XSD スキーマを格納または検証できるキャッシュです。 + + [XmlSchemaValidator のプッシュ ベースの検証](../../../../docs/standard/data/xml/xmlschemavalidator-push-based-validation.md) + クラスについて説明します。このクラスは、プッシュ ベース方式で、XSD スキーマを基準として XML データを検証する、効率的かつ高性能なしくみを提供します。 + + [XML スキーマの推論](../../../../docs/standard/data/xml/inferring-an-xml-schema.md) + クラスを使用して XML ドキュメントの構造から XSD スキーマを推論する方法を説明します。 + +## 関連項目 + | | + +## 関連項目 + [DOM における XML ドキュメントの検証](../../../../docs/standard/data/xml/validating-an-xml-document-in-the-dom.md) + ドキュメント オブジェクト モデル \(DOM\) の XML を検証する方法を説明します。 検証できる XML は、DOM に読み込まれている XML か、または事前に検証されていない DOM の XML ドキュメントです。 + + [XPathNavigator を使用したスキーマ検証](../../../../docs/standard/data/xml/schema-validation-using-xpathnavigator.md) + クラスを使用して操作中および編集中の XML を検証する方法を説明します。 \ No newline at end of file diff --git a/docs/standard/data/xml/xdr-validation-with-xmlschemacollection.md b/docs/standard/data/xml/xdr-validation-with-xmlschemacollection.md new file mode 100644 index 00000000000..502f5524e6f --- /dev/null +++ b/docs/standard/data/xml/xdr-validation-with-xmlschemacollection.md @@ -0,0 +1,169 @@ +--- +title: "XmlSchemaCollection を使用した XDR 検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 00833027-1428-4586-83c1-42f5de3323d1 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XmlSchemaCollection を使用した XDR 検証 +検証の基準とする XDR \(XML\-Data Reduced\) スキーマが **XmlSchemaCollection** に格納されている場合、そのスキーマは、**XmlSchemaCollection** に追加したときに指定された名前空間 URI に関連付けられています。 **XmlValidatingReader** は、XML ドキュメント内の名前空間 URI を、コレクション内のその URI に対応するスキーマに割り当てます。 + +> [!IMPORTANT] +> クラスは廃止されており、 クラスに置き換えられています。 の詳細については、「[スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md)」を参照してください。 + + たとえば、XML ドキュメントのルート要素が `` の場合、スキーマを **XmlSchemaCollection** に追加するときに、そのスキーマも、次に示すように同じ名前空間を参照します。 + +``` +xsc.Add("urn:newbooks-schema", "newbooks.xdr") +``` + + **XmlTextReader** を受け取り、XDR スキーマ HeadCount.xdr を **XmlSchemaCollection** に追加する **XmlValidatingReader** を作成するコード サンプルを次に示します。 + +```vb +Imports System +Imports System.IO +Imports System.Xml +Imports System.Xml.Schema + +Namespace ValidationSample + + Class Sample + + Public Shared Sub Main() + Dim tr As New XmlTextReader("HeadCount.xml") + Dim vr As New XmlValidatingReader(tr) + + vr.Schemas.Add("xdrHeadCount", "HeadCount.xdr") + vr.ValidationType = ValidationType.XDR + AddHandler vr.ValidationEventHandler, AddressOf ValidationHandler + + While vr.Read() + PrintTypeInfo(vr) + If vr.NodeType = XmlNodeType.Element Then + While vr.MoveToNextAttribute() + PrintTypeInfo(vr) + End While + End If + End While + Console.WriteLine("Validation finished") + End Sub + ' Main + + Public Shared Sub PrintTypeInfo(vr As XmlValidatingReader) + If Not (vr.SchemaType Is Nothing) Then + If TypeOf vr.SchemaType Is XmlSchemaDatatype Or TypeOf vr.SchemaType Is XmlSchemaSimpleType Then + Dim value As Object = vr.ReadTypedValue() + Console.WriteLine("{0}({1},{2}):{3}", vr.NodeType, vr.Name, value.GetType().Name, value) + End If + End If + End Sub + ' PrintTypeInfo + + Public Shared Sub ValidationHandler(sender As Object, args As ValidationEventArgs) + Console.WriteLine("***Validation error") + Console.WriteLine("Severity:{0}", args.Severity) + Console.WriteLine("Message:{0}", args.Message) + End Sub + ' ValidationHandler + End Class + ' Sample +End Namespace +' ValidationSample +``` + +```csharp +using System; +using System.IO; +using System.Xml; +using System.Xml.Schema; + +namespace ValidationSample +{ + class Sample + { + public static void Main() + { + XmlTextReader tr = new XmlTextReader("HeadCount.xml"); + XmlValidatingReader vr = new XmlValidatingReader(tr); + + vr.Schemas.Add("xdrHeadCount", "HeadCount.xdr"); + vr.ValidationType = ValidationType.XDR; + vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler); + + while(vr.Read()) + { + PrintTypeInfo(vr); + if(vr.NodeType == XmlNodeType.Element) + { + while(vr.MoveToNextAttribute()) + PrintTypeInfo(vr); + } + } + Console.WriteLine("Validation finished"); + } + + public static void PrintTypeInfo(XmlValidatingReader vr) + { + if(vr.SchemaType != null) + { + if(vr.SchemaType is XmlSchemaDatatype || vr.SchemaType is XmlSchemaSimpleType) + { + object value = vr.ReadTypedValue(); + Console.WriteLine("{0}({1},{2}):{3}", vr.NodeType, vr.Name, value.GetType().Name, value); + } + } + } + + public static void ValidationHandler(object sender, ValidationEventArgs args) + { + Console.WriteLine("***Validation error"); + Console.WriteLine("\tSeverity:{0}", args.Severity); + Console.WriteLine("\tMessage:{0}", args.Message); + } + } +} +``` + + 検証対象の入力ファイル HeadCount.xml の内容について、次に概略を示します。 + +``` + + + Waldo Pepper + Red Pepper + +``` + + 検証の基準とする XDR スキーマ ファイル HeadCount.xdr の内容について、次に概略を示します。 + +``` + + + + + + + + +``` + +## 参照 + + + [XmlSchemaCollection スキーマのコンパイル](../../../../docs/standard/data/xml/xmlschemacollection-schema-compilation.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xml-document-creation.md b/docs/standard/data/xml/xml-document-creation.md new file mode 100644 index 00000000000..e2cd54d5b3e --- /dev/null +++ b/docs/standard/data/xml/xml-document-creation.md @@ -0,0 +1,40 @@ +--- +title: "XML ドキュメントの作成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 877e9c62-b082-4bfb-bc5b-f47297eb30ef +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XML ドキュメントの作成 +XML ドキュメントは、2 とおりの方法で作成できます。 1 つは、パラメーターを使用せずに **XmlDocument** を作成する方法です。 もう 1 つは、**XmlDocument** の作成時に **XmlNameTable** をパラメーターとして渡す方法です。 パラメーターを使用せず、新しい空の **XmlDocument** を作成する方法を次の例に示します。 + +```vb +Dim doc As New XmlDocument() +``` + +```csharp +XmlDocument doc = new XmlDocument(); +``` + + ドキュメントを作成すると、**Load** メソッドを使用することにより、文字列、ストリーム、URL、テキスト リーダー、または **XmlReader** から派生したクラスのデータを読み込むことができます。 文字列から XML を読み込む **LoadXML** メソッドという読み込みメソッドもあります。 各種の **Load** メソッドの詳細については、「[XML ドキュメントの DOM への読み込み](../../../../docs/standard/data/xml/reading-an-xml-document-into-the-dom.md)」を参照してください。 + + **XmlNameTable** というクラスがあります。 このクラスは、分解された文字列オブジェクトのテーブルです。 このテーブルを使用すると、パーサーは XML ドキュメント内で繰り返されているすべての要素名と属性名に同じ文字列オブジェクトを使用でき、効率が向上します。 **XmlNameTable** は、前述のようにドキュメントの作成時に自動的に作成され、ドキュメントの読み込み時に属性名および要素名と共に読み込まれます。 名前テーブルのあるドキュメントが既に存在し、それらの名前が別のドキュメントで役に立つ場合は、**XmlNameTable** をパラメーターとしてとる **Load** メソッドを使用して新しいドキュメントを作成できます。 このメソッドによるドキュメントの作成時には、別のドキュメントからの既存の **XmlNameTable** と、既に読み込まれているすべての属性および要素が使われます。 **XmlNameTable** を使用すると、要素名と属性名を効率的に比較できます。 **XmlNameTable** の詳細については、「[XmlNameTable によるオブジェクトの比較](../../../../docs/standard/data/xml/object-comparison-using-xmlnametable.md)」を参照してください。 リファレンスは、「[XmlNameTable メンバー](frlrfSystemXmlXmlNameTableMembersTopic)」を参照してください。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md b/docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md new file mode 100644 index 00000000000..9ddcee49a47 --- /dev/null +++ b/docs/standard/data/xml/xml-document-object-model-dom-hierarchy.md @@ -0,0 +1,51 @@ +--- +title: "XML ドキュメント オブジェクト モデル (DOM) の階層構造 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 9d187d4f-c76e-4223-a670-cc290783ce47 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XML ドキュメント オブジェクト モデル (DOM) の階層構造 +XML ドキュメント オブジェクト モデル \(DOM\) のクラスの階層構造を次の図に示します。クラス名に続くかっこ内の名前は、W3C \(World Wide Web Consortium\) 名です。 + + ![XML ドキュメント オブジェクト モデル (DOM) の階層構造](../../../../docs/standard/data/xml/media/dom-class-hierarchy.gif "Dom\_class\_hierarchy") +XML ドキュメント オブジェクト モデル \(DOM\) の階層構造 + + 次のクラスは **XmlNode** から継承したものではありません。 + +- **XmlImplementation** + +- **XmlNamedNodeMap** + +- **XmlNodeList** + +- **XmlNodeChangedEventArgs** + + **XmlImplementation** クラスは、XML ドキュメントを作成するために使われます。 詳細については、「[XML ドキュメントの作成](../../../../docs/standard/data/xml/xml-document-creation.md)」を参照してください。 + + **XmlNamedNodeMap** クラスは、順序付けられていないノード セットを処理します。 詳細については、「[名前またはインデックスによる順序付けられていないノードの取得](../../../../docs/standard/data/xml/unordered-node-retrieval-by-name-or-index.md)」を参照してください。 + + **XmlNodeList** クラスは、順序付けられたノード リストを処理します。 詳細については、「[インデックスによる順序付けられたノードの取得](../../../../docs/standard/data/xml/ordered-node-retrieval-by-index.md)」を参照してください。 + + **XmlNodeChangedEventArgs** クラスは、**XmlDocument** に登録されたイベント ハンドラーを処理します。 詳細については、「[XmlNodeChangedEventArgs による XML ドキュメントのイベント処理](../../../../docs/standard/data/xml/event-handling-in-an-xml-document-using-the-xmlnodechangedeventargs.md)」を参照してください。 + + **XmlLinkedNode** クラスは **XmlNode** から継承しています。 その目的は、**XmlNode** の **PreviousSibling** と **NextSibling** という 2 つのメソッドをオーバーライドすることです。 これらのオーバーライドされたメソッドは、前後に兄弟を持つ **XmlCharacterData**、**XmlDeclaration**、**XmlDocumentType**、**XmlElement**、**XmlEntityReference**、および **XmlProcessingInstruction** クラスによって継承され、使用されます。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xml-document-object-model-dom.md b/docs/standard/data/xml/xml-document-object-model-dom.md new file mode 100644 index 00000000000..87497e29118 --- /dev/null +++ b/docs/standard/data/xml/xml-document-object-model-dom.md @@ -0,0 +1,90 @@ +--- +title: "XML ドキュメント オブジェクト モデル (DOM) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: b5e52844-4820-47c0-a61d-de2da33e9f54 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# XML ドキュメント オブジェクト モデル (DOM) +XML ドキュメント オブジェクト モデル \(DOM\) クラスは、XML ドキュメントのメモリ内表現です。 DOM を使用すると、XML ドキュメントの読み込み、操作、および変更をプログラムから実行できます。 **XmlReader** クラスも XML を読み込めますが、非キャッシュ、前方参照専用、読み取り専用のアクセスしか実行できません。 つまり、**XmlReader** には、属性の値または要素のコンテンツを編集する機能や、ノードを挿入したり削除したりする機能はありません。 DOM の主な機能は編集です。 XML データは、通常、メモリ上では構造的に表現されますが、実際の XML データをファイルに保存したり、別のオブジェクトから取り込む場合は、直線的な形式で格納されます。 XML データの例を次に示します。 + +## 入力 + +``` + + + + Carson + 31.95 + 05/01/2001 + + + MSPress + WA + + +``` + + この XML データが DOM 構造に読み込まれるとき、メモリがどのように構造化されるかを次の図に示します。 + + ![XML ドキュメントの構造](../../../../docs/standard/data/xml/media/xml-to-domtree.gif "XML\_To\_DOMTree") +XML ドキュメントの構造 + + 図中のそれぞれの円は、XML ドキュメント構造における 1 つのノードを表します。これは **XmlNode** オブジェクトと呼ばれます。 **XmlNode** オブジェクトは、DOM ツリーの基本オブジェクトです。 **XmlNode** を拡張する **XmlDocument** クラスは、たとえばドキュメントをメモリに読み込んだり、XML をファイルに保存するなど、ドキュメント全体を操作するメソッドをサポートしています。 さらに **XmlDocument** では、XML ドキュメント全体のノードを参照して操作する手段も提供されます。 **XmlNode** と **XmlDocument** は、いずれもパフォーマンスと使いやすさが向上しており、次の操作を実行するメソッドとプロパティを持っています。 + +- 要素ノード、エンティティ参照ノードなど、DOM に固有のノードへのアクセスと変更。 + +- 要素ノードのテキストなど、ノードに格納されている情報およびノード全体の取得。 + + > [!NOTE] + > アプリケーションが DOM の提供する構造や編集機能を必要としない場合は、**XmlReader** クラスと **XmlWriter** クラスを使って XML への非キャッシュ、前方参照専用のストリーム アクセスを実行できます。 詳細については、 および を参照してください。 + + **Node** オブジェクトには、適切に定義された基本的な特性と、メソッドおよびプロパティのセットが含まれます。 オブジェクトが持つ特性のいくつかを次に示します。 + +- ノードは 1 つの親ノードを持っています。親ノードはノードの 1 つ上のノードです。 ドキュメント ルートは最上位のノードであり、ドキュメント自身とドキュメント フラグメントしか格納されていないため、親ノードを持っていないノードはドキュメント ルートだけです。 + +- ほとんどのノードは、複数の子ノードを持つことができます。子ノードは、ノードの 1 つ下のノードです。 子ノードを持つことができるノード型の一覧を次に示します。 + + - **ドキュメント** + + - **DocumentFragment** + + - **EntityReference** + + - **要素** + + - **属性** + + **XmlDeclaration** ノード、**Notation** ノード、**Entity** ノード、**CDATASection** ノード、**Text** ノード、**Comment** ノード、**ProcessingInstruction** ノード、**DocumentType** ノードは子ノードを持ちません。 + +- 図中に **book** および **pubinfo** として同レベルに表現されているノードは兄弟です。 + + DOM の特性の 1 つは、属性の取り扱い方法にあります。 属性は、互いに親子関係や兄弟関係を持つノードではありません。 属性は要素ノードのプロパティと見なされ、名前と値ペアから構成されます。 たとえば、要素 `format="dollar` に関連付けられている `price`" という形式の XML データがある場合は、単語 `format` が名前になり、`format` 属性の値は `dollar` になります。 `format="dollar"`price ノードの **属性を取得するには、カーソルが 要素ノード上にあるときに `price`GetAttribute メソッドを呼び出します。** 詳細については、「[DOM の属性へのアクセス](../../../../docs/standard/data/xml/accessing-attributes-in-the-dom.md)」を参照してください。 + + XML をメモリに読み込むと、ノードが作成されます。 ただし、すべてのノードが同じタイプというわけではありません。 XML の要素の規則と構文は、処理命令の規則と構文とは異なります。 したがって、さまざまなデータが読み込まれるときに、個々のノードにノード型が割り当てられます。 このノード型によって、ノードの特性と機能が決定されます。 + + メモリに生成されるノード型の詳細については、「[XML ノードの種類](../../../../docs/standard/data/xml/types-of-xml-nodes.md)」を参照してください。 ノード ツリーに作成されるオブジェクトの詳細については、「[オブジェクト階層の XML データへのマップ](../../../../docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md)」を参照してください。 + + Microsoft では、XML ドキュメントの操作を容易にするために、W3C \(World Wide Web Consortium\) DOM Level 1 および Level 2 で規定されている API を拡張しています。 W3C の標準を完全にサポートする一方で、追加のクラス、メソッド、プロパティにより、W3C の XML DOM で実現できる以上の機能が付加されています。 新しいクラスを使用すると、リレーショナル データにアクセスし、ADO.NET との同期をとりながら、データを XML として公開できます。 詳細については、「[Dataset と XmlDataDocument の同期](../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md)」を参照してください。 + + DOM が最も役に立つのは、XML データをメモリに読み込み、その構造を変更したり、ノードを追加または削除したり、要素内のテキストとしてノードが保持しているデータを変更したりする場合です。 ただし、他のクラスも用意されており、シナリオによっては DOM より高速になる場合もあります。 XML に対して高速、非キャッシュ、前方参照専用のストリーム アクセスを行うには、**XmlReader** と **XmlWriter** を使用します。 カーソル モデルと **XPath** を使用したランダム アクセスが必要な場合は、**XPathNavigator** クラスを使用します。 + +## 参照 + [XML ノードの種類](../../../../docs/standard/data/xml/types-of-xml-nodes.md) + [オブジェクト階層の XML データへのマップ](../../../../docs/standard/data/xml/mapping-the-object-hierarchy-to-xml-data.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xml-element-and-attribute-name-verification-when-creating-new-nodes.md b/docs/standard/data/xml/xml-element-and-attribute-name-verification-when-creating-new-nodes.md new file mode 100644 index 00000000000..14e149948c8 --- /dev/null +++ b/docs/standard/data/xml/xml-element-and-attribute-name-verification-when-creating-new-nodes.md @@ -0,0 +1,28 @@ +--- +title: "新しいノードの作成時における XML 要素名および属性名の検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: b489f647-a175-4659-ada4-170058bb41d0 +caps.latest.revision: 5 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 5 +--- +# 新しいノードの作成時における XML 要素名および属性名の検証 +XML ドキュメント オブジェクト モデル \(DOM\) は、新しい要素ノードまたは属性ノードを作成するときに名前の有効性を確認します。 名前に無効な文字が含まれていると、例外がスローされます。 名前が正しくエンコードされ、有効であることを保証するには、**XmlConvert** クラスを使用して名前をエンコードし、アプリケーション レベルで名前をデコードする必要があります。 **XmlWriter** には、整形式の XML を生成するための追加の処理を行うメソッドが用意されています。 + +## 参照 + [XML ドキュメント オブジェクト モデル \(DOM\)](../../../../docs/standard/data/xml/xml-document-object-model-dom.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md b/docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md new file mode 100644 index 00000000000..a0df35337f7 --- /dev/null +++ b/docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md @@ -0,0 +1,60 @@ +--- +title: "XML とリレーショナル データおよび ADO.NET との統合 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: f6ebb1a1-f2ca-49b9-92c9-0150940cf6e6 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# XML とリレーショナル データおよび ADO.NET との統合 +**XmlDocument** の派生クラスである **XmlDataDocument** クラスには XML データが格納されます。 **XmlDataDocument** の利点は、リレーショナル データと階層データとを仲介できることです。 **DataSet** に連結できるのは **XmlDocument** であり、どちらのクラスも、それぞれが格納しているデータが変更されたときに、変更内容の同期をとることができます。 **DataSet** に連結した **XmlDocument** では XML をリレーショナル データと統合できるため、データ表現は XML でもリレーショナル形式でもかまいません。 両方の処理ができ、一方のデータ表現だけに制限されることもありません。 + + 2 つの形式でデータが使用できる利点は次のとおりです。 + +- XML ドキュメントの構造部分はデータセットに対応付けることができ、効率的な格納、インデックス付け、および検索ができる。 + +- リレーション形式で格納された XML データに対して、カーソル モデルを使用して、効率的な変換、検証、および移動ができる。 **XmlDocument** モデルに XML が格納されている場合よりも、リレーショナル構造の方が効率的に処理できる場合があります。 + +- **DataSet** に XML の一部を格納できる。 **XPath** または **XslTransform** を使用して、目的の要素や属性だけを **DataSet** に格納できます。 この場合は、抽出された部分的なデータに対して変更を行い、その変更を **XmlDataDocument** 内のデータに反映させることができます。 + + SQL サーバーから **DataSet** に読み込まれたデータを変換することもできます。 また、.NET Framework のクラスの形式で管理されている WinForm および WebForm のコントロールを、XML 入力ストリームからデータを読み込んだ **DataSet** に連結することもできます。 + + **XslTransform** のサポートの他に、**XmlDataDocument** は、リレーショナル データに対する **XPath** クエリと検証もサポートします。 基本的には、すべての XML サービスをリレーショナル データで利用でき、コントロールの連結やコード生成などのすべてのリレーショナル機能を XML に基づく構造化データで、XML の厳密性を損なうことなく利用できます。 + + **XmlDataDocument** は **XmlDocument** から継承されているため、W3C DOM が実装されています。 **XmlDataDocument** は、**DataSet** に関連付けられており、そのデータの一部を格納していますが、**XmlDocument** として使用する場合に制限や特別な対応が必要になることはありません。 **XmlDocument** を使用しているコードは、**XmlDataDocument** を使用する場合でも、修正せずに動作させることができます。 **DataSet** は、テーブル、列、リレーション、および制約を定義することで、データをリレーショナル形式で提示できる、スタンドアロンかつインメモリのユーザー データ ストアです。 + + XML データと **DataSet** の関係と、XML データと **XmlDataDocument** の関連との違いを次の図に示します。 + + ![XML データセット](../../../../docs/standard/data/xml/media/xmlintegrationwithrelationaldataandadodotnet.gif "xmlIntegrationWithRelationalDataAndADOdotNet") + + この図では、XML データは **DataSet** に直接読み込むことができ、XML をリレーショナルな方法で直接操作できることが示されています。 また、XML を DOM の派生クラスである **XmlDataDocument** に読み込み、その後、**DataSet** と同期させることができることも示されています。 **DataSet** と **XmlDataDocument** は、1 つのデータ セットを基にして同期がとられているため、一方のデータ ストアのデータを変更すると、他方のストアに反映されます。 + + **XmlDataDocument** は、**XmlDocument** のすべての編集機能と移動機能を継承します。 状況によっては、XML を直接 **DataSet** に読み込む方法よりも、**XmlDataDocument** とその継承された機能を使用して **DataSet** と同期する方法の方が適している場合があります。 **DataSet** にデータを読み込む場合に、どちらの方法を採用すればよいかを判断するための条件を次の表に示します。 + +|XML を DataSet に直接読み込む方がよい場合|XmlDataDocument と DataSet の同期をとる方がよい場合| +|---------------------------------|--------------------------------------------| +|**DataSet** のデータに対するクエリで、XPath よりも SQL を使用する方が簡単である。|**DataSet** のデータに対して XPath クエリが必要である。| +|ソース XML 内での要素の順序を保つ必要がない。|ソース XML 内での要素の順序を保つ必要がある。| +|要素間の空白や形式をソース XML で保持する必要がない。|空白や形式をソース XML で保持する必要がある。| + + **DataSet** に XML を直接読み込んだり、[DataSet](../../../../docs/framework/data/adonet/dataset-datatable-dataview/loading-a-dataset-from-xml.md) から XML を書き出す方法については、「[XML からの DataSet の読み込み](../../../../docs/framework/data/adonet/dataset-datatable-dataview/writing-dataset-contents-as-xml-data.md)」と「XML データとしての DataSet の書き込み」を参照してください。 + + **XmlDataDocument** から **DataSet** にデータを読み込む方法については、「[Dataset と XmlDataDocument の同期](../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md)」を参照してください。 + +## 参照 + [DataSet での XML の使用](../../../../docs/framework/data/adonet/dataset-datatable-dataview/using-xml-in-a-dataset.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xml-processing-options.md b/docs/standard/data/xml/xml-processing-options.md new file mode 100644 index 00000000000..8a94842e483 --- /dev/null +++ b/docs/standard/data/xml/xml-processing-options.md @@ -0,0 +1,48 @@ +--- +title: "XML の処理オプション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 33ced8ee-1745-4e71-8dee-ebe70ec067c7 +caps.latest.revision: 5 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 5 +--- +# XML の処理オプション +XML データの処理に使用できる Microsoft テクノロジの一覧については、次の表を参照してください。 + +## .NET Framework のオプション + +|**オプション**|**処理の種類**|**説明**| +|---------------|---------------|------------| +|[LINQ to XML](../../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-xml.md)
\( 名前空間\)|メモリ内|- .NET Framework の統合言語クエリ \(LINQ\) テクノロジに基づいています。
- オブジェクト、リレーショナル データ、および XML データに対して SQL と同じようにクエリを利用できます。
- 直観的なドキュメント作成および変換機能を提供します。
- このオプションは、新しいコードを記述する場合に使用します。| +||ストリーム ベース|- 高速、非キャッシュ、前方参照専用の XML データ アクセス手段を提供します。
- メソッドを使用してオブジェクトを作成し、 クラスを使用して、そのオブジェクトで有効にする一連の機能を指定できます。| +||ストリーム ベース|- 高速、非キャッシ、前方参照専用の XML データ生成手段を提供します。
- メソッドを使用してオブジェクトを作成し、 クラスを使用して、そのオブジェクトで有効にする一連の機能を指定できます。| +||メモリ内|- [W3C ドキュメント オブジェクト モデル \(DOM\) 勧告の DOM Level 1 Core](http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html) および [DOM Level 2 Core](http://www.w3.org/TR/DOM-Level-2-Core/) を実装しています。
- 使い慣れた DOM モデルに基づくメソッドとプロパティを使用して、ノードを作成、挿入、削除、および変更できます。
- このオプションは、W3C DOM を利用する既存のコードを変更する場合に使用します。| +||メモリ内|- カーソル モデルを利用する複数の編集オプションとナビゲーション機能を提供します。
- XML ドキュメントを オブジェクトまたは オブジェクトに格納できます。
- XML の読み取り専用処理で優れたパフォーマンスを発揮します。
- このオプションは、WXPath クエリや XSLT 変換を使用して既存のコードを変更する場合に使用します。| +||メモリ内|- XSL 変換を使用して XML データを変換するためのオプションを提供します。
- [XSLT コンパイラ \(xsltc.exe\)](../../../../docs/standard/data/xml/xslt-compiler-xsltc-exe.md) を使用すると、プリコンパイルした変換をアプリで参照できます。| + +## Win32 オプションと COM ベースのオプション + +|**オプション**|**説明**| +|---------------|------------| +|[XmlLite](http://go.microsoft.com/fwlink/?LinkId=93723)|- 高性能 XML アプリの構築に役立つ高速、安全、非キャッシュ、前方参照専用の XML パーサー。
- ダイナミック リンク ライブラリ \(DLL\) を使用できる任意の言語で動作します。C\+\+ の使用をお勧めします。| +|[MSXML](http://go.microsoft.com/fwlink/?LinkId=93722)|- Windows オペレーティング システムに付属する、XML 処理のための COM ベース テクノロジ。
- DOM をネイティブで実装し、XPath と XSLT をサポートしています。
- SAX2 イベントベース パーサーが含まれます。| + +## 参照 + [DOM モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-dom-model.md) + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XSLT コンパイラ \(xsltc.exe\)](../../../../docs/standard/data/xml/xslt-compiler-xsltc-exe.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xml-schema-object-model-overview.md b/docs/standard/data/xml/xml-schema-object-model-overview.md new file mode 100644 index 00000000000..0f9d94246a6 --- /dev/null +++ b/docs/standard/data/xml/xml-schema-object-model-overview.md @@ -0,0 +1,57 @@ +--- +title: "XML スキーマ オブジェクト モデルの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 896a1e12-5655-42c6-8cdd-89c12862b34b +caps.latest.revision: 4 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 4 +--- +# XML スキーマ オブジェクト モデルの概要 +Microsoft .NET Framework のスキーマ オブジェクト モデル \(SOM\) は豊富な機能を備えた API で、スキーマの作成、編集、および検証をプログラムで実行できます。 SOM は、ドキュメント オブジェクト モデル \(DOM\) が XML ドキュメント上で機能するのと同様に、XML スキーマ ドキュメント上で機能します。 XML スキーマ ドキュメントは有効な XML ファイルで、SOM に読み込まれると、スキーマに準拠した他の XML ドキュメントの構造および有効性に関する情報を伝えます。 + + スキーマは、特定のスキーマに対して XML ドキュメントの構造またはモデルを指定することによって XML ドキュメントのクラスを定義する、XML ドキュメントです。 スキーマは、XML ドキュメントの内容に対する制約を指定し、特定のスキーマと照合して有効と見なされるように、規定に準拠した XML ドキュメントが従う表現形式 \(規則または文法\) を記述します。 XML ドキュメントの検証は、ドキュメントがスキーマによって指定された文法に準拠しているかどうかを確認するプロセスです。 + + .NET Framework の SOM API を使用すると、スキーマの作成、編集、および検証に関する次の操作を行うことができます。 + +- 有効なスキーマをファイルから読み込み、ファイルへ保存します。 + +- 厳密に型指定されたクラスを使用し、メモリ内にスキーマを作成します。 + +- クラスと対話し、スキーマのキャッシュ、コンパイル、および取得を行います。 + +- クラスの メソッドと対話し、スキーマを基準として XML インスタンス ドキュメントを検証します。 + +- スキーマの作成および保守に使用するエディターを作成します。 + +- XML インスタンス ドキュメントの検証で使用するためにコンパイルと保存が可能なスキーマを動的に編集します。 + +## スキーマ オブジェクト モデル + SOM は、XML スキーマの要素に相当する 名前空間の広範囲にわたるクラスで構成されています。 たとえば、`...` 要素は クラスにマップしているため、`` 要素に格納できる情報はすべて クラスを使って表すことができます。 同様に、`...` 要素と `...` 要素は、それぞれ クラスと クラスにマップしています。 このマッピングは、次の図に示す 名前空間の XML スキーマ オブジェクト モデルを作成する XML スキーマのすべての要素に適用されます。 + + ![System.Xml.Schema オブジェクト モデル](../../../../docs/standard/data/xml/media/xmlschemaobjmodeloverview.png "XMLSchemaObjModelOverview") + + 名前空間の各クラスの詳細については、.NET Framework クラス ライブラリの 名前空間のリファレンス ドキュメントを参照してください。 + +## 参照 + [XML スキーマの読み取りと書き込み](../../../../docs/standard/data/xml/reading-and-writing-xml-schemas.md) + [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) + [XML スキーマの走査](../../../../docs/standard/data/xml/traversing-xml-schemas.md) + [XML スキーマの編集](../../../../docs/standard/data/xml/editing-xml-schemas.md) + [XML スキーマのインクルードまたはインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [スキーマのコンパイル後の情報セット](../../../../docs/standard/data/xml/post-schema-compilation-infoset.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xml-schema-object-model-som.md b/docs/standard/data/xml/xml-schema-object-model-som.md new file mode 100644 index 00000000000..4de66cf9d50 --- /dev/null +++ b/docs/standard/data/xml/xml-schema-object-model-som.md @@ -0,0 +1,46 @@ +--- +title: "XML スキーマ オブジェクト モデル (SOM) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: a897a599-ffd1-43f9-8807-e58c8a7194cd +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XML スキーマ オブジェクト モデル (SOM) +XML スキーマは、XML ドキュメント準拠の構造を作成し検証する、強力な複合ツールです。 リレーショナル データベースのデータ モデリングと同様に、スキーマでは XML ドキュメントの構造を定義する方法を提供しています。これは、ドキュメントで使用する要素と、これらの要素に固有のスキーマを有効にするために準拠する構造や型を指定することによって実現します。 + + スキーマ オブジェクト モデル \(SOM\) は、クラスのセットを 名前空間に提供し、それによってファイルからスキーマを読み取ったり、プログラムを使用してスキーマをメモリ内に作成したりできるようになります。 その後、スキーマの走査、編集、コンパイル、検証、またはファイルへの書き込みが可能になります。 + +## このセクションの内容 + [XML スキーマ オブジェクト モデルの概要](../../../../docs/standard/data/xml/xml-schema-object-model-overview.md) + スキーマ オブジェクト モデル \(SOM\) とその機能およびクラスについて説明します。 + + [XML スキーマの読み取りと書き込み](../../../../docs/standard/data/xml/reading-and-writing-xml-schemas.md) + ファイルまたは他のソースから XML スキーマの読み取りおよび書き込みを行う方法を説明します。 + + [XML スキーマの作成](../../../../docs/standard/data/xml/building-xml-schemas.md) + 名前空間のクラスを使用して、XML スキーマをメモリ内に作成する方法を説明します。 + + [XML スキーマの走査](../../../../docs/standard/data/xml/traversing-xml-schemas.md) + XML スキーマを走査して、SOM に格納されている要素、属性、および型にアクセスする方法を説明します。 + + [XML スキーマの編集](../../../../docs/standard/data/xml/editing-xml-schemas.md) + XML スキーマを編集する方法を説明します。 + + [XML スキーマのインクルードまたはインポート](../../../../docs/standard/data/xml/including-or-importing-xml-schemas.md) + 他の XML スキーマをインクルードまたはインポートして、インクルードまたはインポートするスキーマの構造を補足する方法を説明します。 \ No newline at end of file diff --git a/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemacollection.md b/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemacollection.md new file mode 100644 index 00000000000..6dfcb9561f2 --- /dev/null +++ b/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemacollection.md @@ -0,0 +1,221 @@ +--- +title: "XmlSchemaCollection を使用した XML スキーマ (XSD) 検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: ad0b5717-3d32-41ad-a4d7-072c3e492b82 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XmlSchemaCollection を使用した XML スキーマ (XSD) 検証 + を使用して、XML スキーマ定義言語 \(XSD\) スキーマを基準として XML ドキュメントを検証できます。 は、検証を行うたびにスキーマをメモリに読み込まなくてもいいように、スキーマをコレクションに格納することによってパフォーマンスの向上を図ります。 スキーマがスキーマ コレクション内にある場合、コレクション内のスキーマの位置を特定するには `schemaLocation` 属性を使用します。 + +> [!IMPORTANT] +> クラスは廃止されており、 クラスに置き換えられています。 の詳細については、「[スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md)」を参照してください。 + + データ ファイルのルート要素の例を次に示します。 + +``` + +``` + + この例では、`targetNamespace` 属性の値として、スキーマを に追加するときに使用される名前空間と同じ `urn:bookstore-schema` が指定されています。 + + XML スキーマを に追加するコード サンプルを次に示します。 + +```vb +Dim xsc As New XmlSchemaCollection() +' XML Schema. +xsc.Add("urn:bookstore-schema", schema) +reader = New XmlTextReader(filename) +vreader = New XmlValidatingReader(reader) +vreader.Schemas.Add(xsc) +``` + +```csharp +XmlSchemaCollection xsc = new XmlSchemaCollection(); +// XML Schema. +xsc.Add("urn:bookstore-schema", schema); +reader = new XmlTextReader (filename); +vreader = new XmlValidatingReader (reader); +vreader.Schemas.Add(xsc); +``` + + メソッドで `namespaceURI` プロパティを追加する場合、一般的に、`targetNamespace` 属性が使用されます。 スキーマを に追加する前に、null 参照を指定することもできます。 名前空間が関連付けられていないスキーマに対しては、空の文字列 \(""\) を使用する必要があります。 には、名前空間が関連付けられていないスキーマを 1 つだけ含めることができます。 + + XML スキーマ HeadCount.xsd を に追加し、HeadCount.xml を検証するコード サンプルを次に示します。 + +```vb +Imports System +Imports System.IO +Imports System.Xml +Imports System.Xml.Schema + +Namespace ValidationSample + + Class Sample + + Public Shared Sub Main() + Dim tr As New XmlTextReader("HeadCount.xml") + Dim vr As New XmlValidatingReader(tr) + + vr.Schemas.Add("xsdHeadCount", "HeadCount.xsd") + vr.ValidationType = ValidationType.Schema + AddHandler vr.ValidationEventHandler, AddressOf ValidationHandler + + While vr.Read() + End While + Console.WriteLine("Validation finished") + End Sub + ' Main + + Public Shared Sub ValidationHandler(sender As Object, args As ValidationEventArgs) + Console.WriteLine("***Validation error") + Console.WriteLine("Severity:{0}", args.Severity) + Console.WriteLine("Message:{0}", args.Message) + End Sub + ' ValidationHandler + End Class + ' Sample +End Namespace +' ValidationSample +``` + +```csharp +using System; +using System.IO; +using System.Xml; +using System.Xml.Schema; + +namespace ValidationSample +{ + class Sample + { + public static void Main() + { + XmlTextReader tr = new XmlTextReader("HeadCount.xml"); + XmlValidatingReader vr = new XmlValidatingReader(tr); + + vr.Schemas.Add("xsdHeadCount", "HeadCount.xsd"); + vr.ValidationType = ValidationType.Schema; + vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler); + + while(vr.Read()); + Console.WriteLine("Validation finished"); + } + + public static void ValidationHandler(object sender, ValidationEventArgs args) + { + Console.WriteLine("***Validation error"); + Console.WriteLine("\tSeverity:{0}", args.Severity); + Console.WriteLine("\tMessage :{0}", args.Message); + } + } +} +``` + + 検証対象の入力ファイル HeadCount.xml の内容について、次に概略を示します。 + +``` + + + Waldo Pepper + Red Pepper + +``` + + 検証の基準とする XML スキーマ ファイル HeadCount.xsd の内容について、次に概略を示します。 + +``` + + + + + + + + + +``` + + を受け取る を作成するコード サンプルを次に示します。 XML スキーマ sample4.xsd を基準として、入力ファイル sample4.xml を検証します。 + +```vb +Dim tr As New XmlTextReader("sample4.xml") +Dim vr As New XmlValidatingReader(tr) +vr.ValidationType = ValidationType.Schema +vr.Schemas.Add("datatypesTest", "sample4.xsd") +AddHandler vr.ValidationEventHandler, AddressOf ValidationCallBack +While vr.Read() + Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name) +End While +``` + +```csharp +XmlTextReader tr = new XmlTextReader("sample4.xml"); +XmlValidatingReader vr = new XmlValidatingReader(tr); +vr.ValidationType = ValidationType.Schema; + vr.Schemas.Add("datatypesTest", "sample4.xsd"); +vr.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack); +while(vr.Read()) { + Console.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name); + } +``` + + 検証対象とする入力ファイル sample4.xml の内容について、次に概略を示します。 + +``` + + + 123 + + +``` + + 検証の基準とする XML スキーマ ファイル sample4.xsd の内容について、次に概略を示します。 + +``` + + + + + + + + + + + + + + + + +``` + +## 参照 + + + + [XmlSchemaCollection スキーマのコンパイル](../../../../docs/standard/data/xml/xmlschemacollection-schema-compilation.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md b/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md new file mode 100644 index 00000000000..09c8af128ad --- /dev/null +++ b/docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md @@ -0,0 +1,53 @@ +--- +title: "XmlSchemaSet による XML スキーマ (XSD) 検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 359b10eb-ec05-4cc6-ac96-c2b060afc4de +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XmlSchemaSet による XML スキーマ (XSD) 検証 +XML ドキュメントは、 の XML スキーマ定義言語 \(XSD\) スキーマを基準として検証できます。 + +## XML ドキュメントの検証 + XML ドキュメントは、 クラスの メソッドを使用して検証します。 XML ドキュメントを検証するには、XML ドキュメントの検証に使用する XML スキーマ定義言語 \(XSD\) スキーマを持つ オブジェクトを作成します。 + +> [!NOTE] +> [LINQ to XML](../../../../ocs/visual-basic/programming-guide/concepts/linq/linq-to-xml.md) を使用する際、 名前空間に含まれる拡張メソッドによって、XSD ファイルを基準として XML ツリーを簡単に検証することができます。 LINQ to XML を使用した XML ドキュメントの検証に関する詳細については、「[How to: Validate Using XSD](../Topic/How%20to:%20Validate%20Using%20XSD%20\(LINQ%20to%20XML\).md)」を参照してください。 + + 独立したスキーマまたはスキーマのセット \( を使用\) を に追加するには、そのどちらかを メソッドにパラメーターとして渡します。 ドキュメントを検証する際には、ドキュメントの対象名前空間がスキーマ セット内のスキーマの対象名前空間と一致している必要があります。 + + XML ドキュメントのサンプルを次に示します。 + + [!code-xml[XSDInference Examples#5](../../../../samples/snippets/xml/VS_Snippets_Data/XSDInference Examples/XML/contosoBooks.xml#5)] + + XML ドキュメントのサンプルを検証するスキーマを次に示します。 + + [!code-xml[XSDInference Examples#6](../../../../samples/snippets/xml/VS_Snippets_Data/XSDInference Examples/XML/contosoBooks.xsd#6)] + + 以下のコード サンプルでは、 オブジェクトの プロパティに上記のスキーマが追加されます。 オブジェクトは、上記の XML ドキュメントを検証する オブジェクトの メソッドにパラメーターとして渡されます。 + + オブジェクトの プロパティが `Schema` に設定されて、 オブジェクトの メソッドによる XML ドキュメントの検証が行われます。 XML のドキュメントおよびスキーマの検証中に発見されたエラーによって発生する イベントまたは イベントを処理するために、 オブジェクトに を追加します。 + + [!code-cpp[XmlSchemaSetOverall Example#1](../../../../samples/snippets/cpp/VS_Snippets_Data/XmlSchemaSetOverall Example/CPP/xmlschemasetexample.cpp#1)] + [!code-csharp[XmlSchemaSetOverall Example#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaSetOverall Example/CS/xmlschemasetexample.cs#1)] + [!code-vb[XmlSchemaSetOverall Example#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaSetOverall Example/VB/xmlschemasetexample.vb#1)] + +## 参照 + [スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [XML スキーマの使用](../../../../docs/standard/data/xml/working-with-xml-schemas.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xml-type-support-implementation-notes.md b/docs/standard/data/xml/xml-type-support-implementation-notes.md new file mode 100644 index 00000000000..ecbdd317bfd --- /dev/null +++ b/docs/standard/data/xml/xml-type-support-implementation-notes.md @@ -0,0 +1,60 @@ +--- +title: "XML 型サポートの実装に関するメモ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 26b071f3-1261-47ef-8690-0717f5cd93c1 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XML 型サポートの実装に関するメモ +このトピックでは、認識しておく必要があるいくつかの実装上の詳細について説明します。 + +## リストのマッピング + 、および 型は、XML スキーマ定義言語 \(XSD\) のリスト型を表現するために使用されます。 + +## ユニオンのマッピング + ユニオン型は 型または 型を使用して表現されます。 したがって、変換前の型または変換後の型は常に または のどちらかである必要があります。 + + オブジェクトがリスト型を表す場合、このオブジェクトは入力文字列値をリストまたは複数のオブジェクトに変換します。 がユニオン型を表す場合は、ユニオンのメンバーの型として入力値が解析されます。 解析が失敗した場合は、変換が成功するか他のメンバーの型がなくなるまで、ユニオンの次のメンバーを使用して変換が試行されます。変換を試行するメンバーの型がなくなると、例外がスローされます。 + +## CLR 型と XML データ型の違い + CLR 型と XML データ型の間で発生する可能性のある不一致とその処理方法を次に示します。 + +> [!NOTE] +> `xs` プレフィックスは、http:\/\/www.w3.org\/2001\/XMLSchema と名前空間の URI. にマップされます。 + +### System.TimeSpan と xs:duration + `xs:duration` 型は、値は異なるが同等の継続時間値として、部分的な順序付けが行われます。 これは、たとえば 1 か月 \(P1M\) という `xs:duration` 型の値が、32 日 \(P32D\) より小さく、27 日 \(P27D\) より大きく、28 日、29 日または 30 日と同等であることを意味します。 + + クラスは、この部分的な順序付けをサポートしません。 その代わりに、1 年および 1 か月に特定の日数 \(それぞれ 365 日と 30 日\) を使用します。 + + `xs:duration` の詳細については、http:\/\/www.w3.org\/TR\/xmlschema\-2\/ にアクセスして『W3C XML Schema Part 2: Datatypes Recommendation』を参照してください。 + +### xs:time、グレオリオ暦の日付、および System.DateTime + `xs:time` 値が オブジェクトにマップされている場合、 フィールドは オブジェクトの日付プロパティ \( など\) を可能な最小の 値に初期化するために使用されます。 + + 同様に、`xs:gMonth`、`xs:gDay`、`xs:gYear`、`xs:gYearMonth`、および `xs:gMonthDay` のインスタンスは、 オブジェクトにマップされます。 オブジェクトの未使用のプロパティは、 の値で初期化されます。 + +> [!NOTE] +> 内容が `xs:gMonthDay` として型指定されている場合は、 値は信頼できません。 この場合、 値は常に 1,904 に設定されています。 + +### xs:anyURI および System.Uri + 相対 URI を表す `xs:anyURI` のインスタンスが にマップされている場合、 オブジェクトには基本 URI がありません。 + +## 参照 + [System.Xml クラスでの型のサポート](../../../../docs/standard/data/xml/type-support-in-the-system-xml-classes.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md b/docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md new file mode 100644 index 00000000000..ff8a9449673 --- /dev/null +++ b/docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md @@ -0,0 +1,42 @@ +--- +title: "XslTransform への XmlDataDocument の入力 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: a0b536b6-cdb3-4a44-86c2-3b2ebc7bd4c9 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# XslTransform への XmlDataDocument の入力 +> [!NOTE] +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + Microsoft [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] は、XML ドキュメント内のデータにアクセスするための XML ドキュメント オブジェクト モデル \(DOM\) を実装しているほか、XML ドキュメント内で読み込み、書き込み、移動を行うためのさまざまなクラスも実装しています。 名前空間にある は、 内のデータへのリレーショナル アクセス機能およびリレーショナル データとの同期機能を備えています。 のリレーショナル表現を介して構造化 XML を表示すると同時に操作したり、 の DOM 表現を介して半構造化 XML を操作したりすることができます。 したがって、 は、XML 環境とリレーショナル環境の境界を越えて機能します。 + + データがリレーショナル構造に格納されている場合、そのデータを XSLT 変換への入力として使用するには、そのリレーショナル データを に読み込み、 に関連付けます。 への入力である は、 インターフェイスを介して に実装されます。 リレーショナル データを受け取り、それを に読み込み、 内の同期機能を利用することで、そのリレーショナル データに対する XSLT 変換を実行できます。 + + リレーショナル データへの変換の適用については、「[DataSet への XSLT 変換の適用](../../../../docs/framework/data/adonet/dataset-datatable-dataview/applying-an-xslt-transform-to-a-dataset.md)」を参照してください。 + +## 参照 + + [DataSet と XmlDataDocument の同期](../../../../docs/framework/data/adonet/dataset-datatable-dataview/dataset-and-xmldatadocument-synchronization.md) + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [変換における XPathNavigator](../../../../docs/standard/data/xml/xpathnavigator-in-transformations.md) + [変換における XPathNodeIterator](../../../../docs/standard/data/xml/xpathnodeiterator-in-transformations.md) + [XslTransform への XPathDocument の入力](../../../../docs/standard/data/xml/xpathdocument-input-to-xsltransform.md) + [XslTransform への XmlDocument の入力](../../../../docs/standard/data/xml/xmldocument-input-to-xsltransform.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xmldocument-input-to-xsltransform.md b/docs/standard/data/xml/xmldocument-input-to-xsltransform.md new file mode 100644 index 00000000000..24c64851414 --- /dev/null +++ b/docs/standard/data/xml/xmldocument-input-to-xsltransform.md @@ -0,0 +1,63 @@ +--- +title: "XslTransform への XmlDocument の入力 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 97115892-410a-4657-ab47-1e14dfba73f8 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XslTransform への XmlDocument の入力 + クラスは、XML ドキュメントの編集機能を持っています。 XML を メソッドに送信する前に編集または変更する必要がある場合は、XML を に読み込み、編集し、 に送信します。 + +> [!NOTE] +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + インターフェイスを実装しているため、ドキュメントを編集した後で メソッドに渡すことができます。 + + は編集機能を持っているのに対して、 は内部ストレージを利用して XPath \(XML Path Language\) クエリに最適化されているため、 クラスを変換への入力として使用する方法は、 を XSLT \(Extensible Stylesheet Language for Transformations\) 変換に使用する方法より動作が遅くなります。 + +## 例 + に渡し、出力を に送信するコード サンプルを次に示します。 + +```vb +Dim doc as XmlDocument = new XmlDocument() +doc.Load("books.xml") +Dim trans As XslTransform = new XslTransform() +trans.Load("book.xsl") +Dim rdr As XmlReader = trans.Transform(doc, Nothing, Nothing) +while (rdr.Read()) +end while +``` + +```csharp +XmlDocument doc = new XmlDocument(); +doc.Load("books.xml"); +XslTransform trans = new XslTransform(); +trans.Load("book.xsl"); +XmlReader rdr = trans.Transform(doc, null, null); +while (rdr.Read()) {} +``` + +## 参照 + + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [変換における XPathNavigator](../../../../docs/standard/data/xml/xpathnavigator-in-transformations.md) + [変換における XPathNodeIterator](../../../../docs/standard/data/xml/xpathnodeiterator-in-transformations.md) + [XslTransform への XPathDocument の入力](../../../../docs/standard/data/xml/xpathdocument-input-to-xsltransform.md) + [XslTransform への XmlDataDocument の入力](../../../../docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xmlschemacollection-schema-compilation.md b/docs/standard/data/xml/xmlschemacollection-schema-compilation.md new file mode 100644 index 00000000000..5e431c8874e --- /dev/null +++ b/docs/standard/data/xml/xmlschemacollection-schema-compilation.md @@ -0,0 +1,68 @@ +--- +title: "XmlSchemaCollection スキーマのコンパイル | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 76f28770-7126-428f-9ed5-7b5ae8bad5ee +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# XmlSchemaCollection スキーマのコンパイル +**XmlSchemaCollection** は、XDR \(XML\-Data Reduced\) スキーマや XML スキーマ定義言語 \(XSD\) スキーマを格納および検証できるキャッシュ \(ライブラリ\) です。 **XmlSchemaCollection** は、ファイルや URL からスキーマにアクセスしなくて済むようにスキーマをメモリにキャッシュすることによって、パフォーマンスの向上を図ります。 + +> [!NOTE] +> **XmlSchemaCollection** クラスには XDR スキーマと XML スキーマの両方が格納されますが、**XmlSchema** オブジェクトを受け取ったり返したりするメソッドおよびプロパティは XML スキーマのみをサポートします。 + +> [!IMPORTANT] +> クラスは廃止されており、 クラスに置き換えられています。 の詳細については、「[スキーマをコンパイルするための XmlSchemaSet](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md)」を参照してください。 + +## コレクションへのスキーマの追加 + スキーマを **XmlSchemaCollection** に読み込むには、そのコレクションの **Add** メソッドを使用します。読み込み時に、スキーマは名前空間 URI に関連付けられます。 XML スキーマの場合、通常、この名前空間 URI がスキーマのターゲット名前空間になります。 また、XDR スキーマの場合は、この名前空間 URI は、スキーマがコレクションに追加されたときに指定された名前空間です。 + +## コレクション内のスキーマの確認 + スキーマがコレクション内にあるかどうかを確認するには、**Contains** メソッドを使用します。 **Contains** メソッドは、**XmlSchema** オブジェクト \(XML スキーマ専用\) またはスキーマに関連付けられた名前空間 URI を表す文字列 \(XML スキーマと XDR スキーマ用\) のいずれかを受け取ります。 + +## コレクションからのスキーマの取得 + コレクションからスキーマを取得するには、**Item** プロパティを使用します。 **Item** プロパティは、スキーマに関連付けられた名前空間 URI \(通常は、そのスキーマのターゲット名前空間\) を表す文字列を受け取り、**XmlSchema** オブジェクトを返します。 **Item** プロパティは、XML スキーマにだけ適用されます。 XDR スキーマの場合は、使用できるオブジェクト モデルがないため、戻り値は常に null 参照です。 + +## XmlSchemaCollection を使用した XML ドキュメントの検証 + **XmlSchemaCollection** を使用して XML インスタンス ドキュメントを検証するには、**XmlSchemaCollection** オブジェクトを作成し、開発者が作成したスキーマをそのコレクションに追加し、**XmlValidatingReader** の **Schemas** プロパティを設定して、作成した **XmlSchemaCollection** をその **XmlValidatingReader** に割り当てます。 + +### パフォーマンスの向上 + 同じスキーマを基準として複数のドキュメントを検証する場合は、**XmlSchemaCollection** を使用することをお勧めします。このコレクションを使用すると、そのスキーマをメモリ内にキャッシュしてパフォーマンスの向上を図ることができます。 + + **XmlSchemaCollection** オブジェクトを作成し、そのコレクションにスキーマを追加し、**Schemas** プロパティを設定するコード サンプルを次に示します。 + +```vb +Dim tr as XmlTextReader = new XmlTextReader("Books.xml") +Dim vr as XmlValidatingReader = new XmlValidatingReader(tr) +Dim xsc as XmlSchemaCollection = new XmlSchemaCollection +xsc.Add("urn:bookstore-schema", "Books.xsd") +vr.Schemas.Add(xsc) +``` + +```csharp +XmlTextReader tr = new XmlTextReader("Books.xml"); +XmlValidatingReader vr = new XmlValidatingReader(tr); +XmlSchemaCollection xsc = new XmlSchemaCollection(); +xsc.Add("urn:bookstore-schema", "Books.xsd"); +vr.Schemas.Add(xsc); +``` + +## 参照 + [XmlSchemaCollection を使用した XDR 検証](../../../../docs/standard/data/xml/xdr-validation-with-xmlschemacollection.md) + [XmlSchemaCollection を使用した XML スキーマ \(XSD\) 検証](../../../../docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemacollection.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xmlschemaset-for-schema-compilation.md b/docs/standard/data/xml/xmlschemaset-for-schema-compilation.md new file mode 100644 index 00000000000..67dc108586b --- /dev/null +++ b/docs/standard/data/xml/xmlschemaset-for-schema-compilation.md @@ -0,0 +1,269 @@ +--- +title: "スキーマをコンパイルするための XmlSchemaSet | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 55c4b175-3170-4071-9d60-dd5a42f79b54 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# スキーマをコンパイルするための XmlSchemaSet +XML スキーマ定義言語 \(XSD\) スキーマの格納と検証が可能なキャッシュである について説明します。 + +## XmlSchemaSet クラス + は、XML スキーマ定義言語 \(XSD\) スキーマの格納と検証が可能なキャッシュです。 + + Version 1.0 では、XML スキーマはスキーマのライブラリとして クラスに読み込まれました。 Version 2.0 では、 クラスおよび クラスは廃止され、それぞれ メソッドおよび クラスによって置き換えられています。 + + は、標準との互換性、パフォーマンス、廃止された Microsoft XDR \(XML\-Data Reduced\) スキーマ形式など、多くの問題を解決するために導入されました。 + + 以下は、 クラスと クラスの比較です。 + +|XmlSchemaCollection|XmlSchemaSet| +|-------------------------|------------------| +|Microsoft XDR と W3C XML スキーマをサポート。|W3C XML スキーマだけをサポート。| +|スキーマは、 メソッドの呼び出し時にコンパイルされます。|スキーマは、 メソッドの呼び出し時にコンパイルされません。 これによって、スキーマ ライブラリ作成時のパフォーマンスが向上します。| +|各スキーマが個別のコンパイル済みバージョンを生成するため、"スキーマ アイランド" が発生する可能性があります。結果として、すべての include および import はそのスキーマ内だけにスコープ設定されます。|コンパイル済みスキーマは、1 つの論理スキーマ \(スキーマの集合を 1 つ\) を生成します。 1 つのスキーマ内の、その集合にインポートされ追加されるすべてのスキーマは、集合自体に直接追加されます。 これは、すべてのスキーマに対して、すべての型を使用できることを意味しています。| +|コレクション内では、特定の対象名前空間に対して 1 つのスキーマだけが存在可能です。|型の競合がない限り、同じ対象名前空間に対して複数のスキーマを追加できます。| + +## XmlSchemaSet への移行 + 次のサンプル コードでは、廃止された クラスから新しい クラスへの移行のガイドを提供します。 このコード サンプルは、次に挙げるこれら 2 つのクラスの主な相違点を説明するものです。 + +- クラスの メソッドとは異なり、スキーマは メソッド呼び出し時にはコンパイルされません。 サンプル コード内では、 メソッドが明示的に呼び出されます。 + +- を繰り返すには、 プロパティを使用する必要があります。 + + 廃止された のコード サンプルを次に示します。 + +```vb +Dim schemaCollection As XmlSchemaCollection = New XmlSchemaCollection() +schemaCollection.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd") +schemaCollection.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd") + +Dim schema As XmlSchema + +For Each schema in schemaCollection + + Console.WriteLine(schema.TargetNamespace) + +Next +``` + +```csharp +XmlSchemaCollection schemaCollection = new XmlSchemaCollection(); +schemaCollection.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd"); +schemaCollection.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd"); + +foreach(XmlSchema schema in schemaCollection) +{ + Console.WriteLine(schema.TargetNamespace); +} +``` + + 対応する のコード サンプルを次に示します。 + +```vb +Dim schemaSet As XmlSchemaSet = New XmlSchemaSet() +schemaSet.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd") +schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd") +schemaSet.Compile() + +Dim schema As XmlSchema + +For Each schema in schemaSet.Schemas() + + Console.WriteLine(schema.TargetNamespace) + +Next +``` + +```csharp +XmlSchemaSet schemaSet = new XmlSchemaSet(); +schemaSet.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd"); +schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd"); +schemaSet.Compile(); + +foreach(XmlSchema schema in schemaSet.Schemas()) +{ + Console.WriteLine(schema.TargetNamespace); +} +``` + +## スキーマの追加と取り出し + スキーマは メソッドを使用して に追加されます。 スキーマが に追加される場合、そのスキーマは対象名前空間の URI に関連付けられます。 対象名前空間の URI は、 メソッドへのパラメーターとして指定するか、名前空間が指定されていない場合、 がスキーマ内に定義されている名前空間を使用するかのどちらかです。 + + スキーマは プロパティを使用して から取り出されます。 プロパティでは、 に含まれる オブジェクトに対して繰り返すことができます。 プロパティは、 に含まれるすべての オブジェクトを返すか、または対象名前空間のパラメーターが指定された場合、その名前空間に属するすべての オブジェクトを返すかのどちらかです。 対象名前空間として `null` が指定された場合、 プロパティは名前空間のないスキーマをすべて返します。 + + 次の例では、`http://www.contoso.com/books` 名前空間内の `books.xsd` スキーマを に追加し、`http://www.contoso.com/books` 名前空間に属しているすべてのスキーマを から取り出した後、それらのスキーマを に書き出します。 + +```vb +Dim schemaSet As XmlSchemaSet = New XmlSchemaSet +schemaSet.Add("http://www.contoso.com/books", "books.xsd") + +Dim schema As XmlSchema + +For Each schema In schemaSet.Schemas("http://www.contoso.com/books") + + schema.Write(Console.Out) + +Next +``` + +```csharp +XmlSchemaSet schemaSet = new XmlSchemaSet(); +schemaSet.Add("http://www.contoso.com/books", "books.xsd"); + +foreach (XmlSchema schema in schemaSet.Schemas("http://www.contoso.com/books")) +{ + schema.Write(Console.Out); +} +``` + + オブジェクトのスキーマの追加と取り出しに関する詳細については、 メソッドおよび プロパティのリファレンス ドキュメントを参照してください。 + +## スキーマのコンパイル + 内のスキーマは、 メソッドによって、1 つの論理スキーマにコンパイルされます。 + +> [!NOTE] +> 廃止された クラスとは異なり、スキーマは メソッドの呼び出し時にはコンパイルされません。 + + メソッドの実行が成功した場合、 プロパティは `true` に設定されます。 + +> [!NOTE] +> プロパティは、スキーマが 内にあるときに編集されても、影響を受けません。 内の個別のスキーマの更新は追跡されません。 その結果、 プロパティは、 のスキーマが追加または削除されない限り、 に含まれるスキーマの 1 つが変更されていても、`true` になる可能性があります。 + + 次の例では、`books.xsd` ファイルを に追加した後、 メソッドを呼び出します。 + +```vb +Dim schemaSet As XmlSchemaSet = New XmlSchemaSet() +schemaSet.Add("http://www.contoso.com/books", "books.xsd") +schemaSet.Compile() +``` + +```csharp +XmlSchemaSet schemaSet = new XmlSchemaSet(); +schemaSet.Add("http://www.contoso.com/books", "books.xsd"); +schemaSet.Compile(); +``` + + 内のスキーマのコンパイルに関する詳細については、 メソッドのリファレンス ドキュメントを参照してください。 + +## スキーマの再処理 + 内のスキーマの再処理は、 メソッド呼び出し時にスキーマに対して実行されるすべての前処理手順を実行します。 メソッドの呼び出しが成功した場合、 プロパティは `false` に設定されます。 + + のコンパイル後、 内のスキーマが変更された場合は、 メソッドを使用する必要があります。 + + 次の例は、 メソッドを使用して に追加されたスキーマの再処理を示しています。 メソッドを使用して がコンパイルされた後、 に追加されたスキーマが変更された場合、 内のスキーマは変更されているのに、 プロパティは `true` に設定されています。 メソッドの呼び出しは、 メソッドによって実行されるすべての前処理を実行し、 プロパティを `false` に設定します。 + +```vb +Dim schemaSet As XmlSchemaSet = New XmlSchemaSet() +Dim schema As XmlSchema = schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd") +schemaSet.Compile() + +Dim element As XmlSchemaElement = New XmlSchemaElement() +schema.Items.Add(element) +element.Name = "book" +element.SchemaTypeName = New XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema") + +schemaSet.Reprocess(schema) +``` + +```csharp +XmlSchemaSet schemaSet = new XmlSchemaSet(); +XmlSchema schema = schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd"); +schemaSet.Compile(); + +XmlSchemaElement element = new XmlSchemaElement(); +schema.Items.Add(element); +element.Name = "book"; +element.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema"); + +schemaSet.Reprocess(schema); +``` + + 内のスキーマの前処理に関する詳細については、 メソッドのリファレンス ドキュメントを参照してください。 + +## スキーマの確認 + メソッドを使用して、 内にスキーマが含まれているかどうかを確認できます。 メソッドは、確認対象に対象名前空間または オブジェクトのどちらかを受け取ります。 どちらの場合も、 メソッドは、 内にスキーマが含まれている場合 `true` を、それ以外の場合 `false` を返します。 + + スキーマの確認に関する詳細については、 メソッドのリファレンス ドキュメントを参照してださい。 + +## スキーマの削除 + スキーマは および メソッドを使用して から削除されます。 メソッドは、指定されたスキーマを から削除し、 メソッドは、指定されたスキーマとそのスキーマがインポートしているすべてのスキーマを から削除します。 + + 以下は、複数のスキーマを に追加してから、 メソッドを使用して、それらのスキーマの 1 つとそのスキーマがインポートしているすべてのスキーマを削除する例を示しています。 + +```vb +Dim schemaSet As XmlSchemaSet = New XmlSchemaSet() +schemaSet.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd") +schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd") +schemaSet.Add("http://www.contoso.com/music", "http://www.contoso.com/music.xsd") + +Dim schema As XmlSchema + +For Each schema In schemaSet.Schemas() + + If schema.TargetNamespace = "http://www.contoso.com/music" Then + schemaSet.RemoveRecursive(schema) + End If + +Next +``` + +```csharp +XmlSchemaSet schemaSet = new XmlSchemaSet(); +schemaSet.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd"); +schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd"); +schemaSet.Add("http://www.contoso.com/music", "http://www.contoso.com/music.xsd"); + +foreach (XmlSchema schema in schemaSet.Schemas()) +{ + if (schema.TargetNamespace == "http://www.contoso.com/music") + { + schemaSet.RemoveRecursive(schema); + } +} +``` + + からのスキーマの削除に関する詳細については、 メソッドおよび メソッドのリファレンス ドキュメントを参照してください。 + +## スキーマの解決と xs:import + 次の例は、 内で、指定された名前空間に対して複数のスキーマが存在するときに、スキーマをインポートする場合の の動作を示しています。 + + 例として、`http://www.contoso.com` 名前空間に関する複数のスキーマを含む を考えます。 次の `xs:import` ディレクティブを持つスキーマが に追加されます。 + +``` + +``` + + は、`http://www.contoso.com/schema.xsd` URL から読み込むことによって、`http://www.contoso.com` 名前空間に関するスキーマをインポートしようとします。 `http://www.contoso.com` 名前空間に関する他のスキーマ ドキュメントが 内にある場合でも、インポート元のスキーマでは、スキーマ宣言とそのスキーマ ドキュメント内で定義した型だけしか使用できません。 `schema.xsd` ファイルが `http://www.contoso.com/schema.xsd` URL で見つからない場合、`http://www.contoso.com` 名前空間に関するスキーマは、インポート元のスキーマにインポートされません。 + +## XML ドキュメントの検証 + XML ドキュメントは、 内のスキーマに対して検証できます。 スキーマを オブジェクトの プロパティに追加するか、 オブジェクトの プロパティに追加することによって、XML ドキュメントを検証します。 次に、 オブジェクトを作成して、XML ドキュメントを検証するために、 オブジェクトが クラスの メソッドによって使用されます。 + + による XML ドキュメントの検証に関する詳細については、「[XmlSchemaSet による XML スキーマ \(XSD\) 検証](../../../../docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md)」を参照してください。 + +## 参照 + + + + + + + + [XmlSchemaSet as a Schema Cache](../../../../docs/standard/data/xml/xmlschemaset-for-schema-compilation.md) + [XmlSchemaSet による XML スキーマ \(XSD\) 検証](../../../../docs/standard/data/xml/xml-schema-xsd-validation-with-xmlschemaset.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xmlschemavalidator-push-based-validation.md b/docs/standard/data/xml/xmlschemavalidator-push-based-validation.md new file mode 100644 index 00000000000..a259258532d --- /dev/null +++ b/docs/standard/data/xml/xmlschemavalidator-push-based-validation.md @@ -0,0 +1,457 @@ +--- +title: "XmlSchemaValidator のプッシュ ベースの検証 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 911d4460-dd91-4958-85b2-2ca3299f9ec6 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 1 +--- +# XmlSchemaValidator のプッシュ ベースの検証 + は、プッシュ ベース方式で、XML スキーマを基準として XML データを検証する、効率的かつ高性能なしくみを提供します。 たとえば、 クラスでは、XML 情報セットを XML ドキュメントにシリアル化してから検証型 XML リーダーを使用してドキュメントを再解析する必要なしに、情報セットをそのまま検証することができます。 + + クラスは、カスタム XML データ ソースに対する検証エンジンの構築や検証型 XML ライターを構築する 1 つの手段とするなど、上級のシナリオで使用することができます。 + + 次は、 クラスを使用して、`contosoBooks.xml` ファイルを `contosoBooks.xsd` スキーマに対して検証する一例です。 この例では、 クラスを使用して、`contosoBooks.xml` ファイルを逆シリアル化し、ノードの値を クラスのメソッドに渡します。 + +> [!NOTE] +> この例は、このトピックの各セクションを通じて使用されます。 + + [!code-csharp[XmlSchemaValidatorExamples#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XmlSchemaValidatorExamples/CS/XmlSchemaValidatorExamples.cs#1)] + [!code-vb[XmlSchemaValidatorExamples#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XmlSchemaValidatorExamples/VB/XmlSchemaValidatorExamples.vb#1)] + + この例は、`contosoBooks.xml` ファイルを入力として使用します。 + + [!code-xml[XPathXMLExamples#2](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xml#2)] + + また、`contosoBooks.xsd` ファイルも入力として使用します。 + + [!code-xml[XPathXMLExamples#3](../../../../samples/snippets/xml/VS_Snippets_Data/XPathXMLExamples/XML/contosoBooks.xsd#3)] + +## XmlSchemaValidator を使用した XML データの検証 + XML 情報セットの検証を開始するには、最初に コンストラクターを使用して クラスの新しいインスタンスを初期化する必要があります。 + + コンストラクターはパラメーターとして 値の他に、、および オブジェクトをパラメーターとして取ります。 オブジェクトは、スキーマの名前空間や XML 名前空間などの既知の名前空間文字列を分解するために使用され、単純コンテンツの検証中に、 メソッドに渡されます。 オブジェクトには XML 情報セットを検証するために使用される XML スキーマが含まれています。 オブジェクトは検証中に遭遇する名前空間を解決するために使用されます。 値は、検証の特定の機能を無効にするために使用されます。 + + コンストラクターの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +### 検証の初期化 + オブジェクトの構築後に、 オブジェクトの状態の初期化に使用される 2 つのオーバーロードされた メソッドがあります。 次が、その 2 つの メソッドです。 + +- + +- + + 既定の メソッドは オブジェクトを開始状態に初期化し、オーバーロードされた メソッドは をパラメーターとして取り、部分検証のために オブジェクトを開始状態に初期化します。 + + 両方の メソッドは、 オブジェクトが構築された直後、または の呼び出し後のみ呼び出し可能です。 + + メソッドの例については、最初の例を参照してください。 メソッドの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +#### 部分検証 + をパラメーターとして取る メソッドは、部分検証のために オブジェクトを開始状態に初期化します。 + + 次の例で は、部分検証のために メソッドを使用して初期化されます。 オブジェクトの プロパティによって返された コレクション内の によってスキーマ要素を選択することにより、`orderNumber` スキーマ要素が渡されます。 オブジェクトは、次にこの特定の要素を検証します。 + +```vb +Dim schemaSet As XmlSchemaSet = New XmlSchemaSet() +schemaSet.Add(Nothing, "schema.xsd") +schemaSet.Compile() +Dim nameTable As NameTable = New NameTable() +Dim manager As XmlNamespaceManager = New XmlNamespaceManager(nameTable) + +Dim validator As XmlSchemaValidator = New XmlSchemaValidator(nameTable, schemaSet, manager, XmlSchemaValidationFlags.None) +validator.Initialize(schemaSet.GlobalElements.Item(New XmlQualifiedName("orderNumber"))) + +validator.ValidateElement("orderNumber", "", Nothing) +validator.ValidateEndOfAttributes(Nothing) +validator.ValidateText("123") +validator.ValidateEndElement(Nothing) +``` + +```csharp +XmlSchemaSet schemaSet = new XmlSchemaSet(); +schemaSet.Add(null, "schema.xsd"); +schemaSet.Compile(); +NameTable nameTable = new NameTable(); +XmlNamespaceManager manager = new XmlNamespaceManager(nameTable); + +XmlSchemaValidator validator = new XmlSchemaValidator(nameTable, schemaSet, manager, XmlSchemaValidationFlags.None); +validator.Initialize(schemaSet.GlobalElements[new XmlQualifiedName("orderNumber")]); + +validator.ValidateElement("orderNumber", "", null); +validator.ValidateEndOfAttributes(null); +validator.ValidateText("123"); +validator.ValidateEndElement(null); +``` + + この例は、次の XML スキーマを入力として使用します。 + + `` + + `` + + `` + + メソッドの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +### 追加のスキーマの追加 + クラスの メソッドは、検証中に使用するスキーマ セットに 1 つの XML スキーマを追加するために使用します。 メソッドは、XML 情報セットの検証中に、インライン XML スキーマに遭遇した場合の効果をシミュレートするために使用できます。 + +> [!NOTE] +> パラメーターの対象名前空間は、 オブジェクトが既に遭遇したすべての要素と属性の名前空間と一致してはなりません。 +> +> コンストラクターに 値がパラメーターとして渡されなかった場合、 メソッドは何も行いません。 + + メソッドの結果は、検証中の現在の XML ノードのコンテキストに依存します。 検証コンテキストの詳細については、このトピックの「検証コンテキスト」を参照してください。 + + メソッドの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +### 要素、属性、およびコンテンツの検証 + クラスは、XML 情報セット中の要素、属性、およびコンテンツを XML スキーマに対して検証するために使用するいくつかのメソッドを提供します。 各メソッドに関する説明を次の表に示します。 + +|メソッド|説明| +|----------|--------| +||現在のコンテキスト中の要素名を検証します。| +||現在の要素コンテキスト中の属性を検証します。または メソッドにパラメーターとして渡された オブジェクトに対して属性を検証します。| +||要素コンテキスト中の必須属性がすべて揃っていることを検証し、要素の子コンテンツを検証するために オブジェクトを準備します。| +||現在の要素コンテキスト中でテキストが許されるかどうかを検証し、現在の要素に単純コンテンツがある場合は検証のためにテキストを収集します。| +||現在の要素コンテキスト中で空白が許されるかどうかを検証し、現在の要素に単純コンテンツがある場合は検証のために空白を収集します。| +||要素のテキスト コンテンツが、単純コンテンツの要素のデータ型に従って有効なことを検証し、現在の要素のコンテンツが複合コンテンツの要素として完全であることを検証します。| +||現在の要素コンテンツの検証をスキップし、親要素のコンテキストでコンテンツの検証するために オブジェクトを準備します。| +||検証を終了し、 検証オプションが設定されている場合は XML ドキュメント全体について ID 制約をチェックします。| + +> [!NOTE] +> クラスには、上の表で定義された各メソッド呼び出しの発生と順序を強制する、定義済みの状態遷移があります。 クラスの状態遷移の詳細は、このトピックの「XmlSchemaValidator の状態遷移」セクションで説明されています。 + + XML 情報セット内の要素、属性、およびコンテンツの検証に使用されるメソッドの例については、前のセクションの例を参照してください。 これらのメソッドの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +#### XmlValueGetter を使用したコンテンツの検証 + `delegate` は、属性、テキスト、または空白のノードの値を、属性、テキスト、または空白ノードの XML スキーマ定義言語 \(XSD\) 型と互換性のある共通言語ランタイム \(CLR\) 型として渡すために使用できます。 `delegate` は、属性、テキスト、または空白のノードの CLR 値が既に使用可能な場合、それを `string` に変換してから検証のために再度解析する手間を省くために役立ちます。 + + 、および メソッドはオーバーロードされ、属性、テキスト、または空白ノードの値を `string` または `delegate` として受け入れます。 + + クラスの次のメソッドは、 `delegate` をパラメーターとして受け入れます。 + +- + +- + +- + + 次は、最初の クラスの例から取られた `delegate` の例です。 `delegate` は属性の値を オブジェクトとして返します。 から返された オブジェクトを検証するために、 オブジェクトは、最初にそれを属性のデータ型の ValueType \(ValueType は XSD 型に対する既定の CLR の割り当て\) に変換し、次に変換された値のファセットをチェックします。 + +```vb +Shared dateTimeGetterContent As Object + +Shared Function dateTimeGetterHandle() As Object + Return dateTimeGetterContent +End Function + +Shared Function dateTimeGetter(ByVal dateTime As DateTime) As XmlValueGetter + dateTimeGetterContent = dateTime + Return New XmlValueGetter(AddressOf dateTimeGetterHandle) +End Function +``` + +```csharp +static object dateTimeGetterContent; + +static object dateTimeGetterHandle() +{ + return dateTimeGetterContent; +} + +static XmlValueGetter dateTimeGetter(DateTime dateTime) +{ + dateTimeGetterContent = dateTime; + return new XmlValueGetter(dateTimeGetterHandle); +} +``` + + `delegate` の例については、最初の例を参照してください。 `delegate` の詳細については、 および クラスのリファレンス ドキュメントを参照してください。 + +#### スキーマの検証後の情報 + クラスは クラスによって検証された 1 つの XML ノードのスキーマ検証後情報のいくつかを表します。 クラスの種々のメソッドは オブジェクトをオプションの \(`null`\) `out` パラメーターとして受け入れます。 + + 検証が成功した後、 オブジェクトには検証の結果が設定されています。 たとえば、 メソッドを使用した検証の成功時には、 オブジェクトの \(指定した場合\) 、および プロパティに検証結果が設定されています。 + + 次の クラスのメソッドは、 オブジェクトを Out パラメーターとして受け入れます。 + +- + +- + +- + +- + +- + +- + +- + +- + + クラスの完全な例については、最初の例を参照してください。 クラスに関する詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +### 期待されるパーティクル、属性、および未指定の既定の属性の取得 + クラスは、現在の検証コンテキスト中で期待されるパーティクル、属性、および未指定の既定の属性を取得するための 、および メソッドを提供します。 + +#### 期待されるパーティクルの取得 + メソッドは、現在の要素コンテキストで期待されるパーティクルを含む オブジェクトの配列を返します。 メソッドが返せる有効なパーティクルは、 クラスと クラスのインスタンスです。 + + コンテンツ モデルのコンポジターが `xs:sequence` の場合、シーケンス中の次のパーティクルのみが返されます。 コンテンツ モデルのコンポジターが `xs:all` または `xs:choice` の場合、現在の要素コンテキストに続くことができる有効なパーティクルすべてが返されます。 + +> [!NOTE] +> メソッドが メソッドの呼び出し直後に呼ばれると、 メソッドはすべてのグローバル要素を返します。 + + たとえば、XSD \(XML スキーマ定義言語\) スキーマと続く XML ドキュメントで、`book` 要素の検証後、`book` 要素は現在の要素コンテキストになります。 メソッドは、`title` 要素を表す単一の オブジェクトを含む配列を返します。 検証コンテキストが `title` 要素の場合、 メソッドは空の配列を返します。 メソッドが `title` 要素の検証後で `description` 要素の検証前に呼び出されると、このメソッドは `description` 要素を表す単一の オブジェクトを含む配列を返します。 メソッドが `description` 要素の検証後に呼び出されると、メソッドはワイルドカードを表す単一の オブジェクトを含む配列を返します。 + +```vb +Dim reader As XmlReader = XmlReader.Create("input.xml") + +Dim schemaSet As XmlSchemaSet = New XmlSchemaSet() +schemaSet.Add(Nothing, "schema.xsd") +Dim manager As XmlNamespaceManager = New XmlNamespaceManager(reader.NameTable) + +Dim validator As XmlSchemaValidator = New XmlSchemaValidator(reader.NameTable,schemaSet,manager,XmlSchemaValidationFlags.None) +validator.Initialize() + +validator.ValidateElement("book", "", Nothing) + +validator.ValidateEndOfAttributes(Nothing) +For Each element As XmlSchemaElement In validator.GetExpectedParticles() + Console.WriteLine(element.Name) +Next + +validator.ValidateElement("title", "", Nothing) +validator.ValidateEndOfAttributes(Nothing) +For Each element As XmlSchemaElement In validator.GetExpectedParticles() + Console.WriteLine(element.Name) +Next +validator.ValidateEndElement(Nothing) + +For Each element As XmlSchemaElement In validator.GetExpectedParticles() + Console.WriteLine(element.Name) +Next + +validator.ValidateElement("description", "", Nothing) +validator.ValidateEndOfAttributes(Nothing) +validator.ValidateEndElement(Nothing) + +For Each particle As XmlSchemaParticle In validator.GetExpectedParticles() + Console.WriteLine(particle.GetType()) +Next + +validator.ValidateElement("namespace", "", Nothing) +validator.ValidateEndOfAttributes(Nothing) +validator.ValidateEndElement(Nothing) + +validator.ValidateEndElement(Nothing) +``` + +```csharp +XmlReader reader = XmlReader.Create("input.xml"); + +XmlSchemaSet schemaSet = new XmlSchemaSet(); +schemaSet.Add(null, "schema.xsd"); +XmlNamespaceManager manager = new XmlNamespaceManager(reader.NameTable); + +XmlSchemaValidator validator = new XmlSchemaValidator(reader.NameTable, schemaSet, manager, XmlSchemaValidationFlags.None); +validator.Initialize(); + +validator.ValidateElement("book", "", null); + +validator.ValidateEndOfAttributes(null); +foreach (XmlSchemaElement element in validator.GetExpectedParticles()) +{ + Console.WriteLine(element.Name); +} + +validator.ValidateElement("title", "", null); +validator.ValidateEndOfAttributes(null); +foreach (XmlSchemaElement element in validator.GetExpectedParticles()) +{ + Console.WriteLine(element.Name); +} +validator.ValidateEndElement(null); + +foreach (XmlSchemaElement element in validator.GetExpectedParticles()) +{ + Console.WriteLine(element.Name); +} + +validator.ValidateElement("description", "", null); +validator.ValidateEndOfAttributes(null); +validator.ValidateEndElement(null); + +foreach (XmlSchemaParticle particle in validator.GetExpectedParticles()) +{ + Console.WriteLine(particle.GetType()); +} + +validator.ValidateElement("namespace", "", null); +validator.ValidateEndOfAttributes(null); +validator.ValidateEndElement(null); + +validator.ValidateEndElement(null); +``` + + この例は、次の XML を入力として使用します。 + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + この例は、次の XSD スキーマを入力として使用します。 + + `` + + `My Book` + + `My Book's Description` + + `System.Xml.Schema` + + `` + +> [!NOTE] +> クラスの 、および メソッドの結果は、検証中の現在のコンテキストに依存します。 詳細については、このトピックの「検証コンテキスト」を参照してください。 + + メソッドの例については、最初の例を参照してください。 メソッドの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +#### 期待される属性の取得 + メソッドは、現在の要素コンテキストで期待される属性を含む オブジェクトの配列を返します。 + + たとえば最初の例で、 メソッドは `book` 要素のすべての属性を取得するために使用されます。 + + メソッドを メソッドの直後に呼び出すと、その XML ドキュメントで使用可能なすべての属性が返されます。 ただし、 メソッドを メソッドの 1 回以上の呼び出し後に呼び出すと、現在の要素でまだ検証されていない属性が返されます。 + +> [!NOTE] +> クラスの 、および メソッドの結果は、検証中の現在のコンテキストに依存します。 詳細については、このトピックの「検証コンテキスト」を参照してください。 + + メソッドの例については、最初の例を参照してください。 メソッドの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +#### 未指定の既定の属性の取得 + メソッドは、要素コンテキスト中でこれまでに メソッドを使用して検証されていない既定値を持つ属性の オブジェクトを指定された に読み込みます。 メソッドは、要素コンテキスト中の各属性について メソッドを呼び出した後で呼び出します。 メソッドは、検証中の XML ドキュメントに挿入される既定の属性を決定するために使用します。 + + メソッドの詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +### スキーマ検証イベントの処理 + 検証中に発生したスキーマ検証の警告とエラーは、 クラスの イベントで取り扱われます。 + + スキーマ検証の警告は、 値が であり、スキーマ検証エラーは、 値が です。 が何も割り当てられていない場合、すべてのスキーマ検証エラーについて でスローされます。 ただし、 値が であるスキーマ検証警告については、 はスローされません。 + + 次は最初の例から取られたもので、スキーマ検証中に発見したスキーマ検証警告とエラーを受け取る の一例です。 + +```vb +Shared Sub SchemaValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs) + + Select Case e.Severity + Case XmlSeverityType.Error + Console.WriteLine(vbCrLf & "Error: {0}", e.Message) + Exit Sub + Case XmlSeverityType.Warning + Console.WriteLine(vbCrLf & "Warning: {0}", e.Message) + Exit Sub + End Select +End Sub +``` + +```csharp +static void SchemaValidationEventHandler(object sender, ValidationEventArgs e) +{ + switch (e.Severity) + { + case XmlSeverityType.Error: + Console.WriteLine("\nError: {0}", e.Message); + break; + case XmlSeverityType.Warning: + Console.WriteLine("\nWarning: {0}", e.Message); + break; + } +} +``` + + の完全な例については、最初の例を参照してください。 詳細については、 クラスのリファレンス ドキュメントを参照してください。 + +## XmlSchemaValidator の状態遷移 + クラスには、XML 情報セット内の要素、属性、およびコンテンツを検証するために、各メソッド呼び出しの発生と順序を強制する定義済みの状態遷移があります。 + + 次の表では、 クラスの状態遷移と、各状態で可能なメソッド呼び出しとその順序について説明します。 + +|状態|切り替え効果| +|--------|------------| +|検証| \( | TopLevel\*\) | +|TopLevel| | | Element| +|要素| \* \( Content\*\)? |

\* |

\* Content\* || +|Content| | | Element| + +> [!NOTE] +> オブジェクトの現在の状態に従って、メソッドの呼び出しが正しい順序で行われないと、上表の各メソッドによって がスローされます。 + + 上の状態遷移表では、 クラスの状態遷移の各状態で呼び出せるメソッドと他の状態を説明するために、記号が使われています。 使用される記号は、ドキュメント型定義 \(DTD\) の XML 標準リファレンスで見られる記号と同一です。 + + 次の表は、上の状態遷移表で見られる記号が クラスの状態遷移中の各状態について、呼び出せるメソッドと状態にどう影響を与えるかを説明するものです。 + +|シンボル|説明| +|----------|--------| +|||メソッドと状態 \(縦棒の前後の項目\) のいずれかを呼び出し可能です。| +|?|疑問符の前のメソッドか状態はオプションです。呼び出す場合は 1 回しか呼べません。| +|\*|\* 記号の前のメソッドか状態はオプションです。複数回の呼び出しが可能です。| + +## 検証コンテキスト + XML 情報セット内の要素、属性、コンテンツの検証に使用される クラスのメソッドは、 オブジェクトの検証コンテキストを変更します。 たとえば、 メソッドは、現在の要素コンテンツの検証をスキップし、親要素のコンテキスト中のコンテンツを検証するために オブジェクトを準備します。これは、現在の要素のすべての子要素の検証をスキップして メソッドを呼ぶのと同じです。 + + クラスの 、および メソッドの結果は、検証中の現在のコンテキストに依存します。 + + 次の表では、XML 情報セット内の要素、属性、およびコンテンツの検証に使用する クラスのメソッドの 1 つを呼び出した後で、これらのメソッドを呼び出した場合の結果について説明します。 + +|メソッド|GetExpectedParticles|GetExpectedAttributes|AddSchema| +|----------|--------------------------|---------------------------|---------------| +||既定の メソッドが呼び出されると、 はすべてのグローバル要素を含む配列を返します。

1 つの要素の部分検証を初期化するために、 をパラメーターとして取るオーバーロードされた メソッドが呼び出された場合、 は、 オブジェクトが初期化された対象の要素だけを返します。|既定の メソッドが呼び出されると、 は空の配列を返します。

1 つの属性の部分検証を初期化するために をパラメーターとして取るオーバーロードの メソッドが呼び出された場合、 は、 オブジェクトが初期化された対象の属性だけを返します。|プリプロセス エラーがない場合は、スキーマを オブジェクトの に追加します。| +||コンテキスト要素が有効な場合、 はコンテキスト要素の子として期待される一連の要素を返します。

コンテキスト要素が無効な場合、 は空の配列を返します。|コンテキスト要素が有効で、これまで の呼び出しが行われていない場合、 はコンテキスト要素上に定義されたすべての属性のリストを返します。

いくつかの属性が既に検証されている場合、 は残りの検証すべき属性のリストを返します。

コンテキスト要素が無効な場合、 は空の配列を返します。|上と同じ。| +||コンテキスト属性が最上位の属性である場合、 は空の配列を返します。

それ以外の場合、 は、コンテキスト要素の最初の子として期待される一連の要素を返します。|コンテキスト属性が最上位の属性である場合、 は空の配列を返します。

それ以外の場合、 は検証する残りの属性のリストを返します。|上と同じ。| +|| は、コンテキスト要素の最初の子として期待される一連の要素を返します。| は、コンテキスト要素についてまだ検証されていない必須の属性とオプションの属性の一覧を返します。|上と同じ。| +|| は、コンテキスト要素の最初の子として期待される一連の要素を返します。| は空の配列を返します。|上と同じ。| +||コンテキスト要素の contentType が Mixed の場合、 は、次の位置で期待される一連の要素を返します。

コンテキスト要素の contentType が TextOnly または Empty の場合、 は空の配列を返します。

コンテキスト要素の contentType が ElementOnly の場合、 は、検証エラーが既に発生しているものを除いて、次の位置で期待される一連の要素を返します。| はコンテキスト要素の検証されていない属性リストを返します。|上と同じ。| +||コンテキストの空白が最上位の空白である場合、 は空の配列を返します。

それ以外の場合、 メソッドの動作は の場合と同じです。|コンテキストの空白が最上位の空白である場合、 は空の配列を返します。

それ以外の場合、 メソッドの動作は の場合と同じです。|上と同じ。| +|| はコンテキスト要素以降に期待される一連の要素を返します \(兄弟の可能性\)。| はコンテキスト要素の検証されていない属性リストを返します。

コンテキスト要素に親がない場合、 は空のリストを返します \(コンテキスト要素が、 を呼び出した対象である現在の要素の親\)。|上と同じ。| +|| と同じ。| と同じ。|上と同じ。| +||空の配列を返します。|空の配列を返します。|上と同じ。| + +> [!NOTE] +> クラスの各種プロパティで返される値は、上の表のどのメソッドを呼び出しても変わることはありません。 + +## 参照 + \ No newline at end of file diff --git a/docs/standard/data/xml/xpath-namespace-navigation.md b/docs/standard/data/xml/xpath-namespace-navigation.md new file mode 100644 index 00000000000..041b40ea206 --- /dev/null +++ b/docs/standard/data/xml/xpath-namespace-navigation.md @@ -0,0 +1,86 @@ +--- +title: "XPath 名前空間のナビゲーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 06cc7abb-7416-415c-9dd6-67751b8cabd5 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XPath 名前空間のナビゲーション +XML ドキュメントで XPath クエリを使用するには、XML 名前空間およびそれらの名前空間に含まれる要素を、正しくアドレス指定する必要があります。 名前空間は、名前が複数のコンテキストで使用される場合に生じる可能性がある、あいまいさを防ぎます。たとえば、`ID` という名前は、XML ドキュメントの複数の異なる要素に関連付けられた複数の ID を参照する場合があります。 名前空間の構文では、XML ドキュメントの各要素を識別する、URI、名前、およびプレフィックスを指定します。 + + このトピックの例では、 で XML ドキュメントをナビゲーションする際のプレフィックスの使用方法を示します。 名前空間と構文の詳細については、「[XML 名前空間入門](http://go.microsoft.com/fwlink/?linkid=140245)」を参照してください。 + +## 名前空間の宣言 + 名前空間の宣言によって、 のインスタンスを使用する際に、XML ドキュメントの各要素の識別とアドレス指定が可能になります。 名前空間のプレフィックスでは、アドレス名前空間用の短い構文が指定されます。 + + プレフィックスは、`.` という形式で定義されます。この構文では、プレフィックス "`e`" が、名前空間の正式な URI の省略形になります。 `e:Body` という構文を使用して、`Body` 要素を `Envelope` 名前空間のメンバーとして識別できます。 + + 次の XML ドキュメントは、次のセクションで示すナビゲーション例で `response.xml` として参照されます。 + +``` + + + + + + + + + + +``` + +## 名前空間プレフィックスによるナビゲーション + このセクションで示すコードでは、 オブジェクトと オブジェクトを使用して、前のセクションで示した XML ドキュメントの `Search` 要素を選択します。 `xpath` クエリには、パス内の各要素の名前空間プレフィックスが含まれています。 各要素が含まれている名前空間の正確な ID を指定することによって、 メソッドで `Search` 要素に正しく移動できます。 + +``` +using (XmlReader reader = XmlReader.Create("response.xml")) + { + XPathDocument doc = new XPathDocument(reader); + XPathNavigator nav = doc.CreateNavigator(); + XmlNamespaceManager nsmgr = + new XmlNamespaceManager(nav.NameTable); + nsmgr.AddNamespace("e", + @"http://schemas.xmlsoap.org/soap/envelope/"); + nsmgr.AddNamespace("s", + @"http://schemas.microsoft.com/v1/Search"); + nsmgr.AddNamespace("r", + @"http://schemas.microsoft.com/v1/Search/metadata"); + nsmgr.AddNamespace("i", + @"http://www.w3.org/2001/XMLSchema-instance"); + + string xpath = "/e:Envelope/e:Body/s:Search"; + + XPathNavigator element = nav.SelectSingleNode(xpath, nsmgr); + + Console.WriteLine("Element Prefix:" + element.Prefix + + " Local name:" + element.LocalName); + Console.WriteLine("Namespace URI: " + + element.NamespaceURI); + + } + +``` + + 名前空間で完全修飾された名前を使用するのは、利便性のためだけではありません。 前に示したドキュメント定義とコードでは、要素名を完全修飾せずにナビゲーションすると例外がスローされることがわかります。 たとえば、要素の定義が `` で、クエリ文字列が `xpath = "/s:Envelope/s:Body/Search";` の場合、`Search` 要素に名前空間プレフィックスがないので、`Search` 要素ではなく `null` が返されます。 + +## 参照 + [XPathNavigator による XML データへのアクセス](../../../../docs/standard/data/xml/accessing-xml-data-using-xpathnavigator.md) + [XPathNavigator を使用した XML データの選択、評価、および照合](../../../../docs/standard/data/xml/selecting-evaluating-and-matching-xml-data-using-xpathnavigator.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xpath-queries-and-namespaces.md b/docs/standard/data/xml/xpath-queries-and-namespaces.md new file mode 100644 index 00000000000..2c92edb4c3a --- /dev/null +++ b/docs/standard/data/xml/xpath-queries-and-namespaces.md @@ -0,0 +1,96 @@ +--- +title: "XPath クエリおよび名前空間 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: ef6402be-2f8e-4be2-8d3e-a80891cdef8b +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XPath クエリおよび名前空間 +XPath クエリは XML ドキュメント中の名前空間を認識し、名前空間プレフィックスを使用して要素と属性名を修飾することができます。 名前空間プレフィックスで要素や属性の名前を修飾すると、XPath クエリで返されるノードを特定の名前空間に属するノードだけに限定することができます。 + + たとえば、プレフィックス `books` が名前空間 `http://www.contoso.com/books` に割り当てられると、XPath クエリ `/books:books/books:book` は名前空間 `http://www.contoso.com/books` 内の `book` 要素だけを選択します。 + +## XmlNamespaceManager + XPath クエリで名前空間を使用するために、 クラスに似た インターフェイスから派生したオブジェクトが、名前空間 URI と XPath クエリに含まれるプレフィックスを使用して作成されます。 + + オブジェクトは次の方法でクエリで使用することができます。 + +- オブジェクトの メソッドを使用して、 オブジェクトを既存の オブジェクトに関連付ける。 静的 メソッドを使用して、新しい オブジェクトをコンパイルすることもできます。このメソッドは XPath 式を表す文字列と オブジェクトをパラメーターとして取り、新しい オブジェクトを返します。 + +- XPath 式を表す文字列と共に オブジェクト自体をパラメーターとして受け入れ側の クラス メソッドに渡す。 + + 次は、 インターフェイスから派生したオブジェクトをパラメーターとして受け付ける クラスのメソッドです。 + +- + +- + +- + +### 既定の名前空間 + 次の XML ドキュメントでは、`http://www.contoso.com/books` 名前空間を宣言するために、空のプレフィックスの既定の名前空間が使用されています。 + +``` + + + Title + Author Name + 5.50 + + +``` + + XPath は空のプレフィックスを `null` 名前空間として取り扱います。 つまり、XPath クエリでは、名前空間に割り当てられたプレフィックスだけを使用できます。 このことは、XML ドキュメント内の名前空間に対してクエリする場合、たとえそれが既定の名前空間であっても、そのプレフィックスを定義する必要があることを意味します。 + + たとえば、上記の XML ドキュメントでプレフィックスを定義しなければ、XPath クエリ `/books/book` は何も結果を返しません。 + + ドキュメントで、名前空間内にないノードと既定の名前空間内のノードに対してクエリを行う場合には、あいまいさを避けるために、プレフィックスを付加しなければなりません。 + + 次のコードは、既定の名前空間のプレフィックスを定義し、`http://www.contoso.com/books` 名前空間からすべての `book` 要素を選択します。 + +```vb +Dim document As XPathDocument = New XPathDocument("books.xml") +Dim navigator As XPathNavigator = document.CreateNavigator() +Dim query As XPathExpression = navigator.Compile("/books:books/books:book") +Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable) +manager.AddNamespace("books", "http://www.contoso.com/books") +query.SetContext(manager) +Dim nodes As XPathNodeIterator = navigator.Select(query) +``` + +```csharp +XPathDocument document = new XPathDocument("books.xml"); +XPathNavigator navigator = document.CreateNavigator(); +XPathExpression query = navigator.Compile("/books:books/books:book"); +XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable); +manager.AddNamespace("books", "http://www.contoso.com/books"); +query.SetContext(manager); +XPathNodeIterator nodes = navigator.Select(query); +``` + +## 参照 + + + + [XPath データ モデルを使用した XML データの処理](../../../../docs/standard/data/xml/process-xml-data-using-the-xpath-data-model.md) + [XPathNavigator を使用した XML データの選択](../../../../docs/standard/data/xml/select-xml-data-using-xpathnavigator.md) + [XPathNavigator による Xpath 式の評価](../../../../docs/standard/data/xml/evaluate-xpath-expressions-using-xpathnavigator.md) + [XPathNavigator によるノードの一致](../../../../docs/standard/data/xml/matching-nodes-using-xpathnavigator.md) + [XPath クエリで認識されるノード型](../../../../docs/standard/data/xml/node-types-recognized-with-xpath-queries.md) + [コンパイルされた XPath 式](../../../../docs/standard/data/xml/compiled-xpath-expressions.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xpathdocument-input-to-xsltransform.md b/docs/standard/data/xml/xpathdocument-input-to-xsltransform.md new file mode 100644 index 00000000000..296fa1e2d58 --- /dev/null +++ b/docs/standard/data/xml/xpathdocument-input-to-xsltransform.md @@ -0,0 +1,50 @@ +--- +title: "XslTransform への XPathDocument の入力 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 7d1bbe8b-ed43-4e62-a5ba-d602d244f4ae +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XslTransform への XPathDocument の入力 + は、 でドキュメントを処理するための読み取り専用キャッシュです。 は、構造的には XML ドキュメント オブジェクト モデル \(DOM\) に似ていますが、 で XPath 最適化関数を使用することで、XSLT \(Extensible Stylesheet Language for Transformations\) による処理と XPath \(XML Path Language\) データ モデルに高度に最適化されています。 + +> [!NOTE] +> [!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] では、 クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + 変換への入力として を作成するコード サンプルを次に示します。 + +```vb +Dim xslt as XslTransform = new XslTransform() +Xslt.Load(someStylesheet) +Dim doc as XPathDocument = New XPathDocument("books.xml") +Dim fs as StringWriter = new StringWriter() +Xslt.Transform(doc, Nothing, fs, Nothing); + +``` + +```csharp +XslTransform xslt = new XslTransform(); +Xslt.Load(someStylesheet); +XPathDocument doc = XPathDocument("books.xml"); +StringWriter fs = new StringWriter(); +Xslt.Transform(doc, null, fs, null); +``` + +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xpathnavigator-in-transformations.md b/docs/standard/data/xml/xpathnavigator-in-transformations.md new file mode 100644 index 00000000000..2a1f69de112 --- /dev/null +++ b/docs/standard/data/xml/xpathnavigator-in-transformations.md @@ -0,0 +1,129 @@ +--- +title: "変換における XPathNavigator | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 118f97d1-7110-4d1b-b0bd-4143252c0bb0 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 変換における XPathNavigator + クラスは、データへの読み取り専用のランダム アクセスを提供し、XSLT \(Extensible Stylesheet Language for Transformations\) への入力として使用することを目的に設計されています。 このクラスは、、および に実装されます。 は、『XML Path Language \(XPath\)』勧告のセクション 5 で規定されている W3C \(World Wide Web Consortium\) データ モデルに準拠しています。 + + は、任意のストアに対するカーソル モデルを定義し、任意のデータ ストアに対する高速で読み取り専用の XPath クエリを提供します。 クラスは、結果ツリー フラグメントの反復処理でも使用されます。 + + この API を使用すると、ストア内の現在のノードから情報を取得し、接続されているノードに移動することができます。 は、一連の **Move** メソッドを使用してストアの走査を実行するカーソル スタイルのモデルです。 は、常にノード上に配置されます。 **Move** メソッドが失敗した場合、 は変更されません。 + + クラスは、結果ツリー フラグメントの反復処理で使用されます。 XML を含む `fragment` パラメーターを指定して関数を呼び出すことにより、スタイル シート内で結果ツリー フラグメントを作成するコード サンプルを次に示します。 + +## test.xsl + +``` + + + + + Joe + + + + + + + + + + + + + +``` + +## test.xml + +``` +Some text +``` + + 次の例では、**test.xsl** スタイル シートと **test.xml** 入力データを使用しています。 + +```vb +Imports System +Imports System.IO +Imports System.Xml +Imports System.Xml.Xsl +Imports System.Xml.XPath +Imports System.Text +Public Class sample + + Public Shared Sub Main() + Dim xslt As New XslTransform() + xslt.Load("test.xsl") + + Dim xd As New XPathDocument("test.xml") + + Dim strmTemp = New FileStream("out.xml", FileMode.Create, FileAccess.ReadWrite) + xslt.Transform(xd, Nothing, strmTemp, Nothing) + End Sub 'Main +End Class 'sample + +``` + +```csharp +using System; +using System.IO; +using System.Xml; +using System.Xml.Xsl; +using System.Xml.XPath; +using System.Text; + +public class sample +{ + public static void Main() + { + XslTransform xslt = new XslTransform(); + xslt.Load("test.xsl"); + + XPathDocument xd = new XPathDocument("test.xml"); + + Stream strmTemp = new FileStream("out.xml", FileMode.Create, FileAccess.ReadWrite); + xslt.Transform(xd, null, strmTemp, null); + } +} +``` + +## 出力 + 変換結果はファイル **out.xml** に出力されます。 + +``` +Joe + +``` + +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xpathnodeiterator-in-transformations.md b/docs/standard/data/xml/xpathnodeiterator-in-transformations.md new file mode 100644 index 00000000000..a1cb2477973 --- /dev/null +++ b/docs/standard/data/xml/xpathnodeiterator-in-transformations.md @@ -0,0 +1,169 @@ +--- +title: "変換における XPathNodeIterator | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 2bc6ddc6-674a-4f75-b264-abc35e4e5857 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 変換における XPathNodeIterator + は、XPath \(XML Path Language\) クエリの結果として作成されたノード セット、または node\-set メソッドを使用して結果ツリー フラグメントから変換されたノード セットの反復処理を行うためのメソッドを提供します。 を使用すれば、そのノード セット内のノードの反復処理を実行できます。 ノード セットが取得されると、 クラスは、選択されたノード セットへの読み取り専用、前方参照専用のカーソルを提供します。 ノード セットはドキュメント順に作成されるため、このメソッドを呼び出すと、ドキュメント順で次のノードに移動します。 は、セット内のすべてのノードのノード ツリーを構築するわけではありません。 その代わりに、**XPathNodeIterator** は、データへの単一ノード ウィンドウを提供し、ツリー内での移動に合わせて、自身が指している基になるノードを公開します。 クラスで利用できるメソッドとプロパティを使用すると、現在のノードから情報を取得できます。 メソッドとプロパティの一覧については、「[XPathNodeIterator メンバー](frlrfsystemxmlxpathxpathnodeiteratormemberstopic)」を参照してください。 + + は XPath クエリの結果作成されたノード セット内を前方にのみ移動するため、移動するときは メソッドを使用します。 このメソッドの戻り値の型は `Boolean` であり、選択されている次のノードに移動すると `true` が返り、選択されているノードがそれ以上ないと `false` が返ります。 このメソッドが `true` を返した場合は、次のプロパティを使用できます。 + +- + +- + +- + + ノード セットを初めて参照するときは、 を呼び出して、選択されているセットの最初のノードに を移動する必要があります。 これにより、while ループによる書き込みが可能になります。 + + 内のパラメーターとして渡すコード サンプルを次に示します。 コードへの入力は **books.xml** で、スタイル シートは **text.xsl** です。 ファイル **test.xml** は、 です。 + +```vb +Imports System +Imports System.IO +Imports System.Xml +Imports System.Xml.Xsl +Imports System.Xml.XPath +Imports System.Text + +Public Class sample + + Public Shared Sub Main() + Dim Doc As New XPathDocument("books.xml") + Dim nav As XPathNavigator = Doc.CreateNavigator() + Dim Iterator As XPathNodeIterator = nav.Select("/bookstore/book") + + Dim arg As New XsltArgumentList() + arg.AddParam("param1", "", Iterator) + + Dim xslt As New XslTransform() + xslt.Load("test.xsl") + + Dim xd As New XPathDocument("test.xml") + + Dim strmTemp = New FileStream("out.xml", FileMode.Create, FileAccess.ReadWrite) + xslt.Transform(xd, arg, strmTemp, Nothing) + End Sub 'Main +End Class 'sample + +``` + +```csharp +using System; +using System.IO; +using System.Xml; +using System.Xml.Xsl; +using System.Xml.XPath; +using System.Text; + +public class sample +{ + public static void Main() + { + XPathDocument Doc = new XPathDocument("books.xml"); + XPathNavigator nav = Doc.CreateNavigator(); + XPathNodeIterator Iterator = nav.Select("/bookstore/book"); + + XsltArgumentList arg = new XsltArgumentList(); + arg.AddParam("param1", "", Iterator); + + XslTransform xslt = new XslTransform(); + xslt.Load("test.xsl"); + + XPathDocument xd = new XPathDocument("test.xml"); + + Stream strmTemp = new FileStream("out.xml", FileMode.Create, FileAccess.ReadWrite); + xslt.Transform(xd, arg, strmTemp, null); + } +} +``` + +## books.xml + +``` + + + + + Seven Years in Trenton + + Jay + Adams + Trenton Literary Review Honorable Mention + USA + + 12 + + + History of Trenton + + Kim + Akers + + Selected Short Stories of + Scott + Bishop + US + + + 55 + + +``` + +## test.xsl + +``` + + + + + + + + + <xsl:value-of select="."/> + + + + + +``` + +## test.xml + +``` +this is a test +``` + +## 出力 \(out.xml\) + +``` + + + Seven Years in Trenton + History of Trenton + +``` + +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xslt-compiler-xsltc-exe.md b/docs/standard/data/xml/xslt-compiler-xsltc-exe.md new file mode 100644 index 00000000000..6124b70d848 --- /dev/null +++ b/docs/standard/data/xml/xslt-compiler-xsltc-exe.md @@ -0,0 +1,97 @@ +--- +title: "XSLT コンパイラ (xsltc.exe) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 672a5ac8-8305-4d28-ba10-11089c2c0924 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XSLT コンパイラ (xsltc.exe) +XSLT コンパイラ \(xsltc.exe\) は、XSLT スタイル シートをコンパイルしてアセンブリを生成します。 コンパイルしたスタイル シートを メソッドに直接渡すことができます。 xsltc.exe を使用して署名があるアセンブリを生成することはできません。 + + xsltc.exe ツールは Visual Studio 2008 に付属しています。 詳細については、「[Microsoft ダウンロード センター](http://go.microsoft.com/fwlink/?LinkId=89463)」を参照してください。 + +## 構文 + +``` +xsltc [options] [/class:] [[/class:] ...] +``` + +## 引数 + +|引数|説明| +|--------|--------| +|`sourceFile`|スタイル シートの名前を指定します。 スタイル シートはローカル ファイルであるか、イントラネット上に置かれていることが必要です。| + +## オプション + +|オプション|説明| +|-----------|--------| +|`/c[lass]:` `name`|以降のスタイル シートのクラス名を指定します。 クラス名には完全修飾名を指定できます。

既定のクラス名は、スタイル シートの名前です。 たとえば、スタイル シート customers.xsl をコンパイルした場合、既定のクラス名は customers になります。| +|`/debug[`\+|\-`]`|デバッグ情報を生成するかどうかを指定します。

`+` または `/debug` を指定すると、コンパイラによりデバッグ情報が生成され、プログラム データベース \(PDB\) ファイルに記録されます。 生成される PDB ファイルの名前は `assemblyName`.pdb です。

`/debug` を指定しない場合、`-` の指定が有効となります。これを指定した場合、デバッグ情報は作成されません。 製品版のアセンブリが生成されます。 **Note:** デバッグ モードでコンパイルすると、XSLT のパフォーマンスが大きな影響を受けることがあります。| +|`/help`|このツールのコマンド構文とオプションを表示します。| +|`/nologo`|コンパイラの著作権メッセージが表示されないようにします。| +|`/platform:` `string`|アセンブリを実行できるプラットフォームを指定します。 次に、有効なプラットフォームの値を示します。

`x86` : 32 ビット x86 互換共通言語ランタイムにより実行できるように、アセンブリをコンパイルします。

`x64` : AMD64 または EM64T 命令セットをサポートするコンピューターで 64 ビット共通言語ランタイムにより実行できるように、アセンブリをコンパイルします

[!INCLUDE[vcpritanium](../../../../includes/vcpritanium-md.md)] : [!INCLUDE[vcpritanium](../../../../includes/vcpritanium-md.md)] プロセッサを搭載したコンピューターで 64 ビット共通言語ランタイムにより実行できるように、アセンブリをコンパイルします。

`anycpu` : 任意のプラットフォーム上で実行できるように、アセンブリをコンパイルします。 既定値です。| +|`/out:` `assemblyName`|出力となるアセンブリの名前を指定します。 複数のスタイル シートが存在している場合、既定のアセンブリ名はメインのスタイル シートか最初のスタイル シートの名前になります。

スタイル シートにスクリプトが含まれている場合、スクリプトは別のアセンブリに保存されます。 スクリプト アセンブリ名は、メインのアセンブリ名から生成されます。 たとえば、アセンブリ名を CustOrders.dll と指定した場合、最初のスクリプト アセンブリは CustOrders\_Script1.dll という名前になります。| +|`/settings:` `document+-, script+-, DTD+-,`|スタイル シートで `document()` 関数、XSLT スクリプト、またはドキュメント型定義 \(DTD\) を許可するかどうかを指定します。

既定では、DTD、`document()` 関数、スクリプトのサポートは無効になっています。| +|`@` `file`|コンパイラ オプションを含むファイルを指定できます。| +|`?`|このツールのコマンド構文とオプションを表示します。| + +## 解説 + XSLT ソリューションは、複数のスタイル シート モジュールで構成できます。 xsltc.exe ツールを使用して、スタイル シートからアセンブリを生成できます。 このアセンブリを メソッドに直接渡すことができます。 XSLT の配置シナリオによっては、これによってパフォーマンス コストを削減できます。 + +> [!NOTE] +> アプリケーションには、コンパイル済みのアセンブリも参照として含める必要があります。 + + xsltc.exe ツールでは、クラス名 \(`/class:``name`\) やアセンブリ名 \(`/out:``assemblyName`\) が検証されません。 名前が無効である場合、共通言語ランタイムによってエラーがスローされます。 + +## 例 + 次のコマンドを実行すると、スタイル シートがコンパイルされ、booksort.dll という名前のアセンブリが作成されます。 + +``` +xsltc booksort.xsl +``` + + 次のコマンドを実行すると、スタイル シートがコンパイルされ、booksort.dll という名前のアセンブリと booksort.pdb という名前の PDB ファイルが作成されます。 + +``` +xsltc booksort.xsl /debug +``` + + 次のコマンドを実行すると、msxsl:script 要素を含むスタイル シートがコンパイルされ、calc.dll および calc\_Script1.dll という 2 つのアセンブリが作成されます。 + +``` +xsltc /settings:script+ calc.xsl +``` + + 次のコマンドを実行すると、DTD 処理とスタイルのサポートが有効になり、myTest.dll および myTest\_Script1.dll という 2 つのアセンブリが作成されます。 + +``` +xsltc /settings:DTD+,script+ /out:myTest calc.xsl +``` + + 次のコマンドを実行すると、2 つのスタイル シート モジュールがコンパイルされ、booksort.dll という名前のアセンブリが 1 つ作成されます。 + +``` +xsltc booksort.xsl output.xsl +``` + +## 参照 + + [方法 : アセンブリを使用して XSLT 変換を実行する](../../../../docs/standard/data/xml/how-to-perform-an-xslt-transformation-by-using-an-assembly.md) + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xslt-extension-objects.md b/docs/standard/data/xml/xslt-extension-objects.md new file mode 100644 index 00000000000..ce949279292 --- /dev/null +++ b/docs/standard/data/xml/xslt-extension-objects.md @@ -0,0 +1,52 @@ +--- +title: "XSLT 拡張オブジェクト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: a4ebdbad-087c-4cfe-acc0-17c48142f81a +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XSLT 拡張オブジェクト +拡張オブジェクトは、スタイル シートの機能を拡張する場合に使用します。 拡張オブジェクトは、 クラスによって維持されます。 + + 埋め込みスクリプトではなく、拡張オブジェクトを使用する利点を次に示します。 + +- クラスをより効果的にカプセル化および再利用できます。 + +- スタイル シートを小さくすることができ、管理が簡単になります。 + + XSLT 拡張オブジェクトを オブジェクトに追加するには、 メソッドを使用します。 その時点で、修飾名と名前空間 URI がその拡張オブジェクトに関連付けられます。 + +> [!NOTE] +> メソッドを呼び出すには、FullTrust アクセス許可セットが必要です。 詳細については、「[Code Access Security](http://msdn.microsoft.com/ja-jp/23a20143-241d-4fe5-9d9f-3933fd594c03)」および「[NIB: Named Permission Sets](http://msdn.microsoft.com/ja-jp/08250d67-c99d-4ab0-8d2b-b0e12019f6e3)」を参照してください。 + + 拡張オブジェクトが返すデータ型は、4 つの基本 XPath データ型である `number`、`string`、`Boolean`、および `node set` のうちのいずれかになります。 + + 現在、`params` キーワードを使用して定義されるメソッド \(不特定数のパラメーターを渡すことができる\) は、 クラスでサポートされていません。 `params` キーワードを使用して定義されたメソッドを使用する XSLT スタイル シートは、正しく動作しません。 詳細については、「[params](../Topic/params%20\(C%23%20Reference\).md)」を参照してください。 + +### XSLT 拡張オブジェクトを使用するために必要な処理 + +1. オブジェクトを作成し、 メソッドを使用して拡張オブジェクトを追加します。 + +2. スタイル シートから拡張オブジェクトを呼び出します。 + +3. オブジェクトを メソッドに渡します。 + +## 参照 + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) + [XSLT のセキュリティに関する考慮事項](../../../../docs/standard/data/xml/xslt-security-considerations.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xslt-parameters.md b/docs/standard/data/xml/xslt-parameters.md new file mode 100644 index 00000000000..c3e6fe20cb5 --- /dev/null +++ b/docs/standard/data/xml/xslt-parameters.md @@ -0,0 +1,78 @@ +--- +title: "XSLT パラメーター | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: fe60aaa0-ae43-4b1c-9be1-426af66ba757 +caps.latest.revision: 2 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 2 +--- +# XSLT パラメーター +XSLT パラメーターを に追加するには、 メソッドを使用します。 その時点で、修飾名と名前空間 URI がそのパラメーター オブジェクトに関連付けられます。 + +### XSLT パラメーターを使用するために必要な処理 + +1. オブジェクトを作成し、 メソッドを使用してパラメーターを追加します。 + +2. スタイル シートからパラメーターを呼び出します。 + +3. オブジェクトを メソッドに渡します。 + +## パラメーターの型 + このパラメーター オブジェクトは、W3C 型に対応している必要があります。 対応する W3C 型、これと同等の Microsoft .NET のクラス \(型\)、および W3C 型が XPath 型か XSLT 型であるかを次の表に示します。 + +|W3C 型|対応する .NET クラス \(型\)|XPath 型または XSLT 型| +|-----------|-------------------------|-----------------------| +|`String`||XPath| +|`Boolean`||XPath| +|`Number`||XPath| +|`Result Tree Fragment`||XSLT| +|`Node*`||XPath| +|`Node Set`|

**XPathNavigator\[\]**|XPath| + + \* これは単一のノードを含むノード セットに相当します。 + + パラメーター オブジェクトが上記のクラスのいずれでもない場合、次の規則に従って型が変換されます。 共通言語ランタイム \(CLR\) の数値型は、 に変換されます。 型は に変換されます。 型は に変換されます。 **XPathNavigator\[\]** は に変換されます。 + + その他の型はエラーになります。 + +## 例 + 算出された割引日を保持するパラメーターを メソッドを使用して作成する例を次に示します。 割引日は、発注日から 20 日後として算出されます。 + + [!code-csharp[XSLT_Param#1](../../../../samples/snippets/csharp/VS_Snippets_Data/XSLT_Param/CS/xsltparam.cs#1)] + [!code-vb[XSLT_Param#1](../../../../samples/snippets/visualbasic/VS_Snippets_Data/XSLT_Param/VB/xsltparam.vb#1)] + +### 入力 + +##### order.xml + [!code-xml[XSLT_Param#2](../../../../samples/snippets/xml/VS_Snippets_Data/XSLT_Param/XML/order.xml#2)] + +##### discount.xsl + [!code-xml[XSLT_Param#3](../../../../samples/snippets/xml/VS_Snippets_Data/XSLT_Param/XML/discount.xsl#3)] + +### 出力 + +``` + + + 36.9 + 15% discount if paid by: 2/4/2004 12:00:00 AM + +``` + +## 参照 + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xslt-security-considerations.md b/docs/standard/data/xml/xslt-security-considerations.md new file mode 100644 index 00000000000..5bc3047cab0 --- /dev/null +++ b/docs/standard/data/xml/xslt-security-considerations.md @@ -0,0 +1,71 @@ +--- +title: "XSLT のセキュリティに関する考慮事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: fea695be-617c-4977-9567-140e820436fc +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# XSLT のセキュリティに関する考慮事項 +XSLT 言語には、優れた性能と柔軟性を兼ね備えた豊富な機能が用意されています。 ただし、多くの機能を利用できることが便利であると同時に、外部から不正に利用される可能性もあります。 XSLT を安全に使用するために、XSLT の使用に伴うさまざまなセキュリティ上の問題とそのリスクを軽減するための基本的な対策を理解しておく必要があります。 + +## XSLT 拡張機能 + スタイル シート スクリプトと拡張オブジェクトの 2 つは、XSLT の一般的な拡張機能です。 これらの拡張機能を使用すると、XSLT プロセッサでコードを実行できます。 + +- 拡張オブジェクトは、XSLT にプログラミング機能を追加します。 + +- スクリプトは、拡張要素である `msxsl:script` 要素を使用してスタイル シートに埋め込むことができます。 + +### 拡張オブジェクト + 拡張オブジェクトは、 メソッドを使用して追加します。 拡張オブジェクトをサポートするには、FullTrust アクセス許可セットが必要です。 このアクセス許可セットを設定すれば、拡張オブジェクト コードの実行時にアクセス許可の昇格が起こりません。 FullTrust アクセス許可なしで メソッドを呼び出そうとすると、セキュリティ例外がスローされます。 + +### スタイル シート スクリプト + スクリプトは、`msxsl:script` 拡張要素を使用してスタイル シートに埋め込むことができます。 スクリプトのサポートは、 クラス \(既定で無効\) のオプションの機能です。 スクリプト機能を有効にするには、 プロパティを `true` に設定して、 オブジェクトを メソッドに渡します。 + +#### ガイドライン + スクリプト機能を有効にするのは、スタイル シートの作成元が信頼できる場合のみにしてください。 スタイル シートの作成元が確認できない場合、またはスタイル シートの作成元が信頼できない場合には、XSLT 設定の引数に `null` を渡してください。 + +## 外部リソース + XSLT 言語には、`xsl:import`、`xsl:include`、または `document()` 関数などの機能があります。これらの機能では、プロセッサが URI リファレンスを解決する必要があります。 外部リソースを解決するには、 クラスを使用します。 外部リソースの解決が必要になる可能性があるのは、次の 2 つの場合です。 + +- スタイル シートをコンパイルする場合には、`xsl:import` および `xsl:include` を解決するために を使用します。 + +- 変換を実行する場合には、`document()` 関数を解決するために を使用します。 + + > [!NOTE] + > クラスでは、`document()` 関数は既定で無効になっています。 この機能を有効にするには、 プロパティを `true` に設定して、 オブジェクトを メソッドに渡します。 + + および メソッドには、 を引数の 1 つとして許容するオーバーロードがそれぞれ含まれます。 を指定しない場合は、資格情報を持たない既定の が使用されます。 + +#### ガイドライン + `document()` 関数を有効にするのは、スタイル シートの作成元が信頼できる場合のみにしてください。 + + オブジェクトを使用する場合の説明を次の一覧に示します。 + +- XSLT 処理で認証が必要なネットワーク リソースにアクセスする必要がある場合、必要な資格情報に対して を使用します。 + +- XSLT 処理がアクセスできるリソースを制限する場合、適切なアクセス許可セットに対して を使用します。 制御対象外の \(信頼できない\) リソースを開く場合には、 クラスを使用します。 + +- 動作をカスタマイズする場合は、独自の クラスを実装し、これを使用してリソースを解決することができます。 + +- 外部リソースにアクセスできないようにする場合は、 の引数に `null` を指定します。 + +## 参照 + [XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations.md) + [XSLT 処理中の外部リソースの解決](../../../../docs/standard/data/xml/resolving-external-resources-during-xslt-processing.md) + [Code Access Security](http://msdn.microsoft.com/ja-jp/23a20143-241d-4fe5-9d9f-3933fd594c03) \ No newline at end of file diff --git a/docs/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script.md b/docs/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script.md new file mode 100644 index 00000000000..633ae194008 --- /dev/null +++ b/docs/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script.md @@ -0,0 +1,240 @@ +--- +title: "<msxsl:script> を使用した XSLT スタイルシートのスクリプト | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 60e2541b-0cea-4b2e-a4fa-85f4c50f1bef +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# <msxsl:script> を使用した XSLT スタイルシートのスクリプト + クラスは、`script` 要素を使用した埋め込みスクリプトをサポートしています。 + +> [!NOTE] +> [!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] では、 クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + クラスは、`script` 要素を使用した埋め込みスクリプトをサポートしています。 スタイル シートが読み込まれると、定義されているすべての関数がクラス定義でラップされることによって Microsoft Intermediate Language \(MSIL\) にコンパイルされるため、パフォーマンスが低下しません。 + + `` 要素は、次のように定義されます。 + +``` + +``` + + `msxsl` は、名前空間 `urn:schemas-microsoft-com:xslt` に関連付けられたプレフィックスです。 + + `language` 属性は必須ではありませんが、指定する場合は、値を C\#、VB、JScript、JavaScript、VisualBasic、または CSharp のいずれかにする必要があります。 **language** 属性を指定しない場合、既定の言語は JScript です。 `language-name` では大文字小文字が区別されないため、"JavaScript" と "javascript" は同じものと見なされます。 + + `implements-prefix` 属性は必須です。 この属性は、名前空間を宣言し、それをスクリプト ブロックに関連付けるために使用されます。 この属性の値は、名前空間を表すプレフィックスです。 この名前空間は、スタイル シート内の任意の場所で定義できます。 + + `msxsl:script` 要素は名前空間 `urn:schemas-microsoft-com:xslt` に属しているため、スタイル シートには、名前空間宣言 `xmlns:msxsl=urn:schemas-microsoft-com:xslt` が含まれている必要があります。 + + スクリプトの呼び出し元が [UnmanagedCode](frlrfSystemSecurityPermissionsSecurityPermissionFlagClassTopic) へのアクセス許可を持っていない場合は、スタイル シート内のスクリプトがコンパイルされず、 への呼び出しが失敗します。 + + 呼び出し元が `UnmanagedCode` へのアクセス許可を持っている場合、スクリプトはコンパイルされますが、許可される操作は、読み込み時に指定される証拠によって異なります。 + + または を受け取る メソッドを使用してスタイル シートを読み込む場合は、 パラメーターを引数として受け取る オーバーロードを使用する必要があります。 証拠を指定する場合、呼び出し元は、スクリプト アセンブリの `Evidence` を渡すための [ControlEvidence](frlrfSystemSecurityPermissionsSecurityPermissionFlagClassTopic) へのアクセス許可を持っている必要があります。 呼び出し元がこのアクセス許可を持っていない場合は、`Evidence` パラメーターが `null` に設定されることがあります。 その場合は、 関数がスクリプトを見つけると、処理が失敗します。 `ControlEvidence` へのアクセス許可は、非常に強力なアクセス権であるため、信頼性の高いコード以外に与えてはいけません。 + + アセンブリから証拠を取得するには、`this.GetType().Assembly.Evidence` を使用します。 URI \(Uniform Resource Identifier\) から証拠を取得するには、`Evidence e = XmlSecureResolver.CreateEvidenceForUrl(stylesheetURI)` を使用します。 + + を受け取り、`Evidence` を受け取らない メソッドを使う場合、アセンブリのセキュリティ ゾーンは既定で Full Trust に設定されます。 詳細については、「」と「[名前付き権限セット](http://msdn.microsoft.com/ja-jp/08250d67-c99d-4ab0-8d2b-b0e12019f6e3)」を参照してください。 + + 関数は、`msxsl:script` 要素内で宣言できます。 既定でサポートされる名前空間を次の表に示します。 表に示す名前空間の外側でもクラスを使用できます。 ただし、これらのクラスには、完全修飾名が指定されている必要があります。 + +|既定の名前空間|説明| +|-------------|--------| +|システム|システム クラス| +|System.Collection|コレクション クラス| +|System.Text|テキスト クラス| +|System.Text.RegularExpressions|正規表現クラス| +|System.Xml|コア XML クラス| +|System.Xml.Xsl|XSLT クラス| +|System.Xml.XPath|XPath \(XML Path Language\) クラス| +|Microsoft.VisualBasic|Microsoft Visual Basic スクリプト用のクラス| + + 関数が宣言されると、その関数はスクリプト ブロックに含まれます。 スタイル シートには、相互に独立して機能する複数のスクリプト ブロックを含めることができます。 このため、1 つのスクリプト ブロック内で実行しているときに、別のスクリプト ブロックで定義した関数を呼び出すことはできません。ただし、そのブロックが同じ名前空間とスクリプト言語を持つように宣言されている場合は例外です。 各スクリプト ブロックは独自の言語で記述でき、ブロックはその言語に対応するパーサーの文法規則に従って解析されるため、使われている言語の正しい構文を使用する必要があります。 たとえば、C\# スクリプト ブロック内で XML コメント ノード `` を使用すると、エラーが発生します。 + + スクリプト関数で定義されている引数および戻り値は、W3C \(World Wide Web Consortium\) XPath 型または XSLT 型のいずれかである必要があります。 対応する W3C 型、それと同等の .NET Framework のクラス \(型\)、および W3C 型が XPath 型または XSLT 型のどちらかを次の表に示します。 + +|種類|対応する .NET Framework クラス \(型\)|XPath 型または XSLT 型| +|--------|-----------------------------------|-----------------------| +|String|System.String|XPath| +|Boolean|System.Boolean|XPath| +|Number|System.Double|XPath| +|Result Tree Fragment|System.Xml.XPath.XPathNavigator|XSLT| +|Node Set|System.Xml.XPath.XPathNodeIterator|XPath| + + スクリプト関数が数値型 Int16、UInt16、Int32、UInt32、Int64、UInt64、Single、または Decimal を使用する場合、これらの数値型は、W3C XPath 数値型に対応する Double に強制的に変換されます。 その他の型はすべて、`ToString` メソッドを呼び出して強制的に文字列に変換されます。 + + スクリプト関数が上記以外の型を使用したり、スタイル シートが オブジェクトに読み込まれるときにスクリプト関数がコンパイルを実行しなかったりすると、例外がスローされます。 + + `msxsl:script` 要素を使用するときは、言語に関係なく、スクリプトを CDATA セクション内に配置することをお勧めします。 コードが配置されている CDATA セクションのテンプレートを示す XML の例を次に示します。 + +``` + + + +``` + + 特定の言語の演算子、識別子、または区切り記号が誤って XML として解釈される可能性があるため、スクリプトのすべての内容を CDATA セクション内に配置することをお勧めします。 スクリプトで論理 AND 演算子を使用する例を次に示します。 + +``` + + + + 12 + + + 37.5 + + +``` + + calc.xsl + +``` + + + + + + + + + + + + + + + + + + + + +``` + +## 出力 + +``` + + + 12 + 75.36 + + + 37.5 + 235.5 + + +``` + +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xslt-transformations-over-different-stores.md b/docs/standard/data/xml/xslt-transformations-over-different-stores.md new file mode 100644 index 00000000000..31476494675 --- /dev/null +++ b/docs/standard/data/xml/xslt-transformations-over-different-stores.md @@ -0,0 +1,33 @@ +--- +title: "異なるストアでの XSLT 変換 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 369850e9-004a-45d2-b5c3-5060d9135adb +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# 異なるストアでの XSLT 変換 +> [!NOTE] +> [!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] では、 クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + ADO.NET と [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の XML クラスは、データ アクセス用の統合プログラミング モデルとして機能します。 そのデータは、XML データ \(タグで区切られたテキスト\) とリレーショナル データ \(行と列で構成されたテーブル\) のどちらとしても表されます。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の XML は、XML データを任意のデータ ストリームから XML ドキュメント オブジェクト モデル \(DOM\) ノード ツリーに読み込みます。読み込まれたデータにはプログラムからアクセスできます。一方、ADO.NET は、 オブジェクト内のリレーショナル データにアクセスし、それを操作する手段を提供します。 + + XML DOM により、XML ドキュメント内のデータや追加のクラスにアクセスして、XML ドキュメント内で読み取り、書き込み、および移動を行うことができます。 これらのクラスは、 名前空間でサポートされます。この名前空間は、XML DOM と ADO.NET が提供するデータ アクセス サービスを統合する役割も果たします。 は、データへのリレーショナル アクセスを可能にします。 は、XML を ADO.NET 内のリレーショナル データに対応付けます。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] ベースのアプリケーションであれば、 名前空間内のクラスを使用して、XML ドキュメントと 内のリレーショナル データの両方にアクセスし、それらを操作できます。 この実装は、データを収集したり、分散させたりするための n 層アーキテクチャをサポートします。 詳細については、「[XML とリレーショナル データおよび ADO.NET との統合](../../../../docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md)」を参照してください。 + +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md b/docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md new file mode 100644 index 00000000000..233e518852b --- /dev/null +++ b/docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md @@ -0,0 +1,111 @@ +--- +title: "XslTransform クラスを使用した XSLT 変換 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 500335af-f9b5-413b-968a-e6d9a824478c +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# XslTransform クラスを使用した XSLT 変換 +> [!NOTE] +> では、[!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] クラスが廃止されています。 クラスを使用して XSLT \(Extensible Stylesheet Language for Transformations\) 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」と「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + XSLT の目的は、たとえば、XML を Web サイトで使われる HTML に変換したり、XML ドキュメントをアプリケーションが必要とするフィールドのみが含まれたドキュメントに変換するなど、ソース XML ドキュメントの内容を形式や構造の異なる別のドキュメントに変換することです。 この変換処理の仕様は、www.w3.org\/TR\/xslt にある W3C \(World Wide Web Consortium\) 勧告『XSLT Version 1.0』で規定されています。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] では、 名前空間にある クラスが、この仕様の機能を実装する XSLT プロセッサです。 W3C 勧告『XSLT Version 1.0』から実装された機能の他に、「[XslTransform からの出力](../../../../docs/standard/data/xml/outputs-from-an-xsltransform.md)」に記載されている機能がいくつかあります。 [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の変換アーキテクチャを次の図に示します。 + +## 概要 + ![XSLT 変換アーキテクチャ](../../../../docs/standard/data/xml/media/xslttransformationswithxsltransformclass.gif "xsltTransformationsWithXslTransformClass") +変換アーキテクチャ + + XSLT 勧告では、XPath \(XML Path Language\) を使って XML ドキュメントの一部を選択します。XPath とは、ドキュメント ツリーのノード間を移動するのに使われるクエリ言語です。 図に示すように、XPath の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] の実装は、 など、複数のクラスに格納されている XML の一部を選択するのに使用されます。 は最適化された XSLT データ ストアであり、これを と共に使用することで、パフォーマンスの高い XSLT 変換を実行できます。 + + と XPath を使用するときによく使われるクラスと、それぞれの機能を次の表に示します。 + +|クラスまたはインターフェイス|関数| +|--------------------|--------| +||ストア内で移動するためのカーソル スタイルのモデルを提供し、XPath クエリをサポートする API です。 元になるストアを編集する機能は提供しません。 編集には クラスを使用します。| +||`CreateNavigator` に メソッドを提供するストア用のインターフェイスです。| +||対象のドキュメントの編集を有効にします。 このクラスは を実装しているため、後で XSLT 変換が必要になるドキュメントの編集が可能です。 詳細については、「[XslTransform への XmlDocument の入力](../../../../docs/standard/data/xml/xmldocument-input-to-xsltransform.md)」を参照してください。| +||これは の派生クラスです。 このクラスは、 を使用してリレーショナル環境と XML 環境との橋渡しをし、 で指定された対応付けに従って XML ドキュメント内の構造化データのストレージを最適化します。 このクラスは を実装しているため、データベースから取得したリレーショナル データに対して XSLT 変換を実行できます。 詳細については、「[XML とリレーショナル データおよび ADO.NET との統合](../../../../docs/standard/data/xml/xml-integration-with-relational-data-and-adonet.md)」を参照してください。| +||このクラスは、 の処理および XPath クエリ用に最適化されており、パフォーマンスの高い読み取り専用キャッシュを提供します。 このクラスは を実装しており、XSLT 変換に使用するストアとして適しています。| +||XPath ノード セット内を移動できるようにします。 のすべての XPath 選択メソッドは を返します。 同じストアに対して、選択されているノード セットを表す複数の オブジェクトを作成できます。| + +## MSXML XSLT 拡張機能 + `msxsl:script` クラスがサポートしている Microsoft XML コア サービス \(MSXML\) XSLT 拡張機能は、`msxsl:node-set` 関数と 関数のみです。 + +## 例 + XSL スタイル シートを読み込み、mydata.xml というファイルを に読み込み、myStyleSheet.xsl という架空のファイルに格納されているデータの変換を実行し、書式設定された出力をコンソールに送信するコード サンプルを次に示します。 + +```vb +Imports System +Imports System.IO +Imports System.Xml +Imports System.Xml.XPath +Imports System.Xml.Xsl + +Public Class Sample + Private filename As [String] = "mydata.xml" + Private stylesheet As [String] = "myStyleSheet.xsl" + + Public Shared Sub Main() + Dim xslt As New XslTransform() + xslt.Load(stylesheet) + Dim xpathdocument As New XPathDocument(filename) + Dim writer As New XmlTextWriter(Console.Out) + writer.Formatting = Formatting.Indented + + xslt.Transform(xpathdocument, Nothing, writer, Nothing) + End Sub 'Main +End Class 'Sample + +``` + +```csharp +using System; +using System.IO; +using System.Xml; +using System.Xml.XPath; +using System.Xml.Xsl; + +public class Sample +{ + private const String filename = "mydata.xml"; + private const String stylesheet = "myStyleSheet.xsl"; + + public static void Main() + { + XslTransform xslt = new XslTransform(); + xslt.Load(stylesheet); + XPathDocument xpathdocument = new + XPathDocument(filename); + XmlTextWriter writer = new XmlTextWriter(Console.Out); + writer.Formatting=Formatting.Indented; + + xslt.Transform(xpathdocument, null, writer, null); + } +} +``` + +## 参照 + + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) + [XslTransform クラスの随意動作の実装](../../../../docs/standard/data/xml/implementation-of-discretionary-behaviors-in-the-xsltransform-class.md) + [変換における XPathNavigator](../../../../docs/standard/data/xml/xpathnavigator-in-transformations.md) + [変換における XPathNodeIterator](../../../../docs/standard/data/xml/xpathnodeiterator-in-transformations.md) + [XslTransform への XPathDocument の入力](../../../../docs/standard/data/xml/xpathdocument-input-to-xsltransform.md) + [XslTransform への XmlDataDocument の入力](../../../../docs/standard/data/xml/xmldatadocument-input-to-xsltransform.md) + [XslTransform への XmlDocument の入力](../../../../docs/standard/data/xml/xmldocument-input-to-xsltransform.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xslt-transformations.md b/docs/standard/data/xml/xslt-transformations.md new file mode 100644 index 00000000000..f35fd34fd50 --- /dev/null +++ b/docs/standard/data/xml/xslt-transformations.md @@ -0,0 +1,55 @@ +--- +title: "XSLT 変換 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 202f8820-224c-494f-b61e-cd127eac6e03 +caps.latest.revision: 4 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 4 +--- +# XSLT 変換 +XSLT \(Extensible Stylesheet Language Transformation\) を使用すれば、ソース XML ドキュメントの内容を、形式や構造が異なる別のドキュメントに変換できます。 たとえば、XSLT を使用して、XML を Web サイトで使われる HTML に変換したり、アプリケーションが必要とするフィールドだけが含まれたドキュメントに変換したりできます。 この変換処理の仕様は、W3C 勧告『[XSL Transformations \(XSLT\) Version 1.0](http://go.microsoft.com/fwlink/?LinkID=49919)』で規定されています。 + + クラスは .NET Framework の XSLT プロセッサです。 クラスは、W3C 勧告『XSLT 1.0』をサポートしています。 + +> [!NOTE] +> .NET Framework Version 2.0 では クラスが廃止されています。 クラスが XSLT エンジンの新しい実装です。 このクラスは、パフォーマンスが向上しており、新しいセキュリティ機能を備えています。 XSLT アプリケーションの作成には クラスを使用することが推奨されています。 + +## このセクションの内容 + [XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md) + クラスの使用方法について説明します。 + + [XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md) + クラスからコードを移行する方法について説明します。 + + [XSLT コンパイラ \(xsltc.exe\)](../../../../docs/standard/data/xml/xslt-compiler-xsltc-exe.md) + XSLT コンパイラの使用方法について説明します。 + + [XslTransform クラスを使用した XSLT 変換](../../../../docs/standard/data/xml/xslt-transformations-with-the-xsltransform-class.md) + クラスの使用方法について説明します。 + + **メモ** .NET Framework 2.0 リリースでは クラスが廃止されています。 + +## 関連項目 + + + + + + +## 関連項目 + [XML ドキュメントと XML データ](../../../../docs/standard/data/xml/index.md) \ No newline at end of file diff --git a/docs/standard/data/xml/xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md b/docs/standard/data/xml/xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md new file mode 100644 index 00000000000..c70891f88e7 --- /dev/null +++ b/docs/standard/data/xml/xsltargumentlist-for-style-sheet-parameters-and-extension-objects.md @@ -0,0 +1,376 @@ +--- +title: "スタイル シート パラメーターと拡張オブジェクト用の XsltArgumentList | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: de2f0dce-6b98-4908-bba7-ed150cc50355 +caps.latest.revision: 3 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 3 +--- +# スタイル シート パラメーターと拡張オブジェクト用の XsltArgumentList + クラスには、XSLT \(Extensible Stylesheet Language for Transformations\) パラメーターと XSLT 拡張オブジェクトが含まれています。 これらのパラメーターと拡張オブジェクトは、 メソッドに渡すことで、スタイル シートから呼び出せるようになります。 + +> [!NOTE] +> [!INCLUDE[dnprdnext](../../../../includes/dnprdnext-md.md)] では、 クラスと クラスが廃止されています。 クラスを使用して XSLT 変換を実行できます。 詳細については、「[XslCompiledTransform クラスの使用](../../../../docs/standard/data/xml/using-the-xslcompiledtransform-class.md)」および「[XslTransform クラスからの移行](../../../../docs/standard/data/xml/migrating-from-the-xsltransform-class.md)」を参照してください。 + + クラスには、XSLT パラメーターと XSLT 拡張オブジェクトが含まれています。 これらのパラメーターと拡張オブジェクトは、 メソッドに渡すことで、スタイル シートから呼び出せるようになります。 + + 埋め込みスクリプトを使用するのではなく、オブジェクトを渡す利点を次に示します。 + +- クラスをより効果的にカプセル化および再利用できます。 + +- スタイル シートを小さくすることができ、管理が簡単になります。 + +- サポートされている 名前空間のセット内で定義されているもの以外の名前空間に属しているクラスのメソッドを呼び出すことができます。 + +- を使用して結果ツリー フラグメントをスタイル シートに渡す操作がサポートされます。 + +## XSLT スタイル シートのパラメーター + XSLT パラメーターを に追加するには、 メソッドを使用します。 パラメーターが追加された時点で、修飾名と名前空間 URI \(Uniform Resource Identifier\) がそのパラメーター オブジェクトに関連付けられます。 + + パラメーター オブジェクトは、W3C \(World Wide Web Consortium\) 型に対応している必要があります。 対応する W3C 型、それと同等の [!INCLUDE[dnprdnshort](../../../../includes/dnprdnshort-md.md)] のクラス \(型\)、および W3C 型が XPath \(XML Path Language\) 型または XSLT 型のどちらかを次の表に示します。 + +|W3C 型|対応する .NET Framework クラス \(型\)|XPath 型または XSLT 型| +|-----------|-----------------------------------|-----------------------| +|String|System.String|XPath| +|Boolean|System.Boolean|XPath| +|Number|System.Double|XPath| +|Result Tree Fragment|System.Xml.XPath.XPathNavigator|XSLT| +|Node Set|System.Xml.XPath.XPathNodeIterator|XPath| + + パラメーター オブジェクトが上に示したクラスでない場合は、クラスの種類に応じて、Double または String に強制的に変換されます。 Int16、UInt16、Int32、UInt32、Int64、UInt64、Single、Decimal の各型は、強制的に Double に変換されます。 その他すべての型は、`ToString` メソッドを使用して強制的に文字列に変換されます。 + +#### XSLT パラメーターを使用するために必要な処理 + +1. を作成し、 を使用してオブジェクトを追加します。 + +2. スタイル シートからパラメーターを呼び出します。 + +3. メソッドに渡します。 + +### 例 + 算出された割引日を保持するパラメーターを メソッドを使用して作成する例を次に示します。 割引日は、発注日から 20 日後として算出されます。 + +```vb +Imports System +Imports System.IO +Imports System.Xml +Imports System.Xml.XPath +Imports System.Xml.Xsl + +Public class Sample + + Private Const filename As String = "order.xml" + Private Const stylesheet As String = "discount.xsl" + + Public Shared Sub Main() + + 'Create the XslTransform and load the style sheet. + Dim xslt As XslTransform = New XslTransform + xslt.Load(stylesheet) + + 'Load the XML data file. + Dim doc As XPathDocument = New XPathDocument(filename) + + 'Create an XsltArgumentList. + Dim xslArg As XsltArgumentList = New XsltArgumentList + + 'Calculate the discount date. + Dim today As DateTime = DateTime.Now + Dim d As DateTime = today.AddDays(20) + xslArg.AddParam("discount", "", d.ToString()) + + 'Create an XmlTextWriter to handle the output. + Dim writer As XmlTextWriter = New XmlTextWriter("orderout.xml", Nothing) + + 'Transform the file. + xslt.Transform(doc, xslArg, writer, Nothing) + + writer.Close() + + End Sub +End Class + +``` + +```csharp +using System; +using System.IO; +using System.Xml; +using System.Xml.XPath; +using System.Xml.Xsl; + +public class Sample +{ + private const String filename = "order.xml"; + private const String stylesheet = "discount.xsl"; + + public static void Main() { + + //Create the XslTransform and load the style sheet. + XslTransform xslt = new XslTransform(); + xslt.Load(stylesheet); + + //Load the XML data file. + XPathDocument doc = new XPathDocument(filename); + + //Create an XsltArgumentList. + XsltArgumentList xslArg = new XsltArgumentList(); + + //Calculate the discount date. + DateTime today = DateTime.Now; + DateTime d = today.AddDays(20); + xslArg.AddParam("discount", "", d.ToString()); + + //Create an XmlTextWriter to handle the output. + XmlTextWriter writer = new XmlTextWriter("orderout.xml", null); + + //Transform the file. + xslt.Transform(doc, xslArg, writer, null); + writer.Close(); + } +} +``` + +### 入力 + order.xml + +``` + + + + The Handmaid's Tale + 19.95 + + + Americana + 16.95 + + +``` + + discount.xsl + +``` + + + + + + + 15% discount if paid by: + + + +``` + +### 出力 + +``` + + 36.9 + 15% discount if paid by: 5/6/2001 5:01:15 PM + +``` + +## XSLT 拡張オブジェクト + XSLT 拡張オブジェクトを に追加するには、 メソッドを使用します。 その時点で、修飾名と名前空間 URI がその拡張オブジェクトに関連付けられます。 + + オブジェクトを追加する場合、 の呼び出し元は、セキュリティ ポリシーで完全に信頼されている必要があります。 呼び出し元の信頼性が低いと、処理は失敗します。 + + オブジェクトは正常に追加されますが、正常に実行されるかどうかは保証されません。 メソッドを呼び出すと、 の実行時に指定された証拠に基づいてアクセス許可が計算され、そのアクセス許可セットが変換処理全体に割り当てられます。 拡張オブジェクトが、アクセス許可セットにないアクセス許可を必要とする処理を実行しようとすると、例外がスローされます。 + + 拡張オブジェクトが返すデータ型は、4 つの基本 XPath 型である数値、文字列、ブール、ノード セットのうちのいずれかになります。 + +#### XSLT 拡張オブジェクトを使用するために必要な処理 + +1. を作成し、 を使用して拡張オブジェクトを追加します。 + +2. スタイル シートから拡張オブジェクトを呼び出します。 + +3. メソッドに渡します。 + +### 例 + 半径が指定された円の円周を算出する例を次に示します。 + +```vb +Imports System +Imports System.IO +Imports System.Xml +Imports System.Xml.XPath +Imports System.Xml.Xsl + +Public Class Sample + Private Const filename As String = "number.xml" + Private Const stylesheet As String = "circle.xsl" + + Public Shared Sub Main() + Dim test As Sample = New Sample + End Sub + + Public Sub New() + 'Create the XslTransform and load the style sheet. + Dim xslt As XslTransform = New XslTransform + xslt.Load(stylesheet) + + 'Load the XML data file. + Dim doc As XPathDocument = New XPathDocument(filename) + + 'Create an XsltArgumentList. + Dim xslArg As XsltArgumentList = New XsltArgumentList + + 'Add an object to calculate the circumference of the circle. + Dim obj As Calculate = New Calculate + xslArg.AddExtensionObject("urn:myObj", obj) + + 'Create an XmlTextWriter to output to the console. + Dim writer As XmlTextWriter = New XmlTextWriter(Console.Out) + + 'Transform the file. + xslt.Transform(doc, xslArg, writer, Nothing) + writer.Close() + + End Sub + + 'Calculates the circumference of a circle given the radius. + Public Class Calculate + + Private circ As double = 0 + + Public Function Circumference(radius As Double) As Double + circ = Math.PI*2*radius + Return circ + End Function + End Class +End Class + +``` + +```csharp +using System; +using System.IO; +using System.Xml; +using System.Xml.XPath; +using System.Xml.Xsl; + +public class Sample +{ + private const String filename = "number.xml"; + private const String stylesheet = "circle.xsl"; + + public static void Main() { + + Sample test = new Sample(); + } + + public Sample() { + + //Create the XslTransform and load the style sheet. + XslTransform xslt = new XslTransform(); + xslt.Load(stylesheet); + + //Load the XML data file. + XPathDocument doc = new XPathDocument(filename); + + //Create an XsltArgumentList. + XsltArgumentList xslArg = new XsltArgumentList(); + + //Add an object to calculate the circumference of the circle. + Calculate obj = new Calculate(); + xslArg.AddExtensionObject("urn:myObj", obj); + + //Create an XmlTextWriter to output to the console. + XmlTextWriter writer = new XmlTextWriter(Console.Out); + + //Transform the file. + xslt.Transform(doc, xslArg, writer, null); + writer.Close(); + + } + + //Calculates the circumference of a circle given the radius. + public class Calculate{ + + private double circ = 0; + + public double Circumference(double radius){ + circ = Math.PI*2*radius; + return circ; + } + } +} +``` + +### 入力 + number.xml + +``` + + + + 12 + + + 37.5 + + +``` + + circle.xsl + +``` + + + + + + + + + + + + + + + +``` + +### 出力 + `` + + `` + + `12` + + `75.398223686155` + + `` + + `` + + `37.5` + + `235.61944901923448` + + `` + + `` + +## 参照 + [XslTransform クラスによる XSLT プロセッサの実装](../../../../docs/standard/data/xml/xsltransform-class-implements-the-xslt-processor.md) \ No newline at end of file diff --git a/docs/standard/datetime/TOC.md b/docs/standard/datetime/TOC.md new file mode 100644 index 00000000000..b9d8ad1d751 --- /dev/null +++ b/docs/standard/datetime/TOC.md @@ -0,0 +1,20 @@ +# [方法 : 調整規則のあるタイム ゾーンを作成する](create-time-zones-with-adjustment-rules.md) +# [タイム ゾーンの概要](time-zone-overview.md) +# [方法 : ユーザーがあいまいな時刻を解決できるようにする](let-users-resolve-ambiguous-times.md) +# [方法 : コンピューター上に存在するタイム ゾーンを列挙する](enumerate-time-zones.md) +# [DateTime と DateTimeOffset 間の変換](converting-between-datetime-and-offset.md) +# [方法 : 調整規則のないタイム ゾーンを作成する](create-time-zones-without-adjustment-rules.md) +# [タイム ゾーン間での時刻の変換](converting-between-time-zones.md) +# [DateTimeOffset オブジェクトのインスタンス化](instantiating-a-datetimeoffset-object.md) +# [方法 : 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする](access-utc-and-local.md) +# [方法 : TimeZoneInfo オブジェクトをインスタンス化する](instantiate-time-zone-info.md) +# [日付と時刻を使用した算術演算の実行](performing-arithmetic-operations.md) +# [方法 : 日付と時刻の演算でタイム ゾーンを使用する](use-time-zones-in-arithmetic.md) +# [方法 : 埋め込みリソースからタイム ゾーンを復元する](restore-time-zones-from-an-embedded-resource.md) +# [タイム ゾーンの保存と復元](saving-and-restoring-time-zones.md) +# [ローカル システムで定義されているタイム ゾーンの検索](finding-the-time-zones-on-local-system.md) +# [方法 : 埋め込みリソースにタイム ゾーンを保存する](save-time-zones-to-an-embedded-resource.md) +# [方法 : あいまいな時刻を解決する](resolve-ambiguous-times.md) +# [日付、時刻、およびタイム ゾーン](index.md) +# [カレンダーの使用](working-with-calendars.md) +# [DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け](choosing-between-datetime.md) diff --git a/docs/standard/datetime/access-utc-and-local.md b/docs/standard/datetime/access-utc-and-local.md index 91b28e48306..5be2c864395 100644 --- a/docs/standard/datetime/access-utc-and-local.md +++ b/docs/standard/datetime/access-utc-and-local.md @@ -1,120 +1,59 @@ --- -title: "方法: 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする" -description: "方法: 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/11/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 13454d47-d957-421b-9ecd-940058b8835e -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: fcc48e40cdad25c6142dbc3a86513b816378fa4b -ms.lasthandoff: 03/02/2017 - ---- - -# 方法: 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする - -[System.TimeZoneInfo](xref:System.TimeZoneInfo) クラスに用意されている&2; つのプロパティ、`Utc` および `Local` を使用すると、コードから定義済みのタイム ゾーン オブジェクトにアクセスできます。 このトピックでは、これらのプロパティから返される `TimeZoneInfo` オブジェクトにアクセスする方法について説明します。 - -## 世界協定時刻 (UTC) の TimeZoneInfo オブジェクトにアクセスするには - -1. **static** (Visual Basic では **Shared**) [TimeZoneInfo.Utc](xref:System.TimeZoneInfo.Utc) プロパティを使用して、世界協定時刻にアクセスします。 - -2. プロパティから返された [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトをオブジェクト変数に割り当てるのではなく、そのまま [TimeZoneInfo.Utc](xref:System.TimeZoneInfo.Utc) プロパティを使用して世界協定時刻にアクセスします。 - - -## ローカル タイム ゾーンにアクセスするには - -1. **static** (Visual Basic では **Shared**) [TimeZoneInfo.Local](xref:System.TimeZoneInfo.Local) プロパティを使用して、ローカル タイム ゾーンにアクセスします。 - -2. プロパティから返された [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトをオブジェクト変数に割り当てるのではなく、そのまま [TimeZoneInfo.Local](xref:System.TimeZoneInfo.Local) プロパティを使用してローカル タイム ゾーンにアクセスします。 - -## 例 - -次のコードでは、[TimeZoneInfo.Local](xref:System.TimeZoneInfo.Local) プロパティと [TimeZoneInfo.Utc](xref:System.TimeZoneInfo.Utc) プロパティを使用して、米国およびカナダ東部標準時タイム ゾーンの時刻を変換し、コンソールにタイム ゾーンの名前を表示します。 - -```csharp -// Create Eastern Standard Time value and TimeZoneInfo object -DateTime estTime = new DateTime(2007, 1, 1, 00, 00, 00); -string timeZoneName = "Eastern Standard Time"; -try -{ - TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName); - - // Convert EST to local time - DateTime localTime = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Local); - Console.WriteLine("At {0} {1}, the local time is {2} {3}.", - estTime, - est, - localTime, - TimeZoneInfo.Local.IsDaylightSavingTime(localTime) ? - TimeZoneInfo.Local.DaylightName : - TimeZoneInfo.Local.StandardName); - - // Convert EST to UTC - DateTime utcTime = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Utc); - Console.WriteLine("At {0} {1}, the time is {2} {3}.", - estTime, - est, - utcTime, - TimeZoneInfo.Utc.StandardName); -} -catch (TimeZoneNotFoundException) -{ - Console.WriteLine("The {0} zone cannot be found in the registry.", - timeZoneName); -} -catch (InvalidTimeZoneException) -{ - Console.WriteLine("The registry contains invalid data for the {0} zone.", - timeZoneName); -} -``` - -```vb -' Create Eastern Standard Time value and TimeZoneInfo object -Dim estTime As Date = #01/01/2007 00:00:00# -Dim timeZoneName As String = "Eastern Standard Time" -Try - Dim est As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName) - - ' Convert EST to local time - Dim localTime As Date = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Local) - Console.WriteLine("At {0} {1}, the local time is {2} {3}.", _ - estTime, _ - est, _ - localTime, _ - IIf(TimeZoneInfo.Local.IsDaylightSavingTime(localTime), _ - TimeZoneInfo.Local.DaylightName, _ - TimeZoneInfo.Local.StandardName)) - - ' Convert EST to UTC - Dim utcTime As Date = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Utc) - Console.WriteLine("At {0} {1}, the time is {2} {3}.", _ - estTime, _ - est, _ - utcTime, _ - TimeZoneInfo.Utc.StandardName) -Catch e As TimeZoneNotFoundException - Console.WriteLine("The {0} zone cannot be found in the registry.", _ - timeZoneName) -Catch e As InvalidTimeZoneException - Console.WriteLine("The registry contains invalid data for the {0} zone.", _ - timeZoneName) -End Try -``` - -ローカル タイム ゾーンにアクセスする場合は、ローカル タイム ゾーンを [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクト変数に割り当てることはせず、常に [TimeZoneInfo.Local](xref:System.TimeZoneInfo.Local) プロパティを使用してください。 同様に、世界協定時刻にアクセスする場合は、UTC ゾーンを [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクト変数に割り当てることはせず、常に [TimeZoneInfo.Utc](xref:System.TimeZoneInfo.Utc) プロパティを使用してください。 これにより、[TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクト変数が外部メソッドによって無効になるのを防ぐことができます。 - - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) - -[ローカル システムで定義されているタイム ゾーンの検索](finding-the-time-zones-on-local-system.md) - +title: "方法 : 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ローカル タイム ゾーンへのアクセス" + - "定義済みのタイム ゾーン" + - "タイム ゾーン [.NET Framework], local" + - "タイム ゾーン [.NET Framework], 取得" + - "タイム ゾーン [.NET Framework], UTC" + - "UTC 時刻, 定義済み" +ms.assetid: 961fb70b-83f0-4dab-a042-cb5fcd817cf5 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 方法 : 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする + クラスに用意されている 2 つのプロパティ、 および を使用すると、コードから定義済みのタイム ゾーン オブジェクトにアクセスできます。 このトピックでは、これらのプロパティから返される オブジェクトにアクセスする方法について説明します。 + +### 世界協定時刻 \(UTC: Coordinated Universal Time\) の TimeZoneInfo オブジェクトにアクセスするには + +1. `static` \(Visual Basic では `Shared`\) プロパティを使用して、世界協定時刻にアクセスします。 + +2. プロパティから返された オブジェクトをオブジェクト変数に割り当てることはせず、そのまま プロパティを使用して世界協定時刻にアクセスします。 + +### ローカル タイム ゾーンにアクセスするには + +1. `static` \(Visual Basic では `Shared`\) プロパティを使用して、ローカル システム タイム ゾーンにアクセスします。 + +2. プロパティから返された オブジェクトをオブジェクト変数に割り当てることはせず、そのまま プロパティを使用してローカル タイム ゾーンにアクセスします。 + +## 使用例 + 次のコードは、米国およびカナダ東部標準時タイム ゾーンの時刻に変換し、コンソールにタイム ゾーンの名前を表示するために のプロパティを使用します。 + + [!code-csharp[System.TimeZone2.Concepts#13](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#13)] + [!code-vb[System.TimeZone2.Concepts#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#13)] + + ローカル タイム ゾーンにアクセスする場合は、 オブジェクト変数にローカル タイム ゾーンを割り当てることはせず、必ず プロパティを使用してください。 同様に、世界協定時刻にアクセスする場合は、UTC ゾーンを オブジェクト変数に割り当てることはせず、必ず プロパティを使用してください。これにより、 オブジェクト変数が メソッド呼び出しによって無効になるのを防ぐことができます。 + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Core.dll への参照をプロジェクトに追加する。 + +- 名前空間を `using` ステートメントでインポートする \(C\# のコードで必要\)。 + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [ローカル システムで定義されているタイム ゾーンの検索](../../../docs/standard/datetime/finding-the-time-zones-on-local-system.md) + [方法 : TimeZoneInfo オブジェクトをインスタンス化する](../../../docs/standard/datetime/instantiate-time-zone-info.md) \ No newline at end of file diff --git a/docs/standard/datetime/choosing-between-datetime.md b/docs/standard/datetime/choosing-between-datetime.md index 862e8bc607f..f6370a7a8ac 100644 --- a/docs/standard/datetime/choosing-between-datetime.md +++ b/docs/standard/datetime/choosing-between-datetime.md @@ -1,357 +1,120 @@ --- -title: "DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け" -description: "DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/11/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 2dd84ee8-9f0f-4054-9537-155857a460cd -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: aeb1928be32584ee4b6acf7c9a4f4330daedc590 -ms.lasthandoff: 03/02/2017 - ---- - -# DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け - -日時情報を使用する .NET アプリケーションは非常に多様であり、その情報をさまざまな方法で使用できます。 より一般的な日時情報の用途には、次の&1; つ以上が含まれます。 - -* 日付のみを反映する (時刻情報は重要ではない)。 - -* 時刻のみを反映する (日付情報は重要ではない)。 - -* 特定の時刻と場所に関連付けられていない抽象日時を反映する (たとえば、国際的チェーンのほとんどのストアは週中の午前 9:00 にオープンする)。 - -* .NET アプリケーションの外部ソースから日時情報を取得する (通常、日時情報は単純なデータ型に格納される)。 - -* 単一の時点を一意かつ明確に識別する。 ホスト システムでのみ日付と時刻を明確にする必要があるアプリケーションもあれば、システム全体で明確にする必要があるアプリケーションもあります (つまり、1 つのシステムでシリアル化される日付は有意に逆シリアル化し、世界中のどの場所においても別のシステムで使用できます)。 - -* 関連する複数の時刻を保持する (要求元の現地時刻やサーバーの Web 要求受信時刻など)。 - -* 日付と時刻の演算を実行する (これにより、おそらく単一時点が一意かつ明確に識別される)。 - -.NET には、[System.DateTime](xref:System.DateTime)、[System.DateTimeOffset](xref:System.DateTimeOffset)、[System.TimeSpan](xref:System.TimeSpan)、[System.TimeZoneInfo](xref:System.TimeZoneInfo) の各型が含まれます。このすべては、日付と時刻を使用するアプリケーションを構築するために使用できます。 - +title: "DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "DateTimeOffset 構造体" + - "TimeZoneInfo クラス" + - "タイム ゾーン [.NET Framework]、一般的な使用方法" + - "日付と時刻のクラス [.NET Framework]" + - "タイム ゾーン [.NET Framework]、型のオプション" + - "DateTime 構造体" +ms.assetid: 07f17aad-3571-4014-9ef3-b695a86f3800 +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け +日時情報を使用する [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] アプリケーションは非常に多様であり、その情報をさまざまな方法で使用できます。 より一般的な日時情報の用途には、次の 1 つ以上が含まれます。 + +- 日付のみを反映する \(時刻情報は重要ではない\)。 + +- 時刻のみを反映する \(日付情報は重要ではない\)。 + +- 特定の時刻と場所に関連付けられていない抽象日時を反映する \(たとえば、国際的チェーンのほとんどのストアは週中の午前 9:00 にオープンする\)。 + +- [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] の外部ソースから日時情報を取得する \(通常、日時情報は単純なデータ型に格納される\)。 + +- 単一の時点を一意かつ明確に識別する。 ホスト システムでのみ日付と時刻を明確にする必要があるアプリケーションもあれば、システム全体で明確にする必要があるアプリケーションもあります \(つまり、1 つのシステムでシリアル化される日付は有意に逆シリアル化し、世界中のどの場所においても別のシステムで使用できます\)。 + +- 関連する複数の時刻を保持する \(要求元の現地時刻やサーバーの Web 要求受信時刻など\)。 + +- 日付と時刻の演算を実行する \(これにより、おそらく単一時点が一意かつ明確に識別される\)。 + + [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] には、 の各型が含まれます。このすべては、日付と時刻を使用するアプリケーションを構築するために使用できます。 + > [!NOTE] -> このトピックでは古い `TimeZone` 型については説明されません。その機能は、[System.TimeZoneInfo](xref:System.TimeZoneInfo) クラスにほぼ完全に組み込まれているからです。 開発者は可能な限り、`TimeZone` クラスの代わりに [System.TimeZoneInfo](xref:System.TimeZoneInfo) クラスを使用する必要があります。 - - -## DateTime 構造体 - -[System.DateTime](xref:System.DateTime) 値は、特定の日付と時刻を定義します。 これには日付と時刻が属するタイム ゾーンに関する限られた情報を提供する [Kind](xref:System.DateTime.Kind) プロパティが含まれています。 [Kind](xref:System.DateTime.Kind) プロパティによって返される [DateTimeKind](xref:System.DateTimeKind) 値は、[DateTime](xref:System.DateTime) 値が現地時刻 ([DateTimeKind.Local](xref:System.DateTimeKind.Local))、世界協定時刻 (UTC) ([DateTimeKind.Utc](xref:System.DateTimeKind.Utc))、指定されていない時刻 ([DateTimeKind.Unspecified](xref:System.DateTimeKind.Unspecified)) のうちのどれを表すかを示します。 - -[DateTime](xref:System.DateTime) 構造体は、次の操作を実行するアプリケーションに適しています。 - -* 日付のみを使用するアプリケーション。 - -* 時刻のみを使用するアプリケーション。 - -* 抽象日時を使用するアプリケーション。 - -* タイム ゾーン情報がない日時を使用するアプリケーション。 - -* UTC 日時のみを使用するアプリケーション。 - -* SQL データベースなど、.NET Framework の外部ソースから日時情報を取得します。 通常、これらのソースは、[DateTime](xref:System.DateTime) 構造体と互換性のある単純な形式で日時情報を格納します。 - -* 日付と時刻の演算を実行しますが、これは一般的な結果に関するものです。 たとえば、6 カ月を特定の日付と時刻に加算する加算演算では、多くの場合、結果を夏時間に合わせて調整するかどうかは重要ではありません。 - -特定の [DateTime](xref:System.DateTime) 値が UTC を表さない場合、通常、その日付と時刻の値は、あいまいであるか、その移植性に限定されます。 たとえば、[DateTime](xref:System.DateTime) 値が現地時刻を表す場合、そのローカル タイム ゾーン内で移植することができます (つまり、同じタイム ゾーンにある別のシステムで値が逆シリアル化されると、その値は明確に単一時点を識別します)。 ローカル タイム ゾーン外では、その [DateTime](xref:System.DateTime) 値は複数の意味を持つ場合があります。 値の [Kind](xref:System.DateTime.Kind) プロパティが [DateTimeKind.Unspecified](xref:System.DateTimeKind.Unspecified) の場合、移植性は低くなります。同じタイム ゾーン内であいまいになり、最初にシリアル化したのと同じシステムにおいてさえもあいまいになる可能性があります。 [DateTime](xref:System.DateTime) 値が UTC を表す場合のみ、値が使用されるシステムまたはタイム ゾーンに関係なく、その値は明確に単一時点を識別します。 - +> このトピックには 4 番目の型の については説明されません。その機能は、 クラスに完全に組み込まれているからです。 開発者は可能な限り、 クラスの代わりに クラスを使用する必要があります。 + +## DateTime 構造体 + 値は、特定の日付と時刻を定義します。[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] のバージョン 2.0 以降、これには日付と時刻が属するタイム ゾーンに関する限られた情報を提供する プロパティが含まれています。 プロパティによって返される 値は、 値が現地時刻 \(\)、世界協定時刻 \(UTC\) \(\)、指定されていない時刻 \(\) のうちのどれを表すかを示します。 + + 構造体は、次の操作を実行するアプリケーションに適しています。 + +- 日付のみを使用するアプリケーション。 + +- 時刻のみを使用するアプリケーション。 + +- 抽象日時を使用するアプリケーション。 + +- タイム ゾーン情報がない日時を使用するアプリケーション。 + +- UTC 日時のみを使用するアプリケーション。 + +- SQL データベースなど、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] の外部ソースから日時情報を取得します。 通常、これらのソースは、 構造体と互換性のある単純な形式で日時情報を格納します。 + +- 日付と時刻の演算を実行しますが、これは一般的な結果に関するものです。 たとえば、6 カ月を特定の日付と時刻に加算する加算演算では、多くの場合、結果を夏時間に合わせて調整するかどうかは重要ではありません。 + + 特定の 値が UTC を表さない場合、通常、その日付と時刻の値は、あいまいであるか、その移植性に限定されます。 たとえば、 値が現地時刻を表す場合、そのローカル タイム ゾーン内で移植することができます \(つまり、同じタイム ゾーンにある別のシステムで値が逆シリアル化されると、その値は明確に単一時点を識別します\)。 ローカル タイム ゾーン外では、その 値は複数の意味を持つ場合があります。 値の プロパティが の場合、移植性は低くなります。同じタイム ゾーン内であいまいになり、最初にシリアル化したのと同じシステムにおいてさえもあいまいになる可能性があります。 値が UTC を表す場合のみ、値が使用されるシステムまたはタイム ゾーンに関係なく、その値は明確に単一時点を識別します。 + > [!IMPORTANT] -> [DateTime](xref:System.DateTime) データを保存または共有する際、UTC を使用する必要があり、[DateTime](xref:System.DateTime) 値の [Kind](xref:System.DateTime.Kind) プロパティを [DateTimeKind.Utc](xref:System.DateTimeKind.Utc) に設定する必要があります。 - -## DateTimeOffset 構造体 - -[System.DateTimeOffset](xref:System.DateTimeOffset) 構造体は、日付と時刻の値、およびその値と UTC との差異を示すオフセットを表します。 そのため、値は常に明確に単一時点を識別します。 - -[DateTimeOffset](xref:System.DateTimeOffset) 型には、[DateTime](xref:System.DateTime) 型のすべての機能に加え、タイム ゾーンの処理機能が含まれます。 そのため、次の操作を実行するアプリケーションに適しています。 - -* 単一の時点を一意かつ明確に識別する。 [DateTimeOffset](xref:System.DateTimeOffset) 型を使用して、「現在」の意味を明確に定義し、トランザクションの時刻を記録し、システム イベントまたはアプリケーション イベントの時刻を記録し、ファイル作成時刻とファイル変更時刻を記録することができます。 - -* 一般的な日付と時刻の演算を実行する。 - -* その時刻が&2; つの別々の値または構造体の&2; つのメンバーである場合、関連する複数の時刻を保持する。 - +> データを保存または共有する際、UTC を使用する必要があり、 値の プロパティを に設定する必要があります。 + +## DateTimeOffset 構造体 + 構造体は、日付と時刻の値、およびその値と UTC との差異を示すオフセットを表します。 そのため、値は常に明確に単一時点を識別します。 + + 型には、 型のすべての機能に加え、タイム ゾーンの処理機能が含まれます。 そのため、次の操作を実行するアプリケーションに適しています。 + +- 単一の時点を一意かつ明確に識別する。 型を使用して、「現在」の意味を明確に定義し、トランザクションの時刻を記録し、システム イベントまたはアプリケーション イベントの時刻を記録し、ファイル作成時刻とファイル変更時刻を記録することができます。 + +- 一般的な日付と時刻の演算を実行する。 + +- その時刻が 2 つの別々の値または構造体の 2 つのメンバーである場合、関連する複数の時刻を保持する。 + > [!NOTE] -> [DateTimeOffset](xref:System.DateTimeOffset) 値のこの用途は、[DateTime](xref:System.DateTime) 値の用途と比べてはるかに一般的です。 その結果、[DateTimeOffset](xref:System.DateTimeOffset) はアプリケーション開発の既定の日付時刻型と見なされます。 - -[DateTimeOffset](xref:System.DateTimeOffset) 値は特定のタイム ゾーンと関連付けられていませんが、さまざまなタイム ゾーンから派生することができます。 これを説明するために、いくつかの [DateTimeOffset](xref:System.DateTimeOffset) 値 (ローカルの太平洋標準時を含む) が属することができるタイム ゾーンの一覧を次の例に示します。 - -```csharp -using System; -using System.Collections.ObjectModel; - -public class TimeOffsets -{ - public static void Main() - { - DateTime thisDate = new DateTime(2007, 3, 10, 0, 0, 0); - DateTime dstDate = new DateTime(2007, 6, 10, 0, 0, 0); - DateTimeOffset thisTime; - - thisTime = new DateTimeOffset(dstDate, new TimeSpan(-7, 0, 0)); - ShowPossibleTimeZones(thisTime); - - thisTime = new DateTimeOffset(thisDate, new TimeSpan(-6, 0, 0)); - ShowPossibleTimeZones(thisTime); - - thisTime = new DateTimeOffset(thisDate, new TimeSpan(+1, 0, 0)); - ShowPossibleTimeZones(thisTime); - } - - private static void ShowPossibleTimeZones(DateTimeOffset offsetTime) - { - TimeSpan offset = offsetTime.Offset; - ReadOnlyCollection timeZones; - - Console.WriteLine("{0} could belong to the following time zones:", - offsetTime.ToString()); - // Get all time zones defined on local system - timeZones = TimeZoneInfo.GetSystemTimeZones(); - // Iterate time zones - foreach (TimeZoneInfo timeZone in timeZones) - { - // Compare offset with offset for that date in that time zone - if (timeZone.GetUtcOffset(offsetTime.DateTime).Equals(offset)) - Console.WriteLine(" {0}", timeZone.DisplayName); - } - Console.WriteLine(); - } -} -// This example displays the following output to the console: -// 6/10/2007 12:00:00 AM -07:00 could belong to the following time zones: -// (GMT-07:00) Arizona -// (GMT-08:00) Pacific Time (US & Canada) -// (GMT-08:00) Tijuana, Baja California -// -// 3/10/2007 12:00:00 AM -06:00 could belong to the following time zones: -// (GMT-06:00) Central America -// (GMT-06:00) Central Time (US & Canada) -// (GMT-06:00) Guadalajara, Mexico City, Monterrey - New -// (GMT-06:00) Guadalajara, Mexico City, Monterrey - Old -// (GMT-06:00) Saskatchewan -// -// 3/10/2007 12:00:00 AM +01:00 could belong to the following time zones: -// (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna -// (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague -// (GMT+01:00) Brussels, Copenhagen, Madrid, Paris -// (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb -// (GMT+01:00) West Central Africa -``` - -```vb -Imports System.Collections.ObjectModel - -Module TimeOffsets - Public Sub Main() - Dim thisTime As DateTimeOffset - - thisTime = New DateTimeOffset(#06/10/2007#, New TimeSpan(-7, 0, 0)) - ShowPossibleTimeZones(thisTime) - - thisTime = New DateTimeOffset(#03/10/2007#, New TimeSpan(-6, 0, 0)) - ShowPossibleTimeZones(thisTime) - - thisTime = New DateTimeOffset(#03/10/2007#, New TimeSpan(+1, 0, 0)) - ShowPossibleTimeZones(thisTime) - End Sub - - Private Sub ShowPossibleTimeZones(offsetTime As DateTimeOffset) - Dim offset As TimeSpan = offsetTime.Offset - Dim timeZones As ReadOnlyCollection(Of TimeZoneInfo) - - Console.WriteLine("{0} could belong to the following time zones:", _ - offsetTime.ToString()) - ' Get all time zones defined on local system - timeZones = TimeZoneInfo.GetSystemTimeZones() - ' Iterate time zones - For Each timeZone As TimeZoneInfo In timeZones - ' Compare offset with offset for that date in that time zone - If timeZone.GetUtcOffset(offsetTime.DateTime).Equals(offset) Then - Console.WriteLine(" {0}", timeZone.DisplayName) - End If - Next - Console.WriteLine() - End Sub -End Module -' This example displays the following output to the console: -' 6/10/2007 12:00:00 AM -07:00 could belong to the following time zones: -' (GMT-07:00) Arizona -' (GMT-08:00) Pacific Time (US & Canada) -' (GMT-08:00) Tijuana, Baja California -' -' 3/10/2007 12:00:00 AM -06:00 could belong to the following time zones: -' (GMT-06:00) Central America -' (GMT-06:00) Central Time (US & Canada) -' (GMT-06:00) Guadalajara, Mexico City, Monterrey - New -' (GMT-06:00) Guadalajara, Mexico City, Monterrey - Old -' (GMT-06:00) Saskatchewan -' -' 3/10/2007 12:00:00 AM +01:00 could belong to the following time zones: -' (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna -' (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague -' (GMT+01:00) Brussels, Copenhagen, Madrid, Paris -' (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb -' (GMT+01:00) West Central Africa -``` - -この例の日付と時刻の値はそれぞれ少なくとも&3; つの異なるタイム ゾーンに属することができることを出力は示しています。 [DateTimeOffset](xref:System.DateTimeOffset) 値の 6/10/2007 は、日付と時刻の値が夏時間を表す場合、UTC のそのオフセットは必ずしも元のタイム ゾーンの基本 UTC オフセット、またはその表示名から見つかる UTC のオフセットと一致しないことを示しています。 これは、単一の [DateTimeOffset](xref:System.DateTimeOffset) 値はそのタイム ゾーンと密接に関連していないために夏時間との間のタイム ゾーンの遷移を反映することができないことを意味しています。 これは特に、日付と時刻の演算を使用して [DateTimeOffset](xref:System.DateTimeOffset) 値を操作する際に問題となる可能性があります。 タイム ゾーンの調整規則を考慮に入れた日付と時刻の演算を実行する方法については、「[日付と時刻を使用した算術演算の実行](performing-arithmetic-operations.md)」を参照してください。 - -## TimeSpan 構造体 - -[System.TimeSpan](xref:System.TimeSpan) 構造体は、時間間隔を表します。 その&2; つの一般的な用途は、次のとおりです。 - -* 2 つの日付と時刻の値の間の時間を反映する。 たとえば、ある値から [DateTime](xref:System.DateTime) 値を減算すると、[TimeSpan](xref:System.TimeSpan) 値が返されます。 - -* 経過時間を測定する。 たとえば、[Stopwatch.Elapsed](xref:System.Diagnostics.Stopwatch.Elapsed) プロパティは、経過時間の測定を開始する [System.Diagnostics.Stopwatch](xref:System.Diagnostics.Stopwatch) メソッドの&1; つを呼び出してから経過した時間間隔を反映する [TimeSpan](xref:System.TimeSpan) 値を返します。 - -値が特定時刻への参照がない値が時間を反映する際、[DateTime](xref:System.DateTime) 値の代わりに [TimeSpan](xref:System.TimeSpan) 値を使用することもできます。 この用途は [DateTime.TimeOfDay](xref:System.DateTime.TimeOfDay) および [DateTimeOffset.TimeOfDay](xref:System.DateTimeOffset.TimeOfDay) プロパティと似ています。これらのプロパティは、日付への参照なしの時間を表す [TimeSpan](xref:System.TimeSpan) 値を返します。 たとえば、[TimeSpan](xref:System.TimeSpan) 構造体を使用して、ストアの開店時刻または閉店時刻を反映したり、標準イベントが発生したときの時刻を表したりするために使用できます。 - -以下の例では、開店時刻と閉店時刻用の [TimeSpan](xref:System.TimeSpan) オブジェクト、およびストアのタイム ゾーンを表す [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトを含む `StoreInfo` 構造体を定義します。 構造体には、`IsOpenNow`、`IsOpenAt` という&2; つのメソッドも含まれます。これは、ローカル タイム ゾーンにいると想定されるユーザーによって指定された時刻にストアがオープンするかどうかを示します。 - -```csharp -using System; - -public struct StoreInfo -{ - public String store; - public TimeZoneInfo tz; - public TimeSpan open; - public TimeSpan close; - - public bool IsOpenNow() - { - return IsOpenAt(DateTime.TimeOfDay); - } - - public bool IsOpenAt(TimeSpan time) - { - TimeZoneInfo local = TimeZoneInfo.Local; - TimeSpan offset = TimeZoneInfo.BaseUtcOffset; - - // Is the store in the same time zone? - if (tz.Equals(local)) { - return time >= open & time <= close; - } - } -} -``` - -```vb -Public Structure StoreInfo - Dim store As String - Dim tz As TimeZoneInfo - Dim open As TimeSpan - Dim close As TimeSpan - - Public Function IsOpenNow() As Boolean - Return IsOpenAt(Date.Now.TimeOfDay) - End Function - - Public Function IsOpenAt(time As TimeSpan) As Boolean - Dim local As TimeZoneInfo = TimeZoneInfo.Local - Dim offset As TimeSpan = TimeZoneInfo.Local.BaseUtcOffset - - ' Is the store in the same time zone? - If tz.Equals(local) Then - Return time >= open And time <= close - Else - Dim delta As TimeSpan = TimeSpan.Zero - Dim storeDelta As TimeSpan = TimeSpan.Zero - - ' Is it daylight saving time in either time zone? - If local.IsDaylightSavingTime(Date.Now.Date + time) Then - delta = local.GetAdjustmentRules(local.GetAdjustmentRules().Length - 1).DaylightDelta - End If - If tz.IsDaylightSavingTime(TimeZoneInfo.ConvertTime(Date.Now.Date + time, local, tz)) - storeDelta = tz.GetAdjustmentRules(local.GetAdjustmentRules().Length - 1).DaylightDelta - End If - Dim comparisonTime As TimeSpan = time + (offset - tz.BaseUtcOffset).Negate() + (delta - storeDelta).Negate - Return (comparisonTime >= open And comparisonTime <= close) - End If - End Function -End Structure -``` - -`StoreInfo` 構造体をクライアント コードで次のように使用できます。 - -```csharp -public class Example -{ - public static void Main() - { - // Instantiate a StoreInfo object. - var store103 = new StoreInfo(); - store103.store = "Store #103"; - store103.tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); - // Store opens at 8:00. - store103.open = new TimeSpan(8, 0, 0); - // Store closes at 9:30. - store103.close = new TimeSpan(21, 30, 0); - - Console.WriteLine("Store is open now at {0}: {1}", - DateTime.TimeOfDay, store103.IsOpenNow()); - TimeSpan[] times = { new TimeSpan(8, 0, 0), new TimeSpan(21, 0, 0), - new TimeSpan(4, 59, 0), new TimeSpan(18, 31, 0) }; - foreach (var time in times) - Console.WriteLine("Store is open at {0}: {1}", - time, store103.IsOpenAt(time)); - } -} -// The example displays the following output: -// Store is open now at 15:29:01.6129911: True -// Store is open at 08:00:00: True -// Store is open at 21:00:00: False -// Store is open at 04:59:00: False -// Store is open at 18:31:00: False -``` - -```vb -Module Example - Public Sub Main() - ' Instantiate a StoreInfo object. - Dim store103 As New StoreInfo() - store103.store = "Store #103" - store103.tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time") - ' Store opens at 8:00. - store103.open = new TimeSpan(8, 0, 0) - ' Store closes at 9:30. - store103.close = new TimeSpan(21, 30, 0) - - Console.WriteLine("Store is open now at {0}: {1}", - Date.Now.TimeOfDay, store103.IsOpenNow()) - Dim times() As TimeSpan = { New TimeSpan(8, 0, 0), - New TimeSpan(21, 0, 0), - New TimeSpan(4, 59, 0), - New TimeSpan(18, 31, 0) } - For Each time In times - Console.WriteLine("Store is open at {0}: {1}", - time, store103.IsOpenAt(time)) - Next - End Sub -End Module -' The example displays the following output: -' Store is open now at 15:29:01.6129911: True -' Store is open at 08:00:00: True -' Store is open at 21:00:00: False -' Store is open at 04:59:00: False -' Store is open at 18:31:00: False -``` - -## TimeZoneInfo クラス - -[System.TimeZoneInfo](xref:System.TimeZoneInfo) クラスは地球のタイム ゾーンを表し、1 つのタイム ゾーンの日付と時刻の値を、別のタイム ゾーンの日付と時刻の値に変換できるようにします。 [TimeZoneInfo](xref:System.TimeZoneInfo) クラスにより、日付と時刻を使用して、どの日付と時刻の値も明確に単一時点を識別できるようにすることができます。 - -場合によっては、[TimeZoneInfo](xref:System.TimeZoneInfo) クラスをフル活用するために、開発作業をさらに実行する必要が生じることもあります。 日付と時刻の値は、それが属するタイム ゾーンに密接に関連付けられていません。 結果として、アプリケーションが日付と時刻をその関連タイム ゾーンとリンクするメカニズムを提供していない場合、特定の日付と時刻の値とそのタイム ゾーンの関連付けは簡単に解除されます。 この情報をリンクする&1; つの方法は、日付と時刻の値とその関連タイム ゾーン オブジェクトの両方を含むクラスまたは構造体を定義するという方法です。 - -日付と時刻のオブジェクトをインスタンスするときにその日付と時刻の値が属するタイム ゾーンがわかっている場合のみ、.NET でタイム ゾーンのサポートを利用できます。 特に Web またはネットワーク アプリケーションでは、これは該当しません。 - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) +> 値のこの用途は、 値の用途と比べてはるかに一般的です。 その結果、 はアプリケーション開発の既定の日付時刻型と見なされます。 + + 値は特定のタイム ゾーンと関連付けられていませんが、さまざまなタイム ゾーンから派生することができます。 これを説明するために、いくつかの 値 \(ローカルの太平洋標準時を含む\) が属することができるタイム ゾーンの一覧を次の例に示します。 + + [!code-csharp[System.DateTimeOffset.Conceptual#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/cs/Conceptual1.cs#1)] + [!code-vb[System.DateTimeOffset.Conceptual#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/vb/Conceptual1.vb#1)] + + この例の日付と時刻の値はそれぞれ少なくとも 3 つの異なるタイム ゾーンに属することができることを出力は示しています。 値の 6\/10\/2007 は、日付と時刻の値が夏時間を表す場合、UTC のそのオフセットは必ずしも元のタイム ゾーンの基本 UTC オフセット、またはその表示名から見つかる UTC のオフセットと一致しないことを示しています。 これは、単一の 値はそのタイム ゾーンと密接に関連していないために夏時間との間のタイム ゾーンの遷移を反映することができないことを意味しています。 これは特に、日付と時刻の演算を使用して 値を操作する際に問題となる可能性があります。 \(タイム ゾーンの調整規則を考慮に入れた日付と時刻の演算を実行する方法については、「[日付と時刻を使用した算術演算の実行](../../../docs/standard/datetime/performing-arithmetic-operations.md)」をご覧ください\)。 + +## TimeSpan 構造体 + 構造体は、時間間隔を表します。 その 2 つの一般的な用途は、次のとおりです。 + +- 2 つの日付と時刻の値の間の時間を反映する。 たとえば、ある値から 値を減算すると、 値が返されます。 + +- 経過時間を測定する。 たとえば、 プロパティは、経過時間の測定を開始する メソッドの 1 つを呼び出してから経過した時間間隔を反映する 値を返します。 + + 値が特定時刻への参照がない値が時間を反映する際、 値の代わりに 値を使用することもできます。 この用途は および プロパティと似ています。これらのプロパティは、日付への参照なしの時間を表す 値を返します。 たとえば、 構造体を使用して、ストアの開店時刻または閉店時刻を反映したり、標準イベントが発生したときの時刻を表したりするために使用できます。 + + 以下の例では、開店時刻と閉店時刻用の オブジェクト、およびストアのタイム ゾーンを表す オブジェクトを含む `StoreInfo` 構造体を定義します。 構造体には、`IsOpenNow`、`IsOpenAt` という 2 つのメソッドも含まれます。これは、ローカル タイム ゾーンにいると想定されるユーザーによって指定された時刻にストアがオープンするかどうかを示します。 + + [!code-csharp[Conceptual.ChoosingDates#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.choosingdates/cs/datetimereplacement1.cs#1)] + [!code-vb[Conceptual.ChoosingDates#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.choosingdates/vb/datetimereplacement1.vb#1)] + + `StoreInfo` 構造体をクライアント コードで次のように使用できます。 + + [!code-csharp[Conceptual.ChoosingDates#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.choosingdates/cs/datetimereplacement1.cs#2)] + [!code-vb[Conceptual.ChoosingDates#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.choosingdates/vb/datetimereplacement1.vb#2)] + +## TimeZoneInfo クラス + クラスは地球のタイム ゾーンを表し、1 つのタイム ゾーンの日付と時刻の値を、別のタイム ゾーンの日付と時刻の値に変換できるようにします。 クラスにより、日付と時刻を使用して、どの日付と時刻の値も明確に単一時点を識別できるようにすることができます。 クラスを拡張することもできます。 Windows システムで提供され、レジストリで定義されているタイム ゾーン情報に依存していますが、カスタムのタイム ゾーンの作成もサポートされています。 また、タイム ゾーン情報のシリアル化と逆シリアル化もサポートされています。 + + 場合によっては、 クラスをフル活用するために、開発作業をさらに実行する必要が生じることもあります。 1 つ目に、日付と時刻の値は、それが属するタイム ゾーンに密接に関連付けられていません。 結果として、アプリケーションが日付と時刻をその関連タイム ゾーンとリンクするメカニズムを提供していない場合、特定の日付と時刻の値とそのタイム ゾーンの関連付けは簡単に解除されます。 \(この情報をリンクする 1 つの方法は、日付と時刻の値とその関連タイム ゾーン オブジェクトの両方を含むクラスまたは構造体を定義するという方法です。\) 2 つ目に、Windows XP および Windows の以前のバージョンには履歴タイム ゾーン情報に関するサポートがなく、[!INCLUDE[windowsver](../../../includes/windowsver-md.md)] には限られたサポートのみがあります。 履歴日時を処理するように設計されているアプリケーションは、カスタム タイム ゾーンを広範に利用する必要があります。 + + 日付と時刻のオブジェクトをインスタンスするときにその日付と時刻の値が属するタイム ゾーンがわかっている場合のみ、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] でタイム ゾーンのサポートを利用できます。 特に Web またはネットワーク アプリケーションでは、これは該当しません。 + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) \ No newline at end of file diff --git a/docs/standard/datetime/converting-between-datetime-and-offset.md b/docs/standard/datetime/converting-between-datetime-and-offset.md index 8fb7aca39a8..9785765b566 100644 --- a/docs/standard/datetime/converting-between-datetime-and-offset.md +++ b/docs/standard/datetime/converting-between-datetime-and-offset.md @@ -1,533 +1,128 @@ --- -title: "DateTime と DateTimeOffset 間の変換" -description: "DateTime と DateTimeOffset 間の変換" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/15/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: fab3af5b-5d0f-4384-a40a-1b5d99b30dd1 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 2ba70e9ea39148d040bdb46d5e00ea50dcbb8980 -ms.lasthandoff: 03/02/2017 - ---- - -# DateTime と DateTimeOffset 間の変換 - -[System.DateTimeOffset](xref:System.DateTimeOffset) 構造体は、[System.DateTime](xref:System.DateTime) 構造体よりも高度なタイム ゾーン対応を実現しますが、メソッド呼び出しでは [DateTime](xref:System.DateTime) パラメーターがよく使用されます。 このため、[DateTimeOffset](xref:System.DateTimeOffset) 値を [DateTime](xref:System.DateTime) 値に、またはその逆方向に変換する機能が特に重要です。 この記事では、タイム ゾーン情報をできるだけ多く保持するようにこれらの変換を実行する方法を示します。 - +title: "DateTime と DateTimeOffset 間の変換 | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "変換 (DateTimeOffset 値と DateTime 値を)" + - "変換 (時間を)" + - "Date データ型, 変換" + - "日付 [.NET Framework], 変換" + - "DateTime 構造体, 変換" + - "DateTimeOffset 構造体, 変換" + - "ローカル タイムの変換" + - "タイム ゾーン [.NET Framework], 変換" + - "UTC 時刻, 変換" +ms.assetid: b605ff97-0c45-4c24-833f-4c6a3e8be64c +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# DateTime と DateTimeOffset 間の変換 + 構造体は 構造体と比較してタイム ゾーンへの対応の程度が高くなっていますが、メソッドの呼び出しでは パラメーターを使用するのが一般的です。 このため、 との間で値を変換する機能は、特に重要になります。 ここでは、タイム ゾーン情報を可能な限り保持しながら、これらの変換を実行する方法について説明します。 + > [!NOTE] -> [DateTime](xref:System.DateTime) 型と [DateTimeOffset](xref:System.DateTimeOffset) 型は両方とも、タイム ゾーンの時刻を表す場合に制限があります。 [DateTime](xref:System.DateTime) は、その [Kind](xref:System.DateTime.Kind) プロパティによって世界協定時刻 (UTC) とシステムのローカル タイム ゾーンのみを反映できます。 [DateTimeOffset](xref:System.DateTimeOffset) は、UTC からの時間のオフセットを反映しますが、そのオフセットが所属する実際のタイム ゾーンは反映しません。 時刻の値とタイム ゾーンのサポートの詳細については、「[DateTime DateTimeOffset TimeSpan、および TimeZoneInfo の使い分け](choosing-between-datetime.md)」を参照してください。 - -## DateTime から DateTimeOffset への変換 - -[DateTimeOffset](xref:System.DateTimeOffset) 構造体は、ほとんどの変換に適した、[DateTime](xref:System.DateTime) から [DateTimeOffset](xref:System.DateTimeOffset) への変換を実行する次の&2; つの相当する方法を提供します。 - -* [DateTimeOffset(DateTime)](xref:System.DateTimeOffset) コンストラクター。[DateTime](xref:System.DateTime) 値に基づいて新しい [DateTimeOffset](xref:System.DateTimeOffset) オブジェクトを作成します。 - -* 暗黙的な変換演算子。[DateTime](xref:System.DateTime) 値を [DateTimeOffset](xref:System.DateTimeOffset) オブジェクトに割り当て可能にします。 - -UTC と現地の [DateTime](xref:System.DateTime) 値について、変換後の [DateTimeOffset](xref:System.DateTimeOffset) 値の [DateTimeOffset.Offset](xref:System.DateTimeOffset.Offset) プロパティは、UTC またはローカル タイム ゾーン オフセットを正確に反映します。 たとえば、次のコードは、UTC 時刻を同等の [DateTimeOffset](xref:System.DateTimeOffset) 値に変換します。 - -```csharp -DateTime utcTime1 = new DateTime(2008, 6, 19, 7, 0, 0); -utcTime1 = DateTime.SpecifyKind(utcTime1, DateTimeKind.Utc); -DateTimeOffset utcTime2 = utcTime1; -Console.WriteLine("Converted {0} {1} to a DateTimeOffset value of {2}", - utcTime1, - utcTime1.Kind.ToString(), - utcTime2); -// This example displays the following output to the console: -// Converted 6/19/2008 7:00:00 AM Utc to a DateTimeOffset value of 6/19/2008 7:00:00 AM +00:00 -``` - -```vb -Dim utcTime1 As Date = Date.SpecifyKind(#06/19/2008 7:00AM#, _ - DateTimeKind.Utc) -Dim utcTime2 As DateTimeOffset = utcTime1 -Console.WriteLine("Converted {0} {1} to a DateTimeOffset value of {2}", _ - utcTime1, _ - utcTime1.Kind.ToString(), _ - utcTime2) -' This example displays the following output to the console: -' Converted 6/19/2008 7:00:00 AM Utc to a DateTimeOffset value of 6/19/2008 7:00:00 AM +00:00 -``` - -この場合、`utcTime2` 変数のオフセットは 00:00 です。 同様に、次のコードは、現地時刻を同等の [DateTimeOffset](xref:System.DateTimeOffset) 値に変換します。 - -```csharp -DateTime localTime1 = new DateTime(2008, 6, 19, 7, 0, 0); -localTime1 = DateTime.SpecifyKind(localTime1, DateTimeKind.Local); -DateTimeOffset localTime2 = localTime1; -Console.WriteLine("Converted {0} {1} to a DateTimeOffset value of {2}", - localTime1, - localTime1.Kind.ToString(), - localTime2); -// This example displays the following output to the console: -// Converted 6/19/2008 7:00:00 AM Local to a DateTimeOffset value of 6/19/2008 7:00:00 AM -07:00 -``` - -```vb -Dim localTime1 As Date = Date.SpecifyKind(#06/19/2008 7:00AM#, DateTimeKind.Local) -Dim localTime2 As DateTimeOffset = localTime1 -Console.WriteLine("Converted {0} {1} to a DateTimeOffset value of {2}", _ - localTime1, _ - localTime1.Kind.ToString(), _ - localTime2) -' This example displays the following output to the console: -' Converted 6/19/2008 7:00:00 AM Local to a DateTimeOffset value of 6/19/2008 7:00:00 AM -07:00 -``` - -ただし、[Kind](xref:System.DateTime.Kind) プロパティが [DateTimeKind.Unspecified](xref:System.DateTimeKind.Unspecified) である [DateTime](xref:System.DateTime) 値については、これらの&2; つの変換メソッドは、オフセットがローカル タイム ゾーンのオフセットである [DateTimeOffset](xref:System.DateTimeOffset) 値を生成します。 米国の太平洋標準時ゾーンでの実行例を次に示します。 - -```csharp -DateTime time1 = new DateTime(2008, 6, 19, 7, 0, 0); // Kind is DateTimeKind.Unspecified -DateTimeOffset time2 = time1; -Console.WriteLine("Converted {0} {1} to a DateTimeOffset value of {2}", - time1, - time1.Kind.ToString(), - time2); -// This example displays the following output to the console: -// Converted 6/19/2008 7:00:00 AM Unspecified to a DateTimeOffset value of 6/19/2008 7:00:00 AM -07:00 -``` - -```vb -Dim time1 As Date = #06/19/2008 7:00AM# ' Kind is DateTimeKind.Unspecified -Dim time2 As DateTimeOffset = time1 -Console.WriteLine("Converted {0} {1} to a DateTimeOffset value of {2}", _ - time1, _ - time1.Kind.ToString(), _ - time2) -' This example displays the following output to the console: -' Converted 6/19/2008 7:00:00 AM Unspecified to a DateTimeOffset value of 6/19/2008 7:00:00 AM -07:00 -``` - -[DateTime](xref:System.DateTime) 値がローカル タイム ゾーンまたは UTC 以外の何らかの日時を反映している場合は、オーバーロードされた [DateTimeOffset(DateTime, TimeSpan)](xref:System.DateTimeOffset) コンストラクターを呼び出して、この値を [DateTimeOffset](xref:System.DateTimeOffset) 値に変換し、そのタイム ゾーン情報を保持することができます。 たとえば、次の例では、中部標準時を反映する [DateTimeOffset](xref:System.DateTimeOffset) オブジェクトをインスタンス化します。 - -```csharp -DateTime time1 = new DateTime(2008, 6, 19, 7, 0, 0); // Kind is DateTimeKind.Unspecified -try -{ - DateTimeOffset time2 = new DateTimeOffset(time1, - TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(time1)); - Console.WriteLine("Converted {0} {1} to a DateTime value of {2}", - time1, - time1.Kind.ToString(), - time2); -} -// Handle exception if time zone is not defined in registry -catch (TimeZoneNotFoundException) -{ - Console.WriteLine("Unable to identify target time zone for conversion."); -} -// This example displays the following output to the console: -// Converted 6/19/2008 7:00:00 AM Unspecified to a DateTime value of 6/19/2008 7:00:00 AM -05:00 -``` - -```vb -Dim time1 As Date = #06/19/2008 7:00AM# ' Kind is DateTimeKind.Unspecified -Try - Dim time2 As New DateTimeOffset(time1, _ - TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(time1)) - Console.WriteLine("Converted {0} {1} to a DateTime value of {2}", _ - time1, _ - time1.Kind.ToString(), _ - time2) -' Handle exception if time zone is not defined in registry -Catch e As TimeZoneNotFoundException - Console.WriteLine("Unable to identify target time zone for conversion.") -End Try -' This example displays the following output to the console: -' Converted 6/19/2008 7:00:00 AM Unspecified to a DateTime value of 6/19/2008 7:00:00 AM -05:00 -``` - -このコンストラクター オーバーロードの&2; 番目のパラメーターは、UTC からの時刻のオフセットを表す [System.TimeSpan](xref:System.TimeSpan) オブジェクトです。このオブジェクトは、時刻の対応するタイム ゾーンの [TimeZoneInfo.GetUtcOffset(DateTime)](xref:System.TimeZoneInfo) メソッドを呼び出して取得する必要があります。 このメソッドの単一のパラメーターは、変換する日時を表す [DateTime](xref:System.DateTime) 値です。 タイム ゾーンで夏時間がサポートされている場合、このパラメーターにより、このメソッドはその特定の日時に対して適切なオフセットを決定できます。 - -## DateTimeOffset から DateTime への変換 - -[DateTimeOffset](xref:System.DateTimeOffset) から [DateTime](xref:System.DateTime) への変換の実行には、[DateTime](xref:System.DateTime) プロパティが最もよく使用されます。 ただし、次の例に示すように、このプロパティは、[Kind](xref:System.DateTime.Kind) プロパティが [DateTimeKind.Unspecified](xref:System.DateTimeKind.Unspecified) である [DateTime](xref:System.DateTime) 値を返します。 - -```csharp -DateTime baseTime = new DateTime(2008, 6, 19, 7, 0, 0); -DateTimeOffset sourceTime; -DateTime targetTime; - -// Convert UTC to DateTime value -sourceTime = new DateTimeOffset(baseTime, TimeSpan.Zero); -targetTime = sourceTime.DateTime; -Console.WriteLine("{0} converts to {1} {2}", - sourceTime, - targetTime, - targetTime.Kind.ToString()); - -// Convert local time to DateTime value -sourceTime = new DateTimeOffset(baseTime, - TimeZoneInfo.Local.GetUtcOffset(baseTime)); -targetTime = sourceTime.DateTime; -Console.WriteLine("{0} converts to {1} {2}", - sourceTime, - targetTime, - targetTime.Kind.ToString()); - -// Convert Central Standard Time to a DateTime value -try -{ - TimeSpan offset = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(baseTime); - sourceTime = new DateTimeOffset(baseTime, offset); - targetTime = sourceTime.DateTime; - Console.WriteLine("{0} converts to {1} {2}", - sourceTime, - targetTime, - targetTime.Kind.ToString()); -} -catch (TimeZoneNotFoundException) -{ - Console.WriteLine("Unable to create DateTimeOffset based on U.S. Central Standard Time."); -} -// This example displays the following output to the console: -// 6/19/2008 7:00:00 AM +00:00 converts to 6/19/2008 7:00:00 AM Unspecified -// 6/19/2008 7:00:00 AM -07:00 converts to 6/19/2008 7:00:00 AM Unspecified -// 6/19/2008 7:00:00 AM -05:00 converts to 6/19/2008 7:00:00 AM Unspecified -``` - -```vb -Const baseTime As Date = #06/19/2008 7:00AM# -Dim sourceTime As DateTimeOffset -Dim targetTime As Date - -' Convert UTC to DateTime value -sourceTime = New DateTimeOffset(baseTime, TimeSpan.Zero) -targetTime = sourceTime.DateTime -Console.WriteLine("{0} converts to {1} {2}", _ - sourceTime, _ - targetTime, _ - targetTime.Kind.ToString()) - -' Convert local time to DateTime value -sourceTime = New DateTimeOffset(baseTime, _ - TimeZoneInfo.Local.GetUtcOffset(baseTime)) -targetTime = sourceTime.DateTime -Console.WriteLine("{0} converts to {1} {2}", _ - sourceTime, _ - targetTime, _ - targetTime.Kind.ToString()) - -' Convert Central Standard Time to a DateTime value -Try - Dim offset As TimeSpan = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(baseTime) - sourceTime = New DateTimeOffset(baseTime, offset) - targetTime = sourceTime.DateTime -Console.WriteLine("{0} converts to {1} {2}", _ - sourceTime, _ - targetTime, _ - targetTime.Kind.ToString()) -Catch e As TimeZoneNotFoundException - Console.WriteLine("Unable to create DateTimeOffset based on U.S. Central Standard Time.") -End Try -' This example displays the following output to the console: -' 6/19/2008 7:00:00 AM +00:00 converts to 6/19/2008 7:00:00 AM Unspecified -' 6/19/2008 7:00:00 AM -07:00 converts to 6/19/2008 7:00:00 AM Unspecified -' 6/19/2008 7:00:00 AM -05:00 converts to 6/19/2008 7:00:00 AM Unspecified -``` - -つまり、[DateTime](xref:System.DateTime) プロパティを使用すると、変換によって [DateTimeOffset](xref:System.DateTimeOffset) 値と UTC との関係に関するすべての情報が失われます。 このことは、UTC 時刻またはシステムの現地時刻に対応する [DateTimeOffset](xref:System.DateTimeOffset) 値に影響を与えます。これは、[DateTime](xref:System.DateTime) 構造体が、その [Kind](xref:System.DateTime.Kind) プロパティでこれらの&2; つのタイム ゾーンのみを反映するためです。 - -[DateTimeOffset](xref:System.DateTimeOffset) を [DateTime](xref:System.DateTime) 値に変換するときにできるだけ多くのタイム ゾーン情報を保持するには、[DateTimeOffset.UtcDateTime](xref:System.DateTimeOffset.UtcDateTime) プロパティと [DateTimeOffset.LocalDateTime](xref:System.DateTimeOffset.LocalDateTime) プロパティを使用します。 - -## UTC 時刻の変換 - -変換された [DateTime](xref:System.DateTime) 値が UTC 時刻であることを示すには、[DateTimeOffset.UtcDateTime](xref:System.DateTimeOffset.UtcDateTime) プロパティの値を取得します。 このプロパティは、[DateTimeOffset.DateTime](xref:System.DateTimeOffset.DateTime) プロパティと次の&2; つの点で異なります。 - -* [Kind](xref:System.DateTime.Kind) プロパティが [DateTimeKind.Utc](xref:System.DateTimeKind.Utc) である [DateTime](xref:System.DateTime) 値を返します。 - -* [DateTimeOffset.Offset](xref:System.DateTimeOffset.Offset) プロパティ値が [TimeSpan.Zero](xref:System.TimeSpan.Zero) と等しくない場合、時刻を UTC に変換します。 - +> 型と 型には、タイム ゾーンで時刻を表すときにいくつかの制限事項があります。 プロパティを使用すると、 は世界協定時刻 \(UTC: Coordinated Universal Time\) とシステムのローカル タイム ゾーンのみを反映できます。 は、UTC からの時刻のオフセットを反映しますが、そのオフセットが属する実際のタイム ゾーンは反映しません。 時刻の値とタイム ゾーンのサポートの詳細については、「[DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け](../../../docs/standard/datetime/choosing-between-datetime.md)」を参照してください。 + +## DateTime から DateTimeOffset への変換 + 構造体は、大部分の変換処理に適する、 から への変換を実行するための方法を 2 つ提供します。これらはどちらも同等の効果があります。 + +- コンストラクター。 値に基づいて、新しい オブジェクトを作成します。 + +- 暗黙の変換演算子。 オブジェクトに対し、 値を割り当てることができます。 + + UTC およびローカルの 値では、結果として出力された 値の プロパティに、UTC またはローカル タイム ゾーン オフセットが正確に反映されます。 たとえば、次に示すコードでは、UTC 時刻を同等の 値に変換します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#1)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#1)] + + この場合、`utcTime2` 変数のオフセットは 00:00 です。 同様に、次に示すコードでは、ローカル タイムを同等の 値に変換します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#2)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#2)] + + ただし、 値 \( プロパティが \) である場合は、これらの 2 つの変換メソッドにより、オフセットにローカル タイム ゾーンが設定された 値が生成されます。 これは米国の太平洋標準時タイム ゾーンで実行するには、次の例に示します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#3](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#3)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#3)] + + 値がローカル タイム ゾーンでも UTC でもない日付と時刻を反映する場合は、その値を 値に変換し、オーバーロードされた コンストラクターを呼び出すことによって、タイム ゾーン情報を保持できます。 たとえば、中部標準時を反映する オブジェクトをインスタンス化する例を次に示します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#4](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#4)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#4)] + + 時刻の対応するタイム ゾーンの メソッドを呼び出して、コンストラクター オーバーロードに対する 2 番目のパラメーターである オブジェクト \(UTC からの時刻のオフセットを表す\) を取得する必要があります。 このメソッドの唯一のパラメーターは、変換される日付と時刻を表す 値です。 夏時間をサポートするタイム ゾーンである場合にこのパラメーターを使用すると、メソッドによって特定の日付と時刻に対する適切なオフセットを決定できます。 + +## DateTimeOffset から DateTime への変換 + プロパティは、一般に から への変換を実行するときに使用されます。 ただし、次の例に示すように、 プロパティが である 値を返します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#5](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#5)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#5)] + + これは、 プロパティが設定された状態で変換を行うと、UTC に対する 値の関係が削除されることを意味します。 これは、UTC 時刻またはシステムの現地時刻に対応する 値に影響します。その理由は、 構造体が反映するのは プロパティに設定されている 2 つのタイム ゾーンだけであるからです。 + + タイム ゾーン情報を可能な限り保持しながら から 値への変換を行うためには、 プロパティと プロパティを使用します。 + +### UTC 時刻の変換 + 変換後の 値が UTC 時刻であることを確認するには、 プロパティの値を取得します。 これは、 プロパティと 2 つの点で異なります。 + +- 値を返します。このとき、 プロパティは に設定されています。 + +- プロパティの値が ではない場合、時刻を UTC に変換します。 + > [!NOTE] -> アプリケーションで、[DateTime](xref:System.DateTime) 値によってある時点を明確に識別する必要がある場合、[DateTimeOffset](xref:System.DateTimeOffset) から [DateTime](xref:System.DateTime) へのすべての変換を処理するために、[DateTimeOffset.UtcDateTime](xref:System.DateTimeOffset.UtcDateTime) プロパティの使用を検討してください。 - -次のコードは、[UtcDateTime](xref:System.DateTimeOffset.UtcDateTime) プロパティを使用して、オフセットが [TimeSpan.Zero](xref:System.TimeSpan.Zero) と等しい [DateTimeOffset](xref:System.DateTimeOffset) 値を [DateTime](xref:System.DateTime) 値に変換します。 - -```csharp -DateTimeOffset utcTime1 = new DateTimeOffset(2008, 6, 19, 7, 0, 0, TimeSpan.Zero); -DateTime utcTime2 = utcTime1.UtcDateTime; -Console.WriteLine("{0} converted to {1} {2}", - utcTime1, - utcTime2, - utcTime2.Kind.ToString()); -// The example displays the following output to the console: -// 6/19/2008 7:00:00 AM +00:00 converted to 6/19/2008 7:00:00 AM Utc -``` - -```vb -Dim utcTime1 As New DateTimeOffset(#06/19/2008 7:00AM#, TimeSpan.Zero) -Dim utcTime2 As Date = utcTime1.UtcDateTime -Console.WriteLine("{0} converted to {1} {2}", _ - utcTime1, _ - utcTime2, _ - utcTime2.Kind.ToString()) -' The example displays the following output to the console: -' 6/19/2008 7:00:00 AM +00:00 converted to 6/19/2008 7:00:00 AM Utc -``` - -次のコードは、UtcDateTime プロパティを使用して、[DateTimeOffset](xref:System.DateTimeOffset) 値に対してタイム ゾーン変換と型変換の両方を実行します。 - -```csharp -DateTimeOffset originalTime = new DateTimeOffset(2008, 6, 19, 7, 0, 0, new TimeSpan(5, 0, 0)); -DateTime utcTime = originalTime.UtcDateTime; -Console.WriteLine("{0} converted to {1} {2}", - originalTime, - utcTime, - utcTime.Kind.ToString()); -// The example displays the following output to the console: -// 6/19/2008 7:00:00 AM +05:00 converted to 6/19/2008 2:00:00 AM Utc -``` - -```vb -Dim originalTime As New DateTimeOffset(#6/19/2008 7:00AM#, _ - New TimeSpan(5, 0, 0)) -Dim utcTime As Date = originalTime.UtcDateTime -Console.WriteLine("{0} converted to {1} {2}", _ - originalTime, _ - utcTime, _ - utcTime.Kind.ToString()) -' The example displays the following output to the console: -' 6/19/2008 7:00:00 AM +05:00 converted to 6/19/2008 2:00:00 AM Utc -``` - -## 現地時刻の変換 - -[DateTimeOffset](xref:System.DateTimeOffset) 値が現地時刻を表すことを示すには、[DateTimeOffset.DateTime](xref:System.DateTimeOffset.DateTime) プロパティによって返される [DateTime](xref:System.DateTime) 値を静的な [DateTime.SpecifyKind(DateTime, DateTimeKind)](xref:System.DateTime.SpecifyKind(System.DateTime,System.DateTimeKind)) メソッドに渡します。 このメソッドは、その最初のパラメーターとして渡された日時を返しますが、[Kind](xref:System.DateTime.Kind) プロパティを、その&2; 番目のパラメーターによって指定された値に設定します。 次のコードは、オフセットがローカル タイム ゾーンのオフセットに対応する [DateTimeOffset](xref:System.DateTimeOffset) 値を変換する際に、[SpecifyKind(DateTime, DateTimeKind)](xref:System.DateTime.SpecifyKind(System.DateTime,System.DateTimeKind)) メソッドを使用します。 - -```csharp -DateTime sourceDate = new DateTime(2008, 6, 19, 7, 0, 0); -DateTimeOffset utcTime1 = new DateTimeOffset(sourceDate, - TimeZoneInfo.Local.GetUtcOffset(sourceDate)); -DateTime utcTime2 = utcTime1.DateTime; -if (utcTime1.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(utcTime1.DateTime))) - utcTime2 = DateTime.SpecifyKind(utcTime2, DateTimeKind.Local); - -Console.WriteLine("{0} converted to {1} {2}", - utcTime1, - utcTime2, - utcTime2.Kind.ToString()); -// The example displays the following output to the console: -// 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local -``` - -```vb -Dim sourceDate As Date = #06/19/2008 7:00AM# -Dim utcTime1 As New DateTimeOffset(sourceDate, _ - TimeZoneInfo.Local.GetUtcOffset(sourceDate)) -Dim utcTime2 As Date = utcTime1.DateTime -If utcTime1.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(utcTime1.DateTime)) Then - utcTime2 = DateTime.SpecifyKind(utcTime2, DateTimeKind.Local) -End If -Console.WriteLine("{0} converted to {1} {2}", _ - utcTime1, _ - utcTime2, _ - utcTime2.Kind.ToString()) -' The example displays the following output to the console: -' 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local -``` - -[DateTimeOffset.LocalDateTime](xref:System.DateTimeOffset.LocalDateTime) プロパティを使用して、[DateTimeOffset](xref:System.DateTimeOffset) 値をローカルの [DateTime](xref:System.DateTime) 値に変換することもできます。 返される [DateTime](xref:System.DateTime) 値の [Kind](xref:System.DateTime.Kind) プロパティは、[DateTimeKind.Local](xref:System.DateTimeKind.Local) です。 次のコードは、オフセットがローカル タイム ゾーンのオフセットに対応する [DateTimeOffset](xref:System.DateTimeOffset) 値を変換する際に、[DateTimeOffset.LocalDateTime](xref:System.DateTimeOffset.LocalDateTime) プロパティを使用します。 - -```csharp -DateTime sourceDate = new DateTime(2008, 6, 19, 7, 0, 0); -DateTimeOffset localTime1 = new DateTimeOffset(sourceDate, - TimeZoneInfo.Local.GetUtcOffset(sourceDate)); -DateTime localTime2 = localTime1.LocalDateTime; - -Console.WriteLine("{0} converted to {1} {2}", - localTime1, - localTime2, - localTime2.Kind.ToString()); -// The example displays the following output to the console: -// 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local -``` - -```vb -Dim sourceDate As Date = #06/19/2008 7:00AM# -Dim localTime1 As New DateTimeOffset(sourceDate, _ - TimeZoneInfo.Local.GetUtcOffset(sourceDate)) -Dim localTime2 As Date = localTime1.LocalDateTime -Console.WriteLine("{0} converted to {1} {2}", _ - localTime1, _ - localTime2, _ - localTime2.Kind.ToString()) -' The example displays the following output to the console: -' 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local -``` - -[DateTimeOffset.LocalDateTime](xref:System.DateTimeOffset.LocalDateTime) プロパティを使用して [DateTime](xref:System.DateTime) 値を取得する場合、このプロパティの `get` アクセサーは、最初に [DateTimeOffset](xref:System.DateTimeOffset) 値を UTC に変換してから、[DateTimeOffset.ToLocalTime](xref:System.DateTimeOffset) メソッドを呼び出して現地時刻に変換します。 つまり、[DateTimeOffset.LocalDateTime](xref:System.DateTimeOffset.LocalDateTime) プロパティから値を取得して、型変換を実行するのと同時にタイム ゾーン変換を実行できます。 また、変換の実行にローカル タイム ゾーンの調整規則が適用されることも意味します。 次のコードは、[DateTimeOffset.LocalDateTime](xref:System.DateTimeOffset.LocalDateTime) プロパティを使用して型変換とタイム ゾーン変換の両方を実行する例を示しています。 - -```csharp -DateTimeOffset originalDate; -DateTime localDate; - -// Convert time originating in a different time zone -originalDate = new DateTimeOffset(2008, 6, 18, 7, 0, 0, - new TimeSpan(-5, 0, 0)); -localDate = originalDate.LocalDateTime; -Console.WriteLine("{0} converted to {1} {2}", - originalDate, - localDate, - localDate.Kind.ToString()); -// Convert time originating in a different time zone -// so local time zone's adjustment rules are applied -originalDate = new DateTimeOffset(2007, 11, 4, 4, 0, 0, - new TimeSpan(-5, 0, 0)); -localDate = originalDate.LocalDateTime; -Console.WriteLine("{0} converted to {1} {2}", - originalDate, - localDate, - localDate.Kind.ToString()); -// The example displays the following output to the console: -// 6/19/2008 7:00:00 AM -05:00 converted to 6/19/2008 5:00:00 AM Local -// 11/4/2007 4:00:00 AM -05:00 converted to 11/4/2007 1:00:00 AM Local -``` - -```vb -Dim originalDate As DateTimeOffset -Dim localDate As Date - -' Convert time originating in a different time zone -originalDate = New DateTimeOffset(#06/19/2008 7:00AM#, _ - New TimeSpan(-5, 0, 0)) -localDate = originalDate.LocalDateTime -Console.WriteLine("{0} converted to {1} {2}", _ - originalDate, _ - localDate, _ - localDate.Kind.ToString()) -' Convert time originating in a different time zone -' so local time zone's adjustment rules are applied -originalDate = New DateTimeOffset(#11/04/2007 4:00AM#, _ - New TimeSpan(-5, 0, 0)) -localDate = originalDate.LocalDateTime -Console.WriteLine("{0} converted to {1} {2}", _ - originalDate, _ - localDate, _ - localDate.Kind.ToString()) -' The example displays the following output to the console: -' 6/19/2008 7:00:00 AM -05:00 converted to 6/19/2008 5:00:00 AM Local -' 11/4/2007 4:00:00 AM -05:00 converted to 11/4/2007 1:00:00 AM Local -``` - -## 汎用変換メソッド - -次の例では、[DateTimeOffset](xref:System.DateTimeOffset) 値を [DateTime](xref:System.DateTime) 値に変換する `ConvertFromDateTimeOffset` という名前のメソッドを定義します。 オフセットに基づき、[DateTimeOffset](xref:System.DateTimeOffset) 値が UTC 時刻、現地時刻、またはその他の時刻であるかどうかを判断し、その結果に応じて、返される日時値の [Kind](xref:System.DateTime.Kind) プロパティを定義します。 - -```csharp -static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime) -{ - if (dateTime.Offset.Equals(TimeSpan.Zero)) - return dateTime.UtcDateTime; - else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime))) - return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local); - else - return dateTime.DateTime; -} -``` - -```vb -Function ConvertFromDateTimeOffset(dateTime As DateTimeOffset) As Date - If dateTime.Offset.Equals(TimeSpan.Zero) Then - Return dateTime.UtcDateTime - ElseIf dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime)) - Return Date.SpecifyKind(dateTime.DateTime, DateTimeKind.Local) - Else - Return dateTime.DateTime - End If -``` - -次の例では、`ConvertFromDateTimeOffset` メソッドを呼び出して、UTC 時刻、現地時刻、および米国の中部標準時ゾーンの時刻を表す [DateTimeOffset](xref:System.DateTimeOffset) 値を変換します。 - -```csharp -DateTime timeComponent = new DateTime(2008, 6, 19, 7, 0, 0); -DateTime returnedDate; - -// Convert UTC time -DateTimeOffset utcTime = new DateTimeOffset(timeComponent, TimeSpan.Zero); -returnedDate = ConvertFromDateTimeOffset(utcTime); -Console.WriteLine("{0} converted to {1} {2}", - utcTime, - returnedDate, - returnedDate.Kind.ToString()); - -// Convert local time -DateTimeOffset localTime = new DateTimeOffset(timeComponent, - TimeZoneInfo.Local.GetUtcOffset(timeComponent)); -returnedDate = ConvertFromDateTimeOffset(localTime); -Console.WriteLine("{0} converted to {1} {2}", - localTime, - returnedDate, - returnedDate.Kind.ToString()); - -// Convert Central Standard Time -DateTimeOffset cstTime = new DateTimeOffset(timeComponent, - TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(timeComponent)); -returnedDate = ConvertFromDateTimeOffset(cstTime); -Console.WriteLine("{0} converted to {1} {2}", - cstTime, - returnedDate, - returnedDate.Kind.ToString()); -// The example displays the following output to the console: -// 6/19/2008 7:00:00 AM +00:00 converted to 6/19/2008 7:00:00 AM Utc -// 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local -// 6/19/2008 7:00:00 AM -05:00 converted to 6/19/2008 7:00:00 AM Unspecified -``` - -```vb -Dim timeComponent As Date = #06/19/2008 7:00AM# -Dim returnedDate As Date - -' Convert UTC time -Dim utcTime As New DateTimeOffset(timeComponent, TimeSpan.Zero) -returnedDate = ConvertFromDateTimeOffset(utcTime) -Console.WriteLine("{0} converted to {1} {2}", _ - utcTime, _ - returnedDate, _ - returnedDate.Kind.ToString()) - -' Convert local time -Dim localTime As New DateTimeOffset(timeComponent, _ - TimeZoneInfo.Local.GetUtcOffset(timeComponent)) -returnedDate = ConvertFromDateTimeOffset(localTime) -Console.WriteLine("{0} converted to {1} {2}", _ - localTime, _ - returnedDate, _ - returnedDate.Kind.ToString()) - -' Convert Central Standard Time -Dim cstTime As New DateTimeOffset(timeComponent, _ - TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time").GetUtcOffset(timeComponent)) -returnedDate = ConvertFromDateTimeOffset(cstTime) -Console.WriteLine("{0} converted to {1} {2}", _ - cstTime, _ - returnedDate, _ - returnedDate.Kind.ToString()) -' The example displays the following output to the console: -' 6/19/2008 7:00:00 AM +00:00 converted to 6/19/2008 7:00:00 AM Utc -' 6/19/2008 7:00:00 AM -07:00 converted to 6/19/2008 7:00:00 AM Local -' 6/19/2008 7:00:00 AM -05:00 converted to 6/19/2008 7:00:00 AM Unspecified -``` - -このコードは次の&2; つのことを前提としますが、アプリケーションおよびその日時値のソースによっては常に有効とは限らないことに注意してください。 - -* オフセットが [TimeSpan.Zero](xref:System.TimeSpan.Zero) である日時値が UTC を表すことを前提とします。 実際には、UTC は特定のタイム ゾーンの時刻ではなく、世界のタイム ゾーンの時刻を標準化する際に基準となる時刻です。 タイム ゾーンのオフセットが [Zero](xref:System.TimeSpan.Zero) である場合もあります。 - -* オフセットがローカル タイム ゾーンのオフセットと等しい日時が、ローカル タイム ゾーンを表すことを前提とします。 日時値は元のタイム ゾーンとの関連付けが解除されているので、これは該当しない場合があります。日時は、同じオフセットを持つ別のタイム ゾーンに由来する可能性があります。 - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) - - - - - +> 変換後の 値が特定の時刻を明確に示すことが必要なアプリケーションでは、 プロパティを使用してすべての に変換する処理を行うことを検討してください。 + + 次のコード例は、 プロパティを使用して、 値 \(オフセットは \) を 値に変換します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#6](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#6)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#6)] + + 次のコード例は、 プロパティを使用して、 値に対してタイム ゾーン変換と型変換の両方を実行します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#12](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#12)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#12)] + +### 現地時刻の変換 + 値が現地時刻を表していることを確認するには、 プロパティによって返される 値を `static` \(Visual Basic では `Shared`\) メソッドに渡します。 このメソッドは、最初のパラメーターとして渡された日付と時刻を返しますが、 プロパティは 2 番目のパラメーターで指定された値に設定されています。 次のコード例は、 メソッドを使用して、 値の変換を行います。この値のオフセットはローカル タイム ゾーンのオフセットに対応します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#7](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#7)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#7)] + + プロパティを使用して、 値をローカルな 値に変換することもできます。 返される 値の プロパティには、 が設定されています。 次のコード例は、 プロパティを使用して、 値の変換を行います。この値のオフセットはローカル タイム ゾーンのオフセットに対応します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#10](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#10)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#10)] + + プロパティを使用して 値を取得すると、プロパティの `get` アクセサーは、まず 値を UTC に変換し、次に メソッドを呼び出して現地時刻に変換します。 これは、 プロパティの値を取得して、型変換の実行と同時にタイム ゾーンの変換も実行できることを意味します。 また、変換実行時にはローカル タイム ゾーンの調整規則が適用されることにもなります。 次のコード例は、 プロパティを使用して、型変換とタイム ゾーン変換の両方を実行します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#11](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#11)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#11)] + +### 汎用変換メソッド + 次の例では、`ConvertFromDateTimeOffset` というメソッドを定義します。このメソッドは、 値を 値に変換します。 そのオフセットに基づいて、 値が UTC 時刻、現地時刻、その他の時刻のいずれであるかを判断し、それに応じて、返される日付と時刻の値の プロパティを定義します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#8](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#8)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#8)] + + 次の例では、米国の中部標準時ゾーンの UTC 時刻、現地時間と時刻を表す 値を変換するに `ConvertFromDateTimeOffset` のメソッドを呼び出します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Conversions#9](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/cs/Conversions.cs#9)] + [!code-vb[System.DateTimeOffset.Conceptual.Conversions#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Conversions/vb/Conversions.vb#9)] + + このコードでは、アプリケーションおよび日付と時刻の値のソースに応じて、必ずしも常に有効ではない 2 つの前提条件が想定されます。 + +- オフセットが に設定されている日付と時刻の値は、UTC 時刻を表すことを前提とします。 実際には、UTC は特定のタイム ゾーンの時刻ではありませんが、この時刻を基準として世界のタイム ゾーンの時刻が標準化されます。 タイム ゾーンには、 のオフセットを設定することもできます。 + +- ローカル タイム ゾーンのオフセットに等しいオフセットが設定された日付と時刻は、ローカル タイム ゾーンを表すことを前提とします。 日付と時刻の値と元のタイム ゾーンとの関連付けが解除されていることが理由となって、この前提条件に該当しないことがあります。日付と時刻には、同じオフセットが設定された他のタイム ゾーンの日付と時刻を設定できます。 + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) \ No newline at end of file diff --git a/docs/standard/datetime/converting-between-time-zones.md b/docs/standard/datetime/converting-between-time-zones.md index 743fef09b81..23472297cd4 100644 --- a/docs/standard/datetime/converting-between-time-zones.md +++ b/docs/standard/datetime/converting-between-time-zones.md @@ -1,385 +1,123 @@ --- -title: "タイム ゾーン間での時刻の変換" -description: "タイム ゾーン間での時刻の変換" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -manager: wpickett -ms.date: 08/15/2016 -ms.topic: article -ms.prod: .net-core -ms.technology: .net-core-technologies -ms.devlang: dotnet -ms.assetid: bf8f74e6-e7f2-4c2a-a04c-57db0e28dd36 -translationtype: Human Translation -ms.sourcegitcommit: b20713600d7c3ddc31be5885733a1e8910ede8c6 -ms.openlocfilehash: c2baa48c3b79dfbc5d39652cc57fe015a2313d6e - ---- - -# タイム ゾーン間での時刻の変換 - -日時を使用するすべてのアプリケーションで、タイム ゾーン間の違いを処理することの重要性が高まっています。 アプリケーションでは、すべての時刻を現地時刻で表現できることを前提とはしていません。現地時刻は、[System.DateTime](xref:System.DateTime) 構造体から取得できる時刻です。 たとえば、米国東部の現在の時刻を表示する Web ページには、東アジアの顧客に対する信頼性を欠いています。 このトピックでは、時刻をあるタイム ゾーンから別のタイム ゾーンに変換する方法、およびタイム ゾーン対応に制限のある [System.DateTimeOffset](xref:System.DateTimeOffset) 値を変換する方法について説明します。 - -## 世界協定時刻への変換 - -世界協定時刻 (UTC) は、高精度の原子時標準です。 世界のタイム ゾーンは、UTC からの正または負のオフセットとして表現されます。 したがって、UTC はタイム ゾーンの影響を受けない、またはタイム ゾーンに依存しない種類の時刻を提供します。 コンピューター間の日時の移植性が重要となる場合には、UTC 時刻の使用が推奨されます。 個別のタイム ゾーンを UTC に変換すると、時間の比較が容易になります。 - +title: "タイム ゾーン間での時刻の変換 | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "変換 (時間を)" + - "ローカル タイムの変換" + - "タイム ゾーン [.NET Framework], 変換" + - "時刻 [.NET Framework], 変換" + - "UTC 時刻, 変換" +ms.assetid: a51e1a3b-c983-4320-b31a-1f9fa3cf824a +caps.latest.revision: 19 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 19 +--- +# タイム ゾーン間での時刻の変換 +タイム ゾーン間での日時の違いを処理するアプリケーションの重要性が増しています。 アプリケーションは、 構造体にある現地時刻ですべての時刻を表現するだけで良いとは想定できなくなりました。 たとえば、米国東部の現在時刻を表示する Web ページは、東アジアの顧客にとっては妥当なものではありません。 このトピックでは、あるタイム ゾーンから別のタイム ゾーンに時刻を変換する方法、およびタイム ゾーンの取り扱いが不適切な 値を変換する方法について説明します。 + +## 世界協定時刻への変換 + 世界協定時刻 \(UTC\) は、高精度で、原子時計に基づく時刻基準です。 世界のタイム ゾーンは、UTC からの正または負のオフセットとして表されます。 したがって、UTC は、タイム ゾーンの影響を受けない時刻、またはどのタイム ゾーンからも中立の時刻を提供します。 コンピューター間での日時の統一性が重要な場合は、UTC 時刻を使用することをお勧めします。\(日付と時刻を使用して詳細および他のベスト プラクティスについては、"参照して [.NET Framework の DateTime を使用してコーディング Best Practices](http://go.microsoft.com/fwlink/?LinkId=92342)ください。個別のタイム ゾーンを UTC に変換すると、時刻の比較が容易になります。 + > [!NOTE] -> また、ある時点を明確に表すように [DateTimeOffset](xref:System.DateTimeOffset) 構造体をシリアル化することもできます。 [DateTimeOffset](xref:System.DateTimeOffset) オブジェクトは日時値を UTC からのオフセットと共に格納するので、特定の時点を常に UTC と関連付けて表します。 - -時刻を UTC に変換する最も簡単な方法としては、`static` (Visual Basic では `Shared`) [TimeZoneInfo.ConvertTimeToUtc(DateTime)](https://msdn.microsoft.com/en-us/library/bb381744(v=vs.110).aspx) メソッドを呼び出します。 - -> [!IMPORTANT] -> `TimeZoneInfo.ConvertTimeToUtc(DateTime)` メソッドは現在 .NET Core で使用できません。 - -次の表に示すように、このメソッドによって実行される実際の変換は、`DateTime` パラメーターの [Kind](xref:System.DateTime.Kind) プロパティの値によって異なります。 - -[DateTime.Kind](xref:System.DateTimeKind) プロパティ | 変換 ----------------------------------------------------------------------------------------------- | ---------- -[DateTimeKind.Local](xref:System.DateTimeKind.Local) | 現地時刻を UTC に変換します。 -[DateTimeKind.Unspecified](xref:System.DateTimeKind.Unspecified) | `DateTime` パラメーターが現地時刻であることを前提とし、現地時刻を UTC に変換します。 -[DateTimeKind.Utc](xref:System.DateTimeKind.Utc) | `DateTime` パラメーターを変更せずに返します。 - -次のコードは、現在の現地時刻を UTC に変換し、コンソールに結果を表示します。 - -```csharp -DateTime dateNow = DateTime.Now; -Console.WriteLine("The date and time are {0} UTC.", - TimeZoneInfo.ConvertTimeToUtc(dateNow)); -``` - -```vb -Dim dateNow As Date = Date.Now -Console.WriteLine("The date and time are {0} UTC.", _ - TimeZoneInfo.ConvertTimeToUtc(dateNow)) -``` - +> 構造体をシリアル化して、ある時刻を明確に表すこともできます。 オブジェクトは UTC からのオフセットで日時の値を格納するので、常に UTC に対する相対値で特定の時刻を表します。 + + 時刻を UTC に変換する最も簡単な方法は、`static` \(Visual Basic では `Shared`\) の メソッドを呼び出す方法です。 メソッドで実行される具体的な変換は、次の表に示すように、`dateTime` パラメーターの プロパティの値によって決まります。 + +|DateTime.Kind プロパティ|変換| +|-------------------------|--------| +||現地時刻を UTC に変換します。| +||`dateTime` パラメーターが現地時刻だと想定し、現地時刻を UTC に変換します。| +||`dateTime` パラメーターを変更しないで返します。| + + 次に示すコードは、現在の現地時刻を UTC に変換し、結果をコンソールに表示します。 + + [!code-csharp[System.TimeZone2.Concepts#6](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#6)] + [!code-vb[System.TimeZone2.Concepts#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#6)] + > [!NOTE] ->[TimeZoneInfo.ConvertTimeToUtc(DateTime)](https://msdn.microsoft.com/en-us/library/bb381744(v=vs.110).aspx) メソッドは、[TimeZone.ToUniversalTime](https://msdn.microsoft.com/en-us/library/System.TimeZone.ToUniversalTime(v=vs.110).aspx) メソッドおよび [DateTime.ToUniversalTime](xref:System.DateTime.ToUniversalTime) メソッドと同じ結果を必ずしも生成するとは限りません。 ホスト システムのローカル タイム ゾーンに複数の調整規則が含まれる場合、[TimeZoneInfo.ConvertTimeToUtc(DateTime)](https://msdn.microsoft.com/en-us/library/System.TimeZone.ConvertTimeToUtc(v=vs.110).aspx) は特定の日時に適切な規則を適用します。 他の 2 つのメソッドは、常に最新の調整規則を適用します。 - -日時値が現地時刻と UTC のどちらかを表さない場合、[ToUniversalTime](https://msdn.microsoft.com/en-us/library/System.TimeZone.ToUniversalTime(v=vs.110).aspx) メソッドは不正な結果を返す可能性があります。 ただし、[TimeZoneInfo.ConvertTimeToUtc](https://msdn.microsoft.com/en-us/library/bb381744(v=vs.110).aspx) メソッドを使用して、指定したタイム ゾーンから日時を変換できます (変換先のタイム ゾーンを表す TimeZoneInfo オブジェクトを取得する方法の詳細については、「[ローカル システムで定義されているタイム ゾーンの検索](finding-the-time-zones-on-local-system.md)」を参照してください)。 次のコードは、[TimeZoneInfo.ConvertTimeToUtc](https://msdn.microsoft.com/en-us/library/bb381744(v=vs.110).aspx) メソッドを使用して東部標準時を UTC に変換します。 - -```csharp -DateTime easternTime = new DateTime(2007, 01, 02, 12, 16, 00); -string easternZoneId = "Eastern Standard Time"; -try -{ - TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById(easternZoneId); - Console.WriteLine("The date and time are {0} UTC.", - TimeZoneInfo.ConvertTimeToUtc(easternTime, easternZone)); -} -catch (TimeZoneNotFoundException) -{ - Console.WriteLine("Unable to find the {0} zone in the registry.", - easternZoneId); -} -catch (InvalidTimeZoneException) -{ - Console.WriteLine("Registry data on the {0} zone has been corrupted.", - easternZoneId); -} -``` - -```vb -Dim easternTime As New Date(2007, 01, 02, 12, 16, 00) -Dim easternZoneId As String = "Eastern Standard Time" -Try - Dim easternZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(easternZoneId) - Console.WriteLine("The date and time are {0} UTC.", _ - TimeZoneInfo.ConvertTimeToUtc(easternTime, easternZone)) -Catch e As TimeZoneNotFoundException - Console.WriteLine("Unable to find the {0} zone in the registry.", _ - easternZoneId) -Catch e As InvalidTimeZoneException - Console.WriteLine("Registry data on the {0} zone has been corrupted.", _ - easternZoneId) -End Try -``` - -[DateTime](xref:System.DateTime) オブジェクトの [Kind](xref:System.DateTimeKind) プロパティとタイム ゾーンが一致しない場合、このメソッドは [ArgumentException](xref:System.ArgumentException) をスローします。 Kind プロパティが [DateTimeKind.Local](xref:System.DateTimeKind.Local) であるが [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトがローカル タイム ゾーンを表さない場合、または Kind プロパティが [DateTimeKind.Utc](xref:System.DateTimeKind.Utc) であるが [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトが [DateTimeKind.Utc](xref:System.DateTimeKind.Utc) と等しくない場合に、不一致が発生します。 - -これらすべてのメソッドは、パラメーターとして [DateTime](xref:System.DateTime) 値を受け取り、[DateTime](xref:System.DateTime) 値を返します。 [DateTimeOffset](xref:System.DateTimeOffset) 値について、[DateTimeOffset](xref:System.DateTimeOffset) 構造体には、現在のインスタンスの日時を UTC に変換する [ToUniversalTime](xref:System.DateTimeOffset.ToUniversalTime) インスタンス メソッドが含まれます。 次の例では、[ToUniversalTime](xref:System.DateTimeOffset.ToUniversalTime) メソッドを呼び出して、現地時刻およびその他のいくつかの時刻を世界協定時刻 (UTC) に変換します。 - -```csharp -DateTimeOffset localTime, otherTime, universalTime; - -// Define local time in local time zone -localTime = new DateTimeOffset(new DateTime(2007, 6, 15, 12, 0, 0)); -Console.WriteLine("Local time: {0}", localTime); -Console.WriteLine(); - -// Convert local time to offset 0 and assign to otherTime -otherTime = localTime.ToOffset(TimeSpan.Zero); -Console.WriteLine("Other time: {0}", otherTime); -Console.WriteLine("{0} = {1}: {2}", - localTime, otherTime, - localTime.Equals(otherTime)); -Console.WriteLine("{0} exactly equals {1}: {2}", - localTime, otherTime, - localTime.EqualsExact(otherTime)); -Console.WriteLine(); - -// Convert other time to UTC -universalTime = localTime.ToUniversalTime(); -Console.WriteLine("Universal time: {0}", universalTime); -Console.WriteLine("{0} = {1}: {2}", - otherTime, universalTime, - universalTime.Equals(otherTime)); -Console.WriteLine("{0} exactly equals {1}: {2}", - otherTime, universalTime, - universalTime.EqualsExact(otherTime)); -Console.WriteLine(); -// The example produces the following output to the console: -// Local time: 6/15/2007 12:00:00 PM -07:00 -// -// Other time: 6/15/2007 7:00:00 PM +00:00 -// 6/15/2007 12:00:00 PM -07:00 = 6/15/2007 7:00:00 PM +00:00: True -// 6/15/2007 12:00:00 PM -07:00 exactly equals 6/15/2007 7:00:00 PM +00:00: False -// -// Universal time: 6/15/2007 7:00:00 PM +00:00 -// 6/15/2007 7:00:00 PM +00:00 = 6/15/2007 7:00:00 PM +00:00: True -// 6/15/2007 7:00:00 PM +00:00 exactly equals 6/15/2007 7:00:00 PM +00:00: True -``` - -```vb -Dim localTime, otherTime, universalTime As DateTimeOffset - -' Define local time in local time zone -localTime = New DateTimeOffset(#6/15/2007 12:00:00PM#) -Console.WriteLine("Local time: {0}", localTime) -Console.WriteLine() - -' Convert local time to offset 0 and assign to otherTime -otherTime = localTime.ToOffset(TimeSpan.Zero) -Console.WriteLine("Other time: {0}", otherTime) -Console.WriteLine("{0} = {1}: {2}", _ - localTime, otherTime, _ - localTime.Equals(otherTime)) -Console.WriteLine("{0} exactly equals {1}: {2}", _ - localTime, otherTime, _ - localTime.EqualsExact(otherTime)) -Console.WriteLine() - -' Convert other time to UTC -universalTime = localTime.ToUniversalTime() -Console.WriteLine("Universal time: {0}", universalTime) -Console.WriteLine("{0} = {1}: {2}", _ - otherTime, universalTime, _ - universalTime.Equals(otherTime)) -Console.WriteLine("{0} exactly equals {1}: {2}", _ - otherTime, universalTime, _ - universalTime.EqualsExact(otherTime)) -Console.WriteLine() -' The example produces the following output to the console: -' Local time: 6/15/2007 12:00:00 PM -07:00 -' -' Other time: 6/15/2007 7:00:00 PM +00:00 -' 6/15/2007 12:00:00 PM -07:00 = 6/15/2007 7:00:00 PM +00:00: True -' 6/15/2007 12:00:00 PM -07:00 exactly equals 6/15/2007 7:00:00 PM +00:00: False -' -' Universal time: 6/15/2007 7:00:00 PM +00:00 -' 6/15/2007 7:00:00 PM +00:00 = 6/15/2007 7:00:00 PM +00:00: True -' 6/15/2007 7:00:00 PM +00:00 exactly equals 6/15/2007 7:00:00 PM +00:00: True -``` - -## UTC から指定したタイム ゾーンへの変換 - -UTC を現地時刻に変換するには、後の「[UTC から現地時刻への変換](#converting-utc-to-local-time)」セクションを参照してください。 - -UTC を、指定した任意のタイム ゾーンの時刻に変換するには、[ConvertTimeFromUtc](https://msdn.microsoft.com/en-us/library/System.TimeZoneInfo.converttimefromutc(v=vs.110).aspx) メソッドを呼び出します。 - -> [!IMPORTANT] -> .NET Core では、`TimeZoneInfo.ConvertTimeFromUtc' メソッドは現在使用できません。 - -このメソッドは、次の 2 つのパラメーターを受け取ります。 - -* 変換対象の UTC。 これは、[Kind](xref:System.DateTime.Kind) にプロパティが [DateTimeKind.Utc](xref:System.DateTimeKind.Utc) または [DateTimeKind.Unspecified](xref:System.DateTimeKind.Unspecified) に設定されている [DateTime](xref:System.DateTime) 値でなければなりません。 - -* UTC の変換先のタイム ゾーン。 - -次のコードは、UTC を中部標準時に変換します。 - -```csharp -DateTime timeUtc = DateTime.UtcNow; -try -{ - TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); - DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone); - Console.WriteLine("The date and time are {0} {1}.", - cstTime, - cstZone.IsDaylightSavingTime(cstTime) ? - cstZone.DaylightName : cstZone.StandardName); -} -catch (TimeZoneNotFoundException) -{ - Console.WriteLine("The registry does not define the Central Standard Time zone."); -} -catch (InvalidTimeZoneException) -{ - Console.WriteLine("Registry data on the Central Standard Time zone has been corrupted."); -} -``` - -```vb -Dim timeUtc As Date = Date.UtcNow -Try - Dim cstZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time") - Dim cstTime As Date = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone) - Console.WriteLine("The date and time are {0} {1}.", _ - cstTime, _ - IIf(cstZone.IsDaylightSavingTime(cstTime), _ - cstZone.DaylightName, cstZone.StandardName)) -Catch e As TimeZoneNotFoundException - Console.WriteLine("The registry does not define the Central Standard Time zone.") -Catch e As InvalidTimeZoneException - Console.WriteLine("Registry data on the Central Standard Time zone has been corrupted.") -End Try -``` - -## UTC から現地時刻への変換 - -UTC を現地時刻に変換するには、時刻を変換する対象の [DateTime](xref:System.DateTime) オブジェクトの [DateTime.ToLocalTime](xref:System.DateTime) メソッドを呼び出します。 次の表に示すように、このメソッドの実際の動作は、オブジェクトの [Kind](xref:System.DateTime.Kind) プロパティの値によって異なります。 - -[DateTime.Kind](xref:System.DateTimeKind) プロパティ | 変換 ----------------------------------------------------------------------------------------------- | ---------- -[DateTimeKind.Local](xref:System.DateTimeKind.Local) | [DateTime](xref:System.DateTime) 値を変更せずに返します。 -[DateTimeKind.Unspecified](xref:System.DateTimeKind.Unspecified) | [DateTime](xref:System.DateTime) 値が UTC であることを前提とし、UTC を現地時刻に変換します。 -[DateTimeKind.Utc](xref:System.DateTimeKind.Utc) | [DateTime](xref:System.DateTime) 値を現地時刻に変換します。 - -## 任意の 2 つのタイム ゾーン間での変換 - -静的な [TimeZoneInfo.ConvertTime](xref:System.TimeZoneInfo.ConvertTime(System.DateTime,System.TimeZoneInfo)) メソッドを使用すると、任意の 2 つのタイム ゾーン間で変換を行うことができます。 このメソッドのパラメーターは、変換対象の [DateTime](xref:System.DateTime) 値、日時値のタイム ゾーンを表す [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクト、および日時値の変換先のタイム ゾーンを表す [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトです。 - -このメソッドでは、変換対象の日時値の [Kind](xref:System.DateTime.Kind) プロパティと、タイム ゾーンを表す [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトまたはタイム ゾーン識別子とが、相互に対応する必要があります。 それ以外の場合は、[ArgumentException](xref:System.ArgumentException) がスローされます。 たとえば、日時値の [Kind](xref:System.DateTime.Kind) プロパティが [DateTimeKind.Local](xref:System.DateTimeKind.Local) である場合に、このメソッドにパラメーターとして渡された [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトが [TimeZoneInfo.Local](xref:System.TimeZoneInfo.Local) と等しくなければ、例外がスローされます。 また、このメソッドにパラメーターとして渡された識別子が [TimeZoneInfo.Id](xref:System.TimeZoneInfo.Id) と等しくない場合にも、例外がスローされます。 - -次の例では、[ConvertTime](xref:System.TimeZoneInfo.ConvertTime(System.DateTime,System.TimeZoneInfo)) メソッドを使用してハワイ標準時を現地時刻に変換します。 - -```csharp -DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00); -try -{ - TimeZoneInfo hwZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time"); - Console.WriteLine("{0} {1} is {2} local time.", - hwTime, - hwZone.IsDaylightSavingTime(hwTime) ? hwZone.DaylightName : hwZone.StandardName, - TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local)); -} -catch (TimeZoneNotFoundException) -{ - Console.WriteLine("The registry does not define the Hawaiian Standard Time zone."); -} -catch (InvalidTimeZoneException) -{ - Console.WriteLine("Registry data on the Hawaiian STandard Time zone has been corrupted."); -} -``` - -```vb -Dim hwTime As Date = #2/01/2007 8:00:00 AM# -Try - Dim hwZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time") - Console.WriteLine("{0} {1} is {2} local time.", _ - hwTime, _ - IIf(hwZone.IsDaylightSavingTime(hwTime), hwZone.DaylightName, hwZone.StandardName), _ - TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local)) -Catch e As TimeZoneNotFoundException - Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.") -Catch e As InvalidTimeZoneException - Console.WriteLine("Registry data on the Hawaiian Standard Time zone has been corrupted.") -End Try -``` - -## DateTimeOffset 値の変換 - -[System.DateTimeOffset](xref:System.DateTimeOffset) オブジェクトによって表される日時値は、完全にはタイム ゾーン対応ではありません。これは、オブジェクトがインスタンス化された時点でそのタイム ゾーンとの関連付けが解除されるためです。 ただし、アプリケーションでは多くの場合、特定のタイム ゾーンの時刻ではなく、単に UTC からの 2 つの異なるオフセットに基づいて日時を変換する必要があります。 この変換を実行するには、現在のインスタンスの [ToOffset](xref:System.DateTimeOffset.ToOffset(System.TimeSpan)) メソッドを呼び出します。 このメソッドの単一のパラメーターは、メソッドが返す新しい日時値のオフセットを表す [TimeSpan](xref:System.TimeSpan) です。 - -たとえば、Web ページに対するユーザー要求の日時が既知であり、MM/dd/yyyy hh:mm:ss zzzz の形式で文字列としてシリアル化される場合、次の `ReturnTimeOnServer` メソッドは、この日時値を Web サーバー上の日時に変換します。 - -```csharp -public DateTimeOffset ReturnTimeOnServer(string clientString) -{ - string format = @"M/d/yyyy H:m:s zzz"; - TimeSpan serverOffset = TimeZoneInfo.Local.GetUtcOffset(DateTimeOffset.Now); - - try - { - DateTimeOffset clientTime = DateTimeOffset.ParseExact(clientString, format, CultureInfo.InvariantCulture); - DateTimeOffset serverTime = clientTime.ToOffset(serverOffset); - return serverTime; - } - catch (FormatException) - { - return DateTimeOffset.MinValue; - } -} -``` - -```vb -Public Function ReturnTimeOnServer(clientString As String) As DateTimeOffset - Dim format As String = "M/d/yyyy H:m:s zzz" - Dim serverOffset As TimeSpan = TimeZoneInfo.Local.GetUtcOffset(DateTimeOffset.Now) - - Try - Dim clientTime As DateTimeOffset = DateTimeOffset.ParseExact(clientString, format, CultureInfo.InvariantCulture) - Dim serverTime As DateTimeOffset = clientTime.ToOffset(serverOffset) - Return serverTime - Catch e As FormatException - Return DateTimeOffset.MinValue - End Try -End Function -``` - -このメソッドが、UTC よりも 5 時間遅いタイム ゾーンの日時を表す文字列 "9/1/2007 5:32:07 -05:00" を渡された場合、米国の太平洋標準時ゾーンにあるサーバー用に 9/1/2007 3:32:07 AM -07:00 を返します。 - -[TimeZoneInfo](xref:System.TimeZoneInfo) クラスには、[System.DateTimeOffset](xref:System.DateTimeOffset) 値によるタイム ゾーン変換を実行する、オーバーロードされた [TimeZoneInfo.ConvertTime (DateTimeOffset、TimeZoneInfo)](xref:System.TimeZoneInfo.ConvertTime(System.DateTimeOffset,System.TimeZoneInfo)) メソッドも含まれます。 このメソッドのパラメーターは、[System.DateTimeOffset](xref:System.DateTimeOffset) 値と、時刻の変換先となるタイム ゾーンへの参照です。 このメソッド呼び出しは、[System.DateTimeOffset](xref:System.DateTimeOffset) 値を返します。 たとえば、前の例の `ReturnTimeOnServer` メソッドを次のように書き換えて、[ConvertTime(DateTimeOffset, TimeZoneInfo)](xref:System.TimeZoneInfo.ConvertTime(System.DateTimeOffset,System.TimeZoneInfo)) メソッドを呼び出すことができます。 - -```csharp -public DateTimeOffset ReturnTimeOnServer(string clientString) -{ - string format = @"M/d/yyyy H:m:s zzz"; - - try - { - DateTimeOffset clientTime = DateTimeOffset.ParseExact(clientString, format, - CultureInfo.InvariantCulture); - DateTimeOffset serverTime = TimeZoneInfo.ConvertTime(clientTime, - TimeZoneInfo.Local); - return serverTime; - } - catch (FormatException) - { - return DateTimeOffset.MinValue; - } -} -``` - -```vb -Public Function ReturnTimeOnServer(clientString As String) As DateTimeOffset - Dim format As String = "M/d/yyyy H:m:s zzz" - - Try - Dim clientTime As DateTimeOffset = DateTimeOffset.ParseExact(clientString, format, CultureInfo.InvariantCulture) - Dim serverTime As DateTimeOffset = TimeZoneInfo.ConvertTime(clientTime, TimeZoneInfo.Local) - Return serverTime - Catch e As FormatException - Return DateTimeOffset.MinValue - End Try -End Function -``` - -## 関連項目 - -[TimeZoneInfo](xref:System.TimeZoneInfo) - -[日付、時刻およびタイム ゾーン](index.md) - -[ローカル システムで定義されているタイム ゾーンの検索](finding-the-time-zones-on-local-system.md) - - - - - - - - +> メソッドでは、 メソッドおよび メソッドと同一の結果が生成されるとは限りません。 ホスト システムのローカル タイム ゾーンに複数の調整規則が含まれる場合、 は、適切な規則を特定の日付および時刻に適用します。 他の 2 つのメソッドは、最新の調整規則を常に適用します。 + + 日時値が現地時刻または UTC のどちらも表していない場合、 メソッドは正しくない結果を返す可能性があります。 ただし、 メソッドを使用すると、指定したターム ゾーンから日時を変換できます。目的のタイム ゾーンを表す オブジェクトを取得する方法の詳細については、「[ローカル システムで定義されているタイム ゾーンの検索](../../../docs/standard/datetime/finding-the-time-zones-on-local-system.md)」を参照してください。次に示すコードでは、 メソッドを使用して、米国東部標準時を UTC に変換しています。 + + [!code-csharp[System.TimeZone2.Concepts#7](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#7)] + [!code-vb[System.TimeZone2.Concepts#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#7)] + + オブジェクトの プロパティとタイム ゾーンが一致してない場合、このメソッドは をスローします。 不一致が発生するのは、 プロパティが であるのに オブジェクトがローカル タイム ゾーンを表していない場合、または プロパティが であるのに オブジェクトが と等しくない場合です。 + + これらのメソッドはすべて、 値をパラメーターとして受け取り、 値を返します。 値の場合、 構造体には、現在のインスタンスの日時を UTC に変換する インスタンス メソッドがあります。次に示す例では、 メソッドを呼び出して、現地時刻と他のいくつかの時刻を UTC に変換しています。 + + [!code-csharp[System.DateTimeOffset.Methods#16](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Methods/cs/Methods.cs#16)] + [!code-vb[System.DateTimeOffset.Methods#16](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Methods/vb/Methods.vb#16)] + +## 指定したタイム ゾーンへの UTC の変換 + UTC から現地時刻への変換については、後の「UTC から現地時刻への変換」を参照してください。 任意のタイム ゾーンを指定して、UTC をそのタイム ゾーンの時刻に変換するには、 メソッドを呼び出します。 このメソッドは、次の 2 つのパラメーターを受け取ります。 + +- 変換対象の UTC。 このパラメーターは、 プロパティが または に設定された 値である必要があります。 + +- UTC の変換先となるタイム ゾーン。 + + 次に示すコードでは、UTC を米国中部標準時に変換しています。 + + [!code-csharp[System.TimeZone2.Concepts#8](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#8)] + [!code-vb[System.TimeZone2.Concepts#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#8)] + +## UTC から現地時刻への変換 + UTC を現地時刻に変換するには、変換する時刻を表す オブジェクトの メソッドを呼び出します。 メソッドの具体的な動作は、次の表に示すように、オブジェクトの プロパティの値によって異なります。 + +|`DateTime.Kind` プロパティ|変換| +|---------------------------|--------| +|`DateTimeKind.Local`| の値を変更しないで返します。| +|`DateTimeKind.Unspecified`| の値を UTC と想定し、UTC を現地時刻に変換します。| +|`DateTimeKind.Utc`| の値を現地時刻に変換します。| + + **メモ** メソッドの動作は、`DateTime.ToLocalTime` メソッドと同じです。受け取るパラメーターは、変換する日時の値 1 つだけです。 + + `static` \(Visual Basic では `Shared`\) メソッドを使用すると、任意のタイム ゾーンの時刻を指定して、現地時刻に変換することもできます。 この方法については、次のセクションで説明します。 + +## 任意の 2 つのタイム ゾーン間での時刻の変換 + 次に示す クラスの 2 つの `static` \(Visual Basic では `Shared`\) メソッドを使用すると、任意の 2 つのタイム ゾーン間で時刻を変換できます。 + +- + + このメソッドのパラメーターは、変換する日時値、その日時値のタイム ゾーンを表す `TimeZoneInfo` オブジェクト、および変換後のタイム ゾーンを表す `TimeZoneInfo` オブジェクトです。 + +- + + このメソッドのパラメーターは、変換する日時値、その日時値のタイム ゾーンの識別子、および変換後のタイム ゾーンの識別子です。 + + どちらのメソッドでも、変換する日時値の プロパティと、もう 1 つの日時値に対応するタイム ゾーンを表す オブジェクトまたはタイム ゾーン識別子が必要です。 それ以外の場合は、 がスローされます。 たとえば、日時値の `Kind` プロパティが `DateTimeKind.Local` の場合、メソッドにパラメーターとして渡される `TimeZoneInfo` オブジェクトが `TimeZoneInfo.Local` ではないと、例外がスローされます。 また、メソッドにパラメーターとして渡される識別子が `TimeZoneInfo.Local.Id` に等しくない場合にも、例外がスローされます。 + + メソッドを使用してハワイ標準時を現地時刻に変換する例を次に示します。 + + [!code-csharp[System.TimeZone2.Concepts#9](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#9)] + [!code-vb[System.TimeZone2.Concepts#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#9)] + +## DateTimeOffset 値の変換 + オブジェクトはインスタンス化されるときにタイム ゾーンとの関連付けを解除されるので、このオブジェクトによって表される日時値は、完全なタイム ゾーン対応ではありません。 ただし、多くの場合、アプリケーションで必要になるのは、特定のタイム ゾーンでの時刻ではなく、UTC に対する 2 つの異なるオフセットに基づいて日時を変換することだけです。 この変換は、現在のインスタンスの メソッドを呼び出すことで実行できます。 このメソッドの唯一のパラメーターは、メソッドから返される新しい日時値のオフセットです。 + + たとえば、Web ページに対するユーザー要求の日時がわかっていて、MM\/dd\/yyyy hh:mm:ss zzzz の形式で文字列としてシリアル化されている場合、次の `ReturnTimeOnServer` メソッドは、この日時値を Web サーバーでの日時に変換します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.OffsetConversions#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.OffsetConversions/cs/TimeConversions.cs#1)] + [!code-vb[System.DateTimeOffset.Conceptual.OffsetConversions#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.OffsetConversions/vb/TimeConversions.vb#1)] + + メソッドが文字列に「9\/1\/5:32 の場合: 07 \-05:00」、タイム ゾーンの時刻を UTC より 5 時間早い表す、9\/1\/3:32:を返します米国の太平洋標準時タイム ゾーンにあるサーバーの 07 年の場合は \-07:00。 + + クラスには、複数の 値を使用してタイム ゾーンの変換を実行する メソッドのオーバーロードも含まれます。 このメソッドのパラメーターは、 値と、変換後のタイム ゾーンへの参照です。 このメソッドを呼び出すと、 値が返ります。 たとえば、前の例の `ReturnTimeOnServer` メソッドは、 メソッドの呼び出しを使用して、次のように書き換えることができます。 + + [!code-csharp[System.DateTimeOffset.Conceptual.OffsetConversions#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.OffsetConversions/cs/timeconversions2.cs#2)] + [!code-vb[System.DateTimeOffset.Conceptual.OffsetConversions#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.OffsetConversions/vb/TimeConversions2.vb#2)] + +## 参照 + + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [ローカル システムで定義されているタイム ゾーンの検索](../../../docs/standard/datetime/finding-the-time-zones-on-local-system.md) \ No newline at end of file diff --git a/docs/standard/datetime/create-time-zones-with-adjustment-rules.md b/docs/standard/datetime/create-time-zones-with-adjustment-rules.md new file mode 100644 index 00000000000..cb006ca0167 --- /dev/null +++ b/docs/standard/datetime/create-time-zones-with-adjustment-rules.md @@ -0,0 +1,97 @@ +--- +title: "方法 : 調整規則のあるタイム ゾーンを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "調整規則 [.NET Framework]" + - "タイム ゾーン [.NET Framework], および調整規則" + - "タイム ゾーン [.NET Framework], 作成" +ms.assetid: c52ef192-13a9-435f-8015-3b12eae8c47c +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 方法 : 調整規則のあるタイム ゾーンを作成する +アプリケーションで必要な正確なタイム ゾーン情報が、次のような理由で特定のシステムに存在しない場合があります。 + +- ローカル システムのレジストリでタイム ゾーンが定義されていない。 + +- タイム ゾーンに関するデータがレジストリで変更または削除されている。 + +- タイム ゾーンに、過去の特定の期間のタイム ゾーン調整に関する正確な情報がない。 + + このような場合は、 メソッドを呼び出して、アプリケーションで必要なタイム ゾーンを定義できます。 このメソッドのオーバーロードを使用すると、調整規則のあるタイム ゾーンまたは調整規則のないタイム ゾーンを作成できます。 タイム ゾーンが夏時間をサポートする場合は、固定調整規則または浮動調整規則の調整を定義できます。これらの用語の定義については、「[タイム ゾーンの概要](../../../docs/standard/datetime/time-zone-overview.md)」の「タイム ゾーンの用語」の節を参照してください。 + +> [!IMPORTANT] +> メソッドを呼び出すことで作成されるカスタム タイム ゾーンは、レジストリには追加されません。 カスタム タイム ゾーンには、 メソッドの呼び出しによって返されるオブジェクト参照を通してのみアクセスできます。 + + このトピックでは、調整規則のあるタイム ゾーンを作成する方法について説明します。 夏時間調整規則をサポートしないタイム ゾーンを作成する方法については、「[方法 : 調整規則のないタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-without-adjustment-rules.md)」を参照してください。 + +### 浮動調整規則のあるタイム ゾーンを作成するには + +1. 調整ごとに \(つまり、特定の期間における標準時間からの切り替えと標準時間への切り替えのそれぞれについて\)、次の操作を行います。 + + 1. タイム ゾーン調整の切り替え開始時刻を定義します。 + + メソッドを呼び出して、切り替えの時刻を定義する 値、切り替えの月を定義する整数値、切り替えを行う週を定義する整数値、および切り替えを行う曜日を定義する 値を渡します。 このメソッド呼び出しにより、 オブジェクトがインスタンス化されます。 + + 2. タイム ゾーン調整の切り替え終了時刻を定義します。 これには、 メソッドをもう一度呼び出す必要があります。 このメソッド呼び出しでは、2 番目の オブジェクトがインスタンス化されます。 + + 3. メソッドを呼び出して、その調整が有効になる開始日と終了日、切り替えによって変動する時間数を定義する オブジェクト、および夏時間への切り替えと夏時間からの切り替えが行われる日時を定義する 2 つの オブジェクトを渡します。 このメソッド呼び出しにより、 オブジェクトがインスタンス化されます。 + + 4. オブジェクトを、 オブジェクトの配列に割り当てます。 + +2. タイム ゾーンの表示名を指定します。 表示名は、世界協定時刻 \(UTC: Coordinated Universal Time\) からのタイム ゾーンのオフセットをかっこで囲み、その後にタイム ゾーン、タイム ゾーン内の 1 つ以上の都市、またはタイム ゾーン内の 1 つ以上の国や地域を表す文字列が続く標準形式に従います。 + +3. タイム ゾーンの標準時間の名前を指定します。 通常は、この文字列がタイム ゾーンの ID としても使用されます。 + +4. タイム ゾーンの夏時間の名前を指定します。 + +5. タイム ゾーンの標準名とは異なる ID を使用する場合は、タイム ゾーン ID を指定します。 + +6. UTC からのタイム ゾーンのオフセットを定義する オブジェクトをインスタンス化します。 UTC より後の時刻のタイム ゾーンでは正のオフセットになります。 UTC より前の時刻のタイム ゾーンでは負のオフセットになります。 + +7. [TimeZoneInfo.CreateCustomTimeZone\(String, TimeSpan, String, String, String, TimeZoneInfo.AdjustmentRule\ メソッドを呼び出して、新しいタイム ゾーンをインスタンス化します。 + +## 使用例 + 次の例では、1918 年から現在までのさまざまな期間に対する調整規則が含まれる、米国の中部標準時ゾーンを定義します。 + + [!code-csharp[System.TimeZone2.CreateTimeZone#5](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.CreateTimeZone/cs/System.TimeZone2.CreateTimeZone.cs#5)] + [!code-vb[System.TimeZone2.CreateTimeZone#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.CreateTimeZone/vb/System.TimeZone2.CreateTimeZone.vb#5)] + + この例で作成されるタイム ゾーンには、複数の調整規則があります。 ある調整規則の有効期間の開始日と終了日が、別の調整規則の期間と重ならないように注意する必要があります。 重なる期間があると、 がスローされます。 + + 浮動調整規則の場合、特定の月の最終週に切り替えを行うことを示すには、 メソッドの `week` パラメーターに値 5 を渡します。 + + [TimeZoneInfo.CreateCustomTimeZone\(String, TimeSpan, String, String, String, TimeZoneInfo.AdjustmentRule\ メソッドの呼び出しで使用する オブジェクトの配列を作成するときは、タイム ゾーンに対して作成する調整の数に合わせて配列のサイズを初期化してもかまいません。 このコード例では、代わりに、 メソッドを呼び出して、各調整規則を オブジェクトのジェネリック コレクションに追加しています。 その後、 メソッドを呼び出して、このコレクションのメンバーを配列にコピーします。 + + この例では、 メソッドを使用して、固定日付の調整も定義しています。 これは メソッドの呼び出しと似ていますが、切り替えパラメーターの時刻、月、および日以外は必要とされない点が異なります。 + + この例は、次のようなコードを使用してテストできます。 + + [!code-csharp[System.TimeZone2.CreateTimeZone#7](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.CreateTimeZone/cs/System.TimeZone2.CreateTimeZone.cs#7)] + [!code-vb[System.TimeZone2.CreateTimeZone#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.CreateTimeZone/vb/System.TimeZone2.CreateTimeZone.vb#7)] + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Core.dll への参照をプロジェクトに追加する。 + +- 次の名前空間をインポートする。 + + [!code-csharp[System.TimeZone2.CreateTimeZone#6](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.CreateTimeZone/cs/System.TimeZone2.CreateTimeZone.cs#6)] + [!code-vb[System.TimeZone2.CreateTimeZone#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.CreateTimeZone/vb/System.TimeZone2.CreateTimeZone.vb#6)] + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [タイム ゾーンの概要](../../../docs/standard/datetime/time-zone-overview.md) + [方法 : 調整規則のないタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-without-adjustment-rules.md) \ No newline at end of file diff --git a/docs/standard/datetime/create-time-zones-without-adjustment-rules.md b/docs/standard/datetime/create-time-zones-without-adjustment-rules.md new file mode 100644 index 00000000000..43946b77a4a --- /dev/null +++ b/docs/standard/datetime/create-time-zones-without-adjustment-rules.md @@ -0,0 +1,74 @@ +--- +title: "方法 : 調整規則のないタイム ゾーンを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "調整規則 [.NET Framework]" + - "タイム ゾーン [.NET Framework], 調整規則" + - "タイム ゾーン [.NET Framework], 作成" +ms.assetid: a6af8647-7893-4f29-95a9-d94c65a6e8dd +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法 : 調整規則のないタイム ゾーンを作成する +アプリケーションで必要な正確なタイム ゾーン情報が、次のような理由で特定のシステムに存在しない場合があります。 + +- ローカル システムのレジストリでタイム ゾーンが定義されていない。 + +- タイム ゾーンに関するデータがレジストリで変更または削除されている。 + +- タイム ゾーンは存在するが、過去の特定の期間のタイム ゾーン調整に関する正確な情報がない。 + + このような場合は、 メソッドを呼び出して、アプリケーションで必要なタイム ゾーンを定義できます。 このメソッドのオーバーロードを使用すると、調整規則のあるタイム ゾーンまたは調整規則のないタイム ゾーンを作成できます。 タイム ゾーンが夏時間をサポートする場合は、固定調整規則または浮動調整規則の調整を定義できます。これらの用語の定義については、「[タイム ゾーンの概要](../../../docs/standard/datetime/time-zone-overview.md)」の「タイム ゾーンの用語」の節を参照してください。 + +> [!IMPORTANT] +> メソッドを呼び出すことで作成されるカスタム タイム ゾーンは、レジストリには追加されません。 カスタム タイム ゾーンには、 メソッドの呼び出しによって返されるオブジェクト参照を通してのみアクセスできます。 + + このトピックでは、調整規則のないタイム ゾーンを作成する方法について説明します。 夏時間調整規則をサポートするタイム ゾーンを作成する方法については、「[方法 : 調整規則のあるタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-with-adjustment-rules.md)」を参照してください。 + +### 調整規則のないタイム ゾーンを作成するには + +1. タイム ゾーンの表示名を指定します。 + + 表示名は、世界協定時刻 \(UTC: Coordinated Universal Time\) からのタイム ゾーンのオフセットをかっこで囲み、その後にタイム ゾーン、タイム ゾーン内の 1 つ以上の都市、またはタイム ゾーン内の 1 つ以上の国や地域を表す文字列が続く標準形式に従います。 + +2. タイム ゾーンの標準時間の名前を指定します。 通常は、この文字列がタイム ゾーンの ID としても使用されます。 + +3. タイム ゾーンの標準名とは異なる ID を使用する場合は、タイム ゾーン ID を指定します。 + +4. UTC からのタイム ゾーンのオフセットを定義する オブジェクトをインスタンス化します。 UTC より後の時刻のタイム ゾーンでは正のオフセットになります。 UTC より前の時刻のタイム ゾーンでは負のオフセットになります。 + +5. メソッドを呼び出して、新しいタイム ゾーンをインスタンス化します。 + +## 使用例 + 次の例では、南極のモーソンの、調整規則のないカスタム タイム ゾーンを定義します。 + + [!code-csharp[System.TimeZone2.CreateTimeZone#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.CreateTimeZone/cs/System.TimeZone2.CreateTimeZone.cs#1)] + [!code-vb[System.TimeZone2.CreateTimeZone#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.CreateTimeZone/vb/System.TimeZone2.CreateTimeZone.vb#1)] + + プロパティに割り当てる文字列は、UTC からのタイム ゾーンのオフセットの後に、タイム ゾーンのわかりやすい説明を続ける標準形式に従います。 + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Core.dll への参照をプロジェクトに追加する。 + +- 次の名前空間をインポートする。 + + [!code-csharp[System.TimeZone2.CreateTimeZone#6](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.CreateTimeZone/cs/System.TimeZone2.CreateTimeZone.cs#6)] + [!code-vb[System.TimeZone2.CreateTimeZone#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.CreateTimeZone/vb/System.TimeZone2.CreateTimeZone.vb#6)] + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [タイム ゾーンの概要](../../../docs/standard/datetime/time-zone-overview.md) + [方法 : 調整規則のあるタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-with-adjustment-rules.md) \ No newline at end of file diff --git a/docs/standard/datetime/enumerate-time-zones.md b/docs/standard/datetime/enumerate-time-zones.md index 92370f3b979..b3b0eb21dcb 100644 --- a/docs/standard/datetime/enumerate-time-zones.md +++ b/docs/standard/datetime/enumerate-time-zones.md @@ -1,56 +1,75 @@ --- -title: "方法: コンピューター上に存在するタイム ゾーンを列挙する" -description: "方法: コンピューター上に存在するタイム ゾーンを列挙する" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/15/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: c5ae4a6c-1790-4355-b5b1-879aaf956129 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: f30ba2a483ff7e5867417969946c2774175d5e3d -ms.lasthandoff: 03/02/2017 - ---- - -# 方法: コンピューター上に存在するタイム ゾーンを列挙する - -指定されたタイム ゾーンを正しく処理するには、そのタイム ゾーンに関する情報がシステムで使用できる必要があります。 たとえば、Windows オペレーティング システムでは、この情報はレジストリに格納されます。 しかし、世界中に存在するタイム ゾーンの合計数は大きいものの、レジストリにはそれらの一部に関する情報しか含まれません。 さらに、レジストリ自体は、内容が意図的に、および誤って変更される可能性がある動的な構造です。 その結果、アプリケーションは、特定のタイム ゾーンがシステムで定義され、使用できると常に想定することができません。 タイム ゾーン情報のアプリケーションを使用する多くのアプリケーションの最初の手順は、必要なタイム ゾーンがローカル システムで使用できるかどうかを判断する、またはタイム ゾーンの一覧をユーザーに提供して選択させることです。 これには、アプリケーションがローカル システムで定義されているタイム ゾーンを列挙する必要があります。 - -## ローカル システムに存在するタイム ゾーンを列挙するには - -1. [TimeZoneInfo.GetSystemTimeZones](xref:System.TimeZoneInfo.GetSystemTimeZones) メソッドを呼び出します。 メソッドは [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトのジェネリック [ReadOnlyCollection<T>](xref:System.Collections.ObjectModel.ReadOnlyCollection%601) コレクションを返します。 コレクション内のエントリは、[DisplayName](xref:System.TimeZoneInfo.DisplayName) プロパティによって並べ替えられます。 例: - - ```csharp - ReadOnlyCollection tzCollection; - tzCollection = TimeZoneInfo.GetSystemTimeZones(); - ``` - - ```vb - Dim tzCollection As ReadOnlyCollection(Of TimeZoneInfo) = TimeZoneInfo.GetSystemTimeZones - ``` - -2. `foreach` ループ (C#) または `For Each…Next` ループ (Visual Basic) を使用して、コレクション内の個々の [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトを列挙し、各オブジェクトに対して必要な処理を実行します。 たとえば、次のコードは、ステップ 1 で返された [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトの [ReadOnlyCollection<T>](xref:System.Collections.ObjectModel.ReadOnlyCollection%601) コレクションを列挙し、各タイム ゾーンの表示名をコンソールに一覧表示します。 - - ```csharp - foreach (TimeZoneInfo timeZone in tzCollection) - Console.WriteLine(" {0}: {1}", timeZone.Id, timeZone.DisplayName); - ``` - - ```vb - For Each timeZone As TimeZoneInfo In tzCollection - Console.WriteLine(" {0}: {1}", timeZone.Id, timeZone.DisplayName) - Next - ``` - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) - -[ローカル システムで定義されているタイム ゾーンの検索](finding-the-time-zones-on-local-system.md) - - +title: "方法 : コンピューター上に存在するタイム ゾーンを列挙する | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "列挙 (タイム ゾーンを) [.NET Framework]" + - "タイム ゾーン [.NET Framework], 列挙" +ms.assetid: bb7a42ab-6bd9-4c5c-b734-5546d51f8669 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : コンピューター上に存在するタイム ゾーンを列挙する +指定されたタイム ゾーンを正しく処理するには、システムで使用できるタイム ゾーンについての情報が必要です。 Windows XP オペレーティング システムと Windows Vista オペレーティング システムは、この情報をレジストリに格納します。 しかし、世界中に存在するタイム ゾーンの総数は多く、レジストリに含まれている情報はそのサブセットにすぎません。 さらに、レジストリ自体が動的な構造であり、その内容は意図的に、または偶然に変更される可能性があります。 そのため、アプリケーションでは、特定のタイム ゾーンがシステム上に定義されていて使用できるものと常に想定することはできません。 タイム ゾーン情報を使用する多くのアプリケーションでは、最初の手順として、必要なタイム ゾーンがローカル システムで使用できることを確認するか、またはタイム ゾーンの一覧をユーザーに表示して選択を促します。 そのためには、ローカル システムで定義されているタイム ゾーンをアプリケーションで列挙する必要があります。 + +> [!NOTE] +> ローカル システムで定義されていない可能性のある特定のタイム ゾーンの存在に依存するアプリケーションは、そのタイム ゾーンに関する情報をシリアル化および逆シリアル化することで、タイム ゾーンを確実に存在させることができます。 その後、タイム ゾーンをリスト コントロールに追加して、アプリケーションのユーザーが選択できるようにします。 詳細については、「[方法 : 埋め込みリソースにタイム ゾーンを保存する](../../../docs/standard/datetime/save-time-zones-to-an-embedded-resource.md)」および「[方法 : 埋め込みリソースからタイム ゾーンを復元する](../../../docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md)」を参照してください。 + +### ローカル システムに存在するタイム ゾーンを列挙するには + +1. メソッドを呼び出します。 メソッドは、 オブジェクトのジェネリック コレクションを返します。 コレクションのエントリは、 プロパティの順に並んでいます。 たとえば、次のようになります。 + + [!code-csharp[System.TimeZone2.Concepts#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#1)] + [!code-vb[System.TimeZone2.Concepts#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#1)] + +2. `foreach` ループ \(C\# の場合\) または `For Each`...`Next` ループ \(Visual Basic の場合\) を使用して、コレクション内の個々の オブジェクトを列挙し、各オブジェクトに対して必要な処理を実行します。 たとえば、次の例では、手順 1. で返された オブジェクトの コレクションを列挙し、各タイム ゾーンの表示名の一覧をコンソールに表示します。 + + [!code-csharp[System.TimeZone2.Concepts#12](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#12)] + [!code-vb[System.TimeZone2.Concepts#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#12)] + +### ローカル システムに存在するタイム ゾーンの一覧をユーザーに表示するには + +1. メソッドを呼び出します。 メソッドは、 オブジェクトのジェネリック コレクションを返します。 + +2. 手順 1. で返されたコレクションを、Windows フォームの `DataSource` プロパティまたは ASP.NET のリスト コントロールに割り当てます。 + +3. ユーザーが選択した オブジェクトを取得します。 + + Windows アプリケーションでの例を次に示します。 + +## 使用例 + この例は、システムで定義されているタイム ゾーンをリスト ボックスに表示する Windows アプリケーションを起動します。 次に、ユーザーが選択したタイム ゾーン オブジェクトの プロパティの値を含むダイアログ ボックスを表示します。 + + [!code-csharp[System.TimeZone2.Concepts#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#2)] + [!code-vb[System.TimeZone2.Concepts#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#2)] + + ほとんどのリスト コントロール \( コントロールや コントロールなど\) では、コレクションが インターフェイスを実装していれば、オブジェクト変数のコレクションを `DataSource` プロパティに割り当てることができます \(ジェネリック クラスはこれを実装しています\)。コレクション内の個々のオブジェクトを表示するために、コントロールはオブジェクトの `ToString` メソッドを呼び出して、オブジェクトを表すために使用される文字列を抽出します。 オブジェクトの場合、`ToString` メソッドは オブジェクトの表示名 \( プロパティの値\) を返します。 + +> [!NOTE] +> リスト コントロールはオブジェクトの `ToString` メソッドを呼び出すので、コントロールに オブジェクトのコレクションを割り当てて、各オブジェクトの意味のある名前を表示させることができます。さらに、ユーザーが選択した オブジェクトも取得できます。 これにより、コレクション内の各オブジェクトの文字列を抽出し、文字列をコレクションに割り当て、そのコレクションをコントロールの `DataSource` プロパティに割り当て、ユーザーが選択した文字列を取得し、その文字列を使用して対象のオブジェクトを抽出するという手間をかける必要がなくなります。 + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Core.dll への参照をプロジェクトに追加する。 + +- 次の名前空間をインポートする。 + + \(C\# コードの場合\) + + + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [方法 : 埋め込みリソースにタイム ゾーンを保存する](../../../docs/standard/datetime/save-time-zones-to-an-embedded-resource.md) + [方法 : 埋め込みリソースからタイム ゾーンを復元する](../../../docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md) \ No newline at end of file diff --git a/docs/standard/datetime/finding-the-time-zones-on-local-system.md b/docs/standard/datetime/finding-the-time-zones-on-local-system.md index f7d4b14b26d..b2819035674 100644 --- a/docs/standard/datetime/finding-the-time-zones-on-local-system.md +++ b/docs/standard/datetime/finding-the-time-zones-on-local-system.md @@ -1,44 +1,45 @@ --- -title: "ローカル システムで定義されているタイム ゾーンの検索" -description: "ローカル システムで定義されているタイム ゾーンの検索" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/15/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 3a6ee323-f3cf-486d-aa0c-103931f1eba9 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: e61017e2a0e26295c3be7e8265674b1a5d2ae5a3 -ms.lasthandoff: 03/02/2017 - ---- - -# ローカル システムで定義されているタイム ゾーンの検索 - -[System.TimeZoneInfo](xref:System.TimeZoneInfo) クラスは、パブリック コンストラクターを公開しません。 そのため、`new` キーワードを使用して新しい [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトを作成することはできません。 [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトをインスタンス化するには、代わりに、定義済みのタイム ゾーンの情報をオペレーティング システムから取得します。 このトピックでは、オペレーティング システムによって格納されているデータからタイム ゾーンをインスタンス化する方法について説明します。 また、[TimeZoneInfo](xref:System.TimeZoneInfo) クラスの `static` (Visual Basic では `Shared`) プロパティを使用すると、世界協定時刻 (UTC: Coordinated Universal Time) およびローカル タイム ゾーンにアクセスできます。 - -## 個別のタイム ゾーンへのアクセス - -[TimeZoneInfo](xref:System.TimeZoneInfo) クラスには、UTC 時刻とローカル タイム ゾーンを表す&2; つの定義済みタイム ゾーン オブジェクトがあります。 これらは、それぞれ [TimeZoneInfo.Utc](xref:System.TimeZoneInfo.Utc) プロパティと [TimeZoneInfo.Local](xref:System.TimeZoneInfo.Local) プロパティから取得できます。 UTC またはローカル タイム ゾーンにアクセスする方法については、「[方法: 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする](access-utc-and-local.md)」を参照してください。 - -また、オペレーティング システムで定義されているタイム ゾーンを表す [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトをインスタンス化することもできます。 特定のタイム ゾーン オブジェクトをインスタンス化する方法については、「[方法: TimeZoneInfo オブジェクトをインスタンス化する](instantiate-time-zone-info.md)」を参照してください。 - -## タイム ゾーン ID - -タイム ゾーン ID は、タイム ゾーンを一意に識別するキー フィールドです。 ほとんどのキーは比較的短いですが、タイム ゾーン ID はいくぶん長めです。 ほとんどの場合、ID の値は、タイム ゾーンの標準時刻の名前を表すために使用される [TimeZoneInfo.StandardName](xref:System.TimeZoneInfo.StandardName) プロパティに対応します。 ただし、例外もあります。 有効な ID を確実に指定する最良の方法は、システムで使用できるタイム ゾーンを列挙し、それに対応するタイム ゾーン ID を記録することです。 タイム ゾーンを列挙する方法については、「[方法: コンピューター上に存在するタイム ゾーンを列挙する](enumerate-time-zones.md)」を参照してください。 - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) - -[方法: 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする](access-utc-and-local.md) - -[方法: TimeZoneInfo オブジェクトをインスタンス化する](instantiate-time-zone-info.md) - -[方法: コンピューター上に存在するタイム ゾーンを列挙する](enumerate-time-zones.md) - -[タイム ゾーン間での時刻の変換](converting-between-time-zones.md) +title: "ローカル システムで定義されているタイム ゾーンの検索 | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ローカル タイム ゾーンへのアクセス" + - "タイム ゾーン ID [.NET Framework]" + - "タイム ゾーン [.NET Framework], 検索 (ローカル システムのタイム ゾーンを)" + - "タイム ゾーン [.NET Framework], local" + - "タイム ゾーン [.NET Framework], 取得" + - "タイム ゾーン [.NET Framework], UTC" + - "UTC 時刻, 検索 (ローカル システムのタイム ゾーンを)" +ms.assetid: 3f63b1bc-9a4b-4bde-84ea-ab028a80d3e1 +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# ローカル システムで定義されているタイム ゾーンの検索 + クラスは、パブリック コンストラクターを公開しません。 そのため、`new` キーワードを使用して新しい オブジェクトを作成することはできません。 オブジェクトをインスタンス化するには、代わりに、定義済みのタイム ゾーンの情報をレジストリから取得するか、カスタム タイム ゾーンを作成します。 このトピックでは、レジストリに格納されているデータからタイム ゾーンをインスタンス化する方法について説明します。 また、 クラスの `static` \(Visual Basic では `shared`\) プロパティを使用すると、世界協定時刻 \(UTC: Coordinated Universal Time\) およびローカル タイム ゾーンにアクセスできます。 + +> [!NOTE] +> レジストリで定義されていないタイム ゾーンの場合は、 メソッドのオーバーロードを呼び出すことによりカスタム タイム ゾーンを作成できます。 カスタム タイム ゾーンを作成する方法については、「[方法 : 調整規則のないタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-without-adjustment-rules.md)」と「[方法 : 調整規則のあるタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-with-adjustment-rules.md)」の各トピックを参照してください。 さらに、 メソッドを使用して、シリアル化された文字列から復元することにより、 オブジェクトをインスタンス化することもできます。 オブジェクトのシリアル化と逆シリアル化については、「[方法 : 埋め込みリソースにタイム ゾーンを保存する](../../../docs/standard/datetime/save-time-zones-to-an-embedded-resource.md)」および「[方法 : 埋め込みリソースからタイム ゾーンを復元する](../../../docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md)」の各トピックを参照してください。 + +## 個別のタイム ゾーンへのアクセス + クラスには、UTC 時刻とローカル タイム ゾーンを表す 2 つの定義済みタイム ゾーン オブジェクトがあります。 これらは、それぞれ プロパティと プロパティから取得できます。 UTC またはローカル タイム ゾーンにアクセスする方法については、「[方法 : 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする](../../../docs/standard/datetime/access-utc-and-local.md)」を参照してください。 + + また、レジストリで定義されているタイム ゾーンを表す オブジェクトをインスタンス化することもできます。 特定のタイム ゾーン オブジェクトをインスタンス化する方法については、「[方法 : TimeZoneInfo オブジェクトをインスタンス化する](../../../docs/standard/datetime/instantiate-time-zone-info.md)」を参照してください。 + +## タイム ゾーン ID + タイム ゾーン ID は、タイム ゾーンを一意に識別するキー フィールドです。 ほとんどのキーは比較的短いですが、タイム ゾーン ID はいくぶん長めです。 ほとんどの場合、ID の値は、タイム ゾーンの標準時刻の名前を表すために使用される プロパティに対応します。 ただし、例外もあります。 有効な ID を確実に指定する最良の方法は、システムで使用できるタイム ゾーンを列挙し、それに対応するタイム ゾーン ID を記録することです。 + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [方法 : 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする](../../../docs/standard/datetime/access-utc-and-local.md) + [方法 : TimeZoneInfo オブジェクトをインスタンス化する](../../../docs/standard/datetime/instantiate-time-zone-info.md) + [タイム ゾーン間での時刻の変換](../../../docs/standard/datetime/converting-between-time-zones.md) \ No newline at end of file diff --git a/docs/standard/datetime/index.md b/docs/standard/datetime/index.md index 823bc9f98e0..5331245d673 100644 --- a/docs/standard/datetime/index.md +++ b/docs/standard/datetime/index.md @@ -1,73 +1,98 @@ --- -title: "日付、時刻、およびタイム ゾーン" -description: "日付、時刻、およびタイム ゾーン" -keywords: .NET, .NET Core -author: stevehoag -manager: wpickett -ms.date: 07/22/2016 -ms.topic: article -ms.prod: .net-core -ms.technology: .net-core-technologies -ms.devlang: dotnet -ms.assetid: 76e6cacc-1c0c-4a71-8cb8-018c112385ba -translationtype: Human Translation -ms.sourcegitcommit: c40c28da09e8a122b542463c197196c82c81dd19 -ms.openlocfilehash: 74ba5a2e350db21cdb5a8c228c745ac3f54ed930 - ---- - -# 日付、時刻、およびタイム ゾーン - -.NET は基本的な [System.DateTime](xref:System.DateTime) 構造体だけでなく、タイム ゾーンでの作業をサポートする次のクラスも提供しています。 - -* [System.TimeZoneInfo](xref:System.TimeZoneInfo) - - システムのローカル タイム ゾーンおよび世界協定時刻 (UTC) ゾーンでの作業を行うには、このクラスを使用します。 - -* [System.DateTimeOffset](xref:System.DateTimeOffset) - - UTC からのオフセット (つまり時差) がわかっている日付および時刻で作業を行う場合は、この構造体を使用します。 [DateTimeOffset](xref:System.DateTimeOffset) 構造体は、日付および時刻の値と、その時刻の UTC からのオフセットを組み合わせたものです。 UTC との関係により、個々の日付と時刻の値によって具体的な日時が明確に特定されます。 これにより、[DateTime](xref:System.DateTime) の値よりも、[DateTimeOffset](xref:System.DateTimeOffset) の値の方がコンピューター間で移植しやすくなります。 - -ドキュメントのこのセクションでは、タイム ゾーンでの作業を行ったり、あるタイム ゾーンから別のタイム ゾーンに日付と時刻を変換できる、タイム ゾーンに対応したアプリケーションを作成するために必要な情報を提供します。 - -## このセクションの内容 - -[タイムゾーンの概要](time-zone-overview.md) - タイム ゾーンに対応したアプリケーションの作成に関連する用語、概念、問題について説明します。 - -[DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け](choosing-between-datetime.md) - 日付および時刻のデータでの作業を行う場合、どのようなときに [System.DateTime](xref:System.DateTime)、[System.DateTimeOffset](xref:System.DateTimeOffset)、[System.TimeZoneInfo](xref:System.TimeZoneInfo) の型を使用するかについて説明します。 - -[ローカル システムで定義されているタイム ゾーンの検索](finding-the-time-zones-on-local-system.md) - ローカル システムで検出されたタイム ゾーンを列挙する方法について説明します。 - -[DateTimeOffset オブジェクトのインスタンス化](instantiating-a-datetimeoffset-object.md) - [System.DateTimeOffset](xref:System.DateTimeOffset) オブジェクトをインスタンス化する方法、および [System.DateTime](xref:System.DateTime) の値を [System.DateTimeOffset](xref:System.DateTimeOffset) の値に変換する方法について説明します。 - -[日付と時刻を使用した算術演算の実行](performing-arithmetic-operations.md) - [System.DateTime](xref:System.DateTime) および [System.DateTimeOffset](xref:System.DateTimeOffset) の値の加算、減算、比較に関連する問題について説明します。 - -[DateTime と DateTimeOffset 間の変換](converting-between-datetime-and-offset.md) - [System.DateTime](xref:System.DateTime) の値と [System.DateTimeOffset](xref:System.DateTimeOffset) の値の変換方法について説明します。 - -[タイム ゾーン間での時刻の変換](converting-between-time-zones.md) - タイム ゾーン間での時刻の変換方法について説明します。 - -[方法: コンピューター上に存在するタイム ゾーンを列挙する](enumerate-time-zones.md) - コンピューターのレジストリに定義されているタイム ゾーンを列挙して、ユーザーが一覧から事前定義のタイム ゾーンを選択できるようにするための例を提供します。 - -[方法: 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする](access-utc-and-local.md) - 世界協定時刻とローカル タイム ゾーンにアクセスする方法について説明します。 - -[方法: TimeZoneInfo オブジェクトをインスタンス化する](instantiate-time-zone-info.md) - ローカル システムのレジストリから [System.TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトをインスタンス化する方法について説明します。 - -[方法: 日付と時刻の演算でタイム ゾーンを使用する](use-time-zones-in-arithmetic.md) - タイム ゾーンの調整規則を反映する日付と時刻の演算を実行する方法について説明します。 - -[方法: あいまいな時刻を解決する](resolve-ambiguous-times.md) - 時刻をタイム ゾーンの標準時刻に対応させることで、あいまいな時刻を解決する方法について説明します。 - -[方法: ユーザーがあいまいな時刻を解決できるようにする](let-users-resolve-ambiguous-times.md) - ユーザーがあいまいな現地時刻と世界協定時刻の対応を決定できるようにする方法について説明します。 - -## 参照 - -[System.TimeZoneInfo](xref:System.TimeZoneInfo) - -[System.DateTimeOffset](xref:System.DateTimeOffset) - -[System.DateTime](xref:System.DateTime) - - - - - - +title: "日付、時刻、およびタイム ゾーン | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "日付と時刻のデータ [.NET Framework]" + - "時刻 [.NET Framework], タイム ゾーン" + - "タイム ゾーン オブジェクト [.NET Framework]" + - "タイム ゾーン [.NET Framework]" + - "時刻 [.NET Framework], タイム ゾーン" +ms.assetid: 295c16e0-641b-4771-94b3-39c1ffa98c13 +caps.latest.revision: 22 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 22 +--- +# 日付、時刻、およびタイム ゾーン +基本的な 構造体に加えて、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] にはタイム ゾーンを扱う次のようなクラスも用意されています。 + +- + + システムのローカル タイム ゾーンと世界協定時刻 \(UTC: Coordinated Universal Time\) タイム ゾーンを扱うには、このクラスを使用します。 クラスのほとんどの機能は、 クラスに引き継がれています。 + +- + + このクラスを使用すると、システムに事前に定義されている任意のタイム ゾーンを処理し、新しいタイム ゾーンを作成して、1 つのタイム ゾーンから別のタイム ゾーンに日付\/時刻を簡単に変換できます。 新たに開発する場合は、 クラスではなく クラスを使用してください。 + +- + + この構造体を使用すると、UTC とのオフセット \(つまり時差\) がわかっている日付\/時刻を処理できます。 構造体は、日付\/時刻値、およびその時刻と UTC とのオフセットを組み合わせます。 UTC との相対関係が示されるため、個々の日付\/時刻値は 1 つの特定の日時を明確に表すことになります。 このため、 値は 値に比べて、コンピューター間での移植性に優れています。 + + ここでは、タイム ゾーンを処理するために必要な情報、および 1 つのタイム ゾーンから別のタイム ゾーンに日付\/時刻を変換するタイム ゾーン対応アプリケーションを作成するために必要な情報について説明します。 + +## このセクションの内容 + [タイム ゾーンの概要](../../../docs/standard/datetime/time-zone-overview.md) + タイム ゾーン対応アプリケーションの作成に関連した用語、概念、および問題について説明します。 + + [DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け](../../../docs/standard/datetime/choosing-between-datetime.md) + 日付\/時刻データを扱う際、どのような場合に 、および の各型を使用できるかについて説明します。 + + [ローカル システムで定義されているタイム ゾーンの検索](../../../docs/standard/datetime/finding-the-time-zones-on-local-system.md) + ローカル システム上で検出されるタイム ゾーンを列挙する方法について説明します。 + + [方法 : コンピューター上に存在するタイム ゾーンを列挙する](../../../docs/standard/datetime/enumerate-time-zones.md) + コンピューターのレジストリに定義されているタイム ゾーンを列挙し、1 つの定義済みタイム ゾーンをユーザーがリストから選択できるようにする例を示します。 + + [方法 : 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする](../../../docs/standard/datetime/access-utc-and-local.md) + 世界協定時刻とローカル タイム ゾーンにアクセスする方法について説明します。 + + [方法 : TimeZoneInfo オブジェクトをインスタンス化する](../../../docs/standard/datetime/instantiate-time-zone-info.md) + ローカル システムのレジストリから オブジェクトをインスタンス化する方法について説明します。 + + [DateTimeOffset オブジェクトのインスタンス化](../../../docs/standard/datetime/instantiating-a-datetimeoffset-object.md) + オブジェクトをインスタンス化する方法、および 値を 値に変換する方法について説明します。 + + [方法 : 調整規則のないタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-without-adjustment-rules.md) + 夏時間の調整をサポートしないカスタム タイム ゾーンを作成する方法について説明します。 + + [方法 : 調整規則のあるタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-with-adjustment-rules.md) + 1 つ以上の夏時間調整をサポートするカスタム タイム ゾーンを作成する方法について説明します。 + + [タイム ゾーンの保存と復元](../../../docs/standard/datetime/saving-and-restoring-time-zones.md) + タイム ゾーン データのシリアル化と逆シリアル化が でどのようにサポートされるかを説明し、これらの機能を使用できるいくつかのシナリオを示します。 + + [方法 : 埋め込みリソースにタイム ゾーンを保存する](../../../docs/standard/datetime/save-time-zones-to-an-embedded-resource.md) + カスタム タイム ゾーンを作成し、その情報をリソース ファイルに保存する方法について説明します。 + + [方法 : 埋め込みリソースからタイム ゾーンを復元する](../../../docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md) + 埋め込みリソース ファイルに保存されているカスタム タイム ゾーンをインスタンス化する方法について説明します。 + + [日付と時刻を使用した算術演算の実行](../../../docs/standard/datetime/performing-arithmetic-operations.md) + 値と 値の加算、減算、および比較に関連した問題について説明します。 + + [方法 : 日付と時刻の演算でタイム ゾーンを使用する](../../../docs/standard/datetime/use-time-zones-in-arithmetic.md) + タイム ゾーンの調整規則を考慮して日付と時刻の演算を実行する方法について説明します。 + + [DateTime と DateTimeOffset 間の変換](../../../docs/standard/datetime/converting-between-datetime-and-offset.md) + 値と 値を相互に変換する方法について説明します。 + + [タイム ゾーン間での時刻の変換](../../../docs/standard/datetime/converting-between-time-zones.md) + 1 つのタイム ゾーンから別のタイム ゾーンに時刻を変換する方法について説明します。 + + [方法 : あいまいな時刻を解決する](../../../docs/standard/datetime/resolve-ambiguous-times.md) + あいまいな時刻をタイム ゾーンの標準時刻に対応付けることによって解決する方法を示します。 + + [方法 : ユーザーがあいまいな時刻を解決できるようにする](../../../docs/standard/datetime/let-users-resolve-ambiguous-times.md) + あいまいなローカル時刻と世界協定時刻との対応付けをユーザーが決定できるようにする方法を示します。 + +## 関連項目 + \ No newline at end of file diff --git a/docs/standard/datetime/instantiate-time-zone-info.md b/docs/standard/datetime/instantiate-time-zone-info.md index daba3d1104c..bcfa1492e68 100644 --- a/docs/standard/datetime/instantiate-time-zone-info.md +++ b/docs/standard/datetime/instantiate-time-zone-info.md @@ -1,112 +1,48 @@ --- -title: "方法 : TimeZoneInfo オブジェクトをインスタンス化する" -description: "方法 : TimeZoneInfo オブジェクトをインスタンス化する" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/15/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: bff137e5-d550-44c3-b460-b3f2dabd4035 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: f2584d446c92d2df2f6d74533ef07fe96888d36a -ms.lasthandoff: 03/02/2017 - ---- - -# 方法 : TimeZoneInfo オブジェクトをインスタンス化する - -[TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトをインスタンス化する最も一般的な方法は、オペレーティング システムからオブジェクトに関する情報を取得することです。 このトピックでは、ローカル システムから [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトをインスタンス化する方法について説明します。 - -## TimeZoneInfo オブジェクトをインスタンス化するには - -1. [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトを宣言します。 - -2. `static` (Visual Basic の場合は `Shared`) [TimeZoneInfo.FindSystemTimeZoneById](xref:System.TimeZoneInfo.FindSystemTimeZoneById(System.String)) メソッドを呼び出します。 - -3. メソッドによってスローされた例外を処理します。 - -## 例 - -次のコードでは、東部標準時のタイム ゾーンを表す [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトを取得し、現地時刻に対応する東部標準時の時刻を表示します。 - -```csharp -DateTime timeNow = DateTime.Now; -try -{ - TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); - DateTime easternTimeNow = TimeZoneInfo.ConvertTime(timeNow, TimeZoneInfo.Local, - easternZone); - Console.WriteLine("{0} {1} corresponds to {2} {3}.", - timeNow, - TimeZoneInfo.Local.IsDaylightSavingTime(timeNow) ? - TimeZoneInfo.Local.DaylightName : - TimeZoneInfo.Local.StandardName, - easternTimeNow, - easternZone.IsDaylightSavingTime(easternTimeNow) ? - easternZone.DaylightName : - easternZone.StandardName); -} -// Handle exception -// -// As an alternative to simply displaying an error message, an alternate Eastern -// Standard Time TimeZoneInfo object could be instantiated here either by restoring -// it from a serialized string or by providing the necessary data to the -// CreateCustomTimeZone method. -catch (InvalidTimeZoneException) -{ - Console.WriteLine("The Eastern Standard Time Zone contains invalid or missing data."); -} -catch (SecurityException) -{ - Console.WriteLine("The application lacks permission to read time zone information from the registry."); -} -catch (OutOfMemoryException) -{ - Console.WriteLine("Not enough memory is available to load information on the Eastern Standard Time zone."); -} -// If we weren't passing FindSystemTimeZoneById a literal string, we also -// would handle an ArgumentNullException. -``` - -```vb -Dim timeNow As Date = Date.Now -Try - Dim easternZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time") - Dim easternTimeNow As Date = TimeZoneInfo.ConvertTime(timeNow, TimeZoneInfo.Local, easternZone) - Console.WriteLine("{0} {1} corresponds to {2} {3}.", _ - timeNow, _ - IIf(TimeZoneInfo.Local.IsDaylightSavingTime(timeNow), _ - TimeZoneInfo.Local.DaylightName, TimeZoneInfo.Local.StandardName), _ - easternTimeNow, _ - IIf(easternZone.IsDaylightSavingTime(easternTimeNow), _ - easternZone.DaylightName, easternZone.StandardName)) -' Handle exception -' -' As an alternative to simply displaying an error message, an alternate Eastern -' Standard Time TimeZoneInfo object could be instantiated here either by restoring -' it from a serialized string or by providing the necessary data to the -' CreateCustomTimeZone method. -Catch e As InvalidTimeZoneException - Console.WriteLine("The Eastern Standard Time Zone contains invalid or missing data.") -Catch e As SecurityException - Console.WriteLine("The application lacks permission to read time zone information from the registry.") -Catch e As OutOfMemoryException - Console.WriteLine("Not enough memory is available to load information on the Eastern Standard Time zone.") -' If we weren't passing FindSystemTimeZoneById a literal string, we also -' would handle an ArgumentNullException. -End -``` - -[TimeZoneInfo.FindSystemTimeZoneById](xref:System.TimeZoneInfo.FindSystemTimeZoneById(System.String)) メソッドの唯一のパラメーターは、取得するタイム ゾーンの識別子です。これは、オブジェクトの [TimeZoneInfo.Id](xref:System.TimeZoneInfo.Id) プロパティに対応します。 タイム ゾーン ID は、タイム ゾーンを一意に識別するキー フィールドです。 ほとんどのキーは比較的短いですが、タイム ゾーン ID はいくぶん長めです。 ほとんどの場合、ID の値は、タイム ゾーンの標準時刻の名前を表すために使用される [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトの [StandardName](xref:System.TimeZoneInfo.StandardName) プロパティに対応します。 ただし、例外もあります。 有効な識別子を確実に指定する最良の方法は、システムで使用できるタイム ゾーンを列挙し、対応するタイム ゾーン識別子を記録しておくことです。 例については、「[方法 : コンピューター上に存在するタイム ゾーンを列挙する](enumerate-time-zones.md)」を参照してください。 「[ローカル システムで定義されているタイム ゾーンの検索](finding-the-time-zones-on-local-system.md)」のトピックには、選択したタイム ゾーン ID の一覧も掲載されています。 - -タイム ゾーンが見つかると、メソッドは [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトを返します。 タイム ゾーンが見つかっても、そのデータが破損しているか不完全な場合には、メソッドから [InvalidTimeZoneException](xref:System.InvalidTimeZoneException) がスローされます。 - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) - -[ローカル システムで定義されているタイム ゾーンの検索](finding-the-time-zones-on-local-system.md) +title: "方法 : TimeZoneInfo オブジェクトをインスタンス化する | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "インスタンス化 (タイム ゾーン オブジェクトを)" + - "タイム ゾーン オブジェクト [.NET Framework], インスタンス化" +ms.assetid: 8cb620e5-c6a6-4267-a52e-beeb73cd1a34 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法 : TimeZoneInfo オブジェクトをインスタンス化する + オブジェクトをインスタンス化する最も一般的な方法は、レジストリからオブジェクトに関する情報を取得することです。 このトピックでは、ローカル システムのレジストリから オブジェクトをインスタンス化する方法について説明します。 + +### TimeZoneInfo オブジェクトをインスタンス化するには + +1. オブジェクトを宣言します。 + +2. `static` \(Visual Basic では `Shared`\) メソッドを呼び出します。 + +3. メソッドによってスローされる例外 \(特に、タイム ゾーンがレジストリで定義されていない場合にスローされる \) を処理します。 + +## 使用例 + 次のコードでは、東部標準時のタイム ゾーンを表す オブジェクトを取得し、現地時刻に対応する東部標準時の時刻を表示します。 + + [!code-csharp[System.TimeZone2.Concepts#5](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#5)] + [!code-vb[System.TimeZone2.Concepts#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#5)] + + メソッドの唯一のパラメーターは、取得するタイム ゾーンの識別子です。これは、オブジェクトの プロパティに対応します。 タイム ゾーン ID は、タイム ゾーンを一意に識別するキー フィールドです。 ほとんどのキーは比較的短いですが、タイム ゾーン ID はいくぶん長めです。 ほとんどの場合、ID の値は、タイム ゾーンの標準時刻の名前を表すために使用される オブジェクトの プロパティに対応します。 ただし、例外もあります。 有効な識別子を確実に指定する最良の方法は、システムで使用できるタイム ゾーンを列挙し、対応するタイム ゾーン識別子を記録しておくことです。 この具体例については、「[方法 : コンピューター上に存在するタイム ゾーンを列挙する](../../../docs/standard/datetime/enumerate-time-zones.md)」を参照してください。[ローカル システムで定義されているタイム ゾーンの検索](../../../docs/standard/datetime/finding-the-time-zones-on-local-system.md) トピックにも、選択したタイム ゾーン識別子の一覧があります。 + + タイム ゾーンが見つかると、メソッドは オブジェクトを返します。 タイム ゾーンが見つからない場合、メソッドから がスローされます。 タイム ゾーンが見つかっても、そのデータが破損しているか不完全な場合には、メソッドから がスローされます。 + + アプリケーションが依存するタイム ゾーンが必ず存在していなければならない場合は、最初に メソッドを呼び出して、レジストリからタイム ゾーンの情報を取得する必要があります。 メソッドの呼び出しが失敗した場合は、例外ハンドラーで、タイム ゾーンの新しいインスタンスを作成するか、シリアル化された オブジェクトを逆シリアル化してインスタンスを作成し直す必要があります。 例については、「[方法 : 埋め込みリソースからタイム ゾーンを復元する](../../../docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md)」を参照してください。 + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [ローカル システムで定義されているタイム ゾーンの検索](../../../docs/standard/datetime/finding-the-time-zones-on-local-system.md) + [方法 : 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする](../../../docs/standard/datetime/access-utc-and-local.md) \ No newline at end of file diff --git a/docs/standard/datetime/instantiating-a-datetimeoffset-object.md b/docs/standard/datetime/instantiating-a-datetimeoffset-object.md index 54786922117..98cf1533e96 100644 --- a/docs/standard/datetime/instantiating-a-datetimeoffset-object.md +++ b/docs/standard/datetime/instantiating-a-datetimeoffset-object.md @@ -1,487 +1,94 @@ --- -title: "DateTimeOffset オブジェクトのインスタンス化" -description: "DateTimeOffset オブジェクトのインスタンス化" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/15/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 476fe67b-6be4-4435-88ab-ced37304f1d1 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 26be324eb5d58b94a71e89aba213f107cf8dfd1e -ms.lasthandoff: 03/02/2017 - ---- - -# DateTimeOffset オブジェクトのインスタンス化 - -[System.DateTimeOffset](xref:System.DateTimeOffset) 構造体は、新しい [DateTimeOffset](xref:System.DateTimeOffset) 値を作成するためのさまざまな方法を提供します。 それらの多くは新しい [System.DateTime](xref:System.DateTime) 値をインスタンス化するために使用できるメソッドに直接対応し、世界協定時刻 (UTC) からの日時値のオフセットを指定できる拡張が加えられています。 特に、次の方法で、[DateTimeOffset](xref:System.DateTimeOffset) 値をインスタンス化できます。 - -* [DateTimeOffset](xref:System.DateTimeOffset) コンストラクターを呼び出す。 - -* 値を [DateTimeOffset](xref:System.DateTimeOffset) 値に暗黙的に変換する。 - -* 日付と時刻の文字列形式を解析する。 - -## 日付と時刻のリテラル - -これをサポートしている言語では、[DateTime](xref:System.DateTime) 値をインスタンス化する最も一般的な方法の&1; つが、ハード コーディングされたリテラル値として日付と時刻を指定することです。 たとえば、次の Visual Basic コードでは、値が 2008 年 1 月 1 日午前 10時 00分の [DateTime](xref:System.DateTime) オブジェクトを作成しています。 - -```vb -Dim literalDate1 As Date = #05/01/2008 8:06:32 AM# -Console.WriteLine(literalDate1.ToString()) -' Displays: -' 5/1/2008 8:06:32 AM -``` - -[DateTime](xref:System.DateTime) リテラルをサポートする言語を使用している場合は、日付と時刻のリテラルを使用して、[DateTimeOffset](xref:System.DateTimeOffset) 値を初期化することもできます。 たとえば、次の Visual Basic コードでは、[DateTimeOffset](xref:System.DateTimeOffset) オブジェクトを作成しています。 - -```vb -Dim literalDate As DateTimeOffset = #05/01/2008 8:06:32 AM# -Console.WriteLine(literalDate.ToString()) -' Displays: -' 5/1/2008 8:06:32 AM -07:00 -``` - -コンソール出力に示すように、このように作成された [DateTimeOffset](xref:System.DateTimeOffset) 値には、ローカル タイム ゾーンのオフセットが割り当てられます。 つまり、文字リテラルを使用して割り当てられた [DateTimeOffset](xref:System.DateTimeOffset) 値は、別のコンピューターでコードが実行された場合に、単一の特定の時点を識別しないことを意味します。 - -## DateTimeOffset コンストラクター - -[System.DateTimeOffset](xref:System.DateTimeOffset) 型は、5 つのコンストラクターを定義します。 それらのうちの&3; つは、[DateTime](xref:System.DateTime) コンストラクターに直接対応し、UTC からの日付と時刻のオフセットを定義する [System.TimeSpan](xref:System.TimeSpan) 型のパラメーターが追加されています。 これらにより、個々の日付と時刻のコンポーネントの値に基づいて、[DateTimeOffset](xref:System.DateTimeOffset) 値を定義できます。 たとえば、次のコードはこれらの 3 つのコンストラクターを使用して、7/1/2008 12:05 AM +01:00 の同じ値で [DateTimeOffset](xref:System.DateTimeOffset) オブジェクトをインスタンス化しています。 - -```csharp -DateTimeOffset dateAndTime; - -// Instantiate date and time using years, months, days, -// hours, minutes, and seconds -dateAndTime = new DateTimeOffset(2008, 5, 1, 8, 6, 32, - new TimeSpan(1, 0, 0)); -Console.WriteLine(dateAndTime); -// Instantiate date and time using years, months, days, -// hours, minutes, seconds, and milliseconds -dateAndTime = new DateTimeOffset(2008, 5, 1, 8, 6, 32, 545, - new TimeSpan(1, 0, 0)); -Console.WriteLine("{0} {1}", dateAndTime.ToString("G"), - dateAndTime.ToString("zzz")); - -// Instantiate date and time using number of ticks -// 05/01/2008 8:06:32 AM is 633,452,259,920,000,000 ticks -dateAndTime = new DateTimeOffset(633452259920000000, new TimeSpan(1, 0, 0)); -Console.WriteLine(dateAndTime); -// The example displays the following output to the console: -// 5/1/2008 8:06:32 AM +01:00 -// 5/1/2008 8:06:32 AM +01:00 -// 5/1/2008 8:06:32 AM +01:00 -``` - -```vb -Dim dateAndTime As DateTimeOffset - -' Instantiate date and time using years, months, days, -' hours, minutes, and seconds -dateAndTime = New DateTimeOffset(2008, 5, 1, 8, 6, 32, _ - New TimeSpan(1, 0, 0)) -Console.WriteLine(dateAndTime) -' Instantiate date and time using years, months, days, -' hours, minutes, seconds, and milliseconds -dateAndTime = New DateTimeOffset(2008, 5, 1, 8, 6, 32, 545, _ - New TimeSpan(1, 0, 0)) -Console.WriteLine("{0} {1}", dateAndTime.ToString("G"), _ - dateAndTime.ToString("zzz")) - -' Instantiate date and time using Persian calendar with years, -' months, days, hours, minutes, seconds, and milliseconds -dateAndTime = New DateTimeOffset(1387, 2, 12, 8, 6, 32, 545, New PersianCalendar, New TimeSpan(1, 0, 0)) -' Note that the console output displays the date in the Gregorian -' calendar, not the Persian calendar. -Console.WriteLine("{0} {1}", dateAndTime.ToString("G"), _ - dateAndTime.ToString("zzz")) - -' Instantiate date and time using number of ticks -' 05/01/2008 8:06:32 AM is 633,452,259,920,000,000 ticks -dateAndTime = New DateTimeOffset(633452259920000000, New TimeSpan(1, 0, 0)) -Console.WriteLine(dateAndTime) -' The example displays the following output to the console: -' 5/1/2008 8:06:32 AM +01:00 -' 5/1/2008 8:06:32 AM +01:00 -' 5/1/2008 8:06:32 AM +01:00 -' 5/1/2008 8:06:32 AM +01:00 -``` - -[PersianCalendar](xref:System.Globalization.PersianCalendar) オブジェクトをそのコンストラクターへの引数の&1; つとして使用して、インスタンス化された [DateTimeOffset](xref:System.DateTimeOffset) オブジェクトの値がコンソールに表示されると、ペルシャ暦ではなく、グレゴリオ暦の日付として表されることに注意してください。 - -他の&2; つのコンストラクターは、DateTime 値から [DateTimeOffset](xref:System.DateTimeOffset) オブジェクトを作成します。 1 つ目のコンストラクターには、[DateTimeOffset](xref:System.DateTimeOffset) 値に変換される&1; つのパラメーター [DateTime](xref:System.DateTime) 値があります。 結果の [DateTimeOffset](xref:System.DateTimeOffset) 値のオフセットは、コンストラクターの単一の [DateTime](xref:System.DateTime) パラメーターの [Kind](xref:System.DateTime.Kind) プロパティによって異なります。 その値が [DateTimeKind.Utc](xref:System.DateTimeKind.Utc) の場合、オフセットは [TimeSpan.Zero](xref:System.TimeSpan.Zero) に等しい値に設定されます。 それ以外の場合、オフセットはローカル タイム ゾーンのオフセットと等しい値に設定されます。 次の例に、このコンストラクターを使用して、UTC とローカル タイム ゾーンを表す [DateTimeOffset](xref:System.DateTimeOffset) オブジェクトをインスタンス化する方法を示します。 - -```csharp -// Declare date; Kind property is DateTimeKind.Unspecified -DateTime sourceDate = new DateTime(2008, 5, 1, 8, 30, 0); -DateTimeOffset targetTime; - -// Instantiate a DateTimeOffset value from a UTC time -DateTime utcTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Utc); -targetTime = new DateTimeOffset(utcTime); -Console.WriteLine(targetTime); -// Displays 5/1/2008 8:30:00 AM +00:00 -// Because the Kind property is DateTimeKind.Utc, -// the offset is TimeSpan.Zero. - -// Instantiate a DateTimeOffset value from a UTC time with a zero offset -targetTime = new DateTimeOffset(utcTime, TimeSpan.Zero); -Console.WriteLine(targetTime); -// Displays 5/1/2008 8:30:00 AM +00:00 -// Because the Kind property is DateTimeKind.Utc, -// the call to the constructor succeeds - -// Instantiate a DateTimeOffset value from a UTC time with a negative offset -try -{ - targetTime = new DateTimeOffset(utcTime, new TimeSpan(-2, 0, 0)); - Console.WriteLine(targetTime); -} -catch (ArgumentException) -{ - Console.WriteLine("Attempt to create DateTimeOffset value from {0} failed.", - targetTime); -} -// Throws exception and displays the following to the console: -// Attempt to create DateTimeOffset value from 5/1/2008 8:30:00 AM +00:00 failed. - -// Instantiate a DateTimeOffset value from a local time -DateTime localTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Local); -targetTime = new DateTimeOffset(localTime); -Console.WriteLine(targetTime); -// Displays 5/1/2008 8:30:00 AM -07:00 -// Because the Kind property is DateTimeKind.Local, -// the offset is that of the local time zone. - -// Instantiate a DateTimeOffset value from an unspecified time -targetTime = new DateTimeOffset(sourceDate); -Console.WriteLine(targetTime); -// Displays 5/1/2008 8:30:00 AM -07:00 -// Because the Kind property is DateTimeKind.Unspecified, -// the offset is that of the local time zone. -``` - -```vb -' Declare date; Kind property is DateTimeKind.Unspecified -Dim sourceDate As Date = #5/1/2008 8:30 AM# -Dim targetTime As DateTimeOffset - -' Instantiate a DateTimeOffset value from a UTC time -Dim utcTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Utc) -targetTime = New DateTimeOffset(utcTime) -Console.WriteLine(targetTime) -' Displays 5/1/2008 8:30:00 AM +00:00 -' Because the Kind property is DateTimeKind.Utc, -' the offset is TimeSpan.Zero. - - -' Instantiate a DateTimeOffset value from a local time -Dim localTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Local) -targetTime = New DateTimeOffset(localTime) -Console.WriteLine(targetTime) -' Displays 5/1/2008 8:30:00 AM -07:00 -' Because the Kind property is DateTimeKind.Local, -' the offset is that of the local time zone. - -' Instantiate a DateTimeOffset value from an unspecified time -targetTime = New DateTimeOffset(sourceDate) -Console.WriteLine(targetTime) -' Displays 5/1/2008 8:30:00 AM -07:00 -' Because the Kind property is DateTimeKind.Unspecified, -' the offset is that of the local time zone. -``` - +title: "DateTimeOffset オブジェクトのインスタンス化 | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "インスタンス化 (タイム ゾーン オブジェクトを)" + - "タイム ゾーン オブジェクト [.NET Framework]、インスタンス化" + - "DateTimeOffset 構造体、変換 (DateTime に)" + - "DateTimeOffset 構造体、インスタンス化" +ms.assetid: 9648375f-d368-4373-a976-3332ece00c0a +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# DateTimeOffset オブジェクトのインスタンス化 + 構造体は 新しい値を作成する方法を示します。 大部分の方法は、新しい 値のインスタンス化に利用できるメソッドに直接対応しています。このメソッドには拡張が施されており、世界協定時刻 \(UTC: Coordinated Universal Time\) からの日付と時刻の値のオフセットを指定できます。 具体的には、次の方法を使用して 値をインスタンス化できます。 + +- 日付リテラルと時刻リテラルを使用する。 + +- コンストラクターを呼び出す。 + +- 値を 値に暗黙に変換する。 + +- 日付と時刻の文字列形式を解析する。 + + このトピックでは、これらの方法を使用して新しい 値をインスタンス化する方法を詳述し、コード例を示します。 + +## 日付リテラルと時刻リテラル + 値をインスタンス化する最も一般的な方法は、日付と時刻を、ハードコーディングされたリテラル値としてインスタンス化することです \(言語がサポートしている場合\)。 たとえば、次の Visual Basic コードは、値が 2008 年 1 月 1 日午前 10 時を示す オブジェクトを作成します。 + + [!code-vb[System.DateTimeOffset.Conceptual.Instantiate#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/vb/Instantiate.vb#1)] + + リテラルをサポートする言語を使用する場合は、日付リテラルと時刻リテラルを使用して 値を初期化することもできます。 たとえば、次の Visual Basic コードは、 オブジェクトを作成します。 + + [!code-vb[System.DateTimeOffset.Conceptual.Instantiate#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/vb/Instantiate.vb#2)] + + ファイルの出力を見てわかるように、この方法で作成した 値には、ローカル タイム ゾーンのオフセットが割り当てられます。 これは、文字リテラルを使用して割り当てられた 値は、コードが別のコンピューターで実行されると、単一の時点の時刻を指すものではないことを意味しています。 + +## DateTimeOffset コンストラクター + 型は、6 つのコンストラクターを定義します。 そのうちの 4 つは、 コンストラクターに直接対応し、UTC からの日付と時刻のオフセットを定義する型 の追加のパラメーターを提供します。 これにより、日付と時刻に関する各コンポーネントの値に基づいて、 値を定義できます。 たとえば、次のコードでは 4 つのコンストラクターを使用して、7\/1\/2008 12:05 AM \+01:00 という同一の値を持つ オブジェクトをインスタンス化します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Instantiate#3](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/cs/Instantiate.cs#3)] + [!code-vb[System.DateTimeOffset.Conceptual.Instantiate#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/vb/Instantiate.vb#3)] + + コンストラクターに対する引数の 1 つである、 オブジェクトを使用してインスタンス化した オブジェクトの値は、コンソールにはペルシャ暦ではなくグレゴリオ暦として表示されることに注意してください。 ペルシャ暦を使用した日付を出力するには、トピック「」にある例を参照してください。 + + 残りの 2 つのコンストラクターは、 値から オブジェクトを作成します。 このうちの 1 つのコンストラクターには、1 つのパラメーターがあります。このパラメーターを使用して、 値を 値に変換します。 結果として得られる 値のオフセットは、コンストラクターの単一のパラメーターの プロパティに依存します。 その値が である場合、オフセットは と等しい値に設定されます。 それ以外の場合は、オフセットはローカル タイム ゾーンの値と等しい値に設定されます。 次に、このコンストラクターを使用して、UTC およびローカル タイム ゾーンを表す オブジェクトをインスタンス化する例を示します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Instantiate#4](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/cs/Instantiate.cs#4)] + [!code-vb[System.DateTimeOffset.Conceptual.Instantiate#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/vb/Instantiate.vb#4)] + > [!NOTE] -> 単一の [DateTime](xref:System.DateTime) パラメーターを持つ [DateTimeOffset](xref:System.DateTimeOffset) コンストラクターのオーバーロードを呼び出すことは、[DateTime](xref:System.DateTime) 値の [DateTimeOffset](xref:System.DateTimeOffset) への暗黙の変換を実行することと同じです。 - -[DateTime](xref:System.DateTime) 値から [DateTimeOffset](xref:System.DateTimeOffset) オブジェクトを作成する&2; つ目のコンストラクターには、変換する [DateTime](xref:System.DateTime) 値と UTC からの日付と時刻のオフセットを表す [TimeSpan](xref:System.TimeSpan) 値の&2; つのパラメーターがあります。 このオフセット値はコンストラクターの最初のパラメーターの [Kind](xref:System.DateTime.Kind) プロパティに対応している必要があり、そうでないと、[System.ArgumentException](xref:System.ArgumentException) がスローされます。 最初のパラメーターの [Kind](xref:System.DateTime.Kind) プロパティが、[DateTimeKind.Utc](xref:System.DateTimeKind.Utc) である場合、2 番目のパラメーターの値は [TimeSpan.Zero](xref:System.TimeSpan.Zero) である必要があります。 最初のパラメーターの [Kind](xref:System.DateTime.Kind) プロパティが [DateTimeKind.Local](xref:System.DateTimeKind.Local) である場合、2 番目のパラメーターの値はローカル システムのタイム ゾーンのオフセットである必要があります。 最初のパラメーターの [Kind](xref:System.DateTime.Kind) プロパティが [DateTimeKind.Unspecified](xref:System.DateTimeKind.Unspecified) である場合は、オフセットに任意の有効な値を指定できます。 次のコードは、[DateTime](xref:System.DateTime) 値を [DateTimeOffset](xref:System.DateTimeOffset) 値に変換するためのこのコンストラクターの呼び出しを示しています。 - -```csharp -DateTime sourceDate = new DateTime(2008, 5, 1, 8, 30, 0); -DateTimeOffset targetTime; - -// Instantiate a DateTimeOffset value from a UTC time with a zero offset. -DateTime utcTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Utc); -targetTime = new DateTimeOffset(utcTime, TimeSpan.Zero); -Console.WriteLine(targetTime); -// Displays 5/1/2008 8:30:00 AM +00:00 -// Because the Kind property is DateTimeKind.Utc, -// the call to the constructor succeeds - -// Instantiate a DateTimeOffset value from a UTC time with a non-zero offset. -try -{ - targetTime = new DateTimeOffset(utcTime, new TimeSpan(-2, 0, 0)); - Console.WriteLine(targetTime); -} -catch (ArgumentException) -{ - Console.WriteLine("Attempt to create DateTimeOffset value from {0} failed.", - utcTime); -} -// Throws exception and displays the following to the console: -// Attempt to create DateTimeOffset value from 5/1/2008 8:30:00 AM failed. - -// Instantiate a DateTimeOffset value from a local time with -// the offset of the local time zone -DateTime localTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Local); -targetTime = new DateTimeOffset(localTime, - TimeZoneInfo.Local.GetUtcOffset(localTime)); -Console.WriteLine(targetTime); -// Displays 5/1/2008 8:30:00 AM -07:00 -// Because the Kind property is DateTimeKind.Local and the offset matches -// that of the local time zone, the call to the constructor succeeds. - -// Instantiate a DateTimeOffset value from a local time with a zero offset. -try -{ - targetTime = new DateTimeOffset(localTime, TimeSpan.Zero); - Console.WriteLine(targetTime); -} -catch (ArgumentException) -{ - Console.WriteLine("Attempt to create DateTimeOffset value from {0} failed.", - localTime); -} -// Throws exception and displays the following to the console: -// Attempt to create DateTimeOffset value from 5/1/2008 8:30:00 AM failed. - -// Instantiate a DateTimeOffset value with an arbitary time zone. -string timeZoneName = "Central Standard Time"; -TimeSpan offset = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName). - GetUtcOffset(sourceDate); -targetTime = new DateTimeOffset(sourceDate, offset); -Console.WriteLine(targetTime); -// Displays 5/1/2008 8:30:00 AM -05:00 -``` - -```vb -Dim sourceDate As Date = #5/1/2008 8:30 AM# -Dim targetTime As DateTimeOffset - -' Instantiate a DateTimeOffset value from a UTC time with a zero offset. -Dim utcTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Utc) -targetTime = New DateTimeOffset(utcTime, TimeSpan.Zero) -Console.WriteLine(targetTime) -' Displays 5/1/2008 8:30:00 AM +00:00 -' Because the Kind property is DateTimeKind.Utc, -' the call to the constructor succeeds. - -' Instantiate a DateTimeOffset value from a UTC time with a non-zero offset. -Try - targetTime = New DateTimeOffset(utcTime, New TimeSpan(-2, 0, 0)) - Console.WriteLine(targetTime) -Catch e As ArgumentException - Console.WriteLine("Attempt to create DateTimeOffset value from {0} failed.", _ - utcTime) -End Try -' Throws exception and displays the following to the console: -' Attempt to create DateTimeOffset value from 5/1/2008 8:30:00 AM failed. - -' Instantiate a DateTimeOffset value from a local time with -' the offset of the local time zone. -Dim localTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Local) -targetTime = New DateTimeOffset(localTime, _ - TimeZoneInfo.Local.GetUtcOffset(localTime)) -Console.WriteLine(targetTime) -' Because the Kind property is DateTimeKind.Local and the offset matches -' that of the local time zone, the call to the constructor succeeds. - -' Instantiate a DateTimeOffset value from a local time with a zero offset. -Try - targetTime = New DateTimeOffset(localTime, TimeSpan.Zero) - Console.WriteLine(targetTime) -Catch e As ArgumentException - Console.WriteLine("Attempt to create DateTimeOffset value from {0} failed.", _ - localTime) -End Try -' Throws exception and displays the following to the console: -' Attempt to create DateTimeOffset value from 5/1/2008 8:30:00 AM failed. - -' Instantiate a DateTimeOffset value with an arbitary time zone. -Dim timeZoneName As String = "Central Standard Time" -Dim offset As TimeSpan = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName). _ - GetUtcOffset(sourceDate) -targetTime = New DateTimeOffset(sourceDate, offset) -Console.WriteLine(targetTime) -' Displays 5/1/2008 8:30:00 AM -05:00 -``` - -## 無効な型変換 - -[System.DateTimeOffset](xref:System.DateTimeOffset) 型は、[System.DateTime](xref:System.DateTime) 値から [DateTimeOffset](xref:System.DateTimeOffset) 値への&1; つの暗黙的な型変換をサポートしています (暗黙的な型変換とは、明示的なキャスト (C# の場合) または変換 (Visual Basic の場合) を必要とせず、情報を失わない&1; つの型から別の型への変換です)。 これにより、次のようなコードが可能となります。 - -```csharp -DateTimeOffset targetTime; - -// The Kind property of sourceDate is DateTimeKind.Unspecified -DateTime sourceDate = new DateTime(2008, 5, 1, 8, 30, 0); -targetTime = sourceDate; -Console.WriteLine(targetTime); -// Displays 5/1/2008 8:30:00 AM -07:00 - -// define a UTC time (Kind property is DateTimeKind.Utc) -DateTime utcTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Utc); -targetTime = utcTime; -Console.WriteLine(targetTime); -// Displays 5/1/2008 8:30:00 AM +00:00 - -// Define a local time (Kind property is DateTimeKind.Local) -DateTime localTime = DateTime.SpecifyKind(sourceDate, DateTimeKind.Local); -targetTime = localTime; -Console.WriteLine(targetTime); -// Displays 5/1/2008 8:30:00 AM -07:00 -``` - -```vb -Dim targetTime As DateTimeOffset - -' The Kind property of sourceDate is DateTimeKind.Unspecified -Dim sourceDate As Date = #5/1/2008 8:30 AM# -targetTime = sourceDate -Console.WriteLine(targetTime) -' Displays 5/1/2008 8:30:00 AM -07:00 - -' define a UTC time (Kind property is DateTimeKind.Utc) -Dim utcTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Utc) -targetTime = utcTime -Console.WriteLine(targetTime) -' Displays 5/1/2008 8:30:00 AM +00:00 - -' Define a local time (Kind property is DateTimeKind.Local) -Dim localTime As Date = Date.SpecifyKind(sourceDate, DateTimeKind.Local) -targetTime = localTime -Console.WriteLine(targetTime) -' Displays 5/1/2008 8:30:00 AM -07:00 -``` - -結果の [DateTimeOffset](xref:System.DateTimeOffset) 値のオフセットは、DateTime.Kind](xref:System.DateTime.Kind) プロパティ値によって異なります。 その値が [DateTimeKind.Utc](xref:System.DateTimeKind.Utc) の場合、オフセットは [TimeSpan.Zero](xref:System.TimeSpan.Zero) に等しい値に設定されます。 その値が [DateTimeKind.Local](xref:System.DateTimeKind.Local) または [DateTimeKind.Unspecified](xref:System.DateTimeKind.Unspecified) のいずれかの場合、オフセットはローカル タイム ゾーンのオフセットに等しい値に設定されます。 - -## 日付と時刻の文字列形式の解析 - -[System.DateTimeOffset](xref:System.DateTimeOffset) 型は、日付と時刻の文字列形式を [DateTimeOffset](xref:System.DateTimeOffset) 値に変換できる&4; つのメソッドをサポートしています。 - -* [Parse](xref:System.DateTimeOffset.Parse(System.String)) は、日付と時刻の文字列形式を [DateTimeOffset](xref:System.DateTimeOffset) 値に変換し、変換が失敗した場合、例外をスローします。 - -* [TryParse](xref:System.DateTimeOffset.TryParse(System.String,System.DateTimeOffset@)) は、日付と時刻の文字列形式を [DateTimeOffset](xref:System.DateTimeOffset) 値に変換し、変換が失敗した場合は、`false` を返します。 - -* [ParseExact](xref:System.DateTimeOffset.ParseExact(System.String,System.String,System.IFormatProvider)) は、指定した形式の日付と時刻の文字列形式を、[DateTimeOffset](xref:System.DateTimeOffset) 値に変換しようと試みます。 変換が失敗すると、メソッドは例外をスローします。 - -* [TryParseExact](xref:System.DateTimeOffset.TryParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,System.DateTimeOffset@)) は、指定した形式の日付と時刻の文字列形式を、[DateTimeOffset](xref:System.DateTimeOffset) 値に変換しようと試みます。 変換が失敗すると、メソッドは `false` を返します。 - -次の例では、[DateTimeOffset](xref:System.DateTimeOffset) 値をインスタンス化するこれらの&4; つの各文字列変換メソッドの呼び出しを示しています。 - -```csharp -string timeString; -DateTimeOffset targetTime; - -timeString = "05/01/2008 8:30 AM +01:00"; -try -{ - targetTime = DateTimeOffset.Parse(timeString); - Console.WriteLine(targetTime); -} -catch (FormatException) -{ - Console.WriteLine("Unable to parse {0}.", timeString); -} - -timeString = "05/01/2008 8:30 AM"; -if (DateTimeOffset.TryParse(timeString, out targetTime)) - Console.WriteLine(targetTime); -else - Console.WriteLine("Unable to parse {0}.", timeString); - -timeString = "Thursday, 01 May 2008 08:30"; -try -{ - targetTime = DateTimeOffset.ParseExact(timeString, "f", - CultureInfo.InvariantCulture); - Console.WriteLine(targetTime); -} -catch (FormatException) -{ - Console.WriteLine("Unable to parse {0}.", timeString); -} - -timeString = "Thursday, 01 May 2008 08:30 +02:00"; -string formatString; -formatString = CultureInfo.InvariantCulture.DateTimeFormat.LongDatePattern + - " " + - CultureInfo.InvariantCulture.DateTimeFormat.ShortTimePattern + - " zzz"; -if (DateTimeOffset.TryParseExact(timeString, - formatString, - CultureInfo.InvariantCulture, - DateTimeStyles.AllowLeadingWhite, - out targetTime)) - Console.WriteLine(targetTime); -else - Console.WriteLine("Unable to parse {0}.", timeString); -// The example displays the following output to the console: -// 5/1/2008 8:30:00 AM +01:00 -// 5/1/2008 8:30:00 AM -07:00 -// 5/1/2008 8:30:00 AM -07:00 -// 5/1/2008 8:30:00 AM +02:00 -``` - -```vb -Dim timeString As String -Dim targetTime As DateTimeOffset - -timeString = "05/01/2008 8:30 AM +01:00" -Try - targetTime = DateTimeOffset.Parse(timeString) - Console.WriteLine(targetTime) -Catch e As FormatException - Console.WriteLine("Unable to parse {0}.", timeString) -End Try - -timeString = "05/01/2008 8:30 AM" -If DateTimeOffset.TryParse(timeString, targetTime) Then - Console.WriteLine(targetTime) -Else - Console.WriteLine("Unable to parse {0}.", timeString) -End If - -timeString = "Thursday, 01 May 2008 08:30" -Try - targetTime = DateTimeOffset.ParseExact(timeString, "f", _ - CultureInfo.InvariantCulture) - Console.WriteLine(targetTime) -Catch e As FormatException - Console.WriteLine("Unable to parse {0}.", timeString) -End Try - -timeString = "Thursday, 01 May 2008 08:30 +02:00" -Dim formatString As String -formatString = CultureInfo.InvariantCulture.DateTimeFormat.LongDatePattern & _ - " " & _ - CultureInfo.InvariantCulture.DateTimeFormat.ShortTimePattern & _ - " zzz" -If DateTimeOffset.TryParseExact(timeString, _ - formatString, _ - CultureInfo.InvariantCulture, _ - DateTimeStyles.AllowLeadingWhite, _ - targetTime) Then - Console.WriteLine(targetTime) -Else - Console.WriteLine("Unable to parse {0}.", timeString) -End If -' The example displays the following output to the console: -' 5/1/2008 8:30:00 AM +01:00 -' 5/1/2008 8:30:00 AM -07:00 -' 5/1/2008 8:30:00 AM -07:00 -' 5/1/2008 8:30:00 AM +02:00 -``` - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) - - +> 単一の パラメーターを持つ コンストラクターのオーバーロードを呼び出すことは、 値の 値への暗黙の変換を実行することと同じです。 + + 残りの 2 つのコンストラクターのうち、もう 1 つのコンストラクターは、 値から オブジェクトを作成します。この値には、変換する値である と、UTC からの日付と時刻のオフセットを表す の 2 つのパラメーターがあります。 このオフセット値は、コンストラクターの最初のパラメーターの プロパティに対応する必要があります。対応していないと、 がスローされます。 最初のパラメーターの プロパティが である場合、2 番目のパラメーターの値は であることが必要です。 最初のパラメーターの プロパティが である場合、2 番目のパラメーターの値はローカル システムのタイム ゾーンのオフセットであることが必要です。 最初のパラメーターの プロパティが である場合、どのようなオフセットでも有効になります。 次のコードは、このコンストラクターを呼び出して 値に変換する例を示したものです。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Instantiate#5](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/cs/Instantiate.cs#5)] + [!code-vb[System.DateTimeOffset.Conceptual.Instantiate#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/vb/Instantiate.vb#5)] + +## 暗黙の型変換 + 型は、 値から 値への暗黙の型変換をサポートします。暗黙の型変換とは、明示的なキャスト \(C\# の場合\) や明示的な変換 \(Visual Basic の場合\) を要求せず、かつ情報を失わずに、ある型を別の型に変換することを言います。 次に、コード例を示します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Instantiate#6](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/cs/Instantiate.cs#6)] + [!code-vb[System.DateTimeOffset.Conceptual.Instantiate#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/vb/Instantiate.vb#6)] + + 結果として得られる 値のオフセットは、 プロパティの値に依存します。 その値が である場合、オフセットは と等しい値に設定されます。 値が または である場合、オフセットはローカル タイム ゾーンの値と等しい値に設定されます。 + +## 日付と時刻の文字列形式の解析 + 型は、日付と時刻の文字列形式を 値に変換する 4 つのメソッドをサポートしています。 + +- メソッド。日付と時刻の文字列形式を 値に変換します。変換に失敗した場合には例外をスローします。 + +- メソッド。日付と時刻の文字列形式を 値に変換します。変換に失敗した場合には `false` を返します。 + +- メソッド。指定の形式での日付と時刻の文字列形式を 値に変換します。 変換に失敗した場合には例外をスローします。 + +- メソッド。指定の形式での日付と時刻の文字列形式を 値に変換します。 変換に失敗した場合には `false` を返します。 + + 次に、これらの 4 つの文字列変換メソッドを個別に呼び出して、 値をインスタンス化する例を示します。 + + [!code-csharp[System.DateTimeOffset.Conceptual.Instantiate#7](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/cs/Instantiate.cs#7)] + [!code-vb[System.DateTimeOffset.Conceptual.Instantiate#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual.Instantiate/vb/Instantiate.vb#7)] + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) \ No newline at end of file diff --git a/docs/standard/datetime/let-users-resolve-ambiguous-times.md b/docs/standard/datetime/let-users-resolve-ambiguous-times.md index 736b875aaca..547913781b5 100644 --- a/docs/standard/datetime/let-users-resolve-ambiguous-times.md +++ b/docs/standard/datetime/let-users-resolve-ambiguous-times.md @@ -1,169 +1,64 @@ --- -title: "方法 : ユーザーがあいまいな時刻を解決できるようにする" -description: "方法 : ユーザーがあいまいな時刻を解決できるようにする" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/15/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: d6858a5c-02ab-4367-9e08-fa22c051c38d -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: ede8d021a4f524cf37f7ad00b6aed89d1b1729f8 -ms.lasthandoff: 03/02/2017 - ---- - -# 方法 : ユーザーがあいまいな時刻を解決できるようにする - -あいまいな時刻は複数の世界協定時刻 (UTC) にマップされる時刻です。 これは、あるタイム ゾーンの夏時間から標準時間に移行する際など、時計の時刻を前に戻すときに発生します。 あいまいな時刻を処理する場合は、次のいずれかの操作を行います。 - -* あいまいな時刻が、ユーザーによって入力されたデータの項目の場合は、あいまいさの解決をユーザーに任せることができます。 - -* 時刻が UTC にどのようにマップされるかを想定します。 たとえば、あいまいな時刻は常にタイム ゾーンの標準時刻で表されると想定できます。 - -この記事では、ユーザーにあいまいな時刻を解決させる方法を示します。 - -## ユーザーにあいまいな時刻を解決させるには - -1. ユーザーによって入力された日付と時刻を取得します。 - -2. [IsAmbiguousTime(DateTime)](xref:System.TimeZoneInfo.IsAmbiguousTime(System.DateTime)) または [IsAmbiguousTime(DateTimeOffset)](xref:System.TimeZoneInfo.IsAmbiguousTime(System.DateTimeOffset)) メソッドを呼び出して、時刻があいまいかどうかを判断します。 - -3. ユーザーに目的のオフセットを選択させます。 - -4. ローカル時刻からユーザーによって選択されたオフセットを減算して、UTC の日時を取得します。 - -5. `static` ( Visual Basic では `Shared`) [SpecifyKind](xref:System.DateTime.SpecifyKind(System.DateTime,System.DateTimeKind)) メソッドを呼び出して、UTC の日時値の [Kind](xref:System.DateTime.Kind) プロパティを [DateTimeKind.Utc](xref:System.DateTimeKind.Utc) に設定します。 - -## 例 - -次の例では、ユーザーに日付と時刻を入力するように求め、それがあいまいである場合は、ユーザーにあいまいな時刻をマップする UTC 時刻を選択させています。 この例では、[DateTime](xref:System.DateTime) オブジェクトを使用しています。必要に応じて、[DateTimeOffset](xref:System.DateTimeOffset) オブジェクトに置き換えることができます。 - -```csharp -private void GetUserDateInput() -{ - // Get date and time from user - DateTime inputDate = GetUserDateTime(); - DateTime utcDate; - - // Exit if date has no significant value - if (inputDate == DateTime.MinValue) return; - - if (TimeZoneInfo.Local.IsAmbiguousTime(inputDate)) - { - Console.WriteLine("The date you've entered is ambiguous."); - Console.WriteLine("Please select the correct offset from Universal Coordinated Time:"); - TimeSpan[] offsets = TimeZoneInfo.Local.GetAmbiguousTimeOffsets(inputDate); - for (int ctr = 0; ctr < offsets.Length; ctr++) - { - Console.WriteLine("{0}.) {1} hours, {2} minutes", ctr, offsets[ctr].Hours, offsets[ctr].Minutes); - } - Console.Write("> "); - int selection = Convert.ToInt32(Console.ReadLine()); - - // Convert local time to UTC, and set Kind property to DateTimeKind.Utc - utcDate = DateTime.SpecifyKind(inputDate - offsets[selection], DateTimeKind.Utc); - - Console.WriteLine("{0} local time corresponds to {1} {2}.", inputDate, utcDate, utcDate.Kind.ToString()); - } - else - { - utcDate = inputDate.ToUniversalTime(); - Console.WriteLine("{0} local time corresponds to {1} {2}.", inputDate, utcDate, utcDate.Kind.ToString()); - } -} - -private DateTime GetUserDateTime() -{ - bool exitFlag = false; // flag to exit loop if date is valid - string dateString; - DateTime inputDate = DateTime.MinValue; - - Console.Write("Enter a local date and time: "); - while (! exitFlag) - { - dateString = Console.ReadLine(); - if (dateString.ToUpper() == "E") - exitFlag = true; - - if (DateTime.TryParse(dateString, out inputDate)) - exitFlag = true; - else - Console.Write("Enter a valid date and time, or enter 'e' to exit: "); - } - - return inputDate; -} -``` - -```vb -Private Sub GetUserDateInput() - ' Get date and time from user - Dim inputDate As Date = GetUserDateTime() - Dim utcDate As Date - - ' Exit if date has no significant value - If inputDate = Date.MinValue Then Exit Sub - - If TimeZoneInfo.Local.IsAmbiguousTime(inputDate) Then - Console.WriteLine("The date you've entered is ambiguous.") - Console.WriteLine("Please select the correct offset from Universal Coordinated Time:") - Dim offsets() As TimeSpan = TimeZoneInfo.Local.GetAmbiguousTimeOffsets(inputDate) - For ctr As Integer = 0 to offsets.Length - 1 - Dim zoneDescription As String - If offsets(ctr).Equals(TimeZoneInfo.Local.BaseUtcOffset) Then - zoneDescription = TimeZoneInfo.Local.StandardName - Else - zoneDescription = TimeZoneInfo.Local.DaylightName - End If - Console.WriteLine("{0}.) {1} hours, {2} minutes ({3})", _ - ctr, offsets(ctr).Hours, offsets(ctr).Minutes, zoneDescription) - Next - Console.Write("> ") - Dim selection As Integer = CInt(Console.ReadLine()) - - ' Convert local time to UTC, and set Kind property to DateTimeKind.Utc - utcDate = Date.SpecifyKind(inputDate - offsets(selection), DateTimeKind.Utc) - - Console.WriteLine("{0} local time corresponds to {1} {2}.", inputDate, utcDate, utcDate.Kind.ToString()) - Else - utcDate = inputDate.ToUniversalTime() - Console.WriteLine("{0} local time corresponds to {1} {2}.", inputDate, utcDate, utcDate.Kind.ToString()) - End If -End Sub - -Private Function GetUserDateTime() As Date - Dim exitFlag As Boolean = False ' flag to exit loop if date is valid - Dim dateString As String - Dim inputDate As Date = Date.MinValue - - Console.Write("Enter a local date and time: ") - Do While Not exitFlag - dateString = Console.ReadLine() - If dateString.ToUpper = "E" Then exitFlag = True - If Date.TryParse(dateString, inputDate) Then - exitFlag = true - Else - Console.Write("Enter a valid date and time, or enter 'e' to exit: ") - End If - Loop - - Return inputDate -End Function -``` - -このコード例の核心は、[TimeSpan](xref:System.TimeSpan) オブジェクトの配列を使用して、UTC からのあいまいな時刻の可能性のあるオフセットを示すことです。 ただし、これらのオフセットは、ユーザーにとって意味がない可能性があります。 オフセットの意味を明確にするには、コードで、オフセットがローカル タイム ゾーンの標準時刻を表すか、または夏時間を表すかに注意します。 コードで標準時間と夏時間を判断するには、そのオフセットと [BaseUtcOffset](xref:System.TimeZoneInfo.BaseUtcOffset) プロパティの値を比較します。 このプロパティは、UTC とタイム ゾーンの標準時間の差を示します。 - -この例では、ローカル タイム ゾーンへのすべての参照は [TimeZoneInfo.Local](xref:System.TimeZoneInfo.Local) プロパティによって行われます。ローカル タイム ゾーンが、オブジェクト変数に割り当てられることはありません。 これは、別の呼び出しがキャッシ データをクリアして、ローカル タイム ゾーンが割り当てられているオブジェクトが無効にされる可能性があるために、推奨される方法です。 - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) - -[方法: あいまいな時刻を解決する](resolve-ambiguous-times.md) - - +title: "方法 : ユーザーがあいまいな時刻を解決できるようにする | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "あいまいな時刻 [.NET Framework]" + - "タイム ゾーン [.NET Framework], あいまいな時刻" +ms.assetid: bca874ee-5b68-4654-8bbd-3711220ef332 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 方法 : ユーザーがあいまいな時刻を解決できるようにする +あいまいな時刻とは、複数の世界協定時刻 \(UTC: Coordinated Universal Time\) に対応する時刻です。 このようなことは、あるタイム ゾーンで夏時間から標準時間に移行する際など、クロック時刻を元に戻すときに発生します。 あいまいな時刻は、次のいずれかの方法で対処できます。 + +- あいまいな時刻がユーザーによって入力されたデータの項目である場合は、あいまいさの解決をユーザーに任せることができます。 + +- UTC に対する時刻の対応方法を想定します。 たとえば、あいまいな時刻は常にタイム ゾーンの標準時刻を表す、などと想定できます。 + + このトピックでは、あいまいな時刻をユーザーに解決させる方法について説明します。 + +### あいまいな時刻をユーザーに解決させるには + +1. ユーザーが入力した日付と時刻を取得します。 + +2. メソッドを呼び出して、時刻があいまいかどうかを判定します。 + +3. 時刻があいまいな場合は、 メソッドを呼び出して、 オブジェクトの配列を取得します。 配列の各要素には、あいまいな時刻に対応する可能性のある UTC オフセットが格納されています。 + +4. 適切なオフセットを選択するようにユーザーに促します。 + +5. ユーザーが選択したオフセットを現地時刻から減算して、UTC の日付と時刻を取得します。 + +6. `static` \(Visual Basic .NET では `Shared`\) メソッドを呼び出して、UTC の日時の値の プロパティに を設定します。 + +## 使用例 + 次の例では、日付と時刻の入力をユーザーに要求し、入力された値があいまいな場合は、あいまいな時刻に対応する UTC 時刻をユーザーが選択できるようにします。 + + [!code-csharp[System.TimeZone2.Concepts#11](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#11)] + [!code-vb[System.TimeZone2.Concepts#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#11)] + + この例の中核となるコードでは、 オブジェクトの配列を使用して、UTC からのあいまいな時刻のオフセットとして可能性のある値を示しています。 しかし、これらのオフセットはユーザーにとっては意味がないものと考えられます。 オフセットの意味を明確にするため、コードでは、オフセットがローカル タイム ゾーンの標準時刻を表すのか、または夏時間を表すのかも示します。 時刻が標準時刻なのか夏時間なのかを判定するには、オフセットを プロパティの値と比較します。 このプロパティは、UTC とタイム ゾーンの標準時刻の間の差を示します。 + + この例では、ローカル タイム ゾーンに対するすべての参照は、 プロパティを通して行います。ローカル タイム ゾーンをオブジェクト変数に割り当てることはしません。 メソッドを呼び出すと、ローカル タイム ゾーンが割り当てられているオブジェクトは無効になるので、これが推奨される方法です。 + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Core.dll への参照をプロジェクトに追加する。 + +- 名前空間を `using` ステートメントでインポートする \(C\# のコードで必要\)。 + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [方法 : あいまいな時刻を解決する](../../../docs/standard/datetime/resolve-ambiguous-times.md) \ No newline at end of file diff --git a/docs/standard/datetime/performing-arithmetic-operations.md b/docs/standard/datetime/performing-arithmetic-operations.md index e3449c296f0..ac231b34ab2 100644 --- a/docs/standard/datetime/performing-arithmetic-operations.md +++ b/docs/standard/datetime/performing-arithmetic-operations.md @@ -1,320 +1,87 @@ --- -title: "日付と時刻を使用した算術演算の実行" -description: "日付と時刻を使用した算術演算の実行" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/16/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 589ac5ec-8365-4a0d-bc38-72183718110c -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: b872cc4c2b799ddafc9df263795d860754d1ec17 -ms.lasthandoff: 03/02/2017 - ---- - -# 日付と時刻を使用した算術演算の実行 - -[System.DateTime](xref:System.DateTime) 構造体と [System.DateTimeOffset](xref:System.DateTimeOffset) 構造体には、その値に対して算術演算を実行するメンバーが用意されていますが、算術演算の結果は大きく異なります。 この記事では、それらの相違点を検討し、日付と時刻のデータがどの程度タイム ゾーンに対応しているかを明らかにして、日付と時刻のデータを使用してタイム ゾーンに完全に対応した操作を実行する方法について説明します。 - -## DateTime 値を使用した比較および算術演算 - -[System.DateTime](xref:System.DateTime) 値は、制限付きでタイム ゾーンに対応しています。 [DateTime.Kind](xref:System.DateTime.Kind) プロパティでは、[System.DateTimeKind](xref:System.DateTimeKind) 値を日付と時刻に割り当てて、その日付と時刻が現地時刻、世界協定時刻 (UTC)、またはタイム ゾーンが指定されていない時刻のどれを表すかを示すことができます。 ただし、この制限付きのタイム ゾーン情報は、[DateTime](xref:System.DateTime) 値に対して比較操作を行うか、日付と時刻の算術演算を実行するときには無視されます。 次の例では、現在の現地時刻と現在の UTC 時刻を比較することで、この問題を示しています。 - -```csharp -using System; - -public enum TimeComparison -{ - EarlierThan = -1, - TheSameAs = 0, - LaterThan = 1 -} - -public class DateManipulation -{ - public static void Main() - { - DateTime localTime = DateTime.Now; - DateTime utcTime = DateTime.UtcNow; - - Console.WriteLine("Difference between {0} and {1} time: {2}:{3} hours", - localTime.Kind.ToString(), - utcTime.Kind.ToString(), - (localTime - utcTime).Hours, - (localTime - utcTime).Minutes); - Console.WriteLine("The {0} time is {1} the {2} time.", - localTime.Kind.ToString(), - Enum.GetName(typeof(TimeComparison), localTime.CompareTo(utcTime)), - utcTime.Kind.ToString()); - } -} -// If run in the U.S. Pacific Standard Time zone, the example displays -// the following output to the console: -// Difference between Local and Utc time: -7:0 hours -// The Local time is EarlierThan the Utc time. -``` - -```vb -Public Enum TimeComparison As Integer - EarlierThan = -1 - TheSameAs = 0 - LaterThan = 1 -End Enum - -Module DateManipulation - Public Sub Main() - Dim localTime As Date = Date.Now - Dim utcTime As Date = Date.UtcNow - - Console.WriteLine("Difference between {0} and {1} time: {2}:{3} hours", _ - localTime.Kind.ToString(), _ - utcTime.Kind.ToString(), _ - (localTime - utcTime).Hours, _ - (localTime - utcTime).Minutes) - Console.WriteLine("The {0} time is {1} the {2} time.", _ - localTime.Kind.ToString(), _ - [Enum].GetName(GetType(TimeComparison), localTime.CompareTo(utcTime)), _ - utcTime.Kind.ToString()) - ' If run in the U.S. Pacific Standard Time zone, the example displays - ' the following output to the console: - ' Difference between Local and Utc time: -7:0 hours - ' The Local time is EarlierThan the Utc time. - End Sub -End Module -``` - -[DateTime.CompareTo(DateTime, DateTime)](xref:System.DateTime.Compare(System.DateTime,System.DateTime)) メソッドは、現地時刻が UTC 時刻より早い (より小さい) という結果を出力しており、減算の操作は、UTC と米国の太平洋標準時ゾーンにあるシステムの現地時刻との差が7 時間であることを示しています。 しかし、これら&2; つの値は、ある特定の時点を異なる表現で示したものであるため、この場合、時間差の原因は、UTC を基準としたローカル タイム ゾーンのオフセットにあることは明らかです。 - -一般的に、[DateTimeKind](xref:System.DateTimeKind) プロパティは、[DateTime](xref:System.DateTime) の比較および算術メソッドによって返される結果に影響を与えません (2 つの同じ時点の比較結果が示すとおり)。ただし、その結果の解釈には影響を与えることがあります。 例: - -* 算術演算の実行対象となる&2; つの日付と時刻の値の [DateTimeKind](xref:System.DateTimeKind) プロパティが両方とも [DateTimeKind.Utc](xref:System.DateTimeKind.Utc) である場合、実行結果には、2 つの値の実際の時間差が反映されます。 同様に、そのような&2; つの日付と時刻の値を比較した結果には、2 つの時間の関係が正確に反映されます。 - -* 算術演算または比較操作の実行対象となる&2; つの日付と時刻の値の [DateTimeKind](xref:System.DateTimeKind) プロパティが両方とも [DateTimeKind.Local](xref:System.DateTimeKind.Local) であるか、または&2; つの日付と時刻の値の [DateTimeKind](xref:System.DateTimeKind) プロパティ値が異なる場合、実行結果には、2 つの値の間の時刻差が反映されます。 - -* ローカルの日付と時刻の値に対する算術演算または比較操作では、特定の値があいまいであるかや、無効であるかどうかは考慮されず、ローカル タイム ゾーンでの夏時間の開始や終了による調整規則の影響についても考慮されません。 - -* UTC と現地時刻の差を比較または計算する操作の結果には、UTC を基準としたローカル タイム ゾーンのオフセットに等しい時間差が含まれます。 - -* タイム ゾーンが指定されていない時刻と UTC または現地時刻との差を比較または計算する操作では、単純な時刻差が反映されます。 タイム ゾーンの違いは考慮されず、結果にはタイム ゾーン調整規則の適用が反映されません。 - -* タイム ゾーンが指定されていない&2; つの時刻の差を比較または計算する操作の結果には、2 つの異なるタイム ゾーンの時刻の差を反映した未知の時間差が含まれる場合があります。 - -多くの場合、タイム ゾーンの違いは日付と時刻の計算には影響しないか、または日付と時刻のデータのコンテキストによって比較操作や算術演算の意味が規定されます。 これらの詳細については、「[DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け](choosing-between-datetime.md)」をご覧ください。 - -## DateTimeOffset 値を使用した比較および算術演算 - -[System.DateTimeOffset](xref:System.DateTimeOffset) 値には、日付と時刻だけでなく、UTC を基準としてその日付と時刻を明確に定義するオフセットが含まれています。 このため、[System.DateTime](xref:System.DateTime) 値とはいくらか異なる等価性を規定できるようになります。 [DateTime](xref:System.DateTime) 値が等しくなるのは日付と時刻の値が同じ場合ですが、[DateTimeOffset](xref:System.DateTimeOffset) 値が等しくなるのは、両方の値が同じ時点を表す場合です。 これにより、2 つの日付と時刻の間隔を決定する比較操作やほとんどの算術演算では、[DateTimeOffset](xref:System.DateTimeOffset) 値を使用すると、より正確な結果を得ることができ、結果を正しく解釈する手間を減らすことができます。 次の例では、現地時刻と UTC の DateTime 値を比較した前の例に [DateTimeOffset](xref:System.DateTimeOffset) を使用して、動作の違いを示しています。 - -```csharp -using System; - -public enum TimeComparison -{ - EarlierThan = -1, - TheSameAs = 0, - LaterThan = 1 -} - -public class DateTimeOffsetManipulation -{ - public static void Main() - { - DateTimeOffset localTime = DateTimeOffset.Now; - DateTimeOffset utcTime = DateTimeOffset.UtcNow; - - Console.WriteLine("Difference between local time and UTC: {0}:{1:D2} hours", - (localTime - utcTime).Hours, - (localTime - utcTime).Minutes); - Console.WriteLine("The local time is {0} UTC.", - Enum.GetName(typeof(TimeComparison), localTime.CompareTo(utcTime))); - } -} -// Regardless of the local time zone, the example displays -// the following output to the console: -// Difference between local time and UTC: 0:00 hours. -// The local time is TheSameAs UTC. -``` - -```vb -Public Enum TimeComparison As Integer - EarlierThan = -1 - TheSameAs = 0 - LaterThan = 1 -End Enum - -Module DateTimeOffsetManipulation - Public Sub Main() - Dim localTime As DateTimeOffset = DateTimeOffset.Now - Dim utcTime As DateTimeOffset = DateTimeOffset.UtcNow - - Console.WriteLine("Difference between local time and UTC: {0}:{1:D2} hours.", _ - (localTime - utcTime).Hours, _ - (localTime - utcTime).Minutes) - Console.WriteLine("The local time is {0} UTC.", _ - [Enum].GetName(GetType(TimeComparison), localTime.CompareTo(utcTime))) - End Sub -End Module -' Regardless of the local time zone, the example displays -' the following output to the console: -' Difference between local time and UTC: 0:00 hours. -' The local time is TheSameAs UTC. -' Console.WriteLine(e.GetType().Name) -``` - -この例では、[DateTimeOffset.CompareTo](xref:System.DateTimeOffset.CompareTo(System.DateTimeOffset)) メソッドが、現在の現地時刻と現在の UTC 時刻が等しいことを示しており、[DateTimeOffset](xref:System.DateTimeOffset) 値を減算することで、2 つの時刻の差が [TimeSpan.Zero](xref:System.TimeSpan.Zero) であることを示しています。 - -日付と時刻の算術演算に [DateTimeOffset](xref:System.DateTimeOffset) 値を使用する際の主な制限は、[DateTimeOffset](xref:System.DateTimeOffset) 値はタイム ゾーンに一部対応していますが、完全対応しているわけではないことです。 [DateTimeOffset](xref:System.DateTimeOffset) 値のオフセットには、[DateTimeOffset](xref:System.DateTimeOffset) 変数に最初に値が割り当てられたときに UTC を基準としたタイム ゾーンのオフセットが反映されますが、その後は、タイム ゾーンと関連付けられなくなります。 特定可能な時刻との直接の関連付けは失われるため、日付と時刻の間隔に対して加算や減算を行っても、タイム ゾーンの調整規則は考慮されません。 - -たとえば、米国の中部標準時のタイム ゾーンが夏時間に移行するのは、 2008 年 3 月 9 日の午前 2 時です。 つまり、中部標準時の 2008 年 3 月 9 日の午前 1 時 30 分に 2 時間 30 分の間隔を加算すると、日付と時刻は 2008 年 3 月 9 日の 午前 5 時になります。 しかし、次の例に示すように、加算の結果は 2008 年 3 月 9 日の 午前 4 時です。 この操作の結果は正しい時点を表していますが、目的のタイム ゾーンの時刻ではありません (つまり、予想されるタイム ゾーンのオフセットが適用されていません)。 - -```csharp -using System; - -public class IntervalArithmetic -{ - public static void Main() - { - DateTime generalTime = new DateTime(2008, 3, 9, 1, 30, 0); - const string tzName = "Central Standard Time"; - TimeSpan twoAndAHalfHours = new TimeSpan(2, 30, 0); - - // Instantiate DateTimeOffset value to have correct CST offset - try - { - DateTimeOffset centralTime1 = new DateTimeOffset(generalTime, - TimeZoneInfo.FindSystemTimeZoneById(tzName).GetUtcOffset(generalTime)); - - // Add two and a half hours - DateTimeOffset centralTime2 = centralTime1.Add(twoAndAHalfHours); - // Display result - Console.WriteLine("{0} + {1} hours = {2}", centralTime1, - twoAndAHalfHours.ToString(), - centralTime2); - } - catch (TimeZoneNotFoundException) - { - Console.WriteLine("Unable to retrieve Central Standard Time zone information."); - } - } -} -// The example displays the following output to the console: -// 3/9/2008 1:30:00 AM -06:00 + 02:30:00 hours = 3/9/2008 4:00:00 AM -06:00 -``` - -```vb -Module IntervalArithmetic - Public Sub Main() - Dim generalTime As Date = #03/09/2008 1:30AM# - Const tzName As String = "Central Standard Time" - Dim twoAndAHalfHours As New TimeSpan(2, 30, 0) - - ' Instantiate DateTimeOffset value to have correct CST offset - Try - Dim centralTime1 As New DateTimeOffset(generalTime, _ - TimeZoneInfo.FindSystemTimeZoneById(tzName).GetUtcOffset(generalTime)) - - ' Add two and a half hours - Dim centralTime2 As DateTimeOffset = centralTime1.Add(twoAndAHalfHours) - ' Display result - Console.WriteLine("{0} + {1} hours = {2}", centralTime1, _ - twoAndAHalfHours.ToString(), _ - centralTime2) - Catch e As TimeZoneNotFoundException - Console.WriteLine("Unable to retrieve Central Standard Time zone information.") - End Try - End Sub -End Module -' The example displays the following output to the console: -' 3/9/2008 1:30:00 AM -06:00 + 02:30:00 hours = 3/9/2008 4:00:00 AM -06:00 -``` - -## タイム ゾーンの時刻を使用した算術演算 - -[System.TimeZoneInfo](xref:System.TimeZoneInfo) クラスには、日付と時刻の算術演算を実行するときに調整規則を自動的に適用するメソッドは用意されていません。 ただし、あるタイム ゾーンの時刻を UTC に変換してから算術演算を実行し、その後 UTC から元のタイム ゾーンの時刻に再変換することで、調整規則を適用したときと同じ結果を得ることができます。 詳細については、「[方法 : 日付と時刻の演算でタイム ゾーンを使用する](use-time-zones-in-arithmetic.md)」をご覧ください。 - -たとえば、次のコードは、2008 年 3 月 9 日の午前 2 時に 2 時間 30 分を加算する 前のコードと似ています。 ただし、中部標準時を UTC に変換した後に日付と時刻の算術演算を実行し、その結果を UTC から中部標準時に変換するため、得られた時刻は中部標準時タイム ゾーンの夏時間への移行を反映しています。 - -```csharp -using System; - -public class TimeZoneAwareArithmetic -{ - public static void Main() - { - const string tzName = "Central Standard Time"; - - DateTime generalTime = new DateTime(2008, 3, 9, 1, 30, 0); - TimeZoneInfo cst = TimeZoneInfo.FindSystemTimeZoneById(tzName); - TimeSpan twoAndAHalfHours = new TimeSpan(2, 30, 0); - - // Instantiate DateTimeOffset value to have correct CST offset - try - { - DateTimeOffset centralTime1 = new DateTimeOffset(generalTime, - cst.GetUtcOffset(generalTime)); - - // Add two and a half hours - DateTimeOffset utcTime = centralTime1.ToUniversalTime(); - utcTime += twoAndAHalfHours; - - DateTimeOffset centralTime2 = TimeZoneInfo.ConvertTime(utcTime, cst); - // Display result - Console.WriteLine("{0} + {1} hours = {2}", centralTime1, - twoAndAHalfHours.ToString(), - centralTime2); - } - catch (TimeZoneNotFoundException) - { - Console.WriteLine("Unable to retrieve Central Standard Time zone information."); - } - } -} -// The example displays the following output to the console: -// 3/9/2008 1:30:00 AM -06:00 + 02:30:00 hours = 3/9/2008 5:00:00 AM -05:00 -``` - -```vb -Module TimeZoneAwareArithmetic - Public Sub Main() - Const tzName As String = "Central Standard Time" - - Dim generalTime As Date = #03/09/2008 1:30AM# - Dim cst As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(tzName) - Dim twoAndAHalfHours As New TimeSpan(2, 30, 0) - - ' Instantiate DateTimeOffset value to have correct CST offset - Try - Dim centralTime1 As New DateTimeOffset(generalTime, _ - cst.GetUtcOffset(generalTime)) - - ' Add two and a half hours - Dim utcTime As DateTimeOffset = centralTime1.ToUniversalTime() - utcTime += twoAndAHalfHours - - Dim centralTime2 As DateTimeOffset = TimeZoneInfo.ConvertTime(utcTime, cst) - ' Display result - Console.WriteLine("{0} + {1} hours = {2}", centralTime1, _ - twoAndAHalfHours.ToString(), _ - centralTime2) - Catch e As TimeZoneNotFoundException - Console.WriteLine("Unable to retrieve Central Standard Time zone information.") - End Try - End Sub -End Module -' The example displays the following output to the console: -' 3/9/2008 1:30:00 AM -06:00 + 02:30:00 hours = 3/9/2008 5:00:00 AM -05:00 -``` - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) - -[方法: 日付と時刻の演算でタイム ゾーンを使用する](use-time-zones-in-arithmetic.md) - - - +title: "日付と時刻を使用した算術演算の実行 | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "算術演算 [.NET Framework], 日付と時刻" + - "日付 [.NET Framework], 算術演算" + - "日付 [.NET Framework], 比較" + - "DateTime 構造体, 算術演算" + - "DateTimeOffset 構造体, 算術演算" + - "タイム ゾーン [.NET Framework], 算術演算" + - "時刻 [.NET Framework], 算術演算" +ms.assetid: 87c7ddf2-f15e-48af-8602-b3642237e6d0 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 日付と時刻を使用した算術演算の実行 + 構造体と 構造体はいずれも、構造体の値に対して算術演算を実行するメンバーを提供しますが、演算の結果は大きく異なります。 ここでは、その相違点について考察し、日付と時刻のデータにおけるタイム ゾーンへの対応の程度について詳述します。さらに、日付と時刻のデータを使用して、タイム ゾーンに完全に対応した操作を実行する方法について解説します。 + +## DateTime 値を使用した比較演算と算術演算 + .NET Framework Version 2.0 以降では、 値でのタイム ゾーンへの対応は限られたものになっています。 プロパティを使用すると、 値を日付と時刻に割り当てて、それが表す内容が現地時刻、世界協定時刻 \(UTC: Coordinated Universal Time\)、タイム ゾーンが指定されていない時刻のいずれであるかを示すことができます。 ただし、 値で日付と時刻の比較演算や算術演算が実行されるときには、このタイム ゾーンについての制限された情報は無視されます。 この例を次に示します。例では、現在の現地時刻を現在の UTC 時刻と比較します。 + + [!code-csharp[System.DateTimeOffset.Conceptual#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/cs/Conceptual2.cs#2)] + [!code-vb[System.DateTimeOffset.Conceptual#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/vb/Conceptual2.vb#2)] + + のメソッドは米国の太平洋標準時タイム ゾーンのシステムの UTC と現地時間の違いを 7 時間であることを現地時間 \(または未満\) は UTC 時刻よりも早い\)、および減算演算は次のことを報告します。 しかし、これらの 2 つの値では時刻の表現方法が異なるため、この例では明らかに、時間間隔は UTC からのローカル タイム ゾーンのオフセットに完全に帰属します。 + + より一般的な例としては、 プロパティは 比較演算および算術演算によって返される結果には影響しないことが挙げられます \(同じ 2 つの時刻の比較が行われるため\)。ただし、結果の解釈には影響することがあります。 たとえば、次のようになります。 + +- 2 つの日付と時刻の値 \( プロパティはいずれも に設定されている\) に対して実行した算術演算の結果には、2 つの値の間の実際の時間間隔が反映されます。 同様に、このような 2 つの日付と時刻の値を比較すると、時刻間の関係が正確に反映されます。 + +- 2 つの日付と時刻の値 \( プロパティがいずれも に設定されているか、2 つの日付と時刻の値にはそれぞれ異なる プロパティ値が設定されている\) に対して実行した算術演算または比較演算の結果には、2 つの値の間のクロック時間の差異が反映されます。 + +- ローカルの日付と時刻の値に対して実行される算術演算と比較演算では、特定の値が不明確または無効であるかは考慮されません。また、ローカル タイム ゾーンの夏時間への移行または夏時間からの移行によって生じる調整規則の影響についても考慮されません。 + +- UTC 時刻と現地時刻との差異を比較または算出する演算には、時間間隔が含まれます。この時間間隔は、結果として求められる UTC からのローカル タイム ゾーンのオフセットに等しくなります。 + +- タイム ゾーンが指定されていない時刻と UTC 時刻または現地時刻との差異を比較または算出する演算には、単にクロック時間が反映されます。 タイム ゾーン間の差異は考慮されず、結果にはタイム ゾーン調整規則のアプリケーションは反映されません。 + +- タイム ゾーンが指定されていない 2 つの時刻間での差異を比較または算出する演算には、未知の間隔が含まれます。この時間間隔には、2 つの異なるタイム ゾーンにおける時差が反映されます。 + + タイム ゾーンの相違が日付と時刻の計算に影響しないシナリオ \(詳細については、「[DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け](../../../docs/standard/datetime/choosing-between-datetime.md)」を参照\) や、日付と時刻のデータのコンテキストによって比較演算と算術演算の意味を定義するシナリオなど、さまざまなシナリオがあります。 + +## DateTimeOffset 値を使用した比較演算と算術演算 + 値には、日付と時刻だけでなく、UTC に対する日付と時刻を明確に定義するオフセットも定義されます。 これにより、 値とはいくぶん異なる等値性を定義できるようになります。 値は日付と時刻の値が同じである場合に等しくなりますが、 値は同じ時刻を参照している場合に等しくなります。 これによって 値の精度が高まり、2 つの日付と時刻の間隔を判定する比較演算や大部分の算術演算で使用するときに解釈を行う必要性が低くなります。 次の例では、現地時刻および UTC 時刻の 値を比較した前述の例と同じ を使用して、その動作の違いを示します。 + + [!code-csharp[System.DateTimeOffset.Conceptual#3](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/cs/Conceptual3.cs#3)] + [!code-vb[System.DateTimeOffset.Conceptual#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/vb/Conceptual3.vb#3)] + + この例では、 メソッドにより、現在の現地時刻と現在の UTC 時刻が等しいことが示されます。また、 値の減算により、2 つの時刻の差が であることが示されます。 + + 日付と時刻の算術演算で 値を使用するときの主な制限事項は、 値はタイム ゾーンに対応しているものの、それが完全ではないことです。 変数に最初に値が割り当てられ、タイム ゾーンとの関連付けが解除されたときに、 値のオフセットに UTC からのローカル タイム ゾーンのオフセットが反映されます。 識別できる時間に直接関連付けられていないため、日付と時刻の間隔の加算と減算では、タイム ゾーンの調整規則は考慮されません。 + + 実際の例では、米国の中部標準時ゾーンの夏時間への移行が 2008 \(3 年 12 月 9 日の午前 2:00 で発生します。 これは、2 種類を追加したことを意味し、2008 年 1 月 3 日 9 時に午前 1:30 の中部標準時に 30 分の間隔は 2008 \(3 年 12 月 9 日の午前 5:00 の日時を生成します。 ただし、次の例に示すように、追加の結果が 2008 \(3 年 12 月 9 日の午前 4:00 です。 この時刻は目的のタイム ゾーンの時刻ではありませんが \(予期したタイム ゾーン オフセットではありませんが\)、演算の結果は正しい時刻を表していることに留意してください。 + + [!code-csharp[System.DateTimeOffset.Conceptual#4](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/cs/Conceptual4.cs#4)] + [!code-vb[System.DateTimeOffset.Conceptual#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/vb/Conceptual4.vb#4)] + +## タイム ゾーンの時刻を使用した算術演算 + クラスには、タイム ゾーン間で時刻を変換するときに自動的に調整を適用する変換メソッドが数多く含まれています。 次に例を示します。 + +- メソッドと メソッド。任意の 2 つのタイム ゾーン間で時刻を変換します。 + +- メソッドと メソッド。特定のタイム ゾーンの時刻から UTC、または UTC から特定のタイム ゾーンの時刻に変換します。 + + 詳細については、「[タイム ゾーン間での時刻の変換](../../../docs/standard/datetime/converting-between-time-zones.md)」を参照してください。 + + クラスでは、日付と時刻の算術演算を実行するとき、調整規則を自動的に適用するメソッドは提供されません。 ただし、タイム ゾーンの時刻を UTC 時刻に変換し、算術演算を実行して、UTC 時刻からタイム ゾーンの時刻に戻すことで、この処理を実行できます。 詳細については、「[方法 : 日付と時刻の演算でタイム ゾーンを使用する](../../../docs/standard/datetime/use-time-zones-in-arithmetic.md)」を参照してください。 + + たとえば、次のコードでは、2008 年 1 月 3 日 9 時追加した前のコードと似ています。に午前 2:00 に 2.5 時間かかります。 ここでは、日付と時刻の算術演算を実行して UTC 時刻から中部標準時に結果を変換する前に、中部標準時が UTC 時刻に変換されるため、結果の時刻には中部標準時ゾーンの夏時間への移行が反映されます。 + + [!code-csharp[System.DateTimeOffset.Conceptual#5](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/cs/Conceptual5.cs#5)] + [!code-vb[System.DateTimeOffset.Conceptual#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/vb/Conceptual5.vb#5)] + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [方法 : 日付と時刻の演算でタイム ゾーンを使用する](../../../docs/standard/datetime/use-time-zones-in-arithmetic.md) \ No newline at end of file diff --git a/docs/standard/datetime/resolve-ambiguous-times.md b/docs/standard/datetime/resolve-ambiguous-times.md index 6ac11b41d70..c5e6898640d 100644 --- a/docs/standard/datetime/resolve-ambiguous-times.md +++ b/docs/standard/datetime/resolve-ambiguous-times.md @@ -1,86 +1,60 @@ --- -title: "方法: あいまいな時刻を解決する" -description: "あいまいな時刻を解決する方法" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/16/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: e86050c6-d16d-405e-8bba-7205945c9a81 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: f4ab3b4bf3487e70be7e885e9b8a2281927eb30e -ms.lasthandoff: 03/02/2017 - ---- - -# 方法: あいまいな時刻を解決する - -あいまいな時刻とは、複数の世界協定時刻 (UTC) にマップされる時刻です。 これは、あるタイム ゾーンの夏時間から標準時間に移行する際など、時計の時刻を前に戻すときに発生します。 あいまいな時刻を処理する場合は、次のいずれかの操作を行います。 - -* 時刻が UTC にどのようにマップされるかを想定します。 たとえば、あいまいな時刻は常にタイム ゾーンの標準時刻で表されると想定できます。 - -* あいまいな時刻が、ユーザーによって入力されたデータ項目である場合は、あいまいさの解決をユーザーに任せることができます。 - -この記事では、タイム ゾーンの標準時刻を表すと想定して、あいまいな時刻を解決する方法を示します。 - -## あいまいな時刻をタイム ゾーンの標準時刻にマップするには - -1. [System.TimeZoneInfo.IsAmbiguousTime(DateTime)](xref:System.TimeZoneInfo.IsAmbiguousTime(System.DateTime)) または [System.TimeZoneInfo.IsAmbiguousTime(DateTimeOffset)](xref:System.TimeZoneInfo.IsAmbiguousTime(System.DateTimeOffset)) メソッドを呼び出して、時刻があいまいかどうかを判断します。 - -2. 時刻があいまいな場合は、タイム ゾーンの [BaseUtcOffset](xref:System.TimeZoneInfo.BaseUtcOffset) プロパティによって返される [TimeSpan](xref:System.TimeSpan) オブジェクトから時刻を減算します。 - -3. `static` (Visual Basic では `Shared`) [SpecifyKind](xref:System.DateTime.SpecifyKind(System.DateTime,System.DateTimeKind)) メソッドを呼び出して、UTC の日付と時刻の値の [Kind](xref:System.DateTime.Kind) プロパティを [DateTimeKind.Utc](xref:System.DateTimeKind.Utc) に設定します。 - -## 例 - -次の例では、あいまいな時刻がローカル タイム ゾーンの標準時刻を表すと想定して、あいまいな [DateTime](xref:System.DateTime) を UTC に変換する方法を示しています。 - -```csharp -private DateTime ResolveAmbiguousTime(DateTime ambiguousTime) -{ - // Time is not ambiguous - if (! TimeZoneInfo.Local.IsAmbiguousTime(ambiguousTime)) - { - return ambiguousTime; - } - // Time is ambiguous - else - { - DateTime utcTime = DateTime.SpecifyKind(ambiguousTime - TimeZoneInfo.Local.BaseUtcOffset, - DateTimeKind.Utc); - Console.WriteLine("{0} local time corresponds to {1} {2}.", - ambiguousTime, utcTime, utcTime.Kind.ToString()); - return utcTime; - } -} -``` - -```vb -Private Function ResolveAmbiguousTime(ambiguousTime As Date) As Date - ' Time is not ambiguous - If Not TimeZoneInfo.Local.IsAmbiguousTime(ambiguousTime) Then - Return TimeZoneInfo.ConvertTimeToUtc(ambiguousTime) - ' Time is ambiguous - Else - Dim utcTime As Date = DateTime.SpecifyKind(ambiguousTime - TimeZoneInfo.Local.BaseUtcOffset, DateTimeKind.Utc) - Console.WriteLine("{0} local time corresponds to {1} {2}.", ambiguousTime, utcTime, utcTime.Kind.ToString()) - Return utcTime - End If -End Function -``` - -この例は、渡された [DateTime](xref:System.DateTime) 値があいまいかどうかを判定する `ResolveAmbiguousTime` という名前のメソッドで構成されます。 値があいまいな場合、メソッドは対応する UTC 時刻を表す [DateTime](xref:System.DateTime) 値を返します。 このメソッドは、ローカル タイム ゾーンの [BaseUtcOffset](xref:System.TimeZoneInfo.BaseUtcOffset) プロパティの値をローカル時刻から減算して、この変換を行います。 - -通常、あいまいな時刻の処理では、[GetAmbiguousTimeOffsets](xref:System.TimeZoneInfo.GetAmbiguousTimeOffsets(System.DateTime)) メソッドを呼び出し、あいまいな時刻に対して考えられる UTC オフセットが格納されている [TimeSpan](xref:System.TimeSpan) オブジェクトの配列を取得します。 しかし、この例は、あいまいな時刻は常にタイム ゾーンの標準時刻にマップされるという想定に基づいています。 [BaseUtcOffset](xref:System.TimeZoneInfo.BaseUtcOffset) プロパティは、UTC とタイム ゾーンの標準時刻の間のオフセットを返します。 - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) - -[方法: ユーザーがあいまいな時刻を解決できるようにする](let-users-resolve-ambiguous-times.md) - - +title: "方法 : あいまいな時刻を解決する | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "あいまいな時刻 [.NET Framework]" + - "タイム ゾーン [.NET Framework], あいまいな時刻" +ms.assetid: 2cf5fb25-492c-4875-9245-98cac8348e97 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法 : あいまいな時刻を解決する +あいまいな時刻とは、複数の世界協定時刻 \(UTC: Coordinated Universal Time\) に対応する時刻です。 このようなことは、あるタイム ゾーンで夏時間から標準時間に移行する際など、クロック時刻を元に戻すときに発生します。 あいまいな時刻は、次のいずれかの方法で対処できます。 + +- UTC に対する時刻の対応方法を想定します。 たとえば、あいまいな時刻は常にタイム ゾーンの標準時刻を表す、などと想定できます。 + +- あいまいな時刻がユーザーによって入力されたデータの項目である場合は、あいまいさの解決をユーザーに任せることができます。 + + このトピックでは、タイム ゾーンの標準時刻を表すと想定することであいまいな時刻を解決する方法を示します。 + +### あいまいな時刻をタイム ゾーンの標準時刻に対応させるには + +1. メソッドを呼び出して、時刻があいまいかどうかを判定します。 + +2. 時刻があいまいな場合は、タイム ゾーンの プロパティによって返される オブジェクトから時刻を減算します。 + +3. `static` \(Visual Basic .NET では `Shared`\) メソッドを呼び出して、UTC の日時値の プロパティに を設定します。 + +## 使用例 + 次の例では、あいまいな時刻がローカル タイム ゾーンの標準時刻を表すと想定することで、あいまいな時刻を UTC に変換する方法を示します。 + + [!code-csharp[System.TimeZone2.Concepts#10](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Concepts/CS/TimeZone2Concepts.cs#10)] + [!code-vb[System.TimeZone2.Concepts#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Concepts/VB/TimeZone2Concepts.vb#10)] + + この例は、渡された 値があいまいかどうかを判定する `ResolveAmbiguousTime` という名前のメソッドで構成されます。 値があいまいな場合、メソッドは対応する UTC 時刻を表す 値を返します。 メソッドは、ローカル タイム ゾーンの プロパティの値をローカル時刻から減算することで、この変換を行います。 + + 通常、あいまいな時刻は、 メソッドを呼び出し、あいまいな時刻に対して可能性のある UTC オフセットが格納されている オブジェクトの配列を取得することで処理します。 しかし、この例では、あいまいな時刻は常にタイム ゾーンの標準時刻に対応する、と断定的に想定しています。 プロパティは、UTC とタイム ゾーンの標準時刻の間のオフセットを返します。 + + この例では、ローカル タイム ゾーンに対するすべての参照は、 プロパティを通して行います。ローカル タイム ゾーンをオブジェクト変数に割り当てることはしません。 メソッドを呼び出すと、ローカル タイム ゾーンが割り当てられているオブジェクトは無効になるので、これが推奨される方法です。 + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Core.dll への参照をプロジェクトに追加する。 + +- 名前空間を `using` ステートメントでインポートする \(C\# のコードで必要\)。 + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [方法 : ユーザーがあいまいな時刻を解決できるようにする](../../../docs/standard/datetime/let-users-resolve-ambiguous-times.md) \ No newline at end of file diff --git a/docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md b/docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md new file mode 100644 index 00000000000..87a75036bb2 --- /dev/null +++ b/docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md @@ -0,0 +1,62 @@ +--- +title: "方法 : 埋め込みリソースからタイム ゾーンを復元する | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "タイム ゾーン [.NET Framework], 逆シリアル化" + - "タイム ゾーン [.NET Framework], 復元" +ms.assetid: 6b7b4de9-da07-47e3-8f4c-823f81798ee7 +caps.latest.revision: 6 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 6 +--- +# 方法 : 埋め込みリソースからタイム ゾーンを復元する +このトピックでは、リソース ファイルに保存されているタイム ゾーンを復元する方法について説明します。 タイム ゾーンの保存に関する詳細と方法については、「[方法 : 埋め込みリソースにタイム ゾーンを保存する](../../../docs/standard/datetime/save-time-zones-to-an-embedded-resource.md)」を参照してください。 + +### 埋め込みリソースから TimeZoneInfo オブジェクトを逆シリアル化するには + +1. 取得するタイム ゾーンがカスタム タイム ゾーンではない場合は、 メソッドを使用してインスタンス化を試みます。 + +2. 埋め込みリソース ファイルの完全修飾名およびリソース ファイルを含むアセンブリへの参照を渡して、 オブジェクトをインスタンス化します。 + + 埋め込みリソース ファイルの完全修飾名がわからない場合は、[Ildasm.exe \(IL 逆アセンブラー\)](../../../docs/framework/tools/ildasm-exe-il-disassembler.md) を使用してアセンブリのマニフェストを調べます。 `.mresource` エントリがリソースを示しています。 この例では、リソースの完全修飾名は `SerializeTimeZoneData.SerializedTimeZones` です。 + + リソース ファイルが、タイム ゾーンのインスタンス化コードと同じアセンブリに埋め込まれている場合は、`static` \(Visual Basic では `Shared`\) メソッドを呼び出すことで、リソース ファイルへの参照を取得できます。 + +3. メソッドの呼び出しが失敗する場合、またはカスタム タイム ゾーンをインスタンス化する場合は、 メソッドを呼び出して、シリアル化されたタイム ゾーンを含む文字列を取得します。 + +4. メソッドを呼び出して、タイム ゾーン データを逆シリアル化します。 + +## 使用例 + 次の例では、埋め込み .NET XML リソース ファイルに格納されている オブジェクトを逆シリアル化します。 + + [!code-csharp[TimeZone2.Serialization#3](../../../samples/snippets/csharp/VS_Snippets_CLR/TimeZone2.Serialization/cs/SerializeTimeZoneData.cs#3)] + [!code-vb[TimeZone2.Serialization#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/TimeZone2.Serialization/vb/SerializeTimeZoneData.vb#3)] + + このコードは、アプリケーションで必要な オブジェクトが存在することを確認するための例外処理を示しています。 最初に、 メソッドを使用してレジストリから取得する方法で、 オブジェクトのインスタンス化を試みます。 タイム ゾーンをインスタンス化できない場合は、埋め込みリソース ファイルから取得します。 + + カスタム タイム ゾーン \( メソッドを使用してインスタンス化されるタイム ゾーン\) のデータはレジストリに格納されていないので、Palmer, Antarctica のタイム ゾーンをインスタンス化するときは を呼び出しません。 代わりに、 メソッドを呼び出す前に、埋め込みリソース ファイルを直接調べてタイム ゾーンのデータを含む文字列を取得します。 + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Windows.Forms.dll および System.Core.dll への参照をプロジェクトに追加する。 + +- 次の名前空間をインポートする。 + + [!code-csharp[TimeZone2.Serialization#2](../../../samples/snippets/csharp/VS_Snippets_CLR/TimeZone2.Serialization/cs/SerializeTimeZoneData.cs#2)] + [!code-vb[TimeZone2.Serialization#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/TimeZone2.Serialization/vb/SerializeTimeZoneData.vb#2)] + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [タイム ゾーンの概要](../../../docs/standard/datetime/time-zone-overview.md) + [方法 : 埋め込みリソースにタイム ゾーンを保存する](../../../docs/standard/datetime/save-time-zones-to-an-embedded-resource.md) \ No newline at end of file diff --git a/docs/standard/datetime/save-time-zones-to-an-embedded-resource.md b/docs/standard/datetime/save-time-zones-to-an-embedded-resource.md new file mode 100644 index 00000000000..276de988998 --- /dev/null +++ b/docs/standard/datetime/save-time-zones-to-an-embedded-resource.md @@ -0,0 +1,87 @@ +--- +title: "方法 : 埋め込みリソースにタイム ゾーンを保存する | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "タイム ゾーン オブジェクト [.NET Framework], 保存" + - "タイム ゾーン オブジェクト [.NET Framework], シリアル化" + - "タイム ゾーン [.NET Framework], 保存" +ms.assetid: 3c96d83a-a057-4496-abb0-8f4b12712558 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : 埋め込みリソースにタイム ゾーンを保存する +タイム ゾーンに対応したアプリケーションでは、多くの場合、特定のタイム ゾーンが存在する必要があります。 しかし、個別の オブジェクトを使用できるかどうかはローカル システムのレジストリに格納されている情報に依存するので、通常は使用できるタイム ゾーンであっても存在しない場合があります。 さらに、 メソッドを使用することでインスタンス化されるカスタム タイム ゾーンについての情報は、他のタイム ゾーン情報とは異なりレジストリに格納されません。 このようなタイム ゾーンを必要なときに確実に使用できるようにするには、タイム ゾーンをシリアル化して保存し、必要になったら逆シリアル化して復元します。 + + 通常、 オブジェクトのシリアル化は、タイム ゾーンに対応するアプリケーションとは関係なく行われます。 シリアル化された オブジェクトの保持に使用するデータ ストアによっては、セットアップ ルーチンまたはインストール ルーチンの一部として \(たとえば、データがレジストリのアプリケーション キーに格納されるとき\)、または最終的なアプリケーションがコンパイルされる前に実行するユーティリティ ルーチンの一部として \(たとえば、シリアル化されたデータが .NET XML リソース \(.resx\) ファイルに格納されるとき\)、タイム ゾーンのデータをシリアル化できます。 + + アプリケーションと共にコンパイルされるリソース ファイル以外に、複数のデータ ストアをタイム ゾーン情報に使用できます。 次に例を示します。 + +- レジストリ。 アプリケーションでは、HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones というサブキーを使用するのではなく、アプリケーション自体のキーのサブキーを使用してカスタム タイム ゾーン データを格納する必要があります。 + +- 構成ファイル。 + +- その他のシステム ファイル。 + +### .resx ファイルにシリアル化してタイム ゾーンを保存するには + +1. 既存のタイム ゾーンを取得するか、新しいタイム ゾーンを作成します。 + + 既存のタイム ゾーンを取得する方法については、「[方法 : 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする](../../../docs/standard/datetime/access-utc-and-local.md)」および「[方法 : TimeZoneInfo オブジェクトをインスタンス化する](../../../docs/standard/datetime/instantiate-time-zone-info.md)」を参照してください。 + + 新しいタイム ゾーンを作成するには、 メソッドのオーバーロードの 1 つを呼び出します。 詳細については、「[方法 : 調整規則のないタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-without-adjustment-rules.md)」および「[方法 : 調整規則のあるタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-with-adjustment-rules.md)」を参照してください。 + +2. メソッドを呼び出して、タイム ゾーンのデータを含む文字列を作成します。 + +3. .resx ファイルの名前、および必要に応じてファイルへのパスを クラスのコンストラクターに渡して、 オブジェクトをインスタンス化します。 + +4. オブジェクトを クラスのコンストラクターに渡して、 オブジェクトをインスタンス化します。 + +5. タイム ゾーンのシリアル化された文字列を、 メソッドに渡します。 + +6. メソッドを呼び出します。 + +7. メソッドを呼び出します。 + +8. メソッドを呼び出して、 オブジェクトを閉じます。 + +9. 生成された .resx ファイルを、アプリケーションの Visual Studio プロジェクトに追加します。 + +10. Visual Studio の **\[プロパティ\]** ウィンドウを使用して、.resx ファイルの **\[ビルド アクション\]** プロパティが **\[埋め込まれたリソース\]** に設定されていることを確認します。 + +## 使用例 + 次の例では、中部標準時を表す オブジェクトと、Palmer Station, Antarctica 時刻を表す オブジェクトを、SerializedTimeZones.resx という名前の .NET XML リソース ファイルにシリアル化します。 普通、中部標準時はレジストリで定義されています。Palmer Station, Antarctica はカスタム タイム ゾーンです。 + + [!code-csharp[TimeZone2.Serialization#1](../../../samples/snippets/csharp/VS_Snippets_CLR/TimeZone2.Serialization/cs/SerializeTimeZoneData.cs#1)] + [!code-vb[TimeZone2.Serialization#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/TimeZone2.Serialization/vb/SerializeTimeZoneData.vb#1)] + + この例では、コンパイル時にリソース ファイルで使用できるように オブジェクトをシリアル化します。 + + メソッドは完全なヘッダー情報を .NET XML リソース ファイルに追加するので、既存のファイルにリソースを追加するためには使用できません。 この例では、SerializedTimeZones.resx ファイルを検査することでこのことに対処しています。ファイルが存在する場合は、シリアル化した 2 つのタイム ゾーン以外のすべてのリソースを、汎用の オブジェクトに格納します。 その後、既存のファイルを削除し、既存のリソースを新しい SerializedTimeZones.resx ファイルに追加します。 シリアル化したタイム ゾーンのデータも、このファイルに追加します。 + + リソースのキー \(つまり **\[名前\]**\) フィールドでは、空白を含む文字列は指定できません。 タイム ゾーン識別子をリソース ファイルに割り当てる前に、 メソッドを呼び出して識別子に含まれるすべての空白を除去します。 + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Windows.Forms.dll および System.Core.dll への参照をプロジェクトに追加する。 + +- 次の名前空間をインポートする。 + + [!code-csharp[TimeZone2.Serialization#2](../../../samples/snippets/csharp/VS_Snippets_CLR/TimeZone2.Serialization/cs/SerializeTimeZoneData.cs#2)] + [!code-vb[TimeZone2.Serialization#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/TimeZone2.Serialization/vb/SerializeTimeZoneData.vb#2)] + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [タイム ゾーンの概要](../../../docs/standard/datetime/time-zone-overview.md) + [方法 : 埋め込みリソースからタイム ゾーンを復元する](../../../docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md) \ No newline at end of file diff --git a/docs/standard/datetime/saving-and-restoring-time-zones.md b/docs/standard/datetime/saving-and-restoring-time-zones.md new file mode 100644 index 00000000000..d56c175e08e --- /dev/null +++ b/docs/standard/datetime/saving-and-restoring-time-zones.md @@ -0,0 +1,73 @@ +--- +title: "タイム ゾーンの保存と復元 | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "逆シリアル化 [.NET Framework], タイム ゾーン" + - "復元 (タイム ゾーンを)" + - "保存 (タイム ゾーンを)" + - "シリアル化 [.NET Framework], タイム ゾーン" + - "タイム ゾーン オブジェクト [.NET Framework], 逆シリアル化" + - "タイム ゾーン オブジェクト [.NET Framework], 復元" + - "タイム ゾーン オブジェクト [.NET Framework], 保存" + - "タイム ゾーン オブジェクト [.NET Framework], シリアル化" + - "タイム ゾーン [.NET Framework], 復元" + - "タイム ゾーン [.NET Framework], 保存" +ms.assetid: 4028b310-e7ce-49d4-a646-1e83bfaf6f9d +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# タイム ゾーンの保存と復元 + クラスは、レジストリを利用して、定義されているタイム ゾーン データを取得します。 ただし、レジストリは動的な構造です。 さらに、レジストリに格納されているタイム ゾーンの情報は、主として、現在の年の時刻の調整と変換を行うためにオペレーティング システムによって使用されます。 このため、正確なタイム ゾーン データに依存するアプリケーションには 2 つの大きな影響があります。 + +- アプリケーションが必要とするタイム ゾーンが、レジストリで定義されていない、レジストリで名前が変更されている、またはレジストリから削除されている可能性があります。 + +- レジストリで定義されているタイム ゾーンに、過去のタイム ゾーンの変換に必要な特定の調整ルールに関する情報が含まれない可能性があります。 + + クラスは、これらの制約に対処するため、タイム ゾーン データのシリアル化 \(保存\) と逆シリアル化 \(復元\) をサポートします。 + +## タイム ゾーンのシリアル化と逆シリアル化 + タイム ゾーン データのシリアル化と逆シリアル化によるタイム ゾーンの保存と復元に関係するメソッド呼び出しは 2 つだけです。 + +- オブジェクトをシリアル化するには、オブジェクトの メソッドを呼び出します。 このメソッドはパラメーターを受け取らず、タイム ゾーン情報が格納された文字列を返します。 + +- シリアル化された文字列から オブジェクトを逆シリアル化するには、その文字列を `static` \(Visual Basic では `Shared`\) メソッドに渡します。 + +## シリアル化と逆シリアル化のシナリオ + オブジェクトを文字列に保存 \(シリアル化\) し、後で使用するときに復元 \(逆シリアル化\) できると、 クラスの実用性と柔軟性が向上します。 このセクションでは、シリアル化と逆シリアル化が最も役に立ついくつかの状況を調べます。 + +### アプリケーションでのタイム ゾーン データのシリアル化と逆シリアル化 + シリアル化されたタイム ゾーンは、必要に応じて文字列から復元できます。 レジストリから取得したタイム ゾーンが特定の日付範囲内の日時を正しく変換できない場合は、アプリケーションでこれを行うことがあります。 たとえば、Windows XP のレジストリのタイム ゾーン データは単一の調整規則をサポートしますが、Windows Vista のレジストリで定義されているタイム ゾーンは通常 2 つの調整規則についての情報を提供します。 つまり、過去の時刻変換が正しく行われない可能性があります。 タイム ゾーン データのシリアル化と逆シリアル化により、このような制約に対処できます。 + + 次の例では、米国の中部標準時ゾーンが導入される前に 1883 ~ 1917 年まで米国東部標準時タイム ゾーンを表すように、調整規則のない のカスタム クラスを定義します。 このカスタム タイム ゾーンを、グローバル スコープを持つ変数にシリアル化します。 タイム ゾーン変換メソッド `ConvertUtcTime` に世界協定時刻 \(UTC\) を渡して変換します。 1917 年以前の日時の場合は、カスタム東部標準時ゾーンがシリアル化された文字列から復元されて、レジストリから取得されたタイム ゾーンの代わりに使用されます。 + + [!code-csharp[System.TimeZone2.Serialization.1#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Serialization.1/cs/Serialization.cs#1)] + [!code-vb[System.TimeZone2.Serialization.1#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Serialization.1/vb/Serialization.vb#1)] + +### タイム ゾーンの例外の処理 + レジストリは動的な構造なので、その内容は偶然に、または意図的に変更される可能性があります。 タイム ゾーンはレジストリで定義されている必要があり、アプリケーションの正常な実行に必要ですが、つまり、これが存在しなくなる可能性があります。 タイム ゾーンのシリアル化と逆シリアル化がサポートされていないと、 が発生した場合は、アプリケーションを終了してこれを処理するしか方法がありません。 一方、タイム ゾーンのシリアル化と逆シリアル化を使用すると、予期しない が発生しても、シリアル化された文字列から必要なタイム ゾーンを復元することで対処でき、アプリケーションは実行を継続できます。 + + 次の例では、カスタムの中部標準時ゾーンを作成してシリアル化します。 その後、レジストリから中部標準時ゾーンの取得を試みます。 取得操作で または がスローされる場合は、例外ハンドラーがタイム ゾーンを逆シリアル化します。 + + [!code-csharp[System.TimeZone2.Serialization.2#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.TimeZone2.Serialization.2/cs/Serialization2.cs#1)] + [!code-vb[System.TimeZone2.Serialization.2#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.TimeZone2.Serialization.2/vb/Serialization2.vb#1)] + +### シリアル化した文字列の格納と必要時の復元 + 前の例では、タイム ゾーン情報を文字列変数に格納し、必要ときはこれを復元しました。 ただし、シリアル化されたタイム ゾーン情報を格納している文字列自体は、外部ファイル、アプリケーションに埋め込まれたリソース ファイル、レジストリなどストレージ メディアに格納できます \(カスタム タイム ゾーンに関する情報は、レジストリではシステムのタイム ゾーン キーとは別に格納する必要があります\)。 + + シリアル化されたタイム ゾーン文字列をこの方法で格納すると、タイム ゾーン作成ルーチンもアプリケーション自体とは別になります。 たとえば、タイム ゾーン作成ルーチンは、アプリケーションが使用できる過去のタイム ゾーンの履歴情報を格納するデータ ファイルを実行および作成できます。 データ ファイルは、アプリケーションと共にインストールできます。また、アプリケーションでタイム ゾーンが必要になったときは、データ ファイルを開き、格納されている 1 つ以上のタイム ゾーンを逆シリアル化できます。 + + 埋め込みリソースを使用してシリアル化されたタイム ゾーン データを格納する例については、「[方法 : 埋め込みリソースにタイム ゾーンを保存する](../../../docs/standard/datetime/save-time-zones-to-an-embedded-resource.md)」および「[方法 : 埋め込みリソースからタイム ゾーンを復元する](../../../docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md)」を参照してください。 + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) \ No newline at end of file diff --git a/docs/standard/datetime/time-zone-overview.md b/docs/standard/datetime/time-zone-overview.md index bb8d5c0a6d3..9fd513da5f5 100644 --- a/docs/standard/datetime/time-zone-overview.md +++ b/docs/standard/datetime/time-zone-overview.md @@ -1,63 +1,77 @@ --- -title: "タイム ゾーンの概要" -description: "タイム ゾーンの概要" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/16/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: e3a10f62-d403-4441-8621-adc964e32c07 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: 200d502d12750a28d2a54058f53b4bbef78973c7 -ms.lasthandoff: 03/02/2017 - ---- - -# タイム ゾーンの概要 - -[System.TimeZoneInfo](xref:System.TimeZoneInfo) クラスを使用すると、タイム ゾーン対応アプリケーションを簡単に作成できます。 [TimeZoneInfo](xref:System.TimeZoneInfo) クラスは、ローカル タイム ゾーンと世界協定時刻 (UTC) での使用をサポートしています。また、レジストリに事前に定義されている情報については、任意のタイム ゾーンを使用できます。 [TimeZoneInfo](xref:System.TimeZoneInfo) を使用して、システムに情報がないカスタムのタイム ゾーンを定義することもできます。 - -## タイム ゾーンの基本 - -タイム ゾーンは、同じ時刻が使用されている地域です。 常にではありませんが、通常、隣接するタイム ゾーンは&1; 時間違いです。 世界のタイム ゾーンの時刻は、世界協定時刻 (UTC) からのオフセットとして表されます。 - -世界のタイム ゾーンの多くは、夏時間をサポートしています。 夏時間では、春や初夏には時刻を&1; 時間進め、晩夏や秋には通常 (または標準) の時間に戻すことで、日中の時間を最大化しようと試みます。 こうした標準時間前後の変更は、調整規則と呼ばれます。 - -特定のタイム ゾーンの夏時間前後の移行は、固定調整規則または浮動調整規則で定義できます。 固定調整規則では、毎年、夏時間前後の移行が行われる特定の日付を設定します。 たとえば、毎年 10 月 25 日に行われる夏時間から標準時間への移行は、固定調整規則に従います。 浮動調整規則の方がはるかに一般的です。浮動調整規則では、夏時間への移行、または夏時間からの移行について特定の月の特定の週の特定の曜日が設定されます。 たとえば、3 月の第&3; 日曜日に行われる標準時間から夏時間への移行は、浮動調整規則に従います。 - -調整規則をサポートするタイム ゾーンの場合、夏時間前後の移行によって、2 つの変則的な時刻が生じます。無効な時刻とあいまいな時刻です。 無効な時刻は、標準時間から夏時間への移行で生じる存在しない時刻です。 たとえば、移行が特定の日付の午前 2:00 に行われ、 時刻が午前 3:00 に変更される場合、午前 2:00 から 午前 2:59:99 までの時刻は 無効です。 あいまいな時刻は、1 つのタイム ゾーンで&2; つの時刻にマップできる時刻です。 あいまいな時刻は夏時間から標準時間への移行で生じます。 たとえば、移行が特定の日付の午前 2:00 に行われ、 時刻が午前 1:00 に変更される場合、午前 1:00 から 午前 1:59:99 までの時刻は 標準時間または夏時間のいずれにでも解釈できます。 - -## タイム ゾーンの用語 - -次の表は、タイム ゾーンを使用し、タイム ゾーン対応アプリケーションを開発するときに一般的に使用される用語の定義一覧です。 - -用語 | 定義 ----- | ---------- -調整規則 | 標準時間から夏時間へ、および夏時間から標準時間への移行が行われるタイミングを定義した規則。 各調整規則には、規則を適用する期間を定義する開始日と終了日 (たとえば、1986 年 1 月 1 日から 2020 年 12 月 31 日に調整規則が適用されます)、差分 (調整規則を適用した結果として標準時間が変更される時間)、調整期間中に移行が行われる特定の日付と時刻に関する情報が含まれています。 移行は、固定規則または浮動規則に従う可能性があります。 -あいまいな時刻 | 1 つのタイム ゾーンで&2; つの時刻にマップできる時刻です。 あいまいな時刻は、あるタイム ゾーンの夏時間から標準時間に移行する際など、時計の時刻を前に戻すときに発生します。 たとえば、移行が特定の日付の午前 2:00 に行われ、 時刻が午前 1:00 に変更される場合、午前 1:00 から 午前 1:59:99 までの時刻は 標準時間または夏時間のいずれにでも解釈できます。 -固定規則 | 夏時間前後の移行について特定の日付を設定する調整規則。 たとえば、毎年 10 月 25 日に行われる夏時間から標準時間への移行は、固定調整規則に従います。 -浮動規則 | 浮動調整規則の方がはるかに一般的です。浮動調整規則では、夏時間への移行、または夏時間からの移行について特定の月の特定の週の特定の曜日が設定されます。 たとえば、3 月の第&3; 日曜日に行われる標準時間から夏時間への移行は、浮動調整規則に従います。 -無効な時刻 | 標準時間から夏時間への移行中に生じる存在しない時刻。 無効な時刻は、あるタイム ゾーンの標準時間から夏時間に移行する際など、時計の時刻を前に進めるときに発生します。 たとえば、移行が特定の日付の午前 2:00 に行われ、 時刻が午前 3:00 に変更される場合、午前 2:00 から 午前 2:59:99 までの時刻は 無効です。 -移行時間 | 特定のタイム ゾーンで実施される夏時間と標準時間の切り替えなど、特定の時間切り替えに関する情報。 - -## タイム ゾーンと TimeZoneInfo クラス - -.NET の [System.TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトは、オペレーティング システムで提供されている情報に基づいて、タイム ゾーンを表します。 オペレーティング システム上の [TimeZoneInfo](xref:System.TimeZoneInfo) クラスの依存関係は、タイム ゾーン対応アプリケーションが、すべてのオペレーティング システムで特定のタイム ゾーンが定義されていることを特定できないことを示します。 そのため、(ローカルのタイム ゾーンまたは UTC を示すタイム ゾーン以外の) 特定のタイム ゾーンをインスタンス化する場合、例外処理を使用する必要があります。 また、必要な [TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトをインスタンス化できない場合でもアプリケーションを続行できる何らかの方法も用意する必要があります。 - -各タイム ゾーンは、UTC からのベース オフセットと、既存の調整規則を反映した UTC からのオフセットによって表されるため、あるタイム ゾーンの時刻は、簡単に別のタイム ゾーンの時間に変換できます。 この目的で、[TimeZoneInfo](xref:System.TimeZoneInfo) オブジェクトには、次のようにいくつかの変換メソッドが含まれています。 - -* [ConvertTime(DateTime, TimeZoneInfo)](xref:System.TimeZoneInfo.ConvertTime(System.DateTime,System.TimeZoneInfo))。[System.DateTime](xref:System.DateTime) を特定のタイム ゾーンの時間に変換します。 - -* [ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo)](xref:System.TimeZoneInfo.ConvertTime(System.DateTime,System.TimeZoneInfo,System.TimeZoneInfo))。[DateTime](xref:System.DateTime) をあるタイム ゾーンから別のタイム ゾーンに変換します。 - -* [ConvertTime(DateTimeOffset, TimeZoneInfo)](xref:System.TimeZoneInfo.ConvertTime(System.DateTimeOffset,System.TimeZoneInfo))。[System.DateTimeOffset](xref:System.DateTimeOffset) を特定のタイム ゾーンの時間に変換します。 - -タイム ゾーン間の時間を変換する方法の詳細については、「[タイム ゾーン間での時刻の変換](converting-between-time-zones.md)」を参照してください。 - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) +title: "タイム ゾーンの概要 | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "調整規則 [.NET Framework]" + - "あいまいな時刻 [.NET Framework]" + - "夏時間 [.NET Framework]" + - "固定規則 [.NET Framework]" + - "浮動規則 [.NET Framework]" + - "無効な時刻 [.NET Framework]" + - "タイム ゾーン [.NET Framework], タイム ゾーンの概要" + - "タイム ゾーン [.NET Framework], 作成" + - "タイム ゾーン [.NET Framework], 用語" + - "TimeZoneInfo クラス, TimeZoneInfo クラスの概要" + - "切り替え時刻 [.NET Framework]" +ms.assetid: c4b7ed01-5e38-4959-a3b6-ef9765d6ccf1 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# タイム ゾーンの概要 + クラスを使用すると、タイム ゾーンに対応したアプリケーションを簡単に作成できます。 クラスは、ローカル タイム ゾーンと世界協定時刻 \(UTC: Coordinated Universal Time\) の処理をサポートします。 クラスは、これら両方のゾーンに加えて、レジストリで情報が定義されている任意のタイム ゾーンもサポートします。 また、 を使用すると、システムに情報のないカスタム タイム ゾーンを定義することもできます。 + +## タイム ゾーンの基本事項 + タイム ゾーンとは、同じ時間を使用する地理的な領域です。 必ずではありませんが、一般には、隣接するタイム ゾーンの時間差は 1 時間です。 世界のすべてのタイム ゾーンの時刻は、UTC からのオフセットとして表すことができます。 + + 世界のタイム ゾーンの多くは、夏時間をサポートしています。 夏時間とは、日中の時間を最大にするために、春または初夏に時刻を 1 時間進めて、晩夏または秋に通常の \(標準の\) 時刻に戻すことです。 標準時刻に対するこのような変更は、調整規則と呼ばれます。 + + 特定のタイム ゾーンにおける夏時間の開始および終了時の切り替えは、固定調整規則または浮動調整規則のいずれかで定義できます。 固定調整規則では、夏時間への切り替えや夏時間からの切り替えを毎年同じ日に行います。 たとえば、夏時間から標準時間への切り替えを毎年 10 月 25 日に行うのは、固定調整規則です。 これよりも一般的なのが浮動調整規則で、特定の月の特定の週の特定の曜日に、夏時間への切り替えや夏時間からの切り替えを行います。 たとえば、標準時間から夏時間への切り替えを、3 月の第 3 日曜日に行うのは、浮動調整規則です。 + + 調整規則をサポートするタイム ゾーンでは、標準時間と夏時間の切り替えの際に、2 種類の異常な時刻、つまり無効な時刻とあいまいな時刻が発生します。 無効な時刻とは、標準時間から夏時間への切り替えによって発生する、存在しない時刻です。 たとえば、この遷移が発生し、日 2:00 で発生し、午前 3:00 の通常の間隔と午前 2:00 間の 2:59 に変更する時間の場合: 99 の場合は無効です。 あいまいな時刻とは、1 つのタイム ゾーン内の 2 つの異なる時刻に対応する可能性のある時刻です。 このような時刻は、夏時間から標準時間への切り替えによって発生します。 たとえば、この遷移が発生し、日 2:00 で発生し、午前 1:00 の通常の間隔と午前 1:00 間の 1:59 に変更する時間の場合: 99 の場合、標準時か夏時間数として解釈できます。 + +## タイム ゾーンの用語 + 次の表では、タイム ゾーンを使用するとき、およびタイム ゾーンに対応するアプリケーションを開発するときによく使用される用語を定義します。 + +|語句|定義| +|--------|--------| +|調整規則|標準時間から夏時間への切り替え、および夏時間から標準時間への切り替えをいつ行うかを定義する規則。 各調整規則には、規則の適用期間を定義する開始日と終了日 \(たとえば、1986 年 1 月 1 日から 2006 年 12 月 31 日まで適用される調整規則\)、デルタ \(調整規則を適用した結果として標準時間から変化する時間数\)、および調整の期間中に切り替えを行う特定の日時に関する情報が含まれます。 切り替えは、固定規則または浮動規則に従って行うことができます。| +|あいまいな時刻|1 つのタイム ゾーン内の 2 つの異なる時刻に対応する可能性のある時刻。 このようなことは、あるタイム ゾーンで夏時間から標準時間に移行する際など、クロック時刻を元に戻すときに発生します。 たとえば、この遷移が発生し、日 2:00 で発生し、午前 1:00 の通常の間隔と午前 1:00 間の 1:59 に変更する時間の場合: 99 の場合、標準時か夏時間数として解釈できます。| +|固定規則|夏時間への切り替えまたは夏時間からの切り替えを特定の日付に設定する調整規則。 たとえば、夏時間から標準時間への切り替えを毎年 10 月 25 日に行うのは、固定調整規則です。| +|可変規則|夏時間への切り替えまたは夏時間からの切り替えを、特定の月の特定の週の特定の曜日に設定する調整規則。 たとえば、標準時間から夏時間への切り替えを、3 月の第 3 日曜日に行うのは、浮動調整規則です。| +|無効な時刻|標準時間から夏時間への切り替えによって発生する、存在しない時刻。 このようなことは、あるタイム ゾーンで標準時間から夏時間に移行する際など、クロック時刻を先に進めるときに発生します。 たとえば、この遷移が発生し、日 2:00 で発生し、午前 3:00 の通常の間隔と午前 2:00 間の 2:59 に変更する時間の場合: 99 の場合は無効です。| +|切り替え時間|特定のタイム ゾーンで実施される夏時間と標準時間との間の切り替えなど、特定の時間切り替えに関する情報。| + +## タイム ゾーンと TimeZoneInfo クラス + .NET Framework では、 オブジェクトがタイム ゾーンを表します。 クラスに含まれる メソッドは、 オブジェクトの配列を返します。 この配列の各要素は、特定の期間における夏時間の切り替えに関する情報を提供します \(夏時間をサポートしないタイム ゾーンの場合、メソッドは空の配列を返します\)。各 オブジェクトには プロパティと プロパティがあり、夏時間への切り替えおよび夏時間からの切り替えを行う特定の日時を定義します。 プロパティは、切り替えが固定か浮動かを示します。 + + .NET Framework は、Windows オペレーティング システムによって提供されてレジストリに格納されているタイム ゾーン情報に依存します。 地球には多くのタイム ゾーンがあるため、既存の全タイム ゾーンをレジストリで表すことはできません。 さらに、レジストリは動的な構造なので、定義されているタイム ゾーンが追加または削除される場合があります。 そして、レジストリにタイム ゾーンの履歴データが残されているとは限りません。 たとえば、Windows XP では、レジストリには 1 セットのタイム ゾーン調整に関するデータしか格納されません。 Windows Vista では、動的なタイム ゾーン データがサポートされています。つまり、1 つのタイム ゾーンに複数の調整規則を保持することができ、それぞれの規則は特定の年範囲に適用されます。 ただし、Windows Vista のレジストリで定義されていて、夏時間をサポートするほとんどのタイム ゾーンには、1 つまたは 2 つの調整規則しか定義されていません。 + + クラスがレジストリに依存するということは、タイム ゾーンに対応するアプリケーションにとって、特定のタイム ゾーンがレジストリで定義されているかどうかは不確定であることを意味します。 したがって、特定のタイム ゾーン \(ローカル タイム ゾーンまたは UTC を表すタイム ゾーンを除く\) をインスタンス化しようとする場合は、例外処理を行う必要があります。 また、必要な オブジェクトをレジストリからインスタンス化できない場合でも、アプリケーションが動作を続けられるようにするなんらかの手段を用意する必要があります。 + + 必要なタイム ゾーンがない状況に対応できるように、 クラスには メソッドが含まれており、レジストリで見つからないカスタム タイム ゾーンを作成するために使用できます。 カスタム タイム ゾーンの作成の詳細については、「[方法 : 調整規則のないタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-without-adjustment-rules.md)」および「[方法 : 調整規則のあるタイム ゾーンを作成する](../../../docs/standard/datetime/create-time-zones-with-adjustment-rules.md)」を参照してください。 さらに、 メソッドを使用すると、新しく作成したタイム ゾーンを文字列に変換し、データ ストア \(データベース、テキスト ファイル、レジストリ、アプリケーション リソースなど\) に保存できます。 その後で メソッドを使用して、この文字列を オブジェクトに変換して戻すことができます。 詳細については、「[方法 : 埋め込みリソースにタイム ゾーンを保存する](../../../docs/standard/datetime/save-time-zones-to-an-embedded-resource.md)」および「[方法 : 埋め込みリソースからタイム ゾーンを復元する](../../../docs/standard/datetime/restore-time-zones-from-an-embedded-resource.md)」を参照してください。 + + 各タイム ゾーンは、UTC からのベース オフセットおよび既存の調整規則を反映する UTC からのオフセットによって表されるので、あるタイム ゾーンの時刻は、他のタイム ゾーンの時刻に簡単に変換できます。 この目的のため、 オブジェクトには次のような変換メソッドが含まれます。 + +- は、指定したタイム ゾーンの時刻に UTC を変換します。 + +- は、指定したタイム ゾーンの時刻を UTC に変換します。 + +- は、指定したあるタイム ゾーンの時刻を、指定した別のタイム ゾーンの時刻に変換します。 + +- は、パラメーターとして \( オブジェクトではなく\) タイム ゾーン ID を使用し、指定したあるタイム ゾーンの時刻を、指定した別のタイム ゾーンの時刻に変換します。 + + タイム ゾーン間での時刻の変換の詳細については、「[タイム ゾーン間での時刻の変換](../../../docs/standard/datetime/converting-between-time-zones.md)」を参照してください。 + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) \ No newline at end of file diff --git a/docs/standard/datetime/use-time-zones-in-arithmetic.md b/docs/standard/datetime/use-time-zones-in-arithmetic.md index e4f52b38866..50768f36d17 100644 --- a/docs/standard/datetime/use-time-zones-in-arithmetic.md +++ b/docs/standard/datetime/use-time-zones-in-arithmetic.md @@ -1,174 +1,67 @@ --- -title: "方法 : 日付と時刻の演算でタイム ゾーンを使用する" -description: "方法 : 日付と時刻の演算でタイム ゾーンを使用する" -keywords: .NET, .NET Core -author: stevehoag -ms.author: shoag -ms.date: 08/16/2016 -ms.topic: article -ms.prod: .net -ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 26870cdc-1709-4978-831b-ff2a2f24856f -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: a86471972d42adcbc412cc8eeb300410ca8a9c42 -ms.lasthandoff: 03/02/2017 - ---- - -# 方法 : 日付と時刻の演算でタイム ゾーンを使用する - -通常、[System.DateTimeOffset](xref:System.DateTimeOffset) の値を使用して日付と時刻の演算を実行するときに、結果にはタイム ゾーンの調整規則が反映されません。 これは、日時の値のタイム ゾーンを明確に識別できる場合でも同じです。 この記事では、特定のタイム ゾーンに属する日時の値の算術演算を実行する方法について説明します。 算術演算の結果には、タイム ゾーンの調整規則が反映されます。 - -## 日付と時刻の演算に調整規則を適用するには - -1. なんらかの方法を実装して、日付と時刻の値と、その値が属するタイム ゾーンを密接に結び付けます。 たとえば、日付と時刻の値とそのタイム ゾーンの両方を含む構造体を宣言します。 次の例では、この方法を使用して [DateTimeOffset](xref:System.DateTimeOffset) の値とそのタイム ゾーンをリンクします。 - - ```csharp - // Define a structure for DateTime values for internal use only - internal struct TimeWithTimeZone - { - TimeZoneInfo TimeZone; - DateTimeOffset Time; - } - ``` - - ```vb - ' Define a structure for DateTime values for internal use only - Friend Structure TimeWithTimeZone - Dim TimeZone As TimeZoneInfo - Dim Time As Date - End Structure - ``` - -2. [TimeZoneInfo.ConvertTime(DateTime, TimeZoneInfo)](xref:System.TimeZoneInfo.ConvertTime(System.DateTime,System.TimeZoneInfo)) メソッドを呼び出して、時刻を世界協定時刻 (UTC) に変換します。 - -3. UTC 時刻で算術演算を実行します。 - -4. [TimeZoneInfo.ConvertTime(DateTime, TimeZoneInfo)](xref:System.TimeZoneInfo.ConvertTime(System.DateTime,System.TimeZoneInfo)) メソッドを呼び出して、時刻を UTC から元の時刻に関連付けられているタイム ゾーンに変換します。 - -## 例 - -次の例では、中部標準時の 2008 年 3 月 9 日午前 1 時 30 分に、2 時間 30 分を 加えます。 夏時間へのタイム ゾーンの切り替えは、30 分後の 2008 年 3 月 9 日午前 2 時に 発生します。 この例は前に示した 4 つの手順に従うため、結果は正しい時刻である 2008 年 3 月 9 日午前 5 時に なります。 - -```csharp -using System; - -public struct TimeZoneTime -{ - public TimeZoneInfo TimeZone; - public DateTimeOffset Time; - - public TimeZoneTime(TimeZoneInfo tz, DateTimeOffset time) - { - if (tz == null) - throw new ArgumentNullException("The time zone cannot be a null reference."); - - this.TimeZone = tz; - this.Time = time; - } - - public TimeZoneTime AddTime(TimeSpan interval) - { - // Convert time to UTC - DateTimeOffset utcTime = TimeZoneInfo.ConvertTime(this.Time, TimeZoneInfo.Utc); - // Add time interval to time - utcTime = utcTime.Add(interval); - // Convert time back to time in time zone - return new TimeZoneTime(this.TimeZone, TimeZoneInfo.ConvertTime(utcTime, this.TimeZone)); - } -} - -public class TimeArithmetic -{ - public const string tzName = "Central Standard Time"; - - public static void Main() - { - try - { - TimeZoneTime cstTime1, cstTime2; - - TimeZoneInfo cst = TimeZoneInfo.FindSystemTimeZoneById(tzName); - DateTime time1 = new DateTime(2008, 3, 9, 1, 30, 0); - TimeSpan twoAndAHalfHours = new TimeSpan(2, 30, 0); - - cstTime1 = new TimeZoneTime(cst, - new DateTimeOffset(time1, cst.GetUtcOffset(time1))); - cstTime2 = cstTime1.AddTime(twoAndAHalfHours); - Console.WriteLine("{0} + {1} hours = {2}", cstTime1.Time, - twoAndAHalfHours.ToString(), - cstTime2.Time); - } - catch - { - Console.WriteLine("Unable to find {0}.", tzName); - } - } -} -``` - -```vb -Public Structure TimeZoneTime - Public TimeZone As TimeZoneInfo - Public Time As Date - - Public Sub New(tz As TimeZoneInfo, time As Date) - If tz Is Nothing Then _ - Throw New ArgumentNullException("The time zone cannot be a null reference.") - - Me.TimeZone = tz - Me.Time = time - End Sub - - Public Function AddTime(interval As TimeSpan) As TimeZoneTime - ' Convert time to UTC - Dim utcTime As DateTime = TimeZoneInfo.ConvertTimeToUtc(Me.Time, _ - Me.TimeZone) - ' Add time interval to time - utcTime = utcTime.Add(interval) - ' Convert time back to time in time zone - Return New TimeZoneTime(Me.TimeZone, TimeZoneInfo.ConvertTime(utcTime, _ - TimeZoneInfo.Utc, Me.TimeZone)) - End Function -End Structure - -Module TimeArithmetic - Public Const tzName As String = "Central Standard Time" - - Public Sub Main() - Try - Dim cstTime1, cstTime2 As TimeZoneTime - - Dim cst As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(tzName) - Dim time1 As Date = #03/09/2008 1:30AM# - Dim twoAndAHalfHours As New TimeSpan(2, 30, 0) - - cstTime1 = New TimeZoneTime(cst, time1) - cstTime2 = cstTime1.AddTime(twoAndAHalfHours) - - Console.WriteLine("{0} + {1} hours = {2}", cstTime1.Time, _ - twoAndAHalfHours.ToString(), _ - cstTime2.Time) - Catch - Console.WriteLine("Unable to find {0}.", tzName) - End Try - End Sub -End Module -``` - -最初に UTC に変換せず、単に [DateTimeOffset](xref:System.DateTimeOffset) 値に対してこの加算を実行すると、結果には正しい時刻が反映されますが、その時刻に対して指定されたタイム ゾーンのオフセットは反映されません。 - -[DateTimeOffset](xref:System.DateTimeOffset) 値は、属している可能性のあるどのタイム ゾーンとも関連付けられていません。 タイム ゾーンの調整規則が自動的に適用されるような方法で日付と時刻の演算を実行するには、日付と時刻の値の属するタイム ゾーンがすぐに識別できる状態でなければなりません。 つまり、日時と関連付けられているタイム ゾーンを密に結合する必要があります。 これは、次のようないくつかの方法で行うことができます。 - -* アプリケーションで使用されるすべての時刻が、特定のタイム ゾーンに属するものと仮定します。 この方法は、適切な場合もありますが、柔軟性が限られ、移植性が制限される可能性もあります。 - -* 日時と関連付けられているタイム ゾーンを型のフィールドとして組み込むことで、両者を密に結合する型を定義します。 コード例ではこの方法を使用して、日時とタイム ゾーンを&2; つのメンバー フィールドに格納する構造体を定義しています。 - -## 関連項目 - -[日付、時刻およびタイム ゾーン](index.md) - -[日付と時刻を使用した算術演算の実行](performing-arithmetic-operations.md) - +title: "方法 : 日付と時刻の演算でタイム ゾーンを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "04/10/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "算術演算 [.NET Framework], 日付と時刻" + - "日付 [.NET Framework], 加算と減算" + - "タイム ゾーン [.NET Framework], 算術演算" +ms.assetid: 83dd898d-1338-415d-8cd6-445377ab7871 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法 : 日付と時刻の演算でタイム ゾーンを使用する +通常、 値または 値を使用して日付と時刻の演算を実行するとき、その結果にはタイム ゾーン調整規則は反映されません。 これは、日時の値のタイム ゾーンを明確に識別できる場合 \( プロパティが に設定されている場合など\) でも同じです。 このトピックでは、特定のタイム ゾーンに属する日時の値の算術演算を実行する方法について説明します。 算術演算の結果には、タイム ゾーンの調整規則が反映されます。 + +### 日付と時刻の演算に調整規則を適用するには + +1. なんらかの方法を実装して、日時の値と、その値が属するタイム ゾーンを密接に結び付ます。 たとえば、日時の値とそのタイム ゾーンの両方を含む構造体を宣言します。 次の例では、この方法を使用して 値とそのタイム ゾーンをリンクします。 + + [!code-csharp[System.DateTimeOffset.Conceptual#6](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/cs/Conceptual6.cs#6)] + [!code-vb[System.DateTimeOffset.Conceptual#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/vb/Conceptual6.vb#6)] + +2. メソッドまたは メソッドを呼び出して、時刻を世界協定時刻 \(UTC: Coordinated Universal Time\) に変換します。 + +3. UTC 時刻で算術演算を実行します。 + +4. メソッドを呼び出して、UTC の時刻から、元の時刻に関連付けられたタイム ゾーンの時刻に変換します。 + +## 使用例 + 次の例では、中部標準時の 2008 年 3 月 9 日午前 1 時 30 分に、2 時間 30 分を加えます。 夏時間 30 分にタイム ゾーンの移行が 2008 \(3 年 12 月 9 日の午前 2:00 に、後で発生します。 例では、前のセクションに記載されている手順に従って 4 から 2008 年 1 月 3 日 9 時に午前 5:00 と、結果は正しい時刻を報告します。 + + [!code-csharp[System.DateTimeOffset.Conceptual#8](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/cs/Conceptual8.cs#8)] + [!code-vb[System.DateTimeOffset.Conceptual#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/vb/Conceptual8.vb#8)] + + 値と 値はどちらも、どのタイム ゾーンとも関連付けられていません。 タイム ゾーンの調整規則が自動的に適用されるような方法で日付と時刻の演算を実行するには、日時の値の属するタイム ゾーンがすぐに識別できる状態であることが必要です。 つまり、日時とそのタイム ゾーンを密に結合する必要があります。 そのためには、次に示すようにいくつかの方法があります。 + +- アプリケーションで使用されるすべての時刻が、特定のタイム ゾーンに属するものと仮定します。 この方法は、適切な場合もありますが、柔軟性が限られ、移植性が制限される可能性もあります。 + +- 日時とそのタイム ゾーンを型のフィールドとして組み込むことで、両者を密に結合する型を定義します。 このコード例では、この方法を使用して、日時とタイム ゾーンを 2 つのメンバー フィールドに格納する構造体を定義しています。 + + この例は、タイム ゾーンの調整規則が結果に適用されるように 値の算術演算を実行する方法を示しています。 ただし、 値も同じように簡単に使用できます。 次の例では、 値の代わりに を使用するように、元の例のコードを適合させる方法を示します。 + + [!code-csharp[System.DateTimeOffset.Conceptual#7](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/cs/Conceptual6.cs#7)] + [!code-vb[System.DateTimeOffset.Conceptual#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.DateTimeOffset.Conceptual/vb/Conceptual6.vb#7)] + + 最初に UTC に変換せず、単純に 値に対してこの加算を実行すると、結果には正しい時刻が反映されますが、その時刻に対して指定されたタイム ゾーンのオフセットは反映されません。 + +## コードのコンパイル + この例には、次の項目が必要です。 + +- System.Core.dll への参照をプロジェクトに追加する。 + +- 名前空間を `using` ステートメントでインポートする \(C\# のコードで必要\)。 + +## 参照 + [日付、時刻、およびタイム ゾーン](../../../docs/standard/datetime/index.md) + [日付と時刻を使用した算術演算の実行](../../../docs/standard/datetime/performing-arithmetic-operations.md) \ No newline at end of file diff --git a/docs/standard/datetime/working-with-calendars.md b/docs/standard/datetime/working-with-calendars.md new file mode 100644 index 00000000000..62ffbf16bc0 --- /dev/null +++ b/docs/standard/datetime/working-with-calendars.md @@ -0,0 +1,185 @@ +--- +title: "カレンダーの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "予定表, グローバル アプリケーション" + - "カルチャ, 予定表" + - "グローバル アプリケーション, 予定表" + - "グローバリゼーション [.NET Framework], 予定表" + - "国際対応のアプリケーション [.NET Framework], 予定表" + - "国際対応アプリケーション, 予定表" +ms.assetid: 0c1534e5-979b-4c8a-a588-1c24301aefb3 +caps.latest.revision: 21 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 21 +--- +# カレンダーの使用 +日時の値は特定の時点を表しますが、その文字列形式はカルチャに依存し、特定のカルチャで日時の値の表示に使用される規則と、そのカルチャで使用される暦の両方に応じて決まります。 このトピックでは、.NET Framework でサポートされる暦を紹介し、Calendar クラスを使用した日付の値の操作について説明します。 + +## .NET Framework の暦 + .NET Framework の暦はすべて、基本の暦の実装を提供する クラスから派生します。 クラスを継承するクラスの 1 つに クラスがあります。これは、すべての太陰太陽暦の基本クラスです。 .NET Framework には、次の暦の実装が含まれています。 + +- 。中国の太陰太陽暦を表します。 + +- 。グレゴリオ暦を表します。 この暦は、 列挙体で定義されるサブタイプ \(アラビア語や中東フランス語など\) にさらに分けられます。 プロパティは、グレゴリオ暦のサブタイプを指定します。 + +- 。ヘブライ暦を表します。 + +- 。回教暦を表します。 + +- 。和暦を表します。 + +- 。日本の太陰太陽暦を表します。 + +- 。ユリウス暦を表します。 + +- 。韓国暦を表します。 + +- 。韓国の太陰太陽暦を表します。 + +- 。ペルシャ暦を表します。 + +- 。台湾暦を表します。 + +- 。台湾の太陰太陽暦を表します。 + +- 。タイ仏暦を表します。 + +- 。ウムアルクラ暦を表します。 + + 暦は、次の 2 とおりの方法で使用できます。 + +- 特定のカルチャで使用される暦として使用する。 オブジェクトにはそれぞれ、現在の暦 \(オブジェクトで現在使用している暦\) があります。 あらゆる日付と時刻の値の文字列形式には、現在のカルチャとその現在の暦が自動的に反映されます。 通常、現在の暦は、カルチャの既定の暦になります。 オブジェクトには、それ以外に、オプションの暦 \(そのカルチャで使用できるその他の暦\) も含まれています。 + +- 特定のカルチャに依存しないスタンドアロンの暦として使用する。 この場合、暦が反映された値として日付を表すには、 のメソッドを使用します。 + + 、および の 6 つの Calendar クラスは、スタンドアロンの暦としてのみ使用できます。 これらは、どのカルチャでも、既定の暦またはオプションの暦としては使用されません。 + +## 暦とカルチャ + 各カルチャには既定の暦があり、 プロパティで定義されます。 プロパティは、特定のカルチャでサポートされるすべての暦を指定する オブジェクトの配列を返します。これには、そのカルチャの既定の暦も含まれます。 + + プロパティと プロパティの例を次に示します。 この例では、タイ語 \(タイ\) と日本語 \(日本\) のカルチャの `CultureInfo` オブジェクトをそれぞれ作成し、それらの既定の暦とオプションの暦を表示します。 どちらについても、カルチャの既定の暦は コレクションにも含まれます。 + + [!code-csharp[Conceptual.Calendars#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/calendarinfo1.cs#1)] + [!code-vb[Conceptual.Calendars#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/calendarinfo1.vb#1)] + + 特定の オブジェクトで現在使用されている暦は、カルチャの プロパティで定義されます。 カルチャの オブジェクトは、 プロパティから返されます。 カルチャの作成時の既定値は プロパティの値と同じですが、 カルチャの現在の暦は、 プロパティから返される配列に含まれる任意の暦に変更することができます。 現在の暦を プロパティの値に含まれない暦に設定しようとすると、 がスローされます。 + + アラビア語 \(サウジアラビア\) のカルチャで使用する暦を変更する例を次に示します。 まず、 値をインスタンス化し、現在のカルチャ \(この例では英語 \(米国\)\) と現在のカルチャの暦 \(この例ではグレゴリオ暦\) を使用して日付を表示します。 次に、現在のカルチャをアラビア語 \(サウジアラビア\) に変更し、そのカルチャの既定のウムアルクラ暦を使用して日付を表示します。 さらに、`CalendarExists` メソッドを呼び出して、アラビア語 \(サウジアラビア\) のカルチャで回教暦がサポートされているかどうかを判別します。 この暦はサポートされているため、現在の暦を回教暦に変更し、日付をもう一度表示します。 いずれの場合も、日付は、現在のカルチャの現在の暦を使用して表示されます。 + + [!code-csharp[Conceptual.Calendars#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/changecalendar2.cs#2)] + [!code-vb[Conceptual.Calendars#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/changecalendar2.vb#2)] + +## 日付と暦 + 型のパラメーターを含み、指定した暦の値を日付の要素 \(月、日、および年\) に反映できるコンストラクターは例外として、 の値は、どちらも常にグレゴリオ暦に基づきます。 つまり、たとえば プロパティはグレゴリオ暦の年を返し、 プロパティはグレゴリオ暦の月の日付を返します。 + +> [!IMPORTANT] +> 日付の値とその文字列形式で処理が異なることに注意してください。 日付の値はグレゴリオ暦に基づき、文字列形式は特定のカルチャの現在の暦に基づきます。 + + 次の例は、 のプロパティと、それに対応する のメソッドの違いを示しています。 この例では、現在のカルチャはアラビア語 \(エジプト\)、現在の暦はウムアルクラ暦です。 値は、2011 年の 7 番目の月の 15 番目の日に設定されています。 この値は、明らかにグレゴリオ暦の日付と解釈されます。 メソッドでインバリアント カルチャの規則を使用した場合に、これらと同じ値が返されるためです。 現在のカルチャの規則を使用して書式指定された日付の文字列形式は 14\/08\/32 です。これは、この日付に相当するウムアルクラ暦の日付です。 次に、`DateTime` と `Calendar` のメンバーを使用して、 値の日、月、および年が返されます。 いずれの場合も、 のメンバーから返される値にはグレゴリオ暦の値が反映され、 のメンバーから返される値にはウムアルクラ暦の値が反映されます。 + + [!code-csharp[Conceptual.Calendars#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/datesandcalendars2.cs#3)] + [!code-vb[Conceptual.Calendars#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/datesandcalendars2.vb#3)] + +### 暦に基づく日付のインスタンス化 + の値はグレゴリオ暦に基づくため、別の暦の日、月、または年の値を使用する場合は、 型のパラメーターを含むオーバーロードされたコンストラクターを呼び出して日付の値をインスタンス化する必要があります。 また、特定の暦の メソッドのいずれかのオーバーロードを呼び出して、特定の暦の値に基づいて オブジェクトをインスタンス化することもできます。 + + 次の例では、 オブジェクトを コンストラクターに渡して 1 つの 値をインスタンス化し、 メソッドを呼び出してもう 1 つの 値をインスタンス化しています。 2 つの値はヘブライ暦の同一の値を使用して作成されるため、 メソッドを呼び出すと、2 つの 値が等しいことが示されます。 + + [!code-csharp[Conceptual.Calendars#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/instantiatehcdate1.cs#4)] + [!code-vb[Conceptual.Calendars#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/instantiatehcdate1.vb#4)] + +### 現在の暦での日付の表現 + 日時書式指定メソッドでは、日付を文字列に変換する際に、常に現在の暦を使用します。 つまり、年、月、および日の文字列形式には現在の暦が反映され、必ずしもグレゴリオ暦が反映されるとは限りません。 + + 次の例は、現在の暦が日付の文字列形式にどのように影響するかを示しています。 この例では、現在のカルチャを中国語 \(繁体字、台湾\) に変更し、日付の値をインスタンス化します。 その後、現在の暦と日付を表示し、現在の暦を に変更して、現在の暦と日付をもう一度表示します。 最初に日付を表示したときは、日付がグレゴリオ暦の日付として表され、 2 回目に表示したときは、台湾暦の日付として表されます。 + + [!code-csharp[Conceptual.Calendars#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/currentcalendar1.cs#5)] + [!code-vb[Conceptual.Calendars#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/currentcalendar1.vb#5)] + +### 現在の暦以外での日付の表現 + 特定のカルチャの現在の暦以外の暦を使用して日付を表すには、その オブジェクトのメソッドを呼び出す必要があります。 たとえば、、および の各メソッドは、それぞれ年、月、および日を、特定の暦を反映した値に変換します。 + +> [!WARNING] +> 一部の暦はどのカルチャのオプションの暦にもなっていないため、そのような暦で日付を表す場合は、常に Calendar のメソッドを呼び出す必要があります。 これは、 クラス、 クラス、および クラスから派生したすべての暦に当てはまります。 + + 次の例では、 オブジェクトを使用して、ユリウス暦の 1905 年 1 月 9 日という日付をインスタンス化します。 この日付を既定の暦 \(グレゴリオ暦\) を使用して表示した場合は、1905 年 1 月 22 日と表されます。 の各メソッドを呼び出すことで、この日付をユリウス暦で表すことができます。 + + [!code-csharp[Conceptual.Calendars#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/noncurrentcalendar1.cs#6)] + [!code-vb[Conceptual.Calendars#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/noncurrentcalendar1.vb#6)] + +### 暦と日付範囲 + 暦でサポートされている最も古い日付は、暦の プロパティによって示されます。 クラスでは、その日付は西暦 0001 年 1 月 1 日 です。.NET Framework の他のほとんどのカレンダーでは、それより後の日付がサポートされています。 暦でサポートされている最も古い日付より前の日付と時刻の値を処理しようとすると、 例外がスローされます。 + + ただし、重要な例外が 1 つあります。 オブジェクトと オブジェクトの既定の \(初期化されていない\) 値は、 値と同じです。 西暦 0001 年 1 月 1 日をサポートしていない暦でこの日付を書式設定しようとすると、書式指定子を指定しない場合、書式設定メソッドは "G" \(一般の日付と時刻のパターン\) 書式指定子でなく、"s" \(並べ替え可能な日付と時刻のパターン\) 書式指定子を使用します。 その結果、書式設定操作は 例外をスローしません。 代わりに、サポートされていない日付を返します。 この問題を、次の例で説明します。この例は、現在のカルチャが日本語 \(日本\) に設定されていれば和暦で、アラビア語 \(エジプト\) に設定されていればウムアルクラ暦で、 の値を表示します。 また、現在のカルチャを英語 \(米国\) に設定し、これらの各 オブジェクトで メソッドを呼び出します。 どの場合も、並べ替え可能な日付と時刻のパターンを使用して、日付が表示されます。 + + [!code-csharp[Conceptual.Calendars#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/minsupporteddatetime1.cs#11)] + [!code-vb[Conceptual.Calendars#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/minsupporteddatetime1.vb#11)] + +## 時代 \(年号\) の使用 + 暦では通常、日付が時代 \(年号\) に分けられます。 ただし、.NET Framework の クラスでは、暦で定義されるすべての時代 \(年号\) がサポートされているわけではなく、ほとんどの クラスでは 1 つの時代 \(年号\) しかサポートされていません。 複数の時代 \(年号\) をサポートしているのは、 クラスと クラスだけです。 + +### 時代 \(年号\) とその名前 + .NET Framework では、特定の暦の実装でサポートされる時代 \(年号\) を表す整数が、 配列に逆順で格納されています。 現在の時代 \(年号\) のインデックスは 0 で、複数の時代 \(年号\) をサポートする クラスの場合は、後に続く各インデックスが前の時代 \(年号\) に対応します。 配列における現在の時代 \(年号\) のインデックスは、静的な プロパティで定義されます。これは定数であり、値は常に 0 になります。 個々の クラスには、現在の時代 \(年号\) の値を返す静的フィールドも含まれています。 これらを次の表に示します。 + +|Calendar クラス|現在の時代 \(年号\) のフィールド| +|------------------|-------------------------| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| +||| + + 特定の時代 \(年号\) を表す数値に対応する名前は、その数値を メソッドまたは メソッドに渡すことで取得できます。 次の例では、これらのメソッドを呼び出して、 クラスでサポートされる時代 \(年号\) に関する情報を取得しています。 + + [!code-csharp[Conceptual.Calendars#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/instantiatewithera1.cs#7)] + [!code-vb[Conceptual.Calendars#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/instantiatewithera1.vb#7)] + + また、"g" カスタム日時書式指定文字列では、日付と時刻の文字列形式に暦の時代 \(年号\) の名前が含まれます。 詳細については、「[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)」を参照してください。 + +### 時代 \(年号\) を含む日付のインスタンス化 + 複数の時代 \(年号\) をサポートする 2 つの クラスでは、特定の年、月、および日の値で構成される日付があいまいになることがあります。たとえば、 では、4 つのすべての時代 \(年号\) に数値が 1 ~ 15 になる年があります。 通常、時代 \(年号\) が指定されていない場合は、日時および暦のどちらのメソッドでも、値が現在の時代 \(年号\) に属すると見なされます。 複数の時代 \(年号\) をサポートする クラスの日付をインスタンス化するときに時代 \(年号\) を明示的に指定するには、 メソッドを呼び出します。 このメソッドを使用すると、時代 \(年号\) を、暦の年、月、日、時、分、秒、およびミリ秒と共に明示的に指定できます。 + + 次の例では、 メソッドを使用して、 クラスでサポートされるそれぞれの時代 \(年号\) の同じ日付 \(2 番目の年の最初の月の最初の日\) をインスタンス化しています。 その後、和暦とグレゴリオ暦の両方で日付を表示しています。 また、この例では コンストラクターも呼び出して、時代 \(年号\) を指定せずに日付の値を作成した場合は現在の時代 \(年号\) の日付が作成されることを示しています。 + + [!code-csharp[Conceptual.Calendars#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/instantiatewithera1.cs#7)] + [!code-vb[Conceptual.Calendars#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/instantiatewithera1.vb#7)] + +### 時代 \(年号\) を含む暦の日付の表現 + オブジェクトの現在の暦が、時代 \(年号\) をサポートする オブジェクトである場合は、完全な日付と時刻、長い日付、および短い日付の各パターンにおいて、日付と時刻の値の文字列形式に時代 \(年号\) が含まれます。 それらの日付パターンを表示する例を次に示します。現在のカルチャは日本 \(日本語\)、現在の暦は和暦です。 + + [!code-csharp[Conceptual.Calendars#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/formatstrings1.cs#8)] + [!code-vb[Conceptual.Calendars#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/formatstrings1.vb#8)] + +> [!WARNING] +> .NET Framework の Calendar クラスの中で、複数の時代 \(年号\) の日付をサポートし、かつ オブジェクトの現在の暦にもできるクラスは、 クラスだけです。このクラスは、具体的には、日本語 \(日本\) のカルチャを表す オブジェクトの現在の暦にすることができます。 + + どの暦の場合も、"g" カスタム書式指定子の結果の文字列には時代 \(年号\) が含まれます。 次の例では、"MM\-dd\-yyyy g" というカスタム書式指定文字列を使用して、結果の文字列に時代 \(年号\) を含めています。現在の暦はグレゴリオ暦です。 + + [!code-csharp[Conceptual.Calendars#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/formatstrings2.cs#9)] + [!code-vb[Conceptual.Calendars#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/formatstrings2.vb#9)] + + 日付の文字列形式を現在の暦以外の暦で表す場合は、 クラスの メソッドを 、および の各メソッドと一緒に使用して、日付とそれが属する時代 \(年号\) を明確に示すことができます。 クラスを使用した具体的な例を次に示します。 ただし、時代 \(年号\) を表す整数ではなく、名前または省略形を結果の文字列に含めるには、 オブジェクトをインスタンス化し、その現在の暦を にする必要があります \( 暦をカルチャの現在の暦にすることはできませんが、この場合は 2 つの暦で同じ時代 \(年号\) が共有されます\)。 + + [!code-csharp[Conceptual.Calendars#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.calendars/cs/formatstrings3.cs#10)] + [!code-vb[Conceptual.Calendars#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.calendars/vb/formatstrings3.vb#10)] + +## 参照 + [方法 : グレゴリオ暦以外の暦の日付を表示する](../../../docs/standard/base-types/how-to-display-dates-in-non-gregorian-calendars.md) + [サンプル: 暦の週の範囲のユーティリティ](http://code.msdn.microsoft.com/NET-Framework-4-Calendar-3360a84a) \ No newline at end of file diff --git a/docs/standard/design-guidelines/TOC.md b/docs/standard/design-guidelines/TOC.md new file mode 100644 index 00000000000..9e2fc984d62 --- /dev/null +++ b/docs/standard/design-guidelines/TOC.md @@ -0,0 +1,49 @@ +# [名前付けのガイドライン](naming-guidelines.md) +# [クラスまたは構造体の選択](choosing-between-class-and-struct.md) +# [一般的な設計パターン](common-design-patterns.md) +# [属性](属性.md) +# [アセンブリと Dll の名前](names-of-assemblies-and-dlls.md) +# [列挙型デザイン](enum.md) +# [静的クラスのデザイン](static-class.md) +# [一般的な名前付け規則](general-naming-conventions.md) +# [抽象クラスのデザイン](abstract-class.md) +# [封印](sealing.md) +# [パラメーターの名前を付ける](naming-parameters.md) +# [シリアル化](シリアル化.md) +# [等値演算子](equality-operators.md) +# [例外のデザイン ガイドライン](exceptions.md) +# [コンス トラクターのデザイン](constructor.md) +# [型のメンバーの名前](names-of-type-members.md) +# [標準の例外の型を使用します。](using-standard-exception-types.md) +# [プロテクト メンバー](protected-members.md) +# [名前空間の名前](names-of-namespaces.md) +# [インターフェイスのデザイン](interface.md) +# [封印されていないクラス](unsealed-classes.md) +# [メンバーのオーバー ロード](member-overloading.md) +# [仮想メンバー](virtual-members.md) +# [リソースの名前付け](naming-resources.md) +# [クラス、構造体、およびインターフェイスの名前](names-of-classes-structs-and-interfaces.md) +# [System.Xml の使用法](system-xml-usage.md) +# [フィールドのデザイン](field.md) +# [型デザインのガイドライン](type.md) +# [イベントのデザイン](event.md) +# [配列](arrays.md) +# [Framework デザイン ガイドライン](index.md) +# [拡張メソッド](extension-methods.md) +# [例外のスロー](exception-throwing.md) +# [大文字と小文字の表記規則](capitalization-conventions.md) +# [イベントとコールバック](events-and-callbacks.md) +# [使用方法のガイドライン](usage-guidelines.md) +# [パラメーターのデザイン](parameter-design.md) +# [例外とパフォーマンス](exceptions-and-performance.md) +# [抽象化を実装するための基本クラス](base-classes-for-implementing-abstractions.md) +# [演算子のオーバー ロード](operator-overloads.md) +# [Dispose パターン](dispose-pattern.md) +# [コレクション](guidelines-for-collections.md) +# [依存関係プロパティ](dependency-properties.md) +# [構造体のデザイン](struct.md) +# [機能拡張のデザイン](designing-for-extensibility.md) +# [入れ子にされた型](nested-types.md) +# [プロパティのデザイン](property.md) +# [メンバー デザインのガイドライン](member.md) +# [抽象化 (抽象型とインターフェイス)](abstractions-abstract-types-and-interfaces.md) diff --git a/docs/standard/design-guidelines/abstract-class.md b/docs/standard/design-guidelines/abstract-class.md new file mode 100644 index 00000000000..bf84af1e88c --- /dev/null +++ b/docs/standard/design-guidelines/abstract-class.md @@ -0,0 +1,52 @@ +--- +title: "抽象クラスのデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "デザインのガイドラインを入力、抽象クラス" + - "抽象クラスのデザイン ガイドライン" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] クラス" + - "抽象クラス [.NET Framework]" + - "クラス [.NET Framework] のデザイン ガイドライン" + - "クラス型の設計ガイドライン" +ms.assetid: d3646e6d-5c1f-4922-8fb0-ec5effb30d60 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 抽象クラスのデザイン +**X のしないで** 抽象型のパブリックまたはプロテクトの内部コンス トラクターを定義します。 + + コンス トラクターは、ユーザーが型のインスタンスを作成する必要がある場合にのみ、パブリックにする必要があります。 抽象型のインスタンスを作成することはできませんのでパブリック コンス トラクターを持つ抽象型が正しくされていないに設計され、ユーザーに誤解を招きやすい。 + + **✓ は** 抽象クラス内で、保護されているか、内部コンス トラクターを定義します。 + + プロテクト コンス トラクターはより一般的なでき、単にサブタイプが作成されるときは、自己の初期化を実行する基本クラスです。 + + クラスを定義するアセンブリを抽象クラスの具象実装を制限するため、内部コンス トラクターを使用できます。 + + **✓ は** を出荷するそれぞれの抽象クラスから継承する少なくとも 1 つの具象型を提供します。 + + これにより、抽象クラスの設計を検証します。 たとえば、 の実装には、 抽象クラスです。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [型デザインのガイドライン](../../../docs/standard/design-guidelines/type.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/abstractions-abstract-types-and-interfaces.md b/docs/standard/design-guidelines/abstractions-abstract-types-and-interfaces.md new file mode 100644 index 00000000000..e63969d109a --- /dev/null +++ b/docs/standard/design-guidelines/abstractions-abstract-types-and-interfaces.md @@ -0,0 +1,52 @@ +--- +title: "抽象化 (抽象型とインターフェイス) | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "抽象インターフェイス [.NET Framework]" + - "抽象インターフェイス [.NET Framework]" + - "抽象型 [.NET Framework]" + - "抽象型 [.NET Framework]" +ms.assetid: 0a632bc7-9b03-44ee-8842-c82f88672a45 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 抽象化 (抽象型とインターフェイス) +抽象化は、コントラクトの説明がコントラクトの完全な実装を提供しない型です。 抽象化は通常インターフェイスまたは抽象クラスとして実装され適切に定義された一連のコントラクトを実装する型の必要なセマンティクスを説明するリファレンス ドキュメントになります。 .NET Framework で最も重要な抽象化のものが , 、, 、および です。 + + 抽象化のコントラクトをサポートする具象型を実装して、フレームワーク Api がかかります \(で動作\) でこの具象型を使用してフレームワークを拡張することができます、抽象化します。 + + 時の試練に耐え得ることが有益な意味のある抽象化は、設計することは困難です。 メインの難易度がこれ以上ない数が減少して、メンバーの適切なセットを取得しています。 抽象化のメンバーが多すぎる場合は、難しいかを実装することが不可能になります。 保証された機能が少なすぎますメンバーが存在、多くの興味深いシナリオで役に立たないになります。 + + フレームワークで多くの抽象化も低下するために、フレームワークの使いやすさです。 非常に具体的な実装と抽象化で動作している Api の大きい画像に組み込む方法を理解していなくても抽象化を理解しにくいは多くの場合です。 また、抽象化とそのメンバーの名前は必ずしも抽象を多くの場合に暗号のような印象は交え、その使用状況を理解していなくても。 + + ただし、抽象化は、その他の拡張メカニズムは、多くの場合、一致しないする非常に強力な機能拡張を提供します。 多くのアーキテクチャ パターン、プラグインの中核は制御の反転 \(IoC\)、パイプライン、やなどです。 フレームワークの容易性を高めることが重要です。 適切な抽象化を使用すれば、単体テストするために大量の依存関係を消去できます。 要するに、抽象化は最新のオブジェクト指向フレームワークのいる豊富な機能を担当します。 + + **X のしないで** いくつかの具体的な実装と抽象化を使用する Api を開発することにより、テストしない抽象化を提供します。 + + **✓ は** 抽象化を設計するときは、抽象クラスとインターフェイス間慎重に選択します。 + + **✓ を検討してください** の抽象化の具体的な実装のテストの参照を提供します。 このようなテストは、実装が正しく、コントラクトを実装するかどうかをテストするユーザーを許可する必要があります。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [機能拡張のデザイン](../../../docs/standard/design-guidelines/designing-for-extensibility.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/arrays.md b/docs/standard/design-guidelines/arrays.md new file mode 100644 index 00000000000..fe0b93e8d73 --- /dev/null +++ b/docs/standard/design-guidelines/arrays.md @@ -0,0 +1,44 @@ +--- +title: "配列 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "クラス ライブラリ デザインのガイドライン [.NET Framework] 配列" + - "配列 [.NET Framework] の使用に関するガイドライン" + - "空の配列" +ms.assetid: 66a1b3d8-6f3f-4715-b235-e1ff95e32d8e +caps.latest.revision: 18 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 18 +--- +# 配列 +**✓ は** パブリック Api の配列にコレクションの使用を希望します。[コレクション](../../../docs/standard/design-guidelines/guidelines-for-collections.md) セクションでは、コレクションと配列の間での選択方法の詳細を説明します。 + + **X のしないで** 読み取り専用配列フィールドを使用します。 フィールド自体は読み取り専用と、変更できない配列内の要素を変更することができます。 + + **✓ を検討してください** 多次元配列ではなくジャグ配列を使用します。 + + ジャグ配列は、要素も配列を含む配列です。 小さいは無駄な空間データ \(たとえば、スパース マトリックス\) セットによって多次元配列と比較する、さまざまなサイズの要素を構成する配列ができます。 さらに、CLR は、一部のシナリオで、実行時のより優れたパフォーマンスを発生する可能性がありますので、ジャグ配列のインデックス操作を最適化します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [使用方法のガイドライン](../../../docs/standard/design-guidelines/usage-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/base-classes-for-implementing-abstractions.md b/docs/standard/design-guidelines/base-classes-for-implementing-abstractions.md new file mode 100644 index 00000000000..3e867244b87 --- /dev/null +++ b/docs/standard/design-guidelines/base-classes-for-implementing-abstractions.md @@ -0,0 +1,48 @@ +--- +title: "抽象化を実装するための基本クラス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "抽象化 [.NET Framework]" + - "基本クラス、抽象化" +ms.assetid: 37a2d9a4-9721-482a-a40f-eee2c1d97875 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 抽象化を実装するための基本クラス +厳密に言えば、クラス別のクラスの派生元が、基本クラスになります。 ここでは、ただし、基本クラスは、主に共通の抽象化するため、または一部を再利用するには、他のクラスの既定の実装が継承を目的としたクラス。 基本クラスは、通常、階層のルートに抽象化し、下部にあるいくつかのカスタム実装の間の継承階層の中央に配置できます。 + + これらは、抽象化を実装するための実装のヘルパーとして機能します。 たとえば、項目の順序付けられたコレクションのフレームワークの抽象化の 1 つは、 インターフェイスです。 実装する は重要でとなるため、フレームワーク、複数の基本クラスなど、 , 、カスタム コレクションを実装するためのヘルパーとして機能します。 + + 基本クラスは通常ありません自体には、抽象化として処理するために適していますが多すぎるの実装を含んでいる傾向があるためです。 たとえば、 `Collection` 基本クラスには、多数非ジェネリックが実装している事実に関係の実装にはが含まれています。 `IList` \(非ジェネリック コレクションをより適切に統合\) へのインターフェイスとそのフィールドのいずれかでメモリに格納された項目のコレクションであるという事実にします。 + + 既に説明したようには、基本クラスは抽象化を実装する必要があるユーザーに非常に貴重なヘルプを提供することができます、同時に重大な責任を立つことができます。 継承階層の深さを増やしおよびをので概念的には、フレームワークが複雑になる、サーフェス領域を追加します。 そのため、フレームワークのユーザーに大きな価値を提供する場合にのみ、基本クラスを使用してください。 これらを基本クラスから継承する代わりに、内部の実装への委任で大文字を積極的に検討するフレームワークを実装するときにのみ値を提供する場合に避ける必要があります。 + + **✓ を検討してください** 抽象メンバーが含まれている場合でものための基底クラスの抽象です。 これをユーザーに明確に伝達する、クラスが継承するためだけに設計されています。 + + **✓ を検討してください** の主要なシナリオの種類から別の名前空間の基本クラスを配置することです。 定義上は、基本クラスは、高度な機能拡張シナリオを想定してし、そのため、大半のユーザーに重要ではありません。 + + **X 回避** クラスは、パブリック Api で使用する場合に"Base"サフィックスを持つ基本クラスの名前します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [機能拡張のデザイン](../../../docs/standard/design-guidelines/designing-for-extensibility.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/capitalization-conventions.md b/docs/standard/design-guidelines/capitalization-conventions.md new file mode 100644 index 00000000000..172ada4ebab --- /dev/null +++ b/docs/standard/design-guidelines/capitalization-conventions.md @@ -0,0 +1,119 @@ +--- +title: "大文字と小文字の表記規則 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "camel 形式で名前 [.NET Framework]" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] 大文字と小文字" + - "Pascal 形式名 [.NET Framework]" + - "大文字小文字の区別、大文字と小文字の表記規則" + - "大文字と小文字の名前 [.NET Framework]" +ms.assetid: 4c4ea526-9203-486f-b72d-29d61c5b3c6d +caps.latest.revision: 16 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 16 +--- +# 大文字と小文字の表記規則 +単純なメソッドを使用するためのこの章のレイアウトのガイドラインの場合、型、メンバー、および読みやすいパラメーターの識別子を作成、一貫した適用時にされます。 + +## 識別子の大文字と小文字の規則 + 識別子内の単語を区別するためには、識別子内の各単語の最初の文字を大文字に変換します。 アンダー スコアは、単語を区別するために使用しないでまたは識別子で任意の場所に言えば、します。 識別子の使用によって、識別子の大文字にする 2 つの適切な方法があります。 + +- Pascal 表記を使用 + +- camel 表記 + + パラメーター名以外のすべての識別子に使用する、pascal 表記を使用規則は、次の例に示すように、\(2 文字の長さを頭字語を含む\) の各単語の最初の文字を大文字になります。 + + `PropertyDescriptor` + `HtmlTag` + + 特殊なケースは、次の識別子に示すように、両方の文字を大文字に、2 文字の頭字語に。 + + `IOStream` + + パラメーター名専用に使用される、camel 表記規則では、次の例に示すように、最初の単語以外の各単語の最初の文字が大文字にします。 例に示すも camel 形式の識別子で始まる 2 文字の頭字語は小文字の両方です。 + + `propertyDescriptor` + `ioStream` + `htmlTag` + + **✓ は** pascal 表記を使用を使用して、すべてのパブリック メンバー、型、および名前空間名の複数の単語で構成されます。 + + **✓ は** パラメーター名の camel 表記を使用します。 + + 次の表では、さまざまな種類の識別子の大文字と小文字の規則について説明します。 + +|識別子|大文字小文字の区別|例| +|---------|---------------|-------| +|Namespace|Pascal 形式|`namespace System.Security { ... }`| +|型|Pascal 形式|`public class StreamReader { ... }`| +|インターフェイス|Pascal 形式|`public interface IEnumerable { ... }`| +|メソッド|Pascal 形式|`public class Object {`
`public virtual string ToString();`
`}`| +|プロパティ|Pascal 形式|`public class String {`
`public int Length { get; }`
`}`| +|イベント|Pascal 形式|`public class Process {`
`public event EventHandler Exited;`
`}`| +|フィールド|Pascal 形式|`public class MessageQueue {`
`public static readonly TimeSpan`
`InfiniteTimeout;`
`}`
`public struct UInt32 {`
`public const Min = 0;`
`}`| +|列挙値|Pascal 形式|`public enum FileMode {`
`Append,`
`...`
`}`| +|パラメーター|キャメル形式|`public class Convert {`
`public static int ToInt32(string value);`
`}`| + +## 複合語の大文字と一般的な用語 + ほとんどの複合語は、大文字と小文字の単語として扱われます。 + + **X のしないで** いわゆる閉じた形式の複合語の各単語を大文字に変換します。 + + これらは、複合語がエンドポイントなどの 1 つの単語として書き込まれます。 大文字と小文字のガイドライン、するためには、1 つの単語として閉じた形式の複合語を扱います。 複合語が閉形式で記述されたかどうかを判断するのにには、現在の辞書を使用します。 + +|Pascal 形式|キャメル形式|Not| +|---------------|------------|---------| +|`BitFlag`|`bitFlag`|`Bitflag`| +|`Callback`|`callback`|`CallBack`| +|`Canceled`|`canceled`|`Cancelled`| +|`DoNot`|`doNot`|`Don't`| +|`Email`|`email`|`EMail`| +|`Endpoint`|`endpoint`|`EndPoint`| +|`FileName`|`fileName`|`Filename`| +|`Gridline`|`gridline`|`GridLine`| +|`Hashtable`|`hashtable`|`HashTable`| +|`Id`|`id`|`ID`| +|`Indexes`|`indexes`|`Indices`| +|`LogOff`|`logOff`|`LogOut`| +|`LogOn`|`logOn`|`LogIn`| +|`Metadata`|`metadata`|`MetaData, metaData`| +|`Multipanel`|`multipanel`|`MultiPanel`| +|`Multiview`|`multiview`|`MultiView`| +|`Namespace`|`namespace`|`NameSpace`| +|`Ok`|`ok`|`OK`| +|`Pi`|`pi`|`PI`| +|`Placeholder`|`placeholder`|`PlaceHolder`| +|`SignIn`|`signIn`|`SignOn`| +|`SignOut`|`signOut`|`SignOff`| +|`UserName`|`userName`|`Username`| +|`WhiteSpace`|`whiteSpace`|`Whitespace`| +|`Writable`|`writable`|`Writeable`| + +## 大文字と小文字の区別 + CLR で実行できる言語は、いくつかが、大文字小文字の区別をサポートするために必要はありません。 でも、言語サポートする場合、他の言語、フレームワークにアクセスする可能性を持っていません。 したがって、外部アクセス可能なすべての Api は、同じコンテキストで 2 つの名前を区別するためだけの場合に使用できません。 + + **X のしないで** すべてのプログラミング言語が大文字小文字を区別と見なされます。 できません。 名前は、単独で大文字と小文字が異なることはできません。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [名前付けのガイドライン](../../../docs/standard/design-guidelines/naming-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/choosing-between-class-and-struct.md b/docs/standard/design-guidelines/choosing-between-class-and-struct.md new file mode 100644 index 00000000000..82c6d020298 --- /dev/null +++ b/docs/standard/design-guidelines/choosing-between-class-and-struct.md @@ -0,0 +1,68 @@ +--- +title: "クラスまたは構造体の選択 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "クラス ライブラリ デザインのガイドライン [.NET Framework] 構造体" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] クラス" + - "クラスと構造体 [.NET Framework]" + - "クラス [.NET Framework] のデザイン ガイドライン" + - "型のデザインのガイドライン、構造体" + - "構造体 [.NET Framework] のデザイン ガイドライン" + - "および構造体、クラス [.NET Framework]" + - "クラス型の設計ガイドライン" +ms.assetid: f8b8ec9b-0ba7-4dea-aadf-a93395cd804f +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# クラスまたは構造体の選択 +すべての framework デザイナーに直面基本的な設計上の決定の 1 つは、クラス \(参照型\)、または構造体 \(値型\) として型を設計するかどうかです。 参照型と値の型の動作の違いをよく理解は、この選択を行うに不可欠です。 + + 参照型と検討します。 値の型の最初の違いは参照型が、ガベージ コレクション ヒープに割り当てられている値の型はスタックまたは型を含むにインラインで割り当てられ、スタックがアンワインドされるときに割り当て解除は、またはその親の型が割り当て解除されたを取得します。 したがって、値型の割り当てと解放は、一般的な参照型の割り当てと解放より安価では。 + + 次に、参照型の配列ではの不一致、つまり、配列要素に、ヒープ上に存在する参照型のインスタンスへの参照のみが割り当てられます。 値型の配列には、インライン、つまり配列の要素が値型の実際のインスタンスが割り当てられます。 そのため、値型の配列の割り当てと解放は参照型の配列の割り当てと解放よりもかなり安価です。 さらに、ほとんどの場合は、値型の配列と、参照の局所性程度が高くが発生します。 + + 次の相違点は、メモリ使用量に関連します。 値型にボックス化を実装するインターフェイスの 1 つまたは参照型にキャストされるときです。 ボックス化解除された得られる値の型にキャストするとき。 ボックスが、ヒープ上に割り当てられたされガベージ コレクション、あまりボックス化とボックス化解除されるオブジェクトであるため、ヒープ、ガベージ コレクターと最終的には、アプリケーションのパフォーマンスに影響を及ぼすことができます。 これに対し、このようなボックス化は行われませんように参照型にキャストされます。 + + 次に、参照型の割り当ては、値型の割り当て値全体をコピーする一方、参照をコピーします。 そのため、大規模な参照型の割り当てでは、大きな値の型の割り当てより安価です。 + + 最後に、値によって渡される値型は、参照型は、参照によって渡されます。 参照型のインスタンスへの変更では、インスタンスを指すすべての参照に影響します。 値型のインスタンスは、値によって渡されるときにコピーされます。 値型のインスタンスが変更されたときに、もちろんは変わりませんは、そのコピーのいずれか。 コピーがユーザーによって明示的に作成されませんが、引数が渡されるまたは返される値を返すときに暗黙的に作成されたであるために、変更可能な値の型は多くのユーザーが混乱することができます。 そのため、値型は変更できません。 + + 経験上、として、framework の型の大部分は、クラスをする必要があります。 ただし、状況によっては、値型の特性やすく構造体を使用した方が適切があります。 + + **✓ を検討してください** 型のインスタンスが小型でよく有効期間の短い、またはその他のオブジェクトに埋め込まれている一般的場合は、クラスの代わりに構造体を定義することです。 + + **X 回避** 型にすべての次の特性がある存在しない限り、構造体を定義します。 + +- プリミティブ型のような単一の値を論理的に表す \(`int`, 、`double`, などです。\)。 + +- 16 バイト未満のサイズのインスタンスがあります。 + +- 変更可能なことはできません。 + +- 頻繁にボックス化することはありません。 + + その他の場合は、クラスとして、型を定義する必要があります。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [型デザインのガイドライン](../../../docs/standard/design-guidelines/type.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/common-design-patterns.md b/docs/standard/design-guidelines/common-design-patterns.md new file mode 100644 index 00000000000..b1d2d9ae510 --- /dev/null +++ b/docs/standard/design-guidelines/common-design-patterns.md @@ -0,0 +1,38 @@ +--- +title: "一般的な設計パターン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "クラス ライブラリのデザイン パターン" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] のデザイン パターン" +ms.assetid: f7bd1361-4ab2-4132-972d-a044b8f197e1 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 一般的な設計パターン +ソフトウェア パターン、パターン言語、およびパターンの非常に幅広いトピックに対処する antipatterns に数多くの書籍があります。 したがって、ガイドラインと、.NET Framework Api の設計で頻繁に使用するパターンの非常に限定されたセットに関連付けられているディスカッションについても説明します。 + +## このセクションの内容 + [依存関係プロパティ](../../../docs/standard/design-guidelines/dependency-properties.md) + [Dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md) + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/constructor.md b/docs/standard/design-guidelines/constructor.md new file mode 100644 index 00000000000..e63423281d9 --- /dev/null +++ b/docs/standard/design-guidelines/constructor.md @@ -0,0 +1,93 @@ +--- +title: "コンス トラクターのデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "メンバー デザインのガイドライン、コンス トラクター" + - "コンス トラクター、設計のガイドライン" + - "インスタンス コンストラクター" + - "型コンス トラクター" + - "仮想メンバー" + - "型のコンス トラクター" + - "既定のコンス トラクター" + - "静的コンストラクター" +ms.assetid: b4496afe-5fa7-4bb0-85ca-70b0ef21e6fc +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# コンス トラクターのデザイン +コンス トラクターの 2 種類があります: コンス トラクターとインスタンス コンス トラクターを入力します。 + + 型コンス トラクターは、静的および型を使用する前に、CLR で実行されます。 インスタンス コンス トラクターは、型のインスタンスが作成されたときに実行します。 + + 型コンス トラクターは、すべてのパラメーターを使用できません。 インスタンス コンス トラクターは、次のことです。 パラメーターを受け取りませんインスタンス コンス トラクターは、既定のコンス トラクターとも呼ばれます。 + + コンス トラクターは、型のインスタンスを作成する最も自然な方法です。 ほとんどの開発者は検索し、別の \(工場出荷時のメソッド\) などのインスタンスを作成する方法を検討する前に、コンス トラクターを使用しようとします。 + + **✓ を検討してください** シンプル、理想的には、既定のコンス トラクターを提供します。 + + 簡単なコンス トラクターがパラメーターの数が非常に少ないと、すべてのパラメーターは、プリミティブまたは列挙型。 このような単純なコンス トラクターは、フレームワークのユーザビリティを向上させます。 + + **✓ を検討してください** 目的の操作のセマンティクスは、新しいインスタンスの構築に直接マップされない場合や、不自然コンス トラクターのデザイン ガイドラインに従う場合は、コンス トラクターではなく静的ファクトリ メソッドを使用しています。 + + **✓ は** 主要なプロパティを設定するためのショートカットとしてコンス トラクターのパラメーターを使用します。 + + 意味的に同じことはありませんいくつかのプロパティ セットの後に空のコンス トラクターを使用して、複数の引数を持つコンス トラクターを使用します。 + + **✓ は** 単にプロパティを設定するコンス トラクターのパラメーターが使用されている場合は、コンス トラクターのパラメーターとプロパティに同じ名前を使用します。 + + このようなパラメーターとプロパティの唯一の違い大文字小文字の区別する必要があります。 + + **✓ は** 、コンス トラクターで最低限の作業です。 + + コンス トラクターは、キャプチャ以外処理がコンス トラクターのパラメーターを実行しないで必要があります。 その他の処理のコストは、必要になるまでに遅延する必要があります。 + + **✓ は** 該当する場合は、インスタンス コンス トラクターから例外をスローします。 + + **✓ は** このようなコンス トラクターが必要な場合に、クラスのパブリックの既定のコンス トラクターを明示的に宣言します。 + + 型のコンス トラクターを明示的に宣言しない、多くの言語 \(c\# など\) するときに、パブリックの既定のコンス トラクターが自動的に追加します。 \(抽象クラスは、保護されているコンス トラクターを取得します\)。 + + クラスにパラメーター化されたコンス トラクターを追加すると、コンパイラは既定のコンス トラクターを追加できなくなります。 これにより、多くの場合、偶発的な重大な変更が原因です。 + + **X 回避** 構造体で、既定のコンス トラクターを明示的に定義します。 + + これにより、配列の作成より速く、既定のコンス トラクターが定義されていない場合はないため、配列内のすべてのスロット上で実行します。 など、C\# の場合は、多くのコンパイラがそのためのパラメーターなしのコンス トラクターを持つ構造体を許可しないことに注意してください。 + + **X 回避** コンス トラクター内のオブジェクトでの仮想メンバーを呼び出すことです。 + + 大多数の派生型のコンス トラクターが実行されていない完全にまだ場合でも、仮想メンバーを呼び出すことに呼び出される最派生のオーバーライドによりされます。 + +### 型のコンス トラクターのガイドライン + **✓ は** 静的コンス トラクターをプライベートに設定します。 + + クラスのコンス トラクターとも呼ばれます。 静的コンス トラクターを使用して、型を初期化します。 CLR は、型の最初のインスタンスを作成またはその型の静的メンバーが呼び出される前に静的コンス トラクターを呼び出します。 ユーザーには、静的コンス トラクターが呼び出されたときに制御がありません。 静的コンス トラクターがプライベートでない場合は、CLR 以外のコードから呼び出すことができます。 コンス トラクターで実行される操作によって予期しない動作ができます。 C\# コンパイラでは、静的コンス トラクターをプライベートを強制します。 + + **X のしないで** 静的コンス トラクターから例外をスローします。 + + 型コンス トラクターから例外がスローされた場合、型が使用可能な現在のアプリケーション ドメインで + + **✓ を検討してください** 、ランタイムが明示的に定義された静的コンス トラクターがない型のパフォーマンスを最適化することがあるために、静的コンス トラクターを明示的に使用するのではなく、静的フィールドをインラインを初期化します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [メンバー デザインのガイドライン](../../../docs/standard/design-guidelines/member.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/dependency-properties.md b/docs/standard/design-guidelines/dependency-properties.md new file mode 100644 index 00000000000..a2aa5042161 --- /dev/null +++ b/docs/standard/design-guidelines/dependency-properties.md @@ -0,0 +1,112 @@ +--- +title: "依存関係プロパティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 212cfb1e-cec4-4047-94a6-47209b387f6f +caps.latest.revision: 4 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 4 +--- +# 依存関係プロパティ +依存関係プロパティ \(DP\) は、たとえば、型の変数 \(フィールド\) に格納することではなくプロパティ ストア内の値を格納する標準プロパティです。 + + 割り当てられた依存プロパティは、オブジェクトとそのコンテナーの間のリレーションシップを記述する「プロパティ」を表す、Get および Set の静的メソッドとしてモデル化された依存関係プロパティの種類 \(の位置など、 `Button` 上のオブジェクト、 `Panel` コンテナー\) です。 + + **✓ は** プロパティをスタイル設定、トリガー、データ バインディング、アニメーション、動的リソース、および継承などの WPF 機能をサポートする必要がある場合は、依存関係プロパティを提供します。 + +## 依存関係プロパティのデザイン + **✓ は** から継承 , 、または依存関係プロパティを実装する場合、そのサブタイプのいずれかです。 種類は、プロパティ ストアの非常に効率的な実装を提供し、自動的に WPF データ バインドをサポートします。 + + **✓ は** は、通常の CLR プロパティとパブリック静的な読み取り専用フィールドのインスタンスを格納する指定 各依存関係プロパティ。 + + **✓ は** インスタンス メソッドを呼び出すことによって依存関係プロパティを実装する です。 + + **✓ は** "Property"を使用してプロパティの名前をアスタリスクの依存関係プロパティの静的フィールドの名前 + + **X のしないで** 代わりにメタデータの設定は、コード内の依存関係プロパティの既定値を明示的に設定します。 + + プロパティの既定値を明示的に設定すると、スタイルなどのなんらかの暗黙的な方法で設定されているからそのプロパティをできない場合があります。 + + **X のしないで** 静的フィールドにアクセスする標準的なコード以外のプロパティ アクセサーにコードを追加します。 + + 静的フィールドを直接使用することはありませんとコードが実行プロパティ、スタイルなどの暗黙的な方法でスタイル処理のためです。 + + **X のしないで** 依存関係プロパティを使用してセキュリティで保護されたデータを格納します。 でもプライベート依存関係プロパティは、パブリックにアクセスできます。 + +## 接続されている依存関係プロパティのデザイン + 前のセクションで説明されている依存関係プロパティは宣言型の組み込みのプロパティを表しますたとえば、 `Text` プロパティは、プロパティの `TextButton`, 、それを宣言します。 特殊な依存関係プロパティは、接続されている依存関係プロパティです。 + + 添付プロパティの典型的な例は、 プロパティです。 プロパティ ボタン \(いないグリッドの\) 列の位置を表すは、「その」ボタンをグリッドで、グリッドで、ボタンが含まれている場合にのみ該当します。 + +``` + + + + + + + + + +``` + + 添付プロパティの定義は、アクセサーが静的の Get と Set メソッドで表されること以外に、通常の依存関係プロパティのほとんどの場合ようになります。 + +``` +public class Grid { + + public static int GetColumn(DependencyObject obj) { + return (int)obj.GetValue(ColumnProperty); + } + + public static void SetColumn(DependencyObject obj, int value) { + obj.SetValue(ColumnProperty,value); + } + + public static readonly DependencyProperty ColumnProperty = + DependencyProperty.RegisterAttached( + "Column", + typeof(int), + typeof(Grid) + ); +} +``` + +## 依存関係プロパティの検証 + プロパティは、多くの場合、検証と呼ばれるものを実装します。 プロパティの値を変更しようとは、検証ロジックを実行します。 + + 残念なことに依存関係プロパティ アクセサーの場合は、任意の検証コードを含めることはできません。 代わりに、依存関係プロパティの検証ロジックは、プロパティの登録時に指定する必要があります。 + + **X のしないで** プロパティのアクセサーの依存関係プロパティの検証ロジックを配置します。 代わりに、検証コールバックを渡す `DependencyProperty.Register` メソッドです。 + +## 依存関係プロパティの変更通知 + **X のしないで** 依存関係プロパティのアクセサーで変更通知のロジックを実装します。 依存関係プロパティには、変更通知のコールバックを指定する必要がある組み込みの変更通知機能があり、 です。 + +## 依存関係プロパティの値の強制型変換 + プロパティ ストアが実際に変更される前に、set アクセス操作子、プロパティ set アクセス操作子に渡された値が変更されたときにプロパティの強制型変換が行われます。 + + **X のしないで** 依存関係プロパティのアクセサーに強制変換ロジックを実装します。 + + 依存関係プロパティが、組み込みの強制型変換機能を持っているし、強制型変換のコールバックを指定することで使用できます、 `PropertyMetadata`です。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [一般的な設計パターン](../../../docs/standard/design-guidelines/common-design-patterns.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/designing-for-extensibility.md b/docs/standard/design-guidelines/designing-for-extensibility.md new file mode 100644 index 00000000000..b4b62230bad --- /dev/null +++ b/docs/standard/design-guidelines/designing-for-extensibility.md @@ -0,0 +1,47 @@ +--- +title: "機能拡張のデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "クラス ライブラリを拡張します。" + - ".NET framework クラス ライブラリによる拡張機能" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] の機能拡張" + - "クラス ライブラリの機能拡張 [.NET Framework]" +ms.assetid: 1cdb8740-871a-456c-9bd9-db96ca8d79b3 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 機能拡張のデザイン +フレームワークの設計の 1 つの重要な側面を行って、framework の機能拡張は慎重に考慮されていることを確認しています。 これは、コストとさまざまな機能拡張機構に関連付けられている利点を理解することが必要です。 この章では、拡張メカニズムを決定できます。\-サブクラス化、イベント、仮想メンバーを、コールバック、およびなど —、framework の要件を最も満たすことができます。 + + フレームワークの機能拡張を許可するように多くの方法があります。 コストが非常に強力に性能の低いが、低コストの範囲です。 、特定の機能拡張必要条件については、要件を満たしているコストが機能拡張機構を選択してください。 後で、複数の機能拡張を追加する通常できますが、重大な変更を導入することがなく離れた実行しないことができますのことに注意してください。 + +## このセクションの内容 + [封印されていないクラス](../../../docs/standard/design-guidelines/unsealed-classes.md) + [プロテクト メンバー](../../../docs/standard/design-guidelines/protected-members.md) + [イベントとコールバック](../../../docs/standard/design-guidelines/events-and-callbacks.md) + [仮想メンバー](../../../docs/standard/design-guidelines/virtual-members.md) + [抽象化 \(抽象型とインターフェイス\)](../../../docs/standard/design-guidelines/abstractions-abstract-types-and-interfaces.md) + [抽象化を実装するための基本クラス](../../../docs/standard/design-guidelines/base-classes-for-implementing-abstractions.md) + [封印](../../../docs/standard/design-guidelines/sealing.md) + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/dispose-pattern.md b/docs/standard/design-guidelines/dispose-pattern.md new file mode 100644 index 00000000000..80cef75f8e3 --- /dev/null +++ b/docs/standard/design-guidelines/dispose-pattern.md @@ -0,0 +1,296 @@ +--- +title: "Dispose パターン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "Dispose メソッド" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] Dispose メソッド" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] Finalize メソッド" + - "Dispose メソッド名をカスタマイズします。" + - "Finalize メソッド" +ms.assetid: 31a6c13b-d6a2-492b-9a9f-e5238c983bcb +caps.latest.revision: 22 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 22 +--- +# Dispose パターン +すべてのプログラムは、それらの実行の進行中にメモリ、システムのハンドル、またはデータベース接続など、1 つまたは複数のシステム リソースを取得します。 開発者である、取得、使用後に解放する必要があるために、このようなシステム リソースの使用に注意してください。 + + CLR では、自動メモリ管理がサポートされています。 管理されるメモリ \(c\# 演算子を使用して割り当てられたメモリ `new`\) 明示的に解放する必要はありません。 ガベージ コレクター \(GC\) によって自動的に解放されます。 これにより開発者のメモリを解放して難しい面倒な作業から解放されは、.NET Framework によって提供される優れた生産性向上のための主な理由の 1 つでした。 + + 残念ながら、マネージ メモリは、さまざまな種類のシステム リソースの 1 つです。 ただし、マネージ メモリ以外のリソースは明示的に解放する必要あるし、アンマネージ リソースと呼びます。 GC はありませんされたこのようなアンマネージ リソースを管理する開発者の手にアンマネージ リソースを管理する責任があることを意味します。 + + CLR では、アンマネージ リソースを解放するときにいくつかのヘルプを提供します。 仮想メソッドを宣言 \(ファイナライザーとも呼ばれます\)、オブジェクトのメモリが GC によって回収され、上書きして、アンマネージ リソースを解放する前に、GC によって呼び出されます。 ファイナライザーのオーバーライドの種類は、ファイナライズ可能な型と呼ばれます。 + + ファイナライザーはクリーンアップの一部のシナリオで効果的なは、2 つの重要な欠点があります。 + +- GC はコレクションの対象オブジェクトを検出すると、ファイナライザーが呼び出されます。 これは、不定一定時間、リソースは必要ありません後に行われます。 開発者がでしたか、リソースおよびリソースが実際には、ファイナライザーで解放と時間を解放するまでの遅延は、リソースは \(大規模なアンマネージ メモリ バッファーなど\) の使用にコストがかかる場合や、多くの不足しているリソース \(リソースを簡単に使い果たされることができます\) を取得するプログラムで受け入れられない可能性があります。 + +- CLR は、ファイナライザーを呼び出す必要がある場合は、次の回ガベージ コレクション \(コレクションの間で実行するファイナライザー\) のするまで、オブジェクトのメモリのコレクションを延期にする必要があります。 これは、オブジェクトのメモリ \(およびすべてのオブジェクトを参照\) が、長期間に解放されないことを意味します。 + + そのため、ファイナライザーでのみ証明書利用者不適切となる多くのシナリオが不足しているリソースを処理する場合は、アンマネージ リソースをできるだけ早く再利用する必要がある場合または高パフォーマンスの高いシナリオがこれで、追加した GC オーバーヘッドの終了処理は許容されません。 + + フレームワークは、提供、 インターフェイスが必要でないと、すぐには、アンマネージ リソースを解放する手動の方法を開発者に提供するために実装する必要があります。 また、提供、 するように、GC が知ることができるメソッド、オブジェクトは手動で破棄され、その場合、オブジェクトのメモリを再要求できる前、終了する必要はありません。 実装する型、 `IDisposable` インターフェイスを破棄できる型と呼びます。 + + Dispose パターンの目的は、使用状況とファイナライザーの実装を標準化して、 `IDisposable` インターフェイスです。 + + パターンの主な動機がの実装の複雑さを軽減するには、 メソッドです。 複雑なメソッドがいくつかのコード パスが \(相違点は後で説明\) を共有するという事実に由来します。 さらに、確定的なリソース管理のための言語サポートの進化に関連するパターンの一部の要素の歴史的な理由があります。 + + **✓ は** 破棄可能な型のインスタンスを含む型の Dispose の基本的なパターンを実装します。 参照してください、 [基本的な Dispose パターン](#basic_pattern) セクションについては、基本的なパターンです。 + + 型が破棄可能なその他のオブジェクトの有効期間を担当する場合は、開発者にも、それらを破棄する方法必要があります。 コンテナーを使用して `Dispose` メソッドは、これを可能にする便利な方法です。 + + **✓ は** 基本的な Dispose パターンを実装し、保持しているリソースに明示的に解放する必要があると、ファイナライザーを持たない型にファイナライザーを提供します。 + + たとえば、このパターンは、アンマネージ メモリ バッファーを格納する型で実装する必要があります。[ファイナライズ可能な型](#finalizable_types) ファイナライザーを実装する関連のガイドラインについて説明します。 + + **✓ を検討してください** クラス自体を保持しないことは、アンマネージ リソースまたは破棄可能なオブジェクトはサブタイプがある可能性が、基本的な Dispose パターンを実装します。 + + これの良い例は、 クラスです。 すべてのリソースを保持しないする抽象基本クラスが、そのサブクラスのほとんどはし、このため、このパターンを実装します。 + + +## 基本的な Dispose パターン + パターンの基本的な実装には、実装が含まれます、 `System.IDisposable` インターフェイスと宣言する、 `Dispose(bool)` 間で共有するすべてのリソースのクリーンアップ ロジックを実装するメソッド、 `Dispose` メソッドと省略可能な終了します。 + + 次の例は、基本的なパターンの単純な実装を示しています。 + +``` +public class DisposableResourceHolder : IDisposable { + + private SafeHandle resource; // handle to a resource + + public DisposableResourceHolder(){ + this.resource = ... // allocates the resource + } + + public void Dispose(){ + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing){ + if (disposing){ + if (resource!= null) resource.Dispose(); + } + } +} +``` + + ブール型パラメーター `disposing` からメソッドが呼び出されたかどうかを示す、 `IDisposable.Dispose` 実装またはファイナライザーからです。`Dispose(bool)` 実装は、その他の参照オブジェクト \(前のサンプルのリソース フィールドなど\) にアクセスする前に、パラメーターを確認する必要があります。 このようなオブジェクトから、メソッドが呼び出されたときにのみアクセスできる、 `IDisposable.Dispose` 実装 \(ときに、 `disposing` パラメーターが true に等しい\)。 メソッドは、ファイナライザーから呼び出される場合 \(`disposing` は false\)、その他のオブジェクトにアクセスしないようにします。 理由は、オブジェクトが予期しない順序で完了処理され、そのため、またはその依存関係のいずれかが既にファイナライズされていることです。 + + また、このセクションでは、Dispose パターンを実装しない基数を持つクラスに適用されます。 既にパターンを実装するクラスから継承している場合はオーバーライドするだけで、 `Dispose(bool)` 追加のリソースのクリーンアップ ロジックを提供します。 + + **✓ は** 宣言保護された仮想 void `Dispose(bool disposing)` アンマネージ リソースの解放に関連するすべてのロジックを一元化するメソッドです。 + + リソースのクリーンアップをすべては、このメソッドで発生する必要があります。 メソッドは、両方のファイナライザーから呼び出されると、 `IDisposable.Dispose` メソッドです。 パラメーターは、ファイナライザーの内部から呼び出されている場合は false になります。 終了処理中に実行されるコードは、ファイナライズ可能なその他のオブジェクトにアクセスしていないことを確認することを使用してください。 ファイナライザーを実装の詳細は、次のセクションで記述されます。 + +``` +protected virtual void Dispose(bool disposing){ + if (disposing){ + if (resource!= null) resource.Dispose(); + } +} +``` + + **✓ は** 実装、 `IDisposable` を単純に呼び出してインターフェイス `Dispose(true)` 続けて `GC.SuppressFinalize(this)`します。 + + 呼び出し `SuppressFinalize` 場合にのみ発生 `Dispose(true)` 正常に実行されます。 + +``` +public void Dispose(){ + Dispose(true); + GC.SuppressFinalize(this); +} +``` + + **X のしないで** パラメーターなしで行う `Dispose` 仮想メソッドです。 + + `Dispose(bool)` メソッドは、1 つのサブクラスによってオーバーライドする必要があります。 + +``` +// bad design +public class DisposableResourceHolder : IDisposable { + public virtual void Dispose(){ ... } + protected virtual void Dispose(bool disposing){ ... } +} + +// good design +public class DisposableResourceHolder : IDisposable { + public void Dispose(){ ... } + protected virtual void Dispose(bool disposing){ ... } +} +``` + + **X のしないで** のすべてのオーバー ロードを宣言、 `Dispose` メソッド以外の `Dispose()` と `Dispose(bool)`です。 + + `Dispose` このパターンを体系化し、実装者、ユーザー、およびコンパイラの間で混乱を回避するために予約語を考慮必要があります。 一部の言語は、特定の種類に自動的にこのパターンを実装することもできます。 + + **✓ は** を許可する、 `Dispose(bool)` に複数回呼び出されるメソッド。 メソッドは、最初に呼び出した後何もしないこともできます。 + +``` +public class DisposableResourceHolder : IDisposable { + + bool disposed = false; + + protected virtual void Dispose(bool disposing){ + if(disposed) return; + // cleanup + ... + disposed = true; + } +} +``` + + **X 回避** 内から例外がスロー `Dispose(bool)` 限り重要な状況で格納しているプロセスが破損しています \(リークするなどの共有状態の整合性がありません。\)。 + + ユーザーが期待するへの呼び出し `Dispose` 例外は発生しません。 + + 場合 `Dispose` 例外を発生させることが、さらに finally ブロックのクリーンアップ ロジックは実行されません。 この問題を回避するは、ユーザーはすべての呼び出しをラップする必要が `Dispose` \(内で、finally ブロック\!\) try ブロックで非常に複雑なクリーンアップのハンドラーにつながります。 実行されている場合、 `Dispose(bool disposing)` メソッド、破棄が false の場合も例外をスローさせることはありません。 そうにより、ファイナライザーのコンテキスト内に実行する場合、プロセスは終了します。 + + **✓ は** スロー、 すべてのメンバーのオブジェクトが破棄された後に使用できないからです。 + +``` +public class DisposableResourceHolder : IDisposable { + bool disposed = false; + SafeHandle resource; // handle to a resource + + public void DoSomething(){ + if(disposed) throw new ObjectDisposedException(...); + // now call some native methods using the resource + ... + } + protected virtual void Dispose(bool disposing){ + if(disposed) return; + // cleanup + ... + disposed = true; + } +} +``` + + **✓ を検討してください** メソッドを提供する `Close()`, に加え、 `Dispose()`, 、領域に一般的な用語が閉じるかどうか。 + + その場合であることが重要、 `Close` 実装と同じ `Dispose` を実装することを検討してください、 `IDisposable.Dispose` メソッドに明示的にします。 + +``` +public class Stream : IDisposable { + IDisposable.Dispose(){ + Close(); + } + public void Close(){ + Dispose(true); + GC.SuppressFinalize(this); + } +} +``` + + +## ファイナライズ可能な型 + ファイナライズ可能な型はファイナライザーをオーバーライドし、\[ファイナライズ コード パスを提供することによって、基本的な Dispose パターンを拡張する型は、 `Dispose(bool)` メソッドです。 + + ファイナライザーは、主な理由は、実行中に、システムの状態に関する \(通常は有効な\) 仮定をすることはできません、正しく実装する非常に困難です。 次のガイドラインは、慎重に検討に考慮する必要があります。 + + しないようにだけに適用のガイドラインに注意してください、 `Finalize` メソッド、ファイナライザーがコードから呼び出されます。 つまり、ロジック内で実行されますが、基本的な Dispose パターン定義済みの場合 `Dispose(bool disposing)` ときに、 `disposing` パラメーターを false にします。 + + 基本クラス既にファイナライズ可能なは、基本的な Dispose パターンを実装オーバーライドしないでください `Finalize` 再度します。 だけオーバーライドする代わりに、 `Dispose(bool)` 追加のリソースのクリーンアップ ロジックを提供します。 + + 次のコードでは、ファイナライズ可能な型の例を示します。 + +``` +public class ComplexResourceHolder : IDisposable { + + private IntPtr buffer; // unmanaged memory buffer + private SafeHandle resource; // disposable handle to a resource + + public ComplexResourceHolder(){ + this.buffer = ... // allocates memory + this.resource = ... // allocates the resource + } + + protected virtual void Dispose(bool disposing){ + ReleaseBuffer(buffer); // release unmanaged memory + if (disposing){ // release other disposable objects + if (resource!= null) resource.Dispose(); + } + } + + ~ ComplexResourceHolder(){ + Dispose(false); + } + + public void Dispose(){ + Dispose(true); + GC.SuppressFinalize(this); + } +} +``` + + **X 回避** ファイナライズ可能な型を作成します。 + + いかなる場合においてと思われる、ファイナライザーが必要なを慎重に検討します。 実際のパフォーマンスとコードの両方の複雑性の観点から、ファイナライザーを持つインスタンスに関連付けられているコストです。 などのリソースのラッパーを使用して必要に応じて を可能な場合は、アンマネージ リソースをカプセル化、その場合、ファイナライザーが不要になるラッパーが、独自のリソースのクリーンアップを行うためです。 + + **X のしないで** ファイナライズ可能な値の型を作成します。 + + 実際には参照型のみが、CLR でファイナライズを取得し、したがってしようと値の型にファイナライザーを配置することは無視されます。 C\# および C\+\+ コンパイラは、この規則を適用します。 + + **✓ は** 型は独自のファイナライザーがない、アンマネージ リソースを解放する必要がある場合、型をファイナライズ可能なためです。 + + ファイナライザーを実装するときに呼び出します `Dispose(false)` 内のすべてのリソースのクリーンアップ ロジックを配置し、 `Dispose(bool disposing)` メソッドです。 + +``` +public class ComplexResourceHolder : IDisposable { + + ~ ComplexResourceHolder(){ + Dispose(false); + } + + protected virtual void Dispose(bool disposing){ + ... + } +} +``` + + **✓ は** ファイナライズ可能なすべての種類の基本的な Dispose パターンを実装します。 + + これにより、型のユーザーはこのため、ファイナライザーにはそれらのリソースの確定的なクリーンアップを明示的に実行することを意味します。 + + **X のしないで** 、それらは既にファイナライズされている重大なリスクがあるため、ファイナライザーのコード パスでファイナライズ可能なオブジェクトにアクセスします。 + + たとえば、別のファイナライズ可能なオブジェクト B を参照しているファイナライズ可能なオブジェクト A に確実に使用できません B a のファイナライザー、またはその逆です。 \(クリティカル ファイナライズの弱い順序保証\) する場合を除きランダムな順序では、ファイナライザーが呼び出されます。 + + また、注意してを静的変数に格納されているオブジェクトが取得アプリケーション ドメインのアンロード中またはプロセスの終了中に、特定の時点でそれを収集します。 ファイナライズ可能なオブジェクト \(または静的変数に格納された値を使用する静的メソッドを呼び出す\) を参照する静的変数ができないにアクセスする場合は安全な は true を返します。 + + **✓ は** ように、 `Finalize` 保護されているメソッド。 + + C\#、C\+\+、および VB.NET の開発者は、次のガイドラインを適用するコンパイラでは、役に立つため、これについて心配する必要はありません。 + + **X のしないで** システムに重大な障害を除く、ファイナライザーのロジックから let 例外エスケープします。 + + ファイナライザーは例外が、CLR がシャット ダウン \(.NET Framework version 2.0\)、現在のプロセス全体を実行して適切な方法で解放されているリソースを別のファイナライザーを妨げています。 + + **✓ を検討してください** を作成してクリティカル ファイナライズ可能なオブジェクトを使用して \(を含む型階層を持つ型 \) のファイナライザー絶対が実行される強制的なアプリケーション ドメインが発生しても状況をアンロードし、スレッドの中止します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + + + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [一般的な設計パターン](../../../docs/standard/design-guidelines/common-design-patterns.md) + [Garbage Collection](../../../docs/standard/garbage-collection/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/enum.md b/docs/standard/design-guidelines/enum.md new file mode 100644 index 00000000000..192c7784904 --- /dev/null +++ b/docs/standard/design-guidelines/enum.md @@ -0,0 +1,111 @@ +--- +title: "列挙型デザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "型のデザインのガイドライン、列挙型" + - "単純な列挙体" + - "列挙体 [.NET Framework] のデザイン ガイドライン" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] 列挙型" + - "フラグ列挙体" +ms.assetid: dd53c952-9d9a-4736-86ff-9540e815d545 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 列挙型デザイン +列挙型は、特殊な値の型です。 列挙値の 2 種類があります。 単純な列挙型、およびフラグの列挙型。 + + 単純な列挙型は、選択肢の小さな閉じたセットを表します。 シンプルな列挙体の一般的な例は、色のセットです。 + + フラグ列挙型は、列挙値のビットごとの演算をサポートするために設計されています。 フラグ列挙体の一般的な例では、オプションの一覧を示します。 + + **✓ は** を厳密に型パラメーター、プロパティ、列挙型を使用し、戻り値のセットを表す値。 + + **✓ は** 列挙型を静的な定数の代わりに使用をお勧めします。 + + **X のしないで** 集合 \(など、オペレーティング システムのバージョン、友人などの名前\) に列挙型を使用します。 + + **X のしないで** 将来使用するは、予約済みの列挙値を指定します。 + + 値は、後の段階で既存の列挙体を常に単純に追加できます。 参照してください [列挙体に値を追加する](#add_value) 列挙体に値を追加することの詳細についてです。 予約済みの値は煩雑に実際の値のセットをユーザー エラーが発生する傾向がありますだけです。 + + **X 回避** 1 つだけの値を持つ列挙型を公開することです。 + + C Api の将来の拡張性を確保するための一般的な方法では、メソッド シグネチャに予約されているパラメーターを追加します。 このような予約済みのパラメーターは、1 つの既定値を持つ列挙型として表現できます。 これは、マネージ Api で実行する必要がありますされません。 メソッドのオーバー ロードとは、将来リリースされるパラメーターを追加できます。 + + **X のしないで** 列挙型に sentinel 値を含めます。 + + フレームワーク開発者に役立つ場合がありますが、sentinel 値は、フレームワークのユーザーが混乱します。 列挙型で表されるセットから、値のいずれかがするのではなく、列挙型の状態を追跡するために使用されます。 + + **✓ は** 単純な列挙型のゼロの値を指定します。 + + 値を"None"のように呼び出すことを検討してください。 このような値がこの特定の列挙型に対して適切でない場合列挙型の最も一般的な既定値は、基になる値の 0 割り当てる必要があります。 + + **✓ を検討してください** を使用して \(大半のプログラミング言語の既定値\) 列挙型の基になる型として、次のいずれかが当てはまる場合を除き。 + +- 列挙型はフラグ列挙体を 32 を超えるフラグが設定されてしたり、将来さらにが見込まれます。 + +- 基になる型が異なるする必要がある さまざまなサイズを持つ列挙型を指定して、アンマネージ コードと相互運用性を容易にします。 + +- 小規模な基になる型は、領域が大幅に節約になります。 制御フローの引数として主に使用される列挙型の場合、サイズもほとんど違いを します。 サイズの削減が大きなある場合。 + + - 非常に頻繁にインスタンス化された構造体またはクラス内のフィールドとして使用する列挙型を予測します。 + + - ユーザー インスタンスの列挙の大規模な配列またはコレクションを作成するとします。 + + - シリアル化する列挙型のインスタンスの数が多いはずです。 + + メモリ内の使用方法は、マネージ オブジェクトは常にことに留意して `DWORD`\-固定されているため、複数の列挙型、またはインスタンスの合計サイズは最大ラウンドを常にので違いするためにで小規模な列挙体をパックするインスタンスの他の小さな構造を効果的に必要な `DWORD`です。 + + **✓ は** フラグの列挙型には複数形の名詞または名詞句と単数形の名詞または名詞句と単純な列挙型の名前します。 + + **X のしないで** 拡張 直接します。 + + 特殊な CLR が使用をユーザー定義の列挙体を作成します。 大半のプログラミング言語では、この機能にアクセスできるプログラミングの要素を提供します。 C\# などの `enum` 列挙体を定義するキーワードを使用します。 + + +### フラグ列挙型を設計します。 + **✓ は** 適用、 フラグ列挙体にします。 単純な列挙体にはこの属性は適用されません。 + + **✓ は** ようにする自由にビットごとの OR 演算を使用して、フラグ列挙値に 2 の累乗を使用します。 + + **✓ を検討してください** フラグの組み合わせを使用して通常の特別な列挙値を提供することです。 + + ビットごとの演算は、高度な概念では単純な作業は必要ありません。 このような特殊な値の例に示します。 + + **X 回避** 特定の値の組み合わせが有効なフラグ列挙型を作成します。 + + **X 回避** 値が「すべてのフラグをクリアする」を表すし、次のガイドラインの規定に従って、適切な名前はしない限り、列挙値がゼロのフラグを設定を使用します。 + + **✓ は** フラグの列挙値のゼロ値に名前を `None`します。 フラグ列挙型の値常にということになる"すべてのフラグがクリアされます" + + +### 列挙体に値を追加します。 + 既に出荷した後に、列挙型に値を追加する必要があることを検出することがよくなります。 アプリケーションの互換性の問題がある可能性が新しく追加された値が既存の API から返されるためには品質の低いアプリケーションで、新しい値を正しく処理されない可能性があります。 + + **✓ を検討してください** 互換性に関する小さなリスクに関係なく、列挙型に値を追加します。 + + 列挙型への追加によるアプリケーション互換性に関する実際のデータがある場合は、新旧の値を返す新しい API の追加を検討しを続行する古い値だけが返される以前の API の使用を避けます。 既存のアプリケーションの互換性を維持するようになります。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [型デザインのガイドライン](../../../docs/standard/design-guidelines/type.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/equality-operators.md b/docs/standard/design-guidelines/equality-operators.md new file mode 100644 index 00000000000..2eaca430ad8 --- /dev/null +++ b/docs/standard/design-guidelines/equality-operators.md @@ -0,0 +1,63 @@ +--- +title: "等値演算子 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "クラス ライブラリ デザインのガイドライン [.NET Framework] Equals メソッド" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] 等値演算子" + - "等値演算子 (= =) [.NET Framework]" + - "Equals メソッド" + - "= 演算子 (等値) [.NET Framework]" +ms.assetid: bc496a91-fefb-4ce0-ab4c-61f09964119a +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 等値演算子 +ここではオーバー ロードの等値演算子について説明し、指す `operator==` と `operator!=` 等値演算子とします。 + + **X のしないで** 等値演算子のいずれかのオーバー ロードします。 + + **✓ は** いることを確認 等値演算子は、同じセマンティクスと類似のパフォーマンス特性があるとします。 + + 多くの場合、つまり、この `Object.Equals` 等値演算子はオーバー ロード時に上書きする必要があります。 + + **X 回避** 等値演算子から例外をスローします。 + + たとえば、引数のいずれかがスローする代わりに null の場合は false を返す `NullReferenceException`します。 + +## 値の型で等値演算子 + **✓ は** 等しいかどうかが意味のある場合は、値型で等値演算子をオーバー ロードします。 + + ほとんどのプログラミング言語での既定の実装はありません `operator==` 値型です。 + +## 参照型で等値演算子 + **X 回避** 変更可能な参照型で等値演算子のオーバー ロードします。 + + 多くの言語では、参照型に関する組み込みの等値演算子があります。 組み込み演算子は通常、参照の等価性を実装し、値の等価性を既定の動作が変更されたときに、多くの開発者が驚かれるでしょう。 します。 + + 不変性をより参照の等価性と値の等価性の間の違いに注意をはるかに困難になるために、変更できない参照型の場合この問題が軽減されます。 + + **X 回避** が実装の参照の等価性の場合よりも大幅に遅れる場合は、参照型で等値演算子をオーバー ロードします。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [使用方法のガイドライン](../../../docs/standard/design-guidelines/usage-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/event.md b/docs/standard/design-guidelines/event.md new file mode 100644 index 00000000000..089c71f6898 --- /dev/null +++ b/docs/standard/design-guidelines/event.md @@ -0,0 +1,85 @@ +--- +title: "イベントのデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "前のイベント" + - "イベント [.NET Framework] のデザイン ガイドライン" + - "メンバー デザインのガイドライン、イベント" + - "イベント デザインのガイドラインのイベント ハンドラー [.NET Framework]" + - "後のイベント" + - "署名、イベント処理" +ms.assetid: 67b3c6e2-6a8f-480d-a78f-ebeeaca1b95a +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# イベントのデザイン +イベントは、コールバック \(ユーザー コードを呼び出すために、フレームワークを許可するコンストラクト\) の最もよく使用される形式です。 その他のコールバック機構には、デリゲート、仮想メンバー、およびインターフェイス ベースのプラグインを取得するメンバーが含まれます。 ユーザビリティに関する調査からのデータは、開発者の大部分が使いやすいその他のコールバック メカニズムを使用しているよりも、イベントを使用することを示します。 イベントは、Visual Studio および多くの言語とうまく統合されています。 + + イベントの 2 つのグループがあることを確認することが重要: 前のイベント、および状態が変更された後に発生するイベントと呼ばれるシステムの変更の状態の前に発生したイベントには、後のイベントと呼ばれます。 イベントの前の例としては `Form.Closing`, 、フォームが閉じられる前にこれが発生します。 イベントの後の例としては `Form.Closed`, 、フォームが閉じられた後は、発生します。 + + **✓ は** イベントではなく"fire"や「トリガー」の「生成」という用語を使用して + + **✓ は** を使用して イベント ハンドラーとして使用する新しいデリゲートを手動で作成する代わりにします。 + + **✓ を検討してください** のサブクラスを使用して イベントの引数としてを除いて確信イベントがイベント処理メソッドでは、対象のデータを実行する必要はありませんがいる場合に使用できます、 `EventArgs` を直接入力します。 + + API を使用して、出荷する場合は、 `EventArgs` を直接しないことができます互換性を損なうことがなく、イベントに実行されるように、データを追加します。 サブクラスを使用する場合でもかどうか最初に完全に空ことができます必要なときに、サブクラスにプロパティを追加します。 + + **✓ は** 各イベントを発生させる保護された仮想メソッドを使用します。 これは、構造体、シール クラス、または静的イベントが、封印されていないクラスで静的でないイベントに適用できるのみです。 + + メソッドの目的は、上書きを使用して、イベントを処理する派生クラスの手段を提供します。 オーバーライドは、派生クラスで基本クラス イベントを処理するより柔軟で、高速より自然な方法です。 規則では、メソッドの名前は"On"で起動し、直後に、イベントの名前を付ける。 + + 派生クラスは、そのオーバーライドで、メソッドの基本実装を呼び出していないを選択できます。 正常に動作する基本クラスに必要なメソッドでどのような処理を含めないことでこれを準備します。 + + **✓ は** イベントを発生させるプロテクト メソッドにパラメーターを 1 つを実行します。 + + パラメーターに名前を付ける `e` と、イベント引数クラスとして自動的に入力する必要があります。 + + **X のしないで** 非静的イベントを発生させる場合、送信側として null を渡します。 + + **✓ は** 静的イベントを発生させる場合、送信側として null を渡します。 + + **X のしないで** イベントを発生させるときにイベント データ パラメーターとして null を渡します。 + + 渡す必要があります `EventArgs.Empty` イベント処理メソッドに、データの受け渡ししたくない場合。 開発者は、いない null にするには、このパラメーターを期待しています。 + + **✓ を検討してください** エンド ユーザーで取り消すことができるイベントの発生します。 これは、前のイベントにのみ適用されます。 + + 使用 またはエンドユーザーのイベントをキャンセルできるイベントの引数としてそのサブクラスです。 + +### カスタム イベント ハンドラーのデザイン + 場合がある `EventHandler` 、framework がジェネリックをサポートしないと、CLR の以前のバージョンを使用する必要がある場合など、使用することはできません。 このような場合は、デザインおよびカスタム イベント ハンドラーのデリゲートを作成する必要があります。 + + **✓ は** イベント ハンドラーの void の戻り値の型を使用します。 + + イベント ハンドラーは、おそらく複数のオブジェクト上のメソッドを処理する複数のイベントを呼び出すことができます。 イベント処理メソッドの戻り値が許可された場合は、イベントの呼び出しごとの複数の戻り値があります。 + + **✓ は** を使用して `object` イベント ハンドラーの最初のパラメーターの型とそれを呼び出す `sender`します。 + + **✓ は** を使用して またはそのサブクラスのイベント ハンドラーの 2 番目のパラメーターの型としてそれを呼び出す `e`します。 + + **X のしないで** イベント ハンドラーに 3 つ以上のパラメーターがあります。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [メンバー デザインのガイドライン](../../../docs/standard/design-guidelines/member.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/events-and-callbacks.md b/docs/standard/design-guidelines/events-and-callbacks.md new file mode 100644 index 00000000000..cc2b28f758f --- /dev/null +++ b/docs/standard/design-guidelines/events-and-callbacks.md @@ -0,0 +1,58 @@ +--- +title: "イベントとコールバック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "機能拡張のイベント [.NET Framework]" + - "メソッド [.NET Framework], コールバック" + - "コールバック メソッド" + - "コールバック" +ms.assetid: 48b55c60-495f-4089-9396-97f9122bba7c +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# イベントとコールバック +コールバックはするがデリゲートからユーザー コードにコールバックするためのフレームワーク機能拡張ポイントです。 これらのデリゲートは、メソッドのパラメーターを通じて通常フレームワークに渡されます。 + + イベントは、コールバックのデリゲート \(イベント ハンドラー\) を提供するための便利で一貫した構文をサポートする特殊なケースです。 さらに、Visual Studio のステートメント入力候補および設計者は、イベント ベースの Api を使用してヘルプを提供します。 \(「[イベントのデザイン](../../../docs/standard/design-guidelines/event.md)」を参照\)。 + + **✓ を検討してください** コールバックを使用して、フレームワークによって実行されるカスタム コードを提供できるようにします。 + + **✓ を検討してください** イベントを使用したオブジェクト指向設計を理解することがなくても、フレームワークの動作をカスタマイズできるようにします。 + + **✓ は** 、広い範囲の開発者になじみのある、ステートメント入力候補の Visual Studio に統合されているために、イベントを単純なコールバックよりも優先されます。 + + **X 回避** パフォーマンスが重視される Api でコールバックを使用します。 + + **✓ は** 新しい `Func<...>`, 、`Action<...>`, 、または `Expression<...>` になったコールバック Api を定義するときに、カスタム デリゲートではなく型です。 + + `Func<...>` `Action<...>` 汎用デリゲートを表します。`Expression<...>` コンパイルして、後でも呼び出すことができますが、実行時にできる表します関数定義シリアル化およびリモート プロセスに渡されます。 + + **✓ は** を測定し、使用するパフォーマンスの影響について理解する `Expression<...>`, 、使用する代わりに `Func<...>` と `Action<...>` デリゲート。 + + `Expression<...>` ほとんどの場合と同じ論理的には種類が `Func<...>` と `Action<...>` デリゲート。 主な違いは、デリゲートがローカル処理のシナリオで使用するものであります。式は有益なリモート プロセスまたはコンピューターで式を評価するが適しています。 + + **✓ は** デリゲートを呼び出すことによって任意のコードを実行するかを理解し、セキュリティ、正確性、および互換性の影響を与える可能性です。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [機能拡張のデザイン](../../../docs/standard/design-guidelines/designing-for-extensibility.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/exception-throwing.md b/docs/standard/design-guidelines/exception-throwing.md new file mode 100644 index 00000000000..ca0109f500a --- /dev/null +++ b/docs/standard/design-guidelines/exception-throwing.md @@ -0,0 +1,79 @@ +--- +title: "例外のスロー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "例外のスロー" + - "明示的に例外のスロー" + - "例外はスローされず、設計のガイドライン" +ms.assetid: 5388e02b-52f5-460e-a2b5-eeafe60eeebe +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 例外のスロー +このセクションで説明した例外のスローのガイドラインでは、実行エラーの意味を適切な定義が必要です。 メンバーには、ことはできませんが、実行エラーが発生した \(どのようなメンバー名を意味します\) を実行するように設計します。 たとえば場合、 `OpenFile` メソッドは、開いているファイル ハンドルを呼び出し元に戻すことはできません、実行エラーと考えることができます。 + + ほとんどの開発者が慣れ親しんで除算などの使用状況のエラーを 0 または null 参照例外を使用します。 Framework では、例外は、実行エラーを含むすべてのエラー条件に使用されます。 + + **X のしないで** エラー コードを返します。 + + 例外は、フレームワークにエラーを報告の主要な手段です。 + + **✓ は** 例外をスローして実行の失敗を報告します。 + + **✓ を検討してください** を呼び出して、プロセスを終了して `System.Environment.FailFast` \(.NET Framework 2.0 の機能\)、コードがさらに実行に対して安全ではないような状況が発生すると、例外をスローする代わりにします。 + + **X のしないで** 可能であれば、通常の制御、フローの例外を使用します。 + + システム障害、潜在的な競合状態を持つ操作を除くためユーザーは、例外をスローしないコードを記述できるフレームワークの設計者が Api を設計する必要があります。 たとえば、ユーザーは、例外をスローしないコードを記述できるようにメンバーを呼び出す前に前提条件をチェックする方法を提供できます。 + + 別のメンバーの前提条件の確認に使用するメンバーは、テスト担当者と呼ばし、実際に実行するメンバーは、渡ってと呼ばれます。 + + される場合もあります Tester\-doer パターンが許容できないレベルのパフォーマンスのオーバーヘッドを持つことができます。 このような場合いわゆる Try 解析パターンを考慮する必要があります \(を参照してください [例外とパフォーマンス](../../../docs/standard/design-guidelines/exceptions-and-performance.md) の詳細\)。 + + **✓ を検討してください** パフォーマンスに与える影響の例外をスローします。 1 秒あたり 100 を超える throw レートは、ほとんどのアプリケーションのパフォーマンスに著しい影響を与える可能性があります。 + + **✓ は** ドキュメント メンバーの違反があったため、一般に呼び出し可能なメンバーによってスローされたすべての例外 \(システムの障害\) ではなくコントラクトおよびコントラクトの一部として処理します。 + + コントラクトの一部である例外は、次に 1 つのバージョンから変更しないでください \(つまり、例外の種類を変更しないで、および新しい例外を追加してはならない\)。 + + **X のしないで** いるかどうかをスローをパブリック メンバーに基づいていくつかのオプションです。 + + **X のしないで** 戻り値として例外を返すパブリック メンバーまたは `out` パラメーター。 + + それらをスローする代わりに、パブリック Api からの例外を返す例外ベースのエラー報告の利点の多くが果たせなくなります。 + + **✓ を検討してください** 例外ビルダー メソッドを使用します。 + + 一般的な場所から同一の例外をスローします。 コードの肥大化を回避するには、例外を作成し、それらのプロパティを初期化するヘルパー メソッドを使用します。 + + また、例外をスローするメンバーが取得されないインライン展開されます。 Throw ステートメント ビルダー内を移動すると、メンバーのインライン化すことができます。 + + **X のしないで** 例外フィルター ブロックから例外をスローします。 + + 例外フィルターでは、例外が発生したときに、CLR で例外をキャッチし、フィルターが false を返します。 この動作は、フィルターが実行し、明示的に false を返すことを区別することはできませんし、つまり、デバッグが困難にします。 + + **X 回避** 明示的に finally ブロックから例外をスローします。 暗黙的にスローされるスローされる例外をスローするメソッドを呼び出すことが容認あります。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [例外のデザイン ガイドライン](../../../docs/standard/design-guidelines/exceptions.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/exceptions-and-performance.md b/docs/standard/design-guidelines/exceptions-and-performance.md new file mode 100644 index 00000000000..c134654b9e2 --- /dev/null +++ b/docs/standard/design-guidelines/exceptions-and-performance.md @@ -0,0 +1,87 @@ +--- +title: "例外とパフォーマンス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "tester-doer パターン" + - "TryParse パターン" + - "例外のスロー" + - "パフォーマンスの例外" + - "パフォーマンスの例外をスロー" +ms.assetid: 3ad6aad9-08e6-4232-b336-0e301f2493e6 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 例外とパフォーマンス +例外に関連する一般的な懸念事項の 1 つは、定期的に失敗するコードの例外を使用している場合、実装のパフォーマンスがされる許容です。 これはもっともです。 メンバーは、例外をスローするときに、パフォーマンスが極端に遅くにできます。 ただし、エラー コードの使用を許可しない例外のガイドラインに厳密に準拠しつつ、良好なパフォーマンスを実現することができます。 このセクションで説明した 2 つのパターンでは、これを行う方法を提案します。 + + **X のしないで** エラー コードを使用して、例外がパフォーマンスに悪影響を及ぼす影響する問題があるためです。 + + パフォーマンスを向上させる Tester\-doer パターンまたは Try 解析パターンは、次の 2 つのセクションで説明されているのいずれかを使用することができます。 + +## Tester\-doer パターン + 場合があります、メンバーを 2 つに分割することにより、例外のスローを持つメンバーのパフォーマンスを向上することができます。 見て、 のメソッド、 インターフェイスです。 + +``` +ICollection numbers = ... +numbers.Add(1); +``` + + メソッド `Add` コレクションは読み取り専用の場合にスローします。 これは、メソッドの呼び出しが多くの場合、失敗を想定している場所のシナリオでパフォーマンス問題であることができます。 問題を緩和する方法の 1 つは、値を追加する前に、コレクションが書き込み可能かどうかをテストします。 + +``` +ICollection numbers = ... +... +if(!numbers.IsReadOnly){ + numbers.Add(1); +} +``` + + プロパティであるこの例では、条件をテストに使用するメンバー `IsReadOnly`, 、テスト担当者と呼びます。 スロー元可能性のある操作を実行するために使用するメンバー、 `Add` 例では、メソッドは、渡ってと呼ばれます。 + + **✓ を検討してください** Tester\-doer パターンに例外をスローするメンバーの共通のシナリオのパフォーマンスの問題を回避する例外に関連します。 + +## Try 解析パターン + 非常に高く、パフォーマンスが重視される Api では、前のセクションで説明した Tester\-doer パターンよりもさらに高速のパターンを使用してください。 メンバーのセマンティクスの一部の場合、適切に定義されたテストを作成するメンバーの名前を調整するためのパターンを呼び出します。 たとえば、 を定義、 文字列の解析に失敗した場合に例外をスローするメソッドです。 対応するも定義されて を解析しようとするには false が返されます解析は失敗し、正常に解析を使用して、結果を返す場合、 `out` パラメーター。 + +``` +public struct DateTime { + public static DateTime Parse(string dateTime){ + ... + } + public static bool TryParse(string dateTime, out DateTime result){ + ... + } +} +``` + + このパターンを使用する場合は、厳密な用語で try 機能を定義する必要があります。 メンバーは、適切に定義された try 以外の何らかの理由で失敗した場合、メンバーが対応する例外をスローする必要があります。 + + **✓ を検討してください** Try 解析パターンに例外をスローするメンバーの共通のシナリオのパフォーマンスの問題を回避する例外に関連します。 + + **✓ は** このパターンを実装するメソッドにプレフィックス"Try"とブール値の戻り値の型を使用します。 + + **✓ は** Try 解析パターンを使用する各メンバーの例外のスローを持つメンバーを提供します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [例外のデザイン ガイドライン](../../../docs/standard/design-guidelines/exceptions.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/exceptions.md b/docs/standard/design-guidelines/exceptions.md new file mode 100644 index 00000000000..bc547945687 --- /dev/null +++ b/docs/standard/design-guidelines/exceptions.md @@ -0,0 +1,41 @@ +--- +title: "例外のデザイン ガイドライン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "例外 [.NET Framework] のデザイン ガイドライン" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] 例外" + - "例外のエラー [.NET Framework]" + - "エラーの報告" +ms.assetid: bc177b2f-7528-4ae4-83db-aacfb04b86d0 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 例外のデザイン ガイドライン +例外処理には、エラーの戻り値ベースのレポートに比べて多くの利点があります。 適切なフレームワークの設計では、アプリケーション開発者は例外の恩恵を受け、ことができます。 ここでは、例外の利点について説明し、それらを効果的に使用するためのガイドラインを示します。 + +## このセクションの内容 + [例外のスロー](../../../docs/standard/design-guidelines/exception-throwing.md) + [標準の例外の型を使用します。](../../../docs/standard/design-guidelines/using-standard-exception-types.md) + [例外とパフォーマンス](../../../docs/standard/design-guidelines/exceptions-and-performance.md) + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/extension-methods.md b/docs/standard/design-guidelines/extension-methods.md new file mode 100644 index 00000000000..de95fd9e173 --- /dev/null +++ b/docs/standard/design-guidelines/extension-methods.md @@ -0,0 +1,61 @@ +--- +title: "拡張メソッド | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 5de945cb-88f4-49d7-b0e6-f098300cf357 +caps.latest.revision: 4 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 4 +--- +# 拡張メソッド +拡張メソッドは、言語の機能により、インスタンス メソッドの呼び出しの構文を使用して呼び出される静的メソッドです。 これらのメソッドは、パラメーターを操作するメソッドは、インスタンスを表す 1 つ以上を取得する必要があります。 + + このような拡張メソッドを定義するクラスは、「スポンサー」クラスと呼ばれ、静的として宣言する必要があります。 拡張メソッドを使用するには、スポンサー クラスを定義する名前空間をインポートいずれかの必要があります。 + + **X 回避** いないこと、特にお持ちでない型で拡張メソッドを定義します。 + + 型のソース コードを所有している場合は、通常のインスタンス メソッドを代わりに使用を検討してください。 所有していない場合に、メソッドを追加するには、十分に注意します。 拡張メソッドを多めに使用では、これらのメソッドがあるように設計されていない種類の Api に混乱が生じる可能性があります。 + + **✓ を検討してください** で、次のシナリオのいずれかの拡張メソッドを使用します。 + +- ヘルパーを提供するには、コア インターフェイスの観点から機能を言った場合、インターフェイスのすべての実装に関連する機能を記述できます。 具体的な実装は、インターフェイスそれ以外の場合に割り当てることができないためにです。 たとえば、 `LINQ to Objects` 演算子は、すべての拡張メソッドとして実装されます 型です。 このため、いずれか `IEnumerable<>` 実装は、LINQ で自動的に有効にします。 + +- インスタンス メソッドがいくつかの型への依存関係が、このような依存関係をどのように導入するときに、依存関係管理ルールが分割されます。 依存関係など 望ましいとは言えませんので `String.ToUri()` を返すインスタンス メソッド `System.Uri` 依存関係管理の観点から間違ったデザインになります。 静的拡張メソッド `Uri.ToUri(this string str)` 返す `System.Uri` 程度設計を向上するようになります。 + + **X 回避** の拡張メソッドを定義する です。 + + VB のユーザーは、拡張メソッドの構文を使用してオブジェクト参照にこのようなメソッドを呼び出すことができるされません。 VB が vb の場合は参照を宣言するオブジェクトが遅延する上のすべてのメソッド呼び出しを強制的にバインドされているため、このようなメソッドの呼び出しをサポートしていません \(と呼ばれる実際のメンバーは実行時に決定されます\)、拡張メソッドへのバインドはコンパイル時 \(事前バインド\) に決まります。 + + ガイドラインは、同じバインド動作が存在するその他の言語に適用されることに注意してください。 または、拡張メソッドがサポートされていません。 + + **X のしないで** インターフェイスにメソッドの追加や管理の依存関係がある場合を除いて、拡張の型と同じ名前空間の拡張メソッドを配置します。 + + **X 回避** 異なる名前空間にある場合でも、同じシグネチャを持つ 2 つ以上の拡張メソッドを定義します。 + + **✓ を検討してください** 、型がインターフェイスで、拡張メソッドは、ほとんどまたはすべての状況で使用する場合、拡張の型と同じ名前空間に拡張メソッドを定義します。 + + **X のしないで** 通常他の機能に関連付けられている名前空間の機能を実装する拡張メソッドを定義します。 代わりに、所属する機能に関連付けられている名前空間で定義します。 + + **X 回避** 拡張メソッド \(たとえば、「拡張」\) に専用の名前空間の汎用名前付けします。 わかりやすい名前を使用して \(たとえば、「ルーティング」\) 代わりにします。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [メンバー デザインのガイドライン](../../../docs/standard/design-guidelines/member.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/field.md b/docs/standard/design-guidelines/field.md new file mode 100644 index 00000000000..2bfbe191813 --- /dev/null +++ b/docs/standard/design-guidelines/field.md @@ -0,0 +1,57 @@ +--- +title: "フィールドのデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "フィールドのデザイン ガイドライン" + - "読み取り専用フィールド" + - "メンバー デザインのガイドライン、フィールド" +ms.assetid: 7cb4b0f3-7a10-4c93-b84d-733f7134fcf8 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# フィールドのデザイン +カプセル化の原理は、オブジェクト指向設計に最も重要な概念の 1 つです。 この原則は、オブジェクト内に格納されているデータはそのオブジェクトにのみアクセスできることを示しています。 + + 原則を解釈する便利な方法は以外のコードを型のメンバーを損なうことがなくその型 \(名前または種類の変更\) のフィールドへの変更ができるように、型を設計する必要があります。 すぐに、この解釈は、プライベートのすべてのフィールドである必要がありますを意味します。 + + 必要であるため、このようなフィールドほとんど定義では、決してを変更する、この厳密な制限から定数と静的な読み取り専用フィールドを除外しました + + **X のしないで** パブリックまたはプロテクト インスタンス フィールドを提供します。 + + パブリックまたはプロテクトにする代わりにフィールドにアクセスするためのプロパティを指定する必要があります。 + + **✓ は** 定数フィールドは決して変化しない定数に使用します。 + + コンパイラは、const フィールドの値を直接コードを呼び出す焼き付けます。 そのため、const 値は、互換性の問題の危険を回避しない変更できます。 + + **✓ は** のパブリック静的を使用して `readonly` フィールドの定義済みのオブジェクト インスタンス。 + + 型の定義済みのインスタンスがある場合により読み取り専用で、型自体の静的フィールドをパブリックとしてと宣言します。 + + **X のしないで** に変更可能な型のインスタンスを割り当てる `readonly` フィールドです。 + + 変更可能な型は、オブジェクトのインスタンスは後で変更できるインスタンスの型です。 たとえば、配列、ほとんどのコレクション、およびストリームは変更可能な型が、 , 、, 、および はすべて不変です。 参照型のフィールドに対する読み取り専用修飾子には、置き換えられるのフィールドに格納されているインスタンスができなくなりますが、フィールドのインスタンス データのインスタンスを変更するメンバーを呼び出すことによって変更を妨げることはできません。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [メンバー デザインのガイドライン](../../../docs/standard/design-guidelines/member.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/general-naming-conventions.md b/docs/standard/design-guidelines/general-naming-conventions.md new file mode 100644 index 00000000000..b5b8e2cb54d --- /dev/null +++ b/docs/standard/design-guidelines/general-naming-conventions.md @@ -0,0 +1,113 @@ +--- +title: "一般的な名前付け規則 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "名前 [.NET Framework] の競合" + - "型名の競合" + - "言語固有の型名" + - "名前付けのガイドラインについては、名前 [.NET Framework]" + - "名前 [.NET Framework] の省略形" + - "省略形名前付けのガイドライン" + - "頭字語の名前付けのガイドライン" + - "ハンガリアン記法" + - "型名の名前 [.NET Framework]" + - "頭字語の名前 [.NET Framework]" +ms.assetid: d3a77ea1-75d2-4969-a8c3-3e1e3e1aaedc +caps.latest.revision: 18 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 18 +--- +# 一般的な名前付け規則 +このセクションでは、一般的な名前付け規則単語の選択に関連する言語固有の名前を使用しないようにする方法の省略形と頭字語、および推奨事項の使用に関するガイドラインについて説明します。 + +## 単語の選択 + **✓ は** 読みやすい識別子の名前を選択します。 + + という名前のプロパティなど `HorizontalAlignment` 英語 \- よりも読みやすく、 `AlignmentHorizontal`です。 + + **✓ は** 簡潔さよりも読みやすさを優先します。 + + プロパティ名 `CanScrollHorizontally` よりも優れて `ScrollableX` \(x 軸にあいまいな参照\)。 + + **X のしないで** アンダー スコア、ハイフン、またはその他の英数字以外の文字を使用します。 + + **X のしないで** ハンガリアン記法を使用します。 + + **X 回避** 広くのキーワードと競合する識別子を使用してプログラミング言語を使用します。 + + ルール 4 の共通言語仕様 \(CLS\)、に従って準拠のすべての言語は、その言語のキーワードを識別子として使用する名前付きの項目にアクセスできるようにするメカニズムを提供する必要があります。 C\# の場合、たとえば、使用して、ここではエスケープ メカニズムとして @ です。 ただしよりも、エスケープ シーケンスでメソッドを使用するよりずっと困難であるために、一般的なキーワードを回避することをお勧めではまだです。 + +## 省略形と頭字語を使用します。 + **X のしないで** 識別子名の一部としての省略形または短縮形を使用します。 + + たとえば、使用して `GetWindow` なく `GetWin`です。 + + **X のしないで** 広く受け入れられているとは、必要な場合にのみの場合でもある頭字語を使用します。 + +## 言語固有の名前を回避します。 + **✓ は** 型の名前に言語固有のキーワードではなく、意味的にわかりやすい名前を使用します。 + + たとえば、 `GetLength` よりも優れた名前は、 `GetInt`です。 + + **✓ は** 識別子には、その型以外の意味があるないときは、まれなケースで言語固有の名前ではなく、汎用の CLR 型名を使用します。 + + 変換するメソッドなど、 はという名前で `ToInt64`, ではなく、 `ToLong` \(ため 、c\# の CLR 名である\-特定のエイリアス `long`\)。 次の表は、CLR 型名 \(およびその c\#、Visual Basic および C\+\+ の対応する型名\) を使用していくつかの基本データ型を表示します。 + +|C\#|Visual Basic|C\+\+|CLR| +|---------|------------------|-----------|---------| +|**sbyte**|**SByte**|**char**|**SByte**| +|**byte**|**Byte**|**unsigned char**|**Byte**| +|**short**|**短い名前**|**short**|**Int16**| +|**ushort**|**UInt16**|**unsigned short**|**UInt16**| +|**int**|**整数**|**int**|**Int32**| +|**uint**|**UInt32**|**unsigned int**|**UInt32**| +|**long**|**Long**|**\_\_int64**|**Int64**| +|**ulong**|**UInt64**|**unsigned \_\_int64**|**UInt64**| +|**float**|**Single**|**float**|**Single**| +|**double**|**倍精度浮動小数点型**|**double**|**倍精度浮動小数点型**| +|**bool**|**ブール型**|**bool**|**ブール型**| +|**char**|**Char**|**wchar\_t**|**Char**| +|**string**|**String**|**String**|**String**| +|**object**|**オブジェクト**|**オブジェクト**|**オブジェクト**| + + **✓ は** 共通名を使用して `value` または `item`, 、繰り返し型の名前識別子が特別な意味を持たないし、パラメーターの型が重要ではないまれなケースではなく。 + +## 既存の Api の新しいバージョンの名前を付ける + **✓ は** 既存の API の新しいバージョンを作成するときに、古い API のような名前を使用します。 + + これにより、Api の間のリレーションシップを強調表示します。 + + **✓ は** 既存の API の新しいバージョンを示すプレフィックスではなく、サフィックスの追加を希望します。 + + これは、ドキュメントについてを参照するときに検出、コンピュータは Intellisense を使用するか。 古いバージョンの API はほとんどのブラウザーおよび Intellisense は、アルファベット順に識別子を表示するために、新しい Api の近くに整理されます。 + + **✓ を検討してください** サフィックスまたはプレフィックスを追加する代わりに、まったく新しいが意味のある識別子を使用します。 + + **✓ は** 数値のサフィックスを使用して、既存の API の名前 \(つまり、業界標準である\) 場合は、意味のある唯一の名前は、追加、意味のある場合はサフィックス \(または名前を変更する\)、適切なオプション場合は特に、既存の API の新しいバージョンを示します。 + + **X のしないで** "Ex"\(または類似\) を使用して、同じ API の以前のバージョンを区別するために識別子のサフィックスです。 + + **✓ は** 32 ビット整数ではなく、64 ビット整数 \(長整数\) を操作する Api のバージョンを導入するときは、「64」サフィックスを使用します。 のみ、既存の 32 ビット API が存在するときに、この方法を実行する必要があります。64 ビット版のみで新しい Api のことを実行しません。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [名前付けのガイドライン](../../../docs/standard/design-guidelines/naming-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/guidelines-for-collections.md b/docs/standard/design-guidelines/guidelines-for-collections.md new file mode 100644 index 00000000000..475401b8494 --- /dev/null +++ b/docs/standard/design-guidelines/guidelines-for-collections.md @@ -0,0 +1,143 @@ +--- +title: "コレクションに関するガイドライン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 297b8f1d-b11f-4dc6-960a-8e990817304e +caps.latest.revision: 4 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 4 +--- +# コレクションに関するガイドライン +任意の型が共通の特性を持つオブジェクトのグループを操作する際に、コレクションを見なすことができます。 実装するには、このような型に適したはほぼ必ず または , 、ここでおのみ考慮されるようにコレクションには、これらのインターフェイスの一方または両方を実装する型。 + + **X のしないで** のパブリック Api で弱く型指定されたコレクションを使用します。 + + すべての戻り値およびコレクションのアイテムを表すパラメーターの型は、\(これは、コレクションのパブリック メンバーにのみ適用されます\) の基本型の正確な項目の種類にする必要があります。 + + **X のしないで** を使用して または パブリック Api のです。 + + これらの型は、パブリック Api ではなく、内部の実装で使用するためのデータ構造です。`List` パフォーマンスと電力消費の Api と柔軟性 cleanness を犠牲に最適です。 たとえば、返された場合 `List`, はこれまでできませんクライアント コードは、コレクションを変更する場合は、通知を受信することです。 また、 `List` など多くのメンバーの公開 , が役に立たないか多くのシナリオに該当します。 次の 2 つのセクションでは、パブリック Api の使用専用に設計された型 \(抽象化\) について説明します。 + + **X のしないで** を使用して `Hashtable` または `Dictionary` パブリック Api のです。 + + これらの型は、内部の実装で使用するためのデータ構造です。 パブリック Api を使用する必要があります , 、`IDictionary `, 、またはいずれかまたは両方のインターフェイスを実装するカスタム型です。 + + **X のしないで** を使用して , 、, 、またはその他の型以外の戻り値の型として実装して、これらのインターフェイスのいずれかを `GetEnumerator` メソッドです。 + + 型以外の場合、メソッドから列挙子を返す `GetEnumerator` では使用できません、 `foreach` ステートメントです。 + + **X のしないで** 両方を実装する `IEnumerator` と `IEnumerable` 同じ型にします。 非ジェネリック インターフェイスにも当てはまります `IEnumerator` と `IEnumerable`です。 + +## コレクションのパラメーター + **✓ は** 型の専門性の最も可能性のあるパラメーターの種類として使用します。 ほとんどのメンバーをコレクションのパラメーターを使用すること、 `IEnumerable` インターフェイスです。 + + **X 回避** を使用して または にアクセスするだけのパラメーターとして、 `Count` プロパティです。 + + 代わりに、 `IEnumerable` または `IEnumerable` して動的にオブジェクトが実装されているかどうかを確認する `ICollection` または `ICollection`です。 + +## コレクションのプロパティと戻り値 + **X のしないで** 設定可能なコレクション プロパティを提供します。 + + ユーザーは、まずコレクションを消去して、新しい内容を追加し、コレクションの内容を置き換えることができます。 コレクション全体を置き換える一般的なシナリオがある場合は、提供することを検討してください、 `AddRange` コレクション メソッド。 + + **✓ は** を使用して `Collection` またはそのサブクラスの `Collection` プロパティまたは戻り値を表す読み取り\/書き込みのコレクション。 + + 場合 `Collection` いくつかの要件を満たしていません \(など、コレクションは実装する必要があります \) を実装することによってカスタム コレクションを使用して `IEnumerable`, 、`ICollection`, 、または です。 + + **✓ は** を使用して , のサブクラス `ReadOnlyCollection`, 、まれなケースで、または `IEnumerable` プロパティまたは戻り値を表す読み取り専用コレクション。 + + 一般に、使用 `ReadOnlyCollection`します。 いくつかの要件を満たしていない場合 \(など、コレクションは実装する必要があります `IList`\) を実装することによってカスタム コレクションを使用して `IEnumerable`, 、`ICollection`, 、または `IList`です。 カスタムの読み取り専用コレクションを実装する場合は、実装 `ICollection.ReadOnly` false を返します。 + + あるか、唯一のシナリオをサポートすることが順方向専用のイテレーションであることを確認する場合、単に使用できます `IEnumerable`します。 + + **✓ を検討してください** コレクションを直接使用する代わりにジェネリックの基本コレクションのサブクラスを使用します。 + + これにより、優れた名前し基本コレクション型ではないヘルパー メンバーを追加するためです。 これは、特に高水準の Api に該当します。 + + **✓ を検討してください** のサブクラスを返す `Collection` または `ReadOnlyCollection` から非常に一般的に使用されるメソッドとプロパティ。 + + これによりするヘルパー メソッドを追加またはコレクションの実装を将来を変更することが可能です。 + + **✓ を検討してください** コレクションに格納された項目が一意キーを持つ場合は、キー付きのコレクションを使用する \(名前、Id などです。\)。 キー付きコレクションは、整数値とキーの両方でインデックスを作成できるとを継承して実装は通常コレクション `KeyedCollection`します。 + + 通常、キー付きのコレクションは、メモリ フット プリントが大きくし、メモリのオーバーヘッドが、キーの利点を上回る場合使用しないでです。 + + **X のしないで** プロパティのコレクションまたはコレクションを返すメソッドから null 値を返します。 代わりに、空のコレクションまたは空の配列を返します。 + + 一般的な規則は、null および空の \(項目が 0\) コレクション、配列があることと同じ扱われます。 + +### スナップショットとライブのコレクション + 時刻である時点の状態を表すコレクションは、スナップショットのコレクションと呼ばれます。 たとえば、データベース クエリから返された行を含むコレクションには、スナップショットがあります。 常に現在の状態を表すコレクションは、ライブのコレクションと呼ばれます。 たとえば、一連の `ComboBox` 項目は、ライブのコレクション。 + + **X のしないで** プロパティからのスナップショットのコレクションを返します。 プロパティは、ライブのコレクションを返す必要があります。 + + プロパティの getter が非常に軽量な操作をする必要があります。 スナップショットを返すには、o \(n\) 操作の内部コレクションのコピーを作成する必要があります。 + + **✓ は** スナップショット コレクションまたはライブのいずれかを使用して `IEnumerable` \(またはそのサブタイプ\) は揮発性のコレクションを表すため \(つまり、変更可能なコレクションを明示的に変更することがなく\)。 + + 一般に、共有リソース \(ディレクトリ内のファイルなど\) を表すすべてのコレクションは、揮発性です。 このようなコレクションは、非常に困難か不可能実装は、単に前方参照専用の列挙子にしない限り、ライブのコレクションとして実装するにです。 + +## 配列またはコレクションの選択 + **✓ は** コレクションを配列よりも優先されます。 + + コレクションは、内容を制御するため、時間の経過と共に進化させることができますおよびがより使いやすくします。 さらに、読み取り専用のシナリオの配列の使用はお勧めできません、配列の複製のコストが非常に大きいためです。 使いやすさの調査によると、一部の開発者と感じるユーザー コレクション ベースの Api を使用します。 + + ただし、低レベルの Api を開発する場合、読み取り\/書き込みシナリオの配列を使用する方がよい場合があります。 配列である、メモリの使用量、ワーキング セットを軽減して、ランタイムが最適化されるため、配列内の要素へのアクセスが高速化します。 + + **✓ を検討してください** 低レベルの Api で配列を使用する、メモリ消費量を最小限に抑え、パフォーマンスを最大化します。 + + **✓ は** バイトのコレクションではなくバイト配列を使用します。 + + **X のしないで** プロパティをプロパティの getter を呼び出すたびに新しい配列 \(内部配列のコピーなど\) を返す必要がある場合は、プロパティの配列を使用します。 + +## カスタム コレクションを実装します。 + **✓ を検討してください** から継承する `Collection`, 、`ReadOnlyCollection`, 、または `KeyedCollection` 新しいコレクションを設計するとき。 + + **✓ は** 実装 `IEnumerable` 新しいコレクションを設計するとき。 実装を検討 `ICollection` も `IList` 理にかなっています。 + + このようなカスタム コレクションを実装するには場合、によって確立された API パターンに従う `Collection` と `ReadOnlyCollection` 限り近くにします。 つまり、同じメンバーを明示的に実装する、これら 2 つのコレクションの名前となどのように、パラメーターの名前します。 + + **✓ を検討してください** 非ジェネリック コレクション インターフェイスを実装する \(`IList` と `ICollection`\) 場合は、コレクションは多くの場合する Api に渡される入力としてこれらのインターフェイスを取得します。 + + **X 回避** 型に、コレクションの概念に関係のない複雑な Api でコレクション インターフェイスを実装します。 + + **X のしないで** などの非ジェネリックの基本コレクションから継承 `CollectionBase`します。 使用 `Collection`, 、`ReadOnlyCollection`, 、および `KeyedCollection` 代わりにします。 + +### カスタム コレクションの名前を付ける + コレクション \(型を実装する `IEnumerable`\) 主に 2 つの理由が作成されます: 既存のデータ構造とは異なるパフォーマンス特性の構造に固有の操作と多くの場合は、新しいデータ構造を作成するには \(1\) \(など , 、, 、\)、および特定の項目のセットを保持するための特殊なコレクションを作成するには \(2\) \(など \)。 データ構造は、アプリケーションやライブラリの内部の実装で最もよく使用されます。 専用コレクションは、\(プロパティおよびパラメーターの型\) としての Api で公開するには、主にします。 + + **✓ は** を実装する抽象化の名前に「辞書」サフィックスを使用して `IDictionary` または `IDictionary`です。 + + **✓ は** を実装する型の名前に「コレクション」サフィックスを使用 `IEnumerable` \(またはその子孫のいずれかの\) 項目のリストを表すとします。 + + **✓ は** カスタム データ構造に適切なデータ構造の名前を使用します。 + + **X 回避** コレクションの抽象化の名前に"LinkedList"または「ハッシュ」などの特定の実装を暗に示してのサフィックスを使用します。 + + **✓ を検討してください** コレクションが付いている項目の種類の名前を付けることです。 たとえば、型の項目を格納するコレクション `Address` \(実装 `IEnumerable
`\) はという名前で `AddressCollection`します。 プレフィックス"I"項目の種類が、インターフェイスの場合は、項目の種類を省略できます。 したがって、一連の 項目を呼び出すことができる `DisposableCollection`です。 + + **✓ を検討してください** 、対応する書き込み可能なコレクションを追加する場合や、フレームワークに既に存在する場合に、読み取り専用のコレクション名に"ReadOnly"プレフィックスを使用します。 + + たとえば、文字列の読み取り専用コレクションを呼び出す必要があります `ReadOnlyStringCollection`します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [使用方法のガイドライン](../../../docs/standard/design-guidelines/usage-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/index.md b/docs/standard/design-guidelines/index.md new file mode 100644 index 00000000000..3b23b2c3519 --- /dev/null +++ b/docs/standard/design-guidelines/index.md @@ -0,0 +1,64 @@ +--- +title: "Framework デザイン ガイドライン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - ".NET Framework クラス ライブラリのライブラリ" + - "クラス ライブラリ デザイン ガイドライン [.NET Framework]" + - "クラス ライブラリ デザインのガイドライン [.NET Framework]" +ms.assetid: 5fbcaf4f-ea2a-4d20-b0d6-e61dee202b4b +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# Framework デザイン ガイドライン +このセクションでは、ライブラリを拡張し、.NET Framework と対話するをデザインのガイドラインを示します。 目標は、ライブラリの設計者が開発に使用するプログラミング言語とは独立統一されたプログラミング モデルを提供することにより、API の一貫性と使いやすさをことを確認のためです。 .NET Framework を拡張するクラスやコンポーネントを開発する際に、これらのデザイン ガイドラインに従うことをお勧めします。 一貫性のないライブラリ デザイン悪影響を及ぼす開発者の生産性に影響することはお導入します。 + + ガイドラインは、条件付け簡単な推奨方法として構成 `Do`, 、`Consider`, 、`Avoid`, 、および `Do not`です。 次のガイドラインは、さまざまなソリューション間のトレードオフを理解するクラス ライブラリのデザイナーを支援するものです。 優れたライブラリ デザインではこれらのデザイン ガイドラインに違反することが必要とする状況である可能性があります。 このような場合はまれと、明確で有利な決定の理由は、重要です。 + + 次のガイドラインがの著書から抜粋した *Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリ \(第 2 版\) 用のパターン*, は Cwalina、Brad エイブラムスによるします。 + +## このセクションの内容 + [名前付けのガイドライン](../../../docs/standard/design-guidelines/naming-guidelines.md) + アセンブリ、名前空間、型、およびクラス ライブラリ内のメンバーの名前付けのガイドラインを提供します。 + + [型デザインのガイドライン](../../../docs/standard/design-guidelines/type.md) + 静的な抽象クラス、インターフェイス、列挙体、構造体、およびその他の種類を使用するためのガイドラインを提供します。 + + [メンバー デザインのガイドライン](../../../docs/standard/design-guidelines/member.md) + 設計とプロパティ、メソッド、コンス トラクター、フィールド、イベント、演算子、およびパラメーターの使用に関するガイドラインを提供します。 + + [機能拡張のデザイン](../../../docs/standard/design-guidelines/designing-for-extensibility.md) + イベントや仮想メンバーは、コールバック関数を使用して、サブクラス化などの機能拡張機構について説明し、フレームワークの要件に最適なメカニズムを選択する方法を説明します。 + + [例外のデザイン ガイドライン](../../../docs/standard/design-guidelines/exceptions.md) + デザイン、スロー、および例外をキャッチの設計ガイドラインについて説明します。 + + [使用方法のガイドライン](../../../docs/standard/design-guidelines/usage-guidelines.md) + 配列、属性、およびコレクションなどの一般的な型を使用して、シリアル化のサポート、等値演算子のオーバー ロードするためのガイドラインについて説明します。 + + [一般的な設計パターン](../../../docs/standard/design-guidelines/common-design-patterns.md) + 選択して、依存関係プロパティと、dispose パターンを実装するためのガイドラインを提供します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [概要](../../../docs/framework/get-started/overview.md) + [.NET Framework のロードマップ](http://msdn.microsoft.com/ja-jp/0b46b7c6-9163-4f99-8e58-0d1ee7da8c67) + [開発ガイド](../../../docs/framework/development-guide.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/interface.md b/docs/standard/design-guidelines/interface.md new file mode 100644 index 00000000000..cce78530a44 --- /dev/null +++ b/docs/standard/design-guidelines/interface.md @@ -0,0 +1,63 @@ +--- +title: "インターフェイスのデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "インターフェイス [.NET Framework] のデザイン ガイドライン" + - "型のデザインのガイドライン、インターフェイス" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] インターフェイス" +ms.assetid: a016bd18-6710-4358-9438-9f190a295392 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# インターフェイスのデザイン +ほとんどの Api は、クラスと構造体を使用して、最適なモデル化、またはインターフェイスがより適切な唯一のオプションの場合もあります。 + + CLR は多重継承をサポートしていません \(つまり、CLR クラスできない複数の基本クラスから継承\) が、基本クラスから継承するだけでなく、1 つまたは複数のインターフェイスを実装する型。 したがって、インターフェイスは、多重継承の効果を実現するためによく使用されます。 たとえば、 インターフェイスにより、参加する継承階層の独立した disposability をサポートする型です。 + + どの定義で、インターフェイスは、適切なその他の状況では、いくつかの値の型を含むいくつかの種類によってサポートされる共通のインターフェイスを作成するのにです。 値型が以外の型から継承できない , 、インターフェイスを実装することができますは、共通の基本型を提供するためには、唯一のオプションは、インターフェイスを使用しています。 + + **✓ は** 一部共通の API を値型を含む一連の型でサポートする必要がある場合は、インターフェイスを定義します。 + + **✓ を検討してください** 既に別の型から継承した型でその機能をサポートする必要がある場合は、インターフェイスを定義します。 + + **X 回避** マーカー インターフェイス \(メンバーを持たないインターフェイス\) を使用します。 + + 特定の特性 \(マーカー\) されているクラスをマークする必要がある場合は、一般に、インターフェイスではなく、カスタム属性を使用します。 + + **✓ は** インターフェイスの実装は、少なくとも 1 つの型を提供します。 + + これにより、インターフェイスの設計を検証します。 たとえば、 の実装には、 インターフェイスです。 + + **✓ は** を定義する各インターフェイスを使用するには、少なくとも 1 つの API を提供 \(パラメーターやプロパティとして、インターフェイスを取得するメソッドは、インターフェイスとして型指定された\)。 + + これにより、インターフェイスのデザインを検証します。 たとえば、 消費、 インターフェイスです。 + + **X のしないで** 以前に出荷されたインターフェイスにメンバーを追加します。 + + この操作と、インターフェイスの実装が損なわします。 バージョン管理の問題を回避するために、新しいインターフェイスを作成する必要があります。 + + これらのガイドライン」に記載されている状況以外でマネージ コードの再利用可能なライブラリをデザイン インターフェイスではなく、クラスを選択してください、一般に。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [型デザインのガイドライン](../../../docs/standard/design-guidelines/type.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/member-overloading.md b/docs/standard/design-guidelines/member-overloading.md new file mode 100644 index 00000000000..a23442da24c --- /dev/null +++ b/docs/standard/design-guidelines/member-overloading.md @@ -0,0 +1,73 @@ +--- +title: "メンバーのオーバー ロード | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "既定の引数" + - "オーバー ロードされたメンバー [.NET Framework]" + - "オーバー ロード メンバーのデザイン ガイドライン [.NET Framework]" + - "オーバーロードされたメンバー" + - "メンバーの署名" +ms.assetid: 964ba19e-8b94-4b5b-b1e3-5a0b531a0bb1 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# メンバーのオーバー ロード +メンバーのオーバー ロードでは、数やパラメーターの種類においてのみ異なる場合、同じ名前が、同じ型に 2 つ以上のメンバーを作成することを意味します。 などの次に、 `WriteLine` メソッドはオーバー ロードします。 + +``` +public static class Console { + public void WriteLine(); + public void WriteLine(string value); + public void WriteLine(bool value); + ... +} + +``` + + メソッド、コンス トラクター、およびインデックス付きプロパティは、パラメーターを持つことができます、ためメンバーのみがオーバー ロードできます。 + + オーバー ロードでは、使いやすさ、生産性、および再利用可能なライブラリの読みやすさを向上させるための最も重要な手法の 1 つです。 パラメーターの数のオーバー ロードにより、コンス トラクターおよびメソッドの単純なバージョンを提供できます。 パラメーターの型のオーバー ロードにより、さまざまな種類の選択されたセットに対して同じ操作を実行するメンバーに対して同じメンバー名を使用できます。 + + **✓ は** 短いオーバー ロードで使用される既定値を示すためにわかりやすいパラメーター名を使用しようとしています。 + + **X 回避** オーバー ロードのパラメーター名は任意で変更します。 1 つのオーバー ロードのパラメーターは、別のオーバー ロードのパラメーターと同じ入力を表している場合のパラメーターは、同じ名前である必要があります。 + + **X 回避** メンバーはオーバー ロードのパラメーターの順序で一貫性のあるできません。 同じ名前のパラメーターは、すべてのオーバー ロード内の同じ位置に表示されます。 + + **✓ は** 最長のオーバー ロードだけを仮想化 \(機能拡張が必要な場合\)。 短いオーバー ロードは必要がありますから長いオーバー ロードを呼び出すだけです。 + + **X のしないで** を使用して `ref` または `out` オーバー ロードされたメンバーに対する修飾子です。 + + 一部の言語では、次のようにオーバー ロードの呼び出しを解決できません。 さらに、このようなオーバー ロード通常完全に異なるセマンティクスを持つし、おそらく必要がありますされませんオーバー ロードが 2 つの個別のメソッド代わりに。 + + **X のしないで** 同じ位置および類似した種類のパラメーターを使用して、まだ異なるセマンティクスを持つオーバー ロードがあります。 + + **✓ は** 許可 `null` 省略可能な引数に渡されます。 + + **✓ は** メンバーの既定の引数を持つメンバーを定義するのではなく、オーバー ロードを使用します。 + + 既定の引数は、CLS 準拠ではありません。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [メンバー デザインのガイドライン](../../../docs/standard/design-guidelines/member.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/member.md b/docs/standard/design-guidelines/member.md new file mode 100644 index 00000000000..24439003d7f --- /dev/null +++ b/docs/standard/design-guidelines/member.md @@ -0,0 +1,50 @@ +--- +title: "メンバー デザインのガイドライン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "メンバー デザインのガイドラインは、メンバーのデザイン ガイドライン [.NET Framework]" + - "メンバー [.NET Framework] のデザイン ガイドライン" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] のメンバー" + - "メンバー デザインのガイドライン [.NET Framework]" +ms.assetid: 0ce93180-1d7b-4f8c-9306-f828b2d66b8f +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# メンバー デザインのガイドライン +メソッド、プロパティ、イベント、コンス トラクター、およびフィールドは、メンバーとしてまとめて呼ばれます。 メンバーが、最終的に、フレームワークのエンドユーザーに、framework の機能が公開されていることを意味します。 + + メンバーは、仮想または非仮想、具体的なまたは抽象クラスで静的メソッドまたはインスタンスにすることができ、ユーザー補助機能のいくつかの異なるスコープができます。 このすべてのバリエーション驚異的な表現力には、同時に、framework デザイナー側注意が必要です。 + + この章では、任意の型のメンバーをデザインするときに従う必要が基本的なガイドラインを提供します。 + +## このセクションの内容 + [メンバーのオーバー ロード](../../../docs/standard/design-guidelines/member-overloading.md) + [プロパティのデザイン](../../../docs/standard/design-guidelines/property.md) + [コンス トラクターのデザイン](../../../docs/standard/design-guidelines/constructor.md) + [イベントのデザイン](../../../docs/standard/design-guidelines/event.md) + [フィールドのデザイン](../../../docs/standard/design-guidelines/field.md) + [拡張メソッド](../../../docs/standard/design-guidelines/extension-methods.md) + [演算子のオーバー ロード](../../../docs/standard/design-guidelines/operator-overloads.md) + [パラメーターのデザイン](../../../docs/standard/design-guidelines/parameter-design.md) + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/names-of-assemblies-and-dlls.md b/docs/standard/design-guidelines/names-of-assemblies-and-dlls.md new file mode 100644 index 00000000000..450b73dba37 --- /dev/null +++ b/docs/standard/design-guidelines/names-of-assemblies-and-dlls.md @@ -0,0 +1,50 @@ +--- +title: "アセンブリと Dll の名前 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "Dll の名前 [.NET Framework]" + - "アセンブリの名前 [.NET Framework]" + - "アセンブリ [.NET Framework] の名前" + - "Dll 名" +ms.assetid: e800b610-31b4-4949-9c14-cb60e9f254be +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# アセンブリと Dll の名前 +アセンブリは、配置とマネージ コード アプリケーションの id の単位です。 アセンブリは、1 つまたは複数のファイルにまたがることができます、通常このアセンブリは、DLL と一対一をマップします。 そのため、このセクションでは、のみ DLL の名前付け規則、その後、アセンブリの名前付け規則にマップできますがについて説明します。 + + **✓ は** アセンブリ System.Data などの機能の大きなチャンクを提案する Dll の名前を選択します。 + + アセンブリと DLL の名前、名前空間の名前に対応する必要はありませんが、アセンブリの名前を付けるときは、名前空間の名前を以下にすることができます。 適切な経験則では、アセンブリに含まれるアセンブリの共通のプレフィックスに基づいた DLL の名前です。 たとえば、2 つの名前空間を持つアセンブリ `MyCompany.MyTechnology.FirstFeature` と `MyCompany.MyTechnology.SecondFeature`, を呼び出す `MyCompany.MyTechnology.dll`します。 + + **✓ を検討してください** Dll を次のパターンに従って名前付け。 + + `..dll` + + ここで `` ピリオドで区切られた 1 つまたは複数の句が含まれています。 例: + + `Litware.Controls.dll`。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [名前付けのガイドライン](../../../docs/standard/design-guidelines/naming-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/names-of-classes-structs-and-interfaces.md b/docs/standard/design-guidelines/names-of-classes-structs-and-interfaces.md new file mode 100644 index 00000000000..1e5b009a735 --- /dev/null +++ b/docs/standard/design-guidelines/names-of-classes-structs-and-interfaces.md @@ -0,0 +1,116 @@ +--- +title: "クラス、構造体、およびインターフェイスの名前 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "型名、ガイドライン" + - "名前のクラス [.NET Framework]" + - "列挙体 [.NET Framework] の名前" + - "名前 [.NET Framework] インターフェイス" + - "一般的な型名" + - "型名の名前 [.NET Framework]" + - "クラスの名前 [.NET Framework]" + - "名前のインターフェイス [.NET Framework]" + - "ジェネリック型パラメーター" +ms.assetid: 87a4b0da-ed64-43b1-ac43-968576c444ce +caps.latest.revision: 16 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 16 +--- +# クラス、構造体、およびインターフェイスの名前 +次の名前付けのガイドラインは、一般的な種類の名前付けに適用されます。 + + **✓ は** クラスと構造体には名詞または名詞句、pascal 表記を使用を使用して名前を付けます。 + + これは、動詞句とという名前のメソッドと型名を区別します。 + + **✓ は** 形容詞句、または場合によって名詞または名詞句のインターフェイスの名前します。 + + 名詞と名詞句をめったに使用する必要があり、抽象クラスとインターフェイスではなく、型があることを示す可能性があります。 + + **X のしないで** クラス名のプレフィックス \("C"など\) を指定します。 + + **✓ を検討してください** 、基本クラスの名前のクラスを派生の名前を終了します。 + + これはとても読みにくいはであり、関係を明確に説明します。 コード内のいくつかの例に示します: `ArgumentOutOfRangeException`, が付いての `Exception`, 、および `SerializableAttribute`, が付いての `Attribute`です。 ただし、これは次のガイドラインを適用することで、適切な判断を使用するにはなど、 `Button` クラスは、一種の `Control` イベントが `Control` 名前に表示されません。 + + **✓ は** インターフェイス名のプレフィックス文字では、型がインターフェイスであることを示します。 + + たとえば、 `IComponent` \(わかりやすい名詞\) `ICustomAttributeProvider` \(名詞句\)、および `IPersistable` \(形容詞\) は適切なインターフェイス名。 同様に他の種類名の省略形を回避します。 + + **✓ は** だけで、"I"プレフィックスのインターフェイス名、クラスがインターフェイスの標準的な実装であるクラス – インターフェイスのペアを定義するときに名前が異なることを確認します。 + +## ジェネリック型パラメーターの名前 + ジェネリックは .NET Framework 2.0 に追加されました。 機能の導入と呼ばれる識別子の新しい種類 *パラメーター入力*します。 + + **✓ は** 1 文字の名前が完全に説明し、わかりやすい名前と値を追加していない限り、わかりやすい名前を持つジェネリック型パラメーターの名前します。 + + **✓ を検討してください** を使用して `T` 単一文字の型パラメーターが 1 つの型の型のパラメーター名として。 + +``` +public int IComparer { ... } +public delegate bool Predicate(T item); +public struct Nullable where T:struct { ... } +``` + + **✓ は** 説明的な型のパラメーター名のプレフィックス `T`します。 + +``` +public interface ISessionChannel where TSession : ISession{ + TSession Session { get; } +} +``` + + **✓ を検討してください** 制約を示す名前、パラメーターの型パラメーターに配置されます。 + + パラメーターに制約があるなど `ISession` という `TSession`します。 + +## 一般的な種類の名前 + **✓ は** から派生した、または特定の .NET Framework 型を実装する型の名前を付けるときは、次の表に記載されているガイドラインに従ってください。 + +|基本データ型|型の派生と実装ガイドライン| +|------------|-------------------| +|`System.Attribute`|**✓ は** カスタム属性クラスの名前にサフィックス"Attribute"を追加します。 カスタム属性クラスの名前にサフィックス"Attribute"を追加します。| +|`System.Delegate`|**✓ は** イベントで使用されているデリゲートの名前にサフィックス"EventHandler"を追加します。

**✓ は** 以外のイベント ハンドラーとして使用されているデリゲートの名前に"Callback"サフィックスを追加します。

**X のしないで** デリゲートに「Delegate」サフィックスを追加します。| +|`System.EventArgs`|**✓ は** "EventArgs"サフィックスを追加| +|`System.Enum`|**X のしないで** このクラスから派生、代わりに使用する言語でサポートされているキーワードを使用して、たとえば、C\# の場合、enum キーワードを使用します。

**X のしないで** 「列挙」または"Flag"サフィックスを追加| +|`System.Exception`|**✓ は** 「例外」サフィックスを追加| +|`IDictionary`
`IDictionary`|**✓ は** 「辞書」サフィックスを追加 なお `IDictionary` は、コレクションの特定の型ですが、このガイドラインに依存している一般的なコレクション ガイドラインよりも優先されます。| +|`IEnumerable`
`ICollection`
`IList`
`IEnumerable`
`ICollection`
`IList`|**✓ は** 「コレクション」サフィックスを追加| +|`System.IO.Stream`|**✓ は** 「ストリーム」サフィックスを追加| +|`CodeAccessPermission IPermission`|**✓ は** 「アクセス」サフィックスを追加| + +## 列挙体の名前を付ける + 一般に列挙型 \(列挙型とも呼ばれます\) の名前にすることは \(pascal 表記を使用など\) 標準的な型の名前付け規則に従う必要があります。 ただし、この列挙型に適用する追加のガイドラインがあります。 + + **✓ は** の値がビット フィールドでない場合は、列挙体の単数形の型名を使用します。 + + **✓ は** フラグ列挙体とも呼ばれます。 の値として、ビット フィールドを持つ列挙体の複数形の型名を使用します。 + + **X のしないで** 列挙型の型名で、「列挙」サフィックスを使用します。 + + **X のしないで** 「フラグの設定」を使用するか列挙型に"Flags"サフィックスが名前を入力します。 + + **X のしないで** リッチ テキストを持つ列挙型などの列挙値の名前 \(たとえば、"ad"ADO 列挙型にします。\)、"rtf"にプレフィックスを使用します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [名前付けのガイドライン](../../../docs/standard/design-guidelines/naming-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/names-of-namespaces.md b/docs/standard/design-guidelines/names-of-namespaces.md new file mode 100644 index 00000000000..dc273634a12 --- /dev/null +++ b/docs/standard/design-guidelines/names-of-namespaces.md @@ -0,0 +1,100 @@ +--- +title: "名前空間の名前 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "名前 [.NET Framework] の競合" + - "名前空間の名前 [.NET Framework]" + - "型名の競合" + - "名前空間 [.NET Framework] の名前" + - "型名の名前 [.NET Framework]" +ms.assetid: a49058d2-0276-43a7-9502-04adddf857b2 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 名前空間の名前 +として他の名前付けのガイドラインと名前空間の名前を付けるときの目標を作成するための十分なわかりやすくするためにどのような名前空間のコンテンツがある可能性がすぐにわかるフレームワークを使用するプログラマにとってします。 次のテンプレートは、名前空間の名前付けに関する一般的な規則を指定します。 + + `.(|)[.][.]` + + 例を次に示します。 + + `Fabrikam.Math` + `Litware.Security` + + **✓ は** 名前空間名を同じ名前の異なる会社から名前空間を防ぐために会社名のプレフィックスします。 + + **✓ は** 名前空間の名前の 2 番目のレベルで、バージョンに依存しない安定した製品名を使用します。 + + **X のしないで** 企業内のグループ名の有効期間の短いする傾向があるため、名前空間の階層内の名前の基準として組織階層を使用します。 関連するテクノロジのグループの周囲の名前空間の階層を整理します。 + + **✓ 操作を行います** 期間が設定された、pascal 表記を使用し、別の名前空間のコンポーネントを使用して \(例: `Microsoft.Office.PowerPoint`\)。 お客様のブランドは、従来とは異なる大文字と小文字を使用している場合は、一般的な名前空間の大文字と小文字から以上逸脱している場合でも、ブランドで定義された大文字と小文字に従ってください。 + + **✓ を検討してください** 適切な場所に複数形の名前空間の名前を使用します。 + + たとえば、使用して `System.Collections` の代わりに `System.Collection`します。 ブランド名や略語は、この規則の例外をただしです。 たとえば、使用して `System.IO` の代わりに `System.IOs`します。 + + **X のしないで** その名前空間、名前空間と型に同じ名前を使用します。 + + たとえば、使用しないでください `Debug` 、名前空間と名前を指定し、またという名前のクラスを提供 `Debug` 同じ名前空間。 いくつかのコンパイラでは、完全に修飾するには、このような型が必要です。 + +### 名前空間と型名の競合 + **X のしないで** など、ジェネリック型の名前が導入 `Element`, 、`Node`, 、`Log`, 、および `Message`です。 + + 名前を入力する可能性は競合シナリオで共通の非常に高い確率があります。 ジェネリック型の名前を修飾する必要があります \(`FormElement`, 、`XmlNode`, 、`EventLog`, 、`SoapMessage`\)。 + + 異なるカテゴリの名前空間の型名の競合を回避するための特定のガイドラインがあります。 + +- **アプリケーション モデルの名前空間** + + 1 つのアプリケーション モデルに属する名前空間は同時に、非常によく使用しますが、他のアプリケーション モデルの名前空間と併用することはほぼありません。 たとえば、 と共に名前空間が使用する非常にまれ、 名前空間。 よく知られているアプリケーション モデルの名前空間のグループの一覧を次に示します。 + + `System.Windows*` + `System.Web.UI*` + + **X のしないで** 1 つのアプリケーション モデル内で名前空間の型に同じ名前を指定します。 + + たとえば、という名前の型を追加しない `Page` に、 名前空間、ため、 名前空間に既にという名前の型が含まれています `Page`します。 + +- **インフラストラクチャの名前空間** + + このグループには、あまり一般的なアプリケーションの開発時にインポートされる名前空間が含まれています。 たとえば、 `.Design` ツールのプログラミングの開発時に名前空間が主に使用します。 これらの名前空間内の型との競合の回避は重要ではありません。 + +- **コア名前空間** + + すべてのコア名前空間を含める `System` 名前空間、アプリケーション モデルの名前空間とインフラストラクチャの名前空間を除外します。 その他のコア名前空間が含まれます `System`, 、`System.IO`, 、`System.Xml`, 、および `System.Net`です。 + + **X のしないで** を指定します。 コア名前空間のすべての型と競合する名前を入力します。 + + たとえば、使用しないで `Stream` 型名として。 競合する , 、非常によく型を使用します。 + +- **テクノロジ名前空間のグループ** + + このカテゴリには、同じ最初の 2 つの名前空間ノードを持つすべての名前空間が含まれています。 `(.*`\)、など `Microsoft.Build.Utilities` と `Microsoft.Build.Tasks`です。 1 つのテクノロジに属している型が互いに競合しないことが重要です。 + + **X のしないで** 1 つのテクノロジでは、他の種類と競合する型の名前を割り当てます。 + + **X のしないで** \(ない場合、このテクノロジは、アプリケーション モデルで使用するものではありません\) テクノロジの名前空間の型とのアプリケーション モデルの名前空間の型名の競合が発生します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [名前付けのガイドライン](../../../docs/standard/design-guidelines/naming-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/names-of-type-members.md b/docs/standard/design-guidelines/names-of-type-members.md new file mode 100644 index 00000000000..d14d6ffe722 --- /dev/null +++ b/docs/standard/design-guidelines/names-of-type-members.md @@ -0,0 +1,117 @@ +--- +title: "型のメンバーの名前 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "イベント [.NET Framework] の名前" + - "名前のメソッド [.NET Framework]" + - "型のメンバー" + - "[.NET Framework] ダイアログ ボックスのプロパティ名" + - "フィールド名" + - "フィールド名" + - "型のメンバーの名前 [.NET Framework]" + - "型のメンバー [.NET Framework]" +ms.assetid: af5a0903-36af-4c2a-b848-cf959affeaa5 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 型のメンバーの名前 +メンバーの型が加えられた: メソッド、プロパティ、イベント、コンス トラクター、およびフィールドです。 次のセクションでは、型のメンバーの名前付けのガイドラインについて説明します。 + +## メソッドの名前 + メソッドはアクションを実行する手段になっているために、デザインのガイドラインは動詞または動詞句メソッド名にすることが必要です。 またこのガイドラインに従うとは、メソッドの名前に名詞または形容詞句であるプロパティと型の名前を区別するために機能します。 + + **✓ は** 動詞または動詞句であるメソッドの名前を付けます。 + +``` +public class String { + public int CompareTo(...); + public string[] Split(...); + public string Trim(); +} + +``` + +## プロパティの名前 + その他のメンバーとは異なりは、名詞句または形容詞名にプロパティを指定する必要があります。 プロパティは、データを参照し、プロパティの名前に反映されるためです。 プロパティ名は、pascal 表記を使用が常に使用されます。 + + **✓ は** 名詞、名詞句、または形容詞として解釈を使用してプロパティを指定します。 + + **X のしないで** 次の例のように、"Get"メソッドの名前に一致するプロパティがあります。 + + `public string TextWriter { get {...} set {...} }` + `public string GetTextWriter(int value) { ... }` + + このパターンでは、通常、プロパティが、メソッドを実際にする必要がありますを示します。 + + **✓ は** "List"または「コレクション」の前に、単数形の語句を使用する代わりにコレクション内の項目を記述する複数形の語句でコレクションのプロパティの名前 + + **✓ は** 肯定フレーズでブール型プロパティの名前 \(`CanSeek` の代わりに `CantSeek`\)。 ブール型プロパティもプレフィックスを必要に応じて、"Is"と"、"したり、「は、」値を追加する場合に限定します。 + + **✓ を検討してください** プロパティの型と同じ名前を提供します。 + + たとえば、次のプロパティ正しく取得および設定という名前の列挙値 `Color`, プロパティの名前を指定するため、 `Color`: + +``` +public enum Color {...} +public class Control { + public Color Color { get {...} set {...} } +} +``` + +## イベントの名前 + イベントは、常に何らかのアクションでは、いずれかの問題であるか、1 つが発生したことを指します。 そのためと同様にメソッド、イベントが、動詞と名前付き動詞の時制を使用して、イベントが発生すると時間を指定します。 + + **✓ は** イベントの名前は動詞または動詞句にします。 + + 例としては、 `Clicked`, 、`Painting`, 、`DroppedDown`, 、という具合です。 + + **✓ は** 現在と過去時制を使用しての前後の概念でイベントの名前を付けます。 + + たとえば、ウィンドウが閉じられる前に発生する close イベントが呼び出されます `Closing`, 、ウィンドウが閉じられた後に発生する 1 つと呼ばれる、 `Closed`です。 + + **X のしないで** "Before"または"After"プレフィックスまたは postfixes を示す前と後のイベントを使用します。 使用して現在と過去時制前述のようです。 + + **✓ は** "EventHandler"サフィックスを持つイベント ハンドラー \(デリゲートがイベントの種類として使用\) という名前を次の例で示すようにします。 + + `public delegate void ClickedEventHandler(object sender, ClickedEventArgs e);` + + **✓ は** という名前の 2 つのパラメーターを使用して `sender` と `e` イベント ハンドラーにします。 + + Sender パラメーターでは、イベントを発生させたオブジェクトを表します。 型の sender パラメーターは、通常 `object`, より具体的な種類を使用することはあっても、です。 + + **✓ は** イベントという名前を"EventArgs"サフィックスを持つ引数クラスです。 + +## フィールドの名前 + フィールドの名前付けのガイドラインは、静的なパブリック、プロテクト フィールドに適用されます。 内部、プライベート フィールドが、ガイドラインが対応していないとでは、パブリックまたはプロテクトのインスタンス フィールドは許可されていない、 [メンバー デザインのガイドライン](../../../docs/standard/design-guidelines/member.md)します。 + + **✓ は** フィールド名に pascal 表記を使用を使用します。 + + **✓ は** 名詞、名詞句、または形容詞として解釈を使用してフィールドの名前します。 + + **X のしないで** フィールド名にプレフィックスを使用します。 + + たとえば、使わない「g \_」または「s \_」を静的フィールドを示します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [名前付けのガイドライン](../../../docs/standard/design-guidelines/naming-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/naming-guidelines.md b/docs/standard/design-guidelines/naming-guidelines.md new file mode 100644 index 00000000000..dc61a7440be --- /dev/null +++ b/docs/standard/design-guidelines/naming-guidelines.md @@ -0,0 +1,53 @@ +--- +title: "名前付けのガイドライン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "名前付けのガイドラインについては、名前 [.NET Framework]" + - "名前付けのガイドライン [.NET Framework]" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] の名前" + - "名前を書式指定 [.NET Framework]" + - "クラス ライブラリの要素名の識別子" + - "名前 [.NET Framework]" + - "形式の名前付けのガイドライン [.NET Framework]" +ms.assetid: fc076d66-9b5f-42d3-aa65-61d970c794a3 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 名前付けのガイドライン +次の一貫性のある一連のフレームワークの開発に名前付け規則と、フレームワークの使いやすさに大きな金額を指定できます。 これにより、広範囲に分散されたプロジェクトで多くの開発者によって使用されるフレームワークことができます。 フォームの一貫性、超えるフレームワーク要素の名前は、簡単に認識する必要があるとして各要素の機能を伝達する必要があります。 + + この章の目的は、開発者に即時意味のある名前に一貫性のある名前付け規則のセットを提供します。 + + 一般的なコード開発のガイドラインは、コード全体でより一貫性のある名前付けになると、これらの名前付け規則を採用すること、ただし必要があるだけは公開される Api に適用 \(パブリックまたはプロテクト型とメンバー、および明示的に実装されたインターフェイス\)。 + +## このセクションの内容 + [大文字と小文字の表記規則](../../../docs/standard/design-guidelines/capitalization-conventions.md) + [一般的な名前付け規則](../../../docs/standard/design-guidelines/general-naming-conventions.md) + [アセンブリと Dll の名前](../../../docs/standard/design-guidelines/names-of-assemblies-and-dlls.md) + [名前空間の名前](../../../docs/standard/design-guidelines/names-of-namespaces.md) + [クラス、構造体、およびインターフェイスの名前](../../../docs/standard/design-guidelines/names-of-classes-structs-and-interfaces.md) + [型のメンバーの名前](../../../docs/standard/design-guidelines/names-of-type-members.md) + [パラメーターの名前を付ける](../../../docs/standard/design-guidelines/naming-parameters.md) + [リソースの名前付け](../../../docs/standard/design-guidelines/naming-resources.md) + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/naming-parameters.md b/docs/standard/design-guidelines/naming-parameters.md new file mode 100644 index 00000000000..8487ab00bfb --- /dev/null +++ b/docs/standard/design-guidelines/naming-parameters.md @@ -0,0 +1,51 @@ +--- +title: "パラメーターの名前を付ける | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "パラメーター名" + - "パラメーターの名前 [.NET Framework]" +ms.assetid: ca3c956e-725a-441b-b4e3-eab5d472f41c +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# パラメーターの名前を付ける +読みやすさの明らかなため、以外には、パラメーターがドキュメントでは、デザイナーで表示される Intellisense とクラス参照機能を提供するビジュアル デ ザイン ツールとためパラメーター名に関するガイドラインに従う必要があります。 + + **✓ は** パラメーター名の camel 表記を使用します。 + + **✓ は** わかりやすいパラメーター名を使用します。 + + **✓ を検討してください** パラメーターの型ではなく、パラメーターの意味に基づく名前を使用します。 + +### 演算子のオーバー ロードのパラメーターの名前を付ける + **✓ は** を使用して `left` と `right` パラメーターに意味がない場合は、二項演算子のオーバー ロード パラメーター名にします。 + + **✓ は** を使用して `value` の単項演算子のオーバー ロードのパラメーター名、パラメーターの意味がない場合。 + + **✓ を検討してください** 大きな価値が増加している場合、オーバー ロードのパラメーターの演算子にわかりやすい名前。 + + **X のしないで** 使用略語や数値の添字演算子のオーバー ロードのパラメーターの名前。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [名前付けのガイドライン](../../../docs/standard/design-guidelines/naming-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/naming-resources.md b/docs/standard/design-guidelines/naming-resources.md new file mode 100644 index 00000000000..e3a03a34316 --- /dev/null +++ b/docs/standard/design-guidelines/naming-resources.md @@ -0,0 +1,55 @@ +--- +title: "リソースの名前付け | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "リソースのローカライズされた名前 [.NET Framework]" + - "ローカリゼーションでは、名前付けのガイドライン" + - "リソース名" + - "名前付けのガイドライン、グローバル アプリケーション" + - "名前付けのガイドライン、国際対応のアプリケーション" +ms.assetid: 8b0e97f3-7877-44fd-bc76-e05d36d5d79c +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# リソースの名前付け +場合プロパティと同様、特定のオブジェクトを使用してローカライズ可能なリソースを参照できる、ので、リソースの名前付けのガイドラインは、プロパティのガイドラインに似ています。 + + **✓ は** リソース キーで pascal 表記を使用を使用します。 + + **✓ は** 短い識別子ではなくわかりやすいを提供します。 + + **X のしないで** メインの CLR 言語の言語に固有のキーワードを使用します。 + + **✓ は** のみ英数字とアンダー スコアのリソースの名前付けに使用します。 + + **✓ は** 例外メッセージ リソースの名前付け規則を使用します。 + + リソース識別子は、例外の種類名と、例外の短い識別子にする必要があります。 + + `ArgumentExceptionIllegalCharacters` + `ArgumentExceptionInvalidName` + `ArgumentExceptionFileNameIsMalformed` + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [名前付けのガイドライン](../../../docs/standard/design-guidelines/naming-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/nested-types.md b/docs/standard/design-guidelines/nested-types.md new file mode 100644 index 00000000000..f48bcdbdc84 --- /dev/null +++ b/docs/standard/design-guidelines/nested-types.md @@ -0,0 +1,60 @@ +--- +title: "入れ子にされた型 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "入れ子にされた型" + - "パブリックな入れ子になった型" + - "型のデザインのガイドライン、入れ子にされた型" + - "入れ子にされた型" + - "型のメンバー [.NET Framework]" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] の入れ子になった型" +ms.assetid: 12feb7f0-b793-4d96-b090-42d6473bab8c +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 入れ子にされた型 +入れ子にされた型は、外側の型と呼ばれる別の種類のスコープ内で定義されている型です。 入れ子にされた型は、それを囲む型のすべてのメンバーへのアクセスを持ちます。 たとえば、プライベート フィールドの定義の外側の型と、外側の型のすべての先祖で定義されたフィールドを保護するアクセス権があります。 + + 一般に、控え目入れ子にされた型に使用する必要があります。 直接呼び出すべきではないいくつかの理由があります。 一部の開発者は、概念を完全に習熟していません。 これらの開発者では、入れ子にされた型の変数の宣言の構文を使用してなどいない可能性があります、します。 入れ子にされた型は非常に緊密にもと連動して、外側の型では、そのため、汎用的な型にすることが適していません。 + + 入れ子にされた型は、包含する型の実装の詳細をモデル化に最適です。 エンドユーザーは、入れ子にされた型の変数を宣言する必要はほとんどすることはほぼありません、入れ子にされた型を明示的にインスタンス化する必要があります。 たとえば、コレクションの列挙子は、そのコレクションの入れ子にされた型にできます。 列挙子は通常その外側の型でインスタンス化し、多くの言語では、foreach ステートメントをサポート、ため列挙子の変数は、エンドユーザーによって宣言されていることはほとんどありませんが存在します。 + + **✓ は** 入れ子にされた型とその外側の型間の関係のあるメンバーのアクセシビリティのセマンティクスの要件を満たしているときに、入れ子にされた型を使用します。 + + **X のしないで** 、論理的なグループとしてパブリック入れ子にされた型を使用して構築; この名前空間を使用します。 + + **X 回避** 入れ子にされた型を公開します。 唯一の例外は、入れ子にされた型の変数をサブクラスまたはその他の高度なカスタマイズ シナリオなどのまれなシナリオでのみ宣言する必要があるかどうかです。 + + **X のしないで** 型がそれを含む型の外部で参照される可能性が高い場合は、入れ子にされた型を使用します。 + + たとえば、クラスで定義されているメソッドに渡される列挙型をクラスに入れ子にされた型として定義する必要があります。 + + **X のしないで** クライアント コードでインスタンス化する必要がある場合は、入れ子にされた型を使用します。 型のパブリック コンス トラクターの場合、必要がありますされていない入れ子にします。 + + 型がそれ自体では、framework 内の場所を示すためにだと型をインスタンス化する場合 \(できます作成し、これを使用して作業し、外側の型を使用することがなく破棄\)、つまり入れ子にしてはいけないとします。 内部型必要がありますいない広範囲に再利用、外部型の関係のない外部の型にも一切します。 + + **X のしないで** インターフェイスのメンバーとして入れ子にされた型を定義します。 多くの言語は、このようなコンストラクトをサポートしていません。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [型デザインのガイドライン](../../../docs/standard/design-guidelines/type.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/operator-overloads.md b/docs/standard/design-guidelines/operator-overloads.md new file mode 100644 index 00000000000..51aaff67619 --- /dev/null +++ b/docs/standard/design-guidelines/operator-overloads.md @@ -0,0 +1,127 @@ +--- +title: "演算子のオーバー ロード | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "[.NET Framework] ダイアログ ボックスの演算子のオーバー ロード" + - "名前 [.NET Framework] のオーバー ロードされた演算子" + - "メンバー デザインのガイドライン, オペレーター" + - "オーバーロードされた演算子" +ms.assetid: 37585bf2-4c27-4dee-849a-af70e3338cc1 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 演算子のオーバー ロード +演算子のオーバー ロードでは、組み込みの言語プリミティブに存在した場合のように表示されるフレームワークの種類を許可します。 + + 許可されている、いくつかの状況で便利ですが、慎重に行って演算子のオーバー ロードを使用してください。 演算子のオーバー ロードがされて悪用の簡単な方法があります。 操作に演算子を使用するフレームワークの設計者の起動時など、多くの場合があります。 次のガイドラインは、演算子のオーバー ロードを使用するタイミングと方法を決定するのに役立ちます。 + + **X 回避** を除くいえますプリミティブ \(組み込み\) 型のような種類の演算子のオーバー ロードを定義します。 + + **✓ を検討してください** プリミティブ型のように感じがする型の演算子のオーバー ロードを定義します。 + + たとえば、 が `operator==` と `operator!=` を定義します。 + + **✓ は** 演算子のオーバー ロードを数値を表現する構造体の定義 \(など \)。 + + **X のしないで** 演算子のオーバー ロードを定義するときに、利かせようです。 + + 演算子のオーバー ロードは、順番を一見して、操作の結果はどのくらいにする場合に便利です。 合理的に 1 を減算するたとえば、 別の `DateTime` を取得し、 です。 ただし、共用体の 2 つのデータベース クエリに論理演算子を使用するか、ストリームに書き込むシフト演算子を使用する適切ではありません。 + + **X のしないで** オーバー ロードを定義する型のオペランドの少なくとも 1 つがない場合、演算子がオーバー ロードを提供します。 + + **✓ は** 演算子は対称的にオーバー ロードします。 + + たとえば、オーバー ロードする場合、 `operator==`, 、オーバー ロードもする必要があります、 `operator!=`です。 同様に、オーバー ロードする場合、 `operator<`, 、オーバー ロードする必要がありますも、 `operator>`, 、という具合です。 + + **✓ を検討してください** 各オーバー ロードされた演算子に対応するフレンドリ名を持つメソッドを指定します。 + + 多くの言語は、演算子のオーバー ロードをサポートしていません。 このため、演算子をオーバー ロードする型が同等の機能は、適切なドメイン固有の名前を持つセカンダリ メソッドを含めることをお勧めします。 + + 次の表には、演算子と対応するわかりやすいメソッド名の一覧が含まれています。 + +|C\# 演算子シンボル|メタデータ名|フレンドリ名| +|-----------------|------------|------------| +|`N/A`|`op_Implicit`|`To/From`| +|`N/A`|`op_Explicit`|`To/From`| +|`+ (binary)`|`op_Addition`|`Add`| +|`- (binary)`|`op_Subtraction`|`Subtract`| +|`* (binary)`|`op_Multiply`|`Multiply`| +|`/`|`op_Division`|`Divide`| +|`%`|`op_Modulus`|`Mod or Remainder`| +|`^`|`op_ExclusiveOr`|`Xor`| +|`& (binary)`|`op_BitwiseAnd`|`BitwiseAnd`| +|`|`|`op_BitwiseOr`|`BitwiseOr`| +|`&&`|`op_LogicalAnd`|`And`| +|`||`|`op_LogicalOr`|`Or`| +|`=`|`op_Assign`|`Assign`| +|`<<`|`op_LeftShift`|`LeftShift`| +|`>>`|`op_RightShift`|`RightShift`| +|`N/A`|`op_SignedRightShift`|`SignedRightShift`| +|`N/A`|`op_UnsignedRightShift`|`UnsignedRightShift`| +|`==`|`op_Equality`|`Equals`| +|`!=`|`op_Inequality`|`Equals`| +|`>`|`op_GreaterThan`|`CompareTo`| +|`<`|`op_LessThan`|`CompareTo`| +|`>=`|`op_GreaterThanOrEqual`|`CompareTo`| +|`<=`|`op_LessThanOrEqual`|`CompareTo`| +|`*=`|`op_MultiplicationAssignment`|`Multiply`| +|`-=`|`op_SubtractionAssignment`|`Subtract`| +|`^=`|`op_ExclusiveOrAssignment`|`Xor`| +|`<<=`|`op_LeftShiftAssignment`|`LeftShift`| +|`%=`|`op_ModulusAssignment`|`Mod`| +|`+=`|`op_AdditionAssignment`|`Add`| +|`&=`|`op_BitwiseAndAssignment`|`BitwiseAnd`| +|`|=`|`op_BitwiseOrAssignment`|`BitwiseOr`| +|`,`|`op_Comma`|`Comma`| +|`/=`|`op_DivisionAssignment`|`Divide`| +|`--`|`op_Decrement`|`Decrement`| +|`++`|`op_Increment`|`Increment`| +|`- (unary)`|`op_UnaryNegation`|`Negate`| +|`+ (unary)`|`op_UnaryPlus`|`Plus`| +|`~`|`op_OnesComplement`|`OnesComplement`| + +### 演算子をオーバー ロード \= \= + オーバー ロード `operator ==` はかなり複雑になります。 演算子のセマンティクスをなどその他のいくつかのメンバーと互換性がある必要がある です。 + +### 変換演算子 + 変換演算子は、単項演算子を別の型に変換できるようにします。 演算子は、オペランドまたは戻り値の型のいずれかの静的メンバーとして定義する必要があります。 変換演算子の 2 種類があります。 明示的および暗黙的なです。 + + **X のしないで** 場合は、エンドユーザーがこのような変換が明確に予期しない変換演算子が用意されています。 + + **X のしないで** 型のドメインの外部での変換演算子を定義します。 + + たとえば、 , 、, 、および はすべての数値型に対し はありません。 そのためがあってはなりません変換への変換演算子、 `Double(long)` に、 `DateTime`です。 コンス トラクターは、このような場合が優先されます。 + + **X のしないで** 変換が損失を伴う可能性がある場合は、暗黙的な変換演算子を提供します。 + + などがないことから、暗黙の変換 `Double` に `Int32` ため `Double` よりも広い範囲を持つ `Int32`です。 変換の損失を伴う可能性がある場合でも、明示的な変換演算子を指定できます。 + + **X のしないで** 暗黙的なキャストから例外をスローします。 + + エンドユーザーがないかもしれません変換が行われているために、何が起こっているかを理解するため非常に困難です。 + + **✓ は** スロー 損失を伴う変換でキャスト演算子への呼び出しの結果、その演算子のコントラクトでは、損失を伴う変換することはできません。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [メンバー デザインのガイドライン](../../../docs/standard/design-guidelines/member.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/parameter-design.md b/docs/standard/design-guidelines/parameter-design.md new file mode 100644 index 00000000000..9731a81194a --- /dev/null +++ b/docs/standard/design-guidelines/parameter-design.md @@ -0,0 +1,170 @@ +--- +title: "パラメーターのデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "メンバー デザインのガイドライン [.NET Framework] パラメーター" + - "パラメーターであるメンバー [.NET Framework]" + - "パラメーターの名前 [.NET Framework]" + - "パラメーターの設計ガイドライン" + - "予約済みのパラメーター" +ms.assetid: 3f33bf46-4a7b-43b3-bb78-1ffebe0dcfa6 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# パラメーターのデザイン +このセクションでは、引数をチェックするためのガイドラインを使用してセクションをなど、パラメーターの設計でさまざまなガイドラインを提供します。 さらで説明するガイドラインを参照してください [パラメーターの名前を付ける](../../../docs/standard/design-guidelines/naming-parameters.md)します。 + + **✓ は** メンバーに必要な機能を提供する、少なくとも派生パラメーター型を使用します。 + + たとえば、コレクションを列挙して、コンソールに各項目を印刷する方法を設計する必要があるとします。 このようなメソッドを実行する必要があります 、パラメーターとしていない または , などです。 + + **X のしないで** 予約済みのパラメーターを使用します。 + + さらに、メンバーへの入力が将来のバージョンで必要な場合は、新しいオーバー ロードを追加できます。 + + **X のしないで** ポインター、ポインターの配列またはパラメーターとして多次元配列を受け取るメソッドがパブリックに公開します。 + + ポインター、および多次元配列比較的しにくいを適切に使用します。 ほとんどの場合に、Api はこれらの型をパラメーターとしてを防ぐために再設計することができます。 + + **✓ は** すべて配置 `out` で値をすべてのパラメーターと `ref` パラメーター \(除外パラメーター配列\) にパラメーターのオーバー ロード間の順序に一貫性がない場合でも \(を参照してください [メンバーのオーバー ロード](../../../docs/standard/design-guidelines/member-overloading.md)\)。 + + `out` パラメーターは、余分な戻り値として見なすことができ、理解しやすく、メソッド シグネチャは、グループ化します。 + + **✓ は** メンバーをオーバーライドする場合のパラメーターの名前を付けるか、インターフェイス メンバーの実装で一貫しています。 + + これには、メソッド間の関係向上と通信します。 + +### 列挙型とブール型のパラメーターの選択 + **✓ は** メンバーが 2 つ以上のブール型パラメーターを持っている場合は、列挙型を使用します。 + + **X のしないで** はなくなりますが必要な 3 つ以上の値を確認してから、ブール値を使用します。 + + 列挙型にも、値の将来的な拡張する余地の値に説明されている列挙型に追加するすべての問題に注意する必要があります [列挙型デザイン](../../../docs/standard/design-guidelines/enum.md)します。 + + **✓ を検討してください** が本当に 2 つの状態の値でのみを使用して、ブール型プロパティを初期化するコンス トラクターのパラメーターをブール値を使用します。 + +### 引数の検証 + **✓ は** パブリック、プロテクト、または明示的に実装されたメンバーに渡される引数を検証します。 スロー , 、または検証に失敗した場合、そのサブクラスのいずれかです。 + + 実際の検証とは限りませんが、パブリックまたはプロテクト メンバー自体で発生することに注意します。 プライベートまたは内部ルーチン内の下位レベルで実行できます。 重要な点は、エンドユーザーに公開されている領域全体を引数を調べることです。 + + **✓ は** スロー null 引数が渡され、メンバーが null の引数をサポートしていない場合。 + + **✓ は** 列挙型のパラメーターを検証します。 + + 列挙型の引数は列挙型で定義されている範囲であるとは限りません。 CLR は、値が列挙型で定義されていない場合でも、任意の整数値を列挙型の値にキャストできます。 + + **X のしないで** を使用して 列挙型の範囲を確認します。 + + **✓ は** 変更可能な引数は、検証後で変更された可能性に注意してください。 + + メンバーが高度なセキュリティの場合は、コピーを作成し、検証および引数を処理することをお勧めしています。 + +### パラメーターの引き渡し + Framework デザイナーの観点からは、パラメーターの主な 3 つのグループ: 値渡しのパラメーター、 `ref` パラメーター、および `out` パラメーター。 + + 引数が値渡しでパラメーターを通じて渡されると、メンバーは、実際に渡された引数のコピーを受け取ります。 引数が値型の場合、引数のコピーは、スタックに配置します。 引数が参照型の場合は、参照のコピーは、スタックに配置します。 パラメーターの値渡しを c\#、VB.NET、および C\+\+ では、既定値などの最も一般的な CLR 言語です。 + + 引数を渡すとき、 `ref` パラメーター、メンバーは実際に渡された引数への参照を受け取ります。 引数が値型の場合、引数への参照はスタックに配置します。 引数が参照型の場合、参照への参照がスタックに配置します。`Ref` パラメーターは、呼び出し元によって渡される引数を変更するメンバーを許可するように使用できます。 + + `Out` パラメーターはのような `ref` に多少の違いのパラメーターです。 割り当てられていないし、いくつかの値を割り当てる前に、メンバーの本体で読み取ることができません、パラメーターが初期状態と見なされます。 また、パラメーターはメンバーを返す前にいくつかの値を割り当てるがあります。 + + **X 回避** を使用して `out` または `ref` パラメーター。 + + 使用して `out` または `ref` パラメーターには、ポインター、値型と参照型の違いの理解および複数の戻り値を持つメソッドの処理の使用経験が必要です。 違いも、 `out` と `ref` パラメーターはあまり理解されていません。 開発者全般に向けて設計フレームワーク開発者ではユーザー扱い方を習得することは期待する必要があります `out` または `ref` パラメーター。 + + **X のしないで** 参照型は参照渡しされます。 + + 参照を交換するために使用するメソッドなど、ルールをいくつかの例外があります。 + +### 可変個のパラメーターを持つメンバー + メンバーを可変個の引数を受け取ることができますが、配列パラメーターを提供することによって表されます。 たとえば、 、次のメソッドを提供します。 + +``` +public class String { + public static string Format(string format, object[] parameters); +} +``` + + ユーザーが呼び出すことができますし、 メソッドを次のとおりです。 + + `String.Format("File {0} not found in {1}",new object[]{filename,directory});` + + 配列パラメーターに、c\# params キーワードを追加すると、いわゆる params 配列パラメーターにパラメーターを変更し、一時配列を作成するショートカットを提供します。 + +``` +public class String { + public static string Format(string format, params object[] parameters); +} +``` + + これにより、引数リストで直接、配列要素を渡すことによって、メソッドを呼び出すユーザーです。 + + `String.Format("File {0} not found in {1}",filename,directory);` + + パラメーター リストの最後のパラメーターにのみ、params キーワードを追加できることに注意してください。 + + **✓ を検討してください** で少数の要素の配列を渡すには、エンドユーザーの予定がある場合、配列パラメーターに、params キーワードを追加します。 多数の要素が渡されることに共通のシナリオと正常な場合ユーザーは可能性がありますこれらの要素のインラインとにかくに渡さないため、params キーワードは必要はありません。 + + **X 回避** params 配列を使用して、呼び出し元がほとんど常に入力している既に配列の場合。 + + たとえば、バイト配列パラメーターを持つメンバーは個々 のバイトを渡すことによってことはほぼありませんというです。 このため、.NET Framework でのバイト配列パラメーターは、params キーワードを使わないでください。 + + **X のしないで** params 配列パラメーターを受け取るメンバーによって、配列が変更された場合に、params 配列を使用します。 + + 呼び出しサイトで一時配列に多くのコンパイラがメンバーに引数を有効にするため、配列は、一時オブジェクトである可能性があり、したがって配列へのすべての変更は失われます。 + + **✓ を検討してください** 単純なオーバー ロードで、params キーワードを使用する場合でもより複雑なオーバー ロードでは使用できませんでした。 + + すべてのオーバー ロードされていない場合でも、1 つのオーバー ロードではパラメーター配列を持つユーザーは値のかどうかを考えてください。 + + **✓ は** params キーワードを使用できるように、順序付けられたパラメーターを実行してください。 + + **✓ を検討してください** 少数の非常に高く、パフォーマンスが重視される Api の引数による呼び出しに対して特別なオーバー ロードとコード パスを提供します。 + + これにより、引数の数が少ない、API が呼び出されたときに、配列オブジェクトを作成しないようにします。 によって、配列パラメーターの単数形を取得し、数値のサフィックスを追加するには、パラメーターの名前を形成します。 + + 完全なコード パスを特別なケースに配列を作成するだけでなく、一般的なメソッドを呼び出す場合、これを行うだけする必要があります。 + + **✓ は** params 配列引数として null を渡すことがあります。 + + 配列が処理する前に null でないことを検証する必要があります。 + + **X のしないで** を使用して、 `varargs` メソッド、それ以外の場合、省略記号ボタンと呼ばれます。 + + C などのいくつかの CLR 言語と呼ばれる変数のパラメーター リストを渡す場合の代替の規則をサポートする `varargs` メソッドです。 規則には CLS 準拠ではないため、フレームワークの使用を避けてください。 + +### ポインター パラメーター + 一般に、ポインターは、適切に設計されたマネージ コード フレームワークの面積パブリックにする必要があります表示されません。 ほとんどの場合、ポインターをカプセル化する必要があります。 ただし、ポインターは相互運用性の理由から、必要な場合によっては、ポインターを使用して、このような場合は、適切です。 + + **✓ は** ポインターは CLS 準拠ではないために、ポインター引数を受け取り、メンバーの代替を提供します。 + + **X 回避** 高価な引数がポインター引数のチェックを実行します。 + + **✓ は** ポインターを持つメンバーの設計時に共通のポインターに関連する規則に従います。 + + たとえば、必要はありません開始インデックスを渡す単純なポインターの算術演算は、同じ結果を得るを使用できるためです。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [メンバー デザインのガイドライン](../../../docs/standard/design-guidelines/member.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/property.md b/docs/standard/design-guidelines/property.md new file mode 100644 index 00000000000..5de9fc160bc --- /dev/null +++ b/docs/standard/design-guidelines/property.md @@ -0,0 +1,102 @@ +--- +title: "プロパティのデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "メンバー デザインのガイドライン、プロパティ" + - "プロパティ [.NET Framework] のデザイン ガイドライン" +ms.assetid: 127cbc0c-cbed-48fd-9c89-7c5d4f98f163 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# プロパティのデザイン +プロパティはメソッドに厳密には非常に似ていますは、使用シナリオの観点からはまったく異なります。 これらは、スマート フィールドと考える必要があります。 フィールドの呼び出しの構文とメソッドの柔軟性があります。 + + **✓ は** 取得専用プロパティを作成する場合は、呼び出し元では、プロパティの値を変更できません。 + + 留意した場合の種類プロパティが変更可能な参照型、プロパティが取得専用の場合でも、プロパティの値を変更することができます。 + + **X のしないで** 設定専用のプロパティまたはプロパティを get アクセス操作子よりも広範なアクセシビリティを持つ set アクセス操作子を提供します。 + + たとえば、パブリックな setter と保護された getter プロパティは使用しないでいます。 + + プロパティの get アクセス操作子を提供できない場合は、代わりにメソッドとしての機能を実装します。 メソッド名での開始を検討してください `Set` 内容は指定済みの場合、プロパティに従います。 たとえば、 というメソッドを持ち `SetCachePath` というセット取り専用プロパティではなく `CachePath`です。 + + **✓ は** 実用的な既定値は、すべてのプロパティを既定の設定、セキュリティ ホールやそれほど非効率的なコードで発生しないことを確認します。 + + **✓ は** を使用する場合でも、この結果、オブジェクトの場合は、一時的な無効な状態で、任意の順序で設定するプロパティです。 + + 一般的に、いくつかの値を 1 つのプロパティの無効になるポイントを相互に関連する 2 つ以上のプロパティの同じオブジェクトに対して他のプロパティの値が割り当てられます。 このような場合オブジェクトによって、相互に関連するプロパティをまとめて使用実際になるまで無効な状態に起因する例外を延期する必要があります。 + + **✓ は** プロパティ set アクセス操作子が例外をスローした場合は、前の値を保持します。 + + **X 回避** プロパティの getter から例外をスローします。 + + プロパティの getter は単純な操作をする必要があり、すべての前提条件のないです。 Getter が例外をスローする場合にする必要がありますおそらくに再設計するメソッドです。 このルールは、インデクサーの場合、引数の検証の結果として例外を考えて行うには適用されませんに注意してください。 + +### インデックス付きプロパティのデザイン + インデックス付きプロパティは、パラメーターを持つことができますし、配列のインデックス処理のような特別な構文を使用して呼び出すことができる特別なプロパティです。 + + インデックス付きプロパティは、インデクサーとも呼ばれます。 インデクサーは、論理的なコレクション内の項目へのアクセスを提供する Api でのみ使用する必要があります。 たとえば、文字列は、一連の文字、やでインデクサー その文字にアクセスするようになりました。 + + **✓ を検討してください** インデクサーを使用して、内部配列に格納されたデータへのアクセスを提供します。 + + **✓ を検討してください** 項目のコレクションを表す型のインデクサーを提供します。 + + **X 回避** 1 つ以上のパラメーターを持つプロパティを使用してインデックスを作成します。 + + 設計には、複数のパラメーターが必要とする場合は、実際に、プロパティは、論理的な集合をアクセサーを表すかどうかを再確認します。 そうでない場合は、代わりにメソッドを使用します。 まず、メソッド名で `Get` または `Set`です。 + + **X 回避** 以外のパラメーターの型を持つインデクサー , 、, 、, 、, 、または列挙型。 + + 設計には、その他の種類のパラメーターが必要とする場合は、厳密 API が、論理的な集合を本当にアクセサーを表すかどうかを再評価します。 そうでない場合は、メソッドを使用します。 まず、メソッド名で `Get` または `Set`です。 + + **✓ は** 名前を使用して `Item` のインデックス付きプロパティを明らかに向上名がある場合を除き、\(などを参照してください、 プロパティを `System.String`\)。 + + インデクサーは、C\# の場合は、Item という名前の既定でです。 をこの名前をカスタマイズできます。 + + **X のしないで** インデクサーとセマンティクス的に同等のメソッドの両方を提供します。 + + **X のしないで** 1 つ以上のファミリの 1 つの型のオーバー ロードされたインデクサーを提供します。 + + これは、c\# コンパイラによって強制されます。 + + **X のしないで** を使用して既定以外のインデックス付きプロパティです。 + + これは、c\# コンパイラによって強制されます。 + +### プロパティ変更通知イベント + プロパティの値の変更のユーザーに通知するイベントを提供する便利な場合があります。 たとえば、 `System.Windows.Forms.Control` を生成、 `TextChanged` の値の後にイベントの `Text` プロパティが変更されました。 + + **✓ を検討してください** 高水準の api \(通常、デザイナー コンポーネント\) のプロパティの値が変更されたときに通知イベントを発生させる変更します。 + + ユーザーがオブジェクトのプロパティを変更する場合を判断するための適切なシナリオがある場合、オブジェクトには、プロパティの変更通知イベントを発生させます。 + + ただし、オーバーヘッドの基本型やコレクションなどの低レベルの Api のようなイベントを発生させるのには価値がある可能性がありますはありません。 たとえば、 新しい項目がリストに追加されたときに、このようなイベントを生成しませんが、 `Count` プロパティが変更されました。 + + **✓ を検討してください** 外的要因を使用して、プロパティの値が変更されたときに、通知イベントを発生させる変更します。 + + 何らかの外的要因 \(的に以外のオブジェクトでメソッドを呼び出すことによって\) を使用して、プロパティ値が変更された場合、値が変更されが変更されたことを開発者にイベントを示しています。 その良い例が、 `Text` テキスト ボックス コントロールのプロパティです。 内のテキストを入力すると、 `TextBox`, 、プロパティの値が自動的に変更します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [メンバー デザインのガイドライン](../../../docs/standard/design-guidelines/member.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/protected-members.md b/docs/standard/design-guidelines/protected-members.md new file mode 100644 index 00000000000..00ab253d498 --- /dev/null +++ b/docs/standard/design-guidelines/protected-members.md @@ -0,0 +1,48 @@ +--- +title: "プロテクト メンバー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "保護されているメンバー [.NET Framework]" + - "プロテクト メンバー" + - "クラス [.NET Framework] の封印されていません。" + - "メンバーの保護されているクラス [.NET Framework]" + - "封印されていないクラス" + - "クラスの動作をカスタマイズします。" +ms.assetid: aa0b58ee-3956-494d-ab48-471ae5db8740 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# プロテクト メンバー +単独でプロテクト メンバーは、すべての機能拡張を指定しないが、高い拡張性により、サブクラス化をより強力なことができます。 メインのパブリック インターフェイスを不必要に複雑にせず、高度なカスタマイズ オプションを公開する、使用できます。 + + フレームワークの設計者は、「保護」の名前は、セキュリティに関する誤った認識を移すことができるため、保護されたメンバーには注意する必要があります。 サブクラス封印されていないクラスとメンバーへのアクセスが保護することがすべてのユーザーと、防御的なコーディング手法がパブリック メンバーを使用をプロテクト メンバーに適用するため、同じ。 + + **✓ を検討してください** プロテクト メンバーは高度なカスタマイズを使用します。 + + **✓ は** セキュリティ、ドキュメント、および互換性の分析を行うための public と封印されていないクラスでプロテクト メンバーを処理します。 + + クラスから継承するすべてのユーザーと、プロテクト メンバーにアクセスします。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [機能拡張のデザイン](../../../docs/standard/design-guidelines/designing-for-extensibility.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/sealing.md b/docs/standard/design-guidelines/sealing.md new file mode 100644 index 00000000000..c1ba2fb5fce --- /dev/null +++ b/docs/standard/design-guidelines/sealing.md @@ -0,0 +1,63 @@ +--- +title: "封印 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "機能拡張の制限" + - "シール クラス [.NET Framework]" + - "カスタマイズの防止" + - "シール クラス" +ms.assetid: cc42267f-bb7a-427a-845e-df97408528d4 +caps.latest.revision: 10 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 封印 +オブジェクト指向フレームワークの機能の 1 つは、開発者が拡張および framework デザイナーによって予期しない方法でそれらをカスタマイズできます。 これは、両方の電源および拡張可能なデザインの危険性です。 ご利用のフレームワークを設計するときは、そのため、必要なときは、機能拡張の慎重に設計し、危険な場合は、機能拡張を制限するために非常に重要です。 + + 機能拡張を防ぐ強力なメカニズムをシールするとします。 クラスまたは個別のメンバーのいずれかを封印することができます。 クラスをシールすると、ユーザーがクラスから継承できなくなります。 メンバーをシールすると、ユーザーが特定のメンバーをオーバーライドできなくなります。 + + **X のしないで** これを行うには相応の理由をしなくてもクラスをシールします。 + + 機能拡張シナリオを想定することはできませんので、クラスをシールすることは相応の理由ではありません。 Framework ユーザーが便利なメンバーを追加するなど、さまざまな明確な理由のクラスから継承したいです。 参照してください [封印されていないクラス](../../../docs/standard/design-guidelines/unsealed-classes.md) 明確な理由の例についてはユーザーが型を継承します。 + + クラスをシールする理由を以下に示します。 + +- クラスは、静的クラスです。 「[静的クラスのデザイン](../../../docs/standard/design-guidelines/static-class.md)」を参照してください。 + +- クラスは、継承されたプロテクト メンバーにセキュリティに影響する機密情報を格納します。 + +- クラスは、多くの仮想メンバーを継承し、それらを個別に封印した場合のコストは封印されていないクラスを残すことのメリットを上回ります。 + +- クラスは、非常に高速なランタイム ルックアップを必要とする属性です。 Sealed 属性には、封印されていないものよりもわずかに高いパフォーマンス レベルがあります。 「[属性](../../../docs/standard/design-guidelines/属性.md)」を参照してください。 + + **X のしないで** sealed 型でプロテクト仮想メンバーを宣言します。 + + 定義上、シールされた型からは継承できません。 つまり、sealed 型でプロテクト メンバーを呼び出すことができない、sealed 型で仮想メソッドをオーバーライドすることはできません。 + + **✓ を検討してください** をオーバーライドするメンバーをシールします。 + + 仮想メンバーの概要に起因する問題 \(で説明した [仮想メンバー](../../../docs/standard/design-guidelines/virtual-members.md)\) 少しほどには同様に、上書きを適用します。 上書きの封印を開発者から隠ぺい継承階層の時点からこれらの問題です。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [機能拡張のデザイン](../../../docs/standard/design-guidelines/designing-for-extensibility.md) + [封印されていないクラス](../../../docs/standard/design-guidelines/unsealed-classes.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/static-class.md b/docs/standard/design-guidelines/static-class.md new file mode 100644 index 00000000000..3dc01f984bd --- /dev/null +++ b/docs/standard/design-guidelines/static-class.md @@ -0,0 +1,52 @@ +--- +title: "静的クラスのデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "型のデザインのガイドライン、静的クラス" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] クラス" + - "静的クラス [.NET Framework]" + - "静的クラス [.NET Framework]" + - "クラス [.NET Framework] のデザイン ガイドライン" + - "クラス型の設計ガイドライン" +ms.assetid: d67c14d8-c4dd-443f-affb-4ccae677c9b6 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 静的クラスのデザイン +静的クラスが静的メンバーのみが含まれるクラスとして定義されている \(もちろんから継承されたインスタンスのメンバーだけでなく とコンス トラクターはプライベート可能性があります\)。 一部の言語では、静的クラスの組み込みサポートを提供します。 C\# 2.0 以降では、クラスが静的に宣言されると、シール、抽象クラスで、あるインスタンス メンバーをオーバーライドまたは宣言されていることができます。 + + 静的クラスは、純粋なオブジェクト指向設計と単純さのバランスです。 その他の操作へのショートカットを提供によく使用されます \(よう \)、拡張メソッド、または完全なオブジェクト指向のラッパーが保証されているいない機能の保持者 \(など \)。 + + **✓ は** 静的クラスは控えめに使用します。 + + 静的クラスは、オブジェクト指向のコア フレームワークのサポート クラスとしてのみ使用する必要があります。 + + **X のしないで** 雑バケットとして静的クラスを処理します。 + + **X のしないで** 宣言または静的クラスのインスタンス メンバーをオーバーライドします。 + + **✓ は** シール、抽象クラスで静的クラスを宣言し、使用するプログラミング言語には静的クラスの組み込みサポートがない場合、プライベート インスタンス コンス トラクターを追加します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [型デザインのガイドライン](../../../docs/standard/design-guidelines/type.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/struct.md b/docs/standard/design-guidelines/struct.md new file mode 100644 index 00000000000..95eafbda0a4 --- /dev/null +++ b/docs/standard/design-guidelines/struct.md @@ -0,0 +1,62 @@ +--- +title: "構造体のデザイン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "クラス ライブラリ デザインのガイドライン [.NET Framework] 構造体" + - "構造体の割り当てを解除" + - "構造体の割り当てください。" + - "値型、構造体" + - "構造の設計" + - "型のデザインのガイドライン、構造体" + - "構造体 [.NET Framework] のデザイン ガイドライン" +ms.assetid: 1f48b2d8-608c-4be6-9ba4-d8f203ed9f9f +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 構造体のデザイン +ほとんどの場合、汎用的な値の型は構造体、c\# のキーワードと呼ばれます。 このセクションでは、一般的な構造体のデザインのガイドラインを示します。 + + **X のしないで** 構造体の既定のコンス トラクターを提供します。 + + このガイドラインに従うには、配列の項目ごとに、コンス トラクターを実行することがなく作成する構造体の配列が使用できます。 C\# で許可しないことを既定のコンス トラクターを持つ構造体に注意してください。 + + **X のしないで** 変更可能な値の型を定義します。 + + 変更可能な値の型には、いくつかの問題があります。 たとえば、プロパティ get アクセス操作子が値型を返すときに、呼び出し元は、コピーを受け取ります。 コピーが暗黙的に作成されるため、開発者は、コピー、および元の値ではなくを変化することに注意してください限りません。 また、一部の言語 \(動的言語、特に\) では、できるコピーによって、ローカル変数を逆参照されたときにも、ために、変更可能な値の型を使用して問題があります。 + + **✓ は** すべてのインスタンス データの状態が 0 に設定されているように、false の場合、または null \(該当する場合\) は無効です。 + + 無効なインスタンスの偶発的な作成を禁止これは、構造体の配列が作成されるときです。 + + **✓ は** 実装 を値の型。 + + 値型のメソッドとボックス化、および既定の実装はリフレクションを使用しているため、非常に効率です。 多くのパフォーマンスを向上させることができ、できる機構を実装するため、ボックス化は発生しません。 + + **X のしないで** 明示的に延長 します。 実際には、ほとんどの言語は、これを防ぐ。 + + 通常、構造体では、非常に役に立ちますが、小規模で、1 つ、変更できないの値がないボックス化する多くの場合にのみ使用する必要があります。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [型デザインのガイドライン](../../../docs/standard/design-guidelines/type.md) + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [クラスまたは構造体の選択](../../../docs/standard/design-guidelines/choosing-between-class-and-struct.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/system-xml-usage.md b/docs/standard/design-guidelines/system-xml-usage.md new file mode 100644 index 00000000000..74d78747aea --- /dev/null +++ b/docs/standard/design-guidelines/system-xml-usage.md @@ -0,0 +1,41 @@ +--- +title: "System.Xml の使用法 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: 82302f0d-a621-4c6f-b57d-999bd61f21a6 +caps.latest.revision: 4 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 4 +--- +# System.Xml の使用法 +このセクションでに存在するいくつかの型の使用方法について説明 XML データを表現するために使用する名前空間。 + + **X のしないで** を使用して または XML データを表現します。 インスタンスの使用をお勧め , 、, 、, 、または型を細分化 代わりにします。`XmlNode``XmlDocument` パブリック Api で公開するために設計されていません。 + + **✓ は** を使用して `XmlReader`, 、`IXPathNavigable`, 、または型を細分化 `XNode` メンバーや XML を戻り値の入力または出力として。 + + 代わりにこれらの抽象化を使用して `XmlDocument`, 、`XmlNode`, 、または , を公開する仮想の XML データ ソースで作業を行うされ、メモリ内の XML ドキュメントの特定の実装からメソッドが分離されるため、 `XNode`, 、`XmlReader`, 、または です。 + + **X のしないで** サブクラス `XmlDocument` を基になるオブジェクト モデルまたはデータ ソースの XML ビューを表す型を作成するかどうか。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [使用方法のガイドライン](../../../docs/standard/design-guidelines/usage-guidelines.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/type.md b/docs/standard/design-guidelines/type.md new file mode 100644 index 00000000000..c3f2771a16d --- /dev/null +++ b/docs/standard/design-guidelines/type.md @@ -0,0 +1,59 @@ +--- +title: "型デザインのガイドライン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "型デザインのガイドライン" + - "型デザインのガイドラインについての型のデザイン ガイドライン" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] 型のデザインのガイドライン" + - "型 [.NET Framework] のデザイン ガイドライン" +ms.assetid: 6b49314e-8bba-43ea-97ca-4e0255812f95 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 型デザインのガイドライン +CLR の観点からは、型の 2 つのカテゴリがあります: 参照型と値の型、型それぞれ独自の特定の設計規則に以上の論理グループに分割してフレームワーク デザインの詳細については、目的が、します。 + + クラスは、参照型の一般的なケースです。 ほとんどのフレームワークの型の大部分を構成します。 クラスは、サポートされる他のオブジェクト指向の機能の豊富なをし、一般的な適用性を的な人気を支払わなかったです。 基本クラスと抽象クラスは、拡張機能に関連する、特別な論理グループです。 + + インターフェイスは、参照型と値の型の両方によって実装可能な型の型です。 したがって、参照型と値の型のポリモーフィックな階層のルートとして使用することができます。 さらに、インターフェイスは、CLR によってネイティブでサポートされていない多重継承をシミュレートするために使用できます。 + + 構造体は、値型の一般的な場合があり、小規模でシンプルな型、言語プリミティブのように予約されている必要があります。 + + 列挙型は、日、週、コンソールの色のなどの値の短いセットを定義するのに使用される値型の特殊なケースです。 + + 静的クラスは、型の静的メンバーのコンテナーを示すものです。 その他の操作へのショートカットを提供するよく使用されます。 + + デリゲート、例外、属性、配列、およびコレクションは、特別な用途のためのもので、参照型のすべての特殊なケースとの設計と使用法に関するガイドラインはこのドキュメントで他の場所で説明します。 + + **✓ は** 各タイプが適切に定義された一連の関連するメンバーは、ランダムな関連性のない機能のコレクションだけでなくであることを確認します。 + +## このセクションの内容 + [クラスまたは構造体の選択](../../../docs/standard/design-guidelines/choosing-between-class-and-struct.md) + [抽象クラスのデザイン](../../../docs/standard/design-guidelines/abstract-class.md) + [静的クラスのデザイン](../../../docs/standard/design-guidelines/static-class.md) + [インターフェイスのデザイン](../../../docs/standard/design-guidelines/interface.md) + [構造体のデザイン](../../../docs/standard/design-guidelines/struct.md) + [列挙型デザイン](../../../docs/standard/design-guidelines/enum.md) + [入れ子にされた型](../../../docs/standard/design-guidelines/nested-types.md) + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/unsealed-classes.md b/docs/standard/design-guidelines/unsealed-classes.md new file mode 100644 index 00000000000..0ad6ed6855c --- /dev/null +++ b/docs/standard/design-guidelines/unsealed-classes.md @@ -0,0 +1,44 @@ +--- +title: "封印されていないクラス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "クラス [.NET Framework] の封印されていません。" + - "封印されていないクラス" + - "クラスの継承" +ms.assetid: 9a3bd505-90f5-4053-9f0d-3cf5fa3d3ebf +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 封印されていないクラス +シール クラスは継承できませんし、機能拡張は、します。 これに対し、封印されていないクラスから継承できるクラスと呼びます。 + + **✓ を検討してください** 安価で提供する優れた方法まだ非常に役に立ちますフレームワークへの拡張機能として、仮想メンバーまたはプロテクト メンバーを追加なしで封印されていないクラスを使用します。 + + 多くの場合、開発者はカスタム コンス トラクター、新しいメソッドは、メソッドのオーバー ロードなどのための便利なメンバーを追加するために封印されていないクラスから継承したいと考えているとします。 たとえば、 `System.Messaging.MessageQueue` が封印されていないと、できるので、ユーザーがその既定値を特定のキューのパスにカスタムのキューを作成する特定のシナリオ用の API を単純化するカスタム メソッドを追加します。 + + 既定では、ほとんどのプログラミング言語でクラスが封印されていない、フレームワークのほとんどのクラスに対して推奨される既定ではもできます。 封印されていない型によって提供される拡張機能は、フレームワークのユーザーが非常にありがたいと封印されていない型に関連付けられた相対的に低いテスト コストによりを提供する非常に低価格です。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [機能拡張のデザイン](../../../docs/standard/design-guidelines/designing-for-extensibility.md) + [封印](../../../docs/standard/design-guidelines/sealing.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/usage-guidelines.md b/docs/standard/design-guidelines/usage-guidelines.md new file mode 100644 index 00000000000..b41bfc0ce0d --- /dev/null +++ b/docs/standard/design-guidelines/usage-guidelines.md @@ -0,0 +1,46 @@ +--- +title: "使用方法のガイドライン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "クラス ライブラリ デザインのガイドライン [.NET Framework] の使用に関するガイドライン" +ms.assetid: 42215ffa-a099-4a26-b14e-fb2bdb6f95b7 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 使用方法のガイドライン +このセクションには、パブリックにアクセスできる Api で一般的な種類の使用に関するガイドラインが含まれています。 組み込みフレームワーク型 \(シリアル化属性など\) および一般的な演算子のオーバー ロードの直接の使用状況を処理します。 + + インターフェイスは、このセクションで説明されていないは、後ほど、 [Dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md) セクションです。 + +> [!NOTE] +> 組み込みの .NET Framework 型のガイドラインと他の一般的な方法に関する追加情報には、次のリファレンス トピックを参照してください: , 、, 、, 、, 、, 、, 、, 、です。 + +## このセクションの内容 + [配列](../../../docs/standard/design-guidelines/arrays.md) + [属性](../../../docs/standard/design-guidelines/属性.md) + [コレクション クラス](../../../amples/snippets/cpp/VS_Snippets_Misc/cx_collections/cpp/collections.vcxproj) + [シリアル化](../../../docs/standard/design-guidelines/シリアル化.md) + [System.Xml の使用法](../../../docs/standard/design-guidelines/system-xml-usage.md) + [等値演算子](../../../docs/standard/design-guidelines/equality-operators.md) + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/using-standard-exception-types.md b/docs/standard/design-guidelines/using-standard-exception-types.md new file mode 100644 index 00000000000..e8fab3339aa --- /dev/null +++ b/docs/standard/design-guidelines/using-standard-exception-types.md @@ -0,0 +1,78 @@ +--- +title: "標準の例外の型を使用します。 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "標準の種類の例外をスロー" + - "キャッチ (例外の)" + - "例外のキャッチ" + - "例外のスロー" +ms.assetid: ab22ce03-78f9-4dca-8824-c7ed3bdccc27 +caps.latest.revision: 17 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 17 +--- +# 標準の例外の型を使用します。 +このセクションでは、フレームワークとその使用方法の詳細な情報によって提供される標準の例外について説明します。 一覧は完全ではではありません。 その他のフレームワークの例外の種類の使用状況の .NET Framework リファレンス ドキュメントを参照してください。 + +## 例外と SystemException + **X のしないで** スロー または です。 + + **X のしないで** キャッチ `System.Exception` または `System.SystemException` framework コードで再スローする場合を除き、します。 + + **X 回避** キャッチ `System.Exception` または `System.SystemException`, では、トップレベルの例外ハンドラーです。 + +## ApplicationException + **X のしないで** スローまたはそれから派生 します。 + +## InvalidOperationException + **✓ は** スロー、 オブジェクトが状態が適切である場合。 + +## ArgumentException、ArgumentNullException、および ArgumentOutOfRangeException + **✓ は** スロー または不正な引数がメンバーに渡された場合は、そのサブタイプのいずれかです。 該当する場合は、最派生例外の種類を選びます。 + + **✓ は** 設定、 `ParamName` プロパティのサブクラスのいずれかをスローするときに `ArgumentException`します。 + + このプロパティは、例外がスローされる原因となったパラメーターの名前を表します。 コンス トラクター オーバー ロードのいずれかを使用して、プロパティを設定できることに注意してください。 + + **✓ は** を使用して `value` プロパティ set アクセス操作子の暗黙の value パラメーターの名前。 + +## NullReferenceException、IndexOutOfRangeException、およびです \(accessviolationexception\) + **X のしないで** 明示的または暗黙的にスローする、api で公開されている呼び出し可能 , 、, 、または です。 これらの例外は予約されているとおよびほとんどの場合は、バグを示す場合に、実行エンジンによってスローされます。 + + 引数に、これらの例外がスローされないようにチェックを行います。 これらの例外をスローすることは、時間の経過と共に変わる可能性があるメソッドの実装の詳細を公開します。 + +## StackOverflowException + **X のしないで** を明示的にスロー します。 CLR によってのみ、例外が明示的にスローする必要があります。 + + **X のしないで** キャッチ `StackOverflowException`します。 + + ほとんどでは、任意のスタック オーバーフローが存在する場合に整合性があるマネージ コードを記述することはできません。 CLR のアンマネージ部分一貫して任意のスタック オーバーフローから取り除くではなく移動を適切に定義された場所スタックがオーバーフローしたプローブを使用しています。 + +## OutOfMemoryException + **X のしないで** を明示的にスロー します。 この例外では、CLR インフラストラクチャによってのみがスローされます。 + +## ComException、SEHException、および ExecutionEngineException + **X のしないで** を明示的にスロー , 、, 、および です。 これらの例外では、CLR インフラストラクチャによってのみがスローされます。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [例外のデザイン ガイドライン](../../../docs/standard/design-guidelines/exceptions.md) \ No newline at end of file diff --git a/docs/standard/design-guidelines/virtual-members.md b/docs/standard/design-guidelines/virtual-members.md new file mode 100644 index 00000000000..312d607c6cc --- /dev/null +++ b/docs/standard/design-guidelines/virtual-members.md @@ -0,0 +1,53 @@ +--- +title: "仮想メンバー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "オーバーライド可能なメンバー" + - "仮想メンバー" + - "仮想メンバー [.NET Framework]" +ms.assetid: 8ff4eb97-0364-43ec-8a02-934b5cd94d19 +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 仮想メンバー +このため、サブクラスの動作を変更する、仮想メンバーをオーバーライドできます。 それらはそれらのもたらす拡張性の観点からのコールバックとよく似ていますが、実行のパフォーマンスとメモリの消費に関して優れています。 また、仮想メンバーは、特別な既存の型 \(特殊化\) の種類を作成する必要のあるシナリオで複数な操作です。 + + 仮想メンバーは、コールバックとイベントよりパフォーマンスが向上は、非仮想メソッドをより実行はされません。 + + 仮想メンバーの主な短所は、仮想メンバーの動作はコンパイル時にのみ変更できます。 コールバックの動作は、実行時に変更できます。 + + コールバック \(とそれよりコールバックの他の情報\) などの仮想メンバーは、設計、テスト、および仮想メンバーへの呼び出しが予測できない方法でオーバーライドされることができ、任意のコードを実行できるためのメンテナンス コストがかかる。 またより多くの労力は通常、設計およびそれらを文書化のコストが高いために、仮想メンバーの契約を明確に定義する要求されます。 + + **X のしないで** メンバーをそのためには相応の理由があり、設計、テスト、および仮想メンバーの保守に関連するすべてのコストを認識している場合を除き、仮想化します。 + + 仮想メンバーは、変更を行う際に互換性を損なうことがなくに関して厳格に構成します。 また、これらは非仮想メンバーよりも低速仮想メンバーへの呼び出しがインライン関数ではないためにほとんどの場合です。 + + **✓ を検討してください** に何がどうしても必要なだけの機能拡張を制限することです。 + + **✓ は** 仮想メンバーのアクセシビリティは public で保護されたアクセシビリティを使用します。 パブリック メンバーが利用拡張 \(必要な場合\) プロテクト仮想メンバーを呼び出すことによってできます。 + + クラスのパブリック メンバーは、そのクラスの直接のコンシューマー向けの機能の適切なセットを提供する必要があります。 仮想メンバーが、サブクラスで無効にするように設計し、保護されたアクセシビリティがスコープを使用する場所へのすべての仮想機能拡張ポイントを有効にします。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [機能拡張のデザイン](../../../docs/standard/design-guidelines/designing-for-extensibility.md) \ No newline at end of file diff --git "a/docs/standard/design-guidelines/\343\202\267\343\203\252\343\202\242\343\203\253\345\214\226.md" "b/docs/standard/design-guidelines/\343\202\267\343\203\252\343\202\242\343\203\253\345\214\226.md" new file mode 100644 index 00000000000..a29a605bcd7 --- /dev/null +++ "b/docs/standard/design-guidelines/\343\202\267\343\203\252\343\202\242\343\203\253\345\214\226.md" @@ -0,0 +1,115 @@ +--- +title: "Serialization1 | Microsoft Docs" +ms.custom: "" +ms.date: "12/14/2016" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +ms.assetid: bebb27ac-9712-4196-9931-de19fc04dbac +caps.latest.revision: 4 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +--- +# シリアル化 +シリアル化は、オブジェクトを簡単に永続化または転送できる形式に変換するプロセスです。 たとえば、オブジェクトをシリアル化、HTTP を使用して、移行先のマシンで逆シリアル化したインターネット経由で転送できます。 + + .NET Framework では、さまざまなシリアル化のシナリオ用に最適化された 3 つの主なシリアル化テクノロジを提供します。 次の表には、これらのテクノロジとこれらのテクノロジに関連する主な Framework 型が一覧表示します。 + +|**テクノロジ名**|**メインの種類**|**シナリオ**| +|----------------|----------------|--------------| +|**データ コントラクト シリアル化**|




|永続化全般
Web サービス
JSON| +|**XML シリアル化**||XML の構造を完全に制御を使用して XML 形式| +|**ランタイム シリアル化 \(バイナリおよび SOAP\)**|


|.NET リモート処理| + + **✓ は** 新しい型をデザインするときにシリアル化について考えてみるとします。 + +## サポートに適切なシリアル化テクノロジを選択します。 + **✓ を検討してください** データ コントラクト シリアル化をサポートする場合は、型のインスタンスが永続化したり、Web サービスで使用する必要があります。 + + **✓ を検討してください** データ コントラクト シリアル化ではなく XML にシリアル化をサポートする場合は、型がシリアル化する場合に生成される XML 形式より詳細に制御する必要があります。 + + いくつかの相互運用性、XML を使用する必要があるシナリオの作成でサポートされていないデータ コントラクト シリアル化、たとえば、XML 属性を作成する必要があります。 + + **✓ を検討してください** ランタイム シリアル化をサポートする場合は、型のインスタンスは、.NET リモート処理境界を通過する必要があります。 + + **X 回避** ランタイム シリアル化または XML シリアル化をサポートする一般的な永続化のためだけです。 代わりに、データ コントラクト シリアル化を使用します。 + +## データ コントラクトのシリアル化のサポート + 型は、適用することによってデータ コントラクト シリアル化をサポートする、 型に、 型のメンバー \(フィールドおよびプロパティ\) にします。 + + **✓ を検討してください** データ メンバーを種類 public の場合は、型は、部分信頼で使用できます。 + + 完全な信頼でデータ コントラクト シリアライザーがシリアル化し、非パブリックな型とメンバーを逆シリアル化が、パブリック メンバーのみをシリアル化および部分信頼で逆シリアル化します。 + + **✓ は** を持つすべてのプロパティに getter および setter を実装する です。 データ コントラクト シリアライザーでは、getter と setter のシリアル化可能と見なされる種類の両方が必要です。 \(.NET Framework 3.5 SP1 でいくつかのコレクション プロパティできる取得専用\)。 型は、部分信頼で使用しない場合、は、プロパティの一方または両方が非パブリックがあります。 + + **✓ を検討してください** 逆シリアル化されたインスタンスを初期化するため、シリアル化コールバックを使用します。 + + オブジェクトが逆シリアル化時に、コンス トラクターは呼び出されません。 \(ルールの例外があります。 マークされたコレクションのコンス トラクター 逆シリアル化中に呼び出されます\)。 そのため、通常の構築時に実行される任意のロジックは、シリアル化コールバックのいずれかとして実装する必要があります。 + + `OnDeserializedAttribute` 最もよく使用されるコールバック属性です。 ファミリの他の属性は、 , 、, 、および です。 これらは、それぞれ逆シリアル化、シリアル化の前後に最後に、シリアル化する前に実行されるコールバックをマークする使用できます。 + + **✓ を検討してください** を使用して、 を複雑なオブジェクト グラフを逆シリアル化時に使用する具象型を示します。 + + **✓ は** を作成またはシリアル化できる型を変更するときに、上位および下位互換性を検討してください。 + + ストリームの種類の将来のバージョンをシリアル化されることに注意してくださいは、型の現在のバージョンに逆シリアル化することができ、その逆です。 + + データ メンバーもプライベートで内部、変更できないこと、名前、種類、または型の将来のバージョンでの順序も明示的なパラメーターのデータ コントラクト属性を使用したコントラクトを保持するために特別な注意を踏まない限りを理解しておいてください。 + + シリアル化できる型を変更する場合は、シリアル化の互換性をテストします。 以前のバージョンに新しいバージョンを逆シリアル化しようとし、その逆です。 + + **✓ を検討してください** を実装する 種類の異なるバージョン間のラウンド トリップを許可するようにします。 + + インターフェイスは、あるデータが失われないラウンドトリッピングの間にすることを確認するシリアライザーを使用します。 を現在のバージョンでは、不明な型の将来のバージョンからデータを格納するプロパティを使用し、そのため、データ メンバーに格納されることはできません。 現在のバージョンは後でシリアル化し、今後のバージョンに逆シリアル化と、追加のデータはシリアル化ストリームに使用できます。 + +## XML シリアル化のサポート + データ コントラクト シリアル化は、主な \(既定\)、.NET Framework でのシリアル化テクノロジがシリアル化のシナリオでデータ コントラクト シリアル化がサポートされていません。 たとえば、ことはできませんした XML シリアライザーによって生成または使用の形状を完全に制御します。 そのような微調整が必要な場合は、XML シリアル化、使用するがあり、型は、このシリアル化テクノロジをサポートするために設計する必要があります。 + + **X 回避** 生成される XML の構造を制御する非常に強力な理由がない限り、XML シリアル化、専用の型をデザインします。 このシリアル化テクノロジは、前のセクションで説明したデータ コントラクト シリアル化によって置き換えられました。 + + **✓ を検討してください** を実装する、 インターフェイスの XML シリアル化属性を適用することによって提供される内容よりもシリアル化された XML の形状より詳細に制御する場合。 2 つの方法で、インターフェイスの , をシリアル化された XML ストリームを完全に制御できるようにします。 適用することで、型の生成を取得する XML スキーマを制御することも、 `XmlSchemaProviderAttribute`です。 + +## ランタイム シリアル化のサポート + ランタイム シリアル化は、.NET リモート処理で使用されるテクノロジです。 .NET リモート処理を使用して、型を変換すると思われる場合は、実行時シリアル化をサポートしているかどうかを確認する必要があります。 + + ランタイム シリアル化の基本的なサポートを適用することで指定することができます、 , 、しより高度なシナリオでは、単純なランタイム シリアル化可能なパターンを実装する必要が \(実装 し、シリアル化コンス トラクターを提供\)。 + + **✓ を検討してください** ランタイム シリアル化をサポートする場合は、型が .NET リモート処理で使用されます。 たとえば、 名前空間は、.NET リモート処理を使用し、これで、すべての型の間で交換 `System.AddIn` アドインは、ランタイムのシリアル化をサポートする必要があります。 + + **✓ を検討してください** シリアル化プロセスを完全に制御する場合、ランタイム シリアル化可能なパターンを実装します。 たとえば、データを変換する場合シリアル化または、逆シリアル化を取得します。 + + パターンは非常に単純です。 実装を行うだけで済みますが、 インターフェイスし、オブジェクトが逆シリアル化時に使用される特殊なコンス トラクターを提供します。 + + **✓ は** シリアル化コンス トラクターを保護して、型指定されており、ここでのサンプルに示すとおりに正確にという名前の 2 つのパラメーターを提供します。 + +``` +[Serializable] +public class Person : ISerializable { + protected Person(SerializationInfo info, StreamingContext context) { + ... + } +} +``` + + **✓ は** 実装、 `ISerializable` メンバーに明示的にします。 + + **✓ は** にリンク確認要求を適用 実装します。 これにより、コアおよびランタイムのシリアライザーは、メンバーへのアクセス権を持つのみ完全に信頼できます。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [使用方法のガイドライン](../../../docs/standard/design-guidelines/usage-guidelines.md) \ No newline at end of file diff --git "a/docs/standard/design-guidelines/\345\261\236\346\200\247.md" "b/docs/standard/design-guidelines/\345\261\236\346\200\247.md" new file mode 100644 index 00000000000..cfab8a527dd --- /dev/null +++ "b/docs/standard/design-guidelines/\345\261\236\346\200\247.md" @@ -0,0 +1,63 @@ +--- +title: "Attributes1 | Microsoft Docs" +ms.custom: "" +ms.date: "12/14/2016" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-clr" +ms.tgt_pltfrm: "" +ms.topic: "article" +dev_langs: + - "VB" + - "CSharp" + - "C++" + - "jsharp" +helpviewer_keywords: + - "属性 [.NET Framework]" + - "クラス ライブラリ デザインのガイドライン [.NET Framework] 属性" +ms.assetid: ee0038ef-b247-4747-a650-3c5c5cd58d8b +caps.latest.revision: 16 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +--- +# 属性 + カスタム属性を定義するために使用する基本クラスです。 + + 属性は、アセンブリ、型、メンバー、およびパラメーターなどのプログラミング要素に追加できる注釈です。 アセンブリのメタデータに格納されていてリフレクション Api を使用して実行時にアクセスできます。 たとえば、フレームワークが定義されて、 , 、これは、型またはメンバーは廃止されていることを示すために、型またはメンバーに適用できます。 + + 属性には、属性に関連するその他のデータを受け渡す 1 つまたは複数のプロパティがあります。 たとえば、 `ObsoleteAttribute` のリリースに関する追加情報を含めることが、型またはメンバーが推奨されないと、古い API を置き換える新しい Api の説明。 + + 属性を適用すると、属性の一部のプロパティを指定してください。 これらはときと、必要なプロパティまたは必須の引数の位置指定のコンス トラクターのパラメーターとして表されます。 たとえば、 のプロパティ、 必須プロパティです。 + + 必ずしもしなくても、属性が適用されたときに指定するプロパティは省略可能なプロパティ \(または省略可能な引数\) と呼ばれます。 設定可能なプロパティによって表されます。 コンパイラは、この属性が適用されるときに、これらのプロパティを設定する特別な構文を提供します。 たとえば、 プロパティは省略可能な引数を表します。 + + **✓ は** 「属性」サフィックスを持つカスタム属性クラスの名前 + + **✓ は** 適用、 カスタム属性にします。 + + **✓ は** 省略可能な引数の設定可能なプロパティを提供します。 + + **✓ は** 必須の引数の取得専用プロパティを提供します。 + + **✓ は** 必須の引数に対応するプロパティを初期化するコンス トラクターのパラメーターを指定します。 各パラメーターは、対応するプロパティとして \(大文字小文字が異なる\) では、同じ名前が必要です。 + + **X 回避** 省略可能な引数に対応するプロパティを初期化するコンス トラクターのパラメーターを指定します。 + + つまり、コンス トラクターと setter の両方で設定できるプロパティがありません。 このガイドラインは、どの引数が必要ですし、これが必要であり、同じ処理を行うことの 2 つの方法のことを回避できます明示的に指定します。 + + **X 回避** カスタム属性のコンス トラクターのオーバー ロードします。 + + コンス トラクターの 1 つだけのことを明確に伝達をユーザーにどの引数が必須とオプションです。 + + **✓ は** 可能であれば、カスタム属性クラスをシールします。 これにより、属性の検索高速化します。 + + *部分 © 2005年、2009 Microsoft Corporation します。 All rights reserved.* + + *翔泳社からのアクセス許可によって検出 [Framework デザイン ガイドライン: 規則が、表現方法と再利用可能な .NET ライブラリを 2 nd Edition パターン](http://www.informit.com/store/framework-design-guidelines-conventions-idioms-and-9780321545619) は Cwalina Brad エイブラムスによる、Microsoft Windows の開発シリーズの一部として Addison\-wesley Professional、2008 年 10 月 22 日を公開します。* + +## 参照 + [Framework デザイン ガイドライン](../../../docs/standard/design-guidelines/index.md) + [使用方法のガイドライン](../../../docs/standard/design-guidelines/usage-guidelines.md) \ No newline at end of file diff --git a/docs/standard/events/TOC.md b/docs/standard/events/TOC.md new file mode 100644 index 00000000000..7fad33ac63d --- /dev/null +++ b/docs/standard/events/TOC.md @@ -0,0 +1,8 @@ +# [オブサーバー デザイン パターンのベスト プラクティス](observer-design-pattern-best-practices.md) +# [イベント](index.md) +# [方法: オブザーバーを実装する](how-to-implement-an-observer.md) +# [方法: プロバイダーを実装する](how-to-implement-a-provider.md) +# [方法 : Web フォーム アプリケーションでイベントを利用する](how-to-consume-events-in-a-web-forms-application.md) +# [方法 : イベントを発生させる/処理する](how-to-raise-and-consume-events.md) +# [オブサーバー デザイン パターン](observer-design-pattern.md) +# [方法 : イベント プロパティを使用して複数のイベントを処理する](how-to-handle-multiple-events-using-event-properties.md) diff --git a/docs/standard/events/how-to-consume-events-in-a-web-forms-application.md b/docs/standard/events/how-to-consume-events-in-a-web-forms-application.md new file mode 100644 index 00000000000..208e03bdbd7 --- /dev/null +++ b/docs/standard/events/how-to-consume-events-in-a-web-forms-application.md @@ -0,0 +1,56 @@ +--- +title: "方法 : Web フォーム アプリケーションでイベントを利用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "イベント [.NET Framework]、Web フォーム" + - "Web フォーム コントロール、およびイベント" + - "イベントハンドラー [.NET Framework]、Web フォーム" + - "イベント [.NET Framework]、使用" + - "Web フォーム、イベント処理" +ms.assetid: 73bf8638-c4ec-4069-b0bb-a1dc79b92e32 +caps.latest.revision: 21 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 21 +--- +# 方法 : Web フォーム アプリケーションでイベントを利用する +ASP.NET Web フォーム アプリケーションの一般的なシナリオに応じて特定のアクション コントロールをユーザーがクリックするかをにコントロールと Web ページを設定する場合は、次に実行します。 たとえば、 のコントロールは、ユーザーが Web ページでクリックしたときに、イベントを発生させます。 そのイベントを処理することで、アプリケーションでは、そのボタンのクリックに対して適切なアプリケーション ロジックを実行できます。 + +### Web ページ上のボタン クリック イベントを処理するには + +1. 、次のステップで定義するメソッドの名前に `OnClick` の値が設定されている のコントロールを含む ASP.NET Web ページ \(Web フォーム ページ\) を作成します。 + + ```xml + + ``` + +2. `OnClick` 値の名前があり、 イベントのデリゲート シグネチャに一致する定義するイベント ハンドラーを定義します。 + + ```csharp + protected void Button1_Click(object sender, EventArgs e) + { + // perform action + } + ``` + + ```vb + Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + ' perform action + End Sub + ``` + + イベントでは、デリゲート型に クラスを使用し、イベント データに クラスを使用します。 ASP.NET ページ フレームワークは、自動的に のインスタンスを作成し、 インスタンスの イベント、このデリゲート インスタンスを追加するコードを生成します。 + +3. 手順 2 で定義したイベント ハンドラー メソッドでは、イベントが発生したときに必要な操作を実行するコードを追加します。 + +## 参照 + [イベント](../../../docs/standard/events/index.md) \ No newline at end of file diff --git a/docs/standard/events/how-to-handle-multiple-events-using-event-properties.md b/docs/standard/events/how-to-handle-multiple-events-using-event-properties.md new file mode 100644 index 00000000000..953ad53d1e0 --- /dev/null +++ b/docs/standard/events/how-to-handle-multiple-events-using-event-properties.md @@ -0,0 +1,57 @@ +--- +title: "方法 : イベント プロパティを使用して複数のイベントを処理する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "イベント処理 [.NET Framework], 複数のイベントで" + - "イベント プロパティ [.NET Framework]" + - "イベント [.NET Framework], 複数の" + - "複数のイベント [.NET Framework]" +ms.assetid: 30047cba-e2fd-41c6-b9ca-2ad7a49003db +caps.latest.revision: 16 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法 : イベント プロパティを使用して複数のイベントを処理する +イベント プロパティを使用するには、イベントを発生させるクラスにイベント プロパティを定義し、そのイベントを処理するクラスにイベント プロパティのデリゲートを設定します。 1 つのクラスにイベント プロパティを複数実装するには、そのクラス内部に、各イベント用に定義されたデリゲートを格納および保持する必要があります。 通常は、イベント キーをインデックスとするデリゲート コレクションを実装することによってこれを実現します。 + + イベントのデリゲートを格納するには、 クラスを使用するか、独自のコレクションを実装します。 コレクション クラスには、イベント キーに基づいてイベント ハンドラー デリゲートに対する設定、アクセス、および取得を行うメソッドを用意する必要があります。 たとえば、 クラスを使用したり、 クラスからカスタム クラスを派生させたりできます。 デリゲート コレクションの実装の詳細をクラスの外部に公開する必要はありません。 + + クラス内の各イベント プロパティには、add アクセサー メソッドおよび remove アクセサー メソッドを定義します。 イベント プロパティの add アクセサーは、入力デリゲート インスタンスをデリゲート コレクションに追加します。 イベント プロパティの remove アクセサーは、デリゲート コレクションから入力デリゲート インスタンスを削除します。 これらのイベント プロパティ アクセサーでは、イベント プロパティに定義済みのキーを使用して、デリゲート コレクションに対するインスタンスの追加や削除を行います。 + +### イベント プロパティを使用して複数のイベントを処理するには + +1. イベントを発生させるクラスにデリゲート コレクションを定義します。 + +2. 各イベントについて、キーを定義します。 + +3. イベントを発生させるクラスにイベント プロパティを定義します。 + +4. デリゲート コレクションを使用して、各イベント プロパティに対する add アクセサーおよび remove アクセサーを実装します。 + +5. パブリック イベント プロパティを使用して、イベントを処理するクラスのイベント ハンドラー デリゲートの追加と削除を行います。 + +## 使用例 + 各イベントのデリゲートを格納するために `MouseDown` を使用して、`MouseUp` イベント プロパティおよび イベント プロパティを実装する C\# コードの例を次に示します。 イベント プロパティ コンストラクトのキーワードは、太字で示されています。 + +> [!NOTE] +> イベント プロパティは、[!INCLUDE[vbprvblong](../../../includes/vbprvblong-md.md)] ではサポートされていません。 + + [!code-cpp[Conceptual.Events.Other#31](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.events.other/cpp/example3.cpp#31)] + [!code-csharp[Conceptual.Events.Other#31](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.events.other/cs/example3.cs#31)] + [!code-vb[Conceptual.Events.Other#31](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.events.other/vb/example3.vb#31)] + +## 参照 + + [イベント](../../../docs/standard/events/index.md) + [System.Web.UI.Control.Events](frlrfSystemWebUIControlClassEventsTopic) + [How to: Declare Custom Events To Conserve Memory](../Topic/How%20to:%20Declare%20Custom%20Events%20To%20Conserve%20Memory%20\(Visual%20Basic\).md) \ No newline at end of file diff --git a/docs/standard/events/how-to-implement-a-provider.md b/docs/standard/events/how-to-implement-a-provider.md new file mode 100644 index 00000000000..9a7afc72ad4 --- /dev/null +++ b/docs/standard/events/how-to-implement-a-provider.md @@ -0,0 +1,68 @@ +--- +title: "方法: プロバイダーを実装する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "オブサーバー デザイン パターン [.NET Framework]、プロバイダーを実装する" + - "プロバイダー [.NET Framework]、オブサーバー デザイン パターンでの" + - "オブサーバー [.NET Framework]、オブサーバー デザイン パターンでの" +ms.assetid: 790b5d8b-d546-40a6-beeb-151b574e5ee5 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法: プロバイダーを実装する +オブザーバー デザイン パターンでは、データを監視して通知を送信するプロバイダーと、プロバイダーからの通知 \(コールバック\) を受信する 1 つ以上のオブザーバーとを区別する必要があります。 このトピックでは、プロバイダーを作成する方法について説明します。 関連トピックの「[方法: オブザーバーを実装する](../../../docs/standard/events/how-to-implement-an-observer.md)」では、オブザーバーを作成する方法について説明します。 + +### プロバイダーを作成するには + +1. プロバイダーがオブザーバーに送信するデータを定義します。 プロバイダーとそれがオブザーバーに送信するデータは 1 つの型にすることもできますが、通常は別々の型で表されます。 たとえば、温度監視アプリケーションの場合、`Temperature` 構造で、プロバイダー \(次の手順で定義する `TemperatureMonitor` クラスで表されるプロバイダー\) が監視するデータと、サブスクライブするオブザーバーを定義します。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/data.cs#1)] + [!code-vb[Conceptual.ObserverDesign.HowTo#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/data.vb#1)] + +2. インターフェイスを実装する型であるデータ プロバイダーを定義します。 プロバイダーのジェネリック型引数は、プロバイダーがオブザーバーに送信する型です。 次の例では、ジェネリック型引数の `Temperature` を使用して構築された の実装である `TemperatureMonitor` クラスを定義しています。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#2)] + [!code-vb[Conceptual.ObserverDesign.HowTo#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#2)] + +3. 各オブザーバーに適切に通知できるように、プロバイダーでオブザーバーへの参照を保存する方法を決めます。 一般に、この目的には、汎用 オブジェクトなどのコレクション オブジェクトが使用されます。 次の例では、`TemperatureMonitor` クラス コンストラクターでインスタンス化されるプライベート オブジェクトを定義しています。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#3)] + [!code-vb[Conceptual.ObserverDesign.HowTo#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#3)] + +4. サブスクライバーが通知の受信をいつでも中止できるように、プロバイダーがサブスクライバーに返すことができる 実装を定義します。 次の例では、入れ子になった `Unsubscriber` クラスを定義しています。このクラスがインスタンス化されるときに、サブスクライバーのコレクションへの参照とサブスクライバーへの参照が渡されます。 このコードによって、サブスクライバーがオブジェクトの 実装を呼び出して、サブスクライバーのコレクションから自身を削除できるようになります。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#4)] + [!code-vb[Conceptual.ObserverDesign.HowTo#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#4)] + +5. メソッドを実装します。 これは インターフェイスへの参照が渡されるメソッドであり、手順 3. で設計したオブジェクトに保存する必要があります。 このメソッドはその後、手順 4. で開発した 実装を返す必要があります。 `TemperatureMonitor` クラスの メソッドの実装の例を次に示します。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#5)] + [!code-vb[Conceptual.ObserverDesign.HowTo#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#5)] + +6. オブザーバーの 、および の各実装を呼び出して、オブザーバーに適切に通知します。 場合によっては、エラーが発生したときに、プロバイダーが メソッドを呼び出さないことがあります。 たとえば、次の `GetTemperature` メソッドは、5 秒ごとに温度データを読み取るモニターをシミュレートし、前回の読み取りから温度が 0.1 度以上変化した場合にオブザーバーに通知します。 デバイスが温度を報告しない場合 \(つまり値が null の場合\) は、プロバイダーはオブザーバーに伝送が完了したことを通知します。 `GetTemperature` メソッドは、各オブザーバーの メソッドを呼び出すだけでなく、 のコレクションをクリアすることに注意してください。 この場合、プロバイダーは、オブザーバーの メソッドを呼び出しません。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#6)] + [!code-vb[Conceptual.ObserverDesign.HowTo#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#6)] + +## 使用例 + 温度監視アプリケーションの の実装を定義するための完全なソース コードの例を次に示します。 オブザーバーに送信されるデータである `Temperature` 構造と、 の実装である `TemperatureMonitor` クラスが含まれます。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/provider.cs#7)] + [!code-vb[Conceptual.ObserverDesign.HowTo#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/provider.vb#7)] + +## 参照 + + [オブサーバー デザイン パターン](../../../docs/standard/events/observer-design-pattern.md) + [方法: オブザーバーを実装する](../../../docs/standard/events/how-to-implement-an-observer.md) + [オブサーバー デザイン パターンのベスト プラクティス](../../../docs/standard/events/observer-design-pattern-best-practices.md) \ No newline at end of file diff --git a/docs/standard/events/how-to-implement-an-observer.md b/docs/standard/events/how-to-implement-an-observer.md new file mode 100644 index 00000000000..0b02d882381 --- /dev/null +++ b/docs/standard/events/how-to-implement-an-observer.md @@ -0,0 +1,57 @@ +--- +title: "方法: オブザーバーを実装する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "オブサーバー [.NET Framework]、オブサーバー デザイン パターン" + - "オブサーバー デザイン パターン [.NET Framework]、オブサーバーを実装する" +ms.assetid: 8ecfa9f5-b500-473d-bcf0-5652ffb1e53d +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法: オブザーバーを実装する +オブザーバー デザイン パターンでは、通知の登録を行うオブザーバーと、データの監視および 1 つ以上のオブザーバーへの通知の送信を行うプロバイダーとを区別する必要があります。 このトピックでは、オブザーバーを作成する方法について説明します。 関連トピックの「[方法: プロバイダーを実装する](../../../docs/standard/events/how-to-implement-a-provider.md)」では、プロバイダーを作成する方法について説明します。 + +### オブザーバーを作成するには + +1. インターフェイスを実装する型であるオブザーバーを定義します。 たとえば、次のコードでは、ジェネリック型引数の `Temperature` を使用して構築された の実装である `TemperatureReporter` という型を定義しています。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/observer.cs#8)] + [!code-vb[Conceptual.ObserverDesign.HowTo#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/observer.vb#8)] + +2. プロバイダーによって の実装が呼び出される前にオブザーバーが通知の受信を中止できる場合は、プロバイダーの メソッドから返される の実装を保持するプライベート変数を定義します。 また、プロバイダーの メソッドを呼び出し、返される オブジェクトを格納するサブスクリプション メソッドを定義する必要があります。 たとえば、次のコードでは、`unsubscriber` というプライベート変数を定義し、プロバイダーの メソッドを呼び出して返されたオブジェクトを `unsubscriber` 変数に代入する `Subscribe` メソッドを定義しています。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/observer.cs#9)] + [!code-vb[Conceptual.ObserverDesign.HowTo#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/observer.vb#9)] + +3. 必要に応じて、プロバイダーによって の実装が呼び出される前にオブザーバーが通知の受信を中止できるようにするメソッドを定義します。 次の例では、`Unsubscribe` メソッドを定義しています。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/observer.cs#10)] + [!code-vb[Conceptual.ObserverDesign.HowTo#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/observer.vb#10)] + +4. インターフェイスによって定義される 3 つのメソッド \(、および \) を実装します。 プロバイダーおよびアプリケーションの必要に応じて、 メソッドと メソッドは、スタブ実装にすることができます。 メソッドは渡された オブジェクトを例外として処理せず、 メソッドはプロバイダーの の実装を自由に呼び出すことができる点に注意してください。 `TemperatureReporter` クラスの の実装例を次に示します。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/observer.cs#11)] + [!code-vb[Conceptual.ObserverDesign.HowTo#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/observer.vb#11)] + +## 使用例 + 温度監視アプリケーションの を実装する `TemperatureReporter` クラスの完全なソース コード例を次に示します。 + + [!code-csharp[Conceptual.ObserverDesign.HowTo#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesign.howto/cs/observer.cs#12)] + [!code-vb[Conceptual.ObserverDesign.HowTo#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesign.howto/vb/observer.vb#12)] + +## 参照 + + [オブサーバー デザイン パターン](../../../docs/standard/events/observer-design-pattern.md) + [方法: プロバイダーを実装する](../../../docs/standard/events/how-to-implement-a-provider.md) + [オブサーバー デザイン パターンのベスト プラクティス](../../../docs/standard/events/observer-design-pattern-best-practices.md) \ No newline at end of file diff --git a/docs/standard/events/how-to-raise-and-consume-events.md b/docs/standard/events/how-to-raise-and-consume-events.md new file mode 100644 index 00000000000..f3682342b7d --- /dev/null +++ b/docs/standard/events/how-to-raise-and-consume-events.md @@ -0,0 +1,48 @@ +--- +title: "方法 : イベントを発生させる/処理する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "イベント [.NET Framework], 発生" + - "イベント [.NET Framework], サンプル" + - "発生 (イベントを)" +ms.assetid: 42afade7-3a02-4f2e-868b-95845f302f8f +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法 : イベントを発生させる/処理する +このトピックの例では、イベントを使用する方法を示します。 ここでは、 デリゲートと デリゲート、およびカスタム デリゲートの例を使用して、データを持つイベントと持たないイベントを示します。 + + この例では、「[イベント](../../../docs/standard/events/index.md)」で説明されている概念を使用します。 + +## 使用例 + 最初の例は、データを持たないイベントを発生させて処理する方法を示しています。 この例には、`ThresholdReached` という名前のイベントを持つ、`Counter` という名前のクラスが含まれます。 このイベントは、カウンター値がしきい値と等しいか、またはそれを超えた場合に発生します。 イベントのデータが指定されていないため、 デリゲートはイベントに関連付けられます。 + + [!code-csharp[EventsOverview#5](../../../samples/snippets/csharp/VS_Snippets_CLR/eventsoverview/cs/programnodata.cs#5)] + [!code-vb[EventsOverview#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/eventsoverview/vb/module1nodata.vb#5)] + +## 使用例 + 次の例は、データを持つイベントを発生させて処理する方法を示しています。 デリゲートはイベントに関連付けられ、カスタム イベント データ オブジェクトのインスタンスが提供されます。 + + [!code-cpp[EventsOverview#6](../../../samples/snippets/cpp/VS_Snippets_CLR/eventsoverview/cpp/programwithdata.cpp#6)] + [!code-csharp[EventsOverview#6](../../../samples/snippets/csharp/VS_Snippets_CLR/eventsoverview/cs/programwithdata.cs#6)] + [!code-vb[EventsOverview#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/eventsoverview/vb/module1withdata.vb#6)] + +## 使用例 + 次の例は、イベントのデリゲートを宣言する方法を示しています。 デリゲートの名前は `ThresholdReachedEventHandler` です。 これはあくまでも一例です。 通常は、 デリゲートまたは デリゲートを使用できるため、イベントのデリゲートを宣言する必要はありません。 ジェネリックを使用できないレガシ コードでクラスを使用できるようにするなど、ごくまれに、デリゲートの宣言が必要になることがあります。 + + [!code-csharp[EventsOverview#7](../../../samples/snippets/csharp/VS_Snippets_CLR/eventsoverview/cs/programwithdelegate.cs#7)] + [!code-vb[EventsOverview#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/eventsoverview/vb/module1withdelegate.vb#7)] + +## 参照 + [イベント](../../../docs/standard/events/index.md) \ No newline at end of file diff --git a/docs/standard/events/index.md b/docs/standard/events/index.md new file mode 100644 index 00000000000..bc5d1030eeb --- /dev/null +++ b/docs/standard/events/index.md @@ -0,0 +1,98 @@ +--- +title: "イベントの処理と発生 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション開発 [.NET Framework], イベント" + - "デリゲート モデル (イベントの)" + - "イベント [.NET Framework]" +ms.assetid: b6f65241-e0ad-4590-a99f-200ce741bb1f +caps.latest.revision: 23 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 23 +--- +# イベントの処理と発生 +.NET Framework でのイベントは、デリゲート モデルに基づいています。 デリゲート モデルはオブザーバー デザイン パターンに従って、サブスクライバーがプロバイダーに登録して通知を受信できるようにします。 イベントの送信元がイベント発生の通知をプッシュしたら、イベント レシーバーはその通知を受信して、通知に対する応答を定義します。 ここでは、デリゲート モデルの主要コンポーネント、アプリケーションでイベントを利用する方法、およびコードでイベントを実装する方法について説明します。 + + [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリでのイベントの処理については、「[イベントとルーティング イベントの概要](http://go.microsoft.com/fwlink/p/?LinkId=261485)」を参照してください。 + +## イベント + イベントは、アクションの発生を知らせるために、オブジェクトによって送信されるメッセージです。 アクションは、ユーザーがボタンのクリックなどの対話的操作を行った場合や、プロパティの値の変更など、なんらかのプログラム ロジックによって発生します。 イベントを発生させるオブジェクトを "イベントの送信元" と呼びます。 イベントの送信元は、発生させたイベントをどのオブジェクトまたはメソッドが受信する \(処理する\) かについての情報を持っていません。 このイベントはイベントの送信元のメンバーです。たとえば、 イベントは クラスのメンバーであり、 イベントは インターフェイスを実装するクラスのメンバーです。 + + イベントを定義するには、イベント クラスのシグネチャで `event` \(C\# の場合\) または `Event` \(Visual Basic の場合\) のキーワードを使用し、イベントにデリゲートの型を指定します。 デリゲートについては、次のセクションで説明します。 + + 通常、イベントを発生させるには、`protected` や `virtual` \(C\# の場合\)、または `Protected` や `Overridable` \(Visual Basic の場合\) としてマークされたメソッドを追加します。 このメソッドには `On`*EventName* という形式で名前を付けます \(`OnDataReceived` など\)。 また、イベント データ オブジェクトを指定するパラメーターを 1 つ指定する必要があります。 このメソッドを指定すると、イベントを発生させるためのロジックを派生クラスでオーバーライドできます。 派生クラスは常に基底クラスの `On`*EventName* メソッドを呼び出して、登録されたデリゲートがイベントを必ず受信できるようにします。 + + 次の例は、`ThresholdReached` という名前のイベントを宣言する方法を示しています。 イベントは デリゲートに関連付けられ、`OnThresholdReached` という名前のメソッドで発生します。 + + [!code-csharp[EventsOverview#1](../../../samples/snippets/csharp/VS_Snippets_CLR/eventsoverview/cs/programtruncated.cs#1)] + [!code-vb[EventsOverview#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/eventsoverview/vb/module1truncated.vb#1)] + +## デリゲート + デリゲートは、メソッドへの参照を保持する型です。 デリゲートは、自身が参照するメソッドの戻り値とパラメーターを表示するシグネチャで宣言され、このシグネチャに一致するメソッドへの参照だけを保持できます。 これにより、デリゲートはタイプ セーフな関数ポインターやコールバックと同等の機能を持つことができます。 デリゲート クラスは、宣言すると、定義は不要です。 + + .NET Framework でのデリゲートの用途は多数あります。 イベントのコンテキストでは、デリゲートは、イベント ソースとイベントを処理するコードの間を仲介するもの、つまりポインター的な機構です。 デリゲートをイベントに関連付けるには、デリゲート型をイベント宣言に追加します。 デリゲートの詳細については、「 クラス」を参照してください。 + + .NET Framework には デリゲートおよび デリゲートが用意されており、ほとんどのイベント シナリオがサポートされます。 デリゲートは、イベント データを含まないすべてのイベントに対して使用します。 デリゲートは、イベントに関するデータを含むイベントに使用します。 これらのデリゲートには戻り値の型の値がなく、2 つのパラメーター \(イベント ソース用オブジェクトとイベント データ用オブジェクト\) を受け取ります。 + + デリゲートはマルチキャストであるため、複数のイベント処理メソッドへの参照を保持できます。 詳細については、 のリファレンス ページを参照してください。 デリゲートでは、イベント処理を柔軟に、そして詳細に制御できます。 デリゲートは、イベントに対して登録されているイベント ハンドラーのリストを管理することで、そのイベントを発生させるクラスのイベント ディスパッチャーとして動作します。 + + デリゲートおよび デリゲートが動作しないシナリオについては、デリゲートを定義できます。 デリゲートの定義が必要なシナリオは非常にまれで、たとえば、ジェネリックを認識しないコードを使用する必要がある場合などです。 デリゲートには、宣言内で `delegate` キーワード \(C\# の場合\) および `Delegate` キーワード \(Visual Basic の場合\) を使用してマークします。 次の例は、`ThresholdReachedEventHandler` という名前のデリゲートを宣言する方法を示しています。 + + [!code-csharp[EventsOverview#4](../../../samples/snippets/csharp/VS_Snippets_CLR/eventsoverview/cs/programtruncated.cs#4)] + [!code-vb[EventsOverview#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/eventsoverview/vb/module1truncated.vb#4)] + +## イベント データ + イベントに関連付けられたデータは、イベント データ クラスを使用して提供できます。 .NET Framework には、アプリケーションで使用できるイベント データ クラスが多数用意されています。 たとえば、 クラスは、 イベントのイベント データ クラスです。 .NET Framework の名前付けパターンでは、すべてのイベント データ クラス名の末尾に `EventArgs` が付きます。 イベントに関連付けられているイベント データ クラスは、そのイベントのデリゲートを見ればわかります。 たとえば、 デリゲートには、パラメーターの 1 つとして クラスが含まれます。 + + は、すべてのイベント データ クラスの基本型です。 また、 は、イベントにデータが関連付けられていないときに使用するクラスでもあります。 何かが発生したことを他のクラスに通知することのみが目的のイベント、つまり、データの受け渡しを必要としないイベントを作成する場合は、デリゲートの 2 番目のパラメーターとして クラスを追加します。 データが指定されていない場合は、 値を渡すことができます。 デリゲートには、パラメーターとして クラスが含まれます。 + + カスタマイズされたイベント データ クラスを作成する場合は、から派生したクラスを作成し、イベントに関連するデータを渡すのに必要なメンバーを指定します。 通常は、.NET Framework と同じ名前付けパターンを使用する必要があり、イベント データ クラス名の末尾には `EventArgs` が付きます。 + + 次の例は、`ThresholdReachedEventArgs` という名前のイベント データを示しています。 これには、発生したイベントに応じた特定のプロパティが含まれます。 + + [!code-csharp[EventsOverview#3](../../../samples/snippets/csharp/VS_Snippets_CLR/eventsoverview/cs/programtruncated.cs#3)] + [!code-vb[EventsOverview#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/eventsoverview/vb/module1truncated.vb#3)] + +## イベント ハンドラー + イベントに応答するには、イベント レシーバーのイベント ハンドラー メソッドを定義します。 このメソッドは、処理するイベントのデリゲートのシグネチャと一致する必要があります。 イベント ハンドラーでは、ユーザーがボタンをクリックしたときにユーザー入力を収集するなど、イベントが発生したときに必要なアクションを実行します。 イベントが発生したときに通知を受け取るには、イベント ハンドラー メソッドがイベントをサブスクライブする必要があります。 + + 次の例は、 デリゲートのシグネチャと一致する、`c_ThresholdReached` という名前のイベント ハンドラー メソッドを示しています。 メソッドは、`ThresholdReached` イベントをサブスクライブします。 + + [!code-csharp[EventsOverview#2](../../../samples/snippets/csharp/VS_Snippets_CLR/eventsoverview/cs/programtruncated.cs#2)] + [!code-vb[EventsOverview#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/eventsoverview/vb/module1truncated.vb#2)] + +## 静的イベント ハンドラーと動的イベント ハンドラー + .NET Framework を使用すると、静的または動的にイベント通知のためのサブスクライバーを登録できます。 静的なイベント ハンドラーは、処理対象のイベントのクラスの有効期間にわたって有効になります。 動的なイベント ハンドラーは、プログラムの実行中、通常は条件付きのプログラム ロジックに応答する形で、明示的にアクティブ化または非アクティブ化されます。 たとえば、特定の条件下でのみイベント通知が必要な場合や、複数のイベント ハンドラーを持つアプリケーションで、実行時の条件に応じて適切なハンドラーを決定する場合などに使用できます。 前のセクションの例は、イベント ハンドラーを動的に追加する方法を示しています。 詳細については、「[Events](../Topic/Events%20\(Visual%20Basic\).md)」および「[イベント](../Topic/Events%20\(C%23%20Programming%20Guide\).md)」を参照してください。 + +## 複数のイベントの発生 + クラスで複数のイベントを発生させる場合、コンパイラでは、イベント デリゲートのインスタンスごとに 1 つのフィールドが生成されます。 イベントの数が多い場合は、デリゲート 1 つあたり 1 フィールドというストレージ コストが許容されない可能性があります。 このような状況に備えて、.NET Framework には、イベント デリゲートを格納するために任意に選択した別のデータ構造と一緒に使用できる、イベント プロパティが用意されています。 + + イベント プロパティは、イベント アクセサーを伴うイベント宣言によって構成されます。 イベント アクセサーは、ストレージ データ構造におけるイベント デリゲート インスタンスの追加または削除を定義するメソッドです。 イベント プロパティを使用すると、イベント プロパティは各イベント デリゲートを呼び出す前に取得する必要があるので、イベント フィールドよりも低速です。 つまり、メモリを取るか、速度を取るかの比較検討になります。 クラスで、発生頻度の低いイベントを数多く定義する場合は、イベント プロパティを実装することをお勧めします。 詳細については、「[方法 : イベント プロパティを使用して複数のイベントを処理する](../../../docs/standard/events/how-to-handle-multiple-events-using-event-properties.md)」を参照してください。 + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[方法 : イベントを発生させる\/処理する](../../../docs/standard/events/how-to-raise-and-consume-events.md)|イベントの発生例と実装例が含まれます。| +|[方法 : イベント プロパティを使用して複数のイベントを処理する](../../../docs/standard/events/how-to-handle-multiple-events-using-event-properties.md)|イベント プロパティを使用して複数のイベントを処理する方法を示します。| +|[オブサーバー デザイン パターン](../../../docs/standard/events/observer-design-pattern.md)|サブスクライバーがプロバイダーに登録して、通知を受信できるようにするデザイン パターンについて説明します。| +|[方法 : Web フォーム アプリケーションでイベントを利用する](../../../docs/standard/events/how-to-consume-events-in-a-web-forms-application.md)|Web フォーム コントロールによって発生したイベントを処理する方法を示します。| + +## 参照 + + + + + [イベントとルーティング イベントの概要](http://go.microsoft.com/fwlink/?LinkId=261485) + [Events](../Topic/Events%20\(Visual%20Basic\).md) + [イベント](../Topic/Events%20\(C%23%20Programming%20Guide\).md) \ No newline at end of file diff --git a/docs/standard/events/observer-design-pattern-best-practices.md b/docs/standard/events/observer-design-pattern-best-practices.md new file mode 100644 index 00000000000..e9a807f1db8 --- /dev/null +++ b/docs/standard/events/observer-design-pattern-best-practices.md @@ -0,0 +1,63 @@ +--- +title: "オブサーバー デザイン パターンのベスト プラクティス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "最適な使用方法 [.NET Framework], オブサーバー デザイン パターン" + - "オブサーバー デザイン パターン [.NET Framework], 推奨される手順" +ms.assetid: c834760f-ddd4-417f-abb7-a059679d5b8c +caps.latest.revision: 9 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 9 +--- +# オブサーバー デザイン パターンのベスト プラクティス +.NET Framework では、オブザーバー デザイン パターンは、一連のインターフェイスとして実装されます。 インターフェイスはデータ プロバイダーを表し、データ プロバイダーはオブザーバーで通知のサブスクリプションを解除できるようにする 実装も提供します。 インターフェイスはオブザーバーを表します。 このトピックでは、これらのインターフェイスを使用してオブザーバー デザイン パターンを実装するときに、開発者が適用することが望ましいベスト プラクティスについて説明します。 + +## スレッド処理 + 通常、プロバイダーは、何らかのコレクション オブジェクトで表されるサブスクライバー リストに特定のオブザーバーを追加することで、 メソッドを実装し、サブスクライバー リストから特定のオブザーバーを削除することで、 メソッドを実装します。 オブザーバーは、これらのメソッドをいつでも呼び出すことができます。 また、プロバイダー\/オブザーバーのコントラクトでは、 コールバック メソッドの後にだれがサブスクリプションを解除するかが指定されていないため、プロバイダーとオブザーバーの両方で同じメンバーをリストから削除しようとする可能性があります。 このような可能性があるため、 メソッドと メソッドはどちらもスレッド セーフである必要があります。 通常、これには、[同時実行コレクション](../../../docs/standard/parallel-programming/data-structures-for-parallel-programming.md)またはロックの使用が必要です。 非スレッド セーフの実装では、スレッド セーフではないことが明示的に記載されている必要があります。 + + その他の保証は、プロバイダー\/オブザーバーのコントラクトの最上部のレイヤーで指定されている必要があります。 実装側で要件を追加する場合には、ユーザーがオブザーバー コントラクトについて混乱しないように明確に示す必要があります。 + +## 例外処理 + データ プロバイダーとオブザーバーの結合は疎であるため、オブザーバー デザイン パターンの例外は情報提供を目的としています。 このことは、プロバイダーとオブザーバーがオブザーバー デザイン パターンの例外を処理する方法に影響します。 + +### プロバイダー \-\- OnError メソッドの呼び出し + メソッドは、 メソッドと同様に、オブザーバーへの情報メッセージとして使用されます。 ただし、 メソッドが、現在のデータまたは更新されたデータをオブザーバーに提供するように設計されているのに対して、 メソッドは、プロバイダーが有効なデータを提供できないことを示すように設計されています。 + + 例外を処理して メソッドを呼び出す場合、プロバイダーが次のベスト プラクティスに従うことをお勧めします。 + +- プロバイダーに固有の要件がある場合、プロバイダーは独自の例外を処理する必要があります。 + +- プロバイダーは、オブザーバーが特定の方法で例外を処理することを期待または要求しないようにします。 + +- 更新を提供する機能を損なうような例外を処理する場合、プロバイダーは メソッドを呼び出す必要があります。 このような例外の情報はオブザーバーに渡すことができます。 それ以外の場合は、オブザーバーに例外を通知する必要はありません。 + + プロバイダーが メソッドまたは メソッドを呼び出すと、それ以上の通知は行われなくなるため、プロバイダーはそのオブザーバーのサブスクリプションを解除することができます。 ただし、オブザーバーも、 通知または 通知を受信する前と後の両方を含め、いつでも自分自身のサブスクリプションを解除できます。 オブザーバー デザイン パターンでは、プロバイダーとオブザーバーのどちらがサブスクリプションの解除を行うかは指定しません。そのため、両方でサブスクリプションの解除を試みる可能性があります。 通常、オブザーバーは、サブスクリプションを解除すると、サブスクライバーのコレクションから削除されます。 シングルスレッド アプリケーションでは、削除を試みる前に、オブジェクト参照が有効であること、およびオブジェクトがサブスクライバーのコレクションのメンバーであることを、 の実装で確認する必要があります。 マルチスレッド アプリケーションでは、 オブジェクトなどのスレッド セーフなコレクション オブジェクトを使用する必要があります。 + +### オブザーバー \-\- OnError メソッドの実装 + プロバイダーからエラー通知を受信した場合、オブザーバーは例外を情報として処理する必要がありますが、特定のアクションの実行は要求されません。 + + プロバイダーからの メソッド呼び出しに応答する場合、オブザーバーが次のベスト プラクティスに従うことをお勧めします。 + +- または などのインターフェイス実装からオブザーバーが例外をスローすることを回避するようにします。 オブザーバーが例外をスローする場合は、これらの例外が未処理になることを想定する必要があります。 + +- 呼び出し履歴を保持するために、 メソッドに渡された オブジェクトをスローするオブザーバーは、オブジェクトをスローする前に例外をラップする必要があります。 このためには、標準の例外オブジェクトを使用する必要があります。 + +## その他のベスト プラクティス + メソッドで登録を解除しようとすると、null 参照になる場合があります。 そのため、この方法は避けることをお勧めします。 + + 1 つのオブザーバーを複数のプロバイダーにアタッチすることは可能ですが、推奨パターンは、 インスタンスを 1 つの インスタンスにのみアタッチすることです。 + +## 参照 + [オブサーバー デザイン パターン](../../../docs/standard/events/observer-design-pattern.md) + [方法: オブザーバーを実装する](../../../docs/standard/events/how-to-implement-an-observer.md) + [方法: プロバイダーを実装する](../../../docs/standard/events/how-to-implement-a-provider.md) \ No newline at end of file diff --git a/docs/standard/events/observer-design-pattern.md b/docs/standard/events/observer-design-pattern.md new file mode 100644 index 00000000000..87e74a0007e --- /dev/null +++ b/docs/standard/events/observer-design-pattern.md @@ -0,0 +1,98 @@ +--- +title: "オブサーバー デザイン パターン | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "IObservable(Of T) インターフェイス" + - "IObservable インターフェイス" + - "IObserver(Of T) インターフェイス" + - "IObserver インターフェイス" + - "オブサーバー デザイン パターン [.NET Framework]" +ms.assetid: 3680171f-f522-453c-aa4a-54f755a78f88 +caps.latest.revision: 14 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 14 +--- +# オブサーバー デザイン パターン +オブザーバー デザイン パターンでは、プロバイダーにサブスクライバーを登録して通知を受信することができます。 このデザイン パターンは、プッシュ ベースの通知を必要とするあらゆるシナリオに適しています。 このパターンでは、1 つの*プロバイダー* \(*サブジェクト*または*観察可能なオブジェクト*とも呼ばれます\) と、0 個以上の*オブザーバー*を定義します。 プロバイダーにオブザーバーを登録すると、あらかじめ定義した条件、イベント、または状態変化が発生するたびに、プロバイダーのいずれかのメソッドが呼び出されて自動的にすべてのオブザーバーに通知されます。 このメソッド呼び出しで、プロバイダーからオブザーバーに現在の状態の情報を提供することもできます。 .NET Framework でオブザーバー デザイン パターンを適用するには、ジェネリック インターフェイスの および を実装します。 ジェネリック型パラメーターは、通知情報を提供する型を表します。 + +## パターンの適用 + オブザーバー デザイン パターンは、データ ソース \(ビジネス ロジック\) 層とユーザー インターフェイス \(表示\) 層のように、2 つの異なるコンポーネントまたはアプリケーション層を明確に分離できるため、分散型のプッシュ ベースの通知に適しています。 このパターンは、プロバイダーがコールバックを使用して現在の情報をクライアントに提供するあらゆる場面で実装できます。 + + このパターンを実装するために必要なものを以下に示します。 + +- プロバイダー \(サブジェクト\)。オブザーバーに通知を送信するオブジェクトです。 プロバイダーは、 インターフェイスを実装するクラスまたは構造体で、 という 1 つのメソッドを実装する必要があります。このメソッドは、プロバイダーからの通知を受信するオブザーバーによって呼び出されます。 + +- オブザーバー。プロバイダーからの通知を受信するオブジェクトです。 オブザーバーは、 インターフェイスを実装するクラスまたは構造体で、 オブザーバーでは、次の 3 つのメソッドを実装する必要があります。これらはすべてプロバイダーによって呼び出されます。 + + - 。新しい情報または現在の情報をオブザーバーに提供します。 + + - 。エラーが発生したことをオブザーバーに通知します。 + + - 。プロバイダーが通知の送信を完了したことを示します。 + +- プロバイダーがオブザーバーを追跡するための機構。 通常、プロバイダーでは、 オブジェクトなどのコンテナー オブジェクトを使用して、通知にサブスクライブした の実装への参照を保持します。 このようにストレージ コンテナーを使用すると、プロバイダーで必要に応じていくつでもオブザーバーを処理できます。 オブザーバーが通知を受信する順序は定義されていないため、プロバイダーで自由に順序を決定できます。 + +- 通知が完了したときにプロバイダーがオブザーバーを削除できるようにするための の実装。 オブザーバーは、 の実装への参照を メソッドから受け取ります。このため、プロバイダーが通知の送信を終了する前に、オブザーバーで メソッドを呼び出してサブスクリプションを解除することもできます。 + +- プロバイダーがオブザーバーに送信するデータを含むオブジェクト。 このオブジェクトの型は、 インターフェイスと インターフェイスのジェネリック型パラメーターに対応します。 このオブジェクトは、 の実装と同じにすることもできますが、別の型にするのが最も一般的です。 + +> [!NOTE] +> オブザーバー デザイン パターンを実装するだけでなく、 インターフェイスと インターフェイスを使用して構築されたライブラリを使用することもできます。 たとえば、[.NET \(Rx\) の反応拡張](http://go.microsoft.com/fwlink/?LinkId=186345) は、非同期プログラミングをサポートする一連の拡張メソッドと LINQ 標準シーケンス演算子で構成します。 + +## パターンの実装 + 次の例では、オブザーバー デザイン パターンを使用して、空港の手荷物受取所の情報システムを実装します。 `BaggageInfo` クラスは、到着便と、各便の手荷物の受け取り場所に関する情報を提供します。 これを次の例に示します。 + + [!code-csharp[Conceptual.ObserverDesignPattern#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesignpattern/cs/provider.cs#1)] + [!code-vb[Conceptual.ObserverDesignPattern#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesignpattern/vb/provider.vb#1)] + + `BaggageHandler` クラスは、到着便と手荷物の受け取り場所に関する情報を受け取るクラスです。 その内部では、次の 2 つのコレクションが保持されます。 + +- `observers` \- 更新された情報を受け取るクライアントのコレクション。 + +- `flights` \- 飛行機の便と、各便に割り当てられた手荷物の受け取り場所のコレクション。 + + どちらのコレクションも、`BaggageHandler` クラスのコンストラクターでインスタンス化されるジェネリック オブジェクトによって表されます。 `BaggageHandler` クラスのソース コードを次の例に示します。 + + [!code-csharp[Conceptual.ObserverDesignPattern#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesignpattern/cs/provider.cs#2)] + [!code-vb[Conceptual.ObserverDesignPattern#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesignpattern/vb/provider.vb#2)] + + 更新された情報を受け取るクライアントは、`BaggageHandler.Subscribe` メソッドを呼び出します。 以前に通知をサブスクライブしたことがないクライアントの場合は、クライアントの の実装への参照が `observers` コレクションに追加されます。 + + オーバーロードされた `BaggageHandler.BaggageStatus` メソッドは、特定の便の手荷物が処理中であるか処理済みになったかを通知するために呼び出されます。 処理中の場合は、飛行機の便の番号、出発空港、および手荷物の受け取り場所がメソッドに渡されます。 処理済みの場合は、飛行機の便の番号のみがメソッドに渡されます。 手荷物が処理中の場合、メソッドは、渡された `BaggageInfo` の情報が `flights` コレクションに存在するかどうかを確認します。 存在しない場合は、メソッドによりその情報が追加され、各オブザーバーの `OnNext` メソッドが呼び出されます。 荷物を降ろさない便の場合、メソッドは、その便の情報が `flights` コレクションに格納されているかどうかを確認します。 格納されている場合、メソッドは、各オブザーバーの `OnNext` メソッドを呼び出し、`flights` コレクションから `BaggageInfo` オブジェクトを削除します。 + + 1 日の最終便が到着して手荷物の処理が完了すると、`BaggageHandler.LastBaggageClaimed` メソッドが呼び出されます。 このメソッドは、各オブザーバーの `OnCompleted` メソッドを呼び出して、すべての通知が完了したことを示します。その後、`observers` コレクションをクリアします。 + + プロバイダーの メソッドが返す の実装を使用すると、 メソッドが呼び出される前に、オブザーバーで通知の受信を中止できます。 この `Unsubscriber(Of BaggageInfo)` クラスのソース コードを次の例に示します。 このクラスが `BaggageHandler.Subscribe` メソッドでインスタンス化されるときに、`observers` コレクションへの参照と、コレクションに追加されるオブザーバーへの参照が渡されます。 これらの参照はローカル変数に割り当てられます。 オブジェクトの `Dispose` メソッドが呼び出されると、オブザーバーがまだ `observers` コレクションに存在するかどうかが確認され、存在する場合、そのオブザーバーは削除されます。 + + [!code-csharp[Conceptual.ObserverDesignPattern#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesignpattern/cs/provider.cs#3)] + [!code-vb[Conceptual.ObserverDesignPattern#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesignpattern/vb/provider.vb#3)] + + 次の例は、`ArrivalsMonitor` という名前の の実装を示しています。これは、手荷物受取所の情報を表示する基本クラスです。 情報は、出発地名のアルファベット順に表示されます。 `ArrivalsMonitor` のメソッドは、`overridable` \(Visual Basic\) または `virtual` \(C\#\) としてマークされているため、派生クラスによりすべてオーバーライドできます。 + + [!code-csharp[Conceptual.ObserverDesignPattern#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesignpattern/cs/observer.cs#4)] + [!code-vb[Conceptual.ObserverDesignPattern#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesignpattern/vb/observer.vb#4)] + + `ArrivalsMonitor` クラスには、`Subscribe` メソッドと `Unsubscribe` メソッドが含まれています。 `Subscribe` メソッドにより、このクラスは、 の呼び出しから返された の実装をプライベート変数に保存できます。 `Unsubscribe` メソッドにより、このクラスは、プロバイダーの の実装を呼び出して通知のサブスクリプションを解除できます。 `ArrivalsMonitor` は、 の各メソッドの実装も提供します。 そのうち、かなりの量のコードが含まれるのは の実装だけです。 このメソッドは、到着便の出発空港と手荷物の受け取り場所に関する情報を並べ替えて保持する、プライベートなジェネリック オブジェクトを操作します。 `BaggageHandler` クラスから新しい便の到着が報告されると、 メソッドの実装はその便に関する情報をリストに追加します。 `BaggageHandler` クラスからその便の手荷物の処理が完了したことが報告されると、 メソッドはその便をリストから削除します。 変更が発生するたびに、リストが並べ替えられてコンソールに表示されます。 + + 次の例に含まれているアプリケーション エントリ ポイントは、`BaggageHandler` クラスのインスタンスと、`ArrivalsMonitor` クラスの 2 つのインスタンスを作成し、`BaggageHandler.BaggageStatus` メソッドを使用して到着便に関する情報を追加および削除します。 いずれの場合も、オブザーバーが更新を受け取って、手荷物受取所の情報を正しく表示します。 + + [!code-csharp[Conceptual.ObserverDesignPattern#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.observerdesignpattern/cs/program.cs#5)] + [!code-vb[Conceptual.ObserverDesignPattern#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.observerdesignpattern/vb/module1.vb#5)] + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[オブサーバー デザイン パターンのベスト プラクティス](../../../docs/standard/events/observer-design-pattern-best-practices.md)|オブザーバー デザイン パターンを実装するアプリケーションを開発するときのベスト プラクティスについて説明します。| +|[方法: プロバイダーを実装する](../../../docs/standard/events/how-to-implement-a-provider.md)|温度監視アプリケーションのプロバイダーを実装するための手順について説明します。| +|[方法: オブザーバーを実装する](../../../docs/standard/events/how-to-implement-an-observer.md)|温度監視アプリケーションのオブザーバーを実装するための手順について説明します。| \ No newline at end of file diff --git a/docs/standard/exceptions/TOC.md b/docs/standard/exceptions/TOC.md new file mode 100644 index 00000000000..7e230a39fb0 --- /dev/null +++ b/docs/standard/exceptions/TOC.md @@ -0,0 +1,11 @@ +# [例外](index.md) +# [例外階層](exception-hierarchy.md) +# [例外の推奨事項](best-practices-for-exceptions.md) +# [例外処理の基本事項](exception-handling-fundamentals.md) +# [COM 相互運用の例外の処理](handling-com-interop-exceptions.md) +# [Exception クラスとプロパティ](exception-class-and-properties.md) +# [ユーザー フィルター例外ハンドラーの使用](using-user-filtered-exception-handlers.md) +# [方法 : 例外を明示的にスローする](how-to-explicitly-throw-exceptions.md) +# [方法 : finally ブロックを使用する](how-to-use-finally-blocks.md) +# [方法 : ユーザー定義の例外を作成する](how-to-create-user-defined-exceptions.md) +# [方法 : catch ブロックで特定の例外を使用する](how-to-use-specific-exceptions-in-a-catch-block.md) diff --git a/docs/standard/exceptions/best-practices-for-exceptions.md b/docs/standard/exceptions/best-practices-for-exceptions.md new file mode 100644 index 00000000000..a3292418d95 --- /dev/null +++ b/docs/standard/exceptions/best-practices-for-exceptions.md @@ -0,0 +1,113 @@ +--- +title: "例外の推奨事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "例外, 推奨される手順" +ms.assetid: f06da765-235b-427a-bfb6-47cd219af539 +caps.latest.revision: 28 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 28 +--- +# 例外の推奨事項 +適切にデザインされたアプリケーションは、アプリケーションのクラッシュを防ぐために、例外やエラーを処理します。 ここでは、例外の処理と作成のためのベスト プラクティスについて説明します。 + +## 例外処理 + 次の一覧に、アプリケーションで例外を処理するための一般的なガイドラインを示します。 + +- 例外処理コード \(`try`\/`catch` ブロック\) を適切に使用します。 例外処理を実行せずに、発生する可能性のあるエラーの条件をプログラムによってチェックすることもできます。 + + **プログラムによるチェック**。 接続が閉じているかどうかをチェックする `if` ステートメントを次のコード例に示します。 閉じていない場合、コード例は例外をスローせずに接続を閉じます。 + + [!code-cpp[Conceptual.Exception.Handling#2](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.exception.handling/cpp/source.cpp#2)] + [!code-csharp[Conceptual.Exception.Handling#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.exception.handling/cs/source.cs#2)] + [!code-vb[Conceptual.Exception.Handling#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.exception.handling/vb/source.vb#2)] + + **例外処理**。 次の例は、`try`\/`catch` ブロックを使用して接続を確認し、接続が閉じられていない場合は例外をスローします。 + + [!code-cpp[Conceptual.Exception.Handling#3](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.exception.handling/cpp/source.cpp#3)] + [!code-csharp[Conceptual.Exception.Handling#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.exception.handling/cs/source.cs#3)] + [!code-vb[Conceptual.Exception.Handling#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.exception.handling/vb/source.vb#3)] + + 例外処理を使用するかどうかは、予期されるイベント発生頻度によって決まります。 + + - イベントが頻繁には発生しない場合、つまり、イベントが本当に例外的であり、エラー \(予期しないファイルの終端の検出など\) を示す場合に、例外処理を使用します。 例外処理を使用すると、通常の状況では、実行されるコードが少なくなります。 + + - イベントが頻繁に発生し、通常の実行の一部であると見なせる場合は、プログラムによってエラーをチェックする方法を使用します。 プログラムによってエラーをチェックすると、例外が発生した場合に、より多くのコードが実行されます。 + +- 例外が発生する可能性のあるコードの前後に `try`\/`catch` ブロックを配置し、必要に応じて `finally` ブロックを使用してリソースをクリーンアップします。 このように配置することで、`try` ステートメントで例外が発生すると、`catch` ステートメントが例外を処理し、`finally` ステートメントは例外の発生の有無にかかわらずリソースを閉じるかまたは解放します。 + +- `catch` ブロックでは、常に特定の例外から一般的な例外の順に例外を配置します。 この手法により、まず特定の例外が処理され、次にこの例外がより一般的な `catch` ブロックに渡されます。 + +## 例外の作成と発生 + 次の一覧では、独自の例外の作成と、それをいつ発生させるかについてのガイドラインを示します。 詳細については、「[例外のデザイン ガイドライン](../../../docs/standard/design-guidelines/exceptions.md)」を参照してください。 + +- 通常の使用状態では例外が返されないようにクラスをデザインします。 たとえば、 クラスには、ファイルの終端に到達したかどうかを判別するために役立つメソッドが用意されています。 これにより、ファイルの終端を越えて読み取りを実行しようとした場合にも例外がスローされません。 ファイルの終端の読み取り方法を示すコード例を次に示します。 + + [!code-cpp[Conceptual.Exception.Handling#5](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.exception.handling/cpp/source.cpp#5)] + [!code-csharp[Conceptual.Exception.Handling#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.exception.handling/cs/source.cs#5)] + [!code-vb[Conceptual.Exception.Handling#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.exception.handling/vb/source.vb#5)] + +- エラー コードや HRESULT を返す代わりに、例外をスローします。 + +- 非常に一般的なエラーの場合は、例外をスローする代わりに null を返します。 非常に一般的なエラーは、通常の制御の流れと見なすことができます。 このような場合は、null を返すことによって、アプリケーションのパフォーマンスへの影響を最小限に抑えることができます。 + +- ほとんどの場合、事前に定義されている .NET Framework 例外タイプを使用します。 事前定義の例外クラスが適用されない場合に限り、新しい例外クラスを導入します。 + +- オブジェクトの現在の状態に対して、プロパティの設定またはメソッドの呼び出しが適切でない場合は、 をスローします。 + +- 無効なパラメーターが渡された場合は、 例外または の派生クラスをスローします。 + +- ほとんどのアプリでは、 クラスからカスタム例外を派生します。 クラスからの派生によって大きな価値が付加されることはありません。 + +- 例外クラス名の終わりに "Exception" という単語を付けてください。 次に例を示します。 + + [!code-cpp[Conceptual.Exception.Handling#4](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.exception.handling/cpp/source.cpp#4)] + [!code-csharp[Conceptual.Exception.Handling#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.exception.handling/cs/source.cs#4)] + [!code-vb[Conceptual.Exception.Handling#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.exception.handling/vb/source.vb#4)] + +- C\# および C\+\+ では、独自の例外クラスを作成するときに、少なくとも 3 つの共通コンストラクターを使用します。それらは、既定のコンストラクター、文字列メッセージを受け取るコンストラクター、および文字列メッセージと内部例外を受け取るコンストラクターです。 例については、「[方法 : ユーザー定義の例外を作成する](../../../docs/standard/exceptions/how-to-create-user-defined-exceptions.md)」を参照してください。 + + 1. 既定の値を使用する 。 + + 2. 文字列メッセージを受け取る 。 + + 3. 文字列メッセージと内部例外を受け取る 。 + +- ユーザー定義例外を作成するときには例外のメタデータを使用できるようにしてください。アプリ ドメイン間で例外が発生した場合や、リモート処理で必要となります。 たとえば、アプリ ドメイン A によってアプリ ドメイン B が作成され、このドメイン B で例外をスローするコードが実行されるとします。 アプリ ドメイン A で例外を適切にキャッチして処理するには、ドメイン A が、アプリ ドメイン B によりスローされた例外が格納されているアセンブリを検出できる必要があります。 アプリ ドメイン B がスローした例外が、ドメイン A のアプリケーション ベースではなくドメイン B のアプリケーション ベースにあるアセンブリに格納されている場合、ドメイン A は例外を検出できないため、共通言語ランタイムが 例外をスローします。 このような状況を回避するには、例外情報が格納されているアセンブリを次のいずれかの方法で配置します。 + + - 2 つのアプリ ドメインが共有する共通アプリケーション ベースにアセンブリを配置する。 + + または + + - ドメインが共通アプリケーション ベースを共有していない場合には、例外情報が格納されているアセンブリに厳密な名前で署名し、グローバル アセンブリ キャッシュにこのアセンブリを配置する。 + +- すべての例外に、ローカライズした説明文字列を含めます。 ユーザーに対して表示されるエラー メッセージは、例外クラスではなく、スローされた例外の説明文字列から派生されます。 + +- 文法的に正しいエラー メッセージを使用します。句点も含めてください。 例外の説明文字列の文の末尾には、必ず句点を使用します。 たとえば、"ログ テーブルがオーバーフローしました。" は、適切な説明文字列です。 + +- プログラムからアクセスできるように、 のプロパティを設定します。 プログラミングの点で追加情報が役立つ場合にだけ、\(説明文字列以外の\) 例外の追加プロパティを含めてください。 たとえば、 には プロパティがあります。 + +- 例外がスローされたステートメントからスタック トレースが開始され、例外をキャッチした `catch` ステートメントでトレースが終了します。 `throw` ステートメントを配置する位置を決定するときには、このことに注意してください。 + +- 例外ビルダー メソッドを使用します。 一般に、クラスはクラス実装内の複数の位置で同一の例外をスローします。 コードが長くなることを防ぐため、例外を作成して返すヘルパー メソッドを使用します。 次に例を示します。 + + [!code-cpp[Conceptual.Exception.Handling#6](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.exception.handling/cpp/source.cpp#6)] + [!code-csharp[Conceptual.Exception.Handling#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.exception.handling/cs/source.cs#6)] + [!code-vb[Conceptual.Exception.Handling#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.exception.handling/vb/source.vb#6)] + + 例外のコンストラクターを使用して例外を作成することもできます。 この方法は、 などのグローバル例外クラスに適しています。 + +- 例外をスローするときに、中間結果を削除します。 呼び出し元が、メソッドから例外がスローされるときに副作用が発生しないと仮定できる必要があります。 + +## 参照 + [例外](../../../docs/standard/exceptions/index.md) \ No newline at end of file diff --git a/docs/standard/exceptions/exception-class-and-properties.md b/docs/standard/exceptions/exception-class-and-properties.md new file mode 100644 index 00000000000..978285391c9 --- /dev/null +++ b/docs/standard/exceptions/exception-class-and-properties.md @@ -0,0 +1,57 @@ +--- +title: "Exception クラスとプロパティ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "例外クラス" + - "例外, 例外クラス" +ms.assetid: e2e1f8c4-e7b4-467d-9a66-13c90861221d +caps.latest.revision: 9 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 9 +--- +# Exception クラスとプロパティ + クラスは、例外の継承元である基本クラスです。 ほとんどの例外オブジェクトは、**Exception** の派生クラスのインスタンスです。ただし、 クラスから派生したオブジェクトも例外としてスローできます。 一部の言語では、**Exception** の派生オブジェクト以外のオブジェクトのスロー操作とキャッチ操作がサポートされていません。 ほとんどの場合には、**Exception** オブジェクトだけをスローおよびキャッチすることをお勧めします。 + + **Exception** クラスには、例外を理解するときに役立つプロパティがいくつかあります。 このようなプロパティを次に示します。 + +- プロパティ。 + + このプロパティにはスタック トレースが格納されています。エラーが発生した位置を判別するときに、このスタック トレースを使用できます。 デバッグ情報が使用できる場合には、スタック トレースにソース ファイル名とプログラム行番号が記述されます。 + +- プロパティ。 + + このプロパティによって、例外処理中に一連の例外が作成および保持されます。 また、既にキャッチされた例外を格納する新しい例外を作成するときにもこのプロパティを使用できます。 最初に発生した例外を、**InnerException** プロパティで作成された 2 番目の例外によって捕捉できるため、2 番目の例外を処理するコードが追加情報をチェックできます。 + + たとえば、ファイルを読み込み、データの書式を設定するメソッドがあるとします。 このメソッドのコードがファイルを読み込もうとしたときに、FileException がスローされたとします。 メソッドは FileException をキャッチし、BadFormatException をスローします。 この場合は、FileException を BadFormatException の **InnerException** プロパティに保存できます。 + + 例外がスローされた原因を判別する呼び出し元の判別機能を向上させるには、ヘルパー ルーチンがスローした例外をキャッチしてから発生したエラーを詳しく示す例外をスローするメソッドを使用します。 エラーを詳しく示す例外を新規に作成して、最初に発生した例外に対して内部例外参照を設定できます。 次に、このエラーを詳しく示す例外を呼び出し元にスローできます。 この機能により、最初にスローされた例外で終了する、一連のリンクされた例外を作成できます。 + +- プロパティ。 + + このプロパティは、例外の原因に関する詳細情報を提供します。 **Message** は、例外をスローしたスレッドの プロパティで指定された言語で表示されます。 + +- プロパティ。 + + このプロパティは、例外の原因に関する詳細情報が記述されたヘルプ ファイルの URL \(または URN\) を保持します。 + +- プロパティ + + このプロパティは、キーと値のペア内に任意のデータを保持できる IDictionary です。 + + **Exception** の継承クラスのほとんどは **Exception** を継承するだけであり、追加メンバーを実装せず、追加機能も提供しません。 したがって、例外に関する最も重要な情報は、例外の階層、例外名、および例外に格納されている情報から得られます。 + +## 参照 + [例外階層](../../../docs/standard/exceptions/exception-hierarchy.md) + [例外処理の基本事項](../../../docs/standard/exceptions/exception-handling-fundamentals.md) + [例外の推奨事項](../../../docs/standard/exceptions/best-practices-for-exceptions.md) + [例外](../../../docs/standard/exceptions/index.md) \ No newline at end of file diff --git a/docs/standard/exceptions/exception-handling-fundamentals.md b/docs/standard/exceptions/exception-handling-fundamentals.md new file mode 100644 index 00000000000..84ded44bd59 --- /dev/null +++ b/docs/standard/exceptions/exception-handling-fundamentals.md @@ -0,0 +1,52 @@ +--- +title: "例外処理の基本事項 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "共通言語ランタイム, 例外" + - "例外, 例" + - "ランタイム, 例外" +ms.assetid: e865d48c-b862-4448-833e-09fcd48adf6b +caps.latest.revision: 11 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 例外処理の基本事項 +共通言語ランタイムは、例外オブジェクトとプロテクト ブロック コードの概念に基づいた例外処理モデルをサポートしています。 例外が発生すると、その例外を表すオブジェクトがランタイムによって作成されます。 独自の例外クラスを作成するには、適切な基本例外の派生クラスを使用します。 + + ランタイムを使用するすべての言語で、例外は類似した方法で処理されます。 各言語で、try、catch、finally の各ブロックを使用した構造化例外処理が使用されます。 このセクションでは、基本的な例外処理のいくつかの例を示して説明します。 + +## このセクションの内容 + [方法 : Try ブロックと Catch ブロックを使用して例外をキャッチする](../../../docs/standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md) + try ブロックと catch ブロックを使用して例外を処理する方法について説明します。 + + [方法 : catch ブロックで特定の例外を使用する](../../../docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md) + 特定の例外をキャッチする方法について説明します。 + + [方法 : 例外を明示的にスローする](../../../docs/standard/exceptions/how-to-explicitly-throw-exceptions.md) + 例外をスローする方法と、例外をキャッチして再びスローする方法について説明します。 + + [方法 : ユーザー定義の例外を作成する](../../../docs/standard/exceptions/how-to-create-user-defined-exceptions.md) + 独自の例外クラスを作成する方法について説明します。 + + [ユーザー フィルター ハンドラーの使用](../../../docs/standard/exceptions/using-user-filtered-exception-handlers.md) + フィルター例外を設定する方法について説明します。 + + [方法 : finally ブロックを使用する](../../../docs/standard/exceptions/how-to-use-finally-blocks.md) + 例外ブロックでの finally ステートメントの使用方法について説明します。 + +## 関連項目 + [例外](../../../docs/standard/exceptions/index.md) + 共通言語ランタイムの例外を概説します。 + + [Exception クラスとプロパティ](../../../docs/standard/exceptions/exception-class-and-properties.md) + 例外オブジェクトの要素について説明します。 \ No newline at end of file diff --git a/docs/standard/exceptions/exception-hierarchy.md b/docs/standard/exceptions/exception-hierarchy.md new file mode 100644 index 00000000000..cb635642e73 --- /dev/null +++ b/docs/standard/exceptions/exception-hierarchy.md @@ -0,0 +1,64 @@ +--- +title: "例外階層 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "例外の種類" + - "ランタイム例外" + - "基本例外" + - "ApplicationException クラス" + - "共通言語ランタイム例外" + - "COM 相互運用, 例外" + - "例外階層" +ms.assetid: f7d68675-be06-40fb-a555-05f0c5a6f66b +caps.latest.revision: 14 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 例外階層 +例外は、実行中のプログラムによって生成される例外と、共通言語ランタイムによって生成される例外の&2; 種類に分類されます。 さらに、アプリケーションまたはランタイムによってスロー可能な例外の階層もあります。 + + クラスは、例外の基底クラスです。 いくつかの例外クラスから直接継承も含め、 します。 これらの&2; つのクラスがほぼすべてのランタイム例外の基礎を成しています。 + + ほとんどの例外から直接派生したない機能、および新しいメンバーを追加します。 たとえば、 クラスの階層構造を次に示します。 + + + + ランタイムの適切な派生クラスをスローするエラーが発生したとき。 このようなエラーは、実行時チェックのエラー (配列範囲外エラーなど) が原因で発生します。また、任意のメソッドの実行中に発生することがあります。 新しい例外を作成するアプリケーションをデザインする場合からそれらの例外を派生する必要があります、クラスです。 キャッチすることはお勧めできません、 でもなく、プログラミングをスローすることをお勧め、 アプリケーションにします。 + + 最も重大な例外、または回復不可能な状態で、ランタイムによってスローされた — を含めるします。 + + 相互運用の例外の派生元によってさらに拡張およびします。 たとえば、 COM 相互運用機能の操作中にスローされる例外は、その派生元でします。 からも派生します。 + +## ランタイム例外の階層 + ランタイムに起因する例外の基本セット個々 の命令を実行するときにそれをスローします。 次の表に、ランタイムから提供される標準例外と、派生クラスを作成する場合の条件を階層の順番に示します。 + +|例外の種類|基本型|説明|例| +|--------------------|---------------|-----------------|-------------| +|[例外](../../../docs/standard/exceptions/exception-class-and-properties.md)||すべての例外の基底クラスです。|なし (この例外の派生クラスを使用)。| +|||ランタイムで生成されるすべてのエラーの基底クラスです。|なし (この例外の派生クラスを使用)。| +|||配列のインデックスが誤っている場合にのみ、ランタイムによってスローされます。|次のように、配列に対して配列の有効範囲外のインデックスを付けた場合。

`var i = arr[arr.Length + 1];`

`Dim i = arr(arr.Length + 1)`| +|||null オブジェクトが参照された場合にのみ、ランタイムによってスローされます。|`object o = null; string s = o.ToString();`

`Dim o As Object = Nothing Dim s As String = o.ToString()`| +|||無効なメモリがアクセスされた場合にのみ、ランタイムによってスローされます。|アンマネージ コードまたは安全でないマネージ コードと相互運用されていて、無効なポインターが使用された場合に発生します。| +|||無効な状態の場合にメソッドによってスローされます。|列挙子の呼び出し`GetNext`基になるコレクションから項目を削除した後のメソッドです。| +|||すべての引数の例外の基底クラスです。|なし (この例外の派生クラスを使用)。| +|||null の引数を許可しないメソッドによってスローされます。|`String s = null; int i = "Calculate".IndexOf(s);`

`Dim s As String = Nothing Dim i As Integer = "Calculate".IndexOf(s)`| +|||引数が特定の範囲内にあることを検査するメソッドによってスローされます。|`String s = "string"; s = s.Substring(s.Length + 1);`

`Dim s As String = "string" s = s.Substring(s.Length + 1)`| +|||ランタイム外部の環境で発生した例外、およびランタイム外部の環境で対象とされる例外の基底クラスです。|なし (この例外の派生クラスを使用)。| +|||COM HRESULT 情報をカプセル化する例外です。|COM 相互運用機能で使用されます。| +|||Win32 構造化例外処理情報をカプセル化する例外です。|アンマネージ コード相互運用機能で使用されます。| + +## 関連項目 + [Exception クラスとプロパティ](../../../docs/standard/exceptions/exception-class-and-properties.md) + [例外処理の基本事項](../../../docs/standard/exceptions/exception-handling-fundamentals.md) + [例外の推奨事項](../../../docs/standard/exceptions/best-practices-for-exceptions.md) + [例外](../../../docs/standard/exceptions/index.md) \ No newline at end of file diff --git a/docs/standard/exceptions/handling-com-interop-exceptions.md b/docs/standard/exceptions/handling-com-interop-exceptions.md new file mode 100644 index 00000000000..c5626195550 --- /dev/null +++ b/docs/standard/exceptions/handling-com-interop-exceptions.md @@ -0,0 +1,38 @@ +--- +title: "COM 相互運用の例外の処理 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "error-reference" +helpviewer_keywords: + - "COM 相互運用機能, 例外" + - "例外, COM 相互運用機能" + - "例外, アンマネージ コード" + - "HRESULT" + - "アンマネージ コード, 例外" +ms.assetid: e6104aa8-8e5f-4069-b864-def85579c96c +caps.latest.revision: 11 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 11 +--- +# COM 相互運用の例外の処理 +マネージ コードとアンマネージ コードは、例外を処理するために一緒に操作できます。 マネージ コードでメソッドが例外をスローすると、共通言語ランタイムは、HRESULT を COM オブジェクトに渡すことができます。 アンマネージ コードでメソッドが失敗して、失敗を示す HRESULT を返した場合、ランタイムはマネージ コードでキャッチできる例外をスローします。 + + ランタイムは、HRESULT を COM 相互運用からの自動的にマップして、より詳細な例外を取得します。 たとえば、E\_ACCESSDENIED は になり、E\_OUTOFMEMORY は になるなどです。 + + HRESULT がカスタムの結果であるか、またはランタイムで不明な場合は、ランタイムがジェネリック をクライアントに渡します。 **COMException** の **ErrorCode** プロパティには、HRESULT 値が含まれます。 + +## IErrorInfo の処理 + エラーが COM からマネージ コードに渡された場合、ランタイムは例外オブジェクトにエラー情報を入れます。 IErrorInfo をサポートして HRESULT を返す COM オブジェクトは、この情報をマネージ コードの例外に提供します。 たとえば、ランタイムは、COM エラーからの説明を例外の プロパティにマップします。 HRESULT が追加のエラー情報を提供しない場合、ランタイムは例外のプロパティの多くに既定値を指定します。 + + アンマネージ コードでメソッドが失敗した場合、例外をマネージ コードのセグメントに渡すことができます。 「[HRESULT と例外](../../../docs/framework/interop/how-to-map-hresults-and-exceptions.md)」のトピックには、HRESULT がランタイム例外オブジェクトにマップする方法を示す表が含まれています。 + +## 参照 + [例外](../../../docs/standard/exceptions/index.md) \ No newline at end of file diff --git a/docs/standard/exceptions/how-to-create-user-defined-exceptions.md b/docs/standard/exceptions/how-to-create-user-defined-exceptions.md new file mode 100644 index 00000000000..986517d7a82 --- /dev/null +++ b/docs/standard/exceptions/how-to-create-user-defined-exceptions.md @@ -0,0 +1,42 @@ +--- +title: "方法 : ユーザー定義の例外を作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "例外, 例" + - "例外, ユーザー定義" + - "ユーザー定義例外" +ms.assetid: 25819a5a-f915-4fc8-b924-a76915674e04 +caps.latest.revision: 10 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法 : ユーザー定義の例外を作成する +ユーザーがプログラムによってエラー条件を識別できるようにする場合は、独自のユーザー定義例外を作成できます。 .NET Framework には、 基本クラスから最終的に派生した例外クラスの階層があります。 各クラスによって特定の例外が定義されているため、多くの場合は例外を作成する必要はありません。 クラスの派生クラスを独自の例外クラスとして作成することもできます。 + + 独自の例外を作成するときには、ユーザー定義例外のクラス名の終わりに "Exception" という単語を付けておくと、コーディングの点で便利です。また、推奨される 3 つの共通コンストラクターを実装すると便利です。この推奨コンストラクターを実装する例を次に示します。 + +> [!NOTE] +> リモート処理機能を使用する場合には、サーバー \(呼び出される側\) とクライアント \(プロキシ オブジェクトまたは呼び出し元\) がユーザー定義例外のメタデータを使用できるようにしてください。 たとえば、別のアプリケーション ドメインのメソッドを呼び出すコードは、リモート呼び出しによってスローされる例外が含まれているアセンブリを検出できる必要があります。 詳細については、「[例外処理の実施](../../../docs/standard/exceptions/best-practices-for-exceptions.md)」を参照してください。 + + 次の例では、新しい例外クラス `EmployeeListNotFoundException` は から派生しています。 3 つのコンストラクターはクラスで定義されていて、それぞれ異なるパラメーターを使用します。 + +## 使用例 + [!code-cpp[dg_exceptionDesign#14](../../../samples/snippets/cpp/VS_Snippets_CLR/dg_exceptionDesign/cpp/example2.cpp#14)] + [!code-csharp[dg_exceptionDesign#14](../../../samples/snippets/csharp/VS_Snippets_CLR/dg_exceptionDesign/cs/example2.cs#14)] + [!code-vb[dg_exceptionDesign#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/dg_exceptionDesign/vb/example2.vb#14)] + +## 参照 + [方法 : Try ブロックと Catch ブロックを使用して例外をキャッチする](../../../docs/standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md) + [方法 : catch ブロックで特定の例外を使用する](../../../docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md) + [例外の推奨事項](../../../docs/standard/exceptions/best-practices-for-exceptions.md) + [例外処理の基本事項](../../../docs/standard/exceptions/exception-handling-fundamentals.md) \ No newline at end of file diff --git a/docs/standard/exceptions/how-to-explicitly-throw-exceptions.md b/docs/standard/exceptions/how-to-explicitly-throw-exceptions.md new file mode 100644 index 00000000000..76d12ed9e17 --- /dev/null +++ b/docs/standard/exceptions/how-to-explicitly-throw-exceptions.md @@ -0,0 +1,38 @@ +--- +title: "方法 : 例外を明示的にスローする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "例外, スロー" + - "例外, try/catch ブロック" + - "FileNotFoundException クラス" + - "暗黙のスロー (例外の)" + - "try/catch ブロック" +ms.assetid: 72bdd157-caa9-4478-9ee3-cb4500b84528 +caps.latest.revision: 10 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 8 +--- +# 方法 : 例外を明示的にスローする +例外を明示的にスローするには、`throw` ステートメントを使用します。 キャッチした例外を再びスローするときにも、`throw` ステートメントを使用します。 実際のコードでは、デバッグ時に詳細情報を提供するために、再スローする例外に情報を追加すると便利です。 + + try ブロックと catch ブロックを使用して、発生する可能性のある をキャッチするコード例を次に示します。 try ブロックの後に続く catch ブロックは、データ ファイルが見つからない場合に をキャッチして、メッセージをコンソールに出力します。 その後の throw ステートメントでは、新しい をスローし、この例外にテキスト情報を追加します。 + +## 使用例 + [!code-csharp[Exception.Throwing#1](../../../samples/snippets/csharp/VS_Snippets_CLR/Exception.Throwing/CS/throw.cs#1)] + [!code-vb[Exception.Throwing#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Exception.Throwing/VB/throw.vb#1)] + +## 参照 + [方法 : Try ブロックと Catch ブロックを使用して例外をキャッチする](../../../docs/standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md) + [方法 : catch ブロックで特定の例外を使用する](../../../docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md) + [方法 : finally ブロックを使用する](../../../docs/standard/exceptions/how-to-use-finally-blocks.md) + [例外処理の基本事項](../../../docs/standard/exceptions/exception-handling-fundamentals.md) \ No newline at end of file diff --git a/docs/standard/exceptions/how-to-use-finally-blocks.md b/docs/standard/exceptions/how-to-use-finally-blocks.md new file mode 100644 index 00000000000..44394a7f52c --- /dev/null +++ b/docs/standard/exceptions/how-to-use-finally-blocks.md @@ -0,0 +1,39 @@ +--- +title: "方法 : finally ブロックを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ArgumentOutOfRangeException クラス" + - "例外, finally ブロック" + - "例外, try/catch ブロック" + - "finally ブロック" + - "try/catch ブロック" +ms.assetid: 4b9c0137-04af-4468-91d1-b9014df8ddd2 +caps.latest.revision: 9 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 7 +--- +# 方法 : finally ブロックを使用する +例外が発生すると、処理が中止され、最も近い例外ハンドラーへ制御が渡されます。 このため、常に呼び出されるはずのコード行が実行されないことがよくあります。 例外がスローされても、ファイルのクローズなどの一部のリソース クリーンアップ処理は常に実行されます。 クリーンアップ処理を常に実行するには、finally ブロックを使用します。 例外がスローされたかどうかに関係なく、finally ブロックは常に実行されます。 + + try ブロックと catch ブロックを使用して をキャッチするコード例を次に示します。 `Main` メソッドは 2 つの配列を作成し、1 つの配列をもう 1 つの配列へコピーしようとします。 このコピー操作により **ArgumentOutOfRangeException** が生成されるため、コンソールへエラーが出力されます。 finally ブロックは、コピー操作の結果に関係なく実行されます。 + +## 使用例 + [!code-cpp[CodeTryCatchFinallyExample#3](../../../samples/snippets/cpp/VS_Snippets_CLR/CodeTryCatchFinallyExample/CPP/source2.cpp#3)] + [!code-csharp[CodeTryCatchFinallyExample#3](../../../samples/snippets/csharp/VS_Snippets_CLR/CodeTryCatchFinallyExample/CS/source2.cs#3)] + [!code-vb[CodeTryCatchFinallyExample#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/CodeTryCatchFinallyExample/VB/source2.vb#3)] + +## 参照 + [方法 : Try ブロックと Catch ブロックを使用して例外をキャッチする](../../../docs/standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md) + [方法 : 例外を明示的にスローする](../../../docs/standard/exceptions/how-to-explicitly-throw-exceptions.md) + [方法 : ユーザー定義の例外を作成する](../../../docs/standard/exceptions/how-to-create-user-defined-exceptions.md) + [例外処理の基本事項](../../../docs/standard/exceptions/exception-handling-fundamentals.md) \ No newline at end of file diff --git a/docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md b/docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md new file mode 100644 index 00000000000..465a0c7aef2 --- /dev/null +++ b/docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md @@ -0,0 +1,41 @@ +--- +title: "方法 : catch ブロックで特定の例外を使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "catch ブロック" + - "例外, try/catch ブロック" + - "try/catch ブロック" +ms.assetid: 12af9ff3-8587-4f31-90cf-6c2244e0fdae +caps.latest.revision: 9 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 7 +--- +# 方法 : catch ブロックで特定の例外を使用する +発生した例外はスタックに渡され、いずれかの catch ブロックで処理されます。 catch ステートメントの順序は重要です。 一般例外の catch ブロックの前に、特定の例外を対象とした catch ブロックを配置します。このように配置しないと、コンパイラからエラーが発行される可能性があります。 適切な catch ブロックを判別するために、例外の種類と、catch ブロックに指定されている例外の名前が一致するかどうかが調べられます。 特定の catch ブロックが存在しないが、一般の catch ブロックが存在する場合には、一般の catch ブロックによって例外がキャッチされます。 + + try ブロックと catch ブロックを使用して をキャッチするコード例を次に示します。 このコード例では、従業員レベル \(`Emlevel`\) のプロパティだけを持つ `Employee` クラスが作成されます。 `PromoteEmployee` メソッドは、オブジェクトを受け取り、従業員レベルをインクリメントするメソッドです。 インスタンスが `PromoteEmployee` メソッドに渡されると、**InvalidCastException** が発生します。 + +## 使用例 + [!code-cpp[CatchException#2](../../../samples/snippets/cpp/VS_Snippets_CLR/CatchException/CPP/catchexception1.cpp#2)] + [!code-csharp[CatchException#2](../../../samples/snippets/csharp/VS_Snippets_CLR/CatchException/CS/catchexception1.cs#2)] + [!code-vb[CatchException#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/CatchException/VB/catchexception1.vb#2)] + + catch ブロックによってキャッチされなかった例外は、共通言語ランタイムによってキャッチされます。 ランタイムの構成に応じて、デバッグ ダイアログ ボックスが表示されるか、またはプログラムにより処理が停止されて例外情報のダイアログ ボックスが表示されます。 デバッグの詳細については、「[アプリケーションのデバッグとプロファイリング](../../../docs/framework/debug-trace-profile/index.md)」を参照してください。 + +## 参照 + [方法 : Try ブロックと Catch ブロックを使用して例外をキャッチする](../../../docs/standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md) + [方法 : 例外を明示的にスローする](../../../docs/standard/exceptions/how-to-explicitly-throw-exceptions.md) + [方法 : ユーザー定義の例外を作成する](../../../docs/standard/exceptions/how-to-create-user-defined-exceptions.md) + [方法 : finally ブロックを使用する](../../../docs/standard/exceptions/how-to-use-finally-blocks.md) + [Exception クラスとプロパティ](../../../docs/standard/exceptions/exception-class-and-properties.md) + [例外処理の基本事項](../../../docs/standard/exceptions/exception-handling-fundamentals.md) \ No newline at end of file diff --git a/docs/standard/exceptions/index.md b/docs/standard/exceptions/index.md new file mode 100644 index 00000000000..a634246736a --- /dev/null +++ b/docs/standard/exceptions/index.md @@ -0,0 +1,130 @@ +--- +title: "例外の処理とスロー | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "共通言語ランタイム, 例外" + - "エラー [.NET Framework], 例外" + - "例外 [.NET Framework]" + - "例外 [.NET Framework], 処理" + - "例外 [.NET Framework], スロー" + - "フィルター処理 (例外の)" + - "ランタイム, 例外" +ms.assetid: f99a1d29-a2a8-47af-9707-9909f9010735 +caps.latest.revision: 16 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 16 +--- +# 例外の処理とスロー + アプリケーションは、実行中に発生するエラーを一貫した方法で処理できなければなりません。 共通言語ランタイムは、一貫した方法でアプリケーションにエラーを通知するためのモデルを提供します。 .NET Framework のすべての操作は、例外をスローすることによってエラーを示します。 + + このトピックは、次のセクションで構成されています。 + +- [.NET Framework における例外](#exceptions_in_the_net_framework) + +- [例外:従来のエラー処理メソッド](#exceptions_vs_traditional_errorhandling_methods) + +- [ランタイムが例外を管理する方法](#how_the_runtime_manages_exceptions) + +- [ランタイム例外のフィルター処理](#filtering_runtime_exceptions) + +- [関連トピック](#related_topics) + +- [参照](#reference) + + +## .NET Framework における例外 + 例外とは、プログラムを実行することによって発生するエラー状態または予期しない動作のことです。 例外が発生する原因として、コードまたは呼び出したコード \(たとえば共有ライブラリ\) 内に障害がある、オペレーティング システム リソースを使用できない、予期しない状態 \(たとえば検証できないコード\) を共通言語ランタイムが検出したなどがあります。 アプリケーションは、他の状態からではなく、これらの状態のうちのいくつかから回復できます。 ほとんどのアプリケーション例外から回復できますが、ほとんどのランタイム例外からは回復できません。 + + .NET Framework では、例外は クラスから継承されるオブジェクトです。 例外は問題が発生したコード領域からスローされます。 例外は、アプリケーションが処理するかプログラムが終了するまで、スタックに渡されます。 + + [ページのトップへ](#top) + + +## 例外:従来のエラー処理メソッド + 言語のエラー処理モデルは従来、エラーを検出してそれに対応したハンドラーを見つける言語固有の方法か、オペレーティング システムが備えているエラー処理機構のいずれかを使用していました。 ランタイムは、次の機能を含んだ例外処理を実装します。 + +- 例外を生成する言語または例外を処理する言語に関係なく、例外を処理します。 + +- 例外を処理するための特定の言語構文を必要とせず、各言語が独自の構文を定義できます。 + +- プロセス間で、さらにはコンピューターの境界を越えて例外をスローできます。 + + 例外には、リターン コードなどの他のエラー通知メソッドに優る利点がいくつかあります。 エラーが通知されずに進行することがありません。 無効な値がシステムに伝わり続けることがありません。 リターン コードを確認する必要がありません。 プログラムの信頼性を高めるための例外処理コードを簡単に追加できます。 最後に、ランタイムの例外処理は、Windows ベースの C\+\+ エラーの処理よりも高速です。 + + 実行スレッドはコードのマネージ ブロックとアンマネージ ブロックを定期的にスキャンするので、ランタイムはマネージまたはアンマネージのどちらのコードでも例外をスローまたはキャッチできます。 アンマネージ コードには、C\+\+ スタイルの SEH 例外と COM ベースの HRESULT の両方を含めることができます。 + + +## ランタイムが例外を管理する方法 + ランタイムは、例外オブジェクトとコードの保護ブロックに基づいた例外処理モデルを使用します。 例外が発生すると、その例外を表す オブジェクトが作成されます。 + + ランタイムは、実行可能ファイルごとに例外情報テーブルを作成します。 実行可能ファイルの各メソッドには、例外情報テーブルで例外処理情報 \(空の場合がある\) の配列が関連付けられています。 配列内の各エントリは、コードの保護ブロック、そのコードに関連付けられた例外フィルター、例外ハンドラー \(`catch` ステートメント\) を示します。 この例外テーブルは非常に効率的なので、例外が発生していない場合にプロセッサ時間やメモリ使用のパフォーマンスが低下する原因にはなりません。 リソースを使用するのは、例外が発生したときだけです。 + + 例外情報テーブルは、保護ブロックに対応する 4 つのタイプの例外ハンドラーを表します。 + +- `finally` ハンドラー。ブロックが終了するときに必ず実行され、通常の制御フローによって発生するか、未処理の例外によって発生します。 + +- フォールト ハンドラー。例外が発生すると必ず実行されますが、通常の制御フローの完了時には実行されません。 + +- タイプ フィルター ハンドラー。指定したクラスまたはその派生クラスのすべての例外を処理します。 + +- ユーザー フィルター ハンドラー。ユーザー指定のコードを実行して、関連付けられたハンドラーで例外を処理するか、次の保護ブロックに例外を渡すかを判断します。 + + どの言語でも、その仕様に従ってこれらの例外ハンドラーを実装しています。 たとえば Visual Basic では、`catch` ステートメント内の変数比較 \(`When` キーワードを使用\) を通してユーザー フィルター ハンドラーにアクセスできます。一方 C\# では、ユーザー フィルター ハンドラーを実装していません。 + + 例外が発生すると、ランタイムは次の 2 段階プロセスを開始します。 + +1. ランタイムは、次のようにする最初の保護ブロックの配列を検索します。 + + - 現在実行中の命令が含まれている領域を保護する。 + + - 例外ハンドラーが含まれているか、例外を処理するフィルターが含まれている。 + +2. 一致すると、ランタイムは例外を記述する オブジェクトを作成します。 ランタイムは次に、例外が発生したステートメントと例外を処理するステートメントの間のすべての `finally` またはフォールト ステートメントを実行します。 例外ハンドラーの順序は重要です。最も内側の例外ハンドラーが最初に評価されます。 例外ハンドラーは例外をキャッチするルーチンのローカル変数とローカル メモリにアクセスできるが、例外がスローされるときの中間値は失われるということにも注意してください。 + + 現在のメソッドで一致しない場合、ランタイムは、現在のメソッドの各呼び出し元を検索し、スタックの最後までこのパスを続けます。 呼び出し元で一致しない場合、ランタイムはデバッガーに例外にアクセスさせます。 例外にデバッガーが付いていなければ、ランタイムは イベントを発生させます。 このイベントのリスナーが存在しない場合、ランタイムはスタック トレースをダンプし、アプリケーションを終了します。 + + [ページのトップへ](#top) + + +## ランタイム例外のフィルター処理 + キャッチして処理する例外を、タイプでまたは何らかのユーザー定義条件でフィルター処理できます。 + + タイプ フィルター ハンドラーは、特定のタイプの例外 \(またはその派生クラス\) を管理します。 次の例は、特定の例外 \(この場合は \) をキャッチすることを意図して設計されたタイプ フィルター ハンドラーを示しています。 + + [!code-cpp[CatchException#5](../../../samples/snippets/cpp/VS_Snippets_CLR/CatchException/CPP/catchexception3.cpp#5)] + [!code-csharp[CatchException#5](../../../samples/snippets/csharp/VS_Snippets_CLR/CatchException/CS/catchexception3.cs#5)] + [!code-vb[CatchException#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/CatchException/VB/catchexception3.vb#5)] + + ユーザー フィルター例外ハンドラーは、ユーザーが例外に対して定義した要件に基づいて、例外をキャッチして処理します。 この方法による例外のフィルター処理の詳細については、「[キャッチ ブロックでの特定の例外の使用](../../../docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md)」を参照してください。 + + [ページのトップへ](#top) + + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[Exception クラスとプロパティ](../../../docs/standard/exceptions/exception-class-and-properties.md)|例外オブジェクトの要素について説明します。| +|[例外階層](../../../docs/standard/exceptions/exception-hierarchy.md)|ほとんどの例外が派生する例外について説明します。| +|[例外処理の基本事項](../../../docs/standard/exceptions/exception-handling-fundamentals.md)|キャッチ、スロー、最後にステートメントを使用して例外を処理する方法について説明します。| +|[例外の推奨事項](../../../docs/standard/exceptions/best-practices-for-exceptions.md)|例外を処理するための推奨方法について説明します。| +|[COM 相互運用の例外の処理](../../../docs/standard/exceptions/handling-com-interop-exceptions.md)|アンマネージ コードでスローおよびキャッチされた例外を処理する方法について説明します。| +|[方法: HRESULT に例外を割り当てる](../../../docs/framework/interop/how-to-map-hresults-and-exceptions.md)|マネージ コードとアンマネージ コード間の例外のマッピングについて説明します。| + + +## 参照 + + + + + \ No newline at end of file diff --git a/docs/standard/exceptions/using-user-filtered-exception-handlers.md b/docs/standard/exceptions/using-user-filtered-exception-handlers.md new file mode 100644 index 00000000000..61ecb0e1e0a --- /dev/null +++ b/docs/standard/exceptions/using-user-filtered-exception-handlers.md @@ -0,0 +1,56 @@ +--- +title: "ユーザー フィルター例外ハンドラーの使用 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "例外, ユーザー フィルター" + - "ユーザー フィルター例外" +ms.assetid: aa80d155-060d-41b4-a636-1ceb424afee8 +caps.latest.revision: 10 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 8 +--- +# ユーザー フィルター例外ハンドラーの使用 +現在 Visual Basic では、ユーザー フィルター例外をサポートしています。 ユーザー フィルター例外ハンドラーは、独自に定義された例外の条件に基づいて例外をキャッチおよび処理します。 これらのハンドラーでは、**Catch** ステートメントを **When** キーワードと一緒に使用します。 + + 特定の例外オブジェクトが複数のエラーに対応するときにこの手法を使用すると便利です。 通常、このような例外オブジェクトには、エラーに関連付けられた特定のエラー コードが格納されているプロパティがあります。 **Catch** 句で処理する特定のエラーだけを選択するには、エラー コード プロパティを使用した式を作成します。 + + `When` キーワードが指定された **Catch** ステートメントを次の Visual Basic コード例に示します。 + +``` +Try + 'Try statements. + Catch When Err = VBErr_ClassLoadException + 'Catch statements. +End Try +``` + + ユーザー フィルター句の式が制限されることはありません。 ユーザー フィルター式の実行中に例外が発生すると、その例外は破棄され、そのフィルター式は false と評価されたと見なされます。 この場合、共通言語ランタイムでは、現在の例外に対応するハンドラーの検索が継続されます。 + +## 特定の例外とユーザー フィルター句の組み合わせ + catch ステートメントには、特定の例外とユーザー フィルター句の両方を記述できます。 ランタイムでは、特定の例外が最初にテストされます。 特定の例外がテストを通過すると、次にユーザー フィルターが実行されます。 汎用フィルターには、クラス フィルターで宣言されている変数への参照を含めることができます。 2 つのフィルター句の順序は一定であり、変更できないことに注意してください。 + + `ClassLoadException` という例外が指定された **Catch** ステートメントと、**When** キーワードを使用したユーザー フィルター句の Visual Basic コード例を次に示します。 + +``` +Try + 'Try statements. + Catch cle As ClassLoadException When cle.IsRecoverable() + 'Catch statements. +End Try +``` + +## 参照 + [方法 : Try ブロックと Catch ブロックを使用して例外をキャッチする](../../../docs/standard/exceptions/how-to-use-the-try-catch-block-to-catch-exceptions.md) + [方法 : catch ブロックで特定の例外を使用する](../../../docs/standard/exceptions/how-to-use-specific-exceptions-in-a-catch-block.md) + [例外の推奨事項](../../../docs/standard/exceptions/best-practices-for-exceptions.md) + [例外処理の基本事項](../../../docs/standard/exceptions/exception-handling-fundamentals.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/TOC.md b/docs/standard/garbage-collection/TOC.md new file mode 100644 index 00000000000..9b8bc15f6b0 --- /dev/null +++ b/docs/standard/garbage-collection/TOC.md @@ -0,0 +1,13 @@ +# [Memory Management and Garbage Collection](memory-management-and-gc.md) +# [Dispose メソッドの実装](implementing-dispose.md) +# [Garbage Collection Notifications](notifications.md) +# [Garbage Collection and Performance](performance.md) +# [Optimization for Shared Web Hosting](optimization-for-shared-web-hosting.md) +# [Cleaning Up Unmanaged Resources](unmanaged.md) +# [Latency Modes](latency.md) +# [Using Objects That Implement IDisposable](using-objects.md) +# [Weak References](weak-references.md) +# [Fundamentals of Garbage Collection](fundamentals.md) +# [Application Domain Resource Monitoring](app-domain-resource-monitoring.md) +# [Garbage Collection](index.md) +# [発生したコレクション](induced.md) diff --git a/docs/standard/garbage-collection/app-domain-resource-monitoring.md b/docs/standard/garbage-collection/app-domain-resource-monitoring.md new file mode 100644 index 00000000000..9d7d5114c95 --- /dev/null +++ b/docs/standard/garbage-collection/app-domain-resource-monitoring.md @@ -0,0 +1,94 @@ +--- +title: "Application Domain Resource Monitoring | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "monitoring managed memory use by application domain" + - "application domains, memory use" + - "memory use, monitoring" + - "application domains, resource monitoring" +ms.assetid: 318bedf8-7f35-4f00-b34a-2b7b8e3fa315 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Application Domain Resource Monitoring +アプリケーション ドメインのリソース監視 \(ARM\) を使用すると、ホストでアプリケーション ドメインによる CPU とメモリの使用状況を監視できます。 これは、ASP.NET など、長時間実行されるプロセスで多数のアプリケーション ドメインを使用するホストで役立ちます。 プロセス全体のパフォーマンスに悪影響を及ぼしているアプリケーションのアプリケーション ドメインをホストでアンロードできます。ただし、問題となっているアプリケーションを特定できる場合に限ります。 ARM を使用することで、そのような判断の際に役立つ情報が提供されます。 + + たとえば、ホスティング サービスが ASP.NET サーバーで多数のアプリケーションを実行している場合があります。 プロセスの特定のアプリケーションによるメモリ使用量が多くなりすぎたり、プロセッサ時間が長くなりすぎたりした場合、ホスティング サービスで ARM を使用すると、問題の原因になっているアプリケーション ドメインを特定できます。 + + ARM は軽量のため、実行中のアプリケーションで問題なく使用できます。 情報を確認するときは、Windows イベント トレーシング \(ETW\) を使用するか、マネージ API またはネイティブ API から直接アクセスします。 + +## リソース監視の有効化 + ARM を有効にする方法は 4 つあります。共通言語ランタイム \(CLR\) の起動時に構成ファイルを指定するか、アンマネージ ホスト API を使用するか、マネージ コードを使用するか、ARM ETW イベントをリッスンします。 + + ARM を有効にすると、プロセス内のアプリケーション ドメインに関するデータの収集がすぐに開始されます。 ARM を有効にする前にアプリケーション ドメインが作成されていた場合の累積データは、アプリケーション ドメインの作成時点ではなく、ARM を有効にした時点からの累積データです。ARM を有効にすると、後で無効にすることはできません。 + +- CLR の起動時に [\](../../../docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md) 要素を構成ファイルに追加し、`true`へ `enabled` 属性を設定することで ARM を有効にすることができます。 値が `false` \(既定\) の場合、ARM が起動時には有効にならないだけで、他のアクティブ化方法を使用して後から有効にすることができます。 + +- ホストで ARM を有効にするには、[ICLRAppDomainResourceMonitor](../../../ocs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-interface.md) ホスト インターフェイスを要求します。 このインターフェイスが正常に取得されると、ARM が有効になります。 + +- マネージ コードで ARM を有効にするには、static \(Visual Basic では `Shared`\) の プロパティを `true` に設定します。 プロパティを設定すると、すぐに ARM が有効になります。 + +- 起動後に ARM を有効にするには、ETW イベントをリッスンします。 `AppDomainResourceManagementKeyword` キーワードを使用してパブリック プロバイダー `Microsoft-Windows-DotNETRuntime` を有効にすると、ARM が有効になり、すべてのアプリケーション ドメインのイベントの生成が開始されます。 データをアプリケーション ドメインおよびスレッドと関連付けるには、さらに `ThreadingKeyword` キーワードを指定して `Microsoft-Windows-DotNETRuntimeRundown` プロバイダーを有効にする必要があります。 + +## ARM の使用 + ARM を使用すると、アプリケーション ドメインによって使用されている合計プロセッサ時間と、メモリの使用状況に関する 3 種類の情報が得られます。 + +- **アプリケーション ドメインの合計プロセッサ時間 \(秒\)**: アプリケーション ドメインの有効期間中に実行に時間を費やしたすべてのスレッドについて、オペレーティング システムから報告されたスレッド時間を合計した時間です。 ブロック状態またはスリープ状態のスレッドはプロセッサ時間を消費しません。 ネイティブ コードを呼び出すスレッドの場合、スレッドがネイティブ コードで費やした時間は、呼び出しを行ったアプリケーション ドメインの時間に加算されます。 + + - マネージ API: プロパティ。 + + - ホスト API: [ICLRAppDomainResourceMonitor::GetCurrentCpuTime](../Topic/ICLRAppDomainResourceMonitor::GetCurrentCpuTime%20Method.md) メソッド。 + + - ETW イベント: `ThreadCreated` イベント、`ThreadAppDomainEnter` イベント、および `ThreadTerminated` イベント。 プロバイダーおよびキーワードの詳細については、「[CLR ETW イベント](../../../docs/framework/performance/clr-etw-events.md)」の「アプリケーション ドメインのリソース監視イベント」を参照してください。 + +- **有効期間中にアプリケーション ドメインによって行われたマネージ割り当ての合計 \(バイト\)**: 割り当てオブジェクトの有効期間が短い場合があるため、アプリケーション ドメインによるすべてのメモリ使用が、割り当ての合計に必ずしも反映されるとは限りません。 ただし、アプリケーションで大量のオブジェクトの割り当てや解放を行う場合、割り当てのコストが問題になる可能性があります。 + + - マネージ API: プロパティ。 + + - ホスト API: [ICLRAppDomainResourceMonitor::GetCurrentAllocated](../Topic/ICLRAppDomainResourceMonitor::GetCurrentAllocated%20Method.md) メソッド。 + + - ETW イベント: `AppDomainMemAllocated` イベント、`Allocated` フィールド。 + +- **アプリケーション ドメインによって参照される、最後のフル ブロッキング コレクションで残ったマネージ メモリ \(バイト\)**: この数値は、フル ブロッキング コレクションの後にしか正確になりません \(対照的なのは同時実行コレクションです。同時実行コレクションはバックグラウンドで実行され、アプリケーションがブロックされません\)。フル ブロッキング コレクションは、たとえば メソッド オーバーロードで実行されます。 + + - マネージ API: プロパティ。 + + - ホスト API: [ICLRAppDomainResourceMonitor::GetCurrentSurvived](../Topic/ICLRAppDomainResourceMonitor::GetCurrentSurvived%20Method.md) メソッド、`pAppDomainBytesSurvived` パラメーター。 + + - ETW イベント: `AppDomainMemSurvived` イベント、`Survived` フィールド。 + +- **プロセスよって参照される、最後のフル ブロッキング コレクションで残った合計マネージ メモリ \(バイト\)**: 個々のアプリケーション ドメインで残ったメモリをこの数値と比較できます。 + + - マネージ API: プロパティ。 + + - ホスト API: [ICLRAppDomainResourceMonitor::GetCurrentSurvived](../Topic/ICLRAppDomainResourceMonitor::GetCurrentSurvived%20Method.md) メソッド、`pTotalBytesSurvived` パラメーター。 + + - ETW イベント: `AppDomainMemSurvived` イベント、`ProcessSurvived` フィールド。 + +### フル ブロッキング コレクションがいつ実行されたか確認する + 残ったメモリのカウントのうちどの時点のものが正確かを判断するには、フル ブロッキング コレクションがいつ発生したかを確認する必要があります。 そのための方法は、ARM の統計情報を調べるのに使用する API によって異なります。 + +#### マネージ API + クラスのプロパティを使用する場合は、 メソッドを使用してフル コレクションの通知を登録できます。 使用するしきい値は重要ではありません。コレクションが開始されるまでではなく、コレクションが完了するまで待機するからです。 その後、 メソッドを呼び出して、フル コレクションが完了するまでブロックします。 ループでメソッドを呼び出し、メソッドから制御が戻るたびに必要な分析を実行するスレッドを作成できます。 + + また、 メソッドを定期的に呼び出して、ジェネレーション 2 のコレクションの数が増加していないかどうかを確認する方法もあります。 ただし、ポーリング間隔によっては、この手法ではフル コレクションの発生を正確に特定できない場合があります。 + +#### ホスト API + アンマネージ ホスト API を使用する場合は、ホストで CLR の [IHostGCManager](../../../ocs/framework/unmanaged-api/hosting/ihostgcmanager-interface.md) インターフェイスの実装を渡す必要があります。 この CLR は、コレクションの実行中に中断されたスレッドの実行を再開すると [IHostGCManager::SuspensionEnding](../Topic/IHostGCManager::SuspensionEnding%20Method.md) メソッドを呼び出します。 完了したコレクションのジェネレーションがメソッドのパラメーターとして CLR から渡されるため、そのコレクションがフル コレクションだったかどうかをホストで確認できます。 残ったメモリを [IHostGCManager::SuspensionEnding](../Topic/IHostGCManager::SuspensionEnding%20Method.md) メソッドの実装で照会すると、カウントが更新された後ですぐ取得できるようになります。 + +## 参照 + + [ICLRAppDomainResourceMonitor インターフェイス](../../../ocs/framework/unmanaged-api/hosting/iclrappdomainresourcemonitor-interface.md) + [\](../../../docs/framework/configure-apps/file-schema/runtime/appdomainresourcemonitoring-element.md) + [CLR ETW イベント](../../../docs/framework/performance/clr-etw-events.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/fundamentals.md b/docs/standard/garbage-collection/fundamentals.md new file mode 100644 index 00000000000..669d51f1a99 --- /dev/null +++ b/docs/standard/garbage-collection/fundamentals.md @@ -0,0 +1,304 @@ +--- +title: "Fundamentals of Garbage Collection | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "garbage collection, generations" + - "garbage collection, background garbage collection" + - "garbage collection, concurrent garbage collection" + - "garbage collection, server garbage collection" + - "garbage collection, workstation garbage collection" + - "garbage collection, managed heap" +ms.assetid: 67c5a20d-1be1-4ea7-8a9a-92b0b08658d2 +caps.latest.revision: 51 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 51 +--- +# Fundamentals of Garbage Collection + 共通言語ランタイム \(CLR\) では、自動メモリ マネージャーとしてガベージ コレクターを使用できます。 次のような利点があります。 + +- アプリケーションを開発するときにメモリを解放する必要がありません。 + +- オブジェクトが効率的にマネージ ヒープに割り当てられます。 + +- 使用されなくなったオブジェクトが解放され、メモリがクリアされてその後の割り当てに使用できるようになります。 マネージ オブジェクトは自動的にクリーンな内容で開始されるため、コンストラクターでデータ フィールドごとに初期化する必要はありません。 + +- オブジェクトで別のオブジェクトの内容を使用できなくすることで、メモリの安全が確保されます。 + + このトピックでは、ガベージ コレクションの主要な概念について説明します。 このチュートリアルは、次のセクションで構成されています。 + +- [メモリの基礎](#fundamentals_of_memory) + +- [ガベージ コレクションの条件](#conditions_for_a_garbage_collection) + +- [マネージ ヒープ](#the_managed_heap) + +- [ジェネレーション](#generations) + +- [ガベージ コレクションの実行時の動作](#what_happens_during_a_garbage_collection) + +- [アンマネージ リソースの操作](#manipulating_unmanaged_resources) + +- [ワークステーションとサーバーのガベージ コレクション](#workstation_and_server_garbage_collection) + +- [同時実行ガベージ コレクション](#concurrent_garbage_collection) + +- [バックグラウンド ワークステーション ガベージ コレクション](#background_garbage_collection) + +- [バックグラウンド サーバー ガベージ コレクション](#background_server_garbage_collection) + + +## メモリの基礎 + CLR のメモリに関する重要な概念の概要を以下に示します。 + +- 各プロセスは、分離された独自の仮想アドレス空間を持ちます。 同じコンピューターのすべてのプロセスが同じ物理メモリとページ ファイル \(存在する場合\) を共有します。 + +- 32 ビット コンピューターでは、各プロセスが既定で 2 GB のユーザー モード仮想アドレス空間を持ちます。 + +- アプリケーション開発者が操作するのは仮想アドレス空間だけで、直接物理メモリを操作することはありません。 マネージ ヒープの仮想メモリの割り当てと解放はガベージ コレクターによって行われます。 + + ネイティブ コードを記述する場合は、Win32 関数を使用して仮想アドレス空間を操作します。 ネイティブ ヒープの仮想メモリの割り当てと解放はこれらの関数によって行われます。 + +- 仮想メモリには次の 3 つの状態があります。 + + - 空き。 参照されていない、割り当てに使用できるメモリ ブロックです。 + + - 予約済み。 使用できるように確保された、他の割り当て要求には使用できないメモリ ブロックです。 ただし、このメモリ ブロックがコミットされるまではデータを格納できません。 + + - コミット済み。 物理ストレージに割り当てられたメモリ ブロックです。 + +- 仮想アドレス空間は、断片化することがあります。 断片化とは、アドレス空間に複数の空きブロック \(ホールとも呼ばれます\) がある状態です。 仮想メモリの割り当てが要求された場合、仮想メモリ マネージャーは、その割り当て要求を満たすのに十分な大きさの単一の空きブロックを見つけなければなりません。 2 GB の空き領域があっても、そのすべての領域が 1 つのアドレス ブロックにないと、2 GB の領域を必要とする割り当ては失敗します。 + +- メモリが足りなくなるのは、予約する仮想アドレス空間が足りなくなった場合か、コミットする物理領域が足りなくなった場合です。 + + ページ ファイルは、物理メモリの圧迫度 \(物理メモリに対する需要\) が低い場合にも使用されます。 最初に物理メモリの圧迫度が高まると、データを格納するための領域を確保するために物理メモリのデータの一部がページ ファイルにバックアップされますが、 そのデータは必要になるまでページングされないため、物理メモリの圧迫度が非常に低い状況でページングが発生する可能性もあります。 + + [ページのトップへ](#top) + + +## ガベージ コレクションの条件 + ガベージ コレクションは、次のいずれかの条件に当てはまる場合に発生します。 + +- システムの物理メモリが少ない場合。 + +- マネージ ヒープで割り当てられたオブジェクトによって使用されているメモリが、許容されるしきい値を超える場合。 このしきい値は、プロセスの進行に合わせて絶えず調整されます。 + +- メソッドが呼び出された場合。 ほとんどの場合、ガベージ コレクターは継続して実行されるため、このメソッドを呼び出す必要はありません。 このメソッドは、主に特別な状況やテストで使用されます。 + + [ページのトップへ](#top) + + +## マネージ ヒープ + ガベージ コレクターは、CLR によって初期化された後、オブジェクトを格納および管理するためのメモリのセグメントを割り当てます。 オペレーティング システムのネイティブ ヒープに対し、このメモリのことをマネージ ヒープと呼びます。 + + マネージ ヒープはマネージ プロセスごとに割り当てられます。 プロセス内のすべてのスレッドは、同じヒープにオブジェクト用のメモリを割り当てます。 + + メモリを予約するために、ガベージ コレクターは Win32 [VirtualAlloc](http://go.microsoft.com/fwlink/?LinkId=179047) 関数を呼び出し、マネージ アプリケーション用のメモリのセグメントを一度に 1 つずつ予約します。 また、ガベージ コレクターは、必要に応じてセグメントを予約したり、Win32 [VirtualFree](http://go.microsoft.com/fwlink/?LinkId=179050) 関数を呼び出すことで \(オブジェクトのセグメントをクリアしてから\) セグメントを解放してオペレーティング システムに戻したりします。 + +> [!IMPORTANT] +> ガベージ コレクターによって割り当てらるセグメントのサイズは実装に固有であり、定期的な更新プログラムによる場合を含め、いつでも変更されることがあります。 アプリでは、セグメント サイズを推測することや、特定のセグメント サイズに依存することを絶対に避けてください。また、セグメントの割り当てに使用可能なメモリの量を構成しようとしてもなりません。 + + ヒープに割り当てられたオブジェクトが少ないほど、ガベージ コレクターの処理も少なくなります。 そのため、オブジェクトを割り当てるときに、必要な量より多く割り当てないようにしてください。たとえば、15 バイトしか必要がないときに 32 バイトの配列を割り当てないようにしてください。 + + ガベージ コレクションがトリガーされると、ガベージ コレクターは、使用されなくなったオブジェクトに占有されているメモリを解放します。 この解放プロセスでは、まとめて移動できるように有効なオブジェクトを圧縮し、使用されなくなったスペースを削除することで、ヒープを小さくします。 これにより、一緒に割り当てられたオブジェクトが同じマネージ ヒープにまとめられ、局所性が保持されます。 + + ガベージ コレクションの割り込みの動作 \(頻度と期間\) は、割り当てのボリュームとマネージ ヒープ上の残ったメモリの量によって決まります。 + + ヒープは、大きなオブジェクト ヒープと小さなオブジェクト ヒープの 2 つを累積したものと見なすことができます。 + + 大きなオブジェクト ヒープには、85,000 バイトを超える非常に大きなオブジェクトが格納されます。 大きなオブジェクト ヒープの中のオブジェクトは、通常は配列になります。 インスタンス オブジェクトが極端に大きくなることはほとんどありません。 + + [ページのトップへ](#top) + + +## ジェネレーション + ヒープは、有効期間が長いオブジェクトと有効期間が短いオブジェクトに対処できるようにジェネレーションにまとめられます。 ガベージ コレクションは主に、通常はヒープのごく一部だけを占有する有効期間が短いオブジェクトを解放する場合に発生します。 ヒープのオブジェクトのジェネレーションには次の 3 つがあります。 + +- **ジェネレーション 0**。 これは一番最初のジェネレーションで、有効期間が短いオブジェクトが格納されます。 有効期間が短いオブジェクトには、たとえば、テンポラリ変数などがあります。 ガベージ コレクションは、このジェネレーションで最も頻繁に発生します。 + + オブジェクトが新しく割り当てられると、大きなオブジェクトの場合以外は、オブジェクトの新しいジェネレーションが形成されて暗黙的にジェネレーション 0 のコレクションになります。大きなオブジェクトの場合は、ジェネレーション 2 のコレクションの大きなオブジェクトのヒープに割り当てられます。 + + ジェネレーション 0 では、ほとんどのオブジェクトがガベージ コレクションで解放され、次のジェネレーションには残りません。 + +- **ジェネレーション 1**。 このジェネレーションには有効期間が短いオブジェクトが格納されます。有効期間が短いオブジェクトと有効期間が長いオブジェクトの間のバッファーとして機能します。 + +- **ジェネレーション 2**。 このジェネレーションには、有効期間が長いオブジェクトが格納されます。 有効期間が長いオブジェクトには、たとえば、プロセスの存続期間を通じて有効な静的データを含むサーバー アプリケーションのオブジェクトなどがあります。 + + ガベージ コレクションは、条件に応じて特定のジェネレーションで発生します。 ジェネレーションのコレクションでは、そのジェネレーションとそれよりも前のすべてのジェネレーションのオブジェクトがコレクションの対象になります。 ジェネレーション 2 のガベージ コレクションは、すべてのジェネレーションのすべてのオブジェクト \(つまり、マネージ ヒープのすべてのオブジェクト\) を解放することから、フル ガベージ コレクションとも呼ばれます。 + +### 存続と昇格 + ガベージ コレクションで解放されなかったオブジェクトは残存オブジェクトと呼ばれ、次のジェネレーションに昇格されます。 ジェネレーション 0 のガベージ コレクションでごみではないと判断されたオブジェクトは、ジェネレーション 1 に昇格されます。ジェネレーション 1 のガベージ コレクションでごみではないと判断されたオブジェクトは、ジェネレーション 2 に昇格されます。ジェネレーション 2 のガベージ コレクションでごみではないと判断されたオブジェクトは、ジェネレーション 2 に残ります。 + + ガベージ コレクターは、ジェネレーションでごみではないと判断される割合が高いことを検出すると、そのジェネレーションに対する割り当てのしきい値を高くして、次のジェネレーションで十分なサイズの解放されたメモリを受け取ることができるようにします。 CLR は、アプリケーションのワーキング セットが大きくなりすぎないようにすることと、ガベージ コレクションに時間がかかりすぎないようにすることに注意して、それらの 2 つの優先事項のバランスを絶えず調整します。 + +### 短期のジェネレーションとセグメント + ジェネレーション 0 および 1 のオブジェクトは有効期間が短いことから、それらのジェネレーションのことを短期ジェネレーションと呼びます。 + + 短期ジェネレーションは、短期セグメントと呼ばれるメモリ セグメントに割り当てる必要があります。 ガベージ コレクターによって新しいセグメントが取得されると、いずれも新しい短期セグメントになり、ジェネレーション 0 のガベージ コレクションで残ったオブジェクトが格納されます。 古い短期セグメントは新しいジェネレーション 2 のセグメントになります。 + + 短期セグメントのサイズは、システムが 32 ビット 64 ビットのどちらであるか、および実行されているガベージ コレクターの種類に応じて異なります。 既定の値を次の表に示します。 + +||32 ビット|64 ビット| +|-|------------|------------| +|ワークステーションの GC|16 MB|256 MB| +|サーバーの GC|64 MB|4 GB| +|サーバーの GC \(論理 CPU が 4 個以上の場合\)|32 MB|2 GB| +|サーバーの GC \(論理 CPU が 8 個以上の場合\)|16 MB|1 GB| + + 短期セグメントには、ジェネレーション 2 のオブジェクトも含めることができます。 ジェネレーション 2 のオブジェクトでは複数のセグメントを使用できます \(プロセスでの必要に応じてメモリが許容できる限りいくつでも使用できます\)。 + + 短期ガベージ コレクションによって解放されるメモリの量は、短期セグメントのサイズまでに限られます。 解放されるメモリの量は、使用されなくなったオブジェクトに占有されていた領域に比例します。 + + [ページのトップへ](#top) + + +## ガベージ コレクションの実行時の動作 + ガベージ コレクションには次のフェーズがあります。 + +- マーキング フェーズ。有効なすべてのオブジェクトを探し、そのリストを作成します。 + +- 再配置フェーズ。圧縮するオブジェクトへの参照を更新します。 + +- 圧縮フェーズ。使用されなくなったオブジェクトに占有されている領域を解放し、残ったオブジェクトを圧縮します。 圧縮フェーズでは、ガベージ コレクションで残ったオブジェクトをセグメントの後ろに移動します。 + + ジェネレーション 2 のコレクションでは複数のセグメントを占有できるため、ジェネレーション 2 に昇格されたオブジェクトはより古いセグメントに移動できます。 ジェネレーション 1 とジェネレーション 2 の残存オブジェクトは、どちらもジェネレーション 2 に昇格されるため、別のセグメントに移動できます。 + + 通常、大きなオブジェクト ヒープは圧縮されません。これは、大きなオブジェクトをコピーするとパフォーマンスが低下するためです。 ただし [!INCLUDE[net_v451](../../../includes/net-v451-md.md)] 以降では、 プロパティを使用して、大きなオブジェクト ヒープを必要に応じて圧縮できます。 + + ガベージ コレクターは、次の情報に基づいてオブジェクトが有効かどうかを判断します。 + +- **スタック ルート**。 Just\-In\-Time \(JIT\) コンパイラとスタック ウォーカーによって提供されるスタック変数。 + +- **ガベージ コレクション ハンドル**。 マネージ オブジェクトを参照するハンドル。これらのハンドルは、ユーザー コードまたは共通言語ランタイムで割り当てることができます。 + +- **静的データ**。 他のオブジェクトを参照している可能性があるアプリケーション ドメインの静的オブジェクト。 静的オブジェクトはそれぞれのアプリケーション ドメインで追跡されます。 + + ガベージ コレクションが開始される前に、そのガベージ コレクションをトリガーしたスレッドを除くすべてのマネージ スレッドが中断されます。 + + 次の図は、ガベージ コレクションを発生させて他のスレッドの中断を引き起こすスレッドを示しています。 + + ![スレッドがガベージ コレクションを発生させる場合](../../../docs/standard/garbage-collection/media/gc-triggered.png "GC\_Triggered") +ガベージ コレクションを発生させるスレッド + + [ページのトップへ](#top) + + +## アンマネージ リソースの操作 + ガベージ コレクターではマネージ ヒープのメモリのみを追跡するため、マネージ オブジェクトでネイティブのファイル ハンドルを使用してアンマネージ オブジェクトを参照している場合は、そのアンマネージ オブジェクトを明示的に解放する必要があります。 + + マネージ オブジェクトのユーザーは、オブジェクトで使用されているネイティブ リソースを破棄できません。 そのため、クリーンアップを行うには、マネージ オブジェクトをファイナライズ可能にします。 ファイナライズは、オブジェクトが使用されなくなったときに実行するクリーンアップ アクションで構成されます。 マネージ オブジェクトが使用されなくなると、ファイナライザー メソッドで指定されたクリーンアップ アクションが実行されます。 + + ファイナライズ可能なオブジェクトが使用されなくなったことが検出されると、クリーンアップ アクションを実行するためにファイナライザーによってキューに入れられますが、オブジェクト自体は次のジェネレーションに昇格されます。 そのため、そのジェネレーションで次のガベージ コレクション \(次回のガベージ コレクションではない場合もあります\) が発生するまで、オブジェクトが解放されたかどうかは確認できません。 + + [ページのトップへ](#top) + + +## ワークステーションとサーバーのガベージ コレクション + ガベージ コレクターは、さまざまなシナリオに対応できるように自動的に調整されます。 構成ファイルの設定を使って、作業負荷の特性に基づいてガベージ コレクションの種類を設定できます。 CLR には、次の種類のガベージ コレクションが用意されています。 + +- ワークステーションのガベージ コレクション。すべてのクライアント ワークステーションとスタンドアロンの PC を対象としたオプションです。 これは、ランタイム構成スキーマの [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)の既定の設定です。 + + ワークステーションのガベージ コレクションは、同時実行または非同時実行のどちらかで実行できます。 同時実行ガベージ コレクションでは、ガベージ コレクションの実行中にマネージ スレッドの操作を続けることができます。 + + [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、同時実行ガベージ コレクションに代わるものとしてバックグラウンド ガベージ コレクションが使用されます。 + +- サーバーのガベージ コレクション。高いスループットとスケーラビリティが必要なサーバー アプリケーションを対象としたオプションです。 サーバーのガベージ コレクションは、非同時実行ガベージ コレクションまたはバックグラウンド ガベージ コレクションである場合があります。 + + 次の図は、サーバー上でガベージ コレクションを実行する専用のスレッドを示しています。 + + ![サーバー ガベージ コレクションのスレッド](../../../docs/standard/garbage-collection/media/gc-server.png "GC\_Server") +サーバー ガベージ コレクション + +### ガベージ コレクションの構成 + ランタイム構成スキーマの [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md)を使用して、CLR で実行するガベージ コレクションの種類を指定できます。 この要素の `enabled` 属性が `false` \(既定値\) に設定されている場合、ワークステーションのガベージ コレクションが実行されます。`enabled` 属性を `true` に設定すると、サーバーのガベージ コレクションが実行されます。 + + 同時実行ガベージ コレクションは、ランタイム構成スキーマの [\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)を使用して指定します。 既定値は `enabled` です。 この設定は、同時実行ガベージ コレクションとバックグラウンド ガベージ コレクションの両方を制御します。 + + サーバーのガベージ コレクションは、アンマネージ ホスト インターフェイスを使用して指定することもできます。 ASP.NET および SQL Server では、アプリケーションがそのいずれかの環境内でホストされている場合、自動的にサーバーのガベージ コレクションが有効になることに注意してください。 + +### ワークステーションとサーバーのガベージ コレクションの比較 + ワークステーションのガベージ コレクションにおける、スレッド処理とパフォーマンスについての注意点を次に示します。 + +- コレクションは、ガベージ コレクションをトリガーしたユーザー スレッドで、それと同じ優先順位で実行されます。 ユーザー スレッドは一般に通常の優先順位で実行されるため、その場合 \(通常の優先順位のスレッドで実行された場合\)、ガベージ コレクターの CPU 時間が他のスレッドと競合します。 + + ネイティブ コードを実行しているスレッドは中断されません。 + +- プロセッサが 1 つしかないコンピューターでは、[\](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md) の設定に関係なく、常にワークステーションのガベージ コレクションが使用されます。 サーバーのガベージ コレクションを指定した場合、CLR は、同時実行を無効にしてワークステーションのガベージ コレクションを使用します。 + + サーバーのガベージ コレクションにおける、スレッド処理とパフォーマンスについての注意点を次に示します。 + +- コレクションは、`THREAD_PRIORITY_HIGHEST` の優先順位で実行される複数の専用スレッドで実行されます。 + +- ヒープおよびガベージ コレクションを実行するための専用スレッドは CPU ごとに 1 つずつ用意され、複数のヒープのコレクションが同時に行われます。 各ヒープには小さなオブジェクト ヒープと大きなオブジェクト ヒープがあり、どのヒープもユーザー コードからアクセスできます。 異なるヒープのオブジェクトを相互に参照できます。 + +- 複数のガベージ コレクション スレッドが連携して処理を行うため、同じサイズのヒープを処理した場合、サーバーのガベージ コレクションの方がワークステーションのガベージ コレクションよりも高速です。 + +- 一般に、サーバーのガベージ コレクションの方が、格納されるセグメントのサイズは大きくなります。 ただし、これは一般論に過ぎません。セグメントのサイズは実装に固有であり、変更されることがあります。 アプリをチューニングする時に、ガベージ コレクターによって割り当てられるセグメントのサイズに関して何らかの仮定をすることは避けてください。 + +- サーバーのガベージ コレクションでは、リソースが大量に消費されることがあります。 たとえば、4 つのプロセッサを搭載したコンピューターで 12 のプロセスを実行する場合、そのすべてでサーバーのガベージ コレクションを使用するには、48 の専用のガベージ コレクション スレッドが必要です。 メモリの負荷が高い状況で、すべてのプロセスがガベージ コレクションの処理を開始した場合、ガベージ コレクターは 48 のスレッドをスケジュールすることになります。 + + 実行するアプリケーションのインスタンスが数百に及ぶ場合は、同時実行ガベージ コレクションを無効にしてワークステーションのガベージ コレクションを使用することを検討してください。 これによって、コンテキストの切り替えが少なくなり、パフォーマンスが向上します。 + + [ページのトップへ](#top) + + +## 同時実行ガベージ コレクション + ワークステーションまたはサーバーのガベージ コレクションでは、同時実行ガベージ コレクションを有効にすることで、複数のスレッドを同時に実行できます。同時実行ガベージ コレクションでは、コレクションの実行中は、ほとんどの場合、ガベージ コレクションの処理を行う専用のスレッドが使用されます。 このオプションは、ジェネレーション 2 のガベージ コレクションにのみ影響します。ジェネレーション 0 と 1 の処理はすぐに終了するため、常に非同時実行で行われます。 + + 同時実行ガベージ コレクションでは、コレクションの一時停止を最小限にすることで、インタラクティブ アプリケーションの応答性を高めることができます。 マネージ スレッドは、同時実行ガベージ コレクションのスレッドが実行されている間も、ほぼ常に処理を続けることができます。 そのため、ガベージ コレクションの実行中の一時停止が短くなります。 + + 複数のプロセスを実行している場合にパフォーマンスを向上させるには、同時実行ガベージ コレクションを無効にします。[\ 要素](../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)をアプリの構成ファイルに追加し、`enabled` 属性の値を `"false"` に設定することで、これを行うことができます。 + + 同時実行ガベージ コレクションは、専用のスレッドで実行されます。 既定では、CLR は、同時実行ガベージ コレクションを有効にしてワークステーションのガベージ コレクションを実行します。 これは、シングルプロセッサのコンピューターでもマルチプロセッサのコンピューターでも同じです。 + + 同時実行ガベージ コレクションの実行中にヒープに小さなオブジェクトを割り当てる機能は、同時実行ガベージ コレクションの開始時に短期セグメントに残っていたオブジェクトによって制限されます。 セグメントの最後に達した後は、同時実行ガベージ コレクションが終了するまで、小さなオブジェクトを割り当てる必要があるマネージ スレッドは中断されたままになります。 + + 同時実行ガベージ コレクションのワーキング セットは、同時実行コレクションの実行中にオブジェクトを割り当てることができるように \(非同時実行ガベージ コレクションに比べて\) 若干大きくなっています。 ただし、オブジェクトを割り当てるとそれもワーキング セットの一部になるため、パフォーマンスに影響することがあります。 基本的に、同時実行ガベージ コレクションでは、ある程度の CPU およびメモリと引き換えに一時停止が短くなります。 + + 次の図は、別々の専用のスレッドで実行される同時実行ガベージ コレクションを示しています。 + + ![同時実行ガベージ コレクションのスレッド](../../../docs/standard/garbage-collection/media/gc-concurrent.png "GC\_Concurrent") +同時実行ガベージ コレクション + + [ページのトップへ](#top) + + +## バックグラウンド ワークステーション ガベージ コレクション + バックグラウンド ガベージ コレクションでは、ジェネレーション 2 のコレクションの実行中に、必要に応じて短期ジェネレーション \(0 および 1\) のコレクションが行われます。 バックグラウンド ガベージ コレクションの設定はありません。同時実行ガベージ コレクションを有効にすると自動的に有効になります。 バックグラウンド ガベージ コレクションは同時実行ガベージ コレクションに代わるものです。 同時実行ガベージ コレクションと同様に、バックグラウンド ガベージ コレクションは専用のスレッドで実行され、ジェネレーション 2 のコレクションにのみ適用されます。 + +> [!NOTE] +> バックグラウンド ガベージ コレクションは、[!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降のバージョンでのみ使用できます。[!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] では、ワークステーションのガベージ コレクションのみがサポートされます。 .NET Framework 4.5 以降では、バックグラウンド ガベージ コレクションは、ワークステーションとサーバーのガベージ コレクションの両方で使用できます。 + + バックグラウンド ガベージ コレクションの実行中に行われる短期ジェネレーションに対するコレクションのことを、フォアグラウンド ガベージ コレクションと呼びます。 フォアグラウンド ガベージ コレクションが発生すると、マネージ スレッドはすべて中断されます。 + + バックグラウンド ガベージ コレクションの実行中にジェネレーション 0 に十分なオブジェクトが割り当てられていれば、CLR はジェネレーション 0 またはジェネレーション 1 のフォアグラウンド ガベージ コレクションを実行します。 バックグラウンド ガベージ コレクションの専用スレッドは、フォアグラウンド ガベージ コレクションの要求がないかどうかをセーフ ポイントで頻繁に確認します。 要求があると、バックグラウンド コレクションを中断して、フォアグラウンド ガベージ コレクションを実行します。 フォアグラウンド ガベージ コレクションが完了すると、バックグラウンド ガベージ コレクションの専用スレッドとユーザー スレッドが再開されます。 + + バックグラウンド ガベージ コレクションでは、バックグラウンド ガベージ コレクションの実行中に短期ガベージ コレクションが発生する可能性があるため、同時実行ガベージ コレクションによる割り当ての制限が解除されます。 つまり、バックグラウンド ガベージ コレクションで短期ジェネレーションの使用されなくなったオブジェクトを削除でき、また、ジェネレーション 1 のガベージ コレクションの実行中に必要に応じてヒープを拡張することもできます。 + + 次の図は、ワークステーション上の別々の専用スレッドで実行されるバックグラウンド ガベージ コレクションを示しています。 + + ![バックグラウンド ワークステーション ガベージ コレクション](../../../docs/standard/garbage-collection/media/backgroundworkstn.png "BackgroundWorkstn") +バックグラウンド ワークステーション ガベージ コレクション + + [ページのトップへ](#top) + + +## バックグラウンド サーバー ガベージ コレクション + .NET Framework 4.5 以降では、サーバーのバックグラウンド ガベージ コレクションは、サーバーのガベージ コレクションの既定のモードです。 このモードを選択するには、ランタイム構成スキーマで [\](../../../docs/framework/configure-apps/file-schema/runtime/gcserver-element.md) 要素の `enabled` 属性を `true` に設定します。 このモードは、前のセクションで説明したワークステーションのバックグラウンド ガベージ コレクションと同様に機能しますが、いくつかの違いがあります。 ワークステーションのバックグラウンド ガベージ コレクションでは専用のバックグラウンド ガベージ コレクション スレッドを 1 つ使用します。これに対して、サーバーのバックグラウンド ガベージ コレクションでは複数のスレッドを使用し、通常、論理プロセッサごとに専用のスレッドが使用されます。 ワークステーションのバックグラウンド ガベージ コレクション スレッドとは異なり、これらのスレッドはタイムアウトになりません。 + + 次の図は、サーバー上の別々の専用スレッドで実行されるバックグラウンド ガベージ コレクションを示しています。 + + ![バックグラウンド サーバー ガベージ コレクション](../../../docs/standard/garbage-collection/media/backgroundserver.png "BackgroundServer") +バックグラウンド サーバー ガベージ コレクション + +## 参照 + [Garbage Collection](../../../docs/standard/garbage-collection/index.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/implementing-dispose.md b/docs/standard/garbage-collection/implementing-dispose.md new file mode 100644 index 00000000000..890501c72fa --- /dev/null +++ b/docs/standard/garbage-collection/implementing-dispose.md @@ -0,0 +1,168 @@ +--- +title: "Dispose メソッドの実装 | Microsoft Docs" +ms.custom: "" +ms.date: "04/07/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Dispose メソッド" + - "ガベージ コレクション、Dispose メソッド" +ms.assetid: eb4e1af0-3b48-4fbc-ad4e-fc2f64138bf9 +caps.latest.revision: 44 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 44 +--- +# Dispose メソッドの実装 +アプリケーションによって使用されるアンマネージ リソースを解放するための メソッドを実装します。 .NET Framework ガベージ コレクターは、アンマネージ メモリの割り当てや解放を行いません。 + + 呼ばれる、オブジェクトを破棄するパターン、 [dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md)オブジェクトの有効期間に順番が付けられます。 Dispose パターンは、ファイルおよびパイプ ハンドル、レジストリ ハンドル、待機ハンドル、アンマネージ メモリ ブロックのポインターなど、アンマネージ リソースにアクセスするオブジェクトでのみ使用されます。 これは、使用されていないマネージ オブジェクトの解放にはガベージ コレクターが非常に有効ですが、アンマネージ オブジェクトは解放できないためです。 + + Dispose パターンには&2; 種類あります。 + +- 型で使用する各アンマネージ リソースをセーフ ハンドル (つまり、 から派生したクラス) でラップします。 この場合、 インターフェイスと追加の `Dispose(Boolean)` メソッドを実装します。 これは推奨される方法で、 メソッドをオーバーライドする必要がありません。 + + > [!NOTE] + > 名前空間には から派生した一連のクラスが用意されています。これらのクラスは「[セーフ ハンドルの使用](#SafeHandles)」にリストされています。 アンマネージ リソースを解放できるクラスが見つからない場合は、 の独自のサブクラスを実装できます。 + +- 実装する、 インターフェイスと追加`Dispose(Boolean)`メソッドもオーバーライド、 メソッドです。 の実装が型のコンシューマーによって呼び出されなかった場合にアンマネージ リソースが破棄されるように、 をオーバーライドする必要があります。 前の項目で説明された推奨される方法を使用すると、 クラスが代わりにこれを実行します。 + + メソッドが複数回呼び出される場合でも、例外をスローすることなく呼び出されるようにして、リソースが常に適切にクリーンアップされるようにする必要があります。 + +> [!IMPORTANT] +> C++ プログラマならを実装していない、 メソッドです。 「デストラクターとファイナライザー」セクションの指示に従って、代わりに、[する方法: 定義消費クラスと構造体 (C + +/CLI)](../Topic/How%20to:%20Define%20and%20Consume%20Classes%20and%20Structs%20\(C++-CLI\).md)します。 以降、.NET Framework 2.0 では、C++ コンパイラはリソースの確定的な破棄をサポートしの直接の実装を許可しない、 メソッドです。 + + メソッドのコード例では、再利用するオブジェクトのメンバーがまだ実行中の場合でも、ガベージ コレクションがファイナライザーを実行しようとします。 呼び出すことをお勧めしますメソッド、時間がかかるの最後にメソッドです。 + + +## Dispose() と Dispose(Boolean) + インターフェイスでは、パラメーターのない メソッドを&1; つ実装する必要があります。 しかし、Dispose パターンでは&2; 種類の `Dispose` メソッドを実装する必要があります。 + +- public で非仮想 (Visual Basic では `NonInheritable`) の の実装。パラメーターはありません。 + +- protected で仮想 (Visual Basic では `Overridable`) の `Dispose` メソッド。シグネチャは次のとおりです。 + + [!code-csharp[Conceptual.Disposable#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/dispose1.cs#8)] + [!code-vb[Conceptual.Disposable#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.disposable/vb/dispose1.vb#8)] + +### Dispose() オーバーロード + この public で非仮想 (Visual Basic では `NonInheritable`)、パラメーターなしの `Dispose` メソッドは、型のコンシューマーによって呼び出されるため、その目的は、アンマネージ リソースを解放し、ファイナライザーが存在する場合、それを実行する必要がないことを示すことです。 このため、次のような標準的な実装があります。 + + [!code-csharp[Conceptual.Disposable#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/dispose1.cs#7)] + [!code-vb[Conceptual.Disposable#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.disposable/vb/dispose1.vb#7)] + + `Dispose` メソッドはオブジェクトのクリーンアップをすべて実行するため、ガベージ コレクターはもはやオブジェクトの のオーバーライドを呼び出す必要はありません。 そのため、呼び出しをメソッドにより、ガベージ コレクターによるファイナライザーの実行します。 型にファイナライザーの呼び出しにないかどうかはも何も起こりません。 アンマネージ リソースを解放する実際の作業は `Dispose` メソッドの&2; 番目のオーバーロードによって実行されることに注意してください。 + +### Dispose(Boolean) オーバーロード + 2 番目のオーバー ロードでは、`disposing`パラメーターは、メソッドの呼び出し元となるかどうかを示す、 メソッド (その値は`true`) それともファイナライザーか (その値は`false`)。 + + メソッドの本体は&2; つのコード ブロックで構成されます。 + +- アンマネージ リソースを解放するブロック。 このブロックは、`disposing` パラメーターの値に関係なく実行されます。 + +- マネージ リソースを解放する条件付きブロック。 このブロックは、`disposing` の値が `true` の場合に実行されます。 解放するマネージ リソースには、次のオブジェクトを含めることができます。 + + **実装するマネージ オブジェクトします。** + 条件付きブロックを使用して の実装を呼び出すことができます。 呼び出す必要がありますをアンマネージ リソースをラップするセーフ ハンドルを使用した場合、 ここでの実装です。 + + **大量のメモリを消費するか、不足しているリソースを消費するマネージ オブジェクト。** + これらのオブジェクトを `Dispose` メソッドで明示的に解放すると、ガベージ コレクターによって非確定的に解放される場合よりも迅速に解放されます。 + + メソッドの呼び出し元がファイナライザーの場合 (つまり、`disposing` が `false` の場合)、アンマネージ リソースを解放するコードだけが実行されます。 ガベージ コレクターが終了処理の際にマネージ オブジェクトを破棄する順序は定義されていないため、値 `Dispose` を指定した `false` オーバーロードを呼び出すことで、既に解放されている可能性のあるマネージ リソースをファイナライザーが解放しようとすることを防止できます。 + +## 基底クラスでの Dispose パターンの実装 + 基底クラスで Dispose パターンを実装する場合、以下の項目を用意する必要があります。 + +> [!IMPORTANT] +> すべての基底クラスを実装するには、このパターンを実装する必要がありますされない`sealed`(`NotInheritable` Visual Basic で)。 + +- `Dispose(Boolean)` メソッドを呼び出す の実装。 + +- リソースを解放する実際の作業を実行する `Dispose(Boolean)` メソッド。 + +- アンマネージ リソースをラップする から派生したクラス (推奨)、または、 メソッドのオーバーライド。 クラスには、コーディングが不要なファイナライザーが用意されています。 + + セーフ ハンドルを使用して基底クラスで Dispose パターンを実装する一般的なパターンを次に示します。 + + [!code-csharp[System.IDisposable#3](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.idisposable/cs/base1.cs#3)] + [!code-vb[System.IDisposable#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.idisposable/vb/base1.vb#3)] + +> [!NOTE] +> 前の例では、 オブジェクトを使用してパターンを示しています。代わりに、 から派生した任意のオブジェクトを使用することもできます。 例では、 オブジェクトを正しくインスタンス化していないことに注意してください。 + + をオーバーライドして基底クラスで Dispose パターンを実装する一般的なパターンを次に示します。 + + [!code-csharp[System.IDisposable#5](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.idisposable/cs/base2.cs#5)] + [!code-vb[System.IDisposable#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.idisposable/vb/base2.vb#5)] + +> [!NOTE] +> オーバーライドする、C# の場合は、 定義することで、[デストラクター](../Topic/Destructors%20\(C%23%20Programming%20Guide\).md)します。 + +## 派生クラスでの Dispose パターンの実装 + インターフェイスを実装するクラスから派生したクラスは、 の基底クラスでの実装が派生クラスに継承されるため、 を実装しないでください。 代わりに、派生クラスで Dispose パターンを実装するには、以下の項目を用意します。 + +- 基底クラスのメソッドをオーバーライドして、派生クラスのリソースを解放する実際の作業を実行する `protected``Dispose(Boolean)` メソッド。 このメソッドは、基底クラスの `Dispose(Boolean)` メソッドも呼び出して、それに `true` 引数の値として `disposing` を渡す必要があります。 + +- アンマネージ リソースをラップする から派生したクラス (推奨)、または、 メソッドのオーバーライド。 クラスには、コーディングが不要なファイナライザーが用意されています。 ファイナライザーを用意する場合は、`Dispose(Boolean)` 引数を `disposing` として `false` オーバーロードを呼び出す必要があります。 + + セーフ ハンドルを使用して派生クラスで Dispose パターンを実装する一般的なパターンを次に示します。 + + [!code-csharp[System.IDisposable#4](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.idisposable/cs/derived1.cs#4)] + [!code-vb[System.IDisposable#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.idisposable/vb/derived1.vb#4)] + +> [!NOTE] +> 前の例では、 オブジェクトを使用してパターンを示しています。代わりに、 から派生した任意のオブジェクトを使用することもできます。 例では、 オブジェクトを正しくインスタンス化していないことに注意してください。 + + をオーバーライドして派生クラスで Dispose パターンを実装する一般的なパターンを次に示します。 + + [!code-csharp[System.IDisposable#6](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.idisposable/cs/derived2.cs#6)] + [!code-vb[System.IDisposable#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.idisposable/vb/derived2.vb#6)] + +> [!NOTE] +> オーバーライドする、C# の場合は、 定義することで、[デストラクター](../Topic/Destructors%20\(C%23%20Programming%20Guide\).md)します。 + + +## セーフ ハンドルの使用 + オブジェクトのファイナライザーのコードを記述することは、正しく行わないと問題が発生する可能性がある複雑なタスクです。 そのため、ファイナライザーを実装するのではなく、 オブジェクトを構築することをお勧めします。 + + クラスから派生したクラスは、処理を中断することなくハンドルの割り当てと解放を行うことで、オブジェクトの有効期間に関する問題を単純化します。 セーフ ハンドルは、アプリケーション ドメインのアンロード中に確実に実行されるクリティカル ファイナライザーを含んでいます。 セーフ ハンドルを使用する利点の詳細については、次を参照してください。 します。 名前空間の次の派生クラスは、セーフ ハンドルを提供します。 + +- ファイル、メモリ マップ ファイル、パイプのための クラス。 + +- メモリ ビューのための クラス。 + +- 暗号の構成要素のための クラス。 + +- レジストリ キーのための クラス。 + +- 待機ハンドルのための クラス。 + + +## セーフ ハンドルを使用した基底クラスでの Dispose パターンの実装 + 次の例は、セーフ ハンドルを使用してアンマネージ リソースをカプセル化する、基底クラス `DisposableStreamResource` での Dispose パターンを示します。 例では、 を使用して、開いているファイルを表す オブジェクトをラップする `DisposableResource` クラスを定義しています。 `DisposableResource` メソッドには、ファイル ストリームの合計バイト数を返す `Size` プロパティも含まれています。 + + [!code-csharp[Conceptual.Disposable#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/base1.cs#9)] + [!code-vb[Conceptual.Disposable#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.disposable/vb/base1.vb#9)] + + +## セーフ ハンドルを使用した派生クラスでの Dispose パターンの実装 + 次の例は、前の例で挙げた `DisposableStreamResource2` クラスを継承した派生クラス `DisposableStreamResource` での Dispose パターンを示します。 このクラスは `WriteFileInfo` メソッドを追加し、 オブジェクトを使用して書き込み可能ファイル ハンドルをラップしています。 + + [!code-csharp[Conceptual.Disposable#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/derived1.cs#10)] + [!code-vb[Conceptual.Disposable#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.disposable/vb/derived1.vb#10)] + +## 関連項目 + + + + + + + [方法: クラスと構造体定義および使用 (C + +/CLI)](../Topic/How%20to:%20Define%20and%20Consume%20Classes%20and%20Structs%20\(C++-CLI\).md) + [Dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/index.md b/docs/standard/garbage-collection/index.md new file mode 100644 index 00000000000..6df5579eb05 --- /dev/null +++ b/docs/standard/garbage-collection/index.md @@ -0,0 +1,69 @@ +--- +title: "Garbage Collection | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "memory, garbage collection" + - "garbage collection, automatic memory management" + - "GC [.NET Framework]" + - "memory, allocating" + - "common language runtime, garbage collection" + - "garbage collector" + - "cleanup operations" + - "garbage collection" + - "memory, releasing" + - "common language runtime, automatic memory management" + - "automatic memory management" + - "runtime, automatic memory management" + - "runtime, garbage collection" + - "garbage collection, about" +ms.assetid: 22b6cb97-0c80-4eeb-a2cf-5ed7655e37f9 +caps.latest.revision: 36 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 36 +--- +# Garbage Collection +.NET Framework のガベージ コレクターは、アプリケーションのメモリの割り当ておよび解放を管理します。 新しいオブジェクトを生成するたびに、共通言語ランタイムは、マネージ ヒープからオブジェクトにメモリを割り当てます。 マネージ ヒープに使用可能なアドレス空間がある限り、ランタイムは新しいオブジェクト用に領域の割り当てを続けます。 しかし、メモリの大きさは無限ではありません。 最終的には、ガベージ コレクターが、一部のメモリを解放するためにガベージ コレクションを実行する必要があります。 コレクションの実行に最適な時期は、ガベージ コレクターの最適化エンジンが、割り当てられるオブジェクトの状況に応じて決定します。 コレクションを実行する場合、ガベージ コレクターは、アプリケーションによって使用されなくなったオブジェクトがマネージ ヒープにあるかどうかをチェックし、使われていないオブジェクトのメモリを再利用するために必要な操作を実行します。 + + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[Fundamentals of Garbage Collection](../../../docs/standard/garbage-collection/fundamentals.md)|ガベージ コレクションの動作、マネージ ヒープに対するオブジェクトの割り当て方法、およびその他の主要な概念について説明します。| +|[Garbage Collection and Performance](../../../docs/standard/garbage-collection/performance.md)|ガベージ コレクションとパフォーマンスの問題を診断するために使用できるパフォーマンス チェックについて説明します。| +|[発生したコレクション](../../../docs/standard/garbage-collection/induced.md)|ガベージ コレクションがどのように行われるかについて説明します。| +|[Latency Modes](../../../docs/standard/garbage-collection/latency.md)|ガベージ コレクションの割り込みの動作を決定するモードについて説明します。| +|[Optimization for Shared Web Hosting](../../../docs/standard/garbage-collection/optimization-for-shared-web-hosting.md)|複数の小規模な Web サイトで共有されているサーバーで、ガベージ コレクションを最適化する方法について説明します。| +|[Garbage Collection Notifications](../../../docs/standard/garbage-collection/notifications.md)|フル ガベージ コレクションが近づいたときと完了したときを検出する方法について説明します。| +|[Application Domain Resource Monitoring](../../../docs/standard/garbage-collection/app-domain-resource-monitoring.md)|アプリケーション ドメインによる CPU とメモリの使用状況を監視する方法について説明します。| +|[Weak References](../../../docs/standard/garbage-collection/weak-references.md)|アプリケーションからオブジェクトへのアクセスを許容したまま、そのオブジェクトをガベージ コレクターが収集できるようにする機能について説明します。| + +## 参照 + + + + + + + + + + + + + + + + +## 参照 + [Cleaning Up Unmanaged Resources](../../../docs/standard/garbage-collection/unmanaged.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/induced.md b/docs/standard/garbage-collection/induced.md new file mode 100644 index 00000000000..78281cd8aa0 --- /dev/null +++ b/docs/standard/garbage-collection/induced.md @@ -0,0 +1,45 @@ +--- +title: "発生したコレクション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ガベージ コレクション、強制" +ms.assetid: 019008fe-4708-4e65-bebf-04fd9941e149 +caps.latest.revision: 20 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 20 +--- +# 発生したコレクション +ほとんどの場合、コレクションの実行に最適なタイミングはガベージ コレクターが判断できるので、ガベージ コレクターに任せるのが良い方法です。 ただし、ごくまれに、強制的にコレクションを実行するとアプリケーションのパフォーマンスが向上する場合があります。 このような場合は、 メソッドを使用してガベージ コレクションを強制的に実行できます。 + + アプリケーションのコードの特定の位置で、使用しているメモリ量が大きく減少する場合は、 メソッドを使用します。 たとえば、複数のコントロールのある複雑なダイアログ ボックスを使用するアプリケーションでは、ダイアログ ボックスを閉じるときに を呼び出すと、ダイアログ ボックスの使用メモリが直ちに再利用されてパフォーマンスが向上する可能性があります。 適切でない回数でガベージ コレクターがオブジェクトの再利用を試みるとパフォーマンスが低下する場合があるので、アプリケーションではあまり頻繁にガベージ コレクションを強制しないでください。 次のセクションで説明するように、コレクションの効果がある場合にのみ、 のメソッドに対して収集する の列挙値を指定できます。 + +## GC コレクション モード + 値を含む メソッド オーバーロードの 1 つを使用して、強制的コレクションの動作を次のように指定できます。 + +|`GCCollectionMode` の値|説明| +|---------------------------|--------| +||実行中のバージョンの .NET Framework の既定のガベージ コレクション設定を使用します。| +||直ちにガベージ コレクションを強制的に実行します。 これは、 オーバーロードを呼び出すのと同じです。 結果として、すべてのジェネレーションのフル ブロッキング コレクションになります。

また、直ちにフル ブロッキング ガベージ コレクションを強制的に実行する前に、 プロパティを に設定して、大きなオブジェクト ヒープを圧縮することもできます。| +||オブジェクトを再利用するのに現在が最適なときかどうかをガベージ コレクターが判断できるようにします。

ガベージ コレクターは、コレクションの実行を正当化できるほど効果がないと判断して、オブジェクトを再利用せずに戻る場合があります。| + +## バックグラウンドまたはブロッキング コレクション + メソッド オーバーロードを呼び出して、発生するコレクションがブロッキング コレクションであるかどうかを指定できます。 実行されるコレクションの型は、メソッドの `mode` と `blocking` のパラメーターの組み合わせによって異なります。 `mode` は 列挙体のメンバーです。`blocking` は 値です。 `mode` と `blocking` 引数の相互作用を次の表にまとめます。 + +|`mode`|`blocking` \= `true`|`blocking` \= `false`| +|------------|--------------------------|---------------------------| +| または |ブロッキング コレクションはできるだけ早く実行されます。 バックグラウンド コレクションが実行中でジェネレーションが 0 または 1 の場合、 メソッドは直ちにブロッキング コレクションをトリガーし、コレクションが終了すると制御を戻します。 バックグラウンド コレクションが実行中で `generation` パラメーターが 2 の場合、メソッドはバックグラウンド コレクションの終了を待機し、ジェネレーション 2 のブロッキング コレクションをトリガーして、制御を戻します。|コレクションはできるだけ早く実行されます。 メソッドはバックグラウンド コレクションを要求しますが、それは保証されず、状況によってはブロッキング コレクションが実行される場合もあります。 バックグラウンド コレクションが既に実行中の場合、メソッドはすぐに制御を返します。| +||ガベージ コレクターおよび `generation` パラメーターの状態によっては、ブロッキング コレクションが実行される場合があります。 ガベージ コレクターは最適なパフォーマンスを提供しようとします。|ガベージ コレクターの状態によっては、コレクションが実行される場合があります。 メソッドはバックグラウンド コレクションを要求しますが、それは保証されず、状況によってはブロッキング コレクションが実行される場合もあります。 ガベージ コレクターは最適なパフォーマンスを提供しようとします。 バックグラウンド コレクションが既に実行中の場合、メソッドはすぐに制御を返します。| + +## 参照 + [Latency Modes](../../../docs/standard/garbage-collection/latency.md) + [Garbage Collection](../../../docs/standard/garbage-collection/index.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/latency.md b/docs/standard/garbage-collection/latency.md new file mode 100644 index 00000000000..142ed222733 --- /dev/null +++ b/docs/standard/garbage-collection/latency.md @@ -0,0 +1,64 @@ +--- +title: "Latency Modes | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "garbage collection, intrusiveness" + - "garbage collection, latency modes" +ms.assetid: 96278bb7-6eab-4612-8594-ceebfc887d81 +caps.latest.revision: 41 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 41 +--- +# Latency Modes +オブジェクトを再利用するには、ガベージ コレクターはアプリケーションで実行中のすべてのスレッドを停止する必要があります。 状況によっては、アプリケーションがデータの取得やコンテンツの表示を行うときなど、重要なときにフル ガベージ コレクションが発生し、パフォーマンスが低下することがあります。 ガベージ コレクターが作業に悪影響を与える度合いを調整するには、 プロパティを 値のいずれかに設定することができます。 + + Latency \(待機時間\) は、ガベージ コレクターが実行中のアプリケーションに割って入る時間を指します。 待機時間が短い場合、ガベージ コレクターがオブジェクトを再利用する処理は控えめになり、アプリケーションに悪影響を与える度合いが下がります。 列挙体には、待機時間の短い設定として次の 2 つがあります。 + +- では、ジェネレーション 2 のガベージ コレクションが停止し、ジェネレーション 0 および 1 のみガベージ コレクションが実行されます。 これは、短時間の場合にのみ使用できます。 この設定を長時間にわたって使用すると、システムのメモリが不足してガベージ コレクターがガベージ コレクションをトリガーした場合に、アプリケーションが少しの間停止したり、高速性を必要とする操作が中断されたりすることがあります。 この設定は、ワークステーションのガベージ コレクションでのみ使用できます。 + +- では、フォアグラウンドのジェネレーション 2 のガベージ コレクションが停止し、ジェネレーション 0 および 1 とバックグラウンドのジェネレーション 2 のガベージ コレクションのみが実行されます。 これは長時間にわたって使用でき、ワークステーションとサーバーの両方のガベージ コレクションで使用できます。 この設定は、[同時実行ガベージ コレクション](../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)が無効の場合には使用できません。 + + 待機時間の短い設定になっている場合でも、次の状況ではジェネレーション 2 のガベージ コレクションの停止が解除されます。 + +- システムがオペレーティング システムからメモリ不足の通知を受け取った場合。 + +- アプリケーション コードから メソッドを呼び出し、`generation` パラメーターに 2 を指定してガベージ コレクションを実行した場合。 + + 次の表に、 の各値を使用するアプリケーション シナリオを示します。 + +|待機時間モード|アプリケーション シナリオ| +|-------------|-------------------| +||UI 操作のないアプリケーションの場合、またはサーバー側の操作の場合に使用します。

これは、[同時実行ガベージ コレクション](../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)が無効の場合の既定モードです。| +||UI を持つほとんどのアプリケーションの場合に使用します。

これは、[同時実行ガベージ コレクション](../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md)が有効の場合の既定モードです。| +||ガベージ コレクターからの割り込みにより重大な影響を受け、高速性を必要とする、短期間の操作を実行するアプリケーションの場合に使用します。 たとえば、アニメーションのレンダリングやデータの取得機能を実行するアプリケーションなどがあります。| +||ガベージ コレクターからの割り込みにより重大な影響を受け、高速性を必要とする、さほど処理時間を必要としないものの長時間になる可能性のある操作を実行するアプリケーションの場合に使用します。 たとえば、取引時間中に市場データの変化に応じて迅速な応答時間を必要とするアプリケーションなどがあります。

このモードでは、マネージ ヒープのサイズが他のモードより大きくなります。 マネージ ヒープは最適化されないため、断片化の割合が高くなる可能性があります。 十分なメモリが使用可能であることを確認してください。| + +## 待機時間の短いモードの使用に関するガイドライン + モードを使用する場合は、次のガイドラインを検討してください。 + +- 待機時間を短くする期間は、できるだけ短くします。 + +- 待機時間を短くする期間中は、大量のメモリを割り当てないようにします。 ガベージ コレクションによって再利用されるオブジェクトの数が少なくなるため、メモリ不足の通知が発生する可能性があります。 + +- 待機時間の短いモードの間は、割り当ての数、特に大きなオブジェクト ヒープや固定されたオブジェクトへの割り当ての数を最小限に抑えます。 + +- 割り当てられる可能性のあるスレッドに注意します。 プロパティの設定はプロセス全体に適用されるため、割り当てられた他のスレッドで が発生する可能性があります。 + +- 待機時間の短いコードを制約された実行領域にラップします \(詳細については、「[制約された実行領域](../../../docs/framework/performance/constrained-execution-regions.md)」を参照してください\)。 + +- 待機時間を短くする期間中でも、 メソッドを呼び出せばジェネレーション 2 のガベージ コレクションを強制できます。 + +## 参照 + + [発生したコレクション](../../../docs/standard/garbage-collection/induced.md) + [Garbage Collection](../../../docs/standard/garbage-collection/index.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/media/backgroundserver.png b/docs/standard/garbage-collection/media/backgroundserver.png new file mode 100644 index 00000000000..b2ea2f1e454 Binary files /dev/null and b/docs/standard/garbage-collection/media/backgroundserver.png differ diff --git a/docs/standard/garbage-collection/media/backgroundworkstn.png b/docs/standard/garbage-collection/media/backgroundworkstn.png new file mode 100644 index 00000000000..e4b79f1df64 Binary files /dev/null and b/docs/standard/garbage-collection/media/backgroundworkstn.png differ diff --git a/docs/standard/garbage-collection/media/gc-concurrent.png b/docs/standard/garbage-collection/media/gc-concurrent.png new file mode 100644 index 00000000000..4f2cf1ebb95 Binary files /dev/null and b/docs/standard/garbage-collection/media/gc-concurrent.png differ diff --git a/docs/standard/garbage-collection/media/gc-server.png b/docs/standard/garbage-collection/media/gc-server.png new file mode 100644 index 00000000000..d9848a1019a Binary files /dev/null and b/docs/standard/garbage-collection/media/gc-server.png differ diff --git a/docs/standard/garbage-collection/media/gc-triggered.png b/docs/standard/garbage-collection/media/gc-triggered.png new file mode 100644 index 00000000000..7e1a88c7546 Binary files /dev/null and b/docs/standard/garbage-collection/media/gc-triggered.png differ diff --git a/docs/standard/garbage-collection/memory-management-and-gc.md b/docs/standard/garbage-collection/memory-management-and-gc.md new file mode 100644 index 00000000000..ee24c9644d0 --- /dev/null +++ b/docs/standard/garbage-collection/memory-management-and-gc.md @@ -0,0 +1,34 @@ +--- +title: "Memory Management and Garbage Collection in the .NET Framework | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "GC [.NET Framework]" + - "memory management [.NET Framework]" + - "garbage collection [.NET Framework profiling]" +ms.assetid: fd0462f7-57ad-4858-bf62-958378873602 +caps.latest.revision: 6 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 6 +--- +# Memory Management and Garbage Collection in the .NET Framework +このセクションでは、.NET Framework でのメモリの管理について説明します。 + +## このセクションの内容 + [Cleaning Up Unmanaged Resources](../../../docs/standard/garbage-collection/unmanaged.md) + アンマネージ リソースの適切な管理とクリーンアップの方法について説明します。 + + [Garbage Collection](../../../docs/standard/garbage-collection/index.md) + .NET Framework のガベージ コレクターについて説明します。 + +## 関連項目 + [開発ガイド](../../../docs/framework/development-guide.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/notifications.md b/docs/standard/garbage-collection/notifications.md new file mode 100644 index 00000000000..7c7fb7c0340 --- /dev/null +++ b/docs/standard/garbage-collection/notifications.md @@ -0,0 +1,126 @@ +--- +title: "Garbage Collection Notifications | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "garbage collection, notifications" +ms.assetid: e12d8e74-31e3-4035-a87d-f3e66f0a9b89 +caps.latest.revision: 23 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 23 +--- +# Garbage Collection Notifications +共通言語ランタイムによるフル ガベージ コレクション \(つまり、ジェネレーション 2 のコレクション\) がパフォーマンスに悪影響を及ぼす可能性がある場合があります。 これは、特に大量の要求を処理するサーバーで問題になります。このような環境では、長時間のガベージ コレクションにより要求がタイムアウトします。 重要な処理を実行している最中にフル ガベージ コレクションが実行されないようにするために、フル ガベージ コレクションが近づいていることが通知されます。これを受けて、作業負荷を別のサーバー インスタンスにリダイレクトするためのアクションを実行できます。 現在のサーバー インスタンスが要求を処理する必要がなければ、ガベージ コレクションをユーザーが強制的に実行することもできます。 + + メソッドは、フル ガベージ コレクションが近づいていることをランタイムが検知したときに通知を発生するように登録します。 この通知には、フル ガベージ コレクションが近づいている場合と、フル ガベージ コレクションが完了した場合の 2 つがあります。 + +> [!WARNING] +> ガベージ コレクションをブロックのみ通知を発生させてします。 [\](../../../docs/framework/configure-apps/file-schema/runtime/gcconcurrent-element.md) 構成要素が有効になっている場合、バックグラウンド ガベージ コレクションが通知を発生させません。 + + 通知が発生したことを判断するには、 メソッドおよび メソッドを使用します。 一般に、これらのメソッドを `while` ループ内で使用し、通知の状態を表す 列挙型を継続的に取得します。 その値が であれば、以下のいずれかの処理を実行します。 + +- メソッドで取得した通知を受け、作業負荷をリダイレクトします。ガベージ コレクションを手動で強制的に実行することもできます。 + +- メソッドで取得した通知を受け、現在のサーバー インスタンスで再度要求を処理できるようにします。 情報を収集することもできます。 たとえば、 メソッドを使用して、ガベージ コレクションの回数を記録できます。 + + メソッドと メソッドは、連携して動作するように設計されています。 どちらか一方だけを使用すると、結果が不定になります。 + +## フル ガベージ コレクション + ランタイムでフル ガベージ コレクションが発生するのは、以下に示すいくつかのシナリオに該当する場合です。 + +- 十分なメモリがジェネレーション 2 に移動され、次のジェネレーション 2 のガベージ コレクションが発生する場合。 + +- 十分なメモリが、大きいオブジェクトのヒープに移動され、次のジェネレーション 2 のガベージ コレクションが発生する場合。 + +- その他の要因により、ジェネレーション 1 のガベージ コレクションがジェネレーション 2 のガベージ コレクションに移行する場合。 + + メソッドで指定するしきい値は、最初の 2 つのシナリオに該当します。 ただし、最初のシナリオでは、以下の 2 つの理由から、指定したしきい値に比例したタイミングで常に通知を受け取るとは限りません。 + +- ランタイムは、パフォーマンス上の理由から、小さなオブジェクトの割り当てをチェックしません。 + +- メモリがジェネレーション 2 に移動されるのは、ジェネレーション 1 のガベージ コレクションが実行された場合だけです。 + + 3 番目のシナリオも、通知を受け取るタイミングに不確定性が生じる原因になります。 保証されるわけではないものの、この間要求をリダイレクトしたり、都合の良いときに自分でガベージ コレクションを強制的に実行したりして、タイミングの悪いフル ガベージ コレクションの影響を緩和することは有効な方法です。 + +## 通知しきい値パラメーター + メソッドには、ジェネレーション 2 のオブジェクトと大きなオブジェクトのヒープのしきい値を指定する 2 つのパラメーターがあります。 これらの値を超えると、ガベージ コレクションの通知が発行されます。 次の表でこれらのパラメーターについて説明します。 + +|パラメーター|説明| +|------------|--------| +|`maxGenerationThreshold`|ジェネレーション 2 に移動されたオブジェクトに基づいて通知を発行するタイミングを指定する、1 ~ 99 の数値。| +|`largeObjectHeapThreshold`|大きなオブジェクトのヒープに割り当てられたオブジェクトに基づいて通知を発行するタイミングを指定する、1 ~ 99 の数値。| + + 指定した値が大きすぎると、通知を受け取る可能性が高まりますが、ランタイムでガベージ コレクションが実行されるまでに長い時間待つことになります。 ガベージ コレクションを手動で強制的に実行すると、ランタイムでガベージ コレクションが実行される場合よりも多くのオブジェクトが解放されます。 + + 指定した値が小さすぎると、通知を受け取るのに十分な時間がないうちにガベージ コレクションが実行される可能性があります。 + +## 例 + +### 説明 + 次の例では、サーバーのグループが受信した Web 要求を処理します。 要求の処理による作業負荷をシミュレートするため、バイト配列が コレクションに追加されています。 各サーバーはガベージ コレクションの通知を登録し、ユーザー メソッド `WaitForFullGCProc` でスレッドを開始して、 メソッドと メソッドで返される 列挙型を継続的に監視します。 + + メソッドと メソッドは、通知が発行されると、それぞれのイベント処理用ユーザー メソッドを呼び出します。 + +- `OnFullGCApproachNotify` + + このメソッドはユーザー メソッド `RedirectRequests` を呼び出し、要求をキューに格納するサーバーに対して、このサーバーへの要求の送信を一時停止するよう指示します。 この動作は、それ以上オブジェクトが割り当てられないように、クラスレベル変数 `bAllocate` に `false` を設定することでシミュレートされます。 + + 次に、ユーザー メソッド `FinishExistingRequests` が呼び出され、保留中のサーバー要求の処理を終了します。 この動作は、 コレクションをクリアすることでシミュレートされます。 + + 最後に、作業負荷が軽いため、ガベージ コレクションが強制的に実行されます。 + +- `OnFullGCCompleteNotify` + + サーバーがフル ガベージ コレクションの影響を受ける可能性が低くなったため、ユーザー メソッド `AcceptRequests` を呼び出し、要求の受付を再開します。 この動作は、`bAllocate` 変数に `true` を設定し、オブジェクトの コレクションへの追加を再開することでシミュレートされます。 + + この例の `Main` メソッドのコードを次に示します。 + + [!code-cpp[GCNotification#2](../../../samples/snippets/cpp/VS_Snippets_CLR/GCNotification/cpp/program.cpp#2)] + [!code-csharp[GCNotification#2](../../../samples/snippets/csharp/VS_Snippets_CLR/GCNotification/cs/Program.cs#2)] + [!code-vb[GCNotification#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/GCNotification/vb/program.vb#2)] + + 次のコードは、ユーザー メソッド `WaitForFullGCProc` のコードであり、ガベージ コレクションの通知を継続的にチェックする while ループが含まれています。 + + [!code-cpp[GCNotification#8](../../../samples/snippets/cpp/VS_Snippets_CLR/GCNotification/cpp/program.cpp#8)] + [!code-csharp[GCNotification#8](../../../samples/snippets/csharp/VS_Snippets_CLR/GCNotification/cs/Program.cs#8)] + [!code-vb[GCNotification#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/GCNotification/vb/program.vb#8)] + + 次のコードは、`OnFullGCApproachNotify` メソッドのコードです。 + + `WaitForFullGCProc` メソッド + + [!code-cpp[GCNotification#5](../../../samples/snippets/cpp/VS_Snippets_CLR/GCNotification/cpp/program.cpp#5)] + [!code-csharp[GCNotification#5](../../../samples/snippets/csharp/VS_Snippets_CLR/GCNotification/cs/Program.cs#5)] + [!code-vb[GCNotification#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/GCNotification/vb/program.vb#5)] + + 次のコードは、`OnFullGCApproachComplete` メソッドのコードです。 + + `WaitForFullGCProc` メソッド + + [!code-cpp[GCNotification#6](../../../samples/snippets/cpp/VS_Snippets_CLR/GCNotification/cpp/program.cpp#6)] + [!code-csharp[GCNotification#6](../../../samples/snippets/csharp/VS_Snippets_CLR/GCNotification/cs/Program.cs#6)] + [!code-vb[GCNotification#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/GCNotification/vb/program.vb#6)] + + 次のコードは、`OnFullGCApproachNotify` メソッドと `OnFullGCCompleteNotify` メソッドから呼び出されるユーザー メソッドです。 このユーザー メソッドは、要求のリダイレクト、既存の要求の終了、フル ガベージ コレクションの実行後の要求の受け付け再開を実行します。 + + [!code-cpp[GCNotification#9](../../../samples/snippets/cpp/VS_Snippets_CLR/GCNotification/cpp/program.cpp#9)] + [!code-csharp[GCNotification#9](../../../samples/snippets/csharp/VS_Snippets_CLR/GCNotification/cs/Program.cs#9)] + [!code-vb[GCNotification#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/GCNotification/vb/program.vb#9)] + + コード例全体を次に示します。 + + [!code-cpp[GCNotification#1](../../../samples/snippets/cpp/VS_Snippets_CLR/GCNotification/cpp/program.cpp#1)] + [!code-csharp[GCNotification#1](../../../samples/snippets/csharp/VS_Snippets_CLR/GCNotification/cs/Program.cs#1)] + [!code-vb[GCNotification#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/GCNotification/vb/program.vb#1)] + +## 参照 + [Garbage Collection](../../../docs/standard/garbage-collection/index.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/optimization-for-shared-web-hosting.md b/docs/standard/garbage-collection/optimization-for-shared-web-hosting.md new file mode 100644 index 00000000000..57c5ae10efa --- /dev/null +++ b/docs/standard/garbage-collection/optimization-for-shared-web-hosting.md @@ -0,0 +1,52 @@ +--- +title: "Optimization for Shared Web Hosting | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "garbage collection, Web hosting" + - "garbage collection, optimizing" + - "garbage collection, shared Web hosting" +ms.assetid: be98c0ab-7ef8-409f-8a0d-cb6e5b75ff20 +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Optimization for Shared Web Hosting +複数の小さい Web サイトをホストすることで共有されるサーバーを管理する場合は、.NET Framework ディレクトリにある Aspnet.config ファイルの `runtime` ノードに次の `gcTrimCommitOnLowMemory` の設定を追加することで、パフォーマンスを最適化し、サイトの容量を増やすことができます。 + + `` + +> [!NOTE] +> この設定が推奨されるのは、共有 Web ホストのシナリオだけです。 + + ガベージ コレクターは将来の割り当てのためにメモリを保持しているので、コミットされる領域は、厳密に必要な量より多くなる場合があります。 この領域を減らして、システム メモリに高負荷がかかるときに備えることができます。 このコミットされる領域を少なくすると、パフォーマンスが向上し、より多くのサイトをホストできるようになります。 + + `gcTrimCommitOnLowMemory` の設定を有効にすると、ガベージ コレクターは、システム メモリの負荷を評価し、負荷が 90% に達するとトリミング モードに移行します。 その後、負荷が 85% 以下に低下するまで、トリミング モードを維持します。 + + 状況によっては、ガベージ コレクターは `gcTrimCommitOnLowMemory` の設定が現在のアプリケーションに対して効果がないと判断して、設定を無視する場合があります。 + +## 例 + 次の XML フラグメントは、`gcTrimCommitOnLowMemory` の設定を有効にする方法を示しています。 省略記号は、`runtime` ノードでの他の設定を示します。 + +``` + + +     +    . . . +     +     +    . . . + +``` + +## 参照 + [Garbage Collection](../../../docs/standard/garbage-collection/index.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/performance.md b/docs/standard/garbage-collection/performance.md new file mode 100644 index 00000000000..3e14d1568da --- /dev/null +++ b/docs/standard/garbage-collection/performance.md @@ -0,0 +1,786 @@ +--- +title: "Garbage Collection and Performance | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "garbage collection, troubleshooting" + - "garbage collection, performance" +ms.assetid: c203467b-e95c-4ccf-b30b-953eb3463134 +caps.latest.revision: 35 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 33 +--- +# Garbage Collection and Performance +ここでは、ガベージ コレクションおよびメモリ使用に関連する問題について説明します。 マネージ ヒープに関する問題について取り上げ、ガベージ コレクションによるアプリケーションに対する影響を最小限に抑える方法を説明します。 問題を調査するために使用できる手順のリンクを問題ごとに示してあります。 + + このトピックは、次のセクションで構成されています。 + +- [パフォーマンス分析ツール](#performance_analysis_tools) + +- [パフォーマンスに関する問題のトラブルシューティング](#troubleshooting_performance_issues) + +- [トラブルシューティングのガイドライン](#troubleshooting_guidelines) + +- [パフォーマンス チェックの手順](#performance_check_procedures) + + +## パフォーマンス分析ツール + 以下のセクションでは、メモリ使用とガベージ コレクションに関する問題を調査するために使用できるツールについて説明します。 このトピックの後半で説明する[手順](#performance_check_procedures)では、これらのツールを使用します。 + + +### メモリ パフォーマンス カウンター + パフォーマンス カウンターを使用してパフォーマンス データを収集できます。 手順については、「[ランタイム プロファイリング](../../../docs/framework/debug-trace-profile/runtime-profiling.md)」を参照してください。 ガベージ コレクターに関する情報は、.NET CLR Memory カテゴリのパフォーマンス カウンターから提供されます。詳細については、「[.NET Framework のパフォーマンス カウンター](../../../docs/framework/debug-trace-profile/performance-counters.md)」を参照してください。 + + +### SOS キーを使ったデバッグ + [Windows デバッガー \(WinDbg\)](http://go.microsoft.com/fwlink/?LinkId=186482) を使用して、マネージ ヒープのオブジェクトを検査できます。 + + WinDbg をインストールするには、[WDK および開発者用ツールの Web サイト](http://go.microsoft.com/fwlink/?LinkID=103787)から Windows 用デバッグ ツールをインストールします。 + + +### ガベージ コレクション ETW イベント + Windows イベント トレーシング \(ETW\) は、.NET Framework のプロファイリングとデバッグのサポートを補足するトレース システムです。 [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、[ガベージ コレクション ETW イベント](../../../docs/framework/performance/garbage-collection-etw-events.md)により、統計的な観点からマネージ ヒープを分析するための有益な情報が得られるようになりました。 たとえば、ガベージ コレクションの発生前に発生する `GCStart_V1` イベントでは、次の情報が提供されます。 + +- 収集されるオブジェクトのジェネレーション + +- ガベージ コレクションが発生した理由 + +- ガベージ コレクションの種類 \(同時実行または非同時実行\) + + ETW イベント ログは効率的であり、ガベージ コレクションに関連するパフォーマンスの問題がマスクされることはありません。 ETW イベントと組み合わせてプロセス独自のイベントを提供できます。 ログを記録すると、アプリケーションのイベントとガベージ コレクションのイベントの両方を相互に関連付けて、ヒープの問題がいつどのようにして発生するかを特定できます。 たとえば、サーバー アプリケーションでは、クライアント要求の開始時と終了時にイベントを提供することができます。 + + +### プロファイル API + 共通言語ランタイム \(CLR\) のプロファイル インターフェイスは、ガベージ コレクションの影響を受けたオブジェクトに関する詳細な情報を提供します。 プロファイラーでは、ガベージ コレクションの開始時と終了時に通知を受け取り、 各ジェネレーションにおけるオブジェクトの識別情報など、マネージ ヒープのオブジェクトに関するレポートを提供することができます。 詳細については、「[プロファイルの概要](../../../ocs/framework/unmanaged-api/profiling/profiling-overview.md)」を参照してください。 + + プロファイラーでは包括的な情報を提供できますが、 複雑なプロファイラーを使用すると、アプリケーションの動作が変更される可能性があります。 + +### アプリケーション ドメインのリソース監視 + [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降では、アプリケーション ドメインのリソース監視 \(ARM\) を使用して、ホストでアプリケーション ドメインによる CPU とメモリの使用状況を監視できます。 詳細については、「[Application Domain Resource Monitoring](../../../docs/standard/garbage-collection/app-domain-resource-monitoring.md)」を参照してください。 + + [ページのトップへ](#top) + + +## パフォーマンスに関する問題のトラブルシューティング + まず最初に、[本当にガベージ コレクションの問題なのかどうかを確認します](#IsGC)。 ガベージ コレクションの問題であることがわかったら、次の一覧から問題を選択してトラブルシューティングを行います。 + +- [メモリ不足の例外がスローされる](#Issue_OOM) + +- [プロセスによるメモリ使用量が多すぎる](#Issue_TooMuchMemory) + +- [ガベージ コレクターによるオブジェクトの解放に時間がかかる](#Issue_NotFastEnough) + +- [マネージ ヒープが過度に断片化される](#Issue_Fragmentation) + +- [ガベージ コレクションの一時停止が長すぎる](#Issue_LongPauses) + +- [ジェネレーション 0 が大きすぎる](#Issue_Gen0) + +- [ガベージ コレクションの実行時の CPU 使用率が高すぎる](#Issue_HighCPU) + + +### 問題: メモリ不足の例外がスローされる + マネージ例外がスローされる正当な状況としては、次の 2 つがあります。 + +- 仮想メモリが不足している。 + + ガベージ コレクターは、サイズがあらかじめ決められたセグメント単位でシステムのメモリを割り当てます。 割り当てで追加のセグメントが必要になっとときに、プロセスの仮想メモリ空間に連続する空きブロックが残っていなければ、マネージ ヒープの割り当ては失敗します。 + +- 十分な物理メモリを確保できない。 + +|パフォーマンス チェック| +|------------------| +|[メモリ不足の例外がマネージ例外かどうかを確認する。](#OOMIsManaged)

[予約できる仮想メモリの量を確認する。](#GetVM)

[十分な物理メモリがあるかどうかを確認する。](#Physical)| + + 例外が正当なものでないと判断した場合は、マイクロソフト カスタマー サポート サービスにお問い合わせください。その際、次の情報をご連絡ください。 + +- メモリ不足のマネージ例外を含む履歴 + +- 完全なメモリ ダンプ + +- メモリ不足の例外が正当なものでないことを証明するデータ \(仮想メモリまたは物理メモリに問題がないことを示すデータなど\) + + +### 問題: プロセスによるメモリ使用量が多すぎる + 一般的な前提として、メモリ使用量が多すぎる場合については、Windows タスク マネージャーの **\[パフォーマンス\]** タブのメモリ使用量の表示で確認できます。 ただし、この表示はワーキング セットに関するもので、仮想メモリの使用量に関する情報ではありません。 + + マネージ ヒープが原因であると判断した場合は、一定の期間にわたってマネージ ヒープを測定し、パターンを確認する必要があります。 + + マネージ ヒープが原因でないと判断した場合は、ネイティブ デバッグを使用する必要があります。 + +|パフォーマンス チェック| +|------------------| +|[予約できる仮想メモリの量を確認する。](#GetVM)

[マネージ ヒープでコミットしているメモリの量を確認する。](#ManagedHeapCommit)

[マネージ ヒープで予約されているメモリの量を確認する。](#ManagedHeapReserve)

[ジェネレーション 2 の大きいオブジェクトを確認する。](#ExamineGen2)

[オブジェクトへの参照を確認する。](#ObjRef)| + + +### 問題: ガベージ コレクターによるオブジェクトの解放に時間がかかる + ガベージ コレクションでオブジェクトが通常どおりに解放されていないように見える場合は、それらのオブジェクトに対する強い参照がないかどうかを確認する必要があります。 + + この問題は、死んだ状態のオブジェクトを含むジェネレーションに対してガベージ コレクションが行われていない場合にも発生します。死んだ状態のオブジェクトは、そのオブジェクトのファイナライザーが実行されていないことを示します。 たとえば、シングルスレッド アパートメント \(STA\) のアプリケーションを実行している場合に、ファイナライザー キューを処理するスレッドがファイナライザーの呼び出しに失敗すると、この状態になる可能性があります。 + +|パフォーマンス チェック| +|------------------| +|[オブジェクトへの参照を確認する。](#ObjRef)

[ファイナライザーが実行されたかどうかを確認する。](#Induce)

[終了待機中のオブジェクトがないかどうかを確認する。](#Finalize)| + + +### 問題: マネージ ヒープが過度に断片化される + 断片化レベルは、ジェネレーションに割り当てられたメモリの合計に占める空き領域の割合として計算されます。 ジェネレーション 2 の場合、許容される断片化レベルは 20% 以下です。 ジェネレーション 2 は非常に大きくなる可能性があるため、断片化の割合の方が絶対値より重要になります。 + + ジェネレーション 0 は、新しいオブジェクトが割り当てられるジェネレーションなので、空き領域が多くても問題はありません。 + + 断片化は常に大きなオブジェクト ヒープで発生します。大きなオブジェクト ヒープは圧縮されないからです。 隣接する空きオブジェクトは、大きなオブジェクトの割り当て要求を満たすために必然的に 1 つの領域にまとめられます。 + + 断片化が問題になるのは、ジェネレーション 1 とジェネレーション 2 です。 これらのジェネレーションで、ガベージ コレクションの終了後に大量の空き領域ある場合は、アプリケーションのオブジェクトの使用方法を変更する必要がある可能性があります。長期間のオブジェクトの有効期間を再評価することを検討してください。 + + オブジェクトの固定が過度に行われていると断片化レベルが高くなることがあります。 断片化レベルが高い場合は、固定されているオブジェクトが多すぎる可能性があります。 + + 仮想メモリの断片化によってガベージ コレクターがセグメントを追加できなくなっている場合、次のような原因が考えられます。 + +- 多数の小さなアセンブリの読み込みとアンロードが頻繁に行われている。 + +- アンマネージ コードとの相互運用時に保持される COM オブジェクトへの参照が多すぎる。 + +- 大きな一時オブジェクトが作成されているために、大きなオブジェクト ヒープでヒープ セグメントの割り当てと解放が頻繁に行われている。 + + アプリケーションで CLR をホストする際には、セグメントを保持するようにガベージ コレクターに要求することができます。 これにより、セグメント割り当ての頻度が減少します。 そのためには、[STARTUP\_FLAGS 列挙型](../../../ocs/framework/unmanaged-api/hosting/startup-flags-enumeration.md) の STARTUP\_HOARD\_GC\_VM フラグを使用します。 + +|パフォーマンス チェック| +|------------------| +|[マネージ ヒープの空き領域の容量を確認する。](#Fragmented)

[固定されたオブジェクトの数を確認する。](#Pinned)| + + 正当な理由もないのに断片化が発生していると思われる場合は、マイクロソフト カスタマー サポート サービスにお問い合わせください。 + + +### 問題: ガベージ コレクションの一時停止が長すぎる + ガベージ コレクションはソフト リアルタイムで動作するため、アプリケーションはある程度の一時停止に耐えられなければなりません。 ソフト リアルタイムの基準では、95% の操作が時間どおりに完了する必要があります。 + + 同時実行ガベージ コレクションでは、コレクションの実行中もマネージ スレッドを実行できるため、一時停止は最小限に抑えられます。 + + 短期ガベージ コレクション \(ジェネレーション 0 および 1\) は数ミリ秒しかかからないため、一般に一時停止を減らすことは不可能です。 一方、ジェネレーション 2 のコレクションでは、アプリケーションによる割り当て要求のパターンを変更することによって一時停止を減らすことができます。 + + より正確な方法として、[ガベージ コレクション ETW イベント](../../../docs/framework/performance/garbage-collection-etw-events.md)を使用することもできます。 一連のイベントにタイム スタンプを追加して区別することにより、コレクションのタイミングを特定できます。 コレクションのシーケンス全体には、実行エンジンの中断、ガベージ コレクション自体、および実行エンジンの再開が含まれます。 + + [Garbage Collection Notifications](../../../docs/standard/garbage-collection/notifications.md)を使用すると、サーバーでジェネレーション 2 のコレクションが発生しそうかどうか、要求を別のサーバーに再ルーティングすることで一時停止の問題を緩和できるかどうかを確認できます。 + +|パフォーマンス チェック| +|------------------| +|[ガベージ コレクションの継続時間を確認する。](#TimeInGC)

[ガベージ コレクションが発生した原因を確認する。](#Triggered)| + + +### 問題: ジェネレーション 0 が大きすぎる + 64 ビット システムでは、ジェネレーション 0 のオブジェクトの数が増える傾向があります。ワークステーションのガベージ コレクションではなくサーバーのガベージ コレクションを使用している場合は特にその傾向が強くなります。 それらの環境では、ジェネレーション 0 のガベージ コレクションをトリガーするしきい値が高いので、ジェネレーション 0 のコレクションが非常に大きくなる可能性があるためです。 アプリケーションで、ガベージ コレクションがトリガーされる前により多くのメモリを割り当てると、パフォーマンスが向上します。 + + +### 問題: ガベージ コレクションの実行時の CPU 使用率が高すぎる + ガベージ コレクションの実行時には CPU 使用率が高くなります。 ガベージ コレクションに大量の処理時間が費やされている場合は、コレクションの発生頻度が高すぎるか、コレクションの継続時間が長すぎます。 マネージ ヒープに対するオブジェクトの割り当ての速度を上げるとガベージ コレクションの発生頻度が高くなります。 割り当ての速度を下げるとガベージ コレクションの発生頻度が低くなります。 + + 割り当ての速度を監視するには、`Allocated Bytes/second` パフォーマンス カウンターを使用します。 詳細については、「[.NET Framework のパフォーマンス カウンター](../../../docs/framework/debug-trace-profile/performance-counters.md)」を参照してください。 + + コレクションの継続時間は、主に、割り当て後に残ったオブジェクトの数によって決まります。 コレクションの対象となるオブジェクトが数多く残っていると、ガベージ コレクターが大量のメモリを処理しなければならなくなります。 残存オブジェクトの圧縮には時間がかかります。 コレクションの実行中に処理されたオブジェクトの数を確認するには、デバッガーで特定のジェネレーションのガベージ コレクションの終了時にブレークポイントを設定します。 + +|パフォーマンス チェック| +|------------------| +|[CPU の使用率が高いのはガベージ コレクションのためかどうかを確認する。](#HighCPU)

[ガベージ コレクションの終了時にブレークポイントを設定する。](#GenBreak)| + + [ページのトップへ](#top) + + +## トラブルシューティングのガイドライン + ここでは、調査を開始するときに考慮する必要があるガイドラインについて説明します。 + +### ワークステーションのガベージ コレクションかサーバーのガベージ コレクションか + 使用しているガベージ コレクションの種類が正しいかどうかを確認します。 アプリケーションで複数のスレッドおよびオブジェクト インスタンスを使用する場合は、ワークステーションのガベージ コレクションではなくサーバーのガベージ コレクションを使用します。 サーバーのガベージ コレクションは複数のスレッドで動作しますが、ワークステーションのガベージ コレクションでは、アプリケーションの複数のインスタンスでそれぞれ専用のガベージ コレクション スレッドを実行する必要があるため、CPU 時間の競合が発生します。 + + 負荷が低く、バックグラウンドでタスクを実行することの少ないアプリケーション \(サービスなど\) では、同時実行ガベージ コレクションを無効にしてワークステーションのガベージ コレクションを使用できます。 + +### いつマネージ ヒープのサイズを測定するか + プロファイラーを使用しない場合、パフォーマンスの問題を効果的に診断するには、一貫した測定パターンを確立する必要があります。 スケジュールを確立する際の考慮事項を以下に示します。 + +- ジェネレーション 2 のガベージ コレクションの後に測定する場合は、マネージ ヒープ全体からガベージ \(死んだ状態のオブジェクト\) がなくなっています。 + +- ジェネレーション 0 のガベージ コレクションの直後に測定する場合は、ジェネレーション 1 と 2 のオブジェクトのコレクションはまだ行われていません。 + +- ガベージ コレクションの直前に測定する場合は、どのくらいの割り当てが行われるとガベージ コレクションが開始されるのかが測定されます。 + +- ガベージ コレクションの実行中に測定するのには問題があります。ガベージ コレクターのデータ構造が走査可能な状態になっていないので、完全な結果が得られない可能性があるためです。 これは仕様に基づく制限事項です。 + +- 同時実行ガベージ コレクションを有効にしてワークステーションのガベージ コレクションを使用している場合は、解放されたオブジェクトが圧縮されないため、ヒープ サイズが変わらなかったり大きくなっていたりすることがあります \(断片化のために大きく見えることがあります\)。 + +- ジェネレーション 2 の同時実行ガベージ コレクションは、物理メモリの負荷が高すぎると延期されます。 + + マネージ ヒープを測定するためのブレークポイントを設定する方法を以下に示します。 + + +##### ガベージ コレクションの終了時にブレークポイントを設定するには + +- SOS デバッガー拡張が読み込まれた WinDbg で、次のコマンドを入力します。 + + **bp mscorwks\!WKS::GCHeap::RestartEE "j \(dwo\(mscorwks\!WKS::GCHeap::GcCondemnedGeneration\)\=\=2\) 'kb';'g'"** + + **GcCondemnedGeneration** は、目的のジェネレーションに設定します。 このコマンドにはプライベート シンボルが必要です。 + + これにより、ジェネレーション 2 のオブジェクトがガベージ コレクションのために解放された後に **RestartEE** が実行されると、実行が中断されます。 + + サーバーのガベージ コレクションでは、**RestartEE** を呼び出すスレッドは 1 つだけなので、ジェネレーション 2 のガベージ コレクションの実行中に 1 回だけブレークポイントが発生します。 + + [ページのトップへ](#top) + + +## パフォーマンス チェックの手順 + ここでは、パフォーマンスの問題の原因を切り分けるための以下の手順について説明します。 + +- [問題の原因がガベージ コレクションにあるかどうかを確認する。](#IsGC) + +- [メモリ不足の例外がマネージ例外かどうかを確認する。](#OOMIsManaged) + +- [予約できる仮想メモリの量を確認する。](#GetVM) + +- [十分な物理メモリがあるかどうかを確認する。](#Physical) + +- [マネージ ヒープでコミットしているメモリの量を確認する。](#ManagedHeapCommit) + +- [マネージ ヒープで予約されているメモリの量を確認する。](#ManagedHeapReserve) + +- [ジェネレーション 2 の大きいオブジェクトを確認する。](#ExamineGen2) + +- [オブジェクトへの参照を確認する。](#ObjRef) + +- [ファイナライザーが実行されたかどうかを確認する。](#Induce) + +- [終了待機中のオブジェクトがないかどうかを確認する。](#Finalize) + +- [マネージ ヒープの空き領域の容量を確認する。](#Fragmented) + +- [固定されたオブジェクトの数を確認する。](#Pinned) + +- [ガベージ コレクションの継続時間を確認する。](#TimeInGC) + +- [ガベージ コレクションが発生した原因を確認する。](#Triggered) + +- [CPU の使用率が高いのはガベージ コレクションのためかどうかを確認する。](#HighCPU) + + +##### 問題の原因がガベージ コレクションにあるかどうかを確認するには + +- 次の 2 つのメモリ パフォーマンス カウンターを調べます。 + + - **% Time in GC**。 前回のガベージ コレクション サイクルの後にガベージ コレクションの実行に費やされた経過時間の割合を表示します。 このカウンターを使用すると、ガベージ コレクターがマネージ ヒープの領域を確保するために費やしている時間が長すぎないかどうかを確認できます。 ガベージ コレクションに費やされている時間が比較的短い場合は、マネージ ヒープ以外のリソースに問題があると考えられます。 このカウンターは、同時実行ガベージ コレクションやバックグラウンド ガベージ コレクションでは正確な値が得られない可能性があります。 + + - **\# Total committed Bytes**。 ガベージ コレクターによって現在コミットされている仮想メモリの量を表示します。 このカウンターを使用すると、アプリケーションが使用しているメモリのうちガベージ コレクターによって消費されているメモリが多すぎないかどうかを確認できます。 + + ほとんどのメモリ パフォーマンス カウンターは、各ガベージ コレクションの終了時に更新されます。 そのため、情報を得ようとしている時点の状態が反映されていない場合もあります。 + + +##### メモリ不足の例外がマネージ例外かどうかを確認するには + +1. SOS デバッガー拡張が読み込まれた WinDbg または Visual Studio デバッガーで、**pe** \(print exception\) コマンドを入力します。 + + **\!pe** + + マネージ例外の場合は、次の例のように、 が例外の種類として表示されます。 + + ``` + Exception object: 39594518 + Exception type: System.OutOfMemoryException + Message: + InnerException: + StackTrace (generated): + ``` + +2. 出力に例外が明記されていない場合は、メモリ不足の例外が発生したスレッドを特定する必要があります。 デバッガーで次のコマンドを入力して、すべてのスレッドとその呼び出し履歴を表示します。 + + **~\*kb** + + 履歴に例外の呼び出しが含まれているスレッドは、`RaiseTheException` 引数によって示されます。 これはマネージ例外オブジェクトです。 + + ``` + 28adfb44 7923918f 5b61f2b4 00000000 5b61f2b4 mscorwks!RaiseTheException+0xa0 + ``` + +3. 次のコマンドを使用して、入れ子になった例外をダンプします。 + + **\!pe \-nested** + + 例外が見つからない場合、そのメモリ不足の例外は、アンマネージ コードで発生した例外です。 + + +##### 予約できる仮想メモリの量を確認するには + +- SOS デバッガー拡張が読み込まれた WinDbg で次のコマンドを入力して、最も大きな空き領域を取得します。 + + **\!address \-summary** + + 次の例のように、最も大きな空き領域が表示されます。 + + ``` + Largest free region: Base 54000000 - Size 0003A980 + ``` + + この例では、最も大きな空き領域のサイズは約 24000 KB \(16 進形式では 3A980\) です。 これは、ガベージ コレクターのセグメントに必要なサイズよりはるかに小さいサイズです。 + + または + +- **vmstat** コマンドを使用します。 + + **\!vmstat** + + MAXIMUM 列の最大値が最も大きな空き領域です。以下に例を示します。 + + ``` + TYPE MINIMUM MAXIMUM AVERAGE BLK COUNT TOTAL + ~~~~ ~~~~~~~ ~~~~~~~ ~~~~~~~ ~~~~~~~~~~ ~~~~ + Free: + Small 8K 64K 46K 36 1,671K + Medium 80K 864K 349K 3 1,047K + Large 1,384K 1,278,848K 151,834K 12 1,822,015K + Summary 8K 1,278,848K 35,779K 51 1,824,735K + ``` + + +##### 十分な物理メモリがあるかどうかを確認するには + +1. Windows タスク マネージャーを起動します。 + +2. **\[パフォーマンス\]** タブで、コミットの値を確認します \(Windows 7 では **\[システム\]** の **\[コミット \(KB\)\]**\)。 + + **\[合計\]** が **\[制限値\]** に近い場合は、物理メモリが不足しています。 + + +##### マネージ ヒープでコミットしているメモリの量を確認するには + +- マネージ ヒープでコミットしているバイト数を確認するには、`# Total committed bytes` メモリ パフォーマンス カウンターを使用します。 ガベージ コレクターは、セグメントのチャンクを必要に応じてコミットします。すべてを同時にコミットするのではありません。 + + > [!NOTE] + > `# Bytes in all Heaps` パフォーマンス カウンターは使用しないでください。このパフォーマンス カウンターによって表されるのは、マネージ ヒープの実際のメモリ使用量ではありません。 この値にはジェネレーションのサイズが含まれますが、それは、実質的にはジェネレーションのしきい値 \(ジェネレーションがオブジェクトでいっぱいになった場合にガベージ コレクションが発生するサイズ\) です。 したがって、この値は、通常は 0 になります。 + + +##### マネージ ヒープで予約されているメモリの量を確認するには + +- `# Total reserved bytes` メモリ パフォーマンス カウンターを使用します。 + + ガベージ コレクターはメモリをセグメント単位で予約します。セグメントの開始位置を特定するには **eeheap** コマンドを使用します。 + + > [!IMPORTANT] + > ガベージ コレクターが各セグメントに割り当てるメモリ量を判別することは可能ですが、セグメント サイズは実装に固有であり、定期的な更新プログラムによる場合を含め、いつでも変更されることがあります。 アプリでは、セグメント サイズを推測することや、特定のセグメント サイズに依存することを絶対に避けてください。また、セグメントの割り当てに使用可能なメモリの量を構成しようとしてもなりません。 + +- SOS デバッガー拡張が読み込まれた WinDbg または Visual Studio デバッガーで、次のコマンドを入力します。 + + **\!eeheap \-gc** + + この結果は次のようになります。 + + ``` + Number of GC Heaps: 2 + ------------------------------ + Heap 0 (002db550) + generation 0 starts at 0x02abe29c + generation 1 starts at 0x02abdd08 + generation 2 starts at 0x02ab0038 + ephemeral segment allocation context: none + segment begin allocated size + 02ab0000 02ab0038 02aceff4 0x0001efbc(126908) + Large object heap starts at 0x0aab0038 + segment begin allocated size + 0aab0000 0aab0038 0aab2278 0x00002240(8768) + Heap Size 0x211fc(135676) + ------------------------------ + Heap 1 (002dc958) + generation 0 starts at 0x06ab1bd8 + generation 1 starts at 0x06ab1bcc + generation 2 starts at 0x06ab0038 + ephemeral segment allocation context: none + segment begin allocated size + 06ab0000 06ab0038 06ab3be4 0x00003bac(15276) + Large object heap starts at 0x0cab0038 + segment begin allocated size + 0cab0000 0cab0038 0cab0048 0x00000010(16) + Heap Size 0x3bbc(15292) + ------------------------------ + GC Heap Size 0x24db8(150968) + ``` + + "segment" によって示されるアドレスがセグメントの開始アドレスです。 + + +##### ジェネレーション 2 の大きいオブジェクトを確認するには + +- SOS デバッガー拡張が読み込まれた WinDbg または Visual Studio デバッガーで、次のコマンドを入力します。 + + **\!dumpheap –stat** + + **dumpheap** は、マネージ ヒープが大きいと完了までにしばらくかかります。 + + 最も多くの領域を使用しているオブジェクトは出力の最後の数行に表示されるため、そこを分析します。 次に例を示します。 + + ``` + 2c6108d4 173712 14591808 DevExpress.XtraGrid.Views.Grid.ViewInfo.GridCellInfo + 00155f80 533 15216804 Free + 7a747c78 791070 15821400 System.Collections.Specialized.ListDictionary+DictionaryNode + 7a747bac 700930 19626040 System.Collections.Specialized.ListDictionary + 2c64e36c 78644 20762016 DevExpress.XtraEditors.ViewInfo.TextEditViewInfo + 79124228 121143 29064120 System.Object[] + 035f0ee4 81626 35588936 Toolkit.TlkOrder + 00fcae40 6193 44911636 WaveBasedStrategy.Tick_Snap[] + 791242ec 40182 90664128 System.Collections.Hashtable+bucket[] + 790fa3e0 3154024 137881448 System.String + Total 8454945 objects + ``` + + 最後の行のオブジェクトは文字列で、最も多くの領域を占有しています。 したがって、アプリケーションで文字列オブジェクトを最適化する方法を調べます。 サイズが 150 ~ 200 バイトの文字列を表示するには、次のコマンドを入力します。 + + **\!dumpheap \-type System.String \-min 150 \-max 200** + + 結果の例を次に示します。 + + ``` + Address MT Size Gen + 1875d2c0 790fa3e0 152 2 System.String HighlightNullStyle_Blotter_PendingOrder-11_Blotter_PendingOrder-11 + … + ``` + + ID に文字列の代わりに整数を使用すると、効率を改善できます。 同じ文字列が何千回も繰り返し使用されている場合は、文字列インターンの使用を検討します。 文字列インターンの詳細については、 メソッドのリファレンス トピックを参照してください。 + + +##### オブジェクトへの参照を確認するには + +- SOS デバッガー拡張が読み込まれた WinDbg で次のコマンドを入力して、オブジェクトへの参照を表示します。 + + **\!gcroot** + + `-or-` + +- 特定のオブジェクトの参照を確認するには、アドレスを含めます。 + + **\!gcroot 1c37b2ac** + + 履歴で見つかるルートは誤検出である可能性があります。 詳細については、コマンド `!help gcroot` を使用してください。 + + ``` + ebx:Root:19011c5c(System.Windows.Forms.Application+ThreadContext)-> + 19010b78(DemoApp.FormDemoApp)-> + 19011158(System.Windows.Forms.PropertyStore)-> + … [omitted] + 1c3745ec(System.Data.DataTable)-> + 1c3747a8(System.Data.DataColumnCollection)-> + 1c3747f8(System.Collections.Hashtable)-> + 1c376590(System.Collections.Hashtable+bucket[])-> + 1c376c98(System.Data.DataColumn)-> + 1c37b270(System.Data.Common.DoubleStorage)-> + 1c37b2ac(System.Double[]) + Scan Thread 0 OSTHread 99c + Scan Thread 6 OSTHread 484 + ``` + + **gcroot** コマンドは、完了までに時間がかかることがあります。 ガベージ コレクションによって解放されないオブジェクトはライブ オブジェクトです。 したがって、そのオブジェクトを直接的または間接的に参照しているルートがあるため、**gcroot** でそのオブジェクトへのパス情報が返されます。 返されたグラフを調べて、それらのオブジェクトがまだ参照されている理由を確認する必要があります。 + + +##### ファイナライザーが実行されたかどうかを確認するには + +- 次のコードを含むテスト プログラムを実行します。 + + ``` + GC.Collect(); + GC.WaitForPendingFinalizers(); + GC.Collect(); + ``` + + このテストで問題が解決される場合は、ファイナライザーが実行されていないためにガベージ コレクターによって解放されないオブジェクトがあったことになります。 メソッドを使用すると、ファイナライザーがタスクを完了できるようになるため、問題が解決されます。 + + +##### 終了待機中のオブジェクトがないかどうかを確認するには + +1. SOS デバッガー拡張が読み込まれた WinDbg または Visual Studio デバッガーで、次のコマンドを入力します。 + + **\!finalizequeue** + + 終了準備が完了しているオブジェクトの数を確認します。 その数が多い場合は、それらのファイナライザーが実行されない理由、または実行が遅れている理由を調べる必要があります。 + +2. スレッドの出力を取得するには、次のコマンドを入力します。 + + **threads \-special** + + 次のような出力が表示されます。 + + ``` + OSID Special thread type + 2 cd0 DbgHelper + 3 c18 Finalizer + 4 df0 GC SuspendEE + ``` + + ファイナライザー スレッドは、現在実行されているファイナライザーを示します \(存在する場合\)。 実行中のファイナライザー スレッドが存在しない場合は、処理の開始を通知するイベントを待機しています。 ファイナライザー スレッドは、ほとんどの場合この状態にあります。THREAD\_HIGHEST\_PRIORITY で実行されるので、実行するファイナライザーがあればすぐに実行されるためです。 + + +##### マネージ ヒープの空き領域の容量を確認するには + +- SOS デバッガー拡張が読み込まれた WinDbg または Visual Studio デバッガーで、次のコマンドを入力します。 + + **\!dumpheap \-type Free \-stat** + + このコマンドは、次の例に示すように、マネージ ヒープのすべての空きオブジェクトの合計サイズを表示します。 + + ``` + total 230 objects + Statistics: + MT Count TotalSize Class Name + 00152b18 230 40958584 Free + Total 230 objects + ``` + +- ジェネレーション 0 の空き領域を確認するには、次のコマンドを入力して、ジェネレーション別のメモリ消費情報を表示します。 + + **\!eeheap \-gc** + + 次のような出力が表示されます。 最後の行には短期セグメントが表示されています。 + + ``` + Heap 0 (0015ad08) + generation 0 starts at 0x49521f8c + generation 1 starts at 0x494d7f64 + generation 2 starts at 0x007f0038 + ephemeral segment allocation context: none + segment begin allocated size + 00178250 7a80d84c 7a82f1cc 0x00021980(137600) + 00161918 78c50e40 78c7056c 0x0001f72c(128812) + 007f0000 007f0038 047eed28 0x03ffecf0(67103984) + 3a120000 3a120038 3a3e84f8 0x002c84c0(2917568) + 46120000 46120038 49e05d04 0x03ce5ccc(63855820) + ``` + +- ジェネレーション 0 によって使用されている領域を計算します。 + + **? 49e05d04\-0x49521f8c** + + この結果は次のようになります。 ジェネレーション 0 は約 9 MB です。 + + ``` + Evaluate expression: 9321848 = 008e3d78 + ``` + +- 次のコマンドは、ジェネレーション 0 の範囲にある空き領域をダンプします。 + + **\!dumpheap \-type Free \-stat 0x49521f8c 49e05d04** + + この結果は次のようになります。 + + ``` + ------------------------------ + Heap 0 + total 409 objects + ------------------------------ + Heap 1 + total 0 objects + ------------------------------ + Heap 2 + total 0 objects + ------------------------------ + Heap 3 + total 0 objects + ------------------------------ + total 409 objects + Statistics: + MT Count TotalSize Class Name + 0015a498 409 7296540 Free + Total 409 objects + ``` + + この出力は、ヒープのジェネレーション 0 の部分で 9 MB の領域がオブジェクトに使用されていて、7 MB が空いていることを示しています。 この分析から、ジェネレーション 0 がどの程度断片化に関与しているのかがわかります。 この分のヒープ使用量は、長期間のオブジェクトによる断片化の原因となる合計容量から除外する必要があります。 + + +##### 固定されたオブジェクトの数を確認するには + +- SOS デバッガー拡張が読み込まれた WinDbg または Visual Studio デバッガーで、次のコマンドを入力します。 + + **\!gchandles** + + 次の例に示すように、固定ハンドルの数を含む統計情報が表示されます。 + + ``` + GC Handle Statistics: + Strong Handles: 29 + Pinned Handles: 10 + ``` + + +##### ガベージ コレクションの継続時間を確認するには + +- `% Time in GC` メモリ パフォーマンス カウンターを調べます。 + + この値は、サンプル間隔の時間を使用して計算します。 このカウンターは各ガベージ コレクションの終了時に更新されるため、サンプル間隔の間にコレクションが発生しなかった場合は前のサンプルと同じ値になります。 + + コレクションの時間は、サンプル間隔の時間にパーセント値を掛けて計算します。 + + 次のデータには 4 つのサンプリング間隔が示されています。サンプリング間隔の時間は 2 秒で、8 秒間にわたって調査が行われています。 `Gen0`、`Gen1`、`Gen2` の各列には、そのジェネレーションでその間隔の間に発生したガベージ コレクションの番号が表示されています。 + + ``` + Interval Gen0 Gen1 Gen2 % Time in GC + 1 9 3 1 10 + 2 10 3 1 1 + 3 11 3 1 3 + 4 11 3 1 3 + ``` + + この情報からは、ガベージ コレクションが発生した時間はわかりませんが、特定の時間間隔の間に発生したガベージ コレクションの番号を特定できます。 最悪のケースでは、ジェネレーション 0 の 10 番目のガベージ コレクションが間隔 2 の開始時に終了し、ジェネレーション 0 の 11 番目のガベージ コレクションが間隔 5 の終了時に終了したことになります。 10 番目のガベージ コレクションが終了してから 11 番目のガベージ コレクションが終了するまでの時間は約 2 秒で、パフォーマンス カウンターの値は 3% になっているため、ジェネレーション 0 の 11 番目のガベージ コレクションの継続時間は 60 ミリ秒 \(2 秒 \* 3%\) になります。 + + 次の例には 5 つの間隔があります。 + + ``` + Interval Gen0 Gen1 Gen2 % Time in GC + 1 9 3 1 3 + 2 10 3 1 1 + 3 11 4 2 1 + 4 11 4 2 1 + 5 11 4 2 20 + ``` + + ジェネレーション 2 の 2 番目のガベージ コレクションは、間隔 3 の間に開始され、間隔 5 で終了しています。 最悪のケースでは、このガベージ コレクションの前のガベージ コレクションは、間隔 2 の開始時に終了したジェネレーション 0 のコレクションで、このジェネレーション 2 のガベージ コレクション自体は、間隔 5 の終了時に終了したことになります。 したがって、そのジェネレーション 0 のガベージ コレクションが終了してからこのジェネレーション 2 のガベージ コレクションが終了するまでの時間は 4 秒になります。 `% Time in GC` カウンターの値は 20% なので、このジェネレーション 2 のガベージ コレクションの継続時間は最大で 800 ミリ秒 \(4 秒 \* 20%\) になります。 + +- [ガベージ コレクション ETW イベント](../../../docs/framework/performance/garbage-collection-etw-events.md)を使用してガベージ コレクションの長さを確認し、その情報を分析してガベージ コレクションの継続時間を特定することもできます。 + + たとえば、次のデータは、非同時実行ガベージ コレクションの実行中に発生したイベント シーケンスを示しています。 + + ``` + Timestamp Event name + 513052 GCSuspendEEBegin_V1 + 513078 GCSuspendEEEnd + 513090 GCStart_V1 + 517890 GCEnd_V1 + 517894 GCHeapStats + 517897 GCRestartEEBegin + 517918 GCRestartEEEnd + ``` + + マネージ スレッドの中断に 26 マイクロ秒かかっています \(`GCSuspendEEEnd` – `GCSuspendEEBegin_V1`\)。 + + 実際のガベージ コレクションに 4.8 ミリ秒かかっています \(`GCEnd_V1` – `GCStart_V1`\)。 + + マネージ スレッドの再開に 21 マイクロ秒かかっています \(`GCRestartEEEnd` – `GCRestartEEBegin`\)。 + + 次の例は、バックグラウンド ガベージ コレクションの出力を示しています。この出力には、process、thread、および event field が含まれています \(すべてのデータが示されているわけではありません\)。 + + ``` + timestamp(us) event name process thread event field + 42504385 GCSuspendEEBegin_V1 Test.exe 4372 1 + 42504648 GCSuspendEEEnd Test.exe 4372 + 42504816 GCStart_V1 Test.exe 4372 102019 + 42504907 GCStart_V1 Test.exe 4372 102020 + 42514170 GCEnd_V1 Test.exe 4372 + 42514204 GCHeapStats Test.exe 4372 102020 + 42832052 GCRestartEEBegin Test.exe 4372 + 42832136 GCRestartEEEnd Test.exe 4372 + 63685394 GCSuspendEEBegin_V1 Test.exe 4744 6 + 63686347 GCSuspendEEEnd Test.exe 4744 + 63784294 GCRestartEEBegin Test.exe 4744 + 63784407 GCRestartEEEnd Test.exe 4744 + 89931423 GCEnd_V1 Test.exe 4372 102019 + 89931464 GCHeapStats Test.exe 4372 + ``` + + 42504816 の `GCStart_V1` イベントは、前のフィールドが `1` であるため、バックグラウンド ガベージ コレクションを示します。 これは、次の番号のガベージ コレクションになります。 102019. + + バックグラウンド ガベージ コレクションを開始する前に短期ガベージ コレクションを実行する必要があるため、`GCStart` イベントが発生します。 これは、次の番号のガベージ コレクションになります。 102020. + + 42514170 の時点で、ガベージ コレクションの番号は 102020 になり、終了します。 この時点でマネージ スレッドが再開されます。 スレッド 4372 で以上の処理が完了すると、バックグラウンド ガベージ コレクションがトリガーされます。 + + スレッド 4744 で中断が発生します。 このバックグラウンド ガベージ コレクションによってマネージ スレッドが中断されるのはこのときだけです。 この中断の期間は約 99 ミリ秒です \(\(63784407\-63685394\)\/1000\)。 + + バックグラウンド ガベージ コレクションの `GCEnd` イベントは 89931423 で発生しています。 したがって、このバックグラウンド ガベージ コレクションの継続時間は約 47 秒になります \(\(89931423\-42504816\)\/1000\)。 + + マネージ スレッドの実行中には短期ガベージ コレクションが何度も発生する可能性があります。 + + +##### ガベージ コレクションが発生した原因を確認するには + +- SOS デバッガー拡張が読み込まれた WinDbg または Visual Studio デバッガーで次のコマンドを入力して、すべてのスレッドとその呼び出し履歴を表示します。 + + **~\*kb** + + 次のような出力が表示されます。 + + ``` + 0012f3b0 79ff0bf8 mscorwks!WKS::GCHeap::GarbageCollect + 0012f454 30002894 mscorwks!GCInterface::CollectGeneration+0xa4 + 0012f490 79fa22bd fragment_ni!request.Main(System.String[])+0x48 + ``` + + オペレーティング システムからのメモリ不足の通知によってガベージ コレクションが発生した場合も同じような呼び出し履歴になりますが、その場合はスレッドがファイナライザー スレッドになります。 ファイナライザー スレッドは、非同期のメモリ不足の通知を受け取って、ガベージ コレクションを発生させます。 + + メモリの割り当てによってガベージ コレクションが発生した場合は、次のような履歴になります。 + + ``` + 0012f230 7a07c551 mscorwks!WKS::GCHeap::GarbageCollectGeneration + 0012f2b8 7a07cba8 mscorwks!WKS::gc_heap::try_allocate_more_space+0x1a1 + 0012f2d4 7a07cefb mscorwks!WKS::gc_heap::allocate_more_space+0x18 + 0012f2f4 7a02a51b mscorwks!WKS::GCHeap::Alloc+0x4b + 0012f310 7a02ae4c mscorwks!Alloc+0x60 + 0012f364 7a030e46 mscorwks!FastAllocatePrimitiveArray+0xbd + 0012f424 300027f4 mscorwks!JIT_NewArr1+0x148 + 000af70f 3000299f fragment_ni!request..ctor(Int32, Single)+0x20c + 0000002a 79fa22bd fragment_ni!request.Main(System.String[])+0x153 + ``` + + 最終的に Just\-In\-Time ヘルパー \(`JIT_New*`\) が `GCHeap::GarbageCollectGeneration` を呼び出します。 ジェネレーション 2 のガベージ コレクションが割り当てによって発生していると判断された場合は、ジェネレーション 2 のガベージ コレクションの対象になっているオブジェクトを確認し、それを回避する方法を特定する必要があります。 そのためには、ジェネレーション 2 のガベージ コレクションの開始時と終了時の違いを確認し、ジェネレーション 2 のコレクションを発生させたオブジェクトを特定します。 + + たとえば、ジェネレーション 2 のコレクションの開始時の情報を表示するには、デバッガーで次のコマンドを入力します。 + + **\!dumpheap –stat** + + 出力の例を以下に示します \(最も多くの領域を使用しているオブジェクトのみが示されています\)。 + + ``` + 79124228 31857 9862328 System.Object[] + 035f0384 25668 11601936 Toolkit.TlkPosition + 00155f80 21248 12256296 Free + 79103b6c 297003 13068132 System.Threading.ReaderWriterLock + 7a747ad4 708732 14174640 System.Collections.Specialized.HybridDictionary + 7a747c78 786498 15729960 System.Collections.Specialized.ListDictionary+DictionaryNode + 7a747bac 700298 19608344 System.Collections.Specialized.ListDictionary + 035f0ee4 89192 38887712 Toolkit.TlkOrder + 00fcae40 6193 44911636 WaveBasedStrategy.Tick_Snap[] + 7912c444 91616 71887080 System.Double[] + 791242ec 32451 82462728 System.Collections.Hashtable+bucket[] + 790fa3e0 2459154 112128436 System.String + Total 6471774 objects + ``` + + ジェネレーション 2 の終了時にも同じコマンドを実行します。 + + **\!dumpheap –stat** + + 出力の例を以下に示します \(最も多くの領域を使用しているオブジェクトのみが示されています\)。 + + ``` + 79124228 26648 9314256 System.Object[] + 035f0384 25668 11601936 Toolkit.TlkPosition + 79103b6c 296770 13057880 System.Threading.ReaderWriterLock + 7a747ad4 708730 14174600 System.Collections.Specialized.HybridDictionary + 7a747c78 786497 15729940 System.Collections.Specialized.ListDictionary+DictionaryNode + 7a747bac 700298 19608344 System.Collections.Specialized.ListDictionary + 00155f80 13806 34007212 Free + 035f0ee4 89187 38885532 Toolkit.TlkOrder + 00fcae40 6193 44911636 WaveBasedStrategy.Tick_Snap[] + 791242ec 32370 82359768 System.Collections.Hashtable+bucket[] + 790fa3e0 2440020 111341808 System.String + Total 6417525 objects + ``` + + 出力の末尾から `double[]` オブジェクトがなくなっているため、これらがコレクションの対象になったことがわかります。 これらのオブジェクトは約 70 MB を占めています。 その他のオブジェクトはあまり変更されていません。 したがって、これらの `double[]` オブジェクトが、このジェネレーション 2 のガベージ コレクションが発生した原因です。 ガベージ コレクションが発生した原因がわかったら、今度は、これらの `double[]` オブジェクトが存在する理由と、死んだ状態になった理由を特定します。 コードの開発者にたずねることも、**gcroot** コマンドを使用して確認することもできます。 + + +##### CPU の使用率が高いのはガベージ コレクションのためかどうかを確認するには + +- `% Time in GC` メモリ パフォーマンス カウンターの値と処理時間を互いに関連付けます。 + + `% Time in GC` の値と処理時間が同時に急激に増加している場合は、CPU の使用率が高いのはガベージ コレクションのためです。 それ以外の場合は、アプリケーションのプロファイリングを実行して、使用率の高い箇所を見つけます。 + +## 参照 + [Garbage Collection](../../../docs/standard/garbage-collection/index.md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/unmanaged.md b/docs/standard/garbage-collection/unmanaged.md new file mode 100644 index 00000000000..6d718f053e7 --- /dev/null +++ b/docs/standard/garbage-collection/unmanaged.md @@ -0,0 +1,60 @@ +--- +title: "Cleaning Up Unmanaged Resources | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Close method" + - "Dispose method" + - "garbage collector" + - "garbage collection, unmanaged resources" + - "cleanup operations" + - "explicit cleanups" + - "unmanaged resource cleanup" + - "Finalize method" +ms.assetid: a17b0066-71c2-4ba4-9822-8e19332fc213 +caps.latest.revision: 19 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 19 +--- +# Cleaning Up Unmanaged Resources +アプリケーションで作成するオブジェクトの大部分については、.NET Framework のガベージ コレクターにメモリ管理を任せることができます。 しかし、アンマネージ リソースを含むオブジェクトを作成する場合は、アプリケーションでそのオブジェクトの使用が終了した時点で、そのリソースを明示的に解放する必要があります。 アンマネージ リソースの種類で最も一般的なのは、ファイル、ウィンドウ、ネットワーク接続、データベース接続などのオペレーティング システム リソースをラップしたオブジェクトです。 ガベージ コレクターは、アンマネージ リソースをカプセル化したオブジェクトを有効期間全体にわたって監視できますが、アンマネージ リソースを解放しクリーンアップする方法については情報を持っていません。 + + 型でアンマネージ リソースを使用している場合は、次のようにする必要があります。 + +- [Dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md)を実装します。 これは、アンマネージ リソースの確定的解放を有効にするために の実装を提供する必要があります。 型のコンシューマーはオブジェクト \(および使用するリソース\) が不要になると を呼び出します。 メソッドはアンマネージ リソースを直ちに解放します。 + +- 型のコンシューマーが の呼び出しを忘れた場合にアンマネージ リソースを解放します。 これには、2 つの方法があります。 + + - アンマネージ リソースをラップするセーフ ハンドルを使用します。 この手法を使用することをお勧めします。 セーフ ハンドルは クラスから派生し、堅牢な メソッドを含みます。 セーフ ハンドルを使用するときは、単純に インターフェイスを実装し、 の実装でセーフ ハンドルの メソッドを呼び出します。 セーフ ハンドルのファイナライザーは、 メソッドが呼び出されなかった場合、ガベージ コレクターによって自動的に呼び出されます。 + + または + + - メソッドをオーバーライドします。 終了処理では、型のコンシューマーが を呼び出してアンマネージ リソースを確定的に破棄しなかった場合に、リソースを非確定的に解放できます。 ただし、オブジェクトの終了処理は複雑でエラーが発生しやすい操作であるため、独自のファイナライザーを用意する代わりに、セーフ ハンドルを使用することをお勧めします。 + + これで型のコンシューマーは、 の実装を直接呼び出して、アンマネージ リソースで使用されるメモリを解放することができます。 メソッドを適切に実装すると、セーフ ハンドルの メソッドまたは メソッドの独自のオーバーライドは、 メソッドが呼び出されなかった場合にリソースをクリーンアップするための安全装置になります。 + +## このセクションの内容 + [Implementing a Dispose Method](../../../docs/standard/garbage-collection/implementing-dispose.md) + アンマネージ リソースを解放する [Dispose パターン](../../../docs/standard/design-guidelines/dispose-pattern.md)を実装する方法について説明します。 + + [Using Objects That Implement IDisposable](../../../docs/standard/garbage-collection/using-objects.md) + 型のコンシューマーが の実装を確実に呼び出す方法について説明します。 このためには、C\# の `using` ステートメントまたは Visual Basic の `Using` ステートメントを使用することをお勧めします。 + +## 関連項目 + + アンマネージ リソースの解放のための メソッドを定義します。 + + + アンマネージ リソースが メソッドによって解放されない場合に、オブジェクトの終了処理を提供します。 + + + 終了処理を抑制します。 このメソッドは、慣例的に `Dispose` メソッドから呼び出され、ファイナライザーが実行されないようにします。 \ No newline at end of file diff --git a/docs/standard/garbage-collection/using-objects.md b/docs/standard/garbage-collection/using-objects.md new file mode 100644 index 00000000000..319fc511845 --- /dev/null +++ b/docs/standard/garbage-collection/using-objects.md @@ -0,0 +1,66 @@ +--- +title: "Using Objects That Implement IDisposable | Microsoft Docs" +ms.custom: "" +ms.date: "04/07/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "Dispose method" + - "try/finally block" + - "garbage collection, encapsulating resources" +ms.assetid: 81b2cdb5-c91a-4a31-9c83-eadc52da5cf0 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# Using Objects That Implement IDisposable +共通言語ランタイムのガベージ コレクターは、アンマネージ オブジェクトによって使用されているメモリを解放しますが、アンマネージ リソースを使用する型は、このアンマネージ メモリが解放されるように インターフェイスを実装します。 を実装するオブジェクトを使い終わったら、オブジェクトの の実装を呼び出す必要があります。 2 つの方法のいずれかでこれを行うことができます。 + +- C\# の **using** ステートメントまたは Visual Basic の `Using` ステートメントを使用します。 + +- `try`\/`finally` ブロックを実装します。 + +## using ステートメント + C\# の **using** ステートメントおよび Visual Basic の `Using` ステートメントを使うと、オブジェクトの作成時やクリーンアップ時に記述する必要のあるコードが簡略化されます。 **using** ステートメントは、1 つ以上のリソースを取得し、指定されたステートメントを実行し、オブジェクトを自動的に破棄します。 ただし、**using** ステートメントは、オブジェクトが構築されるメソッドのスコープ内で使用されるオブジェクトに対してのみ有効です。 + + 次の例では、`using` ステートメントを使用して オブジェクトを作成し解放します。 + + [!code-csharp[Conceptual.Disposable#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/using1.cs#1)] + [!code-vb[Conceptual.Disposable#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.disposable/vb/using1.vb#1)] + + クラスは インターフェイスを実装し、これはアンマネージ リソースを使用することを示していますが、例では メソッドを明示的に呼び出していないことに注意してください。 C\# または Visual Basic コンパイラが `using` ステートメントを見つけると、明示的に `try`\/`finally` ブロックを含む次のコードと同等の中間言語 \(IL\) を生成します。 + + [!code-csharp[Conceptual.Disposable#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/using3.cs#3)] + [!code-vb[Conceptual.Disposable#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.disposable/vb/using3.vb#3)] + + また、C\# の **using** ステートメントでは、単一のステートメントで複数のリソースを取得できます。そのようなステートメントは、内部的には複数の **using** ステートメントを入れ子にした場合と同等です。 次の例では、2 つの異なるファイルの内容を読み取るために、 の 2 つのオブジェクトをインスタンス化します。 + + [!code-csharp[Conceptual.Disposable#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/using4.cs#4)] + +## Try\/Finally ブロック + `using` ステートメントで `try`\/`finally` ブロックをラップする代わりに、`try`\/`finally` ブロックを直接実装することもできます。 これは、個人のコーディング スタイルであることも、次のいずれかの理由からそうすることもあります。 + +- `try` ブロックでスローされた例外をすべて処理する `catch` ブロックを含めるため。 そうしないと、`try`\/`catch` ブロックがない場合に `using` ブロック内でスローされた例外と同様に、`using` ステートメントによってスローされた例外は処理されません。 + +- 宣言されたブロックに対してスコープがローカルでない を実装するオブジェクトをインスタンス化するため。 + + 次の例は前の例に似ていますが、`try`\/`catch`\/`finally` ブロックを使用して、 オブジェクトのインスタンス化、使用、破棄を実行し、 コンストラクターと メソッドによってスローされた例外を処理しています。 メソッドを呼び出す前に を実装するオブジェクトが `null` でないことを `finally` ブロックのコードがチェックしていることに注意してください。 これを行わない場合、実行時に 例外が発生する可能性があります。 + + [!code-csharp[Conceptual.Disposable#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.disposable/cs/using5.cs#6)] + [!code-vb[Conceptual.Disposable#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.disposable/vb/using5.vb#6)] + + この基本パターンを利用できるのは、プログラミング言語で `using` ステートメントがサポートされていないが、 メソッドを直接呼び出すことはできるため、`try`\/`finally` ブロックの実装を選択した場合、または実装する必要がある場合です。 + + 使用言語が メソッドの直接の呼び出しをサポートしていない場合は \(C\+\+ など\)、一般にその言語のデストラクター構文を使用できます。 + +## 参照 + [Cleaning Up Unmanaged Resources](../../../docs/standard/garbage-collection/unmanaged.md) + [using ステートメント](../Topic/using%20Statement%20\(C%23%20Reference\).md) + [Using Statement](../Topic/Using%20Statement%20\(Visual%20Basic\).md) \ No newline at end of file diff --git a/docs/standard/garbage-collection/weak-references.md b/docs/standard/garbage-collection/weak-references.md new file mode 100644 index 00000000000..0ab5cc0f385 --- /dev/null +++ b/docs/standard/garbage-collection/weak-references.md @@ -0,0 +1,60 @@ +--- +title: "Weak References | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "weak references, short" + - "weak references, using" + - "weak references, long" + - "garbage collection, weak references" +ms.assetid: 6a600fe5-3af3-4c64-82da-10a0a8e2d79b +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# Weak References +アプリケーションのコードがオブジェクトにアクセスできる間、そのアプリケーションで使用中のオブジェクトをガベージ コレクターが収集できません。 このようなアプリケーションは、そのオブジェクトに対する強い参照を持つアプリケーションと呼ばれます。 + + 弱い参照では、アプリケーションがオブジェクトをアクセスしている間もガベージ コレクターがオブジェクトを収集することが許可されます。 弱い参照は、強い参照が存在しない場合に、オブジェクトが収集されるまでの不確定の期間中のみ有効です。 弱い参照を使用するときでも、該当オブジェクトが収集されるのを防止するため、アプリケーションで強い参照を取得できます。 ただし、強い参照が再確立する前にガベージ コレクターがオブジェクトにアクセスするリスクは常にあります。 + + 弱い参照は、多くのメモリを使用するがガベージ コレクションでクリアされても簡単に再作成できるオブジェクトに使用すると便利です。 + + Windows フォーム アプリケーションのツリー ビューで、ユーザーに対して複雑な階層構造のオプションが表示されているとします。 基になるデータが大きい場合は、ユーザーがアプリケーションで他の操作をしている間、メモリ内にツリーを保持することは、効率がよくありません。 + + ユーザーが、アプリケーションの別の部分に切り替えているときは、 クラスを使用してツリーへの弱い参照を作成し、強い参照をすべて破棄できます。 ユーザーがツリーに戻ったときに、アプリケーションはツリーへの強い参照の取得を試み、成功すると、ツリーの再作成は行いません。 + + オブジェクトへの弱い参照を確立するには、追跡するオブジェクトのインスタンスを使用して、 を作成します。 オブジェクトと のプロパティを設定し、`null`への元のオブジェクトへの参照を設定します。 コード例については、クラス ライブラリの を参照してください。 + +## 短期間の弱い参照および長期間の弱い参照 + 短期間の弱い参照または長期間の弱い参照を作成できます。 + +- Short + + 短期間の弱い参照のターゲットは、ガベージ コレクションでオブジェクトがクリアされると `null` になります。 弱い参照自体はマネージ オブジェクトで、他のマネージ オブジェクトと同様、ガベージ コレクションの対象です。短期間の弱い参照は、 の既定のコンストラクターです。 + +- Long + + 長期間の弱い参照は、オブジェクトの メソッドが呼び出された後に保持されます。 これにより、オブジェクトが再作成できるようになりますが、オブジェクトの状態は予測できません。 長期間の参照を使用するには、 コンストラクターに `true` を指定します。 + + オブジェクトの型に メソッドがない場合は、短期間の弱い参照の機能が適用され、弱い参照の有効期間は、ターゲットが収集されるまでの間になります。ターゲットの収集は、ファイナライザーの実行後は、いつでも起きる可能性があります。 + + 強い参照を確立し、オブジェクトを再び使用するには、 プロパティをそのオブジェクトの型にキャストします。 プロパティによって `null` が返される場合は、そのオブジェクトは収集済みです。それ以外の場合は、アプリケーションがそのオブジェクトに対する強い参照を再び取得しているため、使用し続けることができます。 + +## 弱い参照を使用するにあたってのガイドライン + 終了処理後のオブジェクトの状態が予測できないため、長期間の弱い参照は必要な場合にのみ使用してください。 + + 小さいオブジェクトに対しては、弱い参照を使用しないでください。ポインター自体が同程度の大きさであるか、より大きい場合があるためです。 + + メモリ管理の問題の自動的な解決方法として、弱い参照を使用しないでください。 代わりに、アプリケーションのオブジェクトを処理するための効果的なキャッシュ ポリシーを作成します。 + +## 参照 + [Garbage Collection](../../../docs/standard/garbage-collection/index.md) \ No newline at end of file diff --git a/docs/standard/generics/TOC.md b/docs/standard/generics/TOC.md new file mode 100644 index 00000000000..c8c791c2816 --- /dev/null +++ b/docs/standard/generics/TOC.md @@ -0,0 +1,5 @@ +# [ジェネリック インターフェイス](interfaces.md) +# [.NET Framework のジェネリック コレクション](collections.md) +# [配列とリストの操作に使用する汎用デリゲート](delegates-for-manipulating-arrays-and-lists.md) +# [ジェネリック](index.md) +# [共変性と反変性](covariance-and-contravariance.md) diff --git a/docs/standard/generics/collections.md b/docs/standard/generics/collections.md new file mode 100644 index 00000000000..c6080f15733 --- /dev/null +++ b/docs/standard/generics/collections.md @@ -0,0 +1,59 @@ +--- +title: ".NET Framework のジェネリック コレクション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ジェネリック コレクション [.NET Framework]" + - "ジェネリック [.NET Framework], コレクション" +ms.assetid: 5b646751-6ab7-465c-916c-b1a76aefa9f5 +caps.latest.revision: 8 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 8 +--- +# .NET Framework のジェネリック コレクション +このトピックでは、.NET Framework のジェネリック コレクション クラスとその他のジェネリック型について概説します。 + +## .NET Framework のジェネリック コレクション + .NET Framework クラス ライブラリでは、 および の名前空間に多数のジェネリック コレクション クラスが用意されています。 これらのクラスについて詳しくは、「[一般的に使用されるコレクション型](../../../docs/standard/collections/commonly-used-collection-types.md)」を参照してください。 + +### System.Collections.Generic + ジェネリック コレクション型の多くは、非ジェネリック型に直接類似しています。 は、 のジェネリック バージョンです。これは列挙体のために ではなくジェネリック構造体 を使用します。 + + のジェネリック バージョンです。 ジェネリックの および クラスには、非ジェネリックのバージョンに対応するものがあります。 + + には、ジェネリックおよび非ジェネリックのバージョンがあります。 どちらのバージョンも、ディクショナリとリストのハイブリッドです。 ジェネリック クラスは純粋なディクショナリであり、対応する非ジェネリックのバージョンはありません。 + + ジェネリック クラスは、実際のリンク リストです。 これには、対応する非ジェネリックのバージョンはありません。 + +### System.Collections.ObjectModel + ジェネリック クラスは、独自のジェネリック コレクション型を派生させるための基本クラスを提供します。 クラスは、 ジェネリック インターフェイスを実装する任意の型から、読み取り専用のコレクションを生成するための簡単な方法を提供します。 ジェネリック クラスは、独自のキーを含むオブジェクトを格納するための方法を提供します。 + +## その他のジェネリック型 + ジェネリック構造体により、`null` が割り当て可能であるかのように値型を使用できます。 これは、値型が含まれるフィールドが欠落している可能性のあるデータベース クエリで作業するときに便利です。 ジェネリック型パラメーターには、任意の値型を指定できます。 + +> [!NOTE] +> C\# には null 許容型の構文があるので、その言語では を明示的に使用する必要はありません。 + + ジェネリック構造体は、任意の型の 0 から始まる 1 次元の配列内で、要素の範囲を区切る方法を提供します。 ジェネリック型パラメーターは、配列の要素の型です。 + + ジェネリック デリゲートにより、イベントが [!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] によって使用されるイベント処理パターンに従う場合に、イベントを処理するためにデリゲート型を宣言する必要がなくなります。 たとえば、イベントのデータを保持するために、 から派生した `MyEventArgs` クラスを作成したとします。 その場合、イベントを次のように宣言できます。 + + [!code-cpp[Conceptual.Generics.Overview#7](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.generics.overview/cpp/source2.cpp#7)] + [!code-csharp[Conceptual.Generics.Overview#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.generics.overview/cs/source2.cs#7)] + [!code-vb[Conceptual.Generics.Overview#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.generics.overview/vb/source2.vb#7)] + +## 参照 + + + [ジェネリック](../../../docs/standard/generics/index.md) + [配列とリストの操作に使用する汎用デリゲート](../../../docs/standard/generics/delegates-for-manipulating-arrays-and-lists.md) + [ジェネリック インターフェイス](../../../docs/standard/generics/interfaces.md) \ No newline at end of file diff --git a/docs/standard/generics/covariance-and-contravariance.md b/docs/standard/generics/covariance-and-contravariance.md new file mode 100644 index 00000000000..95739285285 --- /dev/null +++ b/docs/standard/generics/covariance-and-contravariance.md @@ -0,0 +1,194 @@ +--- +title: "ジェネリックの共変性と反変性 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ジェネリックの共変性と反変性" + - "ジェネリック型パラメーター" + - "ジェネリック, 共変性と反変性" + - "ジェネリック, 分散" +ms.assetid: 2678dc63-c7f9-4590-9ddc-0a4df684d42e +caps.latest.revision: 24 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 24 +--- +# ジェネリックの共変性と反変性 + 共変性と反変性は、元の指定よりも弱い派生型 \(具体性が低い\) と強い派生型 \(具体性が高い\) を使用する能力を示す用語です。 ジェネリック型パラメーターは、ジェネリック型の代入と使用の柔軟性を向上させるために、共変性と反変性をサポートしています。 型システムにおいて、共変性、反変性、および不変性は、次のように定義されます。 各例では、基底クラスが `Base` という名前であり、派生クラスが `Derived` という名前であるとします。 + +- `Covariance` + + 最初に指定された型よりも強い派生型を使用できるようにします。 + + `IEnumerable` \(Visual Basic では `IEnumerable(Of Derived)`\) のインスタンスを `IEnumerable` 型の変数に割り当てることができます。 + +- `Contravariance` + + 最初に指定された型よりも一般的な \(弱い派生の\) 型を使用できるようにします。 + + `IEnumerable` \(Visual Basic では `IEnumerable(Of Base)`\) のインスタンスを `IEnumerable` 型の変数に割り当てることができます。 + +- `Invariance` + + 最初に指定された型のみを使用できることを意味します。そのため、不変のジェネリック型パラメーターは、共変でも反変でもありません。 + + `IEnumerable` \(Visual Basic では `IEnumerable(Of Base)`\) のインスタンスを `IEnumerable` 型の変数に割り当てることはできず、その逆もできません。 + + 共変の型パラメーターでは、次のコードで示されているように、通常の [ポリモーフィズム](../Topic/Polymorphism%20\(C%23%20Programming%20Guide\).md) と非常によく似た代入を実行できます。 + + [!code-csharp[CoContraSimpleIEnum#1](../../../samples/snippets/csharp/VS_Snippets_CLR/cocontrasimpleienum/cs/example.cs#1)] + [!code-vb[CoContraSimpleIEnum#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/cocontrasimpleienum/vb/example.vb#1)] + + クラスは インターフェイスを実装するため、`List` \(Visual Basic では `List(Of Derived)`\) は `IEnumerable` を実装します。 共変の型パラメーターが後の処理を行います。 + + 一方、反変性は直感に反するように見えます。 次の例では、`Action` 型 \(Visual Basic では `Action(Of Base)`\) のデリゲートを作成し、次にそのデリゲートを `Action` 型の変数に代入します。 + + [!code-csharp[CoContraSimpleAction#1](../../../samples/snippets/csharp/VS_Snippets_CLR/cocontrasimpleaction/cs/example.cs#1)] + [!code-vb[CoContraSimpleAction#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/cocontrasimpleaction/vb/example.vb#1)] + + これは逆方向のように見えますが、コンパイルして実行できるタイプ セーフ コードです。 ラムダ式は代入先のデリゲートに一致するため、`Base` 型のパラメーターを 1 つ受け取って戻り値を返さないメソッドを定義します。`Action` デリゲートの型パラメーター `T` は反変であるため、結果として得られたデリゲートは 型の変数に代入できます。`T` はパラメーター型を指定するため、コードはタイプ セーフです。`Action` 型のデリゲートが `Action` 型のデリゲートであるかのように呼び出される場合、その引数は `Derived` 型である必要があります。 メソッドのパラメーターは `Base` 型であるため、この引数は、基になるメソッドに常に安全に渡すことができます。 + + 一般に、共変の型パラメーターはデリゲートの戻り値の型として使用でき、反変の型パラメーターはパラメーター型として使用できます。 インターフェイスについては、共変の型パラメーターをインターフェイスのメソッドの戻り値の型として使用でき、反変の型パラメーターをインターフェイスのメソッドのパラメーター型として使用できます。 + + 共変性と反変性は、"分散" と総称されます。 共変または反変としてマークされていないジェネリック型パラメーターは、*不変*と呼ばれます。 共通言語ランタイムにおける分散について、簡潔な概要を示します。 + +- [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] のバリアント型パラメーターは、ジェネリック インターフェイス型と汎用デリゲート型に制限されています。 + +- ジェネリック インターフェイス型や汎用デリゲート型では、共変と反変の両方の型パラメーターを使用できます。 + +- 分散が適用されるのは参照型のみです。バリアント型パラメーターに対して値型を指定すると、その型パラメーターが、結果の構築型で不変になります。 + +- 分散は、デリゲートの組み合わせには適用されません。 つまり、`Action` 型と `Action` 型 \(Visual Basic では `Action(Of Derived)` と `Action(Of Base)`\) の 2 つのデリゲートがある場合、結果はタイプ セーフになりますが、2 つ目のデリゲートに 1 つ目のデリゲートを組み合わせることはできません。 分散によって 2 つ目のデリゲートを `Action` 型の変数に代入できますが、デリゲートを組み合わせることができるのは、それらの型が完全に一致している場合だけです。 + + 以降では、共変と反変の型パラメーターについて詳しく説明します。 + +- [共変の型パラメーターを持つジェネリック インターフェイス](#InterfaceCovariantTypeParameters) + +- [反変のジェネリック型パラメーターを持つジェネリック インターフェイス](#InterfaceCovariantTypeParameters) + +- [バリアント型パラメーターを持つ汎用デリゲート](#DelegateVariantTypeParameters) + +- [バリアント ジェネリック インターフェイスとバリアント汎用デリゲートの定義](#DefiningVariantTypeParameters) + +- [バリアント ジェネリック インターフェイス型とバリアント汎用デリゲート型の一覧](#VariantList) + + +## 共変の型パラメーターを持つジェネリック インターフェイス + [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降には、共変の型パラメーターを持つジェネリック インターフェイスがいくつかあります \( など\)。 これらのインターフェイスのすべての型パラメーターは共変のみであるため、型パラメーターはメンバーの戻り値の型だけに使用されます。 + + 共変の型パラメーターの例を以下に示します。 ここでは 2 つの型が定義されています。`Base` には、`PrintBases` \(Visual Basic では `IEnumerable`\) を受け取って要素を出力する `IEnumerable(Of Base)` という静的メソッドがあります。`Derived` は `Base` を継承します。 この例は、空の `List` \(Visual Basic では `List(Of Derived)`\) を作成し、その型を `PrintBases` に渡して、キャストすることなく、`IEnumerable` 型の変数に代入できることを示しています。 は、共変の型パラメーターを 1 つ持つ を実装します。`IEnumerable` のインスタンスを `IEnumerable` の代わりに使用できるのは、この共変の型パラメーターがあるためです。 + + [!code-csharp[CoContravarianceInClrGenericI#1](../../../samples/snippets/csharp/VS_Snippets_CLR/cocontravarianceinclrgenerici/cs/example.cs#1)] + [!code-vb[CoContravarianceInClrGenericI#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/cocontravarianceinclrgenerici/vb/example.vb#1)] + + [ページのトップへ](#top) + + +## 反変のジェネリック型パラメーターを持つジェネリック インターフェイス + [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降には、反変の型パラメーターを持つジェネリック インターフェイスがいくつかあります \( など\)。 これらのインターフェイスの型パラメーターは反変のみであるため、これらの型パラメーターは、インターフェイスのメンバーのパラメーター型としてのみ使用されます。 + + 反変の型パラメーターの例を以下に示します。 この例では、`MustInherit` プロパティを使用して抽象 \(Visual Basic では `Shape`\) `Area` クラスを定義しています。 また、`ShapeAreaComparer` \(Visual Basic では `IComparer`\) を実装する `IComparer(Of Shape)` クラスを定義しています。 メソッドの実装は `Area` プロパティの値に基づくため、`ShapeAreaComparer` を使用して、領域で `Shape` オブジェクトを並べ替えることができます。 + + `Circle` クラスは `Shape` を継承し、`Area` をオーバーライドします。 この例では、 \(Visual Basic では `Circle`\) を受け取るコンストラクターを使用して、`IComparer` オブジェクトの `IComparer(Of Circle)` を作成します。 ただし、`IComparer` を渡す代わりに、`ShapeAreaComparer` を実装する `IComparer` オブジェクトを渡します。 この例では、`Shape` ジェネリック インターフェイスの型パラメーターは反変であるため、コードがより強い派生型 \(`Circle`\) の比較子を要求している場合に、より弱い派生型 \(\) の比較子を渡すことができます。 + + 新しい `Circle` オブジェクトを `SortedSet` に追加すると、新しい要素が既存の要素と比較されるたびに `IComparer.Compare` オブジェクトの `IComparer(Of Shape).Compare` メソッド \(Visual Basic では `ShapeAreaComparer` メソッド\) が呼び出されます。 このメソッドのパラメーターの型 \(`Shape`\) は、渡される型 \(`Circle`\) より弱い派生型なので、この呼び出しはタイプ セーフです。 反変性により、`ShapeAreaComparer` で、単一の型のコレクションおよび `Shape` から派生した型の混合コレクションを並べ替えることができるようになります。 + + [!code-csharp[CoContravarianceInClrGenericI2#1](../../../samples/snippets/csharp/VS_Snippets_CLR/cocontravarianceinclrgenerici2/cs/example.cs#1)] + [!code-vb[CoContravarianceInClrGenericI2#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/cocontravarianceinclrgenerici2/vb/example.vb#1)] + + [ページのトップへ](#top) + + +## バリアント型パラメーターを持つ汎用デリゲート + [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] では、`Func` などの 汎用デリゲートに、共変の戻り値の型と反変のパラメーターの型があります。`Action` などの 汎用デリゲートには、反変のパラメーターの型があります。 したがって、より強い派生型のパラメーターと、より弱い派生型の戻り値 \(`Func` 汎用デリゲートの場合\) を持つ変数に、デリゲートを代入できます。 + +> [!NOTE] +> `Func` 汎用デリゲートの最後のジェネリック型パラメーターは、デリゲート シグネチャの戻り値の型を指定します。 他のジェネリック型パラメーターは反変 \(`out` キーワード\) ですが、この最後のジェネリック型パラメーターは共変 \(`in` キーワード\) です。 + + 次に例を示します。 コードの最初の部分では、`Base` という名前のクラスと、`Derived` を継承する `Base` という名前のクラスを定義しています。その他に、`static` という名前の `Shared` \(Visual Basic では `MyMethod`\) メソッドを持つクラスも定義されています。 このメソッドは、`Base` のインスタンスを受け取り、`Derived` のインスタンスを返します \(引数が `Derived` のインスタンスの場合は、それが `MyMethod` によって返されます。引数が `Base` のインスタンスの場合は、`MyMethod` によって `Derived` の新しいインスタンスが返されます\)。`Main()` では、`Func` を表す `Func(Of Base, Derived)` \(Visual Basic では `MyMethod`\) のインスタンスを作成して、変数 `f1` に格納しています。 + + [!code-csharp[CoContravarianceDelegates#2](../../../samples/snippets/csharp/VS_Snippets_CLR/cocontravariancedelegates/cs/example.cs#2)] + [!code-vb[CoContravarianceDelegates#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/cocontravariancedelegates/vb/example.vb#2)] + + コードの 2 番目の部分は、このデリゲートを `Func` \(Visual Basic では `Func(Of Base, Base)`\) 型の変数に代入できることを示しています。これは、戻り値の型が共変であるためです。 + + [!code-csharp[CoContravarianceDelegates#3](../../../samples/snippets/csharp/VS_Snippets_CLR/cocontravariancedelegates/cs/example.cs#3)] + [!code-vb[CoContravarianceDelegates#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/cocontravariancedelegates/vb/example.vb#3)] + + コードの 3 番目の部分は、このデリゲートを `Func` \(Visual Basic では `Func(Of Derived, Derived)`\) 型の変数に代入できることを示しています。これは、パラメーターの型が反変であるためです。 + + [!code-csharp[CoContravarianceDelegates#4](../../../samples/snippets/csharp/VS_Snippets_CLR/cocontravariancedelegates/cs/example.cs#4)] + [!code-vb[CoContravarianceDelegates#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/cocontravariancedelegates/vb/example.vb#4)] + + コードの最後の部分は、このデリゲートを `Func` \(Visual Basic では `Func(Of Derived, Base)`\) 型の変数に代入できることを示しています。これは、反変のパラメーターの型と共変の戻り値の型の両方の効果の組み合わせによるものです。 + + [!code-csharp[CoContravarianceDelegates#5](../../../samples/snippets/csharp/VS_Snippets_CLR/cocontravariancedelegates/cs/example.cs#5)] + [!code-vb[CoContravarianceDelegates#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/cocontravariancedelegates/vb/example.vb#5)] + +### 汎用デリゲートと非汎用デリゲートの分散 + 上のコードでは、`MyMethod` のシグネチャが、構築された汎用デリゲート `Func` \(Visual Basic では `Func(Of Base, Derived)`\) のシグネチャと厳密に一致しています。 この例から、より強い派生型のパラメーターとより弱い派生型の戻り値を持つ変数やメソッド パラメーターにこの汎用デリゲートを格納できることと、そのためには、すべてのデリゲート型が汎用デリゲート型 から構築されている必要があることがわかります。 + + これは重要なポイントです。 汎用デリゲートの型パラメーターの共変性と反変性の効果は、通常のデリゲート バインディングの共変性と反変性の効果 \(「[デリゲートの分散](../Topic/Variance%20in%20Delegates%20\(C%23%20and%20Visual%20Basic\).md)」を参照\) に似ていますが、 デリゲート バインディングの分散は、バリアント型パラメーターを持つ汎用デリゲート型だけでなく、すべてのデリゲート型で使用できます。 さらに、デリゲート バインディングの分散では、より限定的なパラメーターの型とより限定的でない戻り値の型を持つ任意のデリゲートにメソッドをバインドできますが、汎用デリゲートの代入を使用できるのは、両方のデリゲート型が同じジェネリック型定義から構築されている場合のみです。 + + デリゲート バインディングの分散とジェネリック型パラメーターの分散の両方の効果を組み合わせた例を以下に示します。 ここでは、3 つの型を含む型階層を定義しています。`Type1` が最も弱い派生型で、`Type3` が最も強い派生型です。 通常のデリゲート バインディングの分散を使用して、パラメーターの型が `Type1` で戻り値の型が `Type3` のメソッドを、パラメーターの型が `Type2` で戻り値の型が `Type2` の汎用デリゲートにバインドしています。 その結果、得られた汎用デリゲートを、ジェネリック型パラメーターの共変性と反変性を使用して、`Type3` 型のパラメーターと `Type1` 型の戻り値を持つ汎用デリゲート型の変数に代入しています。 2 回目の代入では、変数型とデリゲート型の両方が同じジェネリック型定義 \(この場合は \) から構築されている必要があります。 + + [!code-csharp[CoContravarianceDelegatesGenRelaxed#1](../../../samples/snippets/csharp/VS_Snippets_CLR/cocontravariancedelegatesgenrelaxed/cs/example.cs#1)] + [!code-vb[CoContravarianceDelegatesGenRelaxed#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/cocontravariancedelegatesgenrelaxed/vb/example.vb#1)] + + [ページのトップへ](#top) + + +## バリアント ジェネリック インターフェイスとバリアント汎用デリゲートの定義 + [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] 以降では、Visual Basic と C\# の両方で、インターフェイスやデリゲートのジェネリック型パラメーターを共変または反変としてマークするためのキーワードがサポートされています。 + +> [!NOTE] +> ジェネリック型パラメーターの分散注釈は .NET Framework Version 2.0 以降の共通言語ランタイムでサポートされていますが、[!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] の前までは、クラスを [Ilasm.exe \(IL アセンブラー\)](../../../docs/framework/tools/ilasm-exe-il-assembler.md) でコンパイルするか、動的アセンブリに出力することにより、Microsoft Intermediate Language \(MSIL\) を使用してこれらの注釈を含むジェネリック クラスを定義する必要がありました。 + + 共変の型パラメーターをマークするには、`out` キーワード \(Visual Basic では `Out` キーワード、[MSIL アセンブラー](../../../docs/framework/tools/ilasm-exe-il-assembler.md)では `+`\) を使用します。 共変の型パラメーターは、インターフェイスに属するメソッドの戻り値として使用したり、デリゲートの戻り値の型として使用したりできます。 インターフェイス メソッドのジェネリック型制約として使用することはできません。 + +> [!NOTE] +> インターフェイスのメソッドに汎用デリゲート型のパラメーターがある場合は、インターフェイス型の共変の型パラメーターを使用してデリゲート型の反変の型パラメーターを指定できます。 + + 反変の型パラメーターをマークするには、`in` キーワード \(Visual Basic では `In` キーワード、[MSIL アセンブラー](../../../docs/framework/tools/ilasm-exe-il-assembler.md)では `-`\) を使用します。 反変の型パラメーターは、インターフェイスに属するメソッドのパラメーターの型として使用したり、デリゲートのパラメーターの型として使用したりできます。 インターフェイス メソッドのジェネリック型制約として使用することもできます。 + + バリアント型パラメーターを持つことができるのは、インターフェイス型とデリゲート型だけです。 インターフェイス型やデリゲート型は、共変と反変の両方の型パラメーターを持つことができます。 + + Visual Basic と C\# では、共変および反変の型パラメーターの使用規則に違反したり、インターフェイスとデリゲート以外の型の型パラメーターに共変性や反変性の注釈を追加したりすることは許可されません。[MSIL アセンブラー](../../../docs/framework/tools/ilasm-exe-il-assembler.md)ではそのようなチェックは行われませんが、規則に違反する型を読み込もうとすると がスローされます。 + + 詳細とコード例については、「[ジェネリック インターフェイスの分散](../Topic/Variance%20in%20Generic%20Interfaces%20\(C%23%20and%20Visual%20Basic\).md)」を参照してください。 + + [ページのトップへ](#top) + + +## バリアント ジェネリック インターフェイス型とバリアント汎用デリゲート型の一覧 + 共変または反変、あるいはその両方の型パラメーターを持つ [!INCLUDE[net_v40_short](../../../includes/net-v40-short-md.md)] のインターフェイス型とデリゲート型を以下に示します。 + +|型|共変の型パラメーター|反変の型パラメーター| +|-------|----------------|----------------| +|||はい| +|||はい| +||はい|はい| +||はい|| +||はい|はい| +|||はい| +|||はい| +|||はい| +||はい|| +||はい|| +|||はい| +||はい|| +||はい|| +||はい|| +||はい|| + +## 参照 + [共変性と反変性](../Topic/Covariance%20and%20Contravariance%20\(C%23%20and%20Visual%20Basic\).md) + [デリゲートの分散](../Topic/Variance%20in%20Delegates%20\(C%23%20and%20Visual%20Basic\).md) \ No newline at end of file diff --git a/docs/standard/generics/delegates-for-manipulating-arrays-and-lists.md b/docs/standard/generics/delegates-for-manipulating-arrays-and-lists.md new file mode 100644 index 00000000000..25c3e1d3cf8 --- /dev/null +++ b/docs/standard/generics/delegates-for-manipulating-arrays-and-lists.md @@ -0,0 +1,54 @@ +--- +title: "配列とリストの操作に使用する汎用デリゲート | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "配列 [.NET Framework], 汎用デリゲート" + - "チェーン (デリゲートを)" + - "デリゲート [.NET Framework], 汎用デリゲート" + - "汎用デリゲート [.NET Framework]" + - "ジェネリック [.NET Framework], デリゲート" + - "リスト [.NET Framework], 汎用デリゲート" +ms.assetid: 416be383-cc61-4102-9b1b-88b51adb963e +caps.latest.revision: 9 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 配列とリストの操作に使用する汎用デリゲート +ここでは、配列またはコレクションの要素に対して実行される変換、検索述語、およびアクションの汎用デリゲートの概要について説明します。 + +## 配列とリストの操作に使用する汎用デリゲート + 汎用デリゲートは、指定した型の要素に対して何らかのアクションを実行するメソッドを表します。 要素に対して必要なアクションを実行するメソッドを作成し、そのメソッドを表す デリゲートのインスタンスを作成した後、配列とデリゲートを静的ジェネリック メソッド に渡すことができます。 このメソッドは、配列の各要素に対して呼び出されます。 + + ジェネリック クラスにも、 デリゲートを使用する メソッドが用意されています。 このメソッドはジェネリックではありません。 + +> [!NOTE] +> これは、ジェネリック型とジェネリック メソッドに関する興味深い点です。 はジェネリック型ではないため、 メソッドは static \(Visual Basic では `Shared`\) かつジェネリックであることが必要です。 に型を指定して動作させることができるのは、このメソッドが独自の型パラメーター リストを保持しているからです。 これに対して、非ジェネリック メソッドは ジェネリック クラスに属しています。したがって、このメソッドは、このクラスの型パラメーターを使用しているにすぎません。 このクラスは厳密に型指定されているため、メソッドをインスタンス メソッドにすることができます。 + + 汎用デリゲートは、特定の要素が定義されている基準を満たしているかどうかを判断するメソッドを表します。 の静的ジェネリック メソッドである 、および でこのデリゲートを使用することにより、要素または要素のセットを検索できます。 + + は、 ジェネリック クラスの対応する非ジェネリック インスタンス メソッドも使用します。 + + 汎用デリゲートを使用すると、ネイティブな並べ替え順序のない配列またはリストの要素の並べ替え順序を指定したり、ネイティブな並べ替え順序をオーバーライドしたりできます。 比較を実行するメソッドを作成し、そのメソッドを表す デリゲートのインスタンスを作成した後、配列とデリゲートを [Array.Sort\\(T\ 静的ジェネリック メソッドに渡します。 ジェネリック クラスには、対応するインスタンス メソッド オーバーロードである が用意されています。 + + 汎用デリゲートを使用すると、2 つの型の間での変換を定義し、一方の型の配列をもう一方の型の配列に変換したり、一方の型のリストをもう一方の型のリストに変換したりできます。 既存のリストの要素を新しい型に変換するメソッドを作成し、そのメソッドを表すデリゲート インスタンスを作成したら、 静的ジェネリック メソッドを使用して、元の配列から新しい型の配列を生成します。また、元のリストから新しい型のリストを生成する場合は、 ジェネリック インスタンス メソッドを使用します。 + +### デリゲートのチェーン + これらのデリゲートを使用するメソッドの多くは、別のメソッドに渡すことのできる配列またはリストを返します。 たとえば、配列の特定の要素を選択して新しい型に変換し、新しい配列に保存すると、 ジェネリック メソッドによって返される配列を ジェネリック メソッドに渡すことができます。 新しい要素の型にネイティブな並べ替え順序がない場合は、 ジェネリック メソッドによって返された配列を [Sort\\(T\ ジェネリック メソッドに渡すことができます。 + +## 参照 + + + [ジェネリック](../../../docs/standard/generics/index.md) + [.NET Framework のジェネリック コレクション](../../../docs/standard/generics/collections.md) + [ジェネリック インターフェイス](../../../docs/standard/generics/interfaces.md) + [共変性と反変性](../../../docs/standard/generics/covariance-and-contravariance.md) \ No newline at end of file diff --git a/docs/standard/generics/index.md b/docs/standard/generics/index.md new file mode 100644 index 00000000000..309e9198ff8 --- /dev/null +++ b/docs/standard/generics/index.md @@ -0,0 +1,184 @@ +--- +title: ".NET Framework におけるジェネリック | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ジェネリック メソッド, 型推論" + - "ジェネリック [.NET Framework], コレクション" + - "ジェネリック インターフェイス [.NET Framework]" + - "構築ジェネリック型" + - "入れ子になったジェネリック型" + - "ジェネリック型定義" + - "ジェネリック クラス [.NET Framework]" + - "ジェネリック [.NET Framework], インターフェイス" + - "ジェネリック [.NET Framework], 概要" + - "ジェネリック [.NET Framework]" + - "ジェネリック コレクション [.NET Framework]" + - "汎用デリゲート [.NET Framework]" + - "ジェネリック型引数" + - "ジェネリック [.NET Framework], デリゲート" + - "ジェネリック [.NET Framework], 機能" + - "制約 [.NET Framework]" + - "ジェネリック型" + - "ジェネリック型パラメーター" +ms.assetid: 2994d786-c5c7-4666-ab23-4c83129fe39c +caps.latest.revision: 23 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 23 +--- +# .NET Framework におけるジェネリック + ジェネリックを使用すると、操作対象のデータ型に厳密に合わせてメソッド、クラス、構造体、またはインターフェイスを調整できます。 たとえば、任意の型のキーと値が許可される クラスを使用する代わりに、 ジェネリック クラスを使用して、キーに使用できる型と、値に使用できる型を指定できます。 ジェネリックの利点として、コードの再利用性やタイプ セーフの向上などを挙げることができます。 + + このトピックでは、.NET Framework におけるジェネリックの概要と、ジェネリック型またはジェネリック メソッドの概要について説明します。 このチュートリアルは、次のセクションで構成されています。 + +- [ジェネリックの定義と使用](#defining_and_using_generics) + +- [ジェネリックの用語](#generics_terminology) + +- [クラス ライブラリと言語サポート](#class_library_and_language_support) + +- [入れ子にされた型とジェネリック](#nested_types_and_generics) + +- [関連トピック](#related_topics) + +- [参照](#reference) + + +## ジェネリックの定義と使用 + ジェネリックは、格納または使用される 1 つ以上の型のプレースホルダー \(型パラメーター\) を持つクラス、構造体、インターフェイス、およびメソッドです。 ジェネリック コレクション クラスでは、格納するオブジェクトの型のプレースホルダーとして、型パラメーターを使用することがあります。型パラメーターは、そのフィールドの型やそのメソッドのパラメーター型として出現します。 ジェネリック メソッドでは、その戻り値の型として、またはいずれかの仮パラメーターの型として、型パラメーターを使用します。 単純なジェネリック クラスの定義を次のコードに示します。 + + [!code-cpp[Conceptual.Generics.Overview#2](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.generics.overview/cpp/source.cpp#2)] + [!code-csharp[Conceptual.Generics.Overview#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.generics.overview/cs/source.cs#2)] + [!code-vb[Conceptual.Generics.Overview#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.generics.overview/vb/source.vb#2)] + + ジェネリック クラスのインスタンスを作成する場合は、型パラメーターを置き換える実際の型を指定します。 これで、構築されたジェネリック クラスと呼ばれる新しいジェネリック クラスが確立され、この中では、型パラメーターが、出現するすべての場所で、選択した型に置き換えられています。 次のコードに示すように、結果は選択した型に合わせたタイプ セーフなクラスになります。 + + [!code-cpp[Conceptual.Generics.Overview#3](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.generics.overview/cpp/source.cpp#3)] + [!code-csharp[Conceptual.Generics.Overview#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.generics.overview/cs/source.cs#3)] + [!code-vb[Conceptual.Generics.Overview#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.generics.overview/vb/source.vb#3)] + + +### ジェネリックの用語 + .NET Framework におけるジェネリックの説明では、次の用語が使用されます。 + +- *ジェネリック型定義*は、テンプレートとして機能するクラス、構造体、またはインターフェイスの宣言で、格納または使用できる型のプレースホルダーを含みます。 たとえば、 クラスには、キーと値の 2 つの型を含めることができます。 ジェネリック型定義は単なるテンプレートであるため、ジェネリック型定義のクラス、構造体、またはインターフェイスのインスタンスを作成することはできません。 + +- *ジェネリック型パラメーター* \(または*型パラメーター*\) は、ジェネリック型定義またはジェネリック メソッド定義のプレースホルダーです。 ジェネリック型には、そのキーと値の型を表す 2 つの型パラメーター `TKey` と `TValue` があります。 + +- *構築ジェネリック型* \(または*構築型*\) は、ジェネリック型定義のジェネリック型パラメーターに型を指定することによって得られる結果です。 + +- *ジェネリック型引数*は、ジェネリック型パラメーターを置き換える任意の型です。 + +- 一般的な用語である*ジェネリック型*には、構築型とジェネリック型定義の両方が含まれます。 + +- ジェネリック型パラメーターの*共変性*と*反変性*を使用すると、型引数がターゲットの構築型よりも強い派生型 \(共変性\) または弱い派生型 \(反変性\) である構築ジェネリック型を使用できます。 共変性と反変性は、"分散" と総称されます。 詳細については、「[共変性と反変性](../../../docs/standard/generics/covariance-and-contravariance.md)」を参照してください。 + +- *制約*は、ジェネリック型パラメーターに適用される制限です。 たとえば、型パラメーターを、 ジェネリック インターフェイスを実装する型に制限して、型のインスタンスを並べ替えることができるようにできます。 また、型パラメーターを、特定の基本クラスや既定のコンストラクターを持つ型、または参照型や値型に制約できます。 ジェネリック型のユーザーは、制約を満たさない型引数に置き換えることはできません。 + +- *ジェネリック メソッド定義*は、ジェネリック型パラメーターのリストと仮パラメーターのリストの 2 つのパラメーター リストを持つメソッドです。 次のコードに示すように、型パラメーターは、戻り値の型または仮パラメーターの型として指定できます。 + + [!code-cpp[Conceptual.Generics.Overview#4](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.generics.overview/cpp/source.cpp#4)] + [!code-csharp[Conceptual.Generics.Overview#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.generics.overview/cs/source.cs#4)] + [!code-vb[Conceptual.Generics.Overview#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.generics.overview/vb/source.vb#4)] + + ジェネリック メソッドはジェネリック型または非ジェネリック型で指定できます。 メソッドがジェネリック型に属している、またはメソッドに仮パラメーターがあり、その型が外側の型のジェネリック パラメーターであるという理由だけでは、そのメソッドがジェネリックであるとは言えないことに注意してください。 メソッドは、独自の型パラメーター リストを持つ場合にのみジェネリックとなります。 次のコードでは、`G` メソッドのみがジェネリックです。 + + [!code-cpp[Conceptual.Generics.Overview#5](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.generics.overview/cpp/source.cpp#5)] + [!code-csharp[Conceptual.Generics.Overview#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.generics.overview/cs/source.cs#5)] + [!code-vb[Conceptual.Generics.Overview#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.generics.overview/vb/source.vb#5)] + + [ページのトップへ](#top) + + +## ジェネリックの利点と欠点 + ジェネリック コレクションやジェネリック デリゲートを使用することには多くの利点があります。 + +- インライン関数はタイプ セーフです。 ジェネリックによって、タイプ セーフの負担がユーザーからコンパイラに移ります。 コンパイル時に正しいデータ型が適用されるため、これをテストするためのコードを記述する必要はありません。 型キャストの必要性や、ランタイム エラーが発生する可能性が減少します。 + +- コードは少なければ少ないほど再利用が容易になります。 基本型から継承してメンバーをオーバーライドする必要はありません。 たとえば、 はすぐに使える状態になっています。 たとえば、次の変数宣言で文字列のリンク リストを作成できます。 + + [!code-cpp[HowToGeneric#24](../../../samples/snippets/cpp/VS_Snippets_CLR/HowToGeneric/cpp/source2.cpp#24)] + [!code-csharp[HowToGeneric#24](../../../samples/snippets/csharp/VS_Snippets_CLR/HowToGeneric/CS/source2.cs#24)] + [!code-vb[HowToGeneric#24](../../../samples/snippets/visualbasic/VS_Snippets_CLR/HowToGeneric/VB/source2.vb#24)] + +- パフォーマンスが向上します。 通常、ジェネリック コレクション型では、値型をボックス化する必要がないため、値型の格納と操作のパフォーマンスが向上します。 + +- 汎用デリゲートによって、複数のデリゲート クラスを作成せずにタイプ セーフなコールバックを使用できます。 たとえば、 汎用デリゲートを使用すると、特定の型を対象とした独自の検索条件を実装するメソッドを作成し、 などの 型のメソッドと共に自分のメソッドを使用することができます。 + +- ジェネリックによって、動的に生成されるコードが簡略化されます。 動的に生成されるコードでジェネリックを使用する場合、型を生成する必要がありません。 これにより、アセンブリ全体を生成する代わりに軽量の動的メソッドを使用できるシナリオの数が増えます。 詳細については、「方法: 動的メソッドを定義および実行する」および DynamicMethod を参照してください。 + + ジェネリックの制限事項を次に示します。 + +- ジェネリック型は、 などのほとんどの基本クラスから派生できます \(制約を使用して、ジェネリック型パラメーターが のような基本クラスから派生することを要求できます\)。 ただし、[!INCLUDE[dnprdnshort](../../../includes/dnprdnshort-md.md)] では、コンテキスト バインドのジェネリック型はサポートしていません。 ジェネリック型は、 から派生できますが、その型のインスタンスを作成しようとすると、 が発生します。 + +- 列挙型にジェネリック型パラメーターを含めることはできません。 列挙型が、単なる偶然によってジェネリックのみになる可能性はあります \(たとえば、Visual Basic、C\#、または C\+\+ を使用して定義されたジェネリック型に入れ子にされているため\)。 詳細については、「[共通型システム](../../../docs/standard/base-types/common-type-system.md)」の「列挙型」を参照してください。 + +- 軽量の動的メソッドをジェネリックにすることはできません。 + +- Visual Basic、C\#、および C\+\+ で、ジェネリック型に囲まれている入れ子にされた型は、外側のすべての型の型パラメーターに型が割り当てられていない限り、インスタンス化できません。 言い換えると、リフレクションでは、これらの言語を使用して定義されている入れ子にされた型には、その外側のすべての型の型パラメーターが含まれます。 これによって、外側の型の型パラメーターを、入れ子にされた型のメンバー定義で使用できます。 詳細については、「」の「入れ子にされた型」を参照してください。 + + > [!NOTE] + > 動的アセンブリでコードを出力するか [Ilasm.exe \(IL アセンブラー\)](../../../docs/framework/tools/ilasm-exe-il-assembler.md) を使用して定義されている入れ子にされた型に、外側の型の型パラメーターを含める必要はありません。ただし、これらを含んでいない場合、型パラメーターは入れ子にされたクラスのスコープから外れます。 + + 詳細については、「」の「入れ子にされた型」を参照してください。 + + [ページのトップへ](#top) + + +## クラス ライブラリと言語サポート + .NET Framework では、次の名前空間に多数のジェネリック コレクション クラスが用意されています。 + +- 名前空間には、 ジェネリック クラスや ジェネリック クラスなど、.NET Framework で用意されているほとんどのジェネリック コレクション型がカタログされています。 + +- 名前空間には、 ジェネリック クラスなど、クラスのユーザーにオブジェクト モデルを公開するために役立つ追加のジェネリック コレクション型がカタログされています。 + + 並べ替えと等価比較を実装するためのジェネリック インターフェイスは、イベント ハンドラー、変換、および検索述語の汎用デリゲート型と共に、 名前空間に用意されています。 + + ジェネリックのサポートは、ジェネリック型とジェネリック メソッドを調べるために 名前空間に追加され、ジェネリック型とジェネリック メソッドを含む動的アセンブリを出力するために に追加され、さらにジェネリックを含むソース グラフを生成するために に追加されています。 + + 共通言語ランタイムでは、Microsoft Intermediate Language \(MSIL\) のジェネリック型をサポートするために、新しいオペコードとプレフィックスを提供しています \( など\)。 + + Visual C\+\+、C\#、および Visual Basic のすべてで、ジェネリックの定義と使用が完全にサポートされています。 言語サポートの詳細については、「[Visual Basic におけるジェネリック型](../Topic/Generic%20Types%20in%20Visual%20Basic%20\(Visual%20Basic\).md)」、「[ジェネリックの概要](../Topic/Introduction%20to%20Generics%20\(C%23%20Programming%20Guide\).md)」、および「[Overview of Generics in Visual C\+\+](../Topic/Overview%20of%20Generics%20in%20Visual%20C++.md)」を参照してください。 + + [ページのトップへ](#top) + + +## 入れ子にされた型とジェネリック + ジェネリック型に入れ子にされている型は、外側のジェネリック型の型パラメーターに依存している可能性があります。 共通言語ランタイムでは、独自のジェネリック型パラメーターがない場合でも、入れ子にされた型をジェネリックと見なします。 入れ子にされた型のインスタンスを作成するときに、外側のすべてのジェネリック型の型引数を指定する必要があります。 + + [ページのトップへ](#top) + + +## 関連トピック + +|タイトル|説明| +|----------|--------| +|[.NET Framework のジェネリック コレクション](../../../docs/standard/generics/collections.md)|.NET Framework のジェネリック コレクション クラスとその他のジェネリック型について説明します。| +|[配列とリストの操作に使用する汎用デリゲート](../../../docs/standard/generics/delegates-for-manipulating-arrays-and-lists.md)|配列またはコレクションの要素に対して実行される変換、検索述語、およびアクションの汎用デリゲートについて説明します。| +|[ジェネリック インターフェイス](../../../docs/standard/generics/interfaces.md)|ジェネリック型のファミリ間に共通する機能を提供するジェネリック インターフェイスについて説明します。| +|[共変性と反変性](../../../docs/standard/generics/covariance-and-contravariance.md)|ジェネリック型パラメーターの共変性と反変性について説明します。| +|[一般的に使用されるコレクション型](../../../docs/standard/collections/commonly-used-collection-types.md)|ジェネリック型など、.NET Framework のコレクション型の特性と使用シナリオの概要について説明します。| +|[ジェネリック コレクションを使用する状況](../../../docs/standard/collections/when-to-use-generic-collections.md)|ジェネリック コレクション型を使用するケースを決定するための一般的な規則について説明します。| +|[方法: リフレクション出力を使用してジェネリック型を定義する](../../../docs/framework/reflection-and-codedom/how-to-define-a-generic-type-with-reflection-emit.md)|ジェネリック型とジェネリック メソッドを含む動的アセンブリの生成方法について説明します。| +|[Visual Basic におけるジェネリック型](../Topic/Generic%20Types%20in%20Visual%20Basic%20\(Visual%20Basic\).md)|ジェネリック型の使用方法や定義方法に関するトピックなど、Visual Basic ユーザー向けにジェネリック機能について説明します。| +|[ジェネリックの概要](../Topic/Introduction%20to%20Generics%20\(C%23%20Programming%20Guide\).md)|C\# ユーザー向けにジェネリック型の定義方法や使用方法の概要について説明します。| +|[Overview of Generics in Visual C\+\+](../Topic/Overview%20of%20Generics%20in%20Visual%20C++.md)|ジェネリックとテンプレートの違いなど、C\+\+ ユーザー向けにジェネリック機能について説明します。| + + +## 参照 + + + + + + + [ページのトップへ](#top) \ No newline at end of file diff --git a/docs/standard/generics/interfaces.md b/docs/standard/generics/interfaces.md new file mode 100644 index 00000000000..a43f57d6228 --- /dev/null +++ b/docs/standard/generics/interfaces.md @@ -0,0 +1,55 @@ +--- +title: "ジェネリック インターフェイス | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "同等比較 [.NET Framework]" + - "ジェネリック インターフェイス [.NET Framework]" + - "ジェネリック [.NET Framework], インターフェイス" + - "順序付け比較 [.NET Framework]" +ms.assetid: 88bf5b04-d371-4edb-ba38-01ec7cabaacf +caps.latest.revision: 9 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 9 +--- +# ジェネリック インターフェイス +このトピックでは、ジェネリック型のファミリ間に共通する機能を提供するジェネリック インターフェイスについて概説します。 + +## ジェネリック インターフェイス + ジェネリック インターフェイスは、順序付け比較や等価比較、およびジェネリック コレクション型で共有される機能のために、非ジェネリック インターフェイスに対応するタイプ セーフな機能を提供します。 + +> [!NOTE] +> [!INCLUDE[net_v40_long](../../../includes/net-v40-long-md.md)] 以降では、いくつかのジェネリック インターフェイスの型パラメーターが共変または反変としてマークされ、それらのインターフェイスを実装する型をより柔軟に割り当てたり使用したりできます。 「[共変性と反変性](../../../docs/standard/generics/covariance-and-contravariance.md)」を参照してください。 + +### 等価比較と順序付け比較 + 名前空間で、 ジェネリック インターフェイスは、対応する非ジェネリック インターフェイスと同じように、順序付け比較と等価比較の方法をそれぞれ定義します。 型は、そのような比較を実行する機能を提供するために、これらのインターフェイスを実装します。 + + 名前空間で、 ジェネリック インターフェイスは、 ジェネリック インターフェイスを実装しない型のために、順序付け比較または等価比較を定義する方法を提供します。また、実装する型のために、それらの関係を再定義する方法も提供します。 これらのインターフェイスは、多くのジェネリック コレクション クラスのメソッドやコンストラクターで使用されます。 たとえば、ジェネリック オブジェクトを クラスのコンストラクターに渡して、ジェネリック を実装しない型の並べ替え順序を指定することができます。 ジェネリック 実装を使用して配列やリストを並べ替えるための、 ジェネリック静的メソッドと インスタンス メソッドのオーバーロードがあります。 + + ジェネリック クラスは、 ジェネリック インターフェイスの実装の基本クラスを提供し、それぞれの および プロパティによって、既定の順序付け比較と等価比較を提供します。 + +### コレクションの機能 + ジェネリック インターフェイスは、ジェネリック コレクション型の基本インターフェイスです。 これは、要素を追加、削除、コピー、および列挙するための基本的な機能を提供します。 は、ジェネリック と非ジェネリック の両方から継承します。 + + ジェネリック インターフェイスは、インデックス付きの取得のための手段により、 ジェネリック インターフェイスが機能拡張されたものです。 + + ジェネリック インターフェイスは、キー付きの取得のための手段により、 ジェネリック インターフェイスが機能拡張されたものです。 .NET Framework の基本クラス ライブラリのジェネリック ディクショナリ型は、非ジェネリック インターフェイスも実装します。 + + ジェネリック インターフェイスは、ジェネリック列挙子の構造体を提供します。 ジェネリック列挙子によって実装される ジェネリック インターフェイスは、非ジェネリック インターフェイスを継承します。型パラメーター `T` に依存しない および メンバーは、非ジェネリック インターフェイスにのみ表示されます。 つまり、非ジェネリック インターフェイスのコンシューマーはすべて、ジェネリック インターフェイスも使用できます。 + +## 参照 + + + [ジェネリック](../../../docs/standard/generics/index.md) + [.NET Framework のジェネリック コレクション](../../../docs/standard/generics/collections.md) + [配列とリストの操作に使用する汎用デリゲート](../../../docs/standard/generics/delegates-for-manipulating-arrays-and-lists.md) + [共変性と反変性](../../../docs/standard/generics/covariance-and-contravariance.md) \ No newline at end of file diff --git a/docs/standard/globalization-localization/TOC.md b/docs/standard/globalization-localization/TOC.md new file mode 100644 index 00000000000..fc49b03ce56 --- /dev/null +++ b/docs/standard/globalization-localization/TOC.md @@ -0,0 +1,11 @@ +# [カルチャを認識しない配列の操作の実行](performing-culture-insensitive-string-operations-in-arrays.md) +# [推奨される国際対応アプリケーション開発手順](best-practices-for-developing-world-ready-apps.md) +# [カルチャを認識しない文字列操作](culture-insensitive-string-operations.md) +# [カルチャを認識しない文字列比較の実行](performing-culture-insensitive-string-comparisons.md) +# [グローバライズとローカライズ](index.md) +# [カルチャを認識しない大文字と小文字の変更の実行](performing-culture-insensitive-case-changes.md) +# [カルチャを認識しないコレクションの操作の実行](performing-culture-insensitive-string-operations-in-collections.md) +# [カルチャを認識しない文字列操作の実行](performing-culture-insensitive-string-operations.md) +# [グローバリゼーション](globalization.md) +# [ローカリゼーション](localization.md) +# [ローカライズ化の確認](localizability-review.md) diff --git a/docs/standard/globalization-localization/best-practices-for-developing-world-ready-apps.md b/docs/standard/globalization-localization/best-practices-for-developing-world-ready-apps.md new file mode 100644 index 00000000000..afd6da62685 --- /dev/null +++ b/docs/standard/globalization-localization/best-practices-for-developing-world-ready-apps.md @@ -0,0 +1,109 @@ +--- +title: "推奨される国際対応アプリケーション開発手順 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "グローバル アプリケーション、ベスト プラクティス" + - "国際対応アプリケーション、ベスト プラクティス" + - "グローバリゼーション [.NET Framework]、ベスト プラクティス" + - "国際対応のアプリケーション [.NET Framework]、ベスト プラクティス" +ms.assetid: f08169c7-aad8-4ec3-9a21-9ebd3b89986c +caps.latest.revision: 20 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 20 +--- +# 推奨される国際対応アプリケーション開発手順 +このセクションでは、推奨される国際対応アプリケーション開発手順について説明します。 + +## 推奨されるグローバリゼーション手順 + +1. アプリケーションを内部的に Unicode アプリケーションにします。 + +2. データの操作と書式指定には、 名前空間のカルチャ認識クラスを使用します。 + + - 並べ替えには クラスと クラスを使用します。 + + - 文字列比較には、 クラスを使用します。 + + - 日付と時刻の書式指定には、 クラスを使用します。 + + - 数値書式指定には、 クラスを使用します。 + + - グレゴリオ暦とグレゴリオ暦以外の暦には、 クラスまたは特定のカレンダー実装を使用します。 + +3. 状況に応じて、 クラスのカルチャ プロパティ設定を使用します。 日付と時刻や数値の書式指定などの書式指定処理には、 プロパティを使用します。 リソースを取得するには、 プロパティを使用します。 `CurrentCulture` プロパティと `CurrentUICulture` プロパティはスレッドごとに設定できることに注意してください。 + +4. 名前空間のエンコーディング クラスを使用して、アプリケーションでの各種エンコーディングのデータの読み取り操作と書き込み操作を有効にします。 常に ASCII データが使用されるとは限らないことに注意してください。 どのようなテキスト入力でも、各種の言語の文字が使用される可能性があります。 たとえば、アプリケーションは、サーバー名、ディレクトリ名、ファイル名、ユーザー名、および URL に含まれる各種言語の文字を受け入れる必要があります。 + +5. クラスを使用する場合は、セキュリティ上の理由から、このクラスに用意されているエラー検出機能を使用してください。 エラー検出機能を有効にするには、`throwOnInvalidBytes` パラメーターを受け取るコンストラクターを使用してクラスのインスタンスを作成し、このパラメーターの値を `true` に設定します。 + +6. 文字列は、できるだけ全体を 1 つのまとまりとして扱い、個々の文字の連続として処理しないようにします。 これは特に部分文字列の並べ替えと検索で重要です。 これにより、組み合わせ文字の解析に関連する問題の発生を防ぐことができます。 + +7. 名前空間のクラスを使用してテキストを表示します。 + +8. オペレーティング システム間での一貫性を維持するため、ユーザー設定によって がオーバーライドされないようにしてください。 `useUserOverride` パラメーターを受け取る `CultureInfo` コンストラクターを使用し、このパラメーターを `false` に設定してください。 + +9. 国際対応オペレーティング システムで、国際対応データを使用してアプリケーションの機能をテストします。 + +10. 文字列比較操作または大文字と小文字の変更操作の結果に基づいてセキュリティ上の決定を行う場合は、アプリケーションで実行する操作がカルチャに依存しないようにします。 こうすることで、`CultureInfo.CurrentCulture` の値が結果に影響を及ぼすことがなくなります。 カルチャに依存した文字列比較により矛盾した結果がどのように生成されるかを示す例については、[文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md) の「現在のカルチャを使用する文字列比較」を参照してください。 + +## 推奨されるローカリゼーション手順 + +1. ローカライズ可能なすべてのリソースをリソース専用 DLL へ移動します。 ローカライズ可能リソースには、文字列、エラー メッセージ、ダイアログ ボックス、メニュー、埋め込みオブジェクト リソースなどのユーザー インターフェイス要素があります。 + +2. 文字列やユーザー インターフェイス リソースをハードコーディングしないでください。 + +3. ローカライズできないリソースをリソース専用 DLL に含めないでください。 ローカライズを行う翻訳者を混乱させる原因となります。 + +4. 文字列を実行時に連結して使う方法は避けてください。 連結される文字列は、英語の語順に依存することが多く、ほかの言語でのローカライズ作業が困難になります。 + +5. "Empty Folder" のように、構成要素の文法的な役割によって複数の翻訳が存在するあいまいな文字列を使用しないでください。 たとえば、"empty" は動詞または形容詞として解釈できるため、イタリア語やフランス語などの言語での翻訳結果が異なることがあります。 + +6. アプリケーションではテキストが含まれているイメージやアイコンを使用しないでください。 このようなイメージやアイコンのローカライズには時間と労力がかかります。 + +7. ユーザー インターフェイスの文字列は、表示領域に余裕がある程度の長さにしておいてください。 言語によっては、ユーザー インターフェイスが他の言語よりも 50 ~ 75% 長い領域を必要とする場合があります。 + +8. カルチャに基づいてリソースを取得するには、 クラスを使用します。 + +9. Windows フォームのダイアログ ボックスを作成するには Visual Studio を使用します。このように作成されたダイアログ ボックスは、[Windows フォーム リソース エディター \(Winres.exe\)](../../../docs/framework/tools/winres-exe-windows-forms-resource-editor.md) を使用してローカライズできます。 Windows フォームのダイアログ ボックスを手動でコーディングしないでください。 + +10. 専門的なローカライズ \(翻訳\) 作業を計画してください。 + +11. リソースの作成とローカライズの詳細については、「[アプリケーションのリソース](../../../docs/framework/resources/index.md)」を参照してください。 + +## 推奨される ASP.NET アプリケーションのグローバライズ手順 + +1. プロパティおよび プロパティをアプリケーションで明示的に設定します。 既定値には依存しないでください。 + +2. ASP.NET アプリケーションはマネージ アプリケーションであり、カルチャに基づいた情報の取得、表示、および操作では、ほかのマネージ アプリケーションと同じクラスを使用できます。 + +3. ASP.NET では次に示す 3 種類のエンコーディングを指定できる点に注意してください。 + + - requestEncoding は、クライアントのブラウザーから受信されたエンコーディングを指定します。 + + - responseEncoding は、クライアント ブラウザーへ送信するエンコーディングを指定します。 ほとんどの場合、このエンコーディングは requestEncoding に指定されたエンコーディングと同一です。 + + - fileEncoding は、.aspx、.asmx、.asax の各ファイルの解析の既定エンコーディングを指定します。 + +4. ASP.NET アプリケーション内の次の 3 か所で、requestEncoding、responseEncoding、fileEncoding、culture、uiCulture の各属性の値を指定します。 + + - Web.config ファイルのグローバリゼーション セクション。 Web.config ファイルは、ASP.NET アプリケーションの外部ファイルです。 詳細については、「[\ 要素](http://msdn.microsoft.com/ja-jp/e2dffc8e-ebd2-439b-a2fd-e3ac5e620da7)」を参照してください。 + + - ページ ディレクティブ。 アプリケーションがページを処理している時点では、ファイルは既に読み取られています。 そのため、fileEncoding と requestEncoding を指定するには遅すぎます。 ページ ディレクティブでは uiCulture、Culture、および responseEncoding だけを指定できます。 + + - アプリケーション コード \(プログラムで指定\)。 この設定は、要求ごとに変更できます。 ページ ディレクティブの場合と同様に、アプリケーション コードの処理時点では、fileEncoding と requestEncoding の指定は遅すぎます。 アプリケーション コードでは、uiCulture、Culture、および responseEncoding だけを指定できます。 + +5. uiCulture 値には、ブラウザー受け入れ言語を設定できます。 + +## 参照 + [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) + [デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md) \ No newline at end of file diff --git a/docs/standard/globalization-localization/culture-insensitive-string-operations.md b/docs/standard/globalization-localization/culture-insensitive-string-operations.md new file mode 100644 index 00000000000..283fda44675 --- /dev/null +++ b/docs/standard/globalization-localization/culture-insensitive-string-operations.md @@ -0,0 +1,40 @@ +--- +title: "カルチャを認識しない文字列操作 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "大文字と小文字を区別する比較" + - "カルチャ, カルチャを認識しない文字列操作" + - "カルチャを認識しない文字列操作" + - "カルチャを認識する文字列操作" + - "グローバリゼーション [.NET Framework], カルチャを認識しない文字列操作" + - "ローカリゼーション [.NET Framework], カルチャを認識しない文字列操作" + - "文字列 [.NET Framework], カルチャを認識しない文字列操作" + - "国際対応アプリケーション, カルチャを認識しない文字列操作" +ms.assetid: e6e2bb94-a95d-44e2-b68c-cfdd1db77784 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# カルチャを認識しない文字列操作 +カルチャを認識する文字列操作は、カルチャごとにユーザーに結果を表示するようデザインされたアプリケーションを作成する場合に役立ちます。 既定では、カルチャを認識するメソッドは、使用するカルチャを現在のスレッドの プロパティから取得します。 + + ただし、カルチャを認識する文字列操作は、必ずしも望ましい動作ではありません。 結果をカルチャに依存させない場合に、カルチャを認識する操作を使用すると、カスタムの大文字と小文字の対応規則および並べ替え規則を使用するカルチャでのアプリケーション コードの実行が失敗することがあります。 たとえば、[文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md) の記事の「現在のカルチャを使用する文字列比較」を参照してください。 + + 文字列操作でカルチャに依存するかどうかは、アプリケーションで結果をどのように使用するかに基づいて決定する必要があります。 ユーザーに結果を表示する場合は、通常、カルチャを認識する文字列操作を実行する必要があります。 たとえば、アプリケーションがローカライズされた文字列を並べ替えてリスト ボックスに表示する場合は、カルチャを認識する並べ替えを実行します。 + + 内部的に使用される文字列に対する操作は、通常、カルチャを認識しないようにします。 一般的に、アプリケーションがファイル名、永続形式、エンド ユーザーに表示されないシンボル情報などの処理を実行する場合には、文字列操作の結果がカルチャごとに変わらないようにする必要があります。 たとえば、XML タグとして認識されるかどうかを調べるために文字列を比較するアプリケーションでは、比較操作でカルチャを認識しないでください。 また、セキュリティに関する決定が文字列の比較操作や大文字と小文字の変更操作の結果に基づいて行われる場合は、この操作がカルチャを認識しないようにして、操作の結果が の値に影響されないようにする必要があります。 + + 開発するアプリケーションにローカリゼーションとグローバリゼーションに対応するためのコードが含まれているかどうかに関係なく、.NET Framework のメソッドは既定ではカルチャを認識する結果を取得することに注意してください。 このトピックの目的は、アプリケーションがこれらのメソッドを使用してカルチャを認識しない結果を取得するための正しい方法を示すことです。 + +## 参照 + [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) \ No newline at end of file diff --git a/docs/standard/globalization-localization/globalization.md b/docs/standard/globalization-localization/globalization.md new file mode 100644 index 00000000000..61b5cf1881c --- /dev/null +++ b/docs/standard/globalization-localization/globalization.md @@ -0,0 +1,381 @@ +--- +title: "グローバリゼーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "グローバリゼーション [.NET Framework]、グローバリゼーションについて" + - "グローバル アプリケーション、グローバリゼーション" + - "国際対応のアプリケーション [.NET Framework]、グローバリゼーション" + - "国際対応アプリケーション、グローバリゼーション" + - "アプリケーション開発 [.NET Framework]、グローバリゼーション" + - "カルチャ、グローバリゼーション" +ms.assetid: 4e919934-6b19-42f2-b770-275a4fae87c9 +caps.latest.revision: 15 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 15 +--- +# グローバリゼーション +グローバリゼーションとは、さまざまな文化圏 \(カルチャ\) のユーザー向けに、ローカライズされたインターフェイスと、その地域に合ったデータをサポートするような、国際対応アプリの設計と開発をいいます。 設計フェーズに着手する前に、アプリでサポートするカルチャを決定してください。 アプリは既定値として 1 つのカルチャまたは地域を対象としますが、別のカルチャまたは地域のユーザーに簡単に拡張できるようにアプリを設計および作成できます。 + + 開発者には、自分のカルチャによって形成されるユーザー インターフェイスとデータに関する前提があります。 たとえば、米国の英語圏の開発者は、日付と時刻のデータを形式 `MM/dd/yyyy hh:mm:ss` の文字列としてシリアル化することは、十分理にかなっていると考えます。 ただし、別のカルチャのシステムでその文字列を逆シリアル化すると、 例外がスローされるか、正しくないデータが生成される可能性があります。 グローバリゼーションにより、このようなカルチャ固有の前提を識別し、それがアプリの設計またはコードに影響しないようにすることができます。 + + 次のセクションでは、グローバライズされたアプリで文字列、日付と時刻の値、および数値を処理するときに考慮する必要がある重要な問題および使用できるベスト プラクティスについて説明します。 + +- [文字列を処理する](../../../docs/standard/globalization-localization/globalization.md#HandlingStrings) + + - [Unicode を内部で使用する](../../../docs/standard/globalization-localization/globalization.md#Strings_Unicode) + + - [リソース ファイルを使用する](../../../docs/standard/globalization-localization/globalization.md#Strings_Resources) + + - [文字列を検索して比較する](../../../docs/standard/globalization-localization/globalization.md#Strings_Searching) + + - [文字列の等価性をテストする](../../../docs/standard/globalization-localization/globalization.md#Strings_Equality) + + - [文字列の順序付けと並べ替えを実行する](../../../docs/standard/globalization-localization/globalization.md#Strings_Ordering) + + - [文字列の連結を回避する](../../../docs/standard/globalization-localization/globalization.md#Strings_Concat) + +- [日付と時刻を処理する](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes) + + - [日付と時刻を保持する](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_Persist) + + - [日付と時刻を表示する](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_Display) + + - [シリアル化とタイム ゾーンへの対応](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_TimeZones) + + - [日付と時刻の演算を実行する](../../../docs/standard/globalization-localization/globalization.md#DatesAndTimes_Arithmetic) + +- [数値を処理する](../../../docs/standard/globalization-localization/globalization.md#Numbers) + + - [数値を表示する](../../../docs/standard/globalization-localization/globalization.md#Numbers_Display) + + - [数値を保持する](../../../docs/standard/globalization-localization/globalization.md#Numbers_Persist) + +- [カルチャ固有の設定を使用する](../../../docs/standard/globalization-localization/globalization.md#Cultures) + + +## 文字列を処理する + カルチャまたは地域ごとに異なる文字と文字セットを使用し、異なる方法で並べ替える可能性があるため、文字と文字列の処理は、グローバリゼーションで主な焦点となります。 このセクションでは、グローバライズされたアプリで文字列を使用するための推奨事項について説明します。 + + +### Unicode を内部で使用する + 既定では、.NET Framework では Unicode 文字列を使用します。 Unicode 文字列は、ゼロ個以上の オブジェクトで構成され、それぞれが UTF\-16 コード単位を表します。 世界中で使用されているすべての文字セットのほとんどすべての文字に対して、Unicode 表現があります。 + + Windows オペレーティング システムを含む、多くのアプリケーションとオペレーティング システムでは、文字セットを表すためにコード ページを使用できます。 コード ページには、通常、0x00 から 0x7F までの標準 ASCII 値が含まれ、0x80 から 0xFF までの残りの値に他の文字をマップします。 0x80 から 0xFF までの値の解釈は特定のコード ページによって異なります。 このため、可能な場合は、グローバライズされたアプリでコード ページを使用しないようにします。 + + 次の例では、システムの既定のコード ページとデータが保存されたコード ページとが異なる場合にコード ページのデータを解釈する危険性を示しています \(このシナリオをシミュレートするため、例では、異なるコード ページを明示的に指定します\)。 最初に、ギリシャ文字の大文字で構成される配列を定義します。 コード ページ 737 \(MS\-DOS ギリシャ語とも呼ばれます\) を使用してそれらをバイト配列にエンコードし、バイト配列をファイルに保存します。 ファイルを取得し、そのバイト配列をコード ページ 737 を使用してデコードした場合、元の文字が復元されます。 ただし、ファイルを取得して、そのバイト配列をコード ページ 1252 \(または Windows\-1252。ラテン語アルファベットの文字を表します\) を使用してデコードした場合、元の文字は失われます。 + + [!code-csharp[Conceptual.Globalization#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/codepages1.cs#1)] + [!code-vb[Conceptual.Globalization#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/codepages1.vb#1)] + + Unicode を使用することで、同じコード単位を必ず同じ文字にマップでき、同じ文字を必ず同じバイト配列にマップできます。 + + +### リソース ファイルを使用する + 単一のカルチャまたは地域を対象とするアプリを開発する場合でも、ユーザー インターフェイスに表示される文字列などのリソースを格納するためにリソース ファイルを使用する必要があります。 リソースを直接コードに追加しないでください。 リソース ファイルの使用には、次の利点があります。 + +- すべての文字列が単一の場所に存在します。 ソース コード全体を検索して、特定の言語またはカルチャに合わせて変更する文字列を特定する必要はありません。 + +- 文字列を複製する必要がありません。 リソース ファイルを使用しない開発者は、多くの場合、複数のソース コード ファイルで同じ文字列を定義します。 この重複により、文字列を変更するときに 1 つ以上のインスタンスを見落とす可能性が高くなります。 + +- イメージ、バイナリ データなどの文字列以外のリソースを個別のスタンドアロン ファイルに格納するのではなく、リソース ファイルに格納できるので、それらが簡単に取得できます。 + + ローカライズされたアプリを作成する場合、リソース ファイルを使用することには特に利点があります。 サテライト アセンブリにリソースを配置すると プロパティで定義されているユーザーの現在の UI カルチャに基づいて、共通言語ランタイムが自動的にカルチャに応じたリソースを選択します。 適切なカルチャ固有のリソースを提供し、 オブジェクトを正しくインスタンス化するか、厳密に型指定されたリソース クラスを使用すると、ランタイムは適切なリソースの取得の詳細を処理します。 + + リソース ファイルの作成の詳細については、「[リソース ファイルの作成](../../../docs/framework/resources/creating-resource-files-for-desktop-apps.md)」を参照してください。 サテライト アセンブリの作成と配置の詳細については、「[サテライト アセンブリの作成](../../../docs/framework/resources/creating-satellite-assemblies-for-desktop-apps.md)」および「[リソースのパッケージ化と配置](../../../docs/framework/resources/packaging-and-deploying-resources-in-desktop-apps.md)」を参照してください。 + + +### 文字列を検索して比較する + 文字列は、できるだけ全体を 1 つのまとまりとして扱い、個々の文字の連続として処理しない必要があります。 これは、部分文字列を並べ替えたり、検索したりするときに、組み合わせ文字の解析に関する問題を防ぐうえで特に重要です。 + +> [!TIP] +> クラスを使用して、文字列の個別の文字ではなく、テキスト要素を操作できます。 + + 文字列の検索と比較でよくある間違いは、それぞれが オブジェクトによって表される文字のコレクションとして文字列を処理することです。 実際に、1 つの文字が 1 つ、2 つ、またはそれ以上の オブジェクトによって形成される場合があります。 このような文字は、アルファベットが、Unicode 基本ラテン文字の範囲 \(U\+0021 ~ U\+007E\) 外にある文字で構成されるカルチャの文字列に最もよくみられます。 次の例では、文字列で LATIN CAPITAL LETTER A WITH GRAVE 文字 \(U\+00C0\) のインデックスを検索します。 ただし、この文字は、1 つのコード単位 \(U\+00C0\) または複合文字 \(2 つのコード単位: U\+0021 と U\+007E\) という 2 つの方法で表現できます。 この場合、この文字は、文字列インスタンスで 2 つの オブジェクト \(U\+0021 と U\+007E\) によって表されます。 このコード例では、 オーバーロードと オーバーロードを呼び出して、文字列インスタンスでのこの文字の位置を検索しますが、この 2 つは異なる結果を返します。 最初のメソッド呼び出しでは 引数を指定しているので、序数に基づく比較が実行され、一致を見つけることができません。 2 番目の呼び出しでは 引数を指定しているので、カルチャに依存した比較が実行され、一致が見つかります。 + + [!code-csharp[Conceptual.Globalization#18](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/search1.cs#18)] + [!code-vb[Conceptual.Globalization#18](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/search1.vb#18)] + + メソッド、 メソッドなど パラメーターを含むオーバーロードを呼び出して、この例のあいまいさ \(異なる結果を返すメソッドの 2 つの類似オーバーロードの呼び出し\) の一部を回避できます。 + + ただし、検索が常にカルチャに依存しているとは限りません。 検索の目的がセキュリティ上の決定をするか、またはリソースへのアクセスを許可または拒否することである場合、次のセクションで説明するように序数に基づく比較を実行する必要があります。 + + +### 文字列の等価性をテストする + 2 つの文字列が並べ替え順序で並ぶ方法を確認するのではなく、2 つの文字列の等価性をテストする場合は、 などの文字列比較メソッドの代わりに メソッドを使用します。 + + 等価性の比較は、通常、条件付きでリソースにアクセスするために実行します。 たとえば、パスワードを確認したり、ファイルがあることを確認したりするために等価性の比較を実行する場合があります。 このような非言語的な比較は、カルチャに依存するのではなく、常に序数に基づいて実行する必要があります。 一般に、パスワードなどの文字列の場合は の値を使用して、ファイル名、URI などの文字列の場合は の値を使用して、インスタンス メソッドまたは静的 メソッドを呼び出す必要があります。 + + 等価性の比較では、 メソッドを呼び出すのではなく、検索したり、部分文字列を比較したりすることがあります。 場合によっては、部分文字列検索を使用して、その部分文字列が別の文字列と等しいかどうかを確認できます。 この比較の目的が非言語的である場合、検索はカルチャに依存するのではなく、序数に基づいて実行する必要があります。 + + 次の例は、非言語的なデータに対してカルチャに依存した検索を実行することの危険性を示しています。`AccessesFileSystem` メソッドは、部分文字列 "FILE" で始まる URI のファイル システムのアクセスを禁止するように設計されています。 これを実行するため、カルチャに依存し、大文字と小文字を区別しない比較を実行して、URI の先頭と文字列 "FILE" を比較します。 ファイル システムにアクセスする URI は "FILE:" または "file:" で始まる可能性があるため、"i" \(U\+0069\) は常に "I" \(U\+0049\) と等価の小文字表現であるという暗黙の前提があります。 ただし、トルコ語およびアゼルバイジャン語には、"i" の大文字として "İ" \(U\+0130\) があります。 このような相違があるため、カルチャに依存した比較を使用すると、ファイル システムのアクセスを禁止する必要がある場合でもそのアクセスが許可されます。 + + [!code-csharp[Conceptual.Globalization#12](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/equals1.cs#12)] + [!code-vb[Conceptual.Globalization#12](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/equals1.vb#12)] + + 次の例に示すように、大文字と小文字を無視する序数に基づく比較を実行して、この問題を回避できます。 + + [!code-csharp[Conceptual.Globalization#13](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/equals2.cs#13)] + [!code-vb[Conceptual.Globalization#13](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/equals2.vb#13)] + + +### 文字列の順序付けと並べ替えを実行する + 通常、ユーザー インターフェイスの表示順序が指定された文字列は、カルチャに基づいて並べ替える必要があります。 ほとんどの場合、このような文字列比較は、文字列を並べ替える などのメソッドを呼び出すと、.NET Framework によって暗黙的に処理されます。 既定では、文字列は、現在のカルチャの並べ替え規則を使用して並べ替えられます。 次の例では、文字列の配列を英語 \(米国\) カルチャとスウェーデン語 \(スウェーデン\) カルチャの規則を使用して並べ替えたときの違いを示しています。 + + [!code-csharp[Conceptual.Globalization#14](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/sort1.cs#14)] + [!code-vb[Conceptual.Globalization#14](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/sort1.vb#14)] + + カルチャに依存した文字列比較は、各カルチャの プロパティによって返される オブジェクトによって定義されます。 メソッド オーバーロードを使用するカルチャに依存した文字列比較では、 オブジェクトも使用します。 + + .NET Framework は、文字列データのカルチャに依存した並べ替えを実行するためにテーブルを使用します。 並べ替えのウエイトと文字列の正規化に関するデータが入ったこれらのテーブルの内容は、特定のバージョンの .NET Framework によって実装される Unicode 規格のバージョンによって決まります。 次の表は、特定のバージョンの .NET Framework によって実装される Unicode のバージョンです。 サポートされている Unicode バージョンの一覧は、文字の比較と並べ替えに対してのみ適用されます。カテゴリ別での Unicode 文字の分類には適用されません。 詳細については、記事「」 の「Strings and The Unicode Standard」 \(文字列と Unicode 標準\) セクションを参照してください。 + +|.NET Framework のバージョン|オペレーティング システム|Unicode バージョン| +|---------------------------|-------------------|-------------------| +|.NET Framework 2.0|すべてのオペレーティング システム|Unicode 4.1| +|.NET Framework 3.0|すべてのオペレーティング システム|Unicode 4.1| +|.NET Framework 3.5|すべてのオペレーティング システム|Unicode 4.1| +|.NET Framework 4|すべてのオペレーティング システム|Unicode 5.0| +|.NET Framework 4.5|[!INCLUDE[win7](../../../includes/win7-md.md)]|Unicode 5.0| +|.NET Framework 4.5|[!INCLUDE[win8](../../../includes/win8-md.md)]|Unicode 6.0| + + [!INCLUDE[net_v45](../../../includes/net-v45-md.md)] では、文字列の比較および並べ替えは、オペレーティング システムによって異なります。[!INCLUDE[net_v45](../../../includes/net-v45-md.md)] で実行される [!INCLUDE[win7](../../../includes/win7-md.md)] は、Unicode 5.0 を実装する独自のテーブルからデータを取得します。[!INCLUDE[net_v45](../../../includes/net-v45-md.md)] で実行される [!INCLUDE[win8](../../../includes/win8-md.md)] は、Unicode 6.0 を実装するオペレーティング システム テーブルからデータを取得します。 カルチャに依存した並べ替えが実行されたデータをシリアル化する場合は、 クラスを使用して、.NET Framework およびオペレーティング システムの並べ替え順序と一致するように、シリアル化されたデータをいつ並べ替える必要があるかを判断できます。 例については、 クラスに関するトピックを参照してください。 + + 広範なカルチャ固有の並べ替えを文字列データに対して実行するアプリの場合、 クラスを使用して文字列を比較できます。 並べ替えキーは、特定の文字列のアルファベット順、大文字と小文字の区別、発音の区別など、カルチャ固有の並べ替えウェイトを反映しています。 並べ替えキーを使用した比較はバイナリであるため、 オブジェクトを暗黙的または明示的に使用する比較よりも高速です。 メソッドに文字列を渡すことによって、特定の文字列のカルチャ固有の並べ替えキーを作成します。 + + 次の例は、前の例と似ています。 ただし、暗黙的に メソッドを呼び出す メソッドを呼び出すのではなく、インスタンス化して、 メソッドに渡す、並べ替えキーを比較する [Array.Sort\\(T\ 実装を定義しています。 + + [!code-csharp[Conceptual.Globalization#15](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/sortkey1.cs#15)] + [!code-vb[Conceptual.Globalization#15](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/sortkey1.vb#15)] + + +### 文字列の連結を回避する + 可能な限り、文字列を実行時に連結して使う方法は避けてください。 連結される文字列は、他のローカライズ言語には当てはまらない、アプリの元の言語の語順に依存することが多く、ローカライズ作業が困難になります。 + + +## 日付と時刻を処理する + 日付と時刻の値を処理する方法は、その値をユーザー インターフェイスに表示するのか、保持するのかによって異なります。 このセクションでは、両方の使用を検討します。 また、日付と時刻を操作するときにタイム ゾーンの相違と算術演算を処理する方法についても説明します。 + + +### 日付と時刻を表示する + 通常、日付と時刻をユーザー インターフェイスに表示するときには、 プロパティと、 プロパティによって返される `CultureInfo.CurrentCulture.DateTimeFormat` オブジェクトで定義されているユーザーのカルチャの書式指定規則を使用する必要があります。 次のメソッドのいずれかを使用して日付の書式を設定すると、現在のカルチャの書式指定規則が自動的に使用されます。 + +- パラメーターなしの メソッド + +- 書式指定文字列を含む メソッド + +- パラメーターなしの メソッド + +- 書式指定文字列を含む + +- 日付と共に使用した場合、[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)機能 + + 次の例では、2012 年 10 月 11 日の日の出と日没のデータを 2 回表示します。 最初に、現在のカルチャをクロアチア語 \(クロアチア\) に設定し、次に英語 \(英国\) に設定します。 どちらの場合も、日付と時刻はそのカルチャに適した書式で表示されます。 + + [!code-csharp[Conceptual.Globalization#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/dates1.cs#2)] + [!code-vb[Conceptual.Globalization#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/dates1.vb#2)] + + +### 日付と時刻を保持する + 日付と時刻のデータはカルチャによって異なる可能性がある書式で保持しないでください。 これは、データの破損または実行時例外が発生する一般的なプログラミング エラーです。 次の例では、英語 \(米国\) カルチャの書式指定規則を使用して文字列として 2 つの日付 \(2013 年 1 月 9 日と 2013 年 8 月 18 日\) をシリアル化します。 データが英語 \(米国\) カルチャの規則を使用して取得および解析されると、正常に復元されます。 ただし、英語 \(英国\) カルチャの規則を使用して取得および解析されると、最初の日付は 9 月 1 日と間違って解釈され、グレゴリオ暦には 18 番目の月がないため 2 番目の日付は解析されません。 + + [!code-csharp[Conceptual.Globalization#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/dates2.cs#3)] + [!code-vb[Conceptual.Globalization#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/dates2.vb#3)] + + この問題は、次の 3 つのうちいずれかの方法で回避できます。 + +- 文字列ではなくバイナリ形式で日付と時刻をシリアル化します。 + +- ユーザーのカルチャに関係なく同じであるカスタム書式指定文字列を使用して日付と時刻の文字列表現を保存および解析します。 + +- インバリアント カルチャの書式指定規則を使用して文字列を保存します。 + + 次の例では、最後のアプローチを示します。 この例では、静的 プロパティによって返されるインバリアント カルチャの書式指定規則を使用します。 + + [!code-csharp[Conceptual.Globalization#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/dates3.cs#4)] + [!code-vb[Conceptual.Globalization#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/dates3.vb#4)] + + +### シリアル化とタイム ゾーンへの対応 + 日付と時刻の値は、一般的な時刻 \("店舗は 2013 年 1 月 2 日の午前 9 時に開店します"\) から特定の時点 \("生年月日: 2013 年 1 月 2 日午前 6 時 32 分 00 秒"\) まで、多様に解釈できます。 時刻の値が特定の時点を表し、それをシリアル化された値から復元する場合、ユーザーの地理的場所またはタイム ゾーンに関係なく同じ特定の時点を表すことを確認する必要があります。 + + この問題を説明する例を次に示します。 この例では、1 つのローカル日付と時刻の値を、3 つの[標準書式](../../../docs/standard/base-types/standard-date-and-time-format-strings.md) \(一般の日付と長い形式の時刻の "G"、並べ替え可能な日付と時刻の "s"、およびラウンド トリップする日付と時刻の "o"\) の文字列として、およびバイナリ形式で保存します。 + + [!code-csharp[Conceptual.Globalization#10](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/dates4.cs#10)] + [!code-vb[Conceptual.Globalization#10](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/dates4.vb#10)] + + シリアル化されたシステムと同じタイム ゾーンのシステムでデータを復元すると、出力に示すように、逆シリアル化された日付と時刻の値は正確に元の値を反映しています。 + +``` + +'3/30/2013 6:00:00 PM' --> 3/30/2013 6:00:00 PM Unspecified +'2013-03-30T18:00:00' --> 3/30/2013 6:00:00 PM Unspecified +'2013-03-30T18:00:00.0000000-07:00' --> 3/30/2013 6:00:00 PM Local + +3/30/2013 6:00:00 PM Local + +``` + + ただし、別のタイム ゾーンのシステムでデータを復元する場合は、"o" \(ラウンド トリップ\) 標準書式指定文字列を使用して書式設定された日付と時刻の値だけがタイム ゾーン情報を維持して、同じ時点を表します。 日付と時刻のデータがロマンス標準時ゾーンのシステムで復元されたときの出力を次に示します。 + +``` + +'3/30/2013 6:00:00 PM' --> 3/30/2013 6:00:00 PM Unspecified +'2013-03-30T18:00:00' --> 3/30/2013 6:00:00 PM Unspecified +'2013-03-30T18:00:00.0000000-07:00' --> 3/31/2013 3:00:00 AM Local + +3/30/2013 6:00:00 PM Local + +``` + + データが逆シリアル化されるシステムのタイム ゾーンに関係なく 1 つの時点を表す日付と時刻の値を正確に反映するには、次のいずれかの方法を使用できます。 + +- "o" \(ラウンド トリップ\) 標準書式指定文字列を使用して値を文字列として保存します。 その後、ターゲット システムで逆シリアル化します。 + +- 値を UTC に変換し、"r" \(RFC1123\) 標準書式指定文字列を使用して文字列として保存します。 その後、ターゲット システムで逆シリアル化し、現地時刻に変換します。 + +- 値を UTC に変換し、"u" \(世界共通の並べ替え可能な日付と時刻\) 標準書式指定文字列を使用して文字列として保存します。 その後、ターゲット システムで逆シリアル化し、現地時刻に変換します。 + +- 値を UTC に変換し、バイナリ形式で保存します。 その後、ターゲット システムで逆シリアル化し、現地時刻に変換します。 + + 各方法の例を次に示します。 + + [!code-csharp[Conceptual.Globalization#11](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/dates8.cs#11)] + [!code-vb[Conceptual.Globalization#11](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/dates8.vb#11)] + + データを太平洋標準時ゾーンのシステムでシリアル化し、ロマンス標準時ゾーンのシステムで逆シリアル化すると、次の出力が表示されます。 + +``` + +'2013-03-30T18:00:00.0000000-07:00' --> 3/31/2013 3:00:00 AM Local +'Sun, 31 Mar 2013 01:00:00 GMT' --> 3/31/2013 3:00:00 AM Local +'2013-03-31 01:00:00Z' --> 3/31/2013 3:00:00 AM Local + +3/31/2013 3:00:00 AM Local + +``` + + 詳細については、「[タイム ゾーン間での時刻の変換](../../../docs/standard/datetime/converting-between-time-zones.md)」を参照してください。 + + +### 日付と時刻の演算を実行する + 型と 型は、算術演算をサポートします。 2 つの日付の値の差を計算したり、日付の値に特定の時間間隔を加算または減算したりできます。 ただし、日付と時刻の値に対する算術演算では、タイム ゾーンとタイム ゾーン調整規則が考慮されません。 このため、時点を表す値に対して日付と時刻の算術を実行すると、不正確な結果が返されることがあります。 + + たとえば、太平洋標準時から太平洋夏時間への切り替えは、3 月の第 2 日曜日、2013 年の場合は 3 月 10 日に行われます。 次の例に示すように、太平洋標準時ゾーンのシステムで、2013 年 3 月 9 日午前 10 時 30 分の 48 時間後に当たる日付と時刻を計算した場合、結果は 2013 年 3 月 11 日午前 10 時 30 分となり、その間の時間調整は考慮されません。 + + [!code-csharp[Conceptual.Globalization#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/dates5.cs#8)] + [!code-vb[Conceptual.Globalization#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/dates5.vb#8)] + + 日付と時刻の値に対する算術演算によって正確な結果を生成するには、次の手順を実行します。 + +1. ソース タイム ゾーンの時刻を UTC に変換します。 + +2. 算術演算を実行します。 + +3. 結果が日付と時刻の値である場合、UTC からソース タイム ゾーンの時刻に変換します。 + + 次の例は前の例と似ていますが、この 3 つの手順を実行することで、2013 年 3 月 9 日午前 10 時 30 分に 48 時間が正しく追加されています。 + + [!code-csharp[Conceptual.Globalization#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/dates6.cs#9)] + [!code-vb[Conceptual.Globalization#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/dates6.vb#9)] + + 詳細については、「[日付と時刻を使用した算術演算の実行](../../../docs/standard/datetime/performing-arithmetic-operations.md)」を参照してください。 + +### 日付要素のカルチャに依存した名前を使用する + アプリによっては、月または曜日の名前を表示することが必要になる場合があります。 これを実行するために、次のようなコードが一般に使用されます。 + + [!code-csharp[Conceptual.Globalization#19](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/monthname1.cs#19)] + [!code-vb[Conceptual.Globalization#19](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/monthname1.vb#19)] + + ただし、このコードは曜日の名前を必ず英語で返します。 多くの場合、月の名前を抽出するコードには、さらに柔軟性がありません。 一般に、このようなコードでは特定の言語の月の名前を使用した 12 か月の暦を前提としています。 + + 次の例に示すように、[カスタム日時書式指定文字列](../../../docs/standard/base-types/custom-date-and-time-format-strings.md)または オブジェクトのプロパティを使用すると、ユーザーのカルチャの曜日または月の名前を反映する文字列を簡単に抽出できます。 この例では、現在のカルチャをフランス語 \(フランス\) に変更し、2013 年 7 月 1 日の曜日の名前と月の名前を表示します。 + + [!code-csharp[Conceptual.Globalization#20](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/monthname2.cs#20)] + [!code-vb[Conceptual.Globalization#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/monthname2.vb#20)] + + +## 数値を処理する + 数値の処理は、数値をユーザー インターフェイスに表示するのか、保持するのかによって異なります。 このセクションでは、両方の使用を検討します。 + +> [!NOTE] +> 解析操作と書式設定操作では、.NET Framework は基本ラテン文字 0 ~ 9 \(U\+0030 ~ U\+0039\) だけを数字として認識します。 + + +### 数値を表示する + 通常、数値をユーザー インターフェイスに表示するときには、 プロパティと、 プロパティによって返される `CultureInfo.CurrentCulture.NumberFormat` オブジェクトで定義されているユーザーのカルチャの書式指定規則を使用する必要があります。 次のメソッドのいずれかを使用して日付の書式を設定すると、現在のカルチャの書式指定規則が自動的に使用されます。 + +- 任意の数値型のパラメーターなしの `ToString` メソッド + +- 書式指定文字列を引数として含む任意の数値型の `ToString(String)` メソッド + +- 数値と共に使用した場合、[複合書式指定](../../../docs/standard/base-types/composite-formatting.md)機能 + + 次の例では、パリ \(フランス\) の毎月の平均気温を表示します。 この例では、最初にデータを表示する前に現在のカルチャをフランス語 \(フランス\) に設定し、次に英語 \(米国\) に設定します。 どちらの場合も、月の名前と気温はそのカルチャに適した形式で表示されます。 この 2 つのカルチャでは、気温の値に使用する小数点記号が異なります。 また、この例では、"MMMM" カスタム日時書式指定文字列を使用して月の正式名を表示し、 配列で最も長い月の名前の長さを確認することで、結果の文字列の月の名前に適切な領域を割り当てます。 + + [!code-csharp[Conceptual.Globalization#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/numbers1.cs#5)] + [!code-vb[Conceptual.Globalization#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/numbers1.vb#5)] + + +### 数値を保持する + 数値データはカルチャ固有の書式で保持しないでください。 これは、データの破損または実行時例外が発生する一般的なプログラミング エラーです。 次の例では、10 個のランダムな浮動小数点数を生成し、英語 \(米国\) カルチャの書式指定規則を使用して文字列としてシリアル化します。 データが英語 \(米国\) カルチャの規則を使用して取得および解析されると、正常に復元されます。 ただし、この数値をフランス語 \(フランス\) カルチャの規則を使用して取得および解析すると、使用する小数点記号が異なるため、数値はいずれも解析できません。 + + [!code-csharp[Conceptual.Globalization#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/numbers2.cs#6)] + [!code-vb[Conceptual.Globalization#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/numbers2.vb#6)] + + この問題を回避するには、次の方法のいずれかを使用します。 + +- ユーザーのカルチャに関係なく同じであるカスタム書式指定文字列を使用して数値の文字列表現を保存および解析します。 + +- プロパティによって返されるインバリアント カルチャの書式指定規則を使用して文字列として数値を保存します。 + +- 文字列形式ではなく、バイナリで数値をシリアル化します。 + + 次の例では、最後のアプローチを示します。 この例では、 値の配列をシリアル化し、英語 \(米国\) カルチャとフランス語 \(フランス\) カルチャの書式指定規則を使用して逆シリアル化して、表示します。 + + [!code-csharp[Conceptual.Globalization#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/numbers3.cs#7)] + [!code-vb[Conceptual.Globalization#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/numbers3.vb#7)] + + 通貨値のシリアル化は特殊なケースです。 通貨値は、それが表現されている通貨の単位に依存するため、独立した数値として扱う意味はほとんどありません。 ただし、通貨値を、通貨記号を含んだ書式設定された文字列として保存する場合、次の例に示すように、既定のカルチャが異なる通貨記号を使用するシステムで逆シリアル化できません。 + + [!code-csharp[Conceptual.Globalization#16](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/currency1.cs#16)] + [!code-vb[Conceptual.Globalization#16](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/currency1.vb#16)] + + 代わりに、カルチャの名前など、カルチャに関する情報と共に数値をシリアル化して、値とその通貨記号が現在のカルチャと関係なく逆シリアル化できるようにする必要があります。 次の例では、2 つメンバーを使用して `CurrencyValue` 構造体を定義することでこれを実行しています。2 つのメンバーは、 値とその値が属するカルチャの名前です。 + + [!code-csharp[Conceptual.Globalization#17](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.globalization/cs/currency2.cs#17)] + [!code-vb[Conceptual.Globalization#17](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.globalization/vb/currency2.vb#17)] + + +## カルチャ固有の設定を使用する + .NET Framework では、特定のカルチャまたは地域は クラスによって表されます。 そのプロパティの一部は、カルチャのある側面に関する特定の情報を提供するオブジェクトを返します。 + +- プロパティは、カルチャによる文字列の比較方法および並べ替え方法に関する情報を含んだ オブジェクトを返します。 + +- プロパティは、日付と時刻のデータの書式設定で使用されるカルチャ固有の情報を提供する オブジェクトを返します。 + +- プロパティは、数値データの書式設定で使用されるカルチャ固有の情報を提供する オブジェクトを返します。 + +- プロパティは、カルチャの書記体系に関する情報を提供する オブジェクトを返します。 + + 一般に、特定の プロパティおよび関連するオブジェクトの値について何も想定しないでください。 代わりに、次の理由により、カルチャ固有のデータは変更される可能性があると考える必要があります。 + +- 個々のプロパティ値は、データが修正された、より優れたデータが使用可能になった、カルチャ固有の規則が変更されたなどの理由で、時間と共に変更または修正される可能性があります。 + +- 個々のプロパティ値は、.NET Framework のバージョンまたはオペレーティング システムのバージョン間で異なる場合があります。 + +- .NET Framework では置換カルチャをサポートしています。 これにより、既存の標準カルチャを補足または既存の標準カルチャを完全に置き換える新しいカスタム カルチャを定義できます。 + +- ユーザーは、コントロール パネルの **\[地域と言語\]** アプリを使用してカルチャ固有の設定をカスタマイズできます。 オブジェクトをインスタンス化するときに、 コンストラクターを呼び出すことでこのようなユーザーによるカスタマイズを反映するかどうかを決定できます。 通常は、エンド ユーザーのアプリでは、ユーザー設定を尊重して、ユーザー自身が予期する形式でデータを表示する必要があります。 + +## 参照 + [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) + [文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md) \ No newline at end of file diff --git a/docs/standard/globalization-localization/index.md b/docs/standard/globalization-localization/index.md new file mode 100644 index 00000000000..81e9a006912 --- /dev/null +++ b/docs/standard/globalization-localization/index.md @@ -0,0 +1,79 @@ +--- +title: ".NET Framework アプリケーションのグローバライズとローカライズ | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション開発 [.NET Framework], グローバリゼーション" + - "グローバル アプリケーション" + - "グローバリゼーション [.NET Framework], エンコーディング" + - "国際対応のアプリケーション [.NET Framework]" + - "国際化" + - "多言語アプリケーション開発" + - "国際対応アプリケーション" +ms.assetid: 9a59696b-d89b-45bd-946d-c75da4732d02 +caps.latest.revision: 42 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 42 +--- +# .NET Framework アプリケーションのグローバライズとローカライズ +1 つ以上の言語にローカライズされるアプリケーションなど、[国際対応アプリケーション](http://msdn.microsoft.com/goglobal/bb978433.aspx)を開発するには、グローバリゼーション、ローカライズ対象の確認、およびローカリゼーションの 3 つの手順が必要です。 + + [グローバリゼーション](../../../docs/standard/globalization-localization/globalization.md) + これは、特定のカルチャや言語に依存せず、すべてのユーザーに対して、ローカライズされたユーザー インターフェイスと、その地域に合ったデータをサポートするような、アプリケーションの設計と開発を行う手順です。 これはカルチャ固有の前提に基づかない決定によって設計とプログラミングを行うことです。 グローバライズされたアプリケーションは、ローカライズされていなくても、後から比較的容易に 1 つ以上の言語にローカライズできるように設計開発されています。 + + [ローカライズ化の確認](../../../docs/standard/globalization-localization/localizability-review.md) + この手順により、アプリケーションのコードと設計をレビューして、ローカライズが容易になるようにし、ローカライズのための潜在的な問題点を識別し、アプリケーションの実行可能コードがリソースから分離されていることを確認します。 グローバリゼーションの段階が効果的なものであれば、ローカリゼーション レビューはグローバリゼーションの過程で行われた設計とコーディングの決定を確認するものになります。 ローカライズ対象の確認の段階では、ローカライズの段階でアプリケーションのソース コードを変更する必要がないように、残っている問題を特定します。 + + [ローカリゼーション](../../../docs/standard/globalization-localization/localization.md) + この手順では、特定のカルチャまたは地域に合わせてアプリケーションをカスタマイズします。 グローバリゼーションとローカライズ対象の確認を適切に行うと、ローカリゼーションでは主にユーザー インターフェイスの翻訳作業が行われます。 + + この 3 つの手順に従うことにより、次の 2 つの利点があります。 + +- 米国英語などのような 1 つのカルチャだけをサポートするアプリケーションを、 他のカルチャもサポートするように変更する作業を行う必要がなくなります。 + +- ローカライズされたアプリケーションが、より安定してバグがより少ないものになります。 + + .NET Framework には、国際対応アプリケーションやローカライズされたアプリケーションの開発の拡張サポートが備わっています。 特に、.NET Framework クラス ライブラリの多くの型メンバーは、現在のユーザーのカルチャまたは特定のカルチャの規則を表す値を返すことができ、グローバリゼーションに役立ちます。 また、.NET Framework はサテライト アセンブリをサポートし、アプリケーションのローカライズ プロセスを容易にします。 + + 詳細については、「[Go Global Developer Center](http://go.microsoft.com/fwlink/?LinkId=235015)」を参照してください。 + +## このセクションの内容 + [グローバリゼーション](../../../docs/standard/globalization-localization/globalization.md) + 国際対応アプリケーションを作成するための最初の手順を説明します。カルチャや言語に依存しないアプリケーションの設計とコーディングを行います。 + + [ローカライズ化の確認](../../../docs/standard/globalization-localization/localizability-review.md) + ローカライズされたアプリケーションを作成するための 2 つ目の手順を説明します。ローカライズのための潜在的な問題点を識別します。 + + [ローカリゼーション](../../../docs/standard/globalization-localization/localization.md) + ローカライズされたアプリケーションを作成するための最後の手順を説明します。特定の地域またはカルチャのために、アプリケーションのユーザー インターフェイスをカスタマイズします。 + + [カルチャを認識しない文字列操作](../../../docs/standard/globalization-localization/culture-insensitive-string-operations.md) + 既定ではカルチャが識別される .NET Framework のメソッドやクラスを使用して、カルチャが識別されない結果を取得する方法について説明します。 + + [推奨される国際対応アプリケーション開発手順](../../../docs/standard/globalization-localization/best-practices-for-developing-world-ready-apps.md) + 国際対応 ASP.NET アプリケーションのグローバリゼーション、ローカリゼーション、および開発の推奨手順について説明します。 + +## 関連項目 + 名前空間 + 言語、国\/地域、使用する暦、日付、通貨、通知の書式パターン、文字列の並べ替え順序など、カルチャ関連の情報を定義するクラスが含まれています。 + + 名前空間 + リソースを作成、操作、および使用するためのクラスが格納されている名前空間です。 + + 名前空間 + ASCII、ANSI、Unicode、およびその他の文字エンコーディングを表すクラスが格納されている名前空間です。 + + [Resgen.exe \(リソース ファイル ジェネレーター\)](../../../docs/framework/tools/resgen-exe-resource-file-generator.md) + Resgen.exe を使用して .txt ファイルと XML ベース リソース フォーマット \(.resx\) ファイルを共通言語ランタイムのバイナリ .resources ファイルに変換する方法について説明します。 + + [Winres.exe \(Windows フォーム リソース エディター\)](../../../docs/framework/tools/winres-exe-windows-forms-resource-editor.md) + Winres.exe を使用して Windows フォームのフォームをローカライズする方法について説明します。 \ No newline at end of file diff --git a/docs/standard/globalization-localization/localizability-review.md b/docs/standard/globalization-localization/localizability-review.md new file mode 100644 index 00000000000..d82a124f73b --- /dev/null +++ b/docs/standard/globalization-localization/localizability-review.md @@ -0,0 +1,81 @@ +--- +title: "ローカライズ化の確認 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "国際対応アプリケーション、ローカライズ可能性" + - "アプリケーション開発 [.NET Framework]、ローカライズ" + - "ローカライズ可能性 [.NET Framework]" + - "国際対応のアプリケーション [.NET Framework]、ローカライズ可能性" + - "グローバリゼーション [.NET Framework]、ローカライズ可能性" + - "カルチャ、ローカライズ可能性" + - "ローカリゼーション [.NET Framework]、ローカライズ可能性" + - "グローバル アプリケーション、ローカライズ可能性" + - "ローカライズ (リソースを)" +ms.assetid: 3aee2fbb-de47-4e37-8fe4-ddebb9719247 +caps.latest.revision: 11 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# ローカライズ化の確認 +ローカライズ対象の確認は、国際対応アプリケーションの開発中間ステップです。 グローバライズ済みアプリケーションがローカライズ可能であるかをチェックし、ユーザー インターフェイスのコードや特別な処理を必要とする要素を特定することができます。 この手順では、ローカリゼーション プロセス機能がアプリケーションに問題がないことを確認できます。 ローカライズ対象の確認によって発生させるすべての問題が扱われたら、アプリケーションはローカライズ可能です。 ローカライズ対象の確認が終わったら、ローカリゼーション プロセス中にソース・コードを変更する必要がありません。 + + ローカライズ対象の確認は、3 種類のチェックで構成されます。T: + +- [グローバリゼーションの手法が実装されます。](#global) + +- [カルチャに依存したな機能が正しく処理されます。](#culture) + +- [International Data でアプリケーションをテストしているか。](#test) + + +## グローバリゼーションの推奨事項を実装する + 対象のローカリゼーションを使用してアプリケーションを実行すると、[グローバリゼーション](../../../docs/standard/globalization-localization/globalization.md) のトピックで説明されている推奨事項に設計および開発するローカライズ対象の確認は主に、品質保証のパスです。 それ以外の場合、この段階で [グローバリゼーション](../../../docs/standard/globalization-localization/globalization.md)"を確認し、実装するようにローカリゼーションを防ぐソース・コード内のエラーを修正します。 + + +## カルチャに依存した機能を処理する + .NET Framework は、カルチャによって大きく異なる複数の領域をプログラムではサポートされません。 ほとんどの場合、次のようなハンドル機能領域にカスタム コードを記述する必要があります: + +- アドレス。 + +- 電話番号。 + +- 用紙サイズ。 + +- 長さ、Weight、区分、ボリューム、温度に使用する測定単位。 .NET Framework が測定単位の変換のための組み込みサポートを提供しませんが、次の例に示すように、特定の国または地域のメトリック表記を使用するかどうかを判断するために のプロパティを使用できます。 + + [!code-csharp[Conceptual.Localizability#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.localizability/cs/ismetric1.cs#1)] + [!code-vb[Conceptual.Localizability#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.localizability/vb/ismetric1.vb#1)] + + +## アプリケーションをテストする + アプリケーションをローカライズする前に、オペレーティング システムの各国語バージョンの各種言語のデータを使用して、アプリケーションをテストする必要があります。 ユーザー インターフェイスのほとんどはこの時点でローカライズされないが、次のような問題を検出する: + +- オペレーティング システムのバージョンで正しく逆シリアル化せず、シリアル化されたデータ。 + +- 現在のカルチャの規則を反映する数値データ。 たとえば、数が正しい桁区切り記号、小数点記号、または通貨記号と表示される場合があります。 + +- 現在のカルチャの規則を反映する日付と時刻のデータ。 たとえば、月を表し、日が誤った順序で使用できる数値日付の区切り記号は正しくない場合があります。また、タイム ゾーン情報が正しくない場合があります。 + +- アプリケーションの既定のカルチャを指定しなかったため検出できないリソース。 + +- 特定のカルチャの異なる順序で表示される文字列。 + +- 同等の文字列比較または比較はに予想外の結果が生じます。 + + アプリケーション、処理されたカルチャに依存したな機能を適切に開発する場合、テストの実行中に発生したローカリゼーション問題で識別され、対処してグローバリゼーションの推奨事項に従っている場合、次の手順 [ローカリゼーション](../../../docs/standard/globalization-localization/localization.md)、に進むことができます。 + +## 参照 + [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) + [ローカリゼーション](../../../docs/standard/globalization-localization/localization.md) + [グローバリゼーション](../../../docs/standard/globalization-localization/globalization.md) + [デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md) \ No newline at end of file diff --git a/docs/standard/globalization-localization/localization.md b/docs/standard/globalization-localization/localization.md new file mode 100644 index 00000000000..40a284c40e4 --- /dev/null +++ b/docs/standard/globalization-localization/localization.md @@ -0,0 +1,43 @@ +--- +title: "ローカリゼーション | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アプリケーション開発 [.NET Framework], ローカリゼーション" + - "コード ブロック" + - "カルチャ, ローカリゼーション" + - "グローバル アプリケーション, ローカリゼーション" + - "グローバリゼーション [.NET Framework], ローカリゼーション" + - "国際対応のアプリケーション [.NET Framework], ローカリゼーション" + - "ローカリゼーション [.NET Framework], ローカリゼーションの概要" + - "ローカライズ (リソースを)" + - "ユーザー インターフェイス ブロック" + - "国際対応アプリケーション, ローカリゼーション" +ms.assetid: 49d520d7-92d7-44ee-bb24-8b615db1d41b +caps.latest.revision: 8 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 8 +--- +# ローカリゼーション +ローカリゼーションとは、アプリケーションのリソースを、アプリケーションでサポートする各カルチャのローカライズ バージョンへ翻訳する作業です。 [ローカライズ化の確認](../../../docs/standard/globalization-localization/localizability-review.md) ステップで、グローバライズ済みアプリケーションがローカライズ可能であることを確認してから、ローカリゼーションを開始してください。 + + ローカライズ可能なアプリケーションは、すべてのユーザー インターフェイス要素が格納されているブロックと、実行可能コードが格納されているブロックに分かれています。 ユーザー インターフェイス ブロックには、ニュートラル カルチャのローカライズ可能ユーザー インターフェイス要素 \(文字列、エラー メッセージ、ダイアログ ボックス、メニュー、埋め込みオブジェクト リソースなど\) だけが格納されています。 コード ブロックには、サポートされるすべてのカルチャで使用されるアプリケーション コードだけが格納されています。 共通言語ランタイムでサポートされているサテライト アセンブリ リソース モデルでは、アプリケーションの実行可能コードとリソースが分離されます。 このモデルの実装方法の詳細については、「[デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md)」を参照してください。 + + アプリケーションのローカライズ バージョンごとに、サテライト アセンブリを追加します。このアセンブリには、対象カルチャの適切な言語に翻訳されたローカライズ済みユーザー インターフェイス ブロックが格納されます。 コード ブロックは、すべてのカルチャで同一です。 ユーザー インターフェイス ブロックのローカライズ バージョンとコード ブロックの組み合わせにより、アプリケーションのローカライズ バージョンが実現します。 + + [!INCLUDE[winsdklong](../../../includes/winsdklong-md.md)] に収録されている Windows フォーム リソース エディター \(Winres.exe\) を使用すると、Windows フォームを対象カルチャに合わせて簡単にローカライズできます。 このツールの使用方法については、「[Winres.exe \(Windows フォーム リソース エディター\)](../../../docs/framework/tools/winres-exe-windows-forms-resource-editor.md)」を参照してください。 + +## 参照 + [グローバライズとローカライズ](../../../docs/standard/globalization-localization/index.md) + [ローカライズ化の確認](../../../docs/standard/globalization-localization/localizability-review.md) + [グローバリゼーション](../../../docs/standard/globalization-localization/globalization.md) + [デスクトップ アプリケーションのリソース](../../../docs/framework/resources/index.md) \ No newline at end of file diff --git a/docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md b/docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md new file mode 100644 index 00000000000..21c381985e9 --- /dev/null +++ b/docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md @@ -0,0 +1,78 @@ +--- +title: "カルチャを認識しない大文字と小文字の変更の実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "String.ToLower メソッド" + - "カルチャ、大文字と小文字の区別" + - "Char.ToLower メソッド" + - "大文字と小文字、変更 (カルチャを認識しない文字列での)" + - "Char.ToUpper メソッド" + - "カルチャを認識しない文字列操作、大文字と小文字の変更" + - "String.ToUpper メソッド" + - "culture パラメーター" +ms.assetid: 822d551c-c69a-4191-82f4-183d82c9179c +caps.latest.revision: 18 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 18 +--- +# カルチャを認識しない大文字と小文字の変更の実行 + の各メソッドには、パラメーターを受け取らないオーバーロードが用意されています。 既定では、パラメーターを使用しないこれらのオーバーロードは、 の値に基づいて大文字と小文字の変更を実行します。 このため、大文字と小文字を区別する結果がカルチャによって異なる場合があります。 大文字と小文字の変更がカルチャに依存するかどうかを明確にするには、`culture` パラメーターを明示的に指定する必要があるこれらのメソッドのオーバーロードを使用する必要があります。 大文字と小文字の変更がカルチャに依存する場合は、`culture` パラメーターとして `CultureInfo.CurrentCulture` を指定します。 大文字と小文字の変更がカルチャに依存しない場合は、`culture` パラメーターとして `CultureInfo.InvariantCulture` を指定します。 + + 後で検索しやすいように文字列の大文字と小文字を変換する場合があります。 文字列をこのように使用する場合は、`culture` パラメーターとして `CultureInfo.InvariantCulture` を指定する必要があります。 の値が、大文字と小文字を変更してから検索が実行されるまでの間に変更される可能性があるからです。 + + セキュリティに関する決定が文字列の大文字と小文字の変更操作に基づいて行われる場合は、この操作がカルチャに依存しないようにして、操作の結果が `CultureInfo.CurrentCulture` の値により影響されないようにする必要があります。 カルチャに依存した文字列操作によって矛盾した結果がどのように生成されるかを示す例については、[文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md) の記事の「現在のカルチャを使用する文字列比較」の記事を参照してください。 + +## String.ToUpper メソッドと String.ToLower メソッドの使用 + コードをわかりやすくするために、`culture` パラメーターを明示的に指定できる `String.ToUpper` メソッドと `String.ToLower` メソッドのオーバーロードを常に使用することをお勧めします。 識別子の検索を実行するコード例を次に示します。 `key.ToLower` 操作は既定ではカルチャを認識しますが、この動作はコードを見ても明確ではありません。 + +### 例 + +```vb +Shared Function LookupKey(key As String) As Object + Return internalHashtable(key.ToLower()) +End Function + +``` + +```csharp +static object LookupKey(string key) +{ + return internalHashtable[key.ToLower()]; +} +``` + + `key.ToLower` 操作がカルチャに依存しないようにする場合は、前の例を次のように変更して、大文字と小文字を変更するときに明示的に `CultureInfo.InvariantCulture` を使用します。 + +```vb +Shared Function LookupKey(key As String) As Object + Return internalHashtable(key.ToLower(CultureInfo.InvariantCulture)) +End Function + +``` + +```csharp +static object LookupKey(string key) +{ + return internalHashtable[key.ToLower(CultureInfo.InvariantCulture)]; +} +``` + +## Char.ToUpper メソッドと Char.ToLower メソッドの使用 + `Char.ToUpper` メソッドおよび `Char.ToLower` メソッドはそれぞれ `String.ToUpper` メソッドおよび `String.ToLower` メソッドと同じ特性を持っていますが、影響を受けるカルチャはトルコ語 \(トルコ\) およびアゼルバイジャン語 \(ラテン、アゼルバイジャン\) だけです。 単一の文字の大文字と小文字の区別が異なるのは、この 2 つのカルチャだけです。 この固有の大文字と小文字の対応の詳細については、 クラスに関するトピックの「Casing \(大文字と小文字の指定\)」を参照してください。 コードをわかりやすくし、結果の一貫性を確保するために、`culture` パラメーターを明示的に指定できるこれらのメソッドのオーバーロードを常に使用することをお勧めします。 + +## 参照 + + + + + [カルチャを認識しない文字列操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md) \ No newline at end of file diff --git a/docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md b/docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md new file mode 100644 index 00000000000..8bfa9c45921 --- /dev/null +++ b/docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md @@ -0,0 +1,47 @@ +--- +title: "カルチャを認識しない文字列比較の実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "culture パラメーター" + - "カルチャを認識しない文字列操作, 比較" + - "文字列比較 [.NET Framework], カルチャを認識しない" + - "String.Compare メソッド" + - "String.CompareTo メソッド" + - "文字列 [.NET Framework], 比較" +ms.assetid: abae50ef-32f7-4a50-a540-fd256fd1aed0 +caps.latest.revision: 23 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 23 +--- +# カルチャを認識しない文字列比較の実行 +既定では、 メソッドはカルチャを認識し、大文字と小文字を区別する比較を実行します。 また、このメソッドには、使用するカルチャを `culture` パラメーターで指定し、使用する比較規則を `comparisonType` パラメーターで指定できる、複数のオーバーロードが含まれています。 既定のオーバーロードの代わりにこれらのメソッドを呼び出すと、特定のメソッド呼び出しで使用する規則に関するあいまいさが解消され、特定の比較がカルチャに依存するかどうかが明確になります。 + +> [!NOTE] +> メソッドの両方のオーバーロードでは、カルチャに依存した比較と大文字と小文字を区別する比較を実行します。このメソッドを使用してカルチャに依存しない比較を実行することはできません。 コードをわかりやすくするために、 メソッドを代わりに使用することをお勧めします。 + + カルチャに依存する操作の場合は、`comparisonType` パラメーターとして 列挙値または 列挙値を指定します。 現在のカルチャ以外の指定されたカルチャを使用して、カルチャに依存した比較を実行する場合は、 パラメーターとして、そのカルチャを表す オブジェクトを指定します。 + + メソッドでサポートされている、カルチャに依存しない文字列比較は、言語的な比較 \(インバリアント カルチャの並べ替え規則に基づきます\) または非言語的な比較 \(文字列内の文字の序数値に基づきます\) です。 カルチャに依存しないほとんどの文字列比較は非言語的な比較です。 このような比較の場合は、`comparisonType` パラメーターとして 列挙値または 列挙値を指定します。 たとえば、セキュリティに関する決定 \(ユーザー名やパスワードの比較など\) が文字列比較の結果に基づいて行われる場合は、この操作をカルチャに依存しない非言語的な比較に指定して、操作の結果が特定のカルチャまたは言語の規則に影響されないようにする必要があります + + 複数のカルチャからの対応する文字列を一貫した方法で言語的に処理する場合は、カルチャに依存しない言語的な文字列比較を使用します。 たとえば、アプリケーションのリスト ボックスに表示する単語の一覧で複数の文字セットが使用されている場合などに、現在のカルチャに関係なく同じ順序で単語を表示することが必要になります。 カルチャに依存しない言語的な比較用に、英語の言語規則に基づくインバリアント カルチャが .NET Framework によって定義されています。 カルチャに依存しない言語的な比較を実行するには、`comparisonType` パラメーターとして または を指定します。 + + 次の例では、カルチャに依存しない 2 つの非言語的な文字列比較を実行します。 最初の例では大文字小文字が区別されますが、2 番目の例では区別されません。 + + [!code-csharp[Conceptual.Strings.CultureInsensitiveComparison#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.strings.cultureinsensitivecomparison/cs/cultureinsensitive1.cs#1)] + [!code-vb[Conceptual.Strings.CultureInsensitiveComparison#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.strings.cultureinsensitivecomparison/vb/cultureinsensitive1.vb#1)] + +## 参照 + + + [カルチャを認識しない文字列操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md) + [文字列を使用するためのベスト プラクティス](../../../docs/standard/base-types/best-practices-strings.md) \ No newline at end of file diff --git a/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-arrays.md b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-arrays.md new file mode 100644 index 00000000000..9d61e455f9a --- /dev/null +++ b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-arrays.md @@ -0,0 +1,32 @@ +--- +title: "カルチャを認識しない配列の操作の実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "配列 [.NET Framework], カルチャを認識しない文字列操作" + - "comparer パラメーター" + - "カルチャを認識しない文字列操作, 配列で" +ms.assetid: f12922e1-6234-4165-8896-63f0653ab478 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 13 +--- +# カルチャを認識しない配列の操作の実行 + メソッドおよび メソッドのオーバーロードは、既定では プロパティを使用してカルチャを認識する並べ替えを実行します。 これらのメソッドによって返されるカルチャを認識する結果は、並べ替えの順序が異なるため、カルチャごとに異なる可能性があります。 カルチャに依存する動作が行われないようにするには、`comparer` パラメーターを受け付けるこのメソッドのオーバーロードを使用します。 `comparer` パラメーターは、配列内の要素を比較するときに使用する の実装を指定します。 このパラメーターには、 を使用するカスタム インバリアント比較子クラスを指定します。 カスタム インバリアント比較子クラスの例については、「[カルチャを認識しないコレクションの操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md)」の「SortedList クラスの使用」を参照してください。 + + **メモ** 比較メソッドに **CultureInfo.InvariantCulture** を渡すと、カルチャに依存しない比較が実行されます。 ただし、この場合、ファイル パス、レジストリ キー、環境変数などに関する非言語的な比較は行われません。 また、比較結果に基づくセキュリティの決定もサポートされません。 非言語的な比較を行う場合、または結果に基づくセキュリティの決定をサポートする場合は、 値を受け取る比較メソッドを使用し、 を渡す必要があります。 + +## 参照 + + + + [カルチャを認識しない文字列操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md) \ No newline at end of file diff --git a/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md new file mode 100644 index 00000000000..37926cb3b1e --- /dev/null +++ b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md @@ -0,0 +1,149 @@ +--- +title: "カルチャを認識しないコレクションの操作の実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ArrayList.Sort メソッド" + - "CaseInsensitiveComparer クラス, 使用" + - "CaseInsensitiveHashCodeProvider クラス, 使用" + - "コレクション [.NET Framework], カルチャを認識しない文字列操作" + - "CollectionsUtil.CreateCaseInsensitiveHashtable メソッド" + - "culture パラメーター" + - "カルチャを認識しない文字列操作, コレクション" + - "SortedList クラス, カルチャを認識しない文字列操作" +ms.assetid: 5cdc9396-a64b-4615-a1cd-b605db4c5983 +caps.latest.revision: 12 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# カルチャを認識しないコレクションの操作の実行 + 名前空間には、既定の動作でカルチャに依存するクラスとメンバーがあります。 クラスと クラスの既定のコンストラクターは、 プロパティを使用して新しいインスタンスを初期化します。 [CollectionsUtil.CreateCaseInsensitiveHashTable](frlrfSystemCollectionsSpecializedCollectionsUtilClassCreateCaseInsensitiveHashtableTopic) メソッドのすべてのオーバーロードは、既定で `Thread.CurrentCulture` プロパティを使用して クラスの新しいインスタンスを作成します。 メソッドのオーバーロードは、既定で `Thread.CurrentCulture` を使用してカルチャに依存した並べ替えを実行します。 文字列をキーとして使用する場合、 の並べ替えと検索は `Thread.CurrentCulture` の影響を受けることがあります。 `Collections` 名前空間のこれらのクラスおよびメソッドからカルチャに依存しない結果を取得するには、後で説明する使用に関する推奨事項に従ってください。 + + **メモ** 比較メソッドに を渡すと、カルチャに依存しない比較が実行されます。 ただし、この場合、ファイル パス、レジストリ キー、環境変数などに関する非言語的な比較は行われません。 また、比較結果に基づくセキュリティの決定もサポートされません。 非言語的な比較を行う場合、または結果に基づくセキュリティの決定をサポートする場合は、 値を受け取る比較メソッドを使用し、 を渡す必要があります。 + +## CaseInsensitiveComparer クラスと CaseInsensitiveHashCodeProvider クラスの使用 + `CaseInsensitiveHashCodeProvider` と `CaseInsensitiveComparer` の既定のコンストラクターは、`Thread.CurrentCulture` を使用してクラスの新しいインスタンスを初期化するため、その動作はカルチャに依存します。 次のコード例に示す `Hashtable` のコンストラクターは、`CaseInsensitiveHashCodeProvider` と `CaseInsensitiveComparer` の既定のコンストラクターを使用しているため、カルチャに依存します。 + +```vb +internalHashtable = New Hashtable(CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default) + +``` + +```csharp +internalHashtable = new Hashtable(CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default); +``` + + `CaseInsensitiveComparer` クラスと `CaseInsensitiveHashCodeProvider` クラスを使用してカルチャに依存しない `Hashtable` を作成するには、`culture` パラメーターを受け取るコンストラクターを使用してこれらのクラスの新しいインスタンスを初期化します。 `culture` パラメーターには、 を指定します。 カルチャに依存しない `Hashtable` のコンストラクターを次のコード例に示します。 + +```vb +internalHashtable = New Hashtable(New + CaseInsensitiveHashCodeProvider(CultureInfo.InvariantCulture), + New CaseInsensitiveComparer(CultureInfo.InvariantCulture)) + +``` + +```csharp +internalHashtable = new Hashtable(new CaseInsensitiveHashCodeProvider + (CultureInfo.InvariantCulture), + new CaseInsensitiveComparer(CultureInfo.InvariantCulture)); +``` + +## CollectionsUtil.CreateCaseInsensitiveHashTable メソッドの使用 + `CollectionsUtil.CreateCaseInsensitiveHashTable` メソッドは、文字列の大文字と小文字の区別を無視する `Hashtable` クラスの新しいインスタンスを作成するための便利なショートカットです。 ただし、`CollectionsUtil.CreateCaseInsensitiveHashTable` メソッドのオーバーロードはすべて `Thread.CurrentCulture` プロパティを使用するため、カルチャに依存します。 このメソッドを使用して、カルチャに依存しない `Hashtable` を作成することはできません。 カルチャに依存しない `Hashtable` を作成するには、`culture` パラメーターを受け取る `Hashtable` のコンストラクターを使用します。 `culture` パラメーターには、`CultureInfo.InvariantCulture` を指定します。 カルチャに依存しない `Hashtable` のコンストラクターを次のコード例に示します。 + +```vb +internalHashtable = New Hashtable(New + CaseInsensitiveHashCodeProvider(CultureInfo.InvariantCulture), + New CaseInsensitiveComparer(CultureInfo.InvariantCulture)) + +``` + +```csharp +internalHashtable = new Hashtable(new CaseInsensitiveHashCodeProvider + (CultureInfo.InvariantCulture), + new CaseInsensitiveComparer(CultureInfo.InvariantCulture)); +``` + + +## SortedList クラスの使用 + `SortedList` は、キーで並べ替えられ、キーやインデックスでアクセスできるキーと値の組み合わせのコレクションを表します。 文字列がキーである `SortedList` を使用すると、並べ替えおよび検索が `Thread.CurrentCulture` プロパティの影響を受ける可能性があります。 `SortedList` の動作がカルチャに依存しないようにするには、`comparer` パラメーターを受け取るコンストラクターを使用して `SortedList` を作成します。 `comparer` パラメーターは、キーを比較するときに使用する の実装を指定します。 このパラメーターには、`CultureInfo.InvariantCulture` を使用してキーを比較するカスタム比較子クラスを指定します。 `SortedList` コンストラクターの `comparer` パラメーターとして指定できる、カルチャに依存しないカスタム比較子クラスの例を次に示します。 + +```vb +Imports System +Imports System.Collections +Imports System.Globalization + +Friend Class InvariantComparer + Implements IComparer + Private m_compareInfo As CompareInfo + Friend Shared [Default] As New InvariantComparer() + + Friend Sub New() + m_compareInfo = CultureInfo.InvariantCulture.CompareInfo + End Sub + + Public Function Compare(a As Object, b As Object) As Integer _ + Implements IComparer.Compare + Dim sa As String = CType(a, String) + Dim sb As String = CType(b, String) + If Not (sa Is Nothing) And Not (sb Is Nothing) Then + Return m_compareInfo.Compare(sa, sb) + Else + Return Comparer.Default.Compare(a, b) + End If + End Function +End Class + +``` + +```csharp +using System; +using System.Collections; +using System.Globalization; + +internal class InvariantComparer : IComparer +{ + private CompareInfo m_compareInfo; + internal static readonly InvariantComparer Default = new + InvariantComparer(); + + internal InvariantComparer() + { + m_compareInfo = CultureInfo.InvariantCulture.CompareInfo; + } + + public int Compare(Object a, Object b) + { + String sa = a as String; + String sb = b as String; + if (sa != null && sb != null) + return m_compareInfo.Compare(sa, sb); + else + return Comparer.Default.Compare(a,b); + } +} +``` + + 一般的に、カスタム インバリアント比較子を指定せずに、文字列に対して `SortedList` を使用した場合は、リストが作成された後に `Thread.CurrentCulture` を変更するとリストが無効になることがあります。 + +## ArrayList.Sort メソッドの使用 + `ArrayList.Sort` メソッドのオーバーロードは、既定で `Thread.CurrentCulture` プロパティを使用してカルチャに依存した並べ替えを実行します。 結果は、並べ替えの順序が異なるため、カルチャごとに異なることがあります。 動作がカルチャに依存しないようにするには、`IComparer` 実装を受け取るこのメソッドのオーバーロードを使用します。 `comparer` パラメーターには、`CultureInfo.InvariantCulture` を使用するカスタム インバリアント比較子クラスを指定します。 カスタム インバリアント比較子クラスの例については、「[SortedList クラスの使用](#cpconperformingculture-insensitivestringoperationsincollectionsanchor1)」を参照してください。 + +## 参照 + + + + + + + [カルチャを認識しない文字列操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md) + [CollectionsUtil.CreateCaseInsensitiveHashTable メソッド](frlrfSystemCollectionsSpecializedCollectionsUtilClassCreateCaseInsensitiveHashtableTopic) \ No newline at end of file diff --git a/docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md new file mode 100644 index 00000000000..0549cfd76fa --- /dev/null +++ b/docs/standard/globalization-localization/performing-culture-insensitive-string-operations.md @@ -0,0 +1,47 @@ +--- +title: "カルチャを認識しない文字列操作の実行 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "大文字小文字マップ" + - "カスタムの大文字小文字マップ" + - "カルチャ、カスタムの並べ替え規則" + - "カスタムの並べ替え規則" + - "カルチャを認識しない文字列の操作、オプション (実行のための)" + - "カルチャ、カスタムの大文字小文字マップ" + - "カルチャを認識しない文字列操作、メソッドのオーバーロード" +ms.assetid: 579ef891-1f83-4c63-9ebd-2f40406b5b91 +caps.latest.revision: 13 +author: "rpetrusha" +ms.author: "ronpet" +manager: "wpickett" +caps.handback.revision: 11 +--- +# カルチャを認識しない文字列操作の実行 +カルチャに依存した文字列操作が既定の動作になっているほとんどの .NET Framework メソッドには、 パラメーターを渡すことによってカルチャを明示的に指定できるオーバーロード メソッドが用意されています。 これらのオーバーロードによって、大文字小文字のマップおよび並べ替え規則のカルチャによる違いを排除し、カルチャに依存しない結果を確保できます。 + + ここでは、既定ではカルチャを認識する .NET Framework のメソッドを使用して、カルチャを認識しない文字列操作を実行する方法を説明します。 + +## このセクションの内容 + [カルチャを認識しない文字列比較の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-comparisons.md) + メソッドおよび メソッドを使用してカルチャに依存しない文字列比較を実行する方法について説明します。 + + [カルチャを認識しない大文字と小文字の変更の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-case-changes.md) + の各メソッドを使用してカルチャに依存しない大文字と小文字の変換を実行する方法について説明します。 + + [カルチャを認識しないコレクションの操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-collections.md) + [CaseInsensitiveComparer クラス](frlrfSystemCollectionsCaseInsensitiveComparerClassTopic)、 クラス、[SortedList クラス](frlrfSystemCollectionsSortedListClassTopic)、[ArrayList.Sort メソッド](https://msdn.microsoft.com/en-us/library/system.collections.arraylist.sort.aspx)、および [CollectionsUtil.CreateCaseInsensitiveHashtable メソッド](frlrfSystemCollectionsSpecializedCollectionsUtilClassCreateCaseInsensitiveHashtableTopic)を使用して、コレクションでカルチャに依存しない操作を実行する方法について説明します。 + + [カルチャを認識しない配列の操作の実行](../../../docs/standard/globalization-localization/performing-culture-insensitive-string-operations-in-arrays.md) + メソッドおよび メソッドを使用してカルチャに依存しない配列の操作を実行する方法について説明します。 + +## 関連項目 + [カルチャを認識しない文字列操作](../../../docs/standard/globalization-localization/culture-insensitive-string-operations.md) + 文字列操作を実行する際にカルチャに注意する理由について説明し、カルチャを認識する操作を実行するときとカルチャを認識しない操作を実行するときのガイドラインを示します。 \ No newline at end of file diff --git a/docs/standard/io/TOC.md b/docs/standard/io/TOC.md new file mode 100644 index 00000000000..62434761469 --- /dev/null +++ b/docs/standard/io/TOC.md @@ -0,0 +1,29 @@ +# [方法 : 分離ストレージでストアを取得する](how-to-obtain-stores-for-isolated-storage.md) +# [方法 : 分離ストレージ内でファイルの読み取りと書き込みを行う](how-to-read-and-write-to-files-in-isolated-storage.md) +# [方法 : ファイルからテキストを読み取る](how-to-read-text-from-a-file.md) +# [方法 : 分離ストレージ内でファイルおよびディレクトリを検索する](how-to-find-existing-files-and-directories-in-isolated-storage.md) +# [方法 : ファイルを圧縮して抽出する](how-to-compress-and-extract-files.md) +# [方法: ローカルのプロセス間通信で匿名パイプを使用する](how-to-use-anonymous-pipes-for-local-interprocess-communication.md) +# [方法: 分離ストレージの領域不足状態に備える](how-to-anticipate-out-of-space-conditions-with-isolated-storage.md) +# [方法 : 新しく作成されたデータ ファイルに対して読み書きする](how-to-read-and-write-to-a-newly-created-data-file.md) +# [非同期ファイル I/O](非同期ファイル-i-o.md) +# [ストリームの構成](composing-streams.md) +# [共通 I/O タスク](commons-tasks.md) +# [分離ストレージ](isolated-storage.md) +# [メモリ マップト ファイル](memory-mapped-files.md) +# [方法 : 分離ストレージでファイルおよびディレクトリを削除する](how-to-delete-files-and-directories-in-isolated-storage.md) +# [方法: ディレクトリとファイルを列挙する](how-to-enumerate-directories-and-files.md) +# [パイプ](pipe-operations.md) +# [方法 : ログ ファイルを開いて情報を追加する](how-to-open-and-append-to-a-log-file.md) +# [方法 : ディレクトリをコピーする](how-to-copy-directories.md) +# [方法 : アクセス制御リスト エントリを追加または削除する](how-to-add-or-remove-access-control-list-entries.md) +# [ファイルおよびストリーム入出力](index.md) +# [方法: ネットワークのプロセス間通信で名前付きパイプを使用する](how-to-use-named-pipes-for-network-interprocess-communication.md) +# [方法 : 分離ストレージでストアを削除する](how-to-delete-stores-in-isolated-storage.md) +# [方法 : 分離ストレージでファイルおよびディレクトリを作成する](how-to-create-files-and-directories-in-isolated-storage.md) +# [方法 : 文字列から文字を読み取る](how-to-read-characters-from-a-string.md) +# [方法: .NET Framework ストリームと Windows ランタイム ストリームの間で変換を行う](how-to-convert-between-dotnet-streams-and-winrt-streams.md) +# [分離のタイプ](types-of-isolation.md) +# [方法 : 文字列に文字を書き込む](how-to-write-characters-to-a-string.md) +# [方法 : 分離ストレージでストアを列挙する](how-to-enumerate-stores-for-isolated-storage.md) +# [方法 : ファイルにテキストを書き込む](how-to-write-text-to-a-file.md) diff --git a/docs/standard/io/commons-tasks.md b/docs/standard/io/commons-tasks.md new file mode 100644 index 00000000000..4b3f9181291 --- /dev/null +++ b/docs/standard/io/commons-tasks.md @@ -0,0 +1,62 @@ +--- +title: "共通 I/O タスク | Microsoft Docs" +ms.custom: "" +ms.date: "12/15/2016" +ms.prod: ".net-framework-4.6" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-bcl" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "I/O, 一般的なタスク" +ms.assetid: bf00c380-706a-4e38-b829-454a480629fc +caps.latest.revision: 15 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +--- +# 共通 I/O タスク + 名前空間には、読み取り、書き込みなどの各種アクションをファイル、ディレクトリ、およびストリーム上で実行できるようにするいくつかのクラスが用意されています。 詳細については、「[ファイルおよびストリーム入出力](../../../docs/standard/io/index.md)」を参照してください。 + +## 共通ファイル タスク + +|目的|参照項目| +|--------|----------| +|テキスト ファイルの作成| メソッド

メソッド

メソッド

メソッド| +|テキスト ファイルへの書き込み|[方法 : ファイルにテキストを書き込む](../../../docs/standard/io/how-to-write-text-to-a-file.md)

[方法: テキスト ファイルを記述する](../Topic/How%20to:%20Write%20a%20Text%20File%20\(C++-CLI\).md)| +|テキスト ファイルからの読み取り|[方法 : ファイルからテキストを読み取る](../../../docs/standard/io/how-to-read-text-from-a-file.md)| +|ファイルへのテキストの追加|[方法 : ログ ファイルを開いて情報を追加する](../../../docs/standard/io/how-to-open-and-append-to-a-log-file.md)

メソッド

メソッド| +|ファイル名の変更またはファイルの移動| メソッド

メソッド| +|ファイルの削除| メソッド

メソッド| +|ファイルのコピー| メソッド

メソッド| +|ファイルのサイズの取得| プロパティ| +|ファイルの属性の取得| メソッド| +|ファイルの属性の設定| メソッド| +|ファイルが存在するかどうかの確認| メソッド| +|バイナリ ファイルからの読み取り|[方法 : 新しく作成されたデータ ファイルに対して読み書きする](../../../docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md)| +|バイナリ ファイルへの書き込み|[方法 : 新しく作成されたデータ ファイルに対して読み書きする](../../../docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md)| +|ファイル名拡張子の取得| メソッド| +|ファイルの絶対パスの取得| メソッド| +|パスからのファイル名と拡張子の取得| メソッド| +|ファイルの拡張子の変更| メソッド| + +## 共通ディレクトリ タスク + +|目的|参照項目| +|--------|----------| +|My Documents などの特別なフォルダー内のファイルへのアクセス|[方法 : ファイルにテキストを書き込む](../../../docs/standard/io/how-to-write-text-to-a-file.md)| +|ディレクトリの作成| メソッド

プロパティ| +|サブディレクトリの作成| メソッド| +|ディレクトリ名の変更またはディレクトリの移動| メソッド

メソッド| +|ディレクトリのコピー|[方法 : ディレクトリをコピーする](../../../docs/standard/io/how-to-copy-directories.md)| +|ディレクトリの削除| メソッド

メソッド| +|ディレクトリ内のファイルとサブディレクトリの確認|[方法: ディレクトリとファイルを列挙する](../../../docs/standard/io/how-to-enumerate-directories-and-files.md)| +|ディレクトリのサイズの確認| クラス| +|ディレクトリが存在するかどうかの確認| メソッド| + +## 参照 + [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) + [ストリームの構成](../../../docs/standard/io/composing-streams.md) + [非同期ファイル I\/O](../../../docs/standard/io/非同期ファイル-i-o.md) \ No newline at end of file diff --git a/docs/standard/io/composing-streams.md b/docs/standard/io/composing-streams.md new file mode 100644 index 00000000000..5d6c99f19f6 --- /dev/null +++ b/docs/standard/io/composing-streams.md @@ -0,0 +1,49 @@ +--- +title: "ストリームの構成 | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ストリーム、基本ストリーム" + - "I/O [.NET Framework]、構成 (ストリームの)" + - "Stream クラス、構成 (ストリームの)" + - "基本ストリーム" + - "ストリーム、バッキング ストア" +ms.assetid: da761658-a535-4f26-a452-b30df47f73d5 +caps.latest.revision: 10 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 10 +--- +# ストリームの構成 +バッキング ストアとは、ディスクやメモリのようなストレージ メディアのことです。 各種のバッキング ストアのそれぞれが、 クラスの実装として独自のストリームを実装しています。 各ストリーム型は、関連付けられたバッキング ストアからバイトを読み取ったり書き込んだりします。 バッキング ストアに関連付けられたストリームは、基本ストリームと呼ばれます。 基本ストリームには、ストリームをバッキング ストアに関連付けるために必要なパラメーターを持つコンストラクターがあります。 たとえば、 には、プロセス間でファイルを共有する方法を指定するパス パラメーターなどを指定するコンストラクターがあります。 + + クラスは、ストリームを簡単に構成できるようにデザインされています。 基本ストリームは、必要な機能を提供する 1 つ以上のパススルー ストリームに結合できます。 必要な型を簡単に読み取ったり書き込んだりできるように、チェインの末尾にリーダーまたはライターを結合できます。 + + 既存の `MyFile.txt` をバッファリングするために、`MyFile.txt` に対して **FileStream** を作成するコードの例を次に示します。**FileStreams** は、既定でバッファリングされます。次に、**FileStream** から文字を読み取るために を作成します。FileStream は、コンストラクター引数として **StreamReader** に渡されます は、 が文字を検出できなくなるまで文字を読み取ります。 + + [!code-cpp[System.IO.StreamReader#20](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.IO.StreamReader/CPP/source2.cpp#20)] + [!code-csharp[System.IO.StreamReader#20](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.IO.StreamReader/CS/source2.cs#20)] + [!code-vb[System.IO.StreamReader#20](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.IO.StreamReader/VB/source2.vb#20)] + + 既存の `MyFile.txt` をバッファリングするために、`MyFile.txt` に対して **FileStream** を作成するコードの例を次に示します。**FileStreams** は、既定でバッファリングされます。次に、**FileStream** からバイトを読み取るための **BinaryReader** を作成します。FileStream は、コンストラクター引数として **StreamReader** に渡されます は、 がバイトを検出できなくなるまでバイトを読み取ります。 + + [!code-cpp[System.IO.StreamReader#21](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.IO.StreamReader/CPP/source3.cpp#21)] + [!code-csharp[System.IO.StreamReader#21](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.IO.StreamReader/CS/source3.cs#21)] + [!code-vb[System.IO.StreamReader#21](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.IO.StreamReader/VB/source3.vb#21)] + +## 参照 + + + + + + + \ No newline at end of file diff --git a/docs/standard/io/how-to-add-or-remove-access-control-list-entries.md b/docs/standard/io/how-to-add-or-remove-access-control-list-entries.md new file mode 100644 index 00000000000..cf3a6664b37 --- /dev/null +++ b/docs/standard/io/how-to-add-or-remove-access-control-list-entries.md @@ -0,0 +1,50 @@ +--- +title: "方法 : アクセス制御リスト エントリを追加または削除する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "アクセス制御エントリ [.NET Framework]" + - "アクセス制御リスト [.NET Framework]" + - "ACE [.NET Framework]" + - "ACL [.NET Framework]" + - "I/O [.NET Framework], アクセス制御リストのエントリ" +ms.assetid: 53758b39-bd9b-4640-bb04-cad5ed8d0abf +caps.latest.revision: 10 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 10 +--- +# 方法 : アクセス制御リスト エントリを追加または削除する +ファイルでアクセス制御リスト \(ACL\) エントリを追加または削除するには、 または オブジェクトをファイルまたはディレクトリから取得して変更し、元のファイルまたはディレクトリに適用する必要があります。 + +### ファイルで ACL エントリの追加または削除を行うには + +1. メソッドを呼び出して、ファイルの現在の ACL エントリを含む オブジェクトを取得します。 + +2. 手順 1. から返された オブジェクトで ACL エントリの追加または削除を行います。 + +3. オブジェクトを メソッドに渡し、変更を適用します。 + +### ディレクトリで ACL エントリの追加または削除を行うには + +1. メソッドを呼び出して、ディレクトリの現在の ACL エントリを含む オブジェクトを取得します。 + +2. 手順 1. から返された オブジェクトで ACL エントリの追加または削除を行います。 + +3. オブジェクトを メソッドに渡し、変更を適用します。 + +## 使用例 + [!code-cpp[IO.File.GetAccessControl-SetAccessControl#1](../../../samples/snippets/cpp/VS_Snippets_CLR/IO.File.GetAccessControl-SetAccessControl/cpp/sample.cpp#1)] + [!code-csharp[IO.File.GetAccessControl-SetAccessControl#1](../../../samples/snippets/csharp/VS_Snippets_CLR/IO.File.GetAccessControl-SetAccessControl/CS/sample.cs#1)] + [!code-vb[IO.File.GetAccessControl-SetAccessControl#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/IO.File.GetAccessControl-SetAccessControl/VB/sample.vb#1)] + +## コードのコンパイル + この例を実行するには、有効なユーザーまたはグループ アカウントを指定する必要があります。 この例では オブジェクトを使用していますが、、および クラスにも同じ手順が使用されます。 \ No newline at end of file diff --git a/docs/standard/io/how-to-anticipate-out-of-space-conditions-with-isolated-storage.md b/docs/standard/io/how-to-anticipate-out-of-space-conditions-with-isolated-storage.md new file mode 100644 index 00000000000..513ec73d0d5 --- /dev/null +++ b/docs/standard/io/how-to-anticipate-out-of-space-conditions-with-isolated-storage.md @@ -0,0 +1,51 @@ +--- +title: "方法: 分離ストレージの領域不足状態に備える | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ ストア、クォータ" + - "分離ストレージ、クォータ" + - "量 (使用する分離ストレージの)" + - "制限 (使用する分離ストレージに対する)" + - "ストア、クォータ" + - "ストア、領域不足の状態" + - "データ ストレージ (分離ストレージを使用した)、クォータ" + - "格納 (分離ストレージを使用したデータの)、クォータ" + - "領域 (分離ストレージの残りの)" + - "データ ストア、領域不足の状態" + - "格納 (分離ストレージを使用したデータの)、領域不足の状態" + - "クォータ (分離ストレージの)" + - "分離ストレージ、領域不足の状態" + - "データ ストレージ (分離ストレージを使用した)、領域不足の状態" +ms.assetid: e35d4535-3732-421e-b1a3-37412e036145 +caps.latest.revision: 17 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 17 +--- +# 方法: 分離ストレージの領域不足状態に備える +分離ストレージを使用するコードは、分離ストレージ ファイルおよびディレクトリが格納されているデータ コンパートメントの最大サイズを指定する[クォータ](../../../docs/standard/io/isolated-storage.md#quotas)によって制約されます。 クォータは、セキュリティ ポリシーによって定義され、管理者が構成できます。 データを書き込むときに最大許容サイズを超えると 例外がスローされ、操作は失敗します。 これにより、データ ストレージがいっぱいになると、アプリケーションに要求を拒否させる不当なサービス拒否攻撃を防止できます。 + + 指定した書き込みがこのような理由で失敗する可能性があるかどうかを判断できるように、 クラスには、、および の 3 つの読み取り専用プロパティが用意されています。 ストアへの書き込みがストアの最大許容サイズを超過するかどうかを判断するためにこれらのプロパティを使用できます。 分離ストレージは同時にアクセスできることに注意してください。; したがって、残りのストレージの量を計算するときに、も、そのストアに書き込むまでに使用できます。 ただし、使用できるメモリの上限に達するとしているかどうかを確認するには、ストアの最大サイズを使用できます。 + + のプロパティはアセンブリの証拠によって正しく機能します。 したがって、、または のメソッドを使用して作成された オブジェクトにのみこのプロパティを取得する必要があります。 他の方法で作成された オブジェクト \(たとえば、 のメソッドから返されるオブジェクト\) 正確な最大サイズを返します。 + +## 例 + 分離されたストアを取得し、いくつかのファイルを作成して、 プロパティを取得するコード例を次に示します。 残りの容量は、バイト数で報告されます。 + + [!code-cpp[Conceptual.IsolatedStorage#8](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source7.cpp#8)] + [!code-csharp[Conceptual.IsolatedStorage#8](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source7.cs#8)] + [!code-vb[Conceptual.IsolatedStorage#8](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source7.vb#8)] + +## 参照 + + [分離ストレージ](../../../docs/standard/io/isolated-storage.md) + [方法 : 分離ストレージでストアを取得する](../../../docs/standard/io/how-to-obtain-stores-for-isolated-storage.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-compress-and-extract-files.md b/docs/standard/io/how-to-compress-and-extract-files.md new file mode 100644 index 00000000000..9f9eb26b002 --- /dev/null +++ b/docs/standard/io/how-to-compress-and-extract-files.md @@ -0,0 +1,68 @@ +--- +title: "方法 : ファイルを圧縮して抽出する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "I/O [.NET Framework]、圧縮" + - "圧縮" + - "圧縮 (ファイルを)" +ms.assetid: e9876165-3c60-4c84-a272-513e47acf579 +caps.latest.revision: 19 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 19 +--- +# 方法 : ファイルを圧縮して抽出する + の名前空間は、ファイル、およびストリームを圧縮および圧縮解除するための型が含まれています。 、圧縮ファイルの内容を読み取って変更するには、これらの型を使用する: + +- + +- + +- + +- + +- + + 次の例では、圧縮ファイルとする関数の中に作業するときに実行されます。 + +## 使用例 + この例で クラスを使用して .zip ファイル名拡張子を持つ圧縮ファイルを作成および取得する方法を示します。 次に新しいフォルダーが完成した新しい抽出 .zip ファイルに含まれ、フォルダーの内容を圧縮します。 クラスを使用するには、プロジェクトで `System.IO.Compression.FileSystem` アセンブリを参照する必要があります。 + + [!code-csharp[System.IO.Compression.ZipFile#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.zipfile/cs/program1.cs#1)] + [!code-vb[System.IO.Compression.ZipFile#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.zipfile/vb/program1.vb#1)] + +## 使用例 + 次の例は、既存の .zip ファイルの内容を反復処理し .txt の拡張子を持つファイルを取得する方法を示します。 これは クラスおよび圧縮ファイルのエントリをチェックする既存の .zip ファイルにアクセスするために クラスを使用します。 これは オブジェクトに拡張メソッド \(\) を使用します。 拡張メソッドは クラスで使用できます。 クラスを使用するには、プロジェクトで `System.IO.Compression.FileSystem` アセンブリを参照する必要があります。 + + [!code-csharp[System.IO.Compression.ZipArchive#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.ziparchive/cs/program1.cs#1)] + [!code-vb[System.IO.Compression.ZipArchive#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.ziparchive/vb/program1.vb#1)] + +## 使用例 + 次の例は、既存の .zip ファイルにアクセスするために クラスを使用して、圧縮ファイルに新しいファイルを追加します。 新しいファイルは既存の .zip ファイルに追加するときに圧縮される取得します。 + + [!code-csharp[System.IO.Compression.ZipArchiveMode#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.ziparchivemode/cs/program1.cs#1)] + [!code-vb[System.IO.Compression.ZipArchiveMode#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.ziparchivemode/vb/program1.vb#1)] + +## 使用例 + データを圧縮および圧縮解除するために クラスを使用できます。 これらは同じ圧縮アルゴリズムを使用します。 .gz の拡張子を持つファイルに書き込まれた の圧縮オブジェクトは によって提供されるメソッドに加え、の標準ツールを使用して圧縮解除することができます。 次の例では、 クラスを使用して、ファイルのディレクトリを圧縮および圧縮解除する方法を示します。 + + [!code-csharp[IO.Compression.GZip1#1](../../../samples/snippets/csharp/VS_Snippets_CLR/IO.Compression.GZip1/CS/gziptest.cs#1)] + [!code-vb[IO.Compression.GZip1#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/IO.Compression.GZip1/VB/gziptest.vb#1)] + +## 参照 + + + + + + [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md b/docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md new file mode 100644 index 00000000000..42862e06f81 --- /dev/null +++ b/docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md @@ -0,0 +1,86 @@ +--- +title: "方法: .NET Framework ストリームと Windows ランタイム ストリームの間で変換を行う | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +ms.assetid: 23a763ea-8348-4244-9f8c-a4280b870b47 +caps.latest.revision: 15 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法: .NET Framework ストリームと Windows ランタイム ストリームの間で変換を行う +Windows ストア アプリ用 .NET Framework は、完全な .NET Framework のサブセットです。 Windows ストア アプリのセキュリティおよびその他の要件のために、ファイルを開いたり読み取ったりするために使用する .NET Framework API の完全なセットを使用できません。 詳細については、[「Windows ストア アプリ用 .NET の概要」](http://msdn.microsoft.com/library/windows/apps/br230302.aspx)を参照してください。 ただし、他のストリームの処理操作のために .NET Framework API を使用することもできます。 これらのストリームを操作するには、 などの .NET Framework ストリーム型と、[IInputStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.iinputstream.aspx)、[IOutputStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.ioutputstream.aspx)、[IRandomAccessStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.irandomaccessstream.aspx) などの Windows ランタイム ストリームの間で変換が必要になる場合があります。 + + クラスには、これらの変換を簡単にするメソッドが含まれています。 ただし、.NET Framework と Windows ランタイムのストリームには、これらのメソッドの使用結果に影響する、根本的な違いがあります。 詳細については、以下のセクションで説明します。 + + +## Windows ランタイム ストリームから .NET Framework ストリームへの変換 + 次の メソッドのうちの 1 つを使用して、Windows ランタイム ストリームから .NET Framework ストリームに変換できます。 + + + Windows ランタイムのランダムアクセス ストリームを、Windows ストア アプリ用 .NET のサブセットのマネージ ストリームに変換します。 + + + Windows ランタイムの出力ストリームを、Windows ストア アプリ用 .NET のサブセットのマネージ ストリームに変換します。 + + + Windows ランタイムの入力ストリームを、Windows ストア アプリ用 .NET のサブセットのマネージ ストリームに変換します。 + + Windows ランタイムには、読み取り専用、書き込み専用、または読み取りと書き込みをサポートするストリーム型があり、これらの機能は Windows ランタイム ストリームを .NET Framework ストリームに変換した場合にも維持されます。 さらに、Windows ランタイム ストリームを .NET Framework ストリームに変換してから元に戻すと、元の Windows ランタイム インスタンスに戻ります。 変換する Windows ランタイム ストリームの機能と一致する変換メソッドを使用することをお勧めします。 ただし、[IRandomAccessStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.irandomaccessstream.aspx) は読み取りも書き込みも可能なので \([IOutputStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.ioutputstream.aspx) と [IInputStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.iinputstream.aspx) の両方を実装しているので\)、どの変換メソッドを使用しても元のストリームの機能を保持できます。 たとえば、 を使用して [IRandomAccessStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.irandomaccessstream.aspx) を変換すると、変換された .NET Framework ストリームは読み取りだけに制限されず、書き込みも可能になります。 + +#### Windows ランタイム ランダムアクセス ストリームから .NET Framework ストリームに変換するには + +- メソッドを使用します。 + + ユーザーにファイルを選択するように要求し、Windows ランタイム API で開いて、.NET Framework のストリームに変換し、読み取ってテキスト ブロックへ出力する方法を次のコード例に示します。 このシナリオでは、通常、結果を出力する前に .NET Framework API でストリームを処理します。 + + この例を実行するには、`TextBlock1` という名前のテキスト ブロックと `Button1` という名前のボタンを含む Windows ストア XAML アプリを作成する必要があります。 ボタン クリック イベントは、例に示す `button1_Click` メソッドに関連付けられている必要があります。 + + [!code-csharp[System.IO.WindowsRuntimeStreamExtensionsEx#Imports](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.windowsruntimestreamextensionsex/cs/mainpage.xaml.cs#imports)] + [!code-vb[System.IO.WindowsRuntimeStreamExtensionsEx#Imports](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.windowsruntimestreamextensionsex/vb/mainpage.xaml.vb#imports)] + [!code-csharp[System.IO.WindowsRuntimeStreamExtensionsEx#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.windowsruntimestreamextensionsex/cs/mainpage.xaml.cs#1)] + [!code-vb[System.IO.WindowsRuntimeStreamExtensionsEx#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.windowsruntimestreamextensionsex/vb/mainpage.xaml.vb#1)] + + +## .NET Framework ストリームから Windows ランタイム ストリームへの変換 + 次の メソッドのうちの 1 つを使用して、.NET Framework ストリームから Windows ランタイム ストリームに変換できます。 + + + Windows ストア アプリ用 .NET のサブセットのマネージ ストリームを Windows ランタイムの入力ストリームに変換します。 + + + Windows ストア アプリ用 .NET のサブセットのマネージ ストリームを、Windows ランタイムの出力ストリームに変換します。 + + [AsRandomAccessStream](../../../docs/standard/cross-platform/windowsruntimestreamextensions-asrandomaccessstream-method.md) + Windows ストア アプリ用 .NET のサブセットのマネージ ストリームを Windows ランタイムでの読み取りまたは書き込みに使用できるランダムアクセス ストリームに変換します。 + + .NET Framework ストリームを Windows ランタイム ストリームに変換する場合、変換されたストリームの機能は元のストリームによって異なります。 たとえば、元のストリームが読み取りと書き込みの両方をサポートしている場合、 を呼び出してストリームを変換すると、返される型は `IRandomAccessStream` になります。この型は `IInputStream` と `IOutputStream` を実装し、読み取りと書き込みをサポートします。 + + .NET Framework ストリームは、変換後も複製をサポートしません。 つまり、.NET Framework ストリームを Windows Runtime ストリームに変換し、[CloneStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.randomaccessstreamoverstream.clonestream.aspx) を呼び出す [GetInputStreamAt](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.inmemoryrandomaccessstream.getinputstreamat.aspx) または [GetOutputStreamAt](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.irandomaccessstream.getoutputstreamat.aspx) を呼び出すか、[CloneStream](http://msdn.microsoft.com/library/windows/apps/windows.storage.streams.randomaccessstreamoverstream.clonestream.aspx) を直接呼び出すと、例外が発生します。 + +#### .NET Framework ストリームから Windows ランタイム ランダムアクセス ストリームに変換するには + +- 次の例に示すように、[AsRandomAccessStream](../../../docs/standard/cross-platform/windowsruntimestreamextensions-asrandomaccessstream-method.md) メソッドを使用します。 + + > [!IMPORTANT] + > 使用している .NET Framework ストリームがシークをサポートすること、またはそれを実行するストリームにコピーすることを確認します。 この確認には、 プロパティを使用できます。 + + この例を実行するには、.NET Framework 4.5.1 を対象とし、`TextBlock2` という名前のテキスト ブロックと `Button2` という名前のボタンを含む、Windows ストア XAML アプリを作成する必要があります。 ボタン クリック イベントはこの例に示す `button2_Click` メソッドに関連付けられている必要があります。 + + [!code-csharp[System.IO.WindowsRuntimeStreamExtensionsEx#Imports](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.windowsruntimestreamextensionsex/cs/mainpage.xaml.cs#imports)] + [!code-vb[System.IO.WindowsRuntimeStreamExtensionsEx#Imports](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.windowsruntimestreamextensionsex/vb/mainpage.xaml.vb#imports)] + [!code-csharp[System.IO.WindowsRuntimeStreamExtensionsEx#2](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.windowsruntimestreamextensionsex/cs/mainpage.xaml.cs#2)] + [!code-vb[System.IO.WindowsRuntimeStreamExtensionsEx#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.windowsruntimestreamextensionsex/vb/mainpage.xaml.vb#2)] + +## 参照 + [クイック スタート: ファイルの読み取りと書き込み \(Windows\)](http://msdn.microsoft.com/library/windows/apps/hh464978.aspx) + [Windows ストア アプリ用 .NET の概要](http://msdn.microsoft.com/library/windows/apps/br230302.aspx) + [Windows ストア アプリ用 .NET – サポートされている API](http://msdn.microsoft.com/library/windows/apps/br230232.aspx) \ No newline at end of file diff --git a/docs/standard/io/how-to-copy-directories.md b/docs/standard/io/how-to-copy-directories.md new file mode 100644 index 00000000000..bb7e2946097 --- /dev/null +++ b/docs/standard/io/how-to-copy-directories.md @@ -0,0 +1,40 @@ +--- +title: "方法 : ディレクトリをコピーする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "コピー (ディレクトリを)" + - "ディレクトリ [.NET Framework], コピー" + - "ディレクトリのコピー" + - "I/O [.NET Framework], コピー (ディレクトリを)" + - "サブディレクトリのコピー" +ms.assetid: 5a969765-e5f8-4b4e-977e-90e2b0a1fe3c +caps.latest.revision: 11 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 11 +--- +# 方法 : ディレクトリをコピーする +この例では、I\/O クラスを使用して、別の場所にディレクトリの内容を同期的にコピーする方法について説明します。 ユーザーは、サブディレクトリもコピーするかどうかを指定できます。 サブディレクトリをコピーする場合、この例で使用するメソッドは、コピーするディレクトリがなくなるまで、各サブディレクトリ上で自身を呼び出し、再帰的にコピーを行います。 + + ファイルを非同期的にコピーする例については、「[非同期ファイル I\/O](../../../docs/standard/io/非同期ファイル-i-o.md)」を参照してください。 + +## 使用例 + [!code-csharp[System.IO.Directory_Copy#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.IO.Directory_Copy/cs/program.cs#1)] + [!code-vb[System.IO.Directory_Copy#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.IO.Directory_Copy/vb/Program.vb#1)] + +## 参照 + + + + [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) + [共通 I\/O タスク](../../../docs/standard/io/commons-tasks.md) + [非同期ファイル I\/O](../../../docs/standard/io/非同期ファイル-i-o.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-create-files-and-directories-in-isolated-storage.md b/docs/standard/io/how-to-create-files-and-directories-in-isolated-storage.md new file mode 100644 index 00000000000..dcdb3f7faa8 --- /dev/null +++ b/docs/standard/io/how-to-create-files-and-directories-in-isolated-storage.md @@ -0,0 +1,45 @@ +--- +title: "方法 : 分離ストレージでファイルおよびディレクトリを作成する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ディレクトリ [.NET Framework]、分離ストレージ" + - "ファイル [.NET Framework]、分離ストレージ" + - "分離ストレージ、作成 (ファイルとディレクトリを)" + - "データ ストア、作成 (ファイルとディレクトリを)" + - "データ ストレージ (分離ストレージを使用した)、作成 (ファイルとディレクトリを)" + - "ストア、作成 (ファイルとディレクトリを)" + - "格納 (分離ストレージを使用したデータの)、作成 (ファイルとディレクトリを)" +ms.assetid: 2ca4d2a4-809b-4f00-bc08-bf4a64d3a5c3 +caps.latest.revision: 12 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : 分離ストレージでファイルおよびディレクトリを作成する +分離ストアを取得した後で、データを格納するためのディレクトリおよびファイルを作成できます。 ストア内では、ファイル名およびディレクトリ名が、仮想ファイル システムのルートからのパスを使用して指定されています。 + + ディレクトリを作成するには、 のインスタンス メソッドを使用します。 存在しないディレクトリのサブディレクトリを指定すると、ディレクトリとサブディレクトリの両方が作成されます。 既存のディレクトリを指定すると、ディレクトリを作成せずにメソッドは、例外はスローされません。 ただし、無効な文字が含まれているディレクトリ名を指定した場合、 例外がスローされます。 + + ファイルを作成するには、 のメソッドを使用します。 + + Windows オペレーティング システムでは、分離ストレージ ファイル名やディレクトリ名は大文字と小文字を区別しないです。 つまり、`ThisFile.txt`という名前のファイルを作成し、1 個のファイルのみが作成されると、`THISFILE.TXT`という名前のファイルを作成します。 表示目的では、ファイル名の元の大文字\/小文字が維持されます。 + +## 例 + 分離ストア内にファイルおよびディレクトリを作成する方法を次のコード例で示します。 + + [!code-csharp[Conceptual.IsolatedStorage#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source.cs#1)] + [!code-vb[Conceptual.IsolatedStorage#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source.vb#1)] + +## 参照 + + + [分離ストレージ](../../../docs/standard/io/isolated-storage.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-delete-files-and-directories-in-isolated-storage.md b/docs/standard/io/how-to-delete-files-and-directories-in-isolated-storage.md new file mode 100644 index 00000000000..2d52e9ddf68 --- /dev/null +++ b/docs/standard/io/how-to-delete-files-and-directories-in-isolated-storage.md @@ -0,0 +1,45 @@ +--- +title: "方法 : 分離ストレージでファイルおよびディレクトリを削除する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ ストレージ (分離ストレージを使用した)、削除 (ファイルとディレクトリを)" + - "ディレクトリ [.NET Framework]、分離ストレージ" + - "ファイル [.NET Framework]、分離ストレージ" + - "分離ストレージ、削除 (ファイルとディレクトリを)" + - "データ ストア、削除 (ファイルとディレクトリを)" + - "ストア、作成 (ファイルとディレクトリを)" + - "削除 (分離ストレージ ファイル内のファイルを)" + - "格納 (分離ストレージを使用したデータの)、削除 (ファイルとディレクトリを)" + - "削除 (分離ストレージ ファイル内のディレクトリを)" +ms.assetid: 8fcc0dea-435b-4d40-ba4d-ba056265c202 +caps.latest.revision: 12 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : 分離ストレージでファイルおよびディレクトリを削除する +分離ストレージ ファイル内のディレクトリやファイルを削除できます。 ストア内では、ファイル名やディレクトリ名は、オペレーティング システムの依存で、仮想ファイル システムのルートに関連するように指定します。 そのため、Windows オペレーティング システムでは大文字と小文字が区別されません。 + + クラスには、ディレクトリやファイルを削除するための 2 種類のメソッドを指定する: 例外は、存在しないファイルやディレクトリを削除しようとするとスローされます。 名前にワイルドカード文字を含める場合は、 の例外と をスロー の例外をスローします。 + + のメソッドはディレクトリにファイルまたはサブディレクトリが含まれている場合は失敗します。 既存のファイルおよびディレクトリを取得するために のメソッドを使用できます。 ストアの仮想ファイル システムの検索の詳細については、「[方法 : 分離ストレージ内でファイルおよびディレクトリを検索する](../../../docs/standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md)」を参照してください。 + +## 例 + ディレクトリとファイルをいくつか作成し、その後で削除するコード例を次に示します。 + + [!code-cpp[Conceptual.IsolatedStorage#4](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source4.cpp#4)] + [!code-csharp[Conceptual.IsolatedStorage#4](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source4.cs#4)] + [!code-vb[Conceptual.IsolatedStorage#4](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source4.vb#4)] + +## 参照 + + [分離ストレージ](../../../docs/standard/io/isolated-storage.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-delete-stores-in-isolated-storage.md b/docs/standard/io/how-to-delete-stores-in-isolated-storage.md new file mode 100644 index 00000000000..e6903ba3c79 --- /dev/null +++ b/docs/standard/io/how-to-delete-stores-in-isolated-storage.md @@ -0,0 +1,43 @@ +--- +title: "方法 : 分離ストレージでストアを削除する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ストア、削除" + - "データ ストア、削除" + - "削除 (ストアを)" + - "削除 (ストアを)" + - "分離ストレージ、削除 (ストアを)" + - "格納 (分離ストレージを使用したデータの)、削除 (ストアを)" + - "データ ストレージ (分離ストレージを使用した)、削除 (ストアを)" +ms.assetid: 3947e333-5af6-4601-b2f1-24d4d6129cf3 +caps.latest.revision: 14 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 14 +--- +# 方法 : 分離ストレージでストアを削除する +分離ストレージ ファイルを削除するため、 クラスは 2 つのメソッドを提供します。 + +- インスタンス メソッド は引数を使わず、そのインスタンス メソッドを呼び出すストアを削除します。 この操作にアクセス許可は必要ありません。 ストアにアクセスできるすべてのコードは、その内部の一部のデータやすべてのデータを削除できます。 + +- 静的メソッド 列挙値を使い、コードを実行するユーザーのすべてのストアを削除します。 この操作を実行するには、 の値に対する アクセス許可が必要です。 + +## 例 + 静的 メソッドとインスタンス メソッドの使い方を次のコード例に示します。 クラスは、次の 2 つのストアを取得します。1 つは、ユーザーとアセンブリで使うように分離して、もう 1 つは、ユーザー、ドメイン、アセンブリで使うように分離します。 次に、分離ストレージ ファイル `isoStore1` の メソッドを呼び出すことにより、ユーザー、ドメイン、アセンブリのストアが削除されます。 その後、静的メソッド を呼び出すことによって、ユーザーの残りのストアすべてを削除します。 + + [!code-cpp[Conceptual.IsolatedStorage#3](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source3.cpp#3)] + [!code-csharp[Conceptual.IsolatedStorage#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source3.cs#3)] + [!code-vb[Conceptual.IsolatedStorage#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source3.vb#3)] + +## 参照 + + [分離ストレージ](../../../docs/standard/io/isolated-storage.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-enumerate-directories-and-files.md b/docs/standard/io/how-to-enumerate-directories-and-files.md new file mode 100644 index 00000000000..c1f5ed049cc --- /dev/null +++ b/docs/standard/io/how-to-enumerate-directories-and-files.md @@ -0,0 +1,70 @@ +--- +title: "方法: ディレクトリとファイルを列挙する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "I/O [.NET Framework]、列挙 (ディレクトリとファイルを)" +ms.assetid: 86b69a08-3bfa-4e5f-b4e1-3b7cb8478215 +caps.latest.revision: 18 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 18 +--- +# 方法: ディレクトリとファイルを列挙する +名前の一連の列挙可能なコレクションを返すメソッドを使用して、ディレクトリとファイルを列挙できます。 また、、または の各オブジェクトの列挙可能なコレクションを返すメソッドも使用できます。 列挙可能なコレクションには、ディレクトリや大量のファイルを使用すると、配列よりもパフォーマンスが優れています。 + + これらのメソッドから取得した列挙可能なコレクションを使用して、 クラスなどのコレクション クラスのコンストラクターの パラメーターを指定することもできます。 + + ディレクトリまたはファイルの名前のみを取得するには、 クラスの列挙メソッドを使用します。 ディレクトリまたはファイルのその他のプロパティを取得するには、 クラスおよび クラスを使用します。 + + 列挙可能なコレクションを返すメソッドの説明を次の表に示します。 + +|列挙する対象|返される列挙可能なコレクション|使用するメソッド| +|------------|---------------------|--------------| +|ディレクトリ|ディレクトリ名|| +||ディレクトリ情報 \(\)|| +|ファイル|ファイル名|| +||ファイル情報 \(\)|| +|ファイル システム情報|ファイル システム エントリ|| +||ファイル システム情報 \(\)|| + + の列挙体に用意されている の検索オプションを使用して、親ディレクトリのサブディレクトリ内のすべてのファイルを列挙できますが、承認されていないアクセスの例外 \(\) は列挙体が不完全になる可能性があります。 このような例外が発生する可能性がある場合は、まずディレクトリを列挙してからファイルを列挙することで、例外をキャッチして続行できます。 + +### ディレクトリ名を列挙するには + +- メソッドを使用して、指定したパスに存在する最上位ディレクトリ名のリストを取得します。 + + [!code-csharp[System.IO.EnumDirs1#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.enumdirs1/cs/program.cs#1)] + [!code-vb[System.IO.EnumDirs1#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.enumdirs1/vb/program.vb#1)] + +### ディレクトリとそのサブディレクトリ内のファイル名を列挙するには + +- ディレクトリと \(必要に応じて\) サブディレクトリを検索し、指定された検索パターンと一致するファイル名の一覧を取得するに のメソッドを使用します。 + + [!code-csharp[System.IO.Directory.EnumerateFiles#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.directory.enumeratefiles/cs/program.cs#1)] + [!code-vb[System.IO.Directory.EnumerateFiles#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.directory.enumeratefiles/vb/program.vb#1)] + +### DirectoryInfo オブジェクトのコレクションを列挙するには + +- メソッドを使用して、最上位ディレクトリのコレクションを取得します。 + + [!code-csharp[System.IO.DirectoryInfo.EnumDirs#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.directoryinfo.enumdirs/cs/program.cs#1)] + [!code-vb[System.IO.DirectoryInfo.EnumDirs#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.directoryinfo.enumdirs/vb/module1.vb#1)] + +### すべてのディレクトリ内の FileInfo オブジェクトのコレクションを列挙するには + +- メソッドを使用して、すべてのディレクトリ内の指定した検索パターンに一致するファイルのコレクションを取得します。 この例では、まず最上位ディレクトリを列挙して発生の可能性がある承認されていないアクセスの例外をキャッチし、次にファイルを列挙します。 + + [!code-csharp[System.IO.DirectoryInfo.EnumerateDirectories#1](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.io.directoryinfo.enumeratedirectories/cs/program.cs#1)] + [!code-vb[System.IO.DirectoryInfo.EnumerateDirectories#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.directoryinfo.enumeratedirectories/vb/program.vb#1)] + +## 参照 + [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-enumerate-stores-for-isolated-storage.md b/docs/standard/io/how-to-enumerate-stores-for-isolated-storage.md new file mode 100644 index 00000000000..f2c73984b31 --- /dev/null +++ b/docs/standard/io/how-to-enumerate-stores-for-isolated-storage.md @@ -0,0 +1,37 @@ +--- +title: "方法 : 分離ストレージでストアを列挙する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "列挙 (ストアを)" + - "データ ストレージ (分離ストレージを使用した)、列挙 (ストアを)" + - "格納 (分離ストレージを使用したデータの)、列挙 (ストアを)" + - "ストア、列挙" + - "分離ストレージ、列挙 (ストアを)" + - "データ ストア、列挙" +ms.assetid: 0fcf279a-f241-48f0-8034-2e3d331f1fcb +caps.latest.revision: 13 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法 : 分離ストレージでストアを列挙する + の静的メソッドを使用して、現在のユーザーのすべての分離ストアを列挙できます。 このメソッドは 値を受け取り、 列挙子を返します。 ストアを列挙するには、 値を指定する のアクセス許可が必要です。 値の のメソッドを呼び出すと、現在のユーザーに対して定義されている オブジェクトの配列を返します。 + +## 例 + 次のコード例は、ユーザーおよびアセンブリ別に分離されたストアを作成し、いくつかのファイルを、 のメソッドを使用して取得しますそれらのファイルを取得します。 + + [!code-csharp[Conceptual.IsolatedStorage#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source2.cs#2)] + [!code-vb[Conceptual.IsolatedStorage#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source2.vb#2)] + +## 参照 + + [分離ストレージ](../../../docs/standard/io/isolated-storage.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md b/docs/standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md new file mode 100644 index 00000000000..6c87bca8748 --- /dev/null +++ b/docs/standard/io/how-to-find-existing-files-and-directories-in-isolated-storage.md @@ -0,0 +1,45 @@ +--- +title: "方法 : 分離ストレージ内でファイルおよびディレクトリを検索する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ストア、検索 (ファイルとディレクトリを)" + - "検索 (分離ストレージ ファイル内のファイルを)" + - "ディレクトリ [.NET Framework]、分離ストレージ" + - "分離ストレージ、検索 (ファイルとディレクトリを)" + - "データ ストレージ (分離ストレージを使用した)、検索 (ファイルとディレクトリを)" + - "ファイル [.NET Framework]、分離ストレージ" + - "データ ストア、検索 (ファイルとディレクトリを)" + - "検索 (分離ストレージ ファイル内のディレクトリを)" + - "格納 (分離ストレージを使用したデータの)、検索 (ファイルとディレクトリを)" +ms.assetid: eb28458a-6161-4e7a-9ada-30ef93761b5c +caps.latest.revision: 12 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 12 +--- +# 方法 : 分離ストレージ内でファイルおよびディレクトリを検索する +分離ストレージのディレクトリを検索するには、 のメソッドを使用します。 このメソッドは検索パターンを表す文字列を取得します。 検索パターンで単一文字を表すワイルドカード文字 \(複数の文字をアスタリスク \(\*\) ワイルドカード文字を両方使用してワイルドカード文字は名前の最後の部分で使用する必要があります。 たとえば、`directory1/*ect*` は有効な検索文字列ですが、`*ect*/directory2` は無効です。 + + ファイルを検索するには、 のメソッドを使用します。 に適用される検索文字列がワイルドカード文字の制限は に適用されます。 + + これらのメソッドのいずれも再帰的ではありません; クラスには、ストア内のすべてのディレクトリまたはファイルを指定するためのメソッドは用意されていません。 ただし、再帰的なメソッドは次のコード例に示します。 + +## 例 + 分離ストア内にファイルおよびディレクトリを作成する方法を次のコード例で示します。 最初に、ユーザーの分離されたストア、ドメインおよびアセンブリに `isoStore` の変数が取得され、表示されます。 のメソッドを使用して複数の異なるディレクトリを設定するために使用されます のコンストラクターはこれらのディレクトリにあるファイルを作成します。 次に、`GetAllDirectories` メソッドの結果全体を検索します。 このメソッドは、現在のディレクトリ内のすべてのディレクトリ名は、 を使用します。 これらの名前は配列に格納され、その `GetAllDirectories` は自分自身を呼び出し、見つかった各ディレクトリに渡します。 その結果、すべてのディレクトリ名は配列で返されます。 次に、`GetAllFiles` メソッドを呼び出します。 このすべてのディレクトリの名前を検索メソッドの呼び出し `GetAllDirectories`、そのファイルが のメソッドを使用して各ディレクトリを確認します。 結果は、表示のために配列で返されます。 + + [!code-cpp[Conceptual.IsolatedStorage#9](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source8.cpp#9)] + [!code-csharp[Conceptual.IsolatedStorage#9](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source8.cs#9)] + [!code-vb[Conceptual.IsolatedStorage#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source8.vb#9)] + +## 参照 + + [分離ストレージ](../../../docs/standard/io/isolated-storage.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-obtain-stores-for-isolated-storage.md b/docs/standard/io/how-to-obtain-stores-for-isolated-storage.md new file mode 100644 index 00000000000..2640c285b62 --- /dev/null +++ b/docs/standard/io/how-to-obtain-stores-for-isolated-storage.md @@ -0,0 +1,64 @@ +--- +title: "方法 : 分離ストレージでストアを取得する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ストア、取得" + - "格納 (分離ストレージを使用したデータの)、取得 (ストアを)" + - "分離ストレージ、取得 (ストアを)" + - "データ ストア、取得" + - "データ ストレージ (分離ストレージを使用した)、取得 (ストアを)" +ms.assetid: fcb6b178-d526-47c4-b029-e946f880f9db +caps.latest.revision: 19 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 19 +--- +# 方法 : 分離ストレージでストアを取得する +分離ストアは、データ コンパートメント内の仮想ファイル システムを公開します。 クラスは分離ストアと対話するためのメソッドを提供します。 ストアの作成および取得するために、 は 3 個の静的メソッドを提供し、T: + +- は、ユーザーおよびアセンブリ別に分離されたストレージが返されます。 + +- 、ドメイン、およびアセンブリ別に分離されたストレージが返されます。 + + メソッドは両方とも、呼び出しコードに属するストアを取得します。 + +- 静的メソッド は、スコープ パラメーターの組み合わせを渡すことによって指定される分離ストアを返します。 + + 次のコードは、ユーザー、ドメイン、およびアセンブリ別に分離されたストアを返します。 + + [!code-cpp[Conceptual.IsolatedStorage#6](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source6.cpp#6)] + [!code-csharp[Conceptual.IsolatedStorage#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source6.cs#6)] + [!code-vb[Conceptual.IsolatedStorage#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source6.vb#6)] + + ローミング ストアは、ローミング ユーザー プロファイルを行う必要があることを指定するために のメソッドを使用できます。 このプロパティを設定する方法の詳細については [分離のタイプ](../../../docs/standard/io/types-of-isolation.md)を参照してください。 + + 既定では、異なるアセンブリから取得される分離ストアは、異なるストアです。 のメソッドのパラメーターのアセンブリまたはドメインの証拠を渡すことにより、異なるアセンブリまたはドメインのストアにアクセスできます。 別のアセンブリまたはドメインのストアにアクセスするには、アプリケーション ドメイン ID 別の分離ストレージにアクセスするためのアクセス許可が必要です。 詳細については、 メソッド オーバーロードを参照します。 + + のメソッドは オブジェクトを返します。 場面に応じてどの分離タイプを使用するのが適切かを判断するには、「[分離のタイプ](../../../docs/standard/io/types-of-isolation.md)」を参照してください。 分離ストレージ ファイル オブジェクトがある場合は、分離ストレージのメソッドを使用して、ファイルやディレクトリの読み取り、書き込み、作成、および削除を行うことができます。 + + コードはコードにストアを取得するための十分なアクセス権がない オブジェクトを渡すことを防ぐ機構はありません。 ドメインおよびアセンブリの ID や分離ストレージのアクセス許可の確認は、 オブジェクトへの参照が取得されたとき、つまり、通常は メソッド、 メソッド、または メソッドでしか実行されません。 したがって、 オブジェクトへの参照の保護は、その参照を使用するコードで行う必要があります。 + +## 例 + 次のコードは、ユーザーおよびアセンブリ別に分離されたストアを取得するクラスの簡単な例を示します。 コードは のメソッドに渡す引数に に追加することによって、ユーザー、ドメイン、およびアセンブリ別に分離されたストアを取得するように変更できます。 + + コードを実行すると、ストアは、コマンド ラインに" **StoreAdm \/LIST** の入力によって作成されたことを確認できます。 これは [分離ストレージ ツール \(Storeadm.exe\)](../../../docs/framework/tools/storeadm-exe-isolated-storage-tool.md) を実行し、ユーザーの現在の分離ストアが一覧表示されます。 + + [!code-cpp[Conceptual.IsolatedStorage#7](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.isolatedstorage/cpp/source6.cpp#7)] + [!code-csharp[Conceptual.IsolatedStorage#7](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source6.cs#7)] + [!code-vb[Conceptual.IsolatedStorage#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source6.vb#7)] + +## 参照 + + + [分離ストレージ](../../../docs/standard/io/isolated-storage.md) + [分離のタイプ](../../../docs/standard/io/types-of-isolation.md) + [共通言語ランタイムのアセンブリ](../../../docs/framework/app-domains/assemblies-in-the-common-language-runtime.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-open-and-append-to-a-log-file.md b/docs/standard/io/how-to-open-and-append-to-a-log-file.md new file mode 100644 index 00000000000..6db3c740ced --- /dev/null +++ b/docs/standard/io/how-to-open-and-append-to-a-log-file.md @@ -0,0 +1,46 @@ +--- +title: "方法 : ログ ファイルを開いて情報を追加する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "ログ ファイル、開く" + - "ストリーム、オープンと追加 (ログ ファイルの)" + - "ログ ファイル、追加" + - "I/O [.NET Framework]、ログ ファイル" +ms.assetid: 74423362-1721-49cb-aa0a-e04005f72a06 +caps.latest.revision: 15 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法 : ログ ファイルを開いて情報を追加する + は、文字をストリームに書き込んだり、文字をストリームから読み取ったりします。 入力用として `log.txt` ファイルを開くか、ファイルが存在しない場合は作成し、ファイルの末尾に情報を追加するコードの例を次に示します。 その後で、ファイルの内容を表示するために標準出力に書き込みます。 この例に代わる方法として、情報を 1 つの文字列または文字列配列として格納できます。また、 または メソッドを使用して同じ機能を実行することもできます。 + +> [!NOTE] +> Visual Basic では、ログ ファイルの作成、またはログ ファイルへの書き込みを行う場合に、 クラスまたは クラスに用意されているメソッドとプロパティを使用することもできます。 + +## 使用例 + [!code-csharp[Conceptual.BasicIO.TextFiles#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.basicio.textfiles/cs/source2.cs#2)] + [!code-vb[Conceptual.BasicIO.TextFiles#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.basicio.textfiles/vb/source2.vb#2)] + +## 参照 + + + + + + [方法: ディレクトリとファイルを列挙する](../../../docs/standard/io/how-to-enumerate-directories-and-files.md) + [方法 : 新しく作成されたデータ ファイルに対して読み書きする](../../../docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md) + [方法 : ファイルからテキストを読み取る](../../../docs/standard/io/how-to-read-text-from-a-file.md) + [方法 : ファイルにテキストを書き込む](../../../docs/standard/io/how-to-write-text-to-a-file.md) + [方法 : 文字列から文字を読み取る](../../../docs/standard/io/how-to-read-characters-from-a-string.md) + [方法 : 文字列に文字を書き込む](../../../docs/standard/io/how-to-write-characters-to-a-string.md) + [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md b/docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md new file mode 100644 index 00000000000..8c45ea7d592 --- /dev/null +++ b/docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md @@ -0,0 +1,48 @@ +--- +title: "方法 : 新しく作成されたデータ ファイルに対して読み書きする | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "BinaryReader クラス, 例" + - "BinaryWriter クラス, 例" + - "I/O [.NET Framework], 読み取り (データを)" + - "I/O [.NET Framework], 書き込み (データの)" + - "ストリーム, 読み取りと書き込み (データの)" +ms.assetid: e209d949-31e8-44ea-8e38-87f9093f3093 +caps.latest.revision: 16 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 16 +--- +# 方法 : 新しく作成されたデータ ファイルに対して読み書きする + クラスおよび クラスは、文字列ではない形式でデータを書き込んだり読み取ったりするために使用します。 `Test.data` と呼ばれる新しい空のファイル ストリームに対するデータの書き込みと読み取りを実行するコードの例を次に示します。 現在のディレクトリにデータ ファイルを作成した後、そのファイルに関連付けた オブジェクトと オブジェクトを作成し、 オブジェクトを使用して整数 0 ~ 10 を `Test.data` に書き込みます。ファイル ポインターはファイルの末尾に残っています。 オブジェクトはファイル ポインターを起点に戻してから、指定された内容を読み出します。 + +## 使用例 + [!code-cpp[System.IO.BinaryReaderWriter#7](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.IO.BinaryReaderWriter/CPP/source6.cpp#7)] + [!code-csharp[System.IO.BinaryReaderWriter#7](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.IO.BinaryReaderWriter/CS/source6.cs#7)] + [!code-vb[System.IO.BinaryReaderWriter#7](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.IO.BinaryReaderWriter/VB/source6.vb#7)] + +## 信頼性の高いプログラミング + `Test.data` が既に現在のディレクトリに存在する場合は、 例外がスローされます。 ファイル ストリームを初期化するときにファイル モード オプション を使用すると、例外がスローされずに新しいファイルが必ず作成されます。 + +## 参照 + + + + + + [方法: ディレクトリとファイルを列挙する](../../../docs/standard/io/how-to-enumerate-directories-and-files.md) + [方法 : ログ ファイルを開いて情報を追加する](../../../docs/standard/io/how-to-open-and-append-to-a-log-file.md) + [方法 : ファイルからテキストを読み取る](../../../docs/standard/io/how-to-read-text-from-a-file.md) + [方法 : ファイルにテキストを書き込む](../../../docs/standard/io/how-to-write-text-to-a-file.md) + [方法 : 文字列から文字を読み取る](../../../docs/standard/io/how-to-read-characters-from-a-string.md) + [方法 : 文字列に文字を書き込む](../../../docs/standard/io/how-to-write-characters-to-a-string.md) + [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-read-and-write-to-files-in-isolated-storage.md b/docs/standard/io/how-to-read-and-write-to-files-in-isolated-storage.md new file mode 100644 index 00000000000..eb6a47ce289 --- /dev/null +++ b/docs/standard/io/how-to-read-and-write-to-files-in-isolated-storage.md @@ -0,0 +1,46 @@ +--- +title: "方法 : 分離ストレージ内でファイルの読み取りと書き込みを行う | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ ストレージ (分離ストレージを使用した), 読み取りと書き込み (ファイルの)" + - "データ ストア, 読み取りと書き込み (ファイルの)" + - "ファイル, 分離ストレージ" + - "分離ストレージ, 読み取りと書き込み (ファイルの)" + - "読み取り (データを)" + - "読み取り (ストア内のファイルを)" + - "ストア, 読み取りと書き込み (ファイルの)" + - "格納 (分離ストレージを使用したデータの), 読み取りと書き込み (ファイルの)" + - "書き込み (ストア内のファイルへの)" +ms.assetid: f977ebdc-1b55-475a-bc3d-3376470b08ae +caps.latest.revision: 15 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 15 +--- +# 方法 : 分離ストレージ内でファイルの読み取りと書き込みを行う +から読み取ったり、またはファイルに、分離ストアに書き込むには、ストリーム リーダー \( オブジェクト\) またはストリーム ライター \( オブジェクト\) を持つ オブジェクトを使用します。 + +## 例 + 次のコード例は TestStore.txt という名前のストアにファイルがあるかどうかを分離ストアをチェックします。 存在しない場合は、ファイルを作成して「Hello Isolated Storage」と書き込みます。 TestStore.txt が既に存在する場合は、このコード例では、ファイルから読み込みます。 + + [!code-csharp[Conceptual.IsolatedStorage#5](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.isolatedstorage/cs/source5.cs#5)] + [!code-vb[Conceptual.IsolatedStorage#5](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.isolatedstorage/vb/source5.vb#5)] + +## 参照 + + + + + + + [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) + [分離ストレージ](../../../docs/standard/io/isolated-storage.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-read-characters-from-a-string.md b/docs/standard/io/how-to-read-characters-from-a-string.md new file mode 100644 index 00000000000..424bb25cab7 --- /dev/null +++ b/docs/standard/io/how-to-read-characters-from-a-string.md @@ -0,0 +1,51 @@ +--- +title: "方法 : 文字列から文字を読み取る | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "読み取り (文字列から文字を)" + - "データ ストリーム、読み取り (文字列から文字を)" + - "I/O [.NET Framework]、読み取り (文字列から文字を)" + - "読み取り (データを)、文字列" + - "ストリーム、読み取り (文字列から文字を)" +ms.assetid: 27ea5e52-6db8-42d8-980a-50bcfc7fd270 +caps.latest.revision: 13 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 13 +--- +# 方法 : 文字列から文字を読み取る +次のコード例は文字列からの文字の同期的にと非同期的に読み込む方法を説明します。 + +## 使用例 + この例では、文字列から 13 文字を同期的に読み取り、配列に格納し、その文字を表示します。 次に、文字列内の残りの文字を読み取り、6 番目の要素で開始される配列に格納し、その配列の内容を表示します。 + + [!code-cpp[Conceptual.StringReader#1](../../../samples/snippets/cpp/VS_Snippets_CLR/conceptual.stringreader/cpp/source.cpp#1)] + [!code-csharp[Conceptual.StringReader#1](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.stringreader/cs/source.cs#1)] + [!code-vb[Conceptual.StringReader#1](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.stringreader/vb/source.vb#1)] + +## 使用例 + 次の例 のコントロールからのすべての文字を非同期的に読み取り、配列に格納します。 これは のコントロールに改行に続く行に、非同期的に各文字または空白文字を書き込みます。 + + [!code-csharp[Conceptual.StringReader#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.stringreader/cs/source2.cs#2)] + [!code-vb[Conceptual.StringReader#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.stringreader/vb/source2.vb#2)] + +## 参照 + + + [非同期ファイル I\/O](../../../docs/standard/io/非同期ファイル-i-o.md) + [NIB: How to: Create a Directory Listing](http://msdn.microsoft.com/ja-jp/4d2772b1-b991-4532-a8a6-6ef733277e69) + [方法 : 新しく作成されたデータ ファイルに対して読み書きする](../../../docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md) + [方法 : ログ ファイルを開いて情報を追加する](../../../docs/standard/io/how-to-open-and-append-to-a-log-file.md) + [方法 : ファイルからテキストを読み取る](../../../docs/standard/io/how-to-read-text-from-a-file.md) + [方法 : ファイルにテキストを書き込む](../../../docs/standard/io/how-to-write-text-to-a-file.md) + [方法 : 文字列に文字を書き込む](../../../docs/standard/io/how-to-write-characters-to-a-string.md) + [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-read-text-from-a-file.md b/docs/standard/io/how-to-read-text-from-a-file.md new file mode 100644 index 00000000000..bc49a36c1df --- /dev/null +++ b/docs/standard/io/how-to-read-text-from-a-file.md @@ -0,0 +1,55 @@ +--- +title: "方法 : ファイルからテキストを読み取る | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ ストリーム, 読み取り (ファイルからテキストを)" + - "I/O [.NET Framework], 読み取り (ファイルからテキストを)" + - "読み取り (データを), テキスト ファイル" + - "読み取り (テキスト ファイルを)" + - "ストリーム, 読み取り (ファイルからテキストを)" +ms.assetid: ed180baa-dfc6-4c69-a725-46e87edafb27 +caps.latest.revision: 23 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 23 +--- +# 方法 : ファイルからテキストを読み取る +次に、.NET デスクトップ アプリを使用してテキスト ファイルから同期でテキストを読み取る方法と非同期でテキストを読み取る方法の例を示します。 どちらの例でも、 クラスのインスタンスを作成する場合に、ファイルの相対パスまたは絶対パスを指定します。 次の例では、TestFile.txt という名前のファイルがアプリケーションと同じフォルダーにあることを前提とします。 + + Windows ランタイムではファイルに対する読み取りと書き込みに別のストリーム型が用意されているため、これらのコード例は Windows ストア アプリの開発には適用されません。 Windows ストア アプリのコンテキスト内のファイルからテキストを読み取る方法を示す例については、「[クイック スタート: ファイルの読み取りと書き込み](http://msdn.microsoft.com/library/windows/apps/hh758325.aspx)」を参照してください。 .NET Framework ストリームと Windows ランタイム ストリームを変換する方法を示す例は、「[方法: .NET Framework ストリームと Windows ランタイム ストリームの間で変換を行う](../../../docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md)」を参照してください。 + +## 使用例 + 最初の例では、コンソール アプリケーション内での同期読み取り操作を示します。 この例では、ストリーム リーダーを使用してテキスト ファイルを開き、内容を文字列にコピーして、文字列をコンソールに出力します。 + + [!code-csharp[Conceptual.BasicIO.TextFiles#3](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.basicio.textfiles/cs/source3.cs#3)] + [!code-vb[Conceptual.BasicIO.TextFiles#3](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.basicio.textfiles/vb/source3.vb#3)] + +## 使用例 + 2 番目の例では、Windows Presentation Foundation \(WPF\) アプリケーション内での非同期読み取り操作を示します。 + + [!code-csharp[Conceptual.BasicIO.TextFiles#6](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.basicio.textfiles/cs/source6.cs#6)] + [!code-vb[Conceptual.BasicIO.TextFiles#6](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.basicio.textfiles/vb/source6.vb#6)] + +## 参照 + + + + [非同期ファイル I\/O](../../../docs/standard/io/非同期ファイル-i-o.md) + [NIB: How to: Create a Directory Listing](http://msdn.microsoft.com/ja-jp/4d2772b1-b991-4532-a8a6-6ef733277e69) + [クイック スタート: ファイルの読み取りと書き込み](http://msdn.microsoft.com/library/windows/apps/hh758325.aspx) + [方法: .NET Framework ストリームと Windows ランタイム ストリームの間で変換を行う](../../../docs/standard/io/how-to-convert-between-dotnet-streams-and-winrt-streams.md) + [方法 : 新しく作成されたデータ ファイルに対して読み書きする](../../../docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md) + [方法 : ログ ファイルを開いて情報を追加する](../../../docs/standard/io/how-to-open-and-append-to-a-log-file.md) + [方法 : ファイルにテキストを書き込む](../../../docs/standard/io/how-to-write-text-to-a-file.md) + [方法 : 文字列から文字を読み取る](../../../docs/standard/io/how-to-read-characters-from-a-string.md) + [方法 : 文字列に文字を書き込む](../../../docs/standard/io/how-to-write-characters-to-a-string.md) + [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-use-anonymous-pipes-for-local-interprocess-communication.md b/docs/standard/io/how-to-use-anonymous-pipes-for-local-interprocess-communication.md new file mode 100644 index 00000000000..f648d96e988 --- /dev/null +++ b/docs/standard/io/how-to-use-anonymous-pipes-for-local-interprocess-communication.md @@ -0,0 +1,50 @@ +--- +title: "方法: ローカルのプロセス間通信で匿名パイプを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "匿名パイプ [.NET Framework]" + - "ローカル コンピューターでの通信 [.NET Framework], パイプ" + - "一方向の通信 [.NET Framework]" + - "親子間の通信 [.NET Framework]" + - "パイプ [.NET Framework]" +ms.assetid: e7773c77-c646-4a01-8a96-a003d59fc4c9 +caps.latest.revision: 9 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 9 +--- +# 方法: ローカルのプロセス間通信で匿名パイプを使用する +匿名パイプは、ローカル コンピューターでのプロセス間通信を実現します。 名前付きパイプと比較して提供する機能は少なくなりますが、オーバーヘッドも小さくなります。 匿名パイプを使用して、ローカル コンピューター上で容易にプロセス間通信を実行できます。 匿名パイプを使用してネットワーク経由の通信を行うことはできません。 + + 匿名パイプを実装するには、 クラスと クラスを使用します。 + +## 使用例 + 次に、匿名パイプを使用して、親プロセスから子プロセスに文字列を送信する方法の例を示します。 この例では、 値を使用して、親プロセス内に オブジェクトを作成しています。 次に、親プロセスは、クライアント ハンドルを使用して子プロセスを作成し、 オブジェクトを作成します。 子プロセスには、 値が指定されています。 + + 次に、親プロセスはユーザー指定の文字列を子プロセスに送信します。 この文字列は、子プロセスのコンソールに表示されます。 + + サーバー プロセスの例を次に示します。 + + [!code-cpp[System.IO.Pipes.AnonymousPipeServerStream_Sample#01](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.IO.Pipes.AnonymousPipeServerStream_Sample/cpp/program.cpp#01)] + [!code-csharp[System.IO.Pipes.AnonymousPipeServerStream_Sample#01](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.IO.Pipes.AnonymousPipeServerStream_Sample/cs/Program.cs#01)] + [!code-vb[System.IO.Pipes.AnonymousPipeServerStream_Sample#01](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.IO.Pipes.AnonymousPipeServerStream_Sample/vb/program.vb#01)] + +## 使用例 + クライアント プロセスの例を次に示します。 サーバー プロセスはクライアント プロセスを開始し、開始したプロセスをクライアント ハンドルに渡します。 クライアント コードから生成される実行可能ファイルの名前は `pipeClient.exe` とします。サーバー プロセスを実行する前に、このファイルをサーバーの実行可能ファイルと同じディレクトリにコピーします。 + + [!code-cpp[System.IO.Pipes.AnonymousPipeClientStream_Sample#01](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.IO.Pipes.AnonymousPipeClientStream_Sample/cpp/program.cpp#01)] + [!code-csharp[System.IO.Pipes.AnonymousPipeClientStream_Sample#01](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.IO.Pipes.AnonymousPipeClientStream_Sample/cs/Program.cs#01)] + [!code-vb[System.IO.Pipes.AnonymousPipeClientStream_Sample#01](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.IO.Pipes.AnonymousPipeClientStream_Sample/vb/program.vb#01)] + +## 参照 + [パイプ](../../../docs/standard/io/pipe-operations.md) + [方法: ネットワークのプロセス間通信で名前付きパイプを使用する](../../../docs/standard/io/how-to-use-named-pipes-for-network-interprocess-communication.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-use-named-pipes-for-network-interprocess-communication.md b/docs/standard/io/how-to-use-named-pipes-for-network-interprocess-communication.md new file mode 100644 index 00000000000..d0dc9009b3e --- /dev/null +++ b/docs/standard/io/how-to-use-named-pipes-for-network-interprocess-communication.md @@ -0,0 +1,52 @@ +--- +title: "方法: ネットワークのプロセス間通信で名前付きパイプを使用する | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "全二重通信 [.NET Framework], 名前付きパイプ" + - "偽装 [.NET Framework], 名前付きパイプ" + - "メッセージ ベースの通信 [.NET Framework], 名前付きパイプ" + - "複数接続 (名前付きパイプを使用した)" + - "名前付きパイプ [.NET Framework]" + - "ネットワーク通信 [.NET Framework], 名前付きパイプ" + - "パイプ [.NET Framework]" +ms.assetid: 4e4d7e64-9f1b-4026-98f7-20488ac7b42b +caps.latest.revision: 16 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 16 +--- +# 方法: ネットワークのプロセス間通信で名前付きパイプを使用する +名前付きパイプは、パイプ サーバーと 1 つ以上のパイプ クライアントとの間でのプロセス間通信を提供します。 名前付きパイプには、ローカル コンピューター上のプロセス間通信を提供する匿名パイプと比較して、より多くの機能が用意されています。 名前付きパイプは、ネットワーク上の複数のサーバー インスタンスでの全二重通信、メッセージ ベースの通信、およびクライアント偽装をサポートしています。偽装を使用すると、プロセスを接続してリモート サーバー上で独自のアクセス許可セットを使用できます。 + + 名前付きパイプを実装するには、 クラスと クラスを使用します。 + +## 使用例 + クラスを使用して、名前付きパイプを作成する例を次に示します。 この例では、サーバー プロセスは 4 つのスレッドを作成します。 各スレッドは、1 つのクライアント接続を受け入れます。 接続されたクライアント プロセスは、サーバーにファイル名を提供します。 クライアントに十分なアクセス許可がある場合は、サーバー プロセスはファイルを開き、その内容をクライアントに送り返します。 + + [!code-cpp[System.IO.Pipes.NamedPipeServerStream_ImpersonationSample1#01](../../../samples/snippets/cpp/VS_Snippets_CLR_System/system.IO.Pipes.NamedPipeServerStream_ImpersonationSample1/cpp/program.cpp#01)] + [!code-csharp[System.IO.Pipes.NamedPipeServerStream_ImpersonationSample1#01](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.IO.Pipes.NamedPipeServerStream_ImpersonationSample1/cs/Program.cs#01)] + [!code-vb[System.IO.Pipes.NamedPipeServerStream_ImpersonationSample1#01](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.IO.Pipes.NamedPipeServerStream_ImpersonationSample1/vb/program.vb#01)] + +## 使用例 + 次の例は、 クラスを使用するクライアント プロセスを示したものです。 クライアントはサーバー プロセスに接続し、サーバーにファイル名を送信します。 この例では偽装を使用しているため、クライアント アプリケーションを実行している ID はファイルにアクセスする権限を持っている必要があります。 サーバーは、ファイルの内容をクライアントに送り返します。 その後、ファイルの内容がコンソールに表示されます。 + + [!code-csharp[System.IO.Pipes.NamedPipeClientStream_ImpersonationSample1#01](../../../samples/snippets/csharp/VS_Snippets_CLR_System/system.IO.Pipes.NamedPipeClientStream_ImpersonationSample1/cs/Program.cs#01)] + [!code-vb[System.IO.Pipes.NamedPipeClientStream_ImpersonationSample1#01](../../../samples/snippets/visualbasic/VS_Snippets_CLR_System/system.IO.Pipes.NamedPipeClientStream_ImpersonationSample1/vb/program.vb#01)] + +## 信頼性の高いプログラミング + ここで例示したクライアント プロセスとサーバー プロセスは、同じコンピューターで実行することを意図しているため、 オブジェクトには、`"."` というサーバー名が提供されます。 クライアント プロセスとサーバー プロセスを異なるコンピューター上で実行する場合、`"."` はサーバー プロセスを実行するコンピューターのネットワーク名で置換されます。 + +## 参照 + + + [パイプ](../../../docs/standard/io/pipe-operations.md) + [方法: ローカルのプロセス間通信で匿名パイプを使用する](../../../docs/standard/io/how-to-use-anonymous-pipes-for-local-interprocess-communication.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-write-characters-to-a-string.md b/docs/standard/io/how-to-write-characters-to-a-string.md new file mode 100644 index 00000000000..93749559f4a --- /dev/null +++ b/docs/standard/io/how-to-write-characters-to-a-string.md @@ -0,0 +1,50 @@ +--- +title: "方法 : 文字列に文字を書き込む | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "データ ストリーム、書き込み (文字列への文字の)" + - "書き込み (文字列への文字の)" + - "ストリーム、書き込み (文字列への文字の)" + - "I/O [.NET Framework]、書き込み (文字列への文字の)" +ms.assetid: 1222cbeb-0760-44bf-9888-914a2a37174b +caps.latest.revision: 17 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 17 +--- +# 方法 : 文字列に文字を書き込む +次のコード例は文字列に文字配列から文字を同期的にと非同期的に書き込みます。 + +## 使用例 + 次の例では、配列から文字列に 5 文字を同期的に書き込みます。 + + [!code-csharp[Conceptual.StringBuilder#9](../../../samples/snippets/csharp/VS_Snippets_CLR/Conceptual.StringBuilder/cs/example2.cs#9)] + [!code-vb[Conceptual.StringBuilder#9](../../../samples/snippets/visualbasic/VS_Snippets_CLR/Conceptual.StringBuilder/vb/example2.vb#9)] + +## 使用例 + 次の例 のコントロールからのすべての文字を非同期的に読み取り、配列に格納します。 これは のコントロールに改行に続く行に、非同期的に各文字または空白文字を書き込みます。 + + [!code-csharp[Conceptual.StringReader#2](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.stringreader/cs/source2.cs#2)] + [!code-vb[Conceptual.StringReader#2](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.stringreader/vb/source2.vb#2)] + +## 参照 + + + + [ファイルおよびストリーム入出力](../../../docs/standard/io/index.md) + [非同期ファイル I\/O](../../../docs/standard/io/非同期ファイル-i-o.md) + [方法: ディレクトリとファイルを列挙する](../../../docs/standard/io/how-to-enumerate-directories-and-files.md) + [方法 : 新しく作成されたデータ ファイルに対して読み書きする](../../../docs/standard/io/how-to-read-and-write-to-a-newly-created-data-file.md) + [方法 : ログ ファイルを開いて情報を追加する](../../../docs/standard/io/how-to-open-and-append-to-a-log-file.md) + [方法 : ファイルからテキストを読み取る](../../../docs/standard/io/how-to-read-text-from-a-file.md) + [方法 : ファイルにテキストを書き込む](../../../docs/standard/io/how-to-write-text-to-a-file.md) + [方法 : 文字列から文字を読み取る](../../../docs/standard/io/how-to-read-characters-from-a-string.md) \ No newline at end of file diff --git a/docs/standard/io/how-to-write-text-to-a-file.md b/docs/standard/io/how-to-write-text-to-a-file.md new file mode 100644 index 00000000000..b143403521e --- /dev/null +++ b/docs/standard/io/how-to-write-text-to-a-file.md @@ -0,0 +1,94 @@ +--- +title: "方法 : ファイルにテキストを書き込む | Microsoft Docs" +ms.custom: "" +ms.date: "03/30/2017" +ms.prod: ".net" +ms.reviewer: "" +ms.suite: "" +ms.technology: + - "dotnet-standard" +ms.tgt_pltfrm: "" +ms.topic: "article" +helpviewer_keywords: + - "書き込み (テキストをファイルに)" + - "I/O [.NET Framework]、書き込み (テキストをファイルに)" + - "ストリーム、書き込み (テキストをファイルに)" + - "データ ストリーム、書き込み (テキストをファイルに)" +ms.assetid: 060cbe06-2adf-4337-9e7b-961a5c840208 +caps.latest.revision: 29 +author: "mairaw" +ms.author: "mairaw" +manager: "wpickett" +caps.handback.revision: 29 +--- +# 方法 : ファイルにテキストを書き込む +このトピックでは、.NET Framework アプリケーションまたは [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリのファイルにテキストを書き込むためのさまざまな方法について説明します。 テキストをファイルに書き込むには、一般に次のクラスおよびメソッドを使用します。 + +- \- 同期的にファイルに書き込むメソッド \( または \) あるいは非同期的に書き込むメソッド \(\) が含まれています。 + +- – .NET Framework アプリケーションで使用します。 ファイルにテキストを書き込む静的メソッド \(\)、あるいはファイルにテキストを追加する静的メソッド \(、または \) があります。 + +- [FileIO](https://msdn.microsoft.com/library/windows/apps/windows.storage.fileio.aspx) \- [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリで使用します。 ファイルにテキストを書き込む非同期メソッド \([WriteLinesAsync](https://msdn.microsoft.com/library/windows/apps/windows.storage.fileio.writelinesasync.aspx) または [WriteTextAsync](https://msdn.microsoft.com/library/windows/apps/windows.storage.fileio.writetextasync.aspx)\)、あるいはファイルにテキストを追加する非同期メソッド \([AppendLinesAsync](https://msdn.microsoft.com/library/windows/apps/windows.storage.fileio.appendlinesasync.aspx) または [AppendTextAsync](https://msdn.microsoft.com/library/windows/apps/windows.storage.fileio.appendtextasync.aspx)\) が含まれています。 + + 実行するタスクに焦点を合わせるために、サンプルは単純化されています。 このため、サンプルでは最小限のエラー チェックと、\(例外が存在する場合は\) 最小限の例外処理だけを行います。 通常、実際のアプリケーションではこれよりも信頼性の高いエラー チェックと例外処理を行います。 + +## 使用例 + 次の例に、 クラスを使用して、新しいファイルにテキストを一度に 1 行ずつ同期的に書き込む方法を示します。 新しいテキスト ファイルは、ユーザーの \[マイ ドキュメント\] フォルダーに保存されます。`using` ステートメントで オブジェクトが宣言され、インスタンス化されるため、 メソッドが呼び出され、それによってストリームが自動的にフラッシュされて閉じられます。 + + [!code-csharp[Conceptual.BasicIO.TextFiles#WriteLine](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.basicio.textfiles/cs/source.cs#writeline)] + [!code-vb[Conceptual.BasicIO.TextFiles#WriteLine](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.basicio.textfiles/vb/source.vb#writeline)] + +## 使用例 + 次の例に、 クラスを使用して、既存のファイルにテキストを追加する方法を示します。 この例では、前の例と同じテキスト ファイルを使用しています。 + + [!code-csharp[Conceptual.BasicIO.TextFiles#AppendText](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.basicio.textfiles/cs/source.cs#appendtext)] + [!code-vb[Conceptual.BasicIO.TextFiles#AppendText](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.basicio.textfiles/vb/source.vb#appendtext)] + +## 使用例 + 次の例に、 クラスを使用して、新しいファイルにテキストを非同期的に書き込む方法を示します。 メソッドを呼び出すには、このメソッドの呼び出しを `async` メソッドに含める必要があります。 新しいテキスト ファイルは、ユーザーの \[マイ ドキュメント\] フォルダーに保存されます。 + + [!code-csharp[Conceptual.BasicIO.TextFiles#WriteAsync](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.basicio.textfiles/cs/source.cs#writeasync)] + [!code-vb[Conceptual.BasicIO.TextFiles#WriteAsync](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.basicio.textfiles/vb/source.vb#writeasync)] + +## 使用例 + 次の例に、 クラスを使用して、新しいファイルにテキストを書き込み、この同じファイルに新しいテキスト行を追加する方法を示します。 および メソッドは、ファイルを自動的に開き、閉じます。 メソッドに指定したパスが既に存在する場合、ファイルは上書きされます。 + + [!code-csharp[Conceptual.BasicIO.TextFiles#WriteFile](../../../samples/snippets/csharp/VS_Snippets_CLR/conceptual.basicio.textfiles/cs/source.cs#writefile)] + [!code-vb[Conceptual.BasicIO.TextFiles#WriteFile](../../../samples/snippets/visualbasic/VS_Snippets_CLR/conceptual.basicio.textfiles/vb/source.vb#writefile)] + +## 使用例 + 次の例では、ユーザーの入力を [!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリでテキスト ファイルに非同期的に書き込む方法を示します。 セキュリティの考慮事項により、[!INCLUDE[win8_appname_long](../../../includes/win8-appname-long-md.md)] アプリからファイルを開くには、一般に [FileOpenPicker](http://msdn.microsoft.com/library/windows/apps/windows.storage.pickers.fileopenpicker.aspx) コントロールを使用する必要があります。 この例では、テキスト ファイルを表示するため `FileOpenPicker` がフィルター処理されます。 + +```xaml + + + +